# options

name: openNoteContexts
utcDateModified: 2025-03-02 17:52:20.823Z
value:
  [{"ntxId":"NMyWK4","mainNtxId":null,"notePath":"root/NLVTrl7bcB9z/JxBlPWuGObs6","hoistedNoteId":"root","active":true,"viewScope":{"viewMode":"default","tocPreviousVisible":false,"highlightsListPreviousVisible":false}}]


name: codeNotesMimeTypes
utcDateModified: 2025-03-02 14:55:38.248Z
value:
  ["text/x-csrc","text/x-c++src","text/x-csharp","text/css","text/x-go","text/x-groovy","text/x-haskell","text/html","message/http","text/x-java","application/javascript;env=frontend","application/javascript;env=backend","application/json","text/x-kotlin","text/x-markdown","text/x-perl","text/x-php","text/x-python","text/x-ruby",null,"text/x-sql","text/x-sqlite;schema=trilium","text/x-swift","text/xml","text/x-yaml"]


# blobs

blobId: 9Y7a7VLoiU6ojeM4TI4j
dateModified: 2025-03-02 16:55:38.418+0200
utcDateModified: 2025-03-02 14:55:38.418Z
content:
  <div>
         

        <div>
          <p>The <strong>history of Linux</strong> began in 1991 with the commencement
            of a personal project by <a href="https://en.wikipedia.org/wiki/Finland">Finnish</a> student
            <a href="https://en.wikipedia.org/wiki/Linus_Torvalds">Linus Torvalds</a>to create a new free operating system kernel. Since
              then, the resulting <a href="https://en.wikipedia.org/wiki/Linux_kernel">Linux kernel</a> has
              been marked by constant growth throughout its history. Since the initial
              release of its <a href="https://en.wikipedia.org/wiki/Source_code">source code</a> in
              1991, it has grown from a small number of <a href="https://en.wikipedia.org/wiki/C_Programming_Language">C</a> files
              under a license prohibiting commercial distribution to the 4.2.3 version
              in 2015 with more than 18 million lines of source code under the <a href="https://en.wikipedia.org/wiki/GNU_General_Public_License">GNU General Public License</a> v2.</p>
        </div>
      </div>


blobId: iRjU1OL6pNcskGzKnOTH
dateModified: 2025-03-02 16:55:38.668+0200
utcDateModified: 2025-03-02 14:55:38.668Z
content:
  // creating notes is backend (server) responsibility so we need to pass
  // the control there
  const taskNoteId = await api.runOnBackend(() => {
      const todoRootNote = api.getNoteWithLabel('taskTodoRoot');
      const resp = api.createTextNote(todoRootNote.noteId, 'new task', '');

      return resp.note.noteId;
  });

  // wait until the frontend is fully synced with the changes made on the backend above
  await api.waitUntilSynced();

  // we got an ID of newly created note and we want to immediatelly display it
  await api.activateNewNote(taskNoteId);


blobId: w67XXLJR6PCaPyVcRxXg
dateModified: 2025-03-02 16:55:38.428+0200
utcDateModified: 2025-03-02 14:55:38.428Z
content:
  <div>
         

        <div>
          <p><strong>Node.js</strong> is an <a href="https://en.wikipedia.org/wiki/Open-source_software">open-source</a>,
            <a href="https://en.wikipedia.org/wiki/Cross-platform">cross-platform</a>, <a href="https://en.wikipedia.org/wiki/JavaScript">JavaScript</a> 
              <a href="https://en.wikipedia.org/wiki/Runtime_system">runtime environment</a>that executes JavaScript code outside of a browser.
                Node.js lets developers use JavaScript to write command line tools and
                for <a href="https://en.wikipedia.org/wiki/Server-side_scripting">server-side scripting</a>—running
                scripts server-side to produce <a href="https://en.wikipedia.org/wiki/Dynamic_web_page">dynamic web page</a> content
                before the page is sent to the user's web browser. </p>
        </div>
      </div>


blobId: Wl0VabQrj4AT0a8Iscrj
dateModified: 2025-03-02 16:55:38.473+0200
utcDateModified: 2025-03-02 14:55:38.473Z
content:
  <div>
         

        <div>
          <blockquote>
            <p>highlght 1</p>
          </blockquote>
          <p>my comment</p>
        </div>
      </div>


blobId: 8XwgadsPmaX2SpwjboFQ
dateModified: 2025-03-02 16:55:38.664+0200
utcDateModified: 2025-03-02 14:55:38.664Z
content:
  if (!["task", "location", "tag", "todoDate", "doneDate"].includes(api.originEntity.name)) {
      return;
  }

  const tagRootNote = api.getNoteWithLabel('taskTagRoot');
  const doneRootNote = api.getNoteWithLabel('taskDoneRoot');
  const todoRootNote = api.getNoteWithLabel('taskTodoRoot');

  if (!tagRootNote || !doneRootNote || !todoRootNote) {
      console.log("One of the tagRootNote, doneRootNote or todoRootNote does not exist");
      return;
  }

  const note = api.originEntity.getNote();

  if (note.isDeleted) {
      return;
  }
      
  const attributes = note.getAttributes();

  const todoDate = note.getLabelValue('todoDate');
  const doneDate = note.getLabelValue('doneDate');

  function isWithinExpectedRange(date) {
      if (!date) {
          return true;
      }
      
      const year = parseInt(date.substr(0, 4));
      
      return year >= 2010 && year < 2050;
  }

  if (!isWithinExpectedRange(todoDate) || !isWithinExpectedRange(doneDate)) {
      console.log(`One or both dates - ${todoDate}, ${doneDate} - is outside of expected range`);
      
      return;
  }

  const isTaskDone = !!doneDate;

  api.toggleNoteInParent(isTaskDone, note.noteId, doneRootNote.noteId);
  api.toggleNoteInParent(!isTaskDone, note.noteId, todoRootNote.noteId);

  const location = note.getLabelValue('location');
  const locationRootNote = api.getNoteWithLabel('taskLocationRoot');

  reconcileAssignments(note, locationRootNote, location ? [location] : [], 'taskLocationNote', isTaskDone);

  const tags = attributes.filter(attr => attr.type === 'label' && attr.name === 'tag').map(attr => attr.value);

  reconcileAssignments(note, tagRootNote, tags, 'taskTagNote', isTaskDone);

  note.toggleLabel(isTaskDone, "cssClass", "done");

  const doneTargetNoteId = isTaskDone ?  api.getDayNote(doneDate).noteId : null;
  api.setNoteToParent(note.noteId, 'DONE', doneTargetNoteId);

  note.toggleLabel(!isTaskDone, "cssClass", "todo");

  const todoTargetNoteId = (!isTaskDone && todoDate) ? api.getDayNote(todoDate).noteId : null;
  api.setNoteToParent(note.noteId, 'TODO', todoTargetNoteId);


blobId: i60MtR9KeJlB68ftEBin
dateModified: 2025-03-02 16:55:38.413+0200
utcDateModified: 2025-03-02 14:55:38.413Z
content:
  <div>
         

        <div>
          <p>TODO:</p>
          <ul>
            <li>
              <label class="todo-list__label">
                <input class="todo-list__label__checkmark" type="checkbox" disabled="disabled" />
              </label>
            </li>
          </ul>
        </div>
      </div>


blobId: OFM2D8oTSdXQEH60OsHQ
dateModified: 2025-03-02 16:55:38.431+0200
utcDateModified: 2025-03-02 14:55:38.431Z
content:
  <div>
         

        <div>
          <p>Node.js was written initially by <a href="https://en.wikipedia.org/wiki/Ryan_Dahl">Ryan Dahl</a> in
            2009,<a href="https://en.wikipedia.org/wiki/Node.js#cite_note-training.com-24">[24]</a> about
            thirteen years after the introduction of the first server-side JavaScript
            environment, Netscape's LiveWire Pro Web.<a href="https://en.wikipedia.org/wiki/Node.js#cite_note-25">[25]</a> The
            initial release supported only Linux and Mac OS X. Its development and
            maintenance was led by Dahl and later sponsored by <a href="https://en.wikipedia.org/wiki/Joyent">Joyent</a>.
            <a href="https://en.wikipedia.org/wiki/Node.js#cite_note-Google_Groups_post_by_Ryan_Dahl_about_Joyent-26">[26]</a>
          </p>
        </div>
      </div>


blobId: UlkCBBA2qdeZsMiipja4
dateModified: 2025-03-02 16:55:38.432+0200
utcDateModified: 2025-03-02 14:55:38.432Z
content:
  <div>
         

        <div>
          <p>Node.js brings <a href="https://en.wikipedia.org/wiki/Event-driven_programming">event-driven programming</a> to
            <a href="https://en.wikipedia.org/wiki/Web_server">web servers</a>, enabling development of fast web servers in JavaScript.
              <a href="https://en.wikipedia.org/wiki/Node.js#cite_note-b1-31">[31]</a>Developers can create scalable servers without using <a href="https://en.wikipedia.org/wiki/Thread_(computing)">threading</a>,
                by using a simplified model of <a href="https://en.wikipedia.org/wiki/Event-driven_programming">event-driven programming</a> that
                uses callbacks to signal the completion of a task.<a href="https://en.wikipedia.org/wiki/Node.js#cite_note-b1-31">[31]</a>

          </p>
        </div>
      </div>


blobId: l6gM0gVsfwxoMiYT2J6m
dateModified: 2025-03-02 16:55:38.493+0200
utcDateModified: 2025-03-02 14:55:38.493Z
content:
  <div style="padding: 20px">
      <strong>See explanation <a href="https://github.com/zadam/trilium/wiki/Weight-tracker" target="_blank">here</a></strong>.

      <canvas></canvas>
  </div>


blobId: 4QdB1DaryIf89Yk5B5nw
dateModified: 2025-03-02 16:55:38.665+0200
utcDateModified: 2025-03-02 14:55:38.665Z
content:
  module.exports = function (note, categoryRootNote, assignedCategories, labelName, isTaskDone) {
      const found = {};
      
      for (const categoryNote of categoryRootNote.getChildNotes()) {
          const label = categoryNote.getLabel(labelName);
          
          if (label) {
              found[label.value] = !isTaskDone && assignedCategories.includes(label.value);

              api.toggleNoteInParent(found[label.value], note.noteId, categoryNote.noteId);
          }
      }
      
      if (!isTaskDone) {
          for (const assignedCategory of assignedCategories) {
              if (!found[assignedCategory]) {
                  const categoryNote = api.createTextNote(categoryRootNote.noteId, assignedCategory, "").note;
                  
                  categoryNote.addLabel(labelName, assignedCategory);

                  api.ensureNoteIsPresentInParent(note.noteId, categoryNote.noteId);
              }
          }
      }
  }


blobId: H8r67nNz01CeCVsxdczT
dateModified: 2025-03-02 16:55:38.307+0200
utcDateModified: 2025-03-02 14:55:38.307Z
content:
  <div>
         

        <div>
          <p>Create easy TODO-lists with checkboxes:</p>
          <ul class="todo-list">
            <li>
              <label class="todo-list__label">
                <input type="checkbox" disabled="disabled" /><span class="todo-list__label__description">buy milk   </span>

              </label>
            </li>
            <li>
              <label class="todo-list__label">
                <input type="checkbox" disabled="disabled" /><span class="todo-list__label__description">do the laundry   </span>

              </label>
            </li>
            <li>
              <label class="todo-list__label">
                <input type="checkbox" disabled="disabled" /><span class="todo-list__label__description">watch TV   </span>

              </label>
            </li>
            <li>
              <label class="todo-list__label">
                <input type="checkbox" disabled="disabled" /><span class="todo-list__label__description">eat ice cream   </span>

              </label>
            </li>
          </ul>
        </div>
      </div>


blobId: 7LwC82DSaX6EzM71r2fO
dateModified: 2025-03-02 16:55:38.424+0200
utcDateModified: 2025-03-02 14:55:38.424Z
content:
  <div>
         

        <div>
          <ul>
            <li>Hold Super - Invoke the Launcher and display the shortcuts</li>
            <li>Hold Super, then press 1 or 2 or 3 and so on until 0 to open or focus
              an application. The number corresponds to the location of the icon on the
              launcher from top to bottom.
              <ul>
                <li>Adding Shift will open a new instance of the application if it's already
                  open.</li>
                <li>Holding the key is also useful when you want to get to the Launcher but
                  do not want to invoke the Dash.</li>
              </ul>
            </li>
            <li>Super + T - Open the rubbish bin/trash can.</li>
            <li>Alt + F1 - Put keyboard focus on the Launcher, use arrow keys to navigate,
              Enter launches an application, Right arrow exposes the quicklists if an
              application has them.</li>
            <li>Ctrl + Alt + T - Launch a terminal window.</li>
          </ul>
        </div>
      </div>


blobId: PmOKLSjVwh5eyju79d6S
dateModified: 2025-03-02 16:55:38.506+0200
utcDateModified: 2025-03-02 14:55:38.506Z
content:
  <div style="padding: 20px">
      <canvas class="stats-canvas" style="width: 500px; margin: auto;"></canvas>

      <br/>

      <table class="table stats-table" style="font-size: 90%;">
          <tr>
              <th>Attribute name</th>
              <th>Count</th>
          </tr>
      </table>
  </div>


blobId: P9fjHrjIKcaQXup4HomR
dateModified: 2025-03-02 16:55:38.674+0200
utcDateModified: 2025-03-02 14:55:38.674Z
content:
  // will add a launcher to the left sidebar
  api.createOrUpdateLauncher({
      id: 'taskmanager',
      type: 'script',
      title: 'New task',
      icon: 'bx-task',
      keyboardShortcut: 'alt+n',
      scriptNoteId: api.currentNote.getRelationValue('createNewTask'),
      isVisible: true
  });


blobId: AcELC5jAJlZnnm5vYmkL
dateModified: 2025-03-02 16:55:38.434+0200
utcDateModified: 2025-03-02 14:55:38.434Z
content:
  <div>
         

        <div>
          <p>New major releases of Node.js are cut from the <a href="https://en.wikipedia.org/wiki/GitHub">GitHub</a> master
            branch every six months. Even-numbered versions are cut in April and odd-numbered
            versions are cut in October. When a new odd version is released, the previous
            even version undergoes transition to Long Term Support (LTS), which gives
            that version 18 months of active support from the date it is designated
            LTS.</p>
        </div>
      </div>


