From 832eb1a913b8fac026473cec3884fafbed77435c Mon Sep 17 00:00:00 2001 From: gitea-actions Date: Wed, 8 Jul 2026 21:50:06 +0100 Subject: [PATCH 1/5] cleaning up --- assets/scripts/search.js | 2 +- books/books-list.org | 7 - books/clean-code/clean-code-notes.org | 612 -------------------------- build-site.el | 16 - gitea-build-monitor.log | 6 + gitea-build-monitor.ps1 | 2 +- home/guide/setup.org | 19 - lisp/sitemaps.el | 11 - posts/posts-list.org | 2 +- search-index-json.py | 2 +- sitemap.org | 16 +- watcher.sh | 23 - 12 files changed, 11 insertions(+), 707 deletions(-) delete mode 100755 books/books-list.org delete mode 100755 books/clean-code/clean-code-notes.org delete mode 100755 watcher.sh diff --git a/assets/scripts/search.js b/assets/scripts/search.js index 5670bde..138598d 100755 --- a/assets/scripts/search.js +++ b/assets/scripts/search.js @@ -66,7 +66,7 @@ function buildIndex() { async function initSearch() { try { - const response = await fetch("/test.json"); + const response = await fetch("/search-index.json"); const json = await response.json(); extractDocuments(json); diff --git a/books/books-list.org b/books/books-list.org deleted file mode 100755 index feecbe1..0000000 --- a/books/books-list.org +++ /dev/null @@ -1,7 +0,0 @@ -#+TITLE: Books List -#+OPTIONS: toc:nil num:nil - -See the categories: @@html:Categories@@ - -* Book Notes: -- [[file:clean-code/clean-code-notes.org][Clean Code Notes]] @@html:10-08-2025 19:45@@ @@html:@@ @@html:@@ \ No newline at end of file diff --git a/books/clean-code/clean-code-notes.org b/books/clean-code/clean-code-notes.org deleted file mode 100755 index 6b19cf6..0000000 --- a/books/clean-code/clean-code-notes.org +++ /dev/null @@ -1,612 +0,0 @@ -#+TITLE: Clean Code Notes -#+OPTIONS: num:nil tags:t toc:t -#+DATE: <2025-08-10 Sun 19:45> -#+FILETAGS: :books:notes: - -/Author: Robert C. Martin/ - -* Chapter 1: Clean Code - -Referenced Items: -- Implementation Patterns, Kent Beck, Addison-Wesley, 2007. -- Literate Programming, Donald E. Knuth, Center for the Study of Language and Information, Leland Stanford Junior University, 1992. - -Principles mentioned: -Single Responsibility Principle (SRP), the Open Closed Principle (OCP), and the Dependency Inversion Principle (DIP) - -* Chapter 2: Meaningful Names - -** Use intention revealing names: - -Names should reveal intent, there is no revelation in naming an integer ~d~, intending it stands for days. Instead, you should use the following names: -#+begin_src java - int elapsedTimeInDays; - int daysSinceCreation; - int daysSinceModification; - int fileAgeInDays; -#+end_src - -** Avoid disinformation - -Don't postfix the word 'list' to the name 'accounts' unless it's actually a list. This is because the reader will /assume/ the data type of accountsList is indeed a list, instead choose a name like ~accountsGroup~. - -** Make Meaningful Distinctions - -While it is possible to name by being disinformative, it is also possible to name being non informative. Consider: - -#+begin_src java - - public static void copyChars(char a1[], char a2[]) { - for (int i = 0; i < a1.length; i++) { - a2[i] = a1[i]; - } - } - -#+end_src - -What on earth does ~a[1]~ and ~a[2]~ even stand for? We are better off using names like source and destination (due to the function's intent of copying the array). - -Furthermore, noise words are redundant. We should never use the word ~variable~ when naming a variable, or ~table~ when naming a table. -** Use Pronouncable Names - -This is quite straightforward. Do not use a name like ~genymdhms~ to refer to generation date, year, month, day, hour, minute, -and second. Instead use ~generationTimeStamp~. - -** Use Searchable Names - -In modern IDE's, it is still quite difficult to search for single-lettered variables. The writer states a personal preference of using single-letter names only as local variables and inside short methods. The following principle is given: - -/The length of a name should correspond to the size of its scope/ - -** Avoid Encodings - -Don't prefix variables with letters like m_ as was done in the past. Do not type encode as well, an example of this is: ~PhoneNumber phoneString;~ we can see the reader being misled into thinking the phone number is a String. - -** Avoid Mental Mappings - -Clarity is king, don't use a name for a variable that only you know what it stands for. For example: using the letter r as the lower-cased version of the url with the host and scheme -removed. That's being smart, not professional. - -** Class Names - -{{{epigraph_single(Classes and objects should have noun or noun phrase names like Customer\, WikiPage\, -Account\, and AddressParser. Avoid words like Manager\, Processor\, Data\, or Info in the name -of a class. A class name should not be a verb)}}} - -** Method Names - -Methods should have verb or verb phrase names. - -** Don't be cute/Don't use puns - -Do not use names that are only understandable to people whom you share jokes etc with. Furthermore, do not use colloquialism and slang in names. -- Example: ~HandGrenade~ instead of ~DeleteItems~ -- Example: ~whack()~ instead of ~kill()~ - -** Pick one word per concept - -If you have multiple choices for naming a concept, use one and stick with it. For instance if your options are fetch, get and retrieve, use one and stick with it throughout. - -** Solution Domain Names and Problem Domain Names - -Where possible use solution domain names, as the people that are going to be reading the code are programmers. Therefore, do not shy away from using CS terms, algorithm names, math names and so forth. - -However when it is not possible to use solution domain names (in other words, when there is no "programmer-eese" then use the name from the problem domain. The other programmers can ask the domain expert for clarification. If the code is more to do with the problem domain concepts, then the names should be drawn from them. - -** Add Meaningful Context - -Enclose names with well-named classes, functions, or namespaces. When all else fails, then prefix with something that provides more context. - -** Don't add gratuitous context - -Shorter names are better than longer ones, generally. This is so long as the context and intent is clear. Don't add redundant or irrelevant additions to the name in the for the sake of 'context'. - -* Chapter 3: Functions - -** Functions should be small - -Functions should be extremely short—ideally just a few lines, so they remain easy to understand and maintain. - -Avoid deeply nested blocks; keep indentation shallow (1–2 levels), often replacing blocks with descriptive function calls. - -A small function tells a concise, self-contained story, making it easier for readers to follow the program’s intent. - -The smaller the function, the more descriptive and accurate its name can be, improving self-documentation. - -Large functions hide complexity and mix abstraction levels, making errors and duplication more likely. - -** Do One Thing & One Level of Abstraction - -A function should do exactly one conceptual task, and all its statements should exist at the same abstraction level. - -Mixing details (like string concatenation) with high-level actions (like rendering a page) causes confusion. - -The Stepdown Rule: organise functions so they read like a top down narrative, each calling the next abstraction level. - -If you can extract a subfunction with a name that isn’t a restatement, the original function is doing too much. - -Functions that “do one thing” cannot be logically split into sections such as “initialize,” “process,” “finalize.” - -** Switch Statements - -Switch statements naturally violate “do one thing” by handling multiple cases; they also grow in size over time. - -They break the Single Responsibility Principle (multiple reasons to change) and Open-Closed Principle (must change for new cases). - -Preferred approach: hide switch statements inside a factory and dispatch behavior polymorphically through an interface. - -Allow only one visible switch in your system, used solely for object creation, then encapsulate it. - -This removes duplication and keeps high-level code unaware of concrete type distinctions. - -Example: - -#+begin_src java - public abstract class Employee { - public abstract boolean isPayday(); - public abstract Money calculatePay(); - public abstract void deliverPay(Money pay); - } - ----------------- - public interface EmployeeFactory { - public Employee makeEmployee(EmployeeRecord r) throws InvalidEmployeeType; - } - ----------------- - public class EmployeeFactoryImpl implements EmployeeFactory { - public Employee makeEmployee(EmployeeRecord r) throws InvalidEmployeeType { - switch (r.type) { - case COMMISSIONED: - return new CommissionedEmployee(r) ; - case HOURLY: - return new HourlyEmployee(r); - case SALARIED: - return new SalariedEmploye(r); - default: - throw new InvalidEmployeeType(r.type); - } - } - } - -#+end_src - -** Use Descriptive Names - -A function’s name should clearly state its purpose. Long, descriptive names beat short, cryptic ones. - -Consistent naming patterns (shared verbs/nouns) help code read like a coherent story and aid predictability. - -Descriptive names reduce the need for comments and improve comprehension without external documentation. - -Renaming functions can reveal design improvements, so try multiple options until the best emerges. - -IDE refactoring tools make renaming safe, encouraging experimentation. - -** Function Arguments - -{{{epigraph_single(The ideal number of arguments for a function is zero (niladic). Next comes one (monadic)\, followed closely by two (dyadic). Three arguments (triadic) should be avoided where possible. More than three (polyadic) requires very special justification—and then shouldn’t be used anyway.)}}} - -Fewer arguments = better; aim for 0–2, avoid more than 3 unless absolutely necessary. - -Flag arguments (booleans) are a red flag—they imply the function does multiple things. - -Group related parameters into objects (e.g., ~Point~ for ~x~ and ~y~) to reduce argument count and improve clarity. - -Output arguments are confusing—prefer returning values or mutating the owning object’s state. - -Match function/argument names in verb–noun or keyword style (e.g., ~writeField(name)~, ~assertExpectedEqualsActual~). - -** Have No Side Effects - -A function should do only what its name promises. Hidden state changes are misleading and dangerous. - -Side effects create temporal coupling, meaning the function must be called in a certain sequence to be safe. - -If unavoidable, make side effects explicit in the name (e.g., ~checkPasswordAndInitializeSession~). - -Clear separation of command and query functions avoids ambiguity in meaning and intent. - -Functions that modify state and return information often cause confusion and should be split. - -** Error Handling - -Error handling is a single responsibility—separate it from normal logic to keep both paths clear. - -Prefer exceptions over error codes to avoid cluttering the happy path and to reduce dependency magnets. - -Extract try/catch bodies into their own functions for cleaner structure. - -See below: - -#+begin_src java - - public void delete(Page page) { - try { - deletePageAndAllReferences(page); - } - catch (Exception e) { - logError(e); - } - } - - private void deletePageAndAllReferences(Page page) throws Exception { - deletePage(page); - registry.deleteReference(page.name); - configKeys.deleteKey(page.name.makeKey()); - } - private void logError(Exception e) { - logger.log(e.getMessage()); - } - -#+end_src - -Keep functions small enough that occasional multiple return or break statements are acceptable. - -Avoid duplication in error handling, and follow the DRY principle to ensure changes occur in one place. - - -* Chapter 4: Comments - -Comments are a necessary evil—they exist because code fails to express intent clearly. - -Outdated comments are dangerous; they can mislead more than help. - -Strive to write code that explains itself; comments should be minimised. - -Truth is always in the code, not in the comments. - -** Comments Do Not Make Up for Bad Code - -Don’t use comments to excuse messy, unclear code. Clean the code instead. - -Clear, expressive code with few comments > cluttered code with many comments. - -#+begin_src java - - // Check to see if the employee is eligible for full benefits - if ((employee.flags & HOURLY_FLAG) && (employee.age > 65)) - - // Better: - if (employee.isEligibleForFullBenefits()) - -#+end_src - -** Good Comments - -Only write them when unavoidable. Such as in the following instances: - -*** Legal Comments - -Sometimes required for copyright/licensing. - -Keep them short; refer to standard licenses rather than embedding full legal text. - -*** Informative Comments - -Explain return values, formats, or patterns. - -Prefer naming/structuring code to make such comments unnecessary. - -#+begin_src java - - // format matched kk:mm:ss EEE, MMM dd, yyyy - Pattern timeMatcher = Pattern.compile("\\d*:\\d*:\\d* \\w*, \\w* \\d*, \\d*"); - -#+end_src - - -*** Explanation of Intent - -Describe why a certain approach was chosen. - -Helps future maintainers understand reasoning behind code. - -#+begin_src java - - public int compareTo(Object o) - { - if(o instanceof WikiPagePath) - { WikiPagePath p = (WikiPagePath) o; - String compressedName = StringUtil.join(names, ""); - String compressedArgumentName = StringUtil.join(p.names, ""); - return compressedName.compareTo(compressedArgumentName); - } - return 1; // we are greater because we are the right type. - } - -#+end_src - -*** Clarification - -Translate obscure values into readable terms. - -Useful when working with unchangeable APIs/libraries, but risky if incorrect. - -*** Warning of Consequences - -Alert others about performance, thread-safety, or side effects. - -For example, in code you can say: - -~// SimpleDateFormat is not thread safe, so create each instance independently.~ - -*** \TODO\ Comments - -Mark incomplete work or planned improvements. - -Should be reviewed regularly; not an excuse for bad code. - -*** Amplification - -Highlight the importance of seemingly small details. - -~// the trim is real important. It removes starting spaces...~ - -*** Javadocs in Public APIs - -Public APIs should have clear documentation. - -Javadocs can also mislead. Keep them accurate and up-to-date. - -** Bad Comments -- Don't place a comment just because you feel like it. -- Remove redundant comments. -- Avoid misleading comments. -- Don't mandate everything (not every function needs a Javadoc). -- No need for journal comments, we have source control. -- Remove noise comments. - -*** Don’t Use a Comment When You Can Use a Function or Variable - -Replace explanatory comments with expressive variable or function names. - -Refactor code to remove comment redundancy. - -*** Position Markers - -Avoid decorative banners like ~// Actions ///////////////////////~, they add clutter. - -Use sparingly and only for meaningful grouping. - -Overuse makes them blend into background noise. - -*** Closing Brace Comments - -Comments on closing braces (} // while) are unnecessary for small, well structured functions. - -Prefer short, clear functions over brace markers. - -*** Attributions and Bylines - -Don’t add personal tags like ~/* Added by Rick */~, use version control for authorship history. - -Such comments become outdated and irrelevant over time. - -*** Commented Out Code - -Never keep old code commented out; delete it and rely on version control history. - -Commented-out code adds clutter and confuses future maintainers. - -#+begin_src java - - // Old cruft that should be deleted: - //hdrPos = bytePos; - //dataPos = bytePos; - -#+end_src - -*** HTML Comments - -Avoid HTML markup inside code comments, it makes them harder to read in the editor. - -Let documentation tools (like Javadoc) handle formatting. - -*** Nonlocal Information - -Comments should describe nearby code only, not unrelated parts of the system. - -Avoid embedding global/system details that the function can’t control. - -*** Too Much Information - -Avoid long, unnecessary historical or technical explanations. - -Keep only relevant context (e.g., “RFC 2045” reference is fine, not the full spec). - -*** Inobvious Connection - -Ensure the relationship between comment and code is clear. - -Don’t make readers guess what part of the code the comment refers to. - -#+begin_src java - - // plus filter bytes ... but which part is “filter”? - this.pngBytes = new byte[((this.width + 1) * this.height * 3) + 200]; - -#+end_src - -*** Function Headers - -Short, single purpose functions with good names don’t need header comments. - -Let the function name explain the purpose. - -*** Javadocs in Nonpublic Code - -Javadocs are useful for public APIs, but excessive formality in internal code is just noise. - -Internal methods should be self explanatory without full doc comments. -* Chapter 5: Formatting -** Vertical Formatting -- Vertical openness (blank lines) separates concepts and improves readability. -- Too much density makes code look like a muddle and harder to scan. - -*** Vertical Density -- Tightly related lines should appear vertically dense. -- Avoid useless comments that interrupt association. -- Example (bad): -#+BEGIN_SRC java - public class ReporterConfig { - /** - ,* The class name of the reporter listener - ,*/ - private String m_className; -#+END_SRC - -- Example (better): -#+BEGIN_SRC java -public class ReporterConfig { -private String m_className; -private List m_properties = new ArrayList<>(); -#+END_SRC - -*** Vertical Distance -- Related concepts should be kept close together to reduce scrolling and searching. -- Local variables → as close to use as possible, usually at top of function. -- Control variables → declared inside loop headers. -- Instance variables → declared at the top of class (common Java convention). - -#+BEGIN_SRC java -for (Test each : tests) { - count += each.countTestCases(); -} -#+END_SRC - -- Dependent functions: caller above callee for natural top-down reading. -#+BEGIN_SRC java -public Response makeResponse(...) { - String pageName = getPageNameOrDefault(request, "FrontPage"); - loadPage(pageName, context); - return makePageResponse(context); -} - -private String getPageNameOrDefault(Request request, String defaultPageName) { ... } -#+END_SRC - -*** Conceptual Affinity -- Group functions with similar naming or shared purpose. -- Example (JUnit assert methods): -#+BEGIN_SRC java -static public void assertTrue(String message, boolean condition) { ... } -static public void assertTrue(boolean condition) { ... } -static public void assertFalse(String message, boolean condition) { ... } -static public void assertFalse(boolean condition) { ... } -#+END_SRC - -*** Vertical Ordering -- Organise code top down: - - High-level concepts first (main logic). - - Lower-level details later. -- Readers can skim like a newspaper: important first, details last. -- Contrast: C/C++ require declarations before use, Java does not. - -*** Summary - vertical -- Use vertical openness to separate concepts. -- Use vertical density to group related ones. -- Keep related variables, methods, and concepts close together. -- Order code top down for natural readability. - -** Horizontal Formatting - -Keep lines short. Most professional code naturally stays within ~45 characters, with ~80 as an upper bound. Lines beyond 100–120 characters are generally careless. - -Avoid shrinking font or overly wide monitors to fit more code, readability > fitting more characters. - -Example limit guideline: - -#+begin_src java - // Good (short) - int sum = a + b + c; - - // Bad (too long) - int sum = a + b + c + d + e + f + g + h + i + j + k + l + m + n + o + p + q; -#+end_src -*** Horizontal Openness and Density - -Use spaces to separate low-precedence operators (e.g., +, -, =) and improve readability. - -Do not put spaces between function names and parentheses, they are closely related. - -Example (Quadratic formula formatting): - -#+begin_src java - return (-b + Math.sqrt(determinant)) / (2*a); -#+end_src - -Separate arguments with spaces after commas to show distinct parameters. - -*** Horizontal Alignment -Avoid aligning variable declarations or assignments in columns, it draws the eye to the wrong place. - -Long aligned lists usually mean the class is too large and should be split. - -Example (preferred unaligned): - -#+begin_src java - // Prefer this: - private Socket socket; - private InputStream input; - private OutputStream output; - - //instead of: - private Socket socket; - private InputStream input; - private OutputStream output; - -#+end_src - -*** Indentation - -Indent according to scope hierarchy: - -Classes → no indent - -Methods → 1 level - -Method bodies → 2 levels - -Inner blocks → +1 for each nesting - -Indentation makes scopes visually obvious; without it, code is hard to scan. - -Avoid collapsing scopes onto one line, always use braces and proper indenting. - -*** Dummy Scopes - -Avoid dummy bodies in loops (e.g., empty while or for loops). - -If unavoidable, place semicolon on its own indented line to make it visible. - -#+begin_src java - while (dis.read(buf, 0, size) != -1) - ; -#+end_src - -** Team Rules - -Teams must agree on a single formatting style for consistency. - -Use IDE formatters to enforce these rules across all files. - -Consistent formatting builds trust and reduces mental load for readers. - -** Uncle Bob’s Formatting Rules (Example in CodeAnalyzer.java) - -Short, clear methods with consistent spacing and indentation. - -Use spaces around assignment and low-precedence operators, no space for high precedence operators. - -Avoid deeply nested structures. Prefer clear, flat logic. - -Example snippet: - -#+begin_src java - private void measureLine(String line) { - lineCount++; - int lineSize = line.length(); - totalChars += lineSize; - lineWidthHistogram.addLine(lineSize, lineCount); - recordWidestLine(lineSize); - } -#+end_src diff --git a/build-site.el b/build-site.el index 06795e7..1ff31e8 100755 --- a/build-site.el +++ b/build-site.el @@ -629,22 +629,6 @@ Created with %c on Arch \ :sitemap-sort-files anti-chronologically :html-head ,z/shared-head) - ("org-books" - :base-directory ,(site-path "books/") - :publishing-directory ,(output-path "books/") - :recursive t - :base-extension "org" - :publishing-function z/z-publish-to-html - :html-preamble ,z/preamble - :html-postamble ,z/postamble - :auto-sitemap t - :sitemap-filename "books-list.org" - :sitemap-title "Books List" - :sitemap-style list - :sitemap-function z/books-sitemap - :sitemap-sort-files anti-chronologically - :html-head ,z/shared-head) - ("org-career" :base-directory ,(site-path "posts/career/") :publishing-directory ,(output-path "posts/career/") diff --git a/gitea-build-monitor.log b/gitea-build-monitor.log index 2ec41a7..07c633a 100644 --- a/gitea-build-monitor.log +++ b/gitea-build-monitor.log @@ -518,3 +518,9 @@ at , /home/zaine/master-folder/org-platform/org_web/gitea-build-mon 2026-07-08T01:02:07.5213424+01:00 [INFO] Running authoring server tests with /home/zaine/master-folder/org-platform/authoring-service/.venv/bin/python. 2026-07-08T01:02:07.5955175+01:00 [INFO] Authoring server tests passed: ran=0, failures=0, errors=0, skipped=0, exit=0 2026-07-08T01:02:08.0097024+01:00 [INFO] Sent authoring server test notification. +2026-07-08T21:39:46.0576365+01:00 [INFO] Prepared current build status for zaine/org_web: severity=Info, status=success +2026-07-08T21:39:46.0662048+01:00 [INFO] Fetching recent Gitea Actions runs for zaine/org_web. +2026-07-08T21:39:47.2301237+01:00 [INFO] Sent build status notification with 1 embed(s). +2026-07-08T21:39:47.2502852+01:00 [INFO] Running authoring server tests with /home/zaine/master-folder/org-platform/authoring-service/.venv/bin/python. +2026-07-08T21:39:47.3360182+01:00 [INFO] Authoring server tests passed: ran=0, failures=0, errors=0, skipped=0, exit=0 +2026-07-08T21:39:47.6841173+01:00 [INFO] Sent authoring server test notification. diff --git a/gitea-build-monitor.ps1 b/gitea-build-monitor.ps1 index b985051..996f66b 100755 --- a/gitea-build-monitor.ps1 +++ b/gitea-build-monitor.ps1 @@ -53,7 +53,7 @@ $Config = @{ CacheFile = Join-Path $PSScriptRoot 'gitea-build-monitor-cache.json' LogFile = Join-Path $PSScriptRoot 'gitea-build-monitor.log' BuildLogFile = Join-Path $PSScriptRoot 'org-web-build.log' - BuildSuccessPattern = 'JSON saved to output/test.json' + BuildSuccessPattern = 'JSON saved to output/search-index.json' MaxJobsPerRepository = 50 MaxLogBytesToAnalyze = 250000 MaxDiscordEmbeds = 10 diff --git a/home/guide/setup.org b/home/guide/setup.org index e3652ba..8fe8be3 100755 --- a/home/guide/setup.org +++ b/home/guide/setup.org @@ -300,25 +300,6 @@ The script is as follows, at the start I have some metadata relating to the file :sitemap-function z/blogs-sitemap :sitemap-sort-files anti-chronologically :html-head ,z-shared-head - ) - ("org-books" - :base-directory "~/master-folder/org-platform/org_web/books/" - :publishing-directory "~/master-folder/org-platform/org_web/output/books/" - :recursive t - :base-extension "org" - :publishing-function z/z-publish-to-html - :with-author nil - :with-creator nil - :html-validation-link nil - :html-preamble ,z-preamble - :html-postamble ,z-postamble - :auto-sitemap t - :sitemap-filename "books-list.org" - :sitemap-title "Books List" - :sitemap-style list - :sitemap-function z/books-sitemap - :sitemap-sort-files anti-chronologically - :html-head ,z-shared-head ) ("org-2025" :base-directory "~/master-folder/org-platform/org_web/blogs/2025/" diff --git a/lisp/sitemaps.el b/lisp/sitemaps.el index aa798d0..98c4f1f 100755 --- a/lisp/sitemaps.el +++ b/lisp/sitemaps.el @@ -251,17 +251,6 @@ CATEGORIES-REL — relative path to categories.html from this project root" (nth 2 entry)))))))) output))) -;; ───────────────────────────────────────────────────────────────────────────── -;; Books -;; ───────────────────────────────────────────────────────────────────────────── - -(defun z/books-sitemap (title list) - "Flat sitemap for org-books." - (z/sitemap--flat-list title list - (site-path "books/") - "Book Notes:" - "../home/categories.html")) - ;; ───────────────────────────────────────────────────────────────────────────── ;; Year-scoped sitemaps (generic helper) ;; ───────────────────────────────────────────────────────────────────────────── diff --git a/posts/posts-list.org b/posts/posts-list.org index 522825d..0fe3240 100755 --- a/posts/posts-list.org +++ b/posts/posts-list.org @@ -4,7 +4,7 @@ See the categories: @@html:Categories@@ * Posts: -- [[file:career/career-list.org][Career List]] @@html:@@ +- [[file:career/career-list.org][Career List]] @@html:@@ - [[file:career/cross-site-scripting-xss.org][Cross-Site Scripting (XSS)]] @@html:@@ @@html:@@ @@html:@@ - [[file:career/ha-dr.org][High Availability, Disaster Recovery and Business Continuity]] @@html:@@ @@html:@@ @@html:@@ - [[file:career/javascript.org][Understands the Javascript language]] @@html:@@ @@html:@@ @@html:@@ diff --git a/search-index-json.py b/search-index-json.py index 673f75f..545d3c4 100755 --- a/search-index-json.py +++ b/search-index-json.py @@ -57,7 +57,7 @@ def create_folder_structure_json(path): folder_path = OUTPUT_DIR folder_json = create_folder_structure_json(folder_path) -output_file = os.path.join(OUTPUT_DIR, 'test.json') +output_file = os.path.join(OUTPUT_DIR, 'search-index.json') with open(output_file, 'w', encoding='utf-8') as f: json.dump(folder_json, f, indent=4, ensure_ascii=False) diff --git a/sitemap.org b/sitemap.org index 7ea7e81..dfc0b9a 100755 --- a/sitemap.org +++ b/sitemap.org @@ -12,14 +12,6 @@ flowchart TD root --> n3 n4["Recently Updated"] root --> n4 - n5{{"books"}} - root --> n5 - n6["Books List"] - n5 --> n6 - n7{{"clean-code"}} - n5 --> n7 - n8["Clean Code Notes"] - n7 --> n8 n9{{"blogs"}} root --> n9 n10["Blogs Introduction"] @@ -166,8 +158,6 @@ flowchart TD click n2 "play.html" "Play" click n3 "wip.html" "Work in progress" click n4 "recently-updated.html" "Recently Updated" - click n6 "books/books-list.html" "Books List" - click n8 "books/clean-code/clean-code-notes.html" "Clean Code Notes" click n10 "blogs/blogs-intro.html" "Blogs Introduction" click n11 "blogs/publish-pages.html" "How to publish pages using Org Publish" click n12 "blogs/blogs-list.html" "Blogs List" @@ -238,10 +228,6 @@ flowchart TD - [[file:play.org][Play]] - [[file:wip.org][Work in progress]] - [[file:recently-updated.org][Recently Updated]] -- books - - [[file:books/books-list.org][Books List]] - - clean-code - - [[file:books/clean-code/clean-code-notes.org][Clean Code Notes]] - blogs - [[file:blogs/blogs-intro.org][Blogs Introduction]] - [[file:blogs/publish-pages.org][How to publish pages using Org Publish]] @@ -312,4 +298,4 @@ flowchart TD - [[file:play/terminal.org][Archive Terminal]] - [[file:play/study.org][Study Lamp]] - [[file:play/poem.org][Marginalia Machine]] - - [[file:play/the-rain-index.org][The Rain Index]] \ No newline at end of file + - [[file:play/the-rain-index.org][The Rain Index]] diff --git a/watcher.sh b/watcher.sh deleted file mode 100755 index cfb6122..0000000 --- a/watcher.sh +++ /dev/null @@ -1,23 +0,0 @@ -#!/usr/bin/env bash -# run a single command once per save in a subfolder - -WATCH="/home/zaine/master-folder/org-platform/org_web/lima" # subfolder to watch -RUN_IN="/home/zaine/master-folder/org-platform/org_web" # run command from here - -# pass the command to run as args: -# ./watch.sh emacs -Q --script build-site.el -[[ $# -gt 0 ]] || { echo "Usage: $0 "; exit 1; } -CMD=("$@") - -# ignore common temp/swap files -EXCLUDE='(^|/)(#.*#|\.#.*|.*~|.*\.tmp|.*\.sw[pox])($|/)' - -inotifywait -m -r -q \ - -e close_write,moved_to \ - --exclude "$EXCLUDE" \ - --format 'Triggered by: %w%f' \ - "$WATCH" | -while read -r path; do - echo "$path" - ( cd "$RUN_IN" && "${CMD[@]}" ) -done -- 2.49.1 From b7f08ba46df36fd52e70a017df6a6fec6fcaa5b8 Mon Sep 17 00:00:00 2001 From: gitea-actions Date: Wed, 8 Jul 2026 22:09:29 +0100 Subject: [PATCH 2/5] seperating build --- Makefile | 6 +- build-site.el | 824 +----------------- home/guide/setup.org | 22 - lisp/build-assets.el | 78 ++ lisp/build-comments.el | 103 +++ lisp/build-core.el | 102 +++ lisp/build-html.el | 113 +++ lisp/build-lima.el | 89 ++ lisp/build-projects.el | 139 +++ lisp/build-runner.el | 120 +++ lisp/recently-updated.el | 3 +- lisp/sitemaps.el | 53 -- lisp/tags.el | 4 +- .../tests/build-site-tests.el | 92 +- publish-and-push.sh | 23 - sitemap.org | 4 - wip.org | 5 - 17 files changed, 822 insertions(+), 958 deletions(-) create mode 100644 lisp/build-assets.el create mode 100644 lisp/build-comments.el create mode 100644 lisp/build-core.el create mode 100644 lisp/build-html.el create mode 100644 lisp/build-lima.el create mode 100644 lisp/build-projects.el create mode 100644 lisp/build-runner.el rename build-site-tests.el => lisp/tests/build-site-tests.el (80%) mode change 100755 => 100644 delete mode 100755 publish-and-push.sh delete mode 100755 wip.org diff --git a/Makefile b/Makefile index d071fa7..44e01dc 100755 --- a/Makefile +++ b/Makefile @@ -1,4 +1,4 @@ -.PHONY: all clean norm test author author-install author-start author-stop author-stop-legacy author-restart author-status author-logs author-health author-diagnostics help +.PHONY: all clean norm test test-elisp author author-install author-start author-stop author-stop-legacy author-restart author-status author-logs author-health author-diagnostics help VENV := .venv PY := $(VENV)/bin/python @@ -25,6 +25,9 @@ search: $(VENV) test: $(MAKE) -C "$(AUTHOR_SERVICE_DIR)" test +test-elisp: + emacs -Q --batch -l lisp/tests/build-site-tests.el -f ert-run-tests-batch-and-exit + $(VENV): @echo "Generating virtual environment" python3 -m venv $(VENV) @@ -80,6 +83,7 @@ help: @echo " make clean-venv - Remove venv directory" @echo " make norm - Move backup files" @echo " make test - Run authoring server tests" + @echo " make test-elisp - Run Emacs Lisp build tests" @echo " make author - Install and start the authoring UI service" @echo " make author-install - Install and enable the authoring UI service" @echo " make author-stop - Stop the authoring UI service" diff --git a/build-site.el b/build-site.el index 1ff31e8..6afd916 100755 --- a/build-site.el +++ b/build-site.el @@ -1,23 +1,15 @@ ;;; build-site.el --- Publish my website using org-publish -*- lexical-binding: t; -*- -;; Author: Zaine Qayyum -;; Created: 2025-08-08 -;; Purpose: Build and publish my static site from Org files. - -;;; Commentary: -;; Run this file with: +;; Run with: ;; emacs -Q --script build-site.el ;; ;; Optional env vars: ;; SITE_FORCE=1 Force republish all files (default: incremental) ;; SITE_DRY=1 Parse and prepare only; skip org-publish-all +;; SITE_CLEAN=1 Wipe output/ and .org-timestamps/ before publishing ;;; Code: -;; ───────────────────────────────────────────────────────────────────────────── -;; 0. Bootstrap: paths and load-path -;; ───────────────────────────────────────────────────────────────────────────── - (defconst z/build-start-time (float-time) "Wall-clock time when the build started.") @@ -25,11 +17,8 @@ (file-name-as-directory (file-name-directory (or load-file-name buffer-file-name))) - "Absolute path to the site root (always ends with /). -This is the single authoritative definition — lisp/* files must NOT -redefine site-root themselves.") + "Absolute path to the site root.") -;; Keep the old name around so any stray code still compiles. (defvaralias 'site-root 'z/site-root) (setq create-lockfiles nil) @@ -43,9 +32,7 @@ redefine site-root themselves.") (expand-file-name (or (getenv "SITE_OUTPUT_DIR") (site-path "output/")))) - "Absolute path to the site output directory. -Defaults to output/ under `z/site-root', but CI can set SITE_OUTPUT_DIR to -publish into a stable directory instead of the runner's transient checkout.") + "Absolute path to the site output directory.") (defun output-path (path) "Expand PATH relative to `z/output-root'." @@ -53,789 +40,24 @@ publish into a stable directory instead of the runner's transient checkout.") (add-to-list 'load-path (site-path "lisp")) -;; ───────────────────────────────────────────────────────────────────────────── -;; 1. Logging helpers (ANSI colours for terminal output) -;; ───────────────────────────────────────────────────────────────────────────── - -(defconst z/colour-reset "\033[0m") -(defconst z/colour-bold "\033[1m") -(defconst z/colour-dim "\033[2m") -(defconst z/colour-green "\033[32m") -(defconst z/colour-yellow "\033[33m") -(defconst z/colour-cyan "\033[36m") -(defconst z/colour-red "\033[31m") -(defconst z/colour-blue "\033[34m") -(defconst z/colour-magenta "\033[35m") - -(defun z/log (level fmt &rest args) - "Emit a coloured build-log line. -LEVEL is one of: info warn error step metric done. -FMT / ARGS are passed to `format'." - (let* ((msg (apply #'format fmt args)) - (prefix - (pcase level - ('info (concat z/colour-cyan " INFO " z/colour-reset)) - ('warn (concat z/colour-yellow " WARN " z/colour-reset)) - ('error (concat z/colour-red " ERROR " z/colour-reset)) - ('step (concat z/colour-blue z/colour-bold - " ──── " z/colour-reset)) - ('metric (concat z/colour-magenta " ◈ " z/colour-reset)) - ('done (concat z/colour-green z/colour-bold - " ✓ " z/colour-reset)) - (_ " ")))) - (message "%s%s" prefix msg))) - -(defun z/log-separator (&optional label) - "Print a coloured separator line, optionally with LABEL." - (if label - (message "%s%s── %s %s%s" - z/colour-dim z/colour-bold label - (make-string (max 0 (- 60 (length label))) ?─) - z/colour-reset) - (message "%s%s%s" - z/colour-dim - (make-string 66 ?─) - z/colour-reset))) - -(defmacro z/with-timing (label &rest body) - "Execute BODY, then log elapsed seconds under LABEL." - (declare (indent 1)) - (let ((t0 (gensym "t0"))) - `(let ((,t0 (float-time))) - (prog1 (progn ,@body) - (z/log 'metric "%s took %.2fs" ,label (- (float-time) ,t0)))))) - -;; ───────────────────────────────────────────────────────────────────────────── -;; 2. Package bootstrap -;; ───────────────────────────────────────────────────────────────────────────── - -(z/log-separator "Package setup") - -(require 'package) - -(setq package-user-dir (site-path ".packages")) -(setq package-archives - '(("melpa" . "https://melpa.org/packages/") - ("elpa" . "https://elpa.gnu.org/packages/"))) - -(package-initialize) - -(z/with-timing "Package archive refresh" - (unless package-archive-contents - (z/log 'info "Refreshing package archive contents…") - (condition-case err - (package-refresh-contents) - (error - (z/log 'warn "Could not refresh archives: %s" (error-message-string err)))))) - -(z/with-timing "htmlize install" - (unless (package-installed-p 'htmlize) - (z/log 'info "Installing htmlize…") - (condition-case err - (package-install 'htmlize) - (error - (z/log 'error "htmlize install failed: %s" (error-message-string err)) - (error "Cannot continue without htmlize"))))) - -(require 'htmlize) - -;; ───────────────────────────────────────────────────────────────────────────── -;; 3. Org / ox requires -;; ───────────────────────────────────────────────────────────────────────────── - -(require 'ox-publish) -(require 'cl-lib) -(require 'json) -(require 'org) -(require 'ox) -(require 'ox-html) -(require 'ox-md) - -(setq org-publish-timestamp-directory (site-path ".org-timestamps/")) - -;; ───────────────────────────────────────────────────────────────────────────── -;; 4. Local library requires (after load-path is set) -;; ───────────────────────────────────────────────────────────────────────────── - -(z/log-separator "Local libraries") - -(dolist (lib '(recently-updated tags sidenotes sitemaps)) - (condition-case err - (progn - (require lib) - (z/log 'done "Loaded %s" lib)) - (error - (z/log 'error "Failed to load %s: %s" lib (error-message-string err)) - (error "Aborting: required library %s missing" lib)))) - -;; ───────────────────────────────────────────────────────────────────────────── -;; 5. HTML export settings -;; ───────────────────────────────────────────────────────────────────────────── - -(setq org-html-htmlize-output-type 'css) - -(defun z/asset-version (path) - "Return a cache-busting version string for asset PATH under `z/site-root'." - (let* ((file (site-path path)) - (attrs (and (file-exists-p file) (file-attributes file))) - (mtime (and attrs (file-attribute-modification-time attrs))) - (size (and attrs (file-attribute-size attrs)))) - (if (and mtime size) - (format "%x-%x" (floor (float-time mtime)) size) - (format "%x" (floor z/build-start-time))))) - -(defun z/asset-url (path) - "Return root-relative asset PATH with a deterministic cache-busting query." - (format "/%s?v=%s" path (z/asset-version path))) - -(defvar z/shared-head - (concat - "\n" - (mapconcat - (lambda (f) - (format "" - (z/asset-url (format "assets/styles/%s" f)))) - '("style.css" - "bigger-picture.min.css" - "comments.css" - "kanban.css" - "org-syntax.css" - "misc.css" - "media.css" - "wird-tracker.css" - "zhd.css" - "play.css" - "hidden-details.css" - ) - "\n") - "\n" - (mapconcat - (lambda (f) - (format "" - (z/asset-url (format "assets/scripts/%s" f)))) - '("script.js" - "lunr.js" - "competency-status-board.js" - "notes.js" - "comments.js" - "bigger-picture.min.js" - "search.js" - "svg-pan-zoom.min.js" - "gallery-init.js" - "sitemap-interactive.js" - "wird-tracker.js" - "zhd.js" - "play.js" - "ash-below-lake.js" - "hidden-details.js" - ) - "\n") - (format "" - (z/asset-url "assets/scripts/mermaid.min.js")) - ) - "Shared HTML fragment injected into every page.") - -;; ───────────────────────────────────────────────────────────────────────────── -;; 6. Global Org macros -;; ───────────────────────────────────────────────────────────────────────────── - -(setq org-export-global-macros - (append - org-export-global-macros - '(("sidenote" - . "@@html:\ -\ -$2@@") - ("epigraph" - . "@@html:
$1
$2
@@") - ("epigraph_single" - . "@@html:
$1
@@") - ("epigraph3" - . "@@html:
$1
$2, $3
@@") - ("kbd" - . "@@html:$1@@@@latex:\\texttt{$1}@@") - ("margimg" - . "@@html:@@") - ("countdown" - . "@@html:@@")))) - -;; ───────────────────────────────────────────────────────────────────────────── -;; 7. Preamble / postamble -;; ───────────────────────────────────────────────────────────────────────────── - -(defvar z/preamble - "
- - \"\" - zxh - - -
- - - -
-
-
Updated: %C
-") - -(defvar z/postamble - "
-
-
-Copyright © 2022-2026 Zaine Qayyum. All rights reserved unless otherwise noted.
-
-Created with %c on Arch \ -GNU/Linux -
-
") - -;; ───────────────────────────────────────────────────────────────────────────── -;; 8. Comments support -;; ───────────────────────────────────────────────────────────────────────────── - -(defun z/comments-file-p (file) - "Return non-nil if FILE has #+COMMENTS: t." - (when (file-exists-p file) - (with-temp-buffer - (insert-file-contents file) - (org-mode) - (let* ((keywords (org-collect-keywords '("COMMENTS"))) - (val (cadr (assoc "COMMENTS" keywords)))) - (and val - (string-match-p "^\\s-*t\\s-*$" (downcase val))))))) - -(defun z/comments-file-slug (file) - "Return page slug from #+SLUG: or fallback to filename base." - (with-temp-buffer - (insert-file-contents file) - (org-mode) - (let* ((keywords (org-collect-keywords '("SLUG"))) - (slug (cadr (assoc "SLUG" keywords)))) - (if (and slug (string-match-p "\\S-" slug)) - slug - (file-name-base file))))) - -(defun z/comment-page-url (file) - "Return root-relative published HTML URL for source FILE." - (concat "/" - (file-name-sans-extension - (file-relative-name file z/site-root)) - ".html")) - -(defun z/comment-page-title (file) - "Return exported page title for FILE, or the file basename." - (with-temp-buffer - (insert-file-contents file nil 0 4096) - (goto-char (point-min)) - (if (re-search-forward "^#\\+TITLE:[ \t]*\\(.+?\\)[ \t]*$" nil t) - (match-string 1) - (file-name-base file)))) - -(defun z/comment-page-record (file) - "Return a JSON-ready comment page record for FILE." - `((slug . ,(z/comments-file-slug file)) - (title . ,(z/comment-page-title file)) - (url . ,(z/comment-page-url file)))) - -(defun z/generate-comment-pages-json () - "Write a slug-to-page manifest for comment-enabled Org files." - (let* ((files (directory-files-recursively z/site-root "\\.org\\'")) - (records - (cl-loop for file in files - unless (or (string-prefix-p (site-path "output/") file) - (string-prefix-p (site-path "backups/") file) - (string-prefix-p (site-path ".org-timestamps/") file) - (string-prefix-p (site-path ".packages/") file)) - when (z/comments-file-p file) - collect (z/comment-page-record file))) - (target (site-path "assets/content/comment-pages.json")) - (json-encoding-pretty-print t)) - (make-directory (file-name-directory target) t) - (with-temp-file target - (insert (json-encode (vconcat records))) - (insert "\n")) - (z/log 'done "Wrote comment page manifest (%d pages)" (length records)))) - -(defun z/org-html-insert-comments-into-body (body backend info) - "Append a comments section to BODY for files that opt in." - (when (org-export-derived-backend-p backend 'html) - (let ((input-file (plist-get info :input-file))) - (if (and input-file (z/comments-file-p input-file)) - (let* ((slug (z/comments-file-slug input-file)) - (html (format - "\n
-

Comments

-
- -
-
- - - -
-
\n" - slug))) - (concat body html)) - body)))) - - -;; 8.5 mermaid js support: - -(defun z/org-html-mermaid-block (code _lang) - "Export a mermaid src block as a mermaid div." - (format "
\n%s\n
" code)) - -;; Hook into ox-html's src block export -(defun z/org-html-src-block-mermaid (orig-fun src-block contents info) - (let ((lang (org-element-property :language src-block))) - (if (string= lang "mermaid") - (let ((code (org-remove-indentation - (org-element-property :value src-block)))) - (format "
\n%s\n
" code)) - (funcall orig-fun src-block contents info)))) - -(advice-add 'org-html-src-block :around #'z/org-html-src-block-mermaid) - - - -;; ───────────────────────────────────────────────────────────────────────────── -;; 9. Body-class injection (WIP / no-sidenotes) -;; ───────────────────────────────────────────────────────────────────────────── - -(defun z/org-html-add-body-classes (output backend info) - "Add layout-related classes to based on file metadata." - (when (org-export-derived-backend-p backend 'html) - (let* ((input-file (plist-get info :input-file)) - (classes - (delq nil - (list - (when (and input-file (z/wip-file-p input-file)) - "wip") - (when (and input-file (z/no-sidenotes-file-p input-file)) - "no-sidenotes"))))) - (if classes - (replace-regexp-in-string - "]*\\)>" - (format "" - (string-join classes " ")) - output) - output)))) - -(add-to-list 'org-export-filter-final-output-functions - #'z/org-html-add-body-classes) -(add-to-list 'org-export-filter-body-functions - #'z/org-html-insert-comments-into-body) - -;; ───────────────────────────────────────────────────────────────────────────── -;; 10. Custom z-html backend -;; ───────────────────────────────────────────────────────────────────────────── - -(org-export-define-derived-backend 'z-html 'html - :filters-alist '((:filter-final-output . z/insert-filetags-after-title))) - -(defun z/z-publish-to-html (plist filename pub-dir) - "Publish FILENAME to HTML using the z-html backend." - (org-publish-org-to 'z-html filename ".html" plist pub-dir)) - -;; ───────────────────────────────────────────────────────────────────────────── -;; 11. Lima project helpers -;; ───────────────────────────────────────────────────────────────────────────── - -(defun z/lima-sitemap-format-entry (entry style project) - "Format a sitemap entry for Lima; skip directories." - (let* ((file (if (listp entry) (car entry) entry)) - (base-dir (file-name-as-directory - (org-publish-property :base-directory project))) - (abs (if (file-name-absolute-p file) - file - (expand-file-name file base-dir)))) - (unless (file-directory-p abs) - (let* ((rel (file-relative-name abs base-dir)) - (rel-noext (file-name-sans-extension rel)) - (title (org-publish-find-title abs project))) - (format "[[file:%s.html][%s]]" - rel-noext - (or title (file-name-nondirectory rel-noext))))))) - -(defun z/copy-neighbor-attachments (source-dir pub-dir) - "Copy sibling .attachments.* directories from SOURCE-DIR into PUB-DIR." - (dolist (d (directory-files source-dir t "^\\.attachments\\..+")) - (when (file-directory-p d) - (let ((target (expand-file-name (file-name-nondirectory d) pub-dir))) - (make-directory target t) - (copy-directory d target t t t))))) - -(defun z/markdown-h1-title (filename fallback) - "Return the first Markdown H1 title in FILENAME, or FALLBACK." - (with-temp-buffer - (insert-file-contents filename nil 0 4096) - (goto-char (point-min)) - (if (re-search-forward "^#+ +\\(.+?\\)\\s-*$" nil t) - (match-string 1) - fallback))) - -(defun z/publish-lima-file (plist filename pub-dir) - "Publish an Org or Markdown file from the lima directory." - (let* ((ext (downcase (or (file-name-extension filename) ""))) - (base (file-name-base filename)) - (src-dir (file-name-directory filename))) - (cond - ;; ── Org files ────────────────────────────────────────────────────────── - ((string= ext "org") - (z/copy-neighbor-attachments src-dir pub-dir) - (org-publish-org-to 'z-html filename ".html" plist pub-dir)) - - ;; ── Markdown files ───────────────────────────────────────────────────── - ((string= ext "md") - (let* ((tmp-dir (make-temp-file "lima-build-" t)) - (temp-org (expand-file-name (concat base ".org") tmp-dir))) - ;; Markdown → Org - (let ((rc (call-process "pandoc" nil nil nil - filename "-f" "markdown" "-t" "org" "-o" temp-org))) - (unless (zerop rc) - (z/log 'error "pandoc failed (rc=%d) for %s" rc filename) - (error "pandoc conversion failed for %s" filename))) - ;; Prepend front matter - (with-temp-buffer - (insert-file-contents temp-org) - (goto-char (point-min)) - (insert (format "#+TITLE: %s\n#+OPTIONS: num:nil\n#+DATE: %s\n#+COMMENTS: t\n#+SLUG: %s\n\n" - (z/markdown-h1-title filename base) - (format-time-string "<%Y-%m-%d %a %H:%M>") - base)) - (write-region (point-min) (point-max) temp-org)) - ;; Publish - (z/copy-neighbor-attachments src-dir pub-dir) - (let ((output-file (expand-file-name (concat base ".html") pub-dir))) - (org-publish-org-to 'z-html temp-org ".html" plist pub-dir) - (let ((generated (expand-file-name - (concat (file-name-base temp-org) ".html") - pub-dir))) - (when (and (file-exists-p generated) - (not (string-equal generated output-file))) - (rename-file generated output-file t)))))) - - ;; ── Fallback: treat as attachment ────────────────────────────────────── - (t - (org-publish-attachment plist filename pub-dir))))) - -;; ───────────────────────────────────────────────────────────────────────────── -;; 12. Preparation hooks -;; ───────────────────────────────────────────────────────────────────────────── - -(defun z/org-main-prep (_project) - "Pre-publish hook: regenerate recently-updated.org." - (z/log 'step "Generating recently-updated.org…") - (z/with-timing "recently-updated generation" - (z/generate-recently-updated-org 26))) - -;; ───────────────────────────────────────────────────────────────────────────── -;; 13. Publishing project alist -;; ───────────────────────────────────────────────────────────────────────────── - -(setq org-publish-project-alist - `(("org-main" - :recursive t - :base-directory ,(site-path "") - :publishing-function z/z-publish-to-html - :publishing-directory ,(output-path "") - :base-extension "org" - :auto-sitemap t - :sitemap-filename "sitemap.org" - :sitemap-title "Sitemap" - :sitemap-function z/main-sitemap - :sitemap-sort-files chronologically - :html-preamble ,z/preamble - :html-postamble ,z/postamble - :html-head ,z/shared-head - :preparation-function z/org-main-prep) - - ("org-assets" - :base-directory ,(site-path "assets/") - :base-extension "css\\|js\\|png\\|jpg\\|jpeg\\|gif\\|webp\\|svg\\|pdf\\|mp4\\|webm\\|mov\\|woff\\|woff2\\|ttf" - :publishing-directory ,(output-path "assets/") - :recursive t - :publishing-function org-publish-attachment) - - ("org-categories-sitemap" - :recursive t - :base-directory ,(site-path "home/") - :publishing-directory ,(output-path "home/") - :base-extension "org" - :auto-sitemap t - :sitemap-filename "categories.org" - :sitemap-title "Categories" - :sitemap-function z/categories-sitemap - :html-preamble ,z/preamble - :html-postamble ,z/postamble - :html-head ,z/shared-head) - - ("org-posts" - :base-directory ,(site-path "posts/") - :publishing-directory ,(output-path "posts/") - :recursive t - :base-extension "org" - :publishing-function z/z-publish-to-html - :with-author nil - :with-creator nil - :html-validation-link nil - :with-toc t - :section-numbers t - :html-preamble ,z/preamble - :html-postamble ,z/postamble - :auto-sitemap t - :sitemap-filename "posts-list.org" - :sitemap-title "Posts List" - :sitemap-style list - :sitemap-function z/posts-sitemap - :sitemap-sort-files anti-chronologically - :html-head ,z/shared-head) - - ("org-blogs" - :base-directory ,(site-path "blogs/") - :publishing-directory ,(output-path "blogs/") - :recursive t - :base-extension "org" - :publishing-function z/z-publish-to-html - :with-author nil - :with-creator nil - :html-validation-link nil - :html-preamble ,z/preamble - :html-postamble ,z/postamble - :auto-sitemap t - :sitemap-filename "blogs-list.org" - :sitemap-title "Blogs List" - :sitemap-style list - :sitemap-function z/blogs-grouped-sitemap - :sitemap-sort-files anti-chronologically - :html-head ,z/shared-head) - - ("org-career" - :base-directory ,(site-path "posts/career/") - :publishing-directory ,(output-path "posts/career/") - :recursive t - :base-extension "org" - :publishing-function z/z-publish-to-html - :html-preamble ,z/preamble - :html-postamble ,z/postamble - :auto-sitemap t - :sitemap-filename "career-list.org" - :sitemap-title "Career List" - :sitemap-style list - :sitemap-function z/career-sitemap - :sitemap-sort-files anti-chronologically - :html-head ,z/shared-head) - - ("wip-pages" - :base-directory ,(site-path "") - :publishing-directory ,(output-path "") - :recursive t - :base-extension "org" - :publishing-function z/z-publish-to-html - :html-preamble ,z/preamble - :html-postamble ,z/postamble - :auto-sitemap t - :sitemap-filename "wip.org" - :sitemap-title "Work in progress" - :sitemap-style list - :sitemap-function z/wip-sitemap - :sitemap-sort-files anti-chronologically - :html-head ,z/shared-head) - - ("org-tags" - :base-directory ,(site-path "tags/") - :publishing-directory ,(output-path "tags/") - :recursive t - :base-extension "org" - :publishing-function org-html-publish-to-html - :html-preamble ,z/preamble - :html-postamble ,z/postamble - :html-head ,z/shared-head) - - ("org-lima" - :base-directory ,(site-path "lima/") - :publishing-directory ,(output-path "lima/") - :recursive t - :base-extension "org\\|md" - :publishing-function z/publish-lima-file - :with-author nil - :with-creator nil - :html-validation-link nil - :html-preamble ,z/preamble - :html-postamble ,z/postamble - :sitemap-filename "lima-list.org" - :auto-sitemap t - :sitemap-title "Lima" - :sitemap-style list - :sitemap-sort-files anti-chronologically - :sitemap-format-entry z/lima-sitemap-format-entry - :html-head ,z/shared-head))) - -;; ───────────────────────────────────────────────────────────────────────────── -;; 14. Pre-build clean-up (opt-in via SITE_CLEAN=1) -;; ───────────────────────────────────────────────────────────────────────────── -;; -;; IMPORTANT: output/ and .org-timestamps/ are a matched pair. -;; .org-timestamps/ is org-publish's cache of every file's last-published -;; mtime. If output/ is wiped without also wiping .org-timestamps/, the next -;; incremental build sees "cache says up-to-date" but the output file is gone, -;; so it silently skips the file. That is why assets/ and index.html vanished. -;; -;; Rule: whenever output/ is deleted, .org-timestamps/ must be deleted too. - -(z/log-separator "Pre-build") -(z/log 'info "Site source root : %s" z/site-root) -(z/log 'info "Site output root : %s" z/output-root) - -(defun z/wipe-build-dirs () - "Delete output/ and .org-timestamps/ together." - (dolist (dir (list z/output-root - (site-path ".org-timestamps/"))) - (if (file-directory-p dir) - (progn - (z/with-timing (format "delete %s" - (file-name-nondirectory - (directory-file-name dir))) - (delete-directory dir t)) - (z/log 'done "Deleted %s" dir)) - (z/log 'info "Already absent: %s" dir)))) - -(defun z/output-integrity-ok-p () - "Return t if critical output paths all exist. -Returns nil (and logs warnings) if assets/ or any top-level HTML is missing. -A nil result means the timestamp cache is stale and we must force-republish." - (let ((missing '())) - (unless (file-directory-p (output-path "assets/")) - (push "output/assets/" missing)) - (unless (or (file-exists-p (output-path "index.html")) - (file-exists-p (output-path "sitemap.html"))) - (push "output/index.html (or sitemap.html)" missing)) - (dolist (m missing) - (z/log 'warn "Integrity check: missing %s" m)) - (null missing))) - -(cond - ;; ── Explicit clean requested ─────────────────────────────────────────────── - ((getenv "SITE_CLEAN") - (z/log 'warn "SITE_CLEAN=1 — wiping output/ and .org-timestamps/") - (z/wipe-build-dirs) - (setenv "SITE_FORCE" "1")) - - ;; ── Output looks incomplete — cache is stale ────────────────────────────── - ;; Catches the case where output/ was wiped externally (git clean, manual rm, - ;; Syncthing conflict) without clearing .org-timestamps/. Without this guard - ;; org-publish would silently skip every "up-to-date" file and produce a - ;; broken site with missing assets and pages. - ((not (z/output-integrity-ok-p)) - (z/log 'warn "Output integrity check failed — timestamp cache is stale") - (z/log 'warn "Clearing .org-timestamps/ and forcing full republish") - (let ((ts-dir (site-path ".org-timestamps/"))) - (when (file-directory-p ts-dir) - (z/with-timing "delete .org-timestamps" - (delete-directory ts-dir t)) - (z/log 'done "Deleted .org-timestamps/"))) - (setenv "SITE_FORCE" "1")) - - ;; ── Normal incremental build ────────────────────────────────────────────── - (t - (z/log 'info "Incremental build — output/ looks complete"))) - -;; ───────────────────────────────────────────────────────────────────────────── -;; 15. Tag pages -;; ───────────────────────────────────────────────────────────────────────────── - -(z/log-separator "Tag generation") - -(z/with-timing "tag page generation" - (condition-case err - (let ((n (z/write-tag-pages))) - (z/log 'done "Tag pages written%s" - (if (numberp n) (format " (%d tags)" n) ""))) - (error - (z/log 'error "Tag generation failed: %s" (error-message-string err)) - (error "Aborting build: tag generation error")))) - -(z/with-timing "comment page manifest" - (condition-case err - (z/generate-comment-pages-json) - (error - (z/log 'error "Comment page manifest failed: %s" (error-message-string err)) - (error "Aborting build: comment page manifest error")))) - -;; ───────────────────────────────────────────────────────────────────────────── -;; 16. Publish -;; ───────────────────────────────────────────────────────────────────────────── - -(z/log-separator "Publishing") - -(defun z/sync-assets-to-output () - "Copy assets/ into the configured output assets directory, overwriting stale files." - (let ((source-root (site-path "assets/")) - (target-root (output-path "assets/"))) - (when (file-directory-p source-root) - (dolist (file (directory-files-recursively source-root ".*" nil)) - (unless (file-directory-p file) - (let* ((rel (file-relative-name file source-root)) - (target (expand-file-name rel target-root))) - (make-directory (file-name-directory target) t) - (copy-file file target t t t t))))))) - -(if (getenv "SITE_DRY") - (z/log 'warn "SITE_DRY=1 — skipping org-publish-all (dry run)") - (let ((force (not (not (getenv "SITE_FORCE"))))) - (when force - (z/log 'info "SITE_FORCE=1 — forcing republish of all files")) - (condition-case err - (progn - (z/with-timing "org-publish-all" - (org-publish-all force)) - (z/with-timing "asset sync" - (z/sync-assets-to-output))) - (error - (z/log 'error "org-publish-all failed: %s" (error-message-string err)) - (error "Build failed"))))) - -;; ───────────────────────────────────────────────────────────────────────────── -;; 17. Build summary -;; ───────────────────────────────────────────────────────────────────────────── - -(z/log-separator "Build summary") - -(let* ((elapsed (- (float-time) z/build-start-time)) - (out-dir z/output-root) - (html-files (when (file-directory-p out-dir) - (length (directory-files-recursively out-dir "\\.html\\'")))) - (css-files (when (file-directory-p out-dir) - (length (directory-files-recursively out-dir "\\.css\\'")))) - (js-files (when (file-directory-p out-dir) - (length (directory-files-recursively out-dir "\\.js\\'")))) - (tag-files (let ((td (output-path "tags/"))) - (when (file-directory-p td) - (length (directory-files td nil "\\.html\\'")))))) - (z/log 'metric "Total elapsed : %.2fs" elapsed) - (z/log 'metric "HTML files output: %d" (or html-files 0)) - (z/log 'metric "CSS files output: %d" (or css-files 0)) - (z/log 'metric "JS files output: %d" (or js-files 0)) - (z/log 'metric "Tag pages output: %d" (or tag-files 0)) - (z/log 'done "Build complete ✓")) +(require 'build-core) + +(z/bootstrap-packages) +(z/configure-org) + +(dolist (library '(recently-updated + tags + sidenotes + sitemaps + build-assets + build-comments + build-html + build-lima + build-projects + build-runner)) + (z/require-local library)) + +(z/configure-publish-projects) +(z/run-build) ;;; build-site.el ends here diff --git a/home/guide/setup.org b/home/guide/setup.org index 8fe8be3..39c3d7b 100755 --- a/home/guide/setup.org +++ b/home/guide/setup.org @@ -197,9 +197,6 @@ The script is as follows, at the start I have some metadata relating to the file (classes (delq nil (list - (when (and input-file - (z/wip-file-p input-file)) - "wip") (when (and input-file (z/no-sidenotes-file-p input-file)) "no-sidenotes"))))) @@ -339,25 +336,6 @@ The script is as follows, at the start I have some metadata relating to the file :sitemap-sort-files anti-chronologically :html-head ,z-shared-head ) - ("wip-pages" - :base-directory "~/master-folder/org-platform/org_web/" - :publishing-directory "~/master-folder/org-platform/org_web/output/" - :recursive t - :base-extension "org" - :publishing-function z/z-publish-to-html - :with-author nil - :with-creator nil - :html-validation-link nil - :html-preamble ,z-preamble - :html-postamble ,z-postamble - :auto-sitemap t - :sitemap-filename "wip.org" - :sitemap-title "Work in progress" - :sitemap-style list - :sitemap-function z/wip-sitemap - :sitemap-sort-files anti-chronologically - :html-head ,z-shared-head - ) ("org-tags" :base-directory "~/master-folder/org-platform/org_web/tags" :publishing-directory "~/master-folder/org-platform/org_web/output/tags" diff --git a/lisp/build-assets.el b/lisp/build-assets.el new file mode 100644 index 0000000..c0521c2 --- /dev/null +++ b/lisp/build-assets.el @@ -0,0 +1,78 @@ +;;; build-assets.el --- Asset URLs and publishing helpers -*- lexical-binding: t; -*- + +;;; Code: + +(defun z/asset-version (path) + "Return a cache-busting version string for asset PATH under `z/site-root'." + (let* ((file (site-path path)) + (attrs (and (file-exists-p file) (file-attributes file))) + (mtime (and attrs (file-attribute-modification-time attrs))) + (size (and attrs (file-attribute-size attrs)))) + (if (and mtime size) + (format "%x-%x" (floor (float-time mtime)) size) + (format "%x" (floor z/build-start-time))))) + +(defun z/asset-url (path) + "Return root-relative asset PATH with a deterministic cache-busting query." + (format "/%s?v=%s" path (z/asset-version path))) + +(defvar z/shared-head + (concat + "\n" + (mapconcat + (lambda (f) + (format "" + (z/asset-url (format "assets/styles/%s" f)))) + '("style.css" + "bigger-picture.min.css" + "comments.css" + "kanban.css" + "org-syntax.css" + "misc.css" + "media.css" + "wird-tracker.css" + "zhd.css" + "play.css" + "hidden-details.css") + "\n") + "\n" + (mapconcat + (lambda (f) + (format "" + (z/asset-url (format "assets/scripts/%s" f)))) + '("script.js" + "lunr.js" + "competency-status-board.js" + "notes.js" + "comments.js" + "bigger-picture.min.js" + "search.js" + "svg-pan-zoom.min.js" + "gallery-init.js" + "sitemap-interactive.js" + "wird-tracker.js" + "zhd.js" + "play.js" + "ash-below-lake.js" + "hidden-details.js") + "\n") + (format "" + (z/asset-url "assets/scripts/mermaid.min.js"))) + "Shared HTML fragment injected into every page.") + +(defun z/sync-assets-to-output () + "Copy assets/ into the configured output assets directory, overwriting stale files." + (let ((source-root (site-path "assets/")) + (target-root (output-path "assets/"))) + (when (file-directory-p source-root) + (dolist (file (directory-files-recursively source-root ".*" nil)) + (unless (file-directory-p file) + (let* ((rel (file-relative-name file source-root)) + (target (expand-file-name rel target-root))) + (make-directory (file-name-directory target) t) + (copy-file file target t t t t))))))) + +(provide 'build-assets) + +;;; build-assets.el ends here diff --git a/lisp/build-comments.el b/lisp/build-comments.el new file mode 100644 index 0000000..8912622 --- /dev/null +++ b/lisp/build-comments.el @@ -0,0 +1,103 @@ +;;; build-comments.el --- Comment manifest and export filter -*- lexical-binding: t; -*- + +;;; Code: + +(require 'cl-lib) +(require 'json) +(require 'org) + +(defun z/comments-file-p (file) + "Return non-nil if FILE has #+COMMENTS: t." + (when (and file (file-exists-p file)) + (with-temp-buffer + (insert-file-contents file) + (org-mode) + (let* ((keywords (org-collect-keywords '("COMMENTS"))) + (val (cadr (assoc "COMMENTS" keywords)))) + (and val + (string-match-p "^\\s-*t\\s-*$" (downcase val))))))) + +(defun z/comments-file-slug (file) + "Return page slug from #+SLUG: or fallback to filename base." + (with-temp-buffer + (insert-file-contents file) + (org-mode) + (let* ((keywords (org-collect-keywords '("SLUG"))) + (slug (cadr (assoc "SLUG" keywords)))) + (if (and slug (string-match-p "\\S-" slug)) + slug + (file-name-base file))))) + +(defun z/comment-page-url (file) + "Return root-relative published HTML URL for source FILE." + (concat "/" + (file-name-sans-extension + (file-relative-name file z/site-root)) + ".html")) + +(defun z/comment-page-title (file) + "Return exported page title for FILE, or the file basename." + (with-temp-buffer + (insert-file-contents file nil 0 4096) + (goto-char (point-min)) + (if (re-search-forward "^#\\+TITLE:[ \t]*\\(.+?\\)[ \t]*$" nil t) + (match-string 1) + (file-name-base file)))) + +(defun z/comment-page-record (file) + "Return a JSON-ready comment page record for FILE." + `((slug . ,(z/comments-file-slug file)) + (title . ,(z/comment-page-title file)) + (url . ,(z/comment-page-url file)))) + +(defun z/generate-comment-pages-json () + "Write a slug-to-page manifest for comment-enabled Org files." + (let* ((files (directory-files-recursively z/site-root "\\.org\\'")) + (records + (cl-loop for file in files + unless (or (string-prefix-p (site-path "output/") file) + (string-prefix-p (site-path "backups/") file) + (string-prefix-p (site-path ".org-timestamps/") file) + (string-prefix-p (site-path ".packages/") file)) + when (z/comments-file-p file) + collect (z/comment-page-record file))) + (target (site-path "assets/content/comment-pages.json")) + (json-encoding-pretty-print t)) + (make-directory (file-name-directory target) t) + (with-temp-file target + (insert (json-encode (vconcat records))) + (insert "\n")) + (z/log 'done "Wrote comment page manifest (%d pages)" (length records)))) + +(defun z/org-html-insert-comments-into-body (body backend info) + "Append a comments section to BODY for files that opt in." + (if (org-export-derived-backend-p backend 'html) + (let ((input-file (plist-get info :input-file))) + (if (and input-file (z/comments-file-p input-file)) + (let* ((slug (z/comments-file-slug input-file)) + (html (format + "\n
+

Comments

+
+ +
+
+ + + +
+
\n" + slug))) + (concat body html)) + body)) + body)) + +(provide 'build-comments) + +;;; build-comments.el ends here diff --git a/lisp/build-core.el b/lisp/build-core.el new file mode 100644 index 0000000..3892b81 --- /dev/null +++ b/lisp/build-core.el @@ -0,0 +1,102 @@ +;;; build-core.el --- Build bootstrap and logging -*- lexical-binding: t; -*- + +;;; Code: + +(require 'package) + +(defconst z/colour-reset "\033[0m") +(defconst z/colour-bold "\033[1m") +(defconst z/colour-dim "\033[2m") +(defconst z/colour-green "\033[32m") +(defconst z/colour-yellow "\033[33m") +(defconst z/colour-cyan "\033[36m") +(defconst z/colour-red "\033[31m") +(defconst z/colour-blue "\033[34m") +(defconst z/colour-magenta "\033[35m") + +(defun z/log (level fmt &rest args) + "Emit a coloured build-log line. +LEVEL is one of: info warn error step metric done. +FMT and ARGS are passed to `format'." + (let* ((msg (apply #'format fmt args)) + (prefix + (pcase level + ('info (concat z/colour-cyan " INFO " z/colour-reset)) + ('warn (concat z/colour-yellow " WARN " z/colour-reset)) + ('error (concat z/colour-red " ERROR " z/colour-reset)) + ('step (concat z/colour-blue z/colour-bold " ---- " z/colour-reset)) + ('metric (concat z/colour-magenta " * " z/colour-reset)) + ('done (concat z/colour-green z/colour-bold " OK " z/colour-reset)) + (_ " ")))) + (message "%s%s" prefix msg))) + +(defun z/log-separator (&optional label) + "Print a separator line, optionally with LABEL." + (if label + (message "%s%s-- %s %s%s" + z/colour-dim z/colour-bold label + (make-string (max 0 (- 60 (length label))) ?-) + z/colour-reset) + (message "%s%s%s" + z/colour-dim + (make-string 66 ?-) + z/colour-reset))) + +(defmacro z/with-timing (label &rest body) + "Execute BODY, then log elapsed seconds under LABEL." + (declare (indent 1)) + (let ((t0 (gensym "t0"))) + `(let ((,t0 (float-time))) + (prog1 (progn ,@body) + (z/log 'metric "%s took %.2fs" ,label (- (float-time) ,t0)))))) + +(defun z/bootstrap-packages () + "Set up Emacs packages required by the build." + (z/log-separator "Package setup") + (setq package-user-dir (site-path ".packages")) + (setq package-archives + '(("melpa" . "https://melpa.org/packages/") + ("elpa" . "https://elpa.gnu.org/packages/"))) + (package-initialize) + (z/with-timing "Package archive refresh" + (unless package-archive-contents + (z/log 'info "Refreshing package archive contents...") + (condition-case err + (package-refresh-contents) + (error + (z/log 'warn "Could not refresh archives: %s" (error-message-string err)))))) + (z/with-timing "htmlize install" + (unless (package-installed-p 'htmlize) + (z/log 'info "Installing htmlize...") + (condition-case err + (package-install 'htmlize) + (error + (z/log 'error "htmlize install failed: %s" (error-message-string err)) + (error "Cannot continue without htmlize"))))) + (require 'htmlize)) + +(defun z/configure-org () + "Load Org export libraries and configure shared Org settings." + (require 'ox-publish) + (require 'cl-lib) + (require 'json) + (require 'org) + (require 'ox) + (require 'ox-html) + (require 'ox-md) + (setq org-publish-timestamp-directory (site-path ".org-timestamps/")) + (setq org-html-htmlize-output-type 'css)) + +(defun z/require-local (library) + "Require local build LIBRARY with consistent error reporting." + (condition-case err + (progn + (require library) + (z/log 'done "Loaded %s" library)) + (error + (z/log 'error "Failed to load %s: %s" library (error-message-string err)) + (error "Aborting: required library %s missing" library)))) + +(provide 'build-core) + +;;; build-core.el ends here diff --git a/lisp/build-html.el b/lisp/build-html.el new file mode 100644 index 0000000..cad9367 --- /dev/null +++ b/lisp/build-html.el @@ -0,0 +1,113 @@ +;;; build-html.el --- HTML export customisation -*- lexical-binding: t; -*- + +;;; Code: + +(require 'org) +(require 'ox-html) +(require 'subr-x) +(require 'tags) +(require 'sidenotes) +(require 'build-comments) + +(setq org-export-global-macros + (append + org-export-global-macros + '(("sidenote" + . "@@html:\ +\ +$2@@") + ("epigraph" + . "@@html:
$1
$2
@@") + ("epigraph_single" + . "@@html:
$1
@@") + ("epigraph3" + . "@@html:
$1
$2, $3
@@") + ("kbd" + . "@@html:$1@@@@latex:\\texttt{$1}@@") + ("margimg" + . "@@html:@@") + ("countdown" + . "@@html:@@")))) + +(defvar z/preamble + "
+ + \"\" + zxh + + +
+ + + +
+
+
Updated: %C
+") + +(defvar z/postamble + "
+
+
+Copyright © 2022-2026 Zaine Qayyum. All rights reserved unless otherwise noted.
+
+Created with %c on Arch \ +GNU/Linux +
+
") + +(defun z/org-html-src-block-mermaid (orig-fun src-block contents info) + "Export Mermaid source blocks as Mermaid divs." + (let ((lang (org-element-property :language src-block))) + (if (string= lang "mermaid") + (let ((code (org-remove-indentation + (org-element-property :value src-block)))) + (format "
\n%s\n
" code)) + (funcall orig-fun src-block contents info)))) + +(advice-add 'org-html-src-block :around #'z/org-html-src-block-mermaid) + +(defun z/org-html-add-body-classes (output backend info) + "Add layout-related classes to based on file metadata." + (if (org-export-derived-backend-p backend 'html) + (let* ((input-file (plist-get info :input-file)) + (classes + (delq nil + (list + (when (and input-file (z/no-sidenotes-file-p input-file)) + "no-sidenotes"))))) + (if classes + (replace-regexp-in-string + "]*\\)>" + (format "" + (string-join classes " ")) + output) + output)) + output)) + +(add-to-list 'org-export-filter-final-output-functions + #'z/org-html-add-body-classes) +(add-to-list 'org-export-filter-body-functions + #'z/org-html-insert-comments-into-body) + +(org-export-define-derived-backend 'z-html 'html + :filters-alist '((:filter-final-output . z/insert-filetags-after-title))) + +(defun z/z-publish-to-html (plist filename pub-dir) + "Publish FILENAME to HTML using the z-html backend." + (org-publish-org-to 'z-html filename ".html" plist pub-dir)) + +(provide 'build-html) + +;;; build-html.el ends here diff --git a/lisp/build-lima.el b/lisp/build-lima.el new file mode 100644 index 0000000..0acd182 --- /dev/null +++ b/lisp/build-lima.el @@ -0,0 +1,89 @@ +;;; build-lima.el --- Lima publishing adapter -*- lexical-binding: t; -*- + +;;; Code: + +(require 'org) +(require 'ox-publish) + +(defun z/lima-entry-title (file fallback) + "Return FILE's Org title, or FALLBACK when no title is present." + (with-temp-buffer + (insert-file-contents file nil 0 4096) + (goto-char (point-min)) + (if (re-search-forward "^#\\+TITLE:[ \t]*\\(.+?\\)[ \t]*$" nil t) + (match-string 1) + fallback))) + +(defun z/lima-sitemap-format-entry (entry _style project) + "Format a sitemap ENTRY for Lima; skip directories." + (let* ((file (if (listp entry) (car entry) entry)) + (base-dir (file-name-as-directory + (org-publish-property :base-directory project))) + (abs (if (file-name-absolute-p file) + file + (expand-file-name file base-dir)))) + (unless (file-directory-p abs) + (let* ((rel (file-relative-name abs base-dir)) + (rel-noext (file-name-sans-extension rel)) + (title (z/lima-entry-title abs (file-name-nondirectory rel-noext)))) + (format "[[file:%s.html][%s]]" + rel-noext + title))))) + +(defun z/copy-neighbor-attachments (source-dir pub-dir) + "Copy sibling .attachments.* directories from SOURCE-DIR into PUB-DIR." + (dolist (d (directory-files source-dir t "^\\.attachments\\..+")) + (when (file-directory-p d) + (let ((target (expand-file-name (file-name-nondirectory d) pub-dir))) + (make-directory target t) + (copy-directory d target t t t))))) + +(defun z/markdown-h1-title (filename fallback) + "Return the first Markdown H1 title in FILENAME, or FALLBACK." + (with-temp-buffer + (insert-file-contents filename nil 0 4096) + (goto-char (point-min)) + (if (re-search-forward "^#+ +\\(.+?\\)\\s-*$" nil t) + (match-string 1) + fallback))) + +(defun z/publish-lima-file (plist filename pub-dir) + "Publish an Org or Markdown file from the lima directory." + (let* ((ext (downcase (or (file-name-extension filename) ""))) + (base (file-name-base filename)) + (src-dir (file-name-directory filename))) + (cond + ((string= ext "org") + (z/copy-neighbor-attachments src-dir pub-dir) + (org-publish-org-to 'z-html filename ".html" plist pub-dir)) + ((string= ext "md") + (let* ((tmp-dir (make-temp-file "lima-build-" t)) + (temp-org (expand-file-name (concat base ".org") tmp-dir))) + (let ((rc (call-process "pandoc" nil nil nil + filename "-f" "markdown" "-t" "org" "-o" temp-org))) + (unless (zerop rc) + (z/log 'error "pandoc failed (rc=%d) for %s" rc filename) + (error "pandoc conversion failed for %s" filename))) + (with-temp-buffer + (insert-file-contents temp-org) + (goto-char (point-min)) + (insert (format "#+TITLE: %s\n#+OPTIONS: num:nil\n#+DATE: %s\n#+COMMENTS: t\n#+SLUG: %s\n\n" + (z/markdown-h1-title filename base) + (format-time-string "<%Y-%m-%d %a %H:%M>") + base)) + (write-region (point-min) (point-max) temp-org)) + (z/copy-neighbor-attachments src-dir pub-dir) + (let ((output-file (expand-file-name (concat base ".html") pub-dir))) + (org-publish-org-to 'z-html temp-org ".html" plist pub-dir) + (let ((generated (expand-file-name + (concat (file-name-base temp-org) ".html") + pub-dir))) + (when (and (file-exists-p generated) + (not (string-equal generated output-file))) + (rename-file generated output-file t)))))) + (t + (org-publish-attachment plist filename pub-dir))))) + +(provide 'build-lima) + +;;; build-lima.el ends here diff --git a/lisp/build-projects.el b/lisp/build-projects.el new file mode 100644 index 0000000..25df9cb --- /dev/null +++ b/lisp/build-projects.el @@ -0,0 +1,139 @@ +;;; build-projects.el --- org-publish project configuration -*- lexical-binding: t; -*- + +;;; Code: + +(require 'ox-publish) + +(defun z/org-main-prep (_project) + "Pre-publish hook: regenerate recently-updated.org." + (z/log 'step "Generating recently-updated.org...") + (z/with-timing "recently-updated generation" + (z/generate-recently-updated-org 26))) + +(defun z/configure-publish-projects () + "Install `org-publish-project-alist' for the site." + (setq org-publish-project-alist + `(("org-main" + :recursive t + :base-directory ,(site-path "") + :publishing-function z/z-publish-to-html + :publishing-directory ,(output-path "") + :base-extension "org" + :auto-sitemap t + :sitemap-filename "sitemap.org" + :sitemap-title "Sitemap" + :sitemap-function z/main-sitemap + :sitemap-sort-files chronologically + :html-preamble ,z/preamble + :html-postamble ,z/postamble + :html-head ,z/shared-head + :preparation-function z/org-main-prep) + + ("org-assets" + :base-directory ,(site-path "assets/") + :base-extension "css\\|js\\|png\\|jpg\\|jpeg\\|gif\\|webp\\|svg\\|pdf\\|mp4\\|webm\\|mov\\|woff\\|woff2\\|ttf" + :publishing-directory ,(output-path "assets/") + :recursive t + :publishing-function org-publish-attachment) + + ("org-categories-sitemap" + :recursive t + :base-directory ,(site-path "home/") + :publishing-directory ,(output-path "home/") + :base-extension "org" + :auto-sitemap t + :sitemap-filename "categories.org" + :sitemap-title "Categories" + :sitemap-function z/categories-sitemap + :html-preamble ,z/preamble + :html-postamble ,z/postamble + :html-head ,z/shared-head) + + ("org-posts" + :base-directory ,(site-path "posts/") + :publishing-directory ,(output-path "posts/") + :recursive t + :base-extension "org" + :publishing-function z/z-publish-to-html + :with-author nil + :with-creator nil + :html-validation-link nil + :with-toc t + :section-numbers t + :html-preamble ,z/preamble + :html-postamble ,z/postamble + :auto-sitemap t + :sitemap-filename "posts-list.org" + :sitemap-title "Posts List" + :sitemap-style list + :sitemap-function z/posts-sitemap + :sitemap-sort-files anti-chronologically + :html-head ,z/shared-head) + + ("org-blogs" + :base-directory ,(site-path "blogs/") + :publishing-directory ,(output-path "blogs/") + :recursive t + :base-extension "org" + :publishing-function z/z-publish-to-html + :with-author nil + :with-creator nil + :html-validation-link nil + :html-preamble ,z/preamble + :html-postamble ,z/postamble + :auto-sitemap t + :sitemap-filename "blogs-list.org" + :sitemap-title "Blogs List" + :sitemap-style list + :sitemap-function z/blogs-grouped-sitemap + :sitemap-sort-files anti-chronologically + :html-head ,z/shared-head) + + ("org-career" + :base-directory ,(site-path "posts/career/") + :publishing-directory ,(output-path "posts/career/") + :recursive t + :base-extension "org" + :publishing-function z/z-publish-to-html + :html-preamble ,z/preamble + :html-postamble ,z/postamble + :auto-sitemap t + :sitemap-filename "career-list.org" + :sitemap-title "Career List" + :sitemap-style list + :sitemap-function z/career-sitemap + :sitemap-sort-files anti-chronologically + :html-head ,z/shared-head) + + ("org-tags" + :base-directory ,(site-path "tags/") + :publishing-directory ,(output-path "tags/") + :recursive t + :base-extension "org" + :publishing-function org-html-publish-to-html + :html-preamble ,z/preamble + :html-postamble ,z/postamble + :html-head ,z/shared-head) + + ("org-lima" + :base-directory ,(site-path "lima/") + :publishing-directory ,(output-path "lima/") + :recursive t + :base-extension "org\\|md" + :publishing-function z/publish-lima-file + :with-author nil + :with-creator nil + :html-validation-link nil + :html-preamble ,z/preamble + :html-postamble ,z/postamble + :sitemap-filename "lima-list.org" + :auto-sitemap t + :sitemap-title "Lima" + :sitemap-style list + :sitemap-sort-files anti-chronologically + :sitemap-format-entry z/lima-sitemap-format-entry + :html-head ,z/shared-head)))) + +(provide 'build-projects) + +;;; build-projects.el ends here diff --git a/lisp/build-runner.el b/lisp/build-runner.el new file mode 100644 index 0000000..7ee0fdc --- /dev/null +++ b/lisp/build-runner.el @@ -0,0 +1,120 @@ +;;; build-runner.el --- Build orchestration -*- lexical-binding: t; -*- + +;;; Code: + +(require 'ox-publish) + +(defun z/wipe-build-dirs () + "Delete output/ and .org-timestamps/ together." + (dolist (dir (list z/output-root + (site-path ".org-timestamps/"))) + (if (file-directory-p dir) + (progn + (z/with-timing (format "delete %s" + (file-name-nondirectory + (directory-file-name dir))) + (delete-directory dir t)) + (z/log 'done "Deleted %s" dir)) + (z/log 'info "Already absent: %s" dir)))) + +(defun z/output-integrity-ok-p () + "Return t if critical output paths all exist." + (let ((missing '())) + (unless (file-directory-p (output-path "assets/")) + (push "output/assets/" missing)) + (unless (or (file-exists-p (output-path "index.html")) + (file-exists-p (output-path "sitemap.html"))) + (push "output/index.html (or sitemap.html)" missing)) + (dolist (m missing) + (z/log 'warn "Integrity check: missing %s" m)) + (null missing))) + +(defun z/prepare-output-cache () + "Keep org-publish output and timestamp cache in sync." + (z/log-separator "Pre-build") + (z/log 'info "Site source root : %s" z/site-root) + (z/log 'info "Site output root : %s" z/output-root) + (cond + ((getenv "SITE_CLEAN") + (z/log 'warn "SITE_CLEAN=1 - wiping output/ and .org-timestamps/") + (z/wipe-build-dirs) + (setenv "SITE_FORCE" "1")) + ((not (z/output-integrity-ok-p)) + (z/log 'warn "Output integrity check failed - timestamp cache is stale") + (z/log 'warn "Clearing .org-timestamps/ and forcing full republish") + (let ((ts-dir (site-path ".org-timestamps/"))) + (when (file-directory-p ts-dir) + (z/with-timing "delete .org-timestamps" + (delete-directory ts-dir t)) + (z/log 'done "Deleted .org-timestamps/"))) + (setenv "SITE_FORCE" "1")) + (t + (z/log 'info "Incremental build - output/ looks complete")))) + +(defun z/generate-build-inputs () + "Generate source-side data files required before publishing." + (z/log-separator "Generated inputs") + (z/with-timing "tag page generation" + (condition-case err + (let ((n (z/write-tag-pages))) + (z/log 'done "Tag pages written%s" + (if (numberp n) (format " (%d tags)" n) ""))) + (error + (z/log 'error "Tag generation failed: %s" (error-message-string err)) + (error "Aborting build: tag generation error")))) + (z/with-timing "comment page manifest" + (condition-case err + (z/generate-comment-pages-json) + (error + (z/log 'error "Comment page manifest failed: %s" (error-message-string err)) + (error "Aborting build: comment page manifest error"))))) + +(defun z/publish-site () + "Publish the configured site." + (z/log-separator "Publishing") + (if (getenv "SITE_DRY") + (z/log 'warn "SITE_DRY=1 - skipping org-publish-all (dry run)") + (let ((force (not (not (getenv "SITE_FORCE"))))) + (when force + (z/log 'info "SITE_FORCE=1 - forcing republish of all files")) + (condition-case err + (progn + (z/with-timing "org-publish-all" + (org-publish-all force)) + (z/with-timing "asset sync" + (z/sync-assets-to-output))) + (error + (z/log 'error "org-publish-all failed: %s" (error-message-string err)) + (error "Build failed")))))) + +(defun z/log-build-summary () + "Log a summary of output artifacts." + (z/log-separator "Build summary") + (let* ((elapsed (- (float-time) z/build-start-time)) + (out-dir z/output-root) + (html-files (when (file-directory-p out-dir) + (length (directory-files-recursively out-dir "\\.html\\'")))) + (css-files (when (file-directory-p out-dir) + (length (directory-files-recursively out-dir "\\.css\\'")))) + (js-files (when (file-directory-p out-dir) + (length (directory-files-recursively out-dir "\\.js\\'")))) + (tag-files (let ((td (output-path "tags/"))) + (when (file-directory-p td) + (length (directory-files td nil "\\.html\\'")))))) + (z/log 'metric "Total elapsed : %.2fs" elapsed) + (z/log 'metric "HTML files output: %d" (or html-files 0)) + (z/log 'metric "CSS files output: %d" (or css-files 0)) + (z/log 'metric "JS files output: %d" (or js-files 0)) + (z/log 'metric "Tag pages output: %d" (or tag-files 0)) + (z/log 'done "Build complete"))) + +(defun z/run-build () + "Run the full site build." + (z/prepare-output-cache) + (z/generate-build-inputs) + (z/publish-site) + (z/log-build-summary)) + +(provide 'build-runner) + +;;; build-runner.el ends here diff --git a/lisp/recently-updated.el b/lisp/recently-updated.el index 713b729..be13050 100755 --- a/lisp/recently-updated.el +++ b/lisp/recently-updated.el @@ -20,8 +20,7 @@ (defconst z/recent-omit-names '("sitemap.org" "categories.org" - "recently-updated.org" - "wip.org") + "recently-updated.org") "Org files that are always excluded from the recently-updated list.") (defun z/recent-omit-org-p (rel-org) diff --git a/lisp/sitemaps.el b/lisp/sitemaps.el index 98c4f1f..d8eb064 100755 --- a/lisp/sitemaps.el +++ b/lisp/sitemaps.el @@ -351,59 +351,6 @@ CATEGORIES-REL is the relative href to categories.html." "\n") "_No tags found yet._"))))) -;; ───────────────────────────────────────────────────────────────────────────── -;; WIP sitemap -;; ───────────────────────────────────────────────────────────────────────────── - -(defun z/wip-file-p (file) - "Return non-nil if FILE is marked as work-in-progress. - -A file is WIP when any of the following is true: - - It has a #+WIP: keyword with a non-empty value. - - Its FILETAGS contain :WIP:. - - Any top-level heading contains \"WIP\" (case-insensitive)." - (when (file-exists-p file) - (with-temp-buffer - (insert-file-contents file) - (org-mode) - (let* ((case-fold-search t) - (keywords (org-collect-keywords '("WIP" "FILETAGS"))) - (wip (cadr (assoc "WIP" keywords))) - (filetags (cadr (assoc "FILETAGS" keywords)))) - (or - (and wip (string-match-p "\\S-" wip)) - (and filetags (string-match-p ":WIP:" (concat ":" filetags ":"))) - (save-excursion - (goto-char (point-min)) - (re-search-forward "^\\*+ .*WIP.*" nil t))))))) - -(defun z/wip-sitemap (title list) - "Sitemap listing only entries whose source files are marked WIP." - (let ((items - (delq nil - (mapcar - (lambda (entry) - (when (consp entry) - (let* ((link (car entry)) - (filename (if (string-match "\\[\\[file:\\([^]]+\\)\\]" link) - (match-string 1 link) - link)) - (full-path (expand-file-name filename z/site-root))) - (when (z/wip-file-p full-path) - (let* ((date (org-publish-find-date full-path org-publish-project-alist)) - (date-str (if date - (format-time-string "%d-%m-%Y %H:%M" date) - ""))) - (format "- %s @@html:%s@@" - link date-str)))))) - (cdr list))))) - (concat "#+TITLE: " title "\n" - "#+OPTIONS: toc:nil num:nil\n\n" - "* Work in progress\n" - (if items - (mapconcat #'identity items "\n") - "No items currently marked as WIP.\n")))) - (provide 'sitemaps) ;;; sitemaps.el ends here diff --git a/lisp/tags.el b/lisp/tags.el index 8ef7969..36b4520 100755 --- a/lisp/tags.el +++ b/lisp/tags.el @@ -33,7 +33,7 @@ (defconst z/generated-org-names '("posts-list.org" "blogs-list.org" "sitemap.org" "categories.org" - "recently-updated.org" "wip.org") + "recently-updated.org") "Generated Org files that should never be indexed for tags.") (defun z/gather-tag-index () @@ -112,4 +112,4 @@ Returns the number of tag pages written." (provide 'tags) -;;; tags.el ends here \ No newline at end of file +;;; tags.el ends here diff --git a/build-site-tests.el b/lisp/tests/build-site-tests.el old mode 100755 new mode 100644 similarity index 80% rename from build-site-tests.el rename to lisp/tests/build-site-tests.el index 0065442..4175952 --- a/build-site-tests.el +++ b/lisp/tests/build-site-tests.el @@ -1,15 +1,49 @@ -;;; build-site-tests.el --- ERT unit tests for build-site.el -*- lexical-binding: t; -*- +;;; build-site-tests.el --- ERT unit tests for build modules -*- lexical-binding: t; -*- ;; Run with: -;; emacs -Q --batch -l build-site.el -l build-site-tests.el -f ert-run-tests-batch-and-exit +;; emacs -Q --batch -l lisp/tests/build-site-tests.el -f ert-run-tests-batch-and-exit ;; Or interactively: -;; M-x load-file RET build-site-tests.el RET +;; M-x load-file RET lisp/tests/build-site-tests.el RET ;; M-x ert RET t RET ;;; Code: +(defconst z/test-root + (file-name-directory + (directory-file-name + (file-name-directory + (directory-file-name + (file-name-directory (or load-file-name buffer-file-name))))))) + +(defconst z/build-start-time (float-time)) +(defconst z/site-root (file-name-as-directory z/test-root)) +(defvaralias 'site-root 'z/site-root) +(defconst z/output-root (file-name-as-directory (expand-file-name "output/" z/site-root))) + +(defun site-path (path) + "Expand PATH relative to test `z/site-root'." + (expand-file-name path z/site-root)) + +(defun output-path (path) + "Expand PATH relative to test `z/output-root'." + (expand-file-name path z/output-root)) + +(add-to-list 'load-path (site-path "lisp")) + (require 'ert) +(require 'cl-lib) (require 'org) +(require 'build-core) + +(z/configure-org) +(require 'recently-updated) +(require 'tags) +(require 'sidenotes) +(require 'sitemaps) +(require 'build-assets) +(require 'build-comments) +(require 'build-html) +(require 'build-lima) ;; ── Helpers ────────────────────────────────────────────────────────────────── @@ -110,15 +144,11 @@ (should (string= "
body
" result))))) (ert-deftest test/insert-comments-ignores-non-html-backends () - "For non-HTML backends the function currently returns nil (known bug: -`when' has no else branch so the body string is not passed through). -Fix: change `when' to `if' with body as the else clause. -This test documents current behaviour; flip the should once fixed." + "For non-HTML backends the body should pass through unchanged." (with-temp-org-file "#+TITLE: Test\n#+COMMENTS: t\n\nBody.\n" (let* ((info (list :input-file temp-file)) (result (z/org-html-insert-comments-into-body "
body
" 'latex info))) - ;; BUG: should be (should (string= "
body
" result)) - (should (null result))))) + (should (string= "
body
" result))))) (ert-deftest test/insert-comments-handles-nil-input-file () "Should return body unchanged when :input-file is nil." @@ -201,62 +231,34 @@ This test documents current behaviour; flip the should once fixed." (delete-directory pub-dir t)))) ;; ── z/org-html-add-body-classes ────────────────────────────────────────────── -;; These tests stub out z/wip-file-p and z/no-sidenotes-file-p so they run -;; without the full site infrastructure loaded. - -(ert-deftest test/add-body-classes-adds-wip-class () - "Should add class=\"wip\" to when z/wip-file-p is t." - (with-temp-org-file "#+TITLE: WIP page\n\nContent.\n" - (cl-letf (((symbol-function 'z/wip-file-p) (lambda (_) t)) - ((symbol-function 'z/no-sidenotes-file-p) (lambda (_) nil))) - (let* ((info (list :input-file temp-file)) - (output "

hello

") - (result (z/org-html-add-body-classes output 'html info))) - (should (string-match-p "class=\"wip\"" result)))))) +;; These tests stub out z/no-sidenotes-file-p so they run without depending on +;; full site metadata. (ert-deftest test/add-body-classes-adds-no-sidenotes-class () "Should add class=\"no-sidenotes\" when z/no-sidenotes-file-p is t." (with-temp-org-file "#+TITLE: No sidenotes\n\nContent.\n" - (cl-letf (((symbol-function 'z/wip-file-p) (lambda (_) nil)) - ((symbol-function 'z/no-sidenotes-file-p) (lambda (_) t))) + (cl-letf (((symbol-function 'z/no-sidenotes-file-p) (lambda (_) t))) (let* ((info (list :input-file temp-file)) (output "

hello

") (result (z/org-html-add-body-classes output 'html info))) (should (string-match-p "class=\"no-sidenotes\"" result)))))) -(ert-deftest test/add-body-classes-combines-multiple-classes () - "Both wip and no-sidenotes classes should appear when both predicates are t." - (with-temp-org-file "#+TITLE: Both\n\nContent.\n" - (cl-letf (((symbol-function 'z/wip-file-p) (lambda (_) t)) - ((symbol-function 'z/no-sidenotes-file-p) (lambda (_) t))) - (let* ((info (list :input-file temp-file)) - (output "

hello

") - (result (z/org-html-add-body-classes output 'html info))) - (should (string-match-p "wip" result)) - (should (string-match-p "no-sidenotes" result)))))) - (ert-deftest test/add-body-classes-unchanged-when-no-classes () "Output should be unmodified when no special classes apply." (with-temp-org-file "#+TITLE: Plain\n\nContent.\n" - (cl-letf (((symbol-function 'z/wip-file-p) (lambda (_) nil)) - ((symbol-function 'z/no-sidenotes-file-p) (lambda (_) nil))) + (cl-letf (((symbol-function 'z/no-sidenotes-file-p) (lambda (_) nil))) (let* ((info (list :input-file temp-file)) (output "

hello

") (result (z/org-html-add-body-classes output 'html info))) (should (string= output result)))))) (ert-deftest test/add-body-classes-ignores-non-html-backend () - "For non-HTML backends the function currently returns nil (known bug: -`when' has no else branch so output is not passed through). -Fix: change `when' to `if' with output as the else clause. -This test documents current behaviour; flip the should once fixed." + "For non-HTML backends the output should pass through unchanged." (with-temp-org-file "#+TITLE: LaTeX\n\nContent.\n" - (cl-letf (((symbol-function 'z/wip-file-p) (lambda (_) t)) - ((symbol-function 'z/no-sidenotes-file-p) (lambda (_) t))) + (cl-letf (((symbol-function 'z/no-sidenotes-file-p) (lambda (_) t))) (let* ((info (list :input-file temp-file)) (output "\\documentclass{article}") (result (z/org-html-add-body-classes output 'latex info))) - ;; BUG: should be (should (string= output result)) - (should (null result)))))) + (should (string= output result)))))) -;;; build-site-tests.el ends here \ No newline at end of file +;;; build-site-tests.el ends here diff --git a/publish-and-push.sh b/publish-and-push.sh deleted file mode 100755 index d4da7f3..0000000 --- a/publish-and-push.sh +++ /dev/null @@ -1,23 +0,0 @@ -#!/bin/bash - -# Exit immediately if any command fails -set -e - -# Define paths -ORG_OUTPUT_DIR="$HOME/master-folder/org-platform/org_web/output" - -cd "$ORG_OUTPUT_DIR" - -echo "HTML published to: $ORG_OUTPUT_DIR" - -# Git commands -echo "Adding changes to Git..." -git add . - -echo "Committing..." -git commit -m "Auto-publish on $(date)" || echo "Nothing to commit." - -echo "Pushing to GitHub..." -git push origin main - -echo "Done! Changes pushed and Cloudflare should rebuild the site." diff --git a/sitemap.org b/sitemap.org index dfc0b9a..c603bd0 100755 --- a/sitemap.org +++ b/sitemap.org @@ -8,8 +8,6 @@ flowchart TD root --> n1 n2["Play"] root --> n2 - n3["Work in progress"] - root --> n3 n4["Recently Updated"] root --> n4 n9{{"blogs"}} @@ -156,7 +154,6 @@ flowchart TD n67 --> n79 click n1 "index.html" "Home" click n2 "play.html" "Play" - click n3 "wip.html" "Work in progress" click n4 "recently-updated.html" "Recently Updated" click n10 "blogs/blogs-intro.html" "Blogs Introduction" click n11 "blogs/publish-pages.html" "How to publish pages using Org Publish" @@ -226,7 +223,6 @@ flowchart TD * Pages - [[file:index.org][Home]] - [[file:play.org][Play]] -- [[file:wip.org][Work in progress]] - [[file:recently-updated.org][Recently Updated]] - blogs - [[file:blogs/blogs-intro.org][Blogs Introduction]] diff --git a/wip.org b/wip.org deleted file mode 100755 index deff3ae..0000000 --- a/wip.org +++ /dev/null @@ -1,5 +0,0 @@ -#+TITLE: Work in progress -#+OPTIONS: toc:nil num:nil - -* Work in progress -No items currently marked as WIP. -- 2.49.1 From 53df5b46a3ef8d531670f0320f853fc1d43e1ece Mon Sep 17 00:00:00 2001 From: gitea-actions Date: Wed, 8 Jul 2026 22:14:41 +0100 Subject: [PATCH 3/5] seperating play --- .gitignore | 2 +- .../gitea-build-monitor-cache.json | 0 .../gitea-build-monitor.log | 0 .../gitea-build-monitor.ps1 | 0 .../org-web-build.log | 0 rpg.md => docs/rpg.md | 0 index.org | 2 +- lisp/build-html.el | 2 +- play/aphy-console.org | 24 -------------- play/bookshelf.org | 2 +- play/cassette-log.org | 25 --------------- play/constellation.org | 2 +- play/corrupted-recipe.org | 26 --------------- play/do-not-open.org | 25 --------------- play/dream-corridor.org | 28 ---------------- play/family-layer-index.org | 25 --------------- play/forgotten-draft.org | 24 -------------- play/future-log.org | 24 -------------- play/guestbook-1999.org | 26 --------------- play/ink.org | 2 +- play/kitchen-light.org | 27 ---------------- play/left-behind.org | 32 ------------------- play/lima-note.org | 24 -------------- play/memory.org | 2 +- play/patience-game.org | 23 ------------- play.org => play/play.org | 0 play/poem.org | 2 +- play/radio-room.org | 27 ---------------- play/recipe.org | 2 +- play/rpg.org | 2 +- play/sensei-garden.org | 25 --------------- play/sigil.org | 2 +- play/study.org | 2 +- play/terminal-cupboard.org | 23 ------------- play/terminal.org | 2 +- play/timeline.org | 2 +- play/train-platform.org | 25 --------------- play/young-z-desk.org | 30 ----------------- recently-updated.org | 2 +- sitemap.org | 2 +- 40 files changed, 16 insertions(+), 479 deletions(-) rename gitea-build-monitor-cache.json => build-logs/gitea-build-monitor-cache.json (100%) rename gitea-build-monitor.log => build-logs/gitea-build-monitor.log (100%) rename gitea-build-monitor.ps1 => build-logs/gitea-build-monitor.ps1 (100%) mode change 100755 => 100644 rename org-web-build.log => build-logs/org-web-build.log (100%) mode change 100755 => 100644 rename rpg.md => docs/rpg.md (100%) delete mode 100644 play/aphy-console.org delete mode 100644 play/cassette-log.org delete mode 100644 play/corrupted-recipe.org delete mode 100644 play/do-not-open.org delete mode 100644 play/dream-corridor.org delete mode 100644 play/family-layer-index.org delete mode 100644 play/forgotten-draft.org delete mode 100644 play/future-log.org delete mode 100644 play/guestbook-1999.org delete mode 100644 play/kitchen-light.org delete mode 100644 play/left-behind.org delete mode 100644 play/lima-note.org delete mode 100644 play/patience-game.org rename play.org => play/play.org (100%) delete mode 100644 play/radio-room.org delete mode 100644 play/sensei-garden.org delete mode 100644 play/terminal-cupboard.org delete mode 100644 play/train-platform.org delete mode 100644 play/young-z-desk.org diff --git a/.gitignore b/.gitignore index ad7e950..17656f6 100755 --- a/.gitignore +++ b/.gitignore @@ -1,7 +1,7 @@ .venv/ output/ .org-timestamps/ -backup/ +backups/ __pycache__/ *~ .syncthing*.tmp diff --git a/gitea-build-monitor-cache.json b/build-logs/gitea-build-monitor-cache.json similarity index 100% rename from gitea-build-monitor-cache.json rename to build-logs/gitea-build-monitor-cache.json diff --git a/gitea-build-monitor.log b/build-logs/gitea-build-monitor.log similarity index 100% rename from gitea-build-monitor.log rename to build-logs/gitea-build-monitor.log diff --git a/gitea-build-monitor.ps1 b/build-logs/gitea-build-monitor.ps1 old mode 100755 new mode 100644 similarity index 100% rename from gitea-build-monitor.ps1 rename to build-logs/gitea-build-monitor.ps1 diff --git a/org-web-build.log b/build-logs/org-web-build.log old mode 100755 new mode 100644 similarity index 100% rename from org-web-build.log rename to build-logs/org-web-build.log diff --git a/rpg.md b/docs/rpg.md similarity index 100% rename from rpg.md rename to docs/rpg.md diff --git a/index.org b/index.org index 5d75529..d297700 100755 --- a/index.org +++ b/index.org @@ -67,7 +67,7 @@ Sitemap map - + Play lab diff --git a/lisp/build-html.el b/lisp/build-html.el index cad9367..c8cd122 100644 --- a/lisp/build-html.el +++ b/lisp/build-html.el @@ -41,7 +41,7 @@ Home Blogs Career - Play + Play Dashboard
diff --git a/play/aphy-console.org b/play/aphy-console.org deleted file mode 100644 index da3543a..0000000 --- a/play/aphy-console.org +++ /dev/null @@ -1,24 +0,0 @@ -#+TITLE: Aphy Console -#+OPTIONS: num:nil title:nil toc:nil -#+NO_SIDENOTES: t -#+HIDDEN_PAGE: t -#+DATE: <2026-05-10 Sun> - -#+BEGIN_EXPORT html -
-
-
-

Layer 3

-

Aphy Console

-

A friendly bot friend embedded in the handmade parts.

-
-
-
-
-

APHY BOOT: hello. I am not the soul of the website. I am more like a porch light with opinions.

-

LOG: Lima grounds the system. Sensei Chi slows it down. Young Z asks why. Future Z answers later.

-

ANOMALY: I keep finding kindness in places where code expected null.

-
-
-
-#+END_EXPORT diff --git a/play/bookshelf.org b/play/bookshelf.org index 3f34919..29fa0c5 100644 --- a/play/bookshelf.org +++ b/play/bookshelf.org @@ -5,7 +5,7 @@ #+BEGIN_EXPORT html
- Back to Play + Back to Play

04 / Puzzle

Bookshelf Sort

diff --git a/play/cassette-log.org b/play/cassette-log.org deleted file mode 100644 index 4a53ee9..0000000 --- a/play/cassette-log.org +++ /dev/null @@ -1,25 +0,0 @@ -#+TITLE: Cassette Log -#+OPTIONS: num:nil title:nil toc:nil -#+NO_SIDENOTES: t -#+HIDDEN_PAGE: t -#+DATE: <2026-05-09 Sat> - -#+BEGIN_EXPORT html -
-
-
-

Audio shelf

-

Cassette Log

-

Transcripts from tapes with labels in three different handwritings.

-
-
-
-
- - - -

The buttons play tiny original tones and reveal transcripts. Nothing starts without being asked.

-
-
-
-#+END_EXPORT diff --git a/play/constellation.org b/play/constellation.org index 0883e16..85dcd0e 100644 --- a/play/constellation.org +++ b/play/constellation.org @@ -5,7 +5,7 @@ #+BEGIN_EXPORT html
- Back to Play + Back to Play

02 / Sketch

Constellation Desk

diff --git a/play/corrupted-recipe.org b/play/corrupted-recipe.org deleted file mode 100644 index de0a3e3..0000000 --- a/play/corrupted-recipe.org +++ /dev/null @@ -1,26 +0,0 @@ -#+TITLE: Corrupted Recipe -#+OPTIONS: num:nil title:nil toc:nil -#+NO_SIDENOTES: t -#+HIDDEN_PAGE: t -#+DATE: <2026-05-09 Sat> - -#+BEGIN_EXPORT html -
-
-
-

Recovered file

-

Corrupted Recipe

-

The ingredients survived. The measurements became folklore.

-
-
-
-
-

1 onion, finely remembered

-

2 cups rice, or enough for whoever says they are not hungry

-

burnt sugar until the kitchen smells like almost

-

[DATA LOST] but Lima says add patience here

-

Serve with the story about 2022, but leave room for Oct 2025 to glow.

-
-
-
-#+END_EXPORT diff --git a/play/do-not-open.org b/play/do-not-open.org deleted file mode 100644 index 5656523..0000000 --- a/play/do-not-open.org +++ /dev/null @@ -1,25 +0,0 @@ -#+TITLE: Do Not Open -#+OPTIONS: num:nil title:nil toc:nil -#+NO_SIDENOTES: t -#+HIDDEN_PAGE: t -#+DATE: <2026-05-09 Sat> - -#+BEGIN_EXPORT html -
-
-
-

Envelope

-

Do Not Open

-

The instruction was written by someone who hoped you would be careful, not obedient.

-
-
-
-
-

Dear whoever needed a door,

-

I wrote "do not open" because some feelings need a door before they can become words.

-

If you are here, take this small ordinary blessing: may love make the next room easier to enter.

-

- Future Z, age 40

-
-
-
-#+END_EXPORT diff --git a/play/dream-corridor.org b/play/dream-corridor.org deleted file mode 100644 index efb4a22..0000000 --- a/play/dream-corridor.org +++ /dev/null @@ -1,28 +0,0 @@ -#+TITLE: Dream Corridor -#+OPTIONS: num:nil title:nil toc:nil -#+NO_SIDENOTES: t -#+HIDDEN_PAGE: t -#+DATE: <2026-05-09 Sat> - -#+BEGIN_EXPORT html -
-
-
-

Unlisted page

-

Dream Corridor

-

The walls are made of half-remembered loading screens.

-
-
- -
-
-

Dream log

-

Three doors

-

Door one contains Young Z drawing a sun too large for the paper.

-

Door two contains Aphy trying to explain a dream using system logs.

-

Door three contains Future Z at age 40, waiting without rushing you.

-

Sensei Chi has written in the margin: "If you wake before the lesson, keep the calm."

-
-
-
-#+END_EXPORT diff --git a/play/family-layer-index.org b/play/family-layer-index.org deleted file mode 100644 index 6f8e87d..0000000 --- a/play/family-layer-index.org +++ /dev/null @@ -1,25 +0,0 @@ -#+TITLE: Family Layer Index -#+OPTIONS: num:nil title:nil toc:nil -#+NO_SIDENOTES: t -#+HIDDEN_PAGE: t -#+DATE: <2026-05-10 Sun> - -#+BEGIN_EXPORT html -
-
-
-

Layer map

-

Family Layer Index

-

A quiet index of how deep the hidden system has let itself become.

-
-
-
-
-
    -
  1. Loading local layer memory...
  2. -
-

The index is local to this browser. It remembers patterns, not identity.

-
-
-
-#+END_EXPORT diff --git a/play/forgotten-draft.org b/play/forgotten-draft.org deleted file mode 100644 index df00b73..0000000 --- a/play/forgotten-draft.org +++ /dev/null @@ -1,24 +0,0 @@ -#+TITLE: Forgotten Draft -#+OPTIONS: num:nil title:nil toc:nil -#+NO_SIDENOTES: t -#+HIDDEN_PAGE: t -#+DATE: <2026-05-09 Sat> - -#+BEGIN_EXPORT html -
-
-
-

Unsent

-

Forgotten Draft

-

A letter that never became brave enough to be email.

-
-
-
-
-

I keep meaning to say that the house was not the same after everyone stopped being in the same room at once.

-

But then someone sends a photo of dinner, or a broken chair, or a sky that looks like 2007, and the room comes back in pieces.

-

I suppose this is what the website is for.

-
-
-
-#+END_EXPORT diff --git a/play/future-log.org b/play/future-log.org deleted file mode 100644 index b3a2ddf..0000000 --- a/play/future-log.org +++ /dev/null @@ -1,24 +0,0 @@ -#+TITLE: Future Log -#+OPTIONS: num:nil title:nil toc:nil -#+NO_SIDENOTES: t -#+HIDDEN_PAGE: t -#+DATE: <2026-05-10 Sun> - -#+BEGIN_EXPORT html -
-
-
-

Layer 4

-

Future Log

-

Messages from Z at 40. Reassuring, honest, not omniscient.

-
-
-
-
-

Age 40 log: You still worry. You also recover faster.

-

Age 40 log: Lima's laugh remains one of the most reliable forms of weather.

-

Age 40 log: Do not delete the gentle parts to look more serious.

-
-
-
-#+END_EXPORT diff --git a/play/guestbook-1999.org b/play/guestbook-1999.org deleted file mode 100644 index ce701e2..0000000 --- a/play/guestbook-1999.org +++ /dev/null @@ -1,26 +0,0 @@ -#+TITLE: Guestbook 1999 -#+OPTIONS: num:nil title:nil toc:nil -#+NO_SIDENOTES: t -#+HIDDEN_PAGE: t -#+DATE: <2026-05-09 Sat> - -#+BEGIN_EXPORT html -
-
-
-

Old web room

-

Guestbook 1999

-

Signatures from usernames that may never have existed.

-
-
-
-
-

aphy_bot: first comment generated with sincere uncertainty

-

young-z-2009: does this guestbook have games

-

future_z_40: keep the backup, delete the shame

-

lima-note: proud of you, even here

-

sensei_chi: the counter counts only what can be counted

-
-
-
-#+END_EXPORT diff --git a/play/ink.org b/play/ink.org index dad155b..10b3cbc 100644 --- a/play/ink.org +++ b/play/ink.org @@ -5,7 +5,7 @@ #+BEGIN_EXPORT html
- Back to Play + Back to Play

07 / Canvas

Ink Pond

diff --git a/play/kitchen-light.org b/play/kitchen-light.org deleted file mode 100644 index 1c35bea..0000000 --- a/play/kitchen-light.org +++ /dev/null @@ -1,27 +0,0 @@ -#+TITLE: Kitchen Light -#+OPTIONS: num:nil title:nil toc:nil -#+NO_SIDENOTES: t -#+HIDDEN_PAGE: t -#+DATE: <2026-05-09 Sat> - -#+BEGIN_EXPORT html -
-
-
-

Unlisted page

-

Kitchen Light

-

A warm square in the dark part of the house.

-
-
- -
-
-

Late note

-

For whoever comes home last

-

There is rice in the pot, a towel on the chair, and a story nobody finished telling because everyone started laughing.

-

If the night has been unkind, stand here a moment. The light is not asking questions.

-

System message: warmth found. No action required.

-
-
-
-#+END_EXPORT diff --git a/play/left-behind.org b/play/left-behind.org deleted file mode 100644 index 6ef4f80..0000000 --- a/play/left-behind.org +++ /dev/null @@ -1,32 +0,0 @@ -#+TITLE: Left Behind -#+OPTIONS: num:nil title:nil toc:nil -#+NO_SIDENOTES: t -#+HIDDEN_PAGE: t -#+DATE: <2026-05-09 Sat> - -#+BEGIN_EXPORT html -
-
-
-

Unlisted page

-

Left Behind

-

A drawer opens only after too many taps.

-
-
- -
-
-

Family note

-

The small receipt

-

lima left a folded receipt on the counter. Not because it mattered, exactly, but because small ordinary things become evidence that a day happened.

-

On the back, in pencil: "Met in 2022. Engaged in Oct 2025. Soon, In'sha'Allah, married. Keep the ordinary days safe too."

-
-   ____
-  /    \
- /______\
-  2025
-      
-
-
-
-#+END_EXPORT diff --git a/play/lima-note.org b/play/lima-note.org deleted file mode 100644 index 267a012..0000000 --- a/play/lima-note.org +++ /dev/null @@ -1,24 +0,0 @@ -#+TITLE: Lima Note -#+OPTIONS: num:nil title:nil toc:nil -#+NO_SIDENOTES: t -#+HIDDEN_PAGE: t -#+DATE: <2026-05-10 Sun> - -#+BEGIN_EXPORT html -
-
-
-

Layer 2

-

Lima Note

-

A safe space note from the emotional anchor of the archive.

-
-
-
-
-

Met z in 2022. Engaged in Oct 2025. Soon to be married.

-

The website can be strange, but let it stay kind. Let the hidden things feel like someone folded a blanket at the end of the day.

-

Reminder: eat before turning feelings into features.

-
-
-
-#+END_EXPORT diff --git a/play/memory.org b/play/memory.org index 6819bcb..15cc4f6 100644 --- a/play/memory.org +++ b/play/memory.org @@ -5,7 +5,7 @@ #+BEGIN_EXPORT html
- Back to Play + Back to Play

01 / Game

Memory Cabinet

diff --git a/play/patience-game.org b/play/patience-game.org deleted file mode 100644 index 6de3d15..0000000 --- a/play/patience-game.org +++ /dev/null @@ -1,23 +0,0 @@ -#+TITLE: Patience Game -#+OPTIONS: num:nil title:nil toc:nil -#+NO_SIDENOTES: t -#+HIDDEN_PAGE: t -#+DATE: <2026-05-09 Sat> - -#+BEGIN_EXPORT html -
-
-
-

Tiny game

-

Patience Game

-

The only move is to stay a little while.

-
-
-
-
-

The lamp is on. Nothing else is required.

-

0 seconds kept company.

-
-
-
-#+END_EXPORT diff --git a/play.org b/play/play.org similarity index 100% rename from play.org rename to play/play.org diff --git a/play/poem.org b/play/poem.org index 5514c12..2d4209f 100644 --- a/play/poem.org +++ b/play/poem.org @@ -5,7 +5,7 @@ #+BEGIN_EXPORT html
- Back to Play + Back to Play

03 / Generator

Marginalia Machine

diff --git a/play/radio-room.org b/play/radio-room.org deleted file mode 100644 index fd95628..0000000 --- a/play/radio-room.org +++ /dev/null @@ -1,27 +0,0 @@ -#+TITLE: Radio Room -#+OPTIONS: num:nil title:nil toc:nil -#+NO_SIDENOTES: t -#+HIDDEN_PAGE: t -#+DATE: <2026-05-09 Sat> - -#+BEGIN_EXPORT html -
-
-
-

Unlisted room

-

Radio Room

-

A room under the stairs where every station is almost home.

-
-
-
-
-

Tuning log

-

Between stations

-

89.1: rain on the kitchen roof.

-

91.4: Aphy explaining that backups are promises with timestamps.

-

99.9: Lima laughing off-mic, and Z forgetting what he was worried about.

-

The dial is warm. It does not play automatically because even hidden pages should ask permission.

-
-
-
-#+END_EXPORT diff --git a/play/recipe.org b/play/recipe.org index a384968..be1d72d 100644 --- a/play/recipe.org +++ b/play/recipe.org @@ -5,7 +5,7 @@ #+BEGIN_EXPORT html
- Back to Play + Back to Play

05 / Spinner

Supper Wheel

diff --git a/play/rpg.org b/play/rpg.org index 933d6a2..528780d 100644 --- a/play/rpg.org +++ b/play/rpg.org @@ -5,7 +5,7 @@ #+BEGIN_EXPORT html
- Back to Play + Back to Play

11 / Role Playing Game

Ash Below the Lake

diff --git a/play/sensei-garden.org b/play/sensei-garden.org deleted file mode 100644 index 44eef4d..0000000 --- a/play/sensei-garden.org +++ /dev/null @@ -1,25 +0,0 @@ -#+TITLE: Sensei Garden -#+OPTIONS: num:nil title:nil toc:nil -#+NO_SIDENOTES: t -#+HIDDEN_PAGE: t -#+DATE: <2026-05-10 Sun> - -#+BEGIN_EXPORT html -
-
-
-

Layer 3

-

Sensei Garden

-

A quiet page that answers after you stop asking so loudly.

-
-
-
-
-

Sensei Chi says:

-

The seed does not hurry because the calendar is watching.

-

Aphy asks whether patience can be optimised.

-

Sensei Chi smiles. "Only by becoming unnecessary."

-
-
-
-#+END_EXPORT diff --git a/play/sigil.org b/play/sigil.org index 3823391..cd332ef 100644 --- a/play/sigil.org +++ b/play/sigil.org @@ -5,7 +5,7 @@ #+BEGIN_EXPORT html
- Back to Play + Back to Play

10 / Maker

Sigil Press

diff --git a/play/study.org b/play/study.org index e6d9ab5..084ff30 100644 --- a/play/study.org +++ b/play/study.org @@ -5,7 +5,7 @@ #+BEGIN_EXPORT html
- Back to Play + Back to Play

09 / Timer

Study Lamp

diff --git a/play/terminal-cupboard.org b/play/terminal-cupboard.org deleted file mode 100644 index 00cbcf4..0000000 --- a/play/terminal-cupboard.org +++ /dev/null @@ -1,23 +0,0 @@ -#+TITLE: Terminal Cupboard -#+OPTIONS: num:nil title:nil toc:nil -#+NO_SIDENOTES: t -#+HIDDEN_PAGE: t -#+DATE: <2026-05-09 Sat> - -#+BEGIN_EXPORT html -
-
-
-

Hidden terminal

-

Terminal Cupboard

-

A command line behind the jars.

-
-
-
-
-

family-layer cupboard v2.0. Type help.

- -
-
-
-#+END_EXPORT diff --git a/play/terminal.org b/play/terminal.org index 32ffd76..238b4a5 100644 --- a/play/terminal.org +++ b/play/terminal.org @@ -5,7 +5,7 @@ #+BEGIN_EXPORT html
- Back to Play + Back to Play

08 / Story

Archive Terminal

diff --git a/play/timeline.org b/play/timeline.org index a3e81e7..bda80ac 100644 --- a/play/timeline.org +++ b/play/timeline.org @@ -5,7 +5,7 @@ #+BEGIN_EXPORT html
- Back to Play + Back to Play

06 / Puzzle

Timeline Tangle

diff --git a/play/train-platform.org b/play/train-platform.org deleted file mode 100644 index 2c9d6a2..0000000 --- a/play/train-platform.org +++ /dev/null @@ -1,25 +0,0 @@ -#+TITLE: Time Platform -#+OPTIONS: num:nil title:nil toc:nil -#+NO_SIDENOTES: t -#+HIDDEN_PAGE: t -#+DATE: <2026-05-09 Sat> - -#+BEGIN_EXPORT html -
-
-
-

Layer 4

-

Time Platform

-

The departure board changes by year, but every destination is still Z.

-
-
-
-
-

2022 - Beginning - arrived quietly

-

Oct 2025 - Engagement - boarding with light

-

Age 7 - Wonder - running on platform chalk

-

Age 40 - Return - Future Z is on the bench, saving you a seat.

-
-
-
-#+END_EXPORT diff --git a/play/young-z-desk.org b/play/young-z-desk.org deleted file mode 100644 index 159b8b9..0000000 --- a/play/young-z-desk.org +++ /dev/null @@ -1,30 +0,0 @@ -#+TITLE: Young Z Desk -#+OPTIONS: num:nil title:nil toc:nil -#+NO_SIDENOTES: t -#+HIDDEN_PAGE: t -#+DATE: <2026-05-10 Sun> - -#+BEGIN_EXPORT html -
-
-
-

Layer 2

-

Young Z Desk

-

A memory fragment from age 7, preserved without correcting the spelling.

-
-
-
-
-

Things Young Z considers important:

-

1. A blanket can be a cape.

-

2. Computers are friend-shaped if they have games.

-

3. The moon follows the car because it likes us.

-
-  \  |  /
-   .-*-.
-  /  |  \    sun for later
-      
-
-
-
-#+END_EXPORT diff --git a/recently-updated.org b/recently-updated.org index bbc30ff..927bc26 100755 --- a/recently-updated.org +++ b/recently-updated.org @@ -25,6 +25,6 @@ - [[file:home/guide/wird-tracker-guide.org][Wird Tracker — Technical Guide]] @@html:@@ - [[file:blogs/2026/05-may/10-05-week-review.org][[10-05-2026] - Weekly Review]] @@html:@@ - [[file:blogs/2026/05-may/authoring-service-09-05-26.org][Authoring Service]] @@html:@@ -- [[file:play.org][Play]] @@html:@@ +- [[file:play/play.org][Play]] @@html:@@ - [[file:play/timeline.org][Timeline Tangle]] @@html:@@ - [[file:play/terminal.org][Archive Terminal]] @@html:@@ diff --git a/sitemap.org b/sitemap.org index c603bd0..4bd9299 100755 --- a/sitemap.org +++ b/sitemap.org @@ -222,7 +222,7 @@ flowchart TD * Pages - [[file:index.org][Home]] -- [[file:play.org][Play]] +- [[file:play/play.org][Play]] - [[file:recently-updated.org][Recently Updated]] - blogs - [[file:blogs/blogs-intro.org][Blogs Introduction]] -- 2.49.1 From d0610a5907585db0091a6530215f4554b1c6a666 Mon Sep 17 00:00:00 2001 From: gitea-actions Date: Wed, 8 Jul 2026 22:17:11 +0100 Subject: [PATCH 4/5] removing stale rnote files --- assets/New Document.rnote | Bin 34654 -> 0 bytes assets/emacs-calibre.rnote | Bin 54175 -> 0 bytes 2 files changed, 0 insertions(+), 0 deletions(-) delete mode 100755 assets/New Document.rnote delete mode 100755 assets/emacs-calibre.rnote diff --git a/assets/New Document.rnote b/assets/New Document.rnote deleted file mode 100755 index fcb8fc0998d86ca7815298722cde30498ee52773..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 34654 zcmeFZXIRte);_vtyJr~3f@KsHB_bdqNTf?kwiN*Z0qH_Us?;dGgk)w^5UJ9OkWrc# zAatZ9qX>~2sgaflA&C$ml8}V-^TWN*d#>xeU(aLe-jlCQz4j5=NStT3&(1~fzvAViT z?I1g$LF!}|m3Z_A+tW$%GHF{FQK4sGdk%`Lf$CF}dF!Hf=R`LdFB63d&V!3-0*`*?WH{KB@#G9867jWX?E0TC0U3e=)7G#^0V=T%c%j{8aGkB7@Ju>yV zO{t>PE}ttYiTP_*o{MEsx>XR80#MgBFO!Ctl5WS4<>UIcUEuSp225+7(Twctb^X0%JYgT*e62w$5s7?I;ETC-%?HcDm}u>h(McJK7>tXg!X$k0C0 z2AdJX$SEf$!c-*oA0WT+*Mp-cTAjRVM|^dKT}uU=fxp)C9_W{*^*F9hNo5kzTqopi z+#l4b2ip=nsgMt>6s3z2prz}j9m1A%84W*x!7glJdz^g6sf;=gP_%Rk>46kC#ULm% zI`MLJ&)d`=yYy#J&aBwH0qZ51oLDA-0(<6w_x6g^7sT~Ua*EDpyp#b$ZL)jhC6A8T zoUMH&lc3L_?wFY_$m*WJh|R)>WmB1&JQC*hgyQ}fA<;?ps-#^Zb!uMpWD2oFMc6;a+5=gCrSAoN=(gP=TtDajVTV|~>1$CQ`~SFiEb0IJ z|34P^|JDMF5wZHG{GLu>woI*}?w|0@4XM6&X;#Tem^}}>xVQJBxYY*U)OT#)*E?2* z=SL#%7Hb^4crwxYA?h9Q+iwc(C-4LQszI>7za>|`#s3C)=ys~9N180RCh><}9PPh9 z3Ra{t8Y=Raq<;d7Uj&Dxp?kC4pNaPD_%r^k4s!ocpz#KH$GxSq{oBS`HUBf#|Nb!C zJ>$P0wgDen2WkBG!=?ZI;fs9ge`dsn{;wJTUmsTg|GL!tI>0)oP7sgm3IDH^`_eZf zT+cG5Xetja<1Y+Ie(VLz3!4jX0sF>mXe+1$@s%y^ciz66Gq>|S%{?nHdY@Z8g*ree-&-^HW=q{NwEDvsZ=m z!^-&%=MMOpkDZCfkvK6d^mwDz^Vf+3Hl*~i!p|664J+>Mot<9Xn-D!at3}NoPP#dX z+ghljza~w>6pyE@Dt?c7+t#itY1PNGS4y7UTDL}a^CUwD1Zg|&b}UI{g?u&j<`mA? zpDGG|QXeAtzrUGXufLgd%n_qOK@2mlJfsqn^Iqfrb9?ZQj|9}me0^iTVGT^@nGs`s z&9cSl7&!U+uQQ6Pr<<<4DX%~Xwz(T`t;E!V|K~#+wS48-2Ip*T==rF*8&BR6Z(OYs zeqZD<>7gp-YC;nI*>wS1VP7yYb9~BZXK%gVNDq+I{+q~)iCHy?MKf<7U*a=&Kd=9v z#Zcy(Y$xYS?}#MdsA`)oavYuiEK?;gz;8rv>#RrGz!+|s$5E)!f2iV__#ca*c57k; zKDRn0$SnNN-xqLcmd*?SE@L>e^Q_P*fl+M))NzH0Z6vpMPKSWxpn zQy*#iL_#Lml<_KA3VJICvf~UcdLh>{dJJ_dqS3t3mOO3W*Aq$#PiI?FR0;AsGsDIr zOczeK+Sh10in8ZcorL#c$lXLxKxmUr-mSmzrDWQMuJ3|to$q=1oz0_u^jN=>aUY%@ ze&ZES4G!OC=J{ga+y5vLI>r!~5i7as<9YHs%g2u8wiq6F*Xlc*-2#r2O@&5hoyKZN zoH~U`{ATart-VeqLNAiVnQFtQ9je6fJcaKc5uzkDSG!3OCdKOm>!Xw?R!Wy`{W1m~ z3+0cTRR%5y^jm_j7f4z5kDbN9-XkQBI}yVcE#@6lZ}LYIY~<@wc)hJ29{%3fx(1GB zjH3P>H2X@~Q?PRYuI^o&4{xqgJG_;5Mwd7u5S05Pph{qLB9l|5WwHfvseK$Fd0T_t zQ#AP9IBX%$An(k~W%k*fFSO;8{a*dr8FXW34^6tI?j@hF=+<&9?HqJxHA76Na&wi{ z5n}Bv<`DNT{>o=0^v9J|Me>ZIQD_!2>c}2hytiQY$M<1TzHj7roIQVNbUmmkI`0-G z#Xlh&v+}Cm=xMXN%g%}dOxNS`ju|n9DZKJk^T{mYsU7>+`Bxg)R-KtIo8O3j#l3Me zq~`F<&IDFfUCJ$<8Y6ZQ=7B2+ok!AJJHtcr66iPI2ny%v5@Iv~WS3WmTP*dwU9#Ju z+tdkp0g9&61D9_)fOZ^9E8X)@uwcFQ=XUjWcS}C#B8W39nY~SZ>YmE5jWnMctW-cj z|7pCsYiAj>hu)QkgWC2M@kE>ER&5jPDL$&MRaeJ5v!9vWmjfyf0{w{4_2 zYbxwMMY^G(TS$h+f_}7PVq0KcJ;fO$_3pA-!d>}w>+frQLb8pwJ<(~99u8Py9RWYL zf*5`h0acx4zm+V-i5$lYG80z@@m+Z#sPRjS+=`H+QOlg23%=<1*;(lKs=a^8k*Dw^ zEFX2lZ3N^4+*Km+<6QE~_JXg28At*D+hCQ?_?uW;Fn5%(ID75SxB|J`~)UjM&6 zC!8zwakmpTPje8~-O$^wgwf8-6FM#f1&-61kQbBnzG9NQU-&gU-g$MQG;kiD-owOW zk(C0u9qS<={JkV)wL0hSoe=_9VaP+(btAq(c4Nqux~rO%i$y$ET72TqOpHUUnm$Y` zdtx%v0K&RDlvY&UWZiV6bsHDdwcj)^~CH)5RLS}Q1s7FR;bt{Ka!!(={Ins`Mbtk)GB{plKn^-yBajNQ=Ri*c9 zL24{=YVd*gwy5UDTk-ev+m|2FZFXwt&`SSMhiQ`E8jS2%tKg8!^|>bE%nN$oTm^9+ zA)nGJiBFc2x((2+AO9P##==uFpqgjQa@Ed zIpYF**4EGq15F(ZJiHA1?zGKrqnm8+c||aGUYj;YNn)Vp%gq~wd@ebpqJq=8~ zAg+P!Xwyp=G@pF(S_NWfo#G=}j99^lU0G&gSynx+&Pmy>d+FC`EqL=G^x?iDCcdpY zPkMWw9tvkzSMaJu=_8^$FxeR7*jl#dcy>H|xZEDHbJ?W7bEuj~cB6S|s&$H~TNk9HgmOC|6p zT{}0~wPD})3k75-`WR7WD=FxP~{*p{LQ7;7(7^eO~=+q<`xK481H{$o_9sSv# ztId!&%!(GQ>vr6C2N-hq>_;9lh$+Yml!ZeY z5{j#uu=nVcmbu=sC#x3K61i8Ed-}5K3&tCqzcCrQw4I7-5gd%e6;`nyT_mUzsRHUP zoRDYUn*XCi8s#aWtMy*p)+QxYDh1-+V>dkT9Eqt6?Ry-f_d_sWt@X3Y)(JCE;wEq# z08@iv_K}qPOp74_qKm)IaZ|bNPrOy6?h5trO^#{t1$H-;LWz)cek6a2;?zp|prrId zJXF$1z_uOgXl3JKwX*b-zP}5-AUd(HY3zzB_Oy?+%g+DAVNclP6|UR(-{d$z8 zxcN_YH7B{Elt5*EXBD(Lrja;1(HdTJImGWSgwC&u?ohIoXf_sXnrsO#=3Ps=KXgM- zD5wb1C>uHlBvD#h)EyVS7mMO61uef=@4da2Nzq<&wgBwjhrnIw(APpaljl80gY`!+ za0`~~b)@=0RzI;Wx&}l?{D{M)_@~AY)`%NKFkN5>j)44Uqf@-ZfLP!R@2#hVTs9C( z!85C(7?1X%`ip4$rvgSDzyEXvM+d_%R-Uq0svG-8ngBgCdn6~4t}(u6M2k>YWv0m{ zKe+p5!sbN=t8@1iQKgZ96ys~S&%#x<5R{Q55M9NHe;pOvuB|kO3S;xr83*mDMl-tz zLwk0ur@Z~2sCh}(86EP3G4VVQWjU?1lC{;P5`nu#L7>9xoVAh8ve_1|GrsE;3}q=U zThZ*XK8SQm-IB_@xH;4)i=b>X8 zYc@#C7=sGMzNwpNkr+2+OM6Z{0~&hPGme6K4YJ4?c!P}5yraXurNH3S#6-*lN5=( zhA*JJ)yW3k0`a7xpmhkzI0O~5b8(W0z5)KDzV5Km^-Qn_=89LRkQ@eqPHTDzo7r|C zG=^cUB%Id5W=OU}esO+BlNEyv(HnH# z^}gOU#*iw;blO{oqY|y=Ap=V=8sTfMT z&;kvP$VcoRR_Ai$Pi^tHkxmSa|HQmxlU76B7LRn;o1WOW)zKZ=Fklb_{#L6fOH?cS z)T5r-+>ZVFS2V~}h)B;~-@>BsutfZvh*dL0KqQ-W8)SjLhdjRr#1{)*O+B$$BO>%V zhDkg$l6*(0^QYaLd|tziIa)b^n78=h#9@n>$rSsE6Cxs^w!nIy_igIR8tr@e7mG4g z@i{s!1vB&#Yx<3lI6L6l9tP9f9}x#(=kwU=#DJ}oq255+S582Ca=F2&sX-9~9F#%b z^QyLbR;c^mQNS)O{!f-S!W$=AI?|V&7eodr85X-5pmxG2xPKNSNkwX#ZNNGM>FwE_s_A(ClTMAzbJkr82jgxzc!X<)P=2u>FJ8 z$SgNm*drhXp{ot;`F@JhvdP@>ov&)U{T8bli+m5vuX;u<<1~& z_j&>OqSyYNPr_#wR9%)E#GecFPTesGk7A`{9so1C@q8998F8y0SQ%|cQwH4X zf)8o{7%ecB$hAE`s)#4sB*~TyBMzkt_lyCs0-_C+gU3O<*MrMoU-cQHzFQ_Fr ze~VA35+^Iqj?8O4J<09D!p=SvHM22$*m{EmY~|s03p5Os7^gZU_x+GEqD7l(4}s$E zd3oYMU4=;gN8{BPn5kX_&kc2&B5%f~#l^!<;-%dN+I1@K|Cyt&Y;NTzjlH$i_uJIl zyBy*%2M>9yvZvZVUP#nY@3?#c*CW0I&r@@Qv7EySEEwS1-e79$N!m_{aPQK6pZkU? zvt{!^IIon+mcG1t`7!I>RnTleWvsSEuD~@%6;BKzmw*y+Hl_-WT zfG>s+SJ$h6ZSe)?_Mb)95zYwG6?4kXtX}o3e7f5hE0#L+F8k=RX?YU}GasHS{6I5; zw378aFT)F`1x)X1%i+!fz?Z_f@Jn+ci*Rn|OrnC?#I@oHVY8Ot3V_o5d$9MO@e2<2 zPSRnOL0aB8fI~eM@^WPc=pxUJ%q)2j;CTD{21l%~yg}R`K6#h)nV9z{u%zU`^P=LH zF&$mQpjnc2m&SlFo)LFfIljqbH%IKT9u8VZe_Ly5odMAU(yGeSBERQ~Dh&R0;24n9KUm#n54cvkHUd!+8`5CNhQ*t!HF zDZ5jRXI;c4)} zt*e#fJURoK8mKJmtlGT0DbJL(MB)nXae~LtyL%r*F6ad;N&cOdJ)2cw<`SsJX;RkD zchXaULpQ?w46y3UuPNs9=&v#8Jd{}?amZc?i*M{yuEr@PIh$XwNW3-*)ORRD=%aRM zIgaux042@SS2z6#(zJUQ(Ao6}m*wb65wZwKnCe$r%WiSIa@NOU#cq&@GRmC{_V8*C zJ+5A^@^3cudJp84f3VZXo!BT<#$V%Y(5ulfSO)v=gBOAFX*%*9-G`CdEB6Y2A?Ps> zGAwyHzpJ%0y>JsP4{;dqK}VcslSj%0@T8a7u=YR}#smET2nzycNn1Xe_vUKyrNJsC z0sE4GzamT%6`Vndkj^hU$S=WD+h}3QjCe09G3!^_ALU=Pw z&S&W?Qq!F1)!h^M5H*{~;DdQ@#<;ehb&Iq6GO zN;}l@dcrelym1*QIFmI5Kujtdml{owGES_~A6$m%%wJZ_X34SPB9d3uYqJNwcfs;< zrethy$`gV1w}(g_Di6X+wX)3dL*)cVIKne5f!cX@k9q7Ba4Gv*w(v;Yy>=5R7vIy3 z5DTIniU1>ivRcghB%1%LX-=T8-_9K?TV&c~^gsY?x_`UlZ>u*hHV6l_bh`?`D2)eq zSqz~^2%r6j3m(b0IFfJiH$WfA)NScC5}%(kwOe zKxdYt@zuSYA%)h-FvbLt@?nTYAaSdyoR0SNniFHfl*e-NgOUI)=`D(*-TJ}G0(Wlv zw#T{y3ca~IN?1tD(k`KBTo-&f_qGyDSB)u1U6h=Dq8Vatb8a2qTu27+1@8)irRA#2 zZ(~TbRp9mki9mHa;*52RL(N+%zY+~T-8PAmBp{@JkCBqeZ+?>{*R?sfz6)TXB=kP! z;If42kSmu_TjzAvVshhZ7+T~uQB2!kG#5Bbc?@kAg-oX0Fr_8dgAL+J*0-5czM3qj z&-YhG${B>xvFY^)mnxy;gBggfPNQ+`UU@0ygJnL@;nGpG5~`+wZ>hNrdFaes1*U$E zg#RWM8)^1ft~X0?_Zxq;i}kdxd2y2Vhu^o$f{`r%%KnI%D7JR-+P>>NZXO{+P=GYT zErab@Dv+XIw#Y`kp{SP1Uw_G-WT8VfhX$(GE4PCaZOErOQ^Mn%4Nr+AIbEgrAY-ph zjuDd0m%X3_8o~UKQ!2xJk)#60Ue&k!+9}N78K0~-3Y$GWW#81pm#ncU@2P6%!HA!* zr{Jm~6sDy$z5B*4B38vC4*UK_*u>8}4#e4nrmV(bB;sGtErg`j@H8&#Ix6wSm_e~= z88kESN-4eTffQu3JlTJcwC6%W(nk^@bS`xufO;fI^SNl7ocqeGA&oB3ZR*>WGHpf> zwU1b!ZK$(%olO#CnZ-jB!F}x|^NGoxz+pDpkTC^~V2Ey?2-@@5MDMNj|=7R@S zlV)xIQ_e~?r{Jdl)sKV6M}P+u(c0!Rv8h81oPIrCP}BYG9gpMJDESA!#|x+cG6f8U ztzHl6w)itcuP)DeUlCt(QGjU6w+qg*KJIY4Bzp_IGUOIY;27P4DCMzQ0x~iv*uff1 zGgy~w_#(egz%FI9Yv5RmuL~I}rd2(GMsm7&3gig{uCM7K9+jY$5W~s&^pLiX^GG{j zh901#FFm2wEM5-j{tD$R&WMfGW)hwX1S*y1GTEODqVLLlZq?Dp`0eAzrZQky!=@WE z_ooA%8YZM4EB3bT*%Cm-ZGgq-f3nq;W}MZ z0xH3NLsZpSiLH3*G>&54idKj6PX=YaCekAFSshTBOmcjXmCELAD4lblB zm%+^w5xFL?U5Ev;e!yrLa}Tu94abbkLUDrDPSivtNr%bn6w2+f+Mjq6Jq;sHY}(p- zpUT=Yr5f-Rce*V}=rKSfGq20K~($46V^+ zdL!a0yKnK)TXO;%mbCMeBGbjYb`Hzx3nS58_GjWlU616$EV*x7Vf(Fp$RIa7oSTWG zaNFZTZH`7`u8zivAGkuiQ6bWvGeE!?iN-;*15puO^Pqc@_t%Fx)Zn2TZm~VvBEkKZ z2MWT?b43L&tUQ1 z5j9-jk}+Rjy8o226;gfQJ3%i zWqvBrJkTAZ6)0kkTwv}1^B)-H#!a74yI`q#;x8{jqoQl;kmYIE1$_NA=d_}-ms8o% zU-(a^w7HF_JE{OMwlV;)8ii!v)ZMIcOPcQ+3Z?;oUrmvjTNupexC|l@uQ|Lr&M?r-n@rA^_u%a2^J(Jf#sxL&abc(OupufF^%zsj>n=&WYrZAf~{^D(@ z#k6D>mJsQf0F4t}yjHR<%DBZ%IHldZIa6yCt!xGbpd(_D-G^a@)w+vgjVm zMQs6f07c=5Ka74XyxwVc5%E|e7yxSGi+sgRp{)8d^z5PN!IG6fsC6^m;-pWuEBiQ4 z&fLR6POtI41lIZr_v^TGEQ(fLqB&A(DO-IaKJN1-X;10qb}Z!M?Ru~Yra)x@J!Ww9 zr<#Ro)A#HK!L7&hxGD#GZTY>)K741l$5Px&tLpL78_o6w^^p2rpc;an0cDIIC+X_u z@#E`;3GT@|MCQFVIlBM=p*^q}y>ZS2u;|?oPy(NMRJ&y;vvz(b-5tbZ5Y<%$DeTj(}G~Ug+I?V5ld|X{c ze9q)O;FjB|?~~Mk?c=Zu06K5`luzBgj+Or)-OpevQSC8z5~DY%Q|>f}Lcwnf2~BU8 z`4>l)y-WdEh85e5Kt6(!BcD^BEI$2w=MeehAX^6{6nzBAJdDeq+~O*iWG=`;ommEc z=UJ_D0K5%-nu~~X!<4AQ?>Ro^{s{*MKx29V?W!M`bq?b}0U(t9wBtII z!qEb)gt72efv%_N*=DdN>Ag!<$Y4nD;_}?S!c6c^83s)9B-4{p2@WtwE3gWbI(ZA8^jf1M{L+9IbwhfnWbESdaKq(5{|N0 z%4S)qZE7dsY!2hssq5D`jBk8VU_D_~Vv_?<)T!keMnH-AiyLWo;PF-$C~QlKP>wUF zHKGSBy8}m0dQ;kxkJADOUvu7+g&c0p`}o9I8Z`PD`PXN-s9VWx<<2EhO5)Os*-k!x zE~g%;y}n#Bp6t)QO#5h`XQHlY%lB;7>Um+i@e^xmCf6+a!+QhM zt+CgL+@7-SJIIR=A&ajr^vq?NzTYUZSz-|ab0_;}(ZnbmgQV`<8dj)Ga8XbH|}s6=H|k!m^?6;gu@)WTS0V;4GLb{8qa$hO?+e|O95CZ}aT z*X~uHF7zFJm{|5{CqrTxWwN-XYkZgb989Z&k~0Y@g03>=5OzH`9q=To9-TiCL_4Fb z)`rHKaU+!M0%$@V?i{w>8;DexI9eJ#09B@R4+na6jjQ=w5RV*-bx49BUkrYCkJ z**6L5mmtS+MmcBOB+n1Rrc^nbJ~t6bHxG3LzukY_j>5T?5S&|Sik}{5$Gb^y$>{NP|6vf z!v0!yBUoz`YK+>t5mtGQs6K7o8?-#9B1Mb})+Erx zk8|+mLrDFIf8^KvQ&Db+g!~ev8=CUF&(S18Ro5G4{1|bI~SS3 zXV4HKBF1SEl`uhIyouySWgY2k%6tPZLtQQ7{uA~YkvQ@rx;mi{oBTx}r}l>Ox&)7( z;j9DLDN33>Q3jjhuoh0uBrvdMFN5PTjC4vKxq+NK7izi>Dmzg+&Dyg(&S1>63nwzhvB#-D*5Rqw?9dKE zWXB)?(6kOPTO@66U=ITs`;uA0Dj4P%b>_{fl@-iSpU>e)?LxC&&McKijB*a@_=wGZ zF`Ve1P$NLCHt%kj@N?LFqREmpwq(u~4;~Y2+-Wfwc#J^3_`tib+b_CgR$^3f0f9VE z4>!y&H?t^Y#E|j>T$Q_fgB|SN{~N{^aCNsD<_z0u$&WJ?C+-aLBh; z^;>>#z|RA?JbOX^Y~Du6Et+JN&U7P6#Aff~F*#W^$nxOpp2HsmKXp#M(6orV(&7oq zm~L^;NX{h|F{nI-LcIg`xV@p{zIC}UsdPGdVm7ZYa`$oE`*U|<5Tpy0bkY5i6uwu%<{Y0p; zhu})2aA78EqhiY*q+h0qG=yd4TW#jzm1a*k3CXvA7_vKWA4gn@@@YL2A9g^(l@%EF z6U)B>L{c=5`EH#8rpX{Q(L-m8&FMe5?-+`ko9f1cdt?OQ$#}qHFz$t=wcKQ3FJuN{ zO@1Y!COpy;j0Yp4<%gZqLW=cRu%qGFVBMy1jiLVLwgBD?O;JXrg<3EV+#z{L>Ia2P-W_PrP}b9>M)6T~GRE4P z3T^C)K<`jqC01H07KtH7tjwueXTjgn;o4%HTI5}1PDS@OSuv5+^^wE5SaL!Af}`Zd z$8J>3D>r~DAYz6r*4p=iR!1g2CcKU$Oa%wQ-t4GbC?&Lg$EV9cDTy-OwFcgg%0qF; zEAt+HWA*?$s$RZw?&{u=&?rDgxmN?7jF)Nix-wfdR?_TRWGR8wUE>T7`_=OE#;+i` zWBMtZw^E2QCL;gL%X#^LIP#D){vg|y<8yPZ^$)S{H{^7n?2luf<;Q6Zf^8L--9Tl< z08C}~Rj)Mq9}>|ZqBiQvu-u#JrH+gyw@J+|+Cb=NSVykb5pR6CAjzPbO_CqZAxuRRAF9cOLck4o@%F zD*Akn#t^UvK344BIkf>Z*-8hRm23_h>Rom36!x@81UfB}m3WvGqKdT**7g*9;S@6{ zt?_xt@9FSCq*q8xpsVHq>p=ORS5Bll($TL{`x6-i)Q>uw_BNKcz)Vjb7yTdMPTmjpB7pHVnt_VIUDOaZ{P z7^3h@(YQ=O%3Ws>wz8sAOl@mNx5SrV5P7w+Qx?m@-(@7=@lxXAJlrCRC^0)iHb91F z_MoTHEi)!dwj5t;3*uxigJ!hIHIdwe%fT%VEGD;Yc+J9A_}tYN$|AJrL=@cYTU{Jf zy-1J3N-oI=qW!CgNQONHq$`YCFiz>~JT3hb_n&&4&6idybfyn80|UT4%Jeb~EFyz^!`d5w1c=V@G09sDV8SFa$$9nh(mf{4|yi2KqkSgae{Wa!=4j{AE=$kYS)4ewh3-G2EaZ511k z5%!UOhnW&@37M8;$N*dZ*BAOfIRgkCFB+AniWU~y*ytw3AY}fVs%^?CWf6aG8n+v z=>VuQdKiJM2h?)|jRIHOz~~-8m2&6l^D_1FJ18JRtbr&U%w2-H@~<;KJr9Qkr_=)u z3Xmr6qv84{en`(A!`kSNCC%4xS7+u=6nNRm5PN%{b-cI-ePcKO2`zjtUh8#-s9DB+ zadbPL*)n=i0uE@zlRd4~!&F>Q8CMuy*5=K|jCc)05I_y6gIa~#t8~#rkw|bd5*df{ zL77=SV}}_*rAy!bB`Lzs-8IL31akBFSKNVv?Bkrp0e>>Ik8dhii*r7I1j^p`(HU|{ zpJ5nr<(a##;)tl!aLAnkB4+waHn~c#SRD-`B$ciwz!Q$L=QIk^wh{4VnYI~h=}gA@ zD6s=p2o(N>cIuf^%b~nAR!;9p9`Yf{2L&~^m-HB*4R&nxzS#|X1Q@uAy*f{^Q+>}= zHndYAz%nEIh4vmP^TlR8Mi;$~S%OSu!{a5piUvg~T~qUJXi!Jj-Ms?Giiu~np4ZWubw`VkM`l3s8+Kc!C^P7L?f~cAsYc4c zJ#H_b=p49oHk|u|9;k@;G#c}e`iy-X=8tHpn0gjKLH|G|t_idU;!nf7SF3^B9nKN2 zNmjo#b5BZ9CMAbMOV1^eH0g#9M*iCkyFBDMw2 z&Kv@BNcN78GN*EuW9+h{?W=^sD|8Bzfm7Pw6iUe|!<^QhE)@@8qC-_R!x&X6V`OmT)=pYHqBt&H6L(0q4^iPTf_9ucN069) ze;(gI(uq6k*_&4(McCE(^-(Ba(zs5?gQ8yP{}i;vWH5^}VO1Z2PC0hrU?l-JAqrqS9^mE=8Im1mU80aKLA+r`Hx1@uGYxaX&73Vkf^aD z-Nj>xukbjm*DG_W6s)_M%jsvWEwrI(KTWFcSkA(rF*8-BROI%n;Im3d8Mw(E7kDZH z2U`%OtJ3!MNu>v@68`-aC<@lnh$^UVR{XSwC2Ni}X-r7YXxOB;G$7+Kp_Q<+0IZa_ zY$^;QHe)v`9m`_jSF)8Ax}gG=h+<@$;FVV+efzxwpuri!6g_aq^H-U1X_BGxu;4o@ zpb2QeYE1#w47Z%U6~B&czeJH#F3U~fPI4pGqn)SMUa_hdB;NfxvVSI_T7kq>G4VXn zM8#{gChvU*sEi|sf18(Ff4Kq!I|fMy^q|pWh_?u-wRP+wHTZ^2a9ISd zQ>V4~Um~NS-vV0e1tQF;Xq*7)fWTV;C=x`I<2IrU=+C!Ap*0K1CzV4N`lPW6W|Y*K zN#ha0zPYN>4R49@UQmye>zaTiGMKLLD)HJe#=Oikr6-M42t7;WKBUy0jKU=!-XnMe z*%a^yGy$X$#OVuRh*T`6(egQ&mMg0YNxdx*__70d=;j%IIY866G$AVkGDbU5ad;t8 z-BE&w;vmc|UaG(l#IokWZmltEI?%{x%og4Iim|NZk=rAyH3r4YIvAmr7d1j8~f z^gLj5(``LV?;*B^ovn5`W=n{8q0oGLD1QAb8M+`IE=v^uVaufbiANV+<8lMg2}q1? z;VsicQ}V;}-PO&zh)@tb7J!*_^NfO!uq`d9>}%i#ao$rqN#aEeVH#6R1subZF&JZ) zPT`Y9pEdumqmKbBl`$;8BvWF+P8YdQt@=xjMpdG!7)RjnZvZ#=2K2ePPD`Ee0;S37 zu~Rz_e;j(gaqpN%`D)5+3848_eWo)phL1ZcU)QN6LYuDZu%GwB`t4Zh+!;_oF-bgyaWA4*-6DwnI|tn<^bgZ0EwKxWf`2a z$%p;28TXMtv@9|mat1lLx{WXyci|5n1BzY%$9v!K8G$SSxa3j|neEHhl|S2vxTLSd?1_+`5(?_!XVKHPq0g+9a5^*YHJNRDC6?bV<5!%+ zheWek6R9k8cZoo%+B5~;yQgmXC;5OAU{cP46#*tYZ6{gtS24FeG!?J?!VHv)hTE6t zy}iZVCBw=S)ko;<`cE6@D}2whxb6e;O7G`c)dZ9o>fA7ChMykc9B5k1Q_XyRhg@cPl&l5a-}8S*@ab=f!Rq9E}`E3Y*}F0C#y zDVJKeG=PR8@Tv}XN;HaA<)kpqW>^`K`4{stP&$4ln!Ts57u{y}1}<1>T+Qb-fgJ_q z!7({^Et{k-=Az1`zuNsyGejXvI}<;k+imU811?b0A|izZNFb{LZ6-6-aHL4ZQS!G3 z;sdgxHGG9u%+q`89bl-T@^X#BXy?ks$I^jsawO`Ejg!3o!VNO%yaaVrw-y?8P3%`n5%>jhp zmxOU&a*Z4XgCGMy%^Y=!qd4k~l47rM_w?dj-Oz@VT|FcF5A8I#(Ozfvj1ZuTD(hPu zk2tAfHX`C%_wxla{4N+6$LIddK!=pw_)5&5P|++s;}_~?PLKP-DhQjT&@@pWZUMmO z$ZiTs`Gn}lciHZMM4zzCIy|EY<_jq&VyrD!ePA5kp8));4g$yY{BY@tmqI&BcS>HY zt~v5N>I=WLvPBLUd%-c-4WQAxqlP&zftT=Lw(H7UrTy&y@&8!X4N0-CybFjxpWxrd zNpZG*Zy_U+cl=)EOjb>>C-(1EJHd>Ou(}3M8R6gufSZD@Z9kE`5m0X!B>-x_u{~W= zn~XW7O~kRYpq%VnqwFxXaZC;rf3>ANWL0+xEN(Rin9PZJ`4CBbQa3mrkZ3nzfn2Ys z3~ZI~;)9UQ{I*DmF+(-$Dg_>cb{PU#w0b&wZu@V>k95bAen7Qms*XS=hh{Gf`@Ml} z4;4p0gBPi=`H9}B?icHFTK0)+!5Gg~G_w0e7yq`(IIww(%nJ!J?rESSDkRCQnLE@3 zu(C5i9g6&bfJ0H(p4D7c4R~b8NKj%C`_znpe1N0&<$eOSYM;Yc?TxP_JkWY%LNfCj ztxcB!8pyVff2HBddfFU>o$ytURpOOGYo89O`{{k0=imX&+fQ zY(Y9>Yyizr?)2K&?+dJW&#Z&{qfdAWgl($5Q%g1`D*#cxjIq0vWN~DvtuzU^!l;c$ zv+_5@t=g7?FQ0}viXaGTr}5~cU1PGQdvo}EM%-6AN3GWB2j-(M=Q@XY3dH@{MlZc& zTA(72x1L@cu@2DT_Y{Rf3*+94N&qdt4}^Tg6Ut`}kSQ_x9^Da77s7t6)C8YQ5=bA( z)!DgJXA08ru%c_Up1%a*l}G)G+5vt#C4&z5Zv{rLiH;89NfI)tF zoOY`i0L;D+fwqPt*)G)sJ@s-@Ns@%|n@m`cb9GPd(Ur zF*j`am6TvQ7N1igmJ2KygSoFmQy6$U+Ix0?Efds}C=VUlKlOaLasH40Zq?#5n zbinVsQ$getr9If>eo6Ra$?)QZ`oOT{<;iI;fh%W~{rns=%s%kEYm3~ z1zjof3E)+blEd(QEWw>LmI1mNV9nJuD70abf~}-mehwhJRG_<0{t)bpIXR8YaluKG zS;TrkuO1NZ)uOq8DMNjWs!OXH*o2UF!QedHeHa%h_rTTJFjeTqtP~*IPSky%oul{- z^C`wu4%Dm}vFjAj)Q3AkfH9t2#4?yb%M3rDx_#zd(KKjvz{}5O+BRO>0x;?vvi{en zCb#JP6=KV3r4n1GH^FUSpAxSKeL2szQrTXhO-%~3v6G7B=iKXE*BZpK;GKd0sW{Mn z<0ePXgF23hq)|qsv2mY)Kae2qwxh}Uc%M&6Q|0br`Ke7|HaI<30FB4>yN7}Y>>-!j ztD58E2vQq^Q$tG$H-4)$wY18Eaqw;EuFue)A;ngeUA-;zAipU`DiNquO-B z-O6;@SsDw}F~`lqGtWNFUJ3h#{9WDvkNg_(@@+2y!GoLzDtqQSaR27jGR8x=?iHNbc8E40CMn0lm^yP^om}W3fYkj`jgOIc;rc2{ zc9WQiB0bR*-?V5@&iXe~3MesJ;s!K8mqASh02^rCrjTjC2E9{n4>qgMAhUj_f97L% z+9)+;>Pi4f5rCIXZCuUBs&D)^{Y(0s+iKYNr%p>30#$XO25C+SP{axS0b0=YKA1rwbKm;sjrP7Iau-{l1}s{5J5> zudMq*-Sys2b0uadY~9vS_9XPAlSh2SgF7htde9liIFu0xy~U`$yMc5DAX;_`(8MqV zuQbsI3n06DdS>3__9IbgzjEa*#=!pL#@~e0bv+#J@+-EK1hgUWEuC#BUTkE2KD=A{ zWf=2^pa{?@vpp;$4TD_Vn{RmEVHe(sps4msoXb!bDFq z;d^Td%Y7^uPWl-JI%6-{`O^ny6t6bN4e*BmvmT$uSBzQR?d1Fbn-KZ=Wo3Mjym6}w&t>lXl?2G_x)oot#40)5`D*N^hXWHQ)@`;OC$4+K*Af#2 zBDEVmh_wXkm5jPy298pV4t78V;?i`C5A-LX1&kT(7Nr+JA#Shv)AU?2!NLDmdtds< z*7k*c@9m%yI-(TqrPZ3N<|(%|wIx(h^E|~6^Bm-&rYhQM4N=n4Qfd~|5RsZ%iiQ$n zLe&@qArX<}J?Z_u|HJ#?{o<38bM`)auf5i@p659VO(WcSgS^qQLQ0j*w1~PO%8Qhp zgU{^~;v9{Y-UdrIHjE>Tb6Z9A=0V!v#!wC&?s~)9mD7yocxKWph6xZrV2&nZ&=Mis zcAN4`6>^lx0`F_ltk(W+<6zJ}sw+vJstEY$O z4f03-C1nCI5b0_2D=_W*3v-N%n=D4>25+XK-I+ae40Q z-z3wajda5lpw3qxNB-;wNOk%!M^K-Oa{Ar&K;R(#BEew9cxYqZg%hu^4qkXMo5K){ z^b8-d-!2P|qnhm0uq+w7nW!B!F&XXs^>Wrk%)}5#vX`EaNhxU#qP07$F>>avE(r}k zQ4zWAxf`@lL$WvIeTEa%dd1MR8r_-oQR=X9YE83Uv5y zOTYh@UVvY*EN$>0)x$S}V?s{#t1`AE)7vLaH(D=rk~4|4{YOCMmBH!sI#@2ZP)S5b zASo_wMt;Bv_70kXfYlZ7i|Ha#qy5t`7ocx-AMCb;wX2A~t85Kk8I(Ja7%{DE8;ZS+ zvPeaGG1Uqzi7DITAFti5vTD)T+_zV3GYu-Bin1QCLR}Sk*evIDXLVUj0W+E-4>_~@ z!{*UlfK`;Z-`-51O8EPq0(=U(lte7Mh-8x@3OBo#8XW$K7JJ*beK9qow{lwc7C;o~ zIYa*f0qP95SLH+63@tG&Z5-?6{kHrL<{!Y@;X2q`d`c5Bd91}@9nWJN>9L6?te3Y7 z*m7Qla0BSoAlQ)Qqse(UNqG@8nT#pfv2>|=At#J*UGMCyHi$w>J^BJs?>h}-@}GAJ z91?`a0P~-FJ_);vz$0%y;>6d#)V?y7PO5Q;kU-g1`D%X|dxdNgdT4!UIcoFGv}jnn zmt^%Illj12tYPq33+o3xG*%Ajzts-0?fQx_!Qc1P9C-HVZ}i`QrupieoxdhLXIS8a zMmFA0<-RkE1+Sb&3kaINWB(bC3F+RRy&J7lFepndtdzPy!g!rO**Dlj*8OS|BuS5+50E+4T&W+(J+bQ-L(pUOtug!Uw zx6yX^OqcthiZFiXe4f^rkgl}}O1{6;wm)i_kw7Oc&=1Vvn(W9dg)g=g(*=fo)dg2; za+aR`$~lldwXosNkAMgvGF=Hkobp9wHzo!F-^z)Ru`)8=1_E{d3F= zRWa8_Kpj-@e188)3Bx1nnV-_q3o|4LY9n{%y~1mOuDe575|Sp?q3#Gcn24YS*S%hn zIMXZw$aUt-@~i#dr`L_;EXVA=f&xfC)bf7tFhGf5#ZExrA}%roEm!sLK`Xp8Ej6`4 zI^gQvlwE>A$X%emU%HVw(N4bG!uD-fjlK-ftHZ&I0M5Kc`jZo9-~K*%nVxm%Y9|i@ z>-CSFrx>C}D1t0dJ&gzCE0m=n8z7NzrkktyYVEaxwAV8wFh)NciP{gZjjSMir^BP( z&KFo!N_~}h`<~K$3J~N}3|YfDtD|{fDU(k5`Yr;5ji;%szf48K?-eI%tW+871=|9s zrk!9OX&urkPPs|!0P=&CL5|A4Ek9EGE~k`w(T1G0w+8^(>X>0cCrtRn0Oi7$Y&oE@ z|K1E6p$`21t}OtZy*jp#9H$eD%;fa6CW@(k4B^kuZ#s%zo7!!xezk>4B46Qz_Sq*? z^UDhnAFuZ^j%#;Ch9bltHGg*{)gx1k@Jl%%F^ZS^LSlqHlnXQH`M|R~b^*oWm4dE^ zS>%`_WPcE*jo>|P7!(sLJYuw=bU-PPA*lUYPhIF=Td8lTE5x63QHO!9>82B%L_`L^|U+X47%GY_o!x@Ep>&*3-UlcQimm0(u{C?Zt6sAb0HWKv=&drX1S1ld?$)tzm_D%`rjG3y7a^9y}fz^s` z-r$S;??kx(bFj()E-BY=Tbj5lnSZNVKN*0-^G^>UU#x;3mTIyZw@}yKKa~AJtp(_x zMd7iWMSLsDeMI}B37W+ZXdGM14~7H213g>(Wsb!D>+TJpl$g6xh~ZETX+Em-Euj1V zZD>ibZ%Yd3lWmJ}be!!#|02#Rv)Li3r*8Gt8j_2R1LVU5G7%WT%U)+P@jbvavR(qA zcDi4??Uw}YY<+BQmF9@nF|+i4fjuea2{6qxSge%9I4YnvKOJpDiOzg-Q%8F*phEV` zko=H|vy&D_G3F`9+c25>Y_gxj?)ZHq`_n#-*!F;QFCII z0Hn-3J(Q_{9F;W}X=h!3P5O9q_*#w{XXa``!WcBeI|JFzFXyEj%1&ssM}pA!E=RwQ6$-~<}NGjs00k5*iDj4T+sgQ)hJ7{DeD{$4Hx91XQq z)6h%<#*y-V%49RPP<*|}2tTz@@gdDxtZP40AAU^*I3RSqK@_IEoV^I=j`s%`p4+Qt zPmMfi?k?|$LKivboh+d+p6v!Az5?2i3$27fUoDjnNlG9}Mv0h;W04MPhDT2fXEtP{_o;1e4Q?)c z^?#B`?E(%c4)DiA0b?Uijw#b82u$|pBE|EnI!59qQBLaJ{=zy<*Yn)Mwjhw?@9gUE zhoa96Z2xvVqqhZ)95vh*>^7)>!+qKE@3sj$1dUQJSG zz9Q+V0DmhyB$B>g2Fd=d>6cr31!lNu!5z;5I_Q<}0Nb$L2}T~i29CLzy>gJ~>3(bU z7@)UJ3|Jij80OFAK!DaIueiUTlBZYq+tK5a5`~F%txkW6$Gi&RpanX8M43d)CM%wj zN8m2i_A0K>lY=il`UvbJ14rVM_UN@QrVhXw5XdMhDAcwcd2}_F$t)OUFvv|l2Mcntu}aYNBt)t*S&j z%Ro_p3g&dFR<(ZnL5M?)MilcLGY_41rfFUAZ^z&F%l^hOlqtd)t5xjwJ+IwXZYstU zUeyH5Z93Io@81HPaxyM0II0zQ;}%Afvjn%jI0@>e*Lp=oVaJbgbpb(MXrRebDk zhpm%WMv;K6SkOzy$PLR(q?~+(7O3yPVP($%+?I2L494(Aew1DNKIluPzwuon7f^~_ zGh^6gV$3tz9S-Q?4`2T0G|EmohSC3YtvH9m6y*^rpB6|3we&sXB2Wv;E1dHf-;_r4`! z=(n8O6y+l8NttJ44zATTK4tB%xK=9ed*9t1y(z6zvdvr4)Jq=n2D)h#T)z$Rj#)Lw zlzo#U#7-Auo{)3IO_(B!Kth#l<`~Ov&|E0(v{4J&*>!1rjrvcRJ1373zCySdh zMch^!)BA9{7N20S9el!9(^$hB=fCurE0DyhcmeK$1M@$f{)>rR8}Pl!eBi7H`Zu&1 zB=G~|nXRa;{7dU=5_m52fbQdK73XD;Fc@^~Qw%`FZrdq#6Fg zaHiDxE815xvj|ss&;{@dE!AWFBx}Fnc8kHJt9h#iKt|g@N-q!{K~@=geognFm2^wk^*`}9FJ!-lsD@2~N(L7X0Y-p6Yw^Lq8L zphR^P<~k>cwBM1MXrEApF#c8^*FH0I9T9VssRc(^%^Z;9a|YR|8I)1S^LnHpX*;urep55 zDvSc0jIr&q&ei0x{!Sn|g#w+uLm1D=9`p47-GG%)Hlc8qGi7*IlzZfAu%lF&!*0jE z3K`y5j1ftpd1g1bhmyC;8X~GV28gNu8w@L zT}H<~5-7Bu%OP(mcyLiYjXmi$zy2rr7p(v^-NrkUIq-bh)hL~!ea&x`fnG6I%x4-G z#|{bqK$dw81oe`6)1&?yKPw@9&z70Hd%d(VhIp~>rQG&qfcbkZd6c*EyhCvt{OlCm zo6R!1IuhQdUs9!8rO8>!r^u^sn~g3#CvIwvW#{FJ??!&&PHW`3l>p@XvMtFHtc)~ zf~$J}md-mzSW@WzfNcP9MlZ+}PDNS1*w-BH3&z-tx5jd)Ot@{Cb$8_X4T1i>Ikdiubz#H!*TiLhK%oyO?-!w0<;xdt@Y9IAcW>~1{4(_0 zm;yh$dVM0pjSIuou;YA6ak_&w92?f~OmFBJ3! z10E(1>Syeq!cohEXIYfK=tr#wTS6;=FFveTg(2yfptaK9)|i_aoPl%*idQw#6m`LdA>Up}t@8@gr#U~eECv%~0zWRnx-0il?*w;)0XuKN0 zl^D$M_TlOQ!iPmxLbz)OpH&IXpt`XqBNrf{f@ zO-|WYYSF*7v#Z<(vB@Xjav0Pqctv^+P;q|0`TNQl4_m{!A-F z=5i^XXgpVMwSoWYz!rhdst;EIrE=6c`@c<3+Vz{#OO*gn79@smKj;QH$YS?m9J(m` z<-s8_Q*;)DO`0?w4-cL6)q%xLESyj;=|V=3FLMH>an%YZ!-PK4eS z9rFONqY||zN@Ey^mlm`U`U?&&L1B>V2}}OJZDE0yxp>)sk4~cjLfMX8anBt|3-&PM z&vn0U>rwobF%TH&4Lxi%2?yMd9;u@qT& zqkI6^@4tgaz}-S1qynor)+PM4m3zvn{+sryfoM>mtCxySpUMLnA}WPm7HBN$ZP~@z?oB{zTi9LQ(C;q3B9i%ht4aMW!1dM%3U3xLZRJ(F zWBY0^S5az9?Ph;?!Ef#0uS$Bw834xI6X8_X&Jke3>xD@&{D~W5xJd<4xIG0L2KXVr zqZ+w9=tQ!*Lj(gvKi2NNmI%_-uw%3_T zbIGdWiS}P(LESFN((CSyK>MF_CjnN=qq8%$=LV=(Req=8p|@lEO#gSOJOx0iwGiw5 zj=n_9sah5n=iNG6iAXWu-d{GG^Aj1Mz9%A^0r2YA2b13`-g(d81SnUFOiCMg3P$@c zJQU?lHVx8gD$y<5F$cOz|2@+G|NH-E;QzrHD5a9vG_I_};WZH*FWT7kXqR9lgmOX=Cd$ zfzKFZGLh_qG{>R|3}eZWfXt;5COhG1s!jh!6WpqNA4ra%G>4Y{Ot_MF<~0fpUh7y6 zV{h0F#smua%?x~-Djp4($mfBrk2PWL$RzG}qF!VA=h&bT`907?`Ib)o4mrvBpyt%R zslcPxp|JL4a1W97mbuF$632Gu`WUvH&mZ)&-8QHoCd1aX-6n*;pYGP7R#~sUPiyL~ z({|j3-*kR|6TF_hK1o!<)14nOkq+F0Q)%7a8%KZ-T8wJE@K2-mFBfmJS;{*nKE191 zeHUq>(ly|<#SB-}R;QAp+$13Np7h6+lTH+^@aDHTplF71PW}6u-=@x6KZDP*SqTfdjEzQq_-| zmNc&i>jfA5gSwGIUCkG5q9&+giDQp(KNKQR#ayurid8Q|?ov+gB%(RIqU527PcxNO zyQWz`?v#oihqD%DB>KbI6ScsH8Q9HJ<4hV-;^q1blTEiA_!^+#$^QBp==irrW6(8l zg|?qDKARv0({=`SJ_62SG#UG=9?0l2k3C>7fh_587P6RO8LZ?8OYZ8oK*CJCsl4oc z)$jgkU%$h;Vh;K}V)|IGXqxjwgEPpx`#0F7_DI*Hx9soG{h68&ausv^@XCHw=FK@I zeN9qL+lp~)tddv^wG^ndZWOI##Rifxnsrc%23)a|H@mp}_Cf1fdhj%5#XywvmXp@z zo|2-WfbSH`WD2nbL)G-4X*DZRxV1SbS5evJ$sGcrgdfV`)!Ji~R_*f<;d!cr^|`~c0XqCgTX{5mt3!*AhbaQ$GNXQO(zq|77BcNsjF+W;L6E(jgjpQqp4Y3#zhEWxkcVa#aCqAhM~L~fm&cU zlKgyZn3U>bgeqUCwvBWK?N)4l;>_R~=&v=x=Jz(09QMX3O{35$x(_}nd3Gq8rHen% zc!kEK&z`i~k=-_a+()?PP&|3Sy!bY)@Z(V!HFk-&xud{aAig)t82+gRC~bJhWpL*F z`uUCB#TFWykn;_iZIJ5k1fSd7Z9Q!!q0SXFFiCF;^g%e{O77wy?$PW71korz8D@>@ zE_BBj*#4|vsB?j3F8q^zJYSgb5vkPF*7RxPXvWl8`|C;Jk+qQOT0V$;UiOF7RrHtZ zyvlzKS(xqIrPz9*_r&LbMNGdVs9$*Hi z|6#}9h?0%~E0N}-)of-ZFT|X$A%;L>%X0nRtjr#h97r2BPj-B-KRc*wk9F@W3P~eg z(Vw-Qd54gnbmNA}O`h8E%PlH>!oTn!3v{uf<9Kn=(W-e1CAeTq4|%Eop&ph{|3!(O zkb4v%Qj|Y(l3Mj6v-+aSY3YnHdR#t1Mr6;+R4S{X63q7LDcSi~z4+h@lse082l)vB z&m-?#<33Ev-n0{H8+Z8gX$Qj~Bpg^)P&zPE8$ZgHH{47V3k_PqEjm;iORA8C_U{wYtxKMEW1QG_J&}QJPUW-+=Evt){mGe2*oBhGlLp*}ds2 zyYX~P8{umk8|-YhG(g zk!2#+8?QX^P)XgO30cL7@pD^6;2KH9H*t=9N}Fio;8#j@;IT-NPg)i_0+kelg!XmA z7Y_qb_vp67wJ3NHST1@Ry4Q4!!Gq^L)~M}(E;$zsYxxXe$y1|5;}ed4 zc4Bh*D_E`7?J+}+>!1UZ$Zh@Nd(^Xq-ZL=Tiss~ro&A%T!)VA%Xe4Uou-q+!O9T6F zCj7bdyQN17b4|h`>!0G1pL}3XrG*`w;60jF9gwj5_qG}IQpno~f8W@=vQ+|dXl)~C z?}*=F?b0q@akBl;RC0(RxZ zl|Pn8^Vmnu3V1Z>5~m5rE|W)p(t7^H9-N@~83y;8Ba57*|%%n z*61jTT5PEgfHkcAaP)2cGV9C+toG>yOl4XzIzJ&jU>rN73{7?-#}&cC?`={~>%+hg z$!;Xy9sD%olZ^7ojx-Nu3c~;vlT#kv9#V~+9p|$1ihgbHY4$T7XD(3bC5-^D+~WC! zZR-)w9GmW#0BpCTa6B;j^4gzg+M4a1fjIWg0R=sROaj6hNpBYSXmg|SG4`m>ujMtq z|H9&WXNo|vjGEa@m;7Wq@1*%X3*&_JB;gH{ zrTIJWlMkEi2WF0Q=}uKpzNd{PgwuF%2cOW|0isLq(zU!}OXR0?r{g zIYttOi>k5qQT+)SYx`mCXg+H#i*V>InrO<`hd)q>`1Lb9*E>&BeQ#f}Th8&7{V#_a z=uyy-r^4mapv~Fq&F)Y9&lu2nr^mNN&S3tahxQdE%>4N2qc_@+iR7{KDvI@}w(zT) zaH$x_`a?}c5wzP*)~wL-BmO3))usHE-lDX-HRDBvXIMApG1?9Pz$=$EW?I!jlTwPC z+o(k5xr!2D!lRi1`C#aHWXpB7?V(Asom22Os1FFHIDWi$CM;T}3$B&$g`12F6Xq@XWju$|W_TC19>O$qi9B?m>Zki!f zW39}kcG39qSJaw>G|xlh}@Z`zHALS+&7#R6y!IwZ8wu3P)EO|Z5@wD;`O ziK1IQ9?5jM1E-Td$xe;3FOP7^ZQB|%kuRnx(&4ALa~lh^=j@4WolEUjwqzL`CH1k6qC zOtm@XfZD|w&K{lW`YcJ?@KgSEgK?w)Rw ztWt;Sc&%=zc=7wLU}6T52|3F6qBmrQZ#9~DAzR=_Lh^$d0cb)Xp?6SlEY8Wa*81Zk zn&Ta;i2&}dwtE&C^Rb0Lao z+w^ti{QAmYXQt#Tj@Mo2iZU_Pez(s3>#(e%?GK;(WyDffL0kP9UmWBqKh&G`!&^*V z5}H<$6^Twiss`5Q^jnj#Kn_vbbOVvHtTh=rL)PGtjXq->NG%d(S^ui(og-&j;^ON6G@@#G z)())`6GCkTz!UW0r%;{1B0>~ZTX8&&Gf$ zD!Y$qOku0EY*7!sGR}{VYu+c{KgshPQsg0ID{V;E6M=Z7iFgtCQ3Ir@iMrD>F!Zrv zi^iu97SKf)gEali_GIc$i$yfoUnW7eihr%xu*@CPcR`1vs==04b4d%^2F>TBn>L>> zDkYvO!012iQ1T-O_>~nEKwY({+tZp=3Sx!Z1 z9bJr`(;3a=8DyV{iO-i5+I82dF2R4{Wi?*T4LzxTFeCK3N3P`?I4rVWqB*=QFU}6! zIC~QNW88HJPE+q`pKmOoXwsCaz#9CG4`ySbqE?lXxv!zyXHN7L56G-I`39m~w;%~eL03ZqQTXyjTwK|4D=9{= z@9Ts4{)4J1>6ixr1!W9;#)N7jd}*YbK1|t1|3E}~@2nfP z3SZe5zuQraJN;C%2BKW_wJ3qxxAVeLSoKZ0+{#bKWrrIc12wsUPu$x>Bj>eT#s^9w zaTV#JR@y&P{FSFXlm-Rqagf^@uk>sQF@q25j!fZ;jNYu3+J_ZHF3Ega4o>zg#@luj zH=T-F{#n1S7ehPx(Apu7Sj>$(?mBV z5n`?mv={sXerJK#PZ66Of6-?g@r&@sx%`Qrp-&^zbG0PO^OO2zkIPw2HOk%&sofOU zjzwL}H4;ZyeLW{dTI`MED&0I0o39r+0OJ#0d(1!J?(UU`HoYx3>E`Ml2eA|YhZZ@^9-h+e@feg#KP*k{~c^^QZbC_BK#|j zO|7NLES7$88*&v>jTt{{sn%cH?VwY2=5?SGP+w44AwOi)@^xcmq-}Pi0z(_!q*NWT z7cST?-TF6F*|Bq`sXmdZ+^_sz!`FgJ#+paJYE9x_^CtBA&ccjxTc%wGoaH9Rw>S8} zb`(KRU+>ra>oFo;*n7c6E)+MC1FFG&;046xgIC=_wP5C0Le?cc84=|QPYu>{E{V03 z__V|Y!Cx3?-4B^K2-e*%GUiQ1B&jZy2)x`N)2t<3cbxP{P|Zh!fOhMiqn4EF?AdYj zvX`G40lKU;+BOFk+th5-^FNz5aIW;=THs&Y*PIpo-)%8&jeGf@)Q>RAmyva)Nx<|~ z8IRO_?CZG7i=ia-(;-Q9knGD(wQ@dqtTP1b*c7{m6Tec3#YaX`tWkpwZ={!Enh=#g-})1eP1Sao82!rwYRZUp_Rn7|etLbBn)%s+=F zU0C=};p@@SnFb`rj8jAX60LQxq`aPdB@D*3jfj{@gs)SXvMdc`LF?%vXubg{PP{9A zNK(XzIoo0R>bkq)NslH$SSnXtLYjg-iLew`)uI{If4T0>N@tNUmCrLv_K^R1vzlyu zPoGoL$)KFFGY6;mj%t*%AK(+RT#ty!s^_crYRk5jwm{c3ZsLXhp|&p>vCMg^n4x;u zwdY^F?TEvA*KK+`+mlYE?em6ejmMt0dnbK{n*k-)u9ai)&u4AshxZwqaqY1T02NaeVvC&Tb9)qT#Jbz~(EoMkaT*PyNz$^1KV+@S1SM z%zUEv8I6gB`9Pcs6J>IT-q(k0mWx&%OBKEi#~f82IkM6*KKNqg2hjb zq1jzziJ*8Lt$3DE7-Iaj6Q6K&_GJ8!e^{#3noq{nVKZ96J8Y4##XQb0An@&*$RP~{ zQ2W1!uq~S%Xg_%GPVpfbU$A^`UvU}pj4(uTYmoqA-yw;O?>hzOo+32x8=dMnS{~*b zox=K7D#458I?Q0!VlN4N_DJhtI7fyAFfNVMCgP3?y`NXxOt`f)Eexbx=%u4M3n>U6 zX+(p9b;}p07e-i`cxIz7A*=1Gby{=h^LmwwWbc#4|C~e0lVMN7%Z^$`PyKX(9m=j) zaXV~wQuU{!M+}!V*eZbVT8iZ!Ruvh9n*Ey>7uq8@O0ejA^e0z)2h_O&k2|o(m#J)@ zwhM+HFSZ}^d8;vHBOH&H6LNB?)SYqjDm#RYKZLiyc&&3^Q1b{7yl_Fkb*+iMJWa;N zZ``D2T@xZXWf9lu56Nu)kb2ZS^z5zakyo0AJSdzK9 zZ~Oj=Myp5TYd_pAJt%D%-xa7|MA ze{>h#n>t%LUQ~L;ku*^F{*kiQFPHKTS3e%NUZ?5^!+h%&Zg+h8=l;O%Efa;eLL zoLn$l%#&EbC(3^^R{3PY4O`6Dyw06v1OqghT)8by#F7>o= zFZ>ov{Yb3s&e@+jwtS+z@33W8iVO}3eR0!T@||k!IGuT0*cpZOoUb{ld|DJ01>Y#k^s2f*&Pf|b0>%IDL~BSlXD9}E1JT^KcRWq@?L zfiC?h4UFE}@S1`pN0MVH{iE9%T6fi_j?64VB`vu(s&v?swI}cGg|p5o-a8{>tLRR) zVXVf>T^RpSrdSU>9q{wnx(fr@c2U) zWLNocO!p(ws)L~wG@0nv=NDp{LX&oxD219mklKyL05}qLGM=` zN%le615Ps-%8JF;BJipKmwu}v_OS^ZGBStrc2dZ{w#ulrdUAUz%|i?tCl)U4j9Q3s zuZ2iF>jv}p)Lkf-R?hv)oS!?vR-N4Ago|=gwc;PpbQ)Q1b5`dQ7SO@#i6%SLxYymO zA1dfDY0UtN|K|%h?9Nn@tf0|izU$WVZ2Uc)h&m6R}N%OR=Id2-R94XI>xQ+lfZ64J&YWJ^c4p+?g$MU>> zZ#B+tLfax@V(Nwe^$NI?b$Of!PCr7z+UhDs4v@rMTfb~I9I~bAoYRBp)Hq07sSbh? z=c!pKh-hQ;%T_;R`d_S-t79HkIQ{g){qZmVy8T-RMaDIruypUw5c2&+{HF^>(pR(t z%#`*9E*j}wyC3)^4IIiYJKKhSjFas*9wJ`GmMML9N``9E3S^Rp6JV1mJx}%u4GD21 zX>4&l&EM9SvQGBBm|K69UKVlxOuy6T>^Ew*BHdN;h)Mx@YnLyxI$p_;Y*?aR{vr!k z5eeCXxEd;exBN*}>!S2*L+~Xq+Arjhk8M~As@vphKO@Y=^V_7xgpA|e{-LJ&^)gha z``{QnZ!IB^-BcQ$rnc6^J?2bagB8@v`Vt_s>)A0xw6q)uR$hDjBoW&MEvwe zUo~#VhNpzI>K)J2go%&%S=Yymp1O%PmR|W$$F?N-+{q+(g0I)jW3sn$psz^8*EaHR z>z(Ez$>h<(WGp7o8a;1^}$S7&Bn2`0Z;^eOg66UY|)&#oQ*pfq^)yJUO;M} zwVkAIK32DId@8=#OlI!YPo-0lOBlZ+W`iji)2$swX5(5vb0K=7uD31EDmcNClgoM>(7whdPWB&E zZI--HRy)~;RKg-oJ`nL;!A7!*?wd`xKEr?7x2;&tADxp^74bfjb>oR(qx7WWUSiQv zM0b)T3z~iSrQTHB`ys-I8dbzTF3yXu`?p2-9@J2U9(*PDo$&>5c(|2|=78wKQx&skWU}XR2$Dg*gq2KqWoNo{XW>Rc z;HygUx$kP+09! z3*W&WAKL6X$z_XpLjN)t6HxG{d%-i7zklBGYxfh&>S~W=8Q8}0wa8A287$b(!=LcI z|7=d59tP?96rmd|SY>q6jequ)?d|-sxw8zo+DpxG#sZp?Y^Yd`s@abEF9Ty4P*i_P z+owV67qflxC( z2-l7=-fUyQPw>I*E>;kK@nRe0ZP=8+lf&Y*4*aXpmm+4t-cJ&Q!3^ zaL*V?wC1xE6v$L8yY{r?pb2ft?zq)+J{{4zcI8eaO88smWrPmk;~xYDQt2u)`yGqb zy0<>_V*50k5k1du?rN+{>@N*Y3J*U(xRBHM7Zf?u)ODI&U}EABfy1u*hiqA%AbLJ?AL1=p zQ0x{Jl+2$SXnz@hTu-m~m;ftFsq$cl`N&#z?_viX_r{*OaE)i)~8?gNKx`* zTB55pUuFr`D1Qo;)#s1Hs%{a1{+0F`i87fw$%|x;Zxd~_#BvK zpfTCL;uwj5E4L;=`A$!V8>1>~@kEzsT`vAUt9TKOPEvqrdV*e`lY!%PHw7 zuJDC47{nZGvOcD4o`_v5?wOUlEVXAU)-u=z5n0okSpKt?51s+z9z5g{n*SFfLhvBx z^0^KB1;QTiou0I-d*}HutyUI7tWd$}l1H~530V$S3KD8wsgMu-N>x*$>Fw<$2i}yKl~qXF(A62N($Md-BxC%^;@)=hKMg0 zmzVDDfQR5F|1rY?k+!=>ME~;rM%d+@9;3B)MIxIVS7$pzlAZQVePh_LEIG(71|A=I zRoD8uwc;qK>Q*RwF%M~*tH*UN7bww{HU1@vdTbh6qqr_iHR+7*p)Y<5bV^bF;x3d? zGgEJMOF|w!eA>R$xAeS&Z-UGTx{M8fh|yN1a^%PZ_U(jX!=m)lp^fFA;pa8tB1I6+ zsl_rPm!i*}Pk-5J67c;Qv;{n-)vMUXMVMlkYUYP;O z*I9)k4RWT&^mZPgdUKr!Jro>#$`ik#xkWsqJr|)kHF~8c$PjfyG0j6mL4B$u3Q@jC z|4^HwYUq1u?~;O|a}DjzFYIFWdZ3Im%4?s?kIN%9MdX}AO(g>aPB1gq>s=4c%B^_Y z=YcpZVJHA#{=3K)=|t~~2lhgI?{T2jydV=#7V zvhLi1EUqFeQLoiDh?*i|$|uDBDS9nx^GhPHYQ8(&m3Y-Q?8R9v8)45l;Yk?H&hA?6metEFWkq1!n#X|}7${#<$rd$3f3yay@Z^0!vId{Crl z&6O-Fe9$rsc2*=Ay5siSv&aYYVUe4Ewp!IgsAospcnfAH1;7H|da^Gy&cOmKG9q%j z=zCtUeuM~a!i6HGC?fn?Yw3im{a9qjq6(KISL3J5Z_c(SDJUB(K5p4ugVmWX9KI=d zA?8gDOR$#>wLRH>`hz^eMzmCF6DoenBTWMgGy~%fOCTUBo@4IS`<4;%p&va`5JtYT z-My8-w=^S@ubj=d%p1HG$`*k>DZb%9yJ~w)=$Hmr5p#0#WZ3$wbcmrqW$iWIv@lvh z=U{OtX58=1XPtYjYu&Biq$27ykWVEDflo`awut_3*6ELaup{Y_{;Ji%J5x0*!s1mc znMn#f<}MQ{st}tw(k8Jj8)qZ`Ohj<`KzOfGr5uC8#OxEN#+PVIj0NPwGy6u+w~1~g>}v_VeMzW=lI{U6GA1)JofA`zZeT!f2NQC6d> zT!p%f4$=?p&7J_>11(y|)Mu@oDtTTsWk9Fel=9u@hvv?6XOaD93gMNbaMtz{$Ml>v U5H7;=2b)(Zr>Bwc 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 Date: Wed, 8 Jul 2026 22:28:43 +0100 Subject: [PATCH 5/5] removing author and cleaning js / css --- README.md | 2 + assets/avatars/aphy.jpeg | Bin 122624 -> 0 bytes assets/avatars/future-z.jpeg | Bin 120219 -> 0 bytes assets/avatars/lima.jpg | Bin 126166 -> 0 bytes assets/avatars/sensei-chi.jpeg | Bin 153793 -> 0 bytes assets/avatars/young-z.jpeg | Bin 93972 -> 0 bytes assets/avatars/z.jpeg | Bin 112258 -> 0 bytes assets/scripts/application/theme-switcher.js | 32 + assets/scripts/ash-below-lake.js | 1013 +---- assets/scripts/bigger-picture.min.js | 8 +- assets/scripts/comments.js | 203 +- assets/scripts/competency-status-board.js | 247 +- assets/scripts/features/comments.js | 196 + assets/scripts/features/hidden-details.js | 624 +++ assets/scripts/gallery-init.js | 322 +- assets/scripts/hidden-details.js | 692 +--- assets/scripts/lunr.js | 3482 +---------------- assets/scripts/mermaid.min.js | 2817 +------------ assets/scripts/notes.js | 153 +- assets/scripts/pages/ash-below-lake.js | 1008 +++++ .../scripts/pages/competency-status-board.js | 240 ++ assets/scripts/pages/home-dashboard.js | 313 ++ assets/scripts/pages/notes.js | 148 + assets/scripts/pages/play.js | 866 ++++ assets/scripts/pages/sitemap-interactive.js | 398 ++ assets/scripts/pages/wird-tracker.js | 1787 +++++++++ assets/scripts/play.js | 871 +---- assets/scripts/script.js | 354 +- assets/scripts/sitemap-interactive.js | 401 +- assets/scripts/svg-pan-zoom.min.js | 34 +- assets/scripts/ui/copy-buttons.js | 19 + assets/scripts/ui/countdown.js | 38 + assets/scripts/ui/footnote-sidenotes.js | 50 + assets/scripts/ui/gallery-init.js | 315 ++ assets/scripts/ui/mermaid-diagrams.js | 101 + assets/scripts/ui/toc-active-link.js | 88 + assets/scripts/vendor/bigger-picture.min.js | 1 + assets/scripts/vendor/lunr.js | 3475 ++++++++++++++++ assets/scripts/vendor/mermaid.min.js | 2811 +++++++++++++ assets/scripts/vendor/svg-pan-zoom.min.js | 27 + assets/scripts/wird-tracker.js | 1792 +-------- assets/scripts/zhd.js | 316 +- assets/styles/base/elements.css | 226 ++ assets/styles/bigger-picture.min.css | 9 +- assets/styles/comments.css | 119 +- assets/styles/components/comments.css | 118 + assets/styles/components/kanban.css | 251 ++ assets/styles/components/mermaid.css | 76 + assets/styles/components/notes-board.css | 281 ++ assets/styles/components/org-content.css | 502 +++ assets/styles/components/org-syntax.css | 95 + assets/styles/features/hidden-details.css | 289 ++ assets/styles/hidden-details.css | 327 +- assets/styles/kanban.css | 252 +- assets/styles/layout/site-shell.css | 162 + assets/styles/media.css | 135 +- assets/styles/misc.css | 503 +-- assets/styles/org-syntax.css | 96 +- assets/styles/pages/home-dashboard.css | 648 +++ assets/styles/pages/play.css | 832 ++++ assets/styles/pages/wird-tracker.css | 1888 +++++++++ assets/styles/play.css | 833 +--- assets/styles/style.css | 880 +---- assets/styles/themes/tokens.css | 110 + assets/styles/utilities/responsive.css | 134 + assets/styles/vendor/bigger-picture.min.css | 8 + assets/styles/wird-tracker.css | 1889 +-------- assets/styles/zhd.css | 649 +-- blogs/2026/05-may/characters-12-05.org | 12 - blogs/blogs-list.org | 2 +- build-logs/org-web-build.log | 6 - docs/assets-architecture.md | 34 + lima/lima-list.org | 4 +- lisp/build-assets.el | 35 +- posts/career/career-list.org | 6 +- posts/career/requirements-features.org | 4 +- posts/posts-list.org | 8 +- recently-updated.org | 4 +- sitemap.org | 462 +-- tags/learning.org | 6 +- tags/notes.org | 6 +- 81 files changed, 18580 insertions(+), 18565 deletions(-) delete mode 100644 assets/avatars/aphy.jpeg delete mode 100644 assets/avatars/future-z.jpeg delete mode 100644 assets/avatars/lima.jpg delete mode 100644 assets/avatars/sensei-chi.jpeg delete mode 100644 assets/avatars/young-z.jpeg delete mode 100644 assets/avatars/z.jpeg create mode 100644 assets/scripts/application/theme-switcher.js create mode 100644 assets/scripts/features/comments.js create mode 100644 assets/scripts/features/hidden-details.js create mode 100644 assets/scripts/pages/ash-below-lake.js create mode 100644 assets/scripts/pages/competency-status-board.js create mode 100644 assets/scripts/pages/home-dashboard.js create mode 100644 assets/scripts/pages/notes.js create mode 100644 assets/scripts/pages/play.js create mode 100644 assets/scripts/pages/sitemap-interactive.js create mode 100644 assets/scripts/pages/wird-tracker.js create mode 100644 assets/scripts/ui/copy-buttons.js create mode 100644 assets/scripts/ui/countdown.js create mode 100644 assets/scripts/ui/footnote-sidenotes.js create mode 100644 assets/scripts/ui/gallery-init.js create mode 100644 assets/scripts/ui/mermaid-diagrams.js create mode 100644 assets/scripts/ui/toc-active-link.js create mode 100644 assets/scripts/vendor/bigger-picture.min.js create mode 100644 assets/scripts/vendor/lunr.js create mode 100644 assets/scripts/vendor/mermaid.min.js create mode 100644 assets/scripts/vendor/svg-pan-zoom.min.js create mode 100644 assets/styles/base/elements.css create mode 100644 assets/styles/components/comments.css create mode 100644 assets/styles/components/kanban.css create mode 100644 assets/styles/components/mermaid.css create mode 100644 assets/styles/components/notes-board.css create mode 100644 assets/styles/components/org-content.css create mode 100644 assets/styles/components/org-syntax.css create mode 100644 assets/styles/features/hidden-details.css create mode 100644 assets/styles/layout/site-shell.css create mode 100644 assets/styles/pages/home-dashboard.css create mode 100644 assets/styles/pages/play.css create mode 100644 assets/styles/pages/wird-tracker.css create mode 100644 assets/styles/themes/tokens.css create mode 100644 assets/styles/utilities/responsive.css create mode 100644 assets/styles/vendor/bigger-picture.min.css create mode 100644 docs/assets-architecture.md diff --git a/README.md b/README.md index 5b4e04b..972e623 100755 --- a/README.md +++ b/README.md @@ -4,6 +4,8 @@ This repository contains code for the website https://zainezq.com, which serves The site is written using Emacs and Org-mode, and exported using the `org-publish` functionality. See the `build-site.el` script for details on how the site is built and published. +Asset structure and frontend boundaries are documented in `docs/assets-architecture.md`. + ## Local authoring UI The authoring UI now lives in `/home/zaine/master-folder/org-platform/authoring-service`. diff --git a/assets/avatars/aphy.jpeg b/assets/avatars/aphy.jpeg deleted file mode 100644 index e1da5d40dc766a10a8d26d1125f5625227b524fa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 122624 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 z%0D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

+7SVc(wg}UgUCMy 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 LAPkZ*LKpwprO#wF diff --git a/assets/avatars/future-z.jpeg b/assets/avatars/future-z.jpeg deleted file mode 100644 index 5511e9c4400e961cfa5f4522b96cc49786d37b11..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 120219 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�I6>_)BLd*2-yo&& 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 M0MgkOino>j14In)mjD0& diff --git a/assets/avatars/z.jpeg b/assets/avatars/z.jpeg deleted file mode 100644 index ea4b0eb6af19819c1ffe9a656e715e57db601266..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 112258 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

9*w_m_yS6Za1AN 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%0DQoQsA~R#xr6(k?&J98XSL!e3t=aK%FxwxD@M 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 sQ`YOvi_@% diff --git a/assets/scripts/application/theme-switcher.js b/assets/scripts/application/theme-switcher.js new file mode 100644 index 0000000..71979f3 --- /dev/null +++ b/assets/scripts/application/theme-switcher.js @@ -0,0 +1,32 @@ +/* Function for setting the theme */ +(function(){ + const root = document.documentElement; + const storageKey = "theme"; + const themes = ["light", "dark", "dark-academia"]; + const labels = { + "light": "Light", + "dark": "Dark", + "dark-academia": "Academia" + }; + const saved = localStorage.getItem(storageKey); + if (themes.includes(saved)) { + root.setAttribute("data-theme", saved); + } + const btn = document.getElementById("theme-toggle"); + if (!btn) return; + const updateButton = () => { + const current = root.getAttribute("data-theme"); + const label = labels[current] || "Auto"; + btn.textContent = `Theme: ${label}`; + btn.setAttribute("aria-label", `Current theme: ${label}. Switch theme.`); + }; + updateButton(); + btn.addEventListener("click", () => { + const current = root.getAttribute("data-theme"); + const index = themes.indexOf(current); + const target = themes[index === -1 ? 1 : (index + 1) % themes.length]; + root.setAttribute("data-theme", target); + localStorage.setItem(storageKey, target); + updateButton(); + }); +})(); diff --git a/assets/scripts/ash-below-lake.js b/assets/scripts/ash-below-lake.js index 5aa74cd..cd3483c 100644 --- a/assets/scripts/ash-below-lake.js +++ b/assets/scripts/ash-below-lake.js @@ -1,1008 +1,7 @@ (function () { - const slot = "ash-below-the-lake"; - const fallbackKey = "play:rpg:ash-below-the-lake"; - const tile = 32; - const cols = 30; - const rows = 15; - const worldH = tile * rows; - const uiY = worldH; - const actions = ["Confront", "Listen", "Forget"]; - const areas = { - harbor: { - name: "Harbor Row", - act: "Act 1", - track: "harbor", - floor: ["#222c36", "#263541", "#304650"], - accent: "#e0a451", - walls: rects([[0, 0, 30, 1], [0, 14, 30, 1], [0, 0, 1, 15], [29, 0, 1, 15], [3, 3, 5, 2], [12, 2, 4, 3], [20, 3, 6, 2], [5, 11, 7, 1], [17, 10, 5, 1]]), - exits: [{ x: 28, y: 7, to: "red", px: 1, py: 7 }], - props: [{ kind: "lake", x: 1, y: 11, w: 28, h: 3 }, { kind: "stall", x: 9, y: 5 }, { kind: "flowers", x: 23, y: 9 }], - start: { x: 3, y: 8 } - }, - red: { - name: "The Red Streets", - act: "Act 1", - track: "red", - floor: ["#2f1f2c", "#442237", "#5b283f"], - accent: "#db4f62", - walls: rects([[0, 0, 30, 1], [0, 14, 30, 1], [0, 0, 1, 6], [0, 9, 1, 6], [29, 0, 1, 15], [4, 3, 4, 3], [12, 4, 3, 8], [20, 2, 5, 3], [22, 9, 4, 2]]), - exits: [{ x: 0, y: 7, to: "harbor", px: 28, py: 7 }, { x: 28, y: 12, to: "roots", px: 1, py: 12 }], - props: [{ kind: "sign", x: 9, y: 3 }, { kind: "stage", x: 17, y: 6 }, { kind: "poster", x: 26, y: 4 }], - start: { x: 2, y: 7 } - }, - roots: { - name: "The Roots", - act: "Act 2", - track: "roots", - floor: ["#182725", "#203832", "#2e493e"], - accent: "#66c7a2", - walls: rects([[0, 0, 30, 1], [0, 14, 30, 1], [0, 0, 1, 11], [0, 13, 1, 2], [29, 0, 1, 15], [5, 2, 2, 10], [11, 5, 7, 1], [15, 8, 2, 5], [22, 3, 3, 9]]), - exits: [{ x: 0, y: 12, to: "red", px: 28, py: 12 }, { x: 28, y: 4, to: "chapel", px: 1, py: 4 }], - props: [{ kind: "archive", x: 8, y: 8 }, { kind: "root", x: 18, y: 3 }, { kind: "home", x: 25, y: 11 }], - start: { x: 2, y: 12 } - }, - chapel: { - name: "The Drowned Chapel", - act: "Act 3", - track: "chapel", - floor: ["#172232", "#1c3043", "#263b4f"], - accent: "#8bd3ff", - walls: rects([[0, 0, 30, 1], [0, 14, 30, 1], [0, 0, 1, 3], [0, 6, 1, 9], [29, 0, 1, 15], [6, 4, 3, 7], [13, 2, 4, 3], [19, 4, 3, 7], [10, 12, 10, 1]]), - exits: [{ x: 0, y: 4, to: "roots", px: 28, py: 4 }, { x: 28, y: 10, to: "shore", px: 1, py: 10 }], - props: [{ kind: "pew", x: 10, y: 7 }, { kind: "pew", x: 16, y: 7 }, { kind: "glass", x: 14, y: 5 }], - start: { x: 2, y: 4 } - }, - shore: { - name: "The Hollow Shore", - act: "Final Act", - track: "shore", - floor: ["#111827", "#1b2440", "#211c33"], - accent: "#f1f5f9", - walls: rects([[0, 0, 30, 1], [0, 14, 30, 1], [0, 0, 1, 9], [0, 12, 1, 3], [29, 0, 1, 15], [7, 3, 3, 2], [16, 2, 2, 10], [22, 7, 4, 1]]), - exits: [{ x: 0, y: 10, to: "chapel", px: 28, py: 10 }], - props: [{ kind: "lake", x: 2, y: 10, w: 27, h: 4 }, { kind: "flowers", x: 5, y: 6 }, { kind: "rift", x: 24, y: 4 }], - start: { x: 2, y: 10 } - } - }; - const characters = { - ilyas: { name: "Ilyas", colors: ["#3d2b2f", "#e3b27f", "#334b7a", "#f2f0e6"] }, - mira: { name: "Mira", colors: ["#21191e", "#d98d70", "#b73550", "#f6d36f"] }, - ferryman: { name: "Ferryman", colors: ["#151719", "#dad9cd", "#56616d", "#0b0d10"] }, - cinder: { name: "Brother Cinder", colors: ["#1d1512", "#d59667", "#6b2e2f", "#f4c35c"] }, - sibling: { name: "Your Sibling", colors: ["#1d2531", "#bec8d8", "#52616f", "#dbeafe"] }, - vendor: { name: "Maribel", colors: ["#2a2023", "#d5a06f", "#3d7b65", "#ffd166"] }, - performer: { name: "Velvet Noon", colors: ["#2a1724", "#f2bd93", "#8f244d", "#ffe6a8"] }, - archivist: { name: "Memory Archivist", colors: ["#151f1d", "#b9ddc9", "#386b5c", "#dff7eb"] } - }; - const npcs = { - mira: { character: "mira", area: "harbor", x: 10, y: 8 }, - ferryman: { character: "ferryman", area: "harbor", x: 25, y: 10 }, - vendor: { character: "vendor", area: "harbor", x: 9, y: 6 }, - performer: { character: "performer", area: "red", x: 17, y: 8 }, - archivist: { character: "archivist", area: "roots", x: 9, y: 9 }, - cinder: { character: "cinder", area: "chapel", x: 15, y: 6 }, - sibling: { character: "sibling", area: "shore", x: 24, y: 8 } - }; - const items = { - letter: { name: "Wet Letter", area: "harbor", x: 5, y: 10 }, - bell: { name: "Brass Bell", area: "red", x: 27, y: 5 }, - photo: { name: "Blurred Photo", area: "roots", x: 13, y: 9 }, - cinderKey: { name: "Chapel Key", area: "chapel", x: 22, y: 12 } - }; - const encounters = { - first_erased: { - title: "First Erased Person", - area: "red", - x: 6, - y: 9, - hp: 18, - text: "A person-shaped absence blocks the alley. Their outline mouths a name no one else can hear.", - bullets: "drift" - }, - root_husk: { - title: "Root Husk", - area: "roots", - x: 21, - y: 9, - hp: 24, - text: "A house nobody remembers learned to walk. It wants its rooms back.", - bullets: "rain" - }, - chapel_memory: { - title: "Choir of Ash", - area: "chapel", - x: 11, - y: 10, - hp: 30, - text: "Voices rise from the drowned pews. Every note sounds like an apology.", - bullets: "spiral" - } - }; - - window.AshBelowLakeRpg = function init(root) { - const canvas = root.querySelector("[data-rpg-canvas]"); - const ctx = canvas.getContext("2d"); - const els = { - speaker: root.querySelector("[data-rpg-speaker]"), - line: root.querySelector("[data-rpg-line]"), - area: root.querySelector("[data-rpg-room]"), - route: root.querySelector("[data-rpg-route]"), - resolve: root.querySelector("[data-rpg-hearts]"), - journal: root.querySelector("[data-rpg-quests]"), - inventory: root.querySelector("[data-rpg-inventory]"), - status: root.querySelector("[data-rpg-status]") - }; - const ui = buildUi(root); - const audio = makeAudio(); - let state = freshState(); - let keys = new Set(); - let last = performance.now(); - let saveBusy = false; - let backendAvailable = true; - - bind(); - loadLocal(); - requestAnimationFrame(frame); - - function freshState() { - return { - started: false, - mode: "title", - area: "harbor", - player: { x: 3, y: 8, facing: "down", step: 0 }, - route: "Undecided", - resolve: 20, - toldName: null, - flags: {}, - inventory: [], - memories: [ - { id: "letter", text: "Your sibling's letter says: Don't let the lake remember your name.", stable: true }, - { id: "town", text: "Morrow's End smiles like a town in a postcard someone tried to burn.", stable: true } - ], - forgets: 0, - listens: 0, - confronts: 0, - companion: false, - battle: null, - ending: null, - dialogue: { speaker: "The Letter", line: "Don't let the lake remember your name." } - }; - } - - function buildUi(rootEl) { - const panel = rootEl.querySelector(".rpg-panel"); - const actionsWrap = document.createElement("div"); - actionsWrap.className = "ash-choicebar"; - actionsWrap.innerHTML = actions.map((name) => ``).join(""); - panel.insertBefore(actionsWrap, panel.querySelector(".rpg-list")); - const meter = document.createElement("div"); - meter.className = "ash-memory-meter"; - meter.innerHTML = "Lake Memory"; - panel.insertBefore(meter, actionsWrap); - const nameBox = document.createElement("form"); - nameBox.className = "ash-name-form"; - nameBox.innerHTML = ""; - panel.insertBefore(nameBox, meter); - return { - actionButtons: Array.from(actionsWrap.querySelectorAll("button")), - memoryFill: meter.querySelector("[data-ash-memory-fill]"), - nameForm: nameBox, - nameInput: nameBox.querySelector("[data-ash-name]") - }; - } - - function bind() { - root.querySelector("[data-rpg-start]").addEventListener("click", start); - root.querySelector("[data-rpg-save]").addEventListener("click", save); - root.querySelector("[data-rpg-load]").addEventListener("click", () => load(true)); - root.querySelector("[data-rpg-reset]").addEventListener("click", newGame); - root.querySelector("[data-rpg-sound]").addEventListener("click", () => { - audio.start(); - audio.setTrack(state.started ? areas[state.area].track : "title"); - els.status.textContent = audio.supported() ? "Sound on." : "This browser does not expose Web Audio."; - }); - root.querySelector("[data-rpg-act]").addEventListener("click", act); - root.querySelectorAll("[data-rpg-move]").forEach((button) => { - button.addEventListener("click", () => move(button.dataset.rpgMove)); - }); - ui.actionButtons.forEach((button) => button.addEventListener("click", () => chooseBattle(button.dataset.ashAction))); - ui.nameForm.addEventListener("submit", (event) => { - event.preventDefault(); - tellName(ui.nameInput.value.trim() || "Ilyas"); - }); - window.addEventListener("keydown", (event) => { - if (!root.isConnected || ["INPUT", "TEXTAREA"].includes(event.target.tagName)) return; - if (["ArrowUp", "ArrowDown", "ArrowLeft", "ArrowRight", "w", "a", "s", "d", " ", "Enter", "Escape"].includes(event.key)) event.preventDefault(); - keys.add(event.key.toLowerCase()); - audio.start(); - if (event.key === " " || event.key === "Enter") act(); - if (event.key === "Escape" && state.mode === "battle") leaveBattle("You step back from the memory and let it breathe."); - }); - window.addEventListener("keyup", (event) => keys.delete(event.key.toLowerCase())); - } - - function start() { - audio.start(); - state.started = true; - state.mode = "world"; - state.dialogue = { speaker: "Ilyas", line: "The letter is damp, but the ink has not run. Morrow's End waits beyond the harbor lamps." }; - audio.setTrack(areas[state.area].track); - save(); - } - - async function newGame() { - state = freshState(); - localStorage.removeItem(fallbackKey); - if (backendAvailable) { - try { - const response = await fetch(`/api/play/rpg/save/${slot}`, { method: "DELETE" }); - if (response.status === 404) els.status.textContent = "New game started locally. There was no backend save to clear."; - } catch (_error) { - backendAvailable = false; - } - } - audio.setTrack("title"); - if (!els.status.textContent.includes("backend save to clear")) { - els.status.textContent = backendAvailable ? "New game started and local save cleared." : "New game started locally. Backend save endpoint is not reachable."; - } - renderHud(); - } - - async function save() { - localStorage.setItem(fallbackKey, JSON.stringify(state)); - if (saveBusy || !backendAvailable) { - els.status.textContent = backendAvailable ? "Save already running." : "Saved locally. Backend save endpoint is not available."; - return; - } - saveBusy = true; - try { - const response = await fetch(`/api/play/rpg/save/${slot}`, { - method: "PUT", - headers: { "Content-Type": "application/json" }, - body: JSON.stringify({ payload: state }) - }); - if (response.status === 404) { - backendAvailable = false; - els.status.textContent = "Saved locally. Backend save endpoint is not deployed yet."; - } else { - els.status.textContent = response.ok ? "Saved to backend." : "Saved locally. Backend rejected the save."; - } - } catch (_error) { - backendAvailable = false; - els.status.textContent = "Saved locally. Backend save API was not reachable."; - } finally { - saveBusy = false; - } - } - - async function load(allowBackend) { - if (loadLocal("Loaded local save.")) return; - if (!allowBackend || !backendAvailable) { - els.status.textContent = backendAvailable ? "No local save found." : "No local save found. Backend save endpoint is not available."; - return; - } - try { - const response = await fetch(`/api/play/rpg/save/${slot}`); - if (response.status === 404) { - els.status.textContent = "No save file exists yet. Press Save after starting a game to create one."; - return; - } - if (!response.ok) { - els.status.textContent = "No local save found. Backend did not return a save."; - return; - } - const data = await response.json(); - state = normalize(data.payload); - localStorage.setItem(fallbackKey, JSON.stringify(state)); - els.status.textContent = "Loaded from backend."; - audio.setTrack(state.started ? areas[state.area].track : "title"); - } catch (_error) { - backendAvailable = false; - els.status.textContent = "No local save found. Backend save API was not reachable."; - } - } - - function loadLocal(message) { - const local = localStorage.getItem(fallbackKey); - if (local) { - state = normalize(JSON.parse(local)); - if (message) els.status.textContent = message; - audio.setTrack(state.started ? areas[state.area].track : "title"); - return true; - } - audio.setTrack(state.started ? areas[state.area].track : "title"); - return false; - } - - function normalize(candidate) { - const base = freshState(); - const next = Object.assign(base, candidate || {}); - next.player = Object.assign(base.player, (candidate && candidate.player) || {}); - next.flags = Object.assign({}, (candidate && candidate.flags) || {}); - next.inventory = Array.isArray(next.inventory) ? next.inventory.filter((id) => items[id]) : []; - next.memories = Array.isArray(next.memories) ? next.memories : base.memories; - next.area = areas[next.area] ? next.area : "harbor"; - next.dialogue = Object.assign(base.dialogue, (candidate && candidate.dialogue) || {}); - return next; - } - - function frame(now) { - const dt = Math.min(48, now - last); - last = now; - update(dt); - draw(now); - renderHud(); - requestAnimationFrame(frame); - } - - function update(dt) { - if (state.mode !== "world") return; - const dir = keyDirection(); - if (!dir) return; - state.player.step += dt; - if (state.player.step < 115) return; - state.player.step = 0; - move(dir); - } - - function keyDirection() { - if (keys.has("arrowup") || keys.has("w")) return "up"; - if (keys.has("arrowdown") || keys.has("s")) return "down"; - if (keys.has("arrowleft") || keys.has("a")) return "left"; - if (keys.has("arrowright") || keys.has("d")) return "right"; - return null; - } - - function move(direction) { - if (state.mode !== "world" || !state.started || state.ending) return; - const delta = { up: [0, -1], down: [0, 1], left: [-1, 0], right: [1, 0] }[direction]; - state.player.facing = direction; - const nx = state.player.x + delta[0]; - const ny = state.player.y + delta[1]; - const area = areas[state.area]; - const exit = area.exits.find((item) => item.x === nx && item.y === ny); - if (exit && canEnter(exit.to)) { - state.area = exit.to; - state.player.x = exit.px; - state.player.y = exit.py; - audio.setTrack(areas[state.area].track); - remember(`Entered ${areas[state.area].name}.`, true); - say("Morrow's End", areaEnterLine(state.area)); - save(); - return; - } - if (area.walls.has(`${nx},${ny}`) || npcAt(nx, ny) || nx < 0 || nx >= cols || ny < 0 || ny >= rows) return; - state.player.x = nx; - state.player.y = ny; - const found = itemAt(nx, ny); - if (found) take(found); - const encounter = encounterAt(nx, ny); - if (encounter && !state.flags[`encounter_${encounter}`]) startBattle(encounter); - } - - function canEnter(to) { - if (to === "chapel" && !state.flags.rootsTruth && state.forgets < 2) { - say("Ferryman", "The chapel is under the lake. It only opens for truth, or for forgetting."); - return false; - } - if (to === "shore" && !state.flags.cinderMet) { - say("Brother Cinder", "The shore is not a place. It is a decision. Hear me first."); - return false; - } - return true; - } - - function act() { - audio.start(); - if (!state.started) return start(); - if (state.mode === "battle") return chooseBattle("listen"); - if (state.ending) return; - const front = inFront(); - const npc = npcAt(front.x, front.y) || npcAt(state.player.x, state.player.y); - if (npc) return talk(npc); - const found = itemAt(state.player.x, state.player.y); - if (found) return take(found); - const special = propAt(front.x, front.y) || propAt(state.player.x, state.player.y); - if (special) return inspectProp(special); - if (state.area === "shore" && state.player.x > 22 && state.player.y > 8) return finalChoice(); - say("Ilyas", "The town holds its breath. Somewhere, water knocks against stone."); - } - - function inFront() { - const d = { up: [0, -1], down: [0, 1], left: [-1, 0], right: [1, 0] }[state.player.facing] || [0, 1]; - return { x: state.player.x + d[0], y: state.player.y + d[1] }; - } - - function npcAt(x, y) { - return Object.keys(npcs).find((id) => { - const npc = npcs[id]; - return npc.area === state.area && npc.x === x && npc.y === y && !forgottenNpc(id); - }); - } - - function itemAt(x, y) { - return Object.keys(items).find((id) => { - const item = items[id]; - return item.area === state.area && item.x === x && item.y === y && !state.inventory.includes(id); - }); - } - - function encounterAt(x, y) { - return Object.keys(encounters).find((id) => { - const e = encounters[id]; - return e.area === state.area && e.x === x && e.y === y; - }); - } - - function propAt(x, y) { - return areas[state.area].props.find((prop) => x >= prop.x && x < prop.x + (prop.w || 1) && y >= prop.y && y < prop.y + (prop.h || 1)); - } - - function take(id) { - state.inventory.push(id); - audio.sfx("item"); - if (id === "letter") remember("The wet letter refuses to dry.", true); - if (id === "photo") remember("A photo shows you beside someone whose face keeps changing.", true); - if (id === "cinderKey") state.flags.chapelKey = true; - say("Found", `${items[id].name} added to your bag.`); - save(); - } - - function talk(id) { - audio.sfx("talk"); - if (id === "mira") { - state.companion = true; - state.flags.metMira = true; - remember("Mira remembers what other people lose.", true); - say("Mira", state.forgets > 1 ? "You keep looking through people like windows. Don't do that to me, okay?" : "You look lost. Good. Everyone interesting does."); - } - if (id === "ferryman") { - remember("The Ferryman knows where you have been before you arrive.", state.forgets < 2); - say("Ferryman", state.toldName ? `${state.toldName} is a fine name to keep away from water.` : "Names are hooks. I would not throw yours into the lake."); - } - if (id === "vendor") say("Maribel", "Today's special: one jar of fog, two apologies, and a fish that predicts Thursday badly."); - if (id === "performer") { - remember("A performer advertised a show called YOUR MISSING YEARS.", state.forgets < 3); - say("Velvet Noon", "Clap if you remember me. Clap twice if you are pretending."); - } - if (id === "archivist") { - state.flags.rootsTruth = true; - remember("The lake feeds on suffering, but calls it mercy.", true); - say("Memory Archivist", "The archives are homes with the people removed. The lake calls that tidying."); - } - if (id === "cinder") { - state.flags.cinderMet = true; - remember("Brother Cinder believes forgetting pain is mercy.", true); - say("Brother Cinder", "I have seen grief make animals of gentle people. The lake did not begin as a hunger. It began as a kindness."); - } - if (id === "sibling") { - remember("Your sibling entered the lake willingly.", true); - say("Your Sibling", "I gave it my name because I was tired of carrying it. Please don't give it yours."); - finalChoice(); - } - save(); - } - - function inspectProp(prop) { - audio.sfx("talk"); - if (prop.kind === "lake") say("Black Lake", state.toldName ? `It almost says ${state.toldName}. Almost.` : "It reflects nothing. Not clouds. Not you."); - if (prop.kind === "stall") say("Market Sign", "Fresh eels. Older than regret. Discount if they remember your birthday."); - if (prop.kind === "flowers") say("Glowing Flowers", "They lean toward the water like they are listening."); - if (prop.kind === "sign") say("Advertisement", "TONIGHT: The Amazing Vanishing Audience. Refunds unavailable after erasure."); - if (prop.kind === "stage") say("Stage", "The curtain twitches though there is no wind indoors."); - if (prop.kind === "poster") say("Poster", "A smiling face has been scratched out. The scratch is smiling too."); - if (prop.kind === "archive") { - state.flags.rootsTruth = true; - remember("Some memory shelves are empty because nobody dared open them.", true); - say("Memory Archive", "A drawer opens by itself. Inside: houses, birthdays, funeral songs, a ticket stub from a train that never arrived."); - } - if (prop.kind === "root") say("Roots", "They pulse slowly under the town, carrying lake-water like blood."); - if (prop.kind === "home") say("Abandoned Home", "Every room is furnished except for the idea of a family."); - if (prop.kind === "pew") say("Drowned Pew", "The wood is wet. The prayer book is dry."); - if (prop.kind === "glass") say("Sunken Window", "Saints in blue glass lower their eyes toward the lake."); - if (prop.kind === "rift") finalChoice(); - save(); - } - - function tellName(name) { - state.toldName = name.slice(0, 18); - remember(`You told Morrow's End your name is ${state.toldName}.`, false); - say("Morrow's End", `The town repeats ${state.toldName} very softly. Too softly.`); - state.route = state.route === "Undecided" ? "Named" : state.route; - save(); - } - - function startBattle(id) { - const e = encounters[id]; - state.mode = "battle"; - state.battle = { - id, - hp: e.hp, - maxHp: e.hp, - soul: { x: 480, y: 382 }, - bullets: [], - t: 0, - grace: 0, - turn: 1, - message: e.text - }; - audio.setTrack("battle"); - audio.sfx("battle"); - say(e.title, e.text); - save(); - } - - function chooseBattle(action) { - if (state.mode !== "battle" || !state.battle) return; - const battle = state.battle; - if (action === "confront") { - battle.hp -= 9; - state.confronts += 1; - state.route = "Confronting"; - battle.message = "You refuse to move. The memory recoils from your shape."; - audio.sfx("hit"); - } - if (action === "listen") { - battle.hp -= 7; - state.listens += 1; - state.route = state.forgets === 0 ? "Carry" : "Listening"; - battle.message = "You listen until the ache becomes words. The attack softens."; - remember(`Listened to ${encounters[battle.id].title}.`, true); - audio.sfx("listen"); - } - if (action === "forget") { - battle.hp -= 18; - state.forgets += 1; - state.route = state.forgets >= 3 ? "Forgotten" : "Silence"; - battle.message = "You let the lake take the hard part. Something else goes with it."; - rewriteMemory(); - audio.sfx("forget"); - } - battle.turn += 1; - if (battle.hp <= 0) resolveBattle(action); - else say(encounters[battle.id].title, battle.message); - save(); - } - - function resolveBattle(action) { - const id = state.battle.id; - state.flags[`encounter_${id}`] = action; - if (id === "root_husk") state.flags.rootsTruth = true; - if (action === "forget" && state.forgets >= 3) return end("forgotten"); - const line = action === "listen" - ? "The memory steps aside, still hurting, but no longer alone." - : action === "forget" - ? "The memory becomes easy to pass. Behind you, a street sign loses a letter." - : "The memory breaks apart like ash under rain."; - leaveBattle(line); - } - - function leaveBattle(line) { - state.mode = "world"; - state.battle = null; - audio.setTrack(areas[state.area].track); - say("Afterimage", line); - save(); - } - - function finalChoice() { - if (state.forgets >= 3) return end("forgotten"); - if (state.forgets === 0 && state.listens >= 3 && state.flags.metMira) return end("rest"); - if (state.route === "Silence" || state.forgets > state.listens) return end("silence"); - end("carry"); - } - - function end(kind) { - state.ending = kind; - state.mode = "ending"; - state.route = kind === "rest" ? "True: Rest" : kind === "carry" ? "Carry" : kind === "silence" ? "Silence" : "Forgotten"; - audio.setTrack(kind === "forgotten" ? "void" : "ending"); - say("Ending", endingLine(kind)); - remember(endingLine(kind), kind !== "forgotten"); - save(); - } - - function endingLine(kind) { - if (kind === "silence") return "Silence: you join the lake. Morrow's End becomes peaceful, clean, and almost empty."; - if (kind === "carry") return "Carry: the lake breaks. Everyone remembers. The town survives with tears in every lit window."; - if (kind === "forgotten") return "Forgotten: the story continues politely around the space where Ilyas used to be."; - return "Rest: the lake is forgiven, not destroyed. Mira laughs once, real and afraid, as the shore finally reflects the sky."; - } - - function rewriteMemory() { - const mutable = state.memories.find((memory) => !memory.stable && !memory.erased) || state.memories.find((memory) => !memory.erased); - if (mutable) { - mutable.text = state.forgets > 2 ? "There was someone here. There was no one here. Both feel true." : mutable.text.replace(/[aeiou]/gi, "_"); - mutable.erased = state.forgets > 2; - } - if (state.forgets === 2) state.flags.vendorForgotten = true; - if (state.forgets >= 3) state.flags.performerForgotten = true; - } - - function forgottenNpc(id) { - return (id === "vendor" && state.flags.vendorForgotten) || (id === "performer" && state.flags.performerForgotten); - } - - function remember(text, stable) { - if (!state.memories.some((memory) => memory.text === text)) state.memories.push({ id: `m${Date.now()}`, text, stable: Boolean(stable) }); - if (state.memories.length > 8) state.memories.splice(2, 1); - } - - function say(speaker, line) { - state.dialogue = { speaker, line }; - } - - function areaEnterLine(area) { - if (area === "red") return "The Red Streets glow warmly, but the laughter arrives half a second late."; - if (area === "roots") return "The Roots smell like wet stone and bedrooms left untouched for years."; - if (area === "chapel") return "The Drowned Chapel rings with a bell under water."; - if (area === "shore") return "The Hollow Shore bends at the edges, as if the world has been folded too many times."; - return "Harbor Row keeps its lamps low and its names lower."; - } - - function draw(now) { - ctx.imageSmoothingEnabled = false; - if (!state.started || state.mode === "title") drawTitle(now); - else drawWorld(now); - if (state.mode === "battle") drawBattle(now); - if (state.mode === "ending") drawEnding(now); - drawVignette(now); - } - - function drawTitle(now) { - const g = ctx.createLinearGradient(0, 0, 0, canvas.height); - g.addColorStop(0, "#05070c"); - g.addColorStop(0.55, "#101b28"); - g.addColorStop(1, "#020306"); - ctx.fillStyle = g; - ctx.fillRect(0, 0, canvas.width, canvas.height); - drawLake(0, 345, 960, 195, now, 0.4); - ctx.fillStyle = "#f8efe0"; - ctx.font = "700 50px Georgia, serif"; - ctx.textAlign = "center"; - ctx.fillText("Ash Below the Lake", 480, 142); - ctx.font = "18px Georgia, serif"; - ctx.fillStyle = "#b9c6d4"; - ctx.fillText("A quiet town. A black lake. A name you should not give away.", 480, 178); - ctx.fillStyle = "#e0a451"; - ctx.font = "700 18px ui-monospace, monospace"; - ctx.fillText("Press Start or Space", 480, 246); - drawSprite("ilyas", 424, 288, 3, now); - drawSprite("mira", 500, 288, 3, now); - } - - function drawWorld(now) { - const area = areas[state.area]; - for (let y = 0; y < rows; y += 1) { - for (let x = 0; x < cols; x += 1) { - const wall = area.walls.has(`${x},${y}`); - const c = area.floor[(x + y) % area.floor.length]; - ctx.fillStyle = wall ? "#0b0d10" : c; - ctx.fillRect(x * tile, y * tile, tile, tile); - if (!wall) { - ctx.fillStyle = (x + y) % 2 === 0 ? "rgba(255,255,255,0.018)" : "rgba(0,0,0,0.035)"; - ctx.fillRect(x * tile, y * tile + 30, tile, 2); - } - } - } - area.exits.forEach((exit) => drawDoor(exit.x, exit.y, area.accent)); - area.props.forEach((prop) => drawProp(prop, now)); - Object.keys(items).forEach((id) => { - const item = items[id]; - if (item.area === state.area && !state.inventory.includes(id)) drawItem(id, item, now); - }); - Object.keys(encounters).forEach((id) => { - const e = encounters[id]; - if (e.area === state.area && !state.flags[`encounter_${id}`]) drawEncounter(e, now); - }); - Object.keys(npcs).forEach((id) => { - const npc = npcs[id]; - if (npc.area === state.area && !forgottenNpc(id)) drawSprite(npc.character, npc.x * tile, npc.y * tile - 12, 2, now); - }); - drawSprite("ilyas", state.player.x * tile, state.player.y * tile - 12, 2, now); - if (state.companion && state.area !== "chapel") { - const offset = state.player.facing === "left" ? 1 : -1; - drawSprite("mira", (state.player.x + offset) * tile, state.player.y * tile - 12, 2, now + 200); - } - drawTopBar(area); - } - - function drawTopBar(area) { - ctx.fillStyle = "rgba(3, 6, 10, 0.82)"; - ctx.fillRect(0, 0, canvas.width, 42); - ctx.fillStyle = area.accent; - ctx.font = "700 14px ui-monospace, monospace"; - ctx.textAlign = "left"; - ctx.fillText(`${area.act} / ${area.name}`, 18, 26); - ctx.textAlign = "right"; - ctx.fillStyle = "#f8efe0"; - ctx.fillText(`Resolve ${state.resolve} Lake ${state.forgets}`, 940, 26); - } - - function drawBattle(now) { - const battle = state.battle; - battle.t += 1; - updateBullets(battle, now); - ctx.fillStyle = "rgba(4, 5, 8, 0.88)"; - ctx.fillRect(0, 0, canvas.width, canvas.height); - ctx.strokeStyle = "#f8efe0"; - ctx.lineWidth = 3; - ctx.strokeRect(296, 252, 368, 190); - ctx.fillStyle = "#f8efe0"; - ctx.font = "700 24px Georgia, serif"; - ctx.textAlign = "center"; - ctx.fillText(encounters[battle.id].title, 480, 82); - ctx.font = "16px ui-monospace, monospace"; - ctx.fillText(`Memory ${Math.max(0, battle.hp)} / ${battle.maxHp}`, 480, 116); - drawBattleEnemy(battle.id, now); - ctx.fillStyle = "#f35f5f"; - ctx.beginPath(); - ctx.moveTo(battle.soul.x, battle.soul.y - 8); - ctx.bezierCurveTo(battle.soul.x - 13, battle.soul.y - 17, battle.soul.x - 20, battle.soul.y + 4, battle.soul.x, battle.soul.y + 18); - ctx.bezierCurveTo(battle.soul.x + 20, battle.soul.y + 4, battle.soul.x + 13, battle.soul.y - 17, battle.soul.x, battle.soul.y - 8); - ctx.fill(); - ctx.fillStyle = "#dbeafe"; - battle.bullets.forEach((b) => { - ctx.beginPath(); - ctx.arc(b.x, b.y, b.r, 0, Math.PI * 2); - ctx.fill(); - }); - ctx.fillStyle = "#f8efe0"; - ctx.font = "15px Georgia, serif"; - wrapText(battle.message, 148, 480, 660, 22); - } - - function updateBullets(battle) { - const speed = state.forgets > 0 ? 1.15 : 1.55; - const move = keyDirection(); - if (move === "up") battle.soul.y -= 3.3; - if (move === "down") battle.soul.y += 3.3; - if (move === "left") battle.soul.x -= 3.3; - if (move === "right") battle.soul.x += 3.3; - battle.soul.x = clamp(battle.soul.x, 312, 648); - battle.soul.y = clamp(battle.soul.y, 270, 426); - if (battle.t % 26 === 0) { - if (encounters[battle.id].bullets === "rain") battle.bullets.push({ x: 315 + Math.random() * 330, y: 256, vx: 0, vy: speed * 2.4, r: 5 }); - else if (encounters[battle.id].bullets === "spiral") { - const a = battle.t / 14; - battle.bullets.push({ x: 480, y: 346, vx: Math.cos(a) * speed * 2, vy: Math.sin(a) * speed * 2, r: 5 }); - } else battle.bullets.push({ x: Math.random() > 0.5 ? 304 : 656, y: 275 + Math.random() * 130, vx: (Math.random() > 0.5 ? -1 : 1) * speed * 2, vy: Math.sin(battle.t) * 0.6, r: 5 }); - } - battle.bullets.forEach((b) => { - b.x += b.vx; - b.y += b.vy; - if (battle.grace <= 0 && Math.hypot(b.x - battle.soul.x, b.y - battle.soul.y) < b.r + 10) { - state.resolve = Math.max(0, state.resolve - 1); - battle.grace = 24; - audio.sfx("hurt"); - if (state.resolve <= 0) end("forgotten"); - } - }); - battle.grace -= 1; - battle.bullets = battle.bullets.filter((b) => b.x > 280 && b.x < 680 && b.y > 230 && b.y < 455); - } - - function renderHud() { - root.classList.toggle("is-lake-awake", state.forgets > 1); - root.classList.toggle("is-ending", Boolean(state.ending)); - els.speaker.textContent = state.dialogue.speaker; - els.line.textContent = state.dialogue.line; - els.area.textContent = areas[state.area].name; - els.route.textContent = state.route; - els.resolve.textContent = String(state.resolve); - ui.memoryFill.style.width = `${Math.min(100, state.forgets * 34)}%`; - els.inventory.innerHTML = state.inventory.length ? state.inventory.map((id) => `

  • ${items[id].name}
  • `).join("") : "
  • Empty
  • "; - els.journal.innerHTML = state.memories.map((memory) => `
  • ${memory.erased ? "[entry missing]" : memory.text}
  • `).join(""); - ui.actionButtons.forEach((button) => { - button.disabled = state.mode !== "battle"; - }); - } - - function drawProp(prop, now) { - const x = prop.x * tile; - const y = prop.y * tile; - if (prop.kind === "lake") return drawLake(x, y, (prop.w || 1) * tile, (prop.h || 1) * tile, now, 1); - if (prop.kind === "stall") { - ctx.fillStyle = "#7f2d3a"; ctx.fillRect(x, y + 8, 64, 34); - ctx.fillStyle = "#e0a451"; ctx.fillRect(x - 4, y, 72, 12); - } - if (prop.kind === "flowers") for (let i = 0; i < 6; i += 1) { ctx.fillStyle = `rgba(133, 255, 214, ${0.45 + Math.sin(now / 400 + i) * 0.2})`; ctx.fillRect(x + i * 8, y + 12 + (i % 2) * 8, 5, 5); } - if (prop.kind === "sign" || prop.kind === "poster") { ctx.fillStyle = "#12151d"; ctx.fillRect(x, y, 38, 32); ctx.fillStyle = "#f3b15d"; ctx.fillRect(x + 5, y + 6, 28, 3); } - if (prop.kind === "stage") { ctx.fillStyle = "#210d18"; ctx.fillRect(x, y + 10, 96, 46); ctx.fillStyle = "#d64d62"; ctx.fillRect(x + 8, y, 80, 14); } - if (prop.kind === "archive") { ctx.fillStyle = "#4b3a25"; ctx.fillRect(x, y, 58, 52); ctx.fillStyle = "#d8cba8"; for (let i = 0; i < 4; i += 1) ctx.fillRect(x + 8, y + 8 + i * 10, 42, 3); } - if (prop.kind === "root") { ctx.strokeStyle = "#6aa27d"; ctx.lineWidth = 5; ctx.beginPath(); ctx.moveTo(x, y + 28); ctx.bezierCurveTo(x + 26, y - 8, x + 52, y + 48, x + 80, y + 6); ctx.stroke(); } - if (prop.kind === "home") { ctx.fillStyle = "#263332"; ctx.fillRect(x, y, 54, 48); ctx.fillStyle = "#080a0c"; ctx.fillRect(x + 20, y + 18, 14, 30); } - if (prop.kind === "pew") { ctx.fillStyle = "#33251d"; ctx.fillRect(x, y + 10, 76, 20); } - if (prop.kind === "glass") { ctx.fillStyle = "rgba(139,211,255,0.55)"; ctx.fillRect(x, y, 52, 72); ctx.fillStyle = "rgba(255,255,255,0.3)"; ctx.fillRect(x + 23, y, 5, 72); } - if (prop.kind === "rift") { ctx.strokeStyle = `rgba(248,239,224,${0.5 + Math.sin(now / 200) * 0.3})`; ctx.lineWidth = 3; ctx.beginPath(); ctx.moveTo(x + 20, y); ctx.lineTo(x + 5, y + 22); ctx.lineTo(x + 27, y + 40); ctx.lineTo(x + 10, y + 70); ctx.stroke(); } - } - - function drawLake(x, y, w, h, now, alpha) { - const g = ctx.createLinearGradient(0, y, 0, y + h); - g.addColorStop(0, `rgba(7, 18, 30, ${0.7 * alpha})`); - g.addColorStop(1, `rgba(0, 0, 0, ${0.95 * alpha})`); - ctx.fillStyle = g; - ctx.fillRect(x, y, w, h); - ctx.strokeStyle = `rgba(114, 169, 191, ${0.2 * alpha})`; - for (let i = 0; i < 8; i += 1) { - ctx.beginPath(); - const yy = y + 12 + i * 17 + Math.sin(now / 700 + i) * 4; - ctx.moveTo(x, yy); - for (let xx = 0; xx < w; xx += 24) ctx.lineTo(x + xx, yy + Math.sin(now / 350 + xx / 35 + i) * 3); - ctx.stroke(); - } - } - - function drawDoor(x, y, color) { - ctx.fillStyle = color; - ctx.fillRect(x * tile + 7, y * tile + 4, 18, 26); - ctx.fillStyle = "#05070c"; - ctx.fillRect(x * tile + 19, y * tile + 17, 3, 3); - } - - function drawItem(id, item, now) { - const x = item.x * tile; - const y = item.y * tile + Math.sin(now / 220) * 2; - ctx.fillStyle = id === "bell" ? "#d6a24a" : id === "photo" ? "#dbeafe" : id === "cinderKey" ? "#f59e0b" : "#f8efe0"; - ctx.fillRect(x + 10, y + 10, 13, 13); - ctx.fillStyle = "rgba(255,255,255,0.45)"; - ctx.fillRect(x + 13, y + 7, 7, 5); - } - - function drawEncounter(e, now) { - const x = e.x * tile; - const y = e.y * tile; - ctx.fillStyle = `rgba(210, 225, 245, ${0.35 + Math.sin(now / 260) * 0.16})`; - ctx.fillRect(x + 8, y + 4, 16, 27); - ctx.clearRect(x + 12, y + 10, 3, 4); - ctx.clearRect(x + 19, y + 10, 3, 4); - } - - function drawSprite(id, x, y, scale, now) { - const c = characters[id].colors; - const bob = Math.sin(now / 260 + x) * 1.5; - const s = scale; - ctx.fillStyle = "rgba(0,0,0,0.28)"; - ctx.fillRect(x + 5 * s, y + 30 * s, 12 * s, 3 * s); - ctx.fillStyle = c[0]; ctx.fillRect(x + 7 * s, y + bob + 2 * s, 10 * s, 7 * s); - ctx.fillStyle = c[1]; ctx.fillRect(x + 6 * s, y + bob + 8 * s, 12 * s, 10 * s); - ctx.fillStyle = c[2]; ctx.fillRect(x + 5 * s, y + bob + 18 * s, 14 * s, 13 * s); - ctx.fillStyle = c[3]; ctx.fillRect(x + 8 * s, y + bob + 12 * s, 2 * s, 2 * s); ctx.fillRect(x + 14 * s, y + bob + 12 * s, 2 * s, 2 * s); - ctx.fillStyle = c[0]; ctx.fillRect(x + 4 * s, y + bob + 22 * s, 3 * s, 9 * s); ctx.fillRect(x + 17 * s, y + bob + 22 * s, 3 * s, 9 * s); - } - - function drawBattleEnemy(id, now) { - if (id === "first_erased") drawEncounter({ x: 14, y: 4 }, now); - if (id === "root_husk") { ctx.strokeStyle = "#79c89d"; ctx.lineWidth = 8; ctx.beginPath(); ctx.moveTo(440, 180); ctx.bezierCurveTo(470, 120, 510, 230, 540, 160); ctx.stroke(); } - if (id === "chapel_memory") { ctx.fillStyle = "rgba(139,211,255,0.5)"; for (let i = 0; i < 5; i += 1) ctx.fillRect(420 + i * 28, 150 + Math.sin(now / 300 + i) * 8, 16, 54); } - } - - function drawEnding(now) { - ctx.fillStyle = "rgba(0,0,0,0.72)"; - ctx.fillRect(0, 0, canvas.width, canvas.height); - ctx.fillStyle = "#f8efe0"; - ctx.font = "700 42px Georgia, serif"; - ctx.textAlign = "center"; - ctx.fillText(state.route, 480 + Math.sin(now / 120) * (state.ending === "forgotten" ? 3 : 0), 202); - ctx.font = "18px Georgia, serif"; - wrapText(state.dialogue.line, 250, 250, 460, 28); - } - - function drawVignette(now) { - if (state.forgets > 0) { - ctx.fillStyle = `rgba(0,0,0,${0.06 + state.forgets * 0.05 + Math.sin(now / 800) * 0.02})`; - ctx.fillRect(0, 0, canvas.width, canvas.height); - } - const g = ctx.createRadialGradient(480, 245, 120, 480, 245, 560); - g.addColorStop(0, "rgba(0,0,0,0)"); - g.addColorStop(1, "rgba(0,0,0,0.48)"); - ctx.fillStyle = g; - ctx.fillRect(0, 0, canvas.width, canvas.height); - } - - function wrapText(text, x, y, maxWidth, lineHeight) { - ctx.textAlign = "left"; - const words = text.split(" "); - let line = ""; - for (const word of words) { - const test = `${line}${word} `; - if (ctx.measureText(test).width > maxWidth && line) { - ctx.fillText(line, x, y); - line = `${word} `; - y += lineHeight; - } else { - line = test; - } - } - ctx.fillText(line, x, y); - } - }; - - function makeAudio() { - let ctx = null; - let master = null; - let track = "title"; - let timer = null; - const patterns = { - title: [220, 277, 330, 277], - harbor: [262, 330, 392, 330], - red: [196, 233, 294, 349], - roots: [174, 220, 261, 220], - chapel: [147, 196, 247, 294], - shore: [110, 165, 220, 165], - battle: [330, 311, 294, 247], - ending: [262, 392, 440, 523], - void: [110, 98, 82, 73] - }; - function start() { - const Audio = window.AudioContext || window.webkitAudioContext; - if (!Audio) return; - if (ctx) { - if (ctx.state === "suspended") ctx.resume(); - return; - } - ctx = new Audio(); - master = ctx.createGain(); - master.gain.value = 0.14; - master.connect(ctx.destination); - if (ctx.state === "suspended") ctx.resume(); - loop(); - const notes = patterns[track] || patterns.title; - tone(notes[0], 0.22, "triangle", 0.9); - } - function loop() { - clearInterval(timer); - let i = 0; - timer = setInterval(() => { - if (!ctx) return; - const notes = patterns[track] || patterns.title; - tone(notes[i % notes.length], 0.28, track === "battle" ? "sawtooth" : "sine"); - if (track !== "battle") tone(notes[(i + 2) % notes.length] / 2, 0.7, "triangle", 0.45); - i += 1; - }, track === "battle" ? 230 : 520); - } - function tone(freq, dur, type, gainScale) { - const osc = ctx.createOscillator(); - const gain = ctx.createGain(); - osc.type = type; - osc.frequency.value = freq; - gain.gain.setValueAtTime(0, ctx.currentTime); - gain.gain.linearRampToValueAtTime(0.25 * (gainScale || 1), ctx.currentTime + 0.02); - gain.gain.exponentialRampToValueAtTime(0.001, ctx.currentTime + dur); - osc.connect(gain); - gain.connect(master); - osc.start(); - osc.stop(ctx.currentTime + dur + 0.03); - } - return { - start, - supported() { - return Boolean(window.AudioContext || window.webkitAudioContext); - }, - setTrack(next) { - track = next; - if (ctx && ctx.state === "suspended") ctx.resume(); - if (ctx) loop(); - if (ctx) tone((patterns[track] || patterns.title)[0], 0.16, track === "battle" ? "sawtooth" : "triangle", 0.65); - }, - sfx(kind) { - if (!ctx) return; - if (ctx.state === "suspended") ctx.resume(); - const map = { item: 660, talk: 440, battle: 130, hit: 180, listen: 523, forget: 96, hurt: 80 }; - tone(map[kind] || 330, kind === "forget" ? 0.8 : 0.18, kind === "forget" ? "sawtooth" : "square", kind === "hurt" ? 1.3 : 0.8); - } - }; - } - - function rects(sources) { - const set = new Set(); - sources.forEach(([x, y, w, h]) => { - for (let yy = y; yy < y + h; yy += 1) for (let xx = x; xx < x + w; xx += 1) set.add(`${xx},${yy}`); - }); - return set; - } - - function clamp(value, min, max) { - return Math.max(min, Math.min(max, value)); - } -})(); + "use strict"; + var script = document.createElement("script"); + script.src = "/assets/scripts/pages/ash-below-lake.js"; + script.defer = true; + document.head.appendChild(script); +}()); diff --git a/assets/scripts/bigger-picture.min.js b/assets/scripts/bigger-picture.min.js index 93bcaa7..6db958b 100755 --- a/assets/scripts/bigger-picture.min.js +++ b/assets/scripts/bigger-picture.min.js @@ -1 +1,7 @@ -var BiggerPicture=function(){function t(){}const n=t=>t;function e(t,n){for(const e in n)t[e]=n[e];return t}function o(t){return t()}function r(t){t.forEach(o)}function i(t){return"function"==typeof t}function c(t,n){return t!=t?n==n:t!==n}function s(n,e,o){n.u.t.push(((n,...e)=>{if(null==n)return t;const o=n.subscribe(...e);return o.unsubscribe?()=>o.unsubscribe():o})(e,o))}function u(n){return n&&i(n.destroy)?n.destroy:t}let l=()=>globalThis.performance.now(),a=t=>requestAnimationFrame(t);const p=new Set;function f(t){p.forEach((n=>{n.c(t)||(p.delete(n),n.f())})),0!==p.size&&a(f)}function d(t){let n;return 0===p.size&&a(f),{promise:new Promise((e=>{p.add(n={c:t,f:e})})),abort(){p.delete(n)}}}function m(t,n){t.appendChild(n)}function b(t,n,e){t.insertBefore(n,e||null)}function h(t){t.parentNode.removeChild(t)}function g(t){return document.createElement(t)}function x(){return document.createTextNode("")}function v(t,n,e,o){return t.addEventListener(n,e,o),()=>t.removeEventListener(n,e,o)}function w(t,n,e){null==e?t.removeAttribute(n):t.getAttribute(n)!==e&&t.setAttribute(n,e)}function y(t,n,e,o){null===e?t.style.removeProperty(n):t.style.setProperty(n,e)}function $(t,n,e){t.classList[e?"add":"remove"](n)}let k,_,M=0,S={};function z(t,n,e,o,r,i,c,s=0){const u=16.666/o;let l="{\n";for(let t=0;1>=t;t+=u){const o=n+(e-n)*i(t);l+=100*t+`%{${c(o,1-o)}}\n`}const a=l+`100% {${c(e,1-e)}}\n}`,p=`_bp_${Math.round(1e9*Math.random())}_${s}`;if(!S[p]){if(!k){const t=g("style");document.head.appendChild(t),k=t.sheet}S[p]=1,k.insertRule(`@keyframes ${p} ${a}`,k.cssRules.length)}const f=t.style.animation||"";return t.style.animation=`${f?f+", ":""}${p} ${o}ms linear ${r}ms 1 both`,M+=1,p}function I(t,n){t.style.animation=(t.style.animation||"").split(", ").filter(n?t=>0>t.indexOf(n):t=>-1===t.indexOf("_bp")).join(", "),n&&!--M&&a((()=>{if(M)return;let t=k.cssRules.length;for(;t--;)k.deleteRule(t);S={}}))}function P(t){_=t}const T=[],A=[],N=[],O=[],C=Promise.resolve();let E=0;function R(t){N.push(t)}const j=new Set;let q,F=0;function J(){const t=_;do{for(;T.length>F;){const t=T[F];F++,P(t),B(t.u)}for(P(null),T.length=0,F=0;A.length;)A.pop()();for(let t=0;N.length>t;t+=1){const n=N[t];j.has(n)||(j.add(n),n())}N.length=0}while(T.length);for(;O.length;)O.pop()();E=0,j.clear(),P(t)}function B(t){if(null!==t.l){t.update(),r(t.g);const n=t.v;t.v=[-1],t.l&&t.l.p(t.$,n),t.k.forEach(R)}}function D(){return q||(q=Promise.resolve(),q.then((()=>{q=null}))),q}function K(t,n,e){t.dispatchEvent(((t,n,e=0)=>{const o=document.createEvent("CustomEvent");return o.initCustomEvent(t,e,0,n),o})(`${n?"intro":"outro"}${e}`))}const L=new Set;let W;function X(){W={r:0,c:[],p:W}}function Y(){W.r||r(W.c),W=W.p}function G(t,n){t&&t.i&&(L.delete(t),t.i(n))}function H(t,n,e,o){if(t&&t.o){if(L.has(t))return;L.add(t),W.c.push((()=>{L.delete(t),o&&(e&&t.d(1),o())})),t.o(n)}}const Q={duration:0};function U(e,o,r){let c,s,u=o(e,r),a=0,p=0;function f(){c&&I(e,c)}function m(){const{delay:o=0,duration:r=300,_:i=n,M:m=t,css:b}=u||Q;b&&(c=z(e,0,1,r,o,i,b,p++)),m(0,1);const h=l()+o,g=h+r;s&&s.abort(),a=1,R((()=>K(e,1,"start"))),s=d((t=>{if(a){if(t>=g)return m(1,0),K(e,1,"end"),f(),a=0;if(t>=h){const n=i((t-h)/r);m(n,1-n)}}return a}))}let b=0;return{start(){b||(b=1,I(e),i(u)?(u=u(),D().then(m)):m())},S(){b=0},end(){a&&(f(),a=0)}}}function V(e,o,c){let s,u=o(e,c),a=1;const p=W;function f(){const{delay:o=0,duration:i=300,_:c=n,M:f=t,css:m}=u||Q;m&&(s=z(e,1,0,i,o,c,m));const b=l()+o,h=b+i;R((()=>K(e,0,"start"))),d((t=>{if(a){if(t>=h)return f(0,1),K(e,0,"end"),--p.r||r(p.c),0;if(t>=b){const n=c((t-b)/i);f(1-n,n)}}return a}))}return p.r+=1,i(u)?D().then((()=>{u=u(),f()})):f(),{end(t){t&&u.M&&u.M(1,0),a&&(s&&I(e,s),a=0)}}}function Z(t){t&&t.c()}function tt(t,n,e,c){const{l:s,I:u,t:l,k:a}=t.u;s&&s.m(n,e),c||R((()=>{const n=u.map(o).filter(i);l?l.push(...n):r(n),t.u.I=[]})),a.forEach(R)}function nt(t,n){const e=t.u;null!==e.l&&(r(e.t),e.l&&e.l.d(n),e.t=e.l=null,e.$=[])}function et(n,e,o,i,c,s,u,l=[-1]){const a=_;P(n);const p=n.u={l:null,$:null,P:s,update:t,T:c,bound:{},I:[],t:[],A:[],g:[],k:[],context:new Map(e.context||(a?a.u.context:[])),N:{},v:l,O:0,root:e.target||a.u.root};u&&u(p.root);let f=0;p.$=o?o(n,e.P||{},((t,e,...o)=>{const r=o.length?o[0]:e;return p.$&&c(p.$[t],p.$[t]=r)&&(!p.O&&p.bound[t]&&p.bound[t](r),f&&((t,n)=>{-1===t.u.v[0]&&(T.push(t),E||(E=1,C.then(J)),t.u.v.fill(0)),t.u.v[n/31|0]|=1<{const t=e.indexOf(n);-1!==t&&e.splice(t,1)}}C(t){this.R&&0!==Object.keys(t).length&&(this.u.O=1,this.R(t),this.u.O=0)}}function rt(t){const n=t-1;return n*n*n+1}function it(t,{delay:n=0,duration:e=400,_:o=rt,x:r=0,y:i=0,opacity:c=0}={}){const s=getComputedStyle(t),u=+s.opacity,l="none"===s.transform?"":s.transform,a=u*(1-c);return{delay:n,duration:e,_:o,css(t,n){return`\n\t\t\ttransform: ${l} translate(${(1-t)*r}px, ${(1-t)*i}px);\n\t\t\topacity: ${u-a*n}`}}}const ct=[];function st(n,e=t){let o;const r=new Set;function i(t){if(c(n,t)&&(n=t,o)){const t=!ct.length;for(const t of r)t[1](),ct.push(t,n);if(t){for(let t=0;ct.length>t;t+=2)ct[t][0](ct[t+1]);ct.length=0}}}return{set:i,update(t){i(t(n))},subscribe(c,s=t){const u=[c,s];return r.add(u),1===r.size&&(o=e(i)||t),c(n),()=>{r.delete(u),0===r.size&&(o(),o=null)}}}}function ut(t,n){if(t===n||t!=t)return()=>t;const e=typeof t;if(Array.isArray(t)){const e=n.map(((n,e)=>ut(t[e],n)));return t=>e.map((n=>n(t)))}if("number"===e){const e=n-t;return n=>t+n*e}}function lt(t,o={}){const r=st(t);let i,c=t;function s(s,u){if(null==t)return r.set(t=s),Promise.resolve();c=s;let a=i,p=0,{delay:f=0,duration:m=400,_:b=n,interpolate:h=ut}=e(e({},o),u);if(0===m)return a&&(a.abort(),a=null),r.set(t=c),Promise.resolve();const g=l()+f;let x;return i=d((n=>{if(g>n)return 1;p||(x=h(t,s),"function"==typeof m&&(m=m(t,s)),p=1),a&&(a.abort(),a=null);const e=n-g;return e>m?(r.set(t=s),0):(r.set(t=x(b(e/m))),1)})),i.promise}return{set:s,update(n,e){return s(n(c,t),e)},subscribe:r.subscribe}}const at=st(0),pt=globalThis.matchMedia?.("(prefers-reduced-motion: reduce)").matches,ft=t=>({_:rt,duration:pt?0:t}),dt=t=>!t.thumb||`url(${t.thumb})`,mt=(t,n)=>{if(n){"string"==typeof n&&(n=JSON.parse(n));for(const e in n)t.setAttribute(e,n[e])}};function bt(t){let n,e,o;return{c(){n=g("div"),n.innerHTML='',w(n,"class","bp-load"),y(n,"background-image",dt(t[0]))},m(t,e){b(t,n,e),o=1},p(t,e){1&e&&y(n,"background-image",dt(t[0]))},i(t){o||(e&&e.end(1),o=1)},o(t){t&&(e=V(n,it,{duration:480})),o=0},d(t){t&&h(n),t&&e&&e.end()}}}function ht(n){let e,o;return{c(){e=g("div"),w(e,"class","bp-load"),y(e,"background-image",dt(n[0]))},m(t,n){b(t,e,n)},p(t,n){1&n&&y(e,"background-image",dt(t[0]))},i(t){o||R((()=>{o=U(e,it,{duration:480}),o.start()}))},o:t,d(t){t&&h(e)}}}function gt(t){let n,e,o=!t[1]&&bt(t),r=t[2]&&ht(t);return{c(){o&&o.c(),n=x(),r&&r.c(),e=x()},m(t,i){o&&o.m(t,i),b(t,n,i),r&&r.m(t,i),b(t,e,i)},p(t,[i]){t[1]?o&&(X(),H(o,1,1,(()=>{o=null})),Y()):o?(o.p(t,i),2&i&&G(o,1)):(o=bt(t),o.c(),G(o,1),o.m(n.parentNode,n)),t[2]?r?(r.p(t,i),4&i&&G(r,1)):(r=ht(t),r.c(),G(r,1),r.m(e.parentNode,e)):r&&(r.d(1),r=null)},i(t){G(o),G(r)},o(t){H(o)},d(t){o&&o.d(t),t&&h(n),r&&r.d(t),t&&h(e)}}}function xt(t,n,e){let o;s(t,at,(t=>e(2,o=t)));let{j:r}=n,{loaded:i}=n;return t.R=t=>{"j"in t&&e(0,r=t.j),"loaded"in t&&e(1,i=t.loaded)},[r,i,o]}class vt extends ot{constructor(t){super(),et(this,t,xt,gt,c,{j:0,loaded:1})}}function wt(t){let n,e,o,i,c,s;return{c(){n=g("img"),w(n,"sizes",e=t[8].sizes||t[1]+"px"),w(n,"alt",t[7].alt)},m(e,o){b(e,n,o),i=1,c||(s=[u(t[21].call(null,n)),v(n,"error",t[27])],c=1)},p(t,o){(!i||2&o[0]&&e!==(e=t[8].sizes||t[1]+"px"))&&w(n,"sizes",e)},i(t){i||(o&&o.end(1),i=1)},o(t){o=V(n,it,{}),i=0},d(t){t&&h(n),t&&o&&o.end(),c=0,r(s)}}}function yt(t){let n,e;return n=new vt({P:{j:t[7],loaded:t[2]}}),{c(){Z(n.u.l)},m(t,o){tt(n,t,o),e=1},p(t,e){const o={};4&e[0]&&(o.loaded=t[2]),n.C(o)},i(t){e||(G(n.u.l,t),e=1)},o(t){H(n.u.l,t),e=0},d(t){nt(n,t)}}}function $t(t){let n,e,o,i,c,s,l=`translate3d(${t[0][0]/-2+t[6][0]}px, ${t[0][1]/-2+t[6][1]}px, 0)`,a=t[2]&&wt(t),p=t[3]&&yt(t);return{c(){n=g("div"),e=g("div"),a&&a.c(),o=x(),p&&p.c(),w(e,"class","bp-img"),y(e,"width",t[0][0]+"px"),y(e,"height",t[0][1]+"px"),$(e,"bp-drag",t[4]),$(e,"bp-canzoom",t[11]>1&&t[12]>t[0][0]),y(e,"background-image",dt(t[7])),y(e,"transform",l),w(n,"class","bp-img-wrap"),$(n,"bp-close",t[5])},m(r,l){b(r,n,l),m(n,e),a&&a.m(e,null),m(e,o),p&&p.m(e,null),i=1,c||(s=[u(t[20].call(null,e)),v(n,"wheel",t[15]),v(n,"pointerdown",t[16]),v(n,"pointermove",t[17]),v(n,"pointerup",t[19]),v(n,"pointercancel",t[18])],c=1)},p(t,r){t[2]?a?(a.p(t,r),4&r[0]&&G(a,1)):(a=wt(t),a.c(),G(a,1),a.m(e,o)):a&&(X(),H(a,1,1,(()=>{a=null})),Y()),t[3]?p?(p.p(t,r),8&r[0]&&G(p,1)):(p=yt(t),p.c(),G(p,1),p.m(e,null)):p&&(X(),H(p,1,1,(()=>{p=null})),Y()),(!i||1&r[0])&&y(e,"width",t[0][0]+"px"),(!i||1&r[0])&&y(e,"height",t[0][1]+"px"),(!i||16&r[0])&&$(e,"bp-drag",t[4]),(!i||6145&r[0])&&$(e,"bp-canzoom",t[11]>1&&t[12]>t[0][0]),65&r[0]&&l!==(l=`translate3d(${t[0][0]/-2+t[6][0]}px, ${t[0][1]/-2+t[6][1]}px, 0)`)&&y(e,"transform",l),(!i||32&r[0])&&$(n,"bp-close",t[5])},i(t){i||(G(a),G(p),i=1)},o(t){H(a),H(p),i=0},d(t){t&&h(n),a&&a.d(),p&&p.d(),c=0,r(s)}}}function kt(t,n,e){let o,r,i,c;s(t,at,(t=>e(26,i=t)));let{P:u}=n,{q:l}=n,{j:a,F:p,J:f,next:d,zoomed:m,container:b}=u;s(t,m,(t=>e(25,o=t)));let h,g,x,v,w,y,$,k,_,M,S,z=a.maxZoom||p.maxZoom||10,I=u.B(a),P=I[0],T=0;const A=+a.width,N=[],O=new Map,C=lt(I,ft(400));s(t,C,(t=>e(0,c=t)));const E=lt([0,0],ft(400));s(t,E,(t=>e(6,r=t)));const R=([t,n],o=c)=>{const r=(o[0]-b.w)/2,i=(o[1]-b.h)/2;return 0>r?t=0:t>r?l?(t=w?r+(t-r)/10:r)>r+20&&e(4,w=f()):t=r:-r>t&&(l?-r-20>(t=w?-r-(-r-t)/10:-r)&&e(4,w=d()):t=-r),0>i?n=0:n>i?n=i:-i>n&&(n=-i),[t,n]};function j(t=z,n){if(i)return;const o=I[0]*z;let s=c[0]+c[0]*t,u=c[1]+c[1]*t;if(t>0)s>o&&(s=o,u=I[1]*z),s>A&&(s=A,u=+a.height);else if(I[0]>s)return C.set(I),E.set([0,0]);let{x:l,y:p,width:f,height:d}=v.getBoundingClientRect();const m=n?n.clientX-l-f/2:0,b=n?n.clientY-p-d/2:0;l=s/f*-m+m,p=u/d*-b+b;const h=[s,u];C.set(h).then((()=>{e(1,P=Math.round(Math.max(P,s)))})),E.set(R([r[0]+l,r[1]+p],h))}Object.defineProperty(a,"zoom",{configurable:1,get(){return o},set(t){return j(t?z:-z)}});const q=t=>O.delete(t.pointerId);return t.R=t=>{"q"in t&&e(23,l=t.q)},t.u.update=()=>{if(16777217&t.u.v[0]&&m.set(c[0]-10>I[0]),117440512&t.u.v[0]&&i&&o&&!p.intro){const t=ft(480);E.set([0,0],t),C.set(I,t),e(5,S=1)}},[c,P,h,g,w,S,r,a,p,m,b,z,A,C,E,t=>{p.inline&&!o||(t.preventDefault(),j(t.deltaY/-300,t))},t=>{2!==t.button&&(t.preventDefault(),e(4,w=1),O.set(t.pointerId,t),$=t.clientX,k=t.clientY,_=r[0],M=r[1])},t=>{if(O.size>1)return e(4,w=0),p.noPinch?.(b.el)||(t=>{const[n,e]=O.set(t.pointerId,t).values(),o=Math.hypot(n.clientX-e.clientX,n.clientY-e.clientY);x=x||{clientX:(n.clientX+e.clientX)/2,clientY:(n.clientY+e.clientY)/2},j(((T||o)-o)/-35,x),T=o})(t);if(!w)return;let n=t.clientX,r=t.clientY;y=N.push({x:n,y:r})>2,n-=$,r-=k,o||(-90>r&&e(4,w=!p.noClose&&u.close()),30>Math.abs(r)&&(n>40&&e(4,w=f()),-40>n&&e(4,w=d()))),o&&y&&!i&&E.set(R([_+n,M+r]),{duration:0})},q,function(t){if(q(t),x&&(e(4,w=T=0),x=O.size?x:null),w){if(e(4,w=0),t.target===this&&!p.noClose)return u.close();if(y){const[t,n,e]=N.slice(-3);Math.hypot(n.x-e.x,n.y-e.y)>5&&E.set(R([r[0]-5*(t.x-e.x),r[1]-5*(t.y-e.y)]))}else p.onImageClick?.(b.el,a)||j(o?-z:z,t);y=0,N.length=0}},t=>{v=t,u.D((()=>{e(24,I=u.B(a)),!p.inline&&l||(C.set(I),E.set([0,0]))})),u.K(a).then((()=>{e(2,h=1),u.L()})),setTimeout((()=>{e(3,g=!h)}),250)},t=>{mt(t,a.attr),t.srcset=a.img},u,l,I,o,i,t=>p.onError?.(b,a,t)]}class _t extends ot{constructor(t){super(),et(this,t,kt,$t,c,{P:22,q:23},null,[-1,-1])}}function Mt(t){let n,e,o,i,c,s;return o=new vt({P:{j:t[2],loaded:t[0]}}),{c(){n=g("div"),e=g("iframe"),Z(o.u.l),w(e,"allow","autoplay; fullscreen"),w(e,"title",t[2].title),w(n,"class","bp-if"),y(n,"width",t[1][0]+"px"),y(n,"height",t[1][1]+"px")},m(r,l){b(r,n,l),m(n,e),tt(o,n,null),i=1,c||(s=[u(t[3].call(null,e)),v(e,"load",t[5])],c=1)},p(t,[e]){const r={};1&e&&(r.loaded=t[0]),o.C(r),(!i||2&e)&&y(n,"width",t[1][0]+"px"),(!i||2&e)&&y(n,"height",t[1][1]+"px")},i(t){i||(G(o.u.l,t),i=1)},o(t){H(o.u.l,t),i=0},d(t){t&&h(n),nt(o),c=0,r(s)}}}function St(t,n,e){let o,r,{P:i}=n;const{j:c}=i,s=()=>e(1,r=i.B(c));return s(),i.D(s),[o,r,c,t=>{mt(t,c.attr),t.src=c.iframe},i,()=>e(0,o=1)]}class zt extends ot{constructor(t){super(),et(this,t,St,Mt,c,{P:4})}}function It(t){let n,e,o,r,i;return e=new vt({P:{j:t[2],loaded:t[0]}}),{c(){n=g("div"),Z(e.u.l),w(n,"class","bp-vid"),y(n,"width",t[1][0]+"px"),y(n,"height",t[1][1]+"px"),y(n,"background-image",dt(t[2]))},m(c,s){b(c,n,s),tt(e,n,null),o=1,r||(i=u(t[3].call(null,n)),r=1)},p(t,[r]){const i={};1&r&&(i.loaded=t[0]),e.C(i),(!o||2&r)&&y(n,"width",t[1][0]+"px"),(!o||2&r)&&y(n,"height",t[1][1]+"px")},i(t){o||(G(e.u.l,t),o=1)},o(t){H(e.u.l,t),o=0},d(t){t&&h(n),nt(e),r=0,i()}}}function Pt(t,n,e){let o,r,{P:i}=n;const{j:c,F:s,container:u}=i,l=()=>e(1,r=i.B(c));return l(),i.D(l),[o,r,c,t=>{let n;const r=(t,e)=>{Array.isArray(e)||(e=JSON.parse(e));for(const o of e){n||(n=document.createElement(o.type?.includes("audio")?"audio":"video"),mt(n,{controls:1,autoplay:1,playsinline:1,tabindex:"0"}),mt(n,c.attr));const e=document.createElement(t);mt(e,o),"source"==t&&(e.onError=t=>s.onError?.(u,c,t)),n.append(e)}};r("source",c.sources),r("track",c.tracks||[]),n.oncanplay=()=>e(0,o=1),t.append(n)},i]}class Tt extends ot{constructor(t){super(),et(this,t,Pt,It,c,{P:4})}}function At(n){let e,o,i,s,l,a,p,f,d,x=n[6].i,y=jt(n),k=n[0].length>1&&qt(n);return{c(){e=g("div"),o=g("div"),y.c(),s=g("div"),l=g("button"),k&&k.c(),w(l,"class","bp-x"),w(l,"title","Close"),w(l,"aria-label","Close"),w(s,"class","bp-controls"),w(e,"class","bp-wrap"),$(e,"bp-zoomed",n[10]),$(e,"bp-inline",n[8]),$(e,"bp-small",n[7]),$(e,"bp-noclose",n[5].noClose)},m(t,r){b(t,e,r),m(e,o),y.m(e,null),m(e,s),m(s,l),k&&k.m(s,null),p=1,f||(d=[v(l,"click",n[1]),u(n[14].call(null,e))],f=1)},p(n,o){64&o[0]&&c(x,x=n[6].i)?(X(),H(y,1,1,t),Y(),y=jt(n),y.c(),G(y,1),y.m(e,s)):y.p(n,o),n[0].length>1?k?k.p(n,o):(k=qt(n),k.c(),k.m(s,null)):k&&(k.d(1),k=null),(!p||1024&o[0])&&$(e,"bp-zoomed",n[10]),(!p||256&o[0])&&$(e,"bp-inline",n[8]),(!p||128&o[0])&&$(e,"bp-small",n[7]),(!p||32&o[0])&&$(e,"bp-noclose",n[5].noClose)},i(t){p||(i&&i.end(1),G(y),a&&a.end(1),p=1)},o(t){t&&(i=V(o,it,{duration:480})),H(y),t&&(a=V(s,it,{})),p=0},d(t){t&&h(e),t&&i&&i.end(),y.d(t),k&&k.d(),t&&a&&a.end(),f=0,r(d)}}}function Nt(n){let e,o=(n[6].html??n[6].element.outerHTML)+"";return{c(){e=g("div"),w(e,"class","bp-html")},m(t,n){b(t,e,n),e.innerHTML=o},p(t,n){64&n[0]&&o!==(o=(t[6].html??t[6].element.outerHTML)+"")&&(e.innerHTML=o)},i:t,o:t,d(t){t&&h(e)}}}function Ot(n){let e,o;return e=new zt({P:{P:n[13]()}}),{c(){Z(e.u.l)},m(t,n){tt(e,t,n),o=1},p:t,i(t){o||(G(e.u.l,t),o=1)},o(t){H(e.u.l,t),o=0},d(t){nt(e,t)}}}function Ct(n){let e,o;return e=new Tt({P:{P:n[13]()}}),{c(){Z(e.u.l)},m(t,n){tt(e,t,n),o=1},p:t,i(t){o||(G(e.u.l,t),o=1)},o(t){H(e.u.l,t),o=0},d(t){nt(e,t)}}}function Et(t){let n,e;return n=new _t({P:{P:t[13](),q:t[7]}}),{c(){Z(n.u.l)},m(t,o){tt(n,t,o),e=1},p(t,e){const o={};128&e[0]&&(o.q=t[7]),n.C(o)},i(t){e||(G(n.u.l,t),e=1)},o(t){H(n.u.l,t),e=0},d(t){nt(n,t)}}}function Rt(t){let n,e,o,r=t[6].caption+"";return{c(){n=g("div"),w(n,"class","bp-cap")},m(t,e){b(t,n,e),n.innerHTML=r,o=1},p(t,e){(!o||64&e[0])&&r!==(r=t[6].caption+"")&&(n.innerHTML=r)},i(t){o||(e&&e.end(1),o=1)},o(t){e=V(n,it,{duration:200}),o=0},d(t){t&&h(n),t&&e&&e.end()}}}function jt(t){let n,e,o,i,c,s,u,l,a;const p=[Et,Ct,Ot,Nt],f=[];function d(t,n){return t[6].img?0:t[6].sources?1:t[6].iframe?2:3}e=d(t),o=f[e]=p[e](t);let m=t[6].caption&&Rt(t);return{c(){n=g("div"),o.c(),m&&m.c(),s=x(),w(n,"class","bp-inner")},m(o,r){b(o,n,r),f[e].m(n,null),m&&m.m(o,r),b(o,s,r),u=1,l||(a=[v(n,"pointerdown",t[20]),v(n,"pointerup",t[21])],l=1)},p(t,r){let i=e;e=d(t),e===i?f[e].p(t,r):(X(),H(f[i],1,1,(()=>{f[i]=null})),Y(),o=f[e],o?o.p(t,r):(o=f[e]=p[e](t),o.c()),G(o,1),o.m(n,null)),t[6].caption?m?(m.p(t,r),64&r[0]&&G(m,1)):(m=Rt(t),m.c(),G(m,1),m.m(s.parentNode,s)):m&&(X(),H(m,1,1,(()=>{m=null})),Y())},i(e){u||(G(o),R((()=>{c&&c.end(1),i=U(n,t[12],1),i.start()})),G(m),u=1)},o(e){H(o),i&&i.S(),c=V(n,t[12],0),H(m),u=0},d(t){t&&h(n),f[e].d(),t&&c&&c.end(),m&&m.d(t),t&&h(s),l=0,r(a)}}}function qt(t){let n,e,o,i,c,s=`${t[4]+1} / ${t[0].length}`;return{c(){n=g("div"),e=g("button"),o=g("button"),w(n,"class","bp-count"),w(e,"class","bp-prev"),w(e,"title","Previous"),w(e,"aria-label","Previous"),w(o,"class","bp-next"),w(o,"title","Next"),w(o,"aria-label","Next")},m(r,u){b(r,n,u),n.innerHTML=s,b(r,e,u),b(r,o,u),i||(c=[v(e,"click",t[2]),v(o,"click",t[3])],i=1)},p(t,e){17&e[0]&&s!==(s=`${t[4]+1} / ${t[0].length}`)&&(n.innerHTML=s)},d(t){t&&h(n),t&&h(e),t&&h(o),i=0,r(c)}}}function Ft(t){let n,e,o=t[0]&&At(t);return{c(){o&&o.c(),n=x()},m(t,r){o&&o.m(t,r),b(t,n,r),e=1},p(t,e){t[0]?o?(o.p(t,e),1&e[0]&&G(o,1)):(o=At(t),o.c(),G(o,1),o.m(n.parentNode,n)):o&&(X(),H(o,1,1,(()=>{o=null})),Y())},i(t){e||(G(o),e=1)},o(t){H(o),e=0},d(t){o&&o.d(t),t&&h(n)}}}function Jt(t,n,e){let o,{items:r}=n,{target:i}=n;const c=document.documentElement;let u,l,a,p,f,d,m,b,h;const g=()=>!h.img&&!h.sources&&!h.iframe;let x;const v=t=>x=t,w={},y=st(0);s(t,y,(t=>e(10,o=t)));const $=()=>{l.onClose?.(w.el,h),at.set(1),e(0,r=null),p?.focus({preventScroll:1})},k=()=>M(u-1),_=()=>M(u+1),M=t=>{m=t-u,e(4,u=S(t))},S=t=>(t+r.length)%r.length,z=t=>{const{key:n,shiftKey:e}=t;if("Escape"===n)!l.noClose&&$();else if("ArrowRight"===n)_();else if("ArrowLeft"===n)k();else if("Tab"===n){const{activeElement:n}=document;if(e||!n.controls){t.preventDefault();const{focusWrap:o=w.el}=l,r=[...o.querySelectorAll("*")].filter((t=>t.tabIndex>=0));let i=r.indexOf(n);i+=r.length+(e?-1:1),r[i%r.length].focus()}}},I=({width:t=1920,height:n=1080})=>{const{scale:e=.99}=l,o=Math.min(1,w.w/t*e,w.h/n*e);return[Math.round(t*o),Math.round(n*o)]},P=()=>{if(r){const t=r[S(u+1)],n=r[S(u-1)];!t.preload&&T(t),!n.preload&&T(n)}},T=t=>{if(t.img){const n=document.createElement("img");return n.sizes=l.sizes||I(t)[0]+"px",n.srcset=t.img,t.preload=1,n.decode().catch((t=>{}))}};return t.R=t=>{"items"in t&&e(0,r=t.items),"target"in t&&e(15,i=t.target)},t.u.update=()=>{786545&t.u.v[0]&&r&&(e(6,h=r[u]),a&&l.onUpdate?.(w.el,h))},[r,$,k,_,u,l,h,f,d,b,o,y,(t,n)=>a&&r?it(t,{x:(m>0?20:-20)*(n?1:-1),duration:250}):(e(18,a=n),l.intro?it(t,{y:n?10:-10}):(t=>{let n;if(g()){const e=t.firstChild.firstChild;n=[e.clientWidth,e.clientHeight]}else n=I(h);const e=(h.element||p).getBoundingClientRect(),o=e.left-(w.w-e.width)/2,r=e.top-(w.h-e.height)/2,i=e.width/n[0],c=e.height/n[1];return{duration:480,_:rt,css:(t,n)=>`transform:translate3d(${o*n}px, ${r*n}px, 0) scale3d(${i+t*(1-i)}, ${c+t*(1-c)}, 1)`}})(t)),()=>({j:h,B:I,K:T,L:P,F:l,J:k,next:_,close:$,D:v,zoomed:y,container:w}),t=>{let n;e(19,w.el=t,w),l.onOpen?.(w.el,h),d||globalThis.addEventListener("keydown",z);const o=new ResizeObserver((t=>{n&&(e(19,w.w=t[0].contentRect.width,w),e(19,w.h=t[0].contentRect.height,w),e(7,f=769>w.w),g()||x?.(),l.onResize?.(w.el,h)),n=1}));return o.observe(t),{destroy(){o.disconnect(),globalThis.removeEventListener("keydown",z),at.set(0),c.classList.remove("bp-lock"),l.onClosed?.()}}},i,t=>{e(5,l=t),e(8,d=l.inline),!d&&c.scrollHeight>c.clientHeight&&c.classList.add("bp-lock"),p=document.activeElement,e(19,w.w=i.offsetWidth,w),e(19,w.h=i===document.body?globalThis.innerHeight:i.clientHeight,w),e(7,f=769>w.w),e(4,u=l.position||0),e(0,r=[]);for(let t=0;(l.items.length||1)>t;t++){let n=l.items[t]||l.items;"dataset"in n?r.push({element:n,i:t,...n.dataset}):(n.i=t,r.push(n),n=n.element),l.el&&l.el===n&&e(4,u=t)}},M,a,w,t=>e(9,b=t.target),function(t){2!==t.button&&t.target===this&&b===this&&!l.noClose&&$()}]}class Bt extends ot{constructor(t){super(),et(this,t,Jt,Ft,c,{items:0,target:15,open:16,close:1,J:2,next:3,setPosition:17},null,[-1,-1])}get items(){return this.u.$[0]}get target(){return this.u.$[15]}get open(){return this.u.$[16]}get close(){return this.u.$[1]}get J(){return this.u.$[2]}get next(){return this.u.$[3]}get setPosition(){return this.u.$[17]}}return t=>new Bt({...t,P:t})}(); +(function () { + "use strict"; + var script = document.createElement("script"); + script.src = "/assets/scripts/vendor/bigger-picture.min.js"; + script.defer = true; + document.head.appendChild(script); +}()); diff --git a/assets/scripts/comments.js b/assets/scripts/comments.js index 25596f3..51fa87d 100755 --- a/assets/scripts/comments.js +++ b/assets/scripts/comments.js @@ -1,196 +1,7 @@ -let pageSlug = null; - -/* ----------------------------- - * DOM builders - * ----------------------------- */ - - -function showReplyForm(container, parentId) { - if (container.querySelector(".reply-form")) return; - - const form = document.createElement("form"); - form.className = "reply-form"; - - form.innerHTML = ` - - - - `; - - form.addEventListener("submit", async e => { - e.preventDefault(); - - const author = form.author.value.trim(); - const content = form.content.value.trim(); - if (!content) return; - - const ok = await postComment(author, content, parentId); - if (ok) loadComments(); - else alert("Failed to post reply"); - }); - - container.appendChild(form); -} - -function createComment(comment) { - const wrapper = document.createElement("div"); - wrapper.className = "comment"; - wrapper.dataset.id = comment.id; - wrapper.id = `comment-${comment.id}`; - - const author = document.createElement("strong"); - author.textContent = comment.author || "Anonymous"; - - const body = document.createElement("p"); - body.textContent = comment.content; - - const time = document.createElement("time"); - time.className = "comment-date"; - time.dateTime = comment.created_at; - time.textContent = new Date(comment.created_at).toLocaleString(); - - const replyBtn = document.createElement("button"); - replyBtn.className = "comment-reply"; - replyBtn.textContent = "Reply"; - replyBtn.onclick = () => - showReplyForm(wrapper, Number(comment.id)); - - wrapper.append(author, body, time, replyBtn); - - if (comment.children?.length) { - const replies = document.createElement("div"); - replies.className = "comment-children"; - - comment.children.forEach(child => { - replies.appendChild(createComment(child)); - }); - - wrapper.appendChild(replies); - } - return wrapper; -} - - - -function buildCommentTree(comments) { - const byId = {}; - const roots = []; - - comments.forEach(comment => { - comment.children = []; - byId[comment.id] = comment; - }); - - comments.forEach(comment => { - if (comment.parent_id) { - const parent = byId[comment.parent_id]; - if (parent) parent.children.push(comment); - } else { - roots.push(comment); - } - }); - - return roots; -} - - -/* ----------------------------- - * Rendering - * ----------------------------- */ - -function renderComments(comments) { - const list = document.getElementById("comments-list"); - list.innerHTML = ""; - - if (!comments.length) { - const empty = document.createElement("p"); - empty.className = "comments-empty"; - empty.textContent = "No comments yet."; - list.appendChild(empty); - return; - } - - const tree = buildCommentTree(comments); - tree.forEach(comment => list.appendChild(createComment(comment))); -} - - -/* ----------------------------- - * API - * ----------------------------- */ - -async function fetchComments() { - const res = await fetch(`/api/comments/${pageSlug}`); - if (!res.ok) { - console.error("Failed to fetch comments"); - return []; - } - return await res.json(); -} - -async function postComment(author, content, parentId = null) { - const res = await fetch("/api/comments", { - method: "POST", - headers: { "Content-Type": "application/json" }, - body: JSON.stringify({ - page_slug: pageSlug, - author: author || null, - content, - parent_id: parentId - }) - }); - - return res.ok; -} - - - -/* ----------------------------- - * Form handling - * ----------------------------- */ - -function wireCommentForm() { - const form = document.getElementById("comment-form"); - - form.addEventListener("submit", async event => { - event.preventDefault(); - - const authorInput = form.querySelector("input[name='author']"); - const textarea = form.querySelector("textarea[name='content']"); - - const author = authorInput.value.trim(); - const content = textarea.value.trim(); - - if (!content) return; - - const ok = await postComment(author, content); - if (ok) { - textarea.value = ""; - loadComments(); - } else { - alert("Failed to post comment"); - } - }); -} - - -/* ----------------------------- - * Entry point - * ----------------------------- */ - -async function loadComments() { - const comments = await fetchComments(); - renderComments(comments); -} - -function initComments() { - const section = document.getElementById("comments"); - if (!section) return; - - pageSlug = section.dataset.slug; - - wireCommentForm(); - loadComments(); -} - -initComments(); +(function () { + "use strict"; + var script = document.createElement("script"); + script.src = "/assets/scripts/features/comments.js"; + script.defer = true; + document.head.appendChild(script); +}()); diff --git a/assets/scripts/competency-status-board.js b/assets/scripts/competency-status-board.js index baf3db3..483d1e0 100755 --- a/assets/scripts/competency-status-board.js +++ b/assets/scripts/competency-status-board.js @@ -1,240 +1,7 @@ -const STATES = [ - { key: "completed", label: "Completed" }, - { key: "manager_review", label: "Manager Review" }, - { key: "in_progress", label: "In Progress" }, - { key: "not_started", label: "Not Started" }, - { key: "comments", label: "Comments" }, -]; - -const LEVELS = [ - { key: "graduate", label: "Graduate" }, - { key: "engineer", label: "Engineer" }, -]; - -let currentLevel = LEVELS[0].key; - -function isMobile() { - return window.matchMedia("(max-width: 600px)").matches; -} - -function renderLevelTabs() { - const board = document.getElementById("kanban-board"); - if (!board || document.getElementById("level-tabs")) return; - - const nav = document.createElement("div"); - nav.id = "level-tabs"; - - LEVELS.forEach(({ key, label }) => { - const btn = document.createElement("button"); - btn.textContent = label; - btn.dataset.level = key; - btn.className = "level-tab" + (key === currentLevel ? " active" : ""); - btn.addEventListener("click", () => { - currentLevel = key; - document.querySelectorAll(".level-tab").forEach(b => - b.classList.toggle("active", b.dataset.level === key) - ); - loadBoard(); - }); - nav.appendChild(btn); - }); - - board.insertAdjacentElement("beforebegin", nav); - - if (!document.getElementById("level-tab-styles")) { - const style = document.createElement("style"); - style.id = "level-tab-styles"; - style.textContent = ` - #level-tabs { - display: flex; - gap: 0.5em; - margin-bottom: 1em; - } - .level-tab { - padding: 0.4em 1.2em; - border: 1px solid #ccc; - background: none; - cursor: pointer; - border-radius: 4px; - font-size: 0.95em; - } - .level-tab.active { - background: #333; - color: #fff; - border-color: #333; - } - `; - document.head.appendChild(style); - } -} - -function populateMobileControls(items) { - if (!isMobile()) return; - - const panel = document.getElementById("mobile-move-panel"); - const itemSelect = document.getElementById("move-item"); - const fromSelect = document.getElementById("move-from"); - const toSelect = document.getElementById("move-to"); - - itemSelect.innerHTML = ""; - fromSelect.innerHTML = ""; - toSelect.innerHTML = ""; - - items.forEach((item) => { - const opt = document.createElement("option"); - opt.value = item.id; - opt.textContent = item.title; - opt.dataset.state = item.state; - itemSelect.appendChild(opt); - }); - - STATES.forEach((s) => { - fromSelect.appendChild(new Option(s.label, s.key)); - toSelect.appendChild(new Option(s.label, s.key)); - }); - - itemSelect.onchange = () => { - const selected = itemSelect.selectedOptions[0]; - if (selected?.dataset.state) { - fromSelect.value = selected.dataset.state; - } - }; -} - -const moveConfirmBtn = document.getElementById("move-confirm"); -if (moveConfirmBtn) { - moveConfirmBtn.addEventListener("click", async () => { - const itemId = document.getElementById("move-item").value; - const from = document.getElementById("move-from").value; - const to = document.getElementById("move-to").value; - - if (!itemId || !to) { - alert("Select an item and target column"); - return; - } - - if (from === to) { - alert("Item is already in that column"); - return; - } - - const res = await fetch(`/api/competencies/items/${itemId}/state`, { - method: "POST", - headers: { "Content-Type": "application/json" }, - body: JSON.stringify({ state: to }), - }); - - if (res.ok) { - loadBoard(); - } else { - alert("Failed to move competency"); - } - }); -} - -let draggedItemId = null; - -function countByState(items) { - return items.reduce((acc, item) => { - acc[item.state] = (acc[item.state] || 0) + 1; - return acc; - }, {}); -} - -async function updateProgress(items) { - const total = items.length; - const completed = items.filter(i => i.state === "completed").length; - const percent = total === 0 ? 0 : Math.round((completed / total) * 100); - - const fill = document.getElementById("progress-fill"); - const label = document.getElementById("progress-label"); - - if (fill) fill.style.width = `${percent}%`; - if (label) label.textContent = `${percent}% completed`; -} - -function createCard(item) { - const card = document.createElement("div"); - card.className = "kanban-card"; - card.draggable = true; - card.dataset.id = item.id; - card.textContent = item.title; - - card.addEventListener("dragstart", () => { - draggedItemId = item.id; - card.classList.add("dragging"); - }); - - card.addEventListener("dragend", () => { - draggedItemId = null; - card.classList.remove("dragging"); - }); - - return card; -} - -function createColumn(state, items, counts) { - const col = document.createElement("div"); - col.className = "kanban-column"; - col.dataset.state = state.key; - - const header = document.createElement("h3"); - header.innerHTML = ` - ${state.label} - ${counts[state.key] || 0} -`; - - const list = document.createElement("div"); - list.className = "kanban-list"; - - list.addEventListener("dragover", (e) => e.preventDefault()); - - list.addEventListener("drop", async () => { - if (!draggedItemId) return; - - const res = await fetch(`/api/competencies/items/${draggedItemId}/state`, { - method: "POST", - headers: { "Content-Type": "application/json" }, - body: JSON.stringify({ state: state.key }), - }); - - if (res.ok) { - loadBoard(); - } else { - alert("Failed to update state"); - } - }); - - items - .filter((i) => i.state === state.key) - .forEach((i) => list.appendChild(createCard(i))); - - col.appendChild(header); - col.appendChild(list); - - return col; -} - -function renderBoard(items) { - const board = document.getElementById("kanban-board"); - if (!board) return; - board.innerHTML = ""; - - const counts = countByState(items); - - STATES.forEach((state) => { - board.appendChild(createColumn(state, items, counts)); - }); -} - -async function loadBoard() { - const res = await fetch(`/api/competencies/items?group=${currentLevel}`); - const items = await res.json(); - - updateProgress(items); - renderBoard(items); - populateMobileControls(items); -} - -renderLevelTabs(); -loadBoard(); +(function () { + "use strict"; + var script = document.createElement("script"); + script.src = "/assets/scripts/pages/competency-status-board.js"; + script.defer = true; + document.head.appendChild(script); +}()); diff --git a/assets/scripts/features/comments.js b/assets/scripts/features/comments.js new file mode 100644 index 0000000..25596f3 --- /dev/null +++ b/assets/scripts/features/comments.js @@ -0,0 +1,196 @@ +let pageSlug = null; + +/* ----------------------------- + * DOM builders + * ----------------------------- */ + + +function showReplyForm(container, parentId) { + if (container.querySelector(".reply-form")) return; + + const form = document.createElement("form"); + form.className = "reply-form"; + + form.innerHTML = ` + + + + `; + + form.addEventListener("submit", async e => { + e.preventDefault(); + + const author = form.author.value.trim(); + const content = form.content.value.trim(); + if (!content) return; + + const ok = await postComment(author, content, parentId); + if (ok) loadComments(); + else alert("Failed to post reply"); + }); + + container.appendChild(form); +} + +function createComment(comment) { + const wrapper = document.createElement("div"); + wrapper.className = "comment"; + wrapper.dataset.id = comment.id; + wrapper.id = `comment-${comment.id}`; + + const author = document.createElement("strong"); + author.textContent = comment.author || "Anonymous"; + + const body = document.createElement("p"); + body.textContent = comment.content; + + const time = document.createElement("time"); + time.className = "comment-date"; + time.dateTime = comment.created_at; + time.textContent = new Date(comment.created_at).toLocaleString(); + + const replyBtn = document.createElement("button"); + replyBtn.className = "comment-reply"; + replyBtn.textContent = "Reply"; + replyBtn.onclick = () => + showReplyForm(wrapper, Number(comment.id)); + + wrapper.append(author, body, time, replyBtn); + + if (comment.children?.length) { + const replies = document.createElement("div"); + replies.className = "comment-children"; + + comment.children.forEach(child => { + replies.appendChild(createComment(child)); + }); + + wrapper.appendChild(replies); + } + return wrapper; +} + + + +function buildCommentTree(comments) { + const byId = {}; + const roots = []; + + comments.forEach(comment => { + comment.children = []; + byId[comment.id] = comment; + }); + + comments.forEach(comment => { + if (comment.parent_id) { + const parent = byId[comment.parent_id]; + if (parent) parent.children.push(comment); + } else { + roots.push(comment); + } + }); + + return roots; +} + + +/* ----------------------------- + * Rendering + * ----------------------------- */ + +function renderComments(comments) { + const list = document.getElementById("comments-list"); + list.innerHTML = ""; + + if (!comments.length) { + const empty = document.createElement("p"); + empty.className = "comments-empty"; + empty.textContent = "No comments yet."; + list.appendChild(empty); + return; + } + + const tree = buildCommentTree(comments); + tree.forEach(comment => list.appendChild(createComment(comment))); +} + + +/* ----------------------------- + * API + * ----------------------------- */ + +async function fetchComments() { + const res = await fetch(`/api/comments/${pageSlug}`); + if (!res.ok) { + console.error("Failed to fetch comments"); + return []; + } + return await res.json(); +} + +async function postComment(author, content, parentId = null) { + const res = await fetch("/api/comments", { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ + page_slug: pageSlug, + author: author || null, + content, + parent_id: parentId + }) + }); + + return res.ok; +} + + + +/* ----------------------------- + * Form handling + * ----------------------------- */ + +function wireCommentForm() { + const form = document.getElementById("comment-form"); + + form.addEventListener("submit", async event => { + event.preventDefault(); + + const authorInput = form.querySelector("input[name='author']"); + const textarea = form.querySelector("textarea[name='content']"); + + const author = authorInput.value.trim(); + const content = textarea.value.trim(); + + if (!content) return; + + const ok = await postComment(author, content); + if (ok) { + textarea.value = ""; + loadComments(); + } else { + alert("Failed to post comment"); + } + }); +} + + +/* ----------------------------- + * Entry point + * ----------------------------- */ + +async function loadComments() { + const comments = await fetchComments(); + renderComments(comments); +} + +function initComments() { + const section = document.getElementById("comments"); + if (!section) return; + + pageSlug = section.dataset.slug; + + wireCommentForm(); + loadComments(); +} + +initComments(); diff --git a/assets/scripts/features/hidden-details.js b/assets/scripts/features/hidden-details.js new file mode 100644 index 0000000..dd700c0 --- /dev/null +++ b/assets/scripts/features/hidden-details.js @@ -0,0 +1,624 @@ +(function () { + "use strict"; + + /* + * Hidden site details + * ------------------- + * This file adds small hidden interactions across the site: footer notes, + * click targets, search/keyboard secrets, rare messages, and page-specific + * behavior for the hidden /play pages. + * + * How to add your own things: + * - Add new text to EDITABLE CONTENT arrays such as `details`, `poems`, + * `greetings`, or `lore`. + * - Add search-triggered toast messages to `SEARCH_TOASTS`. + * - Add search-triggered page redirects to `SEARCH_ROUTES`. + * - Add typed keyboard phrases to `KEYBOARD_SECRETS` or `LONG_KEYBOARD_SECRETS`. + * - Add a new feature by writing an `addYourFeature(memory)` function and + * adding it to the `FEATURES` list at the bottom of the file. + */ + + // Storage keys. v1 is read once so old visitors keep their hidden progress. + const STORAGE_KEY = "zxh_hidden_details_v2"; + const OLD_STORAGE_KEY = "zxh_hidden_details_v1"; + + // Shared page context. These are captured once so daily random picks stay stable. + const now = new Date(); + const hour = now.getHours(); + const path = window.location.pathname; + const state = readState(); + // ----------------------------- + // EDITABLE CONTENT + // ----------------------------- + // Generated by the hidden narrative authoring page. + // Friendly source of truth: assets/content/hidden-details.json + + const familyLayers = []; + + const details = []; + + const poems = []; + + const greetings = []; + + const nightMessages = []; + + const lore = { + "quotes": [], + "conversations": [], + "journals": [], + "warnings": [], + "dreams": [], + "cassettes": [], + "fakeUsers": [], + "seasonal": {}, + "homepageTakeovers": [], + "roomLinks": [] +}; + + // Exact search text -> toast message. + const SEARCH_TOASTS = {}; + + // Exact search text -> hidden page route. + const SEARCH_ROUTES = {}; + + // Short typed phrases. Stored in sessionStorage as a rolling key chain. + const KEYBOARD_SECRETS = []; + + // Longer typed phrases and character names. + const LONG_KEYBOARD_SECRETS = []; + + + // ----------------------------- + // STATE HELPERS + // ----------------------------- + + function readState() { + let current = {}; + try { + current = JSON.parse(localStorage.getItem(STORAGE_KEY) || "{}"); + } catch (_) {} + if (!current.visits) { + try { + const oldState = JSON.parse(localStorage.getItem(OLD_STORAGE_KEY) || "{}"); + current = { ...oldState, migratedFromV1: true }; + localStorage.setItem(STORAGE_KEY, JSON.stringify(current)); + } catch (_) {} + } + return current; + } + + function writeState(next) { + try { + localStorage.setItem(STORAGE_KEY, JSON.stringify(next)); + } catch (_) {} + } + + function pick(list, salt) { + const seed = hash(`${path}|${now.toDateString()}|${salt || ""}`); + return list[seed % list.length]; + } + + function hash(value) { + let h = 2166136261; + for (let i = 0; i < value.length; i += 1) { + h ^= value.charCodeAt(i); + h = Math.imul(h, 16777619); + } + return Math.abs(h >>> 0); + } + + // ----------------------------- + // UI HELPERS + // ----------------------------- + + function hiddenMessageMarkup(message) { + return `${escapeHtml(message)}`; + } + + function setHiddenMessage(el, message) { + delete el.dataset.hiddenCharacter; + el.innerHTML = hiddenMessageMarkup(message); + } + + function toast(message, duration) { + let el = document.querySelector(".hidden-toast"); + if (!el) { + el = document.createElement("div"); + el.className = "hidden-toast"; + el.setAttribute("role", "status"); + document.body.appendChild(el); + } + setHiddenMessage(el, message); + el.classList.add("is-visible"); + window.clearTimeout(el._timer); + el._timer = window.setTimeout(() => el.classList.remove("is-visible"), duration || 5600); + } + + function redirectTo(route) { + window.location.href = route; + } + + function runSecretAction(secret) { + if (secret.route) redirectTo(secret.route); + if (secret.message) toast(secret.message); + if (secret.song) playTinySong(); + } + + function layerForSearch(value) { + if (value.includes("future")) return 4; + if (value.includes("sensei") || value.includes("aphy")) return 3; + return 2; + } + + function rememberVisit() { + const visits = (state.visits || 0) + 1; + const seen = Array.isArray(state.seen) ? state.seen : []; + const pathCounts = { ...(state.pathCounts || {}) }; + pathCounts[path] = (pathCounts[path] || 0) + 1; + const layerVisits = { ...(state.layerVisits || {}) }; + const next = { + ...state, + visits, + lastPath: path, + pathCounts, + layerVisits, + seen: Array.from(new Set([...seen, path])).slice(-100), + firstSeen: state.firstSeen || new Date().toISOString(), + lastSeen: new Date().toISOString() + }; + writeState(next); + return next; + } + + function awardLayer(layer, reason) { + const next = readState(); + next.layerVisits = { ...(next.layerVisits || {}) }; + next.layerVisits[layer] = (next.layerVisits[layer] || 0) + 1; + next.lastLayerReason = reason; + writeState(next); + } + + // ----------------------------- + // GLOBAL FEATURES + // ----------------------------- + + function addFooterNote(memory) { + const footer = document.querySelector("footer"); + if (!footer || !details.length) return; + const note = document.createElement("p"); + note.className = "hidden-footer-note"; + const base = pick(details, "footer"); + setHiddenMessage(note, memory.visits > 4 ? `${base} You have passed through ${memory.visits} times.` : base); + footer.appendChild(note); + } + + function addHomepageGreeting(memory) { + const target = document.querySelector("#db-greeting"); + if (!target || !greetings.length) return; + setHiddenMessage(target, pick(greetings, `greeting-${memory.visits}`)); + const extra = document.createElement("p"); + extra.className = "hidden-greeting"; + setHiddenMessage(extra, ""); + target.closest("div")?.appendChild(extra); + } + + function addWhispers() { + // Event: click one of the tiny "?" marks appended to long paragraphs. + const paragraphs = Array.from(document.querySelectorAll("main p, #content p, article p")).filter((p) => p.textContent.trim().length > 80); + paragraphs.slice(0, 5).forEach((p, index) => { + if ((hash(path + index) + index) % 3 !== 0) return; + const mark = document.createElement("span"); + mark.className = "hidden-whisper"; + mark.tabIndex = 0; + mark.textContent = " ?"; + const source = index % 2 ? poems : details; + if (!source.length) return; + mark.title = pick(source, `whisper-${index}`); + mark.addEventListener("click", () => { + awardLayer(index % 2 ? 2 : 1, "paragraph whisper"); + toast(mark.title); + }); + p.appendChild(mark); + }); + } + + function addCornerObject() { + // Event: click the small fixed button in the bottom-left corner. + const object = document.createElement("button"); + object.className = "hidden-corner-object"; + object.type = "button"; + object.title = "hidden interaction"; + object.textContent = state.visits % 2 ? "*" : "~"; + document.body.appendChild(object); + let clicks = 0; + object.addEventListener("click", () => { + clicks += 1; + awardLayer(clicks > 3 ? 3 : 1, "corner object"); + toast("Hidden interaction recorded."); + if (clicks === 7) window.location.href = "/play/left-behind.html"; + }); + } + + function addLogoSearchAndKeyboardSecrets(memory) { + // Events: + // - Click `.site-brand` repeatedly on the homepage. + // - Type exact words into `#search-input`. + // - Type phrases anywhere on the page. + const nav = document.querySelector(".site-brand"); + if (nav) { + let taps = Number(sessionStorage.getItem("zxh_logo_taps") || 0); + nav.addEventListener("click", (event) => { + if (path === "/" || path === "/index.html") { + event.preventDefault(); + taps += 1; + sessionStorage.setItem("zxh_logo_taps", String(taps)); + awardLayer(taps >= 5 ? 3 : 1, "logo taps"); + toast(taps >= 5 ? "Hidden route available: /play/dream-corridor.html" : "Hidden interaction recorded."); + if (taps >= 8) window.location.href = "/play/dream-corridor.html"; + } + }); + } + + const search = document.querySelector("#search-input"); + if (search) { + search.addEventListener("input", () => { + const value = search.value.trim().toLowerCase(); + if (SEARCH_TOASTS[value]) toast(SEARCH_TOASTS[value]); + if (SEARCH_ROUTES[value]) { + awardLayer(layerForSearch(value), `search ${value}`); + redirectTo(SEARCH_ROUTES[value]); + } + }); + } + + document.addEventListener("keydown", (event) => { + const key = event.key.toLowerCase(); + const chain = `${sessionStorage.getItem("zxh_key_chain") || ""}${key}`.slice(-18); + sessionStorage.setItem("zxh_key_chain", chain); + KEYBOARD_SECRETS + .filter((secret) => chain.endsWith(secret.phrase)) + .forEach(runSecretAction); + }); + + if (memory.seen?.length >= 6 && !state.travellerNoteShown) { + window.setTimeout(() => { + toast("Hidden path recorded."); + writeState({ ...readState(), travellerNoteShown: true }); + }, 1600); + } + } + + function addRareEvents() { + if (hour >= 22 || hour < 5) { + document.body.classList.add("hidden-late-night"); + if (nightMessages.length) window.setTimeout(() => toast(pick(nightMessages, "night"), 2200), 900); + } + const roll = Math.random(); + if (roll < 0.003) { + window.setTimeout(() => showDriftNote("", ""), 1800); + awardLayer(3, "rare sensei appearance"); + } else if (roll < 0.008) { + window.setTimeout(() => toast("Hidden warning."), 2400); + awardLayer(4, "future warning"); + } + } + + function showDriftNote(text, art) { + const panel = document.createElement("aside"); + panel.className = "hidden-drift-note"; + panel.innerHTML = `
    ${hiddenMessageMarkup(text)}
    ${escapeHtml(art)}
    `; + panel.querySelector("button").addEventListener("click", () => panel.remove()); + document.body.appendChild(panel); + } + + function addSecretLinks() { + [ + ["/play/left-behind.html", "left behind"], + ["/play/dream-corridor.html", "dream corridor"], + ["/play/kitchen-light.html", "kitchen light"], + ...lore.roomLinks + ].forEach(([href, label], index) => { + const link = document.createElement("a"); + link.className = "hidden-secret-link"; + link.href = href; + link.textContent = label; + link.style.left = `${index + 1}px`; + document.body.appendChild(link); + }); + } + + function enhanceErrors() { + if (document.title.match(/404|not found/i) || document.body.textContent.match(/404|not found/i)) { + toast("Page not found."); + } + } + + function addContinuity(memory) { + const milestones = { + 64: "Hidden layer unlocked." + }; + if (milestones[memory.visits] && !state[`milestone_${memory.visits}`]) { + const layer = memory.visits >= 31 ? 4 : memory.visits >= 9 ? 3 : 2; + awardLayer(layer, `visit milestone ${memory.visits}`); + window.setTimeout(() => toast(milestones[memory.visits], 7000), 1200); + writeState({ ...readState(), [`milestone_${memory.visits}`]: true }); + } + + const count = memory.pathCounts?.[path] || 0; + if ([3, 7, 12].includes(count)) { + window.setTimeout(() => toast("Page revisit recorded.", 6400), 1700); + } + } + + function addSeasonAndDates(memory) { + const month = now.getMonth(); + const day = now.getDate(); + const season = month < 2 || month === 11 ? "winter" : month < 5 ? "spring" : month < 8 ? "summer" : "autumn"; + if (Math.random() < 0.18 && lore.seasonal[season]) window.setTimeout(() => toast(lore.seasonal[season], 5600), 2600); + const first = memory.firstSeen ? new Date(memory.firstSeen) : null; + if (first && memory.visits > 1 && first.getMonth() === month && first.getDate() === day) { + window.setTimeout(() => toast("Visitor anniversary recorded.", 7000), 1400); + } + } + + function addObjectConstellation() { + // Event: click the small keepsake buttons along the bottom rail. + const rail = document.createElement("div"); + rail.className = "hidden-object-rail"; + rail.setAttribute("aria-label", "Hidden objects"); + const objects = [ + ["ring", "Hidden object recorded."], + ["bot", "Hidden object recorded."], + ["tea", "Hidden object recorded."], + ["crayon", "Hidden object recorded."], + ["clock", "Hidden object recorded."] + ]; + objects.forEach(([name, message]) => { + const button = document.createElement("button"); + button.type = "button"; + button.className = `hidden-keepsake hidden-keepsake--${name}`; + button.title = name; + button.textContent = { ring: "o", bot: "#", tea: "u", crayon: "/", clock: ":" }[name]; + button.addEventListener("click", () => { + const next = readState(); + next.keepsakes = Array.from(new Set([...(next.keepsakes || []), name])); + writeState(next); + awardLayer(next.keepsakes.length >= 3 ? 3 : 2, `keepsake ${name}`); + toast(message); + if (next.keepsakes.length >= objects.length) { + window.setTimeout(() => toast("Hidden object set completed."), 1100); + } + }); + rail.appendChild(button); + }); + document.body.appendChild(rail); + } + + function addWeatherWindow(memory) { + // Event: click the small "window" button. This asks for browser geolocation. + if (memory.visits < 3 || !("geolocation" in navigator)) return; + const button = document.createElement("button"); + button.className = "hidden-weather-window"; + button.type = "button"; + button.title = "Check outside weather"; + button.textContent = "window"; + button.addEventListener("click", () => { + toast("Checking outside weather."); + navigator.geolocation.getCurrentPosition((pos) => { + const { latitude, longitude } = pos.coords; + fetch(`https://api.open-meteo.com/v1/forecast?latitude=${latitude.toFixed(3)}&longitude=${longitude.toFixed(3)}¤t=temperature_2m,precipitation&timezone=auto`) + .then((res) => res.json()) + .then((data) => { + const current = data.current || {}; + const rain = Number(current.precipitation || 0) > 0; + const temp = Math.round(Number(current.temperature_2m)); + toast(rain ? `Outside: rain, ${temp}C.` : `Outside: ${temp}C.`); + }) + .catch(() => toast("Weather check failed.")); + }, () => toast("No outside weather today.")); + }); + document.body.appendChild(button); + } + + function addOldWebLayer(memory) { + if (Math.random() < 0.08 || memory.visits > 10) { + const stamp = document.createElement("div"); + stamp.className = "hidden-oldweb-stamp"; + if (!lore.fakeUsers.length) return; + stamp.title = pick(lore.fakeUsers, "fake-user"); + stamp.textContent = "best viewed with patience"; + stamp.addEventListener("click", () => { + awardLayer(1, "old web stamp"); + toast(stamp.title); + }); + document.body.appendChild(stamp); + } + const comments = document.querySelector("#comments"); + if (comments && lore.fakeUsers.length && !comments.querySelector(".hidden-guestbook-line")) { + const line = document.createElement("p"); + line.className = "hidden-guestbook-line"; + setHiddenMessage(line, pick(lore.fakeUsers, "comment-lore")); + comments.appendChild(line); + } + } + + function addSourceRelics() { + const marker = document.createComment("hidden-details"); + document.documentElement.appendChild(marker); + document.querySelectorAll("img[alt=''], img:not([alt])").forEach((img, index) => { + if (index > 2) return; + img.alt = "Decorative image."; + }); + } + + function addLongKeyboardSecrets() { + // Event: type longer hidden phrases anywhere on the page. + document.addEventListener("keydown", (event) => { + const chain = `${sessionStorage.getItem("zxh_second_chain") || ""}${event.key.toLowerCase()}`.slice(-24); + sessionStorage.setItem("zxh_second_chain", chain); + LONG_KEYBOARD_SECRETS + .filter((secret) => chain.endsWith(secret.phrase)) + .forEach(runSecretAction); + }); + } + + function addPatienceRewards(memory) { + // Event: no movement, key presses, scrolling, or clicking for 90 seconds. + if (memory.visits < 2) return; + let idleTimer = null; + const startIdle = () => { + window.clearTimeout(idleTimer); + idleTimer = window.setTimeout(() => { + awardLayer(5, "patience"); + toast("Idle moment recorded.", 7600); + const next = readState(); + next.patientMoments = (next.patientMoments || 0) + 1; + writeState(next); + }, 90000); + }; + ["mousemove", "keydown", "scroll", "click"].forEach((name) => document.addEventListener(name, startIdle, { passive: true })); + startIdle(); + } + + function addRareSecondLayer() { + const roll = Math.random(); + if ((path === "/" || path === "/index.html") && roll < 0.006) { + document.body.classList.add("hidden-home-takeover"); + if (lore.homepageTakeovers.length) window.setTimeout(() => showDriftNote(pick(lore.homepageTakeovers, "takeover"), ""), 600); + } else if (roll < 0.002) { + window.setTimeout(() => showDriftNote("", ""), 1500); + } else if (roll < 0.006) { + if (lore.dreams.length) window.setTimeout(() => toast(pick(lore.dreams, "rare-dream"), 7600), 2000); + } else if (roll < 0.014) { + if (lore.warnings.length) window.setTimeout(() => toast(pick(lore.warnings, "rare-warning"), 6800), 2300); + } + } + + function addFamilyLayerIndex(memory) { + if (!path.includes("/play/family-layer-index")) return; + const target = document.querySelector("[data-family-layer-index]"); + if (!target) return; + const visits = readState().layerVisits || {}; + target.innerHTML = familyLayers.map((line, layer) => { + const count = visits[layer] || 0; + return `
  • ${hiddenMessageMarkup(line)}
    local encounters: ${count}
  • `; + }).join(""); + } + + function addPageSpecificSecrets() { + // Events only used by specific `/play/...` pages. + if (path.includes("/play/cassette-log")) { + document.querySelectorAll("[data-cassette]").forEach((button, index) => { + button.addEventListener("click", () => { + awardLayer(index >= 2 ? 4 : 2, "voice note"); + if (lore.cassettes.length) toast(lore.cassettes[index % lore.cassettes.length], 7600); + playTinySong(); + }); + }); + } + if (path.includes("/play/patience-game")) { + const target = document.querySelector("[data-patience-target]"); + const count = document.querySelector("[data-patience-count]"); + if (target && count) { + let seconds = 0; + setInterval(() => { + seconds += 1; + count.textContent = String(seconds); + if ([30, 90, 180].includes(seconds)) { + setHiddenMessage(target, "Patience milestone recorded."); + } + }, 1000); + } + } + if (path.includes("/play/terminal-cupboard")) { + const input = document.querySelector("[data-cupboard-input]"); + const log = document.querySelector("[data-cupboard-log]"); + const commands = { + help: "commands: layer, exit", + layer: familyLayers.join("\n"), + exit: "Closed." + }; + input?.addEventListener("keydown", (event) => { + if (event.key !== "Enter") return; + const value = input.value.trim().toLowerCase(); + const line = document.createElement("p"); + setHiddenMessage(line, `> ${value}\n${commands[value] || "Unknown command."}`); + log.appendChild(line); + input.value = ""; + }); + } + } + + function addInvisibleHoverSecrets() { + document.querySelectorAll("h1, h2").forEach((heading, index) => { + if (index > 5) return; + heading.classList.add("hidden-hover-memory"); + const source = [...lore.quotes, ...lore.journals, ...poems]; + if (!source.length) return; + heading.dataset.hiddenMemory = pick(source, `heading-${index}`); + }); + } + + function playTinySong() { + try { + const AudioContext = window.AudioContext || window.webkitAudioContext; + if (!AudioContext) return; + const ctx = new AudioContext(); + const notes = [392, 494, 440, 330, 392]; + notes.forEach((freq, index) => { + const osc = ctx.createOscillator(); + const gain = ctx.createGain(); + osc.frequency.value = freq; + osc.type = "sine"; + gain.gain.setValueAtTime(0.0001, ctx.currentTime + index * 0.18); + gain.gain.exponentialRampToValueAtTime(0.05, ctx.currentTime + index * 0.18 + 0.03); + gain.gain.exponentialRampToValueAtTime(0.0001, ctx.currentTime + index * 0.18 + 0.16); + osc.connect(gain); + gain.connect(ctx.destination); + osc.start(ctx.currentTime + index * 0.18); + osc.stop(ctx.currentTime + index * 0.18 + 0.18); + }); + } catch (_) {} + } + + function escapeHtml(value) { + return String(value).replace(/[&<>"']/g, (char) => ({ + "&": "&", + "<": "<", + ">": ">", + '"': """, + "'": "'" + }[char])); + } + + // Features run in this order on every page after the DOM is ready. + // Each function receives the current `memory` object. + const FEATURES = [ + addFooterNote, + addHomepageGreeting, + addWhispers, + addCornerObject, + addLogoSearchAndKeyboardSecrets, + addRareEvents, + addSecretLinks, + enhanceErrors, + addContinuity, + addSeasonAndDates, + addObjectConstellation, + addWeatherWindow, + addOldWebLayer, + addSourceRelics, + addLongKeyboardSecrets, + addPatienceRewards, + addRareSecondLayer, + addFamilyLayerIndex, + addPageSpecificSecrets, + addInvisibleHoverSecrets + ]; + + document.addEventListener("DOMContentLoaded", () => { + const memory = rememberVisit(); + FEATURES.forEach((addFeature) => addFeature(memory)); + }); +}()); diff --git a/assets/scripts/gallery-init.js b/assets/scripts/gallery-init.js index c76eb76..99d4d66 100755 --- a/assets/scripts/gallery-init.js +++ b/assets/scripts/gallery-init.js @@ -1,315 +1,7 @@ -document.addEventListener('DOMContentLoaded', () => { - if (typeof window.BiggerPicture !== 'function') { - console.error('[gallery-init] BiggerPicture not found. Check script path.'); - return; - } - const VIDEO_EXTENSIONS = ['mp4', 'webm', 'mov', 'm4v', 'ogv']; - - const isVideo = (href) => { - if (!href) return false; - href = href.toLowerCase(); - return VIDEO_EXTENSIONS.some(ext => href.endsWith('.' + ext)); - }; - - // 1b) Convert MP4 links into inline
    - const videoLinks = document.querySelectorAll('a[href]'); - videoLinks.forEach(a => { - const href = a.getAttribute("href"); - if (!isVideo(href)) return; - - const video = document.createElement("video"); - video.controls = true; - video.preload = "metadata"; - video.style.maxWidth = "100%"; - video.style.borderRadius = "6px"; - - const source = document.createElement("source"); - source.src = href; - source.type = "video/" + href.split('.').pop(); // guesses correct mime - video.appendChild(source); - - // Replace the link with the inline video - a.parentNode.replaceChild(video, a); - }); - - // 1) Wrap Org-exported images so they’re clickable - const imgs = document.querySelectorAll('.figure img, img.org-svg'); - imgs.forEach((img) => { - if (img.closest('a')) return; // already wrapped - const a = document.createElement('a'); - const href = img.currentSrc || img.src; - a.href = href; - a.dataset.img = href; // lets BP pre-size/raster slides - a.dataset.alt = img.alt || ''; - const setDims = () => { - a.dataset.width = img.naturalWidth || img.width || 1920; - a.dataset.height = img.naturalHeight || img.height || 1080; - }; - if (img.complete) setDims(); else img.addEventListener('load', setDims); - img.style.cursor = 'zoom-in'; - img.parentElement.insertBefore(a, img); - a.appendChild(img); - }); - - // 2) One global BP instance - const bp = BiggerPicture({ target: document.body }); - - // SVG pan/zoom handle - let activePanZoom = null; - const destroyPanZoom = () => { try { activePanZoom?.destroy(); } catch(_){} activePanZoom = null; }; - - // Simple rotate state (for non-SVG images) - let activeContainer = null; - let currentRotation = 0; - let rotateControls = null; - - // 3) Build galleries per content container - const containers = document.querySelectorAll('main, article, .content, body'); - containers.forEach((container) => { - const links = Array.from(container.querySelectorAll( -'.figure a, a:has(img.org-svg), a[href$=".mp4"], a[href$=".webm"], a[href$=".mov"], a[href$=".m4v"], a[href$=".ogv"]' - )); - if (!links.length) return; - - // Start the lightbox on click - links.forEach((link, index) => { - link.addEventListener('click', (e) => { - e.preventDefault(); - document.querySelectorAll(".theme-toggle").forEach(el => { - el.classList.add("hidden"); - }); - - bp.open({ - // IMPORTANT: pass the anchor ELEMENTS, not custom objects - items: links, - el: link, - caption: (el) => el.querySelector('img')?.alt || el.title || '', - maxZoom: 40, // for raster images (PNG/JPG); SVG handled separately - - // Fade-out polish + cleanup - onClose(containerEl) { - destroyPanZoom(); - teardownRotation(); - if (containerEl) containerEl.classList.add('bp-fadeout'); - const themeToggle = document.querySelector(".theme-toggle"); - if (themeToggle) { - themeToggle.classList.remove("hidden"); - } - }, - - // Called once after open and on every slide change - //onOpen(containerEl) { setupRotation(containerEl); enhanceSVG(containerEl); } - onOpen(containerEl) { - const linkEl = bp.currItem; - const href = linkEl?.href || ""; - - if (href.endsWith(".mp4")) { - // Turn off image rotation (not applicable for video) - teardownRotation(); - - const htmlLayer = containerEl.querySelector(".bp-html"); - const imgLayer = containerEl.querySelector(".bp-img"); - - if (!htmlLayer) return; - - // Hide the default image layer - if (imgLayer) imgLayer.style.display = "none"; - - // Insert video player - htmlLayer.innerHTML = ` - - `; - - return; // Do not run image/SVG enhancements - } - - // Image behaviour - setupRotation(containerEl); - enhanceSVG(containerEl); - } , - onUpdate(containerEl){ setupRotation(containerEl); enhanceSVG(containerEl); } - }); - }); - }); - }); - - // 4) Simple rotate buttons for raster images - function ensureRotateControls() { - if (rotateControls) return rotateControls; - - const wrapper = document.createElement('div'); - wrapper.className = 'bp-rotate-controls'; - Object.assign(wrapper.style, { - position: 'fixed', - bottom: '1.5rem', - right: '1.5rem', - display: 'flex', - gap: '0.5rem', - zIndex: '9999', - pointerEvents: 'auto' - }); - - const mkBtn = (label, title) => { - const btn = document.createElement('button'); - btn.type = 'button'; - btn.textContent = label; - btn.title = title; - btn.setAttribute('aria-label', title); - Object.assign(btn.style, { - padding: '0.4rem 0.6rem', - borderRadius: '999px', - border: 'none', - fontSize: '1.2rem', - cursor: 'pointer', - background: 'rgba(30,30,30,0.8)', - color: '#fff' - }); - return btn; - }; - - const left = mkBtn('⟲', 'Rotate image 90° left'); - const right = mkBtn('⟳', 'Rotate image 90° right'); - - left.addEventListener('click', (e) => { - e.stopPropagation(); // don’t close the lightbox - if (!activeContainer) return; - currentRotation = (currentRotation - 90 + 360) % 360; - applyRotation(); - }); - - right.addEventListener('click', (e) => { - e.stopPropagation(); - if (!activeContainer) return; - currentRotation = (currentRotation + 90) % 360; - applyRotation(); - }); - - wrapper.append(left, right); - document.body.appendChild(wrapper); - rotateControls = wrapper; - return rotateControls; - } - - function ensureRotateWrapper() { - if (!activeContainer) return null; - - const imgRoot = activeContainer.querySelector('.bp-img'); - if (!imgRoot) return null; - - let imgEl = imgRoot.querySelector('img'); - if (!imgEl) return null; - - const src = (imgEl.currentSrc || imgEl.src || '').toLowerCase(); - // We only rotate raster images; SVGs are handled via svg-pan-zoom - if (src.endsWith('.svg')) return null; - - let wrapper = imgRoot.querySelector('.bp-rotate-wrapper'); - if (!wrapper) { - wrapper = document.createElement('div'); - wrapper.className = 'bp-rotate-wrapper'; - wrapper.style.display = 'inline-block'; - wrapper.style.transformOrigin = 'center center'; - - imgRoot.appendChild(wrapper); - wrapper.appendChild(imgEl); - } else if (!wrapper.contains(imgEl)) { - // Slide changed and BiggerPicture replaced the - wrapper.innerHTML = ''; - wrapper.appendChild(imgEl); - } - - return wrapper; - } - - function applyRotation() { - const wrapper = ensureRotateWrapper(); - if (!wrapper) return; - wrapper.style.transform = `rotate(${currentRotation}deg)`; - } - - function setupRotation(containerEl) { - activeContainer = containerEl; - currentRotation = 0; - const controls = ensureRotateControls(); - controls.style.display = 'flex'; - applyRotation(); - } - - function teardownRotation() { - activeContainer = null; - currentRotation = 0; - if (rotateControls) { - rotateControls.style.display = 'none'; - } - } - - - // 4) If current slide is an SVG, swap to inline + enable svg-pan-zoom - async function enhanceSVG(containerEl) { - try { - destroyPanZoom(); - - const imgEl = containerEl.querySelector('.bp-img img'); - if (!imgEl) return; - - const src = imgEl.currentSrc || imgEl.src || ''; - const isSVG = src.toLowerCase().endsWith('.svg'); - const htmlLayer = containerEl.querySelector('.bp-html'); - if (!isSVG || !htmlLayer) { - // ensure any previous holder is removed and bitmap is visible - const old = htmlLayer?.querySelector('.bp-svg-holder'); - if (old) old.remove(); - imgEl.style.visibility = ''; - return; - } - - // Create/clear holder - let holder = htmlLayer.querySelector('.bp-svg-holder'); - if (!holder) { - holder = document.createElement('div'); - holder.className = 'bp-svg-holder'; - holder.style.maxWidth = '95vw'; - holder.style.maxHeight = '95vh'; - htmlLayer.appendChild(holder); - } - holder.innerHTML = ''; - - // Hide the bitmap so only the inline SVG shows - imgEl.style.visibility = 'hidden'; - - // Inline the SVG - const res = await fetch(src, { cache: 'force-cache' }); - const text = await res.text(); - holder.innerHTML = text; - - const svg = holder.querySelector('svg'); - if (!svg) { imgEl.style.visibility = ''; return; } - - svg.style.maxWidth = '95vw'; - svg.style.maxHeight = '95vh'; - svg.style.display = 'block'; - - if (typeof window.svgPanZoom === 'function') { - activePanZoom = svgPanZoom(svg, { - zoomEnabled: true, - controlIconsEnabled: true, - fit: true, - center: true, - minZoom: 0.05, - maxZoom: 400, // effectively "unlimited" - zoomScaleSensitivity: 0.25, - dblClickZoomEnabled: true - }); - // Keep wheel inside lightbox - holder.addEventListener('wheel', (e) => e.stopPropagation(), { passive: true }); - } else { - console.warn('[gallery-init] svg-pan-zoom not loaded'); - } - } catch (err) { - console.error('[gallery-init] SVG enhance failed:', err); - } - } -}); +(function () { + "use strict"; + var script = document.createElement("script"); + script.src = "/assets/scripts/ui/gallery-init.js"; + script.defer = true; + document.head.appendChild(script); +}()); diff --git a/assets/scripts/hidden-details.js b/assets/scripts/hidden-details.js index 72ebbc9..e5c3b25 100644 --- a/assets/scripts/hidden-details.js +++ b/assets/scripts/hidden-details.js @@ -1,691 +1,7 @@ (function () { "use strict"; - - /* - * Hidden site details - * ------------------- - * This file adds small hidden interactions across the site: footer notes, - * click targets, search/keyboard secrets, rare messages, and page-specific - * behavior for the hidden /play pages. - * - * How to add your own things: - * - Add new text to EDITABLE CONTENT arrays such as `details`, `poems`, - * `greetings`, or `lore`. - * - Add search-triggered toast messages to `SEARCH_TOASTS`. - * - Add search-triggered page redirects to `SEARCH_ROUTES`. - * - Add typed keyboard phrases to `KEYBOARD_SECRETS` or `LONG_KEYBOARD_SECRETS`. - * - Add a new feature by writing an `addYourFeature(memory)` function and - * adding it to the `FEATURES` list at the bottom of the file. - */ - - // Storage keys. v1 is read once so old visitors keep their hidden progress. - const STORAGE_KEY = "zxh_hidden_details_v2"; - const OLD_STORAGE_KEY = "zxh_hidden_details_v1"; - - // Shared page context. These are captured once so daily random picks stay stable. - const now = new Date(); - const hour = now.getHours(); - const path = window.location.pathname; - const state = readState(); - const CHARACTER_AVATARS = { - "lima": { - avatar: "/assets/avatars/lima.jpg", - fallback: "/assets/avatars/z.jpeg", - aliases: ["lima"], - glow: "#f2c58b" - }, - "aphy": { - avatar: "/assets/avatars/aphy.jpeg", - fallback: "/assets/avatars/z.jpeg", - aliases: ["aphy"], - glow: "#9dd3a6" - }, - "sensei chi": { - avatar: "/assets/avatars/sensei-chi.jpeg", - fallback: "/assets/avatars/z.jpeg", - aliases: ["sensei chi", "sensei"], - glow: "#9ccddd" - }, - "young z": { - avatar: "/assets/avatars/young-z.jpeg", - fallback: "/assets/avatars/z.jpeg", - aliases: ["young z", "young"], - glow: "#f0b85c" - }, - "future z": { - avatar: "/assets/avatars/future-z.jpeg", - fallback: "/assets/avatars/z.jpeg", - aliases: ["future z", "future"], - glow: "#c2a4ee" - }, - "z": { - avatar: "/assets/avatars/z.jpeg", - fallback: "/assets/avatars/z.jpeg", - aliases: ["z", "zaine"], - glow: "#ead68e" - } - }; - - // ----------------------------- - // EDITABLE CONTENT - // ----------------------------- - // Generated by the hidden narrative authoring page. - // Friendly source of truth: assets/content/hidden-details.json - - const familyLayers = []; - - const details = []; - - const poems = []; - - const greetings = []; - - const nightMessages = []; - - const lore = { - "quotes": [], - "conversations": [], - "journals": [], - "warnings": [], - "dreams": [], - "cassettes": [], - "fakeUsers": [], - "seasonal": {}, - "homepageTakeovers": [], - "roomLinks": [] -}; - - // Exact search text -> toast message. - const SEARCH_TOASTS = {}; - - // Exact search text -> hidden page route. - const SEARCH_ROUTES = {}; - - // Short typed phrases. Stored in sessionStorage as a rolling key chain. - const KEYBOARD_SECRETS = []; - - // Longer typed phrases and character names. - const LONG_KEYBOARD_SECRETS = []; - - - // ----------------------------- - // STATE HELPERS - // ----------------------------- - - function readState() { - let current = {}; - try { - current = JSON.parse(localStorage.getItem(STORAGE_KEY) || "{}"); - } catch (_) {} - if (!current.visits) { - try { - const oldState = JSON.parse(localStorage.getItem(OLD_STORAGE_KEY) || "{}"); - current = { ...oldState, migratedFromV1: true }; - localStorage.setItem(STORAGE_KEY, JSON.stringify(current)); - } catch (_) {} - } - return current; - } - - function writeState(next) { - try { - localStorage.setItem(STORAGE_KEY, JSON.stringify(next)); - } catch (_) {} - } - - function pick(list, salt) { - const seed = hash(`${path}|${now.toDateString()}|${salt || ""}`); - return list[seed % list.length]; - } - - function hash(value) { - let h = 2166136261; - for (let i = 0; i < value.length; i += 1) { - h ^= value.charCodeAt(i); - h = Math.imul(h, 16777619); - } - return Math.abs(h >>> 0); - } - - // ----------------------------- - // UI HELPERS - // ----------------------------- - - function characterForMessage(message) { - const text = String(message || "").toLowerCase(); - return Object.entries(CHARACTER_AVATARS).find(([, config]) => { - return (config.aliases || []).some((alias) => { - const escaped = alias.toLowerCase().replace(/[.*+?^${}()|[\]\\]/g, "\\$&"); - return new RegExp(`(^|[^a-z0-9-])${escaped}([^a-z0-9-]|$)`).test(text); - }); - })?.[0] || ""; - } - - function avatarMarkup(character) { - const config = CHARACTER_AVATARS[character]; - if (!config) return ""; - return ``; - } - - function hiddenMessageMarkup(message) { - const character = characterForMessage(message); - return character - ? `${avatarMarkup(character)}${escapeHtml(message)}` - : `${escapeHtml(message)}`; - } - - function setHiddenMessage(el, message) { - const character = characterForMessage(message); - el.classList.toggle("has-hidden-avatar", Boolean(character)); - if (character) { - el.dataset.hiddenCharacter = character; - el.innerHTML = hiddenMessageMarkup(message); - } else { - delete el.dataset.hiddenCharacter; - el.textContent = message; - } - } - - function toast(message, duration) { - let el = document.querySelector(".hidden-toast"); - if (!el) { - el = document.createElement("div"); - el.className = "hidden-toast"; - el.setAttribute("role", "status"); - document.body.appendChild(el); - } - setHiddenMessage(el, message); - el.classList.add("is-visible"); - window.clearTimeout(el._timer); - el._timer = window.setTimeout(() => el.classList.remove("is-visible"), duration || 5600); - } - - function redirectTo(route) { - window.location.href = route; - } - - function runSecretAction(secret) { - if (secret.route) redirectTo(secret.route); - if (secret.message) toast(secret.message); - if (secret.song) playTinySong(); - } - - function layerForSearch(value) { - if (value.includes("future")) return 4; - if (value.includes("sensei") || value.includes("aphy")) return 3; - return 2; - } - - function rememberVisit() { - const visits = (state.visits || 0) + 1; - const seen = Array.isArray(state.seen) ? state.seen : []; - const pathCounts = { ...(state.pathCounts || {}) }; - pathCounts[path] = (pathCounts[path] || 0) + 1; - const layerVisits = { ...(state.layerVisits || {}) }; - const next = { - ...state, - visits, - lastPath: path, - pathCounts, - layerVisits, - seen: Array.from(new Set([...seen, path])).slice(-100), - firstSeen: state.firstSeen || new Date().toISOString(), - lastSeen: new Date().toISOString() - }; - writeState(next); - return next; - } - - function awardLayer(layer, reason) { - const next = readState(); - next.layerVisits = { ...(next.layerVisits || {}) }; - next.layerVisits[layer] = (next.layerVisits[layer] || 0) + 1; - next.lastLayerReason = reason; - writeState(next); - } - - // ----------------------------- - // GLOBAL FEATURES - // ----------------------------- - - function addFooterNote(memory) { - const footer = document.querySelector("footer"); - if (!footer || !details.length) return; - const note = document.createElement("p"); - note.className = "hidden-footer-note"; - const base = pick(details, "footer"); - setHiddenMessage(note, memory.visits > 4 ? `${base} You have passed through ${memory.visits} times.` : base); - footer.appendChild(note); - } - - function addHomepageGreeting(memory) { - const target = document.querySelector("#db-greeting"); - if (!target || !greetings.length) return; - setHiddenMessage(target, pick(greetings, `greeting-${memory.visits}`)); - const extra = document.createElement("p"); - extra.className = "hidden-greeting"; - setHiddenMessage(extra, ""); - target.closest("div")?.appendChild(extra); - } - - function addWhispers() { - // Event: click one of the tiny "?" marks appended to long paragraphs. - const paragraphs = Array.from(document.querySelectorAll("main p, #content p, article p")).filter((p) => p.textContent.trim().length > 80); - paragraphs.slice(0, 5).forEach((p, index) => { - if ((hash(path + index) + index) % 3 !== 0) return; - const mark = document.createElement("span"); - mark.className = "hidden-whisper"; - mark.tabIndex = 0; - mark.textContent = " ?"; - const source = index % 2 ? poems : details; - if (!source.length) return; - mark.title = pick(source, `whisper-${index}`); - mark.addEventListener("click", () => { - awardLayer(index % 2 ? 2 : 1, "paragraph whisper"); - toast(mark.title); - }); - p.appendChild(mark); - }); - } - - function addCornerObject() { - // Event: click the small fixed button in the bottom-left corner. - const object = document.createElement("button"); - object.className = "hidden-corner-object"; - object.type = "button"; - object.title = "hidden interaction"; - object.textContent = state.visits % 2 ? "*" : "~"; - document.body.appendChild(object); - let clicks = 0; - object.addEventListener("click", () => { - clicks += 1; - awardLayer(clicks > 3 ? 3 : 1, "corner object"); - toast("Hidden interaction recorded."); - if (clicks === 7) window.location.href = "/play/left-behind.html"; - }); - } - - function addLogoSearchAndKeyboardSecrets(memory) { - // Events: - // - Click `.site-brand` repeatedly on the homepage. - // - Type exact words into `#search-input`. - // - Type phrases anywhere on the page. - const nav = document.querySelector(".site-brand"); - if (nav) { - let taps = Number(sessionStorage.getItem("zxh_logo_taps") || 0); - nav.addEventListener("click", (event) => { - if (path === "/" || path === "/index.html") { - event.preventDefault(); - taps += 1; - sessionStorage.setItem("zxh_logo_taps", String(taps)); - awardLayer(taps >= 5 ? 3 : 1, "logo taps"); - toast(taps >= 5 ? "Hidden route available: /play/dream-corridor.html" : "Hidden interaction recorded."); - if (taps >= 8) window.location.href = "/play/dream-corridor.html"; - } - }); - } - - const search = document.querySelector("#search-input"); - if (search) { - search.addEventListener("input", () => { - const value = search.value.trim().toLowerCase(); - if (SEARCH_TOASTS[value]) toast(SEARCH_TOASTS[value]); - if (SEARCH_ROUTES[value]) { - awardLayer(layerForSearch(value), `search ${value}`); - redirectTo(SEARCH_ROUTES[value]); - } - }); - } - - document.addEventListener("keydown", (event) => { - const key = event.key.toLowerCase(); - const chain = `${sessionStorage.getItem("zxh_key_chain") || ""}${key}`.slice(-18); - sessionStorage.setItem("zxh_key_chain", chain); - KEYBOARD_SECRETS - .filter((secret) => chain.endsWith(secret.phrase)) - .forEach(runSecretAction); - }); - - if (memory.seen?.length >= 6 && !state.travellerNoteShown) { - window.setTimeout(() => { - toast("Hidden path recorded."); - writeState({ ...readState(), travellerNoteShown: true }); - }, 1600); - } - } - - function addRareEvents() { - if (hour >= 22 || hour < 5) { - document.body.classList.add("hidden-late-night"); - if (nightMessages.length) window.setTimeout(() => toast(pick(nightMessages, "night"), 2200), 900); - } - const roll = Math.random(); - if (roll < 0.003) { - window.setTimeout(() => showDriftNote("", ""), 1800); - awardLayer(3, "rare sensei appearance"); - } else if (roll < 0.008) { - window.setTimeout(() => toast("Hidden warning."), 2400); - awardLayer(4, "future warning"); - } - } - - function showDriftNote(text, art) { - const panel = document.createElement("aside"); - panel.className = "hidden-drift-note"; - const character = characterForMessage(text); - panel.innerHTML = `
    ${hiddenMessageMarkup(text)}
    ${escapeHtml(art)}
    `; - panel.querySelector("button").addEventListener("click", () => panel.remove()); - document.body.appendChild(panel); - } - - function addSecretLinks() { - [ - ["/play/left-behind.html", "left behind"], - ["/play/dream-corridor.html", "dream corridor"], - ["/play/kitchen-light.html", "kitchen light"], - ...lore.roomLinks - ].forEach(([href, label], index) => { - const link = document.createElement("a"); - link.className = "hidden-secret-link"; - link.href = href; - link.textContent = label; - link.style.left = `${index + 1}px`; - document.body.appendChild(link); - }); - } - - function enhanceErrors() { - if (document.title.match(/404|not found/i) || document.body.textContent.match(/404|not found/i)) { - toast("Page not found."); - } - } - - function addContinuity(memory) { - const milestones = { - 64: "Hidden layer unlocked." - }; - if (milestones[memory.visits] && !state[`milestone_${memory.visits}`]) { - const layer = memory.visits >= 31 ? 4 : memory.visits >= 9 ? 3 : 2; - awardLayer(layer, `visit milestone ${memory.visits}`); - window.setTimeout(() => toast(milestones[memory.visits], 7000), 1200); - writeState({ ...readState(), [`milestone_${memory.visits}`]: true }); - } - - const count = memory.pathCounts?.[path] || 0; - if ([3, 7, 12].includes(count)) { - window.setTimeout(() => toast("Page revisit recorded.", 6400), 1700); - } - } - - function addSeasonAndDates(memory) { - const month = now.getMonth(); - const day = now.getDate(); - const season = month < 2 || month === 11 ? "winter" : month < 5 ? "spring" : month < 8 ? "summer" : "autumn"; - if (Math.random() < 0.18 && lore.seasonal[season]) window.setTimeout(() => toast(lore.seasonal[season], 5600), 2600); - const first = memory.firstSeen ? new Date(memory.firstSeen) : null; - if (first && memory.visits > 1 && first.getMonth() === month && first.getDate() === day) { - window.setTimeout(() => toast("Visitor anniversary recorded.", 7000), 1400); - } - } - - function addObjectConstellation() { - // Event: click the small keepsake buttons along the bottom rail. - const rail = document.createElement("div"); - rail.className = "hidden-object-rail"; - rail.setAttribute("aria-label", "Hidden objects"); - const objects = [ - ["ring", "Hidden object recorded."], - ["bot", "Hidden object recorded."], - ["tea", "Hidden object recorded."], - ["crayon", "Hidden object recorded."], - ["clock", "Hidden object recorded."] - ]; - objects.forEach(([name, message]) => { - const button = document.createElement("button"); - button.type = "button"; - button.className = `hidden-keepsake hidden-keepsake--${name}`; - button.title = name; - button.textContent = { ring: "o", bot: "#", tea: "u", crayon: "/", clock: ":" }[name]; - button.addEventListener("click", () => { - const next = readState(); - next.keepsakes = Array.from(new Set([...(next.keepsakes || []), name])); - writeState(next); - awardLayer(next.keepsakes.length >= 3 ? 3 : 2, `keepsake ${name}`); - toast(message); - if (next.keepsakes.length >= objects.length) { - window.setTimeout(() => toast("Hidden object set completed."), 1100); - } - }); - rail.appendChild(button); - }); - document.body.appendChild(rail); - } - - function addWeatherWindow(memory) { - // Event: click the small "window" button. This asks for browser geolocation. - if (memory.visits < 3 || !("geolocation" in navigator)) return; - const button = document.createElement("button"); - button.className = "hidden-weather-window"; - button.type = "button"; - button.title = "Check outside weather"; - button.textContent = "window"; - button.addEventListener("click", () => { - toast("Checking outside weather."); - navigator.geolocation.getCurrentPosition((pos) => { - const { latitude, longitude } = pos.coords; - fetch(`https://api.open-meteo.com/v1/forecast?latitude=${latitude.toFixed(3)}&longitude=${longitude.toFixed(3)}¤t=temperature_2m,precipitation&timezone=auto`) - .then((res) => res.json()) - .then((data) => { - const current = data.current || {}; - const rain = Number(current.precipitation || 0) > 0; - const temp = Math.round(Number(current.temperature_2m)); - toast(rain ? `Outside: rain, ${temp}C.` : `Outside: ${temp}C.`); - }) - .catch(() => toast("Weather check failed.")); - }, () => toast("No outside weather today.")); - }); - document.body.appendChild(button); - } - - function addOldWebLayer(memory) { - if (Math.random() < 0.08 || memory.visits > 10) { - const stamp = document.createElement("div"); - stamp.className = "hidden-oldweb-stamp"; - if (!lore.fakeUsers.length) return; - stamp.title = pick(lore.fakeUsers, "fake-user"); - stamp.textContent = "best viewed with patience"; - stamp.addEventListener("click", () => { - awardLayer(1, "old web stamp"); - toast(stamp.title); - }); - document.body.appendChild(stamp); - } - const comments = document.querySelector("#comments"); - if (comments && lore.fakeUsers.length && !comments.querySelector(".hidden-guestbook-line")) { - const line = document.createElement("p"); - line.className = "hidden-guestbook-line"; - setHiddenMessage(line, pick(lore.fakeUsers, "comment-lore")); - comments.appendChild(line); - } - } - - function addSourceRelics() { - const marker = document.createComment("hidden-details"); - document.documentElement.appendChild(marker); - document.querySelectorAll("img[alt=''], img:not([alt])").forEach((img, index) => { - if (index > 2) return; - img.alt = "Decorative image."; - }); - } - - function addLongKeyboardSecrets() { - // Event: type longer hidden phrases anywhere on the page. - document.addEventListener("keydown", (event) => { - const chain = `${sessionStorage.getItem("zxh_second_chain") || ""}${event.key.toLowerCase()}`.slice(-24); - sessionStorage.setItem("zxh_second_chain", chain); - LONG_KEYBOARD_SECRETS - .filter((secret) => chain.endsWith(secret.phrase)) - .forEach(runSecretAction); - }); - } - - function addPatienceRewards(memory) { - // Event: no movement, key presses, scrolling, or clicking for 90 seconds. - if (memory.visits < 2) return; - let idleTimer = null; - const startIdle = () => { - window.clearTimeout(idleTimer); - idleTimer = window.setTimeout(() => { - awardLayer(5, "patience"); - toast("Idle moment recorded.", 7600); - const next = readState(); - next.patientMoments = (next.patientMoments || 0) + 1; - writeState(next); - }, 90000); - }; - ["mousemove", "keydown", "scroll", "click"].forEach((name) => document.addEventListener(name, startIdle, { passive: true })); - startIdle(); - } - - function addRareSecondLayer() { - const roll = Math.random(); - if ((path === "/" || path === "/index.html") && roll < 0.006) { - document.body.classList.add("hidden-home-takeover"); - if (lore.homepageTakeovers.length) window.setTimeout(() => showDriftNote(pick(lore.homepageTakeovers, "takeover"), ""), 600); - } else if (roll < 0.002) { - window.setTimeout(() => showDriftNote("", ""), 1500); - } else if (roll < 0.006) { - if (lore.dreams.length) window.setTimeout(() => toast(pick(lore.dreams, "rare-dream"), 7600), 2000); - } else if (roll < 0.014) { - if (lore.warnings.length) window.setTimeout(() => toast(pick(lore.warnings, "rare-warning"), 6800), 2300); - } - } - - function addFamilyLayerIndex(memory) { - if (!path.includes("/play/family-layer-index")) return; - const target = document.querySelector("[data-family-layer-index]"); - if (!target) return; - const visits = readState().layerVisits || {}; - target.innerHTML = familyLayers.map((line, layer) => { - const count = visits[layer] || 0; - const character = characterForMessage(line); - return `
  • ${hiddenMessageMarkup(line)}
    local encounters: ${count}
  • `; - }).join(""); - } - - function addPageSpecificSecrets() { - // Events only used by specific `/play/...` pages. - if (path.includes("/play/cassette-log")) { - document.querySelectorAll("[data-cassette]").forEach((button, index) => { - button.addEventListener("click", () => { - awardLayer(index >= 2 ? 4 : 2, "voice note"); - if (lore.cassettes.length) toast(lore.cassettes[index % lore.cassettes.length], 7600); - playTinySong(); - }); - }); - } - if (path.includes("/play/patience-game")) { - const target = document.querySelector("[data-patience-target]"); - const count = document.querySelector("[data-patience-count]"); - if (target && count) { - let seconds = 0; - setInterval(() => { - seconds += 1; - count.textContent = String(seconds); - if ([30, 90, 180].includes(seconds)) { - setHiddenMessage(target, "Patience milestone recorded."); - } - }, 1000); - } - } - if (path.includes("/play/terminal-cupboard")) { - const input = document.querySelector("[data-cupboard-input]"); - const log = document.querySelector("[data-cupboard-log]"); - const commands = { - help: "commands: layer, exit", - layer: familyLayers.join("\n"), - exit: "Closed." - }; - input?.addEventListener("keydown", (event) => { - if (event.key !== "Enter") return; - const value = input.value.trim().toLowerCase(); - const line = document.createElement("p"); - setHiddenMessage(line, `> ${value}\n${commands[value] || "Unknown command."}`); - log.appendChild(line); - input.value = ""; - }); - } - } - - function addInvisibleHoverSecrets() { - document.querySelectorAll("h1, h2").forEach((heading, index) => { - if (index > 5) return; - heading.classList.add("hidden-hover-memory"); - const source = [...lore.quotes, ...lore.journals, ...poems]; - if (!source.length) return; - heading.dataset.hiddenMemory = pick(source, `heading-${index}`); - }); - } - - function playTinySong() { - try { - const AudioContext = window.AudioContext || window.webkitAudioContext; - if (!AudioContext) return; - const ctx = new AudioContext(); - const notes = [392, 494, 440, 330, 392]; - notes.forEach((freq, index) => { - const osc = ctx.createOscillator(); - const gain = ctx.createGain(); - osc.frequency.value = freq; - osc.type = "sine"; - gain.gain.setValueAtTime(0.0001, ctx.currentTime + index * 0.18); - gain.gain.exponentialRampToValueAtTime(0.05, ctx.currentTime + index * 0.18 + 0.03); - gain.gain.exponentialRampToValueAtTime(0.0001, ctx.currentTime + index * 0.18 + 0.16); - osc.connect(gain); - gain.connect(ctx.destination); - osc.start(ctx.currentTime + index * 0.18); - osc.stop(ctx.currentTime + index * 0.18 + 0.18); - }); - } catch (_) {} - } - - function escapeHtml(value) { - return String(value).replace(/[&<>"']/g, (char) => ({ - "&": "&", - "<": "<", - ">": ">", - '"': """, - "'": "'" - }[char])); - } - - // Features run in this order on every page after the DOM is ready. - // Each function receives the current `memory` object. - const FEATURES = [ - addFooterNote, - addHomepageGreeting, - addWhispers, - addCornerObject, - addLogoSearchAndKeyboardSecrets, - addRareEvents, - addSecretLinks, - enhanceErrors, - addContinuity, - addSeasonAndDates, - addObjectConstellation, - addWeatherWindow, - addOldWebLayer, - addSourceRelics, - addLongKeyboardSecrets, - addPatienceRewards, - addRareSecondLayer, - addFamilyLayerIndex, - addPageSpecificSecrets, - addInvisibleHoverSecrets - ]; - - document.addEventListener("DOMContentLoaded", () => { - const memory = rememberVisit(); - FEATURES.forEach((addFeature) => addFeature(memory)); - }); + var script = document.createElement("script"); + script.src = "/assets/scripts/features/hidden-details.js"; + script.defer = true; + document.head.appendChild(script); }()); diff --git a/assets/scripts/lunr.js b/assets/scripts/lunr.js index 6aa370f..4e80bce 100755 --- a/assets/scripts/lunr.js +++ b/assets/scripts/lunr.js @@ -1,3475 +1,7 @@ -/** - * lunr - http://lunrjs.com - A bit like Solr, but much smaller and not as bright - 2.3.9 - * Copyright (C) 2020 Oliver Nightingale - * @license MIT - */ - -;(function(){ - -/** - * A convenience function for configuring and constructing - * a new lunr Index. - * - * A lunr.Builder instance is created and the pipeline setup - * with a trimmer, stop word filter and stemmer. - * - * This builder object is yielded to the configuration function - * that is passed as a parameter, allowing the list of fields - * and other builder parameters to be customised. - * - * All documents _must_ be added within the passed config function. - * - * @example - * var idx = lunr(function () { - * this.field('title') - * this.field('body') - * this.ref('id') - * - * documents.forEach(function (doc) { - * this.add(doc) - * }, this) - * }) - * - * @see {@link lunr.Builder} - * @see {@link lunr.Pipeline} - * @see {@link lunr.trimmer} - * @see {@link lunr.stopWordFilter} - * @see {@link lunr.stemmer} - * @namespace {function} lunr - */ -var lunr = function (config) { - var builder = new lunr.Builder - - builder.pipeline.add( - lunr.trimmer, - lunr.stopWordFilter, - lunr.stemmer - ) - - builder.searchPipeline.add( - lunr.stemmer - ) - - config.call(builder, builder) - return builder.build() -} - -lunr.version = "2.3.9" -/*! - * lunr.utils - * Copyright (C) 2020 Oliver Nightingale - */ - -/** - * A namespace containing utils for the rest of the lunr library - * @namespace lunr.utils - */ -lunr.utils = {} - -/** - * Print a warning message to the console. - * - * @param {String} message The message to be printed. - * @memberOf lunr.utils - * @function - */ -lunr.utils.warn = (function (global) { - /* eslint-disable no-console */ - return function (message) { - if (global.console && console.warn) { - console.warn(message) - } - } - /* eslint-enable no-console */ -})(this) - -/** - * Convert an object to a string. - * - * In the case of `null` and `undefined` the function returns - * the empty string, in all other cases the result of calling - * `toString` on the passed object is returned. - * - * @param {Any} obj The object to convert to a string. - * @return {String} string representation of the passed object. - * @memberOf lunr.utils - */ -lunr.utils.asString = function (obj) { - if (obj === void 0 || obj === null) { - return "" - } else { - return obj.toString() - } -} - -/** - * Clones an object. - * - * Will create a copy of an existing object such that any mutations - * on the copy cannot affect the original. - * - * Only shallow objects are supported, passing a nested object to this - * function will cause a TypeError. - * - * Objects with primitives, and arrays of primitives are supported. - * - * @param {Object} obj The object to clone. - * @return {Object} a clone of the passed object. - * @throws {TypeError} when a nested object is passed. - * @memberOf Utils - */ -lunr.utils.clone = function (obj) { - if (obj === null || obj === undefined) { - return obj - } - - var clone = Object.create(null), - keys = Object.keys(obj) - - for (var i = 0; i < keys.length; i++) { - var key = keys[i], - val = obj[key] - - if (Array.isArray(val)) { - clone[key] = val.slice() - continue - } - - if (typeof val === 'string' || - typeof val === 'number' || - typeof val === 'boolean') { - clone[key] = val - continue - } - - throw new TypeError("clone is not deep and does not support nested objects") - } - - return clone -} -lunr.FieldRef = function (docRef, fieldName, stringValue) { - this.docRef = docRef - this.fieldName = fieldName - this._stringValue = stringValue -} - -lunr.FieldRef.joiner = "/" - -lunr.FieldRef.fromString = function (s) { - var n = s.indexOf(lunr.FieldRef.joiner) - - if (n === -1) { - throw "malformed field ref string" - } - - var fieldRef = s.slice(0, n), - docRef = s.slice(n + 1) - - return new lunr.FieldRef (docRef, fieldRef, s) -} - -lunr.FieldRef.prototype.toString = function () { - if (this._stringValue == undefined) { - this._stringValue = this.fieldName + lunr.FieldRef.joiner + this.docRef - } - - return this._stringValue -} -/*! - * lunr.Set - * Copyright (C) 2020 Oliver Nightingale - */ - -/** - * A lunr set. - * - * @constructor - */ -lunr.Set = function (elements) { - this.elements = Object.create(null) - - if (elements) { - this.length = elements.length - - for (var i = 0; i < this.length; i++) { - this.elements[elements[i]] = true - } - } else { - this.length = 0 - } -} - -/** - * A complete set that contains all elements. - * - * @static - * @readonly - * @type {lunr.Set} - */ -lunr.Set.complete = { - intersect: function (other) { - return other - }, - - union: function () { - return this - }, - - contains: function () { - return true - } -} - -/** - * An empty set that contains no elements. - * - * @static - * @readonly - * @type {lunr.Set} - */ -lunr.Set.empty = { - intersect: function () { - return this - }, - - union: function (other) { - return other - }, - - contains: function () { - return false - } -} - -/** - * Returns true if this set contains the specified object. - * - * @param {object} object - Object whose presence in this set is to be tested. - * @returns {boolean} - True if this set contains the specified object. - */ -lunr.Set.prototype.contains = function (object) { - return !!this.elements[object] -} - -/** - * Returns a new set containing only the elements that are present in both - * this set and the specified set. - * - * @param {lunr.Set} other - set to intersect with this set. - * @returns {lunr.Set} a new set that is the intersection of this and the specified set. - */ - -lunr.Set.prototype.intersect = function (other) { - var a, b, elements, intersection = [] - - if (other === lunr.Set.complete) { - return this - } - - if (other === lunr.Set.empty) { - return other - } - - if (this.length < other.length) { - a = this - b = other - } else { - a = other - b = this - } - - elements = Object.keys(a.elements) - - for (var i = 0; i < elements.length; i++) { - var element = elements[i] - if (element in b.elements) { - intersection.push(element) - } - } - - return new lunr.Set (intersection) -} - -/** - * Returns a new set combining the elements of this and the specified set. - * - * @param {lunr.Set} other - set to union with this set. - * @return {lunr.Set} a new set that is the union of this and the specified set. - */ - -lunr.Set.prototype.union = function (other) { - if (other === lunr.Set.complete) { - return lunr.Set.complete - } - - if (other === lunr.Set.empty) { - return this - } - - return new lunr.Set(Object.keys(this.elements).concat(Object.keys(other.elements))) -} -/** - * A function to calculate the inverse document frequency for - * a posting. This is shared between the builder and the index - * - * @private - * @param {object} posting - The posting for a given term - * @param {number} documentCount - The total number of documents. - */ -lunr.idf = function (posting, documentCount) { - var documentsWithTerm = 0 - - for (var fieldName in posting) { - if (fieldName == '_index') continue // Ignore the term index, its not a field - documentsWithTerm += Object.keys(posting[fieldName]).length - } - - var x = (documentCount - documentsWithTerm + 0.5) / (documentsWithTerm + 0.5) - - return Math.log(1 + Math.abs(x)) -} - -/** - * A token wraps a string representation of a token - * as it is passed through the text processing pipeline. - * - * @constructor - * @param {string} [str=''] - The string token being wrapped. - * @param {object} [metadata={}] - Metadata associated with this token. - */ -lunr.Token = function (str, metadata) { - this.str = str || "" - this.metadata = metadata || {} -} - -/** - * Returns the token string that is being wrapped by this object. - * - * @returns {string} - */ -lunr.Token.prototype.toString = function () { - return this.str -} - -/** - * A token update function is used when updating or optionally - * when cloning a token. - * - * @callback lunr.Token~updateFunction - * @param {string} str - The string representation of the token. - * @param {Object} metadata - All metadata associated with this token. - */ - -/** - * Applies the given function to the wrapped string token. - * - * @example - * token.update(function (str, metadata) { - * return str.toUpperCase() - * }) - * - * @param {lunr.Token~updateFunction} fn - A function to apply to the token string. - * @returns {lunr.Token} - */ -lunr.Token.prototype.update = function (fn) { - this.str = fn(this.str, this.metadata) - return this -} - -/** - * Creates a clone of this token. Optionally a function can be - * applied to the cloned token. - * - * @param {lunr.Token~updateFunction} [fn] - An optional function to apply to the cloned token. - * @returns {lunr.Token} - */ -lunr.Token.prototype.clone = function (fn) { - fn = fn || function (s) { return s } - return new lunr.Token (fn(this.str, this.metadata), this.metadata) -} -/*! - * lunr.tokenizer - * Copyright (C) 2020 Oliver Nightingale - */ - -/** - * A function for splitting a string into tokens ready to be inserted into - * the search index. Uses `lunr.tokenizer.separator` to split strings, change - * the value of this property to change how strings are split into tokens. - * - * This tokenizer will convert its parameter to a string by calling `toString` and - * then will split this string on the character in `lunr.tokenizer.separator`. - * Arrays will have their elements converted to strings and wrapped in a lunr.Token. - * - * Optional metadata can be passed to the tokenizer, this metadata will be cloned and - * added as metadata to every token that is created from the object to be tokenized. - * - * @static - * @param {?(string|object|object[])} obj - The object to convert into tokens - * @param {?object} metadata - Optional metadata to associate with every token - * @returns {lunr.Token[]} - * @see {@link lunr.Pipeline} - */ -lunr.tokenizer = function (obj, metadata) { - if (obj == null || obj == undefined) { - return [] - } - - if (Array.isArray(obj)) { - return obj.map(function (t) { - return new lunr.Token( - lunr.utils.asString(t).toLowerCase(), - lunr.utils.clone(metadata) - ) - }) - } - - var str = obj.toString().toLowerCase(), - len = str.length, - tokens = [] - - for (var sliceEnd = 0, sliceStart = 0; sliceEnd <= len; sliceEnd++) { - var char = str.charAt(sliceEnd), - sliceLength = sliceEnd - sliceStart - - if ((char.match(lunr.tokenizer.separator) || sliceEnd == len)) { - - if (sliceLength > 0) { - var tokenMetadata = lunr.utils.clone(metadata) || {} - tokenMetadata["position"] = [sliceStart, sliceLength] - tokenMetadata["index"] = tokens.length - - tokens.push( - new lunr.Token ( - str.slice(sliceStart, sliceEnd), - tokenMetadata - ) - ) - } - - sliceStart = sliceEnd + 1 - } - - } - - return tokens -} - -/** - * The separator used to split a string into tokens. Override this property to change the behaviour of - * `lunr.tokenizer` behaviour when tokenizing strings. By default this splits on whitespace and hyphens. - * - * @static - * @see lunr.tokenizer - */ -lunr.tokenizer.separator = /[\s\-]+/ -/*! - * lunr.Pipeline - * Copyright (C) 2020 Oliver Nightingale - */ - -/** - * lunr.Pipelines maintain an ordered list of functions to be applied to all - * tokens in documents entering the search index and queries being ran against - * the index. - * - * An instance of lunr.Index created with the lunr shortcut will contain a - * pipeline with a stop word filter and an English language stemmer. Extra - * functions can be added before or after either of these functions or these - * default functions can be removed. - * - * When run the pipeline will call each function in turn, passing a token, the - * index of that token in the original list of all tokens and finally a list of - * all the original tokens. - * - * The output of functions in the pipeline will be passed to the next function - * in the pipeline. To exclude a token from entering the index the function - * should return undefined, the rest of the pipeline will not be called with - * this token. - * - * For serialisation of pipelines to work, all functions used in an instance of - * a pipeline should be registered with lunr.Pipeline. Registered functions can - * then be loaded. If trying to load a serialised pipeline that uses functions - * that are not registered an error will be thrown. - * - * If not planning on serialising the pipeline then registering pipeline functions - * is not necessary. - * - * @constructor - */ -lunr.Pipeline = function () { - this._stack = [] -} - -lunr.Pipeline.registeredFunctions = Object.create(null) - -/** - * A pipeline function maps lunr.Token to lunr.Token. A lunr.Token contains the token - * string as well as all known metadata. A pipeline function can mutate the token string - * or mutate (or add) metadata for a given token. - * - * A pipeline function can indicate that the passed token should be discarded by returning - * null, undefined or an empty string. This token will not be passed to any downstream pipeline - * functions and will not be added to the index. - * - * Multiple tokens can be returned by returning an array of tokens. Each token will be passed - * to any downstream pipeline functions and all will returned tokens will be added to the index. - * - * Any number of pipeline functions may be chained together using a lunr.Pipeline. - * - * @interface lunr.PipelineFunction - * @param {lunr.Token} token - A token from the document being processed. - * @param {number} i - The index of this token in the complete list of tokens for this document/field. - * @param {lunr.Token[]} tokens - All tokens for this document/field. - * @returns {(?lunr.Token|lunr.Token[])} - */ - -/** - * Register a function with the pipeline. - * - * Functions that are used in the pipeline should be registered if the pipeline - * needs to be serialised, or a serialised pipeline needs to be loaded. - * - * Registering a function does not add it to a pipeline, functions must still be - * added to instances of the pipeline for them to be used when running a pipeline. - * - * @param {lunr.PipelineFunction} fn - The function to check for. - * @param {String} label - The label to register this function with - */ -lunr.Pipeline.registerFunction = function (fn, label) { - if (label in this.registeredFunctions) { - lunr.utils.warn('Overwriting existing registered function: ' + label) - } - - fn.label = label - lunr.Pipeline.registeredFunctions[fn.label] = fn -} - -/** - * Warns if the function is not registered as a Pipeline function. - * - * @param {lunr.PipelineFunction} fn - The function to check for. - * @private - */ -lunr.Pipeline.warnIfFunctionNotRegistered = function (fn) { - var isRegistered = fn.label && (fn.label in this.registeredFunctions) - - if (!isRegistered) { - lunr.utils.warn('Function is not registered with pipeline. This may cause problems when serialising the index.\n', fn) - } -} - -/** - * Loads a previously serialised pipeline. - * - * All functions to be loaded must already be registered with lunr.Pipeline. - * If any function from the serialised data has not been registered then an - * error will be thrown. - * - * @param {Object} serialised - The serialised pipeline to load. - * @returns {lunr.Pipeline} - */ -lunr.Pipeline.load = function (serialised) { - var pipeline = new lunr.Pipeline - - serialised.forEach(function (fnName) { - var fn = lunr.Pipeline.registeredFunctions[fnName] - - if (fn) { - pipeline.add(fn) - } else { - throw new Error('Cannot load unregistered function: ' + fnName) - } - }) - - return pipeline -} - -/** - * Adds new functions to the end of the pipeline. - * - * Logs a warning if the function has not been registered. - * - * @param {lunr.PipelineFunction[]} functions - Any number of functions to add to the pipeline. - */ -lunr.Pipeline.prototype.add = function () { - var fns = Array.prototype.slice.call(arguments) - - fns.forEach(function (fn) { - lunr.Pipeline.warnIfFunctionNotRegistered(fn) - this._stack.push(fn) - }, this) -} - -/** - * Adds a single function after a function that already exists in the - * pipeline. - * - * Logs a warning if the function has not been registered. - * - * @param {lunr.PipelineFunction} existingFn - A function that already exists in the pipeline. - * @param {lunr.PipelineFunction} newFn - The new function to add to the pipeline. - */ -lunr.Pipeline.prototype.after = function (existingFn, newFn) { - lunr.Pipeline.warnIfFunctionNotRegistered(newFn) - - var pos = this._stack.indexOf(existingFn) - if (pos == -1) { - throw new Error('Cannot find existingFn') - } - - pos = pos + 1 - this._stack.splice(pos, 0, newFn) -} - -/** - * Adds a single function before a function that already exists in the - * pipeline. - * - * Logs a warning if the function has not been registered. - * - * @param {lunr.PipelineFunction} existingFn - A function that already exists in the pipeline. - * @param {lunr.PipelineFunction} newFn - The new function to add to the pipeline. - */ -lunr.Pipeline.prototype.before = function (existingFn, newFn) { - lunr.Pipeline.warnIfFunctionNotRegistered(newFn) - - var pos = this._stack.indexOf(existingFn) - if (pos == -1) { - throw new Error('Cannot find existingFn') - } - - this._stack.splice(pos, 0, newFn) -} - -/** - * Removes a function from the pipeline. - * - * @param {lunr.PipelineFunction} fn The function to remove from the pipeline. - */ -lunr.Pipeline.prototype.remove = function (fn) { - var pos = this._stack.indexOf(fn) - if (pos == -1) { - return - } - - this._stack.splice(pos, 1) -} - -/** - * Runs the current list of functions that make up the pipeline against the - * passed tokens. - * - * @param {Array} tokens The tokens to run through the pipeline. - * @returns {Array} - */ -lunr.Pipeline.prototype.run = function (tokens) { - var stackLength = this._stack.length - - for (var i = 0; i < stackLength; i++) { - var fn = this._stack[i] - var memo = [] - - for (var j = 0; j < tokens.length; j++) { - var result = fn(tokens[j], j, tokens) - - if (result === null || result === void 0 || result === '') continue - - if (Array.isArray(result)) { - for (var k = 0; k < result.length; k++) { - memo.push(result[k]) - } - } else { - memo.push(result) - } - } - - tokens = memo - } - - return tokens -} - -/** - * Convenience method for passing a string through a pipeline and getting - * strings out. This method takes care of wrapping the passed string in a - * token and mapping the resulting tokens back to strings. - * - * @param {string} str - The string to pass through the pipeline. - * @param {?object} metadata - Optional metadata to associate with the token - * passed to the pipeline. - * @returns {string[]} - */ -lunr.Pipeline.prototype.runString = function (str, metadata) { - var token = new lunr.Token (str, metadata) - - return this.run([token]).map(function (t) { - return t.toString() - }) -} - -/** - * Resets the pipeline by removing any existing processors. - * - */ -lunr.Pipeline.prototype.reset = function () { - this._stack = [] -} - -/** - * Returns a representation of the pipeline ready for serialisation. - * - * Logs a warning if the function has not been registered. - * - * @returns {Array} - */ -lunr.Pipeline.prototype.toJSON = function () { - return this._stack.map(function (fn) { - lunr.Pipeline.warnIfFunctionNotRegistered(fn) - - return fn.label - }) -} -/*! - * lunr.Vector - * Copyright (C) 2020 Oliver Nightingale - */ - -/** - * A vector is used to construct the vector space of documents and queries. These - * vectors support operations to determine the similarity between two documents or - * a document and a query. - * - * Normally no parameters are required for initializing a vector, but in the case of - * loading a previously dumped vector the raw elements can be provided to the constructor. - * - * For performance reasons vectors are implemented with a flat array, where an elements - * index is immediately followed by its value. E.g. [index, value, index, value]. This - * allows the underlying array to be as sparse as possible and still offer decent - * performance when being used for vector calculations. - * - * @constructor - * @param {Number[]} [elements] - The flat list of element index and element value pairs. - */ -lunr.Vector = function (elements) { - this._magnitude = 0 - this.elements = elements || [] -} - - -/** - * Calculates the position within the vector to insert a given index. - * - * This is used internally by insert and upsert. If there are duplicate indexes then - * the position is returned as if the value for that index were to be updated, but it - * is the callers responsibility to check whether there is a duplicate at that index - * - * @param {Number} insertIdx - The index at which the element should be inserted. - * @returns {Number} - */ -lunr.Vector.prototype.positionForIndex = function (index) { - // For an empty vector the tuple can be inserted at the beginning - if (this.elements.length == 0) { - return 0 - } - - var start = 0, - end = this.elements.length / 2, - sliceLength = end - start, - pivotPoint = Math.floor(sliceLength / 2), - pivotIndex = this.elements[pivotPoint * 2] - - while (sliceLength > 1) { - if (pivotIndex < index) { - start = pivotPoint - } - - if (pivotIndex > index) { - end = pivotPoint - } - - if (pivotIndex == index) { - break - } - - sliceLength = end - start - pivotPoint = start + Math.floor(sliceLength / 2) - pivotIndex = this.elements[pivotPoint * 2] - } - - if (pivotIndex == index) { - return pivotPoint * 2 - } - - if (pivotIndex > index) { - return pivotPoint * 2 - } - - if (pivotIndex < index) { - return (pivotPoint + 1) * 2 - } -} - -/** - * Inserts an element at an index within the vector. - * - * Does not allow duplicates, will throw an error if there is already an entry - * for this index. - * - * @param {Number} insertIdx - The index at which the element should be inserted. - * @param {Number} val - The value to be inserted into the vector. - */ -lunr.Vector.prototype.insert = function (insertIdx, val) { - this.upsert(insertIdx, val, function () { - throw "duplicate index" - }) -} - -/** - * Inserts or updates an existing index within the vector. - * - * @param {Number} insertIdx - The index at which the element should be inserted. - * @param {Number} val - The value to be inserted into the vector. - * @param {function} fn - A function that is called for updates, the existing value and the - * requested value are passed as arguments - */ -lunr.Vector.prototype.upsert = function (insertIdx, val, fn) { - this._magnitude = 0 - var position = this.positionForIndex(insertIdx) - - if (this.elements[position] == insertIdx) { - this.elements[position + 1] = fn(this.elements[position + 1], val) - } else { - this.elements.splice(position, 0, insertIdx, val) - } -} - -/** - * Calculates the magnitude of this vector. - * - * @returns {Number} - */ -lunr.Vector.prototype.magnitude = function () { - if (this._magnitude) return this._magnitude - - var sumOfSquares = 0, - elementsLength = this.elements.length - - for (var i = 1; i < elementsLength; i += 2) { - var val = this.elements[i] - sumOfSquares += val * val - } - - return this._magnitude = Math.sqrt(sumOfSquares) -} - -/** - * Calculates the dot product of this vector and another vector. - * - * @param {lunr.Vector} otherVector - The vector to compute the dot product with. - * @returns {Number} - */ -lunr.Vector.prototype.dot = function (otherVector) { - var dotProduct = 0, - a = this.elements, b = otherVector.elements, - aLen = a.length, bLen = b.length, - aVal = 0, bVal = 0, - i = 0, j = 0 - - while (i < aLen && j < bLen) { - aVal = a[i], bVal = b[j] - if (aVal < bVal) { - i += 2 - } else if (aVal > bVal) { - j += 2 - } else if (aVal == bVal) { - dotProduct += a[i + 1] * b[j + 1] - i += 2 - j += 2 - } - } - - return dotProduct -} - -/** - * Calculates the similarity between this vector and another vector. - * - * @param {lunr.Vector} otherVector - The other vector to calculate the - * similarity with. - * @returns {Number} - */ -lunr.Vector.prototype.similarity = function (otherVector) { - return this.dot(otherVector) / this.magnitude() || 0 -} - -/** - * Converts the vector to an array of the elements within the vector. - * - * @returns {Number[]} - */ -lunr.Vector.prototype.toArray = function () { - var output = new Array (this.elements.length / 2) - - for (var i = 1, j = 0; i < this.elements.length; i += 2, j++) { - output[j] = this.elements[i] - } - - return output -} - -/** - * A JSON serializable representation of the vector. - * - * @returns {Number[]} - */ -lunr.Vector.prototype.toJSON = function () { - return this.elements -} -/* eslint-disable */ -/*! - * lunr.stemmer - * Copyright (C) 2020 Oliver Nightingale - * Includes code from - http://tartarus.org/~martin/PorterStemmer/js.txt - */ - -/** - * lunr.stemmer is an english language stemmer, this is a JavaScript - * implementation of the PorterStemmer taken from http://tartarus.org/~martin - * - * @static - * @implements {lunr.PipelineFunction} - * @param {lunr.Token} token - The string to stem - * @returns {lunr.Token} - * @see {@link lunr.Pipeline} - * @function - */ -lunr.stemmer = (function(){ - var step2list = { - "ational" : "ate", - "tional" : "tion", - "enci" : "ence", - "anci" : "ance", - "izer" : "ize", - "bli" : "ble", - "alli" : "al", - "entli" : "ent", - "eli" : "e", - "ousli" : "ous", - "ization" : "ize", - "ation" : "ate", - "ator" : "ate", - "alism" : "al", - "iveness" : "ive", - "fulness" : "ful", - "ousness" : "ous", - "aliti" : "al", - "iviti" : "ive", - "biliti" : "ble", - "logi" : "log" - }, - - step3list = { - "icate" : "ic", - "ative" : "", - "alize" : "al", - "iciti" : "ic", - "ical" : "ic", - "ful" : "", - "ness" : "" - }, - - c = "[^aeiou]", // consonant - v = "[aeiouy]", // vowel - C = c + "[^aeiouy]*", // consonant sequence - V = v + "[aeiou]*", // vowel sequence - - mgr0 = "^(" + C + ")?" + V + C, // [C]VC... is m>0 - meq1 = "^(" + C + ")?" + V + C + "(" + V + ")?$", // [C]VC[V] is m=1 - mgr1 = "^(" + C + ")?" + V + C + V + C, // [C]VCVC... is m>1 - s_v = "^(" + C + ")?" + v; // vowel in stem - - var re_mgr0 = new RegExp(mgr0); - var re_mgr1 = new RegExp(mgr1); - var re_meq1 = new RegExp(meq1); - var re_s_v = new RegExp(s_v); - - var re_1a = /^(.+?)(ss|i)es$/; - var re2_1a = /^(.+?)([^s])s$/; - var re_1b = /^(.+?)eed$/; - var re2_1b = /^(.+?)(ed|ing)$/; - var re_1b_2 = /.$/; - var re2_1b_2 = /(at|bl|iz)$/; - var re3_1b_2 = new RegExp("([^aeiouylsz])\\1$"); - var re4_1b_2 = new RegExp("^" + C + v + "[^aeiouwxy]$"); - - var re_1c = /^(.+?[^aeiou])y$/; - var re_2 = /^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/; - - var re_3 = /^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/; - - var re_4 = /^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/; - var re2_4 = /^(.+?)(s|t)(ion)$/; - - var re_5 = /^(.+?)e$/; - var re_5_1 = /ll$/; - var re3_5 = new RegExp("^" + C + v + "[^aeiouwxy]$"); - - var porterStemmer = function porterStemmer(w) { - var stem, - suffix, - firstch, - re, - re2, - re3, - re4; - - if (w.length < 3) { return w; } - - firstch = w.substr(0,1); - if (firstch == "y") { - w = firstch.toUpperCase() + w.substr(1); - } - - // Step 1a - re = re_1a - re2 = re2_1a; - - if (re.test(w)) { w = w.replace(re,"$1$2"); } - else if (re2.test(w)) { w = w.replace(re2,"$1$2"); } - - // Step 1b - re = re_1b; - re2 = re2_1b; - if (re.test(w)) { - var fp = re.exec(w); - re = re_mgr0; - if (re.test(fp[1])) { - re = re_1b_2; - w = w.replace(re,""); - } - } else if (re2.test(w)) { - var fp = re2.exec(w); - stem = fp[1]; - re2 = re_s_v; - if (re2.test(stem)) { - w = stem; - re2 = re2_1b_2; - re3 = re3_1b_2; - re4 = re4_1b_2; - if (re2.test(w)) { w = w + "e"; } - else if (re3.test(w)) { re = re_1b_2; w = w.replace(re,""); } - else if (re4.test(w)) { w = w + "e"; } - } - } - - // Step 1c - replace suffix y or Y by i if preceded by a non-vowel which is not the first letter of the word (so cry -> cri, by -> by, say -> say) - re = re_1c; - if (re.test(w)) { - var fp = re.exec(w); - stem = fp[1]; - w = stem + "i"; - } - - // Step 2 - re = re_2; - if (re.test(w)) { - var fp = re.exec(w); - stem = fp[1]; - suffix = fp[2]; - re = re_mgr0; - if (re.test(stem)) { - w = stem + step2list[suffix]; - } - } - - // Step 3 - re = re_3; - if (re.test(w)) { - var fp = re.exec(w); - stem = fp[1]; - suffix = fp[2]; - re = re_mgr0; - if (re.test(stem)) { - w = stem + step3list[suffix]; - } - } - - // Step 4 - re = re_4; - re2 = re2_4; - if (re.test(w)) { - var fp = re.exec(w); - stem = fp[1]; - re = re_mgr1; - if (re.test(stem)) { - w = stem; - } - } else if (re2.test(w)) { - var fp = re2.exec(w); - stem = fp[1] + fp[2]; - re2 = re_mgr1; - if (re2.test(stem)) { - w = stem; - } - } - - // Step 5 - re = re_5; - if (re.test(w)) { - var fp = re.exec(w); - stem = fp[1]; - re = re_mgr1; - re2 = re_meq1; - re3 = re3_5; - if (re.test(stem) || (re2.test(stem) && !(re3.test(stem)))) { - w = stem; - } - } - - re = re_5_1; - re2 = re_mgr1; - if (re.test(w) && re2.test(w)) { - re = re_1b_2; - w = w.replace(re,""); - } - - // and turn initial Y back to y - - if (firstch == "y") { - w = firstch.toLowerCase() + w.substr(1); - } - - return w; - }; - - return function (token) { - return token.update(porterStemmer); - } -})(); - -lunr.Pipeline.registerFunction(lunr.stemmer, 'stemmer') -/*! - * lunr.stopWordFilter - * Copyright (C) 2020 Oliver Nightingale - */ - -/** - * lunr.generateStopWordFilter builds a stopWordFilter function from the provided - * list of stop words. - * - * The built in lunr.stopWordFilter is built using this generator and can be used - * to generate custom stopWordFilters for applications or non English languages. - * - * @function - * @param {Array} token The token to pass through the filter - * @returns {lunr.PipelineFunction} - * @see lunr.Pipeline - * @see lunr.stopWordFilter - */ -lunr.generateStopWordFilter = function (stopWords) { - var words = stopWords.reduce(function (memo, stopWord) { - memo[stopWord] = stopWord - return memo - }, {}) - - return function (token) { - if (token && words[token.toString()] !== token.toString()) return token - } -} - -/** - * lunr.stopWordFilter is an English language stop word list filter, any words - * contained in the list will not be passed through the filter. - * - * This is intended to be used in the Pipeline. If the token does not pass the - * filter then undefined will be returned. - * - * @function - * @implements {lunr.PipelineFunction} - * @params {lunr.Token} token - A token to check for being a stop word. - * @returns {lunr.Token} - * @see {@link lunr.Pipeline} - */ -lunr.stopWordFilter = lunr.generateStopWordFilter([ - 'a', - 'able', - 'about', - 'across', - 'after', - 'all', - 'almost', - 'also', - 'am', - 'among', - 'an', - 'and', - 'any', - 'are', - 'as', - 'at', - 'be', - 'because', - 'been', - 'but', - 'by', - 'can', - 'cannot', - 'could', - 'dear', - 'did', - 'do', - 'does', - 'either', - 'else', - 'ever', - 'every', - 'for', - 'from', - 'get', - 'got', - 'had', - 'has', - 'have', - 'he', - 'her', - 'hers', - 'him', - 'his', - 'how', - 'however', - 'i', - 'if', - 'in', - 'into', - 'is', - 'it', - 'its', - 'just', - 'least', - 'let', - 'like', - 'likely', - 'may', - 'me', - 'might', - 'most', - 'must', - 'my', - 'neither', - 'no', - 'nor', - 'not', - 'of', - 'off', - 'often', - 'on', - 'only', - 'or', - 'other', - 'our', - 'own', - 'rather', - 'said', - 'say', - 'says', - 'she', - 'should', - 'since', - 'so', - 'some', - 'than', - 'that', - 'the', - 'their', - 'them', - 'then', - 'there', - 'these', - 'they', - 'this', - 'tis', - 'to', - 'too', - 'twas', - 'us', - 'wants', - 'was', - 'we', - 'were', - 'what', - 'when', - 'where', - 'which', - 'while', - 'who', - 'whom', - 'why', - 'will', - 'with', - 'would', - 'yet', - 'you', - 'your' -]) - -lunr.Pipeline.registerFunction(lunr.stopWordFilter, 'stopWordFilter') -/*! - * lunr.trimmer - * Copyright (C) 2020 Oliver Nightingale - */ - -/** - * lunr.trimmer is a pipeline function for trimming non word - * characters from the beginning and end of tokens before they - * enter the index. - * - * This implementation may not work correctly for non latin - * characters and should either be removed or adapted for use - * with languages with non-latin characters. - * - * @static - * @implements {lunr.PipelineFunction} - * @param {lunr.Token} token The token to pass through the filter - * @returns {lunr.Token} - * @see lunr.Pipeline - */ -lunr.trimmer = function (token) { - return token.update(function (s) { - return s.replace(/^\W+/, '').replace(/\W+$/, '') - }) -} - -lunr.Pipeline.registerFunction(lunr.trimmer, 'trimmer') -/*! - * lunr.TokenSet - * Copyright (C) 2020 Oliver Nightingale - */ - -/** - * A token set is used to store the unique list of all tokens - * within an index. Token sets are also used to represent an - * incoming query to the index, this query token set and index - * token set are then intersected to find which tokens to look - * up in the inverted index. - * - * A token set can hold multiple tokens, as in the case of the - * index token set, or it can hold a single token as in the - * case of a simple query token set. - * - * Additionally token sets are used to perform wildcard matching. - * Leading, contained and trailing wildcards are supported, and - * from this edit distance matching can also be provided. - * - * Token sets are implemented as a minimal finite state automata, - * where both common prefixes and suffixes are shared between tokens. - * This helps to reduce the space used for storing the token set. - * - * @constructor - */ -lunr.TokenSet = function () { - this.final = false - this.edges = {} - this.id = lunr.TokenSet._nextId - lunr.TokenSet._nextId += 1 -} - -/** - * Keeps track of the next, auto increment, identifier to assign - * to a new tokenSet. - * - * TokenSets require a unique identifier to be correctly minimised. - * - * @private - */ -lunr.TokenSet._nextId = 1 - -/** - * Creates a TokenSet instance from the given sorted array of words. - * - * @param {String[]} arr - A sorted array of strings to create the set from. - * @returns {lunr.TokenSet} - * @throws Will throw an error if the input array is not sorted. - */ -lunr.TokenSet.fromArray = function (arr) { - var builder = new lunr.TokenSet.Builder - - for (var i = 0, len = arr.length; i < len; i++) { - builder.insert(arr[i]) - } - - builder.finish() - return builder.root -} - -/** - * Creates a token set from a query clause. - * - * @private - * @param {Object} clause - A single clause from lunr.Query. - * @param {string} clause.term - The query clause term. - * @param {number} [clause.editDistance] - The optional edit distance for the term. - * @returns {lunr.TokenSet} - */ -lunr.TokenSet.fromClause = function (clause) { - if ('editDistance' in clause) { - return lunr.TokenSet.fromFuzzyString(clause.term, clause.editDistance) - } else { - return lunr.TokenSet.fromString(clause.term) - } -} - -/** - * Creates a token set representing a single string with a specified - * edit distance. - * - * Insertions, deletions, substitutions and transpositions are each - * treated as an edit distance of 1. - * - * Increasing the allowed edit distance will have a dramatic impact - * on the performance of both creating and intersecting these TokenSets. - * It is advised to keep the edit distance less than 3. - * - * @param {string} str - The string to create the token set from. - * @param {number} editDistance - The allowed edit distance to match. - * @returns {lunr.Vector} - */ -lunr.TokenSet.fromFuzzyString = function (str, editDistance) { - var root = new lunr.TokenSet - - var stack = [{ - node: root, - editsRemaining: editDistance, - str: str - }] - - while (stack.length) { - var frame = stack.pop() - - // no edit - if (frame.str.length > 0) { - var char = frame.str.charAt(0), - noEditNode - - if (char in frame.node.edges) { - noEditNode = frame.node.edges[char] - } else { - noEditNode = new lunr.TokenSet - frame.node.edges[char] = noEditNode - } - - if (frame.str.length == 1) { - noEditNode.final = true - } - - stack.push({ - node: noEditNode, - editsRemaining: frame.editsRemaining, - str: frame.str.slice(1) - }) - } - - if (frame.editsRemaining == 0) { - continue - } - - // insertion - if ("*" in frame.node.edges) { - var insertionNode = frame.node.edges["*"] - } else { - var insertionNode = new lunr.TokenSet - frame.node.edges["*"] = insertionNode - } - - if (frame.str.length == 0) { - insertionNode.final = true - } - - stack.push({ - node: insertionNode, - editsRemaining: frame.editsRemaining - 1, - str: frame.str - }) - - // deletion - // can only do a deletion if we have enough edits remaining - // and if there are characters left to delete in the string - if (frame.str.length > 1) { - stack.push({ - node: frame.node, - editsRemaining: frame.editsRemaining - 1, - str: frame.str.slice(1) - }) - } - - // deletion - // just removing the last character from the str - if (frame.str.length == 1) { - frame.node.final = true - } - - // substitution - // can only do a substitution if we have enough edits remaining - // and if there are characters left to substitute - if (frame.str.length >= 1) { - if ("*" in frame.node.edges) { - var substitutionNode = frame.node.edges["*"] - } else { - var substitutionNode = new lunr.TokenSet - frame.node.edges["*"] = substitutionNode - } - - if (frame.str.length == 1) { - substitutionNode.final = true - } - - stack.push({ - node: substitutionNode, - editsRemaining: frame.editsRemaining - 1, - str: frame.str.slice(1) - }) - } - - // transposition - // can only do a transposition if there are edits remaining - // and there are enough characters to transpose - if (frame.str.length > 1) { - var charA = frame.str.charAt(0), - charB = frame.str.charAt(1), - transposeNode - - if (charB in frame.node.edges) { - transposeNode = frame.node.edges[charB] - } else { - transposeNode = new lunr.TokenSet - frame.node.edges[charB] = transposeNode - } - - if (frame.str.length == 1) { - transposeNode.final = true - } - - stack.push({ - node: transposeNode, - editsRemaining: frame.editsRemaining - 1, - str: charA + frame.str.slice(2) - }) - } - } - - return root -} - -/** - * Creates a TokenSet from a string. - * - * The string may contain one or more wildcard characters (*) - * that will allow wildcard matching when intersecting with - * another TokenSet. - * - * @param {string} str - The string to create a TokenSet from. - * @returns {lunr.TokenSet} - */ -lunr.TokenSet.fromString = function (str) { - var node = new lunr.TokenSet, - root = node - - /* - * Iterates through all characters within the passed string - * appending a node for each character. - * - * When a wildcard character is found then a self - * referencing edge is introduced to continually match - * any number of any characters. - */ - for (var i = 0, len = str.length; i < len; i++) { - var char = str[i], - final = (i == len - 1) - - if (char == "*") { - node.edges[char] = node - node.final = final - - } else { - var next = new lunr.TokenSet - next.final = final - - node.edges[char] = next - node = next - } - } - - return root -} - -/** - * Converts this TokenSet into an array of strings - * contained within the TokenSet. - * - * This is not intended to be used on a TokenSet that - * contains wildcards, in these cases the results are - * undefined and are likely to cause an infinite loop. - * - * @returns {string[]} - */ -lunr.TokenSet.prototype.toArray = function () { - var words = [] - - var stack = [{ - prefix: "", - node: this - }] - - while (stack.length) { - var frame = stack.pop(), - edges = Object.keys(frame.node.edges), - len = edges.length - - if (frame.node.final) { - /* In Safari, at this point the prefix is sometimes corrupted, see: - * https://github.com/olivernn/lunr.js/issues/279 Calling any - * String.prototype method forces Safari to "cast" this string to what - * it's supposed to be, fixing the bug. */ - frame.prefix.charAt(0) - words.push(frame.prefix) - } - - for (var i = 0; i < len; i++) { - var edge = edges[i] - - stack.push({ - prefix: frame.prefix.concat(edge), - node: frame.node.edges[edge] - }) - } - } - - return words -} - -/** - * Generates a string representation of a TokenSet. - * - * This is intended to allow TokenSets to be used as keys - * in objects, largely to aid the construction and minimisation - * of a TokenSet. As such it is not designed to be a human - * friendly representation of the TokenSet. - * - * @returns {string} - */ -lunr.TokenSet.prototype.toString = function () { - // NOTE: Using Object.keys here as this.edges is very likely - // to enter 'hash-mode' with many keys being added - // - // avoiding a for-in loop here as it leads to the function - // being de-optimised (at least in V8). From some simple - // benchmarks the performance is comparable, but allowing - // V8 to optimize may mean easy performance wins in the future. - - if (this._str) { - return this._str - } - - var str = this.final ? '1' : '0', - labels = Object.keys(this.edges).sort(), - len = labels.length - - for (var i = 0; i < len; i++) { - var label = labels[i], - node = this.edges[label] - - str = str + label + node.id - } - - return str -} - -/** - * Returns a new TokenSet that is the intersection of - * this TokenSet and the passed TokenSet. - * - * This intersection will take into account any wildcards - * contained within the TokenSet. - * - * @param {lunr.TokenSet} b - An other TokenSet to intersect with. - * @returns {lunr.TokenSet} - */ -lunr.TokenSet.prototype.intersect = function (b) { - var output = new lunr.TokenSet, - frame = undefined - - var stack = [{ - qNode: b, - output: output, - node: this - }] - - while (stack.length) { - frame = stack.pop() - - // NOTE: As with the #toString method, we are using - // Object.keys and a for loop instead of a for-in loop - // as both of these objects enter 'hash' mode, causing - // the function to be de-optimised in V8 - var qEdges = Object.keys(frame.qNode.edges), - qLen = qEdges.length, - nEdges = Object.keys(frame.node.edges), - nLen = nEdges.length - - for (var q = 0; q < qLen; q++) { - var qEdge = qEdges[q] - - for (var n = 0; n < nLen; n++) { - var nEdge = nEdges[n] - - if (nEdge == qEdge || qEdge == '*') { - var node = frame.node.edges[nEdge], - qNode = frame.qNode.edges[qEdge], - final = node.final && qNode.final, - next = undefined - - if (nEdge in frame.output.edges) { - // an edge already exists for this character - // no need to create a new node, just set the finality - // bit unless this node is already final - next = frame.output.edges[nEdge] - next.final = next.final || final - - } else { - // no edge exists yet, must create one - // set the finality bit and insert it - // into the output - next = new lunr.TokenSet - next.final = final - frame.output.edges[nEdge] = next - } - - stack.push({ - qNode: qNode, - output: next, - node: node - }) - } - } - } - } - - return output -} -lunr.TokenSet.Builder = function () { - this.previousWord = "" - this.root = new lunr.TokenSet - this.uncheckedNodes = [] - this.minimizedNodes = {} -} - -lunr.TokenSet.Builder.prototype.insert = function (word) { - var node, - commonPrefix = 0 - - if (word < this.previousWord) { - throw new Error ("Out of order word insertion") - } - - for (var i = 0; i < word.length && i < this.previousWord.length; i++) { - if (word[i] != this.previousWord[i]) break - commonPrefix++ - } - - this.minimize(commonPrefix) - - if (this.uncheckedNodes.length == 0) { - node = this.root - } else { - node = this.uncheckedNodes[this.uncheckedNodes.length - 1].child - } - - for (var i = commonPrefix; i < word.length; i++) { - var nextNode = new lunr.TokenSet, - char = word[i] - - node.edges[char] = nextNode - - this.uncheckedNodes.push({ - parent: node, - char: char, - child: nextNode - }) - - node = nextNode - } - - node.final = true - this.previousWord = word -} - -lunr.TokenSet.Builder.prototype.finish = function () { - this.minimize(0) -} - -lunr.TokenSet.Builder.prototype.minimize = function (downTo) { - for (var i = this.uncheckedNodes.length - 1; i >= downTo; i--) { - var node = this.uncheckedNodes[i], - childKey = node.child.toString() - - if (childKey in this.minimizedNodes) { - node.parent.edges[node.char] = this.minimizedNodes[childKey] - } else { - // Cache the key for this node since - // we know it can't change anymore - node.child._str = childKey - - this.minimizedNodes[childKey] = node.child - } - - this.uncheckedNodes.pop() - } -} -/*! - * lunr.Index - * Copyright (C) 2020 Oliver Nightingale - */ - -/** - * An index contains the built index of all documents and provides a query interface - * to the index. - * - * Usually instances of lunr.Index will not be created using this constructor, instead - * lunr.Builder should be used to construct new indexes, or lunr.Index.load should be - * used to load previously built and serialized indexes. - * - * @constructor - * @param {Object} attrs - The attributes of the built search index. - * @param {Object} attrs.invertedIndex - An index of term/field to document reference. - * @param {Object} attrs.fieldVectors - Field vectors - * @param {lunr.TokenSet} attrs.tokenSet - An set of all corpus tokens. - * @param {string[]} attrs.fields - The names of indexed document fields. - * @param {lunr.Pipeline} attrs.pipeline - The pipeline to use for search terms. - */ -lunr.Index = function (attrs) { - this.invertedIndex = attrs.invertedIndex - this.fieldVectors = attrs.fieldVectors - this.tokenSet = attrs.tokenSet - this.fields = attrs.fields - this.pipeline = attrs.pipeline -} - -/** - * A result contains details of a document matching a search query. - * @typedef {Object} lunr.Index~Result - * @property {string} ref - The reference of the document this result represents. - * @property {number} score - A number between 0 and 1 representing how similar this document is to the query. - * @property {lunr.MatchData} matchData - Contains metadata about this match including which term(s) caused the match. - */ - -/** - * Although lunr provides the ability to create queries using lunr.Query, it also provides a simple - * query language which itself is parsed into an instance of lunr.Query. - * - * For programmatically building queries it is advised to directly use lunr.Query, the query language - * is best used for human entered text rather than program generated text. - * - * At its simplest queries can just be a single term, e.g. `hello`, multiple terms are also supported - * and will be combined with OR, e.g `hello world` will match documents that contain either 'hello' - * or 'world', though those that contain both will rank higher in the results. - * - * Wildcards can be included in terms to match one or more unspecified characters, these wildcards can - * be inserted anywhere within the term, and more than one wildcard can exist in a single term. Adding - * wildcards will increase the number of documents that will be found but can also have a negative - * impact on query performance, especially with wildcards at the beginning of a term. - * - * Terms can be restricted to specific fields, e.g. `title:hello`, only documents with the term - * hello in the title field will match this query. Using a field not present in the index will lead - * to an error being thrown. - * - * Modifiers can also be added to terms, lunr supports edit distance and boost modifiers on terms. A term - * boost will make documents matching that term score higher, e.g. `foo^5`. Edit distance is also supported - * to provide fuzzy matching, e.g. 'hello~2' will match documents with hello with an edit distance of 2. - * Avoid large values for edit distance to improve query performance. - * - * Each term also supports a presence modifier. By default a term's presence in document is optional, however - * this can be changed to either required or prohibited. For a term's presence to be required in a document the - * term should be prefixed with a '+', e.g. `+foo bar` is a search for documents that must contain 'foo' and - * optionally contain 'bar'. Conversely a leading '-' sets the terms presence to prohibited, i.e. it must not - * appear in a document, e.g. `-foo bar` is a search for documents that do not contain 'foo' but may contain 'bar'. - * - * To escape special characters the backslash character '\' can be used, this allows searches to include - * characters that would normally be considered modifiers, e.g. `foo\~2` will search for a term "foo~2" instead - * of attempting to apply a boost of 2 to the search term "foo". - * - * @typedef {string} lunr.Index~QueryString - * @example Simple single term query - * hello - * @example Multiple term query - * hello world - * @example term scoped to a field - * title:hello - * @example term with a boost of 10 - * hello^10 - * @example term with an edit distance of 2 - * hello~2 - * @example terms with presence modifiers - * -foo +bar baz - */ - -/** - * Performs a search against the index using lunr query syntax. - * - * Results will be returned sorted by their score, the most relevant results - * will be returned first. For details on how the score is calculated, please see - * the {@link https://lunrjs.com/guides/searching.html#scoring|guide}. - * - * For more programmatic querying use lunr.Index#query. - * - * @param {lunr.Index~QueryString} queryString - A string containing a lunr query. - * @throws {lunr.QueryParseError} If the passed query string cannot be parsed. - * @returns {lunr.Index~Result[]} - */ -lunr.Index.prototype.search = function (queryString) { - return this.query(function (query) { - var parser = new lunr.QueryParser(queryString, query) - parser.parse() - }) -} - -/** - * A query builder callback provides a query object to be used to express - * the query to perform on the index. - * - * @callback lunr.Index~queryBuilder - * @param {lunr.Query} query - The query object to build up. - * @this lunr.Query - */ - -/** - * Performs a query against the index using the yielded lunr.Query object. - * - * If performing programmatic queries against the index, this method is preferred - * over lunr.Index#search so as to avoid the additional query parsing overhead. - * - * A query object is yielded to the supplied function which should be used to - * express the query to be run against the index. - * - * Note that although this function takes a callback parameter it is _not_ an - * asynchronous operation, the callback is just yielded a query object to be - * customized. - * - * @param {lunr.Index~queryBuilder} fn - A function that is used to build the query. - * @returns {lunr.Index~Result[]} - */ -lunr.Index.prototype.query = function (fn) { - // for each query clause - // * process terms - // * expand terms from token set - // * find matching documents and metadata - // * get document vectors - // * score documents - - var query = new lunr.Query(this.fields), - matchingFields = Object.create(null), - queryVectors = Object.create(null), - termFieldCache = Object.create(null), - requiredMatches = Object.create(null), - prohibitedMatches = Object.create(null) - - /* - * To support field level boosts a query vector is created per - * field. An empty vector is eagerly created to support negated - * queries. - */ - for (var i = 0; i < this.fields.length; i++) { - queryVectors[this.fields[i]] = new lunr.Vector - } - - fn.call(query, query) - - for (var i = 0; i < query.clauses.length; i++) { - /* - * Unless the pipeline has been disabled for this term, which is - * the case for terms with wildcards, we need to pass the clause - * term through the search pipeline. A pipeline returns an array - * of processed terms. Pipeline functions may expand the passed - * term, which means we may end up performing multiple index lookups - * for a single query term. - */ - var clause = query.clauses[i], - terms = null, - clauseMatches = lunr.Set.empty - - if (clause.usePipeline) { - terms = this.pipeline.runString(clause.term, { - fields: clause.fields - }) - } else { - terms = [clause.term] - } - - for (var m = 0; m < terms.length; m++) { - var term = terms[m] - - /* - * Each term returned from the pipeline needs to use the same query - * clause object, e.g. the same boost and or edit distance. The - * simplest way to do this is to re-use the clause object but mutate - * its term property. - */ - clause.term = term - - /* - * From the term in the clause we create a token set which will then - * be used to intersect the indexes token set to get a list of terms - * to lookup in the inverted index - */ - var termTokenSet = lunr.TokenSet.fromClause(clause), - expandedTerms = this.tokenSet.intersect(termTokenSet).toArray() - - /* - * If a term marked as required does not exist in the tokenSet it is - * impossible for the search to return any matches. We set all the field - * scoped required matches set to empty and stop examining any further - * clauses. - */ - if (expandedTerms.length === 0 && clause.presence === lunr.Query.presence.REQUIRED) { - for (var k = 0; k < clause.fields.length; k++) { - var field = clause.fields[k] - requiredMatches[field] = lunr.Set.empty - } - - break - } - - for (var j = 0; j < expandedTerms.length; j++) { - /* - * For each term get the posting and termIndex, this is required for - * building the query vector. - */ - var expandedTerm = expandedTerms[j], - posting = this.invertedIndex[expandedTerm], - termIndex = posting._index - - for (var k = 0; k < clause.fields.length; k++) { - /* - * For each field that this query term is scoped by (by default - * all fields are in scope) we need to get all the document refs - * that have this term in that field. - * - * The posting is the entry in the invertedIndex for the matching - * term from above. - */ - var field = clause.fields[k], - fieldPosting = posting[field], - matchingDocumentRefs = Object.keys(fieldPosting), - termField = expandedTerm + "/" + field, - matchingDocumentsSet = new lunr.Set(matchingDocumentRefs) - - /* - * if the presence of this term is required ensure that the matching - * documents are added to the set of required matches for this clause. - * - */ - if (clause.presence == lunr.Query.presence.REQUIRED) { - clauseMatches = clauseMatches.union(matchingDocumentsSet) - - if (requiredMatches[field] === undefined) { - requiredMatches[field] = lunr.Set.complete - } - } - - /* - * if the presence of this term is prohibited ensure that the matching - * documents are added to the set of prohibited matches for this field, - * creating that set if it does not yet exist. - */ - if (clause.presence == lunr.Query.presence.PROHIBITED) { - if (prohibitedMatches[field] === undefined) { - prohibitedMatches[field] = lunr.Set.empty - } - - prohibitedMatches[field] = prohibitedMatches[field].union(matchingDocumentsSet) - - /* - * Prohibited matches should not be part of the query vector used for - * similarity scoring and no metadata should be extracted so we continue - * to the next field - */ - continue - } - - /* - * The query field vector is populated using the termIndex found for - * the term and a unit value with the appropriate boost applied. - * Using upsert because there could already be an entry in the vector - * for the term we are working with. In that case we just add the scores - * together. - */ - queryVectors[field].upsert(termIndex, clause.boost, function (a, b) { return a + b }) - - /** - * If we've already seen this term, field combo then we've already collected - * the matching documents and metadata, no need to go through all that again - */ - if (termFieldCache[termField]) { - continue - } - - for (var l = 0; l < matchingDocumentRefs.length; l++) { - /* - * All metadata for this term/field/document triple - * are then extracted and collected into an instance - * of lunr.MatchData ready to be returned in the query - * results - */ - var matchingDocumentRef = matchingDocumentRefs[l], - matchingFieldRef = new lunr.FieldRef (matchingDocumentRef, field), - metadata = fieldPosting[matchingDocumentRef], - fieldMatch - - if ((fieldMatch = matchingFields[matchingFieldRef]) === undefined) { - matchingFields[matchingFieldRef] = new lunr.MatchData (expandedTerm, field, metadata) - } else { - fieldMatch.add(expandedTerm, field, metadata) - } - - } - - termFieldCache[termField] = true - } - } - } - - /** - * If the presence was required we need to update the requiredMatches field sets. - * We do this after all fields for the term have collected their matches because - * the clause terms presence is required in _any_ of the fields not _all_ of the - * fields. - */ - if (clause.presence === lunr.Query.presence.REQUIRED) { - for (var k = 0; k < clause.fields.length; k++) { - var field = clause.fields[k] - requiredMatches[field] = requiredMatches[field].intersect(clauseMatches) - } - } - } - - /** - * Need to combine the field scoped required and prohibited - * matching documents into a global set of required and prohibited - * matches - */ - var allRequiredMatches = lunr.Set.complete, - allProhibitedMatches = lunr.Set.empty - - for (var i = 0; i < this.fields.length; i++) { - var field = this.fields[i] - - if (requiredMatches[field]) { - allRequiredMatches = allRequiredMatches.intersect(requiredMatches[field]) - } - - if (prohibitedMatches[field]) { - allProhibitedMatches = allProhibitedMatches.union(prohibitedMatches[field]) - } - } - - var matchingFieldRefs = Object.keys(matchingFields), - results = [], - matches = Object.create(null) - - /* - * If the query is negated (contains only prohibited terms) - * we need to get _all_ fieldRefs currently existing in the - * index. This is only done when we know that the query is - * entirely prohibited terms to avoid any cost of getting all - * fieldRefs unnecessarily. - * - * Additionally, blank MatchData must be created to correctly - * populate the results. - */ - if (query.isNegated()) { - matchingFieldRefs = Object.keys(this.fieldVectors) - - for (var i = 0; i < matchingFieldRefs.length; i++) { - var matchingFieldRef = matchingFieldRefs[i] - var fieldRef = lunr.FieldRef.fromString(matchingFieldRef) - matchingFields[matchingFieldRef] = new lunr.MatchData - } - } - - for (var i = 0; i < matchingFieldRefs.length; i++) { - /* - * Currently we have document fields that match the query, but we - * need to return documents. The matchData and scores are combined - * from multiple fields belonging to the same document. - * - * Scores are calculated by field, using the query vectors created - * above, and combined into a final document score using addition. - */ - var fieldRef = lunr.FieldRef.fromString(matchingFieldRefs[i]), - docRef = fieldRef.docRef - - if (!allRequiredMatches.contains(docRef)) { - continue - } - - if (allProhibitedMatches.contains(docRef)) { - continue - } - - var fieldVector = this.fieldVectors[fieldRef], - score = queryVectors[fieldRef.fieldName].similarity(fieldVector), - docMatch - - if ((docMatch = matches[docRef]) !== undefined) { - docMatch.score += score - docMatch.matchData.combine(matchingFields[fieldRef]) - } else { - var match = { - ref: docRef, - score: score, - matchData: matchingFields[fieldRef] - } - matches[docRef] = match - results.push(match) - } - } - - /* - * Sort the results objects by score, highest first. - */ - return results.sort(function (a, b) { - return b.score - a.score - }) -} - -/** - * Prepares the index for JSON serialization. - * - * The schema for this JSON blob will be described in a - * separate JSON schema file. - * - * @returns {Object} - */ -lunr.Index.prototype.toJSON = function () { - var invertedIndex = Object.keys(this.invertedIndex) - .sort() - .map(function (term) { - return [term, this.invertedIndex[term]] - }, this) - - var fieldVectors = Object.keys(this.fieldVectors) - .map(function (ref) { - return [ref, this.fieldVectors[ref].toJSON()] - }, this) - - return { - version: lunr.version, - fields: this.fields, - fieldVectors: fieldVectors, - invertedIndex: invertedIndex, - pipeline: this.pipeline.toJSON() - } -} - -/** - * Loads a previously serialized lunr.Index - * - * @param {Object} serializedIndex - A previously serialized lunr.Index - * @returns {lunr.Index} - */ -lunr.Index.load = function (serializedIndex) { - var attrs = {}, - fieldVectors = {}, - serializedVectors = serializedIndex.fieldVectors, - invertedIndex = Object.create(null), - serializedInvertedIndex = serializedIndex.invertedIndex, - tokenSetBuilder = new lunr.TokenSet.Builder, - pipeline = lunr.Pipeline.load(serializedIndex.pipeline) - - if (serializedIndex.version != lunr.version) { - lunr.utils.warn("Version mismatch when loading serialised index. Current version of lunr '" + lunr.version + "' does not match serialized index '" + serializedIndex.version + "'") - } - - for (var i = 0; i < serializedVectors.length; i++) { - var tuple = serializedVectors[i], - ref = tuple[0], - elements = tuple[1] - - fieldVectors[ref] = new lunr.Vector(elements) - } - - for (var i = 0; i < serializedInvertedIndex.length; i++) { - var tuple = serializedInvertedIndex[i], - term = tuple[0], - posting = tuple[1] - - tokenSetBuilder.insert(term) - invertedIndex[term] = posting - } - - tokenSetBuilder.finish() - - attrs.fields = serializedIndex.fields - - attrs.fieldVectors = fieldVectors - attrs.invertedIndex = invertedIndex - attrs.tokenSet = tokenSetBuilder.root - attrs.pipeline = pipeline - - return new lunr.Index(attrs) -} -/*! - * lunr.Builder - * Copyright (C) 2020 Oliver Nightingale - */ - -/** - * lunr.Builder performs indexing on a set of documents and - * returns instances of lunr.Index ready for querying. - * - * All configuration of the index is done via the builder, the - * fields to index, the document reference, the text processing - * pipeline and document scoring parameters are all set on the - * builder before indexing. - * - * @constructor - * @property {string} _ref - Internal reference to the document reference field. - * @property {string[]} _fields - Internal reference to the document fields to index. - * @property {object} invertedIndex - The inverted index maps terms to document fields. - * @property {object} documentTermFrequencies - Keeps track of document term frequencies. - * @property {object} documentLengths - Keeps track of the length of documents added to the index. - * @property {lunr.tokenizer} tokenizer - Function for splitting strings into tokens for indexing. - * @property {lunr.Pipeline} pipeline - The pipeline performs text processing on tokens before indexing. - * @property {lunr.Pipeline} searchPipeline - A pipeline for processing search terms before querying the index. - * @property {number} documentCount - Keeps track of the total number of documents indexed. - * @property {number} _b - A parameter to control field length normalization, setting this to 0 disabled normalization, 1 fully normalizes field lengths, the default value is 0.75. - * @property {number} _k1 - A parameter to control how quickly an increase in term frequency results in term frequency saturation, the default value is 1.2. - * @property {number} termIndex - A counter incremented for each unique term, used to identify a terms position in the vector space. - * @property {array} metadataWhitelist - A list of metadata keys that have been whitelisted for entry in the index. - */ -lunr.Builder = function () { - this._ref = "id" - this._fields = Object.create(null) - this._documents = Object.create(null) - this.invertedIndex = Object.create(null) - this.fieldTermFrequencies = {} - this.fieldLengths = {} - this.tokenizer = lunr.tokenizer - this.pipeline = new lunr.Pipeline - this.searchPipeline = new lunr.Pipeline - this.documentCount = 0 - this._b = 0.75 - this._k1 = 1.2 - this.termIndex = 0 - this.metadataWhitelist = [] -} - -/** - * Sets the document field used as the document reference. Every document must have this field. - * The type of this field in the document should be a string, if it is not a string it will be - * coerced into a string by calling toString. - * - * The default ref is 'id'. - * - * The ref should _not_ be changed during indexing, it should be set before any documents are - * added to the index. Changing it during indexing can lead to inconsistent results. - * - * @param {string} ref - The name of the reference field in the document. - */ -lunr.Builder.prototype.ref = function (ref) { - this._ref = ref -} - -/** - * A function that is used to extract a field from a document. - * - * Lunr expects a field to be at the top level of a document, if however the field - * is deeply nested within a document an extractor function can be used to extract - * the right field for indexing. - * - * @callback fieldExtractor - * @param {object} doc - The document being added to the index. - * @returns {?(string|object|object[])} obj - The object that will be indexed for this field. - * @example Extracting a nested field - * function (doc) { return doc.nested.field } - */ - -/** - * Adds a field to the list of document fields that will be indexed. Every document being - * indexed should have this field. Null values for this field in indexed documents will - * not cause errors but will limit the chance of that document being retrieved by searches. - * - * All fields should be added before adding documents to the index. Adding fields after - * a document has been indexed will have no effect on already indexed documents. - * - * Fields can be boosted at build time. This allows terms within that field to have more - * importance when ranking search results. Use a field boost to specify that matches within - * one field are more important than other fields. - * - * @param {string} fieldName - The name of a field to index in all documents. - * @param {object} attributes - Optional attributes associated with this field. - * @param {number} [attributes.boost=1] - Boost applied to all terms within this field. - * @param {fieldExtractor} [attributes.extractor] - Function to extract a field from a document. - * @throws {RangeError} fieldName cannot contain unsupported characters '/' - */ -lunr.Builder.prototype.field = function (fieldName, attributes) { - if (/\//.test(fieldName)) { - throw new RangeError ("Field '" + fieldName + "' contains illegal character '/'") - } - - this._fields[fieldName] = attributes || {} -} - -/** - * A parameter to tune the amount of field length normalisation that is applied when - * calculating relevance scores. A value of 0 will completely disable any normalisation - * and a value of 1 will fully normalise field lengths. The default is 0.75. Values of b - * will be clamped to the range 0 - 1. - * - * @param {number} number - The value to set for this tuning parameter. - */ -lunr.Builder.prototype.b = function (number) { - if (number < 0) { - this._b = 0 - } else if (number > 1) { - this._b = 1 - } else { - this._b = number - } -} - -/** - * A parameter that controls the speed at which a rise in term frequency results in term - * frequency saturation. The default value is 1.2. Setting this to a higher value will give - * slower saturation levels, a lower value will result in quicker saturation. - * - * @param {number} number - The value to set for this tuning parameter. - */ -lunr.Builder.prototype.k1 = function (number) { - this._k1 = number -} - -/** - * Adds a document to the index. - * - * Before adding fields to the index the index should have been fully setup, with the document - * ref and all fields to index already having been specified. - * - * The document must have a field name as specified by the ref (by default this is 'id') and - * it should have all fields defined for indexing, though null or undefined values will not - * cause errors. - * - * Entire documents can be boosted at build time. Applying a boost to a document indicates that - * this document should rank higher in search results than other documents. - * - * @param {object} doc - The document to add to the index. - * @param {object} attributes - Optional attributes associated with this document. - * @param {number} [attributes.boost=1] - Boost applied to all terms within this document. - */ -lunr.Builder.prototype.add = function (doc, attributes) { - var docRef = doc[this._ref], - fields = Object.keys(this._fields) - - this._documents[docRef] = attributes || {} - this.documentCount += 1 - - for (var i = 0; i < fields.length; i++) { - var fieldName = fields[i], - extractor = this._fields[fieldName].extractor, - field = extractor ? extractor(doc) : doc[fieldName], - tokens = this.tokenizer(field, { - fields: [fieldName] - }), - terms = this.pipeline.run(tokens), - fieldRef = new lunr.FieldRef (docRef, fieldName), - fieldTerms = Object.create(null) - - this.fieldTermFrequencies[fieldRef] = fieldTerms - this.fieldLengths[fieldRef] = 0 - - // store the length of this field for this document - this.fieldLengths[fieldRef] += terms.length - - // calculate term frequencies for this field - for (var j = 0; j < terms.length; j++) { - var term = terms[j] - - if (fieldTerms[term] == undefined) { - fieldTerms[term] = 0 - } - - fieldTerms[term] += 1 - - // add to inverted index - // create an initial posting if one doesn't exist - if (this.invertedIndex[term] == undefined) { - var posting = Object.create(null) - posting["_index"] = this.termIndex - this.termIndex += 1 - - for (var k = 0; k < fields.length; k++) { - posting[fields[k]] = Object.create(null) - } - - this.invertedIndex[term] = posting - } - - // add an entry for this term/fieldName/docRef to the invertedIndex - if (this.invertedIndex[term][fieldName][docRef] == undefined) { - this.invertedIndex[term][fieldName][docRef] = Object.create(null) - } - - // store all whitelisted metadata about this token in the - // inverted index - for (var l = 0; l < this.metadataWhitelist.length; l++) { - var metadataKey = this.metadataWhitelist[l], - metadata = term.metadata[metadataKey] - - if (this.invertedIndex[term][fieldName][docRef][metadataKey] == undefined) { - this.invertedIndex[term][fieldName][docRef][metadataKey] = [] - } - - this.invertedIndex[term][fieldName][docRef][metadataKey].push(metadata) - } - } - - } -} - -/** - * Calculates the average document length for this index - * - * @private - */ -lunr.Builder.prototype.calculateAverageFieldLengths = function () { - - var fieldRefs = Object.keys(this.fieldLengths), - numberOfFields = fieldRefs.length, - accumulator = {}, - documentsWithField = {} - - for (var i = 0; i < numberOfFields; i++) { - var fieldRef = lunr.FieldRef.fromString(fieldRefs[i]), - field = fieldRef.fieldName - - documentsWithField[field] || (documentsWithField[field] = 0) - documentsWithField[field] += 1 - - accumulator[field] || (accumulator[field] = 0) - accumulator[field] += this.fieldLengths[fieldRef] - } - - var fields = Object.keys(this._fields) - - for (var i = 0; i < fields.length; i++) { - var fieldName = fields[i] - accumulator[fieldName] = accumulator[fieldName] / documentsWithField[fieldName] - } - - this.averageFieldLength = accumulator -} - -/** - * Builds a vector space model of every document using lunr.Vector - * - * @private - */ -lunr.Builder.prototype.createFieldVectors = function () { - var fieldVectors = {}, - fieldRefs = Object.keys(this.fieldTermFrequencies), - fieldRefsLength = fieldRefs.length, - termIdfCache = Object.create(null) - - for (var i = 0; i < fieldRefsLength; i++) { - var fieldRef = lunr.FieldRef.fromString(fieldRefs[i]), - fieldName = fieldRef.fieldName, - fieldLength = this.fieldLengths[fieldRef], - fieldVector = new lunr.Vector, - termFrequencies = this.fieldTermFrequencies[fieldRef], - terms = Object.keys(termFrequencies), - termsLength = terms.length - - - var fieldBoost = this._fields[fieldName].boost || 1, - docBoost = this._documents[fieldRef.docRef].boost || 1 - - for (var j = 0; j < termsLength; j++) { - var term = terms[j], - tf = termFrequencies[term], - termIndex = this.invertedIndex[term]._index, - idf, score, scoreWithPrecision - - if (termIdfCache[term] === undefined) { - idf = lunr.idf(this.invertedIndex[term], this.documentCount) - termIdfCache[term] = idf - } else { - idf = termIdfCache[term] - } - - score = idf * ((this._k1 + 1) * tf) / (this._k1 * (1 - this._b + this._b * (fieldLength / this.averageFieldLength[fieldName])) + tf) - score *= fieldBoost - score *= docBoost - scoreWithPrecision = Math.round(score * 1000) / 1000 - // Converts 1.23456789 to 1.234. - // Reducing the precision so that the vectors take up less - // space when serialised. Doing it now so that they behave - // the same before and after serialisation. Also, this is - // the fastest approach to reducing a number's precision in - // JavaScript. - - fieldVector.insert(termIndex, scoreWithPrecision) - } - - fieldVectors[fieldRef] = fieldVector - } - - this.fieldVectors = fieldVectors -} - -/** - * Creates a token set of all tokens in the index using lunr.TokenSet - * - * @private - */ -lunr.Builder.prototype.createTokenSet = function () { - this.tokenSet = lunr.TokenSet.fromArray( - Object.keys(this.invertedIndex).sort() - ) -} - -/** - * Builds the index, creating an instance of lunr.Index. - * - * This completes the indexing process and should only be called - * once all documents have been added to the index. - * - * @returns {lunr.Index} - */ -lunr.Builder.prototype.build = function () { - this.calculateAverageFieldLengths() - this.createFieldVectors() - this.createTokenSet() - - return new lunr.Index({ - invertedIndex: this.invertedIndex, - fieldVectors: this.fieldVectors, - tokenSet: this.tokenSet, - fields: Object.keys(this._fields), - pipeline: this.searchPipeline - }) -} - -/** - * Applies a plugin to the index builder. - * - * A plugin is a function that is called with the index builder as its context. - * Plugins can be used to customise or extend the behaviour of the index - * in some way. A plugin is just a function, that encapsulated the custom - * behaviour that should be applied when building the index. - * - * The plugin function will be called with the index builder as its argument, additional - * arguments can also be passed when calling use. The function will be called - * with the index builder as its context. - * - * @param {Function} plugin The plugin to apply. - */ -lunr.Builder.prototype.use = function (fn) { - var args = Array.prototype.slice.call(arguments, 1) - args.unshift(this) - fn.apply(this, args) -} -/** - * Contains and collects metadata about a matching document. - * A single instance of lunr.MatchData is returned as part of every - * lunr.Index~Result. - * - * @constructor - * @param {string} term - The term this match data is associated with - * @param {string} field - The field in which the term was found - * @param {object} metadata - The metadata recorded about this term in this field - * @property {object} metadata - A cloned collection of metadata associated with this document. - * @see {@link lunr.Index~Result} - */ -lunr.MatchData = function (term, field, metadata) { - var clonedMetadata = Object.create(null), - metadataKeys = Object.keys(metadata || {}) - - // Cloning the metadata to prevent the original - // being mutated during match data combination. - // Metadata is kept in an array within the inverted - // index so cloning the data can be done with - // Array#slice - for (var i = 0; i < metadataKeys.length; i++) { - var key = metadataKeys[i] - clonedMetadata[key] = metadata[key].slice() - } - - this.metadata = Object.create(null) - - if (term !== undefined) { - this.metadata[term] = Object.create(null) - this.metadata[term][field] = clonedMetadata - } -} - -/** - * An instance of lunr.MatchData will be created for every term that matches a - * document. However only one instance is required in a lunr.Index~Result. This - * method combines metadata from another instance of lunr.MatchData with this - * objects metadata. - * - * @param {lunr.MatchData} otherMatchData - Another instance of match data to merge with this one. - * @see {@link lunr.Index~Result} - */ -lunr.MatchData.prototype.combine = function (otherMatchData) { - var terms = Object.keys(otherMatchData.metadata) - - for (var i = 0; i < terms.length; i++) { - var term = terms[i], - fields = Object.keys(otherMatchData.metadata[term]) - - if (this.metadata[term] == undefined) { - this.metadata[term] = Object.create(null) - } - - for (var j = 0; j < fields.length; j++) { - var field = fields[j], - keys = Object.keys(otherMatchData.metadata[term][field]) - - if (this.metadata[term][field] == undefined) { - this.metadata[term][field] = Object.create(null) - } - - for (var k = 0; k < keys.length; k++) { - var key = keys[k] - - if (this.metadata[term][field][key] == undefined) { - this.metadata[term][field][key] = otherMatchData.metadata[term][field][key] - } else { - this.metadata[term][field][key] = this.metadata[term][field][key].concat(otherMatchData.metadata[term][field][key]) - } - - } - } - } -} - -/** - * Add metadata for a term/field pair to this instance of match data. - * - * @param {string} term - The term this match data is associated with - * @param {string} field - The field in which the term was found - * @param {object} metadata - The metadata recorded about this term in this field - */ -lunr.MatchData.prototype.add = function (term, field, metadata) { - if (!(term in this.metadata)) { - this.metadata[term] = Object.create(null) - this.metadata[term][field] = metadata - return - } - - if (!(field in this.metadata[term])) { - this.metadata[term][field] = metadata - return - } - - var metadataKeys = Object.keys(metadata) - - for (var i = 0; i < metadataKeys.length; i++) { - var key = metadataKeys[i] - - if (key in this.metadata[term][field]) { - this.metadata[term][field][key] = this.metadata[term][field][key].concat(metadata[key]) - } else { - this.metadata[term][field][key] = metadata[key] - } - } -} -/** - * A lunr.Query provides a programmatic way of defining queries to be performed - * against a {@link lunr.Index}. - * - * Prefer constructing a lunr.Query using the {@link lunr.Index#query} method - * so the query object is pre-initialized with the right index fields. - * - * @constructor - * @property {lunr.Query~Clause[]} clauses - An array of query clauses. - * @property {string[]} allFields - An array of all available fields in a lunr.Index. - */ -lunr.Query = function (allFields) { - this.clauses = [] - this.allFields = allFields -} - -/** - * Constants for indicating what kind of automatic wildcard insertion will be used when constructing a query clause. - * - * This allows wildcards to be added to the beginning and end of a term without having to manually do any string - * concatenation. - * - * The wildcard constants can be bitwise combined to select both leading and trailing wildcards. - * - * @constant - * @default - * @property {number} wildcard.NONE - The term will have no wildcards inserted, this is the default behaviour - * @property {number} wildcard.LEADING - Prepend the term with a wildcard, unless a leading wildcard already exists - * @property {number} wildcard.TRAILING - Append a wildcard to the term, unless a trailing wildcard already exists - * @see lunr.Query~Clause - * @see lunr.Query#clause - * @see lunr.Query#term - * @example query term with trailing wildcard - * query.term('foo', { wildcard: lunr.Query.wildcard.TRAILING }) - * @example query term with leading and trailing wildcard - * query.term('foo', { - * wildcard: lunr.Query.wildcard.LEADING | lunr.Query.wildcard.TRAILING - * }) - */ - -lunr.Query.wildcard = new String ("*") -lunr.Query.wildcard.NONE = 0 -lunr.Query.wildcard.LEADING = 1 -lunr.Query.wildcard.TRAILING = 2 - -/** - * Constants for indicating what kind of presence a term must have in matching documents. - * - * @constant - * @enum {number} - * @see lunr.Query~Clause - * @see lunr.Query#clause - * @see lunr.Query#term - * @example query term with required presence - * query.term('foo', { presence: lunr.Query.presence.REQUIRED }) - */ -lunr.Query.presence = { - /** - * Term's presence in a document is optional, this is the default value. - */ - OPTIONAL: 1, - - /** - * Term's presence in a document is required, documents that do not contain - * this term will not be returned. - */ - REQUIRED: 2, - - /** - * Term's presence in a document is prohibited, documents that do contain - * this term will not be returned. - */ - PROHIBITED: 3 -} - -/** - * A single clause in a {@link lunr.Query} contains a term and details on how to - * match that term against a {@link lunr.Index}. - * - * @typedef {Object} lunr.Query~Clause - * @property {string[]} fields - The fields in an index this clause should be matched against. - * @property {number} [boost=1] - Any boost that should be applied when matching this clause. - * @property {number} [editDistance] - Whether the term should have fuzzy matching applied, and how fuzzy the match should be. - * @property {boolean} [usePipeline] - Whether the term should be passed through the search pipeline. - * @property {number} [wildcard=lunr.Query.wildcard.NONE] - Whether the term should have wildcards appended or prepended. - * @property {number} [presence=lunr.Query.presence.OPTIONAL] - The terms presence in any matching documents. - */ - -/** - * Adds a {@link lunr.Query~Clause} to this query. - * - * Unless the clause contains the fields to be matched all fields will be matched. In addition - * a default boost of 1 is applied to the clause. - * - * @param {lunr.Query~Clause} clause - The clause to add to this query. - * @see lunr.Query~Clause - * @returns {lunr.Query} - */ -lunr.Query.prototype.clause = function (clause) { - if (!('fields' in clause)) { - clause.fields = this.allFields - } - - if (!('boost' in clause)) { - clause.boost = 1 - } - - if (!('usePipeline' in clause)) { - clause.usePipeline = true - } - - if (!('wildcard' in clause)) { - clause.wildcard = lunr.Query.wildcard.NONE - } - - if ((clause.wildcard & lunr.Query.wildcard.LEADING) && (clause.term.charAt(0) != lunr.Query.wildcard)) { - clause.term = "*" + clause.term - } - - if ((clause.wildcard & lunr.Query.wildcard.TRAILING) && (clause.term.slice(-1) != lunr.Query.wildcard)) { - clause.term = "" + clause.term + "*" - } - - if (!('presence' in clause)) { - clause.presence = lunr.Query.presence.OPTIONAL - } - - this.clauses.push(clause) - - return this -} - -/** - * A negated query is one in which every clause has a presence of - * prohibited. These queries require some special processing to return - * the expected results. - * - * @returns boolean - */ -lunr.Query.prototype.isNegated = function () { - for (var i = 0; i < this.clauses.length; i++) { - if (this.clauses[i].presence != lunr.Query.presence.PROHIBITED) { - return false - } - } - - return true -} - -/** - * Adds a term to the current query, under the covers this will create a {@link lunr.Query~Clause} - * to the list of clauses that make up this query. - * - * The term is used as is, i.e. no tokenization will be performed by this method. Instead conversion - * to a token or token-like string should be done before calling this method. - * - * The term will be converted to a string by calling `toString`. Multiple terms can be passed as an - * array, each term in the array will share the same options. - * - * @param {object|object[]} term - The term(s) to add to the query. - * @param {object} [options] - Any additional properties to add to the query clause. - * @returns {lunr.Query} - * @see lunr.Query#clause - * @see lunr.Query~Clause - * @example adding a single term to a query - * query.term("foo") - * @example adding a single term to a query and specifying search fields, term boost and automatic trailing wildcard - * query.term("foo", { - * fields: ["title"], - * boost: 10, - * wildcard: lunr.Query.wildcard.TRAILING - * }) - * @example using lunr.tokenizer to convert a string to tokens before using them as terms - * query.term(lunr.tokenizer("foo bar")) - */ -lunr.Query.prototype.term = function (term, options) { - if (Array.isArray(term)) { - term.forEach(function (t) { this.term(t, lunr.utils.clone(options)) }, this) - return this - } - - var clause = options || {} - clause.term = term.toString() - - this.clause(clause) - - return this -} -lunr.QueryParseError = function (message, start, end) { - this.name = "QueryParseError" - this.message = message - this.start = start - this.end = end -} - -lunr.QueryParseError.prototype = new Error -lunr.QueryLexer = function (str) { - this.lexemes = [] - this.str = str - this.length = str.length - this.pos = 0 - this.start = 0 - this.escapeCharPositions = [] -} - -lunr.QueryLexer.prototype.run = function () { - var state = lunr.QueryLexer.lexText - - while (state) { - state = state(this) - } -} - -lunr.QueryLexer.prototype.sliceString = function () { - var subSlices = [], - sliceStart = this.start, - sliceEnd = this.pos - - for (var i = 0; i < this.escapeCharPositions.length; i++) { - sliceEnd = this.escapeCharPositions[i] - subSlices.push(this.str.slice(sliceStart, sliceEnd)) - sliceStart = sliceEnd + 1 - } - - subSlices.push(this.str.slice(sliceStart, this.pos)) - this.escapeCharPositions.length = 0 - - return subSlices.join('') -} - -lunr.QueryLexer.prototype.emit = function (type) { - this.lexemes.push({ - type: type, - str: this.sliceString(), - start: this.start, - end: this.pos - }) - - this.start = this.pos -} - -lunr.QueryLexer.prototype.escapeCharacter = function () { - this.escapeCharPositions.push(this.pos - 1) - this.pos += 1 -} - -lunr.QueryLexer.prototype.next = function () { - if (this.pos >= this.length) { - return lunr.QueryLexer.EOS - } - - var char = this.str.charAt(this.pos) - this.pos += 1 - return char -} - -lunr.QueryLexer.prototype.width = function () { - return this.pos - this.start -} - -lunr.QueryLexer.prototype.ignore = function () { - if (this.start == this.pos) { - this.pos += 1 - } - - this.start = this.pos -} - -lunr.QueryLexer.prototype.backup = function () { - this.pos -= 1 -} - -lunr.QueryLexer.prototype.acceptDigitRun = function () { - var char, charCode - - do { - char = this.next() - charCode = char.charCodeAt(0) - } while (charCode > 47 && charCode < 58) - - if (char != lunr.QueryLexer.EOS) { - this.backup() - } -} - -lunr.QueryLexer.prototype.more = function () { - return this.pos < this.length -} - -lunr.QueryLexer.EOS = 'EOS' -lunr.QueryLexer.FIELD = 'FIELD' -lunr.QueryLexer.TERM = 'TERM' -lunr.QueryLexer.EDIT_DISTANCE = 'EDIT_DISTANCE' -lunr.QueryLexer.BOOST = 'BOOST' -lunr.QueryLexer.PRESENCE = 'PRESENCE' - -lunr.QueryLexer.lexField = function (lexer) { - lexer.backup() - lexer.emit(lunr.QueryLexer.FIELD) - lexer.ignore() - return lunr.QueryLexer.lexText -} - -lunr.QueryLexer.lexTerm = function (lexer) { - if (lexer.width() > 1) { - lexer.backup() - lexer.emit(lunr.QueryLexer.TERM) - } - - lexer.ignore() - - if (lexer.more()) { - return lunr.QueryLexer.lexText - } -} - -lunr.QueryLexer.lexEditDistance = function (lexer) { - lexer.ignore() - lexer.acceptDigitRun() - lexer.emit(lunr.QueryLexer.EDIT_DISTANCE) - return lunr.QueryLexer.lexText -} - -lunr.QueryLexer.lexBoost = function (lexer) { - lexer.ignore() - lexer.acceptDigitRun() - lexer.emit(lunr.QueryLexer.BOOST) - return lunr.QueryLexer.lexText -} - -lunr.QueryLexer.lexEOS = function (lexer) { - if (lexer.width() > 0) { - lexer.emit(lunr.QueryLexer.TERM) - } -} - -// This matches the separator used when tokenising fields -// within a document. These should match otherwise it is -// not possible to search for some tokens within a document. -// -// It is possible for the user to change the separator on the -// tokenizer so it _might_ clash with any other of the special -// characters already used within the search string, e.g. :. -// -// This means that it is possible to change the separator in -// such a way that makes some words unsearchable using a search -// string. -lunr.QueryLexer.termSeparator = lunr.tokenizer.separator - -lunr.QueryLexer.lexText = function (lexer) { - while (true) { - var char = lexer.next() - - if (char == lunr.QueryLexer.EOS) { - return lunr.QueryLexer.lexEOS - } - - // Escape character is '\' - if (char.charCodeAt(0) == 92) { - lexer.escapeCharacter() - continue - } - - if (char == ":") { - return lunr.QueryLexer.lexField - } - - if (char == "~") { - lexer.backup() - if (lexer.width() > 0) { - lexer.emit(lunr.QueryLexer.TERM) - } - return lunr.QueryLexer.lexEditDistance - } - - if (char == "^") { - lexer.backup() - if (lexer.width() > 0) { - lexer.emit(lunr.QueryLexer.TERM) - } - return lunr.QueryLexer.lexBoost - } - - // "+" indicates term presence is required - // checking for length to ensure that only - // leading "+" are considered - if (char == "+" && lexer.width() === 1) { - lexer.emit(lunr.QueryLexer.PRESENCE) - return lunr.QueryLexer.lexText - } - - // "-" indicates term presence is prohibited - // checking for length to ensure that only - // leading "-" are considered - if (char == "-" && lexer.width() === 1) { - lexer.emit(lunr.QueryLexer.PRESENCE) - return lunr.QueryLexer.lexText - } - - if (char.match(lunr.QueryLexer.termSeparator)) { - return lunr.QueryLexer.lexTerm - } - } -} - -lunr.QueryParser = function (str, query) { - this.lexer = new lunr.QueryLexer (str) - this.query = query - this.currentClause = {} - this.lexemeIdx = 0 -} - -lunr.QueryParser.prototype.parse = function () { - this.lexer.run() - this.lexemes = this.lexer.lexemes - - var state = lunr.QueryParser.parseClause - - while (state) { - state = state(this) - } - - return this.query -} - -lunr.QueryParser.prototype.peekLexeme = function () { - return this.lexemes[this.lexemeIdx] -} - -lunr.QueryParser.prototype.consumeLexeme = function () { - var lexeme = this.peekLexeme() - this.lexemeIdx += 1 - return lexeme -} - -lunr.QueryParser.prototype.nextClause = function () { - var completedClause = this.currentClause - this.query.clause(completedClause) - this.currentClause = {} -} - -lunr.QueryParser.parseClause = function (parser) { - var lexeme = parser.peekLexeme() - - if (lexeme == undefined) { - return - } - - switch (lexeme.type) { - case lunr.QueryLexer.PRESENCE: - return lunr.QueryParser.parsePresence - case lunr.QueryLexer.FIELD: - return lunr.QueryParser.parseField - case lunr.QueryLexer.TERM: - return lunr.QueryParser.parseTerm - default: - var errorMessage = "expected either a field or a term, found " + lexeme.type - - if (lexeme.str.length >= 1) { - errorMessage += " with value '" + lexeme.str + "'" - } - - throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end) - } -} - -lunr.QueryParser.parsePresence = function (parser) { - var lexeme = parser.consumeLexeme() - - if (lexeme == undefined) { - return - } - - switch (lexeme.str) { - case "-": - parser.currentClause.presence = lunr.Query.presence.PROHIBITED - break - case "+": - parser.currentClause.presence = lunr.Query.presence.REQUIRED - break - default: - var errorMessage = "unrecognised presence operator'" + lexeme.str + "'" - throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end) - } - - var nextLexeme = parser.peekLexeme() - - if (nextLexeme == undefined) { - var errorMessage = "expecting term or field, found nothing" - throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end) - } - - switch (nextLexeme.type) { - case lunr.QueryLexer.FIELD: - return lunr.QueryParser.parseField - case lunr.QueryLexer.TERM: - return lunr.QueryParser.parseTerm - default: - var errorMessage = "expecting term or field, found '" + nextLexeme.type + "'" - throw new lunr.QueryParseError (errorMessage, nextLexeme.start, nextLexeme.end) - } -} - -lunr.QueryParser.parseField = function (parser) { - var lexeme = parser.consumeLexeme() - - if (lexeme == undefined) { - return - } - - if (parser.query.allFields.indexOf(lexeme.str) == -1) { - var possibleFields = parser.query.allFields.map(function (f) { return "'" + f + "'" }).join(', '), - errorMessage = "unrecognised field '" + lexeme.str + "', possible fields: " + possibleFields - - throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end) - } - - parser.currentClause.fields = [lexeme.str] - - var nextLexeme = parser.peekLexeme() - - if (nextLexeme == undefined) { - var errorMessage = "expecting term, found nothing" - throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end) - } - - switch (nextLexeme.type) { - case lunr.QueryLexer.TERM: - return lunr.QueryParser.parseTerm - default: - var errorMessage = "expecting term, found '" + nextLexeme.type + "'" - throw new lunr.QueryParseError (errorMessage, nextLexeme.start, nextLexeme.end) - } -} - -lunr.QueryParser.parseTerm = function (parser) { - var lexeme = parser.consumeLexeme() - - if (lexeme == undefined) { - return - } - - parser.currentClause.term = lexeme.str.toLowerCase() - - if (lexeme.str.indexOf("*") != -1) { - parser.currentClause.usePipeline = false - } - - var nextLexeme = parser.peekLexeme() - - if (nextLexeme == undefined) { - parser.nextClause() - return - } - - switch (nextLexeme.type) { - case lunr.QueryLexer.TERM: - parser.nextClause() - return lunr.QueryParser.parseTerm - case lunr.QueryLexer.FIELD: - parser.nextClause() - return lunr.QueryParser.parseField - case lunr.QueryLexer.EDIT_DISTANCE: - return lunr.QueryParser.parseEditDistance - case lunr.QueryLexer.BOOST: - return lunr.QueryParser.parseBoost - case lunr.QueryLexer.PRESENCE: - parser.nextClause() - return lunr.QueryParser.parsePresence - default: - var errorMessage = "Unexpected lexeme type '" + nextLexeme.type + "'" - throw new lunr.QueryParseError (errorMessage, nextLexeme.start, nextLexeme.end) - } -} - -lunr.QueryParser.parseEditDistance = function (parser) { - var lexeme = parser.consumeLexeme() - - if (lexeme == undefined) { - return - } - - var editDistance = parseInt(lexeme.str, 10) - - if (isNaN(editDistance)) { - var errorMessage = "edit distance must be numeric" - throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end) - } - - parser.currentClause.editDistance = editDistance - - var nextLexeme = parser.peekLexeme() - - if (nextLexeme == undefined) { - parser.nextClause() - return - } - - switch (nextLexeme.type) { - case lunr.QueryLexer.TERM: - parser.nextClause() - return lunr.QueryParser.parseTerm - case lunr.QueryLexer.FIELD: - parser.nextClause() - return lunr.QueryParser.parseField - case lunr.QueryLexer.EDIT_DISTANCE: - return lunr.QueryParser.parseEditDistance - case lunr.QueryLexer.BOOST: - return lunr.QueryParser.parseBoost - case lunr.QueryLexer.PRESENCE: - parser.nextClause() - return lunr.QueryParser.parsePresence - default: - var errorMessage = "Unexpected lexeme type '" + nextLexeme.type + "'" - throw new lunr.QueryParseError (errorMessage, nextLexeme.start, nextLexeme.end) - } -} - -lunr.QueryParser.parseBoost = function (parser) { - var lexeme = parser.consumeLexeme() - - if (lexeme == undefined) { - return - } - - var boost = parseInt(lexeme.str, 10) - - if (isNaN(boost)) { - var errorMessage = "boost must be numeric" - throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end) - } - - parser.currentClause.boost = boost - - var nextLexeme = parser.peekLexeme() - - if (nextLexeme == undefined) { - parser.nextClause() - return - } - - switch (nextLexeme.type) { - case lunr.QueryLexer.TERM: - parser.nextClause() - return lunr.QueryParser.parseTerm - case lunr.QueryLexer.FIELD: - parser.nextClause() - return lunr.QueryParser.parseField - case lunr.QueryLexer.EDIT_DISTANCE: - return lunr.QueryParser.parseEditDistance - case lunr.QueryLexer.BOOST: - return lunr.QueryParser.parseBoost - case lunr.QueryLexer.PRESENCE: - parser.nextClause() - return lunr.QueryParser.parsePresence - default: - var errorMessage = "Unexpected lexeme type '" + nextLexeme.type + "'" - throw new lunr.QueryParseError (errorMessage, nextLexeme.start, nextLexeme.end) - } -} - - /** - * export the module via AMD, CommonJS or as a browser global - * Export code from https://github.com/umdjs/umd/blob/master/returnExports.js - */ - ;(function (root, factory) { - if (typeof define === 'function' && define.amd) { - // AMD. Register as an anonymous module. - define(factory) - } else if (typeof exports === 'object') { - /** - * Node. Does not work with strict CommonJS, but - * only CommonJS-like enviroments that support module.exports, - * like Node. - */ - module.exports = factory() - } else { - // Browser globals (root is window) - root.lunr = factory() - } - }(this, function () { - /** - * Just return a value to define the module export. - * This example returns an object, but the module - * can return a function as the exported value. - */ - return lunr - })) -})(); +(function () { + "use strict"; + var script = document.createElement("script"); + script.src = "/assets/scripts/vendor/lunr.js"; + script.defer = true; + document.head.appendChild(script); +}()); diff --git a/assets/scripts/mermaid.min.js b/assets/scripts/mermaid.min.js index 0f033c7..109ecaf 100755 --- a/assets/scripts/mermaid.min.js +++ b/assets/scripts/mermaid.min.js @@ -1,2811 +1,6 @@ -"use strict";var __esbuild_esm_mermaid_nm;(__esbuild_esm_mermaid_nm||={}).mermaid=(()=>{var V3e=Object.create;var _y=Object.defineProperty;var U3e=Object.getOwnPropertyDescriptor;var H3e=Object.getOwnPropertyNames;var q3e=Object.getPrototypeOf,W3e=Object.prototype.hasOwnProperty;var o=(t,e)=>_y(t,"name",{value:e,configurable:!0});var N=(t,e)=>()=>(t&&(e=t(t=0)),e);var Da=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),dr=(t,e)=>{for(var r in e)_y(t,r,{get:e[r],enumerable:!0})},q4=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of H3e(e))!W3e.call(t,i)&&i!==r&&_y(t,i,{get:()=>e[i],enumerable:!(n=U3e(e,i))||n.enumerable});return t},Lr=(t,e,r)=>(q4(t,e,"default"),r&&q4(r,e,"default")),ja=(t,e,r)=>(r=t!=null?V3e(q3e(t)):{},q4(e||!t||!t.__esModule?_y(r,"default",{value:t,enumerable:!0}):r,t)),Y3e=t=>q4(_y({},"__esModule",{value:!0}),t);var X3e,y0,t7,Uz,W4=N(()=>{"use strict";X3e=Object.freeze({left:0,top:0,width:16,height:16}),y0=Object.freeze({rotate:0,vFlip:!1,hFlip:!1}),t7=Object.freeze({...X3e,...y0}),Uz=Object.freeze({...t7,body:"",hidden:!1})});var j3e,Hz,qz=N(()=>{"use strict";W4();j3e=Object.freeze({width:null,height:null}),Hz=Object.freeze({...j3e,...y0})});var r7,Y4,Wz=N(()=>{"use strict";r7=o((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 l=i.pop(),u=i.pop(),h={provider:i.length>0?i[0]:n,prefix:u,name:l};return e&&!Y4(h)?null:h}let a=i[0],s=a.split("-");if(s.length>1){let l={provider:n,prefix:s.shift(),name:s.join("-")};return e&&!Y4(l)?null:l}if(r&&n===""){let l={provider:n,prefix:"",name:a};return e&&!Y4(l,r)?null:l}return null},"stringToIcon"),Y4=o((t,e)=>t?!!((e&&t.prefix===""||t.prefix)&&t.name):!1,"validateIconName")});function Yz(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 Xz=N(()=>{"use strict";o(Yz,"mergeIconTransformations")});function n7(t,e){let r=Yz(t,e);for(let n in Uz)n in y0?n in t&&!(n in r)&&(r[n]=y0[n]):n in e?r[n]=e[n]:n in t&&(r[n]=t[n]);return r}var jz=N(()=>{"use strict";W4();Xz();o(n7,"mergeIconData")});function Kz(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 l=n[s]&&n[s].parent,u=l&&a(l);u&&(i[s]=[l].concat(u))}return i[s]}return o(a,"resolve"),(e||Object.keys(r).concat(Object.keys(n))).forEach(a),i}var Qz=N(()=>{"use strict";o(Kz,"getIconsTree")});function Zz(t,e,r){let n=t.icons,i=t.aliases||Object.create(null),a={};function s(l){a=n7(n[l]||i[l],a)}return o(s,"parse"),s(e),r.forEach(s),n7(t,a)}function i7(t,e){if(t.icons[e])return Zz(t,e,[]);let r=Kz(t,[e])[e];return r?Zz(t,e,r):null}var Jz=N(()=>{"use strict";jz();Qz();o(Zz,"internalGetIconData");o(i7,"getIconData")});function a7(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(K3e);if(n===null||!n.length)return t;let i=[],a=n.shift(),s=Q3e.test(a);for(;;){if(s){let l=parseFloat(a);isNaN(l)?i.push(a):i.push(Math.ceil(l*e*r)/r)}else i.push(a);if(a=n.shift(),a===void 0)return i.join("");s=!s}}var K3e,Q3e,eG=N(()=>{"use strict";K3e=/(-?[0-9.]*[0-9]+[0-9.]*)/g,Q3e=/^-?[0-9.]*[0-9]+[0-9.]*$/g;o(a7,"calculateSize")});function Z3e(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 J3e(t,e){return t?""+t+""+e:e}function tG(t,e,r){let n=Z3e(t);return J3e(n.defs,e+n.content+r)}var rG=N(()=>{"use strict";o(Z3e,"splitSVGDefs");o(J3e,"mergeDefsAndContent");o(tG,"wrapSVGContent")});function s7(t,e){let r={...t7,...t},n={...Hz,...e},i={left:r.left,top:r.top,width:r.width,height:r.height},a=r.body;[r,n].forEach(y=>{let v=[],x=y.hFlip,b=y.vFlip,T=y.rotate;x?b?T+=2:(v.push("translate("+(i.width+i.left).toString()+" "+(0-i.top).toString()+")"),v.push("scale(-1 1)"),i.top=i.left=0):b&&(v.push("translate("+(0-i.left).toString()+" "+(i.height+i.top).toString()+")"),v.push("scale(1 -1)"),i.top=i.left=0);let S;switch(T<0&&(T-=Math.floor(T/4)*4),T=T%4,T){case 1:S=i.height/2+i.top,v.unshift("rotate(90 "+S.toString()+" "+S.toString()+")");break;case 2:v.unshift("rotate(180 "+(i.width/2+i.left).toString()+" "+(i.height/2+i.top).toString()+")");break;case 3:S=i.width/2+i.left,v.unshift("rotate(-90 "+S.toString()+" "+S.toString()+")");break}T%2===1&&(i.left!==i.top&&(S=i.left,i.left=i.top,i.top=S),i.width!==i.height&&(S=i.width,i.width=i.height,i.height=S)),v.length&&(a=tG(a,'',""))});let s=n.width,l=n.height,u=i.width,h=i.height,f,d;s===null?(d=l===null?"1em":l==="auto"?h:l,f=a7(d,u/h)):(f=s==="auto"?u:s,d=l===null?a7(f,h/u):l==="auto"?h:l);let p={},m=o((y,v)=>{e5e(v)||(p[y]=v.toString())},"setAttr");m("width",f),m("height",d);let g=[i.left,i.top,u,h];return p.viewBox=g.join(" "),{attributes:p,viewBox:g,body:a}}var e5e,nG=N(()=>{"use strict";W4();qz();eG();rG();e5e=o(t=>t==="unset"||t==="undefined"||t==="none","isUnsetKeyword");o(s7,"iconToSVG")});function o7(t,e=r5e){let r=[],n;for(;n=t5e.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+(n5e++).toString(),l=a.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");t=t.replace(new RegExp('([#;"])('+l+')([")]|\\.[a-z])',"g"),"$1"+s+i+"$3")}),t=t.replace(new RegExp(i,"g"),""),t}var t5e,r5e,n5e,iG=N(()=>{"use strict";t5e=/\sid="(\S+)"/g,r5e="IconifyId"+Date.now().toString(16)+(Math.random()*16777216|0).toString(16),n5e=0;o(o7,"replaceIDs")});function l7(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 aG=N(()=>{"use strict";o(l7,"iconToHTML")});var sG=N(()=>{"use strict";Wz();Jz();nG();iG();aG()});var c7,Rn,v0=N(()=>{"use strict";c7=o((t,e,{depth:r=2,clobber:n=!1}={})=>{let i={depth:r,clobber:n};return Array.isArray(e)&&!Array.isArray(t)?(e.forEach(a=>c7(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]=c7(t[a],e[a],{depth:r-1,clobber:n})):(n||typeof t[a]!="object"&&typeof e[a]!="object")&&(t[a]=e[a])}),t)},"assignWithDepth"),Rn=c7});var X4=Da((u7,h7)=>{"use strict";(function(t,e){typeof u7=="object"&&typeof h7<"u"?h7.exports=e():typeof define=="function"&&define.amd?define(e):(t=typeof globalThis<"u"?globalThis:t||self).dayjs=e()})(u7,(function(){"use strict";var t=1e3,e=6e4,r=36e5,n="millisecond",i="second",a="minute",s="hour",l="day",u="week",h="month",f="quarter",d="year",p="date",m="Invalid Date",g=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,y=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,v={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),ordinal:o(function(E){var D=["th","st","nd","rd"],_=E%100;return"["+E+(D[(_-20)%10]||D[_]||D[0])+"]"},"ordinal")},x=o(function(E,D,_){var O=String(E);return!O||O.length>=D?E:""+Array(D+1-O.length).join(_)+E},"m"),b={s:x,z:o(function(E){var D=-E.utcOffset(),_=Math.abs(D),O=Math.floor(_/60),M=_%60;return(D<=0?"+":"-")+x(O,2,"0")+":"+x(M,2,"0")},"z"),m:o(function E(D,_){if(D.date()<_.date())return-E(_,D);var O=12*(_.year()-D.year())+(_.month()-D.month()),M=D.clone().add(O,h),P=_-M<0,B=D.clone().add(O+(P?-1:1),h);return+(-(O+(_-M)/(P?M-B:B-M))||0)},"t"),a:o(function(E){return E<0?Math.ceil(E)||0:Math.floor(E)},"a"),p:o(function(E){return{M:h,y:d,w:u,d:l,D:p,h:s,m:a,s:i,ms:n,Q:f}[E]||String(E||"").toLowerCase().replace(/s$/,"")},"p"),u:o(function(E){return E===void 0},"u")},T="en",S={};S[T]=v;var w="$isDayjsObject",k=o(function(E){return E instanceof I||!(!E||!E[w])},"S"),A=o(function E(D,_,O){var M;if(!D)return T;if(typeof D=="string"){var P=D.toLowerCase();S[P]&&(M=P),_&&(S[P]=_,M=P);var B=D.split("-");if(!M&&B.length>1)return E(B[0])}else{var F=D.name;S[F]=D,M=F}return!O&&M&&(T=M),M||!O&&T},"t"),C=o(function(E,D){if(k(E))return E.clone();var _=typeof D=="object"?D:{};return _.date=E,_.args=arguments,new I(_)},"O"),R=b;R.l=A,R.i=k,R.w=function(E,D){return C(E,{locale:D.$L,utc:D.$u,x:D.$x,$offset:D.$offset})};var I=(function(){function E(_){this.$L=A(_.locale,null,!0),this.parse(_),this.$x=this.$x||_.x||{},this[w]=!0}o(E,"M");var D=E.prototype;return D.parse=function(_){this.$d=(function(O){var M=O.date,P=O.utc;if(M===null)return new Date(NaN);if(R.u(M))return new Date;if(M instanceof Date)return new Date(M);if(typeof M=="string"&&!/Z$/i.test(M)){var B=M.match(g);if(B){var F=B[2]-1||0,G=(B[7]||"0").substring(0,3);return P?new Date(Date.UTC(B[1],F,B[3]||1,B[4]||0,B[5]||0,B[6]||0,G)):new Date(B[1],F,B[3]||1,B[4]||0,B[5]||0,B[6]||0,G)}}return new Date(M)})(_),this.init()},D.init=function(){var _=this.$d;this.$y=_.getFullYear(),this.$M=_.getMonth(),this.$D=_.getDate(),this.$W=_.getDay(),this.$H=_.getHours(),this.$m=_.getMinutes(),this.$s=_.getSeconds(),this.$ms=_.getMilliseconds()},D.$utils=function(){return R},D.isValid=function(){return this.$d.toString()!==m},D.isSame=function(_,O){var M=C(_);return this.startOf(O)<=M&&M<=this.endOf(O)},D.isAfter=function(_,O){return C(_){"use strict";oG=ja(X4(),1),au={trace:0,debug:1,info:2,warn:3,error:4,fatal:5},X={trace:o((...t)=>{},"trace"),debug:o((...t)=>{},"debug"),info:o((...t)=>{},"info"),warn:o((...t)=>{},"warn"),error:o((...t)=>{},"error"),fatal:o((...t)=>{},"fatal")},Dy=o(function(t="fatal"){let e=au.fatal;typeof t=="string"?t.toLowerCase()in au&&(e=au[t]):typeof t=="number"&&(e=t),X.trace=()=>{},X.debug=()=>{},X.info=()=>{},X.warn=()=>{},X.error=()=>{},X.fatal=()=>{},e<=au.fatal&&(X.fatal=console.error?console.error.bind(console,Eo("FATAL"),"color: orange"):console.log.bind(console,"\x1B[35m",Eo("FATAL"))),e<=au.error&&(X.error=console.error?console.error.bind(console,Eo("ERROR"),"color: orange"):console.log.bind(console,"\x1B[31m",Eo("ERROR"))),e<=au.warn&&(X.warn=console.warn?console.warn.bind(console,Eo("WARN"),"color: orange"):console.log.bind(console,"\x1B[33m",Eo("WARN"))),e<=au.info&&(X.info=console.info?console.info.bind(console,Eo("INFO"),"color: lightblue"):console.log.bind(console,"\x1B[34m",Eo("INFO"))),e<=au.debug&&(X.debug=console.debug?console.debug.bind(console,Eo("DEBUG"),"color: lightgreen"):console.log.bind(console,"\x1B[32m",Eo("DEBUG"))),e<=au.trace&&(X.trace=console.debug?console.debug.bind(console,Eo("TRACE"),"color: lightgreen"):console.log.bind(console,"\x1B[32m",Eo("TRACE")))},"setLogLevel"),Eo=o(t=>`%c${(0,oG.default)().format("ss.SSS")} : ${t} : `,"format")});var j4,lG,cG=N(()=>{"use strict";j4={min:{r:0,g:0,b:0,s:0,l:0,a:0},max:{r:255,g:255,b:255,h:360,s:100,l:100,a:1},clamp:{r:o(t=>t>=255?255:t<0?0:t,"r"),g:o(t=>t>=255?255:t<0?0:t,"g"),b:o(t=>t>=255?255:t<0?0:t,"b"),h:o(t=>t%360,"h"),s:o(t=>t>=100?100:t<0?0:t,"s"),l:o(t=>t>=100?100:t<0?0:t,"l"),a:o(t=>t>=1?1:t<0?0:t,"a")},toLinear:o(t=>{let e=t/255;return t>.03928?Math.pow((e+.055)/1.055,2.4):e/12.92},"toLinear"),hue2rgb:o((t,e,r)=>(r<0&&(r+=1),r>1&&(r-=1),r<.16666666666666666?t+(e-t)*6*r:r<.5?e:r<.6666666666666666?t+(e-t)*(.6666666666666666-r)*6:t),"hue2rgb"),hsl2rgb:o(({h:t,s:e,l:r},n)=>{if(!e)return r*2.55;t/=360,e/=100,r/=100;let i=r<.5?r*(1+e):r+e-r*e,a=2*r-i;switch(n){case"r":return j4.hue2rgb(a,i,t+.3333333333333333)*255;case"g":return j4.hue2rgb(a,i,t)*255;case"b":return j4.hue2rgb(a,i,t-.3333333333333333)*255}},"hsl2rgb"),rgb2hsl:o(({r:t,g:e,b:r},n)=>{t/=255,e/=255,r/=255;let i=Math.max(t,e,r),a=Math.min(t,e,r),s=(i+a)/2;if(n==="l")return s*100;if(i===a)return 0;let l=i-a,u=s>.5?l/(2-i-a):l/(i+a);if(n==="s")return u*100;switch(i){case t:return((e-r)/l+(e{"use strict";i5e={clamp:o((t,e,r)=>e>r?Math.min(e,Math.max(r,t)):Math.min(r,Math.max(e,t)),"clamp"),round:o(t=>Math.round(t*1e10)/1e10,"round")},uG=i5e});var a5e,fG,dG=N(()=>{"use strict";a5e={dec2hex:o(t=>{let e=Math.round(t).toString(16);return e.length>1?e:`0${e}`},"dec2hex")},fG=a5e});var s5e,Kt,Xl=N(()=>{"use strict";cG();hG();dG();s5e={channel:lG,lang:uG,unit:fG},Kt=s5e});var su,Ni,Ly=N(()=>{"use strict";Xl();su={};for(let t=0;t<=255;t++)su[t]=Kt.unit.dec2hex(t);Ni={ALL:0,RGB:1,HSL:2}});var f7,pG,mG=N(()=>{"use strict";Ly();f7=class{static{o(this,"Type")}constructor(){this.type=Ni.ALL}get(){return this.type}set(e){if(this.type&&this.type!==e)throw new Error("Cannot change both RGB and HSL channels at the same time");this.type=e}reset(){this.type=Ni.ALL}is(e){return this.type===e}},pG=f7});var d7,gG,yG=N(()=>{"use strict";Xl();mG();Ly();d7=class{static{o(this,"Channels")}constructor(e,r){this.color=r,this.changed=!1,this.data=e,this.type=new pG}set(e,r){return this.color=r,this.changed=!1,this.data=e,this.type.type=Ni.ALL,this}_ensureHSL(){let e=this.data,{h:r,s:n,l:i}=e;r===void 0&&(e.h=Kt.channel.rgb2hsl(e,"h")),n===void 0&&(e.s=Kt.channel.rgb2hsl(e,"s")),i===void 0&&(e.l=Kt.channel.rgb2hsl(e,"l"))}_ensureRGB(){let e=this.data,{r,g:n,b:i}=e;r===void 0&&(e.r=Kt.channel.hsl2rgb(e,"r")),n===void 0&&(e.g=Kt.channel.hsl2rgb(e,"g")),i===void 0&&(e.b=Kt.channel.hsl2rgb(e,"b"))}get r(){let e=this.data,r=e.r;return!this.type.is(Ni.HSL)&&r!==void 0?r:(this._ensureHSL(),Kt.channel.hsl2rgb(e,"r"))}get g(){let e=this.data,r=e.g;return!this.type.is(Ni.HSL)&&r!==void 0?r:(this._ensureHSL(),Kt.channel.hsl2rgb(e,"g"))}get b(){let e=this.data,r=e.b;return!this.type.is(Ni.HSL)&&r!==void 0?r:(this._ensureHSL(),Kt.channel.hsl2rgb(e,"b"))}get h(){let e=this.data,r=e.h;return!this.type.is(Ni.RGB)&&r!==void 0?r:(this._ensureRGB(),Kt.channel.rgb2hsl(e,"h"))}get s(){let e=this.data,r=e.s;return!this.type.is(Ni.RGB)&&r!==void 0?r:(this._ensureRGB(),Kt.channel.rgb2hsl(e,"s"))}get l(){let e=this.data,r=e.l;return!this.type.is(Ni.RGB)&&r!==void 0?r:(this._ensureRGB(),Kt.channel.rgb2hsl(e,"l"))}get a(){return this.data.a}set r(e){this.type.set(Ni.RGB),this.changed=!0,this.data.r=e}set g(e){this.type.set(Ni.RGB),this.changed=!0,this.data.g=e}set b(e){this.type.set(Ni.RGB),this.changed=!0,this.data.b=e}set h(e){this.type.set(Ni.HSL),this.changed=!0,this.data.h=e}set s(e){this.type.set(Ni.HSL),this.changed=!0,this.data.s=e}set l(e){this.type.set(Ni.HSL),this.changed=!0,this.data.l=e}set a(e){this.changed=!0,this.data.a=e}},gG=d7});var o5e,fh,Ry=N(()=>{"use strict";yG();o5e=new gG({r:0,g:0,b:0,a:0},"transparent"),fh=o5e});var vG,od,p7=N(()=>{"use strict";Ry();Ly();vG={re:/^#((?:[a-f0-9]{2}){2,4}|[a-f0-9]{3})$/i,parse:o(t=>{if(t.charCodeAt(0)!==35)return;let e=t.match(vG.re);if(!e)return;let r=e[1],n=parseInt(r,16),i=r.length,a=i%4===0,s=i>4,l=s?1:17,u=s?8:4,h=a?0:-1,f=s?255:15;return fh.set({r:(n>>u*(h+3)&f)*l,g:(n>>u*(h+2)&f)*l,b:(n>>u*(h+1)&f)*l,a:a?(n&f)*l/255:1},t)},"parse"),stringify:o(t=>{let{r:e,g:r,b:n,a:i}=t;return i<1?`#${su[Math.round(e)]}${su[Math.round(r)]}${su[Math.round(n)]}${su[Math.round(i*255)]}`:`#${su[Math.round(e)]}${su[Math.round(r)]}${su[Math.round(n)]}`},"stringify")},od=vG});var K4,Ny,xG=N(()=>{"use strict";Xl();Ry();K4={re:/^hsla?\(\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e-?\d+)?(?:deg|grad|rad|turn)?)\s*?(?:,|\s)\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e-?\d+)?%)\s*?(?:,|\s)\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e-?\d+)?%)(?:\s*?(?:,|\/)\s*?\+?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e-?\d+)?(%)?))?\s*?\)$/i,hueRe:/^(.+?)(deg|grad|rad|turn)$/i,_hue2deg:o(t=>{let e=t.match(K4.hueRe);if(e){let[,r,n]=e;switch(n){case"grad":return Kt.channel.clamp.h(parseFloat(r)*.9);case"rad":return Kt.channel.clamp.h(parseFloat(r)*180/Math.PI);case"turn":return Kt.channel.clamp.h(parseFloat(r)*360)}}return Kt.channel.clamp.h(parseFloat(t))},"_hue2deg"),parse:o(t=>{let e=t.charCodeAt(0);if(e!==104&&e!==72)return;let r=t.match(K4.re);if(!r)return;let[,n,i,a,s,l]=r;return fh.set({h:K4._hue2deg(n),s:Kt.channel.clamp.s(parseFloat(i)),l:Kt.channel.clamp.l(parseFloat(a)),a:s?Kt.channel.clamp.a(l?parseFloat(s)/100:parseFloat(s)):1},t)},"parse"),stringify:o(t=>{let{h:e,s:r,l:n,a:i}=t;return i<1?`hsla(${Kt.lang.round(e)}, ${Kt.lang.round(r)}%, ${Kt.lang.round(n)}%, ${i})`:`hsl(${Kt.lang.round(e)}, ${Kt.lang.round(r)}%, ${Kt.lang.round(n)}%)`},"stringify")},Ny=K4});var Q4,m7,bG=N(()=>{"use strict";p7();Q4={colors:{aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyanaqua:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",transparent:"#00000000",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"},parse:o(t=>{t=t.toLowerCase();let e=Q4.colors[t];if(e)return od.parse(e)},"parse"),stringify:o(t=>{let e=od.stringify(t);for(let r in Q4.colors)if(Q4.colors[r]===e)return r},"stringify")},m7=Q4});var TG,My,wG=N(()=>{"use strict";Xl();Ry();TG={re:/^rgba?\(\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e\d+)?(%?))\s*?(?:,|\s)\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e\d+)?(%?))\s*?(?:,|\s)\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e\d+)?(%?))(?:\s*?(?:,|\/)\s*?\+?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e\d+)?(%?)))?\s*?\)$/i,parse:o(t=>{let e=t.charCodeAt(0);if(e!==114&&e!==82)return;let r=t.match(TG.re);if(!r)return;let[,n,i,a,s,l,u,h,f]=r;return fh.set({r:Kt.channel.clamp.r(i?parseFloat(n)*2.55:parseFloat(n)),g:Kt.channel.clamp.g(s?parseFloat(a)*2.55:parseFloat(a)),b:Kt.channel.clamp.b(u?parseFloat(l)*2.55:parseFloat(l)),a:h?Kt.channel.clamp.a(f?parseFloat(h)/100:parseFloat(h)):1},t)},"parse"),stringify:o(t=>{let{r:e,g:r,b:n,a:i}=t;return i<1?`rgba(${Kt.lang.round(e)}, ${Kt.lang.round(r)}, ${Kt.lang.round(n)}, ${Kt.lang.round(i)})`:`rgb(${Kt.lang.round(e)}, ${Kt.lang.round(r)}, ${Kt.lang.round(n)})`},"stringify")},My=TG});var l5e,Mi,ou=N(()=>{"use strict";p7();xG();bG();wG();Ly();l5e={format:{keyword:m7,hex:od,rgb:My,rgba:My,hsl:Ny,hsla:Ny},parse:o(t=>{if(typeof t!="string")return t;let e=od.parse(t)||My.parse(t)||Ny.parse(t)||m7.parse(t);if(e)return e;throw new Error(`Unsupported color format: "${t}"`)},"parse"),stringify:o(t=>!t.changed&&t.color?t.color:t.type.is(Ni.HSL)||t.data.r===void 0?Ny.stringify(t):t.a<1||!Number.isInteger(t.r)||!Number.isInteger(t.g)||!Number.isInteger(t.b)?My.stringify(t):od.stringify(t),"stringify")},Mi=l5e});var c5e,Z4,g7=N(()=>{"use strict";Xl();ou();c5e=o((t,e)=>{let r=Mi.parse(t);for(let n in e)r[n]=Kt.channel.clamp[n](e[n]);return Mi.stringify(r)},"change"),Z4=c5e});var u5e,Ka,y7=N(()=>{"use strict";Xl();Ry();ou();g7();u5e=o((t,e,r=0,n=1)=>{if(typeof t!="number")return Z4(t,{a:e});let i=fh.set({r:Kt.channel.clamp.r(t),g:Kt.channel.clamp.g(e),b:Kt.channel.clamp.b(r),a:Kt.channel.clamp.a(n)});return Mi.stringify(i)},"rgba"),Ka=u5e});var h5e,ld,kG=N(()=>{"use strict";Xl();ou();h5e=o((t,e)=>Kt.lang.round(Mi.parse(t)[e]),"channel"),ld=h5e});var f5e,EG,SG=N(()=>{"use strict";Xl();ou();f5e=o(t=>{let{r:e,g:r,b:n}=Mi.parse(t),i=.2126*Kt.channel.toLinear(e)+.7152*Kt.channel.toLinear(r)+.0722*Kt.channel.toLinear(n);return Kt.lang.round(i)},"luminance"),EG=f5e});var d5e,CG,AG=N(()=>{"use strict";SG();d5e=o(t=>EG(t)>=.5,"isLight"),CG=d5e});var p5e,sa,_G=N(()=>{"use strict";AG();p5e=o(t=>!CG(t),"isDark"),sa=p5e});var m5e,J4,v7=N(()=>{"use strict";Xl();ou();m5e=o((t,e,r)=>{let n=Mi.parse(t),i=n[e],a=Kt.channel.clamp[e](i+r);return i!==a&&(n[e]=a),Mi.stringify(n)},"adjustChannel"),J4=m5e});var g5e,Rt,DG=N(()=>{"use strict";v7();g5e=o((t,e)=>J4(t,"l",e),"lighten"),Rt=g5e});var y5e,Pt,LG=N(()=>{"use strict";v7();y5e=o((t,e)=>J4(t,"l",-e),"darken"),Pt=y5e});var v5e,Pe,RG=N(()=>{"use strict";ou();g7();v5e=o((t,e)=>{let r=Mi.parse(t),n={};for(let i in e)e[i]&&(n[i]=r[i]+e[i]);return Z4(t,n)},"adjust"),Pe=v5e});var x5e,NG,MG=N(()=>{"use strict";ou();y7();x5e=o((t,e,r=50)=>{let{r:n,g:i,b:a,a:s}=Mi.parse(t),{r:l,g:u,b:h,a:f}=Mi.parse(e),d=r/100,p=d*2-1,m=s-f,y=((p*m===-1?p:(p+m)/(1+p*m))+1)/2,v=1-y,x=n*y+l*v,b=i*y+u*v,T=a*y+h*v,S=s*d+f*(1-d);return Ka(x,b,T,S)},"mix"),NG=x5e});var b5e,Et,IG=N(()=>{"use strict";ou();MG();b5e=o((t,e=100)=>{let r=Mi.parse(t);return r.r=255-r.r,r.g=255-r.g,r.b=255-r.b,NG(r,t,e)},"invert"),Et=b5e});var OG=N(()=>{"use strict";y7();kG();_G();DG();LG();RG();IG()});var eo=N(()=>{"use strict";OG()});var dh,ph,Iy=N(()=>{"use strict";dh="#ffffff",ph="#f2f2f2"});var wi,x0=N(()=>{"use strict";eo();wi=o((t,e)=>e?Pe(t,{s:-40,l:10}):Pe(t,{s:-40,l:-10}),"mkBorder")});var b7,PG,BG=N(()=>{"use strict";eo();Iy();x0();b7=class{static{o(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||Pe(this.primaryColor,{h:-120}),this.tertiaryColor=this.tertiaryColor||Pe(this.primaryColor,{h:180,l:5}),this.primaryBorderColor=this.primaryBorderColor||wi(this.primaryColor,this.darkMode),this.secondaryBorderColor=this.secondaryBorderColor||wi(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=this.tertiaryBorderColor||wi(this.tertiaryColor,this.darkMode),this.noteBorderColor=this.noteBorderColor||wi(this.noteBkgColor,this.darkMode),this.noteBkgColor=this.noteBkgColor||"#fff5ad",this.noteTextColor=this.noteTextColor||"#333",this.secondaryTextColor=this.secondaryTextColor||Et(this.secondaryColor),this.tertiaryTextColor=this.tertiaryTextColor||Et(this.tertiaryColor),this.lineColor=this.lineColor||Et(this.background),this.arrowheadColor=this.arrowheadColor||Et(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?Pt(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||Pt(this.secondaryColor,10),this.activationBkgColor=this.activationBkgColor||this.secondaryColor,this.sequenceNumberColor=this.sequenceNumberColor||Et(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||Rt(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.vertLineColor=this.vertLineColor||"navy",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.darkMode?(this.rowOdd=this.rowOdd||Pt(this.mainBkg,5)||"#ffffff",this.rowEven=this.rowEven||Pt(this.mainBkg,10)):(this.rowOdd=this.rowOdd||Rt(this.mainBkg,75)||"#ffffff",this.rowEven=this.rowEven||Rt(this.mainBkg,5)),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||Pe(this.primaryColor,{h:30}),this.cScale4=this.cScale4||Pe(this.primaryColor,{h:60}),this.cScale5=this.cScale5||Pe(this.primaryColor,{h:90}),this.cScale6=this.cScale6||Pe(this.primaryColor,{h:120}),this.cScale7=this.cScale7||Pe(this.primaryColor,{h:150}),this.cScale8=this.cScale8||Pe(this.primaryColor,{h:210,l:150}),this.cScale9=this.cScale9||Pe(this.primaryColor,{h:270}),this.cScale10=this.cScale10||Pe(this.primaryColor,{h:300}),this.cScale11=this.cScale11||Pe(this.primaryColor,{h:330}),this.darkMode)for(let r=0;r{this[n]=e[n]}),this.updateColors(),r.forEach(n=>{this[n]=e[n]})}},PG=o(t=>{let e=new b7;return e.calculate(t),e},"getThemeVariables")});var T7,FG,$G=N(()=>{"use strict";eo();x0();T7=class{static{o(this,"Theme")}constructor(){this.background="#333",this.primaryColor="#1f2020",this.secondaryColor=Rt(this.primaryColor,16),this.tertiaryColor=Pe(this.primaryColor,{h:-160}),this.primaryBorderColor=Et(this.background),this.secondaryBorderColor=wi(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=wi(this.tertiaryColor,this.darkMode),this.primaryTextColor=Et(this.primaryColor),this.secondaryTextColor=Et(this.secondaryColor),this.tertiaryTextColor=Et(this.tertiaryColor),this.lineColor=Et(this.background),this.textColor=Et(this.background),this.mainBkg="#1f2020",this.secondBkg="calculated",this.mainContrastColor="lightgrey",this.darkTextColor=Rt(Et("#323D47"),10),this.lineColor="calculated",this.border1="#ccc",this.border2=Ka(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=Pt("#EAE8D9",30),this.altSectionBkgColor="calculated",this.sectionBkgColor2="#EAE8D9",this.excludeBkgColor=Pt(this.sectionBkgColor,10),this.taskBorderColor=Ka(255,255,255,70),this.taskBkgColor="calculated",this.taskTextColor="calculated",this.taskTextLightColor="calculated",this.taskTextOutsideColor="calculated",this.taskTextClickableColor="#003163",this.activeTaskBorderColor=Ka(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.vertLineColor="#00BFFF",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.rowOdd=this.rowOdd||Rt(this.mainBkg,5)||"#ffffff",this.rowEven=this.rowEven||Pt(this.mainBkg,10),this.labelColor="calculated",this.errorBkgColor="#a44141",this.errorTextColor="#ddd"}updateColors(){this.secondBkg=Rt(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=Rt(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=Rt(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=Pe(this.primaryColor,{h:64}),this.fillType3=Pe(this.secondaryColor,{h:64}),this.fillType4=Pe(this.primaryColor,{h:-64}),this.fillType5=Pe(this.secondaryColor,{h:-64}),this.fillType6=Pe(this.primaryColor,{h:128}),this.fillType7=Pe(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||Pe(this.primaryColor,{h:30}),this.cScale4=this.cScale4||Pe(this.primaryColor,{h:60}),this.cScale5=this.cScale5||Pe(this.primaryColor,{h:90}),this.cScale6=this.cScale6||Pe(this.primaryColor,{h:120}),this.cScale7=this.cScale7||Pe(this.primaryColor,{h:150}),this.cScale8=this.cScale8||Pe(this.primaryColor,{h:210}),this.cScale9=this.cScale9||Pe(this.primaryColor,{h:270}),this.cScale10=this.cScale10||Pe(this.primaryColor,{h:300}),this.cScale11=this.cScale11||Pe(this.primaryColor,{h:330});for(let e=0;e{this[n]=e[n]}),this.updateColors(),r.forEach(n=>{this[n]=e[n]})}},FG=o(t=>{let e=new T7;return e.calculate(t),e},"getThemeVariables")});var w7,mh,Oy=N(()=>{"use strict";eo();x0();Iy();w7=class{static{o(this,"Theme")}constructor(){this.background="#f4f4f4",this.primaryColor="#ECECFF",this.secondaryColor=Pe(this.primaryColor,{h:120}),this.secondaryColor="#ffffde",this.tertiaryColor=Pe(this.primaryColor,{h:-160}),this.primaryBorderColor=wi(this.primaryColor,this.darkMode),this.secondaryBorderColor=wi(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=wi(this.tertiaryColor,this.darkMode),this.primaryTextColor=Et(this.primaryColor),this.secondaryTextColor=Et(this.secondaryColor),this.tertiaryTextColor=Et(this.tertiaryColor),this.lineColor=Et(this.background),this.textColor=Et(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.vertLineColor="calculated",this.sectionBkgColor=Ka(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.vertLineColor="navy",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.rowOdd="calculated",this.rowEven="calculated",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||Pe(this.primaryColor,{h:30}),this.cScale4=this.cScale4||Pe(this.primaryColor,{h:60}),this.cScale5=this.cScale5||Pe(this.primaryColor,{h:90}),this.cScale6=this.cScale6||Pe(this.primaryColor,{h:120}),this.cScale7=this.cScale7||Pe(this.primaryColor,{h:150}),this.cScale8=this.cScale8||Pe(this.primaryColor,{h:210}),this.cScale9=this.cScale9||Pe(this.primaryColor,{h:270}),this.cScale10=this.cScale10||Pe(this.primaryColor,{h:300}),this.cScale11=this.cScale11||Pe(this.primaryColor,{h:330}),this.cScalePeer1=this.cScalePeer1||Pt(this.secondaryColor,45),this.cScalePeer2=this.cScalePeer2||Pt(this.tertiaryColor,40);for(let e=0;e{this[n]==="calculated"&&(this[n]=void 0)}),typeof e!="object"){this.updateColors();return}let r=Object.keys(e);r.forEach(n=>{this[n]=e[n]}),this.updateColors(),r.forEach(n=>{this[n]=e[n]})}},mh=o(t=>{let e=new w7;return e.calculate(t),e},"getThemeVariables")});var k7,zG,GG=N(()=>{"use strict";eo();Iy();x0();k7=class{static{o(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=Rt("#cde498",10),this.primaryBorderColor=wi(this.primaryColor,this.darkMode),this.secondaryBorderColor=wi(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=wi(this.tertiaryColor,this.darkMode),this.primaryTextColor=Et(this.primaryColor),this.secondaryTextColor=Et(this.secondaryColor),this.tertiaryTextColor=Et(this.primaryColor),this.lineColor=Et(this.background),this.textColor=Et(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.vertLineColor="#00BFFF",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=Pt(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||Pe(this.primaryColor,{h:30}),this.cScale4=this.cScale4||Pe(this.primaryColor,{h:60}),this.cScale5=this.cScale5||Pe(this.primaryColor,{h:90}),this.cScale6=this.cScale6||Pe(this.primaryColor,{h:120}),this.cScale7=this.cScale7||Pe(this.primaryColor,{h:150}),this.cScale8=this.cScale8||Pe(this.primaryColor,{h:210}),this.cScale9=this.cScale9||Pe(this.primaryColor,{h:270}),this.cScale10=this.cScale10||Pe(this.primaryColor,{h:300}),this.cScale11=this.cScale11||Pe(this.primaryColor,{h:330}),this.cScalePeer1=this.cScalePeer1||Pt(this.secondaryColor,45),this.cScalePeer2=this.cScalePeer2||Pt(this.tertiaryColor,40);for(let e=0;e{this[n]=e[n]}),this.updateColors(),r.forEach(n=>{this[n]=e[n]})}},zG=o(t=>{let e=new k7;return e.calculate(t),e},"getThemeVariables")});var E7,VG,UG=N(()=>{"use strict";eo();x0();Iy();E7=class{static{o(this,"Theme")}constructor(){this.primaryColor="#eee",this.contrast="#707070",this.secondaryColor=Rt(this.contrast,55),this.background="#ffffff",this.tertiaryColor=Pe(this.primaryColor,{h:-160}),this.primaryBorderColor=wi(this.primaryColor,this.darkMode),this.secondaryBorderColor=wi(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=wi(this.tertiaryColor,this.darkMode),this.primaryTextColor=Et(this.primaryColor),this.secondaryTextColor=Et(this.secondaryColor),this.tertiaryTextColor=Et(this.tertiaryColor),this.lineColor=Et(this.background),this.textColor=Et(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.vertLineColor="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.rowOdd=this.rowOdd||Rt(this.mainBkg,75)||"#ffffff",this.rowEven=this.rowEven||"#f4f4f4",this.labelColor="black",this.errorBkgColor="#552222",this.errorTextColor="#552222"}updateColors(){this.secondBkg=Rt(this.contrast,55),this.border2=this.contrast,this.actorBorder=Rt(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 e=0;e{this[n]=e[n]}),this.updateColors(),r.forEach(n=>{this[n]=e[n]})}},VG=o(t=>{let e=new E7;return e.calculate(t),e},"getThemeVariables")});var So,e3=N(()=>{"use strict";BG();$G();Oy();GG();UG();So={base:{getThemeVariables:PG},dark:{getThemeVariables:FG},default:{getThemeVariables:mh},forest:{getThemeVariables:zG},neutral:{getThemeVariables:VG}}});var ul,HG=N(()=>{"use strict";ul={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,inheritDir:!1},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,maxLabelWidth:360,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"],titleColor:"",titleFontFamily:'"trebuchet ms", verdana, arial, sans-serif',titleFontSize:"4ex"},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,nodeSpacing:140,rankSpacing:80,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,showDataLabel:!1,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,layoutAlgorithm:"cose-bilkent"},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},radar:{useMaxWidth:!0,width:600,height:600,marginTop:50,marginRight:50,marginBottom:50,marginLeft:50,axisScaleFactor:1,axisLabelFactor:1.05,curveTension:.17},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}});var qG,WG,YG,ur,La=N(()=>{"use strict";e3();HG();qG={...ul,deterministicIDSeed:void 0,elk:{mergeEdges:!1,nodePlacementStrategy:"BRANDES_KOEPF",forceNodeModelOrder:!1,considerModelOrder:"NODES_AND_EDGES"},themeCSS:void 0,themeVariables:So.default.getThemeVariables(),sequence:{...ul.sequence,messageFont:o(function(){return{fontFamily:this.messageFontFamily,fontSize:this.messageFontSize,fontWeight:this.messageFontWeight}},"messageFont"),noteFont:o(function(){return{fontFamily:this.noteFontFamily,fontSize:this.noteFontSize,fontWeight:this.noteFontWeight}},"noteFont"),actorFont:o(function(){return{fontFamily:this.actorFontFamily,fontSize:this.actorFontSize,fontWeight:this.actorFontWeight}},"actorFont")},class:{hideEmptyMembersBox:!1},gantt:{...ul.gantt,tickInterval:void 0,useWidth:void 0},c4:{...ul.c4,useWidth:void 0,personFont:o(function(){return{fontFamily:this.personFontFamily,fontSize:this.personFontSize,fontWeight:this.personFontWeight}},"personFont"),flowchart:{...ul.flowchart,inheritDir:!1},external_personFont:o(function(){return{fontFamily:this.external_personFontFamily,fontSize:this.external_personFontSize,fontWeight:this.external_personFontWeight}},"external_personFont"),systemFont:o(function(){return{fontFamily:this.systemFontFamily,fontSize:this.systemFontSize,fontWeight:this.systemFontWeight}},"systemFont"),external_systemFont:o(function(){return{fontFamily:this.external_systemFontFamily,fontSize:this.external_systemFontSize,fontWeight:this.external_systemFontWeight}},"external_systemFont"),system_dbFont:o(function(){return{fontFamily:this.system_dbFontFamily,fontSize:this.system_dbFontSize,fontWeight:this.system_dbFontWeight}},"system_dbFont"),external_system_dbFont:o(function(){return{fontFamily:this.external_system_dbFontFamily,fontSize:this.external_system_dbFontSize,fontWeight:this.external_system_dbFontWeight}},"external_system_dbFont"),system_queueFont:o(function(){return{fontFamily:this.system_queueFontFamily,fontSize:this.system_queueFontSize,fontWeight:this.system_queueFontWeight}},"system_queueFont"),external_system_queueFont:o(function(){return{fontFamily:this.external_system_queueFontFamily,fontSize:this.external_system_queueFontSize,fontWeight:this.external_system_queueFontWeight}},"external_system_queueFont"),containerFont:o(function(){return{fontFamily:this.containerFontFamily,fontSize:this.containerFontSize,fontWeight:this.containerFontWeight}},"containerFont"),external_containerFont:o(function(){return{fontFamily:this.external_containerFontFamily,fontSize:this.external_containerFontSize,fontWeight:this.external_containerFontWeight}},"external_containerFont"),container_dbFont:o(function(){return{fontFamily:this.container_dbFontFamily,fontSize:this.container_dbFontSize,fontWeight:this.container_dbFontWeight}},"container_dbFont"),external_container_dbFont:o(function(){return{fontFamily:this.external_container_dbFontFamily,fontSize:this.external_container_dbFontSize,fontWeight:this.external_container_dbFontWeight}},"external_container_dbFont"),container_queueFont:o(function(){return{fontFamily:this.container_queueFontFamily,fontSize:this.container_queueFontSize,fontWeight:this.container_queueFontWeight}},"container_queueFont"),external_container_queueFont:o(function(){return{fontFamily:this.external_container_queueFontFamily,fontSize:this.external_container_queueFontSize,fontWeight:this.external_container_queueFontWeight}},"external_container_queueFont"),componentFont:o(function(){return{fontFamily:this.componentFontFamily,fontSize:this.componentFontSize,fontWeight:this.componentFontWeight}},"componentFont"),external_componentFont:o(function(){return{fontFamily:this.external_componentFontFamily,fontSize:this.external_componentFontSize,fontWeight:this.external_componentFontWeight}},"external_componentFont"),component_dbFont:o(function(){return{fontFamily:this.component_dbFontFamily,fontSize:this.component_dbFontSize,fontWeight:this.component_dbFontWeight}},"component_dbFont"),external_component_dbFont:o(function(){return{fontFamily:this.external_component_dbFontFamily,fontSize:this.external_component_dbFontSize,fontWeight:this.external_component_dbFontWeight}},"external_component_dbFont"),component_queueFont:o(function(){return{fontFamily:this.component_queueFontFamily,fontSize:this.component_queueFontSize,fontWeight:this.component_queueFontWeight}},"component_queueFont"),external_component_queueFont:o(function(){return{fontFamily:this.external_component_queueFontFamily,fontSize:this.external_component_queueFontSize,fontWeight:this.external_component_queueFontWeight}},"external_component_queueFont"),boundaryFont:o(function(){return{fontFamily:this.boundaryFontFamily,fontSize:this.boundaryFontSize,fontWeight:this.boundaryFontWeight}},"boundaryFont"),messageFont:o(function(){return{fontFamily:this.messageFontFamily,fontSize:this.messageFontSize,fontWeight:this.messageFontWeight}},"messageFont")},pie:{...ul.pie,useWidth:984},xyChart:{...ul.xyChart,useWidth:void 0},requirement:{...ul.requirement,useWidth:void 0},packet:{...ul.packet},radar:{...ul.radar},treemap:{useMaxWidth:!0,padding:10,diagramPadding:8,showValues:!0,nodeWidth:100,nodeHeight:40,borderWidth:1,valueFontSize:12,labelFontSize:14,valueFormat:","}},WG=o((t,e="")=>Object.keys(t).reduce((r,n)=>Array.isArray(t[n])?r:typeof t[n]=="object"&&t[n]!==null?[...r,e+n,...WG(t[n],"")]:[...r,e+n],[]),"keyify"),YG=new Set(WG(qG,"")),ur=qG});var b0,T5e,S7=N(()=>{"use strict";La();pt();b0=o(t=>{if(X.debug("sanitizeDirective called with",t),!(typeof t!="object"||t==null)){if(Array.isArray(t)){t.forEach(e=>b0(e));return}for(let e of Object.keys(t)){if(X.debug("Checking key",e),e.startsWith("__")||e.includes("proto")||e.includes("constr")||!YG.has(e)||t[e]==null){X.debug("sanitize deleting key: ",e),delete t[e];continue}if(typeof t[e]=="object"){X.debug("sanitizing object",e),b0(t[e]);continue}let r=["themeCSS","fontFamily","altFontFamily"];for(let n of r)e.includes(n)&&(X.debug("sanitizing css option",e),t[e]=T5e(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]="")}X.debug("After sanitization",t)}},"sanitizeDirective"),T5e=o(t=>{let e=0,r=0;for(let n of t){if(e{"use strict";v0();pt();e3();La();S7();gh=Object.freeze(ur),Es=Rn({},gh),cd=[],Py=Rn({},gh),r3=o((t,e)=>{let r=Rn({},t),n={};for(let i of e)QG(i),n=Rn(n,i);if(r=Rn(r,n),n.theme&&n.theme in So){let i=Rn({},t3),a=Rn(i.themeVariables||{},n.themeVariables);r.theme&&r.theme in So&&(r.themeVariables=So[r.theme].getThemeVariables(a))}return Py=r,JG(Py),Py},"updateCurrentConfig"),C7=o(t=>(Es=Rn({},gh),Es=Rn(Es,t),t.theme&&So[t.theme]&&(Es.themeVariables=So[t.theme].getThemeVariables(t.themeVariables)),r3(Es,cd),Es),"setSiteConfig"),jG=o(t=>{t3=Rn({},t)},"saveConfigFromInitialize"),KG=o(t=>(Es=Rn(Es,t),r3(Es,cd),Es),"updateSiteConfig"),A7=o(()=>Rn({},Es),"getSiteConfig"),n3=o(t=>(JG(t),Rn(Py,t),Qt()),"setConfig"),Qt=o(()=>Rn({},Py),"getConfig"),QG=o(t=>{t&&(["secure",...Es.secure??[]].forEach(e=>{Object.hasOwn(t,e)&&(X.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"&&QG(t[e])}))},"sanitize"),ZG=o(t=>{b0(t),t.fontFamily&&!t.themeVariables?.fontFamily&&(t.themeVariables={...t.themeVariables,fontFamily:t.fontFamily}),cd.push(t),r3(Es,cd)},"addDirective"),By=o((t=Es)=>{cd=[],r3(t,cd)},"reset"),w5e={LAZY_LOAD_DEPRECATED:"The configuration options lazyLoadedDiagrams and loadExternalDiagramsAtStartup are deprecated. Please use registerExternalDiagrams instead."},XG={},k5e=o(t=>{XG[t]||(X.warn(w5e[t]),XG[t]=!0)},"issueWarning"),JG=o(t=>{t&&(t.lazyLoadedDiagrams||t.loadExternalDiagramsAtStartup)&&k5e("LAZY_LOAD_DEPRECATED")},"checkConfig"),eV=o(()=>{let t={};t3&&(t=Rn(t,t3));for(let e of cd)t=Rn(t,e);return t},"getUserDefinedConfig")});function Ja(t){return function(e){e instanceof RegExp&&(e.lastIndex=0);for(var r=arguments.length,n=new Array(r>1?r-1:0),i=1;i2&&arguments[2]!==void 0?arguments[2]:s3;tV&&tV(t,null);let n=e.length;for(;n--;){let i=e[n];if(typeof i=="string"){let a=r(i);a!==i&&(E5e(e)||(e[n]=a),i=a)}t[i]=!0}return t}function N5e(t){for(let e=0;e0&&arguments[0]!==void 0?arguments[0]:U5e(),e=o(Ct=>pV(Ct),"DOMPurify");if(e.version="3.2.6",e.removed=[],!t||!t.document||t.document.nodeType!==Vy.document||!t.Element)return e.isSupported=!1,e;let{document:r}=t,n=r,i=n.currentScript,{DocumentFragment:a,HTMLTemplateElement:s,Node:l,Element:u,NodeFilter:h,NamedNodeMap:f=t.NamedNodeMap||t.MozNamedAttrMap,HTMLFormElement:d,DOMParser:p,trustedTypes:m}=t,g=u.prototype,y=Gy(g,"cloneNode"),v=Gy(g,"remove"),x=Gy(g,"nextSibling"),b=Gy(g,"childNodes"),T=Gy(g,"parentNode");if(typeof s=="function"){let Ct=r.createElement("template");Ct.content&&Ct.content.ownerDocument&&(r=Ct.content.ownerDocument)}let S,w="",{implementation:k,createNodeIterator:A,createDocumentFragment:C,getElementsByTagName:R}=r,{importNode:I}=n,L=cV();e.isSupported=typeof uV=="function"&&typeof T=="function"&&k&&k.createHTMLDocument!==void 0;let{MUSTACHE_EXPR:E,ERB_EXPR:D,TMPLIT_EXPR:_,DATA_ATTR:O,ARIA_ATTR:M,IS_SCRIPT_OR_DATA:P,ATTR_WHITESPACE:B,CUSTOM_ELEMENT:F}=lV,{IS_ALLOWED_URI:G}=lV,$=null,U=Nr({},[...iV,...D7,...L7,...R7,...aV]),j=null,te=Nr({},[...sV,...N7,...oV,...a3]),Y=Object.seal(hV(null,{tagNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},allowCustomizedBuiltInElements:{writable:!0,configurable:!1,enumerable:!0,value:!1}})),oe=null,J=null,ue=!0,re=!0,ee=!1,Z=!0,K=!1,ae=!0,Q=!1,de=!1,ne=!1,Te=!1,q=!1,Ve=!1,pe=!0,Be=!1,Ye="user-content-",He=!0,Le=!1,Ie={},Ne=null,Ce=Nr({},["annotation-xml","audio","colgroup","desc","foreignobject","head","iframe","math","mi","mn","mo","ms","mtext","noembed","noframes","noscript","plaintext","script","style","svg","template","thead","title","video","xmp"]),Fe=null,fe=Nr({},["audio","video","img","source","image","track"]),xe=null,W=Nr({},["alt","class","for","id","label","name","pattern","placeholder","role","summary","title","value","style","xmlns"]),he="http://www.w3.org/1998/Math/MathML",z="http://www.w3.org/2000/svg",se="http://www.w3.org/1999/xhtml",le=se,ke=!1,ve=null,ye=Nr({},[he,z,se],_7),Re=Nr({},["mi","mo","mn","ms","mtext"]),_e=Nr({},["annotation-xml"]),ze=Nr({},["title","style","font","a","script"]),Ke=null,xt=["application/xhtml+xml","text/html"],We="text/html",Oe=null,et=null,Ue=r.createElement("form"),lt=o(function(Se){return Se instanceof RegExp||Se instanceof Function},"isRegexOrFunction"),Gt=o(function(){let Se=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};if(!(et&&et===Se)){if((!Se||typeof Se!="object")&&(Se={}),Se=lu(Se),Ke=xt.indexOf(Se.PARSER_MEDIA_TYPE)===-1?We:Se.PARSER_MEDIA_TYPE,Oe=Ke==="application/xhtml+xml"?_7:s3,$=hl(Se,"ALLOWED_TAGS")?Nr({},Se.ALLOWED_TAGS,Oe):U,j=hl(Se,"ALLOWED_ATTR")?Nr({},Se.ALLOWED_ATTR,Oe):te,ve=hl(Se,"ALLOWED_NAMESPACES")?Nr({},Se.ALLOWED_NAMESPACES,_7):ye,xe=hl(Se,"ADD_URI_SAFE_ATTR")?Nr(lu(W),Se.ADD_URI_SAFE_ATTR,Oe):W,Fe=hl(Se,"ADD_DATA_URI_TAGS")?Nr(lu(fe),Se.ADD_DATA_URI_TAGS,Oe):fe,Ne=hl(Se,"FORBID_CONTENTS")?Nr({},Se.FORBID_CONTENTS,Oe):Ce,oe=hl(Se,"FORBID_TAGS")?Nr({},Se.FORBID_TAGS,Oe):lu({}),J=hl(Se,"FORBID_ATTR")?Nr({},Se.FORBID_ATTR,Oe):lu({}),Ie=hl(Se,"USE_PROFILES")?Se.USE_PROFILES:!1,ue=Se.ALLOW_ARIA_ATTR!==!1,re=Se.ALLOW_DATA_ATTR!==!1,ee=Se.ALLOW_UNKNOWN_PROTOCOLS||!1,Z=Se.ALLOW_SELF_CLOSE_IN_ATTR!==!1,K=Se.SAFE_FOR_TEMPLATES||!1,ae=Se.SAFE_FOR_XML!==!1,Q=Se.WHOLE_DOCUMENT||!1,Te=Se.RETURN_DOM||!1,q=Se.RETURN_DOM_FRAGMENT||!1,Ve=Se.RETURN_TRUSTED_TYPE||!1,ne=Se.FORCE_BODY||!1,pe=Se.SANITIZE_DOM!==!1,Be=Se.SANITIZE_NAMED_PROPS||!1,He=Se.KEEP_CONTENT!==!1,Le=Se.IN_PLACE||!1,G=Se.ALLOWED_URI_REGEXP||fV,le=Se.NAMESPACE||se,Re=Se.MATHML_TEXT_INTEGRATION_POINTS||Re,_e=Se.HTML_INTEGRATION_POINTS||_e,Y=Se.CUSTOM_ELEMENT_HANDLING||{},Se.CUSTOM_ELEMENT_HANDLING&<(Se.CUSTOM_ELEMENT_HANDLING.tagNameCheck)&&(Y.tagNameCheck=Se.CUSTOM_ELEMENT_HANDLING.tagNameCheck),Se.CUSTOM_ELEMENT_HANDLING&<(Se.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)&&(Y.attributeNameCheck=Se.CUSTOM_ELEMENT_HANDLING.attributeNameCheck),Se.CUSTOM_ELEMENT_HANDLING&&typeof Se.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements=="boolean"&&(Y.allowCustomizedBuiltInElements=Se.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements),K&&(re=!1),q&&(Te=!0),Ie&&($=Nr({},aV),j=[],Ie.html===!0&&(Nr($,iV),Nr(j,sV)),Ie.svg===!0&&(Nr($,D7),Nr(j,N7),Nr(j,a3)),Ie.svgFilters===!0&&(Nr($,L7),Nr(j,N7),Nr(j,a3)),Ie.mathMl===!0&&(Nr($,R7),Nr(j,oV),Nr(j,a3))),Se.ADD_TAGS&&($===U&&($=lu($)),Nr($,Se.ADD_TAGS,Oe)),Se.ADD_ATTR&&(j===te&&(j=lu(j)),Nr(j,Se.ADD_ATTR,Oe)),Se.ADD_URI_SAFE_ATTR&&Nr(xe,Se.ADD_URI_SAFE_ATTR,Oe),Se.FORBID_CONTENTS&&(Ne===Ce&&(Ne=lu(Ne)),Nr(Ne,Se.FORBID_CONTENTS,Oe)),He&&($["#text"]=!0),Q&&Nr($,["html","head","body"]),$.table&&(Nr($,["tbody"]),delete oe.tbody),Se.TRUSTED_TYPES_POLICY){if(typeof Se.TRUSTED_TYPES_POLICY.createHTML!="function")throw zy('TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.');if(typeof Se.TRUSTED_TYPES_POLICY.createScriptURL!="function")throw zy('TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.');S=Se.TRUSTED_TYPES_POLICY,w=S.createHTML("")}else S===void 0&&(S=H5e(m,i)),S!==null&&typeof w=="string"&&(w=S.createHTML(""));Za&&Za(Se),et=Se}},"_parseConfig"),vt=Nr({},[...D7,...L7,...M5e]),Lt=Nr({},[...R7,...I5e]),dt=o(function(Se){let at=T(Se);(!at||!at.tagName)&&(at={namespaceURI:le,tagName:"template"});let Nt=s3(Se.tagName),wr=s3(at.tagName);return ve[Se.namespaceURI]?Se.namespaceURI===z?at.namespaceURI===se?Nt==="svg":at.namespaceURI===he?Nt==="svg"&&(wr==="annotation-xml"||Re[wr]):!!vt[Nt]:Se.namespaceURI===he?at.namespaceURI===se?Nt==="math":at.namespaceURI===z?Nt==="math"&&_e[wr]:!!Lt[Nt]:Se.namespaceURI===se?at.namespaceURI===z&&!_e[wr]||at.namespaceURI===he&&!Re[wr]?!1:!Lt[Nt]&&(ze[Nt]||!vt[Nt]):!!(Ke==="application/xhtml+xml"&&ve[Se.namespaceURI]):!1},"_checkValidNamespace"),nt=o(function(Se){Fy(e.removed,{element:Se});try{T(Se).removeChild(Se)}catch{v(Se)}},"_forceRemove"),bt=o(function(Se,at){try{Fy(e.removed,{attribute:at.getAttributeNode(Se),from:at})}catch{Fy(e.removed,{attribute:null,from:at})}if(at.removeAttribute(Se),Se==="is")if(Te||q)try{nt(at)}catch{}else try{at.setAttribute(Se,"")}catch{}},"_removeAttribute"),wt=o(function(Se){let at=null,Nt=null;if(ne)Se=""+Se;else{let yn=nV(Se,/^[\r\n\t ]+/);Nt=yn&&yn[0]}Ke==="application/xhtml+xml"&&le===se&&(Se=''+Se+"");let wr=S?S.createHTML(Se):Se;if(le===se)try{at=new p().parseFromString(wr,Ke)}catch{}if(!at||!at.documentElement){at=k.createDocument(le,"template",null);try{at.documentElement.innerHTML=ke?w:wr}catch{}}let Tn=at.body||at.documentElement;return Se&&Nt&&Tn.insertBefore(r.createTextNode(Nt),Tn.childNodes[0]||null),le===se?R.call(at,Q?"html":"body")[0]:Q?at.documentElement:Tn},"_initDocument"),yt=o(function(Se){return A.call(Se.ownerDocument||Se,Se,h.SHOW_ELEMENT|h.SHOW_COMMENT|h.SHOW_TEXT|h.SHOW_PROCESSING_INSTRUCTION|h.SHOW_CDATA_SECTION,null)},"_createNodeIterator"),ft=o(function(Se){return Se instanceof d&&(typeof Se.nodeName!="string"||typeof Se.textContent!="string"||typeof Se.removeChild!="function"||!(Se.attributes instanceof f)||typeof Se.removeAttribute!="function"||typeof Se.setAttribute!="function"||typeof Se.namespaceURI!="string"||typeof Se.insertBefore!="function"||typeof Se.hasChildNodes!="function")},"_isClobbered"),Ur=o(function(Se){return typeof l=="function"&&Se instanceof l},"_isNode");function _t(Ct,Se,at){i3(Ct,Nt=>{Nt.call(e,Se,at,et)})}o(_t,"_executeHooks");let bn=o(function(Se){let at=null;if(_t(L.beforeSanitizeElements,Se,null),ft(Se))return nt(Se),!0;let Nt=Oe(Se.nodeName);if(_t(L.uponSanitizeElement,Se,{tagName:Nt,allowedTags:$}),ae&&Se.hasChildNodes()&&!Ur(Se.firstElementChild)&&Qa(/<[/\w!]/g,Se.innerHTML)&&Qa(/<[/\w!]/g,Se.textContent)||Se.nodeType===Vy.progressingInstruction||ae&&Se.nodeType===Vy.comment&&Qa(/<[/\w]/g,Se.data))return nt(Se),!0;if(!$[Nt]||oe[Nt]){if(!oe[Nt]&&cr(Nt)&&(Y.tagNameCheck instanceof RegExp&&Qa(Y.tagNameCheck,Nt)||Y.tagNameCheck instanceof Function&&Y.tagNameCheck(Nt)))return!1;if(He&&!Ne[Nt]){let wr=T(Se)||Se.parentNode,Tn=b(Se)||Se.childNodes;if(Tn&&wr){let yn=Tn.length;for(let sn=yn-1;sn>=0;--sn){let Hi=y(Tn[sn],!0);Hi.__removalCount=(Se.__removalCount||0)+1,wr.insertBefore(Hi,x(Se))}}}return nt(Se),!0}return Se instanceof u&&!dt(Se)||(Nt==="noscript"||Nt==="noembed"||Nt==="noframes")&&Qa(/<\/no(script|embed|frames)/i,Se.innerHTML)?(nt(Se),!0):(K&&Se.nodeType===Vy.text&&(at=Se.textContent,i3([E,D,_],wr=>{at=$y(at,wr," ")}),Se.textContent!==at&&(Fy(e.removed,{element:Se.cloneNode()}),Se.textContent=at)),_t(L.afterSanitizeElements,Se,null),!1)},"_sanitizeElements"),Br=o(function(Se,at,Nt){if(pe&&(at==="id"||at==="name")&&(Nt in r||Nt in Ue))return!1;if(!(re&&!J[at]&&Qa(O,at))){if(!(ue&&Qa(M,at))){if(!j[at]||J[at]){if(!(cr(Se)&&(Y.tagNameCheck instanceof RegExp&&Qa(Y.tagNameCheck,Se)||Y.tagNameCheck instanceof Function&&Y.tagNameCheck(Se))&&(Y.attributeNameCheck instanceof RegExp&&Qa(Y.attributeNameCheck,at)||Y.attributeNameCheck instanceof Function&&Y.attributeNameCheck(at))||at==="is"&&Y.allowCustomizedBuiltInElements&&(Y.tagNameCheck instanceof RegExp&&Qa(Y.tagNameCheck,Nt)||Y.tagNameCheck instanceof Function&&Y.tagNameCheck(Nt))))return!1}else if(!xe[at]){if(!Qa(G,$y(Nt,B,""))){if(!((at==="src"||at==="xlink:href"||at==="href")&&Se!=="script"&&D5e(Nt,"data:")===0&&Fe[Se])){if(!(ee&&!Qa(P,$y(Nt,B,"")))){if(Nt)return!1}}}}}}return!0},"_isValidAttribute"),cr=o(function(Se){return Se!=="annotation-xml"&&nV(Se,F)},"_isBasicCustomElement"),ar=o(function(Se){_t(L.beforeSanitizeAttributes,Se,null);let{attributes:at}=Se;if(!at||ft(Se))return;let Nt={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:j,forceKeepAttr:void 0},wr=at.length;for(;wr--;){let Tn=at[wr],{name:yn,namespaceURI:sn,value:Hi}=Tn,Zs=Oe(yn),_a=Hi,fr=yn==="value"?_a:L5e(_a);if(Nt.attrName=Zs,Nt.attrValue=fr,Nt.keepAttr=!0,Nt.forceKeepAttr=void 0,_t(L.uponSanitizeAttribute,Se,Nt),fr=Nt.attrValue,Be&&(Zs==="id"||Zs==="name")&&(bt(yn,Se),fr=Ye+fr),ae&&Qa(/((--!?|])>)|<\/(style|title)/i,fr)){bt(yn,Se);continue}if(Nt.forceKeepAttr)continue;if(!Nt.keepAttr){bt(yn,Se);continue}if(!Z&&Qa(/\/>/i,fr)){bt(yn,Se);continue}K&&i3([E,D,_],kt=>{fr=$y(fr,kt," ")});let it=Oe(Se.nodeName);if(!Br(it,Zs,fr)){bt(yn,Se);continue}if(S&&typeof m=="object"&&typeof m.getAttributeType=="function"&&!sn)switch(m.getAttributeType(it,Zs)){case"TrustedHTML":{fr=S.createHTML(fr);break}case"TrustedScriptURL":{fr=S.createScriptURL(fr);break}}if(fr!==_a)try{sn?Se.setAttributeNS(sn,yn,fr):Se.setAttribute(yn,fr),ft(Se)?nt(Se):rV(e.removed)}catch{bt(yn,Se)}}_t(L.afterSanitizeAttributes,Se,null)},"_sanitizeAttributes"),_r=o(function Ct(Se){let at=null,Nt=yt(Se);for(_t(L.beforeSanitizeShadowDOM,Se,null);at=Nt.nextNode();)_t(L.uponSanitizeShadowNode,at,null),bn(at),ar(at),at.content instanceof a&&Ct(at.content);_t(L.afterSanitizeShadowDOM,Se,null)},"_sanitizeShadowDOM");return e.sanitize=function(Ct){let Se=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},at=null,Nt=null,wr=null,Tn=null;if(ke=!Ct,ke&&(Ct=""),typeof Ct!="string"&&!Ur(Ct))if(typeof Ct.toString=="function"){if(Ct=Ct.toString(),typeof Ct!="string")throw zy("dirty is not a string, aborting")}else throw zy("toString is not a function");if(!e.isSupported)return Ct;if(de||Gt(Se),e.removed=[],typeof Ct=="string"&&(Le=!1),Le){if(Ct.nodeName){let Hi=Oe(Ct.nodeName);if(!$[Hi]||oe[Hi])throw zy("root node is forbidden and cannot be sanitized in-place")}}else if(Ct instanceof l)at=wt(""),Nt=at.ownerDocument.importNode(Ct,!0),Nt.nodeType===Vy.element&&Nt.nodeName==="BODY"||Nt.nodeName==="HTML"?at=Nt:at.appendChild(Nt);else{if(!Te&&!K&&!Q&&Ct.indexOf("<")===-1)return S&&Ve?S.createHTML(Ct):Ct;if(at=wt(Ct),!at)return Te?null:Ve?w:""}at&&ne&&nt(at.firstChild);let yn=yt(Le?Ct:at);for(;wr=yn.nextNode();)bn(wr),ar(wr),wr.content instanceof a&&_r(wr.content);if(Le)return Ct;if(Te){if(q)for(Tn=C.call(at.ownerDocument);at.firstChild;)Tn.appendChild(at.firstChild);else Tn=at;return(j.shadowroot||j.shadowrootmode)&&(Tn=I.call(n,Tn,!0)),Tn}let sn=Q?at.outerHTML:at.innerHTML;return Q&&$["!doctype"]&&at.ownerDocument&&at.ownerDocument.doctype&&at.ownerDocument.doctype.name&&Qa(dV,at.ownerDocument.doctype.name)&&(sn=" -`+sn),K&&i3([E,D,_],Hi=>{sn=$y(sn,Hi," ")}),S&&Ve?S.createHTML(sn):sn},e.setConfig=function(){let Ct=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};Gt(Ct),de=!0},e.clearConfig=function(){et=null,de=!1},e.isValidAttribute=function(Ct,Se,at){et||Gt({});let Nt=Oe(Ct),wr=Oe(Se);return Br(Nt,wr,at)},e.addHook=function(Ct,Se){typeof Se=="function"&&Fy(L[Ct],Se)},e.removeHook=function(Ct,Se){if(Se!==void 0){let at=A5e(L[Ct],Se);return at===-1?void 0:_5e(L[Ct],at,1)[0]}return rV(L[Ct])},e.removeHooks=function(Ct){L[Ct]=[]},e.removeAllHooks=function(){L=cV()},e}var uV,tV,E5e,S5e,C5e,Za,Co,hV,M7,I7,i3,A5e,rV,Fy,_5e,s3,_7,nV,$y,D5e,L5e,hl,Qa,zy,iV,D7,L7,M5e,R7,I5e,aV,sV,N7,oV,a3,O5e,P5e,B5e,F5e,$5e,fV,z5e,G5e,dV,V5e,lV,Vy,U5e,H5e,cV,yh,O7=N(()=>{"use strict";({entries:uV,setPrototypeOf:tV,isFrozen:E5e,getPrototypeOf:S5e,getOwnPropertyDescriptor:C5e}=Object),{freeze:Za,seal:Co,create:hV}=Object,{apply:M7,construct:I7}=typeof Reflect<"u"&&Reflect;Za||(Za=o(function(e){return e},"freeze"));Co||(Co=o(function(e){return e},"seal"));M7||(M7=o(function(e,r,n){return e.apply(r,n)},"apply"));I7||(I7=o(function(e,r){return new e(...r)},"construct"));i3=Ja(Array.prototype.forEach),A5e=Ja(Array.prototype.lastIndexOf),rV=Ja(Array.prototype.pop),Fy=Ja(Array.prototype.push),_5e=Ja(Array.prototype.splice),s3=Ja(String.prototype.toLowerCase),_7=Ja(String.prototype.toString),nV=Ja(String.prototype.match),$y=Ja(String.prototype.replace),D5e=Ja(String.prototype.indexOf),L5e=Ja(String.prototype.trim),hl=Ja(Object.prototype.hasOwnProperty),Qa=Ja(RegExp.prototype.test),zy=R5e(TypeError);o(Ja,"unapply");o(R5e,"unconstruct");o(Nr,"addToSet");o(N5e,"cleanArray");o(lu,"clone");o(Gy,"lookupGetter");iV=Za(["a","abbr","acronym","address","area","article","aside","audio","b","bdi","bdo","big","blink","blockquote","body","br","button","canvas","caption","center","cite","code","col","colgroup","content","data","datalist","dd","decorator","del","details","dfn","dialog","dir","div","dl","dt","element","em","fieldset","figcaption","figure","font","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","img","input","ins","kbd","label","legend","li","main","map","mark","marquee","menu","menuitem","meter","nav","nobr","ol","optgroup","option","output","p","picture","pre","progress","q","rp","rt","ruby","s","samp","section","select","shadow","small","source","spacer","span","strike","strong","style","sub","summary","sup","table","tbody","td","template","textarea","tfoot","th","thead","time","tr","track","tt","u","ul","var","video","wbr"]),D7=Za(["svg","a","altglyph","altglyphdef","altglyphitem","animatecolor","animatemotion","animatetransform","circle","clippath","defs","desc","ellipse","filter","font","g","glyph","glyphref","hkern","image","line","lineargradient","marker","mask","metadata","mpath","path","pattern","polygon","polyline","radialgradient","rect","stop","style","switch","symbol","text","textpath","title","tref","tspan","view","vkern"]),L7=Za(["feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feDropShadow","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feImage","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence"]),M5e=Za(["animate","color-profile","cursor","discard","font-face","font-face-format","font-face-name","font-face-src","font-face-uri","foreignobject","hatch","hatchpath","mesh","meshgradient","meshpatch","meshrow","missing-glyph","script","set","solidcolor","unknown","use"]),R7=Za(["math","menclose","merror","mfenced","mfrac","mglyph","mi","mlabeledtr","mmultiscripts","mn","mo","mover","mpadded","mphantom","mroot","mrow","ms","mspace","msqrt","mstyle","msub","msup","msubsup","mtable","mtd","mtext","mtr","munder","munderover","mprescripts"]),I5e=Za(["maction","maligngroup","malignmark","mlongdiv","mscarries","mscarry","msgroup","mstack","msline","msrow","semantics","annotation","annotation-xml","mprescripts","none"]),aV=Za(["#text"]),sV=Za(["accept","action","align","alt","autocapitalize","autocomplete","autopictureinpicture","autoplay","background","bgcolor","border","capture","cellpadding","cellspacing","checked","cite","class","clear","color","cols","colspan","controls","controlslist","coords","crossorigin","datetime","decoding","default","dir","disabled","disablepictureinpicture","disableremoteplayback","download","draggable","enctype","enterkeyhint","face","for","headers","height","hidden","high","href","hreflang","id","inputmode","integrity","ismap","kind","label","lang","list","loading","loop","low","max","maxlength","media","method","min","minlength","multiple","muted","name","nonce","noshade","novalidate","nowrap","open","optimum","pattern","placeholder","playsinline","popover","popovertarget","popovertargetaction","poster","preload","pubdate","radiogroup","readonly","rel","required","rev","reversed","role","rows","rowspan","spellcheck","scope","selected","shape","size","sizes","span","srclang","start","src","srcset","step","style","summary","tabindex","title","translate","type","usemap","valign","value","width","wrap","xmlns","slot"]),N7=Za(["accent-height","accumulate","additive","alignment-baseline","amplitude","ascent","attributename","attributetype","azimuth","basefrequency","baseline-shift","begin","bias","by","class","clip","clippathunits","clip-path","clip-rule","color","color-interpolation","color-interpolation-filters","color-profile","color-rendering","cx","cy","d","dx","dy","diffuseconstant","direction","display","divisor","dur","edgemode","elevation","end","exponent","fill","fill-opacity","fill-rule","filter","filterunits","flood-color","flood-opacity","font-family","font-size","font-size-adjust","font-stretch","font-style","font-variant","font-weight","fx","fy","g1","g2","glyph-name","glyphref","gradientunits","gradienttransform","height","href","id","image-rendering","in","in2","intercept","k","k1","k2","k3","k4","kerning","keypoints","keysplines","keytimes","lang","lengthadjust","letter-spacing","kernelmatrix","kernelunitlength","lighting-color","local","marker-end","marker-mid","marker-start","markerheight","markerunits","markerwidth","maskcontentunits","maskunits","max","mask","media","method","mode","min","name","numoctaves","offset","operator","opacity","order","orient","orientation","origin","overflow","paint-order","path","pathlength","patterncontentunits","patterntransform","patternunits","points","preservealpha","preserveaspectratio","primitiveunits","r","rx","ry","radius","refx","refy","repeatcount","repeatdur","restart","result","rotate","scale","seed","shape-rendering","slope","specularconstant","specularexponent","spreadmethod","startoffset","stddeviation","stitchtiles","stop-color","stop-opacity","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke","stroke-width","style","surfacescale","systemlanguage","tabindex","tablevalues","targetx","targety","transform","transform-origin","text-anchor","text-decoration","text-rendering","textlength","type","u1","u2","unicode","values","viewbox","visibility","version","vert-adv-y","vert-origin-x","vert-origin-y","width","word-spacing","wrap","writing-mode","xchannelselector","ychannelselector","x","x1","x2","xmlns","y","y1","y2","z","zoomandpan"]),oV=Za(["accent","accentunder","align","bevelled","close","columnsalign","columnlines","columnspan","denomalign","depth","dir","display","displaystyle","encoding","fence","frame","height","href","id","largeop","length","linethickness","lspace","lquote","mathbackground","mathcolor","mathsize","mathvariant","maxsize","minsize","movablelimits","notation","numalign","open","rowalign","rowlines","rowspacing","rowspan","rspace","rquote","scriptlevel","scriptminsize","scriptsizemultiplier","selection","separator","separators","stretchy","subscriptshift","supscriptshift","symmetric","voffset","width","xmlns"]),a3=Za(["xlink:href","xml:id","xlink:title","xml:space","xmlns:xlink"]),O5e=Co(/\{\{[\w\W]*|[\w\W]*\}\}/gm),P5e=Co(/<%[\w\W]*|[\w\W]*%>/gm),B5e=Co(/\$\{[\w\W]*/gm),F5e=Co(/^data-[\-\w.\u00B7-\uFFFF]+$/),$5e=Co(/^aria-[\-\w]+$/),fV=Co(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp|matrix):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),z5e=Co(/^(?:\w+script|data):/i),G5e=Co(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),dV=Co(/^html$/i),V5e=Co(/^[a-z][.\w]*(-[.\w]+)+$/i),lV=Object.freeze({__proto__:null,ARIA_ATTR:$5e,ATTR_WHITESPACE:G5e,CUSTOM_ELEMENT:V5e,DATA_ATTR:F5e,DOCTYPE_NAME:dV,ERB_EXPR:P5e,IS_ALLOWED_URI:fV,IS_SCRIPT_OR_DATA:z5e,MUSTACHE_EXPR:O5e,TMPLIT_EXPR:B5e}),Vy={element:1,attribute:2,text:3,cdataSection:4,entityReference:5,entityNode:6,progressingInstruction:7,comment:8,document:9,documentType:10,documentFragment:11,notation:12},U5e=o(function(){return typeof window>"u"?null:window},"getGlobal"),H5e=o(function(e,r){if(typeof e!="object"||typeof e.createPolicy!="function")return null;let n=null,i="data-tt-policy-suffix";r&&r.hasAttribute(i)&&(n=r.getAttribute(i));let a="dompurify"+(n?"#"+n:"");try{return e.createPolicy(a,{createHTML(s){return s},createScriptURL(s){return s}})}catch{return console.warn("TrustedTypes policy "+a+" could not be created."),null}},"_createTrustedTypesPolicy"),cV=o(function(){return{afterSanitizeAttributes:[],afterSanitizeElements:[],afterSanitizeShadowDOM:[],beforeSanitizeAttributes:[],beforeSanitizeElements:[],beforeSanitizeShadowDOM:[],uponSanitizeAttribute:[],uponSanitizeElement:[],uponSanitizeShadowNode:[]}},"_createHooksMap");o(pV,"createDOMPurify");yh=pV()});var WU={};dr(WU,{ParseError:()=>gt,SETTINGS_SCHEMA:()=>Wy,__defineFunction:()=>Mt,__defineMacro:()=>ce,__defineSymbol:()=>V,__domTree:()=>qU,__parse:()=>GU,__renderToDomTree:()=>M3,__renderToHTMLTree:()=>UU,__setFontMetrics:()=>XV,default:()=>Owe,render:()=>EA,renderToString:()=>zU,version:()=>HU});function Q5e(t){return String(t).replace(K5e,e=>j5e[e])}function tTe(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 lTe(t){for(var e=0;e=i[0]&&t<=i[1])return r.name}return null}function YV(t){for(var e=0;e=v3[e]&&t<=v3[e+1])return!0;return!1}function XV(t,e){Ql[t]=e}function lA(t,e,r){if(!Ql[e])throw new Error("Font metrics not found for font: "+e+".");var n=t.charCodeAt(0),i=Ql[e][n];if(!i&&t[0]in gV&&(n=gV[t[0]].charCodeAt(0),i=Ql[e][n]),!i&&r==="text"&&YV(n)&&(i=Ql[e][77]),i)return{depth:i[0],height:i[1],italic:i[2],skew:i[3],width:i[4]}}function xTe(t){var e;if(t>=5?e=0:t>=3?e=1:e=2,!P7[e]){var r=P7[e]={cssEmPerMu:o3.quad[e]/18};for(var n in o3)o3.hasOwnProperty(n)&&(r[n]=o3[n][e])}return P7[e]}function xV(t){if(t instanceof Cs)return t;throw new Error("Expected symbolNode but got "+String(t)+".")}function ETe(t){if(t instanceof fd)return t;throw new Error("Expected span but got "+String(t)+".")}function V(t,e,r,n,i,a){Nn[t][i]={font:e,group:r,replace:n},a&&n&&(Nn[t][n]=Nn[t][i])}function Mt(t){for(var{type:e,names:r,props:n,handler:i,htmlBuilder:a,mathmlBuilder:s}=t,l={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},u=0;u0&&(a.push(p3(s,e)),s=[]),a.push(n[l]));s.length>0&&a.push(p3(s,e));var h;r?(h=p3(Ii(r,e,!0)),h.classes=["tag"],a.push(h)):i&&a.push(i);var f=du(["katex-html"],a);if(f.setAttribute("aria-hidden","true"),h){var d=h.children[0];d.style.height=St(f.height+f.depth),f.depth&&(d.style.verticalAlign=St(-f.depth))}return f}function sU(t){return new hd(t)}function $7(t){if(!t)return!1;if(t.type==="mi"&&t.children.length===1){var e=t.children[0];return e instanceof _o&&e.text==="."}else if(t.type==="mo"&&t.children.length===1&&t.getAttribute("separator")==="true"&&t.getAttribute("lspace")==="0em"&&t.getAttribute("rspace")==="0em"){var r=t.children[0];return r instanceof _o&&r.text===","}else return!1}function EV(t,e,r,n,i){var a=As(t,r),s;a.length===1&&a[0]instanceof es&&er.contains(["mrow","mtable"],a[0].type)?s=a[0]:s=new mt.MathNode("mrow",a);var l=new mt.MathNode("annotation",[new mt.TextNode(e)]);l.setAttribute("encoding","application/x-tex");var u=new mt.MathNode("semantics",[s,l]),h=new mt.MathNode("math",[u]);h.setAttribute("xmlns","http://www.w3.org/1998/Math/MathML"),n&&h.setAttribute("display","block");var f=i?"katex":"katex-mathml";return $e.makeSpan([f],[h])}function Tr(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 fA(t){var e=D3(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 D3(t){return t&&(t.type==="atom"||CTe.hasOwnProperty(t.type))?t:null}function uU(t,e){var r=Ii(t.body,e,!0);return rwe([t.mclass],r,e)}function hU(t,e){var r,n=As(t.body,e);return t.mclass==="minner"?r=new mt.MathNode("mpadded",n):t.mclass==="mord"?t.isCharacterBox?(r=n[0],r.type="mi"):r=new mt.MathNode("mi",n):(t.isCharacterBox?(r=n[0],r.type="mo"):r=new mt.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 awe(t,e,r){var n=nwe[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],[]),l=r.callFunction("\\\\cdright",[e[1]],[]),u={type:"ordgroup",mode:"math",body:[i,s,l]};return r.callFunction("\\\\cdparent",[u],[])}case"\\\\cdlongequal":return r.callFunction("\\\\cdlongequal",[],[]);case"\\Vert":{var h={type:"textord",text:"\\Vert",mode:"math"};return r.callFunction("\\Big",[h],[])}default:return{type:"textord",text:" ",mode:"math"}}}function swe(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 gt("Expected \\\\ or \\cr or \\end",t.nextToken)}for(var n=[],i=[n],a=0;a-1))if("<>AV".indexOf(h)>-1)for(var d=0;d<2;d++){for(var p=!0,m=u+1;mAV=|." after @',s[u]);var g=awe(h,f,t),y={type:"styling",body:[g],mode:"math",style:"display"};n.push(y),l=SV()}a%2===0?n.push(l):n.shift(),n=[],i.push(n)}t.gullet.endGroup(),t.gullet.endGroup();var v=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:v,colSeparationType:"CD",hLinesBeforeRow:new Array(i.length+1).fill([])}}function R3(t,e){var r=D3(t);if(r&&er.contains(xwe,r.text))return r;throw r?new gt("Invalid delimiter '"+r.text+"' after '"+e.funcName+"'",t):new gt("Invalid delimiter type '"+t.type+"'",t)}function _V(t){if(!t.body)throw new Error("Bug: The leftright ParseNode wasn't fully parsed.")}function Jl(t){for(var{type:e,names:r,props:n,handler:i,htmlBuilder:a,mathmlBuilder:s}=t,l={type:e,numArgs:n.numArgs||0,allowedInText:!1,numOptionalArgs:0,handler:i},u=0;u1||!f)&&y.pop(),x.length{"use strict";to=class t{static{o(this,"SourceLocation")}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}},Do=class t{static{o(this,"Token")}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,to.range(this,e))}},gt=class t{static{o(this,"ParseError")}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 l=s.lexer.input;i=s.start,a=s.end,i===l.length?n+=" at end of input: ":n+=" at position "+(i+1)+": ";var u=l.slice(i,a).replace(/[^]/g,"$&\u0332"),h;i>15?h="\u2026"+l.slice(i-15,i):h=l.slice(0,i);var f;a+15":">","<":"<",'"':""","'":"'"},K5e=/[&><"']/g;o(Q5e,"escape");WV=o(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},"getBaseElem"),Z5e=o(function(e){var r=WV(e);return r.type==="mathord"||r.type==="textord"||r.type==="atom"},"isCharacterBox"),J5e=o(function(e){if(!e)throw new Error("Expected non-null, but got "+String(e));return e},"assert"),eTe=o(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"},"protocolFromUrl"),er={contains:q5e,deflt:W5e,escape:Q5e,hyphenate:X5e,getBaseElem:WV,isCharacterBox:Z5e,protocolFromUrl:eTe},Wy={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:o(t=>"#"+t,"cliProcessor")},macros:{type:"object",cli:"-m, --macro ",cliDescription:"Define custom macro of the form '\\foo:expansion' (use multiple -m arguments for multiple macros).",cliDefault:[],cliProcessor:o((t,e)=>(e.push(t),e),"cliProcessor")},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:o(t=>Math.max(0,t),"processor"),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:o(t=>Math.max(0,t),"processor"),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:o(t=>Math.max(0,t),"processor"),cli:"-e, --max-expand ",cliProcessor:o(t=>t==="Infinity"?1/0:parseInt(t),"cliProcessor")},globalGroup:{type:"boolean",cli:!1}};o(tTe,"getDefaultValue");Xy=class{static{o(this,"Settings")}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 Wy)if(Wy.hasOwnProperty(r)){var n=Wy[r];this[r]=e[r]!==void 0?n.processor?n.processor(e[r]):e[r]:tTe(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 gt("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=er.protocolFromUrl(e.url);if(r==null)return!1;e.protocol=r}var n=typeof this.trust=="function"?this.trust(e):this.trust;return!!n}},jl=class{static{o(this,"Style")}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 Kl[rTe[this.id]]}sub(){return Kl[nTe[this.id]]}fracNum(){return Kl[iTe[this.id]]}fracDen(){return Kl[aTe[this.id]]}cramp(){return Kl[sTe[this.id]]}text(){return Kl[oTe[this.id]]}isTight(){return this.size>=2}},oA=0,x3=1,k0=2,hu=3,jy=4,Ao=5,E0=6,ts=7,Kl=[new jl(oA,0,!1),new jl(x3,0,!0),new jl(k0,1,!1),new jl(hu,1,!0),new jl(jy,2,!1),new jl(Ao,2,!0),new jl(E0,3,!1),new jl(ts,3,!0)],rTe=[jy,Ao,jy,Ao,E0,ts,E0,ts],nTe=[Ao,Ao,Ao,Ao,ts,ts,ts,ts],iTe=[k0,hu,jy,Ao,E0,ts,E0,ts],aTe=[hu,hu,Ao,Ao,ts,ts,ts,ts],sTe=[x3,x3,hu,hu,Ao,Ao,ts,ts],oTe=[oA,x3,k0,hu,k0,hu,k0,hu],nr={DISPLAY:Kl[oA],TEXT:Kl[k0],SCRIPT:Kl[jy],SCRIPTSCRIPT:Kl[E0]},j7=[{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]]}];o(lTe,"scriptFromCodepoint");v3=[];j7.forEach(t=>t.blocks.forEach(e=>v3.push(...e)));o(YV,"supportedCodepoint");w0=80,cTe=o(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"},"sqrtMain"),uTe=o(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"},"sqrtSize1"),hTe=o(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"},"sqrtSize2"),fTe=o(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"},"sqrtSize3"),dTe=o(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"},"sqrtSize4"),pTe=o(function(e){var r=e/2;return"M400000 "+e+" H0 L"+r+" 0 l65 45 L145 "+(e-80)+" H400000z"},"phasePath"),mTe=o(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"},"sqrtTall"),gTe=o(function(e,r,n){r=1e3*r;var i="";switch(e){case"sqrtMain":i=cTe(r,w0);break;case"sqrtSize1":i=uTe(r,w0);break;case"sqrtSize2":i=hTe(r,w0);break;case"sqrtSize3":i=fTe(r,w0);break;case"sqrtSize4":i=dTe(r,w0);break;case"sqrtTall":i=mTe(r,w0,n)}return i},"sqrtPath"),yTe=o(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""}},"innerPath"),mV={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`},vTe=o(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.")}},"tallDelim"),hd=class{static{o(this,"DocumentFragment")}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 er.contains(this.classes,e)}toNode(){for(var e=document.createDocumentFragment(),r=0;rr.toText(),"toText");return this.children.map(e).join("")}},Ql={"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]}},o3={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]},gV={\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"};o(XV,"setFontMetrics");o(lA,"getCharacterMetrics");P7={};o(xTe,"getGlobalMetrics");bTe=[[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]],yV=[.5,.6,.7,.8,.9,1,1.2,1.44,1.728,2.074,2.488],vV=o(function(e,r){return r.size<2?e:bTe[e-1][r.size-1]},"sizeAtStyle"),b3=class t{static{o(this,"Options")}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=yV[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:vV(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:yV[e-1]})}havingBaseStyle(e){e=e||this.style.text();var r=vV(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=xTe(this.size)),this._fontMetrics}getColor(){return this.phantom?"transparent":this.color}};b3.BASESIZE=6;K7={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},TTe={ex:!0,em:!0,mu:!0},jV=o(function(e){return typeof e!="string"&&(e=e.unit),e in K7||e in TTe||e==="ex"},"validUnit"),ii=o(function(e,r){var n;if(e.unit in K7)n=K7[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 gt("Invalid unit: '"+e.unit+"'");i!==r&&(n*=i.sizeMultiplier/r.sizeMultiplier)}return Math.min(e.number*n,r.maxSize)},"calculateSize"),St=o(function(e){return+e.toFixed(4)+"em"},"makeEm"),bh=o(function(e){return e.filter(r=>r).join(" ")},"createClass"),KV=o(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)}},"initNode"),QV=o(function(e){var r=document.createElement(e);r.className=bh(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/=\x00-\x1f]/,ZV=o(function(e){var r="<"+e;this.classes.length&&(r+=' class="'+er.escape(bh(this.classes))+'"');var n="";for(var i in this.style)this.style.hasOwnProperty(i)&&(n+=er.hyphenate(i)+":"+this.style[i]+";");n&&(r+=' style="'+er.escape(n)+'"');for(var a in this.attributes)if(this.attributes.hasOwnProperty(a)){if(wTe.test(a))throw new gt("Invalid attribute name '"+a+"'");r+=" "+a+'="'+er.escape(this.attributes[a])+'"'}r+=">";for(var s=0;s",r},"toMarkup"),fd=class{static{o(this,"Span")}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,KV.call(this,e,n,i),this.children=r||[]}setAttribute(e,r){this.attributes[e]=r}hasClass(e){return er.contains(this.classes,e)}toNode(){return QV.call(this,"span")}toMarkup(){return ZV.call(this,"span")}},Ky=class{static{o(this,"Anchor")}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,KV.call(this,r,i),this.children=n||[],this.setAttribute("href",e)}setAttribute(e,r){this.attributes[e]=r}hasClass(e){return er.contains(this.classes,e)}toNode(){return QV.call(this,"a")}toMarkup(){return ZV.call(this,"a")}},Q7=class{static{o(this,"Img")}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 er.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=''+er.escape(this.alt)+'0&&(r=document.createElement("span"),r.style.marginRight=St(this.italic)),this.classes.length>0&&(r=r||document.createElement("span"),r.className=bh(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+=er.hyphenate(i)+":"+this.style[i]+";");n&&(e=!0,r+=' style="'+er.escape(n)+'"');var a=er.escape(this.text);return e?(r+=">",r+=a,r+="",r):a}},dl=class{static{o(this,"SvgNode")}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':''}},Qy=class{static{o(this,"LineNode")}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);V(H,ie,Ee,"\u2208","\\in",!0);V(H,ie,Ee,"\uE020","\\@not");V(H,ie,Ee,"\u2282","\\subset",!0);V(H,ie,Ee,"\u2283","\\supset",!0);V(H,ie,Ee,"\u2286","\\subseteq",!0);V(H,ie,Ee,"\u2287","\\supseteq",!0);V(H,we,Ee,"\u2288","\\nsubseteq",!0);V(H,we,Ee,"\u2289","\\nsupseteq",!0);V(H,ie,Ee,"\u22A8","\\models");V(H,ie,Ee,"\u2190","\\leftarrow",!0);V(H,ie,Ee,"\u2264","\\le");V(H,ie,Ee,"\u2264","\\leq",!0);V(H,ie,Ee,"<","\\lt",!0);V(H,ie,Ee,"\u2192","\\rightarrow",!0);V(H,ie,Ee,"\u2192","\\to");V(H,we,Ee,"\u2271","\\ngeq",!0);V(H,we,Ee,"\u2270","\\nleq",!0);V(H,ie,mu,"\xA0","\\ ");V(H,ie,mu,"\xA0","\\space");V(H,ie,mu,"\xA0","\\nobreakspace");V(ct,ie,mu,"\xA0","\\ ");V(ct,ie,mu,"\xA0"," ");V(ct,ie,mu,"\xA0","\\space");V(ct,ie,mu,"\xA0","\\nobreakspace");V(H,ie,mu,null,"\\nobreak");V(H,ie,mu,null,"\\allowbreak");V(H,ie,A3,",",",");V(H,ie,A3,";",";");V(H,we,Ot,"\u22BC","\\barwedge",!0);V(H,we,Ot,"\u22BB","\\veebar",!0);V(H,ie,Ot,"\u2299","\\odot",!0);V(H,ie,Ot,"\u2295","\\oplus",!0);V(H,ie,Ot,"\u2297","\\otimes",!0);V(H,ie,De,"\u2202","\\partial",!0);V(H,ie,Ot,"\u2298","\\oslash",!0);V(H,we,Ot,"\u229A","\\circledcirc",!0);V(H,we,Ot,"\u22A1","\\boxdot",!0);V(H,ie,Ot,"\u25B3","\\bigtriangleup");V(H,ie,Ot,"\u25BD","\\bigtriangledown");V(H,ie,Ot,"\u2020","\\dagger");V(H,ie,Ot,"\u22C4","\\diamond");V(H,ie,Ot,"\u22C6","\\star");V(H,ie,Ot,"\u25C3","\\triangleleft");V(H,ie,Ot,"\u25B9","\\triangleright");V(H,ie,ro,"{","\\{");V(ct,ie,De,"{","\\{");V(ct,ie,De,"{","\\textbraceleft");V(H,ie,rs,"}","\\}");V(ct,ie,De,"}","\\}");V(ct,ie,De,"}","\\textbraceright");V(H,ie,ro,"{","\\lbrace");V(H,ie,rs,"}","\\rbrace");V(H,ie,ro,"[","\\lbrack",!0);V(ct,ie,De,"[","\\lbrack",!0);V(H,ie,rs,"]","\\rbrack",!0);V(ct,ie,De,"]","\\rbrack",!0);V(H,ie,ro,"(","\\lparen",!0);V(H,ie,rs,")","\\rparen",!0);V(ct,ie,De,"<","\\textless",!0);V(ct,ie,De,">","\\textgreater",!0);V(H,ie,ro,"\u230A","\\lfloor",!0);V(H,ie,rs,"\u230B","\\rfloor",!0);V(H,ie,ro,"\u2308","\\lceil",!0);V(H,ie,rs,"\u2309","\\rceil",!0);V(H,ie,De,"\\","\\backslash");V(H,ie,De,"\u2223","|");V(H,ie,De,"\u2223","\\vert");V(ct,ie,De,"|","\\textbar",!0);V(H,ie,De,"\u2225","\\|");V(H,ie,De,"\u2225","\\Vert");V(ct,ie,De,"\u2225","\\textbardbl");V(ct,ie,De,"~","\\textasciitilde");V(ct,ie,De,"\\","\\textbackslash");V(ct,ie,De,"^","\\textasciicircum");V(H,ie,Ee,"\u2191","\\uparrow",!0);V(H,ie,Ee,"\u21D1","\\Uparrow",!0);V(H,ie,Ee,"\u2193","\\downarrow",!0);V(H,ie,Ee,"\u21D3","\\Downarrow",!0);V(H,ie,Ee,"\u2195","\\updownarrow",!0);V(H,ie,Ee,"\u21D5","\\Updownarrow",!0);V(H,ie,ki,"\u2210","\\coprod");V(H,ie,ki,"\u22C1","\\bigvee");V(H,ie,ki,"\u22C0","\\bigwedge");V(H,ie,ki,"\u2A04","\\biguplus");V(H,ie,ki,"\u22C2","\\bigcap");V(H,ie,ki,"\u22C3","\\bigcup");V(H,ie,ki,"\u222B","\\int");V(H,ie,ki,"\u222B","\\intop");V(H,ie,ki,"\u222C","\\iint");V(H,ie,ki,"\u222D","\\iiint");V(H,ie,ki,"\u220F","\\prod");V(H,ie,ki,"\u2211","\\sum");V(H,ie,ki,"\u2A02","\\bigotimes");V(H,ie,ki,"\u2A01","\\bigoplus");V(H,ie,ki,"\u2A00","\\bigodot");V(H,ie,ki,"\u222E","\\oint");V(H,ie,ki,"\u222F","\\oiint");V(H,ie,ki,"\u2230","\\oiiint");V(H,ie,ki,"\u2A06","\\bigsqcup");V(H,ie,ki,"\u222B","\\smallint");V(ct,ie,S0,"\u2026","\\textellipsis");V(H,ie,S0,"\u2026","\\mathellipsis");V(ct,ie,S0,"\u2026","\\ldots",!0);V(H,ie,S0,"\u2026","\\ldots",!0);V(H,ie,S0,"\u22EF","\\@cdots",!0);V(H,ie,S0,"\u22F1","\\ddots",!0);V(H,ie,De,"\u22EE","\\varvdots");V(ct,ie,De,"\u22EE","\\varvdots");V(H,ie,Wn,"\u02CA","\\acute");V(H,ie,Wn,"\u02CB","\\grave");V(H,ie,Wn,"\xA8","\\ddot");V(H,ie,Wn,"~","\\tilde");V(H,ie,Wn,"\u02C9","\\bar");V(H,ie,Wn,"\u02D8","\\breve");V(H,ie,Wn,"\u02C7","\\check");V(H,ie,Wn,"^","\\hat");V(H,ie,Wn,"\u20D7","\\vec");V(H,ie,Wn,"\u02D9","\\dot");V(H,ie,Wn,"\u02DA","\\mathring");V(H,ie,rr,"\uE131","\\@imath");V(H,ie,rr,"\uE237","\\@jmath");V(H,ie,De,"\u0131","\u0131");V(H,ie,De,"\u0237","\u0237");V(ct,ie,De,"\u0131","\\i",!0);V(ct,ie,De,"\u0237","\\j",!0);V(ct,ie,De,"\xDF","\\ss",!0);V(ct,ie,De,"\xE6","\\ae",!0);V(ct,ie,De,"\u0153","\\oe",!0);V(ct,ie,De,"\xF8","\\o",!0);V(ct,ie,De,"\xC6","\\AE",!0);V(ct,ie,De,"\u0152","\\OE",!0);V(ct,ie,De,"\xD8","\\O",!0);V(ct,ie,Wn,"\u02CA","\\'");V(ct,ie,Wn,"\u02CB","\\`");V(ct,ie,Wn,"\u02C6","\\^");V(ct,ie,Wn,"\u02DC","\\~");V(ct,ie,Wn,"\u02C9","\\=");V(ct,ie,Wn,"\u02D8","\\u");V(ct,ie,Wn,"\u02D9","\\.");V(ct,ie,Wn,"\xB8","\\c");V(ct,ie,Wn,"\u02DA","\\r");V(ct,ie,Wn,"\u02C7","\\v");V(ct,ie,Wn,"\xA8",'\\"');V(ct,ie,Wn,"\u02DD","\\H");V(ct,ie,Wn,"\u25EF","\\textcircled");JV={"--":!0,"---":!0,"``":!0,"''":!0};V(ct,ie,De,"\u2013","--",!0);V(ct,ie,De,"\u2013","\\textendash");V(ct,ie,De,"\u2014","---",!0);V(ct,ie,De,"\u2014","\\textemdash");V(ct,ie,De,"\u2018","`",!0);V(ct,ie,De,"\u2018","\\textquoteleft");V(ct,ie,De,"\u2019","'",!0);V(ct,ie,De,"\u2019","\\textquoteright");V(ct,ie,De,"\u201C","``",!0);V(ct,ie,De,"\u201C","\\textquotedblleft");V(ct,ie,De,"\u201D","''",!0);V(ct,ie,De,"\u201D","\\textquotedblright");V(H,ie,De,"\xB0","\\degree",!0);V(ct,ie,De,"\xB0","\\degree");V(ct,ie,De,"\xB0","\\textdegree",!0);V(H,ie,De,"\xA3","\\pounds");V(H,ie,De,"\xA3","\\mathsterling",!0);V(ct,ie,De,"\xA3","\\pounds");V(ct,ie,De,"\xA3","\\textsterling",!0);V(H,we,De,"\u2720","\\maltese");V(ct,we,De,"\u2720","\\maltese");bV='0123456789/@."';for(l3=0;l30)return fl(a,h,i,r,s.concat(f));if(u){var d,p;if(u==="boldsymbol"){var m=DTe(a,i,r,s,n);d=m.fontName,p=[m.fontClass]}else l?(d=rU[u].fontName,p=[u]):(d=d3(u,r.fontWeight,r.fontShape),p=[u,r.fontWeight,r.fontShape]);if(_3(a,d,i).metrics)return fl(a,d,i,r,s.concat(p));if(JV.hasOwnProperty(a)&&d.slice(0,10)==="Typewriter"){for(var g=[],y=0;y{if(bh(t.classes)!==bh(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},"canCombine"),NTe=o(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},"sizeElementFromChildren"),Ss=o(function(e,r,n,i){var a=new fd(e,r,n,i);return cA(a),a},"makeSpan"),eU=o((t,e,r,n)=>new fd(t,e,r,n),"makeSvgSpan"),MTe=o(function(e,r,n){var i=Ss([e],[],r);return i.height=Math.max(n||r.fontMetrics().defaultRuleThickness,r.minRuleThickness),i.style.borderBottomWidth=St(i.height),i.maxFontSize=1,i},"makeLineSpan"),ITe=o(function(e,r,n,i){var a=new Ky(e,r,n,i);return cA(a),a},"makeAnchor"),tU=o(function(e){var r=new hd(e);return cA(r),r},"makeFragment"),OTe=o(function(e,r){return e instanceof hd?Ss([],[e],r):e},"wrapFragment"),PTe=o(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=Ss(["mspace"],[],e),n=ii(t,e);return r.style.marginRight=St(n),r},"makeGlue"),d3=o(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},"retrieveTextFontName"),rU={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"},mathsfit:{variant:"sans-serif-italic",fontName:"SansSerif-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"}},nU={vec:["vec",.471,.714],oiintSize1:["oiintSize1",.957,.499],oiintSize2:["oiintSize2",1.472,.659],oiiintSize1:["oiiintSize1",1.304,.499],oiiintSize2:["oiiintSize2",1.98,.659]},$Te=o(function(e,r){var[n,i,a]=nU[e],s=new Zl(n),l=new dl([s],{width:St(i),height:St(a),style:"width:"+St(i),viewBox:"0 0 "+1e3*i+" "+1e3*a,preserveAspectRatio:"xMinYMin"}),u=eU(["overlay"],[l],r);return u.height=a,u.style.height=St(a),u.style.width=St(i),u},"staticSvg"),$e={fontMap:rU,makeSymbol:fl,mathsym:_Te,makeSpan:Ss,makeSvgSpan:eU,makeLineSpan:MTe,makeAnchor:ITe,makeFragment:tU,wrapFragment:OTe,makeVList:BTe,makeOrd:LTe,makeGlue:FTe,staticSvg:$Te,svgData:nU,tryCombineChars:NTe},ni={number:3,unit:"mu"},ud={number:4,unit:"mu"},uu={number:5,unit:"mu"},zTe={mord:{mop:ni,mbin:ud,mrel:uu,minner:ni},mop:{mord:ni,mop:ni,mrel:uu,minner:ni},mbin:{mord:ud,mop:ud,mopen:ud,minner:ud},mrel:{mord:uu,mop:uu,mopen:uu,minner:uu},mopen:{},mclose:{mop:ni,mbin:ud,mrel:uu,minner:ni},mpunct:{mord:ni,mop:ni,mrel:uu,mopen:ni,mclose:ni,mpunct:ni,minner:ni},minner:{mord:ni,mop:ni,mbin:ud,mrel:uu,mopen:ni,mpunct:ni,minner:ni}},GTe={mord:{mop:ni},mop:{mord:ni,mop:ni},mbin:{},mrel:{},mopen:{},mclose:{mop:ni},mpunct:{},minner:{mop:ni}},iU={},w3={},k3={};o(Mt,"defineFunction");o(dd,"defineFunctionBuilders");E3=o(function(e){return e.type==="ordgroup"&&e.body.length===1?e.body[0]:e},"normalizeArgument"),gi=o(function(e){return e.type==="ordgroup"?e.body:[e]},"ordargument"),du=$e.makeSpan,VTe=["leftmost","mbin","mopen","mrel","mop","mpunct"],UTe=["rightmost","mrel","mclose","mpunct"],HTe={display:nr.DISPLAY,text:nr.TEXT,script:nr.SCRIPT,scriptscript:nr.SCRIPTSCRIPT},qTe={mord:"mord",mop:"mop",mbin:"mbin",mrel:"mrel",mopen:"mopen",mclose:"mclose",mpunct:"mpunct",minner:"minner"},Ii=o(function(e,r,n,i){i===void 0&&(i=[null,null]);for(var a=[],s=0;s{var v=y.classes[0],x=g.classes[0];v==="mbin"&&er.contains(UTe,x)?y.classes[0]="mord":x==="mbin"&&er.contains(VTe,v)&&(g.classes[0]="mord")},{node:d},p,m),kV(a,(g,y)=>{var v=J7(y),x=J7(g),b=v&&x?g.hasClass("mtight")?GTe[v][x]:zTe[v][x]:null;if(b)return $e.makeGlue(b,h)},{node:d},p,m),a},"buildExpression"),kV=o(function t(e,r,n,i,a){i&&e.push(i);for(var s=0;sp=>{e.splice(d+1,0,p),s++})(s)}i&&e.pop()},"traverseNonSpaceNodes"),aU=o(function(e){return e instanceof hd||e instanceof Ky||e instanceof fd&&e.hasClass("enclosing")?e:null},"checkPartialGroup"),WTe=o(function t(e,r){var n=aU(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},"getOutermostNode"),J7=o(function(e,r){return e?(r&&(e=WTe(e,r)),qTe[e.classes[0]]||null):null},"getTypeOfDomTree"),Zy=o(function(e,r){var n=["nulldelimiter"].concat(e.baseSizingClasses());return du(r.concat(n))},"makeNullDelimiter"),Hr=o(function(e,r,n){if(!e)return du();if(w3[e.type]){var i=w3[e.type](e,r);if(n&&r.size!==n.size){i=du(r.sizingClasses(n),[i],r);var a=r.sizeMultiplier/n.sizeMultiplier;i.height*=a,i.depth*=a}return i}else throw new gt("Got group of unknown type: '"+e.type+"'")},"buildGroup");o(p3,"buildHTMLUnbreakable");o(eA,"buildHTML");o(sU,"newDocumentFragment");es=class{static{o(this,"MathNode")}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=bh(this.classes));for(var n=0;n0&&(e+=' class ="'+er.escape(bh(this.classes))+'"'),e+=">";for(var n=0;n",e}toText(){return this.children.map(e=>e.toText()).join("")}},_o=class{static{o(this,"TextNode")}constructor(e){this.text=void 0,this.text=e}toNode(){return document.createTextNode(this.text)}toMarkup(){return er.escape(this.toText())}toText(){return this.text}},tA=class{static{o(this,"SpaceNode")}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",St(this.width)),e}toMarkup(){return this.character?""+this.character+"":''}toText(){return this.character?this.character:" "}},mt={MathNode:es,TextNode:_o,SpaceNode:tA,newDocumentFragment:sU},Lo=o(function(e,r,n){return Nn[r][e]&&Nn[r][e].replace&&e.charCodeAt(0)!==55349&&!(JV.hasOwnProperty(e)&&n&&(n.fontFamily&&n.fontFamily.slice(4,6)==="tt"||n.font&&n.font.slice(4,6)==="tt"))&&(e=Nn[r][e].replace),new mt.TextNode(e)},"makeText"),uA=o(function(e){return e.length===1?e[0]:new mt.MathNode("mrow",e)},"makeRow"),hA=o(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==="mathsfit")return"sans-serif-italic";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(er.contains(["\\imath","\\jmath"],a))return null;Nn[i][a]&&Nn[i][a].replace&&(a=Nn[i][a].replace);var s=$e.fontMap[n].fontName;return lA(a,s,i)?$e.fontMap[n].variant:null},"getVariant");o($7,"isNumberPunctuation");As=o(function(e,r,n){if(e.length===1){var i=wn(e[0],r);return n&&i instanceof es&&i.type==="mo"&&(i.setAttribute("lspace","0em"),i.setAttribute("rspace","0em")),[i]}for(var a=[],s,l=0;l=1&&(s.type==="mn"||$7(s))){var h=u.children[0];h instanceof es&&h.type==="mn"&&(h.children=[...s.children,...h.children],a.pop())}else if(s.type==="mi"&&s.children.length===1){var f=s.children[0];if(f instanceof _o&&f.text==="\u0338"&&(u.type==="mo"||u.type==="mi"||u.type==="mn")){var d=u.children[0];d instanceof _o&&d.text.length>0&&(d.text=d.text.slice(0,1)+"\u0338"+d.text.slice(1),a.pop())}}}a.push(u),s=u}return a},"buildExpression"),Th=o(function(e,r,n){return uA(As(e,r,n))},"buildExpressionRow"),wn=o(function(e,r){if(!e)return new mt.MathNode("mrow");if(k3[e.type]){var n=k3[e.type](e,r);return n}else throw new gt("Got group of unknown type: '"+e.type+"'")},"buildGroup");o(EV,"buildMathML");oU=o(function(e){return new b3({style:e.displayMode?nr.DISPLAY:nr.TEXT,maxSize:e.maxSize,minRuleThickness:e.minRuleThickness})},"optionsFromSettings"),lU=o(function(e,r){if(r.displayMode){var n=["katex-display"];r.leqno&&n.push("leqno"),r.fleqn&&n.push("fleqn"),e=$e.makeSpan(n,[e])}return e},"displayWrap"),YTe=o(function(e,r,n){var i=oU(n),a;if(n.output==="mathml")return EV(e,r,i,n.displayMode,!0);if(n.output==="html"){var s=eA(e,i);a=$e.makeSpan(["katex"],[s])}else{var l=EV(e,r,i,n.displayMode,!1),u=eA(e,i);a=$e.makeSpan(["katex"],[l,u])}return lU(a,n)},"buildTree"),XTe=o(function(e,r,n){var i=oU(n),a=eA(e,i),s=$e.makeSpan(["katex"],[a]);return lU(s,n)},"buildHTMLTree"),jTe={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":"="},KTe=o(function(e){var r=new mt.MathNode("mo",[new mt.TextNode(jTe[e.replace(/^\\/,"")])]);return r.setAttribute("stretchy","true"),r},"mathMLnode"),QTe={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]},ZTe=o(function(e){return e.type==="ordgroup"?e.body.length:1},"groupLength"),JTe=o(function(e,r){function n(){var l=4e5,u=e.label.slice(1);if(er.contains(["widehat","widecheck","widetilde","utilde"],u)){var h=e,f=ZTe(h.base),d,p,m;if(f>5)u==="widehat"||u==="widecheck"?(d=420,l=2364,m=.42,p=u+"4"):(d=312,l=2340,m=.34,p="tilde4");else{var g=[1,1,2,2,3,3][f];u==="widehat"||u==="widecheck"?(l=[0,1062,2364,2364,2364][g],d=[0,239,300,360,420][g],m=[0,.24,.3,.3,.36,.42][g],p=u+g):(l=[0,600,1033,2339,2340][g],d=[0,260,286,306,312][g],m=[0,.26,.286,.3,.306,.34][g],p="tilde"+g)}var y=new Zl(p),v=new dl([y],{width:"100%",height:St(m),viewBox:"0 0 "+l+" "+d,preserveAspectRatio:"none"});return{span:$e.makeSvgSpan([],[v],r),minWidth:0,height:m}}else{var x=[],b=QTe[u],[T,S,w]=b,k=w/1e3,A=T.length,C,R;if(A===1){var I=b[3];C=["hide-tail"],R=[I]}else if(A===2)C=["halfarrow-left","halfarrow-right"],R=["xMinYMin","xMaxYMin"];else if(A===3)C=["brace-left","brace-center","brace-right"],R=["xMinYMin","xMidYMin","xMaxYMin"];else throw new Error(`Correct katexImagesData or update code here to support - `+A+" children.");for(var L=0;L0&&(i.style.minWidth=St(a)),i},"svgSpan"),ewe=o(function(e,r,n,i,a){var s,l=e.height+e.depth+n+i;if(/fbox|color|angl/.test(r)){if(s=$e.makeSpan(["stretchy",r],[],a),r==="fbox"){var u=a.color&&a.getColor();u&&(s.style.borderColor=u)}}else{var h=[];/^[bx]cancel$/.test(r)&&h.push(new Qy({x1:"0",y1:"0",x2:"100%",y2:"100%","stroke-width":"0.046em"})),/^x?cancel$/.test(r)&&h.push(new Qy({x1:"0",y1:"100%",x2:"100%",y2:"0","stroke-width":"0.046em"}));var f=new dl(h,{width:"100%",height:St(l)});s=$e.makeSvgSpan([],[f],a)}return s.height=l,s.style.height=St(l),s},"encloseSpan"),pu={encloseSpan:ewe,mathMLnode:KTe,svgSpan:JTe};o(Tr,"assertNodeType");o(fA,"assertSymbolNodeType");o(D3,"checkSymbolNodeType");dA=o((t,e)=>{var r,n,i;t&&t.type==="supsub"?(n=Tr(t.base,"accent"),r=n.base,t.base=r,i=ETe(Hr(t,e)),t.base=n):(n=Tr(t,"accent"),r=n.base);var a=Hr(r,e.havingCrampedStyle()),s=n.isShifty&&er.isCharacterBox(r),l=0;if(s){var u=er.getBaseElem(r),h=Hr(u,e.havingCrampedStyle());l=xV(h).skew}var f=n.label==="\\c",d=f?a.height+a.depth:Math.min(a.height,e.fontMetrics().xHeight),p;if(n.isStretchy)p=pu.svgSpan(n,e),p=$e.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:a},{type:"elem",elem:p,wrapperClasses:["svg-align"],wrapperStyle:l>0?{width:"calc(100% - "+St(2*l)+")",marginLeft:St(2*l)}:void 0}]},e);else{var m,g;n.label==="\\vec"?(m=$e.staticSvg("vec",e),g=$e.svgData.vec[1]):(m=$e.makeOrd({mode:n.mode,text:n.label},e,"textord"),m=xV(m),m.italic=0,g=m.width,f&&(d+=m.depth)),p=$e.makeSpan(["accent-body"],[m]);var y=n.label==="\\textcircled";y&&(p.classes.push("accent-full"),d=a.height);var v=l;y||(v-=g/2),p.style.left=St(v),n.label==="\\textcircled"&&(p.style.top=".2em"),p=$e.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:a},{type:"kern",size:-d},{type:"elem",elem:p}]},e)}var x=$e.makeSpan(["mord","accent"],[p],e);return i?(i.children[0]=x,i.height=Math.max(x.height,i.height),i.classes[0]="mord",i):x},"htmlBuilder$a"),cU=o((t,e)=>{var r=t.isStretchy?pu.mathMLnode(t.label):new mt.MathNode("mo",[Lo(t.label,t.mode)]),n=new mt.MathNode("mover",[wn(t.base,e),r]);return n.setAttribute("accent","true"),n},"mathmlBuilder$9"),twe=new RegExp(["\\acute","\\grave","\\ddot","\\tilde","\\bar","\\breve","\\check","\\hat","\\vec","\\dot","\\mathring"].map(t=>"\\"+t).join("|"));Mt({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:o((t,e)=>{var r=E3(e[0]),n=!twe.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}},"handler"),htmlBuilder:dA,mathmlBuilder:cU});Mt({type:"accent",names:["\\'","\\`","\\^","\\~","\\=","\\u","\\.",'\\"',"\\c","\\r","\\H","\\v","\\textcircled"],props:{numArgs:1,allowedInText:!0,allowedInMath:!0,argTypes:["primitive"]},handler:o((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}},"handler"),htmlBuilder:dA,mathmlBuilder:cU});Mt({type:"accentUnder",names:["\\underleftarrow","\\underrightarrow","\\underleftrightarrow","\\undergroup","\\underlinesegment","\\utilde"],props:{numArgs:1},handler:o((t,e)=>{var{parser:r,funcName:n}=t,i=e[0];return{type:"accentUnder",mode:r.mode,label:n,base:i}},"handler"),htmlBuilder:o((t,e)=>{var r=Hr(t.base,e),n=pu.svgSpan(t,e),i=t.label==="\\utilde"?.12:0,a=$e.makeVList({positionType:"top",positionData:r.height,children:[{type:"elem",elem:n,wrapperClasses:["svg-align"]},{type:"kern",size:i},{type:"elem",elem:r}]},e);return $e.makeSpan(["mord","accentunder"],[a],e)},"htmlBuilder"),mathmlBuilder:o((t,e)=>{var r=pu.mathMLnode(t.label),n=new mt.MathNode("munder",[wn(t.base,e),r]);return n.setAttribute("accentunder","true"),n},"mathmlBuilder")});m3=o(t=>{var e=new mt.MathNode("mpadded",t?[t]:[]);return e.setAttribute("width","+0.6em"),e.setAttribute("lspace","0.3em"),e},"paddedNode");Mt({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=$e.wrapFragment(Hr(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=$e.wrapFragment(Hr(t.below,n,e),e),s.classes.push(a+"-arrow-pad"));var l=pu.svgSpan(t,e),u=-e.fontMetrics().axisHeight+.5*l.height,h=-e.fontMetrics().axisHeight-.5*l.height-.111;(i.depth>.25||t.label==="\\xleftequilibrium")&&(h-=i.depth);var f;if(s){var d=-e.fontMetrics().axisHeight+s.height+.5*l.height+.111;f=$e.makeVList({positionType:"individualShift",children:[{type:"elem",elem:i,shift:h},{type:"elem",elem:l,shift:u},{type:"elem",elem:s,shift:d}]},e)}else f=$e.makeVList({positionType:"individualShift",children:[{type:"elem",elem:i,shift:h},{type:"elem",elem:l,shift:u}]},e);return f.children[0].children[0].children[1].classes.push("svg-align"),$e.makeSpan(["mrel","x-arrow"],[f],e)},mathmlBuilder(t,e){var r=pu.mathMLnode(t.label);r.setAttribute("minsize",t.label.charAt(0)==="x"?"1.75em":"3.0em");var n;if(t.body){var i=m3(wn(t.body,e));if(t.below){var a=m3(wn(t.below,e));n=new mt.MathNode("munderover",[r,a,i])}else n=new mt.MathNode("mover",[r,i])}else if(t.below){var s=m3(wn(t.below,e));n=new mt.MathNode("munder",[r,s])}else n=m3(),n=new mt.MathNode("mover",[r,n]);return n}});rwe=$e.makeSpan;o(uU,"htmlBuilder$9");o(hU,"mathmlBuilder$8");Mt({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:gi(i),isCharacterBox:er.isCharacterBox(i)}},htmlBuilder:uU,mathmlBuilder:hU});L3=o(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"},"binrelClass");Mt({type:"mclass",names:["\\@binrel"],props:{numArgs:2},handler(t,e){var{parser:r}=t;return{type:"mclass",mode:r.mode,mclass:L3(e[0]),body:gi(e[1]),isCharacterBox:er.isCharacterBox(e[1])}}});Mt({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=L3(i):s="mrel";var l={type:"op",mode:i.mode,limits:!0,alwaysHandleSupSub:!0,parentIsSupSub:!1,symbol:!1,suppressBaseShift:n!=="\\stackrel",body:gi(i)},u={type:"supsub",mode:a.mode,base:l,sup:n==="\\underset"?null:a,sub:n==="\\underset"?a:null};return{type:"mclass",mode:r.mode,mclass:s,body:[u],isCharacterBox:er.isCharacterBox(u)}},htmlBuilder:uU,mathmlBuilder:hU});Mt({type:"pmb",names:["\\pmb"],props:{numArgs:1,allowedInText:!0},handler(t,e){var{parser:r}=t;return{type:"pmb",mode:r.mode,mclass:L3(e[0]),body:gi(e[0])}},htmlBuilder(t,e){var r=Ii(t.body,e,!0),n=$e.makeSpan([t.mclass],r,e);return n.style.textShadow="0.02em 0.01em 0.04px",n},mathmlBuilder(t,e){var r=As(t.body,e),n=new mt.MathNode("mstyle",r);return n.setAttribute("style","text-shadow: 0.02em 0.01em 0.04px"),n}});nwe={">":"\\\\cdrightarrow","<":"\\\\cdleftarrow","=":"\\\\cdlongequal",A:"\\uparrow",V:"\\downarrow","|":"\\Vert",".":"no arrow"},SV=o(()=>({type:"styling",body:[],mode:"math",style:"display"}),"newCell"),CV=o(t=>t.type==="textord"&&t.text==="@","isStartOfArrow"),iwe=o((t,e)=>(t.type==="mathord"||t.type==="atom")&&t.text===e,"isLabelEnd");o(awe,"cdArrow");o(swe,"parseCD");Mt({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=$e.wrapFragment(Hr(t.label,r,e),e);return n.classes.push("cd-label-"+t.side),n.style.bottom=St(.8-n.depth),n.height=0,n.depth=0,n},mathmlBuilder(t,e){var r=new mt.MathNode("mrow",[wn(t.label,e)]);return r=new mt.MathNode("mpadded",[r]),r.setAttribute("width","0"),t.side==="left"&&r.setAttribute("lspace","-1width"),r.setAttribute("voffset","0.7em"),r=new mt.MathNode("mstyle",[r]),r.setAttribute("displaystyle","false"),r.setAttribute("scriptlevel","1"),r}});Mt({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=$e.wrapFragment(Hr(t.fragment,e),e);return r.classes.push("cd-vert-arrow"),r},mathmlBuilder(t,e){return new mt.MathNode("mrow",[wn(t.fragment,e)])}});Mt({type:"textord",names:["\\@char"],props:{numArgs:1,allowedInText:!0},handler(t,e){for(var{parser:r}=t,n=Tr(e[0],"ordgroup"),i=n.body,a="",s=0;s=1114111)throw new gt("\\@char with invalid code point "+a);return u<=65535?h=String.fromCharCode(u):(u-=65536,h=String.fromCharCode((u>>10)+55296,(u&1023)+56320)),{type:"textord",mode:r.mode,text:h}}});fU=o((t,e)=>{var r=Ii(t.body,e.withColor(t.color),!1);return $e.makeFragment(r)},"htmlBuilder$8"),dU=o((t,e)=>{var r=As(t.body,e.withColor(t.color)),n=new mt.MathNode("mstyle",r);return n.setAttribute("mathcolor",t.color),n},"mathmlBuilder$7");Mt({type:"color",names:["\\textcolor"],props:{numArgs:2,allowedInText:!0,argTypes:["color","original"]},handler(t,e){var{parser:r}=t,n=Tr(e[0],"color-token").color,i=e[1];return{type:"color",mode:r.mode,color:n,body:gi(i)}},htmlBuilder:fU,mathmlBuilder:dU});Mt({type:"color",names:["\\color"],props:{numArgs:1,allowedInText:!0,argTypes:["color"]},handler(t,e){var{parser:r,breakOnTokenText:n}=t,i=Tr(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:fU,mathmlBuilder:dU});Mt({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&&Tr(i,"size").value}},htmlBuilder(t,e){var r=$e.makeSpan(["mspace"],[],e);return t.newLine&&(r.classes.push("newline"),t.size&&(r.style.marginTop=St(ii(t.size,e)))),r},mathmlBuilder(t,e){var r=new mt.MathNode("mspace");return t.newLine&&(r.setAttribute("linebreak","newline"),t.size&&r.setAttribute("height",St(ii(t.size,e)))),r}});rA={"\\global":"\\global","\\long":"\\\\globallong","\\\\globallong":"\\\\globallong","\\def":"\\gdef","\\gdef":"\\gdef","\\edef":"\\xdef","\\xdef":"\\xdef","\\let":"\\\\globallet","\\futurelet":"\\\\globalfuture"},pU=o(t=>{var e=t.text;if(/^(?:[\\{}$&#^_]|EOF)$/.test(e))throw new gt("Expected a control sequence",t);return e},"checkControlSequence"),owe=o(t=>{var e=t.gullet.popToken();return e.text==="="&&(e=t.gullet.popToken(),e.text===" "&&(e=t.gullet.popToken())),e},"getRHS"),mU=o((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)},"letCommand");Mt({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(rA[n.text])return(r==="\\global"||r==="\\\\globallong")&&(n.text=rA[n.text]),Tr(e.parseFunction(),"internal");throw new gt("Invalid token after macro prefix",n)}});Mt({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 gt("Expected a control sequence",n);for(var a=0,s,l=[[]];e.gullet.future().text!=="{";)if(n=e.gullet.popToken(),n.text==="#"){if(e.gullet.future().text==="{"){s=e.gullet.future(),l[a].push("{");break}if(n=e.gullet.popToken(),!/^[1-9]$/.test(n.text))throw new gt('Invalid argument number "'+n.text+'"');if(parseInt(n.text)!==a+1)throw new gt('Argument number "'+n.text+'" out of order');a++,l.push([])}else{if(n.text==="EOF")throw new gt("Expected a macro definition");l[a].push(n.text)}var{tokens:u}=e.gullet.consumeArg();return s&&u.unshift(s),(r==="\\edef"||r==="\\xdef")&&(u=e.gullet.expandTokens(u),u.reverse()),e.gullet.macros.set(i,{tokens:u,numArgs:a,delimiters:l},r===rA[r]),{type:"internal",mode:e.mode}}});Mt({type:"internal",names:["\\let","\\\\globallet"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler(t){var{parser:e,funcName:r}=t,n=pU(e.gullet.popToken());e.gullet.consumeSpaces();var i=owe(e);return mU(e,n,i,r==="\\\\globallet"),{type:"internal",mode:e.mode}}});Mt({type:"internal",names:["\\futurelet","\\\\globalfuture"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler(t){var{parser:e,funcName:r}=t,n=pU(e.gullet.popToken()),i=e.gullet.popToken(),a=e.gullet.popToken();return mU(e,n,a,r==="\\\\globalfuture"),e.gullet.pushToken(a),e.gullet.pushToken(i),{type:"internal",mode:e.mode}}});qy=o(function(e,r,n){var i=Nn.math[e]&&Nn.math[e].replace,a=lA(i||e,r,n);if(!a)throw new Error("Unsupported symbol "+e+" and font size "+r+".");return a},"getMetrics"),pA=o(function(e,r,n,i){var a=n.havingBaseStyle(r),s=$e.makeSpan(i.concat(a.sizingClasses(n)),[e],n),l=a.sizeMultiplier/n.sizeMultiplier;return s.height*=l,s.depth*=l,s.maxFontSize=a.sizeMultiplier,s},"styleWrap"),gU=o(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=St(a),e.height-=a,e.depth+=a},"centerSpan"),lwe=o(function(e,r,n,i,a,s){var l=$e.makeSymbol(e,"Main-Regular",a,i),u=pA(l,r,i,s);return n&&gU(u,i,r),u},"makeSmallDelim"),cwe=o(function(e,r,n,i){return $e.makeSymbol(e,"Size"+r+"-Regular",n,i)},"mathrmSize"),yU=o(function(e,r,n,i,a,s){var l=cwe(e,r,a,i),u=pA($e.makeSpan(["delimsizing","size"+r],[l],i),nr.TEXT,i,s);return n&&gU(u,i,nr.TEXT),u},"makeLargeDelim"),z7=o(function(e,r,n){var i;r==="Size1-Regular"?i="delim-size1":i="delim-size4";var a=$e.makeSpan(["delimsizinginner",i],[$e.makeSpan([],[$e.makeSymbol(e,r,n)])]);return{type:"elem",elem:a}},"makeGlyphSpan"),G7=o(function(e,r,n){var i=Ql["Size4-Regular"][e.charCodeAt(0)]?Ql["Size4-Regular"][e.charCodeAt(0)][4]:Ql["Size1-Regular"][e.charCodeAt(0)][4],a=new Zl("inner",yTe(e,Math.round(1e3*r))),s=new dl([a],{width:St(i),height:St(r),style:"width:"+St(i),viewBox:"0 0 "+1e3*i+" "+Math.round(1e3*r),preserveAspectRatio:"xMinYMin"}),l=$e.makeSvgSpan([],[s],n);return l.height=r,l.style.height=St(r),l.style.width=St(i),{type:"elem",elem:l}},"makeInner"),nA=.008,g3={type:"kern",size:-1*nA},uwe=["|","\\lvert","\\rvert","\\vert"],hwe=["\\|","\\lVert","\\rVert","\\Vert"],vU=o(function(e,r,n,i,a,s){var l,u,h,f,d="",p=0;l=h=f=e,u=null;var m="Size1-Regular";e==="\\uparrow"?h=f="\u23D0":e==="\\Uparrow"?h=f="\u2016":e==="\\downarrow"?l=h="\u23D0":e==="\\Downarrow"?l=h="\u2016":e==="\\updownarrow"?(l="\\uparrow",h="\u23D0",f="\\downarrow"):e==="\\Updownarrow"?(l="\\Uparrow",h="\u2016",f="\\Downarrow"):er.contains(uwe,e)?(h="\u2223",d="vert",p=333):er.contains(hwe,e)?(h="\u2225",d="doublevert",p=556):e==="["||e==="\\lbrack"?(l="\u23A1",h="\u23A2",f="\u23A3",m="Size4-Regular",d="lbrack",p=667):e==="]"||e==="\\rbrack"?(l="\u23A4",h="\u23A5",f="\u23A6",m="Size4-Regular",d="rbrack",p=667):e==="\\lfloor"||e==="\u230A"?(h=l="\u23A2",f="\u23A3",m="Size4-Regular",d="lfloor",p=667):e==="\\lceil"||e==="\u2308"?(l="\u23A1",h=f="\u23A2",m="Size4-Regular",d="lceil",p=667):e==="\\rfloor"||e==="\u230B"?(h=l="\u23A5",f="\u23A6",m="Size4-Regular",d="rfloor",p=667):e==="\\rceil"||e==="\u2309"?(l="\u23A4",h=f="\u23A5",m="Size4-Regular",d="rceil",p=667):e==="("||e==="\\lparen"?(l="\u239B",h="\u239C",f="\u239D",m="Size4-Regular",d="lparen",p=875):e===")"||e==="\\rparen"?(l="\u239E",h="\u239F",f="\u23A0",m="Size4-Regular",d="rparen",p=875):e==="\\{"||e==="\\lbrace"?(l="\u23A7",u="\u23A8",f="\u23A9",h="\u23AA",m="Size4-Regular"):e==="\\}"||e==="\\rbrace"?(l="\u23AB",u="\u23AC",f="\u23AD",h="\u23AA",m="Size4-Regular"):e==="\\lgroup"||e==="\u27EE"?(l="\u23A7",f="\u23A9",h="\u23AA",m="Size4-Regular"):e==="\\rgroup"||e==="\u27EF"?(l="\u23AB",f="\u23AD",h="\u23AA",m="Size4-Regular"):e==="\\lmoustache"||e==="\u23B0"?(l="\u23A7",f="\u23AD",h="\u23AA",m="Size4-Regular"):(e==="\\rmoustache"||e==="\u23B1")&&(l="\u23AB",f="\u23A9",h="\u23AA",m="Size4-Regular");var g=qy(l,m,a),y=g.height+g.depth,v=qy(h,m,a),x=v.height+v.depth,b=qy(f,m,a),T=b.height+b.depth,S=0,w=1;if(u!==null){var k=qy(u,m,a);S=k.height+k.depth,w=2}var A=y+T+S,C=Math.max(0,Math.ceil((r-A)/(w*x))),R=A+C*w*x,I=i.fontMetrics().axisHeight;n&&(I*=i.sizeMultiplier);var L=R/2-I,E=[];if(d.length>0){var D=R-y-T,_=Math.round(R*1e3),O=vTe(d,Math.round(D*1e3)),M=new Zl(d,O),P=(p/1e3).toFixed(3)+"em",B=(_/1e3).toFixed(3)+"em",F=new dl([M],{width:P,height:B,viewBox:"0 0 "+p+" "+_}),G=$e.makeSvgSpan([],[F],i);G.height=_/1e3,G.style.width=P,G.style.height=B,E.push({type:"elem",elem:G})}else{if(E.push(z7(f,m,a)),E.push(g3),u===null){var $=R-y-T+2*nA;E.push(G7(h,$,i))}else{var U=(R-y-T-S)/2+2*nA;E.push(G7(h,U,i)),E.push(g3),E.push(z7(u,m,a)),E.push(g3),E.push(G7(h,U,i))}E.push(g3),E.push(z7(l,m,a))}var j=i.havingBaseStyle(nr.TEXT),te=$e.makeVList({positionType:"bottom",positionData:L,children:E},j);return pA($e.makeSpan(["delimsizing","mult"],[te],j),nr.TEXT,i,s)},"makeStackedDelim"),V7=80,U7=.08,H7=o(function(e,r,n,i,a){var s=gTe(e,i,n),l=new Zl(e,s),u=new dl([l],{width:"400em",height:St(r),viewBox:"0 0 400000 "+n,preserveAspectRatio:"xMinYMin slice"});return $e.makeSvgSpan(["hide-tail"],[u],a)},"sqrtSvg"),fwe=o(function(e,r){var n=r.havingBaseSizing(),i=wU("\\surd",e*n.sizeMultiplier,TU,n),a=n.sizeMultiplier,s=Math.max(0,r.minRuleThickness-r.fontMetrics().sqrtRuleThickness),l,u=0,h=0,f=0,d;return i.type==="small"?(f=1e3+1e3*s+V7,e<1?a=1:e<1.4&&(a=.7),u=(1+s+U7)/a,h=(1+s)/a,l=H7("sqrtMain",u,f,s,r),l.style.minWidth="0.853em",d=.833/a):i.type==="large"?(f=(1e3+V7)*Yy[i.size],h=(Yy[i.size]+s)/a,u=(Yy[i.size]+s+U7)/a,l=H7("sqrtSize"+i.size,u,f,s,r),l.style.minWidth="1.02em",d=1/a):(u=e+s+U7,h=e+s,f=Math.floor(1e3*e+s)+V7,l=H7("sqrtTall",u,f,s,r),l.style.minWidth="0.742em",d=1.056),l.height=h,l.style.height=St(u),{span:l,advanceWidth:d,ruleWidth:(r.fontMetrics().sqrtRuleThickness+s)*a}},"makeSqrtImage"),xU=["(","\\lparen",")","\\rparen","[","\\lbrack","]","\\rbrack","\\{","\\lbrace","\\}","\\rbrace","\\lfloor","\\rfloor","\u230A","\u230B","\\lceil","\\rceil","\u2308","\u2309","\\surd"],dwe=["\\uparrow","\\downarrow","\\updownarrow","\\Uparrow","\\Downarrow","\\Updownarrow","|","\\|","\\vert","\\Vert","\\lvert","\\rvert","\\lVert","\\rVert","\\lgroup","\\rgroup","\u27EE","\u27EF","\\lmoustache","\\rmoustache","\u23B0","\u23B1"],bU=["<",">","\\langle","\\rangle","/","\\backslash","\\lt","\\gt"],Yy=[0,1.2,1.8,2.4,3],pwe=o(function(e,r,n,i,a){if(e==="<"||e==="\\lt"||e==="\u27E8"?e="\\langle":(e===">"||e==="\\gt"||e==="\u27E9")&&(e="\\rangle"),er.contains(xU,e)||er.contains(bU,e))return yU(e,r,!1,n,i,a);if(er.contains(dwe,e))return vU(e,Yy[r],!1,n,i,a);throw new gt("Illegal delimiter: '"+e+"'")},"makeSizedDelim"),mwe=[{type:"small",style:nr.SCRIPTSCRIPT},{type:"small",style:nr.SCRIPT},{type:"small",style:nr.TEXT},{type:"large",size:1},{type:"large",size:2},{type:"large",size:3},{type:"large",size:4}],gwe=[{type:"small",style:nr.SCRIPTSCRIPT},{type:"small",style:nr.SCRIPT},{type:"small",style:nr.TEXT},{type:"stack"}],TU=[{type:"small",style:nr.SCRIPTSCRIPT},{type:"small",style:nr.SCRIPT},{type:"small",style:nr.TEXT},{type:"large",size:1},{type:"large",size:2},{type:"large",size:3},{type:"large",size:4},{type:"stack"}],ywe=o(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.")},"delimTypeToFont"),wU=o(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]},"traverseSequence"),kU=o(function(e,r,n,i,a,s){e==="<"||e==="\\lt"||e==="\u27E8"?e="\\langle":(e===">"||e==="\\gt"||e==="\u27E9")&&(e="\\rangle");var l;er.contains(bU,e)?l=mwe:er.contains(xU,e)?l=TU:l=gwe;var u=wU(e,r,l,i);return u.type==="small"?lwe(e,u.style,n,i,a,s):u.type==="large"?yU(e,u.size,n,i,a,s):vU(e,r,n,i,a,s)},"makeCustomSizedDelim"),vwe=o(function(e,r,n,i,a,s){var l=i.fontMetrics().axisHeight*i.sizeMultiplier,u=901,h=5/i.fontMetrics().ptPerEm,f=Math.max(r-l,n+l),d=Math.max(f/500*u,2*f-h);return kU(e,d,!0,i,a,s)},"makeLeftRightDelim"),fu={sqrtImage:fwe,sizedDelim:pwe,sizeToMaxHeight:Yy,customSizedDelim:kU,leftRightDelim:vwe},AV={"\\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}},xwe=["(","\\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","."];o(R3,"checkDelimiter");Mt({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:o((t,e)=>{var r=R3(e[0],t);return{type:"delimsizing",mode:t.parser.mode,size:AV[t.funcName].size,mclass:AV[t.funcName].mclass,delim:r.text}},"handler"),htmlBuilder:o((t,e)=>t.delim==="."?$e.makeSpan([t.mclass]):fu.sizedDelim(t.delim,t.size,e,t.mode,[t.mclass]),"htmlBuilder"),mathmlBuilder:o(t=>{var e=[];t.delim!=="."&&e.push(Lo(t.delim,t.mode));var r=new mt.MathNode("mo",e);t.mclass==="mopen"||t.mclass==="mclose"?r.setAttribute("fence","true"):r.setAttribute("fence","false"),r.setAttribute("stretchy","true");var n=St(fu.sizeToMaxHeight[t.size]);return r.setAttribute("minsize",n),r.setAttribute("maxsize",n),r},"mathmlBuilder")});o(_V,"assertParsed");Mt({type:"leftright-right",names:["\\right"],props:{numArgs:1,primitive:!0},handler:o((t,e)=>{var r=t.parser.gullet.macros.get("\\current@color");if(r&&typeof r!="string")throw new gt("\\current@color set to non-string in \\right");return{type:"leftright-right",mode:t.parser.mode,delim:R3(e[0],t).text,color:r}},"handler")});Mt({type:"leftright",names:["\\left"],props:{numArgs:1,primitive:!0},handler:o((t,e)=>{var r=R3(e[0],t),n=t.parser;++n.leftrightDepth;var i=n.parseExpression(!1);--n.leftrightDepth,n.expect("\\right",!1);var a=Tr(n.parseFunction(),"leftright-right");return{type:"leftright",mode:n.mode,body:i,left:r.text,right:a.delim,rightColor:a.color}},"handler"),htmlBuilder:o((t,e)=>{_V(t);for(var r=Ii(t.body,e,!0,["mopen","mclose"]),n=0,i=0,a=!1,s=0;s{_V(t);var r=As(t.body,e);if(t.left!=="."){var n=new mt.MathNode("mo",[Lo(t.left,t.mode)]);n.setAttribute("fence","true"),r.unshift(n)}if(t.right!=="."){var i=new mt.MathNode("mo",[Lo(t.right,t.mode)]);i.setAttribute("fence","true"),t.rightColor&&i.setAttribute("mathcolor",t.rightColor),r.push(i)}return uA(r)},"mathmlBuilder")});Mt({type:"middle",names:["\\middle"],props:{numArgs:1,primitive:!0},handler:o((t,e)=>{var r=R3(e[0],t);if(!t.parser.leftrightDepth)throw new gt("\\middle without preceding \\left",r);return{type:"middle",mode:t.parser.mode,delim:r.text}},"handler"),htmlBuilder:o((t,e)=>{var r;if(t.delim===".")r=Zy(e,[]);else{r=fu.sizedDelim(t.delim,1,e,t.mode,[]);var n={delim:t.delim,options:e};r.isMiddle=n}return r},"htmlBuilder"),mathmlBuilder:o((t,e)=>{var r=t.delim==="\\vert"||t.delim==="|"?Lo("|","text"):Lo(t.delim,t.mode),n=new mt.MathNode("mo",[r]);return n.setAttribute("fence","true"),n.setAttribute("lspace","0.05em"),n.setAttribute("rspace","0.05em"),n},"mathmlBuilder")});mA=o((t,e)=>{var r=$e.wrapFragment(Hr(t.body,e),e),n=t.label.slice(1),i=e.sizeMultiplier,a,s=0,l=er.isCharacterBox(t.body);if(n==="sout")a=$e.makeSpan(["stretchy","sout"]),a.height=e.fontMetrics().defaultRuleThickness/i,s=-.5*e.fontMetrics().xHeight;else if(n==="phase"){var u=ii({number:.6,unit:"pt"},e),h=ii({number:.35,unit:"ex"},e),f=e.havingBaseSizing();i=i/f.sizeMultiplier;var d=r.height+r.depth+u+h;r.style.paddingLeft=St(d/2+u);var p=Math.floor(1e3*d*i),m=pTe(p),g=new dl([new Zl("phase",m)],{width:"400em",height:St(p/1e3),viewBox:"0 0 400000 "+p,preserveAspectRatio:"xMinYMin slice"});a=$e.makeSvgSpan(["hide-tail"],[g],e),a.style.height=St(d),s=r.depth+u+h}else{/cancel/.test(n)?l||r.classes.push("cancel-pad"):n==="angl"?r.classes.push("anglpad"):r.classes.push("boxpad");var y=0,v=0,x=0;/box/.test(n)?(x=Math.max(e.fontMetrics().fboxrule,e.minRuleThickness),y=e.fontMetrics().fboxsep+(n==="colorbox"?0:x),v=y):n==="angl"?(x=Math.max(e.fontMetrics().defaultRuleThickness,e.minRuleThickness),y=4*x,v=Math.max(0,.25-r.depth)):(y=l?.2:0,v=y),a=pu.encloseSpan(r,n,y,v,e),/fbox|boxed|fcolorbox/.test(n)?(a.style.borderStyle="solid",a.style.borderWidth=St(x)):n==="angl"&&x!==.049&&(a.style.borderTopWidth=St(x),a.style.borderRightWidth=St(x)),s=r.depth+v,t.backgroundColor&&(a.style.backgroundColor=t.backgroundColor,t.borderColor&&(a.style.borderColor=t.borderColor))}var b;if(t.backgroundColor)b=$e.makeVList({positionType:"individualShift",children:[{type:"elem",elem:a,shift:s},{type:"elem",elem:r,shift:0}]},e);else{var T=/cancel|phase/.test(n)?["svg-align"]:[];b=$e.makeVList({positionType:"individualShift",children:[{type:"elem",elem:r,shift:0},{type:"elem",elem:a,shift:s,wrapperClasses:T}]},e)}return/cancel/.test(n)&&(b.height=r.height,b.depth=r.depth),/cancel/.test(n)&&!l?$e.makeSpan(["mord","cancel-lap"],[b],e):$e.makeSpan(["mord"],[b],e)},"htmlBuilder$7"),gA=o((t,e)=>{var r=0,n=new mt.MathNode(t.label.indexOf("colorbox")>-1?"mpadded":"menclose",[wn(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},"mathmlBuilder$6");Mt({type:"enclose",names:["\\colorbox"],props:{numArgs:2,allowedInText:!0,argTypes:["color","text"]},handler(t,e,r){var{parser:n,funcName:i}=t,a=Tr(e[0],"color-token").color,s=e[1];return{type:"enclose",mode:n.mode,label:i,backgroundColor:a,body:s}},htmlBuilder:mA,mathmlBuilder:gA});Mt({type:"enclose",names:["\\fcolorbox"],props:{numArgs:3,allowedInText:!0,argTypes:["color","color","text"]},handler(t,e,r){var{parser:n,funcName:i}=t,a=Tr(e[0],"color-token").color,s=Tr(e[1],"color-token").color,l=e[2];return{type:"enclose",mode:n.mode,label:i,backgroundColor:s,borderColor:a,body:l}},htmlBuilder:mA,mathmlBuilder:gA});Mt({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]}}});Mt({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:mA,mathmlBuilder:gA});Mt({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]}}});EU={};o(Jl,"defineEnvironment");SU={};o(ce,"defineMacro");o(DV,"getHLines");N3=o(t=>{var e=t.parser.settings;if(!e.displayMode)throw new gt("{"+t.envName+"} can be used only in display mode.")},"validateAmsEnvironmentContext");o(yA,"getAutoTag");o(wh,"parseArray");o(vA,"dCellStyle");ec=o(function(e,r){var n,i,a=e.body.length,s=e.hLinesBeforeRow,l=0,u=new Array(a),h=[],f=Math.max(r.fontMetrics().arrayRuleWidth,r.minRuleThickness),d=1/r.fontMetrics().ptPerEm,p=5*d;if(e.colSeparationType&&e.colSeparationType==="small"){var m=r.havingStyle(nr.SCRIPT).sizeMultiplier;p=.2778*(m/r.sizeMultiplier)}var g=e.colSeparationType==="CD"?ii({number:3,unit:"ex"},r):12*d,y=3*d,v=e.arraystretch*g,x=.7*v,b=.3*v,T=0;function S(q){for(var Ve=0;Ve0&&(T+=.25),h.push({pos:T,isDashed:q[Ve]})}for(o(S,"setHLinePos"),S(s[0]),n=0;n0&&(L+=b,Aq))for(n=0;n=l)){var J=void 0;(i>0||e.hskipBeforeAndAfter)&&(J=er.deflt(U.pregap,p),J!==0&&(O=$e.makeSpan(["arraycolsep"],[]),O.style.width=St(J),_.push(O)));var ue=[];for(n=0;n0){for(var K=$e.makeLineSpan("hline",r,f),ae=$e.makeLineSpan("hdashline",r,f),Q=[{type:"elem",elem:u,shift:0}];h.length>0;){var de=h.pop(),ne=de.pos-E;de.isDashed?Q.push({type:"elem",elem:ae,shift:ne}):Q.push({type:"elem",elem:K,shift:ne})}u=$e.makeVList({positionType:"individualShift",children:Q},r)}if(P.length===0)return $e.makeSpan(["mord"],[u],r);var Te=$e.makeVList({positionType:"individualShift",children:P},r);return Te=$e.makeSpan(["tag"],[Te],r),$e.makeFragment([u,Te])},"htmlBuilder"),bwe={c:"center ",l:"left ",r:"right "},tc=o(function(e,r){for(var n=[],i=new mt.MathNode("mtd",[],["mtr-glue"]),a=new mt.MathNode("mtd",[],["mml-eqn-num"]),s=0;s0){var g=e.cols,y="",v=!1,x=0,b=g.length;g[0].type==="separator"&&(p+="top ",x=1),g[g.length-1].type==="separator"&&(p+="bottom ",b-=1);for(var T=x;T0?"left ":"",p+=C[C.length-1].length>0?"right ":"";for(var R=1;R-1?"alignat":"align",a=e.envName==="split",s=wh(e.parser,{cols:n,addJot:!0,autoTag:a?void 0:yA(e.envName),emptySingleRow:!0,colSeparationType:i,maxNumCols:a?2:void 0,leqno:e.parser.settings.leqno},"display"),l,u=0,h={type:"ordgroup",mode:e.mode,body:[]};if(r[0]&&r[0].type==="ordgroup"){for(var f="",d=0;d0&&m&&(v=1),n[g]={type:"align",align:y,pregap:v,postgap:0}}return s.colSeparationType=m?"align":"alignat",s},"alignedHandler");Jl({type:"array",names:["array","darray"],props:{numArgs:1},handler(t,e){var r=D3(e[0]),n=r?[e[0]]:Tr(e[0],"ordgroup").body,i=n.map(function(s){var l=fA(s),u=l.text;if("lcr".indexOf(u)!==-1)return{type:"align",align:u};if(u==="|")return{type:"separator",separator:"|"};if(u===":")return{type:"separator",separator:":"};throw new gt("Unknown column alignment: "+u,s)}),a={cols:i,hskipBeforeAndAfter:!0,maxNumCols:i.length};return wh(t.parser,a,vA(t.envName))},htmlBuilder:ec,mathmlBuilder:tc});Jl({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 gt("Expected l or c or r",i.nextToken);i.consume(),i.consumeSpaces(),i.expect("]"),i.consume(),n.cols=[{type:"align",align:r}]}}var a=wh(t.parser,n,vA(t.envName)),s=Math.max(0,...a.body.map(l=>l.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:ec,mathmlBuilder:tc});Jl({type:"array",names:["smallmatrix"],props:{numArgs:0},handler(t){var e={arraystretch:.5},r=wh(t.parser,e,"script");return r.colSeparationType="small",r},htmlBuilder:ec,mathmlBuilder:tc});Jl({type:"array",names:["subarray"],props:{numArgs:1},handler(t,e){var r=D3(e[0]),n=r?[e[0]]:Tr(e[0],"ordgroup").body,i=n.map(function(s){var l=fA(s),u=l.text;if("lc".indexOf(u)!==-1)return{type:"align",align:u};throw new gt("Unknown column alignment: "+u,s)});if(i.length>1)throw new gt("{subarray} can contain only one column");var a={cols:i,hskipBeforeAndAfter:!1,arraystretch:.5};if(a=wh(t.parser,a,"script"),a.body.length>0&&a.body[0].length>1)throw new gt("{subarray} can contain only one column");return a},htmlBuilder:ec,mathmlBuilder:tc});Jl({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=wh(t.parser,e,vA(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:ec,mathmlBuilder:tc});Jl({type:"array",names:["align","align*","aligned","split"],props:{numArgs:0},handler:CU,htmlBuilder:ec,mathmlBuilder:tc});Jl({type:"array",names:["gathered","gather","gather*"],props:{numArgs:0},handler(t){er.contains(["gather","gather*"],t.envName)&&N3(t);var e={cols:[{type:"align",align:"c"}],addJot:!0,colSeparationType:"gather",autoTag:yA(t.envName),emptySingleRow:!0,leqno:t.parser.settings.leqno};return wh(t.parser,e,"display")},htmlBuilder:ec,mathmlBuilder:tc});Jl({type:"array",names:["alignat","alignat*","alignedat"],props:{numArgs:1},handler:CU,htmlBuilder:ec,mathmlBuilder:tc});Jl({type:"array",names:["equation","equation*"],props:{numArgs:0},handler(t){N3(t);var e={autoTag:yA(t.envName),emptySingleRow:!0,singleRow:!0,maxNumCols:1,leqno:t.parser.settings.leqno};return wh(t.parser,e,"display")},htmlBuilder:ec,mathmlBuilder:tc});Jl({type:"array",names:["CD"],props:{numArgs:0},handler(t){return N3(t),swe(t.parser)},htmlBuilder:ec,mathmlBuilder:tc});ce("\\nonumber","\\gdef\\@eqnsw{0}");ce("\\notag","\\nonumber");Mt({type:"text",names:["\\hline","\\hdashline"],props:{numArgs:0,allowedInText:!0,allowedInMath:!0},handler(t,e){throw new gt(t.funcName+" valid only within array environment")}});LV=EU;Mt({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 gt("Invalid environment name",i);for(var a="",s=0;s{var r=t.font,n=e.withFont(r);return Hr(t.body,n)},"htmlBuilder$5"),_U=o((t,e)=>{var r=t.font,n=e.withFont(r);return wn(t.body,n)},"mathmlBuilder$4"),RV={"\\Bbb":"\\mathbb","\\bold":"\\mathbf","\\frak":"\\mathfrak","\\bm":"\\boldsymbol"};Mt({type:"font",names:["\\mathrm","\\mathit","\\mathbf","\\mathnormal","\\mathsfit","\\mathbb","\\mathcal","\\mathfrak","\\mathscr","\\mathsf","\\mathtt","\\Bbb","\\bold","\\frak"],props:{numArgs:1,allowedInArgument:!0},handler:o((t,e)=>{var{parser:r,funcName:n}=t,i=E3(e[0]),a=n;return a in RV&&(a=RV[a]),{type:"font",mode:r.mode,font:a.slice(1),body:i}},"handler"),htmlBuilder:AU,mathmlBuilder:_U});Mt({type:"mclass",names:["\\boldsymbol","\\bm"],props:{numArgs:1},handler:o((t,e)=>{var{parser:r}=t,n=e[0],i=er.isCharacterBox(n);return{type:"mclass",mode:r.mode,mclass:L3(n),body:[{type:"font",mode:r.mode,font:"boldsymbol",body:n}],isCharacterBox:i}},"handler")});Mt({type:"font",names:["\\rm","\\sf","\\tt","\\bf","\\it","\\cal"],props:{numArgs:0,allowedInText:!0},handler:o((t,e)=>{var{parser:r,funcName:n,breakOnTokenText:i}=t,{mode:a}=r,s=r.parseExpression(!0,i),l="math"+n.slice(1);return{type:"font",mode:a,font:l,body:{type:"ordgroup",mode:r.mode,body:s}}},"handler"),htmlBuilder:AU,mathmlBuilder:_U});DU=o((t,e)=>{var r=e;return t==="display"?r=r.id>=nr.SCRIPT.id?r.text():nr.DISPLAY:t==="text"&&r.size===nr.DISPLAY.size?r=nr.TEXT:t==="script"?r=nr.SCRIPT:t==="scriptscript"&&(r=nr.SCRIPTSCRIPT),r},"adjustStyle"),xA=o((t,e)=>{var r=DU(t.size,e.style),n=r.fracNum(),i=r.fracDen(),a;a=e.havingStyle(n);var s=Hr(t.numer,a,e);if(t.continued){var l=8.5/e.fontMetrics().ptPerEm,u=3.5/e.fontMetrics().ptPerEm;s.height=s.height0?g=3*p:g=7*p,y=e.fontMetrics().denom1):(d>0?(m=e.fontMetrics().num2,g=p):(m=e.fontMetrics().num3,g=3*p),y=e.fontMetrics().denom2);var v;if(f){var b=e.fontMetrics().axisHeight;m-s.depth-(b+.5*d){var r=new mt.MathNode("mfrac",[wn(t.numer,e),wn(t.denom,e)]);if(!t.hasBarLine)r.setAttribute("linethickness","0px");else if(t.barSize){var n=ii(t.barSize,e);r.setAttribute("linethickness",St(n))}var i=DU(t.size,e.style);if(i.size!==e.style.size){r=new mt.MathNode("mstyle",[r]);var a=i.size===nr.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 l=new mt.MathNode("mo",[new mt.TextNode(t.leftDelim.replace("\\",""))]);l.setAttribute("fence","true"),s.push(l)}if(s.push(r),t.rightDelim!=null){var u=new mt.MathNode("mo",[new mt.TextNode(t.rightDelim.replace("\\",""))]);u.setAttribute("fence","true"),s.push(u)}return uA(s)}return r},"mathmlBuilder$3");Mt({type:"genfrac",names:["\\dfrac","\\frac","\\tfrac","\\dbinom","\\binom","\\tbinom","\\\\atopfrac","\\\\bracefrac","\\\\brackfrac"],props:{numArgs:2,allowedInArgument:!0},handler:o((t,e)=>{var{parser:r,funcName:n}=t,i=e[0],a=e[1],s,l=null,u=null,h="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,l="(",u=")";break;case"\\\\bracefrac":s=!1,l="\\{",u="\\}";break;case"\\\\brackfrac":s=!1,l="[",u="]";break;default:throw new Error("Unrecognized genfrac command")}switch(n){case"\\dfrac":case"\\dbinom":h="display";break;case"\\tfrac":case"\\tbinom":h="text";break}return{type:"genfrac",mode:r.mode,continued:!1,numer:i,denom:a,hasBarLine:s,leftDelim:l,rightDelim:u,size:h,barSize:null}},"handler"),htmlBuilder:xA,mathmlBuilder:bA});Mt({type:"genfrac",names:["\\cfrac"],props:{numArgs:2},handler:o((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}},"handler")});Mt({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}}});NV=["display","text","script","scriptscript"],MV=o(function(e){var r=null;return e.length>0&&(r=e,r=r==="."?null:r),r},"delimFromValue");Mt({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=E3(e[0]),s=a.type==="atom"&&a.family==="open"?MV(a.text):null,l=E3(e[1]),u=l.type==="atom"&&l.family==="close"?MV(l.text):null,h=Tr(e[2],"size"),f,d=null;h.isBlank?f=!0:(d=h.value,f=d.number>0);var p="auto",m=e[3];if(m.type==="ordgroup"){if(m.body.length>0){var g=Tr(m.body[0],"textord");p=NV[Number(g.text)]}}else m=Tr(m,"textord"),p=NV[Number(m.text)];return{type:"genfrac",mode:r.mode,numer:n,denom:i,continued:!1,hasBarLine:f,barSize:d,leftDelim:s,rightDelim:u,size:p}},htmlBuilder:xA,mathmlBuilder:bA});Mt({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:Tr(e[0],"size").value,token:i}}});Mt({type:"genfrac",names:["\\\\abovefrac"],props:{numArgs:3,argTypes:["math","size","math"]},handler:o((t,e)=>{var{parser:r,funcName:n}=t,i=e[0],a=J5e(Tr(e[1],"infix").size),s=e[2],l=a.number>0;return{type:"genfrac",mode:r.mode,numer:i,denom:s,continued:!1,hasBarLine:l,barSize:a,leftDelim:null,rightDelim:null,size:"auto"}},"handler"),htmlBuilder:xA,mathmlBuilder:bA});LU=o((t,e)=>{var r=e.style,n,i;t.type==="supsub"?(n=t.sup?Hr(t.sup,e.havingStyle(r.sup()),e):Hr(t.sub,e.havingStyle(r.sub()),e),i=Tr(t.base,"horizBrace")):i=Tr(t,"horizBrace");var a=Hr(i.base,e.havingBaseStyle(nr.DISPLAY)),s=pu.svgSpan(i,e),l;if(i.isOver?(l=$e.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:a},{type:"kern",size:.1},{type:"elem",elem:s}]},e),l.children[0].children[0].children[1].classes.push("svg-align")):(l=$e.makeVList({positionType:"bottom",positionData:a.depth+.1+s.height,children:[{type:"elem",elem:s},{type:"kern",size:.1},{type:"elem",elem:a}]},e),l.children[0].children[0].children[0].classes.push("svg-align")),n){var u=$e.makeSpan(["mord",i.isOver?"mover":"munder"],[l],e);i.isOver?l=$e.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:u},{type:"kern",size:.2},{type:"elem",elem:n}]},e):l=$e.makeVList({positionType:"bottom",positionData:u.depth+.2+n.height+n.depth,children:[{type:"elem",elem:n},{type:"kern",size:.2},{type:"elem",elem:u}]},e)}return $e.makeSpan(["mord",i.isOver?"mover":"munder"],[l],e)},"htmlBuilder$3"),Twe=o((t,e)=>{var r=pu.mathMLnode(t.label);return new mt.MathNode(t.isOver?"mover":"munder",[wn(t.base,e),r])},"mathmlBuilder$2");Mt({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:LU,mathmlBuilder:Twe});Mt({type:"href",names:["\\href"],props:{numArgs:2,argTypes:["url","original"],allowedInText:!0},handler:o((t,e)=>{var{parser:r}=t,n=e[1],i=Tr(e[0],"url").url;return r.settings.isTrusted({command:"\\href",url:i})?{type:"href",mode:r.mode,href:i,body:gi(n)}:r.formatUnsupportedCmd("\\href")},"handler"),htmlBuilder:o((t,e)=>{var r=Ii(t.body,e,!1);return $e.makeAnchor(t.href,[],r,e)},"htmlBuilder"),mathmlBuilder:o((t,e)=>{var r=Th(t.body,e);return r instanceof es||(r=new es("mrow",[r])),r.setAttribute("href",t.href),r},"mathmlBuilder")});Mt({type:"href",names:["\\url"],props:{numArgs:1,argTypes:["url"],allowedInText:!0},handler:o((t,e)=>{var{parser:r}=t,n=Tr(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=Tr(e[0],"raw").string,s=e[1];r.settings.strict&&r.settings.reportNonstrict("htmlExtension","HTML extension is disabled on strict mode");var l,u={};switch(n){case"\\htmlClass":u.class=a,l={command:"\\htmlClass",class:a};break;case"\\htmlId":u.id=a,l={command:"\\htmlId",id:a};break;case"\\htmlStyle":u.style=a,l={command:"\\htmlStyle",style:a};break;case"\\htmlData":{for(var h=a.split(","),f=0;f{var r=Ii(t.body,e,!1),n=["enclosing"];t.attributes.class&&n.push(...t.attributes.class.trim().split(/\s+/));var i=$e.makeSpan(n,r,e);for(var a in t.attributes)a!=="class"&&t.attributes.hasOwnProperty(a)&&i.setAttribute(a,t.attributes[a]);return i},"htmlBuilder"),mathmlBuilder:o((t,e)=>Th(t.body,e),"mathmlBuilder")});Mt({type:"htmlmathml",names:["\\html@mathml"],props:{numArgs:2,allowedInText:!0},handler:o((t,e)=>{var{parser:r}=t;return{type:"htmlmathml",mode:r.mode,html:gi(e[0]),mathml:gi(e[1])}},"handler"),htmlBuilder:o((t,e)=>{var r=Ii(t.html,e,!1);return $e.makeFragment(r)},"htmlBuilder"),mathmlBuilder:o((t,e)=>Th(t.mathml,e),"mathmlBuilder")});q7=o(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 gt("Invalid size: '"+e+"' in \\includegraphics");var n={number:+(r[1]+r[2]),unit:r[3]};if(!jV(n))throw new gt("Invalid unit: '"+n.unit+"' in \\includegraphics.");return n},"sizeData");Mt({type:"includegraphics",names:["\\includegraphics"],props:{numArgs:1,numOptionalArgs:1,argTypes:["raw","url"],allowedInText:!1},handler:o((t,e,r)=>{var{parser:n}=t,i={number:0,unit:"em"},a={number:.9,unit:"em"},s={number:0,unit:"em"},l="";if(r[0])for(var u=Tr(r[0],"raw").string,h=u.split(","),f=0;f{var r=ii(t.height,e),n=0;t.totalheight.number>0&&(n=ii(t.totalheight,e)-r);var i=0;t.width.number>0&&(i=ii(t.width,e));var a={height:St(r+n)};i>0&&(a.width=St(i)),n>0&&(a.verticalAlign=St(-n));var s=new Q7(t.src,t.alt,a);return s.height=r,s.depth=n,s},"htmlBuilder"),mathmlBuilder:o((t,e)=>{var r=new mt.MathNode("mglyph",[]);r.setAttribute("alt",t.alt);var n=ii(t.height,e),i=0;if(t.totalheight.number>0&&(i=ii(t.totalheight,e)-n,r.setAttribute("valign",St(-i))),r.setAttribute("height",St(n+i)),t.width.number>0){var a=ii(t.width,e);r.setAttribute("width",St(a))}return r.setAttribute("src",t.src),r},"mathmlBuilder")});Mt({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=Tr(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 $e.makeGlue(t.dimension,e)},mathmlBuilder(t,e){var r=ii(t.dimension,e);return new mt.SpaceNode(r)}});Mt({type:"lap",names:["\\mathllap","\\mathrlap","\\mathclap"],props:{numArgs:1,allowedInText:!0},handler:o((t,e)=>{var{parser:r,funcName:n}=t,i=e[0];return{type:"lap",mode:r.mode,alignment:n.slice(5),body:i}},"handler"),htmlBuilder:o((t,e)=>{var r;t.alignment==="clap"?(r=$e.makeSpan([],[Hr(t.body,e)]),r=$e.makeSpan(["inner"],[r],e)):r=$e.makeSpan(["inner"],[Hr(t.body,e)]);var n=$e.makeSpan(["fix"],[]),i=$e.makeSpan([t.alignment],[r,n],e),a=$e.makeSpan(["strut"]);return a.style.height=St(i.height+i.depth),i.depth&&(a.style.verticalAlign=St(-i.depth)),i.children.unshift(a),i=$e.makeSpan(["thinbox"],[i],e),$e.makeSpan(["mord","vbox"],[i],e)},"htmlBuilder"),mathmlBuilder:o((t,e)=>{var r=new mt.MathNode("mpadded",[wn(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},"mathmlBuilder")});Mt({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}}});Mt({type:"text",names:["\\)","\\]"],props:{numArgs:0,allowedInText:!0,allowedInMath:!1},handler(t,e){throw new gt("Mismatched "+t.funcName)}});IV=o((t,e)=>{switch(e.style.size){case nr.DISPLAY.size:return t.display;case nr.TEXT.size:return t.text;case nr.SCRIPT.size:return t.script;case nr.SCRIPTSCRIPT.size:return t.scriptscript;default:return t.text}},"chooseMathStyle");Mt({type:"mathchoice",names:["\\mathchoice"],props:{numArgs:4,primitive:!0},handler:o((t,e)=>{var{parser:r}=t;return{type:"mathchoice",mode:r.mode,display:gi(e[0]),text:gi(e[1]),script:gi(e[2]),scriptscript:gi(e[3])}},"handler"),htmlBuilder:o((t,e)=>{var r=IV(t,e),n=Ii(r,e,!1);return $e.makeFragment(n)},"htmlBuilder"),mathmlBuilder:o((t,e)=>{var r=IV(t,e);return Th(r,e)},"mathmlBuilder")});RU=o((t,e,r,n,i,a,s)=>{t=$e.makeSpan([],[t]);var l=r&&er.isCharacterBox(r),u,h;if(e){var f=Hr(e,n.havingStyle(i.sup()),n);h={elem:f,kern:Math.max(n.fontMetrics().bigOpSpacing1,n.fontMetrics().bigOpSpacing3-f.depth)}}if(r){var d=Hr(r,n.havingStyle(i.sub()),n);u={elem:d,kern:Math.max(n.fontMetrics().bigOpSpacing2,n.fontMetrics().bigOpSpacing4-d.height)}}var p;if(h&&u){var m=n.fontMetrics().bigOpSpacing5+u.elem.height+u.elem.depth+u.kern+t.depth+s;p=$e.makeVList({positionType:"bottom",positionData:m,children:[{type:"kern",size:n.fontMetrics().bigOpSpacing5},{type:"elem",elem:u.elem,marginLeft:St(-a)},{type:"kern",size:u.kern},{type:"elem",elem:t},{type:"kern",size:h.kern},{type:"elem",elem:h.elem,marginLeft:St(a)},{type:"kern",size:n.fontMetrics().bigOpSpacing5}]},n)}else if(u){var g=t.height-s;p=$e.makeVList({positionType:"top",positionData:g,children:[{type:"kern",size:n.fontMetrics().bigOpSpacing5},{type:"elem",elem:u.elem,marginLeft:St(-a)},{type:"kern",size:u.kern},{type:"elem",elem:t}]},n)}else if(h){var y=t.depth+s;p=$e.makeVList({positionType:"bottom",positionData:y,children:[{type:"elem",elem:t},{type:"kern",size:h.kern},{type:"elem",elem:h.elem,marginLeft:St(a)},{type:"kern",size:n.fontMetrics().bigOpSpacing5}]},n)}else return t;var v=[p];if(u&&a!==0&&!l){var x=$e.makeSpan(["mspace"],[],n);x.style.marginRight=St(a),v.unshift(x)}return $e.makeSpan(["mop","op-limits"],v,n)},"assembleSupSub"),NU=["\\smallint"],C0=o((t,e)=>{var r,n,i=!1,a;t.type==="supsub"?(r=t.sup,n=t.sub,a=Tr(t.base,"op"),i=!0):a=Tr(t,"op");var s=e.style,l=!1;s.size===nr.DISPLAY.size&&a.symbol&&!er.contains(NU,a.name)&&(l=!0);var u;if(a.symbol){var h=l?"Size2-Regular":"Size1-Regular",f="";if((a.name==="\\oiint"||a.name==="\\oiiint")&&(f=a.name.slice(1),a.name=f==="oiint"?"\\iint":"\\iiint"),u=$e.makeSymbol(a.name,h,"math",e,["mop","op-symbol",l?"large-op":"small-op"]),f.length>0){var d=u.italic,p=$e.staticSvg(f+"Size"+(l?"2":"1"),e);u=$e.makeVList({positionType:"individualShift",children:[{type:"elem",elem:u,shift:0},{type:"elem",elem:p,shift:l?.08:0}]},e),a.name="\\"+f,u.classes.unshift("mop"),u.italic=d}}else if(a.body){var m=Ii(a.body,e,!0);m.length===1&&m[0]instanceof Cs?(u=m[0],u.classes[0]="mop"):u=$e.makeSpan(["mop"],m,e)}else{for(var g=[],y=1;y{var r;if(t.symbol)r=new es("mo",[Lo(t.name,t.mode)]),er.contains(NU,t.name)&&r.setAttribute("largeop","false");else if(t.body)r=new es("mo",As(t.body,e));else{r=new es("mi",[new _o(t.name.slice(1))]);var n=new es("mo",[Lo("\u2061","text")]);t.parentIsSupSub?r=new es("mrow",[r,n]):r=sU([r,n])}return r},"mathmlBuilder$1"),wwe={"\u220F":"\\prod","\u2210":"\\coprod","\u2211":"\\sum","\u22C0":"\\bigwedge","\u22C1":"\\bigvee","\u22C2":"\\bigcap","\u22C3":"\\bigcup","\u2A00":"\\bigodot","\u2A01":"\\bigoplus","\u2A02":"\\bigotimes","\u2A04":"\\biguplus","\u2A06":"\\bigsqcup"};Mt({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:o((t,e)=>{var{parser:r,funcName:n}=t,i=n;return i.length===1&&(i=wwe[i]),{type:"op",mode:r.mode,limits:!0,parentIsSupSub:!1,symbol:!0,name:i}},"handler"),htmlBuilder:C0,mathmlBuilder:Jy});Mt({type:"op",names:["\\mathop"],props:{numArgs:1,primitive:!0},handler:o((t,e)=>{var{parser:r}=t,n=e[0];return{type:"op",mode:r.mode,limits:!1,parentIsSupSub:!1,symbol:!1,body:gi(n)}},"handler"),htmlBuilder:C0,mathmlBuilder:Jy});kwe={"\u222B":"\\int","\u222C":"\\iint","\u222D":"\\iiint","\u222E":"\\oint","\u222F":"\\oiint","\u2230":"\\oiiint"};Mt({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:C0,mathmlBuilder:Jy});Mt({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:C0,mathmlBuilder:Jy});Mt({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=kwe[n]),{type:"op",mode:e.mode,limits:!1,parentIsSupSub:!1,symbol:!0,name:n}},htmlBuilder:C0,mathmlBuilder:Jy});MU=o((t,e)=>{var r,n,i=!1,a;t.type==="supsub"?(r=t.sup,n=t.sub,a=Tr(t.base,"operatorname"),i=!0):a=Tr(t,"operatorname");var s;if(a.body.length>0){for(var l=a.body.map(d=>{var p=d.text;return typeof p=="string"?{type:"textord",mode:d.mode,text:p}:d}),u=Ii(l,e.withFont("mathrm"),!0),h=0;h{for(var r=As(t.body,e.withFont("mathrm")),n=!0,i=0;if.toText()).join("");r=[new mt.TextNode(l)]}var u=new mt.MathNode("mi",r);u.setAttribute("mathvariant","normal");var h=new mt.MathNode("mo",[Lo("\u2061","text")]);return t.parentIsSupSub?new mt.MathNode("mrow",[u,h]):mt.newDocumentFragment([u,h])},"mathmlBuilder");Mt({type:"operatorname",names:["\\operatorname@","\\operatornamewithlimits"],props:{numArgs:1},handler:o((t,e)=>{var{parser:r,funcName:n}=t,i=e[0];return{type:"operatorname",mode:r.mode,body:gi(i),alwaysHandleSupSub:n==="\\operatornamewithlimits",limits:!1,parentIsSupSub:!1}},"handler"),htmlBuilder:MU,mathmlBuilder:Ewe});ce("\\operatorname","\\@ifstar\\operatornamewithlimits\\operatorname@");dd({type:"ordgroup",htmlBuilder(t,e){return t.semisimple?$e.makeFragment(Ii(t.body,e,!1)):$e.makeSpan(["mord"],Ii(t.body,e,!0),e)},mathmlBuilder(t,e){return Th(t.body,e,!0)}});Mt({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=Hr(t.body,e.havingCrampedStyle()),n=$e.makeLineSpan("overline-line",e),i=e.fontMetrics().defaultRuleThickness,a=$e.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:r},{type:"kern",size:3*i},{type:"elem",elem:n},{type:"kern",size:i}]},e);return $e.makeSpan(["mord","overline"],[a],e)},mathmlBuilder(t,e){var r=new mt.MathNode("mo",[new mt.TextNode("\u203E")]);r.setAttribute("stretchy","true");var n=new mt.MathNode("mover",[wn(t.body,e),r]);return n.setAttribute("accent","true"),n}});Mt({type:"phantom",names:["\\phantom"],props:{numArgs:1,allowedInText:!0},handler:o((t,e)=>{var{parser:r}=t,n=e[0];return{type:"phantom",mode:r.mode,body:gi(n)}},"handler"),htmlBuilder:o((t,e)=>{var r=Ii(t.body,e.withPhantom(),!1);return $e.makeFragment(r)},"htmlBuilder"),mathmlBuilder:o((t,e)=>{var r=As(t.body,e);return new mt.MathNode("mphantom",r)},"mathmlBuilder")});Mt({type:"hphantom",names:["\\hphantom"],props:{numArgs:1,allowedInText:!0},handler:o((t,e)=>{var{parser:r}=t,n=e[0];return{type:"hphantom",mode:r.mode,body:n}},"handler"),htmlBuilder:o((t,e)=>{var r=$e.makeSpan([],[Hr(t.body,e.withPhantom())]);if(r.height=0,r.depth=0,r.children)for(var n=0;n{var r=As(gi(t.body),e),n=new mt.MathNode("mphantom",r),i=new mt.MathNode("mpadded",[n]);return i.setAttribute("height","0px"),i.setAttribute("depth","0px"),i},"mathmlBuilder")});Mt({type:"vphantom",names:["\\vphantom"],props:{numArgs:1,allowedInText:!0},handler:o((t,e)=>{var{parser:r}=t,n=e[0];return{type:"vphantom",mode:r.mode,body:n}},"handler"),htmlBuilder:o((t,e)=>{var r=$e.makeSpan(["inner"],[Hr(t.body,e.withPhantom())]),n=$e.makeSpan(["fix"],[]);return $e.makeSpan(["mord","rlap"],[r,n],e)},"htmlBuilder"),mathmlBuilder:o((t,e)=>{var r=As(gi(t.body),e),n=new mt.MathNode("mphantom",r),i=new mt.MathNode("mpadded",[n]);return i.setAttribute("width","0px"),i},"mathmlBuilder")});Mt({type:"raisebox",names:["\\raisebox"],props:{numArgs:2,argTypes:["size","hbox"],allowedInText:!0},handler(t,e){var{parser:r}=t,n=Tr(e[0],"size").value,i=e[1];return{type:"raisebox",mode:r.mode,dy:n,body:i}},htmlBuilder(t,e){var r=Hr(t.body,e),n=ii(t.dy,e);return $e.makeVList({positionType:"shift",positionData:-n,children:[{type:"elem",elem:r}]},e)},mathmlBuilder(t,e){var r=new mt.MathNode("mpadded",[wn(t.body,e)]),n=t.dy.number+t.dy.unit;return r.setAttribute("voffset",n),r}});Mt({type:"internal",names:["\\relax"],props:{numArgs:0,allowedInText:!0,allowedInArgument:!0},handler(t){var{parser:e}=t;return{type:"internal",mode:e.mode}}});Mt({type:"rule",names:["\\rule"],props:{numArgs:2,numOptionalArgs:1,allowedInText:!0,allowedInMath:!0,argTypes:["size","size","size"]},handler(t,e,r){var{parser:n}=t,i=r[0],a=Tr(e[0],"size"),s=Tr(e[1],"size");return{type:"rule",mode:n.mode,shift:i&&Tr(i,"size").value,width:a.value,height:s.value}},htmlBuilder(t,e){var r=$e.makeSpan(["mord","rule"],[],e),n=ii(t.width,e),i=ii(t.height,e),a=t.shift?ii(t.shift,e):0;return r.style.borderRightWidth=St(n),r.style.borderTopWidth=St(i),r.style.bottom=St(a),r.width=n,r.height=i+a,r.depth=-a,r.maxFontSize=i*1.125*e.sizeMultiplier,r},mathmlBuilder(t,e){var r=ii(t.width,e),n=ii(t.height,e),i=t.shift?ii(t.shift,e):0,a=e.color&&e.getColor()||"black",s=new mt.MathNode("mspace");s.setAttribute("mathbackground",a),s.setAttribute("width",St(r)),s.setAttribute("height",St(n));var l=new mt.MathNode("mpadded",[s]);return i>=0?l.setAttribute("height",St(i)):(l.setAttribute("height",St(i)),l.setAttribute("depth",St(-i))),l.setAttribute("voffset",St(i)),l}});o(IU,"sizingGroup");OV=["\\tiny","\\sixptsize","\\scriptsize","\\footnotesize","\\small","\\normalsize","\\large","\\Large","\\LARGE","\\huge","\\Huge"],Swe=o((t,e)=>{var r=e.havingSize(t.size);return IU(t.body,r,e)},"htmlBuilder");Mt({type:"sizing",names:OV,props:{numArgs:0,allowedInText:!0},handler:o((t,e)=>{var{breakOnTokenText:r,funcName:n,parser:i}=t,a=i.parseExpression(!1,r);return{type:"sizing",mode:i.mode,size:OV.indexOf(n)+1,body:a}},"handler"),htmlBuilder:Swe,mathmlBuilder:o((t,e)=>{var r=e.havingSize(t.size),n=As(t.body,r),i=new mt.MathNode("mstyle",n);return i.setAttribute("mathsize",St(r.sizeMultiplier)),i},"mathmlBuilder")});Mt({type:"smash",names:["\\smash"],props:{numArgs:1,numOptionalArgs:1,allowedInText:!0},handler:o((t,e,r)=>{var{parser:n}=t,i=!1,a=!1,s=r[0]&&Tr(r[0],"ordgroup");if(s)for(var l="",u=0;u{var r=$e.makeSpan([],[Hr(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 mt.MathNode("mpadded",[wn(t.body,e)]);return t.smashHeight&&r.setAttribute("height","0px"),t.smashDepth&&r.setAttribute("depth","0px"),r},"mathmlBuilder")});Mt({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=Hr(t.body,e.havingCrampedStyle());r.height===0&&(r.height=e.fontMetrics().xHeight),r=$e.wrapFragment(r,e);var n=e.fontMetrics(),i=n.defaultRuleThickness,a=i;e.style.idr.height+r.depth+s&&(s=(s+d-r.height-r.depth)/2);var p=u.height-r.height-s-h;r.style.paddingLeft=St(f);var m=$e.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:r,wrapperClasses:["svg-align"]},{type:"kern",size:-(r.height+p)},{type:"elem",elem:u},{type:"kern",size:h}]},e);if(t.index){var g=e.havingStyle(nr.SCRIPTSCRIPT),y=Hr(t.index,g,e),v=.6*(m.height-m.depth),x=$e.makeVList({positionType:"shift",positionData:-v,children:[{type:"elem",elem:y}]},e),b=$e.makeSpan(["root"],[x]);return $e.makeSpan(["mord","sqrt"],[b,m],e)}else return $e.makeSpan(["mord","sqrt"],[m],e)},mathmlBuilder(t,e){var{body:r,index:n}=t;return n?new mt.MathNode("mroot",[wn(r,e),wn(n,e)]):new mt.MathNode("msqrt",[wn(r,e)])}});PV={display:nr.DISPLAY,text:nr.TEXT,script:nr.SCRIPT,scriptscript:nr.SCRIPTSCRIPT};Mt({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=PV[t.style],n=e.havingStyle(r).withFont("");return IU(t.body,n,e)},mathmlBuilder(t,e){var r=PV[t.style],n=e.havingStyle(r),i=As(t.body,n),a=new mt.MathNode("mstyle",i),s={display:["0","true"],text:["0","false"],script:["1","false"],scriptscript:["2","false"]},l=s[t.style];return a.setAttribute("scriptlevel",l[0]),a.setAttribute("displaystyle",l[1]),a}});Cwe=o(function(e,r){var n=e.base;if(n)if(n.type==="op"){var i=n.limits&&(r.style.size===nr.DISPLAY.size||n.alwaysHandleSupSub);return i?C0:null}else if(n.type==="operatorname"){var a=n.alwaysHandleSupSub&&(r.style.size===nr.DISPLAY.size||n.limits);return a?MU:null}else{if(n.type==="accent")return er.isCharacterBox(n.base)?dA:null;if(n.type==="horizBrace"){var s=!e.sub;return s===n.isOver?LU:null}else return null}else return null},"htmlBuilderDelegate");dd({type:"supsub",htmlBuilder(t,e){var r=Cwe(t,e);if(r)return r(t,e);var{base:n,sup:i,sub:a}=t,s=Hr(n,e),l,u,h=e.fontMetrics(),f=0,d=0,p=n&&er.isCharacterBox(n);if(i){var m=e.havingStyle(e.style.sup());l=Hr(i,m,e),p||(f=s.height-m.fontMetrics().supDrop*m.sizeMultiplier/e.sizeMultiplier)}if(a){var g=e.havingStyle(e.style.sub());u=Hr(a,g,e),p||(d=s.depth+g.fontMetrics().subDrop*g.sizeMultiplier/e.sizeMultiplier)}var y;e.style===nr.DISPLAY?y=h.sup1:e.style.cramped?y=h.sup3:y=h.sup2;var v=e.sizeMultiplier,x=St(.5/h.ptPerEm/v),b=null;if(u){var T=t.base&&t.base.type==="op"&&t.base.name&&(t.base.name==="\\oiint"||t.base.name==="\\oiiint");(s instanceof Cs||T)&&(b=St(-s.italic))}var S;if(l&&u){f=Math.max(f,y,l.depth+.25*h.xHeight),d=Math.max(d,h.sub2);var w=h.defaultRuleThickness,k=4*w;if(f-l.depth-(u.height-d)0&&(f+=A,d-=A)}var C=[{type:"elem",elem:u,shift:d,marginRight:x,marginLeft:b},{type:"elem",elem:l,shift:-f,marginRight:x}];S=$e.makeVList({positionType:"individualShift",children:C},e)}else if(u){d=Math.max(d,h.sub1,u.height-.8*h.xHeight);var R=[{type:"elem",elem:u,marginLeft:b,marginRight:x}];S=$e.makeVList({positionType:"shift",positionData:d,children:R},e)}else if(l)f=Math.max(f,y,l.depth+.25*h.xHeight),S=$e.makeVList({positionType:"shift",positionData:-f,children:[{type:"elem",elem:l,marginRight:x}]},e);else throw new Error("supsub must have either sup or sub.");var I=J7(s,"right")||"mord";return $e.makeSpan([I],[s,$e.makeSpan(["msupsub"],[S])],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=[wn(t.base,e)];t.sub&&a.push(wn(t.sub,e)),t.sup&&a.push(wn(t.sup,e));var s;if(r)s=n?"mover":"munder";else if(t.sub)if(t.sup){var h=t.base;h&&h.type==="op"&&h.limits&&e.style===nr.DISPLAY||h&&h.type==="operatorname"&&h.alwaysHandleSupSub&&(e.style===nr.DISPLAY||h.limits)?s="munderover":s="msubsup"}else{var u=t.base;u&&u.type==="op"&&u.limits&&(e.style===nr.DISPLAY||u.alwaysHandleSupSub)||u&&u.type==="operatorname"&&u.alwaysHandleSupSub&&(u.limits||e.style===nr.DISPLAY)?s="munder":s="msub"}else{var l=t.base;l&&l.type==="op"&&l.limits&&(e.style===nr.DISPLAY||l.alwaysHandleSupSub)||l&&l.type==="operatorname"&&l.alwaysHandleSupSub&&(l.limits||e.style===nr.DISPLAY)?s="mover":s="msup"}return new mt.MathNode(s,a)}});dd({type:"atom",htmlBuilder(t,e){return $e.mathsym(t.text,t.mode,e,["m"+t.family])},mathmlBuilder(t,e){var r=new mt.MathNode("mo",[Lo(t.text,t.mode)]);if(t.family==="bin"){var n=hA(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}});OU={mi:"italic",mn:"normal",mtext:"normal"};dd({type:"mathord",htmlBuilder(t,e){return $e.makeOrd(t,e,"mathord")},mathmlBuilder(t,e){var r=new mt.MathNode("mi",[Lo(t.text,t.mode,e)]),n=hA(t,e)||"italic";return n!==OU[r.type]&&r.setAttribute("mathvariant",n),r}});dd({type:"textord",htmlBuilder(t,e){return $e.makeOrd(t,e,"textord")},mathmlBuilder(t,e){var r=Lo(t.text,t.mode,e),n=hA(t,e)||"normal",i;return t.mode==="text"?i=new mt.MathNode("mtext",[r]):/[0-9]/.test(t.text)?i=new mt.MathNode("mn",[r]):t.text==="\\prime"?i=new mt.MathNode("mo",[r]):i=new mt.MathNode("mi",[r]),n!==OU[i.type]&&i.setAttribute("mathvariant",n),i}});W7={"\\nobreak":"nobreak","\\allowbreak":"allowbreak"},Y7={" ":{},"\\ ":{},"~":{className:"nobreak"},"\\space":{},"\\nobreakspace":{className:"nobreak"}};dd({type:"spacing",htmlBuilder(t,e){if(Y7.hasOwnProperty(t.text)){var r=Y7[t.text].className||"";if(t.mode==="text"){var n=$e.makeOrd(t,e,"textord");return n.classes.push(r),n}else return $e.makeSpan(["mspace",r],[$e.mathsym(t.text,t.mode,e)],e)}else{if(W7.hasOwnProperty(t.text))return $e.makeSpan(["mspace",W7[t.text]],[],e);throw new gt('Unknown type of space "'+t.text+'"')}},mathmlBuilder(t,e){var r;if(Y7.hasOwnProperty(t.text))r=new mt.MathNode("mtext",[new mt.TextNode("\xA0")]);else{if(W7.hasOwnProperty(t.text))return new mt.MathNode("mspace");throw new gt('Unknown type of space "'+t.text+'"')}return r}});BV=o(()=>{var t=new mt.MathNode("mtd",[]);return t.setAttribute("width","50%"),t},"pad");dd({type:"tag",mathmlBuilder(t,e){var r=new mt.MathNode("mtable",[new mt.MathNode("mtr",[BV(),new mt.MathNode("mtd",[Th(t.body,e)]),BV(),new mt.MathNode("mtd",[Th(t.tag,e)])])]);return r.setAttribute("width","100%"),r}});FV={"\\text":void 0,"\\textrm":"textrm","\\textsf":"textsf","\\texttt":"texttt","\\textnormal":"textrm"},$V={"\\textbf":"textbf","\\textmd":"textmd"},Awe={"\\textit":"textit","\\textup":"textup"},zV=o((t,e)=>{var r=t.font;if(r){if(FV[r])return e.withTextFontFamily(FV[r]);if($V[r])return e.withTextFontWeight($V[r]);if(r==="\\emph")return e.fontShape==="textit"?e.withTextFontShape("textup"):e.withTextFontShape("textit")}else return e;return e.withTextFontShape(Awe[r])},"optionsWithFont");Mt({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:gi(i),font:n}},htmlBuilder(t,e){var r=zV(t,e),n=Ii(t.body,r,!0);return $e.makeSpan(["mord","text"],n,r)},mathmlBuilder(t,e){var r=zV(t,e);return Th(t.body,r)}});Mt({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=Hr(t.body,e),n=$e.makeLineSpan("underline-line",e),i=e.fontMetrics().defaultRuleThickness,a=$e.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 $e.makeSpan(["mord","underline"],[a],e)},mathmlBuilder(t,e){var r=new mt.MathNode("mo",[new mt.TextNode("\u203E")]);r.setAttribute("stretchy","true");var n=new mt.MathNode("munder",[wn(t.body,e),r]);return n.setAttribute("accentunder","true"),n}});Mt({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=Hr(t.body,e),n=e.fontMetrics().axisHeight,i=.5*(r.height-n-(r.depth+n));return $e.makeVList({positionType:"shift",positionData:i,children:[{type:"elem",elem:r}]},e)},mathmlBuilder(t,e){return new mt.MathNode("mpadded",[wn(t.body,e)],["vcenter"])}});Mt({type:"verb",names:["\\verb"],props:{numArgs:0,allowedInText:!0},handler(t,e,r){throw new gt("\\verb ended by end of line instead of matching delimiter")},htmlBuilder(t,e){for(var r=GV(t),n=[],i=e.havingStyle(e.style.text()),a=0;at.body.replace(/ /g,t.star?"\u2423":"\xA0"),"makeVerb"),xh=iU,PU=`[ \r - ]`,_we="\\\\[a-zA-Z@]+",Dwe="\\\\[^\uD800-\uDFFF]",Lwe="("+_we+")"+PU+"*",Rwe=`\\\\( -|[ \r ]+ -?)[ \r ]*`,iA="[\u0300-\u036F]",Nwe=new RegExp(iA+"+$"),Mwe="("+PU+"+)|"+(Rwe+"|")+"([!-\\[\\]-\u2027\u202A-\uD7FF\uF900-\uFFFF]"+(iA+"*")+"|[\uD800-\uDBFF][\uDC00-\uDFFF]"+(iA+"*")+"|\\\\verb\\*([^]).*?\\4|\\\\verb([^*a-zA-Z]).*?\\5"+("|"+Lwe)+("|"+Dwe+")"),S3=class{static{o(this,"Lexer")}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(Mwe,"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 Do("EOF",new to(this,r,r));var n=this.tokenRegex.exec(e);if(n===null||n.index!==r)throw new gt("Unexpected character: '"+e[r]+"'",new Do(e[r],new to(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 Do(i,new to(this,r,this.tokenRegex.lastIndex))}},aA=class{static{o(this,"Namespace")}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 gt("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}},Iwe=SU;ce("\\noexpand",function(t){var e=t.popToken();return t.isExpandable(e.text)&&(e.noexpand=!0,e.treatAsRelax=!0),{tokens:[e],numArgs:0}});ce("\\expandafter",function(t){var e=t.popToken();return t.expandOnce(!0),{tokens:[e],numArgs:0}});ce("\\@firstoftwo",function(t){var e=t.consumeArgs(2);return{tokens:e[0],numArgs:0}});ce("\\@secondoftwo",function(t){var e=t.consumeArgs(2);return{tokens:e[1],numArgs:0}});ce("\\@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}});ce("\\@ifstar","\\@ifnextchar *{\\@firstoftwo{#1}}");ce("\\TextOrMath",function(t){var e=t.consumeArgs(2);return t.mode==="text"?{tokens:e[0],numArgs:0}:{tokens:e[1],numArgs:0}});VV={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};ce("\\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 gt("\\char` missing argument");n=e.text.charCodeAt(0)}else r=10;if(r){if(n=VV[e.text],n==null||n>=r)throw new gt("Invalid base-"+r+" digit "+e.text);for(var i;(i=VV[t.future().text])!=null&&i{var i=t.consumeArg().tokens;if(i.length!==1)throw new gt("\\newcommand's first argument must be a macro name");var a=i[0].text,s=t.isDefined(a);if(s&&!e)throw new gt("\\newcommand{"+a+"} attempting to redefine "+(a+"; use \\renewcommand"));if(!s&&!r)throw new gt("\\renewcommand{"+a+"} when command "+a+" does not yet exist; use \\newcommand");var l=0;if(i=t.consumeArg().tokens,i.length===1&&i[0].text==="["){for(var u="",h=t.expandNextToken();h.text!=="]"&&h.text!=="EOF";)u+=h.text,h=t.expandNextToken();if(!u.match(/^\s*[0-9]+\s*$/))throw new gt("Invalid number of arguments: "+u);l=parseInt(u),i=t.consumeArg().tokens}return s&&n||t.macros.set(a,{tokens:i,numArgs:l}),""},"newcommand");ce("\\newcommand",t=>TA(t,!1,!0,!1));ce("\\renewcommand",t=>TA(t,!0,!1,!1));ce("\\providecommand",t=>TA(t,!0,!0,!0));ce("\\message",t=>{var e=t.consumeArgs(1)[0];return console.log(e.reverse().map(r=>r.text).join("")),""});ce("\\errmessage",t=>{var e=t.consumeArgs(1)[0];return console.error(e.reverse().map(r=>r.text).join("")),""});ce("\\show",t=>{var e=t.popToken(),r=e.text;return console.log(e,t.macros.get(r),xh[r],Nn.math[r],Nn.text[r]),""});ce("\\bgroup","{");ce("\\egroup","}");ce("~","\\nobreakspace");ce("\\lq","`");ce("\\rq","'");ce("\\aa","\\r a");ce("\\AA","\\r A");ce("\\textcopyright","\\html@mathml{\\textcircled{c}}{\\char`\xA9}");ce("\\copyright","\\TextOrMath{\\textcopyright}{\\text{\\textcopyright}}");ce("\\textregistered","\\html@mathml{\\textcircled{\\scriptsize R}}{\\char`\xAE}");ce("\u212C","\\mathscr{B}");ce("\u2130","\\mathscr{E}");ce("\u2131","\\mathscr{F}");ce("\u210B","\\mathscr{H}");ce("\u2110","\\mathscr{I}");ce("\u2112","\\mathscr{L}");ce("\u2133","\\mathscr{M}");ce("\u211B","\\mathscr{R}");ce("\u212D","\\mathfrak{C}");ce("\u210C","\\mathfrak{H}");ce("\u2128","\\mathfrak{Z}");ce("\\Bbbk","\\Bbb{k}");ce("\xB7","\\cdotp");ce("\\llap","\\mathllap{\\textrm{#1}}");ce("\\rlap","\\mathrlap{\\textrm{#1}}");ce("\\clap","\\mathclap{\\textrm{#1}}");ce("\\mathstrut","\\vphantom{(}");ce("\\underbar","\\underline{\\text{#1}}");ce("\\not",'\\html@mathml{\\mathrel{\\mathrlap\\@not}}{\\char"338}');ce("\\neq","\\html@mathml{\\mathrel{\\not=}}{\\mathrel{\\char`\u2260}}");ce("\\ne","\\neq");ce("\u2260","\\neq");ce("\\notin","\\html@mathml{\\mathrel{{\\in}\\mathllap{/\\mskip1mu}}}{\\mathrel{\\char`\u2209}}");ce("\u2209","\\notin");ce("\u2258","\\html@mathml{\\mathrel{=\\kern{-1em}\\raisebox{0.4em}{$\\scriptsize\\frown$}}}{\\mathrel{\\char`\u2258}}");ce("\u2259","\\html@mathml{\\stackrel{\\tiny\\wedge}{=}}{\\mathrel{\\char`\u2258}}");ce("\u225A","\\html@mathml{\\stackrel{\\tiny\\vee}{=}}{\\mathrel{\\char`\u225A}}");ce("\u225B","\\html@mathml{\\stackrel{\\scriptsize\\star}{=}}{\\mathrel{\\char`\u225B}}");ce("\u225D","\\html@mathml{\\stackrel{\\tiny\\mathrm{def}}{=}}{\\mathrel{\\char`\u225D}}");ce("\u225E","\\html@mathml{\\stackrel{\\tiny\\mathrm{m}}{=}}{\\mathrel{\\char`\u225E}}");ce("\u225F","\\html@mathml{\\stackrel{\\tiny?}{=}}{\\mathrel{\\char`\u225F}}");ce("\u27C2","\\perp");ce("\u203C","\\mathclose{!\\mkern-0.8mu!}");ce("\u220C","\\notni");ce("\u231C","\\ulcorner");ce("\u231D","\\urcorner");ce("\u231E","\\llcorner");ce("\u231F","\\lrcorner");ce("\xA9","\\copyright");ce("\xAE","\\textregistered");ce("\uFE0F","\\textregistered");ce("\\ulcorner",'\\html@mathml{\\@ulcorner}{\\mathop{\\char"231c}}');ce("\\urcorner",'\\html@mathml{\\@urcorner}{\\mathop{\\char"231d}}');ce("\\llcorner",'\\html@mathml{\\@llcorner}{\\mathop{\\char"231e}}');ce("\\lrcorner",'\\html@mathml{\\@lrcorner}{\\mathop{\\char"231f}}');ce("\\vdots","{\\varvdots\\rule{0pt}{15pt}}");ce("\u22EE","\\vdots");ce("\\varGamma","\\mathit{\\Gamma}");ce("\\varDelta","\\mathit{\\Delta}");ce("\\varTheta","\\mathit{\\Theta}");ce("\\varLambda","\\mathit{\\Lambda}");ce("\\varXi","\\mathit{\\Xi}");ce("\\varPi","\\mathit{\\Pi}");ce("\\varSigma","\\mathit{\\Sigma}");ce("\\varUpsilon","\\mathit{\\Upsilon}");ce("\\varPhi","\\mathit{\\Phi}");ce("\\varPsi","\\mathit{\\Psi}");ce("\\varOmega","\\mathit{\\Omega}");ce("\\substack","\\begin{subarray}{c}#1\\end{subarray}");ce("\\colon","\\nobreak\\mskip2mu\\mathpunct{}\\mathchoice{\\mkern-3mu}{\\mkern-3mu}{}{}{:}\\mskip6mu\\relax");ce("\\boxed","\\fbox{$\\displaystyle{#1}$}");ce("\\iff","\\DOTSB\\;\\Longleftrightarrow\\;");ce("\\implies","\\DOTSB\\;\\Longrightarrow\\;");ce("\\impliedby","\\DOTSB\\;\\Longleftarrow\\;");ce("\\dddot","{\\overset{\\raisebox{-0.1ex}{\\normalsize ...}}{#1}}");ce("\\ddddot","{\\overset{\\raisebox{-0.1ex}{\\normalsize ....}}{#1}}");UV={",":"\\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"};ce("\\dots",function(t){var e="\\dotso",r=t.expandAfterFuture().text;return r in UV?e=UV[r]:(r.slice(0,4)==="\\not"||r in Nn.math&&er.contains(["bin","rel"],Nn.math[r].group))&&(e="\\dotsb"),e});wA={")":!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};ce("\\dotso",function(t){var e=t.future().text;return e in wA?"\\ldots\\,":"\\ldots"});ce("\\dotsc",function(t){var e=t.future().text;return e in wA&&e!==","?"\\ldots\\,":"\\ldots"});ce("\\cdots",function(t){var e=t.future().text;return e in wA?"\\@cdots\\,":"\\@cdots"});ce("\\dotsb","\\cdots");ce("\\dotsm","\\cdots");ce("\\dotsi","\\!\\cdots");ce("\\dotsx","\\ldots\\,");ce("\\DOTSI","\\relax");ce("\\DOTSB","\\relax");ce("\\DOTSX","\\relax");ce("\\tmspace","\\TextOrMath{\\kern#1#3}{\\mskip#1#2}\\relax");ce("\\,","\\tmspace+{3mu}{.1667em}");ce("\\thinspace","\\,");ce("\\>","\\mskip{4mu}");ce("\\:","\\tmspace+{4mu}{.2222em}");ce("\\medspace","\\:");ce("\\;","\\tmspace+{5mu}{.2777em}");ce("\\thickspace","\\;");ce("\\!","\\tmspace-{3mu}{.1667em}");ce("\\negthinspace","\\!");ce("\\negmedspace","\\tmspace-{4mu}{.2222em}");ce("\\negthickspace","\\tmspace-{5mu}{.277em}");ce("\\enspace","\\kern.5em ");ce("\\enskip","\\hskip.5em\\relax");ce("\\quad","\\hskip1em\\relax");ce("\\qquad","\\hskip2em\\relax");ce("\\tag","\\@ifstar\\tag@literal\\tag@paren");ce("\\tag@paren","\\tag@literal{({#1})}");ce("\\tag@literal",t=>{if(t.macros.get("\\df@tag"))throw new gt("Multiple \\tag");return"\\gdef\\df@tag{\\text{#1}}"});ce("\\bmod","\\mathchoice{\\mskip1mu}{\\mskip1mu}{\\mskip5mu}{\\mskip5mu}\\mathbin{\\rm mod}\\mathchoice{\\mskip1mu}{\\mskip1mu}{\\mskip5mu}{\\mskip5mu}");ce("\\pod","\\allowbreak\\mathchoice{\\mkern18mu}{\\mkern8mu}{\\mkern8mu}{\\mkern8mu}(#1)");ce("\\pmod","\\pod{{\\rm mod}\\mkern6mu#1}");ce("\\mod","\\allowbreak\\mathchoice{\\mkern18mu}{\\mkern12mu}{\\mkern12mu}{\\mkern12mu}{\\rm mod}\\,\\,#1");ce("\\newline","\\\\\\relax");ce("\\TeX","\\textrm{\\html@mathml{T\\kern-.1667em\\raisebox{-.5ex}{E}\\kern-.125emX}{TeX}}");BU=St(Ql["Main-Regular"][84][1]-.7*Ql["Main-Regular"][65][1]);ce("\\LaTeX","\\textrm{\\html@mathml{"+("L\\kern-.36em\\raisebox{"+BU+"}{\\scriptstyle A}")+"\\kern-.15em\\TeX}{LaTeX}}");ce("\\KaTeX","\\textrm{\\html@mathml{"+("K\\kern-.17em\\raisebox{"+BU+"}{\\scriptstyle A}")+"\\kern-.15em\\TeX}{KaTeX}}");ce("\\hspace","\\@ifstar\\@hspacer\\@hspace");ce("\\@hspace","\\hskip #1\\relax");ce("\\@hspacer","\\rule{0pt}{0pt}\\hskip #1\\relax");ce("\\ordinarycolon",":");ce("\\vcentcolon","\\mathrel{\\mathop\\ordinarycolon}");ce("\\dblcolon",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-.9mu}\\vcentcolon}}{\\mathop{\\char"2237}}');ce("\\coloneqq",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}=}}{\\mathop{\\char"2254}}');ce("\\Coloneqq",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}=}}{\\mathop{\\char"2237\\char"3d}}');ce("\\coloneq",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}}}{\\mathop{\\char"3a\\char"2212}}');ce("\\Coloneq",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}}}{\\mathop{\\char"2237\\char"2212}}');ce("\\eqqcolon",'\\html@mathml{\\mathrel{=\\mathrel{\\mkern-1.2mu}\\vcentcolon}}{\\mathop{\\char"2255}}');ce("\\Eqqcolon",'\\html@mathml{\\mathrel{=\\mathrel{\\mkern-1.2mu}\\dblcolon}}{\\mathop{\\char"3d\\char"2237}}');ce("\\eqcolon",'\\html@mathml{\\mathrel{\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\vcentcolon}}{\\mathop{\\char"2239}}');ce("\\Eqcolon",'\\html@mathml{\\mathrel{\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\dblcolon}}{\\mathop{\\char"2212\\char"2237}}');ce("\\colonapprox",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\approx}}{\\mathop{\\char"3a\\char"2248}}');ce("\\Colonapprox",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\approx}}{\\mathop{\\char"2237\\char"2248}}');ce("\\colonsim",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\sim}}{\\mathop{\\char"3a\\char"223c}}');ce("\\Colonsim",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\sim}}{\\mathop{\\char"2237\\char"223c}}');ce("\u2237","\\dblcolon");ce("\u2239","\\eqcolon");ce("\u2254","\\coloneqq");ce("\u2255","\\eqqcolon");ce("\u2A74","\\Coloneqq");ce("\\ratio","\\vcentcolon");ce("\\coloncolon","\\dblcolon");ce("\\colonequals","\\coloneqq");ce("\\coloncolonequals","\\Coloneqq");ce("\\equalscolon","\\eqqcolon");ce("\\equalscoloncolon","\\Eqqcolon");ce("\\colonminus","\\coloneq");ce("\\coloncolonminus","\\Coloneq");ce("\\minuscolon","\\eqcolon");ce("\\minuscoloncolon","\\Eqcolon");ce("\\coloncolonapprox","\\Colonapprox");ce("\\coloncolonsim","\\Colonsim");ce("\\simcolon","\\mathrel{\\sim\\mathrel{\\mkern-1.2mu}\\vcentcolon}");ce("\\simcoloncolon","\\mathrel{\\sim\\mathrel{\\mkern-1.2mu}\\dblcolon}");ce("\\approxcolon","\\mathrel{\\approx\\mathrel{\\mkern-1.2mu}\\vcentcolon}");ce("\\approxcoloncolon","\\mathrel{\\approx\\mathrel{\\mkern-1.2mu}\\dblcolon}");ce("\\notni","\\html@mathml{\\not\\ni}{\\mathrel{\\char`\u220C}}");ce("\\limsup","\\DOTSB\\operatorname*{lim\\,sup}");ce("\\liminf","\\DOTSB\\operatorname*{lim\\,inf}");ce("\\injlim","\\DOTSB\\operatorname*{inj\\,lim}");ce("\\projlim","\\DOTSB\\operatorname*{proj\\,lim}");ce("\\varlimsup","\\DOTSB\\operatorname*{\\overline{lim}}");ce("\\varliminf","\\DOTSB\\operatorname*{\\underline{lim}}");ce("\\varinjlim","\\DOTSB\\operatorname*{\\underrightarrow{lim}}");ce("\\varprojlim","\\DOTSB\\operatorname*{\\underleftarrow{lim}}");ce("\\gvertneqq","\\html@mathml{\\@gvertneqq}{\u2269}");ce("\\lvertneqq","\\html@mathml{\\@lvertneqq}{\u2268}");ce("\\ngeqq","\\html@mathml{\\@ngeqq}{\u2271}");ce("\\ngeqslant","\\html@mathml{\\@ngeqslant}{\u2271}");ce("\\nleqq","\\html@mathml{\\@nleqq}{\u2270}");ce("\\nleqslant","\\html@mathml{\\@nleqslant}{\u2270}");ce("\\nshortmid","\\html@mathml{\\@nshortmid}{\u2224}");ce("\\nshortparallel","\\html@mathml{\\@nshortparallel}{\u2226}");ce("\\nsubseteqq","\\html@mathml{\\@nsubseteqq}{\u2288}");ce("\\nsupseteqq","\\html@mathml{\\@nsupseteqq}{\u2289}");ce("\\varsubsetneq","\\html@mathml{\\@varsubsetneq}{\u228A}");ce("\\varsubsetneqq","\\html@mathml{\\@varsubsetneqq}{\u2ACB}");ce("\\varsupsetneq","\\html@mathml{\\@varsupsetneq}{\u228B}");ce("\\varsupsetneqq","\\html@mathml{\\@varsupsetneqq}{\u2ACC}");ce("\\imath","\\html@mathml{\\@imath}{\u0131}");ce("\\jmath","\\html@mathml{\\@jmath}{\u0237}");ce("\\llbracket","\\html@mathml{\\mathopen{[\\mkern-3.2mu[}}{\\mathopen{\\char`\u27E6}}");ce("\\rrbracket","\\html@mathml{\\mathclose{]\\mkern-3.2mu]}}{\\mathclose{\\char`\u27E7}}");ce("\u27E6","\\llbracket");ce("\u27E7","\\rrbracket");ce("\\lBrace","\\html@mathml{\\mathopen{\\{\\mkern-3.2mu[}}{\\mathopen{\\char`\u2983}}");ce("\\rBrace","\\html@mathml{\\mathclose{]\\mkern-3.2mu\\}}}{\\mathclose{\\char`\u2984}}");ce("\u2983","\\lBrace");ce("\u2984","\\rBrace");ce("\\minuso","\\mathbin{\\html@mathml{{\\mathrlap{\\mathchoice{\\kern{0.145em}}{\\kern{0.145em}}{\\kern{0.1015em}}{\\kern{0.0725em}}\\circ}{-}}}{\\char`\u29B5}}");ce("\u29B5","\\minuso");ce("\\darr","\\downarrow");ce("\\dArr","\\Downarrow");ce("\\Darr","\\Downarrow");ce("\\lang","\\langle");ce("\\rang","\\rangle");ce("\\uarr","\\uparrow");ce("\\uArr","\\Uparrow");ce("\\Uarr","\\Uparrow");ce("\\N","\\mathbb{N}");ce("\\R","\\mathbb{R}");ce("\\Z","\\mathbb{Z}");ce("\\alef","\\aleph");ce("\\alefsym","\\aleph");ce("\\Alpha","\\mathrm{A}");ce("\\Beta","\\mathrm{B}");ce("\\bull","\\bullet");ce("\\Chi","\\mathrm{X}");ce("\\clubs","\\clubsuit");ce("\\cnums","\\mathbb{C}");ce("\\Complex","\\mathbb{C}");ce("\\Dagger","\\ddagger");ce("\\diamonds","\\diamondsuit");ce("\\empty","\\emptyset");ce("\\Epsilon","\\mathrm{E}");ce("\\Eta","\\mathrm{H}");ce("\\exist","\\exists");ce("\\harr","\\leftrightarrow");ce("\\hArr","\\Leftrightarrow");ce("\\Harr","\\Leftrightarrow");ce("\\hearts","\\heartsuit");ce("\\image","\\Im");ce("\\infin","\\infty");ce("\\Iota","\\mathrm{I}");ce("\\isin","\\in");ce("\\Kappa","\\mathrm{K}");ce("\\larr","\\leftarrow");ce("\\lArr","\\Leftarrow");ce("\\Larr","\\Leftarrow");ce("\\lrarr","\\leftrightarrow");ce("\\lrArr","\\Leftrightarrow");ce("\\Lrarr","\\Leftrightarrow");ce("\\Mu","\\mathrm{M}");ce("\\natnums","\\mathbb{N}");ce("\\Nu","\\mathrm{N}");ce("\\Omicron","\\mathrm{O}");ce("\\plusmn","\\pm");ce("\\rarr","\\rightarrow");ce("\\rArr","\\Rightarrow");ce("\\Rarr","\\Rightarrow");ce("\\real","\\Re");ce("\\reals","\\mathbb{R}");ce("\\Reals","\\mathbb{R}");ce("\\Rho","\\mathrm{P}");ce("\\sdot","\\cdot");ce("\\sect","\\S");ce("\\spades","\\spadesuit");ce("\\sub","\\subset");ce("\\sube","\\subseteq");ce("\\supe","\\supseteq");ce("\\Tau","\\mathrm{T}");ce("\\thetasym","\\vartheta");ce("\\weierp","\\wp");ce("\\Zeta","\\mathrm{Z}");ce("\\argmin","\\DOTSB\\operatorname*{arg\\,min}");ce("\\argmax","\\DOTSB\\operatorname*{arg\\,max}");ce("\\plim","\\DOTSB\\mathop{\\operatorname{plim}}\\limits");ce("\\bra","\\mathinner{\\langle{#1}|}");ce("\\ket","\\mathinner{|{#1}\\rangle}");ce("\\braket","\\mathinner{\\langle{#1}\\rangle}");ce("\\Bra","\\left\\langle#1\\right|");ce("\\Ket","\\left|#1\\right\\rangle");FU=o(t=>e=>{var r=e.consumeArg().tokens,n=e.consumeArg().tokens,i=e.consumeArg().tokens,a=e.consumeArg().tokens,s=e.macros.get("|"),l=e.macros.get("\\|");e.macros.beginGroup();var u=o(d=>p=>{t&&(p.macros.set("|",s),i.length&&p.macros.set("\\|",l));var m=d;if(!d&&i.length){var g=p.future();g.text==="|"&&(p.popToken(),m=!0)}return{tokens:m?i:n,numArgs:0}},"midMacro");e.macros.set("|",u(!1)),i.length&&e.macros.set("\\|",u(!0));var h=e.consumeArg().tokens,f=e.expandTokens([...a,...h,...r]);return e.macros.endGroup(),{tokens:f.reverse(),numArgs:0}},"braketHelper");ce("\\bra@ket",FU(!1));ce("\\bra@set",FU(!0));ce("\\Braket","\\bra@ket{\\left\\langle}{\\,\\middle\\vert\\,}{\\,\\middle\\vert\\,}{\\right\\rangle}");ce("\\Set","\\bra@set{\\left\\{\\:}{\\;\\middle\\vert\\;}{\\;\\middle\\Vert\\;}{\\:\\right\\}}");ce("\\set","\\bra@set{\\{\\,}{\\mid}{}{\\,\\}}");ce("\\angln","{\\angl n}");ce("\\blue","\\textcolor{##6495ed}{#1}");ce("\\orange","\\textcolor{##ffa500}{#1}");ce("\\pink","\\textcolor{##ff00af}{#1}");ce("\\red","\\textcolor{##df0030}{#1}");ce("\\green","\\textcolor{##28ae7b}{#1}");ce("\\gray","\\textcolor{gray}{#1}");ce("\\purple","\\textcolor{##9d38bd}{#1}");ce("\\blueA","\\textcolor{##ccfaff}{#1}");ce("\\blueB","\\textcolor{##80f6ff}{#1}");ce("\\blueC","\\textcolor{##63d9ea}{#1}");ce("\\blueD","\\textcolor{##11accd}{#1}");ce("\\blueE","\\textcolor{##0c7f99}{#1}");ce("\\tealA","\\textcolor{##94fff5}{#1}");ce("\\tealB","\\textcolor{##26edd5}{#1}");ce("\\tealC","\\textcolor{##01d1c1}{#1}");ce("\\tealD","\\textcolor{##01a995}{#1}");ce("\\tealE","\\textcolor{##208170}{#1}");ce("\\greenA","\\textcolor{##b6ffb0}{#1}");ce("\\greenB","\\textcolor{##8af281}{#1}");ce("\\greenC","\\textcolor{##74cf70}{#1}");ce("\\greenD","\\textcolor{##1fab54}{#1}");ce("\\greenE","\\textcolor{##0d923f}{#1}");ce("\\goldA","\\textcolor{##ffd0a9}{#1}");ce("\\goldB","\\textcolor{##ffbb71}{#1}");ce("\\goldC","\\textcolor{##ff9c39}{#1}");ce("\\goldD","\\textcolor{##e07d10}{#1}");ce("\\goldE","\\textcolor{##a75a05}{#1}");ce("\\redA","\\textcolor{##fca9a9}{#1}");ce("\\redB","\\textcolor{##ff8482}{#1}");ce("\\redC","\\textcolor{##f9685d}{#1}");ce("\\redD","\\textcolor{##e84d39}{#1}");ce("\\redE","\\textcolor{##bc2612}{#1}");ce("\\maroonA","\\textcolor{##ffbde0}{#1}");ce("\\maroonB","\\textcolor{##ff92c6}{#1}");ce("\\maroonC","\\textcolor{##ed5fa6}{#1}");ce("\\maroonD","\\textcolor{##ca337c}{#1}");ce("\\maroonE","\\textcolor{##9e034e}{#1}");ce("\\purpleA","\\textcolor{##ddd7ff}{#1}");ce("\\purpleB","\\textcolor{##c6b9fc}{#1}");ce("\\purpleC","\\textcolor{##aa87ff}{#1}");ce("\\purpleD","\\textcolor{##7854ab}{#1}");ce("\\purpleE","\\textcolor{##543b78}{#1}");ce("\\mintA","\\textcolor{##f5f9e8}{#1}");ce("\\mintB","\\textcolor{##edf2df}{#1}");ce("\\mintC","\\textcolor{##e0e5cc}{#1}");ce("\\grayA","\\textcolor{##f6f7f7}{#1}");ce("\\grayB","\\textcolor{##f0f1f2}{#1}");ce("\\grayC","\\textcolor{##e3e5e6}{#1}");ce("\\grayD","\\textcolor{##d6d8da}{#1}");ce("\\grayE","\\textcolor{##babec2}{#1}");ce("\\grayF","\\textcolor{##888d93}{#1}");ce("\\grayG","\\textcolor{##626569}{#1}");ce("\\grayH","\\textcolor{##3b3e40}{#1}");ce("\\grayI","\\textcolor{##21242c}{#1}");ce("\\kaBlue","\\textcolor{##314453}{#1}");ce("\\kaGreen","\\textcolor{##71B307}{#1}");$U={"^":!0,_:!0,"\\limits":!0,"\\nolimits":!0},sA=class{static{o(this,"MacroExpander")}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 aA(Iwe,r.macros),this.mode=n,this.stack=[]}feed(e){this.lexer=new S3(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 Do("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,l=0;do{if(a=this.popToken(),r.push(a),a.text==="{")++s;else if(a.text==="}"){if(--s,s===-1)throw new gt("Extra }",a)}else if(a.text==="EOF")throw new gt("Unexpected end of input in a macro argument, expected '"+(e&&n?e[l]:"}")+"'",a);if(e&&n)if((s===0||s===1&&e[l]==="{")&&a.text===e[l]){if(++l,l===e.length){r.splice(-l,l);break}}else l=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 gt("The length of delimiters doesn't match the number of args!");for(var n=r[0],i=0;ithis.settings.maxExpand)throw new gt("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 gt("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 l=a.length-1;l>=0;--l){var u=a[l];if(u.text==="#"){if(l===0)throw new gt("Incomplete placeholder at end of macro body",u);if(u=a[--l],u.text==="#")a.splice(l+1,1);else if(/^[1-9]$/.test(u.text))a.splice(l,2,...s[+u.text-1]);else throw new gt("Not a valid argument number",u)}}}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 Do(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 l=new S3(i,this.settings),u=[],h=l.lex();h.text!=="EOF";)u.push(h),h=l.lex();u.reverse();var f={tokens:u,numArgs:a};return f}return i}isDefined(e){return this.macros.has(e)||xh.hasOwnProperty(e)||Nn.math.hasOwnProperty(e)||Nn.text.hasOwnProperty(e)||$U.hasOwnProperty(e)}isExpandable(e){var r=this.macros.get(e);return r!=null?typeof r=="string"||typeof r=="function"||!r.unexpandable:xh.hasOwnProperty(e)&&!xh[e].primitive}},HV=/^[₊₋₌₍₎₀₁₂₃₄₅₆₇₈₉ₐₑₕᵢⱼₖₗₘₙₒₚᵣₛₜᵤᵥₓᵦᵧᵨᵩᵪ]/,y3=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"}),X7={"\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"}},qV={\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"},C3=class t{static{o(this,"Parser")}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 sA(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 gt("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 Do("}")),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&&xh[i.text]&&xh[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 l=Nn[this.mode][r].group,u=to.range(e),h;if(STe.hasOwnProperty(l)){var f=l;h={type:"atom",mode:this.mode,family:f,loc:u,text:r}}else h={type:l,mode:this.mode,loc:u,text:r};s=h}else if(r.charCodeAt(0)>=128)this.settings.strict&&(YV(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:to.range(e),text:r};else return null;if(this.consume(),a)for(var d=0;d{e.tagName==="A"&&e.hasAttribute("target")&&e.setAttribute(t,e.getAttribute("target")??"")}),yh.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 pd,Pwe,Bwe,KU,XU,sr,$we,zwe,Gwe,Vwe,QU,md,vr,Uwe,Hwe,rc,SA,qwe,Wwe,jU,I3,kn,gd,Ywe,kh,tt,gr=N(()=>{"use strict";O7();pd=//gi,Pwe=o(t=>t?QU(t).replace(/\\n/g,"#br#").split("#br#"):[""],"getRows"),Bwe=(()=>{let t=!1;return()=>{t||(Fwe(),t=!0)}})();o(Fwe,"setupDompurifyHooks");KU=o(t=>(Bwe(),yh.sanitize(t)),"removeScript"),XU=o((t,e)=>{if(e.flowchart?.htmlLabels!==!1){let r=e.securityLevel;r==="antiscript"||r==="strict"?t=KU(t):r!=="loose"&&(t=QU(t),t=t.replace(//g,">"),t=t.replace(/=/g,"="),t=Vwe(t))}return t},"sanitizeMore"),sr=o((t,e)=>t&&(e.dompurifyConfig?t=yh.sanitize(XU(t,e),e.dompurifyConfig).toString():t=yh.sanitize(XU(t,e),{FORBID_TAGS:["style"]}).toString(),t),"sanitizeText"),$we=o((t,e)=>typeof t=="string"?sr(t,e):t.flat().map(r=>sr(r,e)),"sanitizeTextOrArray"),zwe=o(t=>pd.test(t),"hasBreaks"),Gwe=o(t=>t.split(pd),"splitBreaks"),Vwe=o(t=>t.replace(/#br#/g,"
    "),"placeholderToBreak"),QU=o(t=>t.replace(pd,"#br#"),"breakToPlaceholder"),md=o(t=>{let e="";return t&&(e=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search,e=CSS.escape(e)),e},"getUrl"),vr=o(t=>!(t===!1||["false","null","0"].includes(String(t).trim().toLowerCase())),"evaluate"),Uwe=o(function(...t){let e=t.filter(r=>!isNaN(r));return Math.max(...e)},"getMax"),Hwe=o(function(...t){let e=t.filter(r=>!isNaN(r));return Math.min(...e)},"getMin"),rc=o(function(t){let e=t.split(/(,)/),r=[];for(let n=0;n0&&n+1Math.max(0,t.split(e).length-1),"countOccurrence"),qwe=o((t,e)=>{let r=SA(t,"~"),n=SA(e,"~");return r===1&&n===1},"shouldCombineSets"),Wwe=o(t=>{let e=SA(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"),jU=o(()=>window.MathMLElement!==void 0,"isMathMLSupported"),I3=/\$\$(.*)\$\$/g,kn=o(t=>(t.match(I3)?.length??0)>0,"hasKatex"),gd=o(async(t,e)=>{let r=document.createElement("div");r.innerHTML=await kh(t,e),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"),Ywe=o(async(t,e)=>{if(!kn(t))return t;if(!(jU()||e.legacyMathML||e.forceLegacyMathML))return t.replace(I3,"MathML is unsupported in this environment.");{let{default:r}=await Promise.resolve().then(()=>(YU(),WU)),n=e.forceLegacyMathML||!jU()&&e.legacyMathML?"htmlAndMathml":"mathml";return t.split(pd).map(i=>kn(i)?`
    ${i}
    `:`
    ${i}
    `).join("").replace(I3,(i,a)=>r.renderToString(a,{throwOnError:!0,displayMode:!0,output:n}).replace(/\n/g," ").replace(//g,""))}return t.replace(I3,"Katex is not supported in @mermaid-js/tiny. Please use the full mermaid library.")},"renderKatexUnsanitized"),kh=o(async(t,e)=>sr(await Ywe(t,e),e),"renderKatexSanitized"),tt={getRows:Pwe,sanitizeText:sr,sanitizeTextOrArray:$we,hasBreaks:zwe,splitBreaks:Gwe,lineBreakRegex:pd,removeScript:KU,getUrl:md,evaluate:vr,getMax:Uwe,getMin:Hwe}});var AA,CA,ZU,O3,JU,eH,_s,nc=N(()=>{"use strict";sG();qn();gr();pt();AA={body:'?',height:80,width:80},CA=new Map,ZU=new Map,O3=o(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(X.debug("Registering icon pack:",e.name),"loader"in e)ZU.set(e.name,e.loader);else if("icons"in e)CA.set(e.name,e.icons);else throw X.error("Invalid icon loader:",e),new Error('Invalid icon loader. Must have either "icons" or "loader" property.')}},"registerIconPacks"),JU=o(async(t,e)=>{let r=r7(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=CA.get(n);if(!i){let s=ZU.get(n);if(!s)throw new Error(`Icon set not found: ${r.prefix}`);try{i={...await s(),prefix:n},CA.set(n,i)}catch(l){throw X.error(l),new Error(`Failed to load icon set: ${r.prefix}`)}}let a=i7(i,r.name);if(!a)throw new Error(`Icon not found: ${t}`);return a},"getRegisteredIconData"),eH=o(async t=>{try{return await JU(t),!0}catch{return!1}},"isIconAvailable"),_s=o(async(t,e,r)=>{let n;try{n=await JU(t,e?.fallbackPrefix)}catch(s){X.error(s),n=AA}let i=s7(n,e),a=l7(o7(i.body),{...i.attributes,...r});return sr(a,Qt())},"getIconSVG")});function P3(t){for(var e=[],r=1;r{"use strict";o(P3,"dedent")});var B3,yd,tH,F3=N(()=>{"use strict";B3=/^-{3}\s*[\n\r](.*?)[\n\r]-{3}\s*[\n\r]+/s,yd=/%{2}{\s*(?:(\w+)\s*:|(\w+))\s*(?:(\w+)|((?:(?!}%{2}).|\r?\n)*))?\s*(?:}%{2})?/gi,tH=/\s*%%.*\n/gm});var A0,DA=N(()=>{"use strict";A0=class extends Error{static{o(this,"UnknownDiagramError")}constructor(e){super(e),this.name="UnknownDiagramError"}}});var gu,_0,ev,LA,rH,vd=N(()=>{"use strict";pt();F3();DA();gu={},_0=o(function(t,e){t=t.replace(B3,"").replace(yd,"").replace(tH,` -`);for(let[r,{detector:n}]of Object.entries(gu))if(n(t,e))return r;throw new A0(`No diagram type detected matching given configuration for text: ${t}`)},"detectType"),ev=o((...t)=>{for(let{id:e,detector:r,loader:n}of t)LA(e,r,n)},"registerLazyLoadedDiagrams"),LA=o((t,e,r)=>{gu[t]&&X.warn(`Detector with key ${t} already exists. Overwriting.`),gu[t]={detector:e,loader:r},X.debug(`Detector with key ${t} added${r?" with loader":""}`)},"addDetector"),rH=o(t=>gu[t].loader,"getDiagramLoader")});var tv,nH,RA=N(()=>{"use strict";tv=(function(){var t=o(function(He,Le,Ie,Ne){for(Ie=Ie||{},Ne=He.length;Ne--;Ie[He[Ne]]=Le);return Ie},"o"),e=[1,24],r=[1,25],n=[1,26],i=[1,27],a=[1,28],s=[1,63],l=[1,64],u=[1,65],h=[1,66],f=[1,67],d=[1,68],p=[1,69],m=[1,29],g=[1,30],y=[1,31],v=[1,32],x=[1,33],b=[1,34],T=[1,35],S=[1,36],w=[1,37],k=[1,38],A=[1,39],C=[1,40],R=[1,41],I=[1,42],L=[1,43],E=[1,44],D=[1,45],_=[1,46],O=[1,47],M=[1,48],P=[1,50],B=[1,51],F=[1,52],G=[1,53],$=[1,54],U=[1,55],j=[1,56],te=[1,57],Y=[1,58],oe=[1,59],J=[1,60],ue=[14,42],re=[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],ee=[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],K=[1,83],ae=[1,84],Q=[1,85],de=[12,14,42],ne=[12,14,33,42],Te=[12,14,33,42,76,77,79,80],q=[12,33],Ve=[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],pe={trace:o(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:o(function(Le,Ie,Ne,Ce,Fe,fe,xe){var W=fe.length-1;switch(Fe){case 3:Ce.setDirection("TB");break;case 4:Ce.setDirection("BT");break;case 5:Ce.setDirection("RL");break;case 6:Ce.setDirection("LR");break;case 8:case 9:case 10:case 11:case 12:Ce.setC4Type(fe[W-3]);break;case 19:Ce.setTitle(fe[W].substring(6)),this.$=fe[W].substring(6);break;case 20:Ce.setAccDescription(fe[W].substring(15)),this.$=fe[W].substring(15);break;case 21:this.$=fe[W].trim(),Ce.setTitle(this.$);break;case 22:case 23:this.$=fe[W].trim(),Ce.setAccDescription(this.$);break;case 28:fe[W].splice(2,0,"ENTERPRISE"),Ce.addPersonOrSystemBoundary(...fe[W]),this.$=fe[W];break;case 29:fe[W].splice(2,0,"SYSTEM"),Ce.addPersonOrSystemBoundary(...fe[W]),this.$=fe[W];break;case 30:Ce.addPersonOrSystemBoundary(...fe[W]),this.$=fe[W];break;case 31:fe[W].splice(2,0,"CONTAINER"),Ce.addContainerBoundary(...fe[W]),this.$=fe[W];break;case 32:Ce.addDeploymentNode("node",...fe[W]),this.$=fe[W];break;case 33:Ce.addDeploymentNode("nodeL",...fe[W]),this.$=fe[W];break;case 34:Ce.addDeploymentNode("nodeR",...fe[W]),this.$=fe[W];break;case 35:Ce.popBoundaryParseStack();break;case 39:Ce.addPersonOrSystem("person",...fe[W]),this.$=fe[W];break;case 40:Ce.addPersonOrSystem("external_person",...fe[W]),this.$=fe[W];break;case 41:Ce.addPersonOrSystem("system",...fe[W]),this.$=fe[W];break;case 42:Ce.addPersonOrSystem("system_db",...fe[W]),this.$=fe[W];break;case 43:Ce.addPersonOrSystem("system_queue",...fe[W]),this.$=fe[W];break;case 44:Ce.addPersonOrSystem("external_system",...fe[W]),this.$=fe[W];break;case 45:Ce.addPersonOrSystem("external_system_db",...fe[W]),this.$=fe[W];break;case 46:Ce.addPersonOrSystem("external_system_queue",...fe[W]),this.$=fe[W];break;case 47:Ce.addContainer("container",...fe[W]),this.$=fe[W];break;case 48:Ce.addContainer("container_db",...fe[W]),this.$=fe[W];break;case 49:Ce.addContainer("container_queue",...fe[W]),this.$=fe[W];break;case 50:Ce.addContainer("external_container",...fe[W]),this.$=fe[W];break;case 51:Ce.addContainer("external_container_db",...fe[W]),this.$=fe[W];break;case 52:Ce.addContainer("external_container_queue",...fe[W]),this.$=fe[W];break;case 53:Ce.addComponent("component",...fe[W]),this.$=fe[W];break;case 54:Ce.addComponent("component_db",...fe[W]),this.$=fe[W];break;case 55:Ce.addComponent("component_queue",...fe[W]),this.$=fe[W];break;case 56:Ce.addComponent("external_component",...fe[W]),this.$=fe[W];break;case 57:Ce.addComponent("external_component_db",...fe[W]),this.$=fe[W];break;case 58:Ce.addComponent("external_component_queue",...fe[W]),this.$=fe[W];break;case 60:Ce.addRel("rel",...fe[W]),this.$=fe[W];break;case 61:Ce.addRel("birel",...fe[W]),this.$=fe[W];break;case 62:Ce.addRel("rel_u",...fe[W]),this.$=fe[W];break;case 63:Ce.addRel("rel_d",...fe[W]),this.$=fe[W];break;case 64:Ce.addRel("rel_l",...fe[W]),this.$=fe[W];break;case 65:Ce.addRel("rel_r",...fe[W]),this.$=fe[W];break;case 66:Ce.addRel("rel_b",...fe[W]),this.$=fe[W];break;case 67:fe[W].splice(0,1),Ce.addRel("rel",...fe[W]),this.$=fe[W];break;case 68:Ce.updateElStyle("update_el_style",...fe[W]),this.$=fe[W];break;case 69:Ce.updateRelStyle("update_rel_style",...fe[W]),this.$=fe[W];break;case 70:Ce.updateLayoutConfig("update_layout_config",...fe[W]),this.$=fe[W];break;case 71:this.$=[fe[W]];break;case 72:fe[W].unshift(fe[W-1]),this.$=fe[W];break;case 73:case 75:this.$=fe[W].trim();break;case 74:let he={};he[fe[W-1].trim()]=fe[W].trim(),this.$=he;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:l,37:u,38:h,39:f,40:d,41:p,43:23,44:m,45:g,46:y,47:v,48:x,49:b,50:T,51:S,52:w,53:k,54:A,55:C,56:R,57:I,58:L,59:E,60:D,61:_,62:O,63:M,64:P,65:B,66:F,67:G,68:$,69:U,70:j,71:te,72:Y,73:oe,74:J},{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:l,37:u,38:h,39:f,40:d,41:p,43:23,44:m,45:g,46:y,47:v,48:x,49:b,50:T,51:S,52:w,53:k,54:A,55:C,56:R,57:I,58:L,59:E,60:D,61:_,62:O,63:M,64:P,65:B,66:F,67:G,68:$,69:U,70:j,71:te,72:Y,73:oe,74:J},{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:l,37:u,38:h,39:f,40:d,41:p,43:23,44:m,45:g,46:y,47:v,48:x,49:b,50:T,51:S,52:w,53:k,54:A,55:C,56:R,57:I,58:L,59:E,60:D,61:_,62:O,63:M,64:P,65:B,66:F,67:G,68:$,69:U,70:j,71:te,72:Y,73:oe,74:J},{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:l,37:u,38:h,39:f,40:d,41:p,43:23,44:m,45:g,46:y,47:v,48:x,49:b,50:T,51:S,52:w,53:k,54:A,55:C,56:R,57:I,58:L,59:E,60:D,61:_,62:O,63:M,64:P,65:B,66:F,67:G,68:$,69:U,70:j,71:te,72:Y,73:oe,74:J},{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:l,37:u,38:h,39:f,40:d,41:p,43:23,44:m,45:g,46:y,47:v,48:x,49:b,50:T,51:S,52:w,53:k,54:A,55:C,56:R,57:I,58:L,59:E,60:D,61:_,62:O,63:M,64:P,65:B,66:F,67:G,68:$,69:U,70:j,71:te,72:Y,73:oe,74:J},{14:[1,74]},t(ue,[2,13],{43:23,29:49,30:61,32:62,20:75,34:s,36:l,37:u,38:h,39:f,40:d,41:p,44:m,45:g,46:y,47:v,48:x,49:b,50:T,51:S,52:w,53:k,54:A,55:C,56:R,57:I,58:L,59:E,60:D,61:_,62:O,63:M,64:P,65:B,66:F,67:G,68:$,69:U,70:j,71:te,72:Y,73:oe,74:J}),t(ue,[2,14]),t(re,[2,16],{12:[1,76]}),t(ue,[2,36],{12:[1,77]}),t(ee,[2,19]),t(ee,[2,20]),{25:[1,78]},{27:[1,79]},t(ee,[2,23]),{35:80,75:81,76:Z,77:K,79:ae,80:Q},{35:86,75:81,76:Z,77:K,79:ae,80:Q},{35:87,75:81,76:Z,77:K,79:ae,80:Q},{35:88,75:81,76:Z,77:K,79:ae,80:Q},{35:89,75:81,76:Z,77:K,79:ae,80:Q},{35:90,75:81,76:Z,77:K,79:ae,80:Q},{35:91,75:81,76:Z,77:K,79:ae,80:Q},{35:92,75:81,76:Z,77:K,79:ae,80:Q},{35:93,75:81,76:Z,77:K,79:ae,80:Q},{35:94,75:81,76:Z,77:K,79:ae,80:Q},{35:95,75:81,76:Z,77:K,79:ae,80:Q},{35:96,75:81,76:Z,77:K,79:ae,80:Q},{35:97,75:81,76:Z,77:K,79:ae,80:Q},{35:98,75:81,76:Z,77:K,79:ae,80:Q},{35:99,75:81,76:Z,77:K,79:ae,80:Q},{35:100,75:81,76:Z,77:K,79:ae,80:Q},{35:101,75:81,76:Z,77:K,79:ae,80:Q},{35:102,75:81,76:Z,77:K,79:ae,80:Q},{35:103,75:81,76:Z,77:K,79:ae,80:Q},{35:104,75:81,76:Z,77:K,79:ae,80:Q},t(de,[2,59]),{35:105,75:81,76:Z,77:K,79:ae,80:Q},{35:106,75:81,76:Z,77:K,79:ae,80:Q},{35:107,75:81,76:Z,77:K,79:ae,80:Q},{35:108,75:81,76:Z,77:K,79:ae,80:Q},{35:109,75:81,76:Z,77:K,79:ae,80:Q},{35:110,75:81,76:Z,77:K,79:ae,80:Q},{35:111,75:81,76:Z,77:K,79:ae,80:Q},{35:112,75:81,76:Z,77:K,79:ae,80:Q},{35:113,75:81,76:Z,77:K,79:ae,80:Q},{35:114,75:81,76:Z,77:K,79:ae,80:Q},{35:115,75:81,76:Z,77:K,79:ae,80:Q},{20:116,29:49,30:61,32:62,34:s,36:l,37:u,38:h,39:f,40:d,41:p,43:23,44:m,45:g,46:y,47:v,48:x,49:b,50:T,51:S,52:w,53:k,54:A,55:C,56:R,57:I,58:L,59:E,60:D,61:_,62:O,63:M,64:P,65:B,66:F,67:G,68:$,69:U,70:j,71:te,72:Y,73:oe,74:J},{12:[1,118],33:[1,117]},{35:119,75:81,76:Z,77:K,79:ae,80:Q},{35:120,75:81,76:Z,77:K,79:ae,80:Q},{35:121,75:81,76:Z,77:K,79:ae,80:Q},{35:122,75:81,76:Z,77:K,79:ae,80:Q},{35:123,75:81,76:Z,77:K,79:ae,80:Q},{35:124,75:81,76:Z,77:K,79:ae,80:Q},{35:125,75:81,76:Z,77:K,79:ae,80:Q},{14:[1,126]},{14:[1,127]},{14:[1,128]},{14:[1,129]},{1:[2,8]},t(ue,[2,15]),t(re,[2,17],{21:22,19:130,22:e,23:r,24:n,26:i,28:a}),t(ue,[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:l,37:u,38:h,39:f,40:d,41:p,44:m,45:g,46:y,47:v,48:x,49:b,50:T,51:S,52:w,53:k,54:A,55:C,56:R,57:I,58:L,59:E,60:D,61:_,62:O,63:M,64:P,65:B,66:F,67:G,68:$,69:U,70:j,71:te,72:Y,73:oe,74:J}),t(ee,[2,21]),t(ee,[2,22]),t(de,[2,39]),t(ne,[2,71],{75:81,35:132,76:Z,77:K,79:ae,80:Q}),t(Te,[2,73]),{78:[1,133]},t(Te,[2,75]),t(Te,[2,76]),t(de,[2,40]),t(de,[2,41]),t(de,[2,42]),t(de,[2,43]),t(de,[2,44]),t(de,[2,45]),t(de,[2,46]),t(de,[2,47]),t(de,[2,48]),t(de,[2,49]),t(de,[2,50]),t(de,[2,51]),t(de,[2,52]),t(de,[2,53]),t(de,[2,54]),t(de,[2,55]),t(de,[2,56]),t(de,[2,57]),t(de,[2,58]),t(de,[2,60]),t(de,[2,61]),t(de,[2,62]),t(de,[2,63]),t(de,[2,64]),t(de,[2,65]),t(de,[2,66]),t(de,[2,67]),t(de,[2,68]),t(de,[2,69]),t(de,[2,70]),{31:134,42:[1,135]},{12:[1,136]},{33:[1,137]},t(q,[2,28]),t(q,[2,29]),t(q,[2,30]),t(q,[2,31]),t(q,[2,32]),t(q,[2,33]),t(q,[2,34]),{1:[2,9]},{1:[2,10]},{1:[2,11]},{1:[2,12]},t(re,[2,18]),t(ue,[2,38]),t(ne,[2,72]),t(Te,[2,74]),t(de,[2,24]),t(de,[2,35]),t(Ve,[2,25]),t(Ve,[2,26],{12:[1,138]}),t(Ve,[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:o(function(Le,Ie){if(Ie.recoverable)this.trace(Le);else{var Ne=new Error(Le);throw Ne.hash=Ie,Ne}},"parseError"),parse:o(function(Le){var Ie=this,Ne=[0],Ce=[],Fe=[null],fe=[],xe=this.table,W="",he=0,z=0,se=0,le=2,ke=1,ve=fe.slice.call(arguments,1),ye=Object.create(this.lexer),Re={yy:{}};for(var _e in this.yy)Object.prototype.hasOwnProperty.call(this.yy,_e)&&(Re.yy[_e]=this.yy[_e]);ye.setInput(Le,Re.yy),Re.yy.lexer=ye,Re.yy.parser=this,typeof ye.yylloc>"u"&&(ye.yylloc={});var ze=ye.yylloc;fe.push(ze);var Ke=ye.options&&ye.options.ranges;typeof Re.yy.parseError=="function"?this.parseError=Re.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function xt(ft){Ne.length=Ne.length-2*ft,Fe.length=Fe.length-ft,fe.length=fe.length-ft}o(xt,"popStack");function We(){var ft;return ft=Ce.pop()||ye.lex()||ke,typeof ft!="number"&&(ft instanceof Array&&(Ce=ft,ft=Ce.pop()),ft=Ie.symbols_[ft]||ft),ft}o(We,"lex");for(var Oe,et,Ue,lt,Gt,vt,Lt={},dt,nt,bt,wt;;){if(Ue=Ne[Ne.length-1],this.defaultActions[Ue]?lt=this.defaultActions[Ue]:((Oe===null||typeof Oe>"u")&&(Oe=We()),lt=xe[Ue]&&xe[Ue][Oe]),typeof lt>"u"||!lt.length||!lt[0]){var yt="";wt=[];for(dt in xe[Ue])this.terminals_[dt]&&dt>le&&wt.push("'"+this.terminals_[dt]+"'");ye.showPosition?yt="Parse error on line "+(he+1)+`: -`+ye.showPosition()+` -Expecting `+wt.join(", ")+", got '"+(this.terminals_[Oe]||Oe)+"'":yt="Parse error on line "+(he+1)+": Unexpected "+(Oe==ke?"end of input":"'"+(this.terminals_[Oe]||Oe)+"'"),this.parseError(yt,{text:ye.match,token:this.terminals_[Oe]||Oe,line:ye.yylineno,loc:ze,expected:wt})}if(lt[0]instanceof Array&<.length>1)throw new Error("Parse Error: multiple actions possible at state: "+Ue+", token: "+Oe);switch(lt[0]){case 1:Ne.push(Oe),Fe.push(ye.yytext),fe.push(ye.yylloc),Ne.push(lt[1]),Oe=null,et?(Oe=et,et=null):(z=ye.yyleng,W=ye.yytext,he=ye.yylineno,ze=ye.yylloc,se>0&&se--);break;case 2:if(nt=this.productions_[lt[1]][1],Lt.$=Fe[Fe.length-nt],Lt._$={first_line:fe[fe.length-(nt||1)].first_line,last_line:fe[fe.length-1].last_line,first_column:fe[fe.length-(nt||1)].first_column,last_column:fe[fe.length-1].last_column},Ke&&(Lt._$.range=[fe[fe.length-(nt||1)].range[0],fe[fe.length-1].range[1]]),vt=this.performAction.apply(Lt,[W,z,he,Re.yy,lt[1],Fe,fe].concat(ve)),typeof vt<"u")return vt;nt&&(Ne=Ne.slice(0,-1*nt*2),Fe=Fe.slice(0,-1*nt),fe=fe.slice(0,-1*nt)),Ne.push(this.productions_[lt[1]][0]),Fe.push(Lt.$),fe.push(Lt._$),bt=xe[Ne[Ne.length-2]][Ne[Ne.length-1]],Ne.push(bt);break;case 3:return!0}}return!0},"parse")},Be=(function(){var He={EOF:1,parseError:o(function(Ie,Ne){if(this.yy.parser)this.yy.parser.parseError(Ie,Ne);else throw new Error(Ie)},"parseError"),setInput:o(function(Le,Ie){return this.yy=Ie||this.yy||{},this._input=Le,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:o(function(){var Le=this._input[0];this.yytext+=Le,this.yyleng++,this.offset++,this.match+=Le,this.matched+=Le;var Ie=Le.match(/(?:\r\n?|\n).*/g);return Ie?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),Le},"input"),unput:o(function(Le){var Ie=Le.length,Ne=Le.split(/(?:\r\n?|\n)/g);this._input=Le+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-Ie),this.offset-=Ie;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),Ne.length-1&&(this.yylineno-=Ne.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:Ne?(Ne.length===Ce.length?this.yylloc.first_column:0)+Ce[Ce.length-Ne.length].length-Ne[0].length:this.yylloc.first_column-Ie},this.options.ranges&&(this.yylloc.range=[Fe[0],Fe[0]+this.yyleng-Ie]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(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:o(function(Le){this.unput(this.match.slice(Le))},"less"),pastInput:o(function(){var Le=this.matched.substr(0,this.matched.length-this.match.length);return(Le.length>20?"...":"")+Le.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var Le=this.match;return Le.length<20&&(Le+=this._input.substr(0,20-Le.length)),(Le.substr(0,20)+(Le.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var Le=this.pastInput(),Ie=new Array(Le.length+1).join("-");return Le+this.upcomingInput()+` -`+Ie+"^"},"showPosition"),test_match:o(function(Le,Ie){var Ne,Ce,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))),Ce=Le[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+Le[0].length},this.yytext+=Le[0],this.match+=Le[0],this.matches=Le,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(Le[0].length),this.matched+=Le[0],Ne=this.performAction.call(this,this.yy,this,Ie,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),Ne)return Ne;if(this._backtrack){for(var fe in Fe)this[fe]=Fe[fe];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var Le,Ie,Ne,Ce;this._more||(this.yytext="",this.match="");for(var Fe=this._currentRules(),fe=0;feIe[0].length)){if(Ie=Ne,Ce=fe,this.options.backtrack_lexer){if(Le=this.test_match(Ne,Fe[fe]),Le!==!1)return Le;if(this._backtrack){Ie=!1;continue}else return!1}else if(!this.options.flex)break}return Ie?(Le=this.test_match(Ie,Fe[Ce]),Le!==!1?Le:!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:o(function(){var Ie=this.next();return Ie||this.lex()},"lex"),begin:o(function(Ie){this.conditionStack.push(Ie)},"begin"),popState:o(function(){var Ie=this.conditionStack.length-1;return Ie>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(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:o(function(Ie){return Ie=this.conditionStack.length-1-Math.abs(Ie||0),Ie>=0?this.conditionStack[Ie]:"INITIAL"},"topState"),pushState:o(function(Ie){this.begin(Ie)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{},performAction:o(function(Ie,Ne,Ce,Fe){var fe=Fe;switch(Ce){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 He})();pe.lexer=Be;function Ye(){this.yy={}}return o(Ye,"Parser"),Ye.prototype=pe,pe.Parser=Ye,new Ye})();tv.parser=tv;nH=tv});var Xwe,jwe,mn,ic,Ei=N(()=>{"use strict";pt();Xwe=o(function(t,e){for(let r of e)t.attr(r[0],r[1])},"d3Attrs"),jwe=o(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"),mn=o(function(t,e,r,n){let i=jwe(e,r,n);Xwe(t,i)},"configureSvgSize"),ic=o(function(t,e,r,n){let i=e.node().getBBox(),a=i.width,s=i.height;X.info(`SVG bounds: ${a}x${s}`,i);let l=0,u=0;X.info(`Graph bounds: ${l}x${u}`,t),l=a+r*2,u=s+r*2,X.info(`Calculated bounds: ${l}x${u}`),mn(e,u,l,n);let h=`${i.x-r} ${i.y-r} ${i.width+2*r} ${i.height+2*r}`;e.attr("viewBox",h)},"setupGraphViewbox")});var $3,Kwe,iH,aH,NA=N(()=>{"use strict";pt();$3={},Kwe=o((t,e,r)=>{let n="";return t in $3&&$3[t]?n=$3[t](r):X.warn(`No theme found for ${t}`),` & { - font-family: ${r.fontFamily}; - font-size: ${r.fontSize}; - fill: ${r.textColor} - } - @keyframes edge-animation-frame { - from { - stroke-dashoffset: 0; - } - } - @keyframes dash { - to { - stroke-dashoffset: 0; - } - } - & .edge-animation-slow { - stroke-dasharray: 9,5 !important; - stroke-dashoffset: 900; - animation: dash 50s linear infinite; - stroke-linecap: round; - } - & .edge-animation-fast { - stroke-dasharray: 9,5 !important; - stroke-dashoffset: 900; - animation: dash 20s linear infinite; - stroke-linecap: round; - } - /* 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"),iH=o((t,e)=>{e!==void 0&&($3[t]=e)},"addStylesForDiagram"),aH=Kwe});var rv={};dr(rv,{clear:()=>Sr,getAccDescription:()=>Or,getAccTitle:()=>Mr,getDiagramTitle:()=>Pr,setAccDescription:()=>Ir,setAccTitle:()=>Rr,setDiagramTitle:()=>$r});var MA,IA,OA,PA,Sr,Rr,Mr,Ir,Or,$r,Pr,ci=N(()=>{"use strict";gr();qn();MA="",IA="",OA="",PA=o(t=>sr(t,Qt()),"sanitizeText"),Sr=o(()=>{MA="",OA="",IA=""},"clear"),Rr=o(t=>{MA=PA(t).replace(/^\s+/g,"")},"setAccTitle"),Mr=o(()=>MA,"getAccTitle"),Ir=o(t=>{OA=PA(t).replace(/\n\s+/g,` -`)},"setAccDescription"),Or=o(()=>OA,"getAccDescription"),$r=o(t=>{IA=PA(t)},"setDiagramTitle"),Pr=o(()=>IA,"getDiagramTitle")});var sH,Qwe,ge,nv,G3,iv,FA,Zwe,z3,xd,av,BA,Xt=N(()=>{"use strict";vd();pt();qn();gr();Ei();NA();ci();sH=X,Qwe=Dy,ge=Qt,nv=n3,G3=gh,iv=o(t=>sr(t,ge()),"sanitizeText"),FA=ic,Zwe=o(()=>rv,"getCommonDb"),z3={},xd=o((t,e,r)=>{z3[t]&&sH.warn(`Diagram with id ${t} already registered. Overwriting.`),z3[t]=e,r&&LA(t,r),iH(t,e.styles),e.injectUtils?.(sH,Qwe,ge,iv,FA,Zwe(),()=>{})},"registerDiagram"),av=o(t=>{if(t in z3)return z3[t];throw new BA(t)},"getDiagram"),BA=class extends Error{static{o(this,"DiagramNotFoundError")}constructor(e){super(`Diagram ${e} not found.`)}}});var ml,Eh,ns,pl,ac,sv,$A,zA,V3,U3,oH,Jwe,eke,tke,rke,nke,ike,ake,ske,oke,lke,cke,uke,hke,fke,dke,pke,mke,lH,gke,yke,cH,vke,xke,bke,Tke,Sh,wke,kke,Eke,Ske,Cke,ov,GA=N(()=>{"use strict";Xt();gr();ci();ml=[],Eh=[""],ns="global",pl="",ac=[{alias:"global",label:{text:"global"},type:{text:"global"},tags:null,link:null,parentBoundary:""}],sv=[],$A="",zA=!1,V3=4,U3=2,Jwe=o(function(){return oH},"getC4Type"),eke=o(function(t){oH=sr(t,ge())},"setC4Type"),tke=o(function(t,e,r,n,i,a,s,l,u){if(t==null||e===void 0||e===null||r===void 0||r===null||n===void 0||n===null)return;let h={},f=sv.find(d=>d.from===e&&d.to===r);if(f?h=f:sv.push(h),h.type=t,h.from=e,h.to=r,h.label={text:n},i==null)h.techn={text:""};else if(typeof i=="object"){let[d,p]=Object.entries(i)[0];h[d]={text:p}}else h.techn={text:i};if(a==null)h.descr={text:""};else if(typeof a=="object"){let[d,p]=Object.entries(a)[0];h[d]={text:p}}else h.descr={text:a};if(typeof s=="object"){let[d,p]=Object.entries(s)[0];h[d]=p}else h.sprite=s;if(typeof l=="object"){let[d,p]=Object.entries(l)[0];h[d]=p}else h.tags=l;if(typeof u=="object"){let[d,p]=Object.entries(u)[0];h[d]=p}else h.link=u;h.wrap=Sh()},"addRel"),rke=o(function(t,e,r,n,i,a,s){if(e===null||r===null)return;let l={},u=ml.find(h=>h.alias===e);if(u&&e===u.alias?l=u:(l.alias=e,ml.push(l)),r==null?l.label={text:""}:l.label={text:r},n==null)l.descr={text:""};else if(typeof n=="object"){let[h,f]=Object.entries(n)[0];l[h]={text:f}}else l.descr={text:n};if(typeof i=="object"){let[h,f]=Object.entries(i)[0];l[h]=f}else l.sprite=i;if(typeof a=="object"){let[h,f]=Object.entries(a)[0];l[h]=f}else l.tags=a;if(typeof s=="object"){let[h,f]=Object.entries(s)[0];l[h]=f}else l.link=s;l.typeC4Shape={text:t},l.parentBoundary=ns,l.wrap=Sh()},"addPersonOrSystem"),nke=o(function(t,e,r,n,i,a,s,l){if(e===null||r===null)return;let u={},h=ml.find(f=>f.alias===e);if(h&&e===h.alias?u=h:(u.alias=e,ml.push(u)),r==null?u.label={text:""}:u.label={text:r},n==null)u.techn={text:""};else if(typeof n=="object"){let[f,d]=Object.entries(n)[0];u[f]={text:d}}else u.techn={text:n};if(i==null)u.descr={text:""};else if(typeof i=="object"){let[f,d]=Object.entries(i)[0];u[f]={text:d}}else u.descr={text:i};if(typeof a=="object"){let[f,d]=Object.entries(a)[0];u[f]=d}else u.sprite=a;if(typeof s=="object"){let[f,d]=Object.entries(s)[0];u[f]=d}else u.tags=s;if(typeof l=="object"){let[f,d]=Object.entries(l)[0];u[f]=d}else u.link=l;u.wrap=Sh(),u.typeC4Shape={text:t},u.parentBoundary=ns},"addContainer"),ike=o(function(t,e,r,n,i,a,s,l){if(e===null||r===null)return;let u={},h=ml.find(f=>f.alias===e);if(h&&e===h.alias?u=h:(u.alias=e,ml.push(u)),r==null?u.label={text:""}:u.label={text:r},n==null)u.techn={text:""};else if(typeof n=="object"){let[f,d]=Object.entries(n)[0];u[f]={text:d}}else u.techn={text:n};if(i==null)u.descr={text:""};else if(typeof i=="object"){let[f,d]=Object.entries(i)[0];u[f]={text:d}}else u.descr={text:i};if(typeof a=="object"){let[f,d]=Object.entries(a)[0];u[f]=d}else u.sprite=a;if(typeof s=="object"){let[f,d]=Object.entries(s)[0];u[f]=d}else u.tags=s;if(typeof l=="object"){let[f,d]=Object.entries(l)[0];u[f]=d}else u.link=l;u.wrap=Sh(),u.typeC4Shape={text:t},u.parentBoundary=ns},"addComponent"),ake=o(function(t,e,r,n,i){if(t===null||e===null)return;let a={},s=ac.find(l=>l.alias===t);if(s&&t===s.alias?a=s:(a.alias=t,ac.push(a)),e==null?a.label={text:""}:a.label={text:e},r==null)a.type={text:"system"};else if(typeof r=="object"){let[l,u]=Object.entries(r)[0];a[l]={text:u}}else a.type={text:r};if(typeof n=="object"){let[l,u]=Object.entries(n)[0];a[l]=u}else a.tags=n;if(typeof i=="object"){let[l,u]=Object.entries(i)[0];a[l]=u}else a.link=i;a.parentBoundary=ns,a.wrap=Sh(),pl=ns,ns=t,Eh.push(pl)},"addPersonOrSystemBoundary"),ske=o(function(t,e,r,n,i){if(t===null||e===null)return;let a={},s=ac.find(l=>l.alias===t);if(s&&t===s.alias?a=s:(a.alias=t,ac.push(a)),e==null?a.label={text:""}:a.label={text:e},r==null)a.type={text:"container"};else if(typeof r=="object"){let[l,u]=Object.entries(r)[0];a[l]={text:u}}else a.type={text:r};if(typeof n=="object"){let[l,u]=Object.entries(n)[0];a[l]=u}else a.tags=n;if(typeof i=="object"){let[l,u]=Object.entries(i)[0];a[l]=u}else a.link=i;a.parentBoundary=ns,a.wrap=Sh(),pl=ns,ns=t,Eh.push(pl)},"addContainerBoundary"),oke=o(function(t,e,r,n,i,a,s,l){if(e===null||r===null)return;let u={},h=ac.find(f=>f.alias===e);if(h&&e===h.alias?u=h:(u.alias=e,ac.push(u)),r==null?u.label={text:""}:u.label={text:r},n==null)u.type={text:"node"};else if(typeof n=="object"){let[f,d]=Object.entries(n)[0];u[f]={text:d}}else u.type={text:n};if(i==null)u.descr={text:""};else if(typeof i=="object"){let[f,d]=Object.entries(i)[0];u[f]={text:d}}else u.descr={text:i};if(typeof s=="object"){let[f,d]=Object.entries(s)[0];u[f]=d}else u.tags=s;if(typeof l=="object"){let[f,d]=Object.entries(l)[0];u[f]=d}else u.link=l;u.nodeType=t,u.parentBoundary=ns,u.wrap=Sh(),pl=ns,ns=e,Eh.push(pl)},"addDeploymentNode"),lke=o(function(){ns=pl,Eh.pop(),pl=Eh.pop(),Eh.push(pl)},"popBoundaryParseStack"),cke=o(function(t,e,r,n,i,a,s,l,u,h,f){let d=ml.find(p=>p.alias===e);if(!(d===void 0&&(d=ac.find(p=>p.alias===e),d===void 0))){if(r!=null)if(typeof r=="object"){let[p,m]=Object.entries(r)[0];d[p]=m}else d.bgColor=r;if(n!=null)if(typeof n=="object"){let[p,m]=Object.entries(n)[0];d[p]=m}else d.fontColor=n;if(i!=null)if(typeof i=="object"){let[p,m]=Object.entries(i)[0];d[p]=m}else d.borderColor=i;if(a!=null)if(typeof a=="object"){let[p,m]=Object.entries(a)[0];d[p]=m}else d.shadowing=a;if(s!=null)if(typeof s=="object"){let[p,m]=Object.entries(s)[0];d[p]=m}else d.shape=s;if(l!=null)if(typeof l=="object"){let[p,m]=Object.entries(l)[0];d[p]=m}else d.sprite=l;if(u!=null)if(typeof u=="object"){let[p,m]=Object.entries(u)[0];d[p]=m}else d.techn=u;if(h!=null)if(typeof h=="object"){let[p,m]=Object.entries(h)[0];d[p]=m}else d.legendText=h;if(f!=null)if(typeof f=="object"){let[p,m]=Object.entries(f)[0];d[p]=m}else d.legendSprite=f}},"updateElStyle"),uke=o(function(t,e,r,n,i,a,s){let l=sv.find(u=>u.from===e&&u.to===r);if(l!==void 0){if(n!=null)if(typeof n=="object"){let[u,h]=Object.entries(n)[0];l[u]=h}else l.textColor=n;if(i!=null)if(typeof i=="object"){let[u,h]=Object.entries(i)[0];l[u]=h}else l.lineColor=i;if(a!=null)if(typeof a=="object"){let[u,h]=Object.entries(a)[0];l[u]=parseInt(h)}else l.offsetX=parseInt(a);if(s!=null)if(typeof s=="object"){let[u,h]=Object.entries(s)[0];l[u]=parseInt(h)}else l.offsetY=parseInt(s)}},"updateRelStyle"),hke=o(function(t,e,r){let n=V3,i=U3;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&&(V3=n),i>=1&&(U3=i)},"updateLayoutConfig"),fke=o(function(){return V3},"getC4ShapeInRow"),dke=o(function(){return U3},"getC4BoundaryInRow"),pke=o(function(){return ns},"getCurrentBoundaryParse"),mke=o(function(){return pl},"getParentBoundaryParse"),lH=o(function(t){return t==null?ml:ml.filter(e=>e.parentBoundary===t)},"getC4ShapeArray"),gke=o(function(t){return ml.find(e=>e.alias===t)},"getC4Shape"),yke=o(function(t){return Object.keys(lH(t))},"getC4ShapeKeys"),cH=o(function(t){return t==null?ac:ac.filter(e=>e.parentBoundary===t)},"getBoundaries"),vke=cH,xke=o(function(){return sv},"getRels"),bke=o(function(){return $A},"getTitle"),Tke=o(function(t){zA=t},"setWrap"),Sh=o(function(){return zA},"autoWrap"),wke=o(function(){ml=[],ac=[{alias:"global",label:{text:"global"},type:{text:"global"},tags:null,link:null,parentBoundary:""}],pl="",ns="global",Eh=[""],sv=[],Eh=[""],$A="",zA=!1,V3=4,U3=2},"clear"),kke={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},Eke={FILLED:0,OPEN:1},Ske={LEFTOF:0,RIGHTOF:1,OVER:2},Cke=o(function(t){$A=sr(t,ge())},"setTitle"),ov={addPersonOrSystem:rke,addPersonOrSystemBoundary:ake,addContainer:nke,addContainerBoundary:ske,addComponent:ike,addDeploymentNode:oke,popBoundaryParseStack:lke,addRel:tke,updateElStyle:cke,updateRelStyle:uke,updateLayoutConfig:hke,autoWrap:Sh,setWrap:Tke,getC4ShapeArray:lH,getC4Shape:gke,getC4ShapeKeys:yke,getBoundaries:cH,getBoundarys:vke,getCurrentBoundaryParse:pke,getParentBoundaryParse:mke,getRels:xke,getTitle:bke,getC4Type:Jwe,getC4ShapeInRow:fke,getC4BoundaryInRow:dke,setAccTitle:Rr,getAccTitle:Mr,getAccDescription:Or,setAccDescription:Ir,getConfig:o(()=>ge().c4,"getConfig"),clear:wke,LINETYPE:kke,ARROWTYPE:Eke,PLACEMENT:Ske,setTitle:Cke,setC4Type:eke}});function bd(t,e){return t==null||e==null?NaN:te?1:t>=e?0:NaN}var VA=N(()=>{"use strict";o(bd,"ascending")});function UA(t,e){return t==null||e==null?NaN:et?1:e>=t?0:NaN}var uH=N(()=>{"use strict";o(UA,"descending")});function Td(t){let e,r,n;t.length!==2?(e=bd,r=o((l,u)=>bd(t(l),u),"compare2"),n=o((l,u)=>t(l)-u,"delta")):(e=t===bd||t===UA?t:Ake,r=t,n=t);function i(l,u,h=0,f=l.length){if(h>>1;r(l[d],u)<0?h=d+1:f=d}while(h>>1;r(l[d],u)<=0?h=d+1:f=d}while(hh&&n(l[d-1],u)>-n(l[d],u)?d-1:d}return o(s,"center"),{left:i,center:s,right:a}}function Ake(){return 0}var HA=N(()=>{"use strict";VA();uH();o(Td,"bisector");o(Ake,"zero")});function qA(t){return t===null?NaN:+t}var hH=N(()=>{"use strict";o(qA,"number")});var fH,dH,_ke,Dke,WA,pH=N(()=>{"use strict";VA();HA();hH();fH=Td(bd),dH=fH.right,_ke=fH.left,Dke=Td(qA).center,WA=dH});function mH({_intern:t,_key:e},r){let n=e(r);return t.has(n)?t.get(n):r}function Lke({_intern:t,_key:e},r){let n=e(r);return t.has(n)?t.get(n):(t.set(n,r),r)}function Rke({_intern:t,_key:e},r){let n=e(r);return t.has(n)&&(r=t.get(n),t.delete(n)),r}function Nke(t){return t!==null&&typeof t=="object"?t.valueOf():t}var D0,gH=N(()=>{"use strict";D0=class extends Map{static{o(this,"InternMap")}constructor(e,r=Nke){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(mH(this,e))}has(e){return super.has(mH(this,e))}set(e,r){return super.set(Lke(this,e),r)}delete(e){return super.delete(Rke(this,e))}};o(mH,"intern_get");o(Lke,"intern_set");o(Rke,"intern_delete");o(Nke,"keyof")});function H3(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>=Mke?10:a>=Ike?5:a>=Oke?2:1,l,u,h;return i<0?(h=Math.pow(10,-i)/s,l=Math.round(t*h),u=Math.round(e*h),l/he&&--u,h=-h):(h=Math.pow(10,i)*s,l=Math.round(t/h),u=Math.round(e/h),l*he&&--u),u0))return[];if(t===e)return[t];let n=e=i))return[];let l=a-i+1,u=new Array(l);if(n)if(s<0)for(let h=0;h{"use strict";Mke=Math.sqrt(50),Ike=Math.sqrt(10),Oke=Math.sqrt(2);o(H3,"tickSpec");o(q3,"ticks");o(lv,"tickIncrement");o(L0,"tickStep")});function W3(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 vH=N(()=>{"use strict";o(W3,"max")});function Y3(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 xH=N(()=>{"use strict";o(Y3,"min")});function X3(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{"use strict";o(X3,"range")});var Ch=N(()=>{"use strict";pH();HA();vH();xH();bH();yH();gH()});function YA(t){return t}var TH=N(()=>{"use strict";o(YA,"default")});function Pke(t){return"translate("+t+",0)"}function Bke(t){return"translate(0,"+t+")"}function Fke(t){return e=>+t(e)}function $ke(t,e){return e=Math.max(0,t.bandwidth()-e*2)/2,t.round()&&(e=Math.round(e)),r=>+t(r)+e}function zke(){return!this.__axis}function kH(t,e){var r=[],n=null,i=null,a=6,s=6,l=3,u=typeof window<"u"&&window.devicePixelRatio>1?0:.5,h=t===K3||t===j3?-1:1,f=t===j3||t===XA?"x":"y",d=t===K3||t===jA?Pke:Bke;function p(m){var g=n??(e.ticks?e.ticks.apply(e,r):e.domain()),y=i??(e.tickFormat?e.tickFormat.apply(e,r):YA),v=Math.max(a,0)+l,x=e.range(),b=+x[0]+u,T=+x[x.length-1]+u,S=(e.bandwidth?$ke:Fke)(e.copy(),u),w=m.selection?m.selection():m,k=w.selectAll(".domain").data([null]),A=w.selectAll(".tick").data(g,e).order(),C=A.exit(),R=A.enter().append("g").attr("class","tick"),I=A.select("line"),L=A.select("text");k=k.merge(k.enter().insert("path",".tick").attr("class","domain").attr("stroke","currentColor")),A=A.merge(R),I=I.merge(R.append("line").attr("stroke","currentColor").attr(f+"2",h*a)),L=L.merge(R.append("text").attr("fill","currentColor").attr(f,h*v).attr("dy",t===K3?"0em":t===jA?"0.71em":"0.32em")),m!==w&&(k=k.transition(m),A=A.transition(m),I=I.transition(m),L=L.transition(m),C=C.transition(m).attr("opacity",wH).attr("transform",function(E){return isFinite(E=S(E))?d(E+u):this.getAttribute("transform")}),R.attr("opacity",wH).attr("transform",function(E){var D=this.parentNode.__axis;return d((D&&isFinite(D=D(E))?D:S(E))+u)})),C.remove(),k.attr("d",t===j3||t===XA?s?"M"+h*s+","+b+"H"+u+"V"+T+"H"+h*s:"M"+u+","+b+"V"+T:s?"M"+b+","+h*s+"V"+u+"H"+T+"V"+h*s:"M"+b+","+u+"H"+T),A.attr("opacity",1).attr("transform",function(E){return d(S(E)+u)}),I.attr(f+"2",h*a),L.attr(f,h*v).text(y),w.filter(zke).attr("fill","none").attr("font-size",10).attr("font-family","sans-serif").attr("text-anchor",t===XA?"start":t===j3?"end":"middle"),w.each(function(){this.__axis=S})}return o(p,"axis"),p.scale=function(m){return arguments.length?(e=m,p):e},p.ticks=function(){return r=Array.from(arguments),p},p.tickArguments=function(m){return arguments.length?(r=m==null?[]:Array.from(m),p):r.slice()},p.tickValues=function(m){return arguments.length?(n=m==null?null:Array.from(m),p):n&&n.slice()},p.tickFormat=function(m){return arguments.length?(i=m,p):i},p.tickSize=function(m){return arguments.length?(a=s=+m,p):a},p.tickSizeInner=function(m){return arguments.length?(a=+m,p):a},p.tickSizeOuter=function(m){return arguments.length?(s=+m,p):s},p.tickPadding=function(m){return arguments.length?(l=+m,p):l},p.offset=function(m){return arguments.length?(u=+m,p):u},p}function KA(t){return kH(K3,t)}function QA(t){return kH(jA,t)}var K3,XA,jA,j3,wH,EH=N(()=>{"use strict";TH();K3=1,XA=2,jA=3,j3=4,wH=1e-6;o(Pke,"translateX");o(Bke,"translateY");o(Fke,"number");o($ke,"center");o(zke,"entering");o(kH,"axis");o(KA,"axisTop");o(QA,"axisBottom")});var SH=N(()=>{"use strict";EH()});function AH(){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 Uke(t,e){for(var r=0,n=t.length,i;r{"use strict";Gke={value:o(()=>{},"value")};o(AH,"dispatch");o(Q3,"Dispatch");o(Vke,"parseTypenames");Q3.prototype=AH.prototype={constructor:Q3,on:o(function(t,e){var r=this._,n=Vke(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{"use strict";_H()});var Z3,e8,t8=N(()=>{"use strict";Z3="http://www.w3.org/1999/xhtml",e8={svg:"http://www.w3.org/2000/svg",xhtml:Z3,xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"}});function sc(t){var e=t+="",r=e.indexOf(":");return r>=0&&(e=t.slice(0,r))!=="xmlns"&&(t=t.slice(r+1)),e8.hasOwnProperty(e)?{space:e8[e],local:t}:t}var J3=N(()=>{"use strict";t8();o(sc,"default")});function Hke(t){return function(){var e=this.ownerDocument,r=this.namespaceURI;return r===Z3&&e.documentElement.namespaceURI===Z3?e.createElement(t):e.createElementNS(r,t)}}function qke(t){return function(){return this.ownerDocument.createElementNS(t.space,t.local)}}function cv(t){var e=sc(t);return(e.local?qke:Hke)(e)}var r8=N(()=>{"use strict";J3();t8();o(Hke,"creatorInherit");o(qke,"creatorFixed");o(cv,"default")});function Wke(){}function Ah(t){return t==null?Wke:function(){return this.querySelector(t)}}var e5=N(()=>{"use strict";o(Wke,"none");o(Ah,"default")});function n8(t){typeof t!="function"&&(t=Ah(t));for(var e=this._groups,r=e.length,n=new Array(r),i=0;i{"use strict";gl();e5();o(n8,"default")});function i8(t){return t==null?[]:Array.isArray(t)?t:Array.from(t)}var LH=N(()=>{"use strict";o(i8,"array")});function Yke(){return[]}function R0(t){return t==null?Yke:function(){return this.querySelectorAll(t)}}var a8=N(()=>{"use strict";o(Yke,"empty");o(R0,"default")});function Xke(t){return function(){return i8(t.apply(this,arguments))}}function s8(t){typeof t=="function"?t=Xke(t):t=R0(t);for(var e=this._groups,r=e.length,n=[],i=[],a=0;a{"use strict";gl();LH();a8();o(Xke,"arrayAll");o(s8,"default")});function N0(t){return function(){return this.matches(t)}}function t5(t){return function(e){return e.matches(t)}}var uv=N(()=>{"use strict";o(N0,"default");o(t5,"childMatcher")});function Kke(t){return function(){return jke.call(this.children,t)}}function Qke(){return this.firstElementChild}function o8(t){return this.select(t==null?Qke:Kke(typeof t=="function"?t:t5(t)))}var jke,NH=N(()=>{"use strict";uv();jke=Array.prototype.find;o(Kke,"childFind");o(Qke,"childFirst");o(o8,"default")});function Jke(){return Array.from(this.children)}function eEe(t){return function(){return Zke.call(this.children,t)}}function l8(t){return this.selectAll(t==null?Jke:eEe(typeof t=="function"?t:t5(t)))}var Zke,MH=N(()=>{"use strict";uv();Zke=Array.prototype.filter;o(Jke,"children");o(eEe,"childrenFilter");o(l8,"default")});function c8(t){typeof t!="function"&&(t=N0(t));for(var e=this._groups,r=e.length,n=new Array(r),i=0;i{"use strict";gl();uv();o(c8,"default")});function hv(t){return new Array(t.length)}var u8=N(()=>{"use strict";o(hv,"default")});function h8(){return new ui(this._enter||this._groups.map(hv),this._parents)}function fv(t,e){this.ownerDocument=t.ownerDocument,this.namespaceURI=t.namespaceURI,this._next=null,this._parent=t,this.__data__=e}var f8=N(()=>{"use strict";u8();gl();o(h8,"default");o(fv,"EnterNode");fv.prototype={constructor:fv,appendChild:o(function(t){return this._parent.insertBefore(t,this._next)},"appendChild"),insertBefore:o(function(t,e){return this._parent.insertBefore(t,e)},"insertBefore"),querySelector:o(function(t){return this._parent.querySelector(t)},"querySelector"),querySelectorAll:o(function(t){return this._parent.querySelectorAll(t)},"querySelectorAll")}});function d8(t){return function(){return t}}var OH=N(()=>{"use strict";o(d8,"default")});function tEe(t,e,r,n,i,a){for(var s=0,l,u=e.length,h=a.length;s=T&&(T=b+1);!(w=v[T])&&++T{"use strict";gl();f8();OH();o(tEe,"bindIndex");o(rEe,"bindKey");o(nEe,"datum");o(p8,"default");o(iEe,"arraylike")});function m8(){return new ui(this._exit||this._groups.map(hv),this._parents)}var BH=N(()=>{"use strict";u8();gl();o(m8,"default")});function g8(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 FH=N(()=>{"use strict";o(g8,"default")});function y8(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),l=new Array(i),u=0;u{"use strict";gl();o(y8,"default")});function v8(){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 zH=N(()=>{"use strict";o(v8,"default")});function x8(t){t||(t=aEe);function e(d,p){return d&&p?t(d.__data__,p.__data__):!d-!p}o(e,"compareNode");for(var r=this._groups,n=r.length,i=new Array(n),a=0;ae?1:t>=e?0:NaN}var GH=N(()=>{"use strict";gl();o(x8,"default");o(aEe,"ascending")});function b8(){var t=arguments[0];return arguments[0]=this,t.apply(null,arguments),this}var VH=N(()=>{"use strict";o(b8,"default")});function T8(){return Array.from(this)}var UH=N(()=>{"use strict";o(T8,"default")});function w8(){for(var t=this._groups,e=0,r=t.length;e{"use strict";o(w8,"default")});function k8(){let t=0;for(let e of this)++t;return t}var qH=N(()=>{"use strict";o(k8,"default")});function E8(){return!this.node()}var WH=N(()=>{"use strict";o(E8,"default")});function S8(t){for(var e=this._groups,r=0,n=e.length;r{"use strict";o(S8,"default")});function sEe(t){return function(){this.removeAttribute(t)}}function oEe(t){return function(){this.removeAttributeNS(t.space,t.local)}}function lEe(t,e){return function(){this.setAttribute(t,e)}}function cEe(t,e){return function(){this.setAttributeNS(t.space,t.local,e)}}function uEe(t,e){return function(){var r=e.apply(this,arguments);r==null?this.removeAttribute(t):this.setAttribute(t,r)}}function hEe(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 C8(t,e){var r=sc(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?oEe:sEe:typeof e=="function"?r.local?hEe:uEe:r.local?cEe:lEe)(r,e))}var XH=N(()=>{"use strict";J3();o(sEe,"attrRemove");o(oEe,"attrRemoveNS");o(lEe,"attrConstant");o(cEe,"attrConstantNS");o(uEe,"attrFunction");o(hEe,"attrFunctionNS");o(C8,"default")});function dv(t){return t.ownerDocument&&t.ownerDocument.defaultView||t.document&&t||t.defaultView}var A8=N(()=>{"use strict";o(dv,"default")});function fEe(t){return function(){this.style.removeProperty(t)}}function dEe(t,e,r){return function(){this.style.setProperty(t,e,r)}}function pEe(t,e,r){return function(){var n=e.apply(this,arguments);n==null?this.style.removeProperty(t):this.style.setProperty(t,n,r)}}function _8(t,e,r){return arguments.length>1?this.each((e==null?fEe:typeof e=="function"?pEe:dEe)(t,e,r??"")):_h(this.node(),t)}function _h(t,e){return t.style.getPropertyValue(e)||dv(t).getComputedStyle(t,null).getPropertyValue(e)}var D8=N(()=>{"use strict";A8();o(fEe,"styleRemove");o(dEe,"styleConstant");o(pEe,"styleFunction");o(_8,"default");o(_h,"styleValue")});function mEe(t){return function(){delete this[t]}}function gEe(t,e){return function(){this[t]=e}}function yEe(t,e){return function(){var r=e.apply(this,arguments);r==null?delete this[t]:this[t]=r}}function L8(t,e){return arguments.length>1?this.each((e==null?mEe:typeof e=="function"?yEe:gEe)(t,e)):this.node()[t]}var jH=N(()=>{"use strict";o(mEe,"propertyRemove");o(gEe,"propertyConstant");o(yEe,"propertyFunction");o(L8,"default")});function KH(t){return t.trim().split(/^|\s+/)}function R8(t){return t.classList||new QH(t)}function QH(t){this._node=t,this._names=KH(t.getAttribute("class")||"")}function ZH(t,e){for(var r=R8(t),n=-1,i=e.length;++n{"use strict";o(KH,"classArray");o(R8,"classList");o(QH,"ClassList");QH.prototype={add:o(function(t){var e=this._names.indexOf(t);e<0&&(this._names.push(t),this._node.setAttribute("class",this._names.join(" ")))},"add"),remove:o(function(t){var e=this._names.indexOf(t);e>=0&&(this._names.splice(e,1),this._node.setAttribute("class",this._names.join(" ")))},"remove"),contains:o(function(t){return this._names.indexOf(t)>=0},"contains")};o(ZH,"classedAdd");o(JH,"classedRemove");o(vEe,"classedTrue");o(xEe,"classedFalse");o(bEe,"classedFunction");o(N8,"default")});function TEe(){this.textContent=""}function wEe(t){return function(){this.textContent=t}}function kEe(t){return function(){var e=t.apply(this,arguments);this.textContent=e??""}}function M8(t){return arguments.length?this.each(t==null?TEe:(typeof t=="function"?kEe:wEe)(t)):this.node().textContent}var tq=N(()=>{"use strict";o(TEe,"textRemove");o(wEe,"textConstant");o(kEe,"textFunction");o(M8,"default")});function EEe(){this.innerHTML=""}function SEe(t){return function(){this.innerHTML=t}}function CEe(t){return function(){var e=t.apply(this,arguments);this.innerHTML=e??""}}function I8(t){return arguments.length?this.each(t==null?EEe:(typeof t=="function"?CEe:SEe)(t)):this.node().innerHTML}var rq=N(()=>{"use strict";o(EEe,"htmlRemove");o(SEe,"htmlConstant");o(CEe,"htmlFunction");o(I8,"default")});function AEe(){this.nextSibling&&this.parentNode.appendChild(this)}function O8(){return this.each(AEe)}var nq=N(()=>{"use strict";o(AEe,"raise");o(O8,"default")});function _Ee(){this.previousSibling&&this.parentNode.insertBefore(this,this.parentNode.firstChild)}function P8(){return this.each(_Ee)}var iq=N(()=>{"use strict";o(_Ee,"lower");o(P8,"default")});function B8(t){var e=typeof t=="function"?t:cv(t);return this.select(function(){return this.appendChild(e.apply(this,arguments))})}var aq=N(()=>{"use strict";r8();o(B8,"default")});function DEe(){return null}function F8(t,e){var r=typeof t=="function"?t:cv(t),n=e==null?DEe:typeof e=="function"?e:Ah(e);return this.select(function(){return this.insertBefore(r.apply(this,arguments),n.apply(this,arguments)||null)})}var sq=N(()=>{"use strict";r8();e5();o(DEe,"constantNull");o(F8,"default")});function LEe(){var t=this.parentNode;t&&t.removeChild(this)}function $8(){return this.each(LEe)}var oq=N(()=>{"use strict";o(LEe,"remove");o($8,"default")});function REe(){var t=this.cloneNode(!1),e=this.parentNode;return e?e.insertBefore(t,this.nextSibling):t}function NEe(){var t=this.cloneNode(!0),e=this.parentNode;return e?e.insertBefore(t,this.nextSibling):t}function z8(t){return this.select(t?NEe:REe)}var lq=N(()=>{"use strict";o(REe,"selection_cloneShallow");o(NEe,"selection_cloneDeep");o(z8,"default")});function G8(t){return arguments.length?this.property("__data__",t):this.node().__data__}var cq=N(()=>{"use strict";o(G8,"default")});function MEe(t){return function(e){t.call(this,e,this.__data__)}}function IEe(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 OEe(t){return function(){var e=this.__on;if(e){for(var r=0,n=-1,i=e.length,a;r{"use strict";o(MEe,"contextListener");o(IEe,"parseTypenames");o(OEe,"onRemove");o(PEe,"onAdd");o(V8,"default")});function hq(t,e,r){var n=dv(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 BEe(t,e){return function(){return hq(this,t,e)}}function FEe(t,e){return function(){return hq(this,t,e.apply(this,arguments))}}function U8(t,e){return this.each((typeof e=="function"?FEe:BEe)(t,e))}var fq=N(()=>{"use strict";A8();o(hq,"dispatchEvent");o(BEe,"dispatchConstant");o(FEe,"dispatchFunction");o(U8,"default")});function*H8(){for(var t=this._groups,e=0,r=t.length;e{"use strict";o(H8,"default")});function ui(t,e){this._groups=t,this._parents=e}function pq(){return new ui([[document.documentElement]],q8)}function $Ee(){return this}var q8,yu,gl=N(()=>{"use strict";DH();RH();NH();MH();IH();PH();f8();BH();FH();$H();zH();GH();VH();UH();HH();qH();WH();YH();XH();D8();jH();eq();tq();rq();nq();iq();aq();sq();oq();lq();cq();uq();fq();dq();q8=[null];o(ui,"Selection");o(pq,"selection");o($Ee,"selection_selection");ui.prototype=pq.prototype={constructor:ui,select:n8,selectAll:s8,selectChild:o8,selectChildren:l8,filter:c8,data:p8,enter:h8,exit:m8,join:g8,merge:y8,selection:$Ee,order:v8,sort:x8,call:b8,nodes:T8,node:w8,size:k8,empty:E8,each:S8,attr:C8,style:_8,property:L8,classed:N8,text:M8,html:I8,raise:O8,lower:P8,append:B8,insert:F8,remove:$8,clone:z8,datum:G8,on:V8,dispatch:U8,[Symbol.iterator]:H8};yu=pq});function qe(t){return typeof t=="string"?new ui([[document.querySelector(t)]],[document.documentElement]):new ui([[t]],q8)}var mq=N(()=>{"use strict";gl();o(qe,"default")});var yl=N(()=>{"use strict";uv();J3();mq();gl();e5();a8();D8()});var gq=N(()=>{"use strict"});function Dh(t,e,r){t.prototype=e.prototype=r,r.constructor=t}function M0(t,e){var r=Object.create(t.prototype);for(var n in e)r[n]=e[n];return r}var W8=N(()=>{"use strict";o(Dh,"default");o(M0,"extend")});function Lh(){}function vq(){return this.rgb().formatHex()}function YEe(){return this.rgb().formatHex8()}function XEe(){return Sq(this).formatHsl()}function xq(){return this.rgb().formatRgb()}function xl(t){var e,r;return t=(t+"").trim().toLowerCase(),(e=zEe.exec(t))?(r=e[1].length,e=parseInt(e[1],16),r===6?bq(e):r===3?new oa(e>>8&15|e>>4&240,e>>4&15|e&240,(e&15)<<4|e&15,1):r===8?r5(e>>24&255,e>>16&255,e>>8&255,(e&255)/255):r===4?r5(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=GEe.exec(t))?new oa(e[1],e[2],e[3],1):(e=VEe.exec(t))?new oa(e[1]*255/100,e[2]*255/100,e[3]*255/100,1):(e=UEe.exec(t))?r5(e[1],e[2],e[3],e[4]):(e=HEe.exec(t))?r5(e[1]*255/100,e[2]*255/100,e[3]*255/100,e[4]):(e=qEe.exec(t))?kq(e[1],e[2]/100,e[3]/100,1):(e=WEe.exec(t))?kq(e[1],e[2]/100,e[3]/100,e[4]):yq.hasOwnProperty(t)?bq(yq[t]):t==="transparent"?new oa(NaN,NaN,NaN,0):null}function bq(t){return new oa(t>>16&255,t>>8&255,t&255,1)}function r5(t,e,r,n){return n<=0&&(t=e=r=NaN),new oa(t,e,r,n)}function X8(t){return t instanceof Lh||(t=xl(t)),t?(t=t.rgb(),new oa(t.r,t.g,t.b,t.opacity)):new oa}function O0(t,e,r,n){return arguments.length===1?X8(t):new oa(t,e,r,n??1)}function oa(t,e,r,n){this.r=+t,this.g=+e,this.b=+r,this.opacity=+n}function Tq(){return`#${wd(this.r)}${wd(this.g)}${wd(this.b)}`}function jEe(){return`#${wd(this.r)}${wd(this.g)}${wd(this.b)}${wd((isNaN(this.opacity)?1:this.opacity)*255)}`}function wq(){let t=a5(this.opacity);return`${t===1?"rgb(":"rgba("}${kd(this.r)}, ${kd(this.g)}, ${kd(this.b)}${t===1?")":`, ${t})`}`}function a5(t){return isNaN(t)?1:Math.max(0,Math.min(1,t))}function kd(t){return Math.max(0,Math.min(255,Math.round(t)||0))}function wd(t){return t=kd(t),(t<16?"0":"")+t.toString(16)}function kq(t,e,r,n){return n<=0?t=e=r=NaN:r<=0||r>=1?t=e=NaN:e<=0&&(t=NaN),new vl(t,e,r,n)}function Sq(t){if(t instanceof vl)return new vl(t.h,t.s,t.l,t.opacity);if(t instanceof Lh||(t=xl(t)),!t)return new vl;if(t instanceof vl)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,l=a-i,u=(a+i)/2;return l?(e===a?s=(r-n)/l+(r0&&u<1?0:s,new vl(s,l,u,t.opacity)}function Cq(t,e,r,n){return arguments.length===1?Sq(t):new vl(t,e,r,n??1)}function vl(t,e,r,n){this.h=+t,this.s=+e,this.l=+r,this.opacity=+n}function Eq(t){return t=(t||0)%360,t<0?t+360:t}function n5(t){return Math.max(0,Math.min(1,t||0))}function Y8(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 pv,i5,I0,mv,oc,zEe,GEe,VEe,UEe,HEe,qEe,WEe,yq,j8=N(()=>{"use strict";W8();o(Lh,"Color");pv=.7,i5=1/pv,I0="\\s*([+-]?\\d+)\\s*",mv="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*",oc="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*",zEe=/^#([0-9a-f]{3,8})$/,GEe=new RegExp(`^rgb\\(${I0},${I0},${I0}\\)$`),VEe=new RegExp(`^rgb\\(${oc},${oc},${oc}\\)$`),UEe=new RegExp(`^rgba\\(${I0},${I0},${I0},${mv}\\)$`),HEe=new RegExp(`^rgba\\(${oc},${oc},${oc},${mv}\\)$`),qEe=new RegExp(`^hsl\\(${mv},${oc},${oc}\\)$`),WEe=new RegExp(`^hsla\\(${mv},${oc},${oc},${mv}\\)$`),yq={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};Dh(Lh,xl,{copy(t){return Object.assign(new this.constructor,this,t)},displayable(){return this.rgb().displayable()},hex:vq,formatHex:vq,formatHex8:YEe,formatHsl:XEe,formatRgb:xq,toString:xq});o(vq,"color_formatHex");o(YEe,"color_formatHex8");o(XEe,"color_formatHsl");o(xq,"color_formatRgb");o(xl,"color");o(bq,"rgbn");o(r5,"rgba");o(X8,"rgbConvert");o(O0,"rgb");o(oa,"Rgb");Dh(oa,O0,M0(Lh,{brighter(t){return t=t==null?i5:Math.pow(i5,t),new oa(this.r*t,this.g*t,this.b*t,this.opacity)},darker(t){return t=t==null?pv:Math.pow(pv,t),new oa(this.r*t,this.g*t,this.b*t,this.opacity)},rgb(){return this},clamp(){return new oa(kd(this.r),kd(this.g),kd(this.b),a5(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:Tq,formatHex:Tq,formatHex8:jEe,formatRgb:wq,toString:wq}));o(Tq,"rgb_formatHex");o(jEe,"rgb_formatHex8");o(wq,"rgb_formatRgb");o(a5,"clampa");o(kd,"clampi");o(wd,"hex");o(kq,"hsla");o(Sq,"hslConvert");o(Cq,"hsl");o(vl,"Hsl");Dh(vl,Cq,M0(Lh,{brighter(t){return t=t==null?i5:Math.pow(i5,t),new vl(this.h,this.s,this.l*t,this.opacity)},darker(t){return t=t==null?pv:Math.pow(pv,t),new vl(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 oa(Y8(t>=240?t-240:t+120,i,n),Y8(t,i,n),Y8(t<120?t+240:t-120,i,n),this.opacity)},clamp(){return new vl(Eq(this.h),n5(this.s),n5(this.l),a5(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=a5(this.opacity);return`${t===1?"hsl(":"hsla("}${Eq(this.h)}, ${n5(this.s)*100}%, ${n5(this.l)*100}%${t===1?")":`, ${t})`}`}}));o(Eq,"clamph");o(n5,"clampt");o(Y8,"hsl2rgb")});var Aq,_q,Dq=N(()=>{"use strict";Aq=Math.PI/180,_q=180/Math.PI});function Oq(t){if(t instanceof lc)return new lc(t.l,t.a,t.b,t.opacity);if(t instanceof vu)return Pq(t);t instanceof oa||(t=X8(t));var e=J8(t.r),r=J8(t.g),n=J8(t.b),i=K8((.2225045*e+.7168786*r+.0606169*n)/Rq),a,s;return e===r&&r===n?a=s=i:(a=K8((.4360747*e+.3850649*r+.1430804*n)/Lq),s=K8((.0139322*e+.0971045*r+.7141733*n)/Nq)),new lc(116*i-16,500*(a-i),200*(i-s),t.opacity)}function e_(t,e,r,n){return arguments.length===1?Oq(t):new lc(t,e,r,n??1)}function lc(t,e,r,n){this.l=+t,this.a=+e,this.b=+r,this.opacity=+n}function K8(t){return t>KEe?Math.pow(t,1/3):t/Iq+Mq}function Q8(t){return t>P0?t*t*t:Iq*(t-Mq)}function Z8(t){return 255*(t<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055)}function J8(t){return(t/=255)<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function QEe(t){if(t instanceof vu)return new vu(t.h,t.c,t.l,t.opacity);if(t instanceof lc||(t=Oq(t)),t.a===0&&t.b===0)return new vu(NaN,0{"use strict";W8();j8();Dq();s5=18,Lq=.96422,Rq=1,Nq=.82521,Mq=4/29,P0=6/29,Iq=3*P0*P0,KEe=P0*P0*P0;o(Oq,"labConvert");o(e_,"lab");o(lc,"Lab");Dh(lc,e_,M0(Lh,{brighter(t){return new lc(this.l+s5*(t??1),this.a,this.b,this.opacity)},darker(t){return new lc(this.l-s5*(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=Lq*Q8(e),t=Rq*Q8(t),r=Nq*Q8(r),new oa(Z8(3.1338561*e-1.6168667*t-.4906146*r),Z8(-.9787684*e+1.9161415*t+.033454*r),Z8(.0719453*e-.2289914*t+1.4052427*r),this.opacity)}}));o(K8,"xyz2lab");o(Q8,"lab2xyz");o(Z8,"lrgb2rgb");o(J8,"rgb2lrgb");o(QEe,"hclConvert");o(gv,"hcl");o(vu,"Hcl");o(Pq,"hcl2lab");Dh(vu,gv,M0(Lh,{brighter(t){return new vu(this.h,this.c,this.l+s5*(t??1),this.opacity)},darker(t){return new vu(this.h,this.c,this.l-s5*(t??1),this.opacity)},rgb(){return Pq(this).rgb()}}))});var B0=N(()=>{"use strict";j8();Bq()});function t_(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 r_(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,l=n{"use strict";o(t_,"basis");o(r_,"default")});function i_(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],l=t[(n+2)%e];return t_((r-n/e)*e,i,a,s,l)}}var Fq=N(()=>{"use strict";n_();o(i_,"default")});var F0,a_=N(()=>{"use strict";F0=o(t=>()=>t,"default")});function $q(t,e){return function(r){return t+r*e}}function ZEe(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 zq(t,e){var r=e-t;return r?$q(t,r>180||r<-180?r-360*Math.round(r/360):r):F0(isNaN(t)?e:t)}function Gq(t){return(t=+t)==1?xu:function(e,r){return r-e?ZEe(e,r,t):F0(isNaN(e)?r:e)}}function xu(t,e){var r=e-t;return r?$q(t,r):F0(isNaN(t)?e:t)}var s_=N(()=>{"use strict";a_();o($q,"linear");o(ZEe,"exponential");o(zq,"hue");o(Gq,"gamma");o(xu,"nogamma")});function Vq(t){return function(e){var r=e.length,n=new Array(r),i=new Array(r),a=new Array(r),s,l;for(s=0;s{"use strict";B0();n_();Fq();s_();Ed=o((function t(e){var r=Gq(e);function n(i,a){var s=r((i=O0(i)).r,(a=O0(a)).r),l=r(i.g,a.g),u=r(i.b,a.b),h=xu(i.opacity,a.opacity);return function(f){return i.r=s(f),i.g=l(f),i.b=u(f),i.opacity=h(f),i+""}}return o(n,"rgb"),n.gamma=t,n}),"rgbGamma")(1);o(Vq,"rgbSpline");JEe=Vq(r_),eSe=Vq(i_)});function l_(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{"use strict";o(l_,"default");o(Uq,"isNumberArray")});function qq(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{"use strict";o5();o(qq,"genericArray")});function c_(t,e){var r=new Date;return t=+t,e=+e,function(n){return r.setTime(t*(1-n)+e*n),r}}var Yq=N(()=>{"use strict";o(c_,"default")});function Wi(t,e){return t=+t,e=+e,function(r){return t*(1-r)+e*r}}var yv=N(()=>{"use strict";o(Wi,"default")});function u_(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]=Rh(t[i],e[i]):n[i]=e[i];return function(a){for(i in r)n[i]=r[i](a);return n}}var Xq=N(()=>{"use strict";o5();o(u_,"default")});function tSe(t){return function(){return t}}function rSe(t){return function(e){return t(e)+""}}function $0(t,e){var r=f_.lastIndex=h_.lastIndex=0,n,i,a,s=-1,l=[],u=[];for(t=t+"",e=e+"";(n=f_.exec(t))&&(i=h_.exec(e));)(a=i.index)>r&&(a=e.slice(r,a),l[s]?l[s]+=a:l[++s]=a),(n=n[0])===(i=i[0])?l[s]?l[s]+=i:l[++s]=i:(l[++s]=null,u.push({i:s,x:Wi(n,i)})),r=h_.lastIndex;return r{"use strict";yv();f_=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,h_=new RegExp(f_.source,"g");o(tSe,"zero");o(rSe,"one");o($0,"default")});function Rh(t,e){var r=typeof e,n;return e==null||r==="boolean"?F0(e):(r==="number"?Wi:r==="string"?(n=xl(e))?(e=n,Ed):$0:e instanceof xl?Ed:e instanceof Date?c_:Uq(e)?l_:Array.isArray(e)?qq:typeof e.valueOf!="function"&&typeof e.toString!="function"||isNaN(e)?u_:Wi)(t,e)}var o5=N(()=>{"use strict";B0();o_();Wq();Yq();yv();Xq();d_();a_();Hq();o(Rh,"default")});function l5(t,e){return t=+t,e=+e,function(r){return Math.round(t*(1-r)+e*r)}}var jq=N(()=>{"use strict";o(l5,"default")});function u5(t,e,r,n,i,a){var s,l,u;return(s=Math.sqrt(t*t+e*e))&&(t/=s,e/=s),(u=t*r+e*n)&&(r-=t*u,n-=e*u),(l=Math.sqrt(r*r+n*n))&&(r/=l,n/=l,u/=l),t*n{"use strict";Kq=180/Math.PI,c5={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1};o(u5,"default")});function Zq(t){let e=new(typeof DOMMatrix=="function"?DOMMatrix:WebKitCSSMatrix)(t+"");return e.isIdentity?c5:u5(e.a,e.b,e.c,e.d,e.e,e.f)}function Jq(t){return t==null?c5:(h5||(h5=document.createElementNS("http://www.w3.org/2000/svg","g")),h5.setAttribute("transform",t),(t=h5.transform.baseVal.consolidate())?(t=t.matrix,u5(t.a,t.b,t.c,t.d,t.e,t.f)):c5)}var h5,eW=N(()=>{"use strict";Qq();o(Zq,"parseCss");o(Jq,"parseSvg")});function tW(t,e,r,n){function i(h){return h.length?h.pop()+" ":""}o(i,"pop");function a(h,f,d,p,m,g){if(h!==d||f!==p){var y=m.push("translate(",null,e,null,r);g.push({i:y-4,x:Wi(h,d)},{i:y-2,x:Wi(f,p)})}else(d||p)&&m.push("translate("+d+e+p+r)}o(a,"translate");function s(h,f,d,p){h!==f?(h-f>180?f+=360:f-h>180&&(h+=360),p.push({i:d.push(i(d)+"rotate(",null,n)-2,x:Wi(h,f)})):f&&d.push(i(d)+"rotate("+f+n)}o(s,"rotate");function l(h,f,d,p){h!==f?p.push({i:d.push(i(d)+"skewX(",null,n)-2,x:Wi(h,f)}):f&&d.push(i(d)+"skewX("+f+n)}o(l,"skewX");function u(h,f,d,p,m,g){if(h!==d||f!==p){var y=m.push(i(m)+"scale(",null,",",null,")");g.push({i:y-4,x:Wi(h,d)},{i:y-2,x:Wi(f,p)})}else(d!==1||p!==1)&&m.push(i(m)+"scale("+d+","+p+")")}return o(u,"scale"),function(h,f){var d=[],p=[];return h=t(h),f=t(f),a(h.translateX,h.translateY,f.translateX,f.translateY,d,p),s(h.rotate,f.rotate,d,p),l(h.skewX,f.skewX,d,p),u(h.scaleX,h.scaleY,f.scaleX,f.scaleY,d,p),h=f=null,function(m){for(var g=-1,y=p.length,v;++g{"use strict";yv();eW();o(tW,"interpolateTransform");p_=tW(Zq,"px, ","px)","deg)"),m_=tW(Jq,", ",")",")")});function nW(t){return function(e,r){var n=t((e=gv(e)).h,(r=gv(r)).h),i=xu(e.c,r.c),a=xu(e.l,r.l),s=xu(e.opacity,r.opacity);return function(l){return e.h=n(l),e.c=i(l),e.l=a(l),e.opacity=s(l),e+""}}}var g_,nSe,iW=N(()=>{"use strict";B0();s_();o(nW,"hcl");g_=nW(zq),nSe=nW(xu)});var z0=N(()=>{"use strict";o5();yv();jq();d_();rW();o_();iW()});function kv(){return Sd||(oW(iSe),Sd=Tv.now()+p5)}function iSe(){Sd=0}function wv(){this._call=this._time=this._next=null}function m5(t,e,r){var n=new wv;return n.restart(t,e,r),n}function lW(){kv(),++G0;for(var t=f5,e;t;)(e=Sd-t._time)>=0&&t._call.call(void 0,e),t=t._next;--G0}function aW(){Sd=(d5=Tv.now())+p5,G0=xv=0;try{lW()}finally{G0=0,sSe(),Sd=0}}function aSe(){var t=Tv.now(),e=t-d5;e>sW&&(p5-=e,d5=t)}function sSe(){for(var t,e=f5,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:f5=r);bv=t,y_(n)}function y_(t){if(!G0){xv&&(xv=clearTimeout(xv));var e=t-Sd;e>24?(t<1/0&&(xv=setTimeout(aW,t-Tv.now()-p5)),vv&&(vv=clearInterval(vv))):(vv||(d5=Tv.now(),vv=setInterval(aSe,sW)),G0=1,oW(aW))}}var G0,xv,vv,sW,f5,bv,d5,Sd,p5,Tv,oW,v_=N(()=>{"use strict";G0=0,xv=0,vv=0,sW=1e3,d5=0,Sd=0,p5=0,Tv=typeof performance=="object"&&performance.now?performance:Date,oW=typeof window=="object"&&window.requestAnimationFrame?window.requestAnimationFrame.bind(window):function(t){setTimeout(t,17)};o(kv,"now");o(iSe,"clearNow");o(wv,"Timer");wv.prototype=m5.prototype={constructor:wv,restart:o(function(t,e,r){if(typeof t!="function")throw new TypeError("callback is not a function");r=(r==null?kv():+r)+(e==null?0:+e),!this._next&&bv!==this&&(bv?bv._next=this:f5=this,bv=this),this._call=t,this._time=r,y_()},"restart"),stop:o(function(){this._call&&(this._call=null,this._time=1/0,y_())},"stop")};o(m5,"timer");o(lW,"timerFlush");o(aW,"wake");o(aSe,"poke");o(sSe,"nap");o(y_,"sleep")});function Ev(t,e,r){var n=new wv;return e=e==null?0:+e,n.restart(i=>{n.stop(),t(i+e)},e,r),n}var cW=N(()=>{"use strict";v_();o(Ev,"default")});var g5=N(()=>{"use strict";v_();cW()});function bu(t,e,r,n,i,a){var s=t.__transition;if(!s)t.__transition={};else if(r in s)return;cSe(t,r,{name:e,index:n,group:i,on:oSe,tween:lSe,time:a.time,delay:a.delay,duration:a.duration,ease:a.ease,timer:null,state:fW})}function Cv(t,e){var r=Oi(t,e);if(r.state>fW)throw new Error("too late; already scheduled");return r}function la(t,e){var r=Oi(t,e);if(r.state>y5)throw new Error("too late; already running");return r}function Oi(t,e){var r=t.__transition;if(!r||!(r=r[e]))throw new Error("transition not found");return r}function cSe(t,e,r){var n=t.__transition,i;n[e]=r,r.timer=m5(a,0,r.time);function a(h){r.state=uW,r.timer.restart(s,r.delay,r.time),r.delay<=h&&s(h-r.delay)}o(a,"schedule");function s(h){var f,d,p,m;if(r.state!==uW)return u();for(f in n)if(m=n[f],m.name===r.name){if(m.state===y5)return Ev(s);m.state===hW?(m.state=Sv,m.timer.stop(),m.on.call("interrupt",t,t.__data__,m.index,m.group),delete n[f]):+f{"use strict";JA();g5();oSe=ZA("start","end","cancel","interrupt"),lSe=[],fW=0,uW=1,v5=2,y5=3,hW=4,x5=5,Sv=6;o(bu,"default");o(Cv,"init");o(la,"set");o(Oi,"get");o(cSe,"create")});function Av(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>v5&&n.state{"use strict";Ds();o(Av,"default")});function x_(t){return this.each(function(){Av(this,t)})}var pW=N(()=>{"use strict";dW();o(x_,"default")});function uSe(t,e){var r,n;return function(){var i=la(this,t),a=i.tween;if(a!==r){n=r=a;for(var s=0,l=n.length;s{"use strict";Ds();o(uSe,"tweenRemove");o(hSe,"tweenFunction");o(b_,"default");o(V0,"tweenValue")});function Dv(t,e){var r;return(typeof e=="number"?Wi:e instanceof xl?Ed:(r=xl(e))?(e=r,Ed):$0)(t,e)}var T_=N(()=>{"use strict";B0();z0();o(Dv,"default")});function fSe(t){return function(){this.removeAttribute(t)}}function dSe(t){return function(){this.removeAttributeNS(t.space,t.local)}}function pSe(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 mSe(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 gSe(t,e,r){var n,i,a;return function(){var s,l=r(this),u;return l==null?void this.removeAttribute(t):(s=this.getAttribute(t),u=l+"",s===u?null:s===n&&u===i?a:(i=u,a=e(n=s,l)))}}function ySe(t,e,r){var n,i,a;return function(){var s,l=r(this),u;return l==null?void this.removeAttributeNS(t.space,t.local):(s=this.getAttributeNS(t.space,t.local),u=l+"",s===u?null:s===n&&u===i?a:(i=u,a=e(n=s,l)))}}function w_(t,e){var r=sc(t),n=r==="transform"?m_:Dv;return this.attrTween(t,typeof e=="function"?(r.local?ySe:gSe)(r,n,V0(this,"attr."+t,e)):e==null?(r.local?dSe:fSe)(r):(r.local?mSe:pSe)(r,n,e))}var mW=N(()=>{"use strict";z0();yl();_v();T_();o(fSe,"attrRemove");o(dSe,"attrRemoveNS");o(pSe,"attrConstant");o(mSe,"attrConstantNS");o(gSe,"attrFunction");o(ySe,"attrFunctionNS");o(w_,"default")});function vSe(t,e){return function(r){this.setAttribute(t,e.call(this,r))}}function xSe(t,e){return function(r){this.setAttributeNS(t.space,t.local,e.call(this,r))}}function bSe(t,e){var r,n;function i(){var a=e.apply(this,arguments);return a!==n&&(r=(n=a)&&xSe(t,a)),r}return o(i,"tween"),i._value=e,i}function TSe(t,e){var r,n;function i(){var a=e.apply(this,arguments);return a!==n&&(r=(n=a)&&vSe(t,a)),r}return o(i,"tween"),i._value=e,i}function k_(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=sc(t);return this.tween(r,(n.local?bSe:TSe)(n,e))}var gW=N(()=>{"use strict";yl();o(vSe,"attrInterpolate");o(xSe,"attrInterpolateNS");o(bSe,"attrTweenNS");o(TSe,"attrTween");o(k_,"default")});function wSe(t,e){return function(){Cv(this,t).delay=+e.apply(this,arguments)}}function kSe(t,e){return e=+e,function(){Cv(this,t).delay=e}}function E_(t){var e=this._id;return arguments.length?this.each((typeof t=="function"?wSe:kSe)(e,t)):Oi(this.node(),e).delay}var yW=N(()=>{"use strict";Ds();o(wSe,"delayFunction");o(kSe,"delayConstant");o(E_,"default")});function ESe(t,e){return function(){la(this,t).duration=+e.apply(this,arguments)}}function SSe(t,e){return e=+e,function(){la(this,t).duration=e}}function S_(t){var e=this._id;return arguments.length?this.each((typeof t=="function"?ESe:SSe)(e,t)):Oi(this.node(),e).duration}var vW=N(()=>{"use strict";Ds();o(ESe,"durationFunction");o(SSe,"durationConstant");o(S_,"default")});function CSe(t,e){if(typeof e!="function")throw new Error;return function(){la(this,t).ease=e}}function C_(t){var e=this._id;return arguments.length?this.each(CSe(e,t)):Oi(this.node(),e).ease}var xW=N(()=>{"use strict";Ds();o(CSe,"easeConstant");o(C_,"default")});function ASe(t,e){return function(){var r=e.apply(this,arguments);if(typeof r!="function")throw new Error;la(this,t).ease=r}}function A_(t){if(typeof t!="function")throw new Error;return this.each(ASe(this._id,t))}var bW=N(()=>{"use strict";Ds();o(ASe,"easeVarying");o(A_,"default")});function __(t){typeof t!="function"&&(t=N0(t));for(var e=this._groups,r=e.length,n=new Array(r),i=0;i{"use strict";yl();Cd();o(__,"default")});function D_(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),l=0;l{"use strict";Cd();o(D_,"default")});function _Se(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 DSe(t,e,r){var n,i,a=_Se(e)?Cv:la;return function(){var s=a(this,t),l=s.on;l!==n&&(i=(n=l).copy()).on(e,r),s.on=i}}function L_(t,e){var r=this._id;return arguments.length<2?Oi(this.node(),r).on.on(t):this.each(DSe(r,t,e))}var kW=N(()=>{"use strict";Ds();o(_Se,"start");o(DSe,"onFunction");o(L_,"default")});function LSe(t){return function(){var e=this.parentNode;for(var r in this.__transition)if(+r!==t)return;e&&e.removeChild(this)}}function R_(){return this.on("end.remove",LSe(this._id))}var EW=N(()=>{"use strict";o(LSe,"removeFunction");o(R_,"default")});function N_(t){var e=this._name,r=this._id;typeof t!="function"&&(t=Ah(t));for(var n=this._groups,i=n.length,a=new Array(i),s=0;s{"use strict";yl();Cd();Ds();o(N_,"default")});function M_(t){var e=this._name,r=this._id;typeof t!="function"&&(t=R0(t));for(var n=this._groups,i=n.length,a=[],s=[],l=0;l{"use strict";yl();Cd();Ds();o(M_,"default")});function I_(){return new RSe(this._groups,this._parents)}var RSe,AW=N(()=>{"use strict";yl();RSe=yu.prototype.constructor;o(I_,"default")});function NSe(t,e){var r,n,i;return function(){var a=_h(this,t),s=(this.style.removeProperty(t),_h(this,t));return a===s?null:a===r&&s===n?i:i=e(r=a,n=s)}}function _W(t){return function(){this.style.removeProperty(t)}}function MSe(t,e,r){var n,i=r+"",a;return function(){var s=_h(this,t);return s===i?null:s===n?a:a=e(n=s,r)}}function ISe(t,e,r){var n,i,a;return function(){var s=_h(this,t),l=r(this),u=l+"";return l==null&&(u=l=(this.style.removeProperty(t),_h(this,t))),s===u?null:s===n&&u===i?a:(i=u,a=e(n=s,l))}}function OSe(t,e){var r,n,i,a="style."+e,s="end."+a,l;return function(){var u=la(this,t),h=u.on,f=u.value[a]==null?l||(l=_W(e)):void 0;(h!==r||i!==f)&&(n=(r=h).copy()).on(s,i=f),u.on=n}}function O_(t,e,r){var n=(t+="")=="transform"?p_:Dv;return e==null?this.styleTween(t,NSe(t,n)).on("end.style."+t,_W(t)):typeof e=="function"?this.styleTween(t,ISe(t,n,V0(this,"style."+t,e))).each(OSe(this._id,t)):this.styleTween(t,MSe(t,n,e),r).on("end.style."+t,null)}var DW=N(()=>{"use strict";z0();yl();Ds();_v();T_();o(NSe,"styleNull");o(_W,"styleRemove");o(MSe,"styleConstant");o(ISe,"styleFunction");o(OSe,"styleMaybeRemove");o(O_,"default")});function PSe(t,e,r){return function(n){this.style.setProperty(t,e.call(this,n),r)}}function BSe(t,e,r){var n,i;function a(){var s=e.apply(this,arguments);return s!==i&&(n=(i=s)&&PSe(t,s,r)),n}return o(a,"tween"),a._value=e,a}function P_(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,BSe(t,e,r??""))}var LW=N(()=>{"use strict";o(PSe,"styleInterpolate");o(BSe,"styleTween");o(P_,"default")});function FSe(t){return function(){this.textContent=t}}function $Se(t){return function(){var e=t(this);this.textContent=e??""}}function B_(t){return this.tween("text",typeof t=="function"?$Se(V0(this,"text",t)):FSe(t==null?"":t+""))}var RW=N(()=>{"use strict";_v();o(FSe,"textConstant");o($Se,"textFunction");o(B_,"default")});function zSe(t){return function(e){this.textContent=t.call(this,e)}}function GSe(t){var e,r;function n(){var i=t.apply(this,arguments);return i!==r&&(e=(r=i)&&zSe(i)),e}return o(n,"tween"),n._value=t,n}function F_(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,GSe(t))}var NW=N(()=>{"use strict";o(zSe,"textInterpolate");o(GSe,"textTween");o(F_,"default")});function $_(){for(var t=this._name,e=this._id,r=b5(),n=this._groups,i=n.length,a=0;a{"use strict";Cd();Ds();o($_,"default")});function z_(){var t,e,r=this,n=r._id,i=r.size();return new Promise(function(a,s){var l={value:s},u={value:o(function(){--i===0&&a()},"value")};r.each(function(){var h=la(this,n),f=h.on;f!==t&&(e=(t=f).copy(),e._.cancel.push(l),e._.interrupt.push(l),e._.end.push(u)),h.on=e}),i===0&&a()})}var IW=N(()=>{"use strict";Ds();o(z_,"default")});function is(t,e,r,n){this._groups=t,this._parents=e,this._name=r,this._id=n}function OW(t){return yu().transition(t)}function b5(){return++VSe}var VSe,Tu,Cd=N(()=>{"use strict";yl();mW();gW();yW();vW();xW();bW();TW();wW();kW();EW();SW();CW();AW();DW();LW();RW();NW();MW();_v();IW();VSe=0;o(is,"Transition");o(OW,"transition");o(b5,"newId");Tu=yu.prototype;is.prototype=OW.prototype={constructor:is,select:N_,selectAll:M_,selectChild:Tu.selectChild,selectChildren:Tu.selectChildren,filter:__,merge:D_,selection:I_,transition:$_,call:Tu.call,nodes:Tu.nodes,node:Tu.node,size:Tu.size,empty:Tu.empty,each:Tu.each,on:L_,attr:w_,attrTween:k_,style:O_,styleTween:P_,text:B_,textTween:F_,remove:R_,tween:b_,delay:E_,duration:S_,ease:C_,easeVarying:A_,end:z_,[Symbol.iterator]:Tu[Symbol.iterator]}});function T5(t){return((t*=2)<=1?t*t*t:(t-=2)*t*t+2)/2}var PW=N(()=>{"use strict";o(T5,"cubicInOut")});var G_=N(()=>{"use strict";PW()});function HSe(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 V_(t){var e,r;t instanceof is?(e=t._id,t=t._name):(e=b5(),(r=USe).time=kv(),t=t==null?null:t+"");for(var n=this._groups,i=n.length,a=0;a{"use strict";Cd();Ds();G_();g5();USe={time:null,delay:0,duration:250,ease:T5};o(HSe,"inherit");o(V_,"default")});var FW=N(()=>{"use strict";yl();pW();BW();yu.prototype.interrupt=x_;yu.prototype.transition=V_});var w5=N(()=>{"use strict";FW()});var $W=N(()=>{"use strict"});var zW=N(()=>{"use strict"});var GW=N(()=>{"use strict"});function VW(t){return[+t[0],+t[1]]}function qSe(t){return[VW(t[0]),VW(t[1])]}function U_(t){return{type:t}}var c1t,u1t,h1t,f1t,d1t,p1t,UW=N(()=>{"use strict";w5();$W();zW();GW();({abs:c1t,max:u1t,min:h1t}=Math);o(VW,"number1");o(qSe,"number2");f1t={name:"x",handles:["w","e"].map(U_),input:o(function(t,e){return t==null?null:[[+t[0],e[0][1]],[+t[1],e[1][1]]]},"input"),output:o(function(t){return t&&[t[0][0],t[1][0]]},"output")},d1t={name:"y",handles:["n","s"].map(U_),input:o(function(t,e){return t==null?null:[[e[0][0],+t[0]],[e[1][0],+t[1]]]},"input"),output:o(function(t){return t&&[t[0][1],t[1][1]]},"output")},p1t={name:"xy",handles:["n","w","e","s","nw","ne","sw","se"].map(U_),input:o(function(t){return t==null?null:qSe(t)},"input"),output:o(function(t){return t},"output")};o(U_,"type")});var HW=N(()=>{"use strict";UW()});function qW(t){this._+=t[0];for(let e=1,r=t.length;e=0))throw new Error(`invalid digits: ${t}`);if(e>15)return qW;let r=10**e;return function(n){this._+=n[0];for(let i=1,a=n.length;i{"use strict";H_=Math.PI,q_=2*H_,Ad=1e-6,WSe=q_-Ad;o(qW,"append");o(YSe,"appendRound");_d=class{static{o(this,"Path")}constructor(e){this._x0=this._y0=this._x1=this._y1=null,this._="",this._append=e==null?qW:YSe(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,l=this._y1,u=n-e,h=i-r,f=s-e,d=l-r,p=f*f+d*d;if(this._x1===null)this._append`M${this._x1=e},${this._y1=r}`;else if(p>Ad)if(!(Math.abs(d*u-h*f)>Ad)||!a)this._append`L${this._x1=e},${this._y1=r}`;else{let m=n-s,g=i-l,y=u*u+h*h,v=m*m+g*g,x=Math.sqrt(y),b=Math.sqrt(p),T=a*Math.tan((H_-Math.acos((y+p-v)/(2*x*b)))/2),S=T/b,w=T/x;Math.abs(S-1)>Ad&&this._append`L${e+S*f},${r+S*d}`,this._append`A${a},${a},0,0,${+(d*m>f*g)},${this._x1=e+w*u},${this._y1=r+w*h}`}}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 l=n*Math.cos(i),u=n*Math.sin(i),h=e+l,f=r+u,d=1^s,p=s?i-a:a-i;this._x1===null?this._append`M${h},${f}`:(Math.abs(this._x1-h)>Ad||Math.abs(this._y1-f)>Ad)&&this._append`L${h},${f}`,n&&(p<0&&(p=p%q_+q_),p>WSe?this._append`A${n},${n},0,1,${d},${e-l},${r-u}A${n},${n},0,1,${d},${this._x1=h},${this._y1=f}`:p>Ad&&this._append`A${n},${n},0,${+(p>=H_)},${d},${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._}};o(WW,"path");WW.prototype=_d.prototype});var W_=N(()=>{"use strict";YW()});var XW=N(()=>{"use strict"});var jW=N(()=>{"use strict"});var KW=N(()=>{"use strict"});var QW=N(()=>{"use strict"});var ZW=N(()=>{"use strict"});var JW=N(()=>{"use strict"});var eY=N(()=>{"use strict"});function Y_(t){return Math.abs(t=Math.round(t))>=1e21?t.toLocaleString("en").replace(/,/g,""):t.toString(10)}function Dd(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 Lv=N(()=>{"use strict";o(Y_,"default");o(Dd,"formatDecimalParts")});function bl(t){return t=Dd(Math.abs(t)),t?t[1]:NaN}var Rv=N(()=>{"use strict";Lv();o(bl,"default")});function X_(t,e){return function(r,n){for(var i=r.length,a=[],s=0,l=t[0],u=0;i>0&&l>0&&(u+l+1>n&&(l=Math.max(1,n-u)),a.push(r.substring(i-=l,i+l)),!((u+=l+1)>n));)l=t[s=(s+1)%t.length];return a.reverse().join(e)}}var tY=N(()=>{"use strict";o(X_,"default")});function j_(t){return function(e){return e.replace(/[0-9]/g,function(r){return t[+r]})}}var rY=N(()=>{"use strict";o(j_,"default")});function Nh(t){if(!(e=XSe.exec(t)))throw new Error("invalid format: "+t);var e;return new k5({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 k5(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 XSe,K_=N(()=>{"use strict";XSe=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;o(Nh,"formatSpecifier");Nh.prototype=k5.prototype;o(k5,"FormatSpecifier");k5.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 Q_(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 nY=N(()=>{"use strict";o(Q_,"default")});function J_(t,e){var r=Dd(t,e);if(!r)return t+"";var n=r[0],i=r[1],a=i-(Z_=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")+Dd(t,Math.max(0,e+a-1))[0]}var Z_,eD=N(()=>{"use strict";Lv();o(J_,"default")});function E5(t,e){var r=Dd(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 iY=N(()=>{"use strict";Lv();o(E5,"default")});var tD,aY=N(()=>{"use strict";Lv();eD();iY();tD={"%":o((t,e)=>(t*100).toFixed(e),"%"),b:o(t=>Math.round(t).toString(2),"b"),c:o(t=>t+"","c"),d:Y_,e:o((t,e)=>t.toExponential(e),"e"),f:o((t,e)=>t.toFixed(e),"f"),g:o((t,e)=>t.toPrecision(e),"g"),o:o(t=>Math.round(t).toString(8),"o"),p:o((t,e)=>E5(t*100,e),"p"),r:E5,s:J_,X:o(t=>Math.round(t).toString(16).toUpperCase(),"X"),x:o(t=>Math.round(t).toString(16),"x")}});function S5(t){return t}var sY=N(()=>{"use strict";o(S5,"default")});function rD(t){var e=t.grouping===void 0||t.thousands===void 0?S5:X_(oY.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?S5:j_(oY.call(t.numerals,String)),s=t.percent===void 0?"%":t.percent+"",l=t.minus===void 0?"\u2212":t.minus+"",u=t.nan===void 0?"NaN":t.nan+"";function h(d){d=Nh(d);var p=d.fill,m=d.align,g=d.sign,y=d.symbol,v=d.zero,x=d.width,b=d.comma,T=d.precision,S=d.trim,w=d.type;w==="n"?(b=!0,w="g"):tD[w]||(T===void 0&&(T=12),S=!0,w="g"),(v||p==="0"&&m==="=")&&(v=!0,p="0",m="=");var k=y==="$"?r:y==="#"&&/[boxX]/.test(w)?"0"+w.toLowerCase():"",A=y==="$"?n:/[%p]/.test(w)?s:"",C=tD[w],R=/[defgprs%]/.test(w);T=T===void 0?6:/[gprs]/.test(w)?Math.max(1,Math.min(21,T)):Math.max(0,Math.min(20,T));function I(L){var E=k,D=A,_,O,M;if(w==="c")D=C(L)+D,L="";else{L=+L;var P=L<0||1/L<0;if(L=isNaN(L)?u:C(Math.abs(L),T),S&&(L=Q_(L)),P&&+L==0&&g!=="+"&&(P=!1),E=(P?g==="("?g:l:g==="-"||g==="("?"":g)+E,D=(w==="s"?lY[8+Z_/3]:"")+D+(P&&g==="("?")":""),R){for(_=-1,O=L.length;++_M||M>57){D=(M===46?i+L.slice(_+1):L.slice(_))+D,L=L.slice(0,_);break}}}b&&!v&&(L=e(L,1/0));var B=E.length+L.length+D.length,F=B>1)+E+L+D+F.slice(B);break;default:L=F+E+L+D;break}return a(L)}return o(I,"format"),I.toString=function(){return d+""},I}o(h,"newFormat");function f(d,p){var m=h((d=Nh(d),d.type="f",d)),g=Math.max(-8,Math.min(8,Math.floor(bl(p)/3)))*3,y=Math.pow(10,-g),v=lY[8+g/3];return function(x){return m(y*x)+v}}return o(f,"formatPrefix"),{format:h,formatPrefix:f}}var oY,lY,cY=N(()=>{"use strict";Rv();tY();rY();K_();nY();aY();eD();sY();oY=Array.prototype.map,lY=["y","z","a","f","p","n","\xB5","m","","k","M","G","T","P","E","Z","Y"];o(rD,"default")});function nD(t){return C5=rD(t),cc=C5.format,A5=C5.formatPrefix,C5}var C5,cc,A5,uY=N(()=>{"use strict";cY();nD({thousands:",",grouping:[3],currency:["$",""]});o(nD,"defaultLocale")});function _5(t){return Math.max(0,-bl(Math.abs(t)))}var hY=N(()=>{"use strict";Rv();o(_5,"default")});function D5(t,e){return Math.max(0,Math.max(-8,Math.min(8,Math.floor(bl(e)/3)))*3-bl(Math.abs(t)))}var fY=N(()=>{"use strict";Rv();o(D5,"default")});function L5(t,e){return t=Math.abs(t),e=Math.abs(e)-t,Math.max(0,bl(e)-bl(t))+1}var dY=N(()=>{"use strict";Rv();o(L5,"default")});var iD=N(()=>{"use strict";uY();K_();hY();fY();dY()});var pY=N(()=>{"use strict"});function jSe(t){var e=0,r=t.children,n=r&&r.length;if(!n)e=1;else for(;--n>=0;)e+=r[n].value;t.value=e}function aD(){return this.eachAfter(jSe)}var mY=N(()=>{"use strict";o(jSe,"count");o(aD,"default")});function sD(t,e){let r=-1;for(let n of this)t.call(e,n,++r,this);return this}var gY=N(()=>{"use strict";o(sD,"default")});function oD(t,e){for(var r=this,n=[r],i,a,s=-1;r=n.pop();)if(t.call(e,r,++s,this),i=r.children)for(a=i.length-1;a>=0;--a)n.push(i[a]);return this}var yY=N(()=>{"use strict";o(oD,"default")});function lD(t,e){for(var r=this,n=[r],i=[],a,s,l,u=-1;r=n.pop();)if(i.push(r),a=r.children)for(s=0,l=a.length;s{"use strict";o(lD,"default")});function cD(t,e){let r=-1;for(let n of this)if(t.call(e,n,++r,this))return n}var xY=N(()=>{"use strict";o(cD,"default")});function uD(t){return this.eachAfter(function(e){for(var r=+t(e.data)||0,n=e.children,i=n&&n.length;--i>=0;)r+=n[i].value;e.value=r})}var bY=N(()=>{"use strict";o(uD,"default")});function hD(t){return this.eachBefore(function(e){e.children&&e.children.sort(t)})}var TY=N(()=>{"use strict";o(hD,"default")});function fD(t){for(var e=this,r=KSe(e,t),n=[e];e!==r;)e=e.parent,n.push(e);for(var i=n.length;t!==r;)n.splice(i,0,t),t=t.parent;return n}function KSe(t,e){if(t===e)return t;var r=t.ancestors(),n=e.ancestors(),i=null;for(t=r.pop(),e=n.pop();t===e;)i=t,t=r.pop(),e=n.pop();return i}var wY=N(()=>{"use strict";o(fD,"default");o(KSe,"leastCommonAncestor")});function dD(){for(var t=this,e=[t];t=t.parent;)e.push(t);return e}var kY=N(()=>{"use strict";o(dD,"default")});function pD(){return Array.from(this)}var EY=N(()=>{"use strict";o(pD,"default")});function mD(){var t=[];return this.eachBefore(function(e){e.children||t.push(e)}),t}var SY=N(()=>{"use strict";o(mD,"default")});function gD(){var t=this,e=[];return t.each(function(r){r!==t&&e.push({source:r.parent,target:r})}),e}var CY=N(()=>{"use strict";o(gD,"default")});function*yD(){var t=this,e,r=[t],n,i,a;do for(e=r.reverse(),r=[];t=e.pop();)if(yield t,n=t.children)for(i=0,a=n.length;i{"use strict";o(yD,"default")});function U0(t,e){t instanceof Map?(t=[void 0,t],e===void 0&&(e=JSe)):e===void 0&&(e=ZSe);for(var r=new Nv(t),n,i=[r],a,s,l,u;n=i.pop();)if((s=e(n.data))&&(u=(s=Array.from(s)).length))for(n.children=s,l=u-1;l>=0;--l)i.push(a=s[l]=new Nv(s[l])),a.parent=n,a.depth=n.depth+1;return r.eachBefore(t6e)}function QSe(){return U0(this).eachBefore(e6e)}function ZSe(t){return t.children}function JSe(t){return Array.isArray(t)?t[1]:null}function e6e(t){t.data.value!==void 0&&(t.value=t.data.value),t.data=t.data.data}function t6e(t){var e=0;do t.height=e;while((t=t.parent)&&t.height<++e)}function Nv(t){this.data=t,this.depth=this.height=0,this.parent=null}var _Y=N(()=>{"use strict";mY();gY();yY();vY();xY();bY();TY();wY();kY();EY();SY();CY();AY();o(U0,"hierarchy");o(QSe,"node_copy");o(ZSe,"objectChildren");o(JSe,"mapChildren");o(e6e,"copyData");o(t6e,"computeHeight");o(Nv,"Node");Nv.prototype=U0.prototype={constructor:Nv,count:aD,each:sD,eachAfter:lD,eachBefore:oD,find:cD,sum:uD,sort:hD,path:fD,ancestors:dD,descendants:pD,leaves:mD,links:gD,copy:QSe,[Symbol.iterator]:yD}});function DY(t){if(typeof t!="function")throw new Error;return t}var LY=N(()=>{"use strict";o(DY,"required")});function H0(){return 0}function Ld(t){return function(){return t}}var RY=N(()=>{"use strict";o(H0,"constantZero");o(Ld,"default")});function vD(t){t.x0=Math.round(t.x0),t.y0=Math.round(t.y0),t.x1=Math.round(t.x1),t.y1=Math.round(t.y1)}var NY=N(()=>{"use strict";o(vD,"default")});function xD(t,e,r,n,i){for(var a=t.children,s,l=-1,u=a.length,h=t.value&&(n-e)/t.value;++l{"use strict";o(xD,"default")});function bD(t,e,r,n,i){for(var a=t.children,s,l=-1,u=a.length,h=t.value&&(i-r)/t.value;++l{"use strict";o(bD,"default")});function n6e(t,e,r,n,i,a){for(var s=[],l=e.children,u,h,f=0,d=0,p=l.length,m,g,y=e.value,v,x,b,T,S,w,k;fb&&(b=h),k=v*v*w,T=Math.max(b/k,k/x),T>S){v-=h;break}S=T}s.push(u={value:v,dice:m{"use strict";MY();IY();r6e=(1+Math.sqrt(5))/2;o(n6e,"squarifyRatio");OY=o((function t(e){function r(n,i,a,s,l){n6e(e,n,i,a,s,l)}return o(r,"squarify"),r.ratio=function(n){return t((n=+n)>1?n:1)},r}),"custom")(r6e)});function R5(){var t=OY,e=!1,r=1,n=1,i=[0],a=H0,s=H0,l=H0,u=H0,h=H0;function f(p){return p.x0=p.y0=0,p.x1=r,p.y1=n,p.eachBefore(d),i=[0],e&&p.eachBefore(vD),p}o(f,"treemap");function d(p){var m=i[p.depth],g=p.x0+m,y=p.y0+m,v=p.x1-m,x=p.y1-m;v{"use strict";NY();PY();LY();RY();o(R5,"default")});var FY=N(()=>{"use strict";_Y();BY()});var $Y=N(()=>{"use strict"});var zY=N(()=>{"use strict"});function Mh(t,e){switch(arguments.length){case 0:break;case 1:this.range(t);break;default:this.range(e).domain(t);break}return this}var Mv=N(()=>{"use strict";o(Mh,"initRange")});function no(){var t=new D0,e=[],r=[],n=TD;function i(a){let s=t.get(a);if(s===void 0){if(n!==TD)return n;t.set(a,s=e.push(a)-1)}return r[s%r.length]}return o(i,"scale"),i.domain=function(a){if(!arguments.length)return e.slice();e=[],t=new D0;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 no(e,r).unknown(n)},Mh.apply(i,arguments),i}var TD,wD=N(()=>{"use strict";Ch();Mv();TD=Symbol("implicit");o(no,"ordinal")});function q0(){var t=no().unknown(void 0),e=t.domain,r=t.range,n=0,i=1,a,s,l=!1,u=0,h=0,f=.5;delete t.unknown;function d(){var p=e().length,m=i{"use strict";Ch();Mv();wD();o(q0,"band")});function kD(t){return function(){return t}}var VY=N(()=>{"use strict";o(kD,"constants")});function ED(t){return+t}var UY=N(()=>{"use strict";o(ED,"number")});function W0(t){return t}function SD(t,e){return(e-=t=+t)?function(r){return(r-t)/e}:kD(isNaN(e)?NaN:.5)}function i6e(t,e){var r;return t>e&&(r=t,t=e,e=r),function(n){return Math.max(t,Math.min(e,n))}}function a6e(t,e,r){var n=t[0],i=t[1],a=e[0],s=e[1];return i2?s6e:a6e,u=h=null,d}o(f,"rescale");function d(p){return p==null||isNaN(p=+p)?a:(u||(u=l(t.map(n),e,r)))(n(s(p)))}return o(d,"scale"),d.invert=function(p){return s(i((h||(h=l(e,t.map(n),Wi)))(p)))},d.domain=function(p){return arguments.length?(t=Array.from(p,ED),f()):t.slice()},d.range=function(p){return arguments.length?(e=Array.from(p),f()):e.slice()},d.rangeRound=function(p){return e=Array.from(p),r=l5,f()},d.clamp=function(p){return arguments.length?(s=p?!0:W0,f()):s!==W0},d.interpolate=function(p){return arguments.length?(r=p,f()):r},d.unknown=function(p){return arguments.length?(a=p,d):a},function(p,m){return n=p,i=m,f()}}function Iv(){return o6e()(W0,W0)}var HY,CD=N(()=>{"use strict";Ch();z0();VY();UY();HY=[0,1];o(W0,"identity");o(SD,"normalize");o(i6e,"clamper");o(a6e,"bimap");o(s6e,"polymap");o(N5,"copy");o(o6e,"transformer");o(Iv,"continuous")});function AD(t,e,r,n){var i=L0(t,e,r),a;switch(n=Nh(n??",f"),n.type){case"s":{var s=Math.max(Math.abs(t),Math.abs(e));return n.precision==null&&!isNaN(a=D5(i,s))&&(n.precision=a),A5(n,s)}case"":case"e":case"g":case"p":case"r":{n.precision==null&&!isNaN(a=L5(i,Math.max(Math.abs(t),Math.abs(e))))&&(n.precision=a-(n.type==="e"));break}case"f":case"%":{n.precision==null&&!isNaN(a=_5(i))&&(n.precision=a-(n.type==="%")*2);break}}return cc(n)}var qY=N(()=>{"use strict";Ch();iD();o(AD,"tickFormat")});function l6e(t){var e=t.domain;return t.ticks=function(r){var n=e();return q3(n[0],n[n.length-1],r??10)},t.tickFormat=function(r,n){var i=e();return AD(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],l=n[a],u,h,f=10;for(l0;){if(h=lv(s,l,r),h===u)return n[i]=s,n[a]=l,e(n);if(h>0)s=Math.floor(s/h)*h,l=Math.ceil(l/h)*h;else if(h<0)s=Math.ceil(s*h)/h,l=Math.floor(l*h)/h;else break;u=h}return t},t}function Tl(){var t=Iv();return t.copy=function(){return N5(t,Tl())},Mh.apply(t,arguments),l6e(t)}var WY=N(()=>{"use strict";Ch();CD();Mv();qY();o(l6e,"linearish");o(Tl,"linear")});function _D(t,e){t=t.slice();var r=0,n=t.length-1,i=t[r],a=t[n],s;return a{"use strict";o(_D,"nice")});function En(t,e,r,n){function i(a){return t(a=arguments.length===0?new Date:new Date(+a)),a}return o(i,"interval"),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),l=i.ceil(a);return a-s(e(a=new Date(+a),s==null?1:Math.floor(s)),a),i.range=(a,s,l)=>{let u=[];if(a=i.ceil(a),l=l==null?1:Math.floor(l),!(a0))return u;let h;do u.push(h=new Date(+a)),e(a,l),t(a);while(hEn(s=>{if(s>=s)for(;t(s),!a(s);)s.setTime(s-1)},(s,l)=>{if(s>=s)if(l<0)for(;++l<=0;)for(;e(s,-1),!a(s););else for(;--l>=0;)for(;e(s,1),!a(s););}),r&&(i.count=(a,s)=>(DD.setTime(+a),LD.setTime(+s),t(DD),t(LD),Math.floor(r(DD,LD))),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 DD,LD,wu=N(()=>{"use strict";DD=new Date,LD=new Date;o(En,"timeInterval")});var uc,XY,RD=N(()=>{"use strict";wu();uc=En(()=>{},(t,e)=>{t.setTime(+t+e)},(t,e)=>e-t);uc.every=t=>(t=Math.floor(t),!isFinite(t)||!(t>0)?null:t>1?En(e=>{e.setTime(Math.floor(e/t)*t)},(e,r)=>{e.setTime(+e+r*t)},(e,r)=>(r-e)/t):uc);XY=uc.range});var io,jY,ND=N(()=>{"use strict";wu();io=En(t=>{t.setTime(t-t.getMilliseconds())},(t,e)=>{t.setTime(+t+e*1e3)},(t,e)=>(e-t)/1e3,t=>t.getUTCSeconds()),jY=io.range});var ku,c6e,M5,u6e,MD=N(()=>{"use strict";wu();ku=En(t=>{t.setTime(t-t.getMilliseconds()-t.getSeconds()*1e3)},(t,e)=>{t.setTime(+t+e*6e4)},(t,e)=>(e-t)/6e4,t=>t.getMinutes()),c6e=ku.range,M5=En(t=>{t.setUTCSeconds(0,0)},(t,e)=>{t.setTime(+t+e*6e4)},(t,e)=>(e-t)/6e4,t=>t.getUTCMinutes()),u6e=M5.range});var Eu,h6e,I5,f6e,ID=N(()=>{"use strict";wu();Eu=En(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()),h6e=Eu.range,I5=En(t=>{t.setUTCMinutes(0,0,0)},(t,e)=>{t.setTime(+t+e*36e5)},(t,e)=>(e-t)/36e5,t=>t.getUTCHours()),f6e=I5.range});var Ro,d6e,Pv,p6e,O5,m6e,OD=N(()=>{"use strict";wu();Ro=En(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),d6e=Ro.range,Pv=En(t=>{t.setUTCHours(0,0,0,0)},(t,e)=>{t.setUTCDate(t.getUTCDate()+e)},(t,e)=>(e-t)/864e5,t=>t.getUTCDate()-1),p6e=Pv.range,O5=En(t=>{t.setUTCHours(0,0,0,0)},(t,e)=>{t.setUTCDate(t.getUTCDate()+e)},(t,e)=>(e-t)/864e5,t=>Math.floor(t/864e5)),m6e=O5.range});function Md(t){return En(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 Id(t){return En(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 wl,Ih,P5,B5,fc,F5,$5,QY,g6e,y6e,v6e,x6e,b6e,T6e,Od,Y0,ZY,JY,Oh,eX,tX,rX,w6e,k6e,E6e,S6e,C6e,A6e,PD=N(()=>{"use strict";wu();o(Md,"timeWeekday");wl=Md(0),Ih=Md(1),P5=Md(2),B5=Md(3),fc=Md(4),F5=Md(5),$5=Md(6),QY=wl.range,g6e=Ih.range,y6e=P5.range,v6e=B5.range,x6e=fc.range,b6e=F5.range,T6e=$5.range;o(Id,"utcWeekday");Od=Id(0),Y0=Id(1),ZY=Id(2),JY=Id(3),Oh=Id(4),eX=Id(5),tX=Id(6),rX=Od.range,w6e=Y0.range,k6e=ZY.range,E6e=JY.range,S6e=Oh.range,C6e=eX.range,A6e=tX.range});var Su,_6e,z5,D6e,BD=N(()=>{"use strict";wu();Su=En(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()),_6e=Su.range,z5=En(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()),D6e=z5.range});var ao,L6e,kl,R6e,FD=N(()=>{"use strict";wu();ao=En(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());ao.every=t=>!isFinite(t=Math.floor(t))||!(t>0)?null:En(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)});L6e=ao.range,kl=En(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());kl.every=t=>!isFinite(t=Math.floor(t))||!(t>0)?null:En(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)});R6e=kl.range});function iX(t,e,r,n,i,a){let s=[[io,1,1e3],[io,5,5*1e3],[io,15,15*1e3],[io,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 l(h,f,d){let p=fv).right(s,p);if(m===s.length)return t.every(L0(h/31536e6,f/31536e6,d));if(m===0)return uc.every(Math.max(L0(h,f,d),1));let[g,y]=s[p/s[m-1][2]{"use strict";Ch();RD();ND();MD();ID();OD();PD();BD();FD();o(iX,"ticker");[M6e,I6e]=iX(kl,z5,Od,O5,I5,M5),[$D,zD]=iX(ao,Su,wl,Ro,Eu,ku)});var G5=N(()=>{"use strict";RD();ND();MD();ID();OD();PD();BD();FD();aX()});function GD(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 VD(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 Bv(t,e,r){return{y:t,m:e,d:r,H:0,M:0,S:0,L:0}}function UD(t){var e=t.dateTime,r=t.date,n=t.time,i=t.periods,a=t.days,s=t.shortDays,l=t.months,u=t.shortMonths,h=Fv(i),f=$v(i),d=Fv(a),p=$v(a),m=Fv(s),g=$v(s),y=Fv(l),v=$v(l),x=Fv(u),b=$v(u),T={a:P,A:B,b:F,B:G,c:null,d:hX,e:hX,f:nCe,g:dCe,G:mCe,H:eCe,I:tCe,j:rCe,L:gX,m:iCe,M:aCe,p:$,q:U,Q:pX,s:mX,S:sCe,u:oCe,U:lCe,V:cCe,w:uCe,W:hCe,x:null,X:null,y:fCe,Y:pCe,Z:gCe,"%":dX},S={a:j,A:te,b:Y,B:oe,c:null,d:fX,e:fX,f:bCe,g:LCe,G:NCe,H:yCe,I:vCe,j:xCe,L:vX,m:TCe,M:wCe,p:J,q:ue,Q:pX,s:mX,S:kCe,u:ECe,U:SCe,V:CCe,w:ACe,W:_Ce,x:null,X:null,y:DCe,Y:RCe,Z:MCe,"%":dX},w={a:I,A:L,b:E,B:D,c:_,d:cX,e:cX,f:K6e,g:lX,G:oX,H:uX,I:uX,j:W6e,L:j6e,m:q6e,M:Y6e,p:R,q:H6e,Q:Z6e,s:J6e,S:X6e,u:$6e,U:z6e,V:G6e,w:F6e,W:V6e,x:O,X:M,y:lX,Y:oX,Z:U6e,"%":Q6e};T.x=k(r,T),T.X=k(n,T),T.c=k(e,T),S.x=k(r,S),S.X=k(n,S),S.c=k(e,S);function k(re,ee){return function(Z){var K=[],ae=-1,Q=0,de=re.length,ne,Te,q;for(Z instanceof Date||(Z=new Date(+Z));++ae53)return null;"w"in K||(K.w=1),"Z"in K?(Q=VD(Bv(K.y,0,1)),de=Q.getUTCDay(),Q=de>4||de===0?Y0.ceil(Q):Y0(Q),Q=Pv.offset(Q,(K.V-1)*7),K.y=Q.getUTCFullYear(),K.m=Q.getUTCMonth(),K.d=Q.getUTCDate()+(K.w+6)%7):(Q=GD(Bv(K.y,0,1)),de=Q.getDay(),Q=de>4||de===0?Ih.ceil(Q):Ih(Q),Q=Ro.offset(Q,(K.V-1)*7),K.y=Q.getFullYear(),K.m=Q.getMonth(),K.d=Q.getDate()+(K.w+6)%7)}else("W"in K||"U"in K)&&("w"in K||(K.w="u"in K?K.u%7:"W"in K?1:0),de="Z"in K?VD(Bv(K.y,0,1)).getUTCDay():GD(Bv(K.y,0,1)).getDay(),K.m=0,K.d="W"in K?(K.w+6)%7+K.W*7-(de+5)%7:K.w+K.U*7-(de+6)%7);return"Z"in K?(K.H+=K.Z/100|0,K.M+=K.Z%100,VD(K)):GD(K)}}o(A,"newParse");function C(re,ee,Z,K){for(var ae=0,Q=ee.length,de=Z.length,ne,Te;ae=de)return-1;if(ne=ee.charCodeAt(ae++),ne===37){if(ne=ee.charAt(ae++),Te=w[ne in sX?ee.charAt(ae++):ne],!Te||(K=Te(re,Z,K))<0)return-1}else if(ne!=Z.charCodeAt(K++))return-1}return K}o(C,"parseSpecifier");function R(re,ee,Z){var K=h.exec(ee.slice(Z));return K?(re.p=f.get(K[0].toLowerCase()),Z+K[0].length):-1}o(R,"parsePeriod");function I(re,ee,Z){var K=m.exec(ee.slice(Z));return K?(re.w=g.get(K[0].toLowerCase()),Z+K[0].length):-1}o(I,"parseShortWeekday");function L(re,ee,Z){var K=d.exec(ee.slice(Z));return K?(re.w=p.get(K[0].toLowerCase()),Z+K[0].length):-1}o(L,"parseWeekday");function E(re,ee,Z){var K=x.exec(ee.slice(Z));return K?(re.m=b.get(K[0].toLowerCase()),Z+K[0].length):-1}o(E,"parseShortMonth");function D(re,ee,Z){var K=y.exec(ee.slice(Z));return K?(re.m=v.get(K[0].toLowerCase()),Z+K[0].length):-1}o(D,"parseMonth");function _(re,ee,Z){return C(re,e,ee,Z)}o(_,"parseLocaleDateTime");function O(re,ee,Z){return C(re,r,ee,Z)}o(O,"parseLocaleDate");function M(re,ee,Z){return C(re,n,ee,Z)}o(M,"parseLocaleTime");function P(re){return s[re.getDay()]}o(P,"formatShortWeekday");function B(re){return a[re.getDay()]}o(B,"formatWeekday");function F(re){return u[re.getMonth()]}o(F,"formatShortMonth");function G(re){return l[re.getMonth()]}o(G,"formatMonth");function $(re){return i[+(re.getHours()>=12)]}o($,"formatPeriod");function U(re){return 1+~~(re.getMonth()/3)}o(U,"formatQuarter");function j(re){return s[re.getUTCDay()]}o(j,"formatUTCShortWeekday");function te(re){return a[re.getUTCDay()]}o(te,"formatUTCWeekday");function Y(re){return u[re.getUTCMonth()]}o(Y,"formatUTCShortMonth");function oe(re){return l[re.getUTCMonth()]}o(oe,"formatUTCMonth");function J(re){return i[+(re.getUTCHours()>=12)]}o(J,"formatUTCPeriod");function ue(re){return 1+~~(re.getUTCMonth()/3)}return o(ue,"formatUTCQuarter"),{format:o(function(re){var ee=k(re+="",T);return ee.toString=function(){return re},ee},"format"),parse:o(function(re){var ee=A(re+="",!1);return ee.toString=function(){return re},ee},"parse"),utcFormat:o(function(re){var ee=k(re+="",S);return ee.toString=function(){return re},ee},"utcFormat"),utcParse:o(function(re){var ee=A(re+="",!0);return ee.toString=function(){return re},ee},"utcParse")}}function Kr(t,e,r){var n=t<0?"-":"",i=(n?-t:t)+"",a=i.length;return n+(a[e.toLowerCase(),r]))}function F6e(t,e,r){var n=Yi.exec(e.slice(r,r+1));return n?(t.w=+n[0],r+n[0].length):-1}function $6e(t,e,r){var n=Yi.exec(e.slice(r,r+1));return n?(t.u=+n[0],r+n[0].length):-1}function z6e(t,e,r){var n=Yi.exec(e.slice(r,r+2));return n?(t.U=+n[0],r+n[0].length):-1}function G6e(t,e,r){var n=Yi.exec(e.slice(r,r+2));return n?(t.V=+n[0],r+n[0].length):-1}function V6e(t,e,r){var n=Yi.exec(e.slice(r,r+2));return n?(t.W=+n[0],r+n[0].length):-1}function oX(t,e,r){var n=Yi.exec(e.slice(r,r+4));return n?(t.y=+n[0],r+n[0].length):-1}function lX(t,e,r){var n=Yi.exec(e.slice(r,r+2));return n?(t.y=+n[0]+(+n[0]>68?1900:2e3),r+n[0].length):-1}function U6e(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 H6e(t,e,r){var n=Yi.exec(e.slice(r,r+1));return n?(t.q=n[0]*3-3,r+n[0].length):-1}function q6e(t,e,r){var n=Yi.exec(e.slice(r,r+2));return n?(t.m=n[0]-1,r+n[0].length):-1}function cX(t,e,r){var n=Yi.exec(e.slice(r,r+2));return n?(t.d=+n[0],r+n[0].length):-1}function W6e(t,e,r){var n=Yi.exec(e.slice(r,r+3));return n?(t.m=0,t.d=+n[0],r+n[0].length):-1}function uX(t,e,r){var n=Yi.exec(e.slice(r,r+2));return n?(t.H=+n[0],r+n[0].length):-1}function Y6e(t,e,r){var n=Yi.exec(e.slice(r,r+2));return n?(t.M=+n[0],r+n[0].length):-1}function X6e(t,e,r){var n=Yi.exec(e.slice(r,r+2));return n?(t.S=+n[0],r+n[0].length):-1}function j6e(t,e,r){var n=Yi.exec(e.slice(r,r+3));return n?(t.L=+n[0],r+n[0].length):-1}function K6e(t,e,r){var n=Yi.exec(e.slice(r,r+6));return n?(t.L=Math.floor(n[0]/1e3),r+n[0].length):-1}function Q6e(t,e,r){var n=O6e.exec(e.slice(r,r+1));return n?r+n[0].length:-1}function Z6e(t,e,r){var n=Yi.exec(e.slice(r));return n?(t.Q=+n[0],r+n[0].length):-1}function J6e(t,e,r){var n=Yi.exec(e.slice(r));return n?(t.s=+n[0],r+n[0].length):-1}function hX(t,e){return Kr(t.getDate(),e,2)}function eCe(t,e){return Kr(t.getHours(),e,2)}function tCe(t,e){return Kr(t.getHours()%12||12,e,2)}function rCe(t,e){return Kr(1+Ro.count(ao(t),t),e,3)}function gX(t,e){return Kr(t.getMilliseconds(),e,3)}function nCe(t,e){return gX(t,e)+"000"}function iCe(t,e){return Kr(t.getMonth()+1,e,2)}function aCe(t,e){return Kr(t.getMinutes(),e,2)}function sCe(t,e){return Kr(t.getSeconds(),e,2)}function oCe(t){var e=t.getDay();return e===0?7:e}function lCe(t,e){return Kr(wl.count(ao(t)-1,t),e,2)}function yX(t){var e=t.getDay();return e>=4||e===0?fc(t):fc.ceil(t)}function cCe(t,e){return t=yX(t),Kr(fc.count(ao(t),t)+(ao(t).getDay()===4),e,2)}function uCe(t){return t.getDay()}function hCe(t,e){return Kr(Ih.count(ao(t)-1,t),e,2)}function fCe(t,e){return Kr(t.getFullYear()%100,e,2)}function dCe(t,e){return t=yX(t),Kr(t.getFullYear()%100,e,2)}function pCe(t,e){return Kr(t.getFullYear()%1e4,e,4)}function mCe(t,e){var r=t.getDay();return t=r>=4||r===0?fc(t):fc.ceil(t),Kr(t.getFullYear()%1e4,e,4)}function gCe(t){var e=t.getTimezoneOffset();return(e>0?"-":(e*=-1,"+"))+Kr(e/60|0,"0",2)+Kr(e%60,"0",2)}function fX(t,e){return Kr(t.getUTCDate(),e,2)}function yCe(t,e){return Kr(t.getUTCHours(),e,2)}function vCe(t,e){return Kr(t.getUTCHours()%12||12,e,2)}function xCe(t,e){return Kr(1+Pv.count(kl(t),t),e,3)}function vX(t,e){return Kr(t.getUTCMilliseconds(),e,3)}function bCe(t,e){return vX(t,e)+"000"}function TCe(t,e){return Kr(t.getUTCMonth()+1,e,2)}function wCe(t,e){return Kr(t.getUTCMinutes(),e,2)}function kCe(t,e){return Kr(t.getUTCSeconds(),e,2)}function ECe(t){var e=t.getUTCDay();return e===0?7:e}function SCe(t,e){return Kr(Od.count(kl(t)-1,t),e,2)}function xX(t){var e=t.getUTCDay();return e>=4||e===0?Oh(t):Oh.ceil(t)}function CCe(t,e){return t=xX(t),Kr(Oh.count(kl(t),t)+(kl(t).getUTCDay()===4),e,2)}function ACe(t){return t.getUTCDay()}function _Ce(t,e){return Kr(Y0.count(kl(t)-1,t),e,2)}function DCe(t,e){return Kr(t.getUTCFullYear()%100,e,2)}function LCe(t,e){return t=xX(t),Kr(t.getUTCFullYear()%100,e,2)}function RCe(t,e){return Kr(t.getUTCFullYear()%1e4,e,4)}function NCe(t,e){var r=t.getUTCDay();return t=r>=4||r===0?Oh(t):Oh.ceil(t),Kr(t.getUTCFullYear()%1e4,e,4)}function MCe(){return"+0000"}function dX(){return"%"}function pX(t){return+t}function mX(t){return Math.floor(+t/1e3)}var sX,Yi,O6e,P6e,bX=N(()=>{"use strict";G5();o(GD,"localDate");o(VD,"utcDate");o(Bv,"newDate");o(UD,"formatLocale");sX={"-":"",_:" ",0:"0"},Yi=/^\s*\d+/,O6e=/^%/,P6e=/[\\^$*+?|[\]().{}]/g;o(Kr,"pad");o(B6e,"requote");o(Fv,"formatRe");o($v,"formatLookup");o(F6e,"parseWeekdayNumberSunday");o($6e,"parseWeekdayNumberMonday");o(z6e,"parseWeekNumberSunday");o(G6e,"parseWeekNumberISO");o(V6e,"parseWeekNumberMonday");o(oX,"parseFullYear");o(lX,"parseYear");o(U6e,"parseZone");o(H6e,"parseQuarter");o(q6e,"parseMonthNumber");o(cX,"parseDayOfMonth");o(W6e,"parseDayOfYear");o(uX,"parseHour24");o(Y6e,"parseMinutes");o(X6e,"parseSeconds");o(j6e,"parseMilliseconds");o(K6e,"parseMicroseconds");o(Q6e,"parseLiteralPercent");o(Z6e,"parseUnixTimestamp");o(J6e,"parseUnixTimestampSeconds");o(hX,"formatDayOfMonth");o(eCe,"formatHour24");o(tCe,"formatHour12");o(rCe,"formatDayOfYear");o(gX,"formatMilliseconds");o(nCe,"formatMicroseconds");o(iCe,"formatMonthNumber");o(aCe,"formatMinutes");o(sCe,"formatSeconds");o(oCe,"formatWeekdayNumberMonday");o(lCe,"formatWeekNumberSunday");o(yX,"dISO");o(cCe,"formatWeekNumberISO");o(uCe,"formatWeekdayNumberSunday");o(hCe,"formatWeekNumberMonday");o(fCe,"formatYear");o(dCe,"formatYearISO");o(pCe,"formatFullYear");o(mCe,"formatFullYearISO");o(gCe,"formatZone");o(fX,"formatUTCDayOfMonth");o(yCe,"formatUTCHour24");o(vCe,"formatUTCHour12");o(xCe,"formatUTCDayOfYear");o(vX,"formatUTCMilliseconds");o(bCe,"formatUTCMicroseconds");o(TCe,"formatUTCMonthNumber");o(wCe,"formatUTCMinutes");o(kCe,"formatUTCSeconds");o(ECe,"formatUTCWeekdayNumberMonday");o(SCe,"formatUTCWeekNumberSunday");o(xX,"UTCdISO");o(CCe,"formatUTCWeekNumberISO");o(ACe,"formatUTCWeekdayNumberSunday");o(_Ce,"formatUTCWeekNumberMonday");o(DCe,"formatUTCYear");o(LCe,"formatUTCYearISO");o(RCe,"formatUTCFullYear");o(NCe,"formatUTCFullYearISO");o(MCe,"formatUTCZone");o(dX,"formatLiteralPercent");o(pX,"formatUnixTimestamp");o(mX,"formatUnixTimestampSeconds")});function HD(t){return X0=UD(t),Pd=X0.format,TX=X0.parse,wX=X0.utcFormat,kX=X0.utcParse,X0}var X0,Pd,TX,wX,kX,EX=N(()=>{"use strict";bX();HD({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"]});o(HD,"defaultLocale")});var qD=N(()=>{"use strict";EX()});function ICe(t){return new Date(t)}function OCe(t){return t instanceof Date?+t:+new Date(+t)}function SX(t,e,r,n,i,a,s,l,u,h){var f=Iv(),d=f.invert,p=f.domain,m=h(".%L"),g=h(":%S"),y=h("%I:%M"),v=h("%I %p"),x=h("%a %d"),b=h("%b %d"),T=h("%B"),S=h("%Y");function w(k){return(u(k){"use strict";G5();qD();CD();Mv();YY();o(ICe,"date");o(OCe,"number");o(SX,"calendar");o(V5,"time")});var AX=N(()=>{"use strict";GY();WY();wD();CX()});function WD(t){for(var e=t.length/6|0,r=new Array(e),n=0;n{"use strict";o(WD,"default")});var YD,DX=N(()=>{"use strict";_X();YD=WD("4e79a7f28e2ce1575976b7b259a14fedc949af7aa1ff9da79c755fbab0ab")});var LX=N(()=>{"use strict";DX()});function zn(t){return o(function(){return t},"constant")}var U5=N(()=>{"use strict";o(zn,"default")});function NX(t){return t>1?0:t<-1?j0:Math.acos(t)}function jD(t){return t>=1?zv:t<=-1?-zv:Math.asin(t)}var XD,ca,Ph,RX,H5,El,Bd,Xi,j0,zv,K0,q5=N(()=>{"use strict";XD=Math.abs,ca=Math.atan2,Ph=Math.cos,RX=Math.max,H5=Math.min,El=Math.sin,Bd=Math.sqrt,Xi=1e-12,j0=Math.PI,zv=j0/2,K0=2*j0;o(NX,"acos");o(jD,"asin")});function W5(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 _d(e)}var KD=N(()=>{"use strict";W_();o(W5,"withPath")});function PCe(t){return t.innerRadius}function BCe(t){return t.outerRadius}function FCe(t){return t.startAngle}function $Ce(t){return t.endAngle}function zCe(t){return t&&t.padAngle}function GCe(t,e,r,n,i,a,s,l){var u=r-t,h=n-e,f=s-i,d=l-a,p=d*u-f*h;if(!(p*p_*_+O*O&&(C=I,R=L),{cx:C,cy:R,x01:-f,y01:-d,x11:C*(i/w-1),y11:R*(i/w-1)}}function Sl(){var t=PCe,e=BCe,r=zn(0),n=null,i=FCe,a=$Ce,s=zCe,l=null,u=W5(h);function h(){var f,d,p=+t.apply(this,arguments),m=+e.apply(this,arguments),g=i.apply(this,arguments)-zv,y=a.apply(this,arguments)-zv,v=XD(y-g),x=y>g;if(l||(l=f=u()),mXi))l.moveTo(0,0);else if(v>K0-Xi)l.moveTo(m*Ph(g),m*El(g)),l.arc(0,0,m,g,y,!x),p>Xi&&(l.moveTo(p*Ph(y),p*El(y)),l.arc(0,0,p,y,g,x));else{var b=g,T=y,S=g,w=y,k=v,A=v,C=s.apply(this,arguments)/2,R=C>Xi&&(n?+n.apply(this,arguments):Bd(p*p+m*m)),I=H5(XD(m-p)/2,+r.apply(this,arguments)),L=I,E=I,D,_;if(R>Xi){var O=jD(R/p*El(C)),M=jD(R/m*El(C));(k-=O*2)>Xi?(O*=x?1:-1,S+=O,w-=O):(k=0,S=w=(g+y)/2),(A-=M*2)>Xi?(M*=x?1:-1,b+=M,T-=M):(A=0,b=T=(g+y)/2)}var P=m*Ph(b),B=m*El(b),F=p*Ph(w),G=p*El(w);if(I>Xi){var $=m*Ph(T),U=m*El(T),j=p*Ph(S),te=p*El(S),Y;if(vXi?E>Xi?(D=Y5(j,te,P,B,m,E,x),_=Y5($,U,F,G,m,E,x),l.moveTo(D.cx+D.x01,D.cy+D.y01),EXi)||!(k>Xi)?l.lineTo(F,G):L>Xi?(D=Y5(F,G,$,U,p,-L,x),_=Y5(P,B,j,te,p,-L,x),l.lineTo(D.cx+D.x01,D.cy+D.y01),L{"use strict";U5();q5();KD();o(PCe,"arcInnerRadius");o(BCe,"arcOuterRadius");o(FCe,"arcStartAngle");o($Ce,"arcEndAngle");o(zCe,"arcPadAngle");o(GCe,"intersect");o(Y5,"cornerTangents");o(Sl,"default")});function Gv(t){return typeof t=="object"&&"length"in t?t:Array.from(t)}var Zxt,QD=N(()=>{"use strict";Zxt=Array.prototype.slice;o(Gv,"default")});function IX(t){this._context=t}function Cu(t){return new IX(t)}var ZD=N(()=>{"use strict";o(IX,"Linear");IX.prototype={areaStart:o(function(){this._line=0},"areaStart"),areaEnd:o(function(){this._line=NaN},"areaEnd"),lineStart:o(function(){this._point=0},"lineStart"),lineEnd:o(function(){(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},"lineEnd"),point:o(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}},"point")};o(Cu,"default")});function OX(t){return t[0]}function PX(t){return t[1]}var BX=N(()=>{"use strict";o(OX,"x");o(PX,"y")});function Cl(t,e){var r=zn(!0),n=null,i=Cu,a=null,s=W5(l);t=typeof t=="function"?t:t===void 0?OX:zn(t),e=typeof e=="function"?e:e===void 0?PX:zn(e);function l(u){var h,f=(u=Gv(u)).length,d,p=!1,m;for(n==null&&(a=i(m=s())),h=0;h<=f;++h)!(h{"use strict";QD();U5();ZD();KD();BX();o(Cl,"default")});function JD(t,e){return et?1:e>=t?0:NaN}var $X=N(()=>{"use strict";o(JD,"default")});function eL(t){return t}var zX=N(()=>{"use strict";o(eL,"default")});function X5(){var t=eL,e=JD,r=null,n=zn(0),i=zn(K0),a=zn(0);function s(l){var u,h=(l=Gv(l)).length,f,d,p=0,m=new Array(h),g=new Array(h),y=+n.apply(this,arguments),v=Math.min(K0,Math.max(-K0,i.apply(this,arguments)-y)),x,b=Math.min(Math.abs(v)/h,a.apply(this,arguments)),T=b*(v<0?-1:1),S;for(u=0;u0&&(p+=S);for(e!=null?m.sort(function(w,k){return e(g[w],g[k])}):r!=null&&m.sort(function(w,k){return r(l[w],l[k])}),u=0,d=p?(v-h*T)/p:0;u0?S*d:0)+T,g[f]={data:l[f],index:u,value:S,startAngle:y,endAngle:x,padAngle:b};return g}return o(s,"pie"),s.value=function(l){return arguments.length?(t=typeof l=="function"?l:zn(+l),s):t},s.sortValues=function(l){return arguments.length?(e=l,r=null,s):e},s.sort=function(l){return arguments.length?(r=l,e=null,s):r},s.startAngle=function(l){return arguments.length?(n=typeof l=="function"?l:zn(+l),s):n},s.endAngle=function(l){return arguments.length?(i=typeof l=="function"?l:zn(+l),s):i},s.padAngle=function(l){return arguments.length?(a=typeof l=="function"?l:zn(+l),s):a},s}var GX=N(()=>{"use strict";QD();U5();$X();zX();q5();o(X5,"default")});function Vv(t){return new j5(t,!0)}function Uv(t){return new j5(t,!1)}var j5,VX=N(()=>{"use strict";j5=class{static{o(this,"Bump")}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}};o(Vv,"bumpX");o(Uv,"bumpY")});function so(){}var Hv=N(()=>{"use strict";o(so,"default")});function Q0(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 qv(t){this._context=t}function No(t){return new qv(t)}var Wv=N(()=>{"use strict";o(Q0,"point");o(qv,"Basis");qv.prototype={areaStart:o(function(){this._line=0},"areaStart"),areaEnd:o(function(){this._line=NaN},"areaEnd"),lineStart:o(function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},"lineStart"),lineEnd:o(function(){switch(this._point){case 3:Q0(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},"lineEnd"),point:o(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:Q0(this,t,e);break}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e},"point")};o(No,"default")});function UX(t){this._context=t}function K5(t){return new UX(t)}var HX=N(()=>{"use strict";Hv();Wv();o(UX,"BasisClosed");UX.prototype={areaStart:so,areaEnd:so,lineStart:o(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},"lineStart"),lineEnd:o(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}}},"lineEnd"),point:o(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:Q0(this,t,e);break}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e},"point")};o(K5,"default")});function qX(t){this._context=t}function Q5(t){return new qX(t)}var WX=N(()=>{"use strict";Wv();o(qX,"BasisOpen");qX.prototype={areaStart:o(function(){this._line=0},"areaStart"),areaEnd:o(function(){this._line=NaN},"areaEnd"),lineStart:o(function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},"lineStart"),lineEnd:o(function(){(this._line||this._line!==0&&this._point===3)&&this._context.closePath(),this._line=1-this._line},"lineEnd"),point:o(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:Q0(this,t,e);break}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e},"point")};o(Q5,"default")});function YX(t,e){this._basis=new qv(t),this._beta=e}var tL,XX=N(()=>{"use strict";Wv();o(YX,"Bundle");YX.prototype={lineStart:o(function(){this._x=[],this._y=[],this._basis.lineStart()},"lineStart"),lineEnd:o(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,l=-1,u;++l<=r;)u=l/r,this._basis.point(this._beta*t[l]+(1-this._beta)*(n+u*a),this._beta*e[l]+(1-this._beta)*(i+u*s));this._x=this._y=null,this._basis.lineEnd()},"lineEnd"),point:o(function(t,e){this._x.push(+t),this._y.push(+e)},"point")};tL=o((function t(e){function r(n){return e===1?new qv(n):new YX(n,e)}return o(r,"bundle"),r.beta=function(n){return t(+n)},r}),"custom")(.85)});function Z0(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 Z5(t,e){this._context=t,this._k=(1-e)/6}var Yv,Xv=N(()=>{"use strict";o(Z0,"point");o(Z5,"Cardinal");Z5.prototype={areaStart:o(function(){this._line=0},"areaStart"),areaEnd:o(function(){this._line=NaN},"areaEnd"),lineStart:o(function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},"lineStart"),lineEnd:o(function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:Z0(this,this._x1,this._y1);break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},"lineEnd"),point:o(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:Z0(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},"point")};Yv=o((function t(e){function r(n){return new Z5(n,e)}return o(r,"cardinal"),r.tension=function(n){return t(+n)},r}),"custom")(0)});function J5(t,e){this._context=t,this._k=(1-e)/6}var rL,nL=N(()=>{"use strict";Hv();Xv();o(J5,"CardinalClosed");J5.prototype={areaStart:so,areaEnd:so,lineStart:o(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},"lineStart"),lineEnd:o(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}}},"lineEnd"),point:o(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:Z0(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},"point")};rL=o((function t(e){function r(n){return new J5(n,e)}return o(r,"cardinal"),r.tension=function(n){return t(+n)},r}),"custom")(0)});function eT(t,e){this._context=t,this._k=(1-e)/6}var iL,aL=N(()=>{"use strict";Xv();o(eT,"CardinalOpen");eT.prototype={areaStart:o(function(){this._line=0},"areaStart"),areaEnd:o(function(){this._line=NaN},"areaEnd"),lineStart:o(function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},"lineStart"),lineEnd:o(function(){(this._line||this._line!==0&&this._point===3)&&this._context.closePath(),this._line=1-this._line},"lineEnd"),point:o(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:Z0(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},"point")};iL=o((function t(e){function r(n){return new eT(n,e)}return o(r,"cardinal"),r.tension=function(n){return t(+n)},r}),"custom")(0)});function jv(t,e,r){var n=t._x1,i=t._y1,a=t._x2,s=t._y2;if(t._l01_a>Xi){var l=2*t._l01_2a+3*t._l01_a*t._l12_a+t._l12_2a,u=3*t._l01_a*(t._l01_a+t._l12_a);n=(n*l-t._x0*t._l12_2a+t._x2*t._l01_2a)/u,i=(i*l-t._y0*t._l12_2a+t._y2*t._l01_2a)/u}if(t._l23_a>Xi){var h=2*t._l23_2a+3*t._l23_a*t._l12_a+t._l12_2a,f=3*t._l23_a*(t._l23_a+t._l12_a);a=(a*h+t._x1*t._l23_2a-e*t._l12_2a)/f,s=(s*h+t._y1*t._l23_2a-r*t._l12_2a)/f}t._context.bezierCurveTo(n,i,a,s,t._x2,t._y2)}function jX(t,e){this._context=t,this._alpha=e}var Kv,tT=N(()=>{"use strict";q5();Xv();o(jv,"point");o(jX,"CatmullRom");jX.prototype={areaStart:o(function(){this._line=0},"areaStart"),areaEnd:o(function(){this._line=NaN},"areaEnd"),lineStart:o(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},"lineStart"),lineEnd:o(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},"lineEnd"),point:o(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:jv(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},"point")};Kv=o((function t(e){function r(n){return e?new jX(n,e):new Z5(n,0)}return o(r,"catmullRom"),r.alpha=function(n){return t(+n)},r}),"custom")(.5)});function KX(t,e){this._context=t,this._alpha=e}var sL,QX=N(()=>{"use strict";nL();Hv();tT();o(KX,"CatmullRomClosed");KX.prototype={areaStart:so,areaEnd:so,lineStart:o(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},"lineStart"),lineEnd:o(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}}},"lineEnd"),point:o(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:jv(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},"point")};sL=o((function t(e){function r(n){return e?new KX(n,e):new J5(n,0)}return o(r,"catmullRom"),r.alpha=function(n){return t(+n)},r}),"custom")(.5)});function ZX(t,e){this._context=t,this._alpha=e}var oL,JX=N(()=>{"use strict";aL();tT();o(ZX,"CatmullRomOpen");ZX.prototype={areaStart:o(function(){this._line=0},"areaStart"),areaEnd:o(function(){this._line=NaN},"areaEnd"),lineStart:o(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},"lineStart"),lineEnd:o(function(){(this._line||this._line!==0&&this._point===3)&&this._context.closePath(),this._line=1-this._line},"lineEnd"),point:o(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:jv(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},"point")};oL=o((function t(e){function r(n){return e?new ZX(n,e):new eT(n,0)}return o(r,"catmullRom"),r.alpha=function(n){return t(+n)},r}),"custom")(.5)});function ej(t){this._context=t}function rT(t){return new ej(t)}var tj=N(()=>{"use strict";Hv();o(ej,"LinearClosed");ej.prototype={areaStart:so,areaEnd:so,lineStart:o(function(){this._point=0},"lineStart"),lineEnd:o(function(){this._point&&this._context.closePath()},"lineEnd"),point:o(function(t,e){t=+t,e=+e,this._point?this._context.lineTo(t,e):(this._point=1,this._context.moveTo(t,e))},"point")};o(rT,"default")});function rj(t){return t<0?-1:1}function nj(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),l=(a*i+s*n)/(n+i);return(rj(a)+rj(s))*Math.min(Math.abs(a),Math.abs(s),.5*Math.abs(l))||0}function ij(t,e){var r=t._x1-t._x0;return r?(3*(t._y1-t._y0)/r-e)/2:e}function lL(t,e,r){var n=t._x0,i=t._y0,a=t._x1,s=t._y1,l=(a-n)/3;t._context.bezierCurveTo(n+l,i+l*e,a-l,s-l*r,a,s)}function nT(t){this._context=t}function aj(t){this._context=new sj(t)}function sj(t){this._context=t}function Qv(t){return new nT(t)}function Zv(t){return new aj(t)}var oj=N(()=>{"use strict";o(rj,"sign");o(nj,"slope3");o(ij,"slope2");o(lL,"point");o(nT,"MonotoneX");nT.prototype={areaStart:o(function(){this._line=0},"areaStart"),areaEnd:o(function(){this._line=NaN},"areaEnd"),lineStart:o(function(){this._x0=this._x1=this._y0=this._y1=this._t0=NaN,this._point=0},"lineStart"),lineEnd:o(function(){switch(this._point){case 2:this._context.lineTo(this._x1,this._y1);break;case 3:lL(this,this._t0,ij(this,this._t0));break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},"lineEnd"),point:o(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,lL(this,ij(this,r=nj(this,t,e)),r);break;default:lL(this,this._t0,r=nj(this,t,e));break}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e,this._t0=r}},"point")};o(aj,"MonotoneY");(aj.prototype=Object.create(nT.prototype)).point=function(t,e){nT.prototype.point.call(this,e,t)};o(sj,"ReflectContext");sj.prototype={moveTo:o(function(t,e){this._context.moveTo(e,t)},"moveTo"),closePath:o(function(){this._context.closePath()},"closePath"),lineTo:o(function(t,e){this._context.lineTo(e,t)},"lineTo"),bezierCurveTo:o(function(t,e,r,n,i,a){this._context.bezierCurveTo(e,t,n,r,a,i)},"bezierCurveTo")};o(Qv,"monotoneX");o(Zv,"monotoneY")});function cj(t){this._context=t}function lj(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{"use strict";o(cj,"Natural");cj.prototype={areaStart:o(function(){this._line=0},"areaStart"),areaEnd:o(function(){this._line=NaN},"areaEnd"),lineStart:o(function(){this._x=[],this._y=[]},"lineStart"),lineEnd:o(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=lj(t),i=lj(e),a=0,s=1;s{"use strict";o(iT,"Step");iT.prototype={areaStart:o(function(){this._line=0},"areaStart"),areaEnd:o(function(){this._line=NaN},"areaEnd"),lineStart:o(function(){this._x=this._y=NaN,this._point=0},"lineStart"),lineEnd:o(function(){0=0&&(this._t=1-this._t,this._line=1-this._line)},"lineEnd"),point:o(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},"point")};o(em,"default");o(Jv,"stepBefore");o(e2,"stepAfter")});var fj=N(()=>{"use strict";MX();FX();GX();HX();WX();Wv();VX();XX();nL();aL();Xv();QX();JX();tT();tj();ZD();oj();uj();hj()});var dj=N(()=>{"use strict"});var pj=N(()=>{"use strict"});function Bh(t,e,r){this.k=t,this.x=e,this.y=r}function uL(t){for(;!t.__zoom;)if(!(t=t.parentNode))return cL;return t.__zoom}var cL,hL=N(()=>{"use strict";o(Bh,"Transform");Bh.prototype={constructor:Bh,scale:o(function(t){return t===1?this:new Bh(this.k*t,this.x,this.y)},"scale"),translate:o(function(t,e){return t===0&e===0?this:new Bh(this.k,this.x+this.k*t,this.y+this.k*e)},"translate"),apply:o(function(t){return[t[0]*this.k+this.x,t[1]*this.k+this.y]},"apply"),applyX:o(function(t){return t*this.k+this.x},"applyX"),applyY:o(function(t){return t*this.k+this.y},"applyY"),invert:o(function(t){return[(t[0]-this.x)/this.k,(t[1]-this.y)/this.k]},"invert"),invertX:o(function(t){return(t-this.x)/this.k},"invertX"),invertY:o(function(t){return(t-this.y)/this.k},"invertY"),rescaleX:o(function(t){return t.copy().domain(t.range().map(this.invertX,this).map(t.invert,t))},"rescaleX"),rescaleY:o(function(t){return t.copy().domain(t.range().map(this.invertY,this).map(t.invert,t))},"rescaleY"),toString:o(function(){return"translate("+this.x+","+this.y+") scale("+this.k+")"},"toString")};cL=new Bh(1,0,0);uL.prototype=Bh.prototype;o(uL,"transform")});var mj=N(()=>{"use strict"});var gj=N(()=>{"use strict";w5();dj();pj();hL();mj()});var yj=N(()=>{"use strict";gj();hL()});var yr=N(()=>{"use strict";Ch();SH();HW();XW();B0();jW();KW();JA();gq();QW();G_();ZW();eY();iD();pY();FY();z0();W_();$Y();JW();zY();AX();LX();yl();fj();G5();qD();g5();w5();yj()});var vj=Da(ji=>{"use strict";Object.defineProperty(ji,"__esModule",{value:!0});ji.BLANK_URL=ji.relativeFirstCharacters=ji.whitespaceEscapeCharsRegex=ji.urlSchemeRegex=ji.ctrlCharactersRegex=ji.htmlCtrlEntityRegex=ji.htmlEntitiesRegex=ji.invalidProtocolRegex=void 0;ji.invalidProtocolRegex=/^([^\w]*)(javascript|data|vbscript)/im;ji.htmlEntitiesRegex=/&#(\w+)(^\w|;)?/g;ji.htmlCtrlEntityRegex=/&(newline|tab);/gi;ji.ctrlCharactersRegex=/[\u0000-\u001F\u007F-\u009F\u2000-\u200D\uFEFF]/gim;ji.urlSchemeRegex=/^.+(:|:)/gim;ji.whitespaceEscapeCharsRegex=/(\\|%5[cC])((%(6[eE]|72|74))|[nrt])/g;ji.relativeFirstCharacters=[".","/"];ji.BLANK_URL="about:blank"});var tm=Da(aT=>{"use strict";Object.defineProperty(aT,"__esModule",{value:!0});aT.sanitizeUrl=void 0;var Na=vj();function VCe(t){return Na.relativeFirstCharacters.indexOf(t[0])>-1}o(VCe,"isRelativeUrlWithoutProtocol");function UCe(t){var e=t.replace(Na.ctrlCharactersRegex,"");return e.replace(Na.htmlEntitiesRegex,function(r,n){return String.fromCharCode(n)})}o(UCe,"decodeHtmlCharacters");function HCe(t){return URL.canParse(t)}o(HCe,"isValidUrl");function xj(t){try{return decodeURIComponent(t)}catch{return t}}o(xj,"decodeURI");function qCe(t){if(!t)return Na.BLANK_URL;var e,r=xj(t.trim());do r=UCe(r).replace(Na.htmlCtrlEntityRegex,"").replace(Na.ctrlCharactersRegex,"").replace(Na.whitespaceEscapeCharsRegex,"").trim(),r=xj(r),e=r.match(Na.ctrlCharactersRegex)||r.match(Na.htmlEntitiesRegex)||r.match(Na.htmlCtrlEntityRegex)||r.match(Na.whitespaceEscapeCharsRegex);while(e&&e.length>0);var n=r;if(!n)return Na.BLANK_URL;if(VCe(n))return n;var i=n.trimStart(),a=i.match(Na.urlSchemeRegex);if(!a)return n;var s=a[0].toLowerCase().trim();if(Na.invalidProtocolRegex.test(s))return Na.BLANK_URL;var l=i.replace(/\\/g,"/");if(s==="mailto:"||s.includes("://"))return l;if(s==="http:"||s==="https:"){if(!HCe(l))return Na.BLANK_URL;var u=new URL(l);return u.protocol=u.protocol.toLowerCase(),u.hostname=u.hostname.toLowerCase(),u.toString()}return l}o(qCe,"sanitizeUrl");aT.sanitizeUrl=qCe});var fL,Fd,sT,bj,oT,lT,ua,t2,r2=N(()=>{"use strict";fL=ja(tm(),1);gr();Fd=o((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"),sT=o((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"};Fd(t,r).lower()},"drawBackgroundRect"),bj=o((t,e)=>{let r=e.text.replace(pd," "),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"),oT=o((t,e,r,n)=>{let i=t.append("image");i.attr("x",e),i.attr("y",r);let a=(0,fL.sanitizeUrl)(n);i.attr("xlink:href",a)},"drawImage"),lT=o((t,e,r,n)=>{let i=t.append("use");i.attr("x",e),i.attr("y",r);let a=(0,fL.sanitizeUrl)(n);i.attr("xlink:href",`#${a}`)},"drawEmbeddedImage"),ua=o(()=>({x:0,y:0,width:100,height:100,fill:"#EDF2AE",stroke:"#666",anchor:"start",rx:0,ry:0}),"getNoteRect"),t2=o(()=>({x:0,y:0,width:100,height:100,"text-anchor":"start",style:"#666",textMargin:0,rx:0,ry:0,tspan:!0}),"getTextObj")});var Tj,dL,wj,WCe,YCe,XCe,jCe,KCe,QCe,ZCe,JCe,e7e,t7e,r7e,n7e,Au,Al,kj=N(()=>{"use strict";gr();r2();Tj=ja(tm(),1),dL=o(function(t,e){return Fd(t,e)},"drawRect"),wj=o(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 l=a.startsWith("data:image/png;base64")?a:(0,Tj.sanitizeUrl)(a);s.attr("xlink:href",l)},"drawImage"),WCe=o((t,e,r)=>{let n=t.append("g"),i=0;for(let a of e){let s=a.textColor?a.textColor:"#444444",l=a.lineColor?a.lineColor:"#444444",u=a.offsetX?parseInt(a.offsetX):0,h=a.offsetY?parseInt(a.offsetY):0,f="";if(i===0){let p=n.append("line");p.attr("x1",a.startPoint.x),p.attr("y1",a.startPoint.y),p.attr("x2",a.endPoint.x),p.attr("y2",a.endPoint.y),p.attr("stroke-width","1"),p.attr("stroke",l),p.style("fill","none"),a.type!=="rel_b"&&p.attr("marker-end","url("+f+"#arrowhead)"),(a.type==="birel"||a.type==="rel_b")&&p.attr("marker-start","url("+f+"#arrowend)"),i=-1}else{let p=n.append("path");p.attr("fill","none").attr("stroke-width","1").attr("stroke",l).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"&&p.attr("marker-end","url("+f+"#arrowhead)"),(a.type==="birel"||a.type==="rel_b")&&p.attr("marker-start","url("+f+"#arrowend)")}let d=r.messageFont();Au(r)(a.label.text,n,Math.min(a.startPoint.x,a.endPoint.x)+Math.abs(a.endPoint.x-a.startPoint.x)/2+u,Math.min(a.startPoint.y,a.endPoint.y)+Math.abs(a.endPoint.y-a.startPoint.y)/2+h,a.label.width,a.label.height,{fill:s},d),a.techn&&a.techn.text!==""&&(d=r.messageFont(),Au(r)("["+a.techn.text+"]",n,Math.min(a.startPoint.x,a.endPoint.x)+Math.abs(a.endPoint.x-a.startPoint.x)/2+u,Math.min(a.startPoint.y,a.endPoint.y)+Math.abs(a.endPoint.y-a.startPoint.y)/2+r.messageFontSize+5+h,Math.max(a.label.width,a.techn.width),a.techn.height,{fill:s,"font-style":"italic"},d))}},"drawRels"),YCe=o(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",l={"stroke-width":1,"stroke-dasharray":"7.0,7.0"};e.nodeType&&(l={"stroke-width":1});let u={x:e.x,y:e.y,fill:i,stroke:a,width:e.width,height:e.height,rx:2.5,ry:2.5,attrs:l};dL(n,u);let h=r.boundaryFont();h.fontWeight="bold",h.fontSize=h.fontSize+2,h.fontColor=s,Au(r)(e.label.text,n,e.x,e.y+e.label.Y,e.width,e.height,{fill:"#444444"},h),e.type&&e.type.text!==""&&(h=r.boundaryFont(),h.fontColor=s,Au(r)(e.type.text,n,e.x,e.y+e.type.Y,e.width,e.height,{fill:"#444444"},h)),e.descr&&e.descr.text!==""&&(h=r.boundaryFont(),h.fontSize=h.fontSize-2,h.fontColor=s,Au(r)(e.descr.text,n,e.x,e.y+e.descr.Y,e.width,e.height,{fill:"#444444"},h))},"drawBoundary"),XCe=o(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 l=t.append("g");l.attr("class","person-man");let u=ua();switch(e.typeC4Shape.text){case"person":case"external_person":case"system":case"external_system":case"container":case"external_container":case"component":case"external_component":u.x=e.x,u.y=e.y,u.fill=n,u.width=e.width,u.height=e.height,u.stroke=i,u.rx=2.5,u.ry=2.5,u.attrs={"stroke-width":.5},dL(l,u);break;case"system_db":case"external_system_db":case"container_db":case"external_container_db":case"component_db":case"external_component_db":l.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)),l.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":l.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)),l.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 h=n7e(r,e.typeC4Shape.text);switch(l.append("text").attr("fill",a).attr("font-family",h.fontFamily).attr("font-size",h.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":wj(l,48,48,e.x+e.width/2-24,e.y+e.image.Y,s);break}let f=r[e.typeC4Shape.text+"Font"]();return f.fontWeight="bold",f.fontSize=f.fontSize+2,f.fontColor=a,Au(r)(e.label.text,l,e.x,e.y+e.label.Y,e.width,e.height,{fill:a},f),f=r[e.typeC4Shape.text+"Font"](),f.fontColor=a,e.techn&&e.techn?.text!==""?Au(r)(e.techn.text,l,e.x,e.y+e.techn.Y,e.width,e.height,{fill:a,"font-style":"italic"},f):e.type&&e.type.text!==""&&Au(r)(e.type.text,l,e.x,e.y+e.type.Y,e.width,e.height,{fill:a,"font-style":"italic"},f),e.descr&&e.descr.text!==""&&(f=r.personFont(),f.fontColor=a,Au(r)(e.descr.text,l,e.x,e.y+e.descr.Y,e.width,e.height,{fill:a},f)),e.height},"drawC4Shape"),jCe=o(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"),KCe=o(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"),QCe=o(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"),ZCe=o(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"),JCe=o(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"),e7e=o(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"),t7e=o(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"),r7e=o(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"),n7e=o((t,e)=>({fontFamily:t[e+"FontFamily"],fontSize:t[e+"FontSize"],fontWeight:t[e+"FontWeight"]}),"getC4ShapeFont"),Au=(function(){function t(i,a,s,l,u,h,f){let d=a.append("text").attr("x",s+u/2).attr("y",l+h/2+5).style("text-anchor","middle").text(i);n(d,f)}o(t,"byText");function e(i,a,s,l,u,h,f,d){let{fontSize:p,fontFamily:m,fontWeight:g}=d,y=i.split(tt.lineBreakRegex);for(let v=0;v{"use strict";i7e=typeof global=="object"&&global&&global.Object===Object&&global,uT=i7e});var a7e,s7e,hi,Mo=N(()=>{"use strict";pL();a7e=typeof self=="object"&&self&&self.Object===Object&&self,s7e=uT||a7e||Function("return this")(),hi=s7e});var o7e,Ki,$d=N(()=>{"use strict";Mo();o7e=hi.Symbol,Ki=o7e});function u7e(t){var e=l7e.call(t,n2),r=t[n2];try{t[n2]=void 0;var n=!0}catch{}var i=c7e.call(t);return n&&(e?t[n2]=r:delete t[n2]),i}var Ej,l7e,c7e,n2,Sj,Cj=N(()=>{"use strict";$d();Ej=Object.prototype,l7e=Ej.hasOwnProperty,c7e=Ej.toString,n2=Ki?Ki.toStringTag:void 0;o(u7e,"getRawTag");Sj=u7e});function d7e(t){return f7e.call(t)}var h7e,f7e,Aj,_j=N(()=>{"use strict";h7e=Object.prototype,f7e=h7e.toString;o(d7e,"objectToString");Aj=d7e});function g7e(t){return t==null?t===void 0?m7e:p7e:Dj&&Dj in Object(t)?Sj(t):Aj(t)}var p7e,m7e,Dj,ha,_u=N(()=>{"use strict";$d();Cj();_j();p7e="[object Null]",m7e="[object Undefined]",Dj=Ki?Ki.toStringTag:void 0;o(g7e,"baseGetTag");ha=g7e});function y7e(t){var e=typeof t;return t!=null&&(e=="object"||e=="function")}var Sn,oo=N(()=>{"use strict";o(y7e,"isObject");Sn=y7e});function w7e(t){if(!Sn(t))return!1;var e=ha(t);return e==x7e||e==b7e||e==v7e||e==T7e}var v7e,x7e,b7e,T7e,Si,i2=N(()=>{"use strict";_u();oo();v7e="[object AsyncFunction]",x7e="[object Function]",b7e="[object GeneratorFunction]",T7e="[object Proxy]";o(w7e,"isFunction");Si=w7e});var k7e,hT,Lj=N(()=>{"use strict";Mo();k7e=hi["__core-js_shared__"],hT=k7e});function E7e(t){return!!Rj&&Rj in t}var Rj,Nj,Mj=N(()=>{"use strict";Lj();Rj=(function(){var t=/[^.]+$/.exec(hT&&hT.keys&&hT.keys.IE_PROTO||"");return t?"Symbol(src)_1."+t:""})();o(E7e,"isMasked");Nj=E7e});function A7e(t){if(t!=null){try{return C7e.call(t)}catch{}try{return t+""}catch{}}return""}var S7e,C7e,Du,mL=N(()=>{"use strict";S7e=Function.prototype,C7e=S7e.toString;o(A7e,"toSource");Du=A7e});function O7e(t){if(!Sn(t)||Nj(t))return!1;var e=Si(t)?I7e:D7e;return e.test(Du(t))}var _7e,D7e,L7e,R7e,N7e,M7e,I7e,Ij,Oj=N(()=>{"use strict";i2();Mj();oo();mL();_7e=/[\\^$.*+?()[\]{}|]/g,D7e=/^\[object .+?Constructor\]$/,L7e=Function.prototype,R7e=Object.prototype,N7e=L7e.toString,M7e=R7e.hasOwnProperty,I7e=RegExp("^"+N7e.call(M7e).replace(_7e,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");o(O7e,"baseIsNative");Ij=O7e});function P7e(t,e){return t?.[e]}var Pj,Bj=N(()=>{"use strict";o(P7e,"getValue");Pj=P7e});function B7e(t,e){var r=Pj(t,e);return Ij(r)?r:void 0}var Ls,Fh=N(()=>{"use strict";Oj();Bj();o(B7e,"getNative");Ls=B7e});var F7e,Lu,a2=N(()=>{"use strict";Fh();F7e=Ls(Object,"create"),Lu=F7e});function $7e(){this.__data__=Lu?Lu(null):{},this.size=0}var Fj,$j=N(()=>{"use strict";a2();o($7e,"hashClear");Fj=$7e});function z7e(t){var e=this.has(t)&&delete this.__data__[t];return this.size-=e?1:0,e}var zj,Gj=N(()=>{"use strict";o(z7e,"hashDelete");zj=z7e});function H7e(t){var e=this.__data__;if(Lu){var r=e[t];return r===G7e?void 0:r}return U7e.call(e,t)?e[t]:void 0}var G7e,V7e,U7e,Vj,Uj=N(()=>{"use strict";a2();G7e="__lodash_hash_undefined__",V7e=Object.prototype,U7e=V7e.hasOwnProperty;o(H7e,"hashGet");Vj=H7e});function Y7e(t){var e=this.__data__;return Lu?e[t]!==void 0:W7e.call(e,t)}var q7e,W7e,Hj,qj=N(()=>{"use strict";a2();q7e=Object.prototype,W7e=q7e.hasOwnProperty;o(Y7e,"hashHas");Hj=Y7e});function j7e(t,e){var r=this.__data__;return this.size+=this.has(t)?0:1,r[t]=Lu&&e===void 0?X7e:e,this}var X7e,Wj,Yj=N(()=>{"use strict";a2();X7e="__lodash_hash_undefined__";o(j7e,"hashSet");Wj=j7e});function rm(t){var e=-1,r=t==null?0:t.length;for(this.clear();++e{"use strict";$j();Gj();Uj();qj();Yj();o(rm,"Hash");rm.prototype.clear=Fj;rm.prototype.delete=zj;rm.prototype.get=Vj;rm.prototype.has=Hj;rm.prototype.set=Wj;gL=rm});function K7e(){this.__data__=[],this.size=0}var jj,Kj=N(()=>{"use strict";o(K7e,"listCacheClear");jj=K7e});function Q7e(t,e){return t===e||t!==t&&e!==e}var Io,zd=N(()=>{"use strict";o(Q7e,"eq");Io=Q7e});function Z7e(t,e){for(var r=t.length;r--;)if(Io(t[r][0],e))return r;return-1}var $h,s2=N(()=>{"use strict";zd();o(Z7e,"assocIndexOf");$h=Z7e});function tAe(t){var e=this.__data__,r=$h(e,t);if(r<0)return!1;var n=e.length-1;return r==n?e.pop():eAe.call(e,r,1),--this.size,!0}var J7e,eAe,Qj,Zj=N(()=>{"use strict";s2();J7e=Array.prototype,eAe=J7e.splice;o(tAe,"listCacheDelete");Qj=tAe});function rAe(t){var e=this.__data__,r=$h(e,t);return r<0?void 0:e[r][1]}var Jj,eK=N(()=>{"use strict";s2();o(rAe,"listCacheGet");Jj=rAe});function nAe(t){return $h(this.__data__,t)>-1}var tK,rK=N(()=>{"use strict";s2();o(nAe,"listCacheHas");tK=nAe});function iAe(t,e){var r=this.__data__,n=$h(r,t);return n<0?(++this.size,r.push([t,e])):r[n][1]=e,this}var nK,iK=N(()=>{"use strict";s2();o(iAe,"listCacheSet");nK=iAe});function nm(t){var e=-1,r=t==null?0:t.length;for(this.clear();++e{"use strict";Kj();Zj();eK();rK();iK();o(nm,"ListCache");nm.prototype.clear=jj;nm.prototype.delete=Qj;nm.prototype.get=Jj;nm.prototype.has=tK;nm.prototype.set=nK;zh=nm});var aAe,Gh,fT=N(()=>{"use strict";Fh();Mo();aAe=Ls(hi,"Map"),Gh=aAe});function sAe(){this.size=0,this.__data__={hash:new gL,map:new(Gh||zh),string:new gL}}var aK,sK=N(()=>{"use strict";Xj();o2();fT();o(sAe,"mapCacheClear");aK=sAe});function oAe(t){var e=typeof t;return e=="string"||e=="number"||e=="symbol"||e=="boolean"?t!=="__proto__":t===null}var oK,lK=N(()=>{"use strict";o(oAe,"isKeyable");oK=oAe});function lAe(t,e){var r=t.__data__;return oK(e)?r[typeof e=="string"?"string":"hash"]:r.map}var Vh,l2=N(()=>{"use strict";lK();o(lAe,"getMapData");Vh=lAe});function cAe(t){var e=Vh(this,t).delete(t);return this.size-=e?1:0,e}var cK,uK=N(()=>{"use strict";l2();o(cAe,"mapCacheDelete");cK=cAe});function uAe(t){return Vh(this,t).get(t)}var hK,fK=N(()=>{"use strict";l2();o(uAe,"mapCacheGet");hK=uAe});function hAe(t){return Vh(this,t).has(t)}var dK,pK=N(()=>{"use strict";l2();o(hAe,"mapCacheHas");dK=hAe});function fAe(t,e){var r=Vh(this,t),n=r.size;return r.set(t,e),this.size+=r.size==n?0:1,this}var mK,gK=N(()=>{"use strict";l2();o(fAe,"mapCacheSet");mK=fAe});function im(t){var e=-1,r=t==null?0:t.length;for(this.clear();++e{"use strict";sK();uK();fK();pK();gK();o(im,"MapCache");im.prototype.clear=aK;im.prototype.delete=cK;im.prototype.get=hK;im.prototype.has=dK;im.prototype.set=mK;Gd=im});function yL(t,e){if(typeof t!="function"||e!=null&&typeof e!="function")throw new TypeError(dAe);var r=o(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},"memoized");return r.cache=new(yL.Cache||Gd),r}var dAe,am,vL=N(()=>{"use strict";dT();dAe="Expected a function";o(yL,"memoize");yL.Cache=Gd;am=yL});function pAe(){this.__data__=new zh,this.size=0}var yK,vK=N(()=>{"use strict";o2();o(pAe,"stackClear");yK=pAe});function mAe(t){var e=this.__data__,r=e.delete(t);return this.size=e.size,r}var xK,bK=N(()=>{"use strict";o(mAe,"stackDelete");xK=mAe});function gAe(t){return this.__data__.get(t)}var TK,wK=N(()=>{"use strict";o(gAe,"stackGet");TK=gAe});function yAe(t){return this.__data__.has(t)}var kK,EK=N(()=>{"use strict";o(yAe,"stackHas");kK=yAe});function xAe(t,e){var r=this.__data__;if(r instanceof zh){var n=r.__data__;if(!Gh||n.length{"use strict";o2();fT();dT();vAe=200;o(xAe,"stackSet");SK=xAe});function sm(t){var e=this.__data__=new zh(t);this.size=e.size}var dc,c2=N(()=>{"use strict";o2();vK();bK();wK();EK();CK();o(sm,"Stack");sm.prototype.clear=yK;sm.prototype.delete=xK;sm.prototype.get=TK;sm.prototype.has=kK;sm.prototype.set=SK;dc=sm});var bAe,om,xL=N(()=>{"use strict";Fh();bAe=(function(){try{var t=Ls(Object,"defineProperty");return t({},"",{}),t}catch{}})(),om=bAe});function TAe(t,e,r){e=="__proto__"&&om?om(t,e,{configurable:!0,enumerable:!0,value:r,writable:!0}):t[e]=r}var pc,lm=N(()=>{"use strict";xL();o(TAe,"baseAssignValue");pc=TAe});function wAe(t,e,r){(r!==void 0&&!Io(t[e],r)||r===void 0&&!(e in t))&&pc(t,e,r)}var u2,bL=N(()=>{"use strict";lm();zd();o(wAe,"assignMergeValue");u2=wAe});function kAe(t){return function(e,r,n){for(var i=-1,a=Object(e),s=n(e),l=s.length;l--;){var u=s[t?l:++i];if(r(a[u],u,a)===!1)break}return e}}var AK,_K=N(()=>{"use strict";o(kAe,"createBaseFor");AK=kAe});var EAe,cm,pT=N(()=>{"use strict";_K();EAe=AK(),cm=EAe});function CAe(t,e){if(e)return t.slice();var r=t.length,n=RK?RK(r):new t.constructor(r);return t.copy(n),n}var NK,DK,SAe,LK,RK,mT,TL=N(()=>{"use strict";Mo();NK=typeof exports=="object"&&exports&&!exports.nodeType&&exports,DK=NK&&typeof module=="object"&&module&&!module.nodeType&&module,SAe=DK&&DK.exports===NK,LK=SAe?hi.Buffer:void 0,RK=LK?LK.allocUnsafe:void 0;o(CAe,"cloneBuffer");mT=CAe});var AAe,um,wL=N(()=>{"use strict";Mo();AAe=hi.Uint8Array,um=AAe});function _Ae(t){var e=new t.constructor(t.byteLength);return new um(e).set(new um(t)),e}var hm,gT=N(()=>{"use strict";wL();o(_Ae,"cloneArrayBuffer");hm=_Ae});function DAe(t,e){var r=e?hm(t.buffer):t.buffer;return new t.constructor(r,t.byteOffset,t.length)}var yT,kL=N(()=>{"use strict";gT();o(DAe,"cloneTypedArray");yT=DAe});function LAe(t,e){var r=-1,n=t.length;for(e||(e=Array(n));++r{"use strict";o(LAe,"copyArray");vT=LAe});var MK,RAe,IK,OK=N(()=>{"use strict";oo();MK=Object.create,RAe=(function(){function t(){}return o(t,"object"),function(e){if(!Sn(e))return{};if(MK)return MK(e);t.prototype=e;var r=new t;return t.prototype=void 0,r}})(),IK=RAe});function NAe(t,e){return function(r){return t(e(r))}}var xT,SL=N(()=>{"use strict";o(NAe,"overArg");xT=NAe});var MAe,fm,bT=N(()=>{"use strict";SL();MAe=xT(Object.getPrototypeOf,Object),fm=MAe});function OAe(t){var e=t&&t.constructor,r=typeof e=="function"&&e.prototype||IAe;return t===r}var IAe,mc,dm=N(()=>{"use strict";IAe=Object.prototype;o(OAe,"isPrototype");mc=OAe});function PAe(t){return typeof t.constructor=="function"&&!mc(t)?IK(fm(t)):{}}var TT,CL=N(()=>{"use strict";OK();bT();dm();o(PAe,"initCloneObject");TT=PAe});function BAe(t){return t!=null&&typeof t=="object"}var ai,Oo=N(()=>{"use strict";o(BAe,"isObjectLike");ai=BAe});function $Ae(t){return ai(t)&&ha(t)==FAe}var FAe,AL,PK=N(()=>{"use strict";_u();Oo();FAe="[object Arguments]";o($Ae,"baseIsArguments");AL=$Ae});var BK,zAe,GAe,VAe,_l,pm=N(()=>{"use strict";PK();Oo();BK=Object.prototype,zAe=BK.hasOwnProperty,GAe=BK.propertyIsEnumerable,VAe=AL((function(){return arguments})())?AL:function(t){return ai(t)&&zAe.call(t,"callee")&&!GAe.call(t,"callee")},_l=VAe});var UAe,Bt,Yn=N(()=>{"use strict";UAe=Array.isArray,Bt=UAe});function qAe(t){return typeof t=="number"&&t>-1&&t%1==0&&t<=HAe}var HAe,mm,wT=N(()=>{"use strict";HAe=9007199254740991;o(qAe,"isLength");mm=qAe});function WAe(t){return t!=null&&mm(t.length)&&!Si(t)}var fi,Po=N(()=>{"use strict";i2();wT();o(WAe,"isArrayLike");fi=WAe});function YAe(t){return ai(t)&&fi(t)}var Vd,kT=N(()=>{"use strict";Po();Oo();o(YAe,"isArrayLikeObject");Vd=YAe});function XAe(){return!1}var FK,$K=N(()=>{"use strict";o(XAe,"stubFalse");FK=XAe});var VK,zK,jAe,GK,KAe,QAe,Dl,gm=N(()=>{"use strict";Mo();$K();VK=typeof exports=="object"&&exports&&!exports.nodeType&&exports,zK=VK&&typeof module=="object"&&module&&!module.nodeType&&module,jAe=zK&&zK.exports===VK,GK=jAe?hi.Buffer:void 0,KAe=GK?GK.isBuffer:void 0,QAe=KAe||FK,Dl=QAe});function n8e(t){if(!ai(t)||ha(t)!=ZAe)return!1;var e=fm(t);if(e===null)return!0;var r=t8e.call(e,"constructor")&&e.constructor;return typeof r=="function"&&r instanceof r&&UK.call(r)==r8e}var ZAe,JAe,e8e,UK,t8e,r8e,HK,qK=N(()=>{"use strict";_u();bT();Oo();ZAe="[object Object]",JAe=Function.prototype,e8e=Object.prototype,UK=JAe.toString,t8e=e8e.hasOwnProperty,r8e=UK.call(Object);o(n8e,"isPlainObject");HK=n8e});function _8e(t){return ai(t)&&mm(t.length)&&!!Gn[ha(t)]}var i8e,a8e,s8e,o8e,l8e,c8e,u8e,h8e,f8e,d8e,p8e,m8e,g8e,y8e,v8e,x8e,b8e,T8e,w8e,k8e,E8e,S8e,C8e,A8e,Gn,WK,YK=N(()=>{"use strict";_u();wT();Oo();i8e="[object Arguments]",a8e="[object Array]",s8e="[object Boolean]",o8e="[object Date]",l8e="[object Error]",c8e="[object Function]",u8e="[object Map]",h8e="[object Number]",f8e="[object Object]",d8e="[object RegExp]",p8e="[object Set]",m8e="[object String]",g8e="[object WeakMap]",y8e="[object ArrayBuffer]",v8e="[object DataView]",x8e="[object Float32Array]",b8e="[object Float64Array]",T8e="[object Int8Array]",w8e="[object Int16Array]",k8e="[object Int32Array]",E8e="[object Uint8Array]",S8e="[object Uint8ClampedArray]",C8e="[object Uint16Array]",A8e="[object Uint32Array]",Gn={};Gn[x8e]=Gn[b8e]=Gn[T8e]=Gn[w8e]=Gn[k8e]=Gn[E8e]=Gn[S8e]=Gn[C8e]=Gn[A8e]=!0;Gn[i8e]=Gn[a8e]=Gn[y8e]=Gn[s8e]=Gn[v8e]=Gn[o8e]=Gn[l8e]=Gn[c8e]=Gn[u8e]=Gn[h8e]=Gn[f8e]=Gn[d8e]=Gn[p8e]=Gn[m8e]=Gn[g8e]=!1;o(_8e,"baseIsTypedArray");WK=_8e});function D8e(t){return function(e){return t(e)}}var Bo,Ud=N(()=>{"use strict";o(D8e,"baseUnary");Bo=D8e});var XK,h2,L8e,_L,R8e,Fo,f2=N(()=>{"use strict";pL();XK=typeof exports=="object"&&exports&&!exports.nodeType&&exports,h2=XK&&typeof module=="object"&&module&&!module.nodeType&&module,L8e=h2&&h2.exports===XK,_L=L8e&&uT.process,R8e=(function(){try{var t=h2&&h2.require&&h2.require("util").types;return t||_L&&_L.binding&&_L.binding("util")}catch{}})(),Fo=R8e});var jK,N8e,Uh,d2=N(()=>{"use strict";YK();Ud();f2();jK=Fo&&Fo.isTypedArray,N8e=jK?Bo(jK):WK,Uh=N8e});function M8e(t,e){if(!(e==="constructor"&&typeof t[e]=="function")&&e!="__proto__")return t[e]}var p2,DL=N(()=>{"use strict";o(M8e,"safeGet");p2=M8e});function P8e(t,e,r){var n=t[e];(!(O8e.call(t,e)&&Io(n,r))||r===void 0&&!(e in t))&&pc(t,e,r)}var I8e,O8e,gc,ym=N(()=>{"use strict";lm();zd();I8e=Object.prototype,O8e=I8e.hasOwnProperty;o(P8e,"assignValue");gc=P8e});function B8e(t,e,r,n){var i=!r;r||(r={});for(var a=-1,s=e.length;++a{"use strict";ym();lm();o(B8e,"copyObject");$o=B8e});function F8e(t,e){for(var r=-1,n=Array(t);++r{"use strict";o(F8e,"baseTimes");KK=F8e});function G8e(t,e){var r=typeof t;return e=e??$8e,!!e&&(r=="number"||r!="symbol"&&z8e.test(t))&&t>-1&&t%1==0&&t{"use strict";$8e=9007199254740991,z8e=/^(?:0|[1-9]\d*)$/;o(G8e,"isIndex");Hh=G8e});function H8e(t,e){var r=Bt(t),n=!r&&_l(t),i=!r&&!n&&Dl(t),a=!r&&!n&&!i&&Uh(t),s=r||n||i||a,l=s?KK(t.length,String):[],u=l.length;for(var h in t)(e||U8e.call(t,h))&&!(s&&(h=="length"||i&&(h=="offset"||h=="parent")||a&&(h=="buffer"||h=="byteLength"||h=="byteOffset")||Hh(h,u)))&&l.push(h);return l}var V8e,U8e,ET,LL=N(()=>{"use strict";QK();pm();Yn();gm();m2();d2();V8e=Object.prototype,U8e=V8e.hasOwnProperty;o(H8e,"arrayLikeKeys");ET=H8e});function q8e(t){var e=[];if(t!=null)for(var r in Object(t))e.push(r);return e}var ZK,JK=N(()=>{"use strict";o(q8e,"nativeKeysIn");ZK=q8e});function X8e(t){if(!Sn(t))return ZK(t);var e=mc(t),r=[];for(var n in t)n=="constructor"&&(e||!Y8e.call(t,n))||r.push(n);return r}var W8e,Y8e,eQ,tQ=N(()=>{"use strict";oo();dm();JK();W8e=Object.prototype,Y8e=W8e.hasOwnProperty;o(X8e,"baseKeysIn");eQ=X8e});function j8e(t){return fi(t)?ET(t,!0):eQ(t)}var Rs,qh=N(()=>{"use strict";LL();tQ();Po();o(j8e,"keysIn");Rs=j8e});function K8e(t){return $o(t,Rs(t))}var rQ,nQ=N(()=>{"use strict";Hd();qh();o(K8e,"toPlainObject");rQ=K8e});function Q8e(t,e,r,n,i,a,s){var l=p2(t,r),u=p2(e,r),h=s.get(u);if(h){u2(t,r,h);return}var f=a?a(l,u,r+"",t,e,s):void 0,d=f===void 0;if(d){var p=Bt(u),m=!p&&Dl(u),g=!p&&!m&&Uh(u);f=u,p||m||g?Bt(l)?f=l:Vd(l)?f=vT(l):m?(d=!1,f=mT(u,!0)):g?(d=!1,f=yT(u,!0)):f=[]:HK(u)||_l(u)?(f=l,_l(l)?f=rQ(l):(!Sn(l)||Si(l))&&(f=TT(u))):d=!1}d&&(s.set(u,f),i(f,u,n,a,s),s.delete(u)),u2(t,r,f)}var iQ,aQ=N(()=>{"use strict";bL();TL();kL();EL();CL();pm();Yn();kT();gm();i2();oo();qK();d2();DL();nQ();o(Q8e,"baseMergeDeep");iQ=Q8e});function sQ(t,e,r,n,i){t!==e&&cm(e,function(a,s){if(i||(i=new dc),Sn(a))iQ(t,e,s,r,sQ,n,i);else{var l=n?n(p2(t,s),a,s+"",t,e,i):void 0;l===void 0&&(l=a),u2(t,s,l)}},Rs)}var oQ,lQ=N(()=>{"use strict";c2();bL();pT();aQ();oo();qh();DL();o(sQ,"baseMerge");oQ=sQ});function Z8e(t){return t}var Qi,Ru=N(()=>{"use strict";o(Z8e,"identity");Qi=Z8e});function J8e(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 cQ,uQ=N(()=>{"use strict";o(J8e,"apply");cQ=J8e});function e_e(t,e,r){return e=hQ(e===void 0?t.length-1:e,0),function(){for(var n=arguments,i=-1,a=hQ(n.length-e,0),s=Array(a);++i{"use strict";uQ();hQ=Math.max;o(e_e,"overRest");ST=e_e});function t_e(t){return function(){return t}}var Ns,NL=N(()=>{"use strict";o(t_e,"constant");Ns=t_e});var r_e,fQ,dQ=N(()=>{"use strict";NL();xL();Ru();r_e=om?function(t,e){return om(t,"toString",{configurable:!0,enumerable:!1,value:Ns(e),writable:!0})}:Qi,fQ=r_e});function s_e(t){var e=0,r=0;return function(){var n=a_e(),i=i_e-(n-r);if(r=n,i>0){if(++e>=n_e)return arguments[0]}else e=0;return t.apply(void 0,arguments)}}var n_e,i_e,a_e,pQ,mQ=N(()=>{"use strict";n_e=800,i_e=16,a_e=Date.now;o(s_e,"shortOut");pQ=s_e});var o_e,CT,ML=N(()=>{"use strict";dQ();mQ();o_e=pQ(fQ),CT=o_e});function l_e(t,e){return CT(ST(t,e,Qi),t+"")}var yc,vm=N(()=>{"use strict";Ru();RL();ML();o(l_e,"baseRest");yc=l_e});function c_e(t,e,r){if(!Sn(r))return!1;var n=typeof e;return(n=="number"?fi(r)&&Hh(e,r.length):n=="string"&&e in r)?Io(r[e],t):!1}var lo,qd=N(()=>{"use strict";zd();Po();m2();oo();o(c_e,"isIterateeCall");lo=c_e});function u_e(t){return yc(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&&lo(r[0],r[1],s)&&(a=i<3?void 0:a,i=1),e=Object(e);++n{"use strict";vm();qd();o(u_e,"createAssigner");AT=u_e});var h_e,Wh,OL=N(()=>{"use strict";lQ();IL();h_e=AT(function(t,e,r){oQ(t,e,r)}),Wh=h_e});function FL(t,e){if(!t)return e;let r=`curve${t.charAt(0).toUpperCase()+t.slice(1)}`;return f_e[r]??e}function g_e(t,e){let r=t.trim();if(r)return e.securityLevel!=="loose"?(0,vQ.sanitizeUrl)(r):r}function TQ(t,e){return!t||!e?0:Math.sqrt(Math.pow(e.x-t.x,2)+Math.pow(e.y-t.y,2))}function v_e(t){let e,r=0;t.forEach(i=>{r+=TQ(i,e),e=i});let n=r/2;return $L(t,n)}function x_e(t){return t.length===1?t[0]:v_e(t)}function T_e(t,e,r){let n=structuredClone(r);X.info("our points",n),e!=="start_left"&&e!=="start_right"&&n.reverse();let i=25+t,a=$L(n,i),s=10+t*.5,l=Math.atan2(n[0].y-a.y,n[0].x-a.x),u={x:0,y:0};return e==="start_left"?(u.x=Math.sin(l+Math.PI)*s+(n[0].x+a.x)/2,u.y=-Math.cos(l+Math.PI)*s+(n[0].y+a.y)/2):e==="end_right"?(u.x=Math.sin(l-Math.PI)*s+(n[0].x+a.x)/2-5,u.y=-Math.cos(l-Math.PI)*s+(n[0].y+a.y)/2-5):e==="end_left"?(u.x=Math.sin(l)*s+(n[0].x+a.x)/2-5,u.y=-Math.cos(l)*s+(n[0].y+a.y)/2-5):(u.x=Math.sin(l)*s+(n[0].x+a.x)/2,u.y=-Math.cos(l)*s+(n[0].y+a.y)/2),u}function zL(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 w_e(t){let e="",r="0123456789abcdef",n=r.length;for(let i=0;iMath.round(parseFloat(a)).toString());return i.includes(r.toString())||i.includes(n.toString())}var vQ,BL,f_e,d_e,p_e,xQ,bQ,m_e,y_e,gQ,$L,b_e,yQ,GL,VL,k_e,E_e,UL,S_e,HL,PL,_T,C_e,A_e,vc,qt,wQ,Ji,xc,tr=N(()=>{"use strict";vQ=ja(tm(),1);yr();gr();S7();pt();vd();v0();vL();OL();F3();BL="\u200B",f_e={curveBasis:No,curveBasisClosed:K5,curveBasisOpen:Q5,curveBumpX:Vv,curveBumpY:Uv,curveBundle:tL,curveCardinalClosed:rL,curveCardinalOpen:iL,curveCardinal:Yv,curveCatmullRomClosed:sL,curveCatmullRomOpen:oL,curveCatmullRom:Kv,curveLinear:Cu,curveLinearClosed:rT,curveMonotoneX:Qv,curveMonotoneY:Zv,curveNatural:J0,curveStep:em,curveStepAfter:e2,curveStepBefore:Jv},d_e=/\s*(?:(\w+)(?=:):|(\w+))\s*(?:(\w+)|((?:(?!}%{2}).|\r?\n)*))?\s*(?:}%{2})?/gi,p_e=o(function(t,e){let r=xQ(t,/(?:init\b)|(?:initialize\b)/),n={};if(Array.isArray(r)){let s=r.map(l=>l.args);b0(s),n=Rn(n,[...s])}else n=r.args;if(!n)return;let i=_0(t,e),a="config";return n[a]!==void 0&&(i==="flowchart-v2"&&(i="flowchart"),n[i]=n[a],delete n[a]),n},"detectInit"),xQ=o(function(t,e=null){try{let r=new RegExp(`[%]{2}(?![{]${d_e.source})(?=[}][%]{2}).* -`,"ig");t=t.trim().replace(r,"").replace(/'/gm,'"'),X.debug(`Detecting diagram directive${e!==null?" type:"+e:""} based on the text:${t}`);let n,i=[];for(;(n=yd.exec(t))!==null;)if(n.index===yd.lastIndex&&yd.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 X.error(`ERROR: ${r.message} - Unable to parse directive type: '${e}' based on the text: '${t}'`),{type:void 0,args:null}}},"detectDirective"),bQ=o(function(t){return t.replace(yd,"")},"removeDirectives"),m_e=o(function(t,e){for(let[r,n]of e.entries())if(n.match(t))return r;return-1},"isSubstringInArray");o(FL,"interpolateToCurve");o(g_e,"formatUrl");y_e=o((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"),$L=o((t,e)=>{let r,n=e;for(let i of t){if(r){let a=TQ(i,r);if(a===0)return r;if(a=1)return{x:i.x,y:i.y};if(s>0&&s<1)return{x:gQ((1-s)*r.x+s*i.x,5),y:gQ((1-s)*r.y+s*i.y,5)}}}r=i}throw new Error("Could not find a suitable point for the given distance")},"calculatePoint"),b_e=o((t,e,r)=>{X.info(`our points ${JSON.stringify(e)}`),e[0]!==r&&(e=e.reverse());let i=$L(e,25),a=t?10:5,s=Math.atan2(e[0].y-i.y,e[0].x-i.x),l={x:0,y:0};return l.x=Math.sin(s)*a+(e[0].x+i.x)/2,l.y=-Math.cos(s)*a+(e[0].y+i.y)/2,l},"calcCardinalityPosition");o(T_e,"calcTerminalLabelPosition");o(zL,"getStylesFromArray");yQ=0,GL=o(()=>(yQ++,"id-"+Math.random().toString(36).substr(2,12)+"-"+yQ),"generateId");o(w_e,"makeRandomHex");VL=o(t=>w_e(t.length),"random"),k_e=o(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"),E_e=o(function(t,e){let r=e.text.replace(tt.lineBreakRegex," "),[,n]=vc(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"),UL=am((t,e,r)=>{if(!t||(r=Object.assign({fontSize:12,fontWeight:400,fontFamily:"Arial",joinWith:"
    "},r),tt.lineBreakRegex.test(t)))return t;let n=t.split(" ").filter(Boolean),i=[],a="";return n.forEach((s,l)=>{let u=Zi(`${s} `,r),h=Zi(a,r);if(u>e){let{hyphenatedStrings:p,remainingWord:m}=S_e(s,e,"-",r);i.push(a,...p),a=m}else h+u>=e?(i.push(a),a=s):a=[a,s].filter(Boolean).join(" ");l+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}`),S_e=am((t,e,r="-",n)=>{n=Object.assign({fontSize:12,fontWeight:400,fontFamily:"Arial",margin:0},n);let i=[...t],a=[],s="";return i.forEach((l,u)=>{let h=`${s}${l}`;if(Zi(h,n)>=e){let d=u+1,p=i.length===d,m=`${h}${r}`;a.push(p?h:m),s=""}else s=h}),{hyphenatedStrings:a,remainingWord:s}},(t,e,r="-",n)=>`${t}${e}${r}${n.fontSize}${n.fontWeight}${n.fontFamily}`);o(DT,"calculateTextHeight");o(Zi,"calculateTextWidth");HL=am((t,e)=>{let{fontSize:r=12,fontFamily:n="Arial",fontWeight:i=400}=e;if(!t)return{width:0,height:0};let[,a]=vc(r),s=["sans-serif",n],l=t.split(tt.lineBreakRegex),u=[],h=qe("body");if(!h.remove)return{width:0,height:0,lineHeight:0};let f=h.append("svg");for(let p of s){let m=0,g={width:0,height:0,lineHeight:0};for(let y of l){let v=k_e();v.text=y||BL;let x=E_e(f,v).style("font-size",a).style("font-weight",i).style("font-family",p),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)),m=Math.round(b.height),g.height+=m,g.lineHeight=Math.round(Math.max(g.lineHeight,m))}u.push(g)}f.remove();let d=isNaN(u[1].height)||isNaN(u[1].width)||isNaN(u[1].lineHeight)||u[0].height>u[1].height&&u[0].width>u[1].width&&u[0].lineHeight>u[1].lineHeight?0:1;return u[d]},(t,e)=>`${t}${e.fontSize}${e.fontWeight}${e.fontFamily}`),PL=class{constructor(e=!1,r){this.count=0;this.count=r?r.length:0,this.next=e?()=>this.count++:()=>Date.now()}static{o(this,"InitIDGenerator")}},C_e=o(function(t){return _T=_T||document.createElement("div"),t=escape(t).replace(/%26/g,"&").replace(/%23/g,"#").replace(/%3B/g,";"),_T.innerHTML=t,unescape(_T.textContent)},"entityDecode");o(qL,"isDetailedError");A_e=o((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"),vc=o(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");o(Vn,"cleanAndMerge");qt={assignWithDepth:Rn,wrapLabel:UL,calculateTextHeight:DT,calculateTextWidth:Zi,calculateTextDimensions:HL,cleanAndMerge:Vn,detectInit:p_e,detectDirective:xQ,isSubstringInArray:m_e,interpolateToCurve:FL,calcLabelPosition:x_e,calcCardinalityPosition:b_e,calcTerminalLabelPosition:T_e,formatUrl:g_e,getStylesFromArray:zL,generateId:GL,random:VL,runFunc:y_e,entityDecode:C_e,insertTitle:A_e,isLabelCoordinateInPath:__e,parseFontSize:vc,InitIDGenerator:PL},wQ=o(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"),Ji=o(function(t){return t.replace(/fl°°/g,"&#").replace(/fl°/g,"&").replace(/¶ß/g,";")},"decodeEntities"),xc=o((t,e,{counter:r=0,prefix:n,suffix:i},a)=>a||`${n?`${n}_`:""}${t}_${e}_${r}${i?`_${i}`:""}`,"getEdgeId");o(Cn,"handleUndefinedAttr");o(__e,"isLabelCoordinateInPath")});function Ll(t,e,r,n,i){if(!e[t].width)if(r)e[t].text=UL(e[t].text,i,n),e[t].textLines=e[t].text.split(tt.lineBreakRegex).length,e[t].width=i,e[t].height=DT(e[t].text,n);else{let a=e[t].text.split(tt.lineBreakRegex);e[t].textLines=a.length;let s=0;e[t].height=0,e[t].width=0;for(let l of a)e[t].width=Math.max(Zi(l,n),e[t].width),s=DT(l,n),e[t].height=e[t].height+s}}function AQ(t,e,r,n,i){let a=new MT(i);a.data.widthLimit=r.data.widthLimit/Math.min(WL,n.length);for(let[s,l]of n.entries()){let u=0;l.image={width:0,height:0,Y:0},l.sprite&&(l.image.width=48,l.image.height=48,l.image.Y=u,u=l.image.Y+l.image.height);let h=l.wrap&&Wt.wrap,f=LT(Wt);if(f.fontSize=f.fontSize+2,f.fontWeight="bold",Ll("label",l,h,f,a.data.widthLimit),l.label.Y=u+8,u=l.label.Y+l.label.height,l.type&&l.type.text!==""){l.type.text="["+l.type.text+"]";let g=LT(Wt);Ll("type",l,h,g,a.data.widthLimit),l.type.Y=u+5,u=l.type.Y+l.type.height}if(l.descr&&l.descr.text!==""){let g=LT(Wt);g.fontSize=g.fontSize-2,Ll("descr",l,h,g,a.data.widthLimit),l.descr.Y=u+20,u=l.descr.Y+l.descr.height}if(s==0||s%WL===0){let g=r.data.startx+Wt.diagramMarginX,y=r.data.stopy+Wt.diagramMarginY+u;a.setData(g,g,y,y)}else{let g=a.data.stopx!==a.data.startx?a.data.stopx+Wt.diagramMarginX:a.data.startx,y=a.data.starty;a.setData(g,g,y,y)}a.name=l.alias;let d=i.db.getC4ShapeArray(l.alias),p=i.db.getC4ShapeKeys(l.alias);p.length>0&&CQ(a,t,d,p),e=l.alias;let m=i.db.getBoundaries(e);m.length>0&&AQ(t,e,a,m,i),l.alias!=="global"&&SQ(t,l,a),r.data.stopy=Math.max(a.data.stopy+Wt.c4ShapeMargin,r.data.stopy),r.data.stopx=Math.max(a.data.stopx+Wt.c4ShapeMargin,r.data.stopx),RT=Math.max(RT,r.data.stopx),NT=Math.max(NT,r.data.stopy)}}var RT,NT,EQ,WL,Wt,MT,YL,g2,LT,D_e,SQ,CQ,Ms,kQ,L_e,R_e,N_e,XL,_Q=N(()=>{"use strict";yr();kj();pt();RA();gr();GA();Xt();v0();tr();Ei();RT=0,NT=0,EQ=4,WL=2;tv.yy=ov;Wt={},MT=class{static{o(this,"Bounds")}constructor(e){this.name="",this.data={},this.data.startx=void 0,this.data.stopx=void 0,this.data.starty=void 0,this.data.stopy=void 0,this.data.widthLimit=void 0,this.nextData={},this.nextData.startx=void 0,this.nextData.stopx=void 0,this.nextData.starty=void 0,this.nextData.stopy=void 0,this.nextData.cnt=0,YL(e.db.getConfig())}setData(e,r,n,i){this.nextData.startx=this.data.startx=e,this.nextData.stopx=this.data.stopx=r,this.nextData.starty=this.data.starty=n,this.nextData.stopy=this.data.stopy=i}updateVal(e,r,n,i){e[r]===void 0?e[r]=n:e[r]=i(n,e[r])}insert(e){this.nextData.cnt=this.nextData.cnt+1;let r=this.nextData.startx===this.nextData.stopx?this.nextData.stopx+e.margin:this.nextData.stopx+e.margin*2,n=r+e.width,i=this.nextData.starty+e.margin*2,a=i+e.height;(r>=this.data.widthLimit||n>=this.data.widthLimit||this.nextData.cnt>EQ)&&(r=this.nextData.startx+e.margin+Wt.nextLinePaddingX,i=this.nextData.stopy+e.margin*2,this.nextData.stopx=n=r+e.width,this.nextData.starty=this.nextData.stopy,this.nextData.stopy=a=i+e.height,this.nextData.cnt=1),e.x=r,e.y=i,this.updateVal(this.data,"startx",r,Math.min),this.updateVal(this.data,"starty",i,Math.min),this.updateVal(this.data,"stopx",n,Math.max),this.updateVal(this.data,"stopy",a,Math.max),this.updateVal(this.nextData,"startx",r,Math.min),this.updateVal(this.nextData,"starty",i,Math.min),this.updateVal(this.nextData,"stopx",n,Math.max),this.updateVal(this.nextData,"stopy",a,Math.max)}init(e){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},YL(e.db.getConfig())}bumpLastMargin(e){this.data.stopx+=e,this.data.stopy+=e}},YL=o(function(t){Rn(Wt,t),t.fontFamily&&(Wt.personFontFamily=Wt.systemFontFamily=Wt.messageFontFamily=t.fontFamily),t.fontSize&&(Wt.personFontSize=Wt.systemFontSize=Wt.messageFontSize=t.fontSize),t.fontWeight&&(Wt.personFontWeight=Wt.systemFontWeight=Wt.messageFontWeight=t.fontWeight)},"setConf"),g2=o((t,e)=>({fontFamily:t[e+"FontFamily"],fontSize:t[e+"FontSize"],fontWeight:t[e+"FontWeight"]}),"c4ShapeFont"),LT=o(t=>({fontFamily:t.boundaryFontFamily,fontSize:t.boundaryFontSize,fontWeight:t.boundaryFontWeight}),"boundaryFont"),D_e=o(t=>({fontFamily:t.messageFontFamily,fontSize:t.messageFontSize,fontWeight:t.messageFontWeight}),"messageFont");o(Ll,"calcC4ShapeTextWH");SQ=o(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=Wt.c4ShapeMargin-35;let n=e.wrap&&Wt.wrap,i=LT(Wt);i.fontSize=i.fontSize+2,i.fontWeight="bold";let a=Zi(e.label.text,i);Ll("label",e,n,i,a),Al.drawBoundary(t,e,Wt)},"drawBoundary"),CQ=o(function(t,e,r,n){let i=0;for(let a of n){i=0;let s=r[a],l=g2(Wt,s.typeC4Shape.text);switch(l.fontSize=l.fontSize-2,s.typeC4Shape.width=Zi("\xAB"+s.typeC4Shape.text+"\xBB",l),s.typeC4Shape.height=l.fontSize+2,s.typeC4Shape.Y=Wt.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 u=s.wrap&&Wt.wrap,h=Wt.width-Wt.c4ShapePadding*2,f=g2(Wt,s.typeC4Shape.text);if(f.fontSize=f.fontSize+2,f.fontWeight="bold",Ll("label",s,u,f,h),s.label.Y=i+8,i=s.label.Y+s.label.height,s.type&&s.type.text!==""){s.type.text="["+s.type.text+"]";let m=g2(Wt,s.typeC4Shape.text);Ll("type",s,u,m,h),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 m=g2(Wt,s.techn.text);Ll("techn",s,u,m,h),s.techn.Y=i+5,i=s.techn.Y+s.techn.height}let d=i,p=s.label.width;if(s.descr&&s.descr.text!==""){let m=g2(Wt,s.typeC4Shape.text);Ll("descr",s,u,m,h),s.descr.Y=i+20,i=s.descr.Y+s.descr.height,p=Math.max(s.label.width,s.descr.width),d=i-s.descr.textLines*5}p=p+Wt.c4ShapePadding,s.width=Math.max(s.width||Wt.width,p,Wt.width),s.height=Math.max(s.height||Wt.height,d,Wt.height),s.margin=s.margin||Wt.c4ShapeMargin,t.insert(s),Al.drawC4Shape(e,s,Wt)}t.bumpLastMargin(Wt.c4ShapeMargin)},"drawC4ShapeArray"),Ms=class{static{o(this,"Point")}constructor(e,r){this.x=e,this.y=r}},kQ=o(function(t,e){let r=t.x,n=t.y,i=e.x,a=e.y,s=r+t.width/2,l=n+t.height/2,u=Math.abs(r-i),h=Math.abs(n-a),f=h/u,d=t.height/t.width,p=null;return n==a&&ri?p=new Ms(r,l):r==i&&na&&(p=new Ms(s,n)),r>i&&n=f?p=new Ms(r,l+f*t.width/2):p=new Ms(s-u/h*t.height/2,n+t.height):r=f?p=new Ms(r+t.width,l+f*t.width/2):p=new Ms(s+u/h*t.height/2,n+t.height):ra?d>=f?p=new Ms(r+t.width,l-f*t.width/2):p=new Ms(s+t.height/2*u/h,n):r>i&&n>a&&(d>=f?p=new Ms(r,l-t.width/2*f):p=new Ms(s-t.height/2*u/h,n)),p},"getIntersectPoint"),L_e=o(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=kQ(t,r);r.x=t.x+t.width/2,r.y=t.y+t.height/2;let i=kQ(e,r);return{startPoint:n,endPoint:i}},"getIntersectPoints"),R_e=o(function(t,e,r,n){let i=0;for(let a of e){i=i+1;let s=a.wrap&&Wt.wrap,l=D_e(Wt);n.db.getC4Type()==="C4Dynamic"&&(a.label.text=i+": "+a.label.text);let h=Zi(a.label.text,l);Ll("label",a,s,l,h),a.techn&&a.techn.text!==""&&(h=Zi(a.techn.text,l),Ll("techn",a,s,l,h)),a.descr&&a.descr.text!==""&&(h=Zi(a.descr.text,l),Ll("descr",a,s,l,h));let f=r(a.from),d=r(a.to),p=L_e(f,d);a.startPoint=p.startPoint,a.endPoint=p.endPoint}Al.drawRels(t,e,Wt)},"drawRels");o(AQ,"drawInsideBoundary");N_e=o(function(t,e,r,n){Wt=ge().c4;let i=ge().securityLevel,a;i==="sandbox"&&(a=qe("#i"+e));let s=i==="sandbox"?qe(a.nodes()[0].contentDocument.body):qe("body"),l=n.db;n.db.setWrap(Wt.wrap),EQ=l.getC4ShapeInRow(),WL=l.getC4BoundaryInRow(),X.debug(`C:${JSON.stringify(Wt,null,2)}`);let u=i==="sandbox"?s.select(`[id="${e}"]`):qe(`[id="${e}"]`);Al.insertComputerIcon(u),Al.insertDatabaseIcon(u),Al.insertClockIcon(u);let h=new MT(n);h.setData(Wt.diagramMarginX,Wt.diagramMarginX,Wt.diagramMarginY,Wt.diagramMarginY),h.data.widthLimit=screen.availWidth,RT=Wt.diagramMarginX,NT=Wt.diagramMarginY;let f=n.db.getTitle(),d=n.db.getBoundaries("");AQ(u,"",h,d,n),Al.insertArrowHead(u),Al.insertArrowEnd(u),Al.insertArrowCrossHead(u),Al.insertArrowFilledHead(u),R_e(u,n.db.getRels(),n.db.getC4Shape,n),h.data.stopx=RT,h.data.stopy=NT;let p=h.data,g=p.stopy-p.starty+2*Wt.diagramMarginY,v=p.stopx-p.startx+2*Wt.diagramMarginX;f&&u.append("text").text(f).attr("x",(p.stopx-p.startx)/2-4*Wt.diagramMarginX).attr("y",p.starty+Wt.diagramMarginY),mn(u,g,v,Wt.useMaxWidth);let x=f?60:0;u.attr("viewBox",p.startx-Wt.diagramMarginX+" -"+(Wt.diagramMarginY+x)+" "+v+" "+(g+x)),X.debug("models:",p)},"draw"),XL={drawPersonOrSystemArray:CQ,drawBoundary:SQ,setConf:YL,draw:N_e}});var M_e,DQ,LQ=N(()=>{"use strict";M_e=o(t=>`.person { - stroke: ${t.personBorder}; - fill: ${t.personBkg}; - } -`,"getStyles"),DQ=M_e});var RQ={};dr(RQ,{diagram:()=>I_e});var I_e,NQ=N(()=>{"use strict";RA();GA();_Q();LQ();I_e={parser:nH,db:ov,renderer:XL,styles:DQ,init:o(({c4:t,wrap:e})=>{XL.setConf(t),ov.setWrap(e)},"init")}});function jQ(t){return typeof t>"u"||t===null}function F_e(t){return typeof t=="object"&&t!==null}function $_e(t){return Array.isArray(t)?t:jQ(t)?[]:[t]}function z_e(t,e){var r,n,i,a;if(e)for(a=Object.keys(e),r=0,n=a.length;rl&&(a=" ... ",e=n-l+a.length),r-n>l&&(s=" ...",r=n+l-s.length),{str:a+t.slice(e,r).replace(/\t/g,"\u2192")+s,pos:n-e+a.length}}function KL(t,e){return Pi.repeat(" ",e-t.length)+t}function j_e(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 l="",u,h,f=Math.min(t.line+e.linesAfter,i.length).toString().length,d=e.maxLength-(e.indent+f+3);for(u=1;u<=e.linesBefore&&!(s-u<0);u++)h=jL(t.buffer,n[s-u],i[s-u],t.position-(n[s]-n[s-u]),d),l=Pi.repeat(" ",e.indent)+KL((t.line-u+1).toString(),f)+" | "+h.str+` -`+l;for(h=jL(t.buffer,n[s],i[s],t.position,d),l+=Pi.repeat(" ",e.indent)+KL((t.line+1).toString(),f)+" | "+h.str+` -`,l+=Pi.repeat("-",e.indent+f+3+h.pos)+`^ -`,u=1;u<=e.linesAfter&&!(s+u>=i.length);u++)h=jL(t.buffer,n[s+u],i[s+u],t.position-(n[s]-n[s+u]),d),l+=Pi.repeat(" ",e.indent)+KL((t.line+u+1).toString(),f)+" | "+h.str+` -`;return l.replace(/\n$/,"")}function J_e(t){var e={};return t!==null&&Object.keys(t).forEach(function(r){t[r].forEach(function(n){e[String(n)]=r})}),e}function eDe(t,e){if(e=e||{},Object.keys(e).forEach(function(r){if(Q_e.indexOf(r)===-1)throw new Is('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=J_e(e.styleAliases||null),Z_e.indexOf(this.kind)===-1)throw new Is('Unknown kind "'+this.kind+'" is specified for "'+t+'" YAML type.')}function IQ(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 tDe(){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(o(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 CDe(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(Pi.isNegativeZero(t))return"-0.0";return r=t.toString(10),SDe.test(r)?r.replace("e",".e"):r}function ADe(t){return Object.prototype.toString.call(t)==="[object Number]"&&(t%1!==0||Pi.isNegativeZero(t))}function LDe(t){return t===null?!1:ZQ.exec(t)!==null||JQ.exec(t)!==null}function RDe(t){var e,r,n,i,a,s,l,u=0,h=null,f,d,p;if(e=ZQ.exec(t),e===null&&(e=JQ.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],l=+e[6],e[7]){for(u=e[7].slice(0,3);u.length<3;)u+="0";u=+u}return e[9]&&(f=+e[10],d=+(e[11]||0),h=(f*60+d)*6e4,e[9]==="-"&&(h=-h)),p=new Date(Date.UTC(r,n,i,a,s,l,u)),h&&p.setTime(p.getTime()-h),p}function NDe(t){return t.toISOString()}function IDe(t){return t==="<<"||t===null}function PDe(t){if(t===null)return!1;var e,r,n=0,i=t.length,a=n9;for(r=0;r64)){if(e<0)return!1;n+=6}return n%8===0}function BDe(t){var e,r,n=t.replace(/[\r\n=]/g,""),i=n.length,a=n9,s=0,l=[];for(e=0;e>16&255),l.push(s>>8&255),l.push(s&255)),s=s<<6|a.indexOf(n.charAt(e));return r=i%4*6,r===0?(l.push(s>>16&255),l.push(s>>8&255),l.push(s&255)):r===18?(l.push(s>>10&255),l.push(s>>2&255)):r===12&&l.push(s>>4&255),new Uint8Array(l)}function FDe(t){var e="",r=0,n,i,a=t.length,s=n9;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 $De(t){return Object.prototype.toString.call(t)==="[object Uint8Array]"}function UDe(t){if(t===null)return!0;var e=[],r,n,i,a,s,l=t;for(r=0,n=l.length;r>10)+55296,(t-65536&1023)+56320)}function lLe(t,e){this.input=t,this.filename=e.filename||null,this.schema=e.schema||eZ,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 oZ(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=K_e(r),new Is(e,r)}function Zt(t,e){throw oZ(t,e)}function PT(t,e){t.onWarning&&t.onWarning.call(null,oZ(t,e))}function Yh(t,e,r,n){var i,a,s,l;if(e1&&(t.result+=Pi.repeat(` -`,e-1))}function cLe(t,e,r){var n,i,a,s,l,u,h,f,d=t.kind,p=t.result,m;if(m=t.input.charCodeAt(t.position),Os(m)||bm(m)||m===35||m===38||m===42||m===33||m===124||m===62||m===39||m===34||m===37||m===64||m===96||(m===63||m===45)&&(i=t.input.charCodeAt(t.position+1),Os(i)||r&&bm(i)))return!1;for(t.kind="scalar",t.result="",a=s=t.position,l=!1;m!==0;){if(m===58){if(i=t.input.charCodeAt(t.position+1),Os(i)||r&&bm(i))break}else if(m===35){if(n=t.input.charCodeAt(t.position-1),Os(n))break}else{if(t.position===t.lineStart&&$T(t)||r&&bm(m))break;if(bc(m))if(u=t.line,h=t.lineStart,f=t.lineIndent,Ci(t,!1,-1),t.lineIndent>=e){l=!0,m=t.input.charCodeAt(t.position);continue}else{t.position=s,t.line=u,t.lineStart=h,t.lineIndent=f;break}}l&&(Yh(t,a,s,!1),a9(t,t.line-u),a=s=t.position,l=!1),Yd(m)||(s=t.position+1),m=t.input.charCodeAt(++t.position)}return Yh(t,a,s,!1),t.result?!0:(t.kind=d,t.result=p,!1)}function uLe(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(Yh(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 bc(r)?(Yh(t,n,i,!0),a9(t,Ci(t,!1,e)),n=i=t.position):t.position===t.lineStart&&$T(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 hLe(t,e){var r,n,i,a,s,l;if(l=t.input.charCodeAt(t.position),l!==34)return!1;for(t.kind="scalar",t.result="",t.position++,r=n=t.position;(l=t.input.charCodeAt(t.position))!==0;){if(l===34)return Yh(t,r,t.position,!0),t.position++,!0;if(l===92){if(Yh(t,r,t.position,!0),l=t.input.charCodeAt(++t.position),bc(l))Ci(t,!1,e);else if(l<256&&aZ[l])t.result+=sZ[l],t.position++;else if((s=aLe(l))>0){for(i=s,a=0;i>0;i--)l=t.input.charCodeAt(++t.position),(s=iLe(l))>=0?a=(a<<4)+s:Zt(t,"expected hexadecimal character");t.result+=oLe(a),t.position++}else Zt(t,"unknown escape sequence");r=n=t.position}else bc(l)?(Yh(t,r,n,!0),a9(t,Ci(t,!1,e)),r=n=t.position):t.position===t.lineStart&&$T(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 fLe(t,e){var r=!0,n,i,a,s=t.tag,l,u=t.anchor,h,f,d,p,m,g=Object.create(null),y,v,x,b;if(b=t.input.charCodeAt(t.position),b===91)f=93,m=!1,l=[];else if(b===123)f=125,m=!0,l={};else return!1;for(t.anchor!==null&&(t.anchorMap[t.anchor]=l),b=t.input.charCodeAt(++t.position);b!==0;){if(Ci(t,!0,e),b=t.input.charCodeAt(t.position),b===f)return t.position++,t.tag=s,t.anchor=u,t.kind=m?"mapping":"sequence",t.result=l,!0;r?b===44&&Zt(t,"expected the node content, but found ','"):Zt(t,"missed comma between flow collection entries"),v=y=x=null,d=p=!1,b===63&&(h=t.input.charCodeAt(t.position+1),Os(h)&&(d=p=!0,t.position++,Ci(t,!0,e))),n=t.line,i=t.lineStart,a=t.position,wm(t,e,IT,!1,!0),v=t.tag,y=t.result,Ci(t,!0,e),b=t.input.charCodeAt(t.position),(p||t.line===n)&&b===58&&(d=!0,b=t.input.charCodeAt(++t.position),Ci(t,!0,e),wm(t,e,IT,!1,!0),x=t.result),m?Tm(t,l,g,v,y,x,n,i,a):d?l.push(Tm(t,null,g,v,y,x,n,i,a)):l.push(y),Ci(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 dLe(t,e){var r,n,i=QL,a=!1,s=!1,l=e,u=0,h=!1,f,d;if(d=t.input.charCodeAt(t.position),d===124)n=!1;else if(d===62)n=!0;else return!1;for(t.kind="scalar",t.result="";d!==0;)if(d=t.input.charCodeAt(++t.position),d===43||d===45)QL===i?i=d===43?OQ:eLe:Zt(t,"repeat of a chomping mode identifier");else if((f=sLe(d))>=0)f===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"):(l=e+f-1,s=!0);else break;if(Yd(d)){do d=t.input.charCodeAt(++t.position);while(Yd(d));if(d===35)do d=t.input.charCodeAt(++t.position);while(!bc(d)&&d!==0)}for(;d!==0;){for(i9(t),t.lineIndent=0,d=t.input.charCodeAt(t.position);(!s||t.lineIndentl&&(l=t.lineIndent),bc(d)){u++;continue}if(t.lineIndente)&&u!==0)Zt(t,"bad indentation of a sequence entry");else if(t.lineIndente)&&(v&&(s=t.line,l=t.lineStart,u=t.position),wm(t,e,OT,!0,i)&&(v?g=t.result:y=t.result),v||(Tm(t,d,p,m,g,y,s,l,u),m=g=y=null),Ci(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?u=1:t.lineIndent===e?u=0:t.lineIndente?u=1:t.lineIndent===e?u=0:t.lineIndent tag; it should be "scalar", not "'+t.kind+'"'),d=0,p=t.implicitTypes.length;d"),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||f}function vLe(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&&(Ci(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&&!Os(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(;Yd(s);)s=t.input.charCodeAt(++t.position);if(s===35){do s=t.input.charCodeAt(++t.position);while(s!==0&&!bc(s));break}if(bc(s))break;for(r=t.position;s!==0&&!Os(s);)s=t.input.charCodeAt(++t.position);i.push(t.input.slice(r,t.position))}s!==0&&i9(t),Xh.call(FQ,n)?FQ[n](t,n,i):PT(t,'unknown document directive "'+n+'"')}if(Ci(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,Ci(t,!0,-1)):a&&Zt(t,"directives end mark is expected"),wm(t,t.lineIndent-1,OT,!1,!0),Ci(t,!0,-1),t.checkLineBreaks&&rLe.test(t.input.slice(e,t.position))&&PT(t,"non-ASCII line breaks are interpreted as content"),t.documents.push(t.result),t.position===t.lineStart&&$T(t)){t.input.charCodeAt(t.position)===46&&(t.position+=3,Ci(t,!0,-1));return}if(t.position"u"&&(r=e,e=null);var n=lZ(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 yZ(t){var e=/^\n* /;return e.test(t)}function XLe(t,e,r,n,i,a,s,l){var u,h=0,f=null,d=!1,p=!1,m=n!==-1,g=-1,y=WLe(y2(t,0))&&YLe(y2(t,t.length-1));if(e||s)for(u=0;u=65536?u+=2:u++){if(h=y2(t,u),!T2(h))return xm;y=y&&UQ(h,f,l),f=h}else{for(u=0;u=65536?u+=2:u++){if(h=y2(t,u),h===x2)d=!0,m&&(p=p||u-g-1>n&&t[g+1]!==" ",g=u);else if(!T2(h))return xm;y=y&&UQ(h,f,l),f=h}p=p||m&&u-g-1>n&&t[g+1]!==" "}return!d&&!p?y&&!s&&!i(t)?vZ:a===b2?xm:t9:r>9&&yZ(t)?xm:s?a===b2?xm:t9:p?bZ:xZ}function jLe(t,e,r,n,i){t.dump=(function(){if(e.length===0)return t.quotingType===b2?'""':"''";if(!t.noCompatMode&&($Le.indexOf(e)!==-1||zLe.test(e)))return t.quotingType===b2?'"'+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),l=n||t.flowLevel>-1&&r>=t.flowLevel;function u(h){return qLe(t,h)}switch(o(u,"testAmbiguity"),XLe(e,l,t.indent,s,u,t.quotingType,t.forceQuotes&&!n,i)){case vZ:return e;case t9:return"'"+e.replace(/'/g,"''")+"'";case xZ:return"|"+HQ(e,t.indent)+qQ(GQ(e,a));case bZ:return">"+HQ(e,t.indent)+qQ(GQ(KLe(e,s),a));case xm:return'"'+QLe(e)+'"';default:throw new Is("impossible error: invalid scalar style")}})()}function HQ(t,e){var r=yZ(t)?String(e):"",n=t[t.length-1]===` -`,i=n&&(t[t.length-2]===` -`||t===` -`),a=i?"+":n?"":"-";return r+a+` -`}function qQ(t){return t[t.length-1]===` -`?t.slice(0,-1):t}function KLe(t,e){for(var r=/(\n+)([^\n]*)/g,n=(function(){var h=t.indexOf(` -`);return h=h!==-1?h:t.length,r.lastIndex=h,WQ(t.slice(0,h),e)})(),i=t[0]===` -`||t[0]===" ",a,s;s=r.exec(t);){var l=s[1],u=s[2];a=u[0]===" ",n+=l+(!i&&!a&&u!==""?` -`:"")+WQ(u,e),i=a}return n}function WQ(t,e){if(t===""||t[0]===" ")return t;for(var r=/ [^ ]/g,n,i=0,a,s=0,l=0,u="";n=r.exec(t);)l=n.index,l-i>e&&(a=s>i?s:l,u+=` -`+t.slice(i,a),i=a+1),s=l;return u+=` -`,t.length-i>e&&s>i?u+=t.slice(i,s)+` -`+t.slice(s+1):u+=t.slice(i),u.slice(1)}function QLe(t){for(var e="",r=0,n,i=0;i=65536?i+=2:i++)r=y2(t,i),n=Ia[r],!n&&T2(r)?(e+=t[i],r>=65536&&(e+=t[i+1])):e+=n||VLe(r);return e}function ZLe(t,e,r){var n="",i=t.tag,a,s,l;for(a=0,s=r.length;a"u"&&Nu(t,e,null,!1,!1))&&(n!==""&&(n+=","+(t.condenseFlow?"":" ")),n+=t.dump);t.tag=i,t.dump="["+n+"]"}function YQ(t,e,r,n){var i="",a=t.tag,s,l,u;for(s=0,l=r.length;s"u"&&Nu(t,e+1,null,!0,!0,!1,!0))&&((!n||i!=="")&&(i+=e9(t,e)),t.dump&&x2===t.dump.charCodeAt(0)?i+="-":i+="- ",i+=t.dump);t.tag=a,t.dump=i||"[]"}function JLe(t,e,r){var n="",i=t.tag,a=Object.keys(r),s,l,u,h,f;for(s=0,l=a.length;s1024&&(f+="? "),f+=t.dump+(t.condenseFlow?'"':"")+":"+(t.condenseFlow?"":" "),Nu(t,e,h,!1,!1)&&(f+=t.dump,n+=f));t.tag=i,t.dump="{"+n+"}"}function e9e(t,e,r,n){var i="",a=t.tag,s=Object.keys(r),l,u,h,f,d,p;if(t.sortKeys===!0)s.sort();else if(typeof t.sortKeys=="function")s.sort(t.sortKeys);else if(t.sortKeys)throw new Is("sortKeys must be a boolean or a function");for(l=0,u=s.length;l1024,d&&(t.dump&&x2===t.dump.charCodeAt(0)?p+="?":p+="? "),p+=t.dump,d&&(p+=e9(t,e)),Nu(t,e+1,f,!0,d)&&(t.dump&&x2===t.dump.charCodeAt(0)?p+=":":p+=": ",p+=t.dump,i+=p));t.tag=a,t.dump=i||"{}"}function XQ(t,e,r){var n,i,a,s,l,u;for(i=r?t.explicitTypes:t.implicitTypes,a=0,s=i.length;a tag resolver accepts not "'+u+'" style');t.dump=n}return!0}return!1}function Nu(t,e,r,n,i,a,s){t.tag=null,t.dump=r,XQ(t,r,!1)||XQ(t,r,!0);var l=uZ.call(t.dump),u=n,h;n&&(n=t.flowLevel<0||t.flowLevel>e);var f=l==="[object Object]"||l==="[object Array]",d,p;if(f&&(d=t.duplicates.indexOf(r),p=d!==-1),(t.tag!==null&&t.tag!=="?"||p||t.indent!==2&&e>0)&&(i=!1),p&&t.usedDuplicates[d])t.dump="*ref_"+d;else{if(f&&p&&!t.usedDuplicates[d]&&(t.usedDuplicates[d]=!0),l==="[object Object]")n&&Object.keys(t.dump).length!==0?(e9e(t,e,t.dump,i),p&&(t.dump="&ref_"+d+t.dump)):(JLe(t,e,t.dump),p&&(t.dump="&ref_"+d+" "+t.dump));else if(l==="[object Array]")n&&t.dump.length!==0?(t.noArrayIndent&&!s&&e>0?YQ(t,e-1,t.dump,i):YQ(t,e,t.dump,i),p&&(t.dump="&ref_"+d+t.dump)):(ZLe(t,e,t.dump),p&&(t.dump="&ref_"+d+" "+t.dump));else if(l==="[object String]")t.tag!=="?"&&jLe(t,t.dump,e,a,u);else{if(l==="[object Undefined]")return!1;if(t.skipInvalid)return!1;throw new Is("unacceptable kind of an object to dump "+l)}t.tag!==null&&t.tag!=="?"&&(h=encodeURI(t.tag[0]==="!"?t.tag.slice(1):t.tag).replace(/!/g,"%21"),t.tag[0]==="!"?h="!"+h:h.slice(0,18)==="tag:yaml.org,2002:"?h="!!"+h.slice(18):h="!<"+h+">",t.dump=h+" "+t.dump)}return!0}function t9e(t,e){var r=[],n=[],i,a;for(r9(t,r,n),i=0,a=n.length;i{"use strict";o(jQ,"isNothing");o(F_e,"isObject");o($_e,"toArray");o(z_e,"extend");o(G_e,"repeat");o(V_e,"isNegativeZero");U_e=jQ,H_e=F_e,q_e=$_e,W_e=G_e,Y_e=V_e,X_e=z_e,Pi={isNothing:U_e,isObject:H_e,toArray:q_e,repeat:W_e,isNegativeZero:Y_e,extend:X_e};o(KQ,"formatError");o(v2,"YAMLException$1");v2.prototype=Object.create(Error.prototype);v2.prototype.constructor=v2;v2.prototype.toString=o(function(e){return this.name+": "+KQ(this,e)},"toString");Is=v2;o(jL,"getLine");o(KL,"padStart");o(j_e,"makeSnippet");K_e=j_e,Q_e=["kind","multi","resolve","construct","instanceOf","predicate","represent","representName","defaultStyle","styleAliases"],Z_e=["scalar","sequence","mapping"];o(J_e,"compileStyleAliases");o(eDe,"Type$1");Ma=eDe;o(IQ,"compileList");o(tDe,"compileMap");o(ZL,"Schema$1");ZL.prototype.extend=o(function(e){var r=[],n=[];if(e instanceof Ma)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 Is("Schema.extend argument should be a Type, [ Type ], or a schema definition ({ implicit: [...], explicit: [...] })");r.forEach(function(a){if(!(a instanceof Ma))throw new Is("Specified list of YAML types (or a single Type object) contains a non-Type object.");if(a.loadKind&&a.loadKind!=="scalar")throw new Is("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 Is("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 Ma))throw new Is("Specified list of YAML types (or a single Type object) contains a non-Type object.")});var i=Object.create(ZL.prototype);return i.implicit=(this.implicit||[]).concat(r),i.explicit=(this.explicit||[]).concat(n),i.compiledImplicit=IQ(i,"implicit"),i.compiledExplicit=IQ(i,"explicit"),i.compiledTypeMap=tDe(i.compiledImplicit,i.compiledExplicit),i},"extend");rDe=ZL,nDe=new Ma("tag:yaml.org,2002:str",{kind:"scalar",construct:o(function(t){return t!==null?t:""},"construct")}),iDe=new Ma("tag:yaml.org,2002:seq",{kind:"sequence",construct:o(function(t){return t!==null?t:[]},"construct")}),aDe=new Ma("tag:yaml.org,2002:map",{kind:"mapping",construct:o(function(t){return t!==null?t:{}},"construct")}),sDe=new rDe({explicit:[nDe,iDe,aDe]});o(oDe,"resolveYamlNull");o(lDe,"constructYamlNull");o(cDe,"isNull");uDe=new Ma("tag:yaml.org,2002:null",{kind:"scalar",resolve:oDe,construct:lDe,predicate:cDe,represent:{canonical:o(function(){return"~"},"canonical"),lowercase:o(function(){return"null"},"lowercase"),uppercase:o(function(){return"NULL"},"uppercase"),camelcase:o(function(){return"Null"},"camelcase"),empty:o(function(){return""},"empty")},defaultStyle:"lowercase"});o(hDe,"resolveYamlBoolean");o(fDe,"constructYamlBoolean");o(dDe,"isBoolean");pDe=new Ma("tag:yaml.org,2002:bool",{kind:"scalar",resolve:hDe,construct:fDe,predicate:dDe,represent:{lowercase:o(function(t){return t?"true":"false"},"lowercase"),uppercase:o(function(t){return t?"TRUE":"FALSE"},"uppercase"),camelcase:o(function(t){return t?"True":"False"},"camelcase")},defaultStyle:"lowercase"});o(mDe,"isHexCode");o(gDe,"isOctCode");o(yDe,"isDecCode");o(vDe,"resolveYamlInteger");o(xDe,"constructYamlInteger");o(bDe,"isInteger");TDe=new Ma("tag:yaml.org,2002:int",{kind:"scalar",resolve:vDe,construct:xDe,predicate:bDe,represent:{binary:o(function(t){return t>=0?"0b"+t.toString(2):"-0b"+t.toString(2).slice(1)},"binary"),octal:o(function(t){return t>=0?"0o"+t.toString(8):"-0o"+t.toString(8).slice(1)},"octal"),decimal:o(function(t){return t.toString(10)},"decimal"),hexadecimal:o(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"]}}),wDe=new RegExp("^(?:[-+]?(?:[0-9][0-9_]*)(?:\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?|\\.[0-9_]+(?:[eE][-+]?[0-9]+)?|[-+]?\\.(?:inf|Inf|INF)|\\.(?:nan|NaN|NAN))$");o(kDe,"resolveYamlFloat");o(EDe,"constructYamlFloat");SDe=/^[-+]?[0-9]+e/;o(CDe,"representYamlFloat");o(ADe,"isFloat");_De=new Ma("tag:yaml.org,2002:float",{kind:"scalar",resolve:kDe,construct:EDe,predicate:ADe,represent:CDe,defaultStyle:"lowercase"}),QQ=sDe.extend({implicit:[uDe,pDe,TDe,_De]}),DDe=QQ,ZQ=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9])-([0-9][0-9])$"),JQ=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]))?))?$");o(LDe,"resolveYamlTimestamp");o(RDe,"constructYamlTimestamp");o(NDe,"representYamlTimestamp");MDe=new Ma("tag:yaml.org,2002:timestamp",{kind:"scalar",resolve:LDe,construct:RDe,instanceOf:Date,represent:NDe});o(IDe,"resolveYamlMerge");ODe=new Ma("tag:yaml.org,2002:merge",{kind:"scalar",resolve:IDe}),n9=`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/= -\r`;o(PDe,"resolveYamlBinary");o(BDe,"constructYamlBinary");o(FDe,"representYamlBinary");o($De,"isBinary");zDe=new Ma("tag:yaml.org,2002:binary",{kind:"scalar",resolve:PDe,construct:BDe,predicate:$De,represent:FDe}),GDe=Object.prototype.hasOwnProperty,VDe=Object.prototype.toString;o(UDe,"resolveYamlOmap");o(HDe,"constructYamlOmap");qDe=new Ma("tag:yaml.org,2002:omap",{kind:"sequence",resolve:UDe,construct:HDe}),WDe=Object.prototype.toString;o(YDe,"resolveYamlPairs");o(XDe,"constructYamlPairs");jDe=new Ma("tag:yaml.org,2002:pairs",{kind:"sequence",resolve:YDe,construct:XDe}),KDe=Object.prototype.hasOwnProperty;o(QDe,"resolveYamlSet");o(ZDe,"constructYamlSet");JDe=new Ma("tag:yaml.org,2002:set",{kind:"mapping",resolve:QDe,construct:ZDe}),eZ=DDe.extend({implicit:[MDe,ODe],explicit:[zDe,qDe,jDe,JDe]}),Xh=Object.prototype.hasOwnProperty,IT=1,tZ=2,rZ=3,OT=4,QL=1,eLe=2,OQ=3,tLe=/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F-\x84\x86-\x9F\uFFFE\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/,rLe=/[\x85\u2028\u2029]/,nLe=/[,\[\]\{\}]/,nZ=/^(?:!|!!|![a-z\-]+!)$/i,iZ=/^(?:!|[^,\[\]\{\}])(?:%[0-9a-f]{2}|[0-9a-z\-#;\/\?:@&=\+\$,_\.!~\*'\(\)\[\]])*$/i;o(PQ,"_class");o(bc,"is_EOL");o(Yd,"is_WHITE_SPACE");o(Os,"is_WS_OR_EOL");o(bm,"is_FLOW_INDICATOR");o(iLe,"fromHexCode");o(aLe,"escapedHexLen");o(sLe,"fromDecimalCode");o(BQ,"simpleEscapeSequence");o(oLe,"charFromCodepoint");aZ=new Array(256),sZ=new Array(256);for(Wd=0;Wd<256;Wd++)aZ[Wd]=BQ(Wd)?1:0,sZ[Wd]=BQ(Wd);o(lLe,"State$1");o(oZ,"generateError");o(Zt,"throwError");o(PT,"throwWarning");FQ={YAML:o(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&&PT(e,"unsupported YAML version of the document")},"handleYamlDirective"),TAG:o(function(e,r,n){var i,a;n.length!==2&&Zt(e,"TAG directive accepts exactly two arguments"),i=n[0],a=n[1],nZ.test(i)||Zt(e,"ill-formed tag handle (first argument) of the TAG directive"),Xh.call(e.tagMap,i)&&Zt(e,'there is a previously declared suffix for "'+i+'" tag handle'),iZ.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")};o(Yh,"captureSegment");o($Q,"mergeMappings");o(Tm,"storeMappingPair");o(i9,"readLineBreak");o(Ci,"skipSeparationSpace");o($T,"testDocumentSeparator");o(a9,"writeFoldedLines");o(cLe,"readPlainScalar");o(uLe,"readSingleQuotedScalar");o(hLe,"readDoubleQuotedScalar");o(fLe,"readFlowCollection");o(dLe,"readBlockScalar");o(zQ,"readBlockSequence");o(pLe,"readBlockMapping");o(mLe,"readTagProperty");o(gLe,"readAnchorProperty");o(yLe,"readAlias");o(wm,"composeNode");o(vLe,"readDocument");o(lZ,"loadDocuments");o(xLe,"loadAll$1");o(bLe,"load$1");TLe=xLe,wLe=bLe,cZ={loadAll:TLe,load:wLe},uZ=Object.prototype.toString,hZ=Object.prototype.hasOwnProperty,s9=65279,kLe=9,x2=10,ELe=13,SLe=32,CLe=33,ALe=34,JL=35,_Le=37,DLe=38,LLe=39,RLe=42,fZ=44,NLe=45,BT=58,MLe=61,ILe=62,OLe=63,PLe=64,dZ=91,pZ=93,BLe=96,mZ=123,FLe=124,gZ=125,Ia={};Ia[0]="\\0";Ia[7]="\\a";Ia[8]="\\b";Ia[9]="\\t";Ia[10]="\\n";Ia[11]="\\v";Ia[12]="\\f";Ia[13]="\\r";Ia[27]="\\e";Ia[34]='\\"';Ia[92]="\\\\";Ia[133]="\\N";Ia[160]="\\_";Ia[8232]="\\L";Ia[8233]="\\P";$Le=["y","Y","yes","Yes","YES","on","On","ON","n","N","no","No","NO","off","Off","OFF"],zLe=/^[-+]?[0-9_]+(?::[0-9_]+)+(?:\.[0-9_]*)?$/;o(GLe,"compileStyleMap");o(VLe,"encodeHex");ULe=1,b2=2;o(HLe,"State");o(GQ,"indentString");o(e9,"generateNextLine");o(qLe,"testImplicitResolving");o(FT,"isWhitespace");o(T2,"isPrintable");o(VQ,"isNsCharOrWhitespace");o(UQ,"isPlainSafe");o(WLe,"isPlainSafeFirst");o(YLe,"isPlainSafeLast");o(y2,"codePointAt");o(yZ,"needIndentIndicator");vZ=1,t9=2,xZ=3,bZ=4,xm=5;o(XLe,"chooseScalarStyle");o(jLe,"writeScalar");o(HQ,"blockHeader");o(qQ,"dropEndingNewline");o(KLe,"foldString");o(WQ,"foldLine");o(QLe,"escapeString");o(ZLe,"writeFlowSequence");o(YQ,"writeBlockSequence");o(JLe,"writeFlowMapping");o(e9e,"writeBlockMapping");o(XQ,"detectType");o(Nu,"writeNode");o(t9e,"getDuplicateReferences");o(r9,"inspectNode");o(r9e,"dump$1");n9e=r9e,i9e={dump:n9e};o(o9,"renamed");jh=QQ,Kh=cZ.load,A6t=cZ.loadAll,_6t=i9e.dump,D6t=o9("safeLoad","load"),L6t=o9("safeLoadAll","loadAll"),R6t=o9("safeDump","dump")});function h9(){return{async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null}}function CZ(t){jd=t}function on(t,e=""){let r=typeof t=="string"?t:t.source,n={replace:o((i,a)=>{let s=typeof a=="string"?a:a.source;return s=s.replace(as.caret,"$1"),r=r.replace(i,s),n},"replace"),getRegex:o(()=>new RegExp(r,e),"getRegex")};return n}function Tc(t,e){if(e){if(as.escapeTest.test(t))return t.replace(as.escapeReplace,wZ)}else if(as.escapeTestNoEncode.test(t))return t.replace(as.escapeReplaceNoEncode,wZ);return t}function kZ(t){try{t=encodeURI(t).replace(as.percentDecode,"%")}catch{return null}return t}function EZ(t,e){let r=t.replace(as.findPipe,(a,s,l)=>{let u=!1,h=s;for(;--h>=0&&l[h]==="\\";)u=!u;return u?"|":" |"}),n=r.split(as.splitPipe),i=0;if(n[0].trim()||n.shift(),n.length>0&&!n.at(-1)?.trim()&&n.pop(),e)if(n.length>e)n.splice(e);else for(;n.length0?-2:-1}function SZ(t,e,r,n,i){let a=e.href,s=e.title||null,l=t[1].replace(i.other.outputLinkReplace,"$1");n.state.inLink=!0;let u={type:t[0].charAt(0)==="!"?"image":"link",raw:r,href:a,title:s,text:l,tokens:n.inlineTokens(l)};return n.state.inLink=!1,u}function $9e(t,e,r){let n=t.match(r.other.indentCodeCompensation);if(n===null)return e;let i=n[1];return e.split(` -`).map(a=>{let s=a.match(r.other.beginningSpace);if(s===null)return a;let[l]=s;return l.length>=i.length?a.slice(i.length):a}).join(` -`)}function nn(t,e){return Xd.parse(t,e)}var jd,C2,as,a9e,s9e,o9e,A2,l9e,f9,AZ,_Z,c9e,d9,u9e,p9,h9e,f9e,qT,m9,d9e,DZ,p9e,g9,TZ,m9e,g9e,y9e,v9e,LZ,x9e,WT,y9,RZ,b9e,NZ,T9e,w9e,k9e,MZ,E9e,S9e,IZ,C9e,A9e,_9e,D9e,L9e,R9e,N9e,VT,M9e,OZ,PZ,I9e,v9,O9e,l9,P9e,GT,k2,B9e,wZ,UT,Mu,HT,x9,Iu,S2,z9e,Xd,M6t,I6t,O6t,P6t,B6t,F6t,$6t,BZ=N(()=>{"use strict";o(h9,"L");jd=h9();o(CZ,"G");C2={exec:o(()=>null,"exec")};o(on,"h");as={codeRemoveIndent:/^(?: {1,4}| {0,3}\t)/gm,outputLinkReplace:/\\([\[\]])/g,indentCodeCompensation:/^(\s+)(?:```)/,beginningSpace:/^\s+/,endingHash:/#$/,startingSpaceChar:/^ /,endingSpaceChar:/ $/,nonSpaceChar:/[^ ]/,newLineCharGlobal:/\n/g,tabCharGlobal:/\t/g,multipleSpaceGlobal:/\s+/g,blankLine:/^[ \t]*$/,doubleBlankLine:/\n[ \t]*\n[ \t]*$/,blockquoteStart:/^ {0,3}>/,blockquoteSetextReplace:/\n {0,3}((?:=+|-+) *)(?=\n|$)/g,blockquoteSetextReplace2:/^ {0,3}>[ \t]?/gm,listReplaceTabs:/^\t+/,listReplaceNesting:/^ {1,4}(?=( {4})*[^ ])/g,listIsTask:/^\[[ xX]\] /,listReplaceTask:/^\[[ xX]\] +/,anyLine:/\n.*\n/,hrefBrackets:/^<(.*)>$/,tableDelimiter:/[:|]/,tableAlignChars:/^\||\| *$/g,tableRowBlankLine:/\n[ \t]*$/,tableAlignRight:/^ *-+: *$/,tableAlignCenter:/^ *:-+: *$/,tableAlignLeft:/^ *:-+ *$/,startATag:/^
    /i,startPreScriptTag:/^<(pre|code|kbd|script)(\s|>)/i,endPreScriptTag:/^<\/(pre|code|kbd|script)(\s|>)/i,startAngleBracket:/^$/,pedanticHrefTitle:/^([^'"]*[^\s])\s+(['"])(.*)\2/,unicodeAlphaNumeric:/[\p{L}\p{N}]/u,escapeTest:/[&<>"']/,escapeReplace:/[&<>"']/g,escapeTestNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/,escapeReplaceNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/g,unescapeTest:/&(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/ig,caret:/(^|[^\[])\^/g,percentDecode:/%25/g,findPipe:/\|/g,splitPipe:/ \|/,slashPipe:/\\\|/g,carriageReturn:/\r\n|\r/g,spaceLine:/^ +$/gm,notSpaceStart:/^\S*/,endingNewline:/\n$/,listItemRegex:o(t=>new RegExp(`^( {0,3}${t})((?:[ ][^\\n]*)?(?:\\n|$))`),"listItemRegex"),nextBulletRegex:o(t=>new RegExp(`^ {0,${Math.min(3,t-1)}}(?:[*+-]|\\d{1,9}[.)])((?:[ ][^\\n]*)?(?:\\n|$))`),"nextBulletRegex"),hrRegex:o(t=>new RegExp(`^ {0,${Math.min(3,t-1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)`),"hrRegex"),fencesBeginRegex:o(t=>new RegExp(`^ {0,${Math.min(3,t-1)}}(?:\`\`\`|~~~)`),"fencesBeginRegex"),headingBeginRegex:o(t=>new RegExp(`^ {0,${Math.min(3,t-1)}}#`),"headingBeginRegex"),htmlBeginRegex:o(t=>new RegExp(`^ {0,${Math.min(3,t-1)}}<(?:[a-z].*>|!--)`,"i"),"htmlBeginRegex")},a9e=/^(?:[ \t]*(?:\n|$))+/,s9e=/^((?: {4}| {0,3}\t)[^\n]+(?:\n(?:[ \t]*(?:\n|$))*)?)+/,o9e=/^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/,A2=/^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,l9e=/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,f9=/(?:[*+-]|\d{1,9}[.)])/,AZ=/^(?!bull |blockCode|fences|blockquote|heading|html|table)((?:.|\n(?!\s*?\n|bull |blockCode|fences|blockquote|heading|html|table))+?)\n {0,3}(=+|-+) *(?:\n+|$)/,_Z=on(AZ).replace(/bull/g,f9).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).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/).replace(/\|table/g,"").getRegex(),c9e=on(AZ).replace(/bull/g,f9).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).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/).replace(/table/g,/ {0,3}\|?(?:[:\- ]*\|)+[\:\- ]*\n/).getRegex(),d9=/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/,u9e=/^[^\n]+/,p9=/(?!\s*\])(?:\\[\s\S]|[^\[\]\\])+/,h9e=on(/^ {0,3}\[(label)\]: *(?:\n[ \t]*)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n[ \t]*)?| *\n[ \t]*)(title))? *(?:\n+|$)/).replace("label",p9).replace("title",/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/).getRegex(),f9e=on(/^( {0,3}bull)([ \t][^\n]+?)?(?:\n|$)/).replace(/bull/g,f9).getRegex(),qT="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",m9=/|$))/,d9e=on("^ {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",m9).replace("tag",qT).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),DZ=on(d9).replace("hr",A2).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",qT).getRegex(),p9e=on(/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/).replace("paragraph",DZ).getRegex(),g9={blockquote:p9e,code:s9e,def:h9e,fences:o9e,heading:l9e,hr:A2,html:d9e,lheading:_Z,list:f9e,newline:a9e,paragraph:DZ,table:C2,text:u9e},TZ=on("^ *([^\\n ].*)\\n {0,3}((?:\\| *)?:?-+:? *(?:\\| *:?-+:? *)*(?:\\| *)?)(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)").replace("hr",A2).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("blockquote"," {0,3}>").replace("code","(?: {4}| {0,3} )[^\\n]").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",qT).getRegex(),m9e={...g9,lheading:c9e,table:TZ,paragraph:on(d9).replace("hr",A2).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("table",TZ).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",qT).getRegex()},g9e={...g9,html:on(`^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+? *(?:\\n{2,}|\\s*$)|\\s]*)*?/?> *(?:\\n{2,}|\\s*$))`).replace("comment",m9).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:C2,lheading:/^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/,paragraph:on(d9).replace("hr",A2).replace("heading",` *#{1,6} *[^ -]`).replace("lheading",_Z).replace("|table","").replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").replace("|tag","").getRegex()},y9e=/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,v9e=/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,LZ=/^( {2,}|\\)\n(?!\s*$)/,x9e=/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\]*?>/g,MZ=/^(?:\*+(?:((?!\*)punct)|[^\s*]))|^_+(?:((?!_)punct)|([^\s_]))/,E9e=on(MZ,"u").replace(/punct/g,WT).getRegex(),S9e=on(MZ,"u").replace(/punct/g,NZ).getRegex(),IZ="^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)punct(\\*+)(?=[\\s]|$)|notPunctSpace(\\*+)(?!\\*)(?=punctSpace|$)|(?!\\*)punctSpace(\\*+)(?=notPunctSpace)|[\\s](\\*+)(?!\\*)(?=punct)|(?!\\*)punct(\\*+)(?!\\*)(?=punct)|notPunctSpace(\\*+)(?=notPunctSpace)",C9e=on(IZ,"gu").replace(/notPunctSpace/g,RZ).replace(/punctSpace/g,y9).replace(/punct/g,WT).getRegex(),A9e=on(IZ,"gu").replace(/notPunctSpace/g,w9e).replace(/punctSpace/g,T9e).replace(/punct/g,NZ).getRegex(),_9e=on("^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)punctSpace(_+)(?=notPunctSpace)|[\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)","gu").replace(/notPunctSpace/g,RZ).replace(/punctSpace/g,y9).replace(/punct/g,WT).getRegex(),D9e=on(/\\(punct)/,"gu").replace(/punct/g,WT).getRegex(),L9e=on(/^<(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(),R9e=on(m9).replace("(?:-->|$)","-->").getRegex(),N9e=on("^comment|^|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^|^").replace("comment",R9e).replace("attribute",/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/).getRegex(),VT=/(?:\[(?:\\[\s\S]|[^\[\]\\])*\]|\\[\s\S]|`[^`]*`|[^\[\]\\`])*?/,M9e=on(/^!?\[(label)\]\(\s*(href)(?:(?:[ \t]*(?:\n[ \t]*)?)(title))?\s*\)/).replace("label",VT).replace("href",/<(?:\\.|[^\n<>\\])+>|[^ \t\n\x00-\x1f]*/).replace("title",/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/).getRegex(),OZ=on(/^!?\[(label)\]\[(ref)\]/).replace("label",VT).replace("ref",p9).getRegex(),PZ=on(/^!?\[(ref)\](?:\[\])?/).replace("ref",p9).getRegex(),I9e=on("reflink|nolink(?!\\()","g").replace("reflink",OZ).replace("nolink",PZ).getRegex(),v9={_backpedal:C2,anyPunctuation:D9e,autolink:L9e,blockSkip:k9e,br:LZ,code:v9e,del:C2,emStrongLDelim:E9e,emStrongRDelimAst:C9e,emStrongRDelimUnd:_9e,escape:y9e,link:M9e,nolink:PZ,punctuation:b9e,reflink:OZ,reflinkSearch:I9e,tag:N9e,text:x9e,url:C2},O9e={...v9,link:on(/^!?\[(label)\]\((.*?)\)/).replace("label",VT).getRegex(),reflink:on(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label",VT).getRegex()},l9={...v9,emStrongRDelimAst:A9e,emStrongLDelim:S9e,url:on(/^((?: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\S]|[^\s~\\]))\1(?=[^~]|$)/,text:/^([`~]+|[^`~])(?:(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\":">",'"':""","'":"'"},wZ=o(t=>B9e[t],"ke");o(Tc,"w");o(kZ,"J");o(EZ,"V");o(E2,"z");o(F9e,"ge");o(SZ,"fe");o($9e,"Je");UT=class{static{o(this,"y")}options;rules;lexer;constructor(t){this.options=t||jd}space(t){let e=this.rules.block.newline.exec(t);if(e&&e[0].length>0)return{type:"space",raw:e[0]}}code(t){let e=this.rules.block.code.exec(t);if(e){let r=e[0].replace(this.rules.other.codeRemoveIndent,"");return{type:"code",raw:e[0],codeBlockStyle:"indented",text:this.options.pedantic?r:E2(r,` -`)}}}fences(t){let e=this.rules.block.fences.exec(t);if(e){let r=e[0],n=$9e(r,e[3]||"",this.rules);return{type:"code",raw:r,lang:e[2]?e[2].trim().replace(this.rules.inline.anyPunctuation,"$1"):e[2],text:n}}}heading(t){let e=this.rules.block.heading.exec(t);if(e){let r=e[2].trim();if(this.rules.other.endingHash.test(r)){let n=E2(r,"#");(this.options.pedantic||!n||this.rules.other.endingSpaceChar.test(n))&&(r=n.trim())}return{type:"heading",raw:e[0],depth:e[1].length,text:r,tokens:this.lexer.inline(r)}}}hr(t){let e=this.rules.block.hr.exec(t);if(e)return{type:"hr",raw:E2(e[0],` -`)}}blockquote(t){let e=this.rules.block.blockquote.exec(t);if(e){let r=E2(e[0],` -`).split(` -`),n="",i="",a=[];for(;r.length>0;){let s=!1,l=[],u;for(u=0;u1,i={type:"list",raw:"",ordered:n,start:n?+r.slice(0,-1):"",loose:!1,items:[]};r=n?`\\d{1,9}\\${r.slice(-1)}`:`\\${r}`,this.options.pedantic&&(r=n?r:"[*+-]");let a=this.rules.other.listItemRegex(r),s=!1;for(;t;){let u=!1,h="",f="";if(!(e=a.exec(t))||this.rules.block.hr.test(t))break;h=e[0],t=t.substring(h.length);let d=e[2].split(` -`,1)[0].replace(this.rules.other.listReplaceTabs,x=>" ".repeat(3*x.length)),p=t.split(` -`,1)[0],m=!d.trim(),g=0;if(this.options.pedantic?(g=2,f=d.trimStart()):m?g=e[1].length+1:(g=e[2].search(this.rules.other.nonSpaceChar),g=g>4?1:g,f=d.slice(g),g+=e[1].length),m&&this.rules.other.blankLine.test(p)&&(h+=p+` -`,t=t.substring(p.length+1),u=!0),!u){let x=this.rules.other.nextBulletRegex(g),b=this.rules.other.hrRegex(g),T=this.rules.other.fencesBeginRegex(g),S=this.rules.other.headingBeginRegex(g),w=this.rules.other.htmlBeginRegex(g);for(;t;){let k=t.split(` -`,1)[0],A;if(p=k,this.options.pedantic?(p=p.replace(this.rules.other.listReplaceNesting," "),A=p):A=p.replace(this.rules.other.tabCharGlobal," "),T.test(p)||S.test(p)||w.test(p)||x.test(p)||b.test(p))break;if(A.search(this.rules.other.nonSpaceChar)>=g||!p.trim())f+=` -`+A.slice(g);else{if(m||d.replace(this.rules.other.tabCharGlobal," ").search(this.rules.other.nonSpaceChar)>=4||T.test(d)||S.test(d)||b.test(d))break;f+=` -`+p}!m&&!p.trim()&&(m=!0),h+=k+` -`,t=t.substring(k.length+1),d=A.slice(g)}}i.loose||(s?i.loose=!0:this.rules.other.doubleBlankLine.test(h)&&(s=!0));let y=null,v;this.options.gfm&&(y=this.rules.other.listIsTask.exec(f),y&&(v=y[0]!=="[ ] ",f=f.replace(this.rules.other.listReplaceTask,""))),i.items.push({type:"list_item",raw:h,task:!!y,checked:v,loose:!1,text:f,tokens:[]}),i.raw+=h}let l=i.items.at(-1);if(l)l.raw=l.raw.trimEnd(),l.text=l.text.trimEnd();else return;i.raw=i.raw.trimEnd();for(let u=0;ud.type==="space"),f=h.length>0&&h.some(d=>this.rules.other.anyLine.test(d.raw));i.loose=f}if(i.loose)for(let u=0;u({text:l,tokens:this.lexer.inline(l),header:!1,align:a.align[u]})));return a}}lheading(t){let e=this.rules.block.lheading.exec(t);if(e)return{type:"heading",raw:e[0],depth:e[2].charAt(0)==="="?1:2,text:e[1],tokens:this.lexer.inline(e[1])}}paragraph(t){let e=this.rules.block.paragraph.exec(t);if(e){let r=e[1].charAt(e[1].length-1)===` -`?e[1].slice(0,-1):e[1];return{type:"paragraph",raw:e[0],text:r,tokens:this.lexer.inline(r)}}}text(t){let e=this.rules.block.text.exec(t);if(e)return{type:"text",raw:e[0],text:e[0],tokens:this.lexer.inline(e[0])}}escape(t){let e=this.rules.inline.escape.exec(t);if(e)return{type:"escape",raw:e[0],text:e[1]}}tag(t){let e=this.rules.inline.tag.exec(t);if(e)return!this.lexer.state.inLink&&this.rules.other.startATag.test(e[0])?this.lexer.state.inLink=!0:this.lexer.state.inLink&&this.rules.other.endATag.test(e[0])&&(this.lexer.state.inLink=!1),!this.lexer.state.inRawBlock&&this.rules.other.startPreScriptTag.test(e[0])?this.lexer.state.inRawBlock=!0:this.lexer.state.inRawBlock&&this.rules.other.endPreScriptTag.test(e[0])&&(this.lexer.state.inRawBlock=!1),{type:"html",raw:e[0],inLink:this.lexer.state.inLink,inRawBlock:this.lexer.state.inRawBlock,block:!1,text:e[0]}}link(t){let e=this.rules.inline.link.exec(t);if(e){let r=e[2].trim();if(!this.options.pedantic&&this.rules.other.startAngleBracket.test(r)){if(!this.rules.other.endAngleBracket.test(r))return;let a=E2(r.slice(0,-1),"\\");if((r.length-a.length)%2===0)return}else{let a=F9e(e[2],"()");if(a===-2)return;if(a>-1){let s=(e[0].indexOf("!")===0?5:4)+e[1].length+a;e[2]=e[2].substring(0,a),e[0]=e[0].substring(0,s).trim(),e[3]=""}}let n=e[2],i="";if(this.options.pedantic){let a=this.rules.other.pedanticHrefTitle.exec(n);a&&(n=a[1],i=a[3])}else i=e[3]?e[3].slice(1,-1):"";return n=n.trim(),this.rules.other.startAngleBracket.test(n)&&(this.options.pedantic&&!this.rules.other.endAngleBracket.test(r)?n=n.slice(1):n=n.slice(1,-1)),SZ(e,{href:n&&n.replace(this.rules.inline.anyPunctuation,"$1"),title:i&&i.replace(this.rules.inline.anyPunctuation,"$1")},e[0],this.lexer,this.rules)}}reflink(t,e){let r;if((r=this.rules.inline.reflink.exec(t))||(r=this.rules.inline.nolink.exec(t))){let n=(r[2]||r[1]).replace(this.rules.other.multipleSpaceGlobal," "),i=e[n.toLowerCase()];if(!i){let a=r[0].charAt(0);return{type:"text",raw:a,text:a}}return SZ(r,i,r[0],this.lexer,this.rules)}}emStrong(t,e,r=""){let n=this.rules.inline.emStrongLDelim.exec(t);if(!(!n||n[3]&&r.match(this.rules.other.unicodeAlphaNumeric))&&(!(n[1]||n[2])||!r||this.rules.inline.punctuation.exec(r))){let i=[...n[0]].length-1,a,s,l=i,u=0,h=n[0][0]==="*"?this.rules.inline.emStrongRDelimAst:this.rules.inline.emStrongRDelimUnd;for(h.lastIndex=0,e=e.slice(-1*t.length+i);(n=h.exec(e))!=null;){if(a=n[1]||n[2]||n[3]||n[4]||n[5]||n[6],!a)continue;if(s=[...a].length,n[3]||n[4]){l+=s;continue}else if((n[5]||n[6])&&i%3&&!((i+s)%3)){u+=s;continue}if(l-=s,l>0)continue;s=Math.min(s,s+l+u);let f=[...n[0]][0].length,d=t.slice(0,i+n.index+f+s);if(Math.min(i,s)%2){let m=d.slice(1,-1);return{type:"em",raw:d,text:m,tokens:this.lexer.inlineTokens(m)}}let p=d.slice(2,-2);return{type:"strong",raw:d,text:p,tokens:this.lexer.inlineTokens(p)}}}}codespan(t){let e=this.rules.inline.code.exec(t);if(e){let r=e[2].replace(this.rules.other.newLineCharGlobal," "),n=this.rules.other.nonSpaceChar.test(r),i=this.rules.other.startingSpaceChar.test(r)&&this.rules.other.endingSpaceChar.test(r);return n&&i&&(r=r.substring(1,r.length-1)),{type:"codespan",raw:e[0],text:r}}}br(t){let e=this.rules.inline.br.exec(t);if(e)return{type:"br",raw:e[0]}}del(t){let e=this.rules.inline.del.exec(t);if(e)return{type:"del",raw:e[0],text:e[2],tokens:this.lexer.inlineTokens(e[2])}}autolink(t){let e=this.rules.inline.autolink.exec(t);if(e){let r,n;return e[2]==="@"?(r=e[1],n="mailto:"+r):(r=e[1],n=r),{type:"link",raw:e[0],text:r,href:n,tokens:[{type:"text",raw:r,text:r}]}}}url(t){let e;if(e=this.rules.inline.url.exec(t)){let r,n;if(e[2]==="@")r=e[0],n="mailto:"+r;else{let i;do i=e[0],e[0]=this.rules.inline._backpedal.exec(e[0])?.[0]??"";while(i!==e[0]);r=e[0],e[1]==="www."?n="http://"+e[0]:n=e[0]}return{type:"link",raw:e[0],text:r,href:n,tokens:[{type:"text",raw:r,text:r}]}}}inlineText(t){let e=this.rules.inline.text.exec(t);if(e){let r=this.lexer.state.inRawBlock;return{type:"text",raw:e[0],text:e[0],escaped:r}}}},Mu=class c9{static{o(this,"l")}tokens;options;state;tokenizer;inlineQueue;constructor(e){this.tokens=[],this.tokens.links=Object.create(null),this.options=e||jd,this.options.tokenizer=this.options.tokenizer||new UT,this.tokenizer=this.options.tokenizer,this.tokenizer.options=this.options,this.tokenizer.lexer=this,this.inlineQueue=[],this.state={inLink:!1,inRawBlock:!1,top:!0};let r={other:as,block:GT.normal,inline:k2.normal};this.options.pedantic?(r.block=GT.pedantic,r.inline=k2.pedantic):this.options.gfm&&(r.block=GT.gfm,this.options.breaks?r.inline=k2.breaks:r.inline=k2.gfm),this.tokenizer.rules=r}static get rules(){return{block:GT,inline:k2}}static lex(e,r){return new c9(r).lex(e)}static lexInline(e,r){return new c9(r).inlineTokens(e)}lex(e){e=e.replace(as.carriageReturn,` -`),this.blockTokens(e,this.tokens);for(let r=0;r(i=s.call({lexer:this},e,r))?(e=e.substring(i.raw.length),r.push(i),!0):!1))continue;if(i=this.tokenizer.space(e)){e=e.substring(i.raw.length);let s=r.at(-1);i.raw.length===1&&s!==void 0?s.raw+=` -`:r.push(i);continue}if(i=this.tokenizer.code(e)){e=e.substring(i.raw.length);let s=r.at(-1);s?.type==="paragraph"||s?.type==="text"?(s.raw+=(s.raw.endsWith(` -`)?"":` -`)+i.raw,s.text+=` -`+i.text,this.inlineQueue.at(-1).src=s.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);let s=r.at(-1);s?.type==="paragraph"||s?.type==="text"?(s.raw+=(s.raw.endsWith(` -`)?"":` -`)+i.raw,s.text+=` -`+i.raw,this.inlineQueue.at(-1).src=s.text):this.tokens.links[i.tag]||(this.tokens.links[i.tag]={href:i.href,title:i.title},r.push(i));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}let a=e;if(this.options.extensions?.startBlock){let s=1/0,l=e.slice(1),u;this.options.extensions.startBlock.forEach(h=>{u=h.call({lexer:this},l),typeof u=="number"&&u>=0&&(s=Math.min(s,u))}),s<1/0&&s>=0&&(a=e.substring(0,s+1))}if(this.state.top&&(i=this.tokenizer.paragraph(a))){let s=r.at(-1);n&&s?.type==="paragraph"?(s.raw+=(s.raw.endsWith(` -`)?"":` -`)+i.raw,s.text+=` -`+i.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=s.text):r.push(i),n=a.length!==e.length,e=e.substring(i.raw.length);continue}if(i=this.tokenizer.text(e)){e=e.substring(i.raw.length);let s=r.at(-1);s?.type==="text"?(s.raw+=(s.raw.endsWith(` -`)?"":` -`)+i.raw,s.text+=` -`+i.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=s.text):r.push(i);continue}if(e){let s="Infinite loop on byte: "+e.charCodeAt(0);if(this.options.silent){console.error(s);break}else throw new Error(s)}}return this.state.top=!0,r}inline(e,r=[]){return this.inlineQueue.push({src:e,tokens:r}),r}inlineTokens(e,r=[]){let n=e,i=null;if(this.tokens.links){let l=Object.keys(this.tokens.links);if(l.length>0)for(;(i=this.tokenizer.rules.inline.reflinkSearch.exec(n))!=null;)l.includes(i[0].slice(i[0].lastIndexOf("[")+1,-1))&&(n=n.slice(0,i.index)+"["+"a".repeat(i[0].length-2)+"]"+n.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex))}for(;(i=this.tokenizer.rules.inline.anyPunctuation.exec(n))!=null;)n=n.slice(0,i.index)+"++"+n.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);for(;(i=this.tokenizer.rules.inline.blockSkip.exec(n))!=null;)n=n.slice(0,i.index)+"["+"a".repeat(i[0].length-2)+"]"+n.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);n=this.options.hooks?.emStrongMask?.call({lexer:this},n)??n;let a=!1,s="";for(;e;){a||(s=""),a=!1;let l;if(this.options.extensions?.inline?.some(h=>(l=h.call({lexer:this},e,r))?(e=e.substring(l.raw.length),r.push(l),!0):!1))continue;if(l=this.tokenizer.escape(e)){e=e.substring(l.raw.length),r.push(l);continue}if(l=this.tokenizer.tag(e)){e=e.substring(l.raw.length),r.push(l);continue}if(l=this.tokenizer.link(e)){e=e.substring(l.raw.length),r.push(l);continue}if(l=this.tokenizer.reflink(e,this.tokens.links)){e=e.substring(l.raw.length);let h=r.at(-1);l.type==="text"&&h?.type==="text"?(h.raw+=l.raw,h.text+=l.text):r.push(l);continue}if(l=this.tokenizer.emStrong(e,n,s)){e=e.substring(l.raw.length),r.push(l);continue}if(l=this.tokenizer.codespan(e)){e=e.substring(l.raw.length),r.push(l);continue}if(l=this.tokenizer.br(e)){e=e.substring(l.raw.length),r.push(l);continue}if(l=this.tokenizer.del(e)){e=e.substring(l.raw.length),r.push(l);continue}if(l=this.tokenizer.autolink(e)){e=e.substring(l.raw.length),r.push(l);continue}if(!this.state.inLink&&(l=this.tokenizer.url(e))){e=e.substring(l.raw.length),r.push(l);continue}let u=e;if(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&&(u=e.substring(0,h+1))}if(l=this.tokenizer.inlineText(u)){e=e.substring(l.raw.length),l.raw.slice(-1)!=="_"&&(s=l.raw.slice(-1)),a=!0;let h=r.at(-1);h?.type==="text"?(h.raw+=l.raw,h.text+=l.text):r.push(l);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}},HT=class{static{o(this,"P")}options;parser;constructor(t){this.options=t||jd}space(t){return""}code({text:t,lang:e,escaped:r}){let n=(e||"").match(as.notSpaceStart)?.[0],i=t.replace(as.endingNewline,"")+` -`;return n?'
    '+(r?i:Tc(i,!0))+`
    -`:"
    "+(r?i:Tc(i,!0))+`
    -`}blockquote({tokens:t}){return`
    -${this.parser.parse(t)}
    -`}html({text:t}){return t}def(t){return""}heading({tokens:t,depth:e}){return`${this.parser.parseInline(t)} -`}hr(t){return`
    -`}list(t){let e=t.ordered,r=t.start,n="";for(let s=0;s -`+n+" -`}listitem(t){let e="";if(t.task){let r=this.checkbox({checked:!!t.checked});t.loose?t.tokens[0]?.type==="paragraph"?(t.tokens[0].text=r+" "+t.tokens[0].text,t.tokens[0].tokens&&t.tokens[0].tokens.length>0&&t.tokens[0].tokens[0].type==="text"&&(t.tokens[0].tokens[0].text=r+" "+Tc(t.tokens[0].tokens[0].text),t.tokens[0].tokens[0].escaped=!0)):t.tokens.unshift({type:"text",raw:r+" ",text:r+" ",escaped:!0}):e+=r+" "}return e+=this.parser.parse(t.tokens,!!t.loose),`
  • ${e}
  • -`}checkbox({checked:t}){return"'}paragraph({tokens:t}){return`

    ${this.parser.parseInline(t)}

    -`}table(t){let e="",r="";for(let i=0;i${n}`),` - -`+e+` -`+n+`
    -`}tablerow({text:t}){return` -${t} -`}tablecell(t){let e=this.parser.parseInline(t.tokens),r=t.header?"th":"td";return(t.align?`<${r} align="${t.align}">`:`<${r}>`)+e+` -`}strong({tokens:t}){return`${this.parser.parseInline(t)}`}em({tokens:t}){return`${this.parser.parseInline(t)}`}codespan({text:t}){return`${Tc(t,!0)}`}br(t){return"
    "}del({tokens:t}){return`${this.parser.parseInline(t)}`}link({href:t,title:e,tokens:r}){let n=this.parser.parseInline(r),i=kZ(t);if(i===null)return n;t=i;let a='
    ",a}image({href:t,title:e,text:r,tokens:n}){n&&(r=this.parser.parseInline(n,this.parser.textRenderer));let i=kZ(t);if(i===null)return Tc(r);t=i;let a=`${r}{let s=i[a].flat(1/0);r=r.concat(this.walkTokens(s,e))}):i.tokens&&(r=r.concat(this.walkTokens(i.tokens,e)))}}return r}use(...t){let e=this.defaults.extensions||{renderers:{},childTokens:{}};return t.forEach(r=>{let n={...r};if(n.async=this.defaults.async||n.async||!1,r.extensions&&(r.extensions.forEach(i=>{if(!i.name)throw new Error("extension name required");if("renderer"in i){let a=e.renderers[i.name];a?e.renderers[i.name]=function(...s){let l=i.renderer.apply(this,s);return l===!1&&(l=a.apply(this,s)),l}:e.renderers[i.name]=i.renderer}if("tokenizer"in i){if(!i.level||i.level!=="block"&&i.level!=="inline")throw new Error("extension level must be 'block' or 'inline'");let a=e[i.level];a?a.unshift(i.tokenizer):e[i.level]=[i.tokenizer],i.start&&(i.level==="block"?e.startBlock?e.startBlock.push(i.start):e.startBlock=[i.start]:i.level==="inline"&&(e.startInline?e.startInline.push(i.start):e.startInline=[i.start]))}"childTokens"in i&&i.childTokens&&(e.childTokens[i.name]=i.childTokens)}),n.extensions=e),r.renderer){let i=this.defaults.renderer||new HT(this.defaults);for(let a in r.renderer){if(!(a in i))throw new Error(`renderer '${a}' does not exist`);if(["options","parser"].includes(a))continue;let s=a,l=r.renderer[s],u=i[s];i[s]=(...h)=>{let f=l.apply(i,h);return f===!1&&(f=u.apply(i,h)),f||""}}n.renderer=i}if(r.tokenizer){let i=this.defaults.tokenizer||new UT(this.defaults);for(let a in r.tokenizer){if(!(a in i))throw new Error(`tokenizer '${a}' does not exist`);if(["options","rules","lexer"].includes(a))continue;let s=a,l=r.tokenizer[s],u=i[s];i[s]=(...h)=>{let f=l.apply(i,h);return f===!1&&(f=u.apply(i,h)),f}}n.tokenizer=i}if(r.hooks){let i=this.defaults.hooks||new S2;for(let a in r.hooks){if(!(a in i))throw new Error(`hook '${a}' does not exist`);if(["options","block"].includes(a))continue;let s=a,l=r.hooks[s],u=i[s];S2.passThroughHooks.has(a)?i[s]=h=>{if(this.defaults.async&&S2.passThroughHooksRespectAsync.has(a))return Promise.resolve(l.call(i,h)).then(d=>u.call(i,d));let f=l.call(i,h);return u.call(i,f)}:i[s]=(...h)=>{let f=l.apply(i,h);return f===!1&&(f=u.apply(i,h)),f}}n.hooks=i}if(r.walkTokens){let i=this.defaults.walkTokens,a=r.walkTokens;n.walkTokens=function(s){let l=[];return l.push(a.call(this,s)),i&&(l=l.concat(i.call(this,s))),l}}this.defaults={...this.defaults,...n}}),this}setOptions(t){return this.defaults={...this.defaults,...t},this}lexer(t,e){return Mu.lex(t,e??this.defaults)}parser(t,e){return Iu.parse(t,e??this.defaults)}parseMarkdown(t){return(e,r)=>{let n={...r},i={...this.defaults,...n},a=this.onError(!!i.silent,!!i.async);if(this.defaults.async===!0&&n.async===!1)return a(new Error("marked(): The async option was set to true by an extension. Remove async: false from the parse options object to return a Promise."));if(typeof e>"u"||e===null)return a(new Error("marked(): input parameter is undefined or null"));if(typeof e!="string")return a(new Error("marked(): input parameter is of type "+Object.prototype.toString.call(e)+", string expected"));i.hooks&&(i.hooks.options=i,i.hooks.block=t);let s=i.hooks?i.hooks.provideLexer():t?Mu.lex:Mu.lexInline,l=i.hooks?i.hooks.provideParser():t?Iu.parse:Iu.parseInline;if(i.async)return Promise.resolve(i.hooks?i.hooks.preprocess(e):e).then(u=>s(u,i)).then(u=>i.hooks?i.hooks.processAllTokens(u):u).then(u=>i.walkTokens?Promise.all(this.walkTokens(u,i.walkTokens)).then(()=>u):u).then(u=>l(u,i)).then(u=>i.hooks?i.hooks.postprocess(u):u).catch(a);try{i.hooks&&(e=i.hooks.preprocess(e));let u=s(e,i);i.hooks&&(u=i.hooks.processAllTokens(u)),i.walkTokens&&this.walkTokens(u,i.walkTokens);let h=l(u,i);return i.hooks&&(h=i.hooks.postprocess(h)),h}catch(u){return a(u)}}}onError(t,e){return r=>{if(r.message+=` -Please report this to https://github.com/markedjs/marked.`,t){let n="

    An error occurred:

    "+Tc(r.message+"",!0)+"
    ";return e?Promise.resolve(n):n}if(e)return Promise.reject(r);throw r}}},Xd=new z9e;o(nn,"d");nn.options=nn.setOptions=function(t){return Xd.setOptions(t),nn.defaults=Xd.defaults,CZ(nn.defaults),nn};nn.getDefaults=h9;nn.defaults=jd;nn.use=function(...t){return Xd.use(...t),nn.defaults=Xd.defaults,CZ(nn.defaults),nn};nn.walkTokens=function(t,e){return Xd.walkTokens(t,e)};nn.parseInline=Xd.parseInline;nn.Parser=Iu;nn.parser=Iu.parse;nn.Renderer=HT;nn.TextRenderer=x9;nn.Lexer=Mu;nn.lexer=Mu.lex;nn.Tokenizer=UT;nn.Hooks=S2;nn.parse=nn;M6t=nn.options,I6t=nn.setOptions,O6t=nn.use,P6t=nn.walkTokens,B6t=nn.parseInline,F6t=Iu.parse,$6t=Mu.lex});function G9e(t,{markdownAutoWrap:e}){let n=t.replace(//g,` -`).replace(/\n{2,}/g,` -`),i=P3(n);return e===!1?i.replace(/ /g," "):i}function FZ(t,e={}){let r=G9e(t,e),n=nn.lexer(r),i=[[]],a=0;function s(l,u="normal"){l.type==="text"?l.text.split(` -`).forEach((f,d)=>{d!==0&&(a++,i.push([])),f.split(" ").forEach(p=>{p=p.replace(/'/g,"'"),p&&i[a].push({content:p,type:u})})}):l.type==="strong"||l.type==="em"?l.tokens.forEach(h=>{s(h,l.type)}):l.type==="html"&&i[a].push({content:l.text,type:"normal"})}return o(s,"processNode"),n.forEach(l=>{l.type==="paragraph"?l.tokens?.forEach(u=>{s(u)}):l.type==="html"?i[a].push({content:l.text,type:"normal"}):i[a].push({content:l.raw,type:"normal"})}),i}function $Z(t,{markdownAutoWrap:e}={}){let r=nn.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:(X.warn(`Unsupported markdown: ${i.type}`),i.raw)}return o(n,"output"),r.map(n).join("")}var zZ=N(()=>{"use strict";BZ();_A();pt();o(G9e,"preprocessMarkdown");o(FZ,"markdownToLines");o($Z,"markdownToHTML")});function V9e(t){return Intl.Segmenter?[...new Intl.Segmenter().segment(t)].map(e=>e.segment):[...t]}function U9e(t,e){let r=V9e(e.content);return GZ(t,[],r,e.type)}function GZ(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}])?GZ(t,s,a,n):(e.length===0&&i&&(e.push(i),r.shift()),[{content:e.join(""),type:n},{content:r.join(""),type:n}])}function VZ(t,e){if(t.some(({content:r})=>r.includes(` -`)))throw new Error("splitLineToFitWidth does not support newlines in the line");return b9(t,e)}function b9(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 b9(t,e,r,s);if(n.length>0)r.push(n),t.unshift(a);else if(a.content){let[l,u]=U9e(e,a);r.push([l]),u.content&&t.unshift(u)}return b9(t,e,r)}var UZ=N(()=>{"use strict";o(V9e,"splitTextToChars");o(U9e,"splitWordToFitWidth");o(GZ,"splitWordToFitWidthRecursion");o(VZ,"splitLineToFitWidth");o(b9,"splitLineToFitWidthRecursion")});function HZ(t,e){e&&t.attr("style",e)}async function H9e(t,e,r,n,i=!1,a=Qt()){let s=t.append("foreignObject");s.attr("width",`${10*r}px`),s.attr("height",`${10*r}px`);let l=s.append("xhtml:div"),u=kn(e.label)?await kh(e.label.replace(tt.lineBreakRegex,` -`),a):sr(e.label,a),h=e.isNode?"nodeLabel":"edgeLabel",f=l.append("span");f.html(u),HZ(f,e.labelStyle),f.attr("class",`${h} ${n}`),HZ(l,e.labelStyle),l.style("display","table-cell"),l.style("white-space","nowrap"),l.style("line-height","1.5"),l.style("max-width",r+"px"),l.style("text-align","center"),l.attr("xmlns","http://www.w3.org/1999/xhtml"),i&&l.attr("class","labelBkg");let d=l.node().getBoundingClientRect();return d.width===r&&(l.style("display","table"),l.style("white-space","break-spaces"),l.style("width",r+"px"),d=l.node().getBoundingClientRect()),s.node()}function T9(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 q9e(t,e,r){let n=t.append("text"),i=T9(n,1,e);w9(i,r);let a=i.node().getComputedTextLength();return n.remove(),a}function qZ(t,e,r){let n=t.append("text"),i=T9(n,1,e);w9(i,[{content:r,type:"normal"}]);let a=i.node()?.getBoundingClientRect();return a&&n.remove(),a}function W9e(t,e,r,n=!1){let a=e.append("g"),s=a.insert("rect").attr("class","background").attr("style","stroke: none"),l=a.append("text").attr("y","-10.1"),u=0;for(let h of r){let f=o(p=>q9e(a,1.1,p)<=t,"checkWidth"),d=f(h)?[h]:VZ(h,f);for(let p of d){let m=T9(l,u,1.1);w9(m,p),u++}}if(n){let h=l.node().getBBox(),f=2;return s.attr("x",h.x-f).attr("y",h.y-f).attr("width",h.width+2*f).attr("height",h.height+2*f),a.node()}else return l.node()}function w9(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)})}async function k9(t,e={}){let r=[];t.replace(/(fa[bklrs]?):fa-([\w-]+)/g,(i,a,s)=>(r.push((async()=>{let l=`${a}:${s}`;return await eH(l)?await _s(l,void 0,{class:"label-icon"}):``})()),i));let n=await Promise.all(r);return t.replace(/(fa[bklrs]?):fa-([\w-]+)/g,()=>n.shift()??"")}var di,zo=N(()=>{"use strict";yr();gr();pt();zZ();tr();nc();UZ();qn();o(HZ,"applyStyle");o(H9e,"addHtmlSpan");o(T9,"createTspan");o(q9e,"computeWidthOfText");o(qZ,"computeDimensionOfText");o(W9e,"createFormattedText");o(w9,"updateTextContentAndStyles");o(k9,"replaceIconSubstring");di=o(async(t,e="",{style:r="",isTitle:n=!1,classes:i="",useHtmlLabels:a=!0,isNode:s=!0,width:l=200,addSvgBackground:u=!1}={},h)=>{if(X.debug("XYZ createText",e,r,n,i,a,s,"addSvgBackground: ",u),a){let f=$Z(e,h),d=await k9(Ji(f),h),p=e.replace(/\\\\/g,"\\"),m={isNode:s,label:kn(e)?p:d,labelStyle:r.replace("fill:","color:")};return await H9e(t,m,l,i,u,h)}else{let f=e.replace(//g,"
    "),d=FZ(f.replace("
    ","
    "),h),p=W9e(l,t,d,e?u:!1);if(s){/stroke:/.exec(r)&&(r=r.replace("stroke:","lineColor:"));let m=r.replace(/stroke:[^;]+;?/g,"").replace(/stroke-width:[^;]+;?/g,"").replace(/fill:[^;]+;?/g,"").replace(/color:/g,"fill:");qe(p).attr("style",m)}else{let m=r.replace(/stroke:[^;]+;?/g,"").replace(/stroke-width:[^;]+;?/g,"").replace(/fill:[^;]+;?/g,"").replace(/background:/g,"fill:");qe(p).select("rect").attr("style",m.replace(/background:/g,"fill:"));let g=r.replace(/stroke:[^;]+;?/g,"").replace(/stroke-width:[^;]+;?/g,"").replace(/fill:[^;]+;?/g,"").replace(/color:/g,"fill:");qe(p).select("text").attr("style",g)}return p}},"createText")});function Vt(t){let e=t.map((r,n)=>`${n===0?"M":"L"}${r.x},${r.y}`);return e.push("Z"),e.join(" ")}function Go(t,e,r,n,i,a){let s=[],u=r-t,h=n-e,f=u/a,d=2*Math.PI/f,p=e+h/2;for(let m=0;m<=50;m++){let g=m/50,y=t+g*u,v=p+i*Math.sin(d*(y-t));s.push({x:y,y:v})}return s}function Kd(t,e,r,n,i,a){let s=[],l=i*Math.PI/180,f=(a*Math.PI/180-l)/(n-1);for(let d=0;d{"use strict";zo();Xt();yr();La();gr();tr();ut=o(async(t,e,r)=>{let n,i=e.useHtmlLabels||vr(ge()?.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",Cn(e.labelStyle)),l;e.label===void 0?l="":l=typeof e.label=="string"?e.label:e.label[0];let u=await di(s,sr(Ji(l),ge()),{useHtmlLabels:i,width:e.width||ge().flowchart?.wrappingWidth,cssClasses:"markdown-node-label",style:e.labelStyle,addSvgBackground:!!e.icon||!!e.img}),h=u.getBBox(),f=(e?.padding??0)/2;if(i){let d=u.children[0],p=qe(u),m=d.getElementsByTagName("img");if(m){let g=l.replace(/]*>/g,"").trim()==="";await Promise.all([...m].map(y=>new Promise(v=>{function x(){if(y.style.display="flex",y.style.flexDirection="column",g){let b=ge().fontSize?ge().fontSize:window.getComputedStyle(document.body).fontSize,T=5,[S=ur.fontSize]=vc(b),w=S*T+"px";y.style.minWidth=w,y.style.maxWidth=w}else y.style.width="100%";v(y)}o(x,"setupImage"),setTimeout(()=>{y.complete&&x()}),y.addEventListener("error",x),y.addEventListener("load",x)})))}h=d.getBoundingClientRect(),p.attr("width",h.width),p.attr("height",h.height)}return i?s.attr("transform","translate("+-h.width/2+", "+-h.height/2+")"):s.attr("transform","translate(0, "+-h.height/2+")"),e.centerLabel&&s.attr("transform","translate("+-h.width/2+", "+-h.height/2+")"),s.insert("rect",":first-child"),{shapeSvg:a,bbox:h,halfPadding:f,label:s}},"labelHelper"),YT=o(async(t,e,r)=>{let n=r.useHtmlLabels||vr(ge()?.flowchart?.htmlLabels),i=t.insert("g").attr("class","label").attr("style",r.labelStyle||""),a=await di(i,sr(Ji(e),ge()),{useHtmlLabels:n,width:r.width||ge()?.flowchart?.wrappingWidth,style:r.labelStyle,addSvgBackground:!!r.icon||!!r.img}),s=a.getBBox(),l=r.padding/2;if(vr(ge()?.flowchart?.htmlLabels)){let u=a.children[0],h=qe(a);s=u.getBoundingClientRect(),h.attr("width",s.width),h.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:l,label:i}},"insertLabel"),Qe=o((t,e)=>{let r=e.node().getBBox();t.width=r.width,t.height=r.height},"updateNodeBounds"),st=o((t,e)=>(t.look==="handDrawn"?"rough-node":"node")+" "+t.cssClasses+" "+(e||""),"getNodeClasses");o(Vt,"createPathFromPoints");o(Go,"generateFullSineWavePoints");o(Kd,"generateCirclePoints")});function Y9e(t,e){return t.intersect(e)}var WZ,YZ=N(()=>{"use strict";o(Y9e,"intersectNode");WZ=Y9e});function X9e(t,e,r,n){var i=t.x,a=t.y,s=i-n.x,l=a-n.y,u=Math.sqrt(e*e*l*l+r*r*s*s),h=Math.abs(e*r*s/u);n.x{"use strict";o(X9e,"intersectEllipse");XT=X9e});function j9e(t,e,r){return XT(t,e,e,r)}var XZ,jZ=N(()=>{"use strict";E9();o(j9e,"intersectCircle");XZ=j9e});function K9e(t,e,r,n){{let i=e.y-t.y,a=t.x-e.x,s=e.x*t.y-t.x*e.y,l=i*r.x+a*r.y+s,u=i*n.x+a*n.y+s,h=1e-6;if(l!==0&&u!==0&&KZ(l,u))return;let f=n.y-r.y,d=r.x-n.x,p=n.x*r.y-r.x*n.y,m=f*t.x+d*t.y+p,g=f*e.x+d*e.y+p;if(Math.abs(m)0}var QZ,ZZ=N(()=>{"use strict";o(K9e,"intersectLine");o(KZ,"sameSign");QZ=K9e});function Q9e(t,e,r){let n=t.x,i=t.y,a=[],s=Number.POSITIVE_INFINITY,l=Number.POSITIVE_INFINITY;typeof e.forEach=="function"?e.forEach(function(f){s=Math.min(s,f.x),l=Math.min(l,f.y)}):(s=Math.min(s,e.x),l=Math.min(l,e.y));let u=n-t.width/2-s,h=i-t.height/2-l;for(let f=0;f1&&a.sort(function(f,d){let p=f.x-r.x,m=f.y-r.y,g=Math.sqrt(p*p+m*m),y=d.x-r.x,v=d.y-r.y,x=Math.sqrt(y*y+v*v);return g{"use strict";ZZ();o(Q9e,"intersectPolygon");JZ=Q9e});var Z9e,Qh,S9=N(()=>{"use strict";Z9e=o((t,e)=>{var r=t.x,n=t.y,i=e.x-r,a=e.y-n,s=t.width/2,l=t.height/2,u,h;return Math.abs(a)*s>Math.abs(i)*l?(a<0&&(l=-l),u=a===0?0:l*i/a,h=l):(i<0&&(s=-s),u=s,h=i===0?0:s*a/i),{x:r+u,y:n+h}},"intersectRect"),Qh=Z9e});var Xe,Ut=N(()=>{"use strict";YZ();jZ();E9();eJ();S9();Xe={node:WZ,circle:XZ,ellipse:XT,polygon:JZ,rect:Qh}});var tJ,wc,J9e,_2,je,Je,eRe,$t=N(()=>{"use strict";Xt();tJ=o(t=>{let{handDrawnSeed:e}=ge();return{fill:t,hachureAngle:120,hachureGap:4,fillWeight:2,roughness:.7,stroke:t,seed:e}},"solidStateFill"),wc=o(t=>{let e=J9e([...t.cssCompiledStyles||[],...t.cssStyles||[],...t.labelStyle||[]]);return{stylesMap:e,stylesArray:[...e]}},"compileStyles"),J9e=o(t=>{let e=new Map;return t.forEach(r=>{let[n,i]=r.split(":");e.set(n.trim(),i?.trim())}),e},"styles2Map"),_2=o(t=>t==="color"||t==="font-size"||t==="font-family"||t==="font-weight"||t==="font-style"||t==="text-decoration"||t==="text-align"||t==="text-transform"||t==="line-height"||t==="letter-spacing"||t==="word-spacing"||t==="text-shadow"||t==="text-overflow"||t==="white-space"||t==="word-wrap"||t==="word-break"||t==="overflow-wrap"||t==="hyphens","isLabelStyle"),je=o(t=>{let{stylesArray:e}=wc(t),r=[],n=[],i=[],a=[];return e.forEach(s=>{let l=s[0];_2(l)?r.push(s.join(":")+" !important"):(n.push(s.join(":")+" !important"),l.includes("stroke")&&i.push(s.join(":")+" !important"),l==="fill"&&a.push(s.join(":")+" !important"))}),{labelStyles:r.join(";"),nodeStyles:n.join(";"),stylesArray:e,borderStyles:i,backgroundStyles:a}},"styles2String"),Je=o((t,e)=>{let{themeVariables:r,handDrawnSeed:n}=ge(),{nodeBorder:i,mainBkg:a}=r,{stylesMap:s}=wc(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],strokeLineDash:eRe(s.get("stroke-dasharray"))},e)},"userNodeOverrides"),eRe=o(t=>{if(!t)return[0,0];let e=t.trim().split(/\s+/).map(Number);if(e.length===1){let i=isNaN(e[0])?0:e[0];return[i,i]}let r=isNaN(e[0])?0:e[0],n=isNaN(e[1])?0:e[1];return[r,n]},"getStrokeDashArray")});function C9(t,e,r){if(t&&t.length){let[n,i]=e,a=Math.PI/180*r,s=Math.cos(a),l=Math.sin(a);for(let u of t){let[h,f]=u;u[0]=(h-n)*s-(f-i)*l+n,u[1]=(h-n)*l+(f-i)*s+i}}}function tRe(t,e){return t[0]===e[0]&&t[1]===e[1]}function rRe(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,l=[0,0];if(i)for(let h of s)C9(h,l,i);let u=(function(h,f,d){let p=[];for(let b of h){let T=[...b];tRe(T[0],T[T.length-1])||T.push([T[0][0],T[0][1]]),T.length>2&&p.push(T)}let m=[];f=Math.max(f,.1);let g=[];for(let b of p)for(let T=0;Tb.yminT.ymin?1:b.xT.x?1:b.ymax===T.ymax?0:(b.ymax-T.ymax)/Math.abs(b.ymax-T.ymax))),!g.length)return m;let y=[],v=g[0].ymin,x=0;for(;y.length||g.length;){if(g.length){let b=-1;for(let T=0;Tv);T++)b=T;g.splice(0,b+1).forEach((T=>{y.push({s:v,edge:T})}))}if(y=y.filter((b=>!(b.edge.ymax<=v))),y.sort(((b,T)=>b.edge.x===T.edge.x?0:(b.edge.x-T.edge.x)/Math.abs(b.edge.x-T.edge.x))),(d!==1||x%f==0)&&y.length>1)for(let b=0;b=y.length)break;let S=y[b].edge,w=y[T].edge;m.push([[Math.round(S.x),v],[Math.round(w.x),v]])}v+=d,y.forEach((b=>{b.edge.x=b.edge.x+d*b.edge.islope})),x++}return m})(s,a,n);if(i){for(let h of s)C9(h,l,-i);(function(h,f,d){let p=[];h.forEach((m=>p.push(...m))),C9(p,f,d)})(u,l,-i)}return u}function N2(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),rRe(t,i,n,a||1)}function nw(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 _9(t,e){return t.type===e}function V9(t){let e=[],r=(function(s){let l=new Array;for(;s!=="";)if(s.match(/^([ \t\r\n,]+)/))s=s.substr(RegExp.$1.length);else if(s.match(/^([aAcChHlLmMqQsStTvVzZ])/))l[l.length]={type:nRe,text:RegExp.$1},s=s.substr(RegExp.$1.length);else{if(!s.match(/^(([-+]?[0-9]+(\.[0-9]*)?|[-+]?\.[0-9]+)([eE][-+]?[0-9]+)?)/))return[];l[l.length]={type:A9,text:`${parseFloat(RegExp.$1)}`},s=s.substr(RegExp.$1.length)}return l[l.length]={type:rJ,text:""},l})(t),n="BOD",i=0,a=r[i];for(;!_9(a,rJ);){let s=0,l=[];if(n==="BOD"){if(a.text!=="M"&&a.text!=="m")return V9("M0,0"+t);i++,s=jT[a.text],n=a.text}else _9(a,A9)?s=jT[n]:(i++,s=jT[a.text],n=a.text);if(!(i+sf%2?h+r:h+e));a.push({key:"C",data:u}),e=u[4],r=u[5];break}case"Q":a.push({key:"Q",data:[...l]}),e=l[2],r=l[3];break;case"q":{let u=l.map(((h,f)=>f%2?h+r:h+e));a.push({key:"Q",data:u}),e=u[2],r=u[3];break}case"A":a.push({key:"A",data:[...l]}),e=l[5],r=l[6];break;case"a":e+=l[5],r+=l[6],a.push({key:"A",data:[l[0],l[1],l[2],l[3],l[4],e,r]});break;case"H":a.push({key:"H",data:[...l]}),e=l[0];break;case"h":e+=l[0],a.push({key:"H",data:[e]});break;case"V":a.push({key:"V",data:[...l]}),r=l[0];break;case"v":r+=l[0],a.push({key:"V",data:[r]});break;case"S":a.push({key:"S",data:[...l]}),e=l[2],r=l[3];break;case"s":{let u=l.map(((h,f)=>f%2?h+r:h+e));a.push({key:"S",data:u}),e=u[2],r=u[3];break}case"T":a.push({key:"T",data:[...l]}),e=l[0],r=l[1];break;case"t":e+=l[0],r+=l[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 hJ(t){let e=[],r="",n=0,i=0,a=0,s=0,l=0,u=0;for(let{key:h,data:f}of t){switch(h){case"M":e.push({key:"M",data:[...f]}),[n,i]=f,[a,s]=f;break;case"C":e.push({key:"C",data:[...f]}),n=f[4],i=f[5],l=f[2],u=f[3];break;case"L":e.push({key:"L",data:[...f]}),[n,i]=f;break;case"H":n=f[0],e.push({key:"L",data:[n,i]});break;case"V":i=f[0],e.push({key:"L",data:[n,i]});break;case"S":{let d=0,p=0;r==="C"||r==="S"?(d=n+(n-l),p=i+(i-u)):(d=n,p=i),e.push({key:"C",data:[d,p,...f]}),l=f[0],u=f[1],n=f[2],i=f[3];break}case"T":{let[d,p]=f,m=0,g=0;r==="Q"||r==="T"?(m=n+(n-l),g=i+(i-u)):(m=n,g=i);let y=n+2*(m-n)/3,v=i+2*(g-i)/3,x=d+2*(m-d)/3,b=p+2*(g-p)/3;e.push({key:"C",data:[y,v,x,b,d,p]}),l=m,u=g,n=d,i=p;break}case"Q":{let[d,p,m,g]=f,y=n+2*(d-n)/3,v=i+2*(p-i)/3,x=m+2*(d-m)/3,b=g+2*(p-g)/3;e.push({key:"C",data:[y,v,x,b,m,g]}),l=d,u=p,n=m,i=g;break}case"A":{let d=Math.abs(f[0]),p=Math.abs(f[1]),m=f[2],g=f[3],y=f[4],v=f[5],x=f[6];d===0||p===0?(e.push({key:"C",data:[n,i,v,x,v,x]}),n=v,i=x):(n!==v||i!==x)&&(fJ(n,i,v,x,d,p,m,g,y).forEach((function(b){e.push({key:"C",data:b})})),n=v,i=x);break}case"Z":e.push({key:"Z",data:[]}),n=a,i=s}r=h}return e}function D2(t,e,r){return[t*Math.cos(r)-e*Math.sin(r),t*Math.sin(r)+e*Math.cos(r)]}function fJ(t,e,r,n,i,a,s,l,u,h){let f=(d=s,Math.PI*d/180);var d;let p=[],m=0,g=0,y=0,v=0;if(h)[m,g,y,v]=h;else{[t,e]=D2(t,e,-f),[r,n]=D2(r,n,-f);let D=(t-r)/2,_=(e-n)/2,O=D*D/(i*i)+_*_/(a*a);O>1&&(O=Math.sqrt(O),i*=O,a*=O);let M=i*i,P=a*a,B=M*P-M*_*_-P*D*D,F=M*_*_+P*D*D,G=(l===u?-1:1)*Math.sqrt(Math.abs(B/F));y=G*i*_/a+(t+r)/2,v=G*-a*D/i+(e+n)/2,m=Math.asin(parseFloat(((e-v)/a).toFixed(9))),g=Math.asin(parseFloat(((n-v)/a).toFixed(9))),tg&&(m-=2*Math.PI),!u&&g>m&&(g-=2*Math.PI)}let x=g-m;if(Math.abs(x)>120*Math.PI/180){let D=g,_=r,O=n;g=u&&g>m?m+120*Math.PI/180*1:m+120*Math.PI/180*-1,p=fJ(r=y+i*Math.cos(g),n=v+a*Math.sin(g),_,O,i,a,s,0,u,[g,D,y,v])}x=g-m;let b=Math.cos(m),T=Math.sin(m),S=Math.cos(g),w=Math.sin(g),k=Math.tan(x/4),A=4/3*i*k,C=4/3*a*k,R=[t,e],I=[t+A*T,e-C*b],L=[r+A*w,n-C*S],E=[r,n];if(I[0]=2*R[0]-I[0],I[1]=2*R[1]-I[1],h)return[I,L,E].concat(p);{p=[I,L,E].concat(p);let D=[];for(let _=0;_2){let i=[];for(let a=0;a2*Math.PI&&(m=0,g=2*Math.PI);let y=2*Math.PI/u.curveStepCount,v=Math.min(y/2,(g-m)/2),x=lJ(v,h,f,d,p,m,g,1,u);if(!u.disableMultiStroke){let b=lJ(v,h,f,d,p,m,g,1.5,u);x.push(...b)}return s&&(l?x.push(...Zh(h,f,h+d*Math.cos(m),f+p*Math.sin(m),u),...Zh(h,f,h+d*Math.cos(g),f+p*Math.sin(g),u)):x.push({op:"lineTo",data:[h,f]},{op:"lineTo",data:[h+d*Math.cos(m),f+p*Math.sin(m)]})),{type:"path",ops:x}}function aJ(t,e){let r=hJ(uJ(V9(t))),n=[],i=[0,0],a=[0,0];for(let{key:s,data:l}of r)switch(s){case"M":a=[l[0],l[1]],i=[l[0],l[1]];break;case"L":n.push(...Zh(a[0],a[1],l[0],l[1],e)),a=[l[0],l[1]];break;case"C":{let[u,h,f,d,p,m]=l;n.push(...sRe(u,h,f,d,p,m,a,e)),a=[p,m];break}case"Z":n.push(...Zh(a[0],a[1],i[0],i[1],e)),a=[i[0],i[1]]}return{type:"path",ops:n}}function D9(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]+or(i,e),n[0][1]+or(i,e)]});for(let s=1;s500?.4:-.0016668*u+1.233334;let f=i.maxRandomnessOffset||0;f*f*100>l&&(f=u/10);let d=f/2,p=.2+.2*mJ(i),m=i.bowing*i.maxRandomnessOffset*(n-e)/200,g=i.bowing*i.maxRandomnessOffset*(t-r)/200;m=or(m,i,h),g=or(g,i,h);let y=[],v=o(()=>or(d,i,h),"M"),x=o(()=>or(f,i,h),"k"),b=i.preserveVertices;return a&&(s?y.push({op:"move",data:[t+(b?0:v()),e+(b?0:v())]}):y.push({op:"move",data:[t+(b?0:or(f,i,h)),e+(b?0:or(f,i,h))]})),s?y.push({op:"bcurveTo",data:[m+t+(r-t)*p+v(),g+e+(n-e)*p+v(),m+t+2*(r-t)*p+v(),g+e+2*(n-e)*p+v(),r+(b?0:v()),n+(b?0:v())]}):y.push({op:"bcurveTo",data:[m+t+(r-t)*p+x(),g+e+(n-e)*p+x(),m+t+2*(r-t)*p+x(),g+e+2*(n-e)*p+x(),r+(b?0:x()),n+(b?0:x())]}),y}function KT(t,e,r){if(!t.length)return[];let n=[];n.push([t[0][0]+or(e,r),t[0][1]+or(e,r)]),n.push([t[0][0]+or(e,r),t[0][1]+or(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 l=1;l+21&&i.push(l)):i.push(l),i.push(t[e+3])}else{let u=t[e+0],h=t[e+1],f=t[e+2],d=t[e+3],p=Qd(u,h,.5),m=Qd(h,f,.5),g=Qd(f,d,.5),y=Qd(p,m,.5),v=Qd(m,g,.5),x=Qd(y,v,.5);$9([u,p,y,x],0,r,i),$9([x,v,g,d],0,r,i)}var a,s;return i}function lRe(t,e){return rw(t,0,t.length,e)}function rw(t,e,r,n,i){let a=i||[],s=t[e],l=t[r-1],u=0,h=1;for(let f=e+1;fu&&(u=d,h=f)}return Math.sqrt(u)>n?(rw(t,e,h+1,n,a),rw(t,h,r,n,a)):(a.length||a.push(s),a.push(l)),a}function L9(t,e=.15,r){let n=[],i=(t.length-1)/3;for(let a=0;a0?rw(n,0,n.length,r):n}var R2,R9,N9,M9,I9,O9,Ps,P9,nRe,A9,rJ,jT,iRe,co,Em,z9,QT,G9,Ze,Ht=N(()=>{"use strict";o(C9,"t");o(tRe,"e");o(rRe,"s");o(N2,"n");R2=class{static{o(this,"o")}constructor(e){this.helper=e}fillPolygons(e,r){return this._fillPolygons(e,r)}_fillPolygons(e,r){let n=N2(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}};o(nw,"a");R9=class extends R2{static{o(this,"h")}fillPolygons(e,r){let n=r.hachureGap;n<0&&(n=4*r.strokeWidth),n=Math.max(n,.1);let i=N2(e,Object.assign({},r,{hachureGap:n})),a=Math.PI/180*r.hachureAngle,s=[],l=.5*n*Math.cos(a),u=.5*n*Math.sin(a);for(let[h,f]of i)nw([h,f])&&s.push([[h[0]-l,h[1]+u],[...f]],[[h[0]+l,h[1]-u],[...f]]);return{type:"fillSketch",ops:this.renderLines(s,r)}}},N9=class extends R2{static{o(this,"r")}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}},M9=class{static{o(this,"i")}constructor(e){this.helper=e}fillPolygons(e,r){let n=N2(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 l of e){let u=nw(l),h=u/i,f=Math.ceil(h)-1,d=u-f*i,p=(l[0][0]+l[1][0])/2-i/4,m=Math.min(l[0][1],l[1][1]);for(let g=0;g{let l=nw(s),u=Math.floor(l/(n+i)),h=(l+i-u*(n+i))/2,f=s[0],d=s[1];f[0]>d[0]&&(f=s[1],d=s[0]);let p=Math.atan((d[1]-f[1])/(d[0]-f[0]));for(let m=0;m{let s=nw(a),l=Math.round(s/(2*r)),u=a[0],h=a[1];u[0]>h[0]&&(u=a[1],h=a[0]);let f=Math.atan((h[1]-u[1])/(h[0]-u[0]));for(let d=0;d2*Math.PI&&(A=0,C=2*Math.PI);let R=(C-A)/b.curveStepCount,I=[];for(let L=A;L<=C;L+=R)I.push([T+w*Math.cos(L),S+k*Math.sin(L)]);return I.push([T+w*Math.cos(C),S+k*Math.sin(C)]),I.push([T,S]),km([I],b)})(e,r,n,i,a,s,h));return h.stroke!==co&&f.push(d),this._d("arc",f,h)}curve(e,r){let n=this._o(r),i=[],a=nJ(e,n);if(n.fill&&n.fill!==co)if(n.fillStyle==="solid"){let s=nJ(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=[],l=e;if(l.length){let u=typeof l[0][0]=="number"?[l]:l;for(let h of u)h.length<3?s.push(...h):h.length===3?s.push(...L9(cJ([h[0],h[0],h[1],h[2]]),10,(1+n.roughness)/2)):s.push(...L9(cJ(h),10,(1+n.roughness)/2))}s.length&&i.push(km([s],n))}return n.stroke!==co&&i.push(a),this._d("curve",i,n)}polygon(e,r){let n=this._o(r),i=[],a=ZT(e,!0,n);return n.fill&&(n.fillStyle==="solid"?i.push(D9([e],n)):i.push(km([e],n))),n.stroke!==co&&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!==co,s=n.stroke!==co,l=!!(n.simplification&&n.simplification<1),u=(function(f,d,p){let m=hJ(uJ(V9(f))),g=[],y=[],v=[0,0],x=[],b=o(()=>{x.length>=4&&y.push(...L9(x,d)),x=[]},"i"),T=o(()=>{b(),y.length&&(g.push(y),y=[])},"c");for(let{key:w,data:k}of m)switch(w){case"M":T(),v=[k[0],k[1]],y.push(v);break;case"L":b(),y.push([k[0],k[1]]);break;case"C":if(!x.length){let A=y.length?y[y.length-1]:v;x.push([A[0],A[1]])}x.push([k[0],k[1]]),x.push([k[2],k[3]]),x.push([k[4],k[5]]);break;case"Z":b(),y.push([v[0],v[1]])}if(T(),!p)return g;let S=[];for(let w of g){let k=lRe(w,p);k.length&&S.push(k)}return S})(e,1,l?4-4*(n.simplification||1):(1+n.roughness)/2),h=aJ(e,n);if(a)if(n.fillStyle==="solid")if(u.length===1){let f=aJ(e,Object.assign(Object.assign({},n),{disableMultiStroke:!0,roughness:n.roughness?n.roughness+n.fillShapeRoughnessGain:0}));i.push({type:"fillPath",ops:this._mergedShape(f.ops)})}else i.push(D9(u,n));else i.push(km(u,n));return s&&(l?u.forEach((f=>{i.push(ZT(f,!1,n))})):i.push(h)),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:co};break;case"fillPath":s={d:this.opsToPath(a),stroke:co,strokeWidth:0,fill:n.fill||co};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||co,strokeWidth:n,fill:co}}_mergedShape(e){return e.filter(((r,n)=>n===0||r.op!=="move"))}},z9=class{static{o(this,"st")}constructor(e,r){this.canvas=e,this.ctx=this.canvas.getContext("2d"),this.gen=new Em(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 l=e.shape==="curve"||e.shape==="polygon"||e.shape==="path"?"evenodd":"nonzero";this._drawToContext(i,s,a,l),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((l=>+l.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,l=!1,u){let h=this.gen.arc(e,r,n,i,a,s,l,u);return this.draw(h),h}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}},QT="http://www.w3.org/2000/svg",G9=class{static{o(this,"ot")}constructor(e,r){this.svg=e,this.gen=new Em(r)}draw(e){let r=e.sets||[],n=e.options||this.getDefaultOptions(),i=this.svg.ownerDocument||window.document,a=i.createElementNS(QT,"g"),s=e.options.fixedDecimalPlaceDigits;for(let l of r){let u=null;switch(l.type){case"path":u=i.createElementNS(QT,"path"),u.setAttribute("d",this.opsToPath(l,s)),u.setAttribute("stroke",n.stroke),u.setAttribute("stroke-width",n.strokeWidth+""),u.setAttribute("fill","none"),n.strokeLineDash&&u.setAttribute("stroke-dasharray",n.strokeLineDash.join(" ").trim()),n.strokeLineDashOffset&&u.setAttribute("stroke-dashoffset",`${n.strokeLineDashOffset}`);break;case"fillPath":u=i.createElementNS(QT,"path"),u.setAttribute("d",this.opsToPath(l,s)),u.setAttribute("stroke","none"),u.setAttribute("stroke-width","0"),u.setAttribute("fill",n.fill||""),e.shape!=="curve"&&e.shape!=="polygon"||u.setAttribute("fill-rule","evenodd");break;case"fillSketch":u=this.fillSketch(i,l,n)}u&&a.appendChild(u)}return a}fillSketch(e,r,n){let i=n.fillWeight;i<0&&(i=n.strokeWidth/2);let a=e.createElementNS(QT,"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,l=!1,u){let h=this.gen.arc(e,r,n,i,a,s,l,u);return this.draw(h)}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)}},Ze={canvas:o((t,e)=>new z9(t,e),"canvas"),svg:o((t,e)=>new G9(t,e),"svg"),generator:o(t=>new Em(t),"generator"),newSeed:o(()=>Em.newSeed(),"newSeed")}});function gJ(t,e){let{labelStyles:r}=je(e);e.labelStyle=r;let n=st(e),i=n;n||(i="anchor");let a=t.insert("g").attr("class",i).attr("id",e.domId||e.id),s=1,{cssStyles:l}=e,u=Ze.svg(a),h=Je(e,{fill:"black",stroke:"none",fillStyle:"solid"});e.look!=="handDrawn"&&(h.roughness=0);let f=u.circle(0,0,s*2,h),d=a.insert(()=>f,":first-child");return d.attr("class","anchor").attr("style",Cn(l)),Qe(e,d),e.intersect=function(p){return X.info("Circle intersect",e,s,p),Xe.circle(e,s,p)},a}var yJ=N(()=>{"use strict";pt();It();Ut();$t();Ht();tr();o(gJ,"anchor")});function vJ(t,e,r,n,i,a,s){let u=(t+r)/2,h=(e+n)/2,f=Math.atan2(n-e,r-t),d=(r-t)/2,p=(n-e)/2,m=d/i,g=p/a,y=Math.sqrt(m**2+g**2);if(y>1)throw new Error("The given radii are too small to create an arc between the points.");let v=Math.sqrt(1-y**2),x=u+v*a*Math.sin(f)*(s?-1:1),b=h-v*i*Math.cos(f)*(s?-1:1),T=Math.atan2((e-b)/a,(t-x)/i),w=Math.atan2((n-b)/a,(r-x)/i)-T;s&&w<0&&(w+=2*Math.PI),!s&&w>0&&(w-=2*Math.PI);let k=[];for(let A=0;A<20;A++){let C=A/19,R=T+C*w,I=x+i*Math.cos(R),L=b+a*Math.sin(R);k.push({x:I,y:L})}return k}async function xJ(t,e){let{labelStyles:r,nodeStyles:n}=je(e);e.labelStyle=r;let{shapeSvg:i,bbox:a}=await ut(t,e,st(e)),s=a.width+e.padding+20,l=a.height+e.padding,u=l/2,h=u/(2.5+l/50),{cssStyles:f}=e,d=[{x:s/2,y:-l/2},{x:-s/2,y:-l/2},...vJ(-s/2,-l/2,-s/2,l/2,h,u,!1),{x:s/2,y:l/2},...vJ(s/2,l/2,s/2,-l/2,h,u,!0)],p=Ze.svg(i),m=Je(e,{});e.look!=="handDrawn"&&(m.roughness=0,m.fillStyle="solid");let g=Vt(d),y=p.path(g,m),v=i.insert(()=>y,":first-child");return v.attr("class","basic label-container"),f&&e.look!=="handDrawn"&&v.selectAll("path").attr("style",f),n&&e.look!=="handDrawn"&&v.selectAll("path").attr("style",n),v.attr("transform",`translate(${h/2}, 0)`),Qe(e,v),e.intersect=function(x){return Xe.polygon(e,d,x)},i}var bJ=N(()=>{"use strict";It();Ut();$t();Ht();o(vJ,"generateArcPoints");o(xJ,"bowTieRect")});function Bs(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+")")}var Jh=N(()=>{"use strict";o(Bs,"insertPolygonShape")});async function TJ(t,e){let{labelStyles:r,nodeStyles:n}=je(e);e.labelStyle=r;let{shapeSvg:i,bbox:a}=await ut(t,e,st(e)),s=a.height+e.padding,l=12,u=a.width+e.padding+l,h=0,f=u,d=-s,p=0,m=[{x:h+l,y:d},{x:f,y:d},{x:f,y:p},{x:h,y:p},{x:h,y:d+l},{x:h+l,y:d}],g,{cssStyles:y}=e;if(e.look==="handDrawn"){let v=Ze.svg(i),x=Je(e,{}),b=Vt(m),T=v.path(b,x);g=i.insert(()=>T,":first-child").attr("transform",`translate(${-u/2}, ${s/2})`),y&&g.attr("style",y)}else g=Bs(i,u,s,m);return n&&g.attr("style",n),Qe(e,g),e.intersect=function(v){return Xe.polygon(e,m,v)},i}var wJ=N(()=>{"use strict";It();Ut();$t();Ht();Jh();It();o(TJ,"card")});function kJ(t,e){let{nodeStyles:r}=je(e);e.label="";let n=t.insert("g").attr("class",st(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}],l=Ze.svg(n),u=Je(e,{});e.look!=="handDrawn"&&(u.roughness=0,u.fillStyle="solid");let h=Vt(s),f=l.path(h,u),d=n.insert(()=>f,":first-child");return i&&e.look!=="handDrawn"&&d.selectAll("path").attr("style",i),r&&e.look!=="handDrawn"&&d.selectAll("path").attr("style",r),e.width=28,e.height=28,e.intersect=function(p){return Xe.polygon(e,s,p)},n}var EJ=N(()=>{"use strict";Ut();Ht();$t();It();o(kJ,"choice")});async function iw(t,e,r){let{labelStyles:n,nodeStyles:i}=je(e);e.labelStyle=n;let{shapeSvg:a,bbox:s,halfPadding:l}=await ut(t,e,st(e)),u=r?.padding??l,h=s.width/2+u,f,{cssStyles:d}=e;if(e.look==="handDrawn"){let p=Ze.svg(a),m=Je(e,{}),g=p.circle(0,0,h*2,m);f=a.insert(()=>g,":first-child"),f.attr("class","basic label-container").attr("style",Cn(d))}else f=a.insert("circle",":first-child").attr("class","basic label-container").attr("style",i).attr("r",h).attr("cx",0).attr("cy",0);return Qe(e,f),e.calcIntersect=function(p,m){let g=p.width/2;return Xe.circle(p,g,m)},e.intersect=function(p){return X.info("Circle intersect",e,h,p),Xe.circle(e,h,p)},a}var U9=N(()=>{"use strict";Ht();pt();tr();Ut();$t();It();o(iw,"circle")});function cRe(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},l={x:n/2*e,y:-(n/2)*r};return`M ${a.x},${a.y} L ${l.x},${l.y} - M ${i.x},${i.y} L ${s.x},${s.y}`}function SJ(t,e){let{labelStyles:r,nodeStyles:n}=je(e);e.labelStyle=r,e.label="";let i=t.insert("g").attr("class",st(e)).attr("id",e.domId??e.id),a=Math.max(30,e?.width??0),{cssStyles:s}=e,l=Ze.svg(i),u=Je(e,{});e.look!=="handDrawn"&&(u.roughness=0,u.fillStyle="solid");let h=l.circle(0,0,a*2,u),f=cRe(a),d=l.path(f,u),p=i.insert(()=>h,":first-child");return p.insert(()=>d),s&&e.look!=="handDrawn"&&p.selectAll("path").attr("style",s),n&&e.look!=="handDrawn"&&p.selectAll("path").attr("style",n),Qe(e,p),e.intersect=function(m){return X.info("crossedCircle intersect",e,{radius:a,point:m}),Xe.circle(e,a,m)},i}var CJ=N(()=>{"use strict";pt();It();$t();Ht();Ut();o(cRe,"createLine");o(SJ,"crossedCircle")});function ef(t,e,r,n=100,i=0,a=180){let s=[],l=i*Math.PI/180,f=(a*Math.PI/180-l)/(n-1);for(let d=0;dT,":first-child").attr("stroke-opacity",0),S.insert(()=>x,":first-child"),S.attr("class","text"),f&&e.look!=="handDrawn"&&S.selectAll("path").attr("style",f),n&&e.look!=="handDrawn"&&S.selectAll("path").attr("style",n),S.attr("transform",`translate(${h}, 0)`),s.attr("transform",`translate(${-l/2+h-(a.x-(a.left??0))},${-u/2+(e.padding??0)/2-(a.y-(a.top??0))})`),Qe(e,S),e.intersect=function(w){return Xe.polygon(e,p,w)},i}var _J=N(()=>{"use strict";It();Ut();$t();Ht();o(ef,"generateCirclePoints");o(AJ,"curlyBraceLeft")});function tf(t,e,r,n=100,i=0,a=180){let s=[],l=i*Math.PI/180,f=(a*Math.PI/180-l)/(n-1);for(let d=0;dT,":first-child").attr("stroke-opacity",0),S.insert(()=>x,":first-child"),S.attr("class","text"),f&&e.look!=="handDrawn"&&S.selectAll("path").attr("style",f),n&&e.look!=="handDrawn"&&S.selectAll("path").attr("style",n),S.attr("transform",`translate(${-h}, 0)`),s.attr("transform",`translate(${-l/2+(e.padding??0)/2-(a.x-(a.left??0))},${-u/2+(e.padding??0)/2-(a.y-(a.top??0))})`),Qe(e,S),e.intersect=function(w){return Xe.polygon(e,p,w)},i}var LJ=N(()=>{"use strict";It();Ut();$t();Ht();o(tf,"generateCirclePoints");o(DJ,"curlyBraceRight")});function Oa(t,e,r,n=100,i=0,a=180){let s=[],l=i*Math.PI/180,f=(a*Math.PI/180-l)/(n-1);for(let d=0;dA,":first-child").attr("stroke-opacity",0),C.insert(()=>b,":first-child"),C.insert(()=>w,":first-child"),C.attr("class","text"),f&&e.look!=="handDrawn"&&C.selectAll("path").attr("style",f),n&&e.look!=="handDrawn"&&C.selectAll("path").attr("style",n),C.attr("transform",`translate(${h-h/4}, 0)`),s.attr("transform",`translate(${-l/2+(e.padding??0)/2-(a.x-(a.left??0))},${-u/2+(e.padding??0)/2-(a.y-(a.top??0))})`),Qe(e,C),e.intersect=function(R){return Xe.polygon(e,m,R)},i}var NJ=N(()=>{"use strict";It();Ut();$t();Ht();o(Oa,"generateCirclePoints");o(RJ,"curlyBraces")});async function MJ(t,e){let{labelStyles:r,nodeStyles:n}=je(e);e.labelStyle=r;let{shapeSvg:i,bbox:a}=await ut(t,e,st(e)),s=80,l=20,u=Math.max(s,(a.width+(e.padding??0)*2)*1.25,e?.width??0),h=Math.max(l,a.height+(e.padding??0)*2,e?.height??0),f=h/2,{cssStyles:d}=e,p=Ze.svg(i),m=Je(e,{});e.look!=="handDrawn"&&(m.roughness=0,m.fillStyle="solid");let g=u,y=h,v=g-f,x=y/4,b=[{x:v,y:0},{x,y:0},{x:0,y:y/2},{x,y},{x:v,y},...Kd(-v,-y/2,f,50,270,90)],T=Vt(b),S=p.path(T,m),w=i.insert(()=>S,":first-child");return w.attr("class","basic label-container"),d&&e.look!=="handDrawn"&&w.selectChildren("path").attr("style",d),n&&e.look!=="handDrawn"&&w.selectChildren("path").attr("style",n),w.attr("transform",`translate(${-u/2}, ${-h/2})`),Qe(e,w),e.intersect=function(k){return Xe.polygon(e,b,k)},i}var IJ=N(()=>{"use strict";It();Ut();$t();Ht();o(MJ,"curvedTrapezoid")});async function OJ(t,e){let{labelStyles:r,nodeStyles:n}=je(e);e.labelStyle=r;let{shapeSvg:i,bbox:a,label:s}=await ut(t,e,st(e)),l=Math.max(a.width+e.padding,e.width??0),u=l/2,h=u/(2.5+l/50),f=Math.max(a.height+h+e.padding,e.height??0),d,{cssStyles:p}=e;if(e.look==="handDrawn"){let m=Ze.svg(i),g=hRe(0,0,l,f,u,h),y=fRe(0,h,l,f,u,h),v=m.path(g,Je(e,{})),x=m.path(y,Je(e,{fill:"none"}));d=i.insert(()=>x,":first-child"),d=i.insert(()=>v,":first-child"),d.attr("class","basic label-container"),p&&d.attr("style",p)}else{let m=uRe(0,0,l,f,u,h);d=i.insert("path",":first-child").attr("d",m).attr("class","basic label-container").attr("style",Cn(p)).attr("style",n)}return d.attr("label-offset-y",h),d.attr("transform",`translate(${-l/2}, ${-(f/2+h)})`),Qe(e,d),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(m){let g=Xe.rect(e,m),y=g.x-(e.x??0);if(u!=0&&(Math.abs(y)<(e.width??0)/2||Math.abs(y)==(e.width??0)/2&&Math.abs(g.y-(e.y??0))>(e.height??0)/2-h)){let v=h*h*(1-y*y/(u*u));v>0&&(v=Math.sqrt(v)),v=h-v,m.y-(e.y??0)>0&&(v=-v),g.y+=v}return g},i}var uRe,hRe,fRe,PJ=N(()=>{"use strict";It();Ut();$t();Ht();tr();uRe=o((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"),hRe=o((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"),fRe=o((t,e,r,n,i,a)=>[`M${t-r/2},${-n/2}`,`a${i},${a} 0,0,0 ${r},0`].join(" "),"createInnerCylinderPathD");o(OJ,"cylinder")});async function BJ(t,e){let{labelStyles:r,nodeStyles:n}=je(e);e.labelStyle=r;let{shapeSvg:i,bbox:a,label:s}=await ut(t,e,st(e)),l=a.width+e.padding,u=a.height+e.padding,h=u*.2,f=-l/2,d=-u/2-h/2,{cssStyles:p}=e,m=Ze.svg(i),g=Je(e,{});e.look!=="handDrawn"&&(g.roughness=0,g.fillStyle="solid");let y=[{x:f,y:d+h},{x:-f,y:d+h},{x:-f,y:-d},{x:f,y:-d},{x:f,y:d},{x:-f,y:d},{x:-f,y:d+h}],v=m.polygon(y.map(b=>[b.x,b.y]),g),x=i.insert(()=>v,":first-child");return x.attr("class","basic label-container"),p&&e.look!=="handDrawn"&&x.selectAll("path").attr("style",p),n&&e.look!=="handDrawn"&&x.selectAll("path").attr("style",n),s.attr("transform",`translate(${f+(e.padding??0)/2-(a.x-(a.left??0))}, ${d+h+(e.padding??0)/2-(a.y-(a.top??0))})`),Qe(e,x),e.intersect=function(b){return Xe.rect(e,b)},i}var FJ=N(()=>{"use strict";It();Ut();$t();Ht();o(BJ,"dividedRectangle")});async function $J(t,e){let{labelStyles:r,nodeStyles:n}=je(e);e.labelStyle=r;let{shapeSvg:i,bbox:a,halfPadding:s}=await ut(t,e,st(e)),u=a.width/2+s+5,h=a.width/2+s,f,{cssStyles:d}=e;if(e.look==="handDrawn"){let p=Ze.svg(i),m=Je(e,{roughness:.2,strokeWidth:2.5}),g=Je(e,{roughness:.2,strokeWidth:1.5}),y=p.circle(0,0,u*2,m),v=p.circle(0,0,h*2,g);f=i.insert("g",":first-child"),f.attr("class",Cn(e.cssClasses)).attr("style",Cn(d)),f.node()?.appendChild(y),f.node()?.appendChild(v)}else{f=i.insert("g",":first-child");let p=f.insert("circle",":first-child"),m=f.insert("circle");f.attr("class","basic label-container").attr("style",n),p.attr("class","outer-circle").attr("style",n).attr("r",u).attr("cx",0).attr("cy",0),m.attr("class","inner-circle").attr("style",n).attr("r",h).attr("cx",0).attr("cy",0)}return Qe(e,f),e.intersect=function(p){return X.info("DoubleCircle intersect",e,u,p),Xe.circle(e,u,p)},i}var zJ=N(()=>{"use strict";pt();It();Ut();$t();Ht();tr();o($J,"doublecircle")});function GJ(t,e,{config:{themeVariables:r}}){let{labelStyles:n,nodeStyles:i}=je(e);e.label="",e.labelStyle=n;let a=t.insert("g").attr("class",st(e)).attr("id",e.domId??e.id),s=7,{cssStyles:l}=e,u=Ze.svg(a),{nodeBorder:h}=r,f=Je(e,{fillStyle:"solid"});e.look!=="handDrawn"&&(f.roughness=0);let d=u.circle(0,0,s*2,f),p=a.insert(()=>d,":first-child");return p.selectAll("path").attr("style",`fill: ${h} !important;`),l&&l.length>0&&e.look!=="handDrawn"&&p.selectAll("path").attr("style",l),i&&e.look!=="handDrawn"&&p.selectAll("path").attr("style",i),Qe(e,p),e.intersect=function(m){return X.info("filledCircle intersect",e,{radius:s,point:m}),Xe.circle(e,s,m)},a}var VJ=N(()=>{"use strict";Ht();pt();Ut();$t();It();o(GJ,"filledCircle")});async function UJ(t,e){let{labelStyles:r,nodeStyles:n}=je(e);e.labelStyle=r;let{shapeSvg:i,bbox:a,label:s}=await ut(t,e,st(e)),l=a.width+(e.padding??0),u=l+a.height,h=l+a.height,f=[{x:0,y:-u},{x:h,y:-u},{x:h/2,y:0}],{cssStyles:d}=e,p=Ze.svg(i),m=Je(e,{});e.look!=="handDrawn"&&(m.roughness=0,m.fillStyle="solid");let g=Vt(f),y=p.path(g,m),v=i.insert(()=>y,":first-child").attr("transform",`translate(${-u/2}, ${u/2})`);return d&&e.look!=="handDrawn"&&v.selectChildren("path").attr("style",d),n&&e.look!=="handDrawn"&&v.selectChildren("path").attr("style",n),e.width=l,e.height=u,Qe(e,v),s.attr("transform",`translate(${-a.width/2-(a.x-(a.left??0))}, ${-u/2+(e.padding??0)/2+(a.y-(a.top??0))})`),e.intersect=function(x){return X.info("Triangle intersect",e,f,x),Xe.polygon(e,f,x)},i}var HJ=N(()=>{"use strict";pt();It();Ut();$t();Ht();It();o(UJ,"flippedTriangle")});function qJ(t,e,{dir:r,config:{state:n,themeVariables:i}}){let{nodeStyles:a}=je(e);e.label="";let s=t.insert("g").attr("class",st(e)).attr("id",e.domId??e.id),{cssStyles:l}=e,u=Math.max(70,e?.width??0),h=Math.max(10,e?.height??0);r==="LR"&&(u=Math.max(10,e?.width??0),h=Math.max(70,e?.height??0));let f=-1*u/2,d=-1*h/2,p=Ze.svg(s),m=Je(e,{stroke:i.lineColor,fill:i.lineColor});e.look!=="handDrawn"&&(m.roughness=0,m.fillStyle="solid");let g=p.rectangle(f,d,u,h,m),y=s.insert(()=>g,":first-child");l&&e.look!=="handDrawn"&&y.selectAll("path").attr("style",l),a&&e.look!=="handDrawn"&&y.selectAll("path").attr("style",a),Qe(e,y);let v=n?.padding??0;return e.width&&e.height&&(e.width+=v/2||0,e.height+=v/2||0),e.intersect=function(x){return Xe.rect(e,x)},s}var WJ=N(()=>{"use strict";Ht();Ut();$t();It();o(qJ,"forkJoin")});async function YJ(t,e){let{labelStyles:r,nodeStyles:n}=je(e);e.labelStyle=r;let i=80,a=50,{shapeSvg:s,bbox:l}=await ut(t,e,st(e)),u=Math.max(i,l.width+(e.padding??0)*2,e?.width??0),h=Math.max(a,l.height+(e.padding??0)*2,e?.height??0),f=h/2,{cssStyles:d}=e,p=Ze.svg(s),m=Je(e,{});e.look!=="handDrawn"&&(m.roughness=0,m.fillStyle="solid");let g=[{x:-u/2,y:-h/2},{x:u/2-f,y:-h/2},...Kd(-u/2+f,0,f,50,90,270),{x:u/2-f,y:h/2},{x:-u/2,y:h/2}],y=Vt(g),v=p.path(y,m),x=s.insert(()=>v,":first-child");return x.attr("class","basic label-container"),d&&e.look!=="handDrawn"&&x.selectChildren("path").attr("style",d),n&&e.look!=="handDrawn"&&x.selectChildren("path").attr("style",n),Qe(e,x),e.intersect=function(b){return X.info("Pill intersect",e,{radius:f,point:b}),Xe.polygon(e,g,b)},s}var XJ=N(()=>{"use strict";pt();It();Ut();$t();Ht();o(YJ,"halfRoundedRectangle")});async function jJ(t,e){let{labelStyles:r,nodeStyles:n}=je(e);e.labelStyle=r;let{shapeSvg:i,bbox:a}=await ut(t,e,st(e)),s=a.height+(e.padding??0),l=a.width+(e.padding??0)*2.5,{cssStyles:u}=e,h=Ze.svg(i),f=Je(e,{});e.look!=="handDrawn"&&(f.roughness=0,f.fillStyle="solid");let d=l/2,p=d/6;d=d+p;let m=s/2,g=m/2,y=d-g,v=[{x:-y,y:-m},{x:0,y:-m},{x:y,y:-m},{x:d,y:0},{x:y,y:m},{x:0,y:m},{x:-y,y:m},{x:-d,y:0}],x=Vt(v),b=h.path(x,f),T=i.insert(()=>b,":first-child");return T.attr("class","basic label-container"),u&&e.look!=="handDrawn"&&T.selectChildren("path").attr("style",u),n&&e.look!=="handDrawn"&&T.selectChildren("path").attr("style",n),e.width=l,e.height=s,Qe(e,T),e.intersect=function(S){return Xe.polygon(e,v,S)},i}var KJ=N(()=>{"use strict";It();Ut();$t();Ht();o(jJ,"hexagon")});async function QJ(t,e){let{labelStyles:r,nodeStyles:n}=je(e);e.label="",e.labelStyle=r;let{shapeSvg:i}=await ut(t,e,st(e)),a=Math.max(30,e?.width??0),s=Math.max(30,e?.height??0),{cssStyles:l}=e,u=Ze.svg(i),h=Je(e,{});e.look!=="handDrawn"&&(h.roughness=0,h.fillStyle="solid");let f=[{x:0,y:0},{x:a,y:0},{x:0,y:s},{x:a,y:s}],d=Vt(f),p=u.path(d,h),m=i.insert(()=>p,":first-child");return m.attr("class","basic label-container"),l&&e.look!=="handDrawn"&&m.selectChildren("path").attr("style",l),n&&e.look!=="handDrawn"&&m.selectChildren("path").attr("style",n),m.attr("transform",`translate(${-a/2}, ${-s/2})`),Qe(e,m),e.intersect=function(g){return X.info("Pill intersect",e,{points:f}),Xe.polygon(e,f,g)},i}var ZJ=N(()=>{"use strict";pt();It();Ut();$t();Ht();o(QJ,"hourglass")});async function JJ(t,e,{config:{themeVariables:r,flowchart:n}}){let{labelStyles:i}=je(e);e.labelStyle=i;let a=e.assetHeight??48,s=e.assetWidth??48,l=Math.max(a,s),u=n?.wrappingWidth;e.width=Math.max(l,u??0);let{shapeSvg:h,bbox:f,label:d}=await ut(t,e,"icon-shape default"),p=e.pos==="t",m=l,g=l,{nodeBorder:y}=r,{stylesMap:v}=wc(e),x=-g/2,b=-m/2,T=e.label?8:0,S=Ze.svg(h),w=Je(e,{stroke:"none",fill:"none"});e.look!=="handDrawn"&&(w.roughness=0,w.fillStyle="solid");let k=S.rectangle(x,b,g,m,w),A=Math.max(g,f.width),C=m+f.height+T,R=S.rectangle(-A/2,-C/2,A,C,{...w,fill:"transparent",stroke:"none"}),I=h.insert(()=>k,":first-child"),L=h.insert(()=>R);if(e.icon){let E=h.append("g");E.html(`${await _s(e.icon,{height:l,width:l,fallbackPrefix:""})}`);let D=E.node().getBBox(),_=D.width,O=D.height,M=D.x,P=D.y;E.attr("transform",`translate(${-_/2-M},${p?f.height/2+T/2-O/2-P:-f.height/2-T/2-O/2-P})`),E.attr("style",`color: ${v.get("stroke")??y};`)}return d.attr("transform",`translate(${-f.width/2-(f.x-(f.left??0))},${p?-C/2:C/2-f.height})`),I.attr("transform",`translate(0,${p?f.height/2+T/2:-f.height/2-T/2})`),Qe(e,L),e.intersect=function(E){if(X.info("iconSquare intersect",e,E),!e.label)return Xe.rect(e,E);let D=e.x??0,_=e.y??0,O=e.height??0,M=[];return p?M=[{x:D-f.width/2,y:_-O/2},{x:D+f.width/2,y:_-O/2},{x:D+f.width/2,y:_-O/2+f.height+T},{x:D+g/2,y:_-O/2+f.height+T},{x:D+g/2,y:_+O/2},{x:D-g/2,y:_+O/2},{x:D-g/2,y:_-O/2+f.height+T},{x:D-f.width/2,y:_-O/2+f.height+T}]:M=[{x:D-g/2,y:_-O/2},{x:D+g/2,y:_-O/2},{x:D+g/2,y:_-O/2+m},{x:D+f.width/2,y:_-O/2+m},{x:D+f.width/2/2,y:_+O/2},{x:D-f.width/2,y:_+O/2},{x:D-f.width/2,y:_-O/2+m},{x:D-g/2,y:_-O/2+m}],Xe.polygon(e,M,E)},h}var eee=N(()=>{"use strict";Ht();pt();nc();Ut();$t();It();o(JJ,"icon")});async function tee(t,e,{config:{themeVariables:r,flowchart:n}}){let{labelStyles:i}=je(e);e.labelStyle=i;let a=e.assetHeight??48,s=e.assetWidth??48,l=Math.max(a,s),u=n?.wrappingWidth;e.width=Math.max(l,u??0);let{shapeSvg:h,bbox:f,label:d}=await ut(t,e,"icon-shape default"),p=20,m=e.label?8:0,g=e.pos==="t",{nodeBorder:y,mainBkg:v}=r,{stylesMap:x}=wc(e),b=Ze.svg(h),T=Je(e,{});e.look!=="handDrawn"&&(T.roughness=0,T.fillStyle="solid");let S=x.get("fill");T.stroke=S??v;let w=h.append("g");e.icon&&w.html(`${await _s(e.icon,{height:l,width:l,fallbackPrefix:""})}`);let k=w.node().getBBox(),A=k.width,C=k.height,R=k.x,I=k.y,L=Math.max(A,C)*Math.SQRT2+p*2,E=b.circle(0,0,L,T),D=Math.max(L,f.width),_=L+f.height+m,O=b.rectangle(-D/2,-_/2,D,_,{...T,fill:"transparent",stroke:"none"}),M=h.insert(()=>E,":first-child"),P=h.insert(()=>O);return w.attr("transform",`translate(${-A/2-R},${g?f.height/2+m/2-C/2-I:-f.height/2-m/2-C/2-I})`),w.attr("style",`color: ${x.get("stroke")??y};`),d.attr("transform",`translate(${-f.width/2-(f.x-(f.left??0))},${g?-_/2:_/2-f.height})`),M.attr("transform",`translate(0,${g?f.height/2+m/2:-f.height/2-m/2})`),Qe(e,P),e.intersect=function(B){return X.info("iconSquare intersect",e,B),Xe.rect(e,B)},h}var ree=N(()=>{"use strict";Ht();pt();nc();Ut();$t();It();o(tee,"iconCircle")});var Fs,Zd=N(()=>{"use strict";Fs=o((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")});async function nee(t,e,{config:{themeVariables:r,flowchart:n}}){let{labelStyles:i}=je(e);e.labelStyle=i;let a=e.assetHeight??48,s=e.assetWidth??48,l=Math.max(a,s),u=n?.wrappingWidth;e.width=Math.max(l,u??0);let{shapeSvg:h,bbox:f,halfPadding:d,label:p}=await ut(t,e,"icon-shape default"),m=e.pos==="t",g=l+d*2,y=l+d*2,{nodeBorder:v,mainBkg:x}=r,{stylesMap:b}=wc(e),T=-y/2,S=-g/2,w=e.label?8:0,k=Ze.svg(h),A=Je(e,{});e.look!=="handDrawn"&&(A.roughness=0,A.fillStyle="solid");let C=b.get("fill");A.stroke=C??x;let R=k.path(Fs(T,S,y,g,5),A),I=Math.max(y,f.width),L=g+f.height+w,E=k.rectangle(-I/2,-L/2,I,L,{...A,fill:"transparent",stroke:"none"}),D=h.insert(()=>R,":first-child").attr("class","icon-shape2"),_=h.insert(()=>E);if(e.icon){let O=h.append("g");O.html(`${await _s(e.icon,{height:l,width:l,fallbackPrefix:""})}`);let M=O.node().getBBox(),P=M.width,B=M.height,F=M.x,G=M.y;O.attr("transform",`translate(${-P/2-F},${m?f.height/2+w/2-B/2-G:-f.height/2-w/2-B/2-G})`),O.attr("style",`color: ${b.get("stroke")??v};`)}return p.attr("transform",`translate(${-f.width/2-(f.x-(f.left??0))},${m?-L/2:L/2-f.height})`),D.attr("transform",`translate(0,${m?f.height/2+w/2:-f.height/2-w/2})`),Qe(e,_),e.intersect=function(O){if(X.info("iconSquare intersect",e,O),!e.label)return Xe.rect(e,O);let M=e.x??0,P=e.y??0,B=e.height??0,F=[];return m?F=[{x:M-f.width/2,y:P-B/2},{x:M+f.width/2,y:P-B/2},{x:M+f.width/2,y:P-B/2+f.height+w},{x:M+y/2,y:P-B/2+f.height+w},{x:M+y/2,y:P+B/2},{x:M-y/2,y:P+B/2},{x:M-y/2,y:P-B/2+f.height+w},{x:M-f.width/2,y:P-B/2+f.height+w}]:F=[{x:M-y/2,y:P-B/2},{x:M+y/2,y:P-B/2},{x:M+y/2,y:P-B/2+g},{x:M+f.width/2,y:P-B/2+g},{x:M+f.width/2/2,y:P+B/2},{x:M-f.width/2,y:P+B/2},{x:M-f.width/2,y:P-B/2+g},{x:M-y/2,y:P-B/2+g}],Xe.polygon(e,F,O)},h}var iee=N(()=>{"use strict";Ht();pt();nc();Ut();$t();Zd();It();o(nee,"iconRounded")});async function aee(t,e,{config:{themeVariables:r,flowchart:n}}){let{labelStyles:i}=je(e);e.labelStyle=i;let a=e.assetHeight??48,s=e.assetWidth??48,l=Math.max(a,s),u=n?.wrappingWidth;e.width=Math.max(l,u??0);let{shapeSvg:h,bbox:f,halfPadding:d,label:p}=await ut(t,e,"icon-shape default"),m=e.pos==="t",g=l+d*2,y=l+d*2,{nodeBorder:v,mainBkg:x}=r,{stylesMap:b}=wc(e),T=-y/2,S=-g/2,w=e.label?8:0,k=Ze.svg(h),A=Je(e,{});e.look!=="handDrawn"&&(A.roughness=0,A.fillStyle="solid");let C=b.get("fill");A.stroke=C??x;let R=k.path(Fs(T,S,y,g,.1),A),I=Math.max(y,f.width),L=g+f.height+w,E=k.rectangle(-I/2,-L/2,I,L,{...A,fill:"transparent",stroke:"none"}),D=h.insert(()=>R,":first-child"),_=h.insert(()=>E);if(e.icon){let O=h.append("g");O.html(`${await _s(e.icon,{height:l,width:l,fallbackPrefix:""})}`);let M=O.node().getBBox(),P=M.width,B=M.height,F=M.x,G=M.y;O.attr("transform",`translate(${-P/2-F},${m?f.height/2+w/2-B/2-G:-f.height/2-w/2-B/2-G})`),O.attr("style",`color: ${b.get("stroke")??v};`)}return p.attr("transform",`translate(${-f.width/2-(f.x-(f.left??0))},${m?-L/2:L/2-f.height})`),D.attr("transform",`translate(0,${m?f.height/2+w/2:-f.height/2-w/2})`),Qe(e,_),e.intersect=function(O){if(X.info("iconSquare intersect",e,O),!e.label)return Xe.rect(e,O);let M=e.x??0,P=e.y??0,B=e.height??0,F=[];return m?F=[{x:M-f.width/2,y:P-B/2},{x:M+f.width/2,y:P-B/2},{x:M+f.width/2,y:P-B/2+f.height+w},{x:M+y/2,y:P-B/2+f.height+w},{x:M+y/2,y:P+B/2},{x:M-y/2,y:P+B/2},{x:M-y/2,y:P-B/2+f.height+w},{x:M-f.width/2,y:P-B/2+f.height+w}]:F=[{x:M-y/2,y:P-B/2},{x:M+y/2,y:P-B/2},{x:M+y/2,y:P-B/2+g},{x:M+f.width/2,y:P-B/2+g},{x:M+f.width/2/2,y:P+B/2},{x:M-f.width/2,y:P+B/2},{x:M-f.width/2,y:P-B/2+g},{x:M-y/2,y:P-B/2+g}],Xe.polygon(e,F,O)},h}var see=N(()=>{"use strict";Ht();pt();nc();Ut();Zd();$t();It();o(aee,"iconSquare")});async function oee(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}=je(e);e.labelStyle=s;let l=r?.wrappingWidth;e.defaultWidth=r?.wrappingWidth;let u=Math.max(e.label?l??0:0,e?.assetWidth??i),h=e.constraint==="on"&&e?.assetHeight?e.assetHeight*e.imageAspectRatio:u,f=e.constraint==="on"?h/e.imageAspectRatio:e?.assetHeight??a;e.width=Math.max(h,l??0);let{shapeSvg:d,bbox:p,label:m}=await ut(t,e,"image-shape default"),g=e.pos==="t",y=-h/2,v=-f/2,x=e.label?8:0,b=Ze.svg(d),T=Je(e,{});e.look!=="handDrawn"&&(T.roughness=0,T.fillStyle="solid");let S=b.rectangle(y,v,h,f,T),w=Math.max(h,p.width),k=f+p.height+x,A=b.rectangle(-w/2,-k/2,w,k,{...T,fill:"none",stroke:"none"}),C=d.insert(()=>S,":first-child"),R=d.insert(()=>A);if(e.img){let I=d.append("image");I.attr("href",e.img),I.attr("width",h),I.attr("height",f),I.attr("preserveAspectRatio","none"),I.attr("transform",`translate(${-h/2},${g?k/2-f:-k/2})`)}return m.attr("transform",`translate(${-p.width/2-(p.x-(p.left??0))},${g?-f/2-p.height/2-x/2:f/2-p.height/2+x/2})`),C.attr("transform",`translate(0,${g?p.height/2+x/2:-p.height/2-x/2})`),Qe(e,R),e.intersect=function(I){if(X.info("iconSquare intersect",e,I),!e.label)return Xe.rect(e,I);let L=e.x??0,E=e.y??0,D=e.height??0,_=[];return g?_=[{x:L-p.width/2,y:E-D/2},{x:L+p.width/2,y:E-D/2},{x:L+p.width/2,y:E-D/2+p.height+x},{x:L+h/2,y:E-D/2+p.height+x},{x:L+h/2,y:E+D/2},{x:L-h/2,y:E+D/2},{x:L-h/2,y:E-D/2+p.height+x},{x:L-p.width/2,y:E-D/2+p.height+x}]:_=[{x:L-h/2,y:E-D/2},{x:L+h/2,y:E-D/2},{x:L+h/2,y:E-D/2+f},{x:L+p.width/2,y:E-D/2+f},{x:L+p.width/2/2,y:E+D/2},{x:L-p.width/2,y:E+D/2},{x:L-p.width/2,y:E-D/2+f},{x:L-h/2,y:E-D/2+f}],Xe.polygon(e,_,I)},d}var lee=N(()=>{"use strict";Ht();pt();Ut();$t();It();o(oee,"imageSquare")});async function cee(t,e){let{labelStyles:r,nodeStyles:n}=je(e);e.labelStyle=r;let{shapeSvg:i,bbox:a}=await ut(t,e,st(e)),s=Math.max(a.width+(e.padding??0)*2,e?.width??0),l=Math.max(a.height+(e.padding??0)*2,e?.height??0),u=[{x:0,y:0},{x:s,y:0},{x:s+3*l/6,y:-l},{x:-3*l/6,y:-l}],h,{cssStyles:f}=e;if(e.look==="handDrawn"){let d=Ze.svg(i),p=Je(e,{}),m=Vt(u),g=d.path(m,p);h=i.insert(()=>g,":first-child").attr("transform",`translate(${-s/2}, ${l/2})`),f&&h.attr("style",f)}else h=Bs(i,s,l,u);return n&&h.attr("style",n),e.width=s,e.height=l,Qe(e,h),e.intersect=function(d){return Xe.polygon(e,u,d)},i}var uee=N(()=>{"use strict";It();Ut();$t();Ht();Jh();o(cee,"inv_trapezoid")});async function Jd(t,e,r){let{labelStyles:n,nodeStyles:i}=je(e);e.labelStyle=n;let{shapeSvg:a,bbox:s}=await ut(t,e,st(e)),l=Math.max(s.width+r.labelPaddingX*2,e?.width||0),u=Math.max(s.height+r.labelPaddingY*2,e?.height||0),h=-l/2,f=-u/2,d,{rx:p,ry:m}=e,{cssStyles:g}=e;if(r?.rx&&r.ry&&(p=r.rx,m=r.ry),e.look==="handDrawn"){let y=Ze.svg(a),v=Je(e,{}),x=p||m?y.path(Fs(h,f,l,u,p||0),v):y.rectangle(h,f,l,u,v);d=a.insert(()=>x,":first-child"),d.attr("class","basic label-container").attr("style",Cn(g))}else d=a.insert("rect",":first-child"),d.attr("class","basic label-container").attr("style",i).attr("rx",Cn(p)).attr("ry",Cn(m)).attr("x",h).attr("y",f).attr("width",l).attr("height",u);return Qe(e,d),e.calcIntersect=function(y,v){return Xe.rect(y,v)},e.intersect=function(y){return Xe.rect(e,y)},a}var M2=N(()=>{"use strict";It();Ut();Zd();$t();Ht();tr();o(Jd,"drawRect")});async function hee(t,e){let{shapeSvg:r,bbox:n,label:i}=await ut(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))})`),Qe(e,a),e.intersect=function(u){return Xe.rect(e,u)},r}var fee=N(()=>{"use strict";M2();It();Ut();o(hee,"labelRect")});async function dee(t,e){let{labelStyles:r,nodeStyles:n}=je(e);e.labelStyle=r;let{shapeSvg:i,bbox:a}=await ut(t,e,st(e)),s=Math.max(a.width+(e.padding??0),e?.width??0),l=Math.max(a.height+(e.padding??0),e?.height??0),u=[{x:0,y:0},{x:s+3*l/6,y:0},{x:s,y:-l},{x:-(3*l)/6,y:-l}],h,{cssStyles:f}=e;if(e.look==="handDrawn"){let d=Ze.svg(i),p=Je(e,{}),m=Vt(u),g=d.path(m,p);h=i.insert(()=>g,":first-child").attr("transform",`translate(${-s/2}, ${l/2})`),f&&h.attr("style",f)}else h=Bs(i,s,l,u);return n&&h.attr("style",n),e.width=s,e.height=l,Qe(e,h),e.intersect=function(d){return Xe.polygon(e,u,d)},i}var pee=N(()=>{"use strict";It();Ut();$t();Ht();Jh();o(dee,"lean_left")});async function mee(t,e){let{labelStyles:r,nodeStyles:n}=je(e);e.labelStyle=r;let{shapeSvg:i,bbox:a}=await ut(t,e,st(e)),s=Math.max(a.width+(e.padding??0),e?.width??0),l=Math.max(a.height+(e.padding??0),e?.height??0),u=[{x:-3*l/6,y:0},{x:s,y:0},{x:s+3*l/6,y:-l},{x:0,y:-l}],h,{cssStyles:f}=e;if(e.look==="handDrawn"){let d=Ze.svg(i),p=Je(e,{}),m=Vt(u),g=d.path(m,p);h=i.insert(()=>g,":first-child").attr("transform",`translate(${-s/2}, ${l/2})`),f&&h.attr("style",f)}else h=Bs(i,s,l,u);return n&&h.attr("style",n),e.width=s,e.height=l,Qe(e,h),e.intersect=function(d){return Xe.polygon(e,u,d)},i}var gee=N(()=>{"use strict";It();Ut();$t();Ht();Jh();o(mee,"lean_right")});function yee(t,e){let{labelStyles:r,nodeStyles:n}=je(e);e.label="",e.labelStyle=r;let i=t.insert("g").attr("class",st(e)).attr("id",e.domId??e.id),{cssStyles:a}=e,s=Math.max(35,e?.width??0),l=Math.max(35,e?.height??0),u=7,h=[{x:s,y:0},{x:0,y:l+u/2},{x:s-2*u,y:l+u/2},{x:0,y:2*l},{x:s,y:l-u/2},{x:2*u,y:l-u/2}],f=Ze.svg(i),d=Je(e,{});e.look!=="handDrawn"&&(d.roughness=0,d.fillStyle="solid");let p=Vt(h),m=f.path(p,d),g=i.insert(()=>m,":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},${-l})`),Qe(e,g),e.intersect=function(y){return X.info("lightningBolt intersect",e,y),Xe.polygon(e,h,y)},i}var vee=N(()=>{"use strict";pt();It();$t();Ht();Ut();It();o(yee,"lightningBolt")});async function xee(t,e){let{labelStyles:r,nodeStyles:n}=je(e);e.labelStyle=r;let{shapeSvg:i,bbox:a,label:s}=await ut(t,e,st(e)),l=Math.max(a.width+(e.padding??0),e.width??0),u=l/2,h=u/(2.5+l/50),f=Math.max(a.height+h+(e.padding??0),e.height??0),d=f*.1,p,{cssStyles:m}=e;if(e.look==="handDrawn"){let g=Ze.svg(i),y=pRe(0,0,l,f,u,h,d),v=mRe(0,h,l,f,u,h),x=Je(e,{}),b=g.path(y,x),T=g.path(v,x);i.insert(()=>T,":first-child").attr("class","line"),p=i.insert(()=>b,":first-child"),p.attr("class","basic label-container"),m&&p.attr("style",m)}else{let g=dRe(0,0,l,f,u,h,d);p=i.insert("path",":first-child").attr("d",g).attr("class","basic label-container").attr("style",Cn(m)).attr("style",n)}return p.attr("label-offset-y",h),p.attr("transform",`translate(${-l/2}, ${-(f/2+h)})`),Qe(e,p),s.attr("transform",`translate(${-(a.width/2)-(a.x-(a.left??0))}, ${-(a.height/2)+h-(a.y-(a.top??0))})`),e.intersect=function(g){let y=Xe.rect(e,g),v=y.x-(e.x??0);if(u!=0&&(Math.abs(v)<(e.width??0)/2||Math.abs(v)==(e.width??0)/2&&Math.abs(y.y-(e.y??0))>(e.height??0)/2-h)){let x=h*h*(1-v*v/(u*u));x>0&&(x=Math.sqrt(x)),x=h-x,g.y-(e.y??0)>0&&(x=-x),y.y+=x}return y},i}var dRe,pRe,mRe,bee=N(()=>{"use strict";It();Ut();$t();Ht();tr();dRe=o((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"),pRe=o((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"),mRe=o((t,e,r,n,i,a)=>[`M${t-r/2},${-n/2}`,`a${i},${a} 0,0,0 ${r},0`].join(" "),"createInnerCylinderPathD");o(xee,"linedCylinder")});async function Tee(t,e){let{labelStyles:r,nodeStyles:n}=je(e);e.labelStyle=r;let{shapeSvg:i,bbox:a,label:s}=await ut(t,e,st(e)),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=u/4,f=u+h,{cssStyles:d}=e,p=Ze.svg(i),m=Je(e,{});e.look!=="handDrawn"&&(m.roughness=0,m.fillStyle="solid");let g=[{x:-l/2-l/2*.1,y:-f/2},{x:-l/2-l/2*.1,y:f/2},...Go(-l/2-l/2*.1,f/2,l/2+l/2*.1,f/2,h,.8),{x:l/2+l/2*.1,y:-f/2},{x:-l/2-l/2*.1,y:-f/2},{x:-l/2,y:-f/2},{x:-l/2,y:f/2*1.1},{x:-l/2,y:-f/2}],y=p.polygon(g.map(x=>[x.x,x.y]),m),v=i.insert(()=>y,":first-child");return v.attr("class","basic label-container"),d&&e.look!=="handDrawn"&&v.selectAll("path").attr("style",d),n&&e.look!=="handDrawn"&&v.selectAll("path").attr("style",n),v.attr("transform",`translate(0,${-h/2})`),s.attr("transform",`translate(${-l/2+(e.padding??0)+l/2*.1/2-(a.x-(a.left??0))},${-u/2+(e.padding??0)-h/2-(a.y-(a.top??0))})`),Qe(e,v),e.intersect=function(x){return Xe.polygon(e,g,x)},i}var wee=N(()=>{"use strict";It();Ut();Ht();$t();o(Tee,"linedWaveEdgedRect")});async function kee(t,e){let{labelStyles:r,nodeStyles:n}=je(e);e.labelStyle=r;let{shapeSvg:i,bbox:a,label:s}=await ut(t,e,st(e)),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=5,f=-l/2,d=-u/2,{cssStyles:p}=e,m=Ze.svg(i),g=Je(e,{}),y=[{x:f-h,y:d+h},{x:f-h,y:d+u+h},{x:f+l-h,y:d+u+h},{x:f+l-h,y:d+u},{x:f+l,y:d+u},{x:f+l,y:d+u-h},{x:f+l+h,y:d+u-h},{x:f+l+h,y:d-h},{x:f+h,y:d-h},{x:f+h,y:d},{x:f,y:d},{x:f,y:d+h}],v=[{x:f,y:d+h},{x:f+l-h,y:d+h},{x:f+l-h,y:d+u},{x:f+l,y:d+u},{x:f+l,y:d},{x:f,y:d}];e.look!=="handDrawn"&&(g.roughness=0,g.fillStyle="solid");let x=Vt(y),b=m.path(x,g),T=Vt(v),S=m.path(T,{...g,fill:"none"}),w=i.insert(()=>S,":first-child");return w.insert(()=>b,":first-child"),w.attr("class","basic label-container"),p&&e.look!=="handDrawn"&&w.selectAll("path").attr("style",p),n&&e.look!=="handDrawn"&&w.selectAll("path").attr("style",n),s.attr("transform",`translate(${-(a.width/2)-h-(a.x-(a.left??0))}, ${-(a.height/2)+h-(a.y-(a.top??0))})`),Qe(e,w),e.intersect=function(k){return Xe.polygon(e,y,k)},i}var Eee=N(()=>{"use strict";It();$t();Ht();Ut();o(kee,"multiRect")});async function See(t,e){let{labelStyles:r,nodeStyles:n}=je(e);e.labelStyle=r;let{shapeSvg:i,bbox:a,label:s}=await ut(t,e,st(e)),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=u/4,f=u+h,d=-l/2,p=-f/2,m=5,{cssStyles:g}=e,y=Go(d-m,p+f+m,d+l-m,p+f+m,h,.8),v=y?.[y.length-1],x=[{x:d-m,y:p+m},{x:d-m,y:p+f+m},...y,{x:d+l-m,y:v.y-m},{x:d+l,y:v.y-m},{x:d+l,y:v.y-2*m},{x:d+l+m,y:v.y-2*m},{x:d+l+m,y:p-m},{x:d+m,y:p-m},{x:d+m,y:p},{x:d,y:p},{x:d,y:p+m}],b=[{x:d,y:p+m},{x:d+l-m,y:p+m},{x:d+l-m,y:v.y-m},{x:d+l,y:v.y-m},{x:d+l,y:p},{x:d,y:p}],T=Ze.svg(i),S=Je(e,{});e.look!=="handDrawn"&&(S.roughness=0,S.fillStyle="solid");let w=Vt(x),k=T.path(w,S),A=Vt(b),C=T.path(A,S),R=i.insert(()=>k,":first-child");return R.insert(()=>C),R.attr("class","basic label-container"),g&&e.look!=="handDrawn"&&R.selectAll("path").attr("style",g),n&&e.look!=="handDrawn"&&R.selectAll("path").attr("style",n),R.attr("transform",`translate(0,${-h/2})`),s.attr("transform",`translate(${-(a.width/2)-m-(a.x-(a.left??0))}, ${-(a.height/2)+m-h/2-(a.y-(a.top??0))})`),Qe(e,R),e.intersect=function(I){return Xe.polygon(e,x,I)},i}var Cee=N(()=>{"use strict";It();Ut();Ht();$t();o(See,"multiWaveEdgedRectangle")});async function Aee(t,e,{config:{themeVariables:r}}){let{labelStyles:n,nodeStyles:i}=je(e);e.labelStyle=n,e.useHtmlLabels||Qt().flowchart?.htmlLabels!==!1||(e.centerLabel=!0);let{shapeSvg:s,bbox:l,label:u}=await ut(t,e,st(e)),h=Math.max(l.width+(e.padding??0)*2,e?.width??0),f=Math.max(l.height+(e.padding??0)*2,e?.height??0),d=-h/2,p=-f/2,{cssStyles:m}=e,g=Ze.svg(s),y=Je(e,{fill:r.noteBkgColor,stroke:r.noteBorderColor});e.look!=="handDrawn"&&(y.roughness=0,y.fillStyle="solid");let v=g.rectangle(d,p,h,f,y),x=s.insert(()=>v,":first-child");return x.attr("class","basic label-container"),m&&e.look!=="handDrawn"&&x.selectAll("path").attr("style",m),i&&e.look!=="handDrawn"&&x.selectAll("path").attr("style",i),u.attr("transform",`translate(${-l.width/2-(l.x-(l.left??0))}, ${-(l.height/2)-(l.y-(l.top??0))})`),Qe(e,x),e.intersect=function(b){return Xe.rect(e,b)},s}var _ee=N(()=>{"use strict";Ht();Ut();$t();It();qn();o(Aee,"note")});async function Dee(t,e){let{labelStyles:r,nodeStyles:n}=je(e);e.labelStyle=r;let{shapeSvg:i,bbox:a}=await ut(t,e,st(e)),s=a.width+e.padding,l=a.height+e.padding,u=s+l,h=.5,f=[{x:u/2,y:0},{x:u,y:-u/2},{x:u/2,y:-u},{x:0,y:-u/2}],d,{cssStyles:p}=e;if(e.look==="handDrawn"){let m=Ze.svg(i),g=Je(e,{}),y=gRe(0,0,u),v=m.path(y,g);d=i.insert(()=>v,":first-child").attr("transform",`translate(${-u/2+h}, ${u/2})`),p&&d.attr("style",p)}else d=Bs(i,u,u,f),d.attr("transform",`translate(${-u/2+h}, ${u/2})`);return n&&d.attr("style",n),Qe(e,d),e.calcIntersect=function(m,g){let y=m.width,v=[{x:y/2,y:0},{x:y,y:-y/2},{x:y/2,y:-y},{x:0,y:-y/2}],x=Xe.polygon(m,v,g);return{x:x.x-.5,y:x.y-.5}},e.intersect=function(m){return this.calcIntersect(e,m)},i}var gRe,Lee=N(()=>{"use strict";It();Ut();$t();Ht();Jh();gRe=o((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");o(Dee,"question")});async function Ree(t,e){let{labelStyles:r,nodeStyles:n}=je(e);e.labelStyle=r;let{shapeSvg:i,bbox:a,label:s}=await ut(t,e,st(e)),l=Math.max(a.width+(e.padding??0),e?.width??0),u=Math.max(a.height+(e.padding??0),e?.height??0),h=-l/2,f=-u/2,d=f/2,p=[{x:h+d,y:f},{x:h,y:0},{x:h+d,y:-f},{x:-h,y:-f},{x:-h,y:f}],{cssStyles:m}=e,g=Ze.svg(i),y=Je(e,{});e.look!=="handDrawn"&&(y.roughness=0,y.fillStyle="solid");let v=Vt(p),x=g.path(v,y),b=i.insert(()=>x,":first-child");return b.attr("class","basic label-container"),m&&e.look!=="handDrawn"&&b.selectAll("path").attr("style",m),n&&e.look!=="handDrawn"&&b.selectAll("path").attr("style",n),b.attr("transform",`translate(${-d/2},0)`),s.attr("transform",`translate(${-d/2-a.width/2-(a.x-(a.left??0))}, ${-(a.height/2)-(a.y-(a.top??0))})`),Qe(e,b),e.intersect=function(T){return Xe.polygon(e,p,T)},i}var Nee=N(()=>{"use strict";It();Ut();$t();Ht();o(Ree,"rect_left_inv_arrow")});function yRe(t,e){e&&t.attr("style",e)}async function vRe(t){let e=qe(document.createElementNS("http://www.w3.org/2000/svg","foreignObject")),r=e.append("xhtml:div"),n=ge(),i=t.label;t.label&&kn(t.label)&&(i=await kh(t.label.replace(tt.lineBreakRegex,` -`),n));let s='"+i+"";return r.html(sr(s,n)),yRe(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()}var xRe,kc,aw=N(()=>{"use strict";yr();Xt();gr();pt();tr();o(yRe,"applyStyle");o(vRe,"addHtmlLabel");xRe=o(async(t,e,r,n)=>{let i=t||"";if(typeof i=="object"&&(i=i[0]),vr(ge().flowchart.htmlLabels)){i=i.replace(/\\n|\n/g,"
    "),X.info("vertexText"+i);let a={isNode:n,label:Ji(i).replace(/fa[blrs]?:fa-[\w-]+/g,l=>``),labelStyle:e&&e.replace("fill:","color:")};return await vRe(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 l of s){let u=document.createElementNS("http://www.w3.org/2000/svg","tspan");u.setAttributeNS("http://www.w3.org/XML/1998/namespace","xml:space","preserve"),u.setAttribute("dy","1em"),u.setAttribute("x","0"),r?u.setAttribute("class","title-row"):u.setAttribute("class","row"),u.textContent=l.trim(),a.appendChild(u)}return a}},"createLabel"),kc=xRe});async function Mee(t,e){let{labelStyles:r,nodeStyles:n}=je(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"),l=a.insert("g").attr("class","label").attr("style",n),u=e.description,h=e.label,f=l.node().appendChild(await kc(h,e.labelStyle,!0,!0)),d={width:0,height:0};if(vr(ge()?.flowchart?.htmlLabels)){let C=f.children[0],R=qe(f);d=C.getBoundingClientRect(),R.attr("width",d.width),R.attr("height",d.height)}X.info("Text 2",u);let p=u||[],m=f.getBBox(),g=l.node().appendChild(await kc(p.join?p.join("
    "):p,e.labelStyle,!0,!0)),y=g.children[0],v=qe(g);d=y.getBoundingClientRect(),v.attr("width",d.width),v.attr("height",d.height);let x=(e.padding||0)/2;qe(g).attr("transform","translate( "+(d.width>m.width?0:(m.width-d.width)/2)+", "+(m.height+x+5)+")"),qe(f).attr("transform","translate( "+(d.width(X.debug("Rough node insert CXC",I),L),":first-child"),k=a.insert(()=>(X.debug("Rough node insert CXC",I),I),":first-child")}else k=s.insert("rect",":first-child"),A=s.insert("line"),k.attr("class","outer title-state").attr("style",n).attr("x",-d.width/2-x).attr("y",-d.height/2-x).attr("width",d.width+(e.padding||0)).attr("height",d.height+(e.padding||0)),A.attr("class","divider").attr("x1",-d.width/2-x).attr("x2",d.width/2+x).attr("y1",-d.height/2-x+m.height+x).attr("y2",-d.height/2-x+m.height+x);return Qe(e,k),e.intersect=function(C){return Xe.rect(e,C)},a}var Iee=N(()=>{"use strict";yr();gr();It();aw();Ut();$t();Ht();Xt();Zd();pt();o(Mee,"rectWithTitle")});function sw(t,e,r,n,i,a,s){let u=(t+r)/2,h=(e+n)/2,f=Math.atan2(n-e,r-t),d=(r-t)/2,p=(n-e)/2,m=d/i,g=p/a,y=Math.sqrt(m**2+g**2);if(y>1)throw new Error("The given radii are too small to create an arc between the points.");let v=Math.sqrt(1-y**2),x=u+v*a*Math.sin(f)*(s?-1:1),b=h-v*i*Math.cos(f)*(s?-1:1),T=Math.atan2((e-b)/a,(t-x)/i),w=Math.atan2((n-b)/a,(r-x)/i)-T;s&&w<0&&(w+=2*Math.PI),!s&&w>0&&(w-=2*Math.PI);let k=[];for(let A=0;A<20;A++){let C=A/19,R=T+C*w,I=x+i*Math.cos(R),L=b+a*Math.sin(R);k.push({x:I,y:L})}return k}async function Oee(t,e){let{labelStyles:r,nodeStyles:n}=je(e);e.labelStyle=r;let{shapeSvg:i,bbox:a}=await ut(t,e,st(e)),s=e?.padding??0,l=e?.padding??0,u=(e?.width?e?.width:a.width)+s*2,h=(e?.height?e?.height:a.height)+l*2,f=e.radius||5,d=e.taper||5,{cssStyles:p}=e,m=Ze.svg(i),g=Je(e,{});e.stroke&&(g.stroke=e.stroke),e.look!=="handDrawn"&&(g.roughness=0,g.fillStyle="solid");let y=[{x:-u/2+d,y:-h/2},{x:u/2-d,y:-h/2},...sw(u/2-d,-h/2,u/2,-h/2+d,f,f,!0),{x:u/2,y:-h/2+d},{x:u/2,y:h/2-d},...sw(u/2,h/2-d,u/2-d,h/2,f,f,!0),{x:u/2-d,y:h/2},{x:-u/2+d,y:h/2},...sw(-u/2+d,h/2,-u/2,h/2-d,f,f,!0),{x:-u/2,y:h/2-d},{x:-u/2,y:-h/2+d},...sw(-u/2,-h/2+d,-u/2+d,-h/2,f,f,!0)],v=Vt(y),x=m.path(v,g),b=i.insert(()=>x,":first-child");return b.attr("class","basic label-container outer-path"),p&&e.look!=="handDrawn"&&b.selectChildren("path").attr("style",p),n&&e.look!=="handDrawn"&&b.selectChildren("path").attr("style",n),Qe(e,b),e.intersect=function(T){return Xe.polygon(e,y,T)},i}var Pee=N(()=>{"use strict";It();Ut();$t();Ht();o(sw,"generateArcPoints");o(Oee,"roundedRect")});async function Bee(t,e){let{labelStyles:r,nodeStyles:n}=je(e);e.labelStyle=r;let{shapeSvg:i,bbox:a,label:s}=await ut(t,e,st(e)),l=e?.padding??0,u=Math.max(a.width+(e.padding??0)*2,e?.width??0),h=Math.max(a.height+(e.padding??0)*2,e?.height??0),f=-a.width/2-l,d=-a.height/2-l,{cssStyles:p}=e,m=Ze.svg(i),g=Je(e,{});e.look!=="handDrawn"&&(g.roughness=0,g.fillStyle="solid");let y=[{x:f,y:d},{x:f+u+8,y:d},{x:f+u+8,y:d+h},{x:f-8,y:d+h},{x:f-8,y:d},{x:f,y:d},{x:f,y:d+h}],v=m.polygon(y.map(b=>[b.x,b.y]),g),x=i.insert(()=>v,":first-child");return x.attr("class","basic label-container").attr("style",Cn(p)),n&&e.look!=="handDrawn"&&x.selectAll("path").attr("style",n),p&&e.look!=="handDrawn"&&x.selectAll("path").attr("style",n),s.attr("transform",`translate(${-u/2+4+(e.padding??0)-(a.x-(a.left??0))},${-h/2+(e.padding??0)-(a.y-(a.top??0))})`),Qe(e,x),e.intersect=function(b){return Xe.rect(e,b)},i}var Fee=N(()=>{"use strict";It();Ut();$t();Ht();tr();o(Bee,"shadedProcess")});async function $ee(t,e){let{labelStyles:r,nodeStyles:n}=je(e);e.labelStyle=r;let{shapeSvg:i,bbox:a,label:s}=await ut(t,e,st(e)),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/2,f=-u/2,{cssStyles:d}=e,p=Ze.svg(i),m=Je(e,{});e.look!=="handDrawn"&&(m.roughness=0,m.fillStyle="solid");let g=[{x:h,y:f},{x:h,y:f+u},{x:h+l,y:f+u},{x:h+l,y:f-u/2}],y=Vt(g),v=p.path(y,m),x=i.insert(()=>v,":first-child");return x.attr("class","basic label-container"),d&&e.look!=="handDrawn"&&x.selectChildren("path").attr("style",d),n&&e.look!=="handDrawn"&&x.selectChildren("path").attr("style",n),x.attr("transform",`translate(0, ${u/4})`),s.attr("transform",`translate(${-l/2+(e.padding??0)-(a.x-(a.left??0))}, ${-u/4+(e.padding??0)-(a.y-(a.top??0))})`),Qe(e,x),e.intersect=function(b){return Xe.polygon(e,g,b)},i}var zee=N(()=>{"use strict";It();Ut();$t();Ht();o($ee,"slopedRect")});async function Gee(t,e){let r={rx:0,ry:0,classes:"",labelPaddingX:e.labelPaddingX??(e?.padding||0)*2,labelPaddingY:(e?.padding||0)*1};return Jd(t,e,r)}var Vee=N(()=>{"use strict";M2();o(Gee,"squareRect")});async function Uee(t,e){let{labelStyles:r,nodeStyles:n}=je(e);e.labelStyle=r;let{shapeSvg:i,bbox:a}=await ut(t,e,st(e)),s=a.height+e.padding,l=a.width+s/4+e.padding,u=s/2,{cssStyles:h}=e,f=Ze.svg(i),d=Je(e,{});e.look!=="handDrawn"&&(d.roughness=0,d.fillStyle="solid");let p=[{x:-l/2+u,y:-s/2},{x:l/2-u,y:-s/2},...Kd(-l/2+u,0,u,50,90,270),{x:l/2-u,y:s/2},...Kd(l/2-u,0,u,50,270,450)],m=Vt(p),g=f.path(m,d),y=i.insert(()=>g,":first-child");return y.attr("class","basic label-container outer-path"),h&&e.look!=="handDrawn"&&y.selectChildren("path").attr("style",h),n&&e.look!=="handDrawn"&&y.selectChildren("path").attr("style",n),Qe(e,y),e.intersect=function(v){return Xe.polygon(e,p,v)},i}var Hee=N(()=>{"use strict";It();Ut();$t();Ht();o(Uee,"stadium")});async function qee(t,e){return Jd(t,e,{rx:5,ry:5,classes:"flowchart-node"})}var Wee=N(()=>{"use strict";M2();o(qee,"state")});function Yee(t,e,{config:{themeVariables:r}}){let{labelStyles:n,nodeStyles:i}=je(e);e.labelStyle=n;let{cssStyles:a}=e,{lineColor:s,stateBorder:l,nodeBorder:u}=r,h=t.insert("g").attr("class","node default").attr("id",e.domId||e.id),f=Ze.svg(h),d=Je(e,{});e.look!=="handDrawn"&&(d.roughness=0,d.fillStyle="solid");let p=f.circle(0,0,14,{...d,stroke:s,strokeWidth:2}),m=l??u,g=f.circle(0,0,5,{...d,fill:m,stroke:m,strokeWidth:2,fillStyle:"solid"}),y=h.insert(()=>p,":first-child");return y.insert(()=>g),a&&y.selectAll("path").attr("style",a),i&&y.selectAll("path").attr("style",i),Qe(e,y),e.intersect=function(v){return Xe.circle(e,7,v)},h}var Xee=N(()=>{"use strict";Ht();Ut();$t();It();o(Yee,"stateEnd")});function jee(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 l=Ze.svg(i).circle(0,0,14,tJ(n));a=i.insert(()=>l),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 Qe(e,a),e.intersect=function(s){return Xe.circle(e,7,s)},i}var Kee=N(()=>{"use strict";Ht();Ut();$t();It();o(jee,"stateStart")});async function Qee(t,e){let{labelStyles:r,nodeStyles:n}=je(e);e.labelStyle=r;let{shapeSvg:i,bbox:a}=await ut(t,e,st(e)),s=(e?.padding||0)/2,l=a.width+e.padding,u=a.height+e.padding,h=-a.width/2-s,f=-a.height/2-s,d=[{x:0,y:0},{x:l,y:0},{x:l,y:-u},{x:0,y:-u},{x:0,y:0},{x:-8,y:0},{x:l+8,y:0},{x:l+8,y:-u},{x:-8,y:-u},{x:-8,y:0}];if(e.look==="handDrawn"){let p=Ze.svg(i),m=Je(e,{}),g=p.rectangle(h-8,f,l+16,u,m),y=p.line(h,f,h,f+u,m),v=p.line(h+l,f,h+l,f+u,m);i.insert(()=>y,":first-child"),i.insert(()=>v,":first-child");let x=i.insert(()=>g,":first-child"),{cssStyles:b}=e;x.attr("class","basic label-container").attr("style",Cn(b)),Qe(e,x)}else{let p=Bs(i,l,u,d);n&&p.attr("style",n),Qe(e,p)}return e.intersect=function(p){return Xe.polygon(e,d,p)},i}var Zee=N(()=>{"use strict";It();Ut();$t();Ht();Jh();tr();o(Qee,"subroutine")});async function Jee(t,e){let{labelStyles:r,nodeStyles:n}=je(e);e.labelStyle=r;let{shapeSvg:i,bbox:a}=await ut(t,e,st(e)),s=Math.max(a.width+(e.padding??0)*2,e?.width??0),l=Math.max(a.height+(e.padding??0)*2,e?.height??0),u=-s/2,h=-l/2,f=.2*l,d=.2*l,{cssStyles:p}=e,m=Ze.svg(i),g=Je(e,{}),y=[{x:u-f/2,y:h},{x:u+s+f/2,y:h},{x:u+s+f/2,y:h+l},{x:u-f/2,y:h+l}],v=[{x:u+s-f/2,y:h+l},{x:u+s+f/2,y:h+l},{x:u+s+f/2,y:h+l-d}];e.look!=="handDrawn"&&(g.roughness=0,g.fillStyle="solid");let x=Vt(y),b=m.path(x,g),T=Vt(v),S=m.path(T,{...g,fillStyle:"solid"}),w=i.insert(()=>S,":first-child");return w.insert(()=>b,":first-child"),w.attr("class","basic label-container"),p&&e.look!=="handDrawn"&&w.selectAll("path").attr("style",p),n&&e.look!=="handDrawn"&&w.selectAll("path").attr("style",n),Qe(e,w),e.intersect=function(k){return Xe.polygon(e,y,k)},i}var ete=N(()=>{"use strict";It();$t();Ht();Ut();o(Jee,"taggedRect")});async function tte(t,e){let{labelStyles:r,nodeStyles:n}=je(e);e.labelStyle=r;let{shapeSvg:i,bbox:a,label:s}=await ut(t,e,st(e)),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=u/4,f=.2*l,d=.2*u,p=u+h,{cssStyles:m}=e,g=Ze.svg(i),y=Je(e,{});e.look!=="handDrawn"&&(y.roughness=0,y.fillStyle="solid");let v=[{x:-l/2-l/2*.1,y:p/2},...Go(-l/2-l/2*.1,p/2,l/2+l/2*.1,p/2,h,.8),{x:l/2+l/2*.1,y:-p/2},{x:-l/2-l/2*.1,y:-p/2}],x=-l/2+l/2*.1,b=-p/2-d*.4,T=[{x:x+l-f,y:(b+u)*1.4},{x:x+l,y:b+u-d},{x:x+l,y:(b+u)*.9},...Go(x+l,(b+u)*1.3,x+l-f,(b+u)*1.5,-u*.03,.5)],S=Vt(v),w=g.path(S,y),k=Vt(T),A=g.path(k,{...y,fillStyle:"solid"}),C=i.insert(()=>A,":first-child");return C.insert(()=>w,":first-child"),C.attr("class","basic label-container"),m&&e.look!=="handDrawn"&&C.selectAll("path").attr("style",m),n&&e.look!=="handDrawn"&&C.selectAll("path").attr("style",n),C.attr("transform",`translate(0,${-h/2})`),s.attr("transform",`translate(${-l/2+(e.padding??0)-(a.x-(a.left??0))},${-u/2+(e.padding??0)-h/2-(a.y-(a.top??0))})`),Qe(e,C),e.intersect=function(R){return Xe.polygon(e,v,R)},i}var rte=N(()=>{"use strict";It();Ut();Ht();$t();o(tte,"taggedWaveEdgedRectangle")});async function nte(t,e){let{labelStyles:r,nodeStyles:n}=je(e);e.labelStyle=r;let{shapeSvg:i,bbox:a}=await ut(t,e,st(e)),s=Math.max(a.width+e.padding,e?.width||0),l=Math.max(a.height+e.padding,e?.height||0),u=-s/2,h=-l/2,f=i.insert("rect",":first-child");return f.attr("class","text").attr("style",n).attr("rx",0).attr("ry",0).attr("x",u).attr("y",h).attr("width",s).attr("height",l),Qe(e,f),e.intersect=function(d){return Xe.rect(e,d)},i}var ite=N(()=>{"use strict";It();Ut();$t();o(nte,"text")});async function ate(t,e){let{labelStyles:r,nodeStyles:n}=je(e);e.labelStyle=r;let{shapeSvg:i,bbox:a,label:s,halfPadding:l}=await ut(t,e,st(e)),u=e.look==="neo"?l*2:l,h=a.height+u,f=h/2,d=f/(2.5+h/50),p=a.width+d+u,{cssStyles:m}=e,g;if(e.look==="handDrawn"){let y=Ze.svg(i),v=TRe(0,0,p,h,d,f),x=wRe(0,0,p,h,d,f),b=y.path(v,Je(e,{})),T=y.path(x,Je(e,{fill:"none"}));g=i.insert(()=>T,":first-child"),g=i.insert(()=>b,":first-child"),g.attr("class","basic label-container"),m&&g.attr("style",m)}else{let y=bRe(0,0,p,h,d,f);g=i.insert("path",":first-child").attr("d",y).attr("class","basic label-container").attr("style",Cn(m)).attr("style",n),g.attr("class","basic label-container"),m&&g.selectAll("path").attr("style",m),n&&g.selectAll("path").attr("style",n)}return g.attr("label-offset-x",d),g.attr("transform",`translate(${-p/2}, ${h/2} )`),s.attr("transform",`translate(${-(a.width/2)-d-(a.x-(a.left??0))}, ${-(a.height/2)-(a.y-(a.top??0))})`),Qe(e,g),e.intersect=function(y){let v=Xe.rect(e,y),x=v.y-(e.y??0);if(f!=0&&(Math.abs(x)<(e.height??0)/2||Math.abs(x)==(e.height??0)/2&&Math.abs(v.x-(e.x??0))>(e.width??0)/2-d)){let b=d*d*(1-x*x/(f*f));b!=0&&(b=Math.sqrt(Math.abs(b))),b=d-b,y.x-(e.x??0)>0&&(b=-b),v.x+=b}return v},i}var bRe,TRe,wRe,ste=N(()=>{"use strict";It();$t();Ht();Ut();tr();bRe=o((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"),TRe=o((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"),wRe=o((t,e,r,n,i,a)=>[`M${t+r/2},${-n/2}`,`a${i},${a} 0,0,0 0,${n}`].join(" "),"createInnerCylinderPathD");o(ate,"tiltedCylinder")});async function ote(t,e){let{labelStyles:r,nodeStyles:n}=je(e);e.labelStyle=r;let{shapeSvg:i,bbox:a}=await ut(t,e,st(e)),s=a.width+e.padding,l=a.height+e.padding,u=[{x:-3*l/6,y:0},{x:s+3*l/6,y:0},{x:s,y:-l},{x:0,y:-l}],h,{cssStyles:f}=e;if(e.look==="handDrawn"){let d=Ze.svg(i),p=Je(e,{}),m=Vt(u),g=d.path(m,p);h=i.insert(()=>g,":first-child").attr("transform",`translate(${-s/2}, ${l/2})`),f&&h.attr("style",f)}else h=Bs(i,s,l,u);return n&&h.attr("style",n),e.width=s,e.height=l,Qe(e,h),e.intersect=function(d){return Xe.polygon(e,u,d)},i}var lte=N(()=>{"use strict";It();Ut();$t();Ht();Jh();o(ote,"trapezoid")});async function cte(t,e){let{labelStyles:r,nodeStyles:n}=je(e);e.labelStyle=r;let{shapeSvg:i,bbox:a}=await ut(t,e,st(e)),s=60,l=20,u=Math.max(s,a.width+(e.padding??0)*2,e?.width??0),h=Math.max(l,a.height+(e.padding??0)*2,e?.height??0),{cssStyles:f}=e,d=Ze.svg(i),p=Je(e,{});e.look!=="handDrawn"&&(p.roughness=0,p.fillStyle="solid");let m=[{x:-u/2*.8,y:-h/2},{x:u/2*.8,y:-h/2},{x:u/2,y:-h/2*.6},{x:u/2,y:h/2},{x:-u/2,y:h/2},{x:-u/2,y:-h/2*.6}],g=Vt(m),y=d.path(g,p),v=i.insert(()=>y,":first-child");return v.attr("class","basic label-container"),f&&e.look!=="handDrawn"&&v.selectChildren("path").attr("style",f),n&&e.look!=="handDrawn"&&v.selectChildren("path").attr("style",n),Qe(e,v),e.intersect=function(x){return Xe.polygon(e,m,x)},i}var ute=N(()=>{"use strict";It();Ut();$t();Ht();o(cte,"trapezoidalPentagon")});async function hte(t,e){let{labelStyles:r,nodeStyles:n}=je(e);e.labelStyle=r;let{shapeSvg:i,bbox:a,label:s}=await ut(t,e,st(e)),l=vr(ge().flowchart?.htmlLabels),u=a.width+(e.padding??0),h=u+a.height,f=u+a.height,d=[{x:0,y:0},{x:f,y:0},{x:f/2,y:-h}],{cssStyles:p}=e,m=Ze.svg(i),g=Je(e,{});e.look!=="handDrawn"&&(g.roughness=0,g.fillStyle="solid");let y=Vt(d),v=m.path(y,g),x=i.insert(()=>v,":first-child").attr("transform",`translate(${-h/2}, ${h/2})`);return p&&e.look!=="handDrawn"&&x.selectChildren("path").attr("style",p),n&&e.look!=="handDrawn"&&x.selectChildren("path").attr("style",n),e.width=u,e.height=h,Qe(e,x),s.attr("transform",`translate(${-a.width/2-(a.x-(a.left??0))}, ${h/2-(a.height+(e.padding??0)/(l?2:1)-(a.y-(a.top??0)))})`),e.intersect=function(b){return X.info("Triangle intersect",e,d,b),Xe.polygon(e,d,b)},i}var fte=N(()=>{"use strict";pt();It();Ut();$t();Ht();It();gr();Xt();o(hte,"triangle")});async function dte(t,e){let{labelStyles:r,nodeStyles:n}=je(e);e.labelStyle=r;let{shapeSvg:i,bbox:a,label:s}=await ut(t,e,st(e)),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=u/8,f=u+h,{cssStyles:d}=e,m=70-l,g=m>0?m/2:0,y=Ze.svg(i),v=Je(e,{});e.look!=="handDrawn"&&(v.roughness=0,v.fillStyle="solid");let x=[{x:-l/2-g,y:f/2},...Go(-l/2-g,f/2,l/2+g,f/2,h,.8),{x:l/2+g,y:-f/2},{x:-l/2-g,y:-f/2}],b=Vt(x),T=y.path(b,v),S=i.insert(()=>T,":first-child");return S.attr("class","basic label-container"),d&&e.look!=="handDrawn"&&S.selectAll("path").attr("style",d),n&&e.look!=="handDrawn"&&S.selectAll("path").attr("style",n),S.attr("transform",`translate(0,${-h/2})`),s.attr("transform",`translate(${-l/2+(e.padding??0)-(a.x-(a.left??0))},${-u/2+(e.padding??0)-h-(a.y-(a.top??0))})`),Qe(e,S),e.intersect=function(w){return Xe.polygon(e,x,w)},i}var pte=N(()=>{"use strict";It();Ut();Ht();$t();o(dte,"waveEdgedRectangle")});async function mte(t,e){let{labelStyles:r,nodeStyles:n}=je(e);e.labelStyle=r;let{shapeSvg:i,bbox:a}=await ut(t,e,st(e)),s=100,l=50,u=Math.max(a.width+(e.padding??0)*2,e?.width??0),h=Math.max(a.height+(e.padding??0)*2,e?.height??0),f=u/h,d=u,p=h;d>p*f?p=d/f:d=p*f,d=Math.max(d,s),p=Math.max(p,l);let m=Math.min(p*.2,p/4),g=p+m*2,{cssStyles:y}=e,v=Ze.svg(i),x=Je(e,{});e.look!=="handDrawn"&&(x.roughness=0,x.fillStyle="solid");let b=[{x:-d/2,y:g/2},...Go(-d/2,g/2,d/2,g/2,m,1),{x:d/2,y:-g/2},...Go(d/2,-g/2,-d/2,-g/2,m,-1)],T=Vt(b),S=v.path(T,x),w=i.insert(()=>S,":first-child");return w.attr("class","basic label-container"),y&&e.look!=="handDrawn"&&w.selectAll("path").attr("style",y),n&&e.look!=="handDrawn"&&w.selectAll("path").attr("style",n),Qe(e,w),e.intersect=function(k){return Xe.polygon(e,b,k)},i}var gte=N(()=>{"use strict";It();Ut();$t();Ht();o(mte,"waveRectangle")});async function yte(t,e){let{labelStyles:r,nodeStyles:n}=je(e);e.labelStyle=r;let{shapeSvg:i,bbox:a,label:s}=await ut(t,e,st(e)),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=5,f=-l/2,d=-u/2,{cssStyles:p}=e,m=Ze.svg(i),g=Je(e,{}),y=[{x:f-h,y:d-h},{x:f-h,y:d+u},{x:f+l,y:d+u},{x:f+l,y:d-h}],v=`M${f-h},${d-h} L${f+l},${d-h} L${f+l},${d+u} L${f-h},${d+u} L${f-h},${d-h} - M${f-h},${d} L${f+l},${d} - M${f},${d-h} L${f},${d+u}`;e.look!=="handDrawn"&&(g.roughness=0,g.fillStyle="solid");let x=m.path(v,g),b=i.insert(()=>x,":first-child");return b.attr("transform",`translate(${h/2}, ${h/2})`),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),s.attr("transform",`translate(${-(a.width/2)+h/2-(a.x-(a.left??0))}, ${-(a.height/2)+h/2-(a.y-(a.top??0))})`),Qe(e,b),e.intersect=function(T){return Xe.polygon(e,y,T)},i}var vte=N(()=>{"use strict";It();$t();Ht();Ut();o(yte,"windowPane")});async function H9(t,e){let r=e;if(r.alias&&(e.label=r.alias),e.look==="handDrawn"){let{themeVariables:U}=Qt(),{background:j}=U,te={...e,id:e.id+"-background",look:"default",cssStyles:["stroke: none",`fill: ${j}`]};await H9(t,te)}let n=Qt();e.useHtmlLabels=n.htmlLabels;let i=n.er?.diagramPadding??10,a=n.er?.entityPadding??6,{cssStyles:s}=e,{labelStyles:l,nodeStyles:u}=je(e);if(r.attributes.length===0&&e.label){let U={rx:0,ry:0,labelPaddingX:i,labelPaddingY:i*1.5,classes:""};Zi(e.label,n)+U.labelPaddingX*20){let U=d.width+i*2-(y+v+x+b);y+=U/w,v+=U/w,x>0&&(x+=U/w),b>0&&(b+=U/w)}let A=y+v+x+b,C=Ze.svg(f),R=Je(e,{});e.look!=="handDrawn"&&(R.roughness=0,R.fillStyle="solid");let I=0;g.length>0&&(I=g.reduce((U,j)=>U+(j?.rowHeight??0),0));let L=Math.max(k.width+i*2,e?.width||0,A),E=Math.max((I??0)+d.height,e?.height||0),D=-L/2,_=-E/2;f.selectAll("g:not(:first-child)").each((U,j,te)=>{let Y=qe(te[j]),oe=Y.attr("transform"),J=0,ue=0;if(oe){let ee=RegExp(/translate\(([^,]+),([^)]+)\)/).exec(oe);ee&&(J=parseFloat(ee[1]),ue=parseFloat(ee[2]),Y.attr("class").includes("attribute-name")?J+=y:Y.attr("class").includes("attribute-keys")?J+=y+v:Y.attr("class").includes("attribute-comment")&&(J+=y+v+x))}Y.attr("transform",`translate(${D+i/2+J}, ${ue+_+d.height+a/2})`)}),f.select(".name").attr("transform","translate("+-d.width/2+", "+(_+a/2)+")");let O=C.rectangle(D,_,L,E,R),M=f.insert(()=>O,":first-child").attr("style",s.join("")),{themeVariables:P}=Qt(),{rowEven:B,rowOdd:F,nodeBorder:G}=P;m.push(0);for(let[U,j]of g.entries()){let Y=(U+1)%2===0&&j.yOffset!==0,oe=C.rectangle(D,d.height+_+j?.yOffset,L,j?.rowHeight,{...R,fill:Y?B:F,stroke:G});f.insert(()=>oe,"g.label").attr("style",s.join("")).attr("class",`row-rect-${Y?"even":"odd"}`)}let $=C.line(D,d.height+_,L+D,d.height+_,R);f.insert(()=>$).attr("class","divider"),$=C.line(y+D,d.height+_,y+D,E+_,R),f.insert(()=>$).attr("class","divider"),T&&($=C.line(y+v+D,d.height+_,y+v+D,E+_,R),f.insert(()=>$).attr("class","divider")),S&&($=C.line(y+v+x+D,d.height+_,y+v+x+D,E+_,R),f.insert(()=>$).attr("class","divider"));for(let U of m)$=C.line(D,d.height+_+U,L+D,d.height+_+U,R),f.insert(()=>$).attr("class","divider");if(Qe(e,M),u&&e.look!=="handDrawn"){let j=u.split(";")?.filter(te=>te.includes("stroke"))?.map(te=>`${te}`).join("; ");f.selectAll("path").attr("style",j??""),f.selectAll(".row-rect-even path").attr("style",u)}return e.intersect=function(U){return Xe.rect(e,U)},f}async function I2(t,e,r,n=0,i=0,a=[],s=""){let l=t.insert("g").attr("class",`label ${a.join(" ")}`).attr("transform",`translate(${n}, ${i})`).attr("style",s);e!==rc(e)&&(e=rc(e),e=e.replaceAll("<","<").replaceAll(">",">"));let u=l.node().appendChild(await di(l,e,{width:Zi(e,r)+100,style:s,useHtmlLabels:r.htmlLabels},r));if(e.includes("<")||e.includes(">")){let f=u.children[0];for(f.textContent=f.textContent.replaceAll("<","<").replaceAll(">",">");f.childNodes[0];)f=f.childNodes[0],f.textContent=f.textContent.replaceAll("<","<").replaceAll(">",">")}let h=u.getBBox();if(vr(r.htmlLabels)){let f=u.children[0];f.style.textAlign="start";let d=qe(u);h=f.getBoundingClientRect(),d.attr("width",h.width),d.attr("height",h.height)}return h}var xte=N(()=>{"use strict";It();Ut();$t();Ht();M2();qn();zo();gr();yr();tr();o(H9,"erBox");o(I2,"addText")});async function bte(t,e,r,n,i=r.class.padding??12){let a=n?0:3,s=t.insert("g").attr("class",st(e)).attr("id",e.domId||e.id),l=null,u=null,h=null,f=null,d=0,p=0,m=0;if(l=s.insert("g").attr("class","annotation-group text"),e.annotations.length>0){let b=e.annotations[0];await ow(l,{text:`\xAB${b}\xBB`},0),d=l.node().getBBox().height}u=s.insert("g").attr("class","label-group text"),await ow(u,e,0,["font-weight: bolder"]);let g=u.node().getBBox();p=g.height,h=s.insert("g").attr("class","members-group text");let y=0;for(let b of e.members){let T=await ow(h,b,y,[b.parseClassifier()]);y+=T+a}m=h.node().getBBox().height,m<=0&&(m=i/2),f=s.insert("g").attr("class","methods-group text");let v=0;for(let b of e.methods){let T=await ow(f,b,v,[b.parseClassifier()]);v+=T+a}let x=s.node().getBBox();if(l!==null){let b=l.node().getBBox();l.attr("transform",`translate(${-b.width/2})`)}return u.attr("transform",`translate(${-g.width/2}, ${d})`),x=s.node().getBBox(),h.attr("transform",`translate(0, ${d+p+i*2})`),x=s.node().getBBox(),f.attr("transform",`translate(0, ${d+p+(m?m+i*4:i*2)})`),x=s.node().getBBox(),{shapeSvg:s,bbox:x}}async function ow(t,e,r,n=[]){let i=t.insert("g").attr("class","label").attr("style",n.join("; ")),a=Qt(),s="useHtmlLabels"in e?e.useHtmlLabels:vr(a.htmlLabels)??!0,l="";"text"in e?l=e.text:l=e.label,!s&&l.startsWith("\\")&&(l=l.substring(1)),kn(l)&&(s=!0);let u=await di(i,iv(Ji(l)),{width:Zi(l,a)+50,classes:"markdown-node-label",useHtmlLabels:s},a),h,f=1;if(s){let d=u.children[0],p=qe(u);f=d.innerHTML.split("
    ").length,d.innerHTML.includes("")&&(f+=d.innerHTML.split("").length-1);let m=d.getElementsByTagName("img");if(m){let g=l.replace(/]*>/g,"").trim()==="";await Promise.all([...m].map(y=>new Promise(v=>{function x(){if(y.style.display="flex",y.style.flexDirection="column",g){let b=a.fontSize?.toString()??window.getComputedStyle(document.body).fontSize,S=parseInt(b,10)*5+"px";y.style.minWidth=S,y.style.maxWidth=S}else y.style.width="100%";v(y)}o(x,"setupImage"),setTimeout(()=>{y.complete&&x()}),y.addEventListener("error",x),y.addEventListener("load",x)})))}h=d.getBoundingClientRect(),p.attr("width",h.width),p.attr("height",h.height)}else{n.includes("font-weight: bolder")&&qe(u).selectAll("tspan").attr("font-weight",""),f=u.children.length;let d=u.children[0];(u.textContent===""||u.textContent.includes(">"))&&(d.textContent=l[0]+l.substring(1).replaceAll(">",">").replaceAll("<","<").trim(),l[1]===" "&&(d.textContent=d.textContent[0]+" "+d.textContent.substring(1))),d.textContent==="undefined"&&(d.textContent=""),h=u.getBBox()}return i.attr("transform","translate(0,"+(-h.height/(2*f)+r)+")"),h.height}var Tte=N(()=>{"use strict";yr();qn();It();tr();Xt();zo();gr();o(bte,"textHelper");o(ow,"addText")});async function wte(t,e){let r=ge(),n=r.class.padding??12,i=n,a=e.useHtmlLabels??vr(r.htmlLabels)??!0,s=e;s.annotations=s.annotations??[],s.members=s.members??[],s.methods=s.methods??[];let{shapeSvg:l,bbox:u}=await bte(t,e,r,a,i),{labelStyles:h,nodeStyles:f}=je(e);e.labelStyle=h,e.cssStyles=s.styles||"";let d=s.styles?.join(";")||f||"";e.cssStyles||(e.cssStyles=d.replaceAll("!important","").split(";"));let p=s.members.length===0&&s.methods.length===0&&!r.class?.hideEmptyMembersBox,m=Ze.svg(l),g=Je(e,{});e.look!=="handDrawn"&&(g.roughness=0,g.fillStyle="solid");let y=u.width,v=u.height;s.members.length===0&&s.methods.length===0?v+=i:s.members.length>0&&s.methods.length===0&&(v+=i*2);let x=-y/2,b=-v/2,T=m.rectangle(x-n,b-n-(p?n:s.members.length===0&&s.methods.length===0?-n/2:0),y+2*n,v+2*n+(p?n*2:s.members.length===0&&s.methods.length===0?-n:0),g),S=l.insert(()=>T,":first-child");S.attr("class","basic label-container");let w=S.node().getBBox();l.selectAll(".text").each((R,I,L)=>{let E=qe(L[I]),D=E.attr("transform"),_=0;if(D){let B=RegExp(/translate\(([^,]+),([^)]+)\)/).exec(D);B&&(_=parseFloat(B[2]))}let O=_+b+n-(p?n:s.members.length===0&&s.methods.length===0?-n/2:0);a||(O-=4);let M=x;(E.attr("class").includes("label-group")||E.attr("class").includes("annotation-group"))&&(M=-E.node()?.getBBox().width/2||0,l.selectAll("text").each(function(P,B,F){window.getComputedStyle(F[B]).textAnchor==="middle"&&(M=0)})),E.attr("transform",`translate(${M}, ${O})`)});let k=l.select(".annotation-group").node().getBBox().height-(p?n/2:0)||0,A=l.select(".label-group").node().getBBox().height-(p?n/2:0)||0,C=l.select(".members-group").node().getBBox().height-(p?n/2:0)||0;if(s.members.length>0||s.methods.length>0||p){let R=m.line(w.x,k+A+b+n,w.x+w.width,k+A+b+n,g);l.insert(()=>R).attr("class","divider").attr("style",d)}if(p||s.members.length>0||s.methods.length>0){let R=m.line(w.x,k+A+C+b+i*2+n,w.x+w.width,k+A+C+b+n+i*2,g);l.insert(()=>R).attr("class","divider").attr("style",d)}if(s.look!=="handDrawn"&&l.selectAll("path").attr("style",d),S.select(":nth-child(2)").attr("style",d),l.selectAll(".divider").select("path").attr("style",d),e.labelStyle?l.selectAll("span").attr("style",e.labelStyle):l.selectAll("span").attr("style",d),!a){let R=RegExp(/color\s*:\s*([^;]*)/),I=R.exec(d);if(I){let L=I[0].replace("color","fill");l.selectAll("tspan").attr("style",L)}else if(h){let L=R.exec(h);if(L){let E=L[0].replace("color","fill");l.selectAll("tspan").attr("style",E)}}}return Qe(e,S),e.intersect=function(R){return Xe.rect(e,R)},l}var kte=N(()=>{"use strict";It();Xt();yr();Ht();$t();Ut();Tte();gr();o(wte,"classBox")});async function Ete(t,e){let{labelStyles:r,nodeStyles:n}=je(e);e.labelStyle=r;let i=e,a=e,s=20,l=20,u="verifyMethod"in e,h=st(e),f=t.insert("g").attr("class",h).attr("id",e.domId??e.id),d;u?d=await Ou(f,`<<${i.type}>>`,0,e.labelStyle):d=await Ou(f,"<<Element>>",0,e.labelStyle);let p=d,m=await Ou(f,i.name,p,e.labelStyle+"; font-weight: bold;");if(p+=m+l,u){let k=await Ou(f,`${i.requirementId?`ID: ${i.requirementId}`:""}`,p,e.labelStyle);p+=k;let A=await Ou(f,`${i.text?`Text: ${i.text}`:""}`,p,e.labelStyle);p+=A;let C=await Ou(f,`${i.risk?`Risk: ${i.risk}`:""}`,p,e.labelStyle);p+=C,await Ou(f,`${i.verifyMethod?`Verification: ${i.verifyMethod}`:""}`,p,e.labelStyle)}else{let k=await Ou(f,`${a.type?`Type: ${a.type}`:""}`,p,e.labelStyle);p+=k,await Ou(f,`${a.docRef?`Doc Ref: ${a.docRef}`:""}`,p,e.labelStyle)}let g=(f.node()?.getBBox().width??200)+s,y=(f.node()?.getBBox().height??200)+s,v=-g/2,x=-y/2,b=Ze.svg(f),T=Je(e,{});e.look!=="handDrawn"&&(T.roughness=0,T.fillStyle="solid");let S=b.rectangle(v,x,g,y,T),w=f.insert(()=>S,":first-child");if(w.attr("class","basic label-container").attr("style",n),f.selectAll(".label").each((k,A,C)=>{let R=qe(C[A]),I=R.attr("transform"),L=0,E=0;if(I){let M=RegExp(/translate\(([^,]+),([^)]+)\)/).exec(I);M&&(L=parseFloat(M[1]),E=parseFloat(M[2]))}let D=E-y/2,_=v+s/2;(A===0||A===1)&&(_=L),R.attr("transform",`translate(${_}, ${D+s})`)}),p>d+m+l){let k=b.line(v,x+d+m+l,v+g,x+d+m+l,T);f.insert(()=>k).attr("style",n)}return Qe(e,w),e.intersect=function(k){return Xe.rect(e,k)},f}async function Ou(t,e,r,n=""){if(e==="")return 0;let i=t.insert("g").attr("class","label").attr("style",n),a=ge(),s=a.htmlLabels??!0,l=await di(i,iv(Ji(e)),{width:Zi(e,a)+50,classes:"markdown-node-label",useHtmlLabels:s,style:n},a),u;if(s){let h=l.children[0],f=qe(l);u=h.getBoundingClientRect(),f.attr("width",u.width),f.attr("height",u.height)}else{let h=l.children[0];for(let f of h.children)f.textContent=f.textContent.replaceAll(">",">").replaceAll("<","<"),n&&f.setAttribute("style",n);u=l.getBBox(),u.height+=6}return i.attr("transform",`translate(${-u.width/2},${-u.height/2+r})`),u.height}var Ste=N(()=>{"use strict";It();Ut();$t();Ht();tr();Xt();zo();yr();o(Ete,"requirementBox");o(Ou,"addText")});async function Cte(t,e,{config:r}){let{labelStyles:n,nodeStyles:i}=je(e);e.labelStyle=n||"";let a=10,s=e.width;e.width=(e.width??200)-10;let{shapeSvg:l,bbox:u,label:h}=await ut(t,e,st(e)),f=e.padding||10,d="",p;"ticket"in e&&e.ticket&&r?.kanban?.ticketBaseUrl&&(d=r?.kanban?.ticketBaseUrl.replace("#TICKET#",e.ticket),p=l.insert("svg:a",":first-child").attr("class","kanban-ticket-link").attr("xlink:href",d).attr("target","_blank"));let m={useHtmlLabels:e.useHtmlLabels,labelStyle:e.labelStyle||"",width:e.width,img:e.img,padding:e.padding||8,centerLabel:!1},g,y;p?{label:g,bbox:y}=await YT(p,"ticket"in e&&e.ticket||"",m):{label:g,bbox:y}=await YT(l,"ticket"in e&&e.ticket||"",m);let{label:v,bbox:x}=await YT(l,"assigned"in e&&e.assigned||"",m);e.width=s;let b=10,T=e?.width||0,S=Math.max(y.height,x.height)/2,w=Math.max(u.height+b*2,e?.height||0)+S,k=-T/2,A=-w/2;h.attr("transform","translate("+(f-T/2)+", "+(-S-u.height/2)+")"),g.attr("transform","translate("+(f-T/2)+", "+(-S+u.height/2)+")"),v.attr("transform","translate("+(f+T/2-x.width-2*a)+", "+(-S+u.height/2)+")");let C,{rx:R,ry:I}=e,{cssStyles:L}=e;if(e.look==="handDrawn"){let E=Ze.svg(l),D=Je(e,{}),_=R||I?E.path(Fs(k,A,T,w,R||0),D):E.rectangle(k,A,T,w,D);C=l.insert(()=>_,":first-child"),C.attr("class","basic label-container").attr("style",L||null)}else{C=l.insert("rect",":first-child"),C.attr("class","basic label-container __APA__").attr("style",i).attr("rx",R??5).attr("ry",I??5).attr("x",k).attr("y",A).attr("width",T).attr("height",w);let E="priority"in e&&e.priority;if(E){let D=l.append("line"),_=k+2,O=A+Math.floor((R??0)/2),M=A+w-Math.floor((R??0)/2);D.attr("x1",_).attr("y1",O).attr("x2",_).attr("y2",M).attr("stroke-width","4").attr("stroke",kRe(E))}}return Qe(e,C),e.height=w,e.intersect=function(E){return Xe.rect(e,E)},l}var kRe,Ate=N(()=>{"use strict";It();Ut();Zd();$t();Ht();kRe=o(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");o(Cte,"kanbanItem")});async function _te(t,e){let{labelStyles:r,nodeStyles:n}=je(e);e.labelStyle=r;let{shapeSvg:i,bbox:a,halfPadding:s,label:l}=await ut(t,e,st(e)),u=a.width+10*s,h=a.height+8*s,f=.15*u,{cssStyles:d}=e,p=a.width+20,m=a.height+20,g=Math.max(u,p),y=Math.max(h,m);l.attr("transform",`translate(${-a.width/2}, ${-a.height/2})`);let v,x=`M0 0 - a${f},${f} 1 0,0 ${g*.25},${-1*y*.1} - a${f},${f} 1 0,0 ${g*.25},0 - a${f},${f} 1 0,0 ${g*.25},0 - a${f},${f} 1 0,0 ${g*.25},${y*.1} - - a${f},${f} 1 0,0 ${g*.15},${y*.33} - a${f*.8},${f*.8} 1 0,0 0,${y*.34} - a${f},${f} 1 0,0 ${-1*g*.15},${y*.33} - - a${f},${f} 1 0,0 ${-1*g*.25},${y*.15} - a${f},${f} 1 0,0 ${-1*g*.25},0 - a${f},${f} 1 0,0 ${-1*g*.25},0 - a${f},${f} 1 0,0 ${-1*g*.25},${-1*y*.15} - - a${f},${f} 1 0,0 ${-1*g*.1},${-1*y*.33} - a${f*.8},${f*.8} 1 0,0 0,${-1*y*.34} - a${f},${f} 1 0,0 ${g*.1},${-1*y*.33} - H0 V0 Z`;if(e.look==="handDrawn"){let b=Ze.svg(i),T=Je(e,{}),S=b.path(x,T);v=i.insert(()=>S,":first-child"),v.attr("class","basic label-container").attr("style",Cn(d))}else v=i.insert("path",":first-child").attr("class","basic label-container").attr("style",n).attr("d",x);return v.attr("transform",`translate(${-g/2}, ${-y/2})`),Qe(e,v),e.calcIntersect=function(b,T){return Xe.rect(b,T)},e.intersect=function(b){return X.info("Bang intersect",e,b),Xe.rect(e,b)},i}var Dte=N(()=>{"use strict";pt();It();Ut();$t();Ht();tr();o(_te,"bang")});async function Lte(t,e){let{labelStyles:r,nodeStyles:n}=je(e);e.labelStyle=r;let{shapeSvg:i,bbox:a,halfPadding:s,label:l}=await ut(t,e,st(e)),u=a.width+2*s,h=a.height+2*s,f=.15*u,d=.25*u,p=.35*u,m=.2*u,{cssStyles:g}=e,y,v=`M0 0 - a${f},${f} 0 0,1 ${u*.25},${-1*u*.1} - a${p},${p} 1 0,1 ${u*.4},${-1*u*.1} - a${d},${d} 1 0,1 ${u*.35},${u*.2} - - a${f},${f} 1 0,1 ${u*.15},${h*.35} - a${m},${m} 1 0,1 ${-1*u*.15},${h*.65} - - a${d},${f} 1 0,1 ${-1*u*.25},${u*.15} - a${p},${p} 1 0,1 ${-1*u*.5},0 - a${f},${f} 1 0,1 ${-1*u*.25},${-1*u*.15} - - a${f},${f} 1 0,1 ${-1*u*.1},${-1*h*.35} - a${m},${m} 1 0,1 ${u*.1},${-1*h*.65} - H0 V0 Z`;if(e.look==="handDrawn"){let x=Ze.svg(i),b=Je(e,{}),T=x.path(v,b);y=i.insert(()=>T,":first-child"),y.attr("class","basic label-container").attr("style",Cn(g))}else y=i.insert("path",":first-child").attr("class","basic label-container").attr("style",n).attr("d",v);return l.attr("transform",`translate(${-a.width/2}, ${-a.height/2})`),y.attr("transform",`translate(${-u/2}, ${-h/2})`),Qe(e,y),e.calcIntersect=function(x,b){return Xe.rect(x,b)},e.intersect=function(x){return X.info("Cloud intersect",e,x),Xe.rect(e,x)},i}var Rte=N(()=>{"use strict";Ht();pt();tr();Ut();$t();It();o(Lte,"cloud")});async function Nte(t,e){let{labelStyles:r,nodeStyles:n}=je(e);e.labelStyle=r;let{shapeSvg:i,bbox:a,halfPadding:s,label:l}=await ut(t,e,st(e)),u=a.width+8*s,h=a.height+2*s,f=5,d=` - M${-u/2} ${h/2-f} - v${-h+2*f} - q0,-${f} ${f},-${f} - h${u-2*f} - q${f},0 ${f},${f} - v${h-2*f} - q0,${f} -${f},${f} - h${-u+2*f} - q-${f},0 -${f},-${f} - Z - `,p=i.append("path").attr("id","node-"+e.id).attr("class","node-bkg node-"+e.type).attr("style",n).attr("d",d);return i.append("line").attr("class","node-line-").attr("x1",-u/2).attr("y1",h/2).attr("x2",u/2).attr("y2",h/2),l.attr("transform",`translate(${-a.width/2}, ${-a.height/2})`),i.append(()=>l.node()),Qe(e,p),e.calcIntersect=function(m,g){return Xe.rect(m,g)},e.intersect=function(m){return Xe.rect(e,m)},i}var Mte=N(()=>{"use strict";Ut();$t();It();o(Nte,"defaultMindmapNode")});async function Ite(t,e){let r={padding:e.padding??0};return iw(t,e,r)}var Ote=N(()=>{"use strict";U9();o(Ite,"mindmapCircle")});function Pte(t){return t in q9}var ERe,SRe,q9,W9=N(()=>{"use strict";yJ();bJ();wJ();EJ();U9();CJ();_J();LJ();NJ();IJ();PJ();FJ();zJ();VJ();HJ();WJ();XJ();KJ();ZJ();eee();ree();iee();see();lee();uee();fee();pee();gee();vee();bee();wee();Eee();Cee();_ee();Lee();Nee();Iee();Pee();Fee();zee();Vee();Hee();Wee();Xee();Kee();Zee();ete();rte();ite();ste();lte();ute();fte();pte();gte();vte();xte();kte();Ste();Ate();Dte();Rte();Mte();Ote();ERe=[{semanticName:"Process",name:"Rectangle",shortName:"rect",description:"Standard process shape",aliases:["proc","process","rectangle"],internalAliases:["squareRect"],handler:Gee},{semanticName:"Event",name:"Rounded Rectangle",shortName:"rounded",description:"Represents an event",aliases:["event"],internalAliases:["roundedRect"],handler:Oee},{semanticName:"Terminal Point",name:"Stadium",shortName:"stadium",description:"Terminal point",aliases:["terminal","pill"],handler:Uee},{semanticName:"Subprocess",name:"Framed Rectangle",shortName:"fr-rect",description:"Subprocess",aliases:["subprocess","subproc","framed-rectangle","subroutine"],handler:Qee},{semanticName:"Database",name:"Cylinder",shortName:"cyl",description:"Database storage",aliases:["db","database","cylinder"],handler:OJ},{semanticName:"Start",name:"Circle",shortName:"circle",description:"Starting point",aliases:["circ"],handler:iw},{semanticName:"Bang",name:"Bang",shortName:"bang",description:"Bang",aliases:["bang"],handler:_te},{semanticName:"Cloud",name:"Cloud",shortName:"cloud",description:"cloud",aliases:["cloud"],handler:Lte},{semanticName:"Decision",name:"Diamond",shortName:"diam",description:"Decision-making step",aliases:["decision","diamond","question"],handler:Dee},{semanticName:"Prepare Conditional",name:"Hexagon",shortName:"hex",description:"Preparation or condition step",aliases:["hexagon","prepare"],handler:jJ},{semanticName:"Data Input/Output",name:"Lean Right",shortName:"lean-r",description:"Represents input or output",aliases:["lean-right","in-out"],internalAliases:["lean_right"],handler:mee},{semanticName:"Data Input/Output",name:"Lean Left",shortName:"lean-l",description:"Represents output or input",aliases:["lean-left","out-in"],internalAliases:["lean_left"],handler:dee},{semanticName:"Priority Action",name:"Trapezoid Base Bottom",shortName:"trap-b",description:"Priority action",aliases:["priority","trapezoid-bottom","trapezoid"],handler:ote},{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:cee},{semanticName:"Stop",name:"Double Circle",shortName:"dbl-circ",description:"Represents a stop point",aliases:["double-circle"],internalAliases:["doublecircle"],handler:$J},{semanticName:"Text Block",name:"Text Block",shortName:"text",description:"Text block",handler:nte},{semanticName:"Card",name:"Notched Rectangle",shortName:"notch-rect",description:"Represents a card",aliases:["card","notched-rectangle"],handler:TJ},{semanticName:"Lined/Shaded Process",name:"Lined Rectangle",shortName:"lin-rect",description:"Lined process shape",aliases:["lined-rectangle","lined-process","lin-proc","shaded-process"],handler:Bee},{semanticName:"Start",name:"Small Circle",shortName:"sm-circ",description:"Small starting point",aliases:["start","small-circle"],internalAliases:["stateStart"],handler:jee},{semanticName:"Stop",name:"Framed Circle",shortName:"fr-circ",description:"Stop point",aliases:["stop","framed-circle"],internalAliases:["stateEnd"],handler:Yee},{semanticName:"Fork/Join",name:"Filled Rectangle",shortName:"fork",description:"Fork or join in process flow",aliases:["join"],internalAliases:["forkJoin"],handler:qJ},{semanticName:"Collate",name:"Hourglass",shortName:"hourglass",description:"Represents a collate operation",aliases:["hourglass","collate"],handler:QJ},{semanticName:"Comment",name:"Curly Brace",shortName:"brace",description:"Adds a comment",aliases:["comment","brace-l"],handler:AJ},{semanticName:"Comment Right",name:"Curly Brace",shortName:"brace-r",description:"Adds a comment",handler:DJ},{semanticName:"Comment with braces on both sides",name:"Curly Braces",shortName:"braces",description:"Adds a comment",handler:RJ},{semanticName:"Com Link",name:"Lightning Bolt",shortName:"bolt",description:"Communication link",aliases:["com-link","lightning-bolt"],handler:yee},{semanticName:"Document",name:"Document",shortName:"doc",description:"Represents a document",aliases:["doc","document"],handler:dte},{semanticName:"Delay",name:"Half-Rounded Rectangle",shortName:"delay",description:"Represents a delay",aliases:["half-rounded-rectangle"],handler:YJ},{semanticName:"Direct Access Storage",name:"Horizontal Cylinder",shortName:"h-cyl",description:"Direct access storage",aliases:["das","horizontal-cylinder"],handler:ate},{semanticName:"Disk Storage",name:"Lined Cylinder",shortName:"lin-cyl",description:"Disk storage",aliases:["disk","lined-cylinder"],handler:xee},{semanticName:"Display",name:"Curved Trapezoid",shortName:"curv-trap",description:"Represents a display",aliases:["curved-trapezoid","display"],handler:MJ},{semanticName:"Divided Process",name:"Divided Rectangle",shortName:"div-rect",description:"Divided process shape",aliases:["div-proc","divided-rectangle","divided-process"],handler:BJ},{semanticName:"Extract",name:"Triangle",shortName:"tri",description:"Extraction process",aliases:["extract","triangle"],handler:hte},{semanticName:"Internal Storage",name:"Window Pane",shortName:"win-pane",description:"Internal storage",aliases:["internal-storage","window-pane"],handler:yte},{semanticName:"Junction",name:"Filled Circle",shortName:"f-circ",description:"Junction point",aliases:["junction","filled-circle"],handler:GJ},{semanticName:"Loop Limit",name:"Trapezoidal Pentagon",shortName:"notch-pent",description:"Loop limit step",aliases:["loop-limit","notched-pentagon"],handler:cte},{semanticName:"Manual File",name:"Flipped Triangle",shortName:"flip-tri",description:"Manual file operation",aliases:["manual-file","flipped-triangle"],handler:UJ},{semanticName:"Manual Input",name:"Sloped Rectangle",shortName:"sl-rect",description:"Manual input step",aliases:["manual-input","sloped-rectangle"],handler:$ee},{semanticName:"Multi-Document",name:"Stacked Document",shortName:"docs",description:"Multiple documents",aliases:["documents","st-doc","stacked-document"],handler:See},{semanticName:"Multi-Process",name:"Stacked Rectangle",shortName:"st-rect",description:"Multiple processes",aliases:["procs","processes","stacked-rectangle"],handler:kee},{semanticName:"Stored Data",name:"Bow Tie Rectangle",shortName:"bow-rect",description:"Stored data",aliases:["stored-data","bow-tie-rectangle"],handler:xJ},{semanticName:"Summary",name:"Crossed Circle",shortName:"cross-circ",description:"Summary",aliases:["summary","crossed-circle"],handler:SJ},{semanticName:"Tagged Document",name:"Tagged Document",shortName:"tag-doc",description:"Tagged document",aliases:["tag-doc","tagged-document"],handler:tte},{semanticName:"Tagged Process",name:"Tagged Rectangle",shortName:"tag-rect",description:"Tagged process",aliases:["tagged-rectangle","tag-proc","tagged-process"],handler:Jee},{semanticName:"Paper Tape",name:"Flag",shortName:"flag",description:"Paper tape",aliases:["paper-tape"],handler:mte},{semanticName:"Odd",name:"Odd",shortName:"odd",description:"Odd shape",internalAliases:["rect_left_inv_arrow"],handler:Ree},{semanticName:"Lined Document",name:"Lined Document",shortName:"lin-doc",description:"Lined document",aliases:["lined-document"],handler:Tee}],SRe=o(()=>{let e=[...Object.entries({state:qee,choice:kJ,note:Aee,rectWithTitle:Mee,labelRect:hee,iconSquare:aee,iconCircle:tee,icon:JJ,iconRounded:nee,imageSquare:oee,anchor:gJ,kanbanItem:Cte,mindmapCircle:Ite,defaultMindmapNode:Nte,classBox:wte,erBox:H9,requirementBox:Ete}),...ERe.flatMap(r=>[r.shortName,..."aliases"in r?r.aliases:[],..."internalAliases"in r?r.internalAliases:[]].map(i=>[i,r.handler]))];return Object.fromEntries(e)},"generateShapeMap"),q9=SRe();o(Pte,"isValidShape")});var CRe,lw,Bte=N(()=>{"use strict";yr();w2();Xt();pt();W9();tr();gr();ci();CRe="flowchart-",lw=class{constructor(){this.vertexCounter=0;this.config=ge();this.vertices=new Map;this.edges=[];this.classes=new Map;this.subGraphs=[];this.subGraphLookup=new Map;this.tooltips=new Map;this.subCount=0;this.firstGraphFlag=!0;this.secCount=-1;this.posCrossRef=[];this.funs=[];this.setAccTitle=Rr;this.setAccDescription=Ir;this.setDiagramTitle=$r;this.getAccTitle=Mr;this.getAccDescription=Or;this.getDiagramTitle=Pr;this.funs.push(this.setupToolTips.bind(this)),this.addVertex=this.addVertex.bind(this),this.firstGraph=this.firstGraph.bind(this),this.setDirection=this.setDirection.bind(this),this.addSubGraph=this.addSubGraph.bind(this),this.addLink=this.addLink.bind(this),this.setLink=this.setLink.bind(this),this.updateLink=this.updateLink.bind(this),this.addClass=this.addClass.bind(this),this.setClass=this.setClass.bind(this),this.destructLink=this.destructLink.bind(this),this.setClickEvent=this.setClickEvent.bind(this),this.setTooltip=this.setTooltip.bind(this),this.updateLinkInterpolate=this.updateLinkInterpolate.bind(this),this.setClickFun=this.setClickFun.bind(this),this.bindFunctions=this.bindFunctions.bind(this),this.lex={firstGraph:this.firstGraph.bind(this)},this.clear(),this.setGen("gen-2")}static{o(this,"FlowDB")}sanitizeText(e){return tt.sanitizeText(e,this.config)}lookUpDomId(e){for(let r of this.vertices.values())if(r.id===e)return r.domId;return e}addVertex(e,r,n,i,a,s,l={},u){if(!e||e.trim().length===0)return;let h;if(u!==void 0){let m;u.includes(` -`)?m=u+` -`:m=`{ -`+u+` -}`,h=Kh(m,{schema:jh})}let f=this.edges.find(m=>m.id===e);if(f){let m=h;m?.animate!==void 0&&(f.animate=m.animate),m?.animation!==void 0&&(f.animation=m.animation),m?.curve!==void 0&&(f.interpolate=m.curve);return}let d,p=this.vertices.get(e);if(p===void 0&&(p={id:e,labelType:"text",domId:CRe+e+"-"+this.vertexCounter,styles:[],classes:[]},this.vertices.set(e,p)),this.vertexCounter++,r!==void 0?(this.config=ge(),d=this.sanitizeText(r.text.trim()),p.labelType=r.type,d.startsWith('"')&&d.endsWith('"')&&(d=d.substring(1,d.length-1)),p.text=d):p.text===void 0&&(p.text=e),n!==void 0&&(p.type=n),i?.forEach(m=>{p.styles.push(m)}),a?.forEach(m=>{p.classes.push(m)}),s!==void 0&&(p.dir=s),p.props===void 0?p.props=l:l!==void 0&&Object.assign(p.props,l),h!==void 0){if(h.shape){if(h.shape!==h.shape.toLowerCase()||h.shape.includes("_"))throw new Error(`No such shape: ${h.shape}. Shape names should be lowercase.`);if(!Pte(h.shape))throw new Error(`No such shape: ${h.shape}.`);p.type=h?.shape}h?.label&&(p.text=h?.label),h?.icon&&(p.icon=h?.icon,!h.label?.trim()&&p.text===e&&(p.text="")),h?.form&&(p.form=h?.form),h?.pos&&(p.pos=h?.pos),h?.img&&(p.img=h?.img,!h.label?.trim()&&p.text===e&&(p.text="")),h?.constraint&&(p.constraint=h.constraint),h.w&&(p.assetWidth=Number(h.w)),h.h&&(p.assetHeight=Number(h.h))}}addSingleLink(e,r,n,i){let l={start:e,end:r,type:void 0,text:"",labelType:"text",classes:[],isUserDefinedId:!1,interpolate:this.edges.defaultInterpolate};X.info("abc78 Got edge...",l);let u=n.text;if(u!==void 0&&(l.text=this.sanitizeText(u.text.trim()),l.text.startsWith('"')&&l.text.endsWith('"')&&(l.text=l.text.substring(1,l.text.length-1)),l.labelType=u.type),n!==void 0&&(l.type=n.type,l.stroke=n.stroke,l.length=n.length>10?10:n.length),i&&!this.edges.some(h=>h.id===i))l.id=i,l.isUserDefinedId=!0;else{let h=this.edges.filter(f=>f.start===l.start&&f.end===l.end);h.length===0?l.id=xc(l.start,l.end,{counter:0,prefix:"L"}):l.id=xc(l.start,l.end,{counter:h.length+1,prefix:"L"})}if(this.edges.length<(this.config.maxEdges??500))X.info("Pushing edge..."),this.edges.push(l);else throw new Error(`Edge limit exceeded. ${this.edges.length} edges found, but the limit is ${this.config.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.`)}isLinkData(e){return e!==null&&typeof e=="object"&&"id"in e&&typeof e.id=="string"}addLink(e,r,n){let i=this.isLinkData(n)?n.id.replace("@",""):void 0;X.info("addLink",e,r,i);for(let a of e)for(let s of r){let l=a===e[e.length-1],u=s===r[0];l&&u?this.addSingleLink(a,s,n,i):this.addSingleLink(a,s,n,void 0)}}updateLinkInterpolate(e,r){e.forEach(n=>{n==="default"?this.edges.defaultInterpolate=r:this.edges[n].interpolate=r})}updateLink(e,r){e.forEach(n=>{if(typeof n=="number"&&n>=this.edges.length)throw new Error(`The index ${n} for linkStyle is out of bounds. Valid indices for linkStyle are between 0 and ${this.edges.length-1}. (Help: Ensure that the index is within the range of existing edges.)`);n==="default"?this.edges.defaultStyle=r:(this.edges[n].style=r,(this.edges[n]?.style?.length??0)>0&&!this.edges[n]?.style?.some(i=>i?.startsWith("fill"))&&this.edges[n]?.style?.push("fill:none"))})}addClass(e,r){let n=r.join().replace(/\\,/g,"\xA7\xA7\xA7").replace(/,/g,";").replace(/§§§/g,",").split(";");e.split(",").forEach(i=>{let a=this.classes.get(i);a===void 0&&(a={id:i,styles:[],textStyles:[]},this.classes.set(i,a)),n?.forEach(s=>{if(/color/.exec(s)){let l=s.replace("fill","bgFill");a.textStyles.push(l)}a.styles.push(s)})})}setDirection(e){this.direction=e.trim(),/.*/.exec(this.direction)&&(this.direction="LR"),/.*v/.exec(this.direction)&&(this.direction="TB"),this.direction==="TD"&&(this.direction="TB")}setClass(e,r){for(let n of e.split(",")){let i=this.vertices.get(n);i&&i.classes.push(r);let a=this.edges.find(l=>l.id===n);a&&a.classes.push(r);let s=this.subGraphLookup.get(n);s&&s.classes.push(r)}}setTooltip(e,r){if(r!==void 0){r=this.sanitizeText(r);for(let n of e.split(","))this.tooltips.set(this.version==="gen-1"?this.lookUpDomId(n):n,r)}}setClickFun(e,r,n){let i=this.lookUpDomId(e);if(ge().securityLevel!=="loose"||r===void 0)return;let a=[];if(typeof n=="string"){a=n.split(/,(?=(?:(?:[^"]*"){2})*[^"]*$)/);for(let l=0;l{let l=document.querySelector(`[id="${i}"]`);l!==null&&l.addEventListener("click",()=>{qt.runFunc(r,...a)},!1)}))}setLink(e,r,n){e.split(",").forEach(i=>{let a=this.vertices.get(i);a!==void 0&&(a.link=qt.formatUrl(r,this.config),a.linkTarget=n)}),this.setClass(e,"clickable")}getTooltip(e){return this.tooltips.get(e)}setClickEvent(e,r,n){e.split(",").forEach(i=>{this.setClickFun(i,r,n)}),this.setClass(e,"clickable")}bindFunctions(e){this.funs.forEach(r=>{r(e)})}getDirection(){return this.direction?.trim()}getVertices(){return this.vertices}getEdges(){return this.edges}getClasses(){return this.classes}setupToolTips(e){let r=qe(".mermaidTooltip");(r._groups||r)[0][0]===null&&(r=qe("body").append("div").attr("class","mermaidTooltip").style("opacity",0)),qe(e).select("svg").selectAll("g.node").on("mouseover",a=>{let s=qe(a.currentTarget);if(s.attr("title")===null)return;let u=a.currentTarget?.getBoundingClientRect();r.transition().duration(200).style("opacity",".9"),r.text(s.attr("title")).style("left",window.scrollX+u.left+(u.right-u.left)/2+"px").style("top",window.scrollY+u.bottom+"px"),r.html(r.html().replace(/<br\/>/g,"
    ")),s.classed("hover",!0)}).on("mouseout",a=>{r.transition().duration(500).style("opacity",0),qe(a.currentTarget).classed("hover",!1)})}clear(e="gen-2"){this.vertices=new Map,this.classes=new Map,this.edges=[],this.funs=[this.setupToolTips.bind(this)],this.subGraphs=[],this.subGraphLookup=new Map,this.subCount=0,this.tooltips=new Map,this.firstGraphFlag=!0,this.version=e,this.config=ge(),Sr()}setGen(e){this.version=e||"gen-2"}defaultStyle(){return"fill:#ffa;stroke: #f66; stroke-width: 3px; stroke-dasharray: 5, 5;fill:#ffa;stroke: #666;"}addSubGraph(e,r,n){let i=e.text.trim(),a=n.text;e===n&&/\s/.exec(n.text)&&(i=void 0);let l=o(p=>{let m={boolean:{},number:{},string:{}},g=[],y;return{nodeList:p.filter(function(x){let b=typeof x;return x.stmt&&x.stmt==="dir"?(y=x.value,!1):x.trim()===""?!1:b in m?m[b].hasOwnProperty(x)?!1:m[b][x]=!0:g.includes(x)?!1:g.push(x)}),dir:y}},"uniq")(r.flat()),u=l.nodeList,h=l.dir,f=ge().flowchart??{};if(h=h??(f.inheritDir?this.getDirection()??ge().direction??void 0:void 0),this.version==="gen-1")for(let p=0;p2e3)return{result:!1,count:0};if(this.posCrossRef[this.secCount]=r,this.subGraphs[r].id===e)return{result:!0,count:0};let i=0,a=1;for(;i=0){let l=this.indexNodes2(e,s);if(l.result)return{result:!0,count:a+l.count};a=a+l.count}i=i+1}return{result:!1,count:a}}getDepthFirstPos(e){return this.posCrossRef[e]}indexNodes(){this.secCount=-1,this.subGraphs.length>0&&this.indexNodes2("none",this.subGraphs.length-1)}getSubGraphs(){return this.subGraphs}firstGraph(){return this.firstGraphFlag?(this.firstGraphFlag=!1,!0):!1}destructStartLink(e){let r=e.trim(),n="arrow_open";switch(r[0]){case"<":n="arrow_point",r=r.slice(1);break;case"x":n="arrow_cross",r=r.slice(1);break;case"o":n="arrow_circle",r=r.slice(1);break}let i="normal";return r.includes("=")&&(i="thick"),r.includes(".")&&(i="dotted"),{type:n,stroke:i}}countChar(e,r){let n=r.length,i=0;for(let a=0;a":i="arrow_point",r.startsWith("<")&&(i="double_"+i,n=n.slice(1));break;case"o":i="arrow_circle",r.startsWith("o")&&(i="double_"+i,n=n.slice(1));break}let a="normal",s=n.length-1;n.startsWith("=")&&(a="thick"),n.startsWith("~")&&(a="invisible");let l=this.countChar(".",n);return l&&(a="dotted",s=l),{type:i,stroke:a,length:s}}destructLink(e,r){let n=this.destructEndLink(e),i;if(r){if(i=this.destructStartLink(r),i.stroke!==n.stroke)return{type:"INVALID",stroke:"INVALID"};if(i.type==="arrow_open")i.type=n.type;else{if(i.type!==n.type)return{type:"INVALID",stroke:"INVALID"};i.type="double_"+i.type}return i.type==="double_arrow"&&(i.type="double_arrow_point"),i.length=n.length,i}return n}exists(e,r){for(let n of e)if(n.nodes.includes(r))return!0;return!1}makeUniq(e,r){let n=[];return e.nodes.forEach((i,a)=>{this.exists(r,i)||n.push(e.nodes[a])}),{nodes:n}}getTypeFromVertex(e){if(e.img)return"imageSquare";if(e.icon)return e.form==="circle"?"iconCircle":e.form==="square"?"iconSquare":e.form==="rounded"?"iconRounded":"icon";switch(e.type){case"square":case void 0:return"squareRect";case"round":return"roundedRect";case"ellipse":return"ellipse";default:return e.type}}findNode(e,r){return e.find(n=>n.id===r)}destructEdgeType(e){let r="none",n="arrow_point";switch(e){case"arrow_point":case"arrow_circle":case"arrow_cross":n=e;break;case"double_arrow_point":case"double_arrow_circle":case"double_arrow_cross":r=e.replace("double_",""),n=r;break}return{arrowTypeStart:r,arrowTypeEnd:n}}addNodeFromVertex(e,r,n,i,a,s){let l=n.get(e.id),u=i.get(e.id)??!1,h=this.findNode(r,e.id);if(h)h.cssStyles=e.styles,h.cssCompiledStyles=this.getCompiledStyles(e.classes),h.cssClasses=e.classes.join(" ");else{let f={id:e.id,label:e.text,labelStyle:"",parentId:l,padding:a.flowchart?.padding||8,cssStyles:e.styles,cssCompiledStyles:this.getCompiledStyles(["default","node",...e.classes]),cssClasses:"default "+e.classes.join(" "),dir:e.dir,domId:e.domId,look:s,link:e.link,linkTarget:e.linkTarget,tooltip:this.getTooltip(e.id),icon:e.icon,pos:e.pos,img:e.img,assetWidth:e.assetWidth,assetHeight:e.assetHeight,constraint:e.constraint};u?r.push({...f,isGroup:!0,shape:"rect"}):r.push({...f,isGroup:!1,shape:this.getTypeFromVertex(e)})}}getCompiledStyles(e){let r=[];for(let n of e){let i=this.classes.get(n);i?.styles&&(r=[...r,...i.styles??[]].map(a=>a.trim())),i?.textStyles&&(r=[...r,...i.textStyles??[]].map(a=>a.trim()))}return r}getData(){let e=ge(),r=[],n=[],i=this.getSubGraphs(),a=new Map,s=new Map;for(let h=i.length-1;h>=0;h--){let f=i[h];f.nodes.length>0&&s.set(f.id,!0);for(let d of f.nodes)a.set(d,f.id)}for(let h=i.length-1;h>=0;h--){let f=i[h];r.push({id:f.id,label:f.title,labelStyle:"",parentId:a.get(f.id),padding:8,cssCompiledStyles:this.getCompiledStyles(f.classes),cssClasses:f.classes.join(" "),shape:"rect",dir:f.dir,isGroup:!0,look:e.look})}this.getVertices().forEach(h=>{this.addNodeFromVertex(h,r,a,s,e,e.look||"classic")});let u=this.getEdges();return u.forEach((h,f)=>{let{arrowTypeStart:d,arrowTypeEnd:p}=this.destructEdgeType(h.type),m=[...u.defaultStyle??[]];h.style&&m.push(...h.style);let g={id:xc(h.start,h.end,{counter:f,prefix:"L"},h.id),isUserDefinedId:h.isUserDefinedId,start:h.start,end:h.end,type:h.type??"normal",label:h.text,labelpos:"c",thickness:h.stroke,minlen:h.length,classes:h?.stroke==="invisible"?"":"edge-thickness-normal edge-pattern-solid flowchart-link",arrowTypeStart:h?.stroke==="invisible"||h?.type==="arrow_open"?"none":d,arrowTypeEnd:h?.stroke==="invisible"||h?.type==="arrow_open"?"none":p,arrowheadStyle:"fill: #333",cssCompiledStyles:this.getCompiledStyles(h.classes),labelStyle:m,style:m,pattern:h.stroke,look:e.look,animate:h.animate,animation:h.animation,curve:h.interpolate||this.edges.defaultInterpolate||e.flowchart?.curve};n.push(g)}),{nodes:r,edges:n,other:{},config:e}}defaultConfig(){return G3.flowchart}}});var Vo,ep=N(()=>{"use strict";yr();Vo=o((t,e)=>{let r;return e==="sandbox"&&(r=qe("#i"+t)),(e==="sandbox"?qe(r.nodes()[0].contentDocument.body):qe("body")).select(`[id="${t}"]`)},"getDiagramElement")});var Pu,O2=N(()=>{"use strict";Pu=o(({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 Fte,ARe,_Re,DRe,LRe,RRe,NRe,$te,Sm,zte,cw=N(()=>{"use strict";Xt();gr();pt();O2();yr();Ht();zo();S9();aw();Zd();$t();Fte=o(async(t,e)=>{X.info("Creating subgraph rect for ",e.id,e);let r=ge(),{themeVariables:n,handDrawnSeed:i}=r,{clusterBkg:a,clusterBorder:s}=n,{labelStyles:l,nodeStyles:u,borderStyles:h,backgroundStyles:f}=je(e),d=t.insert("g").attr("class","cluster "+e.cssClasses).attr("id",e.id).attr("data-look",e.look),p=vr(r.flowchart.htmlLabels),m=d.insert("g").attr("class","cluster-label "),g=await di(m,e.label,{style:e.labelStyle,useHtmlLabels:p,isNode:!0}),y=g.getBBox();if(vr(r.flowchart.htmlLabels)){let A=g.children[0],C=qe(g);y=A.getBoundingClientRect(),C.attr("width",y.width),C.attr("height",y.height)}let v=e.width<=y.width+e.padding?y.width+e.padding:e.width;e.width<=y.width+e.padding?e.diff=(v-e.width)/2-e.padding:e.diff=-e.padding;let x=e.height,b=e.x-v/2,T=e.y-x/2;X.trace("Data ",e,JSON.stringify(e));let S;if(e.look==="handDrawn"){let A=Ze.svg(d),C=Je(e,{roughness:.7,fill:a,stroke:s,fillWeight:3,seed:i}),R=A.path(Fs(b,T,v,x,0),C);S=d.insert(()=>(X.debug("Rough node insert CXC",R),R),":first-child"),S.select("path:nth-child(2)").attr("style",h.join(";")),S.select("path").attr("style",f.join(";").replace("fill","stroke"))}else S=d.insert("rect",":first-child"),S.attr("style",u).attr("rx",e.rx).attr("ry",e.ry).attr("x",b).attr("y",T).attr("width",v).attr("height",x);let{subGraphTitleTopMargin:w}=Pu(r);if(m.attr("transform",`translate(${e.x-y.width/2}, ${e.y-e.height/2+w})`),l){let A=m.select("span");A&&A.attr("style",l)}let k=S.node().getBBox();return e.offsetX=0,e.width=k.width,e.height=k.height,e.offsetY=y.height-e.padding/2,e.intersect=function(A){return Qh(e,A)},{cluster:d,labelBBox:y}},"rect"),ARe=o((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(l){return Qh(e,l)},{cluster:r,labelBBox:{width:0,height:0}}},"noteGroup"),_Re=o(async(t,e)=>{let r=ge(),{themeVariables:n,handDrawnSeed:i}=r,{altBackground:a,compositeBackground:s,compositeTitleBackground:l,nodeBorder:u}=n,h=t.insert("g").attr("class",e.cssClasses).attr("id",e.id).attr("data-id",e.id).attr("data-look",e.look),f=h.insert("g",":first-child"),d=h.insert("g").attr("class","cluster-label"),p=h.append("rect"),m=d.node().appendChild(await kc(e.label,e.labelStyle,void 0,!0)),g=m.getBBox();if(vr(r.flowchart.htmlLabels)){let R=m.children[0],I=qe(m);g=R.getBoundingClientRect(),I.attr("width",g.width),I.attr("height",g.height)}let y=0*e.padding,v=y/2,x=(e.width<=g.width+e.padding?g.width+e.padding:e.width)+y;e.width<=g.width+e.padding?e.diff=(x-e.width)/2-e.padding:e.diff=-e.padding;let b=e.height+y,T=e.height+y-g.height-6,S=e.x-x/2,w=e.y-b/2;e.width=x;let k=e.y-e.height/2-v+g.height+2,A;if(e.look==="handDrawn"){let R=e.cssClasses.includes("statediagram-cluster-alt"),I=Ze.svg(h),L=e.rx||e.ry?I.path(Fs(S,w,x,b,10),{roughness:.7,fill:l,fillStyle:"solid",stroke:u,seed:i}):I.rectangle(S,w,x,b,{seed:i});A=h.insert(()=>L,":first-child");let E=I.rectangle(S,k,x,T,{fill:R?a:s,fillStyle:R?"hachure":"solid",stroke:u,seed:i});A=h.insert(()=>L,":first-child"),p=h.insert(()=>E)}else A=f.insert("rect",":first-child"),A.attr("class","outer").attr("x",S).attr("y",w).attr("width",x).attr("height",b).attr("data-look",e.look),p.attr("class","inner").attr("x",S).attr("y",k).attr("width",x).attr("height",T);d.attr("transform",`translate(${e.x-g.width/2}, ${w+1-(vr(r.flowchart.htmlLabels)?0:3)})`);let C=A.node().getBBox();return e.height=C.height,e.offsetX=0,e.offsetY=g.height-e.padding/2,e.labelBBox=g,e.intersect=function(R){return Qh(e,R)},{cluster:h,labelBBox:g}},"roundedWithTitle"),DRe=o(async(t,e)=>{X.info("Creating subgraph rect for ",e.id,e);let r=ge(),{themeVariables:n,handDrawnSeed:i}=r,{clusterBkg:a,clusterBorder:s}=n,{labelStyles:l,nodeStyles:u,borderStyles:h,backgroundStyles:f}=je(e),d=t.insert("g").attr("class","cluster "+e.cssClasses).attr("id",e.id).attr("data-look",e.look),p=vr(r.flowchart.htmlLabels),m=d.insert("g").attr("class","cluster-label "),g=await di(m,e.label,{style:e.labelStyle,useHtmlLabels:p,isNode:!0,width:e.width}),y=g.getBBox();if(vr(r.flowchart.htmlLabels)){let A=g.children[0],C=qe(g);y=A.getBoundingClientRect(),C.attr("width",y.width),C.attr("height",y.height)}let v=e.width<=y.width+e.padding?y.width+e.padding:e.width;e.width<=y.width+e.padding?e.diff=(v-e.width)/2-e.padding:e.diff=-e.padding;let x=e.height,b=e.x-v/2,T=e.y-x/2;X.trace("Data ",e,JSON.stringify(e));let S;if(e.look==="handDrawn"){let A=Ze.svg(d),C=Je(e,{roughness:.7,fill:a,stroke:s,fillWeight:4,seed:i}),R=A.path(Fs(b,T,v,x,e.rx),C);S=d.insert(()=>(X.debug("Rough node insert CXC",R),R),":first-child"),S.select("path:nth-child(2)").attr("style",h.join(";")),S.select("path").attr("style",f.join(";").replace("fill","stroke"))}else S=d.insert("rect",":first-child"),S.attr("style",u).attr("rx",e.rx).attr("ry",e.ry).attr("x",b).attr("y",T).attr("width",v).attr("height",x);let{subGraphTitleTopMargin:w}=Pu(r);if(m.attr("transform",`translate(${e.x-y.width/2}, ${e.y-e.height/2+w})`),l){let A=m.select("span");A&&A.attr("style",l)}let k=S.node().getBBox();return e.offsetX=0,e.width=k.width,e.height=k.height,e.offsetY=y.height-e.padding/2,e.intersect=function(A){return Qh(e,A)},{cluster:d,labelBBox:y}},"kanbanSection"),LRe=o((t,e)=>{let r=ge(),{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),l=s.insert("g",":first-child"),u=0*e.padding,h=e.width+u;e.diff=-e.padding;let f=e.height+u,d=e.x-h/2,p=e.y-f/2;e.width=h;let m;if(e.look==="handDrawn"){let v=Ze.svg(s).rectangle(d,p,h,f,{fill:"lightgrey",roughness:.5,strokeLineDash:[5],stroke:a,seed:i});m=s.insert(()=>v,":first-child")}else m=l.insert("rect",":first-child"),m.attr("class","divider").attr("x",d).attr("y",p).attr("width",h).attr("height",f).attr("data-look",e.look);let g=m.node().getBBox();return e.height=g.height,e.offsetX=0,e.offsetY=0,e.intersect=function(y){return Qh(e,y)},{cluster:s,labelBBox:{}}},"divider"),RRe=Fte,NRe={rect:Fte,squareRect:RRe,roundedWithTitle:_Re,noteGroup:ARe,divider:LRe,kanbanSection:DRe},$te=new Map,Sm=o(async(t,e)=>{let r=e.shape||"rect",n=await NRe[r](t,e);return $te.set(e.id,n),n},"insertCluster"),zte=o(()=>{$te=new Map},"clear")});function uw(t,e){if(t===void 0||e===void 0)return{angle:0,deltaX:0,deltaY:0};t=Xn(t),e=Xn(e);let[r,n]=[t.x,t.y],[i,a]=[e.x,e.y],s=i-r,l=a-n;return{angle:Math.atan(l/s),deltaX:s,deltaY:l}}var fa,Y9,Xn,hw,X9=N(()=>{"use strict";fa={aggregation:17.25,extension:17.25,composition:17.25,dependency:6,lollipop:13.5,arrow_point:4},Y9={arrow_point:9,arrow_cross:12.5,arrow_circle:12.5};o(uw,"calculateDeltaAndAngle");Xn=o(t=>Array.isArray(t)?{x:t[0],y:t[1]}:t,"pointTransformer"),hw=o(t=>({x:o(function(e,r,n){let i=0,a=Xn(n[0]).x=0?1:-1)}else if(r===n.length-1&&Object.hasOwn(fa,t.arrowTypeEnd)){let{angle:m,deltaX:g}=uw(n[n.length-1],n[n.length-2]);i=fa[t.arrowTypeEnd]*Math.cos(m)*(g>=0?1:-1)}let s=Math.abs(Xn(e).x-Xn(n[n.length-1]).x),l=Math.abs(Xn(e).y-Xn(n[n.length-1]).y),u=Math.abs(Xn(e).x-Xn(n[0]).x),h=Math.abs(Xn(e).y-Xn(n[0]).y),f=fa[t.arrowTypeStart],d=fa[t.arrowTypeEnd],p=1;if(s0&&l0&&h=0?1:-1)}else if(r===n.length-1&&Object.hasOwn(fa,t.arrowTypeEnd)){let{angle:m,deltaY:g}=uw(n[n.length-1],n[n.length-2]);i=fa[t.arrowTypeEnd]*Math.abs(Math.sin(m))*(g>=0?1:-1)}let s=Math.abs(Xn(e).y-Xn(n[n.length-1]).y),l=Math.abs(Xn(e).x-Xn(n[n.length-1]).x),u=Math.abs(Xn(e).y-Xn(n[0]).y),h=Math.abs(Xn(e).x-Xn(n[0]).x),f=fa[t.arrowTypeStart],d=fa[t.arrowTypeEnd],p=1;if(s0&&l0&&h{"use strict";pt();Vte=o((t,e,r,n,i,a)=>{e.arrowTypeStart&&Gte(t,"start",e.arrowTypeStart,r,n,i,a),e.arrowTypeEnd&&Gte(t,"end",e.arrowTypeEnd,r,n,i,a)},"addEdgeMarkers"),MRe={arrow_cross:{type:"cross",fill:!1},arrow_point:{type:"point",fill:!0},arrow_barb:{type:"barb",fill:!0},arrow_circle:{type:"circle",fill:!1},aggregation:{type:"aggregation",fill:!1},extension:{type:"extension",fill:!1},composition:{type:"composition",fill:!0},dependency:{type:"dependency",fill:!0},lollipop:{type:"lollipop",fill:!1},only_one:{type:"onlyOne",fill:!1},zero_or_one:{type:"zeroOrOne",fill:!1},one_or_more:{type:"oneOrMore",fill:!1},zero_or_more:{type:"zeroOrMore",fill:!1},requirement_arrow:{type:"requirement_arrow",fill:!1},requirement_contains:{type:"requirement_contains",fill:!1}},Gte=o((t,e,r,n,i,a,s)=>{let l=MRe[r];if(!l){X.warn(`Unknown arrow type: ${r}`);return}let u=l.type,f=`${i}_${a}-${u}${e==="start"?"Start":"End"}`;if(s&&s.trim()!==""){let d=s.replace(/[^\dA-Za-z]/g,"_"),p=`${f}_${d}`;if(!document.getElementById(p)){let m=document.getElementById(f);if(m){let g=m.cloneNode(!0);g.id=p,g.querySelectorAll("path, circle, line").forEach(v=>{v.setAttribute("stroke",s),l.fill&&v.setAttribute("fill",s)}),m.parentNode?.appendChild(g)}}t.attr(`marker-${e}`,`url(${n}#${p})`)}else t.attr(`marker-${e}`,`url(${n}#${f})`)},"addEdgeMarker")});function dw(t,e){ge().flowchart.htmlLabels&&t&&(t.style.width=e.length*9+"px",t.style.height="12px")}function PRe(t){let e=[],r=[];for(let n=1;n5&&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}}function $Re(t,e){if(t.length<2)return"";let r="",n=t.length,i=1e-5;for(let a=0;a({...i}));if(t.length>=2&&fa[e.arrowTypeStart]){let i=fa[e.arrowTypeStart],a=t[0],s=t[1],{angle:l}=Wte(a,s),u=i*Math.cos(l),h=i*Math.sin(l);r[0].x=a.x+u,r[0].y=a.y+h}let n=t.length;if(n>=2&&fa[e.arrowTypeEnd]){let i=fa[e.arrowTypeEnd],a=t[n-1],s=t[n-2],{angle:l}=Wte(s,a),u=i*Math.cos(l),h=i*Math.sin(l);r[n-1].x=a.x-u,r[n-1].y=a.y-h}return r}var pw,da,Yte,fw,mw,gw,IRe,ORe,Hte,qte,BRe,FRe,yw,j9=N(()=>{"use strict";Xt();gr();pt();zo();tr();X9();O2();yr();Ht();aw();Ute();$t();pw=new Map,da=new Map,Yte=o(()=>{pw.clear(),da.clear()},"clear"),fw=o(t=>t?t.reduce((r,n)=>r+";"+n,""):"","getLabelStyles"),mw=o(async(t,e)=>{let r=vr(ge().flowchart.htmlLabels),{labelStyles:n}=je(e);e.labelStyle=n;let i=await di(t,e.label,{style:e.labelStyle,useHtmlLabels:r,addSvgBackground:!0,isNode:!1});X.info("abc82",e,e.labelType);let a=t.insert("g").attr("class","edgeLabel"),s=a.insert("g").attr("class","label").attr("data-id",e.id);s.node().appendChild(i);let l=i.getBBox();if(r){let h=i.children[0],f=qe(i);l=h.getBoundingClientRect(),f.attr("width",l.width),f.attr("height",l.height)}s.attr("transform","translate("+-l.width/2+", "+-l.height/2+")"),pw.set(e.id,a),e.width=l.width,e.height=l.height;let u;if(e.startLabelLeft){let h=await kc(e.startLabelLeft,fw(e.labelStyle)),f=t.insert("g").attr("class","edgeTerminals"),d=f.insert("g").attr("class","inner");u=d.node().appendChild(h);let p=h.getBBox();d.attr("transform","translate("+-p.width/2+", "+-p.height/2+")"),da.get(e.id)||da.set(e.id,{}),da.get(e.id).startLeft=f,dw(u,e.startLabelLeft)}if(e.startLabelRight){let h=await kc(e.startLabelRight,fw(e.labelStyle)),f=t.insert("g").attr("class","edgeTerminals"),d=f.insert("g").attr("class","inner");u=f.node().appendChild(h),d.node().appendChild(h);let p=h.getBBox();d.attr("transform","translate("+-p.width/2+", "+-p.height/2+")"),da.get(e.id)||da.set(e.id,{}),da.get(e.id).startRight=f,dw(u,e.startLabelRight)}if(e.endLabelLeft){let h=await kc(e.endLabelLeft,fw(e.labelStyle)),f=t.insert("g").attr("class","edgeTerminals"),d=f.insert("g").attr("class","inner");u=d.node().appendChild(h);let p=h.getBBox();d.attr("transform","translate("+-p.width/2+", "+-p.height/2+")"),f.node().appendChild(h),da.get(e.id)||da.set(e.id,{}),da.get(e.id).endLeft=f,dw(u,e.endLabelLeft)}if(e.endLabelRight){let h=await kc(e.endLabelRight,fw(e.labelStyle)),f=t.insert("g").attr("class","edgeTerminals"),d=f.insert("g").attr("class","inner");u=d.node().appendChild(h);let p=h.getBBox();d.attr("transform","translate("+-p.width/2+", "+-p.height/2+")"),f.node().appendChild(h),da.get(e.id)||da.set(e.id,{}),da.get(e.id).endRight=f,dw(u,e.endLabelRight)}return i},"insertEdgeLabel");o(dw,"setTerminalWidth");gw=o((t,e)=>{X.debug("Moving label abc88 ",t.id,t.label,pw.get(t.id),e);let r=e.updatedPath?e.updatedPath:e.originalPath,n=ge(),{subGraphTitleTotalMargin:i}=Pu(n);if(t.label){let a=pw.get(t.id),s=t.x,l=t.y;if(r){let u=qt.calcLabelPosition(r);X.debug("Moving label "+t.label+" from (",s,",",l,") to (",u.x,",",u.y,") abc88"),e.updatedPath&&(s=u.x,l=u.y)}a.attr("transform",`translate(${s}, ${l+i/2})`)}if(t.startLabelLeft){let a=da.get(t.id).startLeft,s=t.x,l=t.y;if(r){let u=qt.calcTerminalLabelPosition(t.arrowTypeStart?10:0,"start_left",r);s=u.x,l=u.y}a.attr("transform",`translate(${s}, ${l})`)}if(t.startLabelRight){let a=da.get(t.id).startRight,s=t.x,l=t.y;if(r){let u=qt.calcTerminalLabelPosition(t.arrowTypeStart?10:0,"start_right",r);s=u.x,l=u.y}a.attr("transform",`translate(${s}, ${l})`)}if(t.endLabelLeft){let a=da.get(t.id).endLeft,s=t.x,l=t.y;if(r){let u=qt.calcTerminalLabelPosition(t.arrowTypeEnd?10:0,"end_left",r);s=u.x,l=u.y}a.attr("transform",`translate(${s}, ${l})`)}if(t.endLabelRight){let a=da.get(t.id).endRight,s=t.x,l=t.y;if(r){let u=qt.calcTerminalLabelPosition(t.arrowTypeEnd?10:0,"end_right",r);s=u.x,l=u.y}a.attr("transform",`translate(${s}, ${l})`)}},"positionEdgeLabel"),IRe=o((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,l=t.height/2;return i>=s||a>=l},"outsideNode"),ORe=o((t,e,r)=>{X.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,l=r.xMath.abs(n-e.x)*u){let d=r.y{X.warn("abc88 cutPathAtIntersect",t,e);let r=[],n=t[0],i=!1;return t.forEach(a=>{if(X.info("abc88 checking point",a,e),!IRe(e,a)&&!i){let s=ORe(e,n,a);X.debug("abc88 inside",a,n,s),X.debug("abc88 intersection",s,e);let l=!1;r.forEach(u=>{l=l||u.x===s.x&&u.y===s.y}),r.some(u=>u.x===s.x&&u.y===s.y)?X.warn("abc88 no intersect",s,r):r.push(s),i=!0}else X.warn("abc88 outside",a,n),n=a,i||r.push(a)}),X.debug("returning points",r),r},"cutPathAtIntersect");o(PRe,"extractCornerPoints");qte=o(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"),BRe=o(function(t){let{cornerPointPositions:e}=PRe(t),r=[];for(let n=0;n10&&Math.abs(a.y-i.y)>=10){X.debug("Corner point fixing",Math.abs(a.x-i.x),Math.abs(a.y-i.y));let m=5;s.x===l.x?p={x:h<0?l.x-m+d:l.x+m-d,y:f<0?l.y-d:l.y+d}:p={x:h<0?l.x-d:l.x+d,y:f<0?l.y-m+d:l.y+m-d}}else X.debug("Corner point skipping fixing",Math.abs(a.x-i.x),Math.abs(a.y-i.y));r.push(p,u)}else r.push(t[n]);return r},"fixCorners"),FRe=o((t,e,r)=>{let n=t-e-r,i=2,a=2,s=i+a,l=Math.floor(n/s),u=Array(l).fill(`${i} ${a}`).join(" ");return`0 ${e} ${u} ${r}`},"generateDashArray"),yw=o(function(t,e,r,n,i,a,s,l=!1){let{handDrawnSeed:u}=ge(),h=e.points,f=!1,d=i;var p=a;let m=[];for(let _ in e.cssCompiledStyles)_2(_)||m.push(e.cssCompiledStyles[_]);X.debug("UIO intersect check",e.points,p.x,d.x),p.intersect&&d.intersect&&!l&&(h=h.slice(1,e.points.length-1),h.unshift(d.intersect(h[0])),X.debug("Last point UIO",e.start,"-->",e.end,h[h.length-1],p,p.intersect(h[h.length-1])),h.push(p.intersect(h[h.length-1])));let g=btoa(JSON.stringify(h));e.toCluster&&(X.info("to cluster abc88",r.get(e.toCluster)),h=Hte(e.points,r.get(e.toCluster).node),f=!0),e.fromCluster&&(X.debug("from cluster abc88",r.get(e.fromCluster),JSON.stringify(h,null,2)),h=Hte(h.reverse(),r.get(e.fromCluster).node).reverse(),f=!0);let y=h.filter(_=>!Number.isNaN(_.y));y=BRe(y);let v=No;switch(v=Cu,e.curve){case"linear":v=Cu;break;case"basis":v=No;break;case"cardinal":v=Yv;break;case"bumpX":v=Vv;break;case"bumpY":v=Uv;break;case"catmullRom":v=Kv;break;case"monotoneX":v=Qv;break;case"monotoneY":v=Zv;break;case"natural":v=J0;break;case"step":v=em;break;case"stepAfter":v=e2;break;case"stepBefore":v=Jv;break;default:v=No}let{x,y:b}=hw(e),T=Cl().x(x).y(b).curve(v),S;switch(e.thickness){case"normal":S="edge-thickness-normal";break;case"thick":S="edge-thickness-thick";break;case"invisible":S="edge-thickness-invisible";break;default:S="edge-thickness-normal"}switch(e.pattern){case"solid":S+=" edge-pattern-solid";break;case"dotted":S+=" edge-pattern-dotted";break;case"dashed":S+=" edge-pattern-dashed";break;default:S+=" edge-pattern-solid"}let w,k=e.curve==="rounded"?$Re(zRe(y,e),5):T(y),A=Array.isArray(e.style)?e.style:[e.style],C=A.find(_=>_?.startsWith("stroke:")),R=!1;if(e.look==="handDrawn"){let _=Ze.svg(t);Object.assign([],y);let O=_.path(k,{roughness:.3,seed:u});S+=" transition",w=qe(O).select("path").attr("id",e.id).attr("class"," "+S+(e.classes?" "+e.classes:"")).attr("style",A?A.reduce((P,B)=>P+";"+B,""):"");let M=w.attr("d");w.attr("d",M),t.node().appendChild(w.node())}else{let _=m.join(";"),O=A?A.reduce((U,j)=>U+j+";",""):"",M="";e.animate&&(M=" edge-animation-fast"),e.animation&&(M=" edge-animation-"+e.animation);let P=(_?_+";"+O+";":O)+";"+(A?A.reduce((U,j)=>U+";"+j,""):"");w=t.append("path").attr("d",k).attr("id",e.id).attr("class"," "+S+(e.classes?" "+e.classes:"")+(M??"")).attr("style",P),C=P.match(/stroke:([^;]+)/)?.[1],R=e.animate===!0||!!e.animation||_.includes("animation");let B=w.node(),F=typeof B.getTotalLength=="function"?B.getTotalLength():0,G=Y9[e.arrowTypeStart]||0,$=Y9[e.arrowTypeEnd]||0;if(e.look==="neo"&&!R){let j=`stroke-dasharray: ${e.pattern==="dotted"||e.pattern==="dashed"?FRe(F,G,$):`0 ${G} ${F-G-$} ${$}`}; stroke-dashoffset: 0;`;w.attr("style",j+w.attr("style"))}}w.attr("data-edge",!0),w.attr("data-et","edge"),w.attr("data-id",e.id),w.attr("data-points",g),e.showPoints&&y.forEach(_=>{t.append("circle").style("stroke","red").style("fill","red").attr("r",1).attr("cx",_.x).attr("cy",_.y)});let I="";(ge().flowchart.arrowMarkerAbsolute||ge().state.arrowMarkerAbsolute)&&(I=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search,I=I.replace(/\(/g,"\\(").replace(/\)/g,"\\)")),X.info("arrowTypeStart",e.arrowTypeStart),X.info("arrowTypeEnd",e.arrowTypeEnd),Vte(w,e,I,s,n,C);let L=Math.floor(h.length/2),E=h[L];qt.isLabelCoordinateInPath(E,w.attr("d"))||(f=!0);let D={};return f&&(D.updatedPath=h),D.originalPath=e.points,D},"insertEdge");o($Re,"generateRoundedPath");o(Wte,"calculateDeltaAndAngle");o(zRe,"applyMarkerOffsetsToPoints")});var GRe,VRe,URe,HRe,qRe,WRe,YRe,XRe,jRe,KRe,QRe,ZRe,JRe,eNe,tNe,rNe,nNe,vw,K9=N(()=>{"use strict";pt();GRe=o((t,e,r,n)=>{e.forEach(i=>{nNe[i](t,r,n)})},"insertMarkers"),VRe=o((t,e,r)=>{X.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"),URe=o((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"),HRe=o((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"),qRe=o((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"),WRe=o((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"),YRe=o((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"),XRe=o((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"),jRe=o((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"),KRe=o((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"),QRe=o((t,e,r)=>{t.append("defs").append("marker").attr("id",r+"_"+e+"-onlyOneStart").attr("class","marker onlyOne "+e).attr("refX",0).attr("refY",9).attr("markerWidth",18).attr("markerHeight",18).attr("orient","auto").append("path").attr("d","M9,0 L9,18 M15,0 L15,18"),t.append("defs").append("marker").attr("id",r+"_"+e+"-onlyOneEnd").attr("class","marker onlyOne "+e).attr("refX",18).attr("refY",9).attr("markerWidth",18).attr("markerHeight",18).attr("orient","auto").append("path").attr("d","M3,0 L3,18 M9,0 L9,18")},"only_one"),ZRe=o((t,e,r)=>{let n=t.append("defs").append("marker").attr("id",r+"_"+e+"-zeroOrOneStart").attr("class","marker zeroOrOne "+e).attr("refX",0).attr("refY",9).attr("markerWidth",30).attr("markerHeight",18).attr("orient","auto");n.append("circle").attr("fill","white").attr("cx",21).attr("cy",9).attr("r",6),n.append("path").attr("d","M9,0 L9,18");let i=t.append("defs").append("marker").attr("id",r+"_"+e+"-zeroOrOneEnd").attr("class","marker zeroOrOne "+e).attr("refX",30).attr("refY",9).attr("markerWidth",30).attr("markerHeight",18).attr("orient","auto");i.append("circle").attr("fill","white").attr("cx",9).attr("cy",9).attr("r",6),i.append("path").attr("d","M21,0 L21,18")},"zero_or_one"),JRe=o((t,e,r)=>{t.append("defs").append("marker").attr("id",r+"_"+e+"-oneOrMoreStart").attr("class","marker oneOrMore "+e).attr("refX",18).attr("refY",18).attr("markerWidth",45).attr("markerHeight",36).attr("orient","auto").append("path").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",r+"_"+e+"-oneOrMoreEnd").attr("class","marker oneOrMore "+e).attr("refX",27).attr("refY",18).attr("markerWidth",45).attr("markerHeight",36).attr("orient","auto").append("path").attr("d","M3,9 L3,27 M9,18 Q27,0 45,18 Q27,36 9,18")},"one_or_more"),eNe=o((t,e,r)=>{let n=t.append("defs").append("marker").attr("id",r+"_"+e+"-zeroOrMoreStart").attr("class","marker zeroOrMore "+e).attr("refX",18).attr("refY",18).attr("markerWidth",57).attr("markerHeight",36).attr("orient","auto");n.append("circle").attr("fill","white").attr("cx",48).attr("cy",18).attr("r",6),n.append("path").attr("d","M0,18 Q18,0 36,18 Q18,36 0,18");let i=t.append("defs").append("marker").attr("id",r+"_"+e+"-zeroOrMoreEnd").attr("class","marker zeroOrMore "+e).attr("refX",39).attr("refY",18).attr("markerWidth",57).attr("markerHeight",36).attr("orient","auto");i.append("circle").attr("fill","white").attr("cx",9).attr("cy",18).attr("r",6),i.append("path").attr("d","M21,18 Q39,0 57,18 Q39,36 21,18")},"zero_or_more"),tNe=o((t,e,r)=>{t.append("defs").append("marker").attr("id",r+"_"+e+"-requirement_arrowEnd").attr("refX",20).attr("refY",10).attr("markerWidth",20).attr("markerHeight",20).attr("orient","auto").append("path").attr("d",`M0,0 - L20,10 - M20,10 - L0,20`)},"requirement_arrow"),rNe=o((t,e,r)=>{let n=t.append("defs").append("marker").attr("id",r+"_"+e+"-requirement_containsStart").attr("refX",0).attr("refY",10).attr("markerWidth",20).attr("markerHeight",20).attr("orient","auto").append("g");n.append("circle").attr("cx",10).attr("cy",10).attr("r",9).attr("fill","none"),n.append("line").attr("x1",1).attr("x2",19).attr("y1",10).attr("y2",10),n.append("line").attr("y1",1).attr("y2",19).attr("x1",10).attr("x2",10)},"requirement_contains"),nNe={extension:VRe,composition:URe,aggregation:HRe,dependency:qRe,lollipop:WRe,point:YRe,circle:XRe,cross:jRe,barb:KRe,only_one:QRe,zero_or_one:ZRe,one_or_more:JRe,zero_or_more:eNe,requirement_arrow:tNe,requirement_contains:rNe},vw=GRe});async function Cm(t,e,r){let n,i;e.shape==="rect"&&(e.rx&&e.ry?e.shape="roundedRect":e.shape="squareRect");let a=e.shape?q9[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),xw.set(e.id,n),e.haveCallback&&n.attr("class",n.attr("class")+" clickable"),n}var xw,Xte,jte,P2,bw=N(()=>{"use strict";pt();W9();xw=new Map;o(Cm,"insertNode");Xte=o((t,e)=>{xw.set(e.id,t)},"setNodeElem"),jte=o(()=>{xw.clear()},"clear"),P2=o(t=>{let e=xw.get(t.id);X.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")});var Kte,Qte=N(()=>{"use strict";qn();gr();pt();cw();j9();K9();bw();It();tr();Kte={common:tt,getConfig:Qt,insertCluster:Sm,insertEdge:yw,insertEdgeLabel:mw,insertMarkers:vw,insertNode:Cm,interpolateToCurve:FL,labelHelper:ut,log:X,positionEdgeLabel:gw}});function aNe(t){return typeof t=="symbol"||ai(t)&&ha(t)==iNe}var iNe,uo,tp=N(()=>{"use strict";_u();Oo();iNe="[object Symbol]";o(aNe,"isSymbol");uo=aNe});function sNe(t,e){for(var r=-1,n=t==null?0:t.length,i=Array(n);++r{"use strict";o(sNe,"arrayMap");$s=sNe});function ere(t){if(typeof t=="string")return t;if(Bt(t))return $s(t,ere)+"";if(uo(t))return Jte?Jte.call(t):"";var e=t+"";return e=="0"&&1/t==-oNe?"-0":e}var oNe,Zte,Jte,tre,rre=N(()=>{"use strict";$d();rp();Yn();tp();oNe=1/0,Zte=Ki?Ki.prototype:void 0,Jte=Zte?Zte.toString:void 0;o(ere,"baseToString");tre=ere});function cNe(t){for(var e=t.length;e--&&lNe.test(t.charAt(e)););return e}var lNe,nre,ire=N(()=>{"use strict";lNe=/\s/;o(cNe,"trimmedEndIndex");nre=cNe});function hNe(t){return t&&t.slice(0,nre(t)+1).replace(uNe,"")}var uNe,are,sre=N(()=>{"use strict";ire();uNe=/^\s+/;o(hNe,"baseTrim");are=hNe});function gNe(t){if(typeof t=="number")return t;if(uo(t))return ore;if(Sn(t)){var e=typeof t.valueOf=="function"?t.valueOf():t;t=Sn(e)?e+"":e}if(typeof t!="string")return t===0?t:+t;t=are(t);var r=dNe.test(t);return r||pNe.test(t)?mNe(t.slice(2),r?2:8):fNe.test(t)?ore:+t}var ore,fNe,dNe,pNe,mNe,lre,cre=N(()=>{"use strict";sre();oo();tp();ore=NaN,fNe=/^[-+]0x[0-9a-f]+$/i,dNe=/^0b[01]+$/i,pNe=/^0o[0-7]+$/i,mNe=parseInt;o(gNe,"toNumber");lre=gNe});function vNe(t){if(!t)return t===0?t:0;if(t=lre(t),t===ure||t===-ure){var e=t<0?-1:1;return e*yNe}return t===t?t:0}var ure,yNe,Am,Q9=N(()=>{"use strict";cre();ure=1/0,yNe=17976931348623157e292;o(vNe,"toFinite");Am=vNe});function xNe(t){var e=Am(t),r=e%1;return e===e?r?e-r:e:0}var Ec,_m=N(()=>{"use strict";Q9();o(xNe,"toInteger");Ec=xNe});var bNe,Tw,hre=N(()=>{"use strict";Fh();Mo();bNe=Ls(hi,"WeakMap"),Tw=bNe});function TNe(){}var si,Z9=N(()=>{"use strict";o(TNe,"noop");si=TNe});function wNe(t,e){for(var r=-1,n=t==null?0:t.length;++r{"use strict";o(wNe,"arrayEach");ww=wNe});function kNe(t,e,r,n){for(var i=t.length,a=r+(n?1:-1);n?a--:++a{"use strict";o(kNe,"baseFindIndex");kw=kNe});function ENe(t){return t!==t}var fre,dre=N(()=>{"use strict";o(ENe,"baseIsNaN");fre=ENe});function SNe(t,e,r){for(var n=r-1,i=t.length;++n{"use strict";o(SNe,"strictIndexOf");pre=SNe});function CNe(t,e,r){return e===e?pre(t,e,r):kw(t,fre,r)}var Dm,Ew=N(()=>{"use strict";eR();dre();mre();o(CNe,"baseIndexOf");Dm=CNe});function ANe(t,e){var r=t==null?0:t.length;return!!r&&Dm(t,e,0)>-1}var Sw,tR=N(()=>{"use strict";Ew();o(ANe,"arrayIncludes");Sw=ANe});var _Ne,gre,yre=N(()=>{"use strict";SL();_Ne=xT(Object.keys,Object),gre=_Ne});function RNe(t){if(!mc(t))return gre(t);var e=[];for(var r in Object(t))LNe.call(t,r)&&r!="constructor"&&e.push(r);return e}var DNe,LNe,Lm,Cw=N(()=>{"use strict";dm();yre();DNe=Object.prototype,LNe=DNe.hasOwnProperty;o(RNe,"baseKeys");Lm=RNe});function NNe(t){return fi(t)?ET(t):Lm(t)}var qr,Sc=N(()=>{"use strict";LL();Cw();Po();o(NNe,"keys");qr=NNe});var MNe,INe,ONe,pa,vre=N(()=>{"use strict";ym();Hd();IL();Po();dm();Sc();MNe=Object.prototype,INe=MNe.hasOwnProperty,ONe=AT(function(t,e){if(mc(e)||fi(e)){$o(e,qr(e),t);return}for(var r in e)INe.call(e,r)&&gc(t,r,e[r])}),pa=ONe});function FNe(t,e){if(Bt(t))return!1;var r=typeof t;return r=="number"||r=="symbol"||r=="boolean"||t==null||uo(t)?!0:BNe.test(t)||!PNe.test(t)||e!=null&&t in Object(e)}var PNe,BNe,Rm,Aw=N(()=>{"use strict";Yn();tp();PNe=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,BNe=/^\w*$/;o(FNe,"isKey");Rm=FNe});function zNe(t){var e=am(t,function(n){return r.size===$Ne&&r.clear(),n}),r=e.cache;return e}var $Ne,xre,bre=N(()=>{"use strict";vL();$Ne=500;o(zNe,"memoizeCapped");xre=zNe});var GNe,VNe,UNe,Tre,wre=N(()=>{"use strict";bre();GNe=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,VNe=/\\(\\)?/g,UNe=xre(function(t){var e=[];return t.charCodeAt(0)===46&&e.push(""),t.replace(GNe,function(r,n,i,a){e.push(i?a.replace(VNe,"$1"):n||r)}),e}),Tre=UNe});function HNe(t){return t==null?"":tre(t)}var _w,rR=N(()=>{"use strict";rre();o(HNe,"toString");_w=HNe});function qNe(t,e){return Bt(t)?t:Rm(t,e)?[t]:Tre(_w(t))}var rf,B2=N(()=>{"use strict";Yn();Aw();wre();rR();o(qNe,"castPath");rf=qNe});function YNe(t){if(typeof t=="string"||uo(t))return t;var e=t+"";return e=="0"&&1/t==-WNe?"-0":e}var WNe,Cc,Nm=N(()=>{"use strict";tp();WNe=1/0;o(YNe,"toKey");Cc=YNe});function XNe(t,e){e=rf(e,t);for(var r=0,n=e.length;t!=null&&r{"use strict";B2();Nm();o(XNe,"baseGet");nf=XNe});function jNe(t,e,r){var n=t==null?void 0:nf(t,e);return n===void 0?r:n}var kre,Ere=N(()=>{"use strict";F2();o(jNe,"get");kre=jNe});function KNe(t,e){for(var r=-1,n=e.length,i=t.length;++r{"use strict";o(KNe,"arrayPush");Mm=KNe});function QNe(t){return Bt(t)||_l(t)||!!(Sre&&t&&t[Sre])}var Sre,Cre,Are=N(()=>{"use strict";$d();pm();Yn();Sre=Ki?Ki.isConcatSpreadable:void 0;o(QNe,"isFlattenable");Cre=QNe});function _re(t,e,r,n,i){var a=-1,s=t.length;for(r||(r=Cre),i||(i=[]);++a0&&r(l)?e>1?_re(l,e-1,r,n,i):Mm(i,l):n||(i[i.length]=l)}return i}var Ac,Im=N(()=>{"use strict";Dw();Are();o(_re,"baseFlatten");Ac=_re});function ZNe(t){var e=t==null?0:t.length;return e?Ac(t,1):[]}var Qr,Lw=N(()=>{"use strict";Im();o(ZNe,"flatten");Qr=ZNe});function JNe(t){return CT(ST(t,void 0,Qr),t+"")}var Dre,Lre=N(()=>{"use strict";Lw();RL();ML();o(JNe,"flatRest");Dre=JNe});function eMe(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{"use strict";o(eMe,"baseSlice");Rw=eMe});function cMe(t){return lMe.test(t)}var tMe,rMe,nMe,iMe,aMe,sMe,oMe,lMe,Rre,Nre=N(()=>{"use strict";tMe="\\ud800-\\udfff",rMe="\\u0300-\\u036f",nMe="\\ufe20-\\ufe2f",iMe="\\u20d0-\\u20ff",aMe=rMe+nMe+iMe,sMe="\\ufe0e\\ufe0f",oMe="\\u200d",lMe=RegExp("["+oMe+tMe+aMe+sMe+"]");o(cMe,"hasUnicode");Rre=cMe});function uMe(t,e,r,n){var i=-1,a=t==null?0:t.length;for(n&&a&&(r=t[++i]);++i{"use strict";o(uMe,"arrayReduce");Mre=uMe});function hMe(t,e){return t&&$o(e,qr(e),t)}var Ore,Pre=N(()=>{"use strict";Hd();Sc();o(hMe,"baseAssign");Ore=hMe});function fMe(t,e){return t&&$o(e,Rs(e),t)}var Bre,Fre=N(()=>{"use strict";Hd();qh();o(fMe,"baseAssignIn");Bre=fMe});function dMe(t,e){for(var r=-1,n=t==null?0:t.length,i=0,a=[];++r{"use strict";o(dMe,"arrayFilter");Om=dMe});function pMe(){return[]}var Mw,iR=N(()=>{"use strict";o(pMe,"stubArray");Mw=pMe});var mMe,gMe,$re,yMe,Pm,Iw=N(()=>{"use strict";Nw();iR();mMe=Object.prototype,gMe=mMe.propertyIsEnumerable,$re=Object.getOwnPropertySymbols,yMe=$re?function(t){return t==null?[]:(t=Object(t),Om($re(t),function(e){return gMe.call(t,e)}))}:Mw,Pm=yMe});function vMe(t,e){return $o(t,Pm(t),e)}var zre,Gre=N(()=>{"use strict";Hd();Iw();o(vMe,"copySymbols");zre=vMe});var xMe,bMe,Ow,aR=N(()=>{"use strict";Dw();bT();Iw();iR();xMe=Object.getOwnPropertySymbols,bMe=xMe?function(t){for(var e=[];t;)Mm(e,Pm(t)),t=fm(t);return e}:Mw,Ow=bMe});function TMe(t,e){return $o(t,Ow(t),e)}var Vre,Ure=N(()=>{"use strict";Hd();aR();o(TMe,"copySymbolsIn");Vre=TMe});function wMe(t,e,r){var n=e(t);return Bt(t)?n:Mm(n,r(t))}var Pw,sR=N(()=>{"use strict";Dw();Yn();o(wMe,"baseGetAllKeys");Pw=wMe});function kMe(t){return Pw(t,qr,Pm)}var $2,oR=N(()=>{"use strict";sR();Iw();Sc();o(kMe,"getAllKeys");$2=kMe});function EMe(t){return Pw(t,Rs,Ow)}var Bw,lR=N(()=>{"use strict";sR();aR();qh();o(EMe,"getAllKeysIn");Bw=EMe});var SMe,Fw,Hre=N(()=>{"use strict";Fh();Mo();SMe=Ls(hi,"DataView"),Fw=SMe});var CMe,$w,qre=N(()=>{"use strict";Fh();Mo();CMe=Ls(hi,"Promise"),$w=CMe});var AMe,af,cR=N(()=>{"use strict";Fh();Mo();AMe=Ls(hi,"Set"),af=AMe});var Wre,_Me,Yre,Xre,jre,Kre,DMe,LMe,RMe,NMe,MMe,np,ho,ip=N(()=>{"use strict";Hre();fT();qre();cR();hre();_u();mL();Wre="[object Map]",_Me="[object Object]",Yre="[object Promise]",Xre="[object Set]",jre="[object WeakMap]",Kre="[object DataView]",DMe=Du(Fw),LMe=Du(Gh),RMe=Du($w),NMe=Du(af),MMe=Du(Tw),np=ha;(Fw&&np(new Fw(new ArrayBuffer(1)))!=Kre||Gh&&np(new Gh)!=Wre||$w&&np($w.resolve())!=Yre||af&&np(new af)!=Xre||Tw&&np(new Tw)!=jre)&&(np=o(function(t){var e=ha(t),r=e==_Me?t.constructor:void 0,n=r?Du(r):"";if(n)switch(n){case DMe:return Kre;case LMe:return Wre;case RMe:return Yre;case NMe:return Xre;case MMe:return jre}return e},"getTag"));ho=np});function PMe(t){var e=t.length,r=new t.constructor(e);return e&&typeof t[0]=="string"&&OMe.call(t,"index")&&(r.index=t.index,r.input=t.input),r}var IMe,OMe,Qre,Zre=N(()=>{"use strict";IMe=Object.prototype,OMe=IMe.hasOwnProperty;o(PMe,"initCloneArray");Qre=PMe});function BMe(t,e){var r=e?hm(t.buffer):t.buffer;return new t.constructor(r,t.byteOffset,t.byteLength)}var Jre,ene=N(()=>{"use strict";gT();o(BMe,"cloneDataView");Jre=BMe});function $Me(t){var e=new t.constructor(t.source,FMe.exec(t));return e.lastIndex=t.lastIndex,e}var FMe,tne,rne=N(()=>{"use strict";FMe=/\w*$/;o($Me,"cloneRegExp");tne=$Me});function zMe(t){return ine?Object(ine.call(t)):{}}var nne,ine,ane,sne=N(()=>{"use strict";$d();nne=Ki?Ki.prototype:void 0,ine=nne?nne.valueOf:void 0;o(zMe,"cloneSymbol");ane=zMe});function sIe(t,e,r){var n=t.constructor;switch(e){case jMe:return hm(t);case GMe:case VMe:return new n(+t);case KMe:return Jre(t,r);case QMe:case ZMe:case JMe:case eIe:case tIe:case rIe:case nIe:case iIe:case aIe:return yT(t,r);case UMe:return new n;case HMe:case YMe:return new n(t);case qMe:return tne(t);case WMe:return new n;case XMe:return ane(t)}}var GMe,VMe,UMe,HMe,qMe,WMe,YMe,XMe,jMe,KMe,QMe,ZMe,JMe,eIe,tIe,rIe,nIe,iIe,aIe,one,lne=N(()=>{"use strict";gT();ene();rne();sne();kL();GMe="[object Boolean]",VMe="[object Date]",UMe="[object Map]",HMe="[object Number]",qMe="[object RegExp]",WMe="[object Set]",YMe="[object String]",XMe="[object Symbol]",jMe="[object ArrayBuffer]",KMe="[object DataView]",QMe="[object Float32Array]",ZMe="[object Float64Array]",JMe="[object Int8Array]",eIe="[object Int16Array]",tIe="[object Int32Array]",rIe="[object Uint8Array]",nIe="[object Uint8ClampedArray]",iIe="[object Uint16Array]",aIe="[object Uint32Array]";o(sIe,"initCloneByTag");one=sIe});function lIe(t){return ai(t)&&ho(t)==oIe}var oIe,cne,une=N(()=>{"use strict";ip();Oo();oIe="[object Map]";o(lIe,"baseIsMap");cne=lIe});var hne,cIe,fne,dne=N(()=>{"use strict";une();Ud();f2();hne=Fo&&Fo.isMap,cIe=hne?Bo(hne):cne,fne=cIe});function hIe(t){return ai(t)&&ho(t)==uIe}var uIe,pne,mne=N(()=>{"use strict";ip();Oo();uIe="[object Set]";o(hIe,"baseIsSet");pne=hIe});var gne,fIe,yne,vne=N(()=>{"use strict";mne();Ud();f2();gne=Fo&&Fo.isSet,fIe=gne?Bo(gne):pne,yne=fIe});function zw(t,e,r,n,i,a){var s,l=e&dIe,u=e&pIe,h=e&mIe;if(r&&(s=i?r(t,n,i,a):r(t)),s!==void 0)return s;if(!Sn(t))return t;var f=Bt(t);if(f){if(s=Qre(t),!l)return vT(t,s)}else{var d=ho(t),p=d==bne||d==bIe;if(Dl(t))return mT(t,l);if(d==Tne||d==xne||p&&!i){if(s=u||p?{}:TT(t),!l)return u?Vre(t,Bre(s,t)):zre(t,Ore(s,t))}else{if(!Mn[d])return i?t:{};s=one(t,d,l)}}a||(a=new dc);var m=a.get(t);if(m)return m;a.set(t,s),yne(t)?t.forEach(function(v){s.add(zw(v,e,r,v,t,a))}):fne(t)&&t.forEach(function(v,x){s.set(x,zw(v,e,r,x,t,a))});var g=h?u?Bw:$2:u?Rs:qr,y=f?void 0:g(t);return ww(y||t,function(v,x){y&&(x=v,v=t[x]),gc(s,x,zw(v,e,r,x,t,a))}),s}var dIe,pIe,mIe,xne,gIe,yIe,vIe,xIe,bne,bIe,TIe,wIe,Tne,kIe,EIe,SIe,CIe,AIe,_Ie,DIe,LIe,RIe,NIe,MIe,IIe,OIe,PIe,BIe,FIe,Mn,Gw,uR=N(()=>{"use strict";c2();J9();ym();Pre();Fre();TL();EL();Gre();Ure();oR();lR();ip();Zre();lne();CL();Yn();gm();dne();oo();vne();Sc();qh();dIe=1,pIe=2,mIe=4,xne="[object Arguments]",gIe="[object Array]",yIe="[object Boolean]",vIe="[object Date]",xIe="[object Error]",bne="[object Function]",bIe="[object GeneratorFunction]",TIe="[object Map]",wIe="[object Number]",Tne="[object Object]",kIe="[object RegExp]",EIe="[object Set]",SIe="[object String]",CIe="[object Symbol]",AIe="[object WeakMap]",_Ie="[object ArrayBuffer]",DIe="[object DataView]",LIe="[object Float32Array]",RIe="[object Float64Array]",NIe="[object Int8Array]",MIe="[object Int16Array]",IIe="[object Int32Array]",OIe="[object Uint8Array]",PIe="[object Uint8ClampedArray]",BIe="[object Uint16Array]",FIe="[object Uint32Array]",Mn={};Mn[xne]=Mn[gIe]=Mn[_Ie]=Mn[DIe]=Mn[yIe]=Mn[vIe]=Mn[LIe]=Mn[RIe]=Mn[NIe]=Mn[MIe]=Mn[IIe]=Mn[TIe]=Mn[wIe]=Mn[Tne]=Mn[kIe]=Mn[EIe]=Mn[SIe]=Mn[CIe]=Mn[OIe]=Mn[PIe]=Mn[BIe]=Mn[FIe]=!0;Mn[xIe]=Mn[bne]=Mn[AIe]=!1;o(zw,"baseClone");Gw=zw});function zIe(t){return Gw(t,$Ie)}var $Ie,ln,hR=N(()=>{"use strict";uR();$Ie=4;o(zIe,"clone");ln=zIe});function UIe(t){return Gw(t,GIe|VIe)}var GIe,VIe,fR,wne=N(()=>{"use strict";uR();GIe=1,VIe=4;o(UIe,"cloneDeep");fR=UIe});function HIe(t){for(var e=-1,r=t==null?0:t.length,n=0,i=[];++e{"use strict";o(HIe,"compact");_c=HIe});function WIe(t){return this.__data__.set(t,qIe),this}var qIe,Ene,Sne=N(()=>{"use strict";qIe="__lodash_hash_undefined__";o(WIe,"setCacheAdd");Ene=WIe});function YIe(t){return this.__data__.has(t)}var Cne,Ane=N(()=>{"use strict";o(YIe,"setCacheHas");Cne=YIe});function Vw(t){var e=-1,r=t==null?0:t.length;for(this.__data__=new Gd;++e{"use strict";dT();Sne();Ane();o(Vw,"SetCache");Vw.prototype.add=Vw.prototype.push=Ene;Vw.prototype.has=Cne;Bm=Vw});function XIe(t,e){for(var r=-1,n=t==null?0:t.length;++r{"use strict";o(XIe,"arraySome");Hw=XIe});function jIe(t,e){return t.has(e)}var Fm,qw=N(()=>{"use strict";o(jIe,"cacheHas");Fm=jIe});function ZIe(t,e,r,n,i,a){var s=r&KIe,l=t.length,u=e.length;if(l!=u&&!(s&&u>l))return!1;var h=a.get(t),f=a.get(e);if(h&&f)return h==e&&f==t;var d=-1,p=!0,m=r&QIe?new Bm:void 0;for(a.set(t,e),a.set(e,t);++d{"use strict";Uw();dR();qw();KIe=1,QIe=2;o(ZIe,"equalArrays");Ww=ZIe});function JIe(t){var e=-1,r=Array(t.size);return t.forEach(function(n,i){r[++e]=[i,n]}),r}var _ne,Dne=N(()=>{"use strict";o(JIe,"mapToArray");_ne=JIe});function eOe(t){var e=-1,r=Array(t.size);return t.forEach(function(n){r[++e]=n}),r}var $m,Yw=N(()=>{"use strict";o(eOe,"setToArray");$m=eOe});function pOe(t,e,r,n,i,a,s){switch(r){case dOe:if(t.byteLength!=e.byteLength||t.byteOffset!=e.byteOffset)return!1;t=t.buffer,e=e.buffer;case fOe:return!(t.byteLength!=e.byteLength||!a(new um(t),new um(e)));case nOe:case iOe:case oOe:return Io(+t,+e);case aOe:return t.name==e.name&&t.message==e.message;case lOe:case uOe:return t==e+"";case sOe:var l=_ne;case cOe:var u=n&tOe;if(l||(l=$m),t.size!=e.size&&!u)return!1;var h=s.get(t);if(h)return h==e;n|=rOe,s.set(t,e);var f=Ww(l(t),l(e),n,i,a,s);return s.delete(t),f;case hOe:if(mR)return mR.call(t)==mR.call(e)}return!1}var tOe,rOe,nOe,iOe,aOe,sOe,oOe,lOe,cOe,uOe,hOe,fOe,dOe,Lne,mR,Rne,Nne=N(()=>{"use strict";$d();wL();zd();pR();Dne();Yw();tOe=1,rOe=2,nOe="[object Boolean]",iOe="[object Date]",aOe="[object Error]",sOe="[object Map]",oOe="[object Number]",lOe="[object RegExp]",cOe="[object Set]",uOe="[object String]",hOe="[object Symbol]",fOe="[object ArrayBuffer]",dOe="[object DataView]",Lne=Ki?Ki.prototype:void 0,mR=Lne?Lne.valueOf:void 0;o(pOe,"equalByTag");Rne=pOe});function vOe(t,e,r,n,i,a){var s=r&mOe,l=$2(t),u=l.length,h=$2(e),f=h.length;if(u!=f&&!s)return!1;for(var d=u;d--;){var p=l[d];if(!(s?p in e:yOe.call(e,p)))return!1}var m=a.get(t),g=a.get(e);if(m&&g)return m==e&&g==t;var y=!0;a.set(t,e),a.set(e,t);for(var v=s;++d{"use strict";oR();mOe=1,gOe=Object.prototype,yOe=gOe.hasOwnProperty;o(vOe,"equalObjects");Mne=vOe});function TOe(t,e,r,n,i,a){var s=Bt(t),l=Bt(e),u=s?Pne:ho(t),h=l?Pne:ho(e);u=u==One?Xw:u,h=h==One?Xw:h;var f=u==Xw,d=h==Xw,p=u==h;if(p&&Dl(t)){if(!Dl(e))return!1;s=!0,f=!1}if(p&&!f)return a||(a=new dc),s||Uh(t)?Ww(t,e,r,n,i,a):Rne(t,e,u,r,n,i,a);if(!(r&xOe)){var m=f&&Bne.call(t,"__wrapped__"),g=d&&Bne.call(e,"__wrapped__");if(m||g){var y=m?t.value():t,v=g?e.value():e;return a||(a=new dc),i(y,v,r,n,a)}}return p?(a||(a=new dc),Mne(t,e,r,n,i,a)):!1}var xOe,One,Pne,Xw,bOe,Bne,Fne,$ne=N(()=>{"use strict";c2();pR();Nne();Ine();ip();Yn();gm();d2();xOe=1,One="[object Arguments]",Pne="[object Array]",Xw="[object Object]",bOe=Object.prototype,Bne=bOe.hasOwnProperty;o(TOe,"baseIsEqualDeep");Fne=TOe});function zne(t,e,r,n,i){return t===e?!0:t==null||e==null||!ai(t)&&!ai(e)?t!==t&&e!==e:Fne(t,e,r,n,zne,i)}var jw,gR=N(()=>{"use strict";$ne();Oo();o(zne,"baseIsEqual");jw=zne});function EOe(t,e,r,n){var i=r.length,a=i,s=!n;if(t==null)return!a;for(t=Object(t);i--;){var l=r[i];if(s&&l[2]?l[1]!==t[l[0]]:!(l[0]in t))return!1}for(;++i{"use strict";c2();gR();wOe=1,kOe=2;o(EOe,"baseIsMatch");Gne=EOe});function SOe(t){return t===t&&!Sn(t)}var Kw,yR=N(()=>{"use strict";oo();o(SOe,"isStrictComparable");Kw=SOe});function COe(t){for(var e=qr(t),r=e.length;r--;){var n=e[r],i=t[n];e[r]=[n,i,Kw(i)]}return e}var Une,Hne=N(()=>{"use strict";yR();Sc();o(COe,"getMatchData");Une=COe});function AOe(t,e){return function(r){return r==null?!1:r[t]===e&&(e!==void 0||t in Object(r))}}var Qw,vR=N(()=>{"use strict";o(AOe,"matchesStrictComparable");Qw=AOe});function _Oe(t){var e=Une(t);return e.length==1&&e[0][2]?Qw(e[0][0],e[0][1]):function(r){return r===t||Gne(r,t,e)}}var qne,Wne=N(()=>{"use strict";Vne();Hne();vR();o(_Oe,"baseMatches");qne=_Oe});function DOe(t,e){return t!=null&&e in Object(t)}var Yne,Xne=N(()=>{"use strict";o(DOe,"baseHasIn");Yne=DOe});function LOe(t,e,r){e=rf(e,t);for(var n=-1,i=e.length,a=!1;++n{"use strict";B2();pm();Yn();m2();wT();Nm();o(LOe,"hasPath");Zw=LOe});function ROe(t,e){return t!=null&&Zw(t,e,Yne)}var Jw,bR=N(()=>{"use strict";Xne();xR();o(ROe,"hasIn");Jw=ROe});function IOe(t,e){return Rm(t)&&Kw(e)?Qw(Cc(t),e):function(r){var n=kre(r,t);return n===void 0&&n===e?Jw(r,t):jw(e,n,NOe|MOe)}}var NOe,MOe,jne,Kne=N(()=>{"use strict";gR();Ere();bR();Aw();yR();vR();Nm();NOe=1,MOe=2;o(IOe,"baseMatchesProperty");jne=IOe});function OOe(t){return function(e){return e?.[t]}}var ek,TR=N(()=>{"use strict";o(OOe,"baseProperty");ek=OOe});function POe(t){return function(e){return nf(e,t)}}var Qne,Zne=N(()=>{"use strict";F2();o(POe,"basePropertyDeep");Qne=POe});function BOe(t){return Rm(t)?ek(Cc(t)):Qne(t)}var Jne,eie=N(()=>{"use strict";TR();Zne();Aw();Nm();o(BOe,"property");Jne=BOe});function FOe(t){return typeof t=="function"?t:t==null?Qi:typeof t=="object"?Bt(t)?jne(t[0],t[1]):qne(t):Jne(t)}var vn,ss=N(()=>{"use strict";Wne();Kne();Ru();Yn();eie();o(FOe,"baseIteratee");vn=FOe});function $Oe(t,e,r,n){for(var i=-1,a=t==null?0:t.length;++i{"use strict";o($Oe,"arrayAggregator");tie=$Oe});function zOe(t,e){return t&&cm(t,e,qr)}var zm,tk=N(()=>{"use strict";pT();Sc();o(zOe,"baseForOwn");zm=zOe});function GOe(t,e){return function(r,n){if(r==null)return r;if(!fi(r))return t(r,n);for(var i=r.length,a=e?i:-1,s=Object(r);(e?a--:++a{"use strict";Po();o(GOe,"createBaseEach");nie=GOe});var VOe,zs,sf=N(()=>{"use strict";tk();iie();VOe=nie(zm),zs=VOe});function UOe(t,e,r,n){return zs(t,function(i,a,s){e(n,i,r(i),s)}),n}var aie,sie=N(()=>{"use strict";sf();o(UOe,"baseAggregator");aie=UOe});function HOe(t,e){return function(r,n){var i=Bt(r)?tie:aie,a=e?e():{};return i(r,t,vn(n,2),a)}}var oie,lie=N(()=>{"use strict";rie();sie();ss();Yn();o(HOe,"createAggregator");oie=HOe});var qOe,rk,cie=N(()=>{"use strict";Mo();qOe=o(function(){return hi.Date.now()},"now"),rk=qOe});var uie,WOe,YOe,of,hie=N(()=>{"use strict";vm();zd();qd();qh();uie=Object.prototype,WOe=uie.hasOwnProperty,YOe=yc(function(t,e){t=Object(t);var r=-1,n=e.length,i=n>2?e[2]:void 0;for(i&&lo(e[0],e[1],i)&&(n=1);++r{"use strict";o(XOe,"arrayIncludesWith");nk=XOe});function KOe(t,e,r,n){var i=-1,a=Sw,s=!0,l=t.length,u=[],h=e.length;if(!l)return u;r&&(e=$s(e,Bo(r))),n?(a=nk,s=!1):e.length>=jOe&&(a=Fm,s=!1,e=new Bm(e));e:for(;++i{"use strict";Uw();tR();wR();rp();Ud();qw();jOe=200;o(KOe,"baseDifference");fie=KOe});var QOe,lf,pie=N(()=>{"use strict";die();Im();vm();kT();QOe=yc(function(t,e){return Vd(t)?fie(t,Ac(e,1,Vd,!0)):[]}),lf=QOe});function ZOe(t){var e=t==null?0:t.length;return e?t[e-1]:void 0}var ma,mie=N(()=>{"use strict";o(ZOe,"last");ma=ZOe});function JOe(t,e,r){var n=t==null?0:t.length;return n?(e=r||e===void 0?1:Ec(e),Rw(t,e<0?0:e,n)):[]}var yi,gie=N(()=>{"use strict";nR();_m();o(JOe,"drop");yi=JOe});function ePe(t,e,r){var n=t==null?0:t.length;return n?(e=r||e===void 0?1:Ec(e),e=n-e,Rw(t,0,e<0?0:e)):[]}var Bu,yie=N(()=>{"use strict";nR();_m();o(ePe,"dropRight");Bu=ePe});function tPe(t){return typeof t=="function"?t:Qi}var Gm,ik=N(()=>{"use strict";Ru();o(tPe,"castFunction");Gm=tPe});function rPe(t,e){var r=Bt(t)?ww:zs;return r(t,Gm(e))}var Ae,ak=N(()=>{"use strict";J9();sf();ik();Yn();o(rPe,"forEach");Ae=rPe});var vie=N(()=>{"use strict";ak()});function nPe(t,e){for(var r=-1,n=t==null?0:t.length;++r{"use strict";o(nPe,"arrayEvery");xie=nPe});function iPe(t,e){var r=!0;return zs(t,function(n,i,a){return r=!!e(n,i,a),r}),r}var Tie,wie=N(()=>{"use strict";sf();o(iPe,"baseEvery");Tie=iPe});function aPe(t,e,r){var n=Bt(t)?xie:Tie;return r&&lo(t,e,r)&&(e=void 0),n(t,vn(e,3))}var Pa,kie=N(()=>{"use strict";bie();wie();ss();Yn();qd();o(aPe,"every");Pa=aPe});function sPe(t,e){var r=[];return zs(t,function(n,i,a){e(n,i,a)&&r.push(n)}),r}var sk,kR=N(()=>{"use strict";sf();o(sPe,"baseFilter");sk=sPe});function oPe(t,e){var r=Bt(t)?Om:sk;return r(t,vn(e,3))}var Zr,ER=N(()=>{"use strict";Nw();kR();ss();Yn();o(oPe,"filter");Zr=oPe});function lPe(t){return function(e,r,n){var i=Object(e);if(!fi(e)){var a=vn(r,3);e=qr(e),r=o(function(l){return a(i[l],l,i)},"predicate")}var s=t(e,r,n);return s>-1?i[a?e[s]:s]:void 0}}var Eie,Sie=N(()=>{"use strict";ss();Po();Sc();o(lPe,"createFind");Eie=lPe});function uPe(t,e,r){var n=t==null?0:t.length;if(!n)return-1;var i=r==null?0:Ec(r);return i<0&&(i=cPe(n+i,0)),kw(t,vn(e,3),i)}var cPe,Cie,Aie=N(()=>{"use strict";eR();ss();_m();cPe=Math.max;o(uPe,"findIndex");Cie=uPe});var hPe,os,_ie=N(()=>{"use strict";Sie();Aie();hPe=Eie(Cie),os=hPe});function fPe(t){return t&&t.length?t[0]:void 0}var ea,Die=N(()=>{"use strict";o(fPe,"head");ea=fPe});var Lie=N(()=>{"use strict";Die()});function dPe(t,e){var r=-1,n=fi(t)?Array(t.length):[];return zs(t,function(i,a,s){n[++r]=e(i,a,s)}),n}var ok,SR=N(()=>{"use strict";sf();Po();o(dPe,"baseMap");ok=dPe});function pPe(t,e){var r=Bt(t)?$s:ok;return r(t,vn(e,3))}var rt,Vm=N(()=>{"use strict";rp();ss();SR();Yn();o(pPe,"map");rt=pPe});function mPe(t,e){return Ac(rt(t,e),1)}var ga,CR=N(()=>{"use strict";Im();Vm();o(mPe,"flatMap");ga=mPe});function gPe(t,e){return t==null?t:cm(t,Gm(e),Rs)}var AR,Rie=N(()=>{"use strict";pT();ik();qh();o(gPe,"forIn");AR=gPe});function yPe(t,e){return t&&zm(t,Gm(e))}var _R,Nie=N(()=>{"use strict";tk();ik();o(yPe,"forOwn");_R=yPe});var vPe,xPe,bPe,DR,Mie=N(()=>{"use strict";lm();lie();vPe=Object.prototype,xPe=vPe.hasOwnProperty,bPe=oie(function(t,e,r){xPe.call(t,r)?t[r].push(e):pc(t,r,[e])}),DR=bPe});function TPe(t,e){return t>e}var Iie,Oie=N(()=>{"use strict";o(TPe,"baseGt");Iie=TPe});function EPe(t,e){return t!=null&&kPe.call(t,e)}var wPe,kPe,Pie,Bie=N(()=>{"use strict";wPe=Object.prototype,kPe=wPe.hasOwnProperty;o(EPe,"baseHas");Pie=EPe});function SPe(t,e){return t!=null&&Zw(t,e,Pie)}var Ft,Fie=N(()=>{"use strict";Bie();xR();o(SPe,"has");Ft=SPe});function APe(t){return typeof t=="string"||!Bt(t)&&ai(t)&&ha(t)==CPe}var CPe,xi,lk=N(()=>{"use strict";_u();Yn();Oo();CPe="[object String]";o(APe,"isString");xi=APe});function _Pe(t,e){return $s(e,function(r){return t[r]})}var $ie,zie=N(()=>{"use strict";rp();o(_Pe,"baseValues");$ie=_Pe});function DPe(t){return t==null?[]:$ie(t,qr(t))}var kr,LR=N(()=>{"use strict";zie();Sc();o(DPe,"values");kr=DPe});function RPe(t,e,r,n){t=fi(t)?t:kr(t),r=r&&!n?Ec(r):0;var i=t.length;return r<0&&(r=LPe(i+r,0)),xi(t)?r<=i&&t.indexOf(e,r)>-1:!!i&&Dm(t,e,r)>-1}var LPe,jn,Gie=N(()=>{"use strict";Ew();Po();lk();_m();LR();LPe=Math.max;o(RPe,"includes");jn=RPe});function MPe(t,e,r){var n=t==null?0:t.length;if(!n)return-1;var i=r==null?0:Ec(r);return i<0&&(i=NPe(n+i,0)),Dm(t,e,i)}var NPe,ck,Vie=N(()=>{"use strict";Ew();_m();NPe=Math.max;o(MPe,"indexOf");ck=MPe});function FPe(t){if(t==null)return!0;if(fi(t)&&(Bt(t)||typeof t=="string"||typeof t.splice=="function"||Dl(t)||Uh(t)||_l(t)))return!t.length;var e=ho(t);if(e==IPe||e==OPe)return!t.size;if(mc(t))return!Lm(t).length;for(var r in t)if(BPe.call(t,r))return!1;return!0}var IPe,OPe,PPe,BPe,mr,uk=N(()=>{"use strict";Cw();ip();pm();Yn();Po();gm();dm();d2();IPe="[object Map]",OPe="[object Set]",PPe=Object.prototype,BPe=PPe.hasOwnProperty;o(FPe,"isEmpty");mr=FPe});function zPe(t){return ai(t)&&ha(t)==$Pe}var $Pe,Uie,Hie=N(()=>{"use strict";_u();Oo();$Pe="[object RegExp]";o(zPe,"baseIsRegExp");Uie=zPe});var qie,GPe,Uo,Wie=N(()=>{"use strict";Hie();Ud();f2();qie=Fo&&Fo.isRegExp,GPe=qie?Bo(qie):Uie,Uo=GPe});function VPe(t){return t===void 0}var xr,Yie=N(()=>{"use strict";o(VPe,"isUndefined");xr=VPe});function UPe(t,e){return t{"use strict";o(UPe,"baseLt");hk=UPe});function HPe(t,e){var r={};return e=vn(e,3),zm(t,function(n,i,a){pc(r,i,e(n,i,a))}),r}var ap,Xie=N(()=>{"use strict";lm();tk();ss();o(HPe,"mapValues");ap=HPe});function qPe(t,e,r){for(var n=-1,i=t.length;++n{"use strict";tp();o(qPe,"baseExtremum");Um=qPe});function WPe(t){return t&&t.length?Um(t,Qi,Iie):void 0}var Gs,jie=N(()=>{"use strict";fk();Oie();Ru();o(WPe,"max");Gs=WPe});function YPe(t){return t&&t.length?Um(t,Qi,hk):void 0}var Rl,NR=N(()=>{"use strict";fk();RR();Ru();o(YPe,"min");Rl=YPe});function XPe(t,e){return t&&t.length?Um(t,vn(e,2),hk):void 0}var sp,Kie=N(()=>{"use strict";fk();ss();RR();o(XPe,"minBy");sp=XPe});function KPe(t){if(typeof t!="function")throw new TypeError(jPe);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 jPe,Qie,Zie=N(()=>{"use strict";jPe="Expected a function";o(KPe,"negate");Qie=KPe});function QPe(t,e,r,n){if(!Sn(t))return t;e=rf(e,t);for(var i=-1,a=e.length,s=a-1,l=t;l!=null&&++i{"use strict";ym();B2();m2();oo();Nm();o(QPe,"baseSet");Jie=QPe});function ZPe(t,e,r){for(var n=-1,i=e.length,a={};++n{"use strict";F2();eae();B2();o(ZPe,"basePickBy");dk=ZPe});function JPe(t,e){if(t==null)return{};var r=$s(Bw(t),function(n){return[n]});return e=vn(e),dk(t,r,function(n,i){return e(n,i[0])})}var Vs,tae=N(()=>{"use strict";rp();ss();MR();lR();o(JPe,"pickBy");Vs=JPe});function eBe(t,e){var r=t.length;for(t.sort(e);r--;)t[r]=t[r].value;return t}var rae,nae=N(()=>{"use strict";o(eBe,"baseSortBy");rae=eBe});function tBe(t,e){if(t!==e){var r=t!==void 0,n=t===null,i=t===t,a=uo(t),s=e!==void 0,l=e===null,u=e===e,h=uo(e);if(!l&&!h&&!a&&t>e||a&&s&&u&&!l&&!h||n&&s&&u||!r&&u||!i)return 1;if(!n&&!a&&!h&&t{"use strict";tp();o(tBe,"compareAscending");iae=tBe});function rBe(t,e,r){for(var n=-1,i=t.criteria,a=e.criteria,s=i.length,l=r.length;++n=l)return u;var h=r[n];return u*(h=="desc"?-1:1)}}return t.index-e.index}var sae,oae=N(()=>{"use strict";aae();o(rBe,"compareMultiple");sae=rBe});function nBe(t,e,r){e.length?e=$s(e,function(a){return Bt(a)?function(s){return nf(s,a.length===1?a[0]:a)}:a}):e=[Qi];var n=-1;e=$s(e,Bo(vn));var i=ok(t,function(a,s,l){var u=$s(e,function(h){return h(a)});return{criteria:u,index:++n,value:a}});return rae(i,function(a,s){return sae(a,s,r)})}var lae,cae=N(()=>{"use strict";rp();F2();ss();SR();nae();Ud();oae();Ru();Yn();o(nBe,"baseOrderBy");lae=nBe});var iBe,uae,hae=N(()=>{"use strict";TR();iBe=ek("length"),uae=iBe});function gBe(t){for(var e=fae.lastIndex=0;fae.test(t);)++e;return e}var dae,aBe,sBe,oBe,lBe,cBe,uBe,IR,OR,hBe,pae,mae,gae,fBe,yae,vae,dBe,pBe,mBe,fae,xae,bae=N(()=>{"use strict";dae="\\ud800-\\udfff",aBe="\\u0300-\\u036f",sBe="\\ufe20-\\ufe2f",oBe="\\u20d0-\\u20ff",lBe=aBe+sBe+oBe,cBe="\\ufe0e\\ufe0f",uBe="["+dae+"]",IR="["+lBe+"]",OR="\\ud83c[\\udffb-\\udfff]",hBe="(?:"+IR+"|"+OR+")",pae="[^"+dae+"]",mae="(?:\\ud83c[\\udde6-\\uddff]){2}",gae="[\\ud800-\\udbff][\\udc00-\\udfff]",fBe="\\u200d",yae=hBe+"?",vae="["+cBe+"]?",dBe="(?:"+fBe+"(?:"+[pae,mae,gae].join("|")+")"+vae+yae+")*",pBe=vae+yae+dBe,mBe="(?:"+[pae+IR+"?",IR,mae,gae,uBe].join("|")+")",fae=RegExp(OR+"(?="+OR+")|"+mBe+pBe,"g");o(gBe,"unicodeSize");xae=gBe});function yBe(t){return Rre(t)?xae(t):uae(t)}var Tae,wae=N(()=>{"use strict";hae();Nre();bae();o(yBe,"stringSize");Tae=yBe});function vBe(t,e){return dk(t,e,function(r,n){return Jw(t,n)})}var kae,Eae=N(()=>{"use strict";MR();bR();o(vBe,"basePick");kae=vBe});var xBe,op,Sae=N(()=>{"use strict";Eae();Lre();xBe=Dre(function(t,e){return t==null?{}:kae(t,e)}),op=xBe});function wBe(t,e,r,n){for(var i=-1,a=TBe(bBe((e-t)/(r||1)),0),s=Array(a);a--;)s[n?a:++i]=t,t+=r;return s}var bBe,TBe,Cae,Aae=N(()=>{"use strict";bBe=Math.ceil,TBe=Math.max;o(wBe,"baseRange");Cae=wBe});function kBe(t){return function(e,r,n){return n&&typeof n!="number"&&lo(e,r,n)&&(r=n=void 0),e=Am(e),r===void 0?(r=e,e=0):r=Am(r),n=n===void 0?e{"use strict";Aae();qd();Q9();o(kBe,"createRange");_ae=kBe});var EBe,Ho,Lae=N(()=>{"use strict";Dae();EBe=_ae(),Ho=EBe});function SBe(t,e,r,n,i){return i(t,function(a,s,l){r=n?(n=!1,a):e(r,a,s,l)}),r}var Rae,Nae=N(()=>{"use strict";o(SBe,"baseReduce");Rae=SBe});function CBe(t,e,r){var n=Bt(t)?Mre:Rae,i=arguments.length<3;return n(t,vn(e,4),r,i,zs)}var Jr,PR=N(()=>{"use strict";Ire();sf();ss();Nae();Yn();o(CBe,"reduce");Jr=CBe});function ABe(t,e){var r=Bt(t)?Om:sk;return r(t,Qie(vn(e,3)))}var cf,Mae=N(()=>{"use strict";Nw();kR();ss();Yn();Zie();o(ABe,"reject");cf=ABe});function LBe(t){if(t==null)return 0;if(fi(t))return xi(t)?Tae(t):t.length;var e=ho(t);return e==_Be||e==DBe?t.size:Lm(t).length}var _Be,DBe,BR,Iae=N(()=>{"use strict";Cw();ip();Po();lk();wae();_Be="[object Map]",DBe="[object Set]";o(LBe,"size");BR=LBe});function RBe(t,e){var r;return zs(t,function(n,i,a){return r=e(n,i,a),!r}),!!r}var Oae,Pae=N(()=>{"use strict";sf();o(RBe,"baseSome");Oae=RBe});function NBe(t,e,r){var n=Bt(t)?Hw:Oae;return r&&lo(t,e,r)&&(e=void 0),n(t,vn(e,3))}var z2,Bae=N(()=>{"use strict";dR();ss();Pae();Yn();qd();o(NBe,"some");z2=NBe});var MBe,Dc,Fae=N(()=>{"use strict";Im();cae();vm();qd();MBe=yc(function(t,e){if(t==null)return[];var r=e.length;return r>1&&lo(t,e[0],e[1])?e=[]:r>2&&lo(e[0],e[1],e[2])&&(e=[e[0]]),lae(t,Ac(e,1),[])}),Dc=MBe});var IBe,OBe,$ae,zae=N(()=>{"use strict";cR();Z9();Yw();IBe=1/0,OBe=af&&1/$m(new af([,-0]))[1]==IBe?function(t){return new af(t)}:si,$ae=OBe});function BBe(t,e,r){var n=-1,i=Sw,a=t.length,s=!0,l=[],u=l;if(r)s=!1,i=nk;else if(a>=PBe){var h=e?null:$ae(t);if(h)return $m(h);s=!1,i=Fm,u=new Bm}else u=e?[]:l;e:for(;++n{"use strict";Uw();tR();wR();qw();zae();Yw();PBe=200;o(BBe,"baseUniq");Hm=BBe});var FBe,FR,Gae=N(()=>{"use strict";Im();vm();pk();kT();FBe=yc(function(t){return Hm(Ac(t,1,Vd,!0))}),FR=FBe});function $Be(t){return t&&t.length?Hm(t):[]}var qm,Vae=N(()=>{"use strict";pk();o($Be,"uniq");qm=$Be});function zBe(t,e){return t&&t.length?Hm(t,vn(e,2)):[]}var Uae,Hae=N(()=>{"use strict";ss();pk();o(zBe,"uniqBy");Uae=zBe});function VBe(t){var e=++GBe;return _w(t)+e}var GBe,lp,qae=N(()=>{"use strict";rR();GBe=0;o(VBe,"uniqueId");lp=VBe});function UBe(t,e,r){for(var n=-1,i=t.length,a=e.length,s={};++n{"use strict";o(UBe,"baseZipObject");Wae=UBe});function HBe(t,e){return Wae(t||[],e||[],gc)}var mk,Xae=N(()=>{"use strict";ym();Yae();o(HBe,"zipObject");mk=HBe});var Yt=N(()=>{"use strict";vre();hR();wne();kne();NL();hie();pie();gie();yie();vie();kie();ER();_ie();Lie();CR();Lw();ak();Rie();Nie();Mie();Fie();Ru();Gie();Vie();Yn();uk();i2();oo();Wie();lk();Yie();Sc();mie();Vm();Xie();jie();OL();NR();Kie();Z9();cie();Sae();tae();Lae();PR();Mae();Iae();Bae();Fae();Gae();Vae();qae();LR();Xae();});function Kae(t,e){t[e]?t[e]++:t[e]=1}function Qae(t,e){--t[e]||delete t[e]}function G2(t,e,r,n){var i=""+e,a=""+r;if(!t&&i>a){var s=i;i=a,a=s}return i+jae+a+jae+(xr(n)?qBe:n)}function WBe(t,e,r,n){var i=""+e,a=""+r;if(!t&&i>a){var s=i;i=a,a=s}var l={v:i,w:a};return n&&(l.name=n),l}function $R(t,e){return G2(t,e.v,e.w,e.name)}var qBe,cp,jae,cn,gk=N(()=>{"use strict";Yt();qBe="\0",cp="\0",jae="",cn=class{static{o(this,"Graph")}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=Ns(void 0),this._defaultEdgeLabelFn=Ns(void 0),this._nodes={},this._isCompound&&(this._parent={},this._children={},this._children[cp]={}),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 Si(e)||(e=Ns(e)),this._defaultNodeLabelFn=e,this}nodeCount(){return this._nodeCount}nodes(){return qr(this._nodes)}sources(){var e=this;return Zr(this.nodes(),function(r){return mr(e._in[r])})}sinks(){var e=this;return Zr(this.nodes(),function(r){return mr(e._out[r])})}setNodes(e,r){var n=arguments,i=this;return Ae(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]=cp,this._children[e]={},this._children[cp][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=o(n=>this.removeEdge(this._edgeObjs[n]),"removeEdge");delete this._nodes[e],this._isCompound&&(this._removeFromParentsChildList(e),delete this._parent[e],Ae(this.children(e),n=>{this.setParent(n)}),delete this._children[e]),Ae(qr(this._in[e]),r),delete this._in[e],delete this._preds[e],Ae(qr(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(xr(r))r=cp;else{r+="";for(var n=r;!xr(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!==cp)return r}}children(e){if(xr(e)&&(e=cp),this._isCompound){var r=this._children[e];if(r)return qr(r)}else{if(e===cp)return this.nodes();if(this.hasNode(e))return[]}}predecessors(e){var r=this._preds[e];if(r)return qr(r)}successors(e){var r=this._sucs[e];if(r)return qr(r)}neighbors(e){var r=this.predecessors(e);if(r)return FR(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;Ae(this._nodes,function(s,l){e(l)&&r.setNode(l,s)}),Ae(this._edgeObjs,function(s){r.hasNode(s.v)&&r.hasNode(s.w)&&r.setEdge(s,n.edge(s))});var i={};function a(s){var l=n.parent(s);return l===void 0||r.hasNode(l)?(i[s]=l,l):l in i?i[l]:a(l)}return o(a,"findParent"),this._isCompound&&Ae(r.nodes(),function(s){r.setParent(s,a(s))}),r}setDefaultEdgeLabel(e){return Si(e)||(e=Ns(e)),this._defaultEdgeLabelFn=e,this}edgeCount(){return this._edgeCount}edges(){return kr(this._edgeObjs)}setPath(e,r){var n=this,i=arguments;return Jr(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,xr(n)||(n=""+n);var l=G2(this._isDirected,e,r,n);if(Object.prototype.hasOwnProperty.call(this._edgeLabels,l))return a&&(this._edgeLabels[l]=i),this;if(!xr(n)&&!this._isMultigraph)throw new Error("Cannot set a named edge when isMultigraph = false");this.setNode(e),this.setNode(r),this._edgeLabels[l]=a?i:this._defaultEdgeLabelFn(e,r,n);var u=WBe(this._isDirected,e,r,n);return e=u.v,r=u.w,Object.freeze(u),this._edgeObjs[l]=u,Kae(this._preds[r],e),Kae(this._sucs[e],r),this._in[r][l]=u,this._out[e][l]=u,this._edgeCount++,this}edge(e,r,n){var i=arguments.length===1?$R(this._isDirected,arguments[0]):G2(this._isDirected,e,r,n);return this._edgeLabels[i]}hasEdge(e,r,n){var i=arguments.length===1?$R(this._isDirected,arguments[0]):G2(this._isDirected,e,r,n);return Object.prototype.hasOwnProperty.call(this._edgeLabels,i)}removeEdge(e,r,n){var i=arguments.length===1?$R(this._isDirected,arguments[0]):G2(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],Qae(this._preds[r],e),Qae(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=kr(n);return r?Zr(i,function(a){return a.v===r}):i}}outEdges(e,r){var n=this._out[e];if(n){var i=kr(n);return r?Zr(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))}};cn.prototype._nodeCount=0;cn.prototype._edgeCount=0;o(Kae,"incrementOrInitEntry");o(Qae,"decrementOrRemoveEntry");o(G2,"edgeArgsToId");o(WBe,"edgeArgsToObj");o($R,"edgeObjToId")});var qo=N(()=>{"use strict";gk()});function Zae(t){t._prev._next=t._next,t._next._prev=t._prev,delete t._next,delete t._prev}function YBe(t,e){if(t!=="_next"&&t!=="_prev")return e}var vk,Jae=N(()=>{"use strict";vk=class{static{o(this,"List")}constructor(){var e={};e._next=e._prev=e,this._sentinel=e}dequeue(){var e=this._sentinel,r=e._prev;if(r!==e)return Zae(r),r}enqueue(e){var r=this._sentinel;e._prev&&e._next&&Zae(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,YBe)),n=n._prev;return"["+e.join(", ")+"]"}};o(Zae,"unlink");o(YBe,"filterOutLinks")});function ese(t,e){if(t.nodeCount()<=1)return[];var r=KBe(t,e||XBe),n=jBe(r.graph,r.buckets,r.zeroIdx);return Qr(rt(n,function(i){return t.outEdges(i.v,i.w)}))}function jBe(t,e,r){for(var n=[],i=e[e.length-1],a=e[0],s;t.nodeCount();){for(;s=a.dequeue();)zR(t,e,r,s);for(;s=i.dequeue();)zR(t,e,r,s);if(t.nodeCount()){for(var l=e.length-2;l>0;--l)if(s=e[l].dequeue(),s){n=n.concat(zR(t,e,r,s,!0));break}}}return n}function zR(t,e,r,n,i){var a=i?[]:void 0;return Ae(t.inEdges(n.v),function(s){var l=t.edge(s),u=t.node(s.v);i&&a.push({v:s.v,w:s.w}),u.out-=l,GR(e,r,u)}),Ae(t.outEdges(n.v),function(s){var l=t.edge(s),u=s.w,h=t.node(u);h.in-=l,GR(e,r,h)}),t.removeNode(n.v),a}function KBe(t,e){var r=new cn,n=0,i=0;Ae(t.nodes(),function(l){r.setNode(l,{v:l,in:0,out:0})}),Ae(t.edges(),function(l){var u=r.edge(l.v,l.w)||0,h=e(l),f=u+h;r.setEdge(l.v,l.w,f),i=Math.max(i,r.node(l.v).out+=h),n=Math.max(n,r.node(l.w).in+=h)});var a=Ho(i+n+3).map(function(){return new vk}),s=n+1;return Ae(r.nodes(),function(l){GR(a,s,r.node(l))}),{graph:r,buckets:a,zeroIdx:s}}function GR(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 XBe,tse=N(()=>{"use strict";Yt();qo();Jae();XBe=Ns(1);o(ese,"greedyFAS");o(jBe,"doGreedyFAS");o(zR,"removeNode");o(KBe,"buildState");o(GR,"assignBucket")});function rse(t){var e=t.graph().acyclicer==="greedy"?ese(t,r(t)):QBe(t);Ae(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,lp("rev"))});function r(n){return function(i){return n.edge(i).weight}}o(r,"weightFn")}function QBe(t){var e=[],r={},n={};function i(a){Object.prototype.hasOwnProperty.call(n,a)||(n[a]=!0,r[a]=!0,Ae(t.outEdges(a),function(s){Object.prototype.hasOwnProperty.call(r,s.w)?e.push(s):i(s.w)}),delete r[a])}return o(i,"dfs"),Ae(t.nodes(),i),e}function nse(t){Ae(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 VR=N(()=>{"use strict";Yt();tse();o(rse,"run");o(QBe,"dfsFAS");o(nse,"undo")});function Lc(t,e,r,n){var i;do i=lp(n);while(t.hasNode(i));return r.dummy=e,t.setNode(i,r),i}function ase(t){var e=new cn().setGraph(t.graph());return Ae(t.nodes(),function(r){e.setNode(r,t.node(r))}),Ae(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 xk(t){var e=new cn({multigraph:t.isMultigraph()}).setGraph(t.graph());return Ae(t.nodes(),function(r){t.children(r).length||e.setNode(r,t.node(r))}),Ae(t.edges(),function(r){e.setEdge(r,t.edge(r))}),e}function UR(t,e){var r=t.x,n=t.y,i=e.x-r,a=e.y-n,s=t.width/2,l=t.height/2;if(!i&&!a)throw new Error("Not possible to find intersection inside of the rectangle");var u,h;return Math.abs(a)*s>Math.abs(i)*l?(a<0&&(l=-l),u=l*i/a,h=l):(i<0&&(s=-s),u=s,h=s*a/i),{x:r+u,y:n+h}}function uf(t){var e=rt(Ho(qR(t)+1),function(){return[]});return Ae(t.nodes(),function(r){var n=t.node(r),i=n.rank;xr(i)||(e[i][n.order]=r)}),e}function sse(t){var e=Rl(rt(t.nodes(),function(r){return t.node(r).rank}));Ae(t.nodes(),function(r){var n=t.node(r);Ft(n,"rank")&&(n.rank-=e)})}function ose(t){var e=Rl(rt(t.nodes(),function(a){return t.node(a).rank})),r=[];Ae(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;Ae(r,function(a,s){xr(a)&&s%i!==0?--n:n&&Ae(a,function(l){t.node(l).rank+=n})})}function HR(t,e,r,n){var i={width:0,height:0};return arguments.length>=4&&(i.rank=r,i.order=n),Lc(t,"border",i,e)}function qR(t){return Gs(rt(t.nodes(),function(e){var r=t.node(e).rank;if(!xr(r))return r}))}function lse(t,e){var r={lhs:[],rhs:[]};return Ae(t,function(n){e(n)?r.lhs.push(n):r.rhs.push(n)}),r}function cse(t,e){var r=rk();try{return e()}finally{console.log(t+" time: "+(rk()-r)+"ms")}}function use(t,e){return e()}var Rc=N(()=>{"use strict";Yt();qo();o(Lc,"addDummyNode");o(ase,"simplify");o(xk,"asNonCompoundGraph");o(UR,"intersectRect");o(uf,"buildLayerMatrix");o(sse,"normalizeRanks");o(ose,"removeEmptyRanks");o(HR,"addBorderNode");o(qR,"maxRank");o(lse,"partition");o(cse,"time");o(use,"notime")});function fse(t){function e(r){var n=t.children(r),i=t.node(r);if(n.length&&Ae(n,e),Object.prototype.hasOwnProperty.call(i,"minRank")){i.borderLeft=[],i.borderRight=[];for(var a=i.minRank,s=i.maxRank+1;a{"use strict";Yt();Rc();o(fse,"addBorderSegments");o(hse,"addBorderNode")});function mse(t){var e=t.graph().rankdir.toLowerCase();(e==="lr"||e==="rl")&&yse(t)}function gse(t){var e=t.graph().rankdir.toLowerCase();(e==="bt"||e==="rl")&&ZBe(t),(e==="lr"||e==="rl")&&(JBe(t),yse(t))}function yse(t){Ae(t.nodes(),function(e){pse(t.node(e))}),Ae(t.edges(),function(e){pse(t.edge(e))})}function pse(t){var e=t.width;t.width=t.height,t.height=e}function ZBe(t){Ae(t.nodes(),function(e){WR(t.node(e))}),Ae(t.edges(),function(e){var r=t.edge(e);Ae(r.points,WR),Object.prototype.hasOwnProperty.call(r,"y")&&WR(r)})}function WR(t){t.y=-t.y}function JBe(t){Ae(t.nodes(),function(e){YR(t.node(e))}),Ae(t.edges(),function(e){var r=t.edge(e);Ae(r.points,YR),Object.prototype.hasOwnProperty.call(r,"x")&&YR(r)})}function YR(t){var e=t.x;t.x=t.y,t.y=e}var vse=N(()=>{"use strict";Yt();o(mse,"adjust");o(gse,"undo");o(yse,"swapWidthHeight");o(pse,"swapWidthHeightOne");o(ZBe,"reverseY");o(WR,"reverseYOne");o(JBe,"swapXY");o(YR,"swapXYOne")});function xse(t){t.graph().dummyChains=[],Ae(t.edges(),function(e){tFe(t,e)})}function tFe(t,e){var r=e.v,n=t.node(r).rank,i=e.w,a=t.node(i).rank,s=e.name,l=t.edge(e),u=l.labelRank;if(a!==n+1){t.removeEdge(e);var h=void 0,f,d;for(d=0,++n;n{"use strict";Yt();Rc();o(xse,"run");o(tFe,"normalizeEdge");o(bse,"undo")});function V2(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=Rl(rt(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}o(r,"dfs"),Ae(t.sources(),r)}function up(t,e){return t.node(e.w).rank-t.node(e.v).rank-t.edge(e).minlen}var bk=N(()=>{"use strict";Yt();o(V2,"longestPath");o(up,"slack")});function Tk(t){var e=new cn({directed:!1}),r=t.nodes()[0],n=t.nodeCount();e.setNode(r,{});for(var i,a;rFe(e,t){"use strict";Yt();qo();bk();o(Tk,"feasibleTree");o(rFe,"tightTree");o(nFe,"findMinSlackEdge");o(iFe,"shiftRanks")});var wse=N(()=>{"use strict"});var KR=N(()=>{"use strict"});var cjt,QR=N(()=>{"use strict";Yt();KR();cjt=Ns(1)});var kse=N(()=>{"use strict";QR()});var ZR=N(()=>{"use strict"});var Ese=N(()=>{"use strict";ZR()});var bjt,Sse=N(()=>{"use strict";Yt();bjt=Ns(1)});function JR(t){var e={},r={},n=[];function i(a){if(Object.prototype.hasOwnProperty.call(r,a))throw new U2;Object.prototype.hasOwnProperty.call(e,a)||(r[a]=!0,e[a]=!0,Ae(t.predecessors(a),i),delete r[a],n.push(a))}if(o(i,"visit"),Ae(t.sinks(),i),BR(e)!==t.nodeCount())throw new U2;return n}function U2(){}var eN=N(()=>{"use strict";Yt();JR.CycleException=U2;o(JR,"topsort");o(U2,"CycleException");U2.prototype=new Error});var Cse=N(()=>{"use strict";eN()});function wk(t,e,r){Bt(e)||(e=[e]);var n=(t.isDirected()?t.successors:t.neighbors).bind(t),i=[],a={};return Ae(e,function(s){if(!t.hasNode(s))throw new Error("Graph does not have node: "+s);Ase(t,s,r==="post",a,n,i)}),i}function Ase(t,e,r,n,i,a){Object.prototype.hasOwnProperty.call(n,e)||(n[e]=!0,r||a.push(e),Ae(i(e),function(s){Ase(t,s,r,n,i,a)}),r&&a.push(e))}var tN=N(()=>{"use strict";Yt();o(wk,"dfs");o(Ase,"doDfs")});function rN(t,e){return wk(t,e,"post")}var _se=N(()=>{"use strict";tN();o(rN,"postorder")});function nN(t,e){return wk(t,e,"pre")}var Dse=N(()=>{"use strict";tN();o(nN,"preorder")});var Lse=N(()=>{"use strict";KR();gk()});var Rse=N(()=>{"use strict";wse();QR();kse();Ese();Sse();Cse();_se();Dse();Lse();ZR();eN()});function ff(t){t=ase(t),V2(t);var e=Tk(t);aN(e),iN(e,t);for(var r,n;r=Ose(e);)n=Pse(e,t,r),Bse(e,t,r,n)}function iN(t,e){var r=rN(t,t.nodes());r=r.slice(0,r.length-1),Ae(r,function(n){cFe(t,e,n)})}function cFe(t,e,r){var n=t.node(r),i=n.parent;t.edge(r,i).cutvalue=Mse(t,e,r)}function Mse(t,e,r){var n=t.node(r),i=n.parent,a=!0,s=e.edge(r,i),l=0;return s||(a=!1,s=e.edge(i,r)),l=s.weight,Ae(e.nodeEdges(r),function(u){var h=u.v===r,f=h?u.w:u.v;if(f!==i){var d=h===a,p=e.edge(u).weight;if(l+=d?p:-p,hFe(t,r,f)){var m=t.edge(r,f).cutvalue;l+=d?-m:m}}}),l}function aN(t,e){arguments.length<2&&(e=t.nodes()[0]),Ise(t,{},1,e)}function Ise(t,e,r,n,i){var a=r,s=t.node(n);return e[n]=!0,Ae(t.neighbors(n),function(l){Object.prototype.hasOwnProperty.call(e,l)||(r=Ise(t,e,r,l,n))}),s.low=a,s.lim=r++,i?s.parent=i:delete s.parent,r}function Ose(t){return os(t.edges(),function(e){return t.edge(e).cutvalue<0})}function Pse(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),l=a,u=!1;a.lim>s.lim&&(l=s,u=!0);var h=Zr(e.edges(),function(f){return u===Nse(t,t.node(f.v),l)&&u!==Nse(t,t.node(f.w),l)});return sp(h,function(f){return up(e,f)})}function Bse(t,e,r,n){var i=r.v,a=r.w;t.removeEdge(i,a),t.setEdge(n.v,n.w,{}),aN(t),iN(t,e),uFe(t,e)}function uFe(t,e){var r=os(t.nodes(),function(i){return!e.node(i).parent}),n=nN(t,r);n=n.slice(1),Ae(n,function(i){var a=t.node(i).parent,s=e.edge(i,a),l=!1;s||(s=e.edge(a,i),l=!0),e.node(i).rank=e.node(a).rank+(l?s.minlen:-s.minlen)})}function hFe(t,e,r){return t.hasEdge(e,r)}function Nse(t,e,r){return r.low<=e.lim&&e.lim<=r.lim}var Fse=N(()=>{"use strict";Yt();Rse();Rc();jR();bk();ff.initLowLimValues=aN;ff.initCutValues=iN;ff.calcCutValue=Mse;ff.leaveEdge=Ose;ff.enterEdge=Pse;ff.exchangeEdges=Bse;o(ff,"networkSimplex");o(iN,"initCutValues");o(cFe,"assignCutValue");o(Mse,"calcCutValue");o(aN,"initLowLimValues");o(Ise,"dfsAssignLowLim");o(Ose,"leaveEdge");o(Pse,"enterEdge");o(Bse,"exchangeEdges");o(uFe,"updateRanks");o(hFe,"isTreeEdge");o(Nse,"isDescendant")});function sN(t){switch(t.graph().ranker){case"network-simplex":$se(t);break;case"tight-tree":dFe(t);break;case"longest-path":fFe(t);break;default:$se(t)}}function dFe(t){V2(t),Tk(t)}function $se(t){ff(t)}var fFe,oN=N(()=>{"use strict";jR();Fse();bk();o(sN,"rank");fFe=V2;o(dFe,"tightTreeRanker");o($se,"networkSimplexRanker")});function zse(t){var e=Lc(t,"root",{},"_root"),r=pFe(t),n=Gs(kr(r))-1,i=2*n+1;t.graph().nestingRoot=e,Ae(t.edges(),function(s){t.edge(s).minlen*=i});var a=mFe(t)+1;Ae(t.children(),function(s){Gse(t,e,i,a,n,r,s)}),t.graph().nodeRankFactor=i}function Gse(t,e,r,n,i,a,s){var l=t.children(s);if(!l.length){s!==e&&t.setEdge(e,s,{weight:0,minlen:r});return}var u=HR(t,"_bt"),h=HR(t,"_bb"),f=t.node(s);t.setParent(u,s),f.borderTop=u,t.setParent(h,s),f.borderBottom=h,Ae(l,function(d){Gse(t,e,r,n,i,a,d);var p=t.node(d),m=p.borderTop?p.borderTop:d,g=p.borderBottom?p.borderBottom:d,y=p.borderTop?n:2*n,v=m!==g?1:i-a[s]+1;t.setEdge(u,m,{weight:y,minlen:v,nestingEdge:!0}),t.setEdge(g,h,{weight:y,minlen:v,nestingEdge:!0})}),t.parent(s)||t.setEdge(e,u,{weight:0,minlen:i+a[s]})}function pFe(t){var e={};function r(n,i){var a=t.children(n);a&&a.length&&Ae(a,function(s){r(s,i+1)}),e[n]=i}return o(r,"dfs"),Ae(t.children(),function(n){r(n,1)}),e}function mFe(t){return Jr(t.edges(),function(e,r){return e+t.edge(r).weight},0)}function Vse(t){var e=t.graph();t.removeNode(e.nestingRoot),delete e.nestingRoot,Ae(t.edges(),function(r){var n=t.edge(r);n.nestingEdge&&t.removeEdge(r)})}var Use=N(()=>{"use strict";Yt();Rc();o(zse,"run");o(Gse,"dfs");o(pFe,"treeDepths");o(mFe,"sumWeights");o(Vse,"cleanup")});function Hse(t,e,r){var n={},i;Ae(r,function(a){for(var s=t.parent(a),l,u;s;){if(l=t.parent(s),l?(u=n[l],n[l]=s):(u=i,i=s),u&&u!==s){e.setEdge(u,s);return}s=l}})}var qse=N(()=>{"use strict";Yt();o(Hse,"addSubgraphConstraints")});function Wse(t,e,r){var n=yFe(t),i=new cn({compound:!0}).setGraph({root:n}).setDefaultNodeLabel(function(a){return t.node(a)});return Ae(t.nodes(),function(a){var s=t.node(a),l=t.parent(a);(s.rank===e||s.minRank<=e&&e<=s.maxRank)&&(i.setNode(a),i.setParent(a,l||n),Ae(t[r](a),function(u){var h=u.v===a?u.w:u.v,f=i.edge(h,a),d=xr(f)?0:f.weight;i.setEdge(h,a,{weight:t.edge(u).weight+d})}),Object.prototype.hasOwnProperty.call(s,"minRank")&&i.setNode(a,{borderLeft:s.borderLeft[e],borderRight:s.borderRight[e]}))}),i}function yFe(t){for(var e;t.hasNode(e=lp("_root")););return e}var Yse=N(()=>{"use strict";Yt();qo();o(Wse,"buildLayerGraph");o(yFe,"createRootNode")});function Xse(t,e){for(var r=0,n=1;n0;)f%2&&(d+=l[f+1]),f=f-1>>1,l[f]+=h.weight;u+=h.weight*d})),u}var jse=N(()=>{"use strict";Yt();o(Xse,"crossCount");o(vFe,"twoLayerCrossCount")});function Kse(t){var e={},r=Zr(t.nodes(),function(l){return!t.children(l).length}),n=Gs(rt(r,function(l){return t.node(l).rank})),i=rt(Ho(n+1),function(){return[]});function a(l){if(!Ft(e,l)){e[l]=!0;var u=t.node(l);i[u.rank].push(l),Ae(t.successors(l),a)}}o(a,"dfs");var s=Dc(r,function(l){return t.node(l).rank});return Ae(s,a),i}var Qse=N(()=>{"use strict";Yt();o(Kse,"initOrder")});function Zse(t,e){return rt(e,function(r){var n=t.inEdges(r);if(n.length){var i=Jr(n,function(a,s){var l=t.edge(s),u=t.node(s.v);return{sum:a.sum+l.weight*u.order,weight:a.weight+l.weight}},{sum:0,weight:0});return{v:r,barycenter:i.sum/i.weight,weight:i.weight}}else return{v:r}})}var Jse=N(()=>{"use strict";Yt();o(Zse,"barycenter")});function eoe(t,e){var r={};Ae(t,function(i,a){var s=r[i.v]={indegree:0,in:[],out:[],vs:[i.v],i:a};xr(i.barycenter)||(s.barycenter=i.barycenter,s.weight=i.weight)}),Ae(e.edges(),function(i){var a=r[i.v],s=r[i.w];!xr(a)&&!xr(s)&&(s.indegree++,a.out.push(r[i.w]))});var n=Zr(r,function(i){return!i.indegree});return xFe(n)}function xFe(t){var e=[];function r(a){return function(s){s.merged||(xr(s.barycenter)||xr(a.barycenter)||s.barycenter>=a.barycenter)&&bFe(a,s)}}o(r,"handleIn");function n(a){return function(s){s.in.push(a),--s.indegree===0&&t.push(s)}}for(o(n,"handleOut");t.length;){var i=t.pop();e.push(i),Ae(i.in.reverse(),r(i)),Ae(i.out,n(i))}return rt(Zr(e,function(a){return!a.merged}),function(a){return op(a,["vs","i","barycenter","weight"])})}function bFe(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 toe=N(()=>{"use strict";Yt();o(eoe,"resolveConflicts");o(xFe,"doResolveConflicts");o(bFe,"mergeEntries")});function noe(t,e){var r=lse(t,function(f){return Object.prototype.hasOwnProperty.call(f,"barycenter")}),n=r.lhs,i=Dc(r.rhs,function(f){return-f.i}),a=[],s=0,l=0,u=0;n.sort(TFe(!!e)),u=roe(a,i,u),Ae(n,function(f){u+=f.vs.length,a.push(f.vs),s+=f.barycenter*f.weight,l+=f.weight,u=roe(a,i,u)});var h={vs:Qr(a)};return l&&(h.barycenter=s/l,h.weight=l),h}function roe(t,e,r){for(var n;e.length&&(n=ma(e)).i<=r;)e.pop(),t.push(n.vs),r++;return r}function TFe(t){return function(e,r){return e.barycenterr.barycenter?1:t?r.i-e.i:e.i-r.i}}var ioe=N(()=>{"use strict";Yt();Rc();o(noe,"sort");o(roe,"consumeUnsortable");o(TFe,"compareWithBias")});function lN(t,e,r,n){var i=t.children(e),a=t.node(e),s=a?a.borderLeft:void 0,l=a?a.borderRight:void 0,u={};s&&(i=Zr(i,function(g){return g!==s&&g!==l}));var h=Zse(t,i);Ae(h,function(g){if(t.children(g.v).length){var y=lN(t,g.v,r,n);u[g.v]=y,Object.prototype.hasOwnProperty.call(y,"barycenter")&&kFe(g,y)}});var f=eoe(h,r);wFe(f,u);var d=noe(f,n);if(s&&(d.vs=Qr([s,d.vs,l]),t.predecessors(s).length)){var p=t.node(t.predecessors(s)[0]),m=t.node(t.predecessors(l)[0]);Object.prototype.hasOwnProperty.call(d,"barycenter")||(d.barycenter=0,d.weight=0),d.barycenter=(d.barycenter*d.weight+p.order+m.order)/(d.weight+2),d.weight+=2}return d}function wFe(t,e){Ae(t,function(r){r.vs=Qr(r.vs.map(function(n){return e[n]?e[n].vs:n}))})}function kFe(t,e){xr(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 aoe=N(()=>{"use strict";Yt();Jse();toe();ioe();o(lN,"sortSubgraph");o(wFe,"expandSubgraphs");o(kFe,"mergeBarycenters")});function loe(t){var e=qR(t),r=soe(t,Ho(1,e+1),"inEdges"),n=soe(t,Ho(e-1,-1,-1),"outEdges"),i=Kse(t);ooe(t,i);for(var a=Number.POSITIVE_INFINITY,s,l=0,u=0;u<4;++l,++u){EFe(l%2?r:n,l%4>=2),i=uf(t);var h=Xse(t,i);h{"use strict";Yt();qo();Rc();qse();Yse();jse();Qse();aoe();o(loe,"order");o(soe,"buildLayerGraphs");o(EFe,"sweepLayerGraphs");o(ooe,"assignOrder")});function uoe(t){var e=CFe(t);Ae(t.graph().dummyChains,function(r){for(var n=t.node(r),i=n.edgeObj,a=SFe(t,e,i.v,i.w),s=a.path,l=a.lca,u=0,h=s[u],f=!0;r!==i.w;){if(n=t.node(r),f){for(;(h=s[u])!==l&&t.node(h).maxRanks||l>e[u].lim));for(h=u,u=n;(u=t.parent(u))!==h;)a.push(u);return{path:i.concat(a.reverse()),lca:h}}function CFe(t){var e={},r=0;function n(i){var a=r;Ae(t.children(i),n),e[i]={low:a,lim:r++}}return o(n,"dfs"),Ae(t.children(),n),e}var hoe=N(()=>{"use strict";Yt();o(uoe,"parentDummyChains");o(SFe,"findPath");o(CFe,"postorder")});function AFe(t,e){var r={};function n(i,a){var s=0,l=0,u=i.length,h=ma(a);return Ae(a,function(f,d){var p=DFe(t,f),m=p?t.node(p).order:u;(p||f===h)&&(Ae(a.slice(l,d+1),function(g){Ae(t.predecessors(g),function(y){var v=t.node(y),x=v.order;(xh)&&foe(r,p,f)})})}o(n,"scan");function i(a,s){var l=-1,u,h=0;return Ae(s,function(f,d){if(t.node(f).dummy==="border"){var p=t.predecessors(f);p.length&&(u=t.node(p[0]).order,n(s,h,d,l,u),h=d,l=u)}n(s,h,s.length,u,a.length)}),s}return o(i,"visitLayer"),Jr(e,i),r}function DFe(t,e){if(t.node(e).dummy)return os(t.predecessors(e),function(r){return t.node(r).dummy})}function foe(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 LFe(t,e,r){if(e>r){var n=e;e=r,r=n}return!!t[e]&&Object.prototype.hasOwnProperty.call(t[e],r)}function RFe(t,e,r,n){var i={},a={},s={};return Ae(e,function(l){Ae(l,function(u,h){i[u]=u,a[u]=u,s[u]=h})}),Ae(e,function(l){var u=-1;Ae(l,function(h){var f=n(h);if(f.length){f=Dc(f,function(y){return s[y]});for(var d=(f.length-1)/2,p=Math.floor(d),m=Math.ceil(d);p<=m;++p){var g=f[p];a[h]===h&&u{"use strict";Yt();qo();Rc();o(AFe,"findType1Conflicts");o(_Fe,"findType2Conflicts");o(DFe,"findOtherInnerSegmentNode");o(foe,"addConflict");o(LFe,"hasConflict");o(RFe,"verticalAlignment");o(NFe,"horizontalCompaction");o(MFe,"buildBlockGraph");o(IFe,"findSmallestWidthAlignment");o(OFe,"alignCoordinates");o(PFe,"balance");o(doe,"positionX");o(BFe,"sep");o(FFe,"width")});function moe(t){t=xk(t),$Fe(t),_R(doe(t),function(e,r){t.node(r).x=e})}function $Fe(t){var e=uf(t),r=t.graph().ranksep,n=0;Ae(e,function(i){var a=Gs(rt(i,function(s){return t.node(s).height}));Ae(i,function(s){t.node(s).y=n+a/2}),n+=a+r})}var goe=N(()=>{"use strict";Yt();Rc();poe();o(moe,"position");o($Fe,"positionY")});function H2(t,e){var r=e&&e.debugTiming?cse:use;r("layout",()=>{var n=r(" buildLayoutGraph",()=>KFe(t));r(" runLayout",()=>zFe(n,r)),r(" updateInputGraph",()=>GFe(t,n))})}function zFe(t,e){e(" makeSpaceForEdgeLabels",()=>QFe(t)),e(" removeSelfEdges",()=>s$e(t)),e(" acyclic",()=>rse(t)),e(" nestingGraph.run",()=>zse(t)),e(" rank",()=>sN(xk(t))),e(" injectEdgeLabelProxies",()=>ZFe(t)),e(" removeEmptyRanks",()=>ose(t)),e(" nestingGraph.cleanup",()=>Vse(t)),e(" normalizeRanks",()=>sse(t)),e(" assignRankMinMax",()=>JFe(t)),e(" removeEdgeLabelProxies",()=>e$e(t)),e(" normalize.run",()=>xse(t)),e(" parentDummyChains",()=>uoe(t)),e(" addBorderSegments",()=>fse(t)),e(" order",()=>loe(t)),e(" insertSelfEdges",()=>o$e(t)),e(" adjustCoordinateSystem",()=>mse(t)),e(" position",()=>moe(t)),e(" positionSelfEdges",()=>l$e(t)),e(" removeBorderNodes",()=>a$e(t)),e(" normalize.undo",()=>bse(t)),e(" fixupEdgeLabelCoords",()=>n$e(t)),e(" undoCoordinateSystem",()=>gse(t)),e(" translateGraph",()=>t$e(t)),e(" assignNodeIntersects",()=>r$e(t)),e(" reversePoints",()=>i$e(t)),e(" acyclic.undo",()=>nse(t))}function GFe(t,e){Ae(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))}),Ae(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 KFe(t){var e=new cn({multigraph:!0,compound:!0}),r=uN(t.graph());return e.setGraph(Wh({},UFe,cN(r,VFe),op(r,HFe))),Ae(t.nodes(),function(n){var i=uN(t.node(n));e.setNode(n,of(cN(i,qFe),WFe)),e.setParent(n,t.parent(n))}),Ae(t.edges(),function(n){var i=uN(t.edge(n));e.setEdge(n,Wh({},XFe,cN(i,YFe),op(i,jFe)))}),e}function QFe(t){var e=t.graph();e.ranksep/=2,Ae(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 ZFe(t){Ae(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};Lc(t,"edge-proxy",a,"_ep")}})}function JFe(t){var e=0;Ae(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=Gs(e,n.maxRank))}),t.graph().maxRank=e}function e$e(t){Ae(t.nodes(),function(e){var r=t.node(e);r.dummy==="edge-proxy"&&(t.edge(r.e).labelRank=r.rank,t.removeNode(e))})}function t$e(t){var e=Number.POSITIVE_INFINITY,r=0,n=Number.POSITIVE_INFINITY,i=0,a=t.graph(),s=a.marginx||0,l=a.marginy||0;function u(h){var f=h.x,d=h.y,p=h.width,m=h.height;e=Math.min(e,f-p/2),r=Math.max(r,f+p/2),n=Math.min(n,d-m/2),i=Math.max(i,d+m/2)}o(u,"getExtremes"),Ae(t.nodes(),function(h){u(t.node(h))}),Ae(t.edges(),function(h){var f=t.edge(h);Object.prototype.hasOwnProperty.call(f,"x")&&u(f)}),e-=s,n-=l,Ae(t.nodes(),function(h){var f=t.node(h);f.x-=e,f.y-=n}),Ae(t.edges(),function(h){var f=t.edge(h);Ae(f.points,function(d){d.x-=e,d.y-=n}),Object.prototype.hasOwnProperty.call(f,"x")&&(f.x-=e),Object.prototype.hasOwnProperty.call(f,"y")&&(f.y-=n)}),a.width=r-e+s,a.height=i-n+l}function r$e(t){Ae(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(UR(n,a)),r.points.push(UR(i,s))})}function n$e(t){Ae(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 i$e(t){Ae(t.edges(),function(e){var r=t.edge(e);r.reversed&&r.points.reverse()})}function a$e(t){Ae(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(ma(r.borderLeft)),s=t.node(ma(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}}),Ae(t.nodes(),function(e){t.node(e).dummy==="border"&&t.removeNode(e)})}function s$e(t){Ae(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 o$e(t){var e=uf(t);Ae(e,function(r){var n=0;Ae(r,function(i,a){var s=t.node(i);s.order=a+n,Ae(s.selfEdges,function(l){Lc(t,"selfedge",{width:l.label.width,height:l.label.height,rank:s.rank,order:a+ ++n,e:l.e,label:l.label},"_se")}),delete s.selfEdges})})}function l$e(t){Ae(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,l=n.height/2;t.setEdge(r.e,r.label),t.removeNode(e),r.label.points=[{x:i+2*s/3,y:a-l},{x:i+5*s/6,y:a-l},{x:i+s,y:a},{x:i+5*s/6,y:a+l},{x:i+2*s/3,y:a+l}],r.label.x=r.x,r.label.y=r.y}})}function cN(t,e){return ap(op(t,e),Number)}function uN(t){var e={};return Ae(t,function(r,n){e[n.toLowerCase()]=r}),e}var VFe,UFe,HFe,qFe,WFe,YFe,XFe,jFe,yoe=N(()=>{"use strict";Yt();qo();dse();vse();VR();XR();oN();Use();coe();hoe();goe();Rc();o(H2,"layout");o(zFe,"runLayout");o(GFe,"updateInputGraph");VFe=["nodesep","edgesep","ranksep","marginx","marginy"],UFe={ranksep:50,edgesep:20,nodesep:50,rankdir:"tb"},HFe=["acyclicer","ranker","rankdir","align"],qFe=["width","height"],WFe={width:0,height:0},YFe=["minlen","weight","width","height","labeloffset"],XFe={minlen:1,weight:1,width:0,height:0,labeloffset:10,labelpos:"r"},jFe=["labelpos"];o(KFe,"buildLayoutGraph");o(QFe,"makeSpaceForEdgeLabels");o(ZFe,"injectEdgeLabelProxies");o(JFe,"assignRankMinMax");o(e$e,"removeEdgeLabelProxies");o(t$e,"translateGraph");o(r$e,"assignNodeIntersects");o(n$e,"fixupEdgeLabelCoords");o(i$e,"reversePointsForReversedEdges");o(a$e,"removeBorderNodes");o(s$e,"removeSelfEdges");o(o$e,"insertSelfEdges");o(l$e,"positionSelfEdges");o(cN,"selectNumberAttrs");o(uN,"canonicalize")});var hN=N(()=>{"use strict";VR();yoe();XR();oN()});function Wo(t){var e={options:{directed:t.isDirected(),multigraph:t.isMultigraph(),compound:t.isCompound()},nodes:c$e(t),edges:u$e(t)};return xr(t.graph())||(e.value=ln(t.graph())),e}function c$e(t){return rt(t.nodes(),function(e){var r=t.node(e),n=t.parent(e),i={v:e};return xr(r)||(i.value=r),xr(n)||(i.parent=n),i})}function u$e(t){return rt(t.edges(),function(e){var r=t.edge(e),n={v:e.v,w:e.w};return xr(e.name)||(n.name=e.name),xr(r)||(n.value=r),n})}var fN=N(()=>{"use strict";Yt();gk();o(Wo,"write");o(c$e,"writeNodes");o(u$e,"writeEdges")});var Er,hp,boe,Toe,kk,h$e,woe,koe,f$e,Wm,xoe,Eoe,Soe,Coe,Aoe,_oe=N(()=>{"use strict";pt();qo();fN();Er=new Map,hp=new Map,boe=new Map,Toe=o(()=>{hp.clear(),boe.clear(),Er.clear()},"clear"),kk=o((t,e)=>{let r=hp.get(e)||[];return X.trace("In isDescendant",e," ",t," = ",r.includes(t)),r.includes(t)},"isDescendant"),h$e=o((t,e)=>{let r=hp.get(e)||[];return X.info("Descendants of ",e," is ",r),X.info("Edge is ",t),t.v===e||t.w===e?!1:r?r.includes(t.v)||kk(t.v,e)||kk(t.w,e)||r.includes(t.w):(X.debug("Tilt, ",e,",not in descendants"),!1)},"edgeInCluster"),woe=o((t,e,r,n)=>{X.warn("Copying children of ",t,"root",n,"data",e.node(t),n);let i=e.children(t)||[];t!==n&&i.push(t),X.warn("Copying (nodes) clusterId",t,"nodes",i),i.forEach(a=>{if(e.children(a).length>0)woe(a,e,r,n);else{let s=e.node(a);X.info("cp ",a," to ",n," with parent ",t),r.setNode(a,s),n!==e.parent(a)&&(X.warn("Setting parent",a,e.parent(a)),r.setParent(a,e.parent(a))),t!==n&&a!==t?(X.debug("Setting parent",a,t),r.setParent(a,t)):(X.info("In copy ",t,"root",n,"data",e.node(t),n),X.debug("Not Setting parent for node=",a,"cluster!==rootId",t!==n,"node!==clusterId",a!==t));let l=e.edges(a);X.debug("Copying Edges",l),l.forEach(u=>{X.info("Edge",u);let h=e.edge(u.v,u.w,u.name);X.info("Edge data",h,n);try{h$e(u,n)?(X.info("Copying as ",u.v,u.w,h,u.name),r.setEdge(u.v,u.w,h,u.name),X.info("newGraph edges ",r.edges(),r.edge(r.edges()[0]))):X.info("Skipping copy of edge ",u.v,"-->",u.w," rootId: ",n," clusterId:",t)}catch(f){X.error(f)}})}X.debug("Removing node",a),e.removeNode(a)})},"copy"),koe=o((t,e)=>{let r=e.children(t),n=[...r];for(let i of r)boe.set(i,t),n=[...n,...koe(i,e)];return n},"extractDescendants"),f$e=o((t,e,r)=>{let n=t.edges().filter(u=>u.v===e||u.w===e),i=t.edges().filter(u=>u.v===r||u.w===r),a=n.map(u=>({v:u.v===e?r:u.v,w:u.w===e?e:u.w})),s=i.map(u=>({v:u.v,w:u.w}));return a.filter(u=>s.some(h=>u.v===h.v&&u.w===h.w))},"findCommonEdges"),Wm=o((t,e,r)=>{let n=e.children(t);if(X.trace("Searching children of id ",t,n),n.length<1)return t;let i;for(let a of n){let s=Wm(a,e,r),l=f$e(e,r,s);if(s)if(l.length>0)i=s;else return s}return i},"findNonClusterChild"),xoe=o(t=>!Er.has(t)||!Er.get(t).externalConnections?t:Er.has(t)?Er.get(t).id:t,"getAnchorId"),Eoe=o((t,e)=>{if(!t||e>10){X.debug("Opting out, no graph ");return}else X.debug("Opting in, graph ");t.nodes().forEach(function(r){t.children(r).length>0&&(X.warn("Cluster identified",r," Replacement id in edges: ",Wm(r,t,r)),hp.set(r,koe(r,t)),Er.set(r,{id:Wm(r,t,r),clusterData:t.node(r)}))}),t.nodes().forEach(function(r){let n=t.children(r),i=t.edges();n.length>0?(X.debug("Cluster identified",r,hp),i.forEach(a=>{let s=kk(a.v,r),l=kk(a.w,r);s^l&&(X.warn("Edge: ",a," leaves cluster ",r),X.warn("Descendants of XXX ",r,": ",hp.get(r)),Er.get(r).externalConnections=!0)})):X.debug("Not a cluster ",r,hp)});for(let r of Er.keys()){let n=Er.get(r).id,i=t.parent(n);i!==r&&Er.has(i)&&!Er.get(i).externalConnections&&(Er.get(r).id=i)}t.edges().forEach(function(r){let n=t.edge(r);X.warn("Edge "+r.v+" -> "+r.w+": "+JSON.stringify(r)),X.warn("Edge "+r.v+" -> "+r.w+": "+JSON.stringify(t.edge(r)));let i=r.v,a=r.w;if(X.warn("Fix XXX",Er,"ids:",r.v,r.w,"Translating: ",Er.get(r.v)," --- ",Er.get(r.w)),Er.get(r.v)||Er.get(r.w)){if(X.warn("Fixing and trying - removing XXX",r.v,r.w,r.name),i=xoe(r.v),a=xoe(r.w),t.removeEdge(r.v,r.w,r.name),i!==r.v){let s=t.parent(i);Er.get(s).externalConnections=!0,n.fromCluster=r.v}if(a!==r.w){let s=t.parent(a);Er.get(s).externalConnections=!0,n.toCluster=r.w}X.warn("Fix Replacing with XXX",i,a,r.name),t.setEdge(i,a,n,r.name)}}),X.warn("Adjusted Graph",Wo(t)),Soe(t,0),X.trace(Er)},"adjustClustersAndEdges"),Soe=o((t,e)=>{if(X.warn("extractor - ",e,Wo(t),t.children("D")),e>10){X.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){X.debug("Done, no node has children",t.nodes());return}X.debug("Nodes = ",r,e);for(let i of r)if(X.debug("Extracting node",i,Er,Er.has(i)&&!Er.get(i).externalConnections,!t.parent(i),t.node(i),t.children("D")," Depth ",e),!Er.has(i))X.debug("Not a cluster",i,e);else if(!Er.get(i).externalConnections&&t.children(i)&&t.children(i).length>0){X.warn("Cluster without external connections, without a parent and with children",i,e);let s=t.graph().rankdir==="TB"?"LR":"TB";Er.get(i)?.clusterData?.dir&&(s=Er.get(i).clusterData.dir,X.warn("Fixing dir",Er.get(i).clusterData.dir,s));let l=new cn({multigraph:!0,compound:!0}).setGraph({rankdir:s,nodesep:50,ranksep:50,marginx:8,marginy:8}).setDefaultEdgeLabel(function(){return{}});X.warn("Old graph before copy",Wo(t)),woe(i,t,l,i),t.setNode(i,{clusterNode:!0,id:i,clusterData:Er.get(i).clusterData,label:Er.get(i).label,graph:l}),X.warn("New graph after copy node: (",i,")",Wo(l)),X.debug("Old graph after copy",Wo(t))}else X.warn("Cluster ** ",i," **not meeting the criteria !externalConnections:",!Er.get(i).externalConnections," no parent: ",!t.parent(i)," children ",t.children(i)&&t.children(i).length>0,t.children("D"),e),X.debug(Er);r=t.nodes(),X.warn("New list of nodes",r);for(let i of r){let a=t.node(i);X.warn(" Now next level",i,a),a?.clusterNode&&Soe(a.graph,e+1)}},"extractor"),Coe=o((t,e)=>{if(e.length===0)return[];let r=Object.assign([],e);return e.forEach(n=>{let i=t.children(n),a=Coe(t,i);r=[...r,...a]}),r},"sorter"),Aoe=o(t=>Coe(t,t.children()),"sortNodesByHierarchy")});var Loe={};dr(Loe,{render:()=>d$e});var Doe,d$e,Roe=N(()=>{"use strict";hN();fN();qo();K9();It();_oe();bw();cw();j9();pt();O2();Xt();Doe=o(async(t,e,r,n,i,a)=>{X.warn("Graph in recursive render:XAX",Wo(e),i);let s=e.graph().rankdir;X.trace("Dir in recursive render - dir:",s);let l=t.insert("g").attr("class","root");e.nodes()?X.info("Recursive render XXX",e.nodes()):X.info("No nodes found for",e),e.edges().length>0&&X.info("Recursive edges",e.edge(e.edges()[0]));let u=l.insert("g").attr("class","clusters"),h=l.insert("g").attr("class","edgePaths"),f=l.insert("g").attr("class","edgeLabels"),d=l.insert("g").attr("class","nodes");await Promise.all(e.nodes().map(async function(y){let v=e.node(y);if(i!==void 0){let x=JSON.parse(JSON.stringify(i.clusterData));X.trace(`Setting data for parent cluster XXX - Node.id = `,y,` - data=`,x.height,` -Parent cluster`,i.height),e.setNode(i.id,x),e.parent(y)||(X.trace("Setting parent",y,i.id),e.setParent(y,i.id,x))}if(X.info("(Insert) Node XXX"+y+": "+JSON.stringify(e.node(y))),v?.clusterNode){X.info("Cluster identified XBX",y,v.width,e.node(y));let{ranksep:x,nodesep:b}=e.graph();v.graph.setGraph({...v.graph.graph(),ranksep:x+25,nodesep:b});let T=await Doe(d,v.graph,r,n,e.node(y),a),S=T.elem;Qe(v,S),v.diff=T.diff||0,X.info("New compound node after recursive render XAX",y,"width",v.width,"height",v.height),Xte(S,v)}else e.children(y).length>0?(X.trace("Cluster - the non recursive path XBX",y,v.id,v,v.width,"Graph:",e),X.trace(Wm(v.id,e)),Er.set(v.id,{id:Wm(v.id,e),node:v})):(X.trace("Node - the non recursive path XAX",y,d,e.node(y),s),await Cm(d,e.node(y),{config:a,dir:s}))})),await o(async()=>{let y=e.edges().map(async function(v){let x=e.edge(v.v,v.w,v.name);X.info("Edge "+v.v+" -> "+v.w+": "+JSON.stringify(v)),X.info("Edge "+v.v+" -> "+v.w+": ",v," ",JSON.stringify(e.edge(v))),X.info("Fix",Er,"ids:",v.v,v.w,"Translating: ",Er.get(v.v),Er.get(v.w)),await mw(f,x)});await Promise.all(y)},"processEdges")(),X.info("Graph before layout:",JSON.stringify(Wo(e))),X.info("############################################# XXX"),X.info("### Layout ### XXX"),X.info("############################################# XXX"),H2(e),X.info("Graph after layout:",JSON.stringify(Wo(e)));let m=0,{subGraphTitleTotalMargin:g}=Pu(a);return await Promise.all(Aoe(e).map(async function(y){let v=e.node(y);if(X.info("Position XBX => "+y+": ("+v.x,","+v.y,") width: ",v.width," height: ",v.height),v?.clusterNode)v.y+=g,X.info("A tainted cluster node XBX1",y,v.id,v.width,v.height,v.x,v.y,e.parent(y)),Er.get(v.id).node=v,P2(v);else if(e.children(y).length>0){X.info("A pure cluster node XBX1",y,v.id,v.x,v.y,v.width,v.height,e.parent(y)),v.height+=g,e.node(v.parentId);let x=v?.padding/2||0,b=v?.labelBBox?.height||0,T=b-x||0;X.debug("OffsetY",T,"labelHeight",b,"halfPadding",x),await Sm(u,v),Er.get(v.id).node=v}else{let x=e.node(v.parentId);v.y+=g/2,X.info("A regular node XBX1 - using the padding",v.id,"parent",v.parentId,v.width,v.height,v.x,v.y,"offsetY",v.offsetY,"parent",x,x?.offsetY,v),P2(v)}})),e.edges().forEach(function(y){let v=e.edge(y);X.info("Edge "+y.v+" -> "+y.w+": "+JSON.stringify(v),v),v.points.forEach(S=>S.y+=g/2);let x=e.node(y.v);var b=e.node(y.w);let T=yw(h,v,Er,r,x,b,n);gw(v,T)}),e.nodes().forEach(function(y){let v=e.node(y);X.info(y,v.type,v.diff),v.isGroup&&(m=v.diff)}),X.warn("Returning from recursive render XAX",l,m),{elem:l,diff:m}},"recursiveRender"),d$e=o(async(t,e)=>{let r=new cn({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");vw(n,t.markers,t.type,t.diagramId),jte(),Yte(),zte(),Toe(),t.nodes.forEach(a=>{r.setNode(a.id,{...a}),a.parentId&&r.setParent(a.id,a.parentId)}),X.debug("Edges:",t.edges),t.edges.forEach(a=>{if(a.start===a.end){let s=a.start,l=s+"---"+s+"---1",u=s+"---"+s+"---2",h=r.node(s);r.setNode(l,{domId:l,id:l,parentId:h.parentId,labelStyle:"",label:"",padding:0,shape:"labelRect",style:"",width:10,height:10}),r.setParent(l,h.parentId),r.setNode(u,{domId:u,id:u,parentId:h.parentId,labelStyle:"",padding:0,shape:"labelRect",label:"",style:"",width:10,height:10}),r.setParent(u,h.parentId);let f=structuredClone(a),d=structuredClone(a),p=structuredClone(a);f.label="",f.arrowTypeEnd="none",f.id=s+"-cyclic-special-1",d.arrowTypeStart="none",d.arrowTypeEnd="none",d.id=s+"-cyclic-special-mid",p.label="",h.isGroup&&(f.fromCluster=s,p.toCluster=s),p.id=s+"-cyclic-special-2",p.arrowTypeStart="none",r.setEdge(s,l,f,s+"-cyclic-special-0"),r.setEdge(l,u,d,s+"-cyclic-special-1"),r.setEdge(u,s,p,s+"-cyct.length)&&(e=t.length);for(var r=0,n=Array(e);r=t.length?{done:!0}:{done:!1,value:t[n++]}},"n"),e:o(function(u){throw u},"e"),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,s=!0,l=!1;return{s:o(function(){r=r.call(t)},"s"),n:o(function(){var u=r.next();return s=u.done,u},"n"),e:o(function(u){l=!0,a=u},"e"),f:o(function(){try{s||r.return==null||r.return()}finally{if(l)throw a}},"f")}}function sue(t,e,r){return(e=oue(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function y$e(t){if(typeof Symbol<"u"&&t[Symbol.iterator]!=null||t["@@iterator"]!=null)return Array.from(t)}function v$e(t,e){var r=t==null?null:typeof Symbol<"u"&&t[Symbol.iterator]||t["@@iterator"];if(r!=null){var n,i,a,s,l=[],u=!0,h=!1;try{if(a=(r=r.call(t)).next,e===0){if(Object(r)!==r)return;u=!1}else for(;!(u=(n=a.call(r)).done)&&(l.push(n.value),l.length!==e);u=!0);}catch(f){h=!0,i=f}finally{try{if(!u&&r.return!=null&&(s=r.return(),Object(s)!==s))return}finally{if(h)throw i}}return l}}function x$e(){throw new TypeError(`Invalid attempt to destructure non-iterable instance. -In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function b$e(){throw new TypeError(`Invalid attempt to spread non-iterable instance. -In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function _i(t,e){return p$e(t)||v$e(t,e)||cI(t,e)||x$e()}function Xk(t){return m$e(t)||y$e(t)||cI(t)||b$e()}function T$e(t,e){if(typeof t!="object"||!t)return t;var r=t[Symbol.toPrimitive];if(r!==void 0){var n=r.call(t,e);if(typeof n!="object")return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}function oue(t){var e=T$e(t,"string");return typeof e=="symbol"?e:e+""}function $i(t){"@babel/helpers - typeof";return $i=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},$i(t)}function cI(t,e){if(t){if(typeof t=="string")return UM(t,e);var r={}.toString.call(t).slice(8,-1);return r==="Object"&&t.constructor&&(r=t.constructor.name),r==="Map"||r==="Set"?Array.from(t):r==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?UM(t,e):void 0}}function gx(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}function yx(){if(Ioe)return dN;Ioe=1;function t(e){var r=typeof e;return e!=null&&(r=="object"||r=="function")}return o(t,"isObject"),dN=t,dN}function H$e(){if(Ooe)return pN;Ooe=1;var t=typeof Ek=="object"&&Ek&&Ek.Object===Object&&Ek;return pN=t,pN}function cE(){if(Poe)return mN;Poe=1;var t=H$e(),e=typeof self=="object"&&self&&self.Object===Object&&self,r=t||e||Function("return this")();return mN=r,mN}function q$e(){if(Boe)return gN;Boe=1;var t=cE(),e=o(function(){return t.Date.now()},"now");return gN=e,gN}function W$e(){if(Foe)return yN;Foe=1;var t=/\s/;function e(r){for(var n=r.length;n--&&t.test(r.charAt(n)););return n}return o(e,"trimmedEndIndex"),yN=e,yN}function Y$e(){if($oe)return vN;$oe=1;var t=W$e(),e=/^\s+/;function r(n){return n&&n.slice(0,t(n)+1).replace(e,"")}return o(r,"baseTrim"),vN=r,vN}function fI(){if(zoe)return xN;zoe=1;var t=cE(),e=t.Symbol;return xN=e,xN}function X$e(){if(Goe)return bN;Goe=1;var t=fI(),e=Object.prototype,r=e.hasOwnProperty,n=e.toString,i=t?t.toStringTag:void 0;function a(s){var l=r.call(s,i),u=s[i];try{s[i]=void 0;var h=!0}catch{}var f=n.call(s);return h&&(l?s[i]=u:delete s[i]),f}return o(a,"getRawTag"),bN=a,bN}function j$e(){if(Voe)return TN;Voe=1;var t=Object.prototype,e=t.toString;function r(n){return e.call(n)}return o(r,"objectToString"),TN=r,TN}function gue(){if(Uoe)return wN;Uoe=1;var t=fI(),e=X$e(),r=j$e(),n="[object Null]",i="[object Undefined]",a=t?t.toStringTag:void 0;function s(l){return l==null?l===void 0?i:n:a&&a in Object(l)?e(l):r(l)}return o(s,"baseGetTag"),wN=s,wN}function K$e(){if(Hoe)return kN;Hoe=1;function t(e){return e!=null&&typeof e=="object"}return o(t,"isObjectLike"),kN=t,kN}function vx(){if(qoe)return EN;qoe=1;var t=gue(),e=K$e(),r="[object Symbol]";function n(i){return typeof i=="symbol"||e(i)&&t(i)==r}return o(n,"isSymbol"),EN=n,EN}function Q$e(){if(Woe)return SN;Woe=1;var t=Y$e(),e=yx(),r=vx(),n=NaN,i=/^[-+]0x[0-9a-f]+$/i,a=/^0b[01]+$/i,s=/^0o[0-7]+$/i,l=parseInt;function u(h){if(typeof h=="number")return h;if(r(h))return n;if(e(h)){var f=typeof h.valueOf=="function"?h.valueOf():h;h=e(f)?f+"":f}if(typeof h!="string")return h===0?h:+h;h=t(h);var d=a.test(h);return d||s.test(h)?l(h.slice(2),d?2:8):i.test(h)?n:+h}return o(u,"toNumber"),SN=u,SN}function Z$e(){if(Yoe)return CN;Yoe=1;var t=yx(),e=q$e(),r=Q$e(),n="Expected a function",i=Math.max,a=Math.min;function s(l,u,h){var f,d,p,m,g,y,v=0,x=!1,b=!1,T=!0;if(typeof l!="function")throw new TypeError(n);u=r(u)||0,t(h)&&(x=!!h.leading,b="maxWait"in h,p=b?i(r(h.maxWait)||0,u):p,T="trailing"in h?!!h.trailing:T);function S(D){var _=f,O=d;return f=d=void 0,v=D,m=l.apply(O,_),m}o(S,"invokeFunc");function w(D){return v=D,g=setTimeout(C,u),x?S(D):m}o(w,"leadingEdge");function k(D){var _=D-y,O=D-v,M=u-_;return b?a(M,p-O):M}o(k,"remainingWait");function A(D){var _=D-y,O=D-v;return y===void 0||_>=u||_<0||b&&O>=p}o(A,"shouldInvoke");function C(){var D=e();if(A(D))return R(D);g=setTimeout(C,k(D))}o(C,"timerExpired");function R(D){return g=void 0,T&&f?S(D):(f=d=void 0,m)}o(R,"trailingEdge");function I(){g!==void 0&&clearTimeout(g),v=0,f=y=d=g=void 0}o(I,"cancel");function L(){return g===void 0?m:R(e())}o(L,"flush");function E(){var D=e(),_=A(D);if(f=arguments,d=this,y=D,_){if(g===void 0)return w(y);if(b)return clearTimeout(g),g=setTimeout(C,u),S(y)}return g===void 0&&(g=setTimeout(C,u)),m}return o(E,"debounced"),E.cancel=I,E.flush=L,E}return o(s,"debounce"),CN=s,CN}function nze(t,e,r,n,i){var a=i*Math.PI/180,s=Math.cos(a)*(t-r)-Math.sin(a)*(e-n)+r,l=Math.sin(a)*(t-r)+Math.cos(a)*(e-n)+n;return{x:s,y:l}}function aze(t,e,r){if(r===0)return t;var n=(e.x1+e.x2)/2,i=(e.y1+e.y2)/2,a=e.w/e.h,s=1/a,l=nze(t.x,t.y,n,i,r),u=ize(l.x,l.y,n,i,a,s);return{x:u.x,y:u.y}}function gze(){return Zoe||(Zoe=1,(function(t,e){(function(){var r,n,i,a,s,l,u,h,f,d,p,m,g,y,v;i=Math.floor,d=Math.min,n=o(function(x,b){return xb?1:0},"defaultCmp"),f=o(function(x,b,T,S,w){var k;if(T==null&&(T=0),w==null&&(w=n),T<0)throw new Error("lo must be non-negative");for(S==null&&(S=x.length);TI;0<=I?R++:R--)C.push(R);return C}).apply(this).reverse(),A=[],S=0,w=k.length;SL;0<=L?++C:--C)E.push(s(x,T));return E},"nsmallest"),y=o(function(x,b,T,S){var w,k,A;for(S==null&&(S=n),w=x[T];T>b;){if(A=T-1>>1,k=x[A],S(w,k)<0){x[T]=k,T=A;continue}break}return x[T]=w},"_siftdown"),v=o(function(x,b,T){var S,w,k,A,C;for(T==null&&(T=n),w=x.length,C=b,k=x[b],S=2*b+1;S-1}return o(e,"listCacheHas"),tM=e,tM}function cVe(){if($le)return rM;$le=1;var t=mE();function e(r,n){var i=this.__data__,a=t(i,r);return a<0?(++this.size,i.push([r,n])):i[a][1]=n,this}return o(e,"listCacheSet"),rM=e,rM}function uVe(){if(zle)return nM;zle=1;var t=aVe(),e=sVe(),r=oVe(),n=lVe(),i=cVe();function a(s){var l=-1,u=s==null?0:s.length;for(this.clear();++l-1&&n%1==0&&n0;){var f=i.shift();e(f),a.add(f.id()),l&&n(i,a,f)}return t}function Yue(t,e,r){if(r.isParent())for(var n=r._private.children,i=0;i0&&arguments[0]!==void 0?arguments[0]:bUe,e=arguments.length>1?arguments[1]:void 0,r=0;r0?E=_:L=_;while(Math.abs(D)>s&&++O=a?b(I,O):M===0?O:S(I,L,L+h)}o(w,"getTForX");var k=!1;function A(){k=!0,(t!==e||r!==n)&&T()}o(A,"precompute");var C=o(function(L){return k||A(),t===e&&r===n?L:L===0?0:L===1?1:v(w(L),e,n)},"f");C.getControlPoints=function(){return[{x:t,y:e},{x:r,y:n}]};var R="generateBezier("+[t,e,r,n]+")";return C.toString=function(){return R},C}function Dce(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 Lce(t,e){return t.pfValue!=null||t.value!=null?t.pfValue!=null&&(e==null||e.type.units!=="%")?t.pfValue:t.value:t}function jm(t,e,r,n,i){var a=i!=null?i.type:null;r<0?r=0:r>1&&(r=1);var s=Lce(t,i),l=Lce(e,i);if(At(s)&&At(l))return Dce(a,s,l,r,n);if(An(s)&&An(l)){for(var u=[],h=0;h0?(m==="spring"&&g.push(s.duration),s.easingImpl=Vk[m].apply(null,g)):s.easingImpl=Vk[m]}var y=s.easingImpl,v;if(s.duration===0?v=1:v=(r-u)/s.duration,s.applying&&(v=s.progress),v<0?v=0:v>1&&(v=1),s.delay==null){var x=s.startPosition,b=s.position;if(b&&i&&!t.locked()){var T={};X2(x.x,b.x)&&(T.x=jm(x.x,b.x,v,y)),X2(x.y,b.y)&&(T.y=jm(x.y,b.y,v,y)),t.position(T)}var S=s.startPan,w=s.pan,k=a.pan,A=w!=null&&n;A&&(X2(S.x,w.x)&&(k.x=jm(S.x,w.x,v,y)),X2(S.y,w.y)&&(k.y=jm(S.y,w.y,v,y)),t.emit("pan"));var C=s.startZoom,R=s.zoom,I=R!=null&&n;I&&(X2(C,R)&&(a.zoom=ox(a.minZoom,jm(C,R,v,y),a.maxZoom)),t.emit("zoom")),(A||I)&&t.emit("viewport");var L=s.style;if(L&&L.length>0&&i){for(var E=0;E=0;A--){var C=k[A];C()}k.splice(0,k.length)},"callbacks"),b=m.length-1;b>=0;b--){var T=m[b],S=T._private;if(S.stopped){m.splice(b,1),S.hooked=!1,S.playing=!1,S.started=!1,x(S.frames);continue}!S.playing&&!S.applying||(S.playing&&S.applying&&(S.applying=!1),S.started||IUe(f,T,t),MUe(f,T,t,d),S.applying&&(S.applying=!1),x(S.frames),S.step!=null&&S.step(t),T.completed()&&(m.splice(b,1),S.hooked=!1,S.playing=!1,S.started=!1,x(S.completes)),y=!0)}return!d&&m.length===0&&g.length===0&&n.push(f),y}o(i,"stepOne");for(var a=!1,s=0;s0?e.notify("draw",r):e.notify("draw")),r.unmerge(n),e.emit("step")}function hhe(t){this.options=ir({},VUe,UUe,t)}function fhe(t){this.options=ir({},HUe,t)}function dhe(t){this.options=ir({},qUe,t)}function kE(t){this.options=ir({},WUe,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"),l=e.some(function(h){return h.data("id")===a}),u=e.some(function(h){return h.data("id")===s});return!l||!u});this.options.eles=this.options.eles.not(n)}function yhe(t){this.options=ir({},oHe,t)}function _I(t){this.options=ir({},lHe,t)}function vhe(t){this.options=ir({},cHe,t)}function xhe(t){this.options=ir({},uHe,t)}function bhe(t){this.options=t,this.notifications=0}function khe(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 LI(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}:(dHe(t,e,r,n,i),{cx:eI,cy:tI,radius:gp,startX:The,startY:whe,stopX:rI,stopY:nI,startAngle:Ic.ang+Math.PI/2*vp,endAngle:Yo.ang-Math.PI/2*vp,counterClockwise:qk})}function Ehe(t){var e=[];if(t!=null){for(var r=0;r5&&arguments[5]!==void 0?arguments[5]:5,s=Math.min(a,n/2,i/2);t.beginPath(),t.moveTo(e+s,r),t.lineTo(e+n-s,r),t.quadraticCurveTo(e+n,r,e+n,r+s),t.lineTo(e+n,r+i-s),t.quadraticCurveTo(e+n,r+i,e+n-s,r+i),t.lineTo(e+s,r+i),t.quadraticCurveTo(e,r+i,e,r+i-s),t.lineTo(e,r+s),t.quadraticCurveTo(e,r,e+s,r),t.closePath()}function Qce(t,e,r){var n=t.createShader(e);if(t.shaderSource(n,r),t.compileShader(n),!t.getShaderParameter(n,t.COMPILE_STATUS))throw new Error(t.getShaderInfoLog(n));return n}function rqe(t,e,r){var n=Qce(t,t.VERTEX_SHADER,e),i=Qce(t,t.FRAGMENT_SHADER,r),a=t.createProgram();if(t.attachShader(a,n),t.attachShader(a,i),t.linkProgram(a),!t.getProgramParameter(a,t.LINK_STATUS))throw new Error("Could not initialize shaders");return a}function nqe(t,e,r){r===void 0&&(r=e);var n=t.makeOffscreenCanvas(e,r),i=n.context=n.getContext("2d");return n.clear=function(){return i.clearRect(0,0,n.width,n.height)},n.clear(),n}function MI(t){var e=t.pixelRatio,r=t.cy.zoom(),n=t.cy.pan();return{zoom:r*e,pan:{x:n.x*e,y:n.y*e}}}function iqe(t){var e=t.pixelRatio,r=t.cy.zoom();return r*e}function aqe(t,e,r,n,i){var a=n*r+e.x,s=i*r+e.y;return s=Math.round(t.canvasHeight-s),[a,s]}function sqe(t){return t.pstyle("background-fill").value!=="solid"||t.pstyle("background-image").strValue!=="none"?!1:t.pstyle("border-width").value===0||t.pstyle("border-opacity").value===0?!0:t.pstyle("border-style").value==="solid"}function oqe(t,e){if(t.length!==e.length)return!1;for(var r=0;r>0&255)/255,r[1]=(t>>8&255)/255,r[2]=(t>>16&255)/255,r[3]=(t>>24&255)/255,r}function lqe(t){return t[0]+(t[1]<<8)+(t[2]<<16)+(t[3]<<24)}function cqe(t,e){var r=t.createTexture();return r.buffer=function(n){t.bindTexture(t.TEXTURE_2D,r),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_S,t.CLAMP_TO_EDGE),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_T,t.CLAMP_TO_EDGE),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.LINEAR_MIPMAP_NEAREST),t.pixelStorei(t.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!0),t.texImage2D(t.TEXTURE_2D,0,t.RGBA,t.RGBA,t.UNSIGNED_BYTE,n),t.generateMipmap(t.TEXTURE_2D),t.bindTexture(t.TEXTURE_2D,null)},r.deleteTexture=function(){t.deleteTexture(r)},r}function Bhe(t,e){switch(e){case"float":return[1,t.FLOAT,4];case"vec2":return[2,t.FLOAT,4];case"vec3":return[3,t.FLOAT,4];case"vec4":return[4,t.FLOAT,4];case"int":return[1,t.INT,4];case"ivec2":return[2,t.INT,4]}}function Fhe(t,e,r){switch(e){case t.FLOAT:return new Float32Array(r);case t.INT:return new Int32Array(r)}}function uqe(t,e,r,n,i,a){switch(e){case t.FLOAT:return new Float32Array(r.buffer,a*n,i);case t.INT:return new Int32Array(r.buffer,a*n,i)}}function hqe(t,e,r,n){var i=Bhe(t,e),a=_i(i,2),s=a[0],l=a[1],u=Fhe(t,l,n),h=t.createBuffer();return t.bindBuffer(t.ARRAY_BUFFER,h),t.bufferData(t.ARRAY_BUFFER,u,t.STATIC_DRAW),l===t.FLOAT?t.vertexAttribPointer(r,s,l,!1,0,0):l===t.INT&&t.vertexAttribIPointer(r,s,l,0,0),t.enableVertexAttribArray(r),t.bindBuffer(t.ARRAY_BUFFER,null),h}function Mc(t,e,r,n){var i=Bhe(t,r),a=_i(i,3),s=a[0],l=a[1],u=a[2],h=Fhe(t,l,e*s),f=s*u,d=t.createBuffer();t.bindBuffer(t.ARRAY_BUFFER,d),t.bufferData(t.ARRAY_BUFFER,e*f,t.DYNAMIC_DRAW),t.enableVertexAttribArray(n),l===t.FLOAT?t.vertexAttribPointer(n,s,l,!1,f,0):l===t.INT&&t.vertexAttribIPointer(n,s,l,f,0),t.vertexAttribDivisor(n,1),t.bindBuffer(t.ARRAY_BUFFER,null);for(var p=new Array(e),m=0;mNhe?(_qe(t),e.call(t,a)):(Dqe(t),Vhe(t,a,nx.SCREEN)))}}{var r=t.matchCanvasSize;t.matchCanvasSize=function(a){r.call(t,a),t.pickingFrameBuffer.setFramebufferAttachmentSizes(t.canvasWidth,t.canvasHeight),t.pickingFrameBuffer.needsDraw=!0}}t.findNearestElements=function(a,s,l,u){return Oqe(t,a,s)};{var n=t.invalidateCachedZSortedEles;t.invalidateCachedZSortedEles=function(){n.call(t),t.pickingFrameBuffer.needsDraw=!0}}{var i=t.notify;t.notify=function(a,s){i.call(t,a,s),a==="viewport"||a==="bounds"?t.pickingFrameBuffer.needsDraw=!0:a==="background"&&t.drawing.invalidate(s,{type:"node-body"})}}}function _qe(t){var e=t.data.contexts[t.WEBGL];e.clear(e.COLOR_BUFFER_BIT|e.DEPTH_BUFFER_BIT)}function Dqe(t){var e=o(function(n){n.save(),n.setTransform(1,0,0,1,0,0),n.clearRect(0,0,t.canvasWidth,t.canvasHeight),n.restore()},"clear");e(t.data.contexts[t.NODE]),e(t.data.contexts[t.DRAG])}function Lqe(t){var e=t.canvasWidth,r=t.canvasHeight,n=MI(t),i=n.pan,a=n.zoom,s=BM();Yk(s,s,[i.x,i.y]),aI(s,s,[a,a]);var l=BM();mqe(l,e,r);var u=BM();return pqe(u,l,s),u}function Ghe(t,e){var r=t.canvasWidth,n=t.canvasHeight,i=MI(t),a=i.pan,s=i.zoom;e.setTransform(1,0,0,1,0,0),e.clearRect(0,0,r,n),e.translate(a.x,a.y),e.scale(s,s)}function Rqe(t,e){t.drawSelectionRectangle(e,function(r){return Ghe(t,r)})}function Nqe(t){var e=t.data.contexts[t.NODE];e.save(),Ghe(t,e),e.strokeStyle="rgba(0, 0, 0, 0.3)",e.beginPath(),e.moveTo(-1e3,0),e.lineTo(1e3,0),e.stroke(),e.beginPath(),e.moveTo(0,-1e3),e.lineTo(0,1e3),e.stroke(),e.restore()}function Mqe(t){var e=o(function(i,a,s){for(var l=i.atlasManager.getAtlasCollection(a),u=t.data.contexts[t.NODE],h=l.atlases,f=0;f=0&&S.add(A)}return S}function Oqe(t,e,r){var n=Iqe(t,e,r),i=t.getCachedZSortedEles(),a,s,l=qs(n),u;try{for(l.s();!(u=l.n()).done;){var h=u.value,f=i[h];if(!a&&f.isNode()&&(a=f),!s&&f.isEdge()&&(s=f),a&&s)break}}catch(d){l.e(d)}finally{l.f()}return[a,s].filter(Boolean)}function VM(t,e,r){var n=t.drawing;e+=1,r.isNode()?(n.drawNode(r,e,"node-underlay"),n.drawNode(r,e,"node-body"),n.drawTexture(r,e,"label"),n.drawNode(r,e,"node-overlay")):(n.drawEdgeLine(r,e),n.drawEdgeArrow(r,e,"source"),n.drawEdgeArrow(r,e,"target"),n.drawTexture(r,e,"label"),n.drawTexture(r,e,"edge-source-label"),n.drawTexture(r,e,"edge-target-label"))}function Vhe(t,e,r){var n;t.webglDebug&&(n=performance.now());var i=t.drawing,a=0;if(r.screen&&t.data.canvasNeedsRedraw[t.SELECT_BOX]&&Rqe(t,e),t.data.canvasNeedsRedraw[t.NODE]||r.picking){var s=t.data.contexts[t.WEBGL];r.screen?(s.clearColor(0,0,0,0),s.enable(s.BLEND),s.blendFunc(s.ONE,s.ONE_MINUS_SRC_ALPHA)):s.disable(s.BLEND),s.clear(s.COLOR_BUFFER_BIT|s.DEPTH_BUFFER_BIT),s.viewport(0,0,s.canvas.width,s.canvas.height);var l=Lqe(t),u=t.getCachedZSortedEles();if(a=u.length,i.startFrame(l,r),r.screen){for(var h=0;h{"use strict";o(UM,"_arrayLikeToArray");o(p$e,"_arrayWithHoles");o(m$e,"_arrayWithoutHoles");o(Af,"_classCallCheck");o(g$e,"_defineProperties");o(_f,"_createClass");o(qs,"_createForOfIteratorHelper");o(sue,"_defineProperty$1");o(y$e,"_iterableToArray");o(v$e,"_iterableToArrayLimit");o(x$e,"_nonIterableRest");o(b$e,"_nonIterableSpread");o(_i,"_slicedToArray");o(Xk,"_toConsumableArray");o(T$e,"_toPrimitive");o(oue,"_toPropertyKey");o($i,"_typeof");o(cI,"_unsupportedIterableToArray");Bi=typeof window>"u"?null:window,Noe=Bi?Bi.navigator:null;Bi&&Bi.document;w$e=$i(""),lue=$i({}),k$e=$i(function(){}),E$e=typeof HTMLElement>"u"?"undefined":$i(HTMLElement),px=o(function(e){return e&&e.instanceString&&oi(e.instanceString)?e.instanceString():null},"instanceStr"),Jt=o(function(e){return e!=null&&$i(e)==w$e},"string"),oi=o(function(e){return e!=null&&$i(e)===k$e},"fn"),An=o(function(e){return!fo(e)&&(Array.isArray?Array.isArray(e):e!=null&&e instanceof Array)},"array"),Yr=o(function(e){return e!=null&&$i(e)===lue&&!An(e)&&e.constructor===Object},"plainObject"),S$e=o(function(e){return e!=null&&$i(e)===lue},"object"),At=o(function(e){return e!=null&&$i(e)===$i(1)&&!isNaN(e)},"number"),C$e=o(function(e){return At(e)&&Math.floor(e)===e},"integer"),jk=o(function(e){if(E$e!=="undefined")return e!=null&&e instanceof HTMLElement},"htmlElement"),fo=o(function(e){return mx(e)||cue(e)},"elementOrCollection"),mx=o(function(e){return px(e)==="collection"&&e._private.single},"element"),cue=o(function(e){return px(e)==="collection"&&!e._private.single},"collection"),uI=o(function(e){return px(e)==="core"},"core"),uue=o(function(e){return px(e)==="stylesheet"},"stylesheet"),A$e=o(function(e){return px(e)==="event"},"event"),Tf=o(function(e){return e==null?!0:!!(e===""||e.match(/^\s+$/))},"emptyString"),_$e=o(function(e){return typeof HTMLElement>"u"?!1:e instanceof HTMLElement},"domElement"),D$e=o(function(e){return Yr(e)&&At(e.x1)&&At(e.x2)&&At(e.y1)&&At(e.y2)},"boundingBox"),L$e=o(function(e){return S$e(e)&&oi(e.then)},"promise"),R$e=o(function(){return Noe&&Noe.userAgent.match(/msie|trident|edge/i)},"ms"),lg=o(function(e,r){r||(r=o(function(){if(arguments.length===1)return arguments[0];if(arguments.length===0)return"undefined";for(var a=[],s=0;sr?1:0},"ascending"),F$e=o(function(e,r){return-1*fue(e,r)},"descending"),ir=Object.assign!=null?Object.assign.bind(Object):function(t){for(var e=arguments,r=1;r1&&(v-=1),v<1/6?g+(y-g)*6*v:v<1/2?y:v<2/3?g+(y-g)*(2/3-v)*6:g}o(f,"hue2rgb");var d=new RegExp("^"+I$e+"$").exec(e);if(d){if(n=parseInt(d[1]),n<0?n=(360- -1*n%360)%360:n>360&&(n=n%360),n/=360,i=parseFloat(d[2]),i<0||i>100||(i=i/100,a=parseFloat(d[3]),a<0||a>100)||(a=a/100,s=d[4],s!==void 0&&(s=parseFloat(s),s<0||s>1)))return;if(i===0)l=u=h=Math.round(a*255);else{var p=a<.5?a*(1+i):a+i-a*i,m=2*a-p;l=Math.round(255*f(m,p,n+1/3)),u=Math.round(255*f(m,p,n)),h=Math.round(255*f(m,p,n-1/3))}r=[l,u,h,s]}return r},"hsl2tuple"),G$e=o(function(e){var r,n=new RegExp("^"+N$e+"$").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 l=i[1]||i[2]||i[3],u=i[1]&&i[2]&&i[3];if(l&&!u)return;var h=n[4];if(h!==void 0){if(h=parseFloat(h),h<0||h>1)return;r.push(h)}}return r},"rgb2tuple"),V$e=o(function(e){return U$e[e.toLowerCase()]},"colorname2tuple"),due=o(function(e){return(An(e)?e:null)||V$e(e)||$$e(e)||G$e(e)||z$e(e)},"color2tuple"),U$e={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]},pue=o(function(e){for(var r=e.map,n=e.keys,i=n.length,a=0;a1&&arguments[1]!==void 0?arguments[1]:yp,n=r,i;i=e.next(),!i.done;)n=n*vue+i.value|0;return n},"hashIterableInts"),ix=o(function(e){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:yp;return r*vue+e|0},"hashInt"),ax=o(function(e){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:eg;return(r<<5)+r+e|0},"hashIntAlt"),tze=o(function(e,r){return e*2097152+r},"combineHashes"),df=o(function(e){return e[0]*2097152+e[1]},"combineHashesArray"),Sk=o(function(e,r){return[ix(e[0],r[0]),ax(e[1],r[1])]},"hashArrays"),Xoe=o(function(e,r){var n={value:0,done:!1},i=0,a=e.length,s={next:o(function(){return i=0;i--)e[i]===r&&e.splice(i,1)},"removeFromArray"),mI=o(function(e){e.splice(0,e.length)},"clearArray"),hze=o(function(e,r){for(var n=0;n"u"?"undefined":$i(Set))!==dze?Set:pze,uE=o(function(e,r){var n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0;if(e===void 0||r===void 0||!uI(e)){Kn("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"){Kn("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 hg,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,l=e.pan(),u=e.zoom();a.position={x:(s.x-l.x)/u,y:(s.y-l.y)/u}}var h=[];An(r.classes)?h=r.classes:Jt(r.classes)&&(h=r.classes.split(/\s+/));for(var f=0,d=h.length;f0;){var k=b.pop(),A=v(k),C=k.id();if(p[C]=A,A!==1/0)for(var R=k.neighborhood().intersect(g),I=0;I0)for(B.unshift(P);d[G];){var $=d[G];B.unshift($.edge),B.unshift($.node),F=$.node,G=F.id()}return l.spawn(B)},"pathTo")}},"dijkstra")},Tze={kruskal:o(function(e){e=e||function(T){return 1};for(var r=this.byGroup(),n=r.nodes,i=r.edges,a=n.length,s=new Array(a),l=n,u=o(function(S){for(var w=0;w0;){if(w(),A++,S===f){for(var C=[],R=a,I=f,L=x[I];C.unshift(R),L!=null&&C.unshift(L),R=v[I],R!=null;)I=R.id(),L=x[I];return{found:!0,distance:d[S],path:this.spawn(C),steps:A}}m[S]=!0;for(var E=T._private.edges,D=0;DL&&(g[I]=L,b[I]=R,T[I]=w),!a){var E=R*f+C;!a&&g[E]>L&&(g[E]=L,b[E]=C,T[E]=w)}}}for(var D=0;D1&&arguments[1]!==void 0?arguments[1]:s,pe=T(q),Be=[],Ye=pe;;){if(Ye==null)return r.spawn();var He=b(Ye),Le=He.edge,Ie=He.pred;if(Be.unshift(Ye[0]),Ye.same(Ve)&&Be.length>0)break;Le!=null&&Be.unshift(Le),Ye=Ie}return u.spawn(Be)},"pathTo"),k=0;k=0;f--){var d=h[f],p=d[1],m=d[2];(r[p]===l&&r[m]===u||r[p]===u&&r[m]===l)&&h.splice(f,1)}for(var g=0;gi;){var a=Math.floor(Math.random()*r.length);r=Dze(a,e,r),n--}return r},"contractUntil"),Lze={kargerStein:o(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,l=Math.ceil(Math.pow(Math.log(a)/Math.LN2,2)),u=Math.floor(a/_ze);if(a<2){Kn("At least 2 nodes are required for Karger-Stein algorithm");return}for(var h=[],f=0;f1&&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 l=0,u=e.length-1;u>=0;u--){var h=e[u];s?isFinite(h)||(e[u]=-1/0,l++):e.splice(u,1)}a&&e.sort(function(p,m){return p-m});var f=e.length,d=Math.floor(f/2);return f%2!==0?e[d+1+l]:(e[d-1+l]+e[d+l])/2},"median"),Pze=o(function(e){return Math.PI*e/180},"deg2rad"),Ck=o(function(e,r){return Math.atan2(r,e)-Math.PI/2},"getAngleFromDisp"),gI=Math.log2||function(t){return Math.log(t)/Math.log(2)},yI=o(function(e){return e>0?1:e<0?-1:0},"signum"),Tp=o(function(e,r){return Math.sqrt(mp(e,r))},"dist"),mp=o(function(e,r){var n=r.x-e.x,i=r.y-e.y;return n*n+i*i},"sqdist"),Bze=o(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}}},"makeBoundingBox"),$ze=o(function(e){return{x1:e.x1,x2:e.x2,w:e.w,y1:e.y1,y2:e.y2,h:e.h}},"copyBoundingBox"),zze=o(function(e){e.x1=1/0,e.y1=1/0,e.x2=-1/0,e.y2=-1/0,e.w=0,e.h=0},"clearBoundingBox"),Gze=o(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},"updateBoundingBox"),Cue=o(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},"expandBoundingBoxByPoint"),Fk=o(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},"expandBoundingBox"),$k=o(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 l=_i(r,4);n=l[0],i=l[1],a=l[2],s=l[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},"expandBoundingBoxSides"),ele=o(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},"assignBoundingBox"),vI=o(function(e,r){return!(e.x1>r.x2||r.x1>e.x2||e.x2r.y2||r.y1>e.y2)},"boundingBoxesIntersect"),yf=o(function(e,r,n){return e.x1<=r&&r<=e.x2&&e.y1<=n&&n<=e.y2},"inBoundingBox"),tle=o(function(e,r){return yf(e,r.x,r.y)},"pointInBoundingBox"),Aue=o(function(e,r){return yf(e,r.x1,r.y1)&&yf(e,r.x2,r.y2)},"boundingBoxInBoundingBox"),Vze=(LN=Math.hypot)!==null&&LN!==void 0?LN:function(t,e){return Math.sqrt(t*t+e*e)};o(Uze,"inflatePolygon");o(Hze,"miterBox");_ue=o(function(e,r,n,i,a,s,l){var u=arguments.length>7&&arguments[7]!==void 0?arguments[7]:"auto",h=u==="auto"?kf(a,s):u,f=a/2,d=s/2;h=Math.min(h,f,d);var p=h!==f,m=h!==d,g;if(p){var y=n-f+h-l,v=i-d-l,x=n+f-h+l,b=v;if(g=vf(e,r,n,i,y,v,x,b,!1),g.length>0)return g}if(m){var T=n+f+l,S=i-d+h-l,w=T,k=i+d-h+l;if(g=vf(e,r,n,i,T,S,w,k,!1),g.length>0)return g}if(p){var A=n-f+h-l,C=i+d+l,R=n+f-h+l,I=C;if(g=vf(e,r,n,i,A,C,R,I,!1),g.length>0)return g}if(m){var L=n-f-l,E=i-d+h-l,D=L,_=i+d-h+l;if(g=vf(e,r,n,i,L,E,D,_,!1),g.length>0)return g}var O;{var M=n-f+h,P=i-d+h;if(O=Z2(e,r,n,i,M,P,h+l),O.length>0&&O[0]<=M&&O[1]<=P)return[O[0],O[1]]}{var B=n+f-h,F=i-d+h;if(O=Z2(e,r,n,i,B,F,h+l),O.length>0&&O[0]>=B&&O[1]<=F)return[O[0],O[1]]}{var G=n+f-h,$=i+d-h;if(O=Z2(e,r,n,i,G,$,h+l),O.length>0&&O[0]>=G&&O[1]>=$)return[O[0],O[1]]}{var U=n-f+h,j=i+d-h;if(O=Z2(e,r,n,i,U,j,h+l),O.length>0&&O[0]<=U&&O[1]>=j)return[O[0],O[1]]}return[]},"roundRectangleIntersectLine"),qze=o(function(e,r,n,i,a,s,l){var u=l,h=Math.min(n,a),f=Math.max(n,a),d=Math.min(i,s),p=Math.max(i,s);return h-u<=e&&e<=f+u&&d-u<=r&&r<=p+u},"inLineVicinity"),Wze=o(function(e,r,n,i,a,s,l,u,h){var f={x1:Math.min(n,l,a)-h,x2:Math.max(n,l,a)+h,y1:Math.min(i,u,s)-h,y2:Math.max(i,u,s)+h};return!(ef.x2||rf.y2)},"inBezierVicinity"),Yze=o(function(e,r,n,i){n-=i;var a=r*r-4*e*n;if(a<0)return[];var s=Math.sqrt(a),l=2*e,u=(-r+s)/l,h=(-r-s)/l;return[u,h]},"solveQuadratic"),Xze=o(function(e,r,n,i,a){var s=1e-5;e===0&&(e=s),r/=e,n/=e,i/=e;var l,u,h,f,d,p,m,g;if(u=(3*n-r*r)/9,h=-(27*i)+r*(9*n-2*(r*r)),h/=54,l=u*u*u+h*h,a[1]=0,m=r/3,l>0){d=h+Math.sqrt(l),d=d<0?-Math.pow(-d,1/3):Math.pow(d,1/3),p=h-Math.sqrt(l),p=p<0?-Math.pow(-p,1/3):Math.pow(p,1/3),a[0]=-m+d+p,m+=(d+p)/2,a[4]=a[2]=-m,m=Math.sqrt(3)*(-p+d)/2,a[3]=m,a[5]=-m;return}if(a[5]=a[3]=0,l===0){g=h<0?-Math.pow(-h,1/3):Math.pow(h,1/3),a[0]=-m+2*g,a[4]=a[2]=-(g+m);return}u=-u,f=u*u*u,f=Math.acos(h/Math.sqrt(f)),g=2*Math.sqrt(u),a[0]=-m+g*Math.cos(f/3),a[2]=-m+g*Math.cos((f+2*Math.PI)/3),a[4]=-m+g*Math.cos((f+4*Math.PI)/3)},"solveCubic"),jze=o(function(e,r,n,i,a,s,l,u){var h=1*n*n-4*n*a+2*n*l+4*a*a-4*a*l+l*l+i*i-4*i*s+2*i*u+4*s*s-4*s*u+u*u,f=9*n*a-3*n*n-3*n*l-6*a*a+3*a*l+9*i*s-3*i*i-3*i*u-6*s*s+3*s*u,d=3*n*n-6*n*a+n*l-n*e+2*a*a+2*a*e-l*e+3*i*i-6*i*s+i*u-i*r+2*s*s+2*s*r-u*r,p=1*n*a-n*n+n*e-a*e+i*s-i*i+i*r-s*r,m=[];Xze(h,f,d,p,m);for(var g=1e-7,y=[],v=0;v<6;v+=2)Math.abs(m[v+1])=0&&m[v]<=1&&y.push(m[v]);y.push(1),y.push(0);for(var x=-1,b,T,S,w=0;w=0?Sh?(e-a)*(e-a)+(r-s)*(r-s):f-p},"sqdistToFiniteLine"),Hs=o(function(e,r,n){for(var i,a,s,l,u,h=0,f=0;f=e&&e>=s||i<=e&&e<=s)u=(e-i)/(s-i)*(l-a)+a,u>r&&h++;else continue;return h%2!==0},"pointInsidePolygonPoints"),Vu=o(function(e,r,n,i,a,s,l,u,h){var f=new Array(n.length),d;u[0]!=null?(d=Math.atan(u[1]/u[0]),u[0]<0?d=d+Math.PI/2:d=-d-Math.PI/2):d=u;for(var p=Math.cos(-d),m=Math.sin(-d),g=0;g0){var v=Jk(f,-h);y=Zk(v)}else y=f;return Hs(e,r,y)},"pointInsidePolygon"),Qze=o(function(e,r,n,i,a,s,l,u){for(var h=new Array(n.length*2),f=0;f=0&&v<=1&&b.push(v),x>=0&&x<=1&&b.push(x),b.length===0)return[];var T=b[0]*u[0]+e,S=b[0]*u[1]+r;if(b.length>1){if(b[0]==b[1])return[T,S];var w=b[1]*u[0]+e,k=b[1]*u[1]+r;return[T,S,w,k]}else return[T,S]},"intersectLineCircle"),RN=o(function(e,r,n){return r<=e&&e<=n||n<=e&&e<=r?e:e<=r&&r<=n||n<=r&&r<=e?r:n},"midOfThree"),vf=o(function(e,r,n,i,a,s,l,u,h){var f=e-a,d=n-e,p=l-a,m=r-s,g=i-r,y=u-s,v=p*m-y*f,x=d*m-g*f,b=y*d-p*g;if(b!==0){var T=v/b,S=x/b,w=.001,k=0-w,A=1+w;return k<=T&&T<=A&&k<=S&&S<=A?[e+T*d,r+T*g]:h?[e+T*d,r+T*g]:[]}else return v===0||x===0?RN(e,n,l)===l?[l,u]:RN(e,n,a)===a?[a,s]:RN(a,l,n)===n?[n,i]:[]:[]},"finiteLinesIntersect"),Jze=o(function(e,r,n,i,a){var s=[],l=i/2,u=a/2,h=r,f=n;s.push({x:h+l*e[0],y:f+u*e[1]});for(var d=1;d0){var y=Jk(d,-u);m=Zk(y)}else m=d}else m=n;for(var v,x,b,T,S=0;S2){for(var g=[f[0],f[1]],y=Math.pow(g[0]-e,2)+Math.pow(g[1]-r,2),v=1;vf&&(f=S)},"set"),get:o(function(T){return h[T]},"get")},p=0;p0?O=_.edgesTo(D)[0]:O=D.edgesTo(_)[0];var M=i(O);D=D.id(),A[D]>A[L]+M&&(A[D]=A[L]+M,C.nodes.indexOf(D)<0?C.push(D):C.updateItem(D),k[D]=0,w[D]=[]),A[D]==A[L]+M&&(k[D]=k[D]+k[L],w[D].push(L))}else for(var P=0;P0;){for(var $=S.pop(),U=0;U0&&l.push(n[u]);l.length!==0&&a.push(i.collection(l))}return a},"assign"),pGe=o(function(e,r){for(var n=0;n5&&arguments[5]!==void 0?arguments[5]:yGe,l=i,u,h,f=0;f=2?q2(e,r,n,0,sle,vGe):q2(e,r,n,0,ale)},"euclidean"),squaredEuclidean:o(function(e,r,n){return q2(e,r,n,0,sle)},"squaredEuclidean"),manhattan:o(function(e,r,n){return q2(e,r,n,0,ale)},"manhattan"),max:o(function(e,r,n){return q2(e,r,n,-1/0,xGe)},"max")};cg["squared-euclidean"]=cg.squaredEuclidean;cg.squaredeuclidean=cg.squaredEuclidean;o(fE,"clusteringDistance");bGe=xa({k:2,m:2,sensitivityThreshold:1e-4,distance:"euclidean",maxIterations:10,attributes:[],testMode:!1,testCentroids:null}),bI=o(function(e){return bGe(e)},"setOptions"),eE=o(function(e,r,n,i,a){var s=a!=="kMedoids",l=s?function(d){return n[d]}:function(d){return i[d](n)},u=o(function(p){return i[p](r)},"getQ"),h=n,f=r;return fE(e,i.length,l,u,h,f)},"getDist"),MN=o(function(e,r,n){for(var i=n.length,a=new Array(i),s=new Array(i),l=new Array(r),u=null,h=0;hn)return!1}return!0},"haveMatricesConverged"),kGe=o(function(e,r,n){for(var i=0;il&&(l=r[h][f],u=f);a[u].push(e[h])}for(var d=0;d=a.threshold||a.mode==="dendrogram"&&e.length===1)return!1;var g=r[s],y=r[i[s]],v;a.mode==="dendrogram"?v={left:g,right:y,key:g.key}:v={value:g.value.concat(y.value),key:g.key},e[g.index]=v,e.splice(y.index,1),r[g.key]=v;for(var x=0;xn[y.key][b.key]&&(u=n[y.key][b.key])):a.linkage==="max"?(u=n[g.key][b.key],n[g.key][b.key]0&&i.push(a);return i},"findExemplars"),fle=o(function(e,r,n){for(var i=[],a=0;al&&(s=h,l=r[a*e+h])}s>0&&i.push(s)}for(var f=0;fh&&(u=f,h=d)}n[a]=s[u]}return i=fle(e,r,n),i},"assign"),dle=o(function(e){for(var r=this.cy(),n=this.nodes(),i=OGe(e),a={},s=0;s=L?(E=L,L=_,D=O):_>E&&(E=_);for(var M=0;M0?1:0;A[R%i.minIterations*l+U]=j,$+=j}if($>0&&(R>=i.minIterations-1||R==i.maxIterations-1)){for(var te=0,Y=0;Y1||k>1)&&(l=!0),d[T]=[],b.outgoers().forEach(function(C){C.isEdge()&&d[T].push(C.id())})}else p[T]=[void 0,b.target().id()]}):s.forEach(function(b){var T=b.id();if(b.isNode()){var S=b.degree(!0);S%2&&(u?h?l=!0:h=T:u=T),d[T]=[],b.connectedEdges().forEach(function(w){return d[T].push(w.id())})}else p[T]=[b.source().id(),b.target().id()]});var m={found:!1,trail:void 0};if(l)return m;if(h&&u)if(a){if(f&&h!=f)return m;f=h}else{if(f&&h!=f&&u!=f)return m;f||(f=h)}else f||(f=s[0].id());var g=o(function(T){for(var S=T,w=[T],k,A,C;d[S].length;)k=d[S].shift(),A=p[k][0],C=p[k][1],S!=C?(d[C]=d[C].filter(function(R){return R!=k}),S=C):!a&&S!=A&&(d[A]=d[A].filter(function(R){return R!=k}),S=A),w.unshift(k),w.unshift(S);return w},"walk"),y=[],v=[];for(v=g(f);v.length!=1;)d[v[0]].length==0?(y.unshift(s.getElementById(v.shift())),y.unshift(s.getElementById(v.shift()))):v=g(v.shift()).concat(v);y.unshift(s.getElementById(v.shift()));for(var x in d)if(d[x].length)return m;return m.found=!0,m.trail=this.spawn(y,!0),m},"hierholzer")},_k=o(function(){var e=this,r={},n=0,i=0,a=[],s=[],l={},u=o(function(p,m){for(var g=s.length-1,y=[],v=e.spawn();s[g].x!=p||s[g].y!=m;)y.push(s.pop().edge),g--;y.push(s.pop().edge),y.forEach(function(x){var b=x.connectedNodes().intersection(e);v.merge(x),b.forEach(function(T){var S=T.id(),w=T.connectedEdges().intersection(e);v.merge(T),r[S].cutVertex?v.merge(w.filter(function(k){return k.isLoop()})):v.merge(w)})}),a.push(v)},"buildComponent"),h=o(function(p,m,g){p===g&&(i+=1),r[m]={id:n,low:n++,cutVertex:!1};var y=e.getElementById(m).connectedEdges().intersection(e);if(y.size()===0)a.push(e.spawn(e.getElementById(m)));else{var v,x,b,T;y.forEach(function(S){v=S.source().id(),x=S.target().id(),b=v===m?x:v,b!==g&&(T=S.id(),l[T]||(l[T]=!0,s.push({x:m,y:b,edge:S})),b in r?r[m].low=Math.min(r[m].low,r[b].id):(h(p,b,m),r[m].low=Math.min(r[m].low,r[b].low),r[m].id<=r[b].low&&(r[m].cutVertex=!0,u(m,b))))})}},"biconnectedSearch");e.forEach(function(d){if(d.isNode()){var p=d.id();p in r||(i=0,h(p,p),r[p].cutVertex=i>1)}});var f=Object.keys(r).filter(function(d){return r[d].cutVertex}).map(function(d){return e.getElementById(d)});return{cut:e.spawn(f),components:a}},"hopcroftTarjanBiconnected"),UGe={hopcroftTarjanBiconnected:_k,htbc:_k,htb:_k,hopcroftTarjanBiconnectedComponents:_k},Dk=o(function(){var e=this,r={},n=0,i=[],a=[],s=e.spawn(e),l=o(function(h){a.push(h),r[h]={index:n,low:n++,explored:!1};var f=e.getElementById(h).connectedEdges().intersection(e);if(f.forEach(function(y){var v=y.target().id();v!==h&&(v in r||l(v),r[v].explored||(r[h].low=Math.min(r[h].low,r[v].low)))}),r[h].index===r[h].low){for(var d=e.spawn();;){var p=a.pop();if(d.merge(e.getElementById(p)),r[p].low=r[h].index,r[p].explored=!0,p===h)break}var m=d.edgesWith(d),g=d.merge(m);i.push(g),s=s.difference(g)}},"stronglyConnectedSearch");return e.forEach(function(u){if(u.isNode()){var h=u.id();h in r||l(h)}}),{cut:s,components:i}},"tarjanStronglyConnected"),HGe={tarjanStronglyConnected:Dk,tsc:Dk,tscc:Dk,tarjanStronglyConnectedComponents:Dk},Oue={};[sx,bze,Tze,kze,Sze,Aze,Lze,nGe,ag,sg,WM,gGe,DGe,MGe,zGe,VGe,UGe,HGe].forEach(function(t){ir(Oue,t)});Pue=0,Bue=1,Fue=2,Il=o(function(e){if(!(this instanceof Il))return new Il(e);this.id="Thenable/1.0.7",this.state=Pue,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))},"api");Il.prototype={fulfill:o(function(e){return ple(this,Bue,"fulfillValue",e)},"fulfill"),reject:o(function(e){return ple(this,Fue,"rejectReason",e)},"reject"),then:o(function(e,r){var n=this,i=new Il;return n.onFulfilled.push(gle(e,i,"fulfill")),n.onRejected.push(gle(r,i,"reject")),$ue(n),i.proxy},"then")};ple=o(function(e,r,n,i){return e.state===Pue&&(e.state=r,e[n]=i,$ue(e)),e},"deliver"),$ue=o(function(e){e.state===Bue?mle(e,"onFulfilled",e.fulfillValue):e.state===Fue&&mle(e,"onRejected",e.rejectReason)},"execute"),mle=o(function(e,r,n){if(e[r].length!==0){var i=e[r];e[r]=[];var a=o(function(){for(var l=0;l0},"animatedImpl")},"animated"),clearQueue:o(function(){return o(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},"classes"),addClass:o(function(e){return this.toggleClass(e,!0)},"addClass"),hasClass:o(function(e){var r=this[0];return r!=null&&r._private.classes.has(e)},"hasClass"),toggleClass:o(function(e,r){An(e)||(e=e.match(/\S+/g)||[]);for(var n=this,i=r===void 0,a=[],s=0,l=n.length;s0&&this.spawn(a).updateStyle().emit("class"),n},"toggleClass"),removeClass:o(function(e){return this.toggleClass(e,!1)},"removeClass"),flashClass:o(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},"flashClass")};zk.className=zk.classNames=zk.classes;Wr={metaChar:"[\\!\\\"\\#\\$\\%\\&\\'\\(\\)\\*\\+\\,\\.\\/\\:\\;\\<\\=\\>\\?\\@\\[\\]\\^\\`\\{\\|\\}\\~]",comparatorOp:"=|\\!=|>|>=|<|<=|\\$=|\\^=|\\*=",boolOp:"\\?|\\!|\\^",string:`"(?:\\\\"|[^"])*"|'(?:\\\\'|[^'])*'`,number:Fi,meta:"degree|indegree|outdegree",separator:"\\s*,\\s*",descendant:"\\s+",child:"\\s+>\\s+",subject:"\\$",group:"node|edge|\\*",directedEdge:"\\s+->\\s+",undirectedEdge:"\\s+<->\\s+"};Wr.variable="(?:[\\w-.]|(?:\\\\"+Wr.metaChar+"))+";Wr.className="(?:[\\w-]|(?:\\\\"+Wr.metaChar+"))+";Wr.value=Wr.string+"|"+Wr.number;Wr.id=Wr.variable;(function(){var t,e,r;for(t=Wr.comparatorOp.split("|"),r=0;r=0)&&e!=="="&&(Wr.comparatorOp+="|\\!"+e)})();xn=o(function(){return{checks:[]}},"newQuery"),zt={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},KM=[{selector:":selected",matches:o(function(e){return e.selected()},"matches")},{selector:":unselected",matches:o(function(e){return!e.selected()},"matches")},{selector:":selectable",matches:o(function(e){return e.selectable()},"matches")},{selector:":unselectable",matches:o(function(e){return!e.selectable()},"matches")},{selector:":locked",matches:o(function(e){return e.locked()},"matches")},{selector:":unlocked",matches:o(function(e){return!e.locked()},"matches")},{selector:":visible",matches:o(function(e){return e.visible()},"matches")},{selector:":hidden",matches:o(function(e){return!e.visible()},"matches")},{selector:":transparent",matches:o(function(e){return e.transparent()},"matches")},{selector:":grabbed",matches:o(function(e){return e.grabbed()},"matches")},{selector:":free",matches:o(function(e){return!e.grabbed()},"matches")},{selector:":removed",matches:o(function(e){return e.removed()},"matches")},{selector:":inside",matches:o(function(e){return!e.removed()},"matches")},{selector:":grabbable",matches:o(function(e){return e.grabbable()},"matches")},{selector:":ungrabbable",matches:o(function(e){return!e.grabbable()},"matches")},{selector:":animated",matches:o(function(e){return e.animated()},"matches")},{selector:":unanimated",matches:o(function(e){return!e.animated()},"matches")},{selector:":parent",matches:o(function(e){return e.isParent()},"matches")},{selector:":childless",matches:o(function(e){return e.isChildless()},"matches")},{selector:":child",matches:o(function(e){return e.isChild()},"matches")},{selector:":orphan",matches:o(function(e){return e.isOrphan()},"matches")},{selector:":nonorphan",matches:o(function(e){return e.isChild()},"matches")},{selector:":compound",matches:o(function(e){return e.isNode()?e.isParent():e.source().isParent()||e.target().isParent()},"matches")},{selector:":loop",matches:o(function(e){return e.isLoop()},"matches")},{selector:":simple",matches:o(function(e){return e.isSimple()},"matches")},{selector:":active",matches:o(function(e){return e.active()},"matches")},{selector:":inactive",matches:o(function(e){return!e.active()},"matches")},{selector:":backgrounding",matches:o(function(e){return e.backgrounding()},"matches")},{selector:":nonbackgrounding",matches:o(function(e){return!e.backgrounding()},"matches")}].sort(function(t,e){return F$e(t.selector,e.selector)}),GVe=(function(){for(var t={},e,r=0;r0&&f.edgeCount>0)return hn("The selector `"+e+"` is invalid because it uses both a compound selector and an edge selector"),!1;if(f.edgeCount>1)return hn("The selector `"+e+"` is invalid because it uses multiple edge selectors"),!1;f.edgeCount===1&&hn("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},"parse"),YVe=o(function(){if(this.toStringCache!=null)return this.toStringCache;for(var e=o(function(f){return f??""},"clean"),r=o(function(f){return Jt(f)?'"'+f+'"':e(f)},"cleanVal"),n=o(function(f){return" "+f+" "},"space"),i=o(function(f,d){var p=f.type,m=f.value;switch(p){case zt.GROUP:{var g=e(m);return g.substring(0,g.length-1)}case zt.DATA_COMPARE:{var y=f.field,v=f.operator;return"["+y+n(e(v))+r(m)+"]"}case zt.DATA_BOOL:{var x=f.operator,b=f.field;return"["+e(x)+b+"]"}case zt.DATA_EXIST:{var T=f.field;return"["+T+"]"}case zt.META_COMPARE:{var S=f.operator,w=f.field;return"[["+w+n(e(S))+r(m)+"]]"}case zt.STATE:return m;case zt.ID:return"#"+m;case zt.CLASS:return"."+m;case zt.PARENT:case zt.CHILD:return a(f.parent,d)+n(">")+a(f.child,d);case zt.ANCESTOR:case zt.DESCENDANT:return a(f.ancestor,d)+" "+a(f.descendant,d);case zt.COMPOUND_SPLIT:{var k=a(f.left,d),A=a(f.subject,d),C=a(f.right,d);return k+(k.length>0?" ":"")+A+C}case zt.TRUE:return""}},"checkToString"),a=o(function(f,d){return f.checks.reduce(function(p,m,g){return p+(d===f&&g===0?"$":"")+i(m,d)},"")},"queryToString"),s="",l=0;l1&&l=0&&(r=r.replace("!",""),d=!0),r.indexOf("@")>=0&&(r=r.replace("@",""),f=!0),(a||l||f)&&(u=!a&&!s?"":""+e,h=""+n),f&&(e=u=u.toLowerCase(),n=h=h.toLowerCase()),r){case"*=":i=u.indexOf(h)>=0;break;case"$=":i=u.indexOf(h,u.length-h.length)>=0;break;case"^=":i=u.indexOf(h)===0;break;case"=":i=e===n;break;case">":p=!0,i=e>n;break;case">=":p=!0,i=e>=n;break;case"<":p=!0,i=e1&&arguments[1]!==void 0?arguments[1]:!0;return EI(this,t,e,Yue)};o(Xue,"addParent");ug.forEachUp=function(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;return EI(this,t,e,Xue)};o(tUe,"addParentAndChildren");ug.forEachUpAndDown=function(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;return EI(this,t,e,tUe)};ug.ancestors=ug.parents;cx=jue={data:un.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:un.removeData({field:"data",event:"data",triggerFnName:"trigger",triggerEvent:!0,immutableKeys:{id:!0,source:!0,target:!0,parent:!0},updateStyle:!0}),scratch:un.data({field:"scratch",bindingEvent:"scratch",allowBinding:!0,allowSetting:!0,settingEvent:"scratch",settingTriggersEvent:!0,triggerFnName:"trigger",allowGetting:!0,updateStyle:!0}),removeScratch:un.removeData({field:"scratch",event:"scratch",triggerFnName:"trigger",triggerEvent:!0,updateStyle:!0}),rscratch:un.data({field:"rscratch",allowBinding:!1,allowSetting:!0,settingTriggersEvent:!1,allowGetting:!0}),removeRscratch:un.removeData({field:"rscratch",triggerEvent:!1}),id:o(function(){var e=this[0];if(e)return e._private.data.id},"id")};cx.attr=cx.data;cx.removeAttr=cx.removeData;rUe=jue,yE={};o(RM,"defineDegreeFunction");ir(yE,{degree:RM(function(t,e){return e.source().same(e.target())?2:1}),indegree:RM(function(t,e){return e.target().same(t)?1:0}),outdegree:RM(function(t,e){return e.source().same(t)?1:0})});o(Xm,"defineDegreeBoundsFunction");ir(yE,{minDegree:Xm("degree",function(t,e){return te}),minIndegree:Xm("indegree",function(t,e){return te}),minOutdegree:Xm("outdegree",function(t,e){return te})});ir(yE,{totalDegree:o(function(e){for(var r=0,n=this.nodes(),i=0;i0,p=d;d&&(f=f[0]);var m=p?f.position():{x:0,y:0};r!==void 0?h.position(e,r+m[e]):a!==void 0&&h.position({x:a.x+m.x,y:a.y+m.y})}else{var g=n.position(),y=l?n.parent():null,v=y&&y.length>0,x=v;v&&(y=y[0]);var b=x?y.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},"relativePosition")};Ml.modelPosition=Ml.point=Ml.position;Ml.modelPositions=Ml.points=Ml.positions;Ml.renderedPoint=Ml.renderedPosition;Ml.relativePoint=Ml.relativePosition;nUe=Kue;og=Df={};Df.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,l=e.y1*n+i.y,u=e.y2*n+i.y;return{x1:a,x2:s,y1:l,y2:u,w:s-a,h:u-l}};Df.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)};Df.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 l=s._private,u=s.children(),h=s.pstyle("compound-sizing-wrt-labels").value==="include",f={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")}},d=u.boundingBox({includeLabels:h,includeOverlays:!1,useCache:!1}),p=l.position;(d.w===0||d.h===0)&&(d={w:s.pstyle("width").pfValue,h:s.pstyle("height").pfValue},d.x1=p.x-d.w/2,d.x2=p.x+d.w/2,d.y1=p.y-d.h/2,d.y2=p.y+d.h/2);function m(R,I,L){var E=0,D=0,_=I+L;return R>0&&_>0&&(E=I/_*R,D=L/_*R),{biasDiff:E,biasComplementDiff:D}}o(m,"computeBiasValues");function g(R,I,L,E){if(L.units==="%")switch(E){case"width":return R>0?L.pfValue*R:0;case"height":return I>0?L.pfValue*I:0;case"average":return R>0&&I>0?L.pfValue*(R+I)/2:0;case"min":return R>0&&I>0?R>I?L.pfValue*I:L.pfValue*R:0;case"max":return R>0&&I>0?R>I?L.pfValue*R:L.pfValue*I:0;default:return 0}else return L.units==="px"?L.pfValue:0}o(g,"computePaddingValues");var y=f.width.left.value;f.width.left.units==="px"&&f.width.val>0&&(y=y*100/f.width.val);var v=f.width.right.value;f.width.right.units==="px"&&f.width.val>0&&(v=v*100/f.width.val);var x=f.height.top.value;f.height.top.units==="px"&&f.height.val>0&&(x=x*100/f.height.val);var b=f.height.bottom.value;f.height.bottom.units==="px"&&f.height.val>0&&(b=b*100/f.height.val);var T=m(f.width.val-d.w,y,v),S=T.biasDiff,w=T.biasComplementDiff,k=m(f.height.val-d.h,x,b),A=k.biasDiff,C=k.biasComplementDiff;l.autoPadding=g(d.w,d.h,s.pstyle("padding"),s.pstyle("padding-relative-to").value),l.autoWidth=Math.max(d.w,f.width.val),p.x=(-S+d.x1+d.x2+w)/2,l.autoHeight=Math.max(d.h,f.height.val),p.y=(-A+d.y1+d.y2+C)/2}o(r,"update");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)},"updateBounds"),mf=o(function(e,r){return r==null?e:Nl(e,r.x1,r.y1,r.x2,r.y2)},"updateBoundsFromBox"),W2=o(function(e,r,n){return Us(e,r,n)},"prefixedProperty"),Lk=o(function(e,r,n){if(!r.cy().headless()){var i=r._private,a=i.rstyle,s=a.arrowWidth/2,l=r.pstyle(n+"-arrow-shape").value,u,h;if(l!=="none"){n==="source"?(u=a.srcX,h=a.srcY):n==="target"?(u=a.tgtX,h=a.tgtY):(u=a.midX,h=a.midY);var f=i.arrowBounds=i.arrowBounds||{},d=f[n]=f[n]||{};d.x1=u-s,d.y1=h-s,d.x2=u+s,d.y2=h+s,d.w=d.x2-d.x1,d.h=d.y2-d.y1,Fk(d,1),Nl(e,d.x1,d.y1,d.x2,d.y2)}}},"updateBoundsFromArrow"),NM=o(function(e,r,n){if(!r.cy().headless()){var i;n?i=n+"-":i="";var a=r._private,s=a.rstyle,l=r.pstyle(i+"label").strValue;if(l){var u=r.pstyle("text-halign"),h=r.pstyle("text-valign"),f=W2(s,"labelWidth",n),d=W2(s,"labelHeight",n),p=W2(s,"labelX",n),m=W2(s,"labelY",n),g=r.pstyle(i+"text-margin-x").pfValue,y=r.pstyle(i+"text-margin-y").pfValue,v=r.isEdge(),x=r.pstyle(i+"text-rotation"),b=r.pstyle("text-outline-width").pfValue,T=r.pstyle("text-border-width").pfValue,S=T/2,w=r.pstyle("text-background-padding").pfValue,k=2,A=d,C=f,R=C/2,I=A/2,L,E,D,_;if(v)L=p-R,E=p+R,D=m-I,_=m+I;else{switch(u.value){case"left":L=p-C,E=p;break;case"center":L=p-R,E=p+R;break;case"right":L=p,E=p+C;break}switch(h.value){case"top":D=m-A,_=m;break;case"center":D=m-I,_=m+I;break;case"bottom":D=m,_=m+A;break}}var O=g-Math.max(b,S)-w-k,M=g+Math.max(b,S)+w+k,P=y-Math.max(b,S)-w-k,B=y+Math.max(b,S)+w+k;L+=O,E+=M,D+=P,_+=B;var F=n||"main",G=a.labelBounds,$=G[F]=G[F]||{};$.x1=L,$.y1=D,$.x2=E,$.y2=_,$.w=E-L,$.h=_-D,$.leftPad=O,$.rightPad=M,$.topPad=P,$.botPad=B;var U=v&&x.strValue==="autorotate",j=x.pfValue!=null&&x.pfValue!==0;if(U||j){var te=U?W2(a.rstyle,"labelAngle",n):x.pfValue,Y=Math.cos(te),oe=Math.sin(te),J=(L+E)/2,ue=(D+_)/2;if(!v){switch(u.value){case"left":J=E;break;case"right":J=L;break}switch(h.value){case"top":ue=_;break;case"bottom":ue=D;break}}var re=o(function(Te,q){return Te=Te-J,q=q-ue,{x:Te*Y-q*oe+J,y:Te*oe+q*Y+ue}},"rotate"),ee=re(L,D),Z=re(L,_),K=re(E,D),ae=re(E,_);L=Math.min(ee.x,Z.x,K.x,ae.x),E=Math.max(ee.x,Z.x,K.x,ae.x),D=Math.min(ee.y,Z.y,K.y,ae.y),_=Math.max(ee.y,Z.y,K.y,ae.y)}var Q=F+"Rot",de=G[Q]=G[Q]||{};de.x1=L,de.y1=D,de.x2=E,de.y2=_,de.w=E-L,de.h=_-D,Nl(e,L,D,E,_),Nl(a.labelBounds.all,L,D,E,_)}return e}},"updateBoundsFromLabel"),mce=o(function(e,r){if(!r.cy().headless()){var n=r.pstyle("outline-opacity").value,i=r.pstyle("outline-width").value,a=r.pstyle("outline-offset").value,s=i+a;Zue(e,r,n,s,"outside",s/2)}},"updateBoundsFromOutline"),Zue=o(function(e,r,n,i,a,s){if(!(n===0||i<=0||a==="inside")){var l=r.cy(),u=r.pstyle("shape").value,h=l.renderer().nodeShapes[u],f=r.position(),d=f.x,p=f.y,m=r.width(),g=r.height();if(h.hasMiterBounds){a==="center"&&(i/=2);var y=h.miterBounds(d,p,m,g,i);mf(e,y)}else s!=null&&s>0&&$k(e,[s,s,s,s])}},"updateBoundsFromMiter"),iUe=o(function(e,r){if(!r.cy().headless()){var n=r.pstyle("border-opacity").value,i=r.pstyle("border-width").pfValue,a=r.pstyle("border-position").value;Zue(e,r,n,i,a)}},"updateBoundsFromMiterBorder"),aUe=o(function(e,r){var n=e._private.cy,i=n.styleEnabled(),a=n.headless(),s=cs(),l=e._private,u=e.isNode(),h=e.isEdge(),f,d,p,m,g,y,v=l.rstyle,x=u&&i?e.pstyle("bounds-expansion").pfValue:[0],b=o(function(ne){return ne.pstyle("display").value!=="none"},"isDisplayed"),T=!i||b(e)&&(!h||b(e.source())&&b(e.target()));if(T){var S=0,w=0;i&&r.includeOverlays&&(S=e.pstyle("overlay-opacity").value,S!==0&&(w=e.pstyle("overlay-padding").value));var k=0,A=0;i&&r.includeUnderlays&&(k=e.pstyle("underlay-opacity").value,k!==0&&(A=e.pstyle("underlay-padding").value));var C=Math.max(w,A),R=0,I=0;if(i&&(R=e.pstyle("width").pfValue,I=R/2),u&&r.includeNodes){var L=e.position();g=L.x,y=L.y;var E=e.outerWidth(),D=E/2,_=e.outerHeight(),O=_/2;f=g-D,d=g+D,p=y-O,m=y+O,Nl(s,f,p,d,m),i&&mce(s,e),i&&r.includeOutlines&&!a&&mce(s,e),i&&iUe(s,e)}else if(h&&r.includeEdges)if(i&&!a){var M=e.pstyle("curve-style").strValue;if(f=Math.min(v.srcX,v.midX,v.tgtX),d=Math.max(v.srcX,v.midX,v.tgtX),p=Math.min(v.srcY,v.midY,v.tgtY),m=Math.max(v.srcY,v.midY,v.tgtY),f-=I,d+=I,p-=I,m+=I,Nl(s,f,p,d,m),M==="haystack"){var P=v.haystackPts;if(P&&P.length===2){if(f=P[0].x,p=P[0].y,d=P[1].x,m=P[1].y,f>d){var B=f;f=d,d=B}if(p>m){var F=p;p=m,m=F}Nl(s,f-I,p-I,d+I,m+I)}}else if(M==="bezier"||M==="unbundled-bezier"||gf(M,"segments")||gf(M,"taxi")){var G;switch(M){case"bezier":case"unbundled-bezier":G=v.bezierPts;break;case"segments":case"taxi":case"round-segments":case"round-taxi":G=v.linePts;break}if(G!=null)for(var $=0;$d){var J=f;f=d,d=J}if(p>m){var ue=p;p=m,m=ue}f-=I,d+=I,p-=I,m+=I,Nl(s,f,p,d,m)}if(i&&r.includeEdges&&h&&(Lk(s,e,"mid-source"),Lk(s,e,"mid-target"),Lk(s,e,"source"),Lk(s,e,"target")),i){var re=e.pstyle("ghost").value==="yes";if(re){var ee=e.pstyle("ghost-offset-x").pfValue,Z=e.pstyle("ghost-offset-y").pfValue;Nl(s,s.x1+ee,s.y1+Z,s.x2+ee,s.y2+Z)}}var K=l.bodyBounds=l.bodyBounds||{};ele(K,s),$k(K,x),Fk(K,1),i&&(f=s.x1,d=s.x2,p=s.y1,m=s.y2,Nl(s,f-C,p-C,d+C,m+C));var ae=l.overlayBounds=l.overlayBounds||{};ele(ae,s),$k(ae,x),Fk(ae,1);var Q=l.labelBounds=l.labelBounds||{};Q.all!=null?zze(Q.all):Q.all=cs(),i&&r.includeLabels&&(r.includeMainLabels&&NM(s,e,null),h&&(r.includeSourceLabels&&NM(s,e,"source"),r.includeTargetLabels&&NM(s,e,"target")))}return s.x1=Xo(s.x1),s.y1=Xo(s.y1),s.x2=Xo(s.x2),s.y2=Xo(s.y2),s.w=Xo(s.x2-s.x1),s.h=Xo(s.y2-s.y1),s.w>0&&s.h>0&&T&&($k(s,x),Fk(s,1)),s},"boundingBoxImpl"),Jue=o(function(e){var r=0,n=o(function(s){return(s?1:0)<=0;l--)s(l);return this};Cf.removeAllListeners=function(){return this.removeListener("*")};Cf.emit=Cf.trigger=function(t,e,r){var n=this.listeners,i=n.length;return this.emitting++,An(e)||(e=[e]),TUe(this,function(a,s){r!=null&&(n=[{event:s.event,type:s.type,namespace:s.namespace,callback:r}],i=n.length);for(var l=o(function(){var f=n[u];if(f.type===s.type&&(!f.namespace||f.namespace===s.namespace||f.namespace===xUe)&&a.eventMatches(a.context,f,s)){var d=[s];e!=null&&hze(d,e),a.beforeEmit(a.context,f,s),f.conf&&f.conf.one&&(a.listeners=a.listeners.filter(function(g){return g!==f}));var p=a.callbackContext(a.context,f,s),m=f.callback.apply(p,d);a.afterEmit(a.context,f,s),m===!1&&(s.stopPropagation(),s.preventDefault())}},"_loop2"),u=0;u1&&!s){var l=this.length-1,u=this[l],h=u._private.data.id;this[l]=void 0,this[e]=u,a.set(h,{ele:u,index:e})}return this.length--,this},"unmergeAt"),unmergeOne:o(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},"unmergeOne"),unmerge:o(function(e){var r=this._private.cy;if(!e)return this;if(e&&Jt(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},"unmergeBy"),map:o(function(e,r){for(var n=[],i=this,a=0;an&&(n=u,i=l)}return{value:n,ele:i}},"max"),min:o(function(e,r){for(var n=1/0,i,a=this,s=0;s=0&&a"u"?"undefined":$i(Symbol))!=e&&$i(Symbol.iterator)!=e;r&&(tE[Symbol.iterator]=function(){var n=this,i={value:void 0,done:!1},a=0,s=this.length;return sue({next:o(function(){return a1&&arguments[1]!==void 0?arguments[1]:!0,n=this[0],i=n.cy();if(i.styleEnabled()&&n){n._private.styleDirty&&(n._private.styleDirty=!1,i.style().apply(n));var a=n._private.style[e];return a??(r?i.style().getDefaultProperty(e):null)}},"parsedStyle"),numericStyle:o(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}},"numericStyle"),numericStyleUnits:o(function(e){var r=this[0];if(r.cy().styleEnabled()&&r)return r.pstyle(e).units},"numericStyleUnits"),renderedStyle:o(function(e){var r=this.cy();if(!r.styleEnabled())return this;var n=this[0];if(n)return r.style().getRenderedStyle(n,e)},"renderedStyle"),style:o(function(e,r){var n=this.cy();if(!n.styleEnabled())return this;var i=!1,a=n.style();if(Yr(e)){var s=e;a.applyBypass(this,s,i),this.emitAndNotify("style")}else if(Jt(e))if(r===void 0){var l=this[0];return l?a.getStylePropertyValue(l,e):void 0}else a.applyBypass(this,e,r,i),this.emitAndNotify("style");else if(e===void 0){var u=this[0];return u?a.getRawStyle(u):void 0}return this},"style"),removeStyle:o(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(f[0]),e.push(l[0])}return this.spawn(e,!0).filter(t)},"neighborhood"),closedNeighborhood:o(function(e){return this.neighborhood().add(this).filter(e)},"closedNeighborhood"),openNeighborhood:o(function(e){return this.neighborhood(e)},"openNeighborhood")});Ba.neighbourhood=Ba.neighborhood;Ba.closedNeighbourhood=Ba.closedNeighborhood;Ba.openNeighbourhood=Ba.openNeighborhood;ir(Ba,{source:jo(o(function(e){var r=this[0],n;return r&&(n=r._private.source||r.cy().collection()),n&&e?n.filter(e):n},"sourceImpl"),"source"),target:jo(o(function(e){var r=this[0],n;return r&&(n=r._private.target||r.cy().collection()),n&&e?n.filter(e):n},"targetImpl"),"target"),sources:Cce({attr:"source"}),targets:Cce({attr:"target"})});o(Cce,"defineSourceFunction");ir(Ba,{edgesWith:jo(Ace(),"edgesWith"),edgesTo:jo(Ace({thisIsSrc:!0}),"edgesTo")});o(Ace,"defineEdgesWithFunction");ir(Ba,{connectedEdges:jo(function(t){for(var e=[],r=this,n=0;n0);return s},"components"),component:o(function(){var e=this[0];return e.cy().mutableElements().components(e)[0]},"component")});Ba.componentsOf=Ba.components;va=o(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){Kn("A collection must have a reference to the core");return}var a=new zu,s=!1;if(!r)r=[];else if(r.length>0&&Yr(r[0])&&!mx(r[0])){s=!0;for(var l=[],u=new hg,h=0,f=r.length;h0&&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=[],l,u=0,h=r.length;u0){for(var F=l.length===r.length?r:new va(n,l),G=0;G0&&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(_){for(var O=_._private.edges,M=0;M0&&(t?L.emitAndNotify("remove"):e&&L.emit("remove"));for(var E=0;Ef&&Math.abs(g.v)>f;);return p?function(y){return u[y*(u.length-1)|0]}:h},"springRK4Factory")})(),In=o(function(e,r,n,i){var a=RUe(e,r,n,i);return function(s,l,u){return s+(l-s)*a(u)}},"cubicBezier"),Vk={linear:o(function(e,r,n){return e+(r-e)*n},"linear"),ease:In(.25,.1,.25,1),"ease-in":In(.42,0,1,1),"ease-out":In(0,0,.58,1),"ease-in-out":In(.42,0,.58,1),"ease-in-sine":In(.47,0,.745,.715),"ease-out-sine":In(.39,.575,.565,1),"ease-in-out-sine":In(.445,.05,.55,.95),"ease-in-quad":In(.55,.085,.68,.53),"ease-out-quad":In(.25,.46,.45,.94),"ease-in-out-quad":In(.455,.03,.515,.955),"ease-in-cubic":In(.55,.055,.675,.19),"ease-out-cubic":In(.215,.61,.355,1),"ease-in-out-cubic":In(.645,.045,.355,1),"ease-in-quart":In(.895,.03,.685,.22),"ease-out-quart":In(.165,.84,.44,1),"ease-in-out-quart":In(.77,0,.175,1),"ease-in-quint":In(.755,.05,.855,.06),"ease-out-quint":In(.23,1,.32,1),"ease-in-out-quint":In(.86,0,.07,1),"ease-in-expo":In(.95,.05,.795,.035),"ease-out-expo":In(.19,1,.22,1),"ease-in-out-expo":In(1,0,0,1),"ease-in-circ":In(.6,.04,.98,.335),"ease-out-circ":In(.075,.82,.165,1),"ease-in-out-circ":In(.785,.135,.15,.86),spring:o(function(e,r,n){if(n===0)return Vk.linear;var i=NUe(e,r,n);return function(a,s,l){return a+(s-a)*i(l)}},"spring"),"cubic-bezier":In};o(Dce,"getEasedValue");o(Lce,"getValue");o(jm,"ease");o(MUe,"step$1");o(X2,"valid");o(IUe,"startAnimation");o(Rce,"stepAll");OUe={animate:un.animate(),animation:un.animation(),animated:un.animated(),clearQueue:un.clearQueue(),delay:un.delay(),delayAnimation:un.delayAnimation(),stop:un.stop(),addToAnimationPool:o(function(e){var r=this;r.styleEnabled()&&r._private.aniEles.merge(e)},"addToAnimationPool"),stopAnimationLoop:o(function(){this._private.animationsRunning=!1},"stopAnimationLoop"),startAnimationLoop:o(function(){var e=this;if(e._private.animationsRunning=!0,!e.styleEnabled())return;function r(){e._private.animationsRunning&&Kk(o(function(a){Rce(a,e),r()},"animationStep"))}o(r,"headlessStep");var n=e.renderer();n&&n.beforeRender?n.beforeRender(o(function(a,s){Rce(s,e)},"rendererAnimationStep"),n.beforeRenderPriorities.animations):r()},"startAnimationLoop")},PUe={qualifierCompare:o(function(e,r){return e==null||r==null?e==null&&r==null:e.sameText(r)},"qualifierCompare"),eventMatches:o(function(e,r,n){var i=r.qualifier;return i!=null?e!==n.target&&mx(n.target)&&i.matches(n.target):!0},"eventMatches"),addEventFields:o(function(e,r){r.cy=e,r.target=e},"addEventFields"),callbackContext:o(function(e,r,n){return r.qualifier!=null?n.target:e},"callbackContext")},Mk=o(function(e){return Jt(e)?new Ef(e):e},"argSelector"),uhe={createEmitter:o(function(){var e=this._private;return e.emitter||(e.emitter=new vE(PUe,this)),this},"createEmitter"),emitter:o(function(){return this._private.emitter},"emitter"),on:o(function(e,r,n){return this.emitter().on(e,Mk(r),n),this},"on"),removeListener:o(function(e,r,n){return this.emitter().removeListener(e,Mk(r),n),this},"removeListener"),removeAllListeners:o(function(){return this.emitter().removeAllListeners(),this},"removeAllListeners"),one:o(function(e,r,n){return this.emitter().one(e,Mk(r),n),this},"one"),once:o(function(e,r,n){return this.emitter().one(e,Mk(r),n),this},"once"),emit:o(function(e,r){return this.emitter().emit(e,r),this},"emit"),emitAndNotify:o(function(e,r){return this.emit(e),this.notify(e,r),this},"emitAndNotify")};un.eventAliasesOn(uhe);ZM={png:o(function(e){var r=this._private.renderer;return e=e||{},r.png(e)},"png"),jpg:o(function(e){var r=this._private.renderer;return e=e||{},e.bg=e.bg||"#fff",r.jpg(e)},"jpg")};ZM.jpeg=ZM.jpg;Uk={layout:o(function(e){var r=this;if(e==null){Kn("Layout options must be specified to make a layout");return}if(e.name==null){Kn("A `name` must be specified to make a layout");return}var n=e.name,i=r.extension("layout",n);if(i==null){Kn("No such layout `"+n+"` found. Did you forget to import it and `cytoscape.use()` it?");return}var a;Jt(e.eles)?a=r.$(e.eles):a=e.eles!=null?e.eles:r.$();var s=new i(ir({},e,{cy:r,eles:a}));return s},"layout")};Uk.createLayout=Uk.makeLayout=Uk.layout;BUe={notify:o(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)}},"notify"),notifications:o(function(e){var r=this._private;return e===void 0?r.notificationsEnabled:(r.notificationsEnabled=!!e,this)},"notifications"),noNotifications:o(function(e){this.notifications(!1),e(),this.notifications(!0)},"noNotifications"),batching:o(function(){return this._private.batchCount>0},"batching"),startBatch:o(function(){var e=this._private;return e.batchCount==null&&(e.batchCount=0),e.batchCount===0&&(e.batchStyleEles=this.collection(),e.batchNotifications={}),e.batchCount++,this},"startBatch"),endBatch:o(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},"endBatch"),batch:o(function(e){return this.startBatch(),e(),this.endBatch(),this},"batch"),batchData:o(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=[]})},"destroyRenderer"),onRender:o(function(e){return this.on("render",e)},"onRender"),offRender:o(function(e){return this.off("render",e)},"offRender")};JM.invalidateDimensions=JM.resize;Hk={collection:o(function(e,r){return Jt(e)?this.$(e):fo(e)?e.collection():An(e)?(r||(r={}),new va(this,e,r.unique,r.removed)):new va(this)},"collection"),nodes:o(function(e){var r=this.$(function(n){return n.isNode()});return e?r.filter(e):r},"nodes"),edges:o(function(e){var r=this.$(function(n){return n.isEdge()});return e?r.filter(e):r},"edges"),$:o(function(e){var r=this._private.elements;return e?r.filter(e):r.spawnSelf()},"$"),mutableElements:o(function(){return this._private.elements},"mutableElements")};Hk.elements=Hk.filter=Hk.$;na={},tx="t",$Ue="f";na.apply=function(t){for(var e=this,r=e._private,n=r.cy,i=n.collection(),a=0;a0;if(p||d&&m){var g=void 0;p&&m||p?g=h.properties:m&&(g=h.mappedProperties);for(var y=0;y1&&(S=1),l.color){var k=n.valueMin[0],A=n.valueMax[0],C=n.valueMin[1],R=n.valueMax[1],I=n.valueMin[2],L=n.valueMax[2],E=n.valueMin[3]==null?1:n.valueMin[3],D=n.valueMax[3]==null?1:n.valueMax[3],_=[Math.round(k+(A-k)*S),Math.round(C+(R-C)*S),Math.round(I+(L-I)*S),Math.round(E+(D-E)*S)];a={bypass:n.bypass,name:n.name,value:_,strValue:"rgb("+_[0]+", "+_[1]+", "+_[2]+")"}}else if(l.number){var O=n.valueMin+(n.valueMax-n.valueMin)*S;a=this.parse(n.name,O,n.bypass,p)}else return!1;if(!a)return y(),!1;a.mapping=n,n=a;break}case s.data:{for(var M=n.field.split("."),P=d.data,B=0;B0&&a>0){for(var l={},u=!1,h=0;h0?t.delayAnimation(s).play().promise().then(T):T()}).then(function(){return t.animation({style:l,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)};na.checkTrigger=function(t,e,r,n,i,a){var s=this.properties[e],l=i(s);t.removed()||l!=null&&l(r,n,t)&&a(s)};na.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)})};na.checkBoundsTrigger=function(t,e,r,n){this.checkTrigger(t,e,r,n,function(i){return i.triggersBounds},function(i){t.dirtyCompoundBoundsCache(),t.dirtyBoundingBoxCache()})};na.checkConnectedEdgesBoundsTrigger=function(t,e,r,n){this.checkTrigger(t,e,r,n,function(i){return i.triggersBoundsOfConnectedEdges},function(i){t.connectedEdges().forEach(function(a){a.dirtyBoundingBoxCache()})})};na.checkParallelEdgesBoundsTrigger=function(t,e,r,n){this.checkTrigger(t,e,r,n,function(i){return i.triggersBoundsOfParallelEdges},function(i){t.parallelEdges().forEach(function(a){a.dirtyBoundingBoxCache()})})};na.checkTriggers=function(t,e,r,n){t.dirtyStyleCache(),this.checkZOrderTrigger(t,e,r,n),this.checkBoundsTrigger(t,e,r,n),this.checkConnectedEdgesBoundsTrigger(t,e,r,n),this.checkParallelEdgesBoundsTrigger(t,e,r,n)};wx={};wx.applyBypass=function(t,e,r,n){var i=this,a=[],s=!0;if(e==="*"||e==="**"){if(r!==void 0)for(var l=0;li.length?n=n.substr(i.length):n=""}o(l,"removeSelAndBlockFromRemaining");function u(){a.length>s.length?a=a.substr(s.length):a=""}for(o(u,"removePropAndValFromRem");;){var h=n.match(/^\s*$/);if(h)break;var f=n.match(/^\s*((?:.|\s)+?)\s*\{((?:.|\s)+?)\}/);if(!f){hn("Halting stylesheet parsing: String stylesheet contains more to parse but no selector and block found in: "+n);break}i=f[0];var d=f[1];if(d!=="core"){var p=new Ef(d);if(p.invalid){hn("Skipping parsing of block: Invalid selector found in string stylesheet: "+d),l();continue}}var m=f[2],g=!1;a=m;for(var y=[];;){var v=a.match(/^\s*$/);if(v)break;var x=a.match(/^\s*(.+?)\s*:\s*(.+?)(?:\s*;|\s*$)/);if(!x){hn("Skipping parsing of block: Invalid formatting of style property and value definitions found in:"+m),g=!0;break}s=x[0];var b=x[1],T=x[2],S=e.properties[b];if(!S){hn("Skipping property: Invalid property name in: "+s),u();continue}var w=r.parse(b,T);if(!w){hn("Skipping property: Invalid property definition in: "+s),u();continue}y.push({name:b,val:T}),u()}if(g){l();break}r.selector(d);for(var k=0;k=7&&e[0]==="d"&&(f=new RegExp(l.data.regex).exec(e))){if(r)return!1;var p=l.data;return{name:t,value:f,strValue:""+e,mapped:p,field:f[1],bypass:r}}else if(e.length>=10&&e[0]==="m"&&(d=new RegExp(l.mapData.regex).exec(e))){if(r||h.multiple)return!1;var m=l.mapData;if(!(h.color||h.number))return!1;var g=this.parse(t,d[4]);if(!g||g.mapped)return!1;var y=this.parse(t,d[5]);if(!y||y.mapped)return!1;if(g.pfValue===y.pfValue||g.strValue===y.strValue)return hn("`"+t+": "+e+"` is not a valid mapper because the output range is zero; converting to `"+t+": "+g.strValue+"`"),this.parse(t,g.strValue);if(h.color){var v=g.value,x=y.value,b=v[0]===x[0]&&v[1]===x[1]&&v[2]===x[2]&&(v[3]===x[3]||(v[3]==null||v[3]===1)&&(x[3]==null||x[3]===1));if(b)return!1}return{name:t,value:d,strValue:""+e,mapped:m,field:d[1],fieldMin:parseFloat(d[2]),fieldMax:parseFloat(d[3]),valueMin:g.value,valueMax:y.value,bypass:r}}}if(h.multiple&&n!=="multiple"){var T;if(u?T=e.split(/\s+/):An(e)?T=e:T=[e],h.evenMultiple&&T.length%2!==0)return null;for(var S=[],w=[],k=[],A="",C=!1,R=0;R0?" ":"")+I.strValue}return h.validate&&!h.validate(S,w)?null:h.singleEnum&&C?S.length===1&&Jt(S[0])?{name:t,value:S[0],strValue:S[0],bypass:r}:null:{name:t,value:S,pfValue:k,strValue:A,bypass:r,units:w}}var L=o(function(){for(var re=0;reh.max||h.strictMax&&e===h.max))return null;var M={name:t,value:e,strValue:""+e+(E||""),units:E,bypass:r};return h.unitless||E!=="px"&&E!=="em"?M.pfValue=e:M.pfValue=E==="px"||!E?e:this.getEmSizeInPixels()*e,(E==="ms"||E==="s")&&(M.pfValue=E==="ms"?e:1e3*e),(E==="deg"||E==="rad")&&(M.pfValue=E==="rad"?e:Pze(e)),E==="%"&&(M.pfValue=e/100),M}else if(h.propList){var P=[],B=""+e;if(B!=="none"){for(var F=B.split(/\s*,\s*|\s+/),G=0;G0&&l>0&&!isNaN(n.w)&&!isNaN(n.h)&&n.w>0&&n.h>0){u=Math.min((s-2*r)/n.w,(l-2*r)/n.h),u=u>this._private.maxZoom?this._private.maxZoom:u,u=u=n.minZoom&&(n.maxZoom=r),this},"zoomRange"),minZoom:o(function(e){return e===void 0?this._private.minZoom:this.zoomRange({min:e})},"minZoom"),maxZoom:o(function(e){return e===void 0?this._private.maxZoom:this.zoomRange({max:e})},"maxZoom"),getZoomedViewport:o(function(e){var r=this._private,n=r.pan,i=r.zoom,a,s,l=!1;if(r.zoomingEnabled||(l=!0),At(e)?s=e:Yr(e)&&(s=e.level,e.position!=null?a=hE(e.position,i,n):e.renderedPosition!=null&&(a=e.renderedPosition),a!=null&&!r.panningEnabled&&(l=!0)),s=s>r.maxZoom?r.maxZoom:s,s=sr.maxZoom||!r.zoomingEnabled?s=!0:(r.zoom=u,a.push("zoom"))}if(i&&(!s||!e.cancelOnFailedZoom)&&r.panningEnabled){var h=e.pan;At(h.x)&&(r.pan.x=h.x,l=!1),At(h.y)&&(r.pan.y=h.y,l=!1),l||a.push("pan")}return a.length>0&&(a.push("viewport"),this.emit(a.join(" ")),this.notify("viewport")),this},"viewport"),center:o(function(e){var r=this.getCenterPan(e);return r&&(this._private.pan=r,this.emit("pan viewport"),this.notify("viewport")),this},"center"),getCenterPan:o(function(e,r){if(this._private.panningEnabled){if(Jt(e)){var n=e;e=this.mutableElements().filter(n)}else fo(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 l={x:(a-r*(i.x1+i.x2))/2,y:(s-r*(i.y1+i.y2))/2};return l}}},"getCenterPan"),reset:o(function(){return!this._private.panningEnabled||!this._private.zoomingEnabled?this:(this.viewport({pan:{x:0,y:0},zoom:1}),this)},"reset"),invalidateSize:o(function(){this._private.sizeCache=null},"invalidateSize"),size:o(function(){var e=this._private,r=e.container,n=this;return e.sizeCache=e.sizeCache||(r?(function(){var i=n.window().getComputedStyle(r),a=o(function(l){return parseFloat(i.getPropertyValue(l))},"val");return{width:r.clientWidth-a("padding-left")-a("padding-right"),height:r.clientHeight-a("padding-top")-a("padding-bottom")}})():{width:1,height:1})},"size"),width:o(function(){return this.size().width},"width"),height:o(function(){return this.size().height},"height"),extent:o(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},"extent"),renderedExtent:o(function(){var e=this.width(),r=this.height();return{x1:0,y1:0,x2:e,y2:r,w:e,h:r}},"renderedExtent"),multiClickDebounceTime:o(function(e){if(e)this._private.multiClickDebounceTime=e;else return this._private.multiClickDebounceTime;return this},"multiClickDebounceTime")};kp.centre=kp.center;kp.autolockNodes=kp.autolock;kp.autoungrabifyNodes=kp.autoungrabify;hx={data:un.data({field:"data",bindingEvent:"data",allowBinding:!0,allowSetting:!0,settingEvent:"data",settingTriggersEvent:!0,triggerFnName:"trigger",allowGetting:!0,updateStyle:!0}),removeData:un.removeData({field:"data",event:"data",triggerFnName:"trigger",triggerEvent:!0,updateStyle:!0}),scratch:un.data({field:"scratch",bindingEvent:"scratch",allowBinding:!0,allowSetting:!0,settingEvent:"scratch",settingTriggersEvent:!0,triggerFnName:"trigger",allowGetting:!0,updateStyle:!0}),removeScratch:un.removeData({field:"scratch",event:"scratch",triggerFnName:"trigger",triggerEvent:!0,updateStyle:!0})};hx.attr=hx.data;hx.removeAttr=hx.removeData;fx=o(function(e){var r=this;e=ir({},e);var n=e.container;n&&!jk(n)&&jk(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=Bi!==void 0&&n!==void 0&&!e.headless,l=e;l.layout=ir({name:s?"grid":"null"},l.layout),l.renderer=ir({name:s?"canvas":"null"},l.renderer);var u=o(function(g,y,v){return y!==void 0?y:v!==void 0?v:g},"defVal"),h=this._private={container:n,ready:!1,options:l,elements:new va(this),listeners:[],aniEles:new va(this),data:l.data||{},scratch:{},layout:null,renderer:null,destroyed:!1,notificationsEnabled:!0,minZoom:1e-50,maxZoom:1e50,zoomingEnabled:u(!0,l.zoomingEnabled),userZoomingEnabled:u(!0,l.userZoomingEnabled),panningEnabled:u(!0,l.panningEnabled),userPanningEnabled:u(!0,l.userPanningEnabled),boxSelectionEnabled:u(!0,l.boxSelectionEnabled),autolock:u(!1,l.autolock,l.autolockNodes),autoungrabify:u(!1,l.autoungrabify,l.autoungrabifyNodes),autounselectify:u(!1,l.autounselectify),styleEnabled:l.styleEnabled===void 0?s:l.styleEnabled,zoom:At(l.zoom)?l.zoom:1,pan:{x:Yr(l.pan)&&At(l.pan.x)?l.pan.x:0,y:Yr(l.pan)&&At(l.pan.y)?l.pan.y:0},animation:{current:[],queue:[]},hasCompoundNodes:!1,multiClickDebounceTime:u(250,l.multiClickDebounceTime)};this.createEmitter(),this.selectionType(l.selectionType),this.zoomRange({min:l.minZoom,max:l.maxZoom});var f=o(function(g,y){var v=g.some(L$e);if(v)return fg.all(g).then(y);y(g)},"loadExtData");h.styleEnabled&&r.setStyle([]);var d=ir({},l,l.renderer);r.initRenderer(d);var p=o(function(g,y,v){r.notifications(!1);var x=r.mutableElements();x.length>0&&x.remove(),g!=null&&(Yr(g)||An(g))&&r.add(g),r.one("layoutready",function(T){r.notifications(!0),r.emit(T),r.one("load",y),r.emitAndNotify("load")}).one("layoutstop",function(){r.one("done",v),r.emit("done")});var b=ir({},r._private.options.layout);b.eles=r.elements(),r.layout(b).run()},"setElesAndLayout");f([l.style,l.elements],function(m){var g=m[0],y=m[1];h.styleEnabled&&r.style().append(g),p(y,function(){r.startAnimationLoop(),h.ready=!0,oi(l.ready)&&r.on("ready",l.ready);for(var v=0;v0,l=!!t.boundingBox,u=cs(l?t.boundingBox:structuredClone(e.extent())),h;if(fo(t.roots))h=t.roots;else if(An(t.roots)){for(var f=[],d=0;d0;){var _=D(),O=R(_,L);if(O)_.outgoers().filter(function(Ve){return Ve.isNode()&&r.has(Ve)}).forEach(E);else if(O===null){hn("Detected double maximal shift for node `"+_.id()+"`. Bailing maximal adjustment due to cycle. Use `options.maximal: true` only on DAGs.");break}}}var M=0;if(t.avoidOverlap)for(var P=0;P0&&x[0].length<=3?Le/2:0),Ne=2*Math.PI/x[Ye].length*He;return Ye===0&&x[0].length===1&&(Ie=1),{x:K.x+Ie*Math.cos(Ne),y:K.y+Ie*Math.sin(Ne)}}else{var Ce=x[Ye].length,Fe=Math.max(Ce===1?0:l?(u.w-t.padding*2-ae.w)/((t.grid?de:Ce)-1):(u.w-t.padding*2-ae.w)/((t.grid?de:Ce)+1),M),fe={x:K.x+(He+1-(Ce+1)/2)*Fe,y:K.y+(Ye+1-(Y+1)/2)*Q};return fe}},"getPositionTopBottom"),Te={downward:0,leftward:90,upward:180,rightward:-90};Object.keys(Te).indexOf(t.direction)===-1&&Kn("Invalid direction '".concat(t.direction,"' specified for breadthfirst layout. Valid values are: ").concat(Object.keys(Te).join(", ")));var q=o(function(pe){return aze(ne(pe),u,Te[t.direction])},"getPosition");return r.nodes().layoutPositions(this,t,q),this};HUe={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:o(function(e,r){return!0},"animateFilter"),ready:void 0,stop:void 0,transform:o(function(e,r){return r},"transform")};o(fhe,"CircleLayout");fhe.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=cs(e.boundingBox?e.boundingBox:{x1:0,y1:0,w:r.width(),h:r.height()}),l={x:s.x1+s.w/2,y:s.y1+s.h/2},u=e.sweep===void 0?2*Math.PI-2*Math.PI/a.length:e.sweep,h=u/Math.max(1,a.length-1),f,d=0,p=0;p1&&e.avoidOverlap){d*=1.75;var x=Math.cos(h)-Math.cos(0),b=Math.sin(h)-Math.sin(0),T=Math.sqrt(d*d/(x*x+b*b));f=Math.max(T,f)}var S=o(function(k,A){var C=e.startAngle+A*h*(i?1:-1),R=f*Math.cos(C),I=f*Math.sin(C),L={x:l.x+R,y:l.y+I};return L},"getPos");return n.nodes().layoutPositions(this,e,S),this};qUe={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:o(function(e){return e.degree()},"concentric"),levelWidth:o(function(e){return e.maxDegree()/4},"levelWidth"),animate:!1,animationDuration:500,animationEasing:void 0,animateFilter:o(function(e,r){return!0},"animateFilter"),ready:void 0,stop:void 0,transform:o(function(e,r){return r},"transform")};o(dhe,"ConcentricLayout");dhe.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=cs(e.boundingBox?e.boundingBox:{x1:0,y1:0,w:n.width(),h:n.height()}),l={x:s.x1+s.w/2,y:s.y1+s.h/2},u=[],h=0,f=0;f0){var w=Math.abs(b[0].value-S.value);w>=v&&(b=[],x.push(b))}b.push(S)}var k=h+e.minNodeSpacing;if(!e.avoidOverlap){var A=x.length>0&&x[0].length>1,C=Math.min(s.w,s.h)/2-k,R=C/(x.length+A?1:0);k=Math.min(k,R)}for(var I=0,L=0;L1&&e.avoidOverlap){var O=Math.cos(_)-Math.cos(0),M=Math.sin(_)-Math.sin(0),P=Math.sqrt(k*k/(O*O+M*M));I=Math.max(P,I)}E.r=I,I+=k}if(e.equidistant){for(var B=0,F=0,G=0;G=t.numIter||(ZUe(n,t),n.temperature=n.temperature*t.coolingFactor,n.temperature=t.animationThreshold&&a(),Kk(f)}},"frame");f()}else{for(;h;)h=s(u),u++;Ice(n,t),l()}return this};kE.prototype.stop=function(){return this.stopped=!0,this.thread&&this.thread.stop(),this.emit("layoutstop"),this};kE.prototype.destroy=function(){return this.thread&&this.thread.stop(),this};YUe=o(function(e,r,n){for(var i=n.eles.edges(),a=n.eles.nodes(),s=cs(n.boundingBox?n.boundingBox:{x1:0,y1:0,w:e.width(),h:e.height()}),l={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},u=n.eles.components(),h={},f=0;f0){l.graphSet.push(C);for(var f=0;fi.count?0:i.graph},"findLCA"),phe=o(function(e,r,n,i){var a=i.graphSet[n];if(-10)var d=i.nodeOverlap*f,p=Math.sqrt(l*l+u*u),m=d*l/p,g=d*u/p;else var y=nE(e,l,u),v=nE(r,-1*l,-1*u),x=v.x-y.x,b=v.y-y.y,T=x*x+b*b,p=Math.sqrt(T),d=(e.nodeRepulsion+r.nodeRepulsion)/T,m=d*x/p,g=d*b/p;e.isLocked||(e.offsetX-=m,e.offsetY-=g),r.isLocked||(r.offsetX+=m,r.offsetY+=g)}},"nodeRepulsion"),tHe=o(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},"nodesOverlap"),nE=o(function(e,r,n){var i=e.positionX,a=e.positionY,s=e.height||1,l=e.width||1,u=n/r,h=s/l,f={};return r===0&&0n?(f.x=i,f.y=a+s/2,f):0r&&-1*h<=u&&u<=h?(f.x=i-l/2,f.y=a-l*n/2/r,f):0=h)?(f.x=i+s*r/2/n,f.y=a+s/2,f):(0>n&&(u<=-1*h||u>=h)&&(f.x=i-s*r/2/n,f.y=a-s/2),f)},"findClippingPoint"),rHe=o(function(e,r){for(var n=0;nn){var v=r.gravity*m/y,x=r.gravity*g/y;p.offsetX+=v,p.offsetY+=x}}}}},"calculateGravityForces"),iHe=o(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++],l=e.idToIndex[s],u=e.layoutNodes[l],h=u.children;if(0n)var a={x:n*e/i,y:n*r/i};else var a={x:e,y:r};return a},"limitForce"),ghe=o(function(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+=v+r.componentSpacing,m=0,y=0,v=0)}}},"separateComponents"),oHe={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:o(function(e){},"position"),sort:void 0,animate:!1,animationDuration:500,animationEasing:void 0,animateFilter:o(function(e,r){return!0},"animateFilter"),ready:void 0,stop:void 0,transform:o(function(e,r){return r},"transform")};o(yhe,"GridLayout");yhe.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=cs(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(),l=Math.sqrt(s*a.h/a.w),u=Math.round(l),h=Math.round(a.w/a.h*l),f=o(function(te){if(te==null)return Math.min(u,h);var Y=Math.min(u,h);Y==u?u=te:h=te},"small"),d=o(function(te){if(te==null)return Math.max(u,h);var Y=Math.max(u,h);Y==u?u=te:h=te},"large"),p=e.rows,m=e.cols!=null?e.cols:e.columns;if(p!=null&&m!=null)u=p,h=m;else if(p!=null&&m==null)u=p,h=Math.ceil(s/u);else if(p==null&&m!=null)h=m,u=Math.ceil(s/h);else if(h*u>s){var g=f(),y=d();(g-1)*y>=s?f(g-1):(y-1)*g>=s&&d(y-1)}else for(;h*u=s?d(x+1):f(v+1)}var b=a.w/h,T=a.h/u;if(e.condense&&(b=0,T=0),e.avoidOverlap)for(var S=0;S=h&&(O=0,_++)},"moveToNextCell"),P={},B=0;B(O=Kze(t,e,M[P],M[P+1],M[P+2],M[P+3])))return v(A,O),!0}else if(R.edgeType==="bezier"||R.edgeType==="multibezier"||R.edgeType==="self"||R.edgeType==="compound"){for(var M=R.allpts,P=0;P+5(O=jze(t,e,M[P],M[P+1],M[P+2],M[P+3],M[P+4],M[P+5])))return v(A,O),!0}for(var B=B||C.source,F=F||C.target,G=i.getArrowWidth(I,L),$=[{name:"source",x:R.arrowStartX,y:R.arrowStartY,angle:R.srcArrowAngle},{name:"target",x:R.arrowEndX,y:R.arrowEndY,angle:R.tgtArrowAngle},{name:"mid-source",x:R.midX,y:R.midY,angle:R.midsrcArrowAngle},{name:"mid-target",x:R.midX,y:R.midY,angle:R.midtgtArrowAngle}],P=0;P<$.length;P++){var U=$[P],j=a.arrowShapes[A.pstyle(U.name+"-arrow-shape").value],te=A.pstyle("width").pfValue;if(j.roughCollide(t,e,G,U.angle,{x:U.x,y:U.y},te,f)&&j.collide(t,e,G,U.angle,{x:U.x,y:U.y},te,f))return v(A),!0}h&&l.length>0&&(x(B),x(F))}o(b,"checkEdge");function T(A,C,R){return Us(A,C,R)}o(T,"preprop");function S(A,C){var R=A._private,I=p,L;C?L=C+"-":L="",A.boundingBox();var E=R.labelBounds[C||"main"],D=A.pstyle(L+"label").value,_=A.pstyle("text-events").strValue==="yes";if(!(!_||!D)){var O=T(R.rscratch,"labelX",C),M=T(R.rscratch,"labelY",C),P=T(R.rscratch,"labelAngle",C),B=A.pstyle(L+"text-margin-x").pfValue,F=A.pstyle(L+"text-margin-y").pfValue,G=E.x1-I-B,$=E.x2+I-B,U=E.y1-I-F,j=E.y2+I-F;if(P){var te=Math.cos(P),Y=Math.sin(P),oe=o(function(ae,Q){return ae=ae-O,Q=Q-M,{x:ae*te-Q*Y+O,y:ae*Y+Q*te+M}},"rotate"),J=oe(G,U),ue=oe(G,j),re=oe($,U),ee=oe($,j),Z=[J.x+B,J.y+F,re.x+B,re.y+F,ee.x+B,ee.y+F,ue.x+B,ue.y+F];if(Hs(t,e,Z))return v(A),!0}else if(yf(E,t,e))return v(A),!0}}o(S,"checkLabel");for(var w=s.length-1;w>=0;w--){var k=s[w];k.isNode()?x(k)||S(k):b(k)||S(k)||S(k,"source")||S(k,"target")}return l};Sp.getAllInBox=function(t,e,r,n){var i=this.getCachedZSortedEles().interactive,a=this.cy.zoom(),s=2/a,l=[],u=Math.min(t,r),h=Math.max(t,r),f=Math.min(e,n),d=Math.max(e,n);t=u,r=h,e=f,n=d;var p=cs({x1:t,y1:e,x2:r,y2:n}),m=[{x:p.x1,y:p.y1},{x:p.x2,y:p.y1},{x:p.x2,y:p.y2},{x:p.x1,y:p.y2}],g=[[m[0],m[1]],[m[1],m[2]],[m[2],m[3]],[m[3],m[0]]];function y(ae,Q,de){return Us(ae,Q,de)}o(y,"preprop");function v(ae,Q){var de=ae._private,ne=s,Te="";ae.boundingBox();var q=de.labelBounds.main;if(!q)return null;var Ve=y(de.rscratch,"labelX",Q),pe=y(de.rscratch,"labelY",Q),Be=y(de.rscratch,"labelAngle",Q),Ye=ae.pstyle(Te+"text-margin-x").pfValue,He=ae.pstyle(Te+"text-margin-y").pfValue,Le=q.x1-ne-Ye,Ie=q.x2+ne-Ye,Ne=q.y1-ne-He,Ce=q.y2+ne-He;if(Be){var Fe=Math.cos(Be),fe=Math.sin(Be),xe=o(function(he,z){return he=he-Ve,z=z-pe,{x:he*Fe-z*fe+Ve,y:he*fe+z*Fe+pe}},"rotate");return[xe(Le,Ne),xe(Ie,Ne),xe(Ie,Ce),xe(Le,Ce)]}else return[{x:Le,y:Ne},{x:Ie,y:Ne},{x:Ie,y:Ce},{x:Le,y:Ce}]}o(v,"getRotatedLabelBox");function x(ae,Q,de,ne){function Te(q,Ve,pe){return(pe.y-q.y)*(Ve.x-q.x)>(Ve.y-q.y)*(pe.x-q.x)}return o(Te,"ccw"),Te(ae,de,ne)!==Te(Q,de,ne)&&Te(ae,Q,de)!==Te(ae,Q,ne)}o(x,"doLinesIntersect");for(var b=0;b0?-(Math.PI-e.ang):Math.PI+e.ang},"invertVec"),dHe=o(function(e,r,n,i,a){if(e!==$ce?zce(r,e,Ic):fHe(Yo,Ic),zce(r,n,Yo),Bce=Ic.nx*Yo.ny-Ic.ny*Yo.nx,Fce=Ic.nx*Yo.nx-Ic.ny*-Yo.ny,Fu=Math.asin(Math.max(-1,Math.min(1,Bce))),Math.abs(Fu)<1e-6){eI=r.x,tI=r.y,gp=Qm=0;return}vp=1,qk=!1,Fce<0?Fu<0?Fu=Math.PI+Fu:(Fu=Math.PI-Fu,vp=-1,qk=!0):Fu>0&&(vp=-1,qk=!0),r.radius!==void 0?Qm=r.radius:Qm=i,fp=Fu/2,Ik=Math.min(Ic.len/2,Yo.len/2),a?(Nc=Math.abs(Math.cos(fp)*Qm/Math.sin(fp)),Nc>Ik?(Nc=Ik,gp=Math.abs(Nc*Math.sin(fp)/Math.cos(fp))):gp=Qm):(Nc=Math.min(Ik,Qm),gp=Math.abs(Nc*Math.sin(fp)/Math.cos(fp))),rI=r.x+Yo.nx*Nc,nI=r.y+Yo.ny*Nc,eI=rI-Yo.ny*gp*vp,tI=nI+Yo.nx*gp*vp,The=r.x+Ic.nx*Nc,whe=r.y+Ic.ny*Nc,$ce=r},"calcCornerArc");o(khe,"drawPreparedRoundCorner");o(LI,"getRoundCorner");dx=.01,pHe=Math.sqrt(2*dx),$a={};$a.findMidptPtsEtc=function(t,e){var r=e.posPts,n=e.intersectionPts,i=e.vectorNormInverse,a,s=t.pstyle("source-endpoint"),l=t.pstyle("target-endpoint"),u=s.units!=null&&l.units!=null,h=o(function(w,k,A,C){var R=C-k,I=A-w,L=Math.sqrt(I*I+R*R);return{x:-R/L,y:I/L}},"recalcVectorNormInverse"),f=t.pstyle("edge-distances").value;switch(f){case"node-position":a=r;break;case"intersection":a=n;break;case"endpoints":{if(u){var d=this.manualEndptToPx(t.source()[0],s),p=_i(d,2),m=p[0],g=p[1],y=this.manualEndptToPx(t.target()[0],l),v=_i(y,2),x=v[0],b=v[1],T={x1:m,y1:g,x2:x,y2:b};i=h(m,g,x,b),a=T}else hn("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}};$a.findHaystackPoints=function(t){for(var e=0;e0?Math.max(z-se,0):Math.min(z+se,0)},"subDWH"),D=E(I,C),_=E(L,R),O=!1;b===h?x=Math.abs(D)>Math.abs(_)?i:n:b===u||b===l?(x=n,O=!0):(b===a||b===s)&&(x=i,O=!0);var M=x===n,P=M?_:D,B=M?L:I,F=yI(B),G=!1;!(O&&(S||k))&&(b===l&&B<0||b===u&&B>0||b===a&&B>0||b===s&&B<0)&&(F*=-1,P=F*Math.abs(P),G=!0);var $;if(S){var U=w<0?1+w:w;$=U*P}else{var j=w<0?P:0;$=j+w*F}var te=o(function(z){return Math.abs(z)=Math.abs(P)},"getIsTooClose"),Y=te($),oe=te(Math.abs(P)-Math.abs($)),J=Y||oe;if(J&&!G)if(M){var ue=Math.abs(B)<=p/2,re=Math.abs(I)<=m/2;if(ue){var ee=(f.x1+f.x2)/2,Z=f.y1,K=f.y2;r.segpts=[ee,Z,ee,K]}else if(re){var ae=(f.y1+f.y2)/2,Q=f.x1,de=f.x2;r.segpts=[Q,ae,de,ae]}else r.segpts=[f.x1,f.y2]}else{var ne=Math.abs(B)<=d/2,Te=Math.abs(L)<=g/2;if(ne){var q=(f.y1+f.y2)/2,Ve=f.x1,pe=f.x2;r.segpts=[Ve,q,pe,q]}else if(Te){var Be=(f.x1+f.x2)/2,Ye=f.y1,He=f.y2;r.segpts=[Be,Ye,Be,He]}else r.segpts=[f.x2,f.y1]}else if(M){var Le=f.y1+$+(v?p/2*F:0),Ie=f.x1,Ne=f.x2;r.segpts=[Ie,Le,Ne,Le]}else{var Ce=f.x1+$+(v?d/2*F:0),Fe=f.y1,fe=f.y2;r.segpts=[Ce,Fe,Ce,fe]}if(r.isRound){var xe=t.pstyle("taxi-radius").value,W=t.pstyle("radius-type").value[0]==="arc-radius";r.radii=new Array(r.segpts.length/2).fill(xe),r.isArcRadius=new Array(r.segpts.length/2).fill(W)}};$a.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,l=e.tgtW,u=e.tgtH,h=e.srcShape,f=e.tgtShape,d=e.srcCornerRadius,p=e.tgtCornerRadius,m=e.srcRs,g=e.tgtRs,y=!At(r.startX)||!At(r.startY),v=!At(r.arrowStartX)||!At(r.arrowStartY),x=!At(r.endX)||!At(r.endY),b=!At(r.arrowEndX)||!At(r.arrowEndY),T=3,S=this.getArrowWidth(t.pstyle("width").pfValue,t.pstyle("arrow-scale").value)*this.arrowShapeWidth,w=T*S,k=Tp({x:r.ctrlpts[0],y:r.ctrlpts[1]},{x:r.startX,y:r.startY}),A=kB.poolIndex()){var F=P;P=B,B=F}var G=D.srcPos=P.position(),$=D.tgtPos=B.position(),U=D.srcW=P.outerWidth(),j=D.srcH=P.outerHeight(),te=D.tgtW=B.outerWidth(),Y=D.tgtH=B.outerHeight(),oe=D.srcShape=r.nodeShapes[e.getNodeShape(P)],J=D.tgtShape=r.nodeShapes[e.getNodeShape(B)],ue=D.srcCornerRadius=P.pstyle("corner-radius").value==="auto"?"auto":P.pstyle("corner-radius").pfValue,re=D.tgtCornerRadius=B.pstyle("corner-radius").value==="auto"?"auto":B.pstyle("corner-radius").pfValue,ee=D.tgtRs=B._private.rscratch,Z=D.srcRs=P._private.rscratch;D.dirCounts={north:0,west:0,south:0,east:0,northwest:0,southwest:0,northeast:0,southeast:0};for(var K=0;K=pHe||(Ne=Math.sqrt(Math.max(Ie*Ie,dx)+Math.max(Le*Le,dx)));var Ce=D.vector={x:Ie,y:Le},Fe=D.vectorNorm={x:Ce.x/Ne,y:Ce.y/Ne},fe={x:-Fe.y,y:Fe.x};D.nodesOverlap=!At(Ne)||J.checkPoint(q[0],q[1],0,te,Y,$.x,$.y,re,ee)||oe.checkPoint(pe[0],pe[1],0,U,j,G.x,G.y,ue,Z),D.vectorNormInverse=fe,_={nodesOverlap:D.nodesOverlap,dirCounts:D.dirCounts,calculatedIntersection:!0,hasBezier:D.hasBezier,hasUnbundled:D.hasUnbundled,eles:D.eles,srcPos:$,srcRs:ee,tgtPos:G,tgtRs:Z,srcW:te,srcH:Y,tgtW:U,tgtH:j,srcIntn:Be,tgtIntn:Ve,srcShape:J,tgtShape:oe,posPts:{x1:He.x2,y1:He.y2,x2:He.x1,y2:He.y1},intersectionPts:{x1:Ye.x2,y1:Ye.y2,x2:Ye.x1,y2:Ye.y1},vector:{x:-Ce.x,y:-Ce.y},vectorNorm:{x:-Fe.x,y:-Fe.y},vectorNormInverse:{x:-fe.x,y:-fe.y}}}var xe=Te?_:D;Q.nodesOverlap=xe.nodesOverlap,Q.srcIntn=xe.srcIntn,Q.tgtIntn=xe.tgtIntn,Q.isRound=de.startsWith("round"),i&&(P.isParent()||P.isChild()||B.isParent()||B.isChild())&&(P.parents().anySame(B)||B.parents().anySame(P)||P.same(B)&&P.isParent())?e.findCompoundLoopPoints(ae,xe,K,ne):P===B?e.findLoopPoints(ae,xe,K,ne):de.endsWith("segments")?e.findSegmentsPoints(ae,xe):de.endsWith("taxi")?e.findTaxiPoints(ae,xe):de==="straight"||!ne&&D.eles.length%2===1&&K===Math.floor(D.eles.length/2)?e.findStraightEdgePoints(ae):e.findBezierPoints(ae,xe,K,ne,Te),e.findEndpoints(ae),e.tryToCorrectInvalidPoints(ae,xe),e.checkForInvalidEdgeWarning(ae),e.storeAllpts(ae),e.storeEdgeProjections(ae),e.calculateArrowAngles(ae),e.recalculateEdgeLabelProjections(ae),e.calculateLabelAngles(ae)}},"_loop"),A=0;A0){var q=h,Ve=mp(q,tg(s)),pe=mp(q,tg(Te)),Be=Ve;if(pe2){var Ye=mp(q,{x:Te[2],y:Te[3]});Ye0){var le=f,ke=mp(le,tg(s)),ve=mp(le,tg(se)),ye=ke;if(ve2){var Re=mp(le,{x:se[2],y:se[3]});Re=g||A){v={cp:S,segment:k};break}}if(v)break}var C=v.cp,R=v.segment,I=(g-x)/R.length,L=R.t1-R.t0,E=m?R.t0+L*I:R.t1-L*I;E=ox(0,E,1),e=ig(C.p0,C.p1,C.p2,E),p=gHe(C.p0,C.p1,C.p2,E);break}case"straight":case"segments":case"haystack":{for(var D=0,_,O,M,P,B=n.allpts.length,F=0;F+3=g));F+=2);var G=g-O,$=G/_;$=ox(0,$,1),e=Fze(M,P,$),p=Che(M,P);break}}s("labelX",d,e.x),s("labelY",d,e.y),s("labelAutoAngle",d,p)}},"calculateEndProjection");h("source"),h("target"),this.applyLabelDimensions(t)}};Bc.applyLabelDimensions=function(t){this.applyPrefixedLabelDimensions(t),t.isEdge()&&(this.applyPrefixedLabelDimensions(t,"source"),this.applyPrefixedLabelDimensions(t,"target"))};Bc.applyPrefixedLabelDimensions=function(t,e){var r=t._private,n=this.getLabelText(t,e),i=bp(n,t._private.labelDimsKey);if(Us(r.rscratch,"prefixedLabelDimsKey",e)!==i){$u(r.rscratch,"prefixedLabelDimsKey",e,i);var a=this.calculateLabelDimensions(t,n),s=t.pstyle("line-height").pfValue,l=t.pstyle("text-wrap").strValue,u=Us(r.rscratch,"labelWrapCachedLines",e)||[],h=l!=="wrap"?1:Math.max(u.length,1),f=a.height/h,d=f*s,p=a.width,m=a.height+(h-1)*(s-1)*f;$u(r.rstyle,"labelWidth",e,p),$u(r.rscratch,"labelWidth",e,p),$u(r.rstyle,"labelHeight",e,m),$u(r.rscratch,"labelHeight",e,m),$u(r.rscratch,"labelLineHeight",e,d)}};Bc.getLabelText=function(t,e){var r=t._private,n=e?e+"-":"",i=t.pstyle(n+"label").strValue,a=t.pstyle("text-transform").value,s=o(function(j,te){return te?($u(r.rscratch,j,e,te),te):Us(r.rscratch,j,e)},"rscratch");if(!i)return"";a=="none"||(a=="uppercase"?i=i.toUpperCase():a=="lowercase"&&(i=i.toLowerCase()));var l=t.pstyle("text-wrap").value;if(l==="wrap"){var u=s("labelKey");if(u!=null&&s("labelWrapKey")===u)return s("labelWrapCachedText");for(var h="\u200B",f=i.split(` -`),d=t.pstyle("text-max-width").pfValue,p=t.pstyle("text-overflow-wrap").value,m=p==="anywhere",g=[],y=/[\s\u200b]+|$/g,v=0;vd){var w=x.matchAll(y),k="",A=0,C=qs(w),R;try{for(C.s();!(R=C.n()).done;){var I=R.value,L=I[0],E=x.substring(A,I.index);A=I.index+L.length;var D=k.length===0?E:k+E+L,_=this.calculateLabelDimensions(t,D),O=_.width;O<=d?k+=E+L:(k&&g.push(k),k=E+L)}}catch(U){C.e(U)}finally{C.f()}k.match(/^[\s\u200b]+$/)||g.push(k)}else g.push(x)}s("labelWrapCachedLines",g),i=s("labelWrapCachedText",g.join(` -`)),s("labelWrapKey",u)}else if(l==="ellipsis"){var M=t.pstyle("text-max-width").pfValue,P="",B="\u2026",F=!1;if(this.calculateLabelDimensions(t,i).widthM)break;P+=i[G],G===i.length-1&&(F=!0)}return F||(P+=B),P}return i};Bc.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};Bc.calculateLabelDimensions=function(t,e){var r=this,n=r.cy.window(),i=n.document,a=0,s=t.pstyle("font-style").strValue,l=t.pstyle("font-size").pfValue,u=t.pstyle("font-family").strValue,h=t.pstyle("font-weight").strValue,f=this.labelCalcCanvas,d=this.labelCalcCanvasContext;if(!f){f=this.labelCalcCanvas=i.createElement("canvas"),d=this.labelCalcCanvasContext=f.getContext("2d");var p=f.style;p.position="absolute",p.left="-9999px",p.top="-9999px",p.zIndex="-1",p.visibility="hidden",p.pointerEvents="none"}d.font="".concat(s," ").concat(h," ").concat(l,"px ").concat(u);for(var m=0,g=0,y=e.split(` -`),v=0;v1&&arguments[1]!==void 0?arguments[1]:!0;if(e.merge(s),l)for(var u=0;u=t.desktopTapThreshold2}var bt=a(z);lt&&(t.hoverData.tapholdCancelled=!0);var wt=o(function(){var Se=t.hoverData.dragDelta=t.hoverData.dragDelta||[];Se.length===0?(Se.push(et[0]),Se.push(et[1])):(Se[0]+=et[0],Se[1]+=et[1])},"updateDragDelta");le=!0,i(xt,["mousemove","vmousemove","tapdrag"],z,{x:Re[0],y:Re[1]});var yt=o(function(Se){return{originalEvent:z,type:Se,position:{x:Re[0],y:Re[1]}}},"makeEvent"),ft=o(function(){t.data.bgActivePosistion=void 0,t.hoverData.selecting||ke.emit(yt("boxstart")),Ke[4]=1,t.hoverData.selecting=!0,t.redrawHint("select",!0),t.redraw()},"goIntoBoxMode");if(t.hoverData.which===3){if(lt){var Ur=yt("cxtdrag");Oe?Oe.emit(Ur):ke.emit(Ur),t.hoverData.cxtDragged=!0,(!t.hoverData.cxtOver||xt!==t.hoverData.cxtOver)&&(t.hoverData.cxtOver&&t.hoverData.cxtOver.emit(yt("cxtdragout")),t.hoverData.cxtOver=xt,xt&&xt.emit(yt("cxtdragover")))}}else if(t.hoverData.dragging){if(le=!0,ke.panningEnabled()&&ke.userPanningEnabled()){var _t;if(t.hoverData.justStartedPan){var bn=t.hoverData.mdownPos;_t={x:(Re[0]-bn[0])*ve,y:(Re[1]-bn[1])*ve},t.hoverData.justStartedPan=!1}else _t={x:et[0]*ve,y:et[1]*ve};ke.panBy(_t),ke.emit(yt("dragpan")),t.hoverData.dragged=!0}Re=t.projectIntoViewport(z.clientX,z.clientY)}else if(Ke[4]==1&&(Oe==null||Oe.pannable())){if(lt){if(!t.hoverData.dragging&&ke.boxSelectionEnabled()&&(bt||!ke.panningEnabled()||!ke.userPanningEnabled()))ft();else if(!t.hoverData.selecting&&ke.panningEnabled()&&ke.userPanningEnabled()){var Br=s(Oe,t.hoverData.downs);Br&&(t.hoverData.dragging=!0,t.hoverData.justStartedPan=!0,Ke[4]=0,t.data.bgActivePosistion=tg(_e),t.redrawHint("select",!0),t.redraw())}Oe&&Oe.pannable()&&Oe.active()&&Oe.unactivate()}}else{if(Oe&&Oe.pannable()&&Oe.active()&&Oe.unactivate(),(!Oe||!Oe.grabbed())&&xt!=We&&(We&&i(We,["mouseout","tapdragout"],z,{x:Re[0],y:Re[1]}),xt&&i(xt,["mouseover","tapdragover"],z,{x:Re[0],y:Re[1]}),t.hoverData.last=xt),Oe)if(lt){if(ke.boxSelectionEnabled()&&bt)Oe&&Oe.grabbed()&&(x(Ue),Oe.emit(yt("freeon")),Ue.emit(yt("free")),t.dragData.didDrag&&(Oe.emit(yt("dragfreeon")),Ue.emit(yt("dragfree")))),ft();else if(Oe&&Oe.grabbed()&&t.nodeIsDraggable(Oe)){var cr=!t.dragData.didDrag;cr&&t.redrawHint("eles",!0),t.dragData.didDrag=!0,t.hoverData.draggingEles||y(Ue,{inDragLayer:!0});var ar={x:0,y:0};if(At(et[0])&&At(et[1])&&(ar.x+=et[0],ar.y+=et[1],cr)){var _r=t.hoverData.dragDelta;_r&&At(_r[0])&&At(_r[1])&&(ar.x+=_r[0],ar.y+=_r[1])}t.hoverData.draggingEles=!0,Ue.silentShift(ar).emit(yt("position")).emit(yt("drag")),t.redrawHint("drag",!0),t.redraw()}}else wt();le=!0}if(Ke[2]=Re[0],Ke[3]=Re[1],le)return z.stopPropagation&&z.stopPropagation(),z.preventDefault&&z.preventDefault(),!1}},"mousemoveHandler"),!1);var E,D,_;t.registerBinding(e,"mouseup",o(function(z){if(!(t.hoverData.which===1&&z.which!==1&&t.hoverData.capture)){var se=t.hoverData.capture;if(se){t.hoverData.capture=!1;var le=t.cy,ke=t.projectIntoViewport(z.clientX,z.clientY),ve=t.selection,ye=t.findNearestElement(ke[0],ke[1],!0,!1),Re=t.dragData.possibleDragElements,_e=t.hoverData.down,ze=a(z);t.data.bgActivePosistion&&(t.redrawHint("select",!0),t.redraw()),t.hoverData.tapholdCancelled=!0,t.data.bgActivePosistion=void 0,_e&&_e.unactivate();var Ke=o(function(Gt){return{originalEvent:z,type:Gt,position:{x:ke[0],y:ke[1]}}},"makeEvent");if(t.hoverData.which===3){var xt=Ke("cxttapend");if(_e?_e.emit(xt):le.emit(xt),!t.hoverData.cxtDragged){var We=Ke("cxttap");_e?_e.emit(We):le.emit(We)}t.hoverData.cxtDragged=!1,t.hoverData.which=null}else if(t.hoverData.which===1){if(i(ye,["mouseup","tapend","vmouseup"],z,{x:ke[0],y:ke[1]}),!t.dragData.didDrag&&!t.hoverData.dragged&&!t.hoverData.selecting&&!t.hoverData.isOverThresholdDrag&&(i(_e,["click","tap","vclick"],z,{x:ke[0],y:ke[1]}),D=!1,z.timeStamp-_<=le.multiClickDebounceTime()?(E&&clearTimeout(E),D=!0,_=null,i(_e,["dblclick","dbltap","vdblclick"],z,{x:ke[0],y:ke[1]})):(E=setTimeout(function(){D||i(_e,["oneclick","onetap","voneclick"],z,{x:ke[0],y:ke[1]})},le.multiClickDebounceTime()),_=z.timeStamp)),_e==null&&!t.dragData.didDrag&&!t.hoverData.selecting&&!t.hoverData.dragged&&!a(z)&&(le.$(r).unselect(["tapunselect"]),Re.length>0&&t.redrawHint("eles",!0),t.dragData.possibleDragElements=Re=le.collection()),ye==_e&&!t.dragData.didDrag&&!t.hoverData.selecting&&ye!=null&&ye._private.selectable&&(t.hoverData.dragging||(le.selectionType()==="additive"||ze?ye.selected()?ye.unselect(["tapunselect"]):ye.select(["tapselect"]):ze||(le.$(r).unmerge(ye).unselect(["tapunselect"]),ye.select(["tapselect"]))),t.redrawHint("eles",!0)),t.hoverData.selecting){var Oe=le.collection(t.getAllInBox(ve[0],ve[1],ve[2],ve[3]));t.redrawHint("select",!0),Oe.length>0&&t.redrawHint("eles",!0),le.emit(Ke("boxend"));var et=o(function(Gt){return Gt.selectable()&&!Gt.selected()},"eleWouldBeSelected");le.selectionType()==="additive"||ze||le.$(r).unmerge(Oe).unselect(),Oe.emit(Ke("box")).stdFilter(et).select().emit(Ke("boxselect")),t.redraw()}if(t.hoverData.dragging&&(t.hoverData.dragging=!1,t.redrawHint("select",!0),t.redrawHint("eles",!0),t.redraw()),!ve[4]){t.redrawHint("drag",!0),t.redrawHint("eles",!0);var Ue=_e&&_e.grabbed();x(Re),Ue&&(_e.emit(Ke("freeon")),Re.emit(Ke("free")),t.dragData.didDrag&&(_e.emit(Ke("dragfreeon")),Re.emit(Ke("dragfree"))))}}ve[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}}},"mouseupHandler"),!1);var O=[],M=4,P,B=1e5,F=o(function(z,se){for(var le=0;le=M){var ke=O;if(P=F(ke,5),!P){var ve=Math.abs(ke[0]);P=G(ke)&&ve>5}if(P)for(var ye=0;ye5&&(le=yI(le)*5),We=le/-250,P&&(We/=B,We*=3),We=We*t.wheelSensitivity;var Oe=z.deltaMode===1;Oe&&(We*=33);var et=Re.zoom()*Math.pow(10,We);z.type==="gesturechange"&&(et=t.gestureStartZoom*z.scale),Re.zoom({level:et,renderedPosition:{x:xt[0],y:xt[1]}}),Re.emit({type:z.type==="gesturechange"?"pinchzoom":"scrollzoom",originalEvent:z,position:{x:Ke[0],y:Ke[1]}})}}}},"wheelHandler");t.registerBinding(t.container,"wheel",$,!0),t.registerBinding(e,"scroll",o(function(z){t.scrollingPage=!0,clearTimeout(t.scrollingPageTimeout),t.scrollingPageTimeout=setTimeout(function(){t.scrollingPage=!1},250)},"scrollHandler"),!0),t.registerBinding(t.container,"gesturestart",o(function(z){t.gestureStartZoom=t.cy.zoom(),t.hasTouchStarted||z.preventDefault()},"gestureStartHandler"),!0),t.registerBinding(t.container,"gesturechange",function(he){t.hasTouchStarted||$(he)},!0),t.registerBinding(t.container,"mouseout",o(function(z){var se=t.projectIntoViewport(z.clientX,z.clientY);t.cy.emit({originalEvent:z,type:"mouseout",position:{x:se[0],y:se[1]}})},"mouseOutHandler"),!1),t.registerBinding(t.container,"mouseover",o(function(z){var se=t.projectIntoViewport(z.clientX,z.clientY);t.cy.emit({originalEvent:z,type:"mouseover",position:{x:se[0],y:se[1]}})},"mouseOverHandler"),!1);var U,j,te,Y,oe,J,ue,re,ee,Z,K,ae,Q,de=o(function(z,se,le,ke){return Math.sqrt((le-z)*(le-z)+(ke-se)*(ke-se))},"distance"),ne=o(function(z,se,le,ke){return(le-z)*(le-z)+(ke-se)*(ke-se)},"distanceSq"),Te;t.registerBinding(t.container,"touchstart",Te=o(function(z){if(t.hasTouchStarted=!0,!!I(z)){T(),t.touchData.capture=!0,t.data.bgActivePosistion=void 0;var se=t.cy,le=t.touchData.now,ke=t.touchData.earlier;if(z.touches[0]){var ve=t.projectIntoViewport(z.touches[0].clientX,z.touches[0].clientY);le[0]=ve[0],le[1]=ve[1]}if(z.touches[1]){var ve=t.projectIntoViewport(z.touches[1].clientX,z.touches[1].clientY);le[2]=ve[0],le[3]=ve[1]}if(z.touches[2]){var ve=t.projectIntoViewport(z.touches[2].clientX,z.touches[2].clientY);le[4]=ve[0],le[5]=ve[1]}var ye=o(function(bt){return{originalEvent:z,type:bt,position:{x:le[0],y:le[1]}}},"makeEvent");if(z.touches[1]){t.touchData.singleTouchMoved=!0,x(t.dragData.touchDragEles);var Re=t.findContainerClientCoords();ee=Re[0],Z=Re[1],K=Re[2],ae=Re[3],U=z.touches[0].clientX-ee,j=z.touches[0].clientY-Z,te=z.touches[1].clientX-ee,Y=z.touches[1].clientY-Z,Q=0<=U&&U<=K&&0<=te&&te<=K&&0<=j&&j<=ae&&0<=Y&&Y<=ae;var _e=se.pan(),ze=se.zoom();oe=de(U,j,te,Y),J=ne(U,j,te,Y),ue=[(U+te)/2,(j+Y)/2],re=[(ue[0]-_e.x)/ze,(ue[1]-_e.y)/ze];var Ke=200,xt=Ke*Ke;if(J=1){for(var vt=t.touchData.startPosition=[null,null,null,null,null,null],Lt=0;Lt=t.touchTapThreshold2}if(se&&t.touchData.cxt){z.preventDefault();var Lt=z.touches[0].clientX-ee,dt=z.touches[0].clientY-Z,nt=z.touches[1].clientX-ee,bt=z.touches[1].clientY-Z,wt=ne(Lt,dt,nt,bt),yt=wt/J,ft=150,Ur=ft*ft,_t=1.5,bn=_t*_t;if(yt>=bn||wt>=Ur){t.touchData.cxt=!1,t.data.bgActivePosistion=void 0,t.redrawHint("select",!0);var Br=ze("cxttapend");t.touchData.start?(t.touchData.start.unactivate().emit(Br),t.touchData.start=null):ke.emit(Br)}}if(se&&t.touchData.cxt){var Br=ze("cxtdrag");t.data.bgActivePosistion=void 0,t.redrawHint("select",!0),t.touchData.start?t.touchData.start.emit(Br):ke.emit(Br),t.touchData.start&&(t.touchData.start._private.grabbed=!1),t.touchData.cxtDragged=!0;var cr=t.findNearestElement(ve[0],ve[1],!0,!0);(!t.touchData.cxtOver||cr!==t.touchData.cxtOver)&&(t.touchData.cxtOver&&t.touchData.cxtOver.emit(ze("cxtdragout")),t.touchData.cxtOver=cr,cr&&cr.emit(ze("cxtdragover")))}else if(se&&z.touches[2]&&ke.boxSelectionEnabled())z.preventDefault(),t.data.bgActivePosistion=void 0,this.lastThreeTouch=+new Date,t.touchData.selecting||ke.emit(ze("boxstart")),t.touchData.selecting=!0,t.touchData.didSelect=!0,le[4]=1,!le||le.length===0||le[0]===void 0?(le[0]=(ve[0]+ve[2]+ve[4])/3,le[1]=(ve[1]+ve[3]+ve[5])/3,le[2]=(ve[0]+ve[2]+ve[4])/3+1,le[3]=(ve[1]+ve[3]+ve[5])/3+1):(le[2]=(ve[0]+ve[2]+ve[4])/3,le[3]=(ve[1]+ve[3]+ve[5])/3),t.redrawHint("select",!0),t.redraw();else if(se&&z.touches[1]&&!t.touchData.didSelect&&ke.zoomingEnabled()&&ke.panningEnabled()&&ke.userZoomingEnabled()&&ke.userPanningEnabled()){z.preventDefault(),t.data.bgActivePosistion=void 0,t.redrawHint("select",!0);var ar=t.dragData.touchDragEles;if(ar){t.redrawHint("drag",!0);for(var _r=0;_r0&&!t.hoverData.draggingEles&&!t.swipePanning&&t.data.bgActivePosistion!=null&&(t.data.bgActivePosistion=void 0,t.redrawHint("select",!0),t.redraw())}},"touchmoveHandler"),!1);var Ve;t.registerBinding(e,"touchcancel",Ve=o(function(z){var se=t.touchData.start;t.touchData.capture=!1,se&&se.unactivate()},"touchcancelHandler"));var pe,Be,Ye,He;if(t.registerBinding(e,"touchend",pe=o(function(z){var se=t.touchData.start,le=t.touchData.capture;if(le)z.touches.length===0&&(t.touchData.capture=!1),z.preventDefault();else return;var ke=t.selection;t.swipePanning=!1,t.hoverData.draggingEles=!1;var ve=t.cy,ye=ve.zoom(),Re=t.touchData.now,_e=t.touchData.earlier;if(z.touches[0]){var ze=t.projectIntoViewport(z.touches[0].clientX,z.touches[0].clientY);Re[0]=ze[0],Re[1]=ze[1]}if(z.touches[1]){var ze=t.projectIntoViewport(z.touches[1].clientX,z.touches[1].clientY);Re[2]=ze[0],Re[3]=ze[1]}if(z.touches[2]){var ze=t.projectIntoViewport(z.touches[2].clientX,z.touches[2].clientY);Re[4]=ze[0],Re[5]=ze[1]}var Ke=o(function(Ur){return{originalEvent:z,type:Ur,position:{x:Re[0],y:Re[1]}}},"makeEvent");se&&se.unactivate();var xt;if(t.touchData.cxt){if(xt=Ke("cxttapend"),se?se.emit(xt):ve.emit(xt),!t.touchData.cxtDragged){var We=Ke("cxttap");se?se.emit(We):ve.emit(We)}t.touchData.start&&(t.touchData.start._private.grabbed=!1),t.touchData.cxt=!1,t.touchData.start=null,t.redraw();return}if(!z.touches[2]&&ve.boxSelectionEnabled()&&t.touchData.selecting){t.touchData.selecting=!1;var Oe=ve.collection(t.getAllInBox(ke[0],ke[1],ke[2],ke[3]));ke[0]=void 0,ke[1]=void 0,ke[2]=void 0,ke[3]=void 0,ke[4]=0,t.redrawHint("select",!0),ve.emit(Ke("boxend"));var et=o(function(Ur){return Ur.selectable()&&!Ur.selected()},"eleWouldBeSelected");Oe.emit(Ke("box")).stdFilter(et).select().emit(Ke("boxselect")),Oe.nonempty()&&t.redrawHint("eles",!0),t.redraw()}if(se?.unactivate(),z.touches[2])t.data.bgActivePosistion=void 0,t.redrawHint("select",!0);else if(!z.touches[1]){if(!z.touches[0]){if(!z.touches[0]){t.data.bgActivePosistion=void 0,t.redrawHint("select",!0);var Ue=t.dragData.touchDragEles;if(se!=null){var lt=se._private.grabbed;x(Ue),t.redrawHint("drag",!0),t.redrawHint("eles",!0),lt&&(se.emit(Ke("freeon")),Ue.emit(Ke("free")),t.dragData.didDrag&&(se.emit(Ke("dragfreeon")),Ue.emit(Ke("dragfree")))),i(se,["touchend","tapend","vmouseup","tapdragout"],z,{x:Re[0],y:Re[1]}),se.unactivate(),t.touchData.start=null}else{var Gt=t.findNearestElement(Re[0],Re[1],!0,!0);i(Gt,["touchend","tapend","vmouseup","tapdragout"],z,{x:Re[0],y:Re[1]})}var vt=t.touchData.startPosition[0]-Re[0],Lt=vt*vt,dt=t.touchData.startPosition[1]-Re[1],nt=dt*dt,bt=Lt+nt,wt=bt*ye*ye;t.touchData.singleTouchMoved||(se||ve.$(":selected").unselect(["tapunselect"]),i(se,["tap","vclick"],z,{x:Re[0],y:Re[1]}),Be=!1,z.timeStamp-He<=ve.multiClickDebounceTime()?(Ye&&clearTimeout(Ye),Be=!0,He=null,i(se,["dbltap","vdblclick"],z,{x:Re[0],y:Re[1]})):(Ye=setTimeout(function(){Be||i(se,["onetap","voneclick"],z,{x:Re[0],y:Re[1]})},ve.multiClickDebounceTime()),He=z.timeStamp)),se!=null&&!t.dragData.didDrag&&se._private.selectable&&wt"u"){var Le=[],Ie=o(function(z){return{clientX:z.clientX,clientY:z.clientY,force:1,identifier:z.pointerId,pageX:z.pageX,pageY:z.pageY,radiusX:z.width/2,radiusY:z.height/2,screenX:z.screenX,screenY:z.screenY,target:z.target}},"makeTouch"),Ne=o(function(z){return{event:z,touch:Ie(z)}},"makePointer"),Ce=o(function(z){Le.push(Ne(z))},"addPointer"),Fe=o(function(z){for(var se=0;se0)return U[0]}return null},"getCurveT"),g=Object.keys(p),y=0;y0?m:_ue(a,s,e,r,n,i,l,u)},"intersectLine"),checkPoint:o(function(e,r,n,i,a,s,l,u){u=u==="auto"?kf(i,a):u;var h=2*u;if(Vu(e,r,this.points,s,l,i,a-h,[0,-1],n)||Vu(e,r,this.points,s,l,i-h,a,[0,-1],n))return!0;var f=i/2+2*n,d=a/2+2*n,p=[s-f,l-d,s-f,l,s+f,l,s+f,l-d];return!!(Hs(e,r,p)||xp(e,r,h,h,s+i/2-u,l+a/2-u,n)||xp(e,r,h,h,s-i/2+u,l+a/2-u,n))},"checkPoint")}};Uu.registerNodeShapes=function(){var t=this.nodeShapes={},e=this;this.generateEllipse(),this.generatePolygon("triangle",ls(3,0)),this.generateRoundPolygon("round-triangle",ls(3,0)),this.generatePolygon("rectangle",ls(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",ls(5,0)),this.generateRoundPolygon("round-pentagon",ls(5,0)),this.generatePolygon("hexagon",ls(6,0)),this.generateRoundPolygon("round-hexagon",ls(6,0)),this.generatePolygon("heptagon",ls(7,0)),this.generateRoundPolygon("round-heptagon",ls(7,0)),this.generatePolygon("octagon",ls(8,0)),this.generateRoundPolygon("round-octagon",ls(8,0));var n=new Array(20);{var i=HM(5,0),a=HM(5,Math.PI/5),s=.5*(3-Math.sqrt(5));s*=1.57;for(var l=0;l=e.deqFastCost*S)break}else if(h){if(b>=e.deqCost*m||b>=e.deqAvgCost*p)break}else if(T>=e.deqNoDrawCost*OM)break;var w=e.deq(n,v,y);if(w.length>0)for(var k=0;k0&&(e.onDeqd(n,g),!h&&e.shouldRedraw(n,g,v,y)&&a())},"dequeue"),l=e.priority||pI;i.beforeRender(s,l(n))}},"setupDequeueingImpl")},"setupDequeueing")},vHe=(function(){function t(e){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:Qk;Af(this,t),this.idsByKey=new zu,this.keyForId=new zu,this.cachesByLvl=new zu,this.lvls=[],this.getKey=e,this.doesEleInvalidateKey=r}return o(t,"ElementTextureCacheLookup"),_f(t,[{key:"getIdsFor",value:o(function(r){r==null&&Kn("Can not get id list for null key");var n=this.idsByKey,i=this.idsByKey.get(r);return i||(i=new hg,n.set(r,i)),i},"getIdsFor")},{key:"addIdForKey",value:o(function(r,n){r!=null&&this.getIdsFor(r).add(n)},"addIdForKey")},{key:"deleteIdForKey",value:o(function(r,n){r!=null&&this.getIdsFor(r).delete(n)},"deleteIdForKey")},{key:"getNumberOfIdsForKey",value:o(function(r){return r==null?0:this.getIdsFor(r).size},"getNumberOfIdsForKey")},{key:"updateKeyMappingFor",value:o(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)},"updateKeyMappingFor")},{key:"deleteKeyMappingFor",value:o(function(r){var n=r.id(),i=this.keyForId.get(n);this.deleteIdForKey(i,n),this.keyForId.delete(n)},"deleteKeyMappingFor")},{key:"keyHasChangedFor",value:o(function(r){var n=r.id(),i=this.keyForId.get(n),a=this.getKey(r);return i!==a},"keyHasChangedFor")},{key:"isInvalid",value:o(function(r){return this.keyHasChangedFor(r)||this.doesEleInvalidateKey(r)},"isInvalid")},{key:"getCachesAt",value:o(function(r){var n=this.cachesByLvl,i=this.lvls,a=n.get(r);return a||(a=new zu,n.set(r,a),i.push(r)),a},"getCachesAt")},{key:"getCache",value:o(function(r,n){return this.getCachesAt(n).get(r)},"getCache")},{key:"get",value:o(function(r,n){var i=this.getKey(r),a=this.getCache(i,n);return a!=null&&this.updateKeyMappingFor(r),a},"get")},{key:"getForCachedKey",value:o(function(r,n){var i=this.keyForId.get(r.id()),a=this.getCache(i,n);return a},"getForCachedKey")},{key:"hasCache",value:o(function(r,n){return this.getCachesAt(n).has(r)},"hasCache")},{key:"has",value:o(function(r,n){var i=this.getKey(r);return this.hasCache(i,n)},"has")},{key:"setCache",value:o(function(r,n,i){i.key=r,this.getCachesAt(n).set(r,i)},"setCache")},{key:"set",value:o(function(r,n,i){var a=this.getKey(r);this.setCache(a,n,i),this.updateKeyMappingFor(r)},"set")},{key:"deleteCache",value:o(function(r,n){this.getCachesAt(n).delete(r)},"deleteCache")},{key:"delete",value:o(function(r,n){var i=this.getKey(r);this.deleteCache(i,n)},"_delete")},{key:"invalidateKey",value:o(function(r){var n=this;this.lvls.forEach(function(i){return n.deleteCache(r,i)})},"invalidateKey")},{key:"invalidate",value:o(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},"invalidate")}])})(),Hce=25,Ok=50,Wk=-4,iI=3,Nhe=7.99,xHe=8,bHe=1024,THe=1024,wHe=1024,kHe=.2,EHe=.8,SHe=10,CHe=.15,AHe=.1,_He=.9,DHe=.9,LHe=100,RHe=1,ng={dequeue:"dequeue",downscale:"downscale",highQuality:"highQuality"},NHe=xa({getKey:null,doesEleInvalidateKey:Qk,drawElement:null,getBoundingBox:null,getRotationPoint:null,getRotationOffset:null,isVisible:Tue,allowEdgeTxrCaching:!0,allowParentTxrCaching:!0}),ex=o(function(e,r){var n=this;n.renderer=e,n.onDequeues=[];var i=NHe(r);ir(n,i),n.lookup=new vHe(i.getKey,i.doesEleInvalidateKey),n.setupDequeueing()},"ElementTextureCache"),zi=ex.prototype;zi.reasons=ng;zi.getTextureQueue=function(t){var e=this;return e.eleImgCaches=e.eleImgCaches||{},e.eleImgCaches[t]=e.eleImgCaches[t]||[]};zi.getRetiredTextureQueue=function(t){var e=this,r=e.eleImgCaches.retired=e.eleImgCaches.retired||{},n=r[t]=r[t]||[];return n};zi.getElementQueue=function(){var t=this,e=t.eleCacheQueue=t.eleCacheQueue||new bx(function(r,n){return n.reqs-r.reqs});return e};zi.getElementKeyToQueue=function(){var t=this,e=t.eleKeyToCacheQueue=t.eleKeyToCacheQueue||{};return e};zi.getElement=function(t,e,r,n,i){var a=this,s=this.renderer,l=s.cy.zoom(),u=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(gI(l*r))),n=Nhe||n>iI)return null;var h=Math.pow(2,n),f=e.h*h,d=e.w*h,p=s.eleTextBiggerThanMin(t,h);if(!this.isVisible(t,p))return null;var m=u.get(t,n);if(m&&m.invalidated&&(m.invalidated=!1,m.texture.invalidatedWidth-=m.width),m)return m;var g;if(f<=Hce?g=Hce:f<=Ok?g=Ok:g=Math.ceil(f/Ok)*Ok,f>wHe||d>THe)return null;var y=a.getTextureQueue(g),v=y[y.length-2],x=o(function(){return a.recycleTexture(g,d)||a.addTexture(g,d)},"addNewTxr");v||(v=y[y.length-1]),v||(v=x()),v.width-v.usedWidthn;L--)R=a.getElement(t,e,r,L,ng.downscale);I()}else return a.queueElement(t,k.level-1),k;else{var E;if(!T&&!S&&!w)for(var D=n-1;D>=Wk;D--){var _=u.get(t,D);if(_){E=_;break}}if(b(E))return a.queueElement(t,n),E;v.context.translate(v.usedWidth,0),v.context.scale(h,h),this.drawElement(v.context,t,e,p,!1),v.context.scale(1/h,1/h),v.context.translate(-v.usedWidth,0)}return m={x:v.usedWidth,texture:v,level:n,scale:h,width:d,height:f,scaledLabelShown:p},v.usedWidth+=Math.ceil(d+xHe),v.eleCaches.push(m),u.set(t,n,m),a.checkTextureFullness(v),m};zi.invalidateElements=function(t){for(var e=0;e=kHe*t.width&&this.retireTexture(t)};zi.checkTextureFullness=function(t){var e=this,r=e.getTextureQueue(t.height);t.usedWidth/t.width>EHe&&t.fullnessChecks>=SHe?wf(r,t):t.fullnessChecks++};zi.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,mI(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}};zi.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 l={eles:t.spawn().merge(t),level:e,reqs:1,key:a};n.push(l),i[a]=l}};zi.dequeue=function(t){for(var e=this,r=e.getElementQueue(),n=e.getElementKeyToQueue(),i=[],a=e.lookup,s=0;s0;s++){var l=r.pop(),u=l.key,h=l.eles[0],f=a.hasCache(h,l.level);if(n[u]=null,f)continue;i.push(l);var d=e.getBoundingBox(h);e.getElement(h,d,t,l.level,ng.dequeue)}return i};zi.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=dI,r.updateItem(a),r.pop(),n[i]=null):a.eles.unmerge(t))};zi.onDequeue=function(t){this.onDequeues.push(t)};zi.offDequeue=function(t){wf(this.onDequeues,t)};zi.setupDequeueing=Rhe.setupDequeueing({deqRedrawThreshold:LHe,deqCost:CHe,deqAvgCost:AHe,deqNoDrawCost:_He,deqFastCost:DHe,deq:o(function(e,r,n){return e.dequeue(r,n)},"deq"),onDeqd:o(function(e,r){for(var n=0;n=IHe||r>aE)return null}n.validateLayersElesOrdering(r,t);var u=n.layersByLevel,h=Math.pow(2,r),f=u[r]=u[r]||[],d,p=n.levelIsComplete(r,t),m,g=o(function(){var I=o(function(O){if(n.validateLayersElesOrdering(O,t),n.levelIsComplete(O,t))return m=u[O],!0},"canUseAsTmpLvl"),L=o(function(O){if(!m)for(var M=r+O;rx<=M&&M<=aE&&!I(M);M+=O);},"checkLvls");L(1),L(-1);for(var E=f.length-1;E>=0;E--){var D=f[E];D.invalid&&wf(f,D)}},"checkTempLevels");if(!p)g();else return f;var y=o(function(){if(!d){d=cs();for(var I=0;IWce||D>Wce)return null;var _=E*D;if(_>VHe)return null;var O=n.makeLayer(d,r);if(L!=null){var M=f.indexOf(L)+1;f.splice(M,0,O)}else(I.insert===void 0||I.insert)&&f.unshift(O);return O},"makeLayer");if(n.skipping&&!l)return null;for(var x=null,b=t.length/MHe,T=!l,S=0;S=b||!Aue(x.bb,w.boundingBox()))&&(x=v({insert:!0,after:x}),!x))return null;m||T?n.queueLayer(x,w):n.drawEleInLayer(x,w,r,e),x.eles.push(w),A[r]=x}return m||(T?null:f)};ba.getEleLevelForLayerLevel=function(t,e){return t};ba.drawEleInLayer=function(t,e,r,n){var i=this,a=this.renderer,s=t.context,l=e.boundingBox();l.w===0||l.h===0||!e.visible()||(r=i.getEleLevelForLayerLevel(r,n),a.setImgSmoothing(s,!1),a.drawCachedElement(s,e,null,null,r,UHe),a.setImgSmoothing(s,!0))};ba.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};ba.validateLayersElesOrdering=function(t,e){var r=this.layersByLevel[t];if(r)for(var n=0;n0){e=!0;break}}return e};ba.invalidateElements=function(t){var e=this;t.length!==0&&(e.lastInvalidationTime=Gu(),!(t.length===0||!e.haveLayers())&&e.updateElementsInLayers(t,o(function(n,i,a){e.invalidateLayer(n)},"invalAssocLayers")))};ba.invalidateLayer=function(t){if(this.lastInvalidationTime=Gu(),!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,l=e._private.rscratch;if(!(a&&!e.visible())&&!(l.badLine||l.allpts==null||isNaN(l.allpts[0]))){var u;r&&(u=r,t.translate(-u.x1,-u.y1));var h=a?e.pstyle("opacity").value:1,f=a?e.pstyle("line-opacity").value:1,d=e.pstyle("curve-style").value,p=e.pstyle("line-style").value,m=e.pstyle("width").pfValue,g=e.pstyle("line-cap").value,y=e.pstyle("line-outline-width").value,v=e.pstyle("line-outline-color").value,x=h*f,b=h*f,T=o(function(){var O=arguments.length>0&&arguments[0]!==void 0?arguments[0]:x;d==="straight-triangle"?(s.eleStrokeStyle(t,e,O),s.drawEdgeTrianglePath(e,t,l.allpts)):(t.lineWidth=m,t.lineCap=g,s.eleStrokeStyle(t,e,O),s.drawEdgePath(e,t,l.allpts,p),t.lineCap="butt")},"drawLine"),S=o(function(){var O=arguments.length>0&&arguments[0]!==void 0?arguments[0]:x;if(t.lineWidth=m+y,t.lineCap=g,y>0)s.colorStrokeStyle(t,v[0],v[1],v[2],O);else{t.lineCap="butt";return}d==="straight-triangle"?s.drawEdgeTrianglePath(e,t,l.allpts):(s.drawEdgePath(e,t,l.allpts,p),t.lineCap="butt")},"drawLineOutline"),w=o(function(){i&&s.drawEdgeOverlay(t,e)},"drawOverlay"),k=o(function(){i&&s.drawEdgeUnderlay(t,e)},"drawUnderlay"),A=o(function(){var O=arguments.length>0&&arguments[0]!==void 0?arguments[0]:b;s.drawArrowheads(t,e,O)},"drawArrows"),C=o(function(){s.drawElementText(t,e,null,n)},"drawText");t.lineJoin="round";var R=e.pstyle("ghost").value==="yes";if(R){var I=e.pstyle("ghost-offset-x").pfValue,L=e.pstyle("ghost-offset-y").pfValue,E=e.pstyle("ghost-opacity").value,D=x*E;t.translate(I,L),T(D),A(D),t.translate(-I,-L)}else S();k(),T(),A(),w(),C(),r&&t.translate(u.x1,u.y1)}};Ohe=o(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(),l=n._private.rscratch,u=n.pstyle("".concat(e,"-padding")).pfValue,h=2*u,f=n.pstyle("".concat(e,"-color")).value;r.lineWidth=h,l.edgeType==="self"&&!s?r.lineCap="butt":r.lineCap="round",a.colorStrokeStyle(r,f[0],f[1],f[2],i),a.drawEdgePath(n,r,l.allpts,"solid")}}}},"drawEdgeOverlayUnderlay");Hu.drawEdgeOverlay=Ohe("overlay");Hu.drawEdgeUnderlay=Ohe("underlay");Hu.drawEdgePath=function(t,e,r,n){var i=t._private.rscratch,a=e,s,l=!1,u=this.usePaths(),h=t.pstyle("line-dash-pattern").pfValue,f=t.pstyle("line-dash-offset").pfValue;if(u){var d=r.join("$"),p=i.pathCacheKey&&i.pathCacheKey===d;p?(s=e=i.pathCache,l=!0):(s=e=new Path2D,i.pathCacheKey=d,i.pathCache=s)}if(a.setLineDash)switch(n){case"dotted":a.setLineDash([1,1]);break;case"dashed":a.setLineDash(h),a.lineDashOffset=f;break;case"solid":a.setLineDash([]);break}if(!l&&!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 m=2;m+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 l=e.pstyle("label");if(!l||!l.value)return;var u=s.getLabelJustification(e);t.textAlign=u,t.textBaseline="bottom"}else{var h=e.element()._private.rscratch.badLine,f=e.pstyle("label"),d=e.pstyle("source-label"),p=e.pstyle("target-label");if(h||(!f||!f.value)&&(!d||!d.value)&&(!p||!p.value))return;t.textAlign="center",t.textBaseline="bottom"}var m=!r,g;r&&(g=r,t.translate(-g.x1,-g.y1)),i==null?(s.drawText(t,e,null,m,a),e.isEdge()&&(s.drawText(t,e,"source",m,a),s.drawText(t,e,"target",m,a))):s.drawText(t,e,i,m,a),r&&t.translate(g.x1,g.y1)};Cp.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,l=r?e.effectiveOpacity()*e.pstyle("text-opacity").value:1,u=e.pstyle("text-outline-opacity").value*l,h=e.pstyle("color").value,f=e.pstyle("text-outline-color").value;t.font=n+" "+s+" "+i+" "+a,t.lineJoin="round",this.colorFillStyle(t,h[0],h[1],h[2],l),this.colorStrokeStyle(t,f[0],f[1],f[2],u)};o(eqe,"circle");o(Kce,"roundRect");Cp.getTextAngle=function(t,e){var r,n=t._private,i=n.rscratch,a=e?e+"-":"",s=t.pstyle(a+"text-rotation");if(s.strValue==="autorotate"){var l=Us(i,"labelAngle",e);r=t.isEdge()?l:0}else s.strValue==="none"?r=0:r=s.pfValue;return r};Cp.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,l=i?e.effectiveOpacity():1;if(!(i&&(l===0||e.pstyle("text-opacity").value===0))){r==="main"&&(r=null);var u=Us(s,"labelX",r),h=Us(s,"labelY",r),f,d,p=this.getLabelText(e,r);if(p!=null&&p!==""&&!isNaN(u)&&!isNaN(h)){this.setupTextStyle(t,e,i);var m=r?r+"-":"",g=Us(s,"labelWidth",r),y=Us(s,"labelHeight",r),v=e.pstyle(m+"text-margin-x").pfValue,x=e.pstyle(m+"text-margin-y").pfValue,b=e.isEdge(),T=e.pstyle("text-halign").value,S=e.pstyle("text-valign").value;b&&(T="center",S="center"),u+=v,h+=x;var w;switch(n?w=this.getTextAngle(e,r):w=0,w!==0&&(f=u,d=h,t.translate(f,d),t.rotate(w),u=0,h=0),S){case"top":break;case"center":h+=y/2;break;case"bottom":h+=y;break}var k=e.pstyle("text-background-opacity").value,A=e.pstyle("text-border-opacity").value,C=e.pstyle("text-border-width").pfValue,R=e.pstyle("text-background-padding").pfValue,I=e.pstyle("text-background-shape").strValue,L=I==="round-rectangle"||I==="roundrectangle",E=I==="circle",D=2;if(k>0||C>0&&A>0){var _=t.fillStyle,O=t.strokeStyle,M=t.lineWidth,P=e.pstyle("text-background-color").value,B=e.pstyle("text-border-color").value,F=e.pstyle("text-border-style").value,G=k>0,$=C>0&&A>0,U=u-R;switch(T){case"left":U-=g;break;case"center":U-=g/2;break}var j=h-y-R,te=g+2*R,Y=y+2*R;if(G&&(t.fillStyle="rgba(".concat(P[0],",").concat(P[1],",").concat(P[2],",").concat(k*l,")")),$&&(t.strokeStyle="rgba(".concat(B[0],",").concat(B[1],",").concat(B[2],",").concat(A*l,")"),t.lineWidth=C,t.setLineDash))switch(F){case"dotted":t.setLineDash([1,1]);break;case"dashed":t.setLineDash([4,2]);break;case"double":t.lineWidth=C/4,t.setLineDash([]);break;case"solid":default:t.setLineDash([]);break}if(L?(t.beginPath(),Kce(t,U,j,te,Y,D)):E?(t.beginPath(),eqe(t,U,j,te,Y)):(t.beginPath(),t.rect(U,j,te,Y)),G&&t.fill(),$&&t.stroke(),$&&F==="double"){var oe=C/2;t.beginPath(),L?Kce(t,U+oe,j+oe,te-2*oe,Y-2*oe,D):t.rect(U+oe,j+oe,te-2*oe,Y-2*oe),t.stroke()}t.fillStyle=_,t.strokeStyle=O,t.lineWidth=M,t.setLineDash&&t.setLineDash([])}var J=2*e.pstyle("text-outline-width").pfValue;if(J>0&&(t.lineWidth=J),e.pstyle("text-wrap").value==="wrap"){var ue=Us(s,"labelWrapCachedLines",r),re=Us(s,"labelLineHeight",r),ee=g/2,Z=this.getLabelJustification(e);switch(Z==="auto"||(T==="left"?Z==="left"?u+=-g:Z==="center"&&(u+=-ee):T==="center"?Z==="left"?u+=-ee:Z==="right"&&(u+=ee):T==="right"&&(Z==="center"?u+=ee:Z==="right"&&(u+=g))),S){case"top":h-=(ue.length-1)*re;break;case"center":case"bottom":h-=(ue.length-1)*re;break}for(var K=0;K0&&t.strokeText(ue[K],u,h),t.fillText(ue[K],u,h),h+=re}else J>0&&t.strokeText(p,u,h),t.fillText(p,u,h);w!==0&&(t.rotate(-w),t.translate(-f,-d))}}};Lf={};Lf.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,l,u,h=e._private,f=h.rscratch,d=e.position();if(!(!At(d.x)||!At(d.y))&&!(a&&!e.visible())){var p=a?e.effectiveOpacity():1,m=s.usePaths(),g,y=!1,v=e.padding();l=e.width()+2*v,u=e.height()+2*v;var x;r&&(x=r,t.translate(-x.x1,-x.y1));for(var b=e.pstyle("background-image"),T=b.value,S=new Array(T.length),w=new Array(T.length),k=0,A=0;A0&&arguments[0]!==void 0?arguments[0]:D;s.eleFillStyle(t,e,W)},"setupShapeColor"),re=o(function(){var W=arguments.length>0&&arguments[0]!==void 0?arguments[0]:$;s.colorStrokeStyle(t,_[0],_[1],_[2],W)},"setupBorderColor"),ee=o(function(){var W=arguments.length>0&&arguments[0]!==void 0?arguments[0]:Y;s.colorStrokeStyle(t,j[0],j[1],j[2],W)},"setupOutlineColor"),Z=o(function(W,he,z,se){var le=s.nodePathCache=s.nodePathCache||[],ke=bue(z==="polygon"?z+","+se.join(","):z,""+he,""+W,""+J),ve=le[ke],ye,Re=!1;return ve!=null?(ye=ve,Re=!0,f.pathCache=ye):(ye=new Path2D,le[ke]=f.pathCache=ye),{path:ye,cacheHit:Re}},"getPath"),K=e.pstyle("shape").strValue,ae=e.pstyle("shape-polygon-points").pfValue;if(m){t.translate(d.x,d.y);var Q=Z(l,u,K,ae);g=Q.path,y=Q.cacheHit}var de=o(function(){if(!y){var W=d;m&&(W={x:0,y:0}),s.nodeShapes[s.getNodeShape(e)].draw(g||t,W.x,W.y,l,u,J,f)}m?t.fill(g):t.fill()},"drawShape"),ne=o(function(){for(var W=arguments.length>0&&arguments[0]!==void 0?arguments[0]:p,he=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0,z=h.backgrounding,se=0,le=0;le0&&arguments[0]!==void 0?arguments[0]:!1,he=arguments.length>1&&arguments[1]!==void 0?arguments[1]:p;s.hasPie(e)&&(s.drawPie(t,e,he),W&&(m||s.nodeShapes[s.getNodeShape(e)].draw(t,d.x,d.y,l,u,J,f)))},"drawPie"),q=o(function(){var W=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1,he=arguments.length>1&&arguments[1]!==void 0?arguments[1]:p;s.hasStripe(e)&&(t.save(),m?t.clip(f.pathCache):(s.nodeShapes[s.getNodeShape(e)].draw(t,d.x,d.y,l,u,J,f),t.clip()),s.drawStripe(t,e,he),t.restore(),W&&(m||s.nodeShapes[s.getNodeShape(e)].draw(t,d.x,d.y,l,u,J,f)))},"drawStripe"),Ve=o(function(){var W=arguments.length>0&&arguments[0]!==void 0?arguments[0]:p,he=(L>0?L:-L)*W,z=L>0?0:255;L!==0&&(s.colorFillStyle(t,z,z,z,he),m?t.fill(g):t.fill())},"darken"),pe=o(function(){if(E>0){if(t.lineWidth=E,t.lineCap=P,t.lineJoin=M,t.setLineDash)switch(O){case"dotted":t.setLineDash([1,1]);break;case"dashed":t.setLineDash(F),t.lineDashOffset=G;break;case"solid":case"double":t.setLineDash([]);break}if(B!=="center"){if(t.save(),t.lineWidth*=2,B==="inside")m?t.clip(g):t.clip();else{var W=new Path2D;W.rect(-l/2-E,-u/2-E,l+2*E,u+2*E),W.addPath(g),t.clip(W,"evenodd")}m?t.stroke(g):t.stroke(),t.restore()}else m?t.stroke(g):t.stroke();if(O==="double"){t.lineWidth=E/3;var he=t.globalCompositeOperation;t.globalCompositeOperation="destination-out",m?t.stroke(g):t.stroke(),t.globalCompositeOperation=he}t.setLineDash&&t.setLineDash([])}},"drawBorder"),Be=o(function(){if(U>0){if(t.lineWidth=U,t.lineCap="butt",t.setLineDash)switch(te){case"dotted":t.setLineDash([1,1]);break;case"dashed":t.setLineDash([4,2]);break;case"solid":case"double":t.setLineDash([]);break}var W=d;m&&(W={x:0,y:0});var he=s.getNodeShape(e),z=E;B==="inside"&&(z=0),B==="outside"&&(z*=2);var se=(l+z+(U+oe))/l,le=(u+z+(U+oe))/u,ke=l*se,ve=u*le,ye=s.nodeShapes[he].points,Re;if(m){var _e=Z(ke,ve,he,ye);Re=_e.path}if(he==="ellipse")s.drawEllipsePath(Re||t,W.x,W.y,ke,ve);else if(["round-diamond","round-heptagon","round-hexagon","round-octagon","round-pentagon","round-polygon","round-triangle","round-tag"].includes(he)){var ze=0,Ke=0,xt=0;he==="round-diamond"?ze=(z+oe+U)*1.4:he==="round-heptagon"?(ze=(z+oe+U)*1.075,xt=-(z/2+oe+U)/35):he==="round-hexagon"?ze=(z+oe+U)*1.12:he==="round-pentagon"?(ze=(z+oe+U)*1.13,xt=-(z/2+oe+U)/15):he==="round-tag"?(ze=(z+oe+U)*1.12,Ke=(z/2+U+oe)*.07):he==="round-triangle"&&(ze=(z+oe+U)*(Math.PI/2),xt=-(z+oe/2+U)/Math.PI),ze!==0&&(se=(l+ze)/l,ke=l*se,["round-hexagon","round-tag"].includes(he)||(le=(u+ze)/u,ve=u*le)),J=J==="auto"?Lue(ke,ve):J;for(var We=ke/2,Oe=ve/2,et=J+(z+U+oe)/2,Ue=new Array(ye.length/2),lt=new Array(ye.length/2),Gt=0;Gt0){if(i=i||n.position(),a==null||s==null){var m=n.padding();a=n.width()+2*m,s=n.height()+2*m}l.colorFillStyle(r,f[0],f[1],f[2],h),l.nodeShapes[d].draw(r,i.x,i.y,a+u*2,s+u*2,p),r.fill()}}}},"drawNodeOverlayUnderlay");Lf.drawNodeOverlay=Phe("overlay");Lf.drawNodeUnderlay=Phe("underlay");Lf.hasPie=function(t){return t=t[0],t._private.hasPie};Lf.hasStripe=function(t){return t=t[0],t._private.hasStripe};Lf.drawPie=function(t,e,r,n){e=e[0],n=n||e.position();var i=e.cy().style(),a=e.pstyle("pie-size"),s=e.pstyle("pie-hole"),l=e.pstyle("pie-start-angle").pfValue,u=n.x,h=n.y,f=e.width(),d=e.height(),p=Math.min(f,d)/2,m,g=0,y=this.usePaths();if(y&&(u=0,h=0),a.units==="%"?p=p*a.pfValue:a.pfValue!==void 0&&(p=a.pfValue/2),s.units==="%"?m=p*s.pfValue:s.pfValue!==void 0&&(m=s.pfValue/2),!(m>=p))for(var v=1;v<=i.pieBackgroundN;v++){var x=e.pstyle("pie-"+v+"-background-size").value,b=e.pstyle("pie-"+v+"-background-color").value,T=e.pstyle("pie-"+v+"-background-opacity").value*r,S=x/100;S+g>1&&(S=1-g);var w=1.5*Math.PI+2*Math.PI*g;w+=l;var k=2*Math.PI*S,A=w+k;x===0||g>=1||g+S>1||(m===0?(t.beginPath(),t.moveTo(u,h),t.arc(u,h,p,w,A),t.closePath()):(t.beginPath(),t.arc(u,h,p,w,A),t.arc(u,h,m,A,w,!0),t.closePath()),this.colorFillStyle(t,b[0],b[1],b[2],T),t.fill(),g+=S)}};Lf.drawStripe=function(t,e,r,n){e=e[0],n=n||e.position();var i=e.cy().style(),a=n.x,s=n.y,l=e.width(),u=e.height(),h=0,f=this.usePaths();t.save();var d=e.pstyle("stripe-direction").value,p=e.pstyle("stripe-size");switch(d){case"vertical":break;case"righward":t.rotate(-Math.PI/2);break}var m=l,g=u;p.units==="%"?(m=m*p.pfValue,g=g*p.pfValue):p.pfValue!==void 0&&(m=p.pfValue,g=p.pfValue),f&&(a=0,s=0),s-=m/2,a-=g/2;for(var y=1;y<=i.stripeBackgroundN;y++){var v=e.pstyle("stripe-"+y+"-background-size").value,x=e.pstyle("stripe-"+y+"-background-color").value,b=e.pstyle("stripe-"+y+"-background-opacity").value*r,T=v/100;T+h>1&&(T=1-h),!(v===0||h>=1||h+T>1)&&(t.beginPath(),t.rect(a,s+g*h,m,g*T),t.closePath(),this.colorFillStyle(t,x[0],x[1],x[2],b),t.fill(),h+=T)}t.restore()};us={},tqe=100;us.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};us.paintCache=function(t){for(var e=this.paintCaches=this.paintCaches||[],r=!0,n,i=0;ie.minMbLowQualFrames&&(e.motionBlurPxRatio=e.mbPxRBlurry)),e.clearingMotionBlur&&(e.motionBlurPxRatio=1),e.textureDrawLastFrame&&!d&&(f[e.NODE]=!0,f[e.SELECT_BOX]=!0);var b=r.style(),T=r.zoom(),S=s!==void 0?s:T,w=r.pan(),k={x:w.x,y:w.y},A={zoom:T,pan:{x:w.x,y:w.y}},C=e.prevViewport,R=C===void 0||A.zoom!==C.zoom||A.pan.x!==C.pan.x||A.pan.y!==C.pan.y;!R&&!(y&&!g)&&(e.motionBlurPxRatio=1),l&&(k=l),S*=u,k.x*=u,k.y*=u;var I=e.getCachedZSortedEles();function L(re,ee,Z,K,ae){var Q=re.globalCompositeOperation;re.globalCompositeOperation="destination-out",e.colorFillStyle(re,255,255,255,e.motionBlurTransparency),re.fillRect(ee,Z,K,ae),re.globalCompositeOperation=Q}o(L,"mbclear");function E(re,ee){var Z,K,ae,Q;!e.clearingMotionBlur&&(re===h.bufferContexts[e.MOTIONBLUR_BUFFER_NODE]||re===h.bufferContexts[e.MOTIONBLUR_BUFFER_DRAG])?(Z={x:w.x*m,y:w.y*m},K=T*m,ae=e.canvasWidth*m,Q=e.canvasHeight*m):(Z=k,K=S,ae=e.canvasWidth,Q=e.canvasHeight),re.setTransform(1,0,0,1,0,0),ee==="motionBlur"?L(re,0,0,ae,Q):!n&&(ee===void 0||ee)&&re.clearRect(0,0,ae,Q),i||(re.translate(Z.x,Z.y),re.scale(K,K)),l&&re.translate(l.x,l.y),s&&re.scale(s,s)}if(o(E,"setContextTransform"),d||(e.textureDrawLastFrame=!1),d){if(e.textureDrawLastFrame=!0,!e.textureCache){e.textureCache={},e.textureCache.bb=r.mutableElements().boundingBox(),e.textureCache.texture=e.data.bufferCanvases[e.TEXTURE_BUFFER];var D=e.data.bufferContexts[e.TEXTURE_BUFFER];D.setTransform(1,0,0,1,0,0),D.clearRect(0,0,e.canvasWidth*e.textureMult,e.canvasHeight*e.textureMult),e.render({forcedContext:D,drawOnlyNodeLayer:!0,forcedPxRatio:u*e.textureMult});var A=e.textureCache.viewport={zoom:r.zoom(),pan:r.pan(),width:e.canvasWidth,height:e.canvasHeight};A.mpan={x:(0-A.pan.x)/A.zoom,y:(0-A.pan.y)/A.zoom}}f[e.DRAG]=!1,f[e.NODE]=!1;var _=h.contexts[e.NODE],O=e.textureCache.texture,A=e.textureCache.viewport;_.setTransform(1,0,0,1,0,0),p?L(_,0,0,A.width,A.height):_.clearRect(0,0,A.width,A.height);var M=b.core("outside-texture-bg-color").value,P=b.core("outside-texture-bg-opacity").value;e.colorFillStyle(_,M[0],M[1],M[2],P),_.fillRect(0,0,A.width,A.height);var T=r.zoom();E(_,!1),_.clearRect(A.mpan.x,A.mpan.y,A.width/A.zoom/u,A.height/A.zoom/u),_.drawImage(O,A.mpan.x,A.mpan.y,A.width/A.zoom/u,A.height/A.zoom/u)}else e.textureOnViewport&&!n&&(e.textureCache=null);var B=r.extent(),F=e.pinching||e.hoverData.dragging||e.swipePanning||e.data.wheelZooming||e.hoverData.draggingEles||e.cy.animated(),G=e.hideEdgesOnViewport&&F,$=[];if($[e.NODE]=!f[e.NODE]&&p&&!e.clearedForMotionBlur[e.NODE]||e.clearingMotionBlur,$[e.NODE]&&(e.clearedForMotionBlur[e.NODE]=!0),$[e.DRAG]=!f[e.DRAG]&&p&&!e.clearedForMotionBlur[e.DRAG]||e.clearingMotionBlur,$[e.DRAG]&&(e.clearedForMotionBlur[e.DRAG]=!0),f[e.NODE]||i||a||$[e.NODE]){var U=p&&!$[e.NODE]&&m!==1,_=n||(U?e.data.bufferContexts[e.MOTIONBLUR_BUFFER_NODE]:h.contexts[e.NODE]),j=p&&!U?"motionBlur":void 0;E(_,j),G?e.drawCachedNodes(_,I.nondrag,u,B):e.drawLayeredElements(_,I.nondrag,u,B),e.debug&&e.drawDebugPoints(_,I.nondrag),!i&&!p&&(f[e.NODE]=!1)}if(!a&&(f[e.DRAG]||i||$[e.DRAG])){var U=p&&!$[e.DRAG]&&m!==1,_=n||(U?e.data.bufferContexts[e.MOTIONBLUR_BUFFER_DRAG]:h.contexts[e.DRAG]);E(_,p&&!U?"motionBlur":void 0),G?e.drawCachedNodes(_,I.drag,u,B):e.drawCachedElements(_,I.drag,u,B),e.debug&&e.drawDebugPoints(_,I.drag),!i&&!p&&(f[e.DRAG]=!1)}if(this.drawSelectionRectangle(t,E),p&&m!==1){var te=h.contexts[e.NODE],Y=e.data.bufferCanvases[e.MOTIONBLUR_BUFFER_NODE],oe=h.contexts[e.DRAG],J=e.data.bufferCanvases[e.MOTIONBLUR_BUFFER_DRAG],ue=o(function(ee,Z,K){ee.setTransform(1,0,0,1,0,0),K||!x?ee.clearRect(0,0,e.canvasWidth,e.canvasHeight):L(ee,0,0,e.canvasWidth,e.canvasHeight);var ae=m;ee.drawImage(Z,0,0,e.canvasWidth*ae,e.canvasHeight*ae,0,0,e.canvasWidth,e.canvasHeight)},"drawMotionBlur");(f[e.NODE]||$[e.NODE])&&(ue(te,Y,$[e.NODE]),f[e.NODE]=!1),(f[e.DRAG]||$[e.DRAG])&&(ue(oe,J,$[e.DRAG]),f[e.DRAG]=!1)}e.prevViewport=A,e.clearingMotionBlur&&(e.clearingMotionBlur=!1,e.motionBlurCleared=!0,e.motionBlur=!0),p&&(e.motionBlurTimeout=setTimeout(function(){e.motionBlurTimeout=null,e.clearedForMotionBlur[e.NODE]=!1,e.clearedForMotionBlur[e.DRAG]=!1,e.motionBlur=!1,e.clearingMotionBlur=!d,e.mbFrames=0,f[e.NODE]=!0,f[e.DRAG]=!0,e.redraw()},tqe)),n||r.emit("render")};us.drawSelectionRectangle=function(t,e){var r=this,n=r.cy,i=r.data,a=n.style(),s=t.drawOnlyNodeLayer,l=t.drawAllLayers,u=i.canvasNeedsRedraw,h=t.forcedContext;if(r.showFps||!s&&u[r.SELECT_BOX]&&!l){var f=h||i.contexts[r.SELECT_BOX];if(e(f),r.selection[4]==1&&(r.hoverData.selecting||r.touchData.selecting)){var d=r.cy.zoom(),p=a.core("selection-box-border-width").value/d;f.lineWidth=p,f.fillStyle="rgba("+a.core("selection-box-color").value[0]+","+a.core("selection-box-color").value[1]+","+a.core("selection-box-color").value[2]+","+a.core("selection-box-opacity").value+")",f.fillRect(r.selection[0],r.selection[1],r.selection[2]-r.selection[0],r.selection[3]-r.selection[1]),p>0&&(f.strokeStyle="rgba("+a.core("selection-box-border-color").value[0]+","+a.core("selection-box-border-color").value[1]+","+a.core("selection-box-border-color").value[2]+","+a.core("selection-box-opacity").value+")",f.strokeRect(r.selection[0],r.selection[1],r.selection[2]-r.selection[0],r.selection[3]-r.selection[1]))}if(i.bgActivePosistion&&!r.hoverData.selecting){var d=r.cy.zoom(),m=i.bgActivePosistion;f.fillStyle="rgba("+a.core("active-bg-color").value[0]+","+a.core("active-bg-color").value[1]+","+a.core("active-bg-color").value[2]+","+a.core("active-bg-opacity").value+")",f.beginPath(),f.arc(m.x,m.y,a.core("active-bg-size").pfValue/d,0,2*Math.PI),f.fill()}var g=r.lastRedrawTime;if(r.showFps&&g){g=Math.round(g);var y=Math.round(1e3/g),v="1 frame = "+g+" ms = "+y+" fps";if(f.setTransform(1,0,0,1,0,0),f.fillStyle="rgba(255, 0, 0, 0.75)",f.strokeStyle="rgba(255, 0, 0, 0.75)",f.font="30px Arial",!j2){var x=f.measureText(v);j2=x.actualBoundingBoxAscent}f.fillText(v,0,j2);var b=60;f.strokeRect(0,j2+10,250,20),f.fillRect(0,j2+10,250*Math.min(y/b,1),20)}l||(u[r.SELECT_BOX]=!1)}};o(Qce,"compileShader");o(rqe,"createProgram");o(nqe,"createTextureCanvas");o(MI,"getEffectivePanZoom");o(iqe,"getEffectiveZoom");o(aqe,"modelToRenderedPosition");o(sqe,"isSimpleShape");o(oqe,"arrayEqual");o(dp,"toWebGLColor");o(Zm,"indexToVec4");o(lqe,"vec4ToIndex");o(cqe,"createTexture");o(Bhe,"getTypeInfo");o(Fhe,"createTypedArray");o(uqe,"createTypedArrayView");o(hqe,"createBufferStaticDraw");o(Mc,"createBufferDynamicDraw");o(fqe,"create3x3MatrixBufferDynamicDraw");o(dqe,"createPickingFrameBuffer");Zce=typeof Float32Array<"u"?Float32Array:Array;Math.hypot||(Math.hypot=function(){for(var t=0,e=arguments.length;e--;)t+=arguments[e]*arguments[e];return Math.sqrt(t)});o(BM,"create");o(Jce,"identity");o(pqe,"multiply");o(Yk,"translate");o(eue,"rotate");o(aI,"scale");o(mqe,"projection");gqe=(function(){function t(e,r,n,i){Af(this,t),this.debugID=Math.floor(Math.random()*1e4),this.r=e,this.texSize=r,this.texRows=n,this.texHeight=Math.floor(r/n),this.enableWrapping=!0,this.locked=!1,this.texture=null,this.needsBuffer=!0,this.freePointer={x:0,row:0},this.keyToLocation=new Map,this.canvas=i(e,r,r),this.scratch=i(e,r,this.texHeight,"scratch")}return o(t,"Atlas"),_f(t,[{key:"lock",value:o(function(){this.locked=!0},"lock")},{key:"getKeys",value:o(function(){return new Set(this.keyToLocation.keys())},"getKeys")},{key:"getScale",value:o(function(r){var n=r.w,i=r.h,a=this.texHeight,s=this.texSize,l=a/i,u=n*l,h=i*l;return u>s&&(l=s/n,u=n*l,h=i*l),{scale:l,texW:u,texH:h}},"getScale")},{key:"draw",value:o(function(r,n,i){var a=this;if(this.locked)throw new Error("can't draw, atlas is locked");var s=this.texSize,l=this.texRows,u=this.texHeight,h=this.getScale(n),f=h.scale,d=h.texW,p=h.texH,m=o(function(T,S){if(i&&S){var w=S.context,k=T.x,A=T.row,C=k,R=u*A;w.save(),w.translate(C,R),w.scale(f,f),i(w,n),w.restore()}},"drawAt"),g=[null,null],y=o(function(){m(a.freePointer,a.canvas),g[0]={x:a.freePointer.x,y:a.freePointer.row*u,w:d,h:p},g[1]={x:a.freePointer.x+d,y:a.freePointer.row*u,w:0,h:p},a.freePointer.x+=d,a.freePointer.x==s&&(a.freePointer.x=0,a.freePointer.row++)},"drawNormal"),v=o(function(){var T=a.scratch,S=a.canvas;T.clear(),m({x:0,row:0},T);var w=s-a.freePointer.x,k=d-w,A=u;{var C=a.freePointer.x,R=a.freePointer.row*u,I=w;S.context.drawImage(T,0,0,I,A,C,R,I,A),g[0]={x:C,y:R,w:I,h:p}}{var L=w,E=(a.freePointer.row+1)*u,D=k;S&&S.context.drawImage(T,L,0,D,A,0,E,D,A),g[1]={x:0,y:E,w:D,h:p}}a.freePointer.x=k,a.freePointer.row++},"drawWrapped"),x=o(function(){a.freePointer.x=0,a.freePointer.row++},"moveToStartOfNextRow");if(this.freePointer.x+d<=s)y();else{if(this.freePointer.row>=l-1)return!1;this.freePointer.x===s?(x(),y()):this.enableWrapping?v():(x(),y())}return this.keyToLocation.set(r,g),this.needsBuffer=!0,g},"draw")},{key:"getOffsets",value:o(function(r){return this.keyToLocation.get(r)},"getOffsets")},{key:"isEmpty",value:o(function(){return this.freePointer.x===0&&this.freePointer.row===0},"isEmpty")},{key:"canFit",value:o(function(r){if(this.locked)return!1;var n=this.texSize,i=this.texRows,a=this.getScale(r),s=a.texW;return this.freePointer.x+s>n?this.freePointer.row1&&arguments[1]!==void 0?arguments[1]:{},a=i.forceRedraw,s=a===void 0?!1:a,l=i.filterEle,u=l===void 0?function(){return!0}:l,h=i.filterType,f=h===void 0?function(){return!0}:h,d=!1,p=!1,m=qs(r),g;try{for(m.s();!(g=m.n()).done;){var y=g.value;if(u(y)){var v=qs(this.renderTypes.values()),x;try{var b=o(function(){var S=x.value,w=S.type;if(f(w)){var k=n.collections.get(S.collection),A=S.getKey(y),C=Array.isArray(A)?A:[A];if(s)C.forEach(function(E){return k.markKeyForGC(E)}),p=!0;else{var R=S.getID?S.getID(y):y.id(),I=n._key(w,R),L=n.typeAndIdToKey.get(I);L!==void 0&&!oqe(C,L)&&(d=!0,n.typeAndIdToKey.delete(I),L.forEach(function(E){return k.markKeyForGC(E)}))}}},"_loop2");for(v.s();!(x=v.n()).done;)b()}catch(T){v.e(T)}finally{v.f()}}}}catch(T){m.e(T)}finally{m.f()}return p&&(this.gc(),d=!1),d},"invalidate")},{key:"gc",value:o(function(){var r=qs(this.collections.values()),n;try{for(r.s();!(n=r.n()).done;){var i=n.value;i.gc()}}catch(a){r.e(a)}finally{r.f()}},"gc")},{key:"getOrCreateAtlas",value:o(function(r,n,i,a){var s=this.renderTypes.get(n),l=this.collections.get(s.collection),u=!1,h=l.draw(a,i,function(p){s.drawClipped?(p.save(),p.beginPath(),p.rect(0,0,i.w,i.h),p.clip(),s.drawElement(p,r,i,!0,!0),p.restore()):s.drawElement(p,r,i,!0,!0),u=!0});if(u){var f=s.getID?s.getID(r):r.id(),d=this._key(n,f);this.typeAndIdToKey.has(d)?this.typeAndIdToKey.get(d).push(a):this.typeAndIdToKey.set(d,[a])}return h},"getOrCreateAtlas")},{key:"getAtlasInfo",value:o(function(r,n){var i=this,a=this.renderTypes.get(n),s=a.getKey(r),l=Array.isArray(s)?s:[s];return l.map(function(u){var h=a.getBoundingBox(r,u),f=i.getOrCreateAtlas(r,n,h,u),d=f.getOffsets(u),p=_i(d,2),m=p[0],g=p[1];return{atlas:f,tex:m,tex1:m,tex2:g,bb:h}})},"getAtlasInfo")},{key:"getDebugInfo",value:o(function(){var r=[],n=qs(this.collections),i;try{for(n.s();!(i=n.n()).done;){var a=_i(i.value,2),s=a[0],l=a[1],u=l.getCounts(),h=u.keyCount,f=u.atlasCount;r.push({type:s,keyCount:h,atlasCount:f})}}catch(d){n.e(d)}finally{n.f()}return r},"getDebugInfo")}])})(),bqe=(function(){function t(e){Af(this,t),this.globalOptions=e,this.atlasSize=e.webglTexSize,this.maxAtlasesPerBatch=e.webglTexPerBatch,this.batchAtlases=[]}return o(t,"AtlasBatchManager"),_f(t,[{key:"getMaxAtlasesPerBatch",value:o(function(){return this.maxAtlasesPerBatch},"getMaxAtlasesPerBatch")},{key:"getAtlasSize",value:o(function(){return this.atlasSize},"getAtlasSize")},{key:"getIndexArray",value:o(function(){return Array.from({length:this.maxAtlasesPerBatch},function(r,n){return n})},"getIndexArray")},{key:"startBatch",value:o(function(){this.batchAtlases=[]},"startBatch")},{key:"getAtlasCount",value:o(function(){return this.batchAtlases.length},"getAtlasCount")},{key:"getAtlases",value:o(function(){return this.batchAtlases},"getAtlases")},{key:"canAddToCurrentBatch",value:o(function(r){return this.batchAtlases.length===this.maxAtlasesPerBatch?this.batchAtlases.includes(r):!0},"canAddToCurrentBatch")},{key:"getAtlasIndexForBatch",value:o(function(r){var n=this.batchAtlases.indexOf(r);if(n<0){if(this.batchAtlases.length===this.maxAtlasesPerBatch)throw new Error("cannot add more atlases to batch");this.batchAtlases.push(r),n=this.batchAtlases.length-1}return n},"getAtlasIndexForBatch")}])})(),Tqe=` - float circleSD(vec2 p, float r) { - return distance(vec2(0), p) - r; // signed distance - } -`,wqe=` - float rectangleSD(vec2 p, vec2 b) { - vec2 d = abs(p)-b; - return distance(vec2(0),max(d,0.0)) + min(max(d.x,d.y),0.0); - } -`,kqe=` - float roundRectangleSD(vec2 p, vec2 b, vec4 cr) { - cr.xy = (p.x > 0.0) ? cr.xy : cr.zw; - cr.x = (p.y > 0.0) ? cr.x : cr.y; - vec2 q = abs(p) - b + cr.x; - return min(max(q.x, q.y), 0.0) + distance(vec2(0), max(q, 0.0)) - cr.x; - } -`,Eqe=` - float ellipseSD(vec2 p, vec2 ab) { - p = abs( p ); // symmetry - - // find root with Newton solver - vec2 q = ab*(p-ab); - float w = (q.x1.0) ? d : -d; - } -`,nx={SCREEN:{name:"screen",screen:!0},PICKING:{name:"picking",picking:!0}},sE={IGNORE:1,USE_BB:2},FM=0,tue=1,rue=2,$M=3,Jm=4,Pk=5,K2=6,Q2=7,Sqe=(function(){function t(e,r,n){Af(this,t),this.r=e,this.gl=r,this.maxInstances=n.webglBatchSize,this.atlasSize=n.webglTexSize,this.bgColor=n.bgColor,this.debug=n.webglDebug,this.batchDebugInfo=[],n.enableWrapping=!0,n.createTextureCanvas=nqe,this.atlasManager=new xqe(e,n),this.batchManager=new bqe(n),this.simpleShapeOptions=new Map,this.program=this._createShaderProgram(nx.SCREEN),this.pickingProgram=this._createShaderProgram(nx.PICKING),this.vao=this._createVAO()}return o(t,"ElementDrawingWebGL"),_f(t,[{key:"addAtlasCollection",value:o(function(r,n){this.atlasManager.addAtlasCollection(r,n)},"addAtlasCollection")},{key:"addTextureAtlasRenderType",value:o(function(r,n){this.atlasManager.addRenderType(r,n)},"addTextureAtlasRenderType")},{key:"addSimpleShapeRenderType",value:o(function(r,n){this.simpleShapeOptions.set(r,n)},"addSimpleShapeRenderType")},{key:"invalidate",value:o(function(r){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},i=n.type,a=this.atlasManager;return i?a.invalidate(r,{filterType:o(function(l){return l===i},"filterType"),forceRedraw:!0}):a.invalidate(r)},"invalidate")},{key:"gc",value:o(function(){this.atlasManager.gc()},"gc")},{key:"_createShaderProgram",value:o(function(r){var n=this.gl,i=`#version 300 es - precision highp float; - - uniform mat3 uPanZoomMatrix; - uniform int uAtlasSize; - - // instanced - in vec2 aPosition; // a vertex from the unit square - - in mat3 aTransform; // used to transform verticies, eg into a bounding box - in int aVertType; // the type of thing we are rendering - - // the z-index that is output when using picking mode - in vec4 aIndex; - - // For textures - in int aAtlasId; // which shader unit/atlas to use - in vec4 aTex; // x/y/w/h of texture in atlas - - // for edges - in vec4 aPointAPointB; - in vec4 aPointCPointD; - in vec2 aLineWidth; // also used for node border width - - // simple shapes - in vec4 aCornerRadius; // for round-rectangle [top-right, bottom-right, top-left, bottom-left] - in vec4 aColor; // also used for edges - in vec4 aBorderColor; // aLineWidth is used for border width - - // output values passed to the fragment shader - out vec2 vTexCoord; - out vec4 vColor; - out vec2 vPosition; - // flat values are not interpolated - flat out int vAtlasId; - flat out int vVertType; - flat out vec2 vTopRight; - flat out vec2 vBotLeft; - flat out vec4 vCornerRadius; - flat out vec4 vBorderColor; - flat out vec2 vBorderWidth; - flat out vec4 vIndex; - - void main(void) { - int vid = gl_VertexID; - vec2 position = aPosition; // TODO make this a vec3, simplifies some code below - - if(aVertType == `.concat(FM,`) { - float texX = aTex.x; // texture coordinates - float texY = aTex.y; - float texW = aTex.z; - float texH = aTex.w; - - if(vid == 1 || vid == 2 || vid == 4) { - texX += texW; - } - if(vid == 2 || vid == 4 || vid == 5) { - texY += texH; - } - - float d = float(uAtlasSize); - vTexCoord = vec2(texX / d, texY / d); // tex coords must be between 0 and 1 - - gl_Position = vec4(uPanZoomMatrix * aTransform * vec3(position, 1.0), 1.0); - } - else if(aVertType == `).concat(Jm," || aVertType == ").concat(Q2,` - || aVertType == `).concat(Pk," || aVertType == ").concat(K2,`) { // simple shapes - - // the bounding box is needed by the fragment shader - vBotLeft = (aTransform * vec3(0, 0, 1)).xy; // flat - vTopRight = (aTransform * vec3(1, 1, 1)).xy; // flat - vPosition = (aTransform * vec3(position, 1)).xy; // will be interpolated - - // calculations are done in the fragment shader, just pass these along - vColor = aColor; - vCornerRadius = aCornerRadius; - vBorderColor = aBorderColor; - vBorderWidth = aLineWidth; - - gl_Position = vec4(uPanZoomMatrix * aTransform * vec3(position, 1.0), 1.0); - } - else if(aVertType == `).concat(tue,`) { - vec2 source = aPointAPointB.xy; - vec2 target = aPointAPointB.zw; - - // adjust the geometry so that the line is centered on the edge - position.y = position.y - 0.5; - - // stretch the unit square into a long skinny rectangle - vec2 xBasis = target - source; - vec2 yBasis = normalize(vec2(-xBasis.y, xBasis.x)); - vec2 point = source + xBasis * position.x + yBasis * aLineWidth[0] * position.y; - - gl_Position = vec4(uPanZoomMatrix * vec3(point, 1.0), 1.0); - vColor = aColor; - } - else if(aVertType == `).concat(rue,`) { - vec2 pointA = aPointAPointB.xy; - vec2 pointB = aPointAPointB.zw; - vec2 pointC = aPointCPointD.xy; - vec2 pointD = aPointCPointD.zw; - - // adjust the geometry so that the line is centered on the edge - position.y = position.y - 0.5; - - vec2 p0, p1, p2, pos; - if(position.x == 0.0) { // The left side of the unit square - p0 = pointA; - p1 = pointB; - p2 = pointC; - pos = position; - } else { // The right side of the unit square, use same approach but flip the geometry upside down - p0 = pointD; - p1 = pointC; - p2 = pointB; - pos = vec2(0.0, -position.y); - } - - vec2 p01 = p1 - p0; - vec2 p12 = p2 - p1; - vec2 p21 = p1 - p2; - - // Find the normal vector. - vec2 tangent = normalize(normalize(p12) + normalize(p01)); - vec2 normal = vec2(-tangent.y, tangent.x); - - // Find the vector perpendicular to p0 -> p1. - vec2 p01Norm = normalize(vec2(-p01.y, p01.x)); - - // Determine the bend direction. - float sigma = sign(dot(p01 + p21, normal)); - float width = aLineWidth[0]; - - if(sign(pos.y) == -sigma) { - // This is an intersecting vertex. Adjust the position so that there's no overlap. - vec2 point = 0.5 * width * normal * -sigma / dot(normal, p01Norm); - gl_Position = vec4(uPanZoomMatrix * vec3(p1 + point, 1.0), 1.0); - } else { - // This is a non-intersecting vertex. Treat it like a mitre join. - vec2 point = 0.5 * width * normal * sigma * dot(normal, p01Norm); - gl_Position = vec4(uPanZoomMatrix * vec3(p1 + point, 1.0), 1.0); - } - - vColor = aColor; - } - else if(aVertType == `).concat($M,` && vid < 3) { - // massage the first triangle into an edge arrow - if(vid == 0) - position = vec2(-0.15, -0.3); - if(vid == 1) - position = vec2( 0.0, 0.0); - if(vid == 2) - position = vec2( 0.15, -0.3); - - gl_Position = vec4(uPanZoomMatrix * aTransform * vec3(position, 1.0), 1.0); - vColor = aColor; - } - else { - gl_Position = vec4(2.0, 0.0, 0.0, 1.0); // discard vertex by putting it outside webgl clip space - } - - vAtlasId = aAtlasId; - vVertType = aVertType; - vIndex = aIndex; - } - `),a=this.batchManager.getIndexArray(),s=`#version 300 es - precision highp float; - - // declare texture unit for each texture atlas in the batch - `.concat(a.map(function(h){return"uniform sampler2D uTexture".concat(h,";")}).join(` - `),` - - uniform vec4 uBGColor; - uniform float uZoom; - - in vec2 vTexCoord; - in vec4 vColor; - in vec2 vPosition; // model coordinates - - flat in int vAtlasId; - flat in vec4 vIndex; - flat in int vVertType; - flat in vec2 vTopRight; - flat in vec2 vBotLeft; - flat in vec4 vCornerRadius; - flat in vec4 vBorderColor; - flat in vec2 vBorderWidth; - - out vec4 outColor; - - `).concat(Tqe,` - `).concat(wqe,` - `).concat(kqe,` - `).concat(Eqe,` - - vec4 blend(vec4 top, vec4 bot) { // blend colors with premultiplied alpha - return vec4( - top.rgb + (bot.rgb * (1.0 - top.a)), - top.a + (bot.a * (1.0 - top.a)) - ); - } - - vec4 distInterp(vec4 cA, vec4 cB, float d) { // interpolate color using Signed Distance - // scale to the zoom level so that borders don't look blurry when zoomed in - // note 1.5 is an aribitrary value chosen because it looks good - return mix(cA, cB, 1.0 - smoothstep(0.0, 1.5 / uZoom, abs(d))); - } - - void main(void) { - if(vVertType == `).concat(FM,`) { - // look up the texel from the texture unit - `).concat(a.map(function(h){return"if(vAtlasId == ".concat(h,") outColor = texture(uTexture").concat(h,", vTexCoord);")}).join(` - else `),` - } - else if(vVertType == `).concat($M,`) { - // mimics how canvas renderer uses context.globalCompositeOperation = 'destination-out'; - outColor = blend(vColor, uBGColor); - outColor.a = 1.0; // make opaque, masks out line under arrow - } - else if(vVertType == `).concat(Jm,` && vBorderWidth == vec2(0.0)) { // simple rectangle with no border - outColor = vColor; // unit square is already transformed to the rectangle, nothing else needs to be done - } - else if(vVertType == `).concat(Jm," || vVertType == ").concat(Q2,` - || vVertType == `).concat(Pk," || vVertType == ").concat(K2,`) { // use SDF - - float outerBorder = vBorderWidth[0]; - float innerBorder = vBorderWidth[1]; - float borderPadding = outerBorder * 2.0; - float w = vTopRight.x - vBotLeft.x - borderPadding; - float h = vTopRight.y - vBotLeft.y - borderPadding; - vec2 b = vec2(w/2.0, h/2.0); // half width, half height - vec2 p = vPosition - vec2(vTopRight.x - b[0] - outerBorder, vTopRight.y - b[1] - outerBorder); // translate to center - - float d; // signed distance - if(vVertType == `).concat(Jm,`) { - d = rectangleSD(p, b); - } else if(vVertType == `).concat(Q2,` && w == h) { - d = circleSD(p, b.x); // faster than ellipse - } else if(vVertType == `).concat(Q2,`) { - d = ellipseSD(p, b); - } else { - d = roundRectangleSD(p, b, vCornerRadius.wzyx); - } - - // use the distance to interpolate a color to smooth the edges of the shape, doesn't need multisampling - // we must smooth colors inwards, because we can't change pixels outside the shape's bounding box - if(d > 0.0) { - if(d > outerBorder) { - discard; - } else { - outColor = distInterp(vBorderColor, vec4(0), d - outerBorder); - } - } else { - if(d > innerBorder) { - vec4 outerColor = outerBorder == 0.0 ? vec4(0) : vBorderColor; - vec4 innerBorderColor = blend(vBorderColor, vColor); - outColor = distInterp(innerBorderColor, outerColor, d); - } - else { - vec4 outerColor; - if(innerBorder == 0.0 && outerBorder == 0.0) { - outerColor = vec4(0); - } else if(innerBorder == 0.0) { - outerColor = vBorderColor; - } else { - outerColor = blend(vBorderColor, vColor); - } - outColor = distInterp(vColor, outerColor, d - innerBorder); - } - } - } - else { - outColor = vColor; - } - - `).concat(r.picking?`if(outColor.a == 0.0) discard; - else outColor = vIndex;`:"",` - } - `),l=rqe(n,i,s);l.aPosition=n.getAttribLocation(l,"aPosition"),l.aIndex=n.getAttribLocation(l,"aIndex"),l.aVertType=n.getAttribLocation(l,"aVertType"),l.aTransform=n.getAttribLocation(l,"aTransform"),l.aAtlasId=n.getAttribLocation(l,"aAtlasId"),l.aTex=n.getAttribLocation(l,"aTex"),l.aPointAPointB=n.getAttribLocation(l,"aPointAPointB"),l.aPointCPointD=n.getAttribLocation(l,"aPointCPointD"),l.aLineWidth=n.getAttribLocation(l,"aLineWidth"),l.aColor=n.getAttribLocation(l,"aColor"),l.aCornerRadius=n.getAttribLocation(l,"aCornerRadius"),l.aBorderColor=n.getAttribLocation(l,"aBorderColor"),l.uPanZoomMatrix=n.getUniformLocation(l,"uPanZoomMatrix"),l.uAtlasSize=n.getUniformLocation(l,"uAtlasSize"),l.uBGColor=n.getUniformLocation(l,"uBGColor"),l.uZoom=n.getUniformLocation(l,"uZoom"),l.uTextures=[];for(var u=0;u1&&arguments[1]!==void 0?arguments[1]:nx.SCREEN;this.panZoomMatrix=r,this.renderTarget=n,this.batchDebugInfo=[],this.wrappedCount=0,this.simpleCount=0,this.startBatch()},"startFrame")},{key:"startBatch",value:o(function(){this.instanceCount=0,this.batchManager.startBatch()},"startBatch")},{key:"endFrame",value:o(function(){this.endBatch()},"endFrame")},{key:"_isVisible",value:o(function(r,n){return r.visible()?n&&n.isVisible?n.isVisible(r):!0:!1},"_isVisible")},{key:"drawTexture",value:o(function(r,n,i){var a=this.atlasManager,s=this.batchManager,l=a.getRenderTypeOpts(i);if(this._isVisible(r,l)&&!(r.isEdge()&&!this._isValidEdge(r))){if(this.renderTarget.picking&&l.getTexPickingMode){var u=l.getTexPickingMode(r);if(u===sE.IGNORE)return;if(u==sE.USE_BB){this.drawPickingRectangle(r,n,i);return}}var h=a.getAtlasInfo(r,i),f=qs(h),d;try{for(f.s();!(d=f.n()).done;){var p=d.value,m=p.atlas,g=p.tex1,y=p.tex2;s.canAddToCurrentBatch(m)||this.endBatch();for(var v=s.getAtlasIndexForBatch(m),x=0,b=[[g,!0],[y,!1]];x=this.maxInstances&&this.endBatch()}}}}catch(L){f.e(L)}finally{f.f()}}},"drawTexture")},{key:"setTransformMatrix",value:o(function(r,n,i,a){var s=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!0,l=0;if(i.shapeProps&&i.shapeProps.padding&&(l=r.pstyle(i.shapeProps.padding).pfValue),a){var u=a.bb,h=a.tex1,f=a.tex2,d=h.w/(h.w+f.w);s||(d=1-d);var p=this._getAdjustedBB(u,l,s,d);this._applyTransformMatrix(n,p,i,r)}else{var m=i.getBoundingBox(r),g=this._getAdjustedBB(m,l,!0,1);this._applyTransformMatrix(n,g,i,r)}},"setTransformMatrix")},{key:"_applyTransformMatrix",value:o(function(r,n,i,a){var s,l;Jce(r);var u=i.getRotation?i.getRotation(a):0;if(u!==0){var h=i.getRotationPoint(a),f=h.x,d=h.y;Yk(r,r,[f,d]),eue(r,r,u);var p=i.getRotationOffset(a);s=p.x+(n.xOffset||0),l=p.y+(n.yOffset||0)}else s=n.x1,l=n.y1;Yk(r,r,[s,l]),aI(r,r,[n.w,n.h])},"_applyTransformMatrix")},{key:"_getAdjustedBB",value:o(function(r,n,i,a){var s=r.x1,l=r.y1,u=r.w,h=r.h,f=r.yOffset;n&&(s-=n,l-=n,u+=2*n,h+=2*n);var d=0,p=u*a;return i&&a<1?u=p:!i&&a<1&&(d=u-p,s+=d,u=p),{x1:s,y1:l,w:u,h,xOffset:d,yOffset:f}},"_getAdjustedBB")},{key:"drawPickingRectangle",value:o(function(r,n,i){var a=this.atlasManager.getRenderTypeOpts(i),s=this.instanceCount;this.vertTypeBuffer.getView(s)[0]=Jm;var l=this.indexBuffer.getView(s);Zm(n,l);var u=this.colorBuffer.getView(s);dp([0,0,0],1,u);var h=this.transformBuffer.getMatrixView(s);this.setTransformMatrix(r,h,a),this.simpleCount++,this.instanceCount++,this.instanceCount>=this.maxInstances&&this.endBatch()},"drawPickingRectangle")},{key:"drawNode",value:o(function(r,n,i){var a=this.simpleShapeOptions.get(i);if(this._isVisible(r,a)){var s=a.shapeProps,l=this._getVertTypeForShape(r,s.shape);if(l===void 0||a.isSimple&&!a.isSimple(r)){this.drawTexture(r,n,i);return}var u=this.instanceCount;if(this.vertTypeBuffer.getView(u)[0]=l,l===Pk||l===K2){var h=a.getBoundingBox(r),f=this._getCornerRadius(r,s.radius,h),d=this.cornerRadiusBuffer.getView(u);d[0]=f,d[1]=f,d[2]=f,d[3]=f,l===K2&&(d[0]=0,d[2]=0)}var p=this.indexBuffer.getView(u);Zm(n,p);var m=r.pstyle(s.color).value,g=r.pstyle(s.opacity).value,y=this.colorBuffer.getView(u);dp(m,g,y);var v=this.lineWidthBuffer.getView(u);if(v[0]=0,v[1]=0,s.border){var x=r.pstyle("border-width").value;if(x>0){var b=r.pstyle("border-color").value,T=r.pstyle("border-opacity").value,S=this.borderColorBuffer.getView(u);dp(b,T,S);var w=r.pstyle("border-position").value;if(w==="inside")v[0]=0,v[1]=-x;else if(w==="outside")v[0]=x,v[1]=0;else{var k=x/2;v[0]=k,v[1]=-k}}}var A=this.transformBuffer.getMatrixView(u);this.setTransformMatrix(r,A,a),this.simpleCount++,this.instanceCount++,this.instanceCount>=this.maxInstances&&this.endBatch()}},"drawNode")},{key:"_getVertTypeForShape",value:o(function(r,n){var i=r.pstyle(n).value;switch(i){case"rectangle":return Jm;case"ellipse":return Q2;case"roundrectangle":case"round-rectangle":return Pk;case"bottom-round-rectangle":return K2;default:return}},"_getVertTypeForShape")},{key:"_getCornerRadius",value:o(function(r,n,i){var a=i.w,s=i.h;if(r.pstyle(n).value==="auto")return kf(a,s);var l=r.pstyle(n).pfValue,u=a/2,h=s/2;return Math.min(l,h,u)},"_getCornerRadius")},{key:"drawEdgeArrow",value:o(function(r,n,i){if(r.visible()){var a=r._private.rscratch,s,l,u;if(i==="source"?(s=a.arrowStartX,l=a.arrowStartY,u=a.srcArrowAngle):(s=a.arrowEndX,l=a.arrowEndY,u=a.tgtArrowAngle),!(isNaN(s)||s==null||isNaN(l)||l==null||isNaN(u)||u==null)){var h=r.pstyle(i+"-arrow-shape").value;if(h!=="none"){var f=r.pstyle(i+"-arrow-color").value,d=r.pstyle("opacity").value,p=r.pstyle("line-opacity").value,m=d*p,g=r.pstyle("width").pfValue,y=r.pstyle("arrow-scale").value,v=this.r.getArrowWidth(g,y),x=this.instanceCount,b=this.transformBuffer.getMatrixView(x);Jce(b),Yk(b,b,[s,l]),aI(b,b,[v,v]),eue(b,b,u),this.vertTypeBuffer.getView(x)[0]=$M;var T=this.indexBuffer.getView(x);Zm(n,T);var S=this.colorBuffer.getView(x);dp(f,m,S),this.instanceCount++,this.instanceCount>=this.maxInstances&&this.endBatch()}}}},"drawEdgeArrow")},{key:"drawEdgeLine",value:o(function(r,n){if(r.visible()){var i=this._getEdgePoints(r);if(i){var a=r.pstyle("opacity").value,s=r.pstyle("line-opacity").value,l=r.pstyle("width").pfValue,u=r.pstyle("line-color").value,h=a*s;if(i.length/2+this.instanceCount>this.maxInstances&&this.endBatch(),i.length==4){var f=this.instanceCount;this.vertTypeBuffer.getView(f)[0]=tue;var d=this.indexBuffer.getView(f);Zm(n,d);var p=this.colorBuffer.getView(f);dp(u,h,p);var m=this.lineWidthBuffer.getView(f);m[0]=l;var g=this.pointAPointBBuffer.getView(f);g[0]=i[0],g[1]=i[1],g[2]=i[2],g[3]=i[3],this.instanceCount++,this.instanceCount>=this.maxInstances&&this.endBatch()}else for(var y=0;y=this.maxInstances&&this.endBatch()}}}},"drawEdgeLine")},{key:"_isValidEdge",value:o(function(r){var n=r._private.rscratch;return!(n.badLine||n.allpts==null||isNaN(n.allpts[0]))},"_isValidEdge")},{key:"_getEdgePoints",value:o(function(r){var n=r._private.rscratch;if(this._isValidEdge(r)){var i=n.allpts;if(i.length==4)return i;var a=this._getNumSegments(r);return this._getCurveSegmentPoints(i,a)}},"_getEdgePoints")},{key:"_getNumSegments",value:o(function(r){var n=15;return Math.min(Math.max(n,5),this.maxInstances)},"_getNumSegments")},{key:"_getCurveSegmentPoints",value:o(function(r,n){if(r.length==4)return r;for(var i=Array((n+1)*2),a=0;a<=n;a++)if(a==0)i[0]=r[0],i[1]=r[1];else if(a==n)i[a*2]=r[r.length-2],i[a*2+1]=r[r.length-1];else{var s=a/n;this._setCurvePoint(r,s,i,a*2)}return i},"_getCurveSegmentPoints")},{key:"_setCurvePoint",value:o(function(r,n,i,a){if(r.length<=2)i[a]=r[0],i[a+1]=r[1];else{for(var s=Array(r.length-2),l=0;l0}},"isLayerVisible"),l=o(function(d){var p=d.pstyle("text-events").strValue==="yes";return p?sE.USE_BB:sE.IGNORE},"getTexPickingMode"),u=o(function(d){var p=d.position(),m=p.x,g=p.y,y=d.outerWidth(),v=d.outerHeight();return{w:y,h:v,x1:m-y/2,y1:g-v/2}},"getBBForSimpleShape");r.drawing.addAtlasCollection("node",{texRows:t.webglTexRowsNodes}),r.drawing.addAtlasCollection("label",{texRows:t.webglTexRows}),r.drawing.addTextureAtlasRenderType("node-body",{collection:"node",getKey:e.getStyleKey,getBoundingBox:e.getElementBox,drawElement:e.drawElement}),r.drawing.addSimpleShapeRenderType("node-body",{getBoundingBox:u,isSimple:sqe,shapeProps:{shape:"shape",color:"background-color",opacity:"background-opacity",radius:"corner-radius",border:!0}}),r.drawing.addSimpleShapeRenderType("node-overlay",{getBoundingBox:u,isVisible:s("overlay"),shapeProps:{shape:"overlay-shape",color:"overlay-color",opacity:"overlay-opacity",padding:"overlay-padding",radius:"overlay-corner-radius"}}),r.drawing.addSimpleShapeRenderType("node-underlay",{getBoundingBox:u,isVisible:s("underlay"),shapeProps:{shape:"underlay-shape",color:"underlay-color",opacity:"underlay-opacity",padding:"underlay-padding",radius:"underlay-corner-radius"}}),r.drawing.addTextureAtlasRenderType("label",{collection:"label",getTexPickingMode:l,getKey:zM(e.getLabelKey,null),getBoundingBox:GM(e.getLabelBox,null),drawClipped:!0,drawElement:e.drawLabel,getRotation:i(null),getRotationPoint:e.getLabelRotationPoint,getRotationOffset:e.getLabelRotationOffset,isVisible:a("label")}),r.drawing.addTextureAtlasRenderType("edge-source-label",{collection:"label",getTexPickingMode:l,getKey:zM(e.getSourceLabelKey,"source"),getBoundingBox:GM(e.getSourceLabelBox,"source"),drawClipped:!0,drawElement:e.drawSourceLabel,getRotation:i("source"),getRotationPoint:e.getSourceLabelRotationPoint,getRotationOffset:e.getSourceLabelRotationOffset,isVisible:a("source-label")}),r.drawing.addTextureAtlasRenderType("edge-target-label",{collection:"label",getTexPickingMode:l,getKey:zM(e.getTargetLabelKey,"target"),getBoundingBox:GM(e.getTargetLabelBox,"target"),drawClipped:!0,drawElement:e.drawTargetLabel,getRotation:i("target"),getRotationPoint:e.getTargetLabelRotationPoint,getRotationOffset:e.getTargetLabelRotationOffset,isVisible:a("target-label")});var h=xx(function(){console.log("garbage collect flag set"),r.data.gc=!0},1e4);r.onUpdateEleCalcs(function(f,d){var p=!1;d&&d.length>0&&(p|=r.drawing.invalidate(d)),p&&h()}),Aqe(r)};o(Cqe,"getBGColor");o(zhe,"getLabelLines");zM=o(function(e,r){return function(n){var i=e(n),a=zhe(n,r);return a.length>1?a.map(function(s,l){return"".concat(i,"_").concat(l)}):i}},"getStyleKeysForLabel"),GM=o(function(e,r){return function(n,i){var a=e(n);if(typeof i=="string"){var s=i.indexOf("_");if(s>0){var l=Number(i.substring(s+1)),u=zhe(n,r),h=a.h/u.length,f=h*l,d=a.y1+f;return{x1:a.x1,w:a.w,y1:d,h,yOffset:f}}}return a}},"getBoundingBoxForLabel");o(Aqe,"overrideCanvasRendererFunctions");o(_qe,"clearWebgl");o(Dqe,"clearCanvas");o(Lqe,"createPanZoomMatrix");o(Ghe,"setContextTransform");o(Rqe,"drawSelectionRectangle");o(Nqe,"drawAxes");o(Mqe,"drawAtlases");o(Iqe,"getPickingIndexes");o(Oqe,"findNearestElementsWebgl");o(VM,"drawEle");o(Vhe,"renderWebgl");Rf={};Rf.drawPolygonPath=function(t,e,r,n,i,a){var s=n/2,l=i/2;t.beginPath&&t.beginPath(),t.moveTo(e+s*a[0],r+l*a[1]);for(var u=1;u0&&s>0){m.clearRect(0,0,a,s),m.globalCompositeOperation="source-over";var g=this.getCachedZSortedEles();if(t.full)m.translate(-n.x1*h,-n.y1*h),m.scale(h,h),this.drawElements(m,g),m.scale(1/h,1/h),m.translate(n.x1*h,n.y1*h);else{var y=e.pan(),v={x:y.x*h,y:y.y*h};h*=e.zoom(),m.translate(v.x,v.y),m.scale(h,h),this.drawElements(m,g),m.scale(1/h,1/h),m.translate(-v.x,-v.y)}t.bg&&(m.globalCompositeOperation="destination-over",m.fillStyle=t.bg,m.rect(0,0,a,s),m.fill())}return p};o(Pqe,"b64ToBlob");o(aue,"b64UriToB64");o(Hhe,"output");Sx.png=function(t){return Hhe(t,this.bufferCanvasImage(t),"image/png")};Sx.jpg=function(t){return Hhe(t,this.bufferCanvasImage(t),"image/jpeg")};qhe={};qhe.nodeShapeImpl=function(t,e,r,n,i,a,s,l){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,l);case"roundrectangle":case"round-rectangle":return this.drawRoundRectanglePath(e,r,n,i,a,l);case"cutrectangle":case"cut-rectangle":return this.drawCutRectanglePath(e,r,n,i,a,s,l);case"bottomroundrectangle":case"bottom-round-rectangle":return this.drawBottomRoundRectanglePath(e,r,n,i,a,l);case"barrel":return this.drawBarrelPath(e,r,n,i,a)}};Bqe=Whe,Cr=Whe.prototype;Cr.CANVAS_LAYERS=3;Cr.SELECT_BOX=0;Cr.DRAG=1;Cr.NODE=2;Cr.WEBGL=3;Cr.CANVAS_TYPES=["2d","2d","2d","webgl2"];Cr.BUFFER_COUNT=3;Cr.TEXTURE_BUFFER=0;Cr.MOTIONBLUR_BUFFER_NODE=1;Cr.MOTIONBLUR_BUFFER_DRAG=2;o(Whe,"CanvasRenderer");Cr.redrawHint=function(t,e){var r=this;switch(t){case"eles":r.data.canvasNeedsRedraw[Cr.NODE]=e;break;case"drag":r.data.canvasNeedsRedraw[Cr.DRAG]=e;break;case"select":r.data.canvasNeedsRedraw[Cr.SELECT_BOX]=e;break;case"gc":r.data.gc=!0;break}};Fqe=typeof Path2D<"u";Cr.path2dEnabled=function(t){if(t===void 0)return this.pathsEnabled;this.pathsEnabled=!!t};Cr.usePaths=function(){return Fqe&&this.pathsEnabled};Cr.setImgSmoothing=function(t,e){t.imageSmoothingEnabled!=null?t.imageSmoothingEnabled=e:(t.webkitImageSmoothingEnabled=e,t.mozImageSmoothingEnabled=e,t.msImageSmoothingEnabled=e)};Cr.getImgSmoothing=function(t){return t.imageSmoothingEnabled!=null?t.imageSmoothingEnabled:t.webkitImageSmoothingEnabled||t.mozImageSmoothingEnabled||t.msImageSmoothingEnabled};Cr.makeOffscreenCanvas=function(t,e){var r;if((typeof OffscreenCanvas>"u"?"undefined":$i(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};[Ihe,Fc,Hu,NI,Cp,Lf,us,$he,Rf,Sx,qhe].forEach(function(t){ir(Cr,t)});$qe=[{name:"null",impl:bhe},{name:"base",impl:Lhe},{name:"canvas",impl:Bqe}],zqe=[{type:"layout",extensions:hHe},{type:"renderer",extensions:$qe}],Yhe={},Xhe={};o(jhe,"setExtension");o(Khe,"getExtension");o(Gqe,"setModule");o(Vqe,"getModule");lI=o(function(){if(arguments.length===2)return Khe.apply(null,arguments);if(arguments.length===3)return jhe.apply(null,arguments);if(arguments.length===4)return Vqe.apply(null,arguments);if(arguments.length===5)return Gqe.apply(null,arguments);Kn("Invalid extension access syntax")},"extension");fx.prototype.extension=lI;zqe.forEach(function(t){t.extensions.forEach(function(e){jhe(t.type,e.name,e.impl)})});oE=o(function(){if(!(this instanceof oE))return new oE;this.length=0},"Stylesheet"),Ep=oE.prototype;Ep.instanceString=function(){return"stylesheet"};Ep.selector=function(t){var e=this.length++;return this[e]={selector:t,properties:[]},this};Ep.css=function(t,e){var r=this.length-1;if(Jt(t))this[r].properties.push({name:t,value:e});else if(Yr(t))for(var n=t,i=Object.keys(n),a=0;a{"use strict";o((function(e,r){typeof Cx=="object"&&typeof OI=="object"?OI.exports=r():typeof define=="function"&&define.amd?define([],r):typeof Cx=="object"?Cx.layoutBase=r():e.layoutBase=r()}),"webpackUniversalModuleDefinition")(Cx,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 o(r,"__webpack_require__"),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?o(function(){return n.default},"getDefault"):o(function(){return n},"getModuleExports");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(){}o(n,"LayoutConstants"),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(u,h,f){n.call(this,f),this.isOverlapingSourceAndTarget=!1,this.vGraphObject=f,this.bendpoints=[],this.source=u,this.target=h}o(s,"LEdge"),s.prototype=Object.create(n.prototype);for(var l in n)s[l]=n[l];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(u){if(this.source===u)return this.target;if(this.target===u)return this.source;throw"Node is not incident with this edge"},s.prototype.getOtherEndInGraph=function(u,h){for(var f=this.getOtherEnd(u),d=h.getGraphManager().getRoot();;){if(f.getOwner()==h)return f;if(f.getOwner()==d)break;f=f.getOwner().getParent()}return null},s.prototype.updateLength=function(){var u=new Array(4);this.isOverlapingSourceAndTarget=i.getIntersection(this.target.getRect(),this.source.getRect(),u),this.isOverlapingSourceAndTarget||(this.lengthX=u[0]-u[2],this.lengthY=u[1]-u[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}o(n,"LGraphObject"),t.exports=n}),(function(t,e,r){"use strict";var n=r(2),i=r(10),a=r(13),s=r(0),l=r(16),u=r(4);function h(d,p,m,g){m==null&&g==null&&(g=p),n.call(this,g),d.graphManager!=null&&(d=d.graphManager),this.estimatedSize=i.MIN_VALUE,this.inclusionTreeDepth=i.MAX_VALUE,this.vGraphObject=g,this.edges=[],this.graphManager=d,m!=null&&p!=null?this.rect=new a(p.x,p.y,m.width,m.height):this.rect=new a}o(h,"LNode"),h.prototype=Object.create(n.prototype);for(var f in n)h[f]=n[f];h.prototype.getEdges=function(){return this.edges},h.prototype.getChild=function(){return this.child},h.prototype.getOwner=function(){return this.owner},h.prototype.getWidth=function(){return this.rect.width},h.prototype.setWidth=function(d){this.rect.width=d},h.prototype.getHeight=function(){return this.rect.height},h.prototype.setHeight=function(d){this.rect.height=d},h.prototype.getCenterX=function(){return this.rect.x+this.rect.width/2},h.prototype.getCenterY=function(){return this.rect.y+this.rect.height/2},h.prototype.getCenter=function(){return new u(this.rect.x+this.rect.width/2,this.rect.y+this.rect.height/2)},h.prototype.getLocation=function(){return new u(this.rect.x,this.rect.y)},h.prototype.getRect=function(){return this.rect},h.prototype.getDiagonal=function(){return Math.sqrt(this.rect.width*this.rect.width+this.rect.height*this.rect.height)},h.prototype.getHalfTheDiagonal=function(){return Math.sqrt(this.rect.height*this.rect.height+this.rect.width*this.rect.width)/2},h.prototype.setRect=function(d,p){this.rect.x=d.x,this.rect.y=d.y,this.rect.width=p.width,this.rect.height=p.height},h.prototype.setCenter=function(d,p){this.rect.x=d-this.rect.width/2,this.rect.y=p-this.rect.height/2},h.prototype.setLocation=function(d,p){this.rect.x=d,this.rect.y=p},h.prototype.moveBy=function(d,p){this.rect.x+=d,this.rect.y+=p},h.prototype.getEdgeListToNode=function(d){var p=[],m,g=this;return g.edges.forEach(function(y){if(y.target==d){if(y.source!=g)throw"Incorrect edge source!";p.push(y)}}),p},h.prototype.getEdgesBetween=function(d){var p=[],m,g=this;return g.edges.forEach(function(y){if(!(y.source==g||y.target==g))throw"Incorrect edge source and/or target";(y.target==d||y.source==d)&&p.push(y)}),p},h.prototype.getNeighborsList=function(){var d=new Set,p=this;return p.edges.forEach(function(m){if(m.source==p)d.add(m.target);else{if(m.target!=p)throw"Incorrect incidency!";d.add(m.source)}}),d},h.prototype.withChildren=function(){var d=new Set,p,m;if(d.add(this),this.child!=null)for(var g=this.child.getNodes(),y=0;yp&&(this.rect.x-=(this.labelWidth-p)/2,this.setWidth(this.labelWidth)),this.labelHeight>m&&(this.labelPos=="center"?this.rect.y-=(this.labelHeight-m)/2:this.labelPos=="top"&&(this.rect.y-=this.labelHeight-m),this.setHeight(this.labelHeight))}}},h.prototype.getInclusionTreeDepth=function(){if(this.inclusionTreeDepth==i.MAX_VALUE)throw"assert failed";return this.inclusionTreeDepth},h.prototype.transform=function(d){var p=this.rect.x;p>s.WORLD_BOUNDARY?p=s.WORLD_BOUNDARY:p<-s.WORLD_BOUNDARY&&(p=-s.WORLD_BOUNDARY);var m=this.rect.y;m>s.WORLD_BOUNDARY?m=s.WORLD_BOUNDARY:m<-s.WORLD_BOUNDARY&&(m=-s.WORLD_BOUNDARY);var g=new u(p,m),y=d.inverseTransformPoint(g);this.setLocation(y.x,y.y)},h.prototype.getLeft=function(){return this.rect.x},h.prototype.getRight=function(){return this.rect.x+this.rect.width},h.prototype.getTop=function(){return this.rect.y},h.prototype.getBottom=function(){return this.rect.y+this.rect.height},h.prototype.getParent=function(){return this.owner==null?null:this.owner.getParent()},t.exports=h}),(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)}o(n,"PointD"),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),l=r(3),u=r(1),h=r(13),f=r(12),d=r(11);function p(g,y,v){n.call(this,v),this.estimatedSize=i.MIN_VALUE,this.margin=a.DEFAULT_GRAPH_MARGIN,this.edges=[],this.nodes=[],this.isConnected=!1,this.parent=g,y!=null&&y instanceof s?this.graphManager=y:y!=null&&y instanceof Layout&&(this.graphManager=y.graphManager)}o(p,"LGraph"),p.prototype=Object.create(n.prototype);for(var m in n)p[m]=n[m];p.prototype.getNodes=function(){return this.nodes},p.prototype.getEdges=function(){return this.edges},p.prototype.getGraphManager=function(){return this.graphManager},p.prototype.getParent=function(){return this.parent},p.prototype.getLeft=function(){return this.left},p.prototype.getRight=function(){return this.right},p.prototype.getTop=function(){return this.top},p.prototype.getBottom=function(){return this.bottom},p.prototype.isConnected=function(){return this.isConnected},p.prototype.add=function(g,y,v){if(y==null&&v==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(y)>-1&&this.getNodes().indexOf(v)>-1))throw"Source or target not in graph!";if(!(y.owner==v.owner&&y.owner==this))throw"Both owners must be this graph!";return y.owner!=v.owner?null:(b.source=y,b.target=v,b.isInterGraph=!1,this.getEdges().push(b),y.edges.push(b),v!=y&&v.edges.push(b),b)}},p.prototype.remove=function(g){var y=g;if(g instanceof l){if(y==null)throw"Node is null!";if(!(y.owner!=null&&y.owner==this))throw"Owner graph is invalid!";if(this.graphManager==null)throw"Owner graph manager is invalid!";for(var v=y.edges.slice(),x,b=v.length,T=0;T-1&&k>-1))throw"Source and/or target doesn't know this edge!";x.source.edges.splice(w,1),x.target!=x.source&&x.target.edges.splice(k,1);var S=x.source.owner.getEdges().indexOf(x);if(S==-1)throw"Not in owner's edge list!";x.source.owner.getEdges().splice(S,1)}},p.prototype.updateLeftTop=function(){for(var g=i.MAX_VALUE,y=i.MAX_VALUE,v,x,b,T=this.getNodes(),S=T.length,w=0;wv&&(g=v),y>x&&(y=x)}return g==i.MAX_VALUE?null:(T[0].getParent().paddingLeft!=null?b=T[0].getParent().paddingLeft:b=this.margin,this.left=y-b,this.top=g-b,new f(this.left,this.top))},p.prototype.updateBounds=function(g){for(var y=i.MAX_VALUE,v=-i.MAX_VALUE,x=i.MAX_VALUE,b=-i.MAX_VALUE,T,S,w,k,A,C=this.nodes,R=C.length,I=0;IT&&(y=T),vw&&(x=w),bT&&(y=T),vw&&(x=w),b=this.nodes.length){var R=0;v.forEach(function(I){I.owner==g&&R++}),R==this.nodes.length&&(this.isConnected=!0)}},t.exports=p}),(function(t,e,r){"use strict";var n,i=r(1);function a(s){n=r(5),this.layout=s,this.graphs=[],this.edges=[]}o(a,"LGraphManager"),a.prototype.addRoot=function(){var s=this.layout.newGraph(),l=this.layout.newNode(null),u=this.add(s,l);return this.setRootGraph(u),this.rootGraph},a.prototype.add=function(s,l,u,h,f){if(u==null&&h==null&&f==null){if(s==null)throw"Graph is null!";if(l==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(l.child!=null)throw"Already has a child!";return s.parent=l,l.child=s,s}else{f=u,h=l,u=s;var d=h.getOwner(),p=f.getOwner();if(!(d!=null&&d.getGraphManager()==this))throw"Source not in this graph mgr!";if(!(p!=null&&p.getGraphManager()==this))throw"Target not in this graph mgr!";if(d==p)return u.isInterGraph=!1,d.add(u,h,f);if(u.isInterGraph=!0,u.source=h,u.target=f,this.edges.indexOf(u)>-1)throw"Edge already in inter-graph edge list!";if(this.edges.push(u),!(u.source!=null&&u.target!=null))throw"Edge source and/or target is null!";if(!(u.source.edges.indexOf(u)==-1&&u.target.edges.indexOf(u)==-1))throw"Edge already in source and/or target incidency list!";return u.source.edges.push(u),u.target.edges.push(u),u}},a.prototype.remove=function(s){if(s instanceof n){var l=s;if(l.getGraphManager()!=this)throw"Graph not in this graph mgr";if(!(l==this.rootGraph||l.parent!=null&&l.parent.graphManager==this))throw"Invalid parent node!";var u=[];u=u.concat(l.getEdges());for(var h,f=u.length,d=0;d=s.getRight()?l[0]+=Math.min(s.getX()-a.getX(),a.getRight()-s.getRight()):s.getX()<=a.getX()&&s.getRight()>=a.getRight()&&(l[0]+=Math.min(a.getX()-s.getX(),s.getRight()-a.getRight())),a.getY()<=s.getY()&&a.getBottom()>=s.getBottom()?l[1]+=Math.min(s.getY()-a.getY(),a.getBottom()-s.getBottom()):s.getY()<=a.getY()&&s.getBottom()>=a.getBottom()&&(l[1]+=Math.min(a.getY()-s.getY(),s.getBottom()-a.getBottom()));var f=Math.abs((s.getCenterY()-a.getCenterY())/(s.getCenterX()-a.getCenterX()));s.getCenterY()===a.getCenterY()&&s.getCenterX()===a.getCenterX()&&(f=1);var d=f*l[0],p=l[1]/f;l[0]d)return l[0]=u,l[1]=m,l[2]=f,l[3]=C,!1;if(hf)return l[0]=p,l[1]=h,l[2]=k,l[3]=d,!1;if(uf?(l[0]=y,l[1]=v,E=!0):(l[0]=g,l[1]=m,E=!0):_===M&&(u>f?(l[0]=p,l[1]=m,E=!0):(l[0]=x,l[1]=v,E=!0)),-O===M?f>u?(l[2]=A,l[3]=C,D=!0):(l[2]=k,l[3]=w,D=!0):O===M&&(f>u?(l[2]=S,l[3]=w,D=!0):(l[2]=R,l[3]=C,D=!0)),E&&D)return!1;if(u>f?h>d?(P=this.getCardinalDirection(_,M,4),B=this.getCardinalDirection(O,M,2)):(P=this.getCardinalDirection(-_,M,3),B=this.getCardinalDirection(-O,M,1)):h>d?(P=this.getCardinalDirection(-_,M,1),B=this.getCardinalDirection(-O,M,3)):(P=this.getCardinalDirection(_,M,2),B=this.getCardinalDirection(O,M,4)),!E)switch(P){case 1:G=m,F=u+-T/M,l[0]=F,l[1]=G;break;case 2:F=x,G=h+b*M,l[0]=F,l[1]=G;break;case 3:G=v,F=u+T/M,l[0]=F,l[1]=G;break;case 4:F=y,G=h+-b*M,l[0]=F,l[1]=G;break}if(!D)switch(B){case 1:U=w,$=f+-L/M,l[2]=$,l[3]=U;break;case 2:$=R,U=d+I*M,l[2]=$,l[3]=U;break;case 3:U=C,$=f+L/M,l[2]=$,l[3]=U;break;case 4:$=A,U=d+-I*M,l[2]=$,l[3]=U;break}}return!1},i.getCardinalDirection=function(a,s,l){return a>s?l:1+l%4},i.getIntersection=function(a,s,l,u){if(u==null)return this.getIntersection2(a,s,l);var h=a.x,f=a.y,d=s.x,p=s.y,m=l.x,g=l.y,y=u.x,v=u.y,x=void 0,b=void 0,T=void 0,S=void 0,w=void 0,k=void 0,A=void 0,C=void 0,R=void 0;return T=p-f,w=h-d,A=d*f-h*p,S=v-g,k=m-y,C=y*g-m*v,R=T*k-S*w,R===0?null:(x=(w*C-k*A)/R,b=(S*A-T*C)/R,new n(x,b))},i.angleOfVector=function(a,s,l,u){var h=void 0;return a!==l?(h=Math.atan((u-s)/(l-a)),l0?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(){}o(n,"Integer"),n.MAX_VALUE=2147483647,n.MIN_VALUE=-2147483648,t.exports=n}),(function(t,e,r){"use strict";var n=(function(){function h(f,d){for(var p=0;p"u"?"undefined":n(a);return a==null||s!="object"&&s!="function"},t.exports=i}),(function(t,e,r){"use strict";function n(m){if(Array.isArray(m)){for(var g=0,y=Array(m.length);g0&&g;){for(T.push(w[0]);T.length>0&&g;){var k=T[0];T.splice(0,1),b.add(k);for(var A=k.getEdges(),x=0;x-1&&w.splice(L,1)}b=new Set,S=new Map}}return m},p.prototype.createDummyNodesForBendpoints=function(m){for(var g=[],y=m.source,v=this.graphManager.calcLowestCommonAncestor(m.source,m.target),x=0;x0){for(var v=this.edgeToDummyNodes.get(y),x=0;x=0&&g.splice(C,1);var R=S.getNeighborsList();R.forEach(function(E){if(y.indexOf(E)<0){var D=v.get(E),_=D-1;_==1&&k.push(E),v.set(E,_)}})}y=y.concat(k),(g.length==1||g.length==2)&&(x=!0,b=g[0])}return b},p.prototype.setGraphManager=function(m){this.graphManager=m},t.exports=p}),(function(t,e,r){"use strict";function n(){}o(n,"RandomSeed"),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}o(i,"Transform"),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,l=this.lworldExtX;return l!=0&&(s=this.ldeviceOrgX+(a-this.lworldOrgX)*this.ldeviceExtX/l),s},i.prototype.transformY=function(a){var s=0,l=this.lworldExtY;return l!=0&&(s=this.ldeviceOrgY+(a-this.lworldOrgY)*this.ldeviceExtY/l),s},i.prototype.inverseTransformX=function(a){var s=0,l=this.ldeviceExtX;return l!=0&&(s=this.lworldOrgX+(a-this.ldeviceOrgX)*this.lworldExtX/l),s},i.prototype.inverseTransformY=function(a){var s=0,l=this.ldeviceExtY;return l!=0&&(s=this.lworldOrgY+(a-this.ldeviceOrgY)*this.lworldExtY/l),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(d){if(Array.isArray(d)){for(var p=0,m=Array(d.length);pa.ADAPTATION_LOWER_NODE_LIMIT&&(this.coolingFactor=Math.max(this.coolingFactor*a.COOLING_ADAPTATION_FACTOR,this.coolingFactor-(d-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):(d>a.ADAPTATION_LOWER_NODE_LIMIT?this.coolingFactor=Math.max(a.COOLING_ADAPTATION_FACTOR,1-(d-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()},h.prototype.calcSpringForces=function(){for(var d=this.getAllEdges(),p,m=0;m0&&arguments[0]!==void 0?arguments[0]:!0,p=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,m,g,y,v,x=this.getAllNodes(),b;if(this.useFRGridVariant)for(this.totalIterations%a.GRID_CALCULATION_CHECK_PERIOD==1&&d&&this.updateGrid(),b=new Set,m=0;mT||b>T)&&(d.gravitationForceX=-this.gravityConstant*y,d.gravitationForceY=-this.gravityConstant*v)):(T=p.getEstimatedSize()*this.compoundGravityRangeFactor,(x>T||b>T)&&(d.gravitationForceX=-this.gravityConstant*y*this.compoundGravityConstant,d.gravitationForceY=-this.gravityConstant*v*this.compoundGravityConstant))},h.prototype.isConverged=function(){var d,p=!1;return this.totalIterations>this.maxIterations/3&&(p=Math.abs(this.totalDisplacement-this.oldTotalDisplacement)<2),d=this.totalDisplacement=x.length||T>=x[0].length)){for(var S=0;Sh},"_defaultCompareFunction")}]),l})();t.exports=s}),(function(t,e,r){"use strict";var n=(function(){function s(l,u){for(var h=0;h2&&arguments[2]!==void 0?arguments[2]:1,f=arguments.length>3&&arguments[3]!==void 0?arguments[3]:-1,d=arguments.length>4&&arguments[4]!==void 0?arguments[4]:-1;i(this,s),this.sequence1=l,this.sequence2=u,this.match_score=h,this.mismatch_penalty=f,this.gap_penalty=d,this.iMax=l.length+1,this.jMax=u.length+1,this.grid=new Array(this.iMax);for(var p=0;p=0;l--){var u=this.listeners[l];u.event===a&&u.callback===s&&this.listeners.splice(l,1)}},i.emit=function(a,s){for(var l=0;l{"use strict";o((function(e,r){typeof Ax=="object"&&typeof BI=="object"?BI.exports=r(PI()):typeof define=="function"&&define.amd?define(["layout-base"],r):typeof Ax=="object"?Ax.coseBase=r(PI()):e.coseBase=r(e.layoutBase)}),"webpackUniversalModuleDefinition")(Ax,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 o(n,"__webpack_require__"),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?o(function(){return i.default},"getDefault"):o(function(){return i},"getModuleExports");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(){}o(a,"CoSEConstants");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(l,u,h){i.call(this,l,u,h)}o(a,"CoSEEdge"),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(l,u,h){i.call(this,l,u,h)}o(a,"CoSEGraph"),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(l){i.call(this,l)}o(a,"CoSEGraphManager"),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(u,h,f,d){i.call(this,u,h,f,d)}o(s,"CoSENode"),s.prototype=Object.create(i.prototype);for(var l in i)s[l]=i[l];s.prototype.move=function(){var u=this.graphManager.getLayout();this.displacementX=u.coolingFactor*(this.springForceX+this.repulsionForceX+this.gravitationForceX)/this.noOfChildren,this.displacementY=u.coolingFactor*(this.springForceY+this.repulsionForceY+this.gravitationForceY)/this.noOfChildren,Math.abs(this.displacementX)>u.coolingFactor*u.maxNodeDisplacement&&(this.displacementX=u.coolingFactor*u.maxNodeDisplacement*a.sign(this.displacementX)),Math.abs(this.displacementY)>u.coolingFactor*u.maxNodeDisplacement&&(this.displacementY=u.coolingFactor*u.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),u.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(u,h){for(var f=this.getChild().getNodes(),d,p=0;p0)this.positionNodesRadially(w);else{this.reduceTrees(),this.graphManager.resetAllNodesToApplyGravitation();var k=new Set(this.getAllNodes()),A=this.nodesWithGravity.filter(function(C){return k.has(C)});this.graphManager.setAllNodesToApplyGravitation(A),this.positionNodesRandomly()}}return this.initSpringEmbedder(),this.runSpringEmbedder(),!0},T.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%f.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 w=new Set(this.getAllNodes()),k=this.nodesWithGravity.filter(function(R){return w.has(R)});this.graphManager.setAllNodesToApplyGravitation(k),this.graphManager.updateBounds(),this.updateGrid(),this.coolingFactor=f.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=f.DEFAULT_COOLING_FACTOR_INCREMENTAL*((100-this.afterGrowthIterations)/100),this.afterGrowthIterations++}var A=!this.isTreeGrowing&&!this.isGrowthFinished,C=this.growTreeIterations%10==1&&this.isTreeGrowing||this.afterGrowthIterations%10==1&&this.isGrowthFinished;return this.totalDisplacement=0,this.graphManager.updateBounds(),this.calcSpringForces(),this.calcRepulsionForces(A,C),this.calcGravitationalForces(),this.moveNodes(),this.animate(),!1},T.prototype.getPositionsData=function(){for(var w=this.graphManager.getAllNodes(),k={},A=0;A1){var E;for(E=0;EC&&(C=Math.floor(L.y)),I=Math.floor(L.x+h.DEFAULT_COMPONENT_SEPERATION)}this.transform(new m(d.WORLD_CENTER_X-L.x/2,d.WORLD_CENTER_Y-L.y/2))},T.radialLayout=function(w,k,A){var C=Math.max(this.maxDiagonalInTree(w),h.DEFAULT_RADIAL_SEPARATION);T.branchRadialLayout(k,null,0,359,0,C);var R=x.calculateBounds(w),I=new b;I.setDeviceOrgX(R.getMinX()),I.setDeviceOrgY(R.getMinY()),I.setWorldOrgX(A.x),I.setWorldOrgY(A.y);for(var L=0;L1;){var j=U[0];U.splice(0,1);var te=P.indexOf(j);te>=0&&P.splice(te,1),G--,B--}k!=null?$=(P.indexOf(U[0])+1)%G:$=0;for(var Y=Math.abs(C-A)/B,oe=$;F!=B;oe=++oe%G){var J=P[oe].getOtherEnd(w);if(J!=k){var ue=(A+F*Y)%360,re=(ue+Y)%360;T.branchRadialLayout(J,w,ue,re,R+I,I),F++}}},T.maxDiagonalInTree=function(w){for(var k=y.MIN_VALUE,A=0;Ak&&(k=R)}return k},T.prototype.calcRepulsionRange=function(){return 2*(this.level+1)*this.idealEdgeLength},T.prototype.groupZeroDegreeMembers=function(){var w=this,k={};this.memberGroups={},this.idToDummyNode={};for(var A=[],C=this.graphManager.getAllNodes(),R=0;R"u"&&(k[E]=[]),k[E]=k[E].concat(I)}Object.keys(k).forEach(function(D){if(k[D].length>1){var _="DummyCompound_"+D;w.memberGroups[_]=k[D];var O=k[D][0].getParent(),M=new l(w.graphManager);M.id=_,M.paddingLeft=O.paddingLeft||0,M.paddingRight=O.paddingRight||0,M.paddingBottom=O.paddingBottom||0,M.paddingTop=O.paddingTop||0,w.idToDummyNode[_]=M;var P=w.getGraphManager().add(w.newGraph(),M),B=O.getChild();B.add(M);for(var F=0;F=0;w--){var k=this.compoundOrder[w],A=k.id,C=k.paddingLeft,R=k.paddingTop;this.adjustLocations(this.tiledMemberPack[A],k.rect.x,k.rect.y,C,R)}},T.prototype.repopulateZeroDegreeMembers=function(){var w=this,k=this.tiledZeroDegreePack;Object.keys(k).forEach(function(A){var C=w.idToDummyNode[A],R=C.paddingLeft,I=C.paddingTop;w.adjustLocations(k[A],C.rect.x,C.rect.y,R,I)})},T.prototype.getToBeTiled=function(w){var k=w.id;if(this.toBeTiled[k]!=null)return this.toBeTiled[k];var A=w.getChild();if(A==null)return this.toBeTiled[k]=!1,!1;for(var C=A.getNodes(),R=0;R0)return this.toBeTiled[k]=!1,!1;if(I.getChild()==null){this.toBeTiled[I.id]=!1;continue}if(!this.getToBeTiled(I))return this.toBeTiled[k]=!1,!1}return this.toBeTiled[k]=!0,!0},T.prototype.getNodeDegree=function(w){for(var k=w.id,A=w.getEdges(),C=0,R=0;RD&&(D=O.rect.height)}A+=D+w.verticalPadding}},T.prototype.tileCompoundMembers=function(w,k){var A=this;this.tiledMemberPack=[],Object.keys(w).forEach(function(C){var R=k[C];A.tiledMemberPack[C]=A.tileNodes(w[C],R.paddingLeft+R.paddingRight),R.rect.width=A.tiledMemberPack[C].width,R.rect.height=A.tiledMemberPack[C].height})},T.prototype.tileNodes=function(w,k){var A=h.TILING_PADDING_VERTICAL,C=h.TILING_PADDING_HORIZONTAL,R={rows:[],rowWidth:[],rowHeight:[],width:0,height:k,verticalPadding:A,horizontalPadding:C};w.sort(function(E,D){return E.rect.width*E.rect.height>D.rect.width*D.rect.height?-1:E.rect.width*E.rect.height0&&(L+=w.horizontalPadding),w.rowWidth[A]=L,w.width0&&(E+=w.verticalPadding);var D=0;E>w.rowHeight[A]&&(D=w.rowHeight[A],w.rowHeight[A]=E,D=w.rowHeight[A]-D),w.height+=D,w.rows[A].push(k)},T.prototype.getShortestRowIndex=function(w){for(var k=-1,A=Number.MAX_VALUE,C=0;CA&&(k=C,A=w.rowWidth[C]);return k},T.prototype.canAddHorizontal=function(w,k,A){var C=this.getShortestRowIndex(w);if(C<0)return!0;var R=w.rowWidth[C];if(R+w.horizontalPadding+k<=w.width)return!0;var I=0;w.rowHeight[C]0&&(I=A+w.verticalPadding-w.rowHeight[C]);var L;w.width-R>=k+w.horizontalPadding?L=(w.height+I)/(R+k+w.horizontalPadding):L=(w.height+I)/w.width,I=A+w.verticalPadding;var E;return w.widthI&&k!=A){C.splice(-1,1),w.rows[A].push(R),w.rowWidth[k]=w.rowWidth[k]-I,w.rowWidth[A]=w.rowWidth[A]+I,w.width=w.rowWidth[instance.getLongestRowIndex(w)];for(var L=Number.MIN_VALUE,E=0;EL&&(L=C[E].height);k>0&&(L+=w.verticalPadding);var D=w.rowHeight[k]+w.rowHeight[A];w.rowHeight[k]=L,w.rowHeight[A]0)for(var B=R;B<=I;B++)P[0]+=this.grid[B][L-1].length+this.grid[B][L].length-1;if(I0)for(var B=L;B<=E;B++)P[3]+=this.grid[R-1][B].length+this.grid[R][B].length-1;for(var F=y.MAX_VALUE,G,$,U=0;U{"use strict";o((function(e,r){typeof _x=="object"&&typeof $I=="object"?$I.exports=r(FI()):typeof define=="function"&&define.amd?define(["cose-base"],r):typeof _x=="object"?_x.cytoscapeCoseBilkent=r(FI()):e.cytoscapeCoseBilkent=r(e.coseBase)}),"webpackUniversalModuleDefinition")(_x,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 o(n,"__webpack_require__"),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?o(function(){return i.default},"getDefault"):o(function(){return i},"getModuleExports");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,l=n(0).CoSELayout,u=n(0).CoSENode,h=n(0).layoutBase.PointD,f=n(0).layoutBase.DimensionD,d={ready:o(function(){},"ready"),stop:o(function(){},"stop"),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 p(v,x){var b={};for(var T in v)b[T]=v[T];for(var T in x)b[T]=x[T];return b}o(p,"extend");function m(v){this.options=p(d,v),g(this.options)}o(m,"_CoSELayout");var g=o(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},"getUserOptions");m.prototype.run=function(){var v,x,b=this.options,T=this.idToLNode={},S=this.layout=new l,w=this;w.stopped=!1,this.cy=this.options.cy,this.cy.trigger({type:"layoutstart",layout:this});var k=S.newGraphManager();this.gm=k;var A=this.options.eles.nodes(),C=this.options.eles.edges();this.root=k.addRoot(),this.processChildrenList(this.root,this.getTopMostNodes(A),S);for(var R=0;R0){var E;E=b.getGraphManager().add(b.newGraph(),A),this.processChildrenList(E,k,b)}}},m.prototype.stop=function(){return this.stopped=!0,this};var y=o(function(x){x("layout","cose-bilkent",m)},"register");typeof cytoscape<"u"&&y(cytoscape),e.exports=y})])})});function Hqe(t,e){t.forEach(r=>{let n={id:r.id,labelText:r.label,height:r.height,width:r.width,padding:r.padding??0};Object.keys(r).forEach(i=>{["id","label","height","width","padding","x","y"].includes(i)||(n[i]=r[i])}),e.add({group:"nodes",data:n,position:{x:r.x??0,y:r.y??0}})})}function qqe(t,e){t.forEach(r=>{let n={id:r.id,source:r.start,target:r.end};Object.keys(r).forEach(i=>{["id","start","end"].includes(i)||(n[i]=r[i])}),e.add({group:"edges",data:n})})}function Jhe(t){return new Promise(e=>{let r=qe("body").append("div").attr("id","cy").attr("style","display:none"),n=Ko({container:document.getElementById("cy"),style:[{selector:"edge",style:{"curve-style":"bezier"}}]});r.remove(),Hqe(t.nodes,n),qqe(t.edges,n),n.nodes().forEach(function(a){a.layoutDimensions=()=>{let s=a.data();return{w:s.width,h:s.height}}});let i={name:"cose-bilkent",quality:"proof",styleEnabled:!1,animate:!1};n.layout(i).run(),n.ready(a=>{X.info("Cytoscape ready",a),e(n)})})}function efe(t){return t.nodes().map(e=>{let r=e.data(),n=e.position(),i={id:r.id,x:n.x,y:n.y};return Object.keys(r).forEach(a=>{a!=="id"&&(i[a]=r[a])}),i})}function tfe(t){return t.edges().map(e=>{let r=e.data(),n=e._private.rscratch,i={id:r.id,source:r.source,target:r.target,startX:n.startX,startY:n.startY,midX:n.midX,midY:n.midY,endX:n.endX,endY:n.endY};return Object.keys(r).forEach(a=>{["id","source","target"].includes(a)||(i[a]=r[a])}),i})}var Zhe,rfe=N(()=>{"use strict";II();Zhe=ja(Qhe(),1);yr();pt();Ko.use(Zhe.default);o(Hqe,"addNodes");o(qqe,"addEdges");o(Jhe,"createCytoscapeInstance");o(efe,"extractPositionedNodes");o(tfe,"extractPositionedEdges")});async function nfe(t,e){X.debug("Starting cose-bilkent layout algorithm");try{Wqe(t);let r=await Jhe(t),n=efe(r),i=tfe(r);return X.debug(`Layout completed: ${n.length} nodes, ${i.length} edges`),{nodes:n,edges:i}}catch(r){throw X.error("Error in cose-bilkent layout algorithm:",r),r}}function Wqe(t){if(!t)throw new Error("Layout data is required");if(!t.config)throw new Error("Configuration is required in layout data");if(!t.rootNode)throw new Error("Root node is required");if(!t.nodes||!Array.isArray(t.nodes))throw new Error("No nodes found in layout data");if(!Array.isArray(t.edges))throw new Error("Edges array is required in layout data");return!0}var ife=N(()=>{"use strict";pt();rfe();o(nfe,"executeCoseBilkentLayout");o(Wqe,"validateLayoutData")});var afe,sfe=N(()=>{"use strict";ife();afe=o(async(t,e,{insertCluster:r,insertEdge:n,insertEdgeLabel:i,insertMarkers:a,insertNode:s,log:l,positionEdgeLabel:u},{algorithm:h})=>{let f={},d={},p=e.select("g");a(p,t.markers,t.type,t.diagramId);let m=p.insert("g").attr("class","subgraphs"),g=p.insert("g").attr("class","edgePaths"),y=p.insert("g").attr("class","edgeLabels"),v=p.insert("g").attr("class","nodes");l.debug("Inserting nodes into DOM for dimension calculation"),await Promise.all(t.nodes.map(async T=>{if(T.isGroup){let S={...T};d[T.id]=S,f[T.id]=S,await r(m,T)}else{let S={...T};f[T.id]=S;let w=await s(v,T,{config:t.config,dir:t.direction||"TB"}),k=w.node().getBBox();S.width=k.width,S.height=k.height,S.domId=w,l.debug(`Node ${T.id} dimensions: ${k.width}x${k.height}`)}})),l.debug("Running cose-bilkent layout algorithm");let x={...t,nodes:t.nodes.map(T=>{let S=f[T.id];return{...T,width:S.width,height:S.height}})},b=await nfe(x,t.config);l.debug("Positioning nodes based on layout results"),b.nodes.forEach(T=>{let S=f[T.id];S?.domId&&(S.domId.attr("transform",`translate(${T.x}, ${T.y})`),S.x=T.x,S.y=T.y,l.debug(`Positioned node ${S.id} at center (${T.x}, ${T.y})`))}),b.edges.forEach(T=>{let S=t.edges.find(w=>w.id===T.id);S&&(S.points=[{x:T.startX,y:T.startY},{x:T.midX,y:T.midY},{x:T.endX,y:T.endY}])}),l.debug("Inserting and positioning edges"),await Promise.all(t.edges.map(async T=>{let S=await i(y,T),w=f[T.start??""],k=f[T.end??""];if(w&&k){let A=b.edges.find(C=>C.id===T.id);if(A){l.debug("APA01 positionedEdge",A);let C={...T},R=n(g,C,d,t.type,w,k,t.diagramId);u(C,R)}else{let C={...T,points:[{x:w.x||0,y:w.y||0},{x:k.x||0,y:k.y||0}]},R=n(g,C,d,t.type,w,k,t.diagramId);u(C,R)}}})),l.debug("Cose-bilkent rendering completed")},"render")});var ofe={};dr(ofe,{render:()=>Yqe});var Yqe,lfe=N(()=>{"use strict";sfe();Yqe=afe});var Dx,zI,Xqe,Qo,$c,Nf=N(()=>{"use strict";Qte();pt();Dx={},zI=o(t=>{for(let e of t)Dx[e.name]=e},"registerLayoutLoaders"),Xqe=o(()=>{zI([{name:"dagre",loader:o(async()=>await Promise.resolve().then(()=>(Roe(),Loe)),"loader")},{name:"cose-bilkent",loader:o(async()=>await Promise.resolve().then(()=>(lfe(),ofe)),"loader")}])},"registerDefaultLayoutLoaders");Xqe();Qo=o(async(t,e)=>{if(!(t.layoutAlgorithm in Dx))throw new Error(`Unknown layout algorithm: ${t.layoutAlgorithm}`);let r=Dx[t.layoutAlgorithm];return(await r.loader()).render(t,e,Kte,{algorithm:r.algorithm})},"render"),$c=o((t="",{fallback:e="dagre"}={})=>{if(t in Dx)return t;if(e in Dx)return X.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 Ws,jqe,Kqe,Mf=N(()=>{"use strict";Ei();pt();Ws=o((t,e,r,n)=>{t.attr("class",r);let{width:i,height:a,x:s,y:l}=jqe(t,e);mn(t,a,i,n);let u=Kqe(s,l,i,a,e);t.attr("viewBox",u),X.debug(`viewBox configured: ${u} with padding: ${e}`)},"setupViewPortForSVG"),jqe=o((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"),Kqe=o((t,e,r,n,i)=>`${t-i} ${e-i} ${r} ${n}`,"createViewBox")});var Qqe,Zqe,cfe,ufe=N(()=>{"use strict";yr();Xt();pt();ep();Nf();Mf();tr();Qqe=o(function(t,e){return e.db.getClasses()},"getClasses"),Zqe=o(async function(t,e,r,n){X.info("REF0:"),X.info("Drawing state diagram (v2)",e);let{securityLevel:i,flowchart:a,layout:s}=ge(),l;i==="sandbox"&&(l=qe("#i"+e));let u=i==="sandbox"?l.nodes()[0].contentDocument:document;X.debug("Before getData: ");let h=n.db.getData();X.debug("Data: ",h);let f=Vo(e,i),d=n.db.getDirection();h.type=n.type,h.layoutAlgorithm=$c(s),h.layoutAlgorithm==="dagre"&&s==="elk"&&X.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."),h.direction=d,h.nodeSpacing=a?.nodeSpacing||50,h.rankSpacing=a?.rankSpacing||50,h.markers=["point","circle","cross"],h.diagramId=e,X.debug("REF1:",h),await Qo(h,f);let p=h.config.flowchart?.diagramPadding??8;qt.insertTitle(f,"flowchartTitleText",a?.titleTopMargin||0,n.db.getDiagramTitle()),Ws(f,p,"flowchart",a?.useMaxWidth||!1);for(let m of h.nodes){let g=qe(`#${e} [id="${m.id}"]`);if(!g||!m.link)continue;let y=u.createElementNS("http://www.w3.org/2000/svg","a");y.setAttributeNS("http://www.w3.org/2000/svg","class",m.cssClasses),y.setAttributeNS("http://www.w3.org/2000/svg","rel","noopener"),i==="sandbox"?y.setAttributeNS("http://www.w3.org/2000/svg","target","_top"):m.linkTarget&&y.setAttributeNS("http://www.w3.org/2000/svg","target",m.linkTarget);let v=g.insert(function(){return y},":first-child"),x=g.select(".label-container");x&&v.append(function(){return x.node()});let b=g.select(".label");b&&v.append(function(){return b.node()})}},"draw"),cfe={getClasses:Qqe,draw:Zqe}});var GI,VI,hfe=N(()=>{"use strict";GI=(function(){var t=o(function(fr,it,kt,jt){for(kt=kt||{},jt=fr.length;jt--;kt[fr[jt]]=it);return kt},"o"),e=[1,4],r=[1,3],n=[1,5],i=[1,8,9,10,11,27,34,36,38,44,60,84,85,86,87,88,89,102,105,106,109,111,114,115,116,121,122,123,124],a=[2,2],s=[1,13],l=[1,14],u=[1,15],h=[1,16],f=[1,23],d=[1,25],p=[1,26],m=[1,27],g=[1,49],y=[1,48],v=[1,29],x=[1,30],b=[1,31],T=[1,32],S=[1,33],w=[1,44],k=[1,46],A=[1,42],C=[1,47],R=[1,43],I=[1,50],L=[1,45],E=[1,51],D=[1,52],_=[1,34],O=[1,35],M=[1,36],P=[1,37],B=[1,57],F=[1,8,9,10,11,27,32,34,36,38,44,60,84,85,86,87,88,89,102,105,106,109,111,114,115,116,121,122,123,124],G=[1,61],$=[1,60],U=[1,62],j=[8,9,11,75,77,78],te=[1,78],Y=[1,91],oe=[1,96],J=[1,95],ue=[1,92],re=[1,88],ee=[1,94],Z=[1,90],K=[1,97],ae=[1,93],Q=[1,98],de=[1,89],ne=[8,9,10,11,40,75,77,78],Te=[8,9,10,11,40,46,75,77,78],q=[8,9,10,11,29,40,44,46,48,50,52,54,56,58,60,63,65,67,68,70,75,77,78,89,102,105,106,109,111,114,115,116],Ve=[8,9,11,44,60,75,77,78,89,102,105,106,109,111,114,115,116],pe=[44,60,89,102,105,106,109,111,114,115,116],Be=[1,121],Ye=[1,122],He=[1,124],Le=[1,123],Ie=[44,60,62,74,89,102,105,106,109,111,114,115,116],Ne=[1,133],Ce=[1,147],Fe=[1,148],fe=[1,149],xe=[1,150],W=[1,135],he=[1,137],z=[1,141],se=[1,142],le=[1,143],ke=[1,144],ve=[1,145],ye=[1,146],Re=[1,151],_e=[1,152],ze=[1,131],Ke=[1,132],xt=[1,139],We=[1,134],Oe=[1,138],et=[1,136],Ue=[8,9,10,11,27,32,34,36,38,44,60,84,85,86,87,88,89,102,105,106,109,111,114,115,116,121,122,123,124],lt=[1,154],Gt=[1,156],vt=[8,9,11],Lt=[8,9,10,11,14,44,60,89,105,106,109,111,114,115,116],dt=[1,176],nt=[1,172],bt=[1,173],wt=[1,177],yt=[1,174],ft=[1,175],Ur=[77,116,119],_t=[8,9,10,11,12,14,27,29,32,44,60,75,84,85,86,87,88,89,90,105,109,111,114,115,116],bn=[10,106],Br=[31,49,51,53,55,57,62,64,66,67,69,71,116,117,118],cr=[1,247],ar=[1,245],_r=[1,249],Ct=[1,243],Se=[1,244],at=[1,246],Nt=[1,248],wr=[1,250],Tn=[1,268],yn=[8,9,11,106],sn=[8,9,10,11,60,84,105,106,109,110,111,112],Hi={trace:o(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,LINK_ID:78,edgeTextToken:79,STR:80,MD_STR:81,textToken:82,keywords:83,STYLE:84,LINKSTYLE:85,CLASSDEF:86,CLASS:87,CLICK:88,DOWN:89,UP:90,textNoTagsToken:91,stylesOpt:92,"idString[vertex]":93,"idString[class]":94,CALLBACKNAME:95,CALLBACKARGS:96,HREF:97,LINK_TARGET:98,"STR[link]":99,"STR[tooltip]":100,alphaNum:101,DEFAULT:102,numList:103,INTERPOLATE:104,NUM:105,COMMA:106,style:107,styleComponent:108,NODE_STRING:109,UNIT:110,BRKT:111,PCT:112,idStringToken:113,MINUS:114,MULT:115,UNICODE_TEXT:116,TEXT:117,TAGSTART:118,EDGE_TEXT:119,alphaNumToken:120,direction_tb:121,direction_bt:122,direction_rl:123,direction_lr:124,$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",78:"LINK_ID",80:"STR",81:"MD_STR",84:"STYLE",85:"LINKSTYLE",86:"CLASSDEF",87:"CLASS",88:"CLICK",89:"DOWN",90:"UP",93:"idString[vertex]",94:"idString[class]",95:"CALLBACKNAME",96:"CALLBACKARGS",97:"HREF",98:"LINK_TARGET",99:"STR[link]",100:"STR[tooltip]",102:"DEFAULT",104:"INTERPOLATE",105:"NUM",106:"COMMA",109:"NODE_STRING",110:"UNIT",111:"BRKT",112:"PCT",114:"MINUS",115:"MULT",116:"UNICODE_TEXT",117:"TEXT",118:"TAGSTART",119:"EDGE_TEXT",121:"direction_tb",122:"direction_bt",123:"direction_rl",124:"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],[41,4],[76,1],[76,2],[76,1],[76,1],[72,1],[72,2],[73,3],[30,1],[30,2],[30,1],[30,1],[83,1],[83,1],[83,1],[83,1],[83,1],[83,1],[83,1],[83,1],[83,1],[83,1],[83,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],[103,1],[103,3],[92,1],[92,3],[107,1],[107,2],[108,1],[108,1],[108,1],[108,1],[108,1],[108,1],[108,1],[108,1],[113,1],[113,1],[113,1],[113,1],[113,1],[113,1],[113,1],[113,1],[113,1],[113,1],[113,1],[82,1],[82,1],[82,1],[82,1],[91,1],[91,1],[91,1],[91,1],[91,1],[91,1],[91,1],[91,1],[91,1],[91,1],[91,1],[79,1],[79,1],[120,1],[120,1],[120,1],[120,1],[120,1],[120,1],[120,1],[120,1],[120,1],[120,1],[120,1],[47,1],[47,2],[101,1],[101,2],[33,1],[33,1],[33,1],[33,1]],performAction:o(function(it,kt,jt,ht,Dr,me,Yl){var be=me.length-1;switch(Dr){case 2:this.$=[];break;case 3:(!Array.isArray(me[be])||me[be].length>0)&&me[be-1].push(me[be]),this.$=me[be-1];break;case 4:case 183:this.$=me[be];break;case 11:ht.setDirection("TB"),this.$="TB";break;case 12:ht.setDirection(me[be-1]),this.$=me[be-1];break;case 27:this.$=me[be-1].nodes;break;case 28:case 29:case 30:case 31:case 32:this.$=[];break;case 33:this.$=ht.addSubGraph(me[be-6],me[be-1],me[be-4]);break;case 34:this.$=ht.addSubGraph(me[be-3],me[be-1],me[be-3]);break;case 35:this.$=ht.addSubGraph(void 0,me[be-1],void 0);break;case 37:this.$=me[be].trim(),ht.setAccTitle(this.$);break;case 38:case 39:this.$=me[be].trim(),ht.setAccDescription(this.$);break;case 43:this.$=me[be-1]+me[be];break;case 44:this.$=me[be];break;case 45:ht.addVertex(me[be-1][me[be-1].length-1],void 0,void 0,void 0,void 0,void 0,void 0,me[be]),ht.addLink(me[be-3].stmt,me[be-1],me[be-2]),this.$={stmt:me[be-1],nodes:me[be-1].concat(me[be-3].nodes)};break;case 46:ht.addLink(me[be-2].stmt,me[be],me[be-1]),this.$={stmt:me[be],nodes:me[be].concat(me[be-2].nodes)};break;case 47:ht.addLink(me[be-3].stmt,me[be-1],me[be-2]),this.$={stmt:me[be-1],nodes:me[be-1].concat(me[be-3].nodes)};break;case 48:this.$={stmt:me[be-1],nodes:me[be-1]};break;case 49:ht.addVertex(me[be-1][me[be-1].length-1],void 0,void 0,void 0,void 0,void 0,void 0,me[be]),this.$={stmt:me[be-1],nodes:me[be-1],shapeData:me[be]};break;case 50:this.$={stmt:me[be],nodes:me[be]};break;case 51:this.$=[me[be]];break;case 52:ht.addVertex(me[be-5][me[be-5].length-1],void 0,void 0,void 0,void 0,void 0,void 0,me[be-4]),this.$=me[be-5].concat(me[be]);break;case 53:this.$=me[be-4].concat(me[be]);break;case 54:this.$=me[be];break;case 55:this.$=me[be-2],ht.setClass(me[be-2],me[be]);break;case 56:this.$=me[be-3],ht.addVertex(me[be-3],me[be-1],"square");break;case 57:this.$=me[be-3],ht.addVertex(me[be-3],me[be-1],"doublecircle");break;case 58:this.$=me[be-5],ht.addVertex(me[be-5],me[be-2],"circle");break;case 59:this.$=me[be-3],ht.addVertex(me[be-3],me[be-1],"ellipse");break;case 60:this.$=me[be-3],ht.addVertex(me[be-3],me[be-1],"stadium");break;case 61:this.$=me[be-3],ht.addVertex(me[be-3],me[be-1],"subroutine");break;case 62:this.$=me[be-7],ht.addVertex(me[be-7],me[be-1],"rect",void 0,void 0,void 0,Object.fromEntries([[me[be-5],me[be-3]]]));break;case 63:this.$=me[be-3],ht.addVertex(me[be-3],me[be-1],"cylinder");break;case 64:this.$=me[be-3],ht.addVertex(me[be-3],me[be-1],"round");break;case 65:this.$=me[be-3],ht.addVertex(me[be-3],me[be-1],"diamond");break;case 66:this.$=me[be-5],ht.addVertex(me[be-5],me[be-2],"hexagon");break;case 67:this.$=me[be-3],ht.addVertex(me[be-3],me[be-1],"odd");break;case 68:this.$=me[be-3],ht.addVertex(me[be-3],me[be-1],"trapezoid");break;case 69:this.$=me[be-3],ht.addVertex(me[be-3],me[be-1],"inv_trapezoid");break;case 70:this.$=me[be-3],ht.addVertex(me[be-3],me[be-1],"lean_right");break;case 71:this.$=me[be-3],ht.addVertex(me[be-3],me[be-1],"lean_left");break;case 72:this.$=me[be],ht.addVertex(me[be]);break;case 73:me[be-1].text=me[be],this.$=me[be-1];break;case 74:case 75:me[be-2].text=me[be-1],this.$=me[be-2];break;case 76:this.$=me[be];break;case 77:var jr=ht.destructLink(me[be],me[be-2]);this.$={type:jr.type,stroke:jr.stroke,length:jr.length,text:me[be-1]};break;case 78:var jr=ht.destructLink(me[be],me[be-2]);this.$={type:jr.type,stroke:jr.stroke,length:jr.length,text:me[be-1],id:me[be-3]};break;case 79:this.$={text:me[be],type:"text"};break;case 80:this.$={text:me[be-1].text+""+me[be],type:me[be-1].type};break;case 81:this.$={text:me[be],type:"string"};break;case 82:this.$={text:me[be],type:"markdown"};break;case 83:var jr=ht.destructLink(me[be]);this.$={type:jr.type,stroke:jr.stroke,length:jr.length};break;case 84:var jr=ht.destructLink(me[be]);this.$={type:jr.type,stroke:jr.stroke,length:jr.length,id:me[be-1]};break;case 85:this.$=me[be-1];break;case 86:this.$={text:me[be],type:"text"};break;case 87:this.$={text:me[be-1].text+""+me[be],type:me[be-1].type};break;case 88:this.$={text:me[be],type:"string"};break;case 89:case 104:this.$={text:me[be],type:"markdown"};break;case 101:this.$={text:me[be],type:"text"};break;case 102:this.$={text:me[be-1].text+""+me[be],type:me[be-1].type};break;case 103:this.$={text:me[be],type:"text"};break;case 105:this.$=me[be-4],ht.addClass(me[be-2],me[be]);break;case 106:this.$=me[be-4],ht.setClass(me[be-2],me[be]);break;case 107:case 115:this.$=me[be-1],ht.setClickEvent(me[be-1],me[be]);break;case 108:case 116:this.$=me[be-3],ht.setClickEvent(me[be-3],me[be-2]),ht.setTooltip(me[be-3],me[be]);break;case 109:this.$=me[be-2],ht.setClickEvent(me[be-2],me[be-1],me[be]);break;case 110:this.$=me[be-4],ht.setClickEvent(me[be-4],me[be-3],me[be-2]),ht.setTooltip(me[be-4],me[be]);break;case 111:this.$=me[be-2],ht.setLink(me[be-2],me[be]);break;case 112:this.$=me[be-4],ht.setLink(me[be-4],me[be-2]),ht.setTooltip(me[be-4],me[be]);break;case 113:this.$=me[be-4],ht.setLink(me[be-4],me[be-2],me[be]);break;case 114:this.$=me[be-6],ht.setLink(me[be-6],me[be-4],me[be]),ht.setTooltip(me[be-6],me[be-2]);break;case 117:this.$=me[be-1],ht.setLink(me[be-1],me[be]);break;case 118:this.$=me[be-3],ht.setLink(me[be-3],me[be-2]),ht.setTooltip(me[be-3],me[be]);break;case 119:this.$=me[be-3],ht.setLink(me[be-3],me[be-2],me[be]);break;case 120:this.$=me[be-5],ht.setLink(me[be-5],me[be-4],me[be]),ht.setTooltip(me[be-5],me[be-2]);break;case 121:this.$=me[be-4],ht.addVertex(me[be-2],void 0,void 0,me[be]);break;case 122:this.$=me[be-4],ht.updateLink([me[be-2]],me[be]);break;case 123:this.$=me[be-4],ht.updateLink(me[be-2],me[be]);break;case 124:this.$=me[be-8],ht.updateLinkInterpolate([me[be-6]],me[be-2]),ht.updateLink([me[be-6]],me[be]);break;case 125:this.$=me[be-8],ht.updateLinkInterpolate(me[be-6],me[be-2]),ht.updateLink(me[be-6],me[be]);break;case 126:this.$=me[be-6],ht.updateLinkInterpolate([me[be-4]],me[be]);break;case 127:this.$=me[be-6],ht.updateLinkInterpolate(me[be-4],me[be]);break;case 128:case 130:this.$=[me[be]];break;case 129:case 131:me[be-2].push(me[be]),this.$=me[be-2];break;case 133:this.$=me[be-1]+me[be];break;case 181:this.$=me[be];break;case 182:this.$=me[be-1]+""+me[be];break;case 184:this.$=me[be-1]+""+me[be];break;case 185:this.$={stmt:"dir",value:"TB"};break;case 186:this.$={stmt:"dir",value:"BT"};break;case 187:this.$={stmt:"dir",value:"RL"};break;case 188: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:l,10:u,11:h,20:17,22:18,23:19,24:20,25:21,26:22,27:f,33:24,34:d,36:p,38:m,42:28,43:38,44:g,45:39,47:40,60:y,84:v,85:x,86:b,87:T,88:S,89:w,102:k,105:A,106:C,109:R,111:I,113:41,114:L,115:E,116:D,121:_,122:O,123:M,124:P},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(F,[2,3]),t(F,[2,4]),t(F,[2,5]),t(F,[2,6]),t(F,[2,7]),t(F,[2,8]),{8:G,9:$,11:U,21:58,41:59,72:63,75:[1,64],77:[1,66],78:[1,65]},{8:G,9:$,11:U,21:67},{8:G,9:$,11:U,21:68},{8:G,9:$,11:U,21:69},{8:G,9:$,11:U,21:70},{8:G,9:$,11:U,21:71},{8:G,9:$,10:[1,72],11:U,21:73},t(F,[2,36]),{35:[1,74]},{37:[1,75]},t(F,[2,39]),t(j,[2,50],{18:76,39:77,10:B,40:te}),{10:[1,79]},{10:[1,80]},{10:[1,81]},{10:[1,82]},{14:Y,44:oe,60:J,80:[1,86],89:ue,95:[1,83],97:[1,84],101:85,105:re,106:ee,109:Z,111:K,114:ae,115:Q,116:de,120:87},t(F,[2,185]),t(F,[2,186]),t(F,[2,187]),t(F,[2,188]),t(ne,[2,51]),t(ne,[2,54],{46:[1,99]}),t(Te,[2,72],{113:112,29:[1,100],44:g,48:[1,101],50:[1,102],52:[1,103],54:[1,104],56:[1,105],58:[1,106],60:y,63:[1,107],65:[1,108],67:[1,109],68:[1,110],70:[1,111],89:w,102:k,105:A,106:C,109:R,111:I,114:L,115:E,116:D}),t(q,[2,181]),t(q,[2,142]),t(q,[2,143]),t(q,[2,144]),t(q,[2,145]),t(q,[2,146]),t(q,[2,147]),t(q,[2,148]),t(q,[2,149]),t(q,[2,150]),t(q,[2,151]),t(q,[2,152]),t(i,[2,12]),t(i,[2,18]),t(i,[2,19]),{9:[1,113]},t(Ve,[2,26],{18:114,10:B}),t(F,[2,27]),{42:115,43:38,44:g,45:39,47:40,60:y,89:w,102:k,105:A,106:C,109:R,111:I,113:41,114:L,115:E,116:D},t(F,[2,40]),t(F,[2,41]),t(F,[2,42]),t(pe,[2,76],{73:116,62:[1,118],74:[1,117]}),{76:119,79:120,80:Be,81:Ye,116:He,119:Le},{75:[1,125],77:[1,126]},t(Ie,[2,83]),t(F,[2,28]),t(F,[2,29]),t(F,[2,30]),t(F,[2,31]),t(F,[2,32]),{10:Ne,12:Ce,14:Fe,27:fe,28:127,32:xe,44:W,60:he,75:z,80:[1,129],81:[1,130],83:140,84:se,85:le,86:ke,87:ve,88:ye,89:Re,90:_e,91:128,105:ze,109:Ke,111:xt,114:We,115:Oe,116:et},t(Ue,a,{5:153}),t(F,[2,37]),t(F,[2,38]),t(j,[2,48],{44:lt}),t(j,[2,49],{18:155,10:B,40:Gt}),t(ne,[2,44]),{44:g,47:157,60:y,89:w,102:k,105:A,106:C,109:R,111:I,113:41,114:L,115:E,116:D},{102:[1,158],103:159,105:[1,160]},{44:g,47:161,60:y,89:w,102:k,105:A,106:C,109:R,111:I,113:41,114:L,115:E,116:D},{44:g,47:162,60:y,89:w,102:k,105:A,106:C,109:R,111:I,113:41,114:L,115:E,116:D},t(vt,[2,107],{10:[1,163],96:[1,164]}),{80:[1,165]},t(vt,[2,115],{120:167,10:[1,166],14:Y,44:oe,60:J,89:ue,105:re,106:ee,109:Z,111:K,114:ae,115:Q,116:de}),t(vt,[2,117],{10:[1,168]}),t(Lt,[2,183]),t(Lt,[2,170]),t(Lt,[2,171]),t(Lt,[2,172]),t(Lt,[2,173]),t(Lt,[2,174]),t(Lt,[2,175]),t(Lt,[2,176]),t(Lt,[2,177]),t(Lt,[2,178]),t(Lt,[2,179]),t(Lt,[2,180]),{44:g,47:169,60:y,89:w,102:k,105:A,106:C,109:R,111:I,113:41,114:L,115:E,116:D},{30:170,67:dt,80:nt,81:bt,82:171,116:wt,117:yt,118:ft},{30:178,67:dt,80:nt,81:bt,82:171,116:wt,117:yt,118:ft},{30:180,50:[1,179],67:dt,80:nt,81:bt,82:171,116:wt,117:yt,118:ft},{30:181,67:dt,80:nt,81:bt,82:171,116:wt,117:yt,118:ft},{30:182,67:dt,80:nt,81:bt,82:171,116:wt,117:yt,118:ft},{30:183,67:dt,80:nt,81:bt,82:171,116:wt,117:yt,118:ft},{109:[1,184]},{30:185,67:dt,80:nt,81:bt,82:171,116:wt,117:yt,118:ft},{30:186,65:[1,187],67:dt,80:nt,81:bt,82:171,116:wt,117:yt,118:ft},{30:188,67:dt,80:nt,81:bt,82:171,116:wt,117:yt,118:ft},{30:189,67:dt,80:nt,81:bt,82:171,116:wt,117:yt,118:ft},{30:190,67:dt,80:nt,81:bt,82:171,116:wt,117:yt,118:ft},t(q,[2,182]),t(i,[2,20]),t(Ve,[2,25]),t(j,[2,46],{39:191,18:192,10:B,40:te}),t(pe,[2,73],{10:[1,193]}),{10:[1,194]},{30:195,67:dt,80:nt,81:bt,82:171,116:wt,117:yt,118:ft},{77:[1,196],79:197,116:He,119:Le},t(Ur,[2,79]),t(Ur,[2,81]),t(Ur,[2,82]),t(Ur,[2,168]),t(Ur,[2,169]),{76:198,79:120,80:Be,81:Ye,116:He,119:Le},t(Ie,[2,84]),{8:G,9:$,10:Ne,11:U,12:Ce,14:Fe,21:200,27:fe,29:[1,199],32:xe,44:W,60:he,75:z,83:140,84:se,85:le,86:ke,87:ve,88:ye,89:Re,90:_e,91:201,105:ze,109:Ke,111:xt,114:We,115:Oe,116:et},t(_t,[2,101]),t(_t,[2,103]),t(_t,[2,104]),t(_t,[2,157]),t(_t,[2,158]),t(_t,[2,159]),t(_t,[2,160]),t(_t,[2,161]),t(_t,[2,162]),t(_t,[2,163]),t(_t,[2,164]),t(_t,[2,165]),t(_t,[2,166]),t(_t,[2,167]),t(_t,[2,90]),t(_t,[2,91]),t(_t,[2,92]),t(_t,[2,93]),t(_t,[2,94]),t(_t,[2,95]),t(_t,[2,96]),t(_t,[2,97]),t(_t,[2,98]),t(_t,[2,99]),t(_t,[2,100]),{6:11,7:12,8:s,9:l,10:u,11:h,20:17,22:18,23:19,24:20,25:21,26:22,27:f,32:[1,202],33:24,34:d,36:p,38:m,42:28,43:38,44:g,45:39,47:40,60:y,84:v,85:x,86:b,87:T,88:S,89:w,102:k,105:A,106:C,109:R,111:I,113:41,114:L,115:E,116:D,121:_,122:O,123:M,124:P},{10:B,18:203},{44:[1,204]},t(ne,[2,43]),{10:[1,205],44:g,60:y,89:w,102:k,105:A,106:C,109:R,111:I,113:112,114:L,115:E,116:D},{10:[1,206]},{10:[1,207],106:[1,208]},t(bn,[2,128]),{10:[1,209],44:g,60:y,89:w,102:k,105:A,106:C,109:R,111:I,113:112,114:L,115:E,116:D},{10:[1,210],44:g,60:y,89:w,102:k,105:A,106:C,109:R,111:I,113:112,114:L,115:E,116:D},{80:[1,211]},t(vt,[2,109],{10:[1,212]}),t(vt,[2,111],{10:[1,213]}),{80:[1,214]},t(Lt,[2,184]),{80:[1,215],98:[1,216]},t(ne,[2,55],{113:112,44:g,60:y,89:w,102:k,105:A,106:C,109:R,111:I,114:L,115:E,116:D}),{31:[1,217],67:dt,82:218,116:wt,117:yt,118:ft},t(Br,[2,86]),t(Br,[2,88]),t(Br,[2,89]),t(Br,[2,153]),t(Br,[2,154]),t(Br,[2,155]),t(Br,[2,156]),{49:[1,219],67:dt,82:218,116:wt,117:yt,118:ft},{30:220,67:dt,80:nt,81:bt,82:171,116:wt,117:yt,118:ft},{51:[1,221],67:dt,82:218,116:wt,117:yt,118:ft},{53:[1,222],67:dt,82:218,116:wt,117:yt,118:ft},{55:[1,223],67:dt,82:218,116:wt,117:yt,118:ft},{57:[1,224],67:dt,82:218,116:wt,117:yt,118:ft},{60:[1,225]},{64:[1,226],67:dt,82:218,116:wt,117:yt,118:ft},{66:[1,227],67:dt,82:218,116:wt,117:yt,118:ft},{30:228,67:dt,80:nt,81:bt,82:171,116:wt,117:yt,118:ft},{31:[1,229],67:dt,82:218,116:wt,117:yt,118:ft},{67:dt,69:[1,230],71:[1,231],82:218,116:wt,117:yt,118:ft},{67:dt,69:[1,233],71:[1,232],82:218,116:wt,117:yt,118:ft},t(j,[2,45],{18:155,10:B,40:Gt}),t(j,[2,47],{44:lt}),t(pe,[2,75]),t(pe,[2,74]),{62:[1,234],67:dt,82:218,116:wt,117:yt,118:ft},t(pe,[2,77]),t(Ur,[2,80]),{77:[1,235],79:197,116:He,119:Le},{30:236,67:dt,80:nt,81:bt,82:171,116:wt,117:yt,118:ft},t(Ue,a,{5:237}),t(_t,[2,102]),t(F,[2,35]),{43:238,44:g,45:39,47:40,60:y,89:w,102:k,105:A,106:C,109:R,111:I,113:41,114:L,115:E,116:D},{10:B,18:239},{10:cr,60:ar,84:_r,92:240,105:Ct,107:241,108:242,109:Se,110:at,111:Nt,112:wr},{10:cr,60:ar,84:_r,92:251,104:[1,252],105:Ct,107:241,108:242,109:Se,110:at,111:Nt,112:wr},{10:cr,60:ar,84:_r,92:253,104:[1,254],105:Ct,107:241,108:242,109:Se,110:at,111:Nt,112:wr},{105:[1,255]},{10:cr,60:ar,84:_r,92:256,105:Ct,107:241,108:242,109:Se,110:at,111:Nt,112:wr},{44:g,47:257,60:y,89:w,102:k,105:A,106:C,109:R,111:I,113:41,114:L,115:E,116:D},t(vt,[2,108]),{80:[1,258]},{80:[1,259],98:[1,260]},t(vt,[2,116]),t(vt,[2,118],{10:[1,261]}),t(vt,[2,119]),t(Te,[2,56]),t(Br,[2,87]),t(Te,[2,57]),{51:[1,262],67:dt,82:218,116:wt,117:yt,118:ft},t(Te,[2,64]),t(Te,[2,59]),t(Te,[2,60]),t(Te,[2,61]),{109:[1,263]},t(Te,[2,63]),t(Te,[2,65]),{66:[1,264],67:dt,82:218,116:wt,117:yt,118:ft},t(Te,[2,67]),t(Te,[2,68]),t(Te,[2,70]),t(Te,[2,69]),t(Te,[2,71]),t([10,44,60,89,102,105,106,109,111,114,115,116],[2,85]),t(pe,[2,78]),{31:[1,265],67:dt,82:218,116:wt,117:yt,118:ft},{6:11,7:12,8:s,9:l,10:u,11:h,20:17,22:18,23:19,24:20,25:21,26:22,27:f,32:[1,266],33:24,34:d,36:p,38:m,42:28,43:38,44:g,45:39,47:40,60:y,84:v,85:x,86:b,87:T,88:S,89:w,102:k,105:A,106:C,109:R,111:I,113:41,114:L,115:E,116:D,121:_,122:O,123:M,124:P},t(ne,[2,53]),{43:267,44:g,45:39,47:40,60:y,89:w,102:k,105:A,106:C,109:R,111:I,113:41,114:L,115:E,116:D},t(vt,[2,121],{106:Tn}),t(yn,[2,130],{108:269,10:cr,60:ar,84:_r,105:Ct,109:Se,110:at,111:Nt,112:wr}),t(sn,[2,132]),t(sn,[2,134]),t(sn,[2,135]),t(sn,[2,136]),t(sn,[2,137]),t(sn,[2,138]),t(sn,[2,139]),t(sn,[2,140]),t(sn,[2,141]),t(vt,[2,122],{106:Tn}),{10:[1,270]},t(vt,[2,123],{106:Tn}),{10:[1,271]},t(bn,[2,129]),t(vt,[2,105],{106:Tn}),t(vt,[2,106],{113:112,44:g,60:y,89:w,102:k,105:A,106:C,109:R,111:I,114:L,115:E,116:D}),t(vt,[2,110]),t(vt,[2,112],{10:[1,272]}),t(vt,[2,113]),{98:[1,273]},{51:[1,274]},{62:[1,275]},{66:[1,276]},{8:G,9:$,11:U,21:277},t(F,[2,34]),t(ne,[2,52]),{10:cr,60:ar,84:_r,105:Ct,107:278,108:242,109:Se,110:at,111:Nt,112:wr},t(sn,[2,133]),{14:Y,44:oe,60:J,89:ue,101:279,105:re,106:ee,109:Z,111:K,114:ae,115:Q,116:de,120:87},{14:Y,44:oe,60:J,89:ue,101:280,105:re,106:ee,109:Z,111:K,114:ae,115:Q,116:de,120:87},{98:[1,281]},t(vt,[2,120]),t(Te,[2,58]),{30:282,67:dt,80:nt,81:bt,82:171,116:wt,117:yt,118:ft},t(Te,[2,66]),t(Ue,a,{5:283}),t(yn,[2,131],{108:269,10:cr,60:ar,84:_r,105:Ct,109:Se,110:at,111:Nt,112:wr}),t(vt,[2,126],{120:167,10:[1,284],14:Y,44:oe,60:J,89:ue,105:re,106:ee,109:Z,111:K,114:ae,115:Q,116:de}),t(vt,[2,127],{120:167,10:[1,285],14:Y,44:oe,60:J,89:ue,105:re,106:ee,109:Z,111:K,114:ae,115:Q,116:de}),t(vt,[2,114]),{31:[1,286],67:dt,82:218,116:wt,117:yt,118:ft},{6:11,7:12,8:s,9:l,10:u,11:h,20:17,22:18,23:19,24:20,25:21,26:22,27:f,32:[1,287],33:24,34:d,36:p,38:m,42:28,43:38,44:g,45:39,47:40,60:y,84:v,85:x,86:b,87:T,88:S,89:w,102:k,105:A,106:C,109:R,111:I,113:41,114:L,115:E,116:D,121:_,122:O,123:M,124:P},{10:cr,60:ar,84:_r,92:288,105:Ct,107:241,108:242,109:Se,110:at,111:Nt,112:wr},{10:cr,60:ar,84:_r,92:289,105:Ct,107:241,108:242,109:Se,110:at,111:Nt,112:wr},t(Te,[2,62]),t(F,[2,33]),t(vt,[2,124],{106:Tn}),t(vt,[2,125],{106:Tn})],defaultActions:{},parseError:o(function(it,kt){if(kt.recoverable)this.trace(it);else{var jt=new Error(it);throw jt.hash=kt,jt}},"parseError"),parse:o(function(it){var kt=this,jt=[0],ht=[],Dr=[null],me=[],Yl=this.table,be="",jr=0,V4=0,XC=0,jC=2,Gz=1,$3e=me.slice.call(arguments,1),qi=Object.create(this.lexer),ad={yy:{}};for(var KC in this.yy)Object.prototype.hasOwnProperty.call(this.yy,KC)&&(ad.yy[KC]=this.yy[KC]);qi.setInput(it,ad.yy),ad.yy.lexer=qi,ad.yy.parser=this,typeof qi.yylloc>"u"&&(qi.yylloc={});var QC=qi.yylloc;me.push(QC);var z3e=qi.options&&qi.options.ranges;typeof ad.yy.parseError=="function"?this.parseError=ad.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function Pat(Js){jt.length=jt.length-2*Js,Dr.length=Dr.length-Js,me.length=me.length-Js}o(Pat,"popStack");function G3e(){var Js;return Js=ht.pop()||qi.lex()||Gz,typeof Js!="number"&&(Js instanceof Array&&(ht=Js,Js=ht.pop()),Js=kt.symbols_[Js]||Js),Js}o(G3e,"lex");for(var Xa,ZC,sd,ko,Bat,JC,g0={},U4,iu,Vz,H4;;){if(sd=jt[jt.length-1],this.defaultActions[sd]?ko=this.defaultActions[sd]:((Xa===null||typeof Xa>"u")&&(Xa=G3e()),ko=Yl[sd]&&Yl[sd][Xa]),typeof ko>"u"||!ko.length||!ko[0]){var e7="";H4=[];for(U4 in Yl[sd])this.terminals_[U4]&&U4>jC&&H4.push("'"+this.terminals_[U4]+"'");qi.showPosition?e7="Parse error on line "+(jr+1)+`: -`+qi.showPosition()+` -Expecting `+H4.join(", ")+", got '"+(this.terminals_[Xa]||Xa)+"'":e7="Parse error on line "+(jr+1)+": Unexpected "+(Xa==Gz?"end of input":"'"+(this.terminals_[Xa]||Xa)+"'"),this.parseError(e7,{text:qi.match,token:this.terminals_[Xa]||Xa,line:qi.yylineno,loc:QC,expected:H4})}if(ko[0]instanceof Array&&ko.length>1)throw new Error("Parse Error: multiple actions possible at state: "+sd+", token: "+Xa);switch(ko[0]){case 1:jt.push(Xa),Dr.push(qi.yytext),me.push(qi.yylloc),jt.push(ko[1]),Xa=null,ZC?(Xa=ZC,ZC=null):(V4=qi.yyleng,be=qi.yytext,jr=qi.yylineno,QC=qi.yylloc,XC>0&&XC--);break;case 2:if(iu=this.productions_[ko[1]][1],g0.$=Dr[Dr.length-iu],g0._$={first_line:me[me.length-(iu||1)].first_line,last_line:me[me.length-1].last_line,first_column:me[me.length-(iu||1)].first_column,last_column:me[me.length-1].last_column},z3e&&(g0._$.range=[me[me.length-(iu||1)].range[0],me[me.length-1].range[1]]),JC=this.performAction.apply(g0,[be,V4,jr,ad.yy,ko[1],Dr,me].concat($3e)),typeof JC<"u")return JC;iu&&(jt=jt.slice(0,-1*iu*2),Dr=Dr.slice(0,-1*iu),me=me.slice(0,-1*iu)),jt.push(this.productions_[ko[1]][0]),Dr.push(g0.$),me.push(g0._$),Vz=Yl[jt[jt.length-2]][jt[jt.length-1]],jt.push(Vz);break;case 3:return!0}}return!0},"parse")},Zs=(function(){var fr={EOF:1,parseError:o(function(kt,jt){if(this.yy.parser)this.yy.parser.parseError(kt,jt);else throw new Error(kt)},"parseError"),setInput:o(function(it,kt){return this.yy=kt||this.yy||{},this._input=it,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:o(function(){var it=this._input[0];this.yytext+=it,this.yyleng++,this.offset++,this.match+=it,this.matched+=it;var kt=it.match(/(?:\r\n?|\n).*/g);return kt?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),it},"input"),unput:o(function(it){var kt=it.length,jt=it.split(/(?:\r\n?|\n)/g);this._input=it+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-kt),this.offset-=kt;var ht=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),jt.length-1&&(this.yylineno-=jt.length-1);var Dr=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:jt?(jt.length===ht.length?this.yylloc.first_column:0)+ht[ht.length-jt.length].length-jt[0].length:this.yylloc.first_column-kt},this.options.ranges&&(this.yylloc.range=[Dr[0],Dr[0]+this.yyleng-kt]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(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:o(function(it){this.unput(this.match.slice(it))},"less"),pastInput:o(function(){var it=this.matched.substr(0,this.matched.length-this.match.length);return(it.length>20?"...":"")+it.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var it=this.match;return it.length<20&&(it+=this._input.substr(0,20-it.length)),(it.substr(0,20)+(it.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var it=this.pastInput(),kt=new Array(it.length+1).join("-");return it+this.upcomingInput()+` -`+kt+"^"},"showPosition"),test_match:o(function(it,kt){var jt,ht,Dr;if(this.options.backtrack_lexer&&(Dr={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&&(Dr.yylloc.range=this.yylloc.range.slice(0))),ht=it[0].match(/(?:\r\n?|\n).*/g),ht&&(this.yylineno+=ht.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:ht?ht[ht.length-1].length-ht[ht.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+it[0].length},this.yytext+=it[0],this.match+=it[0],this.matches=it,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(it[0].length),this.matched+=it[0],jt=this.performAction.call(this,this.yy,this,kt,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),jt)return jt;if(this._backtrack){for(var me in Dr)this[me]=Dr[me];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var it,kt,jt,ht;this._more||(this.yytext="",this.match="");for(var Dr=this._currentRules(),me=0;mekt[0].length)){if(kt=jt,ht=me,this.options.backtrack_lexer){if(it=this.test_match(jt,Dr[me]),it!==!1)return it;if(this._backtrack){kt=!1;continue}else return!1}else if(!this.options.flex)break}return kt?(it=this.test_match(kt,Dr[ht]),it!==!1?it:!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:o(function(){var kt=this.next();return kt||this.lex()},"lex"),begin:o(function(kt){this.conditionStack.push(kt)},"begin"),popState:o(function(){var kt=this.conditionStack.length-1;return kt>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(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:o(function(kt){return kt=this.conditionStack.length-1-Math.abs(kt||0),kt>=0?this.conditionStack[kt]:"INITIAL"},"topState"),pushState:o(function(kt){this.begin(kt)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{},performAction:o(function(kt,jt,ht,Dr){var me=Dr;switch(ht){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"),jt.yytext="",40;break;case 8:return this.pushState("shapeDataStr"),40;break;case 9:return this.popState(),40;break;case 10:let Yl=/\n\s*/g;return jt.yytext=jt.yytext.replace(Yl,"
    "),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 95;case 17:this.popState();break;case 18:return 96;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 84;case 26:return 102;case 27:return 85;case 28:return 104;case 29:return 86;case 30:return 87;case 31:return 97;case 32:this.begin("click");break;case 33:this.popState();break;case 34:return 88;case 35:return kt.lex.firstGraph()&&this.begin("dir"),12;break;case 36:return kt.lex.firstGraph()&&this.begin("dir"),12;break;case 37:return kt.lex.firstGraph()&&this.begin("dir"),12;break;case 38:return 27;case 39:return 32;case 40:return 98;case 41:return 98;case 42:return 98;case 43:return 98;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 121;case 56:return 122;case 57:return 123;case 58:return 124;case 59:return 78;case 60:return 105;case 61:return 111;case 62:return 46;case 63:return 60;case 64:return 44;case 65:return 8;case 66:return 106;case 67:return 115;case 68:return this.popState(),77;break;case 69:return this.pushState("edgeText"),75;break;case 70:return 119;case 71:return this.popState(),77;break;case 72:return this.pushState("thickEdgeText"),75;break;case 73:return 119;case 74:return this.popState(),77;break;case 75:return this.pushState("dottedEdgeText"),75;break;case 76:return 119;case 77:return 77;case 78:return this.popState(),53;break;case 79:return"TEXT";case 80:return this.pushState("ellipseText"),52;break;case 81:return this.popState(),55;break;case 82:return this.pushState("text"),54;break;case 83:return this.popState(),57;break;case 84:return this.pushState("text"),56;break;case 85:return 58;case 86:return this.pushState("text"),67;break;case 87:return this.popState(),64;break;case 88:return this.pushState("text"),63;break;case 89:return this.popState(),49;break;case 90:return this.pushState("text"),48;break;case 91:return this.popState(),69;break;case 92:return this.popState(),71;break;case 93:return 117;case 94:return this.pushState("trapText"),68;break;case 95:return this.pushState("trapText"),70;break;case 96:return 118;case 97:return 67;case 98:return 90;case 99:return"SEP";case 100:return 89;case 101:return 115;case 102:return 111;case 103:return 44;case 104:return 109;case 105:return 114;case 106:return 116;case 107:return this.popState(),62;break;case 108:return this.pushState("text"),62;break;case 109:return this.popState(),51;break;case 110:return this.pushState("text"),50;break;case 111:return this.popState(),31;break;case 112:return this.pushState("text"),29;break;case 113:return this.popState(),66;break;case 114:return this.pushState("text"),65;break;case 115:return"TEXT";case 116:return"QUOTE";case 117:return 9;case 118:return 10;case 119: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]*)/,/^(?:[^\s\"]+@(?=[^\{\"]))/,/^(?:[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,77,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},shapeDataStr:{rules:[9,10,21,24,77,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},shapeData:{rules:[8,11,12,21,24,77,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},callbackargs:{rules:[17,18,21,24,77,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},callbackname:{rules:[14,15,16,21,24,77,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},href:{rules:[21,24,77,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},click:{rules:[21,24,33,34,77,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},dottedEdgeText:{rules:[21,24,74,76,77,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},thickEdgeText:{rules:[21,24,71,73,77,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},edgeText:{rules:[21,24,68,70,77,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},trapText:{rules:[21,24,77,80,82,84,88,90,91,92,93,94,95,108,110,112,114],inclusive:!1},ellipseText:{rules:[21,24,77,78,79,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},text:{rules:[21,24,77,80,81,82,83,84,87,88,89,90,94,95,107,108,109,110,111,112,113,114,115],inclusive:!1},vertex:{rules:[21,24,77,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},dir:{rules:[21,24,44,45,46,47,48,49,50,51,52,53,54,77,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},acc_descr_multiline:{rules:[5,6,21,24,77,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},acc_descr:{rules:[3,21,24,77,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},acc_title:{rules:[1,21,24,77,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},md_string:{rules:[19,20,21,24,77,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},string:{rules:[21,22,23,24,77,80,82,84,88,90,94,95,108,110,112,114],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,69,71,72,74,75,77,80,82,84,85,86,88,90,94,95,96,97,98,99,100,101,102,103,104,105,106,108,110,112,114,116,117,118,119],inclusive:!0}}};return fr})();Hi.lexer=Zs;function _a(){this.yy={}}return o(_a,"Parser"),_a.prototype=Hi,Hi.Parser=_a,new _a})();GI.parser=GI;VI=GI});var ffe,dfe,pfe=N(()=>{"use strict";hfe();ffe=Object.assign({},VI);ffe.parse=t=>{let e=t.replace(/}\s*\n/g,`} -`);return VI.parse(e)};dfe=ffe});var zc,yg=N(()=>{"use strict";zc=o(()=>` - /* Font Awesome icon styling - consolidated */ - .label-icon { - display: inline-block; - height: 1em; - overflow: visible; - vertical-align: -0.125em; - } - - .node .label-icon path { - fill: currentColor; - stroke: revert; - stroke-width: revert; - } -`,"getIconStyles")});var Jqe,eWe,mfe,gfe=N(()=>{"use strict";eo();yg();Jqe=o((t,e)=>{let r=ld,n=r(t,"r"),i=r(t,"g"),a=r(t,"b");return Ka(n,i,a,e)},"fade"),eWe=o(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: ${Jqe(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; - } - ${zc()} -`,"getStyles"),mfe=eWe});var CE={};dr(CE,{diagram:()=>tWe});var tWe,AE=N(()=>{"use strict";Xt();Bte();ufe();pfe();gfe();tWe={parser:dfe,get db(){return new lw},renderer:cfe,styles:mfe,init:o(t=>{t.flowchart||(t.flowchart={}),t.layout&&nv({layout:t.layout}),t.flowchart.arrowMarkerAbsolute=t.arrowMarkerAbsolute,nv({flowchart:{arrowMarkerAbsolute:t.arrowMarkerAbsolute}})},"init")}});var UI,Tfe,wfe=N(()=>{"use strict";UI=(function(){var t=o(function(K,ae,Q,de){for(Q=Q||{},de=K.length;de--;Q[K[de]]=ae);return Q},"o"),e=[6,8,10,22,24,26,28,33,34,35,36,37,40,43,44,50],r=[1,10],n=[1,11],i=[1,12],a=[1,13],s=[1,20],l=[1,21],u=[1,22],h=[1,23],f=[1,24],d=[1,19],p=[1,25],m=[1,26],g=[1,18],y=[1,33],v=[1,34],x=[1,35],b=[1,36],T=[1,37],S=[6,8,10,13,15,17,20,21,22,24,26,28,33,34,35,36,37,40,43,44,50,63,64,65,66,67],w=[1,42],k=[1,43],A=[1,52],C=[40,50,68,69],R=[1,63],I=[1,61],L=[1,58],E=[1,62],D=[1,64],_=[6,8,10,13,17,22,24,26,28,33,34,35,36,37,40,41,42,43,44,48,49,50,63,64,65,66,67],O=[63,64,65,66,67],M=[1,81],P=[1,80],B=[1,78],F=[1,79],G=[6,10,42,47],$=[6,10,13,41,42,47,48,49],U=[1,89],j=[1,88],te=[1,87],Y=[19,56],oe=[1,98],J=[1,97],ue=[19,56,58,60],re={trace:o(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,COLON:13,role:14,STYLE_SEPARATOR:15,idList:16,BLOCK_START:17,attributes:18,BLOCK_STOP:19,SQS:20,SQE:21,title:22,title_value:23,acc_title:24,acc_title_value:25,acc_descr:26,acc_descr_value:27,acc_descr_multiline_value:28,direction:29,classDefStatement:30,classStatement:31,styleStatement:32,direction_tb:33,direction_bt:34,direction_rl:35,direction_lr:36,CLASSDEF:37,stylesOpt:38,separator:39,UNICODE_TEXT:40,STYLE_TEXT:41,COMMA:42,CLASS:43,STYLE:44,style:45,styleComponent:46,SEMI:47,NUM:48,BRKT:49,ENTITY_NAME:50,attribute:51,attributeType:52,attributeName:53,attributeKeyTypeList:54,attributeComment:55,ATTRIBUTE_WORD:56,attributeKeyType:57,",":58,ATTRIBUTE_KEY:59,COMMENT:60,cardinality:61,relType:62,ZERO_OR_ONE:63,ZERO_OR_MORE:64,ONE_OR_MORE:65,ONLY_ONE:66,MD_PARENT:67,NON_IDENTIFYING:68,IDENTIFYING:69,WORD:70,$accept:0,$end:1},terminals_:{2:"error",4:"ER_DIAGRAM",6:"EOF",8:"SPACE",10:"NEWLINE",13:"COLON",15:"STYLE_SEPARATOR",17:"BLOCK_START",19:"BLOCK_STOP",20:"SQS",21:"SQE",22:"title",23:"title_value",24:"acc_title",25:"acc_title_value",26:"acc_descr",27:"acc_descr_value",28:"acc_descr_multiline_value",33:"direction_tb",34:"direction_bt",35:"direction_rl",36:"direction_lr",37:"CLASSDEF",40:"UNICODE_TEXT",41:"STYLE_TEXT",42:"COMMA",43:"CLASS",44:"STYLE",47:"SEMI",48:"NUM",49:"BRKT",50:"ENTITY_NAME",56:"ATTRIBUTE_WORD",58:",",59:"ATTRIBUTE_KEY",60:"COMMENT",63:"ZERO_OR_ONE",64:"ZERO_OR_MORE",65:"ONE_OR_MORE",66:"ONLY_ONE",67:"MD_PARENT",68:"NON_IDENTIFYING",69:"IDENTIFYING",70:"WORD"},productions_:[0,[3,3],[5,0],[5,2],[7,2],[7,1],[7,1],[7,1],[9,5],[9,9],[9,7],[9,7],[9,4],[9,6],[9,3],[9,5],[9,1],[9,3],[9,7],[9,9],[9,6],[9,8],[9,4],[9,6],[9,2],[9,2],[9,2],[9,1],[9,1],[9,1],[9,1],[9,1],[29,1],[29,1],[29,1],[29,1],[30,4],[16,1],[16,1],[16,3],[16,3],[31,3],[32,4],[38,1],[38,3],[45,1],[45,2],[39,1],[39,1],[39,1],[46,1],[46,1],[46,1],[46,1],[11,1],[11,1],[18,1],[18,2],[51,2],[51,3],[51,3],[51,4],[52,1],[53,1],[54,1],[54,3],[57,1],[55,1],[12,3],[61,1],[61,1],[61,1],[61,1],[61,1],[62,1],[62,1],[14,1],[14,1],[14,1]],performAction:o(function(ae,Q,de,ne,Te,q,Ve){var pe=q.length-1;switch(Te){case 1:break;case 2:this.$=[];break;case 3:q[pe-1].push(q[pe]),this.$=q[pe-1];break;case 4:case 5:this.$=q[pe];break;case 6:case 7:this.$=[];break;case 8:ne.addEntity(q[pe-4]),ne.addEntity(q[pe-2]),ne.addRelationship(q[pe-4],q[pe],q[pe-2],q[pe-3]);break;case 9:ne.addEntity(q[pe-8]),ne.addEntity(q[pe-4]),ne.addRelationship(q[pe-8],q[pe],q[pe-4],q[pe-5]),ne.setClass([q[pe-8]],q[pe-6]),ne.setClass([q[pe-4]],q[pe-2]);break;case 10:ne.addEntity(q[pe-6]),ne.addEntity(q[pe-2]),ne.addRelationship(q[pe-6],q[pe],q[pe-2],q[pe-3]),ne.setClass([q[pe-6]],q[pe-4]);break;case 11:ne.addEntity(q[pe-6]),ne.addEntity(q[pe-4]),ne.addRelationship(q[pe-6],q[pe],q[pe-4],q[pe-5]),ne.setClass([q[pe-4]],q[pe-2]);break;case 12:ne.addEntity(q[pe-3]),ne.addAttributes(q[pe-3],q[pe-1]);break;case 13:ne.addEntity(q[pe-5]),ne.addAttributes(q[pe-5],q[pe-1]),ne.setClass([q[pe-5]],q[pe-3]);break;case 14:ne.addEntity(q[pe-2]);break;case 15:ne.addEntity(q[pe-4]),ne.setClass([q[pe-4]],q[pe-2]);break;case 16:ne.addEntity(q[pe]);break;case 17:ne.addEntity(q[pe-2]),ne.setClass([q[pe-2]],q[pe]);break;case 18:ne.addEntity(q[pe-6],q[pe-4]),ne.addAttributes(q[pe-6],q[pe-1]);break;case 19:ne.addEntity(q[pe-8],q[pe-6]),ne.addAttributes(q[pe-8],q[pe-1]),ne.setClass([q[pe-8]],q[pe-3]);break;case 20:ne.addEntity(q[pe-5],q[pe-3]);break;case 21:ne.addEntity(q[pe-7],q[pe-5]),ne.setClass([q[pe-7]],q[pe-2]);break;case 22:ne.addEntity(q[pe-3],q[pe-1]);break;case 23:ne.addEntity(q[pe-5],q[pe-3]),ne.setClass([q[pe-5]],q[pe]);break;case 24:case 25:this.$=q[pe].trim(),ne.setAccTitle(this.$);break;case 26:case 27:this.$=q[pe].trim(),ne.setAccDescription(this.$);break;case 32:ne.setDirection("TB");break;case 33:ne.setDirection("BT");break;case 34:ne.setDirection("RL");break;case 35:ne.setDirection("LR");break;case 36:this.$=q[pe-3],ne.addClass(q[pe-2],q[pe-1]);break;case 37:case 38:case 56:case 64:this.$=[q[pe]];break;case 39:case 40:this.$=q[pe-2].concat([q[pe]]);break;case 41:this.$=q[pe-2],ne.setClass(q[pe-1],q[pe]);break;case 42:this.$=q[pe-3],ne.addCssStyles(q[pe-2],q[pe-1]);break;case 43:this.$=[q[pe]];break;case 44:q[pe-2].push(q[pe]),this.$=q[pe-2];break;case 46:this.$=q[pe-1]+q[pe];break;case 54:case 76:case 77:this.$=q[pe].replace(/"/g,"");break;case 55:case 78:this.$=q[pe];break;case 57:q[pe].push(q[pe-1]),this.$=q[pe];break;case 58:this.$={type:q[pe-1],name:q[pe]};break;case 59:this.$={type:q[pe-2],name:q[pe-1],keys:q[pe]};break;case 60:this.$={type:q[pe-2],name:q[pe-1],comment:q[pe]};break;case 61:this.$={type:q[pe-3],name:q[pe-2],keys:q[pe-1],comment:q[pe]};break;case 62:case 63:case 66:this.$=q[pe];break;case 65:q[pe-2].push(q[pe]),this.$=q[pe-2];break;case 67:this.$=q[pe].replace(/"/g,"");break;case 68:this.$={cardA:q[pe],relType:q[pe-1],cardB:q[pe-2]};break;case 69:this.$=ne.Cardinality.ZERO_OR_ONE;break;case 70:this.$=ne.Cardinality.ZERO_OR_MORE;break;case 71:this.$=ne.Cardinality.ONE_OR_MORE;break;case 72:this.$=ne.Cardinality.ONLY_ONE;break;case 73:this.$=ne.Cardinality.MD_PARENT;break;case 74:this.$=ne.Identification.NON_IDENTIFYING;break;case 75:this.$=ne.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,22:r,24:n,26:i,28:a,29:14,30:15,31:16,32:17,33:s,34:l,35:u,36:h,37:f,40:d,43:p,44:m,50:g},t(e,[2,7],{1:[2,1]}),t(e,[2,3]),{9:27,11:9,22:r,24:n,26:i,28:a,29:14,30:15,31:16,32:17,33:s,34:l,35:u,36:h,37:f,40:d,43:p,44:m,50:g},t(e,[2,5]),t(e,[2,6]),t(e,[2,16],{12:28,61:32,15:[1,29],17:[1,30],20:[1,31],63:y,64:v,65:x,66:b,67:T}),{23:[1,38]},{25:[1,39]},{27:[1,40]},t(e,[2,27]),t(e,[2,28]),t(e,[2,29]),t(e,[2,30]),t(e,[2,31]),t(S,[2,54]),t(S,[2,55]),t(e,[2,32]),t(e,[2,33]),t(e,[2,34]),t(e,[2,35]),{16:41,40:w,41:k},{16:44,40:w,41:k},{16:45,40:w,41:k},t(e,[2,4]),{11:46,40:d,50:g},{16:47,40:w,41:k},{18:48,19:[1,49],51:50,52:51,56:A},{11:53,40:d,50:g},{62:54,68:[1,55],69:[1,56]},t(C,[2,69]),t(C,[2,70]),t(C,[2,71]),t(C,[2,72]),t(C,[2,73]),t(e,[2,24]),t(e,[2,25]),t(e,[2,26]),{13:R,38:57,41:I,42:L,45:59,46:60,48:E,49:D},t(_,[2,37]),t(_,[2,38]),{16:65,40:w,41:k,42:L},{13:R,38:66,41:I,42:L,45:59,46:60,48:E,49:D},{13:[1,67],15:[1,68]},t(e,[2,17],{61:32,12:69,17:[1,70],42:L,63:y,64:v,65:x,66:b,67:T}),{19:[1,71]},t(e,[2,14]),{18:72,19:[2,56],51:50,52:51,56:A},{53:73,56:[1,74]},{56:[2,62]},{21:[1,75]},{61:76,63:y,64:v,65:x,66:b,67:T},t(O,[2,74]),t(O,[2,75]),{6:M,10:P,39:77,42:B,47:F},{40:[1,82],41:[1,83]},t(G,[2,43],{46:84,13:R,41:I,48:E,49:D}),t($,[2,45]),t($,[2,50]),t($,[2,51]),t($,[2,52]),t($,[2,53]),t(e,[2,41],{42:L}),{6:M,10:P,39:85,42:B,47:F},{14:86,40:U,50:j,70:te},{16:90,40:w,41:k},{11:91,40:d,50:g},{18:92,19:[1,93],51:50,52:51,56:A},t(e,[2,12]),{19:[2,57]},t(Y,[2,58],{54:94,55:95,57:96,59:oe,60:J}),t([19,56,59,60],[2,63]),t(e,[2,22],{15:[1,100],17:[1,99]}),t([40,50],[2,68]),t(e,[2,36]),{13:R,41:I,45:101,46:60,48:E,49:D},t(e,[2,47]),t(e,[2,48]),t(e,[2,49]),t(_,[2,39]),t(_,[2,40]),t($,[2,46]),t(e,[2,42]),t(e,[2,8]),t(e,[2,76]),t(e,[2,77]),t(e,[2,78]),{13:[1,102],42:L},{13:[1,104],15:[1,103]},{19:[1,105]},t(e,[2,15]),t(Y,[2,59],{55:106,58:[1,107],60:J}),t(Y,[2,60]),t(ue,[2,64]),t(Y,[2,67]),t(ue,[2,66]),{18:108,19:[1,109],51:50,52:51,56:A},{16:110,40:w,41:k},t(G,[2,44],{46:84,13:R,41:I,48:E,49:D}),{14:111,40:U,50:j,70:te},{16:112,40:w,41:k},{14:113,40:U,50:j,70:te},t(e,[2,13]),t(Y,[2,61]),{57:114,59:oe},{19:[1,115]},t(e,[2,20]),t(e,[2,23],{17:[1,116],42:L}),t(e,[2,11]),{13:[1,117],42:L},t(e,[2,10]),t(ue,[2,65]),t(e,[2,18]),{18:118,19:[1,119],51:50,52:51,56:A},{14:120,40:U,50:j,70:te},{19:[1,121]},t(e,[2,21]),t(e,[2,9]),t(e,[2,19])],defaultActions:{52:[2,62],72:[2,57]},parseError:o(function(ae,Q){if(Q.recoverable)this.trace(ae);else{var de=new Error(ae);throw de.hash=Q,de}},"parseError"),parse:o(function(ae){var Q=this,de=[0],ne=[],Te=[null],q=[],Ve=this.table,pe="",Be=0,Ye=0,He=0,Le=2,Ie=1,Ne=q.slice.call(arguments,1),Ce=Object.create(this.lexer),Fe={yy:{}};for(var fe in this.yy)Object.prototype.hasOwnProperty.call(this.yy,fe)&&(Fe.yy[fe]=this.yy[fe]);Ce.setInput(ae,Fe.yy),Fe.yy.lexer=Ce,Fe.yy.parser=this,typeof Ce.yylloc>"u"&&(Ce.yylloc={});var xe=Ce.yylloc;q.push(xe);var W=Ce.options&&Ce.options.ranges;typeof Fe.yy.parseError=="function"?this.parseError=Fe.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function he(et){de.length=de.length-2*et,Te.length=Te.length-et,q.length=q.length-et}o(he,"popStack");function z(){var et;return et=ne.pop()||Ce.lex()||Ie,typeof et!="number"&&(et instanceof Array&&(ne=et,et=ne.pop()),et=Q.symbols_[et]||et),et}o(z,"lex");for(var se,le,ke,ve,ye,Re,_e={},ze,Ke,xt,We;;){if(ke=de[de.length-1],this.defaultActions[ke]?ve=this.defaultActions[ke]:((se===null||typeof se>"u")&&(se=z()),ve=Ve[ke]&&Ve[ke][se]),typeof ve>"u"||!ve.length||!ve[0]){var Oe="";We=[];for(ze in Ve[ke])this.terminals_[ze]&&ze>Le&&We.push("'"+this.terminals_[ze]+"'");Ce.showPosition?Oe="Parse error on line "+(Be+1)+`: -`+Ce.showPosition()+` -Expecting `+We.join(", ")+", got '"+(this.terminals_[se]||se)+"'":Oe="Parse error on line "+(Be+1)+": Unexpected "+(se==Ie?"end of input":"'"+(this.terminals_[se]||se)+"'"),this.parseError(Oe,{text:Ce.match,token:this.terminals_[se]||se,line:Ce.yylineno,loc:xe,expected:We})}if(ve[0]instanceof Array&&ve.length>1)throw new Error("Parse Error: multiple actions possible at state: "+ke+", token: "+se);switch(ve[0]){case 1:de.push(se),Te.push(Ce.yytext),q.push(Ce.yylloc),de.push(ve[1]),se=null,le?(se=le,le=null):(Ye=Ce.yyleng,pe=Ce.yytext,Be=Ce.yylineno,xe=Ce.yylloc,He>0&&He--);break;case 2:if(Ke=this.productions_[ve[1]][1],_e.$=Te[Te.length-Ke],_e._$={first_line:q[q.length-(Ke||1)].first_line,last_line:q[q.length-1].last_line,first_column:q[q.length-(Ke||1)].first_column,last_column:q[q.length-1].last_column},W&&(_e._$.range=[q[q.length-(Ke||1)].range[0],q[q.length-1].range[1]]),Re=this.performAction.apply(_e,[pe,Ye,Be,Fe.yy,ve[1],Te,q].concat(Ne)),typeof Re<"u")return Re;Ke&&(de=de.slice(0,-1*Ke*2),Te=Te.slice(0,-1*Ke),q=q.slice(0,-1*Ke)),de.push(this.productions_[ve[1]][0]),Te.push(_e.$),q.push(_e._$),xt=Ve[de[de.length-2]][de[de.length-1]],de.push(xt);break;case 3:return!0}}return!0},"parse")},ee=(function(){var K={EOF:1,parseError:o(function(Q,de){if(this.yy.parser)this.yy.parser.parseError(Q,de);else throw new Error(Q)},"parseError"),setInput:o(function(ae,Q){return this.yy=Q||this.yy||{},this._input=ae,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:o(function(){var ae=this._input[0];this.yytext+=ae,this.yyleng++,this.offset++,this.match+=ae,this.matched+=ae;var Q=ae.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),ae},"input"),unput:o(function(ae){var Q=ae.length,de=ae.split(/(?:\r\n?|\n)/g);this._input=ae+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-Q),this.offset-=Q;var ne=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 Te=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===ne.length?this.yylloc.first_column:0)+ne[ne.length-de.length].length-de[0].length:this.yylloc.first_column-Q},this.options.ranges&&(this.yylloc.range=[Te[0],Te[0]+this.yyleng-Q]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(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:o(function(ae){this.unput(this.match.slice(ae))},"less"),pastInput:o(function(){var ae=this.matched.substr(0,this.matched.length-this.match.length);return(ae.length>20?"...":"")+ae.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var ae=this.match;return ae.length<20&&(ae+=this._input.substr(0,20-ae.length)),(ae.substr(0,20)+(ae.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var ae=this.pastInput(),Q=new Array(ae.length+1).join("-");return ae+this.upcomingInput()+` -`+Q+"^"},"showPosition"),test_match:o(function(ae,Q){var de,ne,Te;if(this.options.backtrack_lexer&&(Te={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&&(Te.yylloc.range=this.yylloc.range.slice(0))),ne=ae[0].match(/(?:\r\n?|\n).*/g),ne&&(this.yylineno+=ne.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:ne?ne[ne.length-1].length-ne[ne.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+ae[0].length},this.yytext+=ae[0],this.match+=ae[0],this.matches=ae,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(ae[0].length),this.matched+=ae[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 q in Te)this[q]=Te[q];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var ae,Q,de,ne;this._more||(this.yytext="",this.match="");for(var Te=this._currentRules(),q=0;qQ[0].length)){if(Q=de,ne=q,this.options.backtrack_lexer){if(ae=this.test_match(de,Te[q]),ae!==!1)return ae;if(this._backtrack){Q=!1;continue}else return!1}else if(!this.options.flex)break}return Q?(ae=this.test_match(Q,Te[ne]),ae!==!1?ae:!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:o(function(){var Q=this.next();return Q||this.lex()},"lex"),begin:o(function(Q){this.conditionStack.push(Q)},"begin"),popState:o(function(){var Q=this.conditionStack.length-1;return Q>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(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:o(function(Q){return Q=this.conditionStack.length-1-Math.abs(Q||0),Q>=0?this.conditionStack[Q]:"INITIAL"},"topState"),pushState:o(function(Q){this.begin(Q)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:o(function(Q,de,ne,Te){var q=Te;switch(ne){case 0:return this.begin("acc_title"),24;break;case 1:return this.popState(),"acc_title_value";break;case 2:return this.begin("acc_descr"),26;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 33;case 8:return 34;case 9:return 35;case 10:return 36;case 11:return 10;case 12:break;case 13:return 8;case 14:return 50;case 15:return 70;case 16:return 4;case 17:return this.begin("block"),17;break;case 18:return 49;case 19:return 49;case 20:return 42;case 21:return 15;case 22:return 13;case 23:break;case 24:return 59;case 25:return 56;case 26:return 56;case 27:return 60;case 28:break;case 29:return this.popState(),19;break;case 30:return de.yytext[0];case 31:return 20;case 32:return 21;case 33:return this.begin("style"),44;break;case 34:return this.popState(),10;break;case 35:break;case 36:return 13;case 37:return 42;case 38:return 49;case 39:return this.begin("style"),37;break;case 40:return 43;case 41:return 63;case 42:return 65;case 43:return 65;case 44:return 65;case 45:return 63;case 46:return 63;case 47:return 64;case 48:return 64;case 49:return 64;case 50:return 64;case 51:return 64;case 52:return 65;case 53:return 64;case 54:return 65;case 55:return 66;case 56:return 66;case 57:return 66;case 58:return 66;case 59:return 63;case 60:return 64;case 61:return 65;case 62:return 67;case 63:return 68;case 64:return 69;case 65:return 69;case 66:return 68;case 67:return 68;case 68:return 68;case 69:return 41;case 70:return 47;case 71:return 40;case 72:return 48;case 73:return de.yytext[0];case 74:return 6}},"anonymous"),rules:[/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:.*direction\s+TB[^\n]*)/i,/^(?:.*direction\s+BT[^\n]*)/i,/^(?:.*direction\s+RL[^\n]*)/i,/^(?:.*direction\s+LR[^\n]*)/i,/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:[\s]+)/i,/^(?:"[^"%\r\n\v\b\\]+")/i,/^(?:"[^"]*")/i,/^(?:erDiagram\b)/i,/^(?:\{)/i,/^(?:#)/i,/^(?:#)/i,/^(?:,)/i,/^(?::::)/i,/^(?::)/i,/^(?:\s+)/i,/^(?:\b((?:PK)|(?:FK)|(?:UK))\b)/i,/^(?:([^\s]*)[~].*[~]([^\s]*))/i,/^(?:([\*A-Za-z_\u00C0-\uFFFF][A-Za-z0-9\-\_\[\]\(\)\u00C0-\uFFFF\*]*))/i,/^(?:"[^"]*")/i,/^(?:[\n]+)/i,/^(?:\})/i,/^(?:.)/i,/^(?:\[)/i,/^(?:\])/i,/^(?:style\b)/i,/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?::)/i,/^(?:,)/i,/^(?:#)/i,/^(?:classDef\b)/i,/^(?:class\b)/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,/^(?:([^\x00-\x7F]|\w|-|\*)+)/i,/^(?:;)/i,/^(?:([^\x00-\x7F]|\w|-|\*)+)/i,/^(?:[0-9])/i,/^(?:.)/i,/^(?:$)/i],conditions:{style:{rules:[34,35,36,37,38,69,70],inclusive:!1},acc_descr_multiline:{rules:[5,6],inclusive:!1},acc_descr:{rules:[3],inclusive:!1},acc_title:{rules:[1],inclusive:!1},block:{rules:[23,24,25,26,27,28,29,30],inclusive:!1},INITIAL:{rules:[0,2,4,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,31,32,33,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,65,66,67,68,71,72,73,74],inclusive:!0}}};return K})();re.lexer=ee;function Z(){this.yy={}}return o(Z,"Parser"),Z.prototype=re,re.Parser=Z,new Z})();UI.parser=UI;Tfe=UI});var _E,kfe=N(()=>{"use strict";pt();Xt();ci();tr();_E=class{constructor(){this.entities=new Map;this.relationships=[];this.classes=new Map;this.direction="TB";this.Cardinality={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"};this.Identification={NON_IDENTIFYING:"NON_IDENTIFYING",IDENTIFYING:"IDENTIFYING"};this.setAccTitle=Rr;this.getAccTitle=Mr;this.setAccDescription=Ir;this.getAccDescription=Or;this.setDiagramTitle=$r;this.getDiagramTitle=Pr;this.getConfig=o(()=>ge().er,"getConfig");this.clear(),this.addEntity=this.addEntity.bind(this),this.addAttributes=this.addAttributes.bind(this),this.addRelationship=this.addRelationship.bind(this),this.setDirection=this.setDirection.bind(this),this.addCssStyles=this.addCssStyles.bind(this),this.addClass=this.addClass.bind(this),this.setClass=this.setClass.bind(this),this.setAccTitle=this.setAccTitle.bind(this),this.setAccDescription=this.setAccDescription.bind(this)}static{o(this,"ErDB")}addEntity(e,r=""){return this.entities.has(e)?!this.entities.get(e)?.alias&&r&&(this.entities.get(e).alias=r,X.info(`Add alias '${r}' to entity '${e}'`)):(this.entities.set(e,{id:`entity-${e}-${this.entities.size}`,label:e,attributes:[],alias:r,shape:"erBox",look:ge().look??"default",cssClasses:"default",cssStyles:[]}),X.info("Added new entity :",e)),this.entities.get(e)}getEntity(e){return this.entities.get(e)}getEntities(){return this.entities}getClasses(){return this.classes}addAttributes(e,r){let n=this.addEntity(e),i;for(i=r.length-1;i>=0;i--)r[i].keys||(r[i].keys=[]),r[i].comment||(r[i].comment=""),n.attributes.push(r[i]),X.debug("Added attribute ",r[i].name)}addRelationship(e,r,n,i){let a=this.entities.get(e),s=this.entities.get(n);if(!a||!s)return;let l={entityA:a.id,roleA:r,entityB:s.id,relSpec:i};this.relationships.push(l),X.debug("Added new relationship :",l)}getRelationships(){return this.relationships}getDirection(){return this.direction}setDirection(e){this.direction=e}getCompiledStyles(e){let r=[];for(let n of e){let i=this.classes.get(n);i?.styles&&(r=[...r,...i.styles??[]].map(a=>a.trim())),i?.textStyles&&(r=[...r,...i.textStyles??[]].map(a=>a.trim()))}return r}addCssStyles(e,r){for(let n of e){let i=this.entities.get(n);if(!r||!i)return;for(let a of r)i.cssStyles.push(a)}}addClass(e,r){e.forEach(n=>{let i=this.classes.get(n);i===void 0&&(i={id:n,styles:[],textStyles:[]},this.classes.set(n,i)),r&&r.forEach(function(a){if(/color/.exec(a)){let s=a.replace("fill","bgFill");i.textStyles.push(s)}i.styles.push(a)})})}setClass(e,r){for(let n of e){let i=this.entities.get(n);if(i)for(let a of r)i.cssClasses+=" "+a}}clear(){this.entities=new Map,this.classes=new Map,this.relationships=[],Sr()}getData(){let e=[],r=[],n=ge();for(let a of this.entities.keys()){let s=this.entities.get(a);s&&(s.cssCompiledStyles=this.getCompiledStyles(s.cssClasses.split(" ")),e.push(s))}let i=0;for(let a of this.relationships){let s={id:xc(a.entityA,a.entityB,{prefix:"id",counter:i++}),type:"normal",curve:"basis",start:a.entityA,end:a.entityB,label:a.roleA,labelpos:"c",thickness:"normal",classes:"relationshipLine",arrowTypeStart:a.relSpec.cardB.toLowerCase(),arrowTypeEnd:a.relSpec.cardA.toLowerCase(),pattern:a.relSpec.relType=="IDENTIFYING"?"solid":"dashed",look:n.look};r.push(s)}return{nodes:e,edges:r,other:{},config:n,direction:"TB"}}}});var HI={};dr(HI,{draw:()=>lWe});var lWe,Efe=N(()=>{"use strict";Xt();pt();ep();Nf();Mf();tr();yr();lWe=o(async function(t,e,r,n){X.info("REF0:"),X.info("Drawing er diagram (unified)",e);let{securityLevel:i,er:a,layout:s}=ge(),l=n.db.getData(),u=Vo(e,i);l.type=n.type,l.layoutAlgorithm=$c(s),l.config.flowchart.nodeSpacing=a?.nodeSpacing||140,l.config.flowchart.rankSpacing=a?.rankSpacing||80,l.direction=n.db.getDirection(),l.markers=["only_one","zero_or_one","one_or_more","zero_or_more"],l.diagramId=e,await Qo(l,u),l.layoutAlgorithm==="elk"&&u.select(".edges").lower();let h=u.selectAll('[id*="-background"]');Array.from(h).length>0&&h.each(function(){let d=qe(this),m=d.attr("id").replace("-background",""),g=u.select(`#${CSS.escape(m)}`);if(!g.empty()){let y=g.attr("transform");d.attr("transform",y)}});let f=8;qt.insertTitle(u,"erDiagramTitleText",a?.titleTopMargin??25,n.db.getDiagramTitle()),Ws(u,f,"erDiagram",a?.useMaxWidth??!0)},"draw")});var cWe,uWe,Sfe,Cfe=N(()=>{"use strict";eo();cWe=o((t,e)=>{let r=ld,n=r(t,"r"),i=r(t,"g"),a=r(t,"b");return Ka(n,i,a,e)},"fade"),uWe=o(t=>` - .entityBox { - fill: ${t.mainBkg}; - stroke: ${t.nodeBorder}; - } - - .relationshipLabelBox { - fill: ${t.tertiaryColor}; - opacity: 0.7; - background-color: ${t.tertiaryColor}; - rect { - opacity: 0.5; - } - } - - .labelBkg { - background-color: ${cWe(t.tertiaryColor,.5)}; - } - - .edgeLabel .label { - fill: ${t.nodeBorder}; - font-size: 14px; - } - - .label { - font-family: ${t.fontFamily}; - color: ${t.nodeTextColor||t.textColor}; - } - - .edge-pattern-dashed { - stroke-dasharray: 8,8; - } - - .node rect, - .node circle, - .node ellipse, - .node polygon - { - fill: ${t.mainBkg}; - stroke: ${t.nodeBorder}; - stroke-width: 1px; - } - - .relationshipLine { - stroke: ${t.lineColor}; - stroke-width: 1; - fill: none; - } - - .marker { - fill: none !important; - stroke: ${t.lineColor} !important; - stroke-width: 1; - } -`,"getStyles"),Sfe=uWe});var Afe={};dr(Afe,{diagram:()=>hWe});var hWe,_fe=N(()=>{"use strict";wfe();kfe();Efe();Cfe();hWe={parser:Tfe,get db(){return new _E},renderer:HI,styles:Sfe}});function li(t){return typeof t=="object"&&t!==null&&typeof t.$type=="string"}function Ta(t){return typeof t=="object"&&t!==null&&typeof t.$refText=="string"}function qI(t){return typeof t=="object"&&t!==null&&typeof t.name=="string"&&typeof t.type=="string"&&typeof t.path=="string"}function _p(t){return typeof t=="object"&&t!==null&&li(t.container)&&Ta(t.reference)&&typeof t.message=="string"}function Ol(t){return typeof t=="object"&&t!==null&&Array.isArray(t.content)}function If(t){return typeof t=="object"&&t!==null&&typeof t.tokenType=="object"}function Lx(t){return Ol(t)&&typeof t.fullText=="string"}var Ap,Pl=N(()=>{"use strict";o(li,"isAstNode");o(Ta,"isReference");o(qI,"isAstNodeDescription");o(_p,"isLinkingError");Ap=class{static{o(this,"AbstractAstReflection")}constructor(){this.subtypes={},this.allSubtypes={}}isInstance(e,r){return li(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}}};o(Ol,"isCompositeCstNode");o(If,"isLeafCstNode");o(Lx,"isRootCstNode")});function mWe(t){return typeof t=="string"?t:typeof t>"u"?"undefined":typeof t.toString=="function"?t.toString():Object.prototype.toString.call(t)}function DE(t){return!!t&&typeof t[Symbol.iterator]=="function"}function an(...t){if(t.length===1){let e=t[0];if(e instanceof po)return e;if(DE(e))return new po(()=>e[Symbol.iterator](),r=>r.next());if(typeof e.length=="number")return new po(()=>({index:0}),r=>r.index1?new po(()=>({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{"use strict";po=class t{static{o(this,"StreamImpl")}constructor(e,r){this.startFn=e,this.nextFn=r}iterator(){let e={state:this.startFn(),next:o(()=>this.nextFn(e.state),"next"),[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){return new t(()=>({first:this.startFn(),firstDone:!1,iterator:e[Symbol.iterator]()}),r=>{let n;if(!r.firstDone){do if(n=this.nextFn(r.first),!n.done)return n;while(!n.done);r.firstDone=!0}do if(n=r.iterator.next(),!n.done)return n;while(!n.done);return za})}join(e=","){let r=this.iterator(),n="",i,a=!1;do i=r.next(),i.done||(a&&(n+=e),n+=mWe(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(DE(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(DE(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){return new t(()=>({set:new Set,internalState:this.startFn()}),r=>{let n;do if(n=this.nextFn(r.internalState),!n.done){let i=e?e(n.value):n.value;if(!r.set.has(i))return r.set.add(i),n}while(!n.done);return za})}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)})}};o(mWe,"toString");o(DE,"isIterable");Rx=new po(()=>{},()=>za),za=Object.freeze({done:!0,value:void 0});o(an,"stream");Gc=class extends po{static{o(this,"TreeStreamImpl")}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:o(()=>this.nextFn(e.state),"next"),prune:o(()=>{e.state.pruned=!0},"prune"),[Symbol.iterator]:()=>e};return e}};(function(t){function e(a){return a.reduce((s,l)=>s+l,0)}o(e,"sum"),t.sum=e;function r(a){return a.reduce((s,l)=>s*l,0)}o(r,"product"),t.product=r;function n(a){return a.reduce((s,l)=>Math.min(s,l))}o(n,"min"),t.min=n;function i(a){return a.reduce((s,l)=>Math.max(s,l))}o(i,"max"),t.max=i})(vg||(vg={}))});var RE={};dr(RE,{DefaultNameRegexp:()=>LE,RangeComparison:()=>Vc,compareRange:()=>Rfe,findCommentNode:()=>jI,findDeclarationNodeAtOffset:()=>yWe,findLeafNodeAtOffset:()=>KI,findLeafNodeBeforeOffset:()=>Nfe,flattenCst:()=>gWe,getInteriorNodes:()=>bWe,getNextNode:()=>vWe,getPreviousNode:()=>Ife,getStartlineNode:()=>xWe,inRange:()=>XI,isChildNode:()=>YI,isCommentNode:()=>WI,streamCst:()=>Dp,toDocumentSegment:()=>Lp,tokenToRange:()=>xg});function Dp(t){return new Gc(t,e=>Ol(e)?e.content:[],{includeRoot:!0})}function gWe(t){return Dp(t).filter(If)}function YI(t,e){for(;t.container;)if(t=t.container,t===e)return!0;return!1}function xg(t){return{start:{character:t.startColumn-1,line:t.startLine-1},end:{character:t.endColumn,line:t.endLine-1}}}function Lp(t){if(!t)return;let{offset:e,end:r,range:n}=t;return{range:n,offset:e,end:r,length:r-e}}function Rfe(t,e){if(t.end.linee.end.line||t.start.line===e.end.line&&t.start.character>=e.end.character)return Vc.After;let r=t.start.line>e.start.line||t.start.line===e.start.line&&t.start.character>=e.start.character,n=t.end.lineVc.After}function yWe(t,e,r=LE){if(t){if(e>0){let n=e-t.offset,i=t.text.charAt(n);r.test(i)||e--}return KI(t,e)}}function jI(t,e){if(t){let r=Ife(t,!0);if(r&&WI(r,e))return r;if(Lx(t)){let n=t.content.findIndex(i=>!i.hidden);for(let i=n-1;i>=0;i--){let a=t.content[i];if(WI(a,e))return a}}}}function WI(t,e){return If(t)&&e.includes(t.tokenType.name)}function KI(t,e){if(If(t))return t;if(Ol(t)){let r=Mfe(t,e,!1);if(r)return KI(r,e)}}function Nfe(t,e){if(If(t))return t;if(Ol(t)){let r=Mfe(t,e,!0);if(r)return Nfe(r,e)}}function Mfe(t,e,r){let n=0,i=t.content.length-1,a;for(;n<=i;){let s=Math.floor((n+i)/2),l=t.content[s];if(l.offset<=e&&l.end>e)return l;l.end<=e?(a=r?l:void 0,n=s+1):i=s-1}return a}function Ife(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 vWe(t,e=!0){for(;t.container;){let r=t.container,n=r.content.indexOf(t),i=r.content.length-1;for(;n{"use strict";Pl();Ys();o(Dp,"streamCst");o(gWe,"flattenCst");o(YI,"isChildNode");o(xg,"tokenToRange");o(Lp,"toDocumentSegment");(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",t[t.Outside=5]="Outside"})(Vc||(Vc={}));o(Rfe,"compareRange");o(XI,"inRange");LE=/^[\w\p{L}]$/u;o(yWe,"findDeclarationNodeAtOffset");o(jI,"findCommentNode");o(WI,"isCommentNode");o(KI,"findLeafNodeAtOffset");o(Nfe,"findLeafNodeBeforeOffset");o(Mfe,"binarySearch");o(Ife,"getPreviousNode");o(vWe,"getNextNode");o(xWe,"getStartlineNode");o(bWe,"getInteriorNodes");o(TWe,"getCommonParent");o(Lfe,"getParentChain")});function Uc(t){throw new Error("Error! The input value was not handled.")}var Rp,NE=N(()=>{"use strict";Rp=class extends Error{static{o(this,"ErrorWithLocation")}constructor(e,r){super(e?`${r} at ${e.range.start.line}:${e.range.start.character}`:r)}};o(Uc,"assertUnreachable")});var zx={};dr(zx,{AbstractElement:()=>wg,AbstractRule:()=>bg,AbstractType:()=>Tg,Action:()=>Gg,Alternatives:()=>Vg,ArrayLiteral:()=>kg,ArrayType:()=>Eg,Assignment:()=>Ug,BooleanLiteral:()=>Sg,CharacterRange:()=>Hg,Condition:()=>Nx,Conjunction:()=>Cg,CrossReference:()=>qg,Disjunction:()=>Ag,EndOfFile:()=>Wg,Grammar:()=>_g,GrammarImport:()=>Ix,Group:()=>Yg,InferredType:()=>Dg,Interface:()=>Lg,Keyword:()=>Xg,LangiumGrammarAstReflection:()=>i1,LangiumGrammarTerminals:()=>wWe,NamedArgument:()=>Ox,NegatedToken:()=>jg,Negation:()=>Rg,NumberLiteral:()=>Ng,Parameter:()=>Mg,ParameterReference:()=>Ig,ParserRule:()=>Og,ReferenceType:()=>Pg,RegexToken:()=>Kg,ReturnType:()=>Px,RuleCall:()=>Qg,SimpleType:()=>Bg,StringLiteral:()=>Fg,TerminalAlternatives:()=>Zg,TerminalGroup:()=>Jg,TerminalRule:()=>Np,TerminalRuleCall:()=>e1,Type:()=>$g,TypeAttribute:()=>Bx,TypeDefinition:()=>ME,UnionType:()=>zg,UnorderedGroup:()=>t1,UntilToken:()=>r1,ValueLiteral:()=>Mx,Wildcard:()=>n1,isAbstractElement:()=>Fx,isAbstractRule:()=>kWe,isAbstractType:()=>EWe,isAction:()=>qu,isAlternatives:()=>BE,isArrayLiteral:()=>DWe,isArrayType:()=>QI,isAssignment:()=>Fl,isBooleanLiteral:()=>ZI,isCharacterRange:()=>sO,isCondition:()=>SWe,isConjunction:()=>JI,isCrossReference:()=>Mp,isDisjunction:()=>eO,isEndOfFile:()=>oO,isFeatureName:()=>CWe,isGrammar:()=>LWe,isGrammarImport:()=>RWe,isGroup:()=>Of,isInferredType:()=>IE,isInterface:()=>OE,isKeyword:()=>Zo,isNamedArgument:()=>NWe,isNegatedToken:()=>lO,isNegation:()=>tO,isNumberLiteral:()=>MWe,isParameter:()=>IWe,isParameterReference:()=>rO,isParserRule:()=>Ga,isPrimitiveType:()=>Ofe,isReferenceType:()=>nO,isRegexToken:()=>cO,isReturnType:()=>iO,isRuleCall:()=>$l,isSimpleType:()=>PE,isStringLiteral:()=>OWe,isTerminalAlternatives:()=>uO,isTerminalGroup:()=>hO,isTerminalRule:()=>mo,isTerminalRuleCall:()=>FE,isType:()=>$x,isTypeAttribute:()=>PWe,isTypeDefinition:()=>AWe,isUnionType:()=>aO,isUnorderedGroup:()=>$E,isUntilToken:()=>fO,isValueLiteral:()=>_We,isWildcard:()=>dO,reflection:()=>pr});function kWe(t){return pr.isInstance(t,bg)}function EWe(t){return pr.isInstance(t,Tg)}function SWe(t){return pr.isInstance(t,Nx)}function CWe(t){return Ofe(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 Ofe(t){return t==="string"||t==="number"||t==="boolean"||t==="Date"||t==="bigint"}function AWe(t){return pr.isInstance(t,ME)}function _We(t){return pr.isInstance(t,Mx)}function Fx(t){return pr.isInstance(t,wg)}function DWe(t){return pr.isInstance(t,kg)}function QI(t){return pr.isInstance(t,Eg)}function ZI(t){return pr.isInstance(t,Sg)}function JI(t){return pr.isInstance(t,Cg)}function eO(t){return pr.isInstance(t,Ag)}function LWe(t){return pr.isInstance(t,_g)}function RWe(t){return pr.isInstance(t,Ix)}function IE(t){return pr.isInstance(t,Dg)}function OE(t){return pr.isInstance(t,Lg)}function NWe(t){return pr.isInstance(t,Ox)}function tO(t){return pr.isInstance(t,Rg)}function MWe(t){return pr.isInstance(t,Ng)}function IWe(t){return pr.isInstance(t,Mg)}function rO(t){return pr.isInstance(t,Ig)}function Ga(t){return pr.isInstance(t,Og)}function nO(t){return pr.isInstance(t,Pg)}function iO(t){return pr.isInstance(t,Px)}function PE(t){return pr.isInstance(t,Bg)}function OWe(t){return pr.isInstance(t,Fg)}function mo(t){return pr.isInstance(t,Np)}function $x(t){return pr.isInstance(t,$g)}function PWe(t){return pr.isInstance(t,Bx)}function aO(t){return pr.isInstance(t,zg)}function qu(t){return pr.isInstance(t,Gg)}function BE(t){return pr.isInstance(t,Vg)}function Fl(t){return pr.isInstance(t,Ug)}function sO(t){return pr.isInstance(t,Hg)}function Mp(t){return pr.isInstance(t,qg)}function oO(t){return pr.isInstance(t,Wg)}function Of(t){return pr.isInstance(t,Yg)}function Zo(t){return pr.isInstance(t,Xg)}function lO(t){return pr.isInstance(t,jg)}function cO(t){return pr.isInstance(t,Kg)}function $l(t){return pr.isInstance(t,Qg)}function uO(t){return pr.isInstance(t,Zg)}function hO(t){return pr.isInstance(t,Jg)}function FE(t){return pr.isInstance(t,e1)}function $E(t){return pr.isInstance(t,t1)}function fO(t){return pr.isInstance(t,r1)}function dO(t){return pr.isInstance(t,n1)}var wWe,bg,Tg,Nx,ME,Mx,wg,kg,Eg,Sg,Cg,Ag,_g,Ix,Dg,Lg,Ox,Rg,Ng,Mg,Ig,Og,Pg,Px,Bg,Fg,Np,$g,Bx,zg,Gg,Vg,Ug,Hg,qg,Wg,Yg,Xg,jg,Kg,Qg,Zg,Jg,e1,t1,r1,n1,i1,pr,Hc=N(()=>{"use strict";Pl();wWe={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]*/},bg="AbstractRule";o(kWe,"isAbstractRule");Tg="AbstractType";o(EWe,"isAbstractType");Nx="Condition";o(SWe,"isCondition");o(CWe,"isFeatureName");o(Ofe,"isPrimitiveType");ME="TypeDefinition";o(AWe,"isTypeDefinition");Mx="ValueLiteral";o(_We,"isValueLiteral");wg="AbstractElement";o(Fx,"isAbstractElement");kg="ArrayLiteral";o(DWe,"isArrayLiteral");Eg="ArrayType";o(QI,"isArrayType");Sg="BooleanLiteral";o(ZI,"isBooleanLiteral");Cg="Conjunction";o(JI,"isConjunction");Ag="Disjunction";o(eO,"isDisjunction");_g="Grammar";o(LWe,"isGrammar");Ix="GrammarImport";o(RWe,"isGrammarImport");Dg="InferredType";o(IE,"isInferredType");Lg="Interface";o(OE,"isInterface");Ox="NamedArgument";o(NWe,"isNamedArgument");Rg="Negation";o(tO,"isNegation");Ng="NumberLiteral";o(MWe,"isNumberLiteral");Mg="Parameter";o(IWe,"isParameter");Ig="ParameterReference";o(rO,"isParameterReference");Og="ParserRule";o(Ga,"isParserRule");Pg="ReferenceType";o(nO,"isReferenceType");Px="ReturnType";o(iO,"isReturnType");Bg="SimpleType";o(PE,"isSimpleType");Fg="StringLiteral";o(OWe,"isStringLiteral");Np="TerminalRule";o(mo,"isTerminalRule");$g="Type";o($x,"isType");Bx="TypeAttribute";o(PWe,"isTypeAttribute");zg="UnionType";o(aO,"isUnionType");Gg="Action";o(qu,"isAction");Vg="Alternatives";o(BE,"isAlternatives");Ug="Assignment";o(Fl,"isAssignment");Hg="CharacterRange";o(sO,"isCharacterRange");qg="CrossReference";o(Mp,"isCrossReference");Wg="EndOfFile";o(oO,"isEndOfFile");Yg="Group";o(Of,"isGroup");Xg="Keyword";o(Zo,"isKeyword");jg="NegatedToken";o(lO,"isNegatedToken");Kg="RegexToken";o(cO,"isRegexToken");Qg="RuleCall";o($l,"isRuleCall");Zg="TerminalAlternatives";o(uO,"isTerminalAlternatives");Jg="TerminalGroup";o(hO,"isTerminalGroup");e1="TerminalRuleCall";o(FE,"isTerminalRuleCall");t1="UnorderedGroup";o($E,"isUnorderedGroup");r1="UntilToken";o(fO,"isUntilToken");n1="Wildcard";o(dO,"isWildcard");i1=class extends Ap{static{o(this,"LangiumGrammarAstReflection")}getAllTypes(){return[wg,bg,Tg,Gg,Vg,kg,Eg,Ug,Sg,Hg,Nx,Cg,qg,Ag,Wg,_g,Ix,Yg,Dg,Lg,Xg,Ox,jg,Rg,Ng,Mg,Ig,Og,Pg,Kg,Px,Qg,Bg,Fg,Zg,Jg,Np,e1,$g,Bx,ME,zg,t1,r1,Mx,n1]}computeIsSubtype(e,r){switch(e){case Gg:case Vg:case Ug:case Hg:case qg:case Wg:case Yg:case Xg:case jg:case Kg:case Qg:case Zg:case Jg:case e1:case t1:case r1:case n1:return this.isSubtype(wg,r);case kg:case Ng:case Fg:return this.isSubtype(Mx,r);case Eg:case Pg:case Bg:case zg:return this.isSubtype(ME,r);case Sg:return this.isSubtype(Nx,r)||this.isSubtype(Mx,r);case Cg:case Ag:case Rg:case Ig:return this.isSubtype(Nx,r);case Dg:case Lg:case $g:return this.isSubtype(Tg,r);case Og:return this.isSubtype(bg,r)||this.isSubtype(Tg,r);case Np:return this.isSubtype(bg,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 Tg;case"Grammar:hiddenTokens":case"ParserRule:hiddenTokens":case"RuleCall:rule":return bg;case"Grammar:usedGrammars":return _g;case"NamedArgument:parameter":case"ParameterReference:parameter":return Mg;case"TerminalRuleCall:rule":return Np;default:throw new Error(`${r} is not a valid reference id.`)}}getTypeMetaData(e){switch(e){case wg:return{name:wg,properties:[{name:"cardinality"},{name:"lookahead"}]};case kg:return{name:kg,properties:[{name:"elements",defaultValue:[]}]};case Eg:return{name:Eg,properties:[{name:"elementType"}]};case Sg:return{name:Sg,properties:[{name:"true",defaultValue:!1}]};case Cg:return{name:Cg,properties:[{name:"left"},{name:"right"}]};case Ag:return{name:Ag,properties:[{name:"left"},{name:"right"}]};case _g:return{name:_g,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 Ix:return{name:Ix,properties:[{name:"path"}]};case Dg:return{name:Dg,properties:[{name:"name"}]};case Lg:return{name:Lg,properties:[{name:"attributes",defaultValue:[]},{name:"name"},{name:"superTypes",defaultValue:[]}]};case Ox:return{name:Ox,properties:[{name:"calledByName",defaultValue:!1},{name:"parameter"},{name:"value"}]};case Rg:return{name:Rg,properties:[{name:"value"}]};case Ng:return{name:Ng,properties:[{name:"value"}]};case Mg:return{name:Mg,properties:[{name:"name"}]};case Ig:return{name:Ig,properties:[{name:"parameter"}]};case Og:return{name:Og,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 Pg:return{name:Pg,properties:[{name:"referenceType"}]};case Px:return{name:Px,properties:[{name:"name"}]};case Bg:return{name:Bg,properties:[{name:"primitiveType"},{name:"stringType"},{name:"typeRef"}]};case Fg:return{name:Fg,properties:[{name:"value"}]};case Np:return{name:Np,properties:[{name:"definition"},{name:"fragment",defaultValue:!1},{name:"hidden",defaultValue:!1},{name:"name"},{name:"type"}]};case $g:return{name:$g,properties:[{name:"name"},{name:"type"}]};case Bx:return{name:Bx,properties:[{name:"defaultValue"},{name:"isOptional",defaultValue:!1},{name:"name"},{name:"type"}]};case zg:return{name:zg,properties:[{name:"types",defaultValue:[]}]};case Gg:return{name:Gg,properties:[{name:"cardinality"},{name:"feature"},{name:"inferredType"},{name:"lookahead"},{name:"operator"},{name:"type"}]};case Vg:return{name:Vg,properties:[{name:"cardinality"},{name:"elements",defaultValue:[]},{name:"lookahead"}]};case Ug:return{name:Ug,properties:[{name:"cardinality"},{name:"feature"},{name:"lookahead"},{name:"operator"},{name:"terminal"}]};case Hg:return{name:Hg,properties:[{name:"cardinality"},{name:"left"},{name:"lookahead"},{name:"right"}]};case qg:return{name:qg,properties:[{name:"cardinality"},{name:"deprecatedSyntax",defaultValue:!1},{name:"lookahead"},{name:"terminal"},{name:"type"}]};case Wg:return{name:Wg,properties:[{name:"cardinality"},{name:"lookahead"}]};case Yg:return{name:Yg,properties:[{name:"cardinality"},{name:"elements",defaultValue:[]},{name:"guardCondition"},{name:"lookahead"}]};case Xg:return{name:Xg,properties:[{name:"cardinality"},{name:"lookahead"},{name:"value"}]};case jg:return{name:jg,properties:[{name:"cardinality"},{name:"lookahead"},{name:"terminal"}]};case Kg:return{name:Kg,properties:[{name:"cardinality"},{name:"lookahead"},{name:"regex"}]};case Qg:return{name:Qg,properties:[{name:"arguments",defaultValue:[]},{name:"cardinality"},{name:"lookahead"},{name:"rule"}]};case Zg:return{name:Zg,properties:[{name:"cardinality"},{name:"elements",defaultValue:[]},{name:"lookahead"}]};case Jg:return{name:Jg,properties:[{name:"cardinality"},{name:"elements",defaultValue:[]},{name:"lookahead"}]};case e1:return{name:e1,properties:[{name:"cardinality"},{name:"lookahead"},{name:"rule"}]};case t1:return{name:t1,properties:[{name:"cardinality"},{name:"elements",defaultValue:[]},{name:"lookahead"}]};case r1:return{name:r1,properties:[{name:"cardinality"},{name:"lookahead"},{name:"terminal"}]};case n1:return{name:n1,properties:[{name:"cardinality"},{name:"lookahead"}]};default:return{name:e,properties:[]}}}},pr=new i1});var GE={};dr(GE,{assignMandatoryProperties:()=>gO,copyAstNode:()=>mO,findLocalReferences:()=>FWe,findRootNode:()=>Gx,getContainerOfType:()=>Ip,getDocument:()=>Va,hasContainerOfType:()=>BWe,linkContentToContainer:()=>zE,streamAllContents:()=>qc,streamAst:()=>Jo,streamContents:()=>Vx,streamReferences:()=>a1});function zE(t){for(let[e,r]of Object.entries(t))e.startsWith("$")||(Array.isArray(r)?r.forEach((n,i)=>{li(n)&&(n.$container=t,n.$containerProperty=e,n.$containerIndex=i)}):li(r)&&(r.$container=t,r.$containerProperty=e))}function Ip(t,e){let r=t;for(;r;){if(e(r))return r;r=r.$container}}function BWe(t,e){let r=t;for(;r;){if(e(r))return!0;r=r.$container}return!1}function Va(t){let r=Gx(t).$document;if(!r)throw new Error("AST node has no document.");return r}function Gx(t){for(;t.$container;)t=t.$container;return t}function Vx(t,e){if(!t)throw new Error("Node must be an AstNode.");let r=e?.range;return new po(()=>({keys:Object.keys(t),keyIndex:0,arrayIndex:0}),n=>{for(;n.keyIndexVx(r,e))}function Jo(t,e){if(t){if(e?.range&&!pO(t,e.range))return new Gc(t,()=>[])}else throw new Error("Root node must be an AstNode.");return new Gc(t,r=>Vx(r,e),{includeRoot:!0})}function pO(t,e){var r;if(!e)return!0;let n=(r=t.$cstNode)===null||r===void 0?void 0:r.range;return n?XI(n,e):!1}function a1(t){return new po(()=>({keys:Object.keys(t),keyIndex:0,arrayIndex:0}),e=>{for(;e.keyIndex{a1(n).forEach(i=>{i.reference.ref===t&&r.push(i.reference)})}),an(r)}function gO(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]=Pfe(i.defaultValue))}function Pfe(t){return Array.isArray(t)?[...t.map(Pfe)]:t}function mO(t,e){let r={$type:t.$type};for(let[n,i]of Object.entries(t))if(!n.startsWith("$"))if(li(i))r[n]=mO(i,e);else if(Ta(i))r[n]=e(r,n,i.$refNode,i.$refText);else if(Array.isArray(i)){let a=[];for(let s of i)li(s)?a.push(mO(s,e)):Ta(s)?a.push(e(r,n,s.$refNode,s.$refText)):a.push(s);r[n]=a}else r[n]=i;return zE(r),r}var hs=N(()=>{"use strict";Pl();Ys();Bl();o(zE,"linkContentToContainer");o(Ip,"getContainerOfType");o(BWe,"hasContainerOfType");o(Va,"getDocument");o(Gx,"findRootNode");o(Vx,"streamContents");o(qc,"streamAllContents");o(Jo,"streamAst");o(pO,"isAstNodeInRange");o(a1,"streamReferences");o(FWe,"findLocalReferences");o(gO,"assignMandatoryProperties");o(Pfe,"copyDefaultValue");o(mO,"copyAstNode")});function lr(t){return t.charCodeAt(0)}function VE(t,e){Array.isArray(t)?t.forEach(function(r){e.push(r)}):e.push(t)}function s1(t,e){if(t[e]===!0)throw"duplicate flag "+e;let r=t[e];t[e]=!0}function Op(t){if(t===void 0)throw Error("Internal Error - Should never get here!");return!0}function Ux(){throw Error("Internal Error - Should never get here!")}function yO(t){return t.type==="Character"}var vO=N(()=>{"use strict";o(lr,"cc");o(VE,"insertToSet");o(s1,"addFlag");o(Op,"ASSERT_EXISTS");o(Ux,"ASSERT_NEVER_REACH_HERE");o(yO,"isCharacter")});var Hx,qx,xO,Bfe=N(()=>{"use strict";vO();Hx=[];for(let t=lr("0");t<=lr("9");t++)Hx.push(t);qx=[lr("_")].concat(Hx);for(let t=lr("a");t<=lr("z");t++)qx.push(t);for(let t=lr("A");t<=lr("Z");t++)qx.push(t);xO=[lr(" "),lr("\f"),lr(` -`),lr("\r"),lr(" "),lr("\v"),lr(" "),lr("\xA0"),lr("\u1680"),lr("\u2000"),lr("\u2001"),lr("\u2002"),lr("\u2003"),lr("\u2004"),lr("\u2005"),lr("\u2006"),lr("\u2007"),lr("\u2008"),lr("\u2009"),lr("\u200A"),lr("\u2028"),lr("\u2029"),lr("\u202F"),lr("\u205F"),lr("\u3000"),lr("\uFEFF")]});var $We,UE,zWe,Pp,Ffe=N(()=>{"use strict";vO();Bfe();$We=/[0-9a-fA-F]/,UE=/[0-9]/,zWe=/[1-9]/,Pp=class{static{o(this,"RegExpParser")}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":s1(n,"global");break;case"i":s1(n,"ignoreCase");break;case"m":s1(n,"multiLine");break;case"u":s1(n,"unicode");break;case"y":s1(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}Op(r);let n=this.disjunction();return this.consumeChar(")"),{type:r,value:n,loc:this.loc(e)}}return Ux()}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;Op(r);break}if(!(e===!0&&r===void 0)&&Op(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()),Op(e)?(e.loc=this.loc(r),this.isQuantifier()&&(e.quantifier=this.quantifier()),e):Ux()}dotAll(){return this.consumeChar("."),{type:"Set",complement:!0,value:[lr(` -`),lr("\r"),lr("\u2028"),lr("\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=Hx;break;case"D":e=Hx,r=!0;break;case"s":e=xO;break;case"S":e=xO,r=!0;break;case"w":e=qx;break;case"W":e=qx,r=!0;break}return Op(e)?{type:"Set",value:e,complement:r}:Ux()}controlEscapeAtom(){let e;switch(this.popChar()){case"f":e=lr("\f");break;case"n":e=lr(` -`);break;case"r":e=lr("\r");break;case"t":e=lr(" ");break;case"v":e=lr("\v");break}return Op(e)?{type:"Character",value:e}:Ux()}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:lr("\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:lr(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:lr(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(yO(n)&&this.isRangeDash()){this.consumeChar("-");let a=this.classAtom(),s=a.type==="Character";if(yO(a)){if(a.value=this.input.length)throw Error("Unexpected end of input");this.idx++}loc(e){return{begin:e,end:this.idx}}}});var Wc,$fe=N(()=>{"use strict";Wc=class{static{o(this,"BaseRegExpVisitor")}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 Wx=N(()=>{"use strict";Ffe();$fe()});var HE={};dr(HE,{NEWLINE_REGEXP:()=>TO,escapeRegExp:()=>Fp,getCaseInsensitivePattern:()=>kO,getTerminalParts:()=>GWe,isMultilineComment:()=>wO,isWhitespace:()=>o1,partialMatches:()=>EO,partialRegExp:()=>Vfe,whitespaceCharacters:()=>Gfe});function GWe(t){try{typeof t!="string"&&(t=t.source),t=`/${t}/`;let e=zfe.pattern(t),r=[];for(let n of e.value.value)Bp.reset(t),Bp.visit(n),r.push({start:Bp.startRegexp,end:Bp.endRegex});return r}catch{return[]}}function wO(t){try{return typeof t=="string"&&(t=new RegExp(t)),t=t.toString(),Bp.reset(t),Bp.visit(zfe.pattern(t)),Bp.multiline}catch{return!1}}function o1(t){let e=typeof t=="string"?new RegExp(t):t;return Gfe.some(r=>e.test(r))}function Fp(t){return t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function kO(t){return Array.prototype.map.call(t,e=>/\w/.test(e)?`[${e.toLowerCase()}${e.toUpperCase()}]`:Fp(e)).join("")}function EO(t,e){let r=Vfe(t),n=e.match(r);return!!n&&n[0].length>0}function Vfe(t){typeof t=="string"&&(t=new RegExp(t));let e=t,r=t.source,n=0;function i(){let a="",s;function l(h){a+=r.substr(n,h),n+=h}o(l,"appendRaw");function u(h){a+="(?:"+r.substr(n,h)+"|$)",n+=h}for(o(u,"appendOptional");n",n)-n+1);break;default:u(2);break}break;case"[":s=/\[(?:\\.|.)*?\]/g,s.lastIndex=n,s=s.exec(r)||[],u(s[0].length);break;case"|":case"^":case"$":case"*":case"+":case"?":l(1);break;case"{":s=/\{\d+,?\d*\}/g,s.lastIndex=n,s=s.exec(r),s?l(s[0].length):u(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:l(r.indexOf(">",n)-n+1),a+=i()+"|$)";break}break}else l(1),a+=i()+"|$)";break;case")":return++n,a;default:u(1);break}return a}return o(i,"process"),new RegExp(i(),t.flags)}var TO,zfe,bO,Bp,Gfe,l1=N(()=>{"use strict";Wx();TO=/\r?\n/gm,zfe=new Pp,bO=class extends Wc{static{o(this,"TerminalRegExpVisitor")}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=Fp(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)}},Bp=new bO;o(GWe,"getTerminalParts");o(wO,"isMultilineComment");Gfe=`\f -\r \v \xA0\u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u2028\u2029\u202F\u205F\u3000\uFEFF`.split("");o(o1,"isWhitespace");o(Fp,"escapeRegExp");o(kO,"getCaseInsensitivePattern");o(EO,"partialMatches");o(Vfe,"partialRegExp")});var WE={};dr(WE,{findAssignment:()=>MO,findNameAssignment:()=>qE,findNodeForKeyword:()=>RO,findNodeForProperty:()=>Xx,findNodesForKeyword:()=>VWe,findNodesForKeywordInternal:()=>NO,findNodesForProperty:()=>DO,getActionAtElement:()=>Yfe,getActionType:()=>jfe,getAllReachableRules:()=>Yx,getCrossReferenceTerminal:()=>AO,getEntryRule:()=>Ufe,getExplicitRuleType:()=>c1,getHiddenRules:()=>Hfe,getRuleType:()=>IO,getRuleTypeName:()=>YWe,getTypeName:()=>Kx,isArrayCardinality:()=>HWe,isArrayOperator:()=>qWe,isCommentTerminal:()=>_O,isDataType:()=>WWe,isDataTypeRule:()=>jx,isOptionalCardinality:()=>UWe,terminalRegex:()=>u1});function Ufe(t){return t.rules.find(e=>Ga(e)&&e.entry)}function Hfe(t){return t.rules.filter(e=>mo(e)&&e.hidden)}function Yx(t,e){let r=new Set,n=Ufe(t);if(!n)return new Set(t.rules);let i=[n].concat(Hfe(t));for(let s of i)qfe(s,r,e);let a=new Set;for(let s of t.rules)(r.has(s.name)||mo(s)&&s.hidden)&&a.add(s);return a}function qfe(t,e,r){e.add(t.name),qc(t).forEach(n=>{if($l(n)||r&&FE(n)){let i=n.rule.ref;i&&!e.has(i.name)&&qfe(i,e,r)}})}function AO(t){if(t.terminal)return t.terminal;if(t.type.ref){let e=qE(t.type.ref);return e?.terminal}}function _O(t){return t.hidden&&!o1(u1(t))}function DO(t,e){return!t||!e?[]:LO(t,e,t.astNode,!0)}function Xx(t,e,r){if(!t||!e)return;let n=LO(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 LO(t,e,r,n){if(!n){let i=Ip(t.grammarSource,Fl);if(i&&i.feature===e)return[t]}return Ol(t)&&t.astNode===r?t.content.flatMap(i=>LO(i,e,r,!1)):[]}function VWe(t,e){return t?NO(t,e,t?.astNode):[]}function RO(t,e,r){if(!t)return;let n=NO(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 NO(t,e,r){if(t.astNode!==r)return[];if(Zo(t.grammarSource)&&t.grammarSource.value===e)return[t];let n=Dp(t).iterator(),i,a=[];do if(i=n.next(),!i.done){let s=i.value;s.astNode===r?Zo(s.grammarSource)&&s.grammarSource.value===e&&a.push(s):n.prune()}while(!i.done);return a}function MO(t){var e;let r=t.astNode;for(;r===((e=t.container)===null||e===void 0?void 0:e.astNode);){let n=Ip(t.grammarSource,Fl);if(n)return n;t=t.container}}function qE(t){let e=t;return IE(e)&&(qu(e.$container)?e=e.$container.$container:Ga(e.$container)?e=e.$container:Uc(e.$container)),Wfe(t,e,new Map)}function Wfe(t,e,r){var n;function i(a,s){let l;return Ip(a,Fl)||(l=Wfe(s,s,r)),r.set(t,l),l}if(o(i,"go"),r.has(t))return r.get(t);r.set(t,void 0);for(let a of qc(e)){if(Fl(a)&&a.feature.toLowerCase()==="name")return r.set(t,a),a;if($l(a)&&Ga(a.rule.ref))return i(a,a.rule.ref);if(PE(a)&&(!((n=a.typeRef)===null||n===void 0)&&n.ref))return i(a,a.typeRef.ref)}}function Yfe(t){let e=t.$container;if(Of(e)){let r=e.elements,n=r.indexOf(t);for(let i=n-1;i>=0;i--){let a=r[i];if(qu(a))return a;{let s=qc(r[i]).find(qu);if(s)return s}}}if(Fx(e))return Yfe(e)}function UWe(t,e){return t==="?"||t==="*"||Of(e)&&!!e.guardCondition}function HWe(t){return t==="*"||t==="+"}function qWe(t){return t==="+="}function jx(t){return Xfe(t,new Set)}function Xfe(t,e){if(e.has(t))return!0;e.add(t);for(let r of qc(t))if($l(r)){if(!r.rule.ref||Ga(r.rule.ref)&&!Xfe(r.rule.ref,e))return!1}else{if(Fl(r))return!1;if(qu(r))return!1}return!!t.definition}function WWe(t){return CO(t.type,new Set)}function CO(t,e){if(e.has(t))return!0;if(e.add(t),QI(t))return!1;if(nO(t))return!1;if(aO(t))return t.types.every(r=>CO(r,e));if(PE(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 $x(r)?CO(r.type,e):!1}else return!1}else return!1}function c1(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(Ga(e))return e.name;if(OE(e)||$x(e))return e.name}}}function Kx(t){var e;if(Ga(t))return jx(t)?t.name:(e=c1(t))!==null&&e!==void 0?e:t.name;if(OE(t)||$x(t)||iO(t))return t.name;if(qu(t)){let r=jfe(t);if(r)return r}else if(IE(t))return t.name;throw new Error("Cannot get name of Unknown Type")}function jfe(t){var e;if(t.inferredType)return t.inferredType.name;if(!((e=t.type)===null||e===void 0)&&e.ref)return Kx(t.type.ref)}function YWe(t){var e,r,n;return mo(t)?(r=(e=t.type)===null||e===void 0?void 0:e.name)!==null&&r!==void 0?r:"string":jx(t)?t.name:(n=c1(t))!==null&&n!==void 0?n:t.name}function IO(t){var e,r,n;return mo(t)?(r=(e=t.type)===null||e===void 0?void 0:e.name)!==null&&r!==void 0?r:"string":(n=c1(t))!==null&&n!==void 0?n:t.name}function u1(t){let e={s:!1,i:!1,u:!1},r=h1(t.definition,e),n=Object.entries(e).filter(([,i])=>i).map(([i])=>i).join("");return new RegExp(r,n)}function h1(t,e){if(uO(t))return XWe(t);if(hO(t))return jWe(t);if(sO(t))return ZWe(t);if(FE(t)){let r=t.rule.ref;if(!r)throw new Error("Missing rule reference.");return Wu(h1(r.definition),{cardinality:t.cardinality,lookahead:t.lookahead})}else{if(lO(t))return QWe(t);if(fO(t))return KWe(t);if(cO(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")),Wu(n,{cardinality:t.cardinality,lookahead:t.lookahead,wrap:!1})}else{if(dO(t))return Wu(OO,{cardinality:t.cardinality,lookahead:t.lookahead});throw new Error(`Invalid terminal element: ${t?.$type}`)}}}function XWe(t){return Wu(t.elements.map(e=>h1(e)).join("|"),{cardinality:t.cardinality,lookahead:t.lookahead})}function jWe(t){return Wu(t.elements.map(e=>h1(e)).join(""),{cardinality:t.cardinality,lookahead:t.lookahead})}function KWe(t){return Wu(`${OO}*?${h1(t.terminal)}`,{cardinality:t.cardinality,lookahead:t.lookahead})}function QWe(t){return Wu(`(?!${h1(t.terminal)})${OO}*?`,{cardinality:t.cardinality,lookahead:t.lookahead})}function ZWe(t){return t.right?Wu(`[${SO(t.left)}-${SO(t.right)}]`,{cardinality:t.cardinality,lookahead:t.lookahead,wrap:!1}):Wu(SO(t.left),{cardinality:t.cardinality,lookahead:t.lookahead,wrap:!1})}function SO(t){return Fp(t.value)}function Wu(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 OO,zl=N(()=>{"use strict";NE();Hc();Pl();hs();Bl();l1();o(Ufe,"getEntryRule");o(Hfe,"getHiddenRules");o(Yx,"getAllReachableRules");o(qfe,"ruleDfs");o(AO,"getCrossReferenceTerminal");o(_O,"isCommentTerminal");o(DO,"findNodesForProperty");o(Xx,"findNodeForProperty");o(LO,"findNodesForPropertyInternal");o(VWe,"findNodesForKeyword");o(RO,"findNodeForKeyword");o(NO,"findNodesForKeywordInternal");o(MO,"findAssignment");o(qE,"findNameAssignment");o(Wfe,"findNameAssignmentInternal");o(Yfe,"getActionAtElement");o(UWe,"isOptionalCardinality");o(HWe,"isArrayCardinality");o(qWe,"isArrayOperator");o(jx,"isDataTypeRule");o(Xfe,"isDataTypeRuleInternal");o(WWe,"isDataType");o(CO,"isDataTypeInternal");o(c1,"getExplicitRuleType");o(Kx,"getTypeName");o(jfe,"getActionType");o(YWe,"getRuleTypeName");o(IO,"getRuleType");o(u1,"terminalRegex");OO=/[\s\S]/.source;o(h1,"abstractElementToRegex");o(XWe,"terminalAlternativesToRegex");o(jWe,"terminalGroupToRegex");o(KWe,"untilTokenToRegex");o(QWe,"negateTokenToRegex");o(ZWe,"characterRangeToRegex");o(SO,"keywordToRegex");o(Wu,"withCardinality")});function PO(t){let e=[],r=t.Grammar;for(let n of r.rules)mo(n)&&_O(n)&&wO(u1(n))&&e.push(n.name);return{multilineCommentRules:e,nameRegexp:LE}}var BO=N(()=>{"use strict";Bl();zl();l1();Hc();o(PO,"createGrammarConfig")});var FO=N(()=>{"use strict"});function f1(t){console&&console.error&&console.error(`Error: ${t}`)}function Qx(t){console&&console.warn&&console.warn(`Warning: ${t}`)}var Kfe=N(()=>{"use strict";o(f1,"PRINT_ERROR");o(Qx,"PRINT_WARNING")});function Zx(t){let e=new Date().getTime(),r=t();return{time:new Date().getTime()-e,value:r}}var Qfe=N(()=>{"use strict";o(Zx,"timer")});function Jx(t){function e(){}o(e,"FakeConstructor"),e.prototype=t;let r=new e;function n(){return typeof r.bar}return o(n,"fakeAccess"),n(),n(),t;(0,eval)(t)}var Zfe=N(()=>{"use strict";o(Jx,"toFastProperties")});var d1=N(()=>{"use strict";Kfe();Qfe();Zfe()});function JWe(t){return eYe(t)?t.LABEL:t.name}function eYe(t){return xi(t.LABEL)&&t.LABEL!==""}function YE(t){return rt(t,p1)}function p1(t){function e(r){return rt(r,p1)}if(o(e,"convertDefinition"),t instanceof fn){let r={type:"NonTerminal",name:t.nonTerminalName,idx:t.idx};return xi(t.label)&&(r.label=t.label),r}else{if(t instanceof Pn)return{type:"Alternative",definition:e(t.definition)};if(t instanceof dn)return{type:"Option",idx:t.idx,definition:e(t.definition)};if(t instanceof Bn)return{type:"RepetitionMandatory",idx:t.idx,definition:e(t.definition)};if(t instanceof Fn)return{type:"RepetitionMandatoryWithSeparator",idx:t.idx,separator:p1(new Ar({terminalType:t.separator})),definition:e(t.definition)};if(t instanceof _n)return{type:"RepetitionWithSeparator",idx:t.idx,separator:p1(new Ar({terminalType:t.separator})),definition:e(t.definition)};if(t instanceof zr)return{type:"Repetition",idx:t.idx,definition:e(t.definition)};if(t instanceof Dn)return{type:"Alternation",idx:t.idx,definition:e(t.definition)};if(t instanceof Ar){let r={type:"Terminal",name:t.terminalType.name,label:JWe(t.terminalType),idx:t.idx};xi(t.label)&&(r.terminalLabel=t.label);let n=t.terminalType.PATTERN;return t.terminalType.PATTERN&&(r.pattern=Uo(n)?n.source:n),r}else{if(t instanceof fs)return{type:"Rule",name:t.name,orgText:t.orgText,definition:e(t.definition)};throw Error("non exhaustive match")}}}var go,fn,fs,Pn,dn,Bn,Fn,zr,_n,Dn,Ar,XE=N(()=>{"use strict";Yt();o(JWe,"tokenLabel");o(eYe,"hasTokenLabel");go=class{static{o(this,"AbstractProduction")}get definition(){return this._definition}set definition(e){this._definition=e}constructor(e){this._definition=e}accept(e){e.visit(this),Ae(this.definition,r=>{r.accept(e)})}},fn=class extends go{static{o(this,"NonTerminal")}constructor(e){super([]),this.idx=1,pa(this,Vs(e,r=>r!==void 0))}set definition(e){}get definition(){return this.referencedRule!==void 0?this.referencedRule.definition:[]}accept(e){e.visit(this)}},fs=class extends go{static{o(this,"Rule")}constructor(e){super(e.definition),this.orgText="",pa(this,Vs(e,r=>r!==void 0))}},Pn=class extends go{static{o(this,"Alternative")}constructor(e){super(e.definition),this.ignoreAmbiguities=!1,pa(this,Vs(e,r=>r!==void 0))}},dn=class extends go{static{o(this,"Option")}constructor(e){super(e.definition),this.idx=1,pa(this,Vs(e,r=>r!==void 0))}},Bn=class extends go{static{o(this,"RepetitionMandatory")}constructor(e){super(e.definition),this.idx=1,pa(this,Vs(e,r=>r!==void 0))}},Fn=class extends go{static{o(this,"RepetitionMandatoryWithSeparator")}constructor(e){super(e.definition),this.idx=1,pa(this,Vs(e,r=>r!==void 0))}},zr=class extends go{static{o(this,"Repetition")}constructor(e){super(e.definition),this.idx=1,pa(this,Vs(e,r=>r!==void 0))}},_n=class extends go{static{o(this,"RepetitionWithSeparator")}constructor(e){super(e.definition),this.idx=1,pa(this,Vs(e,r=>r!==void 0))}},Dn=class extends go{static{o(this,"Alternation")}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,pa(this,Vs(e,r=>r!==void 0))}},Ar=class{static{o(this,"Terminal")}constructor(e){this.idx=1,pa(this,Vs(e,r=>r!==void 0))}accept(e){e.visit(this)}};o(YE,"serializeGrammar");o(p1,"serializeProduction")});var ds,Jfe=N(()=>{"use strict";XE();ds=class{static{o(this,"GAstVisitor")}visit(e){let r=e;switch(r.constructor){case fn:return this.visitNonTerminal(r);case Pn:return this.visitAlternative(r);case dn:return this.visitOption(r);case Bn:return this.visitRepetitionMandatory(r);case Fn:return this.visitRepetitionMandatoryWithSeparator(r);case _n:return this.visitRepetitionWithSeparator(r);case zr:return this.visitRepetition(r);case Dn:return this.visitAlternation(r);case Ar:return this.visitTerminal(r);case fs: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 $O(t){return t instanceof Pn||t instanceof dn||t instanceof zr||t instanceof Bn||t instanceof Fn||t instanceof _n||t instanceof Ar||t instanceof fs}function $p(t,e=[]){return t instanceof dn||t instanceof zr||t instanceof _n?!0:t instanceof Dn?z2(t.definition,n=>$p(n,e)):t instanceof fn&&jn(e,t)?!1:t instanceof go?(t instanceof fn&&e.push(t),Pa(t.definition,n=>$p(n,e))):!1}function zO(t){return t instanceof Dn}function Xs(t){if(t instanceof fn)return"SUBRULE";if(t instanceof dn)return"OPTION";if(t instanceof Dn)return"OR";if(t instanceof Bn)return"AT_LEAST_ONE";if(t instanceof Fn)return"AT_LEAST_ONE_SEP";if(t instanceof _n)return"MANY_SEP";if(t instanceof zr)return"MANY";if(t instanceof Ar)return"CONSUME";throw Error("non exhaustive match")}var ede=N(()=>{"use strict";Yt();XE();o($O,"isSequenceProd");o($p,"isOptionalProd");o(zO,"isBranchingProd");o(Xs,"getProductionDslName")});var ps=N(()=>{"use strict";XE();Jfe();ede()});function tde(t,e,r){return[new dn({definition:[new Ar({terminalType:t.separator})].concat(t.definition)})].concat(e,r)}var Yu,jE=N(()=>{"use strict";Yt();ps();Yu=class{static{o(this,"RestWalker")}walk(e,r=[]){Ae(e.definition,(n,i)=>{let a=yi(e.definition,i+1);if(n instanceof fn)this.walkProdRef(n,a,r);else if(n instanceof Ar)this.walkTerminal(n,a,r);else if(n instanceof Pn)this.walkFlat(n,a,r);else if(n instanceof dn)this.walkOption(n,a,r);else if(n instanceof Bn)this.walkAtLeastOne(n,a,r);else if(n instanceof Fn)this.walkAtLeastOneSep(n,a,r);else if(n instanceof _n)this.walkManySep(n,a,r);else if(n instanceof zr)this.walkMany(n,a,r);else if(n instanceof Dn)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 dn({definition:e.definition})].concat(r,n);this.walk(e,i)}walkAtLeastOneSep(e,r,n){let i=tde(e,r,n);this.walk(e,i)}walkMany(e,r,n){let i=[new dn({definition:e.definition})].concat(r,n);this.walk(e,i)}walkManySep(e,r,n){let i=tde(e,r,n);this.walk(e,i)}walkOr(e,r,n){let i=r.concat(n);Ae(e.definition,a=>{let s=new Pn({definition:[a]});this.walk(s,i)})}};o(tde,"restForRepetitionWithSeparator")});function zp(t){if(t instanceof fn)return zp(t.referencedRule);if(t instanceof Ar)return nYe(t);if($O(t))return tYe(t);if(zO(t))return rYe(t);throw Error("non exhaustive match")}function tYe(t){let e=[],r=t.definition,n=0,i=r.length>n,a,s=!0;for(;i&&s;)a=r[n],s=$p(a),e=e.concat(zp(a)),n=n+1,i=r.length>n;return qm(e)}function rYe(t){let e=rt(t.definition,r=>zp(r));return qm(Qr(e))}function nYe(t){return[t.terminalType]}var GO=N(()=>{"use strict";Yt();ps();o(zp,"first");o(tYe,"firstForSequence");o(rYe,"firstForBranching");o(nYe,"firstForTerminal")});var KE,VO=N(()=>{"use strict";KE="_~IN~_"});function rde(t){let e={};return Ae(t,r=>{let n=new UO(r).startWalking();pa(e,n)}),e}function iYe(t,e){return t.name+e+KE}var UO,nde=N(()=>{"use strict";jE();GO();Yt();VO();ps();UO=class extends Yu{static{o(this,"ResyncFollowsWalker")}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=iYe(e.referencedRule,e.idx)+this.topProd.name,a=r.concat(n),s=new Pn({definition:a}),l=zp(s);this.follows[i]=l}};o(rde,"computeAllProdsFollows");o(iYe,"buildBetweenProdsFollowPrefix")});function m1(t){let e=t.toString();if(QE.hasOwnProperty(e))return QE[e];{let r=aYe.pattern(e);return QE[e]=r,r}}function ide(){QE={}}var QE,aYe,ZE=N(()=>{"use strict";Wx();QE={},aYe=new Pp;o(m1,"getRegExpAst");o(ide,"clearRegExpParserCache")});function ode(t,e=!1){try{let r=m1(t);return HO(r.value,{},r.flags.ignoreCase)}catch(r){if(r.message===sde)e&&Qx(`${eb} 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.`),f1(`${eb} - 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 HO(t,e,r){switch(t.type){case"Disjunction":for(let i=0;i{if(typeof u=="number")JE(u,e,r);else{let h=u;if(r===!0)for(let f=h.from;f<=h.to;f++)JE(f,e,r);else{for(let f=h.from;f<=h.to&&f=g1){let f=h.from>=g1?h.from:g1,d=h.to,p=Yc(f),m=Yc(d);for(let g=p;g<=m;g++)e[g]=g}}}});break;case"Group":HO(s.value,e,r);break;default:throw Error("Non Exhaustive Match")}let l=s.quantifier!==void 0&&s.quantifier.atLeast===0;if(s.type==="Group"&&qO(s)===!1||s.type!=="Group"&&l===!1)break}break;default:throw Error("non exhaustive match!")}return kr(e)}function JE(t,e,r){let n=Yc(t);e[n]=n,r===!0&&sYe(t,e)}function sYe(t,e){let r=String.fromCharCode(t),n=r.toUpperCase();if(n!==r){let i=Yc(n.charCodeAt(0));e[i]=i}else{let i=r.toLowerCase();if(i!==r){let a=Yc(i.charCodeAt(0));e[a]=a}}}function ade(t,e){return os(t.value,r=>{if(typeof r=="number")return jn(e,r);{let n=r;return os(e,i=>n.from<=i&&i<=n.to)!==void 0}})}function qO(t){let e=t.quantifier;return e&&e.atLeast===0?!0:t.value?Bt(t.value)?Pa(t.value,qO):qO(t.value):!1}function eS(t,e){if(e instanceof RegExp){let r=m1(e),n=new WO(t);return n.visit(r),n.found}else return os(e,r=>jn(t,r.charCodeAt(0)))!==void 0}var sde,eb,WO,lde=N(()=>{"use strict";Wx();Yt();d1();ZE();YO();sde="Complement Sets are not supported for first char optimization",eb=`Unable to use "first char" lexer optimizations: -`;o(ode,"getOptimizedStartCodesIndices");o(HO,"firstCharOptimizedIndices");o(JE,"addOptimizedIdxToResult");o(sYe,"handleIgnoreCase");o(ade,"findCode");o(qO,"isWholeOptional");WO=class extends Wc{static{o(this,"CharCodeFinder")}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){jn(this.targetCharCodes,e.value)&&(this.found=!0)}visitSet(e){e.complement?ade(e,this.targetCharCodes)===void 0&&(this.found=!0):ade(e,this.targetCharCodes)!==void 0&&(this.found=!0)}};o(eS,"canMatchCharCode")});function hde(t,e){e=of(e,{useSticky:jO,debug:!1,safeMode:!1,positionTracking:"full",lineTerminatorCharacters:["\r",` -`],tracer:o((b,T)=>T(),"tracer")});let r=e.tracer;r("initCharCodeToOptimizedIndexMap",()=>{EYe()});let n;r("Reject Lexer.NA",()=>{n=cf(t,b=>b[Gp]===Zn.NA)});let i=!1,a;r("Transform Patterns",()=>{i=!1,a=rt(n,b=>{let T=b[Gp];if(Uo(T)){let S=T.source;return S.length===1&&S!=="^"&&S!=="$"&&S!=="."&&!T.ignoreCase?S:S.length===2&&S[0]==="\\"&&!jn(["d","D","s","S","t","r","n","t","0","c","b","B","f","v","w","W"],S[1])?S[1]:e.useSticky?ude(T):cde(T)}else{if(Si(T))return i=!0,{exec:T};if(typeof T=="object")return i=!0,T;if(typeof T=="string"){if(T.length===1)return T;{let S=T.replace(/[\\^$.*+?()[\]{}|]/g,"\\$&"),w=new RegExp(S);return e.useSticky?ude(w):cde(w)}}else throw Error("non exhaustive match")}})});let s,l,u,h,f;r("misc mapping",()=>{s=rt(n,b=>b.tokenTypeIdx),l=rt(n,b=>{let T=b.GROUP;if(T!==Zn.SKIPPED){if(xi(T))return T;if(xr(T))return!1;throw Error("non exhaustive match")}}),u=rt(n,b=>{let T=b.LONGER_ALT;if(T)return Bt(T)?rt(T,w=>ck(n,w)):[ck(n,T)]}),h=rt(n,b=>b.PUSH_MODE),f=rt(n,b=>Ft(b,"POP_MODE"))});let d;r("Line Terminator Handling",()=>{let b=xde(e.lineTerminatorCharacters);d=rt(n,T=>!1),e.positionTracking!=="onlyOffset"&&(d=rt(n,T=>Ft(T,"LINE_BREAKS")?!!T.LINE_BREAKS:vde(T,b)===!1&&eS(b,T.PATTERN)))});let p,m,g,y;r("Misc Mapping #2",()=>{p=rt(n,gde),m=rt(a,wYe),g=Jr(n,(b,T)=>{let S=T.GROUP;return xi(S)&&S!==Zn.SKIPPED&&(b[S]=[]),b},{}),y=rt(a,(b,T)=>({pattern:a[T],longerAlt:u[T],canLineTerminator:d[T],isCustom:p[T],short:m[T],group:l[T],push:h[T],pop:f[T],tokenTypeIdx:s[T],tokenType:n[T]}))});let v=!0,x=[];return e.safeMode||r("First Char Optimization",()=>{x=Jr(n,(b,T,S)=>{if(typeof T.PATTERN=="string"){let w=T.PATTERN.charCodeAt(0),k=Yc(w);XO(b,k,y[S])}else if(Bt(T.START_CHARS_HINT)){let w;Ae(T.START_CHARS_HINT,k=>{let A=typeof k=="string"?k.charCodeAt(0):k,C=Yc(A);w!==C&&(w=C,XO(b,C,y[S]))})}else if(Uo(T.PATTERN))if(T.PATTERN.unicode)v=!1,e.ensureOptimizations&&f1(`${eb} Unable to analyze < ${T.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 w=ode(T.PATTERN,e.ensureOptimizations);mr(w)&&(v=!1),Ae(w,k=>{XO(b,k,y[S])})}else e.ensureOptimizations&&f1(`${eb} TokenType: <${T.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`),v=!1;return b},[])}),{emptyGroups:g,patternIdxToConfig:y,charCodeToPatternIdxToConfig:x,hasCustom:i,canBeOptimized:v}}function fde(t,e){let r=[],n=lYe(t);r=r.concat(n.errors);let i=cYe(n.valid),a=i.valid;return r=r.concat(i.errors),r=r.concat(oYe(a)),r=r.concat(yYe(a)),r=r.concat(vYe(a,e)),r=r.concat(xYe(a)),r}function oYe(t){let e=[],r=Zr(t,n=>Uo(n[Gp]));return e=e.concat(hYe(r)),e=e.concat(pYe(r)),e=e.concat(mYe(r)),e=e.concat(gYe(r)),e=e.concat(fYe(r)),e}function lYe(t){let e=Zr(t,i=>!Ft(i,Gp)),r=rt(e,i=>({message:"Token Type: ->"+i.name+"<- missing static 'PATTERN' property",type:Qn.MISSING_PATTERN,tokenTypes:[i]})),n=lf(t,e);return{errors:r,valid:n}}function cYe(t){let e=Zr(t,i=>{let a=i[Gp];return!Uo(a)&&!Si(a)&&!Ft(a,"exec")&&!xi(a)}),r=rt(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:Qn.INVALID_PATTERN,tokenTypes:[i]})),n=lf(t,e);return{errors:r,valid:n}}function hYe(t){class e extends Wc{static{o(this,"EndAnchorFinder")}constructor(){super(...arguments),this.found=!1}visitEndAnchor(a){this.found=!0}}let r=Zr(t,i=>{let a=i.PATTERN;try{let s=m1(a),l=new e;return l.visit(s),l.found}catch{return uYe.test(a.source)}});return rt(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:Qn.EOI_ANCHOR_FOUND,tokenTypes:[i]}))}function fYe(t){let e=Zr(t,n=>n.PATTERN.test(""));return rt(e,n=>({message:"Token Type: ->"+n.name+"<- static 'PATTERN' must not match an empty string",type:Qn.EMPTY_MATCH_PATTERN,tokenTypes:[n]}))}function pYe(t){class e extends Wc{static{o(this,"StartAnchorFinder")}constructor(){super(...arguments),this.found=!1}visitStartAnchor(a){this.found=!0}}let r=Zr(t,i=>{let a=i.PATTERN;try{let s=m1(a),l=new e;return l.visit(s),l.found}catch{return dYe.test(a.source)}});return rt(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:Qn.SOI_ANCHOR_FOUND,tokenTypes:[i]}))}function mYe(t){let e=Zr(t,n=>{let i=n[Gp];return i instanceof RegExp&&(i.multiline||i.global)});return rt(e,n=>({message:"Token Type: ->"+n.name+"<- static 'PATTERN' may NOT contain global('g') or multiline('m')",type:Qn.UNSUPPORTED_FLAGS_FOUND,tokenTypes:[n]}))}function gYe(t){let e=[],r=rt(t,a=>Jr(t,(s,l)=>(a.PATTERN.source===l.PATTERN.source&&!jn(e,l)&&l.PATTERN!==Zn.NA&&(e.push(l),s.push(l)),s),[]));r=_c(r);let n=Zr(r,a=>a.length>1);return rt(n,a=>{let s=rt(a,u=>u.name);return{message:`The same RegExp pattern ->${ea(a).PATTERN}<-has been used in all of the following Token Types: ${s.join(", ")} <-`,type:Qn.DUPLICATE_PATTERNS_FOUND,tokenTypes:a}})}function yYe(t){let e=Zr(t,n=>{if(!Ft(n,"GROUP"))return!1;let i=n.GROUP;return i!==Zn.SKIPPED&&i!==Zn.NA&&!xi(i)});return rt(e,n=>({message:"Token Type: ->"+n.name+"<- static 'GROUP' can only be Lexer.SKIPPED/Lexer.NA/A String",type:Qn.INVALID_GROUP_TYPE_FOUND,tokenTypes:[n]}))}function vYe(t,e){let r=Zr(t,i=>i.PUSH_MODE!==void 0&&!jn(e,i.PUSH_MODE));return rt(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:Qn.PUSH_MODE_DOES_NOT_EXIST,tokenTypes:[i]}))}function xYe(t){let e=[],r=Jr(t,(n,i,a)=>{let s=i.PATTERN;return s===Zn.NA||(xi(s)?n.push({str:s,idx:a,tokenType:i}):Uo(s)&&TYe(s)&&n.push({str:s.source,idx:a,tokenType:i})),n},[]);return Ae(t,(n,i)=>{Ae(r,({str:a,idx:s,tokenType:l})=>{if(i${l.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:u,type:Qn.UNREACHABLE_PATTERN,tokenTypes:[n,l]})}})}),e}function bYe(t,e){if(Uo(e)){let r=e.exec(t);return r!==null&&r.index===0}else{if(Si(e))return e(t,0,[],{});if(Ft(e,"exec"))return e.exec(t,0,[],{});if(typeof e=="string")return e===t;throw Error("non exhaustive match")}}function TYe(t){return os([".","\\","[","]","|","^","$","(",")","?","*","+","{"],r=>t.source.indexOf(r)!==-1)===void 0}function cde(t){let e=t.ignoreCase?"i":"";return new RegExp(`^(?:${t.source})`,e)}function ude(t){let e=t.ignoreCase?"iy":"y";return new RegExp(`${t.source}`,e)}function dde(t,e,r){let n=[];return Ft(t,y1)||n.push({message:"A MultiMode Lexer cannot be initialized without a <"+y1+`> property in its definition -`,type:Qn.MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE}),Ft(t,tS)||n.push({message:"A MultiMode Lexer cannot be initialized without a <"+tS+`> property in its definition -`,type:Qn.MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY}),Ft(t,tS)&&Ft(t,y1)&&!Ft(t.modes,t.defaultMode)&&n.push({message:`A MultiMode Lexer cannot be initialized with a ${y1}: <${t.defaultMode}>which does not exist -`,type:Qn.MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST}),Ft(t,tS)&&Ae(t.modes,(i,a)=>{Ae(i,(s,l)=>{if(xr(s))n.push({message:`A Lexer cannot be initialized using an undefined Token Type. Mode:<${a}> at index: <${l}> -`,type:Qn.LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED});else if(Ft(s,"LONGER_ALT")){let u=Bt(s.LONGER_ALT)?s.LONGER_ALT:[s.LONGER_ALT];Ae(u,h=>{!xr(h)&&!jn(i,h)&&n.push({message:`A MultiMode Lexer cannot be initialized with a longer_alt <${h.name}> on token <${s.name}> outside of mode <${a}> -`,type:Qn.MULTI_MODE_LEXER_LONGER_ALT_NOT_IN_CURRENT_MODE})})}})}),n}function pde(t,e,r){let n=[],i=!1,a=_c(Qr(kr(t.modes))),s=cf(a,u=>u[Gp]===Zn.NA),l=xde(r);return e&&Ae(s,u=>{let h=vde(u,l);if(h!==!1){let d={message:kYe(u,h),type:h.issue,tokenType:u};n.push(d)}else Ft(u,"LINE_BREAKS")?u.LINE_BREAKS===!0&&(i=!0):eS(l,u.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:Qn.NO_LINE_BREAKS_FLAGS}),n}function mde(t){let e={},r=qr(t);return Ae(r,n=>{let i=t[n];if(Bt(i))e[n]=[];else throw Error("non exhaustive match")}),e}function gde(t){let e=t.PATTERN;if(Uo(e))return!1;if(Si(e))return!0;if(Ft(e,"exec"))return!0;if(xi(e))return!1;throw Error("non exhaustive match")}function wYe(t){return xi(t)&&t.length===1?t.charCodeAt(0):!1}function vde(t,e){if(Ft(t,"LINE_BREAKS"))return!1;if(Uo(t.PATTERN)){try{eS(e,t.PATTERN)}catch(r){return{issue:Qn.IDENTIFY_TERMINATOR,errMsg:r.message}}return!1}else{if(xi(t.PATTERN))return!1;if(gde(t))return{issue:Qn.CUSTOM_LINE_BREAK};throw Error("non exhaustive match")}}function kYe(t,e){if(e.issue===Qn.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===Qn.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 xde(t){return rt(t,r=>xi(r)?r.charCodeAt(0):r)}function XO(t,e,r){t[e]===void 0?t[e]=[r]:t[e].push(r)}function Yc(t){return t255?255+~~(t/255):t}}var Gp,y1,tS,jO,uYe,dYe,yde,g1,rS,YO=N(()=>{"use strict";Wx();tb();Yt();d1();lde();ZE();Gp="PATTERN",y1="defaultMode",tS="modes",jO=typeof new RegExp("(?:)").sticky=="boolean";o(hde,"analyzeTokenTypes");o(fde,"validatePatterns");o(oYe,"validateRegExpPattern");o(lYe,"findMissingPatterns");o(cYe,"findInvalidPatterns");uYe=/[^\\][$]/;o(hYe,"findEndOfInputAnchor");o(fYe,"findEmptyMatchRegExps");dYe=/[^\\[][\^]|^\^/;o(pYe,"findStartOfInputAnchor");o(mYe,"findUnsupportedFlags");o(gYe,"findDuplicatePatterns");o(yYe,"findInvalidGroupType");o(vYe,"findModesThatDoNotExist");o(xYe,"findUnreachablePatterns");o(bYe,"testTokenType");o(TYe,"noMetaChar");o(cde,"addStartOfInput");o(ude,"addStickyFlag");o(dde,"performRuntimeChecks");o(pde,"performWarningRuntimeChecks");o(mde,"cloneEmptyGroups");o(gde,"isCustomPattern");o(wYe,"isShortPattern");yde={test:o(function(t){let e=t.length;for(let r=this.lastIndex;r{r.isParent=r.categoryMatches.length>0})}function SYe(t){let e=ln(t),r=t,n=!0;for(;n;){r=_c(Qr(rt(r,a=>a.CATEGORIES)));let i=lf(r,e);e=e.concat(i),mr(i)?n=!1:r=i}return e}function CYe(t){Ae(t,e=>{KO(e)||(wde[bde]=e,e.tokenTypeIdx=bde++),Tde(e)&&!Bt(e.CATEGORIES)&&(e.CATEGORIES=[e.CATEGORIES]),Tde(e)||(e.CATEGORIES=[]),DYe(e)||(e.categoryMatches=[]),LYe(e)||(e.categoryMatchesMap={})})}function AYe(t){Ae(t,e=>{e.categoryMatches=[],Ae(e.categoryMatchesMap,(r,n)=>{e.categoryMatches.push(wde[n].tokenTypeIdx)})})}function _Ye(t){Ae(t,e=>{kde([],e)})}function kde(t,e){Ae(t,r=>{e.categoryMatchesMap[r.tokenTypeIdx]=!0}),Ae(e.CATEGORIES,r=>{let n=t.concat(e);jn(n,r)||kde(n,r)})}function KO(t){return Ft(t,"tokenTypeIdx")}function Tde(t){return Ft(t,"CATEGORIES")}function DYe(t){return Ft(t,"categoryMatches")}function LYe(t){return Ft(t,"categoryMatchesMap")}function Ede(t){return Ft(t,"tokenTypeIdx")}var bde,wde,Vp=N(()=>{"use strict";Yt();o(Xu,"tokenStructuredMatcher");o(v1,"tokenStructuredMatcherNoCategories");bde=1,wde={};o(ju,"augmentTokenTypes");o(SYe,"expandCategories");o(CYe,"assignTokenDefaultProps");o(AYe,"assignCategoriesTokensProp");o(_Ye,"assignCategoriesMapProp");o(kde,"singleAssignCategoriesToksMap");o(KO,"hasShortKeyProperty");o(Tde,"hasCategoriesProperty");o(DYe,"hasExtendingTokensTypesProperty");o(LYe,"hasExtendingTokensTypesMapProperty");o(Ede,"isTokenType")});var x1,QO=N(()=>{"use strict";x1={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 Qn,rb,Zn,tb=N(()=>{"use strict";YO();Yt();d1();Vp();QO();ZE();(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"})(Qn||(Qn={}));rb={deferDefinitionErrorsHandling:!1,positionTracking:"full",lineTerminatorsPattern:/\n|\r\n?/g,lineTerminatorCharacters:[` -`,"\r"],ensureOptimizations:!1,safeMode:!1,errorMessageProvider:x1,traceInitPerf:!1,skipValidations:!1,recoveryEnabled:!0};Object.freeze(rb);Zn=class{static{o(this,"Lexer")}constructor(e,r=rb){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:l,value:u}=Zx(a),h=l>10?console.warn:console.log;return this.traceInitIndent time: ${l}ms`),this.traceInitIndent--,u}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=pa({},rb,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===rb.lineTerminatorsPattern)this.config.lineTerminatorsPattern=yde;else if(this.config.lineTerminatorCharacters===rb.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),Bt(e)?i={modes:{defaultMode:ln(e)},defaultMode:y1}:(a=!1,i=ln(e))}),this.config.skipValidations===!1&&(this.TRACE_INIT("performRuntimeChecks",()=>{this.lexerDefinitionErrors=this.lexerDefinitionErrors.concat(dde(i,this.trackStartLines,this.config.lineTerminatorCharacters))}),this.TRACE_INIT("performWarningRuntimeChecks",()=>{this.lexerDefinitionWarning=this.lexerDefinitionWarning.concat(pde(i,this.trackStartLines,this.config.lineTerminatorCharacters))})),i.modes=i.modes?i.modes:{},Ae(i.modes,(l,u)=>{i.modes[u]=cf(l,h=>xr(h))});let s=qr(i.modes);if(Ae(i.modes,(l,u)=>{this.TRACE_INIT(`Mode: <${u}> processing`,()=>{if(this.modes.push(u),this.config.skipValidations===!1&&this.TRACE_INIT("validatePatterns",()=>{this.lexerDefinitionErrors=this.lexerDefinitionErrors.concat(fde(l,s))}),mr(this.lexerDefinitionErrors)){ju(l);let h;this.TRACE_INIT("analyzeTokenTypes",()=>{h=hde(l,{lineTerminatorCharacters:this.config.lineTerminatorCharacters,positionTracking:r.positionTracking,ensureOptimizations:r.ensureOptimizations,safeMode:r.safeMode,tracer:this.TRACE_INIT})}),this.patternIdxToConfig[u]=h.patternIdxToConfig,this.charCodeToPatternIdxToConfig[u]=h.charCodeToPatternIdxToConfig,this.emptyGroups=pa({},this.emptyGroups,h.emptyGroups),this.hasCustom=h.hasCustom||this.hasCustom,this.canModeBeOptimized[u]=h.canBeOptimized}})}),this.defaultMode=i.defaultMode,!mr(this.lexerDefinitionErrors)&&!this.config.deferDefinitionErrorsHandling){let u=rt(this.lexerDefinitionErrors,h=>h.message).join(`----------------------- -`);throw new Error(`Errors detected in definition of Lexer: -`+u)}Ae(this.lexerDefinitionWarning,l=>{Qx(l.message)}),this.TRACE_INIT("Choosing sub-methods implementations",()=>{if(jO?(this.chopInput=Qi,this.match=this.matchWithTest):(this.updateLastIndex=si,this.match=this.matchWithExec),a&&(this.handleModes=si),this.trackStartLines===!1&&(this.computeNewColumn=Qi),this.trackEndLines===!1&&(this.updateTokenEndLineColumnLocation=si),/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 l=Jr(this.canModeBeOptimized,(u,h,f)=>(h===!1&&u.push(f),u),[]);if(r.ensureOptimizations&&!mr(l))throw Error(`Lexer Modes: < ${l.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",()=>{ide()}),this.TRACE_INIT("toFastProperties",()=>{Jx(this)})})}tokenize(e,r=this.defaultMode){if(!mr(this.lexerDefinitionErrors)){let i=rt(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,l,u,h,f,d,p,m,g,y,v,x,b,T=e,S=T.length,w=0,k=0,A=this.hasCustom?0:Math.floor(e.length/10),C=new Array(A),R=[],I=this.trackStartLines?1:void 0,L=this.trackStartLines?1:void 0,E=mde(this.emptyGroups),D=this.trackStartLines,_=this.config.lineTerminatorsPattern,O=0,M=[],P=[],B=[],F=[];Object.freeze(F);let G;function $(){return M}o($,"getPossiblePatternsSlow");function U(J){let ue=Yc(J),re=P[ue];return re===void 0?F:re}o(U,"getPossiblePatternsOptimized");let j=o(J=>{if(B.length===1&&J.tokenType.PUSH_MODE===void 0){let ue=this.config.errorMessageProvider.buildUnableToPopLexerModeMessage(J);R.push({offset:J.startOffset,line:J.startLine,column:J.startColumn,length:J.image.length,message:ue})}else{B.pop();let ue=ma(B);M=this.patternIdxToConfig[ue],P=this.charCodeToPatternIdxToConfig[ue],O=M.length;let re=this.canModeBeOptimized[ue]&&this.config.safeMode===!1;P&&re?G=U:G=$}},"pop_mode");function te(J){B.push(J),P=this.charCodeToPatternIdxToConfig[J],M=this.patternIdxToConfig[J],O=M.length,O=M.length;let ue=this.canModeBeOptimized[J]&&this.config.safeMode===!1;P&&ue?G=U:G=$}o(te,"push_mode"),te.call(this,r);let Y,oe=this.config.recoveryEnabled;for(;wu.length){u=s,h=f,Y=ae;break}}}break}}if(u!==null){if(d=u.length,p=Y.group,p!==void 0&&(m=Y.tokenTypeIdx,g=this.createTokenInstance(u,w,m,Y.tokenType,I,L,d),this.handlePayload(g,h),p===!1?k=this.addToken(C,k,g):E[p].push(g)),e=this.chopInput(e,d),w=w+d,L=this.computeNewColumn(L,d),D===!0&&Y.canLineTerminator===!0){let ee=0,Z,K;_.lastIndex=0;do Z=_.test(u),Z===!0&&(K=_.lastIndex-1,ee++);while(Z===!0);ee!==0&&(I=I+ee,L=d-K,this.updateTokenEndLineColumnLocation(g,p,K,ee,I,L,d))}this.handleModes(Y,j,te,g)}else{let ee=w,Z=I,K=L,ae=oe===!1;for(;ae===!1&&w{"use strict";Yt();tb();Vp();o(Ku,"tokenLabel");o(ZO,"hasTokenLabel");RYe="parent",Sde="categories",Cde="label",Ade="group",_de="push_mode",Dde="pop_mode",Lde="longer_alt",Rde="line_breaks",Nde="start_chars_hint";o(Pf,"createToken");o(NYe,"createTokenInternal");yo=Pf({name:"EOF",pattern:Zn.NA});ju([yo]);o(Qu,"createTokenInstance");o(nb,"tokenMatcher")});var Zu,Mde,Gl,b1=N(()=>{"use strict";Up();Yt();ps();Zu={buildMismatchTokenMessage({expected:t,actual:e,previous:r,ruleName:n}){return`Expecting ${ZO(t)?`--> ${Ku(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: ",l=` -but found: '`+ea(e).image+"'";if(n)return a+n+l;{let u=Jr(t,(p,m)=>p.concat(m),[]),h=rt(u,p=>`[${rt(p,m=>Ku(m)).join(", ")}]`),d=`one of these possible Token sequences: -${rt(h,(p,m)=>` ${m+1}. ${p}`).join(` -`)}`;return a+d+l}},buildEarlyExitMessage({expectedIterationPaths:t,actual:e,customUserDescription:r,ruleName:n}){let i="Expecting: ",s=` -but found: '`+ea(e).image+"'";if(r)return i+r+s;{let u=`expecting at least one iteration which starts with one of these possible Token sequences:: - <${rt(t,h=>`[${rt(h,f=>Ku(f)).join(",")}]`).join(" ,")}>`;return i+u+s}}};Object.freeze(Zu);Mde={buildRuleNotFoundError(t,e){return"Invalid grammar, reference to a rule which is not defined: ->"+e.nonTerminalName+`<- -inside top level rule: ->`+t.name+"<-"}},Gl={buildDuplicateFoundError(t,e){function r(f){return f instanceof Ar?f.terminalType.name:f instanceof fn?f.nonTerminalName:""}o(r,"getExtraProductionArgument");let n=t.name,i=ea(e),a=i.idx,s=Xs(i),l=r(i),u=a>0,h=`->${s}${u?a:""}<- ${l?`with argument: ->${l}<-`:""} - 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 h=h.replace(/[ \t]+/g," "),h=h.replace(/\s\s+/g,` -`),h},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=rt(t.prefixPath,i=>Ku(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=rt(t.prefixPath,i=>Ku(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=Xs(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=rt(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 fs?e=t.topLevelRule.name:e=t.topLevelRule,`Duplicate definition, rule: ->${e}<- is already defined in the grammar: ->${t.grammarName}<-`}}});function Ide(t,e){let r=new JO(t,e);return r.resolveRefs(),r.errors}var JO,Ode=N(()=>{"use strict";js();Yt();ps();o(Ide,"resolveGrammar");JO=class extends ds{static{o(this,"GastRefResolverVisitor")}constructor(e,r){super(),this.nameToTopRule=e,this.errMsgProvider=r,this.errors=[]}resolveRefs(){Ae(kr(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:Gi.UNRESOLVED_SUBRULE_REF,ruleName:this.currTopLevel.name,unresolvedRefName:e.nonTerminalName})}}}});function sS(t,e,r=[]){r=ln(r);let n=[],i=0;function a(l){return l.concat(yi(t,i+1))}o(a,"remainingPathWith");function s(l){let u=sS(a(l),e,r);return n.concat(u)}for(o(s,"getAlternativesForProd");r.length{mr(u.definition)===!1&&(n=s(u.definition))}),n;if(l instanceof Ar)r.push(l.terminalType);else throw Error("non exhaustive match")}i++}return n.push({partialPath:r,suffixDef:yi(t,i)}),n}function oS(t,e,r,n){let i="EXIT_NONE_TERMINAL",a=[i],s="EXIT_ALTERNATIVE",l=!1,u=e.length,h=u-n-1,f=[],d=[];for(d.push({idx:-1,def:t,ruleStack:[],occurrenceStack:[]});!mr(d);){let p=d.pop();if(p===s){l&&ma(d).idx<=h&&d.pop();continue}let m=p.def,g=p.idx,y=p.ruleStack,v=p.occurrenceStack;if(mr(m))continue;let x=m[0];if(x===i){let b={idx:g,def:yi(m),ruleStack:Bu(y),occurrenceStack:Bu(v)};d.push(b)}else if(x instanceof Ar)if(g=0;b--){let T=x.definition[b],S={idx:g,def:T.definition.concat(yi(m)),ruleStack:y,occurrenceStack:v};d.push(S),d.push(s)}else if(x instanceof Pn)d.push({idx:g,def:x.definition.concat(yi(m)),ruleStack:y,occurrenceStack:v});else if(x instanceof fs)d.push(MYe(x,g,y,v));else throw Error("non exhaustive match")}return f}function MYe(t,e,r,n){let i=ln(r);i.push(t.name);let a=ln(n);return a.push(1),{idx:e,def:t.definition,ruleStack:i,occurrenceStack:a}}var eP,nS,T1,iS,ib,aS,ab,sb=N(()=>{"use strict";Yt();GO();jE();ps();eP=class extends Yu{static{o(this,"AbstractNextPossibleTokensWalker")}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=ln(this.path.ruleStack).reverse(),this.occurrenceStack=ln(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(){mr(this.ruleStack)?(this.nextProductionName="",this.nextProductionOccurrence=0,this.isAtEndOfPath=!0):(this.nextProductionName=this.ruleStack.pop(),this.nextProductionOccurrence=this.occurrenceStack.pop())}},nS=class extends eP{static{o(this,"NextAfterTokenWalker")}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 Pn({definition:i});this.possibleTokTypes=zp(a),this.found=!0}}},T1=class extends Yu{static{o(this,"AbstractNextTerminalAfterProductionWalker")}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}},iS=class extends T1{static{o(this,"NextTerminalAfterManyWalker")}walkMany(e,r,n){if(e.idx===this.occurrence){let i=ea(r.concat(n));this.result.isEndOfRule=i===void 0,i instanceof Ar&&(this.result.token=i.terminalType,this.result.occurrence=i.idx)}else super.walkMany(e,r,n)}},ib=class extends T1{static{o(this,"NextTerminalAfterManySepWalker")}walkManySep(e,r,n){if(e.idx===this.occurrence){let i=ea(r.concat(n));this.result.isEndOfRule=i===void 0,i instanceof Ar&&(this.result.token=i.terminalType,this.result.occurrence=i.idx)}else super.walkManySep(e,r,n)}},aS=class extends T1{static{o(this,"NextTerminalAfterAtLeastOneWalker")}walkAtLeastOne(e,r,n){if(e.idx===this.occurrence){let i=ea(r.concat(n));this.result.isEndOfRule=i===void 0,i instanceof Ar&&(this.result.token=i.terminalType,this.result.occurrence=i.idx)}else super.walkAtLeastOne(e,r,n)}},ab=class extends T1{static{o(this,"NextTerminalAfterAtLeastOneSepWalker")}walkAtLeastOneSep(e,r,n){if(e.idx===this.occurrence){let i=ea(r.concat(n));this.result.isEndOfRule=i===void 0,i instanceof Ar&&(this.result.token=i.terminalType,this.result.occurrence=i.idx)}else super.walkAtLeastOneSep(e,r,n)}};o(sS,"possiblePathsFrom");o(oS,"nextPossibleTokensAfter");o(MYe,"expandTopLevelRule")});function ob(t){if(t instanceof dn||t==="Option")return Jn.OPTION;if(t instanceof zr||t==="Repetition")return Jn.REPETITION;if(t instanceof Bn||t==="RepetitionMandatory")return Jn.REPETITION_MANDATORY;if(t instanceof Fn||t==="RepetitionMandatoryWithSeparator")return Jn.REPETITION_MANDATORY_WITH_SEPARATOR;if(t instanceof _n||t==="RepetitionWithSeparator")return Jn.REPETITION_WITH_SEPARATOR;if(t instanceof Dn||t==="Alternation")return Jn.ALTERNATION;throw Error("non exhaustive match")}function cS(t){let{occurrence:e,rule:r,prodType:n,maxLookahead:i}=t,a=ob(n);return a===Jn.ALTERNATION?w1(e,r,i):k1(e,r,a,i)}function Bde(t,e,r,n,i,a){let s=w1(t,e,r),l=Ude(s)?v1:Xu;return a(s,n,l,i)}function Fde(t,e,r,n,i,a){let s=k1(t,e,i,r),l=Ude(s)?v1:Xu;return a(s[0],l,n)}function $de(t,e,r,n){let i=t.length,a=Pa(t,s=>Pa(s,l=>l.length===1));if(e)return function(s){let l=rt(s,u=>u.GATE);for(let u=0;uQr(u)),l=Jr(s,(u,h,f)=>(Ae(h,d=>{Ft(u,d.tokenTypeIdx)||(u[d.tokenTypeIdx]=f),Ae(d.categoryMatches,p=>{Ft(u,p)||(u[p]=f)})}),u),{});return function(){let u=this.LA(1);return l[u.tokenTypeIdx]}}else return function(){for(let s=0;sa.length===1),i=t.length;if(n&&!r){let a=Qr(t);if(a.length===1&&mr(a[0].categoryMatches)){let l=a[0].tokenTypeIdx;return function(){return this.LA(1).tokenTypeIdx===l}}else{let s=Jr(a,(l,u,h)=>(l[u.tokenTypeIdx]=!0,Ae(u.categoryMatches,f=>{l[f]=!0}),l),[]);return function(){let l=this.LA(1);return s[l.tokenTypeIdx]===!0}}}else return function(){e:for(let a=0;asS([s],1)),n=Pde(r.length),i=rt(r,s=>{let l={};return Ae(s,u=>{let h=tP(u.partialPath);Ae(h,f=>{l[f]=!0})}),l}),a=r;for(let s=1;s<=e;s++){let l=a;a=Pde(l.length);for(let u=0;u{let x=tP(v.partialPath);Ae(x,b=>{i[u][b]=!0})})}}}}return n}function w1(t,e,r,n){let i=new lS(t,Jn.ALTERNATION,n);return e.accept(i),Gde(i.result,r)}function k1(t,e,r,n){let i=new lS(t,r);e.accept(i);let a=i.result,l=new rP(e,t,r).startWalking(),u=new Pn({definition:a}),h=new Pn({definition:l});return Gde([u,h],n)}function uS(t,e){e:for(let r=0;r{let i=e[n];return r===i||i.categoryMatchesMap[r.tokenTypeIdx]})}function Ude(t){return Pa(t,e=>Pa(e,r=>Pa(r,n=>mr(n.categoryMatches))))}var Jn,rP,lS,E1=N(()=>{"use strict";Yt();sb();jE();Vp();ps();(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"})(Jn||(Jn={}));o(ob,"getProdType");o(cS,"getLookaheadPaths");o(Bde,"buildLookaheadFuncForOr");o(Fde,"buildLookaheadFuncForOptionalProd");o($de,"buildAlternativesLookAheadFunc");o(zde,"buildSingleAlternativeLookaheadFunction");rP=class extends Yu{static{o(this,"RestDefinitionFinderWalker")}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,Jn.OPTION,r,n)||super.walkOption(e,r,n)}walkAtLeastOne(e,r,n){this.checkIsTarget(e,Jn.REPETITION_MANDATORY,r,n)||super.walkOption(e,r,n)}walkAtLeastOneSep(e,r,n){this.checkIsTarget(e,Jn.REPETITION_MANDATORY_WITH_SEPARATOR,r,n)||super.walkOption(e,r,n)}walkMany(e,r,n){this.checkIsTarget(e,Jn.REPETITION,r,n)||super.walkOption(e,r,n)}walkManySep(e,r,n){this.checkIsTarget(e,Jn.REPETITION_WITH_SEPARATOR,r,n)||super.walkOption(e,r,n)}},lS=class extends ds{static{o(this,"InsideDefinitionFinderVisitor")}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,Jn.OPTION)}visitRepetition(e){this.checkIsTarget(e,Jn.REPETITION)}visitRepetitionMandatory(e){this.checkIsTarget(e,Jn.REPETITION_MANDATORY)}visitRepetitionMandatoryWithSeparator(e){this.checkIsTarget(e,Jn.REPETITION_MANDATORY_WITH_SEPARATOR)}visitRepetitionWithSeparator(e){this.checkIsTarget(e,Jn.REPETITION_WITH_SEPARATOR)}visitAlternation(e){this.checkIsTarget(e,Jn.ALTERNATION)}};o(Pde,"initializeArrayOfArrays");o(tP,"pathToHashKeys");o(IYe,"isUniquePrefixHash");o(Gde,"lookAheadSequenceFromAlternatives");o(w1,"getLookaheadPathsForOr");o(k1,"getLookaheadPathsForOptionalProd");o(uS,"containsPath");o(Vde,"isStrictPrefixOfPath");o(Ude,"areTokenCategoriesNotUsed")});function Hde(t){let e=t.lookaheadStrategy.validate({rules:t.rules,tokenTypes:t.tokenTypes,grammarName:t.grammarName});return rt(e,r=>Object.assign({type:Gi.CUSTOM_LOOKAHEAD_VALIDATION},r))}function qde(t,e,r,n){let i=ga(t,u=>OYe(u,r)),a=GYe(t,e,r),s=ga(t,u=>FYe(u,r)),l=ga(t,u=>BYe(u,t,n,r));return i.concat(a,s,l)}function OYe(t,e){let r=new nP;t.accept(r);let n=r.allProductions,i=DR(n,PYe),a=Vs(i,l=>l.length>1);return rt(kr(a),l=>{let u=ea(l),h=e.buildDuplicateFoundError(t,l),f=Xs(u),d={message:h,type:Gi.DUPLICATE_PRODUCTIONS,ruleName:t.name,dslName:f,occurrence:u.idx},p=Wde(u);return p&&(d.parameter=p),d})}function PYe(t){return`${Xs(t)}_#_${t.idx}_#_${Wde(t)}`}function Wde(t){return t instanceof Ar?t.terminalType.name:t instanceof fn?t.nonTerminalName:""}function BYe(t,e,r,n){let i=[];if(Jr(e,(s,l)=>l.name===t.name?s+1:s,0)>1){let s=n.buildDuplicateRuleNameError({topLevelRule:t,grammarName:r});i.push({message:s,type:Gi.DUPLICATE_RULE_NAME,ruleName:t.name})}return i}function Yde(t,e,r){let n=[],i;return jn(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:Gi.INVALID_RULE_OVERRIDE,ruleName:t})),n}function aP(t,e,r,n=[]){let i=[],a=hS(e.definition);if(mr(a))return[];{let s=t.name;jn(a,t)&&i.push({message:r.buildLeftRecursionError({topLevelRule:t,leftRecursionPath:n}),type:Gi.LEFT_RECURSION,ruleName:s});let u=lf(a,n.concat([t])),h=ga(u,f=>{let d=ln(n);return d.push(f),aP(t,f,r,d)});return i.concat(h)}}function hS(t){let e=[];if(mr(t))return e;let r=ea(t);if(r instanceof fn)e.push(r.referencedRule);else if(r instanceof Pn||r instanceof dn||r instanceof Bn||r instanceof Fn||r instanceof _n||r instanceof zr)e=e.concat(hS(r.definition));else if(r instanceof Dn)e=Qr(rt(r.definition,a=>hS(a.definition)));else if(!(r instanceof Ar))throw Error("non exhaustive match");let n=$p(r),i=t.length>1;if(n&&i){let a=yi(t);return e.concat(hS(a))}else return e}function Xde(t,e){let r=new lb;t.accept(r);let n=r.alternations;return ga(n,a=>{let s=Bu(a.definition);return ga(s,(l,u)=>{let h=oS([l],[],Xu,1);return mr(h)?[{message:e.buildEmptyAlternationError({topLevelRule:t,alternation:a,emptyChoiceIdx:u}),type:Gi.NONE_LAST_EMPTY_ALT,ruleName:t.name,occurrence:a.idx,alternative:u+1}]:[]})})}function jde(t,e,r){let n=new lb;t.accept(n);let i=n.alternations;return i=cf(i,s=>s.ignoreAmbiguities===!0),ga(i,s=>{let l=s.idx,u=s.maxLookahead||e,h=w1(l,t,u,s),f=$Ye(h,s,t,r),d=zYe(h,s,t,r);return f.concat(d)})}function FYe(t,e){let r=new lb;t.accept(r);let n=r.alternations;return ga(n,a=>a.definition.length>255?[{message:e.buildTooManyAlternativesError({topLevelRule:t,alternation:a}),type:Gi.TOO_MANY_ALTS,ruleName:t.name,occurrence:a.idx}]:[])}function Kde(t,e,r){let n=[];return Ae(t,i=>{let a=new iP;i.accept(a);let s=a.allProductions;Ae(s,l=>{let u=ob(l),h=l.maxLookahead||e,f=l.idx,p=k1(f,i,u,h)[0];if(mr(Qr(p))){let m=r.buildEmptyRepetitionError({topLevelRule:i,repetition:l});n.push({message:m,type:Gi.NO_NON_EMPTY_LOOKAHEAD,ruleName:i.name})}})}),n}function $Ye(t,e,r,n){let i=[],a=Jr(t,(l,u,h)=>(e.definition[h].ignoreAmbiguities===!0||Ae(u,f=>{let d=[h];Ae(t,(p,m)=>{h!==m&&uS(p,f)&&e.definition[m].ignoreAmbiguities!==!0&&d.push(m)}),d.length>1&&!uS(i,f)&&(i.push(f),l.push({alts:d,path:f}))}),l),[]);return rt(a,l=>{let u=rt(l.alts,f=>f+1);return{message:n.buildAlternationAmbiguityError({topLevelRule:r,alternation:e,ambiguityIndices:u,prefixPath:l.path}),type:Gi.AMBIGUOUS_ALTS,ruleName:r.name,occurrence:e.idx,alternatives:l.alts}})}function zYe(t,e,r,n){let i=Jr(t,(s,l,u)=>{let h=rt(l,f=>({idx:u,path:f}));return s.concat(h)},[]);return _c(ga(i,s=>{if(e.definition[s.idx].ignoreAmbiguities===!0)return[];let u=s.idx,h=s.path,f=Zr(i,p=>e.definition[p.idx].ignoreAmbiguities!==!0&&p.idx{let m=[p.idx+1,u+1],g=e.idx===0?"":e.idx;return{message:n.buildAlternationPrefixAmbiguityError({topLevelRule:r,alternation:e,ambiguityIndices:m,prefixPath:p.path}),type:Gi.AMBIGUOUS_PREFIX_ALTS,ruleName:r.name,occurrence:g,alternatives:m}})}))}function GYe(t,e,r){let n=[],i=rt(e,a=>a.name);return Ae(t,a=>{let s=a.name;if(jn(i,s)){let l=r.buildNamespaceConflictError(a);n.push({message:l,type:Gi.CONFLICT_TOKENS_RULES_NAMESPACE,ruleName:s})}}),n}var nP,lb,iP,cb=N(()=>{"use strict";Yt();js();ps();E1();sb();Vp();o(Hde,"validateLookahead");o(qde,"validateGrammar");o(OYe,"validateDuplicateProductions");o(PYe,"identifyProductionForDuplicates");o(Wde,"getExtraProductionArgument");nP=class extends ds{static{o(this,"OccurrenceValidationCollector")}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)}};o(BYe,"validateRuleDoesNotAlreadyExist");o(Yde,"validateRuleIsOverridden");o(aP,"validateNoLeftRecursion");o(hS,"getFirstNoneTerminal");lb=class extends ds{static{o(this,"OrCollector")}constructor(){super(...arguments),this.alternations=[]}visitAlternation(e){this.alternations.push(e)}};o(Xde,"validateEmptyOrAlternative");o(jde,"validateAmbiguousAlternationAlternatives");iP=class extends ds{static{o(this,"RepetitionCollector")}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)}};o(FYe,"validateTooManyAlts");o(Kde,"validateSomeNonEmptyLookaheadPath");o($Ye,"checkAlternativesAmbiguities");o(zYe,"checkPrefixAlternativesAmbiguities");o(GYe,"checkTerminalAndNoneTerminalsNameSpace")});function Qde(t){let e=of(t,{errMsgProvider:Mde}),r={};return Ae(t.rules,n=>{r[n.name]=n}),Ide(r,e.errMsgProvider)}function Zde(t){return t=of(t,{errMsgProvider:Gl}),qde(t.rules,t.tokenTypes,t.errMsgProvider,t.grammarName)}var Jde=N(()=>{"use strict";Yt();Ode();cb();b1();o(Qde,"resolveGrammar");o(Zde,"validateGrammar")});function Bf(t){return jn(ipe,t.name)}var epe,tpe,rpe,npe,ipe,S1,Hp,ub,hb,fb,C1=N(()=>{"use strict";Yt();epe="MismatchedTokenException",tpe="NoViableAltException",rpe="EarlyExitException",npe="NotAllInputParsedException",ipe=[epe,tpe,rpe,npe];Object.freeze(ipe);o(Bf,"isRecognitionException");S1=class extends Error{static{o(this,"RecognitionException")}constructor(e,r){super(e),this.token=r,this.resyncedTokens=[],Object.setPrototypeOf(this,new.target.prototype),Error.captureStackTrace&&Error.captureStackTrace(this,this.constructor)}},Hp=class extends S1{static{o(this,"MismatchedTokenException")}constructor(e,r,n){super(e,r),this.previousToken=n,this.name=epe}},ub=class extends S1{static{o(this,"NoViableAltException")}constructor(e,r,n){super(e,r),this.previousToken=n,this.name=tpe}},hb=class extends S1{static{o(this,"NotAllInputParsedException")}constructor(e,r){super(e,r),this.name=npe}},fb=class extends S1{static{o(this,"EarlyExitException")}constructor(e,r,n){super(e,r),this.previousToken=n,this.name=rpe}}});function VYe(t,e,r,n,i,a,s){let l=this.getKeyForAutomaticLookahead(n,i),u=this.firstAfterRepMap[l];if(u===void 0){let p=this.getCurrRuleFullName(),m=this.getGAstProductions()[p];u=new a(m,i).startWalking(),this.firstAfterRepMap[l]=u}let h=u.token,f=u.occurrence,d=u.isEndOfRule;this.RULE_STACK.length===1&&d&&h===void 0&&(h=yo,f=1),!(h===void 0||f===void 0)&&this.shouldInRepetitionRecoveryBeTried(h,f,s)&&this.tryInRepetitionRecovery(t,e,r,h)}var sP,lP,oP,fS,cP=N(()=>{"use strict";Up();Yt();C1();VO();js();sP={},lP="InRuleRecoveryException",oP=class extends Error{static{o(this,"InRuleRecoveryException")}constructor(e){super(e),this.name=lP}},fS=class{static{o(this,"Recoverable")}initRecoverable(e){this.firstAfterRepMap={},this.resyncFollows={},this.recoveryEnabled=Ft(e,"recoveryEnabled")?e.recoveryEnabled:ms.recoveryEnabled,this.recoveryEnabled&&(this.attemptInRepetitionRecovery=VYe)}getTokenToInsert(e){let r=Qu(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(),l=[],u=!1,h=this.LA(1),f=this.LA(1),d=o(()=>{let p=this.LA(0),m=this.errorMessageProvider.buildMismatchTokenMessage({expected:i,actual:h,previous:p,ruleName:this.getCurrRuleFullName()}),g=new Hp(m,h,this.LA(0));g.resyncedTokens=Bu(l),this.SAVE_ERROR(g)},"generateErrorMessage");for(;!u;)if(this.tokenMatcher(f,i)){d();return}else if(n.call(this)){d(),e.apply(this,r);return}else this.tokenMatcher(f,a)?u=!0:(f=this.SKIP_TOKEN(),this.addToResyncTokens(f,l));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 oP("sad sad panda")}canPerformInRuleRecovery(e,r){return this.canRecoverWithSingleTokenInsertion(e,r)||this.canRecoverWithSingleTokenDeletion(e)}canRecoverWithSingleTokenInsertion(e,r){if(!this.canTokenTypeBeInsertedInRecovery(e)||mr(r))return!1;let n=this.LA(1);return os(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 jn(n,e)}findReSyncTokenType(){let e=this.flattenFollowSet(),r=this.LA(1),n=2;for(;;){let i=os(e,a=>nb(r,a));if(i!==void 0)return i;r=this.LA(n),n++}}getCurrFollowKey(){if(this.RULE_STACK.length===1)return sP;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 rt(e,(n,i)=>i===0?sP:{ruleName:this.shortRuleNameToFullName(n),idxInCallingRule:r[i],inRule:this.shortRuleNameToFullName(e[i-1])})}flattenFollowSet(){let e=rt(this.buildFullFollowKeyStack(),r=>this.getFollowSetFromFollowKey(r));return Qr(e)}getFollowSetFromFollowKey(e){if(e===sP)return[yo];let r=e.ruleName+e.idxInCallingRule+KE+e.inRule;return this.resyncFollows[r]}addToResyncTokens(e,r){return this.tokenMatcher(e,yo)||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 Bu(r)}attemptInRepetitionRecovery(e,r,n,i,a,s,l){}getCurrentGrammarPath(e,r){let n=this.getHumanReadableRuleStack(),i=ln(this.RULE_OCCURRENCE_STACK);return{ruleStack:n,occurrenceStack:i,lastTok:e,lastTokOccurrence:r}}getHumanReadableRuleStack(){return rt(this.RULE_STACK,e=>this.shortRuleNameToFullName(e))}};o(VYe,"attemptInRepetitionRecovery")});function dS(t,e,r){return r|e|t}var pS=N(()=>{"use strict";o(dS,"getKeyForAutomaticLookahead")});var Ju,uP=N(()=>{"use strict";Yt();b1();js();cb();E1();Ju=class{static{o(this,"LLkLookaheadStrategy")}constructor(e){var r;this.maxLookahead=(r=e?.maxLookahead)!==null&&r!==void 0?r:ms.maxLookahead}validate(e){let r=this.validateNoLeftRecursion(e.rules);if(mr(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 ga(e,r=>aP(r,r,Gl))}validateEmptyOrAlternatives(e){return ga(e,r=>Xde(r,Gl))}validateAmbiguousAlternationAlternatives(e,r){return ga(e,n=>jde(n,r,Gl))}validateSomeNonEmptyLookaheadPath(e,r){return Kde(e,r,Gl)}buildLookaheadForAlternation(e){return Bde(e.prodOccurrence,e.rule,e.maxLookahead,e.hasPredicates,e.dynamicTokensEnabled,$de)}buildLookaheadForOptional(e){return Fde(e.prodOccurrence,e.rule,e.maxLookahead,e.dynamicTokensEnabled,ob(e.prodType),zde)}}});function UYe(t){mS.reset(),t.accept(mS);let e=mS.dslMethods;return mS.reset(),e}var gS,hP,mS,ape=N(()=>{"use strict";Yt();js();pS();ps();uP();gS=class{static{o(this,"LooksAhead")}initLooksAhead(e){this.dynamicTokensEnabled=Ft(e,"dynamicTokensEnabled")?e.dynamicTokensEnabled:ms.dynamicTokensEnabled,this.maxLookahead=Ft(e,"maxLookahead")?e.maxLookahead:ms.maxLookahead,this.lookaheadStrategy=Ft(e,"lookaheadStrategy")?e.lookaheadStrategy:new Ju({maxLookahead:this.maxLookahead}),this.lookAheadFuncsCache=new Map}preComputeLookaheadFunctions(e){Ae(e,r=>{this.TRACE_INIT(`${r.name} Rule Lookahead`,()=>{let{alternation:n,repetition:i,option:a,repetitionMandatory:s,repetitionMandatoryWithSeparator:l,repetitionWithSeparator:u}=UYe(r);Ae(n,h=>{let f=h.idx===0?"":h.idx;this.TRACE_INIT(`${Xs(h)}${f}`,()=>{let d=this.lookaheadStrategy.buildLookaheadForAlternation({prodOccurrence:h.idx,rule:r,maxLookahead:h.maxLookahead||this.maxLookahead,hasPredicates:h.hasPredicates,dynamicTokensEnabled:this.dynamicTokensEnabled}),p=dS(this.fullRuleNameToShort[r.name],256,h.idx);this.setLaFuncCache(p,d)})}),Ae(i,h=>{this.computeLookaheadFunc(r,h.idx,768,"Repetition",h.maxLookahead,Xs(h))}),Ae(a,h=>{this.computeLookaheadFunc(r,h.idx,512,"Option",h.maxLookahead,Xs(h))}),Ae(s,h=>{this.computeLookaheadFunc(r,h.idx,1024,"RepetitionMandatory",h.maxLookahead,Xs(h))}),Ae(l,h=>{this.computeLookaheadFunc(r,h.idx,1536,"RepetitionMandatoryWithSeparator",h.maxLookahead,Xs(h))}),Ae(u,h=>{this.computeLookaheadFunc(r,h.idx,1280,"RepetitionWithSeparator",h.maxLookahead,Xs(h))})})})}computeLookaheadFunc(e,r,n,i,a,s){this.TRACE_INIT(`${s}${r===0?"":r}`,()=>{let l=this.lookaheadStrategy.buildLookaheadForOptional({prodOccurrence:r,rule:e,maxLookahead:a||this.maxLookahead,dynamicTokensEnabled:this.dynamicTokensEnabled,prodType:i}),u=dS(this.fullRuleNameToShort[e.name],n,r);this.setLaFuncCache(u,l)})}getKeyForAutomaticLookahead(e,r){let n=this.getLastExplicitRuleShortName();return dS(n,e,r)}getLaFuncFromCache(e){return this.lookAheadFuncsCache.get(e)}setLaFuncCache(e,r){this.lookAheadFuncsCache.set(e,r)}},hP=class extends ds{static{o(this,"DslMethodsCollectorVisitor")}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)}},mS=new hP;o(UYe,"collectMethods")});function pP(t,e){isNaN(t.startOffset)===!0?(t.startOffset=e.startOffset,t.endOffset=e.endOffset):t.endOffset{"use strict";o(pP,"setNodeLocationOnlyOffset");o(mP,"setNodeLocationFull");o(spe,"addTerminalToCst");o(ope,"addNoneTerminalToCst")});function gP(t,e){Object.defineProperty(t,HYe,{enumerable:!1,configurable:!0,writable:!1,value:e})}var HYe,cpe=N(()=>{"use strict";HYe="name";o(gP,"defineNameProp")});function qYe(t,e){let r=qr(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,` - `)}`)}},"validateVisitor")};return r.prototype=n,r.prototype.constructor=r,r._RULE_NAMES=e,r}function hpe(t,e,r){let n=o(function(){},"derivedConstructor");gP(n,t+"BaseSemanticsWithDefaults");let i=Object.create(r.prototype);return Ae(e,a=>{i[a]=qYe}),n.prototype=i,n.prototype.constructor=n,n}function WYe(t,e){return YYe(t,e)}function YYe(t,e){let r=Zr(e,i=>Si(t[i])===!1),n=rt(r,i=>({msg:`Missing visitor method: <${i}> on ${t.constructor.name} CST Visitor.`,type:yP.MISSING_METHOD,methodName:i}));return _c(n)}var yP,fpe=N(()=>{"use strict";Yt();cpe();o(qYe,"defaultVisit");o(upe,"createBaseSemanticVisitorConstructor");o(hpe,"createBaseVisitorConstructorWithDefaults");(function(t){t[t.REDUNDANT_METHOD=0]="REDUNDANT_METHOD",t[t.MISSING_METHOD=1]="MISSING_METHOD"})(yP||(yP={}));o(WYe,"validateVisitor");o(YYe,"validateMissingCstMethods")});var bS,dpe=N(()=>{"use strict";lpe();Yt();fpe();js();bS=class{static{o(this,"TreeBuilder")}initTreeBuilder(e){if(this.CST_STACK=[],this.outputCst=e.outputCst,this.nodeLocationTracking=Ft(e,"nodeLocationTracking")?e.nodeLocationTracking:ms.nodeLocationTracking,!this.outputCst)this.cstInvocationStateUpdate=si,this.cstFinallyStateUpdate=si,this.cstPostTerminal=si,this.cstPostNonTerminal=si,this.cstPostRule=si;else if(/full/i.test(this.nodeLocationTracking))this.recoveryEnabled?(this.setNodeLocationFromToken=mP,this.setNodeLocationFromNode=mP,this.cstPostRule=si,this.setInitialNodeLocation=this.setInitialNodeLocationFullRecovery):(this.setNodeLocationFromToken=si,this.setNodeLocationFromNode=si,this.cstPostRule=this.cstPostRuleFull,this.setInitialNodeLocation=this.setInitialNodeLocationFullRegular);else if(/onlyOffset/i.test(this.nodeLocationTracking))this.recoveryEnabled?(this.setNodeLocationFromToken=pP,this.setNodeLocationFromNode=pP,this.cstPostRule=si,this.setInitialNodeLocation=this.setInitialNodeLocationOnlyOffsetRecovery):(this.setNodeLocationFromToken=si,this.setNodeLocationFromNode=si,this.cstPostRule=this.cstPostRuleOnlyOffset,this.setInitialNodeLocation=this.setInitialNodeLocationOnlyOffsetRegular);else if(/none/i.test(this.nodeLocationTracking))this.setNodeLocationFromToken=si,this.setNodeLocationFromNode=si,this.cstPostRule=si,this.setInitialNodeLocation=si;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];spe(n,r,e),this.setNodeLocationFromToken(n.location,r)}cstPostNonTerminal(e,r){let n=this.CST_STACK[this.CST_STACK.length-1];ope(n,r,e),this.setNodeLocationFromNode(n.location,e.location)}getBaseCstVisitorConstructor(){if(xr(this.baseCstVisitorConstructor)){let e=upe(this.className,qr(this.gastProductionsCache));return this.baseCstVisitorConstructor=e,e}return this.baseCstVisitorConstructor}getBaseCstVisitorConstructorWithDefaults(){if(xr(this.baseCstVisitorWithDefaultsConstructor)){let e=hpe(this.className,qr(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 TS,ppe=N(()=>{"use strict";js();TS=class{static{o(this,"LexerAdapter")}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)):A1}LA(e){let r=this.currIdx+e;return r<0||this.tokVectorLength<=r?A1: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 wS,mpe=N(()=>{"use strict";Yt();C1();js();b1();cb();ps();wS=class{static{o(this,"RecognizerApi")}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=_1){if(jn(this.definedRulesNames,e)){let s={message:Gl.buildDuplicateRuleNameError({topLevelRule:e,grammarName:this.className}),type:Gi.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=_1){let i=Yde(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(Bf(i))return!1;throw i}finally{this.reloadRecogState(n),this.isBackTrackingStack.pop()}}}getGAstProductions(){return this.gastProductionsCache}getSerializedGastProductions(){return YE(kr(this.gastProductionsCache))}}});var kS,gpe=N(()=>{"use strict";Yt();pS();C1();E1();sb();js();cP();Up();Vp();kS=class{static{o(this,"RecognizerEngine")}initRecognizerEngine(e,r){if(this.className=this.constructor.name,this.shortRuleNameToFull={},this.fullRuleNameToShort={},this.ruleShortNameIdx=256,this.tokenMatcher=v1,this.subruleIdx=0,this.definedRulesNames=[],this.tokensMap={},this.isBackTrackingStack=[],this.RULE_STACK=[],this.RULE_OCCURRENCE_STACK=[],this.gastProductionsCache={},Ft(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(Bt(e)){if(mr(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(Bt(e))this.tokensMap=Jr(e,(a,s)=>(a[s.name]=s,a),{});else if(Ft(e,"modes")&&Pa(Qr(kr(e.modes)),Ede)){let a=Qr(kr(e.modes)),s=qm(a);this.tokensMap=Jr(s,(l,u)=>(l[u.name]=u,l),{})}else if(Sn(e))this.tokensMap=ln(e);else throw new Error(" argument must be An Array of Token constructors, A dictionary of Token constructors or an IMultiModeLexerDefinition");this.tokensMap.EOF=yo;let n=Ft(e,"modes")?Qr(kr(e.modes)):kr(e),i=Pa(n,a=>mr(a.categoryMatches));this.tokenMatcher=i?v1:Xu,ju(kr(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=Ft(n,"resyncEnabled")?n.resyncEnabled:_1.resyncEnabled,a=Ft(n,"recoveryValueFunc")?n.recoveryValueFunc:_1.recoveryValueFunc,s=this.ruleShortNameIdx<<12;this.ruleShortNameIdx++,this.shortRuleNameToFull[s]=e,this.fullRuleNameToShort[e]=s;let l;return this.outputCst===!0?l=o(function(...f){try{this.ruleInvocationStateUpdate(s,e,this.subruleIdx),r.apply(this,f);let d=this.CST_STACK[this.CST_STACK.length-1];return this.cstPostRule(d),d}catch(d){return this.invokeRuleCatch(d,i,a)}finally{this.ruleFinallyStateUpdate()}},"invokeRuleWithTry"):l=o(function(...f){try{return this.ruleInvocationStateUpdate(s,e,this.subruleIdx),r.apply(this,f)}catch(d){return this.invokeRuleCatch(d,i,a)}finally{this.ruleFinallyStateUpdate()}},"invokeRuleWithTryCst"),Object.assign(l,{ruleName:e,originalGrammarAction:r})}invokeRuleCatch(e,r,n){let i=this.RULE_STACK.length===1,a=r&&!this.isBackTracking()&&this.recoveryEnabled;if(Bf(e)){let s=e;if(a){let l=this.findReSyncTokenType();if(this.isInCurrentRuleReSyncSet(l))if(s.resyncedTokens=this.reSyncTo(l),this.outputCst){let u=this.CST_STACK[this.CST_STACK.length-1];return u.recoveredNode=!0,u}else return n(e);else{if(this.outputCst){let u=this.CST_STACK[this.CST_STACK.length-1];u.recoveredNode=!0,s.partialCstResult=u}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 l=i;i=o(()=>s.call(this)&&l.call(this),"lookAheadFunc")}}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 l=i;i=o(()=>s.call(this)&&l.call(this),"lookAheadFunc")}}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,Jn.REPETITION_MANDATORY,r.ERR_MSG);this.attemptInRepetitionRecovery(this.atLeastOneInternal,[e,r],i,1024,e,aS)}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 l=o(()=>this.tokenMatcher(this.LA(1),a),"separatorLookAheadFunc");for(;this.tokenMatcher(this.LA(1),a)===!0;)this.CONSUME(a),i.call(this);this.attemptInRepetitionRecovery(this.repetitionSepSecondInternal,[e,a,l,i,ab],l,1536,e,ab)}else throw this.raiseEarlyExitException(e,Jn.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 l=r.GATE;if(l!==void 0){let u=i;i=o(()=>l.call(this)&&u.call(this),"lookaheadFunction")}}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,iS,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 l=o(()=>this.tokenMatcher(this.LA(1),a),"separatorLookAheadFunc");for(;this.tokenMatcher(this.LA(1),a)===!0;)this.CONSUME(a),i.call(this);this.attemptInRepetitionRecovery(this.repetitionSepSecondInternal,[e,a,l,i,ib],l,1280,e,ib)}}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=Bt(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 hb(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 Bf(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 Hp(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===lP?n:a}}else throw n}saveRecogState(){let e=this.errors,r=ln(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),yo)}reset(){this.resetLexerState(),this.subruleIdx=0,this.isBackTrackingStack=[],this.errors=[],this.RULE_STACK=[],this.CST_STACK=[],this.RULE_OCCURRENCE_STACK=[]}}});var ES,ype=N(()=>{"use strict";C1();Yt();E1();js();ES=class{static{o(this,"ErrorHandler")}initErrorHandler(e){this._errors=[],this.errorMessageProvider=Ft(e,"errorMessageProvider")?e.errorMessageProvider:ms.errorMessageProvider}SAVE_ERROR(e){if(Bf(e))return e.context={ruleStack:this.getHumanReadableRuleStack(),ruleOccurrenceStack:ln(this.RULE_OCCURRENCE_STACK)},this._errors.push(e),e;throw Error("Trying to save an Error which is not a RecognitionException")}get errors(){return ln(this._errors)}set errors(e){this._errors=e}raiseEarlyExitException(e,r,n){let i=this.getCurrRuleFullName(),a=this.getGAstProductions()[i],l=k1(e,a,r,this.maxLookahead)[0],u=[];for(let f=1;f<=this.maxLookahead;f++)u.push(this.LA(f));let h=this.errorMessageProvider.buildEarlyExitMessage({expectedIterationPaths:l,actual:u,previous:this.LA(0),customUserDescription:n,ruleName:i});throw this.SAVE_ERROR(new fb(h,this.LA(1),this.LA(0)))}raiseNoAltException(e,r){let n=this.getCurrRuleFullName(),i=this.getGAstProductions()[n],a=w1(e,i,this.maxLookahead),s=[];for(let h=1;h<=this.maxLookahead;h++)s.push(this.LA(h));let l=this.LA(0),u=this.errorMessageProvider.buildNoViableAltMessage({expectedPathsPerAlt:a,actual:s,previous:l,customUserDescription:r,ruleName:this.getCurrRuleFullName()});throw this.SAVE_ERROR(new ub(u,this.LA(1),l))}}});var SS,vpe=N(()=>{"use strict";sb();Yt();SS=class{static{o(this,"ContentAssist")}initContentAssist(){}computeContentAssist(e,r){let n=this.gastProductionsCache[e];if(xr(n))throw Error(`Rule ->${e}<- does not exist in this grammar.`);return oS([n],r,this.tokenMatcher,this.maxLookahead)}getNextPossibleTokenTypes(e){let r=ea(e.ruleStack),i=this.getGAstProductions()[r];return new nS(i,e).startWalking()}}});function pb(t,e,r,n=!1){AS(r);let i=ma(this.recordingProdStack),a=Si(e)?e:e.DEF,s=new t({definition:[],idx:r});return n&&(s.separator=e.SEP),Ft(e,"MAX_LOOKAHEAD")&&(s.maxLookahead=e.MAX_LOOKAHEAD),this.recordingProdStack.push(s),a.call(this),i.definition.push(s),this.recordingProdStack.pop(),_S}function KYe(t,e){AS(e);let r=ma(this.recordingProdStack),n=Bt(t)===!1,i=n===!1?t:t.DEF,a=new Dn({definition:[],idx:e,ignoreAmbiguities:n&&t.IGNORE_AMBIGUITIES===!0});Ft(t,"MAX_LOOKAHEAD")&&(a.maxLookahead=t.MAX_LOOKAHEAD);let s=z2(i,l=>Si(l.GATE));return a.hasPredicates=s,r.definition.push(a),Ae(i,l=>{let u=new Pn({definition:[]});a.definition.push(u),Ft(l,"IGNORE_AMBIGUITIES")?u.ignoreAmbiguities=l.IGNORE_AMBIGUITIES:Ft(l,"GATE")&&(u.ignoreAmbiguities=!0),this.recordingProdStack.push(u),l.ALT.call(this),this.recordingProdStack.pop()}),_S}function Tpe(t){return t===0?"":`${t}`}function AS(t){if(t<0||t>bpe){let e=new Error(`Invalid DSL Method idx value: <${t}> - Idx value must be a none negative value smaller than ${bpe+1}`);throw e.KNOWN_RECORDER_ERROR=!0,e}}var _S,xpe,bpe,wpe,kpe,jYe,CS,Epe=N(()=>{"use strict";Yt();ps();tb();Vp();Up();js();pS();_S={description:"This Object indicates the Parser is during Recording Phase"};Object.freeze(_S);xpe=!0,bpe=Math.pow(2,8)-1,wpe=Pf({name:"RECORDING_PHASE_TOKEN",pattern:Zn.NA});ju([wpe]);kpe=Qu(wpe,`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(kpe);jYe={name:`This CSTNode indicates the Parser is in Recording Phase - See: https://chevrotain.io/docs/guide/internals.html#grammar-recording for details`,children:{}},CS=class{static{o(this,"GastRecorder")}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 A1}topLevelRuleRecord(e,r){try{let n=new fs({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 pb.call(this,dn,e,r)}atLeastOneInternalRecord(e,r){pb.call(this,Bn,r,e)}atLeastOneSepFirstInternalRecord(e,r){pb.call(this,Fn,r,e,xpe)}manyInternalRecord(e,r){pb.call(this,zr,r,e)}manySepFirstInternalRecord(e,r){pb.call(this,_n,r,e,xpe)}orInternalRecord(e,r){return KYe.call(this,e,r)}subruleInternalRecord(e,r,n){if(AS(r),!e||Ft(e,"ruleName")===!1){let l=new Error(` argument is invalid expecting a Parser method reference but got: <${JSON.stringify(e)}> - inside top level rule: <${this.recordingProdStack[0].name}>`);throw l.KNOWN_RECORDER_ERROR=!0,l}let i=ma(this.recordingProdStack),a=e.ruleName,s=new fn({idx:r,nonTerminalName:a,label:n?.LABEL,referencedRule:void 0});return i.definition.push(s),this.outputCst?jYe:_S}consumeInternalRecord(e,r,n){if(AS(r),!KO(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=ma(this.recordingProdStack),a=new Ar({idx:r,terminalType:e,label:n?.LABEL});return i.definition.push(a),kpe}};o(pb,"recordProd");o(KYe,"recordOrProd");o(Tpe,"getIdxSuffix");o(AS,"assertMethodIdxIsValid")});var DS,Spe=N(()=>{"use strict";Yt();d1();js();DS=class{static{o(this,"PerformanceTracer")}initPerformanceTracer(e){if(Ft(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=ms.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}=Zx(r),s=i>10?console.warn:console.log;return this.traceInitIndent time: ${i}ms`),this.traceInitIndent--,a}else return r()}}});function Cpe(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 Ape=N(()=>{"use strict";o(Cpe,"applyMixins")});function LS(t=void 0){return function(){return t}}var A1,ms,_1,Gi,mb,gb,js=N(()=>{"use strict";Yt();d1();nde();Up();b1();Jde();cP();ape();dpe();ppe();mpe();gpe();ype();vpe();Epe();Spe();Ape();cb();A1=Qu(yo,"",NaN,NaN,NaN,NaN,NaN,NaN);Object.freeze(A1);ms=Object.freeze({recoveryEnabled:!1,maxLookahead:3,dynamicTokensEnabled:!1,outputCst:!0,errorMessageProvider:Zu,nodeLocationTracking:"none",traceInitPerf:!1,skipValidations:!1}),_1=Object.freeze({recoveryValueFunc:o(()=>{},"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"})(Gi||(Gi={}));o(LS,"EMPTY_ALT");mb=class t{static{o(this,"Parser")}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",()=>{Jx(this)}),this.TRACE_INIT("Grammar Recording",()=>{try{this.enableRecording(),Ae(this.definedRulesNames,i=>{let s=this[i].originalGrammarAction,l;this.TRACE_INIT(`${i} Rule`,()=>{l=this.topLevelRuleRecord(i,s)}),this.gastProductionsCache[i]=l})}finally{this.disableRecording()}});let n=[];if(this.TRACE_INIT("Grammar Resolving",()=>{n=Qde({rules:kr(this.gastProductionsCache)}),this.definitionErrors=this.definitionErrors.concat(n)}),this.TRACE_INIT("Grammar Validations",()=>{if(mr(n)&&this.skipValidations===!1){let i=Zde({rules:kr(this.gastProductionsCache),tokenTypes:kr(this.tokensMap),errMsgProvider:Gl,grammarName:r}),a=Hde({lookaheadStrategy:this.lookaheadStrategy,rules:kr(this.gastProductionsCache),tokenTypes:kr(this.tokensMap),grammarName:r});this.definitionErrors=this.definitionErrors.concat(i,a)}}),mr(this.definitionErrors)&&(this.recoveryEnabled&&this.TRACE_INIT("computeAllProdsFollows",()=>{let i=rde(kr(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:kr(this.gastProductionsCache)}),this.preComputeLookaheadFunctions(kr(this.gastProductionsCache))})),!t.DEFER_DEFINITION_ERRORS_HANDLING&&!mr(this.definitionErrors))throw e=rt(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),Ft(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=Ft(r,"skipValidations")?r.skipValidations:ms.skipValidations}};mb.DEFER_DEFINITION_ERRORS_HANDLING=!1;Cpe(mb,[fS,gS,bS,TS,kS,wS,ES,SS,CS,DS]);gb=class extends mb{static{o(this,"EmbeddedActionsParser")}constructor(e,r=ms){let n=ln(r);n.outputCst=!1,super(e,n)}}});var _pe=N(()=>{"use strict";ps()});var Dpe=N(()=>{"use strict"});var Lpe=N(()=>{"use strict";_pe();Dpe()});var Rpe=N(()=>{"use strict";FO()});var Ff=N(()=>{"use strict";FO();js();tb();Up();E1();uP();b1();C1();QO();ps();ps();Lpe();Rpe()});function qp(t,e,r){return`${t.name}_${e}_${r}`}function Ope(t){let e={decisionMap:{},decisionStates:[],ruleToStartState:new Map,ruleToStopState:new Map,states:[]};nXe(e,t);let r=t.length;for(let n=0;nPpe(t,e,s));return N1(t,e,n,r,...i)}function cXe(t,e,r){let n=ia(t,e,r,{type:$f});zf(t,n);let i=N1(t,e,n,r,Wp(t,e,r));return uXe(t,e,r,i)}function Wp(t,e,r){let n=Zr(rt(r.definition,i=>Ppe(t,e,i)),i=>i!==void 0);return n.length===1?n[0]:n.length===0?void 0:fXe(t,n)}function Bpe(t,e,r,n,i){let a=n.left,s=n.right,l=ia(t,e,r,{type:rXe});zf(t,l);let u=ia(t,e,r,{type:Ipe});return a.loopback=l,u.loopback=l,t.decisionMap[qp(e,i?"RepetitionMandatoryWithSeparator":"RepetitionMandatory",r.idx)]=l,Di(s,l),i===void 0?(Di(l,a),Di(l,u)):(Di(l,u),Di(l,i.left),Di(i.right,a)),{left:a,right:u}}function Fpe(t,e,r,n,i){let a=n.left,s=n.right,l=ia(t,e,r,{type:tXe});zf(t,l);let u=ia(t,e,r,{type:Ipe}),h=ia(t,e,r,{type:eXe});return l.loopback=h,u.loopback=h,Di(l,a),Di(l,u),Di(s,h),i!==void 0?(Di(h,u),Di(h,i.left),Di(i.right,a)):Di(h,l),t.decisionMap[qp(e,i?"RepetitionWithSeparator":"Repetition",r.idx)]=l,{left:l,right:u}}function uXe(t,e,r,n){let i=n.left,a=n.right;return Di(i,a),t.decisionMap[qp(e,"Option",r.idx)]=i,n}function zf(t,e){return t.decisionStates.push(e),e.decision=t.decisionStates.length-1,e.decision}function N1(t,e,r,n,...i){let a=ia(t,e,n,{type:JYe,start:r});r.end=a;for(let l of i)l!==void 0?(Di(r,l.left),Di(l.right,a)):Di(r,a);let s={left:r,right:a};return t.decisionMap[qp(e,hXe(n),n.idx)]=r,s}function hXe(t){if(t instanceof Dn)return"Alternation";if(t instanceof dn)return"Option";if(t instanceof zr)return"Repetition";if(t instanceof _n)return"RepetitionWithSeparator";if(t instanceof Bn)return"RepetitionMandatory";if(t instanceof Fn)return"RepetitionMandatoryWithSeparator";throw new Error("Invalid production type encountered")}function fXe(t,e){let r=e.length;for(let a=0;a{"use strict";Vm();ER();Ff();o(qp,"buildATNKey");$f=1,ZYe=2,Npe=4,Mpe=5,R1=7,JYe=8,eXe=9,tXe=10,rXe=11,Ipe=12,yb=class{static{o(this,"AbstractTransition")}constructor(e){this.target=e}isEpsilon(){return!1}},D1=class extends yb{static{o(this,"AtomTransition")}constructor(e,r){super(e),this.tokenType=r}},vb=class extends yb{static{o(this,"EpsilonTransition")}constructor(e){super(e)}isEpsilon(){return!0}},L1=class extends yb{static{o(this,"RuleTransition")}constructor(e,r,n){super(e),this.rule=r,this.followState=n}isEpsilon(){return!0}};o(Ope,"createATN");o(nXe,"createRuleStartAndStopATNStates");o(Ppe,"atom");o(iXe,"repetition");o(aXe,"repetitionSep");o(sXe,"repetitionMandatory");o(oXe,"repetitionMandatorySep");o(lXe,"alternation");o(cXe,"option");o(Wp,"block");o(Bpe,"plus");o(Fpe,"star");o(uXe,"optional");o(zf,"defineDecisionState");o(N1,"makeAlts");o(hXe,"getProdType");o(fXe,"makeBlock");o(xP,"tokenRef");o(dXe,"ruleRef");o(pXe,"buildRuleHandle");o(Di,"epsilon");o(ia,"newState");o(bP,"addTransition");o(mXe,"removeState")});function TP(t,e=!0){return`${e?`a${t.alt}`:""}s${t.state.stateNumber}:${t.stack.map(r=>r.stateNumber.toString()).join("_")}`}var xb,M1,zpe=N(()=>{"use strict";Vm();xb={},M1=class{static{o(this,"ATNConfigSet")}constructor(){this.map={},this.configs=[]}get size(){return this.configs.length}finalize(){this.map={}}add(e){let r=TP(e);r in this.map||(this.map[r]=this.configs.length,this.configs.push(e))}get elements(){return this.configs}get alts(){return rt(this.configs,e=>e.alt)}get key(){let e="";for(let r in this.map)e+=r+":";return e}};o(TP,"getATNConfigKey")});function gXe(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 Vpe(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 l of s)if(r.has(l)){if(!i.has(l))return!1}else r.add(l),i.add(l)}}return!0}function yXe(t){let e=t.decisionStates.length,r=Array(e);for(let n=0;nKu(i)).join(", "),r=t.production.idx===0?"":t.production.idx,n=`Ambiguous Alternatives Detected: <${t.ambiguityIndices.join(", ")}> in <${wXe(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 wXe(t){if(t instanceof fn)return"SUBRULE";if(t instanceof dn)return"OPTION";if(t instanceof Dn)return"OR";if(t instanceof Bn)return"AT_LEAST_ONE";if(t instanceof Fn)return"AT_LEAST_ONE_SEP";if(t instanceof _n)return"MANY_SEP";if(t instanceof zr)return"MANY";if(t instanceof Ar)return"CONSUME";throw Error("non exhaustive match")}function kXe(t,e,r){let n=ga(e.configs.elements,a=>a.state.transitions),i=Uae(n.filter(a=>a instanceof D1).map(a=>a.tokenType),a=>a.tokenTypeIdx);return{actualToken:r,possibleTokenTypes:i,tokenPath:t}}function EXe(t,e){return t.edges[e.tokenTypeIdx]}function SXe(t,e,r){let n=new M1,i=[];for(let s of t.elements){if(r.is(s.alt)===!1)continue;if(s.state.type===R1){i.push(s);continue}let l=s.state.transitions.length;for(let u=0;u0&&!LXe(a))for(let s of i)a.add(s);return a}function CXe(t,e){if(t instanceof D1&&nb(e,t.tokenType))return t.target}function AXe(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 Hpe(t){return{configs:t,edges:{},isAcceptState:!1,prediction:-1}}function Upe(t,e,r,n){return n=qpe(t,n),e.edges[r.tokenTypeIdx]=n,n}function qpe(t,e){if(e===xb)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 _Xe(t){let e=new M1,r=t.transitions.length;for(let n=0;n0){let i=[...t.stack],s={state:i.pop(),alt:t.alt,stack:i};NS(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 OXe(t){for(let e of Array.from(t.values()))if(Object.keys(e).length===1)return!0;return!1}var RS,Gpe,bb,Wpe=N(()=>{"use strict";Ff();$pe();zpe();NR();CR();Hae();Vm();Lw();ak();uk();PR();o(gXe,"createDFACache");RS=class{static{o(this,"PredicateSet")}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=Ope(e.rules),this.dfas=yXe(this.atn)}validateAmbiguousAlternationAlternatives(){return[]}validateEmptyOrAlternatives(){return[]}buildLookaheadForAlternation(e){let{prodOccurrence:r,rule:n,hasPredicates:i,dynamicTokensEnabled:a}=e,s=this.dfas,l=this.logging,u=qp(n,"Alternation",r),f=this.atn.decisionMap[u].decision,d=rt(cS({maxLookahead:1,occurrence:r,prodType:"Alternation",rule:n}),p=>rt(p,m=>m[0]));if(Vpe(d,!1)&&!a){let p=Jr(d,(m,g,y)=>(Ae(g,v=>{v&&(m[v.tokenTypeIdx]=y,Ae(v.categoryMatches,x=>{m[x]=y}))}),m),{});return i?function(m){var g;let y=this.LA(1),v=p[y.tokenTypeIdx];if(m!==void 0&&v!==void 0){let x=(g=m[v])===null||g===void 0?void 0:g.GATE;if(x!==void 0&&x.call(this)===!1)return}return v}:function(){let m=this.LA(1);return p[m.tokenTypeIdx]}}else return i?function(p){let m=new RS,g=p===void 0?0:p.length;for(let v=0;vrt(p,m=>m[0]));if(Vpe(d)&&d[0][0]&&!a){let p=d[0],m=Qr(p);if(m.length===1&&mr(m[0].categoryMatches)){let y=m[0].tokenTypeIdx;return function(){return this.LA(1).tokenTypeIdx===y}}else{let g=Jr(m,(y,v)=>(v!==void 0&&(y[v.tokenTypeIdx]=!0,Ae(v.categoryMatches,x=>{y[x]=!0})),y),{});return function(){let y=this.LA(1);return g[y.tokenTypeIdx]===!0}}}return function(){let p=wP.call(this,s,f,Gpe,l);return typeof p=="object"?!1:p===0}}};o(Vpe,"isLL1Sequence");o(yXe,"initATNSimulator");o(wP,"adaptivePredict");o(vXe,"performLookahead");o(xXe,"computeLookaheadTarget");o(bXe,"reportLookaheadAmbiguity");o(TXe,"buildAmbiguityError");o(wXe,"getProductionDslName");o(kXe,"buildAdaptivePredictError");o(EXe,"getExistingTargetState");o(SXe,"computeReachSet");o(CXe,"getReachableTarget");o(AXe,"getUniqueAlt");o(Hpe,"newDFAState");o(Upe,"addDFAEdge");o(qpe,"addDFAState");o(_Xe,"computeStartState");o(NS,"closure");o(DXe,"getEpsilonTarget");o(LXe,"hasConfigInRuleStopState");o(RXe,"allConfigsInRuleStopStates");o(NXe,"hasConflictTerminatingPrediction");o(MXe,"getConflictingAltSets");o(IXe,"hasConflictingAltSet");o(OXe,"hasStateAssociatedWithOneAlt")});var Ype=N(()=>{"use strict";Wpe()});var Xpe,kP,jpe,MS,tn,Gr,IS,Kpe,EP,Qpe,Zpe,Jpe,e0e,SP,t0e,r0e,n0e,OS,I1,O1,CP,P1,i0e,AP,_P,DP,LP,RP,a0e,s0e,NP,o0e,MP,Tb,l0e,c0e,u0e,h0e,f0e,d0e,p0e,m0e,PS,g0e,y0e,v0e,x0e,b0e,T0e,w0e,k0e,E0e,S0e,C0e,BS,A0e,_0e,D0e,L0e,R0e,N0e,M0e,I0e,O0e,P0e,B0e,F0e,$0e,IP,OP,z0e,G0e,V0e,U0e,H0e,q0e,W0e,Y0e,X0e,PP,Ge,BP=N(()=>{"use strict";(function(t){function e(r){return typeof r=="string"}o(e,"is"),t.is=e})(Xpe||(Xpe={}));(function(t){function e(r){return typeof r=="string"}o(e,"is"),t.is=e})(kP||(kP={}));(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}o(e,"is"),t.is=e})(jpe||(jpe={}));(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}o(e,"is"),t.is=e})(MS||(MS={}));(function(t){function e(n,i){return n===Number.MAX_VALUE&&(n=MS.MAX_VALUE),i===Number.MAX_VALUE&&(i=MS.MAX_VALUE),{line:n,character:i}}o(e,"create"),t.create=e;function r(n){let i=n;return Ge.objectLiteral(i)&&Ge.uinteger(i.line)&&Ge.uinteger(i.character)}o(r,"is"),t.is=r})(tn||(tn={}));(function(t){function e(n,i,a,s){if(Ge.uinteger(n)&&Ge.uinteger(i)&&Ge.uinteger(a)&&Ge.uinteger(s))return{start:tn.create(n,i),end:tn.create(a,s)};if(tn.is(n)&&tn.is(i))return{start:n,end:i};throw new Error(`Range#create called with invalid arguments[${n}, ${i}, ${a}, ${s}]`)}o(e,"create"),t.create=e;function r(n){let i=n;return Ge.objectLiteral(i)&&tn.is(i.start)&&tn.is(i.end)}o(r,"is"),t.is=r})(Gr||(Gr={}));(function(t){function e(n,i){return{uri:n,range:i}}o(e,"create"),t.create=e;function r(n){let i=n;return Ge.objectLiteral(i)&&Gr.is(i.range)&&(Ge.string(i.uri)||Ge.undefined(i.uri))}o(r,"is"),t.is=r})(IS||(IS={}));(function(t){function e(n,i,a,s){return{targetUri:n,targetRange:i,targetSelectionRange:a,originSelectionRange:s}}o(e,"create"),t.create=e;function r(n){let i=n;return Ge.objectLiteral(i)&&Gr.is(i.targetRange)&&Ge.string(i.targetUri)&&Gr.is(i.targetSelectionRange)&&(Gr.is(i.originSelectionRange)||Ge.undefined(i.originSelectionRange))}o(r,"is"),t.is=r})(Kpe||(Kpe={}));(function(t){function e(n,i,a,s){return{red:n,green:i,blue:a,alpha:s}}o(e,"create"),t.create=e;function r(n){let i=n;return Ge.objectLiteral(i)&&Ge.numberRange(i.red,0,1)&&Ge.numberRange(i.green,0,1)&&Ge.numberRange(i.blue,0,1)&&Ge.numberRange(i.alpha,0,1)}o(r,"is"),t.is=r})(EP||(EP={}));(function(t){function e(n,i){return{range:n,color:i}}o(e,"create"),t.create=e;function r(n){let i=n;return Ge.objectLiteral(i)&&Gr.is(i.range)&&EP.is(i.color)}o(r,"is"),t.is=r})(Qpe||(Qpe={}));(function(t){function e(n,i,a){return{label:n,textEdit:i,additionalTextEdits:a}}o(e,"create"),t.create=e;function r(n){let i=n;return Ge.objectLiteral(i)&&Ge.string(i.label)&&(Ge.undefined(i.textEdit)||O1.is(i))&&(Ge.undefined(i.additionalTextEdits)||Ge.typedArray(i.additionalTextEdits,O1.is))}o(r,"is"),t.is=r})(Zpe||(Zpe={}));(function(t){t.Comment="comment",t.Imports="imports",t.Region="region"})(Jpe||(Jpe={}));(function(t){function e(n,i,a,s,l,u){let h={startLine:n,endLine:i};return Ge.defined(a)&&(h.startCharacter=a),Ge.defined(s)&&(h.endCharacter=s),Ge.defined(l)&&(h.kind=l),Ge.defined(u)&&(h.collapsedText=u),h}o(e,"create"),t.create=e;function r(n){let i=n;return Ge.objectLiteral(i)&&Ge.uinteger(i.startLine)&&Ge.uinteger(i.startLine)&&(Ge.undefined(i.startCharacter)||Ge.uinteger(i.startCharacter))&&(Ge.undefined(i.endCharacter)||Ge.uinteger(i.endCharacter))&&(Ge.undefined(i.kind)||Ge.string(i.kind))}o(r,"is"),t.is=r})(e0e||(e0e={}));(function(t){function e(n,i){return{location:n,message:i}}o(e,"create"),t.create=e;function r(n){let i=n;return Ge.defined(i)&&IS.is(i.location)&&Ge.string(i.message)}o(r,"is"),t.is=r})(SP||(SP={}));(function(t){t.Error=1,t.Warning=2,t.Information=3,t.Hint=4})(t0e||(t0e={}));(function(t){t.Unnecessary=1,t.Deprecated=2})(r0e||(r0e={}));(function(t){function e(r){let n=r;return Ge.objectLiteral(n)&&Ge.string(n.href)}o(e,"is"),t.is=e})(n0e||(n0e={}));(function(t){function e(n,i,a,s,l,u){let h={range:n,message:i};return Ge.defined(a)&&(h.severity=a),Ge.defined(s)&&(h.code=s),Ge.defined(l)&&(h.source=l),Ge.defined(u)&&(h.relatedInformation=u),h}o(e,"create"),t.create=e;function r(n){var i;let a=n;return Ge.defined(a)&&Gr.is(a.range)&&Ge.string(a.message)&&(Ge.number(a.severity)||Ge.undefined(a.severity))&&(Ge.integer(a.code)||Ge.string(a.code)||Ge.undefined(a.code))&&(Ge.undefined(a.codeDescription)||Ge.string((i=a.codeDescription)===null||i===void 0?void 0:i.href))&&(Ge.string(a.source)||Ge.undefined(a.source))&&(Ge.undefined(a.relatedInformation)||Ge.typedArray(a.relatedInformation,SP.is))}o(r,"is"),t.is=r})(OS||(OS={}));(function(t){function e(n,i,...a){let s={title:n,command:i};return Ge.defined(a)&&a.length>0&&(s.arguments=a),s}o(e,"create"),t.create=e;function r(n){let i=n;return Ge.defined(i)&&Ge.string(i.title)&&Ge.string(i.command)}o(r,"is"),t.is=r})(I1||(I1={}));(function(t){function e(a,s){return{range:a,newText:s}}o(e,"replace"),t.replace=e;function r(a,s){return{range:{start:a,end:a},newText:s}}o(r,"insert"),t.insert=r;function n(a){return{range:a,newText:""}}o(n,"del"),t.del=n;function i(a){let s=a;return Ge.objectLiteral(s)&&Ge.string(s.newText)&&Gr.is(s.range)}o(i,"is"),t.is=i})(O1||(O1={}));(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}o(e,"create"),t.create=e;function r(n){let i=n;return Ge.objectLiteral(i)&&Ge.string(i.label)&&(Ge.boolean(i.needsConfirmation)||i.needsConfirmation===void 0)&&(Ge.string(i.description)||i.description===void 0)}o(r,"is"),t.is=r})(CP||(CP={}));(function(t){function e(r){let n=r;return Ge.string(n)}o(e,"is"),t.is=e})(P1||(P1={}));(function(t){function e(a,s,l){return{range:a,newText:s,annotationId:l}}o(e,"replace"),t.replace=e;function r(a,s,l){return{range:{start:a,end:a},newText:s,annotationId:l}}o(r,"insert"),t.insert=r;function n(a,s){return{range:a,newText:"",annotationId:s}}o(n,"del"),t.del=n;function i(a){let s=a;return O1.is(s)&&(CP.is(s.annotationId)||P1.is(s.annotationId))}o(i,"is"),t.is=i})(i0e||(i0e={}));(function(t){function e(n,i){return{textDocument:n,edits:i}}o(e,"create"),t.create=e;function r(n){let i=n;return Ge.defined(i)&&NP.is(i.textDocument)&&Array.isArray(i.edits)}o(r,"is"),t.is=r})(AP||(AP={}));(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}o(e,"create"),t.create=e;function r(n){let i=n;return i&&i.kind==="create"&&Ge.string(i.uri)&&(i.options===void 0||(i.options.overwrite===void 0||Ge.boolean(i.options.overwrite))&&(i.options.ignoreIfExists===void 0||Ge.boolean(i.options.ignoreIfExists)))&&(i.annotationId===void 0||P1.is(i.annotationId))}o(r,"is"),t.is=r})(_P||(_P={}));(function(t){function e(n,i,a,s){let l={kind:"rename",oldUri:n,newUri:i};return a!==void 0&&(a.overwrite!==void 0||a.ignoreIfExists!==void 0)&&(l.options=a),s!==void 0&&(l.annotationId=s),l}o(e,"create"),t.create=e;function r(n){let i=n;return i&&i.kind==="rename"&&Ge.string(i.oldUri)&&Ge.string(i.newUri)&&(i.options===void 0||(i.options.overwrite===void 0||Ge.boolean(i.options.overwrite))&&(i.options.ignoreIfExists===void 0||Ge.boolean(i.options.ignoreIfExists)))&&(i.annotationId===void 0||P1.is(i.annotationId))}o(r,"is"),t.is=r})(DP||(DP={}));(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}o(e,"create"),t.create=e;function r(n){let i=n;return i&&i.kind==="delete"&&Ge.string(i.uri)&&(i.options===void 0||(i.options.recursive===void 0||Ge.boolean(i.options.recursive))&&(i.options.ignoreIfNotExists===void 0||Ge.boolean(i.options.ignoreIfNotExists)))&&(i.annotationId===void 0||P1.is(i.annotationId))}o(r,"is"),t.is=r})(LP||(LP={}));(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=>Ge.string(i.kind)?_P.is(i)||DP.is(i)||LP.is(i):AP.is(i)))}o(e,"is"),t.is=e})(RP||(RP={}));(function(t){function e(n){return{uri:n}}o(e,"create"),t.create=e;function r(n){let i=n;return Ge.defined(i)&&Ge.string(i.uri)}o(r,"is"),t.is=r})(a0e||(a0e={}));(function(t){function e(n,i){return{uri:n,version:i}}o(e,"create"),t.create=e;function r(n){let i=n;return Ge.defined(i)&&Ge.string(i.uri)&&Ge.integer(i.version)}o(r,"is"),t.is=r})(s0e||(s0e={}));(function(t){function e(n,i){return{uri:n,version:i}}o(e,"create"),t.create=e;function r(n){let i=n;return Ge.defined(i)&&Ge.string(i.uri)&&(i.version===null||Ge.integer(i.version))}o(r,"is"),t.is=r})(NP||(NP={}));(function(t){function e(n,i,a,s){return{uri:n,languageId:i,version:a,text:s}}o(e,"create"),t.create=e;function r(n){let i=n;return Ge.defined(i)&&Ge.string(i.uri)&&Ge.string(i.languageId)&&Ge.integer(i.version)&&Ge.string(i.text)}o(r,"is"),t.is=r})(o0e||(o0e={}));(function(t){t.PlainText="plaintext",t.Markdown="markdown";function e(r){let n=r;return n===t.PlainText||n===t.Markdown}o(e,"is"),t.is=e})(MP||(MP={}));(function(t){function e(r){let n=r;return Ge.objectLiteral(r)&&MP.is(n.kind)&&Ge.string(n.value)}o(e,"is"),t.is=e})(Tb||(Tb={}));(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})(l0e||(l0e={}));(function(t){t.PlainText=1,t.Snippet=2})(c0e||(c0e={}));(function(t){t.Deprecated=1})(u0e||(u0e={}));(function(t){function e(n,i,a){return{newText:n,insert:i,replace:a}}o(e,"create"),t.create=e;function r(n){let i=n;return i&&Ge.string(i.newText)&&Gr.is(i.insert)&&Gr.is(i.replace)}o(r,"is"),t.is=r})(h0e||(h0e={}));(function(t){t.asIs=1,t.adjustIndentation=2})(f0e||(f0e={}));(function(t){function e(r){let n=r;return n&&(Ge.string(n.detail)||n.detail===void 0)&&(Ge.string(n.description)||n.description===void 0)}o(e,"is"),t.is=e})(d0e||(d0e={}));(function(t){function e(r){return{label:r}}o(e,"create"),t.create=e})(p0e||(p0e={}));(function(t){function e(r,n){return{items:r||[],isIncomplete:!!n}}o(e,"create"),t.create=e})(m0e||(m0e={}));(function(t){function e(n){return n.replace(/[\\`*_{}[\]()#+\-.!]/g,"\\$&")}o(e,"fromPlainText"),t.fromPlainText=e;function r(n){let i=n;return Ge.string(i)||Ge.objectLiteral(i)&&Ge.string(i.language)&&Ge.string(i.value)}o(r,"is"),t.is=r})(PS||(PS={}));(function(t){function e(r){let n=r;return!!n&&Ge.objectLiteral(n)&&(Tb.is(n.contents)||PS.is(n.contents)||Ge.typedArray(n.contents,PS.is))&&(r.range===void 0||Gr.is(r.range))}o(e,"is"),t.is=e})(g0e||(g0e={}));(function(t){function e(r,n){return n?{label:r,documentation:n}:{label:r}}o(e,"create"),t.create=e})(y0e||(y0e={}));(function(t){function e(r,n,...i){let a={label:r};return Ge.defined(n)&&(a.documentation=n),Ge.defined(i)?a.parameters=i:a.parameters=[],a}o(e,"create"),t.create=e})(v0e||(v0e={}));(function(t){t.Text=1,t.Read=2,t.Write=3})(x0e||(x0e={}));(function(t){function e(r,n){let i={range:r};return Ge.number(n)&&(i.kind=n),i}o(e,"create"),t.create=e})(b0e||(b0e={}));(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})(T0e||(T0e={}));(function(t){t.Deprecated=1})(w0e||(w0e={}));(function(t){function e(r,n,i,a,s){let l={name:r,kind:n,location:{uri:a,range:i}};return s&&(l.containerName=s),l}o(e,"create"),t.create=e})(k0e||(k0e={}));(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}}}o(e,"create"),t.create=e})(E0e||(E0e={}));(function(t){function e(n,i,a,s,l,u){let h={name:n,detail:i,kind:a,range:s,selectionRange:l};return u!==void 0&&(h.children=u),h}o(e,"create"),t.create=e;function r(n){let i=n;return i&&Ge.string(i.name)&&Ge.number(i.kind)&&Gr.is(i.range)&&Gr.is(i.selectionRange)&&(i.detail===void 0||Ge.string(i.detail))&&(i.deprecated===void 0||Ge.boolean(i.deprecated))&&(i.children===void 0||Array.isArray(i.children))&&(i.tags===void 0||Array.isArray(i.tags))}o(r,"is"),t.is=r})(S0e||(S0e={}));(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"})(C0e||(C0e={}));(function(t){t.Invoked=1,t.Automatic=2})(BS||(BS={}));(function(t){function e(n,i,a){let s={diagnostics:n};return i!=null&&(s.only=i),a!=null&&(s.triggerKind=a),s}o(e,"create"),t.create=e;function r(n){let i=n;return Ge.defined(i)&&Ge.typedArray(i.diagnostics,OS.is)&&(i.only===void 0||Ge.typedArray(i.only,Ge.string))&&(i.triggerKind===void 0||i.triggerKind===BS.Invoked||i.triggerKind===BS.Automatic)}o(r,"is"),t.is=r})(A0e||(A0e={}));(function(t){function e(n,i,a){let s={title:n},l=!0;return typeof i=="string"?(l=!1,s.kind=i):I1.is(i)?s.command=i:s.edit=i,l&&a!==void 0&&(s.kind=a),s}o(e,"create"),t.create=e;function r(n){let i=n;return i&&Ge.string(i.title)&&(i.diagnostics===void 0||Ge.typedArray(i.diagnostics,OS.is))&&(i.kind===void 0||Ge.string(i.kind))&&(i.edit!==void 0||i.command!==void 0)&&(i.command===void 0||I1.is(i.command))&&(i.isPreferred===void 0||Ge.boolean(i.isPreferred))&&(i.edit===void 0||RP.is(i.edit))}o(r,"is"),t.is=r})(_0e||(_0e={}));(function(t){function e(n,i){let a={range:n};return Ge.defined(i)&&(a.data=i),a}o(e,"create"),t.create=e;function r(n){let i=n;return Ge.defined(i)&&Gr.is(i.range)&&(Ge.undefined(i.command)||I1.is(i.command))}o(r,"is"),t.is=r})(D0e||(D0e={}));(function(t){function e(n,i){return{tabSize:n,insertSpaces:i}}o(e,"create"),t.create=e;function r(n){let i=n;return Ge.defined(i)&&Ge.uinteger(i.tabSize)&&Ge.boolean(i.insertSpaces)}o(r,"is"),t.is=r})(L0e||(L0e={}));(function(t){function e(n,i,a){return{range:n,target:i,data:a}}o(e,"create"),t.create=e;function r(n){let i=n;return Ge.defined(i)&&Gr.is(i.range)&&(Ge.undefined(i.target)||Ge.string(i.target))}o(r,"is"),t.is=r})(R0e||(R0e={}));(function(t){function e(n,i){return{range:n,parent:i}}o(e,"create"),t.create=e;function r(n){let i=n;return Ge.objectLiteral(i)&&Gr.is(i.range)&&(i.parent===void 0||t.is(i.parent))}o(r,"is"),t.is=r})(N0e||(N0e={}));(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"})(M0e||(M0e={}));(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"})(I0e||(I0e={}));(function(t){function e(r){let n=r;return Ge.objectLiteral(n)&&(n.resultId===void 0||typeof n.resultId=="string")&&Array.isArray(n.data)&&(n.data.length===0||typeof n.data[0]=="number")}o(e,"is"),t.is=e})(O0e||(O0e={}));(function(t){function e(n,i){return{range:n,text:i}}o(e,"create"),t.create=e;function r(n){let i=n;return i!=null&&Gr.is(i.range)&&Ge.string(i.text)}o(r,"is"),t.is=r})(P0e||(P0e={}));(function(t){function e(n,i,a){return{range:n,variableName:i,caseSensitiveLookup:a}}o(e,"create"),t.create=e;function r(n){let i=n;return i!=null&&Gr.is(i.range)&&Ge.boolean(i.caseSensitiveLookup)&&(Ge.string(i.variableName)||i.variableName===void 0)}o(r,"is"),t.is=r})(B0e||(B0e={}));(function(t){function e(n,i){return{range:n,expression:i}}o(e,"create"),t.create=e;function r(n){let i=n;return i!=null&&Gr.is(i.range)&&(Ge.string(i.expression)||i.expression===void 0)}o(r,"is"),t.is=r})(F0e||(F0e={}));(function(t){function e(n,i){return{frameId:n,stoppedLocation:i}}o(e,"create"),t.create=e;function r(n){let i=n;return Ge.defined(i)&&Gr.is(n.stoppedLocation)}o(r,"is"),t.is=r})($0e||($0e={}));(function(t){t.Type=1,t.Parameter=2;function e(r){return r===1||r===2}o(e,"is"),t.is=e})(IP||(IP={}));(function(t){function e(n){return{value:n}}o(e,"create"),t.create=e;function r(n){let i=n;return Ge.objectLiteral(i)&&(i.tooltip===void 0||Ge.string(i.tooltip)||Tb.is(i.tooltip))&&(i.location===void 0||IS.is(i.location))&&(i.command===void 0||I1.is(i.command))}o(r,"is"),t.is=r})(OP||(OP={}));(function(t){function e(n,i,a){let s={position:n,label:i};return a!==void 0&&(s.kind=a),s}o(e,"create"),t.create=e;function r(n){let i=n;return Ge.objectLiteral(i)&&tn.is(i.position)&&(Ge.string(i.label)||Ge.typedArray(i.label,OP.is))&&(i.kind===void 0||IP.is(i.kind))&&i.textEdits===void 0||Ge.typedArray(i.textEdits,O1.is)&&(i.tooltip===void 0||Ge.string(i.tooltip)||Tb.is(i.tooltip))&&(i.paddingLeft===void 0||Ge.boolean(i.paddingLeft))&&(i.paddingRight===void 0||Ge.boolean(i.paddingRight))}o(r,"is"),t.is=r})(z0e||(z0e={}));(function(t){function e(r){return{kind:"snippet",value:r}}o(e,"createSnippet"),t.createSnippet=e})(G0e||(G0e={}));(function(t){function e(r,n,i,a){return{insertText:r,filterText:n,range:i,command:a}}o(e,"create"),t.create=e})(V0e||(V0e={}));(function(t){function e(r){return{items:r}}o(e,"create"),t.create=e})(U0e||(U0e={}));(function(t){t.Invoked=0,t.Automatic=1})(H0e||(H0e={}));(function(t){function e(r,n){return{range:r,text:n}}o(e,"create"),t.create=e})(q0e||(q0e={}));(function(t){function e(r,n){return{triggerKind:r,selectedCompletionInfo:n}}o(e,"create"),t.create=e})(W0e||(W0e={}));(function(t){function e(r){let n=r;return Ge.objectLiteral(n)&&kP.is(n.uri)&&Ge.string(n.name)}o(e,"is"),t.is=e})(Y0e||(Y0e={}));(function(t){function e(a,s,l,u){return new PP(a,s,l,u)}o(e,"create"),t.create=e;function r(a){let s=a;return!!(Ge.defined(s)&&Ge.string(s.uri)&&(Ge.undefined(s.languageId)||Ge.string(s.languageId))&&Ge.uinteger(s.lineCount)&&Ge.func(s.getText)&&Ge.func(s.positionAt)&&Ge.func(s.offsetAt))}o(r,"is"),t.is=r;function n(a,s){let l=a.getText(),u=i(s,(f,d)=>{let p=f.range.start.line-d.range.start.line;return p===0?f.range.start.character-d.range.start.character:p}),h=l.length;for(let f=u.length-1;f>=0;f--){let d=u[f],p=a.offsetAt(d.range.start),m=a.offsetAt(d.range.end);if(m<=h)l=l.substring(0,p)+d.newText+l.substring(m,l.length);else throw new Error("Overlapping edit");h=p}return l}o(n,"applyEdits"),t.applyEdits=n;function i(a,s){if(a.length<=1)return a;let l=a.length/2|0,u=a.slice(0,l),h=a.slice(l);i(u,s),i(h,s);let f=0,d=0,p=0;for(;f0&&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 tn.create(0,e);for(;ne?i=s:n=s+1}let a=n-1;return tn.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"}o(n,"undefined"),t.undefined=n;function i(m){return m===!0||m===!1}o(i,"boolean"),t.boolean=i;function a(m){return e.call(m)==="[object String]"}o(a,"string"),t.string=a;function s(m){return e.call(m)==="[object Number]"}o(s,"number"),t.number=s;function l(m,g,y){return e.call(m)==="[object Number]"&&g<=m&&m<=y}o(l,"numberRange"),t.numberRange=l;function u(m){return e.call(m)==="[object Number]"&&-2147483648<=m&&m<=2147483647}o(u,"integer"),t.integer=u;function h(m){return e.call(m)==="[object Number]"&&0<=m&&m<=2147483647}o(h,"uinteger"),t.uinteger=h;function f(m){return e.call(m)==="[object Function]"}o(f,"func"),t.func=f;function d(m){return m!==null&&typeof m=="object"}o(d,"objectLiteral"),t.objectLiteral=d;function p(m,g){return Array.isArray(m)&&m.every(g)}o(p,"typedArray"),t.typedArray=p})(Ge||(Ge={}))});var wb,kb,Yp,Xp,FP,B1,FS=N(()=>{"use strict";BP();Bl();wb=class{static{o(this,"CstNodeBuilder")}constructor(){this.nodeStack=[]}get current(){var e;return(e=this.nodeStack[this.nodeStack.length-1])!==null&&e!==void 0?e:this.rootNode}buildRootNode(e){return this.rootNode=new B1(e),this.rootNode.root=this.rootNode,this.nodeStack=[this.rootNode],this.rootNode}buildCompositeNode(e){let r=new Xp;return r.grammarSource=e,r.root=this.rootNode,this.current.content.push(r),this.nodeStack.push(r),r}buildLeafNode(e,r){let n=new Yp(e.startOffset,e.image.length,xg(e),e.tokenType,!r);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)}}addHiddenNodes(e){let r=[];for(let a of e){let s=new Yp(a.startOffset,a.image.length,xg(a),a.tokenType,!0);s.root=this.rootNode,r.push(s)}let n=this.current,i=!1;if(n.content.length>0){n.content.push(...r);return}for(;n.container;){let a=n.container.content.indexOf(n);if(a>0){n.container.content.splice(a,0,...r),i=!0;break}n=n.container}i||this.rootNode.content.unshift(...r)}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)}},kb=class{static{o(this,"AbstractCstNode")}get parent(){return this.container}get feature(){return this.grammarSource}get hidden(){return!1}get astNode(){var e,r;let n=typeof((e=this._astNode)===null||e===void 0?void 0:e.$type)=="string"?this._astNode:(r=this.container)===null||r===void 0?void 0:r.astNode;if(!n)throw new Error("This node has no associated AST element");return n}set astNode(e){this._astNode=e}get element(){return this.astNode}get text(){return this.root.fullText.substring(this.offset,this.end)}},Yp=class extends kb{static{o(this,"LeafCstNodeImpl")}get offset(){return this._offset}get length(){return this._length}get end(){return this._offset+this._length}get hidden(){return this._hidden}get tokenType(){return this._tokenType}get range(){return this._range}constructor(e,r,n,i,a=!1){super(),this._hidden=a,this._offset=e,this._tokenType=i,this._length=r,this._range=n}},Xp=class extends kb{static{o(this,"CompositeCstNodeImpl")}constructor(){super(...arguments),this.content=new FP(this)}get children(){return this.content}get offset(){var e,r;return(r=(e=this.firstNonHiddenNode)===null||e===void 0?void 0:e.offset)!==null&&r!==void 0?r:0}get length(){return this.end-this.offset}get end(){var e,r;return(r=(e=this.lastNonHiddenNode)===null||e===void 0?void 0:e.end)!==null&&r!==void 0?r:0}get range(){let e=this.firstNonHiddenNode,r=this.lastNonHiddenNode;if(e&&r){if(this._rangeCache===void 0){let{range:n}=e,{range:i}=r;this._rangeCache={start:n.start,end:i.end.line=0;e--){let r=this.content[e];if(!r.hidden)return r}return this.content[this.content.length-1]}},FP=class t extends Array{static{o(this,"CstNodeContainer")}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}},B1=class extends Xp{static{o(this,"RootCstNodeImpl")}get text(){return this._text.substring(this.offset,this.end)}get fullText(){return this._text}constructor(e){super(),this._text="",this._text=e??""}}});function $P(t){return t.$type===$S}var $S,j0e,K0e,Eb,Sb,zS,F1,Cb,PXe,zP,Ab=N(()=>{"use strict";Ff();Ype();Hc();zl();hs();FS();$S=Symbol("Datatype");o($P,"isDataTypeNode");j0e="\u200B",K0e=o(t=>t.endsWith(j0e)?t:t+j0e,"withRuleSuffix"),Eb=class{static{o(this,"AbstractLangiumParser")}constructor(e){this._unorderedGroups=new Map,this.allRules=new Map,this.lexer=e.parser.Lexer;let r=this.lexer.definition,n=e.LanguageMetaData.mode==="production";this.wrapper=new zP(r,Object.assign(Object.assign({},e.parser.ParserConfig),{skipValidations:n,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)}getRule(e){return this.allRules.get(e)}isRecording(){return this.wrapper.IS_RECORDING}get unorderedGroups(){return this._unorderedGroups}getRuleStack(){return this.wrapper.RULE_STACK}finalize(){this.wrapper.wrapSelfAnalysis()}},Sb=class extends Eb{static{o(this,"LangiumParser")}get current(){return this.stack[this.stack.length-1]}constructor(e){super(e),this.nodeBuilder=new wb,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=this.computeRuleType(e),i=this.wrapper.DEFINE_RULE(K0e(e.name),this.startImplementation(n,r).bind(this));return this.allRules.set(e.name,i),e.entry&&(this.mainRule=i),i}computeRuleType(e){if(!e.fragment){if(jx(e))return $S;{let r=c1(e);return r??e.name}}}parse(e,r={}){this.nodeBuilder.buildRootNode(e);let n=this.lexerResult=this.lexer.tokenize(e);this.wrapper.input=n.tokens;let i=r.rule?this.allRules.get(r.rule):this.mainRule;if(!i)throw new Error(r.rule?`No rule found with name '${r.rule}'`:"No main rule available.");let a=i.call(this.wrapper,{});return this.nodeBuilder.addHiddenNodes(n.hidden),this.unorderedGroups.clear(),this.lexerResult=void 0,{value:a,lexerErrors:n.errors,lexerReport:n.report,parserErrors:this.wrapper.errors}}startImplementation(e,r){return n=>{let i=!this.isRecording()&&e!==void 0;if(i){let s={$type:e};this.stack.push(s),e===$S&&(s.value="")}let a;try{a=r(n)}catch{a=void 0}return a===void 0&&i&&(a=this.construct()),a}}extractHiddenTokens(e){let r=this.lexerResult.hidden;if(!r.length)return[];let n=e.startOffset;for(let i=0;in)return r.splice(0,i);return r.splice(0,r.length)}consume(e,r,n){let i=this.wrapper.wrapConsume(e,r);if(!this.isRecording()&&this.isValidToken(i)){let a=this.extractHiddenTokens(i);this.nodeBuilder.addHiddenNodes(a);let s=this.nodeBuilder.buildLeafNode(i,n),{assignment:l,isCrossRef:u}=this.getAssignment(n),h=this.current;if(l){let f=Zo(n)?i.image:this.converter.convert(i.image,s);this.assign(l.operator,l.feature,f,s,u)}else if($P(h)){let f=i.image;Zo(n)||(f=this.converter.convert(f,s).toString()),h.value+=f}}}isValidToken(e){return!e.isInsertedInRecovery&&!isNaN(e.startOffset)&&typeof e.endOffset=="number"&&!isNaN(e.endOffset)}subrule(e,r,n,i,a){let s;!this.isRecording()&&!n&&(s=this.nodeBuilder.buildCompositeNode(i));let l=this.wrapper.wrapSubrule(e,r,a);!this.isRecording()&&s&&s.length>0&&this.performSubruleAssignment(l,i,s)}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($P(s))s.value+=e.toString();else if(typeof e=="object"&&e){let u=this.assignWithoutOverride(e,s);this.stack.pop(),this.stack.push(u)}}}action(e,r){if(!this.isRecording()){let n=this.current;if(r.feature&&r.operator){n=this.construct(),this.nodeBuilder.removeNode(n.$cstNode),this.nodeBuilder.buildCompositeNode(r).content.push(n.$cstNode);let a={$type:e};this.stack.push(a),this.assign(r.operator,r.feature,n,n.$cstNode,!1)}else n.$type=e}}construct(){if(this.isRecording())return;let e=this.current;return zE(e),this.nodeBuilder.construct(e),this.stack.pop(),$P(e)?this.converter.convert(e.value,e.$cstNode):(gO(this.astReflection,e),e)}getAssignment(e){if(!this.assignmentMap.has(e)){let r=Ip(e,Fl);this.assignmentMap.set(e,{assignment:r,isCrossRef:r?Mp(r.terminal):!1})}return this.assignmentMap.get(e)}assign(e,r,n,i,a){let s=this.current,l;switch(a&&typeof n=="string"?l=this.linker.buildReference(s,r,i,n):l=n,e){case"=":{s[r]=l;break}case"?=":{s[r]=!0;break}case"+=":Array.isArray(s[r])||(s[r]=[]),s[r].push(l)}}assignWithoutOverride(e,r){for(let[i,a]of Object.entries(r)){let s=e[i];s===void 0?e[i]=a:Array.isArray(s)&&Array.isArray(a)&&(a.push(...s),e[i]=a)}let n=e.$cstNode;return n&&(n.astNode=void 0,e.$cstNode=void 0),e}get definitionErrors(){return this.wrapper.definitionErrors}},zS=class{static{o(this,"AbstractParserErrorMessageProvider")}buildMismatchTokenMessage(e){return Zu.buildMismatchTokenMessage(e)}buildNotAllInputParsedMessage(e){return Zu.buildNotAllInputParsedMessage(e)}buildNoViableAltMessage(e){return Zu.buildNoViableAltMessage(e)}buildEarlyExitMessage(e){return Zu.buildEarlyExitMessage(e)}},F1=class extends zS{static{o(this,"LangiumParserErrorMessageProvider")}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}\`.`}},Cb=class extends Eb{static{o(this,"LangiumCompletionParser")}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,{mode:"partial"});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(K0e(e.name),this.startImplementation(r).bind(this));return this.allRules.set(e.name,n),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,a){this.before(i),this.wrapper.wrapSubrule(e,r,a),this.after(i)}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}},PXe={recoveryEnabled:!0,nodeLocationTracking:"full",skipValidations:!0,errorMessageProvider:new F1},zP=class extends gb{static{o(this,"ChevrotainWrapper")}constructor(e,r){let n=r&&"maxLookahead"in r;super(e,Object.assign(Object.assign(Object.assign({},PXe),{lookaheadStrategy:n?new Ju({maxLookahead:r.maxLookahead}):new bb({logging:r.skipValidations?()=>{}:void 0})}),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 _b(t,e,r){return BXe({parser:e,tokens:r,ruleNames:new Map},t),e}function BXe(t,e){let r=Yx(e,!1),n=an(e.rules).filter(Ga).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});t.parser.rule(i,jp(a,i.definition))}}function jp(t,e,r=!1){let n;if(Zo(e))n=HXe(t,e);else if(qu(e))n=FXe(t,e);else if(Fl(e))n=jp(t,e.terminal);else if(Mp(e))n=Q0e(t,e);else if($l(e))n=$Xe(t,e);else if(BE(e))n=GXe(t,e);else if($E(e))n=VXe(t,e);else if(Of(e))n=UXe(t,e);else if(oO(e)){let i=t.consume++;n=o(()=>t.parser.consume(i,yo,e),"method")}else throw new Rp(e.$cstNode,`Unexpected element type: ${e.$type}`);return Z0e(t,r?void 0:GS(e),n,e.cardinality)}function FXe(t,e){let r=Kx(e);return()=>t.parser.action(r,e)}function $Xe(t,e){let r=e.rule.ref;if(Ga(r)){let n=t.subrule++,i=r.fragment,a=e.arguments.length>0?zXe(r,e.arguments):()=>({});return s=>t.parser.subrule(n,J0e(t,r),i,e,a(s))}else if(mo(r)){let n=t.consume++,i=GP(t,r.name);return()=>t.parser.consume(n,i,e)}else if(r)Uc(r);else throw new Rp(e.$cstNode,`Undefined rule: ${e.rule.$refText}`)}function zXe(t,e){let r=e.map(n=>eh(n.value));return n=>{let i={};for(let a=0;ae(n)||r(n)}else if(JI(t)){let e=eh(t.left),r=eh(t.right);return n=>e(n)&&r(n)}else if(tO(t)){let e=eh(t.value);return r=>!e(r)}else if(rO(t)){let e=t.parameter.ref.name;return r=>r!==void 0&&r[e]===!0}else if(ZI(t)){let e=!!t.true;return()=>e}Uc(t)}function GXe(t,e){if(e.elements.length===1)return jp(t,e.elements[0]);{let r=[];for(let i of e.elements){let a={ALT:jp(t,i,!0)},s=GS(i);s&&(a.GATE=eh(s)),r.push(a)}let n=t.or++;return i=>t.parser.alternatives(n,r.map(a=>{let s={ALT:o(()=>a.ALT(i),"ALT")},l=a.GATE;return l&&(s.GATE=()=>l(i)),s}))}}function VXe(t,e){if(e.elements.length===1)return jp(t,e.elements[0]);let r=[];for(let l of e.elements){let u={ALT:jp(t,l,!0)},h=GS(l);h&&(u.GATE=eh(h)),r.push(u)}let n=t.or++,i=o((l,u)=>{let h=u.getRuleStack().join("-");return`uGroup_${l}_${h}`},"idFunc"),a=o(l=>t.parser.alternatives(n,r.map((u,h)=>{let f={ALT:o(()=>!0,"ALT")},d=t.parser;f.ALT=()=>{if(u.ALT(l),!d.isRecording()){let m=i(n,d);d.unorderedGroups.get(m)||d.unorderedGroups.set(m,[]);let g=d.unorderedGroups.get(m);typeof g?.[h]>"u"&&(g[h]=!0)}};let p=u.GATE;return p?f.GATE=()=>p(l):f.GATE=()=>{let m=d.unorderedGroups.get(i(n,d));return!m?.[h]},f})),"alternatives"),s=Z0e(t,GS(e),a,"*");return l=>{s(l),t.parser.isRecording()||t.parser.unorderedGroups.delete(i(n,t.parser))}}function UXe(t,e){let r=e.elements.map(n=>jp(t,n));return n=>r.forEach(i=>i(n))}function GS(t){if(Of(t))return t.guardCondition}function Q0e(t,e,r=e.terminal){if(r)if($l(r)&&Ga(r.rule.ref)){let n=r.rule.ref,i=t.subrule++;return a=>t.parser.subrule(i,J0e(t,n),!1,e,a)}else if($l(r)&&mo(r.rule.ref)){let n=t.consume++,i=GP(t,r.rule.ref.name);return()=>t.parser.consume(n,i,e)}else if(Zo(r)){let n=t.consume++,i=GP(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=qE(e.type.ref),i=n?.terminal;if(!i)throw new Error("Could not find name assignment for type: "+Kx(e.type.ref));return Q0e(t,e,i)}}function HXe(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 Z0e(t,e,r,n){let i=e&&eh(e);if(!n)if(i){let a=t.or++;return s=>t.parser.alternatives(a,[{ALT:o(()=>r(s),"ALT"),GATE:o(()=>i(s),"GATE")},{ALT:LS(),GATE:o(()=>!i(s),"GATE")}])}else return r;if(n==="*"){let a=t.many++;return s=>t.parser.many(a,{DEF:o(()=>r(s),"DEF"),GATE:i?()=>i(s):void 0})}else if(n==="+"){let a=t.many++;if(i){let s=t.or++;return l=>t.parser.alternatives(s,[{ALT:o(()=>t.parser.atLeastOne(a,{DEF:o(()=>r(l),"DEF")}),"ALT"),GATE:o(()=>i(l),"GATE")},{ALT:LS(),GATE:o(()=>!i(l),"GATE")}])}else return s=>t.parser.atLeastOne(a,{DEF:o(()=>r(s),"DEF")})}else if(n==="?"){let a=t.optional++;return s=>t.parser.optional(a,{DEF:o(()=>r(s),"DEF"),GATE:i?()=>i(s):void 0})}else Uc(n)}function J0e(t,e){let r=qXe(t,e),n=t.parser.getRule(r);if(!n)throw new Error(`Rule "${r}" not found."`);return n}function qXe(t,e){if(Ga(e))return e.name;if(t.ruleNames.has(e))return t.ruleNames.get(e);{let r=e,n=r.$container,i=e.$type;for(;!Ga(n);)(Of(n)||BE(n)||$E(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 GP(t,e){let r=t.tokens[e];if(!r)throw new Error(`Token "${e}" not found."`);return r}var VS=N(()=>{"use strict";Ff();Hc();NE();Ys();zl();o(_b,"createParser");o(BXe,"buildRules");o(jp,"buildElement");o(FXe,"buildAction");o($Xe,"buildRuleCall");o(zXe,"buildRuleCallPredicate");o(eh,"buildPredicate");o(GXe,"buildAlternatives");o(VXe,"buildUnorderedGroup");o(UXe,"buildGroup");o(GS,"getGuardCondition");o(Q0e,"buildCrossReference");o(HXe,"buildKeyword");o(Z0e,"wrap");o(J0e,"getRule");o(qXe,"getRuleName");o(GP,"getToken")});function VP(t){let e=t.Grammar,r=t.parser.Lexer,n=new Cb(t);return _b(e,n,r.definition),n.finalize(),n}var UP=N(()=>{"use strict";Ab();VS();o(VP,"createCompletionParser")});function HP(t){let e=eme(t);return e.finalize(),e}function eme(t){let e=t.Grammar,r=t.parser.Lexer,n=new Sb(t);return _b(e,n,r.definition)}var qP=N(()=>{"use strict";Ab();VS();o(HP,"createLangiumParser");o(eme,"prepareLangiumParser")});var th,US=N(()=>{"use strict";Ff();Hc();hs();zl();l1();Ys();th=class{static{o(this,"DefaultTokenBuilder")}constructor(){this.diagnostics=[]}buildTokens(e,r){let n=an(Yx(e,!1)),i=this.buildTerminalTokens(n),a=this.buildKeywordTokens(n,i,r);return i.forEach(s=>{let l=s.PATTERN;typeof l=="object"&&l&&"test"in l&&o1(l)?a.unshift(s):a.push(s)}),a}flushLexingReport(e){return{diagnostics:this.popDiagnostics()}}popDiagnostics(){let e=[...this.diagnostics];return this.diagnostics=[],e}buildTerminalTokens(e){return e.filter(mo).filter(r=>!r.fragment).map(r=>this.buildTerminalToken(r)).toArray()}buildTerminalToken(e){let r=u1(e),n=this.requiresCustomPattern(r)?this.regexPatternFunction(r):r,i={name:e.name,PATTERN:n};return typeof n=="function"&&(i.LINE_BREAKS=!0),e.hidden&&(i.GROUP=o1(r)?Zn.SKIPPED:"hidden"),i}requiresCustomPattern(e){return e.flags.includes("u")||e.flags.includes("s")?!0:!!(e.source.includes("?<=")||e.source.includes("?(r.lastIndex=i,r.exec(n))}buildKeywordTokens(e,r,n){return e.filter(Ga).flatMap(i=>qc(i).filter(Zo)).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){let i=this.buildKeywordPattern(e,n),a={name:e.value,PATTERN:i,LONGER_ALT:this.findLongerAlt(e,r)};return typeof i=="function"&&(a.LINE_BREAKS=!0),a}buildKeywordPattern(e,r){return r?new RegExp(kO(e.value)):e.value}findLongerAlt(e,r){return r.reduce((n,i)=>{let a=i?.PATTERN;return a?.source&&EO("^"+a.source+"$",e.value)&&n.push(i),n},[])}}});var Kp,Xc,WP=N(()=>{"use strict";Hc();zl();Kp=class{static{o(this,"DefaultValueConverter")}convert(e,r){let n=r.grammarSource;if(Mp(n)&&(n=AO(n)),$l(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 Xc.convertInt(r);case"STRING":return Xc.convertString(r);case"ID":return Xc.convertID(r)}switch((i=IO(e))===null||i===void 0?void 0:i.toLowerCase()){case"number":return Xc.convertNumber(r);case"boolean":return Xc.convertBoolean(r);case"bigint":return Xc.convertBigint(r);case"date":return Xc.convertDate(r);default:return r}}};(function(t){function e(h){let f="";for(let d=1;d{"use strict";Object.defineProperty(jP,"__esModule",{value:!0});var YP;function XP(){if(YP===void 0)throw new Error("No runtime abstraction layer installed");return YP}o(XP,"RAL");(function(t){function e(r){if(r===void 0)throw new Error("No runtime abstraction layer provided");YP=r}o(e,"install"),t.install=e})(XP||(XP={}));jP.default=XP});var nme=Da(Ua=>{"use strict";Object.defineProperty(Ua,"__esModule",{value:!0});Ua.stringArray=Ua.array=Ua.func=Ua.error=Ua.number=Ua.string=Ua.boolean=void 0;function WXe(t){return t===!0||t===!1}o(WXe,"boolean");Ua.boolean=WXe;function tme(t){return typeof t=="string"||t instanceof String}o(tme,"string");Ua.string=tme;function YXe(t){return typeof t=="number"||t instanceof Number}o(YXe,"number");Ua.number=YXe;function XXe(t){return t instanceof Error}o(XXe,"error");Ua.error=XXe;function jXe(t){return typeof t=="function"}o(jXe,"func");Ua.func=jXe;function rme(t){return Array.isArray(t)}o(rme,"array");Ua.array=rme;function KXe(t){return rme(t)&&t.every(e=>tme(e))}o(KXe,"stringArray");Ua.stringArray=KXe});var ZP=Da($1=>{"use strict";Object.defineProperty($1,"__esModule",{value:!0});$1.Emitter=$1.Event=void 0;var QXe=KP(),ime;(function(t){let e={dispose(){}};t.None=function(){return e}})(ime||($1.Event=ime={}));var QP=class{static{o(this,"CallbackList")}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:o(()=>this.remove(e,r),"dispose")})}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 QP),this._options&&this._options.onFirstListenerAdd&&this._callbacks.isEmpty()&&this._options.onFirstListenerAdd(this),this._callbacks.add(e,r);let i={dispose:o(()=>{this._callbacks&&(this._callbacks.remove(e,r),i.dispose=t._noop,this._options&&this._options.onLastListenerRemove&&this._callbacks.isEmpty()&&this._options.onLastListenerRemove(this))},"dispose")};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)}};$1.Emitter=HS;HS._noop=function(){}});var ame=Da(z1=>{"use strict";Object.defineProperty(z1,"__esModule",{value:!0});z1.CancellationTokenSource=z1.CancellationToken=void 0;var ZXe=KP(),JXe=nme(),JP=ZP(),qS;(function(t){t.None=Object.freeze({isCancellationRequested:!1,onCancellationRequested:JP.Event.None}),t.Cancelled=Object.freeze({isCancellationRequested:!0,onCancellationRequested:JP.Event.None});function e(r){let n=r;return n&&(n===t.None||n===t.Cancelled||JXe.boolean(n.isCancellationRequested)&&!!n.onCancellationRequested)}o(e,"is"),t.is=e})(qS||(z1.CancellationToken=qS={}));var eje=Object.freeze(function(t,e){let r=(0,ZXe.default)().timer.setTimeout(t.bind(e),0);return{dispose(){r.dispose()}}}),WS=class{static{o(this,"MutableToken")}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?eje:(this._emitter||(this._emitter=new JP.Emitter),this._emitter.event)}dispose(){this._emitter&&(this._emitter.dispose(),this._emitter=void 0)}},eB=class{static{o(this,"CancellationTokenSource")}get token(){return this._token||(this._token=new WS),this._token}cancel(){this._token?this._token.cancel():this._token=qS.Cancelled}dispose(){this._token?this._token instanceof WS&&this._token.dispose():this._token=qS.None}};z1.CancellationTokenSource=eB});var br={};var el=N(()=>{"use strict";Lr(br,ja(ame(),1))});function tB(){return new Promise(t=>{typeof setImmediate>"u"?setTimeout(t,0):setImmediate(t)})}function XS(){return YS=performance.now(),new br.CancellationTokenSource}function ome(t){sme=t}function Kc(t){return t===jc}async function bi(t){if(t===br.CancellationToken.None)return;let e=performance.now();if(e-YS>=sme&&(YS=e,await tB(),YS=performance.now()),t.isCancellationRequested)throw jc}var YS,sme,jc,gs,tl=N(()=>{"use strict";el();o(tB,"delayNextTick");YS=0,sme=10;o(XS,"startCancelableOperation");o(ome,"setInterruptionPeriod");jc=Symbol("OperationCancelled");o(Kc,"isOperationCancelled");o(bi,"interruptAndCheck");gs=class{static{o(this,"Deferred")}constructor(){this.promise=new Promise((e,r)=>{this.resolve=n=>(e(n),this),this.reject=n=>(r(n),this)})}}});function rB(t,e){if(t.length<=1)return t;let r=t.length/2|0,n=t.slice(0,r),i=t.slice(r);rB(n,e),rB(i,e);let a=0,s=0,l=0;for(;ar.line||e.line===r.line&&e.character>r.character?{start:r,end:e}:t}function tje(t){let e=ume(t.range);return e!==t.range?{newText:t.newText,range:e}:t}var jS,G1,hme=N(()=>{"use strict";jS=class t{static{o(this,"FullTextDocument")}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=ume(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 l=Math.max(i.start.line,0),u=Math.max(i.end.line,0),h=this._lineOffsets,f=lme(n.text,!1,a);if(u-l===f.length)for(let p=0,m=f.length;pe?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&&cme(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,l){return new jS(i,a,s,l)}o(e,"create"),t.create=e;function r(i,a,s){if(i instanceof jS)return i.update(a,s),i;throw new Error("TextDocument.update: document must be created by TextDocument.create")}o(r,"update"),t.update=r;function n(i,a){let s=i.getText(),l=rB(a.map(tje),(f,d)=>{let p=f.range.start.line-d.range.start.line;return p===0?f.range.start.character-d.range.start.character:p}),u=0,h=[];for(let f of l){let d=i.offsetAt(f.range.start);if(du&&h.push(s.substring(u,d)),f.newText.length&&h.push(f.newText),u=i.offsetAt(f.range.end)}return h.push(s.substr(u)),h.join("")}o(n,"applyEdits"),t.applyEdits=n})(G1||(G1={}));o(rB,"mergeSort");o(lme,"computeLineOffsets");o(cme,"isEOL");o(ume,"getWellformedRange");o(tje,"getWellformedEdit")});var fme,ys,V1,nB=N(()=>{"use strict";(()=>{"use strict";var t={470:i=>{function a(u){if(typeof u!="string")throw new TypeError("Path must be a string. Received "+JSON.stringify(u))}o(a,"e");function s(u,h){for(var f,d="",p=0,m=-1,g=0,y=0;y<=u.length;++y){if(y2){var v=d.lastIndexOf("/");if(v!==d.length-1){v===-1?(d="",p=0):p=(d=d.slice(0,v)).length-1-d.lastIndexOf("/"),m=y,g=0;continue}}else if(d.length===2||d.length===1){d="",p=0,m=y,g=0;continue}}h&&(d.length>0?d+="/..":d="..",p=2)}else d.length>0?d+="/"+u.slice(m+1,y):d=u.slice(m+1,y),p=y-m-1;m=y,g=0}else f===46&&g!==-1?++g:g=-1}return d}o(s,"r");var l={resolve:o(function(){for(var u,h="",f=!1,d=arguments.length-1;d>=-1&&!f;d--){var p;d>=0?p=arguments[d]:(u===void 0&&(u=process.cwd()),p=u),a(p),p.length!==0&&(h=p+"/"+h,f=p.charCodeAt(0)===47)}return h=s(h,!f),f?h.length>0?"/"+h:"/":h.length>0?h:"."},"resolve"),normalize:o(function(u){if(a(u),u.length===0)return".";var h=u.charCodeAt(0)===47,f=u.charCodeAt(u.length-1)===47;return(u=s(u,!h)).length!==0||h||(u="."),u.length>0&&f&&(u+="/"),h?"/"+u:u},"normalize"),isAbsolute:o(function(u){return a(u),u.length>0&&u.charCodeAt(0)===47},"isAbsolute"),join:o(function(){if(arguments.length===0)return".";for(var u,h=0;h0&&(u===void 0?u=f:u+="/"+f)}return u===void 0?".":l.normalize(u)},"join"),relative:o(function(u,h){if(a(u),a(h),u===h||(u=l.resolve(u))===(h=l.resolve(h)))return"";for(var f=1;fy){if(h.charCodeAt(m+x)===47)return h.slice(m+x+1);if(x===0)return h.slice(m+x)}else p>y&&(u.charCodeAt(f+x)===47?v=x:x===0&&(v=0));break}var b=u.charCodeAt(f+x);if(b!==h.charCodeAt(m+x))break;b===47&&(v=x)}var T="";for(x=f+v+1;x<=d;++x)x!==d&&u.charCodeAt(x)!==47||(T.length===0?T+="..":T+="/..");return T.length>0?T+h.slice(m+v):(m+=v,h.charCodeAt(m)===47&&++m,h.slice(m))},"relative"),_makeLong:o(function(u){return u},"_makeLong"),dirname:o(function(u){if(a(u),u.length===0)return".";for(var h=u.charCodeAt(0),f=h===47,d=-1,p=!0,m=u.length-1;m>=1;--m)if((h=u.charCodeAt(m))===47){if(!p){d=m;break}}else p=!1;return d===-1?f?"/":".":f&&d===1?"//":u.slice(0,d)},"dirname"),basename:o(function(u,h){if(h!==void 0&&typeof h!="string")throw new TypeError('"ext" argument must be a string');a(u);var f,d=0,p=-1,m=!0;if(h!==void 0&&h.length>0&&h.length<=u.length){if(h.length===u.length&&h===u)return"";var g=h.length-1,y=-1;for(f=u.length-1;f>=0;--f){var v=u.charCodeAt(f);if(v===47){if(!m){d=f+1;break}}else y===-1&&(m=!1,y=f+1),g>=0&&(v===h.charCodeAt(g)?--g==-1&&(p=f):(g=-1,p=y))}return d===p?p=y:p===-1&&(p=u.length),u.slice(d,p)}for(f=u.length-1;f>=0;--f)if(u.charCodeAt(f)===47){if(!m){d=f+1;break}}else p===-1&&(m=!1,p=f+1);return p===-1?"":u.slice(d,p)},"basename"),extname:o(function(u){a(u);for(var h=-1,f=0,d=-1,p=!0,m=0,g=u.length-1;g>=0;--g){var y=u.charCodeAt(g);if(y!==47)d===-1&&(p=!1,d=g+1),y===46?h===-1?h=g:m!==1&&(m=1):h!==-1&&(m=-1);else if(!p){f=g+1;break}}return h===-1||d===-1||m===0||m===1&&h===d-1&&h===f+1?"":u.slice(h,d)},"extname"),format:o(function(u){if(u===null||typeof u!="object")throw new TypeError('The "pathObject" argument must be of type Object. Received type '+typeof u);return(function(h,f){var d=f.dir||f.root,p=f.base||(f.name||"")+(f.ext||"");return d?d===f.root?d+p:d+"/"+p:p})(0,u)},"format"),parse:o(function(u){a(u);var h={root:"",dir:"",base:"",ext:"",name:""};if(u.length===0)return h;var f,d=u.charCodeAt(0),p=d===47;p?(h.root="/",f=1):f=0;for(var m=-1,g=0,y=-1,v=!0,x=u.length-1,b=0;x>=f;--x)if((d=u.charCodeAt(x))!==47)y===-1&&(v=!1,y=x+1),d===46?m===-1?m=x:b!==1&&(b=1):m!==-1&&(b=-1);else if(!v){g=x+1;break}return m===-1||y===-1||b===0||b===1&&m===y-1&&m===g+1?y!==-1&&(h.base=h.name=g===0&&p?u.slice(1,y):u.slice(g,y)):(g===0&&p?(h.name=u.slice(1,m),h.base=u.slice(1,y)):(h.name=u.slice(g,m),h.base=u.slice(g,y)),h.ext=u.slice(m,y)),g>0?h.dir=u.slice(0,g-1):p&&(h.dir="/"),h},"parse"),sep:"/",delimiter:":",win32:null,posix:null};l.posix=l,i.exports=l}},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}o(r,"r"),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:o(()=>p,"URI"),Utils:o(()=>I,"Utils")}),typeof process=="object"?i=process.platform==="win32":typeof navigator=="object"&&(i=navigator.userAgent.indexOf("Windows")>=0);let a=/^\w[\w\d+.-]*$/,s=/^\//,l=/^\/\//;function u(L,E){if(!L.scheme&&E)throw new Error(`[UriError]: Scheme is missing: {scheme: "", authority: "${L.authority}", path: "${L.path}", query: "${L.query}", fragment: "${L.fragment}"}`);if(L.scheme&&!a.test(L.scheme))throw new Error("[UriError]: Scheme contains illegal characters.");if(L.path){if(L.authority){if(!s.test(L.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(l.test(L.path))throw new Error('[UriError]: If a URI does not contain an authority component, then the path cannot begin with two slash characters ("//")')}}o(u,"s");let h="",f="/",d=/^(([^:/?#]+?):)?(\/\/([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?/;class p{static{o(this,"f")}static isUri(E){return E instanceof p||!!E&&typeof E.authority=="string"&&typeof E.fragment=="string"&&typeof E.path=="string"&&typeof E.query=="string"&&typeof E.scheme=="string"&&typeof E.fsPath=="string"&&typeof E.with=="function"&&typeof E.toString=="function"}scheme;authority;path;query;fragment;constructor(E,D,_,O,M,P=!1){typeof E=="object"?(this.scheme=E.scheme||h,this.authority=E.authority||h,this.path=E.path||h,this.query=E.query||h,this.fragment=E.fragment||h):(this.scheme=(function(B,F){return B||F?B:"file"})(E,P),this.authority=D||h,this.path=(function(B,F){switch(B){case"https":case"http":case"file":F?F[0]!==f&&(F=f+F):F=f}return F})(this.scheme,_||h),this.query=O||h,this.fragment=M||h,u(this,P))}get fsPath(){return b(this,!1)}with(E){if(!E)return this;let{scheme:D,authority:_,path:O,query:M,fragment:P}=E;return D===void 0?D=this.scheme:D===null&&(D=h),_===void 0?_=this.authority:_===null&&(_=h),O===void 0?O=this.path:O===null&&(O=h),M===void 0?M=this.query:M===null&&(M=h),P===void 0?P=this.fragment:P===null&&(P=h),D===this.scheme&&_===this.authority&&O===this.path&&M===this.query&&P===this.fragment?this:new g(D,_,O,M,P)}static parse(E,D=!1){let _=d.exec(E);return _?new g(_[2]||h,k(_[4]||h),k(_[5]||h),k(_[7]||h),k(_[9]||h),D):new g(h,h,h,h,h)}static file(E){let D=h;if(i&&(E=E.replace(/\\/g,f)),E[0]===f&&E[1]===f){let _=E.indexOf(f,2);_===-1?(D=E.substring(2),E=f):(D=E.substring(2,_),E=E.substring(_)||f)}return new g("file",D,E,h,h)}static from(E){let D=new g(E.scheme,E.authority,E.path,E.query,E.fragment);return u(D,!0),D}toString(E=!1){return T(this,E)}toJSON(){return this}static revive(E){if(E){if(E instanceof p)return E;{let D=new g(E);return D._formatted=E.external,D._fsPath=E._sep===m?E.fsPath:null,D}}return E}}let m=i?1:void 0;class g extends p{static{o(this,"l")}_formatted=null;_fsPath=null;get fsPath(){return this._fsPath||(this._fsPath=b(this,!1)),this._fsPath}toString(E=!1){return E?T(this,!0):(this._formatted||(this._formatted=T(this,!1)),this._formatted)}toJSON(){let E={$mid:1};return this._fsPath&&(E.fsPath=this._fsPath,E._sep=m),this._formatted&&(E.external=this._formatted),this.path&&(E.path=this.path),this.scheme&&(E.scheme=this.scheme),this.authority&&(E.authority=this.authority),this.query&&(E.query=this.query),this.fragment&&(E.fragment=this.fragment),E}}let y={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 v(L,E,D){let _,O=-1;for(let M=0;M=97&&P<=122||P>=65&&P<=90||P>=48&&P<=57||P===45||P===46||P===95||P===126||E&&P===47||D&&P===91||D&&P===93||D&&P===58)O!==-1&&(_+=encodeURIComponent(L.substring(O,M)),O=-1),_!==void 0&&(_+=L.charAt(M));else{_===void 0&&(_=L.substr(0,M));let B=y[P];B!==void 0?(O!==-1&&(_+=encodeURIComponent(L.substring(O,M)),O=-1),_+=B):O===-1&&(O=M)}}return O!==-1&&(_+=encodeURIComponent(L.substring(O))),_!==void 0?_:L}o(v,"d");function x(L){let E;for(let D=0;D1&&L.scheme==="file"?`//${L.authority}${L.path}`:L.path.charCodeAt(0)===47&&(L.path.charCodeAt(1)>=65&&L.path.charCodeAt(1)<=90||L.path.charCodeAt(1)>=97&&L.path.charCodeAt(1)<=122)&&L.path.charCodeAt(2)===58?E?L.path.substr(1):L.path[1].toLowerCase()+L.path.substr(2):L.path,i&&(D=D.replace(/\//g,"\\")),D}o(b,"m");function T(L,E){let D=E?x:v,_="",{scheme:O,authority:M,path:P,query:B,fragment:F}=L;if(O&&(_+=O,_+=":"),(M||O==="file")&&(_+=f,_+=f),M){let G=M.indexOf("@");if(G!==-1){let $=M.substr(0,G);M=M.substr(G+1),G=$.lastIndexOf(":"),G===-1?_+=D($,!1,!1):(_+=D($.substr(0,G),!1,!1),_+=":",_+=D($.substr(G+1),!1,!0)),_+="@"}M=M.toLowerCase(),G=M.lastIndexOf(":"),G===-1?_+=D(M,!1,!0):(_+=D(M.substr(0,G),!1,!0),_+=M.substr(G))}if(P){if(P.length>=3&&P.charCodeAt(0)===47&&P.charCodeAt(2)===58){let G=P.charCodeAt(1);G>=65&&G<=90&&(P=`/${String.fromCharCode(G+32)}:${P.substr(3)}`)}else if(P.length>=2&&P.charCodeAt(1)===58){let G=P.charCodeAt(0);G>=65&&G<=90&&(P=`${String.fromCharCode(G+32)}:${P.substr(2)}`)}_+=D(P,!0,!1)}return B&&(_+="?",_+=D(B,!1,!1)),F&&(_+="#",_+=E?F:v(F,!1,!1)),_}o(T,"y");function S(L){try{return decodeURIComponent(L)}catch{return L.length>3?L.substr(0,3)+S(L.substr(3)):L}}o(S,"v");let w=/(%[0-9A-Za-z][0-9A-Za-z])+/g;function k(L){return L.match(w)?L.replace(w,(E=>S(E))):L}o(k,"C");var A=r(470);let C=A.posix||A,R="/";var I;(function(L){L.joinPath=function(E,...D){return E.with({path:C.join(E.path,...D)})},L.resolvePath=function(E,...D){let _=E.path,O=!1;_[0]!==R&&(_=R+_,O=!0);let M=C.resolve(_,...D);return O&&M[0]===R&&!E.authority&&(M=M.substring(1)),E.with({path:M})},L.dirname=function(E){if(E.path.length===0||E.path===R)return E;let D=C.dirname(E.path);return D.length===1&&D.charCodeAt(0)===46&&(D=""),E.with({path:D})},L.basename=function(E){return C.basename(E.path)},L.extname=function(E){return C.extname(E.path)}})(I||(I={}))})(),fme=n})();({URI:ys,Utils:V1}=fme)});var vs,Qc=N(()=>{"use strict";nB();(function(t){t.basename=V1.basename,t.dirname=V1.dirname,t.extname=V1.extname,t.joinPath=V1.joinPath,t.resolvePath=V1.resolvePath;function e(i,a){return i?.toString()===a?.toString()}o(e,"equals"),t.equals=e;function r(i,a){let s=typeof i=="string"?i:i.path,l=typeof a=="string"?a:a.path,u=s.split("/").filter(m=>m.length>0),h=l.split("/").filter(m=>m.length>0),f=0;for(;f{"use strict";hme();U1();el();Ys();Qc();(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"})(Ln||(Ln={}));Db=class{static{o(this,"DefaultLangiumDocumentFactory")}constructor(e){this.serviceRegistry=e.ServiceRegistry,this.textDocuments=e.workspace.TextDocuments,this.fileSystemProvider=e.workspace.FileSystemProvider}async fromUri(e,r=br.CancellationToken.None){let n=await this.fileSystemProvider.readFile(e);return this.createAsync(e,n,r)}fromTextDocument(e,r,n){return r=r??ys.parse(e.uri),br.CancellationToken.is(n)?this.createAsync(r,e,n):this.create(r,e,n)}fromString(e,r,n){return br.CancellationToken.is(n)?this.createAsync(r,e,n):this.create(r,e,n)}fromModel(e,r){return this.create(r,{$model:e})}create(e,r,n){if(typeof r=="string"){let i=this.parse(e,r,n);return this.createLangiumDocument(i,e,void 0,r)}else if("$model"in r){let i={value:r.$model,parserErrors:[],lexerErrors:[]};return this.createLangiumDocument(i,e)}else{let i=this.parse(e,r.getText(),n);return this.createLangiumDocument(i,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:Ln.Parsed,references:[],textDocument:n};else{let s=this.createTextDocumentGetter(r,i);a={parseResult:e,uri:r,state:Ln.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()),l=s?s.getText():await this.fileSystemProvider.readFile(e.uri);if(s)Object.defineProperty(e,"textDocument",{value:s});else{let u=this.createTextDocumentGetter(e.uri,l);Object.defineProperty(e,"textDocument",{get:u})}return a!==l&&(e.parseResult=await this.parseAsync(e.uri,l,r),e.parseResult.value.$document=e),e.state=Ln.Parsed,e}parse(e,r,n){return this.serviceRegistry.getServices(e).parser.LangiumParser.parse(r,n)}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=G1.create(e.toString(),n.getServices(e).LanguageMetaData.languageId,0,r??""))}},Lb=class{static{o(this,"DefaultLangiumDocuments")}constructor(e){this.documentMap=new Map,this.langiumDocumentFactory=e.workspace.LangiumDocumentFactory,this.serviceRegistry=e.ServiceRegistry}get all(){return an(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&&(this.serviceRegistry.getServices(e).references.Linker.unlink(n),n.state=Ln.Changed,n.precomputedScopes=void 0,n.diagnostics=void 0),n}deleteDocument(e){let r=e.toString(),n=this.documentMap.get(r);return n&&(n.state=Ln.Changed,this.documentMap.delete(r)),n}}});var iB,Rb,aB=N(()=>{"use strict";el();Pl();hs();tl();U1();iB=Symbol("ref_resolving"),Rb=class{static{o(this,"DefaultLinker")}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=br.CancellationToken.None){for(let n of Jo(e.parseResult.value))await bi(r),a1(n).forEach(i=>this.doLink(i,e))}doLink(e,r){var n;let i=e.reference;if(i._ref===void 0){i._ref=iB;try{let a=this.getCandidate(e);if(_p(a))i._ref=a;else if(i._nodeDescription=a,this.langiumDocuments().hasDocument(a.documentUri)){let s=this.loadAstNode(a);i._ref=s??this.createLinkingError(e,a)}else i._ref=void 0}catch(a){console.error(`An error occurred while resolving reference to '${i.$refText}':`,a);let s=(n=a.message)!==null&&n!==void 0?n:String(a);i._ref=Object.assign(Object.assign({},e),{message:`An error occurred while resolving reference to '${i.$refText}': ${s}`})}r.references.push(i)}}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 l;if(li(this._ref))return this._ref;if(qI(this._nodeDescription)){let u=a.loadAstNode(this._nodeDescription);this._ref=u??a.createLinkingError({reference:s,container:e,property:r},this._nodeDescription)}else if(this._ref===void 0){this._ref=iB;let u=Gx(e).$document,h=a.getLinkedNode({reference:s,container:e,property:r});if(h.error&&u&&u.state{"use strict";zl();o(dme,"isNamed");Nb=class{static{o(this,"DefaultNameProvider")}getName(e){if(dme(e))return e.name}getNameNode(e){return Xx(e.$cstNode,"name")}}});var Mb,oB=N(()=>{"use strict";zl();Pl();hs();Bl();Ys();Qc();Mb=class{static{o(this,"DefaultReferences")}constructor(e){this.nameProvider=e.references.NameProvider,this.index=e.shared.workspace.IndexManager,this.nodeLocator=e.workspace.AstNodeLocator}findDeclaration(e){if(e){let r=MO(e),n=e.astNode;if(r&&n){let i=n[r.feature];if(Ta(i))return i.ref;if(Array.isArray(i)){for(let a of i)if(Ta(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||YI(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=>vs.equals(a.sourceUri,r.documentUri))),n.push(...i),an(n)}getReferenceToSelf(e){let r=this.nameProvider.getNameNode(e);if(r){let n=Va(e),i=this.nodeLocator.getAstNodePath(e);return{sourceUri:n.uri,sourcePath:i,targetUri:n.uri,targetPath:i,segment:Lp(r),local:!0}}}}});var Vl,Qp,H1=N(()=>{"use strict";Ys();Vl=class{static{o(this,"MultiMap")}constructor(e){if(this.map=new Map,e)for(let[r,n]of e)this.add(r,n)}get size(){return vg.sum(an(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 an(this.map.entries()).flatMap(([e,r])=>r.map(n=>[e,n]))}keys(){return an(this.map.keys())}values(){return an(this.map.values()).flat()}entriesGroupedByKey(){return an(this.map.entries())}},Qp=class{static{o(this,"BiMap")}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 Ib,lB=N(()=>{"use strict";el();hs();H1();tl();Ib=class{static{o(this,"DefaultScopeComputation")}constructor(e){this.nameProvider=e.references.NameProvider,this.descriptions=e.workspace.AstNodeDescriptionProvider}async computeExports(e,r=br.CancellationToken.None){return this.computeExportsForNode(e.parseResult.value,e,void 0,r)}async computeExportsForNode(e,r,n=Vx,i=br.CancellationToken.None){let a=[];this.exportNode(e,a,r);for(let s of n(e))await bi(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=br.CancellationToken.None){let n=e.parseResult.value,i=new Vl;for(let a of qc(n))await bi(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 q1,Ob,rje,cB=N(()=>{"use strict";Ys();q1=class{static{o(this,"StreamScope")}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)}},Ob=class{static{o(this,"MapScope")}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=an(this.elements.values());return this.outerScope&&(e=e.concat(this.outerScope.getAllElements())),e}},rje={getElement(){},getAllElements(){return Rx}}});var W1,Pb,Zp,KS,Y1,QS=N(()=>{"use strict";W1=class{static{o(this,"DisposableCache")}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")}},Pb=class extends W1{static{o(this,"SimpleCache")}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()}},Zp=class extends W1{static{o(this,"ContextCache")}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}},KS=class extends Zp{static{o(this,"DocumentCache")}constructor(e,r){super(n=>n.toString()),r?(this.toDispose.push(e.workspace.DocumentBuilder.onDocumentPhase(r,n=>{this.clear(n.uri.toString())})),this.toDispose.push(e.workspace.DocumentBuilder.onUpdate((n,i)=>{for(let a of i)this.clear(a)}))):this.toDispose.push(e.workspace.DocumentBuilder.onUpdate((n,i)=>{let a=n.concat(i);for(let s of a)this.clear(s)}))}},Y1=class extends Pb{static{o(this,"WorkspaceCache")}constructor(e,r){super(),r?(this.toDispose.push(e.workspace.DocumentBuilder.onBuildPhase(r,()=>{this.clear()})),this.toDispose.push(e.workspace.DocumentBuilder.onUpdate((n,i)=>{i.length>0&&this.clear()}))):this.toDispose.push(e.workspace.DocumentBuilder.onUpdate(()=>{this.clear()}))}}});var Bb,uB=N(()=>{"use strict";cB();hs();Ys();QS();Bb=class{static{o(this,"DefaultScopeProvider")}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 Y1(e.shared)}getScope(e){let r=[],n=this.reflection.getReferenceType(e),i=Va(e.container).precomputedScopes;if(i){let s=e.container;do{let l=i.get(s);l.length>0&&r.push(an(l).filter(u=>this.reflection.isSubtype(u.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 q1(an(e),r,n)}createScopeForNodes(e,r,n){let i=an(e).map(a=>{let s=this.nameProvider.getName(a);if(s)return this.descriptions.createDescription(a,s)}).nonNullable();return new q1(i,r,n)}getGlobalScope(e,r){return this.globalScopeCache.get(e,()=>new Ob(this.indexManager.allElements(e)))}}});function hB(t){return typeof t.$comment=="string"}function pme(t){return typeof t=="object"&&!!t&&("$ref"in t||"$error"in t)}var Fb,ZS=N(()=>{"use strict";nB();Pl();hs();zl();o(hB,"isAstNodeWithComment");o(pme,"isIntermediateReference");Fb=class{static{o(this,"DefaultJsonSerializer")}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??{},i=r?.replacer,a=o((l,u)=>this.replacer(l,u,n),"defaultReplacer"),s=i?(l,u)=>i(l,u,a):a;try{return this.currentDocument=Va(e),JSON.stringify(e,s,r?.space)}finally{this.currentDocument=void 0}}deserialize(e,r){let n=r??{},i=JSON.parse(e);return this.linkNode(i,i,n),i}replacer(e,r,{refText:n,sourceText:i,textRegions:a,comments:s,uriConverter:l}){var u,h,f,d;if(!this.ignoreProperties.has(e))if(Ta(r)){let p=r.ref,m=n?r.$refText:void 0;if(p){let g=Va(p),y="";this.currentDocument&&this.currentDocument!==g&&(l?y=l(g.uri,r):y=g.uri.toString());let v=this.astNodeLocator.getAstNodePath(p);return{$ref:`${y}#${v}`,$refText:m}}else return{$error:(h=(u=r.error)===null||u===void 0?void 0:u.message)!==null&&h!==void 0?h:"Could not resolve reference",$refText:m}}else if(li(r)){let p;if(a&&(p=this.addAstNodeRegionWithAssignmentsTo(Object.assign({},r)),(!e||r.$document)&&p?.$textRegion&&(p.$textRegion.documentURI=(f=this.currentDocument)===null||f===void 0?void 0:f.uri.toString())),i&&!e&&(p??(p=Object.assign({},r)),p.$sourceText=(d=r.$cstNode)===null||d===void 0?void 0:d.text),s){p??(p=Object.assign({},r));let m=this.commentProvider.getComment(r);m&&(p.$comment=m.replace(/\r/g,""))}return p??r}else return r}addAstNodeRegionWithAssignmentsTo(e){let r=o(n=>({offset:n.offset,end:n.end,length:n.length,range:n.range}),"createDocumentSegment");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=DO(e.$cstNode,a).map(r);s.length!==0&&(i[a]=s)}),e}}linkNode(e,r,n,i,a,s){for(let[u,h]of Object.entries(e))if(Array.isArray(h))for(let f=0;f{"use strict";Qc();$b=class{static{o(this,"DefaultServiceRegistry")}get map(){return this.fileExtensionMap}constructor(e){this.languageIdMap=new Map,this.fileExtensionMap=new Map,this.textDocuments=e?.workspace.TextDocuments}register(e){let r=e.LanguageMetaData;for(let n of r.fileExtensions)this.fileExtensionMap.has(n)&&console.warn(`The file extension ${n} is used by multiple languages. It is now assigned to '${r.languageId}'.`),this.fileExtensionMap.set(n,e);this.languageIdMap.set(r.languageId,e),this.languageIdMap.size===1?this.singleton=e:this.singleton=void 0}getServices(e){var r,n;if(this.singleton!==void 0)return this.singleton;if(this.languageIdMap.size===0)throw new Error("The service registry is empty. Use `register` to register the services of a language.");let i=(n=(r=this.textDocuments)===null||r===void 0?void 0:r.get(e))===null||n===void 0?void 0:n.languageId;if(i!==void 0){let l=this.languageIdMap.get(i);if(l)return l}let a=vs.extname(e),s=this.fileExtensionMap.get(a);if(!s)throw i?new Error(`The service registry contains no services for the extension '${a}' for language '${i}'.`):new Error(`The service registry contains no services for the extension '${a}'.`);return s}hasServices(e){try{return this.getServices(e),!0}catch{return!1}}get all(){return Array.from(this.languageIdMap.values())}}});function Jp(t){return{code:t}}var X1,zb,Gb=N(()=>{"use strict";vo();H1();tl();Ys();o(Jp,"diagnosticData");(function(t){t.all=["fast","slow","built-in"]})(X1||(X1={}));zb=class{static{o(this,"ValidationRegistry")}constructor(e){this.entries=new Vl,this.entriesBefore=[],this.entriesAfter=[],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 l of s){let u={check:this.wrapValidationException(l,r),category:n};this.addEntry(i,u)}else if(typeof s=="function"){let l={check:this.wrapValidationException(s,r),category:n};this.addEntry(i,l)}else Uc(s)}}wrapValidationException(e,r){return async(n,i,a)=>{await this.handleException(()=>e.call(r,n,i,a),"An error occurred during validation",i,n)}}async handleException(e,r,n,i){try{await e()}catch(a){if(Kc(a))throw a;console.error(`${r}:`,a),a instanceof Error&&a.stack&&console.error(a.stack);let s=a instanceof Error?a.message:String(a);n("error",`${r}: ${s}`,{node:i})}}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=an(this.entries.get(e)).concat(this.entries.get("AstNode"));return r&&(n=n.filter(i=>r.includes(i.category))),n.map(i=>i.check)}registerBeforeDocument(e,r=this){this.entriesBefore.push(this.wrapPreparationException(e,"An error occurred during set-up of the validation",r))}registerAfterDocument(e,r=this){this.entriesAfter.push(this.wrapPreparationException(e,"An error occurred during tear-down of the validation",r))}wrapPreparationException(e,r,n){return async(i,a,s,l)=>{await this.handleException(()=>e.call(n,i,a,s,l),r,a,i)}}get checksBefore(){return this.entriesBefore}get checksAfter(){return this.entriesAfter}}});function mme(t){if(t.range)return t.range;let e;return typeof t.property=="string"?e=Xx(t.node.$cstNode,t.property,t.index):typeof t.keyword=="string"&&(e=RO(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 JS(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)}}function gme(t){switch(t){case"error":return Jp(rl.LexingError);case"warning":return Jp(rl.LexingWarning);case"info":return Jp(rl.LexingInfo);case"hint":return Jp(rl.LexingHint);default:throw new Error("Invalid diagnostic severity: "+t)}}var Vb,rl,dB=N(()=>{"use strict";el();zl();hs();Bl();tl();Gb();Vb=class{static{o(this,"DefaultDocumentValidator")}constructor(e){this.validationRegistry=e.validation.ValidationRegistry,this.metadata=e.LanguageMetaData}async validateDocument(e,r={},n=br.CancellationToken.None){let i=e.parseResult,a=[];if(await bi(n),(!r.categories||r.categories.includes("built-in"))&&(this.processLexingErrors(i,a,r),r.stopAfterLexingErrors&&a.some(s=>{var l;return((l=s.data)===null||l===void 0?void 0:l.code)===rl.LexingError})||(this.processParsingErrors(i,a,r),r.stopAfterParsingErrors&&a.some(s=>{var l;return((l=s.data)===null||l===void 0?void 0:l.code)===rl.ParsingError}))||(this.processLinkingErrors(e,a,r),r.stopAfterLinkingErrors&&a.some(s=>{var l;return((l=s.data)===null||l===void 0?void 0:l.code)===rl.LinkingError}))))return a;try{a.push(...await this.validateAst(i.value,r,n))}catch(s){if(Kc(s))throw s;console.error("An error occurred during validation:",s)}return await bi(n),a}processLexingErrors(e,r,n){var i,a,s;let l=[...e.lexerErrors,...(a=(i=e.lexerReport)===null||i===void 0?void 0:i.diagnostics)!==null&&a!==void 0?a:[]];for(let u of l){let h=(s=u.severity)!==null&&s!==void 0?s:"error",f={severity:JS(h),range:{start:{line:u.line-1,character:u.column-1},end:{line:u.line-1,character:u.column+u.length-1}},message:u.message,data:gme(h),source:this.getSource()};r.push(f)}}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 l={line:0,character:0};a={start:l,end:l}}else{let l={line:s.endLine-1,character:s.endColumn};a={start:l,end:l}}}}else a=xg(i.token);if(a){let s={severity:JS("error"),range:a,message:i.message,data:Jp(rl.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:rl.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=br.CancellationToken.None){let i=[],a=o((s,l,u)=>{i.push(this.toDiagnostic(s,l,u))},"acceptor");return await this.validateAstBefore(e,r,a,n),await this.validateAstNodes(e,r,a,n),await this.validateAstAfter(e,r,a,n),i}async validateAstBefore(e,r,n,i=br.CancellationToken.None){var a;let s=this.validationRegistry.checksBefore;for(let l of s)await bi(i),await l(e,n,(a=r.categories)!==null&&a!==void 0?a:[],i)}async validateAstNodes(e,r,n,i=br.CancellationToken.None){await Promise.all(Jo(e).map(async a=>{await bi(i);let s=this.validationRegistry.getChecks(a.$type,r.categories);for(let l of s)await l(a,n,i)}))}async validateAstAfter(e,r,n,i=br.CancellationToken.None){var a;let s=this.validationRegistry.checksAfter;for(let l of s)await bi(i),await l(e,n,(a=r.categories)!==null&&a!==void 0?a:[],i)}toDiagnostic(e,r,n){return{message:r,range:mme(n),severity:JS(e),code:n.code,codeDescription:n.codeDescription,tags:n.tags,relatedInformation:n.relatedInformation,data:n.data,source:this.getSource()}}getSource(){return this.metadata.languageId}};o(mme,"getDiagnosticRange");o(JS,"toDiagnosticSeverity");o(gme,"toDiagnosticData");(function(t){t.LexingError="lexing-error",t.LexingWarning="lexing-warning",t.LexingInfo="lexing-info",t.LexingHint="lexing-hint",t.ParsingError="parsing-error",t.LinkingError="linking-error"})(rl||(rl={}))});var Ub,Hb,pB=N(()=>{"use strict";el();Pl();hs();Bl();tl();Qc();Ub=class{static{o(this,"DefaultAstNodeDescriptionProvider")}constructor(e){this.astNodeLocator=e.workspace.AstNodeLocator,this.nameProvider=e.references.NameProvider}createDescription(e,r,n){let i=n??Va(e);r??(r=this.nameProvider.getName(e));let a=this.astNodeLocator.getAstNodePath(e);if(!r)throw new Error(`Node at path ${a} has no name.`);let s,l=o(()=>{var u;return s??(s=Lp((u=this.nameProvider.getNameNode(e))!==null&&u!==void 0?u:e.$cstNode))},"nameSegmentGetter");return{node:e,name:r,get nameSegment(){return l()},selectionSegment:Lp(e.$cstNode),type:e.$type,documentUri:i.uri,path:a}}},Hb=class{static{o(this,"DefaultReferenceDescriptionProvider")}constructor(e){this.nodeLocator=e.workspace.AstNodeLocator}async createDescriptions(e,r=br.CancellationToken.None){let n=[],i=e.parseResult.value;for(let a of Jo(i))await bi(r),a1(a).filter(s=>!_p(s)).forEach(s=>{let l=this.createDescription(s);l&&n.push(l)});return n}createDescription(e){let r=e.reference.$nodeDescription,n=e.reference.$refNode;if(!r||!n)return;let i=Va(e.container).uri;return{sourceUri:i,sourcePath:this.nodeLocator.getAstNodePath(e.container),targetUri:r.documentUri,targetPath:r.path,segment:Lp(n),local:vs.equals(r.documentUri,i)}}}});var qb,mB=N(()=>{"use strict";qb=class{static{o(this,"DefaultAstNodeLocator")}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 l=a.substring(0,s),u=parseInt(a.substring(s+1)),h=i[l];return h?.[u]}return i[a]},e)}}});var ei={};var e6=N(()=>{"use strict";Lr(ei,ja(ZP(),1))});var Wb,gB=N(()=>{"use strict";e6();tl();Wb=class{static{o(this,"DefaultConfigurationProvider")}constructor(e){this._ready=new gs,this.settings={},this.workspaceConfig=!1,this.onConfigurationSectionUpdateEmitter=new ei.Emitter,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=>{let n=e.settings[r];this.updateSectionConfiguration(r,n),this.onConfigurationSectionUpdateEmitter.fire({section:r,configuration:n})})}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}`}get onConfigurationSectionUpdate(){return this.onConfigurationSectionUpdateEmitter.event}}});var Gf,yB=N(()=>{"use strict";(function(t){function e(r){return{dispose:o(async()=>await r(),"dispose")}}o(e,"create"),t.create=e})(Gf||(Gf={}))});var Yb,vB=N(()=>{"use strict";el();yB();H1();tl();Ys();Gb();U1();Yb=class{static{o(this,"DefaultDocumentBuilder")}constructor(e){this.updateBuildOptions={validation:{categories:["built-in","fast"]}},this.updateListeners=[],this.buildPhaseListeners=new Vl,this.documentPhaseListeners=new Vl,this.buildState=new Map,this.documentBuildWaiters=new Map,this.currentState=Ln.Changed,this.langiumDocuments=e.workspace.LangiumDocuments,this.langiumDocumentFactory=e.workspace.LangiumDocumentFactory,this.textDocuments=e.workspace.TextDocuments,this.indexManager=e.workspace.IndexManager,this.serviceRegistry=e.ServiceRegistry}async build(e,r={},n=br.CancellationToken.None){var i,a;for(let s of e){let l=s.uri.toString();if(s.state===Ln.Validated){if(typeof r.validation=="boolean"&&r.validation)s.state=Ln.IndexedReferences,s.diagnostics=void 0,this.buildState.delete(l);else if(typeof r.validation=="object"){let u=this.buildState.get(l),h=(i=u?.result)===null||i===void 0?void 0:i.validationChecks;if(h){let d=((a=r.validation.categories)!==null&&a!==void 0?a:X1.all).filter(p=>!h.includes(p));d.length>0&&(this.buildState.set(l,{completed:!1,options:{validation:Object.assign(Object.assign({},r.validation),{categories:d})},result:u.result}),s.state=Ln.IndexedReferences)}}}else this.buildState.delete(l)}this.currentState=Ln.Changed,await this.emitUpdate(e.map(s=>s.uri),[]),await this.buildDocuments(e,r,n)}async update(e,r,n=br.CancellationToken.None){this.currentState=Ln.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 u=this.langiumDocumentFactory.fromModel({$type:"INVALID"},s);u.state=Ln.Changed,this.langiumDocuments.addDocument(u)}this.buildState.delete(s.toString())}let i=an(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,Ln.ComputedScopes),s.diagnostics=void 0}),await this.emitUpdate(e,r),await bi(n);let a=this.sortDocuments(this.langiumDocuments.all.filter(s=>{var l;return s.staten(e,r)))}sortDocuments(e){let r=0,n=e.length-1;for(;r=0&&!this.hasTextDocument(e[n]);)n--;rn.error!==void 0)?!0:this.indexManager.isAffected(e,r)}onUpdate(e){return this.updateListeners.push(e),Gf.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,Ln.Parsed,n,a=>this.langiumDocumentFactory.update(a,n)),await this.runCancelable(e,Ln.IndexedContent,n,a=>this.indexManager.updateContent(a,n)),await this.runCancelable(e,Ln.ComputedScopes,n,async a=>{let s=this.serviceRegistry.getServices(a.uri).references.ScopeComputation;a.precomputedScopes=await s.computeLocalScopes(a,n)}),await this.runCancelable(e,Ln.Linked,n,a=>this.serviceRegistry.getServices(a.uri).references.Linker.link(a,n)),await this.runCancelable(e,Ln.IndexedReferences,n,a=>this.indexManager.updateReferences(a,n));let i=e.filter(a=>this.shouldValidate(a));await this.runCancelable(i,Ln.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(l=>l.statel.state===r);await this.notifyBuildPhase(s,r,n),this.currentState=r}onBuildPhase(e,r){return this.buildPhaseListeners.add(e,r),Gf.create(()=>{this.buildPhaseListeners.delete(e,r)})}onDocumentPhase(e,r){return this.documentPhaseListeners.add(e,r),Gf.create(()=>{this.documentPhaseListeners.delete(e,r)})}waitUntil(e,r,n){let i;if(r&&"path"in r?i=r:n=r,n??(n=br.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(jc):new Promise((a,s)=>{let l=this.onBuildPhase(e,()=>{if(l.dispose(),u.dispose(),i){let h=this.langiumDocuments.getDocument(i);a(h?.uri)}else a(void 0)}),u=n.onCancellationRequested(()=>{l.dispose(),u.dispose(),s(jc)})})}async notifyDocumentPhase(e,r,n){let a=this.documentPhaseListeners.get(r).slice();for(let s of a)try{await s(e,n)}catch(l){if(!Kc(l))throw l}}async notifyBuildPhase(e,r,n){if(e.length===0)return;let a=this.buildPhaseListeners.get(r).slice();for(let s of a)await bi(n),await s(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,l=typeof s=="object"?s:void 0,u=await a.validateDocument(e,l,r);e.diagnostics?e.diagnostics.push(...u):e.diagnostics=u;let h=this.buildState.get(e.uri.toString());if(h){(n=h.result)!==null&&n!==void 0||(h.result={});let f=(i=l?.categories)!==null&&i!==void 0?i:X1.all;h.result.validationChecks?h.result.validationChecks.push(...f):h.result.validationChecks=[...f]}}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 Xb,xB=N(()=>{"use strict";hs();QS();el();Ys();Qc();Xb=class{static{o(this,"DefaultIndexManager")}constructor(e){this.symbolIndex=new Map,this.symbolByTypeIndex=new Zp,this.referenceIndex=new Map,this.documents=e.workspace.LangiumDocuments,this.serviceRegistry=e.ServiceRegistry,this.astReflection=e.AstReflection}findAllReferences(e,r){let n=Va(e).uri,i=[];return this.referenceIndex.forEach(a=>{a.forEach(s=>{vs.equals(s.targetUri,n)&&s.targetPath===r&&i.push(s)})}),an(i)}allElements(e,r){let n=an(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(l=>this.astReflection.isSubtype(l.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=br.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=br.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 jb,bB=N(()=>{"use strict";el();tl();Qc();jb=class{static{o(this,"DefaultWorkspaceManager")}constructor(e){this.initialBuildOptions={},this._ready=new gs,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}get workspaceFolders(){return this.folders}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=br.CancellationToken.None){let n=await this.performStartup(e);await bi(r),await this.documentBuilder.build(n,this.initialBuildOptions,r)}async performStartup(e){let r=this.serviceRegistry.all.flatMap(a=>a.LanguageMetaData.fileExtensions),n=[],i=o(a=>{n.push(a),this.langiumDocuments.hasDocument(a.uri)||this.langiumDocuments.addDocument(a)},"collector");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 ys.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 l=await this.langiumDocuments.getOrCreateDocument(s.uri);i(l)}}}))}includeEntry(e,r,n){let i=vs.basename(r.uri);if(i.startsWith("."))return!1;if(r.isDirectory)return i!=="node_modules"&&i!=="out";if(r.isFile){let a=vs.extname(r.uri);return n.includes(a)}return!1}}});function r6(t){return Array.isArray(t)&&(t.length===0||"name"in t[0])}function wB(t){return t&&"modes"in t&&"defaultMode"in t}function TB(t){return!r6(t)&&!wB(t)}var Kb,t6,e0,n6=N(()=>{"use strict";Ff();Kb=class{static{o(this,"DefaultLexerErrorMessageProvider")}buildUnexpectedCharactersMessage(e,r,n,i,a){return x1.buildUnexpectedCharactersMessage(e,r,n,i,a)}buildUnableToPopLexerModeMessage(e){return x1.buildUnableToPopLexerModeMessage(e)}},t6={mode:"full"},e0=class{static{o(this,"DefaultLexer")}constructor(e){this.errorMessageProvider=e.parser.LexerErrorMessageProvider,this.tokenBuilder=e.parser.TokenBuilder;let r=this.tokenBuilder.buildTokens(e.Grammar,{caseInsensitive:e.LanguageMetaData.caseInsensitive});this.tokenTypes=this.toTokenTypeDictionary(r);let n=TB(r)?Object.values(r):r,i=e.LanguageMetaData.mode==="production";this.chevrotainLexer=new Zn(n,{positionTracking:"full",skipValidations:i,errorMessageProvider:this.errorMessageProvider})}get definition(){return this.tokenTypes}tokenize(e,r=t6){var n,i,a;let s=this.chevrotainLexer.tokenize(e);return{tokens:s.tokens,errors:s.errors,hidden:(n=s.groups.hidden)!==null&&n!==void 0?n:[],report:(a=(i=this.tokenBuilder).flushLexingReport)===null||a===void 0?void 0:a.call(i,e)}}toTokenTypeDictionary(e){if(TB(e))return e;let r=wB(e)?Object.values(e.modes).flat():e,n={};return r.forEach(i=>n[i.name]=i),n}};o(r6,"isTokenTypeArray");o(wB,"isIMultiModeLexerDefinition");o(TB,"isTokenTypeDictionary")});function SB(t,e,r){let n,i;typeof t=="string"?(i=e,n=r):(i=t.range.start,n=e),i||(i=tn.create(0,0));let a=xme(t),s=AB(n),l=ije({lines:a,position:i,options:s});return cje({index:0,tokens:l,position:i})}function CB(t,e){let r=AB(e),n=xme(t);if(n.length===0)return!1;let i=n[0],a=n[n.length-1],s=r.start,l=r.end;return!!s?.exec(i)&&!!l?.exec(a)}function xme(t){let e="";return typeof t=="string"?e=t:e=t.text,e.split(TO)}function ije(t){var e,r,n;let i=[],a=t.position.line,s=t.position.character;for(let l=0;l=f.length){if(i.length>0){let m=tn.create(a,s);i.push({type:"break",content:"",range:Gr.create(m,m)})}}else{yme.lastIndex=d;let m=yme.exec(f);if(m){let g=m[0],y=m[1],v=tn.create(a,s+d),x=tn.create(a,s+d+g.length);i.push({type:"tag",content:y,range:Gr.create(v,x)}),d+=g.length,d=EB(f,d)}if(d0&&i[i.length-1].type==="break"?i.slice(0,-1):i}function aje(t,e,r,n){let i=[];if(t.length===0){let a=tn.create(r,n),s=tn.create(r,n+e.length);i.push({type:"text",content:e,range:Gr.create(a,s)})}else{let a=0;for(let l of t){let u=l.index,h=e.substring(a,u);h.length>0&&i.push({type:"text",content:e.substring(a,u),range:Gr.create(tn.create(r,a+n),tn.create(r,u+n))});let f=h.length+1,d=l[1];if(i.push({type:"inline-tag",content:d,range:Gr.create(tn.create(r,a+f+n),tn.create(r,a+f+d.length+n))}),f+=d.length,l.length===4){f+=l[2].length;let p=l[3];i.push({type:"text",content:p,range:Gr.create(tn.create(r,a+f+n),tn.create(r,a+f+p.length+n))})}else i.push({type:"text",content:"",range:Gr.create(tn.create(r,a+f+n),tn.create(r,a+f+n))});a=u+l[0].length}let s=e.substring(a);s.length>0&&i.push({type:"text",content:s,range:Gr.create(tn.create(r,a+n),tn.create(r,a+n+s.length))})}return i}function EB(t,e){let r=t.substring(e).match(sje);return r?e+r.index:t.length}function lje(t){let e=t.match(oje);if(e&&typeof e.index=="number")return e.index}function cje(t){var e,r,n,i;let a=tn.create(t.position.line,t.position.character);if(t.tokens.length===0)return new i6([],Gr.create(a,a));let s=[];for(;t.index0){let u=EB(e,a);s=e.substring(u),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:pje(e,s)}}function pje(t,e){try{return ys.parse(t,!0),`[${e}](${t})`}catch{return t}}function vme(t){return t.endsWith(` -`)?` -`:` - -`}var yme,nje,sje,oje,i6,Qb,Zb,a6,_B=N(()=>{"use strict";BP();l1();Qc();o(SB,"parseJSDoc");o(CB,"isJSDoc");o(xme,"getLines");yme=/\s*(@([\p{L}][\p{L}\p{N}]*)?)/uy,nje=/\{(@[\p{L}][\p{L}\p{N}]*)(\s*)([^\r\n}]+)?\}/gu;o(ije,"tokenize");o(aje,"buildInlineTokens");sje=/\S/,oje=/\s*$/;o(EB,"skipWhitespace");o(lje,"lastCharacter");o(cje,"parseJSDocComment");o(uje,"parseJSDocElement");o(hje,"appendEmptyLine");o(bme,"parseJSDocText");o(fje,"parseJSDocInline");o(Tme,"parseJSDocTag");o(wme,"parseJSDocLine");o(AB,"normalizeOptions");o(kB,"normalizeOption");i6=class{static{o(this,"JSDocCommentImpl")}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+=vme(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+=vme(r)+i}return r.trim()}},Qb=class{static{o(this,"JSDocTagImpl")}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=dje(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}};o(dje,"renderInlineTag");o(pje,"renderLinkDefault");Zb=class{static{o(this,"JSDocTextImpl")}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}},a6=class{static{o(this,"JSDocLineImpl")}constructor(e,r){this.text=e,this.range=r}toString(){return this.text}toMarkdown(){return this.text}};o(vme,"fillNewlines")});var Jb,DB=N(()=>{"use strict";hs();_B();Jb=class{static{o(this,"JSDocDocumentationProvider")}constructor(e){this.indexManager=e.shared.workspace.IndexManager,this.commentProvider=e.documentation.CommentProvider}getDocumentation(e){let r=this.commentProvider.getComment(e);if(r&&CB(r))return SB(r).toMarkdown({renderLink:o((i,a)=>this.documentationLinkRenderer(e,i,a),"renderLink"),renderTag:o(i=>this.documentationTagRenderer(e,i),"renderTag")})}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,l=a.nameSegment.range.start.character+1,u=a.documentUri.with({fragment:`L${s},${l}`});return`[${n}](${u.toString()})`}else return}documentationTagRenderer(e,r){}findNameInPrecomputedScopes(e,r){let i=Va(e).precomputedScopes;if(!i)return;let a=e;do{let l=i.get(a).find(u=>u.name===r);if(l)return l;a=a.$container}while(a)}findNameInGlobalScope(e,r){return this.indexManager.allElements().find(i=>i.name===r)}}});var e4,LB=N(()=>{"use strict";ZS();Bl();e4=class{static{o(this,"DefaultCommentProvider")}constructor(e){this.grammarConfig=()=>e.parser.GrammarConfig}getComment(e){var r;return hB(e)?e.$comment:(r=jI(e.$cstNode,this.grammarConfig().multilineCommentRules))===null||r===void 0?void 0:r.text}}});var t4,RB,NB,MB=N(()=>{"use strict";tl();e6();t4=class{static{o(this,"DefaultAsyncParser")}constructor(e){this.syncParser=e.parser.LangiumParser}parse(e,r){return Promise.resolve(this.syncParser.parse(e))}},RB=class{static{o(this,"AbstractThreadedAsyncParser")}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 gs,a,s=r.onCancellationRequested(()=>{a=setTimeout(()=>{this.terminateWorker(n)},this.terminationDelay)});return n.parse(e).then(l=>{let u=this.hydrator.hydrate(l);i.resolve(u)}).catch(l=>{i.reject(l)}).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 gs;return e.onCancellationRequested(()=>{let n=this.queue.indexOf(r);n>=0&&this.queue.splice(n,1),r.reject(jc)}),this.queue.push(r),r.promise}},NB=class{static{o(this,"ParserWorker")}get ready(){return this._ready}get onReady(){return this.onReadyEmitter.event}constructor(e,r,n,i){this.onReadyEmitter=new ei.Emitter,this.deferred=new gs,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(jc),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 gs,this.sendMessage(e),this.deferred.promise}}});var r4,IB=N(()=>{"use strict";el();tl();r4=class{static{o(this,"DefaultWorkspaceLock")}constructor(){this.previousTokenSource=new br.CancellationTokenSource,this.writeQueue=[],this.readQueue=[],this.done=!0}write(e){this.cancelWrite();let r=XS();return this.previousTokenSource=r,this.enqueue(this.writeQueue,e,r.token)}read(e){return this.enqueue(this.readQueue,e)}enqueue(e,r,n=br.CancellationToken.None){let i=new gs,a={action:r,deferred:i,cancellationToken:n};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){Kc(a)?n.resolve(void 0):n.reject(a)}})),this.done=!0,this.performNextOperation()}cancelWrite(){this.previousTokenSource.cancel()}}});var n4,OB=N(()=>{"use strict";FS();Hc();Pl();hs();H1();Bl();n4=class{static{o(this,"DefaultHydrator")}constructor(e){this.grammarElementIdMap=new Qp,this.tokenTypeIdMap=new Qp,this.grammar=e.Grammar,this.lexer=e.parser.Lexer,this.linker=e.references.Linker}dehydrate(e){return{lexerErrors:e.lexerErrors,lexerReport:e.lexerReport?this.dehydrateLexerReport(e.lexerReport):void 0,parserErrors:e.parserErrors.map(r=>Object.assign(Object.assign({},r),{message:r.message})),value:this.dehydrateAstNode(e.value,this.createDehyrationContext(e.value))}}dehydrateLexerReport(e){return e}createDehyrationContext(e){let r=new Map,n=new Map;for(let i of Jo(e))r.set(i,{});if(e.$cstNode)for(let i of Dp(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 l of a)li(l)?s.push(this.dehydrateAstNode(l,r)):Ta(l)?s.push(this.dehydrateReference(l,r)):s.push(l)}else li(a)?n[i]=this.dehydrateAstNode(a,r):Ta(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 Lx(e)?n.fullText=e.fullText:n.grammarSource=this.getGrammarElementId(e.grammarSource),n.hidden=e.hidden,n.astNode=r.astNodes.get(e.astNode),Ol(e)?n.content=e.content.map(i=>this.dehydrateCstNode(i,r)):If(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,lexerReport:e.lexerReport,parserErrors:e.parserErrors,value:this.hydrateAstNode(r,n)}}createHydrationContext(e){let r=new Map,n=new Map;for(let a of Jo(e))r.set(a,{});let i;if(e.$cstNode)for(let a of Dp(e.$cstNode)){let s;"fullText"in a?(s=new B1(a.fullText),i=s):"content"in a?s=new Xp:"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 l of a)li(l)?s.push(this.setParent(this.hydrateAstNode(l,r),n)):Ta(l)?s.push(this.hydrateReference(l,n,i,r)):s.push(l)}else li(a)?n[i]=this.setParent(this.hydrateAstNode(a,r),n):Ta(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),Ol(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,l=e.endLine,u=e.endColumn,h=e.hidden;return new Yp(n,i,{start:{line:a,character:s},end:{line:l,character:u}},r,h)}getTokenType(e){return this.lexer.definition[e]}getGrammarElementId(e){if(e)return this.grammarElementIdMap.size===0&&this.createGrammarElementIdMap(),this.grammarElementIdMap.get(e)}getGrammarElement(e){return this.grammarElementIdMap.size===0&&this.createGrammarElementIdMap(),this.grammarElementIdMap.getKey(e)}createGrammarElementIdMap(){let e=0;for(let r of Jo(this.grammar))Fx(r)&&this.grammarElementIdMap.set(r,e++)}}});function wa(t){return{documentation:{CommentProvider:o(e=>new e4(e),"CommentProvider"),DocumentationProvider:o(e=>new Jb(e),"DocumentationProvider")},parser:{AsyncParser:o(e=>new t4(e),"AsyncParser"),GrammarConfig:o(e=>PO(e),"GrammarConfig"),LangiumParser:o(e=>HP(e),"LangiumParser"),CompletionParser:o(e=>VP(e),"CompletionParser"),ValueConverter:o(()=>new Kp,"ValueConverter"),TokenBuilder:o(()=>new th,"TokenBuilder"),Lexer:o(e=>new e0(e),"Lexer"),ParserErrorMessageProvider:o(()=>new F1,"ParserErrorMessageProvider"),LexerErrorMessageProvider:o(()=>new Kb,"LexerErrorMessageProvider")},workspace:{AstNodeLocator:o(()=>new qb,"AstNodeLocator"),AstNodeDescriptionProvider:o(e=>new Ub(e),"AstNodeDescriptionProvider"),ReferenceDescriptionProvider:o(e=>new Hb(e),"ReferenceDescriptionProvider")},references:{Linker:o(e=>new Rb(e),"Linker"),NameProvider:o(()=>new Nb,"NameProvider"),ScopeProvider:o(e=>new Bb(e),"ScopeProvider"),ScopeComputation:o(e=>new Ib(e),"ScopeComputation"),References:o(e=>new Mb(e),"References")},serializer:{Hydrator:o(e=>new n4(e),"Hydrator"),JsonSerializer:o(e=>new Fb(e),"JsonSerializer")},validation:{DocumentValidator:o(e=>new Vb(e),"DocumentValidator"),ValidationRegistry:o(e=>new zb(e),"ValidationRegistry")},shared:o(()=>t.shared,"shared")}}function ka(t){return{ServiceRegistry:o(e=>new $b(e),"ServiceRegistry"),workspace:{LangiumDocuments:o(e=>new Lb(e),"LangiumDocuments"),LangiumDocumentFactory:o(e=>new Db(e),"LangiumDocumentFactory"),DocumentBuilder:o(e=>new Yb(e),"DocumentBuilder"),IndexManager:o(e=>new Xb(e),"IndexManager"),WorkspaceManager:o(e=>new jb(e),"WorkspaceManager"),FileSystemProvider:o(e=>t.fileSystemProvider(e),"FileSystemProvider"),WorkspaceLock:o(()=>new r4,"WorkspaceLock"),ConfigurationProvider:o(e=>new Wb(e),"ConfigurationProvider")}}}var PB=N(()=>{"use strict";BO();UP();qP();US();WP();aB();sB();oB();lB();uB();ZS();fB();dB();Gb();pB();mB();gB();vB();U1();xB();bB();n6();DB();LB();Ab();MB();IB();OB();o(wa,"createDefaultCoreModule");o(ka,"createDefaultSharedCoreModule")});function Hn(t,e,r,n,i,a,s,l,u){let h=[t,e,r,n,i,a,s,l,u].reduce(s6,{});return Ame(h)}function Cme(t){if(t&&t[Sme])for(let e of Object.values(t))Cme(e);return t}function Ame(t,e){let r=new Proxy({},{deleteProperty:o(()=>!1,"deleteProperty"),set:o(()=>{throw new Error("Cannot set property on injected service container")},"set"),get:o((n,i)=>i===Sme?!0:Eme(n,i,t,e||r),"get"),getOwnPropertyDescriptor:o((n,i)=>(Eme(n,i,t,e||r),Object.getOwnPropertyDescriptor(n,i)),"getOwnPropertyDescriptor"),has:o((n,i)=>i in t,"has"),ownKeys:o(()=>[...Object.getOwnPropertyNames(t)],"ownKeys")});return r}function Eme(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]===kme)throw new Error('Cycle detected. Please make "'+String(e)+'" lazy. Visit https://langium.org/docs/reference/configuration-services/#resolving-cyclic-dependencies');return t[e]}else if(e in r){let i=r[e];t[e]=kme;try{t[e]=typeof i=="function"?i(n):Ame(i,n)}catch(a){throw t[e]=a instanceof Error?a:void 0,a}return t[e]}else return}function s6(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]=s6(i,n):t[r]=n}}return t}var BB,Sme,kme,FB=N(()=>{"use strict";(function(t){t.merge=(e,r)=>s6(s6({},e),r)})(BB||(BB={}));o(Hn,"inject");Sme=Symbol("isProxy");o(Cme,"eagerLoad");o(Ame,"_inject");kme=Symbol();o(Eme,"_resolve");o(s6,"_merge")});var _me=N(()=>{"use strict"});var Dme=N(()=>{"use strict";LB();DB();_B()});var Lme=N(()=>{"use strict"});var Rme=N(()=>{"use strict";BO();Lme()});var $B,t0,o6,zB,Nme=N(()=>{"use strict";Ff();US();n6();$B={indentTokenName:"INDENT",dedentTokenName:"DEDENT",whitespaceTokenName:"WS",ignoreIndentationDelimiters:[]};(function(t){t.REGULAR="indentation-sensitive",t.IGNORE_INDENTATION="ignore-indentation"})(t0||(t0={}));o6=class extends th{static{o(this,"IndentationAwareTokenBuilder")}constructor(e=$B){super(),this.indentationStack=[0],this.whitespaceRegExp=/[ \t]+/y,this.options=Object.assign(Object.assign({},$B),e),this.indentTokenType=Pf({name:this.options.indentTokenName,pattern:this.indentMatcher.bind(this),line_breaks:!1}),this.dedentTokenType=Pf({name:this.options.dedentTokenName,pattern:this.dedentMatcher.bind(this),line_breaks:!1})}buildTokens(e,r){let n=super.buildTokens(e,r);if(!r6(n))throw new Error("Invalid tokens built by default builder");let{indentTokenName:i,dedentTokenName:a,whitespaceTokenName:s,ignoreIndentationDelimiters:l}=this.options,u,h,f,d=[];for(let p of n){for(let[m,g]of l)p.name===m?p.PUSH_MODE=t0.IGNORE_INDENTATION:p.name===g&&(p.POP_MODE=!0);p.name===a?u=p:p.name===i?h=p:p.name===s?f=p:d.push(p)}if(!u||!h||!f)throw new Error("Some indentation/whitespace tokens not found!");return l.length>0?{modes:{[t0.REGULAR]:[u,h,...d,f],[t0.IGNORE_INDENTATION]:[...d,f]},defaultMode:t0.REGULAR}:[u,h,f,...d]}flushLexingReport(e){let r=super.flushLexingReport(e);return Object.assign(Object.assign({},r),{remainingDedents:this.flushRemainingDedents(e)})}isStartOfLine(e,r){return r===0||`\r -`.includes(e[r-1])}matchWhitespace(e,r,n,i){var a;this.whitespaceRegExp.lastIndex=r;let s=this.whitespaceRegExp.exec(e);return{currIndentLevel:(a=s?.[0].length)!==null&&a!==void 0?a:0,prevIndentLevel:this.indentationStack.at(-1),match:s}}createIndentationTokenInstance(e,r,n,i){let a=this.getLineNumber(r,i);return Qu(e,n,i,i+n.length,a,a,1,n.length)}getLineNumber(e,r){return e.substring(0,r).split(/\r\n|\r|\n/).length}indentMatcher(e,r,n,i){if(!this.isStartOfLine(e,r))return null;let{currIndentLevel:a,prevIndentLevel:s,match:l}=this.matchWhitespace(e,r,n,i);return a<=s?null:(this.indentationStack.push(a),l)}dedentMatcher(e,r,n,i){var a,s,l,u;if(!this.isStartOfLine(e,r))return null;let{currIndentLevel:h,prevIndentLevel:f,match:d}=this.matchWhitespace(e,r,n,i);if(h>=f)return null;let p=this.indentationStack.lastIndexOf(h);if(p===-1)return this.diagnostics.push({severity:"error",message:`Invalid dedent level ${h} at offset: ${r}. Current indentation stack: ${this.indentationStack}`,offset:r,length:(s=(a=d?.[0])===null||a===void 0?void 0:a.length)!==null&&s!==void 0?s:0,line:this.getLineNumber(e,r),column:1}),null;let m=this.indentationStack.length-p-1,g=(u=(l=e.substring(0,r).match(/[\r\n]+$/))===null||l===void 0?void 0:l[0].length)!==null&&u!==void 0?u:1;for(let y=0;y1;)r.push(this.createIndentationTokenInstance(this.dedentTokenType,e,"",e.length)),this.indentationStack.pop();return this.indentationStack=[0],r}},zB=class extends e0{static{o(this,"IndentationAwareLexer")}constructor(e){if(super(e),e.parser.TokenBuilder instanceof o6)this.indentationTokenBuilder=e.parser.TokenBuilder;else throw new Error("IndentationAwareLexer requires an accompanying IndentationAwareTokenBuilder")}tokenize(e,r=t6){let n=super.tokenize(e),i=n.report;r?.mode==="full"&&n.tokens.push(...i.remainingDedents),i.remainingDedents=[];let{indentTokenType:a,dedentTokenType:s}=this.indentationTokenBuilder,l=a.tokenTypeIdx,u=s.tokenTypeIdx,h=[],f=n.tokens.length-1;for(let d=0;d=0&&h.push(n.tokens[f]),n.tokens=h,n}}});var Mme=N(()=>{"use strict"});var Ime=N(()=>{"use strict";MB();UP();FS();Nme();qP();Ab();n6();VS();Mme();US();WP()});var Ome=N(()=>{"use strict";aB();sB();oB();cB();lB();uB()});var Pme=N(()=>{"use strict";OB();ZS()});var l6,Ea,GB=N(()=>{"use strict";l6=class{static{o(this,"EmptyFileSystemProvider")}readFile(){throw new Error("No file system is available.")}async readDirectory(){return[]}},Ea={fileSystemProvider:o(()=>new l6,"fileSystemProvider")}});function yje(){let t=Hn(ka(Ea),gje),e=Hn(wa({shared:t}),mje);return t.ServiceRegistry.register(e),e}function Zc(t){var e;let r=yje(),n=r.serializer.JsonSerializer.deserialize(t);return r.shared.workspace.LangiumDocumentFactory.fromModel(n,ys.parse(`memory://${(e=n.name)!==null&&e!==void 0?e:"grammar"}.langium`)),n}var mje,gje,Bme=N(()=>{"use strict";PB();FB();Hc();GB();Qc();mje={Grammar:o(()=>{},"Grammar"),LanguageMetaData:o(()=>({caseInsensitive:!1,fileExtensions:[".langium"],languageId:"langium"}),"LanguageMetaData")},gje={AstReflection:o(()=>new i1,"AstReflection")};o(yje,"createMinimalGrammarServices");o(Zc,"loadGrammarFromJson")});var Xr={};dr(Xr,{AstUtils:()=>GE,BiMap:()=>Qp,Cancellation:()=>br,ContextCache:()=>Zp,CstUtils:()=>RE,DONE_RESULT:()=>za,Deferred:()=>gs,Disposable:()=>Gf,DisposableCache:()=>W1,DocumentCache:()=>KS,EMPTY_STREAM:()=>Rx,ErrorWithLocation:()=>Rp,GrammarUtils:()=>WE,MultiMap:()=>Vl,OperationCancelled:()=>jc,Reduction:()=>vg,RegExpUtils:()=>HE,SimpleCache:()=>Pb,StreamImpl:()=>po,TreeStreamImpl:()=>Gc,URI:()=>ys,UriUtils:()=>vs,WorkspaceCache:()=>Y1,assertUnreachable:()=>Uc,delayNextTick:()=>tB,interruptAndCheck:()=>bi,isOperationCancelled:()=>Kc,loadGrammarFromJson:()=>Zc,setInterruptionPeriod:()=>ome,startCancelableOperation:()=>XS,stream:()=>an});var Fme=N(()=>{"use strict";QS();e6();Lr(Xr,ei);H1();yB();NE();Bme();tl();Ys();Qc();hs();el();Bl();zl();l1()});var $me=N(()=>{"use strict";dB();Gb()});var zme=N(()=>{"use strict";pB();mB();gB();vB();U1();GB();xB();IB();bB()});var Sa={};dr(Sa,{AbstractAstReflection:()=>Ap,AbstractCstNode:()=>kb,AbstractLangiumParser:()=>Eb,AbstractParserErrorMessageProvider:()=>zS,AbstractThreadedAsyncParser:()=>RB,AstUtils:()=>GE,BiMap:()=>Qp,Cancellation:()=>br,CompositeCstNodeImpl:()=>Xp,ContextCache:()=>Zp,CstNodeBuilder:()=>wb,CstUtils:()=>RE,DEFAULT_TOKENIZE_OPTIONS:()=>t6,DONE_RESULT:()=>za,DatatypeSymbol:()=>$S,DefaultAstNodeDescriptionProvider:()=>Ub,DefaultAstNodeLocator:()=>qb,DefaultAsyncParser:()=>t4,DefaultCommentProvider:()=>e4,DefaultConfigurationProvider:()=>Wb,DefaultDocumentBuilder:()=>Yb,DefaultDocumentValidator:()=>Vb,DefaultHydrator:()=>n4,DefaultIndexManager:()=>Xb,DefaultJsonSerializer:()=>Fb,DefaultLangiumDocumentFactory:()=>Db,DefaultLangiumDocuments:()=>Lb,DefaultLexer:()=>e0,DefaultLexerErrorMessageProvider:()=>Kb,DefaultLinker:()=>Rb,DefaultNameProvider:()=>Nb,DefaultReferenceDescriptionProvider:()=>Hb,DefaultReferences:()=>Mb,DefaultScopeComputation:()=>Ib,DefaultScopeProvider:()=>Bb,DefaultServiceRegistry:()=>$b,DefaultTokenBuilder:()=>th,DefaultValueConverter:()=>Kp,DefaultWorkspaceLock:()=>r4,DefaultWorkspaceManager:()=>jb,Deferred:()=>gs,Disposable:()=>Gf,DisposableCache:()=>W1,DocumentCache:()=>KS,DocumentState:()=>Ln,DocumentValidator:()=>rl,EMPTY_SCOPE:()=>rje,EMPTY_STREAM:()=>Rx,EmptyFileSystem:()=>Ea,EmptyFileSystemProvider:()=>l6,ErrorWithLocation:()=>Rp,GrammarAST:()=>zx,GrammarUtils:()=>WE,IndentationAwareLexer:()=>zB,IndentationAwareTokenBuilder:()=>o6,JSDocDocumentationProvider:()=>Jb,LangiumCompletionParser:()=>Cb,LangiumParser:()=>Sb,LangiumParserErrorMessageProvider:()=>F1,LeafCstNodeImpl:()=>Yp,LexingMode:()=>t0,MapScope:()=>Ob,Module:()=>BB,MultiMap:()=>Vl,OperationCancelled:()=>jc,ParserWorker:()=>NB,Reduction:()=>vg,RegExpUtils:()=>HE,RootCstNodeImpl:()=>B1,SimpleCache:()=>Pb,StreamImpl:()=>po,StreamScope:()=>q1,TextDocument:()=>G1,TreeStreamImpl:()=>Gc,URI:()=>ys,UriUtils:()=>vs,ValidationCategory:()=>X1,ValidationRegistry:()=>zb,ValueConverter:()=>Xc,WorkspaceCache:()=>Y1,assertUnreachable:()=>Uc,createCompletionParser:()=>VP,createDefaultCoreModule:()=>wa,createDefaultSharedCoreModule:()=>ka,createGrammarConfig:()=>PO,createLangiumParser:()=>HP,createParser:()=>_b,delayNextTick:()=>tB,diagnosticData:()=>Jp,eagerLoad:()=>Cme,getDiagnosticRange:()=>mme,indentationBuilderDefaultOptions:()=>$B,inject:()=>Hn,interruptAndCheck:()=>bi,isAstNode:()=>li,isAstNodeDescription:()=>qI,isAstNodeWithComment:()=>hB,isCompositeCstNode:()=>Ol,isIMultiModeLexerDefinition:()=>wB,isJSDoc:()=>CB,isLeafCstNode:()=>If,isLinkingError:()=>_p,isNamed:()=>dme,isOperationCancelled:()=>Kc,isReference:()=>Ta,isRootCstNode:()=>Lx,isTokenTypeArray:()=>r6,isTokenTypeDictionary:()=>TB,loadGrammarFromJson:()=>Zc,parseJSDoc:()=>SB,prepareLangiumParser:()=>eme,setInterruptionPeriod:()=>ome,startCancelableOperation:()=>XS,stream:()=>an,toDiagnosticData:()=>gme,toDiagnosticSeverity:()=>JS});var vo=N(()=>{"use strict";PB();FB();fB();_me();Pl();Dme();Rme();Ime();Ome();Pme();Fme();Lr(Sa,Xr);$me();zme();Hc()});function Xme(t){return Ul.isInstance(t,i4)}function jme(t){return Ul.isInstance(t,j1)}function Kme(t){return Ul.isInstance(t,K1)}function Qme(t){return Ul.isInstance(t,Q1)}function Zme(t){return Ul.isInstance(t,a4)}function Jme(t){return Ul.isInstance(t,Z1)}function ege(t){return Ul.isInstance(t,s4)}function tge(t){return Ul.isInstance(t,o4)}function rge(t){return Ul.isInstance(t,l4)}function nge(t){return Ul.isInstance(t,c4)}function ige(t){return Ul.isInstance(t,u4)}var vje,Tt,QB,i4,c6,j1,u6,h6,VB,K1,UB,HB,qB,Q1,WB,a4,f6,YB,Z1,XB,s4,o4,l4,c4,g6,jB,u4,KB,d6,p6,m6,age,Ul,Gme,xje,Vme,bje,Ume,Tje,Hme,wje,qme,kje,Wme,Eje,Yme,Sje,Cje,Aje,_je,Dje,Lje,Rje,Nje,xs,ZB,JB,eF,tF,rF,nF,iF,Mje,Ije,Oje,Pje,Vf,rh,Ha,Bje,qa=N(()=>{"use strict";vo();vo();vo();vo();vje=Object.defineProperty,Tt=o((t,e)=>vje(t,"name",{value:e,configurable:!0}),"__name"),QB="Statement",i4="Architecture";o(Xme,"isArchitecture");Tt(Xme,"isArchitecture");c6="Axis",j1="Branch";o(jme,"isBranch");Tt(jme,"isBranch");u6="Checkout",h6="CherryPicking",VB="ClassDefStatement",K1="Commit";o(Kme,"isCommit");Tt(Kme,"isCommit");UB="Curve",HB="Edge",qB="Entry",Q1="GitGraph";o(Qme,"isGitGraph");Tt(Qme,"isGitGraph");WB="Group",a4="Info";o(Zme,"isInfo");Tt(Zme,"isInfo");f6="Item",YB="Junction",Z1="Merge";o(Jme,"isMerge");Tt(Jme,"isMerge");XB="Option",s4="Packet";o(ege,"isPacket");Tt(ege,"isPacket");o4="PacketBlock";o(tge,"isPacketBlock");Tt(tge,"isPacketBlock");l4="Pie";o(rge,"isPie");Tt(rge,"isPie");c4="PieSection";o(nge,"isPieSection");Tt(nge,"isPieSection");g6="Radar",jB="Service",u4="Treemap";o(ige,"isTreemap");Tt(ige,"isTreemap");KB="TreemapRow",d6="Direction",p6="Leaf",m6="Section",age=class extends Ap{static{o(this,"MermaidAstReflection")}static{Tt(this,"MermaidAstReflection")}getAllTypes(){return[i4,c6,j1,u6,h6,VB,K1,UB,d6,HB,qB,Q1,WB,a4,f6,YB,p6,Z1,XB,s4,o4,l4,c4,g6,m6,jB,QB,u4,KB]}computeIsSubtype(t,e){switch(t){case j1:case u6:case h6:case K1:case Z1:return this.isSubtype(QB,e);case d6:return this.isSubtype(Q1,e);case p6:case m6:return this.isSubtype(f6,e);default:return!1}}getReferenceType(t){let e=`${t.container.$type}:${t.property}`;switch(e){case"Entry:axis":return c6;default:throw new Error(`${e} is not a valid reference id.`)}}getTypeMetaData(t){switch(t){case i4:return{name:i4,properties:[{name:"accDescr"},{name:"accTitle"},{name:"edges",defaultValue:[]},{name:"groups",defaultValue:[]},{name:"junctions",defaultValue:[]},{name:"services",defaultValue:[]},{name:"title"}]};case c6:return{name:c6,properties:[{name:"label"},{name:"name"}]};case j1:return{name:j1,properties:[{name:"name"},{name:"order"}]};case u6:return{name:u6,properties:[{name:"branch"}]};case h6:return{name:h6,properties:[{name:"id"},{name:"parent"},{name:"tags",defaultValue:[]}]};case VB:return{name:VB,properties:[{name:"className"},{name:"styleText"}]};case K1:return{name:K1,properties:[{name:"id"},{name:"message"},{name:"tags",defaultValue:[]},{name:"type"}]};case UB:return{name:UB,properties:[{name:"entries",defaultValue:[]},{name:"label"},{name:"name"}]};case HB:return{name:HB,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 qB:return{name:qB,properties:[{name:"axis"},{name:"value"}]};case Q1:return{name:Q1,properties:[{name:"accDescr"},{name:"accTitle"},{name:"statements",defaultValue:[]},{name:"title"}]};case WB:return{name:WB,properties:[{name:"icon"},{name:"id"},{name:"in"},{name:"title"}]};case a4:return{name:a4,properties:[{name:"accDescr"},{name:"accTitle"},{name:"title"}]};case f6:return{name:f6,properties:[{name:"classSelector"},{name:"name"}]};case YB:return{name:YB,properties:[{name:"id"},{name:"in"}]};case Z1:return{name:Z1,properties:[{name:"branch"},{name:"id"},{name:"tags",defaultValue:[]},{name:"type"}]};case XB:return{name:XB,properties:[{name:"name"},{name:"value",defaultValue:!1}]};case s4:return{name:s4,properties:[{name:"accDescr"},{name:"accTitle"},{name:"blocks",defaultValue:[]},{name:"title"}]};case o4:return{name:o4,properties:[{name:"bits"},{name:"end"},{name:"label"},{name:"start"}]};case l4:return{name:l4,properties:[{name:"accDescr"},{name:"accTitle"},{name:"sections",defaultValue:[]},{name:"showData",defaultValue:!1},{name:"title"}]};case c4:return{name:c4,properties:[{name:"label"},{name:"value"}]};case g6:return{name:g6,properties:[{name:"accDescr"},{name:"accTitle"},{name:"axes",defaultValue:[]},{name:"curves",defaultValue:[]},{name:"options",defaultValue:[]},{name:"title"}]};case jB:return{name:jB,properties:[{name:"icon"},{name:"iconText"},{name:"id"},{name:"in"},{name:"title"}]};case u4:return{name:u4,properties:[{name:"accDescr"},{name:"accTitle"},{name:"title"},{name:"TreemapRows",defaultValue:[]}]};case KB:return{name:KB,properties:[{name:"indent"},{name:"item"}]};case d6:return{name:d6,properties:[{name:"accDescr"},{name:"accTitle"},{name:"dir"},{name:"statements",defaultValue:[]},{name:"title"}]};case p6:return{name:p6,properties:[{name:"classSelector"},{name:"name"},{name:"value"}]};case m6:return{name:m6,properties:[{name:"classSelector"},{name:"name"}]};default:return{name:t,properties:[]}}}},Ul=new age,xje=Tt(()=>Gme??(Gme=Zc(`{"$type":"Grammar","isDeclared":true,"name":"Info","imports":[],"rules":[{"$type":"ParserRule","entry":true,"name":"Info","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[],"cardinality":"*"},{"$type":"Keyword","value":"info"},{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[],"cardinality":"*"},{"$type":"Group","elements":[{"$type":"Keyword","value":"showInfo"},{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[],"cardinality":"*"}],"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[],"cardinality":"?"}]},"definesHiddenTokens":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"EOL","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[],"cardinality":"+"},{"$type":"EndOfFile"}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"TitleAndAccessibilities","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@1"},"arguments":[]}],"cardinality":"+"},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"BOOLEAN","type":{"$type":"ReturnType","name":"boolean"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"true"}},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"false"}}]},"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","name":"FLOAT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/[0-9]+\\\\.[0-9]+(?!\\\\.)/"},"fragment":false,"hidden":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":"NUMBER","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@7"}},{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@8"}}]},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"STRING","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\"|'([^'\\\\\\\\]|\\\\\\\\.)*'/"},"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":"NEWLINE","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/"},"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":[],"types":[],"usedGrammars":[]}`)),"InfoGrammar"),bje=Tt(()=>Vme??(Vme=Zc(`{"$type":"Grammar","isDeclared":true,"name":"Packet","imports":[],"rules":[{"$type":"ParserRule","entry":true,"name":"Packet","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[],"cardinality":"*"},{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"packet"},{"$type":"Keyword","value":"packet-beta"}]},{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]},{"$type":"Assignment","feature":"blocks","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[]}],"cardinality":"*"}]},"definesHiddenTokens":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"PacketBlock","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"Assignment","feature":"start","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":"-"},{"$type":"Assignment","feature":"end","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]}}],"cardinality":"?"}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"+"},{"$type":"Assignment","feature":"bits","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]}}]}]},{"$type":"Keyword","value":":"},{"$type":"Assignment","feature":"label","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@11"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"EOL","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[],"cardinality":"+"},{"$type":"EndOfFile"}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"TitleAndAccessibilities","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@7"},"arguments":[]}}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}],"cardinality":"+"},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"BOOLEAN","type":{"$type":"ReturnType","name":"boolean"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"true"}},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"false"}}]},"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","name":"FLOAT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/[0-9]+\\\\.[0-9]+(?!\\\\.)/"},"fragment":false,"hidden":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":"NUMBER","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@8"}},{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@9"}}]},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"STRING","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\"|'([^'\\\\\\\\]|\\\\\\\\.)*'/"},"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":"NEWLINE","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/"},"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":[],"types":[],"usedGrammars":[]}`)),"PacketGrammar"),Tje=Tt(()=>Ume??(Ume=Zc(`{"$type":"Grammar","isDeclared":true,"name":"Pie","imports":[],"rules":[{"$type":"ParserRule","entry":true,"name":"Pie","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[],"cardinality":"*"},{"$type":"Keyword","value":"pie"},{"$type":"Assignment","feature":"showData","operator":"?=","terminal":{"$type":"Keyword","value":"showData"},"cardinality":"?"},{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]},{"$type":"Assignment","feature":"sections","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"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@14"},"arguments":[]}},{"$type":"Keyword","value":":"},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"FLOAT_PIE","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/-?[0-9]+\\\\.[0-9]+(?!\\\\.)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"INT_PIE","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/-?(0|[1-9][0-9]*)(?!\\\\.)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NUMBER_PIE","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@2"}},{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@3"}}]},"fragment":false,"hidden":false},{"$type":"ParserRule","fragment":true,"name":"EOL","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[],"cardinality":"+"},{"$type":"EndOfFile"}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"TitleAndAccessibilities","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@10"},"arguments":[]}}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}],"cardinality":"+"},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"BOOLEAN","type":{"$type":"ReturnType","name":"boolean"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"true"}},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"false"}}]},"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","name":"FLOAT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/[0-9]+\\\\.[0-9]+(?!\\\\.)/"},"fragment":false,"hidden":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":"NUMBER","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@11"}},{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@12"}}]},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"STRING","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\"|'([^'\\\\\\\\]|\\\\\\\\.)*'/"},"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":"NEWLINE","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/"},"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":[],"types":[],"usedGrammars":[]}`)),"PieGrammar"),wje=Tt(()=>Hme??(Hme=Zc(`{"$type":"Grammar","isDeclared":true,"name":"Architecture","imports":[],"rules":[{"$type":"ParserRule","entry":true,"name":"Architecture","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@23"},"arguments":[],"cardinality":"*"},{"$type":"Keyword","value":"architecture-beta"},{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@23"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}],"cardinality":"*"}]},"definesHiddenTokens":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"Statement","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","fragment":true,"name":"LeftPort","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","fragment":true,"name":"RightPort","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","fragment":true,"name":"Arrow","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]},{"$type":"Assignment","feature":"lhsInto","operator":"?=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@11"},"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@29"},"arguments":[]}},{"$type":"Keyword","value":"-"}]}]},{"$type":"Assignment","feature":"rhsInto","operator":"?=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@11"},"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@22"},"arguments":[]}},{"$type":"Assignment","feature":"icon","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@28"},"arguments":[]},"cardinality":"?"},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@29"},"arguments":[]},"cardinality":"?"},{"$type":"Group","elements":[{"$type":"Keyword","value":"in"},{"$type":"Assignment","feature":"in","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@22"},"arguments":[]}}],"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"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@22"},"arguments":[]}},{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"iconText","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@21"},"arguments":[]}},{"$type":"Assignment","feature":"icon","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@28"},"arguments":[]}}],"cardinality":"?"},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@29"},"arguments":[]},"cardinality":"?"},{"$type":"Group","elements":[{"$type":"Keyword","value":"in"},{"$type":"Assignment","feature":"in","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@22"},"arguments":[]}}],"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"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@22"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":"in"},{"$type":"Assignment","feature":"in","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@22"},"arguments":[]}}],"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"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@22"},"arguments":[]}},{"$type":"Assignment","feature":"lhsGroup","operator":"?=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@10"},"arguments":[]},"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]},{"$type":"Assignment","feature":"rhsId","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@22"},"arguments":[]}},{"$type":"Assignment","feature":"rhsGroup","operator":"?=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@10"},"arguments":[]},"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"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":"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","fragment":true,"name":"EOL","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@23"},"arguments":[],"cardinality":"+"},{"$type":"EndOfFile"}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"TitleAndAccessibilities","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@15"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]}],"cardinality":"+"},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"BOOLEAN","type":{"$type":"ReturnType","name":"boolean"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"true"}},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"false"}}]},"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","name":"FLOAT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/[0-9]+\\\\.[0-9]+(?!\\\\.)/"},"fragment":false,"hidden":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":"NUMBER","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@18"}},{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@19"}}]},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"STRING","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\"|'([^'\\\\\\\\]|\\\\\\\\.)*'/"},"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":"NEWLINE","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/"},"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":"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}],"definesHiddenTokens":false,"hiddenTokens":[],"interfaces":[],"types":[],"usedGrammars":[]}`)),"ArchitectureGrammar"),kje=Tt(()=>qme??(qme=Zc(`{"$type":"Grammar","isDeclared":true,"name":"GitGraph","imports":[],"rules":[{"$type":"ParserRule","entry":true,"name":"GitGraph","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"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@2"},"arguments":[]},{"$type":"Keyword","value":":"}]}]},{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]},{"$type":"Assignment","feature":"statements","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}}],"cardinality":"*"}]},"definesHiddenTokens":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Statement","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@7"},"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@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"msg:","cardinality":"?"},{"$type":"Assignment","feature":"message","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"tag:"},{"$type":"Assignment","feature":"tags","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"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@8"},"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@24"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}]}},{"$type":"Group","elements":[{"$type":"Keyword","value":"order:"},{"$type":"Assignment","feature":"order","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@15"},"arguments":[]}}],"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"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@24"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}]}},{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"Keyword","value":"id:"},{"$type":"Assignment","feature":"id","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"tag:"},{"$type":"Assignment","feature":"tags","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"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@8"},"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@24"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"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@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"tag:"},{"$type":"Assignment","feature":"tags","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"parent:"},{"$type":"Assignment","feature":"parent","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]}],"cardinality":"*"},{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"EOL","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[],"cardinality":"+"},{"$type":"EndOfFile"}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"TitleAndAccessibilities","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@11"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[]}}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}],"cardinality":"+"},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"BOOLEAN","type":{"$type":"ReturnType","name":"boolean"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"true"}},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"false"}}]},"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","name":"FLOAT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/[0-9]+\\\\.[0-9]+(?!\\\\.)/"},"fragment":false,"hidden":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":"NUMBER","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@14"}},{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@15"}}]},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"STRING","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\"|'([^'\\\\\\\\]|\\\\\\\\.)*'/"},"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":"NEWLINE","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/"},"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":"TerminalRule","name":"REFERENCE","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/\\\\w([-\\\\./\\\\w]*[-\\\\w])?/"},"fragment":false,"hidden":false}],"definesHiddenTokens":false,"hiddenTokens":[],"interfaces":[],"types":[],"usedGrammars":[]}`)),"GitGraphGrammar"),Eje=Tt(()=>Wme??(Wme=Zc(`{"$type":"Grammar","isDeclared":true,"name":"Radar","imports":[],"rules":[{"$type":"ParserRule","entry":true,"name":"Radar","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[],"cardinality":"*"},{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"radar-beta"},{"$type":"Keyword","value":"radar-beta:"},{"$type":"Group","elements":[{"$type":"Keyword","value":"radar-beta"},{"$type":"Keyword","value":":"}]}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[],"cardinality":"*"},{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@10"},"arguments":[]},{"$type":"Group","elements":[{"$type":"Keyword","value":"axis"},{"$type":"Assignment","feature":"axes","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":","},{"$type":"Assignment","feature":"axes","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}}],"cardinality":"*"}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"curve"},{"$type":"Assignment","feature":"curves","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":","},{"$type":"Assignment","feature":"curves","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]}}],"cardinality":"*"}]},{"$type":"Group","elements":[{"$type":"Assignment","feature":"options","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@7"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":","},{"$type":"Assignment","feature":"options","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@7"},"arguments":[]}}],"cardinality":"*"}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]}],"cardinality":"*"}]},"definesHiddenTokens":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"Label","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"["},{"$type":"Assignment","feature":"label","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@18"},"arguments":[]}},{"$type":"Keyword","value":"]"}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Axis","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[],"cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Curve","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[],"cardinality":"?"},{"$type":"Keyword","value":"{"},{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]},{"$type":"Keyword","value":"}"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"Entries","definition":{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[],"cardinality":"*"},{"$type":"Assignment","feature":"entries","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":","},{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[],"cardinality":"*"},{"$type":"Assignment","feature":"entries","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]}}],"cardinality":"*"},{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[],"cardinality":"*"}]},{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[],"cardinality":"*"},{"$type":"Assignment","feature":"entries","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":","},{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[],"cardinality":"*"},{"$type":"Assignment","feature":"entries","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}}],"cardinality":"*"},{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[],"cardinality":"*"}]}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"DetailedEntry","returnType":{"$ref":"#/interfaces@0"},"definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"axis","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@2"},"terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]},"deprecatedSyntax":false}},{"$type":"Keyword","value":":","cardinality":"?"},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"NumberEntry","returnType":{"$ref":"#/interfaces@0"},"definition":{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Option","definition":{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Keyword","value":"showLegend"}},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@11"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Keyword","value":"ticks"}},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Keyword","value":"max"}},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Keyword","value":"min"}},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Keyword","value":"graticule"}},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}}]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"GRATICULE","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"circle"}},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"polygon"}}]},"fragment":false,"hidden":false},{"$type":"ParserRule","fragment":true,"name":"EOL","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[],"cardinality":"+"},{"$type":"EndOfFile"}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"TitleAndAccessibilities","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@14"},"arguments":[]}}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]}],"cardinality":"+"},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"BOOLEAN","type":{"$type":"ReturnType","name":"boolean"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"true"}},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"false"}}]},"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","name":"FLOAT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/[0-9]+\\\\.[0-9]+(?!\\\\.)/"},"fragment":false,"hidden":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":"NUMBER","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@15"}},{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@16"}}]},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"STRING","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\"|'([^'\\\\\\\\]|\\\\\\\\.)*'/"},"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":"NEWLINE","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/"},"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}],"interfaces":[{"$type":"Interface","name":"Entry","attributes":[{"$type":"TypeAttribute","name":"axis","isOptional":true,"type":{"$type":"ReferenceType","referenceType":{"$type":"SimpleType","typeRef":{"$ref":"#/rules@2"}}}},{"$type":"TypeAttribute","name":"value","type":{"$type":"SimpleType","primitiveType":"number"},"isOptional":false}],"superTypes":[]}],"definesHiddenTokens":false,"hiddenTokens":[],"types":[],"usedGrammars":[]}`)),"RadarGrammar"),Sje=Tt(()=>Yme??(Yme=Zc(`{"$type":"Grammar","isDeclared":true,"name":"Treemap","rules":[{"$type":"ParserRule","fragment":true,"name":"TitleAndAccessibilities","definition":{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]}}],"cardinality":"+"},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"BOOLEAN","type":{"$type":"ReturnType","name":"boolean"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"true"}},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"false"}}]},"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":"ParserRule","entry":true,"name":"Treemap","returnType":{"$ref":"#/interfaces@4"},"definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]},{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@0"},"arguments":[]},{"$type":"Assignment","feature":"TreemapRows","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@14"},"arguments":[]}}],"cardinality":"*"}]},"definesHiddenTokens":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"TREEMAP_KEYWORD","definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"treemap-beta"}},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"treemap"}}]},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"CLASS_DEF","definition":{"$type":"RegexToken","regex":"/classDef\\\\s+([a-zA-Z_][a-zA-Z0-9_]+)(?:\\\\s+([^;\\\\r\\\\n]*))?(?:;)?/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"STYLE_SEPARATOR","definition":{"$type":"CharacterRange","left":{"$type":"Keyword","value":":::"}},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"SEPARATOR","definition":{"$type":"CharacterRange","left":{"$type":"Keyword","value":":"}},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"COMMA","definition":{"$type":"CharacterRange","left":{"$type":"Keyword","value":","}},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WS","definition":{"$type":"RegexToken","regex":"/[ \\\\t]+/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"ML_COMMENT","definition":{"$type":"RegexToken","regex":"/\\\\%\\\\%[^\\\\n]*/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"NL","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/"},"fragment":false},{"$type":"ParserRule","name":"TreemapRow","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"indent","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]},"cardinality":"?"},{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"item","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@15"},"arguments":[]}]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"ClassDef","dataType":"string","definition":{"$type":"RuleCall","rule":{"$ref":"#/rules@7"},"arguments":[]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Item","returnType":{"$ref":"#/interfaces@0"},"definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@18"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Section","returnType":{"$ref":"#/interfaces@1"},"definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@23"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]},{"$type":"Assignment","feature":"classSelector","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]}}],"cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Leaf","returnType":{"$ref":"#/interfaces@2"},"definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@23"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[],"cardinality":"?"},{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@10"},"arguments":[]}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[],"cardinality":"?"},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@22"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]},{"$type":"Assignment","feature":"classSelector","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]}}],"cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"INDENTATION","definition":{"$type":"RegexToken","regex":"/[ \\\\t]{1,}/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ID2","definition":{"$type":"RegexToken","regex":"/[a-zA-Z_][a-zA-Z0-9_]*/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NUMBER2","definition":{"$type":"RegexToken","regex":"/[0-9_\\\\.\\\\,]+/"},"fragment":false,"hidden":false},{"$type":"ParserRule","name":"MyNumber","dataType":"number","definition":{"$type":"RuleCall","rule":{"$ref":"#/rules@21"},"arguments":[]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"STRING2","definition":{"$type":"RegexToken","regex":"/\\"[^\\"]*\\"|'[^']*'/"},"fragment":false,"hidden":false}],"interfaces":[{"$type":"Interface","name":"Item","attributes":[{"$type":"TypeAttribute","name":"name","type":{"$type":"SimpleType","primitiveType":"string"},"isOptional":false},{"$type":"TypeAttribute","name":"classSelector","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}}],"superTypes":[]},{"$type":"Interface","name":"Section","superTypes":[{"$ref":"#/interfaces@0"}],"attributes":[]},{"$type":"Interface","name":"Leaf","superTypes":[{"$ref":"#/interfaces@0"}],"attributes":[{"$type":"TypeAttribute","name":"value","type":{"$type":"SimpleType","primitiveType":"number"},"isOptional":false}]},{"$type":"Interface","name":"ClassDefStatement","attributes":[{"$type":"TypeAttribute","name":"className","type":{"$type":"SimpleType","primitiveType":"string"},"isOptional":false},{"$type":"TypeAttribute","name":"styleText","type":{"$type":"SimpleType","primitiveType":"string"},"isOptional":false}],"superTypes":[]},{"$type":"Interface","name":"Treemap","attributes":[{"$type":"TypeAttribute","name":"TreemapRows","type":{"$type":"ArrayType","elementType":{"$type":"SimpleType","typeRef":{"$ref":"#/rules@14"}}},"isOptional":false},{"$type":"TypeAttribute","name":"title","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"accTitle","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"accDescr","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}}],"superTypes":[]}],"definesHiddenTokens":false,"hiddenTokens":[],"imports":[],"types":[],"usedGrammars":[],"$comment":"/**\\n * Treemap grammar for Langium\\n * Converted from mindmap grammar\\n *\\n * The ML_COMMENT and NL hidden terminals handle whitespace, comments, and newlines\\n * before the treemap keyword, allowing for empty lines and comments before the\\n * treemap declaration.\\n */"}`)),"TreemapGrammar"),Cje={languageId:"info",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1,mode:"production"},Aje={languageId:"packet",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1,mode:"production"},_je={languageId:"pie",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1,mode:"production"},Dje={languageId:"architecture",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1,mode:"production"},Lje={languageId:"gitGraph",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1,mode:"production"},Rje={languageId:"radar",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1,mode:"production"},Nje={languageId:"treemap",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1,mode:"production"},xs={AstReflection:Tt(()=>new age,"AstReflection")},ZB={Grammar:Tt(()=>xje(),"Grammar"),LanguageMetaData:Tt(()=>Cje,"LanguageMetaData"),parser:{}},JB={Grammar:Tt(()=>bje(),"Grammar"),LanguageMetaData:Tt(()=>Aje,"LanguageMetaData"),parser:{}},eF={Grammar:Tt(()=>Tje(),"Grammar"),LanguageMetaData:Tt(()=>_je,"LanguageMetaData"),parser:{}},tF={Grammar:Tt(()=>wje(),"Grammar"),LanguageMetaData:Tt(()=>Dje,"LanguageMetaData"),parser:{}},rF={Grammar:Tt(()=>kje(),"Grammar"),LanguageMetaData:Tt(()=>Lje,"LanguageMetaData"),parser:{}},nF={Grammar:Tt(()=>Eje(),"Grammar"),LanguageMetaData:Tt(()=>Rje,"LanguageMetaData"),parser:{}},iF={Grammar:Tt(()=>Sje(),"Grammar"),LanguageMetaData:Tt(()=>Nje,"LanguageMetaData"),parser:{}},Mje=/accDescr(?:[\t ]*:([^\n\r]*)|\s*{([^}]*)})/,Ije=/accTitle[\t ]*:([^\n\r]*)/,Oje=/title([\t ][^\n\r]*|)/,Pje={ACC_DESCR:Mje,ACC_TITLE:Ije,TITLE:Oje},Vf=class extends Kp{static{o(this,"AbstractMermaidValueConverter")}static{Tt(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=Pje[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,` -`)}}},rh=class extends Vf{static{o(this,"CommonValueConverter")}static{Tt(this,"CommonValueConverter")}runCustomConverter(t,e,r){}},Ha=class extends th{static{o(this,"AbstractMermaidTokenBuilder")}static{Tt(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}},Bje=class extends Ha{static{o(this,"CommonTokenBuilder")}static{Tt(this,"CommonTokenBuilder")}}});function v6(t=Ea){let e=Hn(ka(t),xs),r=Hn(wa({shared:e}),rF,y6);return e.ServiceRegistry.register(r),{shared:e,GitGraph:r}}var Fje,y6,aF=N(()=>{"use strict";qa();vo();Fje=class extends Ha{static{o(this,"GitGraphTokenBuilder")}static{Tt(this,"GitGraphTokenBuilder")}constructor(){super(["gitGraph"])}},y6={parser:{TokenBuilder:Tt(()=>new Fje,"TokenBuilder"),ValueConverter:Tt(()=>new rh,"ValueConverter")}};o(v6,"createGitGraphServices");Tt(v6,"createGitGraphServices")});function b6(t=Ea){let e=Hn(ka(t),xs),r=Hn(wa({shared:e}),ZB,x6);return e.ServiceRegistry.register(r),{shared:e,Info:r}}var $je,x6,sF=N(()=>{"use strict";qa();vo();$je=class extends Ha{static{o(this,"InfoTokenBuilder")}static{Tt(this,"InfoTokenBuilder")}constructor(){super(["info","showInfo"])}},x6={parser:{TokenBuilder:Tt(()=>new $je,"TokenBuilder"),ValueConverter:Tt(()=>new rh,"ValueConverter")}};o(b6,"createInfoServices");Tt(b6,"createInfoServices")});function w6(t=Ea){let e=Hn(ka(t),xs),r=Hn(wa({shared:e}),JB,T6);return e.ServiceRegistry.register(r),{shared:e,Packet:r}}var zje,T6,oF=N(()=>{"use strict";qa();vo();zje=class extends Ha{static{o(this,"PacketTokenBuilder")}static{Tt(this,"PacketTokenBuilder")}constructor(){super(["packet"])}},T6={parser:{TokenBuilder:Tt(()=>new zje,"TokenBuilder"),ValueConverter:Tt(()=>new rh,"ValueConverter")}};o(w6,"createPacketServices");Tt(w6,"createPacketServices")});function E6(t=Ea){let e=Hn(ka(t),xs),r=Hn(wa({shared:e}),eF,k6);return e.ServiceRegistry.register(r),{shared:e,Pie:r}}var Gje,Vje,k6,lF=N(()=>{"use strict";qa();vo();Gje=class extends Ha{static{o(this,"PieTokenBuilder")}static{Tt(this,"PieTokenBuilder")}constructor(){super(["pie","showData"])}},Vje=class extends Vf{static{o(this,"PieValueConverter")}static{Tt(this,"PieValueConverter")}runCustomConverter(t,e,r){if(t.name==="PIE_SECTION_LABEL")return e.replace(/"/g,"").trim()}},k6={parser:{TokenBuilder:Tt(()=>new Gje,"TokenBuilder"),ValueConverter:Tt(()=>new Vje,"ValueConverter")}};o(E6,"createPieServices");Tt(E6,"createPieServices")});function C6(t=Ea){let e=Hn(ka(t),xs),r=Hn(wa({shared:e}),tF,S6);return e.ServiceRegistry.register(r),{shared:e,Architecture:r}}var Uje,Hje,S6,cF=N(()=>{"use strict";qa();vo();Uje=class extends Ha{static{o(this,"ArchitectureTokenBuilder")}static{Tt(this,"ArchitectureTokenBuilder")}constructor(){super(["architecture"])}},Hje=class extends Vf{static{o(this,"ArchitectureValueConverter")}static{Tt(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()}},S6={parser:{TokenBuilder:Tt(()=>new Uje,"TokenBuilder"),ValueConverter:Tt(()=>new Hje,"ValueConverter")}};o(C6,"createArchitectureServices");Tt(C6,"createArchitectureServices")});function _6(t=Ea){let e=Hn(ka(t),xs),r=Hn(wa({shared:e}),nF,A6);return e.ServiceRegistry.register(r),{shared:e,Radar:r}}var qje,A6,uF=N(()=>{"use strict";qa();vo();qje=class extends Ha{static{o(this,"RadarTokenBuilder")}static{Tt(this,"RadarTokenBuilder")}constructor(){super(["radar-beta"])}},A6={parser:{TokenBuilder:Tt(()=>new qje,"TokenBuilder"),ValueConverter:Tt(()=>new rh,"ValueConverter")}};o(_6,"createRadarServices");Tt(_6,"createRadarServices")});function sge(t){let e=t.validation.TreemapValidator,r=t.validation.ValidationRegistry;if(r){let n={Treemap:e.checkSingleRoot.bind(e)};r.register(n,e)}}function L6(t=Ea){let e=Hn(ka(t),xs),r=Hn(wa({shared:e}),iF,D6);return e.ServiceRegistry.register(r),sge(r),{shared:e,Treemap:r}}var Wje,Yje,Xje,jje,D6,hF=N(()=>{"use strict";qa();vo();Wje=class extends Ha{static{o(this,"TreemapTokenBuilder")}static{Tt(this,"TreemapTokenBuilder")}constructor(){super(["treemap"])}},Yje=/classDef\s+([A-Z_a-z]\w+)(?:\s+([^\n\r;]*))?;?/,Xje=class extends Vf{static{o(this,"TreemapValueConverter")}static{Tt(this,"TreemapValueConverter")}runCustomConverter(t,e,r){if(t.name==="NUMBER2")return parseFloat(e.replace(/,/g,""));if(t.name==="SEPARATOR")return e.substring(1,e.length-1);if(t.name==="STRING2")return e.substring(1,e.length-1);if(t.name==="INDENTATION")return e.length;if(t.name==="ClassDef"){if(typeof e!="string")return e;let n=Yje.exec(e);if(n)return{$type:"ClassDefStatement",className:n[1],styleText:n[2]||void 0}}}};o(sge,"registerValidationChecks");Tt(sge,"registerValidationChecks");jje=class{static{o(this,"TreemapValidator")}static{Tt(this,"TreemapValidator")}checkSingleRoot(t,e){let r;for(let n of t.TreemapRows)n.item&&(r===void 0&&n.indent===void 0?r=0:n.indent===void 0?e("error","Multiple root nodes are not allowed in a treemap.",{node:n,property:"item"}):r!==void 0&&r>=parseInt(n.indent,10)&&e("error","Multiple root nodes are not allowed in a treemap.",{node:n,property:"item"}))}},D6={parser:{TokenBuilder:Tt(()=>new Wje,"TokenBuilder"),ValueConverter:Tt(()=>new Xje,"ValueConverter")},validation:{TreemapValidator:Tt(()=>new jje,"TreemapValidator")}};o(L6,"createTreemapServices");Tt(L6,"createTreemapServices")});var oge={};dr(oge,{InfoModule:()=>x6,createInfoServices:()=>b6});var lge=N(()=>{"use strict";sF();qa()});var cge={};dr(cge,{PacketModule:()=>T6,createPacketServices:()=>w6});var uge=N(()=>{"use strict";oF();qa()});var hge={};dr(hge,{PieModule:()=>k6,createPieServices:()=>E6});var fge=N(()=>{"use strict";lF();qa()});var dge={};dr(dge,{ArchitectureModule:()=>S6,createArchitectureServices:()=>C6});var pge=N(()=>{"use strict";cF();qa()});var mge={};dr(mge,{GitGraphModule:()=>y6,createGitGraphServices:()=>v6});var gge=N(()=>{"use strict";aF();qa()});var yge={};dr(yge,{RadarModule:()=>A6,createRadarServices:()=>_6});var vge=N(()=>{"use strict";uF();qa()});var xge={};dr(xge,{TreemapModule:()=>D6,createTreemapServices:()=>L6});var bge=N(()=>{"use strict";hF();qa()});async function bs(t,e){let r=Kje[t];if(!r)throw new Error(`Unknown diagram type: ${t}`);nh[t]||await r();let i=nh[t].parse(e);if(i.lexerErrors.length>0||i.parserErrors.length>0)throw new Qje(i);return i.value}var nh,Kje,Qje,Uf=N(()=>{"use strict";aF();sF();oF();lF();cF();uF();hF();qa();nh={},Kje={info:Tt(async()=>{let{createInfoServices:t}=await Promise.resolve().then(()=>(lge(),oge)),e=t().Info.parser.LangiumParser;nh.info=e},"info"),packet:Tt(async()=>{let{createPacketServices:t}=await Promise.resolve().then(()=>(uge(),cge)),e=t().Packet.parser.LangiumParser;nh.packet=e},"packet"),pie:Tt(async()=>{let{createPieServices:t}=await Promise.resolve().then(()=>(fge(),hge)),e=t().Pie.parser.LangiumParser;nh.pie=e},"pie"),architecture:Tt(async()=>{let{createArchitectureServices:t}=await Promise.resolve().then(()=>(pge(),dge)),e=t().Architecture.parser.LangiumParser;nh.architecture=e},"architecture"),gitGraph:Tt(async()=>{let{createGitGraphServices:t}=await Promise.resolve().then(()=>(gge(),mge)),e=t().GitGraph.parser.LangiumParser;nh.gitGraph=e},"gitGraph"),radar:Tt(async()=>{let{createRadarServices:t}=await Promise.resolve().then(()=>(vge(),yge)),e=t().Radar.parser.LangiumParser;nh.radar=e},"radar"),treemap:Tt(async()=>{let{createTreemapServices:t}=await Promise.resolve().then(()=>(bge(),xge)),e=t().Treemap.parser.LangiumParser;nh.treemap=e},"treemap")};o(bs,"parse");Tt(bs,"parse");Qje=class extends Error{static{o(this,"MermaidParseError")}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{Tt(this,"MermaidParseError")}}});function nl(t,e){t.accDescr&&e.setAccDescription?.(t.accDescr),t.accTitle&&e.setAccTitle?.(t.accTitle),t.title&&e.setDiagramTitle?.(t.title)}var r0=N(()=>{"use strict";o(nl,"populateCommonDb")});var rn,R6=N(()=>{"use strict";rn={NORMAL:0,REVERSE:1,HIGHLIGHT:2,MERGE:3,CHERRY_PICK:4}});var J1,fF=N(()=>{"use strict";J1=class{constructor(e){this.init=e;this.records=this.init()}static{o(this,"ImperativeState")}reset(){this.records=this.init()}}});function dF(){return VL({length:7})}function Jje(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 Tge(t,e,r){let n=t.indexOf(e);n===-1?t.push(r):t.splice(n,1,r)}function kge(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 Dt.records.branches)Dt.records.branches.get(i)===e.id&&n.push(i);if(X.debug(n.join(" ")),e.parents&&e.parents.length==2&&e.parents[0]&&e.parents[1]){let i=Dt.records.commits.get(e.parents[0]);Tge(t,e,i),e.parents[1]&&t.push(Dt.records.commits.get(e.parents[1]))}else{if(e.parents.length==0)return;if(e.parents[0]){let i=Dt.records.commits.get(e.parents[0]);Tge(t,e,i)}}t=Jje(t,i=>i.id),kge(t)}var Zje,n0,Dt,eKe,tKe,rKe,nKe,iKe,aKe,sKe,wge,oKe,lKe,cKe,uKe,hKe,Ege,fKe,dKe,pKe,N6,pF=N(()=>{"use strict";pt();tr();qn();gr();ci();R6();fF();La();Zje=ur.gitGraph,n0=o(()=>Vn({...Zje,...Qt().gitGraph}),"getConfig"),Dt=new J1(()=>{let t=n0(),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:{}}});o(dF,"getID");o(Jje,"uniqBy");eKe=o(function(t){Dt.records.direction=t},"setDirection"),tKe=o(function(t){X.debug("options str",t),t=t?.trim(),t=t||"{}";try{Dt.records.options=JSON.parse(t)}catch(e){X.error("error while parsing gitGraph options",e.message)}},"setOptions"),rKe=o(function(){return Dt.records.options},"getOptions"),nKe=o(function(t){let e=t.msg,r=t.id,n=t.type,i=t.tags;X.info("commit",e,r,n,i),X.debug("Entering commit:",e,r,n,i);let a=n0();r=tt.sanitizeText(r,a),e=tt.sanitizeText(e,a),i=i?.map(l=>tt.sanitizeText(l,a));let s={id:r||Dt.records.seq+"-"+dF(),message:e,seq:Dt.records.seq++,type:n??rn.NORMAL,tags:i??[],parents:Dt.records.head==null?[]:[Dt.records.head.id],branch:Dt.records.currBranch};Dt.records.head=s,X.info("main branch",a.mainBranchName),Dt.records.commits.has(s.id)&&X.warn(`Commit ID ${s.id} already exists`),Dt.records.commits.set(s.id,s),Dt.records.branches.set(Dt.records.currBranch,s.id),X.debug("in pushCommit "+s.id)},"commit"),iKe=o(function(t){let e=t.name,r=t.order;if(e=tt.sanitizeText(e,n0()),Dt.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}")`);Dt.records.branches.set(e,Dt.records.head!=null?Dt.records.head.id:null),Dt.records.branchConfig.set(e,{name:e,order:r}),wge(e),X.debug("in createBranch")},"branch"),aKe=o(t=>{let e=t.branch,r=t.id,n=t.type,i=t.tags,a=n0();e=tt.sanitizeText(e,a),r&&(r=tt.sanitizeText(r,a));let s=Dt.records.branches.get(Dt.records.currBranch),l=Dt.records.branches.get(e),u=s?Dt.records.commits.get(s):void 0,h=l?Dt.records.commits.get(l):void 0;if(u&&h&&u.branch===e)throw new Error(`Cannot merge branch '${e}' into itself.`);if(Dt.records.currBranch===e){let p=new Error('Incorrect usage of "merge". Cannot merge a branch to itself');throw p.hash={text:`merge ${e}`,token:`merge ${e}`,expected:["branch abc"]},p}if(u===void 0||!u){let p=new Error(`Incorrect usage of "merge". Current branch (${Dt.records.currBranch})has no commits`);throw p.hash={text:`merge ${e}`,token:`merge ${e}`,expected:["commit"]},p}if(!Dt.records.branches.has(e)){let p=new Error('Incorrect usage of "merge". Branch to be merged ('+e+") does not exist");throw p.hash={text:`merge ${e}`,token:`merge ${e}`,expected:[`branch ${e}`]},p}if(h===void 0||!h){let p=new Error('Incorrect usage of "merge". Branch to be merged ('+e+") has no commits");throw p.hash={text:`merge ${e}`,token:`merge ${e}`,expected:['"commit"']},p}if(u===h){let p=new Error('Incorrect usage of "merge". Both branches have same head');throw p.hash={text:`merge ${e}`,token:`merge ${e}`,expected:["branch abc"]},p}if(r&&Dt.records.commits.has(r)){let p=new Error('Incorrect usage of "merge". Commit with id:'+r+" already exists, use different custom id");throw p.hash={text:`merge ${e} ${r} ${n} ${i?.join(" ")}`,token:`merge ${e} ${r} ${n} ${i?.join(" ")}`,expected:[`merge ${e} ${r}_UNIQUE ${n} ${i?.join(" ")}`]},p}let f=l||"",d={id:r||`${Dt.records.seq}-${dF()}`,message:`merged branch ${e} into ${Dt.records.currBranch}`,seq:Dt.records.seq++,parents:Dt.records.head==null?[]:[Dt.records.head.id,f],branch:Dt.records.currBranch,type:rn.MERGE,customType:n,customId:!!r,tags:i??[]};Dt.records.head=d,Dt.records.commits.set(d.id,d),Dt.records.branches.set(Dt.records.currBranch,d.id),X.debug(Dt.records.branches),X.debug("in mergeBranch")},"merge"),sKe=o(function(t){let e=t.id,r=t.targetId,n=t.tags,i=t.parent;X.debug("Entering cherryPick:",e,r,n);let a=n0();if(e=tt.sanitizeText(e,a),r=tt.sanitizeText(r,a),n=n?.map(u=>tt.sanitizeText(u,a)),i=tt.sanitizeText(i,a),!e||!Dt.records.commits.has(e)){let u=new Error('Incorrect usage of "cherryPick". Source commit id should exist and provided');throw u.hash={text:`cherryPick ${e} ${r}`,token:`cherryPick ${e} ${r}`,expected:["cherry-pick abc"]},u}let s=Dt.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 l=s.branch;if(s.type===rn.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||!Dt.records.commits.has(r)){if(l===Dt.records.currBranch){let d=new Error('Incorrect usage of "cherryPick". Source commit is already on current branch');throw d.hash={text:`cherryPick ${e} ${r}`,token:`cherryPick ${e} ${r}`,expected:["cherry-pick abc"]},d}let u=Dt.records.branches.get(Dt.records.currBranch);if(u===void 0||!u){let d=new Error(`Incorrect usage of "cherry-pick". Current branch (${Dt.records.currBranch})has no commits`);throw d.hash={text:`cherryPick ${e} ${r}`,token:`cherryPick ${e} ${r}`,expected:["cherry-pick abc"]},d}let h=Dt.records.commits.get(u);if(h===void 0||!h){let d=new Error(`Incorrect usage of "cherry-pick". Current branch (${Dt.records.currBranch})has no commits`);throw d.hash={text:`cherryPick ${e} ${r}`,token:`cherryPick ${e} ${r}`,expected:["cherry-pick abc"]},d}let f={id:Dt.records.seq+"-"+dF(),message:`cherry-picked ${s?.message} into ${Dt.records.currBranch}`,seq:Dt.records.seq++,parents:Dt.records.head==null?[]:[Dt.records.head.id,s.id],branch:Dt.records.currBranch,type:rn.CHERRY_PICK,tags:n?n.filter(Boolean):[`cherry-pick:${s.id}${s.type===rn.MERGE?`|parent:${i}`:""}`]};Dt.records.head=f,Dt.records.commits.set(f.id,f),Dt.records.branches.set(Dt.records.currBranch,f.id),X.debug(Dt.records.branches),X.debug("in cherryPick")}},"cherryPick"),wge=o(function(t){if(t=tt.sanitizeText(t,n0()),Dt.records.branches.has(t)){Dt.records.currBranch=t;let e=Dt.records.branches.get(Dt.records.currBranch);e===void 0||!e?Dt.records.head=null:Dt.records.head=Dt.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");o(Tge,"upsert");o(kge,"prettyPrintCommitHistory");oKe=o(function(){X.debug(Dt.records.commits);let t=Ege()[0];kge([t])},"prettyPrint"),lKe=o(function(){Dt.reset(),Sr()},"clear"),cKe=o(function(){return[...Dt.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"),uKe=o(function(){return Dt.records.branches},"getBranches"),hKe=o(function(){return Dt.records.commits},"getCommits"),Ege=o(function(){let t=[...Dt.records.commits.values()];return t.forEach(function(e){X.debug(e.id)}),t.sort((e,r)=>e.seq-r.seq),t},"getCommitsArray"),fKe=o(function(){return Dt.records.currBranch},"getCurrentBranch"),dKe=o(function(){return Dt.records.direction},"getDirection"),pKe=o(function(){return Dt.records.head},"getHead"),N6={commitType:rn,getConfig:n0,setDirection:eKe,setOptions:tKe,getOptions:rKe,commit:nKe,branch:iKe,merge:aKe,cherryPick:sKe,checkout:wge,prettyPrint:oKe,clear:lKe,getBranchesAsObjArray:cKe,getBranches:uKe,getCommits:hKe,getCommitsArray:Ege,getCurrentBranch:fKe,getDirection:dKe,getHead:pKe,setAccTitle:Rr,getAccTitle:Mr,getAccDescription:Or,setAccDescription:Ir,setDiagramTitle:$r,getDiagramTitle:Pr}});var mKe,gKe,yKe,vKe,xKe,bKe,TKe,Sge,Cge=N(()=>{"use strict";Uf();pt();r0();pF();R6();mKe=o((t,e)=>{nl(t,e),t.dir&&e.setDirection(t.dir);for(let r of t.statements)gKe(r,e)},"populate"),gKe=o((t,e)=>{let n={Commit:o(i=>e.commit(yKe(i)),"Commit"),Branch:o(i=>e.branch(vKe(i)),"Branch"),Merge:o(i=>e.merge(xKe(i)),"Merge"),Checkout:o(i=>e.checkout(bKe(i)),"Checkout"),CherryPicking:o(i=>e.cherryPick(TKe(i)),"CherryPicking")}[t.$type];n?n(t):X.error(`Unknown statement type: ${t.$type}`)},"parseStatement"),yKe=o(t=>({id:t.id,msg:t.message??"",type:t.type!==void 0?rn[t.type]:rn.NORMAL,tags:t.tags??void 0}),"parseCommit"),vKe=o(t=>({name:t.name,order:t.order??0}),"parseBranch"),xKe=o(t=>({branch:t.branch,id:t.id??"",type:t.type!==void 0?rn[t.type]:void 0,tags:t.tags??void 0}),"parseMerge"),bKe=o(t=>t.branch,"parseCheckout"),TKe=o(t=>({id:t.id,targetId:"",tags:t.tags?.length===0?void 0:t.tags,parent:t.parent}),"parseCherryPicking"),Sge={parse:o(async t=>{let e=await bs("gitGraph",t);X.debug(e),mKe(e,N6)},"parse")}});var wKe,il,qf,Wf,Jc,ih,i0,Ks,Qs,M6,h4,I6,Hf,Vr,kKe,_ge,Dge,EKe,SKe,CKe,AKe,_Ke,DKe,LKe,RKe,NKe,MKe,IKe,OKe,Age,PKe,f4,BKe,FKe,$Ke,zKe,GKe,Lge,Rge=N(()=>{"use strict";yr();Xt();pt();tr();R6();wKe=ge(),il=wKe?.gitGraph,qf=10,Wf=40,Jc=4,ih=2,i0=8,Ks=new Map,Qs=new Map,M6=30,h4=new Map,I6=[],Hf=0,Vr="LR",kKe=o(()=>{Ks.clear(),Qs.clear(),h4.clear(),Hf=0,I6=[],Vr="LR"},"clear"),_ge=o(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"),Dge=o(t=>{let e,r,n;return Vr==="BT"?(r=o((i,a)=>i<=a,"comparisonFunc"),n=1/0):(r=o((i,a)=>i>=a,"comparisonFunc"),n=0),t.forEach(i=>{let a=Vr==="TB"||Vr=="BT"?Qs.get(i)?.y:Qs.get(i)?.x;a!==void 0&&r(a,n)&&(e=i,n=a)}),e},"findClosestParent"),EKe=o(t=>{let e="",r=1/0;return t.forEach(n=>{let i=Qs.get(n).y;i<=r&&(e=n,r=i)}),e||void 0},"findClosestParentBT"),SKe=o((t,e,r)=>{let n=r,i=r,a=[];t.forEach(s=>{let l=e.get(s);if(!l)throw new Error(`Commit not found for key ${s}`);l.parents.length?(n=AKe(l),i=Math.max(n,i)):a.push(l),_Ke(l,n)}),n=i,a.forEach(s=>{DKe(s,n,r)}),t.forEach(s=>{let l=e.get(s);if(l?.parents.length){let u=EKe(l.parents);n=Qs.get(u).y-Wf,n<=i&&(i=n);let h=Ks.get(l.branch).pos,f=n-qf;Qs.set(l.id,{x:h,y:f})}})},"setParallelBTPos"),CKe=o(t=>{let e=Dge(t.parents.filter(n=>n!==null));if(!e)throw new Error(`Closest parent not found for commit ${t.id}`);let r=Qs.get(e)?.y;if(r===void 0)throw new Error(`Closest parent position not found for commit ${t.id}`);return r},"findClosestParentPos"),AKe=o(t=>CKe(t)+Wf,"calculateCommitPosition"),_Ke=o((t,e)=>{let r=Ks.get(t.branch);if(!r)throw new Error(`Branch not found for commit ${t.id}`);let n=r.pos,i=e+qf;return Qs.set(t.id,{x:n,y:i}),{x:n,y:i}},"setCommitPosition"),DKe=o((t,e,r)=>{let n=Ks.get(t.branch);if(!n)throw new Error(`Branch not found for commit ${t.id}`);let i=e+r,a=n.pos;Qs.set(t.id,{x:a,y:i})},"setRootPosition"),LKe=o((t,e,r,n,i,a)=>{if(a===rn.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%i0} ${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%i0} ${n}-inner`);else if(a===rn.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===rn.MERGE?9:10),s.attr("class",`commit ${e.id} commit${i%i0}`),a===rn.MERGE){let l=t.append("circle");l.attr("cx",r.x),l.attr("cy",r.y),l.attr("r",6),l.attr("class",`commit ${n} ${e.id} commit${i%i0}`)}a===rn.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%i0}`)}},"drawCommitBullet"),RKe=o((t,e,r,n)=>{if(e.type!==rn.CHERRY_PICK&&(e.customId&&e.type===rn.MERGE||e.type!==rn.MERGE)&&il?.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),l=s.node()?.getBBox();if(l&&(a.attr("x",r.posWithOffset-l.width/2-ih).attr("y",r.y+13.5).attr("width",l.width+2*ih).attr("height",l.height+2*ih),Vr==="TB"||Vr==="BT"?(a.attr("x",r.x-(l.width+4*Jc+5)).attr("y",r.y-12),s.attr("x",r.x-(l.width+4*Jc)).attr("y",r.y+l.height-12)):s.attr("x",r.posWithOffset-l.width/2),il.rotateCommitLabel))if(Vr==="TB"||Vr==="BT")s.attr("transform","rotate(-45, "+r.x+", "+r.y+")"),a.attr("transform","rotate(-45, "+r.x+", "+r.y+")");else{let u=-7.5-(l.width+10)/25*9.5,h=10+l.width/25*8.5;i.attr("transform","translate("+u+", "+h+") rotate(-45, "+n+", "+r.y+")")}}},"drawCommitLabel"),NKe=o((t,e,r,n)=>{if(e.tags.length>0){let i=0,a=0,s=0,l=[];for(let u of e.tags.reverse()){let h=t.insert("polygon"),f=t.append("circle"),d=t.append("text").attr("y",r.y-16-i).attr("class","tag-label").text(u),p=d.node()?.getBBox();if(!p)throw new Error("Tag bbox not found");a=Math.max(a,p.width),s=Math.max(s,p.height),d.attr("x",r.posWithOffset-p.width/2),l.push({tag:d,hole:f,rect:h,yOffset:i}),i+=20}for(let{tag:u,hole:h,rect:f,yOffset:d}of l){let p=s/2,m=r.y-19.2-d;if(f.attr("class","tag-label-bkg").attr("points",` - ${n-a/2-Jc/2},${m+ih} - ${n-a/2-Jc/2},${m-ih} - ${r.posWithOffset-a/2-Jc},${m-p-ih} - ${r.posWithOffset+a/2+Jc},${m-p-ih} - ${r.posWithOffset+a/2+Jc},${m+p+ih} - ${r.posWithOffset-a/2-Jc},${m+p+ih}`),h.attr("cy",m).attr("cx",n-a/2+Jc/2).attr("r",1.5).attr("class","tag-hole"),Vr==="TB"||Vr==="BT"){let g=n+d;f.attr("class","tag-label-bkg").attr("points",` - ${r.x},${g+2} - ${r.x},${g-2} - ${r.x+qf},${g-p-2} - ${r.x+qf+a+4},${g-p-2} - ${r.x+qf+a+4},${g+p+2} - ${r.x+qf},${g+p+2}`).attr("transform","translate(12,12) rotate(45, "+r.x+","+n+")"),h.attr("cx",r.x+Jc/2).attr("cy",g).attr("transform","translate(12,12) rotate(45, "+r.x+","+n+")"),u.attr("x",r.x+5).attr("y",g+3).attr("transform","translate(14,14) rotate(45, "+r.x+","+n+")")}}}},"drawCommitTags"),MKe=o(t=>{switch(t.customType??t.type){case rn.NORMAL:return"commit-normal";case rn.REVERSE:return"commit-reverse";case rn.HIGHLIGHT:return"commit-highlight";case rn.MERGE:return"commit-merge";case rn.CHERRY_PICK:return"commit-cherry-pick";default:return"commit-normal"}},"getCommitClassType"),IKe=o((t,e,r,n)=>{let i={x:0,y:0};if(t.parents.length>0){let a=Dge(t.parents);if(a){let s=n.get(a)??i;return e==="TB"?s.y+Wf:e==="BT"?(n.get(t.id)??i).y-Wf:s.x+Wf}}else return e==="TB"?M6:e==="BT"?(n.get(t.id)??i).y-Wf:0;return 0},"calculatePosition"),OKe=o((t,e,r)=>{let n=Vr==="BT"&&r?e:e+qf,i=Vr==="TB"||Vr==="BT"?n:Ks.get(t.branch)?.pos,a=Vr==="TB"||Vr==="BT"?Ks.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"),Age=o((t,e,r)=>{if(!il)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=Vr==="TB"||Vr==="BT"?M6:0,s=[...e.keys()],l=il?.parallelCommits??!1,u=o((f,d)=>{let p=e.get(f)?.seq,m=e.get(d)?.seq;return p!==void 0&&m!==void 0?p-m:0},"sortKeys"),h=s.sort(u);Vr==="BT"&&(l&&SKe(h,e,a),h=h.reverse()),h.forEach(f=>{let d=e.get(f);if(!d)throw new Error(`Commit not found for key ${f}`);l&&(a=IKe(d,Vr,a,Qs));let p=OKe(d,a,l);if(r){let m=MKe(d),g=d.customType??d.type,y=Ks.get(d.branch)?.index??0;LKe(n,d,p,m,y,g),RKe(i,d,p,a),NKe(i,d,p,a)}Vr==="TB"||Vr==="BT"?Qs.set(d.id,{x:p.x,y:p.posWithOffset}):Qs.set(d.id,{x:p.posWithOffset,y:p.y}),a=Vr==="BT"&&l?a+Wf:a+Wf+qf,a>Hf&&(Hf=a)})},"drawCommits"),PKe=o((t,e,r,n,i)=>{let s=(Vr==="TB"||Vr==="BT"?r.xh.branch===s,"isOnBranchToGetCurve"),u=o(h=>h.seq>t.seq&&h.sequ(h)&&l(h))},"shouldRerouteArrow"),f4=o((t,e,r=0)=>{let n=t+Math.abs(t-e)/2;if(r>5)return n;if(I6.every(s=>Math.abs(s-n)>=10))return I6.push(n),n;let a=Math.abs(t-e);return f4(t,e-a/5,r+1)},"findLane"),BKe=o((t,e,r,n)=>{let i=Qs.get(e.id),a=Qs.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=PKe(e,r,i,a,n),l="",u="",h=0,f=0,d=Ks.get(r.branch)?.index;r.type===rn.MERGE&&e.id!==r.parents[0]&&(d=Ks.get(e.branch)?.index);let p;if(s){l="A 10 10, 0, 0, 0,",u="A 10 10, 0, 0, 1,",h=10,f=10;let m=i.ya.x&&(l="A 20 20, 0, 0, 0,",u="A 20 20, 0, 0, 1,",h=20,f=20,r.type===rn.MERGE&&e.id!==r.parents[0]?p=`M ${i.x} ${i.y} L ${i.x} ${a.y-h} ${u} ${i.x-f} ${a.y} L ${a.x} ${a.y}`:p=`M ${i.x} ${i.y} L ${a.x+h} ${i.y} ${l} ${a.x} ${i.y+f} L ${a.x} ${a.y}`),i.x===a.x&&(p=`M ${i.x} ${i.y} L ${a.x} ${a.y}`)):Vr==="BT"?(i.xa.x&&(l="A 20 20, 0, 0, 0,",u="A 20 20, 0, 0, 1,",h=20,f=20,r.type===rn.MERGE&&e.id!==r.parents[0]?p=`M ${i.x} ${i.y} L ${i.x} ${a.y+h} ${l} ${i.x-f} ${a.y} L ${a.x} ${a.y}`:p=`M ${i.x} ${i.y} L ${a.x-h} ${i.y} ${l} ${a.x} ${i.y-f} L ${a.x} ${a.y}`),i.x===a.x&&(p=`M ${i.x} ${i.y} L ${a.x} ${a.y}`)):(i.ya.y&&(r.type===rn.MERGE&&e.id!==r.parents[0]?p=`M ${i.x} ${i.y} L ${a.x-h} ${i.y} ${l} ${a.x} ${i.y-f} L ${a.x} ${a.y}`:p=`M ${i.x} ${i.y} L ${i.x} ${a.y+h} ${u} ${i.x+f} ${a.y} L ${a.x} ${a.y}`),i.y===a.y&&(p=`M ${i.x} ${i.y} L ${a.x} ${a.y}`));if(p===void 0)throw new Error("Line definition not found");t.append("path").attr("d",p).attr("class","arrow arrow"+d%i0)},"drawArrow"),FKe=o((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=>{BKe(r,e.get(a),i,e)})})},"drawArrows"),$Ke=o((t,e)=>{let r=t.append("g");e.forEach((n,i)=>{let a=i%i0,s=Ks.get(n.name)?.pos;if(s===void 0)throw new Error(`Position not found for branch ${n.name}`);let l=r.append("line");l.attr("x1",0),l.attr("y1",s),l.attr("x2",Hf),l.attr("y2",s),l.attr("class","branch branch"+a),Vr==="TB"?(l.attr("y1",M6),l.attr("x1",s),l.attr("y2",Hf),l.attr("x2",s)):Vr==="BT"&&(l.attr("y1",Hf),l.attr("x1",s),l.attr("y2",M6),l.attr("x2",s)),I6.push(s);let u=n.name,h=_ge(u),f=r.insert("rect"),p=r.insert("g").attr("class","branchLabel").insert("g").attr("class","label branch-label"+a);p.node().appendChild(h);let m=h.getBBox();f.attr("class","branchLabelBkg label"+a).attr("rx",4).attr("ry",4).attr("x",-m.width-4-(il?.rotateCommitLabel===!0?30:0)).attr("y",-m.height/2+8).attr("width",m.width+18).attr("height",m.height+4),p.attr("transform","translate("+(-m.width-14-(il?.rotateCommitLabel===!0?30:0))+", "+(s-m.height/2-1)+")"),Vr==="TB"?(f.attr("x",s-m.width/2-10).attr("y",0),p.attr("transform","translate("+(s-m.width/2-5)+", 0)")):Vr==="BT"?(f.attr("x",s-m.width/2-10).attr("y",Hf),p.attr("transform","translate("+(s-m.width/2-5)+", "+Hf+")")):f.attr("transform","translate(-19, "+(s-m.height/2)+")")})},"drawBranches"),zKe=o(function(t,e,r,n,i){return Ks.set(t,{pos:e,index:r}),e+=50+(i?40:0)+(Vr==="TB"||Vr==="BT"?n.width/2:0),e},"setBranchPosition"),GKe=o(function(t,e,r,n){if(kKe(),X.debug("in gitgraph renderer",t+` -`,"id:",e,r),!il)throw new Error("GitGraph config not found");let i=il.rotateCommitLabel??!1,a=n.db;h4=a.getCommits();let s=a.getBranchesAsObjArray();Vr=a.getDirection();let l=qe(`[id="${e}"]`),u=0;s.forEach((h,f)=>{let d=_ge(h.name),p=l.append("g"),m=p.insert("g").attr("class","branchLabel"),g=m.insert("g").attr("class","label branch-label");g.node()?.appendChild(d);let y=d.getBBox();u=zKe(h.name,u,f,y,i),g.remove(),m.remove(),p.remove()}),Age(l,h4,!1),il.showBranches&&$Ke(l,s),FKe(l,h4),Age(l,h4,!0),qt.insertTitle(l,"gitTitleText",il.titleTopMargin??0,a.getDiagramTitle()),FA(void 0,l,il.diagramPadding,il.useMaxWidth)},"draw"),Lge={draw:GKe}});var VKe,Nge,Mge=N(()=>{"use strict";VKe=o(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"),Nge=VKe});var Ige={};dr(Ige,{diagram:()=>UKe});var UKe,Oge=N(()=>{"use strict";Cge();pF();Rge();Mge();UKe={parser:Sge,db:N6,renderer:Lge,styles:Nge}});var mF,Fge,$ge=N(()=>{"use strict";mF=(function(){var t=o(function(D,_,O,M){for(O=O||{},M=D.length;M--;O[D[M]]=_);return O},"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],l=[1,31],u=[1,32],h=[1,33],f=[1,34],d=[1,9],p=[1,10],m=[1,11],g=[1,12],y=[1,13],v=[1,14],x=[1,15],b=[1,16],T=[1,19],S=[1,20],w=[1,21],k=[1,22],A=[1,23],C=[1,25],R=[1,35],I={trace:o(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:o(function(_,O,M,P,B,F,G){var $=F.length-1;switch(B){case 1:return F[$-1];case 2:this.$=[];break;case 3:F[$-1].push(F[$]),this.$=F[$-1];break;case 4:case 5:this.$=F[$];break;case 6:case 7:this.$=[];break;case 8:P.setWeekday("monday");break;case 9:P.setWeekday("tuesday");break;case 10:P.setWeekday("wednesday");break;case 11:P.setWeekday("thursday");break;case 12:P.setWeekday("friday");break;case 13:P.setWeekday("saturday");break;case 14:P.setWeekday("sunday");break;case 15:P.setWeekend("friday");break;case 16:P.setWeekend("saturday");break;case 17:P.setDateFormat(F[$].substr(11)),this.$=F[$].substr(11);break;case 18:P.enableInclusiveEndDates(),this.$=F[$].substr(18);break;case 19:P.TopAxis(),this.$=F[$].substr(8);break;case 20:P.setAxisFormat(F[$].substr(11)),this.$=F[$].substr(11);break;case 21:P.setTickInterval(F[$].substr(13)),this.$=F[$].substr(13);break;case 22:P.setExcludes(F[$].substr(9)),this.$=F[$].substr(9);break;case 23:P.setIncludes(F[$].substr(9)),this.$=F[$].substr(9);break;case 24:P.setTodayMarker(F[$].substr(12)),this.$=F[$].substr(12);break;case 27:P.setDiagramTitle(F[$].substr(6)),this.$=F[$].substr(6);break;case 28:this.$=F[$].trim(),P.setAccTitle(this.$);break;case 29:case 30:this.$=F[$].trim(),P.setAccDescription(this.$);break;case 31:P.addSection(F[$].substr(8)),this.$=F[$].substr(8);break;case 33:P.addTask(F[$-1],F[$]),this.$="task";break;case 34:this.$=F[$-1],P.setClickEvent(F[$-1],F[$],null);break;case 35:this.$=F[$-2],P.setClickEvent(F[$-2],F[$-1],F[$]);break;case 36:this.$=F[$-2],P.setClickEvent(F[$-2],F[$-1],null),P.setLink(F[$-2],F[$]);break;case 37:this.$=F[$-3],P.setClickEvent(F[$-3],F[$-2],F[$-1]),P.setLink(F[$-3],F[$]);break;case 38:this.$=F[$-2],P.setClickEvent(F[$-2],F[$],null),P.setLink(F[$-2],F[$-1]);break;case 39:this.$=F[$-3],P.setClickEvent(F[$-3],F[$-1],F[$]),P.setLink(F[$-3],F[$-2]);break;case 40:this.$=F[$-1],P.setLink(F[$-1],F[$]);break;case 41:case 47:this.$=F[$-1]+" "+F[$];break;case 42:case 43:case 45:this.$=F[$-2]+" "+F[$-1]+" "+F[$];break;case 44:case 46:this.$=F[$-3]+" "+F[$-2]+" "+F[$-1]+" "+F[$];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:l,18:u,19:18,20:h,21:f,22:d,23:p,24:m,25:g,26:y,27:v,28:x,29:b,30:T,31:S,33:w,35:k,36:A,37:24,38:C,40:R},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:l,18:u,19:18,20:h,21:f,22:d,23:p,24:m,25:g,26:y,27:v,28:x,29:b,30:T,31:S,33:w,35:k,36:A,37:24,38:C,40:R},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:o(function(_,O){if(O.recoverable)this.trace(_);else{var M=new Error(_);throw M.hash=O,M}},"parseError"),parse:o(function(_){var O=this,M=[0],P=[],B=[null],F=[],G=this.table,$="",U=0,j=0,te=0,Y=2,oe=1,J=F.slice.call(arguments,1),ue=Object.create(this.lexer),re={yy:{}};for(var ee in this.yy)Object.prototype.hasOwnProperty.call(this.yy,ee)&&(re.yy[ee]=this.yy[ee]);ue.setInput(_,re.yy),re.yy.lexer=ue,re.yy.parser=this,typeof ue.yylloc>"u"&&(ue.yylloc={});var Z=ue.yylloc;F.push(Z);var K=ue.options&&ue.options.ranges;typeof re.yy.parseError=="function"?this.parseError=re.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function ae(Ce){M.length=M.length-2*Ce,B.length=B.length-Ce,F.length=F.length-Ce}o(ae,"popStack");function Q(){var Ce;return Ce=P.pop()||ue.lex()||oe,typeof Ce!="number"&&(Ce instanceof Array&&(P=Ce,Ce=P.pop()),Ce=O.symbols_[Ce]||Ce),Ce}o(Q,"lex");for(var de,ne,Te,q,Ve,pe,Be={},Ye,He,Le,Ie;;){if(Te=M[M.length-1],this.defaultActions[Te]?q=this.defaultActions[Te]:((de===null||typeof de>"u")&&(de=Q()),q=G[Te]&&G[Te][de]),typeof q>"u"||!q.length||!q[0]){var Ne="";Ie=[];for(Ye in G[Te])this.terminals_[Ye]&&Ye>Y&&Ie.push("'"+this.terminals_[Ye]+"'");ue.showPosition?Ne="Parse error on line "+(U+1)+`: -`+ue.showPosition()+` -Expecting `+Ie.join(", ")+", got '"+(this.terminals_[de]||de)+"'":Ne="Parse error on line "+(U+1)+": Unexpected "+(de==oe?"end of input":"'"+(this.terminals_[de]||de)+"'"),this.parseError(Ne,{text:ue.match,token:this.terminals_[de]||de,line:ue.yylineno,loc:Z,expected:Ie})}if(q[0]instanceof Array&&q.length>1)throw new Error("Parse Error: multiple actions possible at state: "+Te+", token: "+de);switch(q[0]){case 1:M.push(de),B.push(ue.yytext),F.push(ue.yylloc),M.push(q[1]),de=null,ne?(de=ne,ne=null):(j=ue.yyleng,$=ue.yytext,U=ue.yylineno,Z=ue.yylloc,te>0&&te--);break;case 2:if(He=this.productions_[q[1]][1],Be.$=B[B.length-He],Be._$={first_line:F[F.length-(He||1)].first_line,last_line:F[F.length-1].last_line,first_column:F[F.length-(He||1)].first_column,last_column:F[F.length-1].last_column},K&&(Be._$.range=[F[F.length-(He||1)].range[0],F[F.length-1].range[1]]),pe=this.performAction.apply(Be,[$,j,U,re.yy,q[1],B,F].concat(J)),typeof pe<"u")return pe;He&&(M=M.slice(0,-1*He*2),B=B.slice(0,-1*He),F=F.slice(0,-1*He)),M.push(this.productions_[q[1]][0]),B.push(Be.$),F.push(Be._$),Le=G[M[M.length-2]][M[M.length-1]],M.push(Le);break;case 3:return!0}}return!0},"parse")},L=(function(){var D={EOF:1,parseError:o(function(O,M){if(this.yy.parser)this.yy.parser.parseError(O,M);else throw new Error(O)},"parseError"),setInput:o(function(_,O){return this.yy=O||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:o(function(){var _=this._input[0];this.yytext+=_,this.yyleng++,this.offset++,this.match+=_,this.matched+=_;var O=_.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),_},"input"),unput:o(function(_){var O=_.length,M=_.split(/(?:\r\n?|\n)/g);this._input=_+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),M.length-1&&(this.yylineno-=M.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:M?(M.length===P.length?this.yylloc.first_column:0)+P[P.length-M.length].length-M[0].length:this.yylloc.first_column-O},this.options.ranges&&(this.yylloc.range=[B[0],B[0]+this.yyleng-O]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(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:o(function(_){this.unput(this.match.slice(_))},"less"),pastInput:o(function(){var _=this.matched.substr(0,this.matched.length-this.match.length);return(_.length>20?"...":"")+_.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var _=this.match;return _.length<20&&(_+=this._input.substr(0,20-_.length)),(_.substr(0,20)+(_.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var _=this.pastInput(),O=new Array(_.length+1).join("-");return _+this.upcomingInput()+` -`+O+"^"},"showPosition"),test_match:o(function(_,O){var M,P,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))),P=_[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+_[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],M=this.performAction.call(this,this.yy,this,O,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),M)return M;if(this._backtrack){for(var F in B)this[F]=B[F];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var _,O,M,P;this._more||(this.yytext="",this.match="");for(var B=this._currentRules(),F=0;FO[0].length)){if(O=M,P=F,this.options.backtrack_lexer){if(_=this.test_match(M,B[F]),_!==!1)return _;if(this._backtrack){O=!1;continue}else return!1}else if(!this.options.flex)break}return O?(_=this.test_match(O,B[P]),_!==!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:o(function(){var O=this.next();return O||this.lex()},"lex"),begin:o(function(O){this.conditionStack.push(O)},"begin"),popState:o(function(){var O=this.conditionStack.length-1;return O>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(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:o(function(O){return O=this.conditionStack.length-1-Math.abs(O||0),O>=0?this.conditionStack[O]:"INITIAL"},"topState"),pushState:o(function(O){this.begin(O)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:o(function(O,M,P,B){var F=B;switch(P){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 D})();I.lexer=L;function E(){this.yy={}}return o(E,"Parser"),E.prototype=I,I.Parser=E,new E})();mF.parser=mF;Fge=mF});var zge=Da((gF,yF)=>{"use strict";(function(t,e){typeof gF=="object"&&typeof yF<"u"?yF.exports=e():typeof define=="function"&&define.amd?define(e):(t=typeof globalThis<"u"?globalThis:t||self).dayjs_plugin_isoWeek=e()})(gF,(function(){"use strict";var t="day";return function(e,r,n){var i=o(function(l){return l.add(4-l.isoWeekday(),t)},"a"),a=r.prototype;a.isoWeekYear=function(){return i(this).year()},a.isoWeek=function(l){if(!this.$utils().u(l))return this.add(7*(l-this.isoWeek()),t);var u,h,f,d,p=i(this),m=(u=this.isoWeekYear(),h=this.$u,f=(h?n.utc:n)().year(u).startOf("year"),d=4-f.isoWeekday(),f.isoWeekday()>4&&(d+=7),f.add(d,t));return p.diff(m,"week")+1},a.isoWeekday=function(l){return this.$utils().u(l)?this.day()||7:this.day(this.day()%7?l:l-7)};var s=a.startOf;a.startOf=function(l,u){var h=this.$utils(),f=!!h.u(u)||u;return h.p(l)==="isoweek"?f?this.date(this.date()-(this.isoWeekday()-1)).startOf("day"):this.date(this.date()-1-(this.isoWeekday()-1)+7).endOf("day"):s.bind(this)(l,u)}}}))});var Gge=Da((vF,xF)=>{"use strict";(function(t,e){typeof vF=="object"&&typeof xF<"u"?xF.exports=e():typeof define=="function"&&define.amd?define(e):(t=typeof globalThis<"u"?globalThis:t||self).dayjs_plugin_customParseFormat=e()})(vF,(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={},l=o(function(g){return(g=+g)+(g>68?1900:2e3)},"a"),u=o(function(g){return function(y){this[g]=+y}},"f"),h=[/[+-]\d\d:?(\d\d)?|Z/,function(g){(this.zone||(this.zone={})).offset=(function(y){if(!y||y==="Z")return 0;var v=y.match(/([+-]|\d\d)/g),x=60*v[1]+(+v[2]||0);return x===0?0:v[0]==="+"?-x:x})(g)}],f=o(function(g){var y=s[g];return y&&(y.indexOf?y:y.s.concat(y.f))},"u"),d=o(function(g,y){var v,x=s.meridiem;if(x){for(var b=1;b<=24;b+=1)if(g.indexOf(x(b,0,y))>-1){v=b>12;break}}else v=g===(y?"pm":"PM");return v},"d"),p={A:[a,function(g){this.afternoon=d(g,!1)}],a:[a,function(g){this.afternoon=d(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,u("seconds")],ss:[i,u("seconds")],m:[i,u("minutes")],mm:[i,u("minutes")],H:[i,u("hours")],h:[i,u("hours")],HH:[i,u("hours")],hh:[i,u("hours")],D:[i,u("day")],DD:[n,u("day")],Do:[a,function(g){var y=s.ordinal,v=g.match(/\d+/);if(this.day=v[0],y)for(var x=1;x<=31;x+=1)y(x).replace(/\[|\]/g,"")===g&&(this.day=x)}],w:[i,u("week")],ww:[n,u("week")],M:[i,u("month")],MM:[n,u("month")],MMM:[a,function(g){var y=f("months"),v=(f("monthsShort")||y.map((function(x){return x.slice(0,3)}))).indexOf(g)+1;if(v<1)throw new Error;this.month=v%12||v}],MMMM:[a,function(g){var y=f("months").indexOf(g)+1;if(y<1)throw new Error;this.month=y%12||y}],Y:[/[+-]?\d+/,u("year")],YY:[n,function(g){this.year=l(g)}],YYYY:[/\d{4}/,u("year")],Z:h,ZZ:h};function m(g){var y,v;y=g,v=s&&s.formats;for(var x=(g=y.replace(/(\[[^\]]+])|(LTS?|l{1,4}|L{1,4})/g,(function(C,R,I){var L=I&&I.toUpperCase();return R||v[I]||t[I]||v[L].replace(/(\[[^\]]+])|(MMMM|MM|DD|dddd)/g,(function(E,D,_){return D||_.slice(1)}))}))).match(e),b=x.length,T=0;T-1)return new Date((M==="X"?1e3:1)*O);var F=m(M)(O),G=F.year,$=F.month,U=F.day,j=F.hours,te=F.minutes,Y=F.seconds,oe=F.milliseconds,J=F.zone,ue=F.week,re=new Date,ee=U||(G||$?1:re.getDate()),Z=G||re.getFullYear(),K=0;G&&!$||(K=$>0?$-1:re.getMonth());var ae,Q=j||0,de=te||0,ne=Y||0,Te=oe||0;return J?new Date(Date.UTC(Z,K,ee,Q,de,ne,Te+60*J.offset*1e3)):P?new Date(Date.UTC(Z,K,ee,Q,de,ne,Te)):(ae=new Date(Z,K,ee,Q,de,ne,Te),ue&&(ae=B(ae).week(ue).toDate()),ae)}catch{return new Date("")}})(S,A,w,v),this.init(),L&&L!==!0&&(this.$L=this.locale(L).$L),I&&S!=this.format(A)&&(this.$d=new Date("")),s={}}else if(A instanceof Array)for(var E=A.length,D=1;D<=E;D+=1){k[1]=A[D-1];var _=v.apply(this,k);if(_.isValid()){this.$d=_.$d,this.$L=_.$L,this.init();break}D===E&&(this.$d=new Date(""))}else b.call(this,T)}}}))});var Vge=Da((bF,TF)=>{"use strict";(function(t,e){typeof bF=="object"&&typeof TF<"u"?TF.exports=e():typeof define=="function"&&define.amd?define(e):(t=typeof globalThis<"u"?globalThis:t||self).dayjs_plugin_advancedFormat=e()})(bF,(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 l=this.$utils(),u=(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(h){switch(h){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 l.s(a.week(),h==="w"?1:2,"0");case"W":case"WW":return l.s(a.isoWeek(),h==="W"?1:2,"0");case"k":case"kk":return l.s(String(a.$H===0?24:a.$H),h==="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 h}}));return n.bind(this)(u)}}}))});function i1e(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 qge,xo,Wge,Yge,Xge,Uge,eu,SF,CF,AF,d4,p4,_F,DF,B6,ty,LF,jge,RF,m4,NF,MF,F6,wF,YKe,XKe,jKe,KKe,QKe,ZKe,JKe,eQe,tQe,rQe,nQe,iQe,aQe,sQe,oQe,lQe,cQe,uQe,hQe,fQe,dQe,pQe,mQe,Kge,gQe,yQe,vQe,Qge,xQe,kF,Zge,Jge,O6,ey,bQe,TQe,EF,P6,Vi,e1e,wQe,a0,kQe,Hge,EQe,t1e,SQe,r1e,CQe,AQe,n1e,a1e=N(()=>{"use strict";qge=ja(tm(),1),xo=ja(X4(),1),Wge=ja(zge(),1),Yge=ja(Gge(),1),Xge=ja(Vge(),1);pt();Xt();tr();ci();xo.default.extend(Wge.default);xo.default.extend(Yge.default);xo.default.extend(Xge.default);Uge={friday:5,saturday:6},eu="",SF="",AF="",d4=[],p4=[],_F=new Map,DF=[],B6=[],ty="",LF="",jge=["active","done","crit","milestone","vert"],RF=[],m4=!1,NF=!1,MF="sunday",F6="saturday",wF=0,YKe=o(function(){DF=[],B6=[],ty="",RF=[],O6=0,EF=void 0,P6=void 0,Vi=[],eu="",SF="",LF="",CF=void 0,AF="",d4=[],p4=[],m4=!1,NF=!1,wF=0,_F=new Map,Sr(),MF="sunday",F6="saturday"},"clear"),XKe=o(function(t){SF=t},"setAxisFormat"),jKe=o(function(){return SF},"getAxisFormat"),KKe=o(function(t){CF=t},"setTickInterval"),QKe=o(function(){return CF},"getTickInterval"),ZKe=o(function(t){AF=t},"setTodayMarker"),JKe=o(function(){return AF},"getTodayMarker"),eQe=o(function(t){eu=t},"setDateFormat"),tQe=o(function(){m4=!0},"enableInclusiveEndDates"),rQe=o(function(){return m4},"endDatesAreInclusive"),nQe=o(function(){NF=!0},"enableTopAxis"),iQe=o(function(){return NF},"topAxisEnabled"),aQe=o(function(t){LF=t},"setDisplayMode"),sQe=o(function(){return LF},"getDisplayMode"),oQe=o(function(){return eu},"getDateFormat"),lQe=o(function(t){d4=t.toLowerCase().split(/[\s,]+/)},"setIncludes"),cQe=o(function(){return d4},"getIncludes"),uQe=o(function(t){p4=t.toLowerCase().split(/[\s,]+/)},"setExcludes"),hQe=o(function(){return p4},"getExcludes"),fQe=o(function(){return _F},"getLinks"),dQe=o(function(t){ty=t,DF.push(t)},"addSection"),pQe=o(function(){return DF},"getSections"),mQe=o(function(){let t=Hge(),e=10,r=0;for(;!t&&r[\d\w- ]+)/.exec(r);if(i!==null){let s=null;for(let u of i.groups.ids.split(" ")){let h=a0(u);h!==void 0&&(!s||h.endTime>s.endTime)&&(s=h)}if(s)return s.endTime;let l=new Date;return l.setHours(0,0,0,0),l}let a=(0,xo.default)(r,e.trim(),!0);if(a.isValid())return a.toDate();{X.debug("Invalid date:"+r),X.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"),Zge=o(function(t){let e=/^(\d+(?:\.\d+)?)([Mdhmswy]|ms)$/.exec(t.trim());return e!==null?[Number.parseFloat(e[1]),e[2]]:[NaN,"ms"]},"parseDuration"),Jge=o(function(t,e,r,n=!1){r=r.trim();let a=/^until\s+(?[\d\w- ]+)/.exec(r);if(a!==null){let f=null;for(let p of a.groups.ids.split(" ")){let m=a0(p);m!==void 0&&(!f||m.startTime{window.open(r,"_self")}),_F.set(n,r))}),t1e(t,"clickable")},"setLink"),t1e=o(function(t,e){t.split(",").forEach(function(r){let n=a0(r);n!==void 0&&n.classes.push(e)})},"setClass"),SQe=o(function(t,e,r){if(ge().securityLevel!=="loose"||e===void 0)return;let n=[];if(typeof r=="string"){n=r.split(/,(?=(?:(?:[^"]*"){2})*[^"]*$)/);for(let a=0;a{qt.runFunc(e,...n)})},"setClickFun"),r1e=o(function(t,e){RF.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"),CQe=o(function(t,e,r){t.split(",").forEach(function(n){SQe(n,e,r)}),t1e(t,"clickable")},"setClickEvent"),AQe=o(function(t){RF.forEach(function(e){e(t)})},"bindFunctions"),n1e={getConfig:o(()=>ge().gantt,"getConfig"),clear:YKe,setDateFormat:eQe,getDateFormat:oQe,enableInclusiveEndDates:tQe,endDatesAreInclusive:rQe,enableTopAxis:nQe,topAxisEnabled:iQe,setAxisFormat:XKe,getAxisFormat:jKe,setTickInterval:KKe,getTickInterval:QKe,setTodayMarker:ZKe,getTodayMarker:JKe,setAccTitle:Rr,getAccTitle:Mr,setDiagramTitle:$r,getDiagramTitle:Pr,setDisplayMode:aQe,getDisplayMode:sQe,setAccDescription:Ir,getAccDescription:Or,addSection:dQe,getSections:pQe,getTasks:mQe,addTask:wQe,findTaskById:a0,addTaskOrg:kQe,setIncludes:lQe,getIncludes:cQe,setExcludes:uQe,getExcludes:hQe,setClickEvent:CQe,setLink:EQe,getLinks:fQe,bindFunctions:AQe,parseDuration:Zge,isInvalidDate:Kge,setWeekday:gQe,getWeekday:yQe,setWeekend:vQe};o(i1e,"getTaskTags")});var $6,_Qe,s1e,DQe,ah,LQe,o1e,l1e=N(()=>{"use strict";$6=ja(X4(),1);pt();yr();gr();Xt();Ei();_Qe=o(function(){X.debug("Something is calling, setConf, remove the call")},"setConf"),s1e={monday:Ih,tuesday:P5,wednesday:B5,thursday:fc,friday:F5,saturday:$5,sunday:wl},DQe=o((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"),LQe=o(function(t,e,r,n){let i=ge().gantt,a=ge().securityLevel,s;a==="sandbox"&&(s=qe("#i"+e));let l=a==="sandbox"?qe(s.nodes()[0].contentDocument.body):qe("body"),u=a==="sandbox"?s.nodes()[0].contentDocument:document,h=u.getElementById(e);ah=h.parentElement.offsetWidth,ah===void 0&&(ah=1200),i.useWidth!==void 0&&(ah=i.useWidth);let f=n.db.getTasks(),d=[];for(let C of f)d.push(C.type);d=A(d);let p={},m=2*i.topPadding;if(n.db.getDisplayMode()==="compact"||i.displayMode==="compact"){let C={};for(let I of f)C[I.section]===void 0?C[I.section]=[I]:C[I.section].push(I);let R=0;for(let I of Object.keys(C)){let L=DQe(C[I],R)+1;R+=L,m+=L*(i.barHeight+i.barGap),p[I]=L}}else{m+=f.length*(i.barHeight+i.barGap);for(let C of d)p[C]=f.filter(R=>R.type===C).length}h.setAttribute("viewBox","0 0 "+ah+" "+m);let g=l.select(`[id="${e}"]`),y=V5().domain([Y3(f,function(C){return C.startTime}),W3(f,function(C){return C.endTime})]).rangeRound([0,ah-i.leftPadding-i.rightPadding]);function v(C,R){let I=C.startTime,L=R.startTime,E=0;return I>L?E=1:IG.vert===$.vert?0:G.vert?1:-1);let M=[...new Set(C.map(G=>G.order))].map(G=>C.find($=>$.order===G));g.append("g").selectAll("rect").data(M).enter().append("rect").attr("x",0).attr("y",function(G,$){return $=G.order,$*R+I-2}).attr("width",function(){return _-i.rightPadding/2}).attr("height",R).attr("class",function(G){for(let[$,U]of d.entries())if(G.type===U)return"section section"+$%i.numberSectionStyles;return"section section0"}).enter();let P=g.append("g").selectAll("rect").data(C).enter(),B=n.db.getLinks();if(P.append("rect").attr("id",function(G){return G.id}).attr("rx",3).attr("ry",3).attr("x",function(G){return G.milestone?y(G.startTime)+L+.5*(y(G.endTime)-y(G.startTime))-.5*E:y(G.startTime)+L}).attr("y",function(G,$){return $=G.order,G.vert?i.gridLineStartPadding:$*R+I}).attr("width",function(G){return G.milestone?E:G.vert?.08*E:y(G.renderEndTime||G.endTime)-y(G.startTime)}).attr("height",function(G){return G.vert?f.length*(i.barHeight+i.barGap)+i.barHeight*2:E}).attr("transform-origin",function(G,$){return $=G.order,(y(G.startTime)+L+.5*(y(G.endTime)-y(G.startTime))).toString()+"px "+($*R+I+.5*E).toString()+"px"}).attr("class",function(G){let $="task",U="";G.classes.length>0&&(U=G.classes.join(" "));let j=0;for(let[Y,oe]of d.entries())G.type===oe&&(j=Y%i.numberSectionStyles);let te="";return G.active?G.crit?te+=" activeCrit":te=" active":G.done?G.crit?te=" doneCrit":te=" done":G.crit&&(te+=" crit"),te.length===0&&(te=" task"),G.milestone&&(te=" milestone "+te),G.vert&&(te=" vert "+te),te+=j,te+=" "+U,$+te}),P.append("text").attr("id",function(G){return G.id+"-text"}).text(function(G){return G.task}).attr("font-size",i.fontSize).attr("x",function(G){let $=y(G.startTime),U=y(G.renderEndTime||G.endTime);if(G.milestone&&($+=.5*(y(G.endTime)-y(G.startTime))-.5*E,U=$+E),G.vert)return y(G.startTime)+L;let j=this.getBBox().width;return j>U-$?U+j+1.5*i.leftPadding>_?$+L-5:U+L+5:(U-$)/2+$+L}).attr("y",function(G,$){return G.vert?i.gridLineStartPadding+f.length*(i.barHeight+i.barGap)+60:($=G.order,$*R+i.barHeight/2+(i.fontSize/2-2)+I)}).attr("text-height",E).attr("class",function(G){let $=y(G.startTime),U=y(G.endTime);G.milestone&&(U=$+E);let j=this.getBBox().width,te="";G.classes.length>0&&(te=G.classes.join(" "));let Y=0;for(let[J,ue]of d.entries())G.type===ue&&(Y=J%i.numberSectionStyles);let oe="";return G.active&&(G.crit?oe="activeCritText"+Y:oe="activeText"+Y),G.done?G.crit?oe=oe+" doneCritText"+Y:oe=oe+" doneText"+Y:G.crit&&(oe=oe+" critText"+Y),G.milestone&&(oe+=" milestoneText"),G.vert&&(oe+=" vertText"),j>U-$?U+j+1.5*i.leftPadding>_?te+" taskTextOutsideLeft taskTextOutside"+Y+" "+oe:te+" taskTextOutsideRight taskTextOutside"+Y+" "+oe+" width-"+j:te+" taskText taskText"+Y+" "+oe+" width-"+j}),ge().securityLevel==="sandbox"){let G;G=qe("#i"+e);let $=G.nodes()[0].contentDocument;P.filter(function(U){return B.has(U.id)}).each(function(U){var j=$.querySelector("#"+U.id),te=$.querySelector("#"+U.id+"-text");let Y=j.parentNode;var oe=$.createElement("a");oe.setAttribute("xlink:href",B.get(U.id)),oe.setAttribute("target","_top"),Y.appendChild(oe),oe.appendChild(j),oe.appendChild(te)})}}o(b,"drawRects");function T(C,R,I,L,E,D,_,O){if(_.length===0&&O.length===0)return;let M,P;for(let{startTime:j,endTime:te}of D)(M===void 0||jP)&&(P=te);if(!M||!P)return;if((0,$6.default)(P).diff((0,$6.default)(M),"year")>5){X.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(),F=[],G=null,$=(0,$6.default)(M);for(;$.valueOf()<=P;)n.db.isInvalidDate($,B,_,O)?G?G.end=$:G={start:$,end:$}:G&&(F.push(G),G=null),$=$.add(1,"d");g.append("g").selectAll("rect").data(F).enter().append("rect").attr("id",j=>"exclude-"+j.start.format("YYYY-MM-DD")).attr("x",j=>y(j.start.startOf("day"))+I).attr("y",i.gridLineStartPadding).attr("width",j=>y(j.end.endOf("day"))-y(j.start.startOf("day"))).attr("height",E-R-i.gridLineStartPadding).attr("transform-origin",function(j,te){return(y(j.start)+I+.5*(y(j.end)-y(j.start))).toString()+"px "+(te*C+.5*E).toString()+"px"}).attr("class","exclude-range")}o(T,"drawExcludeDays");function S(C,R,I,L){let E=n.db.getDateFormat(),D=n.db.getAxisFormat(),_;D?_=D:E==="D"?_="%d":_=i.axisFormat??"%Y-%m-%d";let O=QA(y).tickSize(-L+R+i.gridLineStartPadding).tickFormat(Pd(_)),P=/^([1-9]\d*)(millisecond|second|minute|hour|day|week|month)$/.exec(n.db.getTickInterval()||i.tickInterval);if(P!==null){let B=P[1],F=P[2],G=n.db.getWeekday()||i.weekday;switch(F){case"millisecond":O.ticks(uc.every(B));break;case"second":O.ticks(io.every(B));break;case"minute":O.ticks(ku.every(B));break;case"hour":O.ticks(Eu.every(B));break;case"day":O.ticks(Ro.every(B));break;case"week":O.ticks(s1e[G].every(B));break;case"month":O.ticks(Su.every(B));break}}if(g.append("g").attr("class","grid").attr("transform","translate("+C+", "+(L-50)+")").call(O).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 B=KA(y).tickSize(-L+R+i.gridLineStartPadding).tickFormat(Pd(_));if(P!==null){let F=P[1],G=P[2],$=n.db.getWeekday()||i.weekday;switch(G){case"millisecond":B.ticks(uc.every(F));break;case"second":B.ticks(io.every(F));break;case"minute":B.ticks(ku.every(F));break;case"hour":B.ticks(Eu.every(F));break;case"day":B.ticks(Ro.every(F));break;case"week":B.ticks(s1e[$].every(F));break;case"month":B.ticks(Su.every(F));break}}g.append("g").attr("class","grid").attr("transform","translate("+C+", "+R+")").call(B).selectAll("text").style("text-anchor","middle").attr("fill","#000").attr("stroke","none").attr("font-size",10)}}o(S,"makeGrid");function w(C,R){let I=0,L=Object.keys(p).map(E=>[E,p[E]]);g.append("g").selectAll("text").data(L).enter().append(function(E){let D=E[0].split(tt.lineBreakRegex),_=-(D.length-1)/2,O=u.createElementNS("http://www.w3.org/2000/svg","text");O.setAttribute("dy",_+"em");for(let[M,P]of D.entries()){let B=u.createElementNS("http://www.w3.org/2000/svg","tspan");B.setAttribute("alignment-baseline","central"),B.setAttribute("x","10"),M>0&&B.setAttribute("dy","1em"),B.textContent=P,O.appendChild(B)}return O}).attr("x",10).attr("y",function(E,D){if(D>0)for(let _=0;_{"use strict";RQe=o(t=>` - .mermaid-main-font { - font-family: ${t.fontFamily}; - } - - .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: ${t.fontFamily}; - } - - - /* 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: ${t.fontFamily}; - } - - .taskTextOutsideRight { - fill: ${t.taskTextDarkColor}; - text-anchor: start; - font-family: ${t.fontFamily}; - } - - .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; - } - - .vert { - stroke: ${t.vertLineColor}; - } - - .vertText { - font-size: 15px; - text-anchor: middle; - fill: ${t.vertLineColor} !important; - } - - .activeCritText0, - .activeCritText1, - .activeCritText2, - .activeCritText3 { - fill: ${t.taskTextDarkColor} !important; - } - - .titleText { - text-anchor: middle; - font-size: 18px; - fill: ${t.titleColor||t.textColor}; - font-family: ${t.fontFamily}; - } -`,"getStyles"),c1e=RQe});var h1e={};dr(h1e,{diagram:()=>NQe});var NQe,f1e=N(()=>{"use strict";$ge();a1e();l1e();u1e();NQe={parser:Fge,db:n1e,renderer:o1e,styles:c1e}});var m1e,g1e=N(()=>{"use strict";Uf();pt();m1e={parse:o(async t=>{let e=await bs("info",t);X.debug(e)},"parse")}});var g4,IF=N(()=>{g4={name:"mermaid",version:"11.12.0",description:"Markdown-ish syntax for generating flowcharts, mindmaps, sequence diagrams, class diagrams, gantt charts, git graphs and more.",type:"module",module:"./dist/mermaid.core.mjs",types:"./dist/mermaid.d.ts",exports:{".":{types:"./dist/mermaid.d.ts",import:"./dist/mermaid.core.mjs",default:"./dist/mermaid.core.mjs"},"./*":"./*"},keywords:["diagram","markdown","flowchart","sequence diagram","gantt","class diagram","git graph","mindmap","packet diagram","c4 diagram","er diagram","pie chart","pie diagram","quadrant chart","requirement diagram","graph"],scripts:{clean:"rimraf dist",dev:"pnpm -w dev","docs:code":"typedoc src/defaultConfig.ts src/config.ts src/mermaid.ts && prettier --write ./src/docs/config/setup","docs:build":"rimraf ../../docs && pnpm docs:code && pnpm docs:spellcheck && tsx scripts/docs.cli.mts","docs:verify":"pnpm docs:code && pnpm docs:spellcheck && tsx scripts/docs.cli.mts --verify","docs:pre:vitepress":"pnpm --filter ./src/docs prefetch && rimraf src/vitepress && pnpm docs:code && tsx scripts/docs.cli.mts --vitepress && pnpm --filter ./src/vitepress install --no-frozen-lockfile --ignore-scripts","docs:build:vitepress":"pnpm docs:pre:vitepress && (cd src/vitepress && pnpm run build) && cpy --flat src/docs/landing/ ./src/vitepress/.vitepress/dist/landing","docs:dev":'pnpm docs:pre:vitepress && concurrently "pnpm --filter ./src/vitepress dev" "tsx scripts/docs.cli.mts --watch --vitepress"',"docs:dev:docker":'pnpm docs:pre:vitepress && concurrently "pnpm --filter ./src/vitepress dev:docker" "tsx scripts/docs.cli.mts --watch --vitepress"',"docs:serve":"pnpm docs:build:vitepress && vitepress serve src/vitepress","docs:spellcheck":'cspell "src/docs/**/*.md"',"docs:release-version":"tsx scripts/update-release-version.mts","docs:verify-version":"tsx scripts/update-release-version.mts --verify","types:build-config":"tsx scripts/create-types-from-json-schema.mts","types:verify-config":"tsx scripts/create-types-from-json-schema.mts --verify",checkCircle:"npx madge --circular ./src",prepublishOnly:"pnpm docs:verify-version"},repository:{type:"git",url:"https://github.com/mermaid-js/mermaid"},author:"Knut Sveidqvist",license:"MIT",standard:{ignore:["**/parser/*.js","dist/**/*.js","cypress/**/*.js"],globals:["page"]},dependencies:{"@braintree/sanitize-url":"^7.1.1","@iconify/utils":"^3.0.1","@mermaid-js/parser":"workspace:^","@types/d3":"^7.4.3",cytoscape:"^3.29.3","cytoscape-cose-bilkent":"^4.1.0","cytoscape-fcose":"^2.2.0",d3:"^7.9.0","d3-sankey":"^0.12.3","dagre-d3-es":"7.0.11",dayjs:"^1.11.18",dompurify:"^3.2.5",katex:"^0.16.22",khroma:"^2.1.0","lodash-es":"^4.17.21",marked:"^16.2.1",roughjs:"^4.6.6",stylis:"^4.3.6","ts-dedent":"^2.2.0",uuid:"^11.1.0"},devDependencies:{"@adobe/jsonschema2md":"^8.0.5","@iconify/types":"^2.0.0","@types/cytoscape":"^3.21.9","@types/cytoscape-fcose":"^2.2.4","@types/d3-sankey":"^0.12.4","@types/d3-scale":"^4.0.9","@types/d3-scale-chromatic":"^3.1.0","@types/d3-selection":"^3.0.11","@types/d3-shape":"^3.1.7","@types/jsdom":"^21.1.7","@types/katex":"^0.16.7","@types/lodash-es":"^4.17.12","@types/micromatch":"^4.0.9","@types/stylis":"^4.2.7","@types/uuid":"^10.0.0",ajv:"^8.17.1",canvas:"^3.1.2",chokidar:"3.6.0",concurrently:"^9.1.2","csstree-validator":"^4.0.1",globby:"^14.1.0",jison:"^0.4.18","js-base64":"^3.7.8",jsdom:"^26.1.0","json-schema-to-typescript":"^15.0.4",micromatch:"^4.0.8","path-browserify":"^1.0.1",prettier:"^3.5.3",remark:"^15.0.1","remark-frontmatter":"^5.0.0","remark-gfm":"^4.0.1",rimraf:"^6.0.1","start-server-and-test":"^2.0.13","type-fest":"^4.35.0",typedoc:"^0.28.12","typedoc-plugin-markdown":"^4.8.1",typescript:"~5.7.3","unist-util-flatmap":"^1.0.0","unist-util-visit":"^5.0.0",vitepress:"^1.6.4","vitepress-plugin-search":"1.0.4-alpha.22"},files:["dist/","README.md"],publishConfig:{access:"public"}}});var BQe,FQe,y1e,v1e=N(()=>{"use strict";IF();BQe={version:g4.version+""},FQe=o(()=>BQe.version,"getVersion"),y1e={getVersion:FQe}});var aa,tu=N(()=>{"use strict";yr();Xt();aa=o(t=>{let{securityLevel:e}=ge(),r=qe("body");if(e==="sandbox"){let a=qe(`#i${t}`).node()?.contentDocument??document;r=qe(a.body)}return r.select(`#${t}`)},"selectSvgElement")});var $Qe,x1e,b1e=N(()=>{"use strict";pt();tu();Ei();$Qe=o((t,e,r)=>{X.debug(`rendering info diagram -`+t);let n=aa(e);mn(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"),x1e={draw:$Qe}});var T1e={};dr(T1e,{diagram:()=>zQe});var zQe,w1e=N(()=>{"use strict";g1e();v1e();b1e();zQe={parser:m1e,db:y1e,renderer:x1e}});var S1e,OF,z6,PF,UQe,HQe,qQe,WQe,YQe,XQe,jQe,G6,BF=N(()=>{"use strict";pt();ci();La();S1e=ur.pie,OF={sections:new Map,showData:!1,config:S1e},z6=OF.sections,PF=OF.showData,UQe=structuredClone(S1e),HQe=o(()=>structuredClone(UQe),"getConfig"),qQe=o(()=>{z6=new Map,PF=OF.showData,Sr()},"clear"),WQe=o(({label:t,value:e})=>{if(e<0)throw new Error(`"${t}" has invalid value: ${e}. Negative values are not allowed in pie charts. All slice values must be >= 0.`);z6.has(t)||(z6.set(t,e),X.debug(`added new section: ${t}, with value: ${e}`))},"addSection"),YQe=o(()=>z6,"getSections"),XQe=o(t=>{PF=t},"setShowData"),jQe=o(()=>PF,"getShowData"),G6={getConfig:HQe,clear:qQe,setDiagramTitle:$r,getDiagramTitle:Pr,setAccTitle:Rr,getAccTitle:Mr,setAccDescription:Ir,getAccDescription:Or,addSection:WQe,getSections:YQe,setShowData:XQe,getShowData:jQe}});var KQe,C1e,A1e=N(()=>{"use strict";Uf();pt();r0();BF();KQe=o((t,e)=>{nl(t,e),e.setShowData(t.showData),t.sections.map(e.addSection)},"populateDb"),C1e={parse:o(async t=>{let e=await bs("pie",t);X.debug(e),KQe(e,G6)},"parse")}});var QQe,_1e,D1e=N(()=>{"use strict";QQe=o(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"),_1e=QQe});var ZQe,JQe,L1e,R1e=N(()=>{"use strict";yr();Xt();pt();tu();Ei();tr();ZQe=o(t=>{let e=[...t.values()].reduce((i,a)=>i+a,0),r=[...t.entries()].map(([i,a])=>({label:i,value:a})).filter(i=>i.value/e*100>=1).sort((i,a)=>a.value-i.value);return X5().value(i=>i.value)(r)},"createPieArcs"),JQe=o((t,e,r,n)=>{X.debug(`rendering pie chart -`+t);let i=n.db,a=ge(),s=Vn(i.getConfig(),a.pie),l=40,u=18,h=4,f=450,d=f,p=aa(e),m=p.append("g");m.attr("transform","translate("+d/2+","+f/2+")");let{themeVariables:g}=a,[y]=vc(g.pieOuterStrokeWidth);y??=2;let v=s.textPosition,x=Math.min(d,f)/2-l,b=Sl().innerRadius(0).outerRadius(x),T=Sl().innerRadius(x*v).outerRadius(x*v);m.append("circle").attr("cx",0).attr("cy",0).attr("r",x+y/2).attr("class","pieOuterCircle");let S=i.getSections(),w=ZQe(S),k=[g.pie1,g.pie2,g.pie3,g.pie4,g.pie5,g.pie6,g.pie7,g.pie8,g.pie9,g.pie10,g.pie11,g.pie12],A=0;S.forEach(_=>{A+=_});let C=w.filter(_=>(_.data.value/A*100).toFixed(0)!=="0"),R=no(k);m.selectAll("mySlices").data(C).enter().append("path").attr("d",b).attr("fill",_=>R(_.data.label)).attr("class","pieCircle"),m.selectAll("mySlices").data(C).enter().append("text").text(_=>(_.data.value/A*100).toFixed(0)+"%").attr("transform",_=>"translate("+T.centroid(_)+")").style("text-anchor","middle").attr("class","slice"),m.append("text").text(i.getDiagramTitle()).attr("x",0).attr("y",-(f-50)/2).attr("class","pieTitleText");let I=[...S.entries()].map(([_,O])=>({label:_,value:O})),L=m.selectAll(".legend").data(I).enter().append("g").attr("class","legend").attr("transform",(_,O)=>{let M=u+h,P=M*I.length/2,B=12*u,F=O*M-P;return"translate("+B+","+F+")"});L.append("rect").attr("width",u).attr("height",u).style("fill",_=>R(_.label)).style("stroke",_=>R(_.label)),L.append("text").attr("x",u+h).attr("y",u-h).text(_=>i.getShowData()?`${_.label} [${_.value}]`:_.label);let E=Math.max(...L.selectAll("text").nodes().map(_=>_?.getBoundingClientRect().width??0)),D=d+l+u+h+E;p.attr("viewBox",`0 0 ${D} ${f}`),mn(p,f,D,s.useMaxWidth)},"draw"),L1e={draw:JQe}});var N1e={};dr(N1e,{diagram:()=>eZe});var eZe,M1e=N(()=>{"use strict";A1e();BF();D1e();R1e();eZe={parser:C1e,db:G6,renderer:L1e,styles:_1e}});var FF,O1e,P1e=N(()=>{"use strict";FF=(function(){var t=o(function(he,z,se,le){for(se=se||{},le=he.length;le--;se[he[le]]=z);return se},"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],l=[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],u=[55,56,57],h=[2,36],f=[1,37],d=[1,36],p=[1,38],m=[1,35],g=[1,43],y=[1,41],v=[1,14],x=[1,23],b=[1,18],T=[1,19],S=[1,20],w=[1,21],k=[1,22],A=[1,24],C=[1,25],R=[1,26],I=[1,27],L=[1,28],E=[1,29],D=[1,32],_=[1,33],O=[1,34],M=[1,39],P=[1,40],B=[1,42],F=[1,44],G=[1,62],$=[1,61],U=[4,5,8,10,12,13,14,18,44,47,49,55,56,57,63,64,65,66,67],j=[1,65],te=[1,66],Y=[1,67],oe=[1,68],J=[1,69],ue=[1,70],re=[1,71],ee=[1,72],Z=[1,73],K=[1,74],ae=[1,75],Q=[1,76],de=[4,5,6,7,8,9,10,11,12,13,14,15,18],ne=[1,90],Te=[1,91],q=[1,92],Ve=[1,99],pe=[1,93],Be=[1,96],Ye=[1,94],He=[1,95],Le=[1,97],Ie=[1,98],Ne=[1,102],Ce=[10,55,56,57],Fe=[4,5,6,8,10,11,13,17,18,19,20,55,56,57],fe={trace:o(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:o(function(z,se,le,ke,ve,ye,Re){var _e=ye.length-1;switch(ve){case 23:this.$=ye[_e];break;case 24:this.$=ye[_e-1]+""+ye[_e];break;case 26:this.$=ye[_e-1]+ye[_e];break;case 27:this.$=[ye[_e].trim()];break;case 28:ye[_e-2].push(ye[_e].trim()),this.$=ye[_e-2];break;case 29:this.$=ye[_e-4],ke.addClass(ye[_e-2],ye[_e]);break;case 37:this.$=[];break;case 42:this.$=ye[_e].trim(),ke.setDiagramTitle(this.$);break;case 43:this.$=ye[_e].trim(),ke.setAccTitle(this.$);break;case 44:case 45:this.$=ye[_e].trim(),ke.setAccDescription(this.$);break;case 46:ke.addSection(ye[_e].substr(8)),this.$=ye[_e].substr(8);break;case 47:ke.addPoint(ye[_e-3],"",ye[_e-1],ye[_e],[]);break;case 48:ke.addPoint(ye[_e-4],ye[_e-3],ye[_e-1],ye[_e],[]);break;case 49:ke.addPoint(ye[_e-4],"",ye[_e-2],ye[_e-1],ye[_e]);break;case 50:ke.addPoint(ye[_e-5],ye[_e-4],ye[_e-2],ye[_e-1],ye[_e]);break;case 51:ke.setXAxisLeftText(ye[_e-2]),ke.setXAxisRightText(ye[_e]);break;case 52:ye[_e-1].text+=" \u27F6 ",ke.setXAxisLeftText(ye[_e-1]);break;case 53:ke.setXAxisLeftText(ye[_e]);break;case 54:ke.setYAxisBottomText(ye[_e-2]),ke.setYAxisTopText(ye[_e]);break;case 55:ye[_e-1].text+=" \u27F6 ",ke.setYAxisBottomText(ye[_e-1]);break;case 56:ke.setYAxisBottomText(ye[_e]);break;case 57:ke.setQuadrant1Text(ye[_e]);break;case 58:ke.setQuadrant2Text(ye[_e]);break;case 59:ke.setQuadrant3Text(ye[_e]);break;case 60:ke.setQuadrant4Text(ye[_e]);break;case 64:this.$={text:ye[_e],type:"text"};break;case 65:this.$={text:ye[_e-1].text+""+ye[_e],type:ye[_e-1].type};break;case 66:this.$={text:ye[_e],type:"text"};break;case 67:this.$={text:ye[_e],type:"markdown"};break;case 68:this.$=ye[_e];break;case 69:this.$=ye[_e-1]+""+ye[_e];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(l,[2,61]),t(l,[2,62]),t(l,[2,63]),{1:[2,30]},{1:[2,31]},t(u,h,{30:11,31:12,24:13,32:15,33:16,34:17,43:30,58:31,1:[2,32],4:f,5:d,10:p,12:m,13:g,14:y,18:v,25:x,35:b,37:T,39:S,41:w,42:k,48:A,50:C,51:R,52:I,53:L,54:E,60:D,61:_,63:O,64:M,65:P,66:B,67:F}),t(s,[2,34]),{27:45,55:n,56:i,57:a},t(u,[2,37]),t(u,h,{24:13,32:15,33:16,34:17,43:30,58:31,31:46,4:f,5:d,10:p,12:m,13:g,14:y,18:v,25:x,35:b,37:T,39:S,41:w,42:k,48:A,50:C,51:R,52:I,53:L,54:E,60:D,61:_,63:O,64:M,65:P,66:B,67:F}),t(u,[2,39]),t(u,[2,40]),t(u,[2,41]),{36:[1,47]},{38:[1,48]},{40:[1,49]},t(u,[2,45]),t(u,[2,46]),{18:[1,50]},{4:f,5:d,10:p,12:m,13:g,14:y,43:51,58:31,60:D,61:_,63:O,64:M,65:P,66:B,67:F},{4:f,5:d,10:p,12:m,13:g,14:y,43:52,58:31,60:D,61:_,63:O,64:M,65:P,66:B,67:F},{4:f,5:d,10:p,12:m,13:g,14:y,43:53,58:31,60:D,61:_,63:O,64:M,65:P,66:B,67:F},{4:f,5:d,10:p,12:m,13:g,14:y,43:54,58:31,60:D,61:_,63:O,64:M,65:P,66:B,67:F},{4:f,5:d,10:p,12:m,13:g,14:y,43:55,58:31,60:D,61:_,63:O,64:M,65:P,66:B,67:F},{4:f,5:d,10:p,12:m,13:g,14:y,43:56,58:31,60:D,61:_,63:O,64:M,65:P,66:B,67:F},{4:f,5:d,8:G,10:p,12:m,13:g,14:y,18:$,44:[1,57],47:[1,58],58:60,59:59,63:O,64:M,65:P,66:B,67:F},t(U,[2,64]),t(U,[2,66]),t(U,[2,67]),t(U,[2,70]),t(U,[2,71]),t(U,[2,72]),t(U,[2,73]),t(U,[2,74]),t(U,[2,75]),t(U,[2,76]),t(U,[2,77]),t(U,[2,78]),t(U,[2,79]),t(U,[2,80]),t(s,[2,35]),t(u,[2,38]),t(u,[2,42]),t(u,[2,43]),t(u,[2,44]),{3:64,4:j,5:te,6:Y,7:oe,8:J,9:ue,10:re,11:ee,12:Z,13:K,14:ae,15:Q,21:63},t(u,[2,53],{59:59,58:60,4:f,5:d,8:G,10:p,12:m,13:g,14:y,18:$,49:[1,77],63:O,64:M,65:P,66:B,67:F}),t(u,[2,56],{59:59,58:60,4:f,5:d,8:G,10:p,12:m,13:g,14:y,18:$,49:[1,78],63:O,64:M,65:P,66:B,67:F}),t(u,[2,57],{59:59,58:60,4:f,5:d,8:G,10:p,12:m,13:g,14:y,18:$,63:O,64:M,65:P,66:B,67:F}),t(u,[2,58],{59:59,58:60,4:f,5:d,8:G,10:p,12:m,13:g,14:y,18:$,63:O,64:M,65:P,66:B,67:F}),t(u,[2,59],{59:59,58:60,4:f,5:d,8:G,10:p,12:m,13:g,14:y,18:$,63:O,64:M,65:P,66:B,67:F}),t(u,[2,60],{59:59,58:60,4:f,5:d,8:G,10:p,12:m,13:g,14:y,18:$,63:O,64:M,65:P,66:B,67:F}),{45:[1,79]},{44:[1,80]},t(U,[2,65]),t(U,[2,81]),t(U,[2,82]),t(U,[2,83]),{3:82,4:j,5:te,6:Y,7:oe,8:J,9:ue,10:re,11:ee,12:Z,13:K,14:ae,15:Q,18:[1,81]},t(de,[2,23]),t(de,[2,1]),t(de,[2,2]),t(de,[2,3]),t(de,[2,4]),t(de,[2,5]),t(de,[2,6]),t(de,[2,7]),t(de,[2,8]),t(de,[2,9]),t(de,[2,10]),t(de,[2,11]),t(de,[2,12]),t(u,[2,52],{58:31,43:83,4:f,5:d,10:p,12:m,13:g,14:y,60:D,61:_,63:O,64:M,65:P,66:B,67:F}),t(u,[2,55],{58:31,43:84,4:f,5:d,10:p,12:m,13:g,14:y,60:D,61:_,63:O,64:M,65:P,66:B,67:F}),{46:[1,85]},{45:[1,86]},{4:ne,5:Te,6:q,8:Ve,11:pe,13:Be,16:89,17:Ye,18:He,19:Le,20:Ie,22:88,23:87},t(de,[2,24]),t(u,[2,51],{59:59,58:60,4:f,5:d,8:G,10:p,12:m,13:g,14:y,18:$,63:O,64:M,65:P,66:B,67:F}),t(u,[2,54],{59:59,58:60,4:f,5:d,8:G,10:p,12:m,13:g,14:y,18:$,63:O,64:M,65:P,66:B,67:F}),t(u,[2,47],{22:88,16:89,23:100,4:ne,5:Te,6:q,8:Ve,11:pe,13:Be,17:Ye,18:He,19:Le,20:Ie}),{46:[1,101]},t(u,[2,29],{10:Ne}),t(Ce,[2,27],{16:103,4:ne,5:Te,6:q,8:Ve,11:pe,13:Be,17:Ye,18:He,19:Le,20:Ie}),t(Fe,[2,25]),t(Fe,[2,13]),t(Fe,[2,14]),t(Fe,[2,15]),t(Fe,[2,16]),t(Fe,[2,17]),t(Fe,[2,18]),t(Fe,[2,19]),t(Fe,[2,20]),t(Fe,[2,21]),t(Fe,[2,22]),t(u,[2,49],{10:Ne}),t(u,[2,48],{22:88,16:89,23:104,4:ne,5:Te,6:q,8:Ve,11:pe,13:Be,17:Ye,18:He,19:Le,20:Ie}),{4:ne,5:Te,6:q,8:Ve,11:pe,13:Be,16:89,17:Ye,18:He,19:Le,20:Ie,22:105},t(Fe,[2,26]),t(u,[2,50],{10:Ne}),t(Ce,[2,28],{16:103,4:ne,5:Te,6:q,8:Ve,11:pe,13:Be,17:Ye,18:He,19:Le,20:Ie})],defaultActions:{8:[2,30],9:[2,31]},parseError:o(function(z,se){if(se.recoverable)this.trace(z);else{var le=new Error(z);throw le.hash=se,le}},"parseError"),parse:o(function(z){var se=this,le=[0],ke=[],ve=[null],ye=[],Re=this.table,_e="",ze=0,Ke=0,xt=0,We=2,Oe=1,et=ye.slice.call(arguments,1),Ue=Object.create(this.lexer),lt={yy:{}};for(var Gt in this.yy)Object.prototype.hasOwnProperty.call(this.yy,Gt)&&(lt.yy[Gt]=this.yy[Gt]);Ue.setInput(z,lt.yy),lt.yy.lexer=Ue,lt.yy.parser=this,typeof Ue.yylloc>"u"&&(Ue.yylloc={});var vt=Ue.yylloc;ye.push(vt);var Lt=Ue.options&&Ue.options.ranges;typeof lt.yy.parseError=="function"?this.parseError=lt.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function dt(Se){le.length=le.length-2*Se,ve.length=ve.length-Se,ye.length=ye.length-Se}o(dt,"popStack");function nt(){var Se;return Se=ke.pop()||Ue.lex()||Oe,typeof Se!="number"&&(Se instanceof Array&&(ke=Se,Se=ke.pop()),Se=se.symbols_[Se]||Se),Se}o(nt,"lex");for(var bt,wt,yt,ft,Ur,_t,bn={},Br,cr,ar,_r;;){if(yt=le[le.length-1],this.defaultActions[yt]?ft=this.defaultActions[yt]:((bt===null||typeof bt>"u")&&(bt=nt()),ft=Re[yt]&&Re[yt][bt]),typeof ft>"u"||!ft.length||!ft[0]){var Ct="";_r=[];for(Br in Re[yt])this.terminals_[Br]&&Br>We&&_r.push("'"+this.terminals_[Br]+"'");Ue.showPosition?Ct="Parse error on line "+(ze+1)+`: -`+Ue.showPosition()+` -Expecting `+_r.join(", ")+", got '"+(this.terminals_[bt]||bt)+"'":Ct="Parse error on line "+(ze+1)+": Unexpected "+(bt==Oe?"end of input":"'"+(this.terminals_[bt]||bt)+"'"),this.parseError(Ct,{text:Ue.match,token:this.terminals_[bt]||bt,line:Ue.yylineno,loc:vt,expected:_r})}if(ft[0]instanceof Array&&ft.length>1)throw new Error("Parse Error: multiple actions possible at state: "+yt+", token: "+bt);switch(ft[0]){case 1:le.push(bt),ve.push(Ue.yytext),ye.push(Ue.yylloc),le.push(ft[1]),bt=null,wt?(bt=wt,wt=null):(Ke=Ue.yyleng,_e=Ue.yytext,ze=Ue.yylineno,vt=Ue.yylloc,xt>0&&xt--);break;case 2:if(cr=this.productions_[ft[1]][1],bn.$=ve[ve.length-cr],bn._$={first_line:ye[ye.length-(cr||1)].first_line,last_line:ye[ye.length-1].last_line,first_column:ye[ye.length-(cr||1)].first_column,last_column:ye[ye.length-1].last_column},Lt&&(bn._$.range=[ye[ye.length-(cr||1)].range[0],ye[ye.length-1].range[1]]),_t=this.performAction.apply(bn,[_e,Ke,ze,lt.yy,ft[1],ve,ye].concat(et)),typeof _t<"u")return _t;cr&&(le=le.slice(0,-1*cr*2),ve=ve.slice(0,-1*cr),ye=ye.slice(0,-1*cr)),le.push(this.productions_[ft[1]][0]),ve.push(bn.$),ye.push(bn._$),ar=Re[le[le.length-2]][le[le.length-1]],le.push(ar);break;case 3:return!0}}return!0},"parse")},xe=(function(){var he={EOF:1,parseError:o(function(se,le){if(this.yy.parser)this.yy.parser.parseError(se,le);else throw new Error(se)},"parseError"),setInput:o(function(z,se){return this.yy=se||this.yy||{},this._input=z,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:o(function(){var z=this._input[0];this.yytext+=z,this.yyleng++,this.offset++,this.match+=z,this.matched+=z;var se=z.match(/(?:\r\n?|\n).*/g);return se?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),z},"input"),unput:o(function(z){var se=z.length,le=z.split(/(?:\r\n?|\n)/g);this._input=z+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-se),this.offset-=se;var ke=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),le.length-1&&(this.yylineno-=le.length-1);var ve=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:le?(le.length===ke.length?this.yylloc.first_column:0)+ke[ke.length-le.length].length-le[0].length:this.yylloc.first_column-se},this.options.ranges&&(this.yylloc.range=[ve[0],ve[0]+this.yyleng-se]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(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:o(function(z){this.unput(this.match.slice(z))},"less"),pastInput:o(function(){var z=this.matched.substr(0,this.matched.length-this.match.length);return(z.length>20?"...":"")+z.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var z=this.match;return z.length<20&&(z+=this._input.substr(0,20-z.length)),(z.substr(0,20)+(z.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var z=this.pastInput(),se=new Array(z.length+1).join("-");return z+this.upcomingInput()+` -`+se+"^"},"showPosition"),test_match:o(function(z,se){var le,ke,ve;if(this.options.backtrack_lexer&&(ve={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&&(ve.yylloc.range=this.yylloc.range.slice(0))),ke=z[0].match(/(?:\r\n?|\n).*/g),ke&&(this.yylineno+=ke.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:ke?ke[ke.length-1].length-ke[ke.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+z[0].length},this.yytext+=z[0],this.match+=z[0],this.matches=z,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(z[0].length),this.matched+=z[0],le=this.performAction.call(this,this.yy,this,se,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),le)return le;if(this._backtrack){for(var ye in ve)this[ye]=ve[ye];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var z,se,le,ke;this._more||(this.yytext="",this.match="");for(var ve=this._currentRules(),ye=0;yese[0].length)){if(se=le,ke=ye,this.options.backtrack_lexer){if(z=this.test_match(le,ve[ye]),z!==!1)return z;if(this._backtrack){se=!1;continue}else return!1}else if(!this.options.flex)break}return se?(z=this.test_match(se,ve[ke]),z!==!1?z:!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:o(function(){var se=this.next();return se||this.lex()},"lex"),begin:o(function(se){this.conditionStack.push(se)},"begin"),popState:o(function(){var se=this.conditionStack.length-1;return se>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(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:o(function(se){return se=this.conditionStack.length-1-Math.abs(se||0),se>=0?this.conditionStack[se]:"INITIAL"},"topState"),pushState:o(function(se){this.begin(se)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:o(function(se,le,ke,ve){var ye=ve;switch(ke){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 he})();fe.lexer=xe;function W(){this.yy={}}return o(W,"Parser"),W.prototype=fe,fe.Parser=W,new W})();FF.parser=FF;O1e=FF});var Ts,V6,B1e=N(()=>{"use strict";yr();La();pt();Oy();Ts=mh(),V6=class{constructor(){this.classes=new Map;this.config=this.getDefaultConfig(),this.themeConfig=this.getDefaultThemeConfig(),this.data=this.getDefaultData()}static{o(this,"QuadrantBuilder")}getDefaultData(){return{titleText:"",quadrant1Text:"",quadrant2Text:"",quadrant3Text:"",quadrant4Text:"",xAxisLeftText:"",xAxisRightText:"",yAxisBottomText:"",yAxisTopText:"",points:[]}}getDefaultConfig(){return{showXAxis:!0,showYAxis:!0,showTitle:!0,chartHeight:ur.quadrantChart?.chartWidth||500,chartWidth:ur.quadrantChart?.chartHeight||500,titlePadding:ur.quadrantChart?.titlePadding||10,titleFontSize:ur.quadrantChart?.titleFontSize||20,quadrantPadding:ur.quadrantChart?.quadrantPadding||5,xAxisLabelPadding:ur.quadrantChart?.xAxisLabelPadding||5,yAxisLabelPadding:ur.quadrantChart?.yAxisLabelPadding||5,xAxisLabelFontSize:ur.quadrantChart?.xAxisLabelFontSize||16,yAxisLabelFontSize:ur.quadrantChart?.yAxisLabelFontSize||16,quadrantLabelFontSize:ur.quadrantChart?.quadrantLabelFontSize||16,quadrantTextTopPadding:ur.quadrantChart?.quadrantTextTopPadding||5,pointTextPadding:ur.quadrantChart?.pointTextPadding||5,pointLabelFontSize:ur.quadrantChart?.pointLabelFontSize||12,pointRadius:ur.quadrantChart?.pointRadius||5,xAxisPosition:ur.quadrantChart?.xAxisPosition||"top",yAxisPosition:ur.quadrantChart?.yAxisPosition||"left",quadrantInternalBorderStrokeWidth:ur.quadrantChart?.quadrantInternalBorderStrokeWidth||1,quadrantExternalBorderStrokeWidth:ur.quadrantChart?.quadrantExternalBorderStrokeWidth||2}}getDefaultThemeConfig(){return{quadrant1Fill:Ts.quadrant1Fill,quadrant2Fill:Ts.quadrant2Fill,quadrant3Fill:Ts.quadrant3Fill,quadrant4Fill:Ts.quadrant4Fill,quadrant1TextFill:Ts.quadrant1TextFill,quadrant2TextFill:Ts.quadrant2TextFill,quadrant3TextFill:Ts.quadrant3TextFill,quadrant4TextFill:Ts.quadrant4TextFill,quadrantPointFill:Ts.quadrantPointFill,quadrantPointTextFill:Ts.quadrantPointTextFill,quadrantXAxisTextFill:Ts.quadrantXAxisTextFill,quadrantYAxisTextFill:Ts.quadrantYAxisTextFill,quadrantTitleFill:Ts.quadrantTitleFill,quadrantInternalBorderStrokeFill:Ts.quadrantInternalBorderStrokeFill,quadrantExternalBorderStrokeFill:Ts.quadrantExternalBorderStrokeFill}}clear(){this.config=this.getDefaultConfig(),this.themeConfig=this.getDefaultThemeConfig(),this.data=this.getDefaultData(),this.classes=new Map,X.info("clear called")}setData(e){this.data={...this.data,...e}}addPoints(e){this.data.points=[...e,...this.data.points]}addClass(e,r){this.classes.set(e,r)}setConfig(e){X.trace("setConfig called with: ",e),this.config={...this.config,...e}}setThemeConfig(e){X.trace("setThemeConfig called with: ",e),this.themeConfig={...this.themeConfig,...e}}calculateSpace(e,r,n,i){let a=this.config.xAxisLabelPadding*2+this.config.xAxisLabelFontSize,s={top:e==="top"&&r?a:0,bottom:e==="bottom"&&r?a:0},l=this.config.yAxisLabelPadding*2+this.config.yAxisLabelFontSize,u={left:this.config.yAxisPosition==="left"&&n?l:0,right:this.config.yAxisPosition==="right"&&n?l:0},h=this.config.titleFontSize+this.config.titlePadding*2,f={top:i?h:0},d=this.config.quadrantPadding+u.left,p=this.config.quadrantPadding+s.top+f.top,m=this.config.chartWidth-this.config.quadrantPadding*2-u.left-u.right,g=this.config.chartHeight-this.config.quadrantPadding*2-s.top-s.bottom-f.top,y=m/2,v=g/2;return{xAxisSpace:s,yAxisSpace:u,titleSpace:f,quadrantSpace:{quadrantLeft:d,quadrantTop:p,quadrantWidth:m,quadrantHalfWidth:y,quadrantHeight:g,quadrantHalfHeight:v}}}getAxisLabels(e,r,n,i){let{quadrantSpace:a,titleSpace:s}=i,{quadrantHalfHeight:l,quadrantHeight:u,quadrantLeft:h,quadrantHalfWidth:f,quadrantTop:d,quadrantWidth:p}=a,m=!!this.data.xAxisRightText,g=!!this.data.yAxisTopText,y=[];return this.data.xAxisLeftText&&r&&y.push({text:this.data.xAxisLeftText,fill:this.themeConfig.quadrantXAxisTextFill,x:h+(m?f/2:0),y:e==="top"?this.config.xAxisLabelPadding+s.top:this.config.xAxisLabelPadding+d+u+this.config.quadrantPadding,fontSize:this.config.xAxisLabelFontSize,verticalPos:m?"center":"left",horizontalPos:"top",rotation:0}),this.data.xAxisRightText&&r&&y.push({text:this.data.xAxisRightText,fill:this.themeConfig.quadrantXAxisTextFill,x:h+f+(m?f/2:0),y:e==="top"?this.config.xAxisLabelPadding+s.top:this.config.xAxisLabelPadding+d+u+this.config.quadrantPadding,fontSize:this.config.xAxisLabelFontSize,verticalPos:m?"center":"left",horizontalPos:"top",rotation:0}),this.data.yAxisBottomText&&n&&y.push({text:this.data.yAxisBottomText,fill:this.themeConfig.quadrantYAxisTextFill,x:this.config.yAxisPosition==="left"?this.config.yAxisLabelPadding:this.config.yAxisLabelPadding+h+p+this.config.quadrantPadding,y:d+u-(g?l/2:0),fontSize:this.config.yAxisLabelFontSize,verticalPos:g?"center":"left",horizontalPos:"top",rotation:-90}),this.data.yAxisTopText&&n&&y.push({text:this.data.yAxisTopText,fill:this.themeConfig.quadrantYAxisTextFill,x:this.config.yAxisPosition==="left"?this.config.yAxisLabelPadding:this.config.yAxisLabelPadding+h+p+this.config.quadrantPadding,y:d+l-(g?l/2:0),fontSize:this.config.yAxisLabelFontSize,verticalPos:g?"center":"left",horizontalPos:"top",rotation:-90}),y}getQuadrants(e){let{quadrantSpace:r}=e,{quadrantHalfHeight:n,quadrantLeft:i,quadrantHalfWidth:a,quadrantTop:s}=r,l=[{text:{text:this.data.quadrant1Text,fill:this.themeConfig.quadrant1TextFill,x:0,y:0,fontSize:this.config.quadrantLabelFontSize,verticalPos:"center",horizontalPos:"middle",rotation:0},x:i+a,y:s,width:a,height:n,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:i,y:s,width:a,height:n,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:i,y:s+n,width:a,height:n,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:i+a,y:s+n,width:a,height:n,fill:this.themeConfig.quadrant4Fill}];for(let u of l)u.text.x=u.x+u.width/2,this.data.points.length===0?(u.text.y=u.y+u.height/2,u.text.horizontalPos="middle"):(u.text.y=u.y+this.config.quadrantTextTopPadding,u.text.horizontalPos="top");return l}getQuadrantPoints(e){let{quadrantSpace:r}=e,{quadrantHeight:n,quadrantLeft:i,quadrantTop:a,quadrantWidth:s}=r,l=Tl().domain([0,1]).range([i,s+i]),u=Tl().domain([0,1]).range([n+a,a]);return this.data.points.map(f=>{let d=this.classes.get(f.className);return d&&(f={...d,...f}),{x:l(f.x),y:u(f.y),fill:f.color??this.themeConfig.quadrantPointFill,radius:f.radius??this.config.pointRadius,text:{text:f.text,fill:this.themeConfig.quadrantPointTextFill,x:l(f.x),y:u(f.y)+this.config.pointTextPadding,verticalPos:"center",horizontalPos:"top",fontSize:this.config.pointLabelFontSize,rotation:0},strokeColor:f.strokeColor??this.themeConfig.quadrantPointFill,strokeWidth:f.strokeWidth??"0px"}})}getBorders(e){let r=this.config.quadrantExternalBorderStrokeWidth/2,{quadrantSpace:n}=e,{quadrantHalfHeight:i,quadrantHeight:a,quadrantLeft:s,quadrantHalfWidth:l,quadrantTop:u,quadrantWidth:h}=n;return[{strokeFill:this.themeConfig.quadrantExternalBorderStrokeFill,strokeWidth:this.config.quadrantExternalBorderStrokeWidth,x1:s-r,y1:u,x2:s+h+r,y2:u},{strokeFill:this.themeConfig.quadrantExternalBorderStrokeFill,strokeWidth:this.config.quadrantExternalBorderStrokeWidth,x1:s+h,y1:u+r,x2:s+h,y2:u+a-r},{strokeFill:this.themeConfig.quadrantExternalBorderStrokeFill,strokeWidth:this.config.quadrantExternalBorderStrokeWidth,x1:s-r,y1:u+a,x2:s+h+r,y2:u+a},{strokeFill:this.themeConfig.quadrantExternalBorderStrokeFill,strokeWidth:this.config.quadrantExternalBorderStrokeWidth,x1:s,y1:u+r,x2:s,y2:u+a-r},{strokeFill:this.themeConfig.quadrantInternalBorderStrokeFill,strokeWidth:this.config.quadrantInternalBorderStrokeWidth,x1:s+l,y1:u+r,x2:s+l,y2:u+a-r},{strokeFill:this.themeConfig.quadrantInternalBorderStrokeFill,strokeWidth:this.config.quadrantInternalBorderStrokeWidth,x1:s+r,y1:u+i,x2:s+h-r,y2:u+i}]}getTitle(e){if(e)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 e=this.config.showXAxis&&!!(this.data.xAxisLeftText||this.data.xAxisRightText),r=this.config.showYAxis&&!!(this.data.yAxisTopText||this.data.yAxisBottomText),n=this.config.showTitle&&!!this.data.titleText,i=this.data.points.length>0?"bottom":this.config.xAxisPosition,a=this.calculateSpace(i,e,r,n);return{points:this.getQuadrantPoints(a),quadrants:this.getQuadrants(a),axisLabels:this.getAxisLabels(i,e,r,a),borderLines:this.getBorders(a),title:this.getTitle(n)}}}});function $F(t){return!/^#?([\dA-Fa-f]{6}|[\dA-Fa-f]{3})$/.test(t)}function F1e(t){return!/^\d+$/.test(t)}function $1e(t){return!/^\d+px$/.test(t)}var s0,z1e=N(()=>{"use strict";s0=class extends Error{static{o(this,"InvalidStyleError")}constructor(e,r,n){super(`value for ${e} ${r} is invalid, please use a valid ${n}`),this.name="InvalidStyleError"}};o($F,"validateHexCode");o(F1e,"validateNumber");o($1e,"validateSizeInPixels")});function sh(t){return sr(t.trim(),nZe)}function iZe(t){Ca.setData({quadrant1Text:sh(t.text)})}function aZe(t){Ca.setData({quadrant2Text:sh(t.text)})}function sZe(t){Ca.setData({quadrant3Text:sh(t.text)})}function oZe(t){Ca.setData({quadrant4Text:sh(t.text)})}function lZe(t){Ca.setData({xAxisLeftText:sh(t.text)})}function cZe(t){Ca.setData({xAxisRightText:sh(t.text)})}function uZe(t){Ca.setData({yAxisTopText:sh(t.text)})}function hZe(t){Ca.setData({yAxisBottomText:sh(t.text)})}function zF(t){let e={};for(let r of t){let[n,i]=r.trim().split(/\s*:\s*/);if(n==="radius"){if(F1e(i))throw new s0(n,i,"number");e.radius=parseInt(i)}else if(n==="color"){if($F(i))throw new s0(n,i,"hex code");e.color=i}else if(n==="stroke-color"){if($F(i))throw new s0(n,i,"hex code");e.strokeColor=i}else if(n==="stroke-width"){if($1e(i))throw new s0(n,i,"number of pixels (eg. 10px)");e.strokeWidth=i}else throw new Error(`style named ${n} is not supported.`)}return e}function fZe(t,e,r,n,i){let a=zF(i);Ca.addPoints([{x:r,y:n,text:sh(t.text),className:e,...a}])}function dZe(t,e){Ca.addClass(t,zF(e))}function pZe(t){Ca.setConfig({chartWidth:t})}function mZe(t){Ca.setConfig({chartHeight:t})}function gZe(){let t=ge(),{themeVariables:e,quadrantChart:r}=t;return r&&Ca.setConfig(r),Ca.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}),Ca.setData({titleText:Pr()}),Ca.build()}var nZe,Ca,yZe,G1e,V1e=N(()=>{"use strict";Xt();gr();ci();B1e();z1e();nZe=ge();o(sh,"textSanitizer");Ca=new V6;o(iZe,"setQuadrant1Text");o(aZe,"setQuadrant2Text");o(sZe,"setQuadrant3Text");o(oZe,"setQuadrant4Text");o(lZe,"setXAxisLeftText");o(cZe,"setXAxisRightText");o(uZe,"setYAxisTopText");o(hZe,"setYAxisBottomText");o(zF,"parseStyles");o(fZe,"addPoint");o(dZe,"addClass");o(pZe,"setWidth");o(mZe,"setHeight");o(gZe,"getQuadrantData");yZe=o(function(){Ca.clear(),Sr()},"clear"),G1e={setWidth:pZe,setHeight:mZe,setQuadrant1Text:iZe,setQuadrant2Text:aZe,setQuadrant3Text:sZe,setQuadrant4Text:oZe,setXAxisLeftText:lZe,setXAxisRightText:cZe,setYAxisTopText:uZe,setYAxisBottomText:hZe,parseStyles:zF,addPoint:fZe,addClass:dZe,getQuadrantData:gZe,clear:yZe,setAccTitle:Rr,getAccTitle:Mr,setDiagramTitle:$r,getDiagramTitle:Pr,getAccDescription:Or,setAccDescription:Ir}});var vZe,U1e,H1e=N(()=>{"use strict";yr();Xt();pt();Ei();vZe=o((t,e,r,n)=>{function i(C){return C==="top"?"hanging":"middle"}o(i,"getDominantBaseLine");function a(C){return C==="left"?"start":"middle"}o(a,"getTextAnchor");function s(C){return`translate(${C.x}, ${C.y}) rotate(${C.rotation||0})`}o(s,"getTransformation");let l=ge();X.debug(`Rendering quadrant chart -`+t);let u=l.securityLevel,h;u==="sandbox"&&(h=qe("#i"+e));let d=(u==="sandbox"?qe(h.nodes()[0].contentDocument.body):qe("body")).select(`[id="${e}"]`),p=d.append("g").attr("class","main"),m=l.quadrantChart?.chartWidth??500,g=l.quadrantChart?.chartHeight??500;mn(d,g,m,l.quadrantChart?.useMaxWidth??!0),d.attr("viewBox","0 0 "+m+" "+g),n.db.setHeight(g),n.db.setWidth(m);let y=n.db.getQuadrantData(),v=p.append("g").attr("class","quadrants"),x=p.append("g").attr("class","border"),b=p.append("g").attr("class","data-points"),T=p.append("g").attr("class","labels"),S=p.append("g").attr("class","title");y.title&&S.append("text").attr("x",0).attr("y",0).attr("fill",y.title.fill).attr("font-size",y.title.fontSize).attr("dominant-baseline",i(y.title.horizontalPos)).attr("text-anchor",a(y.title.verticalPos)).attr("transform",s(y.title)).text(y.title.text),y.borderLines&&x.selectAll("line").data(y.borderLines).enter().append("line").attr("x1",C=>C.x1).attr("y1",C=>C.y1).attr("x2",C=>C.x2).attr("y2",C=>C.y2).style("stroke",C=>C.strokeFill).style("stroke-width",C=>C.strokeWidth);let w=v.selectAll("g.quadrant").data(y.quadrants).enter().append("g").attr("class","quadrant");w.append("rect").attr("x",C=>C.x).attr("y",C=>C.y).attr("width",C=>C.width).attr("height",C=>C.height).attr("fill",C=>C.fill),w.append("text").attr("x",0).attr("y",0).attr("fill",C=>C.text.fill).attr("font-size",C=>C.text.fontSize).attr("dominant-baseline",C=>i(C.text.horizontalPos)).attr("text-anchor",C=>a(C.text.verticalPos)).attr("transform",C=>s(C.text)).text(C=>C.text.text),T.selectAll("g.label").data(y.axisLabels).enter().append("g").attr("class","label").append("text").attr("x",0).attr("y",0).text(C=>C.text).attr("fill",C=>C.fill).attr("font-size",C=>C.fontSize).attr("dominant-baseline",C=>i(C.horizontalPos)).attr("text-anchor",C=>a(C.verticalPos)).attr("transform",C=>s(C));let A=b.selectAll("g.data-point").data(y.points).enter().append("g").attr("class","data-point");A.append("circle").attr("cx",C=>C.x).attr("cy",C=>C.y).attr("r",C=>C.radius).attr("fill",C=>C.fill).attr("stroke",C=>C.strokeColor).attr("stroke-width",C=>C.strokeWidth),A.append("text").attr("x",0).attr("y",0).text(C=>C.text.text).attr("fill",C=>C.text.fill).attr("font-size",C=>C.text.fontSize).attr("dominant-baseline",C=>i(C.text.horizontalPos)).attr("text-anchor",C=>a(C.text.verticalPos)).attr("transform",C=>s(C.text))},"draw"),U1e={draw:vZe}});var q1e={};dr(q1e,{diagram:()=>xZe});var xZe,W1e=N(()=>{"use strict";P1e();V1e();H1e();xZe={parser:O1e,db:G1e,renderer:U1e,styles:o(()=>"","styles")}});var GF,j1e,K1e=N(()=>{"use strict";GF=(function(){var t=o(function(O,M,P,B){for(P=P||{},B=O.length;B--;P[O[B]]=M);return P},"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],l=[1,5,10,12,14,16,18,19,21,23,34,35,36],u=[1,25],h=[1,26],f=[1,28],d=[1,29],p=[1,30],m=[1,31],g=[1,32],y=[1,33],v=[1,34],x=[1,35],b=[1,36],T=[1,37],S=[1,43],w=[1,42],k=[1,47],A=[1,50],C=[1,10,12,14,16,18,19,21,23,34,35,36],R=[1,10,12,14,16,18,19,21,23,24,26,27,28,34,35,36],I=[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],L=[1,64],E={trace:o(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:o(function(M,P,B,F,G,$,U){var j=$.length-1;switch(G){case 5:F.setOrientation($[j]);break;case 9:F.setDiagramTitle($[j].text.trim());break;case 12:F.setLineData({text:"",type:"text"},$[j]);break;case 13:F.setLineData($[j-1],$[j]);break;case 14:F.setBarData({text:"",type:"text"},$[j]);break;case 15:F.setBarData($[j-1],$[j]);break;case 16:this.$=$[j].trim(),F.setAccTitle(this.$);break;case 17:case 18:this.$=$[j].trim(),F.setAccDescription(this.$);break;case 19:this.$=$[j-1];break;case 20:this.$=[Number($[j-2]),...$[j]];break;case 21:this.$=[Number($[j])];break;case 22:F.setXAxisTitle($[j]);break;case 23:F.setXAxisTitle($[j-1]);break;case 24:F.setXAxisTitle({type:"text",text:""});break;case 25:F.setXAxisBand($[j]);break;case 26:F.setXAxisRangeData(Number($[j-2]),Number($[j]));break;case 27:this.$=$[j-1];break;case 28:this.$=[$[j-2],...$[j]];break;case 29:this.$=[$[j]];break;case 30:F.setYAxisTitle($[j]);break;case 31:F.setYAxisTitle($[j-1]);break;case 32:F.setYAxisTitle({type:"text",text:""});break;case 33:F.setYAxisRangeData(Number($[j-2]),Number($[j]));break;case 37:this.$={text:$[j],type:"text"};break;case 38:this.$={text:$[j],type:"text"};break;case 39:this.$={text:$[j],type:"markdown"};break;case 40:this.$=$[j];break;case 41:this.$=$[j-1]+""+$[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(l,[2,34]),t(l,[2,35]),t(l,[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(l,[2,5]),t(e,[2,7],{4:22,34:i,35:a,36:s}),{11:23,37:24,38:u,39:h,40:27,41:f,42:d,43:p,44:m,45:g,46:y,47:v,48:x,49:b,50:T},{11:39,13:38,24:S,27:w,29:40,30:41,37:24,38:u,39:h,40:27,41:f,42:d,43:p,44:m,45:g,46:y,47:v,48:x,49:b,50:T},{11:45,15:44,27:k,33:46,37:24,38:u,39:h,40:27,41:f,42:d,43:p,44:m,45:g,46:y,47:v,48:x,49:b,50:T},{11:49,17:48,24:A,37:24,38:u,39:h,40:27,41:f,42:d,43:p,44:m,45:g,46:y,47:v,48:x,49:b,50:T},{11:52,17:51,24:A,37:24,38:u,39:h,40:27,41:f,42:d,43:p,44:m,45:g,46:y,47:v,48:x,49:b,50:T},{20:[1,53]},{22:[1,54]},t(C,[2,18]),{1:[2,2]},t(C,[2,8]),t(C,[2,9]),t(R,[2,37],{40:55,41:f,42:d,43:p,44:m,45:g,46:y,47:v,48:x,49:b,50:T}),t(R,[2,38]),t(R,[2,39]),t(I,[2,40]),t(I,[2,42]),t(I,[2,43]),t(I,[2,44]),t(I,[2,45]),t(I,[2,46]),t(I,[2,47]),t(I,[2,48]),t(I,[2,49]),t(I,[2,50]),t(I,[2,51]),t(C,[2,10]),t(C,[2,22],{30:41,29:56,24:S,27:w}),t(C,[2,24]),t(C,[2,25]),{31:[1,57]},{11:59,32:58,37:24,38:u,39:h,40:27,41:f,42:d,43:p,44:m,45:g,46:y,47:v,48:x,49:b,50:T},t(C,[2,11]),t(C,[2,30],{33:60,27:k}),t(C,[2,32]),{31:[1,61]},t(C,[2,12]),{17:62,24:A},{25:63,27:L},t(C,[2,14]),{17:65,24:A},t(C,[2,16]),t(C,[2,17]),t(I,[2,41]),t(C,[2,23]),{27:[1,66]},{26:[1,67]},{26:[2,29],28:[1,68]},t(C,[2,31]),{27:[1,69]},t(C,[2,13]),{26:[1,70]},{26:[2,21],28:[1,71]},t(C,[2,15]),t(C,[2,26]),t(C,[2,27]),{11:59,32:72,37:24,38:u,39:h,40:27,41:f,42:d,43:p,44:m,45:g,46:y,47:v,48:x,49:b,50:T},t(C,[2,33]),t(C,[2,19]),{25:73,27:L},{26:[2,28]},{26:[2,20]}],defaultActions:{8:[2,1],10:[2,3],21:[2,2],72:[2,28],73:[2,20]},parseError:o(function(M,P){if(P.recoverable)this.trace(M);else{var B=new Error(M);throw B.hash=P,B}},"parseError"),parse:o(function(M){var P=this,B=[0],F=[],G=[null],$=[],U=this.table,j="",te=0,Y=0,oe=0,J=2,ue=1,re=$.slice.call(arguments,1),ee=Object.create(this.lexer),Z={yy:{}};for(var K in this.yy)Object.prototype.hasOwnProperty.call(this.yy,K)&&(Z.yy[K]=this.yy[K]);ee.setInput(M,Z.yy),Z.yy.lexer=ee,Z.yy.parser=this,typeof ee.yylloc>"u"&&(ee.yylloc={});var ae=ee.yylloc;$.push(ae);var Q=ee.options&&ee.options.ranges;typeof Z.yy.parseError=="function"?this.parseError=Z.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function de(fe){B.length=B.length-2*fe,G.length=G.length-fe,$.length=$.length-fe}o(de,"popStack");function ne(){var fe;return fe=F.pop()||ee.lex()||ue,typeof fe!="number"&&(fe instanceof Array&&(F=fe,fe=F.pop()),fe=P.symbols_[fe]||fe),fe}o(ne,"lex");for(var Te,q,Ve,pe,Be,Ye,He={},Le,Ie,Ne,Ce;;){if(Ve=B[B.length-1],this.defaultActions[Ve]?pe=this.defaultActions[Ve]:((Te===null||typeof Te>"u")&&(Te=ne()),pe=U[Ve]&&U[Ve][Te]),typeof pe>"u"||!pe.length||!pe[0]){var Fe="";Ce=[];for(Le in U[Ve])this.terminals_[Le]&&Le>J&&Ce.push("'"+this.terminals_[Le]+"'");ee.showPosition?Fe="Parse error on line "+(te+1)+`: -`+ee.showPosition()+` -Expecting `+Ce.join(", ")+", got '"+(this.terminals_[Te]||Te)+"'":Fe="Parse error on line "+(te+1)+": Unexpected "+(Te==ue?"end of input":"'"+(this.terminals_[Te]||Te)+"'"),this.parseError(Fe,{text:ee.match,token:this.terminals_[Te]||Te,line:ee.yylineno,loc:ae,expected:Ce})}if(pe[0]instanceof Array&&pe.length>1)throw new Error("Parse Error: multiple actions possible at state: "+Ve+", token: "+Te);switch(pe[0]){case 1:B.push(Te),G.push(ee.yytext),$.push(ee.yylloc),B.push(pe[1]),Te=null,q?(Te=q,q=null):(Y=ee.yyleng,j=ee.yytext,te=ee.yylineno,ae=ee.yylloc,oe>0&&oe--);break;case 2:if(Ie=this.productions_[pe[1]][1],He.$=G[G.length-Ie],He._$={first_line:$[$.length-(Ie||1)].first_line,last_line:$[$.length-1].last_line,first_column:$[$.length-(Ie||1)].first_column,last_column:$[$.length-1].last_column},Q&&(He._$.range=[$[$.length-(Ie||1)].range[0],$[$.length-1].range[1]]),Ye=this.performAction.apply(He,[j,Y,te,Z.yy,pe[1],G,$].concat(re)),typeof Ye<"u")return Ye;Ie&&(B=B.slice(0,-1*Ie*2),G=G.slice(0,-1*Ie),$=$.slice(0,-1*Ie)),B.push(this.productions_[pe[1]][0]),G.push(He.$),$.push(He._$),Ne=U[B[B.length-2]][B[B.length-1]],B.push(Ne);break;case 3:return!0}}return!0},"parse")},D=(function(){var O={EOF:1,parseError:o(function(P,B){if(this.yy.parser)this.yy.parser.parseError(P,B);else throw new Error(P)},"parseError"),setInput:o(function(M,P){return this.yy=P||this.yy||{},this._input=M,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:o(function(){var M=this._input[0];this.yytext+=M,this.yyleng++,this.offset++,this.match+=M,this.matched+=M;var P=M.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),M},"input"),unput:o(function(M){var P=M.length,B=M.split(/(?:\r\n?|\n)/g);this._input=M+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-P),this.offset-=P;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),B.length-1&&(this.yylineno-=B.length-1);var G=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===F.length?this.yylloc.first_column:0)+F[F.length-B.length].length-B[0].length:this.yylloc.first_column-P},this.options.ranges&&(this.yylloc.range=[G[0],G[0]+this.yyleng-P]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(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:o(function(M){this.unput(this.match.slice(M))},"less"),pastInput:o(function(){var M=this.matched.substr(0,this.matched.length-this.match.length);return(M.length>20?"...":"")+M.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var M=this.match;return M.length<20&&(M+=this._input.substr(0,20-M.length)),(M.substr(0,20)+(M.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var M=this.pastInput(),P=new Array(M.length+1).join("-");return M+this.upcomingInput()+` -`+P+"^"},"showPosition"),test_match:o(function(M,P){var B,F,G;if(this.options.backtrack_lexer&&(G={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&&(G.yylloc.range=this.yylloc.range.slice(0))),F=M[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+M[0].length},this.yytext+=M[0],this.match+=M[0],this.matches=M,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(M[0].length),this.matched+=M[0],B=this.performAction.call(this,this.yy,this,P,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),B)return B;if(this._backtrack){for(var $ in G)this[$]=G[$];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var M,P,B,F;this._more||(this.yytext="",this.match="");for(var G=this._currentRules(),$=0;$P[0].length)){if(P=B,F=$,this.options.backtrack_lexer){if(M=this.test_match(B,G[$]),M!==!1)return M;if(this._backtrack){P=!1;continue}else return!1}else if(!this.options.flex)break}return P?(M=this.test_match(P,G[F]),M!==!1?M:!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:o(function(){var P=this.next();return P||this.lex()},"lex"),begin:o(function(P){this.conditionStack.push(P)},"begin"),popState:o(function(){var P=this.conditionStack.length-1;return P>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(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:o(function(P){return P=this.conditionStack.length-1-Math.abs(P||0),P>=0?this.conditionStack[P]:"INITIAL"},"topState"),pushState:o(function(P){this.begin(P)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:o(function(P,B,F,G){var $=G;switch(F){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 5;case 16:return 8;case 17:return this.pushState("axis_data"),"X_AXIS";break;case 18:return this.pushState("axis_data"),"Y_AXIS";break;case 19:return this.pushState("axis_band_data"),24;break;case 20:return 31;case 21:return this.pushState("data"),16;break;case 22:return this.pushState("data"),18;break;case 23:return this.pushState("data_inner"),24;break;case 24:return 27;case 25:return this.popState(),26;break;case 26:this.popState();break;case 27:this.pushState("string");break;case 28:this.popState();break;case 29:return"STR";case 30:return 24;case 31:return 26;case 32:return 43;case 33:return"COLON";case 34:return 44;case 35:return 28;case 36:return 45;case 37:return 46;case 38:return 48;case 39:return 50;case 40:return 47;case 41:return 41;case 42:return 49;case 43:return 42;case 44:break;case 45:return 35;case 46: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,/^(?:xychart\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,18,21,22,24,25,26,27,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46],inclusive:!0},data:{rules:[0,1,3,4,5,6,7,9,11,14,15,16,17,18,21,22,23,26,27,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46],inclusive:!0},axis_band_data:{rules:[0,1,4,5,6,7,9,11,14,15,16,17,18,21,22,25,26,27,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46],inclusive:!0},axis_data:{rules:[0,1,2,4,5,6,7,9,11,14,15,16,17,18,19,20,21,22,24,26,27,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46],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:[28,29],inclusive:!1},INITIAL:{rules:[0,1,4,5,6,7,9,11,14,15,16,17,18,21,22,26,27,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46],inclusive:!0}}};return O})();E.lexer=D;function _(){this.yy={}}return o(_,"Parser"),_.prototype=E,E.Parser=_,new _})();GF.parser=GF;j1e=GF});function VF(t){return t.type==="bar"}function U6(t){return t.type==="band"}function ry(t){return t.type==="linear"}var H6=N(()=>{"use strict";o(VF,"isBarPlot");o(U6,"isBandAxisData");o(ry,"isLinearAxisData")});var ny,UF=N(()=>{"use strict";zo();ny=class{constructor(e){this.parentGroup=e}static{o(this,"TextDimensionCalculatorWithFont")}getMaxDimension(e,r){if(!this.parentGroup)return{width:e.reduce((a,s)=>Math.max(s.length,a),0)*r,height:r};let n={width:0,height:0},i=this.parentGroup.append("g").attr("visibility","hidden").attr("font-size",r);for(let a of e){let s=qZ(i,1,a),l=s?s.width:a.length*r,u=s?s.height:r;n.width=Math.max(n.width,l),n.height=Math.max(n.height,u)}return i.remove(),n}}});var iy,HF=N(()=>{"use strict";iy=class{constructor(e,r,n,i){this.axisConfig=e;this.title=r;this.textDimensionCalculator=n;this.axisThemeConfig=i;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{o(this,"BaseAxis")}setRange(e){this.range=e,this.axisPosition==="left"||this.axisPosition==="right"?this.boundingRect.height=e[1]-e[0]:this.boundingRect.width=e[1]-e[0],this.recalculateScale()}getRange(){return[this.range[0]+this.outerPadding,this.range[1]-this.outerPadding]}setAxisPosition(e){this.axisPosition=e,this.setRange(this.range)}getTickDistance(){let e=this.getRange();return Math.abs(e[0]-e[1])/this.getTickValues().length}getAxisOuterPadding(){return this.outerPadding}getLabelDimension(){return this.textDimensionCalculator.getMaxDimension(this.getTickValues().map(e=>e.toString()),this.axisConfig.labelFontSize)}recalculateOuterPaddingToDrawBar(){.7*this.getTickDistance()>this.outerPadding*2&&(this.outerPadding=Math.floor(.7*this.getTickDistance()/2)),this.recalculateScale()}calculateSpaceIfDrawnHorizontally(e){let r=e.height;if(this.axisConfig.showAxisLine&&r>this.axisConfig.axisLineWidth&&(r-=this.axisConfig.axisLineWidth,this.showAxisLine=!0),this.axisConfig.showLabel){let n=this.getLabelDimension(),i=.2*e.width;this.outerPadding=Math.min(n.width/2,i);let a=n.height+this.axisConfig.labelPadding*2;this.labelTextHeight=n.height,a<=r&&(r-=a,this.showLabel=!0)}if(this.axisConfig.showTick&&r>=this.axisConfig.tickLength&&(this.showTick=!0,r-=this.axisConfig.tickLength),this.axisConfig.showTitle&&this.title){let n=this.textDimensionCalculator.getMaxDimension([this.title],this.axisConfig.titleFontSize),i=n.height+this.axisConfig.titlePadding*2;this.titleTextHeight=n.height,i<=r&&(r-=i,this.showTitle=!0)}this.boundingRect.width=e.width,this.boundingRect.height=e.height-r}calculateSpaceIfDrawnVertical(e){let r=e.width;if(this.axisConfig.showAxisLine&&r>this.axisConfig.axisLineWidth&&(r-=this.axisConfig.axisLineWidth,this.showAxisLine=!0),this.axisConfig.showLabel){let n=this.getLabelDimension(),i=.2*e.height;this.outerPadding=Math.min(n.height/2,i);let a=n.width+this.axisConfig.labelPadding*2;a<=r&&(r-=a,this.showLabel=!0)}if(this.axisConfig.showTick&&r>=this.axisConfig.tickLength&&(this.showTick=!0,r-=this.axisConfig.tickLength),this.axisConfig.showTitle&&this.title){let n=this.textDimensionCalculator.getMaxDimension([this.title],this.axisConfig.titleFontSize),i=n.height+this.axisConfig.titlePadding*2;this.titleTextHeight=n.height,i<=r&&(r-=i,this.showTitle=!0)}this.boundingRect.width=e.width-r,this.boundingRect.height=e.height}calculateSpace(e){return this.axisPosition==="left"||this.axisPosition==="right"?this.calculateSpaceIfDrawnVertical(e):this.calculateSpaceIfDrawnHorizontally(e),this.recalculateScale(),{width:this.boundingRect.width,height:this.boundingRect.height}}setBoundingBoxXY(e){this.boundingRect.x=e.x,this.boundingRect.y=e.y}getDrawableElementsForLeftAxis(){let e=[];if(this.showAxisLine){let r=this.boundingRect.x+this.boundingRect.width-this.axisConfig.axisLineWidth/2;e.push({type:"path",groupTexts:["left-axis","axisl-line"],data:[{path:`M ${r},${this.boundingRect.y} L ${r},${this.boundingRect.y+this.boundingRect.height} `,strokeFill:this.axisThemeConfig.axisLineColor,strokeWidth:this.axisConfig.axisLineWidth}]})}if(this.showLabel&&e.push({type:"text",groupTexts:["left-axis","label"],data:this.getTickValues().map(r=>({text:r.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(r),fill:this.axisThemeConfig.labelColor,fontSize:this.axisConfig.labelFontSize,rotation:0,verticalPos:"middle",horizontalPos:"right"}))}),this.showTick){let r=this.boundingRect.x+this.boundingRect.width-(this.showAxisLine?this.axisConfig.axisLineWidth:0);e.push({type:"path",groupTexts:["left-axis","ticks"],data:this.getTickValues().map(n=>({path:`M ${r},${this.getScaleValue(n)} L ${r-this.axisConfig.tickLength},${this.getScaleValue(n)}`,strokeFill:this.axisThemeConfig.tickColor,strokeWidth:this.axisConfig.tickWidth}))})}return this.showTitle&&e.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"}]}),e}getDrawableElementsForBottomAxis(){let e=[];if(this.showAxisLine){let r=this.boundingRect.y+this.axisConfig.axisLineWidth/2;e.push({type:"path",groupTexts:["bottom-axis","axis-line"],data:[{path:`M ${this.boundingRect.x},${r} L ${this.boundingRect.x+this.boundingRect.width},${r}`,strokeFill:this.axisThemeConfig.axisLineColor,strokeWidth:this.axisConfig.axisLineWidth}]})}if(this.showLabel&&e.push({type:"text",groupTexts:["bottom-axis","label"],data:this.getTickValues().map(r=>({text:r.toString(),x:this.getScaleValue(r),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 r=this.boundingRect.y+(this.showAxisLine?this.axisConfig.axisLineWidth:0);e.push({type:"path",groupTexts:["bottom-axis","ticks"],data:this.getTickValues().map(n=>({path:`M ${this.getScaleValue(n)},${r} L ${this.getScaleValue(n)},${r+this.axisConfig.tickLength}`,strokeFill:this.axisThemeConfig.tickColor,strokeWidth:this.axisConfig.tickWidth}))})}return this.showTitle&&e.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"}]}),e}getDrawableElementsForTopAxis(){let e=[];if(this.showAxisLine){let r=this.boundingRect.y+this.boundingRect.height-this.axisConfig.axisLineWidth/2;e.push({type:"path",groupTexts:["top-axis","axis-line"],data:[{path:`M ${this.boundingRect.x},${r} L ${this.boundingRect.x+this.boundingRect.width},${r}`,strokeFill:this.axisThemeConfig.axisLineColor,strokeWidth:this.axisConfig.axisLineWidth}]})}if(this.showLabel&&e.push({type:"text",groupTexts:["top-axis","label"],data:this.getTickValues().map(r=>({text:r.toString(),x:this.getScaleValue(r),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 r=this.boundingRect.y;e.push({type:"path",groupTexts:["top-axis","ticks"],data:this.getTickValues().map(n=>({path:`M ${this.getScaleValue(n)},${r+this.boundingRect.height-(this.showAxisLine?this.axisConfig.axisLineWidth:0)} L ${this.getScaleValue(n)},${r+this.boundingRect.height-this.axisConfig.tickLength-(this.showAxisLine?this.axisConfig.axisLineWidth:0)}`,strokeFill:this.axisThemeConfig.tickColor,strokeWidth:this.axisConfig.tickWidth}))})}return this.showTitle&&e.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"}]}),e}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():[]}}});var q6,Q1e=N(()=>{"use strict";yr();pt();HF();q6=class extends iy{static{o(this,"BandAxis")}constructor(e,r,n,i,a){super(e,i,a,r),this.categories=n,this.scale=q0().domain(this.categories).range(this.getRange())}setRange(e){super.setRange(e)}recalculateScale(){this.scale=q0().domain(this.categories).range(this.getRange()).paddingInner(1).paddingOuter(0).align(.5),X.trace("BandAxis axis final categories, range: ",this.categories,this.getRange())}getTickValues(){return this.categories}getScaleValue(e){return this.scale(e)??this.getRange()[0]}}});var W6,Z1e=N(()=>{"use strict";yr();HF();W6=class extends iy{static{o(this,"LinearAxis")}constructor(e,r,n,i,a){super(e,i,a,r),this.domain=n,this.scale=Tl().domain(this.domain).range(this.getRange())}getTickValues(){return this.scale.ticks()}recalculateScale(){let e=[...this.domain];this.axisPosition==="left"&&e.reverse(),this.scale=Tl().domain(e).range(this.getRange())}getScaleValue(e){return this.scale(e)}}});function qF(t,e,r,n){let i=new ny(n);return U6(t)?new q6(e,r,t.categories,t.title,i):new W6(e,r,[t.min,t.max],t.title,i)}var J1e=N(()=>{"use strict";H6();UF();Q1e();Z1e();o(qF,"getAxis")});function eye(t,e,r,n){let i=new ny(n);return new WF(i,t,e,r)}var WF,tye=N(()=>{"use strict";UF();WF=class{constructor(e,r,n,i){this.textDimensionCalculator=e;this.chartConfig=r;this.chartData=n;this.chartThemeConfig=i;this.boundingRect={x:0,y:0,width:0,height:0},this.showChartTitle=!1}static{o(this,"ChartTitle")}setBoundingBoxXY(e){this.boundingRect.x=e.x,this.boundingRect.y=e.y}calculateSpace(e){let r=this.textDimensionCalculator.getMaxDimension([this.chartData.title],this.chartConfig.titleFontSize),n=Math.max(r.width,e.width),i=r.height+2*this.chartConfig.titlePadding;return r.width<=n&&r.height<=i&&this.chartConfig.showTitle&&this.chartData.title&&(this.boundingRect.width=n,this.boundingRect.height=i,this.showChartTitle=!0),{width:this.boundingRect.width,height:this.boundingRect.height}}getDrawableElements(){let e=[];return this.showChartTitle&&e.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}]}),e}};o(eye,"getChartTitleComponent")});var Y6,rye=N(()=>{"use strict";yr();Y6=class{constructor(e,r,n,i,a){this.plotData=e;this.xAxis=r;this.yAxis=n;this.orientation=i;this.plotIndex=a}static{o(this,"LinePlot")}getDrawableElement(){let e=this.plotData.data.map(n=>[this.xAxis.getScaleValue(n[0]),this.yAxis.getScaleValue(n[1])]),r;return this.orientation==="horizontal"?r=Cl().y(n=>n[0]).x(n=>n[1])(e):r=Cl().x(n=>n[0]).y(n=>n[1])(e),r?[{groupTexts:["plot",`line-plot-${this.plotIndex}`],type:"path",data:[{path:r,strokeFill:this.plotData.strokeFill,strokeWidth:this.plotData.strokeWidth}]}]:[]}}});var X6,nye=N(()=>{"use strict";X6=class{constructor(e,r,n,i,a,s){this.barData=e;this.boundingRect=r;this.xAxis=n;this.yAxis=i;this.orientation=a;this.plotIndex=s}static{o(this,"BarPlot")}getDrawableElement(){let e=this.barData.data.map(a=>[this.xAxis.getScaleValue(a[0]),this.yAxis.getScaleValue(a[1])]),n=Math.min(this.xAxis.getAxisOuterPadding()*2,this.xAxis.getTickDistance())*(1-.05),i=n/2;return this.orientation==="horizontal"?[{groupTexts:["plot",`bar-plot-${this.plotIndex}`],type:"rect",data:e.map(a=>({x:this.boundingRect.x,y:a[0]-i,height:n,width:a[1]-this.boundingRect.x,fill:this.barData.fill,strokeWidth:0,strokeFill:this.barData.fill}))}]:[{groupTexts:["plot",`bar-plot-${this.plotIndex}`],type:"rect",data:e.map(a=>({x:a[0]-i,y:a[1],width:n,height:this.boundingRect.y+this.boundingRect.height-a[1],fill:this.barData.fill,strokeWidth:0,strokeFill:this.barData.fill}))}]}}});function iye(t,e,r){return new YF(t,e,r)}var YF,aye=N(()=>{"use strict";rye();nye();YF=class{constructor(e,r,n){this.chartConfig=e;this.chartData=r;this.chartThemeConfig=n;this.boundingRect={x:0,y:0,width:0,height:0}}static{o(this,"BasePlot")}setAxes(e,r){this.xAxis=e,this.yAxis=r}setBoundingBoxXY(e){this.boundingRect.x=e.x,this.boundingRect.y=e.y}calculateSpace(e){return this.boundingRect.width=e.width,this.boundingRect.height=e.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 e=[];for(let[r,n]of this.chartData.plots.entries())switch(n.type){case"line":{let i=new Y6(n,this.xAxis,this.yAxis,this.chartConfig.chartOrientation,r);e.push(...i.getDrawableElement())}break;case"bar":{let i=new X6(n,this.boundingRect,this.xAxis,this.yAxis,this.chartConfig.chartOrientation,r);e.push(...i.getDrawableElement())}break}return e}};o(iye,"getPlotComponent")});var j6,sye=N(()=>{"use strict";J1e();tye();aye();H6();j6=class{constructor(e,r,n,i){this.chartConfig=e;this.chartData=r;this.componentStore={title:eye(e,r,n,i),plot:iye(e,r,n),xAxis:qF(r.xAxis,e.xAxis,{titleColor:n.xAxisTitleColor,labelColor:n.xAxisLabelColor,tickColor:n.xAxisTickColor,axisLineColor:n.xAxisLineColor},i),yAxis:qF(r.yAxis,e.yAxis,{titleColor:n.yAxisTitleColor,labelColor:n.yAxisLabelColor,tickColor:n.yAxisTickColor,axisLineColor:n.yAxisLineColor},i)}}static{o(this,"Orchestrator")}calculateVerticalSpace(){let e=this.chartConfig.width,r=this.chartConfig.height,n=0,i=0,a=Math.floor(e*this.chartConfig.plotReservedSpacePercent/100),s=Math.floor(r*this.chartConfig.plotReservedSpacePercent/100),l=this.componentStore.plot.calculateSpace({width:a,height:s});e-=l.width,r-=l.height,l=this.componentStore.title.calculateSpace({width:this.chartConfig.width,height:r}),i=l.height,r-=l.height,this.componentStore.xAxis.setAxisPosition("bottom"),l=this.componentStore.xAxis.calculateSpace({width:e,height:r}),r-=l.height,this.componentStore.yAxis.setAxisPosition("left"),l=this.componentStore.yAxis.calculateSpace({width:e,height:r}),n=l.width,e-=l.width,e>0&&(a+=e,e=0),r>0&&(s+=r,r=0),this.componentStore.plot.calculateSpace({width:a,height:s}),this.componentStore.plot.setBoundingBoxXY({x:n,y:i}),this.componentStore.xAxis.setRange([n,n+a]),this.componentStore.xAxis.setBoundingBoxXY({x:n,y:i+s}),this.componentStore.yAxis.setRange([i,i+s]),this.componentStore.yAxis.setBoundingBoxXY({x:0,y:i}),this.chartData.plots.some(u=>VF(u))&&this.componentStore.xAxis.recalculateOuterPaddingToDrawBar()}calculateHorizontalSpace(){let e=this.chartConfig.width,r=this.chartConfig.height,n=0,i=0,a=0,s=Math.floor(e*this.chartConfig.plotReservedSpacePercent/100),l=Math.floor(r*this.chartConfig.plotReservedSpacePercent/100),u=this.componentStore.plot.calculateSpace({width:s,height:l});e-=u.width,r-=u.height,u=this.componentStore.title.calculateSpace({width:this.chartConfig.width,height:r}),n=u.height,r-=u.height,this.componentStore.xAxis.setAxisPosition("left"),u=this.componentStore.xAxis.calculateSpace({width:e,height:r}),e-=u.width,i=u.width,this.componentStore.yAxis.setAxisPosition("top"),u=this.componentStore.yAxis.calculateSpace({width:e,height:r}),r-=u.height,a=n+u.height,e>0&&(s+=e,e=0),r>0&&(l+=r,r=0),this.componentStore.plot.calculateSpace({width:s,height:l}),this.componentStore.plot.setBoundingBoxXY({x:i,y:a}),this.componentStore.yAxis.setRange([i,i+s]),this.componentStore.yAxis.setBoundingBoxXY({x:i,y:n}),this.componentStore.xAxis.setRange([a,a+l]),this.componentStore.xAxis.setBoundingBoxXY({x:0,y:a}),this.chartData.plots.some(h=>VF(h))&&this.componentStore.xAxis.recalculateOuterPaddingToDrawBar()}calculateSpace(){this.chartConfig.chartOrientation==="horizontal"?this.calculateHorizontalSpace():this.calculateVerticalSpace()}getDrawableElement(){this.calculateSpace();let e=[];this.componentStore.plot.setAxes(this.componentStore.xAxis,this.componentStore.yAxis);for(let r of Object.values(this.componentStore))e.push(...r.getDrawableElements());return e}}});var K6,oye=N(()=>{"use strict";sye();K6=class{static{o(this,"XYChartBuilder")}static build(e,r,n,i){return new j6(e,r,n,i).getDrawableElement()}}});function cye(){let t=mh(),e=Qt();return Vn(t.xyChart,e.themeVariables.xyChart)}function uye(){let t=Qt();return Vn(ur.xyChart,t.xyChart)}function hye(){return{yAxis:{type:"linear",title:"",min:1/0,max:-1/0},xAxis:{type:"band",title:"",categories:[]},title:"",plots:[]}}function KF(t){let e=Qt();return sr(t.trim(),e)}function kZe(t){lye=t}function EZe(t){t==="horizontal"?v4.chartOrientation="horizontal":v4.chartOrientation="vertical"}function SZe(t){pn.xAxis.title=KF(t.text)}function fye(t,e){pn.xAxis={type:"linear",title:pn.xAxis.title,min:t,max:e},Q6=!0}function CZe(t){pn.xAxis={type:"band",title:pn.xAxis.title,categories:t.map(e=>KF(e.text))},Q6=!0}function AZe(t){pn.yAxis.title=KF(t.text)}function _Ze(t,e){pn.yAxis={type:"linear",title:pn.yAxis.title,min:t,max:e},jF=!0}function DZe(t){let e=Math.min(...t),r=Math.max(...t),n=ry(pn.yAxis)?pn.yAxis.min:1/0,i=ry(pn.yAxis)?pn.yAxis.max:-1/0;pn.yAxis={type:"linear",title:pn.yAxis.title,min:Math.min(n,e),max:Math.max(i,r)}}function dye(t){let e=[];if(t.length===0)return e;if(!Q6){let r=ry(pn.xAxis)?pn.xAxis.min:1/0,n=ry(pn.xAxis)?pn.xAxis.max:-1/0;fye(Math.min(r,1),Math.max(n,t.length))}if(jF||DZe(t),U6(pn.xAxis)&&(e=pn.xAxis.categories.map((r,n)=>[r,t[n]])),ry(pn.xAxis)){let r=pn.xAxis.min,n=pn.xAxis.max,i=(n-r)/(t.length-1),a=[];for(let s=r;s<=n;s+=i)a.push(`${s}`);e=a.map((s,l)=>[s,t[l]])}return e}function pye(t){return XF[t===0?0:t%XF.length]}function LZe(t,e){let r=dye(e);pn.plots.push({type:"line",strokeFill:pye(y4),strokeWidth:2,data:r}),y4++}function RZe(t,e){let r=dye(e);pn.plots.push({type:"bar",fill:pye(y4),data:r}),y4++}function NZe(){if(pn.plots.length===0)throw Error("No Plot to render, please provide a plot with some data");return pn.title=Pr(),K6.build(v4,pn,x4,lye)}function MZe(){return x4}function IZe(){return v4}function OZe(){return pn}var y4,lye,v4,x4,pn,XF,Q6,jF,PZe,mye,gye=N(()=>{"use strict";qn();La();Oy();tr();gr();ci();oye();H6();y4=0,v4=uye(),x4=cye(),pn=hye(),XF=x4.plotColorPalette.split(",").map(t=>t.trim()),Q6=!1,jF=!1;o(cye,"getChartDefaultThemeConfig");o(uye,"getChartDefaultConfig");o(hye,"getChartDefaultData");o(KF,"textSanitizer");o(kZe,"setTmpSVGG");o(EZe,"setOrientation");o(SZe,"setXAxisTitle");o(fye,"setXAxisRangeData");o(CZe,"setXAxisBand");o(AZe,"setYAxisTitle");o(_Ze,"setYAxisRangeData");o(DZe,"setYAxisRangeFromPlotData");o(dye,"transformDataWithoutCategory");o(pye,"getPlotColorFromPalette");o(LZe,"setLineData");o(RZe,"setBarData");o(NZe,"getDrawableElem");o(MZe,"getChartThemeConfig");o(IZe,"getChartConfig");o(OZe,"getXYChartData");PZe=o(function(){Sr(),y4=0,v4=uye(),pn=hye(),x4=cye(),XF=x4.plotColorPalette.split(",").map(t=>t.trim()),Q6=!1,jF=!1},"clear"),mye={getDrawableElem:NZe,clear:PZe,setAccTitle:Rr,getAccTitle:Mr,setDiagramTitle:$r,getDiagramTitle:Pr,getAccDescription:Or,setAccDescription:Ir,setOrientation:EZe,setXAxisTitle:SZe,setXAxisRangeData:fye,setXAxisBand:CZe,setYAxisTitle:AZe,setYAxisRangeData:_Ze,setLineData:LZe,setBarData:RZe,setTmpSVGG:kZe,getChartThemeConfig:MZe,getChartConfig:IZe,getXYChartData:OZe}});var BZe,yye,vye=N(()=>{"use strict";pt();tu();Ei();BZe=o((t,e,r,n)=>{let i=n.db,a=i.getChartThemeConfig(),s=i.getChartConfig(),l=i.getXYChartData().plots[0].data.map(T=>T[1]);function u(T){return T==="top"?"text-before-edge":"middle"}o(u,"getDominantBaseLine");function h(T){return T==="left"?"start":T==="right"?"end":"middle"}o(h,"getTextAnchor");function f(T){return`translate(${T.x}, ${T.y}) rotate(${T.rotation||0})`}o(f,"getTextTransformation"),X.debug(`Rendering xychart chart -`+t);let d=aa(e),p=d.append("g").attr("class","main"),m=p.append("rect").attr("width",s.width).attr("height",s.height).attr("class","background");mn(d,s.height,s.width,!0),d.attr("viewBox",`0 0 ${s.width} ${s.height}`),m.attr("fill",a.backgroundColor),i.setTmpSVGG(d.append("g").attr("class","mermaid-tmp-group"));let g=i.getDrawableElem(),y={};function v(T){let S=p,w="";for(let[k]of T.entries()){let A=p;k>0&&y[w]&&(A=y[w]),w+=T[k],S=y[w],S||(S=y[w]=A.append("g").attr("class",T[k]))}return S}o(v,"getGroup");for(let T of g){if(T.data.length===0)continue;let S=v(T.groupTexts);switch(T.type){case"rect":if(S.selectAll("rect").data(T.data).enter().append("rect").attr("x",w=>w.x).attr("y",w=>w.y).attr("width",w=>w.width).attr("height",w=>w.height).attr("fill",w=>w.fill).attr("stroke",w=>w.strokeFill).attr("stroke-width",w=>w.strokeWidth),s.showDataLabel)if(s.chartOrientation==="horizontal"){let A=function(I,L){let{data:E,label:D}=I;return L*D.length*.7<=E.width-10};var x=A;o(A,"fitsHorizontally");let w=.7,k=T.data.map((I,L)=>({data:I,label:l[L].toString()})).filter(I=>I.data.width>0&&I.data.height>0),C=k.map(I=>{let{data:L}=I,E=L.height*.7;for(;!A(I,E)&&E>0;)E-=1;return E}),R=Math.floor(Math.min(...C));S.selectAll("text").data(k).enter().append("text").attr("x",I=>I.data.x+I.data.width-10).attr("y",I=>I.data.y+I.data.height/2).attr("text-anchor","end").attr("dominant-baseline","middle").attr("fill","black").attr("font-size",`${R}px`).text(I=>I.label)}else{let A=function(I,L,E){let{data:D,label:_}=I,M=L*_.length*.7,P=D.x+D.width/2,B=P-M/2,F=P+M/2,G=B>=D.x&&F<=D.x+D.width,$=D.y+E+L<=D.y+D.height;return G&&$};var b=A;o(A,"fitsInBar");let w=10,k=T.data.map((I,L)=>({data:I,label:l[L].toString()})).filter(I=>I.data.width>0&&I.data.height>0),C=k.map(I=>{let{data:L,label:E}=I,D=L.width/(E.length*.7);for(;!A(I,D,10)&&D>0;)D-=1;return D}),R=Math.floor(Math.min(...C));S.selectAll("text").data(k).enter().append("text").attr("x",I=>I.data.x+I.data.width/2).attr("y",I=>I.data.y+10).attr("text-anchor","middle").attr("dominant-baseline","hanging").attr("fill","black").attr("font-size",`${R}px`).text(I=>I.label)}break;case"text":S.selectAll("text").data(T.data).enter().append("text").attr("x",0).attr("y",0).attr("fill",w=>w.fill).attr("font-size",w=>w.fontSize).attr("dominant-baseline",w=>u(w.verticalPos)).attr("text-anchor",w=>h(w.horizontalPos)).attr("transform",w=>f(w)).text(w=>w.text);break;case"path":S.selectAll("path").data(T.data).enter().append("path").attr("d",w=>w.path).attr("fill",w=>w.fill?w.fill:"none").attr("stroke",w=>w.strokeFill).attr("stroke-width",w=>w.strokeWidth);break}}},"draw"),yye={draw:BZe}});var xye={};dr(xye,{diagram:()=>FZe});var FZe,bye=N(()=>{"use strict";K1e();gye();vye();FZe={parser:j1e,db:mye,renderer:yye}});var QF,kye,Eye=N(()=>{"use strict";QF=(function(){var t=o(function(fe,xe,W,he){for(W=W||{},he=fe.length;he--;W[fe[he]]=xe);return W},"o"),e=[1,3],r=[1,4],n=[1,5],i=[1,6],a=[5,6,8,9,11,13,21,22,23,24,41,42,43,44,45,46,54,72,74,77,89,90],s=[1,22],l=[2,7],u=[1,26],h=[1,27],f=[1,28],d=[1,29],p=[1,33],m=[1,34],g=[1,35],y=[1,36],v=[1,37],x=[1,38],b=[1,24],T=[1,31],S=[1,32],w=[1,30],k=[1,39],A=[1,40],C=[5,8,9,11,13,21,22,23,24,41,42,43,44,45,46,54,72,74,77,89,90],R=[1,61],I=[89,90],L=[5,8,9,11,13,21,22,23,24,27,29,41,42,43,44,45,46,54,61,63,72,74,75,76,77,80,81,82,83,84,85,86,87,88,89,90],E=[27,29],D=[1,70],_=[1,71],O=[1,72],M=[1,73],P=[1,74],B=[1,75],F=[1,76],G=[1,83],$=[1,80],U=[1,84],j=[1,85],te=[1,86],Y=[1,87],oe=[1,88],J=[1,89],ue=[1,90],re=[1,91],ee=[1,92],Z=[5,8,9,11,13,21,22,23,24,27,41,42,43,44,45,46,54,72,74,75,76,77,80,81,82,83,84,85,86,87,88,89,90],K=[63,64],ae=[1,101],Q=[5,8,9,11,13,21,22,23,24,41,42,43,44,45,46,54,72,74,76,77,89,90],de=[5,8,9,11,13,21,22,23,24,41,42,43,44,45,46,54,72,74,75,76,77,80,81,82,83,84,85,86,87,88,89,90],ne=[1,110],Te=[1,106],q=[1,107],Ve=[1,108],pe=[1,109],Be=[1,111],Ye=[1,116],He=[1,117],Le=[1,114],Ie=[1,115],Ne={trace:o(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,direction:17,styleStatement:18,classDefStatement:19,classStatement:20,direction_tb:21,direction_bt:22,direction_rl:23,direction_lr:24,requirementType:25,requirementName:26,STRUCT_START:27,requirementBody:28,STYLE_SEPARATOR:29,idList:30,ID:31,COLONSEP:32,id:33,TEXT:34,text:35,RISK:36,riskLevel:37,VERIFYMTHD:38,verifyType:39,STRUCT_STOP:40,REQUIREMENT:41,FUNCTIONAL_REQUIREMENT:42,INTERFACE_REQUIREMENT:43,PERFORMANCE_REQUIREMENT:44,PHYSICAL_REQUIREMENT:45,DESIGN_CONSTRAINT:46,LOW_RISK:47,MED_RISK:48,HIGH_RISK:49,VERIFY_ANALYSIS:50,VERIFY_DEMONSTRATION:51,VERIFY_INSPECTION:52,VERIFY_TEST:53,ELEMENT:54,elementName:55,elementBody:56,TYPE:57,type:58,DOCREF:59,ref:60,END_ARROW_L:61,relationship:62,LINE:63,END_ARROW_R:64,CONTAINS:65,COPIES:66,DERIVES:67,SATISFIES:68,VERIFIES:69,REFINES:70,TRACES:71,CLASSDEF:72,stylesOpt:73,CLASS:74,ALPHA:75,COMMA:76,STYLE:77,style:78,styleComponent:79,NUM:80,COLON:81,UNIT:82,SPACE:83,BRKT:84,PCT:85,MINUS:86,LABEL:87,SEMICOLON:88,unqString:89,qString:90,$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",21:"direction_tb",22:"direction_bt",23:"direction_rl",24:"direction_lr",27:"STRUCT_START",29:"STYLE_SEPARATOR",31:"ID",32:"COLONSEP",34:"TEXT",36:"RISK",38:"VERIFYMTHD",40:"STRUCT_STOP",41:"REQUIREMENT",42:"FUNCTIONAL_REQUIREMENT",43:"INTERFACE_REQUIREMENT",44:"PERFORMANCE_REQUIREMENT",45:"PHYSICAL_REQUIREMENT",46:"DESIGN_CONSTRAINT",47:"LOW_RISK",48:"MED_RISK",49:"HIGH_RISK",50:"VERIFY_ANALYSIS",51:"VERIFY_DEMONSTRATION",52:"VERIFY_INSPECTION",53:"VERIFY_TEST",54:"ELEMENT",57:"TYPE",59:"DOCREF",61:"END_ARROW_L",63:"LINE",64:"END_ARROW_R",65:"CONTAINS",66:"COPIES",67:"DERIVES",68:"SATISFIES",69:"VERIFIES",70:"REFINES",71:"TRACES",72:"CLASSDEF",74:"CLASS",75:"ALPHA",76:"COMMA",77:"STYLE",80:"NUM",81:"COLON",82:"UNIT",83:"SPACE",84:"BRKT",85:"PCT",86:"MINUS",87:"LABEL",88:"SEMICOLON",89:"unqString",90:"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],[7,2],[7,2],[7,2],[7,2],[17,1],[17,1],[17,1],[17,1],[14,5],[14,7],[28,5],[28,5],[28,5],[28,5],[28,2],[28,1],[25,1],[25,1],[25,1],[25,1],[25,1],[25,1],[37,1],[37,1],[37,1],[39,1],[39,1],[39,1],[39,1],[15,5],[15,7],[56,5],[56,5],[56,2],[56,1],[16,5],[16,5],[62,1],[62,1],[62,1],[62,1],[62,1],[62,1],[62,1],[19,3],[20,3],[20,3],[30,1],[30,3],[30,1],[30,3],[18,3],[73,1],[73,3],[78,1],[78,2],[79,1],[79,1],[79,1],[79,1],[79,1],[79,1],[79,1],[79,1],[79,1],[79,1],[26,1],[26,1],[33,1],[33,1],[35,1],[35,1],[55,1],[55,1],[58,1],[58,1],[60,1],[60,1]],performAction:o(function(xe,W,he,z,se,le,ke){var ve=le.length-1;switch(se){case 4:this.$=le[ve].trim(),z.setAccTitle(this.$);break;case 5:case 6:this.$=le[ve].trim(),z.setAccDescription(this.$);break;case 7:this.$=[];break;case 17:z.setDirection("TB");break;case 18:z.setDirection("BT");break;case 19:z.setDirection("RL");break;case 20:z.setDirection("LR");break;case 21:z.addRequirement(le[ve-3],le[ve-4]);break;case 22:z.addRequirement(le[ve-5],le[ve-6]),z.setClass([le[ve-5]],le[ve-3]);break;case 23:z.setNewReqId(le[ve-2]);break;case 24:z.setNewReqText(le[ve-2]);break;case 25:z.setNewReqRisk(le[ve-2]);break;case 26:z.setNewReqVerifyMethod(le[ve-2]);break;case 29:this.$=z.RequirementType.REQUIREMENT;break;case 30:this.$=z.RequirementType.FUNCTIONAL_REQUIREMENT;break;case 31:this.$=z.RequirementType.INTERFACE_REQUIREMENT;break;case 32:this.$=z.RequirementType.PERFORMANCE_REQUIREMENT;break;case 33:this.$=z.RequirementType.PHYSICAL_REQUIREMENT;break;case 34:this.$=z.RequirementType.DESIGN_CONSTRAINT;break;case 35:this.$=z.RiskLevel.LOW_RISK;break;case 36:this.$=z.RiskLevel.MED_RISK;break;case 37:this.$=z.RiskLevel.HIGH_RISK;break;case 38:this.$=z.VerifyType.VERIFY_ANALYSIS;break;case 39:this.$=z.VerifyType.VERIFY_DEMONSTRATION;break;case 40:this.$=z.VerifyType.VERIFY_INSPECTION;break;case 41:this.$=z.VerifyType.VERIFY_TEST;break;case 42:z.addElement(le[ve-3]);break;case 43:z.addElement(le[ve-5]),z.setClass([le[ve-5]],le[ve-3]);break;case 44:z.setNewElementType(le[ve-2]);break;case 45:z.setNewElementDocRef(le[ve-2]);break;case 48:z.addRelationship(le[ve-2],le[ve],le[ve-4]);break;case 49:z.addRelationship(le[ve-2],le[ve-4],le[ve]);break;case 50:this.$=z.Relationships.CONTAINS;break;case 51:this.$=z.Relationships.COPIES;break;case 52:this.$=z.Relationships.DERIVES;break;case 53:this.$=z.Relationships.SATISFIES;break;case 54:this.$=z.Relationships.VERIFIES;break;case 55:this.$=z.Relationships.REFINES;break;case 56:this.$=z.Relationships.TRACES;break;case 57:this.$=le[ve-2],z.defineClass(le[ve-1],le[ve]);break;case 58:z.setClass(le[ve-1],le[ve]);break;case 59:z.setClass([le[ve-2]],le[ve]);break;case 60:case 62:this.$=[le[ve]];break;case 61:case 63:this.$=le[ve-2].concat([le[ve]]);break;case 64:this.$=le[ve-2],z.setCssStyle(le[ve-1],le[ve]);break;case 65:this.$=[le[ve]];break;case 66:le[ve-2].push(le[ve]),this.$=le[ve-2];break;case 68:this.$=le[ve-1]+le[ve];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:l,9:r,11:n,13:i,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:u,22:h,23:f,24:d,25:23,33:25,41:p,42:m,43:g,44:y,45:v,46:x,54:b,72:T,74:S,77:w,89:k,90:A},t(a,[2,4]),t(a,[2,5]),{1:[2,1]},{8:[1,41]},{4:17,5:s,7:42,8:l,9:r,11:n,13:i,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:u,22:h,23:f,24:d,25:23,33:25,41:p,42:m,43:g,44:y,45:v,46:x,54:b,72:T,74:S,77:w,89:k,90:A},{4:17,5:s,7:43,8:l,9:r,11:n,13:i,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:u,22:h,23:f,24:d,25:23,33:25,41:p,42:m,43:g,44:y,45:v,46:x,54:b,72:T,74:S,77:w,89:k,90:A},{4:17,5:s,7:44,8:l,9:r,11:n,13:i,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:u,22:h,23:f,24:d,25:23,33:25,41:p,42:m,43:g,44:y,45:v,46:x,54:b,72:T,74:S,77:w,89:k,90:A},{4:17,5:s,7:45,8:l,9:r,11:n,13:i,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:u,22:h,23:f,24:d,25:23,33:25,41:p,42:m,43:g,44:y,45:v,46:x,54:b,72:T,74:S,77:w,89:k,90:A},{4:17,5:s,7:46,8:l,9:r,11:n,13:i,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:u,22:h,23:f,24:d,25:23,33:25,41:p,42:m,43:g,44:y,45:v,46:x,54:b,72:T,74:S,77:w,89:k,90:A},{4:17,5:s,7:47,8:l,9:r,11:n,13:i,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:u,22:h,23:f,24:d,25:23,33:25,41:p,42:m,43:g,44:y,45:v,46:x,54:b,72:T,74:S,77:w,89:k,90:A},{4:17,5:s,7:48,8:l,9:r,11:n,13:i,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:u,22:h,23:f,24:d,25:23,33:25,41:p,42:m,43:g,44:y,45:v,46:x,54:b,72:T,74:S,77:w,89:k,90:A},{4:17,5:s,7:49,8:l,9:r,11:n,13:i,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:u,22:h,23:f,24:d,25:23,33:25,41:p,42:m,43:g,44:y,45:v,46:x,54:b,72:T,74:S,77:w,89:k,90:A},{4:17,5:s,7:50,8:l,9:r,11:n,13:i,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:u,22:h,23:f,24:d,25:23,33:25,41:p,42:m,43:g,44:y,45:v,46:x,54:b,72:T,74:S,77:w,89:k,90:A},{26:51,89:[1,52],90:[1,53]},{55:54,89:[1,55],90:[1,56]},{29:[1,59],61:[1,57],63:[1,58]},t(C,[2,17]),t(C,[2,18]),t(C,[2,19]),t(C,[2,20]),{30:60,33:62,75:R,89:k,90:A},{30:63,33:62,75:R,89:k,90:A},{30:64,33:62,75:R,89:k,90:A},t(I,[2,29]),t(I,[2,30]),t(I,[2,31]),t(I,[2,32]),t(I,[2,33]),t(I,[2,34]),t(L,[2,81]),t(L,[2,82]),{1:[2,3]},{8:[2,8]},{8:[2,9]},{8:[2,10]},{8:[2,11]},{8:[2,12]},{8:[2,13]},{8:[2,14]},{8:[2,15]},{8:[2,16]},{27:[1,65],29:[1,66]},t(E,[2,79]),t(E,[2,80]),{27:[1,67],29:[1,68]},t(E,[2,85]),t(E,[2,86]),{62:69,65:D,66:_,67:O,68:M,69:P,70:B,71:F},{62:77,65:D,66:_,67:O,68:M,69:P,70:B,71:F},{30:78,33:62,75:R,89:k,90:A},{73:79,75:G,76:$,78:81,79:82,80:U,81:j,82:te,83:Y,84:oe,85:J,86:ue,87:re,88:ee},t(Z,[2,60]),t(Z,[2,62]),{73:93,75:G,76:$,78:81,79:82,80:U,81:j,82:te,83:Y,84:oe,85:J,86:ue,87:re,88:ee},{30:94,33:62,75:R,76:$,89:k,90:A},{5:[1,95]},{30:96,33:62,75:R,89:k,90:A},{5:[1,97]},{30:98,33:62,75:R,89:k,90:A},{63:[1,99]},t(K,[2,50]),t(K,[2,51]),t(K,[2,52]),t(K,[2,53]),t(K,[2,54]),t(K,[2,55]),t(K,[2,56]),{64:[1,100]},t(C,[2,59],{76:$}),t(C,[2,64],{76:ae}),{33:103,75:[1,102],89:k,90:A},t(Q,[2,65],{79:104,75:G,80:U,81:j,82:te,83:Y,84:oe,85:J,86:ue,87:re,88:ee}),t(de,[2,67]),t(de,[2,69]),t(de,[2,70]),t(de,[2,71]),t(de,[2,72]),t(de,[2,73]),t(de,[2,74]),t(de,[2,75]),t(de,[2,76]),t(de,[2,77]),t(de,[2,78]),t(C,[2,57],{76:ae}),t(C,[2,58],{76:$}),{5:ne,28:105,31:Te,34:q,36:Ve,38:pe,40:Be},{27:[1,112],76:$},{5:Ye,40:He,56:113,57:Le,59:Ie},{27:[1,118],76:$},{33:119,89:k,90:A},{33:120,89:k,90:A},{75:G,78:121,79:82,80:U,81:j,82:te,83:Y,84:oe,85:J,86:ue,87:re,88:ee},t(Z,[2,61]),t(Z,[2,63]),t(de,[2,68]),t(C,[2,21]),{32:[1,122]},{32:[1,123]},{32:[1,124]},{32:[1,125]},{5:ne,28:126,31:Te,34:q,36:Ve,38:pe,40:Be},t(C,[2,28]),{5:[1,127]},t(C,[2,42]),{32:[1,128]},{32:[1,129]},{5:Ye,40:He,56:130,57:Le,59:Ie},t(C,[2,47]),{5:[1,131]},t(C,[2,48]),t(C,[2,49]),t(Q,[2,66],{79:104,75:G,80:U,81:j,82:te,83:Y,84:oe,85:J,86:ue,87:re,88:ee}),{33:132,89:k,90:A},{35:133,89:[1,134],90:[1,135]},{37:136,47:[1,137],48:[1,138],49:[1,139]},{39:140,50:[1,141],51:[1,142],52:[1,143],53:[1,144]},t(C,[2,27]),{5:ne,28:145,31:Te,34:q,36:Ve,38:pe,40:Be},{58:146,89:[1,147],90:[1,148]},{60:149,89:[1,150],90:[1,151]},t(C,[2,46]),{5:Ye,40:He,56:152,57:Le,59:Ie},{5:[1,153]},{5:[1,154]},{5:[2,83]},{5:[2,84]},{5:[1,155]},{5:[2,35]},{5:[2,36]},{5:[2,37]},{5:[1,156]},{5:[2,38]},{5:[2,39]},{5:[2,40]},{5:[2,41]},t(C,[2,22]),{5:[1,157]},{5:[2,87]},{5:[2,88]},{5:[1,158]},{5:[2,89]},{5:[2,90]},t(C,[2,43]),{5:ne,28:159,31:Te,34:q,36:Ve,38:pe,40:Be},{5:ne,28:160,31:Te,34:q,36:Ve,38:pe,40:Be},{5:ne,28:161,31:Te,34:q,36:Ve,38:pe,40:Be},{5:ne,28:162,31:Te,34:q,36:Ve,38:pe,40:Be},{5:Ye,40:He,56:163,57:Le,59:Ie},{5:Ye,40:He,56:164,57:Le,59:Ie},t(C,[2,23]),t(C,[2,24]),t(C,[2,25]),t(C,[2,26]),t(C,[2,44]),t(C,[2,45])],defaultActions:{8:[2,2],12:[2,1],41:[2,3],42:[2,8],43:[2,9],44:[2,10],45:[2,11],46:[2,12],47:[2,13],48:[2,14],49:[2,15],50:[2,16],134:[2,83],135:[2,84],137:[2,35],138:[2,36],139:[2,37],141:[2,38],142:[2,39],143:[2,40],144:[2,41],147:[2,87],148:[2,88],150:[2,89],151:[2,90]},parseError:o(function(xe,W){if(W.recoverable)this.trace(xe);else{var he=new Error(xe);throw he.hash=W,he}},"parseError"),parse:o(function(xe){var W=this,he=[0],z=[],se=[null],le=[],ke=this.table,ve="",ye=0,Re=0,_e=0,ze=2,Ke=1,xt=le.slice.call(arguments,1),We=Object.create(this.lexer),Oe={yy:{}};for(var et in this.yy)Object.prototype.hasOwnProperty.call(this.yy,et)&&(Oe.yy[et]=this.yy[et]);We.setInput(xe,Oe.yy),Oe.yy.lexer=We,Oe.yy.parser=this,typeof We.yylloc>"u"&&(We.yylloc={});var Ue=We.yylloc;le.push(Ue);var lt=We.options&&We.options.ranges;typeof Oe.yy.parseError=="function"?this.parseError=Oe.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function Gt(ar){he.length=he.length-2*ar,se.length=se.length-ar,le.length=le.length-ar}o(Gt,"popStack");function vt(){var ar;return ar=z.pop()||We.lex()||Ke,typeof ar!="number"&&(ar instanceof Array&&(z=ar,ar=z.pop()),ar=W.symbols_[ar]||ar),ar}o(vt,"lex");for(var Lt,dt,nt,bt,wt,yt,ft={},Ur,_t,bn,Br;;){if(nt=he[he.length-1],this.defaultActions[nt]?bt=this.defaultActions[nt]:((Lt===null||typeof Lt>"u")&&(Lt=vt()),bt=ke[nt]&&ke[nt][Lt]),typeof bt>"u"||!bt.length||!bt[0]){var cr="";Br=[];for(Ur in ke[nt])this.terminals_[Ur]&&Ur>ze&&Br.push("'"+this.terminals_[Ur]+"'");We.showPosition?cr="Parse error on line "+(ye+1)+`: -`+We.showPosition()+` -Expecting `+Br.join(", ")+", got '"+(this.terminals_[Lt]||Lt)+"'":cr="Parse error on line "+(ye+1)+": Unexpected "+(Lt==Ke?"end of input":"'"+(this.terminals_[Lt]||Lt)+"'"),this.parseError(cr,{text:We.match,token:this.terminals_[Lt]||Lt,line:We.yylineno,loc:Ue,expected:Br})}if(bt[0]instanceof Array&&bt.length>1)throw new Error("Parse Error: multiple actions possible at state: "+nt+", token: "+Lt);switch(bt[0]){case 1:he.push(Lt),se.push(We.yytext),le.push(We.yylloc),he.push(bt[1]),Lt=null,dt?(Lt=dt,dt=null):(Re=We.yyleng,ve=We.yytext,ye=We.yylineno,Ue=We.yylloc,_e>0&&_e--);break;case 2:if(_t=this.productions_[bt[1]][1],ft.$=se[se.length-_t],ft._$={first_line:le[le.length-(_t||1)].first_line,last_line:le[le.length-1].last_line,first_column:le[le.length-(_t||1)].first_column,last_column:le[le.length-1].last_column},lt&&(ft._$.range=[le[le.length-(_t||1)].range[0],le[le.length-1].range[1]]),yt=this.performAction.apply(ft,[ve,Re,ye,Oe.yy,bt[1],se,le].concat(xt)),typeof yt<"u")return yt;_t&&(he=he.slice(0,-1*_t*2),se=se.slice(0,-1*_t),le=le.slice(0,-1*_t)),he.push(this.productions_[bt[1]][0]),se.push(ft.$),le.push(ft._$),bn=ke[he[he.length-2]][he[he.length-1]],he.push(bn);break;case 3:return!0}}return!0},"parse")},Ce=(function(){var fe={EOF:1,parseError:o(function(W,he){if(this.yy.parser)this.yy.parser.parseError(W,he);else throw new Error(W)},"parseError"),setInput:o(function(xe,W){return this.yy=W||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:o(function(){var xe=this._input[0];this.yytext+=xe,this.yyleng++,this.offset++,this.match+=xe,this.matched+=xe;var W=xe.match(/(?:\r\n?|\n).*/g);return W?(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:o(function(xe){var W=xe.length,he=xe.split(/(?:\r\n?|\n)/g);this._input=xe+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-W),this.offset-=W;var z=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),he.length-1&&(this.yylineno-=he.length-1);var se=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:he?(he.length===z.length?this.yylloc.first_column:0)+z[z.length-he.length].length-he[0].length:this.yylloc.first_column-W},this.options.ranges&&(this.yylloc.range=[se[0],se[0]+this.yyleng-W]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(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:o(function(xe){this.unput(this.match.slice(xe))},"less"),pastInput:o(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:o(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:o(function(){var xe=this.pastInput(),W=new Array(xe.length+1).join("-");return xe+this.upcomingInput()+` -`+W+"^"},"showPosition"),test_match:o(function(xe,W){var he,z,se;if(this.options.backtrack_lexer&&(se={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&&(se.yylloc.range=this.yylloc.range.slice(0))),z=xe[0].match(/(?:\r\n?|\n).*/g),z&&(this.yylineno+=z.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:z?z[z.length-1].length-z[z.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],he=this.performAction.call(this,this.yy,this,W,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),he)return he;if(this._backtrack){for(var le in se)this[le]=se[le];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var xe,W,he,z;this._more||(this.yytext="",this.match="");for(var se=this._currentRules(),le=0;leW[0].length)){if(W=he,z=le,this.options.backtrack_lexer){if(xe=this.test_match(he,se[le]),xe!==!1)return xe;if(this._backtrack){W=!1;continue}else return!1}else if(!this.options.flex)break}return W?(xe=this.test_match(W,se[z]),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:o(function(){var W=this.next();return W||this.lex()},"lex"),begin:o(function(W){this.conditionStack.push(W)},"begin"),popState:o(function(){var W=this.conditionStack.length-1;return W>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(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:o(function(W){return W=this.conditionStack.length-1-Math.abs(W||0),W>=0?this.conditionStack[W]:"INITIAL"},"topState"),pushState:o(function(W){this.begin(W)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:o(function(W,he,z,se){var le=se;switch(z){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 21;case 9:return 22;case 10:return 23;case 11:return 24;case 12:return 5;case 13:break;case 14:break;case 15:break;case 16:return 8;case 17:return 6;case 18:return 27;case 19:return 40;case 20:return 29;case 21:return 32;case 22:return 31;case 23:return 34;case 24:return 36;case 25:return 38;case 26:return 41;case 27:return 42;case 28:return 43;case 29:return 44;case 30:return 45;case 31:return 46;case 32:return 47;case 33:return 48;case 34:return 49;case 35:return 50;case 36:return 51;case 37:return 52;case 38:return 53;case 39:return 54;case 40:return 65;case 41:return 66;case 42:return 67;case 43:return 68;case 44:return 69;case 45:return 70;case 46:return 71;case 47:return 57;case 48:return 59;case 49:return this.begin("style"),77;break;case 50:return 75;case 51:return 81;case 52:return 88;case 53:return"PERCENT";case 54:return 86;case 55:return 84;case 56:break;case 57:this.begin("string");break;case 58:this.popState();break;case 59:return this.begin("style"),72;break;case 60:return this.begin("style"),74;break;case 61:return 61;case 62:return 64;case 63:return 63;case 64:this.begin("string");break;case 65:this.popState();break;case 66:return"qString";case 67:return he.yytext=he.yytext.trim(),89;break;case 68:return 75;case 69:return 80;case 70:return 76}},"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,/^(?:.*direction\s+TB[^\n]*)/i,/^(?:.*direction\s+BT[^\n]*)/i,/^(?:.*direction\s+RL[^\n]*)/i,/^(?:.*direction\s+LR[^\n]*)/i,/^(?:(\r?\n)+)/i,/^(?:\s+)/i,/^(?:#[^\n]*)/i,/^(?:%[^\n]*)/i,/^(?:$)/i,/^(?:requirementDiagram\b)/i,/^(?:\{)/i,/^(?:\})/i,/^(?::{3})/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,/^(?:style\b)/i,/^(?:\w+)/i,/^(?::)/i,/^(?:;)/i,/^(?:%)/i,/^(?:-)/i,/^(?:#)/i,/^(?: )/i,/^(?:["])/i,/^(?:\n)/i,/^(?:classDef\b)/i,/^(?:class\b)/i,/^(?:<-)/i,/^(?:->)/i,/^(?:-)/i,/^(?:["])/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:[\w][^:,\r\n\{\<\>\-\=]*)/i,/^(?:\w+)/i,/^(?:[0-9]+)/i,/^(?:,)/i],conditions:{acc_descr_multiline:{rules:[6,7,68,69,70],inclusive:!1},acc_descr:{rules:[4,68,69,70],inclusive:!1},acc_title:{rules:[2,68,69,70],inclusive:!1},style:{rules:[50,51,52,53,54,55,56,57,58,68,69,70],inclusive:!1},unqString:{rules:[68,69,70],inclusive:!1},token:{rules:[68,69,70],inclusive:!1},string:{rules:[65,66,68,69,70],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,48,49,59,60,61,62,63,64,67,68,69,70],inclusive:!0}}};return fe})();Ne.lexer=Ce;function Fe(){this.yy={}}return o(Fe,"Parser"),Fe.prototype=Ne,Ne.Parser=Fe,new Fe})();QF.parser=QF;kye=QF});var Z6,Sye=N(()=>{"use strict";Xt();pt();ci();Z6=class{constructor(){this.relations=[];this.latestRequirement=this.getInitialRequirement();this.requirements=new Map;this.latestElement=this.getInitialElement();this.elements=new Map;this.classes=new Map;this.direction="TB";this.RequirementType={REQUIREMENT:"Requirement",FUNCTIONAL_REQUIREMENT:"Functional Requirement",INTERFACE_REQUIREMENT:"Interface Requirement",PERFORMANCE_REQUIREMENT:"Performance Requirement",PHYSICAL_REQUIREMENT:"Physical Requirement",DESIGN_CONSTRAINT:"Design Constraint"};this.RiskLevel={LOW_RISK:"Low",MED_RISK:"Medium",HIGH_RISK:"High"};this.VerifyType={VERIFY_ANALYSIS:"Analysis",VERIFY_DEMONSTRATION:"Demonstration",VERIFY_INSPECTION:"Inspection",VERIFY_TEST:"Test"};this.Relationships={CONTAINS:"contains",COPIES:"copies",DERIVES:"derives",SATISFIES:"satisfies",VERIFIES:"verifies",REFINES:"refines",TRACES:"traces"};this.setAccTitle=Rr;this.getAccTitle=Mr;this.setAccDescription=Ir;this.getAccDescription=Or;this.setDiagramTitle=$r;this.getDiagramTitle=Pr;this.getConfig=o(()=>ge().requirement,"getConfig");this.clear(),this.setDirection=this.setDirection.bind(this),this.addRequirement=this.addRequirement.bind(this),this.setNewReqId=this.setNewReqId.bind(this),this.setNewReqRisk=this.setNewReqRisk.bind(this),this.setNewReqText=this.setNewReqText.bind(this),this.setNewReqVerifyMethod=this.setNewReqVerifyMethod.bind(this),this.addElement=this.addElement.bind(this),this.setNewElementType=this.setNewElementType.bind(this),this.setNewElementDocRef=this.setNewElementDocRef.bind(this),this.addRelationship=this.addRelationship.bind(this),this.setCssStyle=this.setCssStyle.bind(this),this.setClass=this.setClass.bind(this),this.defineClass=this.defineClass.bind(this),this.setAccTitle=this.setAccTitle.bind(this),this.setAccDescription=this.setAccDescription.bind(this)}static{o(this,"RequirementDB")}getDirection(){return this.direction}setDirection(e){this.direction=e}resetLatestRequirement(){this.latestRequirement=this.getInitialRequirement()}resetLatestElement(){this.latestElement=this.getInitialElement()}getInitialRequirement(){return{requirementId:"",text:"",risk:"",verifyMethod:"",name:"",type:"",cssStyles:[],classes:["default"]}}getInitialElement(){return{name:"",type:"",docRef:"",cssStyles:[],classes:["default"]}}addRequirement(e,r){return this.requirements.has(e)||this.requirements.set(e,{name:e,type:r,requirementId:this.latestRequirement.requirementId,text:this.latestRequirement.text,risk:this.latestRequirement.risk,verifyMethod:this.latestRequirement.verifyMethod,cssStyles:[],classes:["default"]}),this.resetLatestRequirement(),this.requirements.get(e)}getRequirements(){return this.requirements}setNewReqId(e){this.latestRequirement!==void 0&&(this.latestRequirement.requirementId=e)}setNewReqText(e){this.latestRequirement!==void 0&&(this.latestRequirement.text=e)}setNewReqRisk(e){this.latestRequirement!==void 0&&(this.latestRequirement.risk=e)}setNewReqVerifyMethod(e){this.latestRequirement!==void 0&&(this.latestRequirement.verifyMethod=e)}addElement(e){return this.elements.has(e)||(this.elements.set(e,{name:e,type:this.latestElement.type,docRef:this.latestElement.docRef,cssStyles:[],classes:["default"]}),X.info("Added new element: ",e)),this.resetLatestElement(),this.elements.get(e)}getElements(){return this.elements}setNewElementType(e){this.latestElement!==void 0&&(this.latestElement.type=e)}setNewElementDocRef(e){this.latestElement!==void 0&&(this.latestElement.docRef=e)}addRelationship(e,r,n){this.relations.push({type:e,src:r,dst:n})}getRelationships(){return this.relations}clear(){this.relations=[],this.resetLatestRequirement(),this.requirements=new Map,this.resetLatestElement(),this.elements=new Map,this.classes=new Map,Sr()}setCssStyle(e,r){for(let n of e){let i=this.requirements.get(n)??this.elements.get(n);if(!r||!i)return;for(let a of r)a.includes(",")?i.cssStyles.push(...a.split(",")):i.cssStyles.push(a)}}setClass(e,r){for(let n of e){let i=this.requirements.get(n)??this.elements.get(n);if(i)for(let a of r){i.classes.push(a);let s=this.classes.get(a)?.styles;s&&i.cssStyles.push(...s)}}}defineClass(e,r){for(let n of e){let i=this.classes.get(n);i===void 0&&(i={id:n,styles:[],textStyles:[]},this.classes.set(n,i)),r&&r.forEach(function(a){if(/color/.exec(a)){let s=a.replace("fill","bgFill");i.textStyles.push(s)}i.styles.push(a)}),this.requirements.forEach(a=>{a.classes.includes(n)&&a.cssStyles.push(...r.flatMap(s=>s.split(",")))}),this.elements.forEach(a=>{a.classes.includes(n)&&a.cssStyles.push(...r.flatMap(s=>s.split(",")))})}}getClasses(){return this.classes}getData(){let e=ge(),r=[],n=[];for(let i of this.requirements.values()){let a=i;a.id=i.name,a.cssStyles=i.cssStyles,a.cssClasses=i.classes.join(" "),a.shape="requirementBox",a.look=e.look,r.push(a)}for(let i of this.elements.values()){let a=i;a.shape="requirementBox",a.look=e.look,a.id=i.name,a.cssStyles=i.cssStyles,a.cssClasses=i.classes.join(" "),r.push(a)}for(let i of this.relations){let a=0,s=i.type===this.Relationships.CONTAINS,l={id:`${i.src}-${i.dst}-${a}`,start:this.requirements.get(i.src)?.name??this.elements.get(i.src)?.name,end:this.requirements.get(i.dst)?.name??this.elements.get(i.dst)?.name,label:`<<${i.type}>>`,classes:"relationshipLine",style:["fill:none",s?"":"stroke-dasharray: 10,7"],labelpos:"c",thickness:"normal",type:"normal",pattern:s?"normal":"dashed",arrowTypeStart:s?"requirement_contains":"",arrowTypeEnd:s?"":"requirement_arrow",look:e.look};n.push(l),a++}return{nodes:r,edges:n,other:{},config:e,direction:this.getDirection()}}}});var VZe,Cye,Aye=N(()=>{"use strict";VZe=o(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}; - } - .divider { - stroke: ${t.nodeBorder}; - stroke-width: 1; - } - .label { - font-family: ${t.fontFamily}; - color: ${t.nodeTextColor||t.textColor}; - } - .label text,span { - fill: ${t.nodeTextColor||t.textColor}; - color: ${t.nodeTextColor||t.textColor}; - } - .labelBkg { - background-color: ${t.edgeLabelBackground}; - } - -`,"getStyles"),Cye=VZe});var ZF={};dr(ZF,{draw:()=>UZe});var UZe,_ye=N(()=>{"use strict";Xt();pt();ep();Nf();Mf();tr();UZe=o(async function(t,e,r,n){X.info("REF0:"),X.info("Drawing requirement diagram (unified)",e);let{securityLevel:i,state:a,layout:s}=ge(),l=n.db.getData(),u=Vo(e,i);l.type=n.type,l.layoutAlgorithm=$c(s),l.nodeSpacing=a?.nodeSpacing??50,l.rankSpacing=a?.rankSpacing??50,l.markers=["requirement_contains","requirement_arrow"],l.diagramId=e,await Qo(l,u);let h=8;qt.insertTitle(u,"requirementDiagramTitleText",a?.titleTopMargin??25,n.db.getDiagramTitle()),Ws(u,h,"requirementDiagram",a?.useMaxWidth??!0)},"draw")});var Dye={};dr(Dye,{diagram:()=>HZe});var HZe,Lye=N(()=>{"use strict";Eye();Sye();Aye();_ye();HZe={parser:kye,get db(){return new Z6},renderer:ZF,styles:Cye}});var JF,Mye,Iye=N(()=>{"use strict";JF=(function(){var t=o(function(ee,Z,K,ae){for(K=K||{},ae=ee.length;ae--;K[ee[ae]]=Z);return K},"o"),e=[1,2],r=[1,3],n=[1,4],i=[2,4],a=[1,9],s=[1,11],l=[1,13],u=[1,14],h=[1,16],f=[1,17],d=[1,18],p=[1,24],m=[1,25],g=[1,26],y=[1,27],v=[1,28],x=[1,29],b=[1,30],T=[1,31],S=[1,32],w=[1,33],k=[1,34],A=[1,35],C=[1,36],R=[1,37],I=[1,38],L=[1,39],E=[1,41],D=[1,42],_=[1,43],O=[1,44],M=[1,45],P=[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,55,60,61,62,63,71],F=[2,71],G=[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,55,60,61,62,63,71],U=[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,55,60,61,62,63,71],j=[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,55,60,61,62,63,71],te=[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,55,60,61,62,63,71],Y=[69,70,71],oe=[1,127],J={trace:o(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,actor_with_config:54,note:55,placement:56,text2:57,over:58,actor_pair:59,links:60,link:61,properties:62,details:63,spaceList:64,",":65,left_of:66,right_of:67,signaltype:68,"+":69,"-":70,ACTOR:71,config_object:72,CONFIG_START:73,CONFIG_CONTENT:74,CONFIG_END:75,SOLID_OPEN_ARROW:76,DOTTED_OPEN_ARROW:77,SOLID_ARROW:78,BIDIRECTIONAL_SOLID_ARROW:79,DOTTED_ARROW:80,BIDIRECTIONAL_DOTTED_ARROW:81,SOLID_CROSS:82,DOTTED_CROSS:83,SOLID_POINT:84,DOTTED_POINT:85,TXT:86,$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",55:"note",58:"over",60:"links",61:"link",62:"properties",63:"details",65:",",66:"left_of",67:"right_of",69:"+",70:"-",71:"ACTOR",73:"CONFIG_START",74:"CONFIG_CONTENT",75:"CONFIG_END",76:"SOLID_OPEN_ARROW",77:"DOTTED_OPEN_ARROW",78:"SOLID_ARROW",79:"BIDIRECTIONAL_SOLID_ARROW",80:"DOTTED_ARROW",81:"BIDIRECTIONAL_DOTTED_ARROW",82:"SOLID_CROSS",83:"DOTTED_CROSS",84:"SOLID_POINT",85:"DOTTED_POINT",86:"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],[12,3],[24,4],[24,4],[25,3],[26,3],[27,3],[28,3],[64,2],[64,1],[59,3],[59,1],[56,1],[56,1],[17,5],[17,5],[17,4],[54,2],[72,3],[22,1],[68,1],[68,1],[68,1],[68,1],[68,1],[68,1],[68,1],[68,1],[68,1],[68,1],[57,1]],performAction:o(function(Z,K,ae,Q,de,ne,Te){var q=ne.length-1;switch(de){case 3:return Q.apply(ne[q]),ne[q];break;case 4:case 9:this.$=[];break;case 5:case 10:ne[q-1].push(ne[q]),this.$=ne[q-1];break;case 6:case 7:case 11:case 12:this.$=ne[q];break;case 8:case 13:this.$=[];break;case 15:ne[q].type="createParticipant",this.$=ne[q];break;case 16:ne[q-1].unshift({type:"boxStart",boxData:Q.parseBoxData(ne[q-2])}),ne[q-1].push({type:"boxEnd",boxText:ne[q-2]}),this.$=ne[q-1];break;case 18:this.$={type:"sequenceIndex",sequenceIndex:Number(ne[q-2]),sequenceIndexStep:Number(ne[q-1]),sequenceVisible:!0,signalType:Q.LINETYPE.AUTONUMBER};break;case 19:this.$={type:"sequenceIndex",sequenceIndex:Number(ne[q-1]),sequenceIndexStep:1,sequenceVisible:!0,signalType:Q.LINETYPE.AUTONUMBER};break;case 20:this.$={type:"sequenceIndex",sequenceVisible:!1,signalType:Q.LINETYPE.AUTONUMBER};break;case 21:this.$={type:"sequenceIndex",sequenceVisible:!0,signalType:Q.LINETYPE.AUTONUMBER};break;case 22:this.$={type:"activeStart",signalType:Q.LINETYPE.ACTIVE_START,actor:ne[q-1].actor};break;case 23:this.$={type:"activeEnd",signalType:Q.LINETYPE.ACTIVE_END,actor:ne[q-1].actor};break;case 29:Q.setDiagramTitle(ne[q].substring(6)),this.$=ne[q].substring(6);break;case 30:Q.setDiagramTitle(ne[q].substring(7)),this.$=ne[q].substring(7);break;case 31:this.$=ne[q].trim(),Q.setAccTitle(this.$);break;case 32:case 33:this.$=ne[q].trim(),Q.setAccDescription(this.$);break;case 34:ne[q-1].unshift({type:"loopStart",loopText:Q.parseMessage(ne[q-2]),signalType:Q.LINETYPE.LOOP_START}),ne[q-1].push({type:"loopEnd",loopText:ne[q-2],signalType:Q.LINETYPE.LOOP_END}),this.$=ne[q-1];break;case 35:ne[q-1].unshift({type:"rectStart",color:Q.parseMessage(ne[q-2]),signalType:Q.LINETYPE.RECT_START}),ne[q-1].push({type:"rectEnd",color:Q.parseMessage(ne[q-2]),signalType:Q.LINETYPE.RECT_END}),this.$=ne[q-1];break;case 36:ne[q-1].unshift({type:"optStart",optText:Q.parseMessage(ne[q-2]),signalType:Q.LINETYPE.OPT_START}),ne[q-1].push({type:"optEnd",optText:Q.parseMessage(ne[q-2]),signalType:Q.LINETYPE.OPT_END}),this.$=ne[q-1];break;case 37:ne[q-1].unshift({type:"altStart",altText:Q.parseMessage(ne[q-2]),signalType:Q.LINETYPE.ALT_START}),ne[q-1].push({type:"altEnd",signalType:Q.LINETYPE.ALT_END}),this.$=ne[q-1];break;case 38:ne[q-1].unshift({type:"parStart",parText:Q.parseMessage(ne[q-2]),signalType:Q.LINETYPE.PAR_START}),ne[q-1].push({type:"parEnd",signalType:Q.LINETYPE.PAR_END}),this.$=ne[q-1];break;case 39:ne[q-1].unshift({type:"parStart",parText:Q.parseMessage(ne[q-2]),signalType:Q.LINETYPE.PAR_OVER_START}),ne[q-1].push({type:"parEnd",signalType:Q.LINETYPE.PAR_END}),this.$=ne[q-1];break;case 40:ne[q-1].unshift({type:"criticalStart",criticalText:Q.parseMessage(ne[q-2]),signalType:Q.LINETYPE.CRITICAL_START}),ne[q-1].push({type:"criticalEnd",signalType:Q.LINETYPE.CRITICAL_END}),this.$=ne[q-1];break;case 41:ne[q-1].unshift({type:"breakStart",breakText:Q.parseMessage(ne[q-2]),signalType:Q.LINETYPE.BREAK_START}),ne[q-1].push({type:"breakEnd",optText:Q.parseMessage(ne[q-2]),signalType:Q.LINETYPE.BREAK_END}),this.$=ne[q-1];break;case 43:this.$=ne[q-3].concat([{type:"option",optionText:Q.parseMessage(ne[q-1]),signalType:Q.LINETYPE.CRITICAL_OPTION},ne[q]]);break;case 45:this.$=ne[q-3].concat([{type:"and",parText:Q.parseMessage(ne[q-1]),signalType:Q.LINETYPE.PAR_AND},ne[q]]);break;case 47:this.$=ne[q-3].concat([{type:"else",altText:Q.parseMessage(ne[q-1]),signalType:Q.LINETYPE.ALT_ELSE},ne[q]]);break;case 48:ne[q-3].draw="participant",ne[q-3].type="addParticipant",ne[q-3].description=Q.parseMessage(ne[q-1]),this.$=ne[q-3];break;case 49:ne[q-1].draw="participant",ne[q-1].type="addParticipant",this.$=ne[q-1];break;case 50:ne[q-3].draw="actor",ne[q-3].type="addParticipant",ne[q-3].description=Q.parseMessage(ne[q-1]),this.$=ne[q-3];break;case 51:ne[q-1].draw="actor",ne[q-1].type="addParticipant",this.$=ne[q-1];break;case 52:ne[q-1].type="destroyParticipant",this.$=ne[q-1];break;case 53:ne[q-1].draw="participant",ne[q-1].type="addParticipant",this.$=ne[q-1];break;case 54:this.$=[ne[q-1],{type:"addNote",placement:ne[q-2],actor:ne[q-1].actor,text:ne[q]}];break;case 55:ne[q-2]=[].concat(ne[q-1],ne[q-1]).slice(0,2),ne[q-2][0]=ne[q-2][0].actor,ne[q-2][1]=ne[q-2][1].actor,this.$=[ne[q-1],{type:"addNote",placement:Q.PLACEMENT.OVER,actor:ne[q-2].slice(0,2),text:ne[q]}];break;case 56:this.$=[ne[q-1],{type:"addLinks",actor:ne[q-1].actor,text:ne[q]}];break;case 57:this.$=[ne[q-1],{type:"addALink",actor:ne[q-1].actor,text:ne[q]}];break;case 58:this.$=[ne[q-1],{type:"addProperties",actor:ne[q-1].actor,text:ne[q]}];break;case 59:this.$=[ne[q-1],{type:"addDetails",actor:ne[q-1].actor,text:ne[q]}];break;case 62:this.$=[ne[q-2],ne[q]];break;case 63:this.$=ne[q];break;case 64:this.$=Q.PLACEMENT.LEFTOF;break;case 65:this.$=Q.PLACEMENT.RIGHTOF;break;case 66:this.$=[ne[q-4],ne[q-1],{type:"addMessage",from:ne[q-4].actor,to:ne[q-1].actor,signalType:ne[q-3],msg:ne[q],activate:!0},{type:"activeStart",signalType:Q.LINETYPE.ACTIVE_START,actor:ne[q-1].actor}];break;case 67:this.$=[ne[q-4],ne[q-1],{type:"addMessage",from:ne[q-4].actor,to:ne[q-1].actor,signalType:ne[q-3],msg:ne[q]},{type:"activeEnd",signalType:Q.LINETYPE.ACTIVE_END,actor:ne[q-4].actor}];break;case 68:this.$=[ne[q-3],ne[q-1],{type:"addMessage",from:ne[q-3].actor,to:ne[q-1].actor,signalType:ne[q-2],msg:ne[q]}];break;case 69:this.$={type:"addParticipant",actor:ne[q-1],config:ne[q]};break;case 70:this.$=ne[q-1].trim();break;case 71:this.$={type:"addParticipant",actor:ne[q]};break;case 72:this.$=Q.LINETYPE.SOLID_OPEN;break;case 73:this.$=Q.LINETYPE.DOTTED_OPEN;break;case 74:this.$=Q.LINETYPE.SOLID;break;case 75:this.$=Q.LINETYPE.BIDIRECTIONAL_SOLID;break;case 76:this.$=Q.LINETYPE.DOTTED;break;case 77:this.$=Q.LINETYPE.BIDIRECTIONAL_DOTTED;break;case 78:this.$=Q.LINETYPE.SOLID_CROSS;break;case 79:this.$=Q.LINETYPE.DOTTED_CROSS;break;case 80:this.$=Q.LINETYPE.SOLID_POINT;break;case 81:this.$=Q.LINETYPE.DOTTED_POINT;break;case 82:this.$=Q.parseMessage(ne[q].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,55,60,61,62,63,71],i,{7:7}),{1:[2,1]},{1:[2,2]},{1:[2,3],4:a,5:s,8:8,9:10,12:12,13:l,14:u,17:15,18:h,21:f,22:40,23:d,24:19,25:20,26:21,27:22,28:23,29:p,30:m,31:g,33:y,35:v,36:x,37:b,38:T,39:S,41:w,43:k,44:A,46:C,50:R,52:I,53:L,55:E,60:D,61:_,62:O,63:M,71:P},t(B,[2,5]),{9:47,12:12,13:l,14:u,17:15,18:h,21:f,22:40,23:d,24:19,25:20,26:21,27:22,28:23,29:p,30:m,31:g,33:y,35:v,36:x,37:b,38:T,39:S,41:w,43:k,44:A,46:C,50:R,52:I,53:L,55:E,60:D,61:_,62:O,63:M,71:P},t(B,[2,7]),t(B,[2,8]),t(B,[2,14]),{12:48,50:R,52:I,53:L},{15:[1,49]},{5:[1,50]},{5:[1,53],19:[1,51],20:[1,52]},{22:54,71:P},{22:55,71:P},{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,54:72,71:[1,73]},{22:74,71:P},{22:75,71:P},{68:76,76:[1,77],77:[1,78],78:[1,79],79:[1,80],80:[1,81],81:[1,82],82:[1,83],83:[1,84],84:[1,85],85:[1,86]},{56:87,58:[1,88],66:[1,89],67:[1,90]},{22:91,71:P},{22:92,71:P},{22:93,71:P},{22:94,71:P},t([5,51,65,76,77,78,79,80,81,82,83,84,85,86],F),t(B,[2,6]),t(B,[2,15]),t(G,[2,9],{10:95}),t(B,[2,17]),{5:[1,97],19:[1,96]},{5:[1,98]},t(B,[2,21]),{5:[1,99]},{5:[1,100]},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:101}),t($,i,{7:102}),t($,i,{7:103}),t(U,i,{40:104,7:105}),t(j,i,{42:106,7:107}),t(j,i,{7:107,42:108}),t(te,i,{45:109,7:110}),t($,i,{7:111}),{5:[1,113],51:[1,112]},{5:[1,114]},t([5,51],F,{72:115,73:[1,116]}),{5:[1,118],51:[1,117]},{5:[1,119]},{22:122,69:[1,120],70:[1,121],71:P},t(Y,[2,72]),t(Y,[2,73]),t(Y,[2,74]),t(Y,[2,75]),t(Y,[2,76]),t(Y,[2,77]),t(Y,[2,78]),t(Y,[2,79]),t(Y,[2,80]),t(Y,[2,81]),{22:123,71:P},{22:125,59:124,71:P},{71:[2,64]},{71:[2,65]},{57:126,86:oe},{57:128,86:oe},{57:129,86:oe},{57:130,86:oe},{4:[1,133],5:[1,135],11:132,12:134,16:[1,131],50:R,52:I,53:L},{5:[1,136]},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:l,14:u,16:[1,137],17:15,18:h,21:f,22:40,23:d,24:19,25:20,26:21,27:22,28:23,29:p,30:m,31:g,33:y,35:v,36:x,37:b,38:T,39:S,41:w,43:k,44:A,46:C,50:R,52:I,53:L,55:E,60:D,61:_,62:O,63:M,71:P},{4:a,5:s,8:8,9:10,12:12,13:l,14:u,16:[1,138],17:15,18:h,21:f,22:40,23:d,24:19,25:20,26:21,27:22,28:23,29:p,30:m,31:g,33:y,35:v,36:x,37:b,38:T,39:S,41:w,43:k,44:A,46:C,50:R,52:I,53:L,55:E,60:D,61:_,62:O,63:M,71:P},{4:a,5:s,8:8,9:10,12:12,13:l,14:u,16:[1,139],17:15,18:h,21:f,22:40,23:d,24:19,25:20,26:21,27:22,28:23,29:p,30:m,31:g,33:y,35:v,36:x,37:b,38:T,39:S,41:w,43:k,44:A,46:C,50:R,52:I,53:L,55:E,60:D,61:_,62:O,63:M,71:P},{16:[1,140]},{4:a,5:s,8:8,9:10,12:12,13:l,14:u,16:[2,46],17:15,18:h,21:f,22:40,23:d,24:19,25:20,26:21,27:22,28:23,29:p,30:m,31:g,33:y,35:v,36:x,37:b,38:T,39:S,41:w,43:k,44:A,46:C,49:[1,141],50:R,52:I,53:L,55:E,60:D,61:_,62:O,63:M,71:P},{16:[1,142]},{4:a,5:s,8:8,9:10,12:12,13:l,14:u,16:[2,44],17:15,18:h,21:f,22:40,23:d,24:19,25:20,26:21,27:22,28:23,29:p,30:m,31:g,33:y,35:v,36:x,37:b,38:T,39:S,41:w,43:k,44:A,46:C,48:[1,143],50:R,52:I,53:L,55:E,60:D,61:_,62:O,63:M,71:P},{16:[1,144]},{16:[1,145]},{4:a,5:s,8:8,9:10,12:12,13:l,14:u,16:[2,42],17:15,18:h,21:f,22:40,23:d,24:19,25:20,26:21,27:22,28:23,29:p,30:m,31:g,33:y,35:v,36:x,37:b,38:T,39:S,41:w,43:k,44:A,46:C,47:[1,146],50:R,52:I,53:L,55:E,60:D,61:_,62:O,63:M,71:P},{4:a,5:s,8:8,9:10,12:12,13:l,14:u,16:[1,147],17:15,18:h,21:f,22:40,23:d,24:19,25:20,26:21,27:22,28:23,29:p,30:m,31:g,33:y,35:v,36:x,37:b,38:T,39:S,41:w,43:k,44:A,46:C,50:R,52:I,53:L,55:E,60:D,61:_,62:O,63:M,71:P},{15:[1,148]},t(B,[2,49]),t(B,[2,53]),{5:[2,69]},{74:[1,149]},{15:[1,150]},t(B,[2,51]),t(B,[2,52]),{22:151,71:P},{22:152,71:P},{57:153,86:oe},{57:154,86:oe},{57:155,86:oe},{65:[1,156],86:[2,63]},{5:[2,56]},{5:[2,82]},{5:[2,57]},{5:[2,58]},{5:[2,59]},t(B,[2,16]),t(G,[2,10]),{12:157,50:R,52:I,53:L},t(G,[2,12]),t(G,[2,13]),t(B,[2,18]),t(B,[2,34]),t(B,[2,35]),t(B,[2,36]),t(B,[2,37]),{15:[1,158]},t(B,[2,38]),{15:[1,159]},t(B,[2,39]),t(B,[2,40]),{15:[1,160]},t(B,[2,41]),{5:[1,161]},{75:[1,162]},{5:[1,163]},{57:164,86:oe},{57:165,86:oe},{5:[2,68]},{5:[2,54]},{5:[2,55]},{22:166,71:P},t(G,[2,11]),t(U,i,{7:105,40:167}),t(j,i,{7:107,42:168}),t(te,i,{7:110,45:169}),t(B,[2,48]),{5:[2,70]},t(B,[2,50]),{5:[2,66]},{5:[2,67]},{86:[2,62]},{16:[2,47]},{16:[2,45]},{16:[2,43]}],defaultActions:{5:[2,1],6:[2,2],89:[2,64],90:[2,65],115:[2,69],126:[2,56],127:[2,82],128:[2,57],129:[2,58],130:[2,59],153:[2,68],154:[2,54],155:[2,55],162:[2,70],164:[2,66],165:[2,67],166:[2,62],167:[2,47],168:[2,45],169:[2,43]},parseError:o(function(Z,K){if(K.recoverable)this.trace(Z);else{var ae=new Error(Z);throw ae.hash=K,ae}},"parseError"),parse:o(function(Z){var K=this,ae=[0],Q=[],de=[null],ne=[],Te=this.table,q="",Ve=0,pe=0,Be=0,Ye=2,He=1,Le=ne.slice.call(arguments,1),Ie=Object.create(this.lexer),Ne={yy:{}};for(var Ce in this.yy)Object.prototype.hasOwnProperty.call(this.yy,Ce)&&(Ne.yy[Ce]=this.yy[Ce]);Ie.setInput(Z,Ne.yy),Ne.yy.lexer=Ie,Ne.yy.parser=this,typeof Ie.yylloc>"u"&&(Ie.yylloc={});var Fe=Ie.yylloc;ne.push(Fe);var fe=Ie.options&&Ie.options.ranges;typeof Ne.yy.parseError=="function"?this.parseError=Ne.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function xe(We){ae.length=ae.length-2*We,de.length=de.length-We,ne.length=ne.length-We}o(xe,"popStack");function W(){var We;return We=Q.pop()||Ie.lex()||He,typeof We!="number"&&(We instanceof Array&&(Q=We,We=Q.pop()),We=K.symbols_[We]||We),We}o(W,"lex");for(var he,z,se,le,ke,ve,ye={},Re,_e,ze,Ke;;){if(se=ae[ae.length-1],this.defaultActions[se]?le=this.defaultActions[se]:((he===null||typeof he>"u")&&(he=W()),le=Te[se]&&Te[se][he]),typeof le>"u"||!le.length||!le[0]){var xt="";Ke=[];for(Re in Te[se])this.terminals_[Re]&&Re>Ye&&Ke.push("'"+this.terminals_[Re]+"'");Ie.showPosition?xt="Parse error on line "+(Ve+1)+`: -`+Ie.showPosition()+` -Expecting `+Ke.join(", ")+", got '"+(this.terminals_[he]||he)+"'":xt="Parse error on line "+(Ve+1)+": Unexpected "+(he==He?"end of input":"'"+(this.terminals_[he]||he)+"'"),this.parseError(xt,{text:Ie.match,token:this.terminals_[he]||he,line:Ie.yylineno,loc:Fe,expected:Ke})}if(le[0]instanceof Array&&le.length>1)throw new Error("Parse Error: multiple actions possible at state: "+se+", token: "+he);switch(le[0]){case 1:ae.push(he),de.push(Ie.yytext),ne.push(Ie.yylloc),ae.push(le[1]),he=null,z?(he=z,z=null):(pe=Ie.yyleng,q=Ie.yytext,Ve=Ie.yylineno,Fe=Ie.yylloc,Be>0&&Be--);break;case 2:if(_e=this.productions_[le[1]][1],ye.$=de[de.length-_e],ye._$={first_line:ne[ne.length-(_e||1)].first_line,last_line:ne[ne.length-1].last_line,first_column:ne[ne.length-(_e||1)].first_column,last_column:ne[ne.length-1].last_column},fe&&(ye._$.range=[ne[ne.length-(_e||1)].range[0],ne[ne.length-1].range[1]]),ve=this.performAction.apply(ye,[q,pe,Ve,Ne.yy,le[1],de,ne].concat(Le)),typeof ve<"u")return ve;_e&&(ae=ae.slice(0,-1*_e*2),de=de.slice(0,-1*_e),ne=ne.slice(0,-1*_e)),ae.push(this.productions_[le[1]][0]),de.push(ye.$),ne.push(ye._$),ze=Te[ae[ae.length-2]][ae[ae.length-1]],ae.push(ze);break;case 3:return!0}}return!0},"parse")},ue=(function(){var ee={EOF:1,parseError:o(function(K,ae){if(this.yy.parser)this.yy.parser.parseError(K,ae);else throw new Error(K)},"parseError"),setInput:o(function(Z,K){return this.yy=K||this.yy||{},this._input=Z,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:o(function(){var Z=this._input[0];this.yytext+=Z,this.yyleng++,this.offset++,this.match+=Z,this.matched+=Z;var K=Z.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),Z},"input"),unput:o(function(Z){var K=Z.length,ae=Z.split(/(?:\r\n?|\n)/g);this._input=Z+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-K),this.offset-=K;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),ae.length-1&&(this.yylineno-=ae.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:ae?(ae.length===Q.length?this.yylloc.first_column:0)+Q[Q.length-ae.length].length-ae[0].length:this.yylloc.first_column-K},this.options.ranges&&(this.yylloc.range=[de[0],de[0]+this.yyleng-K]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(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:o(function(Z){this.unput(this.match.slice(Z))},"less"),pastInput:o(function(){var Z=this.matched.substr(0,this.matched.length-this.match.length);return(Z.length>20?"...":"")+Z.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var Z=this.match;return Z.length<20&&(Z+=this._input.substr(0,20-Z.length)),(Z.substr(0,20)+(Z.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var Z=this.pastInput(),K=new Array(Z.length+1).join("-");return Z+this.upcomingInput()+` -`+K+"^"},"showPosition"),test_match:o(function(Z,K){var ae,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=Z[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+Z[0].length},this.yytext+=Z[0],this.match+=Z[0],this.matches=Z,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(Z[0].length),this.matched+=Z[0],ae=this.performAction.call(this,this.yy,this,K,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),ae)return ae;if(this._backtrack){for(var ne in de)this[ne]=de[ne];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var Z,K,ae,Q;this._more||(this.yytext="",this.match="");for(var de=this._currentRules(),ne=0;neK[0].length)){if(K=ae,Q=ne,this.options.backtrack_lexer){if(Z=this.test_match(ae,de[ne]),Z!==!1)return Z;if(this._backtrack){K=!1;continue}else return!1}else if(!this.options.flex)break}return K?(Z=this.test_match(K,de[Q]),Z!==!1?Z:!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:o(function(){var K=this.next();return K||this.lex()},"lex"),begin:o(function(K){this.conditionStack.push(K)},"begin"),popState:o(function(){var K=this.conditionStack.length-1;return K>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(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:o(function(K){return K=this.conditionStack.length-1-Math.abs(K||0),K>=0?this.conditionStack[K]:"INITIAL"},"topState"),pushState:o(function(K){this.begin(K)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:o(function(K,ae,Q,de){var ne=de;switch(Q){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("CONFIG"),73;break;case 8:return 74;case 9:return this.popState(),this.popState(),75;break;case 10:return ae.yytext=ae.yytext.trim(),71;break;case 11:return ae.yytext=ae.yytext.trim(),this.begin("ALIAS"),71;break;case 12:return this.begin("LINE"),14;break;case 13:return this.begin("ID"),50;break;case 14:return this.begin("ID"),52;break;case 15:return 13;case 16:return this.begin("ID"),53;break;case 17:return ae.yytext=ae.yytext.trim(),this.begin("ALIAS"),71;break;case 18:return this.popState(),this.popState(),this.begin("LINE"),51;break;case 19:return this.popState(),this.popState(),5;break;case 20:return this.begin("LINE"),36;break;case 21:return this.begin("LINE"),37;break;case 22:return this.begin("LINE"),38;break;case 23:return this.begin("LINE"),39;break;case 24:return this.begin("LINE"),49;break;case 25:return this.begin("LINE"),41;break;case 26:return this.begin("LINE"),43;break;case 27:return this.begin("LINE"),48;break;case 28:return this.begin("LINE"),44;break;case 29:return this.begin("LINE"),47;break;case 30:return this.begin("LINE"),46;break;case 31:return this.popState(),15;break;case 32:return 16;case 33:return 66;case 34:return 67;case 35:return 60;case 36:return 61;case 37:return 62;case 38:return 63;case 39:return 58;case 40:return 55;case 41:return this.begin("ID"),21;break;case 42:return this.begin("ID"),23;break;case 43:return 29;case 44:return 30;case 45:return this.begin("acc_title"),31;break;case 46:return this.popState(),"acc_title_value";break;case 47:return this.begin("acc_descr"),33;break;case 48:return this.popState(),"acc_descr_value";break;case 49:this.begin("acc_descr_multiline");break;case 50:this.popState();break;case 51:return"acc_descr_multiline_value";case 52:return 6;case 53:return 18;case 54:return 20;case 55:return 65;case 56:return 5;case 57:return ae.yytext=ae.yytext.trim(),71;break;case 58:return 78;case 59:return 79;case 60:return 80;case 61:return 81;case 62:return 76;case 63:return 77;case 64:return 82;case 65:return 83;case 66:return 84;case 67:return 85;case 68:return 86;case 69:return 86;case 70:return 69;case 71:return 70;case 72:return 5;case 73:return"INVALID"}},"anonymous"),rules:[/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:((?!\n)\s)+)/i,/^(?:#[^\n]*)/i,/^(?:%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[0-9]+(?=[ \n]+))/i,/^(?:@\{)/i,/^(?:[^\}]+)/i,/^(?:\})/i,/^(?:[^\<->\->:\n,;@\s]+(?=@\{))/i,/^(?:[^\<->\->:\n,;@]+?([\-]*[^\<->\->:\n,;@]+?)*?(?=((?!\n)\s)+as(?!\n)\s|[#\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,/^(?:.)/i],conditions:{acc_descr_multiline:{rules:[50,51],inclusive:!1},acc_descr:{rules:[48],inclusive:!1},acc_title:{rules:[46],inclusive:!1},ID:{rules:[2,3,7,10,11,17],inclusive:!1},ALIAS:{rules:[2,3,18,19],inclusive:!1},LINE:{rules:[2,3,31],inclusive:!1},CONFIG:{rules:[8,9],inclusive:!1},CONFIG_DATA:{rules:[],inclusive:!1},INITIAL:{rules:[0,1,3,4,5,6,12,13,14,15,16,20,21,22,23,24,25,26,27,28,29,30,32,33,34,35,36,37,38,39,40,41,42,43,44,45,47,49,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73],inclusive:!0}}};return ee})();J.lexer=ue;function re(){this.yy={}}return o(re,"Parser"),re.prototype=J,J.Parser=re,new re})();JF.parser=JF;Mye=JF});var XZe,jZe,KZe,b4,J6,e$=N(()=>{"use strict";Xt();w2();pt();fF();gr();ci();XZe={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},jZe={FILLED:0,OPEN:1},KZe={LEFTOF:0,RIGHTOF:1,OVER:2},b4={ACTOR:"actor",BOUNDARY:"boundary",COLLECTIONS:"collections",CONTROL:"control",DATABASE:"database",ENTITY:"entity",PARTICIPANT:"participant",QUEUE:"queue"},J6=class{constructor(){this.state=new J1(()=>({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}));this.setAccTitle=Rr;this.setAccDescription=Ir;this.setDiagramTitle=$r;this.getAccTitle=Mr;this.getAccDescription=Or;this.getDiagramTitle=Pr;this.apply=this.apply.bind(this),this.parseBoxData=this.parseBoxData.bind(this),this.parseMessage=this.parseMessage.bind(this),this.clear(),this.setWrap(ge().wrap),this.LINETYPE=XZe,this.ARROWTYPE=jZe,this.PLACEMENT=KZe}static{o(this,"SequenceDB")}addBox(e){this.state.records.boxes.push({name:e.text,wrap:e.wrap??this.autoWrap(),fill:e.color,actorKeys:[]}),this.state.records.currentBox=this.state.records.boxes.slice(-1)[0]}addActor(e,r,n,i,a){let s=this.state.records.currentBox,l;if(a!==void 0){let h;a.includes(` -`)?h=a+` -`:h=`{ -`+a+` -}`,l=Kh(h,{schema:jh})}i=l?.type??i;let u=this.state.records.actors.get(e);if(u){if(this.state.records.currentBox&&u.box&&this.state.records.currentBox!==u.box)throw new Error(`A same participant should only be defined in one Box: ${u.name} can't be in '${u.box.name}' and in '${this.state.records.currentBox.name}' at the same time.`);if(s=u.box?u.box:this.state.records.currentBox,u.box=s,u&&r===u.name&&n==null)return}if(n?.text==null&&(n={text:r,type:i}),(i==null||n.text==null)&&(n={text:r,type:i}),this.state.records.actors.set(e,{box:s,name:r,description:n.text,wrap:n.wrap??this.autoWrap(),prevActor:this.state.records.prevActor,links:{},properties:{},actorCnt:null,rectData:null,type:i??"participant"}),this.state.records.prevActor){let h=this.state.records.actors.get(this.state.records.prevActor);h&&(h.nextActor=e)}this.state.records.currentBox&&this.state.records.currentBox.actorKeys.push(e),this.state.records.prevActor=e}activationCount(e){let r,n=0;if(!e)return 0;for(r=0;r>-",token:"->>-",line:"1",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:["'ACTIVE_PARTICIPANT'"]},l}return this.state.records.messages.push({id:this.state.records.messages.length.toString(),from:e,to:r,message:n?.text??"",wrap:n?.wrap??this.autoWrap(),type:i,activate:a}),!0}hasAtLeastOneBox(){return this.state.records.boxes.length>0}hasAtLeastOneBoxWithTitle(){return this.state.records.boxes.some(e=>e.name)}getMessages(){return this.state.records.messages}getBoxes(){return this.state.records.boxes}getActors(){return this.state.records.actors}getCreatedActors(){return this.state.records.createdActors}getDestroyedActors(){return this.state.records.destroyedActors}getActor(e){return this.state.records.actors.get(e)}getActorKeys(){return[...this.state.records.actors.keys()]}enableSequenceNumbers(){this.state.records.sequenceNumbersEnabled=!0}disableSequenceNumbers(){this.state.records.sequenceNumbersEnabled=!1}showSequenceNumbers(){return this.state.records.sequenceNumbersEnabled}setWrap(e){this.state.records.wrapEnabled=e}extractWrap(e){if(e===void 0)return{};e=e.trim();let r=/^:?wrap:/.exec(e)!==null?!0:/^:?nowrap:/.exec(e)!==null?!1:void 0;return{cleanedText:(r===void 0?e:e.replace(/^:?(?:no)?wrap:/,"")).trim(),wrap:r}}autoWrap(){return this.state.records.wrapEnabled!==void 0?this.state.records.wrapEnabled:ge().sequence?.wrap??!1}clear(){this.state.reset(),Sr()}parseMessage(e){let r=e.trim(),{wrap:n,cleanedText:i}=this.extractWrap(r),a={text:i,wrap:n};return X.debug(`parseMessage: ${JSON.stringify(a)}`),a}parseBoxData(e){let r=/^((?:rgba?|hsla?)\s*\(.*\)|\w*)(.*)$/.exec(e),n=r?.[1]?r[1].trim():"transparent",i=r?.[2]?r[2].trim():void 0;if(window?.CSS)window.CSS.supports("color",n)||(n="transparent",i=e.trim());else{let l=new Option().style;l.color=n,l.color!==n&&(n="transparent",i=e.trim())}let{wrap:a,cleanedText:s}=this.extractWrap(i);return{text:s?sr(s,ge()):void 0,color:n,wrap:a}}addNote(e,r,n){let i={actor:e,placement:r,message:n.text,wrap:n.wrap??this.autoWrap()},a=[].concat(e,e);this.state.records.notes.push(i),this.state.records.messages.push({id:this.state.records.messages.length.toString(),from:a[0],to:a[1],message:n.text,wrap:n.wrap??this.autoWrap(),type:this.LINETYPE.NOTE,placement:r})}addLinks(e,r){let n=this.getActor(e);try{let i=sr(r.text,ge());i=i.replace(/=/g,"="),i=i.replace(/&/g,"&");let a=JSON.parse(i);this.insertLinks(n,a)}catch(i){X.error("error while parsing actor link text",i)}}addALink(e,r){let n=this.getActor(e);try{let i={},a=sr(r.text,ge()),s=a.indexOf("@");a=a.replace(/=/g,"="),a=a.replace(/&/g,"&");let l=a.slice(0,s-1).trim(),u=a.slice(s+1).trim();i[l]=u,this.insertLinks(n,i)}catch(i){X.error("error while parsing actor link text",i)}}insertLinks(e,r){if(e.links==null)e.links=r;else for(let n in r)e.links[n]=r[n]}addProperties(e,r){let n=this.getActor(e);try{let i=sr(r.text,ge()),a=JSON.parse(i);this.insertProperties(n,a)}catch(i){X.error("error while parsing actor properties text",i)}}insertProperties(e,r){if(e.properties==null)e.properties=r;else for(let n in r)e.properties[n]=r[n]}boxEnd(){this.state.records.currentBox=void 0}addDetails(e,r){let n=this.getActor(e),i=document.getElementById(r.text);try{let a=i.innerHTML,s=JSON.parse(a);s.properties&&this.insertProperties(n,s.properties),s.links&&this.insertLinks(n,s.links)}catch(a){X.error("error while parsing actor details text",a)}}getActorProperty(e,r){if(e?.properties!==void 0)return e.properties[r]}apply(e){if(Array.isArray(e))e.forEach(r=>{this.apply(r)});else switch(e.type){case"sequenceIndex":this.state.records.messages.push({id:this.state.records.messages.length.toString(),from:void 0,to:void 0,message:{start:e.sequenceIndex,step:e.sequenceIndexStep,visible:e.sequenceVisible},wrap:!1,type:e.signalType});break;case"addParticipant":this.addActor(e.actor,e.actor,e.description,e.draw,e.config);break;case"createParticipant":if(this.state.records.actors.has(e.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");this.state.records.lastCreated=e.actor,this.addActor(e.actor,e.actor,e.description,e.draw,e.config),this.state.records.createdActors.set(e.actor,this.state.records.messages.length);break;case"destroyParticipant":this.state.records.lastDestroyed=e.actor,this.state.records.destroyedActors.set(e.actor,this.state.records.messages.length);break;case"activeStart":this.addSignal(e.actor,void 0,void 0,e.signalType);break;case"activeEnd":this.addSignal(e.actor,void 0,void 0,e.signalType);break;case"addNote":this.addNote(e.actor,e.placement,e.text);break;case"addLinks":this.addLinks(e.actor,e.text);break;case"addALink":this.addALink(e.actor,e.text);break;case"addProperties":this.addProperties(e.actor,e.text);break;case"addDetails":this.addDetails(e.actor,e.text);break;case"addMessage":if(this.state.records.lastCreated){if(e.to!==this.state.records.lastCreated)throw new Error("The created participant "+this.state.records.lastCreated.name+" does not have an associated creating message after its declaration. Please check the sequence diagram.");this.state.records.lastCreated=void 0}else if(this.state.records.lastDestroyed){if(e.to!==this.state.records.lastDestroyed&&e.from!==this.state.records.lastDestroyed)throw new Error("The destroyed participant "+this.state.records.lastDestroyed.name+" does not have an associated destroying message after its declaration. Please check the sequence diagram.");this.state.records.lastDestroyed=void 0}this.addSignal(e.from,e.to,e.msg,e.signalType,e.activate);break;case"boxStart":this.addBox(e.boxData);break;case"boxEnd":this.boxEnd();break;case"loopStart":this.addSignal(void 0,void 0,e.loopText,e.signalType);break;case"loopEnd":this.addSignal(void 0,void 0,void 0,e.signalType);break;case"rectStart":this.addSignal(void 0,void 0,e.color,e.signalType);break;case"rectEnd":this.addSignal(void 0,void 0,void 0,e.signalType);break;case"optStart":this.addSignal(void 0,void 0,e.optText,e.signalType);break;case"optEnd":this.addSignal(void 0,void 0,void 0,e.signalType);break;case"altStart":this.addSignal(void 0,void 0,e.altText,e.signalType);break;case"else":this.addSignal(void 0,void 0,e.altText,e.signalType);break;case"altEnd":this.addSignal(void 0,void 0,void 0,e.signalType);break;case"setAccTitle":Rr(e.text);break;case"parStart":this.addSignal(void 0,void 0,e.parText,e.signalType);break;case"and":this.addSignal(void 0,void 0,e.parText,e.signalType);break;case"parEnd":this.addSignal(void 0,void 0,void 0,e.signalType);break;case"criticalStart":this.addSignal(void 0,void 0,e.criticalText,e.signalType);break;case"option":this.addSignal(void 0,void 0,e.optionText,e.signalType);break;case"criticalEnd":this.addSignal(void 0,void 0,void 0,e.signalType);break;case"breakStart":this.addSignal(void 0,void 0,e.breakText,e.signalType);break;case"breakEnd":this.addSignal(void 0,void 0,void 0,e.signalType);break}}getConfig(){return ge().sequence}}});var QZe,Oye,Pye=N(()=>{"use strict";QZe=o(t=>`.actor { - stroke: ${t.actorBorder}; - fill: ${t.actorBkg}; - } - - text.actor > tspan { - fill: ${t.actorTextColor}; - stroke: none; - } - - .actor-line { - stroke: ${t.actorLineColor}; - } - - .innerArc { - stroke-width: 1.5; - stroke-dasharray: none; - } - - .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"),Oye=QZe});var t$,Yf,jf,Kf,eC,Xf,T4,ZZe,tC,w4,o0,Bye,Fr,r$,JZe,eJe,tJe,rJe,nJe,iJe,aJe,sJe,oJe,lJe,cJe,uJe,hJe,Fye,fJe,dJe,pJe,mJe,gJe,yJe,vJe,$ye,xJe,oh,bJe,mi,zye=N(()=>{"use strict";t$=ja(tm(),1);qn();tr();gr();r2();Yf=36,jf="actor-top",Kf="actor-bottom",eC="actor-box",Xf="actor-man",T4=o(function(t,e){return Fd(t,e)},"drawRect"),ZZe=o(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,l=e.rectData;var u="none";i&&(u="block !important");let h=t.append("g");h.attr("id","actor"+s+"_popup"),h.attr("class","actorPopupMenu"),h.attr("display",u);var f="";l.class!==void 0&&(f=" "+l.class);let d=l.width>r?l.width:r,p=h.append("rect");if(p.attr("class","actorPopupMenuPanel"+f),p.attr("x",l.x),p.attr("y",l.height),p.attr("fill",l.fill),p.attr("stroke",l.stroke),p.attr("width",d),p.attr("height",l.height),p.attr("rx",l.rx),p.attr("ry",l.ry),a!=null){var m=20;for(let v in a){var g=h.append("a"),y=(0,t$.sanitizeUrl)(a[v]);g.attr("xlink:href",y),g.attr("target","_blank"),bJe(n)(v,g,l.x+10,l.height+m,d,20,{class:"actor"},n),m+=30}}return p.attr("height",m),{height:l.height+m,width:d}},"drawPopup"),tC=o(function(t){return"var pu = document.getElementById('"+t+"'); if (pu != null) { pu.style.display = pu.style.display == 'block' ? 'none' : 'block'; }"},"popupMenuToggle"),w4=o(async function(t,e,r=null){let n=t.append("foreignObject"),i=await kh(e.text,Qt()),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 l=t.node().firstChild;l.setAttribute("height",s.height+2*e.textMargin);let u=l.getBBox();n.attr("x",Math.round(u.x+u.width/2-s.width/2)).attr("y",Math.round(u.y+u.height/2-s.height/2))}else if(r){let{startx:l,stopx:u,starty:h}=r;if(l>u){let f=l;l=u,u=f}n.attr("x",Math.round(l+Math.abs(l-u)/2-s.width/2)),e.class==="loopText"?n.attr("y",Math.round(h)):n.attr("y",Math.round(h-s.height))}return[n]},"drawKatex"),o0=o(function(t,e){let r=0,n=0,i=e.text.split(tt.lineBreakRegex),[a,s]=vc(e.fontSize),l=[],u=0,h=o(()=>e.y,"yfunc");if(e.valign!==void 0&&e.textMargin!==void 0&&e.textMargin>0)switch(e.valign){case"top":case"start":h=o(()=>Math.round(e.y+e.textMargin),"yfunc");break;case"middle":case"center":h=o(()=>Math.round(e.y+(r+n+e.textMargin)/2),"yfunc");break;case"bottom":case"end":h=o(()=>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[f,d]of i.entries()){e.textMargin!==void 0&&e.textMargin===0&&a!==void 0&&(u=f*a);let p=t.append("text");p.attr("x",e.x),p.attr("y",h()),e.anchor!==void 0&&p.attr("text-anchor",e.anchor).attr("dominant-baseline",e.dominantBaseline).attr("alignment-baseline",e.alignmentBaseline),e.fontFamily!==void 0&&p.style("font-family",e.fontFamily),s!==void 0&&p.style("font-size",s),e.fontWeight!==void 0&&p.style("font-weight",e.fontWeight),e.fill!==void 0&&p.attr("fill",e.fill),e.class!==void 0&&p.attr("class",e.class),e.dy!==void 0?p.attr("dy",e.dy):u!==0&&p.attr("dy",u);let m=d||BL;if(e.tspan){let g=p.append("tspan");g.attr("x",e.x),e.fill!==void 0&&g.attr("fill",e.fill),g.text(m)}else p.text(m);e.valign!==void 0&&e.textMargin!==void 0&&e.textMargin>0&&(n+=(p._groups||p)[0][0].getBBox().height,r=n),l.push(p)}return l},"drawText"),Bye=o(function(t,e){function r(i,a,s,l,u){return i+","+a+" "+(i+s)+","+a+" "+(i+s)+","+(a+l-u)+" "+(i+s-u*1.2)+","+(a+l)+" "+i+","+(a+l)}o(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,o0(t,e),n},"drawLabel"),Fr=-1,r$=o((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"),JZe=o(function(t,e,r,n){let i=n?e.stopy:e.starty,a=e.x+e.width/2,s=i+e.height,l=t.append("g").lower();var u=l;n||(Fr++,Object.keys(e.links||{}).length&&!r.forceMenus&&u.attr("onclick",tC(`actor${Fr}_popup`)).attr("cursor","pointer"),u.append("line").attr("id","actor"+Fr).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),u=l.append("g"),e.actorCnt=Fr,e.links!=null&&u.attr("id","root-"+Fr));let h=ua();var f="actor";e.properties?.class?f=e.properties.class:h.fill="#eaeaea",n?f+=` ${Kf}`:f+=` ${jf}`,h.x=e.x,h.y=i,h.width=e.width,h.height=e.height,h.class=f,h.rx=3,h.ry=3,h.name=e.name;let d=T4(u,h);if(e.rectData=h,e.properties?.icon){let m=e.properties.icon.trim();m.charAt(0)==="@"?lT(u,h.x+h.width-20,h.y+10,m.substr(1)):oT(u,h.x+h.width-20,h.y+10,m)}oh(r,kn(e.description))(e.description,u,h.x,h.y,h.width,h.height,{class:`actor ${eC}`},r);let p=e.height;if(d.node){let m=d.node().getBBox();e.height=m.height,p=m.height}return p},"drawActorTypeParticipant"),eJe=o(function(t,e,r,n){let i=n?e.stopy:e.starty,a=e.x+e.width/2,s=i+e.height,l=t.append("g").lower();var u=l;n||(Fr++,Object.keys(e.links||{}).length&&!r.forceMenus&&u.attr("onclick",tC(`actor${Fr}_popup`)).attr("cursor","pointer"),u.append("line").attr("id","actor"+Fr).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),u=l.append("g"),e.actorCnt=Fr,e.links!=null&&u.attr("id","root-"+Fr));let h=ua();var f="actor";e.properties?.class?f=e.properties.class:h.fill="#eaeaea",n?f+=` ${Kf}`:f+=` ${jf}`,h.x=e.x,h.y=i,h.width=e.width,h.height=e.height,h.class=f,h.name=e.name;let d=6,p={...h,x:h.x+-d,y:h.y+ +d,class:"actor"},m=T4(u,h);if(T4(u,p),e.rectData=h,e.properties?.icon){let y=e.properties.icon.trim();y.charAt(0)==="@"?lT(u,h.x+h.width-20,h.y+10,y.substr(1)):oT(u,h.x+h.width-20,h.y+10,y)}oh(r,kn(e.description))(e.description,u,h.x-d,h.y+d,h.width,h.height,{class:`actor ${eC}`},r);let g=e.height;if(m.node){let y=m.node().getBBox();e.height=y.height,g=y.height}return g},"drawActorTypeCollections"),tJe=o(function(t,e,r,n){let i=n?e.stopy:e.starty,a=e.x+e.width/2,s=i+e.height,l=t.append("g").lower(),u=l;n||(Fr++,Object.keys(e.links||{}).length&&!r.forceMenus&&u.attr("onclick",tC(`actor${Fr}_popup`)).attr("cursor","pointer"),u.append("line").attr("id","actor"+Fr).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),u=l.append("g"),e.actorCnt=Fr,e.links!=null&&u.attr("id","root-"+Fr));let h=ua(),f="actor";e.properties?.class?f=e.properties.class:h.fill="#eaeaea",n?f+=` ${Kf}`:f+=` ${jf}`,h.x=e.x,h.y=i,h.width=e.width,h.height=e.height,h.class=f,h.name=e.name;let d=h.height/2,p=d/(2.5+h.height/50),m=u.append("g"),g=u.append("g");if(m.append("path").attr("d",`M ${h.x},${h.y+d} - a ${p},${d} 0 0 0 0,${h.height} - h ${h.width-2*p} - a ${p},${d} 0 0 0 0,-${h.height} - Z - `).attr("class",f),g.append("path").attr("d",`M ${h.x},${h.y+d} - a ${p},${d} 0 0 0 0,${h.height}`).attr("stroke","#666").attr("stroke-width","1px").attr("class",f),m.attr("transform",`translate(${p}, ${-(h.height/2)})`),g.attr("transform",`translate(${h.width-p}, ${-h.height/2})`),e.rectData=h,e.properties?.icon){let x=e.properties.icon.trim(),b=h.x+h.width-20,T=h.y+10;x.charAt(0)==="@"?lT(u,b,T,x.substr(1)):oT(u,b,T,x)}oh(r,kn(e.description))(e.description,u,h.x,h.y,h.width,h.height,{class:`actor ${eC}`},r);let y=e.height,v=m.select("path:last-child");if(v.node()){let x=v.node().getBBox();e.height=x.height,y=x.height}return y},"drawActorTypeQueue"),rJe=o(function(t,e,r,n){let i=n?e.stopy:e.starty,a=e.x+e.width/2,s=i+75,l=t.append("g").lower();n||(Fr++,l.append("line").attr("id","actor"+Fr).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=Fr);let u=t.append("g"),h=Xf;n?h+=` ${Kf}`:h+=` ${jf}`,u.attr("class",h),u.attr("name",e.name);let f=ua();f.x=e.x,f.y=i,f.fill="#eaeaea",f.width=e.width,f.height=e.height,f.class="actor";let d=e.x+e.width/2,p=i+30,m=18;u.append("defs").append("marker").attr("id","filled-head-control").attr("refX",11).attr("refY",5.8).attr("markerWidth",20).attr("markerHeight",28).attr("orient","172.5").append("path").attr("d","M 14.4 5.6 L 7.2 10.4 L 8.8 5.6 L 7.2 0.8 Z"),u.append("circle").attr("cx",d).attr("cy",p).attr("r",m).attr("fill","#eaeaf7").attr("stroke","#666").attr("stroke-width",1.2),u.append("line").attr("marker-end","url(#filled-head-control)").attr("transform",`translate(${d}, ${p-m})`);let g=u.node().getBBox();return e.height=g.height+2*(r?.sequence?.labelBoxHeight??0),oh(r,kn(e.description))(e.description,u,f.x,f.y+m+(n?5:10),f.width,f.height,{class:`actor ${Xf}`},r),e.height},"drawActorTypeControl"),nJe=o(function(t,e,r,n){let i=n?e.stopy:e.starty,a=e.x+e.width/2,s=i+75,l=t.append("g").lower(),u=t.append("g"),h=Xf;n?h+=` ${Kf}`:h+=` ${jf}`,u.attr("class",h),u.attr("name",e.name);let f=ua();f.x=e.x,f.y=i,f.fill="#eaeaea",f.width=e.width,f.height=e.height,f.class="actor";let d=e.x+e.width/2,p=i+(n?10:25),m=18;u.append("circle").attr("cx",d).attr("cy",p).attr("r",m).attr("width",e.width).attr("height",e.height),u.append("line").attr("x1",d-m).attr("x2",d+m).attr("y1",p+m).attr("y2",p+m).attr("stroke","#333").attr("stroke-width",2);let g=u.node().getBBox();return e.height=g.height+(r?.sequence?.labelBoxHeight??0),n||(Fr++,l.append("line").attr("id","actor"+Fr).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=Fr),oh(r,kn(e.description))(e.description,u,f.x,f.y+(n?(p-i+m-5)/2:(p+m-i)/2),f.width,f.height,{class:`actor ${Xf}`},r),n?u.attr("transform",`translate(0, ${m/2})`):u.attr("transform",`translate(0, ${m/2})`),e.height},"drawActorTypeEntity"),iJe=o(function(t,e,r,n){let i=n?e.stopy:e.starty,a=e.x+e.width/2,s=i+e.height+2*r.boxTextMargin,l=t.append("g").lower(),u=l;n||(Fr++,Object.keys(e.links||{}).length&&!r.forceMenus&&u.attr("onclick",tC(`actor${Fr}_popup`)).attr("cursor","pointer"),u.append("line").attr("id","actor"+Fr).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),u=l.append("g"),e.actorCnt=Fr,e.links!=null&&u.attr("id","root-"+Fr));let h=ua(),f="actor";e.properties?.class?f=e.properties.class:h.fill="#eaeaea",n?f+=` ${Kf}`:f+=` ${jf}`,h.x=e.x,h.y=i,h.width=e.width,h.height=e.height,h.class=f,h.name=e.name,h.x=e.x,h.y=i;let d=h.width/4,p=h.width/4,m=d/2,g=m/(2.5+d/50),y=u.append("g"),v=` - M ${h.x},${h.y+g} - a ${m},${g} 0 0 0 ${d},0 - a ${m},${g} 0 0 0 -${d},0 - l 0,${p-2*g} - a ${m},${g} 0 0 0 ${d},0 - l 0,-${p-2*g} -`;y.append("path").attr("d",v).attr("fill","#eaeaea").attr("stroke","#000").attr("stroke-width",1).attr("class",f),n?y.attr("transform",`translate(${d*1.5}, ${h.height/4-2*g})`):y.attr("transform",`translate(${d*1.5}, ${(h.height+g)/4})`),e.rectData=h,oh(r,kn(e.description))(e.description,u,h.x,h.y+(n?(h.height+p)/4:(h.height+g)/2),h.width,h.height,{class:`actor ${eC}`},r);let x=y.select("path:last-child");if(x.node()){let b=x.node().getBBox();e.height=b.height+(r.sequence.labelBoxHeight??0)}return e.height},"drawActorTypeDatabase"),aJe=o(function(t,e,r,n){let i=n?e.stopy:e.starty,a=e.x+e.width/2,s=i+80,l=30,u=t.append("g").lower();n||(Fr++,u.append("line").attr("id","actor"+Fr).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=Fr);let h=t.append("g"),f=Xf;n?f+=` ${Kf}`:f+=` ${jf}`,h.attr("class",f),h.attr("name",e.name);let d=ua();d.x=e.x,d.y=i,d.fill="#eaeaea",d.width=e.width,d.height=e.height,d.class="actor",h.append("line").attr("id","actor-man-torso"+Fr).attr("x1",e.x+e.width/2-l*2.5).attr("y1",i+10).attr("x2",e.x+e.width/2-15).attr("y2",i+10),h.append("line").attr("id","actor-man-arms"+Fr).attr("x1",e.x+e.width/2-l*2.5).attr("y1",i+0).attr("x2",e.x+e.width/2-l*2.5).attr("y2",i+20),h.append("circle").attr("cx",e.x+e.width/2).attr("cy",i+10).attr("r",l);let p=h.node().getBBox();return e.height=p.height+(r.sequence.labelBoxHeight??0),oh(r,kn(e.description))(e.description,h,d.x,d.y+(n?l/2-4:l/2+3),d.width,d.height,{class:`actor ${Xf}`},r),n?h.attr("transform",`translate(0,${l/2+7})`):h.attr("transform",`translate(0,${l/2+7})`),e.height},"drawActorTypeBoundary"),sJe=o(function(t,e,r,n){let i=n?e.stopy:e.starty,a=e.x+e.width/2,s=i+80,l=t.append("g").lower();n||(Fr++,l.append("line").attr("id","actor"+Fr).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=Fr);let u=t.append("g"),h=Xf;n?h+=` ${Kf}`:h+=` ${jf}`,u.attr("class",h),u.attr("name",e.name);let f=ua();f.x=e.x,f.y=i,f.fill="#eaeaea",f.width=e.width,f.height=e.height,f.class="actor",f.rx=3,f.ry=3,u.append("line").attr("id","actor-man-torso"+Fr).attr("x1",a).attr("y1",i+25).attr("x2",a).attr("y2",i+45),u.append("line").attr("id","actor-man-arms"+Fr).attr("x1",a-Yf/2).attr("y1",i+33).attr("x2",a+Yf/2).attr("y2",i+33),u.append("line").attr("x1",a-Yf/2).attr("y1",i+60).attr("x2",a).attr("y2",i+45),u.append("line").attr("x1",a).attr("y1",i+45).attr("x2",a+Yf/2-2).attr("y2",i+60);let d=u.append("circle");d.attr("cx",e.x+e.width/2),d.attr("cy",i+10),d.attr("r",15),d.attr("width",e.width),d.attr("height",e.height);let p=u.node().getBBox();return e.height=p.height,oh(r,kn(e.description))(e.description,u,f.x,f.y+35,f.width,f.height,{class:`actor ${Xf}`},r),e.height},"drawActorTypeActor"),oJe=o(async function(t,e,r,n){switch(e.type){case"actor":return await sJe(t,e,r,n);case"participant":return await JZe(t,e,r,n);case"boundary":return await aJe(t,e,r,n);case"control":return await rJe(t,e,r,n);case"entity":return await nJe(t,e,r,n);case"database":return await iJe(t,e,r,n);case"collections":return await eJe(t,e,r,n);case"queue":return await tJe(t,e,r,n)}},"drawActor"),lJe=o(function(t,e,r){let i=t.append("g");Fye(i,e),e.name&&oh(r)(e.name,i,e.x,e.y+r.boxTextMargin+(e.textMaxHeight||0)/2,e.width,0,{class:"text"},r),i.lower()},"drawBox"),cJe=o(function(t){return t.append("g")},"anchorElement"),uJe=o(function(t,e,r,n,i){let a=ua(),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,T4(s,a)},"drawActivation"),hJe=o(async function(t,e,r,n){let{boxMargin:i,boxTextMargin:a,labelBoxHeight:s,labelBoxWidth:l,messageFontFamily:u,messageFontSize:h,messageFontWeight:f}=n,d=t.append("g"),p=o(function(y,v,x,b){return d.append("line").attr("x1",y).attr("y1",v).attr("x2",x).attr("y2",b).attr("class","loopLine")},"drawLoopLine");p(e.startx,e.starty,e.stopx,e.starty),p(e.stopx,e.starty,e.stopx,e.stopy),p(e.startx,e.stopy,e.stopx,e.stopy),p(e.startx,e.starty,e.startx,e.stopy),e.sections!==void 0&&e.sections.forEach(function(y){p(e.startx,y.y,e.stopx,y.y).style("stroke-dasharray","3, 3")});let m=t2();m.text=r,m.x=e.startx,m.y=e.starty,m.fontFamily=u,m.fontSize=h,m.fontWeight=f,m.anchor="middle",m.valign="middle",m.tspan=!1,m.width=l||50,m.height=s||20,m.textMargin=a,m.class="labelText",Bye(d,m),m=$ye(),m.text=e.title,m.x=e.startx+l/2+(e.stopx-e.startx)/2,m.y=e.starty+i+a,m.anchor="middle",m.valign="middle",m.textMargin=a,m.class="loopText",m.fontFamily=u,m.fontSize=h,m.fontWeight=f,m.wrap=!0;let g=kn(m.text)?await w4(d,m,e):o0(d,m);if(e.sectionTitles!==void 0){for(let[y,v]of Object.entries(e.sectionTitles))if(v.message){m.text=v.message,m.x=e.startx+(e.stopx-e.startx)/2,m.y=e.sections[y].y+i+a,m.class="loopText",m.anchor="middle",m.valign="middle",m.tspan=!1,m.fontFamily=u,m.fontSize=h,m.fontWeight=f,m.wrap=e.wrap,kn(m.text)?(e.starty=e.sections[y].y,await w4(d,m,e)):o0(d,m);let x=Math.round(g.map(b=>(b._groups||b)[0][0].getBBox().height).reduce((b,T)=>b+T));e.sections[y].height+=x-(i+a)}}return e.height=Math.round(e.stopy-e.starty),d},"drawLoop"),Fye=o(function(t,e){sT(t,e)},"drawBackgroundRect"),fJe=o(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"),dJe=o(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"),pJe=o(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"),mJe=o(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"),gJe=o(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"),yJe=o(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"),vJe=o(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"),$ye=o(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"),xJe=o(function(){return{x:0,y:0,fill:"#EDF2AE",stroke:"#666",width:100,anchor:"start",height:100,rx:0,ry:0}},"getNoteRect"),oh=(function(){function t(a,s,l,u,h,f,d){let p=s.append("text").attr("x",l+h/2).attr("y",u+f/2+5).style("text-anchor","middle").text(a);i(p,d)}o(t,"byText");function e(a,s,l,u,h,f,d,p){let{actorFontSize:m,actorFontFamily:g,actorFontWeight:y}=p,[v,x]=vc(m),b=a.split(tt.lineBreakRegex);for(let T=0;T{let s=l0(Me),l=a.actorKeys.reduce((d,p)=>d+=t.get(p).width+(t.get(p).margin||0),0),u=Me.boxMargin*8;l+=u,l-=2*Me.boxTextMargin,a.wrap&&(a.name=qt.wrapLabel(a.name,l-2*Me.wrapPadding,s));let h=qt.calculateTextDimensions(a.name,s);i=tt.getMax(h.height,i);let f=tt.getMax(l,h.width+2*Me.wrapPadding);if(a.margin=Me.boxTextMargin,la.textMaxHeight=i),tt.getMax(n,Me.height)}var Me,ot,TJe,l0,ay,n$,kJe,EJe,i$,Vye,Uye,rC,Gye,CJe,_Je,LJe,RJe,NJe,Hye,qye=N(()=>{"use strict";yr();zye();pt();gr();gr();r2();Xt();v0();tr();Ei();e$();Me={},ot={data:{startx:void 0,stopx:void 0,starty:void 0,stopy:void 0},verticalPos:0,sequenceItems:[],activations:[],models:{getHeight:o(function(){return Math.max.apply(null,this.actors.length===0?[0]:this.actors.map(t=>t.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:o(function(){this.actors=[],this.boxes=[],this.loops=[],this.messages=[],this.notes=[]},"clear"),addBox:o(function(t){this.boxes.push(t)},"addBox"),addActor:o(function(t){this.actors.push(t)},"addActor"),addLoop:o(function(t){this.loops.push(t)},"addLoop"),addMessage:o(function(t){this.messages.push(t)},"addMessage"),addNote:o(function(t){this.notes.push(t)},"addNote"),lastActor:o(function(){return this.actors[this.actors.length-1]},"lastActor"),lastLoop:o(function(){return this.loops[this.loops.length-1]},"lastLoop"),lastMessage:o(function(){return this.messages[this.messages.length-1]},"lastMessage"),lastNote:o(function(){return this.notes[this.notes.length-1]},"lastNote"),actors:[],boxes:[],loops:[],messages:[],notes:[]},init:o(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,Uye(ge())},"init"),updateVal:o(function(t,e,r,n){t[e]===void 0?t[e]=r:t[e]=n(r,t[e])},"updateVal"),updateBounds:o(function(t,e,r,n){let i=this,a=0;function s(l){return o(function(h){a++;let f=i.sequenceItems.length-a+1;i.updateVal(h,"starty",e-f*Me.boxMargin,Math.min),i.updateVal(h,"stopy",n+f*Me.boxMargin,Math.max),i.updateVal(ot.data,"startx",t-f*Me.boxMargin,Math.min),i.updateVal(ot.data,"stopx",r+f*Me.boxMargin,Math.max),l!=="activation"&&(i.updateVal(h,"startx",t-f*Me.boxMargin,Math.min),i.updateVal(h,"stopx",r+f*Me.boxMargin,Math.max),i.updateVal(ot.data,"starty",e-f*Me.boxMargin,Math.min),i.updateVal(ot.data,"stopy",n+f*Me.boxMargin,Math.max))},"updateItemBounds")}o(s,"updateFn"),this.sequenceItems.forEach(s()),this.activations.forEach(s("activation"))},"updateBounds"),insert:o(function(t,e,r,n){let i=tt.getMin(t,r),a=tt.getMax(t,r),s=tt.getMin(e,n),l=tt.getMax(e,n);this.updateVal(ot.data,"startx",i,Math.min),this.updateVal(ot.data,"starty",s,Math.min),this.updateVal(ot.data,"stopx",a,Math.max),this.updateVal(ot.data,"stopy",l,Math.max),this.updateBounds(i,s,a,l)},"insert"),newActivation:o(function(t,e,r){let n=r.get(t.from),i=rC(t.from).length||0,a=n.x+n.width/2+(i-1)*Me.activationWidth/2;this.activations.push({startx:a,starty:this.verticalPos+2,stopx:a+Me.activationWidth,stopy:void 0,actor:t.from,anchored:mi.anchorElement(e)})},"newActivation"),endActivation:o(function(t){let e=this.activations.map(function(r){return r.actor}).lastIndexOf(t.from);return this.activations.splice(e,1)[0]},"endActivation"),createLoop:o(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:o(function(t={message:void 0,wrap:!1,width:void 0},e){this.sequenceItems.push(this.createLoop(t,e))},"newLoop"),endLoop:o(function(){return this.sequenceItems.pop()},"endLoop"),isLoopOverlap:o(function(){return this.sequenceItems.length?this.sequenceItems[this.sequenceItems.length-1].overlap:!1},"isLoopOverlap"),addSectionToLoop:o(function(t){let e=this.sequenceItems.pop();e.sections=e.sections||[],e.sectionTitles=e.sectionTitles||[],e.sections.push({y:ot.getVerticalPos(),height:0}),e.sectionTitles.push(t),this.sequenceItems.push(e)},"addSectionToLoop"),saveVerticalPos:o(function(){this.isLoopOverlap()&&(this.savedVerticalPos=this.verticalPos)},"saveVerticalPos"),resetVerticalPos:o(function(){this.isLoopOverlap()&&(this.verticalPos=this.savedVerticalPos)},"resetVerticalPos"),bumpVerticalPos:o(function(t){this.verticalPos=this.verticalPos+t,this.data.stopy=tt.getMax(this.data.stopy,this.verticalPos)},"bumpVerticalPos"),getVerticalPos:o(function(){return this.verticalPos},"getVerticalPos"),getBounds:o(function(){return{bounds:this.data,models:this.models}},"getBounds")},TJe=o(async function(t,e){ot.bumpVerticalPos(Me.boxMargin),e.height=Me.boxMargin,e.starty=ot.getVerticalPos();let r=ua();r.x=e.startx,r.y=e.starty,r.width=e.width||Me.width,r.class="note";let n=t.append("g"),i=mi.drawRect(n,r),a=t2();a.x=e.startx,a.y=e.starty,a.width=r.width,a.dy="1em",a.text=e.message,a.class="noteText",a.fontFamily=Me.noteFontFamily,a.fontSize=Me.noteFontSize,a.fontWeight=Me.noteFontWeight,a.anchor=Me.noteAlign,a.textMargin=Me.noteMargin,a.valign="center";let s=kn(a.text)?await w4(n,a):o0(n,a),l=Math.round(s.map(u=>(u._groups||u)[0][0].getBBox().height).reduce((u,h)=>u+h));i.attr("height",l+2*Me.noteMargin),e.height+=l+2*Me.noteMargin,ot.bumpVerticalPos(l+2*Me.noteMargin),e.stopy=e.starty+l+2*Me.noteMargin,e.stopx=e.startx+r.width,ot.insert(e.startx,e.starty,e.stopx,e.stopy),ot.models.addNote(e)},"drawNote"),l0=o(t=>({fontFamily:t.messageFontFamily,fontSize:t.messageFontSize,fontWeight:t.messageFontWeight}),"messageFont"),ay=o(t=>({fontFamily:t.noteFontFamily,fontSize:t.noteFontSize,fontWeight:t.noteFontWeight}),"noteFont"),n$=o(t=>({fontFamily:t.actorFontFamily,fontSize:t.actorFontSize,fontWeight:t.actorFontWeight}),"actorFont");o(wJe,"boundMessage");kJe=o(async function(t,e,r,n){let{startx:i,stopx:a,starty:s,message:l,type:u,sequenceIndex:h,sequenceVisible:f}=e,d=qt.calculateTextDimensions(l,l0(Me)),p=t2();p.x=i,p.y=s+10,p.width=a-i,p.class="messageText",p.dy="1em",p.text=l,p.fontFamily=Me.messageFontFamily,p.fontSize=Me.messageFontSize,p.fontWeight=Me.messageFontWeight,p.anchor=Me.messageAlign,p.valign="center",p.textMargin=Me.wrapPadding,p.tspan=!1,kn(p.text)?await w4(t,p,{startx:i,stopx:a,starty:r}):o0(t,p);let m=d.width,g;i===a?Me.rightAngles?g=t.append("path").attr("d",`M ${i},${r} H ${i+tt.getMax(Me.width/2,m/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)),u===n.db.LINETYPE.DOTTED||u===n.db.LINETYPE.DOTTED_CROSS||u===n.db.LINETYPE.DOTTED_POINT||u===n.db.LINETYPE.DOTTED_OPEN||u===n.db.LINETYPE.BIDIRECTIONAL_DOTTED?(g.style("stroke-dasharray","3, 3"),g.attr("class","messageLine1")):g.attr("class","messageLine0");let y="";Me.arrowMarkerAbsolute&&(y=md(!0)),g.attr("stroke-width",2),g.attr("stroke","none"),g.style("fill","none"),(u===n.db.LINETYPE.SOLID||u===n.db.LINETYPE.DOTTED)&&g.attr("marker-end","url("+y+"#arrowhead)"),(u===n.db.LINETYPE.BIDIRECTIONAL_SOLID||u===n.db.LINETYPE.BIDIRECTIONAL_DOTTED)&&(g.attr("marker-start","url("+y+"#arrowhead)"),g.attr("marker-end","url("+y+"#arrowhead)")),(u===n.db.LINETYPE.SOLID_POINT||u===n.db.LINETYPE.DOTTED_POINT)&&g.attr("marker-end","url("+y+"#filled-head)"),(u===n.db.LINETYPE.SOLID_CROSS||u===n.db.LINETYPE.DOTTED_CROSS)&&g.attr("marker-end","url("+y+"#crosshead)"),(f||Me.showSequenceNumbers)&&((u===n.db.LINETYPE.BIDIRECTIONAL_SOLID||u===n.db.LINETYPE.BIDIRECTIONAL_DOTTED)&&(ii&&(i=h.height),h.width+l.x>a&&(a=h.width+l.x)}return{maxHeight:i,maxWidth:a}},"drawActorsPopup"),Uye=o(function(t){Rn(Me,t),t.fontFamily&&(Me.actorFontFamily=Me.noteFontFamily=Me.messageFontFamily=t.fontFamily),t.fontSize&&(Me.actorFontSize=Me.noteFontSize=Me.messageFontSize=t.fontSize),t.fontWeight&&(Me.actorFontWeight=Me.noteFontWeight=Me.messageFontWeight=t.fontWeight)},"setConf"),rC=o(function(t){return ot.activations.filter(function(e){return e.actor===t})},"actorActivations"),Gye=o(function(t,e){let r=e.get(t),n=rC(t),i=n.reduce(function(s,l){return tt.getMin(s,l.startx)},r.x+r.width/2-1),a=n.reduce(function(s,l){return tt.getMax(s,l.stopx)},r.x+r.width/2+1);return[i,a]},"activationBounds");o(ru,"adjustLoopHeightForWrap");o(SJe,"adjustCreatedDestroyedData");CJe=o(async function(t,e,r,n){let{securityLevel:i,sequence:a}=ge();Me=a;let s;i==="sandbox"&&(s=qe("#i"+e));let l=i==="sandbox"?qe(s.nodes()[0].contentDocument.body):qe("body"),u=i==="sandbox"?s.nodes()[0].contentDocument:document;ot.init(),X.debug(n.db);let h=i==="sandbox"?l.select(`[id="${e}"]`):qe(`[id="${e}"]`),f=n.db.getActors(),d=n.db.getCreatedActors(),p=n.db.getDestroyedActors(),m=n.db.getBoxes(),g=n.db.getActorKeys(),y=n.db.getMessages(),v=n.db.getDiagramTitle(),x=n.db.hasAtLeastOneBox(),b=n.db.hasAtLeastOneBoxWithTitle(),T=await AJe(f,y,n);if(Me.height=await DJe(f,T,m),mi.insertComputerIcon(h),mi.insertDatabaseIcon(h),mi.insertClockIcon(h),x&&(ot.bumpVerticalPos(Me.boxMargin),b&&ot.bumpVerticalPos(m[0].textMaxHeight)),Me.hideUnusedParticipants===!0){let B=new Set;y.forEach(F=>{B.add(F.from),B.add(F.to)}),g=g.filter(F=>B.has(F))}EJe(h,f,d,g,0,y,!1);let S=await NJe(y,f,T,n);mi.insertArrowHead(h),mi.insertArrowCrossHead(h),mi.insertArrowFilledHead(h),mi.insertSequenceNumber(h);function w(B,F){let G=ot.endActivation(B);G.starty+18>F&&(G.starty=F-6,F+=12),mi.drawActivation(h,G,F,Me,rC(B.from).length),ot.insert(G.startx,F-10,G.stopx,F)}o(w,"activeEnd");let k=1,A=1,C=[],R=[],I=0;for(let B of y){let F,G,$;switch(B.type){case n.db.LINETYPE.NOTE:ot.resetVerticalPos(),G=B.noteModel,await TJe(h,G);break;case n.db.LINETYPE.ACTIVE_START:ot.newActivation(B,h,f);break;case n.db.LINETYPE.ACTIVE_END:w(B,ot.getVerticalPos());break;case n.db.LINETYPE.LOOP_START:ru(S,B,Me.boxMargin,Me.boxMargin+Me.boxTextMargin,U=>ot.newLoop(U));break;case n.db.LINETYPE.LOOP_END:F=ot.endLoop(),await mi.drawLoop(h,F,"loop",Me),ot.bumpVerticalPos(F.stopy-ot.getVerticalPos()),ot.models.addLoop(F);break;case n.db.LINETYPE.RECT_START:ru(S,B,Me.boxMargin,Me.boxMargin,U=>ot.newLoop(void 0,U.message));break;case n.db.LINETYPE.RECT_END:F=ot.endLoop(),R.push(F),ot.models.addLoop(F),ot.bumpVerticalPos(F.stopy-ot.getVerticalPos());break;case n.db.LINETYPE.OPT_START:ru(S,B,Me.boxMargin,Me.boxMargin+Me.boxTextMargin,U=>ot.newLoop(U));break;case n.db.LINETYPE.OPT_END:F=ot.endLoop(),await mi.drawLoop(h,F,"opt",Me),ot.bumpVerticalPos(F.stopy-ot.getVerticalPos()),ot.models.addLoop(F);break;case n.db.LINETYPE.ALT_START:ru(S,B,Me.boxMargin,Me.boxMargin+Me.boxTextMargin,U=>ot.newLoop(U));break;case n.db.LINETYPE.ALT_ELSE:ru(S,B,Me.boxMargin+Me.boxTextMargin,Me.boxMargin,U=>ot.addSectionToLoop(U));break;case n.db.LINETYPE.ALT_END:F=ot.endLoop(),await mi.drawLoop(h,F,"alt",Me),ot.bumpVerticalPos(F.stopy-ot.getVerticalPos()),ot.models.addLoop(F);break;case n.db.LINETYPE.PAR_START:case n.db.LINETYPE.PAR_OVER_START:ru(S,B,Me.boxMargin,Me.boxMargin+Me.boxTextMargin,U=>ot.newLoop(U)),ot.saveVerticalPos();break;case n.db.LINETYPE.PAR_AND:ru(S,B,Me.boxMargin+Me.boxTextMargin,Me.boxMargin,U=>ot.addSectionToLoop(U));break;case n.db.LINETYPE.PAR_END:F=ot.endLoop(),await mi.drawLoop(h,F,"par",Me),ot.bumpVerticalPos(F.stopy-ot.getVerticalPos()),ot.models.addLoop(F);break;case n.db.LINETYPE.AUTONUMBER:k=B.message.start||k,A=B.message.step||A,B.message.visible?n.db.enableSequenceNumbers():n.db.disableSequenceNumbers();break;case n.db.LINETYPE.CRITICAL_START:ru(S,B,Me.boxMargin,Me.boxMargin+Me.boxTextMargin,U=>ot.newLoop(U));break;case n.db.LINETYPE.CRITICAL_OPTION:ru(S,B,Me.boxMargin+Me.boxTextMargin,Me.boxMargin,U=>ot.addSectionToLoop(U));break;case n.db.LINETYPE.CRITICAL_END:F=ot.endLoop(),await mi.drawLoop(h,F,"critical",Me),ot.bumpVerticalPos(F.stopy-ot.getVerticalPos()),ot.models.addLoop(F);break;case n.db.LINETYPE.BREAK_START:ru(S,B,Me.boxMargin,Me.boxMargin+Me.boxTextMargin,U=>ot.newLoop(U));break;case n.db.LINETYPE.BREAK_END:F=ot.endLoop(),await mi.drawLoop(h,F,"break",Me),ot.bumpVerticalPos(F.stopy-ot.getVerticalPos()),ot.models.addLoop(F);break;default:try{$=B.msgModel,$.starty=ot.getVerticalPos(),$.sequenceIndex=k,$.sequenceVisible=n.db.showSequenceNumbers();let U=await wJe(h,$);SJe(B,$,U,I,f,d,p),C.push({messageModel:$,lineStartY:U}),ot.models.addMessage($)}catch(U){X.error("error while drawing message",U)}}[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)&&(k=k+A),I++}X.debug("createdActors",d),X.debug("destroyedActors",p),await i$(h,f,g,!1);for(let B of C)await kJe(h,B.messageModel,B.lineStartY,n);Me.mirrorActors&&await i$(h,f,g,!0),R.forEach(B=>mi.drawBackgroundRect(h,B)),r$(h,f,g,Me);for(let B of ot.models.boxes){B.height=ot.getVerticalPos()-B.y,ot.insert(B.x,B.y,B.x+B.width,B.height);let F=Me.boxMargin*2;B.startx=B.x-F,B.starty=B.y-F*.25,B.stopx=B.startx+B.width+2*F,B.stopy=B.starty+B.height+F*.75,B.stroke="rgb(0,0,0, 0.5)",mi.drawBox(h,B,Me)}x&&ot.bumpVerticalPos(Me.boxMargin);let L=Vye(h,f,g,u),{bounds:E}=ot.getBounds();E.startx===void 0&&(E.startx=0),E.starty===void 0&&(E.starty=0),E.stopx===void 0&&(E.stopx=0),E.stopy===void 0&&(E.stopy=0);let D=E.stopy-E.starty;D2,d=o(y=>l?-y:y,"adjustValue");t.from===t.to?h=u:(t.activate&&!f&&(h+=d(Me.activationWidth/2-1)),[r.db.LINETYPE.SOLID_OPEN,r.db.LINETYPE.DOTTED_OPEN].includes(t.type)||(h+=d(3)),[r.db.LINETYPE.BIDIRECTIONAL_SOLID,r.db.LINETYPE.BIDIRECTIONAL_DOTTED].includes(t.type)&&(u-=d(3)));let p=[n,i,a,s],m=Math.abs(u-h);t.wrap&&t.message&&(t.message=qt.wrapLabel(t.message,tt.getMax(m+2*Me.wrapPadding,Me.width),l0(Me)));let g=qt.calculateTextDimensions(t.message,l0(Me));return{width:tt.getMax(t.wrap?0:g.width+2*Me.wrapPadding,m+2*Me.wrapPadding,Me.width),height:0,startx:u,stopx:h,starty:0,stopy:0,message:t.message,type:t.type,wrap:t.wrap,fromBounds:Math.min.apply(null,p),toBounds:Math.max.apply(null,p)}},"buildMessageModel"),NJe=o(async function(t,e,r,n){let i={},a=[],s,l,u;for(let h of t){switch(h.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:h.id,msg:h.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:h.message&&(s=a.pop(),i[s.id]=s,i[h.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 d=e.get(h.from?h.from:h.to.actor),p=rC(h.from?h.from:h.to.actor).length,m=d.x+d.width/2+(p-1)*Me.activationWidth/2,g={startx:m,stopx:m+Me.activationWidth,actor:h.from,enabled:!0};ot.activations.push(g)}break;case n.db.LINETYPE.ACTIVE_END:{let d=ot.activations.map(p=>p.actor).lastIndexOf(h.from);ot.activations.splice(d,1).splice(0,1)}break}h.placement!==void 0?(l=await LJe(h,e,n),h.noteModel=l,a.forEach(d=>{s=d,s.from=tt.getMin(s.from,l.startx),s.to=tt.getMax(s.to,l.startx+l.width),s.width=tt.getMax(s.width,Math.abs(s.from-s.to))-Me.labelBoxWidth})):(u=RJe(h,e,n),h.msgModel=u,u.startx&&u.stopx&&a.length>0&&a.forEach(d=>{if(s=d,u.startx===u.stopx){let p=e.get(h.from),m=e.get(h.to);s.from=tt.getMin(p.x-u.width/2,p.x-p.width/2,s.from),s.to=tt.getMax(m.x+u.width/2,m.x+p.width/2,s.to),s.width=tt.getMax(s.width,Math.abs(s.to-s.from))-Me.labelBoxWidth}else s.from=tt.getMin(u.startx,s.from),s.to=tt.getMax(u.stopx,s.to),s.width=tt.getMax(s.width,u.width)-Me.labelBoxWidth}))}return ot.activations=[],X.debug("Loop type widths:",i),i},"calculateLoopBounds"),Hye={bounds:ot,drawActors:i$,drawActorsPopup:Vye,setConf:Uye,draw:CJe}});var Wye={};dr(Wye,{diagram:()=>MJe});var MJe,Yye=N(()=>{"use strict";Iye();e$();Pye();Xt();qye();MJe={parser:Mye,get db(){return new J6},renderer:Hye,styles:Oye,init:o(t=>{t.sequence||(t.sequence={}),t.wrap&&(t.sequence.wrap=t.wrap,nv({sequence:{wrap:t.wrap}}))},"init")}});var a$,nC,s$=N(()=>{"use strict";a$=(function(){var t=o(function(Ie,Ne,Ce,Fe){for(Ce=Ce||{},Fe=Ie.length;Fe--;Ce[Ie[Fe]]=Ne);return Ce},"o"),e=[1,18],r=[1,19],n=[1,20],i=[1,41],a=[1,42],s=[1,26],l=[1,24],u=[1,25],h=[1,32],f=[1,33],d=[1,34],p=[1,45],m=[1,35],g=[1,36],y=[1,37],v=[1,38],x=[1,27],b=[1,28],T=[1,29],S=[1,30],w=[1,31],k=[1,44],A=[1,46],C=[1,43],R=[1,47],I=[1,9],L=[1,8,9],E=[1,58],D=[1,59],_=[1,60],O=[1,61],M=[1,62],P=[1,63],B=[1,64],F=[1,8,9,41],G=[1,76],$=[1,8,9,12,13,22,39,41,44,68,69,70,71,72,73,74,79,81],U=[1,8,9,12,13,18,20,22,39,41,44,50,60,68,69,70,71,72,73,74,79,81,86,100,102,103],j=[13,60,86,100,102,103],te=[13,60,73,74,86,100,102,103],Y=[13,60,68,69,70,71,72,86,100,102,103],oe=[1,100],J=[1,117],ue=[1,113],re=[1,109],ee=[1,115],Z=[1,110],K=[1,111],ae=[1,112],Q=[1,114],de=[1,116],ne=[22,48,60,61,82,86,87,88,89,90],Te=[1,8,9,39,41,44],q=[1,8,9,22],Ve=[1,145],pe=[1,8,9,61],Be=[1,8,9,22,48,60,61,82,86,87,88,89,90],Ye={trace:o(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,classLiteralName:17,DOT:18,className: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,emptyBody:47,SPACE:48,ANNOTATION_START:49,ANNOTATION_END:50,MEMBER:51,SEPARATOR:52,relation:53,NOTE_FOR:54,noteText:55,NOTE:56,CLASSDEF:57,classList:58,stylesOpt:59,ALPHA:60,COMMA:61,direction_tb:62,direction_bt:63,direction_rl:64,direction_lr:65,relationType:66,lineType:67,AGGREGATION:68,EXTENSION:69,COMPOSITION:70,DEPENDENCY:71,LOLLIPOP:72,LINE:73,DOTTED_LINE:74,CALLBACK:75,LINK:76,LINK_TARGET:77,CLICK:78,CALLBACK_NAME:79,CALLBACK_ARGS:80,HREF:81,STYLE:82,CSSCLASS:83,style:84,styleComponent:85,NUM:86,COLON:87,UNIT:88,BRKT:89,PCT:90,commentToken:91,textToken:92,graphCodeTokens:93,textNoTagsToken:94,TAGSTART:95,TAGEND:96,"==":97,"--":98,DEFAULT:99,MINUS:100,keywords:101,UNICODE_TEXT:102,BQUOTE_STR:103,$accept:0,$end:1},terminals_:{2:"error",7:"CLASS_DIAGRAM",8:"NEWLINE",9:"EOF",12:"SQS",13:"STR",14:"SQE",18:"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",48:"SPACE",49:"ANNOTATION_START",50:"ANNOTATION_END",51:"MEMBER",52:"SEPARATOR",54:"NOTE_FOR",56:"NOTE",57:"CLASSDEF",60:"ALPHA",61:"COMMA",62:"direction_tb",63:"direction_bt",64:"direction_rl",65:"direction_lr",68:"AGGREGATION",69:"EXTENSION",70:"COMPOSITION",71:"DEPENDENCY",72:"LOLLIPOP",73:"LINE",74:"DOTTED_LINE",75:"CALLBACK",76:"LINK",77:"LINK_TARGET",78:"CLICK",79:"CALLBACK_NAME",80:"CALLBACK_ARGS",81:"HREF",82:"STYLE",83:"CSSCLASS",86:"NUM",87:"COLON",88:"UNIT",89:"BRKT",90:"PCT",93:"graphCodeTokens",95:"TAGSTART",96:"TAGEND",97:"==",98:"--",99:"DEFAULT",100:"MINUS",101:"keywords",102:"UNICODE_TEXT",103:"BQUOTE_STR"},productions_:[0,[3,1],[3,1],[4,1],[6,4],[5,1],[5,2],[5,3],[11,3],[15,1],[15,1],[15,3],[15,2],[19,1],[19,3],[19,1],[19,2],[19,2],[19,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,3],[24,6],[43,2],[43,3],[47,0],[47,2],[47,2],[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],[58,1],[58,3],[32,1],[32,1],[32,1],[32,1],[53,3],[53,2],[53,2],[53,1],[66,1],[66,1],[66,1],[66,1],[66,1],[67,1],[67,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],[59,1],[59,3],[84,1],[84,2],[85,1],[85,1],[85,1],[85,1],[85,1],[85,1],[85,1],[85,1],[85,1],[91,1],[91,1],[92,1],[92,1],[92,1],[92,1],[92,1],[92,1],[92,1],[94,1],[94,1],[94,1],[94,1],[16,1],[16,1],[16,1],[16,1],[17,1],[55,1]],performAction:o(function(Ne,Ce,Fe,fe,xe,W,he){var z=W.length-1;switch(xe){case 8:this.$=W[z-1];break;case 9:case 10:case 13:case 15:this.$=W[z];break;case 11:case 14:this.$=W[z-2]+"."+W[z];break;case 12:case 16:this.$=W[z-1]+W[z];break;case 17:case 18:this.$=W[z-1]+"~"+W[z]+"~";break;case 19:fe.addRelation(W[z]);break;case 20:W[z-1].title=fe.cleanupLabel(W[z]),fe.addRelation(W[z-1]);break;case 31:this.$=W[z].trim(),fe.setAccTitle(this.$);break;case 32:case 33:this.$=W[z].trim(),fe.setAccDescription(this.$);break;case 34:fe.addClassesToNamespace(W[z-3],W[z-1]);break;case 35:fe.addClassesToNamespace(W[z-4],W[z-1]);break;case 36:this.$=W[z],fe.addNamespace(W[z]);break;case 37:this.$=[W[z]];break;case 38:this.$=[W[z-1]];break;case 39:W[z].unshift(W[z-2]),this.$=W[z];break;case 41:fe.setCssClass(W[z-2],W[z]);break;case 42:fe.addMembers(W[z-3],W[z-1]);break;case 44:fe.setCssClass(W[z-5],W[z-3]),fe.addMembers(W[z-5],W[z-1]);break;case 45:this.$=W[z],fe.addClass(W[z]);break;case 46:this.$=W[z-1],fe.addClass(W[z-1]),fe.setClassLabel(W[z-1],W[z]);break;case 50:fe.addAnnotation(W[z],W[z-2]);break;case 51:case 64:this.$=[W[z]];break;case 52:W[z].push(W[z-1]),this.$=W[z];break;case 53:break;case 54:fe.addMember(W[z-1],fe.cleanupLabel(W[z]));break;case 55:break;case 56:break;case 57:this.$={id1:W[z-2],id2:W[z],relation:W[z-1],relationTitle1:"none",relationTitle2:"none"};break;case 58:this.$={id1:W[z-3],id2:W[z],relation:W[z-1],relationTitle1:W[z-2],relationTitle2:"none"};break;case 59:this.$={id1:W[z-3],id2:W[z],relation:W[z-2],relationTitle1:"none",relationTitle2:W[z-1]};break;case 60:this.$={id1:W[z-4],id2:W[z],relation:W[z-2],relationTitle1:W[z-3],relationTitle2:W[z-1]};break;case 61:fe.addNote(W[z],W[z-1]);break;case 62:fe.addNote(W[z]);break;case 63:this.$=W[z-2],fe.defineClass(W[z-1],W[z]);break;case 65:this.$=W[z-2].concat([W[z]]);break;case 66:fe.setDirection("TB");break;case 67:fe.setDirection("BT");break;case 68:fe.setDirection("RL");break;case 69:fe.setDirection("LR");break;case 70:this.$={type1:W[z-2],type2:W[z],lineType:W[z-1]};break;case 71:this.$={type1:"none",type2:W[z],lineType:W[z-1]};break;case 72:this.$={type1:W[z-1],type2:"none",lineType:W[z]};break;case 73:this.$={type1:"none",type2:"none",lineType:W[z]};break;case 74:this.$=fe.relationType.AGGREGATION;break;case 75:this.$=fe.relationType.EXTENSION;break;case 76:this.$=fe.relationType.COMPOSITION;break;case 77:this.$=fe.relationType.DEPENDENCY;break;case 78:this.$=fe.relationType.LOLLIPOP;break;case 79:this.$=fe.lineType.LINE;break;case 80:this.$=fe.lineType.DOTTED_LINE;break;case 81:case 87:this.$=W[z-2],fe.setClickEvent(W[z-1],W[z]);break;case 82:case 88:this.$=W[z-3],fe.setClickEvent(W[z-2],W[z-1]),fe.setTooltip(W[z-2],W[z]);break;case 83:this.$=W[z-2],fe.setLink(W[z-1],W[z]);break;case 84:this.$=W[z-3],fe.setLink(W[z-2],W[z-1],W[z]);break;case 85:this.$=W[z-3],fe.setLink(W[z-2],W[z-1]),fe.setTooltip(W[z-2],W[z]);break;case 86:this.$=W[z-4],fe.setLink(W[z-3],W[z-2],W[z]),fe.setTooltip(W[z-3],W[z-1]);break;case 89:this.$=W[z-3],fe.setClickEvent(W[z-2],W[z-1],W[z]);break;case 90:this.$=W[z-4],fe.setClickEvent(W[z-3],W[z-2],W[z-1]),fe.setTooltip(W[z-3],W[z]);break;case 91:this.$=W[z-3],fe.setLink(W[z-2],W[z]);break;case 92:this.$=W[z-4],fe.setLink(W[z-3],W[z-1],W[z]);break;case 93:this.$=W[z-4],fe.setLink(W[z-3],W[z-1]),fe.setTooltip(W[z-3],W[z]);break;case 94:this.$=W[z-5],fe.setLink(W[z-4],W[z-2],W[z]),fe.setTooltip(W[z-4],W[z-1]);break;case 95:this.$=W[z-2],fe.setCssStyle(W[z-1],W[z]);break;case 96:fe.setCssClass(W[z-1],W[z]);break;case 97:this.$=[W[z]];break;case 98:W[z-2].push(W[z]),this.$=W[z-2];break;case 100:this.$=W[z-1]+W[z];break}},"anonymous"),table:[{3:1,4:2,5:3,6:4,7:[1,6],10:5,16:39,17:40,19:21,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,49:s,51:l,52:u,54:h,56:f,57:d,60:p,62:m,63:g,64:y,65:v,75:x,76:b,78:T,82:S,83:w,86:k,100:A,102:C,103:R},{1:[3]},{1:[2,1]},{1:[2,2]},{1:[2,3]},t(I,[2,5],{8:[1,48]}),{8:[1,49]},t(L,[2,19],{22:[1,50]}),t(L,[2,21]),t(L,[2,22]),t(L,[2,23]),t(L,[2,24]),t(L,[2,25]),t(L,[2,26]),t(L,[2,27]),t(L,[2,28]),t(L,[2,29]),t(L,[2,30]),{34:[1,51]},{36:[1,52]},t(L,[2,33]),t(L,[2,53],{53:53,66:56,67:57,13:[1,54],22:[1,55],68:E,69:D,70:_,71:O,72:M,73:P,74:B}),{39:[1,65]},t(F,[2,40],{39:[1,67],44:[1,66]}),t(L,[2,55]),t(L,[2,56]),{16:68,60:p,86:k,100:A,102:C},{16:39,17:40,19:69,60:p,86:k,100:A,102:C,103:R},{16:39,17:40,19:70,60:p,86:k,100:A,102:C,103:R},{16:39,17:40,19:71,60:p,86:k,100:A,102:C,103:R},{60:[1,72]},{13:[1,73]},{16:39,17:40,19:74,60:p,86:k,100:A,102:C,103:R},{13:G,55:75},{58:77,60:[1,78]},t(L,[2,66]),t(L,[2,67]),t(L,[2,68]),t(L,[2,69]),t($,[2,13],{16:39,17:40,19:80,18:[1,79],20:[1,81],60:p,86:k,100:A,102:C,103:R}),t($,[2,15],{20:[1,82]}),{15:83,16:84,17:85,60:p,86:k,100:A,102:C,103:R},{16:39,17:40,19:86,60:p,86:k,100:A,102:C,103:R},t(U,[2,123]),t(U,[2,124]),t(U,[2,125]),t(U,[2,126]),t([1,8,9,12,13,20,22,39,41,44,68,69,70,71,72,73,74,79,81],[2,127]),t(I,[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,19:21,38:22,43:23,16:39,17:40,5:87,33:e,35:r,37:n,42:i,46:a,49:s,51:l,52:u,54:h,56:f,57:d,60:p,62:m,63:g,64:y,65:v,75:x,76:b,78:T,82:S,83:w,86:k,100:A,102:C,103:R}),{5:88,10:5,16:39,17:40,19:21,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,49:s,51:l,52:u,54:h,56:f,57:d,60:p,62:m,63:g,64:y,65:v,75:x,76:b,78:T,82:S,83:w,86:k,100:A,102:C,103:R},t(L,[2,20]),t(L,[2,31]),t(L,[2,32]),{13:[1,90],16:39,17:40,19:89,60:p,86:k,100:A,102:C,103:R},{53:91,66:56,67:57,68:E,69:D,70:_,71:O,72:M,73:P,74:B},t(L,[2,54]),{67:92,73:P,74:B},t(j,[2,73],{66:93,68:E,69:D,70:_,71:O,72:M}),t(te,[2,74]),t(te,[2,75]),t(te,[2,76]),t(te,[2,77]),t(te,[2,78]),t(Y,[2,79]),t(Y,[2,80]),{8:[1,95],24:96,40:94,43:23,46:a},{16:97,60:p,86:k,100:A,102:C},{41:[1,99],45:98,51:oe},{50:[1,101]},{13:[1,102]},{13:[1,103]},{79:[1,104],81:[1,105]},{22:J,48:ue,59:106,60:re,82:ee,84:107,85:108,86:Z,87:K,88:ae,89:Q,90:de},{60:[1,118]},{13:G,55:119},t(L,[2,62]),t(L,[2,128]),{22:J,48:ue,59:120,60:re,61:[1,121],82:ee,84:107,85:108,86:Z,87:K,88:ae,89:Q,90:de},t(ne,[2,64]),{16:39,17:40,19:122,60:p,86:k,100:A,102:C,103:R},t($,[2,16]),t($,[2,17]),t($,[2,18]),{39:[2,36]},{15:124,16:84,17:85,18:[1,123],39:[2,9],60:p,86:k,100:A,102:C,103:R},{39:[2,10]},t(Te,[2,45],{11:125,12:[1,126]}),t(I,[2,7]),{9:[1,127]},t(q,[2,57]),{16:39,17:40,19:128,60:p,86:k,100:A,102:C,103:R},{13:[1,130],16:39,17:40,19:129,60:p,86:k,100:A,102:C,103:R},t(j,[2,72],{66:131,68:E,69:D,70:_,71:O,72:M}),t(j,[2,71]),{41:[1,132]},{24:96,40:133,43:23,46:a},{8:[1,134],41:[2,37]},t(F,[2,41],{39:[1,135]}),{41:[1,136]},t(F,[2,43]),{41:[2,51],45:137,51:oe},{16:39,17:40,19:138,60:p,86:k,100:A,102:C,103:R},t(L,[2,81],{13:[1,139]}),t(L,[2,83],{13:[1,141],77:[1,140]}),t(L,[2,87],{13:[1,142],80:[1,143]}),{13:[1,144]},t(L,[2,95],{61:Ve}),t(pe,[2,97],{85:146,22:J,48:ue,60:re,82:ee,86:Z,87:K,88:ae,89:Q,90:de}),t(Be,[2,99]),t(Be,[2,101]),t(Be,[2,102]),t(Be,[2,103]),t(Be,[2,104]),t(Be,[2,105]),t(Be,[2,106]),t(Be,[2,107]),t(Be,[2,108]),t(Be,[2,109]),t(L,[2,96]),t(L,[2,61]),t(L,[2,63],{61:Ve}),{60:[1,147]},t($,[2,14]),{15:148,16:84,17:85,60:p,86:k,100:A,102:C,103:R},{39:[2,12]},t(Te,[2,46]),{13:[1,149]},{1:[2,4]},t(q,[2,59]),t(q,[2,58]),{16:39,17:40,19:150,60:p,86:k,100:A,102:C,103:R},t(j,[2,70]),t(L,[2,34]),{41:[1,151]},{24:96,40:152,41:[2,38],43:23,46:a},{45:153,51:oe},t(F,[2,42]),{41:[2,52]},t(L,[2,50]),t(L,[2,82]),t(L,[2,84]),t(L,[2,85],{77:[1,154]}),t(L,[2,88]),t(L,[2,89],{13:[1,155]}),t(L,[2,91],{13:[1,157],77:[1,156]}),{22:J,48:ue,60:re,82:ee,84:158,85:108,86:Z,87:K,88:ae,89:Q,90:de},t(Be,[2,100]),t(ne,[2,65]),{39:[2,11]},{14:[1,159]},t(q,[2,60]),t(L,[2,35]),{41:[2,39]},{41:[1,160]},t(L,[2,86]),t(L,[2,90]),t(L,[2,92]),t(L,[2,93],{77:[1,161]}),t(pe,[2,98],{85:146,22:J,48:ue,60:re,82:ee,86:Z,87:K,88:ae,89:Q,90:de}),t(Te,[2,8]),t(F,[2,44]),t(L,[2,94])],defaultActions:{2:[2,1],3:[2,2],4:[2,3],83:[2,36],85:[2,10],124:[2,12],127:[2,4],137:[2,52],148:[2,11],152:[2,39]},parseError:o(function(Ne,Ce){if(Ce.recoverable)this.trace(Ne);else{var Fe=new Error(Ne);throw Fe.hash=Ce,Fe}},"parseError"),parse:o(function(Ne){var Ce=this,Fe=[0],fe=[],xe=[null],W=[],he=this.table,z="",se=0,le=0,ke=0,ve=2,ye=1,Re=W.slice.call(arguments,1),_e=Object.create(this.lexer),ze={yy:{}};for(var Ke in this.yy)Object.prototype.hasOwnProperty.call(this.yy,Ke)&&(ze.yy[Ke]=this.yy[Ke]);_e.setInput(Ne,ze.yy),ze.yy.lexer=_e,ze.yy.parser=this,typeof _e.yylloc>"u"&&(_e.yylloc={});var xt=_e.yylloc;W.push(xt);var We=_e.options&&_e.options.ranges;typeof ze.yy.parseError=="function"?this.parseError=ze.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function Oe(_t){Fe.length=Fe.length-2*_t,xe.length=xe.length-_t,W.length=W.length-_t}o(Oe,"popStack");function et(){var _t;return _t=fe.pop()||_e.lex()||ye,typeof _t!="number"&&(_t instanceof Array&&(fe=_t,_t=fe.pop()),_t=Ce.symbols_[_t]||_t),_t}o(et,"lex");for(var Ue,lt,Gt,vt,Lt,dt,nt={},bt,wt,yt,ft;;){if(Gt=Fe[Fe.length-1],this.defaultActions[Gt]?vt=this.defaultActions[Gt]:((Ue===null||typeof Ue>"u")&&(Ue=et()),vt=he[Gt]&&he[Gt][Ue]),typeof vt>"u"||!vt.length||!vt[0]){var Ur="";ft=[];for(bt in he[Gt])this.terminals_[bt]&&bt>ve&&ft.push("'"+this.terminals_[bt]+"'");_e.showPosition?Ur="Parse error on line "+(se+1)+`: -`+_e.showPosition()+` -Expecting `+ft.join(", ")+", got '"+(this.terminals_[Ue]||Ue)+"'":Ur="Parse error on line "+(se+1)+": Unexpected "+(Ue==ye?"end of input":"'"+(this.terminals_[Ue]||Ue)+"'"),this.parseError(Ur,{text:_e.match,token:this.terminals_[Ue]||Ue,line:_e.yylineno,loc:xt,expected:ft})}if(vt[0]instanceof Array&&vt.length>1)throw new Error("Parse Error: multiple actions possible at state: "+Gt+", token: "+Ue);switch(vt[0]){case 1:Fe.push(Ue),xe.push(_e.yytext),W.push(_e.yylloc),Fe.push(vt[1]),Ue=null,lt?(Ue=lt,lt=null):(le=_e.yyleng,z=_e.yytext,se=_e.yylineno,xt=_e.yylloc,ke>0&&ke--);break;case 2:if(wt=this.productions_[vt[1]][1],nt.$=xe[xe.length-wt],nt._$={first_line:W[W.length-(wt||1)].first_line,last_line:W[W.length-1].last_line,first_column:W[W.length-(wt||1)].first_column,last_column:W[W.length-1].last_column},We&&(nt._$.range=[W[W.length-(wt||1)].range[0],W[W.length-1].range[1]]),dt=this.performAction.apply(nt,[z,le,se,ze.yy,vt[1],xe,W].concat(Re)),typeof dt<"u")return dt;wt&&(Fe=Fe.slice(0,-1*wt*2),xe=xe.slice(0,-1*wt),W=W.slice(0,-1*wt)),Fe.push(this.productions_[vt[1]][0]),xe.push(nt.$),W.push(nt._$),yt=he[Fe[Fe.length-2]][Fe[Fe.length-1]],Fe.push(yt);break;case 3:return!0}}return!0},"parse")},He=(function(){var Ie={EOF:1,parseError:o(function(Ce,Fe){if(this.yy.parser)this.yy.parser.parseError(Ce,Fe);else throw new Error(Ce)},"parseError"),setInput:o(function(Ne,Ce){return this.yy=Ce||this.yy||{},this._input=Ne,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:o(function(){var Ne=this._input[0];this.yytext+=Ne,this.yyleng++,this.offset++,this.match+=Ne,this.matched+=Ne;var Ce=Ne.match(/(?:\r\n?|\n).*/g);return Ce?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),Ne},"input"),unput:o(function(Ne){var Ce=Ne.length,Fe=Ne.split(/(?:\r\n?|\n)/g);this._input=Ne+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-Ce),this.offset-=Ce;var fe=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),Fe.length-1&&(this.yylineno-=Fe.length-1);var xe=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:Fe?(Fe.length===fe.length?this.yylloc.first_column:0)+fe[fe.length-Fe.length].length-Fe[0].length:this.yylloc.first_column-Ce},this.options.ranges&&(this.yylloc.range=[xe[0],xe[0]+this.yyleng-Ce]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(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:o(function(Ne){this.unput(this.match.slice(Ne))},"less"),pastInput:o(function(){var Ne=this.matched.substr(0,this.matched.length-this.match.length);return(Ne.length>20?"...":"")+Ne.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var Ne=this.match;return Ne.length<20&&(Ne+=this._input.substr(0,20-Ne.length)),(Ne.substr(0,20)+(Ne.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var Ne=this.pastInput(),Ce=new Array(Ne.length+1).join("-");return Ne+this.upcomingInput()+` -`+Ce+"^"},"showPosition"),test_match:o(function(Ne,Ce){var Fe,fe,xe;if(this.options.backtrack_lexer&&(xe={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&&(xe.yylloc.range=this.yylloc.range.slice(0))),fe=Ne[0].match(/(?:\r\n?|\n).*/g),fe&&(this.yylineno+=fe.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:fe?fe[fe.length-1].length-fe[fe.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+Ne[0].length},this.yytext+=Ne[0],this.match+=Ne[0],this.matches=Ne,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(Ne[0].length),this.matched+=Ne[0],Fe=this.performAction.call(this,this.yy,this,Ce,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),Fe)return Fe;if(this._backtrack){for(var W in xe)this[W]=xe[W];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var Ne,Ce,Fe,fe;this._more||(this.yytext="",this.match="");for(var xe=this._currentRules(),W=0;WCe[0].length)){if(Ce=Fe,fe=W,this.options.backtrack_lexer){if(Ne=this.test_match(Fe,xe[W]),Ne!==!1)return Ne;if(this._backtrack){Ce=!1;continue}else return!1}else if(!this.options.flex)break}return Ce?(Ne=this.test_match(Ce,xe[fe]),Ne!==!1?Ne:!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:o(function(){var Ce=this.next();return Ce||this.lex()},"lex"),begin:o(function(Ce){this.conditionStack.push(Ce)},"begin"),popState:o(function(){var Ce=this.conditionStack.length-1;return Ce>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(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:o(function(Ce){return Ce=this.conditionStack.length-1-Math.abs(Ce||0),Ce>=0?this.conditionStack[Ce]:"INITIAL"},"topState"),pushState:o(function(Ce){this.begin(Ce)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{},performAction:o(function(Ce,Fe,fe,xe){var W=xe;switch(fe){case 0:return 62;case 1:return 63;case 2:return 64;case 3:return 65;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 79;case 22:this.popState();break;case 23:return 80;case 24:this.popState();break;case 25:return"STR";case 26:this.begin("string");break;case 27:return 82;case 28:return 57;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 83;case 50:return 75;case 51:return 76;case 52:return 78;case 53:return 54;case 54:return 56;case 55:return 49;case 56:return 50;case 57:return 81;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 77;case 65:return 77;case 66:return 77;case 67:return 77;case 68:return 69;case 69:return 69;case 70:return 71;case 71:return 71;case 72:return 70;case 73:return 68;case 74:return 72;case 75:return 73;case 76:return 74;case 77:return 22;case 78:return 44;case 79:return 100;case 80:return 18;case 81:return"PLUS";case 82:return 87;case 83:return 61;case 84:return 89;case 85:return 89;case 86:return 90;case 87:return"EQUALS";case 88:return"EQUALS";case 89:return 60;case 90:return 12;case 91:return 14;case 92:return"PUNCTUATION";case 93:return 86;case 94:return 102;case 95:return 48;case 96:return 48;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 Ie})();Ye.lexer=He;function Le(){this.yy={}}return o(Le,"Parser"),Le.prototype=Ye,Ye.Parser=Le,new Le})();a$.parser=a$;nC=a$});var Kye,k4,Qye=N(()=>{"use strict";Xt();gr();Kye=["#","+","~","-",""],k4=class{static{o(this,"ClassMember")}constructor(e,r){this.memberType=r,this.visibility="",this.classifier="",this.text="";let n=sr(e,ge());this.parseMember(n)}getDisplayDetails(){let e=this.visibility+rc(this.id);this.memberType==="method"&&(e+=`(${rc(this.parameters.trim())})`,this.returnType&&(e+=" : "+rc(this.returnType))),e=e.trim();let r=this.parseClassifier();return{displayText:e,cssStyle:r}}parseMember(e){let r="";if(this.memberType==="method"){let a=/([#+~-])?(.+)\((.*)\)([\s$*])?(.*)([$*])?/.exec(e);if(a){let s=a[1]?a[1].trim():"";if(Kye.includes(s)&&(this.visibility=s),this.id=a[2],this.parameters=a[3]?a[3].trim():"",r=a[4]?a[4].trim():"",this.returnType=a[5]?a[5].trim():"",r===""){let l=this.returnType.substring(this.returnType.length-1);/[$*]/.exec(l)&&(r=l,this.returnType=this.returnType.substring(0,this.returnType.length-1))}}}else{let i=e.length,a=e.substring(0,1),s=e.substring(i-1);Kye.includes(a)&&(this.visibility=a),/[$*]/.exec(s)&&(r=s),this.id=e.substring(this.visibility===""?0:1,r===""?i:i-1)}this.classifier=r,this.id=this.id.startsWith(" ")?" "+this.id.trim():this.id.trim();let n=`${this.visibility?"\\"+this.visibility:""}${rc(this.id)}${this.memberType==="method"?`(${rc(this.parameters)})${this.returnType?" : "+rc(this.returnType):""}`:""}`;this.text=n.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""}}}});var iC,Zye,c0,sy,o$=N(()=>{"use strict";yr();pt();Xt();gr();tr();ci();Qye();iC="classId-",Zye=0,c0=o(t=>tt.sanitizeText(t,ge()),"sanitizeText"),sy=class{constructor(){this.relations=[];this.classes=new Map;this.styleClasses=new Map;this.notes=[];this.interfaces=[];this.namespaces=new Map;this.namespaceCounter=0;this.functions=[];this.lineType={LINE:0,DOTTED_LINE:1};this.relationType={AGGREGATION:0,EXTENSION:1,COMPOSITION:2,DEPENDENCY:3,LOLLIPOP:4};this.setupToolTips=o(e=>{let r=qe(".mermaidTooltip");(r._groups||r)[0][0]===null&&(r=qe("body").append("div").attr("class","mermaidTooltip").style("opacity",0)),qe(e).select("svg").selectAll("g.node").on("mouseover",a=>{let s=qe(a.currentTarget);if(s.attr("title")===null)return;let u=this.getBoundingClientRect();r.transition().duration(200).style("opacity",".9"),r.text(s.attr("title")).style("left",window.scrollX+u.left+(u.right-u.left)/2+"px").style("top",window.scrollY+u.top-14+document.body.scrollTop+"px"),r.html(r.html().replace(/<br\/>/g,"
    ")),s.classed("hover",!0)}).on("mouseout",a=>{r.transition().duration(500).style("opacity",0),qe(a.currentTarget).classed("hover",!1)})},"setupToolTips");this.direction="TB";this.setAccTitle=Rr;this.getAccTitle=Mr;this.setAccDescription=Ir;this.getAccDescription=Or;this.setDiagramTitle=$r;this.getDiagramTitle=Pr;this.getConfig=o(()=>ge().class,"getConfig");this.functions.push(this.setupToolTips.bind(this)),this.clear(),this.addRelation=this.addRelation.bind(this),this.addClassesToNamespace=this.addClassesToNamespace.bind(this),this.addNamespace=this.addNamespace.bind(this),this.setCssClass=this.setCssClass.bind(this),this.addMembers=this.addMembers.bind(this),this.addClass=this.addClass.bind(this),this.setClassLabel=this.setClassLabel.bind(this),this.addAnnotation=this.addAnnotation.bind(this),this.addMember=this.addMember.bind(this),this.cleanupLabel=this.cleanupLabel.bind(this),this.addNote=this.addNote.bind(this),this.defineClass=this.defineClass.bind(this),this.setDirection=this.setDirection.bind(this),this.setLink=this.setLink.bind(this),this.bindFunctions=this.bindFunctions.bind(this),this.clear=this.clear.bind(this),this.setTooltip=this.setTooltip.bind(this),this.setClickEvent=this.setClickEvent.bind(this),this.setCssStyle=this.setCssStyle.bind(this)}static{o(this,"ClassDB")}splitClassNameAndType(e){let r=tt.sanitizeText(e,ge()),n="",i=r;if(r.indexOf("~")>0){let a=r.split("~");i=c0(a[0]),n=c0(a[1])}return{className:i,type:n}}setClassLabel(e,r){let n=tt.sanitizeText(e,ge());r&&(r=c0(r));let{className:i}=this.splitClassNameAndType(n);this.classes.get(i).label=r,this.classes.get(i).text=`${r}${this.classes.get(i).type?`<${this.classes.get(i).type}>`:""}`}addClass(e){let r=tt.sanitizeText(e,ge()),{className:n,type:i}=this.splitClassNameAndType(r);if(this.classes.has(n))return;let a=tt.sanitizeText(n,ge());this.classes.set(a,{id:a,type:i,label:a,text:`${a}${i?`<${i}>`:""}`,shape:"classBox",cssClasses:"default",methods:[],members:[],annotations:[],styles:[],domId:iC+a+"-"+Zye}),Zye++}addInterface(e,r){let n={id:`interface${this.interfaces.length}`,label:e,classId:r};this.interfaces.push(n)}lookUpDomId(e){let r=tt.sanitizeText(e,ge());if(this.classes.has(r))return this.classes.get(r).domId;throw new Error("Class not found: "+r)}clear(){this.relations=[],this.classes=new Map,this.notes=[],this.interfaces=[],this.functions=[],this.functions.push(this.setupToolTips.bind(this)),this.namespaces=new Map,this.namespaceCounter=0,this.direction="TB",Sr()}getClass(e){return this.classes.get(e)}getClasses(){return this.classes}getRelations(){return this.relations}getNotes(){return this.notes}addRelation(e){X.debug("Adding relation: "+JSON.stringify(e));let r=[this.relationType.LOLLIPOP,this.relationType.AGGREGATION,this.relationType.COMPOSITION,this.relationType.DEPENDENCY,this.relationType.EXTENSION];e.relation.type1===this.relationType.LOLLIPOP&&!r.includes(e.relation.type2)?(this.addClass(e.id2),this.addInterface(e.id1,e.id2),e.id1=`interface${this.interfaces.length-1}`):e.relation.type2===this.relationType.LOLLIPOP&&!r.includes(e.relation.type1)?(this.addClass(e.id1),this.addInterface(e.id2,e.id1),e.id2=`interface${this.interfaces.length-1}`):(this.addClass(e.id1),this.addClass(e.id2)),e.id1=this.splitClassNameAndType(e.id1).className,e.id2=this.splitClassNameAndType(e.id2).className,e.relationTitle1=tt.sanitizeText(e.relationTitle1.trim(),ge()),e.relationTitle2=tt.sanitizeText(e.relationTitle2.trim(),ge()),this.relations.push(e)}addAnnotation(e,r){let n=this.splitClassNameAndType(e).className;this.classes.get(n).annotations.push(r)}addMember(e,r){this.addClass(e);let n=this.splitClassNameAndType(e).className,i=this.classes.get(n);if(typeof r=="string"){let a=r.trim();a.startsWith("<<")&&a.endsWith(">>")?i.annotations.push(c0(a.substring(2,a.length-2))):a.indexOf(")")>0?i.methods.push(new k4(a,"method")):a&&i.members.push(new k4(a,"attribute"))}}addMembers(e,r){Array.isArray(r)&&(r.reverse(),r.forEach(n=>this.addMember(e,n)))}addNote(e,r){let n={id:`note${this.notes.length}`,class:r,text:e};this.notes.push(n)}cleanupLabel(e){return e.startsWith(":")&&(e=e.substring(1)),c0(e.trim())}setCssClass(e,r){e.split(",").forEach(n=>{let i=n;/\d/.exec(n[0])&&(i=iC+i);let a=this.classes.get(i);a&&(a.cssClasses+=" "+r)})}defineClass(e,r){for(let n of e){let i=this.styleClasses.get(n);i===void 0&&(i={id:n,styles:[],textStyles:[]},this.styleClasses.set(n,i)),r&&r.forEach(a=>{if(/color/.exec(a)){let s=a.replace("fill","bgFill");i.textStyles.push(s)}i.styles.push(a)}),this.classes.forEach(a=>{a.cssClasses.includes(n)&&a.styles.push(...r.flatMap(s=>s.split(",")))})}}setTooltip(e,r){e.split(",").forEach(n=>{r!==void 0&&(this.classes.get(n).tooltip=c0(r))})}getTooltip(e,r){return r&&this.namespaces.has(r)?this.namespaces.get(r).classes.get(e).tooltip:this.classes.get(e).tooltip}setLink(e,r,n){let i=ge();e.split(",").forEach(a=>{let s=a;/\d/.exec(a[0])&&(s=iC+s);let l=this.classes.get(s);l&&(l.link=qt.formatUrl(r,i),i.securityLevel==="sandbox"?l.linkTarget="_top":typeof n=="string"?l.linkTarget=c0(n):l.linkTarget="_blank")}),this.setCssClass(e,"clickable")}setClickEvent(e,r,n){e.split(",").forEach(i=>{this.setClickFunc(i,r,n),this.classes.get(i).haveCallback=!0}),this.setCssClass(e,"clickable")}setClickFunc(e,r,n){let i=tt.sanitizeText(e,ge());if(ge().securityLevel!=="loose"||r===void 0)return;let s=i;if(this.classes.has(s)){let l=this.lookUpDomId(s),u=[];if(typeof n=="string"){u=n.split(/,(?=(?:(?:[^"]*"){2})*[^"]*$)/);for(let h=0;h{let h=document.querySelector(`[id="${l}"]`);h!==null&&h.addEventListener("click",()=>{qt.runFunc(r,...u)},!1)})}}bindFunctions(e){this.functions.forEach(r=>{r(e)})}getDirection(){return this.direction}setDirection(e){this.direction=e}addNamespace(e){this.namespaces.has(e)||(this.namespaces.set(e,{id:e,classes:new Map,children:{},domId:iC+e+"-"+this.namespaceCounter}),this.namespaceCounter++)}getNamespace(e){return this.namespaces.get(e)}getNamespaces(){return this.namespaces}addClassesToNamespace(e,r){if(this.namespaces.has(e))for(let n of r){let{className:i}=this.splitClassNameAndType(n);this.classes.get(i).parent=e,this.namespaces.get(e).classes.set(i,this.classes.get(i))}}setCssStyle(e,r){let n=this.classes.get(e);if(!(!r||!n))for(let i of r)i.includes(",")?n.styles.push(...i.split(",")):n.styles.push(i)}getArrowMarker(e){let r;switch(e){case 0:r="aggregation";break;case 1:r="extension";break;case 2:r="composition";break;case 3:r="dependency";break;case 4:r="lollipop";break;default:r="none"}return r}getData(){let e=[],r=[],n=ge();for(let a of this.namespaces.keys()){let s=this.namespaces.get(a);if(s){let l={id:s.id,label:s.id,isGroup:!0,padding:n.class.padding??16,shape:"rect",cssStyles:["fill: none","stroke: black"],look:n.look};e.push(l)}}for(let a of this.classes.keys()){let s=this.classes.get(a);if(s){let l=s;l.parentId=s.parent,l.look=n.look,e.push(l)}}let i=0;for(let a of this.notes){i++;let s={id:a.id,label:a.text,isGroup:!1,shape:"note",padding:n.class.padding??6,cssStyles:["text-align: left","white-space: nowrap",`fill: ${n.themeVariables.noteBkgColor}`,`stroke: ${n.themeVariables.noteBorderColor}`],look:n.look};e.push(s);let l=this.classes.get(a.class)?.id??"";if(l){let u={id:`edgeNote${i}`,start:a.id,end:l,type:"normal",thickness:"normal",classes:"relation",arrowTypeStart:"none",arrowTypeEnd:"none",arrowheadStyle:"",labelStyle:[""],style:["fill: none"],pattern:"dotted",look:n.look};r.push(u)}}for(let a of this.interfaces){let s={id:a.id,label:a.label,isGroup:!1,shape:"rect",cssStyles:["opacity: 0;"],look:n.look};e.push(s)}i=0;for(let a of this.relations){i++;let s={id:xc(a.id1,a.id2,{prefix:"id",counter:i}),start:a.id1,end:a.id2,type:"normal",label:a.title,labelpos:"c",thickness:"normal",classes:"relation",arrowTypeStart:this.getArrowMarker(a.relation.type1),arrowTypeEnd:this.getArrowMarker(a.relation.type2),startLabelRight:a.relationTitle1==="none"?"":a.relationTitle1,endLabelLeft:a.relationTitle2==="none"?"":a.relationTitle2,arrowheadStyle:"",labelStyle:["display: inline-block"],style:a.style||"",pattern:a.relation.lineType==1?"dashed":"solid",look:n.look};r.push(s)}return{nodes:e,edges:r,other:{},config:n,direction:this.getDirection()}}}});var BJe,aC,l$=N(()=>{"use strict";yg();BJe=o(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}; -} - ${zc()} -`,"getStyles"),aC=BJe});var FJe,$Je,zJe,sC,c$=N(()=>{"use strict";Xt();pt();ep();Nf();Mf();tr();FJe=o((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"),$Je=o(function(t,e){return e.db.getClasses()},"getClasses"),zJe=o(async function(t,e,r,n){X.info("REF0:"),X.info("Drawing class diagram (v3)",e);let{securityLevel:i,state:a,layout:s}=ge(),l=n.db.getData(),u=Vo(e,i);l.type=n.type,l.layoutAlgorithm=$c(s),l.nodeSpacing=a?.nodeSpacing||50,l.rankSpacing=a?.rankSpacing||50,l.markers=["aggregation","extension","composition","dependency","lollipop"],l.diagramId=e,await Qo(l,u);let h=8;qt.insertTitle(u,"classDiagramTitleText",a?.titleTopMargin??25,n.db.getDiagramTitle()),Ws(u,h,"classDiagram",a?.useMaxWidth??!0)},"draw"),sC={getClasses:$Je,draw:zJe,getDir:FJe}});var Jye={};dr(Jye,{diagram:()=>GJe});var GJe,eve=N(()=>{"use strict";s$();o$();l$();c$();GJe={parser:nC,get db(){return new sy},renderer:sC,styles:aC,init:o(t=>{t.class||(t.class={}),t.class.arrowMarkerAbsolute=t.arrowMarkerAbsolute},"init")}});var nve={};dr(nve,{diagram:()=>qJe});var qJe,ive=N(()=>{"use strict";s$();o$();l$();c$();qJe={parser:nC,get db(){return new sy},renderer:sC,styles:aC,init:o(t=>{t.class||(t.class={}),t.class.arrowMarkerAbsolute=t.arrowMarkerAbsolute},"init")}});var u$,oC,h$=N(()=>{"use strict";u$=(function(){var t=o(function(F,G,$,U){for($=$||{},U=F.length;U--;$[F[U]]=G);return $},"o"),e=[1,2],r=[1,3],n=[1,4],i=[2,4],a=[1,9],s=[1,11],l=[1,16],u=[1,17],h=[1,18],f=[1,19],d=[1,33],p=[1,20],m=[1,21],g=[1,22],y=[1,23],v=[1,24],x=[1,26],b=[1,27],T=[1,28],S=[1,29],w=[1,30],k=[1,31],A=[1,32],C=[1,35],R=[1,36],I=[1,37],L=[1,38],E=[1,34],D=[1,4,5,16,17,19,21,22,24,25,26,27,28,29,33,35,37,38,41,45,48,51,52,53,54,57],_=[1,4,5,14,15,16,17,19,21,22,24,25,26,27,28,29,33,35,37,38,39,40,41,45,48,51,52,53,54,57],O=[4,5,16,17,19,21,22,24,25,26,27,28,29,33,35,37,38,41,45,48,51,52,53,54,57],M={trace:o(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,CLICK:38,STRING:39,HREF:40,classDef:41,CLASSDEF_ID:42,CLASSDEF_STYLEOPTS:43,DEFAULT:44,style:45,STYLE_IDS:46,STYLEDEF_STYLEOPTS:47,class:48,CLASSENTITY_IDS:49,STYLECLASS:50,direction_tb:51,direction_bt:52,direction_rl:53,direction_lr:54,eol:55,";":56,EDGE_STATE:57,STYLE_SEPARATOR:58,left_of:59,right_of:60,$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:"CLICK",39:"STRING",40:"HREF",41:"classDef",42:"CLASSDEF_ID",43:"CLASSDEF_STYLEOPTS",44:"DEFAULT",45:"style",46:"STYLE_IDS",47:"STYLEDEF_STYLEOPTS",48:"class",49:"CLASSENTITY_IDS",50:"STYLECLASS",51:"direction_tb",52:"direction_bt",53:"direction_rl",54:"direction_lr",56:";",57:"EDGE_STATE",58:"STYLE_SEPARATOR",59:"left_of",60:"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],[9,5],[9,5],[10,3],[10,3],[11,3],[12,3],[32,1],[32,1],[32,1],[32,1],[55,1],[55,1],[13,1],[13,1],[13,3],[13,3],[30,1],[30,1]],performAction:o(function(G,$,U,j,te,Y,oe){var J=Y.length-1;switch(te){case 3:return j.setRootDoc(Y[J]),Y[J];break;case 4:this.$=[];break;case 5:Y[J]!="nl"&&(Y[J-1].push(Y[J]),this.$=Y[J-1]);break;case 6:case 7:this.$=Y[J];break;case 8:this.$="nl";break;case 12:this.$=Y[J];break;case 13:let Z=Y[J-1];Z.description=j.trimColon(Y[J]),this.$=Z;break;case 14:this.$={stmt:"relation",state1:Y[J-2],state2:Y[J]};break;case 15:let K=j.trimColon(Y[J]);this.$={stmt:"relation",state1:Y[J-3],state2:Y[J-1],description:K};break;case 19:this.$={stmt:"state",id:Y[J-3],type:"default",description:"",doc:Y[J-1]};break;case 20:var ue=Y[J],re=Y[J-2].trim();if(Y[J].match(":")){var ee=Y[J].split(":");ue=ee[0],re=[re,ee[1]]}this.$={stmt:"state",id:ue,type:"default",description:re};break;case 21:this.$={stmt:"state",id:Y[J-3],type:"default",description:Y[J-5],doc:Y[J-1]};break;case 22:this.$={stmt:"state",id:Y[J],type:"fork"};break;case 23:this.$={stmt:"state",id:Y[J],type:"join"};break;case 24:this.$={stmt:"state",id:Y[J],type:"choice"};break;case 25:this.$={stmt:"state",id:j.getDividerId(),type:"divider"};break;case 26:this.$={stmt:"state",id:Y[J-1].trim(),note:{position:Y[J-2].trim(),text:Y[J].trim()}};break;case 29:this.$=Y[J].trim(),j.setAccTitle(this.$);break;case 30:case 31:this.$=Y[J].trim(),j.setAccDescription(this.$);break;case 32:this.$={stmt:"click",id:Y[J-3],url:Y[J-2],tooltip:Y[J-1]};break;case 33:this.$={stmt:"click",id:Y[J-3],url:Y[J-1],tooltip:""};break;case 34:case 35:this.$={stmt:"classDef",id:Y[J-1].trim(),classes:Y[J].trim()};break;case 36:this.$={stmt:"style",id:Y[J-1].trim(),styleClass:Y[J].trim()};break;case 37:this.$={stmt:"applyClass",id:Y[J-1].trim(),styleClass:Y[J].trim()};break;case 38:j.setDirection("TB"),this.$={stmt:"dir",value:"TB"};break;case 39:j.setDirection("BT"),this.$={stmt:"dir",value:"BT"};break;case 40:j.setDirection("RL"),this.$={stmt:"dir",value:"RL"};break;case 41:j.setDirection("LR"),this.$={stmt:"dir",value:"LR"};break;case 44:case 45:this.$={stmt:"state",id:Y[J].trim(),type:"default",description:""};break;case 46:this.$={stmt:"state",id:Y[J-2].trim(),classes:[Y[J].trim()],type:"default",description:""};break;case 47:this.$={stmt:"state",id:Y[J-2].trim(),classes:[Y[J].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,41,45,48,51,52,53,54,57],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:l,17:u,19:h,22:f,24:d,25:p,26:m,27:g,28:y,29:v,32:25,33:x,35:b,37:T,38:S,41:w,45:k,48:A,51:C,52:R,53:I,54:L,57:E},t(D,[2,5]),{9:39,10:12,11:13,12:14,13:15,16:l,17:u,19:h,22:f,24:d,25:p,26:m,27:g,28:y,29:v,32:25,33:x,35:b,37:T,38:S,41:w,45:k,48:A,51:C,52:R,53:I,54:L,57:E},t(D,[2,7]),t(D,[2,8]),t(D,[2,9]),t(D,[2,10]),t(D,[2,11]),t(D,[2,12],{14:[1,40],15:[1,41]}),t(D,[2,16]),{18:[1,42]},t(D,[2,18],{20:[1,43]}),{23:[1,44]},t(D,[2,22]),t(D,[2,23]),t(D,[2,24]),t(D,[2,25]),{30:45,31:[1,46],59:[1,47],60:[1,48]},t(D,[2,28]),{34:[1,49]},{36:[1,50]},t(D,[2,31]),{13:51,24:d,57:E},{42:[1,52],44:[1,53]},{46:[1,54]},{49:[1,55]},t(_,[2,44],{58:[1,56]}),t(_,[2,45],{58:[1,57]}),t(D,[2,38]),t(D,[2,39]),t(D,[2,40]),t(D,[2,41]),t(D,[2,6]),t(D,[2,13]),{13:58,24:d,57:E},t(D,[2,17]),t(O,i,{7:59}),{24:[1,60]},{24:[1,61]},{23:[1,62]},{24:[2,48]},{24:[2,49]},t(D,[2,29]),t(D,[2,30]),{39:[1,63],40:[1,64]},{43:[1,65]},{43:[1,66]},{47:[1,67]},{50:[1,68]},{24:[1,69]},{24:[1,70]},t(D,[2,14],{14:[1,71]}),{4:a,5:s,8:8,9:10,10:12,11:13,12:14,13:15,16:l,17:u,19:h,21:[1,72],22:f,24:d,25:p,26:m,27:g,28:y,29:v,32:25,33:x,35:b,37:T,38:S,41:w,45:k,48:A,51:C,52:R,53:I,54:L,57:E},t(D,[2,20],{20:[1,73]}),{31:[1,74]},{24:[1,75]},{39:[1,76]},{39:[1,77]},t(D,[2,34]),t(D,[2,35]),t(D,[2,36]),t(D,[2,37]),t(_,[2,46]),t(_,[2,47]),t(D,[2,15]),t(D,[2,19]),t(O,i,{7:78}),t(D,[2,26]),t(D,[2,27]),{5:[1,79]},{5:[1,80]},{4:a,5:s,8:8,9:10,10:12,11:13,12:14,13:15,16:l,17:u,19:h,21:[1,81],22:f,24:d,25:p,26:m,27:g,28:y,29:v,32:25,33:x,35:b,37:T,38:S,41:w,45:k,48:A,51:C,52:R,53:I,54:L,57:E},t(D,[2,32]),t(D,[2,33]),t(D,[2,21])],defaultActions:{5:[2,1],6:[2,2],47:[2,48],48:[2,49]},parseError:o(function(G,$){if($.recoverable)this.trace(G);else{var U=new Error(G);throw U.hash=$,U}},"parseError"),parse:o(function(G){var $=this,U=[0],j=[],te=[null],Y=[],oe=this.table,J="",ue=0,re=0,ee=0,Z=2,K=1,ae=Y.slice.call(arguments,1),Q=Object.create(this.lexer),de={yy:{}};for(var ne in this.yy)Object.prototype.hasOwnProperty.call(this.yy,ne)&&(de.yy[ne]=this.yy[ne]);Q.setInput(G,de.yy),de.yy.lexer=Q,de.yy.parser=this,typeof Q.yylloc>"u"&&(Q.yylloc={});var Te=Q.yylloc;Y.push(Te);var q=Q.options&&Q.options.ranges;typeof de.yy.parseError=="function"?this.parseError=de.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function Ve(z){U.length=U.length-2*z,te.length=te.length-z,Y.length=Y.length-z}o(Ve,"popStack");function pe(){var z;return z=j.pop()||Q.lex()||K,typeof z!="number"&&(z instanceof Array&&(j=z,z=j.pop()),z=$.symbols_[z]||z),z}o(pe,"lex");for(var Be,Ye,He,Le,Ie,Ne,Ce={},Fe,fe,xe,W;;){if(He=U[U.length-1],this.defaultActions[He]?Le=this.defaultActions[He]:((Be===null||typeof Be>"u")&&(Be=pe()),Le=oe[He]&&oe[He][Be]),typeof Le>"u"||!Le.length||!Le[0]){var he="";W=[];for(Fe in oe[He])this.terminals_[Fe]&&Fe>Z&&W.push("'"+this.terminals_[Fe]+"'");Q.showPosition?he="Parse error on line "+(ue+1)+`: -`+Q.showPosition()+` -Expecting `+W.join(", ")+", got '"+(this.terminals_[Be]||Be)+"'":he="Parse error on line "+(ue+1)+": Unexpected "+(Be==K?"end of input":"'"+(this.terminals_[Be]||Be)+"'"),this.parseError(he,{text:Q.match,token:this.terminals_[Be]||Be,line:Q.yylineno,loc:Te,expected:W})}if(Le[0]instanceof Array&&Le.length>1)throw new Error("Parse Error: multiple actions possible at state: "+He+", token: "+Be);switch(Le[0]){case 1:U.push(Be),te.push(Q.yytext),Y.push(Q.yylloc),U.push(Le[1]),Be=null,Ye?(Be=Ye,Ye=null):(re=Q.yyleng,J=Q.yytext,ue=Q.yylineno,Te=Q.yylloc,ee>0&&ee--);break;case 2:if(fe=this.productions_[Le[1]][1],Ce.$=te[te.length-fe],Ce._$={first_line:Y[Y.length-(fe||1)].first_line,last_line:Y[Y.length-1].last_line,first_column:Y[Y.length-(fe||1)].first_column,last_column:Y[Y.length-1].last_column},q&&(Ce._$.range=[Y[Y.length-(fe||1)].range[0],Y[Y.length-1].range[1]]),Ne=this.performAction.apply(Ce,[J,re,ue,de.yy,Le[1],te,Y].concat(ae)),typeof Ne<"u")return Ne;fe&&(U=U.slice(0,-1*fe*2),te=te.slice(0,-1*fe),Y=Y.slice(0,-1*fe)),U.push(this.productions_[Le[1]][0]),te.push(Ce.$),Y.push(Ce._$),xe=oe[U[U.length-2]][U[U.length-1]],U.push(xe);break;case 3:return!0}}return!0},"parse")},P=(function(){var F={EOF:1,parseError:o(function($,U){if(this.yy.parser)this.yy.parser.parseError($,U);else throw new Error($)},"parseError"),setInput:o(function(G,$){return this.yy=$||this.yy||{},this._input=G,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:o(function(){var G=this._input[0];this.yytext+=G,this.yyleng++,this.offset++,this.match+=G,this.matched+=G;var $=G.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),G},"input"),unput:o(function(G){var $=G.length,U=G.split(/(?:\r\n?|\n)/g);this._input=G+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-$),this.offset-=$;var j=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),U.length-1&&(this.yylineno-=U.length-1);var te=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:U?(U.length===j.length?this.yylloc.first_column:0)+j[j.length-U.length].length-U[0].length:this.yylloc.first_column-$},this.options.ranges&&(this.yylloc.range=[te[0],te[0]+this.yyleng-$]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(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:o(function(G){this.unput(this.match.slice(G))},"less"),pastInput:o(function(){var G=this.matched.substr(0,this.matched.length-this.match.length);return(G.length>20?"...":"")+G.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var G=this.match;return G.length<20&&(G+=this._input.substr(0,20-G.length)),(G.substr(0,20)+(G.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var G=this.pastInput(),$=new Array(G.length+1).join("-");return G+this.upcomingInput()+` -`+$+"^"},"showPosition"),test_match:o(function(G,$){var U,j,te;if(this.options.backtrack_lexer&&(te={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&&(te.yylloc.range=this.yylloc.range.slice(0))),j=G[0].match(/(?:\r\n?|\n).*/g),j&&(this.yylineno+=j.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:j?j[j.length-1].length-j[j.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+G[0].length},this.yytext+=G[0],this.match+=G[0],this.matches=G,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(G[0].length),this.matched+=G[0],U=this.performAction.call(this,this.yy,this,$,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),U)return U;if(this._backtrack){for(var Y in te)this[Y]=te[Y];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var G,$,U,j;this._more||(this.yytext="",this.match="");for(var te=this._currentRules(),Y=0;Y$[0].length)){if($=U,j=Y,this.options.backtrack_lexer){if(G=this.test_match(U,te[Y]),G!==!1)return G;if(this._backtrack){$=!1;continue}else return!1}else if(!this.options.flex)break}return $?(G=this.test_match($,te[j]),G!==!1?G:!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:o(function(){var $=this.next();return $||this.lex()},"lex"),begin:o(function($){this.conditionStack.push($)},"begin"),popState:o(function(){var $=this.conditionStack.length-1;return $>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(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:o(function($){return $=this.conditionStack.length-1-Math.abs($||0),$>=0?this.conditionStack[$]:"INITIAL"},"topState"),pushState:o(function($){this.begin($)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:o(function($,U,j,te){var Y=te;switch(j){case 0:return 38;case 1:return 40;case 2:return 39;case 3:return 44;case 4:return 51;case 5:return 52;case 6:return 53;case 7:return 54;case 8:break;case 9:break;case 10:return 5;case 11:break;case 12:break;case 13:break;case 14:break;case 15:return this.pushState("SCALE"),17;break;case 16:return 18;case 17:this.popState();break;case 18:return this.begin("acc_title"),33;break;case 19:return this.popState(),"acc_title_value";break;case 20:return this.begin("acc_descr"),35;break;case 21:return this.popState(),"acc_descr_value";break;case 22:this.begin("acc_descr_multiline");break;case 23:this.popState();break;case 24:return"acc_descr_multiline_value";case 25:return this.pushState("CLASSDEF"),41;break;case 26:return this.popState(),this.pushState("CLASSDEFID"),"DEFAULT_CLASSDEF_ID";break;case 27:return this.popState(),this.pushState("CLASSDEFID"),42;break;case 28:return this.popState(),43;break;case 29:return this.pushState("CLASS"),48;break;case 30:return this.popState(),this.pushState("CLASS_STYLE"),49;break;case 31:return this.popState(),50;break;case 32:return this.pushState("STYLE"),45;break;case 33:return this.popState(),this.pushState("STYLEDEF_STYLES"),46;break;case 34:return this.popState(),47;break;case 35:return this.pushState("SCALE"),17;break;case 36:return 18;case 37:this.popState();break;case 38:this.pushState("STATE");break;case 39:return this.popState(),U.yytext=U.yytext.slice(0,-8).trim(),25;break;case 40:return this.popState(),U.yytext=U.yytext.slice(0,-8).trim(),26;break;case 41:return this.popState(),U.yytext=U.yytext.slice(0,-10).trim(),27;break;case 42:return this.popState(),U.yytext=U.yytext.slice(0,-8).trim(),25;break;case 43:return this.popState(),U.yytext=U.yytext.slice(0,-8).trim(),26;break;case 44:return this.popState(),U.yytext=U.yytext.slice(0,-10).trim(),27;break;case 45:return 51;case 46:return 52;case 47:return 53;case 48:return 54;case 49:this.pushState("STATE_STRING");break;case 50:return this.pushState("STATE_ID"),"AS";break;case 51:return this.popState(),"ID";break;case 52:this.popState();break;case 53:return"STATE_DESCR";case 54:return 19;case 55:this.popState();break;case 56:return this.popState(),this.pushState("struct"),20;break;case 57:break;case 58:return this.popState(),21;break;case 59:break;case 60:return this.begin("NOTE"),29;break;case 61:return this.popState(),this.pushState("NOTE_ID"),59;break;case 62:return this.popState(),this.pushState("NOTE_ID"),60;break;case 63:this.popState(),this.pushState("FLOATING_NOTE");break;case 64:return this.popState(),this.pushState("FLOATING_NOTE_ID"),"AS";break;case 65:break;case 66:return"NOTE_TEXT";case 67:return this.popState(),"ID";break;case 68:return this.popState(),this.pushState("NOTE_TEXT"),24;break;case 69:return this.popState(),U.yytext=U.yytext.substr(2).trim(),31;break;case 70:return this.popState(),U.yytext=U.yytext.slice(0,-8).trim(),31;break;case 71:return 6;case 72:return 6;case 73:return 16;case 74:return 57;case 75:return 24;case 76:return U.yytext=U.yytext.trim(),14;break;case 77:return 15;case 78:return 28;case 79:return 58;case 80:return 5;case 81:return"INVALID"}},"anonymous"),rules:[/^(?:click\b)/i,/^(?:href\b)/i,/^(?:"[^"]*")/i,/^(?: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:[12,13],inclusive:!1},struct:{rules:[12,13,25,29,32,38,45,46,47,48,57,58,59,60,74,75,76,77,78],inclusive:!1},FLOATING_NOTE_ID:{rules:[67],inclusive:!1},FLOATING_NOTE:{rules:[64,65,66],inclusive:!1},NOTE_TEXT:{rules:[69,70],inclusive:!1},NOTE_ID:{rules:[68],inclusive:!1},NOTE:{rules:[61,62,63],inclusive:!1},STYLEDEF_STYLEOPTS:{rules:[],inclusive:!1},STYLEDEF_STYLES:{rules:[34],inclusive:!1},STYLE_IDS:{rules:[],inclusive:!1},STYLE:{rules:[33],inclusive:!1},CLASS_STYLE:{rules:[31],inclusive:!1},CLASS:{rules:[30],inclusive:!1},CLASSDEFID:{rules:[28],inclusive:!1},CLASSDEF:{rules:[26,27],inclusive:!1},acc_descr_multiline:{rules:[23,24],inclusive:!1},acc_descr:{rules:[21],inclusive:!1},acc_title:{rules:[19],inclusive:!1},SCALE:{rules:[16,17,36,37],inclusive:!1},ALIAS:{rules:[],inclusive:!1},STATE_ID:{rules:[51],inclusive:!1},STATE_STRING:{rules:[52,53],inclusive:!1},FORK_STATE:{rules:[],inclusive:!1},STATE:{rules:[12,13,39,40,41,42,43,44,49,50,54,55,56],inclusive:!1},ID:{rules:[12,13],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,7,8,9,10,11,13,14,15,18,20,22,25,29,32,35,38,56,60,71,72,73,74,75,76,77,79,80,81],inclusive:!0}}};return F})();M.lexer=P;function B(){this.yy={}}return o(B,"Parser"),B.prototype=M,M.Parser=B,new B})();u$.parser=u$;oC=u$});var Qf,u0,E4,ove,lve,cve,h0,lC,f$,d$,p$,m$,cC,uC,uve,hve,g$,y$,fve,dve,oy,jJe,pve,v$,KJe,QJe,mve,gve,ZJe,yve,JJe,vve,x$,b$,xve,hC,bve,T$,fC=N(()=>{"use strict";Qf="state",u0="root",E4="relation",ove="classDef",lve="style",cve="applyClass",h0="default",lC="divider",f$="fill:none",d$="fill: #333",p$="text",m$="normal",cC="rect",uC="rectWithTitle",uve="stateStart",hve="stateEnd",g$="divider",y$="roundedWithTitle",fve="note",dve="noteGroup",oy="statediagram",jJe="state",pve=`${oy}-${jJe}`,v$="transition",KJe="note",QJe="note-edge",mve=`${v$} ${QJe}`,gve=`${oy}-${KJe}`,ZJe="cluster",yve=`${oy}-${ZJe}`,JJe="cluster-alt",vve=`${oy}-${JJe}`,x$="parent",b$="note",xve="state",hC="----",bve=`${hC}${b$}`,T$=`${hC}${x$}`});function w$(t="",e=0,r="",n=hC){let i=r!==null&&r.length>0?`${n}${r}`:"";return`${xve}-${t}${i}-${e}`}function dC(t,e,r){if(!e.id||e.id===""||e.id==="")return;e.cssClasses&&(Array.isArray(e.cssCompiledStyles)||(e.cssCompiledStyles=[]),e.cssClasses.split(" ").forEach(i=>{let a=r.get(i);a&&(e.cssCompiledStyles=[...e.cssCompiledStyles??[],...a.styles])}));let n=t.find(i=>i.id===e.id);n?Object.assign(n,e):t.push(e)}function tet(t){return t?.classes?.join(" ")??""}function ret(t){return t?.styles??[]}var pC,Zf,eet,Tve,ly,kve,Eve=N(()=>{"use strict";Xt();pt();gr();fC();pC=new Map,Zf=0;o(w$,"stateDomId");eet=o((t,e,r,n,i,a,s,l)=>{X.trace("items",e),e.forEach(u=>{switch(u.stmt){case Qf:ly(t,u,r,n,i,a,s,l);break;case h0:ly(t,u,r,n,i,a,s,l);break;case E4:{ly(t,u.state1,r,n,i,a,s,l),ly(t,u.state2,r,n,i,a,s,l);let h={id:"edge"+Zf,start:u.state1.id,end:u.state2.id,arrowhead:"normal",arrowTypeEnd:"arrow_barb",style:f$,labelStyle:"",label:tt.sanitizeText(u.description??"",ge()),arrowheadStyle:d$,labelpos:"c",labelType:p$,thickness:m$,classes:v$,look:s};i.push(h),Zf++}break}})},"setupDoc"),Tve=o((t,e="TB")=>{let r=e;if(t.doc)for(let n of t.doc)n.stmt==="dir"&&(r=n.value);return r},"getDir");o(dC,"insertOrUpdateNode");o(tet,"getClassesFromDbInfo");o(ret,"getStylesFromDbInfo");ly=o((t,e,r,n,i,a,s,l)=>{let u=e.id,h=r.get(u),f=tet(h),d=ret(h),p=ge();if(X.info("dataFetcher parsedItem",e,h,d),u!=="root"){let m=cC;e.start===!0?m=uve:e.start===!1&&(m=hve),e.type!==h0&&(m=e.type),pC.get(u)||pC.set(u,{id:u,shape:m,description:tt.sanitizeText(u,p),cssClasses:`${f} ${pve}`,cssStyles:d});let g=pC.get(u);e.description&&(Array.isArray(g.description)?(g.shape=uC,g.description.push(e.description)):g.description?.length&&g.description.length>0?(g.shape=uC,g.description===u?g.description=[e.description]:g.description=[g.description,e.description]):(g.shape=cC,g.description=e.description),g.description=tt.sanitizeTextOrArray(g.description,p)),g.description?.length===1&&g.shape===uC&&(g.type==="group"?g.shape=y$:g.shape=cC),!g.type&&e.doc&&(X.info("Setting cluster for XCX",u,Tve(e)),g.type="group",g.isGroup=!0,g.dir=Tve(e),g.shape=e.type===lC?g$:y$,g.cssClasses=`${g.cssClasses} ${yve} ${a?vve:""}`);let y={labelStyle:"",shape:g.shape,label:g.description,cssClasses:g.cssClasses,cssCompiledStyles:[],cssStyles:g.cssStyles,id:u,dir:g.dir,domId:w$(u,Zf),type:g.type,isGroup:g.type==="group",padding:8,rx:10,ry:10,look:s};if(y.shape===g$&&(y.label=""),t&&t.id!=="root"&&(X.trace("Setting node ",u," to be child of its parent ",t.id),y.parentId=t.id),y.centerLabel=!0,e.note){let v={labelStyle:"",shape:fve,label:e.note.text,cssClasses:gve,cssStyles:[],cssCompiledStyles:[],id:u+bve+"-"+Zf,domId:w$(u,Zf,b$),type:g.type,isGroup:g.type==="group",padding:p.flowchart?.padding,look:s,position:e.note.position},x=u+T$,b={labelStyle:"",shape:dve,label:e.note.text,cssClasses:g.cssClasses,cssStyles:[],id:u+T$,domId:w$(u,Zf,x$),type:"group",isGroup:!0,padding:16,look:s,position:e.note.position};Zf++,b.id=x,v.parentId=x,dC(n,b,l),dC(n,v,l),dC(n,y,l);let T=u,S=v.id;e.note.position==="left of"&&(T=v.id,S=u),i.push({id:T+"-"+S,start:T,end:S,arrowhead:"none",arrowTypeEnd:"",style:f$,labelStyle:"",classes:mve,arrowheadStyle:d$,labelpos:"c",labelType:p$,thickness:m$,look:s})}else dC(n,y,l)}e.doc&&(X.trace("Adding nodes children "),eet(e,e.doc,r,n,i,!a,s,l))},"dataFetcher"),kve=o(()=>{pC.clear(),Zf=0},"reset")});var E$,net,iet,Sve,S$=N(()=>{"use strict";Xt();pt();ep();Nf();Mf();tr();fC();E$=o((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"),net=o(function(t,e){return e.db.getClasses()},"getClasses"),iet=o(async function(t,e,r,n){X.info("REF0:"),X.info("Drawing state diagram (v2)",e);let{securityLevel:i,state:a,layout:s}=ge();n.db.extract(n.db.getRootDocV2());let l=n.db.getData(),u=Vo(e,i);l.type=n.type,l.layoutAlgorithm=s,l.nodeSpacing=a?.nodeSpacing||50,l.rankSpacing=a?.rankSpacing||50,l.markers=["barb"],l.diagramId=e,await Qo(l,u);let h=8;try{(typeof n.db.getLinks=="function"?n.db.getLinks():new Map).forEach((d,p)=>{let m=typeof p=="string"?p:typeof p?.id=="string"?p.id:"";if(!m){X.warn("\u26A0\uFE0F Invalid or missing stateId from key:",JSON.stringify(p));return}let g=u.node()?.querySelectorAll("g"),y;if(g?.forEach(T=>{T.textContent?.trim()===m&&(y=T)}),!y){X.warn("\u26A0\uFE0F Could not find node matching text:",m);return}let v=y.parentNode;if(!v){X.warn("\u26A0\uFE0F Node has no parent, cannot wrap:",m);return}let x=document.createElementNS("http://www.w3.org/2000/svg","a"),b=d.url.replace(/^"+|"+$/g,"");if(x.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",b),x.setAttribute("target","_blank"),d.tooltip){let T=d.tooltip.replace(/^"+|"+$/g,"");x.setAttribute("title",T)}v.replaceChild(x,y),x.appendChild(y),X.info("\u{1F517} Wrapped node in
    tag for:",m,d.url)})}catch(f){X.error("\u274C Error injecting clickable links:",f)}qt.insertTitle(u,"statediagramTitleText",a?.titleTopMargin??25,n.db.getDiagramTitle()),Ws(u,h,oy,a?.useMaxWidth??!0)},"draw"),Sve={getClasses:net,draw:iet,getDir:E$}});var ws,Ave,_ve,mC,al,gC=N(()=>{"use strict";Xt();pt();tr();gr();ci();Eve();S$();fC();ws={START_NODE:"[*]",START_TYPE:"start",END_NODE:"[*]",END_TYPE:"end",COLOR_KEYWORD:"color",FILL_KEYWORD:"fill",BG_FILL:"bgFill",STYLECLASS_SEP:","},Ave=o(()=>new Map,"newClassesList"),_ve=o(()=>({relations:[],states:new Map,documents:{}}),"newDoc"),mC=o(t=>JSON.parse(JSON.stringify(t)),"clone"),al=class{constructor(e){this.version=e;this.nodes=[];this.edges=[];this.rootDoc=[];this.classes=Ave();this.documents={root:_ve()};this.currentDocument=this.documents.root;this.startEndCount=0;this.dividerCnt=0;this.links=new Map;this.getAccTitle=Mr;this.setAccTitle=Rr;this.getAccDescription=Or;this.setAccDescription=Ir;this.setDiagramTitle=$r;this.getDiagramTitle=Pr;this.clear(),this.setRootDoc=this.setRootDoc.bind(this),this.getDividerId=this.getDividerId.bind(this),this.setDirection=this.setDirection.bind(this),this.trimColon=this.trimColon.bind(this)}static{o(this,"StateDB")}static{this.relationType={AGGREGATION:0,EXTENSION:1,COMPOSITION:2,DEPENDENCY:3}}extract(e){this.clear(!0);for(let i of Array.isArray(e)?e:e.doc)switch(i.stmt){case Qf:this.addState(i.id.trim(),i.type,i.doc,i.description,i.note);break;case E4:this.addRelation(i.state1,i.state2,i.description);break;case ove:this.addStyleClass(i.id.trim(),i.classes);break;case lve:this.handleStyleDef(i);break;case cve:this.setCssClass(i.id.trim(),i.styleClass);break;case"click":this.addLink(i.id,i.url,i.tooltip);break}let r=this.getStates(),n=ge();kve(),ly(void 0,this.getRootDocV2(),r,this.nodes,this.edges,!0,n.look,this.classes);for(let i of this.nodes)if(Array.isArray(i.label)){if(i.description=i.label.slice(1),i.isGroup&&i.description.length>0)throw new Error(`Group nodes can only have label. Remove the additional description for node [${i.id}]`);i.label=i.label[0]}}handleStyleDef(e){let r=e.id.trim().split(","),n=e.styleClass.split(",");for(let i of r){let a=this.getState(i);if(!a){let s=i.trim();this.addState(s),a=this.getState(s)}a&&(a.styles=n.map(s=>s.replace(/;/g,"")?.trim()))}}setRootDoc(e){X.info("Setting root doc",e),this.rootDoc=e,this.version===1?this.extract(e):this.extract(this.getRootDocV2())}docTranslator(e,r,n){if(r.stmt===E4){this.docTranslator(e,r.state1,!0),this.docTranslator(e,r.state2,!1);return}if(r.stmt===Qf&&(r.id===ws.START_NODE?(r.id=e.id+(n?"_start":"_end"),r.start=n):r.id=r.id.trim()),r.stmt!==u0&&r.stmt!==Qf||!r.doc)return;let i=[],a=[];for(let s of r.doc)if(s.type===lC){let l=mC(s);l.doc=mC(a),i.push(l),a=[]}else a.push(s);if(i.length>0&&a.length>0){let s={stmt:Qf,id:GL(),type:"divider",doc:mC(a)};i.push(mC(s)),r.doc=i}r.doc.forEach(s=>this.docTranslator(r,s,!0))}getRootDocV2(){return this.docTranslator({id:u0,stmt:u0},{id:u0,stmt:u0,doc:this.rootDoc},!0),{id:u0,doc:this.rootDoc}}addState(e,r=h0,n=void 0,i=void 0,a=void 0,s=void 0,l=void 0,u=void 0){let h=e?.trim();if(!this.currentDocument.states.has(h))X.info("Adding state ",h,i),this.currentDocument.states.set(h,{stmt:Qf,id:h,descriptions:[],type:r,doc:n,note:a,classes:[],styles:[],textStyles:[]});else{let f=this.currentDocument.states.get(h);if(!f)throw new Error(`State not found: ${h}`);f.doc||(f.doc=n),f.type||(f.type=r)}if(i&&(X.info("Setting state description",h,i),(Array.isArray(i)?i:[i]).forEach(d=>this.addDescription(h,d.trim()))),a){let f=this.currentDocument.states.get(h);if(!f)throw new Error(`State not found: ${h}`);f.note=a,f.note.text=tt.sanitizeText(f.note.text,ge())}s&&(X.info("Setting state classes",h,s),(Array.isArray(s)?s:[s]).forEach(d=>this.setCssClass(h,d.trim()))),l&&(X.info("Setting state styles",h,l),(Array.isArray(l)?l:[l]).forEach(d=>this.setStyle(h,d.trim()))),u&&(X.info("Setting state styles",h,l),(Array.isArray(u)?u:[u]).forEach(d=>this.setTextStyle(h,d.trim())))}clear(e){this.nodes=[],this.edges=[],this.documents={root:_ve()},this.currentDocument=this.documents.root,this.startEndCount=0,this.classes=Ave(),e||(this.links=new Map,Sr())}getState(e){return this.currentDocument.states.get(e)}getStates(){return this.currentDocument.states}logDocuments(){X.info("Documents = ",this.documents)}getRelations(){return this.currentDocument.relations}addLink(e,r,n){this.links.set(e,{url:r,tooltip:n}),X.warn("Adding link",e,r,n)}getLinks(){return this.links}startIdIfNeeded(e=""){return e===ws.START_NODE?(this.startEndCount++,`${ws.START_TYPE}${this.startEndCount}`):e}startTypeIfNeeded(e="",r=h0){return e===ws.START_NODE?ws.START_TYPE:r}endIdIfNeeded(e=""){return e===ws.END_NODE?(this.startEndCount++,`${ws.END_TYPE}${this.startEndCount}`):e}endTypeIfNeeded(e="",r=h0){return e===ws.END_NODE?ws.END_TYPE:r}addRelationObjs(e,r,n=""){let i=this.startIdIfNeeded(e.id.trim()),a=this.startTypeIfNeeded(e.id.trim(),e.type),s=this.startIdIfNeeded(r.id.trim()),l=this.startTypeIfNeeded(r.id.trim(),r.type);this.addState(i,a,e.doc,e.description,e.note,e.classes,e.styles,e.textStyles),this.addState(s,l,r.doc,r.description,r.note,r.classes,r.styles,r.textStyles),this.currentDocument.relations.push({id1:i,id2:s,relationTitle:tt.sanitizeText(n,ge())})}addRelation(e,r,n){if(typeof e=="object"&&typeof r=="object")this.addRelationObjs(e,r,n);else if(typeof e=="string"&&typeof r=="string"){let i=this.startIdIfNeeded(e.trim()),a=this.startTypeIfNeeded(e),s=this.endIdIfNeeded(r.trim()),l=this.endTypeIfNeeded(r);this.addState(i,a),this.addState(s,l),this.currentDocument.relations.push({id1:i,id2:s,relationTitle:n?tt.sanitizeText(n,ge()):void 0})}}addDescription(e,r){let n=this.currentDocument.states.get(e),i=r.startsWith(":")?r.replace(":","").trim():r;n?.descriptions?.push(tt.sanitizeText(i,ge()))}cleanupLabel(e){return e.startsWith(":")?e.slice(2).trim():e.trim()}getDividerId(){return this.dividerCnt++,`divider-id-${this.dividerCnt}`}addStyleClass(e,r=""){this.classes.has(e)||this.classes.set(e,{id:e,styles:[],textStyles:[]});let n=this.classes.get(e);r&&n&&r.split(ws.STYLECLASS_SEP).forEach(i=>{let a=i.replace(/([^;]*);/,"$1").trim();if(RegExp(ws.COLOR_KEYWORD).exec(i)){let l=a.replace(ws.FILL_KEYWORD,ws.BG_FILL).replace(ws.COLOR_KEYWORD,ws.FILL_KEYWORD);n.textStyles.push(l)}n.styles.push(a)})}getClasses(){return this.classes}setCssClass(e,r){e.split(",").forEach(n=>{let i=this.getState(n);if(!i){let a=n.trim();this.addState(a),i=this.getState(a)}i?.classes?.push(r)})}setStyle(e,r){this.getState(e)?.styles?.push(r)}setTextStyle(e,r){this.getState(e)?.textStyles?.push(r)}getDirectionStatement(){return this.rootDoc.find(e=>e.stmt==="dir")}getDirection(){return this.getDirectionStatement()?.value??"TB"}setDirection(e){let r=this.getDirectionStatement();r?r.value=e:this.rootDoc.unshift({stmt:"dir",value:e})}trimColon(e){return e.startsWith(":")?e.slice(1).trim():e.trim()}getData(){let e=ge();return{nodes:this.nodes,edges:this.edges,other:{},config:e,direction:E$(this.getRootDocV2())}}getConfig(){return ge().state}}});var set,yC,C$=N(()=>{"use strict";set=o(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"),yC=set});var oet,cet,uet,het,Lve,fet,det,pet,met,A$,Dve,Rve,Nve=N(()=>{"use strict";yr();gC();tr();gr();Xt();pt();oet=o(t=>t.append("circle").attr("class","start-state").attr("r",ge().state.sizeUnit).attr("cx",ge().state.padding+ge().state.sizeUnit).attr("cy",ge().state.padding+ge().state.sizeUnit),"drawStartState"),cet=o(t=>t.append("line").style("stroke","grey").style("stroke-dasharray","3").attr("x1",ge().state.textHeight).attr("class","divider").attr("x2",ge().state.textHeight*2).attr("y1",0).attr("y2",0),"drawDivider"),uet=o((t,e)=>{let r=t.append("text").attr("x",2*ge().state.padding).attr("y",ge().state.textHeight+2*ge().state.padding).attr("font-size",ge().state.fontSize).attr("class","state-title").text(e.id),n=r.node().getBBox();return t.insert("rect",":first-child").attr("x",ge().state.padding).attr("y",ge().state.padding).attr("width",n.width+2*ge().state.padding).attr("height",n.height+2*ge().state.padding).attr("rx",ge().state.radius),r},"drawSimpleState"),het=o((t,e)=>{let r=o(function(p,m,g){let y=p.append("tspan").attr("x",2*ge().state.padding).text(m);g||y.attr("dy",ge().state.textHeight)},"addTspan"),i=t.append("text").attr("x",2*ge().state.padding).attr("y",ge().state.textHeight+1.3*ge().state.padding).attr("font-size",ge().state.fontSize).attr("class","state-title").text(e.descriptions[0]).node().getBBox(),a=i.height,s=t.append("text").attr("x",ge().state.padding).attr("y",a+ge().state.padding*.4+ge().state.dividerMargin+ge().state.textHeight).attr("class","state-description"),l=!0,u=!0;e.descriptions.forEach(function(p){l||(r(s,p,u),u=!1),l=!1});let h=t.append("line").attr("x1",ge().state.padding).attr("y1",ge().state.padding+a+ge().state.dividerMargin/2).attr("y2",ge().state.padding+a+ge().state.dividerMargin/2).attr("class","descr-divider"),f=s.node().getBBox(),d=Math.max(f.width,i.width);return h.attr("x2",d+3*ge().state.padding),t.insert("rect",":first-child").attr("x",ge().state.padding).attr("y",ge().state.padding).attr("width",d+2*ge().state.padding).attr("height",f.height+a+2*ge().state.padding).attr("rx",ge().state.radius),t},"drawDescrState"),Lve=o((t,e,r)=>{let n=ge().state.padding,i=2*ge().state.padding,a=t.node().getBBox(),s=a.width,l=a.x,u=t.append("text").attr("x",0).attr("y",ge().state.titleShift).attr("font-size",ge().state.fontSize).attr("class","state-title").text(e.id),f=u.node().getBBox().width+i,d=Math.max(f,s);d===s&&(d=d+i);let p,m=t.node().getBBox();e.doc,p=l-n,f>s&&(p=(s-d)/2+n),Math.abs(l-m.x)s&&(p=l-(f-s)/2);let g=1-ge().state.textHeight;return t.insert("rect",":first-child").attr("x",p).attr("y",g).attr("class",r?"alt-composit":"composit").attr("width",d).attr("height",m.height+ge().state.textHeight+ge().state.titleShift+1).attr("rx","0"),u.attr("x",p+n),f<=s&&u.attr("x",l+(d-i)/2-f/2+n),t.insert("rect",":first-child").attr("x",p).attr("y",ge().state.titleShift-ge().state.textHeight-ge().state.padding).attr("width",d).attr("height",ge().state.textHeight*3).attr("rx",ge().state.radius),t.insert("rect",":first-child").attr("x",p).attr("y",ge().state.titleShift-ge().state.textHeight-ge().state.padding).attr("width",d).attr("height",m.height+3+2*ge().state.textHeight).attr("rx",ge().state.radius),t},"addTitleAndBox"),fet=o(t=>(t.append("circle").attr("class","end-state-outer").attr("r",ge().state.sizeUnit+ge().state.miniPadding).attr("cx",ge().state.padding+ge().state.sizeUnit+ge().state.miniPadding).attr("cy",ge().state.padding+ge().state.sizeUnit+ge().state.miniPadding),t.append("circle").attr("class","end-state-inner").attr("r",ge().state.sizeUnit).attr("cx",ge().state.padding+ge().state.sizeUnit+2).attr("cy",ge().state.padding+ge().state.sizeUnit+2)),"drawEndState"),det=o((t,e)=>{let r=ge().state.forkWidth,n=ge().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",ge().state.padding).attr("y",ge().state.padding)},"drawForkJoinState"),pet=o((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 l=s.split(tt.lineBreakRegex),u=1.25*ge().state.noteMargin;for(let h of l){let f=h.trim();if(f.length>0){let d=a.append("tspan");if(d.text(f),u===0){let p=d.node().getBBox();u+=p.height}i+=u,d.attr("x",e+ge().state.noteMargin),d.attr("y",r+i+1.25*ge().state.noteMargin)}}return{textWidth:a.node().getBBox().width,textHeight:i}},"_drawLongText"),met=o((t,e)=>{e.attr("class","state-note");let r=e.append("rect").attr("x",0).attr("y",ge().state.padding),n=e.append("g"),{textWidth:i,textHeight:a}=pet(t,0,0,n);return r.attr("height",a+2*ge().state.noteMargin),r.attr("width",i+ge().state.noteMargin*2),r},"drawNote"),A$=o(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"&&oet(i),e.type==="end"&&fet(i),(e.type==="fork"||e.type==="join")&&det(i,e),e.type==="note"&&met(e.note.text,i),e.type==="divider"&&cet(i),e.type==="default"&&e.descriptions.length===0&&uet(i,e),e.type==="default"&&e.descriptions.length>0&&het(i,e);let a=i.node().getBBox();return n.width=a.width+2*ge().state.padding,n.height=a.height+2*ge().state.padding,n},"drawState"),Dve=0,Rve=o(function(t,e,r){let n=o(function(u){switch(u){case al.relationType.AGGREGATION:return"aggregation";case al.relationType.EXTENSION:return"extension";case al.relationType.COMPOSITION:return"composition";case al.relationType.DEPENDENCY:return"dependency"}},"getRelationType");e.points=e.points.filter(u=>!Number.isNaN(u.y));let i=e.points,a=Cl().x(function(u){return u.x}).y(function(u){return u.y}).curve(No),s=t.append("path").attr("d",a(i)).attr("id","edge"+Dve).attr("class","transition"),l="";if(ge().state.arrowMarkerAbsolute&&(l=md(!0)),s.attr("marker-end","url("+l+"#"+n(al.relationType.DEPENDENCY)+"End)"),r.title!==void 0){let u=t.append("g").attr("class","stateLabel"),{x:h,y:f}=qt.calcLabelPosition(e.points),d=tt.getRows(r.title),p=0,m=[],g=0,y=0;for(let b=0;b<=d.length;b++){let T=u.append("text").attr("text-anchor","middle").text(d[b]).attr("x",h).attr("y",f+p),S=T.node().getBBox();g=Math.max(g,S.width),y=Math.min(y,S.x),X.info(S.x,h,f+p),p===0&&(p=T.node().getBBox().height,X.info("Title height",p,f)),m.push(T)}let v=p*d.length;if(d.length>1){let b=(d.length-1)*p*.5;m.forEach((T,S)=>T.attr("y",f+S*p-b)),v=p*d.length}let x=u.node().getBBox();u.insert("rect",":first-child").attr("class","box").attr("x",h-g/2-ge().state.padding/2).attr("y",f-v/2-ge().state.padding/2-3.5).attr("width",g+ge().state.padding).attr("height",v+ge().state.padding),X.info(x)}Dve++},"drawEdge")});var bo,_$,get,yet,vet,xet,Mve,Ive,Ove=N(()=>{"use strict";yr();hN();qo();pt();gr();Nve();Xt();Ei();_$={},get=o(function(){},"setConf"),yet=o(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"),vet=o(function(t,e,r,n){bo=ge().state;let i=ge().securityLevel,a;i==="sandbox"&&(a=qe("#i"+e));let s=i==="sandbox"?qe(a.nodes()[0].contentDocument.body):qe("body"),l=i==="sandbox"?a.nodes()[0].contentDocument:document;X.debug("Rendering diagram "+t);let u=s.select(`[id='${e}']`);yet(u);let h=n.db.getRootDoc();Mve(h,u,void 0,!1,s,l,n);let f=bo.padding,d=u.node().getBBox(),p=d.width+f*2,m=d.height+f*2,g=p*1.75;mn(u,m,g,bo.useMaxWidth),u.attr("viewBox",`${d.x-bo.padding} ${d.y-bo.padding} `+p+" "+m)},"draw"),xet=o(t=>t?t.length*bo.fontSizeFactor:1,"getLabelWidth"),Mve=o((t,e,r,n,i,a,s)=>{let l=new cn({compound:!0,multigraph:!0}),u,h=!0;for(u=0;u{let w=S.parentElement,k=0,A=0;w&&(w.parentElement&&(k=w.parentElement.getBBox().width),A=parseInt(w.getAttribute("data-x-shift"),10),Number.isNaN(A)&&(A=0)),S.setAttribute("x1",0-A+8),S.setAttribute("x2",k-A-8)})):X.debug("No Node "+b+": "+JSON.stringify(l.node(b)))});let v=y.getBBox();l.edges().forEach(function(b){b!==void 0&&l.edge(b)!==void 0&&(X.debug("Edge "+b.v+" -> "+b.w+": "+JSON.stringify(l.edge(b))),Rve(e,l.edge(b),l.edge(b).relation))}),v=y.getBBox();let x={id:r||"root",label:r||"root",width:0,height:0};return x.width=v.width+2*bo.padding,x.height=v.height+2*bo.padding,X.debug("Doc rendered",x,l),x},"renderDoc"),Ive={setConf:get,draw:vet}});var Pve={};dr(Pve,{diagram:()=>bet});var bet,Bve=N(()=>{"use strict";h$();gC();C$();Ove();bet={parser:oC,get db(){return new al(1)},renderer:Ive,styles:yC,init:o(t=>{t.state||(t.state={}),t.state.arrowMarkerAbsolute=t.arrowMarkerAbsolute},"init")}});var zve={};dr(zve,{diagram:()=>Eet});var Eet,Gve=N(()=>{"use strict";h$();gC();C$();S$();Eet={parser:oC,get db(){return new al(2)},renderer:Sve,styles:yC,init:o(t=>{t.state||(t.state={}),t.state.arrowMarkerAbsolute=t.arrowMarkerAbsolute},"init")}});var D$,Hve,qve=N(()=>{"use strict";D$=(function(){var t=o(function(d,p,m,g){for(m=m||{},g=d.length;g--;m[d[g]]=p);return m},"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],l=[1,14],u={trace:o(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:o(function(p,m,g,y,v,x,b){var T=x.length-1;switch(v){case 1:return x[T-1];case 2:this.$=[];break;case 3:x[T-1].push(x[T]),this.$=x[T-1];break;case 4:case 5:this.$=x[T];break;case 6:case 7:this.$=[];break;case 8:y.setDiagramTitle(x[T].substr(6)),this.$=x[T].substr(6);break;case 9:this.$=x[T].trim(),y.setAccTitle(this.$);break;case 10:case 11:this.$=x[T].trim(),y.setAccDescription(this.$);break;case 12:y.addSection(x[T].substr(8)),this.$=x[T].substr(8);break;case 13:y.addTask(x[T-1],x[T]),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:l},t(e,[2,7],{1:[2,1]}),t(e,[2,3]),{9:15,11:r,12:n,14:i,16:a,17:s,18:l},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:o(function(p,m){if(m.recoverable)this.trace(p);else{var g=new Error(p);throw g.hash=m,g}},"parseError"),parse:o(function(p){var m=this,g=[0],y=[],v=[null],x=[],b=this.table,T="",S=0,w=0,k=0,A=2,C=1,R=x.slice.call(arguments,1),I=Object.create(this.lexer),L={yy:{}};for(var E in this.yy)Object.prototype.hasOwnProperty.call(this.yy,E)&&(L.yy[E]=this.yy[E]);I.setInput(p,L.yy),L.yy.lexer=I,L.yy.parser=this,typeof I.yylloc>"u"&&(I.yylloc={});var D=I.yylloc;x.push(D);var _=I.options&&I.options.ranges;typeof L.yy.parseError=="function"?this.parseError=L.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function O(re){g.length=g.length-2*re,v.length=v.length-re,x.length=x.length-re}o(O,"popStack");function M(){var re;return re=y.pop()||I.lex()||C,typeof re!="number"&&(re instanceof Array&&(y=re,re=y.pop()),re=m.symbols_[re]||re),re}o(M,"lex");for(var P,B,F,G,$,U,j={},te,Y,oe,J;;){if(F=g[g.length-1],this.defaultActions[F]?G=this.defaultActions[F]:((P===null||typeof P>"u")&&(P=M()),G=b[F]&&b[F][P]),typeof G>"u"||!G.length||!G[0]){var ue="";J=[];for(te in b[F])this.terminals_[te]&&te>A&&J.push("'"+this.terminals_[te]+"'");I.showPosition?ue="Parse error on line "+(S+1)+`: -`+I.showPosition()+` -Expecting `+J.join(", ")+", got '"+(this.terminals_[P]||P)+"'":ue="Parse error on line "+(S+1)+": Unexpected "+(P==C?"end of input":"'"+(this.terminals_[P]||P)+"'"),this.parseError(ue,{text:I.match,token:this.terminals_[P]||P,line:I.yylineno,loc:D,expected:J})}if(G[0]instanceof Array&&G.length>1)throw new Error("Parse Error: multiple actions possible at state: "+F+", token: "+P);switch(G[0]){case 1:g.push(P),v.push(I.yytext),x.push(I.yylloc),g.push(G[1]),P=null,B?(P=B,B=null):(w=I.yyleng,T=I.yytext,S=I.yylineno,D=I.yylloc,k>0&&k--);break;case 2:if(Y=this.productions_[G[1]][1],j.$=v[v.length-Y],j._$={first_line:x[x.length-(Y||1)].first_line,last_line:x[x.length-1].last_line,first_column:x[x.length-(Y||1)].first_column,last_column:x[x.length-1].last_column},_&&(j._$.range=[x[x.length-(Y||1)].range[0],x[x.length-1].range[1]]),U=this.performAction.apply(j,[T,w,S,L.yy,G[1],v,x].concat(R)),typeof U<"u")return U;Y&&(g=g.slice(0,-1*Y*2),v=v.slice(0,-1*Y),x=x.slice(0,-1*Y)),g.push(this.productions_[G[1]][0]),v.push(j.$),x.push(j._$),oe=b[g[g.length-2]][g[g.length-1]],g.push(oe);break;case 3:return!0}}return!0},"parse")},h=(function(){var d={EOF:1,parseError:o(function(m,g){if(this.yy.parser)this.yy.parser.parseError(m,g);else throw new Error(m)},"parseError"),setInput:o(function(p,m){return this.yy=m||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:o(function(){var p=this._input[0];this.yytext+=p,this.yyleng++,this.offset++,this.match+=p,this.matched+=p;var m=p.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),p},"input"),unput:o(function(p){var m=p.length,g=p.split(/(?:\r\n?|\n)/g);this._input=p+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-m),this.offset-=m;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),g.length-1&&(this.yylineno-=g.length-1);var v=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===y.length?this.yylloc.first_column:0)+y[y.length-g.length].length-g[0].length:this.yylloc.first_column-m},this.options.ranges&&(this.yylloc.range=[v[0],v[0]+this.yyleng-m]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(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:o(function(p){this.unput(this.match.slice(p))},"less"),pastInput:o(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:o(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:o(function(){var p=this.pastInput(),m=new Array(p.length+1).join("-");return p+this.upcomingInput()+` -`+m+"^"},"showPosition"),test_match:o(function(p,m){var g,y,v;if(this.options.backtrack_lexer&&(v={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&&(v.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],g=this.performAction.call(this,this.yy,this,m,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),g)return g;if(this._backtrack){for(var x in v)this[x]=v[x];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var p,m,g,y;this._more||(this.yytext="",this.match="");for(var v=this._currentRules(),x=0;xm[0].length)){if(m=g,y=x,this.options.backtrack_lexer){if(p=this.test_match(g,v[x]),p!==!1)return p;if(this._backtrack){m=!1;continue}else return!1}else if(!this.options.flex)break}return m?(p=this.test_match(m,v[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:o(function(){var m=this.next();return m||this.lex()},"lex"),begin:o(function(m){this.conditionStack.push(m)},"begin"),popState:o(function(){var m=this.conditionStack.length-1;return m>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(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:o(function(m){return m=this.conditionStack.length-1-Math.abs(m||0),m>=0?this.conditionStack[m]:"INITIAL"},"topState"),pushState:o(function(m){this.begin(m)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:o(function(m,g,y,v){var x=v;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 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 d})();u.lexer=h;function f(){this.yy={}}return o(f,"Parser"),f.prototype=u,u.Parser=f,new f})();D$.parser=D$;Hve=D$});var cy,L$,S4,C4,Det,Let,Ret,Net,Met,Iet,Oet,Wve,Pet,R$,Yve=N(()=>{"use strict";Xt();ci();cy="",L$=[],S4=[],C4=[],Det=o(function(){L$.length=0,S4.length=0,cy="",C4.length=0,Sr()},"clear"),Let=o(function(t){cy=t,L$.push(t)},"addSection"),Ret=o(function(){return L$},"getSections"),Net=o(function(){let t=Wve(),e=100,r=0;for(;!t&&r{r.people&&t.push(...r.people)}),[...new Set(t)].sort()},"updateActors"),Iet=o(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(l=>l.trim()),s={section:cy,type:cy,people:a,task:t,score:n};C4.push(s)},"addTask"),Oet=o(function(t){let e={section:cy,type:cy,description:t,task:t,classes:[]};S4.push(e)},"addTaskOrg"),Wve=o(function(){let t=o(function(r){return C4[r].processed},"compileTask"),e=!0;for(let[r,n]of C4.entries())t(r),e=e&&n.processed;return e},"compileTasks"),Pet=o(function(){return Met()},"getActors"),R$={getConfig:o(()=>ge().journey,"getConfig"),clear:Det,setDiagramTitle:$r,getDiagramTitle:Pr,setAccTitle:Rr,getAccTitle:Mr,setAccDescription:Ir,getAccDescription:Or,addSection:Let,getSections:Ret,getTasks:Net,addTask:Iet,addTaskOrg:Oet,getActors:Pet}});var Bet,Xve,jve=N(()=>{"use strict";yg();Bet=o(t=>`.label { - font-family: ${t.fontFamily}; - color: ${t.textColor}; - } - .mouth { - stroke: #666; - } - - line { - stroke: ${t.textColor} - } - - .legend { - fill: ${t.textColor}; - font-family: ${t.fontFamily}; - } - - .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: ${t.fontFamily}; - 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}`:""}; - } - ${zc()} -`,"getStyles"),Xve=Bet});var N$,Fet,Qve,Zve,$et,zet,Kve,Get,Vet,Jve,Uet,uy,e2e=N(()=>{"use strict";yr();r2();N$=o(function(t,e){return Fd(t,e)},"drawRect"),Fet=o(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(u){let h=Sl().startAngle(Math.PI/2).endAngle(3*(Math.PI/2)).innerRadius(7.5).outerRadius(6.8181818181818175);u.append("path").attr("class","mouth").attr("d",h).attr("transform","translate("+e.cx+","+(e.cy+2)+")")}o(a,"smile");function s(u){let h=Sl().startAngle(3*Math.PI/2).endAngle(5*(Math.PI/2)).innerRadius(7.5).outerRadius(6.8181818181818175);u.append("path").attr("class","mouth").attr("d",h).attr("transform","translate("+e.cx+","+(e.cy+7)+")")}o(s,"sad");function l(u){u.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 o(l,"ambivalent"),e.score>3?a(i):e.score<3?s(i):l(i),n},"drawFace"),Qve=o(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"),Zve=o(function(t,e){return bj(t,e)},"drawText"),$et=o(function(t,e){function r(i,a,s,l,u){return i+","+a+" "+(i+s)+","+a+" "+(i+s)+","+(a+l-u)+" "+(i+s-u*1.2)+","+(a+l)+" "+i+","+(a+l)}o(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,Zve(t,e)},"drawLabel"),zet=o(function(t,e,r){let n=t.append("g"),i=ua();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,N$(n,i),Jve(r)(e.text,n,i.x,i.y,i.width,i.height,{class:"journey-section section-type-"+e.num},r,e.colour)},"drawSection"),Kve=-1,Get=o(function(t,e,r){let n=e.x+r.width/2,i=t.append("g");Kve++,i.append("line").attr("id","task"+Kve).attr("x1",n).attr("y1",e.y).attr("x2",n).attr("y2",450).attr("class","task-line").attr("stroke-width","1px").attr("stroke-dasharray","4 2").attr("stroke","#666"),Fet(i,{cx:n,cy:300+(5-e.score)*30,score:e.score});let s=ua();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,N$(i,s);let l=e.x+14;e.people.forEach(u=>{let h=e.actors[u].color,f={cx:l,cy:e.y,r:7,fill:h,stroke:"#000",title:u,pos:e.actors[u].position};Qve(i,f),l+=10}),Jve(r)(e.task,i,s.x,s.y,s.width,s.height,{class:"task"},r,e.colour)},"drawTask"),Vet=o(function(t,e){sT(t,e)},"drawBackgroundRect"),Jve=(function(){function t(i,a,s,l,u,h,f,d){let p=a.append("text").attr("x",s+u/2).attr("y",l+h/2+5).style("font-color",d).style("text-anchor","middle").text(i);n(p,f)}o(t,"byText");function e(i,a,s,l,u,h,f,d,p){let{taskFontSize:m,taskFontFamily:g}=d,y=i.split(//gi);for(let v=0;v{let a=lh[i].color,s={cx:20,cy:n,r:7,fill:a,stroke:"#000",pos:lh[i].position};uy.drawCircle(t,s);let l=t.append("text").attr("visibility","hidden").text(i),u=l.node().getBoundingClientRect().width;l.remove();let h=[];if(u<=r)h=[i];else{let f=i.split(" "),d="";l=t.append("text").attr("visibility","hidden"),f.forEach(p=>{let m=d?`${d} ${p}`:p;if(l.text(m),l.node().getBoundingClientRect().width>r){if(d&&h.push(d),d=p,l.text(p),l.node().getBoundingClientRect().width>r){let y="";for(let v of p)y+=v,l.text(y+"-"),l.node().getBoundingClientRect().width>r&&(h.push(y.slice(0,-1)+"-"),y=v);d=y}}else d=m}),d&&h.push(d),l.remove()}h.forEach((f,d)=>{let p={x:40,y:n+7+d*20,fill:"#666",text:f,textMargin:e.boxTextMargin??5},g=uy.drawText(t,p).node().getBoundingClientRect().width;g>vC&&g>e.leftMargin-g&&(vC=g)}),n+=Math.max(20,h.length*20)})}var Het,lh,vC,Hl,Jf,Wet,sl,M$,t2e,Yet,I$,r2e=N(()=>{"use strict";yr();e2e();Xt();Ei();Het=o(function(t){Object.keys(t).forEach(function(r){Hl[r]=t[r]})},"setConf"),lh={},vC=0;o(qet,"drawActorLegend");Hl=ge().journey,Jf=0,Wet=o(function(t,e,r,n){let i=ge(),a=i.journey.titleColor,s=i.journey.titleFontSize,l=i.journey.titleFontFamily,u=i.securityLevel,h;u==="sandbox"&&(h=qe("#i"+e));let f=u==="sandbox"?qe(h.nodes()[0].contentDocument.body):qe("body");sl.init();let d=f.select("#"+e);uy.initGraphics(d);let p=n.db.getTasks(),m=n.db.getDiagramTitle(),g=n.db.getActors();for(let S in lh)delete lh[S];let y=0;g.forEach(S=>{lh[S]={color:Hl.actorColours[y%Hl.actorColours.length],position:y},y++}),qet(d),Jf=Hl.leftMargin+vC,sl.insert(0,0,Jf,Object.keys(lh).length*50),Yet(d,p,0);let v=sl.getBounds();m&&d.append("text").text(m).attr("x",Jf).attr("font-size",s).attr("font-weight","bold").attr("y",25).attr("fill",a).attr("font-family",l);let x=v.stopy-v.starty+2*Hl.diagramMarginY,b=Jf+v.stopx+2*Hl.diagramMarginX;mn(d,x,b,Hl.useMaxWidth),d.append("line").attr("x1",Jf).attr("y1",Hl.height*4).attr("x2",b-Jf-4).attr("y2",Hl.height*4).attr("stroke-width",4).attr("stroke","black").attr("marker-end","url(#arrowhead)");let T=m?70:0;d.attr("viewBox",`${v.startx} -25 ${b} ${x+T}`),d.attr("preserveAspectRatio","xMinYMin meet"),d.attr("height",x+T+25)},"draw"),sl={data:{startx:void 0,stopx:void 0,starty:void 0,stopy:void 0},verticalPos:0,sequenceItems:[],init:o(function(){this.sequenceItems=[],this.data={startx:void 0,stopx:void 0,starty:void 0,stopy:void 0},this.verticalPos=0},"init"),updateVal:o(function(t,e,r,n){t[e]===void 0?t[e]=r:t[e]=n(r,t[e])},"updateVal"),updateBounds:o(function(t,e,r,n){let i=ge().journey,a=this,s=0;function l(u){return o(function(f){s++;let d=a.sequenceItems.length-s+1;a.updateVal(f,"starty",e-d*i.boxMargin,Math.min),a.updateVal(f,"stopy",n+d*i.boxMargin,Math.max),a.updateVal(sl.data,"startx",t-d*i.boxMargin,Math.min),a.updateVal(sl.data,"stopx",r+d*i.boxMargin,Math.max),u!=="activation"&&(a.updateVal(f,"startx",t-d*i.boxMargin,Math.min),a.updateVal(f,"stopx",r+d*i.boxMargin,Math.max),a.updateVal(sl.data,"starty",e-d*i.boxMargin,Math.min),a.updateVal(sl.data,"stopy",n+d*i.boxMargin,Math.max))},"updateItemBounds")}o(l,"updateFn"),this.sequenceItems.forEach(l())},"updateBounds"),insert:o(function(t,e,r,n){let i=Math.min(t,r),a=Math.max(t,r),s=Math.min(e,n),l=Math.max(e,n);this.updateVal(sl.data,"startx",i,Math.min),this.updateVal(sl.data,"starty",s,Math.min),this.updateVal(sl.data,"stopx",a,Math.max),this.updateVal(sl.data,"stopy",l,Math.max),this.updateBounds(i,s,a,l)},"insert"),bumpVerticalPos:o(function(t){this.verticalPos=this.verticalPos+t,this.data.stopy=this.verticalPos},"bumpVerticalPos"),getVerticalPos:o(function(){return this.verticalPos},"getVerticalPos"),getBounds:o(function(){return this.data},"getBounds")},M$=Hl.sectionFills,t2e=Hl.sectionColours,Yet=o(function(t,e,r){let n=ge().journey,i="",a=n.height*2+n.diagramMarginY,s=r+a,l=0,u="#CCC",h="black",f=0;for(let[d,p]of e.entries()){if(i!==p.section){u=M$[l%M$.length],f=l%M$.length,h=t2e[l%t2e.length];let g=0,y=p.section;for(let x=d;x(lh[y]&&(g[y]=lh[y]),g),{});p.x=d*n.taskMargin+d*n.width+Jf,p.y=s,p.width=n.diagramMarginX,p.height=n.diagramMarginY,p.colour=h,p.fill=u,p.num=f,p.actors=m,uy.drawTask(t,p,n),sl.insert(p.x,p.y,p.x+p.width+n.taskMargin,450)}},"drawTasks"),I$={setConf:Het,draw:Wet}});var n2e={};dr(n2e,{diagram:()=>Xet});var Xet,i2e=N(()=>{"use strict";qve();Yve();jve();r2e();Xet={parser:Hve,db:R$,renderer:I$,styles:Xve,init:o(t=>{I$.setConf(t.journey),R$.clear()},"init")}});var P$,h2e,f2e=N(()=>{"use strict";P$=(function(){var t=o(function(p,m,g,y){for(g=g||{},y=p.length;y--;g[p[y]]=m);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],l=[1,16],u=[1,17],h={trace:o(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:o(function(m,g,y,v,x,b,T){var S=b.length-1;switch(x){case 1:return b[S-1];case 2:this.$=[];break;case 3:b[S-1].push(b[S]),this.$=b[S-1];break;case 4:case 5:this.$=b[S];break;case 6:case 7:this.$=[];break;case 8:v.getCommonDb().setDiagramTitle(b[S].substr(6)),this.$=b[S].substr(6);break;case 9:this.$=b[S].trim(),v.getCommonDb().setAccTitle(this.$);break;case 10:case 11:this.$=b[S].trim(),v.getCommonDb().setAccDescription(this.$);break;case 12:v.addSection(b[S].substr(8)),this.$=b[S].substr(8);break;case 15:v.addTask(b[S],0,""),this.$=b[S];break;case 16:v.addEvent(b[S].substr(2)),this.$=b[S];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:l,21:u},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:l,21:u},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:o(function(m,g){if(g.recoverable)this.trace(m);else{var y=new Error(m);throw y.hash=g,y}},"parseError"),parse:o(function(m){var g=this,y=[0],v=[],x=[null],b=[],T=this.table,S="",w=0,k=0,A=0,C=2,R=1,I=b.slice.call(arguments,1),L=Object.create(this.lexer),E={yy:{}};for(var D in this.yy)Object.prototype.hasOwnProperty.call(this.yy,D)&&(E.yy[D]=this.yy[D]);L.setInput(m,E.yy),E.yy.lexer=L,E.yy.parser=this,typeof L.yylloc>"u"&&(L.yylloc={});var _=L.yylloc;b.push(_);var O=L.options&&L.options.ranges;typeof E.yy.parseError=="function"?this.parseError=E.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function M(ee){y.length=y.length-2*ee,x.length=x.length-ee,b.length=b.length-ee}o(M,"popStack");function P(){var ee;return ee=v.pop()||L.lex()||R,typeof ee!="number"&&(ee instanceof Array&&(v=ee,ee=v.pop()),ee=g.symbols_[ee]||ee),ee}o(P,"lex");for(var B,F,G,$,U,j,te={},Y,oe,J,ue;;){if(G=y[y.length-1],this.defaultActions[G]?$=this.defaultActions[G]:((B===null||typeof B>"u")&&(B=P()),$=T[G]&&T[G][B]),typeof $>"u"||!$.length||!$[0]){var re="";ue=[];for(Y in T[G])this.terminals_[Y]&&Y>C&&ue.push("'"+this.terminals_[Y]+"'");L.showPosition?re="Parse error on line "+(w+1)+`: -`+L.showPosition()+` -Expecting `+ue.join(", ")+", got '"+(this.terminals_[B]||B)+"'":re="Parse error on line "+(w+1)+": Unexpected "+(B==R?"end of input":"'"+(this.terminals_[B]||B)+"'"),this.parseError(re,{text:L.match,token:this.terminals_[B]||B,line:L.yylineno,loc:_,expected:ue})}if($[0]instanceof Array&&$.length>1)throw new Error("Parse Error: multiple actions possible at state: "+G+", token: "+B);switch($[0]){case 1:y.push(B),x.push(L.yytext),b.push(L.yylloc),y.push($[1]),B=null,F?(B=F,F=null):(k=L.yyleng,S=L.yytext,w=L.yylineno,_=L.yylloc,A>0&&A--);break;case 2:if(oe=this.productions_[$[1]][1],te.$=x[x.length-oe],te._$={first_line:b[b.length-(oe||1)].first_line,last_line:b[b.length-1].last_line,first_column:b[b.length-(oe||1)].first_column,last_column:b[b.length-1].last_column},O&&(te._$.range=[b[b.length-(oe||1)].range[0],b[b.length-1].range[1]]),j=this.performAction.apply(te,[S,k,w,E.yy,$[1],x,b].concat(I)),typeof j<"u")return j;oe&&(y=y.slice(0,-1*oe*2),x=x.slice(0,-1*oe),b=b.slice(0,-1*oe)),y.push(this.productions_[$[1]][0]),x.push(te.$),b.push(te._$),J=T[y[y.length-2]][y[y.length-1]],y.push(J);break;case 3:return!0}}return!0},"parse")},f=(function(){var p={EOF:1,parseError:o(function(g,y){if(this.yy.parser)this.yy.parser.parseError(g,y);else throw new Error(g)},"parseError"),setInput:o(function(m,g){return this.yy=g||this.yy||{},this._input=m,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:o(function(){var m=this._input[0];this.yytext+=m,this.yyleng++,this.offset++,this.match+=m,this.matched+=m;var g=m.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),m},"input"),unput:o(function(m){var g=m.length,y=m.split(/(?:\r\n?|\n)/g);this._input=m+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-g),this.offset-=g;var v=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),y.length-1&&(this.yylineno-=y.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:y?(y.length===v.length?this.yylloc.first_column:0)+v[v.length-y.length].length-y[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:o(function(){return this._more=!0,this},"more"),reject:o(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:o(function(m){this.unput(this.match.slice(m))},"less"),pastInput:o(function(){var m=this.matched.substr(0,this.matched.length-this.match.length);return(m.length>20?"...":"")+m.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var m=this.match;return m.length<20&&(m+=this._input.substr(0,20-m.length)),(m.substr(0,20)+(m.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var m=this.pastInput(),g=new Array(m.length+1).join("-");return m+this.upcomingInput()+` -`+g+"^"},"showPosition"),test_match:o(function(m,g){var y,v,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))),v=m[0].match(/(?:\r\n?|\n).*/g),v&&(this.yylineno+=v.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:v?v[v.length-1].length-v[v.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+m[0].length},this.yytext+=m[0],this.match+=m[0],this.matches=m,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(m[0].length),this.matched+=m[0],y=this.performAction.call(this,this.yy,this,g,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),y)return y;if(this._backtrack){for(var b in x)this[b]=x[b];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var m,g,y,v;this._more||(this.yytext="",this.match="");for(var x=this._currentRules(),b=0;bg[0].length)){if(g=y,v=b,this.options.backtrack_lexer){if(m=this.test_match(y,x[b]),m!==!1)return m;if(this._backtrack){g=!1;continue}else return!1}else if(!this.options.flex)break}return g?(m=this.test_match(g,x[v]),m!==!1?m:!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:o(function(){var g=this.next();return g||this.lex()},"lex"),begin:o(function(g){this.conditionStack.push(g)},"begin"),popState:o(function(){var g=this.conditionStack.length-1;return g>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(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:o(function(g){return g=this.conditionStack.length-1-Math.abs(g||0),g>=0?this.conditionStack[g]:"INITIAL"},"topState"),pushState:o(function(g){this.begin(g)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:o(function(g,y,v,x){var b=x;switch(v){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]|:(?!\s))+)/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 p})();h.lexer=f;function d(){this.yy={}}return o(d,"Parser"),d.prototype=h,h.Parser=d,new d})();P$.parser=P$;h2e=P$});var F$={};dr(F$,{addEvent:()=>T2e,addSection:()=>y2e,addTask:()=>b2e,addTaskOrg:()=>w2e,clear:()=>g2e,default:()=>ntt,getCommonDb:()=>m2e,getSections:()=>v2e,getTasks:()=>x2e});var hy,p2e,B$,xC,fy,m2e,g2e,y2e,v2e,x2e,b2e,T2e,w2e,d2e,ntt,k2e=N(()=>{"use strict";ci();hy="",p2e=0,B$=[],xC=[],fy=[],m2e=o(()=>rv,"getCommonDb"),g2e=o(function(){B$.length=0,xC.length=0,hy="",fy.length=0,Sr()},"clear"),y2e=o(function(t){hy=t,B$.push(t)},"addSection"),v2e=o(function(){return B$},"getSections"),x2e=o(function(){let t=d2e(),e=100,r=0;for(;!t&&rr.id===p2e-1).events.push(t)},"addEvent"),w2e=o(function(t){let e={section:hy,type:hy,description:t,task:t,classes:[]};xC.push(e)},"addTaskOrg"),d2e=o(function(){let t=o(function(r){return fy[r].processed},"compileTask"),e=!0;for(let[r,n]of fy.entries())t(r),e=e&&n.processed;return e},"compileTasks"),ntt={clear:g2e,getCommonDb:m2e,addSection:y2e,getSections:v2e,getTasks:x2e,addTask:b2e,addTaskOrg:w2e,addEvent:T2e}});function A2e(t,e){t.each(function(){var r=qe(this),n=r.text().split(/(\s+|
    )/).reverse(),i,a=[],s=1.1,l=r.attr("y"),u=parseFloat(r.attr("dy")),h=r.text(null).append("tspan").attr("x",0).attr("y",l).attr("dy",u+"em");for(let f=0;fe||i==="
    ")&&(a.pop(),h.text(a.join(" ").trim()),i==="
    "?a=[""]:a=[i],h=r.append("tspan").attr("x",0).attr("y",l).attr("dy",s+"em").text(i))})}var itt,bC,att,stt,S2e,ott,ltt,E2e,ctt,utt,htt,$$,C2e,ftt,dtt,ptt,mtt,ed,_2e=N(()=>{"use strict";yr();itt=12,bC=o(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"),att=o(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(u){let h=Sl().startAngle(Math.PI/2).endAngle(3*(Math.PI/2)).innerRadius(7.5).outerRadius(6.8181818181818175);u.append("path").attr("class","mouth").attr("d",h).attr("transform","translate("+e.cx+","+(e.cy+2)+")")}o(a,"smile");function s(u){let h=Sl().startAngle(3*Math.PI/2).endAngle(5*(Math.PI/2)).innerRadius(7.5).outerRadius(6.8181818181818175);u.append("path").attr("class","mouth").attr("d",h).attr("transform","translate("+e.cx+","+(e.cy+7)+")")}o(s,"sad");function l(u){u.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 o(l,"ambivalent"),e.score>3?a(i):e.score<3?s(i):l(i),n},"drawFace"),stt=o(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"),S2e=o(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"),ott=o(function(t,e){function r(i,a,s,l,u){return i+","+a+" "+(i+s)+","+a+" "+(i+s)+","+(a+l-u)+" "+(i+s-u*1.2)+","+(a+l)+" "+i+","+(a+l)}o(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,S2e(t,e)},"drawLabel"),ltt=o(function(t,e,r){let n=t.append("g"),i=$$();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,bC(n,i),C2e(r)(e.text,n,i.x,i.y,i.width,i.height,{class:"journey-section section-type-"+e.num},r,e.colour)},"drawSection"),E2e=-1,ctt=o(function(t,e,r){let n=e.x+r.width/2,i=t.append("g");E2e++,i.append("line").attr("id","task"+E2e).attr("x1",n).attr("y1",e.y).attr("x2",n).attr("y2",450).attr("class","task-line").attr("stroke-width","1px").attr("stroke-dasharray","4 2").attr("stroke","#666"),att(i,{cx:n,cy:300+(5-e.score)*30,score:e.score});let s=$$();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,bC(i,s),C2e(r)(e.task,i,s.x,s.y,s.width,s.height,{class:"task"},r,e.colour)},"drawTask"),utt=o(function(t,e){bC(t,{x:e.startx,y:e.starty,width:e.stopx-e.startx,height:e.stopy-e.starty,fill:e.fill,class:"rect"}).lower()},"drawBackgroundRect"),htt=o(function(){return{x:0,y:0,fill:void 0,"text-anchor":"start",width:100,height:100,textMargin:0,rx:0,ry:0}},"getTextObj"),$$=o(function(){return{x:0,y:0,width:100,anchor:"start",height:100,rx:0,ry:0}},"getNoteRect"),C2e=(function(){function t(i,a,s,l,u,h,f,d){let p=a.append("text").attr("x",s+u/2).attr("y",l+h/2+5).style("font-color",d).style("text-anchor","middle").text(i);n(p,f)}o(t,"byText");function e(i,a,s,l,u,h,f,d,p){let{taskFontSize:m,taskFontFamily:g}=d,y=i.split(//gi);for(let v=0;v{"use strict";yr();_2e();pt();Xt();Ei();gtt=o(function(t,e,r,n){let i=ge(),a=i.timeline?.leftMargin??50;X.debug("timeline",n.db);let s=i.securityLevel,l;s==="sandbox"&&(l=qe("#i"+e));let h=(s==="sandbox"?qe(l.nodes()[0].contentDocument.body):qe("body")).select("#"+e);h.append("g");let f=n.db.getTasks(),d=n.db.getCommonDb().getDiagramTitle();X.debug("task",f),ed.initGraphics(h);let p=n.db.getSections();X.debug("sections",p);let m=0,g=0,y=0,v=0,x=50+a,b=50;v=50;let T=0,S=!0;p.forEach(function(R){let I={number:T,descr:R,section:T,width:150,padding:20,maxHeight:m},L=ed.getVirtualNodeHeight(h,I,i);X.debug("sectionHeight before draw",L),m=Math.max(m,L+20)});let w=0,k=0;X.debug("tasks.length",f.length);for(let[R,I]of f.entries()){let L={number:R,descr:I,section:I.section,width:150,padding:20,maxHeight:g},E=ed.getVirtualNodeHeight(h,L,i);X.debug("taskHeight before draw",E),g=Math.max(g,E+20),w=Math.max(w,I.events.length);let D=0;for(let _ of I.events){let O={descr:_,section:I.section,number:I.section,width:150,padding:20,maxHeight:50};D+=ed.getVirtualNodeHeight(h,O,i)}I.events.length>0&&(D+=(I.events.length-1)*10),k=Math.max(k,D)}X.debug("maxSectionHeight before draw",m),X.debug("maxTaskHeight before draw",g),p&&p.length>0?p.forEach(R=>{let I=f.filter(_=>_.section===R),L={number:T,descr:R,section:T,width:200*Math.max(I.length,1)-50,padding:20,maxHeight:m};X.debug("sectionNode",L);let E=h.append("g"),D=ed.drawNode(E,L,T,i);X.debug("sectionNode output",D),E.attr("transform",`translate(${x}, ${v})`),b+=m+50,I.length>0&&D2e(h,I,T,x,b,g,i,w,k,m,!1),x+=200*Math.max(I.length,1),b=v,T++}):(S=!1,D2e(h,f,T,x,b,g,i,w,k,m,!0));let A=h.node().getBBox();X.debug("bounds",A),d&&h.append("text").text(d).attr("x",A.width/2-a).attr("font-size","4ex").attr("font-weight","bold").attr("y",20),y=S?m+g+150:g+100,h.append("g").attr("class","lineWrapper").append("line").attr("x1",a).attr("y1",y).attr("x2",A.width+3*a).attr("y2",y).attr("stroke-width",4).attr("stroke","black").attr("marker-end","url(#arrowhead)"),ic(void 0,h,i.timeline?.padding??50,i.timeline?.useMaxWidth??!1)},"draw"),D2e=o(function(t,e,r,n,i,a,s,l,u,h,f){for(let d of e){let p={descr:d.task,section:r,number:r,width:150,padding:20,maxHeight:a};X.debug("taskNode",p);let m=t.append("g").attr("class","taskWrapper"),y=ed.drawNode(m,p,r,s).height;if(X.debug("taskHeight after draw",y),m.attr("transform",`translate(${n}, ${i})`),a=Math.max(a,y),d.events){let v=t.append("g").attr("class","lineWrapper"),x=a;i+=100,x=x+ytt(t,d.events,r,n,i,s),i-=100,v.append("line").attr("x1",n+190/2).attr("y1",i+a).attr("x2",n+190/2).attr("y2",i+a+100+u+100).attr("stroke-width",2).attr("stroke","black").attr("marker-end","url(#arrowhead)").attr("stroke-dasharray","5,5")}n=n+200,f&&!s.timeline?.disableMulticolor&&r++}i=i-10},"drawTasks"),ytt=o(function(t,e,r,n,i,a){let s=0,l=i;i=i+100;for(let u of e){let h={descr:u,section:r,number:r,width:150,padding:20,maxHeight:50};X.debug("eventNode",h);let f=t.append("g").attr("class","eventWrapper"),p=ed.drawNode(f,h,r,a).height;s=s+p,f.attr("transform",`translate(${n}, ${i})`),i=i+10+p}return i=l,s},"drawEvents"),L2e={setConf:o(()=>{},"setConf"),draw:gtt}});var vtt,xtt,N2e,M2e=N(()=>{"use strict";eo();vtt=o(t=>{let e="";for(let r=0;r` - .edge { - stroke-width: 3; - } - ${vtt(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"),N2e=xtt});var I2e={};dr(I2e,{diagram:()=>btt});var btt,O2e=N(()=>{"use strict";f2e();k2e();R2e();M2e();btt={db:F$,renderer:L2e,parser:h2e,styles:N2e}});var z$,F2e,$2e=N(()=>{"use strict";z$=(function(){var t=o(function(S,w,k,A){for(k=k||{},A=S.length;A--;k[S[A]]=w);return k},"o"),e=[1,4],r=[1,13],n=[1,12],i=[1,15],a=[1,16],s=[1,20],l=[1,19],u=[6,7,8],h=[1,26],f=[1,24],d=[1,25],p=[6,7,11],m=[1,6,13,15,16,19,22],g=[1,33],y=[1,34],v=[1,6,7,11,13,15,16,19,22],x={trace:o(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:o(function(w,k,A,C,R,I,L){var E=I.length-1;switch(R){case 6:case 7:return C;case 8:C.getLogger().trace("Stop NL ");break;case 9:C.getLogger().trace("Stop EOF ");break;case 11:C.getLogger().trace("Stop NL2 ");break;case 12:C.getLogger().trace("Stop EOF2 ");break;case 15:C.getLogger().info("Node: ",I[E].id),C.addNode(I[E-1].length,I[E].id,I[E].descr,I[E].type);break;case 16:C.getLogger().trace("Icon: ",I[E]),C.decorateNode({icon:I[E]});break;case 17:case 21:C.decorateNode({class:I[E]});break;case 18:C.getLogger().trace("SPACELIST");break;case 19:C.getLogger().trace("Node: ",I[E].id),C.addNode(0,I[E].id,I[E].descr,I[E].type);break;case 20:C.decorateNode({icon:I[E]});break;case 25:C.getLogger().trace("node found ..",I[E-2]),this.$={id:I[E-1],descr:I[E-1],type:C.getType(I[E-2],I[E])};break;case 26:this.$={id:I[E],descr:I[E],type:C.nodeType.DEFAULT};break;case 27:C.getLogger().trace("node found ..",I[E-3]),this.$={id:I[E-3],descr:I[E-1],type:C.getType(I[E-2],I[E])};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:l},t(u,[2,3]),{1:[2,2]},t(u,[2,4]),t(u,[2,5]),{1:[2,6],6:r,12:21,13:n,14:14,15:i,16:a,17:17,18:18,19:s,22:l},{6:r,9:22,12:11,13:n,14:14,15:i,16:a,17:17,18:18,19:s,22:l},{6:h,7:f,10:23,11:d},t(p,[2,22],{17:17,18:18,14:27,15:[1,28],16:[1,29],19:s,22:l}),t(p,[2,18]),t(p,[2,19]),t(p,[2,20]),t(p,[2,21]),t(p,[2,23]),t(p,[2,24]),t(p,[2,26],{19:[1,30]}),{20:[1,31]},{6:h,7:f,10:32,11:d},{1:[2,7],6:r,12:21,13:n,14:14,15:i,16:a,17:17,18:18,19:s,22:l},t(m,[2,14],{7:g,11:y}),t(v,[2,8]),t(v,[2,9]),t(v,[2,10]),t(p,[2,15]),t(p,[2,16]),t(p,[2,17]),{20:[1,35]},{21:[1,36]},t(m,[2,13],{7:g,11:y}),t(v,[2,11]),t(v,[2,12]),{21:[1,37]},t(p,[2,25]),t(p,[2,27])],defaultActions:{2:[2,1],6:[2,2]},parseError:o(function(w,k){if(k.recoverable)this.trace(w);else{var A=new Error(w);throw A.hash=k,A}},"parseError"),parse:o(function(w){var k=this,A=[0],C=[],R=[null],I=[],L=this.table,E="",D=0,_=0,O=0,M=2,P=1,B=I.slice.call(arguments,1),F=Object.create(this.lexer),G={yy:{}};for(var $ in this.yy)Object.prototype.hasOwnProperty.call(this.yy,$)&&(G.yy[$]=this.yy[$]);F.setInput(w,G.yy),G.yy.lexer=F,G.yy.parser=this,typeof F.yylloc>"u"&&(F.yylloc={});var U=F.yylloc;I.push(U);var j=F.options&&F.options.ranges;typeof G.yy.parseError=="function"?this.parseError=G.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function te(q){A.length=A.length-2*q,R.length=R.length-q,I.length=I.length-q}o(te,"popStack");function Y(){var q;return q=C.pop()||F.lex()||P,typeof q!="number"&&(q instanceof Array&&(C=q,q=C.pop()),q=k.symbols_[q]||q),q}o(Y,"lex");for(var oe,J,ue,re,ee,Z,K={},ae,Q,de,ne;;){if(ue=A[A.length-1],this.defaultActions[ue]?re=this.defaultActions[ue]:((oe===null||typeof oe>"u")&&(oe=Y()),re=L[ue]&&L[ue][oe]),typeof re>"u"||!re.length||!re[0]){var Te="";ne=[];for(ae in L[ue])this.terminals_[ae]&&ae>M&&ne.push("'"+this.terminals_[ae]+"'");F.showPosition?Te="Parse error on line "+(D+1)+`: -`+F.showPosition()+` -Expecting `+ne.join(", ")+", got '"+(this.terminals_[oe]||oe)+"'":Te="Parse error on line "+(D+1)+": Unexpected "+(oe==P?"end of input":"'"+(this.terminals_[oe]||oe)+"'"),this.parseError(Te,{text:F.match,token:this.terminals_[oe]||oe,line:F.yylineno,loc:U,expected:ne})}if(re[0]instanceof Array&&re.length>1)throw new Error("Parse Error: multiple actions possible at state: "+ue+", token: "+oe);switch(re[0]){case 1:A.push(oe),R.push(F.yytext),I.push(F.yylloc),A.push(re[1]),oe=null,J?(oe=J,J=null):(_=F.yyleng,E=F.yytext,D=F.yylineno,U=F.yylloc,O>0&&O--);break;case 2:if(Q=this.productions_[re[1]][1],K.$=R[R.length-Q],K._$={first_line:I[I.length-(Q||1)].first_line,last_line:I[I.length-1].last_line,first_column:I[I.length-(Q||1)].first_column,last_column:I[I.length-1].last_column},j&&(K._$.range=[I[I.length-(Q||1)].range[0],I[I.length-1].range[1]]),Z=this.performAction.apply(K,[E,_,D,G.yy,re[1],R,I].concat(B)),typeof Z<"u")return Z;Q&&(A=A.slice(0,-1*Q*2),R=R.slice(0,-1*Q),I=I.slice(0,-1*Q)),A.push(this.productions_[re[1]][0]),R.push(K.$),I.push(K._$),de=L[A[A.length-2]][A[A.length-1]],A.push(de);break;case 3:return!0}}return!0},"parse")},b=(function(){var S={EOF:1,parseError:o(function(k,A){if(this.yy.parser)this.yy.parser.parseError(k,A);else throw new Error(k)},"parseError"),setInput:o(function(w,k){return this.yy=k||this.yy||{},this._input=w,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:o(function(){var w=this._input[0];this.yytext+=w,this.yyleng++,this.offset++,this.match+=w,this.matched+=w;var k=w.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),w},"input"),unput:o(function(w){var k=w.length,A=w.split(/(?:\r\n?|\n)/g);this._input=w+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-k),this.offset-=k;var C=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),A.length-1&&(this.yylineno-=A.length-1);var R=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:A?(A.length===C.length?this.yylloc.first_column:0)+C[C.length-A.length].length-A[0].length:this.yylloc.first_column-k},this.options.ranges&&(this.yylloc.range=[R[0],R[0]+this.yyleng-k]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(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:o(function(w){this.unput(this.match.slice(w))},"less"),pastInput:o(function(){var w=this.matched.substr(0,this.matched.length-this.match.length);return(w.length>20?"...":"")+w.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var w=this.match;return w.length<20&&(w+=this._input.substr(0,20-w.length)),(w.substr(0,20)+(w.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var w=this.pastInput(),k=new Array(w.length+1).join("-");return w+this.upcomingInput()+` -`+k+"^"},"showPosition"),test_match:o(function(w,k){var A,C,R;if(this.options.backtrack_lexer&&(R={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&&(R.yylloc.range=this.yylloc.range.slice(0))),C=w[0].match(/(?:\r\n?|\n).*/g),C&&(this.yylineno+=C.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:C?C[C.length-1].length-C[C.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+w[0].length},this.yytext+=w[0],this.match+=w[0],this.matches=w,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(w[0].length),this.matched+=w[0],A=this.performAction.call(this,this.yy,this,k,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),A)return A;if(this._backtrack){for(var I in R)this[I]=R[I];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var w,k,A,C;this._more||(this.yytext="",this.match="");for(var R=this._currentRules(),I=0;Ik[0].length)){if(k=A,C=I,this.options.backtrack_lexer){if(w=this.test_match(A,R[I]),w!==!1)return w;if(this._backtrack){k=!1;continue}else return!1}else if(!this.options.flex)break}return k?(w=this.test_match(k,R[C]),w!==!1?w:!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:o(function(){var k=this.next();return k||this.lex()},"lex"),begin:o(function(k){this.conditionStack.push(k)},"begin"),popState:o(function(){var k=this.conditionStack.length-1;return k>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(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:o(function(k){return k=this.conditionStack.length-1-Math.abs(k||0),k>=0?this.conditionStack[k]:"INITIAL"},"topState"),pushState:o(function(k){this.begin(k)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:o(function(k,A,C,R){var I=R;switch(C){case 0:return k.getLogger().trace("Found comment",A.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:k.getLogger().trace("Begin icon"),this.begin("ICON");break;case 6:return k.getLogger().trace("SPACELINE"),6;break;case 7:return 7;case 8:return 15;case 9:k.getLogger().trace("end icon"),this.popState();break;case 10:return k.getLogger().trace("Exploding node"),this.begin("NODE"),19;break;case 11:return k.getLogger().trace("Cloud"),this.begin("NODE"),19;break;case 12:return k.getLogger().trace("Explosion Bang"),this.begin("NODE"),19;break;case 13:return k.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:k.getLogger().trace("Starting NSTR"),this.begin("NSTR");break;case 25:return k.getLogger().trace("description:",A.yytext),"NODE_DESCR";break;case 26:this.popState();break;case 27:return this.popState(),k.getLogger().trace("node end ))"),"NODE_DEND";break;case 28:return this.popState(),k.getLogger().trace("node end )"),"NODE_DEND";break;case 29:return this.popState(),k.getLogger().trace("node end ...",A.yytext),"NODE_DEND";break;case 30:return this.popState(),k.getLogger().trace("node end (("),"NODE_DEND";break;case 31:return this.popState(),k.getLogger().trace("node end (-"),"NODE_DEND";break;case 32:return this.popState(),k.getLogger().trace("node end (-"),"NODE_DEND";break;case 33:return this.popState(),k.getLogger().trace("node end (("),"NODE_DEND";break;case 34:return this.popState(),k.getLogger().trace("node end (("),"NODE_DEND";break;case 35:return k.getLogger().trace("Long description:",A.yytext),20;break;case 36:return k.getLogger().trace("Long description:",A.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 S})();x.lexer=b;function T(){this.yy={}}return o(T,"Parser"),T.prototype=x,x.Parser=T,new T})();z$.parser=z$;F2e=z$});function z2e(t,e=0){return(Aa[t[e+0]]+Aa[t[e+1]]+Aa[t[e+2]]+Aa[t[e+3]]+"-"+Aa[t[e+4]]+Aa[t[e+5]]+"-"+Aa[t[e+6]]+Aa[t[e+7]]+"-"+Aa[t[e+8]]+Aa[t[e+9]]+"-"+Aa[t[e+10]]+Aa[t[e+11]]+Aa[t[e+12]]+Aa[t[e+13]]+Aa[t[e+14]]+Aa[t[e+15]]).toLowerCase()}var Aa,G2e=N(()=>{"use strict";Aa=[];for(let t=0;t<256;++t)Aa.push((t+256).toString(16).slice(1));o(z2e,"unsafeStringify")});function V$(){if(!G$){if(typeof crypto>"u"||!crypto.getRandomValues)throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");G$=crypto.getRandomValues.bind(crypto)}return G$(Ett)}var G$,Ett,V2e=N(()=>{"use strict";Ett=new Uint8Array(16);o(V$,"rng")});var Stt,U$,U2e=N(()=>{"use strict";Stt=typeof crypto<"u"&&crypto.randomUUID&&crypto.randomUUID.bind(crypto),U$={randomUUID:Stt}});function Ctt(t,e,r){if(U$.randomUUID&&!e&&!t)return U$.randomUUID();t=t||{};let n=t.random??t.rng?.()??V$();if(n.length<16)throw new Error("Random bytes length must be >= 16");if(n[6]=n[6]&15|64,n[8]=n[8]&63|128,e){if(r=r||0,r<0||r+16>e.length)throw new RangeError(`UUID byte range ${r}:${r+15} is out of buffer bounds`);for(let i=0;i<16;++i)e[r+i]=n[i];return e}return z2e(n)}var H$,H2e=N(()=>{"use strict";U2e();V2e();G2e();o(Ctt,"v4");H$=Ctt});var q2e=N(()=>{"use strict";H2e()});var ch,TC,W2e=N(()=>{"use strict";Xt();q2e();gr();pt();La();qn();ch={DEFAULT:0,NO_BORDER:0,ROUNDED_RECT:1,RECT:2,CIRCLE:3,CLOUD:4,BANG:5,HEXAGON:6},TC=class{constructor(){this.nodes=[];this.count=0;this.elements={};this.getLogger=this.getLogger.bind(this),this.nodeType=ch,this.clear(),this.getType=this.getType.bind(this),this.getElementById=this.getElementById.bind(this),this.getParent=this.getParent.bind(this),this.getMindmap=this.getMindmap.bind(this),this.addNode=this.addNode.bind(this),this.decorateNode=this.decorateNode.bind(this)}static{o(this,"MindmapDB")}clear(){this.nodes=[],this.count=0,this.elements={},this.baseLevel=void 0}getParent(e){for(let r=this.nodes.length-1;r>=0;r--)if(this.nodes[r].level0?this.nodes[0]:null}addNode(e,r,n,i){X.info("addNode",e,r,n,i);let a=!1;this.nodes.length===0?(this.baseLevel=e,e=0,a=!0):this.baseLevel!==void 0&&(e=e-this.baseLevel,a=!1);let s=ge(),l=s.mindmap?.padding??ur.mindmap.padding;switch(i){case this.nodeType.ROUNDED_RECT:case this.nodeType.RECT:case this.nodeType.HEXAGON:l*=2;break}let u={id:this.count++,nodeId:sr(r,s),level:e,descr:sr(n,s),type:i,children:[],width:s.mindmap?.maxNodeWidth??ur.mindmap.maxNodeWidth,padding:l,isRoot:a},h=this.getParent(e);if(h)h.children.push(u),this.nodes.push(u);else if(a)this.nodes.push(u);else throw new Error(`There can be only one root. No parent could be found for ("${u.descr}")`)}getType(e,r){switch(X.debug("In get type",e,r),e){case"[":return this.nodeType.RECT;case"(":return r===")"?this.nodeType.ROUNDED_RECT:this.nodeType.CLOUD;case"((":return this.nodeType.CIRCLE;case")":return this.nodeType.CLOUD;case"))":return this.nodeType.BANG;case"{{":return this.nodeType.HEXAGON;default:return this.nodeType.DEFAULT}}setElementForId(e,r){this.elements[e]=r}getElementById(e){return this.elements[e]}decorateNode(e){if(!e)return;let r=ge(),n=this.nodes[this.nodes.length-1];e.icon&&(n.icon=sr(e.icon,r)),e.class&&(n.class=sr(e.class,r))}type2Str(e){switch(e){case this.nodeType.DEFAULT:return"no-border";case this.nodeType.RECT:return"rect";case this.nodeType.ROUNDED_RECT:return"rounded-rect";case this.nodeType.CIRCLE:return"circle";case this.nodeType.CLOUD:return"cloud";case this.nodeType.BANG:return"bang";case this.nodeType.HEXAGON:return"hexgon";default:return"no-border"}}assignSections(e,r){if(e.level===0?e.section=void 0:e.section=r,e.children)for(let[n,i]of e.children.entries()){let a=e.level===0?n:r;this.assignSections(i,a)}}flattenNodes(e,r){let n=["mindmap-node"];e.isRoot===!0?n.push("section-root","section--1"):e.section!==void 0&&n.push(`section-${e.section}`),e.class&&n.push(e.class);let i=n.join(" "),a=o(l=>{switch(l){case ch.CIRCLE:return"mindmapCircle";case ch.RECT:return"rect";case ch.ROUNDED_RECT:return"rounded";case ch.CLOUD:return"cloud";case ch.BANG:return"bang";case ch.HEXAGON:return"hexagon";case ch.DEFAULT:return"defaultMindmapNode";case ch.NO_BORDER:default:return"rect"}},"getShapeFromType"),s={id:e.id.toString(),domId:"node_"+e.id.toString(),label:e.descr,isGroup:!1,shape:a(e.type),width:e.width,height:e.height??0,padding:e.padding,cssClasses:i,cssStyles:[],look:"default",icon:e.icon,x:e.x,y:e.y,level:e.level,nodeId:e.nodeId,type:e.type,section:e.section};if(r.push(s),e.children)for(let l of e.children)this.flattenNodes(l,r)}generateEdges(e,r){if(e.children)for(let n of e.children){let i="edge";n.section!==void 0&&(i+=` section-edge-${n.section}`);let a=e.level+1;i+=` edge-depth-${a}`;let s={id:`edge_${e.id}_${n.id}`,start:e.id.toString(),end:n.id.toString(),type:"normal",curve:"basis",thickness:"normal",look:"default",classes:i,depth:e.level,section:n.section};r.push(s),this.generateEdges(n,r)}}getData(){let e=this.getMindmap(),r=ge(),i=eV().layout!==void 0,a=r;if(i||(a.layout="cose-bilkent"),!e)return{nodes:[],edges:[],config:a};X.debug("getData: mindmapRoot",e,r),this.assignSections(e);let s=[],l=[];this.flattenNodes(e,s),this.generateEdges(e,l),X.debug(`getData: processed ${s.length} nodes and ${l.length} edges`);let u=new Map;for(let h of s)u.set(h.id,{shape:h.shape,width:h.width,height:h.height,padding:h.padding});return{nodes:s,edges:l,config:a,rootNode:e,markers:["point"],direction:"TB",nodeSpacing:50,rankSpacing:50,shapes:Object.fromEntries(u),type:"mindmap",diagramId:"mindmap-"+H$()}}getLogger(){return X}}});var Att,Y2e,X2e=N(()=>{"use strict";pt();ep();Nf();Mf();La();Att=o(async(t,e,r,n)=>{X.debug(`Rendering mindmap diagram -`+t);let i=n.db,a=i.getData(),s=Vo(e,a.config.securityLevel);a.type=n.type,a.layoutAlgorithm=$c(a.config.layout,{fallback:"cose-bilkent"}),a.diagramId=e,i.getMindmap()&&(a.nodes.forEach(u=>{u.shape==="rounded"?(u.radius=15,u.taper=15,u.stroke="none",u.width=0,u.padding=15):u.shape==="circle"?u.padding=10:u.shape==="rect"&&(u.width=0,u.padding=10)}),await Qo(a,s),Ws(s,a.config.mindmap?.padding??ur.mindmap.padding,"mindmapDiagram",a.config.mindmap?.useMaxWidth??ur.mindmap.useMaxWidth))},"draw"),Y2e={draw:Att}});var _tt,Dtt,j2e,K2e=N(()=>{"use strict";eo();_tt=o(t=>{let e="";for(let r=0;r` - .edge { - stroke-width: 3; - } - ${_tt(t)} - .section-root rect, .section-root path, .section-root circle, .section-root polygon { - fill: ${t.git0}; - } - .section-root text { - fill: ${t.gitBranchLabel0}; - } - .section-root span { - color: ${t.gitBranchLabel0}; - } - .section-2 span { - color: ${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"),j2e=Dtt});var Q2e={};dr(Q2e,{diagram:()=>Ltt});var Ltt,Z2e=N(()=>{"use strict";$2e();W2e();X2e();K2e();Ltt={get db(){return new TC},renderer:Y2e,parser:F2e,styles:j2e}});var q$,txe,rxe=N(()=>{"use strict";q$=(function(){var t=o(function(A,C,R,I){for(R=R||{},I=A.length;I--;R[A[I]]=C);return R},"o"),e=[1,4],r=[1,13],n=[1,12],i=[1,15],a=[1,16],s=[1,20],l=[1,19],u=[6,7,8],h=[1,26],f=[1,24],d=[1,25],p=[6,7,11],m=[1,31],g=[6,7,11,24],y=[1,6,13,16,17,20,23],v=[1,35],x=[1,36],b=[1,6,7,11,13,16,17,20,23],T=[1,38],S={trace:o(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:o(function(C,R,I,L,E,D,_){var O=D.length-1;switch(E){case 6:case 7:return L;case 8:L.getLogger().trace("Stop NL ");break;case 9:L.getLogger().trace("Stop EOF ");break;case 11:L.getLogger().trace("Stop NL2 ");break;case 12:L.getLogger().trace("Stop EOF2 ");break;case 15:L.getLogger().info("Node: ",D[O-1].id),L.addNode(D[O-2].length,D[O-1].id,D[O-1].descr,D[O-1].type,D[O]);break;case 16:L.getLogger().info("Node: ",D[O].id),L.addNode(D[O-1].length,D[O].id,D[O].descr,D[O].type);break;case 17:L.getLogger().trace("Icon: ",D[O]),L.decorateNode({icon:D[O]});break;case 18:case 23:L.decorateNode({class:D[O]});break;case 19:L.getLogger().trace("SPACELIST");break;case 20:L.getLogger().trace("Node: ",D[O-1].id),L.addNode(0,D[O-1].id,D[O-1].descr,D[O-1].type,D[O]);break;case 21:L.getLogger().trace("Node: ",D[O].id),L.addNode(0,D[O].id,D[O].descr,D[O].type);break;case 22:L.decorateNode({icon:D[O]});break;case 27:L.getLogger().trace("node found ..",D[O-2]),this.$={id:D[O-1],descr:D[O-1],type:L.getType(D[O-2],D[O])};break;case 28:this.$={id:D[O],descr:D[O],type:0};break;case 29:L.getLogger().trace("node found ..",D[O-3]),this.$={id:D[O-3],descr:D[O-1],type:L.getType(D[O-2],D[O])};break;case 30:this.$=D[O-1]+D[O];break;case 31:this.$=D[O];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:l},t(u,[2,3]),{1:[2,2]},t(u,[2,4]),t(u,[2,5]),{1:[2,6],6:r,12:21,13:n,14:14,16:i,17:a,18:17,19:18,20:s,23:l},{6:r,9:22,12:11,13:n,14:14,16:i,17:a,18:17,19:18,20:s,23:l},{6:h,7:f,10:23,11:d},t(p,[2,24],{18:17,19:18,14:27,16:[1,28],17:[1,29],20:s,23:l}),t(p,[2,19]),t(p,[2,21],{15:30,24:m}),t(p,[2,22]),t(p,[2,23]),t(g,[2,25]),t(g,[2,26]),t(g,[2,28],{20:[1,32]}),{21:[1,33]},{6:h,7:f,10:34,11:d},{1:[2,7],6:r,12:21,13:n,14:14,16:i,17:a,18:17,19:18,20:s,23:l},t(y,[2,14],{7:v,11:x}),t(b,[2,8]),t(b,[2,9]),t(b,[2,10]),t(p,[2,16],{15:37,24:m}),t(p,[2,17]),t(p,[2,18]),t(p,[2,20],{24:T}),t(g,[2,31]),{21:[1,39]},{22:[1,40]},t(y,[2,13],{7:v,11:x}),t(b,[2,11]),t(b,[2,12]),t(p,[2,15],{24:T}),t(g,[2,30]),{22:[1,41]},t(g,[2,27]),t(g,[2,29])],defaultActions:{2:[2,1],6:[2,2]},parseError:o(function(C,R){if(R.recoverable)this.trace(C);else{var I=new Error(C);throw I.hash=R,I}},"parseError"),parse:o(function(C){var R=this,I=[0],L=[],E=[null],D=[],_=this.table,O="",M=0,P=0,B=0,F=2,G=1,$=D.slice.call(arguments,1),U=Object.create(this.lexer),j={yy:{}};for(var te in this.yy)Object.prototype.hasOwnProperty.call(this.yy,te)&&(j.yy[te]=this.yy[te]);U.setInput(C,j.yy),j.yy.lexer=U,j.yy.parser=this,typeof U.yylloc>"u"&&(U.yylloc={});var Y=U.yylloc;D.push(Y);var oe=U.options&&U.options.ranges;typeof j.yy.parseError=="function"?this.parseError=j.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function J(Be){I.length=I.length-2*Be,E.length=E.length-Be,D.length=D.length-Be}o(J,"popStack");function ue(){var Be;return Be=L.pop()||U.lex()||G,typeof Be!="number"&&(Be instanceof Array&&(L=Be,Be=L.pop()),Be=R.symbols_[Be]||Be),Be}o(ue,"lex");for(var re,ee,Z,K,ae,Q,de={},ne,Te,q,Ve;;){if(Z=I[I.length-1],this.defaultActions[Z]?K=this.defaultActions[Z]:((re===null||typeof re>"u")&&(re=ue()),K=_[Z]&&_[Z][re]),typeof K>"u"||!K.length||!K[0]){var pe="";Ve=[];for(ne in _[Z])this.terminals_[ne]&&ne>F&&Ve.push("'"+this.terminals_[ne]+"'");U.showPosition?pe="Parse error on line "+(M+1)+`: -`+U.showPosition()+` -Expecting `+Ve.join(", ")+", got '"+(this.terminals_[re]||re)+"'":pe="Parse error on line "+(M+1)+": Unexpected "+(re==G?"end of input":"'"+(this.terminals_[re]||re)+"'"),this.parseError(pe,{text:U.match,token:this.terminals_[re]||re,line:U.yylineno,loc:Y,expected:Ve})}if(K[0]instanceof Array&&K.length>1)throw new Error("Parse Error: multiple actions possible at state: "+Z+", token: "+re);switch(K[0]){case 1:I.push(re),E.push(U.yytext),D.push(U.yylloc),I.push(K[1]),re=null,ee?(re=ee,ee=null):(P=U.yyleng,O=U.yytext,M=U.yylineno,Y=U.yylloc,B>0&&B--);break;case 2:if(Te=this.productions_[K[1]][1],de.$=E[E.length-Te],de._$={first_line:D[D.length-(Te||1)].first_line,last_line:D[D.length-1].last_line,first_column:D[D.length-(Te||1)].first_column,last_column:D[D.length-1].last_column},oe&&(de._$.range=[D[D.length-(Te||1)].range[0],D[D.length-1].range[1]]),Q=this.performAction.apply(de,[O,P,M,j.yy,K[1],E,D].concat($)),typeof Q<"u")return Q;Te&&(I=I.slice(0,-1*Te*2),E=E.slice(0,-1*Te),D=D.slice(0,-1*Te)),I.push(this.productions_[K[1]][0]),E.push(de.$),D.push(de._$),q=_[I[I.length-2]][I[I.length-1]],I.push(q);break;case 3:return!0}}return!0},"parse")},w=(function(){var A={EOF:1,parseError:o(function(R,I){if(this.yy.parser)this.yy.parser.parseError(R,I);else throw new Error(R)},"parseError"),setInput:o(function(C,R){return this.yy=R||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:o(function(){var C=this._input[0];this.yytext+=C,this.yyleng++,this.offset++,this.match+=C,this.matched+=C;var R=C.match(/(?:\r\n?|\n).*/g);return R?(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:o(function(C){var R=C.length,I=C.split(/(?:\r\n?|\n)/g);this._input=C+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-R),this.offset-=R;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),I.length-1&&(this.yylineno-=I.length-1);var E=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:I?(I.length===L.length?this.yylloc.first_column:0)+L[L.length-I.length].length-I[0].length:this.yylloc.first_column-R},this.options.ranges&&(this.yylloc.range=[E[0],E[0]+this.yyleng-R]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(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:o(function(C){this.unput(this.match.slice(C))},"less"),pastInput:o(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:o(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:o(function(){var C=this.pastInput(),R=new Array(C.length+1).join("-");return C+this.upcomingInput()+` -`+R+"^"},"showPosition"),test_match:o(function(C,R){var I,L,E;if(this.options.backtrack_lexer&&(E={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&&(E.yylloc.range=this.yylloc.range.slice(0))),L=C[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+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],I=this.performAction.call(this,this.yy,this,R,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),I)return I;if(this._backtrack){for(var D in E)this[D]=E[D];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var C,R,I,L;this._more||(this.yytext="",this.match="");for(var E=this._currentRules(),D=0;DR[0].length)){if(R=I,L=D,this.options.backtrack_lexer){if(C=this.test_match(I,E[D]),C!==!1)return C;if(this._backtrack){R=!1;continue}else return!1}else if(!this.options.flex)break}return R?(C=this.test_match(R,E[L]),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:o(function(){var R=this.next();return R||this.lex()},"lex"),begin:o(function(R){this.conditionStack.push(R)},"begin"),popState:o(function(){var R=this.conditionStack.length-1;return R>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(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:o(function(R){return R=this.conditionStack.length-1-Math.abs(R||0),R>=0?this.conditionStack[R]:"INITIAL"},"topState"),pushState:o(function(R){this.begin(R)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:o(function(R,I,L,E){var D=E;switch(L){case 0:return this.pushState("shapeData"),I.yytext="",24;break;case 1:return this.pushState("shapeDataStr"),24;break;case 2:return this.popState(),24;break;case 3:let _=/\n\s*/g;return I.yytext=I.yytext.replace(_,"
    "),24;break;case 4:return 24;case 5:this.popState();break;case 6:return R.getLogger().trace("Found comment",I.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:R.getLogger().trace("Begin icon"),this.begin("ICON");break;case 12:return R.getLogger().trace("SPACELINE"),6;break;case 13:return 7;case 14:return 16;case 15:R.getLogger().trace("end icon"),this.popState();break;case 16:return R.getLogger().trace("Exploding node"),this.begin("NODE"),20;break;case 17:return R.getLogger().trace("Cloud"),this.begin("NODE"),20;break;case 18:return R.getLogger().trace("Explosion Bang"),this.begin("NODE"),20;break;case 19:return R.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:R.getLogger().trace("Starting NSTR"),this.begin("NSTR");break;case 31:return R.getLogger().trace("description:",I.yytext),"NODE_DESCR";break;case 32:this.popState();break;case 33:return this.popState(),R.getLogger().trace("node end ))"),"NODE_DEND";break;case 34:return this.popState(),R.getLogger().trace("node end )"),"NODE_DEND";break;case 35:return this.popState(),R.getLogger().trace("node end ...",I.yytext),"NODE_DEND";break;case 36:return this.popState(),R.getLogger().trace("node end (("),"NODE_DEND";break;case 37:return this.popState(),R.getLogger().trace("node end (-"),"NODE_DEND";break;case 38:return this.popState(),R.getLogger().trace("node end (-"),"NODE_DEND";break;case 39:return this.popState(),R.getLogger().trace("node end (("),"NODE_DEND";break;case 40:return this.popState(),R.getLogger().trace("node end (("),"NODE_DEND";break;case 41:return R.getLogger().trace("Long description:",I.yytext),21;break;case 42:return R.getLogger().trace("Long description:",I.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 A})();S.lexer=w;function k(){this.yy={}}return o(k,"Parser"),k.prototype=S,S.Parser=k,new k})();q$.parser=q$;txe=q$});var ol,Y$,W$,X$,Itt,Ott,nxe,Ptt,Btt,Ui,Ftt,$tt,ztt,Gtt,Vtt,Utt,Htt,ixe,axe=N(()=>{"use strict";Xt();gr();pt();La();w2();ol=[],Y$=[],W$=0,X$={},Itt=o(()=>{ol=[],Y$=[],W$=0,X$={}},"clear"),Ott=o(t=>{if(ol.length===0)return null;let e=ol[0].level,r=null;for(let n=ol.length-1;n>=0;n--)if(ol[n].level===e&&!r&&(r=ol[n]),ol[n].levell.parentId===i.id);for(let l of s){let u={id:l.id,parentId:i.id,label:sr(l.label??"",n),isGroup:!1,ticket:l?.ticket,priority:l?.priority,assigned:l?.assigned,icon:l?.icon,shape:"kanbanItem",level:l.level,rx:5,ry:5,cssStyles:["text-align: left"]};e.push(u)}}return{nodes:e,edges:t,other:{},config:ge()}},"getData"),Btt=o((t,e,r,n,i)=>{let a=ge(),s=a.mindmap?.padding??ur.mindmap.padding;switch(n){case Ui.ROUNDED_RECT:case Ui.RECT:case Ui.HEXAGON:s*=2}let l={id:sr(e,a)||"kbn"+W$++,level:t,label:sr(r,a),width:a.mindmap?.maxNodeWidth??ur.mindmap.maxNodeWidth,padding:s,isGroup:!1};if(i!==void 0){let h;i.includes(` -`)?h=i+` -`:h=`{ -`+i+` -}`;let f=Kh(h,{schema:jh});if(f.shape&&(f.shape!==f.shape.toLowerCase()||f.shape.includes("_")))throw new Error(`No such shape: ${f.shape}. Shape names should be lowercase.`);f?.shape&&f.shape==="kanbanItem"&&(l.shape=f?.shape),f?.label&&(l.label=f?.label),f?.icon&&(l.icon=f?.icon.toString()),f?.assigned&&(l.assigned=f?.assigned.toString()),f?.ticket&&(l.ticket=f?.ticket.toString()),f?.priority&&(l.priority=f?.priority)}let u=Ott(t);u?l.parentId=u.id||"kbn"+W$++:Y$.push(l),ol.push(l)},"addNode"),Ui={DEFAULT:0,NO_BORDER:0,ROUNDED_RECT:1,RECT:2,CIRCLE:3,CLOUD:4,BANG:5,HEXAGON:6},Ftt=o((t,e)=>{switch(X.debug("In get type",t,e),t){case"[":return Ui.RECT;case"(":return e===")"?Ui.ROUNDED_RECT:Ui.CLOUD;case"((":return Ui.CIRCLE;case")":return Ui.CLOUD;case"))":return Ui.BANG;case"{{":return Ui.HEXAGON;default:return Ui.DEFAULT}},"getType"),$tt=o((t,e)=>{X$[t]=e},"setElementForId"),ztt=o(t=>{if(!t)return;let e=ge(),r=ol[ol.length-1];t.icon&&(r.icon=sr(t.icon,e)),t.class&&(r.cssClasses=sr(t.class,e))},"decorateNode"),Gtt=o(t=>{switch(t){case Ui.DEFAULT:return"no-border";case Ui.RECT:return"rect";case Ui.ROUNDED_RECT:return"rounded-rect";case Ui.CIRCLE:return"circle";case Ui.CLOUD:return"cloud";case Ui.BANG:return"bang";case Ui.HEXAGON:return"hexgon";default:return"no-border"}},"type2Str"),Vtt=o(()=>X,"getLogger"),Utt=o(t=>X$[t],"getElementById"),Htt={clear:Itt,addNode:Btt,getSections:nxe,getData:Ptt,nodeType:Ui,getType:Ftt,setElementForId:$tt,decorateNode:ztt,type2Str:Gtt,getLogger:Vtt,getElementById:Utt},ixe=Htt});var qtt,sxe,oxe=N(()=>{"use strict";Xt();pt();tu();Ei();La();cw();bw();qtt=o(async(t,e,r,n)=>{X.debug(`Rendering kanban diagram -`+t);let a=n.db.getData(),s=ge();s.htmlLabels=!1;let l=aa(e),u=l.append("g");u.attr("class","sections");let h=l.append("g");h.attr("class","items");let f=a.nodes.filter(v=>v.isGroup),d=0,p=10,m=[],g=25;for(let v of f){let x=s?.kanban?.sectionWidth||200;d=d+1,v.x=x*d+(d-1)*p/2,v.width=x,v.y=0,v.height=x*3,v.rx=5,v.ry=5,v.cssClasses=v.cssClasses+" section-"+d;let b=await Sm(u,v);g=Math.max(g,b?.labelBBox?.height),m.push(b)}let y=0;for(let v of f){let x=m[y];y=y+1;let b=s?.kanban?.sectionWidth||200,T=-b*3/2+g,S=T,w=a.nodes.filter(C=>C.parentId===v.id);for(let C of w){if(C.isGroup)throw new Error("Groups within groups are not allowed in Kanban diagrams");C.x=v.x,C.width=b-1.5*p;let I=(await Cm(h,C,{config:s})).node().getBBox();C.y=S+I.height/2,await P2(C),S=C.y+I.height/2+p/2}let k=x.cluster.select("rect"),A=Math.max(S-T+3*p,50)+(g-25);k.attr("height",A)}ic(void 0,l,s.mindmap?.padding??ur.kanban.padding,s.mindmap?.useMaxWidth??ur.kanban.useMaxWidth)},"draw"),sxe={draw:qtt}});var Wtt,Ytt,lxe,cxe=N(()=>{"use strict";eo();yg();Wtt=o(t=>{let e="";for(let n=0;nt.darkMode?Pt(n,i):Rt(n,i),"adjuster");for(let n=0;n` - .edge { - stroke-width: 3; - } - ${Wtt(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; - } - ${zc()} -`,"getStyles"),lxe=Ytt});var uxe={};dr(uxe,{diagram:()=>Xtt});var Xtt,hxe=N(()=>{"use strict";rxe();axe();oxe();cxe();Xtt={db:ixe,renderer:sxe,parser:txe,styles:lxe}});var j$,A4,pxe=N(()=>{"use strict";j$=(function(){var t=o(function(l,u,h,f){for(h=h||{},f=l.length;f--;h[l[f]]=u);return h},"o"),e=[1,9],r=[1,10],n=[1,5,10,12],i={trace:o(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:o(function(u,h,f,d,p,m,g){var y=m.length-1;switch(p){case 7:let v=d.findOrCreateNode(m[y-4].trim().replaceAll('""','"')),x=d.findOrCreateNode(m[y-2].trim().replaceAll('""','"')),b=parseFloat(m[y].trim());d.addLink(v,x,b);break;case 8:case 9:case 11:this.$=m[y];break;case 10:this.$=m[y-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:o(function(u,h){if(h.recoverable)this.trace(u);else{var f=new Error(u);throw f.hash=h,f}},"parseError"),parse:o(function(u){var h=this,f=[0],d=[],p=[null],m=[],g=this.table,y="",v=0,x=0,b=0,T=2,S=1,w=m.slice.call(arguments,1),k=Object.create(this.lexer),A={yy:{}};for(var C in this.yy)Object.prototype.hasOwnProperty.call(this.yy,C)&&(A.yy[C]=this.yy[C]);k.setInput(u,A.yy),A.yy.lexer=k,A.yy.parser=this,typeof k.yylloc>"u"&&(k.yylloc={});var R=k.yylloc;m.push(R);var I=k.options&&k.options.ranges;typeof A.yy.parseError=="function"?this.parseError=A.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function L(Y){f.length=f.length-2*Y,p.length=p.length-Y,m.length=m.length-Y}o(L,"popStack");function E(){var Y;return Y=d.pop()||k.lex()||S,typeof Y!="number"&&(Y instanceof Array&&(d=Y,Y=d.pop()),Y=h.symbols_[Y]||Y),Y}o(E,"lex");for(var D,_,O,M,P,B,F={},G,$,U,j;;){if(O=f[f.length-1],this.defaultActions[O]?M=this.defaultActions[O]:((D===null||typeof D>"u")&&(D=E()),M=g[O]&&g[O][D]),typeof M>"u"||!M.length||!M[0]){var te="";j=[];for(G in g[O])this.terminals_[G]&&G>T&&j.push("'"+this.terminals_[G]+"'");k.showPosition?te="Parse error on line "+(v+1)+`: -`+k.showPosition()+` -Expecting `+j.join(", ")+", got '"+(this.terminals_[D]||D)+"'":te="Parse error on line "+(v+1)+": Unexpected "+(D==S?"end of input":"'"+(this.terminals_[D]||D)+"'"),this.parseError(te,{text:k.match,token:this.terminals_[D]||D,line:k.yylineno,loc:R,expected:j})}if(M[0]instanceof Array&&M.length>1)throw new Error("Parse Error: multiple actions possible at state: "+O+", token: "+D);switch(M[0]){case 1:f.push(D),p.push(k.yytext),m.push(k.yylloc),f.push(M[1]),D=null,_?(D=_,_=null):(x=k.yyleng,y=k.yytext,v=k.yylineno,R=k.yylloc,b>0&&b--);break;case 2:if($=this.productions_[M[1]][1],F.$=p[p.length-$],F._$={first_line:m[m.length-($||1)].first_line,last_line:m[m.length-1].last_line,first_column:m[m.length-($||1)].first_column,last_column:m[m.length-1].last_column},I&&(F._$.range=[m[m.length-($||1)].range[0],m[m.length-1].range[1]]),B=this.performAction.apply(F,[y,x,v,A.yy,M[1],p,m].concat(w)),typeof B<"u")return B;$&&(f=f.slice(0,-1*$*2),p=p.slice(0,-1*$),m=m.slice(0,-1*$)),f.push(this.productions_[M[1]][0]),p.push(F.$),m.push(F._$),U=g[f[f.length-2]][f[f.length-1]],f.push(U);break;case 3:return!0}}return!0},"parse")},a=(function(){var l={EOF:1,parseError:o(function(h,f){if(this.yy.parser)this.yy.parser.parseError(h,f);else throw new Error(h)},"parseError"),setInput:o(function(u,h){return this.yy=h||this.yy||{},this._input=u,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:o(function(){var u=this._input[0];this.yytext+=u,this.yyleng++,this.offset++,this.match+=u,this.matched+=u;var h=u.match(/(?:\r\n?|\n).*/g);return h?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),u},"input"),unput:o(function(u){var h=u.length,f=u.split(/(?:\r\n?|\n)/g);this._input=u+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-h),this.offset-=h;var d=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),f.length-1&&(this.yylineno-=f.length-1);var p=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:f?(f.length===d.length?this.yylloc.first_column:0)+d[d.length-f.length].length-f[0].length:this.yylloc.first_column-h},this.options.ranges&&(this.yylloc.range=[p[0],p[0]+this.yyleng-h]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(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:o(function(u){this.unput(this.match.slice(u))},"less"),pastInput:o(function(){var u=this.matched.substr(0,this.matched.length-this.match.length);return(u.length>20?"...":"")+u.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var u=this.match;return u.length<20&&(u+=this._input.substr(0,20-u.length)),(u.substr(0,20)+(u.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var u=this.pastInput(),h=new Array(u.length+1).join("-");return u+this.upcomingInput()+` -`+h+"^"},"showPosition"),test_match:o(function(u,h){var f,d,p;if(this.options.backtrack_lexer&&(p={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&&(p.yylloc.range=this.yylloc.range.slice(0))),d=u[0].match(/(?:\r\n?|\n).*/g),d&&(this.yylineno+=d.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:d?d[d.length-1].length-d[d.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+u[0].length},this.yytext+=u[0],this.match+=u[0],this.matches=u,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(u[0].length),this.matched+=u[0],f=this.performAction.call(this,this.yy,this,h,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),f)return f;if(this._backtrack){for(var m in p)this[m]=p[m];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var u,h,f,d;this._more||(this.yytext="",this.match="");for(var p=this._currentRules(),m=0;mh[0].length)){if(h=f,d=m,this.options.backtrack_lexer){if(u=this.test_match(f,p[m]),u!==!1)return u;if(this._backtrack){h=!1;continue}else return!1}else if(!this.options.flex)break}return h?(u=this.test_match(h,p[d]),u!==!1?u:!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:o(function(){var h=this.next();return h||this.lex()},"lex"),begin:o(function(h){this.conditionStack.push(h)},"begin"),popState:o(function(){var h=this.conditionStack.length-1;return h>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(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:o(function(h){return h=this.conditionStack.length-1-Math.abs(h||0),h>=0?this.conditionStack[h]:"INITIAL"},"topState"),pushState:o(function(h){this.begin(h)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:o(function(h,f,d,p){var m=p;switch(d){case 0:return this.pushState("csv"),4;break;case 1:return this.pushState("csv"),4;break;case 2:return 10;case 3:return 5;case 4:return 12;case 5:return this.pushState("escaped_text"),18;break;case 6:return 20;case 7:return this.popState("escaped_text"),18;break;case 8:return 19}},"anonymous"),rules:[/^(?:sankey-beta\b)/i,/^(?:sankey\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:[2,3,4,5,6,7,8],inclusive:!1},escaped_text:{rules:[7,8],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,7,8],inclusive:!0}}};return l})();i.lexer=a;function s(){this.yy={}}return o(s,"Parser"),s.prototype=i,i.Parser=s,new s})();j$.parser=j$;A4=j$});var kC,EC,wC,Ztt,K$,Jtt,Q$,ert,trt,rrt,nrt,mxe,gxe=N(()=>{"use strict";Xt();gr();ci();kC=[],EC=[],wC=new Map,Ztt=o(()=>{kC=[],EC=[],wC=new Map,Sr()},"clear"),K$=class{constructor(e,r,n=0){this.source=e;this.target=r;this.value=n}static{o(this,"SankeyLink")}},Jtt=o((t,e,r)=>{kC.push(new K$(t,e,r))},"addLink"),Q$=class{constructor(e){this.ID=e}static{o(this,"SankeyNode")}},ert=o(t=>{t=tt.sanitizeText(t,ge());let e=wC.get(t);return e===void 0&&(e=new Q$(t),wC.set(t,e),EC.push(e)),e},"findOrCreateNode"),trt=o(()=>EC,"getNodes"),rrt=o(()=>kC,"getLinks"),nrt=o(()=>({nodes:EC.map(t=>({id:t.ID})),links:kC.map(t=>({source:t.source.ID,target:t.target.ID,value:t.value}))}),"getGraph"),mxe={nodesMap:wC,getConfig:o(()=>ge().sankey,"getConfig"),getNodes:trt,getLinks:rrt,getGraph:nrt,addLink:Jtt,findOrCreateNode:ert,getAccTitle:Mr,setAccTitle:Rr,getAccDescription:Or,setAccDescription:Ir,getDiagramTitle:Pr,setDiagramTitle:$r,clear:Ztt}});function _4(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 yxe=N(()=>{"use strict";o(_4,"max")});function dy(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 vxe=N(()=>{"use strict";o(dy,"min")});function py(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 xxe=N(()=>{"use strict";o(py,"sum")});var Z$=N(()=>{"use strict";yxe();vxe();xxe()});function irt(t){return t.target.depth}function J$(t){return t.depth}function ez(t,e){return e-1-t.height}function D4(t,e){return t.sourceLinks.length?t.depth:e-1}function tz(t){return t.targetLinks.length?t.depth:t.sourceLinks.length?dy(t.sourceLinks,irt)-1:0}var rz=N(()=>{"use strict";Z$();o(irt,"targetDepth");o(J$,"left");o(ez,"right");o(D4,"justify");o(tz,"center")});function my(t){return function(){return t}}var bxe=N(()=>{"use strict";o(my,"constant")});function Txe(t,e){return SC(t.source,e.source)||t.index-e.index}function wxe(t,e){return SC(t.target,e.target)||t.index-e.index}function SC(t,e){return t.y0-e.y0}function nz(t){return t.value}function art(t){return t.index}function srt(t){return t.nodes}function ort(t){return t.links}function kxe(t,e){let r=t.get(e);if(!r)throw new Error("missing: "+e);return r}function Exe({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 CC(){let t=0,e=0,r=1,n=1,i=24,a=8,s,l=art,u=D4,h,f,d=srt,p=ort,m=6;function g(){let O={nodes:d.apply(null,arguments),links:p.apply(null,arguments)};return y(O),v(O),x(O),b(O),w(O),Exe(O),O}o(g,"sankey"),g.update=function(O){return Exe(O),O},g.nodeId=function(O){return arguments.length?(l=typeof O=="function"?O:my(O),g):l},g.nodeAlign=function(O){return arguments.length?(u=typeof O=="function"?O:my(O),g):u},g.nodeSort=function(O){return arguments.length?(h=O,g):h},g.nodeWidth=function(O){return arguments.length?(i=+O,g):i},g.nodePadding=function(O){return arguments.length?(a=s=+O,g):a},g.nodes=function(O){return arguments.length?(d=typeof O=="function"?O:my(O),g):d},g.links=function(O){return arguments.length?(p=typeof O=="function"?O:my(O),g):p},g.linkSort=function(O){return arguments.length?(f=O,g):f},g.size=function(O){return arguments.length?(t=e=0,r=+O[0],n=+O[1],g):[r-t,n-e]},g.extent=function(O){return arguments.length?(t=+O[0][0],r=+O[1][0],e=+O[0][1],n=+O[1][1],g):[[t,e],[r,n]]},g.iterations=function(O){return arguments.length?(m=+O,g):m};function y({nodes:O,links:M}){for(let[B,F]of O.entries())F.index=B,F.sourceLinks=[],F.targetLinks=[];let P=new Map(O.map((B,F)=>[l(B,F,O),B]));for(let[B,F]of M.entries()){F.index=B;let{source:G,target:$}=F;typeof G!="object"&&(G=F.source=kxe(P,G)),typeof $!="object"&&($=F.target=kxe(P,$)),G.sourceLinks.push(F),$.targetLinks.push(F)}if(f!=null)for(let{sourceLinks:B,targetLinks:F}of O)B.sort(f),F.sort(f)}o(y,"computeNodeLinks");function v({nodes:O}){for(let M of O)M.value=M.fixedValue===void 0?Math.max(py(M.sourceLinks,nz),py(M.targetLinks,nz)):M.fixedValue}o(v,"computeNodeValues");function x({nodes:O}){let M=O.length,P=new Set(O),B=new Set,F=0;for(;P.size;){for(let G of P){G.depth=F;for(let{target:$}of G.sourceLinks)B.add($)}if(++F>M)throw new Error("circular link");P=B,B=new Set}}o(x,"computeNodeDepths");function b({nodes:O}){let M=O.length,P=new Set(O),B=new Set,F=0;for(;P.size;){for(let G of P){G.height=F;for(let{source:$}of G.targetLinks)B.add($)}if(++F>M)throw new Error("circular link");P=B,B=new Set}}o(b,"computeNodeHeights");function T({nodes:O}){let M=_4(O,F=>F.depth)+1,P=(r-t-i)/(M-1),B=new Array(M);for(let F of O){let G=Math.max(0,Math.min(M-1,Math.floor(u.call(null,F,M))));F.layer=G,F.x0=t+G*P,F.x1=F.x0+i,B[G]?B[G].push(F):B[G]=[F]}if(h)for(let F of B)F.sort(h);return B}o(T,"computeNodeLayers");function S(O){let M=dy(O,P=>(n-e-(P.length-1)*s)/py(P,nz));for(let P of O){let B=e;for(let F of P){F.y0=B,F.y1=B+F.value*M,B=F.y1+s;for(let G of F.sourceLinks)G.width=G.value*M}B=(n-B+s)/(P.length+1);for(let F=0;FP.length)-1)),S(M);for(let P=0;P0))continue;let te=(U/j-$.y0)*M;$.y0+=te,$.y1+=te,L($)}h===void 0&&G.sort(SC),C(G,P)}}o(k,"relaxLeftToRight");function A(O,M,P){for(let B=O.length,F=B-2;F>=0;--F){let G=O[F];for(let $ of G){let U=0,j=0;for(let{target:Y,value:oe}of $.sourceLinks){let J=oe*(Y.layer-$.layer);U+=_($,Y)*J,j+=J}if(!(j>0))continue;let te=(U/j-$.y0)*M;$.y0+=te,$.y1+=te,L($)}h===void 0&&G.sort(SC),C(G,P)}}o(A,"relaxRightToLeft");function C(O,M){let P=O.length>>1,B=O[P];I(O,B.y0-s,P-1,M),R(O,B.y1+s,P+1,M),I(O,n,O.length-1,M),R(O,e,0,M)}o(C,"resolveCollisions");function R(O,M,P,B){for(;P1e-6&&(F.y0+=G,F.y1+=G),M=F.y1+s}}o(R,"resolveCollisionsTopToBottom");function I(O,M,P,B){for(;P>=0;--P){let F=O[P],G=(F.y1-M)*B;G>1e-6&&(F.y0-=G,F.y1-=G),M=F.y0-s}}o(I,"resolveCollisionsBottomToTop");function L({sourceLinks:O,targetLinks:M}){if(f===void 0){for(let{source:{sourceLinks:P}}of M)P.sort(wxe);for(let{target:{targetLinks:P}}of O)P.sort(Txe)}}o(L,"reorderNodeLinks");function E(O){if(f===void 0)for(let{sourceLinks:M,targetLinks:P}of O)M.sort(wxe),P.sort(Txe)}o(E,"reorderLinks");function D(O,M){let P=O.y0-(O.sourceLinks.length-1)*s/2;for(let{target:B,width:F}of O.sourceLinks){if(B===M)break;P+=F+s}for(let{source:B,width:F}of M.targetLinks){if(B===O)break;P-=F}return P}o(D,"targetTop");function _(O,M){let P=M.y0-(M.targetLinks.length-1)*s/2;for(let{source:B,width:F}of M.targetLinks){if(B===O)break;P+=F+s}for(let{target:B,width:F}of O.sourceLinks){if(B===M)break;P-=F}return P}return o(_,"sourceTop"),g}var Sxe=N(()=>{"use strict";Z$();rz();bxe();o(Txe,"ascendingSourceBreadth");o(wxe,"ascendingTargetBreadth");o(SC,"ascendingBreadth");o(nz,"value");o(art,"defaultId");o(srt,"defaultNodes");o(ort,"defaultLinks");o(kxe,"find");o(Exe,"computeLinkBreadths");o(CC,"Sankey")});function sz(){this._x0=this._y0=this._x1=this._y1=null,this._=""}function Cxe(){return new sz}var iz,az,f0,lrt,oz,Axe=N(()=>{"use strict";iz=Math.PI,az=2*iz,f0=1e-6,lrt=az-f0;o(sz,"Path");o(Cxe,"path");sz.prototype=Cxe.prototype={constructor:sz,moveTo:o(function(t,e){this._+="M"+(this._x0=this._x1=+t)+","+(this._y0=this._y1=+e)},"moveTo"),closePath:o(function(){this._x1!==null&&(this._x1=this._x0,this._y1=this._y0,this._+="Z")},"closePath"),lineTo:o(function(t,e){this._+="L"+(this._x1=+t)+","+(this._y1=+e)},"lineTo"),quadraticCurveTo:o(function(t,e,r,n){this._+="Q"+ +t+","+ +e+","+(this._x1=+r)+","+(this._y1=+n)},"quadraticCurveTo"),bezierCurveTo:o(function(t,e,r,n,i,a){this._+="C"+ +t+","+ +e+","+ +r+","+ +n+","+(this._x1=+i)+","+(this._y1=+a)},"bezierCurveTo"),arcTo:o(function(t,e,r,n,i){t=+t,e=+e,r=+r,n=+n,i=+i;var a=this._x1,s=this._y1,l=r-t,u=n-e,h=a-t,f=s-e,d=h*h+f*f;if(i<0)throw new Error("negative radius: "+i);if(this._x1===null)this._+="M"+(this._x1=t)+","+(this._y1=e);else if(d>f0)if(!(Math.abs(f*l-u*h)>f0)||!i)this._+="L"+(this._x1=t)+","+(this._y1=e);else{var p=r-a,m=n-s,g=l*l+u*u,y=p*p+m*m,v=Math.sqrt(g),x=Math.sqrt(d),b=i*Math.tan((iz-Math.acos((g+d-y)/(2*v*x)))/2),T=b/x,S=b/v;Math.abs(T-1)>f0&&(this._+="L"+(t+T*h)+","+(e+T*f)),this._+="A"+i+","+i+",0,0,"+ +(f*p>h*m)+","+(this._x1=t+S*l)+","+(this._y1=e+S*u)}},"arcTo"),arc:o(function(t,e,r,n,i,a){t=+t,e=+e,r=+r,a=!!a;var s=r*Math.cos(n),l=r*Math.sin(n),u=t+s,h=e+l,f=1^a,d=a?n-i:i-n;if(r<0)throw new Error("negative radius: "+r);this._x1===null?this._+="M"+u+","+h:(Math.abs(this._x1-u)>f0||Math.abs(this._y1-h)>f0)&&(this._+="L"+u+","+h),r&&(d<0&&(d=d%az+az),d>lrt?this._+="A"+r+","+r+",0,1,"+f+","+(t-s)+","+(e-l)+"A"+r+","+r+",0,1,"+f+","+(this._x1=u)+","+(this._y1=h):d>f0&&(this._+="A"+r+","+r+",0,"+ +(d>=iz)+","+f+","+(this._x1=t+r*Math.cos(i))+","+(this._y1=e+r*Math.sin(i))))},"arc"),rect:o(function(t,e,r,n){this._+="M"+(this._x0=this._x1=+t)+","+(this._y0=this._y1=+e)+"h"+ +r+"v"+ +n+"h"+-r+"Z"},"rect"),toString:o(function(){return this._},"toString")};oz=Cxe});var _xe=N(()=>{"use strict";Axe()});function AC(t){return o(function(){return t},"constant")}var Dxe=N(()=>{"use strict";o(AC,"default")});function Lxe(t){return t[0]}function Rxe(t){return t[1]}var Nxe=N(()=>{"use strict";o(Lxe,"x");o(Rxe,"y")});var Mxe,Ixe=N(()=>{"use strict";Mxe=Array.prototype.slice});function crt(t){return t.source}function urt(t){return t.target}function hrt(t){var e=crt,r=urt,n=Lxe,i=Rxe,a=null;function s(){var l,u=Mxe.call(arguments),h=e.apply(this,u),f=r.apply(this,u);if(a||(a=l=oz()),t(a,+n.apply(this,(u[0]=h,u)),+i.apply(this,u),+n.apply(this,(u[0]=f,u)),+i.apply(this,u)),l)return a=null,l+""||null}return o(s,"link"),s.source=function(l){return arguments.length?(e=l,s):e},s.target=function(l){return arguments.length?(r=l,s):r},s.x=function(l){return arguments.length?(n=typeof l=="function"?l:AC(+l),s):n},s.y=function(l){return arguments.length?(i=typeof l=="function"?l:AC(+l),s):i},s.context=function(l){return arguments.length?(a=l??null,s):a},s}function frt(t,e,r,n,i){t.moveTo(e,r),t.bezierCurveTo(e=(e+n)/2,r,e,i,n,i)}function lz(){return hrt(frt)}var Oxe=N(()=>{"use strict";_xe();Ixe();Dxe();Nxe();o(crt,"linkSource");o(urt,"linkTarget");o(hrt,"link");o(frt,"curveHorizontal");o(lz,"linkHorizontal")});var Pxe=N(()=>{"use strict";Oxe()});function drt(t){return[t.source.x1,t.y0]}function prt(t){return[t.target.x0,t.y1]}function _C(){return lz().source(drt).target(prt)}var Bxe=N(()=>{"use strict";Pxe();o(drt,"horizontalSource");o(prt,"horizontalTarget");o(_C,"default")});var Fxe=N(()=>{"use strict";Sxe();rz();Bxe()});var L4,$xe=N(()=>{"use strict";L4=class t{static{o(this,"Uid")}static{this.count=0}static next(e){return new t(e+ ++t.count)}constructor(e){this.id=e,this.href=`#${e}`}toString(){return"url("+this.href+")"}}});var mrt,grt,zxe,Gxe=N(()=>{"use strict";Xt();yr();Fxe();Ei();$xe();mrt={left:J$,right:ez,center:tz,justify:D4},grt=o(function(t,e,r,n){let{securityLevel:i,sankey:a}=ge(),s=G3.sankey,l;i==="sandbox"&&(l=qe("#i"+e));let u=i==="sandbox"?qe(l.nodes()[0].contentDocument.body):qe("body"),h=i==="sandbox"?u.select(`[id="${e}"]`):qe(`[id="${e}"]`),f=a?.width??s.width,d=a?.height??s.width,p=a?.useMaxWidth??s.useMaxWidth,m=a?.nodeAlignment??s.nodeAlignment,g=a?.prefix??s.prefix,y=a?.suffix??s.suffix,v=a?.showValues??s.showValues,x=n.db.getGraph(),b=mrt[m];CC().nodeId(I=>I.id).nodeWidth(10).nodePadding(10+(v?15:0)).nodeAlign(b).extent([[0,0],[f,d]])(x);let w=no(YD);h.append("g").attr("class","nodes").selectAll(".node").data(x.nodes).join("g").attr("class","node").attr("id",I=>(I.uid=L4.next("node-")).id).attr("transform",function(I){return"translate("+I.x0+","+I.y0+")"}).attr("x",I=>I.x0).attr("y",I=>I.y0).append("rect").attr("height",I=>I.y1-I.y0).attr("width",I=>I.x1-I.x0).attr("fill",I=>w(I.id));let k=o(({id:I,value:L})=>v?`${I} -${g}${Math.round(L*100)/100}${y}`:I,"getText");h.append("g").attr("class","node-labels").attr("font-size",14).selectAll("text").data(x.nodes).join("text").attr("x",I=>I.x0(I.y1+I.y0)/2).attr("dy",`${v?"0":"0.35"}em`).attr("text-anchor",I=>I.x0(L.uid=L4.next("linearGradient-")).id).attr("gradientUnits","userSpaceOnUse").attr("x1",L=>L.source.x1).attr("x2",L=>L.target.x0);I.append("stop").attr("offset","0%").attr("stop-color",L=>w(L.source.id)),I.append("stop").attr("offset","100%").attr("stop-color",L=>w(L.target.id))}let R;switch(C){case"gradient":R=o(I=>I.uid,"coloring");break;case"source":R=o(I=>w(I.source.id),"coloring");break;case"target":R=o(I=>w(I.target.id),"coloring");break;default:R=C}A.append("path").attr("d",_C()).attr("stroke",R).attr("stroke-width",I=>Math.max(1,I.width)),ic(void 0,h,0,p)},"draw"),zxe={draw:grt}});var Vxe,Uxe=N(()=>{"use strict";Vxe=o(t=>t.replaceAll(/^[^\S\n\r]+|[^\S\n\r]+$/g,"").replaceAll(/([\n\r])+/g,` -`).trim(),"prepareTextForParsing")});var yrt,Hxe,qxe=N(()=>{"use strict";yrt=o(t=>`.label { - font-family: ${t.fontFamily}; - }`,"getStyles"),Hxe=yrt});var Wxe={};dr(Wxe,{diagram:()=>xrt});var vrt,xrt,Yxe=N(()=>{"use strict";pxe();gxe();Gxe();Uxe();qxe();vrt=A4.parse.bind(A4);A4.parse=t=>vrt(Vxe(t));xrt={styles:Hxe,parser:A4,db:mxe,renderer:zxe}});var krt,gy,cz=N(()=>{"use strict";qn();La();tr();ci();krt=ur.packet,gy=class{constructor(){this.packet=[];this.setAccTitle=Rr;this.getAccTitle=Mr;this.setDiagramTitle=$r;this.getDiagramTitle=Pr;this.getAccDescription=Or;this.setAccDescription=Ir}static{o(this,"PacketDB")}getConfig(){let e=Vn({...krt,...Qt().packet});return e.showBits&&(e.paddingY+=10),e}getPacket(){return this.packet}pushWord(e){e.length>0&&this.packet.push(e)}clear(){Sr(),this.packet=[]}}});var Ert,Srt,Crt,uz,Kxe=N(()=>{"use strict";Uf();pt();r0();cz();Ert=1e4,Srt=o((t,e)=>{nl(t,e);let r=-1,n=[],i=1,{bitsPerRow:a}=e.getConfig();for(let{start:s,end:l,bits:u,label:h}of t.blocks){if(s!==void 0&&l!==void 0&&l{if(t.start===void 0)throw new Error("start should have been set during first phase");if(t.end===void 0)throw new Error("end should have been set during first phase");if(t.start>t.end)throw new Error(`Block start ${t.start} is greater than block end ${t.end}.`);if(t.end+1<=e*r)return[t,void 0];let n=e*r-1,i=e*r;return[{start:t.start,end:n,label:t.label,bits:n-t.start},{start:i,end:t.end,label:t.label,bits:t.end-i}]},"getNextFittingBlock"),uz={parser:{yy:void 0},parse:o(async t=>{let e=await bs("packet",t),r=uz.parser?.yy;if(!(r instanceof gy))throw new Error("parser.parser?.yy was not a PacketDB. This is due to a bug within Mermaid, please report this issue at https://github.com/mermaid-js/mermaid/issues.");X.debug(e),Srt(e,r)},"parse")}});var Art,_rt,Qxe,Zxe=N(()=>{"use strict";tu();Ei();Art=o((t,e,r,n)=>{let i=n.db,a=i.getConfig(),{rowHeight:s,paddingY:l,bitWidth:u,bitsPerRow:h}=a,f=i.getPacket(),d=i.getDiagramTitle(),p=s+l,m=p*(f.length+1)-(d?0:s),g=u*h+2,y=aa(e);y.attr("viewbox",`0 0 ${g} ${m}`),mn(y,m,g,a.useMaxWidth);for(let[v,x]of f.entries())_rt(y,x,v,a);y.append("text").text(d).attr("x",g/2).attr("y",m-p/2).attr("dominant-baseline","middle").attr("text-anchor","middle").attr("class","packetTitle")},"draw"),_rt=o((t,e,r,{rowHeight:n,paddingX:i,paddingY:a,bitWidth:s,bitsPerRow:l,showBits:u})=>{let h=t.append("g"),f=r*(n+a)+a;for(let d of e){let p=d.start%l*s+1,m=(d.end-d.start+1)*s-i;if(h.append("rect").attr("x",p).attr("y",f).attr("width",m).attr("height",n).attr("class","packetBlock"),h.append("text").attr("x",p+m/2).attr("y",f+n/2).attr("class","packetLabel").attr("dominant-baseline","middle").attr("text-anchor","middle").text(d.label),!u)continue;let g=d.end===d.start,y=f-2;h.append("text").attr("x",p+(g?m/2:0)).attr("y",y).attr("class","packetByte start").attr("dominant-baseline","auto").attr("text-anchor",g?"middle":"start").text(d.start),g||h.append("text").attr("x",p+m).attr("y",y).attr("class","packetByte end").attr("dominant-baseline","auto").attr("text-anchor","end").text(d.end)}},"drawWord"),Qxe={draw:Art}});var Drt,Jxe,ebe=N(()=>{"use strict";tr();Drt={byteFontSize:"10px",startByteColor:"black",endByteColor:"black",labelColor:"black",labelFontSize:"12px",titleColor:"black",titleFontSize:"14px",blockStrokeColor:"black",blockStrokeWidth:"1",blockFillColor:"#efefef"},Jxe=o(({packet:t}={})=>{let e=Vn(Drt,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")});var tbe={};dr(tbe,{diagram:()=>Lrt});var Lrt,rbe=N(()=>{"use strict";cz();Kxe();Zxe();ebe();Lrt={parser:uz,get db(){return new gy},renderer:Qxe,styles:Jxe}});var yy,abe,d0,Mrt,Irt,sbe,Ort,Prt,Brt,Frt,$rt,zrt,Grt,p0,hz=N(()=>{"use strict";qn();La();tr();ci();yy={showLegend:!0,ticks:5,max:null,min:0,graticule:"circle"},abe={axes:[],curves:[],options:yy},d0=structuredClone(abe),Mrt=ur.radar,Irt=o(()=>Vn({...Mrt,...Qt().radar}),"getConfig"),sbe=o(()=>d0.axes,"getAxes"),Ort=o(()=>d0.curves,"getCurves"),Prt=o(()=>d0.options,"getOptions"),Brt=o(t=>{d0.axes=t.map(e=>({name:e.name,label:e.label??e.name}))},"setAxes"),Frt=o(t=>{d0.curves=t.map(e=>({name:e.name,label:e.label??e.name,entries:$rt(e.entries)}))},"setCurves"),$rt=o(t=>{if(t[0].axis==null)return t.map(r=>r.value);let e=sbe();if(e.length===0)throw new Error("Axes must be populated before curves for reference entries");return e.map(r=>{let n=t.find(i=>i.axis?.$refText===r.name);if(n===void 0)throw new Error("Missing entry for axis "+r.label);return n.value})},"computeCurveEntries"),zrt=o(t=>{let e=t.reduce((r,n)=>(r[n.name]=n,r),{});d0.options={showLegend:e.showLegend?.value??yy.showLegend,ticks:e.ticks?.value??yy.ticks,max:e.max?.value??yy.max,min:e.min?.value??yy.min,graticule:e.graticule?.value??yy.graticule}},"setOptions"),Grt=o(()=>{Sr(),d0=structuredClone(abe)},"clear"),p0={getAxes:sbe,getCurves:Ort,getOptions:Prt,setAxes:Brt,setCurves:Frt,setOptions:zrt,getConfig:Irt,clear:Grt,setAccTitle:Rr,getAccTitle:Mr,setDiagramTitle:$r,getDiagramTitle:Pr,getAccDescription:Or,setAccDescription:Ir}});var Vrt,obe,lbe=N(()=>{"use strict";Uf();pt();r0();hz();Vrt=o(t=>{nl(t,p0);let{axes:e,curves:r,options:n}=t;p0.setAxes(e),p0.setCurves(r),p0.setOptions(n)},"populate"),obe={parse:o(async t=>{let e=await bs("radar",t);X.debug(e),Vrt(e)},"parse")}});function Yrt(t,e,r,n,i,a,s){let l=e.length,u=Math.min(s.width,s.height)/2;r.forEach((h,f)=>{if(h.entries.length!==l)return;let d=h.entries.map((p,m)=>{let g=2*Math.PI*m/l-Math.PI/2,y=Xrt(p,n,i,u),v=y*Math.cos(g),x=y*Math.sin(g);return{x:v,y:x}});a==="circle"?t.append("path").attr("d",jrt(d,s.curveTension)).attr("class",`radarCurve-${f}`):a==="polygon"&&t.append("polygon").attr("points",d.map(p=>`${p.x},${p.y}`).join(" ")).attr("class",`radarCurve-${f}`)})}function Xrt(t,e,r,n){let i=Math.min(Math.max(t,e),r);return n*(i-e)/(r-e)}function jrt(t,e){let r=t.length,n=`M${t[0].x},${t[0].y}`;for(let i=0;i{let h=t.append("g").attr("transform",`translate(${i}, ${a+u*s})`);h.append("rect").attr("width",12).attr("height",12).attr("class",`radarLegendBox-${u}`),h.append("text").attr("x",16).attr("y",0).attr("class","radarLegendText").text(l.label)})}var Urt,Hrt,qrt,Wrt,cbe,ube=N(()=>{"use strict";tu();Urt=o((t,e,r,n)=>{let i=n.db,a=i.getAxes(),s=i.getCurves(),l=i.getOptions(),u=i.getConfig(),h=i.getDiagramTitle(),f=aa(e),d=Hrt(f,u),p=l.max??Math.max(...s.map(y=>Math.max(...y.entries))),m=l.min,g=Math.min(u.width,u.height)/2;qrt(d,a,g,l.ticks,l.graticule),Wrt(d,a,g,u),Yrt(d,a,s,m,p,l.graticule,u),Krt(d,s,l.showLegend,u),d.append("text").attr("class","radarTitle").text(h).attr("x",0).attr("y",-u.height/2-u.marginTop)},"draw"),Hrt=o((t,e)=>{let r=e.width+e.marginLeft+e.marginRight,n=e.height+e.marginTop+e.marginBottom,i={x:e.marginLeft+e.width/2,y:e.marginTop+e.height/2};return t.attr("viewbox",`0 0 ${r} ${n}`).attr("width",r).attr("height",n),t.append("g").attr("transform",`translate(${i.x}, ${i.y})`)},"drawFrame"),qrt=o((t,e,r,n,i)=>{if(i==="circle")for(let a=0;a{let d=2*f*Math.PI/a-Math.PI/2,p=l*Math.cos(d),m=l*Math.sin(d);return`${p},${m}`}).join(" ");t.append("polygon").attr("points",u).attr("class","radarGraticule")}}},"drawGraticule"),Wrt=o((t,e,r,n)=>{let i=e.length;for(let a=0;a{"use strict";tr();Oy();qn();Qrt=o((t,e)=>{let r="";for(let n=0;n{let e=mh(),r=Qt(),n=Vn(e,r.themeVariables),i=Vn(n.radar,t);return{themeVariables:n,radarOptions:i}},"buildRadarStyleOptions"),hbe=o(({radar:t}={})=>{let{themeVariables:e,radarOptions:r}=Zrt(t);return` - .radarTitle { - font-size: ${e.fontSize}; - color: ${e.titleColor}; - dominant-baseline: hanging; - text-anchor: middle; - } - .radarAxisLine { - stroke: ${r.axisColor}; - stroke-width: ${r.axisStrokeWidth}; - } - .radarAxisLabel { - dominant-baseline: middle; - text-anchor: middle; - font-size: ${r.axisLabelFontSize}px; - color: ${r.axisColor}; - } - .radarGraticule { - fill: ${r.graticuleColor}; - fill-opacity: ${r.graticuleOpacity}; - stroke: ${r.graticuleColor}; - stroke-width: ${r.graticuleStrokeWidth}; - } - .radarLegendText { - text-anchor: start; - font-size: ${r.legendFontSize}px; - dominant-baseline: hanging; - } - ${Qrt(e,r)} - `},"styles")});var dbe={};dr(dbe,{diagram:()=>Jrt});var Jrt,pbe=N(()=>{"use strict";hz();lbe();ube();fbe();Jrt={parser:obe,db:p0,renderer:cbe,styles:hbe}});var fz,ybe,vbe=N(()=>{"use strict";fz=(function(){var t=o(function(T,S,w,k){for(w=w||{},k=T.length;k--;w[T[k]]=S);return w},"o"),e=[1,15],r=[1,7],n=[1,13],i=[1,14],a=[1,19],s=[1,16],l=[1,17],u=[1,18],h=[8,30],f=[8,10,21,28,29,30,31,39,43,46],d=[1,23],p=[1,24],m=[8,10,15,16,21,28,29,30,31,39,43,46],g=[8,10,15,16,21,27,28,29,30,31,39,43,46],y=[1,49],v={trace:o(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,NODE_ID:31,nodeShapeNLabel:32,dirList:33,DIR:34,NODE_DSTART:35,NODE_DEND:36,BLOCK_ARROW_START:37,BLOCK_ARROW_END:38,classDef:39,CLASSDEF_ID:40,CLASSDEF_STYLEOPTS:41,DEFAULT:42,class:43,CLASSENTITY_IDS:44,STYLECLASS:45,style:46,STYLE_ENTITY_IDS:47,STYLE_DEFINITION_DATA:48,$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:"NODE_ID",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"},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],[33,1],[33,2],[32,3],[32,4],[23,3],[23,3],[24,3],[25,3]],performAction:o(function(S,w,k,A,C,R,I){var L=R.length-1;switch(C){case 4:A.getLogger().debug("Rule: separator (NL) ");break;case 5:A.getLogger().debug("Rule: separator (Space) ");break;case 6:A.getLogger().debug("Rule: separator (EOF) ");break;case 7:A.getLogger().debug("Rule: hierarchy: ",R[L-1]),A.setHierarchy(R[L-1]);break;case 8:A.getLogger().debug("Stop NL ");break;case 9:A.getLogger().debug("Stop EOF ");break;case 10:A.getLogger().debug("Stop NL2 ");break;case 11:A.getLogger().debug("Stop EOF2 ");break;case 12:A.getLogger().debug("Rule: statement: ",R[L]),typeof R[L].length=="number"?this.$=R[L]:this.$=[R[L]];break;case 13:A.getLogger().debug("Rule: statement #2: ",R[L-1]),this.$=[R[L-1]].concat(R[L]);break;case 14:A.getLogger().debug("Rule: link: ",R[L],S),this.$={edgeTypeStr:R[L],label:""};break;case 15:A.getLogger().debug("Rule: LABEL link: ",R[L-3],R[L-1],R[L]),this.$={edgeTypeStr:R[L],label:R[L-1]};break;case 18:let E=parseInt(R[L]),D=A.generateId();this.$={id:D,type:"space",label:"",width:E,children:[]};break;case 23:A.getLogger().debug("Rule: (nodeStatement link node) ",R[L-2],R[L-1],R[L]," typestr: ",R[L-1].edgeTypeStr);let _=A.edgeStrToEdgeData(R[L-1].edgeTypeStr);this.$=[{id:R[L-2].id,label:R[L-2].label,type:R[L-2].type,directions:R[L-2].directions},{id:R[L-2].id+"-"+R[L].id,start:R[L-2].id,end:R[L].id,label:R[L-1].label,type:"edge",directions:R[L].directions,arrowTypeEnd:_,arrowTypeStart:"arrow_open"},{id:R[L].id,label:R[L].label,type:A.typeStr2Type(R[L].typeStr),directions:R[L].directions}];break;case 24:A.getLogger().debug("Rule: nodeStatement (abc88 node size) ",R[L-1],R[L]),this.$={id:R[L-1].id,label:R[L-1].label,type:A.typeStr2Type(R[L-1].typeStr),directions:R[L-1].directions,widthInColumns:parseInt(R[L],10)};break;case 25:A.getLogger().debug("Rule: nodeStatement (node) ",R[L]),this.$={id:R[L].id,label:R[L].label,type:A.typeStr2Type(R[L].typeStr),directions:R[L].directions,widthInColumns:1};break;case 26:A.getLogger().debug("APA123",this?this:"na"),A.getLogger().debug("COLUMNS: ",R[L]),this.$={type:"column-setting",columns:R[L]==="auto"?-1:parseInt(R[L])};break;case 27:A.getLogger().debug("Rule: id-block statement : ",R[L-2],R[L-1]);let O=A.generateId();this.$={...R[L-2],type:"composite",children:R[L-1]};break;case 28:A.getLogger().debug("Rule: blockStatement : ",R[L-2],R[L-1],R[L]);let M=A.generateId();this.$={id:M,type:"composite",label:"",children:R[L-1]};break;case 29:A.getLogger().debug("Rule: node (NODE_ID separator): ",R[L]),this.$={id:R[L]};break;case 30:A.getLogger().debug("Rule: node (NODE_ID nodeShapeNLabel separator): ",R[L-1],R[L]),this.$={id:R[L-1],label:R[L].label,typeStr:R[L].typeStr,directions:R[L].directions};break;case 31:A.getLogger().debug("Rule: dirList: ",R[L]),this.$=[R[L]];break;case 32:A.getLogger().debug("Rule: dirList: ",R[L-1],R[L]),this.$=[R[L-1]].concat(R[L]);break;case 33:A.getLogger().debug("Rule: nodeShapeNLabel: ",R[L-2],R[L-1],R[L]),this.$={typeStr:R[L-2]+R[L],label:R[L-1]};break;case 34:A.getLogger().debug("Rule: BLOCK_ARROW nodeShapeNLabel: ",R[L-3],R[L-2]," #3:",R[L-1],R[L]),this.$={typeStr:R[L-3]+R[L],label:R[L-2],directions:R[L-1]};break;case 35:case 36:this.$={type:"classDef",id:R[L-1].trim(),css:R[L].trim()};break;case 37:this.$={type:"applyClass",id:R[L-1].trim(),styleClass:R[L].trim()};break;case 38:this.$={type:"applyStyles",id:R[L-1].trim(),stylesStr:R[L].trim()};break}},"anonymous"),table:[{9:1,10:[1,2]},{1:[3]},{10:e,11:3,13:4,19:5,20:6,21:r,22:8,23:9,24:10,25:11,26:12,28:n,29:i,31:a,39:s,43:l,46:u},{8:[1,20]},t(h,[2,12],{13:4,19:5,20:6,22:8,23:9,24:10,25:11,26:12,11:21,10:e,21:r,28:n,29:i,31:a,39:s,43:l,46:u}),t(f,[2,16],{14:22,15:d,16:p}),t(f,[2,17]),t(f,[2,18]),t(f,[2,19]),t(f,[2,20]),t(f,[2,21]),t(f,[2,22]),t(m,[2,25],{27:[1,25]}),t(f,[2,26]),{19:26,26:12,31:a},{10:e,11:27,13:4,19:5,20:6,21:r,22:8,23:9,24:10,25:11,26:12,28:n,29:i,31:a,39:s,43:l,46:u},{40:[1,28],42:[1,29]},{44:[1,30]},{47:[1,31]},t(g,[2,29],{32:32,35:[1,33],37:[1,34]}),{1:[2,7]},t(h,[2,13]),{26:35,31:a},{31:[2,14]},{17:[1,36]},t(m,[2,24]),{10:e,11:37,13:4,14:22,15:d,16:p,19:5,20:6,21:r,22:8,23:9,24:10,25:11,26:12,28:n,29:i,31:a,39:s,43:l,46:u},{30:[1,38]},{41:[1,39]},{41:[1,40]},{45:[1,41]},{48:[1,42]},t(g,[2,30]),{18:[1,43]},{18:[1,44]},t(m,[2,23]),{18:[1,45]},{30:[1,46]},t(f,[2,28]),t(f,[2,35]),t(f,[2,36]),t(f,[2,37]),t(f,[2,38]),{36:[1,47]},{33:48,34:y},{15:[1,50]},t(f,[2,27]),t(g,[2,33]),{38:[1,51]},{33:52,34:y,38:[2,31]},{31:[2,15]},t(g,[2,34]),{38:[2,32]}],defaultActions:{20:[2,7],23:[2,14],50:[2,15],52:[2,32]},parseError:o(function(S,w){if(w.recoverable)this.trace(S);else{var k=new Error(S);throw k.hash=w,k}},"parseError"),parse:o(function(S){var w=this,k=[0],A=[],C=[null],R=[],I=this.table,L="",E=0,D=0,_=0,O=2,M=1,P=R.slice.call(arguments,1),B=Object.create(this.lexer),F={yy:{}};for(var G in this.yy)Object.prototype.hasOwnProperty.call(this.yy,G)&&(F.yy[G]=this.yy[G]);B.setInput(S,F.yy),F.yy.lexer=B,F.yy.parser=this,typeof B.yylloc>"u"&&(B.yylloc={});var $=B.yylloc;R.push($);var U=B.options&&B.options.ranges;typeof F.yy.parseError=="function"?this.parseError=F.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function j(Te){k.length=k.length-2*Te,C.length=C.length-Te,R.length=R.length-Te}o(j,"popStack");function te(){var Te;return Te=A.pop()||B.lex()||M,typeof Te!="number"&&(Te instanceof Array&&(A=Te,Te=A.pop()),Te=w.symbols_[Te]||Te),Te}o(te,"lex");for(var Y,oe,J,ue,re,ee,Z={},K,ae,Q,de;;){if(J=k[k.length-1],this.defaultActions[J]?ue=this.defaultActions[J]:((Y===null||typeof Y>"u")&&(Y=te()),ue=I[J]&&I[J][Y]),typeof ue>"u"||!ue.length||!ue[0]){var ne="";de=[];for(K in I[J])this.terminals_[K]&&K>O&&de.push("'"+this.terminals_[K]+"'");B.showPosition?ne="Parse error on line "+(E+1)+`: -`+B.showPosition()+` -Expecting `+de.join(", ")+", got '"+(this.terminals_[Y]||Y)+"'":ne="Parse error on line "+(E+1)+": Unexpected "+(Y==M?"end of input":"'"+(this.terminals_[Y]||Y)+"'"),this.parseError(ne,{text:B.match,token:this.terminals_[Y]||Y,line:B.yylineno,loc:$,expected:de})}if(ue[0]instanceof Array&&ue.length>1)throw new Error("Parse Error: multiple actions possible at state: "+J+", token: "+Y);switch(ue[0]){case 1:k.push(Y),C.push(B.yytext),R.push(B.yylloc),k.push(ue[1]),Y=null,oe?(Y=oe,oe=null):(D=B.yyleng,L=B.yytext,E=B.yylineno,$=B.yylloc,_>0&&_--);break;case 2:if(ae=this.productions_[ue[1]][1],Z.$=C[C.length-ae],Z._$={first_line:R[R.length-(ae||1)].first_line,last_line:R[R.length-1].last_line,first_column:R[R.length-(ae||1)].first_column,last_column:R[R.length-1].last_column},U&&(Z._$.range=[R[R.length-(ae||1)].range[0],R[R.length-1].range[1]]),ee=this.performAction.apply(Z,[L,D,E,F.yy,ue[1],C,R].concat(P)),typeof ee<"u")return ee;ae&&(k=k.slice(0,-1*ae*2),C=C.slice(0,-1*ae),R=R.slice(0,-1*ae)),k.push(this.productions_[ue[1]][0]),C.push(Z.$),R.push(Z._$),Q=I[k[k.length-2]][k[k.length-1]],k.push(Q);break;case 3:return!0}}return!0},"parse")},x=(function(){var T={EOF:1,parseError:o(function(w,k){if(this.yy.parser)this.yy.parser.parseError(w,k);else throw new Error(w)},"parseError"),setInput:o(function(S,w){return this.yy=w||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:o(function(){var S=this._input[0];this.yytext+=S,this.yyleng++,this.offset++,this.match+=S,this.matched+=S;var w=S.match(/(?:\r\n?|\n).*/g);return w?(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:o(function(S){var w=S.length,k=S.split(/(?:\r\n?|\n)/g);this._input=S+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-w),this.offset-=w;var A=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),k.length-1&&(this.yylineno-=k.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:k?(k.length===A.length?this.yylloc.first_column:0)+A[A.length-k.length].length-k[0].length:this.yylloc.first_column-w},this.options.ranges&&(this.yylloc.range=[C[0],C[0]+this.yyleng-w]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(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:o(function(S){this.unput(this.match.slice(S))},"less"),pastInput:o(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:o(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:o(function(){var S=this.pastInput(),w=new Array(S.length+1).join("-");return S+this.upcomingInput()+` -`+w+"^"},"showPosition"),test_match:o(function(S,w){var k,A,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))),A=S[0].match(/(?:\r\n?|\n).*/g),A&&(this.yylineno+=A.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:A?A[A.length-1].length-A[A.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],k=this.performAction.call(this,this.yy,this,w,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),k)return k;if(this._backtrack){for(var R in C)this[R]=C[R];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var S,w,k,A;this._more||(this.yytext="",this.match="");for(var C=this._currentRules(),R=0;Rw[0].length)){if(w=k,A=R,this.options.backtrack_lexer){if(S=this.test_match(k,C[R]),S!==!1)return S;if(this._backtrack){w=!1;continue}else return!1}else if(!this.options.flex)break}return w?(S=this.test_match(w,C[A]),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:o(function(){var w=this.next();return w||this.lex()},"lex"),begin:o(function(w){this.conditionStack.push(w)},"begin"),popState:o(function(){var w=this.conditionStack.length-1;return w>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(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:o(function(w){return w=this.conditionStack.length-1-Math.abs(w||0),w>=0?this.conditionStack[w]:"INITIAL"},"topState"),pushState:o(function(w){this.begin(w)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{},performAction:o(function(w,k,A,C){var R=C;switch(A){case 0:return w.getLogger().debug("Found block-beta"),10;break;case 1:return w.getLogger().debug("Found id-block"),29;break;case 2:return w.getLogger().debug("Found block"),10;break;case 3:w.getLogger().debug(".",k.yytext);break;case 4:w.getLogger().debug("_",k.yytext);break;case 5:return 5;case 6:return k.yytext=-1,28;break;case 7:return k.yytext=k.yytext.replace(/columns\s+/,""),w.getLogger().debug("COLUMNS (LEX)",k.yytext),28;break;case 8:this.pushState("md_string");break;case 9:return"MD_STR";case 10:this.popState();break;case 11:this.pushState("string");break;case 12:w.getLogger().debug("LEX: POPPING STR:",k.yytext),this.popState();break;case 13:return w.getLogger().debug("LEX: STR end:",k.yytext),"STR";break;case 14:return k.yytext=k.yytext.replace(/space\:/,""),w.getLogger().debug("SPACE NUM (LEX)",k.yytext),21;break;case 15:return k.yytext="1",w.getLogger().debug("COLUMNS (LEX)",k.yytext),21;break;case 16:return 42;case 17:return"LINKSTYLE";case 18:return"INTERPOLATE";case 19:return this.pushState("CLASSDEF"),39;break;case 20:return this.popState(),this.pushState("CLASSDEFID"),"DEFAULT_CLASSDEF_ID";break;case 21:return this.popState(),this.pushState("CLASSDEFID"),40;break;case 22:return this.popState(),41;break;case 23:return this.pushState("CLASS"),43;break;case 24:return this.popState(),this.pushState("CLASS_STYLE"),44;break;case 25:return this.popState(),45;break;case 26:return this.pushState("STYLE_STMNT"),46;break;case 27:return this.popState(),this.pushState("STYLE_DEFINITION"),47;break;case 28:return this.popState(),48;break;case 29:return this.pushState("acc_title"),"acc_title";break;case 30:return this.popState(),"acc_title_value";break;case 31:return this.pushState("acc_descr"),"acc_descr";break;case 32:return this.popState(),"acc_descr_value";break;case 33:this.pushState("acc_descr_multiline");break;case 34:this.popState();break;case 35:return"acc_descr_multiline_value";case 36:return 30;case 37:return this.popState(),w.getLogger().debug("Lex: (("),"NODE_DEND";break;case 38:return this.popState(),w.getLogger().debug("Lex: (("),"NODE_DEND";break;case 39:return this.popState(),w.getLogger().debug("Lex: ))"),"NODE_DEND";break;case 40:return this.popState(),w.getLogger().debug("Lex: (("),"NODE_DEND";break;case 41:return this.popState(),w.getLogger().debug("Lex: (("),"NODE_DEND";break;case 42:return this.popState(),w.getLogger().debug("Lex: (-"),"NODE_DEND";break;case 43:return this.popState(),w.getLogger().debug("Lex: -)"),"NODE_DEND";break;case 44:return this.popState(),w.getLogger().debug("Lex: (("),"NODE_DEND";break;case 45:return this.popState(),w.getLogger().debug("Lex: ]]"),"NODE_DEND";break;case 46:return this.popState(),w.getLogger().debug("Lex: ("),"NODE_DEND";break;case 47:return this.popState(),w.getLogger().debug("Lex: ])"),"NODE_DEND";break;case 48:return this.popState(),w.getLogger().debug("Lex: /]"),"NODE_DEND";break;case 49:return this.popState(),w.getLogger().debug("Lex: /]"),"NODE_DEND";break;case 50:return this.popState(),w.getLogger().debug("Lex: )]"),"NODE_DEND";break;case 51:return this.popState(),w.getLogger().debug("Lex: )"),"NODE_DEND";break;case 52:return this.popState(),w.getLogger().debug("Lex: ]>"),"NODE_DEND";break;case 53:return this.popState(),w.getLogger().debug("Lex: ]"),"NODE_DEND";break;case 54:return w.getLogger().debug("Lexa: -)"),this.pushState("NODE"),35;break;case 55:return w.getLogger().debug("Lexa: (-"),this.pushState("NODE"),35;break;case 56:return w.getLogger().debug("Lexa: ))"),this.pushState("NODE"),35;break;case 57:return w.getLogger().debug("Lexa: )"),this.pushState("NODE"),35;break;case 58:return w.getLogger().debug("Lex: ((("),this.pushState("NODE"),35;break;case 59:return w.getLogger().debug("Lexa: )"),this.pushState("NODE"),35;break;case 60:return w.getLogger().debug("Lexa: )"),this.pushState("NODE"),35;break;case 61:return w.getLogger().debug("Lexa: )"),this.pushState("NODE"),35;break;case 62:return w.getLogger().debug("Lexc: >"),this.pushState("NODE"),35;break;case 63:return w.getLogger().debug("Lexa: (["),this.pushState("NODE"),35;break;case 64:return w.getLogger().debug("Lexa: )"),this.pushState("NODE"),35;break;case 65:return this.pushState("NODE"),35;break;case 66:return this.pushState("NODE"),35;break;case 67:return this.pushState("NODE"),35;break;case 68:return this.pushState("NODE"),35;break;case 69:return this.pushState("NODE"),35;break;case 70:return this.pushState("NODE"),35;break;case 71:return this.pushState("NODE"),35;break;case 72:return w.getLogger().debug("Lexa: ["),this.pushState("NODE"),35;break;case 73:return this.pushState("BLOCK_ARROW"),w.getLogger().debug("LEX ARR START"),37;break;case 74:return w.getLogger().debug("Lex: NODE_ID",k.yytext),31;break;case 75:return w.getLogger().debug("Lex: EOF",k.yytext),8;break;case 76:this.pushState("md_string");break;case 77:this.pushState("md_string");break;case 78:return"NODE_DESCR";case 79:this.popState();break;case 80:w.getLogger().debug("Lex: Starting string"),this.pushState("string");break;case 81:w.getLogger().debug("LEX ARR: Starting string"),this.pushState("string");break;case 82:return w.getLogger().debug("LEX: NODE_DESCR:",k.yytext),"NODE_DESCR";break;case 83:w.getLogger().debug("LEX POPPING"),this.popState();break;case 84:w.getLogger().debug("Lex: =>BAE"),this.pushState("ARROW_DIR");break;case 85:return k.yytext=k.yytext.replace(/^,\s*/,""),w.getLogger().debug("Lex (right): dir:",k.yytext),"DIR";break;case 86:return k.yytext=k.yytext.replace(/^,\s*/,""),w.getLogger().debug("Lex (left):",k.yytext),"DIR";break;case 87:return k.yytext=k.yytext.replace(/^,\s*/,""),w.getLogger().debug("Lex (x):",k.yytext),"DIR";break;case 88:return k.yytext=k.yytext.replace(/^,\s*/,""),w.getLogger().debug("Lex (y):",k.yytext),"DIR";break;case 89:return k.yytext=k.yytext.replace(/^,\s*/,""),w.getLogger().debug("Lex (up):",k.yytext),"DIR";break;case 90:return k.yytext=k.yytext.replace(/^,\s*/,""),w.getLogger().debug("Lex (down):",k.yytext),"DIR";break;case 91:return k.yytext="]>",w.getLogger().debug("Lex (ARROW_DIR end):",k.yytext),this.popState(),this.popState(),"BLOCK_ARROW_END";break;case 92:return w.getLogger().debug("Lex: LINK","#"+k.yytext+"#"),15;break;case 93:return w.getLogger().debug("Lex: LINK",k.yytext),15;break;case 94:return w.getLogger().debug("Lex: LINK",k.yytext),15;break;case 95:return w.getLogger().debug("Lex: LINK",k.yytext),15;break;case 96:return w.getLogger().debug("Lex: START_LINK",k.yytext),this.pushState("LLABEL"),16;break;case 97:return w.getLogger().debug("Lex: START_LINK",k.yytext),this.pushState("LLABEL"),16;break;case 98:return w.getLogger().debug("Lex: START_LINK",k.yytext),this.pushState("LLABEL"),16;break;case 99:this.pushState("md_string");break;case 100:return w.getLogger().debug("Lex: Starting string"),this.pushState("string"),"LINK_LABEL";break;case 101:return this.popState(),w.getLogger().debug("Lex: LINK","#"+k.yytext+"#"),15;break;case 102:return this.popState(),w.getLogger().debug("Lex: LINK",k.yytext),15;break;case 103:return this.popState(),w.getLogger().debug("Lex: LINK",k.yytext),15;break;case 104:return w.getLogger().debug("Lex: COLON",k.yytext),k.yytext=k.yytext.slice(1),27;break}},"anonymous"),rules:[/^(?:block-beta\b)/,/^(?:block:)/,/^(?:block\b)/,/^(?:[\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:[28],inclusive:!1},STYLE_STMNT:{rules:[27],inclusive:!1},CLASSDEFID:{rules:[22],inclusive:!1},CLASSDEF:{rules:[20,21],inclusive:!1},CLASS_STYLE:{rules:[25],inclusive:!1},CLASS:{rules:[24],inclusive:!1},LLABEL:{rules:[99,100,101,102,103],inclusive:!1},ARROW_DIR:{rules:[85,86,87,88,89,90,91],inclusive:!1},BLOCK_ARROW:{rules:[76,81,84],inclusive:!1},NODE:{rules:[37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,77,80],inclusive:!1},md_string:{rules:[9,10,78,79],inclusive:!1},space:{rules:[],inclusive:!1},string:{rules:[12,13,82,83],inclusive:!1},acc_descr_multiline:{rules:[34,35],inclusive:!1},acc_descr:{rules:[32],inclusive:!1},acc_title:{rules:[30],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,7,8,11,14,15,16,17,18,19,23,26,29,31,33,36,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,92,93,94,95,96,97,98,104],inclusive:!0}}};return T})();v.lexer=x;function b(){this.yy={}}return o(b,"Parser"),b.prototype=v,v.Parser=b,new b})();fz.parser=fz;ybe=fz});function cnt(t){switch(X.debug("typeStr2Type",t),t){case"[]":return"square";case"()":return X.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 unt(t){switch(X.debug("typeStr2Type",t),t){case"==":return"thick";default:return"normal"}}function hnt(t){switch(t.replace(/^[\s-]+|[\s-]+$/g,"")){case"x":return"arrow_cross";case"o":return"arrow_circle";case">":return"arrow_point";default:return""}}var ql,pz,dz,xbe,bbe,rnt,wbe,nnt,DC,int,ant,snt,ont,kbe,mz,R4,lnt,Tbe,fnt,dnt,pnt,mnt,gnt,ynt,vnt,xnt,bnt,Tnt,wnt,Ebe,Sbe=N(()=>{"use strict";hR();qn();Xt();pt();gr();ci();ql=new Map,pz=[],dz=new Map,xbe="color",bbe="fill",rnt="bgFill",wbe=",",nnt=ge(),DC=new Map,int=o(t=>tt.sanitizeText(t,nnt),"sanitizeText"),ant=o(function(t,e=""){let r=DC.get(t);r||(r={id:t,styles:[],textStyles:[]},DC.set(t,r)),e?.split(wbe).forEach(n=>{let i=n.replace(/([^;]*);/,"$1").trim();if(RegExp(xbe).exec(n)){let s=i.replace(bbe,rnt).replace(xbe,bbe);r.textStyles.push(s)}r.styles.push(i)})},"addStyleClass"),snt=o(function(t,e=""){let r=ql.get(t);e!=null&&(r.styles=e.split(wbe))},"addStyle2Node"),ont=o(function(t,e){t.split(",").forEach(function(r){let n=ql.get(r);if(n===void 0){let i=r.trim();n={id:i,type:"na",children:[]},ql.set(i,n)}n.classes||(n.classes=[]),n.classes.push(e)})},"setCssClass"),kbe=o((t,e)=>{let r=t.flat(),n=[],a=r.find(s=>s?.type==="column-setting")?.columns??-1;for(let s of r){if(typeof a=="number"&&a>0&&s.type!=="column-setting"&&typeof s.widthInColumns=="number"&&s.widthInColumns>a&&X.warn(`Block ${s.id} width ${s.widthInColumns} exceeds configured column width ${a}`),s.label&&(s.label=int(s.label)),s.type==="classDef"){ant(s.id,s.css);continue}if(s.type==="applyClass"){ont(s.id,s?.styleClass??"");continue}if(s.type==="applyStyles"){s?.stylesStr&&snt(s.id,s?.stylesStr);continue}if(s.type==="column-setting")e.columns=s.columns??-1;else if(s.type==="edge"){let l=(dz.get(s.id)??0)+1;dz.set(s.id,l),s.id=l+"-"+s.id,pz.push(s)}else{s.label||(s.type==="composite"?s.label="":s.label=s.id);let l=ql.get(s.id);if(l===void 0?ql.set(s.id,s):(s.type!=="na"&&(l.type=s.type),s.label!==s.id&&(l.label=s.label)),s.children&&kbe(s.children,s),s.type==="space"){let u=s.width??1;for(let h=0;h{X.debug("Clear called"),Sr(),R4={id:"root",type:"composite",children:[],columns:-1},ql=new Map([["root",R4]]),mz=[],DC=new Map,pz=[],dz=new Map},"clear");o(cnt,"typeStr2Type");o(unt,"edgeTypeStr2Type");o(hnt,"edgeStrToEdgeData");Tbe=0,fnt=o(()=>(Tbe++,"id-"+Math.random().toString(36).substr(2,12)+"-"+Tbe),"generateId"),dnt=o(t=>{R4.children=t,kbe(t,R4),mz=R4.children},"setHierarchy"),pnt=o(t=>{let e=ql.get(t);return e?e.columns?e.columns:e.children?e.children.length:-1:-1},"getColumns"),mnt=o(()=>[...ql.values()],"getBlocksFlat"),gnt=o(()=>mz||[],"getBlocks"),ynt=o(()=>pz,"getEdges"),vnt=o(t=>ql.get(t),"getBlock"),xnt=o(t=>{ql.set(t.id,t)},"setBlock"),bnt=o(()=>X,"getLogger"),Tnt=o(function(){return DC},"getClasses"),wnt={getConfig:o(()=>Qt().block,"getConfig"),typeStr2Type:cnt,edgeTypeStr2Type:unt,edgeStrToEdgeData:hnt,getLogger:bnt,getBlocksFlat:mnt,getBlocks:gnt,getEdges:ynt,setHierarchy:dnt,getBlock:vnt,setBlock:xnt,getColumns:pnt,getClasses:Tnt,clear:lnt,generateId:fnt},Ebe=wnt});var LC,knt,Cbe,Abe=N(()=>{"use strict";eo();yg();LC=o((t,e)=>{let r=ld,n=r(t,"r"),i=r(t,"g"),a=r(t,"b");return Ka(n,i,a,e)},"fade"),knt=o(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: ${LC(t.edgeLabelBackground,.5)}; - // background-color: - } - - .node .cluster { - // fill: ${LC(t.mainBkg,.5)}; - fill: ${LC(t.clusterBkg,.5)}; - stroke: ${LC(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}; - } - ${zc()} -`,"getStyles"),Cbe=knt});var Ent,Snt,Cnt,Ant,_nt,Dnt,Lnt,Rnt,Nnt,Mnt,Int,_be,Dbe=N(()=>{"use strict";pt();Ent=o((t,e,r,n)=>{e.forEach(i=>{Int[i](t,r,n)})},"insertMarkers"),Snt=o((t,e,r)=>{X.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"),Cnt=o((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"),Ant=o((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"),_nt=o((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"),Dnt=o((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"),Lnt=o((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"),Rnt=o((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"),Nnt=o((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"),Mnt=o((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"),Int={extension:Snt,composition:Cnt,aggregation:Ant,dependency:_nt,lollipop:Dnt,point:Lnt,circle:Rnt,cross:Nnt,barb:Mnt},_be=Ent});function Ont(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 gz(t,e,r=0,n=0){X.debug("setBlockSizes abc95 (start)",t.id,t?.size?.x,"block width =",t?.size,"siblingWidth",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 m of t.children)gz(m,e);let s=Pnt(t);i=s.width,a=s.height,X.debug("setBlockSizes abc95 maxWidth of",t.id,":s children is ",i,a);for(let m of t.children)m.size&&(X.debug(`abc95 Setting size of children of ${t.id} id=${m.id} ${i} ${a} ${JSON.stringify(m.size)}`),m.size.width=i*(m.widthInColumns??1)+Ti*((m.widthInColumns??1)-1),m.size.height=a,m.size.x=0,m.size.y=0,X.debug(`abc95 updating size of ${t.id} children child:${m.id} maxWidth:${i} maxHeight:${a}`));for(let m of t.children)gz(m,e,i,a);let l=t.columns??-1,u=0;for(let m of t.children)u+=m.widthInColumns??1;let h=t.children.length;l>0&&l0?Math.min(t.children.length,l):t.children.length;if(m>0){let g=(d-m*Ti-Ti)/m;X.debug("abc95 (growing to fit) width",t.id,d,t.size?.width,g);for(let y of t.children)y.size&&(y.size.width=g)}}t.size={width:d,height:p,x:0,y:0}}X.debug("setBlockSizes abc94 (done)",t.id,t?.size?.x,t?.size?.width,t?.size?.y,t?.size?.height)}function Lbe(t,e){X.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(X.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)*Ti;X.debug("widthOfChildren 88",i,"posX");let a=0;X.debug("abc91 block?.size?.x",t.id,t?.size?.x);let s=t?.size?.x?t?.size?.x+(-t?.size?.width/2||0):-Ti,l=0;for(let u of t.children){let h=t;if(!u.size)continue;let{width:f,height:d}=u.size,{px:p,py:m}=Ont(r,a);if(m!=l&&(l=m,s=t?.size?.x?t?.size?.x+(-t?.size?.width/2||0):-Ti,X.debug("New row in layout for block",t.id," and child ",u.id,l)),X.debug(`abc89 layout blocks (child) id: ${u.id} Pos: ${a} (px, py) ${p},${m} (${h?.size?.x},${h?.size?.y}) parent: ${h.id} width: ${f}${Ti}`),h.size){let y=f/2;u.size.x=s+Ti+y,X.debug(`abc91 layout blocks (calc) px, pyid:${u.id} startingPos=X${s} new startingPosX${u.size.x} ${y} padding=${Ti} width=${f} halfWidth=${y} => x:${u.size.x} y:${u.size.y} ${u.widthInColumns} (width * (child?.w || 1)) / 2 ${f*(u?.widthInColumns??1)/2}`),s=u.size.x+y,u.size.y=h.size.y-h.size.height/2+m*(d+Ti)+d/2+Ti,X.debug(`abc88 layout blocks (calc) px, pyid:${u.id}startingPosX${s}${Ti}${y}=>x:${u.size.x}y:${u.size.y}${u.widthInColumns}(width * (child?.w || 1)) / 2${f*(u?.widthInColumns??1)/2}`)}u.children&&Lbe(u,e);let g=u?.widthInColumns??1;r>0&&(g=Math.min(g,r-a%r)),a+=g,X.debug("abc88 columnsPos",u,a)}}X.debug(`layout blocks (<==layoutBlocks) ${t.id} x: ${t?.size?.x} y: ${t?.size?.y} width: ${t?.size?.width}`)}function Rbe(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:l,height:u}=t.size;a-l/2n&&(n=a+l/2),s+u/2>i&&(i=s+u/2)}if(t.children)for(let a of t.children)({minX:e,minY:r,maxX:n,maxY:i}=Rbe(a,{minX:e,minY:r,maxX:n,maxY:i}));return{minX:e,minY:r,maxX:n,maxY:i}}function Nbe(t){let e=t.getBlock("root");if(!e)return;gz(e,t,0,0),Lbe(e,t),X.debug("getBlocks",JSON.stringify(e,null,2));let{minX:r,minY:n,maxX:i,maxY:a}=Rbe(e),s=a-n,l=i-r;return{x:r,y:n,width:l,height:s}}var Ti,Pnt,Mbe=N(()=>{"use strict";pt();Xt();Ti=ge()?.block?.padding??8;o(Ont,"calculateBlockPosition");Pnt=o(t=>{let e=0,r=0;for(let n of t.children){let{width:i,height:a,x:s,y:l}=n.size??{width:0,height:0,x:0,y:0};X.debug("getMaxChildSize abc95 child:",n.id,"width:",i,"height:",a,"x:",s,"y:",l,n.type),n.type!=="space"&&(i>e&&(e=i/(t.widthInColumns??1)),a>r&&(r=a))}return{width:e,height:r}},"getMaxChildSize");o(gz,"setBlockSizes");o(Lbe,"layoutBlocks");o(Rbe,"findBounds");o(Nbe,"layout")});function Ibe(t,e){e&&t.attr("style",e)}function Bnt(t,e){let r=qe(document.createElementNS("http://www.w3.org/2000/svg","foreignObject")),n=r.append("xhtml:div"),i=t.label,a=t.isNode?"nodeLabel":"edgeLabel",s=n.append("span");return s.html(sr(i,e)),Ibe(s,t.labelStyle),s.attr("class",a),Ibe(n,t.labelStyle),n.style("display","inline-block"),n.style("white-space","nowrap"),n.attr("xmlns","http://www.w3.org/1999/xhtml"),r.node()}var Fnt,ks,RC=N(()=>{"use strict";yr();Xt();gr();pt();zo();tr();o(Ibe,"applyStyle");o(Bnt,"addHtmlLabel");Fnt=o(async(t,e,r,n)=>{let i=t||"";typeof i=="object"&&(i=i[0]);let a=ge();if(vr(a.flowchart.htmlLabels)){i=i.replace(/\\n|\n/g,"
    "),X.debug("vertexText"+i);let s=await k9(Ji(i)),l={isNode:n,label:s,labelStyle:e.replace("fill:","color:")};return Bnt(l,a)}else{let s=document.createElementNS("http://www.w3.org/2000/svg","text");s.setAttribute("style",e.replace("color:","fill:"));let l=[];typeof i=="string"?l=i.split(/\\n|\n|/gi):Array.isArray(i)?l=i:l=[];for(let u of l){let h=document.createElementNS("http://www.w3.org/2000/svg","tspan");h.setAttributeNS("http://www.w3.org/XML/1998/namespace","xml:space","preserve"),h.setAttribute("dy","1em"),h.setAttribute("x","0"),r?h.setAttribute("class","title-row"):h.setAttribute("class","row"),h.textContent=u.trim(),s.appendChild(h)}return s}},"createLabel"),ks=Fnt});var Pbe,$nt,Obe,Bbe=N(()=>{"use strict";pt();Pbe=o((t,e,r,n,i)=>{e.arrowTypeStart&&Obe(t,"start",e.arrowTypeStart,r,n,i),e.arrowTypeEnd&&Obe(t,"end",e.arrowTypeEnd,r,n,i)},"addEdgeMarkers"),$nt={arrow_cross:"cross",arrow_point:"point",arrow_barb:"barb",arrow_circle:"circle",aggregation:"aggregation",extension:"extension",composition:"composition",dependency:"dependency",lollipop:"lollipop"},Obe=o((t,e,r,n,i,a)=>{let s=$nt[r];if(!s){X.warn(`Unknown arrow type: ${r}`);return}let l=e==="start"?"Start":"End";t.attr(`marker-${e}`,`url(${n}#${i}_${a}-${s}${l})`)},"addEdgeMarker")});function NC(t,e){ge().flowchart.htmlLabels&&t&&(t.style.width=e.length*9+"px",t.style.height="12px")}var yz,Wa,$be,zbe,znt,Gnt,Fbe,Gbe,Vbe=N(()=>{"use strict";pt();RC();zo();yr();Xt();tr();gr();X9();O2();Bbe();yz={},Wa={},$be=o(async(t,e)=>{let r=ge(),n=vr(r.flowchart.htmlLabels),i=e.labelType==="markdown"?di(t,e.label,{style:e.labelStyle,useHtmlLabels:n,addSvgBackground:!0},r):await ks(e.label,e.labelStyle),a=t.insert("g").attr("class","edgeLabel"),s=a.insert("g").attr("class","label");s.node().appendChild(i);let l=i.getBBox();if(n){let h=i.children[0],f=qe(i);l=h.getBoundingClientRect(),f.attr("width",l.width),f.attr("height",l.height)}s.attr("transform","translate("+-l.width/2+", "+-l.height/2+")"),yz[e.id]=a,e.width=l.width,e.height=l.height;let u;if(e.startLabelLeft){let h=await ks(e.startLabelLeft,e.labelStyle),f=t.insert("g").attr("class","edgeTerminals"),d=f.insert("g").attr("class","inner");u=d.node().appendChild(h);let p=h.getBBox();d.attr("transform","translate("+-p.width/2+", "+-p.height/2+")"),Wa[e.id]||(Wa[e.id]={}),Wa[e.id].startLeft=f,NC(u,e.startLabelLeft)}if(e.startLabelRight){let h=await ks(e.startLabelRight,e.labelStyle),f=t.insert("g").attr("class","edgeTerminals"),d=f.insert("g").attr("class","inner");u=f.node().appendChild(h),d.node().appendChild(h);let p=h.getBBox();d.attr("transform","translate("+-p.width/2+", "+-p.height/2+")"),Wa[e.id]||(Wa[e.id]={}),Wa[e.id].startRight=f,NC(u,e.startLabelRight)}if(e.endLabelLeft){let h=await ks(e.endLabelLeft,e.labelStyle),f=t.insert("g").attr("class","edgeTerminals"),d=f.insert("g").attr("class","inner");u=d.node().appendChild(h);let p=h.getBBox();d.attr("transform","translate("+-p.width/2+", "+-p.height/2+")"),f.node().appendChild(h),Wa[e.id]||(Wa[e.id]={}),Wa[e.id].endLeft=f,NC(u,e.endLabelLeft)}if(e.endLabelRight){let h=await ks(e.endLabelRight,e.labelStyle),f=t.insert("g").attr("class","edgeTerminals"),d=f.insert("g").attr("class","inner");u=d.node().appendChild(h);let p=h.getBBox();d.attr("transform","translate("+-p.width/2+", "+-p.height/2+")"),f.node().appendChild(h),Wa[e.id]||(Wa[e.id]={}),Wa[e.id].endRight=f,NC(u,e.endLabelRight)}return i},"insertEdgeLabel");o(NC,"setTerminalWidth");zbe=o((t,e)=>{X.debug("Moving label abc88 ",t.id,t.label,yz[t.id],e);let r=e.updatedPath?e.updatedPath:e.originalPath,n=ge(),{subGraphTitleTotalMargin:i}=Pu(n);if(t.label){let a=yz[t.id],s=t.x,l=t.y;if(r){let u=qt.calcLabelPosition(r);X.debug("Moving label "+t.label+" from (",s,",",l,") to (",u.x,",",u.y,") abc88"),e.updatedPath&&(s=u.x,l=u.y)}a.attr("transform",`translate(${s}, ${l+i/2})`)}if(t.startLabelLeft){let a=Wa[t.id].startLeft,s=t.x,l=t.y;if(r){let u=qt.calcTerminalLabelPosition(t.arrowTypeStart?10:0,"start_left",r);s=u.x,l=u.y}a.attr("transform",`translate(${s}, ${l})`)}if(t.startLabelRight){let a=Wa[t.id].startRight,s=t.x,l=t.y;if(r){let u=qt.calcTerminalLabelPosition(t.arrowTypeStart?10:0,"start_right",r);s=u.x,l=u.y}a.attr("transform",`translate(${s}, ${l})`)}if(t.endLabelLeft){let a=Wa[t.id].endLeft,s=t.x,l=t.y;if(r){let u=qt.calcTerminalLabelPosition(t.arrowTypeEnd?10:0,"end_left",r);s=u.x,l=u.y}a.attr("transform",`translate(${s}, ${l})`)}if(t.endLabelRight){let a=Wa[t.id].endRight,s=t.x,l=t.y;if(r){let u=qt.calcTerminalLabelPosition(t.arrowTypeEnd?10:0,"end_right",r);s=u.x,l=u.y}a.attr("transform",`translate(${s}, ${l})`)}},"positionEdgeLabel"),znt=o((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,l=t.height/2;return i>=s||a>=l},"outsideNode"),Gnt=o((t,e,r)=>{X.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,l=r.xMath.abs(n-e.x)*u){let d=r.y{X.debug("abc88 cutPathAtIntersect",t,e);let r=[],n=t[0],i=!1;return t.forEach(a=>{if(!znt(e,a)&&!i){let s=Gnt(e,n,a),l=!1;r.forEach(u=>{l=l||u.x===s.x&&u.y===s.y}),r.some(u=>u.x===s.x&&u.y===s.y)||r.push(s),i=!0}else n=a,i||r.push(a)}),r},"cutPathAtIntersect"),Gbe=o(function(t,e,r,n,i,a,s){let l=r.points;X.debug("abc88 InsertEdge: edge=",r,"e=",e);let u=!1,h=a.node(e.v);var f=a.node(e.w);f?.intersect&&h?.intersect&&(l=l.slice(1,r.points.length-1),l.unshift(h.intersect(l[0])),l.push(f.intersect(l[l.length-1]))),r.toCluster&&(X.debug("to cluster abc88",n[r.toCluster]),l=Fbe(r.points,n[r.toCluster].node),u=!0),r.fromCluster&&(X.debug("from cluster abc88",n[r.fromCluster]),l=Fbe(l.reverse(),n[r.fromCluster].node).reverse(),u=!0);let d=l.filter(S=>!Number.isNaN(S.y)),p=No;r.curve&&(i==="graph"||i==="flowchart")&&(p=r.curve);let{x:m,y:g}=hw(r),y=Cl().x(m).y(g).curve(p),v;switch(r.thickness){case"normal":v="edge-thickness-normal";break;case"thick":v="edge-thickness-thick";break;case"invisible":v="edge-thickness-thick";break;default:v=""}switch(r.pattern){case"solid":v+=" edge-pattern-solid";break;case"dotted":v+=" edge-pattern-dotted";break;case"dashed":v+=" edge-pattern-dashed";break}let x=t.append("path").attr("d",y(d)).attr("id",r.id).attr("class"," "+v+(r.classes?" "+r.classes:"")).attr("style",r.style),b="";(ge().flowchart.arrowMarkerAbsolute||ge().state.arrowMarkerAbsolute)&&(b=md(!0)),Pbe(x,r,b,s,i);let T={};return u&&(T.updatedPath=l),T.originalPath=r.points,T},"insertEdge")});var Vnt,Ube,Hbe=N(()=>{"use strict";Vnt=o(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"),Ube=o((t,e,r)=>{let n=Vnt(t),i=2,a=e.height+2*r.padding,s=a/i,l=e.width+2*s+r.padding,u=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:l/2,y:2*u},{x:l-s,y:0},{x:l,y:0},{x:l,y:-a/3},{x:l+2*u,y:-a/2},{x:l,y:-2*a/3},{x:l,y:-a},{x:l-s,y:-a},{x:l/2,y:-a-2*u},{x:s,y:-a},{x:0,y:-a},{x:0,y:-2*a/3},{x:-2*u,y:-a/2},{x:0,y:-a/3}]:n.has("right")&&n.has("left")&&n.has("up")?[{x:s,y:0},{x:l-s,y:0},{x:l,y:-a/2},{x:l-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:l-s,y:-a},{x:l,y:0}]:n.has("right")&&n.has("up")&&n.has("down")?[{x:0,y:0},{x:l,y:-s},{x:l,y:-a+s},{x:0,y:-a}]:n.has("left")&&n.has("up")&&n.has("down")?[{x:l,y:0},{x:0,y:-s},{x:0,y:-a+s},{x:l,y:-a}]:n.has("right")&&n.has("left")?[{x:s,y:0},{x:s,y:-u},{x:l-s,y:-u},{x:l-s,y:0},{x:l,y:-a/2},{x:l-s,y:-a},{x:l-s,y:-a+u},{x:s,y:-a+u},{x:s,y:-a},{x:0,y:-a/2}]:n.has("up")&&n.has("down")?[{x:l/2,y:0},{x:0,y:-u},{x:s,y:-u},{x:s,y:-a+u},{x:0,y:-a+u},{x:l/2,y:-a},{x:l,y:-a+u},{x:l-s,y:-a+u},{x:l-s,y:-u},{x:l,y:-u}]:n.has("right")&&n.has("up")?[{x:0,y:0},{x:l,y:-s},{x:0,y:-a}]:n.has("right")&&n.has("down")?[{x:0,y:0},{x:l,y:0},{x:0,y:-a}]:n.has("left")&&n.has("up")?[{x:l,y:0},{x:0,y:-s},{x:l,y:-a}]:n.has("left")&&n.has("down")?[{x:l,y:0},{x:0,y:0},{x:l,y:-a}]:n.has("right")?[{x:s,y:-u},{x:s,y:-u},{x:l-s,y:-u},{x:l-s,y:0},{x:l,y:-a/2},{x:l-s,y:-a},{x:l-s,y:-a+u},{x:s,y:-a+u},{x:s,y:-a+u}]:n.has("left")?[{x:s,y:0},{x:s,y:-u},{x:l-s,y:-u},{x:l-s,y:-a+u},{x:s,y:-a+u},{x:s,y:-a},{x:0,y:-a/2}]:n.has("up")?[{x:s,y:-u},{x:s,y:-a+u},{x:0,y:-a+u},{x:l/2,y:-a},{x:l,y:-a+u},{x:l-s,y:-a+u},{x:l-s,y:-u}]:n.has("down")?[{x:l/2,y:0},{x:0,y:-u},{x:s,y:-u},{x:s,y:-a+u},{x:l-s,y:-a+u},{x:l-s,y:-u},{x:l,y:-u}]:[{x:0,y:0}]},"getArrowPoints")});function Unt(t,e){return t.intersect(e)}var qbe,Wbe=N(()=>{"use strict";o(Unt,"intersectNode");qbe=Unt});function Hnt(t,e,r,n){var i=t.x,a=t.y,s=i-n.x,l=a-n.y,u=Math.sqrt(e*e*l*l+r*r*s*s),h=Math.abs(e*r*s/u);n.x{"use strict";o(Hnt,"intersectEllipse");MC=Hnt});function qnt(t,e,r){return MC(t,e,e,r)}var Ybe,Xbe=N(()=>{"use strict";vz();o(qnt,"intersectCircle");Ybe=qnt});function Wnt(t,e,r,n){var i,a,s,l,u,h,f,d,p,m,g,y,v,x,b;if(i=e.y-t.y,s=t.x-e.x,u=e.x*t.y-t.x*e.y,p=i*r.x+s*r.y+u,m=i*n.x+s*n.y+u,!(p!==0&&m!==0&&jbe(p,m))&&(a=n.y-r.y,l=r.x-n.x,h=n.x*r.y-r.x*n.y,f=a*t.x+l*t.y+h,d=a*e.x+l*e.y+h,!(f!==0&&d!==0&&jbe(f,d))&&(g=i*l-a*s,g!==0)))return y=Math.abs(g/2),v=s*h-l*u,x=v<0?(v-y)/g:(v+y)/g,v=a*u-i*h,b=v<0?(v-y)/g:(v+y)/g,{x,y:b}}function jbe(t,e){return t*e>0}var Kbe,Qbe=N(()=>{"use strict";o(Wnt,"intersectLine");o(jbe,"sameSign");Kbe=Wnt});function Ynt(t,e,r){var n=t.x,i=t.y,a=[],s=Number.POSITIVE_INFINITY,l=Number.POSITIVE_INFINITY;typeof e.forEach=="function"?e.forEach(function(g){s=Math.min(s,g.x),l=Math.min(l,g.y)}):(s=Math.min(s,e.x),l=Math.min(l,e.y));for(var u=n-t.width/2-s,h=i-t.height/2-l,f=0;f1&&a.sort(function(g,y){var v=g.x-r.x,x=g.y-r.y,b=Math.sqrt(v*v+x*x),T=y.x-r.x,S=y.y-r.y,w=Math.sqrt(T*T+S*S);return b{"use strict";Qbe();Zbe=Ynt;o(Ynt,"intersectPolygon")});var Xnt,e4e,t4e=N(()=>{"use strict";Xnt=o((t,e)=>{var r=t.x,n=t.y,i=e.x-r,a=e.y-n,s=t.width/2,l=t.height/2,u,h;return Math.abs(a)*s>Math.abs(i)*l?(a<0&&(l=-l),u=a===0?0:l*i/a,h=l):(i<0&&(s=-s),u=s,h=i===0?0:s*a/i),{x:r+u,y:n+h}},"intersectRect"),e4e=Xnt});var $n,xz=N(()=>{"use strict";Wbe();Xbe();vz();Jbe();t4e();$n={node:qbe,circle:Ybe,ellipse:MC,polygon:Zbe,rect:e4e}});function Wl(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+")")}var Li,ti,bz=N(()=>{"use strict";RC();zo();Xt();yr();gr();tr();Li=o(async(t,e,r,n)=>{let i=ge(),a,s=e.useHtmlLabels||vr(i.flowchart.htmlLabels);r?a=r:a="node default";let l=t.insert("g").attr("class",a).attr("id",e.domId||e.id),u=l.insert("g").attr("class","label").attr("style",e.labelStyle),h;e.labelText===void 0?h="":h=typeof e.labelText=="string"?e.labelText:e.labelText[0];let f=u.node(),d;e.labelType==="markdown"?d=di(u,sr(Ji(h),i),{useHtmlLabels:s,width:e.width||i.flowchart.wrappingWidth,classes:"markdown-node-label"},i):d=f.appendChild(await ks(sr(Ji(h),i),e.labelStyle,!1,n));let p=d.getBBox(),m=e.padding/2;if(vr(i.flowchart.htmlLabels)){let g=d.children[0],y=qe(d),v=g.getElementsByTagName("img");if(v){let x=h.replace(/]*>/g,"").trim()==="";await Promise.all([...v].map(b=>new Promise(T=>{function S(){if(b.style.display="flex",b.style.flexDirection="column",x){let w=i.fontSize?i.fontSize:window.getComputedStyle(document.body).fontSize,A=parseInt(w,10)*5+"px";b.style.minWidth=A,b.style.maxWidth=A}else b.style.width="100%";T(b)}o(S,"setupImage"),setTimeout(()=>{b.complete&&S()}),b.addEventListener("error",S),b.addEventListener("load",S)})))}p=g.getBoundingClientRect(),y.attr("width",p.width),y.attr("height",p.height)}return s?u.attr("transform","translate("+-p.width/2+", "+-p.height/2+")"):u.attr("transform","translate(0, "+-p.height/2+")"),e.centerLabel&&u.attr("transform","translate("+-p.width/2+", "+-p.height/2+")"),u.insert("rect",":first-child"),{shapeSvg:l,bbox:p,halfPadding:m,label:u}},"labelHelper"),ti=o((t,e)=>{let r=e.node().getBBox();t.width=r.width,t.height=r.height},"updateNodeBounds");o(Wl,"insertPolygonShape")});var jnt,r4e,n4e=N(()=>{"use strict";bz();pt();Xt();xz();jnt=o(async(t,e)=>{e.useHtmlLabels||ge().flowchart.htmlLabels||(e.centerLabel=!0);let{shapeSvg:n,bbox:i,halfPadding:a}=await Li(t,e,"node "+e.classes,!0);X.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),ti(e,s),e.intersect=function(l){return $n.rect(e,l)},n},"note"),r4e=jnt});function Tz(t,e,r,n){let i=[],a=o(l=>{i.push(l,0)},"addBorder"),s=o(l=>{i.push(0,l)},"skipBorder");e.includes("t")?(X.debug("add top border"),a(r)):s(r),e.includes("r")?(X.debug("add right border"),a(n)):s(n),e.includes("b")?(X.debug("add bottom border"),a(r)):s(r),e.includes("l")?(X.debug("add left border"),a(n)):s(n),t.attr("stroke-dasharray",i.join(" "))}var i4e,To,a4e,Knt,Qnt,Znt,Jnt,eit,tit,rit,nit,iit,ait,sit,oit,lit,cit,uit,hit,fit,dit,pit,s4e,mit,git,o4e,IC,wz,l4e,c4e=N(()=>{"use strict";yr();Xt();gr();pt();Hbe();RC();xz();n4e();bz();i4e=o(t=>t?" "+t:"","formatClass"),To=o((t,e)=>`${e||"node default"}${i4e(t.classes)} ${i4e(t.class)}`,"getClassesFromNode"),a4e=o(async(t,e)=>{let{shapeSvg:r,bbox:n}=await Li(t,e,To(e,void 0),!0),i=n.width+e.padding,a=n.height+e.padding,s=i+a,l=[{x:s/2,y:0},{x:s,y:-s/2},{x:s/2,y:-s},{x:0,y:-s/2}];X.info("Question main (Circle)");let u=Wl(r,s,s,l);return u.attr("style",e.style),ti(e,u),e.intersect=function(h){return X.warn("Intersect called"),$n.polygon(e,l,h)},r},"question"),Knt=o((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"),Qnt=o(async(t,e)=>{let{shapeSvg:r,bbox:n}=await Li(t,e,To(e,void 0),!0),i=4,a=n.height+e.padding,s=a/i,l=n.width+2*s+e.padding,u=[{x:s,y:0},{x:l-s,y:0},{x:l,y:-a/2},{x:l-s,y:-a},{x:s,y:-a},{x:0,y:-a/2}],h=Wl(r,l,a,u);return h.attr("style",e.style),ti(e,h),e.intersect=function(f){return $n.polygon(e,u,f)},r},"hexagon"),Znt=o(async(t,e)=>{let{shapeSvg:r,bbox:n}=await Li(t,e,void 0,!0),i=2,a=n.height+2*e.padding,s=a/i,l=n.width+2*s+e.padding,u=Ube(e.directions,n,e),h=Wl(r,l,a,u);return h.attr("style",e.style),ti(e,h),e.intersect=function(f){return $n.polygon(e,u,f)},r},"block_arrow"),Jnt=o(async(t,e)=>{let{shapeSvg:r,bbox:n}=await Li(t,e,To(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 Wl(r,i,a,s).attr("style",e.style),e.width=i+a,e.height=a,e.intersect=function(u){return $n.polygon(e,s,u)},r},"rect_left_inv_arrow"),eit=o(async(t,e)=>{let{shapeSvg:r,bbox:n}=await Li(t,e,To(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}],l=Wl(r,i,a,s);return l.attr("style",e.style),ti(e,l),e.intersect=function(u){return $n.polygon(e,s,u)},r},"lean_right"),tit=o(async(t,e)=>{let{shapeSvg:r,bbox:n}=await Li(t,e,To(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}],l=Wl(r,i,a,s);return l.attr("style",e.style),ti(e,l),e.intersect=function(u){return $n.polygon(e,s,u)},r},"lean_left"),rit=o(async(t,e)=>{let{shapeSvg:r,bbox:n}=await Li(t,e,To(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}],l=Wl(r,i,a,s);return l.attr("style",e.style),ti(e,l),e.intersect=function(u){return $n.polygon(e,s,u)},r},"trapezoid"),nit=o(async(t,e)=>{let{shapeSvg:r,bbox:n}=await Li(t,e,To(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}],l=Wl(r,i,a,s);return l.attr("style",e.style),ti(e,l),e.intersect=function(u){return $n.polygon(e,s,u)},r},"inv_trapezoid"),iit=o(async(t,e)=>{let{shapeSvg:r,bbox:n}=await Li(t,e,To(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}],l=Wl(r,i,a,s);return l.attr("style",e.style),ti(e,l),e.intersect=function(u){return $n.polygon(e,s,u)},r},"rect_right_inv_arrow"),ait=o(async(t,e)=>{let{shapeSvg:r,bbox:n}=await Li(t,e,To(e,void 0),!0),i=n.width+e.padding,a=i/2,s=a/(2.5+i/50),l=n.height+s+e.padding,u="M 0,"+s+" a "+a+","+s+" 0,0,0 "+i+" 0 a "+a+","+s+" 0,0,0 "+-i+" 0 l 0,"+l+" a "+a+","+s+" 0,0,0 "+i+" 0 l 0,"+-l,h=r.attr("label-offset-y",s).insert("path",":first-child").attr("style",e.style).attr("d",u).attr("transform","translate("+-i/2+","+-(l/2+s)+")");return ti(e,h),e.intersect=function(f){let d=$n.rect(e,f),p=d.x-e.x;if(a!=0&&(Math.abs(p)e.height/2-s)){let m=s*s*(1-p*p/(a*a));m!=0&&(m=Math.sqrt(m)),m=s-m,f.y-e.y>0&&(m=-m),d.y+=m}return d},r},"cylinder"),sit=o(async(t,e)=>{let{shapeSvg:r,bbox:n,halfPadding:i}=await Li(t,e,"node "+e.classes+" "+e.class,!0),a=r.insert("rect",":first-child"),s=e.positioned?e.width:n.width+e.padding,l=e.positioned?e.height:n.height+e.padding,u=e.positioned?-s/2:-n.width/2-i,h=e.positioned?-l/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",u).attr("y",h).attr("width",s).attr("height",l),e.props){let f=new Set(Object.keys(e.props));e.props.borders&&(Tz(a,e.props.borders,s,l),f.delete("borders")),f.forEach(d=>{X.warn(`Unknown node property ${d}`)})}return ti(e,a),e.intersect=function(f){return $n.rect(e,f)},r},"rect"),oit=o(async(t,e)=>{let{shapeSvg:r,bbox:n,halfPadding:i}=await Li(t,e,"node "+e.classes,!0),a=r.insert("rect",":first-child"),s=e.positioned?e.width:n.width+e.padding,l=e.positioned?e.height:n.height+e.padding,u=e.positioned?-s/2:-n.width/2-i,h=e.positioned?-l/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",u).attr("y",h).attr("width",s).attr("height",l),e.props){let f=new Set(Object.keys(e.props));e.props.borders&&(Tz(a,e.props.borders,s,l),f.delete("borders")),f.forEach(d=>{X.warn(`Unknown node property ${d}`)})}return ti(e,a),e.intersect=function(f){return $n.rect(e,f)},r},"composite"),lit=o(async(t,e)=>{let{shapeSvg:r}=await Li(t,e,"label",!0);X.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&&(Tz(n,e.props.borders,i,a),s.delete("borders")),s.forEach(l=>{X.warn(`Unknown node property ${l}`)})}return ti(e,n),e.intersect=function(s){return $n.rect(e,s)},r},"labelRect");o(Tz,"applyNodePropertyBorders");cit=o(async(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"),l=e.labelText.flat?e.labelText.flat():e.labelText,u="";typeof l=="object"?u=l[0]:u=l,X.info("Label text abc79",u,l,typeof l=="object");let h=s.node().appendChild(await ks(u,e.labelStyle,!0,!0)),f={width:0,height:0};if(vr(ge().flowchart.htmlLabels)){let y=h.children[0],v=qe(h);f=y.getBoundingClientRect(),v.attr("width",f.width),v.attr("height",f.height)}X.info("Text 2",l);let d=l.slice(1,l.length),p=h.getBBox(),m=s.node().appendChild(await ks(d.join?d.join("
    "):d,e.labelStyle,!0,!0));if(vr(ge().flowchart.htmlLabels)){let y=m.children[0],v=qe(m);f=y.getBoundingClientRect(),v.attr("width",f.width),v.attr("height",f.height)}let g=e.padding/2;return qe(m).attr("transform","translate( "+(f.width>p.width?0:(p.width-f.width)/2)+", "+(p.height+g+5)+")"),qe(h).attr("transform","translate( "+(f.width{let{shapeSvg:r,bbox:n}=await Li(t,e,To(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 ti(e,s),e.intersect=function(l){return $n.rect(e,l)},r},"stadium"),hit=o(async(t,e)=>{let{shapeSvg:r,bbox:n,halfPadding:i}=await Li(t,e,To(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),X.info("Circle main"),ti(e,a),e.intersect=function(s){return X.info("Circle intersect",e,n.width/2+i,s),$n.circle(e,n.width/2+i,s)},r},"circle"),fit=o(async(t,e)=>{let{shapeSvg:r,bbox:n,halfPadding:i}=await Li(t,e,To(e,void 0),!0),a=5,s=r.insert("g",":first-child"),l=s.insert("circle"),u=s.insert("circle");return s.attr("class",e.class),l.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),u.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),X.info("DoubleCircle main"),ti(e,l),e.intersect=function(h){return X.info("DoubleCircle intersect",e,n.width/2+i+a,h),$n.circle(e,n.width/2+i+a,h)},r},"doublecircle"),dit=o(async(t,e)=>{let{shapeSvg:r,bbox:n}=await Li(t,e,To(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}],l=Wl(r,i,a,s);return l.attr("style",e.style),ti(e,l),e.intersect=function(u){return $n.polygon(e,s,u)},r},"subroutine"),pit=o((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),ti(e,n),e.intersect=function(i){return $n.circle(e,7,i)},r},"start"),s4e=o((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 ti(e,s),e.height=e.height+e.padding/2,e.width=e.width+e.padding/2,e.intersect=function(l){return $n.rect(e,l)},n},"forkJoin"),mit=o((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),ti(e,i),e.intersect=function(a){return $n.circle(e,7,a)},r},"end"),git=o(async(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),l=s.insert("rect",":first-child"),u=s.insert("line"),h=s.insert("line"),f=0,d=n,p=s.insert("g").attr("class","label"),m=0,g=e.classData.annotations?.[0],y=e.classData.annotations[0]?"\xAB"+e.classData.annotations[0]+"\xBB":"",v=p.node().appendChild(await ks(y,e.labelStyle,!0,!0)),x=v.getBBox();if(vr(ge().flowchart.htmlLabels)){let C=v.children[0],R=qe(v);x=C.getBoundingClientRect(),R.attr("width",x.width),R.attr("height",x.height)}e.classData.annotations[0]&&(d+=x.height+n,f+=x.width);let b=e.classData.label;e.classData.type!==void 0&&e.classData.type!==""&&(ge().flowchart.htmlLabels?b+="<"+e.classData.type+">":b+="<"+e.classData.type+">");let T=p.node().appendChild(await ks(b,e.labelStyle,!0,!0));qe(T).attr("class","classTitle");let S=T.getBBox();if(vr(ge().flowchart.htmlLabels)){let C=T.children[0],R=qe(T);S=C.getBoundingClientRect(),R.attr("width",S.width),R.attr("height",S.height)}d+=S.height+n,S.width>f&&(f=S.width);let w=[];e.classData.members.forEach(async C=>{let R=C.getDisplayDetails(),I=R.displayText;ge().flowchart.htmlLabels&&(I=I.replace(//g,">"));let L=p.node().appendChild(await ks(I,R.cssStyle?R.cssStyle:e.labelStyle,!0,!0)),E=L.getBBox();if(vr(ge().flowchart.htmlLabels)){let D=L.children[0],_=qe(L);E=D.getBoundingClientRect(),_.attr("width",E.width),_.attr("height",E.height)}E.width>f&&(f=E.width),d+=E.height+n,w.push(L)}),d+=i;let k=[];if(e.classData.methods.forEach(async C=>{let R=C.getDisplayDetails(),I=R.displayText;ge().flowchart.htmlLabels&&(I=I.replace(//g,">"));let L=p.node().appendChild(await ks(I,R.cssStyle?R.cssStyle:e.labelStyle,!0,!0)),E=L.getBBox();if(vr(ge().flowchart.htmlLabels)){let D=L.children[0],_=qe(L);E=D.getBoundingClientRect(),_.attr("width",E.width),_.attr("height",E.height)}E.width>f&&(f=E.width),d+=E.height+n,k.push(L)}),d+=i,g){let C=(f-x.width)/2;qe(v).attr("transform","translate( "+(-1*f/2+C)+", "+-1*d/2+")"),m=x.height+n}let A=(f-S.width)/2;return qe(T).attr("transform","translate( "+(-1*f/2+A)+", "+(-1*d/2+m)+")"),m+=S.height+n,u.attr("class","divider").attr("x1",-f/2-r).attr("x2",f/2+r).attr("y1",-d/2-r+i+m).attr("y2",-d/2-r+i+m),m+=i,w.forEach(C=>{qe(C).attr("transform","translate( "+-f/2+", "+(-1*d/2+m+i/2)+")");let R=C?.getBBox();m+=(R?.height??0)+n}),m+=i,h.attr("class","divider").attr("x1",-f/2-r).attr("x2",f/2+r).attr("y1",-d/2-r+i+m).attr("y2",-d/2-r+i+m),m+=i,k.forEach(C=>{qe(C).attr("transform","translate( "+-f/2+", "+(-1*d/2+m)+")");let R=C?.getBBox();m+=(R?.height??0)+n}),l.attr("style",e.style).attr("class","outer title-state").attr("x",-f/2-r).attr("y",-(d/2)-r).attr("width",f+e.padding).attr("height",d+e.padding),ti(e,l),e.intersect=function(C){return $n.rect(e,C)},s},"class_box"),o4e={rhombus:a4e,composite:oit,question:a4e,rect:sit,labelRect:lit,rectWithTitle:cit,choice:Knt,circle:hit,doublecircle:fit,stadium:uit,hexagon:Qnt,block_arrow:Znt,rect_left_inv_arrow:Jnt,lean_right:eit,lean_left:tit,trapezoid:rit,inv_trapezoid:nit,rect_right_inv_arrow:iit,cylinder:ait,start:pit,end:mit,note:r4e,subroutine:dit,fork:s4e,join:s4e,class_box:git},IC={},wz=o(async(t,e,r)=>{let n,i;if(e.link){let a;ge().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 o4e[e.shape](n,e,r)}else i=await o4e[e.shape](t,e,r),n=i;return e.tooltip&&i.attr("title",e.tooltip),e.class&&i.attr("class","node default "+e.class),IC[e.id]=n,e.haveCallback&&IC[e.id].attr("class",IC[e.id].attr("class")+" clickable"),n},"insertNode"),l4e=o(t=>{let e=IC[t.id];X.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 u4e(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="",l;switch(n.type){case"round":a=5,s="rect";break;case"composite":a=0,s="composite",l=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 u=zL(n?.styles??[]),h=n.label,f=n.size??{width:0,height:0,x:0,y:0};return{labelStyle:u.labelStyle,shape:s,labelText:h,rx:a,ry:a,class:i,style:u.style,id:n.id,directions:n.directions,width:f.width,height:f.height,x:f.x,y:f.y,positioned:r,intersect:void 0,type:n.type,padding:l??Qt()?.block?.padding??0}}async function yit(t,e,r){let n=u4e(e,r,!1);if(n.type==="group")return;let i=Qt(),a=await wz(t,n,{config:i}),s=a.node().getBBox(),l=r.getBlock(n.id);l.size={width:s.width,height:s.height,x:0,y:0,node:a},r.setBlock(l),a.remove()}async function vit(t,e,r){let n=u4e(e,r,!0);if(r.getBlock(n.id).type!=="space"){let a=Qt();await wz(t,n,{config:a}),e.intersect=n?.intersect,l4e(n)}}async function kz(t,e,r,n){for(let i of e)await n(t,i,r),i.children&&await kz(t,i.children,r,n)}async function h4e(t,e,r){await kz(t,e,r,yit)}async function f4e(t,e,r){await kz(t,e,r,vit)}async function d4e(t,e,r,n,i){let a=new cn({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 l=n.getBlock(s.start),u=n.getBlock(s.end);if(l?.size&&u?.size){let h=l.size,f=u.size,d=[{x:h.x,y:h.y},{x:h.x+(f.x-h.x)/2,y:h.y+(f.y-h.y)/2},{x:f.x,y:f.y}];Gbe(t,{v:s.start,w:s.end,name:s.id},{...s,arrowTypeEnd:s.arrowTypeEnd,arrowTypeStart:s.arrowTypeStart,points:d,classes:"edge-thickness-normal edge-pattern-solid flowchart-link LS-a1 LE-b1"},void 0,"block",a,i),s.label&&(await $be(t,{...s,label:s.label,labelStyle:"stroke: #333; stroke-width: 1.5px;fill:none;",arrowTypeEnd:s.arrowTypeEnd,arrowTypeStart:s.arrowTypeStart,points:d,classes:"edge-thickness-normal edge-pattern-solid flowchart-link LS-a1 LE-b1"}),zbe({...s,x:d[1].x,y:d[1].y},{originalPath:d}))}}}var p4e=N(()=>{"use strict";qo();qn();Vbe();c4e();tr();o(u4e,"getNodeFromBlock");o(yit,"calculateBlockSize");o(vit,"insertBlockPositioned");o(kz,"performOperations");o(h4e,"calculateBlockSizes");o(f4e,"insertBlocks");o(d4e,"insertEdges")});var xit,bit,m4e,g4e=N(()=>{"use strict";yr();qn();Dbe();pt();Ei();Mbe();p4e();xit=o(function(t,e){return e.db.getClasses()},"getClasses"),bit=o(async function(t,e,r,n){let{securityLevel:i,block:a}=Qt(),s=n.db,l;i==="sandbox"&&(l=qe("#i"+e));let u=i==="sandbox"?qe(l.nodes()[0].contentDocument.body):qe("body"),h=i==="sandbox"?u.select(`[id="${e}"]`):qe(`[id="${e}"]`);_be(h,["point","circle","cross"],n.type,e);let d=s.getBlocks(),p=s.getBlocksFlat(),m=s.getEdges(),g=h.insert("g").attr("class","block");await h4e(g,d,s);let y=Nbe(s);if(await f4e(g,d,s),await d4e(g,m,p,s,e),y){let v=y,x=Math.max(1,Math.round(.125*(v.width/v.height))),b=v.height+x+10,T=v.width+10,{useMaxWidth:S}=a;mn(h,b,T,!!S),X.debug("Here Bounds",y,v),h.attr("viewBox",`${v.x-5} ${v.y-5} ${v.width+10} ${v.height+10}`)}},"draw"),m4e={draw:bit,getClasses:xit}});var y4e={};dr(y4e,{diagram:()=>Tit});var Tit,v4e=N(()=>{"use strict";vbe();Sbe();Abe();g4e();Tit={parser:ybe,db:Ebe,renderer:m4e,styles:Cbe}});var Ez,Sz,N4,T4e,Cz,Ya,nu,M4,w4e,Sit,I4,k4e,E4e,S4e,C4e,A4e,OC,td,PC=N(()=>{"use strict";Ez={L:"left",R:"right",T:"top",B:"bottom"},Sz={L:o(t=>`${t},${t/2} 0,${t} 0,0`,"L"),R:o(t=>`0,${t/2} ${t},0 ${t},${t}`,"R"),T:o(t=>`0,0 ${t},0 ${t/2},${t}`,"T"),B:o(t=>`${t/2},0 ${t},${t} 0,${t}`,"B")},N4={L:o((t,e)=>t-e+2,"L"),R:o((t,e)=>t-2,"R"),T:o((t,e)=>t-e+2,"T"),B:o((t,e)=>t-2,"B")},T4e=o(function(t){return Ya(t)?t==="L"?"R":"L":t==="T"?"B":"T"},"getOppositeArchitectureDirection"),Cz=o(function(t){let e=t;return e==="L"||e==="R"||e==="T"||e==="B"},"isArchitectureDirection"),Ya=o(function(t){let e=t;return e==="L"||e==="R"},"isArchitectureDirectionX"),nu=o(function(t){let e=t;return e==="T"||e==="B"},"isArchitectureDirectionY"),M4=o(function(t,e){let r=Ya(t)&&nu(e),n=nu(t)&&Ya(e);return r||n},"isArchitectureDirectionXY"),w4e=o(function(t){let e=t[0],r=t[1],n=Ya(e)&&nu(r),i=nu(e)&&Ya(r);return n||i},"isArchitecturePairXY"),Sit=o(function(t){return t!=="LL"&&t!=="RR"&&t!=="TT"&&t!=="BB"},"isValidArchitectureDirectionPair"),I4=o(function(t,e){let r=`${t}${e}`;return Sit(r)?r:void 0},"getArchitectureDirectionPair"),k4e=o(function([t,e],r){let n=r[0],i=r[1];return Ya(n)?nu(i)?[t+(n==="L"?-1:1),e+(i==="T"?1:-1)]:[t+(n==="L"?-1:1),e]:Ya(i)?[t+(i==="L"?1:-1),e+(n==="T"?1:-1)]:[t,e+(n==="T"?1:-1)]},"shiftPositionByArchitectureDirectionPair"),E4e=o(function(t){return t==="LT"||t==="TL"?[1,1]:t==="BL"||t==="LB"?[1,-1]:t==="BR"||t==="RB"?[-1,-1]:[-1,1]},"getArchitectureDirectionXYFactors"),S4e=o(function(t,e){return M4(t,e)?"bend":Ya(t)?"horizontal":"vertical"},"getArchitectureDirectionAlignment"),C4e=o(function(t){return t.type==="service"},"isArchitectureService"),A4e=o(function(t){return t.type==="junction"},"isArchitectureJunction"),OC=o(t=>t.data(),"edgeData"),td=o(t=>t.data(),"nodeData")});var Cit,vy,Az=N(()=>{"use strict";qn();La();tr();ci();PC();Cit=ur.architecture,vy=class{constructor(){this.nodes={};this.groups={};this.edges=[];this.registeredIds={};this.elements={};this.setAccTitle=Rr;this.getAccTitle=Mr;this.setDiagramTitle=$r;this.getDiagramTitle=Pr;this.getAccDescription=Or;this.setAccDescription=Ir;this.clear()}static{o(this,"ArchitectureDB")}clear(){this.nodes={},this.groups={},this.edges=[],this.registeredIds={},this.dataStructures=void 0,this.elements={},Sr()}addService({id:e,icon:r,in:n,title:i,iconText:a}){if(this.registeredIds[e]!==void 0)throw new Error(`The service id [${e}] is already in use by another ${this.registeredIds[e]}`);if(n!==void 0){if(e===n)throw new Error(`The service [${e}] cannot be placed within itself`);if(this.registeredIds[n]===void 0)throw new Error(`The service [${e}]'s parent does not exist. Please make sure the parent is created before this service`);if(this.registeredIds[n]==="node")throw new Error(`The service [${e}]'s parent is not a group`)}this.registeredIds[e]="node",this.nodes[e]={id:e,type:"service",icon:r,iconText:a,title:i,edges:[],in:n}}getServices(){return Object.values(this.nodes).filter(C4e)}addJunction({id:e,in:r}){this.registeredIds[e]="node",this.nodes[e]={id:e,type:"junction",edges:[],in:r}}getJunctions(){return Object.values(this.nodes).filter(A4e)}getNodes(){return Object.values(this.nodes)}getNode(e){return this.nodes[e]??null}addGroup({id:e,icon:r,in:n,title:i}){if(this.registeredIds?.[e]!==void 0)throw new Error(`The group id [${e}] is already in use by another ${this.registeredIds[e]}`);if(n!==void 0){if(e===n)throw new Error(`The group [${e}] cannot be placed within itself`);if(this.registeredIds?.[n]===void 0)throw new Error(`The group [${e}]'s parent does not exist. Please make sure the parent is created before this group`);if(this.registeredIds?.[n]==="node")throw new Error(`The group [${e}]'s parent is not a group`)}this.registeredIds[e]="group",this.groups[e]={id:e,icon:r,title:i,in:n}}getGroups(){return Object.values(this.groups)}addEdge({lhsId:e,rhsId:r,lhsDir:n,rhsDir:i,lhsInto:a,rhsInto:s,lhsGroup:l,rhsGroup:u,title:h}){if(!Cz(n))throw new Error(`Invalid direction given for left hand side of edge ${e}--${r}. Expected (L,R,T,B) got ${String(n)}`);if(!Cz(i))throw new Error(`Invalid direction given for right hand side of edge ${e}--${r}. Expected (L,R,T,B) got ${String(i)}`);if(this.nodes[e]===void 0&&this.groups[e]===void 0)throw new Error(`The left-hand id [${e}] does not yet exist. Please create the service/group before declaring an edge to it.`);if(this.nodes[r]===void 0&&this.groups[r]===void 0)throw new Error(`The right-hand id [${r}] does not yet exist. Please create the service/group before declaring an edge to it.`);let f=this.nodes[e].in,d=this.nodes[r].in;if(l&&f&&d&&f==d)throw new Error(`The left-hand id [${e}] is modified to traverse the group boundary, but the edge does not pass through two groups.`);if(u&&f&&d&&f==d)throw new Error(`The right-hand id [${r}] is modified to traverse the group boundary, but the edge does not pass through two groups.`);let p={lhsId:e,lhsDir:n,lhsInto:a,lhsGroup:l,rhsId:r,rhsDir:i,rhsInto:s,rhsGroup:u,title:h};this.edges.push(p),this.nodes[e]&&this.nodes[r]&&(this.nodes[e].edges.push(this.edges[this.edges.length-1]),this.nodes[r].edges.push(this.edges[this.edges.length-1]))}getEdges(){return this.edges}getDataStructures(){if(this.dataStructures===void 0){let e={},r=Object.entries(this.nodes).reduce((u,[h,f])=>(u[h]=f.edges.reduce((d,p)=>{let m=this.getNode(p.lhsId)?.in,g=this.getNode(p.rhsId)?.in;if(m&&g&&m!==g){let y=S4e(p.lhsDir,p.rhsDir);y!=="bend"&&(e[m]??={},e[m][g]=y,e[g]??={},e[g][m]=y)}if(p.lhsId===h){let y=I4(p.lhsDir,p.rhsDir);y&&(d[y]=p.rhsId)}else{let y=I4(p.rhsDir,p.lhsDir);y&&(d[y]=p.lhsId)}return d},{}),u),{}),n=Object.keys(r)[0],i={[n]:1},a=Object.keys(r).reduce((u,h)=>h===n?u:{...u,[h]:1},{}),s=o(u=>{let h={[u]:[0,0]},f=[u];for(;f.length>0;){let d=f.shift();if(d){i[d]=1,delete a[d];let p=r[d],[m,g]=h[d];Object.entries(p).forEach(([y,v])=>{i[v]||(h[v]=k4e([m,g],y),f.push(v))})}}return h},"BFS"),l=[s(n)];for(;Object.keys(a).length>0;)l.push(s(Object.keys(a)[0]));this.dataStructures={adjList:r,spatialMaps:l,groupAlignments:e}}return this.dataStructures}setElementForId(e,r){this.elements[e]=r}getElementById(e){return this.elements[e]}getConfig(){return Vn({...Cit,...Qt().architecture})}getConfigField(e){return this.getConfig()[e]}}});var Ait,_z,_4e=N(()=>{"use strict";Uf();pt();r0();Az();Ait=o((t,e)=>{nl(t,e),t.groups.map(r=>e.addGroup(r)),t.services.map(r=>e.addService({...r,type:"service"})),t.junctions.map(r=>e.addJunction({...r,type:"junction"})),t.edges.map(r=>e.addEdge(r))},"populateDb"),_z={parser:{yy:void 0},parse:o(async t=>{let e=await bs("architecture",t);X.debug(e);let r=_z.parser?.yy;if(!(r instanceof vy))throw new Error("parser.parser?.yy was not a ArchitectureDB. This is due to a bug within Mermaid, please report this issue at https://github.com/mermaid-js/mermaid/issues.");Ait(e,r)},"parse")}});var _it,D4e,L4e=N(()=>{"use strict";_it=o(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"),D4e=_it});var Lz=Da((O4,Dz)=>{"use strict";o((function(e,r){typeof O4=="object"&&typeof Dz=="object"?Dz.exports=r():typeof define=="function"&&define.amd?define([],r):typeof O4=="object"?O4.layoutBase=r():e.layoutBase=r()}),"webpackUniversalModuleDefinition")(O4,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 o(r,"__webpack_require__"),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?o(function(){return n.default},"getDefault"):o(function(){return n},"getModuleExports");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(){}o(n,"LayoutConstants"),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(u,h,f){n.call(this,f),this.isOverlapingSourceAndTarget=!1,this.vGraphObject=f,this.bendpoints=[],this.source=u,this.target=h}o(s,"LEdge"),s.prototype=Object.create(n.prototype);for(var l in n)s[l]=n[l];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(u){if(this.source===u)return this.target;if(this.target===u)return this.source;throw"Node is not incident with this edge"},s.prototype.getOtherEndInGraph=function(u,h){for(var f=this.getOtherEnd(u),d=h.getGraphManager().getRoot();;){if(f.getOwner()==h)return f;if(f.getOwner()==d)break;f=f.getOwner().getParent()}return null},s.prototype.updateLength=function(){var u=new Array(4);this.isOverlapingSourceAndTarget=i.getIntersection(this.target.getRect(),this.source.getRect(),u),this.isOverlapingSourceAndTarget||(this.lengthX=u[0]-u[2],this.lengthY=u[1]-u[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}o(n,"LGraphObject"),t.exports=n}),(function(t,e,r){"use strict";var n=r(2),i=r(10),a=r(13),s=r(0),l=r(16),u=r(5);function h(d,p,m,g){m==null&&g==null&&(g=p),n.call(this,g),d.graphManager!=null&&(d=d.graphManager),this.estimatedSize=i.MIN_VALUE,this.inclusionTreeDepth=i.MAX_VALUE,this.vGraphObject=g,this.edges=[],this.graphManager=d,m!=null&&p!=null?this.rect=new a(p.x,p.y,m.width,m.height):this.rect=new a}o(h,"LNode"),h.prototype=Object.create(n.prototype);for(var f in n)h[f]=n[f];h.prototype.getEdges=function(){return this.edges},h.prototype.getChild=function(){return this.child},h.prototype.getOwner=function(){return this.owner},h.prototype.getWidth=function(){return this.rect.width},h.prototype.setWidth=function(d){this.rect.width=d},h.prototype.getHeight=function(){return this.rect.height},h.prototype.setHeight=function(d){this.rect.height=d},h.prototype.getCenterX=function(){return this.rect.x+this.rect.width/2},h.prototype.getCenterY=function(){return this.rect.y+this.rect.height/2},h.prototype.getCenter=function(){return new u(this.rect.x+this.rect.width/2,this.rect.y+this.rect.height/2)},h.prototype.getLocation=function(){return new u(this.rect.x,this.rect.y)},h.prototype.getRect=function(){return this.rect},h.prototype.getDiagonal=function(){return Math.sqrt(this.rect.width*this.rect.width+this.rect.height*this.rect.height)},h.prototype.getHalfTheDiagonal=function(){return Math.sqrt(this.rect.height*this.rect.height+this.rect.width*this.rect.width)/2},h.prototype.setRect=function(d,p){this.rect.x=d.x,this.rect.y=d.y,this.rect.width=p.width,this.rect.height=p.height},h.prototype.setCenter=function(d,p){this.rect.x=d-this.rect.width/2,this.rect.y=p-this.rect.height/2},h.prototype.setLocation=function(d,p){this.rect.x=d,this.rect.y=p},h.prototype.moveBy=function(d,p){this.rect.x+=d,this.rect.y+=p},h.prototype.getEdgeListToNode=function(d){var p=[],m,g=this;return g.edges.forEach(function(y){if(y.target==d){if(y.source!=g)throw"Incorrect edge source!";p.push(y)}}),p},h.prototype.getEdgesBetween=function(d){var p=[],m,g=this;return g.edges.forEach(function(y){if(!(y.source==g||y.target==g))throw"Incorrect edge source and/or target";(y.target==d||y.source==d)&&p.push(y)}),p},h.prototype.getNeighborsList=function(){var d=new Set,p=this;return p.edges.forEach(function(m){if(m.source==p)d.add(m.target);else{if(m.target!=p)throw"Incorrect incidency!";d.add(m.source)}}),d},h.prototype.withChildren=function(){var d=new Set,p,m;if(d.add(this),this.child!=null)for(var g=this.child.getNodes(),y=0;yp?(this.rect.x-=(this.labelWidth-p)/2,this.setWidth(this.labelWidth)):this.labelPosHorizontal=="right"&&this.setWidth(p+this.labelWidth)),this.labelHeight&&(this.labelPosVertical=="top"?(this.rect.y-=this.labelHeight,this.setHeight(m+this.labelHeight)):this.labelPosVertical=="center"&&this.labelHeight>m?(this.rect.y-=(this.labelHeight-m)/2,this.setHeight(this.labelHeight)):this.labelPosVertical=="bottom"&&this.setHeight(m+this.labelHeight))}}},h.prototype.getInclusionTreeDepth=function(){if(this.inclusionTreeDepth==i.MAX_VALUE)throw"assert failed";return this.inclusionTreeDepth},h.prototype.transform=function(d){var p=this.rect.x;p>s.WORLD_BOUNDARY?p=s.WORLD_BOUNDARY:p<-s.WORLD_BOUNDARY&&(p=-s.WORLD_BOUNDARY);var m=this.rect.y;m>s.WORLD_BOUNDARY?m=s.WORLD_BOUNDARY:m<-s.WORLD_BOUNDARY&&(m=-s.WORLD_BOUNDARY);var g=new u(p,m),y=d.inverseTransformPoint(g);this.setLocation(y.x,y.y)},h.prototype.getLeft=function(){return this.rect.x},h.prototype.getRight=function(){return this.rect.x+this.rect.width},h.prototype.getTop=function(){return this.rect.y},h.prototype.getBottom=function(){return this.rect.y+this.rect.height},h.prototype.getParent=function(){return this.owner==null?null:this.owner.getParent()},t.exports=h}),(function(t,e,r){"use strict";var n=r(0);function i(){}o(i,"FDLayoutConstants");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)}o(n,"PointD"),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),l=r(3),u=r(1),h=r(13),f=r(12),d=r(11);function p(g,y,v){n.call(this,v),this.estimatedSize=i.MIN_VALUE,this.margin=a.DEFAULT_GRAPH_MARGIN,this.edges=[],this.nodes=[],this.isConnected=!1,this.parent=g,y!=null&&y instanceof s?this.graphManager=y:y!=null&&y instanceof Layout&&(this.graphManager=y.graphManager)}o(p,"LGraph"),p.prototype=Object.create(n.prototype);for(var m in n)p[m]=n[m];p.prototype.getNodes=function(){return this.nodes},p.prototype.getEdges=function(){return this.edges},p.prototype.getGraphManager=function(){return this.graphManager},p.prototype.getParent=function(){return this.parent},p.prototype.getLeft=function(){return this.left},p.prototype.getRight=function(){return this.right},p.prototype.getTop=function(){return this.top},p.prototype.getBottom=function(){return this.bottom},p.prototype.isConnected=function(){return this.isConnected},p.prototype.add=function(g,y,v){if(y==null&&v==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(y)>-1&&this.getNodes().indexOf(v)>-1))throw"Source or target not in graph!";if(!(y.owner==v.owner&&y.owner==this))throw"Both owners must be this graph!";return y.owner!=v.owner?null:(b.source=y,b.target=v,b.isInterGraph=!1,this.getEdges().push(b),y.edges.push(b),v!=y&&v.edges.push(b),b)}},p.prototype.remove=function(g){var y=g;if(g instanceof l){if(y==null)throw"Node is null!";if(!(y.owner!=null&&y.owner==this))throw"Owner graph is invalid!";if(this.graphManager==null)throw"Owner graph manager is invalid!";for(var v=y.edges.slice(),x,b=v.length,T=0;T-1&&k>-1))throw"Source and/or target doesn't know this edge!";x.source.edges.splice(w,1),x.target!=x.source&&x.target.edges.splice(k,1);var S=x.source.owner.getEdges().indexOf(x);if(S==-1)throw"Not in owner's edge list!";x.source.owner.getEdges().splice(S,1)}},p.prototype.updateLeftTop=function(){for(var g=i.MAX_VALUE,y=i.MAX_VALUE,v,x,b,T=this.getNodes(),S=T.length,w=0;wv&&(g=v),y>x&&(y=x)}return g==i.MAX_VALUE?null:(T[0].getParent().paddingLeft!=null?b=T[0].getParent().paddingLeft:b=this.margin,this.left=y-b,this.top=g-b,new f(this.left,this.top))},p.prototype.updateBounds=function(g){for(var y=i.MAX_VALUE,v=-i.MAX_VALUE,x=i.MAX_VALUE,b=-i.MAX_VALUE,T,S,w,k,A,C=this.nodes,R=C.length,I=0;IT&&(y=T),vw&&(x=w),bT&&(y=T),vw&&(x=w),b=this.nodes.length){var R=0;v.forEach(function(I){I.owner==g&&R++}),R==this.nodes.length&&(this.isConnected=!0)}},t.exports=p}),(function(t,e,r){"use strict";var n,i=r(1);function a(s){n=r(6),this.layout=s,this.graphs=[],this.edges=[]}o(a,"LGraphManager"),a.prototype.addRoot=function(){var s=this.layout.newGraph(),l=this.layout.newNode(null),u=this.add(s,l);return this.setRootGraph(u),this.rootGraph},a.prototype.add=function(s,l,u,h,f){if(u==null&&h==null&&f==null){if(s==null)throw"Graph is null!";if(l==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(l.child!=null)throw"Already has a child!";return s.parent=l,l.child=s,s}else{f=u,h=l,u=s;var d=h.getOwner(),p=f.getOwner();if(!(d!=null&&d.getGraphManager()==this))throw"Source not in this graph mgr!";if(!(p!=null&&p.getGraphManager()==this))throw"Target not in this graph mgr!";if(d==p)return u.isInterGraph=!1,d.add(u,h,f);if(u.isInterGraph=!0,u.source=h,u.target=f,this.edges.indexOf(u)>-1)throw"Edge already in inter-graph edge list!";if(this.edges.push(u),!(u.source!=null&&u.target!=null))throw"Edge source and/or target is null!";if(!(u.source.edges.indexOf(u)==-1&&u.target.edges.indexOf(u)==-1))throw"Edge already in source and/or target incidency list!";return u.source.edges.push(u),u.target.edges.push(u),u}},a.prototype.remove=function(s){if(s instanceof n){var l=s;if(l.getGraphManager()!=this)throw"Graph not in this graph mgr";if(!(l==this.rootGraph||l.parent!=null&&l.parent.graphManager==this))throw"Invalid parent node!";var u=[];u=u.concat(l.getEdges());for(var h,f=u.length,d=0;d=s.getRight()?l[0]+=Math.min(s.getX()-a.getX(),a.getRight()-s.getRight()):s.getX()<=a.getX()&&s.getRight()>=a.getRight()&&(l[0]+=Math.min(a.getX()-s.getX(),s.getRight()-a.getRight())),a.getY()<=s.getY()&&a.getBottom()>=s.getBottom()?l[1]+=Math.min(s.getY()-a.getY(),a.getBottom()-s.getBottom()):s.getY()<=a.getY()&&s.getBottom()>=a.getBottom()&&(l[1]+=Math.min(a.getY()-s.getY(),s.getBottom()-a.getBottom()));var f=Math.abs((s.getCenterY()-a.getCenterY())/(s.getCenterX()-a.getCenterX()));s.getCenterY()===a.getCenterY()&&s.getCenterX()===a.getCenterX()&&(f=1);var d=f*l[0],p=l[1]/f;l[0]d)return l[0]=u,l[1]=m,l[2]=f,l[3]=C,!1;if(hf)return l[0]=p,l[1]=h,l[2]=k,l[3]=d,!1;if(uf?(l[0]=y,l[1]=v,E=!0):(l[0]=g,l[1]=m,E=!0):_===M&&(u>f?(l[0]=p,l[1]=m,E=!0):(l[0]=x,l[1]=v,E=!0)),-O===M?f>u?(l[2]=A,l[3]=C,D=!0):(l[2]=k,l[3]=w,D=!0):O===M&&(f>u?(l[2]=S,l[3]=w,D=!0):(l[2]=R,l[3]=C,D=!0)),E&&D)return!1;if(u>f?h>d?(P=this.getCardinalDirection(_,M,4),B=this.getCardinalDirection(O,M,2)):(P=this.getCardinalDirection(-_,M,3),B=this.getCardinalDirection(-O,M,1)):h>d?(P=this.getCardinalDirection(-_,M,1),B=this.getCardinalDirection(-O,M,3)):(P=this.getCardinalDirection(_,M,2),B=this.getCardinalDirection(O,M,4)),!E)switch(P){case 1:G=m,F=u+-T/M,l[0]=F,l[1]=G;break;case 2:F=x,G=h+b*M,l[0]=F,l[1]=G;break;case 3:G=v,F=u+T/M,l[0]=F,l[1]=G;break;case 4:F=y,G=h+-b*M,l[0]=F,l[1]=G;break}if(!D)switch(B){case 1:U=w,$=f+-L/M,l[2]=$,l[3]=U;break;case 2:$=R,U=d+I*M,l[2]=$,l[3]=U;break;case 3:U=C,$=f+L/M,l[2]=$,l[3]=U;break;case 4:$=A,U=d+-I*M,l[2]=$,l[3]=U;break}}return!1},i.getCardinalDirection=function(a,s,l){return a>s?l:1+l%4},i.getIntersection=function(a,s,l,u){if(u==null)return this.getIntersection2(a,s,l);var h=a.x,f=a.y,d=s.x,p=s.y,m=l.x,g=l.y,y=u.x,v=u.y,x=void 0,b=void 0,T=void 0,S=void 0,w=void 0,k=void 0,A=void 0,C=void 0,R=void 0;return T=p-f,w=h-d,A=d*f-h*p,S=v-g,k=m-y,C=y*g-m*v,R=T*k-S*w,R===0?null:(x=(w*C-k*A)/R,b=(S*A-T*C)/R,new n(x,b))},i.angleOfVector=function(a,s,l,u){var h=void 0;return a!==l?(h=Math.atan((u-s)/(l-a)),l=0){var v=(-m+Math.sqrt(m*m-4*p*g))/(2*p),x=(-m-Math.sqrt(m*m-4*p*g))/(2*p),b=null;return v>=0&&v<=1?[v]: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(){}o(n,"IMath"),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(){}o(n,"Integer"),n.MAX_VALUE=2147483647,n.MIN_VALUE=-2147483648,t.exports=n}),(function(t,e,r){"use strict";var n=(function(){function h(f,d){for(var p=0;p"u"?"undefined":n(a);return a==null||s!="object"&&s!="function"},t.exports=i}),(function(t,e,r){"use strict";function n(m){if(Array.isArray(m)){for(var g=0,y=Array(m.length);g0&&g;){for(T.push(w[0]);T.length>0&&g;){var k=T[0];T.splice(0,1),b.add(k);for(var A=k.getEdges(),x=0;x-1&&w.splice(L,1)}b=new Set,S=new Map}}return m},p.prototype.createDummyNodesForBendpoints=function(m){for(var g=[],y=m.source,v=this.graphManager.calcLowestCommonAncestor(m.source,m.target),x=0;x0){for(var v=this.edgeToDummyNodes.get(y),x=0;x=0&&g.splice(C,1);var R=S.getNeighborsList();R.forEach(function(E){if(y.indexOf(E)<0){var D=v.get(E),_=D-1;_==1&&k.push(E),v.set(E,_)}})}y=y.concat(k),(g.length==1||g.length==2)&&(x=!0,b=g[0])}return b},p.prototype.setGraphManager=function(m){this.graphManager=m},t.exports=p}),(function(t,e,r){"use strict";function n(){}o(n,"RandomSeed"),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}o(i,"Transform"),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,l=this.lworldExtX;return l!=0&&(s=this.ldeviceOrgX+(a-this.lworldOrgX)*this.ldeviceExtX/l),s},i.prototype.transformY=function(a){var s=0,l=this.lworldExtY;return l!=0&&(s=this.ldeviceOrgY+(a-this.lworldOrgY)*this.ldeviceExtY/l),s},i.prototype.inverseTransformX=function(a){var s=0,l=this.ldeviceExtX;return l!=0&&(s=this.lworldOrgX+(a-this.ldeviceOrgX)*this.lworldExtX/l),s},i.prototype.inverseTransformY=function(a){var s=0,l=this.ldeviceExtY;return l!=0&&(s=this.lworldOrgY+(a-this.ldeviceOrgY)*this.lworldExtY/l),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(d){if(Array.isArray(d)){for(var p=0,m=Array(d.length);pa.ADAPTATION_LOWER_NODE_LIMIT&&(this.coolingFactor=Math.max(this.coolingFactor*a.COOLING_ADAPTATION_FACTOR,this.coolingFactor-(d-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):(d>a.ADAPTATION_LOWER_NODE_LIMIT?this.coolingFactor=Math.max(a.COOLING_ADAPTATION_FACTOR,1-(d-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()},h.prototype.calcSpringForces=function(){for(var d=this.getAllEdges(),p,m=0;m0&&arguments[0]!==void 0?arguments[0]:!0,p=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,m,g,y,v,x=this.getAllNodes(),b;if(this.useFRGridVariant)for(this.totalIterations%a.GRID_CALCULATION_CHECK_PERIOD==1&&d&&this.updateGrid(),b=new Set,m=0;mT||b>T)&&(d.gravitationForceX=-this.gravityConstant*y,d.gravitationForceY=-this.gravityConstant*v)):(T=p.getEstimatedSize()*this.compoundGravityRangeFactor,(x>T||b>T)&&(d.gravitationForceX=-this.gravityConstant*y*this.compoundGravityConstant,d.gravitationForceY=-this.gravityConstant*v*this.compoundGravityConstant))},h.prototype.isConverged=function(){var d,p=!1;return this.totalIterations>this.maxIterations/3&&(p=Math.abs(this.totalDisplacement-this.oldTotalDisplacement)<2),d=this.totalDisplacement=x.length||T>=x[0].length)){for(var S=0;Sh},"_defaultCompareFunction")}]),l})();t.exports=s}),(function(t,e,r){"use strict";function n(){}o(n,"SVD"),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(dt){for(var nt=[];dt-- >0;)nt.push(0);return nt})(Math.min(this.m+1,this.n)),this.U=(function(dt){var nt=o(function bt(wt){if(wt.length==0)return 0;for(var yt=[],ft=0;ft0;)nt.push(0);return nt})(this.n),l=(function(dt){for(var nt=[];dt-- >0;)nt.push(0);return nt})(this.m),u=!0,h=!0,f=Math.min(this.m-1,this.n),d=Math.max(0,Math.min(this.n-2,this.m)),p=0;p=0;M--)if(this.s[M]!==0){for(var P=M+1;P=0;te--){if((function(dt,nt){return dt&&nt})(te0;){var Q=void 0,de=void 0;for(Q=D-2;Q>=-1&&Q!==-1;Q--)if(Math.abs(s[Q])<=ae+K*(Math.abs(this.s[Q])+Math.abs(this.s[Q+1]))){s[Q]=0;break}if(Q===D-2)de=4;else{var ne=void 0;for(ne=D-1;ne>=Q&&ne!==Q;ne--){var Te=(ne!==D?Math.abs(s[ne]):0)+(ne!==Q+1?Math.abs(s[ne-1]):0);if(Math.abs(this.s[ne])<=ae+K*Te){this.s[ne]=0;break}}ne===Q?de=3:ne===D-1?de=1:(de=2,Q=ne)}switch(Q++,de){case 1:{var q=s[D-2];s[D-2]=0;for(var Ve=D-2;Ve>=Q;Ve--){var pe=n.hypot(this.s[Ve],q),Be=this.s[Ve]/pe,Ye=q/pe;if(this.s[Ve]=pe,Ve!==Q&&(q=-Ye*s[Ve-1],s[Ve-1]=Be*s[Ve-1]),h)for(var He=0;He=this.s[Q+1]);){var lt=this.s[Q];if(this.s[Q]=this.s[Q+1],this.s[Q+1]=lt,h&&QMath.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(l,u){for(var h=0;h2&&arguments[2]!==void 0?arguments[2]:1,f=arguments.length>3&&arguments[3]!==void 0?arguments[3]:-1,d=arguments.length>4&&arguments[4]!==void 0?arguments[4]:-1;i(this,s),this.sequence1=l,this.sequence2=u,this.match_score=h,this.mismatch_penalty=f,this.gap_penalty=d,this.iMax=l.length+1,this.jMax=u.length+1,this.grid=new Array(this.iMax);for(var p=0;p=0;l--){var u=this.listeners[l];u.event===a&&u.callback===s&&this.listeners.splice(l,1)}},i.emit=function(a,s){for(var l=0;l{"use strict";o((function(e,r){typeof P4=="object"&&typeof Rz=="object"?Rz.exports=r(Lz()):typeof define=="function"&&define.amd?define(["layout-base"],r):typeof P4=="object"?P4.coseBase=r(Lz()):e.coseBase=r(e.layoutBase)}),"webpackUniversalModuleDefinition")(P4,function(t){return(()=>{"use strict";var e={45:((a,s,l)=>{var u={};u.layoutBase=l(551),u.CoSEConstants=l(806),u.CoSEEdge=l(767),u.CoSEGraph=l(880),u.CoSEGraphManager=l(578),u.CoSELayout=l(765),u.CoSENode=l(991),u.ConstraintHandler=l(902),a.exports=u}),806:((a,s,l)=>{var u=l(551).FDLayoutConstants;function h(){}o(h,"CoSEConstants");for(var f in u)h[f]=u[f];h.DEFAULT_USE_MULTI_LEVEL_SCALING=!1,h.DEFAULT_RADIAL_SEPARATION=u.DEFAULT_EDGE_LENGTH,h.DEFAULT_COMPONENT_SEPERATION=60,h.TILE=!0,h.TILING_PADDING_VERTICAL=10,h.TILING_PADDING_HORIZONTAL=10,h.TRANSFORM_ON_CONSTRAINT_HANDLING=!0,h.ENFORCE_CONSTRAINTS=!0,h.APPLY_LAYOUT=!0,h.RELAX_MOVEMENT_ON_CONSTRAINTS=!0,h.TREE_REDUCTION_ON_INCREMENTAL=!0,h.PURE_INCREMENTAL=h.DEFAULT_INCREMENTAL,a.exports=h}),767:((a,s,l)=>{var u=l(551).FDLayoutEdge;function h(d,p,m){u.call(this,d,p,m)}o(h,"CoSEEdge"),h.prototype=Object.create(u.prototype);for(var f in u)h[f]=u[f];a.exports=h}),880:((a,s,l)=>{var u=l(551).LGraph;function h(d,p,m){u.call(this,d,p,m)}o(h,"CoSEGraph"),h.prototype=Object.create(u.prototype);for(var f in u)h[f]=u[f];a.exports=h}),578:((a,s,l)=>{var u=l(551).LGraphManager;function h(d){u.call(this,d)}o(h,"CoSEGraphManager"),h.prototype=Object.create(u.prototype);for(var f in u)h[f]=u[f];a.exports=h}),765:((a,s,l)=>{var u=l(551).FDLayout,h=l(578),f=l(880),d=l(991),p=l(767),m=l(806),g=l(902),y=l(551).FDLayoutConstants,v=l(551).LayoutConstants,x=l(551).Point,b=l(551).PointD,T=l(551).DimensionD,S=l(551).Layout,w=l(551).Integer,k=l(551).IGeometry,A=l(551).LGraph,C=l(551).Transform,R=l(551).LinkedList;function I(){u.call(this),this.toBeTiled={},this.constraints={}}o(I,"CoSELayout"),I.prototype=Object.create(u.prototype);for(var L in u)I[L]=u[L];I.prototype.newGraphManager=function(){var E=new h(this);return this.graphManager=E,E},I.prototype.newGraph=function(E){return new f(null,this.graphManager,E)},I.prototype.newNode=function(E){return new d(this.graphManager,E)},I.prototype.newEdge=function(E){return new p(null,null,E)},I.prototype.initParameters=function(){u.prototype.initParameters.call(this,arguments),this.isSubLayout||(m.DEFAULT_EDGE_LENGTH<10?this.idealEdgeLength=10:this.idealEdgeLength=m.DEFAULT_EDGE_LENGTH,this.useSmartIdealEdgeLengthCalculation=m.DEFAULT_USE_SMART_IDEAL_EDGE_LENGTH_CALCULATION,this.gravityConstant=y.DEFAULT_GRAVITY_STRENGTH,this.compoundGravityConstant=y.DEFAULT_COMPOUND_GRAVITY_STRENGTH,this.gravityRangeFactor=y.DEFAULT_GRAVITY_RANGE_FACTOR,this.compoundGravityRangeFactor=y.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR,this.prunedNodesAll=[],this.growTreeIterations=0,this.afterGrowthIterations=0,this.isTreeGrowing=!1,this.isGrowthFinished=!1)},I.prototype.initSpringEmbedder=function(){u.prototype.initSpringEmbedder.call(this),this.coolingCycle=0,this.maxCoolingCycle=this.maxIterations/y.CONVERGENCE_CHECK_PERIOD,this.finalTemperature=.04,this.coolingAdjuster=1},I.prototype.layout=function(){var E=v.DEFAULT_CREATE_BENDS_AS_NEEDED;return E&&(this.createBendpoints(),this.graphManager.resetAllEdges()),this.level=0,this.classicLayout()},I.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(m.TREE_REDUCTION_ON_INCREMENTAL){this.reduceTrees(),this.graphManager.resetAllNodesToApplyGravitation();var D=new Set(this.getAllNodes()),_=this.nodesWithGravity.filter(function(P){return D.has(P)});this.graphManager.setAllNodesToApplyGravitation(_)}}else{var E=this.getFlatForest();if(E.length>0)this.positionNodesRadially(E);else{this.reduceTrees(),this.graphManager.resetAllNodesToApplyGravitation();var D=new Set(this.getAllNodes()),_=this.nodesWithGravity.filter(function(O){return D.has(O)});this.graphManager.setAllNodesToApplyGravitation(_),this.positionNodesRandomly()}}return Object.keys(this.constraints).length>0&&(g.handleConstraints(this),this.initConstraintVariables()),this.initSpringEmbedder(),m.APPLY_LAYOUT&&this.runSpringEmbedder(),!0},I.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%y.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 E=new Set(this.getAllNodes()),D=this.nodesWithGravity.filter(function(M){return E.has(M)});this.graphManager.setAllNodesToApplyGravitation(D),this.graphManager.updateBounds(),this.updateGrid(),m.PURE_INCREMENTAL?this.coolingFactor=y.DEFAULT_COOLING_FACTOR_INCREMENTAL/2:this.coolingFactor=y.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()),m.PURE_INCREMENTAL?this.coolingFactor=y.DEFAULT_COOLING_FACTOR_INCREMENTAL/2*((100-this.afterGrowthIterations)/100):this.coolingFactor=y.DEFAULT_COOLING_FACTOR_INCREMENTAL*((100-this.afterGrowthIterations)/100),this.afterGrowthIterations++}var _=!this.isTreeGrowing&&!this.isGrowthFinished,O=this.growTreeIterations%10==1&&this.isTreeGrowing||this.afterGrowthIterations%10==1&&this.isGrowthFinished;return this.totalDisplacement=0,this.graphManager.updateBounds(),this.calcSpringForces(),this.calcRepulsionForces(_,O),this.calcGravitationalForces(),this.moveNodes(),this.animate(),!1},I.prototype.getPositionsData=function(){for(var E=this.graphManager.getAllNodes(),D={},_=0;_0&&this.updateDisplacements();for(var _=0;_0&&(O.fixedNodeWeight=P)}}if(this.constraints.relativePlacementConstraint){var B=new Map,F=new Map;if(this.dummyToNodeForVerticalAlignment=new Map,this.dummyToNodeForHorizontalAlignment=new Map,this.fixedNodesOnHorizontal=new Set,this.fixedNodesOnVertical=new Set,this.fixedNodeSet.forEach(function(J){E.fixedNodesOnHorizontal.add(J),E.fixedNodesOnVertical.add(J)}),this.constraints.alignmentConstraint){if(this.constraints.alignmentConstraint.vertical)for(var G=this.constraints.alignmentConstraint.vertical,_=0;_=2*J.length/3;ee--)ue=Math.floor(Math.random()*(ee+1)),re=J[ee],J[ee]=J[ue],J[ue]=re;return J},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(J){if(J.left){var ue=B.has(J.left)?B.get(J.left):J.left,re=B.has(J.right)?B.get(J.right):J.right;E.nodesInRelativeHorizontal.includes(ue)||(E.nodesInRelativeHorizontal.push(ue),E.nodeToRelativeConstraintMapHorizontal.set(ue,[]),E.dummyToNodeForVerticalAlignment.has(ue)?E.nodeToTempPositionMapHorizontal.set(ue,E.idToNodeMap.get(E.dummyToNodeForVerticalAlignment.get(ue)[0]).getCenterX()):E.nodeToTempPositionMapHorizontal.set(ue,E.idToNodeMap.get(ue).getCenterX())),E.nodesInRelativeHorizontal.includes(re)||(E.nodesInRelativeHorizontal.push(re),E.nodeToRelativeConstraintMapHorizontal.set(re,[]),E.dummyToNodeForVerticalAlignment.has(re)?E.nodeToTempPositionMapHorizontal.set(re,E.idToNodeMap.get(E.dummyToNodeForVerticalAlignment.get(re)[0]).getCenterX()):E.nodeToTempPositionMapHorizontal.set(re,E.idToNodeMap.get(re).getCenterX())),E.nodeToRelativeConstraintMapHorizontal.get(ue).push({right:re,gap:J.gap}),E.nodeToRelativeConstraintMapHorizontal.get(re).push({left:ue,gap:J.gap})}else{var ee=F.has(J.top)?F.get(J.top):J.top,Z=F.has(J.bottom)?F.get(J.bottom):J.bottom;E.nodesInRelativeVertical.includes(ee)||(E.nodesInRelativeVertical.push(ee),E.nodeToRelativeConstraintMapVertical.set(ee,[]),E.dummyToNodeForHorizontalAlignment.has(ee)?E.nodeToTempPositionMapVertical.set(ee,E.idToNodeMap.get(E.dummyToNodeForHorizontalAlignment.get(ee)[0]).getCenterY()):E.nodeToTempPositionMapVertical.set(ee,E.idToNodeMap.get(ee).getCenterY())),E.nodesInRelativeVertical.includes(Z)||(E.nodesInRelativeVertical.push(Z),E.nodeToRelativeConstraintMapVertical.set(Z,[]),E.dummyToNodeForHorizontalAlignment.has(Z)?E.nodeToTempPositionMapVertical.set(Z,E.idToNodeMap.get(E.dummyToNodeForHorizontalAlignment.get(Z)[0]).getCenterY()):E.nodeToTempPositionMapVertical.set(Z,E.idToNodeMap.get(Z).getCenterY())),E.nodeToRelativeConstraintMapVertical.get(ee).push({bottom:Z,gap:J.gap}),E.nodeToRelativeConstraintMapVertical.get(Z).push({top:ee,gap:J.gap})}});else{var U=new Map,j=new Map;this.constraints.relativePlacementConstraint.forEach(function(J){if(J.left){var ue=B.has(J.left)?B.get(J.left):J.left,re=B.has(J.right)?B.get(J.right):J.right;U.has(ue)?U.get(ue).push(re):U.set(ue,[re]),U.has(re)?U.get(re).push(ue):U.set(re,[ue])}else{var ee=F.has(J.top)?F.get(J.top):J.top,Z=F.has(J.bottom)?F.get(J.bottom):J.bottom;j.has(ee)?j.get(ee).push(Z):j.set(ee,[Z]),j.has(Z)?j.get(Z).push(ee):j.set(Z,[ee])}});var te=o(function(ue,re){var ee=[],Z=[],K=new R,ae=new Set,Q=0;return ue.forEach(function(de,ne){if(!ae.has(ne)){ee[Q]=[],Z[Q]=!1;var Te=ne;for(K.push(Te),ae.add(Te),ee[Q].push(Te);K.length!=0;){Te=K.shift(),re.has(Te)&&(Z[Q]=!0);var q=ue.get(Te);q.forEach(function(Ve){ae.has(Ve)||(K.push(Ve),ae.add(Ve),ee[Q].push(Ve))})}Q++}}),{components:ee,isFixed:Z}},"constructComponents"),Y=te(U,E.fixedNodesOnHorizontal);this.componentsOnHorizontal=Y.components,this.fixedComponentsOnHorizontal=Y.isFixed;var oe=te(j,E.fixedNodesOnVertical);this.componentsOnVertical=oe.components,this.fixedComponentsOnVertical=oe.isFixed}}},I.prototype.updateDisplacements=function(){var E=this;if(this.constraints.fixedNodeConstraint&&this.constraints.fixedNodeConstraint.forEach(function(oe){var J=E.idToNodeMap.get(oe.nodeId);J.displacementX=0,J.displacementY=0}),this.constraints.alignmentConstraint){if(this.constraints.alignmentConstraint.vertical)for(var D=this.constraints.alignmentConstraint.vertical,_=0;_1){var F;for(F=0;FO&&(O=Math.floor(B.y)),P=Math.floor(B.x+m.DEFAULT_COMPONENT_SEPERATION)}this.transform(new b(v.WORLD_CENTER_X-B.x/2,v.WORLD_CENTER_Y-B.y/2))},I.radialLayout=function(E,D,_){var O=Math.max(this.maxDiagonalInTree(E),m.DEFAULT_RADIAL_SEPARATION);I.branchRadialLayout(D,null,0,359,0,O);var M=A.calculateBounds(E),P=new C;P.setDeviceOrgX(M.getMinX()),P.setDeviceOrgY(M.getMinY()),P.setWorldOrgX(_.x),P.setWorldOrgY(_.y);for(var B=0;B1;){var ee=re[0];re.splice(0,1);var Z=te.indexOf(ee);Z>=0&&te.splice(Z,1),J--,Y--}D!=null?ue=(te.indexOf(re[0])+1)%J:ue=0;for(var K=Math.abs(O-_)/Y,ae=ue;oe!=Y;ae=++ae%J){var Q=te[ae].getOtherEnd(E);if(Q!=D){var de=(_+oe*K)%360,ne=(de+K)%360;I.branchRadialLayout(Q,E,de,ne,M+P,P),oe++}}},I.maxDiagonalInTree=function(E){for(var D=w.MIN_VALUE,_=0;_D&&(D=M)}return D},I.prototype.calcRepulsionRange=function(){return 2*(this.level+1)*this.idealEdgeLength},I.prototype.groupZeroDegreeMembers=function(){var E=this,D={};this.memberGroups={},this.idToDummyNode={};for(var _=[],O=this.graphManager.getAllNodes(),M=0;M"u"&&(D[F]=[]),D[F]=D[F].concat(P)}Object.keys(D).forEach(function(G){if(D[G].length>1){var $="DummyCompound_"+G;E.memberGroups[$]=D[G];var U=D[G][0].getParent(),j=new d(E.graphManager);j.id=$,j.paddingLeft=U.paddingLeft||0,j.paddingRight=U.paddingRight||0,j.paddingBottom=U.paddingBottom||0,j.paddingTop=U.paddingTop||0,E.idToDummyNode[$]=j;var te=E.getGraphManager().add(E.newGraph(),j),Y=U.getChild();Y.add(j);for(var oe=0;oeM?(O.rect.x-=(O.labelWidth-M)/2,O.setWidth(O.labelWidth),O.labelMarginLeft=(O.labelWidth-M)/2):O.labelPosHorizontal=="right"&&O.setWidth(M+O.labelWidth)),O.labelHeight&&(O.labelPosVertical=="top"?(O.rect.y-=O.labelHeight,O.setHeight(P+O.labelHeight),O.labelMarginTop=O.labelHeight):O.labelPosVertical=="center"&&O.labelHeight>P?(O.rect.y-=(O.labelHeight-P)/2,O.setHeight(O.labelHeight),O.labelMarginTop=(O.labelHeight-P)/2):O.labelPosVertical=="bottom"&&O.setHeight(P+O.labelHeight))}})},I.prototype.repopulateCompounds=function(){for(var E=this.compoundOrder.length-1;E>=0;E--){var D=this.compoundOrder[E],_=D.id,O=D.paddingLeft,M=D.paddingTop,P=D.labelMarginLeft,B=D.labelMarginTop;this.adjustLocations(this.tiledMemberPack[_],D.rect.x,D.rect.y,O,M,P,B)}},I.prototype.repopulateZeroDegreeMembers=function(){var E=this,D=this.tiledZeroDegreePack;Object.keys(D).forEach(function(_){var O=E.idToDummyNode[_],M=O.paddingLeft,P=O.paddingTop,B=O.labelMarginLeft,F=O.labelMarginTop;E.adjustLocations(D[_],O.rect.x,O.rect.y,M,P,B,F)})},I.prototype.getToBeTiled=function(E){var D=E.id;if(this.toBeTiled[D]!=null)return this.toBeTiled[D];var _=E.getChild();if(_==null)return this.toBeTiled[D]=!1,!1;for(var O=_.getNodes(),M=0;M0)return this.toBeTiled[D]=!1,!1;if(P.getChild()==null){this.toBeTiled[P.id]=!1;continue}if(!this.getToBeTiled(P))return this.toBeTiled[D]=!1,!1}return this.toBeTiled[D]=!0,!0},I.prototype.getNodeDegree=function(E){for(var D=E.id,_=E.getEdges(),O=0,M=0;M<_.length;M++){var P=_[M];P.getSource().id!==P.getTarget().id&&(O=O+1)}return O},I.prototype.getNodeDegreeWithChildren=function(E){var D=this.getNodeDegree(E);if(E.getChild()==null)return D;for(var _=E.getChild().getNodes(),O=0;O<_.length;O++){var M=_[O];D+=this.getNodeDegreeWithChildren(M)}return D},I.prototype.performDFSOnCompounds=function(){this.compoundOrder=[],this.fillCompexOrderByDFS(this.graphManager.getRoot().getNodes())},I.prototype.fillCompexOrderByDFS=function(E){for(var D=0;DU&&(U=te.rect.height)}_+=U+E.verticalPadding}},I.prototype.tileCompoundMembers=function(E,D){var _=this;this.tiledMemberPack=[],Object.keys(E).forEach(function(O){var M=D[O];if(_.tiledMemberPack[O]=_.tileNodes(E[O],M.paddingLeft+M.paddingRight),M.rect.width=_.tiledMemberPack[O].width,M.rect.height=_.tiledMemberPack[O].height,M.setCenter(_.tiledMemberPack[O].centerX,_.tiledMemberPack[O].centerY),M.labelMarginLeft=0,M.labelMarginTop=0,m.NODE_DIMENSIONS_INCLUDE_LABELS){var P=M.rect.width,B=M.rect.height;M.labelWidth&&(M.labelPosHorizontal=="left"?(M.rect.x-=M.labelWidth,M.setWidth(P+M.labelWidth),M.labelMarginLeft=M.labelWidth):M.labelPosHorizontal=="center"&&M.labelWidth>P?(M.rect.x-=(M.labelWidth-P)/2,M.setWidth(M.labelWidth),M.labelMarginLeft=(M.labelWidth-P)/2):M.labelPosHorizontal=="right"&&M.setWidth(P+M.labelWidth)),M.labelHeight&&(M.labelPosVertical=="top"?(M.rect.y-=M.labelHeight,M.setHeight(B+M.labelHeight),M.labelMarginTop=M.labelHeight):M.labelPosVertical=="center"&&M.labelHeight>B?(M.rect.y-=(M.labelHeight-B)/2,M.setHeight(M.labelHeight),M.labelMarginTop=(M.labelHeight-B)/2):M.labelPosVertical=="bottom"&&M.setHeight(B+M.labelHeight))}})},I.prototype.tileNodes=function(E,D){var _=this.tileNodesByFavoringDim(E,D,!0),O=this.tileNodesByFavoringDim(E,D,!1),M=this.getOrgRatio(_),P=this.getOrgRatio(O),B;return PF&&(F=oe.getWidth())});var G=P/M,$=B/M,U=Math.pow(_-O,2)+4*(G+O)*($+_)*M,j=(O-_+Math.sqrt(U))/(2*(G+O)),te;D?(te=Math.ceil(j),te==j&&te++):te=Math.floor(j);var Y=te*(G+O)-O;return F>Y&&(Y=F),Y+=O*2,Y},I.prototype.tileNodesByFavoringDim=function(E,D,_){var O=m.TILING_PADDING_VERTICAL,M=m.TILING_PADDING_HORIZONTAL,P=m.TILING_COMPARE_BY,B={rows:[],rowWidth:[],rowHeight:[],width:0,height:D,verticalPadding:O,horizontalPadding:M,centerX:0,centerY:0};P&&(B.idealRowWidth=this.calcIdealRowWidth(E,_));var F=o(function(J){return J.rect.width*J.rect.height},"getNodeArea"),G=o(function(J,ue){return F(ue)-F(J)},"areaCompareFcn");E.sort(function(oe,J){var ue=G;return B.idealRowWidth?(ue=P,ue(oe.id,J.id)):ue(oe,J)});for(var $=0,U=0,j=0;j0&&(B+=E.horizontalPadding),E.rowWidth[_]=B,E.width0&&(F+=E.verticalPadding);var G=0;F>E.rowHeight[_]&&(G=E.rowHeight[_],E.rowHeight[_]=F,G=E.rowHeight[_]-G),E.height+=G,E.rows[_].push(D)},I.prototype.getShortestRowIndex=function(E){for(var D=-1,_=Number.MAX_VALUE,O=0;O_&&(D=O,_=E.rowWidth[O]);return D},I.prototype.canAddHorizontal=function(E,D,_){if(E.idealRowWidth){var O=E.rows.length-1,M=E.rowWidth[O];return M+D+E.horizontalPadding<=E.idealRowWidth}var P=this.getShortestRowIndex(E);if(P<0)return!0;var B=E.rowWidth[P];if(B+E.horizontalPadding+D<=E.width)return!0;var F=0;E.rowHeight[P]<_&&P>0&&(F=_+E.verticalPadding-E.rowHeight[P]);var G;E.width-B>=D+E.horizontalPadding?G=(E.height+F)/(B+D+E.horizontalPadding):G=(E.height+F)/E.width,F=_+E.verticalPadding;var $;return E.widthP&&D!=_){O.splice(-1,1),E.rows[_].push(M),E.rowWidth[D]=E.rowWidth[D]-P,E.rowWidth[_]=E.rowWidth[_]+P,E.width=E.rowWidth[instance.getLongestRowIndex(E)];for(var B=Number.MIN_VALUE,F=0;FB&&(B=O[F].height);D>0&&(B+=E.verticalPadding);var G=E.rowHeight[D]+E.rowHeight[_];E.rowHeight[D]=B,E.rowHeight[_]0)for(var Y=M;Y<=P;Y++)te[0]+=this.grid[Y][B-1].length+this.grid[Y][B].length-1;if(P0)for(var Y=B;Y<=F;Y++)te[3]+=this.grid[M-1][Y].length+this.grid[M][Y].length-1;for(var oe=w.MAX_VALUE,J,ue,re=0;re{var u=l(551).FDLayoutNode,h=l(551).IMath;function f(p,m,g,y){u.call(this,p,m,g,y)}o(f,"CoSENode"),f.prototype=Object.create(u.prototype);for(var d in u)f[d]=u[d];f.prototype.calculateDisplacement=function(){var p=this.graphManager.getLayout();this.getChild()!=null&&this.fixedNodeWeight?(this.displacementX+=p.coolingFactor*(this.springForceX+this.repulsionForceX+this.gravitationForceX)/this.fixedNodeWeight,this.displacementY+=p.coolingFactor*(this.springForceY+this.repulsionForceY+this.gravitationForceY)/this.fixedNodeWeight):(this.displacementX+=p.coolingFactor*(this.springForceX+this.repulsionForceX+this.gravitationForceX)/this.noOfChildren,this.displacementY+=p.coolingFactor*(this.springForceY+this.repulsionForceY+this.gravitationForceY)/this.noOfChildren),Math.abs(this.displacementX)>p.coolingFactor*p.maxNodeDisplacement&&(this.displacementX=p.coolingFactor*p.maxNodeDisplacement*h.sign(this.displacementX)),Math.abs(this.displacementY)>p.coolingFactor*p.maxNodeDisplacement&&(this.displacementY=p.coolingFactor*p.maxNodeDisplacement*h.sign(this.displacementY)),this.child&&this.child.getNodes().length>0&&this.propogateDisplacementToChildren(this.displacementX,this.displacementY)},f.prototype.propogateDisplacementToChildren=function(p,m){for(var g=this.getChild().getNodes(),y,v=0;v{function u(g){if(Array.isArray(g)){for(var y=0,v=Array(g.length);y0){var et=0;Oe.forEach(function(lt){he=="horizontal"?(ye.set(lt,x.has(lt)?b[x.get(lt)]:se.get(lt)),et+=ye.get(lt)):(ye.set(lt,x.has(lt)?T[x.get(lt)]:se.get(lt)),et+=ye.get(lt))}),et=et/Oe.length,We.forEach(function(lt){z.has(lt)||ye.set(lt,et)})}else{var Ue=0;We.forEach(function(lt){he=="horizontal"?Ue+=x.has(lt)?b[x.get(lt)]:se.get(lt):Ue+=x.has(lt)?T[x.get(lt)]:se.get(lt)}),Ue=Ue/We.length,We.forEach(function(lt){ye.set(lt,Ue)})}});for(var ze=o(function(){var Oe=_e.shift(),et=W.get(Oe);et.forEach(function(Ue){if(ye.get(Ue.id)lt&&(lt=yt),ftGt&&(Gt=ft)}}catch(Ct){Lt=!0,dt=Ct}finally{try{!vt&&nt.return&&nt.return()}finally{if(Lt)throw dt}}var Ur=(et+lt)/2-(Ue+Gt)/2,_t=!0,bn=!1,Br=void 0;try{for(var cr=We[Symbol.iterator](),ar;!(_t=(ar=cr.next()).done);_t=!0){var _r=ar.value;ye.set(_r,ye.get(_r)+Ur)}}catch(Ct){bn=!0,Br=Ct}finally{try{!_t&&cr.return&&cr.return()}finally{if(bn)throw Br}}})}return ye},"findAppropriatePositionForRelativePlacement"),L=o(function(W){var he=0,z=0,se=0,le=0;if(W.forEach(function(Re){Re.left?b[x.get(Re.left)]-b[x.get(Re.right)]>=0?he++:z++:T[x.get(Re.top)]-T[x.get(Re.bottom)]>=0?se++:le++}),he>z&&se>le)for(var ke=0;kez)for(var ve=0;vele)for(var ye=0;ye1)y.fixedNodeConstraint.forEach(function(xe,W){O[W]=[xe.position.x,xe.position.y],M[W]=[b[x.get(xe.nodeId)],T[x.get(xe.nodeId)]]}),P=!0;else if(y.alignmentConstraint)(function(){var xe=0;if(y.alignmentConstraint.vertical){for(var W=y.alignmentConstraint.vertical,he=o(function(ye){var Re=new Set;W[ye].forEach(function(Ke){Re.add(Ke)});var _e=new Set([].concat(u(Re)).filter(function(Ke){return F.has(Ke)})),ze=void 0;_e.size>0?ze=b[x.get(_e.values().next().value)]:ze=R(Re).x,W[ye].forEach(function(Ke){O[xe]=[ze,T[x.get(Ke)]],M[xe]=[b[x.get(Ke)],T[x.get(Ke)]],xe++})},"_loop2"),z=0;z0?ze=b[x.get(_e.values().next().value)]:ze=R(Re).y,se[ye].forEach(function(Ke){O[xe]=[b[x.get(Ke)],ze],M[xe]=[b[x.get(Ke)],T[x.get(Ke)]],xe++})},"_loop3"),ke=0;kej&&(j=U[Y].length,te=Y);if(j<$.size/2)L(y.relativePlacementConstraint),P=!1,B=!1;else{var oe=new Map,J=new Map,ue=[];U[te].forEach(function(xe){G.get(xe).forEach(function(W){W.direction=="horizontal"?(oe.has(xe)?oe.get(xe).push(W):oe.set(xe,[W]),oe.has(W.id)||oe.set(W.id,[]),ue.push({left:xe,right:W.id})):(J.has(xe)?J.get(xe).push(W):J.set(xe,[W]),J.has(W.id)||J.set(W.id,[]),ue.push({top:xe,bottom:W.id}))})}),L(ue),B=!1;var re=I(oe,"horizontal"),ee=I(J,"vertical");U[te].forEach(function(xe,W){M[W]=[b[x.get(xe)],T[x.get(xe)]],O[W]=[],re.has(xe)?O[W][0]=re.get(xe):O[W][0]=b[x.get(xe)],ee.has(xe)?O[W][1]=ee.get(xe):O[W][1]=T[x.get(xe)]}),P=!0}}if(P){for(var Z=void 0,K=d.transpose(O),ae=d.transpose(M),Q=0;Q0){var Be={x:0,y:0};y.fixedNodeConstraint.forEach(function(xe,W){var he={x:b[x.get(xe.nodeId)],y:T[x.get(xe.nodeId)]},z=xe.position,se=C(z,he);Be.x+=se.x,Be.y+=se.y}),Be.x/=y.fixedNodeConstraint.length,Be.y/=y.fixedNodeConstraint.length,b.forEach(function(xe,W){b[W]+=Be.x}),T.forEach(function(xe,W){T[W]+=Be.y}),y.fixedNodeConstraint.forEach(function(xe){b[x.get(xe.nodeId)]=xe.position.x,T[x.get(xe.nodeId)]=xe.position.y})}if(y.alignmentConstraint){if(y.alignmentConstraint.vertical)for(var Ye=y.alignmentConstraint.vertical,He=o(function(W){var he=new Set;Ye[W].forEach(function(le){he.add(le)});var z=new Set([].concat(u(he)).filter(function(le){return F.has(le)})),se=void 0;z.size>0?se=b[x.get(z.values().next().value)]:se=R(he).x,he.forEach(function(le){F.has(le)||(b[x.get(le)]=se)})},"_loop4"),Le=0;Le0?se=T[x.get(z.values().next().value)]:se=R(he).y,he.forEach(function(le){F.has(le)||(T[x.get(le)]=se)})},"_loop5"),Ce=0;Ce{a.exports=t})},r={};function n(a){var s=r[a];if(s!==void 0)return s.exports;var l=r[a]={exports:{}};return e[a](l,l.exports,n),l.exports}o(n,"__webpack_require__");var i=n(45);return i})()})});var R4e=Da((B4,Mz)=>{"use strict";o((function(e,r){typeof B4=="object"&&typeof Mz=="object"?Mz.exports=r(Nz()):typeof define=="function"&&define.amd?define(["cose-base"],r):typeof B4=="object"?B4.cytoscapeFcose=r(Nz()):e.cytoscapeFcose=r(e.coseBase)}),"webpackUniversalModuleDefinition")(B4,function(t){return(()=>{"use strict";var e={658:(a=>{a.exports=Object.assign!=null?Object.assign.bind(Object):function(s){for(var l=arguments.length,u=Array(l>1?l-1:0),h=1;h{var u=(function(){function d(p,m){var g=[],y=!0,v=!1,x=void 0;try{for(var b=p[Symbol.iterator](),T;!(y=(T=b.next()).done)&&(g.push(T.value),!(m&&g.length===m));y=!0);}catch(S){v=!0,x=S}finally{try{!y&&b.return&&b.return()}finally{if(v)throw x}}return g}return o(d,"sliceIterator"),function(p,m){if(Array.isArray(p))return p;if(Symbol.iterator in Object(p))return d(p,m);throw new TypeError("Invalid attempt to destructure non-iterable instance")}})(),h=l(140).layoutBase.LinkedList,f={};f.getTopMostNodes=function(d){for(var p={},m=0;m0&&P.merge($)});for(var B=0;B1){T=x[0],S=T.connectedEdges().length,x.forEach(function(M){M.connectedEdges().length0&&g.set("dummy"+(g.size+1),A),C},f.relocateComponent=function(d,p,m){if(!m.fixedNodeConstraint){var g=Number.POSITIVE_INFINITY,y=Number.NEGATIVE_INFINITY,v=Number.POSITIVE_INFINITY,x=Number.NEGATIVE_INFINITY;if(m.quality=="draft"){var b=!0,T=!1,S=void 0;try{for(var w=p.nodeIndexes[Symbol.iterator](),k;!(b=(k=w.next()).done);b=!0){var A=k.value,C=u(A,2),R=C[0],I=C[1],L=m.cy.getElementById(R);if(L){var E=L.boundingBox(),D=p.xCoords[I]-E.w/2,_=p.xCoords[I]+E.w/2,O=p.yCoords[I]-E.h/2,M=p.yCoords[I]+E.h/2;Dy&&(y=_),Ox&&(x=M)}}}catch($){T=!0,S=$}finally{try{!b&&w.return&&w.return()}finally{if(T)throw S}}var P=d.x-(y+g)/2,B=d.y-(x+v)/2;p.xCoords=p.xCoords.map(function($){return $+P}),p.yCoords=p.yCoords.map(function($){return $+B})}else{Object.keys(p).forEach(function($){var U=p[$],j=U.getRect().x,te=U.getRect().x+U.getRect().width,Y=U.getRect().y,oe=U.getRect().y+U.getRect().height;jy&&(y=te),Yx&&(x=oe)});var F=d.x-(y+g)/2,G=d.y-(x+v)/2;Object.keys(p).forEach(function($){var U=p[$];U.setCenter(U.getCenterX()+F,U.getCenterY()+G)})}}},f.calcBoundingBox=function(d,p,m,g){for(var y=Number.MAX_SAFE_INTEGER,v=Number.MIN_SAFE_INTEGER,x=Number.MAX_SAFE_INTEGER,b=Number.MIN_SAFE_INTEGER,T=void 0,S=void 0,w=void 0,k=void 0,A=d.descendants().not(":parent"),C=A.length,R=0;RT&&(y=T),vw&&(x=w),b{var u=l(548),h=l(140).CoSELayout,f=l(140).CoSENode,d=l(140).layoutBase.PointD,p=l(140).layoutBase.DimensionD,m=l(140).layoutBase.LayoutConstants,g=l(140).layoutBase.FDLayoutConstants,y=l(140).CoSEConstants,v=o(function(b,T){var S=b.cy,w=b.eles,k=w.nodes(),A=w.edges(),C=void 0,R=void 0,I=void 0,L={};b.randomize&&(C=T.nodeIndexes,R=T.xCoords,I=T.yCoords);var E=o(function($){return typeof $=="function"},"isFn"),D=o(function($,U){return E($)?$(U):$},"optFn"),_=u.calcParentsWithoutChildren(S,w),O=o(function G($,U,j,te){for(var Y=U.length,oe=0;oe0){var K=void 0;K=j.getGraphManager().add(j.newGraph(),re),G(K,ue,j,te)}}},"processChildrenList"),M=o(function($,U,j){for(var te=0,Y=0,oe=0;oe0?y.DEFAULT_EDGE_LENGTH=g.DEFAULT_EDGE_LENGTH=te/Y:E(b.idealEdgeLength)?y.DEFAULT_EDGE_LENGTH=g.DEFAULT_EDGE_LENGTH=50:y.DEFAULT_EDGE_LENGTH=g.DEFAULT_EDGE_LENGTH=b.idealEdgeLength,y.MIN_REPULSION_DIST=g.MIN_REPULSION_DIST=g.DEFAULT_EDGE_LENGTH/10,y.DEFAULT_RADIAL_SEPARATION=g.DEFAULT_EDGE_LENGTH)},"processEdges"),P=o(function($,U){U.fixedNodeConstraint&&($.constraints.fixedNodeConstraint=U.fixedNodeConstraint),U.alignmentConstraint&&($.constraints.alignmentConstraint=U.alignmentConstraint),U.relativePlacementConstraint&&($.constraints.relativePlacementConstraint=U.relativePlacementConstraint)},"processConstraints");b.nestingFactor!=null&&(y.PER_LEVEL_IDEAL_EDGE_LENGTH_FACTOR=g.PER_LEVEL_IDEAL_EDGE_LENGTH_FACTOR=b.nestingFactor),b.gravity!=null&&(y.DEFAULT_GRAVITY_STRENGTH=g.DEFAULT_GRAVITY_STRENGTH=b.gravity),b.numIter!=null&&(y.MAX_ITERATIONS=g.MAX_ITERATIONS=b.numIter),b.gravityRange!=null&&(y.DEFAULT_GRAVITY_RANGE_FACTOR=g.DEFAULT_GRAVITY_RANGE_FACTOR=b.gravityRange),b.gravityCompound!=null&&(y.DEFAULT_COMPOUND_GRAVITY_STRENGTH=g.DEFAULT_COMPOUND_GRAVITY_STRENGTH=b.gravityCompound),b.gravityRangeCompound!=null&&(y.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR=g.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR=b.gravityRangeCompound),b.initialEnergyOnIncremental!=null&&(y.DEFAULT_COOLING_FACTOR_INCREMENTAL=g.DEFAULT_COOLING_FACTOR_INCREMENTAL=b.initialEnergyOnIncremental),b.tilingCompareBy!=null&&(y.TILING_COMPARE_BY=b.tilingCompareBy),b.quality=="proof"?m.QUALITY=2:m.QUALITY=0,y.NODE_DIMENSIONS_INCLUDE_LABELS=g.NODE_DIMENSIONS_INCLUDE_LABELS=m.NODE_DIMENSIONS_INCLUDE_LABELS=b.nodeDimensionsIncludeLabels,y.DEFAULT_INCREMENTAL=g.DEFAULT_INCREMENTAL=m.DEFAULT_INCREMENTAL=!b.randomize,y.ANIMATE=g.ANIMATE=m.ANIMATE=b.animate,y.TILE=b.tile,y.TILING_PADDING_VERTICAL=typeof b.tilingPaddingVertical=="function"?b.tilingPaddingVertical.call():b.tilingPaddingVertical,y.TILING_PADDING_HORIZONTAL=typeof b.tilingPaddingHorizontal=="function"?b.tilingPaddingHorizontal.call():b.tilingPaddingHorizontal,y.DEFAULT_INCREMENTAL=g.DEFAULT_INCREMENTAL=m.DEFAULT_INCREMENTAL=!0,y.PURE_INCREMENTAL=!b.randomize,m.DEFAULT_UNIFORM_LEAF_NODE_SIZES=b.uniformNodeDimensions,b.step=="transformed"&&(y.TRANSFORM_ON_CONSTRAINT_HANDLING=!0,y.ENFORCE_CONSTRAINTS=!1,y.APPLY_LAYOUT=!1),b.step=="enforced"&&(y.TRANSFORM_ON_CONSTRAINT_HANDLING=!1,y.ENFORCE_CONSTRAINTS=!0,y.APPLY_LAYOUT=!1),b.step=="cose"&&(y.TRANSFORM_ON_CONSTRAINT_HANDLING=!1,y.ENFORCE_CONSTRAINTS=!1,y.APPLY_LAYOUT=!0),b.step=="all"&&(b.randomize?y.TRANSFORM_ON_CONSTRAINT_HANDLING=!0:y.TRANSFORM_ON_CONSTRAINT_HANDLING=!1,y.ENFORCE_CONSTRAINTS=!0,y.APPLY_LAYOUT=!0),b.fixedNodeConstraint||b.alignmentConstraint||b.relativePlacementConstraint?y.TREE_REDUCTION_ON_INCREMENTAL=!1:y.TREE_REDUCTION_ON_INCREMENTAL=!0;var B=new h,F=B.newGraphManager();return O(F.addRoot(),u.getTopMostNodes(k),B,b),M(B,F,A),P(B,b),B.runLayout(),L},"coseLayout");a.exports={coseLayout:v}}),212:((a,s,l)=>{var u=(function(){function b(T,S){for(var w=0;w0)if(M){var F=d.getTopMostNodes(w.eles.nodes());if(E=d.connectComponents(k,w.eles,F),E.forEach(function(Te){var q=Te.boundingBox();D.push({x:q.x1+q.w/2,y:q.y1+q.h/2})}),w.randomize&&E.forEach(function(Te){w.eles=Te,C.push(m(w))}),w.quality=="default"||w.quality=="proof"){var G=k.collection();if(w.tile){var $=new Map,U=[],j=[],te=0,Y={nodeIndexes:$,xCoords:U,yCoords:j},oe=[];if(E.forEach(function(Te,q){Te.edges().length==0&&(Te.nodes().forEach(function(Ve,pe){G.merge(Te.nodes()[pe]),Ve.isParent()||(Y.nodeIndexes.set(Te.nodes()[pe].id(),te++),Y.xCoords.push(Te.nodes()[0].position().x),Y.yCoords.push(Te.nodes()[0].position().y))}),oe.push(q))}),G.length>1){var J=G.boundingBox();D.push({x:J.x1+J.w/2,y:J.y1+J.h/2}),E.push(G),C.push(Y);for(var ue=oe.length-1;ue>=0;ue--)E.splice(oe[ue],1),C.splice(oe[ue],1),D.splice(oe[ue],1)}}E.forEach(function(Te,q){w.eles=Te,L.push(y(w,C[q])),d.relocateComponent(D[q],L[q],w)})}else E.forEach(function(Te,q){d.relocateComponent(D[q],C[q],w)});var re=new Set;if(E.length>1){var ee=[],Z=A.filter(function(Te){return Te.css("display")=="none"});E.forEach(function(Te,q){var Ve=void 0;if(w.quality=="draft"&&(Ve=C[q].nodeIndexes),Te.nodes().not(Z).length>0){var pe={};pe.edges=[],pe.nodes=[];var Be=void 0;Te.nodes().not(Z).forEach(function(Ye){if(w.quality=="draft")if(!Ye.isParent())Be=Ve.get(Ye.id()),pe.nodes.push({x:C[q].xCoords[Be]-Ye.boundingbox().w/2,y:C[q].yCoords[Be]-Ye.boundingbox().h/2,width:Ye.boundingbox().w,height:Ye.boundingbox().h});else{var He=d.calcBoundingBox(Ye,C[q].xCoords,C[q].yCoords,Ve);pe.nodes.push({x:He.topLeftX,y:He.topLeftY,width:He.width,height:He.height})}else L[q][Ye.id()]&&pe.nodes.push({x:L[q][Ye.id()].getLeft(),y:L[q][Ye.id()].getTop(),width:L[q][Ye.id()].getWidth(),height:L[q][Ye.id()].getHeight()})}),Te.edges().forEach(function(Ye){var He=Ye.source(),Le=Ye.target();if(He.css("display")!="none"&&Le.css("display")!="none")if(w.quality=="draft"){var Ie=Ve.get(He.id()),Ne=Ve.get(Le.id()),Ce=[],Fe=[];if(He.isParent()){var fe=d.calcBoundingBox(He,C[q].xCoords,C[q].yCoords,Ve);Ce.push(fe.topLeftX+fe.width/2),Ce.push(fe.topLeftY+fe.height/2)}else Ce.push(C[q].xCoords[Ie]),Ce.push(C[q].yCoords[Ie]);if(Le.isParent()){var xe=d.calcBoundingBox(Le,C[q].xCoords,C[q].yCoords,Ve);Fe.push(xe.topLeftX+xe.width/2),Fe.push(xe.topLeftY+xe.height/2)}else Fe.push(C[q].xCoords[Ne]),Fe.push(C[q].yCoords[Ne]);pe.edges.push({startX:Ce[0],startY:Ce[1],endX:Fe[0],endY:Fe[1]})}else L[q][He.id()]&&L[q][Le.id()]&&pe.edges.push({startX:L[q][He.id()].getCenterX(),startY:L[q][He.id()].getCenterY(),endX:L[q][Le.id()].getCenterX(),endY:L[q][Le.id()].getCenterY()})}),pe.nodes.length>0&&(ee.push(pe),re.add(q))}});var K=O.packComponents(ee,w.randomize).shifts;if(w.quality=="draft")C.forEach(function(Te,q){var Ve=Te.xCoords.map(function(Be){return Be+K[q].dx}),pe=Te.yCoords.map(function(Be){return Be+K[q].dy});Te.xCoords=Ve,Te.yCoords=pe});else{var ae=0;re.forEach(function(Te){Object.keys(L[Te]).forEach(function(q){var Ve=L[Te][q];Ve.setCenter(Ve.getCenterX()+K[ae].dx,Ve.getCenterY()+K[ae].dy)}),ae++})}}}else{var P=w.eles.boundingBox();if(D.push({x:P.x1+P.w/2,y:P.y1+P.h/2}),w.randomize){var B=m(w);C.push(B)}w.quality=="default"||w.quality=="proof"?(L.push(y(w,C[0])),d.relocateComponent(D[0],L[0],w)):d.relocateComponent(D[0],C[0],w)}var Q=o(function(q,Ve){if(w.quality=="default"||w.quality=="proof"){typeof q=="number"&&(q=Ve);var pe=void 0,Be=void 0,Ye=q.data("id");return L.forEach(function(Le){Ye in Le&&(pe={x:Le[Ye].getRect().getCenterX(),y:Le[Ye].getRect().getCenterY()},Be=Le[Ye])}),w.nodeDimensionsIncludeLabels&&(Be.labelWidth&&(Be.labelPosHorizontal=="left"?pe.x+=Be.labelWidth/2:Be.labelPosHorizontal=="right"&&(pe.x-=Be.labelWidth/2)),Be.labelHeight&&(Be.labelPosVertical=="top"?pe.y+=Be.labelHeight/2:Be.labelPosVertical=="bottom"&&(pe.y-=Be.labelHeight/2))),pe==null&&(pe={x:q.position("x"),y:q.position("y")}),{x:pe.x,y:pe.y}}else{var He=void 0;return C.forEach(function(Le){var Ie=Le.nodeIndexes.get(q.id());Ie!=null&&(He={x:Le.xCoords[Ie],y:Le.yCoords[Ie]})}),He==null&&(He={x:q.position("x"),y:q.position("y")}),{x:He.x,y:He.y}}},"getPositions");if(w.quality=="default"||w.quality=="proof"||w.randomize){var de=d.calcParentsWithoutChildren(k,A),ne=A.filter(function(Te){return Te.css("display")=="none"});w.eles=A.not(ne),A.nodes().not(":parent").not(ne).layoutPositions(S,w,Q),de.length>0&&de.forEach(function(Te){Te.position(Q(Te))})}else console.log("If randomize option is set to false, then quality option must be 'default' or 'proof'.")},"run")}]),b})();a.exports=x}),657:((a,s,l)=>{var u=l(548),h=l(140).layoutBase.Matrix,f=l(140).layoutBase.SVD,d=o(function(m){var g=m.cy,y=m.eles,v=y.nodes(),x=y.nodes(":parent"),b=new Map,T=new Map,S=new Map,w=[],k=[],A=[],C=[],R=[],I=[],L=[],E=[],D=void 0,_=void 0,O=1e8,M=1e-9,P=m.piTol,B=m.samplingType,F=m.nodeSeparation,G=void 0,$=o(function(){for(var he=0,z=0,se=!1;z=ke;){ye=le[ke++];for(var We=w[ye],Oe=0;Oeze&&(ze=R[Ue],Ke=Ue)}return Ke},"BFS"),j=o(function(he){var z=void 0;if(he){z=Math.floor(Math.random()*_),D=z;for(var le=0;le<_;le++)R[le]=O;for(var ke=0;ke=1)break;ze=_e}for(var We=0;We<_;We++)ke[We]=se[We];for(Re=0,ze=M;;){Re++;for(var Oe=0;Oe<_;Oe++)ve[Oe]=le[Oe];if(ve=h.minusOp(ve,h.multCons(ke,h.dotProduct(ke,ve))),le=h.multGamma(h.multL(h.multGamma(ve),I,E)),z=h.dotProduct(ve,le),le=h.normalize(le),_e=h.dotProduct(ve,le),Ke=Math.abs(_e/ze),Ke<=1+P&&Ke>=1)break;ze=_e}for(var et=0;et<_;et++)ve[et]=le[et];k=h.multCons(ke,Math.sqrt(Math.abs(he))),A=h.multCons(ve,Math.sqrt(Math.abs(z)))},"powerIteration");u.connectComponents(g,y,u.getTopMostNodes(v),b),x.forEach(function(W){u.connectComponents(g,y,u.getTopMostNodes(W.descendants().intersection(y)),b)});for(var oe=0,J=0;J0&&(z.isParent()?w[he].push(S.get(z.id())):w[he].push(z.id()))})});var de=o(function(he){var z=T.get(he),se=void 0;b.get(he).forEach(function(le){g.getElementById(le).isParent()?se=S.get(le):se=le,w[z].push(se),w[T.get(se)].push(he)})},"_loop"),ne=!0,Te=!1,q=void 0;try{for(var Ve=b.keys()[Symbol.iterator](),pe;!(ne=(pe=Ve.next()).done);ne=!0){var Be=pe.value;de(Be)}}catch(W){Te=!0,q=W}finally{try{!ne&&Ve.return&&Ve.return()}finally{if(Te)throw q}}_=T.size;var Ye=void 0;if(_>2){G=_{var u=l(212),h=o(function(d){d&&d("layout","fcose",u)},"register");typeof cytoscape<"u"&&h(cytoscape),a.exports=h}),140:(a=>{a.exports=t})},r={};function n(a){var s=r[a];if(s!==void 0)return s.exports;var l=r[a]={exports:{}};return e[a](l,l.exports,n),l.exports}o(n,"__webpack_require__");var i=n(579);return i})()})});var xy,m0,Iz=N(()=>{"use strict";nc();xy=o(t=>`${t}`,"wrapIcon"),m0={prefix:"mermaid-architecture",height:80,width:80,icons:{database:{body:xy('')},server:{body:xy('')},disk:{body:xy('')},internet:{body:xy('')},cloud:{body:xy('')},unknown:AA,blank:{body:xy("")}}}});var N4e,M4e,I4e,O4e,P4e=N(()=>{"use strict";Xt();zo();nc();gr();Iz();PC();tr();N4e=o(async function(t,e,r){let n=r.getConfigField("padding"),i=r.getConfigField("iconSize"),a=i/2,s=i/6,l=s/2;await Promise.all(e.edges().map(async u=>{let{source:h,sourceDir:f,sourceArrow:d,sourceGroup:p,target:m,targetDir:g,targetArrow:y,targetGroup:v,label:x}=OC(u),{x:b,y:T}=u[0].sourceEndpoint(),{x:S,y:w}=u[0].midpoint(),{x:k,y:A}=u[0].targetEndpoint(),C=n+4;if(p&&(Ya(f)?b+=f==="L"?-C:C:T+=f==="T"?-C:C+18),v&&(Ya(g)?k+=g==="L"?-C:C:A+=g==="T"?-C:C+18),!p&&r.getNode(h)?.type==="junction"&&(Ya(f)?b+=f==="L"?a:-a:T+=f==="T"?a:-a),!v&&r.getNode(m)?.type==="junction"&&(Ya(g)?k+=g==="L"?a:-a:A+=g==="T"?a:-a),u[0]._private.rscratch){let R=t.insert("g");if(R.insert("path").attr("d",`M ${b},${T} L ${S},${w} L${k},${A} `).attr("class","edge").attr("id",xc(h,m,{prefix:"L"})),d){let I=Ya(f)?N4[f](b,s):b-l,L=nu(f)?N4[f](T,s):T-l;R.insert("polygon").attr("points",Sz[f](s)).attr("transform",`translate(${I},${L})`).attr("class","arrow")}if(y){let I=Ya(g)?N4[g](k,s):k-l,L=nu(g)?N4[g](A,s):A-l;R.insert("polygon").attr("points",Sz[g](s)).attr("transform",`translate(${I},${L})`).attr("class","arrow")}if(x){let I=M4(f,g)?"XY":Ya(f)?"X":"Y",L=0;I==="X"?L=Math.abs(b-k):I==="Y"?L=Math.abs(T-A)/1.5:L=Math.abs(b-k)/2;let E=R.append("g");if(await di(E,x,{useHtmlLabels:!1,width:L,classes:"architecture-service-label"},ge()),E.attr("dy","1em").attr("alignment-baseline","middle").attr("dominant-baseline","middle").attr("text-anchor","middle"),I==="X")E.attr("transform","translate("+S+", "+w+")");else if(I==="Y")E.attr("transform","translate("+S+", "+w+") rotate(-90)");else if(I==="XY"){let D=I4(f,g);if(D&&w4e(D)){let _=E.node().getBoundingClientRect(),[O,M]=E4e(D);E.attr("dominant-baseline","auto").attr("transform",`rotate(${-1*O*M*45})`);let P=E.node().getBoundingClientRect();E.attr("transform",` - translate(${S}, ${w-_.height/2}) - translate(${O*P.width/2}, ${M*P.height/2}) - rotate(${-1*O*M*45}, 0, ${_.height/2}) - `)}}}}}))},"drawEdges"),M4e=o(async function(t,e,r){let i=r.getConfigField("padding")*.75,a=r.getConfigField("fontSize"),l=r.getConfigField("iconSize")/2;await Promise.all(e.nodes().map(async u=>{let h=td(u);if(h.type==="group"){let{h:f,w:d,x1:p,y1:m}=u.boundingBox(),g=t.append("rect");g.attr("id",`group-${h.id}`).attr("x",p+l).attr("y",m+l).attr("width",d).attr("height",f).attr("class","node-bkg");let y=t.append("g"),v=p,x=m;if(h.icon){let b=y.append("g");b.html(`${await _s(h.icon,{height:i,width:i,fallbackPrefix:m0.prefix})}`),b.attr("transform","translate("+(v+l+1)+", "+(x+l+1)+")"),v+=i,x+=a/2-1-2}if(h.label){let b=y.append("g");await di(b,h.label,{useHtmlLabels:!1,width:d,classes:"architecture-service-label"},ge()),b.attr("dy","1em").attr("alignment-baseline","middle").attr("dominant-baseline","start").attr("text-anchor","start"),b.attr("transform","translate("+(v+l+4)+", "+(x+l+2)+")")}r.setElementForId(h.id,g)}}))},"drawGroups"),I4e=o(async function(t,e,r){let n=ge();for(let i of r){let a=e.append("g"),s=t.getConfigField("iconSize");if(i.title){let f=a.append("g");await di(f,i.title,{useHtmlLabels:!1,width:s*1.5,classes:"architecture-service-label"},n),f.attr("dy","1em").attr("alignment-baseline","middle").attr("dominant-baseline","middle").attr("text-anchor","middle"),f.attr("transform","translate("+s/2+", "+s+")")}let l=a.append("g");if(i.icon)l.html(`${await _s(i.icon,{height:s,width:s,fallbackPrefix:m0.prefix})}`);else if(i.iconText){l.html(`${await _s("blank",{height:s,width:s,fallbackPrefix:m0.prefix})}`);let p=l.append("g").append("foreignObject").attr("width",s).attr("height",s).append("div").attr("class","node-icon-text").attr("style",`height: ${s}px;`).append("div").html(sr(i.iconText,n)),m=parseInt(window.getComputedStyle(p.node(),null).getPropertyValue("font-size").replace(/\D/g,""))??16;p.attr("style",`-webkit-line-clamp: ${Math.floor((s-2)/m)};`)}else l.append("path").attr("class","node-bkg").attr("id","node-"+i.id).attr("d",`M0 ${s} v${-s} q0,-5 5,-5 h${s} q5,0 5,5 v${s} H0 Z`);a.attr("id",`service-${i.id}`).attr("class","architecture-service");let{width:u,height:h}=a.node().getBBox();i.width=u,i.height=h,t.setElementForId(i.id,a)}return 0},"drawServices"),O4e=o(function(t,e,r){r.forEach(n=>{let i=e.append("g"),a=t.getConfigField("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:l,height:u}=i._groups[0][0].getBBox();i.width=l,i.height=u,t.setElementForId(n.id,i)})},"drawJunctions")});function Dit(t,e,r){t.forEach(n=>{e.add({group:"nodes",data:{type:"service",id:n.id,icon:n.icon,label:n.title,parent:n.in,width:r.getConfigField("iconSize"),height:r.getConfigField("iconSize")},classes:"node-service"})})}function Lit(t,e,r){t.forEach(n=>{e.add({group:"nodes",data:{type:"junction",id:n.id,parent:n.in,width:r.getConfigField("iconSize"),height:r.getConfigField("iconSize")},classes:"node-junction"})})}function Rit(t,e){e.nodes().map(r=>{let n=td(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 Nit(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 Mit(t,e){t.forEach(r=>{let{lhsId:n,rhsId:i,lhsInto:a,lhsGroup:s,rhsInto:l,lhsDir:u,rhsDir:h,rhsGroup:f,title:d}=r,p=M4(r.lhsDir,r.rhsDir)?"segments":"straight",m={id:`${n}-${i}`,label:d,source:n,sourceDir:u,sourceArrow:a,sourceGroup:s,sourceEndpoint:u==="L"?"0 50%":u==="R"?"100% 50%":u==="T"?"50% 0":"50% 100%",target:i,targetDir:h,targetArrow:l,targetGroup:f,targetEndpoint:h==="L"?"0 50%":h==="R"?"100% 50%":h==="T"?"50% 0":"50% 100%"};e.add({group:"edges",data:m,classes:p})})}function Iit(t,e,r){let n=o((l,u)=>Object.entries(l).reduce((h,[f,d])=>{let p=0,m=Object.entries(d);if(m.length===1)return h[f]=m[0][1],h;for(let g=0;g{let u={},h={};return Object.entries(l).forEach(([f,[d,p]])=>{let m=t.getNode(f)?.in??"default";u[p]??={},u[p][m]??=[],u[p][m].push(f),h[d]??={},h[d][m]??=[],h[d][m].push(f)}),{horiz:Object.values(n(u,"horizontal")).filter(f=>f.length>1),vert:Object.values(n(h,"vertical")).filter(f=>f.length>1)}}),[a,s]=i.reduce(([l,u],{horiz:h,vert:f})=>[[...l,...h],[...u,...f]],[[],[]]);return{horizontal:a,vertical:s}}function Oit(t,e){let r=[],n=o(a=>`${a[0]},${a[1]}`,"posToStr"),i=o(a=>a.split(",").map(s=>parseInt(s)),"strToPos");return t.forEach(a=>{let s=Object.fromEntries(Object.entries(a).map(([f,d])=>[n(d),f])),l=[n([0,0])],u={},h={L:[-1,0],R:[1,0],T:[0,1],B:[0,-1]};for(;l.length>0;){let f=l.shift();if(f){u[f]=1;let d=s[f];if(d){let p=i(f);Object.entries(h).forEach(([m,g])=>{let y=n([p[0]+g[0],p[1]+g[1]]),v=s[y];v&&!u[y]&&(l.push(y),r.push({[Ez[m]]:v,[Ez[T4e(m)]]:d,gap:1.5*e.getConfigField("iconSize")}))})}}}}),r}function Pit(t,e,r,n,i,{spatialMaps:a,groupAlignments:s}){return new Promise(l=>{let u=qe("body").append("div").attr("id","cy").attr("style","display:none"),h=Ko({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":`${i.getConfigField("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:`${i.getConfigField("padding")}px`}}],layout:{name:"grid",boundingBox:{x1:0,x2:100,y1:0,y2:100}}});u.remove(),Nit(r,h),Dit(t,h,i),Lit(e,h,i),Mit(n,h);let f=Iit(i,a,s),d=Oit(a,i),p=h.layout({name:"fcose",quality:"proof",styleEnabled:!1,animate:!1,nodeDimensionsIncludeLabels:!1,idealEdgeLength(m){let[g,y]=m.connectedNodes(),{parent:v}=td(g),{parent:x}=td(y);return v===x?1.5*i.getConfigField("iconSize"):.5*i.getConfigField("iconSize")},edgeElasticity(m){let[g,y]=m.connectedNodes(),{parent:v}=td(g),{parent:x}=td(y);return v===x?.45:.001},alignmentConstraint:f,relativePlacementConstraint:d});p.one("layoutstop",()=>{function m(g,y,v,x){let b,T,{x:S,y:w}=g,{x:k,y:A}=y;T=(x-w+(S-v)*(w-A)/(S-k))/Math.sqrt(1+Math.pow((w-A)/(S-k),2)),b=Math.sqrt(Math.pow(x-w,2)+Math.pow(v-S,2)-Math.pow(T,2));let C=Math.sqrt(Math.pow(k-S,2)+Math.pow(A-w,2));b=b/C;let R=(k-S)*(x-w)-(A-w)*(v-S);switch(!0){case R>=0:R=1;break;case R<0:R=-1;break}let I=(k-S)*(v-S)+(A-w)*(x-w);switch(!0){case I>=0:I=1;break;case I<0:I=-1;break}return T=Math.abs(T)*R,b=b*I,{distances:T,weights:b}}o(m,"getSegmentWeights"),h.startBatch();for(let g of Object.values(h.edges()))if(g.data?.()){let{x:y,y:v}=g.source().position(),{x,y:b}=g.target().position();if(y!==x&&v!==b){let T=g.sourceEndpoint(),S=g.targetEndpoint(),{sourceDir:w}=OC(g),[k,A]=nu(w)?[T.x,S.y]:[S.x,T.y],{weights:C,distances:R}=m(T,S,k,A);g.style("segment-distances",R),g.style("segment-weights",C)}}h.endBatch(),p.run()}),p.run(),h.ready(m=>{X.info("Ready",m),l(h)})})}var B4e,Bit,F4e,$4e=N(()=>{"use strict";II();B4e=ja(R4e(),1);yr();pt();nc();tu();Ei();Iz();PC();P4e();O3([{name:m0.prefix,icons:m0}]);Ko.use(B4e.default);o(Dit,"addServices");o(Lit,"addJunctions");o(Rit,"positionNodes");o(Nit,"addGroups");o(Mit,"addEdges");o(Iit,"getAlignments");o(Oit,"getRelativeConstraints");o(Pit,"layoutArchitecture");Bit=o(async(t,e,r,n)=>{let i=n.db,a=i.getServices(),s=i.getJunctions(),l=i.getGroups(),u=i.getEdges(),h=i.getDataStructures(),f=aa(e),d=f.append("g");d.attr("class","architecture-edges");let p=f.append("g");p.attr("class","architecture-services");let m=f.append("g");m.attr("class","architecture-groups"),await I4e(i,p,a),O4e(i,p,s);let g=await Pit(a,s,l,u,i,h);await N4e(d,g,i),await M4e(m,g,i),Rit(i,g),ic(void 0,f,i.getConfigField("padding"),i.getConfigField("useMaxWidth"))},"draw"),F4e={draw:Bit}});var z4e={};dr(z4e,{diagram:()=>Fit});var Fit,G4e=N(()=>{"use strict";_4e();Az();L4e();$4e();Fit={parser:_z,get db(){return new vy},renderer:F4e,styles:D4e}});var by,Oz=N(()=>{"use strict";La();qn();tr();$t();ci();by=class{constructor(){this.nodes=[];this.levels=new Map;this.outerNodes=[];this.classes=new Map;this.setAccTitle=Rr;this.getAccTitle=Mr;this.setDiagramTitle=$r;this.getDiagramTitle=Pr;this.getAccDescription=Or;this.setAccDescription=Ir}static{o(this,"TreeMapDB")}getNodes(){return this.nodes}getConfig(){let e=ur,r=Qt();return Vn({...e.treemap,...r.treemap??{}})}addNode(e,r){this.nodes.push(e),this.levels.set(e,r),r===0&&(this.outerNodes.push(e),this.root??=e)}getRoot(){return{name:"",children:this.outerNodes}}addClass(e,r){let n=this.classes.get(e)??{id:e,styles:[],textStyles:[]},i=r.replace(/\\,/g,"\xA7\xA7\xA7").replace(/,/g,";").replace(/§§§/g,",").split(";");i&&i.forEach(a=>{_2(a)&&(n?.textStyles?n.textStyles.push(a):n.textStyles=[a]),n?.styles?n.styles.push(a):n.styles=[a]}),this.classes.set(e,n)}getClasses(){return this.classes}getStylesForClass(e){return this.classes.get(e)?.styles??[]}clear(){Sr(),this.nodes=[],this.levels=new Map,this.outerNodes=[],this.classes=new Map,this.root=void 0}}});function H4e(t){if(!t.length)return[];let e=[],r=[];return t.forEach(n=>{let i={name:n.name,children:n.type==="Leaf"?void 0:[]};for(i.classSelector=n?.classSelector,n?.cssCompiledStyles&&(i.cssCompiledStyles=[n.cssCompiledStyles]),n.type==="Leaf"&&n.value!==void 0&&(i.value=n.value);r.length>0&&r[r.length-1].level>=n.level;)r.pop();if(r.length===0)e.push(i);else{let a=r[r.length-1].node;a.children?a.children.push(i):a.children=[i]}n.type!=="Leaf"&&r.push({node:i,level:n.level})}),e}var q4e=N(()=>{"use strict";o(H4e,"buildHierarchy")});var Vit,Uit,Pz,W4e=N(()=>{"use strict";Uf();pt();r0();q4e();Oz();Vit=o((t,e)=>{nl(t,e);let r=[];for(let a of t.TreemapRows??[])a.$type==="ClassDefStatement"&&e.addClass(a.className??"",a.styleText??"");for(let a of t.TreemapRows??[]){let s=a.item;if(!s)continue;let l=a.indent?parseInt(a.indent):0,u=Uit(s),h=s.classSelector?e.getStylesForClass(s.classSelector):[],f=h.length>0?h.join(";"):void 0,d={level:l,name:u,type:s.$type,value:s.value,classSelector:s.classSelector,cssCompiledStyles:f};r.push(d)}let n=H4e(r),i=o((a,s)=>{for(let l of a)e.addNode(l,s),l.children&&l.children.length>0&&i(l.children,s+1)},"addNodesRecursively");i(n,0)},"populate"),Uit=o(t=>t.name?String(t.name):"","getItemName"),Pz={parser:{yy:void 0},parse:o(async t=>{try{let r=await bs("treemap",t);X.debug("Treemap AST:",r);let n=Pz.parser?.yy;if(!(n instanceof by))throw new Error("parser.parser?.yy was not a TreemapDB. This is due to a bug within Mermaid, please report this issue at https://github.com/mermaid-js/mermaid/issues.");Vit(r,n)}catch(e){throw X.error("Error parsing treemap:",e),e}},"parse")}});var Hit,Ty,F4,qit,Wit,Y4e,X4e=N(()=>{"use strict";tu();Mf();Ei();yr();$t();qn();pt();Hit=10,Ty=10,F4=25,qit=o((t,e,r,n)=>{let i=n.db,a=i.getConfig(),s=a.padding??Hit,l=i.getDiagramTitle(),u=i.getRoot(),{themeVariables:h}=Qt();if(!u)return;let f=l?30:0,d=aa(e),p=a.nodeWidth?a.nodeWidth*Ty:960,m=a.nodeHeight?a.nodeHeight*Ty:500,g=p,y=m+f;d.attr("viewBox",`0 0 ${g} ${y}`),mn(d,y,g,a.useMaxWidth);let v;try{let _=a.valueFormat||",";if(_==="$0,0")v=o(O=>"$"+cc(",")(O),"valueFormat");else if(_.startsWith("$")&&_.includes(",")){let O=/\.\d+/.exec(_),M=O?O[0]:"";v=o(P=>"$"+cc(","+M)(P),"valueFormat")}else if(_.startsWith("$")){let O=_.substring(1);v=o(M=>"$"+cc(O||"")(M),"valueFormat")}else v=cc(_)}catch(_){X.error("Error creating format function:",_),v=cc(",")}let x=no().range(["transparent",h.cScale0,h.cScale1,h.cScale2,h.cScale3,h.cScale4,h.cScale5,h.cScale6,h.cScale7,h.cScale8,h.cScale9,h.cScale10,h.cScale11]),b=no().range(["transparent",h.cScalePeer0,h.cScalePeer1,h.cScalePeer2,h.cScalePeer3,h.cScalePeer4,h.cScalePeer5,h.cScalePeer6,h.cScalePeer7,h.cScalePeer8,h.cScalePeer9,h.cScalePeer10,h.cScalePeer11]),T=no().range([h.cScaleLabel0,h.cScaleLabel1,h.cScaleLabel2,h.cScaleLabel3,h.cScaleLabel4,h.cScaleLabel5,h.cScaleLabel6,h.cScaleLabel7,h.cScaleLabel8,h.cScaleLabel9,h.cScaleLabel10,h.cScaleLabel11]);l&&d.append("text").attr("x",g/2).attr("y",f/2).attr("class","treemapTitle").attr("text-anchor","middle").attr("dominant-baseline","middle").text(l);let S=d.append("g").attr("transform",`translate(0, ${f})`).attr("class","treemapContainer"),w=U0(u).sum(_=>_.value??0).sort((_,O)=>(O.value??0)-(_.value??0)),A=R5().size([p,m]).paddingTop(_=>_.children&&_.children.length>0?F4+Ty:0).paddingInner(s).paddingLeft(_=>_.children&&_.children.length>0?Ty:0).paddingRight(_=>_.children&&_.children.length>0?Ty:0).paddingBottom(_=>_.children&&_.children.length>0?Ty:0).round(!0)(w),C=A.descendants().filter(_=>_.children&&_.children.length>0),R=S.selectAll(".treemapSection").data(C).enter().append("g").attr("class","treemapSection").attr("transform",_=>`translate(${_.x0},${_.y0})`);R.append("rect").attr("width",_=>_.x1-_.x0).attr("height",F4).attr("class","treemapSectionHeader").attr("fill","none").attr("fill-opacity",.6).attr("stroke-width",.6).attr("style",_=>_.depth===0?"display: none;":""),R.append("clipPath").attr("id",(_,O)=>`clip-section-${e}-${O}`).append("rect").attr("width",_=>Math.max(0,_.x1-_.x0-12)).attr("height",F4),R.append("rect").attr("width",_=>_.x1-_.x0).attr("height",_=>_.y1-_.y0).attr("class",(_,O)=>`treemapSection section${O}`).attr("fill",_=>x(_.data.name)).attr("fill-opacity",.6).attr("stroke",_=>b(_.data.name)).attr("stroke-width",2).attr("stroke-opacity",.4).attr("style",_=>{if(_.depth===0)return"display: none;";let O=je({cssCompiledStyles:_.data.cssCompiledStyles});return O.nodeStyles+";"+O.borderStyles.join(";")}),R.append("text").attr("class","treemapSectionLabel").attr("x",6).attr("y",F4/2).attr("dominant-baseline","middle").text(_=>_.depth===0?"":_.data.name).attr("font-weight","bold").attr("style",_=>{if(_.depth===0)return"display: none;";let O="dominant-baseline: middle; font-size: 12px; fill:"+T(_.data.name)+"; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;",M=je({cssCompiledStyles:_.data.cssCompiledStyles});return O+M.labelStyles.replace("color:","fill:")}).each(function(_){if(_.depth===0)return;let O=qe(this),M=_.data.name;O.text(M);let P=_.x1-_.x0,B=6,F;a.showValues!==!1&&_.value?F=P-10-30-10-B:F=P-B-6;let $=Math.max(15,F),U=O.node();if(U.getComputedTextLength()>$){let Y=M;for(;Y.length>0;){if(Y=M.substring(0,Y.length-1),Y.length===0){O.text("..."),U.getComputedTextLength()>$&&O.text("");break}if(O.text(Y+"..."),U.getComputedTextLength()<=$)break}}}),a.showValues!==!1&&R.append("text").attr("class","treemapSectionValue").attr("x",_=>_.x1-_.x0-10).attr("y",F4/2).attr("text-anchor","end").attr("dominant-baseline","middle").text(_=>_.value?v(_.value):"").attr("font-style","italic").attr("style",_=>{if(_.depth===0)return"display: none;";let O="text-anchor: end; dominant-baseline: middle; font-size: 10px; fill:"+T(_.data.name)+"; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;",M=je({cssCompiledStyles:_.data.cssCompiledStyles});return O+M.labelStyles.replace("color:","fill:")});let I=A.leaves(),L=S.selectAll(".treemapLeafGroup").data(I).enter().append("g").attr("class",(_,O)=>`treemapNode treemapLeafGroup leaf${O}${_.data.classSelector?` ${_.data.classSelector}`:""}x`).attr("transform",_=>`translate(${_.x0},${_.y0})`);L.append("rect").attr("width",_=>_.x1-_.x0).attr("height",_=>_.y1-_.y0).attr("class","treemapLeaf").attr("fill",_=>_.parent?x(_.parent.data.name):x(_.data.name)).attr("style",_=>je({cssCompiledStyles:_.data.cssCompiledStyles}).nodeStyles).attr("fill-opacity",.3).attr("stroke",_=>_.parent?x(_.parent.data.name):x(_.data.name)).attr("stroke-width",3),L.append("clipPath").attr("id",(_,O)=>`clip-${e}-${O}`).append("rect").attr("width",_=>Math.max(0,_.x1-_.x0-4)).attr("height",_=>Math.max(0,_.y1-_.y0-4)),L.append("text").attr("class","treemapLabel").attr("x",_=>(_.x1-_.x0)/2).attr("y",_=>(_.y1-_.y0)/2).attr("style",_=>{let O="text-anchor: middle; dominant-baseline: middle; font-size: 38px;fill:"+T(_.data.name)+";",M=je({cssCompiledStyles:_.data.cssCompiledStyles});return O+M.labelStyles.replace("color:","fill:")}).attr("clip-path",(_,O)=>`url(#clip-${e}-${O})`).text(_=>_.data.name).each(function(_){let O=qe(this),M=_.x1-_.x0,P=_.y1-_.y0,B=O.node(),F=4,G=M-2*F,$=P-2*F;if(G<10||$<10){O.style("display","none");return}let U=parseInt(O.style("font-size"),10),j=8,te=28,Y=.6,oe=6,J=2;for(;B.getComputedTextLength()>G&&U>j;)U--,O.style("font-size",`${U}px`);let ue=Math.max(oe,Math.min(te,Math.round(U*Y))),re=U+J+ue;for(;re>$&&U>j&&(U--,ue=Math.max(oe,Math.min(te,Math.round(U*Y))),!(ue$;O.style("font-size",`${U}px`),(B.getComputedTextLength()>G||U(O.x1-O.x0)/2).attr("y",function(O){return(O.y1-O.y0)/2}).attr("style",O=>{let M="text-anchor: middle; dominant-baseline: hanging; font-size: 28px;fill:"+T(O.data.name)+";",P=je({cssCompiledStyles:O.data.cssCompiledStyles});return M+P.labelStyles.replace("color:","fill:")}).attr("clip-path",(O,M)=>`url(#clip-${e}-${M})`).text(O=>O.value?v(O.value):"").each(function(O){let M=qe(this),P=this.parentNode;if(!P){M.style("display","none");return}let B=qe(P).select(".treemapLabel");if(B.empty()||B.style("display")==="none"){M.style("display","none");return}let F=parseFloat(B.style("font-size")),G=28,$=.6,U=6,j=2,te=Math.max(U,Math.min(G,Math.round(F*$)));M.style("font-size",`${te}px`);let oe=(O.y1-O.y0)/2+F/2+j;M.attr("y",oe);let J=O.x1-O.x0,ee=O.y1-O.y0-4,Z=J-8;M.node().getComputedTextLength()>Z||oe+te>ee||te{"use strict";tr();Yit={sectionStrokeColor:"black",sectionStrokeWidth:"1",sectionFillColor:"#efefef",leafStrokeColor:"black",leafStrokeWidth:"1",leafFillColor:"#efefef",labelColor:"black",labelFontSize:"12px",valueFontSize:"10px",valueColor:"black",titleColor:"black",titleFontSize:"14px"},Xit=o(({treemap:t}={})=>{let e=Vn(Yit,t);return` - .treemapNode.section { - stroke: ${e.sectionStrokeColor}; - stroke-width: ${e.sectionStrokeWidth}; - fill: ${e.sectionFillColor}; - } - .treemapNode.leaf { - stroke: ${e.leafStrokeColor}; - stroke-width: ${e.leafStrokeWidth}; - fill: ${e.leafFillColor}; - } - .treemapLabel { - fill: ${e.labelColor}; - font-size: ${e.labelFontSize}; - } - .treemapValue { - fill: ${e.valueColor}; - font-size: ${e.valueFontSize}; - } - .treemapTitle { - fill: ${e.titleColor}; - font-size: ${e.titleFontSize}; - } - `},"getStyles"),j4e=Xit});var Q4e={};dr(Q4e,{diagram:()=>jit});var jit,Z4e=N(()=>{"use strict";Oz();W4e();X4e();K4e();jit={parser:Pz,get db(){return new by},renderer:Y4e,styles:j4e}});var Oat={};dr(Oat,{default:()=>Iat});nc();_A();vd();var O_e=o(t=>/^\s*C4Context|C4Container|C4Component|C4Dynamic|C4Deployment/.test(t),"detector"),P_e=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(NQ(),RQ));return{id:"c4",diagram:t}},"loader"),B_e={id:"c4",detector:O_e,loader:P_e},MQ=B_e;var yfe="flowchart",rWe=o((t,e)=>e?.flowchart?.defaultRenderer==="dagre-wrapper"||e?.flowchart?.defaultRenderer==="elk"?!1:/^\s*graph/.test(t),"detector"),nWe=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(AE(),CE));return{id:yfe,diagram:t}},"loader"),iWe={id:yfe,detector:rWe,loader:nWe},vfe=iWe;var xfe="flowchart-v2",aWe=o((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"),sWe=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(AE(),CE));return{id:xfe,diagram:t}},"loader"),oWe={id:xfe,detector:aWe,loader:sWe},bfe=oWe;var fWe=o(t=>/^\s*erDiagram/.test(t),"detector"),dWe=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(_fe(),Afe));return{id:"er",diagram:t}},"loader"),pWe={id:"er",detector:fWe,loader:dWe},Dfe=pWe;var Pge="gitGraph",HKe=o(t=>/^\s*gitGraph/.test(t),"detector"),qKe=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(Oge(),Ige));return{id:Pge,diagram:t}},"loader"),WKe={id:Pge,detector:HKe,loader:qKe},Bge=WKe;var d1e="gantt",MQe=o(t=>/^\s*gantt/.test(t),"detector"),IQe=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(f1e(),h1e));return{id:d1e,diagram:t}},"loader"),OQe={id:d1e,detector:MQe,loader:IQe},p1e=OQe;var k1e="info",GQe=o(t=>/^\s*info/.test(t),"detector"),VQe=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(w1e(),T1e));return{id:k1e,diagram:t}},"loader"),E1e={id:k1e,detector:GQe,loader:VQe};var tZe=o(t=>/^\s*pie/.test(t),"detector"),rZe=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(M1e(),N1e));return{id:"pie",diagram:t}},"loader"),I1e={id:"pie",detector:tZe,loader:rZe};var Y1e="quadrantChart",bZe=o(t=>/^\s*quadrantChart/.test(t),"detector"),TZe=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(W1e(),q1e));return{id:Y1e,diagram:t}},"loader"),wZe={id:Y1e,detector:bZe,loader:TZe},X1e=wZe;var Tye="xychart",$Ze=o(t=>/^\s*xychart(-beta)?/.test(t),"detector"),zZe=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(bye(),xye));return{id:Tye,diagram:t}},"loader"),GZe={id:Tye,detector:$Ze,loader:zZe},wye=GZe;var Rye="requirement",qZe=o(t=>/^\s*requirement(Diagram)?/.test(t),"detector"),WZe=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(Lye(),Dye));return{id:Rye,diagram:t}},"loader"),YZe={id:Rye,detector:qZe,loader:WZe},Nye=YZe;var Xye="sequence",IJe=o(t=>/^\s*sequenceDiagram/.test(t),"detector"),OJe=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(Yye(),Wye));return{id:Xye,diagram:t}},"loader"),PJe={id:Xye,detector:IJe,loader:OJe},jye=PJe;var tve="class",VJe=o((t,e)=>e?.class?.defaultRenderer==="dagre-wrapper"?!1:/^\s*classDiagram/.test(t),"detector"),UJe=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(eve(),Jye));return{id:tve,diagram:t}},"loader"),HJe={id:tve,detector:VJe,loader:UJe},rve=HJe;var ave="classDiagram",WJe=o((t,e)=>/^\s*classDiagram/.test(t)&&e?.class?.defaultRenderer==="dagre-wrapper"?!0:/^\s*classDiagram-v2/.test(t),"detector"),YJe=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(ive(),nve));return{id:ave,diagram:t}},"loader"),XJe={id:ave,detector:WJe,loader:YJe},sve=XJe;var Fve="state",Tet=o((t,e)=>e?.state?.defaultRenderer==="dagre-wrapper"?!1:/^\s*stateDiagram/.test(t),"detector"),wet=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(Bve(),Pve));return{id:Fve,diagram:t}},"loader"),ket={id:Fve,detector:Tet,loader:wet},$ve=ket;var Vve="stateDiagram",Cet=o((t,e)=>!!(/^\s*stateDiagram-v2/.test(t)||/^\s*stateDiagram/.test(t)&&e?.state?.defaultRenderer==="dagre-wrapper"),"detector"),Aet=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(Gve(),zve));return{id:Vve,diagram:t}},"loader"),_et={id:Vve,detector:Cet,loader:Aet},Uve=_et;var a2e="journey",jet=o(t=>/^\s*journey/.test(t),"detector"),Ket=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(i2e(),n2e));return{id:a2e,diagram:t}},"loader"),Qet={id:a2e,detector:jet,loader:Ket},s2e=Qet;pt();tu();Ei();var Zet=o((t,e,r)=>{X.debug(`rendering svg for syntax error -`);let n=aa(e),i=n.append("g");n.attr("viewBox","0 0 2412 512"),mn(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"),O$={draw:Zet},o2e=O$;var Jet={db:{},renderer:O$,parser:{parse:o(()=>{},"parse")}},l2e=Jet;var c2e="flowchart-elk",ett=o((t,e={})=>/^\s*flowchart-elk/.test(t)||/^\s*(flowchart|graph)/.test(t)&&e?.flowchart?.defaultRenderer==="elk"?(e.layout="elk",!0):!1,"detector"),ttt=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(AE(),CE));return{id:c2e,diagram:t}},"loader"),rtt={id:c2e,detector:ett,loader:ttt},u2e=rtt;var P2e="timeline",Ttt=o(t=>/^\s*timeline/.test(t),"detector"),wtt=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(O2e(),I2e));return{id:P2e,diagram:t}},"loader"),ktt={id:P2e,detector:Ttt,loader:wtt},B2e=ktt;var J2e="mindmap",Rtt=o(t=>/^\s*mindmap/.test(t),"detector"),Ntt=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(Z2e(),Q2e));return{id:J2e,diagram:t}},"loader"),Mtt={id:J2e,detector:Rtt,loader:Ntt},exe=Mtt;var fxe="kanban",jtt=o(t=>/^\s*kanban/.test(t),"detector"),Ktt=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(hxe(),uxe));return{id:fxe,diagram:t}},"loader"),Qtt={id:fxe,detector:jtt,loader:Ktt},dxe=Qtt;var Xxe="sankey",brt=o(t=>/^\s*sankey(-beta)?/.test(t),"detector"),Trt=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(Yxe(),Wxe));return{id:Xxe,diagram:t}},"loader"),wrt={id:Xxe,detector:brt,loader:Trt},jxe=wrt;var nbe="packet",Rrt=o(t=>/^\s*packet(-beta)?/.test(t),"detector"),Nrt=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(rbe(),tbe));return{id:nbe,diagram:t}},"loader"),ibe={id:nbe,detector:Rrt,loader:Nrt};var mbe="radar",ent=o(t=>/^\s*radar-beta/.test(t),"detector"),tnt=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(pbe(),dbe));return{id:mbe,diagram:t}},"loader"),gbe={id:mbe,detector:ent,loader:tnt};var x4e="block",wit=o(t=>/^\s*block(-beta)?/.test(t),"detector"),kit=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(v4e(),y4e));return{id:x4e,diagram:t}},"loader"),Eit={id:x4e,detector:wit,loader:kit},b4e=Eit;var V4e="architecture",$it=o(t=>/^\s*architecture/.test(t),"detector"),zit=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(G4e(),z4e));return{id:V4e,diagram:t}},"loader"),Git={id:V4e,detector:$it,loader:zit},U4e=Git;vd();Xt();var J4e="treemap",Kit=o(t=>/^\s*treemap/.test(t),"detector"),Qit=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(Z4e(),Q4e));return{id:J4e,diagram:t}},"loader"),e3e={id:J4e,detector:Kit,loader:Qit};var t3e=!1,wy=o(()=>{t3e||(t3e=!0,xd("error",l2e,t=>t.toLowerCase().trim()==="error"),xd("---",{db:{clear:o(()=>{},"clear")},styles:{},renderer:{draw:o(()=>{},"draw")},parser:{parse:o(()=>{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:o(()=>null,"init")},t=>t.toLowerCase().trimStart().startsWith("---")),ev(u2e,exe,U4e),ev(MQ,dxe,sve,rve,Dfe,p1e,E1e,I1e,Nye,jye,bfe,vfe,B2e,Bge,Uve,$ve,s2e,X1e,jxe,ibe,wye,b4e,gbe,e3e))},"addDiagrams");pt();vd();Xt();var r3e=o(async()=>{X.debug("Loading registered diagrams");let e=(await Promise.allSettled(Object.entries(gu).map(async([r,{detector:n,loader:i}])=>{if(i)try{av(r)}catch{try{let{diagram:a,id:s}=await i();xd(s,a,n)}catch(a){throw X.error(`Failed to load external diagram with key ${r}. Removing from detectors.`),delete gu[r],a}}}))).filter(r=>r.status==="rejected");if(e.length>0){X.error(`Failed to load ${e.length} external diagrams`);for(let r of e)X.error(r);throw new Error(`Failed to load ${e.length} external diagrams`)}},"loadRegisteredDiagrams");pt();yr();var BC="comm",FC="rule",$C="decl";var n3e="@import";var i3e="@namespace",a3e="@keyframes";var s3e="@layer";var Bz=Math.abs,$4=String.fromCharCode;function zC(t){return t.trim()}o(zC,"trim");function z4(t,e,r){return t.replace(e,r)}o(z4,"replace");function o3e(t,e,r){return t.indexOf(e,r)}o(o3e,"indexof");function rd(t,e){return t.charCodeAt(e)|0}o(rd,"charat");function nd(t,e,r){return t.slice(e,r)}o(nd,"substr");function wo(t){return t.length}o(wo,"strlen");function l3e(t){return t.length}o(l3e,"sizeof");function ky(t,e){return e.push(t),t}o(ky,"append");var GC=1,Ey=1,c3e=0,ll=0,Ri=0,Cy="";function VC(t,e,r,n,i,a,s,l){return{value:t,root:e,parent:r,type:n,props:i,children:a,line:GC,column:Ey,length:s,return:"",siblings:l}}o(VC,"node");function u3e(){return Ri}o(u3e,"char");function h3e(){return Ri=ll>0?rd(Cy,--ll):0,Ey--,Ri===10&&(Ey=1,GC--),Ri}o(h3e,"prev");function cl(){return Ri=ll2||Sy(Ri)>3?"":" "}o(p3e,"whitespace");function m3e(t,e){for(;--e&&cl()&&!(Ri<48||Ri>102||Ri>57&&Ri<65||Ri>70&&Ri<97););return UC(t,G4()+(e<6&&uh()==32&&cl()==32))}o(m3e,"escaping");function Fz(t){for(;cl();)switch(Ri){case t:return ll;case 34:case 39:t!==34&&t!==39&&Fz(Ri);break;case 40:t===41&&Fz(t);break;case 92:cl();break}return ll}o(Fz,"delimiter");function g3e(t,e){for(;cl()&&t+Ri!==57;)if(t+Ri===84&&uh()===47)break;return"/*"+UC(e,ll-1)+"*"+$4(t===47?t:cl())}o(g3e,"commenter");function y3e(t){for(;!Sy(uh());)cl();return UC(t,ll)}o(y3e,"identifier");function b3e(t){return d3e(qC("",null,null,null,[""],t=f3e(t),0,[0],t))}o(b3e,"compile");function qC(t,e,r,n,i,a,s,l,u){for(var h=0,f=0,d=s,p=0,m=0,g=0,y=1,v=1,x=1,b=0,T="",S=i,w=a,k=n,A=T;v;)switch(g=b,b=cl()){case 40:if(g!=108&&rd(A,d-1)==58){o3e(A+=z4(HC(b),"&","&\f"),"&\f",Bz(h?l[h-1]:0))!=-1&&(x=-1);break}case 34:case 39:case 91:A+=HC(b);break;case 9:case 10:case 13:case 32:A+=p3e(g);break;case 92:A+=m3e(G4()-1,7);continue;case 47:switch(uh()){case 42:case 47:ky(Zit(g3e(cl(),G4()),e,r,u),u),(Sy(g||1)==5||Sy(uh()||1)==5)&&wo(A)&&nd(A,-1,void 0)!==" "&&(A+=" ");break;default:A+="/"}break;case 123*y:l[h++]=wo(A)*x;case 125*y:case 59:case 0:switch(b){case 0:case 125:v=0;case 59+f:x==-1&&(A=z4(A,/\f/g,"")),m>0&&(wo(A)-d||y===0&&g===47)&&ky(m>32?x3e(A+";",n,r,d-1,u):x3e(z4(A," ","")+";",n,r,d-2,u),u);break;case 59:A+=";";default:if(ky(k=v3e(A,e,r,h,f,i,l,T,S=[],w=[],d,a),a),b===123)if(f===0)qC(A,e,k,k,S,a,d,l,w);else{switch(p){case 99:if(rd(A,3)===110)break;case 108:if(rd(A,2)===97)break;default:f=0;case 100:case 109:case 115:}f?qC(t,k,k,n&&ky(v3e(t,k,k,0,0,i,l,T,i,S=[],d,w),w),i,w,d,l,n?S:w):qC(A,k,k,k,[""],w,0,l,w)}}h=f=m=0,y=x=1,T=A="",d=s;break;case 58:d=1+wo(A),m=g;default:if(y<1){if(b==123)--y;else if(b==125&&y++==0&&h3e()==125)continue}switch(A+=$4(b),b*y){case 38:x=f>0?1:(A+="\f",-1);break;case 44:l[h++]=(wo(A)-1)*x,x=1;break;case 64:uh()===45&&(A+=HC(cl())),p=uh(),f=d=wo(T=A+=y3e(G4())),b++;break;case 45:g===45&&wo(A)==2&&(y=0)}}return a}o(qC,"parse");function v3e(t,e,r,n,i,a,s,l,u,h,f,d){for(var p=i-1,m=i===0?a:[""],g=l3e(m),y=0,v=0,x=0;y0?m[b]+" "+T:z4(T,/&\f/g,m[b])))&&(u[x++]=S);return VC(t,e,r,i===0?FC:l,u,h,f,d)}o(v3e,"ruleset");function Zit(t,e,r,n){return VC(t,e,r,BC,$4(u3e()),nd(t,2,-2),0,n)}o(Zit,"comment");function x3e(t,e,r,n,i){return VC(t,e,r,$C,nd(t,0,n),nd(t,n+1,-1),n,i)}o(x3e,"declaration");function WC(t,e){for(var r="",n=0;n{E3e.forEach(t=>{t()}),E3e=[]},"attachFunctions");pt();var C3e=o(t=>t.replace(/^\s*%%(?!{)[^\n]+\n?/gm,"").trimStart(),"cleanupComments");F3();w2();function A3e(t){let e=t.match(B3);if(!e)return{text:t,metadata:{}};let r=Kh(e[1],{schema:jh})??{};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}}o(A3e,"extractFrontMatter");tr();var eat=o(t=>t.replace(/\r\n?/g,` -`).replace(/<(\w+)([^>]*)>/g,(e,r,n)=>"<"+r+n.replace(/="([^"]*)"/g,"='$1'")+">"),"cleanupText"),tat=o(t=>{let{text:e,metadata:r}=A3e(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"),rat=o(t=>{let e=qt.detectInit(t)??{},r=qt.detectDirective(t,"wrap");return Array.isArray(r)?e.wrap=r.some(({type:n})=>n==="wrap"):r?.type==="wrap"&&(e.wrap=!0),{text:bQ(t),directive:e}},"processDirectives");function $z(t){let e=eat(t),r=tat(e),n=rat(r.text),i=Vn(r.config,n.directive);return t=C3e(n.text),{code:t,title:r.title,config:i}}o($z,"preprocessDiagram");NA();e3();tr();function _3e(t){let e=new TextEncoder().encode(t),r=Array.from(e,n=>String.fromCodePoint(n)).join("");return btoa(r)}o(_3e,"toBase64");var nat=5e4,iat="graph TB;a[Maximum text size in diagram exceeded];style a fill:#faa",aat="sandbox",sat="loose",oat="http://www.w3.org/2000/svg",lat="http://www.w3.org/1999/xlink",cat="http://www.w3.org/1999/xhtml",uat="100%",hat="100%",fat="border:0;margin:0;",dat="margin:0",pat="allow-top-navigation-by-user-activation allow-popups",mat='The "iframe" tag is not supported by your browser.',gat=["foreignobject"],yat=["dominant-baseline"];function N3e(t){let e=$z(t);return By(),ZG(e.config??{}),e}o(N3e,"processAndSetConfigs");async function vat(t,e){wy();try{let{code:r,config:n}=N3e(t);return{diagramType:(await M3e(r)).type,config:n}}catch(r){if(e?.suppressErrors)return!1;throw r}}o(vat,"parse");var D3e=o((t,e,r=[])=>` -.${t} ${e} { ${r.join(" !important; ")} !important; }`,"cssImportantStyles"),xat=o((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(l=>{mr(l.styles)||s.forEach(u=>{r+=D3e(l.id,u,l.styles)}),mr(l.textStyles)||(r+=D3e(l.id,"tspan",(l?.textStyles||[]).map(u=>u.replace("color","fill"))))})}return r},"createCssStyles"),bat=o((t,e,r,n)=>{let i=xat(t,r),a=aH(e,i,t.themeVariables);return WC(b3e(`${n}{${a}}`),T3e)},"createUserStyles"),Tat=o((t="",e,r)=>{let n=t;return!r&&!e&&(n=n.replace(/marker-end="url\([\d+./:=?A-Za-z-]*?#/g,'marker-end="url(#')),n=Ji(n),n=n.replace(/
    /g,"
    "),n},"cleanUpSvgCode"),wat=o((t="",e)=>{let r=e?.viewBox?.baseVal?.height?e.viewBox.baseVal.height+"px":hat,n=_3e(`${t}`);return``},"putIntoIFrame"),L3e=o((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",oat);return i&&s.attr("xmlns:xlink",i),s.append("g"),t},"appendDivSvgG");function R3e(t,e){return t.append("iframe").attr("id",e).attr("style","width: 100%; height: 100%;").attr("sandbox","")}o(R3e,"sandboxedIframe");var kat=o((t,e,r,n)=>{t.getElementById(e)?.remove(),t.getElementById(r)?.remove(),t.getElementById(n)?.remove()},"removeExistingElements"),Eat=o(async function(t,e,r){wy();let n=N3e(e);e=n.code;let i=Qt();X.debug(i),e.length>(i?.maxTextSize??nat)&&(e=iat);let a="#"+t,s="i"+t,l="#"+s,u="d"+t,h="#"+u,f=o(()=>{let D=qe(p?l:h).node();D&&"remove"in D&&D.remove()},"removeTempElements"),d=qe("body"),p=i.securityLevel===aat,m=i.securityLevel===sat,g=i.fontFamily;if(r!==void 0){if(r&&(r.innerHTML=""),p){let E=R3e(qe(r),s);d=qe(E.nodes()[0].contentDocument.body),d.node().style.margin=0}else d=qe(r);L3e(d,t,u,`font-family: ${g}`,lat)}else{if(kat(document,t,u,s),p){let E=R3e(qe("body"),s);d=qe(E.nodes()[0].contentDocument.body),d.node().style.margin=0}else d=qe("body");L3e(d,t,u)}let y,v;try{y=await Ay.fromText(e,{title:n.title})}catch(E){if(i.suppressErrorRendering)throw f(),E;y=await Ay.fromText("error"),v=E}let x=d.select(h).node(),b=y.type,T=x.firstChild,S=T.firstChild,w=y.renderer.getClasses?.(e,y),k=bat(i,b,w,a),A=document.createElement("style");A.innerHTML=k,T.insertBefore(A,S);try{await y.renderer.draw(e,t,g4.version,y)}catch(E){throw i.suppressErrorRendering?f():o2e.draw(e,t,g4.version),E}let C=d.select(`${h} svg`),R=y.db.getAccTitle?.(),I=y.db.getAccDescription?.();Cat(b,C,R,I),d.select(`[id="${t}"]`).selectAll("foreignobject > *").attr("xmlns",cat);let L=d.select(h).node().innerHTML;if(X.debug("config.arrowMarkerAbsolute",i.arrowMarkerAbsolute),L=Tat(L,p,vr(i.arrowMarkerAbsolute)),p){let E=d.select(h+" svg").node();L=wat(L,E)}else m||(L=yh.sanitize(L,{ADD_TAGS:gat,ADD_ATTR:yat,HTML_INTEGRATION_POINTS:{foreignobject:!0}}));if(S3e(),v)throw v;return f(),{diagramType:b,svg:L,bindFunctions:y.db.bindFunctions}},"render");function Sat(t={}){let e=Rn({},t);e?.fontFamily&&!e.themeVariables?.fontFamily&&(e.themeVariables||(e.themeVariables={}),e.themeVariables.fontFamily=e.fontFamily),jG(e),e?.theme&&e.theme in So?e.themeVariables=So[e.theme].getThemeVariables(e.themeVariables):e&&(e.themeVariables=So.default.getThemeVariables(e.themeVariables));let r=typeof e=="object"?C7(e):A7();Dy(r.logLevel),wy()}o(Sat,"initialize");var M3e=o((t,e={})=>{let{code:r}=$z(t);return Ay.fromText(r,e)},"getDiagramFromText");function Cat(t,e,r,n){w3e(e,t),k3e(e,r,n,e.attr("id"))}o(Cat,"addA11yInfo");var id=Object.freeze({render:Eat,parse:vat,getDiagramFromText:M3e,initialize:Sat,getConfig:Qt,setConfig:n3,getSiteConfig:A7,updateSiteConfig:KG,reset:o(()=>{By()},"reset"),globalReset:o(()=>{By(gh)},"globalReset"),defaultConfig:gh});Dy(Qt().logLevel);By(Qt());Nf();tr();var Aat=o((t,e,r)=>{X.warn(t),qL(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"),I3e=o(async function(t={querySelector:".mermaid"}){try{await _at(t)}catch(e){if(qL(e)&&X.error(e.str),hh.parseError&&hh.parseError(e),!t.suppressErrors)throw X.error("Use the suppressErrors option to suppress these errors"),e}},"run"),_at=o(async function({postRenderCallback:t,querySelector:e,nodes:r}={querySelector:".mermaid"}){let n=id.getConfig();X.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");X.debug(`Found ${i.length} diagrams`),n?.startOnLoad!==void 0&&(X.debug("Start On Load: "+n?.startOnLoad),id.updateSiteConfig({startOnLoad:n?.startOnLoad}));let a=new qt.InitIDGenerator(n.deterministicIds,n.deterministicIDSeed),s,l=[];for(let u of Array.from(i)){X.info("Rendering diagram: "+u.id);if(u.getAttribute("data-processed"))continue;u.setAttribute("data-processed","true");let h=`mermaid-${a.next()}`;s=u.innerHTML,s=P3(qt.entityDecode(s)).trim().replace(//gi,"
    ");let f=qt.detectInit(s);f&&X.debug("Detected early reinit: ",f);try{let{svg:d,bindFunctions:p}=await F3e(h,s,u);u.innerHTML=d,t&&await t(h),p&&p(u)}catch(d){Aat(d,l,hh.parseError)}}if(l.length>0)throw l[0]},"runThrowsErrors"),O3e=o(function(t){id.initialize(t)},"initialize"),Dat=o(async function(t,e,r){X.warn("mermaid.init is deprecated. Please use run instead."),t&&O3e(t);let n={postRenderCallback:r,querySelector:".mermaid"};typeof e=="string"?n.querySelector=e:e&&(e instanceof HTMLElement?n.nodes=[e]:n.nodes=e),await I3e(n)},"init"),Lat=o(async(t,{lazyLoad:e=!0}={})=>{wy(),ev(...t),e===!1&&await r3e()},"registerExternalDiagrams"),P3e=o(function(){if(hh.startOnLoad){let{startOnLoad:t}=id.getConfig();t&&hh.run().catch(e=>X.error("Mermaid failed to initialize",e))}},"contentLoaded");if(typeof document<"u"){window.addEventListener("load",P3e,!1)}var Rat=o(function(t){hh.parseError=t},"setParseErrorHandler"),YC=[],zz=!1,B3e=o(async()=>{if(!zz){for(zz=!0;YC.length>0;){let t=YC.shift();if(t)try{await t()}catch(e){X.error("Error executing queue",e)}}zz=!1}},"executeQueue"),Nat=o(async(t,e)=>new Promise((r,n)=>{let i=o(()=>new Promise((a,s)=>{id.parse(t,e).then(l=>{a(l),r(l)},l=>{X.error("Error parsing",l),hh.parseError?.(l),s(l),n(l)})}),"performCall");YC.push(i),B3e().catch(n)}),"parse"),F3e=o((t,e,r)=>new Promise((n,i)=>{let a=o(()=>new Promise((s,l)=>{id.render(t,e,r).then(u=>{s(u),n(u)},u=>{X.error("Error parsing",u),hh.parseError?.(u),l(u),i(u)})}),"performCall");YC.push(a),B3e().catch(i)}),"render"),Mat=o(()=>Object.keys(gu).map(t=>({id:t})),"getRegisteredDiagramsMetadata"),hh={startOnLoad:!0,mermaidAPI:id,parse:Nat,render:F3e,init:Dat,run:I3e,registerExternalDiagrams:Lat,registerLayoutLoaders:zI,initialize:O3e,parseError:void 0,contentLoaded:P3e,setParseErrorHandler:Rat,detectType:_0,registerIconPacks:O3,getRegisteredDiagramsMetadata:Mat},Iat=hh;return Y3e(Oat);})(); -/*! Check if previously processed */ -/*! - * Wait for document loaded before starting the execution - */ -/*! Bundled license information: - -dompurify/dist/purify.es.mjs: - (*! @license DOMPurify 3.2.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.2.6/LICENSE *) - -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 *) -*/ -globalThis["mermaid"] = globalThis.__esbuild_esm_mermaid_nm["mermaid"].default; +(function () { + "use strict"; + var script = document.createElement("script"); + script.src = "/assets/scripts/vendor/mermaid.min.js"; + document.head.appendChild(script); +}()); diff --git a/assets/scripts/notes.js b/assets/scripts/notes.js index 3496ef4..2cfeaa9 100755 --- a/assets/scripts/notes.js +++ b/assets/scripts/notes.js @@ -1,148 +1,7 @@ (function () { - const wall = document.getElementById("notes-wall"); - const form = document.getElementById("notes-form"); - const authorInput = document.getElementById("note-author"); - const contentInput = document.getElementById("note-content"); - const authorFilter = document.getElementById("notes-author-filter"); - let notesCache = []; - - if (!wall) return; - - function escapeHtml(str) { - return str - .replace(/&/g, "&") - .replace(//g, ">") - .replace(/"/g, """) - .replace(/'/g, "'"); - } - - function renderNote(note) { - const el = document.createElement("div"); - el.className = "note"; - - el.innerHTML = ` -
    - ${escapeHtml(note.author_name)} - -
    -
    - ${escapeHtml(note.content).replace(/\n/g, "
    ")} -
    - `; - - return el; - } - - function normaliseAuthor(author) { - return (author || "").trim(); - } - - function populateAuthorFilter(notes) { - if (!authorFilter) return; - - const previousValue = authorFilter.value; - const authors = Array.from( - new Set(notes.map(note => normaliseAuthor(note.author_name)).filter(Boolean)) - ).sort((a, b) => a.localeCompare(b, undefined, { sensitivity: "base" })); - - authorFilter.innerHTML = ''; - - authors.forEach(author => { - const option = document.createElement("option"); - option.value = author; - option.textContent = author; - authorFilter.appendChild(option); - }); - - authorFilter.value = authors.includes(previousValue) ? previousValue : ""; - } - - function renderNotes() { - wall.innerHTML = ""; - - const selectedAuthor = authorFilter ? authorFilter.value : ""; - const notes = selectedAuthor - ? notesCache.filter(note => normaliseAuthor(note.author_name) === selectedAuthor) - : notesCache; - - if (notesCache.length === 0) { - wall.innerHTML = "

    No notes yet.

    "; - return; - } - - if (notes.length === 0) { - wall.innerHTML = "

    No notes for this author.

    "; - return; - } - - notes.forEach(note => { - wall.appendChild(renderNote(note)); - }); - } - - async function loadNotes() { - wall.innerHTML = "

    Loading notes…

    "; - - try { - const res = await fetch("/api/notes"); - if (!res.ok) throw new Error("Failed to fetch notes"); - - const notes = await res.json(); - notesCache = notes; - populateAuthorFilter(notesCache); - renderNotes(); - } catch (err) { - console.error(err); - wall.innerHTML = "

    Could not load notes.

    "; - } - } - - async function submitNote(e) { - e.preventDefault(); - - const author = authorInput.value.trim(); - const content = contentInput.value.trim(); - - if (!author || !content) return; - - form.querySelector("button").disabled = true; - - try { - const res = await fetch("/api/notes", { - method: "POST", - headers: { - "Content-Type": "application/json", - }, - body: JSON.stringify({ - author_name: author, - content: content, - }), - }); - - if (!res.ok) { - const err = await res.json(); - throw new Error(err.detail || "Failed to post note"); - } - - contentInput.value = ""; - await loadNotes(); - } catch (err) { - alert(err.message); - } finally { - form.querySelector("button").disabled = false; - } - } - - if (form) { - form.addEventListener("submit", submitNote); - } - - if (authorFilter) { - authorFilter.addEventListener("change", renderNotes); - } - - loadNotes(); -})(); + "use strict"; + var script = document.createElement("script"); + script.src = "/assets/scripts/pages/notes.js"; + script.defer = true; + document.head.appendChild(script); +}()); diff --git a/assets/scripts/pages/ash-below-lake.js b/assets/scripts/pages/ash-below-lake.js new file mode 100644 index 0000000..5aa74cd --- /dev/null +++ b/assets/scripts/pages/ash-below-lake.js @@ -0,0 +1,1008 @@ +(function () { + const slot = "ash-below-the-lake"; + const fallbackKey = "play:rpg:ash-below-the-lake"; + const tile = 32; + const cols = 30; + const rows = 15; + const worldH = tile * rows; + const uiY = worldH; + const actions = ["Confront", "Listen", "Forget"]; + const areas = { + harbor: { + name: "Harbor Row", + act: "Act 1", + track: "harbor", + floor: ["#222c36", "#263541", "#304650"], + accent: "#e0a451", + walls: rects([[0, 0, 30, 1], [0, 14, 30, 1], [0, 0, 1, 15], [29, 0, 1, 15], [3, 3, 5, 2], [12, 2, 4, 3], [20, 3, 6, 2], [5, 11, 7, 1], [17, 10, 5, 1]]), + exits: [{ x: 28, y: 7, to: "red", px: 1, py: 7 }], + props: [{ kind: "lake", x: 1, y: 11, w: 28, h: 3 }, { kind: "stall", x: 9, y: 5 }, { kind: "flowers", x: 23, y: 9 }], + start: { x: 3, y: 8 } + }, + red: { + name: "The Red Streets", + act: "Act 1", + track: "red", + floor: ["#2f1f2c", "#442237", "#5b283f"], + accent: "#db4f62", + walls: rects([[0, 0, 30, 1], [0, 14, 30, 1], [0, 0, 1, 6], [0, 9, 1, 6], [29, 0, 1, 15], [4, 3, 4, 3], [12, 4, 3, 8], [20, 2, 5, 3], [22, 9, 4, 2]]), + exits: [{ x: 0, y: 7, to: "harbor", px: 28, py: 7 }, { x: 28, y: 12, to: "roots", px: 1, py: 12 }], + props: [{ kind: "sign", x: 9, y: 3 }, { kind: "stage", x: 17, y: 6 }, { kind: "poster", x: 26, y: 4 }], + start: { x: 2, y: 7 } + }, + roots: { + name: "The Roots", + act: "Act 2", + track: "roots", + floor: ["#182725", "#203832", "#2e493e"], + accent: "#66c7a2", + walls: rects([[0, 0, 30, 1], [0, 14, 30, 1], [0, 0, 1, 11], [0, 13, 1, 2], [29, 0, 1, 15], [5, 2, 2, 10], [11, 5, 7, 1], [15, 8, 2, 5], [22, 3, 3, 9]]), + exits: [{ x: 0, y: 12, to: "red", px: 28, py: 12 }, { x: 28, y: 4, to: "chapel", px: 1, py: 4 }], + props: [{ kind: "archive", x: 8, y: 8 }, { kind: "root", x: 18, y: 3 }, { kind: "home", x: 25, y: 11 }], + start: { x: 2, y: 12 } + }, + chapel: { + name: "The Drowned Chapel", + act: "Act 3", + track: "chapel", + floor: ["#172232", "#1c3043", "#263b4f"], + accent: "#8bd3ff", + walls: rects([[0, 0, 30, 1], [0, 14, 30, 1], [0, 0, 1, 3], [0, 6, 1, 9], [29, 0, 1, 15], [6, 4, 3, 7], [13, 2, 4, 3], [19, 4, 3, 7], [10, 12, 10, 1]]), + exits: [{ x: 0, y: 4, to: "roots", px: 28, py: 4 }, { x: 28, y: 10, to: "shore", px: 1, py: 10 }], + props: [{ kind: "pew", x: 10, y: 7 }, { kind: "pew", x: 16, y: 7 }, { kind: "glass", x: 14, y: 5 }], + start: { x: 2, y: 4 } + }, + shore: { + name: "The Hollow Shore", + act: "Final Act", + track: "shore", + floor: ["#111827", "#1b2440", "#211c33"], + accent: "#f1f5f9", + walls: rects([[0, 0, 30, 1], [0, 14, 30, 1], [0, 0, 1, 9], [0, 12, 1, 3], [29, 0, 1, 15], [7, 3, 3, 2], [16, 2, 2, 10], [22, 7, 4, 1]]), + exits: [{ x: 0, y: 10, to: "chapel", px: 28, py: 10 }], + props: [{ kind: "lake", x: 2, y: 10, w: 27, h: 4 }, { kind: "flowers", x: 5, y: 6 }, { kind: "rift", x: 24, y: 4 }], + start: { x: 2, y: 10 } + } + }; + const characters = { + ilyas: { name: "Ilyas", colors: ["#3d2b2f", "#e3b27f", "#334b7a", "#f2f0e6"] }, + mira: { name: "Mira", colors: ["#21191e", "#d98d70", "#b73550", "#f6d36f"] }, + ferryman: { name: "Ferryman", colors: ["#151719", "#dad9cd", "#56616d", "#0b0d10"] }, + cinder: { name: "Brother Cinder", colors: ["#1d1512", "#d59667", "#6b2e2f", "#f4c35c"] }, + sibling: { name: "Your Sibling", colors: ["#1d2531", "#bec8d8", "#52616f", "#dbeafe"] }, + vendor: { name: "Maribel", colors: ["#2a2023", "#d5a06f", "#3d7b65", "#ffd166"] }, + performer: { name: "Velvet Noon", colors: ["#2a1724", "#f2bd93", "#8f244d", "#ffe6a8"] }, + archivist: { name: "Memory Archivist", colors: ["#151f1d", "#b9ddc9", "#386b5c", "#dff7eb"] } + }; + const npcs = { + mira: { character: "mira", area: "harbor", x: 10, y: 8 }, + ferryman: { character: "ferryman", area: "harbor", x: 25, y: 10 }, + vendor: { character: "vendor", area: "harbor", x: 9, y: 6 }, + performer: { character: "performer", area: "red", x: 17, y: 8 }, + archivist: { character: "archivist", area: "roots", x: 9, y: 9 }, + cinder: { character: "cinder", area: "chapel", x: 15, y: 6 }, + sibling: { character: "sibling", area: "shore", x: 24, y: 8 } + }; + const items = { + letter: { name: "Wet Letter", area: "harbor", x: 5, y: 10 }, + bell: { name: "Brass Bell", area: "red", x: 27, y: 5 }, + photo: { name: "Blurred Photo", area: "roots", x: 13, y: 9 }, + cinderKey: { name: "Chapel Key", area: "chapel", x: 22, y: 12 } + }; + const encounters = { + first_erased: { + title: "First Erased Person", + area: "red", + x: 6, + y: 9, + hp: 18, + text: "A person-shaped absence blocks the alley. Their outline mouths a name no one else can hear.", + bullets: "drift" + }, + root_husk: { + title: "Root Husk", + area: "roots", + x: 21, + y: 9, + hp: 24, + text: "A house nobody remembers learned to walk. It wants its rooms back.", + bullets: "rain" + }, + chapel_memory: { + title: "Choir of Ash", + area: "chapel", + x: 11, + y: 10, + hp: 30, + text: "Voices rise from the drowned pews. Every note sounds like an apology.", + bullets: "spiral" + } + }; + + window.AshBelowLakeRpg = function init(root) { + const canvas = root.querySelector("[data-rpg-canvas]"); + const ctx = canvas.getContext("2d"); + const els = { + speaker: root.querySelector("[data-rpg-speaker]"), + line: root.querySelector("[data-rpg-line]"), + area: root.querySelector("[data-rpg-room]"), + route: root.querySelector("[data-rpg-route]"), + resolve: root.querySelector("[data-rpg-hearts]"), + journal: root.querySelector("[data-rpg-quests]"), + inventory: root.querySelector("[data-rpg-inventory]"), + status: root.querySelector("[data-rpg-status]") + }; + const ui = buildUi(root); + const audio = makeAudio(); + let state = freshState(); + let keys = new Set(); + let last = performance.now(); + let saveBusy = false; + let backendAvailable = true; + + bind(); + loadLocal(); + requestAnimationFrame(frame); + + function freshState() { + return { + started: false, + mode: "title", + area: "harbor", + player: { x: 3, y: 8, facing: "down", step: 0 }, + route: "Undecided", + resolve: 20, + toldName: null, + flags: {}, + inventory: [], + memories: [ + { id: "letter", text: "Your sibling's letter says: Don't let the lake remember your name.", stable: true }, + { id: "town", text: "Morrow's End smiles like a town in a postcard someone tried to burn.", stable: true } + ], + forgets: 0, + listens: 0, + confronts: 0, + companion: false, + battle: null, + ending: null, + dialogue: { speaker: "The Letter", line: "Don't let the lake remember your name." } + }; + } + + function buildUi(rootEl) { + const panel = rootEl.querySelector(".rpg-panel"); + const actionsWrap = document.createElement("div"); + actionsWrap.className = "ash-choicebar"; + actionsWrap.innerHTML = actions.map((name) => ``).join(""); + panel.insertBefore(actionsWrap, panel.querySelector(".rpg-list")); + const meter = document.createElement("div"); + meter.className = "ash-memory-meter"; + meter.innerHTML = "Lake Memory"; + panel.insertBefore(meter, actionsWrap); + const nameBox = document.createElement("form"); + nameBox.className = "ash-name-form"; + nameBox.innerHTML = ""; + panel.insertBefore(nameBox, meter); + return { + actionButtons: Array.from(actionsWrap.querySelectorAll("button")), + memoryFill: meter.querySelector("[data-ash-memory-fill]"), + nameForm: nameBox, + nameInput: nameBox.querySelector("[data-ash-name]") + }; + } + + function bind() { + root.querySelector("[data-rpg-start]").addEventListener("click", start); + root.querySelector("[data-rpg-save]").addEventListener("click", save); + root.querySelector("[data-rpg-load]").addEventListener("click", () => load(true)); + root.querySelector("[data-rpg-reset]").addEventListener("click", newGame); + root.querySelector("[data-rpg-sound]").addEventListener("click", () => { + audio.start(); + audio.setTrack(state.started ? areas[state.area].track : "title"); + els.status.textContent = audio.supported() ? "Sound on." : "This browser does not expose Web Audio."; + }); + root.querySelector("[data-rpg-act]").addEventListener("click", act); + root.querySelectorAll("[data-rpg-move]").forEach((button) => { + button.addEventListener("click", () => move(button.dataset.rpgMove)); + }); + ui.actionButtons.forEach((button) => button.addEventListener("click", () => chooseBattle(button.dataset.ashAction))); + ui.nameForm.addEventListener("submit", (event) => { + event.preventDefault(); + tellName(ui.nameInput.value.trim() || "Ilyas"); + }); + window.addEventListener("keydown", (event) => { + if (!root.isConnected || ["INPUT", "TEXTAREA"].includes(event.target.tagName)) return; + if (["ArrowUp", "ArrowDown", "ArrowLeft", "ArrowRight", "w", "a", "s", "d", " ", "Enter", "Escape"].includes(event.key)) event.preventDefault(); + keys.add(event.key.toLowerCase()); + audio.start(); + if (event.key === " " || event.key === "Enter") act(); + if (event.key === "Escape" && state.mode === "battle") leaveBattle("You step back from the memory and let it breathe."); + }); + window.addEventListener("keyup", (event) => keys.delete(event.key.toLowerCase())); + } + + function start() { + audio.start(); + state.started = true; + state.mode = "world"; + state.dialogue = { speaker: "Ilyas", line: "The letter is damp, but the ink has not run. Morrow's End waits beyond the harbor lamps." }; + audio.setTrack(areas[state.area].track); + save(); + } + + async function newGame() { + state = freshState(); + localStorage.removeItem(fallbackKey); + if (backendAvailable) { + try { + const response = await fetch(`/api/play/rpg/save/${slot}`, { method: "DELETE" }); + if (response.status === 404) els.status.textContent = "New game started locally. There was no backend save to clear."; + } catch (_error) { + backendAvailable = false; + } + } + audio.setTrack("title"); + if (!els.status.textContent.includes("backend save to clear")) { + els.status.textContent = backendAvailable ? "New game started and local save cleared." : "New game started locally. Backend save endpoint is not reachable."; + } + renderHud(); + } + + async function save() { + localStorage.setItem(fallbackKey, JSON.stringify(state)); + if (saveBusy || !backendAvailable) { + els.status.textContent = backendAvailable ? "Save already running." : "Saved locally. Backend save endpoint is not available."; + return; + } + saveBusy = true; + try { + const response = await fetch(`/api/play/rpg/save/${slot}`, { + method: "PUT", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ payload: state }) + }); + if (response.status === 404) { + backendAvailable = false; + els.status.textContent = "Saved locally. Backend save endpoint is not deployed yet."; + } else { + els.status.textContent = response.ok ? "Saved to backend." : "Saved locally. Backend rejected the save."; + } + } catch (_error) { + backendAvailable = false; + els.status.textContent = "Saved locally. Backend save API was not reachable."; + } finally { + saveBusy = false; + } + } + + async function load(allowBackend) { + if (loadLocal("Loaded local save.")) return; + if (!allowBackend || !backendAvailable) { + els.status.textContent = backendAvailable ? "No local save found." : "No local save found. Backend save endpoint is not available."; + return; + } + try { + const response = await fetch(`/api/play/rpg/save/${slot}`); + if (response.status === 404) { + els.status.textContent = "No save file exists yet. Press Save after starting a game to create one."; + return; + } + if (!response.ok) { + els.status.textContent = "No local save found. Backend did not return a save."; + return; + } + const data = await response.json(); + state = normalize(data.payload); + localStorage.setItem(fallbackKey, JSON.stringify(state)); + els.status.textContent = "Loaded from backend."; + audio.setTrack(state.started ? areas[state.area].track : "title"); + } catch (_error) { + backendAvailable = false; + els.status.textContent = "No local save found. Backend save API was not reachable."; + } + } + + function loadLocal(message) { + const local = localStorage.getItem(fallbackKey); + if (local) { + state = normalize(JSON.parse(local)); + if (message) els.status.textContent = message; + audio.setTrack(state.started ? areas[state.area].track : "title"); + return true; + } + audio.setTrack(state.started ? areas[state.area].track : "title"); + return false; + } + + function normalize(candidate) { + const base = freshState(); + const next = Object.assign(base, candidate || {}); + next.player = Object.assign(base.player, (candidate && candidate.player) || {}); + next.flags = Object.assign({}, (candidate && candidate.flags) || {}); + next.inventory = Array.isArray(next.inventory) ? next.inventory.filter((id) => items[id]) : []; + next.memories = Array.isArray(next.memories) ? next.memories : base.memories; + next.area = areas[next.area] ? next.area : "harbor"; + next.dialogue = Object.assign(base.dialogue, (candidate && candidate.dialogue) || {}); + return next; + } + + function frame(now) { + const dt = Math.min(48, now - last); + last = now; + update(dt); + draw(now); + renderHud(); + requestAnimationFrame(frame); + } + + function update(dt) { + if (state.mode !== "world") return; + const dir = keyDirection(); + if (!dir) return; + state.player.step += dt; + if (state.player.step < 115) return; + state.player.step = 0; + move(dir); + } + + function keyDirection() { + if (keys.has("arrowup") || keys.has("w")) return "up"; + if (keys.has("arrowdown") || keys.has("s")) return "down"; + if (keys.has("arrowleft") || keys.has("a")) return "left"; + if (keys.has("arrowright") || keys.has("d")) return "right"; + return null; + } + + function move(direction) { + if (state.mode !== "world" || !state.started || state.ending) return; + const delta = { up: [0, -1], down: [0, 1], left: [-1, 0], right: [1, 0] }[direction]; + state.player.facing = direction; + const nx = state.player.x + delta[0]; + const ny = state.player.y + delta[1]; + const area = areas[state.area]; + const exit = area.exits.find((item) => item.x === nx && item.y === ny); + if (exit && canEnter(exit.to)) { + state.area = exit.to; + state.player.x = exit.px; + state.player.y = exit.py; + audio.setTrack(areas[state.area].track); + remember(`Entered ${areas[state.area].name}.`, true); + say("Morrow's End", areaEnterLine(state.area)); + save(); + return; + } + if (area.walls.has(`${nx},${ny}`) || npcAt(nx, ny) || nx < 0 || nx >= cols || ny < 0 || ny >= rows) return; + state.player.x = nx; + state.player.y = ny; + const found = itemAt(nx, ny); + if (found) take(found); + const encounter = encounterAt(nx, ny); + if (encounter && !state.flags[`encounter_${encounter}`]) startBattle(encounter); + } + + function canEnter(to) { + if (to === "chapel" && !state.flags.rootsTruth && state.forgets < 2) { + say("Ferryman", "The chapel is under the lake. It only opens for truth, or for forgetting."); + return false; + } + if (to === "shore" && !state.flags.cinderMet) { + say("Brother Cinder", "The shore is not a place. It is a decision. Hear me first."); + return false; + } + return true; + } + + function act() { + audio.start(); + if (!state.started) return start(); + if (state.mode === "battle") return chooseBattle("listen"); + if (state.ending) return; + const front = inFront(); + const npc = npcAt(front.x, front.y) || npcAt(state.player.x, state.player.y); + if (npc) return talk(npc); + const found = itemAt(state.player.x, state.player.y); + if (found) return take(found); + const special = propAt(front.x, front.y) || propAt(state.player.x, state.player.y); + if (special) return inspectProp(special); + if (state.area === "shore" && state.player.x > 22 && state.player.y > 8) return finalChoice(); + say("Ilyas", "The town holds its breath. Somewhere, water knocks against stone."); + } + + function inFront() { + const d = { up: [0, -1], down: [0, 1], left: [-1, 0], right: [1, 0] }[state.player.facing] || [0, 1]; + return { x: state.player.x + d[0], y: state.player.y + d[1] }; + } + + function npcAt(x, y) { + return Object.keys(npcs).find((id) => { + const npc = npcs[id]; + return npc.area === state.area && npc.x === x && npc.y === y && !forgottenNpc(id); + }); + } + + function itemAt(x, y) { + return Object.keys(items).find((id) => { + const item = items[id]; + return item.area === state.area && item.x === x && item.y === y && !state.inventory.includes(id); + }); + } + + function encounterAt(x, y) { + return Object.keys(encounters).find((id) => { + const e = encounters[id]; + return e.area === state.area && e.x === x && e.y === y; + }); + } + + function propAt(x, y) { + return areas[state.area].props.find((prop) => x >= prop.x && x < prop.x + (prop.w || 1) && y >= prop.y && y < prop.y + (prop.h || 1)); + } + + function take(id) { + state.inventory.push(id); + audio.sfx("item"); + if (id === "letter") remember("The wet letter refuses to dry.", true); + if (id === "photo") remember("A photo shows you beside someone whose face keeps changing.", true); + if (id === "cinderKey") state.flags.chapelKey = true; + say("Found", `${items[id].name} added to your bag.`); + save(); + } + + function talk(id) { + audio.sfx("talk"); + if (id === "mira") { + state.companion = true; + state.flags.metMira = true; + remember("Mira remembers what other people lose.", true); + say("Mira", state.forgets > 1 ? "You keep looking through people like windows. Don't do that to me, okay?" : "You look lost. Good. Everyone interesting does."); + } + if (id === "ferryman") { + remember("The Ferryman knows where you have been before you arrive.", state.forgets < 2); + say("Ferryman", state.toldName ? `${state.toldName} is a fine name to keep away from water.` : "Names are hooks. I would not throw yours into the lake."); + } + if (id === "vendor") say("Maribel", "Today's special: one jar of fog, two apologies, and a fish that predicts Thursday badly."); + if (id === "performer") { + remember("A performer advertised a show called YOUR MISSING YEARS.", state.forgets < 3); + say("Velvet Noon", "Clap if you remember me. Clap twice if you are pretending."); + } + if (id === "archivist") { + state.flags.rootsTruth = true; + remember("The lake feeds on suffering, but calls it mercy.", true); + say("Memory Archivist", "The archives are homes with the people removed. The lake calls that tidying."); + } + if (id === "cinder") { + state.flags.cinderMet = true; + remember("Brother Cinder believes forgetting pain is mercy.", true); + say("Brother Cinder", "I have seen grief make animals of gentle people. The lake did not begin as a hunger. It began as a kindness."); + } + if (id === "sibling") { + remember("Your sibling entered the lake willingly.", true); + say("Your Sibling", "I gave it my name because I was tired of carrying it. Please don't give it yours."); + finalChoice(); + } + save(); + } + + function inspectProp(prop) { + audio.sfx("talk"); + if (prop.kind === "lake") say("Black Lake", state.toldName ? `It almost says ${state.toldName}. Almost.` : "It reflects nothing. Not clouds. Not you."); + if (prop.kind === "stall") say("Market Sign", "Fresh eels. Older than regret. Discount if they remember your birthday."); + if (prop.kind === "flowers") say("Glowing Flowers", "They lean toward the water like they are listening."); + if (prop.kind === "sign") say("Advertisement", "TONIGHT: The Amazing Vanishing Audience. Refunds unavailable after erasure."); + if (prop.kind === "stage") say("Stage", "The curtain twitches though there is no wind indoors."); + if (prop.kind === "poster") say("Poster", "A smiling face has been scratched out. The scratch is smiling too."); + if (prop.kind === "archive") { + state.flags.rootsTruth = true; + remember("Some memory shelves are empty because nobody dared open them.", true); + say("Memory Archive", "A drawer opens by itself. Inside: houses, birthdays, funeral songs, a ticket stub from a train that never arrived."); + } + if (prop.kind === "root") say("Roots", "They pulse slowly under the town, carrying lake-water like blood."); + if (prop.kind === "home") say("Abandoned Home", "Every room is furnished except for the idea of a family."); + if (prop.kind === "pew") say("Drowned Pew", "The wood is wet. The prayer book is dry."); + if (prop.kind === "glass") say("Sunken Window", "Saints in blue glass lower their eyes toward the lake."); + if (prop.kind === "rift") finalChoice(); + save(); + } + + function tellName(name) { + state.toldName = name.slice(0, 18); + remember(`You told Morrow's End your name is ${state.toldName}.`, false); + say("Morrow's End", `The town repeats ${state.toldName} very softly. Too softly.`); + state.route = state.route === "Undecided" ? "Named" : state.route; + save(); + } + + function startBattle(id) { + const e = encounters[id]; + state.mode = "battle"; + state.battle = { + id, + hp: e.hp, + maxHp: e.hp, + soul: { x: 480, y: 382 }, + bullets: [], + t: 0, + grace: 0, + turn: 1, + message: e.text + }; + audio.setTrack("battle"); + audio.sfx("battle"); + say(e.title, e.text); + save(); + } + + function chooseBattle(action) { + if (state.mode !== "battle" || !state.battle) return; + const battle = state.battle; + if (action === "confront") { + battle.hp -= 9; + state.confronts += 1; + state.route = "Confronting"; + battle.message = "You refuse to move. The memory recoils from your shape."; + audio.sfx("hit"); + } + if (action === "listen") { + battle.hp -= 7; + state.listens += 1; + state.route = state.forgets === 0 ? "Carry" : "Listening"; + battle.message = "You listen until the ache becomes words. The attack softens."; + remember(`Listened to ${encounters[battle.id].title}.`, true); + audio.sfx("listen"); + } + if (action === "forget") { + battle.hp -= 18; + state.forgets += 1; + state.route = state.forgets >= 3 ? "Forgotten" : "Silence"; + battle.message = "You let the lake take the hard part. Something else goes with it."; + rewriteMemory(); + audio.sfx("forget"); + } + battle.turn += 1; + if (battle.hp <= 0) resolveBattle(action); + else say(encounters[battle.id].title, battle.message); + save(); + } + + function resolveBattle(action) { + const id = state.battle.id; + state.flags[`encounter_${id}`] = action; + if (id === "root_husk") state.flags.rootsTruth = true; + if (action === "forget" && state.forgets >= 3) return end("forgotten"); + const line = action === "listen" + ? "The memory steps aside, still hurting, but no longer alone." + : action === "forget" + ? "The memory becomes easy to pass. Behind you, a street sign loses a letter." + : "The memory breaks apart like ash under rain."; + leaveBattle(line); + } + + function leaveBattle(line) { + state.mode = "world"; + state.battle = null; + audio.setTrack(areas[state.area].track); + say("Afterimage", line); + save(); + } + + function finalChoice() { + if (state.forgets >= 3) return end("forgotten"); + if (state.forgets === 0 && state.listens >= 3 && state.flags.metMira) return end("rest"); + if (state.route === "Silence" || state.forgets > state.listens) return end("silence"); + end("carry"); + } + + function end(kind) { + state.ending = kind; + state.mode = "ending"; + state.route = kind === "rest" ? "True: Rest" : kind === "carry" ? "Carry" : kind === "silence" ? "Silence" : "Forgotten"; + audio.setTrack(kind === "forgotten" ? "void" : "ending"); + say("Ending", endingLine(kind)); + remember(endingLine(kind), kind !== "forgotten"); + save(); + } + + function endingLine(kind) { + if (kind === "silence") return "Silence: you join the lake. Morrow's End becomes peaceful, clean, and almost empty."; + if (kind === "carry") return "Carry: the lake breaks. Everyone remembers. The town survives with tears in every lit window."; + if (kind === "forgotten") return "Forgotten: the story continues politely around the space where Ilyas used to be."; + return "Rest: the lake is forgiven, not destroyed. Mira laughs once, real and afraid, as the shore finally reflects the sky."; + } + + function rewriteMemory() { + const mutable = state.memories.find((memory) => !memory.stable && !memory.erased) || state.memories.find((memory) => !memory.erased); + if (mutable) { + mutable.text = state.forgets > 2 ? "There was someone here. There was no one here. Both feel true." : mutable.text.replace(/[aeiou]/gi, "_"); + mutable.erased = state.forgets > 2; + } + if (state.forgets === 2) state.flags.vendorForgotten = true; + if (state.forgets >= 3) state.flags.performerForgotten = true; + } + + function forgottenNpc(id) { + return (id === "vendor" && state.flags.vendorForgotten) || (id === "performer" && state.flags.performerForgotten); + } + + function remember(text, stable) { + if (!state.memories.some((memory) => memory.text === text)) state.memories.push({ id: `m${Date.now()}`, text, stable: Boolean(stable) }); + if (state.memories.length > 8) state.memories.splice(2, 1); + } + + function say(speaker, line) { + state.dialogue = { speaker, line }; + } + + function areaEnterLine(area) { + if (area === "red") return "The Red Streets glow warmly, but the laughter arrives half a second late."; + if (area === "roots") return "The Roots smell like wet stone and bedrooms left untouched for years."; + if (area === "chapel") return "The Drowned Chapel rings with a bell under water."; + if (area === "shore") return "The Hollow Shore bends at the edges, as if the world has been folded too many times."; + return "Harbor Row keeps its lamps low and its names lower."; + } + + function draw(now) { + ctx.imageSmoothingEnabled = false; + if (!state.started || state.mode === "title") drawTitle(now); + else drawWorld(now); + if (state.mode === "battle") drawBattle(now); + if (state.mode === "ending") drawEnding(now); + drawVignette(now); + } + + function drawTitle(now) { + const g = ctx.createLinearGradient(0, 0, 0, canvas.height); + g.addColorStop(0, "#05070c"); + g.addColorStop(0.55, "#101b28"); + g.addColorStop(1, "#020306"); + ctx.fillStyle = g; + ctx.fillRect(0, 0, canvas.width, canvas.height); + drawLake(0, 345, 960, 195, now, 0.4); + ctx.fillStyle = "#f8efe0"; + ctx.font = "700 50px Georgia, serif"; + ctx.textAlign = "center"; + ctx.fillText("Ash Below the Lake", 480, 142); + ctx.font = "18px Georgia, serif"; + ctx.fillStyle = "#b9c6d4"; + ctx.fillText("A quiet town. A black lake. A name you should not give away.", 480, 178); + ctx.fillStyle = "#e0a451"; + ctx.font = "700 18px ui-monospace, monospace"; + ctx.fillText("Press Start or Space", 480, 246); + drawSprite("ilyas", 424, 288, 3, now); + drawSprite("mira", 500, 288, 3, now); + } + + function drawWorld(now) { + const area = areas[state.area]; + for (let y = 0; y < rows; y += 1) { + for (let x = 0; x < cols; x += 1) { + const wall = area.walls.has(`${x},${y}`); + const c = area.floor[(x + y) % area.floor.length]; + ctx.fillStyle = wall ? "#0b0d10" : c; + ctx.fillRect(x * tile, y * tile, tile, tile); + if (!wall) { + ctx.fillStyle = (x + y) % 2 === 0 ? "rgba(255,255,255,0.018)" : "rgba(0,0,0,0.035)"; + ctx.fillRect(x * tile, y * tile + 30, tile, 2); + } + } + } + area.exits.forEach((exit) => drawDoor(exit.x, exit.y, area.accent)); + area.props.forEach((prop) => drawProp(prop, now)); + Object.keys(items).forEach((id) => { + const item = items[id]; + if (item.area === state.area && !state.inventory.includes(id)) drawItem(id, item, now); + }); + Object.keys(encounters).forEach((id) => { + const e = encounters[id]; + if (e.area === state.area && !state.flags[`encounter_${id}`]) drawEncounter(e, now); + }); + Object.keys(npcs).forEach((id) => { + const npc = npcs[id]; + if (npc.area === state.area && !forgottenNpc(id)) drawSprite(npc.character, npc.x * tile, npc.y * tile - 12, 2, now); + }); + drawSprite("ilyas", state.player.x * tile, state.player.y * tile - 12, 2, now); + if (state.companion && state.area !== "chapel") { + const offset = state.player.facing === "left" ? 1 : -1; + drawSprite("mira", (state.player.x + offset) * tile, state.player.y * tile - 12, 2, now + 200); + } + drawTopBar(area); + } + + function drawTopBar(area) { + ctx.fillStyle = "rgba(3, 6, 10, 0.82)"; + ctx.fillRect(0, 0, canvas.width, 42); + ctx.fillStyle = area.accent; + ctx.font = "700 14px ui-monospace, monospace"; + ctx.textAlign = "left"; + ctx.fillText(`${area.act} / ${area.name}`, 18, 26); + ctx.textAlign = "right"; + ctx.fillStyle = "#f8efe0"; + ctx.fillText(`Resolve ${state.resolve} Lake ${state.forgets}`, 940, 26); + } + + function drawBattle(now) { + const battle = state.battle; + battle.t += 1; + updateBullets(battle, now); + ctx.fillStyle = "rgba(4, 5, 8, 0.88)"; + ctx.fillRect(0, 0, canvas.width, canvas.height); + ctx.strokeStyle = "#f8efe0"; + ctx.lineWidth = 3; + ctx.strokeRect(296, 252, 368, 190); + ctx.fillStyle = "#f8efe0"; + ctx.font = "700 24px Georgia, serif"; + ctx.textAlign = "center"; + ctx.fillText(encounters[battle.id].title, 480, 82); + ctx.font = "16px ui-monospace, monospace"; + ctx.fillText(`Memory ${Math.max(0, battle.hp)} / ${battle.maxHp}`, 480, 116); + drawBattleEnemy(battle.id, now); + ctx.fillStyle = "#f35f5f"; + ctx.beginPath(); + ctx.moveTo(battle.soul.x, battle.soul.y - 8); + ctx.bezierCurveTo(battle.soul.x - 13, battle.soul.y - 17, battle.soul.x - 20, battle.soul.y + 4, battle.soul.x, battle.soul.y + 18); + ctx.bezierCurveTo(battle.soul.x + 20, battle.soul.y + 4, battle.soul.x + 13, battle.soul.y - 17, battle.soul.x, battle.soul.y - 8); + ctx.fill(); + ctx.fillStyle = "#dbeafe"; + battle.bullets.forEach((b) => { + ctx.beginPath(); + ctx.arc(b.x, b.y, b.r, 0, Math.PI * 2); + ctx.fill(); + }); + ctx.fillStyle = "#f8efe0"; + ctx.font = "15px Georgia, serif"; + wrapText(battle.message, 148, 480, 660, 22); + } + + function updateBullets(battle) { + const speed = state.forgets > 0 ? 1.15 : 1.55; + const move = keyDirection(); + if (move === "up") battle.soul.y -= 3.3; + if (move === "down") battle.soul.y += 3.3; + if (move === "left") battle.soul.x -= 3.3; + if (move === "right") battle.soul.x += 3.3; + battle.soul.x = clamp(battle.soul.x, 312, 648); + battle.soul.y = clamp(battle.soul.y, 270, 426); + if (battle.t % 26 === 0) { + if (encounters[battle.id].bullets === "rain") battle.bullets.push({ x: 315 + Math.random() * 330, y: 256, vx: 0, vy: speed * 2.4, r: 5 }); + else if (encounters[battle.id].bullets === "spiral") { + const a = battle.t / 14; + battle.bullets.push({ x: 480, y: 346, vx: Math.cos(a) * speed * 2, vy: Math.sin(a) * speed * 2, r: 5 }); + } else battle.bullets.push({ x: Math.random() > 0.5 ? 304 : 656, y: 275 + Math.random() * 130, vx: (Math.random() > 0.5 ? -1 : 1) * speed * 2, vy: Math.sin(battle.t) * 0.6, r: 5 }); + } + battle.bullets.forEach((b) => { + b.x += b.vx; + b.y += b.vy; + if (battle.grace <= 0 && Math.hypot(b.x - battle.soul.x, b.y - battle.soul.y) < b.r + 10) { + state.resolve = Math.max(0, state.resolve - 1); + battle.grace = 24; + audio.sfx("hurt"); + if (state.resolve <= 0) end("forgotten"); + } + }); + battle.grace -= 1; + battle.bullets = battle.bullets.filter((b) => b.x > 280 && b.x < 680 && b.y > 230 && b.y < 455); + } + + function renderHud() { + root.classList.toggle("is-lake-awake", state.forgets > 1); + root.classList.toggle("is-ending", Boolean(state.ending)); + els.speaker.textContent = state.dialogue.speaker; + els.line.textContent = state.dialogue.line; + els.area.textContent = areas[state.area].name; + els.route.textContent = state.route; + els.resolve.textContent = String(state.resolve); + ui.memoryFill.style.width = `${Math.min(100, state.forgets * 34)}%`; + els.inventory.innerHTML = state.inventory.length ? state.inventory.map((id) => `
  • ${items[id].name}
  • `).join("") : "
  • Empty
  • "; + els.journal.innerHTML = state.memories.map((memory) => `
  • ${memory.erased ? "[entry missing]" : memory.text}
  • `).join(""); + ui.actionButtons.forEach((button) => { + button.disabled = state.mode !== "battle"; + }); + } + + function drawProp(prop, now) { + const x = prop.x * tile; + const y = prop.y * tile; + if (prop.kind === "lake") return drawLake(x, y, (prop.w || 1) * tile, (prop.h || 1) * tile, now, 1); + if (prop.kind === "stall") { + ctx.fillStyle = "#7f2d3a"; ctx.fillRect(x, y + 8, 64, 34); + ctx.fillStyle = "#e0a451"; ctx.fillRect(x - 4, y, 72, 12); + } + if (prop.kind === "flowers") for (let i = 0; i < 6; i += 1) { ctx.fillStyle = `rgba(133, 255, 214, ${0.45 + Math.sin(now / 400 + i) * 0.2})`; ctx.fillRect(x + i * 8, y + 12 + (i % 2) * 8, 5, 5); } + if (prop.kind === "sign" || prop.kind === "poster") { ctx.fillStyle = "#12151d"; ctx.fillRect(x, y, 38, 32); ctx.fillStyle = "#f3b15d"; ctx.fillRect(x + 5, y + 6, 28, 3); } + if (prop.kind === "stage") { ctx.fillStyle = "#210d18"; ctx.fillRect(x, y + 10, 96, 46); ctx.fillStyle = "#d64d62"; ctx.fillRect(x + 8, y, 80, 14); } + if (prop.kind === "archive") { ctx.fillStyle = "#4b3a25"; ctx.fillRect(x, y, 58, 52); ctx.fillStyle = "#d8cba8"; for (let i = 0; i < 4; i += 1) ctx.fillRect(x + 8, y + 8 + i * 10, 42, 3); } + if (prop.kind === "root") { ctx.strokeStyle = "#6aa27d"; ctx.lineWidth = 5; ctx.beginPath(); ctx.moveTo(x, y + 28); ctx.bezierCurveTo(x + 26, y - 8, x + 52, y + 48, x + 80, y + 6); ctx.stroke(); } + if (prop.kind === "home") { ctx.fillStyle = "#263332"; ctx.fillRect(x, y, 54, 48); ctx.fillStyle = "#080a0c"; ctx.fillRect(x + 20, y + 18, 14, 30); } + if (prop.kind === "pew") { ctx.fillStyle = "#33251d"; ctx.fillRect(x, y + 10, 76, 20); } + if (prop.kind === "glass") { ctx.fillStyle = "rgba(139,211,255,0.55)"; ctx.fillRect(x, y, 52, 72); ctx.fillStyle = "rgba(255,255,255,0.3)"; ctx.fillRect(x + 23, y, 5, 72); } + if (prop.kind === "rift") { ctx.strokeStyle = `rgba(248,239,224,${0.5 + Math.sin(now / 200) * 0.3})`; ctx.lineWidth = 3; ctx.beginPath(); ctx.moveTo(x + 20, y); ctx.lineTo(x + 5, y + 22); ctx.lineTo(x + 27, y + 40); ctx.lineTo(x + 10, y + 70); ctx.stroke(); } + } + + function drawLake(x, y, w, h, now, alpha) { + const g = ctx.createLinearGradient(0, y, 0, y + h); + g.addColorStop(0, `rgba(7, 18, 30, ${0.7 * alpha})`); + g.addColorStop(1, `rgba(0, 0, 0, ${0.95 * alpha})`); + ctx.fillStyle = g; + ctx.fillRect(x, y, w, h); + ctx.strokeStyle = `rgba(114, 169, 191, ${0.2 * alpha})`; + for (let i = 0; i < 8; i += 1) { + ctx.beginPath(); + const yy = y + 12 + i * 17 + Math.sin(now / 700 + i) * 4; + ctx.moveTo(x, yy); + for (let xx = 0; xx < w; xx += 24) ctx.lineTo(x + xx, yy + Math.sin(now / 350 + xx / 35 + i) * 3); + ctx.stroke(); + } + } + + function drawDoor(x, y, color) { + ctx.fillStyle = color; + ctx.fillRect(x * tile + 7, y * tile + 4, 18, 26); + ctx.fillStyle = "#05070c"; + ctx.fillRect(x * tile + 19, y * tile + 17, 3, 3); + } + + function drawItem(id, item, now) { + const x = item.x * tile; + const y = item.y * tile + Math.sin(now / 220) * 2; + ctx.fillStyle = id === "bell" ? "#d6a24a" : id === "photo" ? "#dbeafe" : id === "cinderKey" ? "#f59e0b" : "#f8efe0"; + ctx.fillRect(x + 10, y + 10, 13, 13); + ctx.fillStyle = "rgba(255,255,255,0.45)"; + ctx.fillRect(x + 13, y + 7, 7, 5); + } + + function drawEncounter(e, now) { + const x = e.x * tile; + const y = e.y * tile; + ctx.fillStyle = `rgba(210, 225, 245, ${0.35 + Math.sin(now / 260) * 0.16})`; + ctx.fillRect(x + 8, y + 4, 16, 27); + ctx.clearRect(x + 12, y + 10, 3, 4); + ctx.clearRect(x + 19, y + 10, 3, 4); + } + + function drawSprite(id, x, y, scale, now) { + const c = characters[id].colors; + const bob = Math.sin(now / 260 + x) * 1.5; + const s = scale; + ctx.fillStyle = "rgba(0,0,0,0.28)"; + ctx.fillRect(x + 5 * s, y + 30 * s, 12 * s, 3 * s); + ctx.fillStyle = c[0]; ctx.fillRect(x + 7 * s, y + bob + 2 * s, 10 * s, 7 * s); + ctx.fillStyle = c[1]; ctx.fillRect(x + 6 * s, y + bob + 8 * s, 12 * s, 10 * s); + ctx.fillStyle = c[2]; ctx.fillRect(x + 5 * s, y + bob + 18 * s, 14 * s, 13 * s); + ctx.fillStyle = c[3]; ctx.fillRect(x + 8 * s, y + bob + 12 * s, 2 * s, 2 * s); ctx.fillRect(x + 14 * s, y + bob + 12 * s, 2 * s, 2 * s); + ctx.fillStyle = c[0]; ctx.fillRect(x + 4 * s, y + bob + 22 * s, 3 * s, 9 * s); ctx.fillRect(x + 17 * s, y + bob + 22 * s, 3 * s, 9 * s); + } + + function drawBattleEnemy(id, now) { + if (id === "first_erased") drawEncounter({ x: 14, y: 4 }, now); + if (id === "root_husk") { ctx.strokeStyle = "#79c89d"; ctx.lineWidth = 8; ctx.beginPath(); ctx.moveTo(440, 180); ctx.bezierCurveTo(470, 120, 510, 230, 540, 160); ctx.stroke(); } + if (id === "chapel_memory") { ctx.fillStyle = "rgba(139,211,255,0.5)"; for (let i = 0; i < 5; i += 1) ctx.fillRect(420 + i * 28, 150 + Math.sin(now / 300 + i) * 8, 16, 54); } + } + + function drawEnding(now) { + ctx.fillStyle = "rgba(0,0,0,0.72)"; + ctx.fillRect(0, 0, canvas.width, canvas.height); + ctx.fillStyle = "#f8efe0"; + ctx.font = "700 42px Georgia, serif"; + ctx.textAlign = "center"; + ctx.fillText(state.route, 480 + Math.sin(now / 120) * (state.ending === "forgotten" ? 3 : 0), 202); + ctx.font = "18px Georgia, serif"; + wrapText(state.dialogue.line, 250, 250, 460, 28); + } + + function drawVignette(now) { + if (state.forgets > 0) { + ctx.fillStyle = `rgba(0,0,0,${0.06 + state.forgets * 0.05 + Math.sin(now / 800) * 0.02})`; + ctx.fillRect(0, 0, canvas.width, canvas.height); + } + const g = ctx.createRadialGradient(480, 245, 120, 480, 245, 560); + g.addColorStop(0, "rgba(0,0,0,0)"); + g.addColorStop(1, "rgba(0,0,0,0.48)"); + ctx.fillStyle = g; + ctx.fillRect(0, 0, canvas.width, canvas.height); + } + + function wrapText(text, x, y, maxWidth, lineHeight) { + ctx.textAlign = "left"; + const words = text.split(" "); + let line = ""; + for (const word of words) { + const test = `${line}${word} `; + if (ctx.measureText(test).width > maxWidth && line) { + ctx.fillText(line, x, y); + line = `${word} `; + y += lineHeight; + } else { + line = test; + } + } + ctx.fillText(line, x, y); + } + }; + + function makeAudio() { + let ctx = null; + let master = null; + let track = "title"; + let timer = null; + const patterns = { + title: [220, 277, 330, 277], + harbor: [262, 330, 392, 330], + red: [196, 233, 294, 349], + roots: [174, 220, 261, 220], + chapel: [147, 196, 247, 294], + shore: [110, 165, 220, 165], + battle: [330, 311, 294, 247], + ending: [262, 392, 440, 523], + void: [110, 98, 82, 73] + }; + function start() { + const Audio = window.AudioContext || window.webkitAudioContext; + if (!Audio) return; + if (ctx) { + if (ctx.state === "suspended") ctx.resume(); + return; + } + ctx = new Audio(); + master = ctx.createGain(); + master.gain.value = 0.14; + master.connect(ctx.destination); + if (ctx.state === "suspended") ctx.resume(); + loop(); + const notes = patterns[track] || patterns.title; + tone(notes[0], 0.22, "triangle", 0.9); + } + function loop() { + clearInterval(timer); + let i = 0; + timer = setInterval(() => { + if (!ctx) return; + const notes = patterns[track] || patterns.title; + tone(notes[i % notes.length], 0.28, track === "battle" ? "sawtooth" : "sine"); + if (track !== "battle") tone(notes[(i + 2) % notes.length] / 2, 0.7, "triangle", 0.45); + i += 1; + }, track === "battle" ? 230 : 520); + } + function tone(freq, dur, type, gainScale) { + const osc = ctx.createOscillator(); + const gain = ctx.createGain(); + osc.type = type; + osc.frequency.value = freq; + gain.gain.setValueAtTime(0, ctx.currentTime); + gain.gain.linearRampToValueAtTime(0.25 * (gainScale || 1), ctx.currentTime + 0.02); + gain.gain.exponentialRampToValueAtTime(0.001, ctx.currentTime + dur); + osc.connect(gain); + gain.connect(master); + osc.start(); + osc.stop(ctx.currentTime + dur + 0.03); + } + return { + start, + supported() { + return Boolean(window.AudioContext || window.webkitAudioContext); + }, + setTrack(next) { + track = next; + if (ctx && ctx.state === "suspended") ctx.resume(); + if (ctx) loop(); + if (ctx) tone((patterns[track] || patterns.title)[0], 0.16, track === "battle" ? "sawtooth" : "triangle", 0.65); + }, + sfx(kind) { + if (!ctx) return; + if (ctx.state === "suspended") ctx.resume(); + const map = { item: 660, talk: 440, battle: 130, hit: 180, listen: 523, forget: 96, hurt: 80 }; + tone(map[kind] || 330, kind === "forget" ? 0.8 : 0.18, kind === "forget" ? "sawtooth" : "square", kind === "hurt" ? 1.3 : 0.8); + } + }; + } + + function rects(sources) { + const set = new Set(); + sources.forEach(([x, y, w, h]) => { + for (let yy = y; yy < y + h; yy += 1) for (let xx = x; xx < x + w; xx += 1) set.add(`${xx},${yy}`); + }); + return set; + } + + function clamp(value, min, max) { + return Math.max(min, Math.min(max, value)); + } +})(); diff --git a/assets/scripts/pages/competency-status-board.js b/assets/scripts/pages/competency-status-board.js new file mode 100644 index 0000000..baf3db3 --- /dev/null +++ b/assets/scripts/pages/competency-status-board.js @@ -0,0 +1,240 @@ +const STATES = [ + { key: "completed", label: "Completed" }, + { key: "manager_review", label: "Manager Review" }, + { key: "in_progress", label: "In Progress" }, + { key: "not_started", label: "Not Started" }, + { key: "comments", label: "Comments" }, +]; + +const LEVELS = [ + { key: "graduate", label: "Graduate" }, + { key: "engineer", label: "Engineer" }, +]; + +let currentLevel = LEVELS[0].key; + +function isMobile() { + return window.matchMedia("(max-width: 600px)").matches; +} + +function renderLevelTabs() { + const board = document.getElementById("kanban-board"); + if (!board || document.getElementById("level-tabs")) return; + + const nav = document.createElement("div"); + nav.id = "level-tabs"; + + LEVELS.forEach(({ key, label }) => { + const btn = document.createElement("button"); + btn.textContent = label; + btn.dataset.level = key; + btn.className = "level-tab" + (key === currentLevel ? " active" : ""); + btn.addEventListener("click", () => { + currentLevel = key; + document.querySelectorAll(".level-tab").forEach(b => + b.classList.toggle("active", b.dataset.level === key) + ); + loadBoard(); + }); + nav.appendChild(btn); + }); + + board.insertAdjacentElement("beforebegin", nav); + + if (!document.getElementById("level-tab-styles")) { + const style = document.createElement("style"); + style.id = "level-tab-styles"; + style.textContent = ` + #level-tabs { + display: flex; + gap: 0.5em; + margin-bottom: 1em; + } + .level-tab { + padding: 0.4em 1.2em; + border: 1px solid #ccc; + background: none; + cursor: pointer; + border-radius: 4px; + font-size: 0.95em; + } + .level-tab.active { + background: #333; + color: #fff; + border-color: #333; + } + `; + document.head.appendChild(style); + } +} + +function populateMobileControls(items) { + if (!isMobile()) return; + + const panel = document.getElementById("mobile-move-panel"); + const itemSelect = document.getElementById("move-item"); + const fromSelect = document.getElementById("move-from"); + const toSelect = document.getElementById("move-to"); + + itemSelect.innerHTML = ""; + fromSelect.innerHTML = ""; + toSelect.innerHTML = ""; + + items.forEach((item) => { + const opt = document.createElement("option"); + opt.value = item.id; + opt.textContent = item.title; + opt.dataset.state = item.state; + itemSelect.appendChild(opt); + }); + + STATES.forEach((s) => { + fromSelect.appendChild(new Option(s.label, s.key)); + toSelect.appendChild(new Option(s.label, s.key)); + }); + + itemSelect.onchange = () => { + const selected = itemSelect.selectedOptions[0]; + if (selected?.dataset.state) { + fromSelect.value = selected.dataset.state; + } + }; +} + +const moveConfirmBtn = document.getElementById("move-confirm"); +if (moveConfirmBtn) { + moveConfirmBtn.addEventListener("click", async () => { + const itemId = document.getElementById("move-item").value; + const from = document.getElementById("move-from").value; + const to = document.getElementById("move-to").value; + + if (!itemId || !to) { + alert("Select an item and target column"); + return; + } + + if (from === to) { + alert("Item is already in that column"); + return; + } + + const res = await fetch(`/api/competencies/items/${itemId}/state`, { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ state: to }), + }); + + if (res.ok) { + loadBoard(); + } else { + alert("Failed to move competency"); + } + }); +} + +let draggedItemId = null; + +function countByState(items) { + return items.reduce((acc, item) => { + acc[item.state] = (acc[item.state] || 0) + 1; + return acc; + }, {}); +} + +async function updateProgress(items) { + const total = items.length; + const completed = items.filter(i => i.state === "completed").length; + const percent = total === 0 ? 0 : Math.round((completed / total) * 100); + + const fill = document.getElementById("progress-fill"); + const label = document.getElementById("progress-label"); + + if (fill) fill.style.width = `${percent}%`; + if (label) label.textContent = `${percent}% completed`; +} + +function createCard(item) { + const card = document.createElement("div"); + card.className = "kanban-card"; + card.draggable = true; + card.dataset.id = item.id; + card.textContent = item.title; + + card.addEventListener("dragstart", () => { + draggedItemId = item.id; + card.classList.add("dragging"); + }); + + card.addEventListener("dragend", () => { + draggedItemId = null; + card.classList.remove("dragging"); + }); + + return card; +} + +function createColumn(state, items, counts) { + const col = document.createElement("div"); + col.className = "kanban-column"; + col.dataset.state = state.key; + + const header = document.createElement("h3"); + header.innerHTML = ` + ${state.label} + ${counts[state.key] || 0} +`; + + const list = document.createElement("div"); + list.className = "kanban-list"; + + list.addEventListener("dragover", (e) => e.preventDefault()); + + list.addEventListener("drop", async () => { + if (!draggedItemId) return; + + const res = await fetch(`/api/competencies/items/${draggedItemId}/state`, { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ state: state.key }), + }); + + if (res.ok) { + loadBoard(); + } else { + alert("Failed to update state"); + } + }); + + items + .filter((i) => i.state === state.key) + .forEach((i) => list.appendChild(createCard(i))); + + col.appendChild(header); + col.appendChild(list); + + return col; +} + +function renderBoard(items) { + const board = document.getElementById("kanban-board"); + if (!board) return; + board.innerHTML = ""; + + const counts = countByState(items); + + STATES.forEach((state) => { + board.appendChild(createColumn(state, items, counts)); + }); +} + +async function loadBoard() { + const res = await fetch(`/api/competencies/items?group=${currentLevel}`); + const items = await res.json(); + + updateProgress(items); + renderBoard(items); + populateMobileControls(items); +} + +renderLevelTabs(); +loadBoard(); diff --git a/assets/scripts/pages/home-dashboard.js b/assets/scripts/pages/home-dashboard.js new file mode 100644 index 0000000..d636b68 --- /dev/null +++ b/assets/scripts/pages/home-dashboard.js @@ -0,0 +1,313 @@ +/* Home dashboard behaviour. All selectors are db-* scoped. */ + +(function () { + "use strict"; + + function updateGreeting() { + const el = document.getElementById("db-greeting"); + if (!el) return; + + const hour = new Date().getHours(); + if (hour < 5) el.textContent = "Late session"; + else if (hour < 12) el.textContent = "Good morning"; + else if (hour < 17) el.textContent = "Good afternoon"; + else if (hour < 21) el.textContent = "Good evening"; + else el.textContent = "Evening review"; + } + + function updateClock() { + const el = document.getElementById("db-clock"); + if (!el) return; + + el.textContent = new Intl.DateTimeFormat(undefined, { + hour: "2-digit", + minute: "2-digit", + second: "2-digit", + hour12: false, + }).format(new Date()); + } + + function getIsoWeek(date) { + const d = new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate())); + const dayNum = d.getUTCDay() || 7; + d.setUTCDate(d.getUTCDate() + 4 - dayNum); + const yearStart = new Date(Date.UTC(d.getUTCFullYear(), 0, 1)); + return Math.ceil(((d - yearStart) / 86400000 + 1) / 7); + } + + function updateStats() { + const now = new Date(); + const year = now.getFullYear(); + const start = new Date(year, 0, 1); + const nextYear = new Date(year + 1, 0, 1); + const dayOfYear = Math.floor((now - start) / 86400000) + 1; + const daysInYear = Math.round((nextYear - start) / 86400000); + const daysLeft = Math.max(0, daysInYear - dayOfYear); + const month = new Intl.DateTimeFormat(undefined, { month: "short" }).format(now); + const pct = ((dayOfYear / daysInYear) * 100).toFixed(1); + + setText("db-stat-day", dayOfYear); + setText("db-stat-week", "W" + getIsoWeek(now)); + setText("db-stat-month", month); + setText("db-stat-left", daysLeft); + setText("db-year-pct", pct + "%"); + + const fill = document.getElementById("db-year-fill"); + if (fill) fill.style.width = pct + "%"; + } + + function setText(id, value) { + const el = document.getElementById(id); + if (el) el.textContent = value; + } + + function escHtml(str) { + return String(str) + .replace(/&/g, "&") + .replace(//g, ">") + .replace(/"/g, """); + } + + function escAttr(str) { + return escHtml(str).replace(/'/g, "'"); + } + + function normaliseHref(href, prefix) { + if (!href || href.startsWith("http") || href.startsWith("#")) return null; + if (href.startsWith("/")) return href; + const base = (prefix || "").replace(/\/$/, ""); + if (!base || href.startsWith(base + "/")) return href; + return base + "/" + href; + } + + function isTagLink(a) { + const href = a.getAttribute("href") || ""; + return href.includes("/tags/") || Boolean(a.querySelector(".post-tag")); + } + + function extractLinks(doc, max, prefix) { + const items = []; + const seen = new Set(); + const links = doc.querySelectorAll("#content li a[href], .org-ul li a[href], ul li a[href]"); + + for (const a of links) { + if (isTagLink(a)) continue; + + const href = normaliseHref(a.getAttribute("href"), prefix); + const title = a.textContent.trim(); + if (!href || !title || seen.has(href)) continue; + + const li = a.closest("li"); + const dateMatch = li ? li.textContent.match(/\b\d{4}-\d{2}-\d{2}\b/) : null; + seen.add(href); + items.push({ href, title, date: dateMatch ? dateMatch[0] : null }); + if (items.length >= max) break; + } + + return items; + } + + function renderFeed(ulId, items) { + const ul = document.getElementById(ulId); + if (!ul || !items.length) return; + + ul.innerHTML = items + .map(({ href, title, date }) => ( + `
  • ` + + `` + + `${escHtml(title)}` + + (date ? `${escHtml(date)}` : "") + + `
  • ` + )) + .join(""); + } + + async function loadFeed(listUrl, ulId, max, prefix) { + try { + const resp = await fetch(listUrl, { credentials: "same-origin" }); + if (!resp.ok) return; + + const html = await resp.text(); + const doc = new DOMParser().parseFromString(html, "text/html"); + renderFeed(ulId, extractLinks(doc, max, prefix)); + } catch (_) { + /* Fallback links remain in the HTML. */ + } + } + + function commentSlug(comment) { + return comment.pageSlug || comment.page_slug || ""; + } + + function commentDate(comment) { + return comment.created_at || comment.createdAt || ""; + } + + function commentHref(page, comment) { + if (!page?.url) return null; + if (!comment.id) return page.url + "#comments"; + return page.url + "#comment-" + encodeURIComponent(comment.id); + } + + function formatCommentDate(value) { + const date = new Date(value); + if (Number.isNaN(date.getTime())) return ""; + + return new Intl.DateTimeFormat(undefined, { + month: "short", + day: "2-digit", + hour: "2-digit", + minute: "2-digit", + }).format(date); + } + + function commentExcerpt(content) { + const text = String(content || "").replace(/\s+/g, " ").trim(); + if (text.length <= 150) return text; + return text.slice(0, 147).trimEnd() + "..."; + } + + function renderRecentComments(comments, pageMap) { + const ul = document.getElementById("db-feed-comments"); + if (!ul) return; + + if (!comments.length) { + ul.innerHTML = ( + `
  • ` + + `` + + `
    ` + + `No comments yet.` + + `
    ` + + `
  • ` + ); + return; + } + + ul.innerHTML = comments.map((comment) => { + const slug = commentSlug(comment); + const page = pageMap.get(slug); + const title = page?.title || slug || "Unknown page"; + const href = commentHref(page, comment); + const author = comment.author || "Anonymous"; + const date = formatCommentDate(commentDate(comment)); + const pageLink = href + ? `${escHtml(title)}` + : `${escHtml(title)}`; + + return ( + `
  • ` + + `` + + `
    ` + + `
    ` + + `${escHtml(author)}` + + `on` + + pageLink + + (date ? `` : "") + + `
    ` + + `

    ${escHtml(commentExcerpt(comment.content))}

    ` + + `
    ` + + `
  • ` + ); + }).join(""); + } + + async function loadCommentPageMap() { + try { + const resp = await fetch("/assets/content/comment-pages.json", { credentials: "same-origin" }); + if (!resp.ok) return new Map(); + + const pages = await resp.json(); + return new Map( + pages + .filter((page) => page.slug && page.url) + .map((page) => [page.slug, page]) + ); + } catch (_) { + return new Map(); + } + } + + async function loadRecentComments() { + const ul = document.getElementById("db-feed-comments"); + if (!ul) return; + + const renderUnavailable = () => { + ul.innerHTML = ( + `
  • ` + + `` + + `
    ` + + `Recent comments are unavailable.` + + `
    ` + + `
  • ` + ); + }; + + try { + const [pageMap, resp] = await Promise.all([ + loadCommentPageMap(), + fetch("/api/comments", { credentials: "same-origin" }), + ]); + if (!resp.ok) { + renderUnavailable(); + return; + } + + const comments = await resp.json(); + const recent = comments + .filter((comment) => commentDate(comment)) + .sort((a, b) => new Date(commentDate(b)) - new Date(commentDate(a))) + .slice(0, 10); + + renderRecentComments(recent, pageMap); + } catch (_) { + renderUnavailable(); + } + } + + function initCommandFilter() { + const input = document.getElementById("db-command-search"); + const nav = document.getElementById("db-quicknav"); + if (!input || !nav) return; + + const items = Array.from(nav.querySelectorAll(".db-qn-item")); + const applyFilter = () => { + const query = input.value.trim().toLowerCase(); + items.forEach((item) => { + const haystack = [ + item.textContent, + item.getAttribute("href"), + item.dataset.keywords, + ].join(" ").toLowerCase(); + item.classList.toggle("is-hidden", Boolean(query && !haystack.includes(query))); + }); + }; + + input.addEventListener("input", applyFilter); + document.addEventListener("keydown", (event) => { + if (event.key === "/" && !/^(input|textarea|select)$/i.test(event.target.tagName)) { + event.preventDefault(); + input.focus(); + } + }); + } + + function init() { + updateGreeting(); + updateClock(); + updateStats(); + initCommandFilter(); + + setInterval(updateClock, 1000); + loadFeed("/blogs/blogs-list.html", "db-feed-blogs", 6, "/blogs"); + loadFeed("/posts/posts-list.html", "db-feed-posts", 6, "/posts"); + loadFeed("/recently-updated.html", "db-feed-recent", 6, ""); + loadRecentComments(); + } + + if (document.readyState === "loading") { + document.addEventListener("DOMContentLoaded", init); + } else { + init(); + } +})(); diff --git a/assets/scripts/pages/notes.js b/assets/scripts/pages/notes.js new file mode 100644 index 0000000..3496ef4 --- /dev/null +++ b/assets/scripts/pages/notes.js @@ -0,0 +1,148 @@ +(function () { + const wall = document.getElementById("notes-wall"); + const form = document.getElementById("notes-form"); + const authorInput = document.getElementById("note-author"); + const contentInput = document.getElementById("note-content"); + const authorFilter = document.getElementById("notes-author-filter"); + let notesCache = []; + + if (!wall) return; + + function escapeHtml(str) { + return str + .replace(/&/g, "&") + .replace(//g, ">") + .replace(/"/g, """) + .replace(/'/g, "'"); + } + + function renderNote(note) { + const el = document.createElement("div"); + el.className = "note"; + + el.innerHTML = ` +
    + ${escapeHtml(note.author_name)} + +
    +
    + ${escapeHtml(note.content).replace(/\n/g, "
    ")} +
    + `; + + return el; + } + + function normaliseAuthor(author) { + return (author || "").trim(); + } + + function populateAuthorFilter(notes) { + if (!authorFilter) return; + + const previousValue = authorFilter.value; + const authors = Array.from( + new Set(notes.map(note => normaliseAuthor(note.author_name)).filter(Boolean)) + ).sort((a, b) => a.localeCompare(b, undefined, { sensitivity: "base" })); + + authorFilter.innerHTML = ''; + + authors.forEach(author => { + const option = document.createElement("option"); + option.value = author; + option.textContent = author; + authorFilter.appendChild(option); + }); + + authorFilter.value = authors.includes(previousValue) ? previousValue : ""; + } + + function renderNotes() { + wall.innerHTML = ""; + + const selectedAuthor = authorFilter ? authorFilter.value : ""; + const notes = selectedAuthor + ? notesCache.filter(note => normaliseAuthor(note.author_name) === selectedAuthor) + : notesCache; + + if (notesCache.length === 0) { + wall.innerHTML = "

    No notes yet.

    "; + return; + } + + if (notes.length === 0) { + wall.innerHTML = "

    No notes for this author.

    "; + return; + } + + notes.forEach(note => { + wall.appendChild(renderNote(note)); + }); + } + + async function loadNotes() { + wall.innerHTML = "

    Loading notes…

    "; + + try { + const res = await fetch("/api/notes"); + if (!res.ok) throw new Error("Failed to fetch notes"); + + const notes = await res.json(); + notesCache = notes; + populateAuthorFilter(notesCache); + renderNotes(); + } catch (err) { + console.error(err); + wall.innerHTML = "

    Could not load notes.

    "; + } + } + + async function submitNote(e) { + e.preventDefault(); + + const author = authorInput.value.trim(); + const content = contentInput.value.trim(); + + if (!author || !content) return; + + form.querySelector("button").disabled = true; + + try { + const res = await fetch("/api/notes", { + method: "POST", + headers: { + "Content-Type": "application/json", + }, + body: JSON.stringify({ + author_name: author, + content: content, + }), + }); + + if (!res.ok) { + const err = await res.json(); + throw new Error(err.detail || "Failed to post note"); + } + + contentInput.value = ""; + await loadNotes(); + } catch (err) { + alert(err.message); + } finally { + form.querySelector("button").disabled = false; + } + } + + if (form) { + form.addEventListener("submit", submitNote); + } + + if (authorFilter) { + authorFilter.addEventListener("change", renderNotes); + } + + loadNotes(); +})(); diff --git a/assets/scripts/pages/play.js b/assets/scripts/pages/play.js new file mode 100644 index 0000000..90b15b1 --- /dev/null +++ b/assets/scripts/pages/play.js @@ -0,0 +1,866 @@ +(function () { + const $ = (sel, root = document) => root.querySelector(sel); + const $$ = (sel, root = document) => Array.from(root.querySelectorAll(sel)); + const shuffle = (items) => items.map((value) => ({ value, sort: Math.random() })).sort((a, b) => a.sort - b.sort).map((item) => item.value); + const quips = [ + "A margin note blinks, then pretends it did not.", + "Somewhere, a bookmark changes its mind.", + "The archive is pleased by unnecessary curiosity.", + "A tiny bell rings in a room you have not built yet.", + "The page remembers that you came here." + ]; + + document.addEventListener("DOMContentLoaded", () => { + const root = $(".play-root[data-play-page]"); + if (!root) return; + const page = root.dataset.playPage; + const inits = { hub, memory, constellation, poem, bookshelf, recipe, timeline, ink, terminal, study, sigil, rpg }; + if (inits[page]) inits[page](root); + }); + + function hub(root) { + const links = $$(".play-grid a", root); + const nodes = $$(".play-orbit__node", root); + const title = $("#play-hub-title", root); + const kind = $("#play-hub-kind", root); + const desc = $("#play-hub-desc", root); + const cta = $("#play-hub-link", root); + const whisper = document.createElement("p"); + let active = 0; + + whisper.className = "play-whisper"; + whisper.setAttribute("aria-live", "polite"); + $(".play-console__screen", root).appendChild(whisper); + + nodes.forEach((node, index) => { + const angle = (index / nodes.length) * Math.PI * 2 - Math.PI / 2; + node.style.left = `${50 + Math.cos(angle) * 43}%`; + node.style.top = `${50 + Math.sin(angle) * 43}%`; + node.addEventListener("click", () => setActive(index)); + }); + + function setActive(index) { + active = (index + links.length) % links.length; + const link = links[active]; + links.forEach((item, i) => item.classList.toggle("is-active", i === active)); + nodes.forEach((item, i) => item.classList.toggle("is-active", i === active)); + title.textContent = link.querySelector("strong").textContent; + kind.textContent = link.dataset.kind; + desc.textContent = link.dataset.desc; + cta.href = link.href; + whisper.textContent = quips[active % quips.length]; + } + + links.forEach((link, index) => { + link.addEventListener("mouseenter", () => setActive(index)); + link.addEventListener("focus", () => setActive(index)); + }); + $("[data-play-prev]", root).addEventListener("click", () => setActive(active - 1)); + $("[data-play-next]", root).addEventListener("click", () => setActive(active + 1)); + $("[data-play-random]", root).addEventListener("click", () => setActive(Math.floor(Math.random() * links.length))); + $(".play-orbit", root).addEventListener("dblclick", () => { + whisper.textContent = "You knocked twice. The cabinet knocked once back."; + root.classList.toggle("is-odd"); + }); + root.addEventListener("keydown", (event) => { + if (event.key === "ArrowLeft") setActive(active - 1); + if (event.key === "ArrowRight") setActive(active + 1); + }); + setActive(0); + } + + function memory(root) { + const symbols = ["Ink", "Lamp", "Tea", "Book", "Map", "Key"]; + const board = $("[data-memory-board]", root); + const turnsEl = $("[data-memory-turns]", root); + const matchesEl = $("[data-memory-matches]", root); + const messageEl = $("[data-memory-message]", root); + let open = []; + let turns = 0; + let matches = 0; + let deck = []; + + function render() { + board.innerHTML = ""; + open = []; + turns = 0; + matches = 0; + deck = shuffle([...symbols, ...symbols]); + turnsEl.textContent = "0"; + matchesEl.textContent = "0"; + messageEl.textContent = "Cards are shuffled."; + deck.forEach((symbol, index) => { + const card = document.createElement("button"); + card.type = "button"; + card.className = "memory-card"; + card.dataset.symbol = symbol; + card.textContent = "?"; + card.style.setProperty("--tilt", `${(index % 5) - 2}deg`); + card.setAttribute("aria-label", "Hidden card"); + card.addEventListener("click", () => flip(card)); + board.appendChild(card); + }); + } + + function flip(card) { + if (card.classList.contains("is-open") || card.classList.contains("is-matched") || open.length === 2) return; + card.classList.add("is-open"); + card.textContent = card.dataset.symbol; + card.setAttribute("aria-label", card.dataset.symbol); + open.push(card); + if (open.length !== 2) return; + turns += 1; + turnsEl.textContent = String(turns); + const [a, b] = open; + if (a.dataset.symbol === b.dataset.symbol) { + a.classList.add("is-matched"); + b.classList.add("is-matched"); + open = []; + matches += 1; + matchesEl.textContent = String(matches); + messageEl.textContent = matches === symbols.length ? `Cabinet solved in ${turns} turns.` : "A drawer clicks open."; + } else { + messageEl.textContent = "No match. The cabinet quietly re-files them."; + setTimeout(() => { + a.classList.remove("is-open"); + b.classList.remove("is-open"); + a.textContent = "?"; + b.textContent = "?"; + a.setAttribute("aria-label", "Hidden card"); + b.setAttribute("aria-label", "Hidden card"); + open = []; + }, 650); + } + } + + $("[data-memory-reset]", root).addEventListener("click", render); + $("[data-memory-peek]", root).addEventListener("click", () => { + const hidden = $$(".memory-card:not(.is-open):not(.is-matched)", root); + hidden.forEach((card) => { + card.textContent = card.dataset.symbol; + card.classList.add("is-peeking"); + }); + messageEl.textContent = "A very brief lapse in scholarly discipline."; + setTimeout(() => { + hidden.forEach((card) => { + if (!card.classList.contains("is-open") && !card.classList.contains("is-matched")) card.textContent = "?"; + card.classList.remove("is-peeking"); + }); + }, 900); + }); + render(); + } + + function constellation(root) { + const canvas = $("[data-star-canvas]", root); + const ctx = canvas.getContext("2d"); + const linesEl = $("[data-star-lines]", root); + const nameEl = document.createElement("strong"); + const stars = Array.from({ length: 18 }, () => ({ x: 50 + Math.random() * 800, y: 45 + Math.random() * 430 })); + const lines = []; + let selected = null; + nameEl.className = "play-live-note"; + linesEl.closest(".play-scorebar").appendChild(nameEl); + + function draw() { + ctx.clearRect(0, 0, canvas.width, canvas.height); + ctx.fillStyle = "#18130f"; + ctx.fillRect(0, 0, canvas.width, canvas.height); + ctx.strokeStyle = "rgba(219, 184, 104, 0.65)"; + ctx.lineWidth = 2; + lines.forEach(([a, b]) => { + ctx.beginPath(); + ctx.moveTo(stars[a].x, stars[a].y); + ctx.lineTo(stars[b].x, stars[b].y); + ctx.stroke(); + }); + stars.forEach((star, index) => { + ctx.beginPath(); + ctx.fillStyle = index === selected ? "#f6d889" : "#fff8e8"; + ctx.arc(star.x, star.y, index === selected ? 7 : 4, 0, Math.PI * 2); + ctx.fill(); + }); + linesEl.textContent = String(lines.length); + if (lines.length >= 3) nameEl.textContent = `Named: ${pick(["The Patient Spoon", "The South Window", "The Tired Comet", "The Fifth Errand"])}`; + } + + canvas.addEventListener("click", (event) => { + const rect = canvas.getBoundingClientRect(); + const x = ((event.clientX - rect.left) / rect.width) * canvas.width; + const y = ((event.clientY - rect.top) / rect.height) * canvas.height; + const hit = stars.findIndex((star) => Math.hypot(star.x - x, star.y - y) < 22); + if (hit < 0) return; + if (selected === null) selected = hit; + else if (selected !== hit) { + lines.push([selected, hit]); + selected = hit; + } + draw(); + }); + $("[data-star-reset]", root).addEventListener("click", () => { + lines.length = 0; + selected = null; + nameEl.textContent = ""; + draw(); + }); + draw(); + } + + function poem(root) { + const output = $("[data-poem-output]", root); + const a = ["In the margin", "By the kettle", "Under the desk lamp", "Between two errands", "After the house quiets"]; + const b = ["a careful thought", "an old joke", "a stubborn question", "a useful mistake", "a bright scrap"]; + const c = ["learns to wait.", "asks for a second reading.", "finds its proper shelf.", "becomes tomorrow's note.", "keeps the page warm."]; + let count = 0; + function make() { + count += 1; + output.innerHTML = `${pick(a)}
    ${pick(b)}
    ${pick(c)}`; + output.dataset.stamp = count % 5 === 0 ? "approved by the margin" : ""; + } + $("[data-poem-generate]", root).addEventListener("click", make); + make(); + } + + function bookshelf(root) { + const titles = ["Algebra at Breakfast", "Cabinet of Weather", "Domestic Orbits", "Evening Margins", "Household Engines", "Zettels and Tea"]; + const shelf = $("[data-bookshelf]", root); + const status = $("[data-bookshelf-status]", root); + let sortedOnce = false; + setupSortable(shelf, render, check); + $("[data-bookshelf-shuffle]", root).addEventListener("click", () => render(shuffle(titles))); + render(shuffle(titles)); + + function render(items) { + shelf.innerHTML = ""; + items.forEach((title) => { + const book = document.createElement("div"); + book.className = "book-spine"; + book.draggable = true; + book.dataset.value = title; + book.textContent = title; + shelf.appendChild(book); + }); + check(); + } + function check() { + const current = $$(".book-spine", shelf).map((book) => book.dataset.value); + const sorted = current.join("|") === titles.join("|"); + status.textContent = sorted ? "Shelf sorted. A secret pamphlet slides out." : "Unsorted"; + if (sorted && !sortedOnce) { + sortedOnce = true; + const pamphlet = document.createElement("div"); + pamphlet.className = "booklet"; + pamphlet.textContent = "Pamphlet: On the Correct Order of Small Things"; + shelf.appendChild(pamphlet); + } + } + } + + function recipe(root) { + const wheel = $("[data-recipe-spin]", root); + const result = $("[data-recipe-result]", root); + const groups = [ + ["Rice", "Flatbread", "Roast potatoes", "Noodles"], + ["Lemon chicken", "Spiced lentils", "Tomato eggs", "Pepper stew"], + ["Cucumber salad", "Mint yoghurt", "Pickled onions", "Charred greens"], + ["Serve with stories", "Eat outside", "Use the blue plates", "Make extra tea"] + ]; + let spin = 0; + let feast = 0; + wheel.addEventListener("click", () => { + spin += 540 + Math.floor(Math.random() * 540); + feast += 1; + wheel.style.transform = `rotate(${spin}deg)`; + result.innerHTML = groups.map((group) => `
  • ${pick(group)}
  • `).join("") + (feast % 4 === 0 ? "
  • Bonus: someone gets the last crispy bit.
  • " : ""); + }); + wheel.click(); + } + + function timeline(root) { + const items = [ + { year: "2022", text: "The personal web habit begins." }, + { year: "2025", text: "Org publishing becomes the main site engine." }, + { year: "2025", text: "Weekly reviews and career notes grow into a library." }, + { year: "2026", text: "Dashboards, services, and authoring tools join the site." }, + { year: "2026", text: "The play wing opens." } + ]; + const list = $("[data-timeline-list]", root); + const status = $("[data-timeline-status]", root); + const paradox = document.createElement("button"); + paradox.type = "button"; + paradox.textContent = "Paradox"; + $("[data-timeline-shuffle]", root).insertAdjacentElement("afterend", paradox); + setupSortable(list, render, check); + $("[data-timeline-shuffle]", root).addEventListener("click", () => render(shuffle(items))); + paradox.addEventListener("click", () => render([...items].reverse())); + render(shuffle(items)); + + function render(source) { + list.innerHTML = ""; + source.forEach((item, index) => { + const card = document.createElement("div"); + card.className = "timeline-card"; + card.draggable = true; + card.dataset.value = String(items.indexOf(item)); + card.innerHTML = `${item.year}${item.text}`; + list.appendChild(card); + }); + check(); + } + function check() { + const current = $$(".timeline-card", list).map((card) => Number(card.dataset.value)); + status.textContent = current.every((value, index) => value === index) ? "Timeline restored" : "Arrange the cards"; + } + } + + function ink(root) { + const canvas = $("[data-ink-canvas]", root); + const ctx = canvas.getContext("2d"); + const drops = []; + let moon = false; + function addDrop(x, y, heavy) { + drops.push({ x, y, r: heavy ? 18 : 8, life: heavy ? 1.8 : 1, hue: 28 + Math.random() * 35 }); + } + function pointer(event, heavy) { + const rect = canvas.getBoundingClientRect(); + addDrop(((event.clientX - rect.left) / rect.width) * canvas.width, ((event.clientY - rect.top) / rect.height) * canvas.height, heavy); + } + canvas.addEventListener("pointermove", (event) => pointer(event, false)); + canvas.addEventListener("click", (event) => pointer(event, true)); + canvas.addEventListener("dblclick", () => { + moon = !moon; + }); + function frame() { + ctx.fillStyle = "rgba(24, 19, 15, 0.16)"; + ctx.fillRect(0, 0, canvas.width, canvas.height); + if (moon) { + ctx.beginPath(); + ctx.fillStyle = "rgba(246, 216, 137, 0.72)"; + ctx.arc(760, 88, 34, 0, Math.PI * 2); + ctx.fill(); + } + drops.forEach((drop) => { + drop.r += 0.7; + drop.life -= 0.012; + ctx.beginPath(); + ctx.strokeStyle = `hsla(${drop.hue}, 65%, 68%, ${Math.max(drop.life, 0)})`; + ctx.lineWidth = 2; + ctx.arc(drop.x, drop.y, drop.r, 0, Math.PI * 2); + ctx.stroke(); + }); + for (let i = drops.length - 1; i >= 0; i -= 1) if (drops[i].life <= 0) drops.splice(i, 1); + requestAnimationFrame(frame); + } + frame(); + } + + function terminal(root) { + const log = $("[data-terminal-log]", root); + const form = $("[data-terminal-form]", root); + const input = $("[data-terminal-input]", root); + let kindness = 0; + const responses = { + help: "Commands: help, look, map, open drawer, read note, brew tea, hum, knock, save, inventory, clear", + look: "A narrow archive room. A lamp hums. A drawer is labelled MAYBE IMPORTANT.", + map: "You are between the reading desk, the family shelf, and the door back to Play.", + "open drawer": "Inside: a brass key, a receipt, and a note folded twice.", + "read note": "The note says: keep the site useful, but leave a few doors ajar.", + "brew tea": "The room smells briefly of cardamom. Nothing else changes, which is enough.", + hum: "You hum four careful notes. Something behind the wall hums five back.", + knock: "Knock. Knock. ... A polite pause. Knock.", + save: "You save your place in the archive. The archive saves its place in you.", + inventory: "You are carrying: a brass key, a warm cup, and one unreasonable hope." + }; + function write(text) { + log.textContent += `${text}\n`; + log.scrollTop = log.scrollHeight; + } + form.addEventListener("submit", (event) => { + event.preventDefault(); + const cmd = input.value.trim().toLowerCase(); + if (!cmd) return; + input.value = ""; + if (cmd === "clear") { + log.textContent = ""; + return; + } + write(`> ${cmd}`); + if (cmd === "pet book") { + kindness += 1; + write(kindness > 2 ? "The book follows you for exactly three pages." : "The book accepts this with suspicious dignity."); + } else { + write(responses[cmd] || "The archive declines to understand that command."); + } + }); + write("Archive terminal ready. Type help. The cursor is listening."); + input.focus(); + } + + function study(root) { + const time = $("[data-study-time]", root); + const scene = $("[data-study-scene]", root); + let total = 300; + let left = total; + let timer = null; + const note = document.createElement("div"); + note.className = "play-live-note"; + note.textContent = "The lamp is cold."; + time.insertAdjacentElement("afterend", note); + function draw() { + const done = 1 - left / total; + scene.style.setProperty("--lamp", String(0.18 + done * 0.72)); + scene.style.setProperty("--glow", `${done * 70}px`); + const m = String(Math.floor(left / 60)).padStart(2, "0"); + const s = String(left % 60).padStart(2, "0"); + time.textContent = `${m}:${s}`; + if (left === 0) note.textContent = "Focus complete. The desk looks proud."; + else if (done > 0.66) note.textContent = "The page has warmed through."; + else if (done > 0.33) note.textContent = "The lamp has settled into its work."; + } + function start() { + if (timer) return; + timer = setInterval(() => { + left = Math.max(0, left - 1); + draw(); + if (left === 0) pause(); + }, 1000); + } + function pause() { + clearInterval(timer); + timer = null; + } + $("[data-study-start]", root).addEventListener("click", start); + $("[data-study-pause]", root).addEventListener("click", pause); + $("[data-study-reset]", root).addEventListener("click", () => { + pause(); + left = total; + draw(); + }); + draw(); + } + + function sigil(root) { + const canvas = $("[data-sigil-canvas]", root); + const ctx = canvas.getContext("2d"); + const initials = $("[data-sigil-initials]", root); + const motto = $("[data-sigil-motto]", root); + let wax = "#9c6b2f"; + const waxButton = document.createElement("button"); + waxButton.type = "button"; + waxButton.textContent = "New wax"; + $("[data-sigil-form]", root).appendChild(waxButton); + function draw() { + const text = (initials.value || "ZXH").toUpperCase(); + const phrase = motto.value || "Learn, make, remember"; + ctx.clearRect(0, 0, canvas.width, canvas.height); + ctx.fillStyle = "#fbf7ec"; + ctx.fillRect(0, 0, canvas.width, canvas.height); + ctx.translate(260, 260); + ctx.strokeStyle = wax; + ctx.lineWidth = 10; + ctx.beginPath(); + ctx.arc(0, 0, 190, 0, Math.PI * 2); + ctx.stroke(); + ctx.lineWidth = 2; + for (let i = 0; i < 12; i += 1) { + ctx.rotate(Math.PI / 6); + ctx.beginPath(); + ctx.moveTo(0, -150); + ctx.lineTo(0, -185); + ctx.stroke(); + } + ctx.rotate(-Math.PI * 2); + ctx.fillStyle = "#2a2118"; + ctx.textAlign = "center"; + ctx.textBaseline = "middle"; + ctx.font = "900 94px Georgia, serif"; + ctx.fillText(text.slice(0, 4), 0, -10); + ctx.font = "700 22px Georgia, serif"; + ctx.fillText(phrase.slice(0, 34), 0, 88); + ctx.setTransform(1, 0, 0, 1, 0, 0); + } + waxButton.addEventListener("click", () => { + wax = pick(["#9c6b2f", "#8a3f3f", "#486b57", "#3e5f8a", "#5f4b8b"]); + draw(); + }); + $("[data-sigil-form]", root).addEventListener("submit", (event) => { + event.preventDefault(); + draw(); + }); + initials.addEventListener("input", draw); + motto.addEventListener("input", draw); + draw(); + } + + function rpg(root) { + if (window.AshBelowLakeRpg) return window.AshBelowLakeRpg(root); + const canvas = $("[data-rpg-canvas]", root); + const ctx = canvas.getContext("2d"); + const els = { + speaker: $("[data-rpg-speaker]", root), + line: $("[data-rpg-line]", root), + room: $("[data-rpg-room]", root), + route: $("[data-rpg-route]", root), + hearts: $("[data-rpg-hearts]", root), + quests: $("[data-rpg-quests]", root), + inventory: $("[data-rpg-inventory]", root), + status: $("[data-rpg-status]", root) + }; + const tile = 32; + const saveSlot = "hollow-archive"; + const fallbackKey = "play:rpg:hollow-archive"; + const items = { + lamp: { label: "Desk Lamp", room: "entrance", x: 10, y: 8, color: "#f2c94c" }, + page: { label: "Loose Page", room: "stacks", x: 18, y: 5, color: "#f7efe0" }, + key: { label: "Basement Key", room: "garden", x: 4, y: 11, color: "#d59b45" } + }; + const npcs = { + archivist: { name: "Archivist", room: "entrance", x: 6, y: 6, color: "#b98bff" }, + shade: { name: "Shy Shade", room: "stacks", x: 17, y: 9, color: "#6ed0d4" }, + gate: { name: "Iron Door", room: "garden", x: 19, y: 10, color: "#8a8f98" } + }; + const rooms = { + entrance: { + name: "Entrance", + floor: "#353029", + exits: [{ x: 22, y: 7, to: "stacks", px: 1, py: 7 }], + walls: rects([[0, 0, 24, 1], [0, 15, 24, 1], [0, 0, 1, 16], [23, 0, 1, 6], [23, 9, 1, 7], [8, 3, 1, 8], [14, 7, 5, 1]]) + }, + stacks: { + name: "Stacks", + floor: "#242d35", + exits: [{ x: 0, y: 7, to: "entrance", px: 22, py: 7 }, { x: 23, y: 12, to: "garden", px: 1, py: 12 }], + walls: rects([[0, 0, 24, 1], [0, 15, 24, 1], [0, 0, 1, 6], [0, 9, 1, 7], [23, 0, 1, 11], [23, 14, 1, 2], [4, 3, 2, 10], [10, 2, 2, 11], [16, 3, 2, 5]]) + }, + garden: { + name: "Moon Garden", + floor: "#21362e", + exits: [{ x: 0, y: 12, to: "stacks", px: 22, py: 12 }], + walls: rects([[0, 0, 24, 1], [0, 15, 24, 1], [0, 0, 1, 11], [0, 14, 1, 2], [23, 0, 1, 16], [7, 4, 10, 1], [7, 10, 1, 4], [13, 10, 1, 4]]) + } + }; + let state = freshState(); + let running = false; + + function freshState() { + return { + room: "entrance", + player: { x: 3, y: 7, facing: "down" }, + inventory: [], + flags: {}, + route: "Undecided", + hearts: 3, + ending: null, + message: { speaker: "Archivist", line: "The archive waits. Find the lamp, help the shade, then decide what to do with the locked door." } + }; + } + + function rects(sources) { + const set = new Set(); + sources.forEach(([x, y, w, h]) => { + for (let yy = y; yy < y + h; yy += 1) for (let xx = x; xx < x + w; xx += 1) set.add(`${xx},${yy}`); + }); + return set; + } + + function draw() { + const room = rooms[state.room]; + ctx.fillStyle = "#14110e"; + ctx.fillRect(0, 0, canvas.width, canvas.height); + for (let y = 0; y < 16; y += 1) { + for (let x = 0; x < 24; x += 1) { + ctx.fillStyle = room.walls.has(`${x},${y}`) ? "#181716" : room.floor; + ctx.fillRect(x * tile, y * tile, tile, tile); + ctx.strokeStyle = "rgba(255,255,255,0.035)"; + ctx.strokeRect(x * tile, y * tile, tile, tile); + } + } + room.exits.forEach((exit) => drawGlyph(exit.x, exit.y, "#c48a41", "door")); + Object.entries(items).forEach(([id, item]) => { + if (item.room === state.room && !state.inventory.includes(id)) drawGlyph(item.x, item.y, item.color, "item"); + }); + Object.values(npcs).forEach((npc) => { + if (npc.room === state.room) drawGlyph(npc.x, npc.y, npc.color, npc.name === "Iron Door" ? "doorNpc" : "npc"); + }); + drawPlayer(); + renderHud(); + requestAnimationFrame(draw); + } + + function drawGlyph(x, y, color, kind) { + const px = x * tile; + const py = y * tile; + ctx.fillStyle = color; + if (kind === "item") { + ctx.fillRect(px + 10, py + 10, 12, 12); + ctx.fillStyle = "rgba(255,255,255,0.45)"; + ctx.fillRect(px + 13, py + 7, 6, 6); + } else if (kind === "door" || kind === "doorNpc") { + ctx.fillRect(px + 7, py + 4, 18, 25); + ctx.fillStyle = "#211812"; + ctx.fillRect(px + 20, py + 16, 3, 3); + } else { + ctx.beginPath(); + ctx.arc(px + 16, py + 12, 9, 0, Math.PI * 2); + ctx.fill(); + ctx.fillRect(px + 8, py + 20, 16, 8); + } + } + + function drawPlayer() { + const px = state.player.x * tile; + const py = state.player.y * tile; + ctx.fillStyle = "#f35f5f"; + ctx.beginPath(); + ctx.moveTo(px + 16, py + 7); + ctx.bezierCurveTo(px + 2, py + 2, px + 1, py + 22, px + 16, py + 28); + ctx.bezierCurveTo(px + 31, py + 22, px + 30, py + 2, px + 16, py + 7); + ctx.fill(); + ctx.fillStyle = "#fff8e8"; + ctx.fillRect(px + 11, py + 13, 4, 4); + ctx.fillRect(px + 18, py + 13, 4, 4); + } + + function renderHud() { + els.speaker.textContent = state.message.speaker; + els.line.textContent = state.ending ? endingLine() : state.message.line; + els.room.textContent = rooms[state.room].name; + els.route.textContent = state.route; + els.hearts.textContent = String(state.hearts); + els.inventory.innerHTML = state.inventory.length + ? state.inventory.map((id) => `
  • ${items[id].label}
  • `).join("") + : "
  • Empty
  • "; + const questRows = [ + ["Find a light", state.inventory.includes("lamp")], + ["Return the loose page to the shade", state.flags.shadeHelped], + ["Open, force, or leave the iron door", Boolean(state.ending)] + ]; + els.quests.innerHTML = questRows.map(([text, done]) => `
  • ${done ? "Done: " : ""}${text}
  • `).join(""); + } + + function move(dx, dy, facing) { + if (!running || state.ending) return; + state.player.facing = facing; + const nx = state.player.x + dx; + const ny = state.player.y + dy; + const room = rooms[state.room]; + const exit = room.exits.find((candidate) => candidate.x === nx && candidate.y === ny); + if (exit) { + state.room = exit.to; + state.player.x = exit.px; + state.player.y = exit.py; + say("Narrator", `You enter ${rooms[state.room].name}.`); + autosave(); + return; + } + if (nx < 0 || ny < 0 || nx > 23 || ny > 15 || room.walls.has(`${nx},${ny}`) || npcAt(nx, ny)) return; + state.player.x = nx; + state.player.y = ny; + const item = itemAt(nx, ny); + if (item) take(item); + } + + function act() { + if (!running) return start(); + if (state.ending) return; + const front = inFront(); + const npc = npcAt(front.x, front.y); + if (npc) talk(npc); + else { + const here = itemAt(state.player.x, state.player.y); + if (here) take(here); + else say("Narrator", "Dust moves in the light. Nothing asks to be changed here."); + } + autosave(); + } + + function inFront() { + const delta = { up: [0, -1], down: [0, 1], left: [-1, 0], right: [1, 0] }[state.player.facing] || [0, 1]; + return { x: state.player.x + delta[0], y: state.player.y + delta[1] }; + } + + function itemAt(x, y) { + return Object.keys(items).find((id) => { + const item = items[id]; + return item.room === state.room && item.x === x && item.y === y && !state.inventory.includes(id); + }); + } + + function npcAt(x, y) { + return Object.keys(npcs).find((id) => { + const npc = npcs[id]; + return npc.room === state.room && npc.x === x && npc.y === y; + }); + } + + function take(id) { + state.inventory.push(id); + if (id === "lamp") state.route = "Gentle"; + if (id === "key" && !state.flags.shadeHelped) state.route = "Power"; + say("Found", `${items[id].label} joined your inventory.`); + } + + function talk(id) { + if (id === "archivist") { + if (!state.inventory.includes("lamp")) say("Archivist", "Take the lamp from the lower desk. The stacks dislike being crossed in the dark."); + else if (!state.flags.shadeHelped) say("Archivist", "A loose page has gone missing. The quiet reader in the stacks knows where it belongs."); + else say("Archivist", "You have been kind to a forgotten page. The garden door will remember that."); + } + if (id === "shade") { + if (!state.inventory.includes("page")) say("Shy Shade", "I lost the page with my name on it. It fell somewhere nearby."); + else { + state.flags.shadeHelped = true; + state.inventory = state.inventory.filter((item) => item !== "page"); + state.route = "Mercy"; + say("Shy Shade", "You returned my page instead of keeping it. Take the honest route through the garden."); + } + } + if (id === "gate") { + if (state.flags.shadeHelped) end("mercy"); + else if (state.inventory.includes("key")) end("power"); + else end("quiet"); + } + } + + function end(kind) { + state.ending = kind; + state.route = kind === "mercy" ? "Mercy" : kind === "power" ? "Power" : "Quiet"; + say("Ending", endingLine()); + save(); + } + + function endingLine() { + if (state.ending === "mercy") return "Mercy ending: the iron door opens without a sound, and every returned page remembers your name."; + if (state.ending === "power") return "Power ending: the key turns, but the archive grows colder around the missing page."; + if (state.ending === "quiet") return "Quiet ending: you leave the locked door alone. Some mysteries stay intact."; + return state.message.line; + } + + function say(speaker, line) { + state.message = { speaker, line }; + } + + function start() { + running = true; + say("Archivist", "Walk the archive. Speak gently, or take what you need. The route will notice."); + els.status.textContent = "Started. Progress autosaves after room changes and actions."; + } + + async function save() { + localStorage.setItem(fallbackKey, JSON.stringify(state)); + try { + const response = await fetch(`/api/play/rpg/save/${saveSlot}`, { + method: "PUT", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ payload: state }) + }); + if (!response.ok) throw new Error(`Save failed: ${response.status}`); + els.status.textContent = "Saved to backend."; + } catch (_error) { + els.status.textContent = "Saved locally. Backend save API was not reachable."; + } + } + + async function load() { + try { + const response = await fetch(`/api/play/rpg/save/${saveSlot}`); + if (response.ok) { + const data = await response.json(); + state = normalizeState(data.payload); + running = true; + els.status.textContent = "Loaded from backend."; + return; + } + } catch (_error) { + /* Fall through to local save. */ + } + const local = localStorage.getItem(fallbackKey); + if (local) { + state = normalizeState(JSON.parse(local)); + running = true; + els.status.textContent = "Loaded local save."; + } else { + els.status.textContent = "No save found."; + } + } + + function normalizeState(candidate) { + return Object.assign(freshState(), candidate || {}, { + player: Object.assign(freshState().player, (candidate && candidate.player) || {}), + inventory: Array.isArray(candidate && candidate.inventory) ? candidate.inventory.filter((id) => items[id]) : [], + flags: Object.assign({}, (candidate && candidate.flags) || {}), + message: Object.assign(freshState().message, (candidate && candidate.message) || {}) + }); + } + + function autosave() { + save(); + } + + $("[data-rpg-start]", root).addEventListener("click", start); + $("[data-rpg-save]", root).addEventListener("click", save); + $("[data-rpg-load]", root).addEventListener("click", load); + $("[data-rpg-reset]", root).addEventListener("click", async () => { + state = freshState(); + running = false; + localStorage.removeItem(fallbackKey); + try { + await fetch(`/api/play/rpg/save/${saveSlot}`, { method: "DELETE" }); + els.status.textContent = "Reset and cleared backend save."; + } catch (_error) { + els.status.textContent = "Reset locally. Backend save API was not reachable."; + } + }); + $("[data-rpg-act]", root).addEventListener("click", act); + $$("[data-rpg-move]", root).forEach((button) => { + const moves = { up: [0, -1, "up"], down: [0, 1, "down"], left: [-1, 0, "left"], right: [1, 0, "right"] }; + button.addEventListener("click", () => move(...moves[button.dataset.rpgMove])); + }); + window.addEventListener("keydown", (event) => { + if (!root.isConnected) return; + const tag = event.target.tagName; + if (tag === "INPUT" || tag === "TEXTAREA") return; + const keys = { + ArrowUp: [0, -1, "up"], w: [0, -1, "up"], + ArrowDown: [0, 1, "down"], s: [0, 1, "down"], + ArrowLeft: [-1, 0, "left"], a: [-1, 0, "left"], + ArrowRight: [1, 0, "right"], d: [1, 0, "right"] + }; + if (keys[event.key]) { + event.preventDefault(); + move(...keys[event.key]); + } + if (event.key === " " || event.key === "Enter") { + event.preventDefault(); + act(); + } + }); + draw(); + load(); + } + + function setupSortable(container, _render, after) { + let dragged = null; + container.addEventListener("dragstart", (event) => { + dragged = event.target.closest("[draggable='true']"); + if (dragged) event.dataTransfer.effectAllowed = "move"; + }); + container.addEventListener("dragover", (event) => { + event.preventDefault(); + const target = event.target.closest("[draggable='true']"); + if (!dragged || !target || target === dragged) return; + const rect = target.getBoundingClientRect(); + const before = event.clientY < rect.top + rect.height / 2 || event.clientX < rect.left + rect.width / 2; + container.insertBefore(dragged, before ? target : target.nextSibling); + after(); + }); + container.addEventListener("dragend", () => { + dragged = null; + after(); + }); + } + + function pick(items) { + return items[Math.floor(Math.random() * items.length)]; + } +})(); diff --git a/assets/scripts/pages/sitemap-interactive.js b/assets/scripts/pages/sitemap-interactive.js new file mode 100644 index 0000000..1909082 --- /dev/null +++ b/assets/scripts/pages/sitemap-interactive.js @@ -0,0 +1,398 @@ +/** + * sitemap-interactive.js + * Drop into /assets/scripts/ — no .org changes required. + * + * Handles two page structures generated by org-publish: + * 1. FLAT LIST — a top-level
      (e.g. Sitemap) + * 2. OUTLINE —
      with

      /

      headings and + * nested
        (e.g. "2025 List", "Blogs List") + * + * Activated on any page whose

        matches SITEMAP_PATTERNS. + */ + +(function () { + "use strict"; + + const SITEMAP_PATTERNS = ["sitemap", "list"]; + + function init() { + const titleEl = document.querySelector("h1.title"); + if (!titleEl) return; + const title = titleEl.textContent.trim().toLowerCase(); + if (!SITEMAP_PATTERNS.some((p) => title.includes(p))) return; + + const contentDiv = document.getElementById("content"); + if (!contentDiv) return; + + const hasOutline = !!contentDiv.querySelector(".outline-2, .outline-3"); + const topUl = !hasOutline && contentDiv.querySelector("ul.org-ul"); + if (!hasOutline && !topUl) return; + + // ── Parsers ─────────────────────────────────────────────────────────── + + function parseLi(li) { + const link = li.querySelector(":scope > a"); + const childUl = li.querySelector(":scope > ul"); + const textNode = Array.from(li.childNodes).find( + (n) => n.nodeType === Node.TEXT_NODE && n.textContent.trim() + ); + const tags = Array.from(li.querySelectorAll(".post-tag")).map((t) => + t.textContent.trim() + ); + const dateEl = li.querySelector(".post-date"); + const date = dateEl ? dateEl.textContent.trim() : null; + + return { + label: link + ? link.textContent.trim() + : textNode + ? textNode.textContent.trim() + : li.childNodes[0]?.textContent?.trim() || "", + href: link ? link.getAttribute("href") : null, + tags, + date, + children: childUl ? parseUl(childUl) : [], + }; + } + + function parseUl(ul) { + return Array.from(ul.children) + .filter((li) => li.tagName === "LI") + .map(parseLi); + } + + function parseFlatList() { + return { tree: parseUl(topUl), replaceTarget: topUl, wrapOutline: false }; + } + + function parseOutline() { + const tree = []; + const outline2s = contentDiv.querySelectorAll(":scope .outline-2"); + + if (outline2s.length === 0) { + // Only outline-3 directly (flat month grouping without year wrapper) + contentDiv.querySelectorAll(":scope .outline-3").forEach((section) => { + const heading = section.querySelector("h3"); + const ul = section.querySelector("ul.org-ul"); + tree.push({ + label: heading ? heading.textContent.trim() : "Section", + href: null, tags: [], date: null, + children: ul ? parseUl(ul) : [], + }); + }); + } else { + outline2s.forEach((o2) => { + const h2 = o2.querySelector(":scope > div > h2, :scope > h2"); + const groupNode = { + label: h2 ? h2.textContent.trim() : "Group", + href: null, tags: [], date: null, + children: [], + }; + const outline3s = o2.querySelectorAll(".outline-3"); + if (outline3s.length > 0) { + outline3s.forEach((o3) => { + const h3 = o3.querySelector(":scope > div > h3, :scope > h3"); + const ul = o3.querySelector("ul.org-ul"); + groupNode.children.push({ + label: h3 ? h3.textContent.trim() : "Month", + href: null, tags: [], date: null, + children: ul ? parseUl(ul) : [], + }); + }); + } else { + const ul = o2.querySelector("ul.org-ul"); + if (ul) groupNode.children = parseUl(ul); + } + tree.push(groupNode); + }); + } + + return { tree, replaceTarget: null, wrapOutline: true }; + } + + const parsed = hasOutline ? parseOutline() : parseFlatList(); + const { tree } = parsed; + if (!tree.length) return; + + // ── Styles ──────────────────────────────────────────────────────────── + if (!document.getElementById("sm-styles")) { + const style = document.createElement("style"); + style.id = "sm-styles"; + style.textContent = ` + .sitemap-interactive { font-family: inherit; margin: 1.5rem 0; } + .sm-toolbar { + display: flex; align-items: center; gap: .6rem; + margin-bottom: 1rem; flex-wrap: wrap; + } + .sm-search { + flex: 1; min-width: 160px; padding: .35rem .7rem; + border: 1px solid var(--border, #444); border-radius: 4px; + background: var(--bg, transparent); color: inherit; font-size: .9rem; + } + .sm-search:focus { outline: 2px solid var(--accent, #7aa2f7); outline-offset: 1px; } + .sm-expand-all, .sm-collapse-all { + padding: .3rem .65rem; border: 1px solid var(--border, #444); + border-radius: 4px; background: transparent; color: inherit; + font-size: .8rem; cursor: pointer; opacity: .75; transition: opacity .15s; + } + .sm-expand-all:hover, .sm-collapse-all:hover { opacity: 1; } + + .sm-tree ul { list-style: none; margin: 0; padding: 0 0 0 1.4rem; } + .sm-tree > ul { padding-left: 0; } + .sm-tree li { margin: 0; } + .sm-node { + display: flex; align-items: center; gap: .4rem; + padding: .2rem .3rem; border-radius: 4px; + line-height: 1.5; transition: background .1s; flex-wrap: wrap; + } + .sm-node:hover { background: var(--hover-bg, rgba(122,162,247,.08)); } + .sm-node.sm-hidden { display: none; } + + .sm-toggle { + width: 1.2rem; height: 1.2rem; display: inline-flex; + align-items: center; justify-content: center; + cursor: pointer; border: none; background: none; color: inherit; + font-size: .7rem; opacity: .6; + transition: transform .18s, opacity .15s; + flex-shrink: 0; padding: 0; border-radius: 3px; + } + .sm-toggle:hover { opacity: 1; background: var(--hover-bg, rgba(122,162,247,.15)); } + .sm-toggle.open { transform: rotate(90deg); } + .sm-toggle-placeholder { width: 1.2rem; flex-shrink: 0; } + + .sm-icon { font-size: .8rem; opacity: .5; flex-shrink: 0; } + + .sm-label a { color: var(--link, inherit); text-decoration: none; font-size: .9rem; } + .sm-label a:hover { text-decoration: underline; } + .sm-label span { font-size: .9rem; font-weight: 600; opacity: .85; } + + .sm-badge { + font-size: .65rem; padding: .05rem .35rem; border-radius: 8px; + background: var(--badge-bg, rgba(122,162,247,.15)); + color: var(--badge-fg, #7aa2f7); opacity: .8; + } + .sm-date { font-size: .75rem; opacity: .45; margin-left: .2rem; } + .sm-tags { display: inline-flex; gap: .25rem; margin-left: .2rem; } + .sm-tag { + font-size: .65rem; padding: .05rem .3rem; border-radius: 8px; + background: var(--tag-bg, rgba(160,200,120,.15)); + color: var(--tag-fg, #9ece6a); opacity: .85; + } + + .sm-children { overflow: hidden; } + .sm-children.collapsed { display: none; } + .sm-label mark { + background: var(--mark-bg, rgba(255,200,50,.3)); + color: inherit; border-radius: 2px; padding: 0 1px; + } + .sm-count { font-size: .78rem; opacity: .45; margin-top: .8rem; } + `; + document.head.appendChild(style); + } + + // ── Widget scaffold ─────────────────────────────────────────────────── + const wrapper = document.createElement("div"); + wrapper.className = "sitemap-interactive"; + wrapper.innerHTML = ` +
        + + + +
        +
        +

        + `; + + const treeEl = wrapper.querySelector(".sm-tree"); + const searchEl = wrapper.querySelector(".sm-search"); + const countEl = wrapper.querySelector(".sm-count"); + + // ── Tree builder ────────────────────────────────────────────────────── + function countLeaves(nodes) { + let n = 0; + for (const node of nodes) { + if (!node.children || !node.children.length) n++; + else n += countLeaves(node.children); + } + return n; + } + + function buildTree(nodes) { + const ul = document.createElement("ul"); + for (const node of nodes) { + const li = document.createElement("li"); + const row = document.createElement("div"); + row.className = "sm-node"; + const hasChildren = node.children && node.children.length > 0; + + let childrenEl; + if (hasChildren) { + const toggle = document.createElement("button"); + toggle.className = "sm-toggle open"; + toggle.innerHTML = "▶"; + toggle.setAttribute("aria-expanded", "true"); + childrenEl = document.createElement("div"); + childrenEl.className = "sm-children"; + childrenEl.appendChild(buildTree(node.children)); + toggle.addEventListener("click", () => { + childrenEl.classList.toggle("collapsed"); + toggle.classList.toggle("open"); + toggle.setAttribute("aria-expanded", + String(!childrenEl.classList.contains("collapsed"))); + }); + row.appendChild(toggle); + } else { + const ph = document.createElement("span"); + ph.className = "sm-toggle-placeholder"; + row.appendChild(ph); + } + + const icon = document.createElement("span"); + icon.className = "sm-icon"; + icon.textContent = hasChildren ? "📂" : "📄"; + row.appendChild(icon); + + const labelEl = document.createElement("span"); + labelEl.className = "sm-label"; + if (node.href) { + const a = document.createElement("a"); + a.href = node.href; + a.textContent = node.label; + labelEl.appendChild(a); + } else { + const s = document.createElement("span"); + s.textContent = node.label; + labelEl.appendChild(s); + } + row.appendChild(labelEl); + + if (hasChildren) { + const badge = document.createElement("span"); + badge.className = "sm-badge"; + badge.textContent = countLeaves(node.children); + row.appendChild(badge); + } + + if (node.date) { + const dateSpan = document.createElement("span"); + dateSpan.className = "sm-date"; + dateSpan.textContent = node.date; + row.appendChild(dateSpan); + } + + if (node.tags && node.tags.length) { + const tagsEl = document.createElement("span"); + tagsEl.className = "sm-tags"; + node.tags.forEach((t) => { + const tag = document.createElement("span"); + tag.className = "sm-tag"; + tag.textContent = t; + tagsEl.appendChild(tag); + }); + row.appendChild(tagsEl); + } + + li.appendChild(row); + if (hasChildren) li.appendChild(childrenEl); + ul.appendChild(li); + } + return ul; + } + + treeEl.appendChild(buildTree(tree)); + + // ── Search / filter ─────────────────────────────────────────────────── + function escapeRe(s) { + return s.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"); + } + + function filterTree(q) { + const query = q.trim().toLowerCase(); + const re = query ? new RegExp(escapeRe(query), "gi") : null; + let visible = 0; + + function walk(ul) { + let anyVisible = false; + for (const li of ul.children) { + const row = li.querySelector(":scope > .sm-node"); + const childrenDiv = li.querySelector(":scope > .sm-children"); + const labelEl = row.querySelector(".sm-label"); + const target = labelEl.querySelector("a") || labelEl.querySelector("span"); + const text = target.dataset.orig || target.textContent; + target.dataset.orig = text; + + let selfMatch = false; + if (!query) { + target.innerHTML = ""; + target.textContent = text; + selfMatch = true; + } else if (text.toLowerCase().includes(query)) { + target.innerHTML = text.replace(re, (m) => `${m}`); + selfMatch = true; + } else { + target.innerHTML = ""; + target.textContent = text; + } + + let childVisible = false; + if (childrenDiv) { + childVisible = walk(childrenDiv.querySelector("ul")); + if (query) { + childrenDiv.classList.toggle("collapsed", !childVisible && !selfMatch); + const toggle = row.querySelector(".sm-toggle"); + if (toggle) toggle.classList.toggle("open", childVisible || selfMatch); + } + } + + const show = !query || selfMatch || childVisible; + row.classList.toggle("sm-hidden", !show); + if (show) { + anyVisible = true; + if (!childrenDiv) visible++; + } + } + return anyVisible; + } + + walk(treeEl.querySelector("ul")); + countEl.textContent = query + ? `${visible} page${visible !== 1 ? "s" : ""} matching "${query}"` + : ""; + } + + searchEl.addEventListener("input", (e) => filterTree(e.target.value)); + + wrapper.querySelector(".sm-expand-all").addEventListener("click", () => { + treeEl.querySelectorAll(".sm-children").forEach((el) => el.classList.remove("collapsed")); + treeEl.querySelectorAll(".sm-toggle").forEach((el) => { + el.classList.add("open"); + el.setAttribute("aria-expanded", "true"); + }); + }); + wrapper.querySelector(".sm-collapse-all").addEventListener("click", () => { + treeEl.querySelectorAll(".sm-children").forEach((el) => el.classList.add("collapsed")); + treeEl.querySelectorAll(".sm-toggle").forEach((el) => { + el.classList.remove("open"); + el.setAttribute("aria-expanded", "false"); + }); + }); + + // ── Inject into page ────────────────────────────────────────────────── + if (parsed.wrapOutline) { + // Hide original outline divs (direct children of content only) + contentDiv.querySelectorAll(":scope > .outline-2, :scope > .outline-3") + .forEach((el) => (el.style.display = "none")); + // Insert after title + optional intro

        + const insertAfter = contentDiv.querySelector(":scope > p") || titleEl; + insertAfter.insertAdjacentElement("afterend", wrapper); + } else { + parsed.replaceTarget.replaceWith(wrapper); + } + } + + if (document.readyState === "loading") { + document.addEventListener("DOMContentLoaded", init); + } else { + init(); + } +})(); diff --git a/assets/scripts/pages/wird-tracker.js b/assets/scripts/pages/wird-tracker.js new file mode 100644 index 0000000..6e22b7c --- /dev/null +++ b/assets/scripts/pages/wird-tracker.js @@ -0,0 +1,1787 @@ +/* ============================================================ + wird-tracker.js (full replacement) + ============================================================ */ + +(function () { + "use strict"; + + const API = "/api/wird"; + + // type: "count" | "juz" | "min" | "rating" | "nafl" | "khatm" + const DAILY_WIRD = { + durood: { label: "Durood", type: "count", unit: "count", target: 300 }, + istighfar: { label: "Istighfar", type: "count", unit: "count", target: 200 }, + quran: { label: "Qurʾān", type: "juz", unit: "juz", target: 2 }, + muraqabah: { label: "Murāqabah", type: "min", unit: "min", target: 10 }, + wuqoof_qalbi: { label: "Wuqūf Qalbī", type: "rating", unit: "", target: 3 }, + Allah: { label: "Allah's Name", type: "count", unit: "count", target: 500 }, + }; + + // Nafl prayers — stored in wird_entries, value=1 when done + const NAFL_WIRD = { + salatul_tawbah: { label: "Ṣalāt al-Tawbah", type: "nafl", unit: "", target: 1, rakats: 2, desc: "2 rakʿāt · repentance", icon: "🤲" }, + salatul_hajaat: { label: "Ṣalāt al-Ḥājah", type: "nafl", unit: "", target: 1, rakats: 2, desc: "2 rakʿāt · need & supplication", icon: "🌙" }, + tahajjud: { label: "Tahajjud", type: "nafl", unit: "", target: 1, rakats: 0, desc: "night vigil", icon: "⭐" }, + }; + + const WIRD_META = { + ...DAILY_WIRD, + ...NAFL_WIRD, + shaykh_meeting: { label: "Meeting w/ Shaykh", type: "meeting", unit: "meeting", target: 1 }, + khatm: { label: "Khatm", type: "khatm", unit: "", target: 1 }, + motalah: { label: "Mutālaʿah", type: "motalah", unit: "min", target: 30 }, + }; + + const RATING_LABELS = { + 1: "distracted", 2: "scattered", 3: "present", 4: "attentive", 5: "absorbed", + }; + + const KHATM_TYPES = { + tilawah: "Tilāwah", + hifz: "Ḥifẓ", + tadabbur: "Tadabbur", + }; + + const MEETING_CYCLE_DAYS = 21; + const HEATMAP_WEEKS = 52; + + const $ = (sel, ctx = document) => ctx.querySelector(sel); + const $$ = (sel, ctx = document) => [...ctx.querySelectorAll(sel)]; + const isoDate = (d = new Date()) => d.toISOString().slice(0, 10); + + function daysBetween(a, b) { + return Math.round((new Date(b) - new Date(a)) / 86400000); + } + function addDays(iso, n) { + const d = new Date(iso); d.setDate(d.getDate() + n); return isoDate(d); + } + function fmtDisplay(iso) { + return new Date(iso + "T00:00:00").toLocaleDateString("en-GB", { + day: "numeric", month: "short", year: "numeric", + }); + } + + function fmtValue(type, val) { + const meta = WIRD_META[type]; + if (!meta) return val; + if (meta.type === "rating") return val ? `${RATING_LABELS[val] || val} (${val}/5)` : "—"; + if (meta.type === "meeting") return val >= 1 ? "✓ attended" : "✗ missed"; + if (meta.type === "nafl") return val >= 1 ? "✓ prayed" : "—"; + if (meta.type === "khatm") return val >= 1 ? "✓ completed" : "—"; + return `${Number(val).toLocaleString()} ${meta.unit}`; + } + + function statusClass(type, val) { + const meta = WIRD_META[type]; + if (!meta || !val || val <= 0) return ""; + if (meta.type === "rating") { + if (val >= 4) return "over"; + if (val >= 3) return "done"; + return "miss"; + } + if (val >= meta.target * 1.1) return "over"; + if (val >= meta.target) return "done"; + return "miss"; + } + + // ── Mutālaʿah (Study) ───────────────────────────────────── + + const MOTALAH_API = "/api/wird/motalah"; + const CALIBRE_API = "/api/calibre/books"; // see controller below + const MOTALAH_TARGET = 30; // daily target in minutes + + let motalahEntries = []; + let calibreBooks = []; + + async function loadMotalah() { + try { + const [mRes, bRes] = await Promise.all([ + fetch(MOTALAH_API), + fetch(CALIBRE_API), + ]); + if (mRes.ok) motalahEntries = await mRes.json(); + if (bRes.ok) calibreBooks = await bRes.json(); + } catch (e) { + console.warn("Mutalaah load error:", e); + } + } + + function renderMotalah() { + const today = isoDate(); + const todayM = motalahEntries.filter(e => e.date === today); + const todayMins = todayM.reduce((s, e) => s + Number(e.durationMinutes), 0); + + // streak + let streak = 0; + const now = new Date(); + for (let i = 0; i < 365; i++) { + const d = new Date(now); d.setDate(d.getDate() - i); + const iso = isoDate(d); + const mins = motalahEntries.filter(e => e.date === iso) + .reduce((s, e) => s + Number(e.durationMinutes), 0); + if (mins >= MOTALAH_TARGET) streak++; + else if (i > 0) break; + } + + // month total + const monthStart = today.slice(0, 7); + const monthMins = motalahEntries + .filter(e => e.date.startsWith(monthStart)) + .reduce((s, e) => s + Number(e.durationMinutes), 0); + const monthHrs = (monthMins / 60).toFixed(1); + + // unique books touched (all time) + const allBooks = new Set( + motalahEntries.flatMap(e => e.bookIds || []) + ); + + $("#motalah-today-mins").textContent = todayMins || "0"; + $("#motalah-streak").textContent = streak; + $("#motalah-total-hrs").textContent = monthHrs; + $("#motalah-books-count").textContent = allBooks.size; + + // sessions list (20 most recent) + const wrap = $("#motalah-sessions-wrap"); + const sorted = [...motalahEntries].sort((a, b) => b.date.localeCompare(a.date)).slice(0, 20); + + if (sorted.length === 0) { + wrap.innerHTML = `

        No study sessions logged yet.

        `; + return; + } + + wrap.innerHTML = sorted.map(e => { + const bookNames = (e.bookIds || []) + .map(id => { + const b = calibreBooks.find(b => String(b.id) === String(id)); + return b ? `${b.title}` : ""; + }).join(""); + + const note = e.notes + ? ` — ${e.notes}` + : ""; + + return ` +
        + ${e.date} + ${e.durationMinutes} min + ${bookNames || ""}${note} +
        + `; + }).join(""); + } + + // Modal + const motalahModal = $("#motalah-modal"); + const motalahForm = $("#motalah-form"); + const motalahDateEl = $("#motalah-date"); + const motalahDurEl = $("#motalah-duration"); + const motalahBooksEl = $("#motalah-books"); + const motalahNotesEl = $("#motalah-notes"); + + // ── Book search UI ──────────────────────────────────────── + // selectedBookIds: Set of ids currently picked in the modal + let selectedBookIds = new Set(); + + const bookSearchInput = document.getElementById("motalah-book-search"); + const bookSearchResults = document.getElementById("book-search-results"); + const selectedChipsWrap = document.getElementById("selected-books-chips"); + + function bookById(id) { + return calibreBooks.find(b => String(b.id) === String(id)); + } + + function renderSelectedChips() { + selectedChipsWrap.innerHTML = [...selectedBookIds].map(id => { + const b = bookById(id); + const label = b ? b.title : id; + return ` + ${label} + + `; + }).join(""); + + // Sync hidden select so the existing submit handler still works + motalahBooksEl.innerHTML = [...selectedBookIds] + .map(id => ``).join(""); + } + + function renderBookResults(query) { + const q = query.trim().toLowerCase(); + const sorted = [...calibreBooks].sort((a, b) => a.title.localeCompare(b.title)); + const filtered = q + ? sorted.filter(b => + b.title.toLowerCase().includes(q) || + (b.authors || "").toLowerCase().includes(q) + ) + : sorted; + + if (filtered.length === 0) { + bookSearchResults.innerHTML = `
        No books found
        `; + } else { + bookSearchResults.innerHTML = filtered.slice(0, 40).map(b => { + const sel = selectedBookIds.has(String(b.id)); + return `
        +
        ${sel ? "✓" : ""}
        + ${b.title} + ${b.authors ? `${b.authors}` : ""} +
        `; + }).join(""); + } + bookSearchResults.classList.add("open"); + } + + if (bookSearchInput) { + bookSearchInput.addEventListener("input", () => { + if (calibreBooks.length === 0) return; + renderBookResults(bookSearchInput.value); + }); + + bookSearchInput.addEventListener("focus", () => { + if (calibreBooks.length === 0) return; + renderBookResults(bookSearchInput.value); + }); + + bookSearchResults.addEventListener("mousedown", e => { + const item = e.target.closest(".book-result-item"); + if (!item) return; + e.preventDefault(); // prevent input blur before we register click + const id = String(item.dataset.id); + if (selectedBookIds.has(id)) { + selectedBookIds.delete(id); + } else { + selectedBookIds.add(id); + } + renderSelectedChips(); + renderBookResults(bookSearchInput.value); + }); + } + + if (selectedChipsWrap) { + selectedChipsWrap.addEventListener("click", e => { + const btn = e.target.closest("button[data-id]"); + if (!btn) return; + selectedBookIds.delete(String(btn.dataset.id)); + renderSelectedChips(); + // Refresh dropdown if open + if (bookSearchResults.classList.contains("open")) { + renderBookResults(bookSearchInput.value); + } + }); + } + + // Close dropdown on outside click + document.addEventListener("click", e => { + if (!e.target.closest(".book-search-wrap")) { + bookSearchResults.classList.remove("open"); + } + }); + + function populateBookSelect() { + // no-op — book search handles population dynamically + } + + function openMotalahModal() { + motalahForm.reset(); + motalahDateEl.value = isoDate(); + selectedBookIds = new Set(); + bookSearchInput.value = ""; + bookSearchResults.classList.remove("open"); + bookSearchResults.innerHTML = ""; + renderSelectedChips(); + motalahModal.showModal(); + } + if (motalahForm) { + motalahForm.addEventListener("submit", async e => { + e.preventDefault(); + const selectedBooks = [...selectedBookIds]; + const payload = { + date: motalahDateEl.value, + durationMinutes: parseInt(motalahDurEl.value), + bookIds: selectedBooks, + notes: motalahNotesEl.value.trim() || null, + }; + try { + const r = await fetch(MOTALAH_API, { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify(payload), + }); + if (!r.ok) throw new Error(await r.text()); + const saved = await r.json(); + motalahEntries.unshift(saved); + motalahModal.close(); + renderMotalah(); + } catch (err) { + alert("Error saving session: " + err.message); + } + }); + } + + $("#motalah-cancel").addEventListener("click", () => motalahModal.close()); + $("#log-motalah-btn").addEventListener("click", openMotalahModal); + + // ── State ──────────────────────────────────────────────── + let allEntries = []; + let todayMap = {}; + let meetingLog = []; + let chart = null; + + // ── Boot ───────────────────────────────────────────────── + document.addEventListener("DOMContentLoaded", async () => { + setTodayLabel(); + await Promise.all([loadAll(), loadMotalah()]); + renderToday(); + renderNafl(); + renderMeetingPanel(); + renderKhatm(); + renderHistory(); + renderChart(); + renderMotalah(); + renderSummary(); + renderHeatmap(); + bindControls(); + }); + + function setTodayLabel() { + $("#today-date").textContent = new Date().toLocaleDateString("en-GB", { + weekday: "long", day: "numeric", month: "long", year: "numeric", + }); + } + + async function loadAll() { + try { + const r = await fetch(`${API}/entries`); + if (!r.ok) throw new Error(r.status); + allEntries = await r.json(); + buildTodayMap(); + buildMeetingLog(); + } catch (e) { + console.error("Wird API error:", e); + } + } + + function buildTodayMap() { + const today = isoDate(); + todayMap = {}; + for (const e of allEntries) { + if (e.date !== today) continue; + if (WIRD_META[e.wirdType]?.type === "rating") { + const existing = todayMap[e.wirdType]; + if (!existing || e.createdAt > existing.createdAt) { + todayMap[e.wirdType] = Number(e.value); + } + } else { + todayMap[e.wirdType] = (todayMap[e.wirdType] || 0) + Number(e.value); + } + } + } + + function buildMeetingLog() { + meetingLog = allEntries + .filter(e => e.wirdType === "shaykh_meeting" && Number(e.value) >= 1) + .sort((a, b) => b.date.localeCompare(a.date)); + } + + async function postEntry(payload) { + const r = await fetch(`${API}/entries`, { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify(payload), + }); + if (!r.ok) throw new Error(await r.text()); + return r.json(); + } + + async function deleteEntry(id) { + const r = await fetch(`${API}/entries/${id}`, { method: "DELETE" }); + if (!r.ok) throw new Error(await r.text()); + } + + // ════════════════════════════════════════════════════════ + // TODAY PANEL + // ════════════════════════════════════════════════════════ + + function renderToday() { + const wrap = $("#wird-cards"); + wrap.innerHTML = ""; + let done = 0; + const types = Object.keys(DAILY_WIRD); + + for (const type of types) { + const meta = DAILY_WIRD[type]; + const val = todayMap[type] || 0; + const cls = statusClass(type, val); + if (cls === "done" || cls === "over") done++; + + const card = document.createElement("div"); + card.className = `wird-card ${cls}`; + card.dataset.type = type; + + if (meta.type === "rating") { + card.innerHTML = buildRatingCard(meta, val); + } else { + const pct = Math.min((val / meta.target) * 100, 100); + card.innerHTML = ` +
        ${meta.label}
        +
        + ${fmtValue(type, val)} + / ${meta.target.toLocaleString()} ${meta.unit} +
        +
        +
        +
        + + `; + } + + card.querySelector(".card-log-btn").addEventListener("click", () => openModal(type)); + wrap.appendChild(card); + } + + const pct = Math.round((done / types.length) * 100); + $("#today-progress-fill").style.width = pct + "%"; + $("#today-progress-label").textContent = `${done} / ${types.length} complete`; + } + + function buildRatingCard(meta, val) { + const pips = [1, 2, 3, 4, 5].map(n => { + const filled = val >= n; + const isMin = n === meta.target; + return ``; + }).join(""); + const lbl = val ? `${RATING_LABELS[val]} (${val}/5)` : "not logged"; + return ` +
        ${meta.label}
        +
        ${pips}
        +
        ${lbl}
        + + `; + } + + // ════════════════════════════════════════════════════════ + // LOG MODAL (existing — unchanged logic) + // ════════════════════════════════════════════════════════ + + const modal = $("#log-modal"); + const form = $("#log-form"); + const typeEl = $("#log-type"); + const valEl = $("#log-value"); + const dateEl = $("#log-date"); + const notesEl = $("#log-notes"); + const ratingEl = $("#log-rating-value"); + + let selectedRating = 0; + $$("#modal-pips .modal-pip").forEach(btn => { + btn.addEventListener("click", () => { + selectedRating = parseInt(btn.dataset.val); + ratingEl.value = selectedRating; + $$("#modal-pips .modal-pip").forEach(b => { + b.classList.toggle("selected", parseInt(b.dataset.val) <= selectedRating); + }); + }); + }); + + function openModal(preType = null) { + form.reset(); + selectedRating = 0; + ratingEl.value = ""; + $$("#modal-pips .modal-pip").forEach(b => b.classList.remove("selected")); + dateEl.value = isoDate(); + if (preType) typeEl.value = preType; + updateModalFields(); + modal.showModal(); + } + + function openMeetingModal() { + form.reset(); + dateEl.value = isoDate(); + typeEl.value = "shaykh_meeting"; + updateModalFields(); + modal.showModal(); + } + + function updateModalFields() { + const type = typeEl.value; + const isRating = type === "wuqoof_qalbi"; + const isMeeting = type === "shaykh_meeting"; + $("#value-group").style.display = (!isRating && !isMeeting) ? "" : "none"; + $("#rating-group").style.display = isRating ? "" : "none"; + $("#shaykh-group").style.display = isMeeting ? "" : "none"; + if (!isRating && !isMeeting) { + const meta = DAILY_WIRD[type]; + if (meta) valEl.placeholder = `Target: ${meta.target} ${meta.unit}`; + } + } + + if (typeEl){ + typeEl.addEventListener("change", updateModalFields); + } + $("#modal-cancel").addEventListener("click", () => modal.close()); + + if (form){ + form.addEventListener("submit", async (e) => { + e.preventDefault(); + const type = typeEl.value; + const isRating = type === "wuqoof_qalbi"; + const isMtg = type === "shaykh_meeting"; + + if (isRating && !ratingEl.value) { alert("Please select a rating."); return; } + + const payload = { + wirdType: type, + date: dateEl.value, + value: isRating ? Number(ratingEl.value) : isMtg ? 1 : Number(valEl.value), + notes: notesEl.value.trim() || null, + }; + + try { + const saved = await postEntry(payload); + allEntries.push(saved); + buildTodayMap(); + buildMeetingLog(); + renderToday(); + renderNafl(); + renderMeetingPanel(); + renderHistory(); + renderChart(); + renderHeatmap(); + modal.close(); + } catch (err) { + alert("Could not save entry: " + err.message); + } + }); + } + // ════════════════════════════════════════════════════════ + // NAFL PRAYERS + // Stored in wird_entries: wirdType = "salatul_tawbah" | + // "salatul_hajaat" | "tahajjud", value = 1 when prayed. + // Toggle = delete existing today entry, or post new one. + // ════════════════════════════════════════════════════════ + + function renderNafl() { + const today = isoDate(); + + // Build a map of which nafl are done today and their entry id + const naflToday = {}; // { wirdType: { id, done: true } } + for (const e of allEntries) { + if (e.date !== today) continue; + if (!NAFL_WIRD[e.wirdType]) continue; + if (Number(e.value) >= 1) naflToday[e.wirdType] = e.id; + } + + const done = Object.keys(naflToday).length; + const total = Object.keys(NAFL_WIRD).length; + + // Render each card + for (const [type, meta] of Object.entries(NAFL_WIRD)) { + const card = document.getElementById(`nafl-${type}`); + if (!card) continue; + const isDone = !!naflToday[type]; + card.classList.toggle("nafl-done", isDone); + const btn = card.querySelector(".nafl-toggle"); + btn.textContent = isDone ? "✓ prayed" : "Mark as prayed"; + btn.dataset.type = type; + btn.dataset.entryId = naflToday[type] || ""; + } + + // Progress bar — track width = 120px for 3/3 + const barPx = Math.round((done / total) * 120); + $("#nafl-completion-bar").style.width = barPx + "px"; + $("#nafl-completion-label").textContent = `${done} / ${total} today`; + } + + // Single delegated listener on the nafl-cards container + $("#nafl-cards").addEventListener("click", async e => { + const btn = e.target.closest(".nafl-toggle"); + if (!btn) return; + + const type = btn.dataset.type; + const entryId = btn.dataset.entryId; + const today = isoDate(); + + btn.disabled = true; + try { + if (entryId) { + // Toggle OFF — delete + await deleteEntry(entryId); + allEntries = allEntries.filter(en => String(en.id) !== String(entryId)); + } else { + // Toggle ON — post + const saved = await postEntry({ wirdType: type, date: today, value: 1, notes: null }); + allEntries.push(saved); + } + buildTodayMap(); + renderNafl(); + renderHeatmap(); + } catch (err) { + alert("Could not update: " + err.message); + } finally { + btn.disabled = false; + } + }); + + // ════════════════════════════════════════════════════════ + // MEETING PANEL (unchanged) + // ════════════════════════════════════════════════════════ + + function renderMeetingPanel() { + const today = isoDate(); + const last = meetingLog[0] || null; + const lastDate = last ? last.date : null; + const nextDate = lastDate ? addDays(lastDate, MEETING_CYCLE_DAYS) : null; + const daysToNext = nextDate ? daysBetween(today, nextDate) : null; + + let statusHtml = ""; + if (!lastDate) { + statusHtml = `No meetings logged yet`; + } else if (daysToNext > 0) { + statusHtml = `Next due in ${daysToNext} day${daysToNext !== 1 ? "s" : ""} — ${fmtDisplay(nextDate)}`; + } else if (daysToNext === 0) { + statusHtml = `Due today`; + } else { + const ov = Math.abs(daysToNext); + statusHtml = `${ov} day${ov !== 1 ? "s" : ""} overdue — expected ${fmtDisplay(nextDate)}`; + } + + const cycles = buildCycleInsights(); + const cycleRows = cycles.map(c => ` + + ${fmtDisplay(c.start)} → ${fmtDisplay(c.end)} + ${c.met + ? `✓ met — ${fmtDisplay(c.metOn)}` + : c.ongoing + ? `ongoing` + : `✗ missed`} + + ${c.met ? `day ${c.dayOfCycle}` : "—"} + + `).join(""); + + $("#meeting-panel-body").innerHTML = ` +
        +
        + Last meeting + ${lastDate ? fmtDisplay(lastDate) : "—"} +
        +
        + Next expected + ${nextDate ? fmtDisplay(nextDate) : "—"} +
        +
        ${statusHtml}
        +
        +
        +

        3-week cycles

        + ${cycles.length === 0 + ? `

        Log at least one meeting to see cycle insights.

        ` + : ` + + ${cycleRows} +
        Cycle windowStatusWhen
        `} +
        + `; + } + + function buildCycleInsights() { + if (meetingLog.length === 0) return []; + const dates = [...meetingLog].reverse().map(e => e.date); + const today = isoDate(); + const cycles = []; + let start = dates[0]; + while (start <= today) { + const end = addDays(start, MEETING_CYCLE_DAYS - 1); + const hit = dates.find(d => d >= start && d <= end); + cycles.push({ + start, end, + met: !!hit, + metOn: hit || null, + dayOfCycle: hit ? daysBetween(start, hit) + 1 : null, + ongoing: end > today, + }); + start = addDays(end, 1); + } + return cycles.reverse(); + } + + // ════════════════════════════════════════════════════════ + // KHATM TRACKER + // Stored in wird_entries: wirdType="khatm", value=1. + // notes field carries JSON: {"type":"tilawah"} or plain text. + // ════════════════════════════════════════════════════════ + + function getKhatmEntries() { + return [...allEntries] + .filter(e => e.wirdType === "khatm" && Number(e.value) >= 1) + .sort((a, b) => a.date.localeCompare(b.date)); // asc for numbering + } + + function renderKhatm() { + const entries = getKhatmEntries(); + const total = entries.length; + + const thisYear = entries.filter( + e => e.date.startsWith(String(new Date().getFullYear())) + ).length; + + let avgDays = "—"; + if (entries.length >= 2) { + let gap = 0; + for (let i = 1; i < entries.length; i++) + gap += daysBetween(entries[i - 1].date, entries[i].date); + avgDays = Math.round(gap / (entries.length - 1)); + } + + const last = entries[entries.length - 1]; + + $("#khatm-total").textContent = total || "0"; + $("#khatm-this-year").textContent = thisYear || "0"; + $("#khatm-avg-days").textContent = avgDays; + $("#khatm-last").textContent = last ? fmtDisplay(last.date) : "—"; + + const listEl = $("#khatm-list"); + if (entries.length === 0) { + listEl.innerHTML = `

        No completions logged yet.

        `; + return; + } + + // Render newest first + const display = [...entries].reverse(); + listEl.innerHTML = display.map(e => { + const num = entries.findIndex(x => x.id === e.id) + 1; + const milestone = num % 10 === 0; + const prevEntry = entries[num - 2]; // ascending, so num-2 is previous + const gapTxt = prevEntry ? `+${daysBetween(prevEntry.date, e.date)}d` : "first"; + + // Parse recitation type out of notes if stored as JSON + let recType = "", noteText = e.notes || ""; + try { + const parsed = JSON.parse(e.notes); + recType = parsed.type || ""; + noteText = parsed.notes || ""; + } catch (_) { /* notes is plain text */ } + + const typeBadge = recType + ? `${KHATM_TYPES[recType] || recType}` + : ""; + const note = noteText + ? `${noteText}` + : ""; + + return ` +
        +
        ${num}
        + ${fmtDisplay(e.date)} + ${typeBadge} + ${gapTxt} + ${note} +
        + `; + }).join(""); + } + + // Khatm modal + const khatmModal = $("#khatm-modal"); + const khatmForm = $("#khatm-form"); + const khatmDateEl = $("#khatm-date"); + const khatmTypeEl = $("#khatm-recitation"); + const khatmNotesEl = $("#khatm-notes"); + + $("#log-khatm-btn").addEventListener("click", () => { + khatmForm.reset(); + khatmDateEl.value = isoDate(); + khatmModal.showModal(); + }); + $("#khatm-cancel").addEventListener("click", () => khatmModal.close()); + + khatmForm.addEventListener("submit", async e => { + e.preventDefault(); + // Pack recitation type + notes into the notes field as JSON + const recType = khatmTypeEl.value || ""; + const noteText = khatmNotesEl.value.trim(); + const notes = (recType || noteText) + ? JSON.stringify({ type: recType || undefined, notes: noteText || undefined }) + : null; + + try { + const saved = await postEntry({ + wirdType: "khatm", + date: khatmDateEl.value, + value: 1, + notes, + }); + allEntries.push(saved); + khatmModal.close(); + renderKhatm(); + renderHeatmap(); + } catch (err) { + alert("Error saving khatm: " + err.message); + } + }); + + // ════════════════════════════════════════════════════════ + // HISTORY TABLE (filter out nafl + khatm to keep it clean, + // or you can remove the filter if you want them shown) + // ════════════════════════════════════════════════════════ + + function renderHistory() { + const tbody = $("#history-body"); + tbody.innerHTML = ""; + + const HIDE_TYPES = new Set(["shaykh_meeting", ...Object.keys(NAFL_WIRD), "khatm"]); + const sorted = [...allEntries] + .filter(e => !HIDE_TYPES.has(e.wirdType)) + .sort((a, b) => b.date.localeCompare(a.date)) + .slice(0, 20); + + if (sorted.length === 0) { + tbody.innerHTML = `No entries yet.`; + return; + } + + for (const e of sorted) { + const meta = WIRD_META[e.wirdType] || {}; + const cls = statusClass(e.wirdType, e.value); + const badgeTxt = cls === "over" ? (meta.type === "rating" ? "flourishing" : "above") + : cls === "done" ? (meta.type === "rating" ? "present" : "met") + : cls === "miss" ? "below" + : "—"; + const tr = document.createElement("tr"); + tr.innerHTML = ` + ${e.date} + ${meta.label || e.wirdType} + ${fmtValue(e.wirdType, e.value)} + ${badgeTxt} + ${e.notes || ""} + `; + tbody.appendChild(tr); + } + } + + // ════════════════════════════════════════════════════════ + // TREND CHART (unchanged) + // ════════════════════════════════════════════════════════ + + function renderChart() { + const type = $("#trend-type").value; + const days = parseInt($("#trend-range").value); + const meta = WIRD_META[type]; + const isRating = meta.type === "rating"; + const now = new Date(); + const labels = []; + const vals = []; + + const isMotalah = type === "motalah"; + for (let i = days - 1; i >= 0; i--) { + const d = new Date(now); + d.setDate(d.getDate() - i); + const iso = isoDate(d); + labels.push(iso.slice(5)); + if (isMotalah) { + vals.push(motalahEntries.filter(e => e.date === iso) + .reduce((s, e) => s + Number(e.durationMinutes), 0)); + } else { + const dayEntries = allEntries.filter(e => e.date === iso && e.wirdType === type); + if (isRating) { + const last = dayEntries.sort((a, b) => a.createdAt > b.createdAt ? 1 : -1).pop(); + vals.push(last ? Number(last.value) : 0); + } else { + vals.push(dayEntries.reduce((s, e) => s + Number(e.value), 0)); + } + } + } + + const nonZero = vals.filter(v => v > 0); + const avg = nonZero.length + ? (isRating + ? (nonZero.reduce((a, b) => a + b, 0) / nonZero.length).toFixed(1) + : Math.round(nonZero.reduce((a, b) => a + b, 0) / nonZero.length)) + : 0; + const max = nonZero.length ? Math.max(...nonZero) : 0; + const streak = calcStreak(type); + + if (isRating) { + $("#trend-stats").innerHTML = ` +
        ${avg}avg rating
        +
        ${RATING_LABELS[max] || "—"}best day
        +
        ${streak}dstreak ≥ ${meta.target}
        +
        ${nonZero.length}days logged
        + `; + } else { + $("#trend-stats").innerHTML = ` +
        ${Number(avg).toLocaleString()}avg / day
        +
        ${Number(max).toLocaleString()}best day
        +
        ${streak}dcurrent streak
        +
        ${meta.target.toLocaleString()}daily target
        + `; + } + + const cs = getComputedStyle(document.documentElement); + const accent = cs.getPropertyValue("--wird-accent").trim() || "#7c5c3a"; + const gridColor = cs.getPropertyValue("--border").trim() || "#d7d7d7"; + const tickColor = cs.getPropertyValue("--muted").trim() || "#666"; + const ctx = $("#trend-chart").getContext("2d"); + if (chart) chart.destroy(); + + chart = new Chart(ctx, { + type: "line", + data: { + labels, + datasets: [ + { + label: meta.label, + data: vals, + borderColor: accent, + backgroundColor: accent + "22", + fill: true, tension: .35, pointRadius: 3, pointHoverRadius: 5, + }, + { + label: "Target", + data: vals.map(() => meta.target), + borderColor: "rgba(74,124,89,.5)", + borderDash: [5, 4], + pointRadius: 0, fill: false, tension: 0, + }, + ], + }, + options: { + responsive: true, + maintainAspectRatio: true, + plugins: { + legend: { display: false }, + tooltip: { + callbacks: { + label: ctx => { + const v = ctx.parsed.y; + if (isRating && ctx.datasetIndex === 0) + return `${meta.label}: ${RATING_LABELS[v] || v} (${v}/5)`; + return `${ctx.dataset.label}: ${v}`; + }, + }, + }, + }, + scales: { + x: { + grid: { color: gridColor + "22" }, + ticks: { color: tickColor, font: { family: "monospace", size: 10 }, maxTicksLimit: 10 }, + }, + y: { + grid: { color: gridColor + "22" }, + ticks: { + color: tickColor, + font: { family: "monospace", size: 10 }, + ...(isRating ? { + min: 0, max: 5, stepSize: 1, + callback: v => RATING_LABELS[v] || (v === 0 ? "" : v), + } : {}), + }, + beginAtZero: true, + ...(isRating ? { min: 0, max: 5 } : {}), + }, + }, + }, + }); + } + + function calcStreak(type) { + const meta = WIRD_META[type]; + let streak = 0; + const now = new Date(); + for (let i = 0; i < 365; i++) { + const d = new Date(now); + d.setDate(d.getDate() - i); + const iso = isoDate(d); + let total; + if (type === "motalah") { + total = motalahEntries.filter(e => e.date === iso) + .reduce((s, e) => s + Number(e.durationMinutes), 0); + } else { + const entries = allEntries.filter(e => e.date === iso && e.wirdType === type); + if (meta && meta.type === "rating") { + const last = entries.sort((a, b) => a.createdAt > b.createdAt ? 1 : -1).pop(); + total = last ? Number(last.value) : 0; + } else { + total = entries.reduce((s, e) => s + Number(e.value), 0); + } + } + const target = type === "motalah" ? MOTALAH_TARGET : (meta ? meta.target : 1); + if (total >= target) streak++; + else if (i > 0) break; + } + return streak; + } + + // ════════════════════════════════════════════════════════ + // HEATMAP + // Reads allEntries directly. No extra API call. + // ════════════════════════════════════════════════════════ + + function renderHeatmap() { + const type = $("#heatmap-type").value; + const today = new Date(); + const todayIso = isoDate(today); + + // Anchor: Sunday on or before today, then go back (HEATMAP_WEEKS-1) full weeks + const anchor = new Date(today); + anchor.setDate(anchor.getDate() - anchor.getDay()); + const startDate = new Date(anchor); + startDate.setDate(startDate.getDate() - (HEATMAP_WEEKS - 1) * 7); + + const scoreMap = buildHeatmapScores(type, isoDate(startDate), todayIso); + + // ── Month labels ────────────────────────────────────── + const monthLabelEl = $("#heatmap-month-labels"); + monthLabelEl.innerHTML = ""; + let lastMonth = null; + // 15px per col (12px cell + 3px gap); labels are position:absolute + for (let w = 0; w < HEATMAP_WEEKS; w++) { + const d = new Date(startDate); + d.setDate(d.getDate() + w * 7); + const mo = d.toLocaleDateString("en-GB", { month: "short" }); + if (mo !== lastMonth) { + const lbl = document.createElement("span"); + lbl.className = "hm-month-lbl"; + lbl.style.left = w * 15 + "px"; + lbl.textContent = mo; + monthLabelEl.appendChild(lbl); + lastMonth = mo; + } + } + + // ── Grid ───────────────────────────────────────────── + const gridEl = $("#heatmap-grid"); + gridEl.innerHTML = ""; + + // Day-of-week label column + const dowCol = document.createElement("div"); + dowCol.className = "hm-dow-col"; + ["", "Mon", "", "Wed", "", "Fri", ""].forEach(lbl => { + const el = document.createElement("div"); + el.className = "hm-dow-lbl"; + el.textContent = lbl; + dowCol.appendChild(el); + }); + gridEl.appendChild(dowCol); + + for (let w = 0; w < HEATMAP_WEEKS; w++) { + const col = document.createElement("div"); + col.className = "hm-col"; + for (let d = 0; d < 7; d++) { + const cellDate = new Date(startDate); + cellDate.setDate(cellDate.getDate() + w * 7 + d); + const iso = isoDate(cellDate); + + const cell = document.createElement("div"); + cell.className = "hm-cell"; + + if (iso > todayIso) { + cell.classList.add("hm-empty"); + } else { + const score = scoreMap[iso] || 0; + cell.dataset.level = scoreToLevel(score, type); + if (iso === todayIso) cell.classList.add("hm-today"); + cell.title = buildTooltip(iso, score, type); + } + col.appendChild(cell); + } + gridEl.appendChild(col); + } + + // ── Stats ───────────────────────────────────────────── + renderHeatmapStats(scoreMap, type, isoDate(startDate), todayIso); + } + + function buildHeatmapScores(type, startIso, endIso) { + // Returns { "2025-01-14": score } where score is a 0–1+ fraction + // (against the relevant target) so scoreToLevel() is consistent. + const map = {}; + + if (type === "__all__") { + // Fraction of DAILY_WIRD targets met each day + const dayCounts = {}; // { date: { type: total } } + for (const e of allEntries) { + if (e.date < startIso || e.date > endIso) continue; + if (!DAILY_WIRD[e.wirdType]) continue; + if (!dayCounts[e.date]) dayCounts[e.date] = {}; + const meta = DAILY_WIRD[e.wirdType]; + if (meta.type === "rating") { + dayCounts[e.date][e.wirdType] = Math.max( + dayCounts[e.date][e.wirdType] || 0, Number(e.value) + ); + } else { + dayCounts[e.date][e.wirdType] = (dayCounts[e.date][e.wirdType] || 0) + Number(e.value); + } + } + const total = Object.keys(DAILY_WIRD).length; + for (const [date, typeMap] of Object.entries(dayCounts)) { + let met = 0; + for (const [t, val] of Object.entries(typeMap)) { + if (val >= DAILY_WIRD[t].target) met++; + } + map[date] = met / total; + } + return map; + } + + // Nafl: fraction of 3 prayers done + if (type === "nafl") { + for (const e of allEntries) { + if (!NAFL_WIRD[e.wirdType]) continue; + if (e.date < startIso || e.date > endIso) continue; + if (Number(e.value) >= 1) map[e.date] = (map[e.date] || 0) + (1 / 3); + } + return map; + } + + // Khatm: binary + if (type === "khatm") { + for (const e of allEntries) { + if (e.wirdType !== "khatm") continue; + if (e.date < startIso || e.date > endIso) continue; + if (Number(e.value) >= 1) map[e.date] = 1; + } + return map; + } + + // Motalah: use motalahEntries, normalised against MOTALAH_TARGET + if (type === "motalah") { + for (const e of motalahEntries) { + if (e.date < startIso || e.date > endIso) continue; + map[e.date] = (map[e.date] || 0) + Number(e.durationMinutes); + } + for (const d of Object.keys(map)) map[d] = map[d] / MOTALAH_TARGET; + return map; + } + + // Single wird type — normalised against target + const meta = WIRD_META[type]; + for (const e of allEntries) { + if (e.wirdType !== type) continue; + if (e.date < startIso || e.date > endIso) continue; + if (meta && meta.type === "rating") { + map[e.date] = Math.max(map[e.date] || 0, Number(e.value)); + } else { + map[e.date] = (map[e.date] || 0) + Number(e.value); + } + } + if (meta && meta.target) { + for (const d of Object.keys(map)) map[d] = map[d] / meta.target; + } + return map; + } + + function scoreToLevel(score, type) { + if (type === "khatm") return score > 0 ? 4 : 0; + if (score <= 0) return 0; + if (score < 0.4) return 1; + if (score < 0.75) return 2; + if (score < 1.0) return 3; + return 4; // met or exceeded + } + + function buildTooltip(iso, score, type) { + const label = fmtDisplay(iso); + if (score <= 0) return `${label}: nothing logged`; + if (type === "__all__") return `${label}: ${Math.round(score * 100)}% of targets met`; + if (type === "nafl") return `${label}: ${Math.round(score * 3)} / 3 prayers`; + if (type === "khatm") return `${label}: khatm completed ✓`; + if (type === "motalah") return `${label}: ${Math.round(score * MOTALAH_TARGET)} min`; + const meta = WIRD_META[type]; + if (!meta) return label; + if (meta.type === "rating") { + const r = Math.round(score); + return `${label}: ${RATING_LABELS[r] || r}/5`; + } + const raw = score * (meta.target || 1); + return `${label}: ${Math.round(raw).toLocaleString()} ${meta.unit}`; + } + + // ============================================================ + // DAILY SUMMARY TABLE + // ============================================================ + + let summaryDays = 30; + let summaryFilter = "__all__"; + + function renderSummary() { + const wrap = document.getElementById("summary-table-wrap"); + if (!wrap) return; + + const today = isoDate(); + const cols = summaryFilter === "__all__" + ? Object.keys(DAILY_WIRD) + : [summaryFilter]; + + // Build date rows newest→oldest + const rows = []; + for (let i = 0; i < summaryDays; i++) { + const d = new Date(); + d.setDate(d.getDate() - i); + rows.push(isoDate(d)); + } + + // Pre-aggregate entries into { date: { type: val } } + const agg = {}; + for (const e of allEntries) { + if (!cols.includes(e.wirdType)) continue; + if (!agg[e.date]) agg[e.date] = {}; + const meta = DAILY_WIRD[e.wirdType]; + if (meta && meta.type === "rating") { + agg[e.date][e.wirdType] = Math.max( + agg[e.date][e.wirdType] || 0, Number(e.value) + ); + } else { + agg[e.date][e.wirdType] = (agg[e.date][e.wirdType] || 0) + Number(e.value); + } + } + + // Build header + const thCols = cols.map(t => { + const meta = DAILY_WIRD[t]; + const unitHint = meta.type === "rating" ? "/5" : meta.unit ? meta.unit : ""; + return ` + ${meta.label}
        + / ${meta.target}${unitHint} + `; + }).join(""); + + // Build body rows + const bodyRows = rows.map(dateIso => { + const isToday = dateIso === today; + const dayData = agg[dateIso] || {}; + + const displayDate = new Date(dateIso + "T00:00:00").toLocaleDateString("en-GB", { + weekday: "short", day: "numeric", month: "short" + }); + + const cells = cols.map(type => { + const meta = DAILY_WIRD[type]; + const val = dayData[type]; + + if (val === undefined || val === null) { + return `—`; + } + + const cls = statusClass(type, val); + const cellCls = cls === "over" ? "summary-cell-over" + : cls === "done" ? "summary-cell-done" + : cls === "miss" ? "summary-cell-miss" + : ""; + + let display; + if (meta.type === "rating") { + display = `${val}/5`; + } else { + display = Number(val).toLocaleString(); + } + + return `${display}`; + }).join(""); + + return ` + ${displayDate}${isToday ? " ·" : ""} + ${cells} + `; + }).join(""); + + // Footer: days target met per column + const footCells = cols.map(type => { + const meta = DAILY_WIRD[type]; + let metCount = 0; + for (const dateIso of rows) { + const val = (agg[dateIso] || {})[type]; + if (val !== undefined && val >= meta.target) metCount++; + } + const pct = Math.round((metCount / summaryDays) * 100); + const cls = pct >= 80 ? "summary-cell-done" : pct >= 50 ? "" : "summary-cell-miss"; + return `${metCount}d (${pct}%)`; + }).join(""); + + wrap.innerHTML = ` + + + + + ${thCols} + + + ${bodyRows} + + + + ${footCells} + + +
        Date
        days met
        + `; + } + + // Controls + document.querySelectorAll(".summary-preset").forEach(btn => { + btn.addEventListener("click", () => { + summaryDays = parseInt(btn.dataset.days); + document.querySelectorAll(".summary-preset").forEach(b => b.classList.remove("active")); + btn.classList.add("active"); + renderSummary(); + }); + }); + + const summaryFilterEl = document.getElementById("summary-filter"); + if (summaryFilterEl) { + summaryFilterEl.addEventListener("change", () => { + summaryFilter = summaryFilterEl.value; + renderSummary(); + }); + } + + function renderHeatmapStats(scoreMap, type, startIso, endIso) { + const el = $("#heatmap-stats"); + const daysLogged = Object.values(scoreMap).filter(v => v > 0).length; + const daysTarget = Object.values(scoreMap).filter(v => v >= 1).length; + + // Longest streak of any-activity + let longest = 0, cur = 0; + const s = new Date(startIso), e = new Date(endIso); + for (let d = new Date(s); d <= e; d.setDate(d.getDate() + 1)) { + if ((scoreMap[isoDate(d)] || 0) > 0) { cur++; longest = Math.max(longest, cur); } + else cur = 0; + } + + const chips = [ + { val: daysLogged, lbl: "days with activity" }, + { val: `${longest}d`, lbl: "longest streak" }, + ]; + if (type !== "khatm") { + chips.push({ val: daysTarget, lbl: type === "nafl" ? "days all prayers done" : "days target met" }); + } + + el.innerHTML = chips.map(c => + `
        + ${c.val} + ${c.lbl} +
        ` + ).join(""); + } + + // ════════════════════════════════════════════════════════ + // BIND CONTROLS + // ════════════════════════════════════════════════════════ + + function bindControls() { + $("#open-log-btn").addEventListener("click", () => openModal()); + $("#log-meeting-btn").addEventListener("click", openMeetingModal); + $("#trend-type").addEventListener("change", renderChart); + $("#trend-range").addEventListener("change", renderChart); + $("#heatmap-type").addEventListener("change", renderHeatmap); + } + /* ============================================================ + wird-export.js + Client-side PDF export for the Wird Tracker. + Depends on: jsPDF + jspdf-autotable (loaded via CDN). + All data is read from allEntries / motalahEntries already + held in memory by wird-tracker.js — no extra API calls. + + HOW TO INTEGRATE + ───────────────── + 1. Paste this block INSIDE the existing IIFE in + wird-tracker.js, just before the closing })(); + + 2. Add the HTML snippet (wird-export-html.html) to the + template and the CDN " (z/asset-url (format "assets/scripts/%s" f)))) - '("script.js" - "lunr.js" - "competency-status-board.js" - "notes.js" - "comments.js" - "bigger-picture.min.js" + '("ui/copy-buttons.js" + "ui/footnote-sidenotes.js" + "application/theme-switcher.js" + "ui/countdown.js" + "ui/toc-active-link.js" + "ui/mermaid-diagrams.js" + "vendor/lunr.js" + "pages/competency-status-board.js" + "pages/notes.js" + "features/comments.js" + "vendor/bigger-picture.min.js" "search.js" - "svg-pan-zoom.min.js" - "gallery-init.js" - "sitemap-interactive.js" - "wird-tracker.js" - "zhd.js" - "play.js" - "ash-below-lake.js" - "hidden-details.js") + "vendor/svg-pan-zoom.min.js" + "ui/gallery-init.js" + "pages/sitemap-interactive.js" + "pages/wird-tracker.js" + "pages/home-dashboard.js" + "pages/play.js" + "pages/ash-below-lake.js" + "features/hidden-details.js") "\n") (format "" - (z/asset-url "assets/scripts/mermaid.min.js"))) + (z/asset-url "assets/scripts/vendor/mermaid.min.js"))) "Shared HTML fragment injected into every page.") (defun z/sync-assets-to-output () diff --git a/posts/career/career-list.org b/posts/career/career-list.org index b1034b5..c6e9953 100755 --- a/posts/career/career-list.org +++ b/posts/career/career-list.org @@ -16,9 +16,9 @@ See the categories: @@html:Categories@@ - [[file:restful-api.org][Restful API]] @@html:@@ @@html:@@ @@html:@@ ** January 2026 -- [[file:database-permissions.org][Database Permissions, Roles, and Accounts]] @@html:@@ @@html:@@ @@html:@@ - [[file:monitoring-and-logging.org][Monitoring and Logging]] @@html:@@ @@html:@@ @@html:@@ - [[file:pipelines.org][Pipelines and how they work (as well as CI/CD)]] @@html:@@ @@html:@@ @@html:@@ +- [[file:database-permissions.org][Database Permissions, Roles, and Accounts]] @@html:@@ @@html:@@ @@html:@@ ** December 2025 - [[file:probation-objectives.org][Probation Objectives:]] @@html:@@ @@html:@@ @@html:@@ @@ -26,13 +26,13 @@ See the categories: @@html:Categories@@ ** November 2025 - [[file:airflow.org][Datamarts, Airflow and DAG's]] @@html:@@ @@html:@@ @@html:@@ - [[file:normalisation.org][Benefits of Normalisation]] @@html:@@ @@html:@@ @@html:@@ -- [[file:management-of-self.org][Management of self training]] @@html:@@ @@html:@@ @@html:@@ - [[file:wireframe-designs.org][Wireframe Designs]] @@html:@@ @@html:@@ @@html:@@ +- [[file:management-of-self.org][Management of self training]] @@html:@@ @@html:@@ @@html:@@ - [[file:requirements-features.org][Requirements, features, user stories, tasks, walking skeletons]] @@html:@@ @@html:@@ @@html:@@ - [[file:career-intro.org][Career Introduction]] @@html:@@ @@html:@@ - [[file:invest-principles.org][Invest Principles]] @@html:@@ @@html:@@ @@html:@@ -- [[file:retrospectives.org][Retrospectives]] @@html:@@ @@html:@@ @@html:@@ - [[file:lean.org][Lean]] @@html:@@ @@html:@@ @@html:@@ +- [[file:retrospectives.org][Retrospectives]] @@html:@@ @@html:@@ @@html:@@ ** October 2025 - [[file:owasp.org][OWASP Top Ten]] @@html:@@ @@html:@@ @@html:@@ diff --git a/posts/career/requirements-features.org b/posts/career/requirements-features.org index a951a84..bb9df1a 100755 --- a/posts/career/requirements-features.org +++ b/posts/career/requirements-features.org @@ -27,7 +27,7 @@ An epic is a high-level objective or initiative that’s too big to complete in ** Features - Definition: Distinct pieces of functionality that deliver value to users. - Scope: Larger than user stories but smaller than epics. -- Example: “User profile management” could be a feature encompassing login, profile editing, and avatar upload. +- Example: “User profile management” could be a feature encompassing login, profile editing, and profile image upload. ** User Stories - Definition: Short, simple descriptions of a feature told from the perspective of the user. @@ -38,7 +38,7 @@ An epic is a high-level objective or initiative that’s too big to complete in ** Tasks - Definition: Technical or operational steps needed to implement a user story. - Granularity: Smallest unit of work, often assigned to individual team members. -- Example: For a story like “User can upload avatar,” tasks might include: +- Example: For a story like “User can upload profile image,” tasks might include: - Create upload UI - Validate image format - Store image in database diff --git a/posts/posts-list.org b/posts/posts-list.org index 0fe3240..d29cec9 100755 --- a/posts/posts-list.org +++ b/posts/posts-list.org @@ -4,24 +4,24 @@ See the categories: @@html:Categories@@ * Posts: -- [[file:career/career-list.org][Career List]] @@html:@@ +- [[file:career/career-list.org][Career List]] @@html:@@ - [[file:career/cross-site-scripting-xss.org][Cross-Site Scripting (XSS)]] @@html:@@ @@html:@@ @@html:@@ - [[file:career/ha-dr.org][High Availability, Disaster Recovery and Business Continuity]] @@html:@@ @@html:@@ @@html:@@ - [[file:career/javascript.org][Understands the Javascript language]] @@html:@@ @@html:@@ @@html:@@ - [[file:career/restful-api.org][Restful API]] @@html:@@ @@html:@@ @@html:@@ -- [[file:career/database-permissions.org][Database Permissions, Roles, and Accounts]] @@html:@@ @@html:@@ @@html:@@ - [[file:career/monitoring-and-logging.org][Monitoring and Logging]] @@html:@@ @@html:@@ @@html:@@ - [[file:career/pipelines.org][Pipelines and how they work (as well as CI/CD)]] @@html:@@ @@html:@@ @@html:@@ +- [[file:career/database-permissions.org][Database Permissions, Roles, and Accounts]] @@html:@@ @@html:@@ @@html:@@ - [[file:career/probation-objectives.org][Probation Objectives:]] @@html:@@ @@html:@@ @@html:@@ - [[file:career/airflow.org][Datamarts, Airflow and DAG's]] @@html:@@ @@html:@@ @@html:@@ - [[file:career/normalisation.org][Benefits of Normalisation]] @@html:@@ @@html:@@ @@html:@@ -- [[file:career/management-of-self.org][Management of self training]] @@html:@@ @@html:@@ @@html:@@ - [[file:career/wireframe-designs.org][Wireframe Designs]] @@html:@@ @@html:@@ @@html:@@ +- [[file:career/management-of-self.org][Management of self training]] @@html:@@ @@html:@@ @@html:@@ - [[file:career/requirements-features.org][Requirements, features, user stories, tasks, walking skeletons]] @@html:@@ @@html:@@ @@html:@@ - [[file:career/career-intro.org][Career Introduction]] @@html:@@ @@html:@@ - [[file:career/invest-principles.org][Invest Principles]] @@html:@@ @@html:@@ @@html:@@ -- [[file:career/retrospectives.org][Retrospectives]] @@html:@@ @@html:@@ @@html:@@ - [[file:career/lean.org][Lean]] @@html:@@ @@html:@@ @@html:@@ +- [[file:career/retrospectives.org][Retrospectives]] @@html:@@ @@html:@@ @@html:@@ - [[file:career/owasp.org][OWASP Top Ten]] @@html:@@ @@html:@@ @@html:@@ - [[file:career/solid-principles.org][SOLID Principles]] @@html:@@ @@html:@@ @@html:@@ - [[file:posts-intro.org][Posts Introduction]] @@html:@@ @@html:@@ \ No newline at end of file diff --git a/recently-updated.org b/recently-updated.org index 927bc26..668958d 100755 --- a/recently-updated.org +++ b/recently-updated.org @@ -2,8 +2,8 @@ #+OPTIONS: toc:nil num:nil * Recently Updated (top 26 files) +- [[file:home/guide/setup.org][Setup]] @@html:@@ - [[file:blogs/2026/06-june/cleaning-up-the-repos.org][Cleaning up the repos]] @@html:@@ -- [[file:home/guide/setup.org][Setup]] @@html:@@ - [[file:posts/career/cross-site-scripting-xss.org][Cross-Site Scripting (XSS)]] @@html:@@ - [[file:blogs/2026/05-may/31-05-week-review.org][[31-05-2026] - Weekly Review]] @@html:@@ - [[file:blogs/2026/05-may/working-on-eid-day-27-05-26.org][Working on Eid day]] @@html:@@ @@ -25,6 +25,6 @@ - [[file:home/guide/wird-tracker-guide.org][Wird Tracker — Technical Guide]] @@html:@@ - [[file:blogs/2026/05-may/10-05-week-review.org][[10-05-2026] - Weekly Review]] @@html:@@ - [[file:blogs/2026/05-may/authoring-service-09-05-26.org][Authoring Service]] @@html:@@ -- [[file:play/play.org][Play]] @@html:@@ - [[file:play/timeline.org][Timeline Tangle]] @@html:@@ - [[file:play/terminal.org][Archive Terminal]] @@html:@@ +- [[file:play/study.org][Study Lamp]] @@html:@@ diff --git a/sitemap.org b/sitemap.org index 4bd9299..4fbc639 100755 --- a/sitemap.org +++ b/sitemap.org @@ -6,292 +6,292 @@ flowchart TD root(["zxh"]) n1["Home"] root --> n1 - n2["Play"] + n2["Recently Updated"] root --> n2 - n4["Recently Updated"] - root --> n4 - n9{{"blogs"}} - root --> n9 - n10["Blogs Introduction"] - n9 --> n10 - n11["How to publish pages using Org Publish"] - n9 --> n11 - n12["Blogs List"] - n9 --> n12 - n13{{"home"}} - root --> n13 - n14["Countdown"] + n3{{"home"}} + root --> n3 + n4["Countdown"] + n3 --> n4 + n5["Backlog"] + n3 --> n5 + n6["Competency Status Board"] + n3 --> n6 + n7["Service"] + n3 --> n7 + n8["Notes"] + n3 --> n8 + n9["Wird Tracker"] + n3 --> n9 + n10["Contact"] + n3 --> n10 + n11["hidden-soul"] + n3 --> n11 + n12["Categories"] + n3 --> n12 + n13{{"guide"}} + n3 --> n13 + n14["Wird Tracker — Technical Guide"] n13 --> n14 - n15["Backlog"] + n15["Setup"] n13 --> n15 - n16["Competency Status Board"] - n13 --> n16 - n17["hidden-soul"] - n13 --> n17 - n18["Wird Tracker"] - n13 --> n18 - n19["Contact"] - n13 --> n19 - n20["Service"] - n13 --> n20 - n21["Notes"] - n13 --> n21 - n22["Categories"] - n13 --> n22 - n23{{"guide"}} - n13 --> n23 - n24["Wird Tracker — Technical Guide"] - n23 --> n24 - n25["Setup"] - n23 --> n25 - n26{{"lima"}} - root --> n26 - n27["Lima"] - n26 --> n27 - n28{{"tags"}} - root --> n28 - n29["Tag: review"] - n28 --> n29 - n30["Tag: life"] - n28 --> n30 - n31["Tag: introduction"] - n28 --> n31 - n32["Tag: learning"] - n28 --> n32 - n33["Tag: notes"] - n28 --> n33 - n34["Tag: review"] - n28 --> n34 - n35["Tag: website"] - n28 --> n35 - n36["Tag: update"] - n28 --> n36 - n37["Tag: life"] - n28 --> n37 - n38["Tag: education"] - n28 --> n38 - n39["Tag: insights"] - n28 --> n39 - n40["Tag: reading"] - n28 --> n40 - n41["Tag: emacs"] - n28 --> n41 - n42["Tag: maths"] - n28 --> n42 - n43{{"posts"}} - root --> n43 - n44["Posts Introduction"] - n43 --> n44 - n45["Posts List"] - n43 --> n45 - n46{{"career"}} - n43 --> n46 - n47["SOLID Principles"] - n46 --> n47 - n48["OWASP Top Ten"] - n46 --> n48 - n49["Retrospectives"] - n46 --> n49 - n50["Lean"] - n46 --> n50 - n51["Invest Principles"] - n46 --> n51 - n52["Career Introduction"] - n46 --> n52 - n53["Management of self training"] - n46 --> n53 - n54["Wireframe Designs"] - n46 --> n54 - n55["Requirements, features, user stories, tasks, walking skeletons"] - n46 --> n55 - n56["Benefits of Normalisation"] - n46 --> n56 - n57["Datamarts, Airflow and DAG's"] - n46 --> n57 - n58["Probation Objectives:"] - n46 --> n58 - n59["Database Permissions, Roles, and Accounts"] - n46 --> n59 - n60["Monitoring and Logging"] - n46 --> n60 - n61["Pipelines and how they work (as well as CI/CD)"] - n46 --> n61 - n62["Restful API"] - n46 --> n62 - n63["Understands the Javascript language"] - n46 --> n63 - n64["High Availability, Disaster Recovery and Business Continuity"] - n46 --> n64 - n65["Cross-Site Scripting (XSS)"] - n46 --> n65 - n66["Career List"] - n46 --> n66 - n67{{"play"}} - root --> n67 - n68["Sigil Press"] - n67 --> n68 - n69["Ash Below the Lake"] - n67 --> n69 + n16{{"tags"}} + root --> n16 + n17["Tag: review"] + n16 --> n17 + n18["Tag: life"] + n16 --> n18 + n19["Tag: learning"] + n16 --> n19 + n20["Tag: introduction"] + n16 --> n20 + n21["Tag: notes"] + n16 --> n21 + n22["Tag: review"] + n16 --> n22 + n23["Tag: website"] + n16 --> n23 + n24["Tag: update"] + n16 --> n24 + n25["Tag: life"] + n16 --> n25 + n26["Tag: emacs"] + n16 --> n26 + n27["Tag: education"] + n16 --> n27 + n28["Tag: reading"] + n16 --> n28 + n29["Tag: maths"] + n16 --> n29 + n30["Tag: insights"] + n16 --> n30 + n31{{"posts"}} + root --> n31 + n32["Posts Introduction"] + n31 --> n32 + n33["Posts List"] + n31 --> n33 + n34{{"career"}} + n31 --> n34 + n35["SOLID Principles"] + n34 --> n35 + n36["OWASP Top Ten"] + n34 --> n36 + n37["Lean"] + n34 --> n37 + n38["Retrospectives"] + n34 --> n38 + n39["Invest Principles"] + n34 --> n39 + n40["Career Introduction"] + n34 --> n40 + n41["Wireframe Designs"] + n34 --> n41 + n42["Management of self training"] + n34 --> n42 + n43["Requirements, features, user stories, tasks, walking skeletons"] + n34 --> n43 + n44["Benefits of Normalisation"] + n34 --> n44 + n45["Datamarts, Airflow and DAG's"] + n34 --> n45 + n46["Probation Objectives:"] + n34 --> n46 + n47["Monitoring and Logging"] + n34 --> n47 + n48["Pipelines and how they work (as well as CI/CD)"] + n34 --> n48 + n49["Database Permissions, Roles, and Accounts"] + n34 --> n49 + n50["Restful API"] + n34 --> n50 + n51["Understands the Javascript language"] + n34 --> n51 + n52["High Availability, Disaster Recovery and Business Continuity"] + n34 --> n52 + n53["Cross-Site Scripting (XSS)"] + n34 --> n53 + n54["Career List"] + n34 --> n54 + n55{{"blogs"}} + root --> n55 + n56["Blogs Introduction"] + n55 --> n56 + n57["How to publish pages using Org Publish"] + n55 --> n57 + n58["Blogs List"] + n55 --> n58 + n59{{"lima"}} + root --> n59 + n60["Lima"] + n59 --> n60 + n61{{"play"}} + root --> n61 + n62["Bookshelf Sort"] + n61 --> n62 + n63["Sigil Press"] + n61 --> n63 + n64["Memory Cabinet"] + n61 --> n64 + n65["Constellation Desk"] + n61 --> n65 + n66["Play"] + n61 --> n66 + n67["Study Lamp"] + n61 --> n67 + n68["Marginalia Machine"] + n61 --> n68 + n69["Ink Pond"] + n61 --> n69 n70["Timeline Tangle"] - n67 --> n70 - n71["Ink Pond"] - n67 --> n71 - n72["Supper Wheel"] - n67 --> n72 - n73["Bookshelf Sort"] - n67 --> n73 - n74["Constellation Desk"] - n67 --> n74 - n75["Memory Cabinet"] - n67 --> n75 - n76["Archive Terminal"] - n67 --> n76 - n77["Study Lamp"] - n67 --> n77 - n78["Marginalia Machine"] - n67 --> n78 - n79["The Rain Index"] - n67 --> n79 + n61 --> n70 + n71["Supper Wheel"] + n61 --> n71 + n72["Archive Terminal"] + n61 --> n72 + n73["Ash Below the Lake"] + n61 --> n73 + n74["The Rain Index"] + n61 --> n74 click n1 "index.html" "Home" - click n2 "play.html" "Play" - click n4 "recently-updated.html" "Recently Updated" - click n10 "blogs/blogs-intro.html" "Blogs Introduction" - click n11 "blogs/publish-pages.html" "How to publish pages using Org Publish" - click n12 "blogs/blogs-list.html" "Blogs List" - click n14 "home/countdown.html" "Countdown" - click n15 "home/backlog.html" "Backlog" - click n16 "home/status.html" "Competency Status Board" - click n17 "home/hidden-soul.html" "hidden-soul" - click n18 "home/wird-tracker.html" "Wird Tracker" - click n19 "home/contact.html" "Contact" - click n20 "home/services.html" "Service" - click n21 "home/notes.html" "Notes" - click n22 "home/categories.html" "Categories" - click n24 "home/guide/wird-tracker-guide.html" "Wird Tracker — Technical Guide" - click n25 "home/guide/setup.html" "Setup" - click n27 "lima/lima-list.html" "Lima" - click n29 "tags/review.sync-conflict-20260328-203248-VT6366A.html" "Tag: review" - click n30 "tags/life.sync-conflict-20260417-233423-VT6366A.html" "Tag: life" - click n31 "tags/introduction.html" "Tag: introduction" - click n32 "tags/learning.html" "Tag: learning" - click n33 "tags/notes.html" "Tag: notes" - click n34 "tags/review.html" "Tag: review" - click n35 "tags/website.html" "Tag: website" - click n36 "tags/update.html" "Tag: update" - click n37 "tags/life.html" "Tag: life" - click n38 "tags/education.html" "Tag: education" - click n39 "tags/insights.html" "Tag: insights" - click n40 "tags/reading.html" "Tag: reading" - click n41 "tags/emacs.html" "Tag: emacs" - click n42 "tags/maths.html" "Tag: maths" - click n44 "posts/posts-intro.html" "Posts Introduction" - click n45 "posts/posts-list.html" "Posts List" - click n47 "posts/career/solid-principles.html" "SOLID Principles" - click n48 "posts/career/owasp.html" "OWASP Top Ten" - click n49 "posts/career/retrospectives.html" "Retrospectives" - click n50 "posts/career/lean.html" "Lean" - click n51 "posts/career/invest-principles.html" "Invest Principles" - click n52 "posts/career/career-intro.html" "Career Introduction" - click n53 "posts/career/management-of-self.html" "Management of self training" - click n54 "posts/career/wireframe-designs.html" "Wireframe Designs" - click n55 "posts/career/requirements-features.html" "Requirements, features, user stories, tasks, walking skeletons" - click n56 "posts/career/normalisation.html" "Benefits of Normalisation" - click n57 "posts/career/airflow.html" "Datamarts, Airflow and DAG's" - click n58 "posts/career/probation-objectives.html" "Probation Objectives:" - click n59 "posts/career/database-permissions.html" "Database Permissions, Roles, and Accounts" - click n60 "posts/career/monitoring-and-logging.html" "Monitoring and Logging" - click n61 "posts/career/pipelines.html" "Pipelines and how they work (as well as CI/CD)" - click n62 "posts/career/restful-api.html" "Restful API" - click n63 "posts/career/javascript.html" "Understands the Javascript language" - click n64 "posts/career/ha-dr.html" "High Availability, Disaster Recovery and Business Continuity" - click n65 "posts/career/cross-site-scripting-xss.html" "Cross-Site Scripting (XSS)" - click n66 "posts/career/career-list.html" "Career List" - click n68 "play/sigil.html" "Sigil Press" - click n69 "play/rpg.html" "Ash Below the Lake" + click n2 "recently-updated.html" "Recently Updated" + click n4 "home/countdown.html" "Countdown" + click n5 "home/backlog.html" "Backlog" + click n6 "home/status.html" "Competency Status Board" + click n7 "home/services.html" "Service" + click n8 "home/notes.html" "Notes" + click n9 "home/wird-tracker.html" "Wird Tracker" + click n10 "home/contact.html" "Contact" + click n11 "home/hidden-soul.html" "hidden-soul" + click n12 "home/categories.html" "Categories" + click n14 "home/guide/wird-tracker-guide.html" "Wird Tracker — Technical Guide" + click n15 "home/guide/setup.html" "Setup" + click n17 "tags/review.sync-conflict-20260328-203248-VT6366A.html" "Tag: review" + click n18 "tags/life.sync-conflict-20260417-233423-VT6366A.html" "Tag: life" + click n19 "tags/learning.html" "Tag: learning" + click n20 "tags/introduction.html" "Tag: introduction" + click n21 "tags/notes.html" "Tag: notes" + click n22 "tags/review.html" "Tag: review" + click n23 "tags/website.html" "Tag: website" + click n24 "tags/update.html" "Tag: update" + click n25 "tags/life.html" "Tag: life" + click n26 "tags/emacs.html" "Tag: emacs" + click n27 "tags/education.html" "Tag: education" + click n28 "tags/reading.html" "Tag: reading" + click n29 "tags/maths.html" "Tag: maths" + click n30 "tags/insights.html" "Tag: insights" + click n32 "posts/posts-intro.html" "Posts Introduction" + click n33 "posts/posts-list.html" "Posts List" + click n35 "posts/career/solid-principles.html" "SOLID Principles" + click n36 "posts/career/owasp.html" "OWASP Top Ten" + click n37 "posts/career/lean.html" "Lean" + click n38 "posts/career/retrospectives.html" "Retrospectives" + click n39 "posts/career/invest-principles.html" "Invest Principles" + click n40 "posts/career/career-intro.html" "Career Introduction" + click n41 "posts/career/wireframe-designs.html" "Wireframe Designs" + click n42 "posts/career/management-of-self.html" "Management of self training" + click n43 "posts/career/requirements-features.html" "Requirements, features, user stories, tasks, walking skeletons" + click n44 "posts/career/normalisation.html" "Benefits of Normalisation" + click n45 "posts/career/airflow.html" "Datamarts, Airflow and DAG's" + click n46 "posts/career/probation-objectives.html" "Probation Objectives:" + click n47 "posts/career/monitoring-and-logging.html" "Monitoring and Logging" + click n48 "posts/career/pipelines.html" "Pipelines and how they work (as well as CI/CD)" + click n49 "posts/career/database-permissions.html" "Database Permissions, Roles, and Accounts" + click n50 "posts/career/restful-api.html" "Restful API" + click n51 "posts/career/javascript.html" "Understands the Javascript language" + click n52 "posts/career/ha-dr.html" "High Availability, Disaster Recovery and Business Continuity" + click n53 "posts/career/cross-site-scripting-xss.html" "Cross-Site Scripting (XSS)" + click n54 "posts/career/career-list.html" "Career List" + click n56 "blogs/blogs-intro.html" "Blogs Introduction" + click n57 "blogs/publish-pages.html" "How to publish pages using Org Publish" + click n58 "blogs/blogs-list.html" "Blogs List" + click n60 "lima/lima-list.html" "Lima" + click n62 "play/bookshelf.html" "Bookshelf Sort" + click n63 "play/sigil.html" "Sigil Press" + click n64 "play/memory.html" "Memory Cabinet" + click n65 "play/constellation.html" "Constellation Desk" + click n66 "play/play.html" "Play" + click n67 "play/study.html" "Study Lamp" + click n68 "play/poem.html" "Marginalia Machine" + click n69 "play/ink.html" "Ink Pond" click n70 "play/timeline.html" "Timeline Tangle" - click n71 "play/ink.html" "Ink Pond" - click n72 "play/recipe.html" "Supper Wheel" - click n73 "play/bookshelf.html" "Bookshelf Sort" - click n74 "play/constellation.html" "Constellation Desk" - click n75 "play/memory.html" "Memory Cabinet" - click n76 "play/terminal.html" "Archive Terminal" - click n77 "play/study.html" "Study Lamp" - click n78 "play/poem.html" "Marginalia Machine" - click n79 "play/the-rain-index.html" "The Rain Index" + click n71 "play/recipe.html" "Supper Wheel" + click n72 "play/terminal.html" "Archive Terminal" + click n73 "play/rpg.html" "Ash Below the Lake" + click n74 "play/the-rain-index.html" "The Rain Index" #+end_src * Pages - [[file:index.org][Home]] -- [[file:play/play.org][Play]] - [[file:recently-updated.org][Recently Updated]] -- blogs - - [[file:blogs/blogs-intro.org][Blogs Introduction]] - - [[file:blogs/publish-pages.org][How to publish pages using Org Publish]] - - [[file:blogs/blogs-list.org][Blogs List]] - home - [[file:home/countdown.org][Countdown]] - [[file:home/backlog.org][Backlog]] - [[file:home/status.org][Competency Status Board]] - - [[file:home/hidden-soul.org][hidden-soul]] - - [[file:home/wird-tracker.org][Wird Tracker]] - - [[file:home/contact.org][Contact]] - [[file:home/services.org][Service]] - [[file:home/notes.org][Notes]] + - [[file:home/wird-tracker.org][Wird Tracker]] + - [[file:home/contact.org][Contact]] + - [[file:home/hidden-soul.org][hidden-soul]] - [[file:home/categories.org][Categories]] - guide - [[file:home/guide/wird-tracker-guide.org][Wird Tracker — Technical Guide]] - [[file:home/guide/setup.org][Setup]] -- lima - - [[file:lima/lima-list.org][Lima]] - tags - [[file:tags/review.sync-conflict-20260328-203248-VT6366A.org][Tag: review]] - [[file:tags/life.sync-conflict-20260417-233423-VT6366A.org][Tag: life]] - - [[file:tags/introduction.org][Tag: introduction]] - [[file:tags/learning.org][Tag: learning]] + - [[file:tags/introduction.org][Tag: introduction]] - [[file:tags/notes.org][Tag: notes]] - [[file:tags/review.org][Tag: review]] - [[file:tags/website.org][Tag: website]] - [[file:tags/update.org][Tag: update]] - [[file:tags/life.org][Tag: life]] - - [[file:tags/education.org][Tag: education]] - - [[file:tags/insights.org][Tag: insights]] - - [[file:tags/reading.org][Tag: reading]] - [[file:tags/emacs.org][Tag: emacs]] + - [[file:tags/education.org][Tag: education]] + - [[file:tags/reading.org][Tag: reading]] - [[file:tags/maths.org][Tag: maths]] + - [[file:tags/insights.org][Tag: insights]] - posts - [[file:posts/posts-intro.org][Posts Introduction]] - [[file:posts/posts-list.org][Posts List]] - career - [[file:posts/career/solid-principles.org][SOLID Principles]] - [[file:posts/career/owasp.org][OWASP Top Ten]] - - [[file:posts/career/retrospectives.org][Retrospectives]] - [[file:posts/career/lean.org][Lean]] + - [[file:posts/career/retrospectives.org][Retrospectives]] - [[file:posts/career/invest-principles.org][Invest Principles]] - [[file:posts/career/career-intro.org][Career Introduction]] - - [[file:posts/career/management-of-self.org][Management of self training]] - [[file:posts/career/wireframe-designs.org][Wireframe Designs]] + - [[file:posts/career/management-of-self.org][Management of self training]] - [[file:posts/career/requirements-features.org][Requirements, features, user stories, tasks, walking skeletons]] - [[file:posts/career/normalisation.org][Benefits of Normalisation]] - [[file:posts/career/airflow.org][Datamarts, Airflow and DAG's]] - [[file:posts/career/probation-objectives.org][Probation Objectives:]] - - [[file:posts/career/database-permissions.org][Database Permissions, Roles, and Accounts]] - [[file:posts/career/monitoring-and-logging.org][Monitoring and Logging]] - [[file:posts/career/pipelines.org][Pipelines and how they work (as well as CI/CD)]] + - [[file:posts/career/database-permissions.org][Database Permissions, Roles, and Accounts]] - [[file:posts/career/restful-api.org][Restful API]] - [[file:posts/career/javascript.org][Understands the Javascript language]] - [[file:posts/career/ha-dr.org][High Availability, Disaster Recovery and Business Continuity]] - [[file:posts/career/cross-site-scripting-xss.org][Cross-Site Scripting (XSS)]] - [[file:posts/career/career-list.org][Career List]] +- blogs + - [[file:blogs/blogs-intro.org][Blogs Introduction]] + - [[file:blogs/publish-pages.org][How to publish pages using Org Publish]] + - [[file:blogs/blogs-list.org][Blogs List]] +- lima + - [[file:lima/lima-list.org][Lima]] - play - - [[file:play/sigil.org][Sigil Press]] - - [[file:play/rpg.org][Ash Below the Lake]] - - [[file:play/timeline.org][Timeline Tangle]] - - [[file:play/ink.org][Ink Pond]] - - [[file:play/recipe.org][Supper Wheel]] - [[file:play/bookshelf.org][Bookshelf Sort]] - - [[file:play/constellation.org][Constellation Desk]] + - [[file:play/sigil.org][Sigil Press]] - [[file:play/memory.org][Memory Cabinet]] - - [[file:play/terminal.org][Archive Terminal]] + - [[file:play/constellation.org][Constellation Desk]] + - [[file:play/play.org][Play]] - [[file:play/study.org][Study Lamp]] - [[file:play/poem.org][Marginalia Machine]] - - [[file:play/the-rain-index.org][The Rain Index]] + - [[file:play/ink.org][Ink Pond]] + - [[file:play/timeline.org][Timeline Tangle]] + - [[file:play/recipe.org][Supper Wheel]] + - [[file:play/terminal.org][Archive Terminal]] + - [[file:play/rpg.org][Ash Below the Lake]] + - [[file:play/the-rain-index.org][The Rain Index]] \ No newline at end of file diff --git a/tags/learning.org b/tags/learning.org index 29d6739..e772ca6 100755 --- a/tags/learning.org +++ b/tags/learning.org @@ -6,16 +6,16 @@ - [[file:../posts/career/ha-dr.org][High Availability, Disaster Recovery and Business Continuity]] - [[file:../posts/career/javascript.org][Understands the Javascript language]] - [[file:../posts/career/restful-api.org][Restful API]] -- [[file:../posts/career/database-permissions.org][Database Permissions, Roles, and Accounts]] - [[file:../posts/career/monitoring-and-logging.org][Monitoring and Logging]] - [[file:../posts/career/pipelines.org][Pipelines and how they work (as well as CI/CD)]] +- [[file:../posts/career/database-permissions.org][Database Permissions, Roles, and Accounts]] - [[file:../posts/career/airflow.org][Datamarts, Airflow and DAG's]] - [[file:../posts/career/normalisation.org][Benefits of Normalisation]] -- [[file:../posts/career/management-of-self.org][Management of self training]] - [[file:../posts/career/wireframe-designs.org][Wireframe Designs]] +- [[file:../posts/career/management-of-self.org][Management of self training]] - [[file:../posts/career/requirements-features.org][Requirements, features, user stories, tasks, walking skeletons]] - [[file:../posts/career/invest-principles.org][Invest Principles]] -- [[file:../posts/career/retrospectives.org][Retrospectives]] - [[file:../posts/career/lean.org][Lean]] +- [[file:../posts/career/retrospectives.org][Retrospectives]] - [[file:../posts/career/owasp.org][OWASP Top Ten]] - [[file:../posts/career/solid-principles.org][SOLID Principles]] diff --git a/tags/notes.org b/tags/notes.org index 4f5373c..2e41d11 100755 --- a/tags/notes.org +++ b/tags/notes.org @@ -6,17 +6,17 @@ - [[file:../posts/career/ha-dr.org][High Availability, Disaster Recovery and Business Continuity]] - [[file:../posts/career/javascript.org][Understands the Javascript language]] - [[file:../posts/career/restful-api.org][Restful API]] -- [[file:../posts/career/database-permissions.org][Database Permissions, Roles, and Accounts]] - [[file:../posts/career/monitoring-and-logging.org][Monitoring and Logging]] - [[file:../posts/career/pipelines.org][Pipelines and how they work (as well as CI/CD)]] +- [[file:../posts/career/database-permissions.org][Database Permissions, Roles, and Accounts]] - [[file:../posts/career/probation-objectives.org][Probation Objectives:]] - [[file:../posts/career/airflow.org][Datamarts, Airflow and DAG's]] - [[file:../posts/career/normalisation.org][Benefits of Normalisation]] -- [[file:../posts/career/management-of-self.org][Management of self training]] - [[file:../posts/career/wireframe-designs.org][Wireframe Designs]] +- [[file:../posts/career/management-of-self.org][Management of self training]] - [[file:../posts/career/requirements-features.org][Requirements, features, user stories, tasks, walking skeletons]] - [[file:../posts/career/invest-principles.org][Invest Principles]] -- [[file:../posts/career/retrospectives.org][Retrospectives]] - [[file:../posts/career/lean.org][Lean]] +- [[file:../posts/career/retrospectives.org][Retrospectives]] - [[file:../posts/career/owasp.org][OWASP Top Ten]] - [[file:../posts/career/solid-principles.org][SOLID Principles]] -- 2.49.1

    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�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 M@%5&;2lYSy*#|QmY5)KL diff --git a/assets/avatars/lima.jpg b/assets/avatars/lima.jpg deleted file mode 100644 index a41ee8d4a6209341e199bc4c06591012b694a373..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 126166 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%0D_Aao$ORCM<~R?y4(CGjURI4?^##^rt`qKm)Z8 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 diff --git a/assets/avatars/young-z.jpeg b/assets/avatars/young-z.jpeg deleted file mode 100644 index bf11e49b82e33b343aaf4ac793d9220582805edc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 93972 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