[{"noteId": "0VR3MNx7Jer0", "title": "Inbox", "type": "text", "mime": "text/html", "blobId": "7SsREyHyFYSXB6DcrHza", "content": "
\n
\n

This is a place I use to put notes waiting for better categorization

\n
\n
"}, {"noteId": "0r6wfBAvniUR", "title": "Projects", "type": "text", "mime": "text/html", "blobId": "aXIER13EVJv3qmY89qpb", "content": "

Here I'd keep various notes related to my work's projects etc.

"}, {"noteId": "0za9R4spbuOD", "title": "Dentist appointment", "type": "text", "mime": "text/html", "blobId": "z4PhNX7vuL3xVChQ1m2A", "content": ""}, {"noteId": "1A2pDj0rZWRk", "title": "Geo Map (The Seven Wonders of the World)", "type": "geoMap", "mime": "application/json", "blobId": "HFX5RUVqYP5cFE1MLzwd", "content": "{\"view\":{\"center\":{\"lat\":5.840169838914697,\"lng\":14.578571156950112},\"zoom\":3}}"}, {"noteId": "1ETwzSaLQ8tI", "title": "02.jpeg", "type": "image", "mime": "image/jpg", "blobId": "dB3hbvjnCwf74r5nYFeV", "content": null}, {"noteId": "1grhNpvCf13b", "title": "Steel Blue", "type": "code", "mime": "text/css", "blobId": "BVONPl6kYmfKAlozhpCU", "content": "/*\n * This is a demo of how you can create custom theme for Trilium. You can activate it by going\n * into options in first tab \"Appearance\".\n * \n * You can read some details on theming here: http://github.com/zadam/trilium/wiki/Themes\n */\n\n@font-face { /* This will be used as main UI font (see below) */\n font-family: 'Raleway';\n font-style: normal;\n font-weight: 400;\n src: url('../../../custom/fonts/raleway.woff2') format('woff2');\n}\n\n@font-face { /* This will be used as text content font (see below) */\n font-family: 'Garamond';\n font-style: normal;\n font-weight: 400;\n src: url('../../../custom/fonts/garamond.woff2') format('woff2');\n}\n\n:root {\n --theme-style: light;\n \n --main-font-family: 'Raleway';\n --main-font-size: normal;\n \n --tree-font-family: 'Raleway';\n --tree-font-size: normal;\n \n --detail-font-family: 'Raleway';\n --detail-font-size: normal;\n \n --monospace-font-family: 'Monospace';\n --monospace-font-size: normal;\n\n --main-background-color: #404552;\n --main-text-color: #AFB8C6;\n --main-border-color: #AFB8C6;\n \n --accented-background-color: #383C4A;\n --more-accented-background-color: #2F343F;\n \n --button-text-color: #AFB8C6;\n --button-background-color: #2F343F;\n --button-disabled-text-color: #86919F;\n --button-disabled-background-color: #404552;\n --button-border-color: #333;\n --button-border-radius: 2px;\n \n --primary-button-background-color: #6c757d;\n --primary-button-text-color: white;\n --primary-button-border-color: #6c757d;\n \n --muted-text-color: #86919F;\n \n --input-text-color: #AFB8C6;\n --input-background-color: #404552;\n \n --hover-item-text-color: white;\n --hover-item-background-color: #4877B1;\n \n --active-item-text-color: white;\n --active-item-background-color: #4877B1;\n \n --menu-text-color: #AFB8C6;\n --menu-background-color: #383C4A;\n \n --modal-background-color: #404552;\n --modal-backdrop-color: black;\n \n --left-pane-background-color: #2F343F;\n --left-pane-text-color: #AFB8C6;\n\n --launcher-pane-background-color: #2F343F;\n --launcher-pane-text-color: #AFB8C6;\n\n --active-tab-background-color: #2F343F;\n --active-tab-text-color: #AFB8C6;\n\n --inactive-tab-background-color: #404552;\n --inactive-tab-text-color: #AFB8C6;\n \n --scrollbar-border-color: rgba(175, 184, 198, 0.5);\n --tooltip-background-color: #383C4A;\n --link-color: lightskyblue;\n \n --mermaid-theme: forest;\n}\n\nbody .global-menu-button {\n background-image: url(\"../../../assets/vX/images/icon-grey.png\");\n}\n\nbody .note-detail-editable-text, body .note-detail-readonly-text {\n font-size: 120%; /* Garamond is subjectively smaller */\n}\n\nbody .CodeMirror {\n filter: invert(100%) hue-rotate(180deg);\n}\n"}, {"noteId": "1ig7RB58gfLA", "title": "template", "type": "code", "mime": "text/html", "blobId": "K7mBCXkRI1ADZnvFlwvs", "content": "
\n

This table shows notes with most revisions

\n\n \n \n \n \n \n
NoteRevision count
\n
"}, {"noteId": "2JsGaSEmZSku", "title": "Buy a board game for Alice", "type": "text", "mime": "text/html", "blobId": "cCBbYvG78XQ7iIITeB98", "content": "
\n \n
\n

Maybe CodeNames? https://boardgamegeek.com/boardgame/178900/codenames\n\n

"}, {"noteId": "2WPW8XuNCa5O", "title": "Unity shortcuts", "type": "text", "mime": "text/html", "blobId": "P9hheXjqHsfaetNnIrRA", "content": ""}, {"noteId": "2Y8gtMg4lkeL", "title": "Create Launcher", "type": "code", "mime": "application/javascript;env=backend", "blobId": "P9fjHrjIKcaQXup4HomR", "content": "// will add a launcher to the left sidebar\napi.createOrUpdateLauncher({\n id: 'taskmanager',\n type: 'script',\n title: 'New task',\n icon: 'bx-task',\n keyboardShortcut: 'alt+n',\n scriptNoteId: api.currentNote.getRelationValue('createNewTask'),\n isVisible: true\n});"}, {"noteId": "2dGeybZrB2V4", "title": "Weight Tracker", "type": "render", "mime": "text/html", "blobId": "z4PhNX7vuL3xVChQ1m2A", "content": ""}, {"noteId": "2dHWLis0foru", "title": "HR", "type": "text", "mime": "text/html", "blobId": "aCzP1jK6b5XWUO4zbJwU", "content": "

HR stuff

"}, {"noteId": "2lpgmasyYDzj", "title": "Sequence", "type": "mermaid", "mime": "text/mermaid", "blobId": "8RVqdTmU0SnlGFH3XCIf", "content": "sequenceDiagram\nAlice->>John: Hello John, how are you?\nloop Healthcheck\n John->>John: Fight against hypochondria\nend\nNote right of John: Rational thoughts!\nJohn-->>Alice: Great!\nJohn->>Bob: How about you?\nBob-->>John: Jolly good!"}, {"noteId": "2w4ocNQNJfNr", "title": "TODO", "type": "text", "mime": "text/html", "blobId": "z4PhNX7vuL3xVChQ1m2A", "content": ""}, {"noteId": "30pkoVBjoJr1", "title": "Book to read", "type": "text", "mime": "text/html", "blobId": "lbiBK6ACbWU69SwCqVzO", "content": "

How to be a stoic from Massimo Pigliuci:

\n

https://www.amazon.com/gp/product/B01K3WN1BY?pf_rd_m=A2R2RITDJNW1Q6&storeType=ebooks&pageType=STOREFRONT&pf_rd_p=8e2a96d9-c848-435b-92bd-0856850ad544&pf_rd_r=4J6CT15BS4X8062XNGDF&pf_rd_s=merchandised-search-5&pf_rd_t=40901&ref_=dbs_f_ebk_rwt_scns_mwl_ms5_kmw_8e2a96d9-c848-435b-92bd-0856850ad544_2&pf_rd_i=154606011 

"}, {"noteId": "3aJm04cq98Xt", "title": "Highlights", "type": "text", "mime": "text/html", "blobId": "ugG1YdGiu1puKZzDATyj", "content": "
\n

Like a raindrop rolling down dry valleys to the sea, his body sensed the\n contours of agony and helplessly followed their gradient. Impelled by alchemical\n compulsion rather than gravity, Jax became an unstoppable boulder careering\n along gullies of human whim.

\n
\n
\n

Free Will was a vacuum, a negative space. It was the absence of coercion,\n the absence of compulsion, the absence of agony.

\n
\n
\n

Overwhelming: he could do anything he wanted. But the grand sum of anything-at-all\n was nothing-at-all. The topology of freedom offered no gradients to nudge\n him, no landmarks to guide him. How did humans guide themselves? How did\n they know what to do and what not to do? How did they know when to do anything\n without the benefit of geasa and metageasa to prioritize every single action\n of their waking lives? How did they order their daily existence without\n somebody to tell them what to do?

\n
\n
\n

Life as a slave was unspeakable; life as a slave who had briefly tasted\n freedom was unthinkable. Clakkers carried complex geasa by dint of alchemy;\n humans carried heavy obligations, too, but called them culture. Society.

\n
"}, {"noteId": "4uByxKy2AXhL", "title": "template", "type": "code", "mime": "text/html", "blobId": "uOu6UrS9XBBc4KYvucX9", "content": "
\n

This table shows notes which are linked by other notes through relations

\n\n \n \n \n \n \n
NoteRelation count
\n
"}, {"noteId": "5CofmOUgnTsL", "title": "js", "type": "code", "mime": "application/javascript;env=frontend", "blobId": "h4jXCQm4aOYBibUr5Qpl", "content": "const notes = await api.runOnBackend(() => {\n return api.sql.getRows(`\n SELECT\n notes.noteId,\n COUNT(branches.branchId) AS count\n FROM notes\n JOIN branches USING (noteId)\n WHERE notes.isDeleted = 0\n AND branches.isDeleted = 0\n GROUP BY notes.noteId\n HAVING count > 1\n ORDER BY count DESC\n LIMIT 100`);\n});\n\nconst $statsTable = api.$container.find('.stats-table');\n\nfor (const note of notes) { \n $statsTable.append(\n $(\"\")\n .append(\n $(\"\").append(await api.createNoteLink(note.noteId, {showNotePath: true}))\n ) \n .append($(\"\").text(note.count))\n );\n}"}, {"noteId": "5JDvxwpkXvhx", "title": "While loop", "type": "text", "mime": "text/html", "blobId": "Cyuhiu6BXMD6cFw5LUbP", "content": "

Documentation: http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_09_02.html\n\n

#!/bin/bash\n\n# This script opens 4 terminal windows.\n\n\n\ni=\"0\"\n\nwhile [ $i -lt 4 ]\n\ndo\n\n    xterm &\n\n\n\n    i=$[$i+1]\n\ndone
"}, {"noteId": "63Kca8iYcBB8", "title": "Formatting examples", "type": "book", "mime": "", "blobId": "z4PhNX7vuL3xVChQ1m2A", "content": ""}, {"noteId": "6QHU4ZjihjCm", "title": "C4", "type": "mermaid", "mime": "text/plain", "blobId": "yvgPv9uIquBveT4solgY", "content": "C4Context\ntitle System Context diagram for Internet Banking System\n\nPerson(customerA, \"Banking Customer A\", \"A customer of the bank, with personal bank accounts.\")\nPerson(customerB, \"Banking Customer B\")\nPerson_Ext(customerC, \"Banking Customer C\")\nSystem(SystemAA, \"Internet Banking System\", \"Allows customers to view information about their bank accounts, and make payments.\")\n\nPerson(customerD, \"Banking Customer D\", \"A customer of the bank,
with personal bank accounts.\")\n\nEnterprise_Boundary(b1, \"BankBoundary\") {\n\n SystemDb_Ext(SystemE, \"Mainframe Banking System\", \"Stores all of the core banking information about customers, accounts, transactions, etc.\")\n\n System_Boundary(b2, \"BankBoundary2\") {\n System(SystemA, \"Banking System A\")\n System(SystemB, \"Banking System B\", \"A system of the bank, with personal bank accounts.\")\n }\n\n System_Ext(SystemC, \"E-mail system\", \"The internal Microsoft Exchange e-mail system.\")\n SystemDb(SystemD, \"Banking System D Database\", \"A system of the bank, with personal bank accounts.\")\n\n Boundary(b3, \"BankBoundary3\", \"boundary\") {\n SystemQueue(SystemF, \"Banking System F Queue\", \"A system of the bank, with personal bank accounts.\")\n SystemQueue_Ext(SystemG, \"Banking System G Queue\", \"A system of the bank, with personal bank accounts.\")\n }\n}\n\nBiRel(customerA, SystemAA, \"Uses\")\nBiRel(SystemAA, SystemE, \"Uses\")\nRel(SystemAA, SystemC, \"Sends e-mails\", \"SMTP\")\nRel(SystemC, customerA, \"Sends e-mails to\")"}, {"noteId": "6ttpWiHzBpfF", "title": "Christmas", "type": "text", "mime": "text/html", "blobId": "CvWsCqTrcURCXiMZpKsZ", "content": "

This christmas is going to be awesome!

"}, {"noteId": "6zGuLZ6EgMtN", "title": "Trusted timestamping", "type": "text", "mime": "text/html", "blobId": "JX9z5Xw6oX0DmGXK8zhQ", "content": "

Wiki: https://en.wikipedia.org/wiki/Trusted_timestamping\n\n

\n

Bozho: https://techblog.bozho.net/using-trusted-timestamping-java/\n\n

\n

Trusted timestamping is the process of securely keeping\n track of the creation and modification time of a document. Security here\n means that no one—not even the owner of the document—should be able to\n change it once it has been recorded provided that the timestamper's integrity\n is never compromised.

\n

The administrative aspect involves setting up a publicly available, trusted\n timestamp management infrastructure to collect, process and renew timestamps.

"}, {"noteId": "7ClNUW83JOLe", "title": "Intro", "type": "text", "mime": "text/html", "blobId": "P8IFV01pUSmDLbgR6rZf", "content": "

Node.js is an open-source,\n cross-platform, JavaScript \n runtime environmentthat executes JavaScript code outside of a browser.\n Node.js lets developers use JavaScript to write command line tools and\n for server-side scripting—running\n scripts server-side to produce dynamic web page content\n before the page is sent to the user's web browser. 

"}, {"noteId": "7NfbiSmiVFyR", "title": "Day template", "type": "text", "mime": "text/html", "blobId": "U1PPY8I4vnZjNXmSyQaj", "content": "

TODO:

\n "}, {"noteId": "7X6X3Nkapnc4", "title": "raleway-v12-latin-regular.woff2", "type": "file", "mime": "application/octet-stream", "blobId": "U0AnhEJmfCAnzF0T5Wsl", "content": null}, {"noteId": "884KbAqwGImN", "title": "work", "type": "text", "mime": "text/html", "blobId": "z4PhNX7vuL3xVChQ1m2A", "content": ""}, {"noteId": "8uXic10dvc7V", "title": "Vacation", "type": "text", "mime": "text/html", "blobId": "0YJmOBhQMG3rZXRZQJaZ", "content": "

Planning stuff etc.

"}, {"noteId": "8wxJN0J6VKyI", "title": "History", "type": "text", "mime": "text/html", "blobId": "DeeJOYAx3LKXgx8zTeSt", "content": "

Node.js was written initially by Ryan Dahl in\n 2009,[24] about\n thirteen years after the introduction of the first server-side JavaScript\n environment, Netscape's LiveWire Pro Web.[25] The\n initial release supported only Linux and Mac OS X. Its development and\n maintenance was led by Dahl and later sponsored by Joyent.\n [26]\n

"}, {"noteId": "99U3W8kOY0bY", "title": "Phone call about work project", "type": "text", "mime": "text/html", "blobId": "IN4AlPQR57iKl1ElLspg", "content": "

Bla bla bla ...

"}, {"noteId": "9ZBB7rBqMxEK", "title": "23 - Saturday", "type": "text", "mime": "text/html", "blobId": "U1PPY8I4vnZjNXmSyQaj", "content": "

TODO:

\n "}, {"noteId": "A2chnjfm2Lsp", "title": "Maybe Black Swan?", "type": "text", "mime": "text/html", "blobId": "zEc35JSeq5hrYMYs7P5R", "content": "

https://en.wikipedia.org/wiki/The_Black_Swan:_The_Impact_of_the_Highly_Improbable\n\n

\n

The Black Swan: The Impact of the Highly Improbable is\n a 2007 book by author and former options trader \n Nassim Nicholas Taleb. The book focuses on the extreme impact of rare\n and unpredictable outlier events\n — and the human tendency to find simplistic explanations for these events,\n retrospectively. Taleb calls this the Black Swan theory.

"}, {"noteId": "AJq0qJ04ejku", "title": "Christ the Redeemer, Brazil", "type": "text", "mime": "text/html", "blobId": "D8uJZfuQUYEzu9LHZIWd", "content": "

The totemic statue of Christ the Redeemer stands\n over Rio de Janeiro on the top of Mount Corcovado.\n At 30 meters tall, this monument is an iconic emblem of Brazil. This huge\n public artwork was designed by the Polish-French sculptor Paul Landowski in the 1920s and\n completed by Brazilian engineer Heitor da Silva Costa and French engineer\n Albert Caquot in 1931. Made from reinforced\n concrete clad in over six million soapstone tiles, the Christ the Redeemer\n statue is the largest Art Deco sculpture\n in the world. Built just after the end of the First World War, the sculpture\n was an overpowering symbol of Christianity and hope when the world had\n been brought to its knees.[1]\n\n

\n
    \n
  1. ^\n\n \n

    What Are the 7 Wonders of the World? (with HD Images) | TheCollector\n\n

    \n \n
  2. \n
"}, {"noteId": "AKehCOdmh8N4", "title": "Mind Map", "type": "mermaid", "mime": "text/mermaid", "blobId": "zcPP8QXLUjwLIVgsk9wk", "content": "mindmap\n root((mindmap))\n Origins\n Long history\n ::icon(fa fa-book)\n Popularisation\n British popular psychology author Tony Buzan\n Research\n On effectiveness
and features\n On Automatic creation\n Uses\n Creative techniques\n Strategic planning\n Argument mapping\n Tools\n Pen and paper\n Mermaid"}, {"noteId": "ARSorsyF8vur", "title": "template", "type": "code", "mime": "text/html", "blobId": "oFguG8HOUjfatSSgXQ5a", "content": "
\n

This table shows 100 largest notes, including their revisions and attachments.

\n\n \n \n \n \n \n
NoteSize
\n
"}, {"noteId": "BdeGRs0x9xSN", "title": "Christmas gift ideas", "type": "text", "mime": "text/html", "blobId": "ydiywFx1iSVYq0YZKVf7", "content": ""}, {"noteId": "C5fffQJ0Vzr1", "title": "renderTable", "type": "code", "mime": "application/javascript;env=frontend", "blobId": "4zefiLGUDXwtYK7GMYFd", "content": "module.exports = counts => {\n const $statsTable = api.$container.find('.stats-table');\n \n addRow('total', counts.reduce((acc, cur) => acc + cur.count, 0));\n \n for (const count of counts) { \n addRow(count.name, count.count);\n }\n\n function addRow(name, count) {\n $statsTable.append(\n $(\"\")\n .append($(\"\").text(name))\n .append($(\"\").text(count))\n );\n }\n}"}, {"noteId": "CCXHSZUdUqKh", "title": "Bar chart", "type": "mermaid", "mime": "text/mermaid", "blobId": "e7YlcXGRKjHOSZqOAjTh", "content": "gantt\n title Git Issues - days since last update\n dateFormat X\n axisFormat %s\n\n section Issue19062\n 71 : 0, 71\n section Issue19401\n 36 : 0, 36\n section Issue193\n 34 : 0, 34\n section Issue7441\n 9 : 0, 9\n section Issue1300\n 5 : 0, 5"}, {"noteId": "CkfccV2eK64Q", "title": "christmas", "type": "text", "mime": "text/html", "blobId": "z4PhNX7vuL3xVChQ1m2A", "content": ""}, {"noteId": "CtzZHC0bEYBs", "title": "12.jpeg", "type": "image", "mime": "image/jpg", "blobId": "Xega4MOoHg4stQdwIiTL", "content": null}, {"noteId": "DFWewWDOEASg", "title": "mall", "type": "text", "mime": "text/html", "blobId": "z4PhNX7vuL3xVChQ1m2A", "content": ""}, {"noteId": "DunHjYmzinaA", "title": "11 - November", "type": "text", "mime": "text/html", "blobId": "z4PhNX7vuL3xVChQ1m2A", "content": ""}, {"noteId": "E1e6RXYb7KDR", "title": "18 - Monday", "type": "text", "mime": "text/html", "blobId": "5iYtuHCdiyWzrjklqXVS", "content": "

Miscellaneous notes done on monday ...

\n

 

\n

Interesting video: https://www.youtube.com/watch?v=_eSAF_qT_FY&feature=youtu.be\n\n

\n

 

\n

 

"}, {"noteId": "EJdquo8kv1zO", "title": "Statistics", "type": "book", "mime": "", "blobId": "z4PhNX7vuL3xVChQ1m2A", "content": ""}, {"noteId": "EUFHVXneqbx5", "title": "The Great Wall of China", "type": "text", "mime": "text/html", "blobId": "Ykf8Xg4aB6Oy29FUvhzP", "content": "

The Great Wall of China is\n a huge barrier that spans thousands of miles along China’s historic northern\n border. Created over millennia, the wall began its life as a series of\n smaller walls dating back to the 7th century BCE, built as protective barriers against nomadic raids.\n In 220 BCE, China’s first Emperor, Qin Shi Huang,\n masterminded the unification of all of China’s walls into one almighty\n barrier, strengthening and extending the wall to keep out northern invaders.\n [1]\n\n \n

\n
    \n
  1. ^\n\n \n

    What Are the 7 Wonders of the World? (with HD Images) | TheCollector\n\n

    \n \n
  2. \n
"}, {"noteId": "EW0u2LoAZTYv", "title": "renderTable", "type": "code", "mime": "application/javascript;env=frontend", "blobId": "jINYGKT8ytF5OTUycZ3X", "content": "module.exports = counts => {\n const $statsTable = api.$container.find('.stats-table');\n \n addRow('total', \n counts.reduce((acc, cur) => acc + cur.countNotDeleted, 0), \n counts.reduce((acc, cur) => acc + cur.countDeleted, 0)\n );\n \n for (const count of counts) {\n addRow(count.type, count.countNotDeleted, count.countDeleted);\n }\n\n function addRow(type, countNotDeleted, countDeleted) {\n $statsTable.append(\n $(\"\")\n .append($(\"\").text(type))\n .append($(\"\").text(countNotDeleted))\n .append($(\"\").text(countDeleted))\n );\n }\n}"}, {"noteId": "Eb5gUQ4cLqj0", "title": "Security", "type": "text", "mime": "text/html", "blobId": "z4PhNX7vuL3xVChQ1m2A", "content": ""}, {"noteId": "Er60onkDudHj", "title": "Photos from the trip", "type": "book", "mime": "text/html", "blobId": "z4PhNX7vuL3xVChQ1m2A", "content": ""}, {"noteId": "G64qu5vIx5gB", "title": "Note Types", "type": "text", "mime": "text/html", "blobId": "z4PhNX7vuL3xVChQ1m2A", "content": ""}, {"noteId": "GIfEhKrDNdnn", "title": "24 - Sunday - Christmas Eve!", "type": "text", "mime": "text/html", "blobId": "U1PPY8I4vnZjNXmSyQaj", "content": "

TODO:

\n "}, {"noteId": "GYQ4woytE4Ct", "title": "Vacation days", "type": "text", "mime": "text/html", "blobId": "011hW6sejdzLVbSOun3b", "content": "

25. 12., 26. 12., 1. 1. - statutory holidays

\n

27. 12. - 29. 12., 2. 1. - vacation days

"}, {"noteId": "H9buVO01mMRb", "title": "Gantt", "type": "mermaid", "mime": "text/plain", "blobId": "54wNwlcT7pQhxtk0Dt7N", "content": "gantt\nsection Section\nCompleted :done, des1, 2014-01-06,2014-01-08\nActive :active, des2, 2014-01-07, 3d\nParallel 1 : des3, after des1, 1d\nParallel 2 : des4, after des1, 1d\nParallel 3 : des5, after des3, 1d\nParallel 4 : des6, after des4, 1d"}, {"noteId": "HPalPupDqMGJ", "title": "Bash scripting", "type": "text", "mime": "text/html", "blobId": "fYvKJXd0DOOXYx2WXh7G", "content": "

Bash is a Unix shell and\n command languagewritten by Brian Fox for\n the GNU Project as\n a free software replacement\n for the Bourne shell.\n First released in 1989, it has been distributed widely as the default\n loginshell for most Linux distributions\n and Apple's macOS (formerly\n OS X). A version is also available for Windows 10.

\n

Bash on Wikipedia\n\n

"}, {"noteId": "HlLfbi37EMDe", "title": "Send invites for christmas party", "type": "text", "mime": "text/html", "blobId": "z4PhNX7vuL3xVChQ1m2A", "content": ""}, {"noteId": "JfRGxD2Yl7Lw", "title": "Petra, Jordan", "type": "text", "mime": "text/html", "blobId": "PMe5iu7R4LaV7PvKIVTA", "content": "

Petra,\n the ancient city in southern Jordan, is also known as the “rose city” for\n its golden hue. It dates as far back as 312 BCE. Set in a remote valley,\n this city was founded by the Arab Nabataeans, a sophisticated civilization\n that carved stunning architecture and complex waterways out of surrounding\n rock faces. The Nabateans also established Petra as a successful trade\n hub, earning vast wealth and a booming population before being wiped out\n by earthquakes.[1]\n\n

\n
    \n
  1. ^\n\n \n

    What Are the 7 Wonders of the World? (with HD Images) | TheCollector\n\n

    \n \n
  2. \n
"}, {"noteId": "K7ubChwTqcjt", "title": "Bash startup modes", "type": "text", "mime": "text/html", "blobId": "DleXguJZytJBkBW1WkM7", "content": "

Login shell

\n\n

As a \"login shell\", Bash reads and sets (executes) the user's profile\n from /etc/profile and one of ~/.bash_profile, ~/.bash_login, or ~/.profile\n (in that order, using the first one that's readable!).

\n

When a login shell exits, Bash reads and executes commands from the file\n ~/.bash_logout, if it exists.

\n

Why an extra login shell mode? There are many actions and variable sets\n that only make sense for the initial user login. That's why all UNIX® shells\n have (should have) a \"login\" mode.

\n

Methods to start Bash as a login shell:\n\n

\n \n

Methods to test for login shell mode:\n\n

\n \n

Related switches:\n\n

\n \n

Interactive shell

\n\n

When Bash starts as an interactive non-login shell, it reads and executes\n commands from ~/.bashrc. This file should contain, for example, aliases,\n since they need to be defined in every shell as they're not inherited from\n the parent shell.

\n

The feature to have a system-wide /etc/bash.bashrc or a similar system-wide\n rc-file is specific to vendors and distributors that ship their own, patched variant of Bash.\n The classic way to have a system-wide rc file is to source /etc/bashrc\n from every user's ~/.bashrc.

\n

Methods to test for interactive-shell mode:\n\n

\n \n

Related switches:\n\n

\n \n

SH mode

\n\n

When Bash starts in SH compatiblity mode, it tries to mimic the startup\n behaviour of historical versions of sh as closely as possible, while conforming\n to the POSIX® standard as well. The profile files read are /etc/profile\n and ~/.profile, if it's a login shell.

\n

If it's not a login shell, the environment variable ENV is\n evaluated and the resulting filename is used as the name of the startup\n file.

\n

After the startup files are read, Bash enters the POSIX(r) compatiblity mode (for running, not for starting!).

\n

Bash starts in sh compatiblity mode when:\n\n

\n "}, {"noteId": "KU7wExF0UoWv", "title": "js", "type": "code", "mime": "application/javascript;env=frontend", "blobId": "Qo2LERJr3uM8XKL65fvo", "content": "const attrCounts = await api.runOnBackend(() => {\n return api.sql.getRows(`\n SELECT\n name, COUNT(*) AS count\n FROM attributes\n WHERE isDeleted = 0\n GROUP BY name\n ORDER BY count DESC`);\n});\n\nrenderPieChart(attrCounts.length <= 10 ? attrCounts : attrCounts.splice(0, 10));\nrenderTable(attrCounts);"}, {"noteId": "KnJbimHaokHD", "title": "Christmas dinner", "type": "text", "mime": "text/html", "blobId": "yJPDsx0UYVOCI2autDku", "content": "

Carp of course!

"}, {"noteId": "Les04WQwgFxW", "title": "Overview", "type": "text", "mime": "text/html", "blobId": "EQ4oveZY5h4lxYr4p9Kt", "content": "

Node.js allows the creation of Web servers and\n networking tools using JavaScript and\n a collection of \"modules\" that handle various core functionalities.[28] \n [31][44] \n [45][46] Modules\n are provided for file system I/O,\n networking (DNS,\n HTTP, TCP,\n TLS/SSL, or UDP),\n binarydata (buffers), cryptography functions,\n data streams, and other core functions.[31] \n [45][47] Node.js's\n modules use an API designed to reduce the complexity of writing server\n applications.[31] \n [45]\n

"}, {"noteId": "LmjcSRwS4IJL", "title": "Locations", "type": "text", "mime": "text/html", "blobId": "z4PhNX7vuL3xVChQ1m2A", "content": ""}, {"noteId": "LybeV4wPIF18", "title": "createNewTask", "type": "code", "mime": "application/javascript;env=frontend", "blobId": "iRjU1OL6pNcskGzKnOTH", "content": "// creating notes is backend (server) responsibility so we need to pass\n// the control there\nconst taskNoteId = await api.runOnBackend(() => {\n const todoRootNote = api.getNoteWithLabel('taskTodoRoot');\n const resp = api.createTextNote(todoRootNote.noteId, 'new task', '');\n\n return resp.note.noteId;\n});\n\n// wait until the frontend is fully synced with the changes made on the backend above\nawait api.waitUntilSynced();\n\n// we got an ID of newly created note and we want to immediatelly display it\nawait api.activateNewNote(taskNoteId);"}, {"noteId": "LzN9kXj9lckq", "title": "The Mechanical", "type": "text", "mime": "text/html", "blobId": "gexI6nrQWgzGvmZU6DKB", "content": "

I enjoyed this book a lot. It's slow moving at times with the author taking\n his time with conversations and descriptions of them. The premise is very\n interesting, but I'm sad that it wasn't elaborated more deeply - e.g. the\n history and development of the clakker technology with Huygens and how\n Spinoza comes into the picture. Maybe the author saves it for the next\n two parts of the book.

\n

Language can be intimidating at first for non-native english speakers\n - author uses wide range of vocabulary. Fortunately it gets better after\n a while as reader adjusts.

"}, {"noteId": "MVkye4fFj18h", "title": "template", "type": "code", "mime": "text/html", "blobId": "PmOKLSjVwh5eyju79d6S", "content": "
\n \n\n
\n\n \n \n \n \n \n
Attribute nameCount
\n
"}, {"noteId": "NF8xjCteDga4", "title": "Node.js", "type": "book", "mime": "text/html", "blobId": "z4PhNX7vuL3xVChQ1m2A", "content": ""}, {"noteId": "O2SeluCxgTt5", "title": "11.jpeg", "type": "image", "mime": "image/jpg", "blobId": "4Entru89YBSPNK5cNXjQ", "content": null}, {"noteId": "OYNkWb9Dw8Cm", "title": "Buy some book for Bob", "type": "text", "mime": "text/html", "blobId": "MzYDiS0KZkfGuZu7RFIV", "content": "

Bob likes to read popular science books so something like that…

"}, {"noteId": "PF0ofV83QNq9", "title": "Book template", "type": "text", "mime": "text/html", "blobId": "QUw7MDQROeiTYYDjQ4jN", "content": "

Main characters

\n\n

… here put main characters …

\n

 

\n

Plot

\n\n

… describe main plot lines …

\n

 

\n

Tone

\n\n

 

\n

Genre

\n\n

scifi / drama / romance

\n

 

\n

Similar books

\n\n "}, {"noteId": "PIe1Zq2DKmFt", "title": "20 - Wednesday", "type": "text", "mime": "text/html", "blobId": "U1PPY8I4vnZjNXmSyQaj", "content": "

TODO:

\n "}, {"noteId": "PUAIjmnDHzwt", "title": "Implementation", "type": "code", "mime": "text/html", "blobId": "l6gM0gVsfwxoMiYT2J6m", "content": "
\n See explanation here.\n\n \n
"}, {"noteId": "PkAgDbfu8Ytx", "title": "Mermaid Diagrams", "type": "book", "mime": "", "blobId": "z4PhNX7vuL3xVChQ1m2A", "content": ""}, {"noteId": "Q58iqgBT1KbT", "title": "Tags", "type": "text", "mime": "text/html", "blobId": "z4PhNX7vuL3xVChQ1m2A", "content": ""}, {"noteId": "Q8PtvZKwyiBS", "title": "Highlighting", "type": "text", "mime": "text/html", "blobId": "b52GQIEF9186xDxg540Y", "content": "

Space Shuttle Discovery (Orbiter Vehicle\n Designation: OV-103) is one of the orbiters from NASA's Space\n Shuttle program and the third of five fully operational orbiters to be\n built. Its first mission, STS-41-D, flew from August 30 to September 5,\n 1984. Over 27 years of service it launched and landed 39 times,\n gathering more spaceflights than any other spacecraft to date. The shuttle\n has three main components: the Space Shuttle orbiter, a central fuel tank,\n and two rocket boosters. Nearly 25,000 heat resistant tiles cover\n the orbiter to protect it from high temperatures on re-entry.

\n

Discovery became the third operational orbiter to enter service, preceded\n by Columbia and Challenger. It embarked on its last mission, STS-133, on February 24, 2011 and\n touched down for the final time at Kennedy Space Center on March 9, having\n spent a cumulative total of almost a full year in space. Discovery performed\n both research and International Space Station (ISS) assembly missions,\n and also carried the Hubble Space Telescope into orbit.

"}, {"noteId": "QwJhK5BRX1gU", "title": "renderPieChart", "type": "code", "mime": "application/javascript;env=frontend", "blobId": "5AbRYhqY3ZIwU4xB6bY4", "content": "module.exports = data => {\n const ctx = api.$container.find('.stats-canvas')[0].getContext(\"2d\");\n \n const myPieChart = new Chart(ctx, {\n type: 'pie',\n data: {\n datasets: [{\n data: data.map(nc => nc.count),\n backgroundColor: ['#3366CC','#DC3912','#FF9900','#109618','#990099','#3B3EAC','#0099C6','#DD4477','#66AA00','#B82E2E','#316395','#994499','#22AA99','#AAAA11','#6633CC','#E67300','#8B0707','#329262','#5574A6','#3B3EAC'],\n datalabels: {\n anchor: 'end'\n }\n }],\n labels: data.map(nc => nc.name)\n },\n options: {\n legend: {\n display: false\n },\n plugins: {\n datalabels: {\n backgroundColor: function(context) {\n return context.dataset.backgroundColor;\n },\n borderColor: 'white',\n borderRadius: 25,\n borderWidth: 2,\n color: 'white',\n display: function(context) {\n var dataset = context.dataset;\n var count = dataset.data.length;\n var value = dataset.data[context.dataIndex];\n return value > count * 1.5;\n },\n font: {\n weight: 'bold'\n },\n formatter: function(value, context) {\n return context.chart.data.labels[context.dataIndex] + \": \" + Math.round(value);\n }\n }\n }\n }\n });\n}"}, {"noteId": "RGUQPbdTBWz1", "title": "12 - December", "type": "text", "mime": "text/html", "blobId": "z4PhNX7vuL3xVChQ1m2A", "content": ""}, {"noteId": "SBzfvGlDr57r", "title": "The Taj Mahal, India", "type": "text", "mime": "text/html", "blobId": "l3Z33qQ8bSx5DAk2oq49", "content": "

India’s renowned Taj Mahal (Persian for Crown of Palaces) is\n the stunning white marble mausoleum on the bank of the Yamuna River in\n the city of Agra. It has also been selected as one of the seven wonders\n of the world. Mughal emperor Shah Jahan built\n the temple as a tomb for his beloved wife, Mumtaz Mahal, who died during\n childbirth in 1631. A marble tomb in the center is surrounded by 42 acres\n of grounds, where gardens, a mosque, a guest house, and a pool complete\n the complex.[1]\n\n

\n
    \n
  1. ^\n\n \n

    What Are the 7 Wonders of the World? (with HD Images) | TheCollector\n\n

    \n \n
  2. \n
"}, {"noteId": "SeJEM98VgbTG", "title": "health", "type": "text", "mime": "text/html", "blobId": "z4PhNX7vuL3xVChQ1m2A", "content": ""}, {"noteId": "SpS3KsNPwCM9", "title": "Linux", "type": "text", "mime": "text/html", "blobId": "z4PhNX7vuL3xVChQ1m2A", "content": ""}, {"noteId": "SqPyuFmsgFMb", "title": "Word count widget", "type": "code", "mime": "application/javascript;env=frontend", "blobId": "3cktSRQS3pMLX161oDPF", "content": "/*\n * This defines a custom widget which displays number of words and characters in a current text note.\n * To be activated for a given note, add label 'wordCount' to the note, you can also make it inheritable and thus activate it for the whole subtree.\n * \n * See it in action in \"Books\" and its subtree.\n */\nconst TPL = `
\n Word count: \n \n\n  \n\n Character count: \n \n
`;\n\nclass WordCountWidget extends api.NoteContextAwareWidget {\n get position() { return 100; } // higher value means position towards the bottom/right\n\n get parentWidget() { return 'center-pane'; }\n\n isEnabled() {\n return super.isEnabled()\n && this.note.type === 'text'\n && this.note.hasLabel('wordCount');\n }\n\n doRender() {\n this.$widget = $(TPL);\n this.$wordCount = this.$widget.find('.word-count');\n this.$characterCount = this.$widget.find('.character-count');\n return this.$widget;\n }\n\n async refreshWithNote(note) {\n const {content} = await note.getNoteComplement();\n\n const text = $(content).text(); // get plain text only\n\n const counts = this.getCounts(text);\n\n this.$wordCount.text(counts.words);\n this.$characterCount.text(counts.characters);\n }\n\n getCounts(text) {\n const chunks = text\n .split(/[\\s-+:,/\\\\]+/)\n .filter(chunk => chunk !== '');\n\n let words;\n\n if (chunks.length === 1 && chunks[0] === '') {\n words = 0;\n }\n else {\n words = chunks.length;\n }\n\n const characters = chunks.join('').length;\n\n return {words, characters};\n }\n\n async entitiesReloadedEvent({loadResults}) {\n if (loadResults.isNoteContentReloaded(this.noteId)) {\n this.refresh();\n }\n }\n}\n\nmodule.exports = new WordCountWidget();"}, {"noteId": "T8ozCOYg1vuf", "title": "Highlights", "type": "text", "mime": "text/html", "blobId": "19b1FmVBurt5ZBYzSqUX", "content": "
\n

highlght 1

\n
\n

my comment

"}, {"noteId": "TI803lmCFhLG", "title": "22 - Friday", "type": "text", "mime": "text/html", "blobId": "U1PPY8I4vnZjNXmSyQaj", "content": "

TODO:

\n "}, {"noteId": "TfzT2WmL69Wt", "title": "template", "type": "code", "mime": "text/html", "blobId": "WYKGDnPM32x4spWQQ0Ji", "content": "
\n \n \n \n \n \n
NoteClone count
\n
"}, {"noteId": "UDnC2ySmwb1E", "title": "tesco", "type": "text", "mime": "text/html", "blobId": "z4PhNX7vuL3xVChQ1m2A", "content": ""}, {"noteId": "USEHdGknRYoS", "title": "Machu Picchu, Peru", "type": "text", "mime": "text/html", "blobId": "A5md2nwbowkgP0RdcALG", "content": "

Machu Picchu is\n a lost treasure of the 15th century and a rare citadel discovered high\n in the Andes mountains above the Peruvian Sacred Valley. Astonishingly,\n it is one of the only pre-Columbian ruins found nearly intact, featuring\n evidence of former plazas, temples, agricultural terraces, and homes. Archaeologists\n believe the citadel was built as an estate for the Inca emperor Pachacuti in\n around 1450 in polished drystone walls.[1]\n\n

\n
    \n
  1. ^\n\n \n

    What Are the 7 Wonders of the World? (with HD Images) | TheCollector\n\n

    \n \n
  2. \n
"}, {"noteId": "Uvosf09w8myM", "title": "Most edited notes", "type": "render", "mime": "", "blobId": "z4PhNX7vuL3xVChQ1m2A", "content": ""}, {"noteId": "VRkSdt3vYlat", "title": "21 - Thursday", "type": "text", "mime": "text/html", "blobId": "U1PPY8I4vnZjNXmSyQaj", "content": "

TODO:

\n "}, {"noteId": "VY3TZfeVrTG7", "title": "Chichén Itzá, Mexico", "type": "text", "mime": "text/html", "blobId": "7dbYuYpm3TXiKVXsN4O5", "content": "

Deep in the Mexican state of Yucatán lies Chichen Itza,\n a historic Mayan city\n built between the 9th and 12th centuries. Constructed by the pre-Columbian\n Mayan tribe Itzá,\n the city includes a series of monuments and temples. The most celebrated\n is El Castillo,\n also known as the Temple of Kukulcan. It is a huge step pyramid in the\n center of the city which was built as a devotional temple to the god Kukulkan.\n [1]\n\n \n

\n
    \n
  1. ^\n\n \n

    What Are the 7 Wonders of the World? (with HD Images) | TheCollector\n\n

    \n \n
  2. \n
"}, {"noteId": "Virygvl1PI3K", "title": "reconcileAssignments", "type": "code", "mime": "application/javascript;env=backend", "blobId": "4QdB1DaryIf89Yk5B5nw", "content": "module.exports = function (note, categoryRootNote, assignedCategories, labelName, isTaskDone) {\n const found = {};\n \n for (const categoryNote of categoryRootNote.getChildNotes()) {\n const label = categoryNote.getLabel(labelName);\n \n if (label) {\n found[label.value] = !isTaskDone && assignedCategories.includes(label.value);\n\n api.toggleNoteInParent(found[label.value], note.noteId, categoryNote.noteId);\n }\n }\n \n if (!isTaskDone) {\n for (const assignedCategory of assignedCategories) {\n if (!found[assignedCategory]) {\n const categoryNote = api.createTextNote(categoryRootNote.noteId, assignedCategory, \"\").note;\n \n categoryNote.addLabel(labelName, assignedCategory);\n\n api.ensureNoteIsPresentInParent(note.noteId, categoryNote.noteId);\n }\n }\n }\n}"}, {"noteId": "VzyZ9ykt9htN", "title": "Journey", "type": "mermaid", "mime": "text/plain", "blobId": "R8c9ekxGHnxXpDMOia6L", "content": " journey\n title My working day\n section Go to work\n Make tea: 5: Me\n Go upstairs: 3: Me\n Do work: 1: Me, Cat\n section Go home\n Go downstairs: 5: Me\n Sit down: 3: Me"}, {"noteId": "W5T6rJy0WKmY", "title": "Flow", "type": "mermaid", "mime": "text/mermaid", "blobId": "pC7UUQMQ19ilBmEEpjyE", "content": "graph TD\nA[Hard] -->|Text| B(Round)\nB --> C{Decision}\nC -->|One| D[Result 1]\nC -->|Two| E[Result 2]"}, {"noteId": "WBEp1sEz4ObG", "title": "09.jpeg", "type": "image", "mime": "image/jpg", "blobId": "UXDNaZD0IIa4LvpckA9V", "content": null}, {"noteId": "WJaFVVj6QO1J", "title": "js", "type": "code", "mime": "application/javascript;env=frontend", "blobId": "P7RnksTgq2VCcKXVOrZY", "content": "const noteCounts = await api.runOnBackend(() => {\n return api.sql.getRows(`\n SELECT\n type,\n isDeleted,\n SUM(CASE WHEN isDeleted=0 THEN 1 ELSE 0 END) AS countNotDeleted,\n SUM(CASE WHEN isDeleted=1 THEN 1 ELSE 0 END) AS countDeleted\n FROM notes\n GROUP BY type\n ORDER BY countNotDeleted DESC`);\n});\n\nrenderPieChart(noteCounts.map(nc => {\n return {\n name: nc.type,\n count: nc.countNotDeleted\n };\n}));\n\nrenderTable(noteCounts);"}, {"noteId": "WufnMrRP9SxZ", "title": "Office party", "type": "text", "mime": "text/html", "blobId": "B6QpZaldODVqS5X3JTle", "content": "

That was fun!

"}, {"noteId": "X2wWNfD43MIh", "title": "Done", "type": "text", "mime": "text/html", "blobId": "z4PhNX7vuL3xVChQ1m2A", "content": ""}, {"noteId": "X8Ee9m62D45p", "title": "30 - Thursday", "type": "text", "mime": "text/html", "blobId": "U1PPY8I4vnZjNXmSyQaj", "content": "

TODO:

\n "}, {"noteId": "XHxfAez5yL7L", "title": "The Colosseum, Rome, Italy", "type": "text", "mime": "text/html", "blobId": "73JB4WBffE2shKcu9acA", "content": "

The Colosseum is\n the great oval amphitheater in\n the center of Rome where gladiators once fought for their lives and\n the pleasure of the crowd. The largest amphitheater ever built, it was\n constructed from sand and stone over eight years, from 72 to 80 CE. The\n colossal structure could hold 80,000 spectators, arranged in a circular\n ring around the central stage. Dramatic and sometimes horrifying events\n took place here, not just gladiatorial games but also Classical plays,\n animal hunts, and executions. Some say water was even pumped into the arena\n to enact mock sea battles known as naumachia.\n [1]\n\n \n

\n
    \n
  1. ^\n\n \n

    What Are the 7 Wonders of the World? (with HD Images) | TheCollector\n\n

    \n \n
  2. \n
"}, {"noteId": "XqxTQweYFPTS", "title": "shopping", "type": "text", "mime": "text/html", "blobId": "z4PhNX7vuL3xVChQ1m2A", "content": ""}, {"noteId": "Z56PMxIxGueC", "title": "Pie", "type": "mermaid", "mime": "text/plain", "blobId": "xa42Uvu1wJPhWGNJzoOq", "content": "pie\n\"Dogs\" : 386\n\"Cats\" : 85\n\"Rats\" : 15"}, {"noteId": "ZgSYzLdSUm8i", "title": "eb-garamond-v9-latin-regular.woff2", "type": "file", "mime": "application/octet-stream", "blobId": "5SQO1Yuw93fQ5D9P53BN", "content": null}, {"noteId": "Zqbx4QzZLAw2", "title": "19 - Tuesday", "type": "text", "mime": "text/html", "blobId": "U1PPY8I4vnZjNXmSyQaj", "content": "

TODO:

\n "}, {"noteId": "ZzZGCavD42NG", "title": "Christmas shopping", "type": "text", "mime": "text/html", "blobId": "z4PhNX7vuL3xVChQ1m2A", "content": ""}, {"noteId": "aFabvNA0Upot", "title": "Canvas", "type": "canvas", "mime": "application/json", "blobId": "xTl2BKcDhrbjKjpbeeoX", "content": "{\"type\":\"excalidraw\",\"version\":2,\"elements\":[{\"type\":\"rectangle\",\"version\":235,\"versionNonce\":92121392,\"isDeleted\":false,\"id\":\"Nx_6ACJaaueNh0fTsVZeh\",\"fillStyle\":\"hachure\",\"strokeWidth\":1,\"strokeStyle\":\"solid\",\"roughness\":1,\"opacity\":100,\"angle\":0,\"x\":14.66796875,\"y\":8.13671875,\"strokeColor\":\"#000000\",\"backgroundColor\":\"#fa5252\",\"width\":247,\"height\":138,\"seed\":679323330,\"groupIds\":[],\"strokeSharpness\":\"sharp\",\"boundElements\":[],\"updated\":1743367114827,\"link\":null,\"index\":\"a0\"},{\"type\":\"arrow\",\"version\":143,\"versionNonce\":1500561872,\"isDeleted\":false,\"id\":\"2bmK1AKg9yVMP6CO_U6Ke\",\"fillStyle\":\"hachure\",\"strokeWidth\":1,\"strokeStyle\":\"solid\",\"roughness\":1,\"opacity\":100,\"angle\":0,\"x\":216,\"y\":67,\"strokeColor\":\"#000000\",\"backgroundColor\":\"#fa5252\",\"width\":289,\"height\":46,\"seed\":1265574494,\"groupIds\":[],\"strokeSharpness\":\"round\",\"boundElements\":[],\"updated\":1743367114827,\"link\":null,\"lastCommittedPoint\":null,\"startArrowhead\":null,\"endArrowhead\":\"arrow\",\"points\":[[0,0],[289,46]],\"index\":\"a1\"},{\"type\":\"ellipse\",\"version\":163,\"versionNonce\":1146159920,\"isDeleted\":false,\"id\":\"TOmE_26Ye9b_m_TKfWU45\",\"fillStyle\":\"hachure\",\"strokeWidth\":1,\"strokeStyle\":\"solid\",\"roughness\":1,\"opacity\":100,\"angle\":0,\"x\":441,\"y\":31,\"strokeColor\":\"#000000\",\"backgroundColor\":\"#228be6\",\"width\":203,\"height\":191,\"seed\":77588894,\"groupIds\":[],\"strokeSharpness\":\"sharp\",\"boundElements\":[],\"updated\":1743367114827,\"link\":null,\"index\":\"a2\"},{\"type\":\"text\",\"version\":207,\"versionNonce\":664274896,\"isDeleted\":false,\"id\":\"K5CjVJa8vYzQ8LDOdH-av\",\"fillStyle\":\"hachure\",\"strokeWidth\":1,\"strokeStyle\":\"solid\",\"roughness\":1,\"opacity\":100,\"angle\":0,\"x\":319.5,\"y\":20,\"strokeColor\":\"#000000\",\"backgroundColor\":\"#228be6\",\"width\":71.75,\"height\":null,\"seed\":317664926,\"groupIds\":[],\"strokeSharpness\":\"sharp\",\"boundElements\":[],\"updated\":1743367114827,\"link\":null,\"fontSize\":20,\"fontFamily\":1,\"text\":\"convert\",\"baseline\":18,\"textAlign\":\"left\",\"verticalAlign\":\"top\",\"containerId\":null,\"originalText\":\"convert\",\"index\":\"a3\"},{\"type\":\"diamond\",\"version\":140,\"versionNonce\":1135156528,\"isDeleted\":false,\"id\":\"rZ0DKhdiE-mys9orY2M7Y\",\"fillStyle\":\"solid\",\"strokeWidth\":1,\"strokeStyle\":\"solid\",\"roughness\":1,\"opacity\":100,\"angle\":0,\"x\":335,\"y\":67,\"strokeColor\":\"#000000\",\"backgroundColor\":\"#228be6\",\"width\":31,\"height\":37,\"seed\":401619102,\"groupIds\":[],\"strokeSharpness\":\"sharp\",\"boundElements\":[],\"updated\":1743367114827,\"link\":null,\"index\":\"a4\"},{\"type\":\"line\",\"version\":203,\"versionNonce\":2095484368,\"isDeleted\":false,\"id\":\"gWzx0Ka27J2gQYsjliI5u\",\"fillStyle\":\"solid\",\"strokeWidth\":1,\"strokeStyle\":\"dashed\",\"roughness\":1,\"opacity\":100,\"angle\":0,\"x\":147,\"y\":142,\"strokeColor\":\"#000000\",\"backgroundColor\":\"#228be6\",\"width\":124,\"height\":113,\"seed\":668475458,\"groupIds\":[],\"strokeSharpness\":\"round\",\"boundElements\":[],\"updated\":1743367114827,\"link\":null,\"lastCommittedPoint\":null,\"startArrowhead\":null,\"endArrowhead\":null,\"points\":[[0,0],[124,113]],\"index\":\"a5\"},{\"type\":\"rectangle\",\"version\":183,\"versionNonce\":351139632,\"isDeleted\":false,\"id\":\"vPXlTlCV6XiWRo8z596tY\",\"fillStyle\":\"cross-hatch\",\"strokeWidth\":1,\"strokeStyle\":\"dotted\",\"roughness\":1,\"opacity\":100,\"angle\":0,\"x\":269,\"y\":240,\"strokeColor\":\"#2b8a3e\",\"backgroundColor\":\"#e6ffc8\",\"width\":144,\"height\":115,\"seed\":1313295006,\"groupIds\":[],\"strokeSharpness\":\"sharp\",\"boundElements\":[],\"updated\":1743367114827,\"link\":null,\"index\":\"a6\"},{\"type\":\"text\",\"version\":317,\"versionNonce\":1920226256,\"isDeleted\":false,\"id\":\"NlWoiu7QFiUGoGhxxFDQz\",\"fillStyle\":\"hachure\",\"strokeWidth\":1,\"strokeStyle\":\"solid\",\"roughness\":1,\"opacity\":100,\"angle\":0,\"x\":290,\"y\":247,\"strokeColor\":\"#2b8a3e\",\"backgroundColor\":\"#228be6\",\"width\":53.36666488647461,\"height\":null,\"seed\":146698370,\"groupIds\":[],\"strokeSharpness\":\"sharp\",\"boundElements\":[],\"updated\":1743367114827,\"link\":null,\"fontSize\":20,\"fontFamily\":1,\"text\":\"List :\\n- one\\n- two\",\"baseline\":70,\"textAlign\":\"left\",\"verticalAlign\":\"top\",\"containerId\":null,\"originalText\":\"List :\\n- one\\n- two\",\"index\":\"a7\"},{\"type\":\"diamond\",\"version\":221,\"versionNonce\":1552388400,\"isDeleted\":false,\"id\":\"4tqMpG7kcfLvu81ba12UQ\",\"fillStyle\":\"solid\",\"strokeWidth\":1,\"strokeStyle\":\"solid\",\"roughness\":1,\"opacity\":100,\"angle\":5.899784582143685,\"x\":283.37319488867206,\"y\":123.6942301852414,\"strokeColor\":\"#000000\",\"backgroundColor\":\"#fa5252\",\"width\":104.0405522208337,\"height\":74.00000000000001,\"seed\":1677737711,\"groupIds\":[],\"strokeSharpness\":\"sharp\",\"boundElements\":[],\"updated\":1743367114827,\"link\":null,\"index\":\"a8\"},{\"type\":\"rectangle\",\"version\":278,\"versionNonce\":1046043088,\"isDeleted\":false,\"id\":\"79D3L3LhxNNySkbKD3Bia\",\"fillStyle\":\"hachure\",\"strokeWidth\":1,\"strokeStyle\":\"solid\",\"roughness\":1,\"opacity\":100,\"angle\":0.42451911970089906,\"x\":479.7715111234793,\"y\":259.96655309088374,\"strokeColor\":\"#000000\",\"backgroundColor\":\"#fa5252\",\"width\":128.50676566765082,\"height\":63,\"seed\":1447260752,\"groupIds\":[],\"strokeSharpness\":\"sharp\",\"boundElements\":[],\"updated\":1743367114827,\"link\":null,\"index\":\"a9\"},{\"type\":\"diamond\",\"version\":363,\"versionNonce\":1910369072,\"isDeleted\":false,\"id\":\"ffrisBNjK3DyL4MRqDVUM\",\"fillStyle\":\"solid\",\"strokeWidth\":1,\"strokeStyle\":\"solid\",\"roughness\":1,\"opacity\":100,\"angle\":0.3893167218331426,\"x\":21.865547135620886,\"y\":174.8538070033551,\"strokeColor\":\"#000000\",\"backgroundColor\":\"#15aabf\",\"width\":87.26890572875811,\"height\":46.29238599328972,\"seed\":63592112,\"groupIds\":[],\"strokeSharpness\":\"sharp\",\"boundElements\":[],\"updated\":1743367114827,\"link\":null,\"index\":\"aA\"},{\"type\":\"rectangle\",\"version\":519,\"versionNonce\":330145744,\"isDeleted\":false,\"id\":\"wxvV5tzdo2p3m4nBQf_fI\",\"fillStyle\":\"hachure\",\"strokeWidth\":1,\"strokeStyle\":\"solid\",\"roughness\":1,\"opacity\":100,\"angle\":5.997855886997452,\"x\":90.74789364500919,\"y\":293.3561760950281,\"strokeColor\":\"#000000\",\"backgroundColor\":\"#fab005\",\"width\":123.50421270998135,\"height\":35.287647809943806,\"seed\":1439819952,\"groupIds\":[],\"strokeSharpness\":\"sharp\",\"boundElements\":[],\"updated\":1743367114827,\"link\":null,\"index\":\"aB\"},{\"type\":\"line\",\"version\":167,\"versionNonce\":2136540464,\"isDeleted\":false,\"id\":\"i2pQf0tOL1I7RZA6fHNXy\",\"fillStyle\":\"cross-hatch\",\"strokeWidth\":1,\"strokeStyle\":\"dotted\",\"roughness\":1,\"opacity\":100,\"angle\":0.3264344116289468,\"x\":129,\"y\":177,\"strokeColor\":\"#a61e4d\",\"backgroundColor\":\"#fab005\",\"width\":71,\"height\":80,\"seed\":969735782,\"groupIds\":[],\"strokeSharpness\":\"sharp\",\"boundElements\":[],\"updated\":1743367114827,\"link\":null,\"lastCommittedPoint\":null,\"startArrowhead\":null,\"endArrowhead\":null,\"points\":[[0,0],[2,16],[12,40],[20,51],[36,64],[71,80]],\"index\":\"aC\"},{\"type\":\"line\",\"version\":176,\"versionNonce\":42542544,\"isDeleted\":false,\"id\":\"zTcY1DmmmEqtM7iaFOjI2\",\"fillStyle\":\"cross-hatch\",\"strokeWidth\":1,\"strokeStyle\":\"solid\",\"roughness\":1,\"opacity\":100,\"angle\":0,\"x\":24,\"y\":282,\"strokeColor\":\"#087f5b\",\"backgroundColor\":\"#fab005\",\"width\":81,\"height\":33,\"seed\":1314441594,\"groupIds\":[],\"strokeSharpness\":\"sharp\",\"boundElements\":[],\"updated\":1743367114827,\"link\":null,\"lastCommittedPoint\":null,\"startArrowhead\":null,\"endArrowhead\":null,\"points\":[[0,0],[6,-22],[12,-29],[21,-30],[24,-29],[33,-17],[36,1],[37,2],[45,-29],[48,-29],[53,-31],[58,-31],[72,-23],[81,-8],[81,-4]],\"index\":\"aD\"},{\"type\":\"rectangle\",\"version\":468,\"versionNonce\":576773936,\"isDeleted\":false,\"id\":\"UqrOMUkW8i5NCxQf_EDc9\",\"fillStyle\":\"hachure\",\"strokeWidth\":1,\"strokeStyle\":\"solid\",\"roughness\":1,\"opacity\":100,\"angle\":0.11809202841909539,\"x\":190.3330910264575,\"y\":373.66279952417335,\"strokeColor\":\"#000000\",\"backgroundColor\":\"#be4bdb\",\"width\":90.33381794708485,\"height\":87.67440095165314,\"seed\":1466118630,\"groupIds\":[],\"strokeSharpness\":\"sharp\",\"boundElements\":[],\"updated\":1743367114827,\"link\":null,\"index\":\"aE\"},{\"type\":\"diamond\",\"version\":460,\"versionNonce\":1476651984,\"isDeleted\":false,\"id\":\"06wK4k0VHVo3nl3maFgBt\",\"fillStyle\":\"solid\",\"strokeWidth\":1,\"strokeStyle\":\"solid\",\"roughness\":1,\"opacity\":100,\"angle\":5.137516099543635,\"x\":353.41738815890335,\"y\":394.61371445798545,\"strokeColor\":\"#000000\",\"backgroundColor\":\"#4c6ef5\",\"width\":80.89200154670186,\"height\":77.42001777890613,\"seed\":1789348282,\"groupIds\":[],\"strokeSharpness\":\"sharp\",\"boundElements\":[],\"updated\":1743367114827,\"link\":null,\"index\":\"aF\"},{\"type\":\"text\",\"version\":195,\"versionNonce\":190675248,\"isDeleted\":false,\"id\":\"FExeJRXagFlMKEpW4ApvL\",\"fillStyle\":\"cross-hatch\",\"strokeWidth\":1,\"strokeStyle\":\"dotted\",\"roughness\":1,\"opacity\":100,\"angle\":5.9094584872140326,\"x\":35.78896794074159,\"y\":386.2393022458574,\"strokeColor\":\"#d9480f\",\"backgroundColor\":\"#4c6ef5\",\"width\":106.3499984741211,\"height\":null,\"seed\":152285754,\"groupIds\":[],\"strokeSharpness\":\"sharp\",\"boundElements\":[],\"updated\":1743367114827,\"link\":null,\"fontSize\":20,\"fontFamily\":2,\"text\":\"Rotated text\",\"baseline\":23,\"textAlign\":\"left\",\"verticalAlign\":\"top\",\"containerId\":null,\"originalText\":\"Rotated text\",\"index\":\"aG\"},{\"type\":\"arrow\",\"version\":364,\"versionNonce\":2117464528,\"isDeleted\":false,\"id\":\"n7nmJZmGCpL1a6l1TdMeX\",\"fillStyle\":\"hachure\",\"strokeWidth\":1,\"strokeStyle\":\"solid\",\"roughness\":1,\"opacity\":100,\"angle\":0,\"x\":520.1576551164967,\"y\":338.6957163378038,\"strokeColor\":\"#000000\",\"backgroundColor\":\"#fa5252\",\"width\":78.65765511649664,\"height\":75.30428366219626,\"seed\":925954106,\"groupIds\":[],\"strokeSharpness\":\"round\",\"boundElements\":[],\"updated\":1743367114827,\"link\":null,\"lastCommittedPoint\":null,\"startArrowhead\":null,\"endArrowhead\":\"arrow\",\"points\":[[0,0],[-78.65765511649664,75.30428366219626]],\"index\":\"aH\"},{\"type\":\"text\",\"version\":185,\"versionNonce\":498520880,\"isDeleted\":false,\"id\":\"lU3Msnm2CTXBHi8Pzef0C\",\"fillStyle\":\"cross-hatch\",\"strokeWidth\":1,\"strokeStyle\":\"dotted\",\"roughness\":1,\"opacity\":100,\"angle\":0,\"x\":509.5,\"y\":392,\"strokeColor\":\"#000000\",\"backgroundColor\":\"#4c6ef5\",\"width\":128.88333129882812,\"height\":null,\"seed\":1839996922,\"groupIds\":[],\"strokeSharpness\":\"sharp\",\"boundElements\":[],\"updated\":1743367114827,\"link\":null,\"fontSize\":20,\"fontFamily\":3,\"text\":\"> some code\",\"baseline\":20,\"textAlign\":\"left\",\"verticalAlign\":\"top\",\"containerId\":null,\"originalText\":\"> some code\",\"index\":\"aI\"},{\"type\":\"text\",\"version\":511,\"versionNonce\":1547122640,\"isDeleted\":false,\"id\":\"CdlqC6FutWnAhFgUa4-tK\",\"fillStyle\":\"hachure\",\"strokeWidth\":1,\"strokeStyle\":\"solid\",\"roughness\":1,\"opacity\":100,\"angle\":0,\"x\":34.326958955223915,\"y\":31.00810810810811,\"strokeColor\":\"#c92a2a\",\"backgroundColor\":\"#228be6\",\"width\":165.3333282470703,\"height\":null,\"seed\":168503609,\"groupIds\":[],\"strokeSharpness\":\"sharp\",\"boundElements\":[],\"updated\":1743367114827,\"link\":null,\"fontSize\":39.25486991656494,\"fontFamily\":1,\"text\":\"Big text\",\"baseline\":35,\"textAlign\":\"left\",\"verticalAlign\":\"top\",\"containerId\":null,\"originalText\":\"Big text\",\"index\":\"aJ\"},{\"type\":\"ellipse\",\"version\":306,\"versionNonce\":265612592,\"isDeleted\":false,\"id\":\"lQb2o3G3uO-OSzJlv7dQf\",\"fillStyle\":\"cross-hatch\",\"strokeWidth\":1,\"strokeStyle\":\"solid\",\"roughness\":1,\"opacity\":100,\"angle\":5.987365538640589,\"x\":483.5,\"y\":118.5,\"strokeColor\":\"#000000\",\"backgroundColor\":\"#7950f2\",\"width\":133.00000000000003,\"height\":58.00000000000001,\"seed\":617054574,\"groupIds\":[],\"strokeSharpness\":\"sharp\",\"boundElements\":[],\"updated\":1743367114827,\"link\":null,\"index\":\"aK\"}],\"files\":{},\"appState\":{\"scrollX\":255.921875,\"scrollY\":-104.08473820793574,\"zoom\":{\"value\":1}}}"}, {"noteId": "aKGOZ6yRDxxE", "title": "Programming", "type": "text", "mime": "text/html", "blobId": "z4PhNX7vuL3xVChQ1m2A", "content": ""}, {"noteId": "b9qO3tBmIWHG", "title": "Work", "type": "text", "mime": "text/html", "blobId": "z4PhNX7vuL3xVChQ1m2A", "content": ""}, {"noteId": "b9yJwiBeOUrS", "title": "Task manager", "type": "text", "mime": "text/html", "blobId": "YIjxy9dBImOhP5qedfQA", "content": "

This is a simple TODO/Task manager. You can see some description and explanation\n here: https://github.com/zadam/trilium/wiki/Task-manager\n\n

\n

Please note that this is meant as scripting example only and feature/bug\n support is very limited.

"}, {"noteId": "bhK38qZvS7Sd", "title": "gym", "type": "text", "mime": "text/html", "blobId": "z4PhNX7vuL3xVChQ1m2A", "content": ""}, {"noteId": "bp1FVvjsJB0V", "title": "Entity Relationship", "type": "mermaid", "mime": "text/plain", "blobId": "NewXxY9FyE8lghIGSs8W", "content": "erDiagram\n CUSTOMER }|..|{ DELIVERY-ADDRESS : has\n CUSTOMER ||--o{ ORDER : places\n CUSTOMER ||--o{ INVOICE : \"liable for\"\n DELIVERY-ADDRESS ||--o{ ORDER : receives\n INVOICE ||--|{ ORDER : covers\n ORDER ||--|{ ORDER-ITEM : includes\n PRODUCT-CATEGORY ||--|{ PRODUCT : contains\n PRODUCT ||--o{ ORDER-ITEM : \"ordered in\"\n "}, {"noteId": "bsK1MPY1b5ZD", "title": "Largest notes", "type": "render", "mime": "", "blobId": "z4PhNX7vuL3xVChQ1m2A", "content": ""}, {"noteId": "c0yKYdi3pNCo", "title": "10.jpeg", "type": "image", "mime": "image/jpg", "blobId": "GHyMuLqTfMvXYDs7v9i9", "content": null}, {"noteId": "d1Oon6HZ1Eje", "title": "Books", "type": "text", "mime": "text/html", "blobId": "z4PhNX7vuL3xVChQ1m2A", "content": ""}, {"noteId": "dbEmsu9mpTKh", "title": "01.jpeg", "type": "image", "mime": "image/jpg", "blobId": "ioo2c0Lslr6VZKDYokws", "content": null}, {"noteId": "dq9PJyGEVMVu", "title": "js", "type": "code", "mime": "application/javascript;env=frontend", "blobId": "6T07NjxUiP3DSRhIJstP", "content": "const notes = await api.runOnBackend(() => {\n const blobSizes = api.sql.getMap(`SELECT blobId, LENGTH(content) FROM blobs`);\n const noteBlobIds = api.sql.getRows(`\n SELECT\n notes.noteId,\n notes.blobId,\n GROUP_CONCAT(revisions.blobId) AS revisions_blobIds,\n GROUP_CONCAT(note_attachments.blobId) AS note_attachments_blobIds,\n GROUP_CONCAT(revision_attachments.blobId) AS revision_attachments_blobIds\n FROM\n notes\n LEFT JOIN revisions USING (noteId)\n LEFT JOIN attachments AS note_attachments ON notes.noteId = note_attachments.ownerId\n LEFT JOIN attachments AS revision_attachments ON revisions.revisionId = revision_attachments.ownerId\n GROUP BY noteId`);\n \n let noteSizes = [];\n \n for (const {noteId, blobId, revisions_blobIds, note_attachments_blobIds, revision_attachments_blobIds} of noteBlobIds) {\n const blobIds = new Set(`${blobId},${revisions_blobIds},${note_attachments_blobIds},${revision_attachments_blobIds}`.split(',').filter(blobId => !!blobId));\n \n const lengths = [...blobIds].map(blobId => blobSizes[blobId] || 0);\n const totalLength = lengths.reduce((partialSum, a) => partialSum + a, 0);\n \n noteSizes.push({ noteId, size: totalLength });\n }\n \n noteSizes.sort((a, b) => a.size > b.size ? -1 : 1);\n \n noteSizes = noteSizes.splice(0, 100);\n \n return noteSizes;\n});\n\nconst $statsTable = api.$container.find('.stats-table');\n\nfor (const note of notes) { \n $statsTable.append(\n $(\"\")\n .append(\n $(\"\").append(await api.createNoteLink(note.noteId, {showNotePath: true}))\n ) \n .append(\n $(\"\").text(note.size + \" bytes\")\n )\n );\n}"}, {"noteId": "e1XPJgQC1HZI", "title": "Grocery list for today", "type": "text", "mime": "text/html", "blobId": "bP7p55rfbkS7rUEsLcNJ", "content": ""}, {"noteId": "e7Xv3RPg9vWE", "title": "Buy a board game for Alice", "type": "text", "mime": "text/html", "blobId": "fYb5k8kJu2WGfXKXKCOC", "content": "
\n \n
\n

Maybe CodeNames? https://boardgamegeek.com/boardgame/178900/codenames\n\n

"}, {"noteId": "egUzPxpEYOFw", "title": "js", "type": "code", "mime": "application/javascript;env=frontend", "blobId": "P54nlG24uem9iANqHNAk", "content": "const notes = await api.runOnBackend(() => {\n return api.sql.getRows(`\n SELECT\n notes.noteId,\n COUNT(revisions.revisionId) AS count\n FROM notes\n JOIN revisions USING (noteId)\n WHERE notes.isDeleted = 0\n GROUP BY notes.noteId\n ORDER BY count DESC\n LIMIT 100`);\n});\n\nconst $statsTable = api.$container.find('.stats-table');\n\nfor (const note of notes) { \n $statsTable.append(\n $(\"\")\n .append(\n $(\"\").append(await api.createNoteLink(note.noteId, {showNotePath: true}))\n ) \n .append($(\"\").text(note.count))\n );\n}"}, {"noteId": "epQLc7F5XSSE", "title": "Code blocks", "type": "text", "mime": "text/html", "blobId": "L9zejQcEz9VfLIeXBm22", "content": "

Code blocks are useful to add short snippets of code blocks inside text\n notes. Depending on your preference, it's possible to enable or disable\n word wrapping for these code blocks.

\n

We added syntax highlighting to code blocks as well. When a code block\n is first created it will try to automatically determine the programming\n language, should that fail it is possible to manually adjust it. The color\n scheme for the syntax highlighting is adjustable in settings. 

function helloWorld() {\n\n\talert(\"Hello world\");\n\n}
\n\n

For larger pieces of code it is better to use a code note, which uses\n a fully-fledged code editor (CodeMirror). For an example of a code note,\n see Custom request handler.

"}, {"noteId": "fhK2N3NCgxSl", "title": "chartjs-plugin-datalabels.min.js", "type": "file", "mime": "text/javascript", "blobId": "EgvBcFS1TfgRuszhc7SN", "content": "/*!\n * chartjs-plugin-datalabels v2.0.0\n * https://chartjs-plugin-datalabels.netlify.app\n * (c) 2017-2021 chartjs-plugin-datalabels contributors\n * Released under the MIT license\n */\n!function(t,e){(t=\"undefined\"!=typeof globalThis?globalThis:t||self).ChartDataLabels=e(t.Chart.helpers,t.Chart)}(this,(function(t,e){\"use strict\";var r=function(){if(\"undefined\"!=typeof window){if(window.devicePixelRatio)return window.devicePixelRatio;var t=window.screen;if(t)return(t.deviceXDPI||1)/(t.logicalXDPI||1)}return 1}(),a=function(e){var r,a=[];for(e=[].concat(e);e.length;)\"string\"==typeof(r=e.pop())?a.unshift.apply(a,r.split(\"\\n\")):Array.isArray(r)?e.push.apply(e,r):t.isNullOrUndef(e)||a.unshift(\"\"+r);return a},o=function(t,e,r){var a,o=[].concat(e),n=o.length,i=t.font,l=0;for(t.font=r.string,a=0;ar.right&&(a|=2),er.bottom&&(a|=4),a}function u(t,e){var r,a,o=e.anchor,n=t;return e.clamp&&(n=function(t,e){for(var r,a,o,n=t.x0,i=t.y0,l=t.x1,u=t.y1,d=s(n,i,e),c=s(l,u,e);d|c&&!(d&c);)8&(r=d||c)?(a=n+(l-n)*(e.top-i)/(u-i),o=e.top):4&r?(a=n+(l-n)*(e.bottom-i)/(u-i),o=e.bottom):2&r?(o=i+(u-i)*(e.right-n)/(l-n),a=e.right):1&r&&(o=i+(u-i)*(e.left-n)/(l-n),a=e.left),r===d?d=s(n=a,i=o,e):c=s(l=a,u=o,e);return{x0:n,x1:l,y0:i,y1:u}}(n,e.area)),\"start\"===o?(r=n.x0,a=n.y0):\"end\"===o?(r=n.x1,a=n.y1):(r=(n.x0+n.x1)/2,a=(n.y0+n.y1)/2),function(t,e,r,a,o){switch(o){case\"center\":r=a=0;break;case\"bottom\":r=0,a=1;break;case\"right\":r=1,a=0;break;case\"left\":r=-1,a=0;break;case\"top\":r=0,a=-1;break;case\"start\":r=-r,a=-a;break;case\"end\":break;default:o*=Math.PI/180,r=Math.cos(o),a=Math.sin(o)}return{x:t,y:e,vx:r,vy:a}}(r,a,t.vx,t.vy,e.align)}var d=function(t,e){var r=(t.startAngle+t.endAngle)/2,a=Math.cos(r),o=Math.sin(r),n=t.innerRadius,i=t.outerRadius;return u({x0:t.x+a*n,y0:t.y+o*n,x1:t.x+a*i,y1:t.y+o*i,vx:a,vy:o},e)},c=function(t,e){var r=l(t,e.origin),a=r.x*t.options.radius,o=r.y*t.options.radius;return u({x0:t.x-a,y0:t.y-o,x1:t.x+a,y1:t.y+o,vx:r.x,vy:r.y},e)},h=function(t,e){var r=l(t,e.origin),a=t.x,o=t.y,n=0,i=0;return t.horizontal?(a=Math.min(t.x,t.base),n=Math.abs(t.base-t.x)):(o=Math.min(t.y,t.base),i=Math.abs(t.base-t.y)),u({x0:a,y0:o+i,x1:a+n,y1:o,vx:r.x,vy:r.y},e)},f=function(t,e){var r=l(t,e.origin);return u({x0:t.x,y0:t.y,x1:t.x,y1:t.y,vx:r.x,vy:r.y},e)},x=function(t){return Math.round(t*r)/r};function y(t,e){var r=e.chart.getDatasetMeta(e.datasetIndex).vScale;if(!r)return null;if(void 0!==r.xCenter&&void 0!==r.yCenter)return{x:r.xCenter,y:r.yCenter};var a=r.getBasePixel();return t.horizontal?{x:a,y:null}:{x:null,y:a}}function v(t,e,r){var a=r.backgroundColor,o=r.borderColor,n=r.borderWidth;(a||o&&n)&&(t.beginPath(),function(t,e,r,a,o,n){var i=Math.PI/2;if(n){var l=Math.min(n,o/2,a/2),s=e+l,u=r+l,d=e+a-l,c=r+o-l;t.moveTo(e,u),sr.x+r.w+2||t.y>r.y+r.h+2)},intersects:function(t){var e,r,a,o=this._points(),n=t._points(),i=[M(o[0],o[1]),M(o[0],o[3])];for(this._rotation!==t._rotation&&i.push(M(n[0],n[1]),M(n[0],n[3])),e=0;et.getProps([e],!0)[e]}),n=a.geometry(),i=$(l,a.model(),n),o._box.update(i,n,a.rotation()));(function(t,e){var r,a,o,n;for(r=t.length-1;r>=0;--r)for(o=t[r].$layout,a=r-1;a>=0&&o._visible;--a)(n=t[a].$layout)._visible&&o._box.intersects(n._box)&&e(o,n)})(t,(function(t,e){var r=t._hidable,a=e._hidable;r&&a||a?e._visible=!1:r&&(t._visible=!1)}))}(t)},lookup:function(t,e){var r,a;for(r=t.length-1;r>=0;--r)if((a=t[r].$layout)&&a._visible&&a._box.contains(e))return t[r];return null},draw:function(t,e){var r,a,o,n,i,l;for(r=0,a=e.length;r= 2010 && year < 2050;\n}\n\nif (!isWithinExpectedRange(todoDate) || !isWithinExpectedRange(doneDate)) {\n console.log(`One or both dates - ${todoDate}, ${doneDate} - is outside of expected range`);\n \n return;\n}\n\nconst isTaskDone = !!doneDate;\n\napi.toggleNoteInParent(isTaskDone, note.noteId, doneRootNote.noteId);\napi.toggleNoteInParent(!isTaskDone, note.noteId, todoRootNote.noteId);\n\nconst location = note.getLabelValue('location');\nconst locationRootNote = api.getNoteWithLabel('taskLocationRoot');\n\nreconcileAssignments(note, locationRootNote, location ? [location] : [], 'taskLocationNote', isTaskDone);\n\nconst tags = attributes.filter(attr => attr.type === 'label' && attr.name === 'tag').map(attr => attr.value);\n\nreconcileAssignments(note, tagRootNote, tags, 'taskTagNote', isTaskDone);\n\nnote.toggleLabel(isTaskDone, \"cssClass\", \"done\");\n\nconst doneTargetNoteId = isTaskDone ? api.getDayNote(doneDate).noteId : null;\napi.setNoteToParent(note.noteId, 'DONE', doneTargetNoteId);\n\nnote.toggleLabel(!isTaskDone, \"cssClass\", \"todo\");\n\nconst todoTargetNoteId = (!isTaskDone && todoDate) ? api.getDayNote(todoDate).noteId : null;\napi.setNoteToParent(note.noteId, 'TODO', todoTargetNoteId);"}, {"noteId": "hNHBHIgXCBCO", "title": "template", "type": "code", "mime": "text/html", "blobId": "0y7yPQVUQ1Z9KxmwcOLa", "content": "
\n \n\n
\n\n \n \n \n \n \n \n
Note typeCount (not deleted)Count (deleted)
\n
"}, {"noteId": "hpxIn2I2IdAJ", "title": "Buy milk", "type": "text", "mime": "text/html", "blobId": "z4PhNX7vuL3xVChQ1m2A", "content": ""}, {"noteId": "iEErNR89Bda9", "title": "04.jpeg", "type": "image", "mime": "image/jpg", "blobId": "DefQfj4YCRfW7vYe1XY9", "content": null}, {"noteId": "iI7WMuc3JWBE", "title": "Industry support", "type": "text", "mime": "text/html", "blobId": "ejoxqYOVCt6pBULRtfQP", "content": "

There are thousands of open-source libraries for Node.js, most of them\n hosted on the npm website.\n The Node.js developer community has two main mailing lists and the IRC channel\n #node.js on freenode. 

"}, {"noteId": "iP3r5W4tQFLb", "title": "State", "type": "mermaid", "mime": "text/plain", "blobId": "grhWLiCXM13ll3M5wE2q", "content": "stateDiagram-v2\n[*] --> Still\nStill --> [*]\nStill --> Moving\nMoving --> Still\nMoving --> Crash\nCrash --> [*]"}, {"noteId": "iWqVc9X9uw6o", "title": "Send invites for christmas party", "type": "text", "mime": "text/html", "blobId": "z4PhNX7vuL3xVChQ1m2A", "content": ""}, {"noteId": "iX4pIHUhWGzA", "title": "CSS", "type": "code", "mime": "text/css", "blobId": "v5FiEnMp2a9wUxd8TrOu", "content": "span.fancytree-node.todo .fancytree-title {\n color: red !important;\n}\n\nspan.fancytree-node.done .fancytree-title {\n color: green !important;\n}"}, {"noteId": "iktTbXUysByR", "title": "Releases", "type": "text", "mime": "text/html", "blobId": "ttHf7znUkgnFkNX1r5AW", "content": "

New major releases of Node.js are cut from the GitHub master\n branch every six months. Even-numbered versions are cut in April and odd-numbered\n versions are cut in October. When a new odd version is released, the previous\n even version undergoes transition to Long Term Support (LTS), which gives\n that version 18 months of active support from the date it is designated\n LTS.

"}, {"noteId": "jHVAGbw0LxU5", "title": "School schedule", "type": "text", "mime": "text/html", "blobId": "0u2sY6pW1urY40wzoOVu", "content": "
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
 MondayTuesdayWednesdayThursdayFriday
9:00-10:30P.E. MathComputer Science 
11:00-12:30HistoryEnglish PhysicsMath
13:00-14:30 Computer ScienceChemistryPhysics LabGeography
15:00-16:30Computer Science Latin  
\n
School schedule
\n
"}, {"noteId": "jfMV5p3uBehO", "title": "Dentist appointment", "type": "text", "mime": "text/html", "blobId": "z4PhNX7vuL3xVChQ1m2A", "content": ""}, {"noteId": "jzeB9DUMXNeB", "title": "Get a gym membership", "type": "text", "mime": "text/html", "blobId": "adQY9tvAjX83Os0ViVjY", "content": "

Just in time for new years resolution!

"}, {"noteId": "kWAXPP3WYbax", "title": "chart.js", "type": "file", "mime": "text/javascript", "blobId": "TW5s0ITYIppJtu76Ubys", "content": "/*!\n * Chart.js v3.7.0\n * https://www.chartjs.org\n * (c) 2021 Chart.js Contributors\n * Released under the MIT License\n */\n!function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(e):(t=\"undefined\"!=typeof globalThis?globalThis:t||self).Chart=e()}(this,(function(){\"use strict\";const t=\"undefined\"==typeof window?function(t){return t()}:window.requestAnimationFrame;function e(e,i,s){const n=s||(t=>Array.prototype.slice.call(t));let o=!1,a=[];return function(...s){a=n(s),o||(o=!0,t.call(window,(()=>{o=!1,e.apply(i,a)})))}}function i(t,e){let i;return function(...s){return e?(clearTimeout(i),i=setTimeout(t,e,s)):t.apply(this,s),e}}const s=t=>\"start\"===t?\"left\":\"end\"===t?\"right\":\"center\",n=(t,e,i)=>\"start\"===t?e:\"end\"===t?i:(e+i)/2,o=(t,e,i,s)=>t===(s?\"left\":\"right\")?i:\"center\"===t?(e+i)/2:e;var a=new class{constructor(){this._request=null,this._charts=new Map,this._running=!1,this._lastDate=void 0}_notify(t,e,i,s){const n=e.listeners[s],o=e.duration;n.forEach((s=>s({chart:t,initial:e.initial,numSteps:o,currentStep:Math.min(i-e.start,o)})))}_refresh(){this._request||(this._running=!0,this._request=t.call(window,(()=>{this._update(),this._request=null,this._running&&this._refresh()})))}_update(t=Date.now()){let e=0;this._charts.forEach(((i,s)=>{if(!i.running||!i.items.length)return;const n=i.items;let o,a=n.length-1,r=!1;for(;a>=0;--a)o=n[a],o._active?(o._total>i.duration&&(i.duration=o._total),o.tick(t),r=!0):(n[a]=n[n.length-1],n.pop());r&&(s.draw(),this._notify(s,i,t,\"progress\")),n.length||(i.running=!1,this._notify(s,i,t,\"complete\"),i.initial=!1),e+=n.length})),this._lastDate=t,0===e&&(this._running=!1)}_getAnims(t){const e=this._charts;let i=e.get(t);return i||(i={running:!1,initial:!0,items:[],listeners:{complete:[],progress:[]}},e.set(t,i)),i}listen(t,e,i){this._getAnims(t).listeners[e].push(i)}add(t,e){e&&e.length&&this._getAnims(t).items.push(...e)}has(t){return this._getAnims(t).items.length>0}start(t){const e=this._charts.get(t);e&&(e.running=!0,e.start=Date.now(),e.duration=e.items.reduce(((t,e)=>Math.max(t,e._duration)),0),this._refresh())}running(t){if(!this._running)return!1;const e=this._charts.get(t);return!!(e&&e.running&&e.items.length)}stop(t){const e=this._charts.get(t);if(!e||!e.items.length)return;const i=e.items;let s=i.length-1;for(;s>=0;--s)i[s].cancel();e.items=[],this._notify(t,e,Date.now(),\"complete\")}remove(t){return this._charts.delete(t)}};\n/*!\n * @kurkle/color v0.1.9\n * https://github.com/kurkle/color#readme\n * (c) 2020 Jukka Kurkela\n * Released under the MIT License\n */const r={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,A:10,B:11,C:12,D:13,E:14,F:15,a:10,b:11,c:12,d:13,e:14,f:15},l=\"0123456789ABCDEF\",h=t=>l[15&t],c=t=>l[(240&t)>>4]+l[15&t],d=t=>(240&t)>>4==(15&t);function u(t){var e=function(t){return d(t.r)&&d(t.g)&&d(t.b)&&d(t.a)}(t)?h:c;return t?\"#\"+e(t.r)+e(t.g)+e(t.b)+(t.a<255?e(t.a):\"\"):t}function f(t){return t+.5|0}const g=(t,e,i)=>Math.max(Math.min(t,i),e);function p(t){return g(f(2.55*t),0,255)}function m(t){return g(f(255*t),0,255)}function x(t){return g(f(t/2.55)/100,0,1)}function b(t){return g(f(100*t),0,100)}const _=/^rgba?\\(\\s*([-+.\\d]+)(%)?[\\s,]+([-+.e\\d]+)(%)?[\\s,]+([-+.e\\d]+)(%)?(?:[\\s,/]+([-+.e\\d]+)(%)?)?\\s*\\)$/;const y=/^(hsla?|hwb|hsv)\\(\\s*([-+.e\\d]+)(?:deg)?[\\s,]+([-+.e\\d]+)%[\\s,]+([-+.e\\d]+)%(?:[\\s,]+([-+.e\\d]+)(%)?)?\\s*\\)$/;function v(t,e,i){const s=e*Math.min(i,1-i),n=(e,n=(e+t/30)%12)=>i-s*Math.max(Math.min(n-3,9-n,1),-1);return[n(0),n(8),n(4)]}function w(t,e,i){const s=(s,n=(s+t/60)%6)=>i-i*e*Math.max(Math.min(n,4-n,1),0);return[s(5),s(3),s(1)]}function M(t,e,i){const s=v(t,1,.5);let n;for(e+i>1&&(n=1/(e+i),e*=n,i*=n),n=0;n<3;n++)s[n]*=1-e-i,s[n]+=e;return s}function k(t){const e=t.r/255,i=t.g/255,s=t.b/255,n=Math.max(e,i,s),o=Math.min(e,i,s),a=(n+o)/2;let r,l,h;return n!==o&&(h=n-o,l=a>.5?h/(2-n-o):h/(n+o),r=n===e?(i-s)/h+(i>16&255,o>>8&255,255&o]}return t}(),T.transparent=[0,0,0,0]);const e=T[t.toLowerCase()];return e&&{r:e[0],g:e[1],b:e[2],a:4===e.length?e[3]:255}}function R(t,e,i){if(t){let s=k(t);s[e]=Math.max(0,Math.min(s[e]+s[e]*i,0===e?360:1)),s=P(s),t.r=s[0],t.g=s[1],t.b=s[2]}}function E(t,e){return t?Object.assign(e||{},t):t}function I(t){var e={r:0,g:0,b:0,a:255};return Array.isArray(t)?t.length>=3&&(e={r:t[0],g:t[1],b:t[2],a:255},t.length>3&&(e.a=m(t[3]))):(e=E(t,{r:0,g:0,b:0,a:1})).a=m(e.a),e}function z(t){return\"r\"===t.charAt(0)?function(t){const e=_.exec(t);let i,s,n,o=255;if(e){if(e[7]!==i){const t=+e[7];o=255&(e[8]?p(t):255*t)}return i=+e[1],s=+e[3],n=+e[5],i=255&(e[2]?p(i):i),s=255&(e[4]?p(s):s),n=255&(e[6]?p(n):n),{r:i,g:s,b:n,a:o}}}(t):C(t)}class F{constructor(t){if(t instanceof F)return t;const e=typeof t;let i;var s,n,o;\"object\"===e?i=I(t):\"string\"===e&&(o=(s=t).length,\"#\"===s[0]&&(4===o||5===o?n={r:255&17*r[s[1]],g:255&17*r[s[2]],b:255&17*r[s[3]],a:5===o?17*r[s[4]]:255}:7!==o&&9!==o||(n={r:r[s[1]]<<4|r[s[2]],g:r[s[3]]<<4|r[s[4]],b:r[s[5]]<<4|r[s[6]],a:9===o?r[s[7]]<<4|r[s[8]]:255})),i=n||L(t)||z(t)),this._rgb=i,this._valid=!!i}get valid(){return this._valid}get rgb(){var t=E(this._rgb);return t&&(t.a=x(t.a)),t}set rgb(t){this._rgb=I(t)}rgbString(){return this._valid?(t=this._rgb)&&(t.a<255?`rgba(${t.r}, ${t.g}, ${t.b}, ${x(t.a)})`:`rgb(${t.r}, ${t.g}, ${t.b})`):this._rgb;var t}hexString(){return this._valid?u(this._rgb):this._rgb}hslString(){return this._valid?function(t){if(!t)return;const e=k(t),i=e[0],s=b(e[1]),n=b(e[2]);return t.a<255?`hsla(${i}, ${s}%, ${n}%, ${x(t.a)})`:`hsl(${i}, ${s}%, ${n}%)`}(this._rgb):this._rgb}mix(t,e){const i=this;if(t){const s=i.rgb,n=t.rgb;let o;const a=e===o?.5:e,r=2*a-1,l=s.a-n.a,h=((r*l==-1?r:(r+l)/(1+r*l))+1)/2;o=1-h,s.r=255&h*s.r+o*n.r+.5,s.g=255&h*s.g+o*n.g+.5,s.b=255&h*s.b+o*n.b+.5,s.a=a*s.a+(1-a)*n.a,i.rgb=s}return i}clone(){return new F(this.rgb)}alpha(t){return this._rgb.a=m(t),this}clearer(t){return this._rgb.a*=1-t,this}greyscale(){const t=this._rgb,e=f(.3*t.r+.59*t.g+.11*t.b);return t.r=t.g=t.b=e,this}opaquer(t){return this._rgb.a*=1+t,this}negate(){const t=this._rgb;return t.r=255-t.r,t.g=255-t.g,t.b=255-t.b,this}lighten(t){return R(this._rgb,2,t),this}darken(t){return R(this._rgb,2,-t),this}saturate(t){return R(this._rgb,1,t),this}desaturate(t){return R(this._rgb,1,-t),this}rotate(t){return function(t,e){var i=k(t);i[0]=D(i[0]+e),i=P(i),t.r=i[0],t.g=i[1],t.b=i[2]}(this._rgb,t),this}}function B(t){return new F(t)}const V=t=>t instanceof CanvasGradient||t instanceof CanvasPattern;function W(t){return V(t)?t:B(t)}function N(t){return V(t)?t:B(t).saturate(.5).darken(.1).hexString()}function H(){}const j=function(){let t=0;return function(){return t++}}();function $(t){return null==t}function Y(t){if(Array.isArray&&Array.isArray(t))return!0;const e=Object.prototype.toString.call(t);return\"[object\"===e.substr(0,7)&&\"Array]\"===e.substr(-6)}function U(t){return null!==t&&\"[object Object]\"===Object.prototype.toString.call(t)}const X=t=>(\"number\"==typeof t||t instanceof Number)&&isFinite(+t);function q(t,e){return X(t)?t:e}function K(t,e){return void 0===t?e:t}const G=(t,e)=>\"string\"==typeof t&&t.endsWith(\"%\")?parseFloat(t)/100:t/e,Z=(t,e)=>\"string\"==typeof t&&t.endsWith(\"%\")?parseFloat(t)/100*e:+t;function J(t,e,i){if(t&&\"function\"==typeof t.call)return t.apply(i,e)}function Q(t,e,i,s){let n,o,a;if(Y(t))if(o=t.length,s)for(n=o-1;n>=0;n--)e.call(i,t[n],n);else for(n=0;ni;)t=t[e.substr(i,s-i)],i=s+1,s=rt(e,i);return t}function ht(t){return t.charAt(0).toUpperCase()+t.slice(1)}const ct=t=>void 0!==t,dt=t=>\"function\"==typeof t,ut=(t,e)=>{if(t.size!==e.size)return!1;for(const i of t)if(!e.has(i))return!1;return!0};function ft(t){return\"mouseup\"===t.type||\"click\"===t.type||\"contextmenu\"===t.type}const gt=Object.create(null),pt=Object.create(null);function mt(t,e){if(!e)return t;const i=e.split(\".\");for(let e=0,s=i.length;et.chart.platform.getDevicePixelRatio(),this.elements={},this.events=[\"mousemove\",\"mouseout\",\"click\",\"touchstart\",\"touchmove\"],this.font={family:\"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif\",size:12,style:\"normal\",lineHeight:1.2,weight:null},this.hover={},this.hoverBackgroundColor=(t,e)=>N(e.backgroundColor),this.hoverBorderColor=(t,e)=>N(e.borderColor),this.hoverColor=(t,e)=>N(e.color),this.indexAxis=\"x\",this.interaction={mode:\"nearest\",intersect:!0},this.maintainAspectRatio=!0,this.onHover=null,this.onClick=null,this.parsing=!0,this.plugins={},this.responsive=!0,this.scale=void 0,this.scales={},this.showLine=!0,this.drawActiveElementsOnTop=!0,this.describe(t)}set(t,e){return xt(this,t,e)}get(t){return mt(this,t)}describe(t,e){return xt(pt,t,e)}override(t,e){return xt(gt,t,e)}route(t,e,i,s){const n=mt(this,t),o=mt(this,i),a=\"_\"+e;Object.defineProperties(n,{[a]:{value:n[e],writable:!0},[e]:{enumerable:!0,get(){const t=this[a],e=o[s];return U(t)?Object.assign({},e,t):K(t,e)},set(t){this[a]=t}}})}}({_scriptable:t=>!t.startsWith(\"on\"),_indexable:t=>\"events\"!==t,hover:{_fallback:\"interaction\"},interaction:{_scriptable:!1,_indexable:!1}});const _t=Math.PI,yt=2*_t,vt=yt+_t,wt=Number.POSITIVE_INFINITY,Mt=_t/180,kt=_t/2,St=_t/4,Pt=2*_t/3,Dt=Math.log10,Ct=Math.sign;function Ot(t){const e=Math.round(t);t=Lt(t,e,t/1e3)?e:t;const i=Math.pow(10,Math.floor(Dt(t))),s=t/i;return(s<=1?1:s<=2?2:s<=5?5:10)*i}function At(t){const e=[],i=Math.sqrt(t);let s;for(s=1;st-e)).pop(),e}function Tt(t){return!isNaN(parseFloat(t))&&isFinite(t)}function Lt(t,e,i){return Math.abs(t-e)=t}function Et(t,e,i){let s,n,o;for(s=0,n=t.length;sl&&h=Math.min(e,i)-s&&t<=Math.max(e,i)+s}function Ut(t){return!t||$(t.size)||$(t.family)?null:(t.style?t.style+\" \":\"\")+(t.weight?t.weight+\" \":\"\")+t.size+\"px \"+t.family}function Xt(t,e,i,s,n){let o=e[n];return o||(o=e[n]=t.measureText(n).width,i.push(n)),o>s&&(s=o),s}function qt(t,e,i,s){let n=(s=s||{}).data=s.data||{},o=s.garbageCollect=s.garbageCollect||[];s.font!==e&&(n=s.data={},o=s.garbageCollect=[],s.font=e),t.save(),t.font=e;let a=0;const r=i.length;let l,h,c,d,u;for(l=0;li.length){for(l=0;l0&&t.stroke()}}function Jt(t,e,i){return i=i||.5,!e||t&&t.x>e.left-i&&t.xe.top-i&&t.y0&&\"\"!==o.strokeColor;let l,h;for(t.save(),t.font=n.string,function(t,e){e.translation&&t.translate(e.translation[0],e.translation[1]);$(e.rotation)||t.rotate(e.rotation);e.color&&(t.fillStyle=e.color);e.textAlign&&(t.textAlign=e.textAlign);e.textBaseline&&(t.textBaseline=e.textBaseline)}(t,o),l=0;lt[i]1;)s=o+n>>1,i(s)?o=s:n=s;return{lo:o,hi:n}}const re=(t,e,i)=>ae(t,i,(s=>t[s][e]ae(t,i,(s=>t[s][e]>=i));function he(t,e,i){let s=0,n=t.length;for(;ss&&t[n-1]>i;)n--;return s>0||n{const i=\"_onData\"+ht(e),s=t[e];Object.defineProperty(t,e,{configurable:!0,enumerable:!1,value(...e){const n=s.apply(this,e);return t._chartjs.listeners.forEach((t=>{\"function\"==typeof t[i]&&t[i](...e)})),n}})})))}function ue(t,e){const i=t._chartjs;if(!i)return;const s=i.listeners,n=s.indexOf(e);-1!==n&&s.splice(n,1),s.length>0||(ce.forEach((e=>{delete t[e]})),delete t._chartjs)}function fe(t){const e=new Set;let i,s;for(i=0,s=t.length;iwindow.getComputedStyle(t,null);function be(t,e){return xe(t).getPropertyValue(e)}const _e=[\"top\",\"right\",\"bottom\",\"left\"];function ye(t,e,i){const s={};i=i?\"-\"+i:\"\";for(let n=0;n<4;n++){const o=_e[n];s[o]=parseFloat(t[e+\"-\"+o+i])||0}return s.width=s.left+s.right,s.height=s.top+s.bottom,s}function ve(t,e){const{canvas:i,currentDevicePixelRatio:s}=e,n=xe(i),o=\"border-box\"===n.boxSizing,a=ye(n,\"padding\"),r=ye(n,\"border\",\"width\"),{x:l,y:h,box:c}=function(t,e){const i=t.native||t,s=i.touches,n=s&&s.length?s[0]:i,{offsetX:o,offsetY:a}=n;let r,l,h=!1;if(((t,e,i)=>(t>0||e>0)&&(!i||!i.shadowRoot))(o,a,i.target))r=o,l=a;else{const t=e.getBoundingClientRect();r=n.clientX-t.left,l=n.clientY-t.top,h=!0}return{x:r,y:l,box:h}}(t,i),d=a.left+(c&&r.left),u=a.top+(c&&r.top);let{width:f,height:g}=e;return o&&(f-=a.width+r.width,g-=a.height+r.height),{x:Math.round((l-d)/f*i.width/s),y:Math.round((h-u)/g*i.height/s)}}const we=t=>Math.round(10*t)/10;function Me(t,e,i,s){const n=xe(t),o=ye(n,\"margin\"),a=me(n.maxWidth,t,\"clientWidth\")||wt,r=me(n.maxHeight,t,\"clientHeight\")||wt,l=function(t,e,i){let s,n;if(void 0===e||void 0===i){const o=pe(t);if(o){const t=o.getBoundingClientRect(),a=xe(o),r=ye(a,\"border\",\"width\"),l=ye(a,\"padding\");e=t.width-l.width-r.width,i=t.height-l.height-r.height,s=me(a.maxWidth,o,\"clientWidth\"),n=me(a.maxHeight,o,\"clientHeight\")}else e=t.clientWidth,i=t.clientHeight}return{width:e,height:i,maxWidth:s||wt,maxHeight:n||wt}}(t,e,i);let{width:h,height:c}=l;if(\"content-box\"===n.boxSizing){const t=ye(n,\"border\",\"width\"),e=ye(n,\"padding\");h-=e.width+t.width,c-=e.height+t.height}return h=Math.max(0,h-o.width),c=Math.max(0,s?Math.floor(h/s):c-o.height),h=we(Math.min(h,a,l.maxWidth)),c=we(Math.min(c,r,l.maxHeight)),h&&!c&&(c=we(h/2)),{width:h,height:c}}function ke(t,e,i){const s=e||1,n=Math.floor(t.height*s),o=Math.floor(t.width*s);t.height=n/s,t.width=o/s;const a=t.canvas;return a.style&&(i||!a.style.height&&!a.style.width)&&(a.style.height=`${t.height}px`,a.style.width=`${t.width}px`),(t.currentDevicePixelRatio!==s||a.height!==n||a.width!==o)&&(t.currentDevicePixelRatio=s,a.height=n,a.width=o,t.ctx.setTransform(s,0,0,s,0,0),!0)}const Se=function(){let t=!1;try{const e={get passive(){return t=!0,!1}};window.addEventListener(\"test\",null,e),window.removeEventListener(\"test\",null,e)}catch(t){}return t}();function Pe(t,e){const i=be(t,e),s=i&&i.match(/^(\\d+)(\\.\\d+)?px$/);return s?+s[1]:void 0}function De(t,e){return\"native\"in t?{x:t.x,y:t.y}:ve(t,e)}function Ce(t,e,i,s){const{controller:n,data:o,_sorted:a}=t,r=n._cachedMeta.iScale;if(r&&e===r.axis&&\"r\"!==e&&a&&o.length){const t=r._reversePixels?le:re;if(!s)return t(o,e,i);if(n._sharedOptions){const s=o[0],n=\"function\"==typeof s.getRange&&s.getRange(e);if(n){const s=t(o,e,i-n),a=t(o,e,i+n);return{lo:s.lo,hi:a.hi}}}}return{lo:0,hi:o.length-1}}function Oe(t,e,i,s,n){const o=t.getSortedVisibleDatasetMetas(),a=i[e];for(let t=0,i=o.length;t{t[r](n[a],s)&&o.push({element:t,datasetIndex:e,index:i}),t.inRange(n.x,n.y,s)&&(l=!0)})),i.intersect&&!l?[]:o}var Ee={modes:{index(t,e,i,s){const n=De(e,t),o=i.axis||\"x\",a=i.intersect?Ae(t,n,o,s):Le(t,n,o,!1,s),r=[];return a.length?(t.getSortedVisibleDatasetMetas().forEach((t=>{const e=a[0].index,i=t.data[e];i&&!i.skip&&r.push({element:i,datasetIndex:t.index,index:e})})),r):[]},dataset(t,e,i,s){const n=De(e,t),o=i.axis||\"xy\";let a=i.intersect?Ae(t,n,o,s):Le(t,n,o,!1,s);if(a.length>0){const e=a[0].datasetIndex,i=t.getDatasetMeta(e).data;a=[];for(let t=0;tAe(t,De(e,t),i.axis||\"xy\",s),nearest:(t,e,i,s)=>Le(t,De(e,t),i.axis||\"xy\",i.intersect,s),x:(t,e,i,s)=>Re(t,e,{axis:\"x\",intersect:i.intersect},s),y:(t,e,i,s)=>Re(t,e,{axis:\"y\",intersect:i.intersect},s)}};const Ie=new RegExp(/^(normal|(\\d+(?:\\.\\d+)?)(px|em|%)?)$/),ze=new RegExp(/^(normal|italic|initial|inherit|unset|(oblique( -?[0-9]?[0-9]deg)?))$/);function Fe(t,e){const i=(\"\"+t).match(Ie);if(!i||\"normal\"===i[1])return 1.2*e;switch(t=+i[2],i[3]){case\"px\":return t;case\"%\":t/=100}return e*t}function Be(t,e){const i={},s=U(e),n=s?Object.keys(e):e,o=U(t)?s?i=>K(t[i],t[e[i]]):e=>t[e]:()=>t;for(const t of n)i[t]=+o(t)||0;return i}function Ve(t){return Be(t,{top:\"y\",right:\"x\",bottom:\"y\",left:\"x\"})}function We(t){return Be(t,[\"topLeft\",\"topRight\",\"bottomLeft\",\"bottomRight\"])}function Ne(t){const e=Ve(t);return e.width=e.left+e.right,e.height=e.top+e.bottom,e}function He(t,e){t=t||{},e=e||bt.font;let i=K(t.size,e.size);\"string\"==typeof i&&(i=parseInt(i,10));let s=K(t.style,e.style);s&&!(\"\"+s).match(ze)&&(console.warn('Invalid font style specified: \"'+s+'\"'),s=\"\");const n={family:K(t.family,e.family),lineHeight:Fe(K(t.lineHeight,e.lineHeight),i),size:i,style:s,weight:K(t.weight,e.weight),string:\"\"};return n.string=Ut(n),n}function je(t,e,i,s){let n,o,a,r=!0;for(n=0,o=t.length;ni&&0===t?0:t+e;return{min:a(s,-Math.abs(o)),max:a(n,o)}}function Ye(t,e){return Object.assign(Object.create(t),e)}const Ue=[\"left\",\"top\",\"right\",\"bottom\"];function Xe(t,e){return t.filter((t=>t.pos===e))}function qe(t,e){return t.filter((t=>-1===Ue.indexOf(t.pos)&&t.box.axis===e))}function Ke(t,e){return t.sort(((t,i)=>{const s=e?i:t,n=e?t:i;return s.weight===n.weight?s.index-n.index:s.weight-n.weight}))}function Ge(t,e){const i=function(t){const e={};for(const i of t){const{stack:t,pos:s,stackWeight:n}=i;if(!t||!Ue.includes(s))continue;const o=e[t]||(e[t]={count:0,placed:0,weight:0,size:0});o.count++,o.weight+=n}return e}(t),{vBoxMaxWidth:s,hBoxMaxHeight:n}=e;let o,a,r;for(o=0,a=t.length;o{s[t]=Math.max(e[t],i[t])})),s}return s(t?[\"left\",\"right\"]:[\"top\",\"bottom\"])}function ei(t,e,i,s){const n=[];let o,a,r,l,h,c;for(o=0,a=t.length,h=0;ot.box.fullSize)),!0),s=Ke(Xe(e,\"left\"),!0),n=Ke(Xe(e,\"right\")),o=Ke(Xe(e,\"top\"),!0),a=Ke(Xe(e,\"bottom\")),r=qe(e,\"x\"),l=qe(e,\"y\");return{fullSize:i,leftAndTop:s.concat(o),rightAndBottom:n.concat(l).concat(a).concat(r),chartArea:Xe(e,\"chartArea\"),vertical:s.concat(n).concat(l),horizontal:o.concat(a).concat(r)}}(t.boxes),l=r.vertical,h=r.horizontal;Q(t.boxes,(t=>{\"function\"==typeof t.beforeLayout&&t.beforeLayout()}));const c=l.reduce(((t,e)=>e.box.options&&!1===e.box.options.display?t:t+1),0)||1,d=Object.freeze({outerWidth:e,outerHeight:i,padding:n,availableWidth:o,availableHeight:a,vBoxMaxWidth:o/2/c,hBoxMaxHeight:a/2}),u=Object.assign({},n);Je(u,Ne(s));const f=Object.assign({maxPadding:u,w:o,h:a,x:n.left,y:n.top},n),g=Ge(l.concat(h),d);ei(r.fullSize,f,d,g),ei(l,f,d,g),ei(h,f,d,g)&&ei(l,f,d,g),function(t){const e=t.maxPadding;function i(i){const s=Math.max(e[i]-t[i],0);return t[i]+=s,s}t.y+=i(\"top\"),t.x+=i(\"left\"),i(\"right\"),i(\"bottom\")}(f),si(r.leftAndTop,f,d,g),f.x+=f.w,f.y+=f.h,si(r.rightAndBottom,f,d,g),t.chartArea={left:f.left,top:f.top,right:f.left+f.w,bottom:f.top+f.h,height:f.h,width:f.w},Q(r.chartArea,(e=>{const i=e.box;Object.assign(i,t.chartArea),i.update(f.w,f.h,{left:0,top:0,right:0,bottom:0})}))}};function oi(t,e=[\"\"],i=t,s,n=(()=>t[0])){ct(s)||(s=mi(\"_fallback\",t));const o={[Symbol.toStringTag]:\"Object\",_cacheable:!0,_scopes:t,_rootScopes:i,_fallback:s,_getTarget:n,override:n=>oi([n,...t],e,i,s)};return new Proxy(o,{deleteProperty:(e,i)=>(delete e[i],delete e._keys,delete t[0][i],!0),get:(i,s)=>ci(i,s,(()=>function(t,e,i,s){let n;for(const o of e)if(n=mi(li(o,t),i),ct(n))return hi(t,n)?gi(i,s,t,n):n}(s,e,t,i))),getOwnPropertyDescriptor:(t,e)=>Reflect.getOwnPropertyDescriptor(t._scopes[0],e),getPrototypeOf:()=>Reflect.getPrototypeOf(t[0]),has:(t,e)=>xi(t).includes(e),ownKeys:t=>xi(t),set(t,e,i){const s=t._storage||(t._storage=n());return t[e]=s[e]=i,delete t._keys,!0}})}function ai(t,e,i,s){const n={_cacheable:!1,_proxy:t,_context:e,_subProxy:i,_stack:new Set,_descriptors:ri(t,s),setContext:e=>ai(t,e,i,s),override:n=>ai(t.override(n),e,i,s)};return new Proxy(n,{deleteProperty:(e,i)=>(delete e[i],delete t[i],!0),get:(t,e,i)=>ci(t,e,(()=>function(t,e,i){const{_proxy:s,_context:n,_subProxy:o,_descriptors:a}=t;let r=s[e];dt(r)&&a.isScriptable(e)&&(r=function(t,e,i,s){const{_proxy:n,_context:o,_subProxy:a,_stack:r}=i;if(r.has(t))throw new Error(\"Recursion detected: \"+Array.from(r).join(\"->\")+\"->\"+t);r.add(t),e=e(o,a||s),r.delete(t),hi(t,e)&&(e=gi(n._scopes,n,t,e));return e}(e,r,t,i));Y(r)&&r.length&&(r=function(t,e,i,s){const{_proxy:n,_context:o,_subProxy:a,_descriptors:r}=i;if(ct(o.index)&&s(t))e=e[o.index%e.length];else if(U(e[0])){const i=e,s=n._scopes.filter((t=>t!==i));e=[];for(const l of i){const i=gi(s,n,t,l);e.push(ai(i,o,a&&a[t],r))}}return e}(e,r,t,a.isIndexable));hi(e,r)&&(r=ai(r,n,o&&o[e],a));return r}(t,e,i))),getOwnPropertyDescriptor:(e,i)=>e._descriptors.allKeys?Reflect.has(t,i)?{enumerable:!0,configurable:!0}:void 0:Reflect.getOwnPropertyDescriptor(t,i),getPrototypeOf:()=>Reflect.getPrototypeOf(t),has:(e,i)=>Reflect.has(t,i),ownKeys:()=>Reflect.ownKeys(t),set:(e,i,s)=>(t[i]=s,delete e[i],!0)})}function ri(t,e={scriptable:!0,indexable:!0}){const{_scriptable:i=e.scriptable,_indexable:s=e.indexable,_allKeys:n=e.allKeys}=t;return{allKeys:n,scriptable:i,indexable:s,isScriptable:dt(i)?i:()=>i,isIndexable:dt(s)?s:()=>s}}const li=(t,e)=>t?t+ht(e):e,hi=(t,e)=>U(e)&&\"adapters\"!==t&&(null===Object.getPrototypeOf(e)||e.constructor===Object);function ci(t,e,i){if(Object.prototype.hasOwnProperty.call(t,e))return t[e];const s=i();return t[e]=s,s}function di(t,e,i){return dt(t)?t(e,i):t}const ui=(t,e)=>!0===t?e:\"string\"==typeof t?lt(e,t):void 0;function fi(t,e,i,s,n){for(const o of e){const e=ui(i,o);if(e){t.add(e);const o=di(e._fallback,i,n);if(ct(o)&&o!==i&&o!==s)return o}else if(!1===e&&ct(s)&&i!==s)return null}return!1}function gi(t,e,i,s){const n=e._rootScopes,o=di(e._fallback,i,s),a=[...t,...n],r=new Set;r.add(s);let l=pi(r,a,i,o||i,s);return null!==l&&((!ct(o)||o===i||(l=pi(r,a,o,l,s),null!==l))&&oi(Array.from(r),[\"\"],n,o,(()=>function(t,e,i){const s=t._getTarget();e in s||(s[e]={});const n=s[e];if(Y(n)&&U(i))return i;return n}(e,i,s))))}function pi(t,e,i,s,n){for(;i;)i=fi(t,e,i,s,n);return i}function mi(t,e){for(const i of e){if(!i)continue;const e=i[t];if(ct(e))return e}}function xi(t){let e=t._keys;return e||(e=t._keys=function(t){const e=new Set;for(const i of t)for(const t of Object.keys(i).filter((t=>!t.startsWith(\"_\"))))e.add(t);return Array.from(e)}(t._scopes)),e}const bi=Number.EPSILON||1e-14,_i=(t,e)=>e\"x\"===t?\"y\":\"x\";function vi(t,e,i,s){const n=t.skip?e:t,o=e,a=i.skip?e:i,r=Vt(o,n),l=Vt(a,o);let h=r/(r+l),c=l/(r+l);h=isNaN(h)?0:h,c=isNaN(c)?0:c;const d=s*h,u=s*c;return{previous:{x:o.x-d*(a.x-n.x),y:o.y-d*(a.y-n.y)},next:{x:o.x+u*(a.x-n.x),y:o.y+u*(a.y-n.y)}}}function wi(t,e=\"x\"){const i=yi(e),s=t.length,n=Array(s).fill(0),o=Array(s);let a,r,l,h=_i(t,0);for(a=0;a!t.skip))),\"monotone\"===e.cubicInterpolationMode)wi(t,n);else{let i=s?t[t.length-1]:t[0];for(o=0,a=t.length;o0===t||1===t,Pi=(t,e,i)=>-Math.pow(2,10*(t-=1))*Math.sin((t-e)*yt/i),Di=(t,e,i)=>Math.pow(2,-10*t)*Math.sin((t-e)*yt/i)+1,Ci={linear:t=>t,easeInQuad:t=>t*t,easeOutQuad:t=>-t*(t-2),easeInOutQuad:t=>(t/=.5)<1?.5*t*t:-.5*(--t*(t-2)-1),easeInCubic:t=>t*t*t,easeOutCubic:t=>(t-=1)*t*t+1,easeInOutCubic:t=>(t/=.5)<1?.5*t*t*t:.5*((t-=2)*t*t+2),easeInQuart:t=>t*t*t*t,easeOutQuart:t=>-((t-=1)*t*t*t-1),easeInOutQuart:t=>(t/=.5)<1?.5*t*t*t*t:-.5*((t-=2)*t*t*t-2),easeInQuint:t=>t*t*t*t*t,easeOutQuint:t=>(t-=1)*t*t*t*t+1,easeInOutQuint:t=>(t/=.5)<1?.5*t*t*t*t*t:.5*((t-=2)*t*t*t*t+2),easeInSine:t=>1-Math.cos(t*kt),easeOutSine:t=>Math.sin(t*kt),easeInOutSine:t=>-.5*(Math.cos(_t*t)-1),easeInExpo:t=>0===t?0:Math.pow(2,10*(t-1)),easeOutExpo:t=>1===t?1:1-Math.pow(2,-10*t),easeInOutExpo:t=>Si(t)?t:t<.5?.5*Math.pow(2,10*(2*t-1)):.5*(2-Math.pow(2,-10*(2*t-1))),easeInCirc:t=>t>=1?t:-(Math.sqrt(1-t*t)-1),easeOutCirc:t=>Math.sqrt(1-(t-=1)*t),easeInOutCirc:t=>(t/=.5)<1?-.5*(Math.sqrt(1-t*t)-1):.5*(Math.sqrt(1-(t-=2)*t)+1),easeInElastic:t=>Si(t)?t:Pi(t,.075,.3),easeOutElastic:t=>Si(t)?t:Di(t,.075,.3),easeInOutElastic(t){const e=.1125;return Si(t)?t:t<.5?.5*Pi(2*t,e,.45):.5+.5*Di(2*t-1,e,.45)},easeInBack(t){const e=1.70158;return t*t*((e+1)*t-e)},easeOutBack(t){const e=1.70158;return(t-=1)*t*((e+1)*t+e)+1},easeInOutBack(t){let e=1.70158;return(t/=.5)<1?t*t*((1+(e*=1.525))*t-e)*.5:.5*((t-=2)*t*((1+(e*=1.525))*t+e)+2)},easeInBounce:t=>1-Ci.easeOutBounce(1-t),easeOutBounce(t){const e=7.5625,i=2.75;return t<1/i?e*t*t:t<2/i?e*(t-=1.5/i)*t+.75:t<2.5/i?e*(t-=2.25/i)*t+.9375:e*(t-=2.625/i)*t+.984375},easeInOutBounce:t=>t<.5?.5*Ci.easeInBounce(2*t):.5*Ci.easeOutBounce(2*t-1)+.5};function Oi(t,e,i,s){return{x:t.x+i*(e.x-t.x),y:t.y+i*(e.y-t.y)}}function Ai(t,e,i,s){return{x:t.x+i*(e.x-t.x),y:\"middle\"===s?i<.5?t.y:e.y:\"after\"===s?i<1?t.y:e.y:i>0?e.y:t.y}}function Ti(t,e,i,s){const n={x:t.cp2x,y:t.cp2y},o={x:e.cp1x,y:e.cp1y},a=Oi(t,n,i),r=Oi(n,o,i),l=Oi(o,e,i),h=Oi(a,r,i),c=Oi(r,l,i);return Oi(h,c,i)}const Li=new Map;function Ri(t,e,i){return function(t,e){e=e||{};const i=t+JSON.stringify(e);let s=Li.get(i);return s||(s=new Intl.NumberFormat(t,e),Li.set(i,s)),s}(e,i).format(t)}function Ei(t,e,i){return t?function(t,e){return{x:i=>t+t+e-i,setWidth(t){e=t},textAlign:t=>\"center\"===t?t:\"right\"===t?\"left\":\"right\",xPlus:(t,e)=>t-e,leftForLtr:(t,e)=>t-e}}(e,i):{x:t=>t,setWidth(t){},textAlign:t=>t,xPlus:(t,e)=>t+e,leftForLtr:(t,e)=>t}}function Ii(t,e){let i,s;\"ltr\"!==e&&\"rtl\"!==e||(i=t.canvas.style,s=[i.getPropertyValue(\"direction\"),i.getPropertyPriority(\"direction\")],i.setProperty(\"direction\",e,\"important\"),t.prevTextDirection=s)}function zi(t,e){void 0!==e&&(delete t.prevTextDirection,t.canvas.style.setProperty(\"direction\",e[0],e[1]))}function Fi(t){return\"angle\"===t?{between:Ht,compare:Wt,normalize:Nt}:{between:Yt,compare:(t,e)=>t-e,normalize:t=>t}}function Bi({start:t,end:e,count:i,loop:s,style:n}){return{start:t%i,end:e%i,loop:s&&(e-t+1)%i==0,style:n}}function Vi(t,e,i){if(!i)return[t];const{property:s,start:n,end:o}=i,a=e.length,{compare:r,between:l,normalize:h}=Fi(s),{start:c,end:d,loop:u,style:f}=function(t,e,i){const{property:s,start:n,end:o}=i,{between:a,normalize:r}=Fi(s),l=e.length;let h,c,{start:d,end:u,loop:f}=t;if(f){for(d+=l,u+=l,h=0,c=l;hb||l(n,x,p)&&0!==r(n,x),v=()=>!b||0===r(o,p)||l(o,x,p);for(let t=c,i=c;t<=d;++t)m=e[t%a],m.skip||(p=h(m[s]),p!==x&&(b=l(p,n,o),null===_&&y()&&(_=0===r(p,n)?t:i),null!==_&&v()&&(g.push(Bi({start:_,end:t,loop:u,count:a,style:f})),_=null),i=t,x=p));return null!==_&&g.push(Bi({start:_,end:d,loop:u,count:a,style:f})),g}function Wi(t,e){const i=[],s=t.segments;for(let n=0;nn&&t[o%e].skip;)o--;return o%=e,{start:n,end:o}}(i,n,o,s);if(!0===s)return Hi(t,[{start:a,end:r,loop:o}],i,e);return Hi(t,function(t,e,i,s){const n=t.length,o=[];let a,r=e,l=t[e];for(a=e+1;a<=i;++a){const i=t[a%n];i.skip||i.stop?l.skip||(s=!1,o.push({start:e%n,end:(a-1)%n,loop:s}),e=r=i.stop?a:null):(r=a,l.skip&&(e=a)),l=i}return null!==r&&o.push({start:e%n,end:r%n,loop:s}),o}(i,a,rnull===t||\"\"===t;const Gi=!!Se&&{passive:!0};function Zi(t,e,i){t.canvas.removeEventListener(e,i,Gi)}function Ji(t,e){for(const i of t)if(i===e||i.contains(e))return!0}function Qi(t,e,i){const s=t.canvas,n=new MutationObserver((t=>{let e=!1;for(const i of t)e=e||Ji(i.addedNodes,s),e=e&&!Ji(i.removedNodes,s);e&&i()}));return n.observe(document,{childList:!0,subtree:!0}),n}function ts(t,e,i){const s=t.canvas,n=new MutationObserver((t=>{let e=!1;for(const i of t)e=e||Ji(i.removedNodes,s),e=e&&!Ji(i.addedNodes,s);e&&i()}));return n.observe(document,{childList:!0,subtree:!0}),n}const es=new Map;let is=0;function ss(){const t=window.devicePixelRatio;t!==is&&(is=t,es.forEach(((e,i)=>{i.currentDevicePixelRatio!==t&&e()})))}function ns(t,i,s){const n=t.canvas,o=n&&pe(n);if(!o)return;const a=e(((t,e)=>{const i=o.clientWidth;s(t,e),i{const e=t[0],i=e.contentRect.width,s=e.contentRect.height;0===i&&0===s||a(i,s)}));return r.observe(o),function(t,e){es.size||window.addEventListener(\"resize\",ss),es.set(t,e)}(t,a),r}function os(t,e,i){i&&i.disconnect(),\"resize\"===e&&function(t){es.delete(t),es.size||window.removeEventListener(\"resize\",ss)}(t)}function as(t,i,s){const n=t.canvas,o=e((e=>{null!==t.ctx&&s(function(t,e){const i=qi[t.type]||t.type,{x:s,y:n}=ve(t,e);return{type:i,chart:e,native:t,x:void 0!==s?s:null,y:void 0!==n?n:null}}(e,t))}),t,(t=>{const e=t[0];return[e,e.offsetX,e.offsetY]}));return function(t,e,i){t.addEventListener(e,i,Gi)}(n,i,o),o}class rs extends Ui{acquireContext(t,e){const i=t&&t.getContext&&t.getContext(\"2d\");return i&&i.canvas===t?(function(t,e){const i=t.style,s=t.getAttribute(\"height\"),n=t.getAttribute(\"width\");if(t.$chartjs={initial:{height:s,width:n,style:{display:i.display,height:i.height,width:i.width}}},i.display=i.display||\"block\",i.boxSizing=i.boxSizing||\"border-box\",Ki(n)){const e=Pe(t,\"width\");void 0!==e&&(t.width=e)}if(Ki(s))if(\"\"===t.style.height)t.height=t.width/(e||2);else{const e=Pe(t,\"height\");void 0!==e&&(t.height=e)}}(t,e),i):null}releaseContext(t){const e=t.canvas;if(!e.$chartjs)return!1;const i=e.$chartjs.initial;[\"height\",\"width\"].forEach((t=>{const s=i[t];$(s)?e.removeAttribute(t):e.setAttribute(t,s)}));const s=i.style||{};return Object.keys(s).forEach((t=>{e.style[t]=s[t]})),e.width=e.width,delete e.$chartjs,!0}addEventListener(t,e,i){this.removeEventListener(t,e);const s=t.$proxies||(t.$proxies={}),n={attach:Qi,detach:ts,resize:ns}[e]||as;s[e]=n(t,e,i)}removeEventListener(t,e){const i=t.$proxies||(t.$proxies={}),s=i[e];if(!s)return;({attach:os,detach:os,resize:os}[e]||Zi)(t,e,s),i[e]=void 0}getDevicePixelRatio(){return window.devicePixelRatio}getMaximumSize(t,e,i,s){return Me(t,e,i,s)}isAttached(t){const e=pe(t);return!(!e||!e.isConnected)}}function ls(t){return!ge()||\"undefined\"!=typeof OffscreenCanvas&&t instanceof OffscreenCanvas?Xi:rs}var hs=Object.freeze({__proto__:null,_detectPlatform:ls,BasePlatform:Ui,BasicPlatform:Xi,DomPlatform:rs});const cs=\"transparent\",ds={boolean:(t,e,i)=>i>.5?e:t,color(t,e,i){const s=W(t||cs),n=s.valid&&W(e||cs);return n&&n.valid?n.mix(s,i).hexString():e},number:(t,e,i)=>t+(e-t)*i};class us{constructor(t,e,i,s){const n=e[i];s=je([t.to,s,n,t.from]);const o=je([t.from,n,s]);this._active=!0,this._fn=t.fn||ds[t.type||typeof o],this._easing=Ci[t.easing]||Ci.linear,this._start=Math.floor(Date.now()+(t.delay||0)),this._duration=this._total=Math.floor(t.duration),this._loop=!!t.loop,this._target=e,this._prop=i,this._from=o,this._to=s,this._promises=void 0}active(){return this._active}update(t,e,i){if(this._active){this._notify(!1);const s=this._target[this._prop],n=i-this._start,o=this._duration-n;this._start=i,this._duration=Math.floor(Math.max(o,t.duration)),this._total+=n,this._loop=!!t.loop,this._to=je([t.to,e,s,t.from]),this._from=je([t.from,s,e])}}cancel(){this._active&&(this.tick(Date.now()),this._active=!1,this._notify(!1))}tick(t){const e=t-this._start,i=this._duration,s=this._prop,n=this._from,o=this._loop,a=this._to;let r;if(this._active=n!==a&&(o||e1?2-r:r,r=this._easing(Math.min(1,Math.max(0,r))),this._target[s]=this._fn(n,a,r))}wait(){const t=this._promises||(this._promises=[]);return new Promise(((e,i)=>{t.push({res:e,rej:i})}))}_notify(t){const e=t?\"res\":\"rej\",i=this._promises||[];for(let t=0;t\"onProgress\"!==t&&\"onComplete\"!==t&&\"fn\"!==t}),bt.set(\"animations\",{colors:{type:\"color\",properties:[\"color\",\"borderColor\",\"backgroundColor\"]},numbers:{type:\"number\",properties:[\"x\",\"y\",\"borderWidth\",\"radius\",\"tension\"]}}),bt.describe(\"animations\",{_fallback:\"animation\"}),bt.set(\"transitions\",{active:{animation:{duration:400}},resize:{animation:{duration:0}},show:{animations:{colors:{from:\"transparent\"},visible:{type:\"boolean\",duration:0}}},hide:{animations:{colors:{to:\"transparent\"},visible:{type:\"boolean\",easing:\"linear\",fn:t=>0|t}}}});class gs{constructor(t,e){this._chart=t,this._properties=new Map,this.configure(e)}configure(t){if(!U(t))return;const e=this._properties;Object.getOwnPropertyNames(t).forEach((i=>{const s=t[i];if(!U(s))return;const n={};for(const t of fs)n[t]=s[t];(Y(s.properties)&&s.properties||[i]).forEach((t=>{t!==i&&e.has(t)||e.set(t,n)}))}))}_animateOptions(t,e){const i=e.options,s=function(t,e){if(!e)return;let i=t.options;if(!i)return void(t.options=e);i.$shared&&(t.options=i=Object.assign({},i,{$shared:!1,$animations:{}}));return i}(t,i);if(!s)return[];const n=this._createAnimations(s,i);return i.$shared&&function(t,e){const i=[],s=Object.keys(e);for(let e=0;e{t.options=i}),(()=>{})),n}_createAnimations(t,e){const i=this._properties,s=[],n=t.$animations||(t.$animations={}),o=Object.keys(e),a=Date.now();let r;for(r=o.length-1;r>=0;--r){const l=o[r];if(\"$\"===l.charAt(0))continue;if(\"options\"===l){s.push(...this._animateOptions(t,e));continue}const h=e[l];let c=n[l];const d=i.get(l);if(c){if(d&&c.active()){c.update(d,h,a);continue}c.cancel()}d&&d.duration?(n[l]=c=new us(d,t,l,h),s.push(c)):t[l]=h}return s}update(t,e){if(0===this._properties.size)return void Object.assign(t,e);const i=this._createAnimations(t,e);return i.length?(a.add(this._chart,i),!0):void 0}}function ps(t,e){const i=t&&t.options||{},s=i.reverse,n=void 0===i.min?e:0,o=void 0===i.max?e:0;return{start:s?o:n,end:s?n:o}}function ms(t,e){const i=[],s=t._getSortedDatasetMetas(e);let n,o;for(n=0,o=s.length;n0||!i&&e<0)return n.index}return null}function vs(t,e){const{chart:i,_cachedMeta:s}=t,n=i._stacks||(i._stacks={}),{iScale:o,vScale:a,index:r}=s,l=o.axis,h=a.axis,c=function(t,e,i){return`${t.id}.${e.id}.${i.stack||i.type}`}(o,a,s),d=e.length;let u;for(let t=0;ti[t].axis===e)).shift()}function Ms(t,e){const i=t.controller.index,s=t.vScale&&t.vScale.axis;if(s){e=e||t._parsed;for(const t of e){const e=t._stacks;if(!e||void 0===e[s]||void 0===e[s][i])return;delete e[s][i]}}}const ks=t=>\"reset\"===t||\"none\"===t,Ss=(t,e)=>e?t:Object.assign({},t);class Ps{constructor(t,e){this.chart=t,this._ctx=t.ctx,this.index=e,this._cachedDataOpts={},this._cachedMeta=this.getMeta(),this._type=this._cachedMeta.type,this.options=void 0,this._parsing=!1,this._data=void 0,this._objectData=void 0,this._sharedOptions=void 0,this._drawStart=void 0,this._drawCount=void 0,this.enableOptionSharing=!1,this.$context=void 0,this._syncList=[],this.initialize()}initialize(){const t=this._cachedMeta;this.configure(),this.linkScales(),t._stacked=bs(t.vScale,t),this.addElements()}updateIndex(t){this.index!==t&&Ms(this._cachedMeta),this.index=t}linkScales(){const t=this.chart,e=this._cachedMeta,i=this.getDataset(),s=(t,e,i,s)=>\"x\"===t?e:\"r\"===t?s:i,n=e.xAxisID=K(i.xAxisID,ws(t,\"x\")),o=e.yAxisID=K(i.yAxisID,ws(t,\"y\")),a=e.rAxisID=K(i.rAxisID,ws(t,\"r\")),r=e.indexAxis,l=e.iAxisID=s(r,n,o,a),h=e.vAxisID=s(r,o,n,a);e.xScale=this.getScaleForId(n),e.yScale=this.getScaleForId(o),e.rScale=this.getScaleForId(a),e.iScale=this.getScaleForId(l),e.vScale=this.getScaleForId(h)}getDataset(){return this.chart.data.datasets[this.index]}getMeta(){return this.chart.getDatasetMeta(this.index)}getScaleForId(t){return this.chart.scales[t]}_getOtherScale(t){const e=this._cachedMeta;return t===e.iScale?e.vScale:e.iScale}reset(){this._update(\"reset\")}_destroy(){const t=this._cachedMeta;this._data&&ue(this._data,this),t._stacked&&Ms(t)}_dataCheck(){const t=this.getDataset(),e=t.data||(t.data=[]),i=this._data;if(U(e))this._data=function(t){const e=Object.keys(t),i=new Array(e.length);let s,n,o;for(s=0,n=e.length;s0&&i._parsed[t-1];if(!1===this._parsing)i._parsed=s,i._sorted=!0,h=s;else{h=Y(s[t])?this.parseArrayData(i,s,t,e):U(s[t])?this.parseObjectData(i,s,t,e):this.parsePrimitiveData(i,s,t,e);const n=()=>null===l[a]||d&&l[a]t&&!e.hidden&&e._stacked&&{keys:ms(i,!0),values:null})(e,i,this.chart),l={min:Number.POSITIVE_INFINITY,max:Number.NEGATIVE_INFINITY},{min:h,max:c}=function(t){const{min:e,max:i,minDefined:s,maxDefined:n}=t.getUserBounds();return{min:s?e:Number.NEGATIVE_INFINITY,max:n?i:Number.POSITIVE_INFINITY}}(a);let d,u;function f(){u=s[d];const e=u[a.axis];return!X(u[t.axis])||h>e||c=0;--d)if(!f()){this.updateRangeFromParsed(l,t,u,r);break}return l}getAllParsedValues(t){const e=this._cachedMeta._parsed,i=[];let s,n,o;for(s=0,n=e.length;s=0&&tthis.getContext(i,s)),c);return f.$shared&&(f.$shared=r,n[o]=Object.freeze(Ss(f,r))),f}_resolveAnimations(t,e,i){const s=this.chart,n=this._cachedDataOpts,o=`animation-${e}`,a=n[o];if(a)return a;let r;if(!1!==s.options.animation){const s=this.chart.config,n=s.datasetAnimationScopeKeys(this._type,e),o=s.getOptionScopes(this.getDataset(),n);r=s.createResolver(o,this.getContext(t,i,e))}const l=new gs(s,r&&r.animations);return r&&r._cacheable&&(n[o]=Object.freeze(l)),l}getSharedOptions(t){if(t.$shared)return this._sharedOptions||(this._sharedOptions=Object.assign({},t))}includeOptions(t,e){return!e||ks(t)||this.chart._animationsDisabled}updateElement(t,e,i,s){ks(s)?Object.assign(t,i):this._resolveAnimations(e,s).update(t,i)}updateSharedOptions(t,e,i){t&&!ks(e)&&this._resolveAnimations(void 0,e).update(t,i)}_setStyle(t,e,i,s){t.active=s;const n=this.getStyle(e,s);this._resolveAnimations(e,i,s).update(t,{options:!s&&this.getSharedOptions(n)||n})}removeHoverStyle(t,e,i){this._setStyle(t,i,\"active\",!1)}setHoverStyle(t,e,i){this._setStyle(t,i,\"active\",!0)}_removeDatasetHoverStyle(){const t=this._cachedMeta.dataset;t&&this._setStyle(t,void 0,\"active\",!1)}_setDatasetHoverStyle(){const t=this._cachedMeta.dataset;t&&this._setStyle(t,void 0,\"active\",!0)}_resyncElements(t){const e=this._data,i=this._cachedMeta.data;for(const[t,e,i]of this._syncList)this[t](e,i);this._syncList=[];const s=i.length,n=e.length,o=Math.min(n,s);o&&this.parse(0,o),n>s?this._insertElements(s,n-s,t):n{for(t.length+=e,a=t.length-1;a>=o;a--)t[a]=t[a-e]};for(r(n),a=t;a{s[t]=i[t]&&i[t].active()?i[t]._to:this[t]})),s}}Ds.defaults={},Ds.defaultRoutes=void 0;const Cs={values:t=>Y(t)?t:\"\"+t,numeric(t,e,i){if(0===t)return\"0\";const s=this.chart.options.locale;let n,o=t;if(i.length>1){const e=Math.max(Math.abs(i[0].value),Math.abs(i[i.length-1].value));(e<1e-4||e>1e15)&&(n=\"scientific\"),o=function(t,e){let i=e.length>3?e[2].value-e[1].value:e[1].value-e[0].value;Math.abs(i)>=1&&t!==Math.floor(t)&&(i=t-Math.floor(t));return i}(t,i)}const a=Dt(Math.abs(o)),r=Math.max(Math.min(-1*Math.floor(a),20),0),l={notation:n,minimumFractionDigits:r,maximumFractionDigits:r};return Object.assign(l,this.options.ticks.format),Ri(t,s,l)},logarithmic(t,e,i){if(0===t)return\"0\";const s=t/Math.pow(10,Math.floor(Dt(t)));return 1===s||2===s||5===s?Cs.numeric.call(this,t,e,i):\"\"}};var Os={formatters:Cs};function As(t,e){const i=t.options.ticks,s=i.maxTicksLimit||function(t){const e=t.options.offset,i=t._tickSize(),s=t._length/i+(e?0:1),n=t._maxLength/i;return Math.floor(Math.min(s,n))}(t),n=i.major.enabled?function(t){const e=[];let i,s;for(i=0,s=t.length;is)return function(t,e,i,s){let n,o=0,a=i[0];for(s=Math.ceil(s),n=0;nn)return e}return Math.max(n,1)}(n,e,s);if(o>0){let t,i;const s=o>1?Math.round((r-a)/(o-1)):null;for(Ts(e,l,h,$(s)?0:a-s,a),t=0,i=o-1;te.lineWidth,tickColor:(t,e)=>e.color,offset:!1,borderDash:[],borderDashOffset:0,borderWidth:1},title:{display:!1,text:\"\",padding:{top:4,bottom:4}},ticks:{minRotation:0,maxRotation:50,mirror:!1,textStrokeWidth:0,textStrokeColor:\"\",padding:3,display:!0,autoSkip:!0,autoSkipPadding:3,labelOffset:0,callback:Os.formatters.values,minor:{},major:{},align:\"center\",crossAlign:\"near\",showLabelBackdrop:!1,backdropColor:\"rgba(255, 255, 255, 0.75)\",backdropPadding:2}}),bt.route(\"scale.ticks\",\"color\",\"\",\"color\"),bt.route(\"scale.grid\",\"color\",\"\",\"borderColor\"),bt.route(\"scale.grid\",\"borderColor\",\"\",\"borderColor\"),bt.route(\"scale.title\",\"color\",\"\",\"color\"),bt.describe(\"scale\",{_fallback:!1,_scriptable:t=>!t.startsWith(\"before\")&&!t.startsWith(\"after\")&&\"callback\"!==t&&\"parser\"!==t,_indexable:t=>\"borderDash\"!==t&&\"tickBorderDash\"!==t}),bt.describe(\"scales\",{_fallback:\"scale\"}),bt.describe(\"scale.ticks\",{_scriptable:t=>\"backdropPadding\"!==t&&\"callback\"!==t,_indexable:t=>\"backdropPadding\"!==t});const Ls=(t,e,i)=>\"top\"===e||\"left\"===e?t[e]+i:t[e]-i;function Rs(t,e){const i=[],s=t.length/e,n=t.length;let o=0;for(;oa+r)))return h}function Is(t){return t.drawTicks?t.tickLength:0}function zs(t,e){if(!t.display)return 0;const i=He(t.font,e),s=Ne(t.padding);return(Y(t.text)?t.text.length:1)*i.lineHeight+s.height}function Fs(t,e,i){let n=s(t);return(i&&\"right\"!==e||!i&&\"right\"===e)&&(n=(t=>\"left\"===t?\"right\":\"right\"===t?\"left\":t)(n)),n}class Bs extends Ds{constructor(t){super(),this.id=t.id,this.type=t.type,this.options=void 0,this.ctx=t.ctx,this.chart=t.chart,this.top=void 0,this.bottom=void 0,this.left=void 0,this.right=void 0,this.width=void 0,this.height=void 0,this._margins={left:0,right:0,top:0,bottom:0},this.maxWidth=void 0,this.maxHeight=void 0,this.paddingTop=void 0,this.paddingBottom=void 0,this.paddingLeft=void 0,this.paddingRight=void 0,this.axis=void 0,this.labelRotation=void 0,this.min=void 0,this.max=void 0,this._range=void 0,this.ticks=[],this._gridLineItems=null,this._labelItems=null,this._labelSizes=null,this._length=0,this._maxLength=0,this._longestTextCache={},this._startPixel=void 0,this._endPixel=void 0,this._reversePixels=!1,this._userMax=void 0,this._userMin=void 0,this._suggestedMax=void 0,this._suggestedMin=void 0,this._ticksLength=0,this._borderValue=0,this._cache={},this._dataLimitsCached=!1,this.$context=void 0}init(t){this.options=t.setContext(this.getContext()),this.axis=t.axis,this._userMin=this.parse(t.min),this._userMax=this.parse(t.max),this._suggestedMin=this.parse(t.suggestedMin),this._suggestedMax=this.parse(t.suggestedMax)}parse(t,e){return t}getUserBounds(){let{_userMin:t,_userMax:e,_suggestedMin:i,_suggestedMax:s}=this;return t=q(t,Number.POSITIVE_INFINITY),e=q(e,Number.NEGATIVE_INFINITY),i=q(i,Number.POSITIVE_INFINITY),s=q(s,Number.NEGATIVE_INFINITY),{min:q(t,i),max:q(e,s),minDefined:X(t),maxDefined:X(e)}}getMinMax(t){let e,{min:i,max:s,minDefined:n,maxDefined:o}=this.getUserBounds();if(n&&o)return{min:i,max:s};const a=this.getMatchingVisibleMetas();for(let r=0,l=a.length;rs?s:i,s=n&&i>s?i:s,{min:q(i,q(s,i)),max:q(s,q(i,s))}}getPadding(){return{left:this.paddingLeft||0,top:this.paddingTop||0,right:this.paddingRight||0,bottom:this.paddingBottom||0}}getTicks(){return this.ticks}getLabels(){const t=this.chart.data;return this.options.labels||(this.isHorizontal()?t.xLabels:t.yLabels)||t.labels||[]}beforeLayout(){this._cache={},this._dataLimitsCached=!1}beforeUpdate(){J(this.options.beforeUpdate,[this])}update(t,e,i){const{beginAtZero:s,grace:n,ticks:o}=this.options,a=o.sampleSize;this.beforeUpdate(),this.maxWidth=t,this.maxHeight=e,this._margins=i=Object.assign({left:0,right:0,top:0,bottom:0},i),this.ticks=null,this._labelSizes=null,this._gridLineItems=null,this._labelItems=null,this.beforeSetDimensions(),this.setDimensions(),this.afterSetDimensions(),this._maxLength=this.isHorizontal()?this.width+i.left+i.right:this.height+i.top+i.bottom,this._dataLimitsCached||(this.beforeDataLimits(),this.determineDataLimits(),this.afterDataLimits(),this._range=$e(this,n,s),this._dataLimitsCached=!0),this.beforeBuildTicks(),this.ticks=this.buildTicks()||[],this.afterBuildTicks();const r=a=n||i<=1||!this.isHorizontal())return void(this.labelRotation=s);const h=this._getLabelSizes(),c=h.widest.width,d=h.highest.height,u=jt(this.chart.width-c,0,this.maxWidth);o=t.offset?this.maxWidth/i:u/(i-1),c+6>o&&(o=u/(i-(t.offset?.5:1)),a=this.maxHeight-Is(t.grid)-e.padding-zs(t.title,this.chart.options.font),r=Math.sqrt(c*c+d*d),l=zt(Math.min(Math.asin(jt((h.highest.height+6)/o,-1,1)),Math.asin(jt(a/r,-1,1))-Math.asin(jt(d/r,-1,1)))),l=Math.max(s,Math.min(n,l))),this.labelRotation=l}afterCalculateLabelRotation(){J(this.options.afterCalculateLabelRotation,[this])}beforeFit(){J(this.options.beforeFit,[this])}fit(){const t={width:0,height:0},{chart:e,options:{ticks:i,title:s,grid:n}}=this,o=this._isVisible(),a=this.isHorizontal();if(o){const o=zs(s,e.options.font);if(a?(t.width=this.maxWidth,t.height=Is(n)+o):(t.height=this.maxHeight,t.width=Is(n)+o),i.display&&this.ticks.length){const{first:e,last:s,widest:n,highest:o}=this._getLabelSizes(),r=2*i.padding,l=It(this.labelRotation),h=Math.cos(l),c=Math.sin(l);if(a){const e=i.mirror?0:c*n.width+h*o.height;t.height=Math.min(this.maxHeight,t.height+e+r)}else{const e=i.mirror?0:h*n.width+c*o.height;t.width=Math.min(this.maxWidth,t.width+e+r)}this._calculatePadding(e,s,c,h)}}this._handleMargins(),a?(this.width=this._length=e.width-this._margins.left-this._margins.right,this.height=t.height):(this.width=t.width,this.height=this._length=e.height-this._margins.top-this._margins.bottom)}_calculatePadding(t,e,i,s){const{ticks:{align:n,padding:o},position:a}=this.options,r=0!==this.labelRotation,l=\"top\"!==a&&\"x\"===this.axis;if(this.isHorizontal()){const a=this.getPixelForTick(0)-this.left,h=this.right-this.getPixelForTick(this.ticks.length-1);let c=0,d=0;r?l?(c=s*t.width,d=i*e.height):(c=i*t.height,d=s*e.width):\"start\"===n?d=e.width:\"end\"===n?c=t.width:(c=t.width/2,d=e.width/2),this.paddingLeft=Math.max((c-a+o)*this.width/(this.width-a),0),this.paddingRight=Math.max((d-h+o)*this.width/(this.width-h),0)}else{let i=e.height/2,s=t.height/2;\"start\"===n?(i=0,s=t.height):\"end\"===n&&(i=e.height,s=0),this.paddingTop=i+o,this.paddingBottom=s+o}}_handleMargins(){this._margins&&(this._margins.left=Math.max(this.paddingLeft,this._margins.left),this._margins.top=Math.max(this.paddingTop,this._margins.top),this._margins.right=Math.max(this.paddingRight,this._margins.right),this._margins.bottom=Math.max(this.paddingBottom,this._margins.bottom))}afterFit(){J(this.options.afterFit,[this])}isHorizontal(){const{axis:t,position:e}=this.options;return\"top\"===e||\"bottom\"===e||\"x\"===t}isFullSize(){return this.options.fullSize}_convertTicksToLabels(t){let e,i;for(this.beforeTickToLabelConversion(),this.generateTickLabels(t),e=0,i=t.length;e{const i=t.gc,s=i.length/2;let n;if(s>e){for(n=0;n({width:n[t]||0,height:o[t]||0});return{first:v(0),last:v(e-1),widest:v(_),highest:v(y),widths:n,heights:o}}getLabelForValue(t){return t}getPixelForValue(t,e){return NaN}getValueForPixel(t){}getPixelForTick(t){const e=this.ticks;return t<0||t>e.length-1?null:this.getPixelForValue(e[t].value)}getPixelForDecimal(t){this._reversePixels&&(t=1-t);const e=this._startPixel+t*this._length;return $t(this._alignToPixels?Kt(this.chart,e,0):e)}getDecimalForPixel(t){const e=(t-this._startPixel)/this._length;return this._reversePixels?1-e:e}getBasePixel(){return this.getPixelForValue(this.getBaseValue())}getBaseValue(){const{min:t,max:e}=this;return t<0&&e<0?e:t>0&&e>0?t:0}getContext(t){const e=this.ticks||[];if(t>=0&&ta*s?a/i:r/s:r*s0}_computeGridLineItems(t){const e=this.axis,i=this.chart,s=this.options,{grid:n,position:o}=s,a=n.offset,r=this.isHorizontal(),l=this.ticks.length+(a?1:0),h=Is(n),c=[],d=n.setContext(this.getContext()),u=d.drawBorder?d.borderWidth:0,f=u/2,g=function(t){return Kt(i,t,u)};let p,m,x,b,_,y,v,w,M,k,S,P;if(\"top\"===o)p=g(this.bottom),y=this.bottom-h,w=p-f,k=g(t.top)+f,P=t.bottom;else if(\"bottom\"===o)p=g(this.top),k=t.top,P=g(t.bottom)-f,y=p+f,w=this.top+h;else if(\"left\"===o)p=g(this.right),_=this.right-h,v=p-f,M=g(t.left)+f,S=t.right;else if(\"right\"===o)p=g(this.left),M=t.left,S=g(t.right)-f,_=p+f,v=this.left+h;else if(\"x\"===e){if(\"center\"===o)p=g((t.top+t.bottom)/2+.5);else if(U(o)){const t=Object.keys(o)[0],e=o[t];p=g(this.chart.scales[t].getPixelForValue(e))}k=t.top,P=t.bottom,y=p+f,w=y+h}else if(\"y\"===e){if(\"center\"===o)p=g((t.left+t.right)/2);else if(U(o)){const t=Object.keys(o)[0],e=o[t];p=g(this.chart.scales[t].getPixelForValue(e))}_=p-f,v=_-h,M=t.left,S=t.right}const D=K(s.ticks.maxTicksLimit,l),C=Math.max(1,Math.ceil(l/D));for(m=0;me.value===t));if(i>=0){return e.setContext(this.getContext(i)).lineWidth}return 0}drawGrid(t){const e=this.options.grid,i=this.ctx,s=this._gridLineItems||(this._gridLineItems=this._computeGridLineItems(t));let n,o;const a=(t,e,s)=>{s.width&&s.color&&(i.save(),i.lineWidth=s.width,i.strokeStyle=s.color,i.setLineDash(s.borderDash||[]),i.lineDashOffset=s.borderDashOffset,i.beginPath(),i.moveTo(t.x,t.y),i.lineTo(e.x,e.y),i.stroke(),i.restore())};if(e.display)for(n=0,o=s.length;n{this.drawBackground(),this.drawGrid(t),this.drawTitle()}},{z:i+1,draw:()=>{this.drawBorder()}},{z:e,draw:t=>{this.drawLabels(t)}}]:[{z:e,draw:t=>{this.draw(t)}}]}getMatchingVisibleMetas(t){const e=this.chart.getSortedVisibleDatasetMetas(),i=this.axis+\"AxisID\",s=[];let n,o;for(n=0,o=e.length;n{const s=i.split(\".\"),n=s.pop(),o=[t].concat(s).join(\".\"),a=e[i].split(\".\"),r=a.pop(),l=a.join(\".\");bt.route(o,n,l,r)}))}(e,t.defaultRoutes);t.descriptors&&bt.describe(e,t.descriptors)}(t,o,i),this.override&&bt.override(t.id,t.overrides)),o}get(t){return this.items[t]}unregister(t){const e=this.items,i=t.id,s=this.scope;i in e&&delete e[i],s&&i in bt[s]&&(delete bt[s][i],this.override&&delete gt[i])}}var Ws=new class{constructor(){this.controllers=new Vs(Ps,\"datasets\",!0),this.elements=new Vs(Ds,\"elements\"),this.plugins=new Vs(Object,\"plugins\"),this.scales=new Vs(Bs,\"scales\"),this._typedRegistries=[this.controllers,this.scales,this.elements]}add(...t){this._each(\"register\",t)}remove(...t){this._each(\"unregister\",t)}addControllers(...t){this._each(\"register\",t,this.controllers)}addElements(...t){this._each(\"register\",t,this.elements)}addPlugins(...t){this._each(\"register\",t,this.plugins)}addScales(...t){this._each(\"register\",t,this.scales)}getController(t){return this._get(t,this.controllers,\"controller\")}getElement(t){return this._get(t,this.elements,\"element\")}getPlugin(t){return this._get(t,this.plugins,\"plugin\")}getScale(t){return this._get(t,this.scales,\"scale\")}removeControllers(...t){this._each(\"unregister\",t,this.controllers)}removeElements(...t){this._each(\"unregister\",t,this.elements)}removePlugins(...t){this._each(\"unregister\",t,this.plugins)}removeScales(...t){this._each(\"unregister\",t,this.scales)}_each(t,e,i){[...e].forEach((e=>{const s=i||this._getRegistryForType(e);i||s.isForType(e)||s===this.plugins&&e.id?this._exec(t,s,e):Q(e,(e=>{const s=i||this._getRegistryForType(e);this._exec(t,s,e)}))}))}_exec(t,e,i){const s=ht(t);J(i[\"before\"+s],[],i),e[t](i),J(i[\"after\"+s],[],i)}_getRegistryForType(t){for(let e=0;et.filter((t=>!e.some((e=>t.plugin.id===e.plugin.id))));this._notify(s(e,i),t,\"stop\"),this._notify(s(i,e),t,\"start\")}}function Hs(t,e){return e||!1!==t?!0===t?{}:t:null}function js(t,e,i,s){const n=t.pluginScopeKeys(e),o=t.getOptionScopes(i,n);return t.createResolver(o,s,[\"\"],{scriptable:!1,indexable:!1,allKeys:!0})}function $s(t,e){const i=bt.datasets[t]||{};return((e.datasets||{})[t]||{}).indexAxis||e.indexAxis||i.indexAxis||\"x\"}function Ys(t,e){return\"x\"===t||\"y\"===t?t:e.axis||(\"top\"===(i=e.position)||\"bottom\"===i?\"x\":\"left\"===i||\"right\"===i?\"y\":void 0)||t.charAt(0).toLowerCase();var i}function Us(t){const e=t.options||(t.options={});e.plugins=K(e.plugins,{}),e.scales=function(t,e){const i=gt[t.type]||{scales:{}},s=e.scales||{},n=$s(t.type,e),o=Object.create(null),a=Object.create(null);return Object.keys(s).forEach((t=>{const e=s[t];if(!U(e))return console.error(`Invalid scale configuration for scale: ${t}`);if(e._proxy)return console.warn(`Ignoring resolver passed as options for scale: ${t}`);const r=Ys(t,e),l=function(t,e){return t===e?\"_index_\":\"_value_\"}(r,n),h=i.scales||{};o[r]=o[r]||t,a[t]=ot(Object.create(null),[{axis:r},e,h[r],h[l]])})),t.data.datasets.forEach((i=>{const n=i.type||t.type,r=i.indexAxis||$s(n,e),l=(gt[n]||{}).scales||{};Object.keys(l).forEach((t=>{const e=function(t,e){let i=t;return\"_index_\"===t?i=e:\"_value_\"===t&&(i=\"x\"===e?\"y\":\"x\"),i}(t,r),n=i[e+\"AxisID\"]||o[e]||e;a[n]=a[n]||Object.create(null),ot(a[n],[{axis:e},s[n],l[t]])}))})),Object.keys(a).forEach((t=>{const e=a[t];ot(e,[bt.scales[e.type],bt.scale])})),a}(t,e)}function Xs(t){return(t=t||{}).datasets=t.datasets||[],t.labels=t.labels||[],t}const qs=new Map,Ks=new Set;function Gs(t,e){let i=qs.get(t);return i||(i=e(),qs.set(t,i),Ks.add(i)),i}const Zs=(t,e,i)=>{const s=lt(e,i);void 0!==s&&t.add(s)};class Js{constructor(t){this._config=function(t){return(t=t||{}).data=Xs(t.data),Us(t),t}(t),this._scopeCache=new Map,this._resolverCache=new Map}get platform(){return this._config.platform}get type(){return this._config.type}set type(t){this._config.type=t}get data(){return this._config.data}set data(t){this._config.data=Xs(t)}get options(){return this._config.options}set options(t){this._config.options=t}get plugins(){return this._config.plugins}update(){const t=this._config;this.clearCache(),Us(t)}clearCache(){this._scopeCache.clear(),this._resolverCache.clear()}datasetScopeKeys(t){return Gs(t,(()=>[[`datasets.${t}`,\"\"]]))}datasetAnimationScopeKeys(t,e){return Gs(`${t}.transition.${e}`,(()=>[[`datasets.${t}.transitions.${e}`,`transitions.${e}`],[`datasets.${t}`,\"\"]]))}datasetElementScopeKeys(t,e){return Gs(`${t}-${e}`,(()=>[[`datasets.${t}.elements.${e}`,`datasets.${t}`,`elements.${e}`,\"\"]]))}pluginScopeKeys(t){const e=t.id;return Gs(`${this.type}-plugin-${e}`,(()=>[[`plugins.${e}`,...t.additionalOptionScopes||[]]]))}_cachedScopes(t,e){const i=this._scopeCache;let s=i.get(t);return s&&!e||(s=new Map,i.set(t,s)),s}getOptionScopes(t,e,i){const{options:s,type:n}=this,o=this._cachedScopes(t,i),a=o.get(e);if(a)return a;const r=new Set;e.forEach((e=>{t&&(r.add(t),e.forEach((e=>Zs(r,t,e)))),e.forEach((t=>Zs(r,s,t))),e.forEach((t=>Zs(r,gt[n]||{},t))),e.forEach((t=>Zs(r,bt,t))),e.forEach((t=>Zs(r,pt,t)))}));const l=Array.from(r);return 0===l.length&&l.push(Object.create(null)),Ks.has(e)&&o.set(e,l),l}chartOptionScopes(){const{options:t,type:e}=this;return[t,gt[e]||{},bt.datasets[e]||{},{type:e},bt,pt]}resolveNamedOptions(t,e,i,s=[\"\"]){const n={$shared:!0},{resolver:o,subPrefixes:a}=Qs(this._resolverCache,t,s);let r=o;if(function(t,e){const{isScriptable:i,isIndexable:s}=ri(t);for(const n of e){const e=i(n),o=s(n),a=(o||e)&&t[n];if(e&&(dt(a)||tn(a))||o&&Y(a))return!0}return!1}(o,e)){n.$shared=!1;r=ai(o,i=dt(i)?i():i,this.createResolver(t,i,a))}for(const t of e)n[t]=r[t];return n}createResolver(t,e,i=[\"\"],s){const{resolver:n}=Qs(this._resolverCache,t,i);return U(e)?ai(n,e,void 0,s):n}}function Qs(t,e,i){let s=t.get(e);s||(s=new Map,t.set(e,s));const n=i.join();let o=s.get(n);if(!o){o={resolver:oi(e,i),subPrefixes:i.filter((t=>!t.toLowerCase().includes(\"hover\")))},s.set(n,o)}return o}const tn=t=>U(t)&&Object.getOwnPropertyNames(t).reduce(((e,i)=>e||dt(t[i])),!1);const en=[\"top\",\"bottom\",\"left\",\"right\",\"chartArea\"];function sn(t,e){return\"top\"===t||\"bottom\"===t||-1===en.indexOf(t)&&\"x\"===e}function nn(t,e){return function(i,s){return i[t]===s[t]?i[e]-s[e]:i[t]-s[t]}}function on(t){const e=t.chart,i=e.options.animation;e.notifyPlugins(\"afterRender\"),J(i&&i.onComplete,[t],e)}function an(t){const e=t.chart,i=e.options.animation;J(i&&i.onProgress,[t],e)}function rn(t){return ge()&&\"string\"==typeof t?t=document.getElementById(t):t&&t.length&&(t=t[0]),t&&t.canvas&&(t=t.canvas),t}const ln={},hn=t=>{const e=rn(t);return Object.values(ln).filter((t=>t.canvas===e)).pop()};function cn(t,e,i){const s=Object.keys(t);for(const n of s){const s=+n;if(s>=e){const o=t[n];delete t[n],(i>0||s>e)&&(t[s+i]=o)}}}class dn{constructor(t,e){const s=this.config=new Js(e),n=rn(t),o=hn(n);if(o)throw new Error(\"Canvas is already in use. Chart with ID '\"+o.id+\"' must be destroyed before the canvas can be reused.\");const r=s.createResolver(s.chartOptionScopes(),this.getContext());this.platform=new(s.platform||ls(n)),this.platform.updateConfig(s);const l=this.platform.acquireContext(n,r.aspectRatio),h=l&&l.canvas,c=h&&h.height,d=h&&h.width;this.id=j(),this.ctx=l,this.canvas=h,this.width=d,this.height=c,this._options=r,this._aspectRatio=this.aspectRatio,this._layers=[],this._metasets=[],this._stacks=void 0,this.boxes=[],this.currentDevicePixelRatio=void 0,this.chartArea=void 0,this._active=[],this._lastEvent=void 0,this._listeners={},this._responsiveListeners=void 0,this._sortedMetasets=[],this.scales={},this._plugins=new Ns,this.$proxies={},this._hiddenIndices={},this.attached=!1,this._animationsDisabled=void 0,this.$context=void 0,this._doResize=i((t=>this.update(t)),r.resizeDelay||0),this._dataChanges=[],ln[this.id]=this,l&&h?(a.listen(this,\"complete\",on),a.listen(this,\"progress\",an),this._initialize(),this.attached&&this.update()):console.error(\"Failed to create chart: can't acquire context from the given item\")}get aspectRatio(){const{options:{aspectRatio:t,maintainAspectRatio:e},width:i,height:s,_aspectRatio:n}=this;return $(t)?e&&n?n:s?i/s:null:t}get data(){return this.config.data}set data(t){this.config.data=t}get options(){return this._options}set options(t){this.config.options=t}_initialize(){return this.notifyPlugins(\"beforeInit\"),this.options.responsive?this.resize():ke(this,this.options.devicePixelRatio),this.bindEvents(),this.notifyPlugins(\"afterInit\"),this}clear(){return Gt(this.canvas,this.ctx),this}stop(){return a.stop(this),this}resize(t,e){a.running(this)?this._resizeBeforeDraw={width:t,height:e}:this._resize(t,e)}_resize(t,e){const i=this.options,s=this.canvas,n=i.maintainAspectRatio&&this.aspectRatio,o=this.platform.getMaximumSize(s,t,e,n),a=i.devicePixelRatio||this.platform.getDevicePixelRatio(),r=this.width?\"resize\":\"attach\";this.width=o.width,this.height=o.height,this._aspectRatio=this.aspectRatio,ke(this,a,!0)&&(this.notifyPlugins(\"resize\",{size:o}),J(i.onResize,[this,o],this),this.attached&&this._doResize(r)&&this.render())}ensureScalesHaveIDs(){Q(this.options.scales||{},((t,e)=>{t.id=e}))}buildOrUpdateScales(){const t=this.options,e=t.scales,i=this.scales,s=Object.keys(i).reduce(((t,e)=>(t[e]=!1,t)),{});let n=[];e&&(n=n.concat(Object.keys(e).map((t=>{const i=e[t],s=Ys(t,i),n=\"r\"===s,o=\"x\"===s;return{options:i,dposition:n?\"chartArea\":o?\"bottom\":\"left\",dtype:n?\"radialLinear\":o?\"category\":\"linear\"}})))),Q(n,(e=>{const n=e.options,o=n.id,a=Ys(o,n),r=K(n.type,e.dtype);void 0!==n.position&&sn(n.position,a)===sn(e.dposition)||(n.position=e.dposition),s[o]=!0;let l=null;if(o in i&&i[o].type===r)l=i[o];else{l=new(Ws.getScale(r))({id:o,type:r,ctx:this.ctx,chart:this}),i[l.id]=l}l.init(n,t)})),Q(s,((t,e)=>{t||delete i[e]})),Q(i,(t=>{ni.configure(this,t,t.options),ni.addBox(this,t)}))}_updateMetasets(){const t=this._metasets,e=this.data.datasets.length,i=t.length;if(t.sort(((t,e)=>t.index-e.index)),i>e){for(let t=e;te.length&&delete this._stacks,t.forEach(((t,i)=>{0===e.filter((e=>e===t._dataset)).length&&this._destroyDatasetMeta(i)}))}buildOrUpdateControllers(){const t=[],e=this.data.datasets;let i,s;for(this._removeUnreferencedMetasets(),i=0,s=e.length;i{this.getDatasetMeta(e).controller.reset()}),this)}reset(){this._resetElements(),this.notifyPlugins(\"reset\")}update(t){const e=this.config;e.update();const i=this._options=e.createResolver(e.chartOptionScopes(),this.getContext()),s=this._animationsDisabled=!i.animation;if(this._updateScales(),this._checkEventBindings(),this._updateHiddenIndices(),this._plugins.invalidate(),!1===this.notifyPlugins(\"beforeUpdate\",{mode:t,cancelable:!0}))return;const n=this.buildOrUpdateControllers();this.notifyPlugins(\"beforeElementsUpdate\");let o=0;for(let t=0,e=this.data.datasets.length;t{t.reset()})),this._updateDatasets(t),this.notifyPlugins(\"afterUpdate\",{mode:t}),this._layers.sort(nn(\"z\",\"_idx\"));const{_active:a,_lastEvent:r}=this;r?this._eventHandler(r,!0):a.length&&this._updateHoverStyles(a,a,!0),this.render()}_updateScales(){Q(this.scales,(t=>{ni.removeBox(this,t)})),this.ensureScalesHaveIDs(),this.buildOrUpdateScales()}_checkEventBindings(){const t=this.options,e=new Set(Object.keys(this._listeners)),i=new Set(t.events);ut(e,i)&&!!this._responsiveListeners===t.responsive||(this.unbindEvents(),this.bindEvents())}_updateHiddenIndices(){const{_hiddenIndices:t}=this,e=this._getUniformDataChanges()||[];for(const{method:i,start:s,count:n}of e){cn(t,s,\"_removeElements\"===i?-n:n)}}_getUniformDataChanges(){const t=this._dataChanges;if(!t||!t.length)return;this._dataChanges=[];const e=this.data.datasets.length,i=e=>new Set(t.filter((t=>t[0]===e)).map(((t,e)=>e+\",\"+t.splice(1).join(\",\")))),s=i(0);for(let t=1;tt.split(\",\"))).map((t=>({method:t[1],start:+t[2],count:+t[3]})))}_updateLayout(t){if(!1===this.notifyPlugins(\"beforeLayout\",{cancelable:!0}))return;ni.update(this,this.width,this.height,t);const e=this.chartArea,i=e.width<=0||e.height<=0;this._layers=[],Q(this.boxes,(t=>{i&&\"chartArea\"===t.position||(t.configure&&t.configure(),this._layers.push(...t._layers()))}),this),this._layers.forEach(((t,e)=>{t._idx=e})),this.notifyPlugins(\"afterLayout\")}_updateDatasets(t){if(!1!==this.notifyPlugins(\"beforeDatasetsUpdate\",{mode:t,cancelable:!0})){for(let t=0,e=this.data.datasets.length;t=0;--e)this._drawDataset(t[e]);this.notifyPlugins(\"afterDatasetsDraw\")}_drawDataset(t){const e=this.ctx,i=t._clip,s=!i.disabled,n=this.chartArea,o={meta:t,index:t.index,cancelable:!0};!1!==this.notifyPlugins(\"beforeDatasetDraw\",o)&&(s&&Qt(e,{left:!1===i.left?0:n.left-i.left,right:!1===i.right?this.width:n.right+i.right,top:!1===i.top?0:n.top-i.top,bottom:!1===i.bottom?this.height:n.bottom+i.bottom}),t.controller.draw(),s&&te(e),o.cancelable=!1,this.notifyPlugins(\"afterDatasetDraw\",o))}getElementsAtEventForMode(t,e,i,s){const n=Ee.modes[e];return\"function\"==typeof n?n(this,t,i,s):[]}getDatasetMeta(t){const e=this.data.datasets[t],i=this._metasets;let s=i.filter((t=>t&&t._dataset===e)).pop();return s||(s={type:null,data:[],dataset:null,controller:null,hidden:null,xAxisID:null,yAxisID:null,order:e&&e.order||0,index:t,_dataset:e,_parsed:[],_sorted:!1},i.push(s)),s}getContext(){return this.$context||(this.$context=Ye(null,{chart:this,type:\"chart\"}))}getVisibleDatasetCount(){return this.getSortedVisibleDatasetMetas().length}isDatasetVisible(t){const e=this.data.datasets[t];if(!e)return!1;const i=this.getDatasetMeta(t);return\"boolean\"==typeof i.hidden?!i.hidden:!e.hidden}setDatasetVisibility(t,e){this.getDatasetMeta(t).hidden=!e}toggleDataVisibility(t){this._hiddenIndices[t]=!this._hiddenIndices[t]}getDataVisibility(t){return!this._hiddenIndices[t]}_updateVisibility(t,e,i){const s=i?\"show\":\"hide\",n=this.getDatasetMeta(t),o=n.controller._resolveAnimations(void 0,s);ct(e)?(n.data[e].hidden=!i,this.update()):(this.setDatasetVisibility(t,i),o.update(n,{visible:i}),this.update((e=>e.datasetIndex===t?s:void 0)))}hide(t,e){this._updateVisibility(t,e,!1)}show(t,e){this._updateVisibility(t,e,!0)}_destroyDatasetMeta(t){const e=this._metasets[t];e&&e.controller&&e.controller._destroy(),delete this._metasets[t]}_stop(){let t,e;for(this.stop(),a.remove(this),t=0,e=this.data.datasets.length;t{e.addEventListener(this,i,s),t[i]=s},s=(t,e,i)=>{t.offsetX=e,t.offsetY=i,this._eventHandler(t)};Q(this.options.events,(t=>i(t,s)))}bindResponsiveEvents(){this._responsiveListeners||(this._responsiveListeners={});const t=this._responsiveListeners,e=this.platform,i=(i,s)=>{e.addEventListener(this,i,s),t[i]=s},s=(i,s)=>{t[i]&&(e.removeEventListener(this,i,s),delete t[i])},n=(t,e)=>{this.canvas&&this.resize(t,e)};let o;const a=()=>{s(\"attach\",a),this.attached=!0,this.resize(),i(\"resize\",n),i(\"detach\",o)};o=()=>{this.attached=!1,s(\"resize\",n),this._stop(),this._resize(0,0),i(\"attach\",a)},e.isAttached(this.canvas)?a():o()}unbindEvents(){Q(this._listeners,((t,e)=>{this.platform.removeEventListener(this,e,t)})),this._listeners={},Q(this._responsiveListeners,((t,e)=>{this.platform.removeEventListener(this,e,t)})),this._responsiveListeners=void 0}updateHoverStyle(t,e,i){const s=i?\"set\":\"remove\";let n,o,a,r;for(\"dataset\"===e&&(n=this.getDatasetMeta(t[0].datasetIndex),n.controller[\"_\"+s+\"DatasetHoverStyle\"]()),a=0,r=t.length;a{const i=this.getDatasetMeta(t);if(!i)throw new Error(\"No dataset found at index \"+t);return{datasetIndex:t,element:i.data[e],index:e}}));!tt(i,e)&&(this._active=i,this._lastEvent=null,this._updateHoverStyles(i,e))}notifyPlugins(t,e,i){return this._plugins.notify(this,t,e,i)}_updateHoverStyles(t,e,i){const s=this.options.hover,n=(t,e)=>t.filter((t=>!e.some((e=>t.datasetIndex===e.datasetIndex&&t.index===e.index)))),o=n(e,t),a=i?t:n(t,e);o.length&&this.updateHoverStyle(o,s.mode,!1),a.length&&s.mode&&this.updateHoverStyle(a,s.mode,!0)}_eventHandler(t,e){const i={event:t,replay:e,cancelable:!0,inChartArea:Jt(t,this.chartArea,this._minPadding)},s=e=>(e.options.events||this.options.events).includes(t.native.type);if(!1===this.notifyPlugins(\"beforeEvent\",i,s))return;const n=this._handleEvent(t,e,i.inChartArea);return i.cancelable=!1,this.notifyPlugins(\"afterEvent\",i,s),(n||i.changed)&&this.render(),this}_handleEvent(t,e,i){const{_active:s=[],options:n}=this,o=e,a=this._getActiveElements(t,s,i,o),r=ft(t),l=function(t,e,i,s){return i&&\"mouseout\"!==t.type?s?e:t:null}(t,this._lastEvent,i,r);i&&(this._lastEvent=null,J(n.onHover,[t,a,this],this),r&&J(n.onClick,[t,a,this],this));const h=!tt(a,s);return(h||e)&&(this._active=a,this._updateHoverStyles(a,s,e)),this._lastEvent=l,h}_getActiveElements(t,e,i,s){if(\"mouseout\"===t.type)return[];if(!i)return e;const n=this.options.hover;return this.getElementsAtEventForMode(t,n.mode,n,s)}}const un=()=>Q(dn.instances,(t=>t._plugins.invalidate())),fn=!0;function gn(){throw new Error(\"This method is not implemented: Check that a complete date adapter is provided.\")}Object.defineProperties(dn,{defaults:{enumerable:fn,value:bt},instances:{enumerable:fn,value:ln},overrides:{enumerable:fn,value:gt},registry:{enumerable:fn,value:Ws},version:{enumerable:fn,value:\"3.7.0\"},getChart:{enumerable:fn,value:hn},register:{enumerable:fn,value:(...t)=>{Ws.add(...t),un()}},unregister:{enumerable:fn,value:(...t)=>{Ws.remove(...t),un()}}});class pn{constructor(t){this.options=t||{}}formats(){return gn()}parse(t,e){return gn()}format(t,e){return gn()}add(t,e,i){return gn()}diff(t,e,i){return gn()}startOf(t,e,i){return gn()}endOf(t,e){return gn()}}pn.override=function(t){Object.assign(pn.prototype,t)};var mn={_date:pn};function xn(t){const e=t.iScale,i=function(t,e){if(!t._cache.$bar){const i=t.getMatchingVisibleMetas(e);let s=[];for(let e=0,n=i.length;et-e)))}return t._cache.$bar}(e,t.type);let s,n,o,a,r=e._length;const l=()=>{32767!==o&&-32768!==o&&(ct(a)&&(r=Math.min(r,Math.abs(o-a)||r)),a=o)};for(s=0,n=i.length;sMath.abs(r)&&(l=r,h=a),e[i.axis]=h,e._custom={barStart:l,barEnd:h,start:n,end:o,min:a,max:r}}(t,e,i,s):e[i.axis]=i.parse(t,s),e}function _n(t,e,i,s){const n=t.iScale,o=t.vScale,a=n.getLabels(),r=n===o,l=[];let h,c,d,u;for(h=i,c=i+s;ht.x,i=\"left\",s=\"right\"):(e=t.base=i?1:-1)}(c,e,o)*n,d===o&&(p-=c/2),h=p+c),p===e.getPixelForValue(o)){const t=Ct(c)*e.getLineWidthForValue(o)/2;p+=t,c-=t}return{size:c,base:p,head:h,center:h+c/2}}_calculateBarIndexPixels(t,e){const i=e.scale,s=this.options,n=s.skipNull,o=K(s.maxBarThickness,1/0);let a,r;if(e.grouped){const i=n?this._getStackCount(t):e.stackCount,l=\"flex\"===s.barThickness?function(t,e,i,s){const n=e.pixels,o=n[t];let a=t>0?n[t-1]:null,r=t=0;--i)e=Math.max(e,t[i].size(this.resolveDataElementOptions(i))/2);return e>0&&e}getLabelAndValue(t){const e=this._cachedMeta,{xScale:i,yScale:s}=e,n=this.getParsed(t),o=i.getLabelForValue(n.x),a=s.getLabelForValue(n.y),r=n._custom;return{label:e.label,value:\"(\"+o+\", \"+a+(r?\", \"+r:\"\")+\")\"}}update(t){const e=this._cachedMeta.data;this.updateElements(e,0,e.length,t)}updateElements(t,e,i,s){const n=\"reset\"===s,{iScale:o,vScale:a}=this._cachedMeta,r=this.resolveDataElementOptions(e,s),l=this.getSharedOptions(r),h=this.includeOptions(s,l),c=o.axis,d=a.axis;for(let r=e;r\"\"}}}};class Dn extends Ps{constructor(t,e){super(t,e),this.enableOptionSharing=!0,this.innerRadius=void 0,this.outerRadius=void 0,this.offsetX=void 0,this.offsetY=void 0}linkScales(){}parse(t,e){const i=this.getDataset().data,s=this._cachedMeta;if(!1===this._parsing)s._parsed=i;else{let n,o,a=t=>+i[t];if(U(i[t])){const{key:t=\"value\"}=this._parsing;a=e=>+lt(i[e],t)}for(n=t,o=t+e;nHt(t,r,l,!0)?1:Math.max(e,e*i,s,s*i),g=(t,e,s)=>Ht(t,r,l,!0)?-1:Math.min(e,e*i,s,s*i),p=f(0,h,d),m=f(kt,c,u),x=g(_t,h,d),b=g(_t+kt,c,u);s=(p-x)/2,n=(m-b)/2,o=-(p+x)/2,a=-(m+b)/2}return{ratioX:s,ratioY:n,offsetX:o,offsetY:a}}(c,h,r),p=(i.width-o)/d,m=(i.height-o)/u,x=Math.max(Math.min(p,m)/2,0),b=Z(this.options.radius,x),_=(b-Math.max(b*r,0))/this._getVisibleDatasetWeightTotal();this.offsetX=f*b,this.offsetY=g*b,s.total=this.calculateTotal(),this.outerRadius=b-_*this._getRingWeightOffset(this.index),this.innerRadius=Math.max(this.outerRadius-_*l,0),this.updateElements(n,0,n.length,t)}_circumference(t,e){const i=this.options,s=this._cachedMeta,n=this._getCircumference();return e&&i.animation.animateRotate||!this.chart.getDataVisibility(t)||null===s._parsed[t]||s.data[t].hidden?0:this.calculateCircumference(s._parsed[t]*n/yt)}updateElements(t,e,i,s){const n=\"reset\"===s,o=this.chart,a=o.chartArea,r=o.options.animation,l=(a.left+a.right)/2,h=(a.top+a.bottom)/2,c=n&&r.animateScale,d=c?0:this.innerRadius,u=c?0:this.outerRadius,f=this.resolveDataElementOptions(e,s),g=this.getSharedOptions(f),p=this.includeOptions(s,g);let m,x=this._getRotation();for(m=0;m0&&!isNaN(t)?yt*(Math.abs(t)/e):0}getLabelAndValue(t){const e=this._cachedMeta,i=this.chart,s=i.data.labels||[],n=Ri(e._parsed[t],i.options.locale);return{label:s[t]||\"\",value:n}}getMaxBorderWidth(t){let e=0;const i=this.chart;let s,n,o,a,r;if(!t)for(s=0,n=i.data.datasets.length;s\"spacing\"!==t,_indexable:t=>\"spacing\"!==t},Dn.overrides={aspectRatio:1,plugins:{legend:{labels:{generateLabels(t){const e=t.data;if(e.labels.length&&e.datasets.length){const{labels:{pointStyle:i}}=t.legend.options;return e.labels.map(((e,s)=>{const n=t.getDatasetMeta(0).controller.getStyle(s);return{text:e,fillStyle:n.backgroundColor,strokeStyle:n.borderColor,lineWidth:n.borderWidth,pointStyle:i,hidden:!t.getDataVisibility(s),index:s}}))}return[]}},onClick(t,e,i){i.chart.toggleDataVisibility(e.index),i.chart.update()}},tooltip:{callbacks:{title:()=>\"\",label(t){let e=t.label;const i=\": \"+t.formattedValue;return Y(e)?(e=e.slice(),e[0]+=i):e+=i,e}}}}};class Cn extends Ps{initialize(){this.enableOptionSharing=!0,super.initialize()}update(t){const e=this._cachedMeta,{dataset:i,data:s=[],_dataset:n}=e,o=this.chart._animationsDisabled;let{start:a,count:r}=function(t,e,i){const s=e.length;let n=0,o=s;if(t._sorted){const{iScale:a,_parsed:r}=t,l=a.axis,{min:h,max:c,minDefined:d,maxDefined:u}=a.getUserBounds();d&&(n=jt(Math.min(re(r,a.axis,h).lo,i?s:re(e,l,a.getPixelForValue(h)).lo),0,s-1)),o=u?jt(Math.max(re(r,a.axis,c).hi+1,i?0:re(e,l,a.getPixelForValue(c)).hi+1),n,s)-n:s-n}return{start:n,count:o}}(e,s,o);this._drawStart=a,this._drawCount=r,function(t){const{xScale:e,yScale:i,_scaleRanges:s}=t,n={xmin:e.min,xmax:e.max,ymin:i.min,ymax:i.max};if(!s)return t._scaleRanges=n,!0;const o=s.xmin!==e.min||s.xmax!==e.max||s.ymin!==i.min||s.ymax!==i.max;return Object.assign(s,n),o}(e)&&(a=0,r=s.length),i._chart=this.chart,i._datasetIndex=this.index,i._decimated=!!n._decimated,i.points=s;const l=this.resolveDatasetElementOptions(t);this.options.showLine||(l.borderWidth=0),l.segment=this.options.segment,this.updateElement(i,void 0,{animated:!o,options:l},t),this.updateElements(s,a,r,t)}updateElements(t,e,i,s){const n=\"reset\"===s,{iScale:o,vScale:a,_stacked:r,_dataset:l}=this._cachedMeta,h=this.resolveDataElementOptions(e,s),c=this.getSharedOptions(h),d=this.includeOptions(s,c),u=o.axis,f=a.axis,{spanGaps:g,segment:p}=this.options,m=Tt(g)?g:Number.POSITIVE_INFINITY,x=this.chart._animationsDisabled||n||\"none\"===s;let b=e>0&&this.getParsed(e-1);for(let h=e;h0&&i[u]-b[u]>m,p&&(g.parsed=i,g.raw=l.data[h]),d&&(g.options=c||this.resolveDataElementOptions(h,e.active?\"active\":s)),x||this.updateElement(e,h,g,s),b=i}this.updateSharedOptions(c,s,h)}getMaxOverflow(){const t=this._cachedMeta,e=t.dataset,i=e.options&&e.options.borderWidth||0,s=t.data||[];if(!s.length)return i;const n=s[0].size(this.resolveDataElementOptions(0)),o=s[s.length-1].size(this.resolveDataElementOptions(s.length-1));return Math.max(i,n,o)/2}draw(){const t=this._cachedMeta;t.dataset.updateControlPoints(this.chart.chartArea,t.iScale.axis),super.draw()}}Cn.id=\"line\",Cn.defaults={datasetElementType:\"line\",dataElementType:\"point\",showLine:!0,spanGaps:!1},Cn.overrides={scales:{_index_:{type:\"category\"},_value_:{type:\"linear\"}}};class On extends Ps{constructor(t,e){super(t,e),this.innerRadius=void 0,this.outerRadius=void 0}getLabelAndValue(t){const e=this._cachedMeta,i=this.chart,s=i.data.labels||[],n=Ri(e._parsed[t].r,i.options.locale);return{label:s[t]||\"\",value:n}}update(t){const e=this._cachedMeta.data;this._updateRadius(),this.updateElements(e,0,e.length,t)}_updateRadius(){const t=this.chart,e=t.chartArea,i=t.options,s=Math.min(e.right-e.left,e.bottom-e.top),n=Math.max(s/2,0),o=(n-Math.max(i.cutoutPercentage?n/100*i.cutoutPercentage:1,0))/t.getVisibleDatasetCount();this.outerRadius=n-o*this.index,this.innerRadius=this.outerRadius-o}updateElements(t,e,i,s){const n=\"reset\"===s,o=this.chart,a=this.getDataset(),r=o.options.animation,l=this._cachedMeta.rScale,h=l.xCenter,c=l.yCenter,d=l.getIndexAngle(0)-.5*_t;let u,f=d;const g=360/this.countVisibleElements();for(u=0;u{!isNaN(t.data[s])&&this.chart.getDataVisibility(s)&&i++})),i}_computeAngle(t,e,i){return this.chart.getDataVisibility(t)?It(this.resolveDataElementOptions(t,e).angle||i):0}}On.id=\"polarArea\",On.defaults={dataElementType:\"arc\",animation:{animateRotate:!0,animateScale:!0},animations:{numbers:{type:\"number\",properties:[\"x\",\"y\",\"startAngle\",\"endAngle\",\"innerRadius\",\"outerRadius\"]}},indexAxis:\"r\",startAngle:0},On.overrides={aspectRatio:1,plugins:{legend:{labels:{generateLabels(t){const e=t.data;if(e.labels.length&&e.datasets.length){const{labels:{pointStyle:i}}=t.legend.options;return e.labels.map(((e,s)=>{const n=t.getDatasetMeta(0).controller.getStyle(s);return{text:e,fillStyle:n.backgroundColor,strokeStyle:n.borderColor,lineWidth:n.borderWidth,pointStyle:i,hidden:!t.getDataVisibility(s),index:s}}))}return[]}},onClick(t,e,i){i.chart.toggleDataVisibility(e.index),i.chart.update()}},tooltip:{callbacks:{title:()=>\"\",label:t=>t.chart.data.labels[t.dataIndex]+\": \"+t.formattedValue}}},scales:{r:{type:\"radialLinear\",angleLines:{display:!1},beginAtZero:!0,grid:{circular:!0},pointLabels:{display:!1},startAngle:0}}};class An extends Dn{}An.id=\"pie\",An.defaults={cutout:0,rotation:0,circumference:360,radius:\"100%\"};class Tn extends Ps{getLabelAndValue(t){const e=this._cachedMeta.vScale,i=this.getParsed(t);return{label:e.getLabels()[t],value:\"\"+e.getLabelForValue(i[e.axis])}}update(t){const e=this._cachedMeta,i=e.dataset,s=e.data||[],n=e.iScale.getLabels();if(i.points=s,\"resize\"!==t){const e=this.resolveDatasetElementOptions(t);this.options.showLine||(e.borderWidth=0);const o={_loop:!0,_fullLoop:n.length===s.length,options:e};this.updateElement(i,void 0,o,t)}this.updateElements(s,0,s.length,t)}updateElements(t,e,i,s){const n=this.getDataset(),o=this._cachedMeta.rScale,a=\"reset\"===s;for(let r=e;r\"\",label:t=>\"(\"+t.label+\", \"+t.formattedValue+\")\"}}},scales:{x:{type:\"linear\"},y:{type:\"linear\"}}};var Rn=Object.freeze({__proto__:null,BarController:Sn,BubbleController:Pn,DoughnutController:Dn,LineController:Cn,PolarAreaController:On,PieController:An,RadarController:Tn,ScatterController:Ln});function En(t,e,i){const{startAngle:s,pixelMargin:n,x:o,y:a,outerRadius:r,innerRadius:l}=e;let h=n/r;t.beginPath(),t.arc(o,a,r,s-h,i+h),l>n?(h=n/l,t.arc(o,a,l,i+h,s-h,!0)):t.arc(o,a,n,i+kt,s-kt),t.closePath(),t.clip()}function In(t,e,i,s){const n=Be(t.options.borderRadius,[\"outerStart\",\"outerEnd\",\"innerStart\",\"innerEnd\"]);const o=(i-e)/2,a=Math.min(o,s*e/2),r=t=>{const e=(i-Math.min(o,t))*s/2;return jt(t,0,Math.min(o,e))};return{outerStart:r(n.outerStart),outerEnd:r(n.outerEnd),innerStart:jt(n.innerStart,0,a),innerEnd:jt(n.innerEnd,0,a)}}function zn(t,e,i,s){return{x:i+t*Math.cos(e),y:s+t*Math.sin(e)}}function Fn(t,e,i,s,n){const{x:o,y:a,startAngle:r,pixelMargin:l,innerRadius:h}=e,c=Math.max(e.outerRadius+s+i-l,0),d=h>0?h+s+i+l:0;let u=0;const f=n-r;if(s){const t=((h>0?h-s:0)+(c>0?c-s:0))/2;u=(f-(0!==t?f*t/(t+s):f))/2}const g=(f-Math.max(.001,f*c-i/_t)/c)/2,p=r+g+u,m=n-g-u,{outerStart:x,outerEnd:b,innerStart:_,innerEnd:y}=In(e,d,c,m-p),v=c-x,w=c-b,M=p+x/v,k=m-b/w,S=d+_,P=d+y,D=p+_/S,C=m-y/P;if(t.beginPath(),t.arc(o,a,c,M,k),b>0){const e=zn(w,k,o,a);t.arc(e.x,e.y,b,k,m+kt)}const O=zn(P,m,o,a);if(t.lineTo(O.x,O.y),y>0){const e=zn(P,C,o,a);t.arc(e.x,e.y,y,m+kt,C+Math.PI)}if(t.arc(o,a,d,m-y/d,p+_/d,!0),_>0){const e=zn(S,D,o,a);t.arc(e.x,e.y,_,D+Math.PI,p-kt)}const A=zn(v,p,o,a);if(t.lineTo(A.x,A.y),x>0){const e=zn(v,M,o,a);t.arc(e.x,e.y,x,p-kt,M)}t.closePath()}function Bn(t,e,i,s,n){const{options:o}=e,{borderWidth:a,borderJoinStyle:r}=o,l=\"inner\"===o.borderAlign;a&&(l?(t.lineWidth=2*a,t.lineJoin=r||\"round\"):(t.lineWidth=a,t.lineJoin=r||\"bevel\"),e.fullCircles&&function(t,e,i){const{x:s,y:n,startAngle:o,pixelMargin:a,fullCircles:r}=e,l=Math.max(e.outerRadius-a,0),h=e.innerRadius+a;let c;for(i&&En(t,e,o+yt),t.beginPath(),t.arc(s,n,h,o+yt,o,!0),c=0;c=yt||Ht(n,a,r),f=Yt(o,l+d,h+d);return u&&f}getCenterPoint(t){const{x:e,y:i,startAngle:s,endAngle:n,innerRadius:o,outerRadius:a}=this.getProps([\"x\",\"y\",\"startAngle\",\"endAngle\",\"innerRadius\",\"outerRadius\",\"circumference\"],t),{offset:r,spacing:l}=this.options,h=(s+n)/2,c=(o+a+l+r)/2;return{x:e+Math.cos(h)*c,y:i+Math.sin(h)*c}}tooltipPosition(t){return this.getCenterPoint(t)}draw(t){const{options:e,circumference:i}=this,s=(e.offset||0)/2,n=(e.spacing||0)/2;if(this.pixelMargin=\"inner\"===e.borderAlign?.33:0,this.fullCircles=i>yt?Math.floor(i/yt):0,0===i||this.innerRadius<0||this.outerRadius<0)return;t.save();let o=0;if(s){o=s/2;const e=(this.startAngle+this.endAngle)/2;t.translate(Math.cos(e)*o,Math.sin(e)*o),this.circumference>=_t&&(o=s)}t.fillStyle=e.backgroundColor,t.strokeStyle=e.borderColor;const a=function(t,e,i,s){const{fullCircles:n,startAngle:o,circumference:a}=e;let r=e.endAngle;if(n){Fn(t,e,i,s,o+yt);for(let e=0;er&&o>r;return{count:s,start:l,loop:e.loop,ilen:h(a+(h?r-t:t))%o,_=()=>{f!==g&&(t.lineTo(m,g),t.lineTo(m,f),t.lineTo(m,p))};for(l&&(d=n[b(0)],t.moveTo(d.x,d.y)),c=0;c<=r;++c){if(d=n[b(c)],d.skip)continue;const e=d.x,i=d.y,s=0|e;s===u?(ig&&(g=i),m=(x*m+e)/++x):(_(),t.lineTo(e,i),u=s,x=0,f=g=i),p=i}_()}function Yn(t){const e=t.options,i=e.borderDash&&e.borderDash.length;return!(t._decimated||t._loop||e.tension||\"monotone\"===e.cubicInterpolationMode||e.stepped||i)?$n:jn}Vn.id=\"arc\",Vn.defaults={borderAlign:\"center\",borderColor:\"#fff\",borderJoinStyle:void 0,borderRadius:0,borderWidth:2,offset:0,spacing:0,angle:void 0},Vn.defaultRoutes={backgroundColor:\"backgroundColor\"};const Un=\"function\"==typeof Path2D;function Xn(t,e,i,s){Un&&!e.options.segment?function(t,e,i,s){let n=e._path;n||(n=e._path=new Path2D,e.path(n,i,s)&&n.closePath()),Wn(t,e.options),t.stroke(n)}(t,e,i,s):function(t,e,i,s){const{segments:n,options:o}=e,a=Yn(e);for(const r of n)Wn(t,o,r.style),t.beginPath(),a(t,e,r,{start:i,end:i+s-1})&&t.closePath(),t.stroke()}(t,e,i,s)}class qn extends Ds{constructor(t){super(),this.animated=!0,this.options=void 0,this._chart=void 0,this._loop=void 0,this._fullLoop=void 0,this._path=void 0,this._points=void 0,this._segments=void 0,this._decimated=!1,this._pointsUpdated=!1,this._datasetIndex=void 0,t&&Object.assign(this,t)}updateControlPoints(t,e){const i=this.options;if((i.tension||\"monotone\"===i.cubicInterpolationMode)&&!i.stepped&&!this._pointsUpdated){const s=i.spanGaps?this._loop:this._fullLoop;ki(this._points,i,t,s,e),this._pointsUpdated=!0}}set points(t){this._points=t,delete this._segments,delete this._path,this._pointsUpdated=!1}get points(){return this._points}get segments(){return this._segments||(this._segments=Ni(this,this.options.segment))}first(){const t=this.segments,e=this.points;return t.length&&e[t[0].start]}last(){const t=this.segments,e=this.points,i=t.length;return i&&e[t[i-1].end]}interpolate(t,e){const i=this.options,s=t[e],n=this.points,o=Wi(this,{property:e,start:s,end:s});if(!o.length)return;const a=[],r=function(t){return t.stepped?Ai:t.tension||\"monotone\"===t.cubicInterpolationMode?Ti:Oi}(i);let l,h;for(l=0,h=o.length;l\"borderDash\"!==t&&\"fill\"!==t};class Gn extends Ds{constructor(t){super(),this.options=void 0,this.parsed=void 0,this.skip=void 0,this.stop=void 0,t&&Object.assign(this,t)}inRange(t,e,i){const s=this.options,{x:n,y:o}=this.getProps([\"x\",\"y\"],i);return Math.pow(t-n,2)+Math.pow(e-o,2){oo(t)}))}var ro={id:\"decimation\",defaults:{algorithm:\"min-max\",enabled:!1},beforeElementsUpdate:(t,e,i)=>{if(!i.enabled)return void ao(t);const s=t.width;t.data.datasets.forEach(((e,n)=>{const{_data:o,indexAxis:a}=e,r=t.getDatasetMeta(n),l=o||e.data;if(\"y\"===je([a,t.options.indexAxis]))return;if(\"line\"!==r.type)return;const h=t.scales[r.xAxisID];if(\"linear\"!==h.type&&\"time\"!==h.type)return;if(t.options.parsing)return;let{start:c,count:d}=function(t,e){const i=e.length;let s,n=0;const{iScale:o}=t,{min:a,max:r,minDefined:l,maxDefined:h}=o.getUserBounds();return l&&(n=jt(re(e,o.axis,a).lo,0,i-1)),s=h?jt(re(e,o.axis,r).hi+1,n,i)-n:i-n,{start:n,count:s}}(r,l);if(d<=(i.threshold||4*s))return void oo(e);let u;switch($(o)&&(e._data=l,delete e.data,Object.defineProperty(e,\"data\",{configurable:!0,enumerable:!0,get:function(){return this._decimated},set:function(t){this._data=t}})),i.algorithm){case\"lttb\":u=function(t,e,i,s,n){const o=n.samples||s;if(o>=i)return t.slice(e,e+i);const a=[],r=(i-2)/(o-2);let l=0;const h=e+i-1;let c,d,u,f,g,p=e;for(a[l++]=t[p],c=0;cu&&(u=f,d=t[s],g=s);a[l++]=d,p=g}return a[l++]=t[h],a}(l,c,d,s,i);break;case\"min-max\":u=function(t,e,i,s){let n,o,a,r,l,h,c,d,u,f,g=0,p=0;const m=[],x=e+i-1,b=t[e].x,_=t[x].x-b;for(n=e;nf&&(f=r,c=n),g=(p*g+o.x)/++p;else{const i=n-1;if(!$(h)&&!$(c)){const e=Math.min(h,c),s=Math.max(h,c);e!==d&&e!==i&&m.push({...t[e],x:g}),s!==d&&s!==i&&m.push({...t[s],x:g})}n>0&&i!==d&&m.push(t[i]),m.push(o),l=e,p=0,u=f=r,h=c=d=n}}return m}(l,c,d,s);break;default:throw new Error(`Unsupported decimation algorithm '${i.algorithm}'`)}e._decimated=u}))},destroy(t){ao(t)}};function lo(t,e,i){const s=function(t){const e=t.options,i=e.fill;let s=K(i&&i.target,i);return void 0===s&&(s=!!e.backgroundColor),!1!==s&&null!==s&&(!0===s?\"origin\":s)}(t);if(U(s))return!isNaN(s.value)&&s;let n=parseFloat(s);return X(n)&&Math.floor(n)===n?(\"-\"!==s[0]&&\"+\"!==s[0]||(n=e+n),!(n===e||n<0||n>=i)&&n):[\"origin\",\"start\",\"end\",\"stack\",\"shape\"].indexOf(s)>=0&&s}class ho{constructor(t){this.x=t.x,this.y=t.y,this.radius=t.radius}pathSegment(t,e,i){const{x:s,y:n,radius:o}=this;return e=e||{start:0,end:yt},t.arc(s,n,o,e.end,e.start,!0),!i.bounds}interpolate(t){const{x:e,y:i,radius:s}=this,n=t.angle;return{x:e+Math.cos(n)*s,y:i+Math.sin(n)*s,angle:n}}}function co(t){return(t.scale||{}).getPointPositionForValue?function(t){const{scale:e,fill:i}=t,s=e.options,n=e.getLabels().length,o=[],a=s.reverse?e.max:e.min,r=s.reverse?e.min:e.max;let l,h,c;if(c=\"start\"===i?a:\"end\"===i?r:U(i)?i.value:e.getBaseValue(),s.grid.circular)return h=e.getPointPositionForValue(0,a),new ho({x:h.x,y:h.y,radius:e.getDistanceFromCenterForValue(c)});for(l=0;lt;e--){const t=i[e];if(!isNaN(t.x)&&!isNaN(t.y))break}return e}function fo(t,e,i){const s=[];for(let n=0;n{e=uo(t,e,n);const a=n[t],r=n[e];null!==s?(o.push({x:a.x,y:s}),o.push({x:r.x,y:s})):null!==i&&(o.push({x:i,y:a.y}),o.push({x:i,y:r.y}))})),o}(t,e),i.length?new qn({points:i,options:{tension:0},_loop:s,_fullLoop:s}):null}function xo(t,e,i){let s=t[e].fill;const n=[e];let o;if(!i)return s;for(;!1!==s&&-1===n.indexOf(s);){if(!X(s))return s;if(o=t[s],!o)return!1;if(o.visible)return s;n.push(s),s=o.fill}return!1}function bo(t,e,i){t.beginPath(),e.path(t),t.lineTo(e.last().x,i),t.lineTo(e.first().x,i),t.closePath(),t.clip()}function _o(t,e,i,s){if(s)return;let n=e[t],o=i[t];return\"angle\"===t&&(n=Nt(n),o=Nt(o)),{property:t,start:n,end:o}}function yo(t,e,i,s){return t&&e?s(t[i],e[i]):t?t[i]:e?e[i]:0}function vo(t,e,i){const{top:s,bottom:n}=e.chart.chartArea,{property:o,start:a,end:r}=i||{};\"x\"===o&&(t.beginPath(),t.rect(a,s,r-a,n-s),t.clip())}function wo(t,e,i,s){const n=e.interpolate(i,s);n&&t.lineTo(n.x,n.y)}function Mo(t,e){const{line:i,target:s,property:n,color:o,scale:a}=e,r=function(t,e,i){const s=t.segments,n=t.points,o=e.points,a=[];for(const t of s){let{start:s,end:r}=t;r=uo(s,r,n);const l=_o(i,n[s],n[r],t.loop);if(!e.segments){a.push({source:t,target:l,start:n[s],end:n[r]});continue}const h=Wi(e,l);for(const e of h){const s=_o(i,o[e.start],o[e.end],e.loop),r=Vi(t,n,s);for(const t of r)a.push({source:t,target:e,start:{[i]:yo(l,s,\"start\",Math.max)},end:{[i]:yo(l,s,\"end\",Math.min)}})}}return a}(i,s,n);for(const{source:e,target:l,start:h,end:c}of r){const{style:{backgroundColor:r=o}={}}=e,d=!0!==s;t.save(),t.fillStyle=r,vo(t,a,d&&_o(n,h,c)),t.beginPath();const u=!!i.pathSegment(t,e);let f;if(d){u?t.closePath():wo(t,s,c,n);const e=!!s.pathSegment(t,l,{move:u,reverse:!0});f=u&&e,f||wo(t,s,h,n)}t.closePath(),t.fill(f?\"evenodd\":\"nonzero\"),t.restore()}}function ko(t,e,i){const s=po(e),{line:n,scale:o,axis:a}=e,r=n.options,l=r.fill,h=r.backgroundColor,{above:c=h,below:d=h}=l||{};s&&n.points.length&&(Qt(t,i),function(t,e){const{line:i,target:s,above:n,below:o,area:a,scale:r}=e,l=i._loop?\"angle\":e.axis;t.save(),\"x\"===l&&o!==n&&(bo(t,s,a.top),Mo(t,{line:i,target:s,color:n,scale:r,property:l}),t.restore(),t.save(),bo(t,s,a.bottom)),Mo(t,{line:i,target:s,color:o,scale:r,property:l}),t.restore()}(t,{line:n,target:s,above:c,below:d,area:i,scale:o,axis:a}),te(t))}var So={id:\"filler\",afterDatasetsUpdate(t,e,i){const s=(t.data.datasets||[]).length,n=[];let o,a,r,l;for(a=0;a=0;--e){const i=n[e].$filler;i&&(i.line.updateControlPoints(o,i.axis),s&&ko(t.ctx,i,o))}},beforeDatasetsDraw(t,e,i){if(\"beforeDatasetsDraw\"!==i.drawTime)return;const s=t.getSortedVisibleDatasetMetas();for(let e=s.length-1;e>=0;--e){const i=s[e].$filler;i&&ko(t.ctx,i,t.chartArea)}},beforeDatasetDraw(t,e,i){const s=e.meta.$filler;s&&!1!==s.fill&&\"beforeDatasetDraw\"===i.drawTime&&ko(t.ctx,s,t.chartArea)},defaults:{propagate:!0,drawTime:\"beforeDatasetDraw\"}};const Po=(t,e)=>{let{boxHeight:i=e,boxWidth:s=e}=t;return t.usePointStyle&&(i=Math.min(i,e),s=Math.min(s,e)),{boxWidth:s,boxHeight:i,itemHeight:Math.max(e,i)}};class Do extends Ds{constructor(t){super(),this._added=!1,this.legendHitBoxes=[],this._hoveredItem=null,this.doughnutMode=!1,this.chart=t.chart,this.options=t.options,this.ctx=t.ctx,this.legendItems=void 0,this.columnSizes=void 0,this.lineWidths=void 0,this.maxHeight=void 0,this.maxWidth=void 0,this.top=void 0,this.bottom=void 0,this.left=void 0,this.right=void 0,this.height=void 0,this.width=void 0,this._margins=void 0,this.position=void 0,this.weight=void 0,this.fullSize=void 0}update(t,e,i){this.maxWidth=t,this.maxHeight=e,this._margins=i,this.setDimensions(),this.buildLabels(),this.fit()}setDimensions(){this.isHorizontal()?(this.width=this.maxWidth,this.left=this._margins.left,this.right=this.width):(this.height=this.maxHeight,this.top=this._margins.top,this.bottom=this.height)}buildLabels(){const t=this.options.labels||{};let e=J(t.generateLabels,[this.chart],this)||[];t.filter&&(e=e.filter((e=>t.filter(e,this.chart.data)))),t.sort&&(e=e.sort(((e,i)=>t.sort(e,i,this.chart.data)))),this.options.reverse&&e.reverse(),this.legendItems=e}fit(){const{options:t,ctx:e}=this;if(!t.display)return void(this.width=this.height=0);const i=t.labels,s=He(i.font),n=s.size,o=this._computeTitleHeight(),{boxWidth:a,itemHeight:r}=Po(i,n);let l,h;e.font=s.string,this.isHorizontal()?(l=this.maxWidth,h=this._fitRows(o,n,a,r)+10):(h=this.maxHeight,l=this._fitCols(o,n,a,r)+10),this.width=Math.min(l,t.maxWidth||this.maxWidth),this.height=Math.min(h,t.maxHeight||this.maxHeight)}_fitRows(t,e,i,s){const{ctx:n,maxWidth:o,options:{labels:{padding:a}}}=this,r=this.legendHitBoxes=[],l=this.lineWidths=[0],h=s+a;let c=t;n.textAlign=\"left\",n.textBaseline=\"middle\";let d=-1,u=-h;return this.legendItems.forEach(((t,f)=>{const g=i+e/2+n.measureText(t.text).width;(0===f||l[l.length-1]+g+2*a>o)&&(c+=h,l[l.length-(f>0?0:1)]=0,u+=h,d++),r[f]={left:0,top:u,row:d,width:g,height:s},l[l.length-1]+=g+a})),c}_fitCols(t,e,i,s){const{ctx:n,maxHeight:o,options:{labels:{padding:a}}}=this,r=this.legendHitBoxes=[],l=this.columnSizes=[],h=o-t;let c=a,d=0,u=0,f=0,g=0;return this.legendItems.forEach(((t,o)=>{const p=i+e/2+n.measureText(t.text).width;o>0&&u+s+2*a>h&&(c+=d+a,l.push({width:d,height:u}),f+=d+a,g++,d=u=0),r[o]={left:f,top:u,col:g,width:p,height:s},d=Math.max(d,p),u+=s+a})),c+=d,l.push({width:d,height:u}),c}adjustHitBoxes(){if(!this.options.display)return;const t=this._computeTitleHeight(),{legendHitBoxes:e,options:{align:i,labels:{padding:s},rtl:o}}=this,a=Ei(o,this.left,this.width);if(this.isHorizontal()){let o=0,r=n(i,this.left+s,this.right-this.lineWidths[o]);for(const l of e)o!==l.row&&(o=l.row,r=n(i,this.left+s,this.right-this.lineWidths[o])),l.top+=this.top+t+s,l.left=a.leftForLtr(a.x(r),l.width),r+=l.width+s}else{let o=0,r=n(i,this.top+t+s,this.bottom-this.columnSizes[o].height);for(const l of e)l.col!==o&&(o=l.col,r=n(i,this.top+t+s,this.bottom-this.columnSizes[o].height)),l.top=r,l.left+=this.left+s,l.left=a.leftForLtr(a.x(l.left),l.width),r+=l.height+s}}isHorizontal(){return\"top\"===this.options.position||\"bottom\"===this.options.position}draw(){if(this.options.display){const t=this.ctx;Qt(t,this),this._draw(),te(t)}}_draw(){const{options:t,columnSizes:e,lineWidths:i,ctx:s}=this,{align:a,labels:r}=t,l=bt.color,h=Ei(t.rtl,this.left,this.width),c=He(r.font),{color:d,padding:u}=r,f=c.size,g=f/2;let p;this.drawTitle(),s.textAlign=h.textAlign(\"left\"),s.textBaseline=\"middle\",s.lineWidth=.5,s.font=c.string;const{boxWidth:m,boxHeight:x,itemHeight:b}=Po(r,f),_=this.isHorizontal(),y=this._computeTitleHeight();p=_?{x:n(a,this.left+u,this.right-i[0]),y:this.top+u+y,line:0}:{x:this.left+u,y:n(a,this.top+y+u,this.bottom-e[0].height),line:0},Ii(this.ctx,t.textDirection);const v=b+u;this.legendItems.forEach(((w,M)=>{s.strokeStyle=w.fontColor||d,s.fillStyle=w.fontColor||d;const k=s.measureText(w.text).width,S=h.textAlign(w.textAlign||(w.textAlign=r.textAlign)),P=m+g+k;let D=p.x,C=p.y;h.setWidth(this.width),_?M>0&&D+P+u>this.right&&(C=p.y+=v,p.line++,D=p.x=n(a,this.left+u,this.right-i[p.line])):M>0&&C+v>this.bottom&&(D=p.x=D+e[p.line].width+u,p.line++,C=p.y=n(a,this.top+y+u,this.bottom-e[p.line].height));!function(t,e,i){if(isNaN(m)||m<=0||isNaN(x)||x<0)return;s.save();const n=K(i.lineWidth,1);if(s.fillStyle=K(i.fillStyle,l),s.lineCap=K(i.lineCap,\"butt\"),s.lineDashOffset=K(i.lineDashOffset,0),s.lineJoin=K(i.lineJoin,\"miter\"),s.lineWidth=n,s.strokeStyle=K(i.strokeStyle,l),s.setLineDash(K(i.lineDash,[])),r.usePointStyle){const o={radius:m*Math.SQRT2/2,pointStyle:i.pointStyle,rotation:i.rotation,borderWidth:n},a=h.xPlus(t,m/2);Zt(s,o,a,e+g)}else{const o=e+Math.max((f-x)/2,0),a=h.leftForLtr(t,m),r=We(i.borderRadius);s.beginPath(),Object.values(r).some((t=>0!==t))?oe(s,{x:a,y:o,w:m,h:x,radius:r}):s.rect(a,o,m,x),s.fill(),0!==n&&s.stroke()}s.restore()}(h.x(D),C,w),D=o(S,D+m+g,_?D+P:this.right,t.rtl),function(t,e,i){se(s,i.text,t,e+b/2,c,{strikethrough:i.hidden,textAlign:h.textAlign(i.textAlign)})}(h.x(D),C,w),_?p.x+=P+u:p.y+=v})),zi(this.ctx,t.textDirection)}drawTitle(){const t=this.options,e=t.title,i=He(e.font),o=Ne(e.padding);if(!e.display)return;const a=Ei(t.rtl,this.left,this.width),r=this.ctx,l=e.position,h=i.size/2,c=o.top+h;let d,u=this.left,f=this.width;if(this.isHorizontal())f=Math.max(...this.lineWidths),d=this.top+c,u=n(t.align,u,this.right-f);else{const e=this.columnSizes.reduce(((t,e)=>Math.max(t,e.height)),0);d=c+n(t.align,this.top,this.bottom-e-t.labels.padding-this._computeTitleHeight())}const g=n(l,u,u+f);r.textAlign=a.textAlign(s(l)),r.textBaseline=\"middle\",r.strokeStyle=e.color,r.fillStyle=e.color,r.font=i.string,se(r,e.text,g,d,i)}_computeTitleHeight(){const t=this.options.title,e=He(t.font),i=Ne(t.padding);return t.display?e.lineHeight+i.height:0}_getLegendItemAt(t,e){let i,s,n;if(Yt(t,this.left,this.right)&&Yt(e,this.top,this.bottom))for(n=this.legendHitBoxes,i=0;it.chart.options.color,boxWidth:40,padding:10,generateLabels(t){const e=t.data.datasets,{labels:{usePointStyle:i,pointStyle:s,textAlign:n,color:o}}=t.legend.options;return t._getSortedDatasetMetas().map((t=>{const a=t.controller.getStyle(i?0:void 0),r=Ne(a.borderWidth);return{text:e[t.index].label,fillStyle:a.backgroundColor,fontColor:o,hidden:!t.visible,lineCap:a.borderCapStyle,lineDash:a.borderDash,lineDashOffset:a.borderDashOffset,lineJoin:a.borderJoinStyle,lineWidth:(r.width+r.height)/4,strokeStyle:a.borderColor,pointStyle:s||a.pointStyle,rotation:a.rotation,textAlign:n||a.textAlign,borderRadius:0,datasetIndex:t.index}}),this)}},title:{color:t=>t.chart.options.color,display:!1,position:\"center\",text:\"\"}},descriptors:{_scriptable:t=>!t.startsWith(\"on\"),labels:{_scriptable:t=>![\"generateLabels\",\"filter\",\"sort\"].includes(t)}}};class Oo extends Ds{constructor(t){super(),this.chart=t.chart,this.options=t.options,this.ctx=t.ctx,this._padding=void 0,this.top=void 0,this.bottom=void 0,this.left=void 0,this.right=void 0,this.width=void 0,this.height=void 0,this.position=void 0,this.weight=void 0,this.fullSize=void 0}update(t,e){const i=this.options;if(this.left=0,this.top=0,!i.display)return void(this.width=this.height=this.right=this.bottom=0);this.width=this.right=t,this.height=this.bottom=e;const s=Y(i.text)?i.text.length:1;this._padding=Ne(i.padding);const n=s*He(i.font).lineHeight+this._padding.height;this.isHorizontal()?this.height=n:this.width=n}isHorizontal(){const t=this.options.position;return\"top\"===t||\"bottom\"===t}_drawArgs(t){const{top:e,left:i,bottom:s,right:o,options:a}=this,r=a.align;let l,h,c,d=0;return this.isHorizontal()?(h=n(r,i,o),c=e+t,l=o-i):(\"left\"===a.position?(h=i+t,c=n(r,s,e),d=-.5*_t):(h=o-t,c=n(r,e,s),d=.5*_t),l=s-e),{titleX:h,titleY:c,maxWidth:l,rotation:d}}draw(){const t=this.ctx,e=this.options;if(!e.display)return;const i=He(e.font),n=i.lineHeight/2+this._padding.top,{titleX:o,titleY:a,maxWidth:r,rotation:l}=this._drawArgs(n);se(t,e.text,0,0,i,{color:e.color,maxWidth:r,rotation:l,textAlign:s(e.align),textBaseline:\"middle\",translation:[o,a]})}}var Ao={id:\"title\",_element:Oo,start(t,e,i){!function(t,e){const i=new Oo({ctx:t.ctx,options:e,chart:t});ni.configure(t,i,e),ni.addBox(t,i),t.titleBlock=i}(t,i)},stop(t){const e=t.titleBlock;ni.removeBox(t,e),delete t.titleBlock},beforeUpdate(t,e,i){const s=t.titleBlock;ni.configure(t,s,i),s.options=i},defaults:{align:\"center\",display:!1,font:{weight:\"bold\"},fullSize:!0,padding:10,position:\"top\",text:\"\",weight:2e3},defaultRoutes:{color:\"color\"},descriptors:{_scriptable:!0,_indexable:!1}};const To=new WeakMap;var Lo={id:\"subtitle\",start(t,e,i){const s=new Oo({ctx:t.ctx,options:i,chart:t});ni.configure(t,s,i),ni.addBox(t,s),To.set(t,s)},stop(t){ni.removeBox(t,To.get(t)),To.delete(t)},beforeUpdate(t,e,i){const s=To.get(t);ni.configure(t,s,i),s.options=i},defaults:{align:\"center\",display:!1,font:{weight:\"normal\"},fullSize:!0,padding:0,position:\"top\",text:\"\",weight:1500},defaultRoutes:{color:\"color\"},descriptors:{_scriptable:!0,_indexable:!1}};const Ro={average(t){if(!t.length)return!1;let e,i,s=0,n=0,o=0;for(e=0,i=t.length;e-1?t.split(\"\\n\"):t}function zo(t,e){const{element:i,datasetIndex:s,index:n}=e,o=t.getDatasetMeta(s).controller,{label:a,value:r}=o.getLabelAndValue(n);return{chart:t,label:a,parsed:o.getParsed(n),raw:t.data.datasets[s].data[n],formattedValue:r,dataset:o.getDataset(),dataIndex:n,datasetIndex:s,element:i}}function Fo(t,e){const i=t.chart.ctx,{body:s,footer:n,title:o}=t,{boxWidth:a,boxHeight:r}=e,l=He(e.bodyFont),h=He(e.titleFont),c=He(e.footerFont),d=o.length,u=n.length,f=s.length,g=Ne(e.padding);let p=g.height,m=0,x=s.reduce(((t,e)=>t+e.before.length+e.lines.length+e.after.length),0);if(x+=t.beforeBody.length+t.afterBody.length,d&&(p+=d*h.lineHeight+(d-1)*e.titleSpacing+e.titleMarginBottom),x){p+=f*(e.displayColors?Math.max(r,l.lineHeight):l.lineHeight)+(x-f)*l.lineHeight+(x-1)*e.bodySpacing}u&&(p+=e.footerMarginTop+u*c.lineHeight+(u-1)*e.footerSpacing);let b=0;const _=function(t){m=Math.max(m,i.measureText(t).width+b)};return i.save(),i.font=h.string,Q(t.title,_),i.font=l.string,Q(t.beforeBody.concat(t.afterBody),_),b=e.displayColors?a+2+e.boxPadding:0,Q(s,(t=>{Q(t.before,_),Q(t.lines,_),Q(t.after,_)})),b=0,i.font=c.string,Q(t.footer,_),i.restore(),m+=g.width,{width:m,height:p}}function Bo(t,e,i,s){const{x:n,width:o}=i,{width:a,chartArea:{left:r,right:l}}=t;let h=\"center\";return\"center\"===s?h=n<=(r+l)/2?\"left\":\"right\":n<=o/2?h=\"left\":n>=a-o/2&&(h=\"right\"),function(t,e,i,s){const{x:n,width:o}=s,a=i.caretSize+i.caretPadding;return\"left\"===t&&n+o+a>e.width||\"right\"===t&&n-o-a<0||void 0}(h,t,e,i)&&(h=\"center\"),h}function Vo(t,e,i){const s=i.yAlign||e.yAlign||function(t,e){const{y:i,height:s}=e;return it.height-s/2?\"bottom\":\"center\"}(t,i);return{xAlign:i.xAlign||e.xAlign||Bo(t,e,i,s),yAlign:s}}function Wo(t,e,i,s){const{caretSize:n,caretPadding:o,cornerRadius:a}=t,{xAlign:r,yAlign:l}=i,h=n+o,{topLeft:c,topRight:d,bottomLeft:u,bottomRight:f}=We(a);let g=function(t,e){let{x:i,width:s}=t;return\"right\"===e?i-=s:\"center\"===e&&(i-=s/2),i}(e,r);const p=function(t,e,i){let{y:s,height:n}=t;return\"top\"===e?s+=i:s-=\"bottom\"===e?n+i:n/2,s}(e,l,h);return\"center\"===l?\"left\"===r?g+=h:\"right\"===r&&(g-=h):\"left\"===r?g-=Math.max(c,u)+n:\"right\"===r&&(g+=Math.max(d,f)+n),{x:jt(g,0,s.width-e.width),y:jt(p,0,s.height-e.height)}}function No(t,e,i){const s=Ne(i.padding);return\"center\"===e?t.x+t.width/2:\"right\"===e?t.x+t.width-s.right:t.x+s.left}function Ho(t){return Eo([],Io(t))}function jo(t,e){const i=e&&e.dataset&&e.dataset.tooltip&&e.dataset.tooltip.callbacks;return i?t.override(i):t}class $o extends Ds{constructor(t){super(),this.opacity=0,this._active=[],this._eventPosition=void 0,this._size=void 0,this._cachedAnimations=void 0,this._tooltipItems=[],this.$animations=void 0,this.$context=void 0,this.chart=t.chart||t._chart,this._chart=this.chart,this.options=t.options,this.dataPoints=void 0,this.title=void 0,this.beforeBody=void 0,this.body=void 0,this.afterBody=void 0,this.footer=void 0,this.xAlign=void 0,this.yAlign=void 0,this.x=void 0,this.y=void 0,this.height=void 0,this.width=void 0,this.caretX=void 0,this.caretY=void 0,this.labelColors=void 0,this.labelPointStyles=void 0,this.labelTextColors=void 0}initialize(t){this.options=t,this._cachedAnimations=void 0,this.$context=void 0}_resolveAnimations(){const t=this._cachedAnimations;if(t)return t;const e=this.chart,i=this.options.setContext(this.getContext()),s=i.enabled&&e.options.animation&&i.animations,n=new gs(this.chart,s);return s._cacheable&&(this._cachedAnimations=Object.freeze(n)),n}getContext(){return this.$context||(this.$context=(t=this.chart.getContext(),e=this,i=this._tooltipItems,Ye(t,{tooltip:e,tooltipItems:i,type:\"tooltip\"})));var t,e,i}getTitle(t,e){const{callbacks:i}=e,s=i.beforeTitle.apply(this,[t]),n=i.title.apply(this,[t]),o=i.afterTitle.apply(this,[t]);let a=[];return a=Eo(a,Io(s)),a=Eo(a,Io(n)),a=Eo(a,Io(o)),a}getBeforeBody(t,e){return Ho(e.callbacks.beforeBody.apply(this,[t]))}getBody(t,e){const{callbacks:i}=e,s=[];return Q(t,(t=>{const e={before:[],lines:[],after:[]},n=jo(i,t);Eo(e.before,Io(n.beforeLabel.call(this,t))),Eo(e.lines,n.label.call(this,t)),Eo(e.after,Io(n.afterLabel.call(this,t))),s.push(e)})),s}getAfterBody(t,e){return Ho(e.callbacks.afterBody.apply(this,[t]))}getFooter(t,e){const{callbacks:i}=e,s=i.beforeFooter.apply(this,[t]),n=i.footer.apply(this,[t]),o=i.afterFooter.apply(this,[t]);let a=[];return a=Eo(a,Io(s)),a=Eo(a,Io(n)),a=Eo(a,Io(o)),a}_createItems(t){const e=this._active,i=this.chart.data,s=[],n=[],o=[];let a,r,l=[];for(a=0,r=e.length;at.filter(e,s,n,i)))),t.itemSort&&(l=l.sort(((e,s)=>t.itemSort(e,s,i)))),Q(l,(e=>{const i=jo(t.callbacks,e);s.push(i.labelColor.call(this,e)),n.push(i.labelPointStyle.call(this,e)),o.push(i.labelTextColor.call(this,e))})),this.labelColors=s,this.labelPointStyles=n,this.labelTextColors=o,this.dataPoints=l,l}update(t,e){const i=this.options.setContext(this.getContext()),s=this._active;let n,o=[];if(s.length){const t=Ro[i.position].call(this,s,this._eventPosition);o=this._createItems(i),this.title=this.getTitle(o,i),this.beforeBody=this.getBeforeBody(o,i),this.body=this.getBody(o,i),this.afterBody=this.getAfterBody(o,i),this.footer=this.getFooter(o,i);const e=this._size=Fo(this,i),a=Object.assign({},t,e),r=Vo(this.chart,i,a),l=Wo(i,a,r,this.chart);this.xAlign=r.xAlign,this.yAlign=r.yAlign,n={opacity:1,x:l.x,y:l.y,width:e.width,height:e.height,caretX:t.x,caretY:t.y}}else 0!==this.opacity&&(n={opacity:0});this._tooltipItems=o,this.$context=void 0,n&&this._resolveAnimations().update(this,n),t&&i.external&&i.external.call(this,{chart:this.chart,tooltip:this,replay:e})}drawCaret(t,e,i,s){const n=this.getCaretPosition(t,i,s);e.lineTo(n.x1,n.y1),e.lineTo(n.x2,n.y2),e.lineTo(n.x3,n.y3)}getCaretPosition(t,e,i){const{xAlign:s,yAlign:n}=this,{caretSize:o,cornerRadius:a}=i,{topLeft:r,topRight:l,bottomLeft:h,bottomRight:c}=We(a),{x:d,y:u}=t,{width:f,height:g}=e;let p,m,x,b,_,y;return\"center\"===n?(_=u+g/2,\"left\"===s?(p=d,m=p-o,b=_+o,y=_-o):(p=d+f,m=p+o,b=_-o,y=_+o),x=p):(m=\"left\"===s?d+Math.max(r,h)+o:\"right\"===s?d+f-Math.max(l,c)-o:this.caretX,\"top\"===n?(b=u,_=b-o,p=m-o,x=m+o):(b=u+g,_=b+o,p=m+o,x=m-o),y=b),{x1:p,x2:m,x3:x,y1:b,y2:_,y3:y}}drawTitle(t,e,i){const s=this.title,n=s.length;let o,a,r;if(n){const l=Ei(i.rtl,this.x,this.width);for(t.x=No(this,i.titleAlign,i),e.textAlign=l.textAlign(i.titleAlign),e.textBaseline=\"middle\",o=He(i.titleFont),a=i.titleSpacing,e.fillStyle=i.titleColor,e.font=o.string,r=0;r0!==t))?(t.beginPath(),t.fillStyle=n.multiKeyBackground,oe(t,{x:e,y:g,w:l,h:r,radius:a}),t.fill(),t.stroke(),t.fillStyle=o.backgroundColor,t.beginPath(),oe(t,{x:i,y:g+1,w:l-2,h:r-2,radius:a}),t.fill()):(t.fillStyle=n.multiKeyBackground,t.fillRect(e,g,l,r),t.strokeRect(e,g,l,r),t.fillStyle=o.backgroundColor,t.fillRect(i,g+1,l-2,r-2))}t.fillStyle=this.labelTextColors[i]}drawBody(t,e,i){const{body:s}=this,{bodySpacing:n,bodyAlign:o,displayColors:a,boxHeight:r,boxWidth:l,boxPadding:h}=i,c=He(i.bodyFont);let d=c.lineHeight,u=0;const f=Ei(i.rtl,this.x,this.width),g=function(i){e.fillText(i,f.x(t.x+u),t.y+d/2),t.y+=d+n},p=f.textAlign(o);let m,x,b,_,y,v,w;for(e.textAlign=o,e.textBaseline=\"middle\",e.font=c.string,t.x=No(this,p,i),e.fillStyle=i.bodyColor,Q(this.beforeBody,g),u=a&&\"right\"!==p?\"center\"===o?l/2+h:l+2+h:0,_=0,v=s.length;_0&&e.stroke()}_updateAnimationTarget(t){const e=this.chart,i=this.$animations,s=i&&i.x,n=i&&i.y;if(s||n){const i=Ro[t.position].call(this,this._active,this._eventPosition);if(!i)return;const o=this._size=Fo(this,t),a=Object.assign({},i,this._size),r=Vo(e,t,a),l=Wo(t,a,r,e);s._to===l.x&&n._to===l.y||(this.xAlign=r.xAlign,this.yAlign=r.yAlign,this.width=o.width,this.height=o.height,this.caretX=i.x,this.caretY=i.y,this._resolveAnimations().update(this,l))}}draw(t){const e=this.options.setContext(this.getContext());let i=this.opacity;if(!i)return;this._updateAnimationTarget(e);const s={width:this.width,height:this.height},n={x:this.x,y:this.y};i=Math.abs(i)<.001?0:i;const o=Ne(e.padding),a=this.title.length||this.beforeBody.length||this.body.length||this.afterBody.length||this.footer.length;e.enabled&&a&&(t.save(),t.globalAlpha=i,this.drawBackground(n,t,s,e),Ii(t,e.textDirection),n.y+=o.top,this.drawTitle(n,t,e),this.drawBody(n,t,e),this.drawFooter(n,t,e),zi(t,e.textDirection),t.restore())}getActiveElements(){return this._active||[]}setActiveElements(t,e){const i=this._active,s=t.map((({datasetIndex:t,index:e})=>{const i=this.chart.getDatasetMeta(t);if(!i)throw new Error(\"Cannot find a dataset at index \"+t);return{datasetIndex:t,element:i.data[e],index:e}})),n=!tt(i,s),o=this._positionChanged(s,e);(n||o)&&(this._active=s,this._eventPosition=e,this._ignoreReplayEvents=!0,this.update(!0))}handleEvent(t,e,i=!0){if(e&&this._ignoreReplayEvents)return!1;this._ignoreReplayEvents=!1;const s=this.options,n=this._active||[],o=this._getActiveElements(t,n,e,i),a=this._positionChanged(o,t),r=e||!tt(o,n)||a;return r&&(this._active=o,(s.enabled||s.external)&&(this._eventPosition={x:t.x,y:t.y},this.update(!0,e))),r}_getActiveElements(t,e,i,s){const n=this.options;if(\"mouseout\"===t.type)return[];if(!s)return e;const o=this.chart.getElementsAtEventForMode(t,n.mode,n,i);return n.reverse&&o.reverse(),o}_positionChanged(t,e){const{caretX:i,caretY:s,options:n}=this,o=Ro[n.position].call(this,t,e);return!1!==o&&(i!==o.x||s!==o.y)}}$o.positioners=Ro;var Yo={id:\"tooltip\",_element:$o,positioners:Ro,afterInit(t,e,i){i&&(t.tooltip=new $o({chart:t,options:i}))},beforeUpdate(t,e,i){t.tooltip&&t.tooltip.initialize(i)},reset(t,e,i){t.tooltip&&t.tooltip.initialize(i)},afterDraw(t){const e=t.tooltip,i={tooltip:e};!1!==t.notifyPlugins(\"beforeTooltipDraw\",i)&&(e&&e.draw(t.ctx),t.notifyPlugins(\"afterTooltipDraw\",i))},afterEvent(t,e){if(t.tooltip){const i=e.replay;t.tooltip.handleEvent(e.event,i,e.inChartArea)&&(e.changed=!0)}},defaults:{enabled:!0,external:null,position:\"average\",backgroundColor:\"rgba(0,0,0,0.8)\",titleColor:\"#fff\",titleFont:{weight:\"bold\"},titleSpacing:2,titleMarginBottom:6,titleAlign:\"left\",bodyColor:\"#fff\",bodySpacing:2,bodyFont:{},bodyAlign:\"left\",footerColor:\"#fff\",footerSpacing:2,footerMarginTop:6,footerFont:{weight:\"bold\"},footerAlign:\"left\",padding:6,caretPadding:2,caretSize:5,cornerRadius:6,boxHeight:(t,e)=>e.bodyFont.size,boxWidth:(t,e)=>e.bodyFont.size,multiKeyBackground:\"#fff\",displayColors:!0,boxPadding:0,borderColor:\"rgba(0,0,0,0)\",borderWidth:0,animation:{duration:400,easing:\"easeOutQuart\"},animations:{numbers:{type:\"number\",properties:[\"x\",\"y\",\"width\",\"height\",\"caretX\",\"caretY\"]},opacity:{easing:\"linear\",duration:200}},callbacks:{beforeTitle:H,title(t){if(t.length>0){const e=t[0],i=e.chart.data.labels,s=i?i.length:0;if(this&&this.options&&\"dataset\"===this.options.mode)return e.dataset.label||\"\";if(e.label)return e.label;if(s>0&&e.dataIndex\"filter\"!==t&&\"itemSort\"!==t&&\"external\"!==t,_indexable:!1,callbacks:{_scriptable:!1,_indexable:!1},animation:{_fallback:!1},animations:{_fallback:\"animation\"}},additionalOptionScopes:[\"interaction\"]},Uo=Object.freeze({__proto__:null,Decimation:ro,Filler:So,Legend:Co,SubTitle:Lo,Title:Ao,Tooltip:Yo});function Xo(t,e,i,s){const n=t.indexOf(e);if(-1===n)return((t,e,i,s)=>(\"string\"==typeof e?(i=t.push(e)-1,s.unshift({index:i,label:e})):isNaN(e)&&(i=null),i))(t,e,i,s);return n!==t.lastIndexOf(e)?i:n}class qo extends Bs{constructor(t){super(t),this._startValue=void 0,this._valueRange=0,this._addedLabels=[]}init(t){const e=this._addedLabels;if(e.length){const t=this.getLabels();for(const{index:i,label:s}of e)t[i]===s&&t.splice(i,1);this._addedLabels=[]}super.init(t)}parse(t,e){if($(t))return null;const i=this.getLabels();return((t,e)=>null===t?null:jt(Math.round(t),0,e))(e=isFinite(e)&&i[e]===t?e:Xo(i,t,K(e,t),this._addedLabels),i.length-1)}determineDataLimits(){const{minDefined:t,maxDefined:e}=this.getUserBounds();let{min:i,max:s}=this.getMinMax(!0);\"ticks\"===this.options.bounds&&(t||(i=0),e||(s=this.getLabels().length-1)),this.min=i,this.max=s}buildTicks(){const t=this.min,e=this.max,i=this.options.offset,s=[];let n=this.getLabels();n=0===t&&e===n.length-1?n:n.slice(t,e+1),this._valueRange=Math.max(n.length-(i?0:1),1),this._startValue=this.min-(i?.5:0);for(let i=t;i<=e;i++)s.push({value:i});return s}getLabelForValue(t){const e=this.getLabels();return t>=0&&te.length-1?null:this.getPixelForValue(e[t].value)}getValueForPixel(t){return Math.round(this._startValue+this.getDecimalForPixel(t)*this._valueRange)}getBasePixel(){return this.bottom}}function Ko(t,e,{horizontal:i,minRotation:s}){const n=It(s),o=(i?Math.sin(n):Math.cos(n))||.001,a=.75*e*(\"\"+t).length;return Math.min(e/o,a)}qo.id=\"category\",qo.defaults={ticks:{callback:qo.prototype.getLabelForValue}};class Go extends Bs{constructor(t){super(t),this.start=void 0,this.end=void 0,this._startValue=void 0,this._endValue=void 0,this._valueRange=0}parse(t,e){return $(t)||(\"number\"==typeof t||t instanceof Number)&&!isFinite(+t)?null:+t}handleTickRangeOptions(){const{beginAtZero:t}=this.options,{minDefined:e,maxDefined:i}=this.getUserBounds();let{min:s,max:n}=this;const o=t=>s=e?s:t,a=t=>n=i?n:t;if(t){const t=Ct(s),e=Ct(n);t<0&&e<0?a(0):t>0&&e>0&&o(0)}if(s===n){let e=1;(n>=Number.MAX_SAFE_INTEGER||s<=Number.MIN_SAFE_INTEGER)&&(e=Math.abs(.05*n)),a(n+e),t||o(s-e)}this.min=s,this.max=n}getTickLimit(){const t=this.options.ticks;let e,{maxTicksLimit:i,stepSize:s}=t;return s?(e=Math.ceil(this.max/s)-Math.floor(this.min/s)+1,e>1e3&&(console.warn(`scales.${this.id}.ticks.stepSize: ${s} would result generating up to ${e} ticks. Limiting to 1000.`),e=1e3)):(e=this.computeTickLimit(),i=i||11),i&&(e=Math.min(i,e)),e}computeTickLimit(){return Number.POSITIVE_INFINITY}buildTicks(){const t=this.options,e=t.ticks;let i=this.getTickLimit();i=Math.max(2,i);const s=function(t,e){const i=[],{bounds:s,step:n,min:o,max:a,precision:r,count:l,maxTicks:h,maxDigits:c,includeBounds:d}=t,u=n||1,f=h-1,{min:g,max:p}=e,m=!$(o),x=!$(a),b=!$(l),_=(p-g)/(c+1);let y,v,w,M,k=Ot((p-g)/f/u)*u;if(k<1e-14&&!m&&!x)return[{value:g},{value:p}];M=Math.ceil(p/k)-Math.floor(g/k),M>f&&(k=Ot(M*k/f/u)*u),$(r)||(y=Math.pow(10,r),k=Math.ceil(k*y)/y),\"ticks\"===s?(v=Math.floor(g/k)*k,w=Math.ceil(p/k)*k):(v=g,w=p),m&&x&&n&&Rt((a-o)/n,k/1e3)?(M=Math.round(Math.min((a-o)/k,h)),k=(a-o)/M,v=o,w=a):b?(v=m?o:v,w=x?a:w,M=l-1,k=(w-v)/M):(M=(w-v)/k,M=Lt(M,Math.round(M),k/1e3)?Math.round(M):Math.ceil(M));const S=Math.max(Ft(k),Ft(v));y=Math.pow(10,$(r)?S:r),v=Math.round(v*y)/y,w=Math.round(w*y)/y;let P=0;for(m&&(d&&v!==o?(i.push({value:o}),v0?i:null;this._zero=!0}determineDataLimits(){const{min:t,max:e}=this.getMinMax(!0);this.min=X(t)?Math.max(0,t):null,this.max=X(e)?Math.max(0,e):null,this.options.beginAtZero&&(this._zero=!0),this.handleTickRangeOptions()}handleTickRangeOptions(){const{minDefined:t,maxDefined:e}=this.getUserBounds();let i=this.min,s=this.max;const n=e=>i=t?i:e,o=t=>s=e?s:t,a=(t,e)=>Math.pow(10,Math.floor(Dt(t))+e);i===s&&(i<=0?(n(1),o(10)):(n(a(i,-1)),o(a(s,1)))),i<=0&&n(a(s,-1)),s<=0&&o(a(i,1)),this._zero&&this.min!==this._suggestedMin&&i===a(this.min,0)&&n(a(i,-1)),this.min=i,this.max=s}buildTicks(){const t=this.options,e=function(t,e){const i=Math.floor(Dt(e.max)),s=Math.ceil(e.max/Math.pow(10,i)),n=[];let o=q(t.min,Math.pow(10,Math.floor(Dt(e.min)))),a=Math.floor(Dt(o)),r=Math.floor(o/Math.pow(10,a)),l=a<0?Math.pow(10,Math.abs(a)):1;do{n.push({value:o,major:Jo(o)}),++r,10===r&&(r=1,++a,l=a>=0?1:l),o=Math.round(r*Math.pow(10,a)*l)/l}while(an?{start:e-i,end:e}:{start:e,end:e+i}}function ia(t){const e={l:t.left+t._padding.left,r:t.right-t._padding.right,t:t.top+t._padding.top,b:t.bottom-t._padding.bottom},i=Object.assign({},e),s=[],n=[],o=t._pointLabels.length,a=t.options.pointLabels,r=a.centerPointLabels?_t/o:0;for(let d=0;de.r&&(r=(s.end-e.r)/o,t.r=Math.max(t.r,e.r+r)),n.starte.b&&(l=(n.end-e.b)/a,t.b=Math.max(t.b,e.b+l))}function na(t){return 0===t||180===t?\"center\":t<180?\"left\":\"right\"}function oa(t,e,i){return\"right\"===i?t-=e:\"center\"===i&&(t-=e/2),t}function aa(t,e,i){return 90===i||270===i?t-=e/2:(i>270||i<90)&&(t-=e),t}function ra(t,e,i,s){const{ctx:n}=t;if(i)n.arc(t.xCenter,t.yCenter,e,0,yt);else{let i=t.getPointPosition(0,e);n.moveTo(i.x,i.y);for(let o=1;o{const i=J(this.options.pointLabels.callback,[t,e],this);return i||0===i?i:\"\"})).filter(((t,e)=>this.chart.getDataVisibility(e)))}fit(){const t=this.options;t.display&&t.pointLabels.display?ia(this):this.setCenterPoint(0,0,0,0)}setCenterPoint(t,e,i,s){this.xCenter+=Math.floor((t-e)/2),this.yCenter+=Math.floor((i-s)/2),this.drawingArea-=Math.min(this.drawingArea/2,Math.max(t,e,i,s))}getIndexAngle(t){return Nt(t*(yt/(this._pointLabels.length||1))+It(this.options.startAngle||0))}getDistanceFromCenterForValue(t){if($(t))return NaN;const e=this.drawingArea/(this.max-this.min);return this.options.reverse?(this.max-t)*e:(t-this.min)*e}getValueForDistanceFromCenter(t){if($(t))return NaN;const e=t/(this.drawingArea/(this.max-this.min));return this.options.reverse?this.max-e:this.min+e}getPointLabelContext(t){const e=this._pointLabels||[];if(t>=0&&t=0;n--){const e=s.setContext(t.getPointLabelContext(n)),o=He(e.font),{x:a,y:r,textAlign:l,left:h,top:c,right:d,bottom:u}=t._pointLabelItems[n],{backdropColor:f}=e;if(!$(f)){const t=Ne(e.backdropPadding);i.fillStyle=f,i.fillRect(h-t.left,c-t.top,d-h+t.width,u-c+t.height)}se(i,t._pointLabels[n],a,r+o.lineHeight/2,o,{color:e.color,textAlign:l,textBaseline:\"middle\"})}}(this,n),s.display&&this.ticks.forEach(((t,e)=>{if(0!==e){a=this.getDistanceFromCenterForValue(t.value);!function(t,e,i,s){const n=t.ctx,o=e.circular,{color:a,lineWidth:r}=e;!o&&!s||!a||!r||i<0||(n.save(),n.strokeStyle=a,n.lineWidth=r,n.setLineDash(e.borderDash),n.lineDashOffset=e.borderDashOffset,n.beginPath(),ra(t,i,o,s),n.closePath(),n.stroke(),n.restore())}(this,s.setContext(this.getContext(e-1)),a,n)}})),i.display){for(t.save(),o=n-1;o>=0;o--){const s=i.setContext(this.getPointLabelContext(o)),{color:n,lineWidth:l}=s;l&&n&&(t.lineWidth=l,t.strokeStyle=n,t.setLineDash(s.borderDash),t.lineDashOffset=s.borderDashOffset,a=this.getDistanceFromCenterForValue(e.ticks.reverse?this.min:this.max),r=this.getPointPosition(o,a),t.beginPath(),t.moveTo(this.xCenter,this.yCenter),t.lineTo(r.x,r.y),t.stroke())}t.restore()}}drawBorder(){}drawLabels(){const t=this.ctx,e=this.options,i=e.ticks;if(!i.display)return;const s=this.getIndexAngle(0);let n,o;t.save(),t.translate(this.xCenter,this.yCenter),t.rotate(s),t.textAlign=\"center\",t.textBaseline=\"middle\",this.ticks.forEach(((s,a)=>{if(0===a&&!e.reverse)return;const r=i.setContext(this.getContext(a)),l=He(r.font);if(n=this.getDistanceFromCenterForValue(this.ticks[a].value),r.showLabelBackdrop){t.font=l.string,o=t.measureText(s.label).width,t.fillStyle=r.backdropColor;const e=Ne(r.backdropPadding);t.fillRect(-o/2-e.left,-n-l.size/2-e.top,o+e.width,l.size+e.height)}se(t,s.label,0,-n,l,{color:r.color})})),t.restore()}drawTitle(){}}la.id=\"radialLinear\",la.defaults={display:!0,animate:!0,position:\"chartArea\",angleLines:{display:!0,lineWidth:1,borderDash:[],borderDashOffset:0},grid:{circular:!1},startAngle:0,ticks:{showLabelBackdrop:!0,callback:Os.formatters.numeric},pointLabels:{backdropColor:void 0,backdropPadding:2,display:!0,font:{size:10},callback:t=>t,padding:5,centerPointLabels:!1}},la.defaultRoutes={\"angleLines.color\":\"borderColor\",\"pointLabels.color\":\"color\",\"ticks.color\":\"color\"},la.descriptors={angleLines:{_fallback:\"grid\"}};const ha={millisecond:{common:!0,size:1,steps:1e3},second:{common:!0,size:1e3,steps:60},minute:{common:!0,size:6e4,steps:60},hour:{common:!0,size:36e5,steps:24},day:{common:!0,size:864e5,steps:30},week:{common:!1,size:6048e5,steps:4},month:{common:!0,size:2628e6,steps:12},quarter:{common:!1,size:7884e6,steps:4},year:{common:!0,size:3154e7}},ca=Object.keys(ha);function da(t,e){return t-e}function ua(t,e){if($(e))return null;const i=t._adapter,{parser:s,round:n,isoWeekday:o}=t._parseOpts;let a=e;return\"function\"==typeof s&&(a=s(a)),X(a)||(a=\"string\"==typeof s?i.parse(a,s):i.parse(a)),null===a?null:(n&&(a=\"week\"!==n||!Tt(o)&&!0!==o?i.startOf(a,n):i.startOf(a,\"isoWeek\",o)),+a)}function fa(t,e,i,s){const n=ca.length;for(let o=ca.indexOf(t);o=e?i[s]:i[n]]=!0}}else t[e]=!0}function pa(t,e,i){const s=[],n={},o=e.length;let a,r;for(a=0;a=0&&(e[l].major=!0);return e}(t,s,n,i):s}class ma extends Bs{constructor(t){super(t),this._cache={data:[],labels:[],all:[]},this._unit=\"day\",this._majorUnit=void 0,this._offsets={},this._normalized=!1,this._parseOpts=void 0}init(t,e){const i=t.time||(t.time={}),s=this._adapter=new mn._date(t.adapters.date);ot(i.displayFormats,s.formats()),this._parseOpts={parser:i.parser,round:i.round,isoWeekday:i.isoWeekday},super.init(t),this._normalized=e.normalized}parse(t,e){return void 0===t?null:ua(this,t)}beforeLayout(){super.beforeLayout(),this._cache={data:[],labels:[],all:[]}}determineDataLimits(){const t=this.options,e=this._adapter,i=t.time.unit||\"day\";let{min:s,max:n,minDefined:o,maxDefined:a}=this.getUserBounds();function r(t){o||isNaN(t.min)||(s=Math.min(s,t.min)),a||isNaN(t.max)||(n=Math.max(n,t.max))}o&&a||(r(this._getLabelBounds()),\"ticks\"===t.bounds&&\"labels\"===t.ticks.source||r(this.getMinMax(!1))),s=X(s)&&!isNaN(s)?s:+e.startOf(Date.now(),i),n=X(n)&&!isNaN(n)?n:+e.endOf(Date.now(),i)+1,this.min=Math.min(s,n-1),this.max=Math.max(s+1,n)}_getLabelBounds(){const t=this.getLabelTimestamps();let e=Number.POSITIVE_INFINITY,i=Number.NEGATIVE_INFINITY;return t.length&&(e=t[0],i=t[t.length-1]),{min:e,max:i}}buildTicks(){const t=this.options,e=t.time,i=t.ticks,s=\"labels\"===i.source?this.getLabelTimestamps():this._generate();\"ticks\"===t.bounds&&s.length&&(this.min=this._userMin||s[0],this.max=this._userMax||s[s.length-1]);const n=this.min,o=he(s,n,this.max);return this._unit=e.unit||(i.autoSkip?fa(e.minUnit,this.min,this.max,this._getLabelCapacity(n)):function(t,e,i,s,n){for(let o=ca.length-1;o>=ca.indexOf(i);o--){const i=ca[o];if(ha[i].common&&t._adapter.diff(n,s,i)>=e-1)return i}return ca[i?ca.indexOf(i):0]}(this,o.length,e.minUnit,this.min,this.max)),this._majorUnit=i.major.enabled&&\"year\"!==this._unit?function(t){for(let e=ca.indexOf(t)+1,i=ca.length;e1e5*a)throw new Error(e+\" and \"+i+\" are too far apart with stepSize of \"+a+\" \"+o);const f=\"data\"===s.ticks.source&&this.getDataTimestamps();for(c=u,d=0;ct-e)).map((t=>+t))}getLabelForValue(t){const e=this._adapter,i=this.options.time;return i.tooltipFormat?e.format(t,i.tooltipFormat):e.format(t,i.displayFormats.datetime)}_tickFormatFunction(t,e,i,s){const n=this.options,o=n.time.displayFormats,a=this._unit,r=this._majorUnit,l=a&&o[a],h=r&&o[r],c=i[e],d=r&&h&&c&&c.major,u=this._adapter.format(t,s||(d?h:l)),f=n.ticks.callback;return f?J(f,[u,e,i],this):u}generateTickLabels(t){let e,i,s;for(e=0,i=t.length;e0?a:1}getDataTimestamps(){let t,e,i=this._cache.data||[];if(i.length)return i;const s=this.getMatchingVisibleMetas();if(this._normalized&&s.length)return this._cache.data=s[0].controller.getAllParsedValues(this);for(t=0,e=s.length;t=t[r].pos&&e<=t[l].pos&&({lo:r,hi:l}=re(t,\"pos\",e)),({pos:s,time:o}=t[r]),({pos:n,time:a}=t[l])):(e>=t[r].time&&e<=t[l].time&&({lo:r,hi:l}=re(t,\"time\",e)),({time:s,pos:o}=t[r]),({time:n,pos:a}=t[l]));const h=n-s;return h?o+(a-o)*(e-s)/h:o}ma.id=\"time\",ma.defaults={bounds:\"data\",adapters:{},time:{parser:!1,unit:!1,round:!1,isoWeekday:!1,minUnit:\"millisecond\",displayFormats:{}},ticks:{source:\"auto\",major:{enabled:!1}}};class ba extends ma{constructor(t){super(t),this._table=[],this._minPos=void 0,this._tableRange=void 0}initOffsets(){const t=this._getTimestampsForTable(),e=this._table=this.buildLookupTable(t);this._minPos=xa(e,this.min),this._tableRange=xa(e,this.max)-this._minPos,super.initOffsets(t)}buildLookupTable(t){const{min:e,max:i}=this,s=[],n=[];let o,a,r,l,h;for(o=0,a=t.length;o=e&&l<=i&&s.push(l);if(s.length<2)return[{time:e,pos:0},{time:i,pos:1}];for(o=0,a=s.length;oYou can read some explanation on how this journal works here: https://github.com/zadam/trilium/wiki/Day-notes\n\n

"}, {"noteId": "kuzwWiiZ3xNF", "title": "Processes", "type": "text", "mime": "text/html", "blobId": "MVwprYvCuBH9l838v3VH", "content": "

bla bla...

"}, {"noteId": "l25TNESdxp2F", "title": "Mind Map", "type": "mindMap", "mime": "application/json", "blobId": "8KF8LRwLAqzsKcUZG2zY", "content": "{\"nodeData\":{\"id\":\"me-root\",\"topic\":\"Mind Elixir\",\"root\":true,\"tags\":[\"Mind Map Core\"],\"children\":[{\"topic\":\"What is Mind Elixir\",\"id\":\"bd4313fbac40284b\",\"direction\":0,\"expanded\":true,\"children\":[{\"topic\":\"A mind map core\",\"id\":\"beeb823afd6d2114\"},{\"topic\":\"Free\",\"id\":\"c1f068377de9f3a0\"},{\"topic\":\"Open-Source\",\"id\":\"c1f06d38a09f23ca\"},{\"topic\":\"Use without JavaScript framework\",\"id\":\"c1f06e4cbcf16463\",\"expanded\":true,\"children\":[]},{\"topic\":\"Use in your own project\",\"id\":\"c1f1f11a7fbf7550\",\"children\":[{\"topic\":\"import MindElixir from 'mind-elixir'\",\"id\":\"c1f1e245b0a89f9b\"},{\"topic\":\"new MindElixir({...}).init(data)\",\"id\":\"c1f1ebc7072c8928\"}]},{\"topic\":\"Easy to use\",\"id\":\"c1f0723c07b408d7\",\"expanded\":true,\"children\":[{\"topic\":\"Use it like other mind map application\",\"id\":\"c1f09612fd89920d\"}]}]},{\"topic\":\"Basics\",\"id\":\"bd1b66c4b56754d9\",\"direction\":0,\"expanded\":true,\"children\":[{\"topic\":\"tab - Create a child node\",\"id\":\"bd1b6892bcab126a\"},{\"topic\":\"enter - Create a sibling node\",\"id\":\"bd1b6b632a434b27\"},{\"topic\":\"del - Remove a node\",\"id\":\"bd1b983085187c0a\"}]},{\"topic\":\"Focus mode\",\"id\":\"bd1b9b94a9a7a913\",\"direction\":1,\"expanded\":true,\"children\":[{\"topic\":\"Right click and select Focus Mode\",\"id\":\"bd1bb2ac4bbab458\"},{\"topic\":\"Right click and select Cancel Focus Mode\",\"id\":\"bd1bb4b14d6697c3\"}]},{\"topic\":\"Left menu\",\"id\":\"bd1b9d1816ede134\",\"direction\":0,\"expanded\":true,\"children\":[{\"topic\":\"Node distribution\",\"id\":\"bd1ba11e620c3c1a\",\"expanded\":true,\"children\":[{\"topic\":\"Left\",\"id\":\"bd1c1cb51e6745d3\"},{\"topic\":\"Right\",\"id\":\"bd1c1e12fd603ff6\"},{\"topic\":\"Both l & r\",\"id\":\"bd1c1f03def5c97b\"}]}]},{\"topic\":\"Bottom menu\",\"id\":\"bd1ba66996df4ba4\",\"direction\":1,\"expanded\":true,\"children\":[{\"topic\":\"Full screen\",\"id\":\"bd1ba81d9bc95a7e\"},{\"topic\":\"Return to Center\",\"id\":\"bd1babdd5c18a7a2\"},{\"topic\":\"Zoom in\",\"id\":\"bd1bae68e0ab186e\"},{\"topic\":\"Zoom out\",\"id\":\"bd1bb06377439977\"}]},{\"topic\":\"Link\",\"id\":\"bd1beff607711025\",\"direction\":0,\"expanded\":true,\"children\":[{\"topic\":\"Right click and select Link\",\"id\":\"bd1bf320da90046a\"},{\"topic\":\"Click the target you want to link\",\"id\":\"bd1bf6f94ff2e642\"},{\"topic\":\"Modify link with control points\",\"id\":\"bd1c0c4a487bd036\"}]},{\"topic\":\"Node style\",\"id\":\"bd1c217f9d0b20bd\",\"direction\":0,\"expanded\":true,\"children\":[{\"topic\":\"Font Size\",\"id\":\"bd1c24420cd2c2f5\",\"style\":{\"fontSize\":\"32\",\"color\":\"#3298db\"}},{\"topic\":\"Font Color\",\"id\":\"bd1c2a59b9a2739c\",\"style\":{\"color\":\"#c0392c\"}},{\"topic\":\"Background Color\",\"id\":\"bd1c2de33f057eb4\",\"style\":{\"color\":\"#bdc3c7\",\"background\":\"#2c3e50\"}},{\"topic\":\"Add tags\",\"id\":\"bd1cff58364436d0\",\"tags\":[\"Completed\"]},{\"topic\":\"Add icons\",\"id\":\"bd1d0317f7e8a61a\",\"icons\":[\"😂\"],\"tags\":[\"www\"]},{\"topic\":\"Bolder\",\"id\":\"bd41fd4ca32322a4\",\"style\":{\"fontWeight\":\"bold\"}},{\"topic\":\"Hyper link\",\"id\":\"bd41fd4ca32322a5\",\"hyperLink\":\"https://github.com/ssshooter/mind-elixir-core\"}]},{\"topic\":\"Draggable\",\"id\":\"bd1f03fee1f63bc6\",\"direction\":1,\"expanded\":true,\"children\":[{\"topic\":\"Drag a node to another node\\nand the former one will become a child node of latter one\",\"id\":\"bd1f07c598e729dc\"}]},{\"topic\":\"Export data\",\"id\":\"beeb7586973430db\",\"direction\":1,\"expanded\":true,\"children\":[{\"topic\":\"JSON\",\"id\":\"beeb784cc189375f\"},{\"topic\":\"HTML\",\"id\":\"beeb7a6bec2d68f5\"},{\"topic\":\"SVG\",\"id\":\"beeb7a6bec2d68e6\"}]},{\"topic\":\"Caution\",\"id\":\"bd42dad21aaf6bae\",\"direction\":0,\"style\":{\"background\":\"#f1c40e\"},\"expanded\":true,\"children\":[{\"topic\":\"Only save manually\",\"id\":\"bd42e1d0163ebf04\",\"expanded\":true,\"children\":[{\"topic\":\"Save button in the top-right corner\",\"id\":\"bd42e619051878b3\",\"branchColor\":\"green\",\"expanded\":true,\"children\":[]},{\"topic\":\"ctrl + S\",\"id\":\"bd42e97d7ac35e99\"}]}]}],\"expanded\":true},\"arrows\":[{\"id\":\"ac5fb1df7345e9c4\",\"label\":\"Render\",\"from\":\"beeb784cc189375f\",\"to\":\"beeb7a6bec2d68f5\",\"delta1\":{\"x\":142.8828125,\"y\":-57},\"delta2\":{\"x\":146.1171875,\"y\":45}}],\"summaries\":[{\"id\":\"a5e68e6a2ce1b648\",\"parent\":\"bd42e1d0163ebf04\",\"start\":0,\"end\":1,\"text\":\"summary\"},{\"id\":\"a5e6978f1bc69f4a\",\"parent\":\"bd4313fbac40284b\",\"start\":3,\"end\":5,\"text\":\"summary\"}],\"direction\":0,\"theme\":{\"name\":\"Dark\",\"type\":\"dark\",\"palette\":[\"#848FA0\",\"#748BE9\",\"#D2F9FE\",\"#4145A5\",\"#789AFA\",\"#706CF4\",\"#EF987F\",\"#775DD5\",\"#FCEECF\",\"#DA7FBC\"],\"cssVar\":{\"--main-color\":\"#ffffff\",\"--main-bgcolor\":\"#4c4f69\",\"--color\":\"#cccccc\",\"--bgcolor\":\"#252526\",\"--panel-color\":\"#ffffff\",\"--panel-bgcolor\":\"#2d3748\",\"--panel-border-color\":\"#696969\"}}}"}, {"noteId": "l3oB7tRnN0lu", "title": "To read", "type": "text", "mime": "text/html", "blobId": "IjE7JTD5XGPZV02yj6CV", "content": "

Checkout Kindle daily deals: https://www.amazon.com/gp/feature.html?docId=1000677541\n\n

\n "}, {"noteId": "lKw5CpJ2IlNh", "title": "Christmas shopping", "type": "text", "mime": "text/html", "blobId": "70zQ7qnXbUnlY4q4WYFb", "content": "

Bought a book!

"}, {"noteId": "lq5FhqEInunb", "title": "Trilium 사용 예제", "type": "text", "mime": "text/html", "blobId": "VBnouaiUx4s4tgD5Q2Cp", "content": "

TriliumNext에 오신 것을 환영합니다!

이 문서는 TriliumNext의 주요 기능과 노트 정리 방법을 소개하는 기본 예제입니다. 내용을 자유롭게 수정하고 노트 트리의 구성을 바꾸면서 기능을 익혀 보세요.

도움이 필요하면 TriliumNext 웹사이트를 방문해 주세요.

예제 노트 정리

기능을 충분히 익힌 뒤 예제 노트가 필요 없어지면 삭제해도 됩니다.

글자 서식

TriliumNext에서는 기울임과 굵게를 사용할 수 있습니다. 굵게와 기울임을 함께 적용할 수도 있습니다. 구글로 이동하는 링크처럼 웹페이지 링크도 추가할 수 있습니다.

목록

번호가 있는 목록

  1. 첫 번째 항목
  2. 두 번째 항목
    1. 첫 번째 하위 항목
      1. 하위 항목 안의 항목

번호가 없는 목록

  • 항목
  • 다른 항목
    • 하위 항목

인용문

말할 수 없는 것에 대해서는 침묵해야 한다.

— 루트비히 비트겐슈타인

다른 예제도 살펴보세요. 표와 체크리스트를 만들거나 강조 표시를 사용할 수 있습니다. 코드 블록과 수식 예제도 준비되어 있습니다.

"}, {"noteId": "m6DbuIecq3cC", "title": "Shopping", "type": "text", "mime": "text/html", "blobId": "z4PhNX7vuL3xVChQ1m2A", "content": ""}, {"noteId": "n2KASQVMuWnC", "title": "Tech", "type": "text", "mime": "text/html", "blobId": "9lCZckptTwyQDeJUgjFc", "content": "

Expand note on the left pane to see content.

"}, {"noteId": "n3hZeAiblhSb", "title": "Checkbox lists", "type": "text", "mime": "text/html", "blobId": "NlJvdaRZ4GxUqzYbchii", "content": "

Create easy TODO-lists with checkboxes:

\n
    \n
  • \n \n
  • \n
  • \n \n
  • \n
  • \n \n
  • \n
  • \n \n
  • \n
"}, {"noteId": "njPTYevnqFRO", "title": "JS code", "type": "code", "mime": "application/javascript;env=frontend", "blobId": "K6AfmlMJZjYAcnYXzsmW", "content": "async function getChartData() {\n const days = await api.runOnBackend(() => {\n const notes = api.getNotesWithLabel('weight');\n const days = [];\n\n for (const note of notes) {\n const date = note.getLabelValue('dateNote');\n const weight = parseFloat(note.getLabelValue('weight'));\n\n if (date && weight) {\n days.push({ date, weight });\n }\n }\n\n days.sort((a, b) => a.date > b.date ? 1 : -1);\n\n return days;\n });\n\n const datasets = [\n {\n label: \"Weight (kg)\",\n backgroundColor: 'red',\n borderColor: 'red',\n data: days.map(day => day.weight),\n fill: false,\n spanGaps: true,\n datalabels: {\n display: false\n },\n tension: 0.3\n }\n ];\n\n return {\n datasets: datasets,\n labels: days.map(day => day.date)\n };\n}\n\nconst ctx = api.$container.find(\"canvas\")[0].getContext(\"2d\");\n\nnew chartjs.Chart(ctx, {\n type: 'line',\n data: await getChartData()\n});"}, {"noteId": "oM6wDm49yd23", "title": "Class", "type": "mermaid", "mime": "text/plain", "blobId": "nJrBYqEZs1yQUpnTWarp", "content": "classDiagram\nClass01 <|-- AveryLongClass : Cool\n<> Class01\nClass09 --> C2 : Where am i?\nClass09 --* C3\nClass09 --|> Class07\nClass07 : equals()\nClass07 : Object[] elementData\nClass01 : size()\nClass01 : int chimp\nClass01 : int gorilla\nclass Class10 {\n <>\n int id\n size()\n}"}, {"noteId": "oWWhS6Zxh1X0", "title": "Implementation", "type": "text", "mime": "text/html", "blobId": "z4PhNX7vuL3xVChQ1m2A", "content": ""}, {"noteId": "oXNhaX3buExb", "title": "Attribute count", "type": "render", "mime": "", "blobId": "z4PhNX7vuL3xVChQ1m2A", "content": ""}, {"noteId": "p3CEnjWwfo63", "title": "Math", "type": "text", "mime": "text/html", "blobId": "5iprwpYVYJv4XgfHcQwG", "content": "

\\(% \\f is defined as #1f(#2) using the macro \\f\\relax{x} = \\int_{-\\infty}^\\infty     \\f\\hat\\xi\\,e^{2 \\pi i \\xi x}     \\,d\\xi\\)Some\n math examples:

\\[\\displaystyle \\frac{1}{\\Bigl(\\sqrt{\\phi \\sqrt{5}}-\\phi\\Bigr) e^{\\frac25 \\pi}} = 1+\\frac{e^{-2\\pi}} {1+\\frac{e^{-4\\pi}} {1+\\frac{e^{-6\\pi}} {1+\\frac{e^{-8\\pi}} {1+\\cdots} } } }\\]\n\n

Another:

\\[\\displaystyle \\left( \\sum_{k=1}^n a_k b_k \\right)^2 \\leq \\left( \\sum_{k=1}^n a_k^2 \\right) \\left( \\sum_{k=1}^n b_k^2 \\right)\\]\n\n

Inline math is also possible: \\(c^2 = a^2 + b^2\\) 

\n

 

"}, {"noteId": "p68DKjyZdguQ", "title": "06.jpeg", "type": "image", "mime": "image/jpg", "blobId": "DwpLxgSmPx4y90HIH4ZG", "content": null}, {"noteId": "qVHAltiMPMUN", "title": "Most linked notes", "type": "render", "mime": "", "blobId": "z4PhNX7vuL3xVChQ1m2A", "content": ""}, {"noteId": "qy0wOPghPWD4", "title": "Custom request handler", "type": "code", "mime": "application/javascript;env=backend", "blobId": "N6ymVYOXrEDhrtE2lS4o", "content": "return api.res.send(404);\n\n/**\n * To activate this demo, comment (or remove) the very first line of this code note. \n * This is deactivated because custom request handler like this one can be a security risk.\n * To test this, execute the following curl request: curl -X POST http://localhost:37740/custom/create-note -H \"Content-Type: application/json\" -d \"{ \\\"secret\\\": \\\"secret-password\\\", \\\"title\\\": \\\"hello\\\", \\\"content\\\": \\\"world\\\" }\"\n * (host and port might have to be adjusted based on your setup)\n *\n * See https://github.com/zadam/trilium/wiki/Custom-request-handler for details.\n */\n\nconst {req, res} = api;\nconst {secret, title, content} = req.body;\n\nif (req.method == 'POST' && secret === 'secret-password') {\n // notes must be saved somewhere in the tree hierarchy specified by a parent note. \n // This is defined by a relation from this code note to the \"target\" parent note\n // alternetively you can just use constant noteId for simplicity (get that from \"Note Info\" dialog of the desired parent note)\n const targetParentNoteId = api.currentNote.getRelationValue('targetNote');\n \n const {note} = api.createTextNote(targetParentNoteId, title, content);\n const notePojo = note.getPojo();\n\n res.status(201).json(notePojo);\n}\nelse {\n res.send(400);\n}"}, {"noteId": "rjbXo0acF0uE", "title": "task template", "type": "text", "mime": "text/html", "blobId": "z4PhNX7vuL3xVChQ1m2A", "content": ""}, {"noteId": "sDb5OldwTmv3", "title": "Flow (ELK)", "type": "mermaid", "mime": "text/mermaid", "blobId": "rNSlJerzJeOd0xhzXbR4", "content": "---\nconfig:\n layout: elk\n---\nflowchart LR\nA-->|\"Guarantee\"|B\nC-->|\"User attributes\"|B\nC-->|\"Master data\"|B\nC-->|\"Exchange Rate\"|B\nC-->|\"Profit Centers\"|B\nC-->|\"Vendor Partners\"|B\nC-->|\"Work Situation\"|B\nC-->|\"Customer\"|B\nC-->|\"Profit Centers\"|B\nB-->|\"Guarantee\"|C"}, {"noteId": "sQPGIENNVUoN", "title": "Note type count", "type": "render", "mime": "", "blobId": "z4PhNX7vuL3xVChQ1m2A", "content": ""}, {"noteId": "sWFc65eHBpNd", "title": "js", "type": "code", "mime": "application/javascript;env=frontend", "blobId": "xsMjnxsOLYdqNXujkoCL", "content": "const notes = await api.runOnBackend(() => {\n return api.sql.getRows(`\n SELECT\n notes.noteId,\n COUNT(attributes.attributeId) AS count\n FROM notes\n JOIN attributes ON attributes.value = notes.noteId\n WHERE notes.isDeleted = 0\n AND attributes.isDeleted = 0\n AND attributes.type = 'relation'\n GROUP BY notes.noteId\n ORDER BY count DESC\n LIMIT 100`);\n});\n\nconst $statsTable = api.$container.find('.stats-table');\n\nfor (const note of notes) { \n $statsTable.append(\n $(\"\")\n .append(\n $(\"\").append(await api.createLink(note.noteId, {showNotePath: true}))\n ) \n .append($(\"\").text(note.count))\n );\n}"}, {"noteId": "skZj4BUZgcwL", "title": "03.jpeg", "type": "image", "mime": "image/jpg", "blobId": "fYN8boc6lCqqCQ7YM7pD", "content": null}, {"noteId": "srjMqPozcvv5", "title": "2021", "type": "text", "mime": "text/html", "blobId": "z4PhNX7vuL3xVChQ1m2A", "content": ""}, {"noteId": "swKGGdlek7o6", "title": "The Last Question by Issac Asimov.pdf", "type": "file", "mime": "application/pdf", "blobId": "eX7fnhczYgNOecFfd7G0", "content": null}, {"noteId": "swUEVCpMucro", "title": "groceries", "type": "text", "mime": "text/html", "blobId": "z4PhNX7vuL3xVChQ1m2A", "content": ""}, {"noteId": "taQRHKuKv8Lt", "title": "08.jpeg", "type": "image", "mime": "image/jpg", "blobId": "tsbyX97lj7B0chKJHs5M", "content": null}, {"noteId": "tvhCqQ46phWm", "title": "The Last Question", "type": "text", "mime": "text/html", "blobId": "w2ffqrsYVvHQvZYayWR9", "content": "

\"The Last Question\" is a science fiction \n short storyby American writer Isaac Asimov.\n It first appeared in the November 1956 issue of Science Fiction Quarterly.

\n  \n

This page demonstrates two things:

\n "}, {"noteId": "uixDvTBXMvwV", "title": "Platform architecture", "type": "text", "mime": "text/html", "blobId": "iMZAzqDxNQDXtaLEVV8q", "content": "

Node.js brings event-driven programming to\n web servers, enabling development of fast web servers in JavaScript.\n [31]Developers can create scalable servers without using threading,\n by using a simplified model of event-driven programming that\n uses callbacks to signal the completion of a task.[31]\n\n

"}, {"noteId": "ujqZ4uU7U64d", "title": "Ubuntu", "type": "text", "mime": "text/html", "blobId": "9lCZckptTwyQDeJUgjFc", "content": "

Expand note on the left pane to see content.

"}, {"noteId": "ust9pSSDIS7U", "title": "Epics", "type": "text", "mime": "text/html", "blobId": "KPsf5uAipAOMgCTYs1Yf", "content": "

Epic is kind of medium-term events or projects spread over days or months.

\n

Remember that Trilium is all free form so you can organise your stuff\n in whatever way you'd like.

"}, {"noteId": "voQfouzPLIPf", "title": "28 - Tuesday", "type": "text", "mime": "text/html", "blobId": "U1PPY8I4vnZjNXmSyQaj", "content": "

TODO:

\n
    \n
  • \n \n
  • \n
"}, {"noteId": "w6PuTy73hxRz", "title": "History", "type": "text", "mime": "text/html", "blobId": "Ik1Hfh1Ucxju4YRyVpRY", "content": "

The history of Linux began in 1991 with the commencement\n of a personal project by Finnish student\n Linus Torvaldsto create a new free operating system kernel. Since\n then, the resulting Linux kernel has\n been marked by constant growth throughout its history. Since the initial\n release of its source code in\n 1991, it has grown from a small number of C files\n under a license prohibiting commercial distribution to the 4.2.3 version\n in 2015 with more than 18 million lines of source code under the GNU General Public License v2.

"}, {"noteId": "wMfqVDAPBoQm", "title": "Most cloned notes", "type": "render", "mime": "", "blobId": "z4PhNX7vuL3xVChQ1m2A", "content": ""}, {"noteId": "x8cwHV4VzO3D", "title": "Reviews", "type": "text", "mime": "text/html", "blobId": "z4PhNX7vuL3xVChQ1m2A", "content": ""}, {"noteId": "zDQ3GOIrRag6", "title": "Git", "type": "mermaid", "mime": "text/plain", "blobId": "tMQwo5fi3wLF1hbkI7WP", "content": " gitGraph\n commit\n commit\n branch develop\n commit\n commit\n commit\n checkout main\n commit\n commit"}, {"noteId": "zGVQehMPHobz", "title": "Meeting minutes", "type": "text", "mime": "text/html", "blobId": "zLgNGmmHtl5Moq6aX7DQ", "content": "

bla bla bla...

"}, {"noteId": "zThBuql7uVvh", "title": "Scripting examples", "type": "text", "mime": "text/html", "blobId": "z4PhNX7vuL3xVChQ1m2A", "content": ""}, {"noteId": "zkYzFhd6Ng4J", "title": "05.jpeg", "type": "image", "mime": "image/jpg", "blobId": "mSXzSnhVoN3du2GzrCYL", "content": null}]