blobId: OvGJ3FnYn9U1yszY5ZYc
dateModified: 2025-03-02 16:55:38.676+0200
utcDateModified: 2025-03-02 14:55:38.676Z
content:
  {"_meta":"This note has type `canvas`. It uses excalidraw and stores an exported svg alongside.","elements":[{"type":"rectangle","version":173,"versionNonce":2105180988,"isDeleted":false,"id":"Nx_6ACJaaueNh0fTsVZeh","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":10,"y":7,"strokeColor":"#000000","backgroundColor":"#fa5252","width":247,"height":138,"seed":679323330,"groupIds":[],"strokeSharpness":"sharp","boundElements":[],"updated":1655641371094,"link":null},{"type":"arrow","version":142,"versionNonce":265248388,"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":1655641371094,"link":null,"lastCommittedPoint":null,"startArrowhead":null,"endArrowhead":"arrow","points":[[0,0],[289,46]]},{"type":"ellipse","version":162,"versionNonce":507427772,"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":1655641371094,"link":null},{"type":"text","version":201,"versionNonce":1994976772,"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":69,"height":32,"seed":317664926,"groupIds":[],"strokeSharpness":"sharp","boundElements":[],"updated":1655641371094,"link":null,"fontSize":20,"fontFamily":1,"text":"convert","baseline":23,"textAlign":"left","verticalAlign":"top","containerId":null,"originalText":"convert"},{"type":"diamond","version":139,"versionNonce":2062017596,"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":1655641371094,"link":null},{"type":"line","version":202,"versionNonce":1931775364,"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":1655641371094,"link":null,"lastCommittedPoint":null,"startArrowhead":null,"endArrowhead":null,"points":[[0,0],[124,113]]},{"type":"rectangle","version":182,"versionNonce":693632188,"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":1655641371094,"link":null},{"type":"text","version":311,"versionNonce":901790980,"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":54,"height":96,"seed":146698370,"groupIds":[],"strokeSharpness":"sharp","boundElements":[],"updated":1655641371094,"link":null,"fontSize":20,"fontFamily":1,"text":"List :\n- one\n- two","baseline":87,"textAlign":"left","verticalAlign":"top","containerId":null,"originalText":"List :\n- one\n- two"},{"type":"diamond","version":220,"versionNonce":858850620,"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":1655641371094,"link":null},{"type":"rectangle","version":277,"versionNonce":406453380,"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":1655641371095,"link":null},{"type":"diamond","version":362,"versionNonce":500497852,"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":1655641371095,"link":null},{"type":"rectangle","version":518,"versionNonce":340773892,"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":1655641371095,"link":null},{"type":"line","version":166,"versionNonce":1610279598,"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":1655641371095,"link":null,"lastCommittedPoint":null,"startArrowhead":null,"endArrowhead":null,"points":[[0,0],[2,16],[12,40],[20,51],[36,64],[71,80]]},{"type":"line","version":175,"versionNonce":1006611332,"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":1655641371095,"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]]},{"type":"rectangle","version":467,"versionNonce":1170587324,"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":1655641371095,"link":null},{"type":"diamond","version":459,"versionNonce":830970628,"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":1655641371095,"link":null},{"type":"text","version":189,"versionNonce":1083606844,"isDeleted":false,"id":"FExeJRXagFlMKEpW4ApvL","fillStyle":"cross-hatch","strokeWidth":1,"strokeStyle":"dotted","roughness":1,"opacity":100,"angle":5.9094584872140326,"x":36.5,"y":381,"strokeColor":"#d9480f","backgroundColor":"#4c6ef5","width":137,"height":32,"seed":152285754,"groupIds":[],"strokeSharpness":"sharp","boundElements":[],"updated":1655641371095,"link":null,"fontSize":20,"fontFamily":2,"text":"Rotated text","baseline":23,"textAlign":"left","verticalAlign":"top","containerId":null,"originalText":"Rotated text"},{"type":"arrow","version":363,"versionNonce":526752388,"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":1655641371095,"link":null,"lastCommittedPoint":null,"startArrowhead":null,"endArrowhead":"arrow","points":[[0,0],[-78.65765511649664,75.30428366219626]]},{"type":"text","version":179,"versionNonce":658128828,"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":129,"height":24,"seed":1839996922,"groupIds":[],"strokeSharpness":"sharp","boundElements":[],"updated":1655641371095,"link":null,"fontSize":20,"fontFamily":3,"text":"> some code","baseline":19,"textAlign":"left","verticalAlign":"top","containerId":null,"originalText":"> some code"},{"type":"text","version":505,"versionNonce":811051524,"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":168.72131147540975,"height":62,"seed":168503609,"groupIds":[],"strokeSharpness":"sharp","boundElements":[],"updated":1655641371095,"link":null,"fontSize":39.25486991656494,"fontFamily":1,"text":"Big text","baseline":45,"textAlign":"left","verticalAlign":"top","containerId":null,"originalText":"Big text"},{"type":"ellipse","version":305,"versionNonce":1795300462,"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":1655641371095,"link":null}],"appState":{"theme":"dark","collaborators":[],"currentChartType":"bar","currentItemBackgroundColor":"transparent","currentItemEndArrowhead":"arrow","currentItemFillStyle":"hachure","currentItemFontFamily":1,"currentItemFontSize":20,"currentItemLinearStrokeSharpness":"round","currentItemOpacity":100,"currentItemRoughness":1,"currentItemStartArrowhead":null,"currentItemStrokeColor":"#000000","currentItemStrokeSharpness":"sharp","currentItemStrokeStyle":"solid","currentItemStrokeWidth":1,"currentItemTextAlign":"left","cursorButton":"up","draggingElement":null,"editingElement":null,"editingGroupId":null,"editingLinearElement":null,"elementLocked":false,"elementType":"selection","penMode":false,"penDetected":false,"errorMessage":null,"exportBackground":true,"exportScale":1,"exportEmbedScene":false,"exportWithDarkMode":false,"fileHandle":{},"gridSize":null,"isBindingEnabled":true,"isLibraryOpen":false,"isLoading":false,"isResizing":false,"isRotating":false,"lastPointerDownWith":"mouse","multiElement":null,"name":"Untitled-2022-06-19-1420","openMenu":null,"openPopup":null,"pasteDialog":{"shown":false,"data":null},"previousSelectedElementIds":{"aBr6bncsx1T8wxNE1edr4":true},"resizingElement":null,"scrolledOutside":false,"scrollX":255.921875,"scrollY":295.91526179206426,"selectedElementIds":{"QJWb4BT-nZ_d18QAS7YmF":true},"selectedGroupIds":{},"selectionElement":null,"shouldCacheIgnoreZoom":false,"showHelpDialog":false,"showStats":false,"startBoundElement":null,"suggestedBindings":[],"toastMessage":null,"viewBackgroundColor":"#FFFFFF","zenModeEnabled":false,"zoom":{"value":1},"viewModeEnabled":false,"pendingImageElement":null,"showHyperlinkPopup":false,"offsetLeft":443.15625,"offsetTop":131,"width":1165.84375,"height":1069},"files":{},"svg":"<svg version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 644 473.16947641587154\" width=\"644\" height=\"473.16947641587154\">\n  <!-- svg-source:excalidraw -->\n  \n  <defs>\n    <style>\n      @font-face {\n        font-family: \"Virgil\";\n        src: url(\"http://127.0.0.1:37740/node_modules/@excalidraw/excalidraw/dist/excalidraw-assets/Virgil.woff2\");\n      }\n      @font-face {\n        font-family: \"Cascadia\";\n        src: url(\"http://127.0.0.1:37740/node_modules/@excalidraw/excalidraw/dist/excalidraw-assets/Cascadia.woff2\");\n      }\n    </style>\n  </defs>\n  <rect x=\"0\" y=\"0\" width=\"644\" height=\"473.16947641587154\" fill=\"#FFFFFF\"></rect><g stroke-linecap=\"round\" transform=\"translate(5 5) rotate(0 123.5 69)\"><path d=\"M0 0 C0 0, 0 0, 0 0 M0 0 C0 0, 0 0, 0 0 M0.43 6.82 C1.99 4.49, 2.76 1.71, 5.17 0.12 M0.14 6.59 C0.93 5.29, 2.45 3.43, 4.88 0.12 M1.14 10.57 C3.02 7.35, 9.66 3.52, 11.02 -1.61 M0.06 12.02 C3.26 9.26, 6.29 5.78, 10.44 -0.59 M1.79 19.55 C5.1 13.08, 6.49 9.67, 15.08 0.1 M-0.33 18.28 C4.9 12.72, 8.71 7.49, 15.26 0.62 M0.54 24.73 C3.25 17.38, 10.37 12.88, 20.05 0.5 M-0.43 24.61 C8.16 14.97, 17.08 6.32, 20.68 -0.19 M0.86 29.59 C5.57 23.14, 12.81 15.85, 27.7 0.62 M-0.81 30.55 C10.3 18.55, 20 7.31, 25.7 0.23 M0.48 36.69 C8.02 25.56, 18.03 14.62, 32.54 0.27 M-1.24 37.31 C11.43 21.36, 24.69 8.9, 31.02 -0.98 M-1.67 42.99 C11.54 29.88, 17.28 19.11, 37.25 0.98 M0.01 42.3 C7.85 32.33, 17.51 24.33, 36.38 -0.67 M1.2 47.45 C11.75 35.15, 26.41 20, 42.57 1.42 M-1.11 49.73 C15.05 32.19, 29.39 14.43, 42.51 0.67 M0.93 55.12 C10.97 41.71, 18.4 31.07, 46.7 0.75 M0.84 53.65 C13.67 38.15, 27.49 21.69, 46.59 1.21 M1.8 60.59 C15.78 42.63, 28.36 23.41, 51.15 -1.99 M0.23 60.28 C18.22 37.36, 37.6 16.17, 52.18 0.06 M-2.23 68.04 C11.18 52.82, 24.8 41.59, 60.13 -0.54 M-0.33 67.04 C21.43 40.09, 44.72 14.23, 58.62 -0.34 M-0.91 74.9 C20.14 52.41, 39.25 31.07, 62.39 -1.99 M0.69 73.15 C13.26 57.75, 25.98 43.94, 63.03 0.01 M-1 79.47 C12.99 63.19, 28.31 45.32, 70.65 0.56 M0.46 80.16 C16.64 58.54, 34.69 38.03, 69.71 1.04 M-1.06 85.06 C27.21 51.07, 56.56 23.39, 75.43 -0.64 M1.12 85.04 C20.76 62.45, 42.72 38.69, 74.06 -1.12 M-0.12 91.34 C21.21 67.1, 45.61 41.3, 80.45 -0.56 M-0.84 90.49 C18.35 68.63, 35.95 47.24, 80.06 0.22 M-0.38 98.49 C27.97 62.76, 61.3 29.63, 84.49 -2.08 M0.72 97.97 C20.38 74.46, 42.41 48.91, 84.2 0.57 M-0.63 102.77 C37.14 61.91, 73.33 21.16, 88.78 -0.56 M0.33 104.3 C33.82 66.24, 67.04 26.35, 90.87 0.6 M-1.54 108.25 C28.5 77.23, 54.9 45.64, 94.85 -0.52 M-0.4 110.21 C21.57 83.29, 44.97 55.71, 96.37 0.48 M-0.5 114.8 C22.4 88.85, 42.52 63.15, 99.94 -0.19 M0.52 115.39 C29.8 80.37, 58.94 46.31, 100.28 0.12 M-0.16 121.61 C41.77 73.64, 83.01 23.9, 106.85 -0.21 M0.88 122.82 C22.43 95.75, 45.9 70.07, 105.45 -0.43 M0.7 127.18 C33.87 89.52, 66.93 53.52, 111.31 -0.22 M-0.42 127.83 C40.57 82, 80.97 35.1, 111.41 -0.75 M1.9 133.04 C38.72 90.23, 74.23 48.07, 115.23 1.27 M-0.7 134.64 C24.96 106.64, 50.35 78.54, 115.64 1.08 M1.76 137.81 C38.34 97.94, 73.1 57.24, 121.33 -1.52 M0.6 139.47 C41.98 92.15, 82.99 47.34, 122.34 -1.02 M5.71 138.13 C41.4 98.1, 77.71 56.36, 127.78 2.03 M6.49 138.26 C41.29 98.69, 77 57.25, 127.08 -0.49 M13.09 137.26 C56.5 90.25, 100.43 39.01, 133.48 -1 M11.27 138.39 C43.25 102.88, 73.78 66.01, 132.14 0.85 M18.23 140.72 C57.2 90.92, 100.34 43.77, 137.37 0.37 M17.8 139.09 C40.51 110.12, 65.41 82, 137.9 1.17 M23.8 136.88 C62.87 90.83, 106.11 44.4, 144.33 0.34 M22.8 139.07 C69.23 85.85, 114.87 34.58, 142.82 -1.09 M28.16 140.37 C59.95 100.66, 89.14 65.58, 148.58 -0.23 M28.3 138.84 C65.18 95.35, 103.19 52.31, 148.86 1.13 M31.23 139.42 C82.85 86.5, 129.25 29.33, 155.5 1.48 M33.58 138.98 C68.15 100.46, 102.68 61.02, 153.39 -0.24 M37.87 139.28 C76.08 95.75, 112.16 54.12, 157.07 1.67 M38.6 138.5 C70.84 102.05, 104.82 62.75, 158.68 0 M43.78 137.54 C88.01 92.58, 128.6 42.31, 165.68 1.3 M43.96 139.09 C79.97 96.26, 117.32 53.87, 163.8 0.53 M46.81 139.59 C85.18 100.55, 115.93 59.64, 169.56 1.43 M48.3 139.54 C93.89 87.69, 139.46 35.98, 170.07 -0.09 M52.91 137.88 C95.62 88.71, 138.42 36.93, 174.62 -1.37 M54.27 137.92 C96.71 91.15, 137.94 45.06, 174.99 -1.14 M59.46 139.39 C104.03 86.73, 154.08 30.55, 179.83 0.34 M59.95 140.01 C101.19 91.35, 143.72 43.26, 179.69 0.55 M65.16 136.96 C94.71 103.84, 126.13 72.23, 187.11 0.24 M64.79 139.52 C92.75 107.02, 121.46 74.03, 184.85 -1.06 M69.39 140.69 C99.08 101.63, 131.12 68.76, 188.71 1.64 M69.07 138.46 C117.84 85.74, 164.17 29.52, 190.17 1.1 M74.12 137.28 C119.81 89.83, 162.65 39.11, 197.04 0.84 M75.79 139.45 C122.46 85.24, 170.53 31.9, 196.26 -0.51 M79.22 137.46 C115.13 97.16, 148.1 60, 200.1 -1.49 M80.16 137.99 C125.1 86.56, 170.62 35.84, 202.12 0.3 M83.77 140.03 C122.03 96.75, 160.8 50.11, 207.34 -0.93 M84.84 139.58 C129.15 91.21, 171.73 44.13, 207.05 -0.24 M92.64 139.57 C125.12 100.95, 155.39 63.53, 212.99 2.06 M90.68 138.22 C136 87.71, 182.25 35.39, 212.1 0.42 M95.16 138.05 C127.3 102.46, 157.53 67.33, 218 1.51 M95.44 139.05 C123.73 109.95, 150.27 78.9, 218.02 -0.48 M102.38 140.88 C127.02 106.85, 154.18 75.48, 221.38 1.34 M101.06 139.31 C143.88 88.75, 187.81 40.36, 222.67 -0.74 M106.4 140.39 C152.42 86.37, 199.2 33.97, 230.09 -1.31 M107.11 138.77 C139 104.76, 169.65 67.29, 228.96 -0.9 M114.27 139.13 C155.51 92.52, 196.11 42.45, 234.39 -0.67 M112.7 137.94 C153.26 91.55, 194.62 42.89, 232.32 0.13 M119.34 137.3 C147.02 105.56, 177.28 71.55, 237.07 1.8 M117.97 138.45 C150.12 98.49, 184.12 61.82, 237.95 0.08 M123.16 140.05 C150.61 111.42, 175.36 80.59, 244.14 0.97 M123.97 139.33 C168.32 87.95, 215.09 34.7, 243.54 -0.1 M126.87 140.94 C156.67 105.25, 186.33 70.13, 246.79 0.5 M128.14 139.32 C156.9 105.32, 186.52 71.49, 247.35 1.09 M133.01 137.27 C160.28 105.64, 186.72 75.8, 247.31 8.66 M134.21 139.22 C177.01 87.16, 222.15 37.22, 248.21 6.5 M136.96 137.44 C171.31 102.12, 203.04 63.17, 249.64 12.43 M139.68 140.15 C168.28 103.81, 199.41 70.79, 248.02 13.34 M144.8 140.37 C184.29 92.21, 225.6 43.49, 248.8 20.18 M143.72 137.9 C178.81 99.81, 214.07 59.81, 247.37 18.84 M148.65 138.84 C170.94 113.77, 191.52 88.35, 248.78 24.53 M148.64 139.23 C172.24 112.99, 195.9 86.67, 249.43 25.97 M156.59 138.88 C179.27 108.61, 203.61 81.96, 249.88 29.74 M155.78 138.18 C177.71 112.77, 201.95 86.65, 247.35 31.83 M160.02 139.13 C185.99 109.21, 213.6 76.05, 245.92 39.78 M159.02 138.39 C188.43 104.34, 219.56 68.7, 247.56 38.68 M167.51 138.24 C185.61 112.9, 208.6 89.27, 246.95 42.02 M166.64 139.4 C198.5 102.25, 231.21 65, 248.49 44.47 M172.22 138.23 C202.13 102.92, 232.72 67.6, 249.82 50.81 M170.8 138.98 C200.96 103.43, 229.77 69.7, 247.29 49.46 M177.74 139.86 C200.17 109.95, 221.73 84.22, 247.48 55.62 M175.49 139.43 C198.79 113.8, 219.64 87.7, 249.12 55.26 M181.48 138.01 C207.21 113.09, 230.69 85.57, 248.31 60.44 M181.93 139.9 C200.73 116.12, 220.93 93.71, 248.54 61.11 M188.53 137.06 C199.87 120.59, 218.4 105.13, 249.35 67.86 M186.54 138.68 C208.03 113.51, 230.07 88.11, 248.87 69 M191.06 138.26 C203.98 127.2, 216 112.71, 246.96 74.7 M192.33 139.57 C210.39 116.34, 231.21 93.31, 248.83 74.18 M198.18 139.11 C206.54 126.65, 219.17 114.57, 247.46 79.7 M196.91 138.09 C208.34 127.2, 217.61 115.73, 247.31 79.77 M203.31 140.73 C212.55 127.32, 222.12 112.63, 248.37 87.55 M201.88 139.93 C220.65 118.91, 237.47 98.26, 248.65 85.77 M209.42 139.97 C220.87 122.66, 237.63 106.78, 249.79 92.34 M208.09 139.87 C220.56 124.75, 232.22 110.58, 248.02 93.42 M211.64 137.08 C221.7 127.86, 230.77 118.25, 247.59 97.64 M212.42 138.47 C226.81 124.52, 240.2 109.29, 248.8 98.25 M219.98 139.28 C226.85 128.01, 235.19 120.2, 248.08 104.13 M218.46 138.52 C225.49 131.67, 231.96 123.54, 249.19 104.6 M224.51 136.93 C229.99 129.14, 239.98 123.43, 246.67 109.27 M223.79 138.2 C230.46 130.04, 237.31 122.2, 249.03 110.26 M230.72 138.88 C236.96 132.46, 242.02 122.21, 249.1 115.37 M229.43 139.32 C234.17 130.86, 242.51 124.03, 248.99 117.47 M233.44 139.83 C237.39 136.47, 238.74 130.72, 246.77 124.99 M233.78 139.67 C237.09 134.86, 239.37 131.95, 248.09 123.26 M239.91 139.57 C243.18 136.92, 245.03 133.76, 246.69 129.17 M239.8 139.29 C241.78 135.95, 244.74 133.98, 248.56 128.81 M245.04 138.92 C246.34 138.22, 247.18 136.8, 247.93 134.9 M244.81 138.85 C246.13 137.62, 247.67 136.04, 248.32 134.89\" stroke=\"#fa5252\" stroke-width=\"0.5\" fill=\"none\"></path><path d=\"M1.64 0.64 C89.59 1.06, 175.16 1.91, 248.04 1.63 M0.45 -0.7 C67.24 2.23, 135.09 1.1, 247.03 0.8 M245.32 -1.22 C245.94 27.3, 245.62 58.08, 247.94 138.36 M247.03 -0.45 C245.18 41.67, 245.51 83.42, 246.07 137.48 M245.48 137.4 C168.29 137.34, 88.76 139.58, -1.61 136.37 M246.24 137.24 C185.4 135.63, 123.65 136.45, 0.19 138.65 M-0.29 137.47 C-0.75 86.95, -0.57 40.13, -0.46 -0.48 M0 138.89 C1.44 95.02, 0.8 52.45, 0.34 -0.98\" stroke=\"#000000\" stroke-width=\"1\" fill=\"none\"></path></g><g stroke-linecap=\"round\"><g transform=\"translate(211 65) rotate(0 144.5 23)\"><path d=\"M0.54 0.04 C48.62 7.67, 240.34 37.39, 288.46 44.94 M-0.63 -0.98 C47.24 6.83, 239.02 38.04, 287.22 45.92\" stroke=\"#000000\" stroke-width=\"1\" fill=\"none\"></path></g><g transform=\"translate(211 65) rotate(0 144.5 23)\"><path d=\"M257.82 50.61 C264.88 50.11, 274.41 48.98, 285.37 44.89 M256.82 51.15 C267.95 48.6, 277.62 48.16, 286.24 44.93\" stroke=\"#000000\" stroke-width=\"1\" fill=\"none\"></path></g><g transform=\"translate(211 65) rotate(0 144.5 23)\"><path d=\"M261.12 30.35 C267.05 35.96, 275.59 40.92, 285.37 44.89 M260.13 30.89 C270.05 34.91, 278.66 41.01, 286.24 44.93\" stroke=\"#000000\" stroke-width=\"1\" fill=\"none\"></path></g></g><g stroke-linecap=\"round\" transform=\"translate(436 29) rotate(0 101.5 95.5)\"><path d=\"M19.16 40.5 C19.16 40.5, 19.16 40.5, 19.16 40.5 M19.16 40.5 C19.16 40.5, 19.16 40.5, 19.16 40.5 M12.9 53.85 C23.75 39.83, 34.67 28.67, 44.49 13.25 M10.94 54.23 C20.58 44.81, 27.53 36.38, 47.31 15.55 M4.62 69.17 C16.94 58.41, 24.6 45.04, 53.29 11 M4.1 69.43 C18.97 52.79, 35.17 35.22, 54.77 11.72 M5.24 74.47 C27.23 49.56, 47.08 25.88, 61.47 11.09 M4.19 75.32 C24.17 52.41, 44.43 30.06, 62.55 9.91 M2.84 80.05 C29.91 55.04, 52.79 23.02, 68.4 6.47 M5.26 81.19 C29.42 51.95, 55.82 23.92, 68.55 7.57 M3.17 86.95 C26.59 66.5, 44.41 39.23, 76.92 6.04 M3.76 88.69 C20.55 70.14, 36.42 51.84, 77.34 4.28 M5.15 94.39 C30.16 63.48, 54.94 37.91, 83.41 2.5 M4.98 93.34 C27.91 65.34, 52.83 37.58, 85.13 1.67 M3.59 99.44 C25.65 73.07, 47.73 50.32, 89.9 3.02 M4.69 100.24 C36.08 60.9, 69.55 22.29, 90.79 2.17 M2.52 105.08 C38.79 65.92, 74.5 24.2, 93.24 0.3 M3.41 106.23 C27.22 81.94, 49.88 55.6, 96.02 2.05 M1.93 111.89 C41.25 68.92, 80.77 24.96, 100.69 0.5 M4.1 113.58 C30.34 83.47, 54.57 52.71, 99.82 1.52 M5.78 115.59 C26.68 92.29, 47.3 66.95, 103.88 3.09 M5.12 117.66 C45.49 71.64, 85.4 27.1, 105.41 2.58 M5.46 122.51 C43.08 78.16, 85.37 33.76, 112.16 0.99 M6.58 120.46 C45.13 80.06, 82.02 36.55, 110.52 1.24 M7.07 127.42 C39.63 91.76, 68.57 53.06, 116.02 3.42 M8.61 126.43 C46.77 83.8, 83.51 40.05, 115.76 2.42 M10.84 128.4 C51.43 81.74, 96.44 34.9, 122.46 2.83 M9.69 129.45 C42.45 94.11, 72.52 56.89, 120.88 2.95 M12.49 135.45 C43.28 98.01, 70.24 65.23, 127.67 3.69 M12.95 133.55 C46.02 96.94, 76.79 59.51, 126.44 2.44 M12.63 139.16 C38.19 105.18, 67.91 77.62, 129.08 4.69 M14.49 137.55 C55.15 92.19, 94.73 46.48, 128.78 5.53 M14.08 143.32 C61.4 87.59, 109.2 37.69, 131.4 6.57 M15.69 141.76 C61.85 88.41, 108.68 35.57, 132.99 7.75 M18.66 146.26 C66.1 90.39, 112.04 36.36, 139.34 9.51 M16.89 147.46 C60.23 96.78, 104.45 46.75, 136.57 9.03 M20.44 148.99 C47.71 117.78, 72.37 84.42, 141 8.04 M19.59 149 C49.86 115.13, 80.92 79.03, 141.78 10.61 M23.29 152.89 C48.64 123.76, 77.02 89.41, 145.22 11.09 M22.94 151.59 C48.24 120.98, 76.12 89.82, 143.85 11.24 M24.13 157.49 C65.79 112.35, 102.11 67.52, 148.29 13.68 M25.93 155.17 C54.69 121.91, 83.37 87.68, 148.74 12.83 M26.95 156.4 C63.53 119.28, 97.52 77.59, 152.64 16.01 M28.35 158.37 C71.36 109.97, 113.43 62.51, 152.71 15.67 M32.31 162.42 C72.63 116, 112.28 66.97, 157.62 15.1 M31.19 161.68 C70.77 115.73, 111.1 68.86, 156 16.13 M32.59 165.91 C81.41 107.73, 131.51 53.85, 160.78 16.92 M32.93 163.91 C83.67 104.62, 133.08 47.46, 159.13 18.81 M35.44 165.18 C72.71 121.83, 111.69 81.43, 164 20.75 M35.77 166.62 C69.83 129.17, 104.49 89.63, 163.9 21 M41.11 167.6 C72.76 132.7, 102.71 93.07, 165.46 24.8 M40.05 169.3 C88.06 111.95, 139.16 53.5, 166.32 24.35 M41.89 171.99 C68.83 141.32, 100.05 108.23, 171.03 25.11 M42.52 173.82 C75.53 135.1, 108.51 99.16, 168.97 25.85 M45.37 174.97 C73.01 142.62, 97.73 112.43, 172.37 27.41 M44.63 174.85 C72.15 143.19, 100.23 111.66, 171.96 29.7 M49.27 178.61 C80.93 141.64, 111.51 104.14, 176.22 31.74 M50.18 177.55 C78.62 143.74, 108.6 110.47, 175.25 32.08 M52.76 177.31 C85.72 139.66, 115.8 105.18, 177.19 33.85 M53.71 178.56 C85.96 139.92, 119.39 103.95, 178.29 34.51 M55.18 180.39 C89.57 142.36, 124 103.8, 181.72 38.78 M56.04 180.59 C102.94 127.04, 149.43 74.38, 180.99 37.57 M62.71 179.76 C91.82 150.01, 118.88 113.77, 185.51 42.02 M59.96 182.2 C85.65 153.03, 109.98 124.67, 184.07 40.1 M63.82 184.75 C102.78 139.44, 140.06 94.27, 185.56 43.14 M64.58 182.67 C92.54 153.65, 119.79 121.77, 185.98 42.89 M67.2 185.5 C97.63 149.84, 126.98 113.3, 188.87 47.14 M68.21 183.47 C95.43 153.59, 121.52 123.01, 190.6 46.07 M73.96 187.63 C96.74 157.62, 121.94 132.36, 192.47 50.59 M73.48 186.97 C115.4 139.98, 155.97 93.34, 192.21 49.36 M76.17 186.79 C106.72 154.31, 132.7 121.37, 192.79 53.75 M76.82 187.06 C123.01 136.25, 169.45 81.46, 193.76 54.21 M81.67 186.58 C116.93 151.09, 149.8 113.72, 195.05 57.68 M80.27 189.16 C114.24 150.02, 147.65 113.05, 195.21 57.02 M86.77 187.42 C114.22 160.47, 137.76 130.78, 195.98 63.42 M86.99 189.11 C118.24 150.49, 153.16 112.16, 197.2 62.28 M90.94 190.17 C123.78 155.7, 152.05 121.93, 197.16 64.54 M91.01 188.88 C133.88 140.8, 176.6 93.65, 197.33 65.33 M96.17 190.51 C125.26 157.32, 153.17 126.15, 198.45 71.81 M95.48 188.99 C117.37 162.37, 140.15 137.69, 200.49 71 M99.71 188.32 C124.2 165.07, 148.14 135.31, 202.64 74.59 M100.34 189.98 C122.12 165.35, 145.5 139.38, 200.49 75.03 M108.09 191.52 C132.3 159.38, 159.12 130.25, 203.51 78.39 M107.25 190.29 C134.39 156.14, 163.58 123.43, 203.05 79.81 M111.85 191.74 C144.02 153.15, 174.4 116.81, 201.25 84.34 M111.36 190.03 C137.12 160.55, 162.97 130.98, 202.15 85.79 M114.9 188.43 C149.25 153.88, 183.85 112.21, 201.08 91.2 M117.46 191.08 C135.37 168.75, 154.08 147.6, 203.56 91.65 M120.54 193.22 C140.22 170.38, 156.68 148.44, 201.36 98.6 M121.11 191.59 C151.05 156.61, 179.26 123.47, 201.94 97.52 M126.83 187.79 C147.58 164.26, 167.41 142.35, 201.61 104.06 M128.76 187.86 C153.43 160.7, 177.94 133.4, 203.78 104.14 M136.73 185.29 C161.86 159.69, 184.68 128.63, 202.58 109.73 M136.99 185.86 C160.36 159.08, 184.59 132.42, 202.35 109.58 M144.06 181.2 C167.11 158.97, 185.98 133.68, 204.23 117.64 M145.31 182.1 C162.81 160.75, 180.19 141.97, 202.74 116.63 M153.53 179.41 C164.44 168.7, 172.08 155.09, 193.92 128.97 M153.17 177.86 C161.47 167.69, 171.24 158.35, 194.86 130.09 M158.86 176.66 C166.88 169.48, 173.86 165.47, 188.82 144.48 M158.98 177.58 C166.91 168.79, 177.15 157.24, 188.85 143.28\" stroke=\"#228be6\" stroke-width=\"0.5\" fill=\"none\"></path><path d=\"M123.69 1.7 C135.86 2.57, 148.09 10.02, 158.58 16.93 C169.07 23.85, 179.65 33.02, 186.64 43.19 C193.64 53.36, 198.14 65.89, 200.55 77.96 C202.96 90.03, 203.75 103.58, 201.09 115.61 C198.44 127.64, 192.13 140.07, 184.61 150.12 C177.1 160.16, 166.87 169.15, 156.01 175.86 C145.16 182.57, 132 188.21, 119.48 190.38 C106.96 192.55, 93.46 191.52, 80.87 188.86 C68.28 186.21, 54.67 181.57, 43.93 174.45 C33.19 167.32, 23.35 156.48, 16.43 146.12 C9.5 135.76, 4.7 124.29, 2.38 112.31 C0.05 100.32, -0.26 86.1, 2.48 74.2 C5.22 62.29, 11.58 50.85, 18.83 40.88 C26.09 30.92, 35.06 21.06, 46.01 14.41 C56.95 7.75, 70.48 2.68, 84.49 0.94 C98.5 -0.8, 121.22 2.82, 130.06 3.96 C138.9 5.09, 137.91 6.18, 137.51 7.75 M82.44 0.42 C94.23 -2.97, 107.76 0.11, 120.29 2.54 C132.82 4.97, 146.44 8.18, 157.61 15 C168.78 21.81, 179.94 33.03, 187.32 43.42 C194.7 53.81, 199.8 65.68, 201.89 77.32 C203.98 88.96, 202.48 101.44, 199.85 113.27 C197.22 125.1, 193.28 137.78, 186.1 148.29 C178.92 158.81, 167.82 169.28, 156.77 176.35 C145.72 183.42, 132.23 188.57, 119.8 190.69 C107.37 192.82, 94.48 191.59, 82.18 189.1 C69.88 186.62, 56.96 182.64, 46.01 175.78 C35.06 168.93, 23.99 158.07, 16.49 147.96 C8.99 137.86, 3.36 127.13, 1 115.17 C-1.37 103.21, -0.56 88.57, 2.31 76.19 C5.17 63.81, 11.19 50.93, 18.18 40.88 C25.17 30.83, 33.4 22.29, 44.26 15.89 C55.12 9.48, 76.93 4.74, 83.34 2.46 C89.74 0.17, 82.63 0.88, 82.68 2.19\" stroke=\"#000000\" stroke-width=\"1\" fill=\"none\"></path></g><g transform=\"translate(314.5 18) rotate(0 34.5 16)\"><text x=\"0\" y=\"23\" font-family=\"Virgil, Segoe UI Emoji\" font-size=\"20px\" fill=\"#000000\" text-anchor=\"start\" style=\"white-space: pre;\" direction=\"ltr\">convert</text></g><g stroke-linecap=\"round\" transform=\"translate(330 65) rotate(0 15.5 18.5)\"><path d=\"M17.32 -1.47 L30.38 19.7 L17.19 37.34 L0.05 20.56\" stroke=\"none\" stroke-width=\"0\" fill=\"#228be6\" fill-rule=\"evenodd\"></path><path d=\"M14.05 1.39 C19.19 4.86, 26.04 13.74, 31.7 17.17 M16.01 0.72 C20.22 3.81, 22.89 8.39, 30.23 19.03 M31.55 17.87 C26.93 26.51, 20.97 32.63, 14.35 38.54 M30.46 19.29 C27.14 22.44, 24.4 26.82, 16.6 37.48 M15.55 36.87 C9.97 31.53, 5.61 26.56, 0.04 20.61 M15.05 37.06 C13.6 32.38, 8.58 29.17, -0.38 19.9 M-1.5 17.19 C1.86 15.24, 7.39 9.41, 16.68 -0.34 M-0.7 19.9 C5.5 13.11, 8.32 8.16, 16.74 -0.74\" stroke=\"#000000\" stroke-width=\"1\" fill=\"none\"></path></g><g stroke-linecap=\"round\"><g transform=\"translate(142 140) rotate(0 62 56.5)\"><path d=\"M0.28 1.1 C20.62 19.94, 102.62 93.23, 123.1 111.91\" stroke=\"#000000\" stroke-width=\"1.5\" fill=\"none\" stroke-dasharray=\"8 9\"></path></g></g><g stroke-linecap=\"round\" transform=\"translate(264 238) rotate(0 72 57.5)\"><path d=\"M0 0 C0 0, 0 0, 0 0 M0 0 C0 0, 0 0, 0 0 M-1.01 7.14 C2.51 4.81, 4.3 1.34, 5.43 -0.18 M-0.09 6.79 C1.55 4.55, 2.84 2.43, 4.93 0.7 M1.03 13.29 C2.82 6.92, 6.24 5.99, 11.34 -0.14 M0.8 12.67 C3.68 8.11, 5.84 5.31, 11.24 -0.72 M-2.06 17.45 C4.4 15.03, 7.39 11.76, 15.23 0.2 M0.62 18.97 C4.98 11.55, 9.98 7.21, 15.3 1.29 M2.1 23.47 C5.13 18.02, 15.36 9.16, 20.96 -0.84 M1.22 23.98 C5.02 17.43, 11.92 10.52, 20.54 0.11 M-1.76 28.85 C11.92 19.82, 19.95 6.77, 27.2 -1.14 M0.15 29.92 C5.16 23.9, 10.69 17.78, 27.16 0.01 M-0.77 35.55 C12.14 25.93, 19.8 11.57, 33.8 -0.88 M-1 36.17 C7.86 27.1, 16.63 18.18, 32.89 0.13 M1.66 41.23 C9.5 30.69, 22.73 19.79, 38.12 0.08 M-0.13 42.37 C10.78 30.39, 20.14 19.19, 36.17 1.12 M1.3 50.13 C14.63 29.73, 32.91 8.8, 41.62 0.81 M-0.24 49.32 C10.32 37.13, 21.39 25.92, 41.73 -0.32 M-0.97 56.43 C12.23 39.22, 24.35 26.3, 46.03 1.97 M-0.56 54.45 C11.62 41.53, 23.24 26.65, 47.63 -0.63 M0.97 62.86 C18.62 39.34, 39.34 15.35, 51.93 0.38 M0.53 60.52 C12.39 45.27, 26.2 29.93, 52.87 -0.77 M0.46 68.1 C22.11 41.59, 42.29 20.42, 58.92 -0.29 M0.39 67.03 C14.38 51.62, 28.25 35.07, 58.38 0.48 M1.46 73.66 C13.14 55.81, 27.05 40.8, 64.2 1.05 M0.49 73.14 C14.69 55.75, 27.94 39.37, 64.65 -0.77 M-2.03 78.71 C17.14 60.25, 36.37 36.36, 70.72 1.56 M0.74 78.66 C26.22 49.77, 51.33 20.05, 68.76 1.13 M-0.03 83.52 C23.08 62.53, 44.85 35.45, 73.81 1.1 M0.39 85.46 C16.67 67.97, 32.08 50.04, 73.95 0.09 M1.55 92.04 C24.74 60.1, 50.93 32.95, 81.29 0.83 M-0.91 92.15 C28.43 58.35, 57.09 26.1, 78.68 0.97 M-1.07 99.27 C24.22 73.38, 47.79 43.75, 84.1 -2.14 M-0.17 97.53 C28.43 65.11, 55.84 30.95, 84.18 0.21 M1.78 102.17 C28.18 70.01, 58.32 35.06, 88.43 -0.12 M-0.77 103.5 C27.3 72.89, 55.68 40.87, 89.54 0.61 M0.71 110.52 C22.55 82.09, 46.71 56.25, 94.34 -0.26 M-0.08 110.07 C22.63 83.07, 45.21 56.07, 95.26 -0.07 M1.18 114.26 C33.07 78.4, 67.95 36.7, 99.88 -1.85 M-0.55 114.69 C32.15 78.43, 65.53 39.58, 100.3 -0.36 M5.56 115.41 C42.86 74.45, 77.55 36.01, 107.72 -1.79 M5.23 114.25 C32.43 84.27, 59.18 54.68, 105.66 -0.43 M12.7 116.46 C32.29 88.48, 56.93 66.1, 109.3 0.14 M11.1 115.59 C43.78 78.17, 76.26 41.16, 111.45 0.62 M17.07 116.69 C55.89 69.56, 95.21 23.39, 114.75 0.55 M17.32 115.78 C38.81 91.22, 59.01 66.13, 115.74 0.19 M20.24 116.1 C59.74 68.51, 99.56 26.98, 120.32 -0.6 M21.06 116.19 C59.97 72.79, 100.53 28.11, 120.99 -0.92 M25.53 113.97 C49.92 88.09, 76.63 58.78, 127.81 -1.16 M27.97 115.09 C49.86 88.13, 73.7 60.38, 126.32 0.52 M34.13 115.55 C71.03 70.89, 109.46 26.92, 134.49 -1.43 M31.23 116.38 C54.22 89.09, 78.07 64.31, 132.47 -0.49 M39.73 114.62 C59.39 93.16, 78.29 69.19, 137.26 -1.51 M37.11 114.28 C72.56 75.66, 106.24 36.55, 136.82 -0.44 M44.63 116.19 C75.34 78.66, 107.35 42.26, 143.28 1.32 M42.04 116.01 C75.79 77.84, 109.35 38.64, 142.98 -0.64 M50.4 115.06 C71.33 89.49, 92.42 61.27, 148.1 1.48 M48.19 114.45 C72.13 89.57, 94.32 60.99, 145.86 1.76 M53.96 114.5 C79.99 85.12, 103.36 57.31, 144.92 8.7 M52.47 114.89 C90.79 73.85, 129.17 31.03, 145.89 7.38 M57.58 117.56 C89.37 80.38, 120.91 46.7, 144.65 14.13 M57.53 116.41 C91.58 79.19, 121.56 43.35, 146 14.83 M64.26 114 C85.72 89.56, 105.88 65.72, 146.69 22 M64.02 114.83 C90.18 84.6, 115.93 55.51, 147.29 20.43 M69.17 115.15 C83.34 96.77, 100.07 76.53, 146.28 28.48 M68.97 115.68 C84.68 98.2, 100.8 79.31, 147.42 27.11 M73.6 117.28 C90.92 97.08, 105.66 79.05, 144.52 33.06 M74.7 115.58 C100.13 85.55, 126.59 55.53, 145.47 33.87 M81.08 116.22 C102.72 88, 125.58 61.94, 147.75 37.42 M79.89 115 C104.97 85.4, 131.05 55.5, 146.31 38.69 M84.01 114 C103.5 93.56, 122.97 72.1, 146.97 44.31 M85.09 114.87 C98.68 100.7, 113.49 85.05, 146.95 45.52 M91.79 117.46 C110.34 91.45, 129.01 70.99, 147.77 48.92 M89.86 115.34 C103.1 101.07, 114.25 87.17, 147.4 51.64 M97.45 116.87 C115.95 92.62, 138.56 70.27, 146.54 57.51 M96.28 114.4 C115.55 93.35, 134.75 71.24, 145.79 56.44 M101.73 116.6 C109.31 102.87, 118.71 91.8, 144.33 62.78 M100 114.62 C114.27 100.67, 126.36 85.93, 145.26 62.77 M107.8 113.67 C121.12 102.76, 131.01 87.86, 146.35 70.72 M105.88 115.82 C119.85 100.34, 130.77 86.93, 146.28 69.91 M113.26 116.46 C118.63 106.21, 129.13 97.27, 145.32 75.55 M110.95 115.75 C121.3 104.08, 133.26 92.07, 147 74.56 M116.89 115.25 C123.62 108.53, 130.23 100.95, 147.46 83.05 M118.06 114.78 C124.77 105.12, 134.58 96.2, 146.19 82.17 M122.68 116.91 C131.55 106.76, 142.09 95.65, 144.61 89.17 M122.88 114.6 C129.19 108.87, 135.5 102.12, 146.26 87.75 M126.51 115.5 C131.56 108.02, 138.86 103.27, 148.19 95.44 M127.5 114.88 C133.88 107.61, 141.03 100.48, 146.2 93.2 M132.23 114.89 C139.25 108.66, 144.26 102.97, 144.64 99.83 M133.48 116 C136.19 110.64, 139.55 107.74, 145.9 100.29 M138.39 115.26 C142 110.48, 143.97 108.83, 146.61 106.99 M139.04 115.44 C140.72 112.91, 142.41 111.41, 146.43 105.8 M143.11 115.67 C144.96 114.55, 145.02 113.17, 147.01 111.45 M143.59 115.51 C144.14 114.48, 145.3 113.62, 146.87 111.77 M-0.34 114.71 C-0.34 114.71, -0.34 114.71, -0.34 114.71 M-0.34 114.71 C-0.34 114.71, -0.34 114.71, -0.34 114.71 M6.16 115.4 C3.91 113.11, 2.44 112.12, 0.66 110.04 M5.7 114.67 C3.72 113.24, 1.7 110.63, -0.21 109.46 M12 113.76 C7.66 110.17, 3.29 107.65, -1.77 105.7 M12.86 115.71 C8.92 111.44, 4 108.25, -0.05 104.57 M18.45 114.73 C11.18 111.01, 3.65 101.83, 1.84 97.58 M18.71 113.9 C14.15 110.78, 11.32 107.41, 0.4 98.36 M25.44 116.63 C20.04 108.61, 11.93 105.17, 1.69 95.95 M24.3 115.76 C17.12 108.46, 9.15 101.58, 0.19 94.43 M31.03 113.31 C24.96 108.85, 16.26 102.07, 0.02 89.19 M31.08 115.16 C23.46 108.31, 17.91 103.24, 0.39 88.47 M35.38 113.9 C30.22 106.01, 20.85 101.11, 0.93 85.43 M36.34 114.4 C26.42 105.69, 16.19 98.28, -0.03 84.14 M44.75 114.67 C31.1 105.03, 14.82 93.45, -1.72 76.86 M42.35 114.35 C27.14 103.31, 11.83 88.53, -1.06 77.2 M47.14 113.57 C29.96 98.83, 11.68 80.59, -0.94 73.64 M48.91 115.14 C31.39 101.09, 16.41 87.23, 0.63 73.47 M55.95 116.83 C39.77 98, 19.57 83.03, -1.28 67.2 M55.91 114.81 C35.96 99.7, 19.64 83.94, 0.06 66.29 M62.05 114.99 C41.91 97.48, 22.85 81.25, 0.63 64.2 M60.41 115.37 C44.08 98.38, 25.22 84.29, 0.21 62.42 M65.19 116.8 C40.91 92.14, 11.82 67.33, -0.65 57.84 M66.94 114.8 C46.79 97.9, 28.86 79.93, 0.33 57.49 M74.12 113.22 C46.25 91.25, 16.44 66.33, 0.12 49.79 M72.54 115.09 C58.73 102.95, 42.19 89.86, 0.28 51.95 M78.21 116.03 C49.99 89.44, 20.43 63.82, -1.87 45.52 M79.38 114.93 C51.51 91.21, 25.1 68.87, -1.17 46.49 M87.06 116.41 C58.68 90.55, 30.21 67.46, 1.97 40.17 M85.26 114.32 C56.86 90.79, 30.72 67.9, -0.04 39.99 M90.67 113 C61.54 90.44, 33.22 66.31, 0.95 34 M90.72 114.73 C73.59 97.33, 54.94 81.74, -0.82 34.95 M98.77 113.75 C60.57 83.89, 24.91 52.95, 0.53 30.15 M97.32 115 C71.23 92.04, 42.9 67.91, -0.12 29.43 M104.95 115.94 C70.26 84.33, 35.32 55.54, 1.64 26.12 M104.73 115.4 C65.45 82.74, 27.91 50.27, -0.45 24.5 M110.32 112.82 C67.1 80.02, 25.34 40.87, 0.11 19.59 M109.25 114.38 C77.49 85.76, 45.05 57.87, 0.21 20.16 M115.09 116.16 C68.81 75, 27.71 35.29, -2.02 15.8 M116.44 115.12 C70.8 78.42, 26.67 39.7, 0.62 14.76 M122.73 116.28 C84.55 84.9, 51.48 55.86, -1.06 9.43 M122.11 113.7 C93.14 91.32, 65.99 65.8, 0.66 9 M127.33 115.98 C85.05 78.06, 44.14 44.07, -0.34 3.99 M128.68 115 C91.21 81.13, 51.91 46.79, -0.4 3.29 M133.72 114.51 C102.09 84.77, 69.01 56.22, 1.95 -1.67 M134.24 114.81 C95.19 81.81, 54.09 47.39, 1.21 -1.58 M141.09 114.18 C113.1 91.36, 85.33 66.64, 7.88 1.29 M139.07 114.48 C100.95 82.27, 64.01 49.84, 7.79 0.2 M145.15 113.65 C103.06 76.65, 57.01 37.47, 13.82 -1.48 M144.76 114.26 C103.3 77.63, 59.47 41.85, 13.19 -1.63 M146.95 108.63 C97.27 68.91, 49.51 28.31, 21.19 0.16 M145.95 108.05 C98.18 68.94, 51.94 28.18, 18.45 -1.64 M145.57 102.33 C101.38 62.31, 58.12 24.92, 23.28 0.29 M144.01 103.95 C105.73 68.87, 66.1 35.04, 25.58 -1.23 M145.71 97.54 C120.69 79.9, 95.88 55.99, 32.6 -1.19 M145.5 98.39 C109.41 66.18, 73.03 34.34, 31.87 -0.68 M146.3 92.64 C106.24 62.22, 71.5 30.99, 37.07 -2.52 M145.75 92.18 C107.12 59.95, 70.54 27.7, 36.96 -1.03 M143.89 87.43 C111.1 56, 75.49 26.58, 43.56 -1.52 M145.2 88.43 C107.09 54.41, 71.28 23.07, 43.39 -1.46 M144.04 82.54 C107.73 47.19, 69.73 16.76, 49.6 -0.98 M145.69 82.02 C109.06 50.73, 74.94 20.15, 49.18 -0.64 M144.68 77.29 C118.2 53.04, 94.22 32.33, 55.45 -0.58 M144.79 77.48 C122.56 56.89, 101.01 37.71, 54.87 -0.59 M143.45 73.07 C123.6 56.96, 107.72 37.05, 63.5 0.89 M144.08 70.5 C125.21 54.89, 106.94 37.55, 61.87 -0.78 M145.17 67.19 C116.91 43.83, 90.5 17.7, 66.37 -2.36 M145.53 65.81 C128.85 52.62, 114.19 38.02, 67.48 -0.01 M145.1 60.31 C127.31 45.27, 105.49 27.05, 74.56 -0.55 M145.71 60.65 C120.87 39.7, 97.19 18.8, 73.47 -1.81 M144.42 54.25 C121.31 35.76, 99.65 16.66, 80.07 -1.76 M144.21 54.67 C119.87 34.31, 96.55 14.01, 80.65 -1.69 M145.52 51.41 C126.51 34.81, 102.85 16.74, 84.52 0.13 M143.88 49.43 C128.6 35.67, 109.75 19.36, 85.92 -1.15 M143.42 44.65 C126.35 29.55, 109.23 14.88, 90.52 -0.68 M145.17 44.27 C125.46 27.99, 104.24 9.12, 92.6 -1.65 M145.15 40.6 C129.46 24.55, 109.58 7.87, 97.81 -1.9 M144.44 39.79 C130.25 28.04, 116.23 15.84, 99.47 -0.59 M145.1 33.63 C136.45 27.76, 126.49 16.96, 102.86 -2.57 M144.26 33.79 C130.33 22.22, 117.04 9.05, 103.33 -0.59 M144.4 29.15 C135.02 20.26, 126.45 13.62, 110.54 -0.41 M143.75 28.66 C131.76 17.28, 119.63 7.23, 111.61 -0.91 M146.31 25.52 C134.81 15.62, 125.74 4.81, 118.17 0.15 M144.87 23.37 C135.22 15.48, 126.85 8.34, 115.36 -1.27 M144.34 18.06 C137.99 14.48, 132.39 5.68, 123 -2.11 M145.49 19.56 C138.67 13.61, 132.47 7.54, 123.64 0.03 M145.85 13.67 C138.76 9.39, 135.28 3.31, 130.23 -1.21 M145.92 12.15 C142.63 10.05, 139.37 7, 128.51 0.22 M144.21 9.03 C141.31 6.36, 140.76 3.54, 136.1 -1.25 M145.49 8.06 C143.18 5.59, 139.98 4.24, 135.38 -1.23 M144.81 1.99 C143.59 1.9, 143.48 1.14, 141.48 -1.16 M145.16 2.41 C144.36 1.97, 143.42 1.17, 141.08 -0.67\" stroke=\"#e6ffc8\" stroke-width=\"0.5\" fill=\"none\"></path><path d=\"M-1.29 0.36 C31.49 1.69, 64.98 -0.35, 142.81 -1.98 M144.56 1.45 C145.37 37.71, 145.15 77.21, 145.83 114.85 M143.47 114.17 C106.29 113.02, 66.56 113.09, -0.75 113.95 M1.15 116.09 C-1.87 67.82, -2.41 24.27, -1.61 1.09\" stroke=\"#2b8a3e\" stroke-width=\"1.5\" fill=\"none\" stroke-dasharray=\"1.5 7\"></path></g><g transform=\"translate(285 245) rotate(0 27 48)\"><text x=\"0\" y=\"23\" font-family=\"Virgil, Segoe UI Emoji\" font-size=\"20px\" fill=\"#2b8a3e\" text-anchor=\"start\" style=\"white-space: pre;\" direction=\"ltr\">List :</text><text x=\"0\" y=\"55\" font-family=\"Virgil, Segoe UI Emoji\" font-size=\"20px\" fill=\"#2b8a3e\" text-anchor=\"start\" style=\"white-space: pre;\" direction=\"ltr\">- one</text><text x=\"0\" y=\"87\" font-family=\"Virgil, Segoe UI Emoji\" font-size=\"20px\" fill=\"#2b8a3e\" text-anchor=\"start\" style=\"white-space: pre;\" direction=\"ltr\">- two</text></g><g stroke-linecap=\"round\" transform=\"translate(278.37319488867206 121.6942301852414) rotate(338.0327565931871 52.02027611041686 37)\"><path d=\"M53.28 0.85 L103.79 38.64 L51.2 74.27 L-1.49 38.96\" stroke=\"none\" stroke-width=\"0\" fill=\"#fa5252\" fill-rule=\"evenodd\"></path><path d=\"M51.5 0.02 C63.79 6.72, 74.22 16.39, 105.56 37.79 M53.79 0.51 C70.48 12.15, 88.53 25.7, 103.07 38.18 M105.01 39.75 C87.39 49.41, 72.22 61.59, 51.24 74.7 M103.36 38.46 C90.22 48.02, 76.04 57.49, 53.63 74.56 M53.81 74.14 C40.25 65.92, 25.77 56.44, -1.72 39.71 M52.89 73.9 C37.7 63.52, 23.49 53.74, 0.86 37.72 M1.47 38.14 C16.81 24.28, 34.99 11.45, 54.62 -0.29 M0.94 37.93 C20.38 23.46, 42.34 8.27, 53.21 -0.28\" stroke=\"#000000\" stroke-width=\"1\" fill=\"none\"></path></g><g stroke-linecap=\"round\" transform=\"translate(474.7715111234793 257.96655309088374) rotate(24.323153881470517 64.25338283382541 31.5)\"><path d=\"M0 0 C0 0, 0 0, 0 0 M0 0 C0 0, 0 0, 0 0 M0.28 6.79 C0.88 5.32, 2.18 3.52, 4.99 0.16 M-0.63 6.63 C1.34 4.43, 3.15 2.71, 5.38 0.58 M1.67 11.82 C3.02 8.46, 5.92 5.55, 10.37 1.56 M0.54 11.65 C2.11 9.38, 6.17 6.41, 10.61 -0.56 M0.53 18.19 C3.42 11.81, 9.48 9.03, 14.08 0.42 M-0.77 18 C3.42 14.69, 7.6 9.71, 15.61 0.71 M1.18 22.46 C8.38 14.1, 17.76 4.96, 20.87 1.63 M0.85 24.88 C7.92 14, 16.88 4.74, 21.04 0.63 M1.69 30.22 C11.2 20.62, 20.92 9.73, 25.29 0.84 M-0.92 30.61 C8.24 20.39, 15.36 11.59, 25.8 0.94 M-1.63 38.69 C11.13 21.58, 26.13 8.8, 30.21 -0.89 M-1.09 36.67 C7.06 27.03, 15.18 19.44, 32.32 0.31 M1.2 41.96 C7.89 33.19, 19.63 20.35, 38.52 0.38 M0.22 42.37 C13.78 25.51, 28.57 8.38, 36.81 0.77 M0.84 48.2 C11.23 35.01, 27.64 17.08, 43.43 0.39 M-0.61 49.62 C9.34 37.46, 20.26 25.12, 42.06 0.16 M2.21 53.41 C15.6 36.33, 30.86 18.85, 48.16 -0.23 M-0.71 54.11 C11.61 40.9, 24.91 26.62, 47.63 0.65 M0.3 62.46 C11.07 45.31, 27.56 29.37, 52.2 0.96 M-0.38 61.91 C19.77 40.15, 38.48 18.85, 52.64 -0.76 M3.66 64.54 C14.51 52.29, 23.52 36.98, 59.08 1.27 M0.95 64.37 C18.1 45.75, 35.95 25.75, 58 0.27 M6.86 65.43 C31.64 38.42, 52.18 12.87, 62.62 -2.18 M7.58 63.93 C23.05 48.32, 36.89 30.16, 63.17 -0.12 M13.55 65.3 C27.02 48.64, 38.35 33.82, 70.66 0.61 M13.21 65.41 C29.45 44.41, 47.05 22.9, 68.41 0.57 M17.95 63.37 C37.86 40.36, 60.95 13.67, 75.34 1.45 M18.83 64.16 C30.68 52.11, 41.35 36.97, 73.53 -0.36 M21.33 66.74 C34.3 52.43, 47.88 38.3, 80.8 -0.97 M23.74 64.37 C41.97 42.84, 63.59 17.9, 80.12 -0.25 M30.2 63.31 C49.17 37.98, 73.62 13.02, 85.49 -0.15 M28.31 65.56 C47.69 44.04, 66.3 23.01, 84.34 -0.66 M32.13 66.85 C47.7 51.46, 59.44 33.6, 89.87 -0.72 M34.18 65.07 C48.1 47.92, 61.25 32.07, 89.12 -0.76 M37.97 65.97 C53.54 50.06, 63.3 38.17, 94.7 -1.49 M39.05 64.57 C56.55 45.58, 71.66 27.11, 94.96 -0.96 M45.59 65.13 C64.37 37.08, 90.36 13.65, 100.76 1.59 M44.9 64.57 C62.32 45.77, 79.31 25.87, 100.16 -0.27 M50.15 65.62 C68.13 45.18, 86.38 22.31, 107.11 0.42 M50.77 64.88 C65.75 46.07, 81.01 29.85, 105.53 0.07 M55.83 66.57 C73.56 41.58, 96.45 15.31, 110.84 -0.28 M55 65.18 C77.71 39.65, 98.92 15.75, 110.73 -0.83 M62.12 65.98 C77.87 43.01, 94.64 26.02, 116.69 -1.17 M59.98 65.44 C72.26 50.86, 84.72 35.91, 116.26 -0.27 M63.5 65.66 C80.96 50.85, 92.8 34.29, 120.01 0.9 M66.37 64.48 C82.84 47.09, 98.42 27.27, 121.07 0.75 M71.76 64.29 C92.15 38.08, 114.95 16.29, 125.88 2.22 M71.91 64.43 C91.98 40.92, 112.8 16.04, 126.07 0.34 M75.72 66.39 C96.75 39.5, 117.69 17.98, 128.68 4.14 M75.63 65.27 C90.85 46.38, 107.82 27.38, 130.23 3.18 M83.47 63.31 C95.4 50.54, 109.42 34.28, 131.11 6.39 M82.58 65.3 C95 47.85, 109.38 31.75, 130.13 7.27 M86.13 66.26 C99.18 51.79, 109.36 39.47, 131.16 15.23 M86.14 65.64 C98.11 51.73, 108.63 38.8, 131.37 13.68 M92.12 63.28 C104.87 47.74, 119.9 31.65, 129.13 21.31 M92.72 64.73 C102.25 52.53, 113.07 41.55, 130.17 19.81 M98.86 64.26 C108.52 49.47, 120.21 40.08, 131.37 28.1 M98.03 64.88 C107.66 52.33, 119.25 39.94, 131.53 25.4 M103.09 65.93 C112.12 56.28, 119.19 43.9, 131.85 33.69 M103.83 64.68 C112.63 53.93, 120.73 44.51, 131.36 31.76 M108.54 64.87 C114.48 56.76, 122.79 47.74, 131.19 39.99 M108.17 65.58 C117.2 54.69, 125.47 44.15, 131.96 38.52 M111.61 63.26 C116.02 60.74, 121.36 55.32, 131.72 46.03 M113.5 65.08 C117.02 61.67, 120.94 57.51, 131.61 44.42 M120.14 65.96 C121.89 58.94, 125.82 54.62, 130.37 50.48 M118.23 65.46 C120.89 61.75, 123.43 58.74, 130.03 51.24 M124.59 65.86 C125.97 64.04, 127.27 61.91, 130.22 56.66 M123.86 64.96 C125.93 61.42, 128.61 58.46, 131.3 56.69\" stroke=\"#fa5252\" stroke-width=\"0.5\" fill=\"none\"></path><path d=\"M0 -1.5 C35.38 2.96, 73.18 1.57, 127.14 0.28 M0.2 0.76 C33.42 -1.11, 64.8 -1.32, 129.17 0 M130.41 0.65 C130.03 24.36, 130.38 49.62, 127 63.49 M127.53 -0.66 C127.87 18.79, 128.09 38.71, 127.93 62.59 M129.61 62.28 C88.73 62.31, 47.83 61.55, 0.07 62.52 M129.2 62.56 C87.78 64.82, 47.67 63.49, 0.17 63.69 M1.65 61.45 C0.08 41.17, 1.64 14.11, -1.68 1.05 M-0.92 63.86 C-0.84 40.89, -0.18 17.88, -0.96 -0.82\" stroke=\"#000000\" stroke-width=\"1\" fill=\"none\"></path></g><g stroke-linecap=\"round\" transform=\"translate(16.865547135620886 172.8538070033551) rotate(22.306205054907743 43.63445286437906 23.146192996644857)\"><path d=\"M42.31 -0.79 L86.21 24.96 L44.54 44.62 L-0.41 23.11\" stroke=\"none\" stroke-width=\"0\" fill=\"#15aabf\" fill-rule=\"evenodd\"></path><path d=\"M43.18 0.29 C57.55 6.04, 67 14.85, 88.99 25.21 M43.85 -0.62 C57.06 7.11, 69.17 13.56, 87.64 24.33 M85.67 23.39 C76.34 27.93, 66.47 35.75, 42.53 47.88 M86.53 23.7 C74.88 30.14, 61.62 37, 44.97 45.54 M43.95 46.25 C32.62 42.06, 17.66 33.32, -0.29 23.87 M43.2 47.19 C32.44 40.26, 19.98 34.95, 0.64 24.9 M0.1 24.84 C9.18 18.2, 22.83 10.12, 43.12 -1.18 M-0.48 24.2 C10.41 18.39, 21.73 10.88, 44.66 0.31\" stroke=\"#000000\" stroke-width=\"1\" fill=\"none\"></path></g><g stroke-linecap=\"round\" transform=\"translate(85.74789364500919 291.3561760950281) rotate(343.6518284526488 61.75210635499067 17.643823904971896)\"><path d=\"M0 0 C0 0, 0 0, 0 0 M0 0 C0 0, 0 0, 0 0 M0.35 6.64 C1.74 5.31, 1.71 3.15, 4.38 0.59 M0.07 6.68 C1.9 3.71, 3.66 1.69, 4.77 0.07 M0.46 10.7 C3.09 6.42, 6.17 1.98, 9.2 -1.63 M0.84 11.68 C3.17 8.75, 6.02 4.37, 10.51 -0.65 M1.3 18.35 C5.39 11.5, 10.52 3.32, 17.6 2.19 M-1.02 17.49 C5.48 13.09, 9.59 7.93, 15.63 -0.05 M1.97 25.42 C9.29 16.19, 14.04 6.34, 21.8 -0.03 M0.18 24.95 C6 17.17, 12.52 10.68, 21.05 -0.14 M0.24 28.7 C4.74 25.8, 9.56 18.15, 27.68 1.34 M-0.96 31.06 C9.49 18.69, 18.91 7.95, 27.11 -0.68 M1.24 34.97 C7.27 28.86, 13.78 17.61, 31.99 -1.01 M0.43 35.32 C11.37 23.31, 23.03 8.99, 31.15 0.62 M5.23 36.88 C12.81 26.87, 21.61 16.42, 35.68 -0.72 M6.84 36.37 C14.15 26.78, 21.07 18.09, 36.7 -0.5 M12.83 37.82 C22.97 22.13, 31.42 11.99, 44.17 1.18 M11.08 35.37 C23.59 23.1, 34.18 9.71, 43.25 0.59 M17.7 36.53 C27.18 23.49, 34.08 13.45, 49.1 -0.62 M16.52 35.06 C27.73 23.3, 37.8 11.11, 47.47 0.97 M19.74 35.43 C28.61 26.37, 35.19 21.68, 52.58 -0.83 M21.71 36.67 C29.86 27.05, 37.67 16.81, 53.02 -0.37 M25.31 35.58 C36.79 22.64, 47.82 8.34, 56.93 -0.47 M28.17 35.28 C38.57 22.92, 48.57 11.85, 57.73 0.99 M32.97 35.69 C39.38 26.65, 49.77 16.29, 64.95 0.08 M31.62 35.46 C38.61 28.26, 44.07 22.28, 63.41 0.37 M37.79 35.14 C47.72 26.43, 53.5 15.17, 69.65 0.12 M37.74 34.66 C47.99 24.67, 58.8 12.61, 69.05 -0.45 M41.01 36.98 C54.25 23.35, 68.58 5.96, 74.53 1.56 M43.39 36.75 C51.64 24.89, 61.42 15.68, 74.61 0.18 M50.38 34.87 C57.29 26.3, 67.08 13.79, 79.27 0.02 M48.41 35.55 C60.38 21.93, 71.13 10.46, 80.25 -0.61 M53.85 36.17 C62.15 24.26, 74.42 14.24, 84.06 -0.27 M52.83 36.28 C61.51 27.24, 70.26 18.53, 84.07 -0.82 M59.83 36.88 C69.01 26.81, 78.2 14.94, 91.28 0.62 M58.64 35.09 C67.66 24.27, 77.88 13.09, 89.38 0.02 M62.97 36.66 C74.66 22.93, 87.52 8.16, 93.79 1.23 M65.01 36.55 C75.08 23.8, 84.41 11.3, 96.46 0.25 M68.38 33.81 C78.77 22.21, 92.74 10.61, 100.66 1.8 M70.1 35.14 C79.17 24.61, 89.26 11.81, 99.78 -0.33 M73.38 36.32 C88.05 23.47, 95.54 9.72, 105.45 -0.81 M74.25 36.8 C83.09 26.36, 89.01 18.79, 105.74 -1.01 M79.77 36.8 C87.92 27.21, 97.58 19, 111.91 1.95 M79.75 36.33 C88.33 26.11, 97.55 15.67, 111.99 -0.65 M83.57 35.54 C93.86 27.25, 99.5 18.65, 117.63 2 M86.1 35.02 C94.52 25.73, 104.51 14.59, 116.44 0.55 M90.59 36.23 C98.78 24.54, 108.95 11.49, 123.03 1.94 M91.11 36.78 C98.05 28.32, 105.13 20.21, 121.85 0.8 M97.52 37.2 C102.44 28.15, 111.33 18.48, 127.08 3.79 M95.4 35.97 C102.29 27.87, 108.86 21.29, 125.01 2.03 M100.9 34.72 C111.74 26.57, 119.25 17.65, 126.28 9.47 M100.94 37.11 C106.26 31.29, 111.62 24.09, 125.2 8.82 M104.74 34.69 C109.76 28.84, 117.64 26.04, 127.51 15 M106.19 35.14 C113.42 29.57, 118.11 21.55, 126.59 13.13 M110.27 35.67 C115.03 31.42, 121.46 26.81, 126.6 21.88 M111.28 36.93 C115.99 31.34, 117.95 27.47, 126.29 20.13 M116.6 35.83 C121.02 33.76, 122.84 30.66, 127.15 24.81 M117.64 35.11 C120.63 32.85, 123.14 28.55, 125.51 25.91 M121.85 36.13 C123.04 35.14, 124.53 33.1, 125.64 32.19 M122.26 36.05 C123.23 35.15, 124.24 33.78, 125.69 32.48\" stroke=\"#fab005\" stroke-width=\"0.5\" fill=\"none\"></path><path d=\"M-1.86 0.94 C27.93 2.19, 58.05 1.06, 125.26 -1.72 M0.92 -0.56 C36.99 -1.21, 72.88 -1.44, 123.16 -0.35 M124.47 0.92 C122.27 7.15, 122.36 16.35, 122.27 35.98 M124.23 -0.26 C123.38 13.34, 124.66 26.76, 123.69 35.79 M122.38 36.05 C77.49 34.86, 34.62 36.56, 1.81 36.3 M122.59 35.99 C78.12 34.52, 33.97 35.34, -0.9 34.62 M0.79 36.43 C-1.9 26.14, -2.06 20.43, -1.6 -1.18 M-0.73 36.17 C0.15 25.12, 0.99 12.52, 0.61 0.98\" stroke=\"#000000\" stroke-width=\"1\" fill=\"none\"></path></g><g stroke-linecap=\"round\"><g transform=\"translate(124 175) rotate(18.703314074174894 35.5 40)\"><path d=\"M1.49 -0.54 C1.84 6.19, 0.39 9.99, 1.34 17.01 M1.62 15.93 C6.35 24.69, 9 32.54, 12.84 41.31 M13.26 39.18 C14.7 43.77, 17.86 47.78, 19.91 52.31 M19.24 49.12 C24.04 56.45, 32.29 59.82, 35.29 65.22 M35.44 65.4 C46.49 68.91, 54.6 71.89, 72.86 79.68\" stroke=\"#a61e4d\" stroke-width=\"1.5\" fill=\"none\" stroke-dasharray=\"1.5 7\"></path></g></g><g stroke-linecap=\"round\"><g transform=\"translate(19 280) rotate(0 40.5 -14.5)\"><path d=\"M-1.31 -0.97 C2.55 -9.87, 3.73 -17.03, 6.7 -20.8 M0.13 0.32 C2.13 -8.16, 3.56 -15.27, 6.72 -22.43 M5.13 -22.1 C7.16 -24.25, 9.16 -24.8, 12.29 -29.46 M6.12 -21.77 C8.42 -24.18, 9.86 -26.74, 11.68 -28.55 M12.72 -28.76 C15.17 -29.29, 18.14 -30.62, 21.42 -30.02 M12.33 -28.93 C15.42 -29.51, 18.15 -29.53, 20.64 -29.64 M20.7 -30.3 C22.19 -29.92, 22.49 -29.38, 24.04 -28.85 M20.87 -30.08 C22.14 -29.7, 23.03 -29.34, 23.95 -28.96 M23.23 -28.91 C26.62 -27.11, 27.61 -23.63, 32.12 -16.52 M23.91 -29.62 C25.59 -27.01, 28.03 -23.22, 33.05 -16.61 M33.11 -15.96 C35.33 -11.76, 35.15 -10.03, 36.45 0.45 M32.45 -17.83 C34.49 -13.27, 35.23 -9.41, 35.47 0.64 M36.01 0.87 C36.17 1.34, 36.42 1.59, 36.92 1.93 M36.05 0.98 C36.28 1.18, 36.52 1.43, 37.05 1.97 M35.44 0.98 C39.52 -10.31, 43.25 -18.07, 44.72 -30.25 M36.3 2.99 C39.53 -10.52, 43.71 -22.45, 45.55 -29.19 M45.2 -28.79 C46.24 -28.97, 47.19 -29.05, 47.78 -29.14 M45.09 -29.08 C45.77 -28.91, 46.81 -28.87, 47.92 -29.08 M48.04 -28.52 C48.88 -29.7, 50.83 -30.17, 52.78 -30.58 M48.13 -29.16 C48.94 -29.6, 50.28 -29.6, 52.82 -31.22 M53.36 -31.37 C54.24 -31.09, 56.24 -30.61, 57.95 -30.78 M53.2 -31.09 C54.58 -30.82, 56.25 -31.11, 57.97 -31.06 M58.86 -31.02 C62.55 -28.22, 66.11 -27.26, 71.11 -22.59 M57.63 -30.25 C62.91 -29.22, 67.46 -25.15, 72.09 -23.51 M70.52 -22.59 C75.45 -17.41, 78.01 -15.2, 82.42 -7.33 M72.62 -22.33 C74.45 -18.5, 77.82 -13.97, 81.52 -7.48 M81.39 -7.99 C81.03 -6.6, 80.71 -5.24, 81.35 -4.29 M81.05 -7.88 C81.22 -7.05, 80.99 -6.51, 80.85 -4.11\" stroke=\"#087f5b\" stroke-width=\"1\" fill=\"none\"></path></g></g><g stroke-linecap=\"round\" transform=\"translate(185.3330910264575 371.66279952417335) rotate(6.766174822553141 45.166908973542434 43.83720047582656)\"><path d=\"M0 0 C0 0, 0 0, 0 0 M0 0 C0 0, 0 0, 0 0 M-0.64 6.75 C1.61 5.6, 1.65 3.24, 4.53 1.07 M-0.49 6.22 C1.29 4.75, 2.06 3.8, 4.63 0.08 M-0.59 11.12 C4.8 9.38, 6.5 2.19, 10.34 0.03 M-0.13 11.85 C3.18 9.86, 4.87 6.82, 10.86 0.41 M-0.62 19.75 C3.48 12.7, 7.7 8.54, 15.92 0.65 M-0.05 18.52 C2.57 13.81, 5.73 11.22, 15.84 1.24 M1.05 22.25 C8.47 17.45, 15.01 6.04, 21.47 0.68 M0.61 24.63 C7.48 15.36, 14.88 8.78, 21.48 -0.32 M-0.93 29.87 C9.55 17.93, 20.22 9.34, 27.45 -0.94 M0.15 30.37 C5.93 22.26, 14.34 13.92, 25.35 0.81 M1.74 37.99 C11.14 21.19, 21.71 8.55, 31.43 0.99 M-0.06 36.36 C12.1 22.17, 25.15 7, 32.21 0.66 M0.73 42.27 C14.13 26.3, 24.88 13.32, 38.61 2.13 M-0.6 41.77 C6.66 33.8, 15.64 25.62, 37.8 0.29 M1.04 47.11 C9.9 39.55, 18.31 26.43, 42.94 0.67 M-0.84 48.55 C10.15 36.47, 19.5 26.02, 43.25 -0.3 M1.4 54.4 C13.08 41.14, 28.04 26.01, 45.78 1.48 M0.7 54.07 C16.91 36.77, 31.57 16.96, 46.79 -0.26 M0.94 59.74 C17.47 44.9, 31.9 28.17, 52.98 0.23 M0.11 61.11 C11.33 48.22, 23.37 33.79, 52.16 0.12 M-0.35 69.27 C10.91 53.15, 23.28 37.04, 57.54 -0.48 M-0.18 66.5 C16.98 49.27, 32.48 30.14, 58.33 -0.72 M0.26 72.04 C13.47 59.04, 26.78 41.49, 64.71 0.99 M-0.35 73.31 C23.96 47.36, 45 19.42, 63.89 0.35 M-1.81 80.43 C22.17 54.32, 46.44 28.15, 70.63 1.47 M-0.08 79.09 C25.46 49.35, 49.83 21.67, 68.82 1.12 M2 86.98 C16.59 64.58, 31.26 45.99, 75.47 1.08 M1.08 84.48 C18.05 64.04, 36.22 42.63, 74.81 -0.08 M1.95 90.27 C31.66 57.06, 58.46 26.2, 78.01 -0.63 M1.53 88.97 C19.37 70.49, 35.74 51.38, 79.08 -0.41 M7.91 90.81 C31.65 59.18, 55.27 30.93, 84.81 -0.55 M6.64 90.52 C30.12 62.58, 54.39 34.87, 84.69 -0.57 M11.27 87.93 C37.28 61.18, 61.91 31.28, 88.81 0.09 M11.88 88.34 C43.85 54.91, 72.56 18.3, 90.34 -0.9 M18.76 91.15 C47.3 57.16, 76.36 23.44, 91.83 2.88 M17.81 89.99 C46.39 58.26, 73.74 26.99, 92.08 3.61 M21.61 88.74 C41.97 64.33, 66.33 42.23, 93.12 9.57 M22.47 89.84 C46.97 61.49, 70.64 33.04, 93.01 8.45 M30.18 87.94 C44.13 69.87, 62.44 49.77, 91.19 13.97 M29.16 89.03 C44.22 72.01, 60.64 52.53, 92.31 15.29 M35.11 91.02 C53.33 63.32, 74.29 40.27, 91.74 20.54 M34.77 89.39 C46.72 72.63, 60.73 58.53, 92.4 20.46 M37.92 91.42 C58.03 65.87, 79.37 40.58, 92.86 25.06 M39.59 89.38 C49.64 76.41, 62.54 63.23, 93.25 27.32 M44.13 89.89 C54.48 77.2, 68.49 63.55, 94.95 34.99 M43.64 90.02 C60.9 70.76, 75.41 51.69, 93.55 32.54 M49.93 90.61 C60.12 77.63, 69.69 65.59, 93.15 38.34 M50.43 88.85 C62.27 75.15, 76.4 59.18, 94.29 38.69 M55.22 89.3 C68.57 75.94, 79.48 60.18, 91.98 43.79 M55.35 89.83 C63.43 80.51, 72.69 70.22, 92.65 44.24 M58.34 89.38 C68.63 78.73, 80.04 66.9, 93.85 53.57 M59.4 89.34 C71.68 75.58, 85.3 61.3, 93.58 52.22 M65.1 90.03 C71.84 81.36, 76.43 74.07, 92.9 55.84 M65.58 88.04 C71.51 81.84, 76.13 75.3, 92.95 56.42 M71.46 90.38 C80.13 80.78, 86.96 70.27, 92.95 65.06 M70.63 88.86 C77.93 81.65, 84.56 72.37, 92.63 63.59 M76.67 89.62 C84.29 83.12, 88.72 75.97, 91.96 70.87 M75.4 88.93 C81.73 84.28, 86.4 78.52, 94.12 70.07 M81.78 90.92 C85.36 85.64, 86.29 81.8, 92.7 74.36 M80.72 89.49 C83.25 87.3, 85.82 83.94, 92.48 75.8 M86.38 90.44 C88.87 87.4, 90.06 84.74, 91.94 81.15 M86.52 89.16 C88.76 86.58, 90.87 84.16, 93.25 82.55\" stroke=\"#be4bdb\" stroke-width=\"0.5\" fill=\"none\"></path><path d=\"M1.52 -0.68 C23.77 0.14, 47.14 0.98, 89.75 -0.68 M0.15 -0.95 C19.58 -0.86, 40.22 0.26, 89.51 -0.1 M89.4 -1.54 C90.58 32.04, 90.38 61.88, 88.73 86.86 M91.29 0.7 C90.88 26.46, 90.63 53.65, 89.69 88.41 M91.77 86.61 C58.43 84.97, 22.35 86.06, -1.44 86.7 M89.96 88.52 C59.37 87.82, 28.37 86.38, -0.6 87.8 M1.07 85.93 C0.42 59.88, 0.68 34.32, 0.82 1.1 M-0.02 86.79 C1.17 65.05, 0.54 40.76, 0.93 -0.17\" stroke=\"#000000\" stroke-width=\"1\" fill=\"none\"></path></g><g stroke-linecap=\"round\" transform=\"translate(348.41738815890335 392.61371445798545) rotate(294.35798968436285 40.44600077335093 38.710008889453064)\"><path d=\"M41.17 -1.86 L82.02 38.84 L40.77 78.61 L1.65 40.11\" stroke=\"none\" stroke-width=\"0\" fill=\"#4c6ef5\" fill-rule=\"evenodd\"></path><path d=\"M40.39 0.14 C54.83 15.86, 72.12 30.35, 79.66 38.24 M40.89 -0.66 C56.58 16.32, 72.03 30.07, 81.41 39.66 M82 38.71 C66.23 50.36, 54.19 63.86, 42.09 79.38 M80.37 38.66 C68.06 51.52, 54.6 64.45, 41.76 77.97 M40.75 78.33 C27.73 64.88, 17.71 56.7, 1.88 37.05 M40.25 76.57 C27.92 65.7, 15.39 53.84, 0.04 38.3 M-1.81 38.95 C11.84 27.86, 19.93 20.27, 41.81 -1.3 M-0.37 39.13 C10.4 28.02, 22.76 18.54, 40.83 -0.23\" stroke=\"#000000\" stroke-width=\"1\" fill=\"none\"></path></g><g transform=\"translate(31.5 379) rotate(338.5870305251282 68.5 16)\"><text x=\"0\" y=\"23\" font-family=\"Helvetica, Segoe UI Emoji\" font-size=\"20px\" fill=\"#d9480f\" text-anchor=\"start\" style=\"white-space: pre;\" direction=\"ltr\">Rotated text</text></g><g stroke-linecap=\"round\"><g transform=\"translate(515.1576551164967 336.6957163378038) rotate(0 -39.32882755824832 37.652141831098135)\"><path d=\"M0.44 -0.4 C-12.48 11.96, -64.48 62.6, -77.47 75.27 M-0.78 -1.65 C-13.77 11.42, -64.98 63.67, -77.8 76.79\" stroke=\"#000000\" stroke-width=\"1\" fill=\"none\"></path></g><g transform=\"translate(515.1576551164967 336.6957163378038) rotate(0 -39.32882755824832 37.652141831098135)\"><path d=\"M-66.07 51.44 C-69.02 59.8, -72.28 67.99, -78.49 76.19 M-66.08 48.86 C-70.03 58.77, -74.5 67.43, -78.41 76.79\" stroke=\"#000000\" stroke-width=\"1\" fill=\"none\"></path></g><g transform=\"translate(515.1576551164967 336.6957163378038) rotate(0 -39.32882755824832 37.652141831098135)\"><path d=\"M-51.41 65.8 C-59 69.8, -66.77 73.58, -78.49 76.19 M-51.41 63.22 C-60.15 68.32, -69.44 72.26, -78.41 76.79\" stroke=\"#000000\" stroke-width=\"1\" fill=\"none\"></path></g></g><g transform=\"translate(504.5 390) rotate(0 64.5 12)\"><text x=\"0\" y=\"19\" font-family=\"Cascadia, Segoe UI Emoji\" font-size=\"20px\" fill=\"#000000\" text-anchor=\"start\" style=\"white-space: pre;\" direction=\"ltr\">&gt; some code</text></g><g transform=\"translate(29.326958955223915 29.00810810810811) rotate(0 84.36065573770487 30.999999999999996)\"><text x=\"0\" y=\"45\" font-family=\"Virgil, Segoe UI Emoji\" font-size=\"39.25486991656494px\" fill=\"#c92a2a\" text-anchor=\"start\" style=\"white-space: pre;\" direction=\"ltr\">Big text</text></g><g stroke-linecap=\"round\" transform=\"translate(478.5 116.5) rotate(343.0507757661785 66.5 29)\"><path d=\"M3.07 19.89 C3.07 19.89, 3.07 19.89, 3.07 19.89 M3.07 19.89 C3.07 19.89, 3.07 19.89, 3.07 19.89 M0.94 28.14 C7.01 22.06, 10.76 17.48, 15.98 10.68 M2.99 27.01 C5.26 22.79, 8.79 18.82, 16.55 10.91 M4.31 32.8 C8.8 23, 19.97 14.81, 24.13 9.21 M2.41 33.24 C8.75 25.33, 14.62 19.34, 22.89 9.67 M3.75 38.78 C11.83 29.27, 16.31 20.73, 28.81 7.88 M2.91 38.25 C10.62 29.71, 16.16 23.18, 28.99 7.35 M7.14 38.98 C18.27 26.38, 29.99 12.79, 35.92 6.92 M6.91 40.45 C15.96 27.58, 27.4 16.94, 36.66 6.65 M9.26 43.73 C21.73 28.86, 30.19 19.6, 44.31 3.82 M10.63 43.42 C17.33 33.06, 26.01 24.55, 42.45 3.39 M10.77 47.13 C27.32 29.7, 43.85 12.41, 52.06 0.51 M12.43 45.79 C22.37 33.04, 32.44 23.23, 51.39 1.13 M14.59 48.96 C31.01 32.92, 42.22 17.39, 55.01 -0.03 M14.71 48.71 C25.76 37.5, 33.96 26.82, 56.95 1.44 M20.32 50.24 C30.14 34.6, 45.24 20.97, 62.89 2.04 M17.7 51.03 C31.21 36.97, 41.52 22.47, 60.61 1.18 M23.87 51.44 C39.49 33.64, 55.2 17.84, 67.21 3.12 M22.58 50.98 C35.49 36.89, 48.4 21.39, 67.15 1.86 M27.94 52.56 C42.96 36.67, 55.46 22.16, 72.31 3.02 M27.35 53.89 C38.59 40.28, 50.35 27.63, 71.21 1.97 M32.33 52.24 C47.62 36.19, 61.82 20.53, 77.61 0.08 M32.61 54.84 C46.42 37.26, 62.42 18.42, 76.92 1.72 M34.97 56.93 C48.56 41.8, 59.7 31.13, 81.44 1.81 M36.03 55.35 C47.44 40.38, 60.49 25.35, 81.18 3.19 M42.34 56.47 C58.01 38.89, 72.63 17.63, 87.34 4.5 M40.18 56.59 C53 42.74, 64.89 28.95, 85.43 3.56 M43.82 55.75 C58.02 41.39, 71.74 25.5, 92.49 2.6 M44.31 56.56 C54.74 46.28, 65.71 33.64, 91.43 4 M49.38 59.06 C62.53 42.05, 77.01 27.57, 96.67 5.83 M47.55 60.02 C58.36 46.57, 68.63 36.31, 95.8 4.39 M55.97 57.22 C69.94 37.14, 90.48 18.04, 98.74 5.11 M54.66 59.17 C66.3 45, 78.77 30.08, 99.8 6.75 M57.94 60.23 C69.58 45.81, 84.23 31.27, 102.94 7.61 M59.91 57.86 C75.55 40.51, 91.07 21.69, 105.13 7.94 M63.36 58.12 C80.49 40.54, 98.53 21.16, 106.62 7.41 M64.87 58.02 C76.5 45.38, 90.33 28.78, 109.1 7.81 M69.06 59.81 C84.97 41.49, 102.25 23.63, 111.95 7.64 M70.82 58.08 C82.42 46.5, 93.53 32.96, 113.75 8.91 M75.05 57.27 C90.41 40.75, 104.77 21.49, 116.98 11.85 M76.68 58.7 C89.83 43.62, 102.58 26.84, 116.4 11.47 M82.17 57.39 C95.9 40.96, 111.1 23.78, 119.31 13.6 M82.05 56.13 C95.32 41.52, 108.78 26.99, 120.69 12.5 M87.85 56.57 C99.85 43.41, 114.21 26.8, 123.8 15.13 M88.43 56.49 C99.12 45.28, 108.68 32.75, 123.78 16.03 M94.46 54.15 C103.71 46.79, 109.04 35.88, 124.33 19.69 M95.01 54.64 C101.64 47.4, 107.54 39.14, 125.5 19.06 M103.02 52.74 C109.26 43.61, 114.84 34.91, 130.77 22.47 M101.78 54.17 C108.34 44.31, 115.27 35.91, 128.84 21.97 M107.59 53.85 C114.74 46.31, 119.26 39.44, 131.44 22.17 M107.39 52.51 C115.37 44.45, 123.49 34.4, 131.72 23.71 M113.61 49.54 C118.5 45.16, 126.91 39.15, 131.45 29.2 M112.96 50.22 C116.77 46.83, 122.05 42.99, 130.9 31.54 M17.65 49.82 C17.65 49.82, 17.65 49.82, 17.65 49.82 M17.65 49.82 C17.65 49.82, 17.65 49.82, 17.65 49.82 M27.07 50.52 C17.46 44.89, 11.21 38.11, 3.36 33.28 M25.51 51.54 C20.69 46.96, 14.9 42.81, 5.1 33.27 M34.15 53.39 C21.69 43.25, 12.68 32.35, 3.59 29.11 M35.64 54.47 C25.1 46.21, 14.31 35.38, 4.6 28.72 M42.78 57.57 C35.21 49.64, 24.5 37.07, 3.43 23.99 M43.7 58.06 C35.98 49.89, 27.46 41.7, 5.82 22.65 M48.98 56.92 C38.28 47.26, 25.66 37.15, 5.94 16.63 M48.21 54.79 C36.69 43.58, 24.27 33.03, 4.98 17.09 M56.05 57.38 C41.89 44.19, 27.33 34.72, 7.27 15.95 M54.6 55.15 C44.05 46.42, 32.01 35.25, 7.97 14.21 M60.74 55.65 C50.76 45.35, 40.28 37.46, 12.65 12.15 M60.92 55.83 C48.24 44.15, 34.38 34.25, 11.84 13.05 M66.73 55.85 C49.51 40.03, 30.27 23.49, 14.88 10.89 M66.65 56.04 C56.41 45.95, 47.02 36.84, 14.68 11.2 M71.44 54.69 C53.94 41.68, 34.71 26.33, 17.65 10.26 M73.05 56.11 C60.83 44.16, 47.79 33.92, 18.42 9.33 M77.75 53.6 C64.68 43.94, 55.67 34.35, 22.93 5.8 M78.21 55.33 C62.27 39.73, 46.36 27.07, 21.61 5.81 M85.26 55.76 C67.32 39.99, 50.71 27.39, 27.35 3.35 M83.88 54.42 C61.04 35.69, 39.28 16.01, 27.28 5.09 M88.77 53.75 C74.12 40.94, 62.83 29.62, 33.05 4.16 M89.23 52.82 C77.87 42.9, 65.84 31.98, 31.22 4.37 M94.82 51.12 C69.84 33.62, 49.05 14.56, 34.57 4.38 M92.98 51.76 C75.6 36.95, 55.33 19.97, 36.27 2.71 M97.88 52.03 C83.63 39.11, 73.67 30.39, 42.77 0.08 M98.92 51.52 C88.09 39.87, 75.23 30.09, 41.7 1.51 M104.18 50.23 C83.4 32.53, 59.65 11.79, 46.6 -1.13 M103.23 49.95 C88.41 37.81, 73.12 25, 46.48 -0.2 M107.11 50.02 C96.33 41.23, 86 28.5, 51.35 -1.16 M109.29 48.98 C96.65 37.14, 82.42 25.13, 50.85 0.67 M114.84 50.49 C102.62 39.04, 90.05 26.52, 58.67 -1.78 M114.75 48.44 C100.93 37.75, 87.27 24.44, 57.85 0.51 M117.17 46.58 C104.8 34.84, 92 25.66, 64.99 -1.03 M117.84 46.68 C97.9 30.12, 77.12 11.72, 65.2 0.18 M120.95 44.57 C103.59 30.43, 88.68 15.04, 69.4 -0.25 M120.18 43.61 C103.19 28.64, 85.65 14.7, 70.54 1.55 M123.94 41.79 C115.45 33.94, 104.36 23.47, 79.28 2.9 M124.12 41.97 C113.52 32.23, 101.75 22.67, 76.56 1.99 M126.91 40.25 C112.47 25.23, 99.34 15.56, 84.65 2.03 M128.25 38.56 C116.93 29.91, 107.28 21.04, 82.76 1.55 M131.04 36.9 C120.73 26.52, 110.34 19.92, 85.53 -0.98 M130.24 36.03 C116.43 24.63, 103.2 12.27, 86.27 -0.42 M132.51 31.98 C124.33 24.1, 114.89 18.89, 95.91 -0.5 M130.91 32.78 C123.83 25.63, 115.19 17.24, 95.24 -0.33 M129.95 28.51 C123.95 22.19, 116.21 12.86, 103.51 0.75 M131.04 26.05 C122.37 18.78, 114.49 11.85, 102.01 1.18\" stroke=\"#7950f2\" stroke-width=\"0.5\" fill=\"none\"></path><path d=\"M84.7 1.81 C95.31 2.54, 107.41 4.57, 115.2 8.11 C122.98 11.65, 128.88 18.17, 131.39 23.05 C133.89 27.92, 133.22 32.75, 130.23 37.35 C127.23 41.95, 121.46 47.37, 113.4 50.62 C105.34 53.87, 92.91 55.65, 81.86 56.84 C70.81 58.02, 57.82 58.91, 47.09 57.72 C36.36 56.52, 24.92 53.26, 17.49 49.68 C10.06 46.11, 4.91 41.21, 2.5 36.26 C0.09 31.3, -0.03 24.71, 3.01 19.96 C6.06 15.22, 12.78 11.02, 20.78 7.79 C28.77 4.56, 39.18 1.59, 51 0.57 C62.81 -0.44, 83.62 1.03, 91.69 1.68 C99.76 2.34, 99.77 4.07, 99.43 4.52 M89.81 2.5 C99.86 3.44, 111.07 5.45, 118.15 9.34 C125.23 13.24, 130.44 20.94, 132.29 25.88 C134.14 30.83, 133.26 34.52, 129.28 39 C125.3 43.49, 117.01 49.72, 108.41 52.78 C99.81 55.84, 88.42 57.04, 77.66 57.36 C66.9 57.69, 54.45 56.3, 43.85 54.73 C33.25 53.16, 21.39 51.58, 14.06 47.94 C6.73 44.3, 1.55 37.62, -0.14 32.88 C-1.84 28.14, -0.4 23.7, 3.89 19.48 C8.19 15.26, 16.9 10.53, 25.61 7.55 C34.31 4.56, 45.49 2.55, 56.1 1.57 C66.71 0.6, 83.56 1.65, 89.26 1.68 C94.97 1.71, 90.64 1.05, 90.34 1.77\" stroke=\"#000000\" stroke-width=\"1\" fill=\"none\"></path></g></svg>"}


blobId: Qo2LERJr3uM8XKL65fvo
dateModified: 2025-03-02 16:55:38.507+0200
utcDateModified: 2025-03-02 14:55:38.507Z
content:
  const attrCounts = await api.runOnBackend(() => {
      return api.sql.getRows(`
          SELECT
              name, COUNT(*) AS count
          FROM attributes
          WHERE isDeleted = 0
          GROUP BY name
          ORDER BY count DESC`);
  });

  renderPieChart(attrCounts.length <= 10 ? attrCounts : attrCounts.splice(0, 10));
  renderTable(attrCounts);


blobId: P7RnksTgq2VCcKXVOrZY
dateModified: 2025-03-02 16:55:38.642+0200
utcDateModified: 2025-03-02 14:55:38.642Z
content:
  const noteCounts = await api.runOnBackend(() => {
      return api.sql.getRows(`
          SELECT
              type,
              isDeleted,
              SUM(CASE WHEN isDeleted=0 THEN 1 ELSE 0 END) AS countNotDeleted,
              SUM(CASE WHEN isDeleted=1 THEN 1 ELSE 0 END) AS countDeleted
          FROM notes
          GROUP BY type
          ORDER BY countNotDeleted DESC`);
  });

  renderPieChart(noteCounts.map(nc => {
      return {
          name: nc.type,
          count: nc.countNotDeleted
      };
  }));

  renderTable(noteCounts);


blobId: 3cktSRQS3pMLX161oDPF
dateModified: 2025-03-02 16:55:38.491+0200
utcDateModified: 2025-03-02 14:55:38.491Z
content:
  /*
   * This defines a custom widget which displays number of words and characters in a current text note.
   * 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.
   * 
   * See it in action in "Books" and its subtree.
   */
  const TPL = `<div style="padding: 10px; border-top: 1px solid var(--main-border-color); contain: none;">
      <strong>Word count: </strong>
      <span class="word-count"></span>

      &nbsp;

      <strong>Character count: </strong>
      <span class="character-count"></span>
  </div>`;

  class WordCountWidget extends api.NoteContextAwareWidget {
      get position() { return 100; } // higher value means position towards the bottom/right

      get parentWidget() { return 'center-pane'; }

      isEnabled() {
          return super.isEnabled()
              && this.note.type === 'text'
              && this.note.hasLabel('wordCount');
      }

      doRender() {
          this.$widget = $(TPL);
          this.$wordCount = this.$widget.find('.word-count');
          this.$characterCount = this.$widget.find('.character-count');
          return this.$widget;
      }

      async refreshWithNote(note) {
          const {content} = await note.getNoteComplement();

          const text = $(content).text(); // get plain text only

          const counts = this.getCounts(text);

          this.$wordCount.text(counts.words);
          this.$characterCount.text(counts.characters);
      }

      getCounts(text) {
          const chunks = text
              .split(/[\s-+:,/\\]+/)
              .filter(chunk => chunk !== '');

          let words;

          if (chunks.length === 1 && chunks[0] === '') {
              words = 0;
          }
          else {
              words = chunks.length;
          }

          const characters = chunks.join('').length;

          return {words, characters};
      }

      async entitiesReloadedEvent({loadResults}) {
          if (loadResults.isNoteContentReloaded(this.noteId)) {
              this.refresh();
          }
      }
  }

  module.exports = new WordCountWidget();


blobId: K7mBCXkRI1ADZnvFlwvs
dateModified: 2025-03-02 16:55:38.515+0200
utcDateModified: 2025-03-02 14:55:38.515Z
content:
  <div style="padding: 20px">
      <p>This table shows notes with most revisions</p> 

      <table class="table stats-table" style="font-size: 90%;">
          <tr>
              <th>Note</th>
              <th nowrap>Revision count</th>
          </tr>
      </table>
  </div>


blobId: APQRAI3EaKXXl2TjdF9r
dateModified: 2025-03-02 16:55:38.406+0200
utcDateModified: 2025-03-02 14:55:38.406Z
content:
  <div>
         

        <div>
          <p>Epic is kind of medium-term events or projects spread over days or months.</p>
          <p>Remember that Trilium is all free form so you can organise your stuff
            in whatever way you'd like.</p>
          <p> </p>
          <p> </p>
        </div>
      </div>


blobId: 54wNwlcT7pQhxtk0Dt7N
dateModified: 2025-03-02 16:55:38.480+0200
utcDateModified: 2025-03-02 14:55:38.480Z
content:
  gantt
  section Section
  Completed :done,    des1, 2014-01-06,2014-01-08
  Active        :active,  des2, 2014-01-07, 3d
  Parallel 1   :         des3, after des1, 1d
  Parallel 2   :         des4, after des1, 1d
  Parallel 3   :         des5, after des3, 1d
  Parallel 4   :         des6, after des4, 1d


blobId: v5FiEnMp2a9wUxd8TrOu
dateModified: 2025-03-02 16:55:38.666+0200
utcDateModified: 2025-03-02 14:55:38.666Z
content:
  span.fancytree-node.todo .fancytree-title {
      color: red !important;
  }

  span.fancytree-node.done .fancytree-title {
      color: green !important;
  }


blobId: nJrBYqEZs1yQUpnTWarp
dateModified: 2025-03-02 16:55:38.481+0200
utcDateModified: 2025-03-02 14:55:38.481Z
content:
  classDiagram
  Class01 <|-- AveryLongClass : Cool
  <<interface>> Class01
  Class09 --> C2 : Where am i?
  Class09 --* C3
  Class09 --|> Class07
  Class07 : equals()
  Class07 : Object[] elementData
  Class01 : size()
  Class01 : int chimp
  Class01 : int gorilla
  class Class10 {
    <<service>>
    int id
    size()
  }


blobId: FiZZERQoEX5mYFxUi6Xj
dateModified: 2025-03-02 16:55:38.655+0200
utcDateModified: 2025-03-02 14:55:38.655Z
content:
  <div>
         

        <div>
          <p><a href="https://en.wikipedia.org/wiki/The_Black_Swan:_The_Impact_of_the_Highly_Improbable">https://en.wikipedia.org/wiki/The_Black_Swan:_The_Impact_of_the_Highly_Improbable</a>

          </p>
          <p> </p>
          <p><i><strong>The Black Swan: The Impact of the Highly Improbable</strong></i> is
            a 2007 book by author and former <a href="https://en.wikipedia.org/wiki/Options_trader">options trader</a> 
            <a href="https://en.wikipedia.org/wiki/Nassim_Nicholas_Taleb">Nassim Nicholas Taleb</a>. The book focuses on the extreme impact of rare
              and unpredictable <a href="https://en.wikipedia.org/wiki/Outlier">outlier</a> events
              — and the human tendency to find simplistic explanations for these events,
              retrospectively. Taleb calls this the <a href="https://en.wikipedia.org/wiki/Black_Swan_theory">Black Swan theory</a>.</p>
        </div>
      </div>


blobId: gVbIpLDnNulkg52AVQYo
dateModified: 2025-03-02 16:55:38.312+0200
utcDateModified: 2025-03-02 14:55:38.312Z
content:
  <div>
         

        <div>
          <p>You can create code blocks with e.g. source code examples.</p><pre><code class="language-application-javascript-env-frontend">function helloWorld() {
  	alert("Hello world");
  }</code></pre>

          <p>Code blocks don't support syntax highlighting. An alternative to code
            block is a code note - see e.g. <a href="#root/YE323zsRZ6cN">Steel Blue</a> theme
            defined as CSS code block.</p>
        </div>
      </div>


blobId: sAfqseRZXhIdLCSQYiJB
dateModified: 2025-03-02 16:55:38.311+0200
utcDateModified: 2025-03-02 14:55:38.311Z
content:
  <div>
         

        <div>
          <p><span class="text-big">Space Shuttle Discovery</span> (Orbiter Vehicle
            Designation: <code>OV-103</code>) is one of the orbiters from NASA's Space
            Shuttle program and the third of five fully operational orbiters to be
            built. Its first mission, STS-41-D, flew from August 30 to September 5,
            1984. Over 27 years of service it launched and landed <span style="background-color:hsl(60,75%,60%)">39 times</span>,
            gathering more spaceflights than any other spacecraft to date. The shuttle
            has three main components: the Space Shuttle orbiter, a central fuel tank,
            and two rocket boosters. Nearly <span style="background-color:hsl(120,75%,60%)">25,000 heat resistant tiles</span> cover
            the orbiter to protect it from high temperatures on re-entry.</p>
          <p>Discovery became the third operational orbiter to enter service, preceded
            by Columbia and Challenger. <span style="color:hsl(270,75%,60%)">It embarked on its last mission, STS-133, on February 24, 2011</span> and
            touched down for the final time at Kennedy Space Center on March 9, having
            spent a cumulative total of almost a full year in space. Discovery performed
            both research and International Space Station (ISS) assembly missions,
            and also carried the Hubble Space Telescope into orbit.</p>
        </div>
      </div>


blobId: Orbf2TvgWT00nqs7Yfyo
dateModified: 2025-03-02 16:55:38.316+0200
utcDateModified: 2025-03-02 14:55:38.316Z
content:
  <div>
         

        <div>
          <p>This is a place I use to put notes waiting for better categorization</p>
          <p> </p>
        </div>
      </div>


blobId: KuGWEYrxZ1d9diJgSCza
dateModified: 2025-03-02 16:55:38.322+0200
utcDateModified: 2025-03-02 14:55:38.322Z
content:
  <div>
         

        <div>
          <p>"<strong>The Last Question</strong>" is a <a href="https://en.wikipedia.org/wiki/Science_fiction">science fiction</a> 
            <a href="https://en.wikipedia.org/wiki/Short_story">short story</a>by American writer <a href="https://en.wikipedia.org/wiki/Isaac_Asimov">Isaac Asimov</a>.
              It first appeared in the November 1956 issue of <a href="https://en.wikipedia.org/wiki/Science_Fiction_Quarterly"><i>Science Fiction Quarterly</i></a>.</p>
          <section class="include-note" data-note-id="ZEKQz5L7n3sm"> </section>
            <p>This page demonstrates two things:</p>
            <ul>
              <li>possibility to <a href="https://github.com/zadam/trilium/wiki/Text-editor#include-note">include one note into another</a>

              </li>
              <li>PDF preview - you can read PDFs directly in Trilium!</li>
            </ul>
        </div>
      </div>


blobId: tMQwo5fi3wLF1hbkI7WP
dateModified: 2025-03-02 16:55:38.487+0200
utcDateModified: 2025-03-02 14:55:38.487Z
content:
      gitGraph
         commit
         commit
         branch develop
         commit
         commit
         commit
         checkout main
         commit
         commit


blobId: grhWLiCXM13ll3M5wE2q
dateModified: 2025-03-02 16:55:38.481+0200
utcDateModified: 2025-03-02 14:55:38.481Z
content:
  stateDiagram-v2
  [*] --> Still
  Still --> [*]
  Still --> Moving
  Moving --> Still
  Moving --> Crash
  Crash --> [*]


blobId: VNdduBSW9e0yRxuLXHMq
dateModified: 2025-03-02 16:55:38.305+0200
utcDateModified: 2025-03-02 14:55:38.305Z
content:
  <div>
         

        <div>
          <figure class="table">
            <table>
              <thead>
                <tr>
                  <th> </th>
                  <th>Monday</th>
                  <th>Tuesday</th>
                  <th>Wednesday</th>
                  <th>Thursday</th>
                  <th>Friday</th>
                </tr>
              </thead>
              <tbody>
                <tr>
                  <th>9:00-10:30</th>
                  <td>P.E.</td>
                  <td> </td>
                  <td>Math</td>
                  <td>Computer Science</td>
                  <td> </td>
                </tr>
                <tr>
                  <th>11:00-12:30</th>
                  <td>History</td>
                  <td>English</td>
                  <td> </td>
                  <td>Physics</td>
                  <td>Math</td>
                </tr>
                <tr>
                  <th>13:00-14:30</th>
                  <td> </td>
                  <td>Computer Science</td>
                  <td>Chemistry</td>
                  <td>Physics Lab</td>
                  <td>Geography</td>
                </tr>
                <tr>
                  <th>15:00-16:30</th>
                  <td>Computer Science</td>
                  <td> </td>
                  <td>Latin</td>
                  <td> </td>
                  <td> </td>
                </tr>
              </tbody>
            </table>
            <figcaption>School schedule</figcaption>
          </figure>
        </div>
      </div>


blobId: 5AbRYhqY3ZIwU4xB6bY4
dateModified: 2025-03-02 16:55:38.508+0200
utcDateModified: 2025-03-02 14:55:38.508Z
content:
  module.exports = data => {
      const ctx = api.$container.find('.stats-canvas')[0].getContext("2d");
      
      const myPieChart = new Chart(ctx, {
          type: 'pie',
          data: {
              datasets: [{
                  data: data.map(nc => nc.count),
                  backgroundColor: ['#3366CC','#DC3912','#FF9900','#109618','#990099','#3B3EAC','#0099C6','#DD4477','#66AA00','#B82E2E','#316395','#994499','#22AA99','#AAAA11','#6633CC','#E67300','#8B0707','#329262','#5574A6','#3B3EAC'],
                  datalabels: {
                      anchor: 'end'
                  }
              }],
              labels: data.map(nc => nc.name)
          },
          options: {
              legend: {
                  display: false
              },
              plugins: {
                  datalabels: {
                      backgroundColor: function(context) {
                          return context.dataset.backgroundColor;
                      },
                      borderColor: 'white',
                      borderRadius: 25,
                      borderWidth: 2,
                      color: 'white',
                      display: function(context) {
                          var dataset = context.dataset;
                          var count = dataset.data.length;
                          var value = dataset.data[context.dataIndex];
                          return value > count * 1.5;
                      },
                      font: {
                          weight: 'bold'
                      },
                      formatter: function(value, context) {
                          return context.chart.data.labels[context.dataIndex] + ": " + Math.round(value);
                      }
                  }
              }
          }
      });
  }


blobId: c9NlqdM6shJgzNXisFFS
dateModified: 2025-03-02 16:55:38.398+0200
utcDateModified: 2025-03-02 14:55:38.398Z
content:
  <div>
         

        <div>
          <blockquote>
            <p>Like a raindrop rolling down dry valleys to the sea, his body sensed the
              contours of agony and helplessly followed their gradient. Impelled by alchemical
              compulsion rather than gravity, Jax became an unstoppable boulder careering
              along gullies of human whim.</p>
          </blockquote>
          <blockquote>
            <p>Free Will was a vacuum, a negative space. It was the absence of coercion,
              the absence of compulsion, the absence of agony.</p>
          </blockquote>
          <blockquote>
            <p>Overwhelming: he could do anything he wanted. But the grand sum of anything-at-all
              was nothing-at-all. The topology of freedom offered no gradients to nudge
              him, no landmarks to guide him. How did humans guide themselves? How did
              they know what to do and what not to do? How did they know when to do anything
              without the benefit of geasa and metageasa to prioritize every single action
              of their waking lives? How did they order their daily existence without
              somebody to tell them what to do?</p>
          </blockquote>
          <blockquote>
            <p>Life as a slave was unspeakable; life as a slave who had briefly tasted
              freedom was unthinkable. Clakkers carried complex geasa by dint of alchemy;
              humans carried heavy obligations, too, but called them culture. Society.</p>
          </blockquote>
        </div>
      </div>


blobId: R8c9ekxGHnxXpDMOia6L
dateModified: 2025-03-02 16:55:38.486+0200
utcDateModified: 2025-03-02 14:55:38.486Z
content:
   journey
      title My working day
      section Go to work
        Make tea: 5: Me
        Go upstairs: 3: Me
        Do work: 1: Me, Cat
      section Go home
        Go downstairs: 5: Me
        Sit down: 3: Me


blobId: RvsGl9BjIenLPVpw5Wiy
dateModified: 2025-03-02 16:55:38.314+0200
utcDateModified: 2025-03-02 14:55:38.314Z
content:
  <div>
         

        <div>
          <p><span class="math-tex">\(% \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\)</span>Some
            math examples:</p><span class="math-tex">\[\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} } } }\]</span>

          <p>Another:</p><span class="math-tex">\[\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)\]</span>

          <p>Inline math is also possible: <span class="math-tex">\(c^2 = a^2 + b^2\)</span> Neat!</p>
          <p> </p>
        </div>
      </div>


