<!doctype html>
<html lang="en">
  <head>
    <meta charset="utf-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta
      name="viewport"
      content="width=device-width, initial-scale=1, user-scalable=no"
    />

    

    <title>
      File Browser
    </title>

    <meta name="robots" content="noindex,nofollow" />

    <link
      rel="icon"
      type="image/png"
      sizes="32x32"
      href="/fb/static/img/icons/favicon-32x32.png"
    />
    <link
      rel="icon"
      type="image/png"
      sizes="16x16"
      href="/fb/static/img/icons/favicon-16x16.png"
    />

    <!-- Add to home screen for Android and modern mobile browsers -->
    <link
      rel="manifest"
      id="manifestPlaceholder"
      crossorigin="use-credentials"
    />
    <meta
      name="theme-color"
      content="#2979ff"
    />

    <!-- Add to home screen for Safari on iOS/iPadOS -->
    <meta name="apple-mobile-web-app-capable" content="yes" />
    <meta name="apple-mobile-web-app-status-bar-style" content="black" />
    <meta name="apple-mobile-web-app-title" content="assets" />
    <link
      rel="apple-touch-icon"
      href="/fb/static/img/icons/apple-touch-icon.png"
    />

    <!-- Add to home screen for Windows -->
    <meta
      name="msapplication-TileImage"
      content="/fb/static/img/icons/mstile-144x144.png"
    />
    <meta
      name="msapplication-TileColor"
      content="#2979ff"
    />

    <!-- Inject Some Variables and generate the manifest json -->
    <script>
      // We can assign JSON directly
      window.FileBrowser = {"AuthMethod":"json","BaseURL":"/fb","CSS":false,"Color":"","DisableExternal":false,"DisableUsedPercentage":false,"EnableExec":true,"EnableThumbs":true,"LoginPage":true,"Name":"","NoAuth":false,"ReCaptcha":false,"ResizePreview":true,"Signup":false,"StaticURL":"/fb/static","Theme":"","TusSettings":{"chunkSize":10485760,"retryCount":5},"Version":"2.31.2"};
      // Global function to prepend static url
      window.__prependStaticUrl = (url) => {
        return `${window.FileBrowser.StaticURL}/${url.replace(/^\/+/, "")}`;
      };
      var dynamicManifest = {
        name: window.FileBrowser.Name || "File Browser",
        short_name: window.FileBrowser.Name || "File Browser",
        icons: [
          {
            src: window.__prependStaticUrl("/img/icons/android-chrome-192x192.png"),
            sizes: "192x192",
            type: "image/png",
          },
          {
            src: window.__prependStaticUrl("/img/icons/android-chrome-512x512.png"),
            sizes: "512x512",
            type: "image/png",
          },
        ],
        start_url: window.location.origin + window.FileBrowser.BaseURL,
        display: "standalone",
        background_color: "#ffffff",
        theme_color: window.FileBrowser.Color || "#455a64",
      };

      const stringManifest = JSON.stringify(dynamicManifest);
      const blob = new Blob([stringManifest], { type: "application/json" });
      const manifestURL = URL.createObjectURL(blob);
      document
        .querySelector("#manifestPlaceholder")
        .setAttribute("href", manifestURL);
    </script>

    <style>
      #loading {
        position: fixed;
        top: 0;
        left: 0;
        width: 100%;
        height: 100%;
        background: #fff;
        z-index: 9999;
        transition: 0.1s ease opacity;
        -webkit-transition: 0.1s ease opacity;
      }

      #loading.done {
        opacity: 0;
      }

      #loading .spinner {
        width: 70px;
        text-align: center;
        position: fixed;
        top: 50%;
        left: 50%;
        transform: translate(-50%, -50%);
      }

      #loading .spinner > div {
        width: 18px;
        height: 18px;
        background-color: #333;
        border-radius: 100%;
        display: inline-block;
        animation: sk-bouncedelay 1.4s infinite ease-in-out both;
      }

      #loading .spinner .bounce1 {
        animation-delay: -0.32s;
      }

      #loading .spinner .bounce2 {
        animation-delay: -0.16s;
      }

      @keyframes sk-bouncedelay {
        0%,
        80%,
        100% {
          transform: scale(0);
        }
        40% {
          transform: scale(1);
        }
      }
    </style>
    <script type="module" crossorigin src="/fb/static/assets/index-B6-dpoh6.js"></script>
    <link rel="modulepreload" crossorigin href="/fb/static/assets/dayjs-DqU3et2E.js">
    <link rel="modulepreload" crossorigin href="/fb/static/assets/i18n-sWEFv6SY.js">
    <link rel="stylesheet" crossorigin href="/fb/static/assets/index-D4Zz5OAo.css">
    <script type="module">import.meta.url;import("_").catch(()=>1);(async function*(){})().next();if(location.protocol!="file:"){window.__vite_is_modern_browser=true}</script>
    <script type="module">!function(){if(window.__vite_is_modern_browser)return;console.warn("vite: loading legacy chunks, syntax error above and the same error below should be ignored");var e=document.getElementById("vite-legacy-polyfill"),n=document.createElement("script");n.src=e.src,n.onload=function(){System.import(document.getElementById('vite-legacy-entry').getAttribute('data-src'))},document.body.appendChild(n)}();</script>
  </head>
  <body>
    <div id="app"></div>

    <div id="loading">
      <div class="spinner">
        <div class="bounce1"></div>
        <div class="bounce2"></div>
        <div class="bounce3"></div>
      </div>
    </div>


    
    <script nomodule>!function(){var e=document,t=e.createElement("script");if(!("noModule"in t)&&"onbeforeload"in t){var n=!1;e.addEventListener("beforeload",(function(e){if(e.target===t)n=!0;else if(!e.target.hasAttribute("nomodule")||!n)return;e.preventDefault()}),!0),t.type="module",t.src=".",e.head.appendChild(t),t.remove()}}();</script>
    <script nomodule crossorigin id="vite-legacy-polyfill" src="/fb/static/assets/polyfills-legacy-ZPss0xUo.js"></script>
    <script nomodule crossorigin id="vite-legacy-entry" data-src="/fb/static/assets/index-legacy-CWpIMIWK.js">System.import(document.getElementById('vite-legacy-entry').getAttribute('data-src'))</script>
  </body>
</html>