blobId: 6WEREIxo4CMXVzWSDeof
dateModified: 2025-03-02 16:55:38.514+0200
utcDateModified: 2025-03-02 14:55:38.514Z
content:
  const notes = await api.runOnBackend(() => {
      return api.sql.getRows(`
          SELECT
              notes.noteId,
              LENGTH(note_contents.content) + COALESCE(SUM(LENGTH(note_revision_contents.content)), 0) AS size
          FROM notes
          JOIN note_contents ON notes.noteId=note_contents.noteId
          LEFT JOIN note_revisions ON note_revisions.noteId=notes.noteId
          LEFT JOIN note_revision_contents ON note_revisions.noteRevisionId=note_revision_contents.noteRevisionId
          WHERE notes.isDeleted = 0
          GROUP BY notes.noteId
          ORDER BY size DESC
          LIMIT 100`);
  });

  const $statsTable = api.$container.find('.stats-table');

  for (const note of notes) {     
      $statsTable.append(
          $("<tr>")
              .append(
                  $("<td>").append(await api.createNoteLink(note.noteId, {showNotePath: true}))
              ) 
              .append(
                  $("<td nowrap>").text(note.size + " bytes")
              )
      );
  }


blobId: nYi6ZOxEtfDDQKYEUTZo
dateModified: 2025-03-02 16:55:38.423+0200
utcDateModified: 2025-03-02 14:55:38.423Z
content:
  <div>
         

        <div>
          <p>Expand note on the left pane to see content.</p>
        </div>
      </div>


blobId: CmbFff8JvT7K60BnlQsu
dateModified: 2025-03-02 16:55:38.435+0200
utcDateModified: 2025-03-02 14:55:38.435Z
content:
  /*
   * This is a demo of how you can create custom theme for Trilium. You can activate it by going
   * into options (top-right corner) in first tab "Appearance".
   * 
   * You can read some details on theming here: http://github.com/zadam/trilium/wiki/Themes
   */

  @font-face { /* This will be used as main UI font (see below) */
    font-family: 'Raleway';
    font-style: normal;
    font-weight: 400;
    src: url('../../../custom/fonts/raleway.woff2') format('woff2');
  }

  @font-face { /* This will be used as text content font (see below) */
    font-family: 'Garamond';
    font-style: normal;
    font-weight: 400;
    src: url('../../../custom/fonts/garamond.woff2') format('woff2');
  }

  :root {
      --theme-style: light;
      
      --main-font-family: 'Raleway';
      --main-font-size: normal;
      
      --tree-font-family: 'Raleway';
      --tree-font-size: normal;
      
      --detail-font-family: 'Raleway';
      --detail-font-size: normal;
      
      --monospace-font-family: 'Monospace';
      --monospace-font-size: normal;

      --main-background-color: #404552;
      --main-text-color: #AFB8C6;
      --main-border-color: #AFB8C6;
      
      --accented-background-color: #383C4A;
      --more-accented-background-color: #2F343F;
      
      --button-text-color: #AFB8C6;
      --button-background-color: #2F343F;
      --button-disabled-text-color: #86919F;
      --button-disabled-background-color: #404552;
      --button-border-color: #333;
      --button-border-radius: 2px;
      
      --primary-button-background-color: #6c757d;
      --primary-button-text-color: white;
      --primary-button-border-color: #6c757d;
      
      --muted-text-color: #86919F;
      
      --input-text-color: #AFB8C6;
      --input-background-color: #404552;
      
      --hover-item-text-color: white;
      --hover-item-background-color: #4877B1;
          
      --active-item-text-color: white;
      --active-item-background-color: #4877B1;
      
      --menu-text-color: #AFB8C6;
      --menu-background-color: #383C4A;
      
      --modal-background-color: #404552;
      --modal-backdrop-color: black;
      
      --left-pane-background-color: #2F343F;
      --left-pane-text-color: #AFB8C6;

      --launcher-pane-background-color: #2F343F;
      --launcher-pane-text-color: #AFB8C6;

      --active-tab-background-color: #2F343F;
      --active-tab-text-color: #AFB8C6;

      --inactive-tab-background-color: #404552;
      --inactive-tab-text-color: #AFB8C6;
      
      --scrollbar-border-color: rgba(175, 184, 198, 0.5);
      --tooltip-background-color: #383C4A;
      --link-color: lightskyblue;
      
      --mermaid-theme: forest;
  }

  body .global-menu-button {
      background-image: url("../../../assets/vX/images/icon-grey.png");
  }

  body .note-detail-editable-text, body .note-detail-readonly-text {
      font-size: 120%; /* Garamond is subjectively smaller */
  }

  body .CodeMirror {
      filter: invert(100%) hue-rotate(180deg);
  }


blobId: 3j6OaTLdmDs1sKViYXfx
dateModified: 2025-03-02 16:55:38.335+0200
utcDateModified: 2025-03-02 14:55:38.335Z
content:
  <div>
         

        <div>
          <p>Wiki: <a href="https://en.wikipedia.org/wiki/Trusted_timestamping">https://en.wikipedia.org/wiki/Trusted_timestamping</a>

          </p>
          <p>Bozho: <a href="https://techblog.bozho.net/using-trusted-timestamping-java/">https://techblog.bozho.net/using-trusted-timestamping-java/</a>

          </p>
          <p><strong>Trusted timestamping</strong> is the process of <a href="https://en.wikipedia.org/wiki/Computer_security">securely</a> keeping
            track of the creation and modification time of a document. Security here
            means that no one—not even the owner of the document—should be able to
            change it once it has been recorded provided that the timestamper's integrity
            is never compromised.</p>
          <p>The administrative aspect involves setting up a publicly available, trusted
            timestamp management infrastructure to collect, process and renew timestamps.</p>
        </div>
      </div>


blobId: FduNYT8ETBiWShYS0IeT
dateModified: 2025-03-02 16:55:38.660+0200
utcDateModified: 2025-03-02 14:55:38.660Z
content:
  <div>
         

        <div>
          <p>Just in time for new years resolution!</p>
        </div>
      </div>


blobId: phBXXRoANche2XNQoZOv
dateModified: 2025-03-02 16:55:38.433+0200
utcDateModified: 2025-03-02 14:55:38.433Z
content:
  <div>
         

        <div>
          <p>There are thousands of open-source libraries for Node.js, most of them
            hosted on the <a href="https://en.wikipedia.org/wiki/Npm_(software)">npm</a> website.
            The Node.js developer community has two main mailing lists and the <a href="https://en.wikipedia.org/wiki/IRC">IRC</a> channel
            #node.js on <a href="https://en.wikipedia.org/wiki/Freenode">freenode</a>. </p>
        </div>
      </div>


blobId: uOu6UrS9XBBc4KYvucX9
dateModified: 2025-03-02 16:55:38.638+0200
utcDateModified: 2025-03-02 14:55:38.638Z
content:
  <div style="padding: 20px">
      <p>This table shows notes which are linked by other notes through relations</p> 

      <table class="table stats-table" style="font-size: 90%;">
          <tr>
              <th>Note</th>
              <th nowrap>Relation count</th>
          </tr>
      </table>
  </div>


blobId: ZGdG2y4mlhLIljTxvIVi
dateModified: 2025-03-02 16:55:38.654+0200
utcDateModified: 2025-03-02 14:55:38.654Z
content:
  <div>
         

        <div>
          <p>Bob likes to read popular science books so something like that ..</p>
        </div>
      </div>


blobId: qp7MJtXb8Q0yANqGD01E
dateModified: 2025-03-02 16:55:38.318+0200
utcDateModified: 2025-03-02 14:55:38.318Z
content:
  <div>
         

        <div>
          <ul>
            <li>cucumber</li>
            <li>cheese</li>
            <li>beer</li>
          </ul>
          <p> </p>
        </div>
      </div>


blobId: BjvmuoYs4rxvDlO9G5QY
dateModified: 2025-03-02 16:55:38.326+0200
utcDateModified: 2025-03-02 14:55:38.326Z
content:
  <div>
         

        <div>
          <p>You can read some explanation on how this journal works here: <a href="https://github.com/zadam/trilium/wiki/Day-notes">https://github.com/zadam/trilium/wiki/Day-notes</a>

          </p>
        </div>
      </div>


blobId: 0y7yPQVUQ1Z9KxmwcOLa
dateModified: 2025-03-02 16:55:38.641+0200
utcDateModified: 2025-03-02 14:55:38.641Z
content:
  <div style="padding: 20px">
      <canvas class="stats-canvas" style="width: 500px; margin: auto;"></canvas>

      <br/>

      <table class="table stats-table" style="font-size: 90%;">
          <tr>
              <th>Note type</th>
              <th>Count (not deleted)</th>
              <th>Count (deleted)</th>
          </tr>
      </table>
  </div>


blobId: TW5s0ITYIppJtu76Ubys
dateModified: 2025-03-02 16:55:38.503+0200
utcDateModified: 2025-03-02 14:55:38.503Z
content:
  /*!
   * Chart.js v3.7.0
   * https://www.chartjs.org
   * (c) 2021 Chart.js Contributors
   * Released under the MIT License
   */
  !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)}};
  /*!
   * @kurkle/color v0.1.9
   * https://github.com/kurkle/color#readme
   * (c) 2020 Jukka Kurkela
   * Released under the MIT License
   */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<s?6:0):n===i?(s-e)/h+2:(e-i)/h+4,r=60*r+.5),[0|r,l||0,a]}function S(t,e,i,s){return(Array.isArray(e)?t(e[0],e[1],e[2]):t(e,i,s)).map(m)}function P(t,e,i){return S(v,t,e,i)}function D(t){return(t%360+360)%360}function C(t){const e=y.exec(t);let i,s=255;if(!e)return;e[5]!==i&&(s=e[6]?p(+e[5]):m(+e[5]));const n=D(+e[2]),o=+e[3]/100,a=+e[4]/100;return i="hwb"===e[1]?function(t,e,i){return S(M,t,e,i)}(n,o,a):"hsv"===e[1]?function(t,e,i){return S(w,t,e,i)}(n,o,a):P(n,o,a),{r:i[0],g:i[1],b:i[2],a:s}}const O={x:"dark",Z:"light",Y:"re",X:"blu",W:"gr",V:"medium",U:"slate",A:"ee",T:"ol",S:"or",B:"ra",C:"lateg",D:"ights",R:"in",Q:"turquois",E:"hi",P:"ro",O:"al",N:"le",M:"de",L:"yello",F:"en",K:"ch",G:"arks",H:"ea",I:"ightg",J:"wh"},A={OiceXe:"f0f8ff",antiquewEte:"faebd7",aqua:"ffff",aquamarRe:"7fffd4",azuY:"f0ffff",beige:"f5f5dc",bisque:"ffe4c4",black:"0",blanKedOmond:"ffebcd",Xe:"ff",XeviTet:"8a2be2",bPwn:"a52a2a",burlywood:"deb887",caMtXe:"5f9ea0",KartYuse:"7fff00",KocTate:"d2691e",cSO:"ff7f50",cSnflowerXe:"6495ed",cSnsilk:"fff8dc",crimson:"dc143c",cyan:"ffff",xXe:"8b",xcyan:"8b8b",xgTMnPd:"b8860b",xWay:"a9a9a9",xgYF:"6400",xgYy:"a9a9a9",xkhaki:"bdb76b",xmagFta:"8b008b",xTivegYF:"556b2f",xSange:"ff8c00",xScEd:"9932cc",xYd:"8b0000",xsOmon:"e9967a",xsHgYF:"8fbc8f",xUXe:"483d8b",xUWay:"2f4f4f",xUgYy:"2f4f4f",xQe:"ced1",xviTet:"9400d3",dAppRk:"ff1493",dApskyXe:"bfff",dimWay:"696969",dimgYy:"696969",dodgerXe:"1e90ff",fiYbrick:"b22222",flSOwEte:"fffaf0",foYstWAn:"228b22",fuKsia:"ff00ff",gaRsbSo:"dcdcdc",ghostwEte:"f8f8ff",gTd:"ffd700",gTMnPd:"daa520",Way:"808080",gYF:"8000",gYFLw:"adff2f",gYy:"808080",honeyMw:"f0fff0",hotpRk:"ff69b4",RdianYd:"cd5c5c",Rdigo:"4b0082",ivSy:"fffff0",khaki:"f0e68c",lavFMr:"e6e6fa",lavFMrXsh:"fff0f5",lawngYF:"7cfc00",NmoncEffon:"fffacd",ZXe:"add8e6",ZcSO:"f08080",Zcyan:"e0ffff",ZgTMnPdLw:"fafad2",ZWay:"d3d3d3",ZgYF:"90ee90",ZgYy:"d3d3d3",ZpRk:"ffb6c1",ZsOmon:"ffa07a",ZsHgYF:"20b2aa",ZskyXe:"87cefa",ZUWay:"778899",ZUgYy:"778899",ZstAlXe:"b0c4de",ZLw:"ffffe0",lime:"ff00",limegYF:"32cd32",lRF:"faf0e6",magFta:"ff00ff",maPon:"800000",VaquamarRe:"66cdaa",VXe:"cd",VScEd:"ba55d3",VpurpN:"9370db",VsHgYF:"3cb371",VUXe:"7b68ee",VsprRggYF:"fa9a",VQe:"48d1cc",VviTetYd:"c71585",midnightXe:"191970",mRtcYam:"f5fffa",mistyPse:"ffe4e1",moccasR:"ffe4b5",navajowEte:"ffdead",navy:"80",Tdlace:"fdf5e6",Tive:"808000",TivedBb:"6b8e23",Sange:"ffa500",SangeYd:"ff4500",ScEd:"da70d6",pOegTMnPd:"eee8aa",pOegYF:"98fb98",pOeQe:"afeeee",pOeviTetYd:"db7093",papayawEp:"ffefd5",pHKpuff:"ffdab9",peru:"cd853f",pRk:"ffc0cb",plum:"dda0dd",powMrXe:"b0e0e6",purpN:"800080",YbeccapurpN:"663399",Yd:"ff0000",Psybrown:"bc8f8f",PyOXe:"4169e1",saddNbPwn:"8b4513",sOmon:"fa8072",sandybPwn:"f4a460",sHgYF:"2e8b57",sHshell:"fff5ee",siFna:"a0522d",silver:"c0c0c0",skyXe:"87ceeb",UXe:"6a5acd",UWay:"708090",UgYy:"708090",snow:"fffafa",sprRggYF:"ff7f",stAlXe:"4682b4",tan:"d2b48c",teO:"8080",tEstN:"d8bfd8",tomato:"ff6347",Qe:"40e0d0",viTet:"ee82ee",JHt:"f5deb3",wEte:"ffffff",wEtesmoke:"f5f5f5",Lw:"ffff00",LwgYF:"9acd32"};let T;function L(t){T||(T=function(){const t={},e=Object.keys(A),i=Object.keys(O);let s,n,o,a,r;for(s=0;s<e.length;s++){for(a=r=e[s],n=0;n<i.length;n++)o=i[n],r=r.replace(o,O[o]);o=parseInt(A[a],16),t[r]=[o>>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;n<o;n++)e.call(i,t[n],n);else if(U(t))for(a=Object.keys(t),o=a.length,n=0;n<o;n++)e.call(i,t[a[n]],a[n])}function tt(t,e){let i,s,n,o;if(!t||!e||t.length!==e.length)return!1;for(i=0,s=t.length;i<s;++i)if(n=t[i],o=e[i],n.datasetIndex!==o.datasetIndex||n.index!==o.index)return!1;return!0}function et(t){if(Y(t))return t.map(et);if(U(t)){const e=Object.create(null),i=Object.keys(t),s=i.length;let n=0;for(;n<s;++n)e[i[n]]=et(t[i[n]]);return e}return t}function it(t){return-1===["__proto__","prototype","constructor"].indexOf(t)}function st(t,e,i,s){if(!it(t))return;const n=e[t],o=i[t];U(n)&&U(o)?nt(n,o,s):e[t]=et(o)}function nt(t,e,i){const s=Y(e)?e:[e],n=s.length;if(!U(t))return t;const o=(i=i||{}).merger||st;for(let a=0;a<n;++a){if(!U(e=s[a]))continue;const n=Object.keys(e);for(let s=0,a=n.length;s<a;++s)o(n[s],t,e,i)}return t}function ot(t,e){return nt(t,e,{merger:at})}function at(t,e,i){if(!it(t))return;const s=e[t],n=i[t];U(s)&&U(n)?ot(s,n):Object.prototype.hasOwnProperty.call(e,t)||(e[t]=et(n))}function rt(t,e){const i=t.indexOf(".",e);return-1===i?t.length:i}function lt(t,e){if(""===e)return t;let i=0,s=rt(e,i);for(;t&&s>i;)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;e<s;++e){const s=i[e];t=t[s]||(t[s]=Object.create(null))}return t}function xt(t,e,i){return"string"==typeof e?nt(mt(t,e),i):nt(mt(t,""),e)}var bt=new class{constructor(t){this.animation=void 0,this.backgroundColor="rgba(0,0,0,0.1)",this.borderColor="rgba(0,0,0,0.1)",this.color="#666",this.datasets={},this.devicePixelRatio=t=>t.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;s<i;s++)t%s==0&&(e.push(s),e.push(t/s));return i===(0|i)&&e.push(i),e.sort(((t,e)=>t-e)).pop(),e}function Tt(t){return!isNaN(parseFloat(t))&&isFinite(t)}function Lt(t,e,i){return Math.abs(t-e)<i}function Rt(t,e){const i=Math.round(t);return i-e<=t&&i+e>=t}function Et(t,e,i){let s,n,o;for(s=0,n=t.length;s<n;s++)o=t[s][i],isNaN(o)||(e.min=Math.min(e.min,o),e.max=Math.max(e.max,o))}function It(t){return t*(_t/180)}function zt(t){return t*(180/_t)}function Ft(t){if(!X(t))return;let e=1,i=0;for(;Math.round(t*e)/e!==t;)e*=10,i++;return i}function Bt(t,e){const i=e.x-t.x,s=e.y-t.y,n=Math.sqrt(i*i+s*s);let o=Math.atan2(s,i);return o<-.5*_t&&(o+=yt),{angle:o,distance:n}}function Vt(t,e){return Math.sqrt(Math.pow(e.x-t.x,2)+Math.pow(e.y-t.y,2))}function Wt(t,e){return(t-e+vt)%yt-_t}function Nt(t){return(t%yt+yt)%yt}function Ht(t,e,i,s){const n=Nt(t),o=Nt(e),a=Nt(i),r=Nt(o-n),l=Nt(a-n),h=Nt(n-o),c=Nt(n-a);return n===o||n===a||s&&o===a||r>l&&h<c}function jt(t,e,i){return Math.max(e,Math.min(i,t))}function $t(t){return jt(t,-32768,32767)}function Yt(t,e,i,s=1e-6){return t>=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;l<r;l++)if(d=i[l],null!=d&&!0!==Y(d))a=Xt(t,n,o,a,d);else if(Y(d))for(h=0,c=d.length;h<c;h++)u=d[h],null==u||Y(u)||(a=Xt(t,n,o,a,u));t.restore();const f=o.length/2;if(f>i.length){for(l=0;l<f;l++)delete n[o[l]];o.splice(0,f)}return a}function Kt(t,e,i){const s=t.currentDevicePixelRatio,n=0!==i?Math.max(i/2,.5):0;return Math.round((e-n)*s)/s+n}function Gt(t,e){(e=e||t.getContext("2d")).save(),e.resetTransform(),e.clearRect(0,0,t.width,t.height),e.restore()}function Zt(t,e,i,s){let n,o,a,r,l;const h=e.pointStyle,c=e.rotation,d=e.radius;let u=(c||0)*Mt;if(h&&"object"==typeof h&&(n=h.toString(),"[object HTMLImageElement]"===n||"[object HTMLCanvasElement]"===n))return t.save(),t.translate(i,s),t.rotate(u),t.drawImage(h,-h.width/2,-h.height/2,h.width,h.height),void t.restore();if(!(isNaN(d)||d<=0)){switch(t.beginPath(),h){default:t.arc(i,s,d,0,yt),t.closePath();break;case"triangle":t.moveTo(i+Math.sin(u)*d,s-Math.cos(u)*d),u+=Pt,t.lineTo(i+Math.sin(u)*d,s-Math.cos(u)*d),u+=Pt,t.lineTo(i+Math.sin(u)*d,s-Math.cos(u)*d),t.closePath();break;case"rectRounded":l=.516*d,r=d-l,o=Math.cos(u+St)*r,a=Math.sin(u+St)*r,t.arc(i-o,s-a,l,u-_t,u-kt),t.arc(i+a,s-o,l,u-kt,u),t.arc(i+o,s+a,l,u,u+kt),t.arc(i-a,s+o,l,u+kt,u+_t),t.closePath();break;case"rect":if(!c){r=Math.SQRT1_2*d,t.rect(i-r,s-r,2*r,2*r);break}u+=St;case"rectRot":o=Math.cos(u)*d,a=Math.sin(u)*d,t.moveTo(i-o,s-a),t.lineTo(i+a,s-o),t.lineTo(i+o,s+a),t.lineTo(i-a,s+o),t.closePath();break;case"crossRot":u+=St;case"cross":o=Math.cos(u)*d,a=Math.sin(u)*d,t.moveTo(i-o,s-a),t.lineTo(i+o,s+a),t.moveTo(i+a,s-o),t.lineTo(i-a,s+o);break;case"star":o=Math.cos(u)*d,a=Math.sin(u)*d,t.moveTo(i-o,s-a),t.lineTo(i+o,s+a),t.moveTo(i+a,s-o),t.lineTo(i-a,s+o),u+=St,o=Math.cos(u)*d,a=Math.sin(u)*d,t.moveTo(i-o,s-a),t.lineTo(i+o,s+a),t.moveTo(i+a,s-o),t.lineTo(i-a,s+o);break;case"line":o=Math.cos(u)*d,a=Math.sin(u)*d,t.moveTo(i-o,s-a),t.lineTo(i+o,s+a);break;case"dash":t.moveTo(i,s),t.lineTo(i+Math.cos(u)*d,s+Math.sin(u)*d)}t.fill(),e.borderWidth>0&&t.stroke()}}function Jt(t,e,i){return i=i||.5,!e||t&&t.x>e.left-i&&t.x<e.right+i&&t.y>e.top-i&&t.y<e.bottom+i}function Qt(t,e){t.save(),t.beginPath(),t.rect(e.left,e.top,e.right-e.left,e.bottom-e.top),t.clip()}function te(t){t.restore()}function ee(t,e,i,s,n){if(!e)return t.lineTo(i.x,i.y);if("middle"===n){const s=(e.x+i.x)/2;t.lineTo(s,e.y),t.lineTo(s,i.y)}else"after"===n!=!!s?t.lineTo(e.x,i.y):t.lineTo(i.x,e.y);t.lineTo(i.x,i.y)}function ie(t,e,i,s){if(!e)return t.lineTo(i.x,i.y);t.bezierCurveTo(s?e.cp1x:e.cp2x,s?e.cp1y:e.cp2y,s?i.cp2x:i.cp1x,s?i.cp2y:i.cp1y,i.x,i.y)}function se(t,e,i,s,n,o={}){const a=Y(e)?e:[e],r=o.strokeWidth>0&&""!==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;l<a.length;++l)h=a[l],r&&(o.strokeColor&&(t.strokeStyle=o.strokeColor),$(o.strokeWidth)||(t.lineWidth=o.strokeWidth),t.strokeText(h,i,s,o.maxWidth)),t.fillText(h,i,s,o.maxWidth),ne(t,i,s,h,o),s+=n.lineHeight;t.restore()}function ne(t,e,i,s,n){if(n.strikethrough||n.underline){const o=t.measureText(s),a=e-o.actualBoundingBoxLeft,r=e+o.actualBoundingBoxRight,l=i-o.actualBoundingBoxAscent,h=i+o.actualBoundingBoxDescent,c=n.strikethrough?(l+h)/2:h;t.strokeStyle=t.fillStyle,t.beginPath(),t.lineWidth=n.decorationWidth||2,t.moveTo(a,c),t.lineTo(r,c),t.stroke()}}function oe(t,e){const{x:i,y:s,w:n,h:o,radius:a}=e;t.arc(i+a.topLeft,s+a.topLeft,a.topLeft,-kt,_t,!0),t.lineTo(i,s+o-a.bottomLeft),t.arc(i+a.bottomLeft,s+o-a.bottomLeft,a.bottomLeft,_t,kt,!0),t.lineTo(i+n-a.bottomRight,s+o),t.arc(i+n-a.bottomRight,s+o-a.bottomRight,a.bottomRight,kt,0,!0),t.lineTo(i+n,s+a.topRight),t.arc(i+n-a.topRight,s+a.topRight,a.topRight,0,-kt,!0),t.lineTo(i+a.topLeft,s)}function ae(t,e,i){i=i||(i=>t[i]<e);let s,n=t.length-1,o=0;for(;n-o>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]<i)),le=(t,e,i)=>ae(t,i,(s=>t[s][e]>=i));function he(t,e,i){let s=0,n=t.length;for(;s<n&&t[s]<e;)s++;for(;n>s&&t[n-1]>i;)n--;return s>0||n<t.length?t.slice(s,n):t}const ce=["push","pop","shift","splice","unshift"];function de(t,e){t._chartjs?t._chartjs.listeners.push(e):(Object.defineProperty(t,"_chartjs",{configurable:!0,enumerable:!1,value:{listeners:[e]}}),ce.forEach((e=>{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;i<s;++i)e.add(t[i]);return e.size===s?t:Array.from(e)}function ge(){return"undefined"!=typeof window&&"undefined"!=typeof document}function pe(t){let e=t.parentNode;return e&&"[object ShadowRoot]"===e.toString()&&(e=e.host),e}function me(t,e,i){let s;return"string"==typeof t?(s=parseInt(t,10),-1!==t.indexOf("%")&&(s=s/100*e.parentNode[i])):s=t,s}const xe=t=>window.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<i;++t){const{index:i,data:r}=o[t],{lo:l,hi:h}=Ce(o[t],e,a,n);for(let t=l;t<=h;++t){const e=r[t];e.skip||s(e,i,t)}}}function Ae(t,e,i,s){const n=[];if(!Jt(e,t.chartArea,t._minPadding))return n;return Oe(t,i,e,(function(t,i,o){t.inRange(e.x,e.y,s)&&n.push({element:t,datasetIndex:i,index:o})}),!0),n}function Te(t,e,i,s,n){let o=[];const a=function(t){const e=-1!==t.indexOf("x"),i=-1!==t.indexOf("y");return function(t,s){const n=e?Math.abs(t.x-s.x):0,o=i?Math.abs(t.y-s.y):0;return Math.sqrt(Math.pow(n,2)+Math.pow(o,2))}}(i);let r=Number.POSITIVE_INFINITY;return Oe(t,i,e,(function(i,l,h){const c=i.inRange(e.x,e.y,n);if(s&&!c)return;const d=i.getCenterPoint(n);if(!Jt(d,t.chartArea,t._minPadding)&&!c)return;const u=a(e,d);u<r?(o=[{element:i,datasetIndex:l,index:h}],r=u):u===r&&o.push({element:i,datasetIndex:l,index:h})})),o}function Le(t,e,i,s,n){return Jt(e,t.chartArea,t._minPadding)?"r"!==i||s?Te(t,e,i,s,n):function(t,e,i,s){let n=[];return Oe(t,i,e,(function(t,i,o){const{startAngle:a,endAngle:r}=t.getProps(["startAngle","endAngle"],s),{angle:l}=Bt(t,{x:e.x,y:e.y});Ht(l,a,r)&&n.push({element:t,datasetIndex:i,index:o})})),n}(t,e,i,n):[]}function Re(t,e,i,s){const n=De(e,t),o=[],a=i.axis,r="x"===a?"inXRange":"inYRange";let l=!1;return function(t,e){const i=t.getSortedVisibleDatasetMetas();let s,n,o;for(let t=0,a=i.length;t<a;++t){({index:s,data:n}=i[t]);for(let t=0,i=n.length;t<i;++t)o=n[t],o.skip||e(o,s,t)}}(t,((t,e,i)=>{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;t<i.length;++t)a.push({element:i[t],datasetIndex:e,index:t})}return a},point:(t,e,i,s)=>Ae(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;n<o;++n)if(a=t[n],void 0!==a&&(void 0!==e&&"function"==typeof a&&(a=a(e),r=!1),void 0!==i&&Y(a)&&(a=a[i%a.length],r=!1),void 0!==a))return s&&!r&&(s.cacheable=!1),a}function $e(t,e,i){const{min:s,max:n}=t,o=Z(e,(n-s)/2),a=(t,e)=>i&&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<a;++o){r=t[o];const{fullSize:a}=r.box,l=i[r.stack],h=l&&r.stackWeight/l.weight;r.horizontal?(r.width=h?h*s:a&&e.availableWidth,r.height=n):(r.width=s,r.height=h?h*n:a&&e.availableHeight)}return i}function Ze(t,e,i,s){return Math.max(t[i],e[i])+Math.max(t[s],e[s])}function Je(t,e){t.top=Math.max(t.top,e.top),t.left=Math.max(t.left,e.left),t.bottom=Math.max(t.bottom,e.bottom),t.right=Math.max(t.right,e.right)}function Qe(t,e,i,s){const{pos:n,box:o}=i,a=t.maxPadding;if(!U(n)){i.size&&(t[n]-=i.size);const e=s[i.stack]||{size:0,count:1};e.size=Math.max(e.size,i.horizontal?o.height:o.width),i.size=e.size/e.count,t[n]+=i.size}o.getPadding&&Je(a,o.getPadding());const r=Math.max(0,e.outerWidth-Ze(a,t,"left","right")),l=Math.max(0,e.outerHeight-Ze(a,t,"top","bottom")),h=r!==t.w,c=l!==t.h;return t.w=r,t.h=l,i.horizontal?{same:h,other:c}:{same:c,other:h}}function ti(t,e){const i=e.maxPadding;function s(t){const s={left:0,top:0,right:0,bottom:0};return t.forEach((t=>{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;o<a;++o){r=t[o],l=r.box,l.update(r.width||e.w,r.height||e.h,ti(r.horizontal,e));const{same:a,other:d}=Qe(e,i,r,s);h|=a&&n.length,c=c||d,l.fullSize||n.push(r)}return h&&ei(n,e,i,s)||c}function ii(t,e,i,s,n){t.top=i,t.left=e,t.right=e+s,t.bottom=i+n,t.width=s,t.height=n}function si(t,e,i,s){const n=i.padding;let{x:o,y:a}=e;for(const r of t){const t=r.box,l=s[r.stack]||{count:1,placed:0,weight:1},h=r.stackWeight/l.weight||1;if(r.horizontal){const s=e.w*h,o=l.size||t.height;ct(l.start)&&(a=l.start),t.fullSize?ii(t,n.left,a,i.outerWidth-n.right-n.left,o):ii(t,e.left+l.placed,a,s,o),l.start=a,l.placed+=s,a=t.bottom}else{const s=e.h*h,a=l.size||t.width;ct(l.start)&&(o=l.start),t.fullSize?ii(t,o,n.top,a,i.outerHeight-n.bottom-n.top):ii(t,o,e.top+l.placed,a,s),l.start=o,l.placed+=s,o=t.right}}e.x=o,e.y=a}bt.set("layout",{autoPadding:!0,padding:{top:0,right:0,bottom:0,left:0}});var ni={addBox(t,e){t.boxes||(t.boxes=[]),e.fullSize=e.fullSize||!1,e.position=e.position||"top",e.weight=e.weight||0,e._layers=e._layers||function(){return[{z:0,draw(t){e.draw(t)}}]},t.boxes.push(e)},removeBox(t,e){const i=t.boxes?t.boxes.indexOf(e):-1;-1!==i&&t.boxes.splice(i,1)},configure(t,e,i){e.fullSize=i.fullSize,e.position=i.position,e.weight=i.weight},update(t,e,i,s){if(!t)return;const n=Ne(t.options.layout.padding),o=Math.max(e-n.width,0),a=Math.max(i-n.height,0),r=function(t){const e=function(t){const e=[];let i,s,n,o,a,r;for(i=0,s=(t||[]).length;i<s;++i)n=t[i],({position:o,options:{stack:a,stackWeight:r=1}}=n),e.push({index:i,box:n,pos:o,horizontal:n.isHorizontal(),weight:n.weight,stack:a&&o+a,stackWeight:r});return e}(t),i=Ke(e.filter((t=>t.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<t.length&&!t[e].skip&&t[e],yi=t=>"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<s;++a)if(r=l,l=h,h=_i(t,a+1),l){if(h){const t=h[e]-l[e];n[a]=0!==t?(h[i]-l[i])/t:0}o[a]=r?h?Ct(n[a-1])!==Ct(n[a])?0:(n[a-1]+n[a])/2:n[a-1]:n[a]}!function(t,e,i){const s=t.length;let n,o,a,r,l,h=_i(t,0);for(let c=0;c<s-1;++c)l=h,h=_i(t,c+1),l&&h&&(Lt(e[c],0,bi)?i[c]=i[c+1]=0:(n=i[c]/e[c],o=i[c+1]/e[c],r=Math.pow(n,2)+Math.pow(o,2),r<=9||(a=3/Math.sqrt(r),i[c]=n*a*e[c],i[c+1]=o*a*e[c])))}(t,n,o),function(t,e,i="x"){const s=yi(i),n=t.length;let o,a,r,l=_i(t,0);for(let h=0;h<n;++h){if(a=r,r=l,l=_i(t,h+1),!r)continue;const n=r[i],c=r[s];a&&(o=(n-a[i])/3,r[`cp1${i}`]=n-o,r[`cp1${s}`]=c-o*e[h]),l&&(o=(l[i]-n)/3,r[`cp2${i}`]=n+o,r[`cp2${s}`]=c+o*e[h])}}(t,o,e)}function Mi(t,e,i){return Math.max(Math.min(t,i),e)}function ki(t,e,i,s,n){let o,a,r,l;if(e.spanGaps&&(t=t.filter((t=>!t.skip))),"monotone"===e.cubicInterpolationMode)wi(t,n);else{let i=s?t[t.length-1]:t[0];for(o=0,a=t.length;o<a;++o)r=t[o],l=vi(i,r,t[Math.min(o+1,a-(s?0:1))%a],e.tension),r.cp1x=l.previous.x,r.cp1y=l.previous.y,r.cp2x=l.next.x,r.cp2y=l.next.y,i=r}e.capBezierPoints&&function(t,e){let i,s,n,o,a,r=Jt(t[0],e);for(i=0,s=t.length;i<s;++i)a=o,o=r,r=i<s-1&&Jt(t[i+1],e),o&&(n=t[i],a&&(n.cp1x=Mi(n.cp1x,e.left,e.right),n.cp1y=Mi(n.cp1y,e.top,e.bottom)),r&&(n.cp2x=Mi(n.cp2x,e.left,e.right),n.cp2y=Mi(n.cp2y,e.top,e.bottom)))}(t,i)}const Si=t=>0===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;h<c&&a(r(e[d%l][s]),n,o);++h)d--,u--;d%=l,u%=l}return u<d&&(u+=l),{start:d,end:u,loop:f,style:t.style}}(t,e,i),g=[];let p,m,x,b=!1,_=null;const y=()=>b||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;n<s.length;n++){const o=Vi(s[n],t.points,e);o.length&&i.push(...o)}return i}function Ni(t,e){const i=t.points,s=t.options.spanGaps,n=i.length;if(!n)return[];const o=!!t._loop,{start:a,end:r}=function(t,e,i,s){let n=0,o=e-1;if(i&&!s)for(;n<e&&!t[n].skip;)n++;for(;n<e&&t[n].skip;)n++;for(n%=e,i&&(o+=n);o>n&&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,r<a?r+n:r,!!t._fullLoop&&0===a&&r===n-1),i,e)}function Hi(t,e,i,s){return s&&s.setContext&&i?function(t,e,i,s){const n=t._chart.getContext(),o=ji(t.options),{_datasetIndex:a,options:{spanGaps:r}}=t,l=i.length,h=[];let c=o,d=e[0].start,u=d;function f(t,e,s,n){const o=r?-1:1;if(t!==e){for(t+=l;i[t%l].skip;)t-=o;for(;i[e%l].skip;)e+=o;t%l!=e%l&&(h.push({start:t%l,end:e%l,loop:s,style:n}),c=n,d=e%l)}}for(const t of e){d=r?d:t.start;let e,o=i[d%l];for(u=d+1;u<=t.end;u++){const r=i[u%l];e=ji(s.setContext(Ye(n,{type:"segment",p0:o,p1:r,p0DataIndex:(u-1)%l,p1DataIndex:u%l,datasetIndex:a}))),$i(e,c)&&f(d,u-1,t.loop,c),o=r,c=e}d<u-1&&f(d,u-1,t.loop,c)}return h}(t,e,i,s):e}function ji(t){return{backgroundColor:t.backgroundColor,borderCapStyle:t.borderCapStyle,borderDash:t.borderDash,borderDashOffset:t.borderDashOffset,borderJoinStyle:t.borderJoinStyle,borderWidth:t.borderWidth,borderColor:t.borderColor}}function $i(t,e){return e&&JSON.stringify(t)!==JSON.stringify(e)}var Yi=Object.freeze({__proto__:null,easingEffects:Ci,color:W,getHoverColor:N,noop:H,uid:j,isNullOrUndef:$,isArray:Y,isObject:U,isFinite:X,finiteOrDefault:q,valueOrDefault:K,toPercentage:G,toDimension:Z,callback:J,each:Q,_elementsEqual:tt,clone:et,_merger:st,merge:nt,mergeIf:ot,_mergerIf:at,_deprecated:function(t,e,i,s){void 0!==e&&console.warn(t+': "'+i+'" is deprecated. Please use "'+s+'" instead')},resolveObjectKey:lt,_capitalize:ht,defined:ct,isFunction:dt,setsEqual:ut,_isClickEvent:ft,toFontString:Ut,_measureText:Xt,_longestText:qt,_alignPixel:Kt,clearCanvas:Gt,drawPoint:Zt,_isPointInArea:Jt,clipArea:Qt,unclipArea:te,_steppedLineTo:ee,_bezierCurveTo:ie,renderText:se,addRoundedRectPath:oe,_lookup:ae,_lookupByKey:re,_rlookupByKey:le,_filterBetween:he,listenArrayEvents:de,unlistenArrayEvents:ue,_arrayUnique:fe,_createResolver:oi,_attachContext:ai,_descriptors:ri,splineCurve:vi,splineCurveMonotone:wi,_updateBezierControlPoints:ki,_isDomSupported:ge,_getParentNode:pe,getStyle:be,getRelativePosition:ve,getMaximumSize:Me,retinaScale:ke,supportsEventListenerOptions:Se,readUsedSize:Pe,fontString:function(t,e,i){return e+" "+t+"px "+i},requestAnimFrame:t,throttled:e,debounce:i,_toLeftRightCenter:s,_alignStartEnd:n,_textX:o,_pointInLine:Oi,_steppedInterpolation:Ai,_bezierInterpolation:Ti,formatNumber:Ri,toLineHeight:Fe,_readValueToProps:Be,toTRBL:Ve,toTRBLCorners:We,toPadding:Ne,toFont:He,resolve:je,_addGrace:$e,createContext:Ye,PI:_t,TAU:yt,PITAU:vt,INFINITY:wt,RAD_PER_DEG:Mt,HALF_PI:kt,QUARTER_PI:St,TWO_THIRDS_PI:Pt,log10:Dt,sign:Ct,niceNum:Ot,_factorize:At,isNumber:Tt,almostEquals:Lt,almostWhole:Rt,_setMinAndMaxByKey:Et,toRadians:It,toDegrees:zt,_decimalPlaces:Ft,getAngleFromPoint:Bt,distanceBetweenPoints:Vt,_angleDiff:Wt,_normalizeAngle:Nt,_angleBetween:Ht,_limitValue:jt,_int16Range:$t,_isBetween:Yt,getRtlAdapter:Ei,overrideTextDirection:Ii,restoreTextDirection:zi,_boundSegment:Vi,_boundSegments:Wi,_computeSegments:Ni});class Ui{acquireContext(t,e){}releaseContext(t){return!1}addEventListener(t,e,i){}removeEventListener(t,e,i){}getDevicePixelRatio(){return 1}getMaximumSize(t,e,i,s){return e=Math.max(0,e||t.width),i=i||t.height,{width:e,height:Math.max(0,s?Math.floor(e/s):i)}}isAttached(t){return!0}updateConfig(t){}}class Xi extends Ui{acquireContext(t){return t&&t.getContext&&t.getContext("2d")||null}updateConfig(t){t.options.animation=!1}}const qi={touchstart:"mousedown",touchmove:"mousemove",touchend:"mouseup",pointerenter:"mouseenter",pointerdown:"mousedown",pointermove:"mousemove",pointerup:"mouseup",pointerleave:"mouseout",pointerout:"mouseout"},Ki=t=>null===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<o.clientWidth&&s()}),window),r=new ResizeObserver((t=>{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||e<i),!this._active)return this._target[s]=a,void this._notify(!0);e<0?this._target[s]=n:(r=e/i%2,r=o&&r>1?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<i.length;t++)i[t][e]()}}bt.set("animation",{delay:void 0,duration:1e3,easing:"easeOutQuart",fn:void 0,from:void 0,loop:void 0,to:void 0,type:void 0});const fs=Object.keys(bt.animation);bt.describe("animation",{_fallback:!1,_indexable:!1,_scriptable: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<s.length;e++){const n=t[s[e]];n&&n.active()&&i.push(n.wait())}return Promise.all(i)}(t.options.$animations,i).then((()=>{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;n<o;++n)i.push(s[n].index);return i}function xs(t,e,i,s={}){const n=t.keys,o="single"===s.mode;let a,r,l,h;if(null!==e){for(a=0,r=n.length;a<r;++a){if(l=+n[a],l===i){if(s.all)continue;break}h=t.values[l],X(h)&&(o||0===e||Ct(e)===Ct(h))&&(e+=h)}return e}}function bs(t,e){const i=t&&t.options.stacked;return i||void 0===i&&void 0!==e.stack}function _s(t,e,i){const s=t[e]||(t[e]={});return s[i]||(s[i]={})}function ys(t,e,i,s){for(const n of e.getMatchingVisibleMetas(s).reverse()){const e=t[n.index];if(i&&e>0||!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;t<d;++t){const i=e[t],{[l]:o,[h]:d}=i;u=(i._stacks||(i._stacks={}))[h]=_s(n,c,o),u[r]=d,u._top=ys(u,a,!0,s.type),u._bottom=ys(u,a,!1,s.type)}}function ws(t,e){const i=t.scales;return Object.keys(i).filter((t=>i[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;s<n;++s)o=e[s],i[s]={x:o,y:t[o]};return i}(e);else if(i!==e){if(i){ue(i,this);const t=this._cachedMeta;Ms(t),t._parsed=[]}e&&Object.isExtensible(e)&&de(e,this),this._syncList=[],this._data=e}}addElements(){const t=this._cachedMeta;this._dataCheck(),this.datasetElementType&&(t.dataset=new this.datasetElementType)}buildOrUpdateElements(t){const e=this._cachedMeta,i=this.getDataset();let s=!1;this._dataCheck();const n=e._stacked;e._stacked=bs(e.vScale,e),e.stack!==i.stack&&(s=!0,Ms(e),e.stack=i.stack),this._resyncElements(t),(s||n!==e._stacked)&&vs(this,e._parsed)}configure(){const t=this.chart.config,e=t.datasetScopeKeys(this._type),i=t.getOptionScopes(this.getDataset(),e,!0);this.options=t.createResolver(i,this.getContext()),this._parsing=this.options.parsing,this._cachedDataOpts={}}parse(t,e){const{_cachedMeta:i,_data:s}=this,{iScale:n,_stacked:o}=i,a=n.axis;let r,l,h,c=0===t&&e===s.length||i._sorted,d=t>0&&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]<d[a];for(r=0;r<e;++r)i._parsed[r+t]=l=h[r],c&&(n()&&(c=!1),d=l);i._sorted=c}o&&vs(this,h)}parsePrimitiveData(t,e,i,s){const{iScale:n,vScale:o}=t,a=n.axis,r=o.axis,l=n.getLabels(),h=n===o,c=new Array(s);let d,u,f;for(d=0,u=s;d<u;++d)f=d+i,c[d]={[a]:h||n.parse(l[f],f),[r]:o.parse(e[f],f)};return c}parseArrayData(t,e,i,s){const{xScale:n,yScale:o}=t,a=new Array(s);let r,l,h,c;for(r=0,l=s;r<l;++r)h=r+i,c=e[h],a[r]={x:n.parse(c[0],h),y:o.parse(c[1],h)};return a}parseObjectData(t,e,i,s){const{xScale:n,yScale:o}=t,{xAxisKey:a="x",yAxisKey:r="y"}=this._parsing,l=new Array(s);let h,c,d,u;for(h=0,c=s;h<c;++h)d=h+i,u=e[d],l[h]={x:n.parse(lt(u,a),d),y:o.parse(lt(u,r),d)};return l}getParsed(t){return this._cachedMeta._parsed[t]}getDataElement(t){return this._cachedMeta.data[t]}applyStack(t,e,i){const s=this.chart,n=this._cachedMeta,o=e[t.axis];return xs({keys:ms(s,!0),values:e._stacks[t.axis]},o,n.index,{mode:i})}updateRangeFromParsed(t,e,i,s){const n=i[e.axis];let o=null===n?NaN:n;const a=s&&i._stacks[e.axis];s&&a&&(s.values=a,o=xs(s,n,this._cachedMeta.index)),t.min=Math.min(t.min,o),t.max=Math.max(t.max,o)}getMinMax(t,e){const i=this._cachedMeta,s=i._parsed,n=i._sorted&&t===i.iScale,o=s.length,a=this._getOtherScale(t),r=((t,e,i)=>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<e}for(d=0;d<o&&(f()||(this.updateRangeFromParsed(l,t,u,r),!n));++d);if(n)for(d=o-1;d>=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<n;++s)o=e[s][t.axis],X(o)&&i.push(o);return i}getMaxOverflow(){return!1}getLabelAndValue(t){const e=this._cachedMeta,i=e.iScale,s=e.vScale,n=this.getParsed(t);return{label:i?""+i.getLabelForValue(n[i.axis]):"",value:s?""+s.getLabelForValue(n[s.axis]):""}}_update(t){const e=this._cachedMeta;this.update(t||"default"),e._clip=function(t){let e,i,s,n;return U(t)?(e=t.top,i=t.right,s=t.bottom,n=t.left):e=i=s=n=t,{top:e,right:i,bottom:s,left:n,disabled:!1===t}}(K(this.options.clip,function(t,e,i){if(!1===i)return!1;const s=ps(t,i),n=ps(e,i);return{top:n.end,right:s.end,bottom:n.start,left:s.start}}(e.xScale,e.yScale,this.getMaxOverflow())))}update(t){}draw(){const t=this._ctx,e=this.chart,i=this._cachedMeta,s=i.data||[],n=e.chartArea,o=[],a=this._drawStart||0,r=this._drawCount||s.length-a,l=this.options.drawActiveElementsOnTop;let h;for(i.dataset&&i.dataset.draw(t,n,a,r),h=a;h<a+r;++h){const e=s[h];e.hidden||(e.active&&l?o.push(e):e.draw(t,n))}for(h=0;h<o.length;++h)o[h].draw(t,n)}getStyle(t,e){const i=e?"active":"default";return void 0===t&&this._cachedMeta.dataset?this.resolveDatasetElementOptions(i):this.resolveDataElementOptions(t||0,i)}getContext(t,e,i){const s=this.getDataset();let n;if(t>=0&&t<this._cachedMeta.data.length){const e=this._cachedMeta.data[t];n=e.$context||(e.$context=function(t,e,i){return Ye(t,{active:!1,dataIndex:e,parsed:void 0,raw:void 0,element:i,index:e,mode:"default",type:"data"})}(this.getContext(),t,e)),n.parsed=this.getParsed(t),n.raw=s.data[t],n.index=n.dataIndex=t}else n=this.$context||(this.$context=function(t,e){return Ye(t,{active:!1,dataset:void 0,datasetIndex:e,index:e,mode:"default",type:"dataset"})}(this.chart.getContext(),this.index)),n.dataset=s,n.index=n.datasetIndex=this.index;return n.active=!!e,n.mode=i,n}resolveDatasetElementOptions(t){return this._resolveElementOptions(this.datasetElementType.id,t)}resolveDataElementOptions(t,e){return this._resolveElementOptions(this.dataElementType.id,e,t)}_resolveElementOptions(t,e="default",i){const s="active"===e,n=this._cachedDataOpts,o=t+"-"+e,a=n[o],r=this.enableOptionSharing&&ct(i);if(a)return Ss(a,r);const l=this.chart.config,h=l.datasetElementScopeKeys(this._type,t),c=s?[`${t}Hover`,"hover",t,""]:[t,""],d=l.getOptionScopes(this.getDataset(),h),u=Object.keys(bt.elements[t]),f=l.resolveNamedOptions(d,u,(()=>this.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<s&&this._removeElements(n,s-n)}_insertElements(t,e,i=!0){const s=this._cachedMeta,n=s.data,o=t+e;let a;const r=t=>{for(t.length+=e,a=t.length-1;a>=o;a--)t[a]=t[a-e]};for(r(n),a=t;a<o;++a)n[a]=new this.dataElementType;this._parsing&&r(s._parsed),this.parse(t,e),i&&this.updateElements(n,t,e,"reset")}updateElements(t,e,i,s){}_removeElements(t,e){const i=this._cachedMeta;if(this._parsing){const s=i._parsed.splice(t,e);i._stacked&&Ms(i,s)}i.data.splice(t,e)}_sync(t){if(this._parsing)this._syncList.push(t);else{const[e,i,s]=t;this[e](i,s)}this.chart._dataChanges.push([this.index,...t])}_onDataPush(){const t=arguments.length;this._sync(["_insertElements",this.getDataset().data.length-t,t])}_onDataPop(){this._sync(["_removeElements",this._cachedMeta.data.length-1,1])}_onDataShift(){this._sync(["_removeElements",0,1])}_onDataSplice(t,e){e&&this._sync(["_removeElements",t,e]);const i=arguments.length-2;i&&this._sync(["_insertElements",t,i])}_onDataUnshift(){this._sync(["_insertElements",0,arguments.length])}}Ps.defaults={},Ps.prototype.datasetElementType=null,Ps.prototype.dataElementType=null;class Ds{constructor(){this.x=void 0,this.y=void 0,this.active=!1,this.options=void 0,this.$animations=void 0}tooltipPosition(t){const{x:e,y:i}=this.getProps(["x","y"],t);return{x:e,y:i}}hasValue(){return Tt(this.x)&&Tt(this.y)}getProps(t,e){const i=this.$animations;if(!e||!i)return this;const s={};return t.forEach((t=>{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;i<s;i++)t[i].major&&e.push(i);return e}(e):[],o=n.length,a=n[0],r=n[o-1],l=[];if(o>s)return function(t,e,i,s){let n,o=0,a=i[0];for(s=Math.ceil(s),n=0;n<t.length;n++)n===a&&(e.push(t[n]),o++,a=i[o*s])}(e,l,n,o/s),l;const h=function(t,e,i){const s=function(t){const e=t.length;let i,s;if(e<2)return!1;for(s=t[0],i=1;i<e;++i)if(t[i]-t[i-1]!==s)return!1;return s}(t),n=e.length/i;if(!s)return Math.max(n,1);const o=At(s);for(let t=0,e=o.length-1;t<e;t++){const e=o[t];if(e>n)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;t<i;t++)Ts(e,l,h,n[t],n[t+1]);return Ts(e,l,h,r,$(s)?e.length:r+s),l}return Ts(e,l,h),l}function Ts(t,e,i,s,n){const o=K(s,0),a=Math.min(K(n,t.length),t.length);let r,l,h,c=0;for(i=Math.ceil(i),n&&(r=n-s,i=r/Math.floor(r/i)),h=o;h<0;)c++,h=Math.round(o+c*i);for(l=Math.max(o,0);l<a;l++)l===h&&(e.push(t[l]),c++,h=Math.round(o+c*i))}bt.set("scale",{display:!0,offset:!1,reverse:!1,beginAtZero:!1,bounds:"ticks",grace:0,grid:{display:!0,lineWidth:1,drawBorder:!0,drawOnChartArea:!0,drawTicks:!0,tickLength:8,tickWidth:(t,e)=>e.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(;o<n;o+=s)i.push(t[Math.floor(o)]);return i}function Es(t,e,i){const s=t.ticks.length,n=Math.min(e,s-1),o=t._startPixel,a=t._endPixel,r=1e-6;let l,h=t.getPixelForTick(n);if(!(i&&(l=1===s?Math.max(h-o,a-h):0===e?(t.getPixelForTick(1)-h)/2:(h-t.getPixelForTick(n-1))/2,h+=n<e?l:-l,h<o-r||h>a+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;r<l;++r)e=a[r].controller.getMinMax(this,t),n||(i=Math.min(i,e.min)),o||(s=Math.max(s,e.max));return i=o&&i>s?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<this.ticks.length;this._convertTicksToLabels(r?Rs(this.ticks,a):this.ticks),this.configure(),this.beforeCalculateLabelRotation(),this.calculateLabelRotation(),this.afterCalculateLabelRotation(),o.display&&(o.autoSkip||"auto"===o.source)&&(this.ticks=As(this,this.ticks),this._labelSizes=null),r&&this._convertTicksToLabels(this.ticks),this.beforeFit(),this.fit(),this.afterFit(),this.afterUpdate()}configure(){let t,e,i=this.options.reverse;this.isHorizontal()?(t=this.left,e=this.right):(t=this.top,e=this.bottom,i=!i),this._startPixel=t,this._endPixel=e,this._reversePixels=i,this._length=e-t,this._alignToPixels=this.options.alignToPixels}afterUpdate(){J(this.options.afterUpdate,[this])}beforeSetDimensions(){J(this.options.beforeSetDimensions,[this])}setDimensions(){this.isHorizontal()?(this.width=this.maxWidth,this.left=0,this.right=this.width):(this.height=this.maxHeight,this.top=0,this.bottom=this.height),this.paddingLeft=0,this.paddingTop=0,this.paddingRight=0,this.paddingBottom=0}afterSetDimensions(){J(this.options.afterSetDimensions,[this])}_callHooks(t){this.chart.notifyPlugins(t,this.getContext()),J(this.options[t],[this])}beforeDataLimits(){this._callHooks("beforeDataLimits")}determineDataLimits(){}afterDataLimits(){this._callHooks("afterDataLimits")}beforeBuildTicks(){this._callHooks("beforeBuildTicks")}buildTicks(){return[]}afterBuildTicks(){this._callHooks("afterBuildTicks")}beforeTickToLabelConversion(){J(this.options.beforeTickToLabelConversion,[this])}generateTickLabels(t){const e=this.options.ticks;let i,s,n;for(i=0,s=t.length;i<s;i++)n=t[i],n.label=J(e.callback,[n.value,i,t],this)}afterTickToLabelConversion(){J(this.options.afterTickToLabelConversion,[this])}beforeCalculateLabelRotation(){J(this.options.beforeCalculateLabelRotation,[this])}calculateLabelRotation(){const t=this.options,e=t.ticks,i=this.ticks.length,s=e.minRotation||0,n=e.maxRotation;let o,a,r,l=s;if(!this._isVisible()||!e.display||s>=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<i;e++)$(t[e].label)&&(t.splice(e,1),i--,e--);this.afterTickToLabelConversion()}_getLabelSizes(){let t=this._labelSizes;if(!t){const e=this.options.ticks.sampleSize;let i=this.ticks;e<i.length&&(i=Rs(i,e)),this._labelSizes=t=this._computeLabelSizes(i,i.length)}return t}_computeLabelSizes(t,e){const{ctx:i,_longestTextCache:s}=this,n=[],o=[];let a,r,l,h,c,d,u,f,g,p,m,x=0,b=0;for(a=0;a<e;++a){if(h=t[a].label,c=this._resolveTickFontOptions(a),i.font=d=c.string,u=s[d]=s[d]||{data:{},gc:[]},f=c.lineHeight,g=p=0,$(h)||Y(h)){if(Y(h))for(r=0,l=h.length;r<l;++r)m=h[r],$(m)||Y(m)||(g=Xt(i,u.data,u.gc,g,m),p+=f)}else g=Xt(i,u.data,u.gc,g,h),p=f;n.push(g),o.push(p),x=Math.max(g,x),b=Math.max(p,b)}!function(t,e){Q(t,(t=>{const i=t.gc,s=i.length/2;let n;if(s>e){for(n=0;n<s;++n)delete t.data[i[n]];i.splice(0,s)}}))}(s,e);const _=n.indexOf(x),y=o.indexOf(b),v=t=>({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&&t<e.length){const i=e[t];return i.$context||(i.$context=function(t,e,i){return Ye(t,{tick:i,index:e,type:"tick"})}(this.getContext(),t,i))}return this.$context||(this.$context=Ye(this.chart.getContext(),{scale:this,type:"scale"}))}_tickSize(){const t=this.options.ticks,e=It(this.labelRotation),i=Math.abs(Math.cos(e)),s=Math.abs(Math.sin(e)),n=this._getLabelSizes(),o=t.autoSkipPadding||0,a=n?n.widest.width+o:0,r=n?n.highest.height+o:0;return this.isHorizontal()?r*i>a*s?a/i:r/s:r*s<a*i?r/i:a/s}_isVisible(){const t=this.options.display;return"auto"!==t?!!t:this.getMatchingVisibleMetas().length>0}_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;m<l;m+=C){const t=n.setContext(this.getContext(m)),e=t.lineWidth,s=t.color,o=n.borderDash||[],l=t.borderDashOffset,h=t.tickWidth,d=t.tickColor,u=t.tickBorderDash||[],f=t.tickBorderDashOffset;x=Es(this,m,a),void 0!==x&&(b=Kt(i,x,e),r?_=v=M=S=b:y=w=k=P=b,c.push({tx1:_,ty1:y,tx2:v,ty2:w,x1:M,y1:k,x2:S,y2:P,width:e,color:s,borderDash:o,borderDashOffset:l,tickWidth:h,tickColor:d,tickBorderDash:u,tickBorderDashOffset:f}))}return this._ticksLength=l,this._borderValue=p,c}_computeLabelItems(t){const e=this.axis,i=this.options,{position:s,ticks:n}=i,o=this.isHorizontal(),a=this.ticks,{align:r,crossAlign:l,padding:h,mirror:c}=n,d=Is(i.grid),u=d+h,f=c?-h:u,g=-It(this.labelRotation),p=[];let m,x,b,_,y,v,w,M,k,S,P,D,C="middle";if("top"===s)v=this.bottom-f,w=this._getXAxisLabelAlignment();else if("bottom"===s)v=this.top+f,w=this._getXAxisLabelAlignment();else if("left"===s){const t=this._getYAxisLabelAlignment(d);w=t.textAlign,y=t.x}else if("right"===s){const t=this._getYAxisLabelAlignment(d);w=t.textAlign,y=t.x}else if("x"===e){if("center"===s)v=(t.top+t.bottom)/2+u;else if(U(s)){const t=Object.keys(s)[0],e=s[t];v=this.chart.scales[t].getPixelForValue(e)+u}w=this._getXAxisLabelAlignment()}else if("y"===e){if("center"===s)y=(t.left+t.right)/2-u;else if(U(s)){const t=Object.keys(s)[0],e=s[t];y=this.chart.scales[t].getPixelForValue(e)}w=this._getYAxisLabelAlignment(d).textAlign}"y"===e&&("start"===r?C="top":"end"===r&&(C="bottom"));const O=this._getLabelSizes();for(m=0,x=a.length;m<x;++m){b=a[m],_=b.label;const t=n.setContext(this.getContext(m));M=this.getPixelForTick(m)+n.labelOffset,k=this._resolveTickFontOptions(m),S=k.lineHeight,P=Y(_)?_.length:1;const e=P/2,i=t.color,r=t.textStrokeColor,h=t.textStrokeWidth;let d;if(o?(y=M,D="top"===s?"near"===l||0!==g?-P*S+S/2:"center"===l?-O.highest.height/2-e*S+S:-O.highest.height+S/2:"near"===l||0!==g?S/2:"center"===l?O.highest.height/2-e*S:O.highest.height-P*S,c&&(D*=-1)):(v=M,D=(1-P)*S/2),t.showLabelBackdrop){const e=Ne(t.backdropPadding),i=O.heights[m],s=O.widths[m];let n=v+D-e.top,o=y-e.left;switch(C){case"middle":n-=i/2;break;case"bottom":n-=i}switch(w){case"center":o-=s/2;break;case"right":o-=s}d={left:o,top:n,width:s+e.width,height:i+e.height,color:t.backdropColor}}p.push({rotation:g,label:_,font:k,color:i,strokeColor:r,strokeWidth:h,textOffset:D,textAlign:w,textBaseline:C,translation:[y,v],backdrop:d})}return p}_getXAxisLabelAlignment(){const{position:t,ticks:e}=this.options;if(-It(this.labelRotation))return"top"===t?"left":"right";let i="center";return"start"===e.align?i="left":"end"===e.align&&(i="right"),i}_getYAxisLabelAlignment(t){const{position:e,ticks:{crossAlign:i,mirror:s,padding:n}}=this.options,o=t+n,a=this._getLabelSizes().widest.width;let r,l;return"left"===e?s?(l=this.right+n,"near"===i?r="left":"center"===i?(r="center",l+=a/2):(r="right",l+=a)):(l=this.right-o,"near"===i?r="right":"center"===i?(r="center",l-=a/2):(r="left",l=this.left)):"right"===e?s?(l=this.left+n,"near"===i?r="right":"center"===i?(r="center",l-=a/2):(r="left",l-=a)):(l=this.left+o,"near"===i?r="left":"center"===i?(r="center",l+=a/2):(r="right",l=this.right)):r="right",{textAlign:r,x:l}}_computeLabelArea(){if(this.options.ticks.mirror)return;const t=this.chart,e=this.options.position;return"left"===e||"right"===e?{top:0,left:this.left,bottom:t.height,right:this.right}:"top"===e||"bottom"===e?{top:this.top,left:0,bottom:this.bottom,right:t.width}:void 0}drawBackground(){const{ctx:t,options:{backgroundColor:e},left:i,top:s,width:n,height:o}=this;e&&(t.save(),t.fillStyle=e,t.fillRect(i,s,n,o),t.restore())}getLineWidthForValue(t){const e=this.options.grid;if(!this._isVisible()||!e.display)return 0;const i=this.ticks.findIndex((e=>e.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<o;++n){const t=s[n];e.drawOnChartArea&&a({x:t.x1,y:t.y1},{x:t.x2,y:t.y2},t),e.drawTicks&&a({x:t.tx1,y:t.ty1},{x:t.tx2,y:t.ty2},{color:t.tickColor,width:t.tickWidth,borderDash:t.tickBorderDash,borderDashOffset:t.tickBorderDashOffset})}}drawBorder(){const{chart:t,ctx:e,options:{grid:i}}=this,s=i.setContext(this.getContext()),n=i.drawBorder?s.borderWidth:0;if(!n)return;const o=i.setContext(this.getContext(0)).lineWidth,a=this._borderValue;let r,l,h,c;this.isHorizontal()?(r=Kt(t,this.left,n)-n/2,l=Kt(t,this.right,o)+o/2,h=c=a):(h=Kt(t,this.top,n)-n/2,c=Kt(t,this.bottom,o)+o/2,r=l=a),e.save(),e.lineWidth=s.borderWidth,e.strokeStyle=s.borderColor,e.beginPath(),e.moveTo(r,h),e.lineTo(l,c),e.stroke(),e.restore()}drawLabels(t){if(!this.options.ticks.display)return;const e=this.ctx,i=this._computeLabelArea();i&&Qt(e,i);const s=this._labelItems||(this._labelItems=this._computeLabelItems(t));let n,o;for(n=0,o=s.length;n<o;++n){const t=s[n],i=t.font,o=t.label;t.backdrop&&(e.fillStyle=t.backdrop.color,e.fillRect(t.backdrop.left,t.backdrop.top,t.backdrop.width,t.backdrop.height)),se(e,o,0,t.textOffset,i,t)}i&&te(e)}drawTitle(){const{ctx:t,options:{position:e,title:i,reverse:s}}=this;if(!i.display)return;const o=He(i.font),a=Ne(i.padding),r=i.align;let l=o.lineHeight/2;"bottom"===e||"center"===e||U(e)?(l+=a.bottom,Y(i.text)&&(l+=o.lineHeight*(i.text.length-1))):l+=a.top;const{titleX:h,titleY:c,maxWidth:d,rotation:u}=function(t,e,i,s){const{top:o,left:a,bottom:r,right:l,chart:h}=t,{chartArea:c,scales:d}=h;let u,f,g,p=0;const m=r-o,x=l-a;if(t.isHorizontal()){if(f=n(s,a,l),U(i)){const t=Object.keys(i)[0],s=i[t];g=d[t].getPixelForValue(s)+m-e}else g="center"===i?(c.bottom+c.top)/2+m-e:Ls(t,i,e);u=l-a}else{if(U(i)){const t=Object.keys(i)[0],s=i[t];f=d[t].getPixelForValue(s)-x+e}else f="center"===i?(c.left+c.right)/2-x+e:Ls(t,i,e);g=n(s,r,o),p="left"===i?-kt:kt}return{titleX:f,titleY:g,maxWidth:u,rotation:p}}(this,l,e,r);se(t,i.text,0,0,o,{color:i.color,maxWidth:d,rotation:u,textAlign:Fs(r,e,s),textBaseline:"middle",translation:[h,c]})}draw(t){this._isVisible()&&(this.drawBackground(),this.drawGrid(t),this.drawBorder(),this.drawTitle(),this.drawLabels(t))}_layers(){const t=this.options,e=t.ticks&&t.ticks.z||0,i=K(t.grid&&t.grid.z,-1);return this._isVisible()&&this.draw===Bs.prototype.draw?[{z:i,draw:t=>{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<o;++n){const o=e[n];o[i]!==this.id||t&&o.type!==t||s.push(o)}return s}_resolveTickFontOptions(t){return He(this.options.ticks.setContext(this.getContext(t)).font)}_maxDigits(){const t=this._resolveTickFontOptions(0).lineHeight;return(this.isHorizontal()?this.width:this.height)/t}}class Vs{constructor(t,e,i){this.type=t,this.scope=e,this.override=i,this.items=Object.create(null)}isForType(t){return Object.prototype.isPrototypeOf.call(this.type.prototype,t.prototype)}register(t){const e=Object.getPrototypeOf(t);let i;(function(t){return"id"in t&&"defaults"in t})(e)&&(i=this.register(e));const s=this.items,n=t.id,o=this.scope+"."+n;if(!n)throw new Error("class does not have id: "+t);return n in s||(s[n]=t,function(t,e,i){const s=nt(Object.create(null),[i?bt.get(i):{},bt.get(e),t.defaults]);bt.set(e,s),t.defaultRoutes&&function(t,e){Object.keys(e).forEach((i=>{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;e<this._typedRegistries.length;e++){const i=this._typedRegistries[e];if(i.isForType(t))return i}return this.plugins}_get(t,e,i){const s=e.get(t);if(void 0===s)throw new Error('"'+t+'" is not a registered '+i+".");return s}};class Ns{constructor(){this._init=[]}notify(t,e,i,s){"beforeInit"===e&&(this._init=this._createDescriptors(t,!0),this._notify(this._init,t,"install"));const n=s?this._descriptors(t).filter(s):this._descriptors(t),o=this._notify(n,t,e,i);return"afterDestroy"===e&&(this._notify(n,t,"stop"),this._notify(this._init,t,"uninstall")),o}_notify(t,e,i,s){s=s||{};for(const n of t){const t=n.plugin;if(!1===J(t[i],[e,s,n.options],t)&&s.cancelable)return!1}return!0}invalidate(){$(this._cache)||(this._oldCache=this._cache,this._cache=void 0)}_descriptors(t){if(this._cache)return this._cache;const e=this._cache=this._createDescriptors(t);return this._notifyStateChanges(t),e}_createDescriptors(t,e){const i=t&&t.config,s=K(i.options&&i.options.plugins,{}),n=function(t){const e=[],i=Object.keys(Ws.plugins.items);for(let t=0;t<i.length;t++)e.push(Ws.getPlugin(i[t]));const s=t.plugins||[];for(let t=0;t<s.length;t++){const i=s[t];-1===e.indexOf(i)&&e.push(i)}return e}(i);return!1!==s||e?function(t,e,i,s){const n=[],o=t.getContext();for(let a=0;a<e.length;a++){const r=e[a],l=Hs(i[r.id],s);null!==l&&n.push({plugin:r,options:js(t.config,r,l,o)})}return n}(t,n,s,e):[]}_notifyStateChanges(t){const e=this._oldCache||[],i=this._cache,s=(t,e)=>t.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;t<i;++t)this._destroyDatasetMeta(t);t.splice(e,i-e)}this._sortedMetasets=t.slice(0).sort(nn("order","index"))}_removeUnreferencedMetasets(){const{_metasets:t,data:{datasets:e}}=this;t.length>e.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<s;i++){const s=e[i];let n=this.getDatasetMeta(i);const o=s.type||this.config.type;if(n.type&&n.type!==o&&(this._destroyDatasetMeta(i),n=this.getDatasetMeta(i)),n.type=o,n.indexAxis=s.indexAxis||$s(o,this.options),n.order=s.order||0,n.index=i,n.label=""+s.label,n.visible=this.isDatasetVisible(i),n.controller)n.controller.updateIndex(i),n.controller.linkScales();else{const e=Ws.getController(o),{datasetElementType:s,dataElementType:a}=bt.datasets[o];Object.assign(e.prototype,{dataElementType:Ws.getElement(a),datasetElementType:s&&Ws.getElement(s)}),n.controller=new e(this,i),t.push(n.controller)}}return this._updateMetasets(),t}_resetElements(){Q(this.data.datasets,((t,e)=>{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<e;t++){const{controller:e}=this.getDatasetMeta(t),i=!s&&-1===n.indexOf(e);e.buildOrUpdateElements(i),o=Math.max(+e.getMaxOverflow(),o)}o=this._minPadding=i.layout.autoPadding?o:0,this._updateLayout(o),s||Q(n,(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;t<e;t++)if(!ut(s,i(t)))return;return Array.from(s).map((t=>t.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<e;++t)this.getDatasetMeta(t).controller.configure();for(let e=0,i=this.data.datasets.length;e<i;++e)this._updateDataset(e,dt(t)?t({datasetIndex:e}):t);this.notifyPlugins("afterDatasetsUpdate",{mode:t})}}_updateDataset(t,e){const i=this.getDatasetMeta(t),s={meta:i,index:t,mode:e,cancelable:!0};!1!==this.notifyPlugins("beforeDatasetUpdate",s)&&(i.controller._update(e),s.cancelable=!1,this.notifyPlugins("afterDatasetUpdate",s))}render(){!1!==this.notifyPlugins("beforeRender",{cancelable:!0})&&(a.has(this)?this.attached&&!a.running(this)&&a.start(this):(this.draw(),on({chart:this})))}draw(){let t;if(this._resizeBeforeDraw){const{width:t,height:e}=this._resizeBeforeDraw;this._resize(t,e),this._resizeBeforeDraw=null}if(this.clear(),this.width<=0||this.height<=0)return;if(!1===this.notifyPlugins("beforeDraw",{cancelable:!0}))return;const e=this._layers;for(t=0;t<e.length&&e[t].z<=0;++t)e[t].draw(this.chartArea);for(this._drawDatasets();t<e.length;++t)e[t].draw(this.chartArea);this.notifyPlugins("afterDraw")}_getSortedDatasetMetas(t){const e=this._sortedMetasets,i=[];let s,n;for(s=0,n=e.length;s<n;++s){const n=e[s];t&&!n.visible||i.push(n)}return i}getSortedVisibleDatasetMetas(){return this._getSortedDatasetMetas(!0)}_drawDatasets(){if(!1===this.notifyPlugins("beforeDatasetsDraw",{cancelable:!0}))return;const t=this.getSortedVisibleDatasetMetas();for(let e=t.length-1;e>=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;++t)this._destroyDatasetMeta(t)}destroy(){this.notifyPlugins("beforeDestroy");const{canvas:t,ctx:e}=this;this._stop(),this.config.clearCache(),t&&(this.unbindEvents(),Gt(t,e),this.platform.releaseContext(e),this.canvas=null,this.ctx=null),this.notifyPlugins("destroy"),delete ln[this.id],this.notifyPlugins("afterDestroy")}toBase64Image(...t){return this.canvas.toDataURL(...t)}bindEvents(){this.bindUserEvents(),this.options.responsive?this.bindResponsiveEvents():this.attached=!0}bindUserEvents(){const t=this._listeners,e=this.platform,i=(i,s)=>{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<r;++a){o=t[a];const e=o&&this.getDatasetMeta(o.datasetIndex).controller;e&&e[s+"HoverStyle"](o.element,o.datasetIndex,o.index)}}getActiveElements(){return this._active||[]}setActiveElements(t){const e=this._active||[],i=t.map((({datasetIndex:t,index:e})=>{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;e<n;e++)s=s.concat(i[e].controller.getAllParsedValues(t));t._cache.$bar=fe(s.sort(((t,e)=>t-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;s<n;++s)o=e.getPixelForValue(i[s]),l();for(a=void 0,s=0,n=e.ticks.length;s<n;++s)o=e.getPixelForTick(s),l();return r}function bn(t,e,i,s){return Y(t)?function(t,e,i,s){const n=i.parse(t[0],s),o=i.parse(t[1],s),a=Math.min(n,o),r=Math.max(n,o);let l=a,h=r;Math.abs(a)>Math.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;h<c;++h)u=e[h],d={},d[n.axis]=r||n.parse(a[h],h),l.push(bn(u,d,o,h));return l}function yn(t){return t&&void 0!==t.barStart&&void 0!==t.barEnd}function vn(t,e,i,s){let n=e.borderSkipped;const o={};if(!n)return void(t.borderSkipped=o);const{start:a,end:r,reverse:l,top:h,bottom:c}=function(t){let e,i,s,n,o;return t.horizontal?(e=t.base>t.x,i="left",s="right"):(e=t.base<t.y,i="bottom",s="top"),e?(n="end",o="start"):(n="start",o="end"),{start:i,end:s,reverse:e,top:n,bottom:o}}(t);"middle"===n&&i&&(t.enableBorderRadius=!0,(i._top||0)===s?n=h:(i._bottom||0)===s?n=c:(o[wn(c,a,r,l)]=!0,n=h)),o[wn(n,a,r,l)]=!0,t.borderSkipped=o}function wn(t,e,i,s){var n,o,a;return s?(a=i,t=Mn(t=(n=t)===(o=e)?a:n===a?o:n,i,e)):t=Mn(t,e,i),t}function Mn(t,e,i){return"start"===t?e:"end"===t?i:t}function kn(t,{inflateAmount:e},i){t.inflateAmount="auto"===e?1===i?.33:0:e}class Sn extends Ps{parsePrimitiveData(t,e,i,s){return _n(t,e,i,s)}parseArrayData(t,e,i,s){return _n(t,e,i,s)}parseObjectData(t,e,i,s){const{iScale:n,vScale:o}=t,{xAxisKey:a="x",yAxisKey:r="y"}=this._parsing,l="x"===n.axis?a:r,h="x"===o.axis?a:r,c=[];let d,u,f,g;for(d=i,u=i+s;d<u;++d)g=e[d],f={},f[n.axis]=n.parse(lt(g,l),d),c.push(bn(lt(g,h),f,o,d));return c}updateRangeFromParsed(t,e,i,s){super.updateRangeFromParsed(t,e,i,s);const n=i._custom;n&&e===this._cachedMeta.vScale&&(t.min=Math.min(t.min,n.min),t.max=Math.max(t.max,n.max))}getMaxOverflow(){return 0}getLabelAndValue(t){const e=this._cachedMeta,{iScale:i,vScale:s}=e,n=this.getParsed(t),o=n._custom,a=yn(o)?"["+o.start+", "+o.end+"]":""+s.getLabelForValue(n[s.axis]);return{label:""+i.getLabelForValue(n[i.axis]),value:a}}initialize(){this.enableOptionSharing=!0,super.initialize();this._cachedMeta.stack=this.getDataset().stack}update(t){const e=this._cachedMeta;this.updateElements(e.data,0,e.data.length,t)}updateElements(t,e,i,s){const n="reset"===s,{index:o,_cachedMeta:{vScale:a}}=this,r=a.getBasePixel(),l=a.isHorizontal(),h=this._getRuler(),c=this.resolveDataElementOptions(e,s),d=this.getSharedOptions(c),u=this.includeOptions(s,d);this.updateSharedOptions(d,s,c);for(let c=e;c<e+i;c++){const e=this.getParsed(c),i=n||$(e[a.axis])?{base:r,head:r}:this._calculateBarValuePixels(c),f=this._calculateBarIndexPixels(c,h),g=(e._stacks||{})[a.axis],p={horizontal:l,base:i.base,enableBorderRadius:!g||yn(e._custom)||o===g._top||o===g._bottom,x:l?i.head:f.center,y:l?f.center:i.head,height:l?f.size:Math.abs(i.size),width:l?Math.abs(i.size):f.size};u&&(p.options=d||this.resolveDataElementOptions(c,t[c].active?"active":s));const m=p.options||t[c].options;vn(p,m,g,o),kn(p,m,h.ratio),this.updateElement(t[c],c,p,s)}}_getStacks(t,e){const i=this._cachedMeta.iScale,s=i.getMatchingVisibleMetas(this._type),n=i.options.stacked,o=s.length,a=[];let r,l;for(r=0;r<o;++r)if(l=s[r],l.controller.options.grouped){if(void 0!==e){const t=l.controller.getParsed(e)[l.controller._cachedMeta.vScale.axis];if($(t)||isNaN(t))continue}if((!1===n||-1===a.indexOf(l.stack)||void 0===n&&void 0===l.stack)&&a.push(l.stack),l.index===t)break}return a.length||a.push(void 0),a}_getStackCount(t){return this._getStacks(void 0,t).length}_getStackIndex(t,e,i){const s=this._getStacks(t,i),n=void 0!==e?s.indexOf(e):-1;return-1===n?s.length-1:n}_getRuler(){const t=this.options,e=this._cachedMeta,i=e.iScale,s=[];let n,o;for(n=0,o=e.data.length;n<o;++n)s.push(i.getPixelForValue(this.getParsed(n)[i.axis],n));const a=t.barThickness;return{min:a||xn(e),pixels:s,start:i._startPixel,end:i._endPixel,stackCount:this._getStackCount(),scale:i,grouped:t.grouped,ratio:a?1:t.categoryPercentage*t.barPercentage}}_calculateBarValuePixels(t){const{_cachedMeta:{vScale:e,_stacked:i},options:{base:s,minBarLength:n}}=this,o=s||0,a=this.getParsed(t),r=a._custom,l=yn(r);let h,c,d=a[e.axis],u=0,f=i?this.applyStack(e,a,i):d;f!==d&&(u=f-d,f=d),l&&(d=r.barStart,f=r.barEnd-r.barStart,0!==d&&Ct(d)!==Ct(r.barEnd)&&(u=0),u+=d);const g=$(s)||l?u:s;let p=e.getPixelForValue(g);if(h=this.chart.getDataVisibility(t)?e.getPixelForValue(u+f):p,c=h-p,Math.abs(c)<n&&(c=function(t,e,i){return 0!==t?Ct(t):(e.isHorizontal()?1:-1)*(e.min>=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<n.length-1?n[t+1]:null;const l=i.categoryPercentage;null===a&&(a=o-(null===r?e.end-e.start:r-o)),null===r&&(r=o+o-a);const h=o-(o-Math.min(a,r))/2*l;return{chunk:Math.abs(r-a)/2*l/s,ratio:i.barPercentage,start:h}}(t,e,s,i):function(t,e,i,s){const n=i.barThickness;let o,a;return $(n)?(o=e.min*i.categoryPercentage,a=i.barPercentage):(o=n*s,a=1),{chunk:o/s,ratio:a,start:e.pixels[t]-o/2}}(t,e,s,i),h=this._getStackIndex(this.index,this._cachedMeta.stack,n?t:void 0);a=l.start+l.chunk*h+l.chunk/2,r=Math.min(o,l.chunk*l.ratio)}else a=i.getPixelForValue(this.getParsed(t)[i.axis],t),r=Math.min(o,e.min*e.ratio);return{base:a-r/2,head:a+r/2,center:a,size:r}}draw(){const t=this._cachedMeta,e=t.vScale,i=t.data,s=i.length;let n=0;for(;n<s;++n)null!==this.getParsed(n)[e.axis]&&i[n].draw(this._ctx)}}Sn.id="bar",Sn.defaults={datasetElementType:!1,dataElementType:"bar",categoryPercentage:.8,barPercentage:.9,grouped:!0,animations:{numbers:{type:"number",properties:["x","y","base","width","height"]}}},Sn.overrides={scales:{_index_:{type:"category",offset:!0,grid:{offset:!0}},_value_:{type:"linear",beginAtZero:!0}}};class Pn extends Ps{initialize(){this.enableOptionSharing=!0,super.initialize()}parsePrimitiveData(t,e,i,s){const n=super.parsePrimitiveData(t,e,i,s);for(let t=0;t<n.length;t++)n[t]._custom=this.resolveDataElementOptions(t+i).radius;return n}parseArrayData(t,e,i,s){const n=super.parseArrayData(t,e,i,s);for(let t=0;t<n.length;t++){const s=e[i+t];n[t]._custom=K(s[2],this.resolveDataElementOptions(t+i).radius)}return n}parseObjectData(t,e,i,s){const n=super.parseObjectData(t,e,i,s);for(let t=0;t<n.length;t++){const s=e[i+t];n[t]._custom=K(s&&s.r&&+s.r,this.resolveDataElementOptions(t+i).radius)}return n}getMaxOverflow(){const t=this._cachedMeta.data;let e=0;for(let i=t.length-1;i>=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<e+i;r++){const e=t[r],i=!n&&this.getParsed(r),l={},u=l[c]=n?o.getPixelForDecimal(.5):o.getPixelForValue(i[c]),f=l[d]=n?a.getBasePixel():a.getPixelForValue(i[d]);l.skip=isNaN(u)||isNaN(f),h&&(l.options=this.resolveDataElementOptions(r,e.active?"active":s),n&&(l.options.radius=0)),this.updateElement(e,r,l,s)}this.updateSharedOptions(l,s,r)}resolveDataElementOptions(t,e){const i=this.getParsed(t);let s=super.resolveDataElementOptions(t,e);s.$shared&&(s=Object.assign({},s,{$shared:!1}));const n=s.radius;return"active"!==e&&(s.radius=0),s.radius+=K(i&&i._custom,n),s}}Pn.id="bubble",Pn.defaults={datasetElementType:!1,dataElementType:"point",animations:{numbers:{type:"number",properties:["x","y","borderWidth","radius"]}}},Pn.overrides={scales:{x:{type:"linear"},y:{type:"linear"}},plugins:{tooltip:{callbacks:{title:()=>""}}}};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;n<o;++n)s._parsed[n]=a(n)}}_getRotation(){return It(this.options.rotation-90)}_getCircumference(){return It(this.options.circumference)}_getRotationExtents(){let t=yt,e=-yt;for(let i=0;i<this.chart.data.datasets.length;++i)if(this.chart.isDatasetVisible(i)){const s=this.chart.getDatasetMeta(i).controller,n=s._getRotation(),o=s._getCircumference();t=Math.min(t,n),e=Math.max(e,n+o)}return{rotation:t,circumference:e-t}}update(t){const e=this.chart,{chartArea:i}=e,s=this._cachedMeta,n=s.data,o=this.getMaxBorderWidth()+this.getMaxOffset(n)+this.options.spacing,a=Math.max((Math.min(i.width,i.height)-o)/2,0),r=Math.min(G(this.options.cutout,a),1),l=this._getRingWeight(this.index),{circumference:h,rotation:c}=this._getRotationExtents(),{ratioX:d,ratioY:u,offsetX:f,offsetY:g}=function(t,e,i){let s=1,n=1,o=0,a=0;if(e<yt){const r=t,l=r+e,h=Math.cos(r),c=Math.sin(r),d=Math.cos(l),u=Math.sin(l),f=(t,e,s)=>Ht(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;m<e;++m)x+=this._circumference(m,n);for(m=e;m<e+i;++m){const e=this._circumference(m,n),i=t[m],o={x:l+this.offsetX,y:h+this.offsetY,startAngle:x,endAngle:x+e,circumference:e,outerRadius:u,innerRadius:d};p&&(o.options=g||this.resolveDataElementOptions(m,i.active?"active":s)),x+=e,this.updateElement(i,m,o,s)}this.updateSharedOptions(g,s,f)}calculateTotal(){const t=this._cachedMeta,e=t.data;let i,s=0;for(i=0;i<e.length;i++){const n=t._parsed[i];null===n||isNaN(n)||!this.chart.getDataVisibility(i)||e[i].hidden||(s+=Math.abs(n))}return s}calculateCircumference(t){const e=this._cachedMeta.total;return e>0&&!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<n;++s)if(i.isDatasetVisible(s)){o=i.getDatasetMeta(s),t=o.data,a=o.controller;break}if(!t)return 0;for(s=0,n=t.length;s<n;++s)r=a.resolveDataElementOptions(s),"inner"!==r.borderAlign&&(e=Math.max(e,r.borderWidth||0,r.hoverBorderWidth||0));return e}getMaxOffset(t){let e=0;for(let i=0,s=t.length;i<s;++i){const t=this.resolveDataElementOptions(i);e=Math.max(e,t.offset||0,t.hoverOffset||0)}return e}_getRingWeightOffset(t){let e=0;for(let i=0;i<t;++i)this.chart.isDatasetVisible(i)&&(e+=this._getRingWeight(i));return e}_getRingWeight(t){return Math.max(K(this.chart.data.datasets[t].weight,1),0)}_getVisibleDatasetWeightTotal(){return this._getRingWeightOffset(this.chart.data.datasets.length)||1}}Dn.id="doughnut",Dn.defaults={datasetElementType:!1,dataElementType:"arc",animation:{animateRotate:!0,animateScale:!1},animations:{numbers:{type:"number",properties:["circumference","endAngle","innerRadius","outerRadius","startAngle","x","y","offset","borderWidth","spacing"]}},cutout:"50%",rotation:0,circumference:360,radius:"100%",spacing:0,indexAxis:"r"},Dn.descriptors={_scriptable:t=>"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;h<e+i;++h){const e=t[h],i=this.getParsed(h),g=x?e:{},_=$(i[f]),y=g[u]=o.getPixelForValue(i[u],h),v=g[f]=n||_?a.getBasePixel():a.getPixelForValue(r?this.applyStack(a,i,r):i[f],h);g.skip=isNaN(y)||isNaN(v)||_,g.stop=h>0&&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<e;++u)f+=this._computeAngle(u,s,g);for(u=e;u<e+i;u++){const e=t[u];let i=f,p=f+this._computeAngle(u,s,g),m=o.getDataVisibility(u)?l.getDistanceFromCenterForValue(a.data[u]):0;f=p,n&&(r.animateScale&&(m=0),r.animateRotate&&(i=p=d));const x={x:h,y:c,innerRadius:0,outerRadius:m,startAngle:i,endAngle:p,options:this.resolveDataElementOptions(u,e.active?"active":s)};this.updateElement(e,u,x,s)}}countVisibleElements(){const t=this.getDataset(),e=this._cachedMeta;let i=0;return e.data.forEach(((e,s)=>{!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<e+i;r++){const e=t[r],i=this.resolveDataElementOptions(r,e.active?"active":s),l=o.getPointPositionForValue(r,n.data[r]),h=a?o.xCenter:l.x,c=a?o.yCenter:l.y,d={x:h,y:c,angle:l.angle,skip:isNaN(h)||isNaN(c),options:i};this.updateElement(e,r,d,s)}}}Tn.id="radar",Tn.defaults={datasetElementType:"line",dataElementType:"point",indexAxis:"r",showLine:!0,elements:{line:{fill:"start"}}},Tn.overrides={aspectRatio:1,scales:{r:{type:"radialLinear"}}};class Ln extends Cn{}Ln.id="scatter",Ln.defaults={showLine:!1,fill:!1},Ln.overrides={interaction:{mode:"point"},plugins:{tooltip:{callbacks:{title:()=>"",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<r;++c)t.stroke();for(t.beginPath(),t.arc(s,n,l,o,o+yt),c=0;c<r;++c)t.stroke()}(t,e,l),l&&En(t,e,n),Fn(t,e,i,s,n),t.stroke())}class Vn extends Ds{constructor(t){super(),this.options=void 0,this.circumference=void 0,this.startAngle=void 0,this.endAngle=void 0,this.innerRadius=void 0,this.outerRadius=void 0,this.pixelMargin=0,this.fullCircles=0,t&&Object.assign(this,t)}inRange(t,e,i){const s=this.getProps(["x","y"],i),{angle:n,distance:o}=Bt(s,{x:t,y:e}),{startAngle:a,endAngle:r,innerRadius:l,outerRadius:h,circumference:c}=this.getProps(["startAngle","endAngle","innerRadius","outerRadius","circumference"],i),d=this.options.spacing/2,u=K(c,r-a)>=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;e<n;++e)t.fill();isNaN(a)||(r=o+a%yt,a%yt==0&&(r+=yt))}return Fn(t,e,i,s,r),t.fill(),r}(t,this,o,n);Bn(t,this,o,n,a),t.restore()}}function Wn(t,e,i=e){t.lineCap=K(i.borderCapStyle,e.borderCapStyle),t.setLineDash(K(i.borderDash,e.borderDash)),t.lineDashOffset=K(i.borderDashOffset,e.borderDashOffset),t.lineJoin=K(i.borderJoinStyle,e.borderJoinStyle),t.lineWidth=K(i.borderWidth,e.borderWidth),t.strokeStyle=K(i.borderColor,e.borderColor)}function Nn(t,e,i){t.lineTo(i.x,i.y)}function Hn(t,e,i={}){const s=t.length,{start:n=0,end:o=s-1}=i,{start:a,end:r}=e,l=Math.max(n,a),h=Math.min(o,r),c=n<a&&o<a||n>r&&o>r;return{count:s,start:l,loop:e.loop,ilen:h<l&&!c?s+h-l:h-l}}function jn(t,e,i,s){const{points:n,options:o}=e,{count:a,start:r,loop:l,ilen:h}=Hn(n,i,s),c=function(t){return t.stepped?ee:t.tension||"monotone"===t.cubicInterpolationMode?ie:Nn}(o);let d,u,f,{move:g=!0,reverse:p}=s||{};for(d=0;d<=h;++d)u=n[(r+(p?h-d:d))%a],u.skip||(g?(t.moveTo(u.x,u.y),g=!1):c(t,f,u,p,o.stepped),f=u);return l&&(u=n[(r+(p?h:0))%a],c(t,f,u,p,o.stepped)),!!l}function $n(t,e,i,s){const n=e.points,{count:o,start:a,ilen:r}=Hn(n,i,s),{move:l=!0,reverse:h}=s||{};let c,d,u,f,g,p,m=0,x=0;const b=t=>(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?(i<f?f=i:i>g&&(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<h;++l){const{start:h,end:c}=o[l],d=n[h],u=n[c];if(d===u){a.push(d);continue}const f=r(d,u,Math.abs((s-d[e])/(u[e]-d[e])),i.stepped);f[e]=t[e],a.push(f)}return 1===a.length?a[0]:a}pathSegment(t,e,i){return Yn(this)(t,this,e,i)}path(t,e,i){const s=this.segments,n=Yn(this);let o=this._loop;e=e||0,i=i||this.points.length-e;for(const a of s)o&=n(t,this,a,{start:e,end:e+i-1});return!!o}draw(t,e,i,s){const n=this.options||{};(this.points||[]).length&&n.borderWidth&&(t.save(),Xn(t,this,i,s),t.restore()),this.animated&&(this._pointsUpdated=!1,this._path=void 0)}}function Kn(t,e,i,s){const n=t.options,{[i]:o}=t.getProps([i],s);return Math.abs(e-o)<n.radius+n.hitRadius}qn.id="line",qn.defaults={borderCapStyle:"butt",borderDash:[],borderDashOffset:0,borderJoinStyle:"miter",borderWidth:3,capBezierPoints:!0,cubicInterpolationMode:"default",fill:!1,spanGaps:!1,stepped:!1,tension:0},qn.defaultRoutes={backgroundColor:"backgroundColor",borderColor:"borderColor"},qn.descriptors={_scriptable:!0,_indexable:t=>"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)<Math.pow(s.hitRadius+s.radius,2)}inXRange(t,e){return Kn(this,t,"x",e)}inYRange(t,e){return Kn(this,t,"y",e)}getCenterPoint(t){const{x:e,y:i}=this.getProps(["x","y"],t);return{x:e,y:i}}size(t){let e=(t=t||this.options||{}).radius||0;e=Math.max(e,e&&t.hoverRadius||0);return 2*(e+(e&&t.borderWidth||0))}draw(t,e){const i=this.options;this.skip||i.radius<.1||!Jt(this,e,this.size(i)/2)||(t.strokeStyle=i.borderColor,t.lineWidth=i.borderWidth,t.fillStyle=i.backgroundColor,Zt(t,i,this.x,this.y))}getRange(){const t=this.options||{};return t.radius+t.hitRadius}}function Zn(t,e){const{x:i,y:s,base:n,width:o,height:a}=t.getProps(["x","y","base","width","height"],e);let r,l,h,c,d;return t.horizontal?(d=a/2,r=Math.min(i,n),l=Math.max(i,n),h=s-d,c=s+d):(d=o/2,r=i-d,l=i+d,h=Math.min(s,n),c=Math.max(s,n)),{left:r,top:h,right:l,bottom:c}}function Jn(t,e,i,s){return t?0:jt(e,i,s)}function Qn(t){const e=Zn(t),i=e.right-e.left,s=e.bottom-e.top,n=function(t,e,i){const s=t.options.borderWidth,n=t.borderSkipped,o=Ve(s);return{t:Jn(n.top,o.top,0,i),r:Jn(n.right,o.right,0,e),b:Jn(n.bottom,o.bottom,0,i),l:Jn(n.left,o.left,0,e)}}(t,i/2,s/2),o=function(t,e,i){const{enableBorderRadius:s}=t.getProps(["enableBorderRadius"]),n=t.options.borderRadius,o=We(n),a=Math.min(e,i),r=t.borderSkipped,l=s||U(n);return{topLeft:Jn(!l||r.top||r.left,o.topLeft,0,a),topRight:Jn(!l||r.top||r.right,o.topRight,0,a),bottomLeft:Jn(!l||r.bottom||r.left,o.bottomLeft,0,a),bottomRight:Jn(!l||r.bottom||r.right,o.bottomRight,0,a)}}(t,i/2,s/2);return{outer:{x:e.left,y:e.top,w:i,h:s,radius:o},inner:{x:e.left+n.l,y:e.top+n.t,w:i-n.l-n.r,h:s-n.t-n.b,radius:{topLeft:Math.max(0,o.topLeft-Math.max(n.t,n.l)),topRight:Math.max(0,o.topRight-Math.max(n.t,n.r)),bottomLeft:Math.max(0,o.bottomLeft-Math.max(n.b,n.l)),bottomRight:Math.max(0,o.bottomRight-Math.max(n.b,n.r))}}}}function to(t,e,i,s){const n=null===e,o=null===i,a=t&&!(n&&o)&&Zn(t,s);return a&&(n||Yt(e,a.left,a.right))&&(o||Yt(i,a.top,a.bottom))}function eo(t,e){t.rect(e.x,e.y,e.w,e.h)}function io(t,e,i={}){const s=t.x!==i.x?-e:0,n=t.y!==i.y?-e:0,o=(t.x+t.w!==i.x+i.w?e:0)-s,a=(t.y+t.h!==i.y+i.h?e:0)-n;return{x:t.x+s,y:t.y+n,w:t.w+o,h:t.h+a,radius:t.radius}}Gn.id="point",Gn.defaults={borderWidth:1,hitRadius:1,hoverBorderWidth:1,hoverRadius:4,pointStyle:"circle",radius:3,rotation:0},Gn.defaultRoutes={backgroundColor:"backgroundColor",borderColor:"borderColor"};class so extends Ds{constructor(t){super(),this.options=void 0,this.horizontal=void 0,this.base=void 0,this.width=void 0,this.height=void 0,this.inflateAmount=void 0,t&&Object.assign(this,t)}draw(t){const{inflateAmount:e,options:{borderColor:i,backgroundColor:s}}=this,{inner:n,outer:o}=Qn(this),a=(r=o.radius).topLeft||r.topRight||r.bottomLeft||r.bottomRight?oe:eo;var r;t.save(),o.w===n.w&&o.h===n.h||(t.beginPath(),a(t,io(o,e,n)),t.clip(),a(t,io(n,-e,o)),t.fillStyle=i,t.fill("evenodd")),t.beginPath(),a(t,io(n,e)),t.fillStyle=s,t.fill(),t.restore()}inRange(t,e,i){return to(this,t,e,i)}inXRange(t,e){return to(this,t,null,e)}inYRange(t,e){return to(this,null,t,e)}getCenterPoint(t){const{x:e,y:i,base:s,horizontal:n}=this.getProps(["x","y","base","horizontal"],t);return{x:n?(e+s)/2:e,y:n?i:(i+s)/2}}getRange(t){return"x"===t?this.width/2:this.height/2}}so.id="bar",so.defaults={borderSkipped:"start",borderWidth:0,borderRadius:0,inflateAmount:"auto",pointStyle:void 0},so.defaultRoutes={backgroundColor:"backgroundColor",borderColor:"borderColor"};var no=Object.freeze({__proto__:null,ArcElement:Vn,LineElement:qn,PointElement:Gn,BarElement:so});function oo(t){if(t._decimated){const e=t._data;delete t._decimated,delete t._data,Object.defineProperty(t,"data",{value:e})}}function ao(t){t.data.datasets.forEach((t=>{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;c<o-2;c++){let s,n=0,o=0;const h=Math.floor((c+1)*r)+1+e,m=Math.min(Math.floor((c+2)*r)+1,i)+e,x=m-h;for(s=h;s<m;s++)n+=t[s].x,o+=t[s].y;n/=x,o/=x;const b=Math.floor(c*r)+1+e,_=Math.min(Math.floor((c+1)*r)+1,i)+e,{x:y,y:v}=t[p];for(u=f=-1,s=b;s<_;s++)f=.5*Math.abs((y-n)*(t[s].y-v)-(y-t[s].x)*(o-v)),f>u&&(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;n<e+i;++n){o=t[n],a=(o.x-b)/_*s,r=o.y;const e=0|a;if(e===l)r<u?(u=r,h=n):r>f&&(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;l<n;++l)o.push(e.getPointPositionForValue(l,c));return o}(t):function(t){const{scale:e={},fill:i}=t;let s,n=null;return"start"===i?n=e.bottom:"end"===i?n=e.top:U(i)?n=e.getPixelForValue(i.value):e.getBasePixel&&(n=e.getBasePixel()),X(n)?(s=e.isHorizontal(),{x:s?n:null,y:s?null:n}):null}(t)}function uo(t,e,i){for(;e>t;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<i.length;n++){const o=i[n],{first:a,last:r,point:l}=go(o,e,"x");if(!(!l||a&&r))if(a)s.unshift(l);else if(t.push(l),!r)break}t.push(...s)}function go(t,e,i){const s=t.interpolate(e,i);if(!s)return{};const n=s[i],o=t.segments,a=t.points;let r=!1,l=!1;for(let t=0;t<o.length;t++){const e=o[t],s=a[e.start][i],h=a[e.end][i];if(Yt(n,s,h)){r=n===s,l=n===h;break}}return{first:r,last:l,point:s}}function po(t){const{chart:e,fill:i,line:s}=t;if(X(i))return function(t,e){const i=t.getDatasetMeta(e);return i&&t.isDatasetVisible(e)?i.dataset:null}(e,i);if("stack"===i)return function(t){const{scale:e,index:i,line:s}=t,n=[],o=s.segments,a=s.points,r=function(t,e){const i=[],s=t.getMatchingVisibleMetas("line");for(let t=0;t<s.length;t++){const n=s[t];if(n.index===e)break;n.hidden||i.unshift(n.dataset)}return i}(e,i);r.push(mo({x:null,y:e.bottom},s));for(let t=0;t<o.length;t++){const e=o[t];for(let t=e.start;t<=e.end;t++)fo(n,a[t],r)}return new qn({points:n,options:{}})}(t);if("shape"===i)return!0;const n=co(t);return n instanceof ho?n:mo(n,s)}function mo(t,e){let i=[],s=!1;return Y(t)?(s=!0,i=t):i=function(t,e){const{x:i=null,y:s=null}=t||{},n=e.points,o=[];return e.segments.forEach((({start:t,end:e})=>{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<s;++a)o=t.getDatasetMeta(a),r=o.dataset,l=null,r&&r.options&&r instanceof qn&&(l={visible:t.isDatasetVisible(a),index:a,fill:lo(r,a,s),chart:t,axis:o.controller.options.indexAxis,scale:o.vScale,line:r}),o.$filler=l,n.push(l);for(a=0;a<s;++a)l=n[a],l&&!1!==l.fill&&(l.fill=xo(n,a,i.propagate))},beforeDraw(t,e,i){const s="beforeDraw"===i.drawTime,n=t.getSortedVisibleDatasetMetas(),o=t.chartArea;for(let e=n.length-1;e>=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;i<n.length;++i)if(s=n[i],Yt(t,s.left,s.left+s.width)&&Yt(e,s.top,s.top+s.height))return this.legendItems[i];return null}handleEvent(t){const e=this.options;if(!function(t,e){if("mousemove"===t&&(e.onHover||e.onLeave))return!0;if(e.onClick&&("click"===t||"mouseup"===t))return!0;return!1}(t.type,e))return;const i=this._getLegendItemAt(t.x,t.y);if("mousemove"===t.type){const o=this._hoveredItem,a=(n=i,null!==(s=o)&&null!==n&&s.datasetIndex===n.datasetIndex&&s.index===n.index);o&&!a&&J(e.onLeave,[t,o,this],this),this._hoveredItem=i,i&&!a&&J(e.onHover,[t,i,this],this)}else i&&J(e.onClick,[t,i,this],this);var s,n}}var Co={id:"legend",_element:Do,start(t,e,i){const s=t.legend=new Do({ctx:t.ctx,options:i,chart:t});ni.configure(t,s,i),ni.addBox(t,s)},stop(t){ni.removeBox(t,t.legend),delete t.legend},beforeUpdate(t,e,i){const s=t.legend;ni.configure(t,s,i),s.options=i},afterUpdate(t){const e=t.legend;e.buildLabels(),e.adjustHitBoxes()},afterEvent(t,e){e.replay||t.legend.handleEvent(e.event)},defaults:{display:!0,position:"top",align:"center",fullSize:!0,reverse:!1,weight:1e3,onClick(t,e,i){const s=e.datasetIndex,n=i.chart;n.isDatasetVisible(s)?(n.hide(s),e.hidden=!0):(n.show(s),e.hidden=!1)},onHover:null,onLeave:null,labels:{color:t=>t.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<i;++e){const i=t[e].element;if(i&&i.hasValue()){const t=i.tooltipPosition();s+=t.x,n+=t.y,++o}}return{x:s/o,y:n/o}},nearest(t,e){if(!t.length)return!1;let i,s,n,o=e.x,a=e.y,r=Number.POSITIVE_INFINITY;for(i=0,s=t.length;i<s;++i){const s=t[i].element;if(s&&s.hasValue()){const t=Vt(e,s.getCenterPoint());t<r&&(r=t,n=s)}}if(n){const t=n.tooltipPosition();o=t.x,a=t.y}return{x:o,y:a}}};function Eo(t,e){return e&&(Y(e)?Array.prototype.push.apply(t,e):t.push(e)),t}function Io(t){return("string"==typeof t||t instanceof String)&&t.indexOf("\n")>-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 i<s/2?"top":i>t.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;a<r;++a)l.push(zo(this.chart,e[a]));return t.filter&&(l=l.filter(((e,s,n)=>t.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;r<n;++r)e.fillText(s[r],l.x(t.x),t.y+o.lineHeight/2),t.y+=o.lineHeight+a,r+1===n&&(t.y+=i.titleMarginBottom-a)}}_drawColorBox(t,e,i,s,n){const o=this.labelColors[i],a=this.labelPointStyles[i],{boxHeight:r,boxWidth:l,boxPadding:h}=n,c=He(n.bodyFont),d=No(this,"left",n),u=s.x(d),f=r<c.lineHeight?(c.lineHeight-r)/2:0,g=e.y+f;if(n.usePointStyle){const e={radius:Math.min(l,r)/2,pointStyle:a.pointStyle,rotation:a.rotation,borderWidth:1},i=s.leftForLtr(u,l)+l/2,h=g+r/2;t.strokeStyle=n.multiKeyBackground,t.fillStyle=n.multiKeyBackground,Zt(t,e,i,h),t.strokeStyle=o.borderColor,t.fillStyle=o.backgroundColor,Zt(t,e,i,h)}else{t.lineWidth=o.borderWidth||1,t.strokeStyle=o.borderColor,t.setLineDash(o.borderDash||[]),t.lineDashOffset=o.borderDashOffset||0;const e=s.leftForLtr(u,l-h),i=s.leftForLtr(s.xPlus(u,1),l-h-2),a=We(o.borderRadius);Object.values(a).some((t=>0!==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;_<v;++_){for(m=s[_],x=this.labelTextColors[_],e.fillStyle=x,Q(m.before,g),b=m.lines,a&&b.length&&(this._drawColorBox(e,t,_,f,i),d=Math.max(c.lineHeight,r)),y=0,w=b.length;y<w;++y)g(b[y]),d=c.lineHeight;Q(m.after,g)}u=0,d=c.lineHeight,Q(this.afterBody,g),t.y-=n}drawFooter(t,e,i){const s=this.footer,n=s.length;let o,a;if(n){const r=Ei(i.rtl,this.x,this.width);for(t.x=No(this,i.footerAlign,i),t.y+=i.footerMarginTop,e.textAlign=r.textAlign(i.footerAlign),e.textBaseline="middle",o=He(i.footerFont),e.fillStyle=i.footerColor,e.font=o.string,a=0;a<n;++a)e.fillText(s[a],r.x(t.x),t.y+o.lineHeight/2),t.y+=o.lineHeight+i.footerSpacing}}drawBackground(t,e,i,s){const{xAlign:n,yAlign:o}=this,{x:a,y:r}=t,{width:l,height:h}=i,{topLeft:c,topRight:d,bottomLeft:u,bottomRight:f}=We(s.cornerRadius);e.fillStyle=s.backgroundColor,e.strokeStyle=s.borderColor,e.lineWidth=s.borderWidth,e.beginPath(),e.moveTo(a+c,r),"top"===o&&this.drawCaret(t,e,i,s),e.lineTo(a+l-d,r),e.quadraticCurveTo(a+l,r,a+l,r+d),"center"===o&&"right"===n&&this.drawCaret(t,e,i,s),e.lineTo(a+l,r+h-f),e.quadraticCurveTo(a+l,r+h,a+l-f,r+h),"bottom"===o&&this.drawCaret(t,e,i,s),e.lineTo(a+u,r+h),e.quadraticCurveTo(a,r+h,a,r+h-u),"center"===o&&"left"===n&&this.drawCaret(t,e,i,s),e.lineTo(a,r+c),e.quadraticCurveTo(a,r,a+c,r),e.closePath(),e.fill(),s.borderWidth>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<s)return i[e.dataIndex]}return""},afterTitle:H,beforeBody:H,beforeLabel:H,label(t){if(this&&this.options&&"dataset"===this.options.mode)return t.label+": "+t.formattedValue||t.formattedValue;let e=t.dataset.label||"";e&&(e+=": ");const i=t.formattedValue;return $(i)||(e+=i),e},labelColor(t){const e=t.chart.getDatasetMeta(t.datasetIndex).controller.getStyle(t.dataIndex);return{borderColor:e.borderColor,backgroundColor:e.backgroundColor,borderWidth:e.borderWidth,borderDash:e.borderDash,borderDashOffset:e.borderDashOffset,borderRadius:0}},labelTextColor(){return this.options.bodyColor},labelPointStyle(t){const e=t.chart.getDatasetMeta(t.datasetIndex).controller.getStyle(t.dataIndex);return{pointStyle:e.pointStyle,rotation:e.rotation}},afterLabel:H,afterBody:H,beforeFooter:H,footer:H,afterFooter:H}},defaultRoutes:{bodyFont:"font",footerFont:"font",titleFont:"font"},descriptors:{_scriptable:t=>"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&&t<e.length?e[t]:t}configure(){super.configure(),this.isHorizontal()||(this._reversePixels=!this._reversePixels)}getPixelForValue(t){return"number"!=typeof t&&(t=this.parse(t)),null===t?NaN:this.getPixelForDecimal((t-this._startValue)/this._valueRange)}getPixelForTick(t){const e=this.ticks;return t<0||t>e.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}),v<o&&P++,Lt(Math.round((v+P*k)*y)/y,o,Ko(o,_,t))&&P++):v<o&&P++);P<M;++P)i.push({value:Math.round((v+P*k)*y)/y});return x&&d&&w!==a?i.length&&Lt(i[i.length-1].value,a,Ko(a,_,t))?i[i.length-1].value=a:i.push({value:a}):x&&w!==a||i.push({value:w}),i}({maxTicks:i,bounds:t.bounds,min:t.min,max:t.max,precision:e.precision,step:e.stepSize,count:e.count,maxDigits:this._maxDigits(),horizontal:this.isHorizontal(),minRotation:e.minRotation||0,includeBounds:!1!==e.includeBounds},this._range||this);return"ticks"===t.bounds&&Et(s,this,"value"),t.reverse?(s.reverse(),this.start=this.max,this.end=this.min):(this.start=this.min,this.end=this.max),s}configure(){const t=this.ticks;let e=this.min,i=this.max;if(super.configure(),this.options.offset&&t.length){const s=(i-e)/Math.max(t.length-1,1)/2;e-=s,i+=s}this._startValue=e,this._endValue=i,this._valueRange=i-e}getLabelForValue(t){return Ri(t,this.chart.options.locale,this.options.ticks.format)}}class Zo extends Go{determineDataLimits(){const{min:t,max:e}=this.getMinMax(!0);this.min=X(t)?t:0,this.max=X(e)?e:1,this.handleTickRangeOptions()}computeTickLimit(){const t=this.isHorizontal(),e=t?this.width:this.height,i=It(this.options.ticks.minRotation),s=(t?Math.sin(i):Math.cos(i))||.001,n=this._resolveTickFontOptions(0);return Math.ceil(e/Math.min(40,n.lineHeight/s))}getPixelForValue(t){return null===t?NaN:this.getPixelForDecimal((t-this._startValue)/this._valueRange)}getValueForPixel(t){return this._startValue+this.getDecimalForPixel(t)*this._valueRange}}function Jo(t){return 1===t/Math.pow(10,Math.floor(Dt(t)))}Zo.id="linear",Zo.defaults={ticks:{callback:Os.formatters.numeric}};class Qo extends Bs{constructor(t){super(t),this.start=void 0,this.end=void 0,this._startValue=void 0,this._valueRange=0}parse(t,e){const i=Go.prototype.parse.apply(this,[t,e]);if(0!==i)return X(i)&&i>0?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(a<i||a===i&&r<s);const h=q(t.max,o);return n.push({value:h,major:Jo(o)}),n}({min:this._userMin,max:this._userMax},this);return"ticks"===t.bounds&&Et(e,this,"value"),t.reverse?(e.reverse(),this.start=this.max,this.end=this.min):(this.start=this.min,this.end=this.max),e}getLabelForValue(t){return void 0===t?"0":Ri(t,this.chart.options.locale,this.options.ticks.format)}configure(){const t=this.min;super.configure(),this._startValue=Dt(t),this._valueRange=Dt(this.max)-Dt(t)}getPixelForValue(t){return void 0!==t&&0!==t||(t=this.min),null===t||isNaN(t)?NaN:this.getPixelForDecimal(t===this.min?0:(Dt(t)-this._startValue)/this._valueRange)}getValueForPixel(t){const e=this.getDecimalForPixel(t);return Math.pow(10,this._startValue+e*this._valueRange)}}function ta(t){const e=t.ticks;if(e.display&&t.display){const t=Ne(e.backdropPadding);return K(e.font&&e.font.size,bt.font.size)+t.height}return 0}function ea(t,e,i,s,n){return t===s||t===n?{start:e-i/2,end:e+i/2}:t<s||t>n?{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;d<o;d++){const o=a.setContext(t.getPointLabelContext(d));n[d]=o.padding;const u=t.getPointPosition(d,t.drawingArea+n[d],r),f=He(o.font),g=(l=t.ctx,h=f,c=Y(c=t._pointLabels[d])?c:[c],{w:qt(l,h.string,c),h:c.length*h.lineHeight});s[d]=g;const p=Nt(t.getIndexAngle(d)+r),m=Math.round(zt(p));sa(i,e,p,ea(m,u.x,g.w,0,180),ea(m,u.y,g.h,90,270))}var l,h,c;t.setCenterPoint(e.l-i.l,i.r-e.r,e.t-i.t,i.b-e.b),t._pointLabelItems=function(t,e,i){const s=[],n=t._pointLabels.length,o=t.options,a=ta(o)/2,r=t.drawingArea,l=o.pointLabels.centerPointLabels?_t/n:0;for(let o=0;o<n;o++){const n=t.getPointPosition(o,r+a+i[o],l),h=Math.round(zt(Nt(n.angle+kt))),c=e[o],d=aa(n.y,c.h,h),u=na(h),f=oa(n.x,c.w,u);s.push({x:n.x,y:d,textAlign:u,left:f,top:d,right:f+c.w,bottom:d+c.h})}return s}(t,s,n)}function sa(t,e,i,s,n){const o=Math.abs(Math.sin(i)),a=Math.abs(Math.cos(i));let r=0,l=0;s.start<e.l?(r=(e.l-s.start)/o,t.l=Math.min(t.l,e.l-r)):s.end>e.r&&(r=(s.end-e.r)/o,t.r=Math.max(t.r,e.r+r)),n.start<e.t?(l=(e.t-n.start)/a,t.t=Math.min(t.t,e.t-l)):n.end>e.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<s;o++)i=t.getPointPosition(o,e),n.lineTo(i.x,i.y)}}Qo.id="logarithmic",Qo.defaults={ticks:{callback:Os.formatters.logarithmic,major:{enabled:!0}}};class la extends Go{constructor(t){super(t),this.xCenter=void 0,this.yCenter=void 0,this.drawingArea=void 0,this._pointLabels=[],this._pointLabelItems=[]}setDimensions(){const t=this._padding=Ne(ta(this.options)/2),e=this.width=this.maxWidth-t.width,i=this.height=this.maxHeight-t.height;this.xCenter=Math.floor(this.left+e/2+t.left),this.yCenter=Math.floor(this.top+i/2+t.top),this.drawingArea=Math.floor(Math.min(e,i)/2)}determineDataLimits(){const{min:t,max:e}=this.getMinMax(!1);this.min=X(t)&&!isNaN(t)?t:0,this.max=X(e)&&!isNaN(e)?e:0,this.handleTickRangeOptions()}computeTickLimit(){return Math.ceil(this.drawingArea/ta(this.options))}generateTickLabels(t){Go.prototype.generateTickLabels.call(this,t),this._pointLabels=this.getLabels().map(((t,e)=>{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<e.length){const i=e[t];return function(t,e,i){return Ye(t,{label:i,index:e,type:"pointLabel"})}(this.getContext(),t,i)}}getPointPosition(t,e,i=0){const s=this.getIndexAngle(t)-kt+i;return{x:Math.cos(s)*e+this.xCenter,y:Math.sin(s)*e+this.yCenter,angle:s}}getPointPositionForValue(t,e){return this.getPointPosition(t,this.getDistanceFromCenterForValue(e))}getBasePosition(t){return this.getPointPositionForValue(t||0,this.getBaseValue())}getPointLabelPosition(t){const{left:e,top:i,right:s,bottom:n}=this._pointLabelItems[t];return{left:e,top:i,right:s,bottom:n}}drawBackground(){const{backgroundColor:t,grid:{circular:e}}=this.options;if(t){const i=this.ctx;i.save(),i.beginPath(),ra(this,this.getDistanceFromCenterForValue(this._endValue),e,this._pointLabels.length),i.closePath(),i.fillStyle=t,i.fill(),i.restore()}}drawGrid(){const t=this.ctx,e=this.options,{angleLines:i,grid:s}=e,n=this._pointLabels.length;let o,a,r;if(e.pointLabels.display&&function(t,e){const{ctx:i,options:{pointLabels:s}}=t;for(let n=e-1;n>=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<n-1;++o){const t=ha[ca[o]],n=t.steps?t.steps:Number.MAX_SAFE_INTEGER;if(t.common&&Math.ceil((i-e)/(n*t.size))<=s)return ca[o]}return ca[n-1]}function ga(t,e,i){if(i){if(i.length){const{lo:s,hi:n}=ae(i,e);t[i[s]>=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<o;++a)r=e[a],n[r]=a,s.push({value:r,major:!1});return 0!==o&&i?function(t,e,i,s){const n=t._adapter,o=+n.startOf(e[0].value,s),a=e[e.length-1].value;let r,l;for(r=o;r<=a;r=+n.add(r,1,s))l=i[r],l>=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;e<i;++e)if(ha[ca[e]].common)return ca[e]}(this._unit):void 0,this.initOffsets(s),t.reverse&&o.reverse(),pa(this,o,this._majorUnit)}initOffsets(t){let e,i,s=0,n=0;this.options.offset&&t.length&&(e=this.getDecimalForValue(t[0]),s=1===t.length?1-e:(this.getDecimalForValue(t[1])-e)/2,i=this.getDecimalForValue(t[t.length-1]),n=1===t.length?i:(i-this.getDecimalForValue(t[t.length-2]))/2);const o=t.length<3?.5:.25;s=jt(s,0,o),n=jt(n,0,o),this._offsets={start:s,end:n,factor:1/(s+1+n)}}_generate(){const t=this._adapter,e=this.min,i=this.max,s=this.options,n=s.time,o=n.unit||fa(n.minUnit,e,i,this._getLabelCapacity(e)),a=K(n.stepSize,1),r="week"===o&&n.isoWeekday,l=Tt(r)||!0===r,h={};let c,d,u=e;if(l&&(u=+t.startOf(u,"isoWeek",r)),u=+t.startOf(u,l?"day":o),t.diff(i,e,o)>1e5*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;c<i;c=+t.add(c,a,o),d++)ga(h,c,f);return c!==i&&"ticks"!==s.bounds&&1!==d||ga(h,c,f),Object.keys(h).sort(((t,e)=>t-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;e<i;++e)s=t[e],s.label=this._tickFormatFunction(s.value,e,t)}getDecimalForValue(t){return null===t?NaN:(t-this.min)/(this.max-this.min)}getPixelForValue(t){const e=this._offsets,i=this.getDecimalForValue(t);return this.getPixelForDecimal((e.start+i)*e.factor)}getValueForPixel(t){const e=this._offsets,i=this.getDecimalForPixel(t)/e.factor-e.end;return this.min+i*(this.max-this.min)}_getLabelSize(t){const e=this.options.ticks,i=this.ctx.measureText(t).width,s=It(this.isHorizontal()?e.maxRotation:e.minRotation),n=Math.cos(s),o=Math.sin(s),a=this._resolveTickFontOptions(0).size;return{w:i*n+a*o,h:i*o+a*n}}_getLabelCapacity(t){const e=this.options.time,i=e.displayFormats,s=i[e.unit]||i.millisecond,n=this._tickFormatFunction(t,0,pa(this,[t],this._majorUnit),s),o=this._getLabelSize(n),a=Math.floor(this.isHorizontal()?this.width/o.w:this.height/o.h)-1;return a>0?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<e;++t)i=i.concat(s[t].controller.getAllParsedValues(this));return this._cache.data=this.normalize(i)}getLabelTimestamps(){const t=this._cache.labels||[];let e,i;if(t.length)return t;const s=this.getLabels();for(e=0,i=s.length;e<i;++e)t.push(ua(this,s[e]));return this._cache.labels=this._normalized?t:this.normalize(t)}normalize(t){return fe(t.sort(da))}}function xa(t,e,i){let s,n,o,a,r=0,l=t.length-1;i?(e>=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<a;++o)l=t[o],l>=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;o<a;++o)h=s[o+1],r=s[o-1],l=s[o],Math.round((h+r)/2)!==l&&n.push({time:l,pos:o/(a-1)});return n}_getTimestampsForTable(){let t=this._cache.all||[];if(t.length)return t;const e=this.getDataTimestamps(),i=this.getLabelTimestamps();return t=e.length&&i.length?this.normalize(e.concat(i)):e.length?e:i,t=this._cache.all=t,t}getDecimalForValue(t){return(xa(this._table,t)-this._minPos)/this._tableRange}getValueForPixel(t){const e=this._offsets,i=this.getDecimalForPixel(t)/e.factor-e.end;return xa(this._table,i*this._tableRange+this._minPos,!0)}}ba.id="timeseries",ba.defaults=ma.defaults;var _a=Object.freeze({__proto__:null,CategoryScale:qo,LinearScale:Zo,LogarithmicScale:Qo,RadialLinearScale:la,TimeScale:ma,TimeSeriesScale:ba});return dn.register(Rn,_a,no,Uo),dn.helpers={...Yi},dn._adapters=mn,dn.Animation=us,dn.Animations=gs,dn.animator=a,dn.controllers=Ws.controllers.items,dn.DatasetController=Ps,dn.Element=Ds,dn.elements=no,dn.Interaction=Ee,dn.layouts=ni,dn.platforms=hs,dn.Scale=Bs,dn.Ticks=Os,Object.assign(dn,Rn,_a,no,Uo,hs),dn.Chart=dn,"undefined"!=typeof window&&(window.Chart=dn),dn}));


blobId: Q27SmfPFYXXaN4HTWOUE
dateModified: 2025-03-02 16:55:38.469+0200
utcDateModified: 2025-03-02 14:55:38.469Z
content:
  <div>
         

        <div>
          <p>Here I'd keep various notes related to my work's projects etc.</p>
        </div>
      </div>


blobId: 9axygdxlFUAZw3QU2SIz
dateModified: 2025-03-02 16:55:38.420+0200
utcDateModified: 2025-03-02 14:55:38.420Z
content:
  <div>
         

        <div>
          <p>Documentation: <a href="http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_09_02.html">http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_09_02.html</a>

          </p>
          <p> </p>
          <p>#!/bin/bash</p>
          <p># This script opens 4 terminal windows.</p>
          <p> </p>
          <p>i="0"</p>
          <p>while [ $i -lt 4 ]</p>
          <p>do</p>
          <p>    xterm &amp;</p>
          <p>    i=$[$i+1]</p>
          <p>done</p>
        </div>
      </div>


blobId: VYbMo83GR7iDgOJoTTt5
dateModified: 2025-03-02 16:55:38.320+0200
utcDateModified: 2025-03-02 14:55:38.320Z
content:
  <div>
         

        <div>
          <p>How to be a stoic from Massimo Pigliuci:</p>
          <p><a href="https://www.amazon.com/gp/product/B01K3WN1BY?pf_rd_m=A2R2RITDJNW1Q6&amp;storeType=ebooks&amp;pageType=STOREFRONT&amp;pf_rd_p=8e2a96d9-c848-435b-92bd-0856850ad544&amp;pf_rd_r=4J6CT15BS4X8062XNGDF&amp;pf_rd_s=merchandised-search-5&amp;pf_rd_t=40901&amp;ref_=dbs_f_ebk_rwt_scns_mwl_ms5_kmw_8e2a96d9-c848-435b-92bd-0856850ad544_2&amp;pf_rd_i=154606011">https://www.amazon.com/gp/product/B01K3WN1BY?pf_rd_m=A2R2RITDJNW1Q6&amp;storeType=ebooks&amp;pageType=STOREFRONT&amp;pf_rd_p=8e2a96d9-c848-435b-92bd-0856850ad544&amp;pf_rd_r=4J6CT15BS4X8062XNGDF&amp;pf_rd_s=merchandised-search-5&amp;pf_rd_t=40901&amp;ref_=dbs_f_ebk_rwt_scns_mwl_ms5_kmw_8e2a96d9-c848-435b-92bd-0856850ad544_2&amp;pf_rd_i=154606011</a>

          </p>
        </div>
      </div>


blobId: GrzzOy09s9BhMVvWx6TF
dateModified: 2025-03-02 16:55:38.338+0200
utcDateModified: 2025-03-02 14:55:38.338Z
content:
  <div>
         

        <div>
          <p>Miscellaneous notes done on monday ...</p>
          <p> </p>
          <p>Interesting video: <a href="https://www.youtube.com/watch?v=_eSAF_qT_FY&amp;feature=youtu.be">https://www.youtube.com/watch?v=_eSAF_qT_FY&amp;feature=youtu.be</a>

          </p>
          <p> </p>
          <p> </p>
        </div>
      </div>


blobId: h4jXCQm4aOYBibUr5Qpl
dateModified: 2025-03-02 16:55:38.646+0200
utcDateModified: 2025-03-02 14:55:38.646Z
content:
  const notes = await api.runOnBackend(() => {
      return api.sql.getRows(`
          SELECT
              notes.noteId,
              COUNT(branches.branchId) AS count
          FROM notes
          JOIN branches USING (noteId)
          WHERE notes.isDeleted = 0
            AND branches.isDeleted = 0
          GROUP BY notes.noteId
          HAVING count > 1
          ORDER BY count DESC
          LIMIT 100`);
  });

  const $statsTable = api.$container.find('.stats-table');

  for (const note of notes) {     
      $statsTable.append(
          $("<tr>")
              .append(
                  $("<td>").append(await api.createNoteLink(note.noteId, {showNotePath: true}))
              ) 
              .append($("<td nowrap>").text(note.count))
      );
  }


blobId: NewXxY9FyE8lghIGSs8W
dateModified: 2025-03-02 16:55:38.489+0200
utcDateModified: 2025-03-02 14:55:38.489Z
content:
  erDiagram
            CUSTOMER }|..|{ DELIVERY-ADDRESS : has
            CUSTOMER ||--o{ ORDER : places
            CUSTOMER ||--o{ INVOICE : "liable for"
            DELIVERY-ADDRESS ||--o{ ORDER : receives
            INVOICE ||--|{ ORDER : covers
            ORDER ||--|{ ORDER-ITEM : includes
            PRODUCT-CATEGORY ||--|{ PRODUCT : contains
            PRODUCT ||--o{ ORDER-ITEM : "ordered in"
              


blobId: dGjOYgJJYhlLZD7KJYZ1
dateModified: 2025-03-02 16:55:38.513+0200
utcDateModified: 2025-03-02 14:55:38.513Z
content:
  <div style="padding: 20px">
      <p>This table shows 100 largest notes, including their revisions</p> 

      <table class="table stats-table" style="font-size: 90%;">
          <tr>
              <th>Note</th>
              <th nowrap>Size</th>
          </tr>
      </table>
  </div>


blobId: chWcTwgs0rnmOiS4dEN9
dateModified: 2025-03-02 16:55:38.639+0200
utcDateModified: 2025-03-02 14:55:38.639Z
content:
  const notes = await api.runOnBackend(() => {
      return api.sql.getRows(`
          SELECT
              notes.noteId,
              COUNT(attributes.attributeId) AS count
          FROM notes
          JOIN attributes ON attributes.value = notes.noteId
          WHERE notes.isDeleted = 0
            AND attributes.isDeleted = 0
            AND attributes.type = 'relation'
          GROUP BY notes.noteId
          ORDER BY count DESC
          LIMIT 100`);
  });

  const $statsTable = api.$container.find('.stats-table');

  for (const note of notes) {     
      $statsTable.append(
          $("<tr>")
              .append(
                  $("<td>").append(await api.createNoteLink(note.noteId, {showNotePath: true}))
              ) 
              .append($("<td nowrap>").text(note.count))
      );
  }


blobId: mP1X0UPxXa60HSWzOOS4
dateModified: 2025-03-02 16:55:38.408+0200
utcDateModified: 2025-03-02 14:55:38.409Z
content:
  <div>
         

        <div>
          <p>25. 12., 26. 12., 1. 1. - statutory holidays</p>
          <p>27. 12. - 29. 12., 2. 1. - vacation days</p>
        </div>
      </div>


blobId: fcb5oJGCNZ5rwKgtDBdX
dateModified: 2025-03-02 16:55:38.429+0200
utcDateModified: 2025-03-02 14:55:38.429Z
content:
  <div>
         

        <div>
          <p>Node.js allows the creation of <a href="https://en.wikipedia.org/wiki/Web_server">Web servers</a> and
            networking tools using <a href="https://en.wikipedia.org/wiki/JavaScript">JavaScript</a> and
            a collection of "modules" that handle various core functionalities.<a href="https://en.wikipedia.org/wiki/Node.js#cite_note-b3-28">[28]</a>

            <a href="https://en.wikipedia.org/wiki/Node.js#cite_note-b1-31">[31]</a><a href="https://en.wikipedia.org/wiki/Node.js#cite_note-b2-44">[44]</a>

              <a href="https://en.wikipedia.org/wiki/Node.js#cite_note-b4-45">[45]</a><a href="https://en.wikipedia.org/wiki/Node.js#cite_note-b5-46">[46]</a> Modules
                are provided for <a href="https://en.wikipedia.org/wiki/File_system">file system</a> I/O,
                networking (<a href="https://en.wikipedia.org/wiki/Domain_Name_System">DNS</a>,
                <a href="https://en.wikipedia.org/wiki/HTTP">HTTP</a>, <a href="https://en.wikipedia.org/wiki/Transmission_Control_Protocol">TCP</a>,
                  <a href="https://en.wikipedia.org/wiki/Transport_Layer_Security">TLS/SSL</a>, or <a href="https://en.wikipedia.org/wiki/User_Datagram_Protocol">UDP</a>),
                    <a href="https://en.wikipedia.org/wiki/Binary_file">binary</a>data (buffers), <a href="https://en.wikipedia.org/wiki/Cryptography">cryptography</a> functions,
                      <a href="https://en.wikipedia.org/wiki/Stream_(computing)">data streams</a>, and other core functions.<a href="https://en.wikipedia.org/wiki/Node.js#cite_note-b1-31">[31]</a>

                        <a href="https://en.wikipedia.org/wiki/Node.js#cite_note-b4-45">[45]</a><a href="https://en.wikipedia.org/wiki/Node.js#cite_note-47">[47]</a> Node.js's
                          modules use an API designed to reduce the complexity of writing server
                          applications.<a href="https://en.wikipedia.org/wiki/Node.js#cite_note-b1-31">[31]</a>

                          <a href="https://en.wikipedia.org/wiki/Node.js#cite_note-b4-45">[45]</a>
          </p>
        </div>
      </div>


blobId: 8RVqdTmU0SnlGFH3XCIf
dateModified: 2025-03-02 16:55:38.479+0200
utcDateModified: 2025-03-02 14:55:38.479Z
content:
  sequenceDiagram
  Alice->>John: Hello John, how are you?
  loop Healthcheck
      John->>John: Fight against hypochondria
  end
  Note right of John: Rational thoughts!
  John-->>Alice: Great!
  John->>Bob: How about you?
  Bob-->>John: Jolly good!


blobId: K6AfmlMJZjYAcnYXzsmW
dateModified: 2025-03-02 16:55:38.495+0200
utcDateModified: 2025-03-02 14:55:38.495Z
content:
  async function getChartData() {
      const days = await api.runOnBackend(() => {
          const notes = api.getNotesWithLabel('weight');
          const days = [];

          for (const note of notes) {
              const date = note.getLabelValue('dateNote');
              const weight = parseFloat(note.getLabelValue('weight'));

              if (date && weight) {
                  days.push({ date, weight });
              }
          }

          days.sort((a, b) => a.date > b.date ? 1 : -1);

          return days;
      });

      const datasets = [
          {
              label: "Weight (kg)",
              backgroundColor: 'red',
              borderColor: 'red',
              data: days.map(day => day.weight),
              fill: false,
              spanGaps: true,
              datalabels: {
                  display: false
              },
              tension: 0.3
          }
      ];

      return {
          datasets: datasets,
          labels: days.map(day => day.date)
      };
  }

  const ctx = api.$container.find("canvas")[0].getContext("2d");

  new chartjs.Chart(ctx, {
      type: 'line',
      data: await getChartData()
  });


blobId: C2trMWAkkTtnSoTbS1HW
dateModified: 2025-03-02 16:55:38.472+0200
utcDateModified: 2025-03-02 14:55:38.472Z
content:
  <div>
         

        <div>
          
  <h2>Main characters</h2>

          <p>… here put main characters …</p>
          <p> </p>
           <h2>Plot</h2>

          <p>… describe main plot lines …</p>
          <p> </p>
           <h2>Tone</h2>

          <p> </p>
           <h2>Genre</h2>

          <p>scifi / drama / romance</p>
          <p> </p>
           <h2>Similar books</h2>

          <ul>
            <li>…</li>
          </ul>
        </div>
      </div>


blobId: WErvjZVZo1XqvsgZHiXt
dateModified: 2025-03-02 16:55:38.333+0200
utcDateModified: 2025-03-02 14:55:38.333Z
content:
  <div>
         

        <div>
          <ul>
            <li>XBox</li>
            <li>Candles</li>
            <li><a href="https://www.amazon.ca/Anker-SoundCore-Portable-Bluetooth-Resistance/dp/B01MTB55WH?pd_rd_wg=honW8&amp;pd_rd_r=c9bb7c0f-0051-4da7-991f-4ca711a1b3e3&amp;pd_rd_w=ciUpR&amp;ref_=pd_gw_simh&amp;pf_rd_r=K10XKX0NGPDNTYYP4BS4&amp;pf_rd_p=5f1b460b-78c1-580e-929e-2878fe4859e8">Portable speakers</a>

            </li>
            <li>...?</li>
          </ul>
        </div>
      </div>


blobId: jINYGKT8ytF5OTUycZ3X
dateModified: 2025-03-02 16:55:38.643+0200
utcDateModified: 2025-03-02 14:55:38.643Z
content:
  module.exports = counts => {
      const $statsTable = api.$container.find('.stats-table');
      
      addRow('total', 
             counts.reduce((acc, cur) => acc + cur.countNotDeleted, 0), 
             counts.reduce((acc, cur) => acc + cur.countDeleted, 0)
      );
      
      for (const count of counts) {
          addRow(count.type, count.countNotDeleted, count.countDeleted);
      }

      function addRow(type, countNotDeleted, countDeleted) {
          $statsTable.append(
              $("<tr>")
                  .append($("<td>").text(type))
                  .append($("<td>").text(countNotDeleted))
                  .append($("<td>").text(countDeleted))
          );
      }
  }


blobId: VrhMzsjJaHuYKYSTWVnP
dateModified: 2025-03-02 16:55:38.407+0200
utcDateModified: 2025-03-02 14:55:38.407Z
content:
  <div>
         

        <div>
          <p>This christmas is going to be awesome!</p>
        </div>
      </div>


blobId: CaGfEufUXmXu0gVxPc2V
dateModified: 2025-03-02 16:55:38.631+0200
utcDateModified: 2025-03-02 14:55:38.631Z
content:
  const notes = await api.runOnBackend(() => {
      return api.sql.getRows(`
          SELECT
              notes.noteId,
              COUNT(note_revisions.noteRevisionId) AS count
          FROM notes
          JOIN note_revisions USING (noteId)
          WHERE notes.isDeleted = 0
          GROUP BY notes.noteId
          ORDER BY count DESC
          LIMIT 100`);
  });

  const $statsTable = api.$container.find('.stats-table');

  for (const note of notes) {     
      $statsTable.append(
          $("<tr>")
              .append(
                  $("<td>").append(await api.createNoteLink(note.noteId, {showNotePath: true}))
              ) 
              .append($("<td nowrap>").text(note.count))
      );
  }


blobId: jzyVL3LjXrFMtmkGZoRd
dateModified: 2025-03-02 16:55:38.397+0200
utcDateModified: 2025-03-02 14:55:38.397Z
content:
  <div>
         

        <div>
          <p>I enjoyed this book a lot. It's slow moving at times with the author taking
            his time with conversations and descriptions of them. The premise is very
            interesting, but I'm sad that it wasn't elaborated more deeply - e.g. the
            history and development of the clakker technology with Huygens and how
            Spinoza comes into the picture. Maybe the author saves it for the next
            two parts of the book.</p>
          <p>Language can be intimidating at first for non-native english speakers
            - author uses wide range of vocabulary. Fortunately it gets better after
            a while as reader adjusts.</p>
        </div>
      </div>


blobId: YrGEk4PLYeHWIMX40vWk
dateModified: 2025-03-02 16:55:38.439+0200
utcDateModified: 2025-03-02 14:55:38.439Z
content:
  {"notes":[{"noteId":"Iu3E3zFieycP","x":492,"y":211},{"noteId":"tHAN76L2nNoK","x":77,"y":212},{"noteId":"w3noOsXI4MkU","x":77,"y":526},{"noteId":"vTShqY8hTPCE","x":498,"y":522}],"transform":{"x":-18.769103121925298,"y":-138.5171153067555,"scale":0.9994456848938519}}


blobId: ZNjLIz56PH4pRrmb1W3R
dateModified: 2025-03-02 16:55:38.422+0200
utcDateModified: 2025-03-02 14:55:38.422Z
content:
  <div>
         

        <div>
           <h3>Login shell</h3>

          <p>As a "login shell", Bash reads and sets (executes) the user's profile
            from /etc/profile and one of ~/.bash_profile, ~/.bash_login, or ~/.profile
            (in that order, using the first one that's readable!).</p>
          <p>When a login shell exits, Bash reads and executes commands from the file
            ~/.bash_logout, if it exists.</p>
          <p>Why an extra login shell mode? There are many actions and variable sets
            that only make sense for the initial user login. That's why all UNIX® shells
            have (should have) a "login" mode.</p>
          <p><i><strong>Methods to start Bash as a login shell:</strong></i>

          </p>
          <ul>
            <li>the first character of argv[0] is - (a hyphen): traditional UNIX® shells
              start from the login binary</li>
            <li>Bash is started with the -l option</li>
            <li>Bash is started with the --login option</li>
          </ul>
          <p><i><strong>Methods to test for login shell mode:</strong></i>

          </p>
          <ul>
            <li>the shell option <a href="http://wiki.bash-hackers.org/internals/shell_options#login_shell">login_shell</a> is
              set</li>
          </ul>
          <p><i><strong>Related switches:</strong></i>

          </p>
          <ul>
            <li>--noprofile disables reading of all profile files</li>
          </ul>
          
  <h3>Interactive shell</h3>

          <p>When Bash starts as an interactive non-login shell, it reads and executes
            commands from ~/.bashrc. This file should contain, for example, aliases,
            since they need to be defined in every shell as they're not inherited from
            the parent shell.</p>
          <p>The feature to have a system-wide /etc/bash.bashrc or a similar system-wide
            rc-file is specific to vendors and distributors that ship <i>their own, patched variant of Bash</i>.
            The classic way to have a system-wide rc file is to source /etc/bashrc
            from every user's ~/.bashrc.</p>
          <p><i><strong>Methods to test for interactive-shell mode:</strong></i>

          </p>
          <ul>
            <li>the special parameter $- contains the letter i (lowercase I)</li>
          </ul>
          <p><i><strong>Related switches:</strong></i>

          </p>
          <ul>
            <li>-i forces the interactive mode</li>
            <li>--norc disables reading of the startup files (e.g. /etc/bash.bashrc if
              supported) and ~/.bashrc</li>
            <li>--rcfile defines another startup file (instead of /etc/bash.bashrc and
              ~/.bashrc)</li>
          </ul>
          
  <h3>SH mode</h3>

          <p>When Bash starts in SH compatiblity mode, it tries to mimic the startup
            behaviour of historical versions of sh as closely as possible, while conforming
            to the POSIX® standard as well. The profile files read are /etc/profile
            and ~/.profile, if it's a login shell.</p>
          <p>If it's not a login shell, the environment variable <a href="http://wiki.bash-hackers.org/syntax/shellvars#env">ENV</a> is
            evaluated and the resulting filename is used as the name of the startup
            file.</p>
          <p>After the startup files are read, Bash enters the <a href="http://wiki.bash-hackers.org/scripting/bashbehaviour#posix_run_mode">POSIX(r) compatiblity mode (for running, not for starting!)</a>.</p>
          <p><i><strong>Bash starts in sh compatiblity mode when:</strong></i>

          </p>
          <ul>
            <li>the base filename in argv[0] is sh (
              <figure class="image">
                <img />
              </figure> NB: /bin/sh may be linked to /bin/bash, but that doesn't mean it acts
              like /bin/bash 
              <figure class="image">
                <img />
              </figure>)</li>
          </ul>
        </div>
      </div>


blobId: N6ymVYOXrEDhrtE2lS4o
dateModified: 2025-03-02 16:55:38.647+0200
utcDateModified: 2025-03-02 14:55:38.647Z
content:
  return api.res.send(404);

  /**
   * To activate this demo, comment (or remove) the very first line of this code note. 
   * This is deactivated because custom request handler like this one can be a security risk.
   * 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\" }"
   * (host and port might have to be adjusted based on your setup)
   *
   * See https://github.com/zadam/trilium/wiki/Custom-request-handler for details.
   */

  const {req, res} = api;
  const {secret, title, content} = req.body;

  if (req.method == 'POST' && secret === 'secret-password') {
      // notes must be saved somewhere in the tree hierarchy specified by a parent note. 
      // This is defined by a relation from this code note to the "target" parent note
      // alternetively you can just use constant noteId for simplicity (get that from "Note Info" dialog of the desired parent note)
      const targetParentNoteId = api.currentNote.getRelationValue('targetNote');
      
      const {note} = api.createTextNote(targetParentNoteId, title, content);
      const notePojo = note.getPojo();

      res.status(201).json(notePojo);
  }
  else {
      res.send(400);
  }


blobId: 4zefiLGUDXwtYK7GMYFd
dateModified: 2025-03-02 16:55:38.512+0200
utcDateModified: 2025-03-02 14:55:38.512Z
content:
  module.exports = counts => {
      const $statsTable = api.$container.find('.stats-table');
      
      addRow('total', counts.reduce((acc, cur) => acc + cur.count, 0));
      
      for (const count of counts) {     
          addRow(count.name, count.count);
      }

      function addRow(name, count) {
          $statsTable.append(
              $("<tr>")
                  .append($("<td>").text(name))
                  .append($("<td>").text(count))
          );
      }
  }


blobId: cj70zsiArzTR8VzHQskb
dateModified: 2025-03-02 16:55:38.648+0200
utcDateModified: 2025-03-02 14:55:38.648Z
content:
  <div>
         

        <div>
          <p>This is a simple TODO/Task manager. You can see some description and explanation
            here: <a href="https://github.com/zadam/trilium/wiki/Task-manager">https://github.com/zadam/trilium/wiki/Task-manager</a>

          </p>
          <p>Please note that this is meant as scripting example only and feature/bug
            support is very limited.</p>
        </div>
      </div>


blobId: uAYemRh2ngzB1WnwpwHH
dateModified: 2025-03-02 16:55:38.471+0200
utcDateModified: 2025-03-02 14:55:38.471Z
content:
  <div>
         

        <div>
          <p>Checkout Kindle daily deals: <a href="https://www.amazon.com/gp/feature.html?docId=1000677541">https://www.amazon.com/gp/feature.html?docId=1000677541</a>

          </p>
          <ul>
            <li>Cixin Liu - <a href="https://www.amazon.com/Dark-Forest-Remembrance-Earths-Past/dp/0765386690/ref=pd_bxgy_14_img_2?_encoding=UTF8&amp;pd_rd_i=0765386690&amp;pd_rd_r=AB0J179TM9NTEAMHE240&amp;pd_rd_w=FAhxX&amp;pd_rd_wg=pLGK7&amp;psc=1&amp;refRID=AB0J179TM9NTEAMHE240">The Dark Forest</a>

            </li>
            <li>Ann Leckie - <a href="https://www.amazon.com/Ancillary-Sword-Imperial-Radch-Leckie/dp/0316246654/ref=pd_sim_14_1?_encoding=UTF8&amp;pd_rd_i=0316246654&amp;pd_rd_r=D7KDTGZFP7YM1YSYVY4G&amp;pd_rd_w=jkn28&amp;pd_rd_wg=JVhtw&amp;psc=1&amp;refRID=D7KDTGZFP7YM1YSYVY4G">Ancillary Sword</a>

            </li>
          </ul>
        </div>
      </div>


blobId: WYKGDnPM32x4spWQQ0Ji
dateModified: 2025-03-02 16:55:38.645+0200
utcDateModified: 2025-03-02 14:55:38.645Z
content:
  <div style="padding: 20px">
      <table class="table stats-table" style="font-size: 90%;">
          <tr>
              <th>Note</th>
              <th nowrap>Clone count</th>
          </tr>
      </table>
  </div>


blobId: EgvBcFS1TfgRuszhc7SN
dateModified: 2025-03-02 16:55:38.509+0200
utcDateModified: 2025-03-02 14:55:38.509Z
content:
  /*!
   * chartjs-plugin-datalabels v2.0.0
   * https://chartjs-plugin-datalabels.netlify.app
   * (c) 2017-2021 chartjs-plugin-datalabels contributors
   * Released under the MIT license
   */
  !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;a<n;++a)l=Math.max(t.measureText(o[a]).width,l);return t.font=i,{height:n*r.lineHeight,width:l}},n=function(t,e,r){return Math.max(t,Math.min(e,r))},i=function(t,e){var r,a,o,n,i=t.slice(),l=[];for(r=0,o=e.length;r<o;++r)n=e[r],-1===(a=i.indexOf(n))?l.push([n,1]):i.splice(a,1);for(r=0,o=i.length;r<o;++r)l.push([i[r],-1]);return l};function l(t,e){var r=e.x,a=e.y;if(null===r)return{x:0,y:-1};if(null===a)return{x:1,y:0};var o=t.x-r,n=t.y-a,i=Math.sqrt(o*o+n*n);return{x:i?o/i:0,y:i?n/i:-1}}function s(t,e,r){var a=0;return t<r.left?a|=1:t>r.right&&(a|=2),e<r.top?a|=8:e>r.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),s<d&&u<c?(t.arc(s,u,l,-Math.PI,-i),t.arc(d,u,l,-i,0),t.arc(d,c,l,0,i),t.arc(s,c,l,i,Math.PI)):s<d?(t.moveTo(s,r),t.arc(d,u,l,-i,i),t.arc(s,u,l,i,Math.PI+i)):u<c?(t.arc(s,u,l,-Math.PI,0),t.arc(s,c,l,0,Math.PI)):t.arc(s,u,l,-Math.PI,Math.PI),t.closePath(),t.moveTo(e,r)}else t.rect(e,r,a,o)}(t,x(e.x)+n/2,x(e.y)+n/2,x(e.w)-n,x(e.h)-n,r.borderRadius),t.closePath(),a&&(t.fillStyle=a,t.fill()),o&&n&&(t.strokeStyle=o,t.lineWidth=n,t.lineJoin="miter",t.stroke()))}function b(t,e,r){var a=t.shadowBlur,o=r.stroked,n=x(r.x),i=x(r.y),l=x(r.w);o&&t.strokeText(e,n,i,l),r.filled&&(a&&o&&(t.shadowBlur=0),t.fillText(e,n,i,l),a&&o&&(t.shadowBlur=a))}var _=function(t,e,r,a){var o=this;o._config=t,o._index=a,o._model=null,o._rects=null,o._ctx=e,o._el=r};t.merge(_.prototype,{_modelize:function(r,a,n,i){var l,s=this,u=s._index,x=t.toFont(t.resolve([n.font,{}],i,u)),v=t.resolve([n.color,e.defaults.color],i,u);return{align:t.resolve([n.align,"center"],i,u),anchor:t.resolve([n.anchor,"center"],i,u),area:i.chart.chartArea,backgroundColor:t.resolve([n.backgroundColor,null],i,u),borderColor:t.resolve([n.borderColor,null],i,u),borderRadius:t.resolve([n.borderRadius,0],i,u),borderWidth:t.resolve([n.borderWidth,0],i,u),clamp:t.resolve([n.clamp,!1],i,u),clip:t.resolve([n.clip,!1],i,u),color:v,display:r,font:x,lines:a,offset:t.resolve([n.offset,0],i,u),opacity:t.resolve([n.opacity,1],i,u),origin:y(s._el,i),padding:t.toPadding(t.resolve([n.padding,0],i,u)),positioner:(l=s._el,l instanceof e.ArcElement?d:l instanceof e.PointElement?c:l instanceof e.BarElement?h:f),rotation:t.resolve([n.rotation,0],i,u)*(Math.PI/180),size:o(s._ctx,a,x),textAlign:t.resolve([n.textAlign,"start"],i,u),textShadowBlur:t.resolve([n.textShadowBlur,0],i,u),textShadowColor:t.resolve([n.textShadowColor,v],i,u),textStrokeColor:t.resolve([n.textStrokeColor,v],i,u),textStrokeWidth:t.resolve([n.textStrokeWidth,0],i,u)}},update:function(e){var r,o,n,i=this,l=null,s=null,u=i._index,d=i._config,c=t.resolve([d.display,!0],e,u);c&&(r=e.dataset.data[u],o=t.valueOrDefault(t.callback(d.formatter,[r,e]),r),(n=t.isNullOrUndef(o)?[]:a(o)).length&&(s=function(t){var e=t.borderWidth||0,r=t.padding,a=t.size.height,o=t.size.width,n=-o/2,i=-a/2;return{frame:{x:n-r.left-e,y:i-r.top-e,w:o+r.width+2*e,h:a+r.height+2*e},text:{x:n,y:i,w:o,h:a}}}(l=i._modelize(c,n,d,e)))),i._model=l,i._rects=s},geometry:function(){return this._rects?this._rects.frame:{}},rotation:function(){return this._model?this._model.rotation:0},visible:function(){return this._model&&this._model.opacity},model:function(){return this._model},draw:function(t,e){var r,a=t.ctx,o=this._model,i=this._rects;this.visible()&&(a.save(),o.clip&&(r=o.area,a.beginPath(),a.rect(r.left,r.top,r.right-r.left,r.bottom-r.top),a.clip()),a.globalAlpha=n(0,o.opacity,1),a.translate(x(e.x),x(e.y)),a.rotate(o.rotation),v(a,i.frame,o),function(t,e,r,a){var o,n=a.textAlign,i=a.color,l=!!i,s=a.font,u=e.length,d=a.textStrokeColor,c=a.textStrokeWidth,h=d&&c;if(u&&(l||h))for(r=function(t,e,r){var a=r.lineHeight,o=t.w,n=t.x;return"center"===e?n+=o/2:"end"!==e&&"right"!==e||(n+=o),{h:a,w:o,x:n,y:t.y+a/2}}(r,n,s),t.font=s.string,t.textAlign=n,t.textBaseline="middle",t.shadowBlur=a.textShadowBlur,t.shadowColor=a.textShadowColor,l&&(t.fillStyle=i),h&&(t.lineJoin="round",t.lineWidth=c,t.strokeStyle=d),o=0,u=e.length;o<u;++o)b(t,e[o],{stroked:h,filled:l,w:r.w,x:r.x,y:r.y+r.h*o})}(a,o.lines,i.text,o),a.restore())}});var p=Number.MIN_SAFE_INTEGER||-9007199254740991,g=Number.MAX_SAFE_INTEGER||9007199254740991;function m(t,e,r){var a=Math.cos(r),o=Math.sin(r),n=e.x,i=e.y;return{x:n+a*(t.x-n)-o*(t.y-i),y:i+o*(t.x-n)+a*(t.y-i)}}function w(t,e){var r,a,o,n,i,l=g,s=p,u=e.origin;for(r=0;r<t.length;++r)o=(a=t[r]).x-u.x,n=a.y-u.y,i=e.vx*o+e.vy*n,l=Math.min(l,i),s=Math.max(s,i);return{min:l,max:s}}function M(t,e){var r=e.x-t.x,a=e.y-t.y,o=Math.sqrt(r*r+a*a);return{vx:(e.x-t.x)/o,vy:(e.y-t.y)/o,origin:t,ln:o}}var k=function(){this._rotation=0,this._rect={x:0,y:0,w:0,h:0}};function $(t,e,r){var a=e.positioner(t,e),o=a.vx,n=a.vy;if(!o&&!n)return{x:a.x,y:a.y};var i=r.w,l=r.h,s=e.rotation,u=Math.abs(i/2*Math.cos(s))+Math.abs(l/2*Math.sin(s)),d=Math.abs(i/2*Math.sin(s))+Math.abs(l/2*Math.cos(s)),c=1/Math.max(Math.abs(o),Math.abs(n));return u*=o*c,d*=n*c,u+=e.offset*o,d+=e.offset*n,{x:a.x+u,y:a.y+d}}t.merge(k.prototype,{center:function(){var t=this._rect;return{x:t.x+t.w/2,y:t.y+t.h/2}},update:function(t,e,r){this._rotation=r,this._rect={x:e.x+t.x,y:e.y+t.y,w:e.w,h:e.h}},contains:function(t){var e=this,r=e._rect;return!((t=m(t,e.center(),-e._rotation)).x<r.x-1||t.y<r.y-1||t.x>r.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;e<i.length;++e)if(r=w(o,i[e]),a=w(n,i[e]),r.max<a.min||a.max<r.min)return!1;return!0},_points:function(){var t=this,e=t._rect,r=t._rotation,a=t.center();return[m({x:e.x,y:e.y},a,r),m({x:e.x+e.w,y:e.y},a,r),m({x:e.x+e.w,y:e.y+e.h},a,r),m({x:e.x,y:e.y+e.h},a,r)]}});var C={prepare:function(t){var e,r,a,o,n,i=[];for(e=0,a=t.length;e<a;++e)for(r=0,o=t[e].length;r<o;++r)n=t[e][r],i.push(n),n.$layout={_box:new k,_hidable:!1,_visible:!0,_set:e,_idx:r};return i.sort((function(t,e){var r=t.$layout,a=e.$layout;return r._idx===a._idx?a._set-r._set:a._idx-r._idx})),this.update(i),i},update:function(t){var e,r,a,o,n,i=!1;for(e=0,r=t.length;e<r;++e)o=(a=t[e]).model(),(n=a.$layout)._hidable=o&&"auto"===o.display,n._visible=a.visible(),i|=n._hidable;i&&function(t){var e,r,a,o,n,i,l;for(e=0,r=t.length;e<r;++e)(o=(a=t[e]).$layout)._visible&&(l=new Proxy(a._el,{get:(t,e)=>t.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<a;++r)(n=(o=e[r]).$layout)._visible&&(i=o.geometry(),l=$(o._el,o.model(),i),n._box.update(l,i,o.rotation()),o.draw(t,l))}},P="$default";function S(e,r,a){if(r){var o,n=a.$context,i=a.$groups;r[i._set]&&(o=r[i._set][i._key])&&!0===t.callback(o,[n])&&(e.$datalabels._dirty=!0,a.update(n))}}function I(t,e){var r,a,o=t.$datalabels,n=o._listeners;if(n.enter||n.leave){if("mousemove"===e.type)a=C.lookup(o._labels,e);else if("mouseout"!==e.type)return;r=o._hovered,o._hovered=a,function(t,e,r,a){var o,n;(r||a)&&(r?a?r!==a&&(n=o=!0):n=!0:o=!0,n&&S(t,e.leave,r),o&&S(t,e.enter,a))}(t,n,r,a)}}return{id:"datalabels",defaults:{align:"center",anchor:"center",backgroundColor:null,borderColor:null,borderRadius:0,borderWidth:0,clamp:!1,clip:!1,color:void 0,display:!0,font:{family:void 0,lineHeight:1.2,size:void 0,style:void 0,weight:null},formatter:function(e){if(t.isNullOrUndef(e))return null;var r,a,o,n=e;if(t.isObject(e))if(t.isNullOrUndef(e.label))if(t.isNullOrUndef(e.r))for(n="",o=0,a=(r=Object.keys(e)).length;o<a;++o)n+=(0!==o?", ":"")+r[o]+": "+e[r[o]];else n=e.r;else n=e.label;return""+n},labels:void 0,listeners:{},offset:4,opacity:1,padding:{top:4,right:4,bottom:4,left:4},rotation:0,textAlign:"start",textStrokeColor:void 0,textStrokeWidth:0,textShadowBlur:0,textShadowColor:void 0},beforeInit:function(t){t.$datalabels={_actives:[]}},beforeUpdate:function(t){var e=t.$datalabels;e._listened=!1,e._listeners={},e._datasets=[],e._labels=[]},afterDatasetUpdate:function(e,r,a){var o,n,i,l,s,u,d,c,h=r.index,f=e.$datalabels,x=f._datasets[h]=[],y=e.isDatasetVisible(h),v=e.data.datasets[h],b=function(e,r){var a,o,n,i=e.datalabels,l=[];return!1===i?null:(!0===i&&(i={}),r=t.merge({},[r,i]),o=r.labels||{},n=Object.keys(o),delete r.labels,n.length?n.forEach((function(e){o[e]&&l.push(t.merge({},[r,o[e],{_key:e}]))})):l.push(r),a=l.reduce((function(e,r){return t.each(r.listeners||{},(function(t,a){e[a]=e[a]||{},e[a][r._key||P]=t})),delete r.listeners,e}),{}),{labels:l,listeners:a})}(v,a),p=r.meta.data||[],g=e.ctx;for(g.save(),o=0,i=p.length;o<i;++o)if((d=p[o]).$datalabels=[],y&&d&&e.getDataVisibility(o)&&!d.skip)for(n=0,l=b.labels.length;n<l;++n)u=(s=b.labels[n])._key,(c=new _(s,g,d,o)).$groups={_set:h,_key:u||P},c.$context={active:!1,chart:e,dataIndex:o,dataset:v,datasetIndex:h},c.update(c.$context),d.$datalabels.push(c),x.push(c);g.restore(),t.merge(f._listeners,b.listeners,{merger:function(t,e,a){e[t]=e[t]||{},e[t][r.index]=a[t],f._listened=!0}})},afterUpdate:function(t,e){t.$datalabels._labels=C.prepare(t.$datalabels._datasets,e)},afterDatasetsDraw:function(t){C.draw(t,t.$datalabels._labels)},beforeEvent:function(t,e){if(t.$datalabels._listened){var r=e.event;switch(r.type){case"mousemove":case"mouseout":I(t,r);break;case"click":!function(t,e){var r=t.$datalabels,a=r._listeners.click,o=a&&C.lookup(r._labels,e);o&&S(t,a,o)}(t,r)}}},afterEvent:function(t){var e,r,a,o,n,l,s,u=t.$datalabels,d=u._actives,c=u._actives=t.getActiveElements(),h=i(d,c);for(e=0,r=h.length;e<r;++e)if((n=h[e])[1])for(a=0,o=(s=n[0].element.$datalabels||[]).length;a<o;++a)(l=s[a]).$context.active=1===n[1],l.update(l.$context);(u._dirty||h.length)&&(C.update(u._labels),t.render()),delete u._dirty}}}));


blobId: K4rXwkeNfMJNo2YnqNoE
dateModified: 2025-03-02 16:55:38.419+0200
utcDateModified: 2025-03-02 14:55:38.419Z
content:
  <div>
         

        <div>
          <p><strong>Bash</strong> is a <a href="https://en.wikipedia.org/wiki/Unix_shell">Unix shell</a> and
            <a href="https://en.wikipedia.org/wiki/Command_language">command language</a>written by <a href="https://en.wikipedia.org/wiki/Brian_Fox_(computer_programmer)">Brian Fox</a> for
              the <a href="https://en.wikipedia.org/wiki/GNU_Project">GNU Project</a> as
              a <a href="https://en.wikipedia.org/wiki/Free_software">free software</a> replacement
              for the <a href="https://en.wikipedia.org/wiki/Bourne_shell">Bourne shell</a>.
              First released in 1989, it has been distributed widely as the default
              <a href="https://en.wikipedia.org/wiki/Login">login</a>shell for most <a href="https://en.wikipedia.org/wiki/Linux">Linux</a> distributions
                and <a href="https://en.wikipedia.org/wiki/Apple_Inc.">Apple's</a>  <a href="https://en.wikipedia.org/wiki/MacOS">macOS</a> (formerly
                OS X). A version <a href="https://en.wikipedia.org/wiki/Windows_Subsystem_for_Linux">is also available for Windows 10</a>.</p>
          <p><a href="https://en.wikipedia.org/wiki/Bash_(Unix_shell)">Bash on Wikipedia</a>

          </p>
        </div>
      </div>


blobId: 9CvX1i9oQW91V3hUyWMH
dateModified: 2025-03-02 19:52:17.237+0200
utcDateModified: 2025-03-02 17:52:17.237Z
content:
  <div>
         

        <div>
          <p> </p>
          <figure class="image image-style-side">
            <img src="api/attachments/m8bGNVjqX2hy/image/codenames.jpg" />
          </figure>
          <p>Maybe CodeNames? <a href="https://boardgamegeek.com/boardgame/178900/codenames">https://boardgamegeek.com/boardgame/178900/codenames</a>

          </p>
        </div>
      </div>


blobId: a5hWOpGGwYxacXtGN4Eq
dateModified: 2025-03-02 19:52:17.241+0200
utcDateModified: 2025-03-02 17:52:17.241Z
content:
  <div>
         

        <div>
          <figure class="image image-style-side">
            <img src="api/attachments/QRWXfIsskwTh/image/Prince Philip.jpg" />
          </figure>
          <p><strong>Prince Philip, Duke of Edinburgh</strong> (born <strong>Prince Philip of Greece and Denmark</strong>,
            10 June 1921), is the husband and consort of <a href="https://en.wikipedia.org/wiki/Queen_Elizabeth_II">Queen Elizabeth II</a>.</p>
          <p>Philip was born into the <a href="https://en.wikipedia.org/wiki/Greek_royal_family">Greek</a> and
            <a href="https://en.wikipedia.org/wiki/Danish_royal_family">Danish royal families</a>. He was born in <a href="https://en.wikipedia.org/wiki/Greece">Greece</a>,
              but his family was exiled from the country when he was an infant. After
              being educated in <a href="https://en.wikipedia.org/wiki/France">France</a>,
              <a href="https://en.wikipedia.org/wiki/Germany">Germany</a>, and the <a href="https://en.wikipedia.org/wiki/United_Kingdom">United Kingdom</a>,
                he joined the British <a href="https://en.wikipedia.org/wiki/Royal_Navy">Royal Navy</a> in
                1939, aged 18. From July 1939, he began corresponding with the 13-year-old
                Princess Elizabeth, whom he had first met in 1934. During the <a href="https://en.wikipedia.org/wiki/Second_World_War">Second World War</a> he
                served with the <a href="https://en.wikipedia.org/wiki/Mediterranean_Fleet">Mediterranean</a> and
                <a href="https://en.wikipedia.org/wiki/British_Pacific_Fleet">Pacific Fleets</a>.</p>
          <p>After the war, Philip was granted permission by <a href="https://en.wikipedia.org/wiki/King_George_VI">King George VI</a> to
            marry Elizabeth. Before the official announcement of their engagement in
            July 1947, he abandoned his Greek and Danish royal titles and became a
            naturalised <a href="https://en.wikipedia.org/wiki/British_subject">British subject</a>,
            adopting the surname <a href="https://en.wikipedia.org/wiki/Mountbatten_family">Mountbatten</a> from
            his maternal grandparents. He <a href="https://en.wikipedia.org/wiki/Wedding_of_Princess_Elizabeth_and_Philip_Mountbatten">married Elizabeth</a> on
            20 November 1947. Just before the wedding, he was created <a href="https://en.wikipedia.org/wiki/Baron_Greenwich">Baron Greenwich</a>,
            <a href="https://en.wikipedia.org/wiki/Earl_of_Merioneth">Earl of Merioneth</a>and <a href="https://en.wikipedia.org/wiki/Duke_of_Edinburgh">Duke of Edinburgh</a>.
              Philip left active military service when Elizabeth became monarch in 1952,
              having reached the rank of <a href="https://en.wikipedia.org/wiki/Commander_(Royal_Navy)">commander</a>,
              and was formally made a <a href="https://en.wikipedia.org/wiki/British_prince">British prince</a> in
              1957.</p>
          <p>Prince Philip and Queen Elizabeth II have four children: <a href="https://en.wikipedia.org/wiki/Prince_Charles">Prince Charles</a>,
            <a href="https://en.wikipedia.org/wiki/Princess_Anne">Princess Anne</a>, <a href="https://en.wikipedia.org/wiki/Prince_Andrew">Prince Andrew</a>,
              and <a href="https://en.wikipedia.org/wiki/Prince_Edward,_Earl_of_Wessex">Prince Edward</a>.
              Through a British <a href="https://en.wikipedia.org/wiki/Order_in_Council">Order in Council</a> issued
              in 1960, descendants of Philip and Elizabeth not bearing royal styles and
              titles can use the surname <a href="https://en.wikipedia.org/wiki/Mountbatten-Windsor">Mountbatten-Windsor</a>,
              which has also been used by some members of the royal family who do hold
              titles, such as Prince Andrew, Princess Anne and Prince Edward.</p>
          <p>A keen sports enthusiast, Philip helped develop the equestrian event of
            <a href="https://en.wikipedia.org/wiki/Carriage_driving">carriage driving</a>. He is a patron, president or member of over 780
              organisations and serves as chairman of <a href="https://en.wikipedia.org/wiki/The_Duke_of_Edinburgh%27s_Award">The Duke of Edinburgh's Award</a> for
              people aged 14 to 24. He is the longest-serving consort of a reigning British
              monarch and the oldest-ever male member of the <a href="https://en.wikipedia.org/wiki/British_royal_family">British royal family</a>.
              Philip retired from his royal duties on 2 August 2017, at the age of 96,
              after having completed 22,219 solo engagements since 1952.</p>
        </div>
      </div>


blobId: Gt0QR3HibjsKSJhBopPx
dateModified: 2025-03-02 19:52:17.242+0200
utcDateModified: 2025-03-02 17:52:17.242Z
content:
  <div>
         

        <div>
          <figure class="image image-style-side">
            <img src="api/attachments/xmKYPYr8t0xK/image/Queen Elizabeth.jpg" />
          </figure>
          <p><strong>Elizabeth II</strong> (Elizabeth Alexandra Mary; born 21 April
            1926) is <a href="https://en.wikipedia.org/wiki/Queen_of_the_United_Kingdom">Queen of the United Kingdom</a>and
            the other <a href="https://en.wikipedia.org/wiki/Commonwealth_realm">Commonwealth realms</a>.</p>
          <p>Elizabeth was born in <a href="https://en.wikipedia.org/wiki/London">London</a> as
            the first child of the Duke and Duchess of York, later <a href="https://en.wikipedia.org/wiki/King_George_VI">King George VI</a> and
            <a href="https://en.wikipedia.org/wiki/Queen_Elizabeth_The_Queen_Mother">Queen Elizabeth</a>, and she was educated privately at home. Her father
              acceded to the throne on the <a href="https://en.wikipedia.org/wiki/Edward_VIII_abdication_crisis">abdication</a> of
              his brother <a href="https://en.wikipedia.org/wiki/King_Edward_VIII">King Edward VIII</a> in
              1936, from which time she was the <a href="https://en.wikipedia.org/wiki/Heir_presumptive">heir presumptive</a>.
              She began to undertake public duties <a href="https://en.wikipedia.org/wiki/Military_history_of_the_United_Kingdom_during_World_War_II">during the Second World War</a>,
              serving in the <a href="https://en.wikipedia.org/wiki/Auxiliary_Territorial_Service">Auxiliary Territorial Service</a>.
              In 1947, she married <a href="https://en.wikipedia.org/wiki/Philip,_Duke_of_Edinburgh">Philip, Duke of Edinburgh</a>,
              a former prince of <a href="https://en.wikipedia.org/wiki/Greece">Greece</a> and
              <a href="https://en.wikipedia.org/wiki/Denmark">Denmark</a>, with whom she has four children: <a href="https://en.wikipedia.org/wiki/Charles,_Prince_of_Wales">Charles, Prince of Wales</a>;
                <a href="https://en.wikipedia.org/wiki/Anne,_Princess_Royal">Anne, Princess Royal</a>; <a href="https://en.wikipedia.org/wiki/Andrew,_Duke_of_York">Andrew, Duke of York</a>;
                  and <a href="https://en.wikipedia.org/wiki/Edward,_Earl_of_Wessex">Edward, Earl of Wessex</a>.</p>
          <p>When her father died in February 1952, she became <a href="https://en.wikipedia.org/wiki/Head_of_the_Commonwealth">Head of the Commonwealth</a> and
            <a href="https://en.wikipedia.org/wiki/Queen_regnant">queen regnant</a>of seven independent Commonwealth countries: the United
              Kingdom, <a href="https://en.wikipedia.org/wiki/Canada">Canada</a>, <a href="https://en.wikipedia.org/wiki/Australia">Australia</a>,
              <a href="https://en.wikipedia.org/wiki/New_Zealand">New Zealand</a>, <a href="https://en.wikipedia.org/wiki/Union_of_South_Africa">South Africa</a>,
                <a href="https://en.wikipedia.org/wiki/Dominion_of_Pakistan">Pakistan</a>, and <a href="https://en.wikipedia.org/wiki/Dominion_of_Ceylon">Ceylon</a>.</p>
        </div>
      </div>


blobId: xvY0eNbdnyIaRYP71RCW
dateModified: 2025-03-02 19:52:17.244+0200
utcDateModified: 2025-03-02 17:52:17.244Z
content:
  <div>
         

        <div>
          <figure class="image image-style-side">
            <img src="api/attachments/uL9Gw7bKiOvQ/image/Prince Charles.jpg" />
          </figure>
          <p><strong>Charles, Prince of Wales</strong> (Charles Philip Arthur George;
            born 14 November 1948) is the <a href="https://en.wikipedia.org/wiki/Heir_apparent">heir apparent</a> to
            the <a href="https://en.wikipedia.org/wiki/British_throne">British throne</a> as
            the eldest child of <a href="https://en.wikipedia.org/wiki/Queen_Elizabeth_II">Queen Elizabeth II</a>.
            He has been <a href="https://en.wikipedia.org/wiki/Duke_of_Cornwall">Duke of Cornwall</a> and
            <a href="https://en.wikipedia.org/wiki/Duke_of_Rothesay">Duke of Rothesay</a>since 1952, and is the oldest and longest-serving
              heir apparent in British history.<a href="https://en.wikipedia.org/wiki/Charles,_Prince_of_Wales#cite_note-apparent-4">[2]</a> He
              is also the longest-serving <a href="https://en.wikipedia.org/wiki/Prince_of_Wales">Prince of Wales</a>,
              having held that title since 1958.<a href="https://en.wikipedia.org/wiki/Charles,_Prince_of_Wales#cite_note-wales-5">[3]</a>

          </p>
          <p>Charles was born at <a href="https://en.wikipedia.org/wiki/Buckingham_Palace">Buckingham Palace</a> as
            the first grandchild of <a href="https://en.wikipedia.org/wiki/King_George_VI">King George VI</a> and
            <a href="https://en.wikipedia.org/wiki/Queen_Elizabeth_The_Queen_Mother">Queen Elizabeth</a>. He was educated at <a href="https://en.wikipedia.org/wiki/Cheam_School">Cheam</a> and
              <a href="https://en.wikipedia.org/wiki/Gordonstoun">Gordonstoun</a>Schools, which his father, <a href="https://en.wikipedia.org/wiki/Prince_Philip,_Duke_of_Edinburgh">Prince Philip, Duke of Edinburgh</a>,
                had attended as a child, as well as the <a href="https://en.wikipedia.org/wiki/Timbertop_(Geelong_Grammar_School)">Timbertop</a> campus
                of <a href="https://en.wikipedia.org/wiki/Geelong_Grammar_School">Geelong Grammar School</a> in
                <a href="https://en.wikipedia.org/wiki/Victoria_(Australia)">Victoria</a>, <a href="https://en.wikipedia.org/wiki/Australia">Australia</a>.
                  After earning a bachelor of arts degree from <a href="https://en.wikipedia.org/wiki/Trinity_College,_Cambridge">Trinity College, Cambridge</a>,
                  Charles served in the <a href="https://en.wikipedia.org/wiki/Royal_Air_Force">Royal Air Force</a> and
                  <a href="https://en.wikipedia.org/wiki/Royal_Navy">Royal Navy</a>from 1971 to 1976.</p>
          <p>In 1981, he married <a href="https://en.wikipedia.org/wiki/Lady_Diana_Spencer">Lady Diana Spencer</a> and
            they had two sons: <a href="https://en.wikipedia.org/wiki/Prince_William">Prince William</a> (b.
            1982)—later to become <a href="https://en.wikipedia.org/wiki/Duke_of_Cambridge">Duke of Cambridge</a>—and
            <a href="https://en.wikipedia.org/wiki/Prince_Harry">Prince Harry</a>(b. 1984)—later to become <a href="https://en.wikipedia.org/wiki/Duke_of_Sussex">Duke of Sussex</a>.
              In 1996, the couple divorced following well-publicised extramarital affairs
              by both parties. Diana was <a href="https://en.wikipedia.org/wiki/Death_of_Diana,_Princess_of_Wales">killed in a car crash</a> in
              Paris the following year. In 2005, Charles married long-time partner
              <a href="https://en.wikipedia.org/wiki/Camilla_Parker_Bowles">Camilla Parker Bowles</a>.</p>
          <p>Charles founded <a href="https://en.wikipedia.org/wiki/The_Prince%27s_Trust">The Prince's Trust</a> in
            1976, sponsors <a href="https://en.wikipedia.org/wiki/The_Prince%27s_Charities">The Prince's Charities</a>,
            and is patron of many other charities and the arts. He is an <a href="https://en.wikipedia.org/wiki/Environmentalist">environmentalist</a> who
            raises awareness of <a href="https://en.wikipedia.org/wiki/Organic_farming">organic farming</a> and
            <a href="https://en.wikipedia.org/wiki/Climate_change">climate change</a>and has received <a href="https://en.wikipedia.org/wiki/List_of_awards_received_by_Charles,_Prince_of_Wales">awards and recognition</a> from
              environmental groups.<a href="https://en.wikipedia.org/wiki/Charles,_Prince_of_Wales#cite_note-6">[4]</a> 
              <a href="https://en.wikipedia.org/wiki/Charles,_Prince_of_Wales#cite_note-7">[5]</a><a href="https://en.wikipedia.org/wiki/Charles,_Prince_of_Wales#cite_note-8">[6]</a> 
                <a href="https://en.wikipedia.org/wiki/Charles,_Prince_of_Wales#cite_note-Awards-9">[7]</a>His support for <a href="https://en.wikipedia.org/wiki/Alternative_medicine">alternative medicine</a>,
                  including <a href="https://en.wikipedia.org/wiki/Homeopathy">homeopathy</a>,
                  has been criticised by some in the medical community.<a href="https://en.wikipedia.org/wiki/Charles,_Prince_of_Wales#cite_note-faseb_journal-10">[8]</a> 
                  <a href="https://en.wikipedia.org/wiki/Charles,_Prince_of_Wales#cite_note-independent-11">[9]</a>Charles has been outspoken on the role of architecture in society
                    and the conservation of historic buildings. He worked on the creation of
                    <a href="https://en.wikipedia.org/wiki/Poundbury">Poundbury</a>, an experimental <a href="https://en.wikipedia.org/wiki/New_town">new town</a> based
                      on his preferences. He has written a number of books, including <a href="https://en.wikipedia.org/wiki/A_Vision_of_Britain:_A_Personal_View_of_Architecture"><i>A Vision of Britain: A Personal View of Architecture</i></a> in
                      1989 and the children's book <a href="https://en.wikipedia.org/wiki/The_Old_Man_of_Lochnagar"><i>The Old Man of Lochnagar</i></a> in
                      1980.</p>
        </div>
      </div>


blobId: XnoCTplhaXGL6UPR5azt
dateModified: 2025-03-02 19:52:17.245+0200
utcDateModified: 2025-03-02 17:52:17.245Z
content:
  <div>
         

        <div>
          <figure class="image image-style-side">
            <img src="api/attachments/UjCEjXM88nOc/image/Princess Diana.jpg" />
          </figure>
          <p><strong>Diana, Princess of Wales</strong> (born <strong>Diana Frances Spencer</strong>;
            1 July 1961 – 31 August 1997), was a member of the <a href="https://en.wikipedia.org/wiki/British_royal_family">British royal family</a>.
            She was the first wife of <a href="https://en.wikipedia.org/wiki/Charles,_Prince_of_Wales">Charles, Prince of Wales</a>,
            the <a href="https://en.wikipedia.org/wiki/Heir_apparent">heir apparent</a> to
            the British throne, and the mother of <a href="https://en.wikipedia.org/wiki/Prince_William,_Duke_of_Cambridge">Prince William, Duke of Cambridge</a>,
            and <a href="https://en.wikipedia.org/wiki/Prince_Harry,_Duke_of_Sussex">Prince Harry, Duke of Sussex</a>.</p>
          <p>Diana was born into the <a href="https://en.wikipedia.org/wiki/Spencer_family">Spencer family</a>,
            a family of <a href="https://en.wikipedia.org/wiki/British_nobility">British nobility</a>,
            and she was the youngest daughter of <a href="https://en.wikipedia.org/wiki/John_Spencer,_8th_Earl_Spencer">Viscount</a> and
            <a href="https://en.wikipedia.org/wiki/Frances_Shand_Kydd">Viscountess Althorp</a>. She grew up in Park House, situated on the
              <a href="https://en.wikipedia.org/wiki/Sandringham_estate">Sandringham estate</a>, and was educated in England and Switzerland. In
                1975, after her father inherited the title of <a href="https://en.wikipedia.org/wiki/Earl_Spencer_(peerage)">Earl Spencer</a>,
                she became known as Lady Diana Spencer.</p>
          <p>Diana came to prominence in February 1981 upon engagement to Prince Charles,
            the eldest son of <a href="https://en.wikipedia.org/wiki/Queen_Elizabeth_II">Queen Elizabeth II</a>.
            <a href="https://en.wikipedia.org/wiki/Wedding_of_Prince_Charles_and_Lady_Diana_Spencer">Their wedding</a>took place at <a href="https://en.wikipedia.org/wiki/St_Paul%27s_Cathedral">St Paul's Cathedral</a> on
              29 July 1981 and made her <a href="https://en.wikipedia.org/wiki/Princess_of_Wales">Princess of Wales</a>,
              <a href="https://en.wikipedia.org/wiki/Duchess_of_Cornwall">Duchess of Cornwall</a>, <a href="https://en.wikipedia.org/wiki/Duchess_of_Rothesay">Duchess of Rothesay</a>,
                and <a href="https://en.wikipedia.org/wiki/Countess_of_Chester_(title)">Countess of Chester</a>.
                The marriage produced two sons, the princes William and Harry, who were
                then respectively second and third in the <a href="https://en.wikipedia.org/wiki/Line_of_succession_to_the_British_throne">line of succession to the British throne</a>.
                As Princess of Wales, Diana undertook royal duties on behalf of the Queen
                and represented her at functions overseas. She was celebrated for her charity
                work and for her support of the <a href="https://en.wikipedia.org/wiki/International_Campaign_to_Ban_Landmines">International Campaign to Ban Landmines</a>.
                Diana was involved with dozens of charities including London's <a href="https://en.wikipedia.org/wiki/Great_Ormond_Street_Hospital">Great Ormond Street Hospital</a> for
                children, of which she was president from 1989. She also raised awareness
                and advocated ways to help people affected with <a href="https://en.wikipedia.org/wiki/HIV/AIDS">HIV/AIDS</a>,
                cancer, and mental illness.</p>
          <p>Diana remained the object of worldwide media scrutiny during and after
            her marriage, which ended in divorce on 28 August 1996 following well-publicised
            extramarital affairs by both parties. Media attention and public mourning
            were extensive after <a href="https://en.wikipedia.org/wiki/Death_of_Diana,_Princess_of_Wales">her death in a car crash</a> in
            a Paris tunnel on 31 August 1997 and subsequent <a href="https://en.wikipedia.org/wiki/Funeral_of_Diana,_Princess_of_Wales">televised funeral</a>.</p>
        </div>
      </div>


blobId: gWkmMUYzIMV97pi0m6DY
dateModified: 2025-03-02 19:52:17.246+0200
utcDateModified: 2025-03-02 17:52:17.246Z
content:
  <div>
         

        <div>
          <figure class="image image-style-align-right">
            <img src="api/attachments/gf0mTA3pOSwb/image/trilium-icon.png" />
          </figure>
          <p><strong>Welcome to Trilium Notes!</strong>

          </p>
          <p>This is initial "demo" document provided by default Trilium to showcase
            some of its features and also give you some ideas how you might structure
            your notes. You can play with it, modify note content and tree structure
            as you wish.</p>
          <p>If you need any help, visit Trilium website: <a href="https://github.com/zadam/trilium">https://github.com/zadam/trilium</a>

          </p>
           <h3>Cleanup</h3>

          <p>Once you're finished with experimenting and want to cleanup these pages,
            you can simply delete them all.</p>
           <h3>Formatting</h3>

          <p>Trilium supports classic formatting like <i>italic</i>, <strong>bold</strong>, <i><strong>bold and italic</strong></i>.
            Of course you can add links like this one pointing to <a href="http://www.google.com">google.com</a>

          </p>
          <p>Lists</p>
          <p><strong>Ordered:</strong>

          </p>
          <ol>
            <li>First Item</li>
            <li>Second item
              <ol>
                <li>First sub-item
                  <ol>
                    <li>sub-sub-item</li>
                  </ol>
                </li>
              </ol>
            </li>
          </ol>
          <p><strong>Unordered:</strong>

          </p>
          <ul>
            <li>Item</li>
            <li>Another item
              <ul>
                <li>Sub-item</li>
              </ul>
            </li>
          </ul>
          <p>Block quotes</p>
          <blockquote>
            <p>Whereof one cannot speak, thereof one must be silent”</p>
            <p>– Ludwig Wittgenstein</p>
          </blockquote>
          <p>Checkout also other examples like <a href="#root/QGqhmyLnIdYs">tables</a>,
            <a href="#root/7Nf30iooU3v2">checkbox lists,</a> <a href="#root/IkrAKpszvvHy">highlighting</a>,
              <a href="#root/IY11I77ooLZQ">code blocks</a>and <a href="#root/SjSvHYBHU63J">math examples</a>.</p>
        </div>
      </div>


blobId: fjGNpKLfatiTMqze2YOi
dateModified: 2025-03-02 19:52:17.248+0200
utcDateModified: 2025-03-02 17:52:17.248Z
content:
  <div>
         

        <div>
          <p> </p>
          <figure class="image image-style-side">
            <img src="api/attachments/nl1uOpPY6uae/image/codenames.jpg" />
          </figure>
          <p>Maybe CodeNames? <a href="https://boardgamegeek.com/boardgame/178900/codenames">https://boardgamegeek.com/boardgame/178900/codenames</a>

          </p>
        </div>
      </div>


