diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -8,18 +8,24 @@
 
 The easist way for logged-in users to add bookmarks, is with the "bookmarklet", found on the Settings page.
 
+Also, see the android app for adding bookmarks via an Android Share intent https://github.com/jonschoning/espial-share-android
+
 ## demo server
 
 log in — username: demo  password: demo
 
 https://esp.ae8.org/u:demo
 
-![jpg](https://i.imgur.com/2viEMQj.png)
+![jpg](https://i.imgur.com/jdnV93c.png)
 
+## Docker Setup
+
+see https://github.com/jonschoning/espial-docker
+
 ## Server Setup (from source)
 
-1. [Install Stack](https://haskell-lang.org/get-started)
-	- On POSIX systems, this is usually `curl -sSL https://get.haskellstack.org/ | sh`
+1. Install the Stack executable here:
+    - https://tech.fpcomplete.com/haskell/get-started
 
 2. Build executables
  
@@ -39,24 +45,28 @@
     stack exec migration -- createuser --conn espial.sqlite3 --userName myusername --userPassword myuserpassword
     ```
 
-5. Import a bookmark file for a user (optional)
+5. Import a pinboard bookmark file for a user (optional)
 
     ```
-     stack exec migration -- importbookmarks --conn espial.sqlite3 --userName myusername --bookmarkFile sample-bookmarks.json
+    stack exec migration -- importbookmarks --conn espial.sqlite3 --userName myusername --bookmarkFile sample-bookmarks.json
     ```
 
-6. Start a production server:
+6. Import a firefox bookmark file for a user (optional)
 
     ```
-    stack exec espial -- +RTS -T
+    stack exec migration -- importfirefoxbookmarks --conn espial.sqlite3 --userName myusername --bookmarkFile firefox-bookmarks.json
     ```
 
+7. Start a production server:
+
+    ```
+    stack exec espial
+    ```
+
 see `config/settings.yml` for changing default run-time parameters / environment variables
 
 default app http port: `3000`
 
-default ekg http port: `8000`
-
 ssl: use reverse proxy
 
 ## Development 
@@ -76,7 +86,7 @@
 
 - See `purs/` folder
 
-## Import Bookmark file format
+## Import Bookmark file format (pinboard compatible format)
 
 see `sample-bookmarks.json`, which contains a JSON array, each line containing a `FileBookmark` object. 
 
diff --git a/app/migration/Main.hs b/app/migration/Main.hs
--- a/app/migration/Main.hs
+++ b/app/migration/Main.hs
@@ -8,27 +8,34 @@
 
 import qualified Database.Persist as P
 import qualified Database.Persist.Sqlite as P
-
 import ClassyPrelude
 import Lens.Micro
 
 import Options.Generic
 
 data MigrationOpts
-  = CreateDB { conn :: Text}
+  = CreateDB { conn :: Text }
   | CreateUser { conn :: Text
                , userName :: Text
                , userPassword :: Text
-               , userApiToken :: Maybe Text }
+               , privateDefault :: Maybe Bool
+               , archiveDefault :: Maybe Bool
+               , privacyLock :: Maybe Bool }
   | DeleteUser { conn :: Text
-               , userName :: Text}
+               , userName :: Text }
   | ImportBookmarks { conn :: Text
                     , userName :: Text
-                    , bookmarkFile :: FilePath}
+                    , bookmarkFile :: FilePath }
+  | ImportFirefoxBookmarks { conn :: Text
+                    , userName :: Text
+                    , bookmarkFile :: FilePath }
+  | ExportBookmarks { conn :: Text
+                    , userName :: Text
+                    , bookmarkFile :: FilePath }
   | ImportNotes { conn :: Text
                 , userName :: Text
-                , noteDirectory :: FilePath}
-  | PrintMigrateDB { conn :: Text}
+                , noteDirectory :: FilePath }
+  | PrintMigrateDB { conn :: Text }
   deriving (Generic, Show)
 
 instance ParseRecord MigrationOpts
@@ -37,47 +44,74 @@
 main = do
   args <- getRecord "Migrations"
   case args of
-    PrintMigrateDB conn ->
+    PrintMigrateDB {..} ->
       P.runSqlite conn dumpMigration
 
-    CreateDB conn -> do
+    CreateDB {..} -> do
       let connInfo = P.mkSqliteConnectionInfo conn
                      & set P.fkEnabled False
       P.runSqliteInfo connInfo runMigrations
 
-    CreateUser conn uname upass utoken ->
+    CreateUser{..} ->
       P.runSqlite conn $ do
-        hash' <- liftIO (hashPassword upass)
+        hash' <- liftIO (hashPassword userPassword)
         void $ P.upsertBy
-          (UniqueUserName uname)
-          (User uname hash' utoken False False False)
+          (UniqueUserName userName)
+          (User userName hash' Nothing False False False)
           [ UserPasswordHash P.=. hash'
-          , UserApiToken P.=. utoken
-          , UserPrivateDefault P.=. False
-          , UserArchiveDefault P.=. False
-          , UserPrivacyLock P.=. False
+          , UserApiToken P.=. Nothing
+          , UserPrivateDefault P.=. fromMaybe False privateDefault
+          , UserArchiveDefault P.=. fromMaybe False archiveDefault
+          , UserPrivacyLock P.=. fromMaybe False privacyLock
           ]
         pure () :: DB ()
 
-    DeleteUser conn uname ->
+    DeleteUser {..} ->
       P.runSqlite conn $ do
-        muser <- P.getBy (UniqueUserName uname)
+        muser <- P.getBy (UniqueUserName userName)
         case muser of
-          Nothing -> liftIO (print (uname ++ "not found"))
+          Nothing -> liftIO (print (userName ++ "not found"))
           Just (P.Entity uid _) -> do
-            P.deleteCascade uid
+            P.delete uid
             pure () :: DB ()
 
-    ImportBookmarks conn uname file ->
+    ExportBookmarks {..} ->
       P.runSqlite conn $ do
-        muser <- P.getBy (UniqueUserName uname)
+        muser <- P.getBy (UniqueUserName userName)
         case muser of
-          Just (P.Entity uid _) -> insertFileBookmarks uid file
-          Nothing -> liftIO (print (uname ++ "not found"))
+          Just (P.Entity uid _) -> exportFileBookmarks uid bookmarkFile
+          Nothing -> liftIO (print (userName ++ "not found"))
 
-    ImportNotes conn uname dir ->
+    ImportBookmarks {..} ->
       P.runSqlite conn $ do
-        muser <- P.getBy (UniqueUserName uname)
+        muser <- P.getBy (UniqueUserName userName)
         case muser of
-          Just (P.Entity uid _) -> insertDirFileNotes uid dir
-          Nothing -> liftIO (print (uname ++ "not found"))
+          Just (P.Entity uid _) -> do
+            result <- insertFileBookmarks uid bookmarkFile
+            case result of
+              Left e -> liftIO (print e)
+              Right n -> liftIO (print (show n ++ " bookmarks imported."))
+          Nothing -> liftIO (print (userName ++ "not found"))
+
+
+    ImportFirefoxBookmarks {..} ->
+      P.runSqlite conn $ do
+        muser <- P.getBy (UniqueUserName userName)
+        case muser of
+          Just (P.Entity uid _) -> do
+            result <- insertFFBookmarks uid bookmarkFile
+            case result of
+              Left e -> liftIO (print e)
+              Right n -> liftIO (print (show n ++ " bookmarks imported."))
+          Nothing -> liftIO (print (userName ++ "not found"))
+
+    ImportNotes {..} ->
+      P.runSqlite conn $ do
+        muser <- P.getBy (UniqueUserName userName)
+        case muser of
+          Just (P.Entity uid _) -> do
+            result <- insertDirFileNotes uid noteDirectory
+            case result of
+              Left e -> liftIO (print e)
+              Right n -> liftIO (print (show n ++ " notes imported."))
+          Nothing -> liftIO (print (userName ++ "not found"))
diff --git a/config/routes b/config/routes
--- a/config/routes
+++ b/config/routes
@@ -8,6 +8,8 @@
 -- notes
 !/#UserNameP/notes NotesR GET
 !/#UserNameP/notes/add AddNoteViewR GET
+!/notes/add AddNoteSlimViewR GET
+!/#UserNameP/notes/feed.xml NotesFeedR GET
 !/#UserNameP/notes/#NtSlug NoteR GET
 !/api/note/add AddNoteR POST
 !/api/note/#Int64 DeleteNoteR DELETE
@@ -18,6 +20,7 @@
 !/#UserNameP/#SharedP UserSharedR GET
 !/#UserNameP/#FilterP UserFilterR GET
 !/#UserNameP/#TagsP UserTagsR GET
+!/#UserNameP/feed.xml UserFeedR GET
 
 -- settings
 /Settings AccountSettingsR GET
@@ -29,6 +32,11 @@
 -- add
 /add AddViewR GET
 api/add AddR POST
+
+-- api
+api/lookuptitle LookupTitleR POST
+api/tagcloud UserTagCloudR POST
+api/tagcloudmode UserTagCloudModeR POST
 
 -- edit
 /bm/#Int64 DeleteR DELETE
diff --git a/config/settings.yml b/config/settings.yml
--- a/config/settings.yml
+++ b/config/settings.yml
@@ -18,8 +18,8 @@
 # Optional values with the following production defaults.
 # In development, they default to the inverse.
 #
-# detailed-logging: false
-# should-log-all: false
+detailed-logging: "_env:DETAILED_LOGGING" # false
+should-log-all: "_env:SHOULD_LOG_ALL" # false
 # reload-templates: false
 # mutable-static: false
 # skip-combining: false
@@ -37,5 +37,9 @@
 copyright: Insert copyright statement here
 #analytics: UA-YOURCODE
 
-ekg-host:       "_env:EKG_HOST:0.0.0.0"
-ekg-port:       "_env:EKG_PORT:8000"
+archive-socks-proxy-host: "_env:ARCHIVE_SOCKS_PROXY_HOST"
+archive-socks-proxy-port: "_env:ARCHIVE_SOCKS_PROXY_PORT"
+
+source-code-uri: "_env:SOURCE_CODE_URI:https://github.com/jonschoning/espial"
+
+ssl-only: "_env:SSL_ONLY" # false
diff --git a/espial.cabal b/espial.cabal
--- a/espial.cabal
+++ b/espial.cabal
@@ -1,11 +1,13 @@
--- This file has been generated from package.yaml by hpack version 0.28.2.
+cabal-version: 1.12
+
+-- This file has been generated from package.yaml by hpack version 0.34.4.
 --
 -- see: https://github.com/sol/hpack
 --
--- hash: 417de4bead54d60a2c091ad91c61dc715571ef7421e702f157a3766daf4f4700
+-- hash: 6176e4be5a9b09fa50173b5bb2f280e5d8bc4c70374c91f1eac67ab03a49426f
 
 name:           espial
-version:        0.0.7
+version:        0.0.9
 synopsis:       Espial is an open-source, web-based bookmarking server.
 description:    .
                 Espial is an open-source, web-based bookmarking server.
@@ -21,8 +23,8 @@
 license:        AGPL-3
 license-file:   LICENSE
 build-type:     Simple
-cabal-version:  >= 1.10
 extra-source-files:
+    README.md
     changelog.md
     config/favicon.ico
     config/keter.yml
@@ -30,10 +32,44 @@
     config/routes
     config/settings.yml
     config/test-settings.yml
+    templates/change-password.hamlet
+    templates/default-layout-wrapper.hamlet
+    templates/default-layout.hamlet
+    templates/docs-search.hamlet
+    templates/homepage.hamlet
+    templates/login.hamlet
+    templates/note.hamlet
+    templates/notes.hamlet
+    templates/pager.hamlet
+    templates/popup-layout.hamlet
+    templates/search.hamlet
+    templates/user-settings.hamlet
+    templates/user.hamlet
+    static/css/main.css
+    static/css/popup.css
+    static/css/tachyons.min.css
+    static/css/tachyons.min.css.gz
+    static/images/bluepin.gif
+    static/js/app.min.js
+    static/js/app.min.js.gz
+    static/js/app.min.js.map
+    static/js/app.min.js.map.gz
+    static/js/html5shiv.min.js
+    static/js/html5shiv.min.js.gz
+    static/js/js.cookie-2.2.0.min.js
+    static/js/js.cookie-2.2.0.min.js.gz
     purs/Makefile
     purs/packages.dhall
     purs/spago.dhall
     purs/src/App.purs
+    purs/src/Globals.js
+    purs/src/Globals.purs
+    purs/src/Main.js
+    purs/src/Main.purs
+    purs/src/Marked.js
+    purs/src/Marked.purs
+    purs/src/Model.purs
+    purs/src/Util.purs
     purs/src/Component/AccountSettings.purs
     purs/src/Component/Add.purs
     purs/src/Component/BList.purs
@@ -43,45 +79,8 @@
     purs/src/Component/NNote.purs
     purs/src/Component/RawHtml.js
     purs/src/Component/RawHtml.purs
-    purs/src/Globals.js
-    purs/src/Globals.purs
-    purs/src/Main.purs
-    purs/src/Marked.js
-    purs/src/Marked.purs
-    purs/src/Model.purs
-    purs/src/Util.purs
+    purs/src/Component/TagCloud.purs
     purs/test/Main.purs
-    README.md
-    static/css/main.css
-    static/css/popup.css
-    static/css/tachyons.min.css
-    static/css/tachyons.min.css.gz
-    static/images/bluepin.gif
-    static/js/app.js
-    static/js/app.js.gz
-    static/js/app.min.js
-    static/js/app.min.js.gz
-    static/js/html5shiv.min.js
-    static/js/html5shiv.min.js.gz
-    static/js/js.cookie-2.2.0.min.js
-    static/js/js.cookie-2.2.0.min.js.gz
-    static/js/marked.min.js
-    static/js/marked.min.js.gz
-    static/js/moment.min.js
-    static/js/moment.min.js.gz
-    templates/change-password.hamlet
-    templates/default-layout-wrapper.hamlet
-    templates/default-layout.hamlet
-    templates/docs-search.hamlet
-    templates/homepage.hamlet
-    templates/login.hamlet
-    templates/note.hamlet
-    templates/notes.hamlet
-    templates/pager.hamlet
-    templates/popup-layout.hamlet
-    templates/search.hamlet
-    templates/user-settings.hamlet
-    templates/user.hamlet
 
 source-repository head
   type: git
@@ -98,49 +97,110 @@
   default: False
 
 library
+  exposed-modules:
+      Application
+      Foundation
+      Generic
+      Handler.AccountSettings
+      Handler.Add
+      Handler.Archive
+      Handler.Common
+      Handler.Docs
+      Handler.Edit
+      Handler.Home
+      Handler.Notes
+      Handler.User
+      Import
+      Import.NoFoundation
+      Model
+      ModelCustom
+      PathPiece
+      Pretty
+      Settings
+      Settings.StaticFiles
+      Types
+  other-modules:
+      Paths_espial
   hs-source-dirs:
       src
-  default-extensions: BangPatterns CPP ConstraintKinds DataKinds DeriveDataTypeable DeriveGeneric EmptyDataDecls FlexibleContexts FlexibleInstances GADTs GeneralizedNewtypeDeriving InstanceSigs KindSignatures LambdaCase MultiParamTypeClasses MultiWayIf NoImplicitPrelude OverloadedStrings PolyKinds PolymorphicComponents QuasiQuotes Rank2Types RankNTypes RecordWildCards ScopedTypeVariables StandaloneDeriving TemplateHaskell TupleSections TypeApplications TypeFamilies TypeOperators TypeSynonymInstances ViewPatterns
+  default-extensions:
+      BangPatterns
+      BlockArguments
+      CPP
+      ConstraintKinds
+      DataKinds
+      DeriveDataTypeable
+      DeriveGeneric
+      DerivingStrategies
+      EmptyDataDecls
+      FlexibleContexts
+      FlexibleInstances
+      GADTs
+      GeneralizedNewtypeDeriving
+      InstanceSigs
+      KindSignatures
+      LambdaCase
+      MultiParamTypeClasses
+      MultiWayIf
+      NoImplicitPrelude
+      OverloadedStrings
+      PolyKinds
+      PolymorphicComponents
+      PartialTypeSignatures
+      QuasiQuotes
+      Rank2Types
+      RankNTypes
+      RecordWildCards
+      ScopedTypeVariables
+      StandaloneDeriving
+      TemplateHaskell
+      TupleSections
+      TypeApplications
+      TypeFamilies
+      TypeOperators
+      TypeSynonymInstances
+      UndecidableInstances
+      ViewPatterns
   build-depends:
       aeson >=1.4
     , attoparsec
     , base >=4.8.2.0 && <4.9 || >=4.9.1.0 && <5
     , bcrypt >=0.0.8
+    , blaze-html >=0.9 && <1.0
     , bytestring >=0.9 && <0.11
     , case-insensitive
     , classy-prelude >=1.4 && <1.6
     , classy-prelude-conduit >=1.4 && <1.6
     , classy-prelude-yesod >=1.4 && <1.6
     , conduit >=1.0 && <2.0
+    , connection
     , containers
     , data-default
     , directory >=1.1 && <1.4
-    , ekg
-    , ekg-core
     , entropy
     , esqueleto
-    , fast-logger >=2.2 && <2.5
+    , fast-logger >=2.2 && <4
     , file-embed
     , foreign-store
     , hjsmin >=0.1 && <0.3
     , hscolour
+    , html-entities
     , http-api-data >=0.3.4
     , http-client
-    , http-client-tls >=0.3 && <0.4
-    , http-conduit >=2.3 && <2.4
+    , http-client-tls ==0.3.*
+    , http-conduit ==2.3.*
     , http-types
     , iso8601-time >=0.1.3
     , microlens
-    , monad-logger >=0.3 && <0.4
-    , monad-metrics
+    , monad-logger ==0.3.*
     , mtl
     , parser-combinators
-    , persistent >=2.8 && <2.10
+    , persistent >=2.8 && <2.14
     , persistent-sqlite >=2.6.2
-    , persistent-template >=2.5 && <2.9
+    , persistent-template >=2.5 && <2.13
     , pretty-show
     , safe
-    , shakespeare >=2.0 && <2.1
+    , shakespeare ==2.0.*
     , template-haskell
     , text >=0.11 && <2.0
     , time
@@ -148,94 +208,110 @@
     , unordered-containers
     , vector
     , wai
-    , wai-extra >=3.0 && <3.1
+    , wai-extra >=3.0 && <3.2
     , wai-logger >=2.2 && <2.4
-    , wai-middleware-metrics
-    , warp >=3.0 && <3.3
+    , warp >=3.0 && <3.4
     , yaml >=0.8 && <0.12
-    , yesod >=1.6 && <1.7
-    , yesod-auth >=1.6 && <1.7
-    , yesod-core >=1.6 && <1.7
-    , yesod-form >=1.6 && <1.7
-    , yesod-static >=1.6 && <1.7
+    , yesod >=1.6 && <1.8
+    , yesod-auth >=1.6 && <1.8
+    , yesod-core >=1.6 && <1.8
+    , yesod-form >=1.6 && <1.8
+    , yesod-newsfeed >=1.6 && <1.8
+    , yesod-static >=1.6 && <1.8
   if (flag(dev)) || (flag(library-only))
     ghc-options: -Wall -fwarn-tabs -O0
     cpp-options: -DDEVELOPMENT
   else
     ghc-options: -Wall -fwarn-tabs -O2
-  exposed-modules:
-      Application
-      Foundation
-      Generic
-      Handler.AccountSettings
-      Handler.Add
-      Handler.Archive
-      Handler.Common
-      Handler.Docs
-      Handler.Edit
-      Handler.Home
-      Handler.Notes
-      Handler.User
-      Import
-      Import.NoFoundation
-      Model
-      ModelCustom
-      PathPiece
-      Pretty
-      Settings
-      Settings.StaticFiles
-      Types
-  other-modules:
-      Paths_espial
   default-language: Haskell2010
 
 executable espial
   main-is: main.hs
+  other-modules:
+      DevelMain
+      Paths_espial
   hs-source-dirs:
       app
-  default-extensions: BangPatterns CPP ConstraintKinds DataKinds DeriveDataTypeable DeriveGeneric EmptyDataDecls FlexibleContexts FlexibleInstances GADTs GeneralizedNewtypeDeriving InstanceSigs KindSignatures LambdaCase MultiParamTypeClasses MultiWayIf NoImplicitPrelude OverloadedStrings PolyKinds PolymorphicComponents QuasiQuotes Rank2Types RankNTypes RecordWildCards ScopedTypeVariables StandaloneDeriving TemplateHaskell TupleSections TypeApplications TypeFamilies TypeOperators TypeSynonymInstances ViewPatterns
+  default-extensions:
+      BangPatterns
+      BlockArguments
+      CPP
+      ConstraintKinds
+      DataKinds
+      DeriveDataTypeable
+      DeriveGeneric
+      DerivingStrategies
+      EmptyDataDecls
+      FlexibleContexts
+      FlexibleInstances
+      GADTs
+      GeneralizedNewtypeDeriving
+      InstanceSigs
+      KindSignatures
+      LambdaCase
+      MultiParamTypeClasses
+      MultiWayIf
+      NoImplicitPrelude
+      OverloadedStrings
+      PolyKinds
+      PolymorphicComponents
+      PartialTypeSignatures
+      QuasiQuotes
+      Rank2Types
+      RankNTypes
+      RecordWildCards
+      ScopedTypeVariables
+      StandaloneDeriving
+      TemplateHaskell
+      TupleSections
+      TypeApplications
+      TypeFamilies
+      TypeOperators
+      TypeSynonymInstances
+      UndecidableInstances
+      ViewPatterns
   ghc-options: -threaded -rtsopts -with-rtsopts=-N
   build-depends:
       aeson >=1.4
     , attoparsec
     , base >=4.8.2.0 && <4.9 || >=4.9.1.0 && <5
     , bcrypt >=0.0.8
+    , blaze-html >=0.9 && <1.0
     , bytestring >=0.9 && <0.11
     , case-insensitive
     , classy-prelude >=1.4 && <1.6
     , classy-prelude-conduit >=1.4 && <1.6
     , classy-prelude-yesod >=1.4 && <1.6
     , conduit >=1.0 && <2.0
+    , connection
     , containers
     , data-default
     , directory >=1.1 && <1.4
-    , ekg
-    , ekg-core
     , entropy
     , espial
     , esqueleto
-    , fast-logger >=2.2 && <2.5
+    , fast-logger >=2.2 && <4
     , file-embed
     , foreign-store
     , hjsmin >=0.1 && <0.3
     , hscolour
+    , html-entities
     , http-api-data >=0.3.4
     , http-client
-    , http-client-tls >=0.3 && <0.4
-    , http-conduit >=2.3 && <2.4
+    , http-client-tls ==0.3.*
+    , http-conduit ==2.3.*
     , http-types
     , iso8601-time >=0.1.3
     , microlens
-    , monad-logger >=0.3 && <0.4
-    , monad-metrics
+    , monad-logger ==0.3.*
     , mtl
     , parser-combinators
-    , persistent >=2.8 && <2.10
+    , persistent >=2.8 && <2.14
     , persistent-sqlite >=2.6.2
-    , persistent-template >=2.5 && <2.9
+    , persistent-template >=2.5 && <2.13
     , pretty-show
     , safe
-    , shakespeare >=2.0 && <2.1
+    , shakespeare ==2.0.*
     , template-haskell
     , text >=0.11 && <2.0
     , time
@@ -243,71 +319,107 @@
     , unordered-containers
     , vector
     , wai
-    , wai-extra >=3.0 && <3.1
+    , wai-extra >=3.0 && <3.2
     , wai-logger >=2.2 && <2.4
-    , wai-middleware-metrics
-    , warp >=3.0 && <3.3
+    , warp >=3.0 && <3.4
     , yaml >=0.8 && <0.12
-    , yesod >=1.6 && <1.7
-    , yesod-auth >=1.6 && <1.7
-    , yesod-core >=1.6 && <1.7
-    , yesod-form >=1.6 && <1.7
-    , yesod-static >=1.6 && <1.7
+    , yesod >=1.6 && <1.8
+    , yesod-auth >=1.6 && <1.8
+    , yesod-core >=1.6 && <1.8
+    , yesod-form >=1.6 && <1.8
+    , yesod-newsfeed >=1.6 && <1.8
+    , yesod-static >=1.6 && <1.8
   if flag(library-only)
     buildable: False
-  other-modules:
-      DevelMain
-      Paths_espial
   default-language: Haskell2010
 
 executable migration
   main-is: Main.hs
+  other-modules:
+      Paths_espial
   hs-source-dirs:
       app/migration
-  default-extensions: BangPatterns CPP ConstraintKinds DataKinds DeriveDataTypeable DeriveGeneric EmptyDataDecls FlexibleContexts FlexibleInstances GADTs GeneralizedNewtypeDeriving InstanceSigs KindSignatures LambdaCase MultiParamTypeClasses MultiWayIf NoImplicitPrelude OverloadedStrings PolyKinds PolymorphicComponents QuasiQuotes Rank2Types RankNTypes RecordWildCards ScopedTypeVariables StandaloneDeriving TemplateHaskell TupleSections TypeApplications TypeFamilies TypeOperators TypeSynonymInstances ViewPatterns
+  default-extensions:
+      BangPatterns
+      BlockArguments
+      CPP
+      ConstraintKinds
+      DataKinds
+      DeriveDataTypeable
+      DeriveGeneric
+      DerivingStrategies
+      EmptyDataDecls
+      FlexibleContexts
+      FlexibleInstances
+      GADTs
+      GeneralizedNewtypeDeriving
+      InstanceSigs
+      KindSignatures
+      LambdaCase
+      MultiParamTypeClasses
+      MultiWayIf
+      NoImplicitPrelude
+      OverloadedStrings
+      PolyKinds
+      PolymorphicComponents
+      PartialTypeSignatures
+      QuasiQuotes
+      Rank2Types
+      RankNTypes
+      RecordWildCards
+      ScopedTypeVariables
+      StandaloneDeriving
+      TemplateHaskell
+      TupleSections
+      TypeApplications
+      TypeFamilies
+      TypeOperators
+      TypeSynonymInstances
+      UndecidableInstances
+      ViewPatterns
   ghc-options: -threaded -rtsopts -with-rtsopts=-N
   build-depends:
       aeson >=1.4
     , attoparsec
     , base >=4.8.2.0 && <4.9 || >=4.9.1.0 && <5
     , bcrypt >=0.0.8
+    , blaze-html >=0.9 && <1.0
     , bytestring >=0.9 && <0.11
     , case-insensitive
     , classy-prelude >=1.4 && <1.6
     , classy-prelude-conduit >=1.4 && <1.6
     , classy-prelude-yesod >=1.4 && <1.6
     , conduit >=1.0 && <2.0
+    , connection
     , containers
     , data-default
     , directory >=1.1 && <1.4
-    , ekg
-    , ekg-core
     , entropy
     , espial
     , esqueleto
-    , fast-logger >=2.2 && <2.5
+    , fast-logger >=2.2 && <4
     , file-embed
     , foreign-store
     , hjsmin >=0.1 && <0.3
     , hscolour
+    , html-entities
     , http-api-data >=0.3.4
     , http-client
-    , http-client-tls >=0.3 && <0.4
-    , http-conduit >=2.3 && <2.4
+    , http-client-tls ==0.3.*
+    , http-conduit ==2.3.*
     , http-types
     , iso8601-time >=0.1.3
     , microlens
-    , monad-logger >=0.3 && <0.4
-    , monad-metrics
+    , monad-logger ==0.3.*
     , mtl
     , optparse-generic >=1.2.3
     , parser-combinators
-    , persistent >=2.8 && <2.10
+    , persistent >=2.8 && <2.14
     , persistent-sqlite >=2.6.2
-    , persistent-template >=2.5 && <2.9
+    , persistent-template >=2.5 && <2.13
     , pretty-show
     , safe
-    , shakespeare >=2.0 && <2.1
+    , shakespeare ==2.0.*
     , template-haskell
     , text >=0.11 && <2.0
     , time
@@ -315,71 +427,111 @@
     , unordered-containers
     , vector
     , wai
-    , wai-extra >=3.0 && <3.1
+    , wai-extra >=3.0 && <3.2
     , wai-logger >=2.2 && <2.4
-    , wai-middleware-metrics
-    , warp >=3.0 && <3.3
+    , warp >=3.0 && <3.4
     , yaml >=0.8 && <0.12
-    , yesod >=1.6 && <1.7
-    , yesod-auth >=1.6 && <1.7
-    , yesod-core >=1.6 && <1.7
-    , yesod-form >=1.6 && <1.7
-    , yesod-static >=1.6 && <1.7
+    , yesod >=1.6 && <1.8
+    , yesod-auth >=1.6 && <1.8
+    , yesod-core >=1.6 && <1.8
+    , yesod-form >=1.6 && <1.8
+    , yesod-newsfeed >=1.6 && <1.8
+    , yesod-static >=1.6 && <1.8
   if flag(library-only)
     buildable: False
-  other-modules:
-      Paths_espial
   default-language: Haskell2010
 
 test-suite test
   type: exitcode-stdio-1.0
   main-is: Spec.hs
+  other-modules:
+      Handler.CommonSpec
+      Handler.HomeSpec
+      TestImport
+      Paths_espial
   hs-source-dirs:
       test
-  default-extensions: BangPatterns CPP ConstraintKinds DataKinds DeriveDataTypeable DeriveGeneric EmptyDataDecls FlexibleContexts FlexibleInstances GADTs GeneralizedNewtypeDeriving InstanceSigs KindSignatures LambdaCase MultiParamTypeClasses MultiWayIf NoImplicitPrelude OverloadedStrings PolyKinds PolymorphicComponents QuasiQuotes Rank2Types RankNTypes RecordWildCards ScopedTypeVariables StandaloneDeriving TemplateHaskell TupleSections TypeApplications TypeFamilies TypeOperators TypeSynonymInstances ViewPatterns
+  default-extensions:
+      BangPatterns
+      BlockArguments
+      CPP
+      ConstraintKinds
+      DataKinds
+      DeriveDataTypeable
+      DeriveGeneric
+      DerivingStrategies
+      EmptyDataDecls
+      FlexibleContexts
+      FlexibleInstances
+      GADTs
+      GeneralizedNewtypeDeriving
+      InstanceSigs
+      KindSignatures
+      LambdaCase
+      MultiParamTypeClasses
+      MultiWayIf
+      NoImplicitPrelude
+      OverloadedStrings
+      PolyKinds
+      PolymorphicComponents
+      PartialTypeSignatures
+      QuasiQuotes
+      Rank2Types
+      RankNTypes
+      RecordWildCards
+      ScopedTypeVariables
+      StandaloneDeriving
+      TemplateHaskell
+      TupleSections
+      TypeApplications
+      TypeFamilies
+      TypeOperators
+      TypeSynonymInstances
+      UndecidableInstances
+      ViewPatterns
   ghc-options: -Wall
   build-depends:
       aeson >=1.4
     , attoparsec
     , base >=4.8.2.0 && <4.9 || >=4.9.1.0 && <5
     , bcrypt >=0.0.8
+    , blaze-html >=0.9 && <1.0
     , bytestring >=0.9 && <0.11
     , case-insensitive
     , classy-prelude >=1.4 && <1.6
     , classy-prelude-conduit >=1.4 && <1.6
     , classy-prelude-yesod >=1.4 && <1.6
     , conduit >=1.0 && <2.0
+    , connection
     , containers
     , data-default
     , directory >=1.1 && <1.4
-    , ekg
-    , ekg-core
     , entropy
     , espial
     , esqueleto
-    , fast-logger >=2.2 && <2.5
+    , fast-logger >=2.2 && <4
     , file-embed
     , foreign-store
     , hjsmin >=0.1 && <0.3
     , hscolour
     , hspec >=2.0.0
+    , html-entities
     , http-api-data >=0.3.4
     , http-client
-    , http-client-tls >=0.3 && <0.4
-    , http-conduit >=2.3 && <2.4
+    , http-client-tls ==0.3.*
+    , http-conduit ==2.3.*
     , http-types
     , iso8601-time >=0.1.3
     , microlens
-    , monad-logger >=0.3 && <0.4
-    , monad-metrics
+    , monad-logger ==0.3.*
     , mtl
     , parser-combinators
-    , persistent >=2.8 && <2.10
+    , persistent >=2.8 && <2.14
     , persistent-sqlite >=2.6.2
-    , persistent-template >=2.5 && <2.9
+    , persistent-template >=2.5 && <2.13
     , pretty-show
     , safe
-    , shakespeare >=2.0 && <2.1
+    , shakespeare ==2.0.*
     , template-haskell
     , text >=0.11 && <2.0
     , time
@@ -387,20 +539,15 @@
     , unordered-containers
     , vector
     , wai
-    , wai-extra >=3.0 && <3.1
+    , wai-extra >=3.0 && <3.2
     , wai-logger >=2.2 && <2.4
-    , wai-middleware-metrics
-    , warp >=3.0 && <3.3
+    , warp >=3.0 && <3.4
     , yaml >=0.8 && <0.12
-    , yesod >=1.6 && <1.7
-    , yesod-auth >=1.6 && <1.7
-    , yesod-core >=1.6 && <1.7
-    , yesod-form >=1.6 && <1.7
-    , yesod-static >=1.6 && <1.7
+    , yesod >=1.6 && <1.8
+    , yesod-auth >=1.6 && <1.8
+    , yesod-core >=1.6 && <1.8
+    , yesod-form >=1.6 && <1.8
+    , yesod-newsfeed >=1.6 && <1.8
+    , yesod-static >=1.6 && <1.8
     , yesod-test
-  other-modules:
-      Handler.CommonSpec
-      Handler.HomeSpec
-      TestImport
-      Paths_espial
   default-language: Haskell2010
diff --git a/purs/Makefile b/purs/Makefile
--- a/purs/Makefile
+++ b/purs/Makefile
@@ -1,28 +1,32 @@
 .PHONY: clean build
 
-all: build
+all: bundle
 
 install: 
-	spago install
+	@npm run spago install
 
 build: 
-	@spago build
-	@spago bundle --to dist/app.js
-	@(cd dist && terser app.js -m -c -o app.min.js)
+	@npm run spago build
+
+bundle: build
+	@npm run spago -- bundle-app --to dist/bundle.js
+	@npm run parcel-build
 	@rm -f dist/*.gz
-	@gzip -k dist/app.js
+	@gzip -k dist/app.min.js.map
 	@gzip -k dist/app.min.js
 	@find dist -type f -printf "%kK\\t%h/%f\\n" | sort -k 2
-	@cp dist/app.js ../static/js/app.js
-	@cp dist/app.js.gz ../static/js/app.js.gz
+	@cp dist/app.min.js.map ../static/js/app.min.js.map
+	@cp dist/app.min.js.map.gz ../static/js/app.min.js.map.gz
 	@cp dist/app.min.js ../static/js/app.min.js
 	@cp dist/app.min.js.gz ../static/js/app.min.js.gz
 
 docs:
 	@rm -Rf generated-docs
-	@purs docs ".spago/*/*/src/**/*.purs" --format html
+	@npm run purs -- docs ".spago/*/*/src/**/*.purs" --format html
 
+docset: docs
+	@(cd docset; python3 ./gen-docset.py)
 clean:
 	rm -f dist/*
 
-# inotifywait -m -r -q -e close_write --format '%T %w%f' --timefmt '%T' src | while read FILE; do echo $FILE; make; done
+# inotifywait -m -r -q -e close_write --format '%T %w%f' --timefmt '%T' src | while read FILE; do echo $FILE; make build; done
diff --git a/purs/packages.dhall b/purs/packages.dhall
--- a/purs/packages.dhall
+++ b/purs/packages.dhall
@@ -1,121 +1,27 @@
 {-
-Welcome to Spacchetti local packages!
-
-Below are instructions for how to edit this file for most use
-cases, so that you don't need to know Dhall to use it.
-
-## Warning: Don't Move This Top-Level Comment!
-
-Due to how `dhall format` currently works, this comment's
-instructions cannot appear near corresponding sections below
-because `dhall format` will delete the comment. However,
-it will not delete a top-level comment like this one.
-
-## Use Cases
-
-Most will want to do one or both of these options:
-1. Override/Patch a package's dependency
-2. Add a package not already in the default package set
-
-This file will continue to work whether you use one or both options.
-Instructions for each option are explained below.
-
 ### Overriding/Patching a package
-
-Purpose:
-- Change a package's dependency to a newer/older release than the
-	default package set's release
-- Use your own modified version of some dependency that may
-	include new API, changed API, removed API by
-	using your custom git repo of the library rather than
-	the package set's repo
-
-Syntax:
-Replace the overrides' "{=}" (an empty record) with the following idea
-The "//" or "⫽" means "merge these two records and
-  when they have the same value, use the one on the right:"
--------------------------------
-let override =
-  { packageName =
-	  upstream.packageName ⫽ { updateEntity1 = "new value", updateEntity2 = "new value" }
-  , packageName =
-	  upstream.packageName ⫽ { version = "v4.0.0" }
-  , packageName =
-	  upstream.packageName // { repo = "https://www.example.com/path/to/new/repo.git" }
-  }
--------------------------------
-
-Example:
--------------------------------
-let overrides =
-  { halogen =
-	  upstream.halogen ⫽ { version = "master" }
-  , halogen-vdom =
-	  upstream.halogen-vdom ⫽ { version = "v4.0.0" }
-  }
--------------------------------
+let upstream = --
+in  upstream
+  with halogen.version = "master"
+  with halogen.repo = "https://example.com/path/to/git/repo.git"
+  with halogen-vdom.version = "v4.0.0"
 
 ### Additions
-
-Purpose:
-- Add packages that aren't alread included in the default package set
-
-Syntax:
-Replace the additions' "{=}" (an empty record) with the following idea:
--------------------------------
-let additions =
-  { "package-name" =
-	   mkPackage
-		 [ "dependency1"
-		 , "dependency2"
-		 ]
-		 "https://example.com/path/to/git/repo.git"
-		 "tag ('v4.0.0') or branch ('master')"
-  , "package-name" =
-	   mkPackage
-		 [ "dependency1"
-		 , "dependency2"
-		 ]
-		 "https://example.com/path/to/git/repo.git"
-		 "tag ('v4.0.0') or branch ('master')"
-  , etc.
-  }
--------------------------------
-
-Example:
--------------------------------
-let additions =
-  { benchotron =
-	  mkPackage
-		[ "arrays"
-		, "exists"
-		, "profunctor"
-		, "strings"
-		, "quickcheck"
-		, "lcg"
-		, "transformers"
-		, "foldable-traversable"
-		, "exceptions"
-		, "node-fs"
-		, "node-buffer"
-		, "node-readline"
-		, "datetime"
-		, "now"
-		]
-		"https://github.com/hdgarrood/purescript-benchotron.git"
-		"v7.0.0"
-  }
--------------------------------
+let upstream = --
+in  upstream
+  with new-package-name =
+    { dependencies =
+       [ "dependency1"
+       , "dependency2"
+       ]
+    , repo =
+       "https://example.com/path/to/git/repo.git"
+    , version =
+        "<version>"
+    }
 -}
-
-let mkPackage =
-      https://raw.githubusercontent.com/spacchetti/spacchetti/20190105/src/mkPackage.dhall sha256:8e1c6636f8a089f972b21cde0cef4b33fa36a2e503ad4c77928aabf92d2d4ec9
-
 let upstream =
-      https://raw.githubusercontent.com/spacchetti/spacchetti/20190105/src/packages.dhall sha256:38fc3e19c193bb006c773ac84fc4a2888e5dcc610d36e49a9bdef7ecc7e1f8c9
-
-let overrides = {=}
-
-let additions = {=}
+      https://raw.githubusercontent.com/purescript/package-sets/psc-0.14.7-20220228/src/packages.dhall
+        sha256:585403682c9378a55da644fb2edbc74d2592d18283bc9fa3457ad79398bb55bb
 
-in  upstream ⫽ overrides ⫽ additions
+in  upstream
diff --git a/purs/spago.dhall b/purs/spago.dhall
--- a/purs/spago.dhall
+++ b/purs/spago.dhall
@@ -1,24 +1,40 @@
-{ name =
-	"espial"
+{ sources = [ "src/**/*.purs", "test/**/*.purs" ]
+, name = "espial"
 , dependencies =
-	[ "aff"
-	, "simple-json"
-	, "affjax"
-	, "argonaut"
-	, "arrays"
-	, "console"
-	, "debug"
-	, "effect"
-	, "either"
-	, "functions"
-	, "halogen"
-	, "prelude"
-	, "psci-support"
-	, "strings"
-	, "transformers"
-	, "web-html"
-	, "profunctor-lenses"
-	]
-, packages =
-	./packages.dhall
+  [ "aff"
+  , "affjax"
+  , "argonaut"
+  , "arrays"
+  , "console"
+  , "const"
+  , "effect"
+  , "either"
+  , "foldable-traversable"
+  , "foreign"
+  , "foreign-object"
+  , "form-urlencoded"
+  , "functions"
+  , "halogen"
+  , "http-methods"
+  , "integers"
+  , "js-uri"
+  , "math"
+  , "maybe"
+  , "media-types"
+  , "newtype"
+  , "nullable"
+  , "partial"
+  , "prelude"
+  , "profunctor-lenses"
+  , "psci-support"
+  , "simple-json"
+  , "strings"
+  , "transformers"
+  , "tuples"
+  , "web-dom"
+  , "web-events"
+  , "web-html"
+  , "web-xhr"
+  ]
+, packages = ./packages.dhall
 }
diff --git a/purs/src/App.purs b/purs/src/App.purs
--- a/purs/src/App.purs
+++ b/purs/src/App.purs
@@ -2,15 +2,16 @@
 
 import Prelude
 
-import Affjax (Response, ResponseFormatError)
+import Affjax (Response, Error)
 import Affjax (defaultRequest) as AX
 import Affjax as Ax
 import Affjax.RequestBody as AXReq
 import Affjax.RequestHeader (RequestHeader(..))
 import Affjax.ResponseFormat as AXRes
-import Data.Argonaut (Json)
+import Affjax.StatusCode (StatusCode(..))
+import Data.Argonaut (Json, decodeJson)
 import Data.Array ((:))
-import Data.Either (Either(..))
+import Data.Either (Either(..), hush)
 import Data.FormURLEncoded (FormURLEncoded)
 import Data.HTTP.Method (Method(..))
 import Data.Maybe (Maybe(..))
@@ -18,7 +19,7 @@
 import Effect.Aff (Aff)
 import Effect.Class (liftEffect)
 import Globals (app')
-import Model (Bookmark, Bookmark'(..), Note, Note'(..), AccountSettings, AccountSettings'(..))
+import Model (Bookmark, Bookmark'(..), Note, Note'(..), AccountSettings, AccountSettings'(..), TagCloudMode, TagCloudMode'(..), TagCloud)
 import Simple.JSON as J
 import Web.HTML (window)
 import Web.HTML.Location (reload)
@@ -34,28 +35,46 @@
   let path = "bm/" <> show bid <> "/" <> show action
   void (fetchUrlEnc POST path Nothing AXRes.ignore)
 
-destroy :: Int -> Aff (Response (Either ResponseFormatError Unit))
+destroy :: Int -> Aff (Either Error (Response Unit))
 destroy bid =
   fetchUrlEnc DELETE ("bm/" <> show bid) Nothing AXRes.ignore
 
-markRead :: Int -> Aff (Response (Either ResponseFormatError Unit))
+markRead :: Int -> Aff (Either Error (Response Unit))
 markRead bid = do
   let path = "bm/" <> show bid <> "/read"
   fetchUrlEnc POST path Nothing AXRes.ignore
 
-editBookmark :: Bookmark -> Aff (Response (Either ResponseFormatError Unit))
+editBookmark :: Bookmark -> Aff (Either Error (Response String))
 editBookmark bm =  do
-    fetchJson POST "api/add" (Just (Bookmark' bm)) AXRes.ignore
+    fetchJson POST "api/add" (Just (Bookmark' bm)) AXRes.string
 
-editNote :: Note -> Aff (Response (Either ResponseFormatError Json))
+editNote :: Note -> Aff (Either Error (Response String))
 editNote bm =  do
-    fetchJson POST "api/note/add" (Just (Note' bm)) AXRes.json
+    fetchJson POST "api/note/add" (Just (Note' bm)) AXRes.string
 
-destroyNote :: Int -> Aff (Response (Either ResponseFormatError Unit))
+lookupTitle :: Bookmark -> Aff (Maybe String)
+lookupTitle bm = do
+  eres <- fetchJson POST "api/lookuptitle" (Just (Bookmark' bm)) AXRes.string
+  pure $ hush eres >>= \res ->
+    if (res.status == StatusCode 200)
+    then Just res.body
+    else Nothing
+      
+getTagCloud :: TagCloudMode -> Aff (Maybe TagCloud)
+getTagCloud mode = do
+    eres <- fetchJson POST "api/tagcloud" (Just (TagCloudMode' mode)) AXRes.json
+    pure $ hush eres >>= \res ->
+        hush (decodeJson res.body)
+
+updateTagCloudMode :: TagCloudMode -> Aff (Either Error (Response Unit))
+updateTagCloudMode mode = do
+    fetchJson POST "api/tagcloudmode" (Just (TagCloudMode' mode)) AXRes.ignore
+  
+destroyNote :: Int -> Aff (Either Error (Response Unit))
 destroyNote nid =  do
   fetchUrlEnc DELETE ("api/note/" <> show nid) Nothing AXRes.ignore
 
-editAccountSettings :: AccountSettings -> Aff (Response (Either ResponseFormatError Unit))
+editAccountSettings :: AccountSettings -> Aff (Either Error (Response Unit))
 editAccountSettings us =  do
     fetchJson POST "api/accountSettings" (Just (AccountSettings' us)) AXRes.ignore
 
@@ -73,7 +92,7 @@
   -> String
   -> Maybe b
   -> AXRes.ResponseFormat a
-  -> Aff (Response (Either ResponseFormatError a))
+  -> Aff (Either Error (Response a))
 fetchJson method path content rt =
     fetchPath method path [ContentType applicationJSON] (AXReq.string <<< J.writeJSON <$> content) rt
 
@@ -83,7 +102,7 @@
   -> String
   -> Maybe FormURLEncoded
   -> AXRes.ResponseFormat a
-  -> Aff (Response (Either ResponseFormatError a))
+  -> Aff (Either Error (Response a))
 fetchUrlEnc method path content rt =
     fetchPath method path [ContentType applicationFormURLEncoded] (AXReq.FormURLEncoded <$> content) rt
 
@@ -94,7 +113,7 @@
   -> Array RequestHeader
   -> Maybe AXReq.RequestBody
   -> AXRes.ResponseFormat a
-  -> Aff (Response (Either ResponseFormatError a))
+  -> Aff (Either Error (Response a))
 fetchPath method path headers content rt =
     fetchUrl method ((app' unit).homeR <> path) headers content rt
 
@@ -105,7 +124,7 @@
   -> Array RequestHeader
   -> Maybe AXReq.RequestBody
   -> AXRes.ResponseFormat a
-  -> Aff (Response (Either ResponseFormatError a))
+  -> Aff (Either Error (Response a))
 fetchUrl method url headers content rt =
   Ax.request
     AX.defaultRequest
diff --git a/purs/src/Component/AccountSettings.purs b/purs/src/Component/AccountSettings.purs
--- a/purs/src/Component/AccountSettings.purs
+++ b/purs/src/Component/AccountSettings.purs
@@ -4,15 +4,13 @@
 
 import App (editAccountSettings)
 import Data.Lens (Lens', lens, use, (%=))
-import Data.Maybe (Maybe(..))
 import Effect.Aff (Aff)
 import Globals (app')
 import Halogen as H
-import Halogen.HTML (HTML, div, input, text)
+import Halogen.HTML (div, input, text)
 import Halogen.HTML.Elements (label)
 import Halogen.HTML.Events (onChecked)
-import Halogen.HTML.Events as HE
-import Halogen.HTML.Properties (InputType(..), checked, for, id_, name, type_)
+import Halogen.HTML.Properties (InputType(..), checked, for, id, name, type_)
 import Model (AccountSettings)
 import Util (class_)
 import Web.Event.Event (Event)
@@ -24,9 +22,9 @@
 _us :: Lens' UState AccountSettings
 _us = lens _.us (_ { us = _ })
 
-data UQuery a
-  = UEditField EditField a
-  | USubmit Event a
+data UAction
+  = UEditField EditField
+  | USubmit Event
 
 data EditField
   = EarchiveDefault Boolean
@@ -35,13 +33,12 @@
 
 
 -- | The bookmark component definition.
-usetting :: AccountSettings -> H.Component HTML UQuery Unit Unit Aff
+usetting :: forall q i o. AccountSettings -> H.Component q i o Aff
 usetting u' =
-  H.component
+  H.mkComponent
     { initialState: const (mkState u')
     , render
-    , eval
-    , receiver: const Nothing
+    , eval: H.mkEval $ H.defaultEval { handleAction = handleAction }
     }
   where
   app = app' unit
@@ -50,42 +47,42 @@
     { us: u
     }
 
-  render :: UState -> H.ComponentHTML UQuery
+  render :: forall m. UState -> H.ComponentHTML UAction () m
   render { us } =
     div [ class_ "settings-form" ]
     [ div [ class_ "fw7 mb2"] [ text "Account Settings" ]
     , div [ class_ "flex items-center mb2" ]
-      [ input [ type_ InputCheckbox , class_ "pointer mr2" , id_ "archiveDefault", name "archiveDefault"
+      [ input [ type_ InputCheckbox , class_ "pointer mr2" , id "archiveDefault", name "archiveDefault"
               , checked (us.archiveDefault) , onChecked (editField EarchiveDefault) ]
       , label [ for "archiveDefault", class_ "lh-copy" ]
         [ text "Archive Non-Private Bookmarks (archive.li)" ]
       ]
     , div [ class_ "flex items-center mb2" ]
-      [ input [ type_ InputCheckbox , class_ "pointer mr2" , id_ "privateDefault", name "privateDefault"
+      [ input [ type_ InputCheckbox , class_ "pointer mr2" , id "privateDefault", name "privateDefault"
               , checked (us.privateDefault) , onChecked (editField EprivateDefault) ]
       , label [ for "privateDefault", class_ "lh-copy"  ]
         [ text "Default new bookmarks to Private" ]
       ]
     , div [ class_ "flex items-center mb2" ]
-      [ input [ type_ InputCheckbox , class_ "pointer mr2" , id_ "privacyLock", name "privacyLock"
+      [ input [ type_ InputCheckbox , class_ "pointer mr2" , id "privacyLock", name "privacyLock"
               , checked (us.privacyLock) , onChecked (editField EprivacyLock) ]
       , label [ for "privacyLock", class_ "lh-copy"  ]
         [ text "Privacy Lock (Private Account)" ]
       ]
     ]
     where
-      editField :: forall a. (a -> EditField) -> a -> Maybe (UQuery Unit)
-      editField f = HE.input UEditField <<< f
+      editField :: forall a. (a -> EditField) -> a -> UAction
+      editField f = UEditField <<< f
 
-  eval :: UQuery ~> H.ComponentDSL UState UQuery Unit Aff
-  eval (UEditField f next) = do
+  handleAction :: UAction -> H.HalogenM UState UAction () o Aff Unit
+  handleAction (UEditField f) = do
     _us %= case f of
       EarchiveDefault e -> _ { archiveDefault = e }
       EprivateDefault e -> _ { privateDefault = e }
       EprivacyLock e -> _ { privacyLock = e }
-    pure next
+    us <- use _us
+    void $ H.liftAff (editAccountSettings us)
 
-  eval (USubmit e next) = do
+  handleAction (USubmit _) = do
     us <- use _us
     void $ H.liftAff (editAccountSettings us)
-    pure next
diff --git a/purs/src/Component/Add.purs b/purs/src/Component/Add.purs
--- a/purs/src/Component/Add.purs
+++ b/purs/src/Component/Add.purs
@@ -2,34 +2,36 @@
 
 import Prelude hiding (div)
 
-import App (destroy, editBookmark)
-import Data.Array (drop, foldMap)
+import Affjax (printError)
+import Affjax.StatusCode (StatusCode(..))
+import App (destroy, editBookmark, lookupTitle)
+import Data.Either (Either(..))
 import Data.Lens (Lens', lens, use, (%=), (.=))
-import Data.Maybe (Maybe(..), maybe)
+import Data.Maybe (Maybe(..), fromMaybe, isJust, maybe)
 import Data.Monoid (guard)
-import Data.String (null)
-import Data.String (split) as S
-import Data.String.Pattern (Pattern(..))
+import Data.String (Pattern(..), null, stripPrefix)
 import Data.Tuple (fst, snd)
 import Effect.Aff (Aff)
 import Effect.Class (liftEffect)
-import Globals (app', closeWindow, mmoment8601)
+import Effect.Console (log)
+import Globals (closeWindow, mmoment8601)
 import Halogen as H
-import Halogen.HTML (HTML, br_, button, div, div_, form, input, label, p, span, table, tbody_, td, td_, text, textarea, tr_)
+import Halogen.HTML (button, div, form, input, label, p, span, table, tbody_, td, td_, text, textarea, tr_)
 import Halogen.HTML.Events (onSubmit, onValueChange, onChecked, onClick)
-import Halogen.HTML.Events as HE
-import Halogen.HTML.Properties (autofocus, ButtonType(..), InputType(..), autocomplete, checked, for, id_, name, required, rows, title, type_, value)
+import Halogen.HTML.Properties (ButtonType(..), InputType(..), autocomplete, autofocus, checked, disabled, for, id, name, required, rows, title, type_, value)
 import Model (Bookmark)
-import Util (_curQuerystring, _loc, _lookupQueryStringValue, attr, class_)
+import Util (_curQuerystring, _loc, _doc, _lookupQueryStringValue, attr, class_, ifElseH, whenH)
 import Web.Event.Event (Event, preventDefault)
 import Web.HTML (window)
-import Web.HTML.Location (setHref)
+import Web.HTML.HTMLDocument (referrer)
+import Web.HTML.Location (setHref, origin)
 
-data BQuery a
-  = BEditField EditField a
-  | BEditSubmit Event a
-  | BDeleteAsk Boolean a
-  | BDestroy a
+data BAction
+  = BEditField EditField
+  | BEditSubmit Event
+  | BDeleteAsk Boolean
+  | BLookupTitle
+  | BDestroy
 
 data EditField
   = Eurl String
@@ -43,7 +45,9 @@
   { bm :: Bookmark
   , edit_bm :: Bookmark
   , deleteAsk :: Boolean
+  , loading :: Boolean
   , destroyed :: Boolean
+  , apiError :: Maybe String
   }
 
 _bm :: Lens' BState Bookmark
@@ -52,64 +56,75 @@
 _edit_bm :: Lens' BState Bookmark
 _edit_bm = lens _.edit_bm (_ { edit_bm = _ })
 
-addbmark :: Bookmark -> H.Component HTML BQuery Unit Unit Aff
+_apiError :: Lens' BState (Maybe String)
+_apiError = lens _.apiError (_ { apiError = _ })
+
+addbmark :: forall q i o. Bookmark -> H.Component q i o Aff
 addbmark b' =
-  H.component
+  H.mkComponent
     { initialState: const (mkState b')
     , render
-    , eval
-    , receiver: const Nothing
+    , eval: H.mkEval $ H.defaultEval { handleAction = handleAction }
     }
   where
-  app = app' unit
 
   mkState b =
     { bm: b
     , edit_bm: b
     , deleteAsk: false
     , destroyed: false
+    , loading: false
+    , apiError: Nothing
     }
 
-  render :: BState -> H.ComponentHTML BQuery
-  render s@{ bm, edit_bm } =
-    div_ [ if not s.destroyed then display_edit else display_destroyed ]
+  render :: forall m. BState -> H.ComponentHTML BAction () m
+  render s@{ bm, edit_bm, apiError } =
+    ifElseH (not s.destroyed)
+      display_edit
+      display_destroyed
    where
-     display_edit =
-       form [ onSubmit (HE.input BEditSubmit) ]
+     display_edit _ =
+       form [ onSubmit BEditSubmit ]
        [ table [ class_ "w-100" ]
          [ tbody_
            [ tr_
              [ td [ class_ "w1" ] [ ]
-             , td_ $ guard (bm.bid > 0) [ display_exists ]
+             , td_ [ whenH (bm.bid > 0)
+                       display_exists,
+                     whenH (isJust apiError)
+                       (alert_notification (fromMaybe "" apiError))
+                   ]
              ]
            , tr_
              [ td_ [ label [ for "url" ] [ text "URL" ] ]
-             , td_ [ input [ type_ InputUrl , id_ "url", class_ "w-100 mv1" , required true, name "url", autofocus (null bm.url)
-                           , value (edit_bm.url) , onValueChange (editField Eurl)] ]
+             , td_ [ input [ type_ InputUrl , id "url", class_ "w-100 mv1" , required true, name "url", autofocus (null bm.url)
+                          , value (edit_bm.url) , onValueChange (editField Eurl)] ]
              ]
            , tr_
              [ td_ [ label [ for "title" ] [ text "title" ] ]
-             , td_ [ input [ type_ InputText , id_ "title", class_ "w-100 mv1" , name "title"
-                           , value (edit_bm.title) , onValueChange (editField Etitle)] ]
+             , td [class_ "flex"]
+                  [ input [ type_ InputText , id "title", class_ "w-100 mv1 flex-auto" , name "title" , value (edit_bm.title) , onValueChange (editField Etitle)]
+                  , button [ disabled s.loading, type_ ButtonButton, onClick \_ -> BLookupTitle, class_ ("ml2 input-reset ba b--navy pointer f6 di dim pa1 ma1 mr0 " <> guard s.loading "bg-light-silver") ] [ text "fetch" ]
+                  ]
              ]
            , tr_
              [ td_ [ label [ for "description" ] [ text "description" ] ]
-             , td_ [ textarea [ class_ "w-100 mt1 mid-gray" , id_ "description", name "description", rows 4
+             , td_ [ textarea [ class_ "w-100 mt1 mid-gray" , id "description", name "description", rows 4
                               , value (edit_bm.description) , onValueChange (editField Edescription)] ]
              ]
            , tr_
              [ td_ [ label [ for "tags" ] [ text "tags" ] ]
-             , td_ [ input [ type_ InputText , id_ "tags", class_ "w-100 mv1" , name "tags", autocomplete false, attr "autocapitalize" "off", autofocus (not $ null bm.url)
+             , td_ [ input [ type_ InputText , id "tags", class_ "w-100 mv1" , name "tags", autocomplete false, attr "autocapitalize" "off", autofocus (not $ null bm.url)
                            , value (edit_bm.tags) , onValueChange (editField Etags)] ]
              ]
            , tr_
              [ td_ [ label [ for "private" ] [ text "private" ] ]
-             , td_ [ input [ type_ InputCheckbox , id_ "private", class_ "private pointer" , name "private"
+             , td_ [ input [ type_ InputCheckbox , id "private", class_ "private pointer" , name "private"
                            , checked (edit_bm.private) , onChecked (editField Eprivate)] ]
              ]
            , tr_
              [ td_ [ label [ for "toread" ] [ text "read later" ] ]
-             , td_ [ input [ type_ InputCheckbox , id_ "toread", class_ "toread pointer" , name "toread"
+             , td_ [ input [ type_ InputCheckbox , id "toread", class_ "toread pointer" , name "toread"
                            , checked (edit_bm.toread) , onChecked (editField Etoread)] ]
              ]
            , tr_
@@ -121,42 +136,54 @@
          ]
        ]
 
-     display_exists = 
+     display_exists _ = 
        div [ class_ "alert" ]
        [ text "previously saved "
        , span [ class_ "link f7 dib gray pr3" , title (maybe bm.time snd mmoment) ]
          [ text (maybe " " fst mmoment) ]
        , div [ class_ "edit_links dib ml1" ]
          [ div [ class_ "delete_link di" ]
-           [ button ([ type_ ButtonButton, onClick (HE.input_ (BDeleteAsk true)), class_ "delete" ] <> guard s.deleteAsk [ attr "hidden" "hidden" ]) [ text "delete" ]
+           [ button ([ type_ ButtonButton, onClick \_ -> BDeleteAsk true, class_ "delete" ] <> guard s.deleteAsk [ attr "hidden" "hidden" ]) [ text "delete" ]
            , span ([ class_ "confirm red" ] <> guard (not s.deleteAsk) [ attr "hidden" "hidden" ])
-             [ button [ type_ ButtonButton, onClick (HE.input_ (BDeleteAsk false))] [ text "cancel / " ]
-             , button [ type_ ButtonButton, onClick (HE.input_ BDestroy), class_ "red" ] [ text "destroy" ]
+             [ button [ type_ ButtonButton, onClick \_ -> BDeleteAsk false] [ text "cancel / " ]
+             , button [ type_ ButtonButton, onClick \_ -> BDestroy, class_ "red" ] [ text "destroy" ]
              ] 
            ]
          ]
        ]
 
-     display_destroyed = p [ class_ "red"] [text "you killed this bookmark"]
+     alert_notification alert_text _ = 
+       div [ class_ "alert alert-err" ] [ text alert_text ]
 
-     editField :: forall a. (a -> EditField) -> a -> Maybe (BQuery Unit)
-     editField f = HE.input BEditField <<< f
+     display_destroyed _ = p [ class_ "red"] [text "you killed this bookmark"]
+
+     editField :: forall a. (a -> EditField) -> a -> BAction
+     editField f = BEditField <<< f
      mmoment = mmoment8601 bm.time
-     toTextarea =
-       drop 1
-         <<< foldMap (\x -> [br_, text x])
-         <<< S.split (Pattern "\n")
+     -- toTextarea =
+     --   drop 1
+     --     <<< foldMap (\x -> [br_, text x])
+     --     <<< S.split (Pattern "\n")
 
-  eval :: BQuery ~> H.ComponentDSL BState BQuery Unit Aff
-  eval (BDeleteAsk e next) = do
+  handleAction :: BAction -> H.HalogenM BState BAction () o Aff Unit
+  handleAction (BDeleteAsk e) = do
     H.modify_ (_ { deleteAsk = e })
-    pure next
-  eval (BDestroy next) = do
+
+  handleAction BLookupTitle = do
+    H.modify_ (_ { loading = true })
+    edit_bm <- H.gets _.edit_bm
+    mtitle <- H.liftAff $ lookupTitle edit_bm
+    case mtitle of
+      Just title' -> _edit_bm %= (_ { title = title' })
+      Nothing -> pure $ unit
+    H.modify_ (_ { loading = false })
+
+  handleAction (BDestroy) = do
     bid <- H.gets _.bm.bid
     void $ H.liftAff (destroy bid)
     H.modify_ (_ { destroyed = true })
-    pure next
-  eval (BEditField f next) = do
+
+  handleAction (BEditField f) = do
     _edit_bm %= case f of
       Eurl e -> _ { url = e }
       Etitle e -> _ { title = e }
@@ -164,16 +191,29 @@
       Etags e -> _ { tags = e }
       Eprivate e -> _ { private = e }
       Etoread e -> _ { toread = e }
-    pure next
-  eval (BEditSubmit e next) = do
-    H.liftEffect (preventDefault e)
+
+  handleAction (BEditSubmit e) = do
+    liftEffect (preventDefault e)
     edit_bm <- use _edit_bm 
-    void $ H.liftAff (editBookmark edit_bm)
-    _bm .= edit_bm
-    loc <- liftEffect _loc
-    win <- liftEffect window
-    qs <- liftEffect _curQuerystring
-    case _lookupQueryStringValue qs "next" of
-      Just n -> liftEffect (setHref n loc)
-      _ -> liftEffect (closeWindow win)
-    pure next
+    _apiError .= Nothing
+    H.liftAff (editBookmark edit_bm) >>= case _ of
+      Left affErr -> do
+        _apiError .= Just (printError affErr)
+        liftEffect $ log (printError affErr)
+      Right { status: StatusCode s } | s >= 200 && s < 300 -> do
+        _bm .= edit_bm
+        qs <- liftEffect $ _curQuerystring
+        doc <- liftEffect $ _doc
+        ref <- liftEffect $ referrer doc
+        loc <- liftEffect $ _loc
+        org <- liftEffect $ origin loc
+        case _lookupQueryStringValue qs "next" of
+          Just "closeWindow" -> liftEffect $ closeWindow =<< window
+          Just "back" -> liftEffect $
+            case stripPrefix (Pattern org) ref of
+              Just _ -> setHref ref loc
+              Nothing -> setHref org loc
+          _ -> liftEffect $ closeWindow =<< window
+      Right res -> do
+        _apiError .= Just (res.body)
+        liftEffect $ log (res.body)
diff --git a/purs/src/Component/BList.purs b/purs/src/Component/BList.purs
--- a/purs/src/Component/BList.purs
+++ b/purs/src/Component/BList.purs
@@ -1,48 +1,38 @@
-module Component.BList where
-
-import Prelude
-
-import Component.BMark (BMessage(..), BQuery, bmark)
-import Model (Bookmark, BookmarkId)
-
-import Data.Array (filter)
-import Data.Maybe (Maybe(..))
-import Effect.Aff (Aff)
-import Halogen as H
-import Halogen.HTML as HH
-import Halogen.HTML.Events as HE
-
-type BSlot = BookmarkId
-
-data LQuery a =
-  HandleBMessage BSlot BMessage a
-
-blist :: Array Bookmark -> H.Component HH.HTML LQuery Unit Void Aff
-blist st =
-  H.parentComponent
-    { initialState: const st
-    , render
-    , eval
-    , receiver: const Nothing
-    }
-  where
-
-  render :: Array Bookmark -> H.ParentHTML LQuery BQuery BSlot Aff
-  render bms =
-    HH.div_ (map renderBookmark bms)
-    where 
-      renderBookmark :: Bookmark -> H.ParentHTML LQuery BQuery BSlot Aff
-      renderBookmark b =
-        HH.slot
-          b.bid
-          (bmark b)
-          unit
-          (HE.input (HandleBMessage b.bid))
-
-  eval :: LQuery ~> H.ParentDSL (Array Bookmark) LQuery BQuery BSlot Void Aff
-  eval (HandleBMessage p BNotifyRemove next) = do
-    H.modify_ (removeBookmark p)
-    pure next
-    where
-      removeBookmark :: BookmarkId -> Array Bookmark -> Array Bookmark
-      removeBookmark bookmarkId = filter (\b -> b.bid /= bookmarkId)
+module Component.BList where
+
+import Prelude
+
+import Component.BMark (BMessage(..), BSlot, bmark)
+import Model (Bookmark, BookmarkId)
+
+import Data.Array (filter)
+import Effect.Aff (Aff)
+import Halogen as H
+import Halogen.HTML as HH
+import Type.Proxy (Proxy(..))
+
+data LAction =
+  HandleBMessage BookmarkId BMessage
+
+type ChildSlots =
+  ( bookmark :: BSlot Int
+  )
+
+_bookmark = Proxy :: Proxy "bookmark"
+
+blist :: forall q i o. Array Bookmark -> H.Component q i o Aff
+blist st =
+  H.mkComponent
+    { initialState: const st
+    , render
+    , eval: H.mkEval $ H.defaultEval { handleAction = handleAction }
+    }
+  where
+
+  render :: Array Bookmark -> H.ComponentHTML LAction ChildSlots Aff
+  render bms =
+    HH.div_ $ map (\b -> HH.slot _bookmark b.bid (bmark b) unit (HandleBMessage b.bid)) bms
+
+  handleAction :: LAction -> H.HalogenM (Array Bookmark) LAction ChildSlots o Aff Unit
+  handleAction (HandleBMessage bid BNotifyRemove) = do
+    H.modify_ (filter (\b -> b.bid /= bid))
diff --git a/purs/src/Component/BMark.purs b/purs/src/Component/BMark.purs
--- a/purs/src/Component/BMark.purs
+++ b/purs/src/Component/BMark.purs
@@ -1,247 +1,285 @@
-module Component.BMark where
-
-import Prelude hiding (div)
-
-import App (StarAction(..), destroy, editBookmark, markRead, toggleStar)
-import Data.Array (drop, foldMap)
-import Data.Lens (Lens', lens, use, (%=), (.=))
-import Data.Maybe (Maybe(..), fromMaybe, isJust, maybe)
-import Data.Monoid (guard)
-import Data.Nullable (toMaybe)
-import Data.String (null, split, take) as S
-import Data.String.Pattern (Pattern(..))
-import Data.Tuple (fst, snd)
-import Effect.Aff (Aff)
-import Globals (app', mmoment8601)
-import Halogen as H
-import Halogen.HTML (HTML, a, br_, button, div, div_, form, input, label, span, text, textarea)
-import Halogen.HTML.Events (onSubmit, onValueChange, onChecked, onClick)
-import Halogen.HTML.Events as HE
-import Halogen.HTML.Properties (ButtonType(..), InputType(..), autocomplete, checked, for, href, id_, name, required, rows, target, title, type_, value)
-import Model (Bookmark)
-import Util (class_, attr, fromNullableStr)
-import Web.Event.Event (Event, preventDefault)
-
--- | UI Events
-data BQuery a
-  = BStar Boolean a
-  | BDeleteAsk Boolean a
-  | BDestroy a
-  | BEdit Boolean a
-  | BEditField EditField a
-  | BEditSubmit Event a
-  | BMarkRead a
-
--- | FormField Edits
-data EditField
-  = Eurl String
-  | Etitle String
-  | Edescription String
-  | Etags String
-  | Eprivate Boolean
-  | Etoread Boolean
-
--- | Messages to parent
-data BMessage
-  = BNotifyRemove
-
-type BState =
-  { bm :: Bookmark
-  , edit_bm :: Bookmark
-  , deleteAsk:: Boolean
-  , edit :: Boolean
-  }
-
-_bm :: Lens' BState Bookmark
-_bm = lens _.bm (_ { bm = _ })
-
-_edit_bm :: Lens' BState Bookmark
-_edit_bm = lens _.edit_bm (_ { edit_bm = _ })
-
-_edit :: Lens' BState Boolean
-_edit = lens _.edit (_ { edit = _ })
-
-bmark :: Bookmark -> H.Component HTML BQuery Unit BMessage Aff
-bmark b' =
-  H.component
-    { initialState: const (mkState b')
-    , render
-    , eval
-    , receiver: const Nothing
-    }
-  where
-  app = app' unit
-
-  mkState b =
-    { bm: b
-    , edit_bm: b
-    , deleteAsk: false
-    , edit: false
-    }
-
-  render :: BState -> H.ComponentHTML BQuery
-  render s@{ bm, edit_bm } =
-    div [ id_ (show bm.bid) , class_ ("bookmark w-100 mw7 pa1 mb3" <> guard bm.private " private")] $
-      star <>
-      if s.edit
-        then display_edit
-        else display
-    where
-
-     star =
-       guard app.dat.isowner
-         [ div [ class_ ("star fl pointer" <> guard bm.selected " selected") ]
-           [ button [ class_ "moon-gray", onClick (HE.input_ (BStar (not bm.selected))) ] [ text "✭" ] ]
-         ]
-
-     display =
-       [ div [ class_ "display" ] $
-         [ a [ href bm.url, target "_blank", class_ ("link f5 lh-title" <> guard bm.toread " unread")]
-           [ text $ if S.null bm.title then "[no title]" else bm.title ]
-         , br_
-         , a [ href bm.url , class_ "link f7 gray hover-blue" ] [ text bm.url ]
-         , a [ href (fromMaybe ("http://archive.is/" <> bm.url) (toMaybe bm.archiveUrl))
-             , class_ ("link f7 gray hover-blue ml2" <> (guard (isJust (toMaybe bm.archiveUrl)) " green"))
-             , target "_blank", title "archive link"]
-             [ if isJust (toMaybe bm.archiveUrl) then text "☑" else text "☐" ]
-         , br_
-           -- 
-         , div [ class_ "description mt1 mid-gray" ] (toTextarea bm.description)
-         , div [ class_ "tags" ] $
-             guard (not (S.null bm.tags))
-               map (\tag -> a [ class_ ("link tag mr1" <> guard (S.take 1 tag == ".") " private")
-                            , href (linkToFilterTag tag) ]
-                            [ text tag ])
-               (S.split (Pattern " ") bm.tags)
-         , a [ class_ "link f7 dib gray w4", title (maybe bm.time snd mmoment) , href (linkToFilterSingle bm.slug) ]
-           [ text (maybe " " fst mmoment) ]
-         ]
-         <> links
-       ]
-
-     display_edit =
-       [ div [ class_ "edit_bookmark_form pa2 pt0 bg-white" ] $
-         [ form [ onSubmit (HE.input BEditSubmit) ]
-           [ div_ [ text "url" ]
-           , input [ type_ InputUrl , class_ "url w-100 mb2 pt1 f7 edit_form_input" , required true , name "url"
-                   , value (edit_bm.url) , onValueChange (editField Eurl) ]
-           , br_
-           , div_ [ text "title" ]
-           , input [ type_ InputText , class_ "title w-100 mb2 pt1 f7 edit_form_input" , name "title"
-                   , value (edit_bm.title) , onValueChange (editField Etitle) ]
-           , br_
-           , div_ [ text "description" ]
-           , textarea [ class_ "description w-100 mb1 pt1 f7 edit_form_input" , name "description", rows 5
-                      , value (edit_bm.description) , onValueChange (editField Edescription) ]
-           , br_
-           , div [ id_ "tags_input_box"]
-             [ div_ [ text "tags" ]
-               , input [ type_ InputText , class_ "tags w-100 mb1 pt1 f7 edit_form_input" , name "tags"
-                       , autocomplete false, attr "autocapitalize" "off"
-                       , value (edit_bm.tags) , onValueChange (editField Etags) ]
-               , br_
-             ]
-           , div [ class_ "edit_form_checkboxes mv3"]
-             [ input [ type_ InputCheckbox , class_ "private pointer" , id_ "edit_private", name "private"
-                     , checked (edit_bm.private) , onChecked (editField Eprivate) ]
-             , text " "
-             , label [ for "edit_private" , class_ "mr2" ] [ text "private" ]
-             , text " "
-             , input [ type_ InputCheckbox , class_ "toread pointer" , id_ "edit_toread", name "toread"
-                     , checked (edit_bm.toread) , onChecked (editField Etoread) ]
-             , text " "
-             , label [ for "edit_toread" ] [ text "to-read" ]
-             , br_
-             ]
-           , input [ type_ InputSubmit , class_ "mr1 pv1 ph2 dark-gray ba b--moon-gray bg-near-white pointer rdim" , value "save" ]
-           , text " "
-           , input [ type_ InputReset , class_ "pv1 ph2 dark-gray ba b--moon-gray bg-near-white pointer rdim" , value "cancel"
-                   , onClick (HE.input_ (BEdit false)) ]
-           ]
-         ]
-       ]
-
-     links =
-       guard app.dat.isowner
-         [ div [ class_ "edit_links di" ]
-           [ button [ type_ ButtonButton, onClick (HE.input_ (BEdit true)), class_ "edit light-silver hover-blue" ] [ text "edit  " ]
-           , div [ class_ "delete_link di" ]
-             [ button [ type_ ButtonButton, onClick (HE.input_ (BDeleteAsk true)), class_ ("delete light-silver hover-blue" <> guard s.deleteAsk " dn") ] [ text "delete" ]
-             , span ([ class_ ("confirm red" <> guard (not s.deleteAsk) " dn") ] )
-               [ button [ type_ ButtonButton, onClick (HE.input_ (BDeleteAsk false))] [ text "cancel / " ]
-               , button [ type_ ButtonButton, onClick (HE.input_ BDestroy), class_ "red" ] [ text "destroy" ]
-               ] 
-             ]
-           ]
-         , div [ class_ "read di" ] $
-             guard bm.toread
-             [ text "  "
-             , button [ onClick (HE.input_ BMarkRead), class_ "mark_read" ] [ text "mark as read"]
-             ]
-         ]
-
-     editField :: forall a. (a -> EditField) -> a -> Maybe (BQuery Unit)
-     editField f = HE.input BEditField <<< f
-     linkToFilterSingle slug = fromNullableStr app.userR <> "/b:" <> slug
-     linkToFilterTag tag = fromNullableStr app.userR <> "/t:" <> tag
-     mmoment = mmoment8601 bm.time
-     toTextarea input =
-       S.split (Pattern "\n") input
-       # foldMap (\x -> [br_, text x])
-       # drop 1
-
-  eval :: BQuery ~> H.ComponentDSL BState BQuery BMessage Aff
-
-  -- | Star
-  eval (BStar e next) = do
-    bm <- use _bm
-    H.liftAff (toggleStar bm.bid (if e then Star else UnStar))
-    _bm %= _ { selected = e }
-    _edit_bm %= _ { selected = e }
-    pure next
-
-  -- | Delete
-  eval (BDeleteAsk e next) = do
-    H.modify_ (_ { deleteAsk = e })
-    pure next
-
-  -- | Destroy
-  eval (BDestroy next) = do
-    bm <- use _bm
-    void $ H.liftAff (destroy bm.bid)
-    H.raise BNotifyRemove
-    pure next
-
-  -- | Mark Read
-  eval (BMarkRead next) = do
-    bm <- use _bm
-    void (H.liftAff (markRead bm.bid))
-    _bm %= _ { toread = false }
-    pure next
-
-  -- | Start/Stop Editing
-  eval (BEdit e next) = do
-    bm <- use _bm
-    _edit_bm .= bm
-    _edit .= e
-    pure next
-
-  -- | Update Form Field 
-  eval (BEditField f next) = do
-    _edit_bm %= case f of
-      Eurl e -> _ { url = e }
-      Etitle e -> _ { title = e }
-      Edescription e -> _ { description = e }
-      Etags e -> _ { tags = e }
-      Eprivate e -> _ { private = e }
-      Etoread e -> _ { toread = e }
-    pure next
-
-  -- | Submit
-  eval (BEditSubmit e next) = do
-    H.liftEffect (preventDefault e)
-    edit_bm <- use _edit_bm
-    void $ H.liftAff (editBookmark edit_bm)
-    _bm .= edit_bm
-    _edit .= false
-    pure next
+module Component.BMark where
+
+import Prelude hiding (div)
+
+import Affjax (printError)
+import Affjax.StatusCode (StatusCode(..))
+import App (StarAction(..), destroy, editBookmark, markRead, toggleStar, lookupTitle)
+import Component.Markdown as Markdown
+import Data.Const (Const)
+import Data.Either (Either(..))
+import Data.Lens (Lens', lens, use, (%=), (.=))
+import Data.Maybe (Maybe(..), fromMaybe, isJust)
+import Data.Monoid (guard)
+import Data.Nullable (toMaybe)
+import Data.String (null, split, take, replaceAll) as S
+import Data.String.Pattern (Pattern(..), Replacement(..))
+import Effect.Aff (Aff)
+import Effect.Class (liftEffect)
+import Effect.Class.Console (log)
+import Globals (app', setFocus, toLocaleDateString)
+import Halogen as H
+import Halogen.HTML (a, br_, button, div, div_, form, input, label, span, text, textarea)
+import Halogen.HTML as HH
+import Halogen.HTML.Events (onSubmit, onValueChange, onChecked, onClick)
+import Halogen.HTML.Properties (ButtonType(..), InputType(..), autocomplete, checked, disabled, for, href, id, name, required, rows, target, title, type_, value)
+import Model (Bookmark)
+import Type.Proxy (Proxy(..))
+import Util (attr, class_, encodeTag, fromNullableStr, ifElseH, whenA, whenH)
+import Web.Event.Event (Event, preventDefault)
+
+-- | UI Events
+data BAction
+  = BStar Boolean
+  | BDeleteAsk Boolean
+  | BLookupTitle
+  | BDestroy
+  | BEdit Boolean
+  | BEditField EditField
+  | BEditSubmit Event
+  | BMarkRead
+
+-- | FormField Edits
+data EditField
+  = Eurl String
+  | Etitle String
+  | Edescription String
+  | Etags String
+  | Eprivate Boolean
+  | Etoread Boolean
+
+-- | Messages to parent
+data BMessage
+  = BNotifyRemove
+
+type BSlot = H.Slot (Const Void) BMessage
+
+type BState =
+  { bm :: Bookmark
+  , edit_bm :: Bookmark
+  , deleteAsk:: Boolean
+  , edit :: Boolean
+  , loading :: Boolean
+  , apiError :: Maybe String
+  }
+
+_bm :: Lens' BState Bookmark
+_bm = lens _.bm (_ { bm = _ })
+
+_edit_bm :: Lens' BState Bookmark
+_edit_bm = lens _.edit_bm (_ { edit_bm = _ })
+
+_edit :: Lens' BState Boolean
+_edit = lens _.edit (_ { edit = _ })
+
+_apiError :: Lens' BState (Maybe String)
+_apiError = lens _.apiError (_ { apiError = _ })
+
+_markdown = Proxy :: Proxy "markdown"
+
+type ChildSlots =
+  ( markdown :: Markdown.Slot Unit
+  )
+
+bmark :: forall q i. Bookmark -> H.Component q i BMessage Aff
+bmark b' =
+  H.mkComponent
+    { initialState: const (mkState b')
+    , render
+    , eval: H.mkEval $ H.defaultEval { handleAction = handleAction }
+    }
+  where
+  app = app' unit
+
+  mkState b =
+    { bm: b
+    , edit_bm: b
+    , deleteAsk: false
+    , edit: false
+    , loading: false
+    , apiError: Nothing
+    }
+
+  render :: BState -> H.ComponentHTML BAction ChildSlots Aff
+  render s@{ bm, edit_bm, apiError } =
+    div [ id (show bm.bid) , class_ ("bookmark w-100 mw7 pa1 mb3" <> guard bm.private " private")] $
+      [ whenH app.dat.isowner
+          star
+      , ifElseH s.edit
+          display_edit
+          display
+      ]
+
+    where
+
+     star _ =
+       div [ class_ ("star fl pointer" <> guard bm.selected " selected") ]
+       [ button [ class_ "moon-gray", onClick \_ -> BStar (not bm.selected) ] [ text "✭" ] ]
+
+     display _ =
+        div [ class_ "display" ] $
+        [ a [ href bm.url, target "_blank", class_ ("link f5 lh-title" <> guard bm.toread " unread")]
+          [ text $ if S.null bm.title then "[no title]" else bm.title ]
+        , br_
+        , a [ href bm.url , class_ "link f7 gray hover-blue" ] [ text bm.url ]
+        , a [ href (fromMaybe ("http://archive.is/" <> bm.url) (toMaybe bm.archiveUrl))
+            , class_ ("link f7 gray hover-blue ml2" <> (guard (isJust (toMaybe bm.archiveUrl)) " green"))
+            , target "_blank", title "archive link"]
+            [ if isJust (toMaybe bm.archiveUrl) then text "☑" else text "☐" ]
+        , br_
+        , div [ class_ "description mt1 mid-gray" ] [ HH.slot _markdown unit Markdown.component bm.description absurd ]
+        , div [ class_ "tags" ] $
+              whenA (not (S.null bm.tags)) $ \_ ->
+                map (\tag -> a [ class_ ("link tag mr1" <> guard (S.take 1 tag == ".") " private")
+                             , href (linkToFilterTag tag) ]
+                             [ text tag ])
+                (S.split (Pattern " ") bm.tags)
+              
+        , a [ class_ "link f7 dib gray w4", href (linkToFilterSingle bm.slug), title shdatetime ]
+          [ text shdate ]
+
+        -- links
+        , whenH app.dat.isowner $ \_ ->
+            div [ class_ "edit_links di" ]
+            [ button [ type_ ButtonButton, onClick \_ -> BEdit true, class_ "edit light-silver hover-blue" ] [ text "edit  " ]
+            , div [ class_ "delete_link di" ]
+              [ button [ type_ ButtonButton, onClick \_ -> BDeleteAsk true, class_ ("delete light-silver hover-blue" <> guard s.deleteAsk " dn") ] [ text "delete" ]
+              , span ([ class_ ("confirm red" <> guard (not s.deleteAsk) " dn") ] )
+                [ button [ type_ ButtonButton, onClick \_ -> BDeleteAsk false] [ text "cancel / " ]
+                , button [ type_ ButtonButton, onClick \_ -> BDestroy, class_ "red" ] [ text "destroy" ]
+                ] 
+              ]
+            ]
+        , whenH app.dat.isowner $ \_ ->
+            div [ class_ "read di" ] $
+              guard bm.toread
+              [ text "  "
+              , button [ onClick \_ -> BMarkRead, class_ "mark_read" ] [ text "mark as read"]
+              ]
+        ]
+       
+
+     display_edit _ =
+       div [ class_ "edit_bookmark_form pa2 pt0 bg-white" ] $
+       [ whenH (isJust apiError)
+              (alert_notification (fromMaybe "" apiError))
+       , form [ onSubmit BEditSubmit ]
+         [ div_ [ text "url" ]
+         , input [ type_ InputUrl , class_ "url w-100 mb2 pt1 edit_form_input" , required true , name "url"
+                 , value (edit_bm.url) , onValueChange (editField Eurl) ]
+         , div_ [ text "title" ]
+         , div [class_ "flex"]
+               [input [ type_ InputText , class_ "title w-100 mb2 pt1 edit_form_input" , name "title"
+                      , value (edit_bm.title) , onValueChange (editField Etitle) ]
+               , button [ disabled s.loading, type_ ButtonButton, onClick \_ -> BLookupTitle, class_ ("ml1 pa1 mb2 dark-gray ba b--moon-gray bg-near-white pointer rdim f7 " <> guard s.loading "bg-light-silver") ] [ text "fetch" ]
+               ]
+         , div_ [ text "description" ]
+         , textarea [ class_ "description w-100 mb1 pt1 edit_form_input" , name "description", rows 5
+                    , value (edit_bm.description) , onValueChange (editField Edescription) ]
+         , div [ id "tags_input_box"]
+           [ div_ [ text "tags" ]
+             , input [ id (tagid edit_bm), type_ InputText , class_ "tags w-100 mb1 pt1 edit_form_input" , name "tags"
+                     , autocomplete false, attr "autocapitalize" "off"
+                     , value (edit_bm.tags) , onValueChange (editField Etags) ]
+           ]
+         , div [ class_ "edit_form_checkboxes mv3"]
+           [ input [ type_ InputCheckbox , class_ "private pointer" , id "edit_private", name "private"
+                   , checked (edit_bm.private) , onChecked (editField Eprivate) ]
+           , text " "
+           , label [ for "edit_private" , class_ "mr2" ] [ text "private" ]
+           , text " "
+           , input [ type_ InputCheckbox , class_ "toread pointer" , id "edit_toread", name "toread"
+                   , checked (edit_bm.toread) , onChecked (editField Etoread) ]
+           , text " "
+           , label [ for "edit_toread" ] [ text "to-read" ]
+           ]
+         , input [ type_ InputSubmit , class_ "mr1 pv1 ph2 dark-gray ba b--moon-gray bg-near-white pointer rdim" , value "save" ]
+         , text " "
+         , input [ type_ InputReset , class_ "pv1 ph2 dark-gray ba b--moon-gray bg-near-white pointer rdim" , value "cancel"
+                 , onClick \_ -> BEdit false ]
+         ]
+       ]
+       
+     alert_notification alert_text _ = 
+       div [ class_ "alert alert-err" ] [ text alert_text ]
+
+     editField :: forall a. (a -> EditField) -> a -> BAction
+     editField f = BEditField <<< f
+     linkToFilterSingle slug = fromNullableStr app.userR <> "/b:" <> slug
+     linkToFilterTag tag = fromNullableStr app.userR <> "/t:" <> encodeTag tag 
+     shdate = toLocaleDateString bm.time 
+     shdatetime = S.take 16 bm.time `append` "Z"
+
+  tagid bm = show bm.bid <> "_tags"
+
+  handleAction :: BAction -> H.HalogenM BState BAction ChildSlots BMessage Aff Unit
+
+  -- | Star
+  handleAction (BStar e) = do
+    bm <- use _bm
+    H.liftAff (toggleStar bm.bid (if e then Star else UnStar))
+    _bm %= _ { selected = e }
+    _edit_bm %= _ { selected = e }
+
+  -- | Delete
+  handleAction (BDeleteAsk e) = do
+    H.modify_ (_ { deleteAsk = e })
+
+  -- | Destroy
+  handleAction (BDestroy) = do
+    bm <- use _bm
+    void $ H.liftAff (destroy bm.bid)
+    H.raise BNotifyRemove
+
+  -- | Mark Read
+  handleAction (BMarkRead) = do
+    bm <- use _bm
+    void (H.liftAff (markRead bm.bid))
+    _bm %= _ { toread = false }
+
+  -- | Start/Stop Editing
+  handleAction (BEdit e) = do
+    bm <- use _bm
+    _edit_bm .= bm
+    _edit .= e
+    _apiError .= Nothing
+    H.liftEffect $
+      when e
+        (setFocus (tagid bm)) 
+
+  -- | Update Form Field 
+  handleAction (BEditField f) = do
+    _edit_bm %= case f of
+      Eurl e -> _ { url = e }
+      Etitle e -> _ { title = e }
+      Edescription e -> _ { description = e }
+      Etags e -> _ { tags = e }
+      Eprivate e -> _ { private = e }
+      Etoread e -> _ { toread = e }
+
+  -- | Lookup Title
+  handleAction BLookupTitle = do
+    H.modify_ (_ { loading = true })
+    edit_bm <- H.gets _.edit_bm
+    mtitle <- H.liftAff $ lookupTitle edit_bm
+    case mtitle of
+      Just title' -> _edit_bm %= (_ { title = title' })
+      Nothing -> pure $ unit
+    H.modify_ (_ { loading = false })
+
+  -- | Submit
+  handleAction (BEditSubmit e) = do
+    H.liftEffect (preventDefault e)
+    edit_bm <- use _edit_bm
+    _apiError .= Nothing
+    let edit_bm' = edit_bm { tags = S.replaceAll (Pattern ",") (Replacement " ") edit_bm.tags }
+    H.liftAff (editBookmark edit_bm') >>= case _ of
+      Left affErr -> do
+        _apiError .= Just (printError affErr)
+        liftEffect $ log (printError affErr)
+      Right { status: StatusCode s } | s >= 200 && s < 300 -> do
+        _bm .= edit_bm'
+        _edit .= false
+      Right res -> do
+        _apiError .= Just (res.body)
+        liftEffect $ log (res.body)
diff --git a/purs/src/Component/Markdown.purs b/purs/src/Component/Markdown.purs
--- a/purs/src/Component/Markdown.purs
+++ b/purs/src/Component/Markdown.purs
@@ -1,15 +1,13 @@
-module Component.Markdown (component, MInput, MQuery, MOutput, module RHExt) where
+module Component.Markdown (component, Slot) where
 
 import Component.RawHtml as RH
-import Component.RawHtml (Query(Receive)) as RHExt
+import Data.Const (Const)
 import Effect.Aff (Aff)
 import Foreign.Marked (marked)
 import Halogen as H
-import Halogen.HTML as HH
+import Prelude (Void)
 
-type MInput = String
-type MQuery = RH.Query String
-type MOutput = RH.Output
+type Slot = H.Slot (Const Void) Void
 
-component :: H.Component HH.HTML MQuery MInput MOutput Aff
+component :: forall q o. H.Component q String o Aff
 component = RH.mkComponent marked
diff --git a/purs/src/Component/NList.purs b/purs/src/Component/NList.purs
--- a/purs/src/Component/NList.purs
+++ b/purs/src/Component/NList.purs
@@ -12,30 +12,27 @@
 import Halogen as H
 import Halogen.HTML (a, br_, div, text)
 import Halogen.HTML as HH
-import Halogen.HTML.Properties (href, id_, title)
+import Halogen.HTML.Properties (href, id, title)
 import Model (Note, NoteSlug)
 import Util (class_, fromNullableStr)
 
-data NLQuery a
-  = NLNop a
-
-type NLSlot = NoteSlug
+data NLAction
+  = NLNop
 
 type NLState =
   { notes :: Array Note
-  , cur :: Maybe NLSlot
+  , cur :: Maybe NoteSlug
   , deleteAsk:: Boolean
   , edit :: Boolean
   }
 
 
-nlist :: Array Note -> H.Component HH.HTML NLQuery Unit Void Aff
+nlist :: forall q i o. Array Note -> H.Component q i o Aff
 nlist st' =
-  H.component
+  H.mkComponent
     { initialState: const (mkState st')
     , render
-    , eval
-    , receiver: const Nothing
+    , eval: H.mkEval $ H.defaultEval { handleAction = handleAction }
     }
   where
   app = app' unit
@@ -47,29 +44,32 @@
     , edit: false
     }
 
-  render :: NLState -> H.ComponentHTML NLQuery
-  render st@{ notes } =
+  render :: NLState -> H.ComponentHTML NLAction () Aff
+  render { notes } =
     HH.div_ (map renderNote notes)
     where
-      renderNote :: Note -> H.ComponentHTML NLQuery
-      renderNote bm =
-        div [ id_ (show bm.id) , class_ ("note w-100 mw7 pa1 mb2")] $
+      renderNote note =
+        div [ id (show note.id)
+            , class_ ("note w-100 mw7 pa1 mb2"
+                     <> if note.shared then "" else " private")] $
            [ div [ class_ "display" ] $
-             [ a [ href (linkToFilterSingle bm.slug), class_ ("link f5 lh-title")]
-               [ text $ if S.null bm.title then "[no title]" else bm.title ]
+             [ a [ href (linkToFilterSingle note.slug), class_ ("link f5 lh-title")]
+               [ text $ if S.null note.title then "[no title]" else note.title ]
              , br_
-             , div [ class_ "description mt1 mid-gray" ] (toTextarea (S.take 200 bm.text))
-             , a [ class_ "link f7 dib gray w4", title (maybe bm.created snd (mmoment bm)) , href (linkToFilterSingle bm.slug) ]
-               [ text (maybe " " fst (mmoment bm)) ]
+             , div [ class_ "description mt1 mid-gray" ] (toTextarea (S.take 200 note.text))
+             ,  a [ class_ "link f7 dib gray w4"
+                  , title (maybe note.created snd (mmoment note))
+                  , href (linkToFilterSingle note.slug)]
+                [text (maybe " " fst (mmoment note))]
              ]
            ]
 
-  mmoment bm = mmoment8601 bm.created
+  mmoment note = mmoment8601 note.created
   linkToFilterSingle slug = fromNullableStr app.userR <> "/notes/" <> slug
   toTextarea input =
     S.split (Pattern "\n") input
     # foldMap (\x -> [br_, text x])
     # drop 1
 
-  eval :: NLQuery ~> H.ComponentDSL NLState NLQuery Void Aff
-  eval (NLNop next) = pure next
+  handleAction :: NLAction -> H.HalogenM NLState NLAction () o Aff Unit
+  handleAction NLNop = pure unit
diff --git a/purs/src/Component/NNote.purs b/purs/src/Component/NNote.purs
--- a/purs/src/Component/NNote.purs
+++ b/purs/src/Component/NNote.purs
@@ -2,37 +2,44 @@
 
 import Prelude hiding (div)
 
+import Affjax (printError)
+import Affjax.StatusCode (StatusCode(..))
 import App (destroyNote, editNote)
 import Component.Markdown as Markdown
 import Data.Array (drop, foldMap)
 import Data.Either (Either(..))
+import Data.Foldable (for_)
 import Data.Lens (Lens', lens, use, (%=), (.=))
-import Data.Maybe (Maybe(..), maybe)
+import Data.Maybe (Maybe(..), fromMaybe, isJust, maybe)
 import Data.Monoid (guard)
 import Data.String (null, split) as S
+import Data.String (null, stripPrefix)
 import Data.String.Pattern (Pattern(..))
 import Data.Tuple (fst, snd)
 import Effect.Aff (Aff)
 import Effect.Class (liftEffect)
-import Globals (app', mmoment8601)
+import Effect.Console (log)
+import Globals (app', mmoment8601, setFocus, closeWindow)
 import Halogen as H
 import Halogen.HTML (br_, button, div, form, input, label, p, span, text, textarea)
 import Halogen.HTML as HH
 import Halogen.HTML.Events (onChecked, onClick, onSubmit, onValueChange)
-import Halogen.HTML.Events as HE
-import Halogen.HTML.Properties (ButtonType(..), InputType(..), checked, for, id_, name, rows, title, type_, value)
+import Halogen.HTML.Properties (ButtonType(..), InputType(..), autofocus, checked, for, id, name, rows, title, type_, value)
 import Model (Note)
-import Util (_loc, class_, fromNullableStr)
+import Type.Proxy (Proxy(..))
+import Util (_curQuerystring, _doc, _loc, _lookupQueryStringValue, class_, fromNullableStr, ifElseH, whenH)
 import Web.Event.Event (Event, preventDefault)
-import Web.HTML.Location (setHref)
+import Web.HTML (window)
+import Web.HTML.HTMLDocument (referrer)
+import Web.HTML.Location (origin, setHref)
 
-data NQuery a
-  = NNop a
-  | NEditField EditField a
-  | NEditSubmit Event a
-  | NEdit Boolean a
-  | NDeleteAsk Boolean a
-  | NDestroy a
+data NAction
+  = NNop
+  | NEditField EditField
+  | NEditSubmit Event
+  | NEdit Boolean
+  | NDeleteAsk Boolean
+  | NDestroy
 
 type NState =
   { note :: Note
@@ -40,6 +47,7 @@
   , deleteAsk :: Boolean
   , edit :: Boolean
   , destroyed :: Boolean
+  , apiError :: Maybe String
   }
 
 _note :: Lens' NState Note
@@ -51,21 +59,28 @@
 _edit :: Lens' NState Boolean
 _edit = lens _.edit (_ { edit = _ })
 
+_apiError :: Lens' NState (Maybe String)
+_apiError = lens _.apiError (_ { apiError = _ })
+
 -- | FormField Edits
 data EditField
   = Etitle String
   | Etext String
   | EisMarkdown Boolean
+  | Eshared Boolean
 
-type NChildQuery = Markdown.MQuery
+_markdown = Proxy :: Proxy "markdown"
 
-nnote :: Note -> H.Component HH.HTML NQuery Unit Void Aff
+type ChildSlots =
+  ( markdown :: Markdown.Slot Unit
+  )
+
+nnote :: forall q i o. Note -> H.Component q i o Aff
 nnote st' =
-  H.parentComponent
+  H.mkComponent
     { initialState: const (mkState st')
     , render
-    , eval
-    , receiver: const Nothing
+    , eval: H.mkEval $ H.defaultEval { handleAction = handleAction }
     }
   where
   app = app' unit
@@ -76,122 +91,160 @@
     , deleteAsk: false
     , edit: note'.id <= 0
     , destroyed: false
+    , apiError: Nothing
     }
 
-  render :: NState -> H.ParentHTML NQuery NChildQuery Unit Aff
-  render st@{ note, edit_note } =
-    if st.destroyed
-       then display_destroyed
-       else
-        if st.edit
-          then renderNote_edit
-          else renderNote
+  render :: NState -> H.ComponentHTML NAction ChildSlots Aff
+  render st@{ note, edit_note, apiError } =
+    ifElseH st.destroyed
+       display_destroyed
+       (const (ifElseH st.edit
+                 renderNote_edit
+                 renderNote))
     where
 
-      renderNote =
-        div [ id_ (show note.id) , class_ ("note w-100 mw7 pa1 mb2")] $
+      renderNote _ =
+        div [ id (show note.id) , class_ ("note w-100 mw7 pa1 mb2")] $
            [ div [ class_ "display" ] $
              [ div [ class_ ("link f5 lh-title")]
                [ text $ if S.null note.title then "[no title]" else note.title ]
              , br_
              , if note.isMarkdown
-               then div [ class_ "description mt1" ] [ HH.slot unit Markdown.component note.text absurd ]
+               then div [ class_ "description mt1" ] [ HH.slot _markdown unit Markdown.component note.text absurd ]
                else div [ class_ "description mt1 mid-gray" ] (toTextarea note.text)
-             , div [ class_ "link f7 dib gray w4", title (maybe note.created snd (mmoment note)) ]
-               [ text (maybe " " fst (mmoment note)) ]
-             ]
-           ]
-           <> -- | Render Action Links
-           [ div [ class_ "edit_links db mt3" ]
-             [ button [ type_ ButtonButton, onClick (HE.input_ (NEdit true)), class_ "edit light-silver hover-blue" ] [ text "edit  " ]
-             , div [ class_ "delete_link di" ]
-               [ button [ type_ ButtonButton, onClick (HE.input_ (NDeleteAsk true)), class_ ("delete light-silver hover-blue" <> guard st.deleteAsk " dn") ] [ text "delete" ]
-               , span ([ class_ ("confirm red" <> guard (not st.deleteAsk) " dn") ] )
-                 [ button [ type_ ButtonButton, onClick (HE.input_ (NDeleteAsk false))] [ text "cancel / " ]
-                 , button [ type_ ButtonButton, onClick (HE.input_ NDestroy), class_ "red" ] [ text "destroy" ]
-                 ] 
+             , div [ class_ "link f7 dib gray w4"]
+                 [ span [title (maybe note.created snd (mmoment note))]
+                   [text (maybe " " fst (mmoment note))]
+                 , text " - "
+                 , span [ class_ ("gray")]
+                   [ text $ if note.shared then "public" else "private" ]
                ]
              ]
+           , whenH app.dat.isowner $ \_ ->
+               div [ class_ "edit_links db mt3" ]
+                 [ button [ type_ ButtonButton, onClick \_ -> NEdit true, class_ "edit light-silver hover-blue" ] [ text "edit  " ]
+                 , div [ class_ "delete_link di" ]
+                   [ button [ type_ ButtonButton, onClick \_ -> NDeleteAsk true, class_ ("delete light-silver hover-blue" <> guard st.deleteAsk " dn") ] [ text "delete" ]
+                   , span ([ class_ ("confirm red" <> guard (not st.deleteAsk) " dn") ] )
+                     [ button [ type_ ButtonButton, onClick \_ -> NDeleteAsk false] [ text "cancel / " ]
+                     , button [ type_ ButtonButton, onClick \_ -> NDestroy, class_ "red" ] [ text "destroy" ]
+                     ]
+                   ]
+                 ]
+               
            ]
 
-      renderNote_edit =
-        form [ onSubmit (HE.input NEditSubmit) ]
-          [ p [ class_ "mt2 mb1"] [ text "title:" ]
-          , input [ type_ InputText , class_ "title w-100 mb1 pt1 f7 edit_form_input" , name "title"
-                  , value (edit_note.title) , onValueChange (editField Etitle)
+      renderNote_edit _ =
+        form [ onSubmit NEditSubmit ]
+          [ whenH (isJust apiError)
+              (alert_notification (fromMaybe "" apiError))
+          , p [ class_ "mt2 mb1"] [ text "title:" ]
+          , input [ type_ InputText , class_ "title w-100 mb1 pt1 edit_form_input" , name "title"
+                  , value (edit_note.title) , onValueChange (editField Etitle), autofocus (null edit_note.title)
             ]
           , br_
           , p [ class_ "mt2 mb1"] [ text "description:" ]
-          , textarea [ class_ "description w-100 mb1 pt1 f7 edit_form_input" , name "text", rows 30
+          , textarea [ id (notetextid edit_note), class_ "description w-100 mb1 pt1 edit_form_input" , name "text", rows 25
                      , value (edit_note.text) , onValueChange (editField Etext)
             ]
           , div [ class_ "edit_form_checkboxes mb3"]
-            [ input [ type_ InputCheckbox , class_ "is-markdown pointer" , id_ "edit_ismarkdown", name "ismarkdown"
+            [ input [ type_ InputCheckbox , class_ "is-markdown pointer" , id "edit_ismarkdown", name "ismarkdown"
                      , checked (edit_note.isMarkdown) , onChecked (editField EisMarkdown) ]
              , text " "
              , label [ for "edit_ismarkdown" , class_ "mr2" ] [ text "use markdown?" ]
              , br_
             ]
-          , input [ type_ InputSubmit , class_ "mr1 pv1 ph2 dark-gray ba b--moon-gray bg-near-white pointer rdim" , value "save" ]
+          , div [ class_ "edit_form_checkboxes mb3"]
+            [ input [ type_ InputCheckbox , class_ "is-markdown pointer" , id "edit_shared", name "shared"
+                    , checked (edit_note.shared) , onChecked (editField Eshared) ]
+            , text " "
+            , label [ for "edit_shared" , class_ "mr2" ] [ text "public?" ]
+            , br_
+            ]
+          , input [ type_ InputSubmit
+                  , class_ "mr1 pv1 ph2 dark-gray ba b--moon-gray bg-near-white pointer rdim"
+                  , value "save" ]
           , text " "
-          , input [ type_ InputReset , class_ "pv1 ph2 dark-gray ba b--moon-gray bg-near-white pointer rdim" , value "cancel"
-                  , onClick (HE.input_ (NEdit false))
+          , input [ type_ InputReset
+                  , class_ "pv1 ph2 dark-gray ba b--moon-gray bg-near-white pointer rdim"
+                  , value "cancel"
+                  , onClick \_ -> NEdit false
                   ]
           ]
 
-      display_destroyed = p [ class_ "red"] [text "you killed this note"]
+      display_destroyed _ = p [ class_ "red"] [text "you killed this note"]
 
+      alert_notification alert_text _ = 
+        div [ class_ "alert alert-err" ] [ text alert_text ]
+
       mmoment n = mmoment8601 n.created
-      editField :: forall a. (a -> EditField) -> a -> Maybe (NQuery Unit)
-      editField f = HE.input NEditField <<< f
+      editField :: forall a. (a -> EditField) -> a -> NAction
+      editField f = NEditField <<< f
       toTextarea input =
         S.split (Pattern "\n") input
         # foldMap (\x -> [br_, text x])
         # drop 1
 
+  notetextid note = show note.id <> "_text"
 
-  eval :: NQuery ~> H.ParentDSL NState NQuery NChildQuery Unit Void Aff
-  eval (NNop next) = pure next
+  handleAction :: NAction -> H.HalogenM NState NAction ChildSlots o Aff Unit
+  handleAction (NNop) = pure unit
 
   -- | EditField
-  eval (NEditField f next) = do
+  handleAction (NEditField f) = do
     _edit_note %= case f of
       Etitle e -> _ { title = e }
       Etext e -> _ { text = e }
       EisMarkdown e -> _ { isMarkdown = e }
-    pure next
+      Eshared e -> _ { shared = e }
 
   -- | Delete
-  eval (NDeleteAsk e next) = do
+  handleAction (NDeleteAsk e) = do
     H.modify_ (_ { deleteAsk = e })
-    pure next
 
   -- | Destroy
-  eval (NDestroy next) = do
+  handleAction (NDestroy) = do
     note <- use _note
     void $ H.liftAff (destroyNote note.id)
     H.modify_ (_ { destroyed = true })
-    pure next
 
   -- | Start/Stop Editing
-  eval (NEdit e next) = do
+  handleAction (NEdit e) = do
     note <- use _note
     _edit_note .= note
     _edit .= e
-    pure next
+    qs <- liftEffect _curQuerystring
+    case {e:e, q:_lookupQueryStringValue qs "next"} of
+      {e:false, q:Just "closeWindow"} -> liftEffect $ closeWindow =<< window
+      _ -> H.liftEffect $ whenM (pure e) (setFocus (notetextid note))
+    
 
   -- | Submit
-  eval (NEditSubmit e next) = do
+  handleAction (NEditSubmit e) = do
     H.liftEffect (preventDefault e)
     edit_note <- use _edit_note
-    res <- H.liftAff (editNote edit_note)
-    case res.body of
-      Left err -> pure next
-      Right r -> do
-        if (edit_note.id == 0)
-          then do
-            liftEffect (setHref (fromNullableStr app.noteR) =<< _loc)
-          else do
-            _note .= edit_note
-            _edit .= false
-        pure next
+    _apiError .= Nothing
+    H.liftAff (editNote edit_note) >>= case _ of
+      Left affErr -> do
+        _apiError .= Just (printError affErr)
+        liftEffect $ log (printError affErr)
+      Right { status: StatusCode s } | s >= 200 && s < 300 -> do
+        qs <- liftEffect _curQuerystring
+        doc <- liftEffect $ _doc
+        ref <- liftEffect $ referrer doc
+        loc <- liftEffect $ _loc
+        org <- liftEffect $ origin loc
+        case _lookupQueryStringValue qs "next" of
+          Just "closeWindow" -> liftEffect $ closeWindow =<< window
+          Just "back" -> liftEffect $
+            if isJust (stripPrefix (Pattern org) ref)
+              then setHref ref loc
+              else setHref org loc
+          _ -> if (edit_note.id == 0)
+                 then liftEffect $ setHref (fromNullableStr app.noteR) =<< _loc
+                 else do
+                   _note .= edit_note
+                   _edit .= false
+      Right res -> do
+        _apiError .= Just (res.body)
+        liftEffect $ log (res.body)
diff --git a/purs/src/Component/RawHtml.purs b/purs/src/Component/RawHtml.purs
--- a/purs/src/Component/RawHtml.purs
+++ b/purs/src/Component/RawHtml.purs
@@ -5,58 +5,60 @@
 import Data.Foldable (for_)
 import Data.Maybe (Maybe(..))
 import Effect (Effect)
-import Effect.Aff (Aff)
+import Effect.Aff (Aff, forkAff, makeAff)
+import Effect.Class (liftEffect)
 import Globals (RawHTML(..))
 import Halogen as H
 import Halogen.HTML as HH
-import Halogen.HTML.Events as HE
 import Halogen.HTML.Properties as HP
 import Web.HTML (HTMLElement)
 
 foreign import unsafeSetInnerHTML :: HTMLElement -> RawHTML -> Effect Unit
 
-data Query i a
-  = SetInnerHTML a
-  | Receive (Input i) a
+data Action i
+  = SetInnerHTML
+  | Receive (Input i)
 
+type Input :: forall k. k -> k
 type Input i = i
 
-type Output = Void
-
 type State i =
   { elRef :: H.RefLabel
   , inputval :: Input i
   }
 
-component :: H.Component HH.HTML (Query String) (Input String) Output Aff
+component :: forall q o. H.Component q (Input String) o Aff
 component = mkComponent RawHTML
 
-mkComponent :: forall i. (Input i -> RawHTML) -> H.Component HH.HTML (Query i) (Input i) Output Aff
-mkComponent toRawHTML = H.lifecycleComponent
-  { initialState: \inputval -> { elRef: H.RefLabel "inputval", inputval } 
-  , render
-  , eval
-  , receiver: HE.input Receive
-  , initializer: Just $ H.action SetInnerHTML
-  , finalizer: Nothing
-  }
+mkComponent :: forall q i o. (Input i -> RawHTML) -> H.Component q (Input i) o Aff
+mkComponent toRawHTML =
+  H.mkComponent
+    { initialState: \inputval -> { elRef: H.RefLabel "inputval", inputval } 
+    , render
+    , eval: H.mkEval (H.defaultEval { handleAction = handleAction
+                                    , initialize = Just SetInnerHTML
+                                    , receive = Just <<< Receive
+                                    })
+    }
   where
-  render :: (State i) -> H.ComponentHTML (Query i)
+  render :: forall m. (State i) -> H.ComponentHTML (Action i) () m
   render state = 
     HH.div 
       [ HP.ref state.elRef ] 
       []
 
-  eval :: (Query i) ~> H.ComponentDSL (State i) (Query i) Output Aff
-  eval = case _ of
-    SetInnerHTML a -> do
+  handleAction :: (Action i) -> H.HalogenM (State i) (Action i) () o Aff Unit
+  handleAction = case _ of
+    SetInnerHTML -> do
       { elRef } <- H.get
       mel <- H.getHTMLElementRef elRef
       for_ mel \el -> do  
         { inputval } <- H.get
-        H.liftEffect (unsafeSetInnerHTML el (toRawHTML inputval))
-      pure a
+        H.liftAff $ forkAff $ makeAff \_ -> do
+          liftEffect $ unsafeSetInnerHTML el (toRawHTML inputval)
+          mempty
+      pure unit
     
-    Receive inputval a -> do
+    Receive inputval -> do
       H.modify_ _ { inputval = inputval }
-      eval $ SetInnerHTML a
+      handleAction $ SetInnerHTML
diff --git a/purs/src/Component/TagCloud.purs b/purs/src/Component/TagCloud.purs
new file mode 100644
--- /dev/null
+++ b/purs/src/Component/TagCloud.purs
@@ -0,0 +1,173 @@
+module Component.TagCloud where
+
+import Prelude hiding (div)
+
+import App (getTagCloud, updateTagCloudMode)
+import Data.Array (concat, cons, delete, notElem, null, sortBy)
+import Data.Foldable (maximum, minimum)
+import Data.Int (toNumber)
+import Data.Lens (Lens', lens)
+import Data.Maybe (Maybe(..), fromMaybe)
+import Data.Monoid (guard)
+import Data.String (joinWith, toLower, null) as S
+import Data.String (toLower)
+import Data.Tuple (fst, uncurry)
+import Effect.Aff (Aff)
+import Foreign.Object (Object)
+import Foreign.Object (toUnfoldable, empty, values) as F
+import Globals (app')
+import Halogen (AttrName(..))
+import Halogen as H
+import Halogen.HTML (HTML, a, attr, button, div, text)
+import Halogen.HTML.Events (onClick)
+import Halogen.HTML.Properties (ButtonType(..), href, title, type_)
+import Math (log)
+import Model (TagCloud, TagCloudModeF(..), isExpanded, isRelated, setExpanded, tagCloudModeFromF)
+import Util (class_, encodeTag, fromNullableStr, ifElseA, whenH)
+
+data TAction
+  = TInitialize
+  | TExpanded Boolean
+  | TChangeMode TagCloudModeF
+
+type TState =
+  { mode :: TagCloudModeF
+  , tagcloud :: TagCloud
+  }
+
+_mode :: Lens' TState TagCloudModeF
+_mode = lens _.mode (_ { mode = _ })
+
+tagcloudcomponent :: forall q i o. TagCloudModeF -> H.Component q i o Aff
+tagcloudcomponent m' =
+  H.mkComponent
+    { initialState: const (mkState m')
+    , render
+    , eval: H.mkEval $ H.defaultEval { handleAction = handleAction
+                                     , initialize = Just TInitialize
+                                     }
+    }
+  where
+  app = app' unit
+  mkState m =
+    { mode: m
+    , tagcloud: F.empty
+    }
+
+  render :: TState -> H.ComponentHTML TAction () Aff
+  render { mode:TagCloudModeNone } =
+    div [class_ "tag_cloud" ] []
+  render { mode, tagcloud } =
+    div [class_ "tag_cloud mv3" ] 
+    [
+      div [class_ "tag_cloud_header mb2"] $
+          ifElseA (isRelated mode)
+            (\_ -> do --RELATED
+              [ button [ type_ ButtonButton, class_ ("pa1 f7 link hover-blue mr1 b")
+                       , onClick \_ -> TExpanded (not (isExpanded mode))
+                       ] [text "Related Tags"]
+              ]
+            ) 
+            (\_ -> do -- NOT RELATED
+              [ button [ type_ ButtonButton, class_ ("pa1 f7 link hover-blue mr1" <> guard (mode == modetop) " b")
+                       , title "show a cloud of your most-used tags"
+                       , onClick \_ -> TChangeMode modetop
+                       ] [text "Top Tags"]
+              , button [ type_ ButtonButton, class_ ("pa1 f7 link hover-blue ml2 " <> guard (mode == modelb1) " b") 
+                       , title "show all tags"
+                       , onClick \_ -> TChangeMode modelb1
+                       ] [text "all"] 
+              , text "‧"
+              , button [ type_ ButtonButton, class_ ("pa1 f7 link hover-blue" <> guard (mode == modelb2) " b") 
+                       , title "show tags with at least 2 bookmarks"
+                       , onClick \_ -> TChangeMode modelb2
+                       ] [text "2"]
+              , text "‧"
+              , button [ type_ ButtonButton, class_ ("pa1 f7 link hover-blue" <> guard (mode == modelb5) " b") 
+                       , title "show tags with at least 5 bookmarks"
+                       , onClick \_ -> TChangeMode modelb5
+                       ] [text "5"]
+              , text "‧"
+              , button [ type_ ButtonButton, class_ ("pa1 f7 link hover-blue" <> guard (mode == modelb10) " b") 
+                       , title "show tags with at least 10 bookmarks"
+                       , onClick \_ -> TChangeMode modelb10
+                       ] [text "10"]
+              , text "‧"
+              , button [ type_ ButtonButton, class_ ("pa1 f7 link hover-blue" <> guard (mode == modelb20) " b") 
+                       , title "show tags with at least 20 bookmarks"
+                       , onClick \_ -> TChangeMode modelb20
+                       ] [text "20"]
+              ])
+              <> [button [ type_ ButtonButton, class_ "pa1 ml2 f7 link silver hover-blue "
+                         , onClick \_ -> TExpanded (not (isExpanded mode))]
+                         [ text (if isExpanded mode then "hide" else "show") ]]
+    , whenH (isExpanded mode) \_ -> do
+        let n = fromMaybe 1 (minimum (F.values tagcloud))
+            m = fromMaybe 1 (maximum (F.values tagcloud))
+        div [class_ "tag_cloud_body"] $ case mode of
+          TagCloudModeNone -> []
+          (TagCloudModeRelated _ curtags) -> 
+            toArray curtags n m tagcloud
+          _ -> 
+            toArray [] n m tagcloud
+          
+    ]
+    where
+      modetop = TagCloudModeTop (isExpanded mode) 200
+      modelb1 = TagCloudModeLowerBound (isExpanded mode) 1
+      modelb2 = TagCloudModeLowerBound (isExpanded mode) 2
+      modelb5 = TagCloudModeLowerBound (isExpanded mode) 5
+      modelb10 = TagCloudModeLowerBound (isExpanded mode) 10
+      modelb20 = TagCloudModeLowerBound (isExpanded mode) 20
+
+
+  toArray :: Array String -> Int -> Int -> Object Int -> Array (HTML _ _)
+  toArray curtags n m =
+    concat
+    <<< map (uncurry (toSizedTag (map toLower curtags) n m))
+    <<< sortBy (comparing (S.toLower <<< fst))
+    <<< F.toUnfoldable
+
+  linkToFilterTag rest = fromNullableStr app.userR <> (if S.null rest then "" else "/t:" <> rest) 
+
+  toSizedTag :: Array String -> Int -> Int -> String -> Int -> _
+  toSizedTag curtags n m k v =
+    [ a [ href (linkToFilterTag (encodeTag k)), class_ "link tag mr1" , style] 
+        [ text k ]
+      , whenH (not (null curtags))  \_ -> if (notElem k_lower curtags)
+          then a [href (linkToFilterTag (S.joinWith "+" (map encodeTag (cons k_lower curtags)))), class_ "link mr2 tag-include"] [text "⊕"]
+          else a [href (linkToFilterTag (S.joinWith "+" (map encodeTag (delete k_lower curtags)))), class_ "link mr2 tag-exclude"] [text "⊖"]
+    ]
+    where
+      k_lower = toLower k
+      fontsize = rescale identity (toNumber v) (toNumber n) (toNumber m) 100.0 150.0
+      opacity = rescale (log <<< (1.0 + _)) (toNumber v) (toNumber n) (toNumber m) 0.6 1.0
+      style = attr (AttrName "style") ("font-size:" <> show fontsize <> "%" <> ";opacity:" <> show opacity)
+
+  rescale :: (Number -> Number) -> Number -> Number -> Number -> Number -> Number -> Number
+  rescale f v n m l h = (if m - n < 0.01 then 1.0 else (f (v - n) / f (m - n))) * (h - l) + l
+
+  fetchTagCloud :: TagCloudModeF -> H.HalogenM TState TAction () o Aff Unit
+  fetchTagCloud mode' = do
+    case mode' of
+      TagCloudModeNone -> pure unit
+      _ -> do
+        tagcloud <- H.liftAff $ getTagCloud (tagCloudModeFromF mode')
+        H.modify_ (\s -> s { 
+          mode = mode',
+          tagcloud = fromMaybe F.empty tagcloud
+        })
+  
+  handleAction :: TAction -> H.HalogenM TState TAction () o Aff Unit
+  handleAction TInitialize = do
+    mode <- H.gets _.mode
+    fetchTagCloud mode
+  handleAction (TExpanded expanded) = do
+    H.modify_ (\s -> s { mode = setExpanded s.mode expanded })
+    mode <- H.gets _.mode
+    void $ H.liftAff $ updateTagCloudMode (tagCloudModeFromF mode)
+  handleAction (TChangeMode mode') = do
+    mode <- H.gets _.mode
+    if mode == mode'
+       then handleAction (TExpanded (not (isExpanded mode)))
+       else fetchTagCloud (setExpanded mode' true)
diff --git a/purs/src/Globals.js b/purs/src/Globals.js
--- a/purs/src/Globals.js
+++ b/purs/src/Globals.js
@@ -1,65 +1,59 @@
-"use strict";
-
-exports._app = function() {
-  return app;
-}
-
-exports._closest = function(just, nothing, selector, el) {
-  var node = el.closest(selector);
-  if(node) {
-    return just(node);
-  } else {
-    return nothing;
-  }
-}
-
-exports._innerHtml = function(el) {
-  return el.innerHTML;
-}
-
-exports._setInnerHtml = function(content, el) {
-  el.innerHTML = content;
-  return el;
-}
-
-exports._createFormData = function(formElement) {
-  return new FormData(formElement);
-}
-
-exports._createFormString = function(formElement) {
-  return new URLSearchParams(new FormData(formElement)).toString()
-}
-
-exports._createFormArray = function(formElement) {
-  return Array.from(new FormData(formElement));
-}
-
-exports._getDataAttribute = function(name, el) {
-  return el.dataset[name];
-}
-
-exports._setDataAttribute = function(name, value, el) {
-  return el.dataset[name] = value;
-}
-
-exports._moment8601 = function(tuple, s) {
-  var m = moment(s, moment.ISO_8601);
-  var s1 = m.fromNow();
-  var s2 = m.format('MMMM D YYYY, h:mm a') + " (" + m.format() + ") ";
-  return tuple(s1)(s2);
-}
-
-exports._mmoment8601 = function(just, nothing, tuple, s) {
-  try {
-    var m = moment(s, moment.ISO_8601);
-    var s1 = m.fromNow();
-    var s2 = m.format('MMMM D YYYY, h:mm a') + " (" + m.format() + ") ";
-    return just(tuple(s1)(s2));
-  } catch (error) {
-    return nothing
-  }
-}
-
-exports._closeWindow = function (window) {
-  window.close();
-};
+"use strict";
+
+var moment = require("moment");
+
+exports._app = function() {
+  return app;
+}
+
+exports._closest = function(just, nothing, selector, el) {
+  var node = el.closest(selector);
+  if(node) {
+    return just(node);
+  } else {
+    return nothing;
+  }
+}
+
+exports._createFormData = function(formElement) {
+  return new FormData(formElement);
+}
+
+exports._createFormString = function(formElement) {
+  return new URLSearchParams(new FormData(formElement)).toString()
+}
+
+exports._createFormArray = function(formElement) {
+  return Array.from(new FormData(formElement));
+}
+
+exports._moment8601 = function(tuple, s) {
+  var m = moment(s, moment.ISO_8601);
+  var s1 = m.fromNow();
+  var s2 = m.format('MMMM D YYYY, h:mm a') + " (" + m.format() + ") ";
+  return tuple(s1)(s2);
+}
+
+exports._mmoment8601 = function(just, nothing, tuple, s) {
+  try {
+    var m = moment(s, moment.ISO_8601);
+    var s1 = m.fromNow();
+    var s2 = m.format('MMMM D YYYY, h:mm a') + " (" + m.format() + ") ";
+    return just(tuple(s1)(s2));
+  } catch (error) {
+    return nothing
+  }
+}
+
+exports._closeWindow = function (window) {
+  window.close();
+};
+
+exports._setFocus = function(elemId) {
+    document.getElementById(elemId).focus();
+};
+
+
+exports._toLocaleDateString = function(dateString) {
+  return new Date(dateString).toLocaleDateString(undefined, {dateStyle: 'medium'}) 
+}
diff --git a/purs/src/Globals.purs b/purs/src/Globals.purs
--- a/purs/src/Globals.purs
+++ b/purs/src/Globals.purs
@@ -1,97 +1,87 @@
-module Globals where
-
-import Data.Function.Uncurried
-
-import Data.Maybe (Maybe(..))
-import Data.Nullable (Nullable, toMaybe)
-import Data.Tuple (Tuple(..))
-import Effect (Effect)
-import Model (Bookmark)
-import Prelude (Unit, pure, ($))
-import Web.DOM (Element, Node)
-import Web.HTML (HTMLElement, HTMLFormElement, Window)
-import Web.XHR.FormData (FormData)
-import Data.Newtype (class Newtype)
-
-type App =
-    { csrfHeaderName :: String
-    , csrfCookieName :: String
-    , csrfParamName :: String
-    , csrfToken :: String
-    , homeR :: String
-    , authRlogoutR :: String
-    , userR :: Nullable String
-    , noteR :: Nullable String
-    , dat :: AppData
-    }
-
-type AppData =
-  { bmarks :: Array Bookmark
-  , bmark :: Bookmark
-  , isowner :: Boolean
-  }
-
-foreign import _app :: Fn0 App
-
-app' :: Unit -> App
-app' _ = runFn0 _app
-
-foreign import _closest :: forall a. Fn4 (a -> Maybe a) (Maybe a) String Node (Maybe Node)
-
-closest :: String -> Node -> Effect (Maybe Node)
-closest selector node = pure $ runFn4 _closest Just Nothing selector node 
-
-foreign import _moment8601 :: Fn2 (String -> String -> Tuple String String) String (Tuple String String)
-
-moment8601 :: String -> Effect (Tuple String String)
-moment8601 s = pure $ runFn2 _moment8601 Tuple s
-
-foreign import _mmoment8601 :: forall a. Fn4 (a -> Maybe a) (Maybe a) (String -> String -> Tuple String String) String (Maybe (Tuple String String))
-
-mmoment8601 :: String -> Maybe (Tuple String String)
-mmoment8601 s = runFn4 _mmoment8601 Just Nothing Tuple s
-
-foreign import _innerHtml :: Fn1 HTMLElement String
-
-innerHtml :: HTMLElement -> Effect String
-innerHtml n = pure $ runFn1 _innerHtml n
-
-foreign import _setInnerHtml :: Fn2 String HTMLElement HTMLElement
-
-setInnerHtml :: String -> HTMLElement -> Effect HTMLElement
-setInnerHtml c n = pure $ runFn2 _setInnerHtml c n
-
-foreign import _createFormData :: Fn1 HTMLFormElement FormData
-
-createFormData :: HTMLFormElement -> FormData
-createFormData f = runFn1 _createFormData f
-
-foreign import _createFormString :: Fn1 HTMLFormElement String
-
-createFormString :: HTMLFormElement -> String
-createFormString f = runFn1 _createFormString f
-
-
-foreign import _createFormArray :: Fn1 HTMLFormElement (Array (Array String))
-
-createFormArray :: HTMLFormElement -> (Array (Array String))
-createFormArray f = runFn1 _createFormArray f
-
-foreign import _getDataAttribute :: Fn2 String Element (Nullable String)
-
-getDataAttribute :: String -> Element -> Effect (Maybe String)
-getDataAttribute k n = pure $ toMaybe $ runFn2 _getDataAttribute k n
-
-foreign import _setDataAttribute :: Fn3 String String Element Unit
-
-setDataAttribute :: String -> String -> Element -> Effect Unit
-setDataAttribute k v n = pure $ runFn3 _setDataAttribute k v n
-
-foreign import _closeWindow :: Fn1 Window Unit
-
-closeWindow :: Window -> Effect Unit
-closeWindow win = pure $ runFn1 _closeWindow win
-
-newtype RawHTML = RawHTML String
-
-derive instance newtypeRawHTML :: Newtype RawHTML _
+module Globals where
+
+import Data.Maybe (Maybe(..))
+import Data.Newtype (class Newtype)
+import Data.Nullable (Nullable)
+import Data.Tuple (Tuple(..))
+import Effect (Effect)
+import Data.Function.Uncurried (Fn0, Fn1, Fn4, runFn0, runFn1, runFn4)
+import Effect.Uncurried (EffectFn1, EffectFn2, EffectFn4, runEffectFn1, runEffectFn2, runEffectFn4)
+import Model (Bookmark)
+import Prelude (Unit)
+import Web.DOM (Node)
+import Web.HTML (HTMLElement, HTMLFormElement, Window)
+import Web.XHR.FormData (FormData)
+
+type App =
+    { csrfHeaderName :: String
+    , csrfCookieName :: String
+    , csrfParamName :: String
+    , csrfToken :: String
+    , homeR :: String
+    , authRlogoutR :: String
+    , userR :: Nullable String
+    , noteR :: Nullable String
+    , dat :: AppData
+    }
+
+type AppData =
+  { bmarks :: Array Bookmark
+  , bmark :: Bookmark
+  , isowner :: Boolean
+  }
+
+foreign import _app :: Fn0 App
+
+app' :: Unit -> App
+app' _ = runFn0 _app
+
+foreign import _closest :: forall a. EffectFn4 (a -> Maybe a) (Maybe a) String Node (Maybe Node)
+
+closest :: String -> Node -> Effect (Maybe Node)
+closest selector node = runEffectFn4 _closest Just Nothing selector node 
+
+foreign import _moment8601 :: EffectFn2 (String -> String -> Tuple String String) String (Tuple String String)
+
+moment8601 :: String -> Effect (Tuple String String)
+moment8601 s = runEffectFn2 _moment8601 Tuple s
+
+foreign import _mmoment8601 :: forall a. Fn4 (a -> Maybe a) (Maybe a) (String -> String -> Tuple String String) String (Maybe (Tuple String String))
+
+mmoment8601 :: String -> Maybe (Tuple String String)
+mmoment8601 s = runFn4 _mmoment8601 Just Nothing Tuple s
+
+foreign import _createFormData :: Fn1 HTMLFormElement FormData
+
+createFormData :: HTMLFormElement -> FormData
+createFormData f = runFn1 _createFormData f
+
+foreign import _createFormString :: Fn1 HTMLFormElement String
+
+createFormString :: HTMLFormElement -> String
+createFormString f = runFn1 _createFormString f
+
+
+foreign import _createFormArray :: Fn1 HTMLFormElement (Array (Array String))
+
+createFormArray :: HTMLFormElement -> (Array (Array String))
+createFormArray f = runFn1 _createFormArray f
+
+foreign import _closeWindow :: EffectFn1 Window Unit
+
+closeWindow :: Window -> Effect Unit
+closeWindow win = runEffectFn1 _closeWindow win
+
+newtype RawHTML = RawHTML String
+
+derive instance newtypeRawHTML :: Newtype RawHTML _
+
+foreign import _setFocus :: EffectFn1 String Unit
+
+setFocus :: String -> Effect Unit
+setFocus s = runEffectFn1 _setFocus s
+
+foreign import _toLocaleDateString :: Fn1 String String
+
+toLocaleDateString :: String -> String
+toLocaleDateString s = runFn1 _toLocaleDateString s
diff --git a/purs/src/Main.js b/purs/src/Main.js
new file mode 100644
--- /dev/null
+++ b/purs/src/Main.js
@@ -0,0 +1,5 @@
+"use strict";
+
+exports._mainImpl = function() {
+  return window.PS = PS;
+}
diff --git a/purs/src/Main.purs b/purs/src/Main.purs
--- a/purs/src/Main.purs
+++ b/purs/src/Main.purs
@@ -1,63 +1,75 @@
-module Main where
-
-import Prelude
-
-import App (logout)
-import Component.Add (addbmark)
-import Component.BList (blist)
-import Component.NList (nlist)
-import Component.NNote (nnote)
-import Component.AccountSettings (usetting)
-import Data.Foldable (traverse_)
-import Effect (Effect)
-import Effect.Aff (Aff, launchAff)
-import Effect.Class (liftEffect)
-import Halogen.Aff as HA
-import Halogen.VDom.Driver (runUI)
-import Model (Bookmark, Note, AccountSettings)
-import Web.DOM.Element (removeAttribute)
-import Web.DOM.ParentNode (QuerySelector(..))
-import Web.Event.Event (Event, preventDefault)
-import Web.HTML.HTMLElement (toElement)
-
-main :: Effect Unit
-main = pure unit
-
-logoutE :: Event -> Effect Unit
-logoutE e = void <<< launchAff <<< logout =<< preventDefault e
-
-renderBookmarks :: String -> Array Bookmark -> Effect Unit
-renderBookmarks renderElSelector bmarks = do
-  HA.runHalogenAff do
-    HA.selectElement (QuerySelector renderElSelector) >>= traverse_ \el -> do
-      void $ runUI (blist bmarks) unit el
-      showFooter
-
-renderAddForm :: String -> Bookmark -> Effect Unit
-renderAddForm renderElSelector bmark = do
-  HA.runHalogenAff do
-    HA.selectElement (QuerySelector renderElSelector) >>= traverse_ \el -> do
-      runUI (addbmark bmark) unit el
-
-renderNotes :: String -> Array Note -> Effect Unit
-renderNotes renderElSelector notes = do
-  HA.runHalogenAff do
-    HA.selectElement (QuerySelector renderElSelector) >>= traverse_ \el -> do
-      void $ runUI (nlist notes) unit el
-      showFooter
-
-renderNote :: String -> Note -> Effect Unit
-renderNote renderElSelector note = do
-  HA.runHalogenAff do
-    HA.selectElement (QuerySelector renderElSelector) >>= traverse_ \el -> do
-      void $ runUI (nnote note) unit el
-
-renderAccountSettings :: String -> AccountSettings -> Effect Unit
-renderAccountSettings renderElSelector accountSettings = do
-  HA.runHalogenAff do
-    HA.selectElement (QuerySelector renderElSelector) >>= traverse_ \el -> do
-      void $ runUI (usetting accountSettings) unit el
-
-showFooter :: Aff Unit
-showFooter = HA.selectElement (QuerySelector ".user_footer") >>= traverse_ \el ->
-  liftEffect $ removeAttribute "hidden" (toElement el)
+module Main where
+
+import Prelude
+
+import App (logout)
+import Component.AccountSettings (usetting)
+import Component.Add (addbmark)
+import Component.BList (blist)
+import Component.NList (nlist)
+import Component.NNote (nnote)
+import Component.TagCloud (tagcloudcomponent)
+import Data.Foldable (traverse_)
+import Effect (Effect)
+import Effect.Aff (Aff, launchAff)
+import Effect.Class (liftEffect)
+import Halogen.Aff as HA
+import Halogen.VDom.Driver (runUI)
+import Model (AccountSettings, Bookmark, Note, TagCloudMode, tagCloudModeToF)
+import Web.DOM.Element (setAttribute)
+import Web.DOM.ParentNode (QuerySelector(..))
+import Web.Event.Event (Event, preventDefault)
+import Web.HTML.HTMLElement (toElement)
+
+foreign import _mainImpl :: Effect Unit
+
+main :: Effect Unit
+main = _mainImpl
+
+logoutE :: Event -> Effect Unit
+logoutE e = void <<< launchAff <<< logout =<< preventDefault e
+
+renderBookmarks :: String -> Array Bookmark -> Effect Unit
+renderBookmarks renderElSelector bmarks = do
+  HA.runHalogenAff do
+    HA.selectElement (QuerySelector renderElSelector) >>= traverse_ \el -> do
+      void $ runUI (blist bmarks) unit el
+      viewRendered
+
+renderTagCloud :: String -> TagCloudMode -> Effect Unit
+renderTagCloud renderElSelector tagCloudMode = do
+  HA.runHalogenAff do
+    HA.selectElement (QuerySelector renderElSelector) >>= traverse_ \el -> do
+      void $ runUI (tagcloudcomponent (tagCloudModeToF tagCloudMode)) unit el
+
+renderAddForm :: String -> Bookmark -> Effect Unit
+renderAddForm renderElSelector bmark = do
+  HA.runHalogenAff do
+    HA.selectElement (QuerySelector renderElSelector) >>= traverse_ \el -> do
+      void $ runUI (addbmark bmark) unit el
+      viewRendered
+
+renderNotes :: String -> Array Note -> Effect Unit
+renderNotes renderElSelector notes = do
+  HA.runHalogenAff do
+    HA.selectElement (QuerySelector renderElSelector) >>= traverse_ \el -> do
+      void $ runUI (nlist notes) unit el
+      viewRendered
+
+renderNote :: String -> Note -> Effect Unit
+renderNote renderElSelector note = do
+  HA.runHalogenAff do
+    HA.selectElement (QuerySelector renderElSelector) >>= traverse_ \el -> do
+      void $ runUI (nnote note) unit el
+      viewRendered
+
+renderAccountSettings :: String -> AccountSettings -> Effect Unit
+renderAccountSettings renderElSelector accountSettings = do
+  HA.runHalogenAff do
+    HA.selectElement (QuerySelector renderElSelector) >>= traverse_ \el -> do
+      void $ runUI (usetting accountSettings) unit el
+      viewRendered
+
+viewRendered :: Aff Unit
+viewRendered = HA.selectElement (QuerySelector "#content") >>= traverse_ \el ->
+  liftEffect $ setAttribute "view-rendered" "" (toElement el) 
diff --git a/purs/src/Marked.js b/purs/src/Marked.js
--- a/purs/src/Marked.js
+++ b/purs/src/Marked.js
@@ -1,7 +1,12 @@
+var marked = require("marked");
+var DOMPurify = require("dompurify");
+
+marked.setOptions({
+  pedantic: false,
+  gfm: true
+});
+
 exports.markedImpl = function(str) {
-  marked.setOptions({
-    pedantic: false,
-    gfm: true
-  });
-  return marked(str);
+  if (!str) return "";
+  return DOMPurify.sanitize(marked(str));
 };
diff --git a/purs/src/Model.purs b/purs/src/Model.purs
--- a/purs/src/Model.purs
+++ b/purs/src/Model.purs
@@ -1,53 +1,129 @@
-module Model where
-
-import Data.Nullable (Nullable)
-import Simple.JSON as J
-
-type BookmarkId = Int
-type TagId = Int
-
-type Bookmark =
-  { url :: String
-  , title :: String
-  , description :: String
-  , tags :: String
-  , private :: Boolean
-  , toread :: Boolean
-  , bid :: BookmarkId
-  , slug :: String
-  , selected :: Boolean
-  , time :: String
-  , archiveUrl :: Nullable String
-  }
-
-newtype Bookmark' = Bookmark' Bookmark
-derive newtype instance bookmark_rfI :: J.ReadForeign Bookmark'
-derive newtype instance bookmark_wfI :: J.WriteForeign Bookmark'
-
-type NoteId = Int
-type NoteSlug = String
-
-type Note =
-  { id :: NoteId
-  , slug :: NoteSlug
-  , title :: String
-  , text :: String
-  , length :: Int
-  , isMarkdown :: Boolean
-  , created :: String
-  , updated :: String
-  }
-
-newtype Note' = Note' Note
-derive newtype instance note_rfI :: J.ReadForeign Note'
-derive newtype instance note_wfI :: J.WriteForeign Note'
-
-type AccountSettings =
-  { archiveDefault :: Boolean
-  , privateDefault :: Boolean
-  , privacyLock :: Boolean
-  }
-
-newtype AccountSettings' = AccountSettings' AccountSettings
-derive newtype instance usersettings_rfI :: J.ReadForeign AccountSettings'
-derive newtype instance usersettings_wfI :: J.WriteForeign AccountSettings'
+module Model where
+
+import Control.Monad.Except (runExcept)
+import Data.Array (intercalate)
+import Data.Either (hush)
+import Data.Maybe (fromMaybe)
+import Data.Nullable (Nullable)
+import Data.String (Pattern(..), split)
+import Foreign (Foreign, readInt, readString, unsafeToForeign)
+import Foreign.Object (Object)
+import Prelude (class Eq, pure, ($), (<$>))
+import Simple.JSON as J
+
+type BookmarkId = Int
+type TagId = Int
+
+type Bookmark =
+  { url :: String
+  , title :: String
+  , description :: String
+  , tags :: String
+  , private :: Boolean
+  , toread :: Boolean
+  , bid :: BookmarkId
+  , slug :: String
+  , selected :: Boolean
+  , time :: String
+  , archiveUrl :: Nullable String
+  }
+
+newtype Bookmark' = Bookmark' Bookmark
+derive newtype instance J.ReadForeign Bookmark'
+derive newtype instance J.WriteForeign Bookmark'
+
+type NoteId = Int
+type NoteSlug = String
+
+type Note =
+  { id :: NoteId
+  , slug :: NoteSlug
+  , title :: String
+  , text :: String
+  , length :: Int
+  , isMarkdown :: Boolean
+  , shared :: Boolean
+  , created :: String
+  , updated :: String
+  }
+
+newtype Note' = Note' Note
+derive newtype instance J.ReadForeign Note'
+derive newtype instance J.WriteForeign Note'
+
+type AccountSettings =
+  { archiveDefault :: Boolean
+  , privateDefault :: Boolean
+  , privacyLock :: Boolean
+  }
+
+newtype AccountSettings' = AccountSettings' AccountSettings
+derive newtype instance J.ReadForeign AccountSettings'
+derive newtype instance J.WriteForeign AccountSettings'
+
+type TagCloudMode =
+  { mode :: String
+  , value :: Foreign
+  , expanded :: Boolean
+  }
+newtype TagCloudMode' = TagCloudMode' TagCloudMode
+derive newtype instance J.ReadForeign TagCloudMode'
+derive newtype instance J.WriteForeign TagCloudMode'
+
+type TagCloud = Object Int
+
+data TagCloudModeF
+  = TagCloudModeTop Boolean Int 
+  | TagCloudModeLowerBound Boolean Int 
+  | TagCloudModeRelated Boolean (Array String) 
+  | TagCloudModeNone
+
+derive instance Eq TagCloudModeF
+
+tagCloudModeToF :: TagCloudMode -> TagCloudModeF
+tagCloudModeToF tagCloudMode =
+  fromMaybe TagCloudModeNone $ hush $ runExcept $
+    case tagCloudMode.mode of
+      "top" -> TagCloudModeTop tagCloudMode.expanded <$> readInt tagCloudMode.value
+      "lowerBound" -> TagCloudModeLowerBound tagCloudMode.expanded <$> readInt tagCloudMode.value
+      "related" -> (\s -> TagCloudModeRelated tagCloudMode.expanded (split (Pattern " ") s)) <$> readString tagCloudMode.value
+      _ -> pure TagCloudModeNone
+
+tagCloudModeFromF :: TagCloudModeF -> TagCloudMode
+tagCloudModeFromF (TagCloudModeTop e i) =
+  { mode: "top" , value: unsafeToForeign i, expanded: e }
+tagCloudModeFromF (TagCloudModeLowerBound e i) =
+  { mode: "lowerBound" , value: unsafeToForeign i, expanded: e }
+tagCloudModeFromF (TagCloudModeRelated e tags) =
+  { mode: "related" , value: unsafeToForeign (intercalate " " tags), expanded: e  }
+tagCloudModeFromF TagCloudModeNone =
+  { mode: "none" , value: unsafeToForeign "", expanded: false }
+    
+isExpanded :: TagCloudModeF -> Boolean
+isExpanded (TagCloudModeTop e _) = e
+isExpanded (TagCloudModeLowerBound e _) = e
+isExpanded (TagCloudModeRelated e _) = e
+isExpanded TagCloudModeNone = false
+
+isRelated :: TagCloudModeF -> Boolean
+isRelated (TagCloudModeRelated _ _) = true
+isRelated _ = false
+
+setExpanded :: TagCloudModeF -> Boolean -> TagCloudModeF
+setExpanded (TagCloudModeTop e i) e' = TagCloudModeTop e' i
+setExpanded (TagCloudModeLowerBound e i) e' = TagCloudModeLowerBound e' i
+setExpanded (TagCloudModeRelated e i) e' = TagCloudModeRelated e' i
+setExpanded TagCloudModeNone _ = TagCloudModeNone
+
+showMode :: TagCloudModeF -> String
+showMode (TagCloudModeTop _ _)  = "top"
+showMode (TagCloudModeLowerBound _ _)  = "lowerBound"
+showMode (TagCloudModeRelated _ _)  = "related"
+showMode TagCloudModeNone = ""
+
+-- isSameMode :: TagCloudModeF -> TagCloudModeF -> Boolean
+-- isSameMode (TagCloudModeTop _ _) (TagCloudModeTop _ _) = true
+-- isSameMode (TagCloudModeLowerBound _ _) (TagCloudModeLowerBound _ _) = true
+-- isSameMode (TagCloudModeRelated _ _) (TagCloudModeRelated _ _) = true
+-- isSameMode TagCloudModeNone TagCloudModeNone = true
+-- isSameMode _ _ = false
diff --git a/purs/src/Util.purs b/purs/src/Util.purs
--- a/purs/src/Util.purs
+++ b/purs/src/Util.purs
@@ -1,136 +1,155 @@
-module Util where
-
-import Prelude
-
-import Control.Monad.Maybe.Trans (MaybeT(..))
-import Data.Array (filter, find, mapMaybe)
-import Data.Foldable (for_)
-import Data.Maybe (Maybe(..), fromJust, fromMaybe, maybe)
-import Data.Nullable (Nullable, toMaybe)
-import Data.String (Pattern(..), Replacement(..), drop, replaceAll, split, take)
-import Data.Tuple (Tuple(..), fst, snd)
-import Effect (Effect)
-import Global.Unsafe (unsafeDecodeURIComponent)
-import Halogen (ClassName(..))
-import Halogen.HTML as HH
-import Halogen.HTML.Properties as HP
-import Partial.Unsafe (unsafePartial)
-import Web.DOM (Element, Node)
-import Web.DOM.Document (toNonElementParentNode)
-import Web.DOM.Element (fromNode, toParentNode)
-import Web.DOM.NodeList (toArray)
-import Web.DOM.NonElementParentNode (getElementById)
-import Web.DOM.ParentNode (QuerySelector(..), querySelector, querySelectorAll)
-import Web.HTML (HTMLDocument, Location, window)
-import Web.HTML.HTMLDocument (body) as HD
-import Web.HTML.HTMLDocument (toDocument)
-import Web.HTML.HTMLElement (HTMLElement)
-import Web.HTML.HTMLElement (fromElement) as HE
-import Web.HTML.Location (search)
-import Web.HTML.Window (document, location)
-  
--- Halogen
-
-class_ :: forall r i. String -> HP.IProp ( "class" :: String | r) i
-class_ = HP.class_ <<< HH.ClassName
-
-attr :: forall r i. String -> String -> HP.IProp r i
-attr a = HP.attr (HH.AttrName a)
-
--- Util
-
-_queryBoth :: forall a. Tuple String Element -> Tuple String Element -> (Element -> Element -> Effect a) -> Effect Unit
-_queryBoth (Tuple qa ea) (Tuple qb eb) f = do
-   ma <- _querySelector qa ea
-   mb <- _querySelector qb eb
-   for_ ma \a -> 
-     for_ mb \b ->
-       f a b
-
-_queryBoth' :: forall a. Tuple String Element -> Tuple String Element -> (Element -> Array Node -> Effect a) -> Effect Unit
-_queryBoth' (Tuple qa ea) (Tuple qb eb) f = do
-   ma <- _querySelector qa ea
-   bs <- _querySelectorAll qb eb
-   for_ ma \a -> 
-     f a bs
-
-_queryBoth'' :: forall a. Tuple String Element -> Tuple String Element -> (Array Node -> Array Node -> Effect a) -> Effect a
-_queryBoth'' (Tuple qa ea) (Tuple qb eb) f = do
-   as <- _querySelectorAll qa ea
-   bs <- _querySelectorAll qb eb
-   f as bs
-
-_querySelector :: String -> Element -> Effect (Maybe Element)
-_querySelector s n = querySelector (QuerySelector s) (toParentNode n)
-
-_querySelectorAll :: String -> Element -> Effect (Array Node)
-_querySelectorAll s n = toArray =<< querySelectorAll (QuerySelector s) (toParentNode n)
-
-_fromNode :: Node -> Element
-_fromNode e = unsafePartial $ fromJust (fromNode e)
-
-_fromElement :: Element -> HTMLElement
-_fromElement e = unsafePartial $ fromJust (HE.fromElement e)
-
-_getElementById :: String -> HTMLDocument -> Effect (Maybe Element)
-_getElementById s = getElementById s <<< toNonElementParentNode <<< toDocument
-
-_doc :: Effect HTMLDocument
-_doc = document =<< window 
-
-_loc :: Effect Location
-_loc = location =<< window 
-
-type QueryStringArray = Array (Tuple String (Maybe String))
-
-_curQuerystring :: Effect QueryStringArray
-_curQuerystring = do
-  loc <- _loc
-  srh <- search loc
-  pure $ _parseQueryString srh
-
-_parseQueryString :: String -> QueryStringArray
-_parseQueryString srh = do
-  let qs = let srh' = take 1 srh in if (srh' == "#" || srh' == "?") then drop 1 srh else srh
-  mapMaybe go $ (filter (_ /= "") <<< split (Pattern "&")) qs
-  where
-    decode = unsafeDecodeURIComponent <<< replaceAll (Pattern "+") (Replacement " ")
-    go kv =
-      case split (Pattern "=") kv of
-        [k] -> Just (Tuple (decode k) Nothing)
-        [k, v] -> Just (Tuple (decode k) (Just (decode v)))
-        _ -> Nothing
-
-_lookupQueryStringValue :: QueryStringArray -> String -> Maybe String
-_lookupQueryStringValue qs k = do
-  join $ map snd $ find ((_ == k) <<< fst) qs
-
-_body :: Effect HTMLElement
-_body = unsafePartial $ pure <<< fromJust =<< HD.body =<< _doc
-
-_mt :: forall a. Effect (Maybe a) -> MaybeT Effect a
-_mt = MaybeT
-
-_mt_pure :: forall a. Maybe a -> MaybeT Effect a
-_mt_pure = MaybeT <<< pure
-
-dummyAttr :: forall r i. HP.IProp r i
-dummyAttr = HP.attr (HH.AttrName "data-dummy") ""
-
-whenP :: forall r i. Boolean -> HP.IProp r i -> HP.IProp r i
-whenP b p = if b then p else dummyAttr
-
-maybeP :: forall a r i. Maybe a -> (a -> HP.IProp r i) -> HP.IProp r i
-maybeP m p = maybe dummyAttr p m
-  
-whenC :: Boolean -> ClassName -> ClassName
-whenC b c = if b then c else ClassName ""
-
-whenH :: forall p i. Boolean -> (Unit -> HH.HTML p i) -> HH.HTML p i
-whenH b k = if b then k unit else HH.text ""
-
-maybeH :: forall a p i. Maybe a -> (a -> HH.HTML p i) -> HH.HTML p i
-maybeH m k = maybe (HH.text "") k m
-
-fromNullableStr :: Nullable String -> String
-fromNullableStr = fromMaybe "" <<< toMaybe
+module Util where
+
+import Prelude
+
+import Control.Monad.Maybe.Trans (MaybeT(..))
+import Data.Array (filter, find, mapMaybe)
+import Data.Foldable (for_)
+import Data.Maybe (Maybe(..), fromJust, fromMaybe, maybe)
+import Data.Nullable (Nullable, toMaybe)
+import Data.String (Pattern(..), Replacement(..), drop, replaceAll, split, take)
+import Data.String as S
+import Data.Tuple (Tuple(..), fst, snd)
+import Effect (Effect)
+import Halogen (ClassName(..))
+import Halogen.HTML as HH
+import Halogen.HTML.Properties as HP
+import JSURI (decodeURIComponent, encodeURIComponent)
+import Partial.Unsafe (unsafePartial)
+import Web.DOM (Element, Node)
+import Web.DOM.Document (toNonElementParentNode)
+import Web.DOM.Element (fromNode, toParentNode)
+import Web.DOM.NodeList (toArray)
+import Web.DOM.NonElementParentNode (getElementById)
+import Web.DOM.ParentNode (QuerySelector(..), querySelector, querySelectorAll)
+import Web.HTML (HTMLDocument, Location, window)
+import Web.HTML.HTMLDocument (body) as HD
+import Web.HTML.HTMLDocument (toDocument)
+import Web.HTML.HTMLElement (HTMLElement)
+import Web.HTML.HTMLElement (fromElement) as HE
+import Web.HTML.Location (search)
+import Web.HTML.Window (document, location)
+
+unsafeDecode :: String -> String
+unsafeDecode str = unsafePartial $ fromJust $ decodeURIComponent str
+  
+-- Halogen
+
+class_ :: forall r i. String -> HP.IProp ( "class" :: String | r) i
+class_ = HP.class_ <<< HH.ClassName
+
+attr :: forall r i. String -> String -> HP.IProp r i
+attr a = HP.attr (HH.AttrName a)
+
+-- Util
+
+_queryBoth :: forall a. Tuple String Element -> Tuple String Element -> (Element -> Element -> Effect a) -> Effect Unit
+_queryBoth (Tuple qa ea) (Tuple qb eb) f = do
+   ma <- _querySelector qa ea
+   mb <- _querySelector qb eb
+   for_ ma \a -> 
+     for_ mb \b ->
+       f a b
+
+_queryBoth' :: forall a. Tuple String Element -> Tuple String Element -> (Element -> Array Node -> Effect a) -> Effect Unit
+_queryBoth' (Tuple qa ea) (Tuple qb eb) f = do
+   ma <- _querySelector qa ea
+   bs <- _querySelectorAll qb eb
+   for_ ma \a -> 
+     f a bs
+
+_queryBoth'' :: forall a. Tuple String Element -> Tuple String Element -> (Array Node -> Array Node -> Effect a) -> Effect a
+_queryBoth'' (Tuple qa ea) (Tuple qb eb) f = do
+   as <- _querySelectorAll qa ea
+   bs <- _querySelectorAll qb eb
+   f as bs
+
+_querySelector :: String -> Element -> Effect (Maybe Element)
+_querySelector s n = querySelector (QuerySelector s) (toParentNode n)
+
+_querySelectorAll :: String -> Element -> Effect (Array Node)
+_querySelectorAll s n = toArray =<< querySelectorAll (QuerySelector s) (toParentNode n)
+
+_fromNode :: Node -> Element
+_fromNode e = unsafePartial $ fromJust (fromNode e)
+
+_fromElement :: Element -> HTMLElement
+_fromElement e = unsafePartial $ fromJust (HE.fromElement e)
+
+_getElementById :: String -> HTMLDocument -> Effect (Maybe Element)
+_getElementById s = getElementById s <<< toNonElementParentNode <<< toDocument
+
+_doc :: Effect HTMLDocument
+_doc = document =<< window 
+
+_loc :: Effect Location
+_loc = location =<< window 
+
+type QueryStringArray = Array (Tuple String (Maybe String))
+
+_curQuerystring :: Effect QueryStringArray
+_curQuerystring = do
+  loc <- _loc
+  srh <- search loc
+  pure $ _parseQueryString srh
+
+_parseQueryString :: String -> QueryStringArray
+_parseQueryString srh = do
+  let qs = let srh' = take 1 srh in if (srh' == "#" || srh' == "?") then drop 1 srh else srh
+  mapMaybe go $ (filter (_ /= "") <<< split (Pattern "&")) qs
+  where
+    decode = unsafeDecode <<< replaceAll (Pattern "+") (Replacement " ")
+    go kv =
+      case split (Pattern "=") kv of
+        [k] -> Just (Tuple (decode k) Nothing)
+        [k, v] -> Just (Tuple (decode k) (Just (decode v)))
+        _ -> Nothing
+
+_lookupQueryStringValue :: QueryStringArray -> String -> Maybe String
+_lookupQueryStringValue qs k = do
+  join $ map snd $ find ((_ == k) <<< fst) qs
+
+_body :: Effect HTMLElement
+_body = unsafePartial $ pure <<< fromJust =<< HD.body =<< _doc
+
+_mt :: forall a. Effect (Maybe a) -> MaybeT Effect a
+_mt = MaybeT
+
+_mt_pure :: forall a. Maybe a -> MaybeT Effect a
+_mt_pure = MaybeT <<< pure
+
+encodeTag :: String -> String
+encodeTag = fromMaybe "" <<< encodeURIComponent <<< replaceAll (Pattern "+") (Replacement "%2B")
+
+dummyAttr :: forall r i. HP.IProp r i
+dummyAttr = HP.attr (HH.AttrName "data-dummy") ""
+
+whenP :: forall r i. Boolean -> HP.IProp r i -> HP.IProp r i
+whenP b p = if b then p else dummyAttr
+
+maybeP :: forall a r i. Maybe a -> (a -> HP.IProp r i) -> HP.IProp r i
+maybeP m p = maybe dummyAttr p m
+  
+whenC :: Boolean -> ClassName -> ClassName
+whenC b c = if b then c else ClassName ""
+
+whenH :: forall p i. Boolean -> (Unit -> HH.HTML p i) -> HH.HTML p i
+whenH b k = if b then k unit else HH.text ""
+
+whenA :: forall t. Boolean -> (Unit -> Array t) -> Array t
+whenA b k = if b then k unit else []
+
+ifElseH :: forall p i. Boolean -> (Unit -> HH.HTML p i) -> (Unit -> HH.HTML p i) -> HH.HTML p i
+ifElseH b f k = if b then f unit else k unit
+
+ifElseA :: forall t. Boolean -> (Unit -> Array t) -> (Unit -> Array t) -> Array t
+ifElseA b f k = if b then f unit else k unit
+
+maybeH :: forall a p i. Maybe a -> (a -> HH.HTML p i) -> HH.HTML p i
+maybeH m k = maybe (HH.text "") k m
+
+fromNullableStr :: Nullable String -> String
+fromNullableStr = fromMaybe "" <<< toMaybe
+
+monthNames :: Array String
+monthNames = ["january", "february", "march", "april", "may", "june", "july", "august", "september", "october", "november", "december"]
diff --git a/src/Application.hs b/src/Application.hs
--- a/src/Application.hs
+++ b/src/Application.hs
@@ -1,4 +1,5 @@
 {-# OPTIONS_GHC -fno-warn-orphans #-}
+{-# OPTIONS_GHC -fno-warn-partial-type-signatures #-}
 
 module Application
   ( getApplicationDev
@@ -14,43 +15,31 @@
   , db
   ) where
 
-import Control.Monad.Logger (liftLoc, runLoggingT)
-import Database.Persist.Sqlite
-       (createSqlitePool, sqlDatabase, sqlPoolSize)
-import Import
-import Yesod.Auth (getAuth)
-import Language.Haskell.TH.Syntax (qLocation)
-import Lens.Micro
-import Network.HTTP.Client.TLS
-import Network.Wai (Middleware)
-import Network.Wai.Middleware.Autohead
-import Network.Wai.Middleware.AcceptOverride
-import Network.Wai.Middleware.Gzip
-import Network.Wai.Middleware.MethodOverride
-import Network.Wai.Handler.Warp
-       (Settings, defaultSettings, defaultShouldDisplayException,
-        runSettings, setHost, setOnException, setPort, getPort)
-import Network.Wai.Middleware.RequestLogger
-       (Destination(Logger), IPAddrSource(..), OutputFormat(..),
-        destination, mkRequestLogger, outputFormat)
-import System.Log.FastLogger
-       (defaultBufSize, newStdoutLoggerSet, toLogStr)
-
-import qualified Control.Monad.Metrics as MM
-import qualified Network.Wai.Metrics   as WM
-import qualified System.Metrics        as EKG
-import qualified System.Remote.Monitoring as EKG
+import           Control.Monad.Logger (liftLoc, runLoggingT)
+import           Database.Persist.Sqlite (ConnectionPool, mkSqliteConnectionInfo, createSqlitePoolFromInfo, fkEnabled, runSqlPool, sqlDatabase, sqlPoolSize)
+import           Import
+import           Language.Haskell.TH.Syntax (qLocation)
+import           Lens.Micro
+import           Network.HTTP.Client.TLS
+import           Network.Wai (Middleware)
+import           Network.Wai.Handler.Warp (Settings, defaultSettings, defaultShouldDisplayException, runSettings, setHost, setOnException, setPort, getPort)
+import           Network.Wai.Middleware.AcceptOverride
+import           Network.Wai.Middleware.Autohead
+import           Network.Wai.Middleware.Gzip
+import           Network.Wai.Middleware.MethodOverride
+import           Network.Wai.Middleware.RequestLogger (Destination(Logger), IPAddrSource(..), OutputFormat(..), destination, mkRequestLogger, outputFormat)
+import           System.Log.FastLogger (defaultBufSize, newStdoutLoggerSet, toLogStr)
 
 -- Import all relevant handler modules here.
 -- Don't forget to add new modules to your cabal file!
-import Handler.Common
-import Handler.Home
-import Handler.User
-import Handler.AccountSettings
-import Handler.Add
-import Handler.Edit
-import Handler.Notes
-import Handler.Docs
+import           Handler.Common
+import           Handler.Home
+import           Handler.User
+import           Handler.AccountSettings
+import           Handler.Add
+import           Handler.Edit
+import           Handler.Notes
+import           Handler.Docs
 
 mkYesodDispatch "App" resourcesApp
 
@@ -58,38 +47,37 @@
 makeFoundation appSettings = do
   appHttpManager <- getGlobalManager
   appLogger <- newStdoutLoggerSet defaultBufSize >>= makeYesodLogger
-  store <- EKG.newStore
-  EKG.registerGcMetrics store
-  appMetrics <- MM.initializeWith store
   appStatic <-
     (if appMutableStatic appSettings
        then staticDevel
        else static)
       (appStaticDir appSettings)
-  let mkFoundation appConnPool = App { ..}
+  let mkFoundation appConnPool = App {..}
       tempFoundation = mkFoundation (error "connPool forced in tempFoundation")
       logFunc = messageLoggerSource tempFoundation appLogger
-  pool <-
-    flip runLoggingT logFunc $
-    createSqlitePool
-      (sqlDatabase (appDatabaseConf appSettings))
-      (sqlPoolSize (appDatabaseConf appSettings))
-  -- runLoggingT
-  --   (runSqlPool runMigrations pool)
-  --   logFunc
+  pool <- mkPool logFunc True
+  poolMigrations <- mkPool logFunc False
+  runLoggingT (runSqlPool runMigrations poolMigrations) logFunc
   return (mkFoundation pool)
+  where
+    mkPool :: _ -> Bool -> IO ConnectionPool
+    mkPool logFunc isFkEnabled =
+      flip runLoggingT logFunc $ do
+        let dbPath = sqlDatabase (appDatabaseConf appSettings)
+            poolSize = sqlPoolSize (appDatabaseConf appSettings)
+            connInfo = mkSqliteConnectionInfo dbPath &
+                       set fkEnabled isFkEnabled
+        createSqlitePoolFromInfo connInfo poolSize
 
+
 makeApplication :: App -> IO Application
 makeApplication foundation = do
   logWare <- makeLogWare foundation
   appPlain <- toWaiAppPlain foundation
-  let store = appMetrics foundation ^. MM.metricsStore
-  waiMetrics <- WM.registerWaiMetrics store
-  return (logWare (makeMiddleware waiMetrics appPlain))
+  return (logWare (makeMiddleware appPlain))
 
-makeMiddleware :: WM.WaiMetrics -> Middleware
-makeMiddleware waiMetrics =
-  WM.metrics waiMetrics .
+makeMiddleware :: Middleware
+makeMiddleware =
   acceptOverride .
   autohead .
   gzip def {gzipFiles = GzipPreCompressed GzipIgnore} .
@@ -133,7 +121,6 @@
   foundation <- makeFoundation settings
   wsettings <- getDevSettings (warpSettings foundation)
   app <- makeApplication foundation
-  forkEKG foundation
   return (wsettings, app)
 
 getAppSettings :: IO AppSettings
@@ -143,23 +130,12 @@
 develMain :: IO ()
 develMain = develMainHelper getApplicationDev
 
-forkEKG :: App -> IO ()
-forkEKG foundation = 
-  let settings = appSettings foundation in
-  for_ (appEkgHost settings) $ \ekgHost ->
-    for_ (appEkgPort settings) $ \ekgPort ->
-      EKG.forkServerWith
-        (appMetrics foundation ^. MM.metricsStore)
-        (encodeUtf8 ekgHost)
-        ekgPort
-
 -- | The @main@ function for an executable running this site.
 appMain :: IO ()
 appMain = do
   settings <- loadYamlSettingsArgs [configSettingsYmlValue] useEnv
   foundation <- makeFoundation settings
   app <- makeApplication foundation
-  forkEKG foundation
   runSettings (warpSettings foundation) app
 
 getApplicationRepl :: IO (Int, App, Application)
diff --git a/src/Foundation.hs b/src/Foundation.hs
--- a/src/Foundation.hs
+++ b/src/Foundation.hs
@@ -1,250 +1,249 @@
-{-# LANGUAGE DeriveGeneric #-}
-{-# LANGUAGE StandaloneDeriving #-}
-{-# OPTIONS_GHC -fno-warn-unused-matches #-}
-
-module Foundation where
-
-import Import.NoFoundation
-import Database.Persist.Sql (ConnectionPool, runSqlPool)
-import Text.Hamlet          (hamletFile)
-import Text.Jasmine         (minifym)
-import PathPiece()
-
--- import Yesod.Auth.Dummy
-
-import Yesod.Default.Util   (addStaticContentExternal)
-import Yesod.Core.Types
-import Yesod.Auth.Message
-import qualified Network.Wai as NW
-import qualified Control.Monad.Metrics as MM
-import qualified Data.CaseInsensitive as CI
-import qualified Data.Text.Encoding as TE
-import qualified Yesod.Core.Unsafe as Unsafe
-
-data App = App
-    { appSettings    :: AppSettings
-    , appStatic      :: Static -- ^ Settings for static file serving.
-    , appConnPool    :: ConnectionPool -- ^ Database connection pool.
-    , appHttpManager :: Manager
-    , appLogger      :: Logger
-    , appMetrics     :: !MM.Metrics
-    } deriving (Typeable)
-
-mkYesodData "App" $(parseRoutesFile "config/routes")
-
-deriving instance Typeable Route 
-deriving instance Generic (Route App)
-
--- YesodPersist
-
-instance YesodPersist App where
-    type YesodPersistBackend App = SqlBackend
-    runDB action = do
-        master <- getYesod
-        runSqlPool action (appConnPool master)
-
-instance YesodPersistRunner App where
-    getDBRunner = defaultGetDBRunner appConnPool
-
--- Yesod
-
-instance Yesod App where
-    approot = ApprootRequest $ \app req ->
-        case appRoot (appSettings app) of
-            Nothing -> getApprootText guessApproot app req
-            Just root -> root
-
-    makeSessionBackend _ = Just <$> defaultClientSessionBackend
-        10080 -- min (7 days)
-        "config/client_session_key.aes"
-
-    yesodMiddleware = metricsMiddleware . defaultYesodMiddleware . defaultCsrfMiddleware
-
-    defaultLayout widget = do
-        req <- getRequest
-        master <- getYesod
-        urlrender <- getUrlRender
-        mmsg <- getMessage
-        musername <- maybeAuthUsername
-        muser <- (fmap.fmap) snd maybeAuthPair
-        mcurrentRoute <- getCurrentRoute
-        void $ mapM (incrementRouteEKG req) mcurrentRoute
-        pc <- widgetToPageContent $ do
-            setTitle "Espial"
-            addAppScripts
-            addStylesheet (StaticR css_tachyons_min_css)
-            addStylesheet (StaticR css_main_css)
-            $(widgetFile "default-layout")
-        withUrlRenderer $(hamletFile "templates/default-layout-wrapper.hamlet")
-
-    addStaticContent ext mime content = do
-        master <- getYesod
-        let staticDir = appStaticDir (appSettings master)
-        addStaticContentExternal
-            minifym
-            genFileName
-            staticDir
-            (StaticR . flip StaticRoute [])
-            ext
-            mime
-            content
-      where
-        genFileName lbs = "autogen-" ++ base64md5 lbs
-
-    shouldLogIO app _source level =
-        pure $ appShouldLogAll (appSettings app) || level == LevelWarn || level == LevelError
-    makeLogger = return . appLogger
-
-    authRoute _ = Just (AuthR LoginR)
-
-    isAuthorized (AuthR _) _ = pure Authorized
-    isAuthorized _ _ = pure Authorized
-
-    defaultMessageWidget title body = do
-      setTitle title
-      toWidget [hamlet|
-        <main .pv2.ph3.mh1>
-          <div .w-100.mw8.center>
-            <div .pa3.bg-near-white>
-              <h1>#{title}
-              ^{body}
-      |]
-
-
-isAuthenticated :: Handler AuthResult
-isAuthenticated = maybeAuthId >>= \case
-                    Just authId -> pure Authorized
-                    _ -> pure $ AuthenticationRequired
-
-addAppScripts :: (MonadWidget m, HandlerSite m ~ App) => m ()
-addAppScripts = do
-  addScript (StaticR js_moment_min_js)
-  addScript (StaticR js_app_min_js) 
-
-
--- popupLayout
-
-popupLayout :: Widget -> Handler Html
-popupLayout widget = do
-    req <- getRequest
-    master <- getYesod
-    mmsg <- getMessage
-    musername <- maybeAuthUsername
-    pc <- widgetToPageContent $ do
-      addAppScripts
-      addStylesheet (StaticR css_tachyons_min_css)
-      addStylesheet (StaticR css_popup_css)
-      $(widgetFile "popup-layout")
-    withUrlRenderer $(hamletFile "templates/default-layout-wrapper.hamlet")
-
-
-metricsMiddleware :: Handler a -> Handler a
-metricsMiddleware handler = do
-  req <- getRequest
-  mcurrentRoute <- getCurrentRoute
-  void $ mapM (incrementRouteEKG req) mcurrentRoute
-  handler
-
-
-incrementRouteEKG :: YesodRequest -> Route App -> Handler ()
-incrementRouteEKG req = MM.increment . (\r -> "route." <> r <> "." <> method) . pack . constrName
-  where method = decodeUtf8 $ NW.requestMethod $ reqWaiRequest req
-
--- YesodAuth
-
-instance YesodAuth App where
-  type AuthId App = UserId
-  -- authHttpManager = getHttpManager
-  authPlugins _ = [dbAuthPlugin]
-  authenticate = authenticateCreds
-  loginDest = const HomeR
-  logoutDest = const HomeR
-  onLogin = maybeAuth >>= \case
-    Nothing -> cpprint ("onLogin: could not find user" :: Text)
-    Just (Entity _ uname) -> setSession userNameKey (userName uname)
-  onLogout =
-    deleteSession userNameKey
-  redirectToReferer = const True
-
-instance YesodAuthPersist App
-
-instance MM.MonadMetrics Handler where
-  getMetrics = pure . appMetrics =<< getYesod 
-
--- session keys
-
-maybeAuthUsername :: Handler (Maybe Text)
-maybeAuthUsername = do
-  lookupSession userNameKey
-
-ultDestKey :: Text
-ultDestKey = "_ULT"
-
-userNameKey :: Text
-userNameKey = "_UNAME"
-
--- dbAuthPlugin
-
-dbAuthPluginName :: Text
-dbAuthPluginName = "db"
-
-dbAuthPlugin :: AuthPlugin App
-dbAuthPlugin = AuthPlugin dbAuthPluginName dbDispatch dbLoginHandler
-  where
-    dbDispatch "POST" ["login"] = dbPostLoginR >>= sendResponse
-    dbDispatch _ _ = notFound
-    dbLoginHandler toParent = do
-      req <- getRequest
-      lookupSession ultDestKey >>= \case
-        Just dest | "logout" `isInfixOf` dest -> deleteSession ultDestKey
-        _ -> pure ()
-      setTitle "Espial | Log In"
-      $(widgetFile "login")
-
-dbLoginR :: AuthRoute
-dbLoginR = PluginR dbAuthPluginName ["login"]
-
-dbPostLoginR ::  AuthHandler master TypedContent
-dbPostLoginR = do
-  mresult <- runInputPostResult (dbLoginCreds
-               <$> ireq textField "username"
-               <*> ireq textField "password")
-  case mresult of
-    FormSuccess creds -> setCredsRedirect creds
-    _ -> loginErrorMessageI LoginR InvalidUsernamePass
-
-dbLoginCreds :: Text -> Text -> Creds master
-dbLoginCreds username password =
-  Creds
-  { credsPlugin = dbAuthPluginName
-  , credsIdent = username
-  , credsExtra = [("password", password)]
-  }
-
-authenticateCreds ::
-     (MonadHandler m, HandlerSite m ~ App)
-  => Creds App
-  -> m (AuthenticationResult App)
-authenticateCreds Creds {..} = do
-  muser <-
-    case credsPlugin of
-      p | p == dbAuthPluginName -> liftHandler $ runDB $
-        join <$> mapM (authenticatePassword credsIdent) (lookup "password" credsExtra)
-      _ -> pure Nothing
-  case muser of
-    Nothing -> pure (UserError InvalidUsernamePass)
-    Just (Entity uid _) -> pure (Authenticated uid)
-
--- Util
-
-instance RenderMessage App FormMessage where
-    renderMessage :: App -> [Lang] -> FormMessage -> Text
-    renderMessage _ _ = defaultFormMessage
-
-instance HasHttpManager App where
-    getHttpManager :: App -> Manager
-    getHttpManager = appHttpManager
-
-unsafeHandler :: App -> Handler a -> IO a
-unsafeHandler = Unsafe.fakeHandlerGetLogger appLogger
-
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE StandaloneDeriving #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+module Foundation where
+
+import Import.NoFoundation
+import Database.Persist.Sql (ConnectionPool, runSqlPool)
+import Text.Hamlet          (hamletFile)
+import Text.Jasmine         (minifym)
+import PathPiece()
+
+import Yesod.Default.Util   (addStaticContentExternal)
+import Yesod.Core.Types
+import Yesod.Auth.Message
+import qualified Data.CaseInsensitive as CI
+import qualified Data.Text.Encoding as TE
+import qualified Yesod.Core.Unsafe as Unsafe
+
+data App = App
+    { appSettings    :: AppSettings
+    , appStatic      :: Static -- ^ Settings for static file serving.
+    , appConnPool    :: ConnectionPool -- ^ Database connection pool.
+    , appHttpManager :: Manager
+    , appLogger      :: Logger
+    } deriving (Typeable)
+
+mkYesodData "App" $(parseRoutesFile "config/routes")
+
+deriving instance Typeable Route 
+deriving instance Generic (Route App)
+
+-- YesodPersist
+
+instance YesodPersist App where
+    type YesodPersistBackend App = SqlBackend
+    runDB action = do
+        master <- getYesod
+        runSqlPool action (appConnPool master)
+
+instance YesodPersistRunner App where
+    getDBRunner = defaultGetDBRunner appConnPool
+
+session_timeout_minutes :: Int
+session_timeout_minutes = 10080 -- (7 days)
+
+-- Yesod
+
+instance Yesod App where
+    approot = ApprootRequest \app req ->
+        case appRoot (appSettings app) of
+            Nothing -> getApprootText guessApproot app req
+            Just root -> root
+
+    makeSessionBackend :: App -> IO (Maybe SessionBackend)
+    makeSessionBackend App {appSettings} = do
+      backend <-
+        defaultClientSessionBackend
+          session_timeout_minutes
+          "config/client_session_key.aes"
+      maybeSSLOnly $ pure (Just backend)
+      where
+        maybeSSLOnly =
+          if appSSLOnly appSettings
+            then sslOnlySessions
+            else id
+
+    yesodMiddleware :: HandlerFor App res -> HandlerFor App res
+    yesodMiddleware = customMiddleware . defaultYesodMiddleware . defaultCsrfMiddleware
+      where
+        customMiddleware handler = do
+          addHeader "X-Frame-Options" "DENY"
+          yesod <- getYesod
+          (if appSSLOnly (appSettings yesod)
+             then sslOnlyMiddleware session_timeout_minutes
+             else id) handler
+
+    defaultLayout widget = do
+        req <- getRequest
+        master <- getYesod
+        urlrender <- getUrlRender
+        mmsg <- getMessage
+        musername <- maybeAuthUsername
+        muser <- (fmap.fmap) snd maybeAuthPair
+        let msourceCodeUri = appSourceCodeUri (appSettings master)
+        pc <- widgetToPageContent do
+            setTitle "Espial"
+            addAppScripts
+            addStylesheet (StaticR css_tachyons_min_css)
+            addStylesheet (StaticR css_main_css)
+            $(widgetFile "default-layout")
+        withUrlRenderer $(hamletFile "templates/default-layout-wrapper.hamlet")
+
+    addStaticContent ext mime content = do
+        master <- getYesod
+        let staticDir = appStaticDir (appSettings master)
+        addStaticContentExternal
+            minifym
+            genFileName
+            staticDir
+            (StaticR . flip StaticRoute [])
+            ext
+            mime
+            content
+      where
+        genFileName lbs = "autogen-" ++ base64md5 lbs
+
+    shouldLogIO app _source level =
+        pure $ appShouldLogAll (appSettings app) || level == LevelWarn || level == LevelError
+    makeLogger = return . appLogger
+
+    authRoute _ = Just (AuthR LoginR)
+
+    isAuthorized (AuthR _) _ = pure Authorized
+    isAuthorized _ _ = pure Authorized
+
+    defaultMessageWidget title body = do
+      setTitle title
+      toWidget [hamlet|
+        <main .pv2.ph3.mh1>
+          <div .w-100.mw8.center>
+            <div .pa3.bg-near-white>
+              <h1>#{title}
+              ^{body}
+      |]
+
+
+isAuthenticated :: Handler AuthResult
+isAuthenticated = maybeAuthId >>= \case
+                    Just authId -> pure Authorized
+                    _ -> pure $ AuthenticationRequired
+
+addAppScripts :: (MonadWidget m, HandlerSite m ~ App) => m ()
+addAppScripts = do
+  addScript (StaticR js_app_min_js) 
+
+
+-- popupLayout
+
+popupLayout :: Widget -> Handler Html
+popupLayout widget = do
+    req <- getRequest
+    master <- getYesod
+    mmsg <- getMessage
+    musername <- maybeAuthUsername
+    let msourceCodeUri = appSourceCodeUri (appSettings master)
+    pc <- widgetToPageContent do
+      addAppScripts
+      addStylesheet (StaticR css_tachyons_min_css)
+      addStylesheet (StaticR css_popup_css)
+      $(widgetFile "popup-layout")
+    withUrlRenderer $(hamletFile "templates/default-layout-wrapper.hamlet")
+
+
+-- YesodAuth
+
+instance YesodAuth App where
+  type AuthId App = UserId
+  authPlugins _ = [dbAuthPlugin]
+  authenticate = authenticateCreds
+  loginDest = const HomeR
+  logoutDest = const HomeR
+  onLogin = maybeAuth >>= \case
+    Nothing -> cpprint ("onLogin: could not find user" :: Text)
+    Just (Entity _ uname) -> setSession userNameKey (userName uname)
+  onLogout =
+    deleteSession userNameKey
+  redirectToReferer = const True
+
+instance YesodAuthPersist App
+
+-- session keys
+
+maybeAuthUsername :: Handler (Maybe Text)
+maybeAuthUsername = do
+  lookupSession userNameKey
+
+ultDestKey :: Text
+ultDestKey = "_ULT"
+
+userNameKey :: Text
+userNameKey = "_UNAME"
+
+-- dbAuthPlugin
+
+dbAuthPluginName :: Text
+dbAuthPluginName = "db"
+
+dbAuthPlugin :: AuthPlugin App
+dbAuthPlugin = AuthPlugin dbAuthPluginName dbDispatch dbLoginHandler
+  where
+    dbDispatch "POST" ["login"] = dbPostLoginR >>= sendResponse
+    dbDispatch _ _ = notFound
+    dbLoginHandler toParent = do
+      req <- getRequest
+      lookupSession ultDestKey >>= \case
+        Just dest | "logout" `isInfixOf` dest -> deleteSession ultDestKey
+        _ -> pure ()
+      setTitle "Espial | Log In"
+      $(widgetFile "login")
+
+dbLoginR :: AuthRoute
+dbLoginR = PluginR dbAuthPluginName ["login"]
+
+dbPostLoginR ::  AuthHandler master TypedContent
+dbPostLoginR = do
+  mresult <- runInputPostResult (dbLoginCreds
+               <$> ireq textField "username"
+               <*> ireq textField "password")
+  case mresult of
+    FormSuccess creds -> setCredsRedirect creds
+    _ -> loginErrorMessageI LoginR InvalidUsernamePass
+
+dbLoginCreds :: Text -> Text -> Creds master
+dbLoginCreds username password =
+  Creds
+  { credsPlugin = dbAuthPluginName
+  , credsIdent = username
+  , credsExtra = [("password", password)]
+  }
+
+authenticateCreds ::
+     (MonadHandler m, HandlerSite m ~ App)
+  => Creds App
+  -> m (AuthenticationResult App)
+authenticateCreds Creds {..} = do
+  muser <-
+    case credsPlugin of
+      p | p == dbAuthPluginName -> liftHandler $ runDB $
+        join <$> mapM (authenticatePassword credsIdent) (lookup "password" credsExtra)
+      _ -> pure Nothing
+  case muser of
+    Nothing -> pure (UserError InvalidUsernamePass)
+    Just (Entity uid _) -> pure (Authenticated uid)
+
+-- Util
+
+instance RenderMessage App FormMessage where
+    renderMessage :: App -> [Lang] -> FormMessage -> Text
+    renderMessage _ _ = defaultFormMessage
+
+instance HasHttpManager App where
+    getHttpManager :: App -> Manager
+    getHttpManager = appHttpManager
+
+unsafeHandler :: App -> Handler a -> IO a
+unsafeHandler = Unsafe.fakeHandlerGetLogger appLogger
+
diff --git a/src/Handler/AccountSettings.hs b/src/Handler/AccountSettings.hs
--- a/src/Handler/AccountSettings.hs
+++ b/src/Handler/AccountSettings.hs
@@ -8,7 +8,7 @@
   (_, user) <- requireAuthPair
   let accountSettingsEl = "accountSettings" :: Text
   let accountSettings = toAccountSettingsForm user
-  defaultLayout $ do
+  defaultLayout do
     $(widgetFile "user-settings")
     toWidgetBody [julius|
         app.userR = "@{UserR (UserNameP $ userName user)}";
@@ -34,17 +34,23 @@
 
 postChangePasswordR :: Handler Html
 postChangePasswordR = do
-  userId <- requireAuthId
-  mauthuname <- maybeAuthUsername
-  mresult <- runInputPostResult ((,) <$> ireq textField "oldpassword" <*> ireq textField "newpassword")
-  case (mauthuname, mresult) of
-    (Just uname, FormSuccess (old, new)) -> do
-      muser <- runDB (authenticatePassword uname old)
-      case muser of
-        Just _ -> do 
-          new' <- liftIO (hashPassword new)
-          void $ runDB (update userId [UserPasswordHash CP.=. new'])
-          setMessage "Password Changed Successfully"
-        _ -> setMessage "Incorrect Old Password"
+  (userId, user) <- requireAuthPair
+  runInputPostResult ((,) <$> ireq textField "oldpassword" <*> ireq textField "newpassword") >>= \case
+    FormSuccess (old, new) -> do
+      runDB (authenticatePassword (userName user) old) >>= \case
+        Nothing -> setMessage "Incorrect Old Password"
+        Just _ -> validateNewPassword new >>= \case
+          Just newValid -> do
+            newHash <- liftIO (hashPassword newValid)
+            void $ runDB (update userId [UserPasswordHash CP.=. newHash])
+            setMessage "Password Changed Successfully"
+          _ -> pure ()
     _ -> setMessage "Missing Required Fields"
   redirect ChangePasswordR
+
+validateNewPassword :: Text -> Handler (Maybe Text)
+validateNewPassword = \case
+    new | length new < 6 -> do
+          setMessage "Password must be at least 6 characters long"
+          pure Nothing
+    new -> pure $ Just new
diff --git a/src/Handler/Add.hs b/src/Handler/Add.hs
--- a/src/Handler/Add.hs
+++ b/src/Handler/Add.hs
@@ -1,67 +1,89 @@
-module Handler.Add where
-
-import Import
-import Handler.Archive
-import Data.List (nub)
-
--- View
-
-getAddViewR :: Handler Html
-getAddViewR = do
-  userId <- requireAuthId
-
-  murl <- lookupGetParam "url"
-  mformdb <- runDB (pure . fmap _toBookmarkForm =<< fetchBookmarkByUrl userId murl)
-  formurl <- bookmarkFormUrl
-
-  let renderEl = "addForm" :: Text
-
-  popupLayout $ do
-    toWidget [whamlet|
-      <div id="#{ renderEl }">
-    |]
-    toWidgetBody [julius|
-      app.dat.bmark = #{ toJSON (fromMaybe formurl mformdb) }; 
-    |]
-    toWidget [julius|
-      PS['Main'].renderAddForm('##{rawJS renderEl}')(app.dat.bmark)();
-    |]
-
-bookmarkFormUrl :: Handler BookmarkForm
-bookmarkFormUrl = do
-  Entity _ user <- requireAuth
-  BookmarkForm
-    <$> (lookupGetParam "url" >>= pure . fromMaybe "")
-    <*> (lookupGetParam "title")
-    <*> (lookupGetParam "description" >>= pure . fmap Textarea)
-    <*> (lookupGetParam "tags")
-    <*> (lookupGetParam "private" >>= pure . fmap parseChk <&> (<|> Just (userPrivateDefault user)))
-    <*> (lookupGetParam "toread" >>= pure . fmap parseChk)
-    <*> pure Nothing
-    <*> pure Nothing
-    <*> pure Nothing
-    <*> pure Nothing
-    <*> pure Nothing
-  where
-    parseChk s = s == "yes" || s == "on"
-
--- API
-
-postAddR :: Handler ()
-postAddR = do
-  bookmarkForm <- requireCheckJsonBody
-  _handleFormSuccess bookmarkForm >>= \case
-    (Created, bid) -> sendStatusJSON created201 bid
-    (Updated, _) -> sendResponseStatus noContent204 ()
-
-_handleFormSuccess :: BookmarkForm -> Handler (UpsertResult, Key Bookmark)
-_handleFormSuccess bookmarkForm = do
-  (userId, user) <- requireAuthPair
-  bm <- liftIO $ _toBookmark userId bookmarkForm
-  (res, kbid) <- runDB (upsertBookmark mkbid bm tags)
-  whenM (shouldArchiveBookmark user kbid) $
-    void $ async (archiveBookmarkUrl kbid (unpack (bookmarkHref bm)))
-  pure (res, kbid)
-  where
-    mkbid = BookmarkKey <$> _bid bookmarkForm
-    tags = maybe [] (nub . words) (_tags bookmarkForm)
+module Handler.Add where
+
+import Import
+import Handler.Archive
+import Data.List (nub)
+import qualified Data.Text as T (replace)
+
+-- View
+
+getAddViewR :: Handler Html
+getAddViewR = do
+  userId <- requireAuthId
+
+  murl <- lookupGetParam "url"
+  mBookmarkDb <- runDB (fetchBookmarkByUrl userId murl)
+  let mformdb = fmap _toBookmarkForm mBookmarkDb 
+  formurl <- bookmarkFormUrl
+
+  let renderEl = "addForm" :: Text
+
+  popupLayout do
+    toWidget [whamlet|
+      <div id="#{ renderEl }">
+    |]
+    toWidgetBody [julius|
+      app.dat.bmark = #{ toJSON (fromMaybe formurl mformdb) }; 
+    |]
+    toWidget [julius|
+      PS['Main'].renderAddForm('##{rawJS renderEl}')(app.dat.bmark)();
+    |]
+
+bookmarkFormUrl :: Handler BookmarkForm
+bookmarkFormUrl = do
+  Entity _ user <- requireAuth
+  url <- lookupGetParam "url" <&> fromMaybe ""
+  title <- lookupGetParam "title"
+  description <- lookupGetParam "description" <&> fmap Textarea
+  tags <- lookupGetParam "tags"
+  private <- lookupGetParam "private" <&> fmap parseChk <&> (<|> Just (userPrivateDefault user))
+  toread <- lookupGetParam "toread" <&> fmap parseChk
+  pure $
+    BookmarkForm
+    { _url = url
+    , _title = title
+    , _description = description
+    , _tags = tags
+    , _private = private
+    , _toread = toread
+    , _bid = Nothing
+    , _slug = Nothing
+    , _selected = Nothing
+    , _time = Nothing
+    , _archiveUrl = Nothing
+    }
+  where
+    parseChk s = s == "yes" || s == "on" || s == "true" || s == "1"
+
+-- API
+
+postAddR :: Handler Text
+postAddR = do
+  bookmarkForm <- requireCheckJsonBody
+  _handleFormSuccess bookmarkForm >>= \case
+    Created bid -> sendStatusJSON created201 bid
+    Updated _ -> sendResponseStatus noContent204 ()
+    Failed s -> sendResponseStatus status400 s
+
+_handleFormSuccess :: BookmarkForm -> Handler (UpsertResult (Key Bookmark))
+_handleFormSuccess bookmarkForm = do
+  (userId, user) <- requireAuthPair
+  case (parseRequest . unpack . _url) bookmarkForm of
+    Nothing -> pure $ Failed "Invalid URL"
+    Just _ -> do
+      let mkbid = BookmarkKey <$> _bid bookmarkForm
+          tags = maybe [] (nub . words . T.replace "," " ") (_tags bookmarkForm)
+      bm <- liftIO $ _toBookmark userId bookmarkForm
+      res <- runDB (upsertBookmark userId mkbid bm tags)
+      forM_ (maybeUpsertResult res) $ \kbid ->
+        whenM (shouldArchiveBookmark user kbid) $
+          void $ async (archiveBookmarkUrl kbid (unpack (bookmarkHref bm)))
+      pure res
+
+postLookupTitleR :: Handler ()
+postLookupTitleR = do
+  void requireAuthId
+  bookmarkForm <- (requireCheckJsonBody :: Handler BookmarkForm)
+  fetchPageTitle (unpack (_url bookmarkForm)) >>= \case
+    Left _ -> sendResponseStatus noContent204 ()
+    Right title -> sendResponseStatus ok200 title
diff --git a/src/Handler/Archive.hs b/src/Handler/Archive.hs
--- a/src/Handler/Archive.hs
+++ b/src/Handler/Archive.hs
@@ -2,7 +2,9 @@
 
 import Import
 import Data.Function ((&))
-import qualified Data.Attoparsec.ByteString.Char8 as AP
+import Data.Char (ord)
+import qualified Data.Attoparsec.ByteString.Char8 as AP8
+import qualified Data.Attoparsec.ByteString as AP
 import qualified Data.ByteString as BS
 import qualified Data.ByteString.Lazy as LBS
 import qualified Data.ByteString.Char8 as BS8
@@ -10,45 +12,56 @@
 import qualified Network.HTTP.Client.TLS as NH
 import qualified Network.HTTP.Types.Status as NH
 import qualified Web.FormUrlEncoded as WH
-import qualified Control.Monad.Metrics as MM
+import HTMLEntities.Decoder (htmlEncodedText)
+import Data.Text.Lazy.Builder (toLazyText)
+import Network.Wai (requestHeaderHost)
+import qualified Network.Connection as NC
 
 shouldArchiveBookmark :: User -> Key Bookmark -> Handler Bool
-shouldArchiveBookmark user kbid = do
+shouldArchiveBookmark user kbid =
   runDB (get kbid) >>= \case
-    Nothing -> pure False
-    Just bm -> do
-      pure $
-        (isNothing $ bookmarkArchiveHref bm) &&
-        (bookmarkShared bm)
-        && not (_isArchiveBlacklisted bm)
-        && not (userPrivacyLock user)
-        && userArchiveDefault user
+  Nothing -> pure False
 
+  Just bm -> do
+    pure $
+      isNothing (bookmarkArchiveHref bm) &&
+      bookmarkShared bm
+      && not (_isArchiveBlacklisted bm)
+      && userArchiveDefault user
+
+getArchiveManager :: Handler Manager
+getArchiveManager = do
+  appSettings <- appSettings <$> getYesod
+  let mSocks =
+        NC.SockSettingsSimple <$>
+        fmap unpack (appArchiveSocksProxyHost appSettings) <*>
+        fmap toEnum (appArchiveSocksProxyPort appSettings)
+  NH.newTlsManagerWith (NH.mkManagerSettings def mSocks)
+
+
 archiveBookmarkUrl :: Key Bookmark -> String -> Handler ()
 archiveBookmarkUrl kbid url =
   (_fetchArchiveSubmitInfo >>= \case
     Left e -> do
-      MM.increment "archive.fetchSubmitId_noparse"
       $(logError) (pack e)
     Right submitInfo ->  do
         userId <- requireAuthId
-        let req = _buildArchiveSubmitRequest submitInfo url
-        MM.increment "archive.submit"  
-        res <- liftIO $ NH.httpLbs req  =<< NH.getGlobalManager
+        req <- _buildArchiveSubmitRequest submitInfo url
+        manager <- getArchiveManager
+        res <- liftIO $ NH.httpLbs req manager
         let status = NH.responseStatus res
-        MM.increment ("archive.submit_status_" <> (pack.show) (NH.statusCode status)) 
         let updateArchiveUrl = runDB . updateBookmarkArchiveUrl userId kbid . Just
             headers = NH.responseHeaders res
         case status of
           s | s == NH.status200 ->
             for_ (lookup "Refresh" headers >>= _parseRefreshHeaderUrl) updateArchiveUrl
-          s | s == NH.status302 -> 
+          s | s == NH.status302 || s == NH.status307 ->
             for_ (lookup "Location" headers) (updateArchiveUrl . decodeUtf8)
           _ -> $(logError) (pack (show res)))
   `catch` (\(e::SomeException) -> ($(logError) $ (pack.show) e) >> throwIO e)
 
 _isArchiveBlacklisted :: Bookmark -> Bool
-_isArchiveBlacklisted (Bookmark {..}) =
+_isArchiveBlacklisted Bookmark {..} =
   [ "hulu"
   , "livestream"
   , "netflix"
@@ -64,43 +77,73 @@
 _parseRefreshHeaderUrl :: ByteString -> Maybe Text
 _parseRefreshHeaderUrl h = do
   let u = BS8.drop 1 $ BS8.dropWhile (/= '=') h
-  if (not (null u))
+  if not (null u)
     then Just $ decodeUtf8 u
     else Nothing
 
-_buildArchiveSubmitRequest :: (String, String) -> String -> NH.Request
-_buildArchiveSubmitRequest (action, submitId) href =
-  NH.parseRequest_ ("POST " <> action) & \r ->
-    r { NH.requestHeaders =
-        [ ("User-Agent", _archiveUserAgent)
-        , ("Content-Type", "application/x-www-form-urlencoded")
-        ]
-      , NH.requestBody = NH.RequestBodyLBS $ WH.urlEncodeAsForm ((
-        [ ("submitid" , submitId)
-        , ("url", href)
-        ]) :: [(String, String)])
-      , NH.redirectCount = 0
-      }
-
 _fetchArchiveSubmitInfo :: Handler (Either String (String , String))
 _fetchArchiveSubmitInfo = do
-  MM.increment "archive.fetchSubmitId"  
-  res <- liftIO $ NH.httpLbs buildSubmitRequest =<< NH.getGlobalManager
-  MM.increment ("archive.fetchSubmitId_status_" <> (pack.show) (NH.statusCode (NH.responseStatus res))) 
+  req <- buildRequest "https://archive.li/"
+  manager <- getArchiveManager
+  res <- liftIO $ NH.httpLbs req manager
   let body = LBS.toStrict (responseBody res)
-      action = _parseSubstring (AP.string "action=\"") (AP.notChar '"') body
-      submitId = _parseSubstring (AP.string "submitid\" value=\"") (AP.notChar '"') body
-  pure $ (,) <$> action <*> submitId
+      action = _parseSubstring (AP8.string "action=\"") (AP8.notChar '"') body
+      submitId = _parseSubstring (AP8.string "submitid\" value=\"") (AP8.notChar '"') body
+  if statusCode (responseStatus res) == 200
+    then pure $ (,) <$> action <*> submitId
+    else pure $ Left $ "Invalid statusCode: " <> show (responseStatus res)
+
+
+_parseSubstring :: AP8.Parser ByteString -> AP8.Parser Char -> BS.ByteString -> Either String String
+_parseSubstring start inner = AP8.parseOnly (skipAnyTill start >> AP8.many1 inner)
   where
-    buildSubmitRequest =
-      NH.parseRequest_ "https://archive.li/" & \r ->
-        r {NH.requestHeaders = [("User-Agent", _archiveUserAgent)]}
+    skipAnyTill end = go where go = end $> () <|> AP8.anyChar *> go
 
-_archiveUserAgent :: ByteString
-_archiveUserAgent = "espial"
 
-_parseSubstring :: AP.Parser ByteString -> AP.Parser Char -> BS.ByteString -> Either String String
-_parseSubstring start inner res = do
-  (flip AP.parseOnly) res (skipAnyTill start >> AP.many1 inner)
+fetchPageTitle :: String -> Handler (Either String Text)
+fetchPageTitle url =
+  do
+     req <- buildRequest url
+     res <- liftIO $ NH.httpLbs req =<< NH.getGlobalManager
+     let body = LBS.toStrict (responseBody res)
+     pure (decodeHtmlBs <$> parseTitle body)
+     `catch` (\(e :: SomeException) -> do
+                $(logError) $ (pack . show) e
+                pure (Left (show e)))
   where
-    skipAnyTill end = go where go = end *> pure () <|> AP.anyChar *> go
+    parseTitle bs =
+      flip AP.parseOnly bs do
+        _ <- skipAnyTill (AP.string "<title")
+        _ <- skipAnyTill (AP.string ">")
+        let lt = toEnum (ord '<')
+        AP.takeTill (== lt)
+    decodeHtmlBs = toStrict . toLazyText . htmlEncodedText . decodeUtf8
+    skipAnyTill end = go where go = end $> () <|> AP.anyWord8 *> go
+
+_buildArchiveSubmitRequest :: (String, String) -> String -> Handler NH.Request
+_buildArchiveSubmitRequest (action, submitId) href = do
+  req <- buildRequest ("POST " <> action)
+  pure $ req
+    { NH.requestHeaders = ("Content-Type", "application/x-www-form-urlencoded") : NH.requestHeaders req
+    , NH.requestBody =
+        NH.RequestBodyLBS $
+        WH.urlEncodeAsForm
+            ([("submitid", submitId), ("url", href)] :: [(String, String)])
+    , NH.redirectCount = 0
+    }
+
+buildRequest :: String -> Handler Request
+buildRequest url = do
+  ua <- _archiveUserAgent
+  pure $ NH.parseRequest_ url & \r ->
+    r { NH.requestHeaders =
+          [ ("Cache-Control", "max-age=0")
+          , ("User-Agent", ua)
+          ]
+      }
+
+_archiveUserAgent :: Handler ByteString
+_archiveUserAgent = do
+  mHost <- requestHeaderHost . reqWaiRequest <$> getRequest
+  pure $ "espial-" <> maybe "" (BS8.takeWhile (/= ':')) mHost
+
diff --git a/src/Handler/Common.hs b/src/Handler/Common.hs
--- a/src/Handler/Common.hs
+++ b/src/Handler/Common.hs
@@ -5,6 +5,7 @@
 
 import Data.FileEmbed (embedFile)
 import Text.Read
+import Data.Aeson as A
 
 -- These handlers embed files in the executable at compile time to avoid a
 -- runtime dependency, and for efficiency.
@@ -21,11 +22,49 @@
 
 
 lookupPagingParams :: Handler (Maybe Int64, Maybe Int64)
-lookupPagingParams = do
-  cq <- fmap parseMaybe (lookupGetParam "count")
-  cs <- fmap parseMaybe (lookupSession "count")
-  for_ cq (setSession "count" . (pack . show)) 
-  pq <- fmap parseMaybe (lookupGetParam "page")
-  pure (cq <|> cs, pq)
+lookupPagingParams =
+  (,)
+  <$> getUrlSessionParam "count"
+  <*> getUrlParam "page"
+
+getUrlParam :: (Read a) => Text -> Handler (Maybe a)
+getUrlParam name = do
+  fmap parseMaybe (lookupGetParam name)
   where
     parseMaybe x = readMaybe . unpack =<< x
+
+getUrlSessionParam :: forall a.
+  (Show a, Read a)
+  => Text
+  -> Handler (Maybe a)
+getUrlSessionParam name = do
+  p <- fmap parseMaybe (lookupGetParam name)
+  s <- fmap parseMaybe (lookupSession name)
+  for_ p (setSession name . (pack . show))
+  pure (p <|> s)
+  where
+    parseMaybe :: Maybe Text -> Maybe a
+    parseMaybe x = readMaybe . unpack =<< x
+
+lookupTagCloudMode :: MonadHandler m => m (Maybe TagCloudMode)
+lookupTagCloudMode = do
+  (A.decode . fromStrict =<<) <$> lookupSessionBS "tagCloudMode"
+
+setTagCloudMode :: MonadHandler m => TagCloudMode -> m ()
+setTagCloudMode = setSessionBS "tagCloudMode" . toStrict . A.encode
+
+getTagCloudMode :: MonadHandler m => Bool -> [Tag] -> m TagCloudMode
+getTagCloudMode isowner tags = do
+  ms <- lookupTagCloudMode
+  let expanded = maybe False isExpanded ms
+  pure $
+    if not isowner
+      then TagCloudModeNone
+      else if not (null tags)
+             then TagCloudModeRelated expanded tags
+             else case ms of
+                    Nothing -> TagCloudModeTop expanded 200
+                    Just (TagCloudModeRelated e _) -> TagCloudModeTop e 200
+                    Just m -> m
+
+
diff --git a/src/Handler/Docs.hs b/src/Handler/Docs.hs
--- a/src/Handler/Docs.hs
+++ b/src/Handler/Docs.hs
@@ -5,5 +5,5 @@
 import Import
 
 getDocsSearchR :: Handler Html
-getDocsSearchR = popupLayout $
+getDocsSearchR = popupLayout
   $(widgetFile "docs-search")
diff --git a/src/Handler/Edit.hs b/src/Handler/Edit.hs
--- a/src/Handler/Edit.hs
+++ b/src/Handler/Edit.hs
@@ -11,16 +11,16 @@
 deleteDeleteR :: Int64 -> Handler Html
 deleteDeleteR bid = do
   userId <- requireAuthId
-  runDB $ do
+  runDB do
     let k_bid = BookmarkKey bid
     _ <- requireResource userId k_bid
-    deleteCascade k_bid
+    delete k_bid
   return ""
 
 postReadR :: Int64 -> Handler Html
 postReadR bid = do
   userId <- requireAuthId
-  runDB $ do
+  runDB do
     let k_bid = BookmarkKey bid
     _ <- requireResource userId k_bid
     update k_bid [BookmarkToRead =. False]
@@ -37,7 +37,7 @@
 _setSelected :: Int64 -> Bool -> Handler Html
 _setSelected bid selected = do
   userId <- requireAuthId
-  runDB $ do
+  runDB do
     let k_bid = BookmarkKey bid
     bm <- requireResource userId k_bid
     update k_bid [BookmarkSelected =. selected]
diff --git a/src/Handler/Notes.hs b/src/Handler/Notes.hs
--- a/src/Handler/Notes.hs
+++ b/src/Handler/Notes.hs
@@ -1,34 +1,42 @@
 {-# OPTIONS_GHC -fno-warn-unused-matches #-}
+{-# LANGUAGE TupleSections #-}
 module Handler.Notes where
 
 import Import
 import Handler.Common (lookupPagingParams)
 import qualified Data.Aeson as A
 import qualified Data.Text as T
+import           Yesod.RssFeed
+import qualified Text.Blaze.Html5 as H
 
 getNotesR :: UserNameP -> Handler Html
 getNotesR unamep@(UserNameP uname) = do
-  void requireAuthId
+  mauthuname <- maybeAuthUsername
   (limit', page') <- lookupPagingParams
-  let queryp = "query" :: Text
+  let queryp = "query"
   mquery <- lookupGetParam queryp
   let limit = maybe 20 fromIntegral limit'
-      page  = maybe 1   fromIntegral page'
-      mqueryp = fmap (\q -> (queryp, q)) mquery 
-  (bcount, notes) <- 
-    runDB $
-    do Entity userId _ <- getBy404 (UniqueUserName uname)
-       getNoteList userId mquery limit page
+      page  = maybe 1  fromIntegral page'
+      mqueryp = fmap (queryp,) mquery
+      isowner = Just uname == mauthuname
+  (bcount, notes) <- runDB do
+    Entity userId user <- getBy404 (UniqueUserName uname)
+    let sharedp = if isowner then SharedAll else SharedPublic
+    when (not isowner && userPrivacyLock user)
+      (redirect (AuthR LoginR))
+    getNoteList userId mquery sharedp limit page
   req <- getRequest
-  mroute <- getCurrentRoute 
-  defaultLayout $ do
+  mroute <- getCurrentRoute
+  defaultLayout do
+    rssLink (NotesFeedR unamep) "feed"
     let pager = $(widgetFile "pager")
         search = $(widgetFile "search")
         renderEl = "notes" :: Text
     $(widgetFile "notes")
     toWidgetBody [julius|
         app.userR = "@{UserR unamep}";
-        app.dat.notes = #{ toJSON notes } || []; 
+        app.dat.notes = #{ toJSON notes } || [];
+        app.dat.isowner = #{ isowner };
     |]
     toWidget [julius|
       PS['Main'].renderNotes('##{rawJS renderEl}')(app.dat.notes)();
@@ -36,36 +44,45 @@
 
 getNoteR :: UserNameP -> NtSlug -> Handler Html
 getNoteR unamep@(UserNameP uname) slug = do
-  void requireAuthId
+  mauthuname <- maybeAuthUsername
   let renderEl = "note" :: Text
+      isowner = Just uname == mauthuname
   note <-
     runDB $
-    do Entity userId _ <- getBy404 (UniqueUserName uname)
+    do Entity userId user <- getBy404 (UniqueUserName uname)
        mnote <- getNote userId slug
-       maybe notFound pure mnote
-  defaultLayout $ do
-    addScript (StaticR js_marked_min_js)
+       note <- maybe notFound pure mnote
+       when (not isowner && (userPrivacyLock user || (not . noteShared . entityVal) note))
+         (redirect (AuthR LoginR))
+       pure note
+  defaultLayout do
     $(widgetFile "note")
     toWidgetBody [julius|
         app.userR = "@{UserR unamep}";
-        app.dat.note = #{ toJSON note } || []; 
+        app.dat.note = #{ toJSON note } || [];
+        app.dat.isowner = #{ isowner };
     |]
     toWidget [julius|
       PS['Main'].renderNote('##{rawJS renderEl}')(app.dat.note)();
     |]
 
+getAddNoteSlimViewR :: Handler Html
+getAddNoteSlimViewR = do
+  Entity userId user <- requireAuth
+  getAddNoteViewR (UserNameP (userName user))
+
 getAddNoteViewR :: UserNameP -> Handler Html
 getAddNoteViewR unamep@(UserNameP uname) = do
   userId <- requireAuthId
+  note <- liftIO . _toNote userId =<< noteFormUrl
   let renderEl = "note" :: Text
-  note <- liftIO $ Entity (NoteKey 0) <$> _toNote userId (NoteForm Nothing Nothing Nothing Nothing Nothing Nothing Nothing)
-  defaultLayout $ do
-    addScript (StaticR js_marked_min_js)
+      enote = Entity (NoteKey 0) note
+  defaultLayout do
     $(widgetFile "note")
     toWidgetBody [julius|
         app.userR = "@{UserR unamep}";
-        app.noteR = "@{NoteR unamep (noteSlug (entityVal note))}";
-        app.dat.note = #{ toJSON note } || []; 
+        app.noteR = "@{NoteR unamep (noteSlug (entityVal enote))}";
+        app.dat.note = #{ toJSON enote } || [];
     |]
     toWidget [julius|
       PS['Main'].renderNote('##{rawJS renderEl}')(app.dat.note)();
@@ -74,18 +91,19 @@
 deleteDeleteNoteR :: Int64 -> Handler Html
 deleteDeleteNoteR nid = do
   userId <- requireAuthId
-  runDB $ do
+  runDB do
     let k_nid = NoteKey nid
     _ <- requireResource userId k_nid
-    deleteCascade k_nid
+    delete k_nid
   return ""
 
-postAddNoteR :: Handler ()
+postAddNoteR :: Handler Text
 postAddNoteR = do
   noteForm <- requireCheckJsonBody
   _handleFormSuccess noteForm >>= \case
-    (Created, nid) -> sendStatusJSON created201 nid
-    (Updated, _) -> sendResponseStatus noContent204 ()
+    Created nid -> sendStatusJSON created201 nid
+    Updated _ -> sendResponseStatus noContent204 ()
+    Failed s -> sendResponseStatus status400 s
 
 requireResource :: UserId -> Key Note -> DBM Handler Note
 requireResource userId k_nid = do
@@ -94,11 +112,11 @@
     then return nnote
     else notFound
 
-_handleFormSuccess :: NoteForm -> Handler (UpsertResult, Key Note)
+_handleFormSuccess :: NoteForm -> Handler (UpsertResult (Key Note))
 _handleFormSuccess noteForm = do
   userId <- requireAuthId
   note <- liftIO $ _toNote userId noteForm
-  runDB (upsertNote knid note)
+  runDB (upsertNote userId knid note)
   where
     knid = NoteKey <$> (_id noteForm >>= \i -> if i > 0 then Just i else Nothing)
 
@@ -108,6 +126,7 @@
   , _title :: Maybe Text
   , _text :: Maybe Textarea
   , _isMarkdown :: Maybe Bool
+  , _shared :: Maybe Bool
   , _created :: Maybe UTCTimeStr
   , _updated :: Maybe UTCTimeStr
   } deriving (Show, Eq, Read, Generic)
@@ -116,19 +135,81 @@
 instance ToJSON NoteForm where toJSON = A.genericToJSON gNoteFormOptions
 
 gNoteFormOptions :: A.Options
-gNoteFormOptions = A.defaultOptions { A.fieldLabelModifier = drop 1 } 
+gNoteFormOptions = A.defaultOptions { A.fieldLabelModifier = drop 1 }
 
+noteFormUrl :: Handler NoteForm
+noteFormUrl = do
+  title <- lookupGetParam "title"
+  description <- lookupGetParam "description" <&> fmap Textarea
+  isMarkdown <- lookupGetParam "isMarkdown" <&> fmap parseChk
+  pure $ NoteForm
+    { _id = Nothing
+    , _slug = Nothing
+    , _title = title
+    , _text = description
+    , _isMarkdown = isMarkdown
+    , _shared = Nothing
+    , _created = Nothing
+    , _updated = Nothing
+    }
+  where
+    parseChk s = s == "yes" || s == "on" || s == "true" || s == "1"
+
 _toNote :: UserId -> NoteForm -> IO Note
 _toNote userId NoteForm {..} = do
   time <- liftIO getCurrentTime
   slug <- maybe mkNtSlug pure _slug
   pure $
     Note
-      userId
-      slug
-      (length _text)
-      (fromMaybe "" _title)
-      (maybe "" unTextarea _text)
-      (fromMaybe False _isMarkdown)
-      (fromMaybe time (fmap unUTCTimeStr _created))
-      (fromMaybe time (fmap unUTCTimeStr _updated))
+    { noteUserId = userId
+    , noteSlug = slug
+    , noteLength = length _text
+    , noteTitle = fromMaybe "" _title
+    , noteText = maybe "" unTextarea _text
+    , noteIsMarkdown = Just True == _isMarkdown
+    , noteShared = Just True == _shared
+    , noteCreated = maybe time unUTCTimeStr _created
+    , noteUpdated = maybe time unUTCTimeStr _updated
+    }
+
+noteToRssEntry :: UserNameP -> Entity Note -> FeedEntry (Route App)
+noteToRssEntry usernamep (Entity entryId entry) =
+  FeedEntry
+  { feedEntryLink = NoteR usernamep (noteSlug entry)
+  , feedEntryUpdated = noteUpdated entry
+  , feedEntryTitle = noteTitle entry
+  , feedEntryContent = toHtml (noteText entry)
+  , feedEntryEnclosure = Nothing
+  , feedEntryCategories = []
+  }
+
+getNotesFeedR :: UserNameP -> Handler RepRss
+getNotesFeedR unamep@(UserNameP uname) = do
+  mauthuname <- maybeAuthUsername
+  (limit', page') <- lookupPagingParams
+  mquery <- lookupGetParam "query"
+  let limit = maybe 20 fromIntegral limit'
+      page  = maybe 1   fromIntegral page'
+      isowner = Just uname == mauthuname
+  (_, notes) <- runDB do
+      Entity userId user <- getBy404 (UniqueUserName uname)
+      when (not isowner && userPrivacyLock user)
+        (redirect (AuthR LoginR))
+      getNoteList userId mquery SharedPublic limit page
+  let (descr :: Html) = toHtml $ H.text (uname <> " notes")
+      entries = map (noteToRssEntry unamep) notes
+  updated <- case maximumMay (map feedEntryUpdated entries) of
+                Nothing -> liftIO getCurrentTime
+                Just m ->  return m
+  rssFeed $
+    Feed
+    { feedTitle = uname <> " notes"
+    , feedLinkSelf = NotesFeedR unamep
+    , feedLinkHome = NotesR unamep
+    , feedAuthor = uname
+    , feedDescription = descr
+    , feedLanguage = "en"
+    , feedUpdated = updated
+    , feedLogo = Nothing
+    , feedEntries = entries
+    }
diff --git a/src/Handler/User.hs b/src/Handler/User.hs
--- a/src/Handler/User.hs
+++ b/src/Handler/User.hs
@@ -1,62 +1,143 @@
-{-# OPTIONS_GHC -fno-warn-unused-matches #-}
-module Handler.User where
-
-import Import
-import qualified Data.Text as T
-import Handler.Common (lookupPagingParams)
-
-getUserR :: UserNameP -> Handler Html
-getUserR uname@(UserNameP name) = do
-  _getUser uname SharedAll FilterAll (TagsP [])
-
-getUserSharedR :: UserNameP -> SharedP -> Handler Html
-getUserSharedR uname sharedp =
-  _getUser uname sharedp FilterAll (TagsP [])
-
-getUserFilterR :: UserNameP -> FilterP -> Handler Html
-getUserFilterR uname filterp =
-  _getUser uname SharedAll filterp (TagsP [])
-
-getUserTagsR :: UserNameP -> TagsP -> Handler Html
-getUserTagsR uname pathtags =
-  _getUser uname SharedAll FilterAll pathtags
-
-_getUser :: UserNameP -> SharedP -> FilterP -> TagsP -> Handler Html
-_getUser unamep@(UserNameP uname) sharedp' filterp' (TagsP pathtags) = do
-  mauthuname <- maybeAuthUsername
-  (limit', page') <- lookupPagingParams
-  let limit = maybe 120 fromIntegral limit'
-      page  = maybe 1   fromIntegral page'
-      isowner = maybe False (== uname) mauthuname
-      sharedp = if isowner then sharedp' else SharedPublic
-      filterp = case filterp' of
-        FilterSingle _ -> filterp'
-        _ -> if isowner then filterp' else FilterAll
-      isAll = filterp == FilterAll && sharedp == SharedAll && pathtags == []
-      queryp = "query" :: Text
-  mquery <- lookupGetParam queryp
-  let mqueryp = fmap (\q -> (queryp, q)) mquery 
-  (bcount, bmarks, alltags) <-
-    runDB $
-    do Entity userId user <- getBy404 (UniqueUserName uname)
-       when (not isowner && userPrivacyLock user)
-         (redirect (AuthR LoginR))
-       (cnt, bm) <- bookmarksQuery userId sharedp filterp pathtags mquery limit page
-       tg <- tagsQuery bm
-       pure (cnt, bm, tg)
-  when (bcount == 0) (case filterp of FilterSingle _ -> notFound; _ -> pure ())
-  mroute <- getCurrentRoute 
-  req <- getRequest
-  defaultLayout $ do
-    let pager = $(widgetFile "pager")
-        search = $(widgetFile "search")
-        renderEl = "bookmarks" :: Text
-    $(widgetFile "user")
-    toWidgetBody [julius|
-        app.dat.bmarks = #{ toJSON $ toBookmarkFormList bmarks alltags } || []; 
-        app.dat.isowner = #{ isowner };
-        app.userR = "@{UserR unamep}";
-    |]
-    toWidget [julius|
-      PS['Main'].renderBookmarks('##{rawJS renderEl}')(app.dat.bmarks)();
-    |]
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+{-# LANGUAGE TupleSections #-}
+module Handler.User where
+
+import qualified Data.Text as T
+import           Handler.Common
+import           Import
+import qualified Text.Blaze.Html5 as H
+import           Yesod.RssFeed
+import qualified Data.Map as Map
+
+getUserR :: UserNameP -> Handler Html
+getUserR uname@(UserNameP name) =
+  _getUser uname SharedAll FilterAll (TagsP [])
+
+getUserSharedR :: UserNameP -> SharedP -> Handler Html
+getUserSharedR uname sharedp =
+  _getUser uname sharedp FilterAll (TagsP [])
+
+getUserFilterR :: UserNameP -> FilterP -> Handler Html
+getUserFilterR uname filterp =
+  _getUser uname SharedAll filterp (TagsP [])
+
+getUserTagsR :: UserNameP -> TagsP -> Handler Html
+getUserTagsR uname = _getUser uname SharedAll FilterAll
+
+_getUser :: UserNameP -> SharedP -> FilterP -> TagsP -> Handler Html
+_getUser unamep@(UserNameP uname) sharedp' filterp' (TagsP pathtags) = do
+  mauthuname <- maybeAuthUsername
+  (limit', page') <- lookupPagingParams
+  let limit = maybe 120 fromIntegral limit'
+      page  = maybe 1   fromIntegral page'
+      isowner = Just uname == mauthuname
+      sharedp = if isowner then sharedp' else SharedPublic
+      filterp = case filterp' of
+        FilterSingle _ -> filterp'
+        _ -> if isowner then filterp' else FilterAll
+      isAll = filterp == FilterAll && sharedp == SharedAll && null pathtags
+      queryp = "query" :: Text
+  mquery <- lookupGetParam queryp
+  let mqueryp = fmap (queryp,) mquery
+  (bcount, btmarks) <- runDB $ do
+       Entity userId user <- getBy404 (UniqueUserName uname)
+       when (not isowner && userPrivacyLock user)
+         (redirect (AuthR LoginR))
+       bookmarksTagsQuery userId sharedp filterp pathtags mquery limit page
+  when (bcount == 0) (case filterp of FilterSingle _ -> notFound; _ -> pure ())
+  mroute <- getCurrentRoute
+  tagCloudMode <- getTagCloudMode isowner pathtags
+  req <- getRequest
+  defaultLayout do
+    let pager = $(widgetFile "pager")
+        search = $(widgetFile "search")
+        renderEl = "bookmarks" :: Text
+        tagCloudRenderEl = "tagCloud" :: Text
+    rssLink (UserFeedR unamep) "feed"
+    $(widgetFile "user")
+    toWidgetBody [julius|
+        app.dat.bmarks = #{ toJSON $ toBookmarkFormList btmarks } || [];
+        app.dat.isowner = #{ isowner };
+        app.userR = "@{UserR unamep}";
+        app.tagCloudMode = #{ toJSON $ tagCloudMode } || {};
+    |]
+    toWidget [julius|
+      setTimeout(() => {
+        PS['Main'].renderBookmarks('##{rawJS renderEl}')(app.dat.bmarks)();
+      }, 0);
+      setTimeout(() => {
+        PS['Main'].renderTagCloud('##{rawJS tagCloudRenderEl}')(app.tagCloudMode)();
+      }, 0);
+    |]
+
+-- Form
+
+postUserTagCloudR :: Handler ()
+postUserTagCloudR = do
+  userId <- requireAuthId
+  mode <- requireCheckJsonBody
+  _updateTagCloudMode mode
+  tc <- runDB $ case mode of
+    TagCloudModeTop _ n -> tagCountTop userId n
+    TagCloudModeLowerBound _ n -> tagCountLowerBound userId n
+    TagCloudModeRelated _ tags ->  tagCountRelated userId tags
+    TagCloudModeNone -> notFound
+  sendStatusJSON ok200 (Map.fromList tc :: Map.Map Text Int)
+
+postUserTagCloudModeR :: Handler ()
+postUserTagCloudModeR = do
+  userId <- requireAuthId
+  mode <- requireCheckJsonBody
+  _updateTagCloudMode mode
+
+_updateTagCloudMode :: TagCloudMode -> Handler ()
+_updateTagCloudMode mode =
+  case mode of
+    TagCloudModeTop _ _ -> setTagCloudMode mode
+    TagCloudModeLowerBound _ _ -> setTagCloudMode mode
+    TagCloudModeRelated _ _ -> setTagCloudMode mode
+    TagCloudModeNone -> notFound
+
+bookmarkToRssEntry :: (Entity Bookmark, Maybe Text) -> FeedEntry Text
+bookmarkToRssEntry (Entity entryId entry, tags) =
+  FeedEntry
+  { feedEntryLink = bookmarkHref entry
+  , feedEntryUpdated = bookmarkTime entry
+  , feedEntryTitle = bookmarkDescription entry
+  , feedEntryContent = toHtml (bookmarkExtended entry)
+  , feedEntryCategories = map (EntryCategory Nothing Nothing) (maybe [] words tags)
+  , feedEntryEnclosure = Nothing
+  }
+
+getUserFeedR :: UserNameP -> Handler RepRss
+getUserFeedR unamep@(UserNameP uname) = do
+  mauthuname <- maybeAuthUsername
+  (limit', page') <- lookupPagingParams
+  let limit = maybe 120 fromIntegral limit'
+      page  = maybe 1   fromIntegral page'
+      queryp = "query" :: Text
+      isowner = Just uname == mauthuname
+  mquery <- lookupGetParam queryp
+  (_, btmarks) <- runDB $ do
+       Entity userId user <- getBy404 (UniqueUserName uname)
+       when (not isowner && userPrivacyLock user)
+         (redirect (AuthR LoginR))
+       bookmarksTagsQuery userId SharedPublic FilterAll [] mquery limit page
+  let (descr :: Html) = toHtml $ H.text ("Bookmarks saved by " <> uname)
+      entries = map bookmarkToRssEntry btmarks
+  updated <- case maximumMay (map feedEntryUpdated entries) of
+                Nothing -> liftIO getCurrentTime
+                Just m ->  return m
+  render <- getUrlRender
+  rssFeedText $
+    Feed
+    { feedTitle = "espial " <> uname
+    , feedLinkSelf = render (UserFeedR unamep)
+    , feedLinkHome = render (UserR unamep)
+    , feedAuthor = uname
+    , feedDescription = descr
+    , feedLanguage = "en"
+    , feedUpdated = updated
+    , feedLogo = Nothing
+    , feedEntries = entries
+    }
diff --git a/src/Import.hs b/src/Import.hs
--- a/src/Import.hs
+++ b/src/Import.hs
@@ -24,7 +24,7 @@
   mct <- lookupHeader "content-type"
   case fmap (B8.takeWhile (/= ';')) mct of
     Just "application/json" ->
-      parseJsonBody >>= \case
+      parseCheckJsonBody >>= \case
         A.Success a -> pure $ FormSuccess a
         A.Error e -> pure $ FormFailure [pack e]
     Just "application/x-www-form-urlencoded" ->
@@ -48,13 +48,13 @@
   :: MonadHandler f
   => AForm f a -> f (Maybe a)
 aFormToMaybeGetSuccess =
-  fmap maybeSuccess . fmap fst . runFormGet . const . fmap fst . aFormToForm
+  fmap (maybeSuccess . fst) . runFormGet . const . fmap fst . aFormToForm
 
 aFormToMaybePostSuccess
   :: MonadHandlerForm f
   => AForm f a -> f (Maybe a)
 aFormToMaybePostSuccess =
-  fmap maybeSuccess . fmap fst . runFormPostNoToken . const . fmap fst . aFormToForm
+  fmap (maybeSuccess . fst) . runFormPostNoToken . const . fmap fst . aFormToForm
 
 maybeSuccess :: FormResult a -> Maybe a
 maybeSuccess (FormSuccess a) = Just a
@@ -83,4 +83,4 @@
   }
 
 cls :: [Text] -> FieldSettings master -> FieldSettings master
-cls n = attrs [("class", intercalate " " n)]
+cls n = attrs [("class", unwords n)]
diff --git a/src/Model.hs b/src/Model.hs
--- a/src/Model.hs
+++ b/src/Model.hs
@@ -1,569 +1,837 @@
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-
-module Model where
-
-import qualified ClassyPrelude.Yesod as CP
-import qualified Data.Aeson as A
-import qualified Data.Attoparsec.Text as P
-import qualified Control.Monad.Combinators as PC
-import qualified Data.List.NonEmpty as NE
-import qualified Data.Time.ISO8601 as TI
-import qualified Database.Esqueleto as E
-import qualified Data.Time as TI
-import ClassyPrelude.Yesod hiding ((||.))
-import Control.Monad.Trans.Maybe
-import Control.Monad.Writer (tell)
-import Data.Char (isSpace)
-import Data.Either (fromRight)
-import Data.Foldable (foldl, foldl1, sequenceA_)
-import Data.List.NonEmpty (NonEmpty(..))
-import Database.Esqueleto hiding ((==.))
-import Pretty
-import System.Directory
-import Types
-
-import ModelCustom
-
-share [mkPersist sqlSettings, mkDeleteCascade sqlSettings, mkMigrate "migrateSchema"] [persistLowerCase| 
-User json
-  Id Int64
-  name Text
-  passwordHash BCrypt
-  apiToken Text Maybe
-  privateDefault Bool
-  archiveDefault Bool
-  privacyLock Bool
-  UniqueUserName name
-  deriving Show Eq Typeable Ord
-
-Bookmark json
-  Id Int64
-  userId UserId
-  slug BmSlug default="(lower(hex(randomblob(6))))"
-  href Text
-  description Text
-  extended Text
-  time UTCTime
-  shared Bool
-  toRead Bool
-  selected Bool
-  archiveHref Text Maybe
-  UniqueUserHref userId href
-  UniqueUserSlug userId slug
-  deriving Show Eq Typeable Ord
-
-BookmarkTag json
-  Id Int64
-  userId UserId
-  tag Text
-  bookmarkId BookmarkId
-  seq Int
-  UniqueUserTagBookmarkId userId tag bookmarkId
-  UniqueUserBookmarkIdTagSeq userId bookmarkId tag seq
-  deriving Show Eq Typeable Ord
-
-Note json
-  Id Int64
-  userId UserId
-  slug NtSlug default="(lower(hex(randomblob(10))))"
-  length Int
-  title Text
-  text Text
-  isMarkdown Bool
-  created UTCTime
-  updated UTCTime
-  deriving Show Eq Typeable Ord
-|]
-
-newtype UTCTimeStr =
-  UTCTimeStr { unUTCTimeStr :: UTCTime }
-  deriving (Eq, Show, Read, Generic, FromJSON, ToJSON)
-
-instance PathPiece UTCTimeStr where
-  toPathPiece (UTCTimeStr u) = pack (TI.formatISO8601Millis u)
-  fromPathPiece s = UTCTimeStr <$> TI.parseISO8601 (unpack s)
-
-newtype UserNameP =
-  UserNameP { unUserNameP :: Text }
-  deriving (Eq, Show, Read)
-
-newtype TagsP =
-  TagsP { unTagsP :: [Text] }
-  deriving (Eq, Show, Read)
-
-data SharedP
-  = SharedAll
-  | SharedPublic
-  | SharedPrivate
-  deriving (Eq, Show, Read)
-
-data FilterP
-  = FilterAll
-  | FilterUnread
-  | FilterUntagged
-  | FilterStarred
-  | FilterSingle BmSlug
-  deriving (Eq, Show, Read)
-
-newtype UnreadOnly =
-  UnreadOnly { unUnreadOnly :: Bool }
-  deriving (Eq, Show, Read)
-
-type Limit = Int64
-type Page = Int64
-
-migrateAll :: Migration
-migrateAll = migrateSchema >> migrateIndexes
-
-dumpMigration :: DB ()
-dumpMigration = printMigration migrateAll
-
-runMigrations :: DB ()
-runMigrations = runMigration migrateAll
-
-toMigration :: [Text] -> Migration
-toMigration = lift . tell . fmap (False ,)
-
-migrateIndexes :: Migration
-migrateIndexes =
-  toMigration
-    [ "CREATE INDEX IF NOT EXISTS idx_bookmark_time ON bookmark (user_id, time DESC)"
-    , "CREATE INDEX IF NOT EXISTS idx_bookmark_tag_bookmark_id ON bookmark_tag (bookmark_id, id, tag, seq)"
-    , "CREATE INDEX IF NOT EXISTS idx_note_user_created ON note (user_id, created DESC)"
-    ]
-
-authenticatePassword :: Text -> Text -> DB (Maybe (Entity User))
-authenticatePassword username password = do
-  muser <- getBy (UniqueUserName username)
-  case muser of
-    Nothing -> return Nothing
-    Just dbuser ->
-      if validatePasswordHash (userPasswordHash (entityVal dbuser)) password
-        then return (Just dbuser)
-        else return Nothing
-  
-getUserByName :: UserNameP -> DB (Maybe (Entity User))
-getUserByName (UserNameP uname) = do
-  selectFirst [UserName ==. uname] []
-
-bookmarksQuery
-  :: Key User
-  -> SharedP
-  -> FilterP
-  -> [Tag]
-  -> Maybe Text
-  -> Limit
-  -> Page
-  -> DB (Int, [Entity Bookmark])
-bookmarksQuery userId sharedp filterp tags mquery limit' page =
-  (,) -- total count
-  <$> fmap (sum . fmap E.unValue)
-      (select $
-      from $ \b -> do
-      _whereClause b
-      pure $ E.countRows)
-      -- paged data
-  <*> (select $
-       from $ \b -> do
-       _whereClause b
-       orderBy [desc (b ^. BookmarkTime)]
-       limit limit'
-       offset ((page - 1) * limit')
-       pure b)
-  where
-    _whereClause b = do
-      where_ $
-        foldl (\expr tag ->
-                expr &&. (exists $   -- each tag becomes an exists constraint
-                          from $ \t ->
-                          where_ (t ^. BookmarkTagBookmarkId E.==. b ^. BookmarkId &&.
-                                 (t ^. BookmarkTagTag `E.like` val tag)))) 
-          (b ^. BookmarkUserId E.==. val userId)
-          tags
-      case sharedp of
-        SharedAll -> pure ()
-        SharedPublic ->  where_ (b ^. BookmarkShared E.==. val True)
-        SharedPrivate -> where_ (b ^. BookmarkShared E.==. val False)
-      case filterp of
-        FilterAll -> pure ()
-        FilterUnread -> where_ (b ^. BookmarkToRead E.==. val True)
-        FilterStarred -> where_ (b ^. BookmarkSelected E.==. val True)
-        FilterSingle slug -> where_ (b ^. BookmarkSlug E.==. val slug)
-        FilterUntagged -> where_ $ notExists $ from (\t -> where_ $
-                                                     (t ^. BookmarkTagBookmarkId E.==. b ^. BookmarkId))
-      -- search
-      sequenceA_ (parseSearchQuery (toLikeExpr b) =<< mquery)
-
-    toLikeExpr :: E.SqlExpr (Entity Bookmark) -> Text -> E.SqlExpr (E.Value Bool)
-    toLikeExpr b term = fromRight p_allFields (P.parseOnly p_onefield term)
-      where
-        wild s = (E.%) ++. val s ++. (E.%)
-        toLikeB field s = b ^. field `E.like` wild s
-        p_allFields =
-          (toLikeB BookmarkHref term) ||.
-          (toLikeB BookmarkDescription term) ||.
-          (toLikeB BookmarkExtended term) ||.
-          (exists $ from (\t -> where_ $
-             (t ^. BookmarkTagBookmarkId E.==. b ^. BookmarkId) &&.
-             (t ^. BookmarkTagTag `E.like` (wild term))))
-        p_onefield = p_url <|> p_title <|> p_description <|> p_tags <|> p_after <|> p_before
-          where
-            p_url = "url:" *> fmap (toLikeB BookmarkHref) P.takeText
-            p_title = "title:" *> fmap (toLikeB BookmarkDescription) P.takeText
-            p_description = "description:" *> fmap (toLikeB BookmarkExtended) P.takeText
-            p_tags = "tags:" *> fmap (\term' -> exists $ from (\t -> where_ $
-                                                         (t ^. BookmarkTagBookmarkId E.==. b ^. BookmarkId) &&.
-                                                         (t ^. BookmarkTagTag `E.like` wild term'))) P.takeText
-            p_after  = "after:"  *> fmap ((b ^. BookmarkTime E.>=.) . val) (parseTimeText =<< P.takeText)
-            p_before = "before:" *> fmap ((b ^. BookmarkTime E.<=.) . val) (parseTimeText =<< P.takeText)
-
-parseSearchQuery ::
-  (Text -> E.SqlExpr (E.Value Bool))
-  -> Text
-  -> Maybe (E.SqlQuery ())
-parseSearchQuery toExpr =
-  fmap where_ . either (const Nothing) Just . P.parseOnly andE
-  where
-    andE = foldl1 (&&.) <$> P.many1 (P.skipSpace *> orE <|> tokenTermE)
-    orE = foldl1 (||.) <$> tokenTermE `P.sepBy1` P.char '|'
-    tokenTermE = negE termE <|> termE
-      where
-        negE p = not_ <$> (P.char '-' *> p)
-        termE = toExpr <$> (fieldTerm <|> quotedTerm <|> simpleTerm)
-        fieldTerm = concat <$> sequence [simpleTerm, P.string ":", quotedTerm <|> simpleTerm]
-        quotedTerm = PC.between (P.char '"') (P.char '"') (P.takeWhile1 (/= '"'))
-        simpleTerm = P.takeWhile1 (\c -> not (isSpace c) && c /= ':' && c /= '|') 
-
-parseTimeText :: (TI.ParseTime t, Monad m, Alternative m) => Text -> m t
-parseTimeText t =
-  asum $
-  flip (parseTimeM True defaultTimeLocale) (unpack t) <$>
-  [ "%-m/%-d/%Y"    , "%-m/%-d/%Y%z"    , "%-m/%-d/%Y%Z"     -- 12/31/2018
-  , "%Y-%-m-%-d"    , "%Y-%-m-%-d%z"    , "%Y-%-m-%-d%Z"     -- 2018-12-31
-  , "%Y-%-m-%-dT%T" , "%Y-%-m-%-dT%T%z" , "%Y-%-m-%-dT%T%Z"  -- 2018-12-31T06:40:53
-  , "%s"                                                     -- 1535932800
-  ]
-
-tagsQuery :: [Entity Bookmark] -> DB [Entity BookmarkTag]
-tagsQuery bmarks =
-  select $
-  from $ \t -> do
-  where_ (t ^. BookmarkTagBookmarkId `in_` valList (fmap entityKey bmarks))
-  orderBy [asc (t ^. BookmarkTagSeq)]
-  pure t
-
-withTags :: Key Bookmark -> DB [Entity BookmarkTag]
-withTags key = selectList [BookmarkTagBookmarkId ==. key] [Asc BookmarkTagSeq]
-
--- Note List Query
-
-  
-getNote :: Key User -> NtSlug -> DB (Maybe (Entity Note))
-getNote userKey slug =
-  selectFirst [NoteUserId ==. userKey, NoteSlug ==. slug] []
-
-getNoteList :: Key User -> Maybe Text -> Limit -> Page -> DB (Int, [Entity Note])
-getNoteList key mquery limit' page =
-  (,) -- total count
-  <$> fmap (sum . fmap E.unValue)
-      (select $
-      from $ \b -> do
-      _whereClause b
-      pure $ E.countRows)
-  <*> (select $
-       from $ \b -> do
-       _whereClause b
-       orderBy [desc (b ^. NoteCreated)]
-       limit limit'
-       offset ((page - 1) * limit')
-       pure b)
-  where
-    _whereClause b = do
-      where_ $ (b ^. NoteUserId E.==. val key)
-      -- search
-      sequenceA_ (parseSearchQuery (toLikeExpr b) =<< mquery)
-
-    toLikeExpr :: E.SqlExpr (Entity Note) -> Text -> E.SqlExpr (E.Value Bool)
-    toLikeExpr b term = fromRight p_allFields (P.parseOnly p_onefield term)
-      where
-        wild s = (E.%) ++. val s ++. (E.%)
-        toLikeN field s = b ^. field `E.like` wild s
-        p_allFields = toLikeN NoteTitle term ||. toLikeN NoteText term
-        p_onefield = p_title <|> p_text <|> p_after <|> p_before
-          where
-            p_title = "title:" *> fmap (toLikeN NoteTitle) P.takeText
-            p_text = "description:" *> fmap (toLikeN NoteText) P.takeText
-            p_after  = "after:"  *> fmap ((b ^. NoteCreated E.>=.) . val) (parseTimeText =<< P.takeText)
-            p_before = "before:" *> fmap ((b ^. NoteCreated E.<=.) . val) (parseTimeText =<< P.takeText)
-
--- Bookmark Files
-
-bookmarkEntityToTags :: Entity Bookmark -> [Tag] -> [BookmarkTag]
-bookmarkEntityToTags (Entity {entityKey = bookmarkId
-                             ,entityVal = Bookmark {..}}) tags =
-  fmap
-    (\(i, tag) -> BookmarkTag bookmarkUserId tag bookmarkId i)
-    (zip [1 ..] tags)
-
-
-fileBookmarkToBookmark :: UserId -> FileBookmark -> IO Bookmark
-fileBookmarkToBookmark user (FileBookmark {..}) = do
-  slug <- mkBmSlug
-  pure $
-    Bookmark
-      user
-      slug
-      fileBookmarkHref
-      fileBookmarkDescription
-      fileBookmarkExtended
-      fileBookmarkTime
-      fileBookmarkShared
-      fileBookmarkToRead
-      False
-      Nothing
-
-
-insertFileBookmarks :: Key User -> FilePath -> DB ()
-insertFileBookmarks userId bookmarkFile = do
-  mfmarks <- liftIO $ readFileBookmarks bookmarkFile
-  case mfmarks of
-      Left e -> print e
-      Right fmarks -> do
-        bookmarks <- liftIO $ mapM (fileBookmarkToBookmark userId) fmarks
-        mbookmarkIds <- mapM insertUnique bookmarks 
-
-        let bookmarkTags =
-              concatMap (uncurry bookmarkEntityToTags) $
-              catMaybes $
-              zipWith3 (\mk v p -> map (\k -> (Entity k v, fileBookmarkTags p)) mk)
-                mbookmarkIds
-                bookmarks
-                fmarks
-        void $ mapM insertUnique bookmarkTags
-  where
-    readFileBookmarks :: MonadIO m => FilePath -> m (Either String [FileBookmark])
-    readFileBookmarks fpath = pure . A.eitherDecode' . fromStrict =<< readFile fpath
-
-type Tag = Text
-
--- Notes
-
-fileNoteToNote :: UserId -> FileNote -> IO Note
-fileNoteToNote user (FileNote {..} ) = do
-  slug <- mkNtSlug
-  pure $
-    Note
-      user
-      slug
-      fileNoteLength
-      fileNoteTitle
-      fileNoteText
-      False
-      fileNoteCreatedAt
-      fileNoteUpdatedAt
-
-insertDirFileNotes :: Key User -> FilePath -> DB ()
-insertDirFileNotes userId noteDirectory = do
-  mfnotes <- liftIO $ readFileNotes noteDirectory
-  case mfnotes of
-      Left e -> print e
-      Right fnotes -> do
-        notes <- liftIO $ mapM (fileNoteToNote userId) fnotes
-        void $ mapM insertUnique notes 
-  where
-    readFileNotes :: MonadIO m => FilePath -> m (Either String [FileNote])
-    readFileNotes fdir = do
-      files <- liftIO (listDirectory fdir)
-      noteBSS <- mapM (readFile . (fdir </>)) files 
-      pure (mapM (A.eitherDecode' . fromStrict) noteBSS) 
-
--- AccountSettingsForm
-data AccountSettingsForm = AccountSettingsForm
-  { _privateDefault :: Bool 
-  , _archiveDefault :: Bool 
-  , _privacyLock :: Bool 
-  } deriving (Show, Eq, Read, Generic)
-
-instance FromJSON AccountSettingsForm where parseJSON = A.genericParseJSON gDefaultFormOptions
-instance ToJSON AccountSettingsForm where toJSON = A.genericToJSON gDefaultFormOptions
-
-toAccountSettingsForm :: User -> AccountSettingsForm
-toAccountSettingsForm (User {..}) =
-  AccountSettingsForm
-  { _privateDefault = userPrivateDefault
-  , _archiveDefault = userArchiveDefault
-  , _privacyLock = userPrivacyLock
-  }
-
-updateUserFromAccountSettingsForm :: Key User -> AccountSettingsForm -> DB ()
-updateUserFromAccountSettingsForm userId (AccountSettingsForm {..}) = do
-  CP.update userId
-    [ UserPrivateDefault CP.=. _privateDefault
-    , UserArchiveDefault CP.=. _archiveDefault
-    , UserPrivacyLock CP.=. _privacyLock
-    ]
-
--- BookmarkForm
-
-data BookmarkForm = BookmarkForm
-  { _url :: Text
-  , _title :: Maybe Text
-  , _description :: Maybe Textarea
-  , _tags :: Maybe Text
-  , _private :: Maybe Bool
-  , _toread :: Maybe Bool
-  , _bid :: Maybe Int64
-  , _slug :: Maybe BmSlug
-  , _selected :: Maybe Bool
-  , _time :: Maybe UTCTimeStr
-  , _archiveUrl :: Maybe Text
-  } deriving (Show, Eq, Read, Generic)
-
-instance FromJSON BookmarkForm where parseJSON = A.genericParseJSON gDefaultFormOptions
-instance ToJSON BookmarkForm where toJSON = A.genericToJSON gDefaultFormOptions
-
-gDefaultFormOptions :: A.Options
-gDefaultFormOptions = A.defaultOptions { A.fieldLabelModifier = drop 1 } 
-
-toBookmarkFormList :: [Entity Bookmark] -> [Entity BookmarkTag] -> [BookmarkForm]
-toBookmarkFormList bs as = do
-  b <- bs
-  let bid = E.entityKey b
-  let btags = filter ((==) bid . bookmarkTagBookmarkId . E.entityVal) as
-  pure $ _toBookmarkForm (b, btags)
-
-_toBookmarkForm :: (Entity Bookmark, [Entity BookmarkTag]) -> BookmarkForm
-_toBookmarkForm (Entity bid Bookmark {..}, tags) =
-  BookmarkForm
-  { _url = bookmarkHref
-  , _title = Just bookmarkDescription
-  , _description = Just $ Textarea $ bookmarkExtended
-  , _tags = Just $ unwords $ fmap (bookmarkTagTag . entityVal) tags
-  , _private = Just $ not bookmarkShared
-  , _toread = Just $ bookmarkToRead
-  , _bid = Just $ unBookmarkKey $ bid
-  , _slug = Just $ bookmarkSlug
-  , _selected = Just $ bookmarkSelected
-  , _time = Just $ UTCTimeStr $ bookmarkTime
-  , _archiveUrl = bookmarkArchiveHref
-  }
-
-_toBookmark :: UserId -> BookmarkForm -> IO Bookmark
-_toBookmark userId BookmarkForm {..} = do
-  time <- liftIO getCurrentTime
-  slug <- maybe mkBmSlug pure _slug
-  pure $
-    Bookmark
-      userId
-      slug
-      _url
-      (fromMaybe "" _title)
-      (maybe "" unTextarea _description)
-      (fromMaybe time (fmap unUTCTimeStr _time))
-      (maybe True not _private)
-      (fromMaybe False _toread)
-      (fromMaybe False _selected)
-      _archiveUrl
-
-fetchBookmarkByUrl :: Key User -> Maybe Text -> DB (Maybe (Entity Bookmark, [Entity BookmarkTag]))
-fetchBookmarkByUrl userId murl = runMaybeT $ do
-  bmark <- MaybeT . getBy . UniqueUserHref userId =<< (MaybeT $ pure murl)
-  btags <- lift $ withTags (entityKey bmark)
-  pure (bmark, btags)
-
-data UpsertResult = Created | Updated
-
-upsertBookmark:: Maybe (Key Bookmark) -> Bookmark -> [Text] -> DB (UpsertResult, Key Bookmark)
-upsertBookmark mbid bm tags = do
-  res <- case mbid of
-    Just bid -> do
-      get bid >>= \case 
-        Just prev_bm -> replaceBookmark bid prev_bm
-        _ -> fail "not found"
-    Nothing -> do
-      getBy (UniqueUserHref (bookmarkUserId bm) (bookmarkHref bm)) >>= \case
-        Just (Entity bid prev_bm) -> replaceBookmark bid prev_bm
-        _ -> (Created,) <$> insert bm
-  insertTags (bookmarkUserId bm) (snd res)
-  pure res
-  where 
-    prepareReplace prev_bm = do
-      if (bookmarkHref bm /= bookmarkHref prev_bm)
-        then bm { bookmarkArchiveHref = Nothing }
-        else bm { bookmarkArchiveHref = bookmarkArchiveHref prev_bm }
-    replaceBookmark bid prev_bm = do
-      replace bid (prepareReplace prev_bm)
-      deleteTags bid
-      pure (Updated, bid)
-    deleteTags bid =
-      deleteWhere [BookmarkTagBookmarkId ==. bid]
-    insertTags userId bid' =
-      for_ (zip [1 ..] tags) $
-      \(i, tag) -> void $ insert $ BookmarkTag userId tag bid' i
-
-updateBookmarkArchiveUrl :: Key User -> Key Bookmark -> Maybe Text -> DB ()
-updateBookmarkArchiveUrl userId bid marchiveUrl = do
-  updateWhere
-    [BookmarkUserId ==. userId, BookmarkId ==. bid]
-    [BookmarkArchiveHref CP.=. marchiveUrl]
-
-upsertNote:: Maybe (Key Note) -> Note -> DB (UpsertResult, Key Note)
-upsertNote mnid bmark@Note{..} = do
-  case mnid of
-    Just nid -> do
-      get nid >>= \case 
-        Just _ -> do
-          replace nid bmark
-          pure (Updated, nid)
-        _ -> fail "not found"
-    Nothing -> do
-      (Created,) <$> insert bmark
-
--- * FileBookmarks
-
-data FileBookmark = FileBookmark
-  { fileBookmarkHref :: !Text
-  , fileBookmarkDescription :: !Text
-  , fileBookmarkExtended :: !Text
-  , fileBookmarkTime :: !UTCTime
-  , fileBookmarkShared :: !Bool
-  , fileBookmarkToRead :: !Bool
-  , fileBookmarkTags :: [Tag]
-  } deriving (Show, Eq, Typeable, Ord)
-
-instance FromJSON FileBookmark where
-  parseJSON (Object o) =
-    FileBookmark <$> o .: "href" <*> o .: "description" <*> o .: "extended" <*>
-    o .: "time" <*>
-    (boolFromYesNo <$> o .: "shared") <*>
-    (boolFromYesNo <$> o .: "toread") <*>
-    (words <$> o .: "tags")
-  parseJSON _ = fail "bad parse"
-
-boolFromYesNo :: Text -> Bool
-boolFromYesNo "yes" = True
-boolFromYesNo _ = False
-
--- * FileNotes
-
-data FileNote = FileNote
-  { fileNoteId :: !Text
-  , fileNoteTitle :: !Text
-  , fileNoteText :: !Text
-  , fileNoteLength :: !Int
-  , fileNoteCreatedAt :: !UTCTime
-  , fileNoteUpdatedAt :: !UTCTime
-  } deriving (Show, Eq, Typeable, Ord)
-
-instance FromJSON FileNote where
-  parseJSON (Object o) =
-    FileNote <$> o .: "id" <*> o .: "title" <*> o .: "text" <*>
-    o .: "length" <*>
-    (readFileNoteTime =<< o .: "created_at") <*>
-    (readFileNoteTime =<< o .: "updated_at")
-  parseJSON _ = fail "bad parse"
-
-readFileNoteTime
-  :: Monad m
-  => String -> m UTCTime
-readFileNoteTime = parseTimeM True defaultTimeLocale "%F %T"
+{-# LANGUAGE DeriveFunctor #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+module Model where
+
+import qualified ClassyPrelude.Yesod as CP
+import qualified Control.Monad.Combinators as PC (between)
+import qualified Data.Aeson as A
+import qualified Data.Aeson.Types as A (parseFail)
+import qualified Data.Attoparsec.Text as P
+import qualified Data.Time as TI (ParseTime)
+import qualified Data.Time.Clock.POSIX as TI (posixSecondsToUTCTime, POSIXTime)
+import qualified Data.Time.ISO8601 as TI (parseISO8601, formatISO8601Millis)
+import ClassyPrelude.Yesod hiding ((==.), (||.), on, Value, groupBy, exists, (>=.), (<=.))
+import Control.Monad.Fail (MonadFail)
+import Control.Monad.Trans.Maybe (MaybeT(..), runMaybeT)
+import Control.Monad.Writer (tell)
+import Data.Char (isSpace)
+import Data.Either (fromRight)
+import Data.Foldable (foldl, foldl1, sequenceA_)
+import Data.List.NonEmpty (NonEmpty(..))
+import Database.Esqueleto.Experimental
+import Database.Esqueleto.Internal.Internal (unsafeSqlFunction)
+import Pretty ()
+import System.Directory (listDirectory)
+import Types
+
+import qualified Data.Map.Strict as MS
+
+import ModelCustom
+
+share [mkPersist sqlSettings, mkMigrate "migrateSchema"] [persistLowerCase|
+User json
+  Id Int64
+  name Text
+  passwordHash BCrypt
+  apiToken Text Maybe
+  privateDefault Bool
+  archiveDefault Bool
+  privacyLock Bool
+  UniqueUserName name
+  deriving Show Eq Typeable Ord
+
+Bookmark json
+  Id Int64
+  userId UserId OnDeleteCascade
+  slug BmSlug default="(lower(hex(randomblob(6))))"
+  href Text
+  description Text
+  extended Text
+  time UTCTime
+  shared Bool
+  toRead Bool
+  selected Bool
+  archiveHref Text Maybe
+  UniqueUserHref userId href
+  UniqueUserSlug userId slug
+  deriving Show Eq Typeable Ord
+
+BookmarkTag json
+  Id Int64
+  userId UserId OnDeleteCascade
+  tag Text
+  bookmarkId BookmarkId OnDeleteCascade
+  seq Int
+  UniqueUserTagBookmarkId userId tag bookmarkId
+  UniqueUserBookmarkIdTagSeq userId bookmarkId tag seq
+  deriving Show Eq Typeable Ord
+
+Note json
+  Id Int64
+  userId UserId  OnDeleteCascade
+  slug NtSlug default="(lower(hex(randomblob(10))))"
+  length Int
+  title Text
+  text Text
+  isMarkdown Bool
+  shared Bool default=False
+  created UTCTime
+  updated UTCTime
+  deriving Show Eq Typeable Ord
+|]
+
+newtype UTCTimeStr =
+  UTCTimeStr { unUTCTimeStr :: UTCTime }
+  deriving (Eq, Show, Read, Generic, FromJSON, ToJSON)
+
+instance PathPiece UTCTimeStr where
+  toPathPiece (UTCTimeStr u) = pack (TI.formatISO8601Millis u)
+  fromPathPiece s = UTCTimeStr <$> TI.parseISO8601 (unpack s)
+
+newtype UserNameP =
+  UserNameP { unUserNameP :: Text }
+  deriving (Eq, Show, Read)
+
+newtype TagsP =
+  TagsP { unTagsP :: [Text] }
+  deriving (Eq, Show, Read)
+
+data SharedP
+  = SharedAll
+  | SharedPublic
+  | SharedPrivate
+  deriving (Eq, Show, Read)
+
+data FilterP
+  = FilterAll
+  | FilterUnread
+  | FilterUntagged
+  | FilterStarred
+  | FilterSingle BmSlug
+  deriving (Eq, Show, Read)
+
+newtype UnreadOnly =
+  UnreadOnly { unUnreadOnly :: Bool }
+
+  deriving (Eq, Show, Read)
+
+type Limit = Int64
+type Page = Int64
+
+migrateAll :: Migration
+migrateAll = migrateSchema >> migrateIndexes
+
+dumpMigration :: DB ()
+dumpMigration = printMigration migrateAll
+
+runMigrations :: DB ()
+runMigrations = runMigration migrateAll
+
+toMigration :: [Text] -> Migration
+toMigration = lift . tell . fmap (False ,)
+
+migrateIndexes :: Migration
+migrateIndexes =
+  toMigration
+    [ "CREATE INDEX IF NOT EXISTS idx_bookmark_time ON bookmark (user_id, time DESC)"
+    , "CREATE INDEX IF NOT EXISTS idx_bookmark_tag_bookmark_id ON bookmark_tag (bookmark_id, id, tag, seq)"
+    , "CREATE INDEX IF NOT EXISTS idx_note_user_created ON note (user_id, created DESC)"
+    ]
+
+sqliteGroupConcat ::
+     PersistField a
+  => SqlExpr (Value a)
+  -> SqlExpr (Value a)
+  -> SqlExpr (Value Text)
+sqliteGroupConcat expr sep = unsafeSqlFunction "GROUP_CONCAT" [expr, sep]
+
+authenticatePassword :: Text -> Text -> DB (Maybe (Entity User))
+authenticatePassword username password = do
+  getBy (UniqueUserName username) >>= \case
+    Nothing -> pure Nothing
+    Just dbuser ->
+      if validatePasswordHash (userPasswordHash (entityVal dbuser)) password
+        then pure (Just dbuser)
+        else pure Nothing
+
+getUserByName :: UserNameP -> DB (Maybe (Entity User))
+getUserByName (UserNameP uname) =
+  selectFirst [UserName CP.==. uname] []
+
+-- returns a list of pair of bookmark with tags merged into a string
+bookmarksTagsQuery
+  :: Key User
+  -> SharedP
+  -> FilterP
+  -> [Tag]
+  -> Maybe Text
+  -> Limit
+  -> Page
+  -> DB (Int, [(Entity Bookmark, Maybe Text)])
+bookmarksTagsQuery userId sharedp filterp tags mquery limit' page =
+  (,) -- total count
+  <$> fmap (sum . fmap unValue)
+      (select $ from (table @Bookmark) >>= \b -> do
+       _whereClause b
+       pure countRows)
+      -- paged data
+  <*> (fmap . fmap . fmap) unValue
+      (select $ from (table @Bookmark) >>= \b -> do
+       _whereClause b
+       orderBy [desc (b ^. BookmarkTime)]
+       limit limit'
+       offset ((page - 1) * limit')
+       pure (b, subSelect $ from (table @BookmarkTag) >>= \t -> do
+                where_ (t ^. BookmarkTagBookmarkId ==. b ^. BookmarkId)
+                groupBy (t ^. BookmarkTagBookmarkId)
+                orderBy [asc (t ^. BookmarkTagSeq)]
+                pure $ sqliteGroupConcat (t ^. BookmarkTagTag) (val " ")))
+  where
+    _whereClause b = do
+      where_ $
+        foldl (\expr tag ->
+                expr &&. exists (   -- each tag becomes an exists constraint
+                          from (table @BookmarkTag) >>= \t ->
+                          where_ (t ^. BookmarkTagBookmarkId ==. b ^. BookmarkId &&.
+                                 (t ^. BookmarkTagTag `like` val tag))))
+          (b ^. BookmarkUserId ==. val userId)
+          tags
+      case sharedp of
+        SharedAll -> pure ()
+        SharedPublic ->  where_ (b ^. BookmarkShared ==. val True)
+        SharedPrivate -> where_ (b ^. BookmarkShared ==. val False)
+      case filterp of
+        FilterAll -> pure ()
+        FilterUnread -> where_ (b ^. BookmarkToRead ==. val True)
+        FilterStarred -> where_ (b ^. BookmarkSelected ==. val True)
+        FilterSingle slug -> where_ (b ^. BookmarkSlug ==. val slug)
+        FilterUntagged -> where_ $ notExists $ from (table @BookmarkTag) >>= \t -> where_ $
+                                                    t ^. BookmarkTagBookmarkId ==. b ^. BookmarkId
+      -- search
+      sequenceA_ (parseSearchQuery (toLikeExpr b) =<< mquery)
+
+    toLikeExpr :: SqlExpr (Entity Bookmark) -> Text -> SqlExpr (Value Bool)
+    toLikeExpr b term = fromRight p_allFields (P.parseOnly p_onefield term)
+      where
+        wild s = (%) ++. val s ++. (%)
+        toLikeB field s = b ^. field `like` wild s
+        p_allFields =
+          toLikeB BookmarkHref term ||.
+          toLikeB BookmarkDescription term ||.
+          toLikeB BookmarkExtended term ||.
+          exists (from (table @BookmarkTag) >>= \t -> where_ $
+               (t ^. BookmarkTagBookmarkId ==. b ^. BookmarkId) &&.
+               (t ^. BookmarkTagTag `like` wild term))
+        p_onefield = p_url <|> p_title <|> p_description <|> p_tags <|> p_after <|> p_before
+          where
+            p_url = "url:" *> fmap (toLikeB BookmarkHref) P.takeText
+            p_title = "title:" *> fmap (toLikeB BookmarkDescription) P.takeText
+            p_description = "description:" *> fmap (toLikeB BookmarkExtended) P.takeText
+            p_tags = "tags:" *> fmap (\term' -> exists $ from (table @BookmarkTag) >>= \t -> where_ $
+                                                         (t ^. BookmarkTagBookmarkId ==. b ^. BookmarkId) &&.
+                                                         (t ^. BookmarkTagTag `like` wild term')) P.takeText
+            p_after  = "after:"  *> fmap ((b ^. BookmarkTime >=.) . val) (parseTimeText =<< P.takeText)
+            p_before = "before:" *> fmap ((b ^. BookmarkTime <=.) . val) (parseTimeText =<< P.takeText)
+
+
+-- returns a list of pair of bookmark with tags merged into a string
+allUserBookmarks :: Key User -> DB [(Entity Bookmark, Text)]
+allUserBookmarks user =
+  (fmap . fmap . fmap) (fromMaybe "" . unValue) $
+  select $ do
+    b <- from (table @Bookmark)
+    where_ (b ^. BookmarkUserId ==. val user)
+    orderBy [asc (b ^. BookmarkTime)]
+    pure (b, subSelect $ from (table @BookmarkTag) >>= \t -> do
+             where_ (t ^. BookmarkTagBookmarkId ==. b ^. BookmarkId)
+             groupBy (t ^. BookmarkTagBookmarkId)
+             orderBy [asc (t ^. BookmarkTagSeq)]
+             pure $ sqliteGroupConcat (t ^. BookmarkTagTag) (val " "))
+
+parseSearchQuery ::
+  (Text -> SqlExpr (Value Bool))
+  -> Text
+  -> Maybe (SqlQuery ())
+parseSearchQuery toExpr =
+  fmap where_ . either (const Nothing) Just . P.parseOnly andE
+  where
+    andE = foldl1 (&&.) <$> P.many1 (P.skipSpace *> orE <|> tokenTermE)
+    orE = foldl1 (||.) <$> tokenTermE `P.sepBy1` P.char '|'
+    tokenTermE = negE termE <|> termE
+      where
+        negE p = not_ <$> (P.char '-' *> p)
+        termE = toExpr <$> (fieldTerm <|> quotedTerm <|> simpleTerm)
+        fieldTerm = concat <$> sequence [simpleTerm, P.string ":", quotedTerm <|> simpleTerm]
+        quotedTerm = PC.between (P.char '"') (P.char '"') (P.takeWhile1 (/= '"'))
+        simpleTerm = P.takeWhile1 (\c -> not (isSpace c) && c /= ':' && c /= '|')
+
+parseTimeText :: (TI.ParseTime t, MonadFail m, Alternative m) => Text -> m t
+parseTimeText t =
+  asum $
+  flip (parseTimeM True defaultTimeLocale) (unpack t) <$>
+  [ "%-m/%-d/%Y"    , "%-m/%-d/%Y%z"    , "%-m/%-d/%Y%Z"     -- 12/31/2018
+  , "%Y-%-m-%-d"    , "%Y-%-m-%-d%z"    , "%Y-%-m-%-d%Z"     -- 2018-12-31
+  , "%Y-%-m-%-dT%T" , "%Y-%-m-%-dT%T%z" , "%Y-%-m-%-dT%T%Z"  -- 2018-12-31T06:40:53
+  , "%s"                                                     -- 1535932800
+  ]
+
+withTags :: Key Bookmark -> DB [Entity BookmarkTag]
+withTags key = selectList [BookmarkTagBookmarkId CP.==. key] [Asc BookmarkTagSeq]
+
+-- Note List Query
+
+
+getNote :: Key User -> NtSlug -> DB (Maybe (Entity Note))
+getNote userKey slug =
+  selectFirst [NoteUserId CP.==. userKey, NoteSlug CP.==. slug] []
+
+getNoteList :: Key User -> Maybe Text -> SharedP -> Limit -> Page -> DB (Int, [Entity Note])
+getNoteList key mquery sharedp limit' page =
+  (,) -- total count
+  <$> fmap (sum . fmap unValue)
+      (select $ do
+      b <- from (table @Note)
+      _whereClause b
+      pure countRows)
+  <*> (select $ do
+       b <- from (table @Note)
+       _whereClause b
+       orderBy [desc (b ^. NoteCreated)]
+       limit limit'
+       offset ((page - 1) * limit')
+       pure b)
+  where
+    _whereClause b = do
+      where_ (b ^. NoteUserId ==. val key)
+      -- search
+      sequenceA_ (parseSearchQuery (toLikeExpr b) =<< mquery)
+      case sharedp of
+        SharedAll -> pure ()
+        SharedPublic ->  where_ (b ^. NoteShared ==. val True)
+        SharedPrivate -> where_ (b ^. NoteShared ==. val False)
+
+    toLikeExpr :: SqlExpr (Entity Note) -> Text -> SqlExpr (Value Bool)
+    toLikeExpr b term = fromRight p_allFields (P.parseOnly p_onefield term)
+      where
+        wild s = (%) ++. val s ++. (%)
+        toLikeN field s = b ^. field `like` wild s
+        p_allFields = toLikeN NoteTitle term ||. toLikeN NoteText term
+        p_onefield = p_title <|> p_text <|> p_after <|> p_before
+          where
+            p_title = "title:" *> fmap (toLikeN NoteTitle) P.takeText
+            p_text = "description:" *> fmap (toLikeN NoteText) P.takeText
+            p_after  = "after:"  *> fmap ((b ^. NoteCreated >=.) . val) (parseTimeText =<< P.takeText)
+            p_before = "before:" *> fmap ((b ^. NoteCreated <=.) . val) (parseTimeText =<< P.takeText)
+
+-- Bookmark Files
+
+mkBookmarkTags :: Key User -> Key Bookmark -> [Tag] -> [BookmarkTag]
+mkBookmarkTags userId bookmarkId tags =
+  (\(i, tag) -> BookmarkTag userId tag bookmarkId i) <$> zip [1 ..] tags
+
+
+fileBookmarkToBookmark :: UserId -> FileBookmark -> IO Bookmark
+fileBookmarkToBookmark user FileBookmark {..} = do
+  slug <- mkBmSlug
+  pure $
+    Bookmark
+    { bookmarkUserId = user
+    , bookmarkSlug = slug
+    , bookmarkHref = fileBookmarkHref
+    , bookmarkDescription = fileBookmarkDescription
+    , bookmarkExtended = fileBookmarkExtended
+    , bookmarkTime = fileBookmarkTime
+    , bookmarkShared = fileBookmarkShared
+    , bookmarkToRead = fileBookmarkToRead
+    , bookmarkSelected = Just True == fileBookmarkSelected
+    , bookmarkArchiveHref = fileBookmarkArchiveHref
+    }
+
+bookmarkTofileBookmark :: Bookmark -> Text -> FileBookmark
+bookmarkTofileBookmark Bookmark {..} tags =
+    FileBookmark
+    { fileBookmarkHref = bookmarkHref
+    , fileBookmarkDescription = bookmarkDescription
+    , fileBookmarkExtended = bookmarkExtended
+    , fileBookmarkTime = bookmarkTime
+    , fileBookmarkShared = bookmarkShared
+    , fileBookmarkToRead = bookmarkToRead
+    , fileBookmarkSelected = Just bookmarkSelected
+    , fileBookmarkArchiveHref = bookmarkArchiveHref
+    , fileBookmarkTags = tags
+    }
+
+data FFBookmarkNode = FFBookmarkNode
+  { firefoxBookmarkChildren :: Maybe [FFBookmarkNode]
+  , firefoxBookmarkDateAdded :: !TI.POSIXTime
+  , firefoxBookmarkGuid :: !Text
+  , firefoxBookmarkIconUri :: !(Maybe Text)
+  , firefoxBookmarkId :: !Int
+  , firefoxBookmarkIndex :: !Int
+  , firefoxBookmarkLastModified :: !TI.POSIXTime
+  , firefoxBookmarkRoot :: !(Maybe Text)
+  , firefoxBookmarkTitle :: !Text
+  , firefoxBookmarkType :: !Text
+  , firefoxBookmarkTypeCode :: !Int
+  , firefoxBookmarkUri :: !(Maybe Text)
+  } deriving (Show, Eq, Typeable, Ord)
+
+instance FromJSON FFBookmarkNode where
+  parseJSON (Object o) =
+    FFBookmarkNode <$>
+    (o A..:? "children") <*>
+    (o .: "dateAdded") <*>
+    o .: "guid" <*>
+    (o A..:? "iconUri") <*>
+    o .: "id" <*>
+    o .: "index" <*>
+    (o .: "lastModified") <*>
+    (o A..:? "root") <*>
+    (o .: "title") <*>
+    (o .: "type") <*>
+    (o .: "typeCode") <*>
+    (o A..:? "uri")
+  parseJSON _ = A.parseFail "bad parse"
+
+firefoxBookmarkNodeToBookmark :: UserId -> FFBookmarkNode -> IO [Bookmark]
+firefoxBookmarkNodeToBookmark user FFBookmarkNode {..} =
+  case firefoxBookmarkTypeCode of
+    1 -> do
+      slug <- mkBmSlug
+      pure $
+        [ Bookmark
+          { bookmarkUserId = user
+          , bookmarkSlug = slug
+          , bookmarkHref = fromMaybe "" firefoxBookmarkUri
+          , bookmarkDescription = firefoxBookmarkTitle
+          , bookmarkExtended = ""
+          , bookmarkTime = TI.posixSecondsToUTCTime (firefoxBookmarkDateAdded / 1000000)
+          , bookmarkShared = True
+          , bookmarkToRead = False
+          , bookmarkSelected = False
+          , bookmarkArchiveHref = Nothing
+          }
+        ]
+    2 ->
+      join <$>
+      mapM
+        (firefoxBookmarkNodeToBookmark user)
+        (fromMaybe [] firefoxBookmarkChildren)
+    _ -> pure []
+
+
+insertFileBookmarks :: Key User -> FilePath -> DB (Either String Int)
+insertFileBookmarks userId bookmarkFile = do
+  mfmarks <- liftIO $ readFileBookmarks bookmarkFile
+  case mfmarks of
+    Left e -> pure $ Left e
+    Right fmarks -> do
+      bmarks <- liftIO $ mapM (fileBookmarkToBookmark userId) fmarks
+      mbids <- mapM insertUnique bmarks
+      mapM_ (void . insertUnique) $
+        concatMap (uncurry (mkBookmarkTags userId)) $
+        catMaybes $
+        zipWith
+          (\mbid tags -> (, tags) <$> mbid)
+          mbids
+          (extractTags <$> fmarks)
+      pure $ Right (length bmarks)
+
+  where
+    extractTags = words . fileBookmarkTags
+
+insertFFBookmarks :: Key User -> FilePath -> DB (Either String Int)
+insertFFBookmarks userId bookmarkFile = do
+  mfmarks <- liftIO $ readFFBookmarks bookmarkFile
+  case mfmarks of
+    Left e -> pure $ Left e
+    Right fmarks -> do
+      bmarks <- liftIO $ firefoxBookmarkNodeToBookmark userId fmarks
+      mapM_ (void . insertUnique) bmarks
+      pure $ Right (length bmarks)
+
+
+readFileBookmarks :: MonadIO m => FilePath -> m (Either String [FileBookmark])
+readFileBookmarks fpath =
+  A.eitherDecode' . fromStrict <$> readFile fpath
+
+readFFBookmarks :: MonadIO m => FilePath -> m (Either String FFBookmarkNode)
+readFFBookmarks fpath =
+  A.eitherDecode' . fromStrict <$> readFile fpath
+
+exportFileBookmarks :: Key User -> FilePath -> DB ()
+exportFileBookmarks user fpath =
+    liftIO . A.encodeFile fpath =<< getFileBookmarks user
+
+getFileBookmarks :: Key User -> DB [FileBookmark]
+getFileBookmarks user = do
+  marks <- allUserBookmarks user
+  pure $ fmap (\(bm, t) -> bookmarkTofileBookmark (entityVal bm) t) marks
+
+data TagCloudMode
+  = TagCloudModeTop Bool Int          -- { mode: "top", value: 200 }
+  | TagCloudModeLowerBound Bool Int   -- { mode: "lowerBound", value: 20 }
+  | TagCloudModeRelated Bool [Tag]
+  | TagCloudModeNone
+  deriving (Show, Eq, Read, Generic)
+
+isExpanded :: TagCloudMode -> Bool
+isExpanded (TagCloudModeTop e _) = e
+isExpanded (TagCloudModeLowerBound e _) = e
+isExpanded (TagCloudModeRelated e _) = e
+isExpanded TagCloudModeNone = False
+
+instance FromJSON TagCloudMode where
+  parseJSON (Object o) =
+    case lookup "mode" o of
+      Just (String "top") -> TagCloudModeTop <$> o .: "expanded" <*> o .: "value"
+      Just (String "lowerBound") -> TagCloudModeLowerBound <$> o .: "expanded" <*> o .: "value"
+      Just (String "related") -> TagCloudModeRelated <$> o .: "expanded" <*> fmap words (o .: "value")
+      Just (String "none") -> pure TagCloudModeNone
+      _ -> A.parseFail "bad parse"
+  parseJSON _ = A.parseFail "bad parse"
+
+instance ToJSON TagCloudMode where
+  toJSON (TagCloudModeTop e i) =
+    object [ "mode" .= String "top"
+           , "value" .= toJSON i
+           , "expanded" .= Bool e
+           ]
+  toJSON (TagCloudModeLowerBound e i) =
+    object [ "mode" .= String "lowerBound"
+           , "value" .= toJSON i
+           , "expanded" .= Bool e
+           ]
+  toJSON (TagCloudModeRelated e tags) =
+    object [ "mode" .= String "related"
+           , "value" .= String (unwords tags)
+           , "expanded" .= Bool e
+           ]
+  toJSON TagCloudModeNone =
+    object [ "mode" .= String "none"
+           , "value" .= Null
+           , "expanded" .= Bool False
+           ]
+
+
+type Tag = Text
+
+tagCountTop :: Key User -> Int -> DB [(Text, Int)]
+tagCountTop user top =
+    sortOn (toLower . fst) .
+    fmap (bimap unValue unValue) <$>
+    ( select $ do
+      t <- from (table @BookmarkTag)
+      where_ (t ^. BookmarkTagUserId ==. val user)
+      groupBy (lower_ $ t ^. BookmarkTagTag)
+      let countRows' = countRows
+      orderBy [desc countRows']
+      limit ((fromIntegral . toInteger) top)
+      pure (t ^. BookmarkTagTag, countRows')
+    )
+
+tagCountLowerBound :: Key User -> Int -> DB [(Text, Int)]
+tagCountLowerBound user lowerBound =
+    fmap (bimap unValue unValue) <$>
+    ( select $ do
+      t <- from (table @BookmarkTag)
+      where_ (t ^. BookmarkTagUserId ==. val user)
+      groupBy (lower_ $ t ^. BookmarkTagTag)
+      let countRows' = countRows
+      orderBy [asc (t ^. BookmarkTagTag)]
+      having (countRows' >=. val lowerBound)
+      pure (t ^. BookmarkTagTag, countRows')
+    )
+
+tagCountRelated :: Key User -> [Tag] -> DB [(Text, Int)]
+tagCountRelated user tags =
+    fmap (bimap unValue unValue) <$>
+    ( select $ do
+      t <- from (table @BookmarkTag)
+      where_ $
+        foldl (\expr tag ->
+                expr &&. exists ( do
+                          u <- from (table @BookmarkTag)
+                          where_ (u ^. BookmarkTagBookmarkId ==. t ^. BookmarkTagBookmarkId &&.
+                                 (u ^. BookmarkTagTag `like` val tag))))
+          (t ^. BookmarkTagUserId ==. val user)
+          tags
+      groupBy (lower_ $ t ^. BookmarkTagTag)
+      let countRows' = countRows
+      orderBy [asc $ lower_ $ (t ^. BookmarkTagTag)]
+      pure (t ^. BookmarkTagTag, countRows')
+    )
+
+-- Notes
+
+fileNoteToNote :: UserId -> FileNote -> IO Note
+fileNoteToNote user FileNote {..}  = do
+  slug <- mkNtSlug
+  pure $
+    Note
+    { noteUserId = user
+    , noteSlug = slug
+    , noteLength = fileNoteLength
+    , noteTitle = fileNoteTitle
+    , noteText = fileNoteText
+    , noteIsMarkdown = False
+    , noteShared = False
+    , noteCreated = fileNoteCreatedAt
+    , noteUpdated = fileNoteUpdatedAt
+    }
+
+insertDirFileNotes :: Key User -> FilePath -> DB (Either String Int)
+insertDirFileNotes userId noteDirectory = do
+  mfnotes <- liftIO $ readFileNotes noteDirectory
+  case mfnotes of
+      Left e -> pure $ Left e
+      Right fnotes -> do
+        notes <- liftIO $ mapM (fileNoteToNote userId) fnotes
+        void $ mapM insertUnique notes
+        pure $ Right (length notes)
+  where
+    readFileNotes :: MonadIO m => FilePath -> m (Either String [FileNote])
+    readFileNotes fdir = do
+      files <- liftIO (listDirectory fdir)
+      noteBSS <- mapM (readFile . (fdir </>)) files
+      pure (mapM (A.eitherDecode' . fromStrict) noteBSS)
+
+-- AccountSettingsForm
+data AccountSettingsForm = AccountSettingsForm
+  { _privateDefault :: Bool
+  , _archiveDefault :: Bool
+  , _privacyLock :: Bool
+  } deriving (Show, Eq, Read, Generic)
+
+instance FromJSON AccountSettingsForm where parseJSON = A.genericParseJSON gDefaultFormOptions
+instance ToJSON AccountSettingsForm where toJSON = A.genericToJSON gDefaultFormOptions
+
+toAccountSettingsForm :: User -> AccountSettingsForm
+toAccountSettingsForm User {..} =
+  AccountSettingsForm
+  { _privateDefault = userPrivateDefault
+  , _archiveDefault = userArchiveDefault
+  , _privacyLock = userPrivacyLock
+  }
+
+updateUserFromAccountSettingsForm :: Key User -> AccountSettingsForm -> DB ()
+updateUserFromAccountSettingsForm userId AccountSettingsForm {..} =
+  CP.update userId
+  [ UserPrivateDefault CP.=. _privateDefault
+  , UserArchiveDefault CP.=. _archiveDefault
+  , UserPrivacyLock CP.=. _privacyLock
+  ]
+
+-- BookmarkForm
+
+data BookmarkForm = BookmarkForm
+  { _url :: Text
+  , _title :: Maybe Text
+  , _description :: Maybe Textarea
+  , _tags :: Maybe Text
+  , _private :: Maybe Bool
+  , _toread :: Maybe Bool
+  , _bid :: Maybe Int64
+  , _slug :: Maybe BmSlug
+  , _selected :: Maybe Bool
+  , _time :: Maybe UTCTimeStr
+  , _archiveUrl :: Maybe Text
+  } deriving (Show, Eq, Read, Generic)
+
+instance FromJSON BookmarkForm where parseJSON = A.genericParseJSON gDefaultFormOptions
+instance ToJSON BookmarkForm where toJSON = A.genericToJSON gDefaultFormOptions
+
+gDefaultFormOptions :: A.Options
+gDefaultFormOptions = A.defaultOptions { A.fieldLabelModifier = drop 1 }
+
+toBookmarkFormList :: [(Entity Bookmark, Maybe Text)] -> [BookmarkForm]
+toBookmarkFormList = fmap _toBookmarkForm'
+
+_toBookmarkForm :: (Entity Bookmark, [Entity BookmarkTag]) -> BookmarkForm
+_toBookmarkForm (bm, tags) =
+  _toBookmarkForm' (bm, Just $ unwords $ fmap (bookmarkTagTag . entityVal) tags)
+
+_toBookmarkForm' :: (Entity Bookmark, Maybe Text) -> BookmarkForm
+_toBookmarkForm' (Entity bid Bookmark {..}, tags) =
+  BookmarkForm
+  { _url = bookmarkHref
+  , _title = Just bookmarkDescription
+  , _description = Just $ Textarea $ bookmarkExtended
+  , _tags = Just $ fromMaybe "" tags
+  , _private = Just $ not bookmarkShared
+  , _toread = Just bookmarkToRead
+  , _bid = Just $ unBookmarkKey $ bid
+  , _slug = Just bookmarkSlug
+  , _selected = Just bookmarkSelected
+  , _time = Just $ UTCTimeStr $ bookmarkTime
+  , _archiveUrl = bookmarkArchiveHref
+  }
+
+
+_toBookmark :: UserId -> BookmarkForm -> IO Bookmark
+_toBookmark userId BookmarkForm {..} = do
+  time <- liftIO getCurrentTime
+  slug <- maybe mkBmSlug pure _slug
+  pure $
+    Bookmark
+    { bookmarkUserId = userId
+    , bookmarkSlug = slug
+    , bookmarkHref = _url
+    , bookmarkDescription = fromMaybe "" _title
+    , bookmarkExtended = maybe "" unTextarea _description
+    , bookmarkTime = maybe time unUTCTimeStr _time
+    , bookmarkShared = maybe True not _private
+    , bookmarkToRead = Just True == _toread
+    , bookmarkSelected = Just True == _selected
+    , bookmarkArchiveHref = _archiveUrl
+    }
+
+fetchBookmarkByUrl :: Key User -> Maybe Text -> DB (Maybe (Entity Bookmark, [Entity BookmarkTag]))
+fetchBookmarkByUrl userId murl = runMaybeT do
+  bmark <- MaybeT . getBy . UniqueUserHref userId =<< MaybeT (pure murl)
+  btags <- lift $ withTags (entityKey bmark)
+  pure (bmark, btags)
+
+data UpsertResult a = Created a | Updated a | Failed String
+  deriving (Show, Eq, Functor)
+
+maybeUpsertResult :: UpsertResult a -> Maybe a
+maybeUpsertResult (Created a) = Just a
+maybeUpsertResult (Updated a) = Just a
+maybeUpsertResult _ = Nothing
+
+upsertBookmark :: Key User -> Maybe (Key Bookmark) -> Bookmark -> [Text] -> DB (UpsertResult (Key Bookmark))
+upsertBookmark userId mbid bm tags = do
+  res <- case mbid of
+    Just bid ->
+      get bid >>= \case
+        Just prev_bm | userId == bookmarkUserId prev_bm ->
+          replaceBookmark bid prev_bm
+        Just _ -> pure (Failed "unauthorized")
+        _ -> pure (Failed "not found")
+    Nothing ->
+      getBy (UniqueUserHref (bookmarkUserId bm) (bookmarkHref bm)) >>= \case
+        Just (Entity bid prev_bm) -> replaceBookmark bid prev_bm
+        _ -> Created <$> insert bm
+  forM_ (maybeUpsertResult res) (insertTags (bookmarkUserId bm)) 
+  pure res
+  where
+    prepareReplace prev_bm =
+      if bookmarkHref bm /= bookmarkHref prev_bm
+        then bm { bookmarkArchiveHref = Nothing }
+        else bm { bookmarkArchiveHref = bookmarkArchiveHref prev_bm }
+    replaceBookmark bid prev_bm = do
+      replace bid (prepareReplace prev_bm)
+      deleteTags bid
+      pure (Updated bid)
+    deleteTags bid =
+      deleteWhere [BookmarkTagBookmarkId CP.==. bid]
+    insertTags userId' bid' =
+      for_ (zip [1 ..] tags) $
+      \(i, tag) -> void $ insert $ BookmarkTag userId' tag bid' i
+
+updateBookmarkArchiveUrl :: Key User -> Key Bookmark -> Maybe Text -> DB ()
+updateBookmarkArchiveUrl userId bid marchiveUrl =
+  updateWhere
+  [BookmarkUserId CP.==. userId, BookmarkId CP.==. bid]
+  [BookmarkArchiveHref CP.=. marchiveUrl]
+
+upsertNote :: Key User -> Maybe (Key Note) -> Note -> DB (UpsertResult (Key Note))
+upsertNote userId mnid note =
+  case mnid of
+    Just nid -> do
+      get nid >>= \case
+        Just note' -> do
+          when (userId /= noteUserId note')
+            (throwString "unauthorized")
+          replace nid note
+          pure (Updated nid)
+        _ -> throwString "not found"
+    Nothing -> do
+      Created <$> insert note
+
+-- * FileBookmarks
+
+data FileBookmark = FileBookmark
+  { fileBookmarkHref :: !Text
+  , fileBookmarkDescription :: !Text
+  , fileBookmarkExtended :: !Text
+  , fileBookmarkTime :: !UTCTime
+  , fileBookmarkShared :: !Bool
+  , fileBookmarkToRead :: !Bool
+  , fileBookmarkSelected :: !(Maybe Bool)
+  , fileBookmarkArchiveHref :: !(Maybe Text)
+  , fileBookmarkTags :: !Text
+  } deriving (Show, Eq, Typeable, Ord)
+
+instance FromJSON FileBookmark where
+  parseJSON (Object o) =
+    FileBookmark <$> o .: "href" <*> o .: "description" <*> o .: "extended" <*>
+    o .: "time" <*>
+    (boolFromYesNo <$> o .: "shared") <*>
+    (boolFromYesNo <$> o .: "toread") <*>
+    (o A..:? "selected") <*>
+    (o A..:? "archive_url") <*>
+    (o .: "tags")
+  parseJSON _ = A.parseFail "bad parse"
+
+instance ToJSON FileBookmark where
+  toJSON FileBookmark {..} =
+    object
+      [ "href" .= toJSON fileBookmarkHref
+      , "description" .= toJSON fileBookmarkDescription
+      , "extended" .= toJSON fileBookmarkExtended
+      , "time" .= toJSON fileBookmarkTime
+      , "shared" .= toJSON (boolToYesNo fileBookmarkShared)
+      , "toread" .= toJSON (boolToYesNo fileBookmarkToRead)
+      , "selected" .= toJSON fileBookmarkSelected
+      , "archive_url" .= toJSON fileBookmarkArchiveHref
+      , "tags" .= toJSON fileBookmarkTags
+      ]
+
+boolFromYesNo :: Text -> Bool
+boolFromYesNo "yes" = True
+boolFromYesNo _ = False
+
+boolToYesNo :: Bool -> Text
+boolToYesNo True = "yes"
+boolToYesNo _ = "no"
+
+-- * FileNotes
+
+data FileNote = FileNote
+  { fileNoteId :: !Text
+  , fileNoteTitle :: !Text
+  , fileNoteText :: !Text
+  , fileNoteLength :: !Int
+  , fileNoteCreatedAt :: !UTCTime
+  , fileNoteUpdatedAt :: !UTCTime
+  } deriving (Show, Eq, Typeable, Ord)
+
+instance FromJSON FileNote where
+  parseJSON (Object o) =
+    FileNote <$> o .: "id" <*> o .: "title" <*> o .: "text" <*>
+    o .: "length" <*>
+    (readFileNoteTime =<< o .: "created_at") <*>
+    (readFileNoteTime =<< o .: "updated_at")
+  parseJSON _ = A.parseFail "bad parse"
+
+instance ToJSON FileNote where
+  toJSON FileNote {..} =
+    object
+      [ "id" .= toJSON fileNoteId
+      , "title" .= toJSON fileNoteTitle
+      , "text" .= toJSON fileNoteText
+      , "length" .= toJSON fileNoteLength
+      , "created_at" .= toJSON (showFileNoteTime fileNoteCreatedAt)
+      , "updated_at" .= toJSON (showFileNoteTime fileNoteUpdatedAt)
+      ]
+
+readFileNoteTime
+  :: MonadFail m
+  => String -> m UTCTime
+readFileNoteTime = parseTimeM True defaultTimeLocale "%F %T"
+
+showFileNoteTime :: UTCTime -> String
+showFileNoteTime = formatTime defaultTimeLocale "%F %T"
diff --git a/src/PathPiece.hs b/src/PathPiece.hs
--- a/src/PathPiece.hs
+++ b/src/PathPiece.hs
@@ -1,55 +1,61 @@
-{-# OPTIONS_GHC -fno-warn-orphans #-}
-
-module PathPiece where
-  
-import Data.Text (splitOn)
-
-import Import.NoFoundation
-
--- PathPiece
-
-instance PathPiece UserNameP where
-  toPathPiece (UserNameP i) = "u:" <> i
-  fromPathPiece s =
-    case splitOn ":" s of
-      ["u", ""] -> Nothing
-      ["u", uname] -> Just $ UserNameP uname
-      _ -> Nothing
-
-instance PathPiece TagsP where
-  toPathPiece (TagsP tags) = "t:" <> (intercalate "+" tags)
-  fromPathPiece s =
-    case splitOn ":" s of
-      ["t", ""] -> Nothing
-      ["t", tags] -> Just $ TagsP (splitOn "+" tags)
-      _ -> Nothing
-
-instance PathPiece SharedP where
-  toPathPiece = \case
-    SharedAll -> ""
-    SharedPublic -> "public"
-    SharedPrivate -> "private"
-  fromPathPiece = \case
-    "public" -> Just SharedPublic
-    "private" -> Just SharedPrivate
-    _ -> Nothing
-
-instance PathPiece FilterP where
-  toPathPiece = \case
-    FilterAll -> ""
-    FilterUnread -> "unread"
-    FilterUntagged -> "untagged"
-    FilterStarred -> "starred"
-    FilterSingle slug -> "b:" <> unBmSlug slug
-  fromPathPiece = \case
-    "unread" -> Just FilterUnread
-    "untagged" -> Just FilterUntagged
-    "starred" -> Just FilterStarred
-    s -> case splitOn ":" s of
-        ["b", ""] -> Nothing
-        ["b", slug] -> Just $ FilterSingle (BmSlug slug)
-        _ -> Nothing
-
-
-deriving instance PathPiece NtSlug 
-deriving instance PathPiece BmSlug 
+{-# OPTIONS_GHC -fno-warn-orphans #-}
+
+module PathPiece where
+  
+import Data.Text (breakOn, splitOn)
+import qualified Data.Text as T (replace)
+import Import.NoFoundation
+
+-- PathPiece
+
+instance PathPiece UserNameP where
+  toPathPiece (UserNameP i) = "u:" <> i
+  fromPathPiece s =
+    case breakOn ":" s of
+      ("u", "") -> Nothing
+      ("u", uname) -> Just $ UserNameP (drop 1 uname)
+      _ -> Nothing
+
+instance PathPiece TagsP where
+  toPathPiece (TagsP tags) = "t:" <> intercalate "+" (fmap encodeTag tags)
+  fromPathPiece s =
+    case breakOn ":" s of
+      ("t", "") -> Nothing
+      ("t", tags) -> Just $ (TagsP . fmap decodeTag . splitOn "+" . drop 1) tags
+      _ -> Nothing
+
+encodeTag :: Text -> Text
+encodeTag = T.replace "+" "%2B"
+
+decodeTag :: Text -> Text
+decodeTag = T.replace "%2B" "+"
+
+instance PathPiece SharedP where
+  toPathPiece = \case
+    SharedAll -> ""
+    SharedPublic -> "public"
+    SharedPrivate -> "private"
+  fromPathPiece = \case
+    "public" -> Just SharedPublic
+    "private" -> Just SharedPrivate
+    _ -> Nothing
+
+instance PathPiece FilterP where
+  toPathPiece = \case
+    FilterAll -> ""
+    FilterUnread -> "unread"
+    FilterUntagged -> "untagged"
+    FilterStarred -> "starred"
+    FilterSingle slug -> "b:" <> unBmSlug slug
+  fromPathPiece = \case
+    "unread" -> Just FilterUnread
+    "untagged" -> Just FilterUntagged
+    "starred" -> Just FilterStarred
+    s -> case breakOn ":" s of
+        ("b", "") -> Nothing
+        ("b", slug) -> Just $ FilterSingle (BmSlug (drop 1 slug))
+        _ -> Nothing
+
+
+deriving instance PathPiece NtSlug 
+deriving instance PathPiece BmSlug 
diff --git a/src/Settings.hs b/src/Settings.hs
--- a/src/Settings.hs
+++ b/src/Settings.hs
@@ -56,14 +56,20 @@
     , appAuthDummyLogin         :: Bool
     -- ^ Indicate if auth dummy login should be enabled.
 
-    , appEkgHost                :: Maybe Text
-    -- ^ Host/interface the ekg server should bind to.
-    , appEkgPort                :: Maybe Int
-    -- ^ Port to listen on
+    , appArchiveSocksProxyHost   :: Maybe Text
+    -- ^ Socks proxy host to use when making archive requests
+
+    , appArchiveSocksProxyPort   :: Maybe Int
+    -- ^ Socks proxy port to use when making archive requests
+
+    , appSourceCodeUri                :: Maybe Text
+    -- ^ Uri to app source code
+
+    , appSSLOnly :: Bool
     }
 
 instance FromJSON AppSettings where
-    parseJSON = withObject "AppSettings" $ \o -> do
+    parseJSON = withObject "AppSettings" \o -> do
         let defaultDev =
 #ifdef DEVELOPMENT
                 True
@@ -90,8 +96,11 @@
 
         appAuthDummyLogin         <- o .:? "auth-dummy-login"      .!= dev
 
-        appEkgHost                <- o .:? "ekg-host"
-        appEkgPort                <- o .:? "ekg-port"
+        appArchiveSocksProxyHost   <- o .:? "archive-socks-proxy-host"
+        appArchiveSocksProxyPort   <- o .:? "archive-socks-proxy-port"
+        appSourceCodeUri           <- o .:? "source-code-uri"
+
+        appSSLOnly                 <- fromMaybe False <$> o .:? "ssl-only"
 
         return AppSettings {..}
 
diff --git a/static/css/main.css b/static/css/main.css
--- a/static/css/main.css
+++ b/static/css/main.css
@@ -1,161 +1,235 @@
-html {
-    height: 102%;
-}
-
-body {
-    height: 102%;
-    word-wrap: break-word;
-}
-
-button {
-    background:none;
-    border:none; 
-    padding:0;
-    cursor:pointer;
-}
-
-button:focus {
-    outline: none;
-}
-
-
-[hidden] {
-    display: none !important
-}
-input::placeholder {
-   color: lightgray 
-}
-.queryInput {
-    width: 128px;
-    padding: 0 22px 0 2px;
-    border-radius: 3px;
-    border-style: solid;
-    border-width: 1px;
-    border-color: gray;
-    height: 22px;
-    line-height: 22px;
-    transition: width .1s ease-in-out
-}
-.queryInput.search-inactive {}
-.queryInput:focus {
-    width: 175px;
-}
-.submitting .queryInput,
-.queryInput.search-active {
-    border-color: #990;
-    border-width: 2px;
-    background-color: #FF9;
-    width: 175px;
-}
-.queryIcon {
-    position: absolute;
-    right: 0;
-    top:1px;
-    cursor:pointer;
-    width:20px;
-    height: 20px;
-    fill: currentColor;
-}
-label {
-    cursor: pointer;
-}
-.close-x-wrap {
-  float: left;
-  width: 17px;
-  height: 17px;
-  top: 2px;
-  position: relative;
-  right: 2px; 
-}
-.close-x {
-  stroke: gray;
-  fill: transparent;
-  stroke-linecap: round;
-  stroke-width: 3;
-}
-.query-info-icon {
-  position: absolute;
-  top: 0px;
-  right: -18px;
-  text-decoration: none;
-  font-size: 12px;
-  padding: 0 8px 8px 0;
-}
-.star {
-    margin-left:-20px;
-    font-size:1.2em;
-    position:relative;
-    top:-2px;
-}
-
-.star button { 
-    transition: color .1s;
-}
-.star.selected button { 
-    color:#22a; 
-}
-.edit_links button {
-    transition: color .1s ease-in;
-}
-
-.tag {
-    color:#a51;
-    line-height:190%;
-}
-
-.private { background:#ddd;border:1px solid #d1d1d1; }
-.unread { color:#b41 }
-.mark_read {color: #a81;}
-.flash { color:green;background:#efe }
-
-.top_menu { 
-    margin-top:6px;
-}
-.top_menu a {
-    color: blue;
-}
-.bookmarklet { 
-    padding:1px 2px 0px 2px;
-}
-
-.alert { 
-    background:#ced;
-    border:1px solid #acc; 
-}
-
-.edit_bookmark_form {color:#888;}
-.edit_bookmark_form input {border:1px solid #ddd;}
-.edit_bookmark_form textarea {border:1px solid #ddd;}
-
-.nav-active {
-    background:#ff8;
-    color:blue;
-}
-
-/* mobile device */
-@media only screen and (max-width : 750px) {
-    body { 
-        -webkit-text-size-adjust: none; 
-    }
-    .display {
-        float: none
-    }
-}
-
-@media only screen and (max-width : 500px) {
-    .filters {
-        clear: both;
-        position: relative;
-        top: 2px;
-    }
-}
-
-.rdim {
-  opacity: .8;
-  transition: all .15s ease-in;
-}
-.rdim:hover,
-.rdim:focus {
-  opacity: 1;
-  transition: all .15s ease-in;
-}
+html {
+    height: 102%;
+}
+
+body {
+    height: 102%;
+    word-wrap: break-word;
+}
+
+button {
+    background: none;
+    border: none;
+    padding: 0;
+    cursor: pointer;
+}
+
+button:focus {
+    outline: none;
+}
+
+[hidden] {
+    display: none !important;
+}
+
+input::placeholder {
+    color: lightgray;
+}
+
+input[type="text"],
+input[type="url"],
+input[type="password"],
+textarea {
+    font-size: 16px;
+}
+
+.queryInput {
+    width: 128px;
+    padding: 0 22px 0 2px;
+    border-radius: 3px;
+    border-style: solid;
+    border-width: 1px;
+    border-color: gray;
+    height: 22px;
+    line-height: 22px;
+    transition: width 0.1s ease-in-out;
+}
+.queryInput.search-inactive {
+}
+.queryInput:focus {
+    width: 175px;
+}
+.submitting .queryInput,
+.queryInput.search-active {
+    border-color: #990;
+    border-width: 2px;
+    background-color: #ff9;
+    width: 175px;
+}
+.queryIcon {
+    position: absolute;
+    right: 0;
+    top: 1px;
+    cursor: pointer;
+    width: 20px;
+    height: 20px;
+    fill: currentColor;
+}
+label {
+    cursor: pointer;
+}
+.close-x-wrap {
+    float: left;
+    width: 17px;
+    height: 17px;
+    top: 2px;
+    position: relative;
+    right: 2px;
+}
+.close-x {
+    stroke: gray;
+    fill: transparent;
+    stroke-linecap: round;
+    stroke-width: 3;
+}
+.query-info-icon {
+    position: absolute;
+    top: 0px;
+    right: -18px;
+    text-decoration: none;
+    font-size: 12px;
+    padding: 0 8px 8px 0;
+}
+.star {
+    margin-left: -20px;
+    font-size: 1.2em;
+    position: relative;
+    top: -2px;
+}
+
+.star button {
+    transition: color 0.1s;
+}
+.star.selected button {
+    color: #22a;
+}
+.edit_links button {
+    transition: color 0.1s ease-in;
+}
+
+.tag {
+    color: #a51;
+    line-height: 190%;
+    display: inline-block;
+}
+.tag-include {
+    color: rgb(221, 221, 221);
+    line-height: 190%;
+    display: inline-block;
+}
+.tag-exclude {
+    color: rgb(255, 170, 170);
+    line-height: 190%;
+    display: inline-block;
+}
+
+.private {
+    background: #ddd;
+    border: 1px solid #d1d1d1;
+}
+.unread {
+    color: #b41;
+}
+.mark_read {
+    color: #a81;
+}
+.flash {
+    color: green;
+    background: #efe;
+}
+
+.top_menu {
+    margin-top: 6px;
+}
+.top_menu a {
+    color: blue;
+}
+.bookmarklet {
+    padding: 1px 2px 0px 2px;
+}
+
+.alert {
+    background: #ced;
+    border: 1px solid #acc;
+    margin-bottom: 5px;
+    padding: 2px;
+}
+.alert.alert-err {
+    background-color: #ffdfdf
+}
+
+.edit_bookmark_form {
+    color: #888;
+}
+.edit_bookmark_form input {
+    border: 1px solid #ddd;
+}
+.edit_bookmark_form textarea {
+    border: 1px solid #ddd;
+}
+
+.nav-active {
+    background: #ff8;
+    color: blue;
+}
+
+/* mobile device */
+@media only screen and (max-width: 750px) {
+    body {
+        -webkit-text-size-adjust: none;
+    }
+    .display {
+        float: none;
+    }
+}
+
+@media only screen and (max-width: 500px) {
+    .filters {
+        clear: both;
+        position: relative;
+        top: 2px;
+    }
+}
+
+.rdim {
+    opacity: 0.8;
+    transition: all 0.15s ease-in;
+}
+.rdim:hover,
+.rdim:focus {
+    opacity: 1;
+    transition: all 0.15s ease-in;
+}
+.display .description > div p,
+.display .description > div pre {
+    margin-top: 9px;
+    margin-bottom: 9px;
+}
+.display .description > div > *:first-child {
+    margin-top: 2px;
+}
+.display .description > div > *:last-child {
+    margin-bottom: 2px;
+}
+.display .description > div > ol li p {
+    margin-top: 0;
+    margin-bottom: 0;
+}
+.display .description > div > ul li p {
+    margin-top: 0;
+    margin-bottom: 0;
+}
+.display .description > div ol {
+    padding-left: 23px;
+}
+.display .description > div ul {
+    padding-left: 23px;
+}
+code,
+pre {
+    font-size: 13px;
+}
+
+#content:not([view-rendered]) .view-delay {
+    display: none !important;
+}
diff --git a/static/css/popup.css b/static/css/popup.css
--- a/static/css/popup.css
+++ b/static/css/popup.css
@@ -1,34 +1,58 @@
 html {
-  box-sizing: border-box;
+    box-sizing: border-box;
 }
 [hidden] {
-    display: none !important
+    display: none !important;
 }
 button {
-    background:none;
-    border:none; 
-    padding:0;
-    cursor:pointer;
+    background: none;
+    border: none;
+    padding: 0;
+    cursor: pointer;
 }
 button:focus {
     outline: none;
 }
-.alert { 
-    background:#ced;
-    border:1px solid #acc; 
+input[type="text"],
+input[type="url"],
+textarea {
+    font-size: 16px;
 }
-form label { 
+.alert {
+    background: #ced;
+    border: 1px solid #acc;
+}
+#addForm .alert {
+    margin-top: -6px;
+}
+.alert.alert-err {
+    background-color: #ffdfdf
+}
+form label {
     margin: 0;
     vertical-align: middle;
     display: table-cell;
     padding: 2px 0;
 }
-li { list-style-type: none; margin: 0; padding: 0; display: block;} 
+li {
+    list-style-type: none;
+    margin: 0;
+    padding: 0;
+    display: block;
+}
 
-.when { color:#999}
-.unread { color:#b41 }
-a.unread { color:#b41 }
-a.bookmark_title { font-size:120%;}
+.when {
+    color: #999;
+}
+.unread {
+    color: #b41;
+}
+a.unread {
+    color: #b41;
+}
+a.bookmark_title {
+    font-size: 120%;
+}
 
 label {
     cursor: pointer;
diff --git a/static/js/app.js b/static/js/app.js
deleted file mode 100644
--- a/static/js/app.js
+++ /dev/null
@@ -1,14152 +0,0 @@
-// Generated by purs bundle 0.12.2
-var PS = {};
-(function(exports) {
-  /* global exports */
-  /* global XMLHttpRequest */
-  /* global module */
-  /* global process */
-  "use strict";
-
-  exports._ajax = function () {
-    var platformSpecific = { };
-    if (typeof module !== "undefined" && module.require && !(typeof process !== "undefined" && process.versions["electron"])) {
-      // We are on node.js
-      platformSpecific.newXHR = function () {
-        var XHR = module.require("xhr2");
-        return new XHR();
-      };
-
-      platformSpecific.fixupUrl = function (url) {
-        var urllib = module.require("url");
-        var u = urllib.parse(url);
-        u.protocol = u.protocol || "http:";
-        u.hostname = u.hostname || "localhost";
-        return urllib.format(u);
-      };
-
-      platformSpecific.getResponse = function (xhr) {
-        return xhr.response;
-      };
-    } else {
-      // We are in the browser
-      platformSpecific.newXHR = function () {
-        return new XMLHttpRequest();
-      };
-
-      platformSpecific.fixupUrl = function (url) {
-        return url || "/";
-      };
-
-      platformSpecific.getResponse = function (xhr) {
-        return xhr.response;
-      };
-    }
-
-    return function (mkHeader, options) {
-      return function (errback, callback) {
-        var xhr = platformSpecific.newXHR();
-        var fixedUrl = platformSpecific.fixupUrl(options.url);
-        xhr.open(options.method || "GET", fixedUrl, true, options.username, options.password);
-        if (options.headers) {
-          try {
-            for (var i = 0, header; (header = options.headers[i]) != null; i++) {
-              xhr.setRequestHeader(header.field, header.value);
-            }
-          } catch (e) {
-            errback(e);
-          }
-        }
-        xhr.onerror = function () {
-          errback(new Error("AJAX request failed: " + options.method + " " + options.url));
-        };
-        xhr.onload = function () {
-          callback({
-            status: xhr.status,
-            statusText: xhr.statusText,
-            headers: xhr.getAllResponseHeaders().split("\r\n")
-              .filter(function (header) {
-                return header.length > 0;
-              })
-              .map(function (header) {
-                var i = header.indexOf(":");
-                return mkHeader(header.substring(0, i))(header.substring(i + 2));
-              }),
-            body: platformSpecific.getResponse(xhr)
-          });
-        };
-        xhr.responseType = options.responseType;
-        xhr.withCredentials = options.withCredentials;
-        xhr.send(options.content);
-
-        return function (error, cancelErrback, cancelCallback) {
-          try {
-            xhr.abort();
-          } catch (e) {
-            return cancelErrback(e);
-          }
-          return cancelCallback();
-        };
-      };
-    };
-  }();
-})(PS["Affjax"] = PS["Affjax"] || {});
-(function(exports) {
-    "use strict";
-
-  function id(x) {
-    return x;
-  }                      
-  exports.fromObject = id;
-
-  exports.stringify = function (j) {
-    return JSON.stringify(j);
-  };                        
-
-  function isArray(a) {
-    return objToString.call(a) === "[object Array]";
-  }
-})(PS["Data.Argonaut.Core"] = PS["Data.Argonaut.Core"] || {});
-(function(exports) {
-    "use strict";
-
-  exports.refEq = function (r1) {
-    return function (r2) {
-      return r1 === r2;
-    };
-  };
-})(PS["Data.Eq"] = PS["Data.Eq"] || {});
-(function(exports) {
-    "use strict";
-
-  exports.boolConj = function (b1) {
-    return function (b2) {
-      return b1 && b2;
-    };
-  };
-
-  exports.boolDisj = function (b1) {
-    return function (b2) {
-      return b1 || b2;
-    };
-  };
-
-  exports.boolNot = function (b) {
-    return !b;
-  };
-})(PS["Data.HeytingAlgebra"] = PS["Data.HeytingAlgebra"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.2
-  "use strict";
-  var $foreign = PS["Data.Symbol"];      
-  var SProxy = (function () {
-      function SProxy() {
-
-      };
-      SProxy.value = new SProxy();
-      return SProxy;
-  })();
-  var IsSymbol = function (reflectSymbol) {
-      this.reflectSymbol = reflectSymbol;
-  };
-  var reflectSymbol = function (dict) {
-      return dict.reflectSymbol;
-  };
-  exports["IsSymbol"] = IsSymbol;
-  exports["reflectSymbol"] = reflectSymbol;
-  exports["SProxy"] = SProxy;
-})(PS["Data.Symbol"] = PS["Data.Symbol"] || {});
-(function(exports) {
-    "use strict";
-
-  exports.unit = {};
-})(PS["Data.Unit"] = PS["Data.Unit"] || {});
-(function(exports) {
-    "use strict";
-
-  exports.showIntImpl = function (n) {
-    return n.toString();
-  };
-})(PS["Data.Show"] = PS["Data.Show"] || {});
-(function(exports) {
-    "use strict";
-
-  exports.unsafeGet = function (label) {
-    return function (rec) {
-      return rec[label];
-    };
-  };
-})(PS["Record.Unsafe"] = PS["Record.Unsafe"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.2
-  "use strict";
-  var $foreign = PS["Record.Unsafe"];
-  exports["unsafeGet"] = $foreign.unsafeGet;
-})(PS["Record.Unsafe"] = PS["Record.Unsafe"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.2
-  "use strict";
-  var $foreign = PS["Data.Show"];
-  var Data_Symbol = PS["Data.Symbol"];
-  var Record_Unsafe = PS["Record.Unsafe"];
-  var Type_Data_RowList = PS["Type.Data.RowList"];                 
-  var Show = function (show) {
-      this.show = show;
-  };                                                 
-  var showInt = new Show($foreign.showIntImpl);
-  var show = function (dict) {
-      return dict.show;
-  };
-  exports["Show"] = Show;
-  exports["show"] = show;
-  exports["showInt"] = showInt;
-})(PS["Data.Show"] = PS["Data.Show"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.2
-  "use strict";
-  var $foreign = PS["Data.Unit"];
-  var Data_Show = PS["Data.Show"];
-  exports["unit"] = $foreign.unit;
-})(PS["Data.Unit"] = PS["Data.Unit"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.2
-  "use strict";
-  var $foreign = PS["Data.HeytingAlgebra"];
-  var Data_Symbol = PS["Data.Symbol"];
-  var Data_Unit = PS["Data.Unit"];
-  var Record_Unsafe = PS["Record.Unsafe"];
-  var Type_Data_Row = PS["Type.Data.Row"];
-  var Type_Data_RowList = PS["Type.Data.RowList"];                 
-  var HeytingAlgebra = function (conj, disj, ff, implies, not, tt) {
-      this.conj = conj;
-      this.disj = disj;
-      this.ff = ff;
-      this.implies = implies;
-      this.not = not;
-      this.tt = tt;
-  };
-  var tt = function (dict) {
-      return dict.tt;
-  };
-  var not = function (dict) {
-      return dict.not;
-  };
-  var implies = function (dict) {
-      return dict.implies;
-  };
-  var ff = function (dict) {
-      return dict.ff;
-  };
-  var disj = function (dict) {
-      return dict.disj;
-  };
-  var heytingAlgebraBoolean = new HeytingAlgebra($foreign.boolConj, $foreign.boolDisj, false, function (a) {
-      return function (b) {
-          return disj(heytingAlgebraBoolean)(not(heytingAlgebraBoolean)(a))(b);
-      };
-  }, $foreign.boolNot, true);
-  var conj = function (dict) {
-      return dict.conj;
-  };
-  var heytingAlgebraFunction = function (dictHeytingAlgebra) {
-      return new HeytingAlgebra(function (f) {
-          return function (g) {
-              return function (a) {
-                  return conj(dictHeytingAlgebra)(f(a))(g(a));
-              };
-          };
-      }, function (f) {
-          return function (g) {
-              return function (a) {
-                  return disj(dictHeytingAlgebra)(f(a))(g(a));
-              };
-          };
-      }, function (v) {
-          return ff(dictHeytingAlgebra);
-      }, function (f) {
-          return function (g) {
-              return function (a) {
-                  return implies(dictHeytingAlgebra)(f(a))(g(a));
-              };
-          };
-      }, function (f) {
-          return function (a) {
-              return not(dictHeytingAlgebra)(f(a));
-          };
-      }, function (v) {
-          return tt(dictHeytingAlgebra);
-      });
-  };
-  exports["HeytingAlgebra"] = HeytingAlgebra;
-  exports["tt"] = tt;
-  exports["ff"] = ff;
-  exports["implies"] = implies;
-  exports["conj"] = conj;
-  exports["disj"] = disj;
-  exports["not"] = not;
-  exports["heytingAlgebraBoolean"] = heytingAlgebraBoolean;
-  exports["heytingAlgebraFunction"] = heytingAlgebraFunction;
-})(PS["Data.HeytingAlgebra"] = PS["Data.HeytingAlgebra"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.2
-  "use strict";
-  var Data_Show = PS["Data.Show"];
-  var absurd = function (a) {
-      var spin = function ($copy_v) {
-          var $tco_result;
-          function $tco_loop(v) {
-              $copy_v = v;
-              return;
-          };
-          while (!false) {
-              $tco_result = $tco_loop($copy_v);
-          };
-          return $tco_result;
-      };
-      return spin(a);
-  };
-  exports["absurd"] = absurd;
-})(PS["Data.Void"] = PS["Data.Void"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.2
-  "use strict";
-  var $foreign = PS["Data.Eq"];
-  var Data_HeytingAlgebra = PS["Data.HeytingAlgebra"];
-  var Data_Symbol = PS["Data.Symbol"];
-  var Data_Unit = PS["Data.Unit"];
-  var Data_Void = PS["Data.Void"];
-  var Record_Unsafe = PS["Record.Unsafe"];
-  var Type_Data_RowList = PS["Type.Data.RowList"];                 
-  var Eq = function (eq) {
-      this.eq = eq;
-  };
-  var eqVoid = new Eq(function (v) {
-      return function (v1) {
-          return true;
-      };
-  });
-  var eqUnit = new Eq(function (v) {
-      return function (v1) {
-          return true;
-      };
-  });
-  var eqString = new Eq($foreign.refEq);
-  var eqInt = new Eq($foreign.refEq);
-  var eqChar = new Eq($foreign.refEq);
-  var eq = function (dict) {
-      return dict.eq;
-  };
-  exports["Eq"] = Eq;
-  exports["eq"] = eq;
-  exports["eqInt"] = eqInt;
-  exports["eqChar"] = eqChar;
-  exports["eqString"] = eqString;
-  exports["eqUnit"] = eqUnit;
-  exports["eqVoid"] = eqVoid;
-})(PS["Data.Eq"] = PS["Data.Eq"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.2
-  "use strict";
-  var Semigroupoid = function (compose) {
-      this.compose = compose;
-  };
-  var semigroupoidFn = new Semigroupoid(function (f) {
-      return function (g) {
-          return function (x) {
-              return f(g(x));
-          };
-      };
-  });
-  var compose = function (dict) {
-      return dict.compose;
-  };
-  exports["compose"] = compose;
-  exports["Semigroupoid"] = Semigroupoid;
-  exports["semigroupoidFn"] = semigroupoidFn;
-})(PS["Control.Semigroupoid"] = PS["Control.Semigroupoid"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.2
-  "use strict";
-  var Control_Semigroupoid = PS["Control.Semigroupoid"];                 
-  var Category = function (Semigroupoid0, identity) {
-      this.Semigroupoid0 = Semigroupoid0;
-      this.identity = identity;
-  };
-  var identity = function (dict) {
-      return dict.identity;
-  };
-  var categoryFn = new Category(function () {
-      return Control_Semigroupoid.semigroupoidFn;
-  }, function (x) {
-      return x;
-  });
-  exports["Category"] = Category;
-  exports["identity"] = identity;
-  exports["categoryFn"] = categoryFn;
-})(PS["Control.Category"] = PS["Control.Category"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.2
-  "use strict";
-  var otherwise = true;
-  exports["otherwise"] = otherwise;
-})(PS["Data.Boolean"] = PS["Data.Boolean"] || {});
-(function(exports) {
-    "use strict";
-
-  exports.unsafeCompareImpl = function (lt) {
-    return function (eq) {
-      return function (gt) {
-        return function (x) {
-          return function (y) {
-            return x < y ? lt : x === y ? eq : gt;
-          };
-        };
-      };
-    };
-  };
-})(PS["Data.Ord.Unsafe"] = PS["Data.Ord.Unsafe"] || {});
-(function(exports) {
-    "use strict";
-
-  exports.concatString = function (s1) {
-    return function (s2) {
-      return s1 + s2;
-    };
-  };
-
-  exports.concatArray = function (xs) {
-    return function (ys) {
-      if (xs.length === 0) return ys;
-      if (ys.length === 0) return xs;
-      return xs.concat(ys);
-    };
-  };
-})(PS["Data.Semigroup"] = PS["Data.Semigroup"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.2
-  "use strict";
-  var $foreign = PS["Data.Semigroup"];
-  var Data_Symbol = PS["Data.Symbol"];
-  var Data_Unit = PS["Data.Unit"];
-  var Data_Void = PS["Data.Void"];
-  var Record_Unsafe = PS["Record.Unsafe"];
-  var Type_Data_RowList = PS["Type.Data.RowList"];                 
-  var Semigroup = function (append) {
-      this.append = append;
-  }; 
-  var semigroupString = new Semigroup($foreign.concatString);
-  var semigroupArray = new Semigroup($foreign.concatArray);
-  var append = function (dict) {
-      return dict.append;
-  };
-  var semigroupFn = function (dictSemigroup) {
-      return new Semigroup(function (f) {
-          return function (g) {
-              return function (x) {
-                  return append(dictSemigroup)(f(x))(g(x));
-              };
-          };
-      });
-  };
-  exports["Semigroup"] = Semigroup;
-  exports["append"] = append;
-  exports["semigroupString"] = semigroupString;
-  exports["semigroupFn"] = semigroupFn;
-  exports["semigroupArray"] = semigroupArray;
-})(PS["Data.Semigroup"] = PS["Data.Semigroup"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.2
-  "use strict";
-  var Data_Eq = PS["Data.Eq"];
-  var Data_Semigroup = PS["Data.Semigroup"];
-  var Data_Show = PS["Data.Show"];                 
-  var LT = (function () {
-      function LT() {
-
-      };
-      LT.value = new LT();
-      return LT;
-  })();
-  var GT = (function () {
-      function GT() {
-
-      };
-      GT.value = new GT();
-      return GT;
-  })();
-  var EQ = (function () {
-      function EQ() {
-
-      };
-      EQ.value = new EQ();
-      return EQ;
-  })();
-  exports["LT"] = LT;
-  exports["GT"] = GT;
-  exports["EQ"] = EQ;
-})(PS["Data.Ordering"] = PS["Data.Ordering"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.2
-  "use strict";
-  var $foreign = PS["Data.Ord.Unsafe"];
-  var Data_Ordering = PS["Data.Ordering"];                 
-  var unsafeCompare = $foreign.unsafeCompareImpl(Data_Ordering.LT.value)(Data_Ordering.EQ.value)(Data_Ordering.GT.value);
-  exports["unsafeCompare"] = unsafeCompare;
-})(PS["Data.Ord.Unsafe"] = PS["Data.Ord.Unsafe"] || {});
-(function(exports) {
-    "use strict";
-
-  exports.intSub = function (x) {
-    return function (y) {
-      /* jshint bitwise: false */
-      return x - y | 0;
-    };
-  };
-})(PS["Data.Ring"] = PS["Data.Ring"] || {});
-(function(exports) {
-    "use strict";
-
-  exports.intAdd = function (x) {
-    return function (y) {
-      /* jshint bitwise: false */
-      return x + y | 0;
-    };
-  };
-
-  exports.intMul = function (x) {
-    return function (y) {
-      /* jshint bitwise: false */
-      return x * y | 0;
-    };
-  };
-})(PS["Data.Semiring"] = PS["Data.Semiring"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.2
-  "use strict";
-  var $foreign = PS["Data.Semiring"];
-  var Data_Symbol = PS["Data.Symbol"];
-  var Data_Unit = PS["Data.Unit"];
-  var Record_Unsafe = PS["Record.Unsafe"];
-  var Type_Data_Row = PS["Type.Data.Row"];
-  var Type_Data_RowList = PS["Type.Data.RowList"];                 
-  var Semiring = function (add, mul, one, zero) {
-      this.add = add;
-      this.mul = mul;
-      this.one = one;
-      this.zero = zero;
-  };
-  var zero = function (dict) {
-      return dict.zero;
-  };                                                                            
-  var semiringInt = new Semiring($foreign.intAdd, $foreign.intMul, 1, 0);
-  var one = function (dict) {
-      return dict.one;
-  };
-  var mul = function (dict) {
-      return dict.mul;
-  };
-  var add = function (dict) {
-      return dict.add;
-  };
-  exports["Semiring"] = Semiring;
-  exports["add"] = add;
-  exports["zero"] = zero;
-  exports["mul"] = mul;
-  exports["one"] = one;
-  exports["semiringInt"] = semiringInt;
-})(PS["Data.Semiring"] = PS["Data.Semiring"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.2
-  "use strict";
-  var $foreign = PS["Data.Ring"];
-  var Data_Semiring = PS["Data.Semiring"];
-  var Data_Symbol = PS["Data.Symbol"];
-  var Data_Unit = PS["Data.Unit"];
-  var Record_Unsafe = PS["Record.Unsafe"];
-  var Type_Data_RowList = PS["Type.Data.RowList"];                 
-  var Ring = function (Semiring0, sub) {
-      this.Semiring0 = Semiring0;
-      this.sub = sub;
-  };
-  var sub = function (dict) {
-      return dict.sub;
-  };                  
-  var ringInt = new Ring(function () {
-      return Data_Semiring.semiringInt;
-  }, $foreign.intSub);
-  exports["Ring"] = Ring;
-  exports["sub"] = sub;
-  exports["ringInt"] = ringInt;
-})(PS["Data.Ring"] = PS["Data.Ring"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.2
-  "use strict";
-  var $foreign = PS["Data.Ord"];
-  var Data_Eq = PS["Data.Eq"];
-  var Data_Ord_Unsafe = PS["Data.Ord.Unsafe"];
-  var Data_Ordering = PS["Data.Ordering"];
-  var Data_Ring = PS["Data.Ring"];
-  var Data_Semiring = PS["Data.Semiring"];
-  var Data_Symbol = PS["Data.Symbol"];
-  var Data_Unit = PS["Data.Unit"];
-  var Data_Void = PS["Data.Void"];
-  var Record_Unsafe = PS["Record.Unsafe"];
-  var Type_Data_RowList = PS["Type.Data.RowList"];                 
-  var Ord = function (Eq0, compare) {
-      this.Eq0 = Eq0;
-      this.compare = compare;
-  };
-  var ordVoid = new Ord(function () {
-      return Data_Eq.eqVoid;
-  }, function (v) {
-      return function (v1) {
-          return Data_Ordering.EQ.value;
-      };
-  });
-  var ordUnit = new Ord(function () {
-      return Data_Eq.eqUnit;
-  }, function (v) {
-      return function (v1) {
-          return Data_Ordering.EQ.value;
-      };
-  });
-  var ordString = new Ord(function () {
-      return Data_Eq.eqString;
-  }, Data_Ord_Unsafe.unsafeCompare);
-  var ordInt = new Ord(function () {
-      return Data_Eq.eqInt;
-  }, Data_Ord_Unsafe.unsafeCompare);
-  var ordChar = new Ord(function () {
-      return Data_Eq.eqChar;
-  }, Data_Ord_Unsafe.unsafeCompare);
-  var compare = function (dict) {
-      return dict.compare;
-  };
-  exports["Ord"] = Ord;
-  exports["compare"] = compare;
-  exports["ordInt"] = ordInt;
-  exports["ordString"] = ordString;
-  exports["ordChar"] = ordChar;
-  exports["ordUnit"] = ordUnit;
-  exports["ordVoid"] = ordVoid;
-})(PS["Data.Ord"] = PS["Data.Ord"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.2
-  "use strict";
-  var Control_Category = PS["Control.Category"];
-  var Data_Boolean = PS["Data.Boolean"];
-  var Data_Ord = PS["Data.Ord"];
-  var Data_Ring = PS["Data.Ring"];                 
-  var on = function (f) {
-      return function (g) {
-          return function (x) {
-              return function (y) {
-                  return f(g(x))(g(y));
-              };
-          };
-      };
-  };
-  var flip = function (f) {
-      return function (b) {
-          return function (a) {
-              return f(a)(b);
-          };
-      };
-  };
-  var $$const = function (a) {
-      return function (v) {
-          return a;
-      };
-  };
-  exports["flip"] = flip;
-  exports["const"] = $$const;
-  exports["on"] = on;
-})(PS["Data.Function"] = PS["Data.Function"] || {});
-(function(exports) {
-    "use strict";
-
-  exports.runFn4 = function (fn) {
-    return function (a) {
-      return function (b) {
-        return function (c) {
-          return function (d) {
-            return fn(a, b, c, d);
-          };
-        };
-      };
-    };
-  };
-})(PS["Data.Function.Uncurried"] = PS["Data.Function.Uncurried"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.2
-  "use strict";
-  var $foreign = PS["Data.Function.Uncurried"];
-  var Data_Unit = PS["Data.Unit"];
-  exports["runFn4"] = $foreign.runFn4;
-})(PS["Data.Function.Uncurried"] = PS["Data.Function.Uncurried"] || {});
-(function(exports) {
-    "use strict";
-
-  exports.arrayMap = function (f) {
-    return function (arr) {
-      var l = arr.length;
-      var result = new Array(l);
-      for (var i = 0; i < l; i++) {
-        result[i] = f(arr[i]);
-      }
-      return result;
-    };
-  };
-})(PS["Data.Functor"] = PS["Data.Functor"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.2
-  "use strict";
-  var $foreign = PS["Data.Functor"];
-  var Control_Semigroupoid = PS["Control.Semigroupoid"];
-  var Data_Function = PS["Data.Function"];
-  var Data_Unit = PS["Data.Unit"];                 
-  var Functor = function (map) {
-      this.map = map;
-  };
-  var map = function (dict) {
-      return dict.map;
-  };
-  var $$void = function (dictFunctor) {
-      return map(dictFunctor)(Data_Function["const"](Data_Unit.unit));
-  };
-  var voidLeft = function (dictFunctor) {
-      return function (f) {
-          return function (x) {
-              return map(dictFunctor)(Data_Function["const"](x))(f);
-          };
-      };
-  };
-  var functorFn = new Functor(Control_Semigroupoid.compose(Control_Semigroupoid.semigroupoidFn));
-  var functorArray = new Functor($foreign.arrayMap);
-  exports["Functor"] = Functor;
-  exports["map"] = map;
-  exports["void"] = $$void;
-  exports["voidLeft"] = voidLeft;
-  exports["functorFn"] = functorFn;
-  exports["functorArray"] = functorArray;
-})(PS["Data.Functor"] = PS["Data.Functor"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.2
-  "use strict";
-  var Data_Functor = PS["Data.Functor"];
-  var Data_Semigroup = PS["Data.Semigroup"];                 
-  var Alt = function (Functor0, alt) {
-      this.Functor0 = Functor0;
-      this.alt = alt;
-  };                                                       
-  var alt = function (dict) {
-      return dict.alt;
-  };
-  exports["Alt"] = Alt;
-  exports["alt"] = alt;
-})(PS["Control.Alt"] = PS["Control.Alt"] || {});
-(function(exports) {
-    "use strict";
-
-  exports.arrayApply = function (fs) {
-    return function (xs) {
-      var l = fs.length;
-      var k = xs.length;
-      var result = new Array(l*k);
-      var n = 0;
-      for (var i = 0; i < l; i++) {
-        var f = fs[i];
-        for (var j = 0; j < k; j++) {
-          result[n++] = f(xs[j]);
-        }
-      }
-      return result;
-    };
-  };
-})(PS["Control.Apply"] = PS["Control.Apply"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.2
-  "use strict";
-  var $foreign = PS["Control.Apply"];
-  var Control_Category = PS["Control.Category"];
-  var Data_Function = PS["Data.Function"];
-  var Data_Functor = PS["Data.Functor"];                 
-  var Apply = function (Functor0, apply) {
-      this.Functor0 = Functor0;
-      this.apply = apply;
-  }; 
-  var applyArray = new Apply(function () {
-      return Data_Functor.functorArray;
-  }, $foreign.arrayApply);
-  var apply = function (dict) {
-      return dict.apply;
-  };
-  var applySecond = function (dictApply) {
-      return function (a) {
-          return function (b) {
-              return apply(dictApply)(Data_Functor.map(dictApply.Functor0())(Data_Function["const"](Control_Category.identity(Control_Category.categoryFn)))(a))(b);
-          };
-      };
-  };
-  var lift2 = function (dictApply) {
-      return function (f) {
-          return function (a) {
-              return function (b) {
-                  return apply(dictApply)(Data_Functor.map(dictApply.Functor0())(f)(a))(b);
-              };
-          };
-      };
-  };
-  exports["Apply"] = Apply;
-  exports["apply"] = apply;
-  exports["applySecond"] = applySecond;
-  exports["lift2"] = lift2;
-  exports["applyArray"] = applyArray;
-})(PS["Control.Apply"] = PS["Control.Apply"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.2
-  "use strict";
-  var Control_Apply = PS["Control.Apply"];
-  var Data_Functor = PS["Data.Functor"];
-  var Data_Unit = PS["Data.Unit"];                 
-  var Applicative = function (Apply0, pure) {
-      this.Apply0 = Apply0;
-      this.pure = pure;
-  };
-  var pure = function (dict) {
-      return dict.pure;
-  };
-  var when = function (dictApplicative) {
-      return function (v) {
-          return function (v1) {
-              if (v) {
-                  return v1;
-              };
-              if (!v) {
-                  return pure(dictApplicative)(Data_Unit.unit);
-              };
-              throw new Error("Failed pattern match at Control.Applicative (line 57, column 1 - line 57, column 63): " + [ v.constructor.name, v1.constructor.name ]);
-          };
-      };
-  };
-  var liftA1 = function (dictApplicative) {
-      return function (f) {
-          return function (a) {
-              return Control_Apply.apply(dictApplicative.Apply0())(pure(dictApplicative)(f))(a);
-          };
-      };
-  };
-  exports["Applicative"] = Applicative;
-  exports["pure"] = pure;
-  exports["liftA1"] = liftA1;
-  exports["when"] = when;
-})(PS["Control.Applicative"] = PS["Control.Applicative"] || {});
-(function(exports) {
-    "use strict";
-
-  exports.arrayBind = function (arr) {
-    return function (f) {
-      var result = [];
-      for (var i = 0, l = arr.length; i < l; i++) {
-        Array.prototype.push.apply(result, f(arr[i]));
-      }
-      return result;
-    };
-  };
-})(PS["Control.Bind"] = PS["Control.Bind"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.2
-  "use strict";
-  var $foreign = PS["Control.Bind"];
-  var Control_Applicative = PS["Control.Applicative"];
-  var Control_Apply = PS["Control.Apply"];
-  var Control_Category = PS["Control.Category"];
-  var Data_Function = PS["Data.Function"];
-  var Data_Functor = PS["Data.Functor"];
-  var Data_Unit = PS["Data.Unit"];                 
-  var Bind = function (Apply0, bind) {
-      this.Apply0 = Apply0;
-      this.bind = bind;
-  };
-  var Discard = function (discard) {
-      this.discard = discard;
-  };
-  var discard = function (dict) {
-      return dict.discard;
-  }; 
-  var bindArray = new Bind(function () {
-      return Control_Apply.applyArray;
-  }, $foreign.arrayBind);
-  var bind = function (dict) {
-      return dict.bind;
-  };
-  var bindFlipped = function (dictBind) {
-      return Data_Function.flip(bind(dictBind));
-  };
-  var composeKleisliFlipped = function (dictBind) {
-      return function (f) {
-          return function (g) {
-              return function (a) {
-                  return bindFlipped(dictBind)(f)(g(a));
-              };
-          };
-      };
-  };
-  var composeKleisli = function (dictBind) {
-      return function (f) {
-          return function (g) {
-              return function (a) {
-                  return bind(dictBind)(f(a))(g);
-              };
-          };
-      };
-  };
-  var discardUnit = new Discard(function (dictBind) {
-      return bind(dictBind);
-  });
-  var join = function (dictBind) {
-      return function (m) {
-          return bind(dictBind)(m)(Control_Category.identity(Control_Category.categoryFn));
-      };
-  };
-  exports["Bind"] = Bind;
-  exports["bind"] = bind;
-  exports["bindFlipped"] = bindFlipped;
-  exports["Discard"] = Discard;
-  exports["discard"] = discard;
-  exports["join"] = join;
-  exports["composeKleisli"] = composeKleisli;
-  exports["composeKleisliFlipped"] = composeKleisliFlipped;
-  exports["bindArray"] = bindArray;
-  exports["discardUnit"] = discardUnit;
-})(PS["Control.Bind"] = PS["Control.Bind"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.2
-  "use strict";
-  var Control_Applicative = PS["Control.Applicative"];
-  var Control_Apply = PS["Control.Apply"];
-  var Control_Bind = PS["Control.Bind"];
-  var Data_Functor = PS["Data.Functor"];
-  var Data_Unit = PS["Data.Unit"];                 
-  var Monad = function (Applicative0, Bind1) {
-      this.Applicative0 = Applicative0;
-      this.Bind1 = Bind1;
-  };
-  var ap = function (dictMonad) {
-      return function (f) {
-          return function (a) {
-              return Control_Bind.bind(dictMonad.Bind1())(f)(function (v) {
-                  return Control_Bind.bind(dictMonad.Bind1())(a)(function (v1) {
-                      return Control_Applicative.pure(dictMonad.Applicative0())(v(v1));
-                  });
-              });
-          };
-      };
-  };
-  exports["Monad"] = Monad;
-  exports["ap"] = ap;
-})(PS["Control.Monad"] = PS["Control.Monad"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.2
-  "use strict";
-  var Control_Alt = PS["Control.Alt"];
-  var Data_Functor = PS["Data.Functor"];                 
-  var Plus = function (Alt0, empty) {
-      this.Alt0 = Alt0;
-      this.empty = empty;
-  };       
-  var empty = function (dict) {
-      return dict.empty;
-  };
-  exports["Plus"] = Plus;
-  exports["empty"] = empty;
-})(PS["Control.Plus"] = PS["Control.Plus"] || {});
-(function(exports) {
-    "use strict";
-
-  exports.topInt = 2147483647;
-  exports.bottomInt = -2147483648;
-
-  exports.topChar = String.fromCharCode(65535);
-  exports.bottomChar = String.fromCharCode(0);
-})(PS["Data.Bounded"] = PS["Data.Bounded"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.2
-  "use strict";
-  var $foreign = PS["Data.Bounded"];
-  var Data_Ord = PS["Data.Ord"];
-  var Data_Ordering = PS["Data.Ordering"];
-  var Data_Unit = PS["Data.Unit"];                 
-  var Bounded = function (Ord0, bottom, top) {
-      this.Ord0 = Ord0;
-      this.bottom = bottom;
-      this.top = top;
-  };
-  var top = function (dict) {
-      return dict.top;
-  };                                            
-  var boundedInt = new Bounded(function () {
-      return Data_Ord.ordInt;
-  }, $foreign.bottomInt, $foreign.topInt);
-  var boundedChar = new Bounded(function () {
-      return Data_Ord.ordChar;
-  }, $foreign.bottomChar, $foreign.topChar);
-  var bottom = function (dict) {
-      return dict.bottom;
-  };
-  exports["Bounded"] = Bounded;
-  exports["bottom"] = bottom;
-  exports["top"] = top;
-  exports["boundedInt"] = boundedInt;
-  exports["boundedChar"] = boundedChar;
-})(PS["Data.Bounded"] = PS["Data.Bounded"] || {});
-(function(exports) {
-    "use strict";
-
-  exports.intDegree = function (x) {
-    return Math.min(Math.abs(x), 2147483647);
-  };
-
-  // See the Euclidean definition in
-  // https://en.m.wikipedia.org/wiki/Modulo_operation.
-  exports.intDiv = function (x) {
-    return function (y) {
-      if (y === 0) return 0;
-      return y > 0 ? Math.floor(x / y) : -Math.floor(x / -y);
-    };
-  };
-
-  exports.intMod = function (x) {
-    return function (y) {
-      if (y === 0) return 0;
-      var yy = Math.abs(y);
-      return ((x % yy) + yy) % yy;
-    };
-  };
-})(PS["Data.EuclideanRing"] = PS["Data.EuclideanRing"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.2
-  "use strict";
-  var Data_Ring = PS["Data.Ring"];
-  var Data_Semiring = PS["Data.Semiring"];
-  var Data_Symbol = PS["Data.Symbol"];
-  var Data_Unit = PS["Data.Unit"];                 
-  var CommutativeRing = function (Ring0) {
-      this.Ring0 = Ring0;
-  }; 
-  var commutativeRingInt = new CommutativeRing(function () {
-      return Data_Ring.ringInt;
-  });
-  exports["CommutativeRing"] = CommutativeRing;
-  exports["commutativeRingInt"] = commutativeRingInt;
-})(PS["Data.CommutativeRing"] = PS["Data.CommutativeRing"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.2
-  "use strict";
-  var $foreign = PS["Data.EuclideanRing"];
-  var Data_BooleanAlgebra = PS["Data.BooleanAlgebra"];
-  var Data_CommutativeRing = PS["Data.CommutativeRing"];
-  var Data_Eq = PS["Data.Eq"];
-  var Data_HeytingAlgebra = PS["Data.HeytingAlgebra"];
-  var Data_Ring = PS["Data.Ring"];
-  var Data_Semiring = PS["Data.Semiring"];                 
-  var EuclideanRing = function (CommutativeRing0, degree, div, mod) {
-      this.CommutativeRing0 = CommutativeRing0;
-      this.degree = degree;
-      this.div = div;
-      this.mod = mod;
-  };
-  var mod = function (dict) {
-      return dict.mod;
-  }; 
-  var euclideanRingInt = new EuclideanRing(function () {
-      return Data_CommutativeRing.commutativeRingInt;
-  }, $foreign.intDegree, $foreign.intDiv, $foreign.intMod);
-  var div = function (dict) {
-      return dict.div;
-  };
-  var degree = function (dict) {
-      return dict.degree;
-  };
-  exports["EuclideanRing"] = EuclideanRing;
-  exports["degree"] = degree;
-  exports["div"] = div;
-  exports["mod"] = mod;
-  exports["euclideanRingInt"] = euclideanRingInt;
-})(PS["Data.EuclideanRing"] = PS["Data.EuclideanRing"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.2
-  "use strict";
-  var Data_Boolean = PS["Data.Boolean"];
-  var Data_Eq = PS["Data.Eq"];
-  var Data_EuclideanRing = PS["Data.EuclideanRing"];
-  var Data_Ord = PS["Data.Ord"];
-  var Data_Ordering = PS["Data.Ordering"];
-  var Data_Semigroup = PS["Data.Semigroup"];
-  var Data_Symbol = PS["Data.Symbol"];
-  var Data_Unit = PS["Data.Unit"];
-  var Record_Unsafe = PS["Record.Unsafe"];
-  var Type_Data_RowList = PS["Type.Data.RowList"];                 
-  var Monoid = function (Semigroup0, mempty) {
-      this.Semigroup0 = Semigroup0;
-      this.mempty = mempty;
-  };                 
-  var monoidString = new Monoid(function () {
-      return Data_Semigroup.semigroupString;
-  }, "");                    
-  var monoidArray = new Monoid(function () {
-      return Data_Semigroup.semigroupArray;
-  }, [  ]);
-  var mempty = function (dict) {
-      return dict.mempty;
-  };
-  var monoidFn = function (dictMonoid) {
-      return new Monoid(function () {
-          return Data_Semigroup.semigroupFn(dictMonoid.Semigroup0());
-      }, function (v) {
-          return mempty(dictMonoid);
-      });
-  };
-  var guard = function (dictMonoid) {
-      return function (v) {
-          return function (v1) {
-              if (v) {
-                  return v1;
-              };
-              if (!v) {
-                  return mempty(dictMonoid);
-              };
-              throw new Error("Failed pattern match at Data.Monoid (line 74, column 1 - line 74, column 49): " + [ v.constructor.name, v1.constructor.name ]);
-          };
-      };
-  };
-  exports["Monoid"] = Monoid;
-  exports["mempty"] = mempty;
-  exports["guard"] = guard;
-  exports["monoidFn"] = monoidFn;
-  exports["monoidString"] = monoidString;
-  exports["monoidArray"] = monoidArray;
-})(PS["Data.Monoid"] = PS["Data.Monoid"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.2
-  "use strict";
-  var Control_Alt = PS["Control.Alt"];
-  var Control_Alternative = PS["Control.Alternative"];
-  var Control_Applicative = PS["Control.Applicative"];
-  var Control_Apply = PS["Control.Apply"];
-  var Control_Bind = PS["Control.Bind"];
-  var Control_Category = PS["Control.Category"];
-  var Control_Extend = PS["Control.Extend"];
-  var Control_Monad = PS["Control.Monad"];
-  var Control_MonadZero = PS["Control.MonadZero"];
-  var Control_Plus = PS["Control.Plus"];
-  var Data_Bounded = PS["Data.Bounded"];
-  var Data_Eq = PS["Data.Eq"];
-  var Data_Function = PS["Data.Function"];
-  var Data_Functor = PS["Data.Functor"];
-  var Data_Functor_Invariant = PS["Data.Functor.Invariant"];
-  var Data_Monoid = PS["Data.Monoid"];
-  var Data_Ord = PS["Data.Ord"];
-  var Data_Ordering = PS["Data.Ordering"];
-  var Data_Semigroup = PS["Data.Semigroup"];
-  var Data_Show = PS["Data.Show"];
-  var Data_Unit = PS["Data.Unit"];
-  var Prelude = PS["Prelude"];                 
-  var Nothing = (function () {
-      function Nothing() {
-
-      };
-      Nothing.value = new Nothing();
-      return Nothing;
-  })();
-  var Just = (function () {
-      function Just(value0) {
-          this.value0 = value0;
-      };
-      Just.create = function (value0) {
-          return new Just(value0);
-      };
-      return Just;
-  })();
-  var maybe = function (v) {
-      return function (v1) {
-          return function (v2) {
-              if (v2 instanceof Nothing) {
-                  return v;
-              };
-              if (v2 instanceof Just) {
-                  return v1(v2.value0);
-              };
-              throw new Error("Failed pattern match at Data.Maybe (line 217, column 1 - line 217, column 51): " + [ v.constructor.name, v1.constructor.name, v2.constructor.name ]);
-          };
-      };
-  };
-  var isNothing = maybe(true)(Data_Function["const"](false));
-  var isJust = maybe(false)(Data_Function["const"](true));
-  var functorMaybe = new Data_Functor.Functor(function (v) {
-      return function (v1) {
-          if (v1 instanceof Just) {
-              return new Just(v(v1.value0));
-          };
-          return Nothing.value;
-      };
-  });
-  var fromMaybe = function (a) {
-      return maybe(a)(Control_Category.identity(Control_Category.categoryFn));
-  };
-  var fromJust = function (dictPartial) {
-      return function (v) {
-          if (v instanceof Just) {
-              return v.value0;
-          };
-          throw new Error("Failed pattern match at Data.Maybe (line 268, column 1 - line 268, column 46): " + [ v.constructor.name ]);
-      };
-  };
-  var applyMaybe = new Control_Apply.Apply(function () {
-      return functorMaybe;
-  }, function (v) {
-      return function (v1) {
-          if (v instanceof Just) {
-              return Data_Functor.map(functorMaybe)(v.value0)(v1);
-          };
-          if (v instanceof Nothing) {
-              return Nothing.value;
-          };
-          throw new Error("Failed pattern match at Data.Maybe (line 67, column 1 - line 67, column 35): " + [ v.constructor.name, v1.constructor.name ]);
-      };
-  });
-  var bindMaybe = new Control_Bind.Bind(function () {
-      return applyMaybe;
-  }, function (v) {
-      return function (v1) {
-          if (v instanceof Just) {
-              return v1(v.value0);
-          };
-          if (v instanceof Nothing) {
-              return Nothing.value;
-          };
-          throw new Error("Failed pattern match at Data.Maybe (line 125, column 1 - line 125, column 33): " + [ v.constructor.name, v1.constructor.name ]);
-      };
-  });
-  exports["Nothing"] = Nothing;
-  exports["Just"] = Just;
-  exports["maybe"] = maybe;
-  exports["fromMaybe"] = fromMaybe;
-  exports["isJust"] = isJust;
-  exports["isNothing"] = isNothing;
-  exports["fromJust"] = fromJust;
-  exports["functorMaybe"] = functorMaybe;
-  exports["applyMaybe"] = applyMaybe;
-  exports["bindMaybe"] = bindMaybe;
-})(PS["Data.Maybe"] = PS["Data.Maybe"] || {});
-(function(exports) {
-    "use strict";
-
-  exports.empty = {};
-
-  exports._lookup = function (no, yes, k, m) {
-    return k in m ? yes(m[k]) : no;
-  };
-
-  function toArrayWithKey(f) {
-    return function (m) {
-      var r = [];
-      for (var k in m) {
-        if (hasOwnProperty.call(m, k)) {
-          r.push(f(k)(m[k]));
-        }
-      }
-      return r;
-    };
-  }
-})(PS["Foreign.Object"] = PS["Foreign.Object"] || {});
-(function(exports) {
-    "use strict";
-
-  //------------------------------------------------------------------------------
-  // Array size ------------------------------------------------------------------
-  //------------------------------------------------------------------------------
-
-  exports.length = function (xs) {
-    return xs.length;
-  };
-
-  //------------------------------------------------------------------------------
-  // Extending arrays ------------------------------------------------------------
-  //------------------------------------------------------------------------------
-
-  exports.cons = function (e) {
-    return function (l) {
-      return [e].concat(l);
-    };
-  };
-
-  exports.snoc = function (l) {
-    return function (e) {
-      var l1 = l.slice();
-      l1.push(e);
-      return l1;
-    };
-  };
-
-  exports.concat = function (xss) {
-    if (xss.length <= 10000) {
-      // This method is faster, but it crashes on big arrays.
-      // So we use it when can and fallback to simple variant otherwise.
-      return Array.prototype.concat.apply([], xss);
-    }
-
-    var result = [];
-    for (var i = 0, l = xss.length; i < l; i++) {
-      var xs = xss[i];
-      for (var j = 0, m = xs.length; j < m; j++) {
-        result.push(xs[j]);
-      }
-    }
-    return result;
-  };
-
-  exports.filter = function (f) {
-    return function (xs) {
-      return xs.filter(f);
-    };
-  };
-
-  //------------------------------------------------------------------------------
-  // Subarrays -------------------------------------------------------------------
-  //------------------------------------------------------------------------------
-
-  exports.slice = function (s) {
-    return function (e) {
-      return function (l) {
-        return l.slice(s, e);
-      };
-    };
-  };
-
-  exports.drop = function (n) {
-    return function (l) {
-      return n < 1 ? l : l.slice(n);
-    };
-  };
-})(PS["Data.Array"] = PS["Data.Array"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.2
-  "use strict";
-  var Control_Category = PS["Control.Category"];                 
-  var Bifunctor = function (bimap) {
-      this.bimap = bimap;
-  };
-  var bimap = function (dict) {
-      return dict.bimap;
-  };
-  var rmap = function (dictBifunctor) {
-      return bimap(dictBifunctor)(Control_Category.identity(Control_Category.categoryFn));
-  };
-  exports["bimap"] = bimap;
-  exports["Bifunctor"] = Bifunctor;
-  exports["rmap"] = rmap;
-})(PS["Data.Bifunctor"] = PS["Data.Bifunctor"] || {});
-(function(exports) {
-    "use strict";
-
-  exports.foldrArray = function (f) {
-    return function (init) {
-      return function (xs) {
-        var acc = init;
-        var len = xs.length;
-        for (var i = len - 1; i >= 0; i--) {
-          acc = f(xs[i])(acc);
-        }
-        return acc;
-      };
-    };
-  };
-
-  exports.foldlArray = function (f) {
-    return function (init) {
-      return function (xs) {
-        var acc = init;
-        var len = xs.length;
-        for (var i = 0; i < len; i++) {
-          acc = f(acc)(xs[i]);
-        }
-        return acc;
-      };
-    };
-  };
-})(PS["Data.Foldable"] = PS["Data.Foldable"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.2
-  "use strict";
-  var Control_Applicative = PS["Control.Applicative"];
-  var Control_Apply = PS["Control.Apply"];
-  var Control_Bind = PS["Control.Bind"];
-  var Control_Monad = PS["Control.Monad"];
-  var Data_Bounded = PS["Data.Bounded"];
-  var Data_Eq = PS["Data.Eq"];
-  var Data_Functor = PS["Data.Functor"];
-  var Data_HeytingAlgebra = PS["Data.HeytingAlgebra"];
-  var Data_Monoid = PS["Data.Monoid"];
-  var Data_Ord = PS["Data.Ord"];
-  var Data_Semigroup = PS["Data.Semigroup"];
-  var Data_Semiring = PS["Data.Semiring"];
-  var Data_Show = PS["Data.Show"];
-  var Prelude = PS["Prelude"];                 
-  var Disj = function (x) {
-      return x;
-  };
-  var semigroupDisj = function (dictHeytingAlgebra) {
-      return new Data_Semigroup.Semigroup(function (v) {
-          return function (v1) {
-              return Data_HeytingAlgebra.disj(dictHeytingAlgebra)(v)(v1);
-          };
-      });
-  };
-  var monoidDisj = function (dictHeytingAlgebra) {
-      return new Data_Monoid.Monoid(function () {
-          return semigroupDisj(dictHeytingAlgebra);
-      }, Data_HeytingAlgebra.ff(dictHeytingAlgebra));
-  };
-  exports["Disj"] = Disj;
-  exports["semigroupDisj"] = semigroupDisj;
-  exports["monoidDisj"] = monoidDisj;
-})(PS["Data.Monoid.Disj"] = PS["Data.Monoid.Disj"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.2
-  "use strict";
-  var Control_Semigroupoid = PS["Control.Semigroupoid"];
-  var Data_Function = PS["Data.Function"];
-  var Data_Functor = PS["Data.Functor"];
-  var Data_Monoid_Additive = PS["Data.Monoid.Additive"];
-  var Data_Monoid_Conj = PS["Data.Monoid.Conj"];
-  var Data_Monoid_Disj = PS["Data.Monoid.Disj"];
-  var Data_Monoid_Dual = PS["Data.Monoid.Dual"];
-  var Data_Monoid_Endo = PS["Data.Monoid.Endo"];
-  var Data_Monoid_Multiplicative = PS["Data.Monoid.Multiplicative"];
-  var Data_Semigroup_First = PS["Data.Semigroup.First"];
-  var Data_Semigroup_Last = PS["Data.Semigroup.Last"];
-  var Prelude = PS["Prelude"];                 
-  var Newtype = function (unwrap, wrap) {
-      this.unwrap = unwrap;
-      this.wrap = wrap;
-  };
-  var wrap = function (dict) {
-      return dict.wrap;
-  };
-  var unwrap = function (dict) {
-      return dict.unwrap;
-  };                        
-  var newtypeDisj = new Newtype(function (v) {
-      return v;
-  }, Data_Monoid_Disj.Disj);
-  var alaF = function (dictFunctor) {
-      return function (dictFunctor1) {
-          return function (dictNewtype) {
-              return function (dictNewtype1) {
-                  return function (v) {
-                      return function (f) {
-                          return function ($80) {
-                              return Data_Functor.map(dictFunctor1)(unwrap(dictNewtype1))(f(Data_Functor.map(dictFunctor)(wrap(dictNewtype))($80)));
-                          };
-                      };
-                  };
-              };
-          };
-      };
-  };
-  exports["unwrap"] = unwrap;
-  exports["wrap"] = wrap;
-  exports["Newtype"] = Newtype;
-  exports["alaF"] = alaF;
-  exports["newtypeDisj"] = newtypeDisj;
-})(PS["Data.Newtype"] = PS["Data.Newtype"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.2
-  "use strict";
-  var $foreign = PS["Data.Foldable"];
-  var Control_Alt = PS["Control.Alt"];
-  var Control_Applicative = PS["Control.Applicative"];
-  var Control_Apply = PS["Control.Apply"];
-  var Control_Bind = PS["Control.Bind"];
-  var Control_Category = PS["Control.Category"];
-  var Control_Plus = PS["Control.Plus"];
-  var Control_Semigroupoid = PS["Control.Semigroupoid"];
-  var Data_Eq = PS["Data.Eq"];
-  var Data_Function = PS["Data.Function"];
-  var Data_Functor = PS["Data.Functor"];
-  var Data_HeytingAlgebra = PS["Data.HeytingAlgebra"];
-  var Data_Maybe = PS["Data.Maybe"];
-  var Data_Maybe_First = PS["Data.Maybe.First"];
-  var Data_Maybe_Last = PS["Data.Maybe.Last"];
-  var Data_Monoid = PS["Data.Monoid"];
-  var Data_Monoid_Additive = PS["Data.Monoid.Additive"];
-  var Data_Monoid_Conj = PS["Data.Monoid.Conj"];
-  var Data_Monoid_Disj = PS["Data.Monoid.Disj"];
-  var Data_Monoid_Dual = PS["Data.Monoid.Dual"];
-  var Data_Monoid_Endo = PS["Data.Monoid.Endo"];
-  var Data_Monoid_Multiplicative = PS["Data.Monoid.Multiplicative"];
-  var Data_Newtype = PS["Data.Newtype"];
-  var Data_Ord = PS["Data.Ord"];
-  var Data_Ordering = PS["Data.Ordering"];
-  var Data_Semigroup = PS["Data.Semigroup"];
-  var Data_Semiring = PS["Data.Semiring"];
-  var Data_Unit = PS["Data.Unit"];
-  var Prelude = PS["Prelude"];                 
-  var Foldable = function (foldMap, foldl, foldr) {
-      this.foldMap = foldMap;
-      this.foldl = foldl;
-      this.foldr = foldr;
-  };
-  var foldr = function (dict) {
-      return dict.foldr;
-  };
-  var traverse_ = function (dictApplicative) {
-      return function (dictFoldable) {
-          return function (f) {
-              return foldr(dictFoldable)(function ($195) {
-                  return Control_Apply.applySecond(dictApplicative.Apply0())(f($195));
-              })(Control_Applicative.pure(dictApplicative)(Data_Unit.unit));
-          };
-      };
-  };
-  var for_ = function (dictApplicative) {
-      return function (dictFoldable) {
-          return Data_Function.flip(traverse_(dictApplicative)(dictFoldable));
-      };
-  };
-  var sequence_ = function (dictApplicative) {
-      return function (dictFoldable) {
-          return traverse_(dictApplicative)(dictFoldable)(Control_Category.identity(Control_Category.categoryFn));
-      };
-  };
-  var foldl = function (dict) {
-      return dict.foldl;
-  }; 
-  var foldableMaybe = new Foldable(function (dictMonoid) {
-      return function (f) {
-          return function (v) {
-              if (v instanceof Data_Maybe.Nothing) {
-                  return Data_Monoid.mempty(dictMonoid);
-              };
-              if (v instanceof Data_Maybe.Just) {
-                  return f(v.value0);
-              };
-              throw new Error("Failed pattern match at Data.Foldable (line 129, column 1 - line 129, column 41): " + [ f.constructor.name, v.constructor.name ]);
-          };
-      };
-  }, function (v) {
-      return function (z) {
-          return function (v1) {
-              if (v1 instanceof Data_Maybe.Nothing) {
-                  return z;
-              };
-              if (v1 instanceof Data_Maybe.Just) {
-                  return v(z)(v1.value0);
-              };
-              throw new Error("Failed pattern match at Data.Foldable (line 129, column 1 - line 129, column 41): " + [ v.constructor.name, z.constructor.name, v1.constructor.name ]);
-          };
-      };
-  }, function (v) {
-      return function (z) {
-          return function (v1) {
-              if (v1 instanceof Data_Maybe.Nothing) {
-                  return z;
-              };
-              if (v1 instanceof Data_Maybe.Just) {
-                  return v(v1.value0)(z);
-              };
-              throw new Error("Failed pattern match at Data.Foldable (line 129, column 1 - line 129, column 41): " + [ v.constructor.name, z.constructor.name, v1.constructor.name ]);
-          };
-      };
-  });
-  var foldMapDefaultR = function (dictFoldable) {
-      return function (dictMonoid) {
-          return function (f) {
-              return foldr(dictFoldable)(function (x) {
-                  return function (acc) {
-                      return Data_Semigroup.append(dictMonoid.Semigroup0())(f(x))(acc);
-                  };
-              })(Data_Monoid.mempty(dictMonoid));
-          };
-      };
-  };
-  var foldableArray = new Foldable(function (dictMonoid) {
-      return foldMapDefaultR(foldableArray)(dictMonoid);
-  }, $foreign.foldlArray, $foreign.foldrArray);
-  var foldMap = function (dict) {
-      return dict.foldMap;
-  };
-  var find = function (dictFoldable) {
-      return function (p) {
-          var go = function (v) {
-              return function (v1) {
-                  if (v instanceof Data_Maybe.Nothing && p(v1)) {
-                      return new Data_Maybe.Just(v1);
-                  };
-                  return v;
-              };
-          };
-          return foldl(dictFoldable)(go)(Data_Maybe.Nothing.value);
-      };
-  };
-  var any = function (dictFoldable) {
-      return function (dictHeytingAlgebra) {
-          return Data_Newtype.alaF(Data_Functor.functorFn)(Data_Functor.functorFn)(Data_Newtype.newtypeDisj)(Data_Newtype.newtypeDisj)(Data_Monoid_Disj.Disj)(foldMap(dictFoldable)(Data_Monoid_Disj.monoidDisj(dictHeytingAlgebra)));
-      };
-  };
-  exports["Foldable"] = Foldable;
-  exports["foldr"] = foldr;
-  exports["foldl"] = foldl;
-  exports["foldMap"] = foldMap;
-  exports["foldMapDefaultR"] = foldMapDefaultR;
-  exports["traverse_"] = traverse_;
-  exports["for_"] = for_;
-  exports["sequence_"] = sequence_;
-  exports["any"] = any;
-  exports["find"] = find;
-  exports["foldableArray"] = foldableArray;
-  exports["foldableMaybe"] = foldableMaybe;
-})(PS["Data.Foldable"] = PS["Data.Foldable"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.2
-  "use strict";
-  var Control_Alt = PS["Control.Alt"];
-  var Control_Applicative = PS["Control.Applicative"];
-  var Control_Apply = PS["Control.Apply"];
-  var Control_Bind = PS["Control.Bind"];
-  var Control_Extend = PS["Control.Extend"];
-  var Control_Monad = PS["Control.Monad"];
-  var Control_Semigroupoid = PS["Control.Semigroupoid"];
-  var Data_Bifoldable = PS["Data.Bifoldable"];
-  var Data_Bifunctor = PS["Data.Bifunctor"];
-  var Data_Bitraversable = PS["Data.Bitraversable"];
-  var Data_Bounded = PS["Data.Bounded"];
-  var Data_Eq = PS["Data.Eq"];
-  var Data_Foldable = PS["Data.Foldable"];
-  var Data_FoldableWithIndex = PS["Data.FoldableWithIndex"];
-  var Data_Function = PS["Data.Function"];
-  var Data_Functor = PS["Data.Functor"];
-  var Data_Functor_Invariant = PS["Data.Functor.Invariant"];
-  var Data_FunctorWithIndex = PS["Data.FunctorWithIndex"];
-  var Data_Maybe = PS["Data.Maybe"];
-  var Data_Monoid = PS["Data.Monoid"];
-  var Data_Ord = PS["Data.Ord"];
-  var Data_Ordering = PS["Data.Ordering"];
-  var Data_Semigroup = PS["Data.Semigroup"];
-  var Data_Show = PS["Data.Show"];
-  var Data_Traversable = PS["Data.Traversable"];
-  var Data_TraversableWithIndex = PS["Data.TraversableWithIndex"];
-  var Data_Unit = PS["Data.Unit"];
-  var Prelude = PS["Prelude"];                 
-  var Left = (function () {
-      function Left(value0) {
-          this.value0 = value0;
-      };
-      Left.create = function (value0) {
-          return new Left(value0);
-      };
-      return Left;
-  })();
-  var Right = (function () {
-      function Right(value0) {
-          this.value0 = value0;
-      };
-      Right.create = function (value0) {
-          return new Right(value0);
-      };
-      return Right;
-  })();
-  var functorEither = new Data_Functor.Functor(function (f) {
-      return function (m) {
-          if (m instanceof Left) {
-              return new Left(m.value0);
-          };
-          if (m instanceof Right) {
-              return new Right(f(m.value0));
-          };
-          throw new Error("Failed pattern match at Data.Either (line 38, column 8 - line 38, column 52): " + [ m.constructor.name ]);
-      };
-  });
-  var either = function (v) {
-      return function (v1) {
-          return function (v2) {
-              if (v2 instanceof Left) {
-                  return v(v2.value0);
-              };
-              if (v2 instanceof Right) {
-                  return v1(v2.value0);
-              };
-              throw new Error("Failed pattern match at Data.Either (line 238, column 1 - line 238, column 64): " + [ v.constructor.name, v1.constructor.name, v2.constructor.name ]);
-          };
-      };
-  };
-  var bifunctorEither = new Data_Bifunctor.Bifunctor(function (v) {
-      return function (v1) {
-          return function (v2) {
-              if (v2 instanceof Left) {
-                  return new Left(v(v2.value0));
-              };
-              if (v2 instanceof Right) {
-                  return new Right(v1(v2.value0));
-              };
-              throw new Error("Failed pattern match at Data.Either (line 46, column 1 - line 46, column 45): " + [ v.constructor.name, v1.constructor.name, v2.constructor.name ]);
-          };
-      };
-  });
-  var applyEither = new Control_Apply.Apply(function () {
-      return functorEither;
-  }, function (v) {
-      return function (v1) {
-          if (v instanceof Left) {
-              return new Left(v.value0);
-          };
-          if (v instanceof Right) {
-              return Data_Functor.map(functorEither)(v.value0)(v1);
-          };
-          throw new Error("Failed pattern match at Data.Either (line 82, column 1 - line 82, column 41): " + [ v.constructor.name, v1.constructor.name ]);
-      };
-  });
-  exports["Left"] = Left;
-  exports["Right"] = Right;
-  exports["either"] = either;
-  exports["functorEither"] = functorEither;
-  exports["bifunctorEither"] = bifunctorEither;
-  exports["applyEither"] = applyEither;
-})(PS["Data.Either"] = PS["Data.Either"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.2
-  "use strict";
-  var Control_Alt = PS["Control.Alt"];
-  var Control_Applicative = PS["Control.Applicative"];
-  var Control_Apply = PS["Control.Apply"];
-  var Control_Bind = PS["Control.Bind"];
-  var Control_Comonad = PS["Control.Comonad"];
-  var Control_Extend = PS["Control.Extend"];
-  var Control_Lazy = PS["Control.Lazy"];
-  var Control_Monad = PS["Control.Monad"];
-  var Data_BooleanAlgebra = PS["Data.BooleanAlgebra"];
-  var Data_Bounded = PS["Data.Bounded"];
-  var Data_CommutativeRing = PS["Data.CommutativeRing"];
-  var Data_Eq = PS["Data.Eq"];
-  var Data_EuclideanRing = PS["Data.EuclideanRing"];
-  var Data_Foldable = PS["Data.Foldable"];
-  var Data_FoldableWithIndex = PS["Data.FoldableWithIndex"];
-  var Data_Functor = PS["Data.Functor"];
-  var Data_Functor_Invariant = PS["Data.Functor.Invariant"];
-  var Data_FunctorWithIndex = PS["Data.FunctorWithIndex"];
-  var Data_HeytingAlgebra = PS["Data.HeytingAlgebra"];
-  var Data_Monoid = PS["Data.Monoid"];
-  var Data_Newtype = PS["Data.Newtype"];
-  var Data_Ord = PS["Data.Ord"];
-  var Data_Ring = PS["Data.Ring"];
-  var Data_Semigroup = PS["Data.Semigroup"];
-  var Data_Semigroup_Foldable = PS["Data.Semigroup.Foldable"];
-  var Data_Semigroup_Traversable = PS["Data.Semigroup.Traversable"];
-  var Data_Semiring = PS["Data.Semiring"];
-  var Data_Show = PS["Data.Show"];
-  var Data_Traversable = PS["Data.Traversable"];
-  var Data_TraversableWithIndex = PS["Data.TraversableWithIndex"];
-  var Data_Unit = PS["Data.Unit"];
-  var Prelude = PS["Prelude"];                 
-  var Identity = function (x) {
-      return x;
-  };
-  var newtypeIdentity = new Data_Newtype.Newtype(function (n) {
-      return n;
-  }, Identity);
-  var functorIdentity = new Data_Functor.Functor(function (f) {
-      return function (m) {
-          return f(m);
-      };
-  });
-  var applyIdentity = new Control_Apply.Apply(function () {
-      return functorIdentity;
-  }, function (v) {
-      return function (v1) {
-          return v(v1);
-      };
-  });
-  var bindIdentity = new Control_Bind.Bind(function () {
-      return applyIdentity;
-  }, function (v) {
-      return function (f) {
-          return f(v);
-      };
-  });
-  var applicativeIdentity = new Control_Applicative.Applicative(function () {
-      return applyIdentity;
-  }, Identity);
-  var monadIdentity = new Control_Monad.Monad(function () {
-      return applicativeIdentity;
-  }, function () {
-      return bindIdentity;
-  });
-  exports["Identity"] = Identity;
-  exports["newtypeIdentity"] = newtypeIdentity;
-  exports["functorIdentity"] = functorIdentity;
-  exports["applyIdentity"] = applyIdentity;
-  exports["applicativeIdentity"] = applicativeIdentity;
-  exports["bindIdentity"] = bindIdentity;
-  exports["monadIdentity"] = monadIdentity;
-})(PS["Data.Identity"] = PS["Data.Identity"] || {});
-(function(exports) {
-    "use strict";
-
-  exports.pureE = function (a) {
-    return function () {
-      return a;
-    };
-  };
-
-  exports.bindE = function (a) {
-    return function (f) {
-      return function () {
-        return f(a())();
-      };
-    };
-  };
-
-  exports.foreachE = function (as) {
-    return function (f) {
-      return function () {
-        for (var i = 0, l = as.length; i < l; i++) {
-          f(as[i])();
-        }
-      };
-    };
-  };
-})(PS["Effect"] = PS["Effect"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.2
-  "use strict";
-  var $foreign = PS["Effect"];
-  var Control_Applicative = PS["Control.Applicative"];
-  var Control_Apply = PS["Control.Apply"];
-  var Control_Bind = PS["Control.Bind"];
-  var Control_Monad = PS["Control.Monad"];
-  var Data_Functor = PS["Data.Functor"];
-  var Data_Monoid = PS["Data.Monoid"];
-  var Data_Semigroup = PS["Data.Semigroup"];
-  var Prelude = PS["Prelude"];                 
-  var monadEffect = new Control_Monad.Monad(function () {
-      return applicativeEffect;
-  }, function () {
-      return bindEffect;
-  });
-  var bindEffect = new Control_Bind.Bind(function () {
-      return applyEffect;
-  }, $foreign.bindE);
-  var applyEffect = new Control_Apply.Apply(function () {
-      return functorEffect;
-  }, Control_Monad.ap(monadEffect));
-  var applicativeEffect = new Control_Applicative.Applicative(function () {
-      return applyEffect;
-  }, $foreign.pureE);
-  var functorEffect = new Data_Functor.Functor(Control_Applicative.liftA1(applicativeEffect));
-  exports["functorEffect"] = functorEffect;
-  exports["applyEffect"] = applyEffect;
-  exports["applicativeEffect"] = applicativeEffect;
-  exports["bindEffect"] = bindEffect;
-  exports["monadEffect"] = monadEffect;
-  exports["foreachE"] = $foreign.foreachE;
-})(PS["Effect"] = PS["Effect"] || {});
-(function(exports) {
-    "use strict";
-
-  exports.new = function (val) {
-    return function () {
-      return { value: val };
-    };
-  };
-
-  exports.read = function (ref) {
-    return function () {
-      return ref.value;
-    };
-  };
-
-  exports["modify'"] = function (f) {
-    return function (ref) {
-      return function () {
-        var t = f(ref.value);
-        ref.value = t.state;
-        return t.value;
-      };
-    };
-  };
-
-  exports.write = function (val) {
-    return function (ref) {
-      return function () {
-        ref.value = val;
-        return {};
-      };
-    };
-  };
-})(PS["Effect.Ref"] = PS["Effect.Ref"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.2
-  "use strict";
-  var $foreign = PS["Effect.Ref"];
-  var Data_Function = PS["Data.Function"];
-  var Data_Functor = PS["Data.Functor"];
-  var Effect = PS["Effect"];
-  var Prelude = PS["Prelude"];                 
-  var modify = function (f) {
-      return $foreign["modify'"](function (s) {
-          var s$prime = f(s);
-          return {
-              state: s$prime,
-              value: s$prime
-          };
-      });
-  };
-  var modify_ = function (f) {
-      return function (s) {
-          return Data_Functor["void"](Effect.functorEffect)(modify(f)(s));
-      };
-  };
-  exports["modify"] = modify;
-  exports["modify_"] = modify_;
-  exports["new"] = $foreign["new"];
-  exports["read"] = $foreign.read;
-  exports["modify'"] = $foreign["modify'"];
-  exports["write"] = $foreign.write;
-})(PS["Effect.Ref"] = PS["Effect.Ref"] || {});
-(function(exports) {
-    "use strict";
-
-  // module Partial.Unsafe
-
-  exports.unsafePartial = function (f) {
-    return f();
-  };
-})(PS["Partial.Unsafe"] = PS["Partial.Unsafe"] || {});
-(function(exports) {
-    "use strict";
-
-  // module Partial
-
-  exports.crashWith = function () {
-    return function (msg) {
-      throw new Error(msg);
-    };
-  };
-})(PS["Partial"] = PS["Partial"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.2
-  "use strict";
-  var $foreign = PS["Partial"];
-  exports["crashWith"] = $foreign.crashWith;
-})(PS["Partial"] = PS["Partial"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.2
-  "use strict";
-  var $foreign = PS["Partial.Unsafe"];
-  var Partial = PS["Partial"];
-  var unsafeCrashWith = function (msg) {
-      return $foreign.unsafePartial(function (dictPartial) {
-          return Partial.crashWith(dictPartial)(msg);
-      });
-  };
-  exports["unsafeCrashWith"] = unsafeCrashWith;
-})(PS["Partial.Unsafe"] = PS["Partial.Unsafe"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.2
-  "use strict";
-  var Control_Applicative = PS["Control.Applicative"];
-  var Control_Bind = PS["Control.Bind"];
-  var Control_Monad = PS["Control.Monad"];
-  var Control_Semigroupoid = PS["Control.Semigroupoid"];
-  var Data_Bifunctor = PS["Data.Bifunctor"];
-  var Data_Either = PS["Data.Either"];
-  var Data_Functor = PS["Data.Functor"];
-  var Data_Identity = PS["Data.Identity"];
-  var Data_Maybe = PS["Data.Maybe"];
-  var Data_Unit = PS["Data.Unit"];
-  var Effect = PS["Effect"];
-  var Effect_Ref = PS["Effect.Ref"];
-  var Partial_Unsafe = PS["Partial.Unsafe"];
-  var Prelude = PS["Prelude"];                 
-  var Loop = (function () {
-      function Loop(value0) {
-          this.value0 = value0;
-      };
-      Loop.create = function (value0) {
-          return new Loop(value0);
-      };
-      return Loop;
-  })();
-  var Done = (function () {
-      function Done(value0) {
-          this.value0 = value0;
-      };
-      Done.create = function (value0) {
-          return new Done(value0);
-      };
-      return Done;
-  })();
-  var MonadRec = function (Monad0, tailRecM) {
-      this.Monad0 = Monad0;
-      this.tailRecM = tailRecM;
-  };
-  var tailRecM = function (dict) {
-      return dict.tailRecM;
-  }; 
-  var monadRecEffect = new MonadRec(function () {
-      return Effect.monadEffect;
-  }, function (f) {
-      return function (a) {
-          var fromDone = function (v) {
-              if (v instanceof Done) {
-                  return v.value0;
-              };
-              throw new Error("Failed pattern match at Control.Monad.Rec.Class (line 111, column 30 - line 111, column 44): " + [ v.constructor.name ]);
-          };
-          return function __do() {
-              var v = Control_Bind.bindFlipped(Effect.bindEffect)(Effect_Ref["new"])(f(a))();
-              (function () {
-                  while (!(function __do() {
-                      var v1 = Effect_Ref.read(v)();
-                      if (v1 instanceof Loop) {
-                          var v2 = f(v1.value0)();
-                          var v3 = Effect_Ref.write(v2)(v)();
-                          return false;
-                      };
-                      if (v1 instanceof Done) {
-                          return true;
-                      };
-                      throw new Error("Failed pattern match at Control.Monad.Rec.Class (line 102, column 22 - line 107, column 28): " + [ v1.constructor.name ]);
-                  })()) {
-
-                  };
-                  return {};
-              })();
-              return Data_Functor.map(Effect.functorEffect)(fromDone)(Effect_Ref.read(v))();
-          };
-      };
-  });
-  exports["Loop"] = Loop;
-  exports["Done"] = Done;
-  exports["MonadRec"] = MonadRec;
-  exports["tailRecM"] = tailRecM;
-  exports["monadRecEffect"] = monadRecEffect;
-})(PS["Control.Monad.Rec.Class"] = PS["Control.Monad.Rec.Class"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.2
-  "use strict";
-  var Control_Applicative = PS["Control.Applicative"];
-  var Control_Apply = PS["Control.Apply"];
-  var Control_Biapplicative = PS["Control.Biapplicative"];
-  var Control_Biapply = PS["Control.Biapply"];
-  var Control_Bind = PS["Control.Bind"];
-  var Control_Comonad = PS["Control.Comonad"];
-  var Control_Extend = PS["Control.Extend"];
-  var Control_Lazy = PS["Control.Lazy"];
-  var Control_Monad = PS["Control.Monad"];
-  var Control_Semigroupoid = PS["Control.Semigroupoid"];
-  var Data_Bifoldable = PS["Data.Bifoldable"];
-  var Data_Bifunctor = PS["Data.Bifunctor"];
-  var Data_Bitraversable = PS["Data.Bitraversable"];
-  var Data_BooleanAlgebra = PS["Data.BooleanAlgebra"];
-  var Data_Bounded = PS["Data.Bounded"];
-  var Data_CommutativeRing = PS["Data.CommutativeRing"];
-  var Data_Distributive = PS["Data.Distributive"];
-  var Data_Eq = PS["Data.Eq"];
-  var Data_Foldable = PS["Data.Foldable"];
-  var Data_FoldableWithIndex = PS["Data.FoldableWithIndex"];
-  var Data_Function = PS["Data.Function"];
-  var Data_Functor = PS["Data.Functor"];
-  var Data_Functor_Invariant = PS["Data.Functor.Invariant"];
-  var Data_FunctorWithIndex = PS["Data.FunctorWithIndex"];
-  var Data_HeytingAlgebra = PS["Data.HeytingAlgebra"];
-  var Data_Maybe = PS["Data.Maybe"];
-  var Data_Maybe_First = PS["Data.Maybe.First"];
-  var Data_Monoid = PS["Data.Monoid"];
-  var Data_Newtype = PS["Data.Newtype"];
-  var Data_Ord = PS["Data.Ord"];
-  var Data_Ordering = PS["Data.Ordering"];
-  var Data_Ring = PS["Data.Ring"];
-  var Data_Semigroup = PS["Data.Semigroup"];
-  var Data_Semigroup_Foldable = PS["Data.Semigroup.Foldable"];
-  var Data_Semigroup_Traversable = PS["Data.Semigroup.Traversable"];
-  var Data_Semiring = PS["Data.Semiring"];
-  var Data_Show = PS["Data.Show"];
-  var Data_Traversable = PS["Data.Traversable"];
-  var Data_TraversableWithIndex = PS["Data.TraversableWithIndex"];
-  var Data_Unit = PS["Data.Unit"];
-  var Prelude = PS["Prelude"];
-  var Type_Equality = PS["Type.Equality"];                 
-  var Tuple = (function () {
-      function Tuple(value0, value1) {
-          this.value0 = value0;
-          this.value1 = value1;
-      };
-      Tuple.create = function (value0) {
-          return function (value1) {
-              return new Tuple(value0, value1);
-          };
-      };
-      return Tuple;
-  })();
-  var snd = function (v) {
-      return v.value1;
-  };
-  var functorTuple = new Data_Functor.Functor(function (f) {
-      return function (m) {
-          return new Tuple(m.value0, f(m.value1));
-      };
-  });                                                                                                   
-  var fst = function (v) {
-      return v.value0;
-  };
-  exports["Tuple"] = Tuple;
-  exports["fst"] = fst;
-  exports["snd"] = snd;
-  exports["functorTuple"] = functorTuple;
-})(PS["Data.Tuple"] = PS["Data.Tuple"] || {});
-(function(exports) {
-    "use strict";
-
-  exports.unfoldrArrayImpl = function (isNothing) {
-    return function (fromJust) {
-      return function (fst) {
-        return function (snd) {
-          return function (f) {
-            return function (b) {
-              var result = [];
-              var value = b;
-              while (true) { // eslint-disable-line no-constant-condition
-                var maybe = f(value);
-                if (isNothing(maybe)) return result;
-                var tuple = fromJust(maybe);
-                result.push(fst(tuple));
-                value = snd(tuple);
-              }
-            };
-          };
-        };
-      };
-    };
-  };
-})(PS["Data.Unfoldable"] = PS["Data.Unfoldable"] || {});
-(function(exports) {
-    "use strict";
-
-  exports.unfoldr1ArrayImpl = function (isNothing) {
-    return function (fromJust) {
-      return function (fst) {
-        return function (snd) {
-          return function (f) {
-            return function (b) {
-              var result = [];
-              var value = b;
-              while (true) { // eslint-disable-line no-constant-condition
-                var tuple = f(value);
-                result.push(fst(tuple));
-                var maybe = snd(tuple);
-                if (isNothing(maybe)) return result;
-                value = fromJust(maybe);
-              }
-            };
-          };
-        };
-      };
-    };
-  };
-})(PS["Data.Unfoldable1"] = PS["Data.Unfoldable1"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.2
-  "use strict";
-  var $foreign = PS["Data.Unfoldable1"];
-  var Data_Boolean = PS["Data.Boolean"];
-  var Data_Eq = PS["Data.Eq"];
-  var Data_Maybe = PS["Data.Maybe"];
-  var Data_Ord = PS["Data.Ord"];
-  var Data_Ring = PS["Data.Ring"];
-  var Data_Semigroup_Traversable = PS["Data.Semigroup.Traversable"];
-  var Data_Semiring = PS["Data.Semiring"];
-  var Data_Tuple = PS["Data.Tuple"];
-  var Partial_Unsafe = PS["Partial.Unsafe"];
-  var Prelude = PS["Prelude"];                 
-  var Unfoldable1 = function (unfoldr1) {
-      this.unfoldr1 = unfoldr1;
-  };
-  var unfoldr1 = function (dict) {
-      return dict.unfoldr1;
-  };
-  var unfoldable1Array = new Unfoldable1($foreign.unfoldr1ArrayImpl(Data_Maybe.isNothing)(Data_Maybe.fromJust())(Data_Tuple.fst)(Data_Tuple.snd));
-  exports["Unfoldable1"] = Unfoldable1;
-  exports["unfoldr1"] = unfoldr1;
-  exports["unfoldable1Array"] = unfoldable1Array;
-})(PS["Data.Unfoldable1"] = PS["Data.Unfoldable1"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.2
-  "use strict";
-  var $foreign = PS["Data.Unfoldable"];
-  var Data_Function = PS["Data.Function"];
-  var Data_Functor = PS["Data.Functor"];
-  var Data_Maybe = PS["Data.Maybe"];
-  var Data_Ord = PS["Data.Ord"];
-  var Data_Ring = PS["Data.Ring"];
-  var Data_Traversable = PS["Data.Traversable"];
-  var Data_Tuple = PS["Data.Tuple"];
-  var Data_Unfoldable1 = PS["Data.Unfoldable1"];
-  var Data_Unit = PS["Data.Unit"];
-  var Partial_Unsafe = PS["Partial.Unsafe"];
-  var Prelude = PS["Prelude"];                 
-  var Unfoldable = function (Unfoldable10, unfoldr) {
-      this.Unfoldable10 = Unfoldable10;
-      this.unfoldr = unfoldr;
-  };
-  var unfoldr = function (dict) {
-      return dict.unfoldr;
-  };
-  var unfoldableArray = new Unfoldable(function () {
-      return Data_Unfoldable1.unfoldable1Array;
-  }, $foreign.unfoldrArrayImpl(Data_Maybe.isNothing)(Data_Maybe.fromJust())(Data_Tuple.fst)(Data_Tuple.snd));
-  exports["Unfoldable"] = Unfoldable;
-  exports["unfoldr"] = unfoldr;
-  exports["unfoldableArray"] = unfoldableArray;
-})(PS["Data.Unfoldable"] = PS["Data.Unfoldable"] || {});
-(function(exports) {
-    "use strict";
-
-  // module Unsafe.Coerce
-
-  exports.unsafeCoerce = function (x) {
-    return x;
-  };
-})(PS["Unsafe.Coerce"] = PS["Unsafe.Coerce"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.2
-  "use strict";
-  var $foreign = PS["Unsafe.Coerce"];
-  exports["unsafeCoerce"] = $foreign.unsafeCoerce;
-})(PS["Unsafe.Coerce"] = PS["Unsafe.Coerce"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.2
-  "use strict";
-  var $foreign = PS["Data.Array"];
-  var Control_Alt = PS["Control.Alt"];
-  var Control_Alternative = PS["Control.Alternative"];
-  var Control_Applicative = PS["Control.Applicative"];
-  var Control_Apply = PS["Control.Apply"];
-  var Control_Bind = PS["Control.Bind"];
-  var Control_Category = PS["Control.Category"];
-  var Control_Lazy = PS["Control.Lazy"];
-  var Control_Monad_Rec_Class = PS["Control.Monad.Rec.Class"];
-  var Control_Monad_ST = PS["Control.Monad.ST"];
-  var Control_Monad_ST_Internal = PS["Control.Monad.ST.Internal"];
-  var Control_Semigroupoid = PS["Control.Semigroupoid"];
-  var Data_Array_NonEmpty_Internal = PS["Data.Array.NonEmpty.Internal"];
-  var Data_Array_ST = PS["Data.Array.ST"];
-  var Data_Array_ST_Iterator = PS["Data.Array.ST.Iterator"];
-  var Data_Boolean = PS["Data.Boolean"];
-  var Data_Eq = PS["Data.Eq"];
-  var Data_Foldable = PS["Data.Foldable"];
-  var Data_Function = PS["Data.Function"];
-  var Data_Functor = PS["Data.Functor"];
-  var Data_HeytingAlgebra = PS["Data.HeytingAlgebra"];
-  var Data_Maybe = PS["Data.Maybe"];
-  var Data_Ord = PS["Data.Ord"];
-  var Data_Ordering = PS["Data.Ordering"];
-  var Data_Ring = PS["Data.Ring"];
-  var Data_Semigroup = PS["Data.Semigroup"];
-  var Data_Semiring = PS["Data.Semiring"];
-  var Data_Traversable = PS["Data.Traversable"];
-  var Data_Tuple = PS["Data.Tuple"];
-  var Data_Unfoldable = PS["Data.Unfoldable"];
-  var Partial_Unsafe = PS["Partial.Unsafe"];
-  var Prelude = PS["Prelude"];
-  var Unsafe_Coerce = PS["Unsafe.Coerce"];
-  var singleton = function (a) {
-      return [ a ];
-  };
-  var concatMap = Data_Function.flip(Control_Bind.bind(Control_Bind.bindArray));
-  var mapMaybe = function (f) {
-      return concatMap(function ($114) {
-          return Data_Maybe.maybe([  ])(singleton)(f($114));
-      });
-  };
-  exports["singleton"] = singleton;
-  exports["concatMap"] = concatMap;
-  exports["mapMaybe"] = mapMaybe;
-  exports["length"] = $foreign.length;
-  exports["cons"] = $foreign.cons;
-  exports["snoc"] = $foreign.snoc;
-  exports["filter"] = $foreign.filter;
-  exports["drop"] = $foreign.drop;
-})(PS["Data.Array"] = PS["Data.Array"] || {});
-(function(exports) {
-    "use strict";
-
-  exports["new"] = function () {
-    return {};
-  };
-})(PS["Foreign.Object.ST"] = PS["Foreign.Object.ST"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.2
-  "use strict";
-  var $foreign = PS["Foreign.Object.ST"];
-  var Control_Monad_ST = PS["Control.Monad.ST"];
-  var Data_Maybe = PS["Data.Maybe"];
-  exports["new"] = $foreign["new"];
-})(PS["Foreign.Object.ST"] = PS["Foreign.Object.ST"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.2
-  "use strict";
-  var $foreign = PS["Foreign.Object"];
-  var Control_Applicative = PS["Control.Applicative"];
-  var Control_Apply = PS["Control.Apply"];
-  var Control_Bind = PS["Control.Bind"];
-  var Control_Category = PS["Control.Category"];
-  var Control_Monad_ST = PS["Control.Monad.ST"];
-  var Control_Monad_ST_Internal = PS["Control.Monad.ST.Internal"];
-  var Control_Semigroupoid = PS["Control.Semigroupoid"];
-  var Data_Array = PS["Data.Array"];
-  var Data_Eq = PS["Data.Eq"];
-  var Data_Foldable = PS["Data.Foldable"];
-  var Data_FoldableWithIndex = PS["Data.FoldableWithIndex"];
-  var Data_Function = PS["Data.Function"];
-  var Data_Function_Uncurried = PS["Data.Function.Uncurried"];
-  var Data_Functor = PS["Data.Functor"];
-  var Data_FunctorWithIndex = PS["Data.FunctorWithIndex"];
-  var Data_HeytingAlgebra = PS["Data.HeytingAlgebra"];
-  var Data_Maybe = PS["Data.Maybe"];
-  var Data_Monoid = PS["Data.Monoid"];
-  var Data_Ord = PS["Data.Ord"];
-  var Data_Semigroup = PS["Data.Semigroup"];
-  var Data_Show = PS["Data.Show"];
-  var Data_Traversable = PS["Data.Traversable"];
-  var Data_TraversableWithIndex = PS["Data.TraversableWithIndex"];
-  var Data_Tuple = PS["Data.Tuple"];
-  var Data_Unfoldable = PS["Data.Unfoldable"];
-  var Foreign_Object_ST = PS["Foreign.Object.ST"];
-  var Prelude = PS["Prelude"];
-  var Type_Row_Homogeneous = PS["Type.Row.Homogeneous"];
-  var Unsafe_Coerce = PS["Unsafe.Coerce"];
-  var lookup = Data_Function_Uncurried.runFn4($foreign["_lookup"])(Data_Maybe.Nothing.value)(Data_Maybe.Just.create);
-  exports["lookup"] = lookup;
-  exports["empty"] = $foreign.empty;
-})(PS["Foreign.Object"] = PS["Foreign.Object"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.2
-  "use strict";
-  var $foreign = PS["Data.Argonaut.Core"];
-  var Data_Eq = PS["Data.Eq"];
-  var Data_Function = PS["Data.Function"];
-  var Data_Function_Uncurried = PS["Data.Function.Uncurried"];
-  var Data_Maybe = PS["Data.Maybe"];
-  var Data_Ord = PS["Data.Ord"];
-  var Data_Ordering = PS["Data.Ordering"];
-  var Foreign_Object = PS["Foreign.Object"];
-  var Prelude = PS["Prelude"];                  
-  var jsonEmptyObject = $foreign.fromObject(Foreign_Object.empty);
-  exports["jsonEmptyObject"] = jsonEmptyObject;
-  exports["stringify"] = $foreign.stringify;
-})(PS["Data.Argonaut.Core"] = PS["Data.Argonaut.Core"] || {});
-(function(exports) {
-    "use strict";
-
-  exports.replace = function (s1) {
-    return function (s2) {
-      return function (s3) {
-        return s3.replace(s1, s2);
-      };
-    };
-  };
-
-  exports.replaceAll = function (s1) {
-    return function (s2) {
-      return function (s3) {
-        return s3.replace(new RegExp(s1.replace(/[-\/\\^$*+?.()|[\]{}]/g, "\\$&"), "g"), s2); // eslint-disable-line no-useless-escape
-      };
-    };
-  };
-
-  exports.split = function (sep) {
-    return function (s) {
-      return s.split(sep);
-    };
-  };
-
-  exports.joinWith = function (s) {
-    return function (xs) {
-      return xs.join(s);
-    };
-  };
-})(PS["Data.String.Common"] = PS["Data.String.Common"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.2
-  "use strict";
-  var $foreign = PS["Data.String.Common"];
-  var Data_Eq = PS["Data.Eq"];
-  var Data_Ordering = PS["Data.Ordering"];
-  var Data_String_Pattern = PS["Data.String.Pattern"];
-  var Prelude = PS["Prelude"];                 
-  var $$null = function (s) {
-      return s === "";
-  };
-  exports["null"] = $$null;
-  exports["replaceAll"] = $foreign.replaceAll;
-  exports["split"] = $foreign.split;
-  exports["joinWith"] = $foreign.joinWith;
-})(PS["Data.String.Common"] = PS["Data.String.Common"] || {});
-(function(exports) {
-  /* globals exports, JSON */
-  "use strict";
-
-  exports.unsafeStringify = function (x) {
-    return JSON.stringify(x);
-  };                                  
-  exports.unsafeDecodeURIComponent = decodeURIComponent;
-  exports.unsafeEncodeURIComponent = encodeURIComponent;
-})(PS["Global.Unsafe"] = PS["Global.Unsafe"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.2
-  "use strict";
-  var $foreign = PS["Global.Unsafe"];
-  exports["unsafeStringify"] = $foreign.unsafeStringify;
-  exports["unsafeDecodeURIComponent"] = $foreign.unsafeDecodeURIComponent;
-  exports["unsafeEncodeURIComponent"] = $foreign.unsafeEncodeURIComponent;
-})(PS["Global.Unsafe"] = PS["Global.Unsafe"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.2
-  "use strict";
-  var Control_Semigroupoid = PS["Control.Semigroupoid"];
-  var Data_Eq = PS["Data.Eq"];
-  var Data_Functor = PS["Data.Functor"];
-  var Data_Maybe = PS["Data.Maybe"];
-  var Data_Monoid = PS["Data.Monoid"];
-  var Data_Newtype = PS["Data.Newtype"];
-  var Data_Ord = PS["Data.Ord"];
-  var Data_Semigroup = PS["Data.Semigroup"];
-  var Data_Show = PS["Data.Show"];
-  var Data_String = PS["Data.String"];
-  var Data_String_Common = PS["Data.String.Common"];
-  var Data_Tuple = PS["Data.Tuple"];
-  var Global_Unsafe = PS["Global.Unsafe"];
-  var Prelude = PS["Prelude"];
-  var toArray = function (v) {
-      return v;
-  };                                                                                                                 
-  var encode = (function () {
-      var encodePart = function (v) {
-          if (v.value1 instanceof Data_Maybe.Nothing) {
-              return Global_Unsafe.unsafeEncodeURIComponent(v.value0);
-          };
-          if (v.value1 instanceof Data_Maybe.Just) {
-              return Global_Unsafe.unsafeEncodeURIComponent(v.value0) + ("=" + Global_Unsafe.unsafeEncodeURIComponent(v.value1.value0));
-          };
-          throw new Error("Failed pattern match at Data.FormURLEncoded (line 35, column 18 - line 37, column 89): " + [ v.constructor.name ]);
-      };
-      return function ($14) {
-          return Data_String_Common.joinWith("&")(Data_Functor.map(Data_Functor.functorArray)(encodePart)(toArray($14)));
-      };
-  })();
-  exports["toArray"] = toArray;
-  exports["encode"] = encode;
-})(PS["Data.FormURLEncoded"] = PS["Data.FormURLEncoded"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.2
-  "use strict";
-  var Data_Eq = PS["Data.Eq"];
-  var Data_Newtype = PS["Data.Newtype"];
-  var Data_Ord = PS["Data.Ord"];
-  var Data_Semigroup = PS["Data.Semigroup"];
-  var Data_Show = PS["Data.Show"];
-  var Prelude = PS["Prelude"];                 
-  var MediaType = function (x) {
-      return x;
-  }; 
-  var newtypeMediaType = new Data_Newtype.Newtype(function (n) {
-      return n;
-  }, MediaType);
-  exports["MediaType"] = MediaType;
-  exports["newtypeMediaType"] = newtypeMediaType;
-})(PS["Data.MediaType"] = PS["Data.MediaType"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.2
-  "use strict";
-  var Data_MediaType = PS["Data.MediaType"];           
-  var applicationJSON = "application/json";
-  var applicationFormURLEncoded = "application/x-www-form-urlencoded";
-  exports["applicationFormURLEncoded"] = applicationFormURLEncoded;
-  exports["applicationJSON"] = applicationJSON;
-})(PS["Data.MediaType.Common"] = PS["Data.MediaType.Common"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.2
-  "use strict";
-  var Data_Argonaut_Core = PS["Data.Argonaut.Core"];
-  var Data_ArrayBuffer_Types = PS["Data.ArrayBuffer.Types"];
-  var Data_FormURLEncoded = PS["Data.FormURLEncoded"];
-  var Data_Maybe = PS["Data.Maybe"];
-  var Data_MediaType = PS["Data.MediaType"];
-  var Data_MediaType_Common = PS["Data.MediaType.Common"];
-  var Web_DOM_Document = PS["Web.DOM.Document"];
-  var Web_File_Blob = PS["Web.File.Blob"];
-  var Web_XHR_FormData = PS["Web.XHR.FormData"];                 
-  var ArrayView = (function () {
-      function ArrayView(value0) {
-          this.value0 = value0;
-      };
-      ArrayView.create = function (value0) {
-          return new ArrayView(value0);
-      };
-      return ArrayView;
-  })();
-  var Blob = (function () {
-      function Blob(value0) {
-          this.value0 = value0;
-      };
-      Blob.create = function (value0) {
-          return new Blob(value0);
-      };
-      return Blob;
-  })();
-  var Document = (function () {
-      function Document(value0) {
-          this.value0 = value0;
-      };
-      Document.create = function (value0) {
-          return new Document(value0);
-      };
-      return Document;
-  })();
-  var $$String = (function () {
-      function $$String(value0) {
-          this.value0 = value0;
-      };
-      $$String.create = function (value0) {
-          return new $$String(value0);
-      };
-      return $$String;
-  })();
-  var FormData = (function () {
-      function FormData(value0) {
-          this.value0 = value0;
-      };
-      FormData.create = function (value0) {
-          return new FormData(value0);
-      };
-      return FormData;
-  })();
-  var FormURLEncoded = (function () {
-      function FormURLEncoded(value0) {
-          this.value0 = value0;
-      };
-      FormURLEncoded.create = function (value0) {
-          return new FormURLEncoded(value0);
-      };
-      return FormURLEncoded;
-  })();
-  var Json = (function () {
-      function Json(value0) {
-          this.value0 = value0;
-      };
-      Json.create = function (value0) {
-          return new Json(value0);
-      };
-      return Json;
-  })();
-  var toMediaType = function (v) {
-      if (v instanceof FormURLEncoded) {
-          return new Data_Maybe.Just(Data_MediaType_Common.applicationFormURLEncoded);
-      };
-      if (v instanceof Json) {
-          return new Data_Maybe.Just(Data_MediaType_Common.applicationJSON);
-      };
-      return Data_Maybe.Nothing.value;
-  };
-  var string = $$String.create;
-  exports["ArrayView"] = ArrayView;
-  exports["Blob"] = Blob;
-  exports["Document"] = Document;
-  exports["String"] = $$String;
-  exports["FormData"] = FormData;
-  exports["FormURLEncoded"] = FormURLEncoded;
-  exports["Json"] = Json;
-  exports["string"] = string;
-  exports["toMediaType"] = toMediaType;
-})(PS["Affjax.RequestBody"] = PS["Affjax.RequestBody"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.2
-  "use strict";
-  var Data_Eq = PS["Data.Eq"];
-  var Data_HeytingAlgebra = PS["Data.HeytingAlgebra"];
-  var Data_MediaType = PS["Data.MediaType"];
-  var Data_Newtype = PS["Data.Newtype"];
-  var Data_Semigroup = PS["Data.Semigroup"];
-  var Data_Show = PS["Data.Show"];
-  var Prelude = PS["Prelude"];                 
-  var Accept = (function () {
-      function Accept(value0) {
-          this.value0 = value0;
-      };
-      Accept.create = function (value0) {
-          return new Accept(value0);
-      };
-      return Accept;
-  })();
-  var ContentType = (function () {
-      function ContentType(value0) {
-          this.value0 = value0;
-      };
-      ContentType.create = function (value0) {
-          return new ContentType(value0);
-      };
-      return ContentType;
-  })();
-  var RequestHeader = (function () {
-      function RequestHeader(value0, value1) {
-          this.value0 = value0;
-          this.value1 = value1;
-      };
-      RequestHeader.create = function (value0) {
-          return function (value1) {
-              return new RequestHeader(value0, value1);
-          };
-      };
-      return RequestHeader;
-  })();
-  var requestHeaderValue = function (v) {
-      if (v instanceof Accept) {
-          return Data_Newtype.unwrap(Data_MediaType.newtypeMediaType)(v.value0);
-      };
-      if (v instanceof ContentType) {
-          return Data_Newtype.unwrap(Data_MediaType.newtypeMediaType)(v.value0);
-      };
-      if (v instanceof RequestHeader) {
-          return v.value1;
-      };
-      throw new Error("Failed pattern match at Affjax.RequestHeader (line 29, column 1 - line 29, column 46): " + [ v.constructor.name ]);
-  };
-  var requestHeaderName = function (v) {
-      if (v instanceof Accept) {
-          return "Accept";
-      };
-      if (v instanceof ContentType) {
-          return "Content-Type";
-      };
-      if (v instanceof RequestHeader) {
-          return v.value0;
-      };
-      throw new Error("Failed pattern match at Affjax.RequestHeader (line 24, column 1 - line 24, column 45): " + [ v.constructor.name ]);
-  };
-  exports["Accept"] = Accept;
-  exports["ContentType"] = ContentType;
-  exports["RequestHeader"] = RequestHeader;
-  exports["requestHeaderName"] = requestHeaderName;
-  exports["requestHeaderValue"] = requestHeaderValue;
-})(PS["Affjax.RequestHeader"] = PS["Affjax.RequestHeader"] || {});
-(function(exports) {
-    "use strict";
-
-  exports.unsafeToForeign = function (value) {
-    return value;
-  };
-
-  exports.unsafeFromForeign = function (value) {
-    return value;
-  };
-
-  exports.typeOf = function (value) {
-    return typeof value;
-  };
-
-  exports.tagOf = function (value) {
-    return Object.prototype.toString.call(value).slice(8, -1);
-  };
-})(PS["Foreign"] = PS["Foreign"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.2
-  "use strict";
-  var Control_Applicative = PS["Control.Applicative"];
-  var Control_Bind = PS["Control.Bind"];
-  var Control_Semigroupoid = PS["Control.Semigroupoid"];
-  var Data_Either = PS["Data.Either"];
-  var Data_Function = PS["Data.Function"];
-  var Data_Functor = PS["Data.Functor"];
-  var Data_Maybe = PS["Data.Maybe"];
-  var Data_Unit = PS["Data.Unit"];
-  var Prelude = PS["Prelude"];                 
-  var MonadThrow = function (Monad0, throwError) {
-      this.Monad0 = Monad0;
-      this.throwError = throwError;
-  };
-  var MonadError = function (MonadThrow0, catchError) {
-      this.MonadThrow0 = MonadThrow0;
-      this.catchError = catchError;
-  };
-  var throwError = function (dict) {
-      return dict.throwError;
-  }; 
-  var catchError = function (dict) {
-      return dict.catchError;
-  };
-  var $$try = function (dictMonadError) {
-      return function (a) {
-          return catchError(dictMonadError)(Data_Functor.map(((((dictMonadError.MonadThrow0()).Monad0()).Bind1()).Apply0()).Functor0())(Data_Either.Right.create)(a))(function ($21) {
-              return Control_Applicative.pure(((dictMonadError.MonadThrow0()).Monad0()).Applicative0())(Data_Either.Left.create($21));
-          });
-      };
-  };
-  exports["catchError"] = catchError;
-  exports["throwError"] = throwError;
-  exports["MonadThrow"] = MonadThrow;
-  exports["MonadError"] = MonadError;
-  exports["try"] = $$try;
-})(PS["Control.Monad.Error.Class"] = PS["Control.Monad.Error.Class"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.2
-  "use strict";
-  var Data_Tuple = PS["Data.Tuple"];
-  var Data_Unit = PS["Data.Unit"];
-  var Prelude = PS["Prelude"];                 
-  var MonadState = function (Monad0, state) {
-      this.Monad0 = Monad0;
-      this.state = state;
-  };
-  var state = function (dict) {
-      return dict.state;
-  };
-  var modify_ = function (dictMonadState) {
-      return function (f) {
-          return state(dictMonadState)(function (s) {
-              return new Data_Tuple.Tuple(Data_Unit.unit, f(s));
-          });
-      };
-  };
-  var modify = function (dictMonadState) {
-      return function (f) {
-          return state(dictMonadState)(function (s) {
-              var s$prime = f(s);
-              return new Data_Tuple.Tuple(s$prime, s$prime);
-          });
-      };
-  };
-  var gets = function (dictMonadState) {
-      return function (f) {
-          return state(dictMonadState)(function (s) {
-              return new Data_Tuple.Tuple(f(s), s);
-          });
-      };
-  };
-  var get = function (dictMonadState) {
-      return state(dictMonadState)(function (s) {
-          return new Data_Tuple.Tuple(s, s);
-      });
-  };
-  exports["state"] = state;
-  exports["MonadState"] = MonadState;
-  exports["get"] = get;
-  exports["gets"] = gets;
-  exports["modify"] = modify;
-  exports["modify_"] = modify_;
-})(PS["Control.Monad.State.Class"] = PS["Control.Monad.State.Class"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.2
-  "use strict";
-  var Prelude = PS["Prelude"];                 
-  var MonadTrans = function (lift) {
-      this.lift = lift;
-  };
-  var lift = function (dict) {
-      return dict.lift;
-  };
-  exports["lift"] = lift;
-  exports["MonadTrans"] = MonadTrans;
-})(PS["Control.Monad.Trans.Class"] = PS["Control.Monad.Trans.Class"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.2
-  "use strict";
-  var Control_Category = PS["Control.Category"];
-  var Control_Monad = PS["Control.Monad"];
-  var Effect = PS["Effect"];                 
-  var MonadEffect = function (Monad0, liftEffect) {
-      this.Monad0 = Monad0;
-      this.liftEffect = liftEffect;
-  };                                                         
-  var liftEffect = function (dict) {
-      return dict.liftEffect;
-  };
-  exports["liftEffect"] = liftEffect;
-  exports["MonadEffect"] = MonadEffect;
-})(PS["Effect.Class"] = PS["Effect.Class"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.2
-  "use strict";
-  var Control_Alt = PS["Control.Alt"];
-  var Control_Alternative = PS["Control.Alternative"];
-  var Control_Applicative = PS["Control.Applicative"];
-  var Control_Apply = PS["Control.Apply"];
-  var Control_Bind = PS["Control.Bind"];
-  var Control_Category = PS["Control.Category"];
-  var Control_Monad = PS["Control.Monad"];
-  var Control_Monad_Cont_Class = PS["Control.Monad.Cont.Class"];
-  var Control_Monad_Error_Class = PS["Control.Monad.Error.Class"];
-  var Control_Monad_Reader_Class = PS["Control.Monad.Reader.Class"];
-  var Control_Monad_Rec_Class = PS["Control.Monad.Rec.Class"];
-  var Control_Monad_State_Class = PS["Control.Monad.State.Class"];
-  var Control_Monad_Trans_Class = PS["Control.Monad.Trans.Class"];
-  var Control_Monad_Writer_Class = PS["Control.Monad.Writer.Class"];
-  var Control_MonadPlus = PS["Control.MonadPlus"];
-  var Control_MonadZero = PS["Control.MonadZero"];
-  var Control_Plus = PS["Control.Plus"];
-  var Control_Semigroupoid = PS["Control.Semigroupoid"];
-  var Data_Either = PS["Data.Either"];
-  var Data_Function = PS["Data.Function"];
-  var Data_Functor = PS["Data.Functor"];
-  var Data_Monoid = PS["Data.Monoid"];
-  var Data_Newtype = PS["Data.Newtype"];
-  var Data_Semigroup = PS["Data.Semigroup"];
-  var Data_Tuple = PS["Data.Tuple"];
-  var Effect_Class = PS["Effect.Class"];
-  var Prelude = PS["Prelude"];                 
-  var ExceptT = function (x) {
-      return x;
-  };
-  var runExceptT = function (v) {
-      return v;
-  }; 
-  var mapExceptT = function (f) {
-      return function (v) {
-          return f(v);
-      };
-  };
-  var functorExceptT = function (dictFunctor) {
-      return new Data_Functor.Functor(function (f) {
-          return mapExceptT(Data_Functor.map(dictFunctor)(Data_Functor.map(Data_Either.functorEither)(f)));
-      });
-  };
-  var monadExceptT = function (dictMonad) {
-      return new Control_Monad.Monad(function () {
-          return applicativeExceptT(dictMonad);
-      }, function () {
-          return bindExceptT(dictMonad);
-      });
-  };
-  var bindExceptT = function (dictMonad) {
-      return new Control_Bind.Bind(function () {
-          return applyExceptT(dictMonad);
-      }, function (v) {
-          return function (k) {
-              return Control_Bind.bind(dictMonad.Bind1())(v)(Data_Either.either(function ($97) {
-                  return Control_Applicative.pure(dictMonad.Applicative0())(Data_Either.Left.create($97));
-              })(function (a) {
-                  var v1 = k(a);
-                  return v1;
-              }));
-          };
-      });
-  };
-  var applyExceptT = function (dictMonad) {
-      return new Control_Apply.Apply(function () {
-          return functorExceptT(((dictMonad.Bind1()).Apply0()).Functor0());
-      }, Control_Monad.ap(monadExceptT(dictMonad)));
-  };
-  var applicativeExceptT = function (dictMonad) {
-      return new Control_Applicative.Applicative(function () {
-          return applyExceptT(dictMonad);
-      }, function ($98) {
-          return ExceptT(Control_Applicative.pure(dictMonad.Applicative0())(Data_Either.Right.create($98)));
-      });
-  };
-  var monadThrowExceptT = function (dictMonad) {
-      return new Control_Monad_Error_Class.MonadThrow(function () {
-          return monadExceptT(dictMonad);
-      }, function ($102) {
-          return ExceptT(Control_Applicative.pure(dictMonad.Applicative0())(Data_Either.Left.create($102)));
-      });
-  };
-  exports["ExceptT"] = ExceptT;
-  exports["runExceptT"] = runExceptT;
-  exports["mapExceptT"] = mapExceptT;
-  exports["functorExceptT"] = functorExceptT;
-  exports["applyExceptT"] = applyExceptT;
-  exports["applicativeExceptT"] = applicativeExceptT;
-  exports["bindExceptT"] = bindExceptT;
-  exports["monadExceptT"] = monadExceptT;
-  exports["monadThrowExceptT"] = monadThrowExceptT;
-})(PS["Control.Monad.Except.Trans"] = PS["Control.Monad.Except.Trans"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.2
-  "use strict";
-  var Control_Monad_Error_Class = PS["Control.Monad.Error.Class"];
-  var Control_Monad_Except_Trans = PS["Control.Monad.Except.Trans"];
-  var Control_Semigroupoid = PS["Control.Semigroupoid"];
-  var Data_Either = PS["Data.Either"];
-  var Data_Identity = PS["Data.Identity"];
-  var Data_Newtype = PS["Data.Newtype"];
-  var Prelude = PS["Prelude"];                                                           
-  var runExcept = function ($0) {
-      return Data_Newtype.unwrap(Data_Identity.newtypeIdentity)(Control_Monad_Except_Trans.runExceptT($0));
-  };
-  exports["runExcept"] = runExcept;
-})(PS["Control.Monad.Except"] = PS["Control.Monad.Except"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.2
-  "use strict";
-  var Control_Alt = PS["Control.Alt"];
-  var Control_Alternative = PS["Control.Alternative"];
-  var Control_Applicative = PS["Control.Applicative"];
-  var Control_Apply = PS["Control.Apply"];
-  var Control_Category = PS["Control.Category"];
-  var Control_Plus = PS["Control.Plus"];
-  var Control_Semigroupoid = PS["Control.Semigroupoid"];
-  var Data_Eq = PS["Data.Eq"];
-  var Data_Foldable = PS["Data.Foldable"];
-  var Data_FoldableWithIndex = PS["Data.FoldableWithIndex"];
-  var Data_Function = PS["Data.Function"];
-  var Data_Functor = PS["Data.Functor"];
-  var Data_FunctorWithIndex = PS["Data.FunctorWithIndex"];
-  var Data_HeytingAlgebra = PS["Data.HeytingAlgebra"];
-  var Data_Maybe = PS["Data.Maybe"];
-  var Data_Ord = PS["Data.Ord"];
-  var Data_Ordering = PS["Data.Ordering"];
-  var Data_Semigroup = PS["Data.Semigroup"];
-  var Data_Semigroup_Foldable = PS["Data.Semigroup.Foldable"];
-  var Data_Show = PS["Data.Show"];
-  var Data_Traversable = PS["Data.Traversable"];
-  var Data_TraversableWithIndex = PS["Data.TraversableWithIndex"];
-  var Data_Tuple = PS["Data.Tuple"];
-  var Data_Unfoldable = PS["Data.Unfoldable"];
-  var Data_Unfoldable1 = PS["Data.Unfoldable1"];
-  var Prelude = PS["Prelude"];                 
-  var NonEmpty = (function () {
-      function NonEmpty(value0, value1) {
-          this.value0 = value0;
-          this.value1 = value1;
-      };
-      NonEmpty.create = function (value0) {
-          return function (value1) {
-              return new NonEmpty(value0, value1);
-          };
-      };
-      return NonEmpty;
-  })();
-  var singleton = function (dictPlus) {
-      return function (a) {
-          return new NonEmpty(a, Control_Plus.empty(dictPlus));
-      };
-  };
-  exports["NonEmpty"] = NonEmpty;
-  exports["singleton"] = singleton;
-})(PS["Data.NonEmpty"] = PS["Data.NonEmpty"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.2
-  "use strict";
-  var Control_Alt = PS["Control.Alt"];
-  var Control_Alternative = PS["Control.Alternative"];
-  var Control_Applicative = PS["Control.Applicative"];
-  var Control_Apply = PS["Control.Apply"];
-  var Control_Bind = PS["Control.Bind"];
-  var Control_Category = PS["Control.Category"];
-  var Control_Comonad = PS["Control.Comonad"];
-  var Control_Extend = PS["Control.Extend"];
-  var Control_Monad = PS["Control.Monad"];
-  var Control_MonadPlus = PS["Control.MonadPlus"];
-  var Control_MonadZero = PS["Control.MonadZero"];
-  var Control_Plus = PS["Control.Plus"];
-  var Control_Semigroupoid = PS["Control.Semigroupoid"];
-  var Data_Eq = PS["Data.Eq"];
-  var Data_Foldable = PS["Data.Foldable"];
-  var Data_FoldableWithIndex = PS["Data.FoldableWithIndex"];
-  var Data_Function = PS["Data.Function"];
-  var Data_Functor = PS["Data.Functor"];
-  var Data_FunctorWithIndex = PS["Data.FunctorWithIndex"];
-  var Data_HeytingAlgebra = PS["Data.HeytingAlgebra"];
-  var Data_Maybe = PS["Data.Maybe"];
-  var Data_Monoid = PS["Data.Monoid"];
-  var Data_Newtype = PS["Data.Newtype"];
-  var Data_NonEmpty = PS["Data.NonEmpty"];
-  var Data_Ord = PS["Data.Ord"];
-  var Data_Ordering = PS["Data.Ordering"];
-  var Data_Ring = PS["Data.Ring"];
-  var Data_Semigroup = PS["Data.Semigroup"];
-  var Data_Semigroup_Foldable = PS["Data.Semigroup.Foldable"];
-  var Data_Semigroup_Traversable = PS["Data.Semigroup.Traversable"];
-  var Data_Semiring = PS["Data.Semiring"];
-  var Data_Show = PS["Data.Show"];
-  var Data_Traversable = PS["Data.Traversable"];
-  var Data_TraversableWithIndex = PS["Data.TraversableWithIndex"];
-  var Data_Tuple = PS["Data.Tuple"];
-  var Data_Unfoldable = PS["Data.Unfoldable"];
-  var Data_Unfoldable1 = PS["Data.Unfoldable1"];
-  var Prelude = PS["Prelude"];                 
-  var Nil = (function () {
-      function Nil() {
-
-      };
-      Nil.value = new Nil();
-      return Nil;
-  })();
-  var Cons = (function () {
-      function Cons(value0, value1) {
-          this.value0 = value0;
-          this.value1 = value1;
-      };
-      Cons.create = function (value0) {
-          return function (value1) {
-              return new Cons(value0, value1);
-          };
-      };
-      return Cons;
-  })();
-  var NonEmptyList = function (x) {
-      return x;
-  };
-  var foldableList = new Data_Foldable.Foldable(function (dictMonoid) {
-      return function (f) {
-          return Data_Foldable.foldl(foldableList)(function (acc) {
-              return function ($174) {
-                  return Data_Semigroup.append(dictMonoid.Semigroup0())(acc)(f($174));
-              };
-          })(Data_Monoid.mempty(dictMonoid));
-      };
-  }, function (f) {
-      var go = function ($copy_b) {
-          return function ($copy_v) {
-              var $tco_var_b = $copy_b;
-              var $tco_done = false;
-              var $tco_result;
-              function $tco_loop(b, v) {
-                  if (v instanceof Nil) {
-                      $tco_done = true;
-                      return b;
-                  };
-                  if (v instanceof Cons) {
-                      $tco_var_b = f(b)(v.value0);
-                      $copy_v = v.value1;
-                      return;
-                  };
-                  throw new Error("Failed pattern match at Data.List.Types (line 81, column 12 - line 83, column 30): " + [ v.constructor.name ]);
-              };
-              while (!$tco_done) {
-                  $tco_result = $tco_loop($tco_var_b, $copy_v);
-              };
-              return $tco_result;
-          };
-      };
-      return go;
-  }, function (f) {
-      return function (b) {
-          var rev = Data_Foldable.foldl(foldableList)(Data_Function.flip(Cons.create))(Nil.value);
-          return function ($175) {
-              return Data_Foldable.foldl(foldableList)(Data_Function.flip(f))(b)(rev($175));
-          };
-      };
-  });
-  var functorList = new Data_Functor.Functor(function (f) {
-      return Data_Foldable.foldr(foldableList)(function (x) {
-          return function (acc) {
-              return new Cons(f(x), acc);
-          };
-      })(Nil.value);
-  });
-  var semigroupList = new Data_Semigroup.Semigroup(function (xs) {
-      return function (ys) {
-          return Data_Foldable.foldr(foldableList)(Cons.create)(ys)(xs);
-      };
-  });
-  var applyList = new Control_Apply.Apply(function () {
-      return functorList;
-  }, function (v) {
-      return function (v1) {
-          if (v instanceof Nil) {
-              return Nil.value;
-          };
-          if (v instanceof Cons) {
-              return Data_Semigroup.append(semigroupList)(Data_Functor.map(functorList)(v.value0)(v1))(Control_Apply.apply(applyList)(v.value1)(v1));
-          };
-          throw new Error("Failed pattern match at Data.List.Types (line 127, column 1 - line 127, column 33): " + [ v.constructor.name, v1.constructor.name ]);
-      };
-  });
-  var applicativeList = new Control_Applicative.Applicative(function () {
-      return applyList;
-  }, function (a) {
-      return new Cons(a, Nil.value);
-  });                                              
-  var altList = new Control_Alt.Alt(function () {
-      return functorList;
-  }, Data_Semigroup.append(semigroupList));
-  var plusList = new Control_Plus.Plus(function () {
-      return altList;
-  }, Nil.value);
-  exports["Nil"] = Nil;
-  exports["Cons"] = Cons;
-  exports["NonEmptyList"] = NonEmptyList;
-  exports["semigroupList"] = semigroupList;
-  exports["functorList"] = functorList;
-  exports["foldableList"] = foldableList;
-  exports["applyList"] = applyList;
-  exports["applicativeList"] = applicativeList;
-  exports["altList"] = altList;
-  exports["plusList"] = plusList;
-})(PS["Data.List.Types"] = PS["Data.List.Types"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.2
-  "use strict";
-  var Control_Alt = PS["Control.Alt"];
-  var Control_Alternative = PS["Control.Alternative"];
-  var Control_Applicative = PS["Control.Applicative"];
-  var Control_Apply = PS["Control.Apply"];
-  var Control_Bind = PS["Control.Bind"];
-  var Control_Category = PS["Control.Category"];
-  var Control_Lazy = PS["Control.Lazy"];
-  var Control_Monad_Rec_Class = PS["Control.Monad.Rec.Class"];
-  var Control_Semigroupoid = PS["Control.Semigroupoid"];
-  var Data_Bifunctor = PS["Data.Bifunctor"];
-  var Data_Boolean = PS["Data.Boolean"];
-  var Data_Eq = PS["Data.Eq"];
-  var Data_Foldable = PS["Data.Foldable"];
-  var Data_Function = PS["Data.Function"];
-  var Data_Functor = PS["Data.Functor"];
-  var Data_FunctorWithIndex = PS["Data.FunctorWithIndex"];
-  var Data_HeytingAlgebra = PS["Data.HeytingAlgebra"];
-  var Data_List_Types = PS["Data.List.Types"];
-  var Data_Maybe = PS["Data.Maybe"];
-  var Data_Newtype = PS["Data.Newtype"];
-  var Data_NonEmpty = PS["Data.NonEmpty"];
-  var Data_Ord = PS["Data.Ord"];
-  var Data_Ordering = PS["Data.Ordering"];
-  var Data_Ring = PS["Data.Ring"];
-  var Data_Semigroup = PS["Data.Semigroup"];
-  var Data_Semiring = PS["Data.Semiring"];
-  var Data_Show = PS["Data.Show"];
-  var Data_Traversable = PS["Data.Traversable"];
-  var Data_Tuple = PS["Data.Tuple"];
-  var Data_Unfoldable = PS["Data.Unfoldable"];
-  var Data_Unit = PS["Data.Unit"];
-  var Prelude = PS["Prelude"];
-  var reverse = (function () {
-      var go = function ($copy_acc) {
-          return function ($copy_v) {
-              var $tco_var_acc = $copy_acc;
-              var $tco_done = false;
-              var $tco_result;
-              function $tco_loop(acc, v) {
-                  if (v instanceof Data_List_Types.Nil) {
-                      $tco_done = true;
-                      return acc;
-                  };
-                  if (v instanceof Data_List_Types.Cons) {
-                      $tco_var_acc = new Data_List_Types.Cons(v.value0, acc);
-                      $copy_v = v.value1;
-                      return;
-                  };
-                  throw new Error("Failed pattern match at Data.List (line 368, column 3 - line 368, column 19): " + [ acc.constructor.name, v.constructor.name ]);
-              };
-              while (!$tco_done) {
-                  $tco_result = $tco_loop($tco_var_acc, $copy_v);
-              };
-              return $tco_result;
-          };
-      };
-      return go(Data_List_Types.Nil.value);
-  })();
-  var $$null = function (v) {
-      if (v instanceof Data_List_Types.Nil) {
-          return true;
-      };
-      return false;
-  };
-  var fromFoldable = function (dictFoldable) {
-      return Data_Foldable.foldr(dictFoldable)(Data_List_Types.Cons.create)(Data_List_Types.Nil.value);
-  };
-  exports["fromFoldable"] = fromFoldable;
-  exports["null"] = $$null;
-  exports["reverse"] = reverse;
-})(PS["Data.List"] = PS["Data.List"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.2
-  "use strict";
-  var Control_Bind = PS["Control.Bind"];
-  var Control_Category = PS["Control.Category"];
-  var Control_Semigroupoid = PS["Control.Semigroupoid"];
-  var Data_Boolean = PS["Data.Boolean"];
-  var Data_Eq = PS["Data.Eq"];
-  var Data_Foldable = PS["Data.Foldable"];
-  var Data_Function = PS["Data.Function"];
-  var Data_Functor = PS["Data.Functor"];
-  var Data_FunctorWithIndex = PS["Data.FunctorWithIndex"];
-  var Data_List = PS["Data.List"];
-  var Data_List_Types = PS["Data.List.Types"];
-  var Data_Maybe = PS["Data.Maybe"];
-  var Data_NonEmpty = PS["Data.NonEmpty"];
-  var Data_Ord = PS["Data.Ord"];
-  var Data_Ring = PS["Data.Ring"];
-  var Data_Semigroup = PS["Data.Semigroup"];
-  var Data_Semigroup_Foldable = PS["Data.Semigroup.Foldable"];
-  var Data_Semigroup_Traversable = PS["Data.Semigroup.Traversable"];
-  var Data_Semiring = PS["Data.Semiring"];
-  var Data_Traversable = PS["Data.Traversable"];
-  var Data_Tuple = PS["Data.Tuple"];
-  var Data_Unfoldable = PS["Data.Unfoldable"];
-  var Partial_Unsafe = PS["Partial.Unsafe"];
-  var Prelude = PS["Prelude"];
-  var singleton = function ($165) {
-      return Data_List_Types.NonEmptyList(Data_NonEmpty.singleton(Data_List_Types.plusList)($165));
-  };
-  var head = function (v) {
-      return v.value0;
-  };
-  var cons = function (y) {
-      return function (v) {
-          return new Data_NonEmpty.NonEmpty(y, new Data_List_Types.Cons(v.value0, v.value1));
-      };
-  };
-  exports["singleton"] = singleton;
-  exports["cons"] = cons;
-  exports["head"] = head;
-})(PS["Data.List.NonEmpty"] = PS["Data.List.NonEmpty"] || {});
-(function(exports) {
-    "use strict";
-
-  exports.singleton = function (c) {
-    return c;
-  };
-
-  exports.length = function (s) {
-    return s.length;
-  };
-
-  exports.drop = function (n) {
-    return function (s) {
-      return s.substring(n);
-    };
-  };
-})(PS["Data.String.CodeUnits"] = PS["Data.String.CodeUnits"] || {});
-(function(exports) {
-    "use strict";
-
-  exports.charAt = function (i) {
-    return function (s) {
-      if (i >= 0 && i < s.length) return s.charAt(i);
-      throw new Error("Data.String.Unsafe.charAt: Invalid index.");
-    };
-  };
-})(PS["Data.String.Unsafe"] = PS["Data.String.Unsafe"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.2
-  "use strict";
-  var $foreign = PS["Data.String.Unsafe"];
-  exports["charAt"] = $foreign.charAt;
-})(PS["Data.String.Unsafe"] = PS["Data.String.Unsafe"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.2
-  "use strict";
-  var $foreign = PS["Data.String.CodeUnits"];
-  var Control_Semigroupoid = PS["Control.Semigroupoid"];
-  var Data_Boolean = PS["Data.Boolean"];
-  var Data_Eq = PS["Data.Eq"];
-  var Data_Function = PS["Data.Function"];
-  var Data_HeytingAlgebra = PS["Data.HeytingAlgebra"];
-  var Data_Maybe = PS["Data.Maybe"];
-  var Data_Ord = PS["Data.Ord"];
-  var Data_Ring = PS["Data.Ring"];
-  var Data_Semiring = PS["Data.Semiring"];
-  var Data_String_Pattern = PS["Data.String.Pattern"];
-  var Data_String_Unsafe = PS["Data.String.Unsafe"];
-  var Prelude = PS["Prelude"];
-  exports["singleton"] = $foreign.singleton;
-  exports["length"] = $foreign.length;
-  exports["drop"] = $foreign.drop;
-})(PS["Data.String.CodeUnits"] = PS["Data.String.CodeUnits"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.2
-  "use strict";
-  var $foreign = PS["Foreign"];
-  var Control_Applicative = PS["Control.Applicative"];
-  var Control_Monad_Error_Class = PS["Control.Monad.Error.Class"];
-  var Control_Monad_Except = PS["Control.Monad.Except"];
-  var Control_Monad_Except_Trans = PS["Control.Monad.Except.Trans"];
-  var Control_Semigroupoid = PS["Control.Semigroupoid"];
-  var Data_Boolean = PS["Data.Boolean"];
-  var Data_Either = PS["Data.Either"];
-  var Data_Eq = PS["Data.Eq"];
-  var Data_Function = PS["Data.Function"];
-  var Data_HeytingAlgebra = PS["Data.HeytingAlgebra"];
-  var Data_Identity = PS["Data.Identity"];
-  var Data_Int = PS["Data.Int"];
-  var Data_List_NonEmpty = PS["Data.List.NonEmpty"];
-  var Data_Maybe = PS["Data.Maybe"];
-  var Data_Ord = PS["Data.Ord"];
-  var Data_Ordering = PS["Data.Ordering"];
-  var Data_Semigroup = PS["Data.Semigroup"];
-  var Data_Show = PS["Data.Show"];
-  var Data_String_CodeUnits = PS["Data.String.CodeUnits"];
-  var Prelude = PS["Prelude"];                 
-  var ForeignError = (function () {
-      function ForeignError(value0) {
-          this.value0 = value0;
-      };
-      ForeignError.create = function (value0) {
-          return new ForeignError(value0);
-      };
-      return ForeignError;
-  })();
-  var TypeMismatch = (function () {
-      function TypeMismatch(value0, value1) {
-          this.value0 = value0;
-          this.value1 = value1;
-      };
-      TypeMismatch.create = function (value0) {
-          return function (value1) {
-              return new TypeMismatch(value0, value1);
-          };
-      };
-      return TypeMismatch;
-  })();
-  var fail = function ($107) {
-      return Control_Monad_Error_Class.throwError(Control_Monad_Except_Trans.monadThrowExceptT(Data_Identity.monadIdentity))(Data_List_NonEmpty.singleton($107));
-  };
-  var unsafeReadTagged = function (tag) {
-      return function (value) {
-          if ($foreign.tagOf(value) === tag) {
-              return Control_Applicative.pure(Control_Monad_Except_Trans.applicativeExceptT(Data_Identity.monadIdentity))($foreign.unsafeFromForeign(value));
-          };
-          if (Data_Boolean.otherwise) {
-              return fail(new TypeMismatch(tag, $foreign.tagOf(value)));
-          };
-          throw new Error("Failed pattern match at Foreign (line 106, column 1 - line 106, column 55): " + [ tag.constructor.name, value.constructor.name ]);
-      };
-  };
-  var readBoolean = unsafeReadTagged("Boolean");
-  var readString = unsafeReadTagged("String");
-  exports["ForeignError"] = ForeignError;
-  exports["TypeMismatch"] = TypeMismatch;
-  exports["unsafeReadTagged"] = unsafeReadTagged;
-  exports["readString"] = readString;
-  exports["readBoolean"] = readBoolean;
-  exports["fail"] = fail;
-  exports["unsafeToForeign"] = $foreign.unsafeToForeign;
-  exports["typeOf"] = $foreign.typeOf;
-})(PS["Foreign"] = PS["Foreign"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.2
-  "use strict";
-  var Control_Category = PS["Control.Category"];
-  var Data_Argonaut_Core = PS["Data.Argonaut.Core"];
-  var Data_ArrayBuffer_Types = PS["Data.ArrayBuffer.Types"];
-  var Data_Maybe = PS["Data.Maybe"];
-  var Data_MediaType = PS["Data.MediaType"];
-  var Data_MediaType_Common = PS["Data.MediaType.Common"];
-  var Foreign = PS["Foreign"];
-  var Prelude = PS["Prelude"];
-  var Web_DOM_Document = PS["Web.DOM.Document"];
-  var Web_File_Blob = PS["Web.File.Blob"];                 
-  var ResponseFormatError = (function () {
-      function ResponseFormatError(value0, value1) {
-          this.value0 = value0;
-          this.value1 = value1;
-      };
-      ResponseFormatError.create = function (value0) {
-          return function (value1) {
-              return new ResponseFormatError(value0, value1);
-          };
-      };
-      return ResponseFormatError;
-  })();
-  var $$ArrayBuffer = (function () {
-      function $$ArrayBuffer(value0) {
-          this.value0 = value0;
-      };
-      $$ArrayBuffer.create = function (value0) {
-          return new $$ArrayBuffer(value0);
-      };
-      return $$ArrayBuffer;
-  })();
-  var Blob = (function () {
-      function Blob(value0) {
-          this.value0 = value0;
-      };
-      Blob.create = function (value0) {
-          return new Blob(value0);
-      };
-      return Blob;
-  })();
-  var Document = (function () {
-      function Document(value0) {
-          this.value0 = value0;
-      };
-      Document.create = function (value0) {
-          return new Document(value0);
-      };
-      return Document;
-  })();
-  var Json = (function () {
-      function Json(value0) {
-          this.value0 = value0;
-      };
-      Json.create = function (value0) {
-          return new Json(value0);
-      };
-      return Json;
-  })();
-  var $$String = (function () {
-      function $$String(value0) {
-          this.value0 = value0;
-      };
-      $$String.create = function (value0) {
-          return new $$String(value0);
-      };
-      return $$String;
-  })();
-  var Ignore = (function () {
-      function Ignore(value0) {
-          this.value0 = value0;
-      };
-      Ignore.create = function (value0) {
-          return new Ignore(value0);
-      };
-      return Ignore;
-  })();
-  var toResponseType = function (v) {
-      if (v instanceof $$ArrayBuffer) {
-          return "arraybuffer";
-      };
-      if (v instanceof Blob) {
-          return "blob";
-      };
-      if (v instanceof Document) {
-          return "document";
-      };
-      if (v instanceof Json) {
-          return "text";
-      };
-      if (v instanceof $$String) {
-          return "text";
-      };
-      if (v instanceof Ignore) {
-          return "";
-      };
-      throw new Error("Failed pattern match at Affjax.ResponseFormat (line 46, column 3 - line 54, column 1): " + [ v.constructor.name ]);
-  };
-  var toMediaType = function (v) {
-      if (v instanceof Json) {
-          return new Data_Maybe.Just(Data_MediaType_Common.applicationJSON);
-      };
-      return Data_Maybe.Nothing.value;
-  };
-  var json = new Json(Control_Category.identity(Control_Category.categoryFn));
-  var ignore = new Ignore(Control_Category.identity(Control_Category.categoryFn));
-  exports["ArrayBuffer"] = $$ArrayBuffer;
-  exports["Blob"] = Blob;
-  exports["Document"] = Document;
-  exports["Json"] = Json;
-  exports["String"] = $$String;
-  exports["Ignore"] = Ignore;
-  exports["json"] = json;
-  exports["ignore"] = ignore;
-  exports["toResponseType"] = toResponseType;
-  exports["toMediaType"] = toMediaType;
-  exports["ResponseFormatError"] = ResponseFormatError;
-})(PS["Affjax.ResponseFormat"] = PS["Affjax.ResponseFormat"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.2
-  "use strict";
-  var Data_Eq = PS["Data.Eq"];
-  var Data_HeytingAlgebra = PS["Data.HeytingAlgebra"];
-  var Data_Semigroup = PS["Data.Semigroup"];
-  var Data_Show = PS["Data.Show"];
-  var Prelude = PS["Prelude"];                 
-  var ResponseHeader = (function () {
-      function ResponseHeader(value0, value1) {
-          this.value0 = value0;
-          this.value1 = value1;
-      };
-      ResponseHeader.create = function (value0) {
-          return function (value1) {
-              return new ResponseHeader(value0, value1);
-          };
-      };
-      return ResponseHeader;
-  })();
-  var responseHeader = function (field) {
-      return function (value) {
-          return new ResponseHeader(field, value);
-      };
-  };
-  exports["responseHeader"] = responseHeader;
-})(PS["Affjax.ResponseHeader"] = PS["Affjax.ResponseHeader"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.2
-  "use strict";
-  var Control_Alt = PS["Control.Alt"];
-  var Control_Alternative = PS["Control.Alternative"];
-  var Control_Applicative = PS["Control.Applicative"];
-  var Control_Apply = PS["Control.Apply"];
-  var Control_Bind = PS["Control.Bind"];
-  var Control_Monad_Cont_Trans = PS["Control.Monad.Cont.Trans"];
-  var Control_Monad_Except_Trans = PS["Control.Monad.Except.Trans"];
-  var Control_Monad_Maybe_Trans = PS["Control.Monad.Maybe.Trans"];
-  var Control_Monad_Reader_Trans = PS["Control.Monad.Reader.Trans"];
-  var Control_Monad_Writer_Trans = PS["Control.Monad.Writer.Trans"];
-  var Control_Plus = PS["Control.Plus"];
-  var Control_Semigroupoid = PS["Control.Semigroupoid"];
-  var Data_Either = PS["Data.Either"];
-  var Data_Function = PS["Data.Function"];
-  var Data_Functor = PS["Data.Functor"];
-  var Data_Functor_Compose = PS["Data.Functor.Compose"];
-  var Data_Maybe = PS["Data.Maybe"];
-  var Data_Newtype = PS["Data.Newtype"];
-  var Data_Unit = PS["Data.Unit"];
-  var Effect_Class = PS["Effect.Class"];
-  var Effect_Ref = PS["Effect.Ref"];
-  var Prelude = PS["Prelude"];
-  var Parallel = function (Applicative1, Monad0, parallel, sequential) {
-      this.Applicative1 = Applicative1;
-      this.Monad0 = Monad0;
-      this.parallel = parallel;
-      this.sequential = sequential;
-  };
-  var sequential = function (dict) {
-      return dict.sequential;
-  };
-  var parallel = function (dict) {
-      return dict.parallel;
-  };
-  exports["parallel"] = parallel;
-  exports["sequential"] = sequential;
-  exports["Parallel"] = Parallel;
-})(PS["Control.Parallel.Class"] = PS["Control.Parallel.Class"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.2
-  "use strict";
-  var Control_Alternative = PS["Control.Alternative"];
-  var Control_Apply = PS["Control.Apply"];
-  var Control_Category = PS["Control.Category"];
-  var Control_Parallel_Class = PS["Control.Parallel.Class"];
-  var Control_Semigroupoid = PS["Control.Semigroupoid"];
-  var Data_Foldable = PS["Data.Foldable"];
-  var Data_Traversable = PS["Data.Traversable"];
-  var Prelude = PS["Prelude"];                 
-  var parTraverse_ = function (dictParallel) {
-      return function (dictFoldable) {
-          return function (f) {
-              return function ($17) {
-                  return Control_Parallel_Class.sequential(dictParallel)(Data_Foldable.traverse_(dictParallel.Applicative1())(dictFoldable)(function ($18) {
-                      return Control_Parallel_Class.parallel(dictParallel)(f($18));
-                  })($17));
-              };
-          };
-      };
-  };
-  var parSequence_ = function (dictParallel) {
-      return function (dictFoldable) {
-          return parTraverse_(dictParallel)(dictFoldable)(Control_Category.identity(Control_Category.categoryFn));
-      };
-  };
-  exports["parTraverse_"] = parTraverse_;
-  exports["parSequence_"] = parSequence_;
-})(PS["Control.Parallel"] = PS["Control.Parallel"] || {});
-(function(exports) {
-    "use strict";
-
-  exports._jsonParser = function (fail, succ, s) {
-    try {
-      return succ(JSON.parse(s));
-    }
-    catch (e) {
-      return fail(e.message);
-    }
-  };
-})(PS["Data.Argonaut.Parser"] = PS["Data.Argonaut.Parser"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.2
-  "use strict";
-  var $foreign = PS["Data.Argonaut.Parser"];
-  var Data_Argonaut_Core = PS["Data.Argonaut.Core"];
-  var Data_Either = PS["Data.Either"];
-  var Data_Function_Uncurried = PS["Data.Function.Uncurried"];                 
-  var jsonParser = function (j) {
-      return $foreign["_jsonParser"](Data_Either.Left.create, Data_Either.Right.create, j);
-  };
-  exports["jsonParser"] = jsonParser;
-})(PS["Data.Argonaut.Parser"] = PS["Data.Argonaut.Parser"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.2
-  "use strict";
-  var Data_Either = PS["Data.Either"];
-  var Data_Eq = PS["Data.Eq"];
-  var Data_Ord = PS["Data.Ord"];
-  var Data_Ordering = PS["Data.Ordering"];
-  var Data_Semigroup = PS["Data.Semigroup"];
-  var Data_Show = PS["Data.Show"];
-  var Data_String = PS["Data.String"];
-  var Data_String_Common = PS["Data.String.Common"];
-  var Prelude = PS["Prelude"];                 
-  var OPTIONS = (function () {
-      function OPTIONS() {
-
-      };
-      OPTIONS.value = new OPTIONS();
-      return OPTIONS;
-  })();
-  var GET = (function () {
-      function GET() {
-
-      };
-      GET.value = new GET();
-      return GET;
-  })();
-  var HEAD = (function () {
-      function HEAD() {
-
-      };
-      HEAD.value = new HEAD();
-      return HEAD;
-  })();
-  var POST = (function () {
-      function POST() {
-
-      };
-      POST.value = new POST();
-      return POST;
-  })();
-  var PUT = (function () {
-      function PUT() {
-
-      };
-      PUT.value = new PUT();
-      return PUT;
-  })();
-  var DELETE = (function () {
-      function DELETE() {
-
-      };
-      DELETE.value = new DELETE();
-      return DELETE;
-  })();
-  var TRACE = (function () {
-      function TRACE() {
-
-      };
-      TRACE.value = new TRACE();
-      return TRACE;
-  })();
-  var CONNECT = (function () {
-      function CONNECT() {
-
-      };
-      CONNECT.value = new CONNECT();
-      return CONNECT;
-  })();
-  var PROPFIND = (function () {
-      function PROPFIND() {
-
-      };
-      PROPFIND.value = new PROPFIND();
-      return PROPFIND;
-  })();
-  var PROPPATCH = (function () {
-      function PROPPATCH() {
-
-      };
-      PROPPATCH.value = new PROPPATCH();
-      return PROPPATCH;
-  })();
-  var MKCOL = (function () {
-      function MKCOL() {
-
-      };
-      MKCOL.value = new MKCOL();
-      return MKCOL;
-  })();
-  var COPY = (function () {
-      function COPY() {
-
-      };
-      COPY.value = new COPY();
-      return COPY;
-  })();
-  var MOVE = (function () {
-      function MOVE() {
-
-      };
-      MOVE.value = new MOVE();
-      return MOVE;
-  })();
-  var LOCK = (function () {
-      function LOCK() {
-
-      };
-      LOCK.value = new LOCK();
-      return LOCK;
-  })();
-  var UNLOCK = (function () {
-      function UNLOCK() {
-
-      };
-      UNLOCK.value = new UNLOCK();
-      return UNLOCK;
-  })();
-  var PATCH = (function () {
-      function PATCH() {
-
-      };
-      PATCH.value = new PATCH();
-      return PATCH;
-  })();
-  var unCustomMethod = function (v) {
-      return v;
-  };
-  var showMethod = new Data_Show.Show(function (v) {
-      if (v instanceof OPTIONS) {
-          return "OPTIONS";
-      };
-      if (v instanceof GET) {
-          return "GET";
-      };
-      if (v instanceof HEAD) {
-          return "HEAD";
-      };
-      if (v instanceof POST) {
-          return "POST";
-      };
-      if (v instanceof PUT) {
-          return "PUT";
-      };
-      if (v instanceof DELETE) {
-          return "DELETE";
-      };
-      if (v instanceof TRACE) {
-          return "TRACE";
-      };
-      if (v instanceof CONNECT) {
-          return "CONNECT";
-      };
-      if (v instanceof PROPFIND) {
-          return "PROPFIND";
-      };
-      if (v instanceof PROPPATCH) {
-          return "PROPPATCH";
-      };
-      if (v instanceof MKCOL) {
-          return "MKCOL";
-      };
-      if (v instanceof COPY) {
-          return "COPY";
-      };
-      if (v instanceof MOVE) {
-          return "MOVE";
-      };
-      if (v instanceof LOCK) {
-          return "LOCK";
-      };
-      if (v instanceof UNLOCK) {
-          return "UNLOCK";
-      };
-      if (v instanceof PATCH) {
-          return "PATCH";
-      };
-      throw new Error("Failed pattern match at Data.HTTP.Method (line 40, column 1 - line 40, column 35): " + [ v.constructor.name ]);
-  });
-  var print = Data_Either.either(Data_Show.show(showMethod))(unCustomMethod);
-  exports["OPTIONS"] = OPTIONS;
-  exports["GET"] = GET;
-  exports["HEAD"] = HEAD;
-  exports["POST"] = POST;
-  exports["PUT"] = PUT;
-  exports["DELETE"] = DELETE;
-  exports["TRACE"] = TRACE;
-  exports["CONNECT"] = CONNECT;
-  exports["PROPFIND"] = PROPFIND;
-  exports["PROPPATCH"] = PROPPATCH;
-  exports["MKCOL"] = MKCOL;
-  exports["COPY"] = COPY;
-  exports["MOVE"] = MOVE;
-  exports["LOCK"] = LOCK;
-  exports["UNLOCK"] = UNLOCK;
-  exports["PATCH"] = PATCH;
-  exports["unCustomMethod"] = unCustomMethod;
-  exports["print"] = print;
-  exports["showMethod"] = showMethod;
-})(PS["Data.HTTP.Method"] = PS["Data.HTTP.Method"] || {});
-(function(exports) {
-    "use strict";
-
-  exports["null"] = null;
-
-  exports.nullable = function (a, r, f) {
-    return a == null ? r : f(a);
-  };
-
-  exports.notNull = function (x) {
-    return x;
-  };
-})(PS["Data.Nullable"] = PS["Data.Nullable"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.2
-  "use strict";
-  var $foreign = PS["Data.Nullable"];
-  var Control_Semigroupoid = PS["Control.Semigroupoid"];
-  var Data_Eq = PS["Data.Eq"];
-  var Data_Function = PS["Data.Function"];
-  var Data_Function_Uncurried = PS["Data.Function.Uncurried"];
-  var Data_Maybe = PS["Data.Maybe"];
-  var Data_Ord = PS["Data.Ord"];
-  var Data_Show = PS["Data.Show"];
-  var Prelude = PS["Prelude"];                 
-  var toNullable = Data_Maybe.maybe($foreign["null"])($foreign.notNull);
-  var toMaybe = function (n) {
-      return $foreign.nullable(n, Data_Maybe.Nothing.value, Data_Maybe.Just.create);
-  };
-  exports["toMaybe"] = toMaybe;
-  exports["toNullable"] = toNullable;
-})(PS["Data.Nullable"] = PS["Data.Nullable"] || {});
-(function(exports) {
-  /* globals setImmediate, clearImmediate, setTimeout, clearTimeout */
-  /* jshint -W083, -W098, -W003 */
-  "use strict";
-
-  var Aff = function () {
-    // A unique value for empty.
-    var EMPTY = {};
-
-    /*
-
-  An awkward approximation. We elide evidence we would otherwise need in PS for
-  efficiency sake.
-
-  data Aff eff a
-    = Pure a
-    | Throw Error
-    | Catch (Aff eff a) (Error -> Aff eff a)
-    | Sync (Eff eff a)
-    | Async ((Either Error a -> Eff eff Unit) -> Eff eff (Canceler eff))
-    | forall b. Bind (Aff eff b) (b -> Aff eff a)
-    | forall b. Bracket (Aff eff b) (BracketConditions eff b) (b -> Aff eff a)
-    | forall b. Fork Boolean (Aff eff b) ?(Fiber eff b -> a)
-    | Sequential (ParAff aff a)
-
-  */  
-    var PURE    = "Pure";
-    var THROW   = "Throw";
-    var CATCH   = "Catch";
-    var SYNC    = "Sync";
-    var ASYNC   = "Async";
-    var BIND    = "Bind";
-    var BRACKET = "Bracket";
-    var FORK    = "Fork";
-    var SEQ     = "Sequential";
-
-    /*
-
-  data ParAff eff a
-    = forall b. Map (b -> a) (ParAff eff b)
-    | forall b. Apply (ParAff eff (b -> a)) (ParAff eff b)
-    | Alt (ParAff eff a) (ParAff eff a)
-    | ?Par (Aff eff a)
-
-  */  
-    var MAP   = "Map";
-    var APPLY = "Apply";
-    var ALT   = "Alt";
-
-    // Various constructors used in interpretation
-    var CONS      = "Cons";      // Cons-list, for stacks
-    var RESUME    = "Resume";    // Continue indiscriminately
-    var RELEASE   = "Release";   // Continue with bracket finalizers
-    var FINALIZER = "Finalizer"; // A non-interruptible effect
-    var FINALIZED = "Finalized"; // Marker for finalization
-    var FORKED    = "Forked";    // Reference to a forked fiber, with resumption stack
-    var FIBER     = "Fiber";     // Actual fiber reference
-    var THUNK     = "Thunk";     // Primed effect, ready to invoke
-
-    function Aff(tag, _1, _2, _3) {
-      this.tag = tag;
-      this._1  = _1;
-      this._2  = _2;
-      this._3  = _3;
-    }
-
-    function AffCtr(tag) {
-      var fn = function (_1, _2, _3) {
-        return new Aff(tag, _1, _2, _3);
-      };
-      fn.tag = tag;
-      return fn;
-    }
-
-    function nonCanceler(error) {
-      return new Aff(PURE, void 0);
-    }
-
-    function runEff(eff) {
-      try {
-        eff();
-      } catch (error) {
-        setTimeout(function () {
-          throw error;
-        }, 0);
-      }
-    }
-
-    function runSync(left, right, eff) {
-      try {
-        return right(eff());
-      } catch (error) {
-        return left(error);
-      }
-    }
-
-    function runAsync(left, eff, k) {
-      try {
-        return eff(k)();
-      } catch (error) {
-        k(left(error))();
-        return nonCanceler;
-      }
-    }
-
-    var Scheduler = function () {
-      var limit    = 1024;
-      var size     = 0;
-      var ix       = 0;
-      var queue    = new Array(limit);
-      var draining = false;
-
-      function drain() {
-        var thunk;
-        draining = true;
-        while (size !== 0) {
-          size--;
-          thunk     = queue[ix];
-          queue[ix] = void 0;
-          ix        = (ix + 1) % limit;
-          thunk();
-        }
-        draining = false;
-      }
-
-      return {
-        isDraining: function () {
-          return draining;
-        },
-        enqueue: function (cb) {
-          var i, tmp;
-          if (size === limit) {
-            tmp = draining;
-            drain();
-            draining = tmp;
-          }
-
-          queue[(ix + size) % limit] = cb;
-          size++;
-
-          if (!draining) {
-            drain();
-          }
-        }
-      };
-    }();
-
-    function Supervisor(util) {
-      var fibers  = {};
-      var fiberId = 0;
-      var count   = 0;
-
-      return {
-        register: function (fiber) {
-          var fid = fiberId++;
-          fiber.onComplete({
-            rethrow: true,
-            handler: function (result) {
-              return function () {
-                count--;
-                delete fibers[fid];
-              };
-            }
-          });
-          fibers[fid] = fiber;
-          count++;
-        },
-        isEmpty: function () {
-          return count === 0;
-        },
-        killAll: function (killError, cb) {
-          return function () {
-            var killCount = 0;
-            var kills     = {};
-
-            function kill(fid) {
-              kills[fid] = fibers[fid].kill(killError, function (result) {
-                return function () {
-                  delete kills[fid];
-                  killCount--;
-                  if (util.isLeft(result) && util.fromLeft(result)) {
-                    setTimeout(function () {
-                      throw util.fromLeft(result);
-                    }, 0);
-                  }
-                  if (killCount === 0) {
-                    cb();
-                  }
-                };
-              })();
-            }
-
-            for (var k in fibers) {
-              if (fibers.hasOwnProperty(k)) {
-                killCount++;
-                kill(k);
-              }
-            }
-
-            fibers  = {};
-            fiberId = 0;
-            count   = 0;
-
-            return function (error) {
-              return new Aff(SYNC, function () {
-                for (var k in kills) {
-                  if (kills.hasOwnProperty(k)) {
-                    kills[k]();
-                  }
-                }
-              });
-            };
-          };
-        }
-      };
-    }
-
-    // Fiber state machine
-    var SUSPENDED   = 0; // Suspended, pending a join.
-    var CONTINUE    = 1; // Interpret the next instruction.
-    var STEP_BIND   = 2; // Apply the next bind.
-    var STEP_RESULT = 3; // Handle potential failure from a result.
-    var PENDING     = 4; // An async effect is running.
-    var RETURN      = 5; // The current stack has returned.
-    var COMPLETED   = 6; // The entire fiber has completed.
-
-    function Fiber(util, supervisor, aff) {
-      // Monotonically increasing tick, increased on each asynchronous turn.
-      var runTick = 0;
-
-      // The current branch of the state machine.
-      var status = SUSPENDED;
-
-      // The current point of interest for the state machine branch.
-      var step      = aff;  // Successful step
-      var fail      = null; // Failure step
-      var interrupt = null; // Asynchronous interrupt
-
-      // Stack of continuations for the current fiber.
-      var bhead = null;
-      var btail = null;
-
-      // Stack of attempts and finalizers for error recovery. Every `Cons` is also
-      // tagged with current `interrupt` state. We use this to track which items
-      // should be ignored or evaluated as a result of a kill.
-      var attempts = null;
-
-      // A special state is needed for Bracket, because it cannot be killed. When
-      // we enter a bracket acquisition or finalizer, we increment the counter,
-      // and then decrement once complete.
-      var bracketCount = 0;
-
-      // Each join gets a new id so they can be revoked.
-      var joinId  = 0;
-      var joins   = null;
-      var rethrow = true;
-
-      // Each invocation of `run` requires a tick. When an asynchronous effect is
-      // resolved, we must check that the local tick coincides with the fiber
-      // tick before resuming. This prevents multiple async continuations from
-      // accidentally resuming the same fiber. A common example may be invoking
-      // the provided callback in `makeAff` more than once, but it may also be an
-      // async effect resuming after the fiber was already cancelled.
-      function run(localRunTick) {
-        var tmp, result, attempt;
-        while (true) {
-          tmp       = null;
-          result    = null;
-          attempt   = null;
-
-          switch (status) {
-          case STEP_BIND:
-            status = CONTINUE;
-            step   = bhead(step);
-            if (btail === null) {
-              bhead = null;
-            } else {
-              bhead = btail._1;
-              btail = btail._2;
-            }
-            break;
-
-          case STEP_RESULT:
-            if (util.isLeft(step)) {
-              status = RETURN;
-              fail   = step;
-              step   = null;
-            } else if (bhead === null) {
-              status = RETURN;
-            } else {
-              status = STEP_BIND;
-              step   = util.fromRight(step);
-            }
-            break;
-
-          case CONTINUE:
-            switch (step.tag) {
-            case BIND:
-              if (bhead) {
-                btail = new Aff(CONS, bhead, btail);
-              }
-              bhead  = step._2;
-              status = CONTINUE;
-              step   = step._1;
-              break;
-
-            case PURE:
-              if (bhead === null) {
-                status = RETURN;
-                step   = util.right(step._1);
-              } else {
-                status = STEP_BIND;
-                step   = step._1;
-              }
-              break;
-
-            case SYNC:
-              status = STEP_RESULT;
-              step   = runSync(util.left, util.right, step._1);
-              break;
-
-            case ASYNC:
-              status = PENDING;
-              step   = runAsync(util.left, step._1, function (result) {
-                return function () {
-                  if (runTick !== localRunTick) {
-                    return;
-                  }
-                  runTick++;
-                  Scheduler.enqueue(function () {
-                    // It's possible to interrupt the fiber between enqueuing and
-                    // resuming, so we need to check that the runTick is still
-                    // valid.
-                    if (runTick !== localRunTick + 1) {
-                      return;
-                    }
-                    status = STEP_RESULT;
-                    step   = result;
-                    run(runTick);
-                  });
-                };
-              });
-              return;
-
-            case THROW:
-              status = RETURN;
-              fail   = util.left(step._1);
-              step   = null;
-              break;
-
-            // Enqueue the Catch so that we can call the error handler later on
-            // in case of an exception.
-            case CATCH:
-              if (bhead === null) {
-                attempts = new Aff(CONS, step, attempts, interrupt);
-              } else {
-                attempts = new Aff(CONS, step, new Aff(CONS, new Aff(RESUME, bhead, btail), attempts, interrupt), interrupt);
-              }
-              bhead    = null;
-              btail    = null;
-              status   = CONTINUE;
-              step     = step._1;
-              break;
-
-            // Enqueue the Bracket so that we can call the appropriate handlers
-            // after resource acquisition.
-            case BRACKET:
-              bracketCount++;
-              if (bhead === null) {
-                attempts = new Aff(CONS, step, attempts, interrupt);
-              } else {
-                attempts = new Aff(CONS, step, new Aff(CONS, new Aff(RESUME, bhead, btail), attempts, interrupt), interrupt);
-              }
-              bhead  = null;
-              btail  = null;
-              status = CONTINUE;
-              step   = step._1;
-              break;
-
-            case FORK:
-              status = STEP_RESULT;
-              tmp    = Fiber(util, supervisor, step._2);
-              if (supervisor) {
-                supervisor.register(tmp);
-              }
-              if (step._1) {
-                tmp.run();
-              }
-              step = util.right(tmp);
-              break;
-
-            case SEQ:
-              status = CONTINUE;
-              step   = sequential(util, supervisor, step._1);
-              break;
-            }
-            break;
-
-          case RETURN:
-            bhead = null;
-            btail = null;
-            // If the current stack has returned, and we have no other stacks to
-            // resume or finalizers to run, the fiber has halted and we can
-            // invoke all join callbacks. Otherwise we need to resume.
-            if (attempts === null) {
-              status = COMPLETED;
-              step   = interrupt || fail || step;
-            } else {
-              // The interrupt status for the enqueued item.
-              tmp      = attempts._3;
-              attempt  = attempts._1;
-              attempts = attempts._2;
-
-              switch (attempt.tag) {
-              // We cannot recover from an interrupt. Otherwise we should
-              // continue stepping, or run the exception handler if an exception
-              // was raised.
-              case CATCH:
-                // We should compare the interrupt status as well because we
-                // only want it to apply if there has been an interrupt since
-                // enqueuing the catch.
-                if (interrupt && interrupt !== tmp) {
-                  status = RETURN;
-                } else if (fail) {
-                  status = CONTINUE;
-                  step   = attempt._2(util.fromLeft(fail));
-                  fail   = null;
-                }
-                break;
-
-              // We cannot resume from an interrupt or exception.
-              case RESUME:
-                // As with Catch, we only want to ignore in the case of an
-                // interrupt since enqueing the item.
-                if (interrupt && interrupt !== tmp || fail) {
-                  status = RETURN;
-                } else {
-                  bhead  = attempt._1;
-                  btail  = attempt._2;
-                  status = STEP_BIND;
-                  step   = util.fromRight(step);
-                }
-                break;
-
-              // If we have a bracket, we should enqueue the handlers,
-              // and continue with the success branch only if the fiber has
-              // not been interrupted. If the bracket acquisition failed, we
-              // should not run either.
-              case BRACKET:
-                bracketCount--;
-                if (fail === null) {
-                  result   = util.fromRight(step);
-                  // We need to enqueue the Release with the same interrupt
-                  // status as the Bracket that is initiating it.
-                  attempts = new Aff(CONS, new Aff(RELEASE, attempt._2, result), attempts, tmp);
-                  // We should only coninue as long as the interrupt status has not changed or
-                  // we are currently within a non-interruptable finalizer.
-                  if (interrupt === tmp || bracketCount > 0) {
-                    status = CONTINUE;
-                    step   = attempt._3(result);
-                  }
-                }
-                break;
-
-              // Enqueue the appropriate handler. We increase the bracket count
-              // because it should not be cancelled.
-              case RELEASE:
-                bracketCount++;
-                attempts = new Aff(CONS, new Aff(FINALIZED, step, fail), attempts, interrupt);
-                status   = CONTINUE;
-                // It has only been killed if the interrupt status has changed
-                // since we enqueued the item.
-                if (interrupt && interrupt !== tmp) {
-                  step = attempt._1.killed(util.fromLeft(interrupt))(attempt._2);
-                } else if (fail) {
-                  step = attempt._1.failed(util.fromLeft(fail))(attempt._2);
-                } else {
-                  step = attempt._1.completed(util.fromRight(step))(attempt._2);
-                }
-                fail = null;
-                break;
-
-              case FINALIZER:
-                bracketCount++;
-                attempts = new Aff(CONS, new Aff(FINALIZED, step, fail), attempts, interrupt);
-                status   = CONTINUE;
-                step     = attempt._1;
-                break;
-
-              case FINALIZED:
-                bracketCount--;
-                status = RETURN;
-                step   = attempt._1;
-                fail   = attempt._2;
-                break;
-              }
-            }
-            break;
-
-          case COMPLETED:
-            for (var k in joins) {
-              if (joins.hasOwnProperty(k)) {
-                rethrow = rethrow && joins[k].rethrow;
-                runEff(joins[k].handler(step));
-              }
-            }
-            joins = null;
-            // If we have an interrupt and a fail, then the thread threw while
-            // running finalizers. This should always rethrow in a fresh stack.
-            if (interrupt && fail) {
-              setTimeout(function () {
-                throw util.fromLeft(fail);
-              }, 0);
-            // If we have an unhandled exception, and no other fiber has joined
-            // then we need to throw the exception in a fresh stack.
-            } else if (util.isLeft(step) && rethrow) {
-              setTimeout(function () {
-                // Guard on reathrow because a completely synchronous fiber can
-                // still have an observer which was added after-the-fact.
-                if (rethrow) {
-                  throw util.fromLeft(step);
-                }
-              }, 0);
-            }
-            return;
-          case SUSPENDED:
-            status = CONTINUE;
-            break;
-          case PENDING: return;
-          }
-        }
-      }
-
-      function onComplete(join) {
-        return function () {
-          if (status === COMPLETED) {
-            rethrow = rethrow && join.rethrow;
-            join.handler(step)();
-            return function () {};
-          }
-
-          var jid    = joinId++;
-          joins      = joins || {};
-          joins[jid] = join;
-
-          return function() {
-            if (joins !== null) {
-              delete joins[jid];
-            }
-          };
-        };
-      }
-
-      function kill(error, cb) {
-        return function () {
-          if (status === COMPLETED) {
-            cb(util.right(void 0))();
-            return function () {};
-          }
-
-          var canceler = onComplete({
-            rethrow: false,
-            handler: function (/* unused */) {
-              return cb(util.right(void 0));
-            }
-          })();
-
-          switch (status) {
-          case SUSPENDED:
-            interrupt = util.left(error);
-            status    = COMPLETED;
-            step      = interrupt;
-            run(runTick);
-            break;
-          case PENDING:
-            if (interrupt === null) {
-              interrupt = util.left(error);
-            }
-            if (bracketCount === 0) {
-              if (status === PENDING) {
-                attempts = new Aff(CONS, new Aff(FINALIZER, step(error)), attempts, interrupt);
-              }
-              status   = RETURN;
-              step     = null;
-              fail     = null;
-              run(++runTick);
-            }
-            break;
-          default:
-            if (interrupt === null) {
-              interrupt = util.left(error);
-            }
-            if (bracketCount === 0) {
-              status = RETURN;
-              step   = null;
-              fail   = null;
-            }
-          }
-
-          return canceler;
-        };
-      }
-
-      function join(cb) {
-        return function () {
-          var canceler = onComplete({
-            rethrow: false,
-            handler: cb
-          })();
-          if (status === SUSPENDED) {
-            run(runTick);
-          }
-          return canceler;
-        };
-      }
-
-      return {
-        kill: kill,
-        join: join,
-        onComplete: onComplete,
-        isSuspended: function () {
-          return status === SUSPENDED;
-        },
-        run: function () {
-          if (status === SUSPENDED) {
-            if (!Scheduler.isDraining()) {
-              Scheduler.enqueue(function () {
-                run(runTick);
-              });
-            } else {
-              run(runTick);
-            }
-          }
-        }
-      };
-    }
-
-    function runPar(util, supervisor, par, cb) {
-      // Table of all forked fibers.
-      var fiberId   = 0;
-      var fibers    = {};
-
-      // Table of currently running cancelers, as a product of `Alt` behavior.
-      var killId    = 0;
-      var kills     = {};
-
-      // Error used for early cancelation on Alt branches.
-      var early     = new Error("[ParAff] Early exit");
-
-      // Error used to kill the entire tree.
-      var interrupt = null;
-
-      // The root pointer of the tree.
-      var root      = EMPTY;
-
-      // Walks a tree, invoking all the cancelers. Returns the table of pending
-      // cancellation fibers.
-      function kill(error, par, cb) {
-        var step  = par;
-        var head  = null;
-        var tail  = null;
-        var count = 0;
-        var kills = {};
-        var tmp, kid;
-
-        loop: while (true) {
-          tmp = null;
-
-          switch (step.tag) {
-          case FORKED:
-            if (step._3 === EMPTY) {
-              tmp = fibers[step._1];
-              kills[count++] = tmp.kill(error, function (result) {
-                return function () {
-                  count--;
-                  if (count === 0) {
-                    cb(result)();
-                  }
-                };
-              });
-            }
-            // Terminal case.
-            if (head === null) {
-              break loop;
-            }
-            // Go down the right side of the tree.
-            step = head._2;
-            if (tail === null) {
-              head = null;
-            } else {
-              head = tail._1;
-              tail = tail._2;
-            }
-            break;
-          case MAP:
-            step = step._2;
-            break;
-          case APPLY:
-          case ALT:
-            if (head) {
-              tail = new Aff(CONS, head, tail);
-            }
-            head = step;
-            step = step._1;
-            break;
-          }
-        }
-
-        if (count === 0) {
-          cb(util.right(void 0))();
-        } else {
-          // Run the cancelation effects. We alias `count` because it's mutable.
-          kid = 0;
-          tmp = count;
-          for (; kid < tmp; kid++) {
-            kills[kid] = kills[kid]();
-          }
-        }
-
-        return kills;
-      }
-
-      // When a fiber resolves, we need to bubble back up the tree with the
-      // result, computing the applicative nodes.
-      function join(result, head, tail) {
-        var fail, step, lhs, rhs, tmp, kid;
-
-        if (util.isLeft(result)) {
-          fail = result;
-          step = null;
-        } else {
-          step = result;
-          fail = null;
-        }
-
-        loop: while (true) {
-          lhs = null;
-          rhs = null;
-          tmp = null;
-          kid = null;
-
-          // We should never continue if the entire tree has been interrupted.
-          if (interrupt !== null) {
-            return;
-          }
-
-          // We've made it all the way to the root of the tree, which means
-          // the tree has fully evaluated.
-          if (head === null) {
-            cb(fail || step)();
-            return;
-          }
-
-          // The tree has already been computed, so we shouldn't try to do it
-          // again. This should never happen.
-          // TODO: Remove this?
-          if (head._3 !== EMPTY) {
-            return;
-          }
-
-          switch (head.tag) {
-          case MAP:
-            if (fail === null) {
-              head._3 = util.right(head._1(util.fromRight(step)));
-              step    = head._3;
-            } else {
-              head._3 = fail;
-            }
-            break;
-          case APPLY:
-            lhs = head._1._3;
-            rhs = head._2._3;
-            // If we have a failure we should kill the other side because we
-            // can't possible yield a result anymore.
-            if (fail) {
-              head._3 = fail;
-              tmp     = true;
-              kid     = killId++;
-
-              kills[kid] = kill(early, fail === lhs ? head._2 : head._1, function (/* unused */) {
-                return function () {
-                  delete kills[kid];
-                  if (tmp) {
-                    tmp = false;
-                  } else if (tail === null) {
-                    join(fail, null, null);
-                  } else {
-                    join(fail, tail._1, tail._2);
-                  }
-                };
-              });
-
-              if (tmp) {
-                tmp = false;
-                return;
-              }
-            } else if (lhs === EMPTY || rhs === EMPTY) {
-              // We can only proceed if both sides have resolved.
-              return;
-            } else {
-              step    = util.right(util.fromRight(lhs)(util.fromRight(rhs)));
-              head._3 = step;
-            }
-            break;
-          case ALT:
-            lhs = head._1._3;
-            rhs = head._2._3;
-            // We can only proceed if both have resolved or we have a success
-            if (lhs === EMPTY && util.isLeft(rhs) || rhs === EMPTY && util.isLeft(lhs)) {
-              return;
-            }
-            // If both sides resolve with an error, we should continue with the
-            // first error
-            if (lhs !== EMPTY && util.isLeft(lhs) && rhs !== EMPTY && util.isLeft(rhs)) {
-              fail    = step === lhs ? rhs : lhs;
-              step    = null;
-              head._3 = fail;
-            } else {
-              head._3 = step;
-              tmp     = true;
-              kid     = killId++;
-              // Once a side has resolved, we need to cancel the side that is still
-              // pending before we can continue.
-              kills[kid] = kill(early, step === lhs ? head._2 : head._1, function (/* unused */) {
-                return function () {
-                  delete kills[kid];
-                  if (tmp) {
-                    tmp = false;
-                  } else if (tail === null) {
-                    join(step, null, null);
-                  } else {
-                    join(step, tail._1, tail._2);
-                  }
-                };
-              });
-
-              if (tmp) {
-                tmp = false;
-                return;
-              }
-            }
-            break;
-          }
-
-          if (tail === null) {
-            head = null;
-          } else {
-            head = tail._1;
-            tail = tail._2;
-          }
-        }
-      }
-
-      function resolve(fiber) {
-        return function (result) {
-          return function () {
-            delete fibers[fiber._1];
-            fiber._3 = result;
-            join(result, fiber._2._1, fiber._2._2);
-          };
-        };
-      }
-
-      // Walks the applicative tree, substituting non-applicative nodes with
-      // `FORKED` nodes. In this tree, all applicative nodes use the `_3` slot
-      // as a mutable slot for memoization. In an unresolved state, the `_3`
-      // slot is `EMPTY`. In the cases of `ALT` and `APPLY`, we always walk
-      // the left side first, because both operations are left-associative. As
-      // we `RETURN` from those branches, we then walk the right side.
-      function run() {
-        var status = CONTINUE;
-        var step   = par;
-        var head   = null;
-        var tail   = null;
-        var tmp, fid;
-
-        loop: while (true) {
-          tmp = null;
-          fid = null;
-
-          switch (status) {
-          case CONTINUE:
-            switch (step.tag) {
-            case MAP:
-              if (head) {
-                tail = new Aff(CONS, head, tail);
-              }
-              head = new Aff(MAP, step._1, EMPTY, EMPTY);
-              step = step._2;
-              break;
-            case APPLY:
-              if (head) {
-                tail = new Aff(CONS, head, tail);
-              }
-              head = new Aff(APPLY, EMPTY, step._2, EMPTY);
-              step = step._1;
-              break;
-            case ALT:
-              if (head) {
-                tail = new Aff(CONS, head, tail);
-              }
-              head = new Aff(ALT, EMPTY, step._2, EMPTY);
-              step = step._1;
-              break;
-            default:
-              // When we hit a leaf value, we suspend the stack in the `FORKED`.
-              // When the fiber resolves, it can bubble back up the tree.
-              fid    = fiberId++;
-              status = RETURN;
-              tmp    = step;
-              step   = new Aff(FORKED, fid, new Aff(CONS, head, tail), EMPTY);
-              tmp    = Fiber(util, supervisor, tmp);
-              tmp.onComplete({
-                rethrow: false,
-                handler: resolve(step)
-              })();
-              fibers[fid] = tmp;
-              if (supervisor) {
-                supervisor.register(tmp);
-              }
-            }
-            break;
-          case RETURN:
-            // Terminal case, we are back at the root.
-            if (head === null) {
-              break loop;
-            }
-            // If we are done with the right side, we need to continue down the
-            // left. Otherwise we should continue up the stack.
-            if (head._1 === EMPTY) {
-              head._1 = step;
-              status  = CONTINUE;
-              step    = head._2;
-              head._2 = EMPTY;
-            } else {
-              head._2 = step;
-              step    = head;
-              if (tail === null) {
-                head  = null;
-              } else {
-                head  = tail._1;
-                tail  = tail._2;
-              }
-            }
-          }
-        }
-
-        // Keep a reference to the tree root so it can be cancelled.
-        root = step;
-
-        for (fid = 0; fid < fiberId; fid++) {
-          fibers[fid].run();
-        }
-      }
-
-      // Cancels the entire tree. If there are already subtrees being canceled,
-      // we need to first cancel those joins. We will then add fresh joins for
-      // all pending branches including those that were in the process of being
-      // canceled.
-      function cancel(error, cb) {
-        interrupt = util.left(error);
-        var innerKills;
-        for (var kid in kills) {
-          if (kills.hasOwnProperty(kid)) {
-            innerKills = kills[kid];
-            for (kid in innerKills) {
-              if (innerKills.hasOwnProperty(kid)) {
-                innerKills[kid]();
-              }
-            }
-          }
-        }
-
-        kills = null;
-        var newKills = kill(error, root, cb);
-
-        return function (killError) {
-          return new Aff(ASYNC, function (killCb) {
-            return function () {
-              for (var kid in newKills) {
-                if (newKills.hasOwnProperty(kid)) {
-                  newKills[kid]();
-                }
-              }
-              return nonCanceler;
-            };
-          });
-        };
-      }
-
-      run();
-
-      return function (killError) {
-        return new Aff(ASYNC, function (killCb) {
-          return function () {
-            return cancel(killError, killCb);
-          };
-        });
-      };
-    }
-
-    function sequential(util, supervisor, par) {
-      return new Aff(ASYNC, function (cb) {
-        return function () {
-          return runPar(util, supervisor, par, cb);
-        };
-      });
-    }
-
-    Aff.EMPTY       = EMPTY;
-    Aff.Pure        = AffCtr(PURE);
-    Aff.Throw       = AffCtr(THROW);
-    Aff.Catch       = AffCtr(CATCH);
-    Aff.Sync        = AffCtr(SYNC);
-    Aff.Async       = AffCtr(ASYNC);
-    Aff.Bind        = AffCtr(BIND);
-    Aff.Bracket     = AffCtr(BRACKET);
-    Aff.Fork        = AffCtr(FORK);
-    Aff.Seq         = AffCtr(SEQ);
-    Aff.ParMap      = AffCtr(MAP);
-    Aff.ParApply    = AffCtr(APPLY);
-    Aff.ParAlt      = AffCtr(ALT);
-    Aff.Fiber       = Fiber;
-    Aff.Supervisor  = Supervisor;
-    Aff.Scheduler   = Scheduler;
-    Aff.nonCanceler = nonCanceler;
-
-    return Aff;
-  }();
-
-  exports._pure = Aff.Pure;
-
-  exports._throwError = Aff.Throw;
-
-  exports._catchError = function (aff) {
-    return function (k) {
-      return Aff.Catch(aff, k);
-    };
-  };
-
-  exports._map = function (f) {
-    return function (aff) {
-      if (aff.tag === Aff.Pure.tag) {
-        return Aff.Pure(f(aff._1));
-      } else {
-        return Aff.Bind(aff, function (value) {
-          return Aff.Pure(f(value));
-        });
-      }
-    };
-  };
-
-  exports._bind = function (aff) {
-    return function (k) {
-      return Aff.Bind(aff, k);
-    };
-  };
-
-  exports._fork = function (immediate) {
-    return function (aff) {
-      return Aff.Fork(immediate, aff);
-    };
-  };
-
-  exports._liftEffect = Aff.Sync;
-
-  exports._parAffMap = function (f) {
-    return function (aff) {
-      return Aff.ParMap(f, aff);
-    };
-  };
-
-  exports._parAffApply = function (aff1) {
-    return function (aff2) {
-      return Aff.ParApply(aff1, aff2);
-    };
-  };
-
-  exports.makeAff = Aff.Async;
-
-  exports._makeFiber = function (util, aff) {
-    return function () {
-      return Aff.Fiber(util, null, aff);
-    };
-  };  
-
-  exports._sequential = Aff.Seq;
-})(PS["Effect.Aff"] = PS["Effect.Aff"] || {});
-(function(exports) {
-    "use strict";
-
-  exports.error = function (msg) {
-    return new Error(msg);
-  };
-
-  exports.throwException = function (e) {
-    return function () {
-      throw e;
-    };
-  };
-})(PS["Effect.Exception"] = PS["Effect.Exception"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.2
-  "use strict";
-  var $foreign = PS["Effect.Exception"];
-  var Control_Applicative = PS["Control.Applicative"];
-  var Control_Semigroupoid = PS["Control.Semigroupoid"];
-  var Data_Either = PS["Data.Either"];
-  var Data_Functor = PS["Data.Functor"];
-  var Data_Maybe = PS["Data.Maybe"];
-  var Data_Show = PS["Data.Show"];
-  var Effect = PS["Effect"];
-  var Prelude = PS["Prelude"];
-  var $$throw = function ($1) {
-      return $foreign.throwException($foreign.error($1));
-  };
-  exports["throw"] = $$throw;
-  exports["error"] = $foreign.error;
-  exports["throwException"] = $foreign.throwException;
-})(PS["Effect.Exception"] = PS["Effect.Exception"] || {});
-(function(exports) {
-    "use strict";
-
-  exports.unsafePerformEffect = function (f) {
-    return f();
-  };
-})(PS["Effect.Unsafe"] = PS["Effect.Unsafe"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.2
-  "use strict";
-  var $foreign = PS["Effect.Unsafe"];
-  var Effect = PS["Effect"];
-  exports["unsafePerformEffect"] = $foreign.unsafePerformEffect;
-})(PS["Effect.Unsafe"] = PS["Effect.Unsafe"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.2
-  "use strict";
-  var $foreign = PS["Effect.Aff"];
-  var Control_Alt = PS["Control.Alt"];
-  var Control_Alternative = PS["Control.Alternative"];
-  var Control_Applicative = PS["Control.Applicative"];
-  var Control_Apply = PS["Control.Apply"];
-  var Control_Bind = PS["Control.Bind"];
-  var Control_Lazy = PS["Control.Lazy"];
-  var Control_Monad = PS["Control.Monad"];
-  var Control_Monad_Error_Class = PS["Control.Monad.Error.Class"];
-  var Control_Monad_Rec_Class = PS["Control.Monad.Rec.Class"];
-  var Control_Parallel = PS["Control.Parallel"];
-  var Control_Parallel_Class = PS["Control.Parallel.Class"];
-  var Control_Plus = PS["Control.Plus"];
-  var Control_Semigroupoid = PS["Control.Semigroupoid"];
-  var Data_Either = PS["Data.Either"];
-  var Data_Foldable = PS["Data.Foldable"];
-  var Data_Function = PS["Data.Function"];
-  var Data_Function_Uncurried = PS["Data.Function.Uncurried"];
-  var Data_Functor = PS["Data.Functor"];
-  var Data_Monoid = PS["Data.Monoid"];
-  var Data_Newtype = PS["Data.Newtype"];
-  var Data_Semigroup = PS["Data.Semigroup"];
-  var Data_Time_Duration = PS["Data.Time.Duration"];
-  var Data_Unit = PS["Data.Unit"];
-  var Effect = PS["Effect"];
-  var Effect_Class = PS["Effect.Class"];
-  var Effect_Exception = PS["Effect.Exception"];
-  var Effect_Unsafe = PS["Effect.Unsafe"];
-  var Partial_Unsafe = PS["Partial.Unsafe"];
-  var Prelude = PS["Prelude"];
-  var Unsafe_Coerce = PS["Unsafe.Coerce"];
-  var Canceler = function (x) {
-      return x;
-  };
-  var suspendAff = $foreign["_fork"](false);
-  var functorParAff = new Data_Functor.Functor($foreign["_parAffMap"]);
-  var functorAff = new Data_Functor.Functor($foreign["_map"]);
-  var forkAff = $foreign["_fork"](true);
-  var ffiUtil = (function () {
-      var unsafeFromRight = function (v) {
-          if (v instanceof Data_Either.Right) {
-              return v.value0;
-          };
-          if (v instanceof Data_Either.Left) {
-              return Partial_Unsafe.unsafeCrashWith("unsafeFromRight: Left");
-          };
-          throw new Error("Failed pattern match at Effect.Aff (line 400, column 21 - line 402, column 31): " + [ v.constructor.name ]);
-      };
-      var unsafeFromLeft = function (v) {
-          if (v instanceof Data_Either.Left) {
-              return v.value0;
-          };
-          if (v instanceof Data_Either.Right) {
-              return Partial_Unsafe.unsafeCrashWith("unsafeFromLeft: Right");
-          };
-          throw new Error("Failed pattern match at Effect.Aff (line 395, column 20 - line 399, column 3): " + [ v.constructor.name ]);
-      };
-      var isLeft = function (v) {
-          if (v instanceof Data_Either.Left) {
-              return true;
-          };
-          if (v instanceof Data_Either.Right) {
-              return false;
-          };
-          throw new Error("Failed pattern match at Effect.Aff (line 390, column 12 - line 392, column 20): " + [ v.constructor.name ]);
-      };
-      return {
-          isLeft: isLeft,
-          fromLeft: unsafeFromLeft,
-          fromRight: unsafeFromRight,
-          left: Data_Either.Left.create,
-          right: Data_Either.Right.create
-      };
-  })();
-  var makeFiber = function (aff) {
-      return $foreign["_makeFiber"](ffiUtil, aff);
-  };
-  var launchAff = function (aff) {
-      return function __do() {
-          var v = makeFiber(aff)();
-          v.run();
-          return v;
-      };
-  };
-  var applyParAff = new Control_Apply.Apply(function () {
-      return functorParAff;
-  }, $foreign["_parAffApply"]);
-  var monadAff = new Control_Monad.Monad(function () {
-      return applicativeAff;
-  }, function () {
-      return bindAff;
-  });
-  var bindAff = new Control_Bind.Bind(function () {
-      return applyAff;
-  }, $foreign["_bind"]);
-  var applyAff = new Control_Apply.Apply(function () {
-      return functorAff;
-  }, Control_Monad.ap(monadAff));
-  var applicativeAff = new Control_Applicative.Applicative(function () {
-      return applyAff;
-  }, $foreign["_pure"]);
-  var monadEffectAff = new Effect_Class.MonadEffect(function () {
-      return monadAff;
-  }, $foreign["_liftEffect"]);
-  var effectCanceler = function ($50) {
-      return Canceler(Data_Function["const"](Effect_Class.liftEffect(monadEffectAff)($50)));
-  };
-  var joinFiber = function (v) {
-      return $foreign.makeAff(function (k) {
-          return Data_Functor.map(Effect.functorEffect)(effectCanceler)(v.join(k));
-      });
-  };
-  var functorFiber = new Data_Functor.Functor(function (f) {
-      return function (t) {
-          return Effect_Unsafe.unsafePerformEffect(makeFiber(Data_Functor.map(functorAff)(f)(joinFiber(t))));
-      };
-  });
-  var killFiber = function (e) {
-      return function (v) {
-          return Control_Bind.bind(bindAff)(Effect_Class.liftEffect(monadEffectAff)(v.isSuspended))(function (v1) {
-              if (v1) {
-                  return Effect_Class.liftEffect(monadEffectAff)(Data_Functor["void"](Effect.functorEffect)(v.kill(e, Data_Function["const"](Control_Applicative.pure(Effect.applicativeEffect)(Data_Unit.unit)))));
-              };
-              return $foreign.makeAff(function (k) {
-                  return Data_Functor.map(Effect.functorEffect)(effectCanceler)(v.kill(e, k));
-              });
-          });
-      };
-  };
-  var monadThrowAff = new Control_Monad_Error_Class.MonadThrow(function () {
-      return monadAff;
-  }, $foreign["_throwError"]);
-  var monadErrorAff = new Control_Monad_Error_Class.MonadError(function () {
-      return monadThrowAff;
-  }, $foreign["_catchError"]);                                  
-  var runAff = function (k) {
-      return function (aff) {
-          return launchAff(Control_Bind.bindFlipped(bindAff)(function ($52) {
-              return Effect_Class.liftEffect(monadEffectAff)(k($52));
-          })(Control_Monad_Error_Class["try"](monadErrorAff)(aff)));
-      };
-  };
-  var runAff_ = function (k) {
-      return function (aff) {
-          return Data_Functor["void"](Effect.functorEffect)(runAff(k)(aff));
-      };
-  };
-  var parallelAff = new Control_Parallel_Class.Parallel(function () {
-      return applicativeParAff;
-  }, function () {
-      return monadAff;
-  }, Unsafe_Coerce.unsafeCoerce, $foreign["_sequential"]);
-  var applicativeParAff = new Control_Applicative.Applicative(function () {
-      return applyParAff;
-  }, function ($54) {
-      return Control_Parallel_Class.parallel(parallelAff)(Control_Applicative.pure(applicativeAff)($54));
-  });
-  var monadRecAff = new Control_Monad_Rec_Class.MonadRec(function () {
-      return monadAff;
-  }, function (k) {
-      var go = function (a) {
-          return Control_Bind.bind(bindAff)(k(a))(function (v) {
-              if (v instanceof Control_Monad_Rec_Class.Done) {
-                  return Control_Applicative.pure(applicativeAff)(v.value0);
-              };
-              if (v instanceof Control_Monad_Rec_Class.Loop) {
-                  return go(v.value0);
-              };
-              throw new Error("Failed pattern match at Effect.Aff (line 100, column 7 - line 102, column 22): " + [ v.constructor.name ]);
-          });
-      };
-      return go;
-  });
-  var nonCanceler = Data_Function["const"](Control_Applicative.pure(applicativeAff)(Data_Unit.unit));
-  exports["Canceler"] = Canceler;
-  exports["launchAff"] = launchAff;
-  exports["runAff"] = runAff;
-  exports["runAff_"] = runAff_;
-  exports["forkAff"] = forkAff;
-  exports["suspendAff"] = suspendAff;
-  exports["killFiber"] = killFiber;
-  exports["joinFiber"] = joinFiber;
-  exports["nonCanceler"] = nonCanceler;
-  exports["effectCanceler"] = effectCanceler;
-  exports["functorAff"] = functorAff;
-  exports["applyAff"] = applyAff;
-  exports["applicativeAff"] = applicativeAff;
-  exports["bindAff"] = bindAff;
-  exports["monadAff"] = monadAff;
-  exports["monadRecAff"] = monadRecAff;
-  exports["monadThrowAff"] = monadThrowAff;
-  exports["monadErrorAff"] = monadErrorAff;
-  exports["monadEffectAff"] = monadEffectAff;
-  exports["functorParAff"] = functorParAff;
-  exports["applyParAff"] = applyParAff;
-  exports["applicativeParAff"] = applicativeParAff;
-  exports["parallelAff"] = parallelAff;
-  exports["functorFiber"] = functorFiber;
-  exports["makeAff"] = $foreign.makeAff;
-})(PS["Effect.Aff"] = PS["Effect.Aff"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.2
-  "use strict";
-  var Control_Applicative = PS["Control.Applicative"];
-  var Control_Bind = PS["Control.Bind"];
-  var Control_Semigroupoid = PS["Control.Semigroupoid"];
-  var Data_Either = PS["Data.Either"];
-  var Data_Function = PS["Data.Function"];
-  var Effect = PS["Effect"];
-  var Effect_Aff = PS["Effect.Aff"];
-  var Effect_Exception = PS["Effect.Exception"];
-  var Effect_Uncurried = PS["Effect.Uncurried"];
-  var Prelude = PS["Prelude"];
-  var fromEffectFnAff = function (v) {
-      return Effect_Aff.makeAff(function (k) {
-          return function __do() {
-              var v1 = v(function ($4) {
-                  return k(Data_Either.Left.create($4))();
-              }, function ($5) {
-                  return k(Data_Either.Right.create($5))();
-              });
-              return function (e) {
-                  return Effect_Aff.makeAff(function (k2) {
-                      return function __do() {
-                          v1(e, function ($6) {
-                              return k2(Data_Either.Left.create($6))();
-                          }, function ($7) {
-                              return k2(Data_Either.Right.create($7))();
-                          });
-                          return Effect_Aff.nonCanceler;
-                      };
-                  });
-              };
-          };
-      });
-  };
-  exports["fromEffectFnAff"] = fromEffectFnAff;
-})(PS["Effect.Aff.Compat"] = PS["Effect.Aff.Compat"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.2
-  "use strict";
-  var $foreign = PS["Affjax"];
-  var Affjax_RequestBody = PS["Affjax.RequestBody"];
-  var Affjax_RequestHeader = PS["Affjax.RequestHeader"];
-  var Affjax_ResponseFormat = PS["Affjax.ResponseFormat"];
-  var Affjax_ResponseHeader = PS["Affjax.ResponseHeader"];
-  var Affjax_StatusCode = PS["Affjax.StatusCode"];
-  var Control_Applicative = PS["Control.Applicative"];
-  var Control_Bind = PS["Control.Bind"];
-  var Control_Monad_Error_Class = PS["Control.Monad.Error.Class"];
-  var Control_Monad_Except = PS["Control.Monad.Except"];
-  var Control_Monad_Except_Trans = PS["Control.Monad.Except.Trans"];
-  var Control_Parallel = PS["Control.Parallel"];
-  var Control_Semigroupoid = PS["Control.Semigroupoid"];
-  var Data_Argonaut_Core = PS["Data.Argonaut.Core"];
-  var Data_Argonaut_Parser = PS["Data.Argonaut.Parser"];
-  var Data_Array = PS["Data.Array"];
-  var Data_Either = PS["Data.Either"];
-  var Data_Eq = PS["Data.Eq"];
-  var Data_Foldable = PS["Data.Foldable"];
-  var Data_FormURLEncoded = PS["Data.FormURLEncoded"];
-  var Data_Function = PS["Data.Function"];
-  var Data_Function_Uncurried = PS["Data.Function.Uncurried"];
-  var Data_Functor = PS["Data.Functor"];
-  var Data_HTTP_Method = PS["Data.HTTP.Method"];
-  var Data_HeytingAlgebra = PS["Data.HeytingAlgebra"];
-  var Data_Identity = PS["Data.Identity"];
-  var Data_Int = PS["Data.Int"];
-  var Data_List_NonEmpty = PS["Data.List.NonEmpty"];
-  var Data_Maybe = PS["Data.Maybe"];
-  var Data_Nullable = PS["Data.Nullable"];
-  var Data_Ord = PS["Data.Ord"];
-  var Data_Ring = PS["Data.Ring"];
-  var Data_Semiring = PS["Data.Semiring"];
-  var Data_Time_Duration = PS["Data.Time.Duration"];
-  var Data_Unit = PS["Data.Unit"];
-  var Effect_Aff = PS["Effect.Aff"];
-  var Effect_Aff_Compat = PS["Effect.Aff.Compat"];
-  var Effect_Class = PS["Effect.Class"];
-  var Effect_Exception = PS["Effect.Exception"];
-  var Effect_Ref = PS["Effect.Ref"];
-  var Foreign = PS["Foreign"];
-  var $$Math = PS["Math"];
-  var Prelude = PS["Prelude"];
-  var request = function (req) {
-      var parseJSON = function (v) {
-          if (v === "") {
-              return Control_Applicative.pure(Control_Monad_Except_Trans.applicativeExceptT(Data_Identity.monadIdentity))(Data_Argonaut_Core.jsonEmptyObject);
-          };
-          return Data_Either.either(function ($66) {
-              return Foreign.fail(Foreign.ForeignError.create($66));
-          })(Control_Applicative.pure(Control_Monad_Except_Trans.applicativeExceptT(Data_Identity.monadIdentity)))(Data_Argonaut_Parser.jsonParser(v));
-      };
-      var fromResponse$prime = (function () {
-          if (req.responseFormat instanceof Affjax_ResponseFormat["ArrayBuffer"]) {
-              return Foreign.unsafeReadTagged("ArrayBuffer");
-          };
-          if (req.responseFormat instanceof Affjax_ResponseFormat.Blob) {
-              return Foreign.unsafeReadTagged("Blob");
-          };
-          if (req.responseFormat instanceof Affjax_ResponseFormat.Document) {
-              return Foreign.unsafeReadTagged("Document");
-          };
-          if (req.responseFormat instanceof Affjax_ResponseFormat.Json) {
-              return Control_Bind.composeKleisliFlipped(Control_Monad_Except_Trans.bindExceptT(Data_Identity.monadIdentity))(function ($67) {
-                  return req.responseFormat.value0(parseJSON($67));
-              })(Foreign.unsafeReadTagged("String"));
-          };
-          if (req.responseFormat instanceof Affjax_ResponseFormat["String"]) {
-              return Foreign.unsafeReadTagged("String");
-          };
-          if (req.responseFormat instanceof Affjax_ResponseFormat.Ignore) {
-              return Data_Function["const"](req.responseFormat.value0(Control_Applicative.pure(Control_Monad_Except_Trans.applicativeExceptT(Data_Identity.monadIdentity))(Data_Unit.unit)));
-          };
-          throw new Error("Failed pattern match at Affjax (line 292, column 19 - line 298, column 57): " + [ req.responseFormat.constructor.name ]);
-      })();
-      var extractContent = function (v) {
-          if (v instanceof Affjax_RequestBody.ArrayView) {
-              return v.value0(Foreign.unsafeToForeign);
-          };
-          if (v instanceof Affjax_RequestBody.Blob) {
-              return Foreign.unsafeToForeign(v.value0);
-          };
-          if (v instanceof Affjax_RequestBody.Document) {
-              return Foreign.unsafeToForeign(v.value0);
-          };
-          if (v instanceof Affjax_RequestBody["String"]) {
-              return Foreign.unsafeToForeign(v.value0);
-          };
-          if (v instanceof Affjax_RequestBody.FormData) {
-              return Foreign.unsafeToForeign(v.value0);
-          };
-          if (v instanceof Affjax_RequestBody.FormURLEncoded) {
-              return Foreign.unsafeToForeign(Data_FormURLEncoded.encode(v.value0));
-          };
-          if (v instanceof Affjax_RequestBody.Json) {
-              return Foreign.unsafeToForeign(Data_Argonaut_Core.stringify(v.value0));
-          };
-          throw new Error("Failed pattern match at Affjax (line 266, column 20 - line 273, column 57): " + [ v.constructor.name ]);
-      };
-      var addHeader = function (mh) {
-          return function (hs) {
-              if (mh instanceof Data_Maybe.Just && !Data_Foldable.any(Data_Foldable.foldableArray)(Data_HeytingAlgebra.heytingAlgebraBoolean)(Data_Function.on(Data_Eq.eq(Data_Eq.eqString))(Affjax_RequestHeader.requestHeaderName)(mh.value0))(hs)) {
-                  return Data_Array.snoc(hs)(mh.value0);
-              };
-              return hs;
-          };
-      };
-      var headers = function (reqContent) {
-          return addHeader(Data_Functor.map(Data_Maybe.functorMaybe)(Affjax_RequestHeader.ContentType.create)(Control_Bind.bindFlipped(Data_Maybe.bindMaybe)(Affjax_RequestBody.toMediaType)(reqContent)))(addHeader(Data_Functor.map(Data_Maybe.functorMaybe)(Affjax_RequestHeader.Accept.create)(Affjax_ResponseFormat.toMediaType(req.responseFormat)))(req.headers));
-      };
-      var req$prime = {
-          method: Data_HTTP_Method.print(req.method),
-          url: req.url,
-          headers: Data_Functor.map(Data_Functor.functorArray)(function (h) {
-              return {
-                  field: Affjax_RequestHeader.requestHeaderName(h),
-                  value: Affjax_RequestHeader.requestHeaderValue(h)
-              };
-          })(headers(req.content)),
-          content: Data_Nullable.toNullable(Data_Functor.map(Data_Maybe.functorMaybe)(extractContent)(req.content)),
-          responseType: Affjax_ResponseFormat.toResponseType(req.responseFormat),
-          username: Data_Nullable.toNullable(req.username),
-          password: Data_Nullable.toNullable(req.password),
-          withCredentials: req.withCredentials
-      };
-      return Control_Bind.bind(Effect_Aff.bindAff)(Effect_Aff_Compat.fromEffectFnAff($foreign["_ajax"](Affjax_ResponseHeader.responseHeader, req$prime)))(function (v) {
-          var v1 = Control_Monad_Except.runExcept(fromResponse$prime(v.body));
-          if (v1 instanceof Data_Either.Left) {
-              return Control_Applicative.pure(Effect_Aff.applicativeAff)({
-                  body: new Data_Either.Left(new Affjax_ResponseFormat.ResponseFormatError(Data_List_NonEmpty.head(v1.value0), v.body)),
-                  headers: v.headers,
-                  status: v.status,
-                  statusText: v.statusText
-              });
-          };
-          if (v1 instanceof Data_Either.Right) {
-              return Control_Applicative.pure(Effect_Aff.applicativeAff)({
-                  body: new Data_Either.Right(v1.value0),
-                  headers: v.headers,
-                  status: v.status,
-                  statusText: v.statusText
-              });
-          };
-          throw new Error("Failed pattern match at Affjax (line 246, column 3 - line 250, column 39): " + [ v1.constructor.name ]);
-      });
-  };
-  var defaultRequest = {
-      method: new Data_Either.Left(Data_HTTP_Method.GET.value),
-      url: "/",
-      headers: [  ],
-      content: Data_Maybe.Nothing.value,
-      username: Data_Maybe.Nothing.value,
-      password: Data_Maybe.Nothing.value,
-      withCredentials: false,
-      responseFormat: Affjax_ResponseFormat.ignore
-  };
-  exports["defaultRequest"] = defaultRequest;
-  exports["request"] = request;
-})(PS["Affjax"] = PS["Affjax"] || {});
-(function(exports) {
-    "use strict";
-
-  exports._app = function() {
-    return app;
-  }
-
-  exports._mmoment8601 = function(just, nothing, tuple, s) {
-    try {
-      var m = moment(s, moment.ISO_8601);
-      var s1 = m.fromNow();
-      var s2 = m.format('MMMM D YYYY, h:mm a') + " (" + m.format() + ") ";
-      return just(tuple(s1)(s2));
-    } catch (error) {
-      return nothing
-    }
-  }
-
-  exports._closeWindow = function (window) {
-    window.close();
-  };
-})(PS["Globals"] = PS["Globals"] || {});
-(function(exports) {
-    "use strict";
-
-  exports.unsafeReadPropImpl = function (f, s, key, value) {
-    return value == null ? f : s(value[key]);
-  };
-})(PS["Foreign.Index"] = PS["Foreign.Index"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.2
-  "use strict";
-  var $foreign = PS["Foreign.Index"];
-  var Control_Applicative = PS["Control.Applicative"];
-  var Control_Bind = PS["Control.Bind"];
-  var Control_Monad_Except_Trans = PS["Control.Monad.Except.Trans"];
-  var Data_Eq = PS["Data.Eq"];
-  var Data_Function = PS["Data.Function"];
-  var Data_Function_Uncurried = PS["Data.Function.Uncurried"];
-  var Data_HeytingAlgebra = PS["Data.HeytingAlgebra"];
-  var Data_Identity = PS["Data.Identity"];
-  var Data_List_NonEmpty = PS["Data.List.NonEmpty"];
-  var Foreign = PS["Foreign"];
-  var Prelude = PS["Prelude"];
-  var unsafeReadProp = function (k) {
-      return function (value) {
-          return $foreign.unsafeReadPropImpl(Foreign.fail(new Foreign.TypeMismatch("object", Foreign.typeOf(value))), Control_Applicative.pure(Control_Monad_Except_Trans.applicativeExceptT(Data_Identity.monadIdentity)), k, value);
-      };
-  };
-  var readProp = unsafeReadProp;
-  exports["readProp"] = readProp;
-})(PS["Foreign.Index"] = PS["Foreign.Index"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.2
-  "use strict";
-  var Type_Data_Boolean = PS["Type.Data.Boolean"];
-  var Type_Data_Symbol = PS["Type.Data.Symbol"];
-  var Type_Equality = PS["Type.Equality"];
-  var RLProxy = (function () {
-      function RLProxy() {
-
-      };
-      RLProxy.value = new RLProxy();
-      return RLProxy;
-  })();
-  exports["RLProxy"] = RLProxy;
-})(PS["Type.Row"] = PS["Type.Row"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.2
-  "use strict";
-  var Data_Eq = PS["Data.Eq"];
-  var Data_Function_Uncurried = PS["Data.Function.Uncurried"];
-  var Data_HeytingAlgebra = PS["Data.HeytingAlgebra"];
-  var Data_Symbol = PS["Data.Symbol"];
-  var Prelude = PS["Prelude"];
-  var Record_Unsafe = PS["Record.Unsafe"];
-  var Record_Unsafe_Union = PS["Record.Unsafe.Union"];
-  var Type_Row = PS["Type.Row"];
-  var Unsafe_Coerce = PS["Unsafe.Coerce"];
-  var get = function (dictIsSymbol) {
-      return function (dictCons) {
-          return function (l) {
-              return function (r) {
-                  return Record_Unsafe.unsafeGet(Data_Symbol.reflectSymbol(dictIsSymbol)(l))(r);
-              };
-          };
-      };
-  };
-  exports["get"] = get;
-})(PS["Record"] = PS["Record"] || {});
-(function(exports) {
-    "use strict";
-
-  exports.copyRecord = function(rec) {
-    var copy = {};
-    for (var key in rec) {
-      if ({}.hasOwnProperty.call(rec, key)) {
-        copy[key] = rec[key];
-      }
-    }
-    return copy;
-  };
-
-  exports.unsafeInsert = function(l) {
-    return function(a) {
-      return function(rec) {
-        rec[l] = a;
-        return rec;
-      };
-    };
-  };
-})(PS["Record.Builder"] = PS["Record.Builder"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.2
-  "use strict";
-  var $foreign = PS["Record.Builder"];
-  var Control_Category = PS["Control.Category"];
-  var Control_Semigroupoid = PS["Control.Semigroupoid"];
-  var Data_Function_Uncurried = PS["Data.Function.Uncurried"];
-  var Data_Symbol = PS["Data.Symbol"];
-  var Prelude = PS["Prelude"];
-  var Record_Unsafe_Union = PS["Record.Unsafe.Union"];
-  var Type_Row = PS["Type.Row"];
-  var Unsafe_Coerce = PS["Unsafe.Coerce"];
-  var semigroupoidBuilder = Control_Semigroupoid.semigroupoidFn;
-  var insert = function (dictCons) {
-      return function (dictLacks) {
-          return function (dictIsSymbol) {
-              return function (l) {
-                  return function (a) {
-                      return function (r1) {
-                          return $foreign.unsafeInsert(Data_Symbol.reflectSymbol(dictIsSymbol)(l))(a)(r1);
-                      };
-                  };
-              };
-          };
-      };
-  };
-  var categoryBuilder = Control_Category.categoryFn;
-  var build = function (v) {
-      return function (r1) {
-          return v($foreign.copyRecord(r1));
-      };
-  };
-  exports["build"] = build;
-  exports["insert"] = insert;
-  exports["semigroupoidBuilder"] = semigroupoidBuilder;
-  exports["categoryBuilder"] = categoryBuilder;
-})(PS["Record.Builder"] = PS["Record.Builder"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.2
-  "use strict";
-  var $foreign = PS["Simple.JSON"];
-  var Control_Alt = PS["Control.Alt"];
-  var Control_Applicative = PS["Control.Applicative"];
-  var Control_Apply = PS["Control.Apply"];
-  var Control_Bind = PS["Control.Bind"];
-  var Control_Category = PS["Control.Category"];
-  var Control_Monad_Except = PS["Control.Monad.Except"];
-  var Control_Monad_Except_Trans = PS["Control.Monad.Except.Trans"];
-  var Control_Semigroupoid = PS["Control.Semigroupoid"];
-  var Data_Bifunctor = PS["Data.Bifunctor"];
-  var Data_Boolean = PS["Data.Boolean"];
-  var Data_Either = PS["Data.Either"];
-  var Data_Eq = PS["Data.Eq"];
-  var Data_Function = PS["Data.Function"];
-  var Data_Functor = PS["Data.Functor"];
-  var Data_HeytingAlgebra = PS["Data.HeytingAlgebra"];
-  var Data_Identity = PS["Data.Identity"];
-  var Data_List_Types = PS["Data.List.Types"];
-  var Data_Maybe = PS["Data.Maybe"];
-  var Data_Nullable = PS["Data.Nullable"];
-  var Data_Semigroup = PS["Data.Semigroup"];
-  var Data_Symbol = PS["Data.Symbol"];
-  var Data_Traversable = PS["Data.Traversable"];
-  var Data_Variant = PS["Data.Variant"];
-  var Effect_Exception = PS["Effect.Exception"];
-  var Effect_Uncurried = PS["Effect.Uncurried"];
-  var Effect_Unsafe = PS["Effect.Unsafe"];
-  var Foreign = PS["Foreign"];
-  var Foreign_Index = PS["Foreign.Index"];
-  var Foreign_Object = PS["Foreign.Object"];
-  var Global_Unsafe = PS["Global.Unsafe"];
-  var Partial_Unsafe = PS["Partial.Unsafe"];
-  var Prelude = PS["Prelude"];
-  var Record = PS["Record"];
-  var Record_Builder = PS["Record.Builder"];
-  var Type_Prelude = PS["Type.Prelude"];
-  var Type_Row = PS["Type.Row"];
-  var WriteForeign = function (writeImpl) {
-      this.writeImpl = writeImpl;
-  };
-  var WriteForeignFields = function (writeImplFields) {
-      this.writeImplFields = writeImplFields;
-  };
-  var writeImplFields = function (dict) {
-      return dict.writeImplFields;
-  };
-  var writeImpl = function (dict) {
-      return dict.writeImpl;
-  };
-  var writeJSON = function (dictWriteForeign) {
-      return function ($85) {
-          return Global_Unsafe.unsafeStringify(writeImpl(dictWriteForeign)($85));
-      };
-  };
-  var writeForeignString = new WriteForeign(Foreign.unsafeToForeign);
-  var writeForeignNullable = function (dictWriteForeign) {
-      return new WriteForeign(function ($87) {
-          return Data_Maybe.maybe(Foreign.unsafeToForeign(Data_Nullable.toNullable(Data_Maybe.Nothing.value)))(writeImpl(dictWriteForeign))(Data_Nullable.toMaybe($87));
-      });
-  };
-  var writeForeignInt = new WriteForeign(Foreign.unsafeToForeign); 
-  var writeForeignBoolean = new WriteForeign(Foreign.unsafeToForeign);
-  var recordWriteForeign = function (dictRowToList) {
-      return function (dictWriteForeignFields) {
-          return new WriteForeign(function (rec) {
-              var steps = writeImplFields(dictWriteForeignFields)(Type_Row.RLProxy.value)(rec);
-              return Foreign.unsafeToForeign(Record_Builder.build(steps)({}));
-          });
-      };
-  }; 
-  var nilWriteForeignFields = new WriteForeignFields(function (v) {
-      return function (v1) {
-          return Control_Category.identity(Record_Builder.categoryBuilder);
-      };
-  });
-  var consWriteForeignFields = function (dictIsSymbol) {
-      return function (dictWriteForeign) {
-          return function (dictWriteForeignFields) {
-              return function (dictCons) {
-                  return function (dictLacks) {
-                      return function (dictCons1) {
-                          return new WriteForeignFields(function (v) {
-                              return function (rec) {
-                                  var rest = writeImplFields(dictWriteForeignFields)(Type_Row.RLProxy.value)(rec);
-                                  var value = writeImpl(dictWriteForeign)(Record.get(dictIsSymbol)(dictCons)(Data_Symbol.SProxy.value)(rec));
-                                  var result = Control_Semigroupoid.compose(Record_Builder.semigroupoidBuilder)(Record_Builder.insert(dictCons1)(dictLacks)(dictIsSymbol)(Data_Symbol.SProxy.value)(value))(rest);
-                                  return result;
-                              };
-                          });
-                      };
-                  };
-              };
-          };
-      };
-  };
-  exports["writeJSON"] = writeJSON;
-  exports["WriteForeign"] = WriteForeign;
-  exports["writeImpl"] = writeImpl;
-  exports["WriteForeignFields"] = WriteForeignFields;
-  exports["writeImplFields"] = writeImplFields;
-  exports["writeForeignString"] = writeForeignString;
-  exports["writeForeignInt"] = writeForeignInt;
-  exports["writeForeignBoolean"] = writeForeignBoolean;
-  exports["writeForeignNullable"] = writeForeignNullable;
-  exports["recordWriteForeign"] = recordWriteForeign;
-  exports["consWriteForeignFields"] = consWriteForeignFields;
-  exports["nilWriteForeignFields"] = nilWriteForeignFields;
-})(PS["Simple.JSON"] = PS["Simple.JSON"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.2
-  "use strict";
-  var Data_Nullable = PS["Data.Nullable"];
-  var Data_Symbol = PS["Data.Symbol"];
-  var Simple_JSON = PS["Simple.JSON"];
-  var usersettings_wfI = Simple_JSON.recordWriteForeign()(Simple_JSON.consWriteForeignFields(new Data_Symbol.IsSymbol(function () {
-      return "archiveDefault";
-  }))(Simple_JSON.writeForeignBoolean)(Simple_JSON.consWriteForeignFields(new Data_Symbol.IsSymbol(function () {
-      return "privacyLock";
-  }))(Simple_JSON.writeForeignBoolean)(Simple_JSON.consWriteForeignFields(new Data_Symbol.IsSymbol(function () {
-      return "privateDefault";
-  }))(Simple_JSON.writeForeignBoolean)(Simple_JSON.nilWriteForeignFields)()()())()()())()()());
-  var note_wfI = Simple_JSON.recordWriteForeign()(Simple_JSON.consWriteForeignFields(new Data_Symbol.IsSymbol(function () {
-      return "created";
-  }))(Simple_JSON.writeForeignString)(Simple_JSON.consWriteForeignFields(new Data_Symbol.IsSymbol(function () {
-      return "id";
-  }))(Simple_JSON.writeForeignInt)(Simple_JSON.consWriteForeignFields(new Data_Symbol.IsSymbol(function () {
-      return "isMarkdown";
-  }))(Simple_JSON.writeForeignBoolean)(Simple_JSON.consWriteForeignFields(new Data_Symbol.IsSymbol(function () {
-      return "length";
-  }))(Simple_JSON.writeForeignInt)(Simple_JSON.consWriteForeignFields(new Data_Symbol.IsSymbol(function () {
-      return "slug";
-  }))(Simple_JSON.writeForeignString)(Simple_JSON.consWriteForeignFields(new Data_Symbol.IsSymbol(function () {
-      return "text";
-  }))(Simple_JSON.writeForeignString)(Simple_JSON.consWriteForeignFields(new Data_Symbol.IsSymbol(function () {
-      return "title";
-  }))(Simple_JSON.writeForeignString)(Simple_JSON.consWriteForeignFields(new Data_Symbol.IsSymbol(function () {
-      return "updated";
-  }))(Simple_JSON.writeForeignString)(Simple_JSON.nilWriteForeignFields)()()())()()())()()())()()())()()())()()())()()())()()());
-  var bookmark_wfI = Simple_JSON.recordWriteForeign()(Simple_JSON.consWriteForeignFields(new Data_Symbol.IsSymbol(function () {
-      return "archiveUrl";
-  }))(Simple_JSON.writeForeignNullable(Simple_JSON.writeForeignString))(Simple_JSON.consWriteForeignFields(new Data_Symbol.IsSymbol(function () {
-      return "bid";
-  }))(Simple_JSON.writeForeignInt)(Simple_JSON.consWriteForeignFields(new Data_Symbol.IsSymbol(function () {
-      return "description";
-  }))(Simple_JSON.writeForeignString)(Simple_JSON.consWriteForeignFields(new Data_Symbol.IsSymbol(function () {
-      return "private";
-  }))(Simple_JSON.writeForeignBoolean)(Simple_JSON.consWriteForeignFields(new Data_Symbol.IsSymbol(function () {
-      return "selected";
-  }))(Simple_JSON.writeForeignBoolean)(Simple_JSON.consWriteForeignFields(new Data_Symbol.IsSymbol(function () {
-      return "slug";
-  }))(Simple_JSON.writeForeignString)(Simple_JSON.consWriteForeignFields(new Data_Symbol.IsSymbol(function () {
-      return "tags";
-  }))(Simple_JSON.writeForeignString)(Simple_JSON.consWriteForeignFields(new Data_Symbol.IsSymbol(function () {
-      return "time";
-  }))(Simple_JSON.writeForeignString)(Simple_JSON.consWriteForeignFields(new Data_Symbol.IsSymbol(function () {
-      return "title";
-  }))(Simple_JSON.writeForeignString)(Simple_JSON.consWriteForeignFields(new Data_Symbol.IsSymbol(function () {
-      return "toread";
-  }))(Simple_JSON.writeForeignBoolean)(Simple_JSON.consWriteForeignFields(new Data_Symbol.IsSymbol(function () {
-      return "url";
-  }))(Simple_JSON.writeForeignString)(Simple_JSON.nilWriteForeignFields)()()())()()())()()())()()())()()())()()())()()())()()())()()())()()())()()());
-  exports["bookmark_wfI"] = bookmark_wfI;
-  exports["note_wfI"] = note_wfI;
-  exports["usersettings_wfI"] = usersettings_wfI;
-})(PS["Model"] = PS["Model"] || {});
-(function(exports) {
-  /* global window */
-  "use strict";
-
-  exports.window = function () {
-    return window;
-  };
-})(PS["Web.HTML"] = PS["Web.HTML"] || {});
-(function(exports) {
-    "use strict";                                             
-
-  exports._querySelector = function (selector) {
-    return function (node) {
-      return function () {
-        return node.querySelector(selector);
-      };
-    };
-  };
-})(PS["Web.DOM.ParentNode"] = PS["Web.DOM.ParentNode"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.2
-  "use strict";
-  var $foreign = PS["Web.DOM.ParentNode"];
-  var Control_Semigroupoid = PS["Control.Semigroupoid"];
-  var Data_Eq = PS["Data.Eq"];
-  var Data_Functor = PS["Data.Functor"];
-  var Data_Maybe = PS["Data.Maybe"];
-  var Data_Newtype = PS["Data.Newtype"];
-  var Data_Nullable = PS["Data.Nullable"];
-  var Data_Ord = PS["Data.Ord"];
-  var Effect = PS["Effect"];
-  var Prelude = PS["Prelude"];
-  var Web_DOM_HTMLCollection = PS["Web.DOM.HTMLCollection"];
-  var Web_DOM_Internal_Types = PS["Web.DOM.Internal.Types"];
-  var Web_DOM_NodeList = PS["Web.DOM.NodeList"];
-  var querySelector = function (qs) {
-      return function ($3) {
-          return Data_Functor.map(Effect.functorEffect)(Data_Nullable.toMaybe)($foreign["_querySelector"](qs)($3));
-      };
-  };
-  exports["querySelector"] = querySelector;
-})(PS["Web.DOM.ParentNode"] = PS["Web.DOM.ParentNode"] || {});
-(function(exports) {
-    "use strict";
-
-  exports.eventListener = function (fn) {
-    return function () {
-      return function (event) {
-        return fn(event)();
-      };
-    };
-  };
-})(PS["Web.Event.EventTarget"] = PS["Web.Event.EventTarget"] || {});
-(function(exports) {
-    "use strict";
-
-  exports._currentTarget = function (e) {
-    return e.currentTarget;
-  };
-
-  exports.preventDefault = function (e) {
-    return function () {
-      return e.preventDefault();
-    };
-  };
-})(PS["Web.Event.Event"] = PS["Web.Event.Event"] || {});
-(function(exports) {
-    "use strict";
-
-  exports.toCharCode = function (c) {
-    return c.charCodeAt(0);
-  };
-
-  exports.fromCharCode = function (c) {
-    return String.fromCharCode(c);
-  };
-})(PS["Data.Enum"] = PS["Data.Enum"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.2
-  "use strict";
-  var $foreign = PS["Data.Enum"];
-  var Control_Apply = PS["Control.Apply"];
-  var Control_Bind = PS["Control.Bind"];
-  var Control_MonadPlus = PS["Control.MonadPlus"];
-  var Control_MonadZero = PS["Control.MonadZero"];
-  var Control_Semigroupoid = PS["Control.Semigroupoid"];
-  var Data_Boolean = PS["Data.Boolean"];
-  var Data_Bounded = PS["Data.Bounded"];
-  var Data_Either = PS["Data.Either"];
-  var Data_Eq = PS["Data.Eq"];
-  var Data_Function = PS["Data.Function"];
-  var Data_Functor = PS["Data.Functor"];
-  var Data_HeytingAlgebra = PS["Data.HeytingAlgebra"];
-  var Data_Maybe = PS["Data.Maybe"];
-  var Data_Newtype = PS["Data.Newtype"];
-  var Data_Ord = PS["Data.Ord"];
-  var Data_Ordering = PS["Data.Ordering"];
-  var Data_Ring = PS["Data.Ring"];
-  var Data_Semigroup = PS["Data.Semigroup"];
-  var Data_Semiring = PS["Data.Semiring"];
-  var Data_Show = PS["Data.Show"];
-  var Data_Tuple = PS["Data.Tuple"];
-  var Data_Unfoldable = PS["Data.Unfoldable"];
-  var Data_Unfoldable1 = PS["Data.Unfoldable1"];
-  var Data_Unit = PS["Data.Unit"];
-  var Partial_Unsafe = PS["Partial.Unsafe"];
-  var Prelude = PS["Prelude"];
-  var Enum = function (Ord0, pred, succ) {
-      this.Ord0 = Ord0;
-      this.pred = pred;
-      this.succ = succ;
-  };
-  var BoundedEnum = function (Bounded0, Enum1, cardinality, fromEnum, toEnum) {
-      this.Bounded0 = Bounded0;
-      this.Enum1 = Enum1;
-      this.cardinality = cardinality;
-      this.fromEnum = fromEnum;
-      this.toEnum = toEnum;
-  };
-  var toEnum = function (dict) {
-      return dict.toEnum;
-  };
-  var succ = function (dict) {
-      return dict.succ;
-  }; 
-  var pred = function (dict) {
-      return dict.pred;
-  };              
-  var fromEnum = function (dict) {
-      return dict.fromEnum;
-  };
-  var toEnumWithDefaults = function (dictBoundedEnum) {
-      return function (low) {
-          return function (high) {
-              return function (x) {
-                  var v = toEnum(dictBoundedEnum)(x);
-                  if (v instanceof Data_Maybe.Just) {
-                      return v.value0;
-                  };
-                  if (v instanceof Data_Maybe.Nothing) {
-                      var $51 = x < fromEnum(dictBoundedEnum)(Data_Bounded.bottom(dictBoundedEnum.Bounded0()));
-                      if ($51) {
-                          return low;
-                      };
-                      return high;
-                  };
-                  throw new Error("Failed pattern match at Data.Enum (line 158, column 33 - line 160, column 62): " + [ v.constructor.name ]);
-              };
-          };
-      };
-  };
-  var defaultSucc = function (toEnum$prime) {
-      return function (fromEnum$prime) {
-          return function (a) {
-              return toEnum$prime(fromEnum$prime(a) + 1 | 0);
-          };
-      };
-  };
-  var defaultPred = function (toEnum$prime) {
-      return function (fromEnum$prime) {
-          return function (a) {
-              return toEnum$prime(fromEnum$prime(a) - 1 | 0);
-          };
-      };
-  };
-  var charToEnum = function (v) {
-      if (v >= Data_Bounded.bottom(Data_Bounded.boundedInt) && v <= Data_Bounded.top(Data_Bounded.boundedInt)) {
-          return new Data_Maybe.Just($foreign.fromCharCode(v));
-      };
-      return Data_Maybe.Nothing.value;
-  };
-  var enumChar = new Enum(function () {
-      return Data_Ord.ordChar;
-  }, defaultPred(charToEnum)($foreign.toCharCode), defaultSucc(charToEnum)($foreign.toCharCode));
-  var cardinality = function (dict) {
-      return dict.cardinality;
-  }; 
-  var boundedEnumChar = new BoundedEnum(function () {
-      return Data_Bounded.boundedChar;
-  }, function () {
-      return enumChar;
-  }, $foreign.toCharCode(Data_Bounded.top(Data_Bounded.boundedChar)) - $foreign.toCharCode(Data_Bounded.bottom(Data_Bounded.boundedChar)) | 0, $foreign.toCharCode, charToEnum);
-  exports["Enum"] = Enum;
-  exports["succ"] = succ;
-  exports["pred"] = pred;
-  exports["BoundedEnum"] = BoundedEnum;
-  exports["cardinality"] = cardinality;
-  exports["toEnum"] = toEnum;
-  exports["fromEnum"] = fromEnum;
-  exports["toEnumWithDefaults"] = toEnumWithDefaults;
-  exports["defaultSucc"] = defaultSucc;
-  exports["defaultPred"] = defaultPred;
-  exports["enumChar"] = enumChar;
-  exports["boundedEnumChar"] = boundedEnumChar;
-})(PS["Data.Enum"] = PS["Data.Enum"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.2
-  "use strict";
-  var $foreign = PS["Web.Event.Event"];
-  var Control_Semigroupoid = PS["Control.Semigroupoid"];
-  var Data_DateTime_Instant = PS["Data.DateTime.Instant"];
-  var Data_Enum = PS["Data.Enum"];
-  var Data_Eq = PS["Data.Eq"];
-  var Data_Maybe = PS["Data.Maybe"];
-  var Data_Newtype = PS["Data.Newtype"];
-  var Data_Nullable = PS["Data.Nullable"];
-  var Data_Ord = PS["Data.Ord"];
-  var Effect = PS["Effect"];
-  var Prelude = PS["Prelude"];
-  var Web_Event_EventPhase = PS["Web.Event.EventPhase"];
-  var Web_Event_Internal_Types = PS["Web.Event.Internal.Types"];
-  var currentTarget = function ($6) {
-      return Data_Nullable.toMaybe($foreign["_currentTarget"]($6));
-  };
-  exports["currentTarget"] = currentTarget;
-  exports["preventDefault"] = $foreign.preventDefault;
-})(PS["Web.Event.Event"] = PS["Web.Event.Event"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.2
-  "use strict";
-  var $foreign = PS["Web.Event.EventTarget"];
-  var Effect = PS["Effect"];
-  var Prelude = PS["Prelude"];
-  var Web_Event_Event = PS["Web.Event.Event"];
-  var Web_Event_Internal_Types = PS["Web.Event.Internal.Types"];
-  exports["eventListener"] = $foreign.eventListener;
-})(PS["Web.Event.EventTarget"] = PS["Web.Event.EventTarget"] || {});
-(function(exports) {
-    "use strict";
-
-  exports._read = function (nothing, just, value) {
-    var tag = Object.prototype.toString.call(value);
-    if (tag.indexOf("[object HTML") === 0 && tag.indexOf("Element]") === tag.length - 8) {
-      return just(value);
-    } else {
-      return nothing;
-    }
-  };
-})(PS["Web.HTML.HTMLElement"] = PS["Web.HTML.HTMLElement"] || {});
-(function(exports) {
-    "use strict";
-
-  exports.removeAttribute = function (name) {
-    return function (element) {
-      return function () {
-        element.removeAttribute(name);
-        return {};
-      };
-    };
-  };
-})(PS["Web.DOM.Element"] = PS["Web.DOM.Element"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.2
-  "use strict";
-  var $foreign = PS["Web.DOM.Element"];
-  var Control_Semigroupoid = PS["Control.Semigroupoid"];
-  var Data_Functor = PS["Data.Functor"];
-  var Data_Maybe = PS["Data.Maybe"];
-  var Data_Nullable = PS["Data.Nullable"];
-  var Effect = PS["Effect"];
-  var Prelude = PS["Prelude"];
-  var Unsafe_Coerce = PS["Unsafe.Coerce"];
-  var Web_DOM_ChildNode = PS["Web.DOM.ChildNode"];
-  var Web_DOM_Internal_Types = PS["Web.DOM.Internal.Types"];
-  var Web_DOM_NonDocumentTypeChildNode = PS["Web.DOM.NonDocumentTypeChildNode"];
-  var Web_DOM_ParentNode = PS["Web.DOM.ParentNode"];
-  var Web_Event_EventTarget = PS["Web.Event.EventTarget"];
-  var Web_Internal_FFI = PS["Web.Internal.FFI"];              
-  var toNode = Unsafe_Coerce.unsafeCoerce;
-  exports["toNode"] = toNode;
-  exports["removeAttribute"] = $foreign.removeAttribute;
-})(PS["Web.DOM.Element"] = PS["Web.DOM.Element"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.2
-  "use strict";
-  var $foreign = PS["Web.HTML.HTMLElement"];
-  var Control_Semigroupoid = PS["Control.Semigroupoid"];
-  var Data_Function_Uncurried = PS["Data.Function.Uncurried"];
-  var Data_Functor = PS["Data.Functor"];
-  var Data_Maybe = PS["Data.Maybe"];
-  var Data_Nullable = PS["Data.Nullable"];
-  var Effect = PS["Effect"];
-  var Prelude = PS["Prelude"];
-  var Unsafe_Coerce = PS["Unsafe.Coerce"];
-  var Web_DOM = PS["Web.DOM"];
-  var Web_DOM_DOMTokenList = PS["Web.DOM.DOMTokenList"];
-  var Web_DOM_Element = PS["Web.DOM.Element"];
-  var Web_DOM_Internal_Types = PS["Web.DOM.Internal.Types"];
-  var Web_DOM_NonDocumentTypeChildNode = PS["Web.DOM.NonDocumentTypeChildNode"];
-  var Web_DOM_ParentNode = PS["Web.DOM.ParentNode"];
-  var Web_Event_EventTarget = PS["Web.Event.EventTarget"];    
-  var toNode = Unsafe_Coerce.unsafeCoerce;       
-  var toElement = Unsafe_Coerce.unsafeCoerce;
-  var fromElement = function (x) {
-      return $foreign["_read"](Data_Maybe.Nothing.value, Data_Maybe.Just.create, x);
-  };
-  exports["fromElement"] = fromElement;
-  exports["toElement"] = toElement;
-  exports["toNode"] = toNode;
-})(PS["Web.HTML.HTMLElement"] = PS["Web.HTML.HTMLElement"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.2
-  "use strict";
-  var $foreign = PS["Web.HTML.HTMLDocument"];
-  var Control_Semigroupoid = PS["Control.Semigroupoid"];
-  var Data_Functor = PS["Data.Functor"];
-  var Data_Maybe = PS["Data.Maybe"];
-  var Data_Nullable = PS["Data.Nullable"];
-  var Effect = PS["Effect"];
-  var Prelude = PS["Prelude"];
-  var Unsafe_Coerce = PS["Unsafe.Coerce"];
-  var Web_DOM_Document = PS["Web.DOM.Document"];
-  var Web_DOM_Internal_Types = PS["Web.DOM.Internal.Types"];
-  var Web_DOM_NonElementParentNode = PS["Web.DOM.NonElementParentNode"];
-  var Web_DOM_ParentNode = PS["Web.DOM.ParentNode"];
-  var Web_Event_EventTarget = PS["Web.Event.EventTarget"];
-  var Web_HTML_HTMLDocument_ReadyState = PS["Web.HTML.HTMLDocument.ReadyState"];
-  var Web_HTML_HTMLElement = PS["Web.HTML.HTMLElement"];
-  var Web_HTML_HTMLScriptElement = PS["Web.HTML.HTMLScriptElement"];
-  var Web_Internal_FFI = PS["Web.Internal.FFI"];                 
-  var toParentNode = Unsafe_Coerce.unsafeCoerce; 
-  var toDocument = Unsafe_Coerce.unsafeCoerce;
-  exports["toDocument"] = toDocument;
-  exports["toParentNode"] = toParentNode;
-})(PS["Web.HTML.HTMLDocument"] = PS["Web.HTML.HTMLDocument"] || {});
-(function(exports) {
-    "use strict";
-
-  // ----------------------------------------------------------------------------
-
-  exports.href = function (location) {
-    return function () {
-      return location.href;
-    };
-  };
-
-  exports.setHref = function (href) {
-    return function (location) {
-      return function () {
-        location.href = href;
-      };
-    };
-  };
-
-  // ----------------------------------------------------------------------------
-
-  exports.search = function (location) {
-    return function () {
-      return location.search;
-    };
-  };
-
-  // ----------------------------------------------------------------------------
-
-  exports.reload = function (location) {
-    return function () {
-      location.reload();
-    };
-  };
-})(PS["Web.HTML.Location"] = PS["Web.HTML.Location"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.2
-  "use strict";
-  var $foreign = PS["Web.HTML.Location"];
-  var Effect = PS["Effect"];
-  var Prelude = PS["Prelude"];
-  exports["setHref"] = $foreign.setHref;
-  exports["search"] = $foreign.search;
-  exports["reload"] = $foreign.reload;
-})(PS["Web.HTML.Location"] = PS["Web.HTML.Location"] || {});
-(function(exports) {
-    "use strict";
-
-  exports.document = function (window) {
-    return function () {
-      return window.document;
-    };
-  };
-
-  exports.location = function (window) {
-    return function () {
-      return window.location;
-    };
-  };
-})(PS["Web.HTML.Window"] = PS["Web.HTML.Window"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.2
-  "use strict";
-  var $foreign = PS["Web.HTML.Window"];
-  var Control_Semigroupoid = PS["Control.Semigroupoid"];
-  var Data_Eq = PS["Data.Eq"];
-  var Data_Functor = PS["Data.Functor"];
-  var Data_Maybe = PS["Data.Maybe"];
-  var Data_Newtype = PS["Data.Newtype"];
-  var Data_Nullable = PS["Data.Nullable"];
-  var Data_Ord = PS["Data.Ord"];
-  var Effect = PS["Effect"];
-  var Prelude = PS["Prelude"];
-  var Unsafe_Coerce = PS["Unsafe.Coerce"];
-  var Web_Event_EventTarget = PS["Web.Event.EventTarget"];
-  var Web_HTML_HTMLDocument = PS["Web.HTML.HTMLDocument"];
-  var Web_HTML_History = PS["Web.HTML.History"];
-  var Web_HTML_Location = PS["Web.HTML.Location"];
-  var Web_HTML_Navigator = PS["Web.HTML.Navigator"];
-  var Web_Storage_Storage = PS["Web.Storage.Storage"];
-  exports["document"] = $foreign.document;
-  exports["location"] = $foreign.location;
-})(PS["Web.HTML.Window"] = PS["Web.HTML.Window"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.2
-  "use strict";
-  var $foreign = PS["Web.HTML"];
-  var Effect = PS["Effect"];
-  var Web_HTML_HTMLAnchorElement = PS["Web.HTML.HTMLAnchorElement"];
-  var Web_HTML_HTMLAreaElement = PS["Web.HTML.HTMLAreaElement"];
-  var Web_HTML_HTMLAudioElement = PS["Web.HTML.HTMLAudioElement"];
-  var Web_HTML_HTMLBRElement = PS["Web.HTML.HTMLBRElement"];
-  var Web_HTML_HTMLBaseElement = PS["Web.HTML.HTMLBaseElement"];
-  var Web_HTML_HTMLBodyElement = PS["Web.HTML.HTMLBodyElement"];
-  var Web_HTML_HTMLButtonElement = PS["Web.HTML.HTMLButtonElement"];
-  var Web_HTML_HTMLCanvasElement = PS["Web.HTML.HTMLCanvasElement"];
-  var Web_HTML_HTMLDListElement = PS["Web.HTML.HTMLDListElement"];
-  var Web_HTML_HTMLDataElement = PS["Web.HTML.HTMLDataElement"];
-  var Web_HTML_HTMLDataListElement = PS["Web.HTML.HTMLDataListElement"];
-  var Web_HTML_HTMLDivElement = PS["Web.HTML.HTMLDivElement"];
-  var Web_HTML_HTMLDocument = PS["Web.HTML.HTMLDocument"];
-  var Web_HTML_HTMLElement = PS["Web.HTML.HTMLElement"];
-  var Web_HTML_HTMLEmbedElement = PS["Web.HTML.HTMLEmbedElement"];
-  var Web_HTML_HTMLFieldSetElement = PS["Web.HTML.HTMLFieldSetElement"];
-  var Web_HTML_HTMLFormElement = PS["Web.HTML.HTMLFormElement"];
-  var Web_HTML_HTMLHRElement = PS["Web.HTML.HTMLHRElement"];
-  var Web_HTML_HTMLHeadElement = PS["Web.HTML.HTMLHeadElement"];
-  var Web_HTML_HTMLHeadingElement = PS["Web.HTML.HTMLHeadingElement"];
-  var Web_HTML_HTMLIFrameElement = PS["Web.HTML.HTMLIFrameElement"];
-  var Web_HTML_HTMLImageElement = PS["Web.HTML.HTMLImageElement"];
-  var Web_HTML_HTMLInputElement = PS["Web.HTML.HTMLInputElement"];
-  var Web_HTML_HTMLKeygenElement = PS["Web.HTML.HTMLKeygenElement"];
-  var Web_HTML_HTMLLIElement = PS["Web.HTML.HTMLLIElement"];
-  var Web_HTML_HTMLLabelElement = PS["Web.HTML.HTMLLabelElement"];
-  var Web_HTML_HTMLLegendElement = PS["Web.HTML.HTMLLegendElement"];
-  var Web_HTML_HTMLLinkElement = PS["Web.HTML.HTMLLinkElement"];
-  var Web_HTML_HTMLMapElement = PS["Web.HTML.HTMLMapElement"];
-  var Web_HTML_HTMLMediaElement = PS["Web.HTML.HTMLMediaElement"];
-  var Web_HTML_HTMLMetaElement = PS["Web.HTML.HTMLMetaElement"];
-  var Web_HTML_HTMLMeterElement = PS["Web.HTML.HTMLMeterElement"];
-  var Web_HTML_HTMLModElement = PS["Web.HTML.HTMLModElement"];
-  var Web_HTML_HTMLOListElement = PS["Web.HTML.HTMLOListElement"];
-  var Web_HTML_HTMLObjectElement = PS["Web.HTML.HTMLObjectElement"];
-  var Web_HTML_HTMLOptGroupElement = PS["Web.HTML.HTMLOptGroupElement"];
-  var Web_HTML_HTMLOptionElement = PS["Web.HTML.HTMLOptionElement"];
-  var Web_HTML_HTMLOutputElement = PS["Web.HTML.HTMLOutputElement"];
-  var Web_HTML_HTMLParagraphElement = PS["Web.HTML.HTMLParagraphElement"];
-  var Web_HTML_HTMLParamElement = PS["Web.HTML.HTMLParamElement"];
-  var Web_HTML_HTMLPreElement = PS["Web.HTML.HTMLPreElement"];
-  var Web_HTML_HTMLProgressElement = PS["Web.HTML.HTMLProgressElement"];
-  var Web_HTML_HTMLQuoteElement = PS["Web.HTML.HTMLQuoteElement"];
-  var Web_HTML_HTMLScriptElement = PS["Web.HTML.HTMLScriptElement"];
-  var Web_HTML_HTMLSelectElement = PS["Web.HTML.HTMLSelectElement"];
-  var Web_HTML_HTMLSourceElement = PS["Web.HTML.HTMLSourceElement"];
-  var Web_HTML_HTMLSpanElement = PS["Web.HTML.HTMLSpanElement"];
-  var Web_HTML_HTMLStyleElement = PS["Web.HTML.HTMLStyleElement"];
-  var Web_HTML_HTMLTableCaptionElement = PS["Web.HTML.HTMLTableCaptionElement"];
-  var Web_HTML_HTMLTableCellElement = PS["Web.HTML.HTMLTableCellElement"];
-  var Web_HTML_HTMLTableColElement = PS["Web.HTML.HTMLTableColElement"];
-  var Web_HTML_HTMLTableDataCellElement = PS["Web.HTML.HTMLTableDataCellElement"];
-  var Web_HTML_HTMLTableElement = PS["Web.HTML.HTMLTableElement"];
-  var Web_HTML_HTMLTableHeaderCellElement = PS["Web.HTML.HTMLTableHeaderCellElement"];
-  var Web_HTML_HTMLTableRowElement = PS["Web.HTML.HTMLTableRowElement"];
-  var Web_HTML_HTMLTableSectionElement = PS["Web.HTML.HTMLTableSectionElement"];
-  var Web_HTML_HTMLTemplateElement = PS["Web.HTML.HTMLTemplateElement"];
-  var Web_HTML_HTMLTextAreaElement = PS["Web.HTML.HTMLTextAreaElement"];
-  var Web_HTML_HTMLTimeElement = PS["Web.HTML.HTMLTimeElement"];
-  var Web_HTML_HTMLTitleElement = PS["Web.HTML.HTMLTitleElement"];
-  var Web_HTML_HTMLTrackElement = PS["Web.HTML.HTMLTrackElement"];
-  var Web_HTML_HTMLUListElement = PS["Web.HTML.HTMLUListElement"];
-  var Web_HTML_HTMLVideoElement = PS["Web.HTML.HTMLVideoElement"];
-  var Web_HTML_History = PS["Web.HTML.History"];
-  var Web_HTML_Location = PS["Web.HTML.Location"];
-  var Web_HTML_Navigator = PS["Web.HTML.Navigator"];
-  var Web_HTML_Window = PS["Web.HTML.Window"];
-  exports["window"] = $foreign.window;
-})(PS["Web.HTML"] = PS["Web.HTML"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.2
-  "use strict";
-  var $foreign = PS["Globals"];
-  var Control_Applicative = PS["Control.Applicative"];
-  var Data_Function = PS["Data.Function"];
-  var Data_Function_Uncurried = PS["Data.Function.Uncurried"];
-  var Data_Maybe = PS["Data.Maybe"];
-  var Data_Newtype = PS["Data.Newtype"];
-  var Data_Nullable = PS["Data.Nullable"];
-  var Data_Tuple = PS["Data.Tuple"];
-  var Effect = PS["Effect"];
-  var Model = PS["Model"];
-  var Prelude = PS["Prelude"];
-  var Web_DOM = PS["Web.DOM"];
-  var Web_HTML = PS["Web.HTML"];
-  var Web_XHR_FormData = PS["Web.XHR.FormData"];                 
-  var RawHTML = function (x) {
-      return x;
-  };
-  var mmoment8601 = function (s) {
-      return $foreign["_mmoment8601"](Data_Maybe.Just.create, Data_Maybe.Nothing.value, Data_Tuple.Tuple.create, s);
-  };
-  var closeWindow = function (win) {
-      return Control_Applicative.pure(Effect.applicativeEffect)($foreign["_closeWindow"](win));
-  };
-  var app$prime = function (v) {
-      return $foreign["_app"]();
-  };
-  exports["app'"] = app$prime;
-  exports["mmoment8601"] = mmoment8601;
-  exports["closeWindow"] = closeWindow;
-  exports["RawHTML"] = RawHTML;
-})(PS["Globals"] = PS["Globals"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.2
-  "use strict";
-  var Affjax = PS["Affjax"];
-  var Affjax_RequestBody = PS["Affjax.RequestBody"];
-  var Affjax_RequestHeader = PS["Affjax.RequestHeader"];
-  var Affjax_ResponseFormat = PS["Affjax.ResponseFormat"];
-  var Control_Bind = PS["Control.Bind"];
-  var Control_Semigroupoid = PS["Control.Semigroupoid"];
-  var Data_Argonaut = PS["Data.Argonaut"];
-  var Data_Array = PS["Data.Array"];
-  var Data_Either = PS["Data.Either"];
-  var Data_FormURLEncoded = PS["Data.FormURLEncoded"];
-  var Data_Functor = PS["Data.Functor"];
-  var Data_HTTP_Method = PS["Data.HTTP.Method"];
-  var Data_Maybe = PS["Data.Maybe"];
-  var Data_MediaType_Common = PS["Data.MediaType.Common"];
-  var Data_Semigroup = PS["Data.Semigroup"];
-  var Data_Show = PS["Data.Show"];
-  var Data_Unit = PS["Data.Unit"];
-  var Effect = PS["Effect"];
-  var Effect_Aff = PS["Effect.Aff"];
-  var Effect_Class = PS["Effect.Class"];
-  var Globals = PS["Globals"];
-  var Model = PS["Model"];
-  var Prelude = PS["Prelude"];
-  var Simple_JSON = PS["Simple.JSON"];
-  var Web_HTML = PS["Web.HTML"];
-  var Web_HTML_Location = PS["Web.HTML.Location"];
-  var Web_HTML_Window = PS["Web.HTML.Window"];                 
-  var Star = (function () {
-      function Star() {
-
-      };
-      Star.value = new Star();
-      return Star;
-  })();
-  var UnStar = (function () {
-      function UnStar() {
-
-      };
-      UnStar.value = new UnStar();
-      return UnStar;
-  })();
-  var showStar = new Data_Show.Show(function (v) {
-      if (v instanceof Star) {
-          return "star";
-      };
-      if (v instanceof UnStar) {
-          return "unstar";
-      };
-      throw new Error("Failed pattern match at App (line 28, column 1 - line 28, column 37): " + [ v.constructor.name ]);
-  });
-  var fetchUrl = function (method) {
-      return function (url) {
-          return function (headers) {
-              return function (content) {
-                  return function (rt) {
-                      var app = Globals["app'"](Data_Unit.unit);
-                      return Affjax.request({
-                          method: new Data_Either.Left(method),
-                          url: url,
-                          headers: Data_Array.cons(new Affjax_RequestHeader.RequestHeader(app.csrfHeaderName, app.csrfToken))(headers),
-                          content: content,
-                          username: Affjax.defaultRequest.username,
-                          password: Affjax.defaultRequest.password,
-                          withCredentials: Affjax.defaultRequest.withCredentials,
-                          responseFormat: rt
-                      });
-                  };
-              };
-          };
-      };
-  };
-  var logout = function (u) {
-      var app = Globals["app'"](u);
-      return Control_Bind.discard(Control_Bind.discardUnit)(Effect_Aff.bindAff)(Data_Functor["void"](Effect_Aff.functorAff)(fetchUrl(Data_HTTP_Method.POST.value)(app.authRlogoutR)([  ])(Data_Maybe.Nothing.value)(Affjax_ResponseFormat.ignore)))(function () {
-          return Effect_Class.liftEffect(Effect_Aff.monadEffectAff)(Control_Bind.bind(Effect.bindEffect)(Control_Bind.bind(Effect.bindEffect)(Web_HTML.window)(Web_HTML_Window.location))(Web_HTML_Location.reload));
-      });
-  };
-  var fetchPath = function (method) {
-      return function (path) {
-          return function (headers) {
-              return function (content) {
-                  return function (rt) {
-                      return fetchUrl(method)((Globals["app'"](Data_Unit.unit)).homeR + path)(headers)(content)(rt);
-                  };
-              };
-          };
-      };
-  };
-  var fetchUrlEnc = function (method) {
-      return function (path) {
-          return function (content) {
-              return function (rt) {
-                  return fetchPath(method)(path)([ new Affjax_RequestHeader.ContentType(Data_MediaType_Common.applicationFormURLEncoded) ])(Data_Functor.map(Data_Maybe.functorMaybe)(Affjax_RequestBody.FormURLEncoded.create)(content))(rt);
-              };
-          };
-      };
-  };
-  var markRead = function (bid) {
-      var path = "bm/" + (Data_Show.show(Data_Show.showInt)(bid) + "/read");
-      return fetchUrlEnc(Data_HTTP_Method.POST.value)(path)(Data_Maybe.Nothing.value)(Affjax_ResponseFormat.ignore);
-  };
-  var toggleStar = function (bid) {
-      return function (action) {
-          var path = "bm/" + (Data_Show.show(Data_Show.showInt)(bid) + ("/" + Data_Show.show(showStar)(action)));
-          return Data_Functor["void"](Effect_Aff.functorAff)(fetchUrlEnc(Data_HTTP_Method.POST.value)(path)(Data_Maybe.Nothing.value)(Affjax_ResponseFormat.ignore));
-      };
-  };
-  var fetchJson = function (dictWriteForeign) {
-      return function (method) {
-          return function (path) {
-              return function (content) {
-                  return function (rt) {
-                      return fetchPath(method)(path)([ new Affjax_RequestHeader.ContentType(Data_MediaType_Common.applicationJSON) ])(Data_Functor.map(Data_Maybe.functorMaybe)(function ($4) {
-                          return Affjax_RequestBody.string(Simple_JSON.writeJSON(dictWriteForeign)($4));
-                      })(content))(rt);
-                  };
-              };
-          };
-      };
-  };
-  var editNote = function (bm) {
-      return fetchJson(Model.note_wfI)(Data_HTTP_Method.POST.value)("api/note/add")(new Data_Maybe.Just(bm))(Affjax_ResponseFormat.json);
-  };
-  var editBookmark = function (bm) {
-      return fetchJson(Model.bookmark_wfI)(Data_HTTP_Method.POST.value)("api/add")(new Data_Maybe.Just(bm))(Affjax_ResponseFormat.ignore);
-  };
-  var editAccountSettings = function (us) {
-      return fetchJson(Model.usersettings_wfI)(Data_HTTP_Method.POST.value)("api/accountSettings")(new Data_Maybe.Just(us))(Affjax_ResponseFormat.ignore);
-  };
-  var destroyNote = function (nid) {
-      return fetchUrlEnc(Data_HTTP_Method.DELETE.value)("api/note/" + Data_Show.show(Data_Show.showInt)(nid))(Data_Maybe.Nothing.value)(Affjax_ResponseFormat.ignore);
-  };
-  var destroy = function (bid) {
-      return fetchUrlEnc(Data_HTTP_Method.DELETE.value)("bm/" + Data_Show.show(Data_Show.showInt)(bid))(Data_Maybe.Nothing.value)(Affjax_ResponseFormat.ignore);
-  };
-  exports["Star"] = Star;
-  exports["UnStar"] = UnStar;
-  exports["toggleStar"] = toggleStar;
-  exports["destroy"] = destroy;
-  exports["markRead"] = markRead;
-  exports["editBookmark"] = editBookmark;
-  exports["editNote"] = editNote;
-  exports["destroyNote"] = destroyNote;
-  exports["editAccountSettings"] = editAccountSettings;
-  exports["logout"] = logout;
-  exports["fetchJson"] = fetchJson;
-  exports["fetchUrlEnc"] = fetchUrlEnc;
-  exports["fetchPath"] = fetchPath;
-  exports["fetchUrl"] = fetchUrl;
-  exports["showStar"] = showStar;
-})(PS["App"] = PS["App"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.2
-  "use strict";
-  var InputButton = (function () {
-      function InputButton() {
-
-      };
-      InputButton.value = new InputButton();
-      return InputButton;
-  })();
-  var InputCheckbox = (function () {
-      function InputCheckbox() {
-
-      };
-      InputCheckbox.value = new InputCheckbox();
-      return InputCheckbox;
-  })();
-  var InputColor = (function () {
-      function InputColor() {
-
-      };
-      InputColor.value = new InputColor();
-      return InputColor;
-  })();
-  var InputDate = (function () {
-      function InputDate() {
-
-      };
-      InputDate.value = new InputDate();
-      return InputDate;
-  })();
-  var InputDatetimeLocal = (function () {
-      function InputDatetimeLocal() {
-
-      };
-      InputDatetimeLocal.value = new InputDatetimeLocal();
-      return InputDatetimeLocal;
-  })();
-  var InputEmail = (function () {
-      function InputEmail() {
-
-      };
-      InputEmail.value = new InputEmail();
-      return InputEmail;
-  })();
-  var InputFile = (function () {
-      function InputFile() {
-
-      };
-      InputFile.value = new InputFile();
-      return InputFile;
-  })();
-  var InputHidden = (function () {
-      function InputHidden() {
-
-      };
-      InputHidden.value = new InputHidden();
-      return InputHidden;
-  })();
-  var InputImage = (function () {
-      function InputImage() {
-
-      };
-      InputImage.value = new InputImage();
-      return InputImage;
-  })();
-  var InputMonth = (function () {
-      function InputMonth() {
-
-      };
-      InputMonth.value = new InputMonth();
-      return InputMonth;
-  })();
-  var InputNumber = (function () {
-      function InputNumber() {
-
-      };
-      InputNumber.value = new InputNumber();
-      return InputNumber;
-  })();
-  var InputPassword = (function () {
-      function InputPassword() {
-
-      };
-      InputPassword.value = new InputPassword();
-      return InputPassword;
-  })();
-  var InputRadio = (function () {
-      function InputRadio() {
-
-      };
-      InputRadio.value = new InputRadio();
-      return InputRadio;
-  })();
-  var InputRange = (function () {
-      function InputRange() {
-
-      };
-      InputRange.value = new InputRange();
-      return InputRange;
-  })();
-  var InputReset = (function () {
-      function InputReset() {
-
-      };
-      InputReset.value = new InputReset();
-      return InputReset;
-  })();
-  var InputSearch = (function () {
-      function InputSearch() {
-
-      };
-      InputSearch.value = new InputSearch();
-      return InputSearch;
-  })();
-  var InputSubmit = (function () {
-      function InputSubmit() {
-
-      };
-      InputSubmit.value = new InputSubmit();
-      return InputSubmit;
-  })();
-  var InputTel = (function () {
-      function InputTel() {
-
-      };
-      InputTel.value = new InputTel();
-      return InputTel;
-  })();
-  var InputText = (function () {
-      function InputText() {
-
-      };
-      InputText.value = new InputText();
-      return InputText;
-  })();
-  var InputTime = (function () {
-      function InputTime() {
-
-      };
-      InputTime.value = new InputTime();
-      return InputTime;
-  })();
-  var InputUrl = (function () {
-      function InputUrl() {
-
-      };
-      InputUrl.value = new InputUrl();
-      return InputUrl;
-  })();
-  var InputWeek = (function () {
-      function InputWeek() {
-
-      };
-      InputWeek.value = new InputWeek();
-      return InputWeek;
-  })();
-  var renderInputType = function (v) {
-      if (v instanceof InputButton) {
-          return "button";
-      };
-      if (v instanceof InputCheckbox) {
-          return "checkbox";
-      };
-      if (v instanceof InputColor) {
-          return "color";
-      };
-      if (v instanceof InputDate) {
-          return "date";
-      };
-      if (v instanceof InputDatetimeLocal) {
-          return "datetime-local";
-      };
-      if (v instanceof InputEmail) {
-          return "email";
-      };
-      if (v instanceof InputFile) {
-          return "file";
-      };
-      if (v instanceof InputHidden) {
-          return "hidden";
-      };
-      if (v instanceof InputImage) {
-          return "image";
-      };
-      if (v instanceof InputMonth) {
-          return "month";
-      };
-      if (v instanceof InputNumber) {
-          return "number";
-      };
-      if (v instanceof InputPassword) {
-          return "password";
-      };
-      if (v instanceof InputRadio) {
-          return "radio";
-      };
-      if (v instanceof InputRange) {
-          return "range";
-      };
-      if (v instanceof InputReset) {
-          return "reset";
-      };
-      if (v instanceof InputSearch) {
-          return "search";
-      };
-      if (v instanceof InputSubmit) {
-          return "submit";
-      };
-      if (v instanceof InputTel) {
-          return "tel";
-      };
-      if (v instanceof InputText) {
-          return "text";
-      };
-      if (v instanceof InputTime) {
-          return "time";
-      };
-      if (v instanceof InputUrl) {
-          return "url";
-      };
-      if (v instanceof InputWeek) {
-          return "week";
-      };
-      throw new Error("Failed pattern match at DOM.HTML.Indexed.InputType (line 28, column 19 - line 50, column 16): " + [ v.constructor.name ]);
-  };
-  exports["InputButton"] = InputButton;
-  exports["InputCheckbox"] = InputCheckbox;
-  exports["InputColor"] = InputColor;
-  exports["InputDate"] = InputDate;
-  exports["InputDatetimeLocal"] = InputDatetimeLocal;
-  exports["InputEmail"] = InputEmail;
-  exports["InputFile"] = InputFile;
-  exports["InputHidden"] = InputHidden;
-  exports["InputImage"] = InputImage;
-  exports["InputMonth"] = InputMonth;
-  exports["InputNumber"] = InputNumber;
-  exports["InputPassword"] = InputPassword;
-  exports["InputRadio"] = InputRadio;
-  exports["InputRange"] = InputRange;
-  exports["InputReset"] = InputReset;
-  exports["InputSearch"] = InputSearch;
-  exports["InputSubmit"] = InputSubmit;
-  exports["InputTel"] = InputTel;
-  exports["InputText"] = InputText;
-  exports["InputTime"] = InputTime;
-  exports["InputUrl"] = InputUrl;
-  exports["InputWeek"] = InputWeek;
-  exports["renderInputType"] = renderInputType;
-})(PS["DOM.HTML.Indexed.InputType"] = PS["DOM.HTML.Indexed.InputType"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.2
-  "use strict";
-  var Control_Category = PS["Control.Category"];
-  var Control_Semigroupoid = PS["Control.Semigroupoid"];
-  var Data_Newtype = PS["Data.Newtype"];
-  var Prelude = PS["Prelude"];                 
-  var Profunctor = function (dimap) {
-      this.dimap = dimap;
-  };
-  var profunctorFn = new Profunctor(function (a2b) {
-      return function (c2d) {
-          return function (b2c) {
-              return function ($9) {
-                  return c2d(b2c(a2b($9)));
-              };
-          };
-      };
-  });
-  var dimap = function (dict) {
-      return dict.dimap;
-  };
-  var rmap = function (dictProfunctor) {
-      return function (b2c) {
-          return dimap(dictProfunctor)(Control_Category.identity(Control_Category.categoryFn))(b2c);
-      };
-  };
-  exports["dimap"] = dimap;
-  exports["Profunctor"] = Profunctor;
-  exports["rmap"] = rmap;
-  exports["profunctorFn"] = profunctorFn;
-})(PS["Data.Profunctor"] = PS["Data.Profunctor"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.2
-  "use strict";
-  var Control_Category = PS["Control.Category"];
-  var Control_Semigroupoid = PS["Control.Semigroupoid"];
-  var Data_Functor = PS["Data.Functor"];
-  var Data_Profunctor = PS["Data.Profunctor"];
-  var Data_Tuple = PS["Data.Tuple"];
-  var Prelude = PS["Prelude"];                 
-  var Strong = function (Profunctor0, first, second) {
-      this.Profunctor0 = Profunctor0;
-      this.first = first;
-      this.second = second;
-  };
-  var strongFn = new Strong(function () {
-      return Data_Profunctor.profunctorFn;
-  }, function (a2b) {
-      return function (v) {
-          return new Data_Tuple.Tuple(a2b(v.value0), v.value1);
-      };
-  }, Data_Functor.map(Data_Tuple.functorTuple));
-  var second = function (dict) {
-      return dict.second;
-  };
-  var first = function (dict) {
-      return dict.first;
-  };
-  exports["first"] = first;
-  exports["second"] = second;
-  exports["Strong"] = Strong;
-  exports["strongFn"] = strongFn;
-})(PS["Data.Profunctor.Strong"] = PS["Data.Profunctor.Strong"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.2
-  "use strict";
-  var Control_Semigroupoid = PS["Control.Semigroupoid"];
-  var Data_Const = PS["Data.Const"];
-  var Data_Either = PS["Data.Either"];
-  var Data_Functor = PS["Data.Functor"];
-  var Data_Lens_Internal_Wander = PS["Data.Lens.Internal.Wander"];
-  var Data_Monoid = PS["Data.Monoid"];
-  var Data_Newtype = PS["Data.Newtype"];
-  var Data_Profunctor = PS["Data.Profunctor"];
-  var Data_Profunctor_Choice = PS["Data.Profunctor.Choice"];
-  var Data_Profunctor_Cochoice = PS["Data.Profunctor.Cochoice"];
-  var Data_Profunctor_Strong = PS["Data.Profunctor.Strong"];
-  var Data_Semigroup = PS["Data.Semigroup"];
-  var Data_Tuple = PS["Data.Tuple"];
-  var Prelude = PS["Prelude"];                 
-  var Forget = function (x) {
-      return x;
-  };
-  var profunctorForget = new Data_Profunctor.Profunctor(function (f) {
-      return function (v) {
-          return function (v1) {
-              return function ($27) {
-                  return v1(f($27));
-              };
-          };
-      };
-  });
-  var strongForget = new Data_Profunctor_Strong.Strong(function () {
-      return profunctorForget;
-  }, function (v) {
-      return function ($28) {
-          return v(Data_Tuple.fst($28));
-      };
-  }, function (v) {
-      return function ($29) {
-          return v(Data_Tuple.snd($29));
-      };
-  });
-  var newtypeForget = new Data_Newtype.Newtype(function (n) {
-      return n;
-  }, Forget);
-  exports["Forget"] = Forget;
-  exports["newtypeForget"] = newtypeForget;
-  exports["profunctorForget"] = profunctorForget;
-  exports["strongForget"] = strongForget;
-})(PS["Data.Lens.Internal.Forget"] = PS["Data.Lens.Internal.Forget"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.2
-  "use strict";
-  var Control_Category = PS["Control.Category"];
-  var Control_Monad_State_Class = PS["Control.Monad.State.Class"];
-  var Control_Semigroupoid = PS["Control.Semigroupoid"];
-  var Data_Function = PS["Data.Function"];
-  var Data_Lens_Internal_Forget = PS["Data.Lens.Internal.Forget"];
-  var Data_Lens_Internal_Indexed = PS["Data.Lens.Internal.Indexed"];
-  var Data_Lens_Types = PS["Data.Lens.Types"];
-  var Data_Newtype = PS["Data.Newtype"];
-  var Data_Profunctor_Strong = PS["Data.Profunctor.Strong"];
-  var Data_Tuple = PS["Data.Tuple"];
-  var Prelude = PS["Prelude"];                 
-  var view = function (l) {
-      return Data_Newtype.unwrap(Data_Lens_Internal_Forget.newtypeForget)(l(Control_Category.identity(Control_Category.categoryFn)));
-  };
-  var viewOn = function (s) {
-      return function (l) {
-          return view(l)(s);
-      };
-  };
-  var use = function (dictMonadState) {
-      return function (p) {
-          return Control_Monad_State_Class.gets(dictMonadState)(function (v) {
-              return viewOn(v)(p);
-          });
-      };
-  };
-  exports["viewOn"] = viewOn;
-  exports["view"] = view;
-  exports["use"] = use;
-})(PS["Data.Lens.Getter"] = PS["Data.Lens.Getter"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.2
-  "use strict";
-  var Control_Category = PS["Control.Category"];
-  var Data_Lens_Internal_Indexed = PS["Data.Lens.Internal.Indexed"];
-  var Data_Lens_Internal_Shop = PS["Data.Lens.Internal.Shop"];
-  var Data_Lens_Types = PS["Data.Lens.Types"];
-  var Data_Newtype = PS["Data.Newtype"];
-  var Data_Profunctor = PS["Data.Profunctor"];
-  var Data_Profunctor_Strong = PS["Data.Profunctor.Strong"];
-  var Data_Tuple = PS["Data.Tuple"];
-  var Prelude = PS["Prelude"];
-  var lens$prime = function (to) {
-      return function (dictStrong) {
-          return function (pab) {
-              return Data_Profunctor.dimap(dictStrong.Profunctor0())(to)(function (v) {
-                  return v.value1(v.value0);
-              })(Data_Profunctor_Strong.first(dictStrong)(pab));
-          };
-      };
-  };
-  var lens = function (get) {
-      return function (set) {
-          return function (dictStrong) {
-              return lens$prime(function (s) {
-                  return new Data_Tuple.Tuple(get(s), function (b) {
-                      return set(s)(b);
-                  });
-              })(dictStrong);
-          };
-      };
-  };
-  exports["lens"] = lens;
-})(PS["Data.Lens.Lens"] = PS["Data.Lens.Lens"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.2
-  "use strict";
-  var Control_Monad_State_Class = PS["Control.Monad.State.Class"];
-  var Control_Semigroupoid = PS["Control.Semigroupoid"];
-  var Data_EuclideanRing = PS["Data.EuclideanRing"];
-  var Data_Function = PS["Data.Function"];
-  var Data_Functor = PS["Data.Functor"];
-  var Data_HeytingAlgebra = PS["Data.HeytingAlgebra"];
-  var Data_Lens_Internal_Indexed = PS["Data.Lens.Internal.Indexed"];
-  var Data_Lens_Types = PS["Data.Lens.Types"];
-  var Data_Maybe = PS["Data.Maybe"];
-  var Data_Ring = PS["Data.Ring"];
-  var Data_Semigroup = PS["Data.Semigroup"];
-  var Data_Semiring = PS["Data.Semiring"];
-  var Data_Tuple = PS["Data.Tuple"];
-  var Prelude = PS["Prelude"];                 
-  var over = function (l) {
-      return l;
-  };
-  var set = function (l) {
-      return function (b) {
-          return over(l)(Data_Function["const"](b));
-      };
-  };
-  var modifying = function (dictMonadState) {
-      return function (p) {
-          return function (f) {
-              return Data_Functor["void"]((((dictMonadState.Monad0()).Bind1()).Apply0()).Functor0())(Control_Monad_State_Class.modify(dictMonadState)(over(p)(f)));
-          };
-      };
-  };
-  var assign = function (dictMonadState) {
-      return function (p) {
-          return function (b) {
-              return Data_Functor["void"]((((dictMonadState.Monad0()).Bind1()).Apply0()).Functor0())(Control_Monad_State_Class.modify(dictMonadState)(set(p)(b)));
-          };
-      };
-  };
-  exports["over"] = over;
-  exports["set"] = set;
-  exports["assign"] = assign;
-  exports["modifying"] = modifying;
-})(PS["Data.Lens.Setter"] = PS["Data.Lens.Setter"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.2
-  "use strict";
-  var Control_Category = PS["Control.Category"];
-  var Control_Monad_Cont_Trans = PS["Control.Monad.Cont.Trans"];
-  var Control_Monad_Except_Trans = PS["Control.Monad.Except.Trans"];
-  var Control_Monad_List_Trans = PS["Control.Monad.List.Trans"];
-  var Control_Monad_Maybe_Trans = PS["Control.Monad.Maybe.Trans"];
-  var Control_Monad_RWS_Trans = PS["Control.Monad.RWS.Trans"];
-  var Control_Monad_Reader_Trans = PS["Control.Monad.Reader.Trans"];
-  var Control_Monad_State_Trans = PS["Control.Monad.State.Trans"];
-  var Control_Monad_Trans_Class = PS["Control.Monad.Trans.Class"];
-  var Control_Monad_Writer_Trans = PS["Control.Monad.Writer.Trans"];
-  var Control_Semigroupoid = PS["Control.Semigroupoid"];
-  var Effect_Aff = PS["Effect.Aff"];
-  var Effect_Class = PS["Effect.Class"];
-  var Prelude = PS["Prelude"];                 
-  var MonadAff = function (MonadEffect0, liftAff) {
-      this.MonadEffect0 = MonadEffect0;
-      this.liftAff = liftAff;
-  };
-  var monadAffAff = new MonadAff(function () {
-      return Effect_Aff.monadEffectAff;
-  }, Control_Category.identity(Control_Category.categoryFn));
-  var liftAff = function (dict) {
-      return dict.liftAff;
-  };
-  exports["liftAff"] = liftAff;
-  exports["MonadAff"] = MonadAff;
-  exports["monadAffAff"] = monadAffAff;
-})(PS["Effect.Aff.Class"] = PS["Effect.Aff.Class"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.2
-  "use strict";
-  var Data_Eq = PS["Data.Eq"];
-  var Data_Ord = PS["Data.Ord"];
-  var Prelude = PS["Prelude"];                 
-  var OrdBox = (function () {
-      function OrdBox(value0, value1, value2) {
-          this.value0 = value0;
-          this.value1 = value1;
-          this.value2 = value2;
-      };
-      OrdBox.create = function (value0) {
-          return function (value1) {
-              return function (value2) {
-                  return new OrdBox(value0, value1, value2);
-              };
-          };
-      };
-      return OrdBox;
-  })();
-  var unOrdBox = function (v) {
-      return v.value2;
-  };
-  var mkOrdBox = function (dictOrd) {
-      return OrdBox.create(Data_Eq.eq(dictOrd.Eq0()))(Data_Ord.compare(dictOrd));
-  };
-  var eqOrdBox = new Data_Eq.Eq(function (v) {
-      return function (v1) {
-          return v.value0(v.value2)(v1.value2);
-      };
-  });
-  var ordOrdBox = new Data_Ord.Ord(function () {
-      return eqOrdBox;
-  }, function (v) {
-      return function (v1) {
-          return v.value1(v.value2)(v1.value2);
-      };
-  });
-  exports["mkOrdBox"] = mkOrdBox;
-  exports["unOrdBox"] = unOrdBox;
-  exports["eqOrdBox"] = eqOrdBox;
-  exports["ordOrdBox"] = ordOrdBox;
-})(PS["Halogen.Data.OrdBox"] = PS["Halogen.Data.OrdBox"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.2
-  "use strict";
-  var ButtonButton = (function () {
-      function ButtonButton() {
-
-      };
-      ButtonButton.value = new ButtonButton();
-      return ButtonButton;
-  })();
-  var ButtonSubmit = (function () {
-      function ButtonSubmit() {
-
-      };
-      ButtonSubmit.value = new ButtonSubmit();
-      return ButtonSubmit;
-  })();
-  var ButtonReset = (function () {
-      function ButtonReset() {
-
-      };
-      ButtonReset.value = new ButtonReset();
-      return ButtonReset;
-  })();
-  var renderButtonType = function (v) {
-      if (v instanceof ButtonButton) {
-          return "button";
-      };
-      if (v instanceof ButtonSubmit) {
-          return "submit";
-      };
-      if (v instanceof ButtonReset) {
-          return "reset";
-      };
-      throw new Error("Failed pattern match at DOM.HTML.Indexed.ButtonType (line 9, column 20 - line 12, column 18): " + [ v.constructor.name ]);
-  };
-  exports["ButtonButton"] = ButtonButton;
-  exports["ButtonSubmit"] = ButtonSubmit;
-  exports["ButtonReset"] = ButtonReset;
-  exports["renderButtonType"] = renderButtonType;
-})(PS["DOM.HTML.Indexed.ButtonType"] = PS["DOM.HTML.Indexed.ButtonType"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.2
-  "use strict";
-  var On = (function () {
-      function On() {
-
-      };
-      On.value = new On();
-      return On;
-  })();
-  var Off = (function () {
-      function Off() {
-
-      };
-      Off.value = new Off();
-      return Off;
-  })();
-  var renderOnOff = function (v) {
-      if (v instanceof On) {
-          return "on";
-      };
-      if (v instanceof Off) {
-          return "off";
-      };
-      throw new Error("Failed pattern match at DOM.HTML.Indexed.OnOff (line 8, column 15 - line 10, column 10): " + [ v.constructor.name ]);
-  };
-  exports["On"] = On;
-  exports["Off"] = Off;
-  exports["renderOnOff"] = renderOnOff;
-})(PS["DOM.HTML.Indexed.OnOff"] = PS["DOM.HTML.Indexed.OnOff"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.2
-  "use strict";
-  var Data_Bifunctor = PS["Data.Bifunctor"];
-  var Data_Eq = PS["Data.Eq"];
-  var Data_Functor = PS["Data.Functor"];
-  var Data_Maybe = PS["Data.Maybe"];
-  var Data_Newtype = PS["Data.Newtype"];
-  var Data_Ord = PS["Data.Ord"];
-  var Prelude = PS["Prelude"];
-  var Web_DOM = PS["Web.DOM"];
-  var RefUpdate = (function () {
-      function RefUpdate(value0, value1, value2) {
-          this.value0 = value0;
-          this.value1 = value1;
-          this.value2 = value2;
-      };
-      RefUpdate.create = function (value0) {
-          return function (value1) {
-              return function (value2) {
-                  return new RefUpdate(value0, value1, value2);
-              };
-          };
-      };
-      return RefUpdate;
-  })();
-  var Query = (function () {
-      function Query(value0) {
-          this.value0 = value0;
-      };
-      Query.create = function (value0) {
-          return new Query(value0);
-      };
-      return Query;
-  })();                             
-  var bifunctorInputF = new Data_Bifunctor.Bifunctor(function (f) {
-      return function (g) {
-          return function (v) {
-              if (v instanceof RefUpdate) {
-                  return new RefUpdate(v.value0, v.value1, f(v.value2));
-              };
-              if (v instanceof Query) {
-                  return new Query(g(v.value0));
-              };
-              throw new Error("Failed pattern match at Halogen.Query.InputF (line 21, column 15 - line 23, column 27): " + [ v.constructor.name ]);
-          };
-      };
-  });
-  var functorInputF = new Data_Functor.Functor(Data_Bifunctor.rmap(bifunctorInputF));
-  exports["RefUpdate"] = RefUpdate;
-  exports["Query"] = Query;
-  exports["bifunctorInputF"] = bifunctorInputF;
-  exports["functorInputF"] = functorInputF;
-})(PS["Halogen.Query.InputF"] = PS["Halogen.Query.InputF"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.2
-  "use strict";
-  var Effect = PS["Effect"];
-  var Effect_Uncurried = PS["Effect.Uncurried"];
-  var Prelude = PS["Prelude"];                 
-  var Step = (function () {
-      function Step(value0, value1, value2) {
-          this.value0 = value0;
-          this.value1 = value1;
-          this.value2 = value2;
-      };
-      Step.create = function (value0) {
-          return function (value1) {
-              return function (value2) {
-                  return new Step(value0, value1, value2);
-              };
-          };
-      };
-      return Step;
-  })();
-  var step = function (v) {
-      return v.value1;
-  };
-  var halt = function (v) {
-      return v.value2;
-  };
-  var extract = function (v) {
-      return v.value0;
-  };
-  exports["Step"] = Step;
-  exports["extract"] = extract;
-  exports["step"] = step;
-  exports["halt"] = halt;
-})(PS["Halogen.VDom.Machine"] = PS["Halogen.VDom.Machine"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.2
-  "use strict";
-  var Control_Category = PS["Control.Category"];
-  var Control_Semigroupoid = PS["Control.Semigroupoid"];
-  var Data_Bifunctor = PS["Data.Bifunctor"];
-  var Data_Eq = PS["Data.Eq"];
-  var Data_Functor = PS["Data.Functor"];
-  var Data_HeytingAlgebra = PS["Data.HeytingAlgebra"];
-  var Data_Maybe = PS["Data.Maybe"];
-  var Data_Newtype = PS["Data.Newtype"];
-  var Data_Ord = PS["Data.Ord"];
-  var Data_Ordering = PS["Data.Ordering"];
-  var Data_Tuple = PS["Data.Tuple"];
-  var Prelude = PS["Prelude"];
-  var Unsafe_Coerce = PS["Unsafe.Coerce"];
-  var ElemSpec = (function () {
-      function ElemSpec(value0, value1, value2) {
-          this.value0 = value0;
-          this.value1 = value1;
-          this.value2 = value2;
-      };
-      ElemSpec.create = function (value0) {
-          return function (value1) {
-              return function (value2) {
-                  return new ElemSpec(value0, value1, value2);
-              };
-          };
-      };
-      return ElemSpec;
-  })();
-  var Text = (function () {
-      function Text(value0) {
-          this.value0 = value0;
-      };
-      Text.create = function (value0) {
-          return new Text(value0);
-      };
-      return Text;
-  })();
-  var Elem = (function () {
-      function Elem(value0, value1) {
-          this.value0 = value0;
-          this.value1 = value1;
-      };
-      Elem.create = function (value0) {
-          return function (value1) {
-              return new Elem(value0, value1);
-          };
-      };
-      return Elem;
-  })();
-  var Keyed = (function () {
-      function Keyed(value0, value1) {
-          this.value0 = value0;
-          this.value1 = value1;
-      };
-      Keyed.create = function (value0) {
-          return function (value1) {
-              return new Keyed(value0, value1);
-          };
-      };
-      return Keyed;
-  })();
-  var Widget = (function () {
-      function Widget(value0) {
-          this.value0 = value0;
-      };
-      Widget.create = function (value0) {
-          return new Widget(value0);
-      };
-      return Widget;
-  })();
-  var Grafted = (function () {
-      function Grafted(value0) {
-          this.value0 = value0;
-      };
-      Grafted.create = function (value0) {
-          return new Grafted(value0);
-      };
-      return Grafted;
-  })();
-  var Graft = (function () {
-      function Graft(value0, value1, value2) {
-          this.value0 = value0;
-          this.value1 = value1;
-          this.value2 = value2;
-      };
-      Graft.create = function (value0) {
-          return function (value1) {
-              return function (value2) {
-                  return new Graft(value0, value1, value2);
-              };
-          };
-      };
-      return Graft;
-  })();
-  var unGraft = function (f) {
-      return function ($90) {
-          return f($90);
-      };
-  };           
-  var graft = Unsafe_Coerce.unsafeCoerce;
-  var functorElemSpec = new Data_Functor.Functor(function (f) {
-      return function (m) {
-          return new ElemSpec(m.value0, m.value1, f(m.value2));
-      };
-  });
-  var bifunctorGraft = new Data_Bifunctor.Bifunctor(function (f) {
-      return function (g) {
-          return unGraft(function (v) {
-              return graft(new Graft(function ($92) {
-                  return f(v.value0($92));
-              }, function ($93) {
-                  return g(v.value1($93));
-              }, v.value2));
-          });
-      };
-  });
-  var bifunctorVDom = new Data_Bifunctor.Bifunctor(function (f) {
-      return function (g) {
-          return function (v) {
-              if (v instanceof Text) {
-                  return new Text(v.value0);
-              };
-              if (v instanceof Grafted) {
-                  return new Grafted(Data_Bifunctor.bimap(bifunctorGraft)(f)(g)(v.value0));
-              };
-              return new Grafted(graft(new Graft(f, g, v)));
-          };
-      };
-  });
-  var runGraft = unGraft(function (v) {
-      var go = function (v2) {
-          if (v2 instanceof Text) {
-              return new Text(v2.value0);
-          };
-          if (v2 instanceof Elem) {
-              return new Elem(Data_Functor.map(functorElemSpec)(v.value0)(v2.value0), Data_Functor.map(Data_Functor.functorArray)(go)(v2.value1));
-          };
-          if (v2 instanceof Keyed) {
-              return new Keyed(Data_Functor.map(functorElemSpec)(v.value0)(v2.value0), Data_Functor.map(Data_Functor.functorArray)(Data_Functor.map(Data_Tuple.functorTuple)(go))(v2.value1));
-          };
-          if (v2 instanceof Widget) {
-              return new Widget(v.value1(v2.value0));
-          };
-          if (v2 instanceof Grafted) {
-              return new Grafted(Data_Bifunctor.bimap(bifunctorGraft)(v.value0)(v.value1)(v2.value0));
-          };
-          throw new Error("Failed pattern match at Halogen.VDom.Types (line 74, column 7 - line 74, column 27): " + [ v2.constructor.name ]);
-      };
-      return go(v.value2);
-  });
-  exports["Text"] = Text;
-  exports["Elem"] = Elem;
-  exports["Keyed"] = Keyed;
-  exports["Widget"] = Widget;
-  exports["Grafted"] = Grafted;
-  exports["Graft"] = Graft;
-  exports["graft"] = graft;
-  exports["unGraft"] = unGraft;
-  exports["runGraft"] = runGraft;
-  exports["ElemSpec"] = ElemSpec;
-  exports["bifunctorVDom"] = bifunctorVDom;
-  exports["bifunctorGraft"] = bifunctorGraft;
-  exports["functorElemSpec"] = functorElemSpec;
-})(PS["Halogen.VDom.Types"] = PS["Halogen.VDom.Types"] || {});
-(function(exports) {
-    "use strict";
-
-  exports.unsafeGetAny = function (key, obj) {
-    return obj[key];
-  };
-
-  exports.unsafeHasAny = function (key, obj) {
-    return obj.hasOwnProperty(key);
-  };
-
-  exports.unsafeSetAny = function (key, val, obj) {
-      obj[key] = val;
-  };
-
-  exports.forE = function (a, f) {
-      var b = [];
-      for (var i = 0; i < a.length; i++) {
-        b.push(f(i, a[i]));
-      }
-      return b;
-  };
-
-  exports.forInE = function (o, f) {
-    var ks = Object.keys(o);
-    for (var i = 0; i < ks.length; i++) {
-      var k = ks[i];
-      f(k, o[k]);
-    }
-  };
-
-  exports.diffWithIxE = function (a1, a2, f1, f2, f3) {
-    var a3 = [];
-    var l1 = a1.length;
-    var l2 = a2.length;
-    var i  = 0;
-    while (1) {
-      if (i < l1) {
-        if (i < l2) {
-          a3.push(f1(i, a1[i], a2[i]));
-        } else {
-          f2(i, a1[i]);
-        }
-      } else if (i < l2) {
-        a3.push(f3(i, a2[i]));
-      } else {
-        break;
-      }
-      i++;
-    }
-    return a3;
-  };
-
-  exports.strMapWithIxE = function (as, fk, f) {
-    var o = {};
-    for (var i = 0; i < as.length; i++) {
-      var a = as[i];
-      var k = fk(a);
-      o[k] = f(k, i, a);
-    }
-    return o;
-  };
-
-  exports.diffWithKeyAndIxE = function (o1, as, fk, f1, f2, f3) {
-    var o2 = {};
-    for (var i = 0; i < as.length; i++) {
-      var a = as[i];
-      var k = fk(a);
-      if (o1.hasOwnProperty(k)) {
-        o2[k] = f1(k, i, o1[k], a);
-      } else {
-        o2[k] = f3(k, i, a);
-      }
-    }
-    for (var k in o1) {
-      if (k in o2) {
-        continue;
-      }
-      f2(k, o1[k]);
-    }
-    return o2;
-  };
-
-  exports.refEq = function (a, b) {
-    return a === b;
-  };
-
-  exports.createTextNode = function (s, doc) {
-    return doc.createTextNode(s);
-  };
-
-  exports.setTextContent = function (s, n) {
-    n.textContent = s;
-  };
-
-  exports.createElement = function (ns, name, doc) {
-    if (ns != null) {
-      return doc.createElementNS(ns, name);
-    } else {
-      return doc.createElement(name)
-    }
-  };
-
-  exports.insertChildIx = function (i, a, b) {
-    var n = b.childNodes.item(i) || null;
-    if (n !== a) {
-      b.insertBefore(a, n);
-    }
-  };
-
-  exports.removeChild = function (a, b) {
-    if (b && a.parentNode === b) {
-      b.removeChild(a);
-    }
-  };
-
-  exports.parentNode = function (a) {
-    return a.parentNode;
-  };
-
-  exports.setAttribute = function (ns, attr, val, el) {
-    if (ns != null) {
-      el.setAttributeNS(ns, attr, val);
-    } else {
-      el.setAttribute(attr, val);
-    }
-  };
-
-  exports.removeAttribute = function (ns, attr, el) {
-    if (ns != null) {
-      el.removeAttributeNS(ns, attr);
-    } else {
-      el.removeAttribute(attr);
-    }
-  };
-
-  exports.addEventListener = function (ev, listener, el) {
-    el.addEventListener(ev, listener, false);
-  };
-
-  exports.removeEventListener = function (ev, listener, el) {
-    el.removeEventListener(ev, listener, false);
-  };
-
-  exports.jsUndefined = void 0;
-})(PS["Halogen.VDom.Util"] = PS["Halogen.VDom.Util"] || {});
-(function(exports) {
-    "use strict";
-
-  var getEffProp = function (name) {
-    return function (node) {
-      return function () {
-        return node[name];
-      };
-    };
-  };                                                   
-
-  exports._parentNode = getEffProp("parentNode");          
-
-  exports._nextSibling = getEffProp("nextSibling");
-
-  exports.insertBefore = function (node1) {
-    return function (node2) {
-      return function (parent) {
-        return function () {
-          return parent.insertBefore(node1, node2);
-        };
-      };
-    };
-  };
-
-  exports.appendChild = function (node) {
-    return function (parent) {
-      return function () {
-        return parent.appendChild(node);
-      };
-    };
-  };
-
-  exports.removeChild = function (node) {
-    return function (parent) {
-      return function () {
-        return parent.removeChild(node);
-      };
-    };
-  };
-})(PS["Web.DOM.Node"] = PS["Web.DOM.Node"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.2
-  "use strict";
-  var $foreign = PS["Web.DOM.Node"];
-  var Control_Semigroupoid = PS["Control.Semigroupoid"];
-  var Data_Enum = PS["Data.Enum"];
-  var Data_Functor = PS["Data.Functor"];
-  var Data_Maybe = PS["Data.Maybe"];
-  var Data_Nullable = PS["Data.Nullable"];
-  var Effect = PS["Effect"];
-  var Prelude = PS["Prelude"];
-  var Unsafe_Coerce = PS["Unsafe.Coerce"];
-  var Web_DOM_Document = PS["Web.DOM.Document"];
-  var Web_DOM_Element = PS["Web.DOM.Element"];
-  var Web_DOM_Internal_Types = PS["Web.DOM.Internal.Types"];
-  var Web_DOM_NodeType = PS["Web.DOM.NodeType"];
-  var Web_Event_EventTarget = PS["Web.Event.EventTarget"];
-  var Web_Internal_FFI = PS["Web.Internal.FFI"];
-  var parentNode = function ($2) {
-      return Data_Functor.map(Effect.functorEffect)(Data_Nullable.toMaybe)($foreign["_parentNode"]($2));
-  };
-  var nextSibling = function ($6) {
-      return Data_Functor.map(Effect.functorEffect)(Data_Nullable.toMaybe)($foreign["_nextSibling"]($6));
-  };
-  exports["parentNode"] = parentNode;
-  exports["nextSibling"] = nextSibling;
-  exports["insertBefore"] = $foreign.insertBefore;
-  exports["appendChild"] = $foreign.appendChild;
-  exports["removeChild"] = $foreign.removeChild;
-})(PS["Web.DOM.Node"] = PS["Web.DOM.Node"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.2
-  "use strict";
-  var $foreign = PS["Halogen.VDom.Util"];
-  var Control_Applicative = PS["Control.Applicative"];
-  var Data_Function_Uncurried = PS["Data.Function.Uncurried"];
-  var Data_Nullable = PS["Data.Nullable"];
-  var Data_Unit = PS["Data.Unit"];
-  var Effect = PS["Effect"];
-  var Effect_Uncurried = PS["Effect.Uncurried"];
-  var Foreign_Object = PS["Foreign.Object"];
-  var Foreign_Object_ST = PS["Foreign.Object.ST"];
-  var Halogen_VDom_Types = PS["Halogen.VDom.Types"];
-  var Prelude = PS["Prelude"];
-  var Unsafe_Coerce = PS["Unsafe.Coerce"];
-  var Web_DOM_Document = PS["Web.DOM.Document"];
-  var Web_DOM_Element = PS["Web.DOM.Element"];
-  var Web_DOM_Node = PS["Web.DOM.Node"];
-  var Web_Event_EventTarget = PS["Web.Event.EventTarget"];                 
-  var unsafeLookup = $foreign.unsafeGetAny;
-  var unsafeFreeze = Unsafe_Coerce.unsafeCoerce;
-  var pokeMutMap = $foreign.unsafeSetAny;
-  var newMutMap = Foreign_Object_ST["new"];
-  var effectUnit = Control_Applicative.pure(Effect.applicativeEffect)(Data_Unit.unit);
-  exports["effectUnit"] = effectUnit;
-  exports["newMutMap"] = newMutMap;
-  exports["pokeMutMap"] = pokeMutMap;
-  exports["unsafeFreeze"] = unsafeFreeze;
-  exports["unsafeLookup"] = unsafeLookup;
-  exports["unsafeGetAny"] = $foreign.unsafeGetAny;
-  exports["unsafeHasAny"] = $foreign.unsafeHasAny;
-  exports["unsafeSetAny"] = $foreign.unsafeSetAny;
-  exports["forE"] = $foreign.forE;
-  exports["forInE"] = $foreign.forInE;
-  exports["diffWithIxE"] = $foreign.diffWithIxE;
-  exports["diffWithKeyAndIxE"] = $foreign.diffWithKeyAndIxE;
-  exports["strMapWithIxE"] = $foreign.strMapWithIxE;
-  exports["refEq"] = $foreign.refEq;
-  exports["createTextNode"] = $foreign.createTextNode;
-  exports["setTextContent"] = $foreign.setTextContent;
-  exports["createElement"] = $foreign.createElement;
-  exports["insertChildIx"] = $foreign.insertChildIx;
-  exports["removeChild"] = $foreign.removeChild;
-  exports["parentNode"] = $foreign.parentNode;
-  exports["setAttribute"] = $foreign.setAttribute;
-  exports["removeAttribute"] = $foreign.removeAttribute;
-  exports["addEventListener"] = $foreign.addEventListener;
-  exports["removeEventListener"] = $foreign.removeEventListener;
-  exports["jsUndefined"] = $foreign.jsUndefined;
-})(PS["Halogen.VDom.Util"] = PS["Halogen.VDom.Util"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.2
-  "use strict";
-  var Control_Applicative = PS["Control.Applicative"];
-  var Control_Bind = PS["Control.Bind"];
-  var Data_Eq = PS["Data.Eq"];
-  var Data_Function_Uncurried = PS["Data.Function.Uncurried"];
-  var Data_Functor = PS["Data.Functor"];
-  var Data_Maybe = PS["Data.Maybe"];
-  var Data_Nullable = PS["Data.Nullable"];
-  var Data_Semigroup = PS["Data.Semigroup"];
-  var Data_Tuple = PS["Data.Tuple"];
-  var Data_Unit = PS["Data.Unit"];
-  var Effect = PS["Effect"];
-  var Effect_Ref = PS["Effect.Ref"];
-  var Effect_Uncurried = PS["Effect.Uncurried"];
-  var Foreign = PS["Foreign"];
-  var Foreign_Object = PS["Foreign.Object"];
-  var Halogen_VDom = PS["Halogen.VDom"];
-  var Halogen_VDom_Machine = PS["Halogen.VDom.Machine"];
-  var Halogen_VDom_Types = PS["Halogen.VDom.Types"];
-  var Halogen_VDom_Util = PS["Halogen.VDom.Util"];
-  var Prelude = PS["Prelude"];
-  var Unsafe_Coerce = PS["Unsafe.Coerce"];
-  var Web_DOM_Element = PS["Web.DOM.Element"];
-  var Web_Event_Event = PS["Web.Event.Event"];
-  var Web_Event_EventTarget = PS["Web.Event.EventTarget"];                 
-  var Created = (function () {
-      function Created(value0) {
-          this.value0 = value0;
-      };
-      Created.create = function (value0) {
-          return new Created(value0);
-      };
-      return Created;
-  })();
-  var Removed = (function () {
-      function Removed(value0) {
-          this.value0 = value0;
-      };
-      Removed.create = function (value0) {
-          return new Removed(value0);
-      };
-      return Removed;
-  })();
-  var Attribute = (function () {
-      function Attribute(value0, value1, value2) {
-          this.value0 = value0;
-          this.value1 = value1;
-          this.value2 = value2;
-      };
-      Attribute.create = function (value0) {
-          return function (value1) {
-              return function (value2) {
-                  return new Attribute(value0, value1, value2);
-              };
-          };
-      };
-      return Attribute;
-  })();
-  var Property = (function () {
-      function Property(value0, value1) {
-          this.value0 = value0;
-          this.value1 = value1;
-      };
-      Property.create = function (value0) {
-          return function (value1) {
-              return new Property(value0, value1);
-          };
-      };
-      return Property;
-  })();
-  var Handler = (function () {
-      function Handler(value0, value1) {
-          this.value0 = value0;
-          this.value1 = value1;
-      };
-      Handler.create = function (value0) {
-          return function (value1) {
-              return new Handler(value0, value1);
-          };
-      };
-      return Handler;
-  })();
-  var Ref = (function () {
-      function Ref(value0) {
-          this.value0 = value0;
-      };
-      Ref.create = function (value0) {
-          return new Ref(value0);
-      };
-      return Ref;
-  })();
-  var unsafeGetProperty = Halogen_VDom_Util.unsafeGetAny;
-  var setProperty = Halogen_VDom_Util.unsafeSetAny;
-  var removeProperty = function (key, el) {
-      var v = Foreign.typeOf(Halogen_VDom_Util.unsafeGetAny(key, el));
-      if (v === "string") {
-          return Halogen_VDom_Util.unsafeSetAny(key, "", el);
-      };
-      if (key === "rowSpan") {
-          return Halogen_VDom_Util.unsafeSetAny(key, 1, el);
-      };
-      if (key === "colSpan") {
-          return Halogen_VDom_Util.unsafeSetAny(key, 1, el);
-      };
-      return Halogen_VDom_Util.unsafeSetAny(key, Halogen_VDom_Util.jsUndefined, el);
-  };
-  var propToStrKey = function (v) {
-      if (v instanceof Attribute && v.value0 instanceof Data_Maybe.Just) {
-          return "attr/" + (v.value0.value0 + (":" + v.value1));
-      };
-      if (v instanceof Attribute) {
-          return "attr/:" + v.value1;
-      };
-      if (v instanceof Property) {
-          return "prop/" + v.value0;
-      };
-      if (v instanceof Handler) {
-          return "handler/" + v.value0;
-      };
-      if (v instanceof Ref) {
-          return "ref";
-      };
-      throw new Error("Failed pattern match at Halogen.VDom.DOM.Prop (line 178, column 16 - line 185, column 1): " + [ v.constructor.name ]);
-  };
-  var propFromString = Unsafe_Coerce.unsafeCoerce;
-  var propFromInt = Unsafe_Coerce.unsafeCoerce;
-  var propFromBoolean = Unsafe_Coerce.unsafeCoerce;
-  var functorProp = new Data_Functor.Functor(function (f) {
-      return function (v) {
-          if (v instanceof Handler) {
-              return new Handler(v.value0, Data_Functor.map(Data_Functor.functorFn)(Data_Functor.map(Data_Maybe.functorMaybe)(f))(v.value1));
-          };
-          if (v instanceof Ref) {
-              return new Ref(Data_Functor.map(Data_Functor.functorFn)(Data_Functor.map(Data_Maybe.functorMaybe)(f))(v.value0));
-          };
-          return v;
-      };
-  });
-  var buildProp = function (emit) {
-      return function (el) {
-          var removeProp = function (prevEvents) {
-              return function (v, v1) {
-                  if (v1 instanceof Attribute) {
-                      return Halogen_VDom_Util.removeAttribute(Data_Nullable.toNullable(v1.value0), v1.value1, el);
-                  };
-                  if (v1 instanceof Property) {
-                      return removeProperty(v1.value0, el);
-                  };
-                  if (v1 instanceof Handler) {
-                      var handler = Halogen_VDom_Util.unsafeLookup(v1.value0, prevEvents);
-                      return Halogen_VDom_Util.removeEventListener(v1.value0, Data_Tuple.fst(handler), el);
-                  };
-                  if (v1 instanceof Ref) {
-                      return Data_Unit.unit;
-                  };
-                  throw new Error("Failed pattern match at Halogen.VDom.DOM.Prop (line 165, column 5 - line 175, column 18): " + [ v1.constructor.name ]);
-              };
-          };
-          var mbEmit = function (v) {
-              if (v instanceof Data_Maybe.Just) {
-                  return emit(v.value0)();
-              };
-              return Data_Unit.unit;
-          };
-          var done = function (ps) {
-              var v = Foreign_Object.lookup("ref")(ps);
-              if (v instanceof Data_Maybe.Just && v.value0 instanceof Ref) {
-                  return function () {
-                      return mbEmit(v.value0.value0(new Removed(el)));
-                  };
-              };
-              return Halogen_VDom_Util.effectUnit;
-          };
-          var diffProp = function (prevEvents, events) {
-              return function (v, v1, v11, v2) {
-                  if (v11 instanceof Attribute && v2 instanceof Attribute) {
-                      var $61 = v11.value2 === v2.value2;
-                      if ($61) {
-                          return v2;
-                      };
-                      Halogen_VDom_Util.setAttribute(Data_Nullable.toNullable(v2.value0), v2.value1, v2.value2, el);
-                      return v2;
-                  };
-                  if (v11 instanceof Property && v2 instanceof Property) {
-                      var v4 = Halogen_VDom_Util.refEq(v11.value1, v2.value1);
-                      if (v4) {
-                          return v2;
-                      };
-                      if (v2.value0 === "value") {
-                          var elVal = unsafeGetProperty("value", el);
-                          var $70 = Halogen_VDom_Util.refEq(elVal, v2.value1);
-                          if ($70) {
-                              return v2;
-                          };
-                          setProperty(v2.value0, v2.value1, el);
-                          return v2;
-                      };
-                      setProperty(v2.value0, v2.value1, el);
-                      return v2;
-                  };
-                  if (v11 instanceof Handler && v2 instanceof Handler) {
-                      var handler = Halogen_VDom_Util.unsafeLookup(v2.value0, prevEvents);
-                      Effect_Ref.write(v2.value1)(Data_Tuple.snd(handler))();
-                      Halogen_VDom_Util.pokeMutMap(v2.value0, handler, events);
-                      return v2;
-                  };
-                  return v2;
-              };
-          };
-          var applyProp = function (events) {
-              return function (v, v1, v2) {
-                  if (v2 instanceof Attribute) {
-                      Halogen_VDom_Util.setAttribute(Data_Nullable.toNullable(v2.value0), v2.value1, v2.value2, el);
-                      return v2;
-                  };
-                  if (v2 instanceof Property) {
-                      setProperty(v2.value0, v2.value1, el);
-                      return v2;
-                  };
-                  if (v2 instanceof Handler) {
-                      var v3 = Halogen_VDom_Util.unsafeGetAny(v2.value0, events);
-                      if (Halogen_VDom_Util.unsafeHasAny(v2.value0, events)) {
-                          Effect_Ref.write(v2.value1)(Data_Tuple.snd(v3))();
-                          return v2;
-                      };
-                      var v4 = Effect_Ref["new"](v2.value1)();
-                      var v5 = Web_Event_EventTarget.eventListener(function (ev) {
-                          return function __do() {
-                              var v5 = Effect_Ref.read(v4)();
-                              return mbEmit(v5(ev));
-                          };
-                      })();
-                      Halogen_VDom_Util.pokeMutMap(v2.value0, new Data_Tuple.Tuple(v5, v4), events);
-                      Halogen_VDom_Util.addEventListener(v2.value0, v5, el);
-                      return v2;
-                  };
-                  if (v2 instanceof Ref) {
-                      mbEmit(v2.value0(new Created(el)));
-                      return v2;
-                  };
-                  throw new Error("Failed pattern match at Halogen.VDom.DOM.Prop (line 109, column 5 - line 131, column 15): " + [ v2.constructor.name ]);
-              };
-          };
-          var patch = function (prevEvents, ps1) {
-              return function (ps2) {
-                  var v = Halogen_VDom_Util.newMutMap();
-                  var onThis = removeProp(prevEvents);
-                  var onThese = diffProp(prevEvents, v);
-                  var onThat = applyProp(v);
-                  var v1 = Halogen_VDom_Util.diffWithKeyAndIxE(ps1, ps2, propToStrKey, onThese, onThis, onThat);
-                  return new Halogen_VDom_Machine.Step(Data_Unit.unit, patch(Halogen_VDom_Util.unsafeFreeze(v), v1), done(v1));
-              };
-          };
-          var render = function (ps1) {
-              var v = Halogen_VDom_Util.newMutMap();
-              var v1 = Halogen_VDom_Util.strMapWithIxE(ps1, propToStrKey, applyProp(v));
-              return new Halogen_VDom_Machine.Step(Data_Unit.unit, patch(Halogen_VDom_Util.unsafeFreeze(v), v1), done(v1));
-          };
-          return render;
-      };
-  };
-  exports["Attribute"] = Attribute;
-  exports["Property"] = Property;
-  exports["Handler"] = Handler;
-  exports["Ref"] = Ref;
-  exports["Created"] = Created;
-  exports["Removed"] = Removed;
-  exports["propFromString"] = propFromString;
-  exports["propFromBoolean"] = propFromBoolean;
-  exports["propFromInt"] = propFromInt;
-  exports["buildProp"] = buildProp;
-  exports["functorProp"] = functorProp;
-})(PS["Halogen.VDom.DOM.Prop"] = PS["Halogen.VDom.DOM.Prop"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.2
-  "use strict";
-  var Control_Semigroupoid = PS["Control.Semigroupoid"];
-  var DOM_HTML_Indexed_ButtonType = PS["DOM.HTML.Indexed.ButtonType"];
-  var DOM_HTML_Indexed_CrossOriginValue = PS["DOM.HTML.Indexed.CrossOriginValue"];
-  var DOM_HTML_Indexed_DirValue = PS["DOM.HTML.Indexed.DirValue"];
-  var DOM_HTML_Indexed_FormMethod = PS["DOM.HTML.Indexed.FormMethod"];
-  var DOM_HTML_Indexed_InputType = PS["DOM.HTML.Indexed.InputType"];
-  var DOM_HTML_Indexed_KindValue = PS["DOM.HTML.Indexed.KindValue"];
-  var DOM_HTML_Indexed_MenuType = PS["DOM.HTML.Indexed.MenuType"];
-  var DOM_HTML_Indexed_MenuitemType = PS["DOM.HTML.Indexed.MenuitemType"];
-  var DOM_HTML_Indexed_OnOff = PS["DOM.HTML.Indexed.OnOff"];
-  var DOM_HTML_Indexed_OrderedListType = PS["DOM.HTML.Indexed.OrderedListType"];
-  var DOM_HTML_Indexed_PreloadValue = PS["DOM.HTML.Indexed.PreloadValue"];
-  var DOM_HTML_Indexed_ScopeValue = PS["DOM.HTML.Indexed.ScopeValue"];
-  var DOM_HTML_Indexed_StepValue = PS["DOM.HTML.Indexed.StepValue"];
-  var DOM_HTML_Indexed_WrapValue = PS["DOM.HTML.Indexed.WrapValue"];
-  var Data_Bifunctor = PS["Data.Bifunctor"];
-  var Data_Eq = PS["Data.Eq"];
-  var Data_Function = PS["Data.Function"];
-  var Data_Functor = PS["Data.Functor"];
-  var Data_Maybe = PS["Data.Maybe"];
-  var Data_MediaType = PS["Data.MediaType"];
-  var Data_Newtype = PS["Data.Newtype"];
-  var Data_Ord = PS["Data.Ord"];
-  var Data_Semigroup = PS["Data.Semigroup"];
-  var Data_Tuple = PS["Data.Tuple"];
-  var Halogen_Query_InputF = PS["Halogen.Query.InputF"];
-  var Halogen_VDom = PS["Halogen.VDom"];
-  var Halogen_VDom_DOM_Prop = PS["Halogen.VDom.DOM.Prop"];
-  var Halogen_VDom_Types = PS["Halogen.VDom.Types"];
-  var Prelude = PS["Prelude"];
-  var Unsafe_Coerce = PS["Unsafe.Coerce"];
-  var Web_DOM_Element = PS["Web.DOM.Element"];
-  var Web_Event_Event = PS["Web.Event.Event"];
-  var HTML = function (x) {
-      return x;
-  };
-  var ClassName = function (x) {
-      return x;
-  };
-  var IsProp = function (toPropValue) {
-      this.toPropValue = toPropValue;
-  }; 
-  var toPropValue = function (dict) {
-      return dict.toPropValue;
-  };
-  var text = function ($27) {
-      return HTML(Halogen_VDom_Types.Text.create($27));
-  };
-  var stringIsProp = new IsProp(Halogen_VDom_DOM_Prop.propFromString);
-  var slot = function ($29) {
-      return HTML(Halogen_VDom_Types.Widget.create($29));
-  }; 
-  var ref = function (f) {
-      return Halogen_VDom_DOM_Prop.Ref.create(function ($31) {
-          return f((function (v) {
-              if (v instanceof Halogen_VDom_DOM_Prop.Created) {
-                  return new Data_Maybe.Just(v.value0);
-              };
-              if (v instanceof Halogen_VDom_DOM_Prop.Removed) {
-                  return Data_Maybe.Nothing.value;
-              };
-              throw new Error("Failed pattern match at Halogen.HTML.Core (line 103, column 21 - line 105, column 23): " + [ v.constructor.name ]);
-          })($31));
-      });
-  };
-  var prop = function (dictIsProp) {
-      return function (v) {
-          return function ($32) {
-              return Halogen_VDom_DOM_Prop.Property.create(v)(toPropValue(dictIsProp)($32));
-          };
-      };
-  };                                   
-  var onOffIsProp = new IsProp(function ($35) {
-      return Halogen_VDom_DOM_Prop.propFromString(DOM_HTML_Indexed_OnOff.renderOnOff($35));
-  });      
-  var newtypeClassName = new Data_Newtype.Newtype(function (n) {
-      return n;
-  }, ClassName);
-  var intIsProp = new IsProp(Halogen_VDom_DOM_Prop.propFromInt);
-  var inputTypeIsProp = new IsProp(function ($40) {
-      return Halogen_VDom_DOM_Prop.propFromString(DOM_HTML_Indexed_InputType.renderInputType($40));
-  });
-  var handler = Halogen_VDom_DOM_Prop.Handler.create;
-  var element = function (ns) {
-      return function (name) {
-          return function (props) {
-              return function (children) {
-                  return new Halogen_VDom_Types.Elem(new Halogen_VDom_Types.ElemSpec(ns, name, props), children);
-              };
-          };
-      };
-  }; 
-  var buttonTypeIsProp = new IsProp(function ($44) {
-      return Halogen_VDom_DOM_Prop.propFromString(DOM_HTML_Indexed_ButtonType.renderButtonType($44));
-  });
-  var booleanIsProp = new IsProp(Halogen_VDom_DOM_Prop.propFromBoolean);
-  var bifunctorHTML = new Data_Bifunctor.Bifunctor(function (f) {
-      return function (g) {
-          return function (v) {
-              return Data_Bifunctor.bimap(Halogen_VDom_Types.bifunctorVDom)(Data_Functor.map(Data_Functor.functorArray)(Data_Functor.map(Halogen_VDom_DOM_Prop.functorProp)(Data_Functor.map(Halogen_Query_InputF.functorInputF)(g))))(f)(v);
-          };
-      };
-  });                                                                            
-  var attr = function (ns) {
-      return function (v) {
-          return Halogen_VDom_DOM_Prop.Attribute.create(ns)(v);
-      };
-  };
-  exports["HTML"] = HTML;
-  exports["slot"] = slot;
-  exports["text"] = text;
-  exports["element"] = element;
-  exports["prop"] = prop;
-  exports["attr"] = attr;
-  exports["handler"] = handler;
-  exports["ref"] = ref;
-  exports["IsProp"] = IsProp;
-  exports["toPropValue"] = toPropValue;
-  exports["ClassName"] = ClassName;
-  exports["bifunctorHTML"] = bifunctorHTML;
-  exports["stringIsProp"] = stringIsProp;
-  exports["intIsProp"] = intIsProp;
-  exports["booleanIsProp"] = booleanIsProp;
-  exports["buttonTypeIsProp"] = buttonTypeIsProp;
-  exports["inputTypeIsProp"] = inputTypeIsProp;
-  exports["onOffIsProp"] = onOffIsProp;
-  exports["newtypeClassName"] = newtypeClassName;
-})(PS["Halogen.HTML.Core"] = PS["Halogen.HTML.Core"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.2
-  "use strict";
-  var Control_Applicative = PS["Control.Applicative"];
-  var Control_Apply = PS["Control.Apply"];
-  var Control_Category = PS["Control.Category"];
-  var Control_Semigroupoid = PS["Control.Semigroupoid"];
-  var Data_Const = PS["Data.Const"];
-  var Data_Either = PS["Data.Either"];
-  var Data_Eq = PS["Data.Eq"];
-  var Data_Function = PS["Data.Function"];
-  var Data_Functor = PS["Data.Functor"];
-  var Data_List = PS["Data.List"];
-  var Data_List_NonEmpty = PS["Data.List.NonEmpty"];
-  var Data_List_Types = PS["Data.List.Types"];
-  var Data_Newtype = PS["Data.Newtype"];
-  var Data_NonEmpty = PS["Data.NonEmpty"];
-  var Data_Ring = PS["Data.Ring"];
-  var Data_Semiring = PS["Data.Semiring"];
-  var Data_Tuple = PS["Data.Tuple"];
-  var Prelude = PS["Prelude"];
-  var Unsafe_Coerce = PS["Unsafe.Coerce"];                 
-  var Pure = (function () {
-      function Pure(value0) {
-          this.value0 = value0;
-      };
-      Pure.create = function (value0) {
-          return new Pure(value0);
-      };
-      return Pure;
-  })();
-  var Lift = (function () {
-      function Lift(value0) {
-          this.value0 = value0;
-      };
-      Lift.create = function (value0) {
-          return new Lift(value0);
-      };
-      return Lift;
-  })();
-  var Ap = (function () {
-      function Ap(value0, value1) {
-          this.value0 = value0;
-          this.value1 = value1;
-      };
-      Ap.create = function (value0) {
-          return function (value1) {
-              return new Ap(value0, value1);
-          };
-      };
-      return Ap;
-  })();
-  var mkAp = function (fba) {
-      return function (fb) {
-          return new Ap(fba, fb);
-      };
-  };
-  var liftFreeAp = Lift.create;
-  var goLeft = function ($copy_dictApplicative) {
-      return function ($copy_fStack) {
-          return function ($copy_valStack) {
-              return function ($copy_nat) {
-                  return function ($copy_func) {
-                      return function ($copy_count) {
-                          var $tco_var_dictApplicative = $copy_dictApplicative;
-                          var $tco_var_fStack = $copy_fStack;
-                          var $tco_var_valStack = $copy_valStack;
-                          var $tco_var_nat = $copy_nat;
-                          var $tco_var_func = $copy_func;
-                          var $tco_done = false;
-                          var $tco_result;
-                          function $tco_loop(dictApplicative, fStack, valStack, nat, func, count) {
-                              if (func instanceof Pure) {
-                                  $tco_done = true;
-                                  return new Data_Tuple.Tuple(new Data_List_Types.Cons({
-                                      func: Control_Applicative.pure(dictApplicative)(func.value0),
-                                      count: count
-                                  }, fStack), valStack);
-                              };
-                              if (func instanceof Lift) {
-                                  $tco_done = true;
-                                  return new Data_Tuple.Tuple(new Data_List_Types.Cons({
-                                      func: nat(func.value0),
-                                      count: count
-                                  }, fStack), valStack);
-                              };
-                              if (func instanceof Ap) {
-                                  $tco_var_dictApplicative = dictApplicative;
-                                  $tco_var_fStack = fStack;
-                                  $tco_var_valStack = Data_List_NonEmpty.cons(func.value1)(valStack);
-                                  $tco_var_nat = nat;
-                                  $tco_var_func = func.value0;
-                                  $copy_count = count + 1 | 0;
-                                  return;
-                              };
-                              throw new Error("Failed pattern match at Control.Applicative.Free (line 102, column 41 - line 105, column 81): " + [ func.constructor.name ]);
-                          };
-                          while (!$tco_done) {
-                              $tco_result = $tco_loop($tco_var_dictApplicative, $tco_var_fStack, $tco_var_valStack, $tco_var_nat, $tco_var_func, $copy_count);
-                          };
-                          return $tco_result;
-                      };
-                  };
-              };
-          };
-      };
-  };
-  var goApply = function ($copy_dictApplicative) {
-      return function ($copy_fStack) {
-          return function ($copy_vals) {
-              return function ($copy_gVal) {
-                  var $tco_var_dictApplicative = $copy_dictApplicative;
-                  var $tco_var_fStack = $copy_fStack;
-                  var $tco_var_vals = $copy_vals;
-                  var $tco_done = false;
-                  var $tco_result;
-                  function $tco_loop(dictApplicative, fStack, vals, gVal) {
-                      if (fStack instanceof Data_List_Types.Nil) {
-                          $tco_done = true;
-                          return new Data_Either.Left(gVal);
-                      };
-                      if (fStack instanceof Data_List_Types.Cons) {
-                          var gRes = Control_Apply.apply(dictApplicative.Apply0())(fStack.value0.func)(gVal);
-                          var $14 = fStack.value0.count === 1;
-                          if ($14) {
-                              if (fStack.value1 instanceof Data_List_Types.Nil) {
-                                  $tco_done = true;
-                                  return new Data_Either.Left(gRes);
-                              };
-                              $tco_var_dictApplicative = dictApplicative;
-                              $tco_var_fStack = fStack.value1;
-                              $tco_var_vals = vals;
-                              $copy_gVal = gRes;
-                              return;
-                          };
-                          if (vals instanceof Data_List_Types.Nil) {
-                              $tco_done = true;
-                              return new Data_Either.Left(gRes);
-                          };
-                          if (vals instanceof Data_List_Types.Cons) {
-                              $tco_done = true;
-                              return Data_Either.Right.create(new Data_Tuple.Tuple(new Data_List_Types.Cons({
-                                  func: gRes,
-                                  count: fStack.value0.count - 1 | 0
-                              }, fStack.value1), new Data_NonEmpty.NonEmpty(vals.value0, vals.value1)));
-                          };
-                          throw new Error("Failed pattern match at Control.Applicative.Free (line 83, column 11 - line 88, column 50): " + [ vals.constructor.name ]);
-                      };
-                      throw new Error("Failed pattern match at Control.Applicative.Free (line 72, column 3 - line 88, column 50): " + [ fStack.constructor.name ]);
-                  };
-                  while (!$tco_done) {
-                      $tco_result = $tco_loop($tco_var_dictApplicative, $tco_var_fStack, $tco_var_vals, $copy_gVal);
-                  };
-                  return $tco_result;
-              };
-          };
-      };
-  };
-  var functorFreeAp = new Data_Functor.Functor(function (f) {
-      return function (x) {
-          return mkAp(new Pure(f))(x);
-      };
-  });
-  var foldFreeAp = function (dictApplicative) {
-      return function (nat) {
-          return function (z) {
-              var go = function ($copy_v) {
-                  var $tco_done = false;
-                  var $tco_result;
-                  function $tco_loop(v) {
-                      if (v.value1.value0 instanceof Pure) {
-                          var v1 = goApply(dictApplicative)(v.value0)(v.value1.value1)(Control_Applicative.pure(dictApplicative)(v.value1.value0.value0));
-                          if (v1 instanceof Data_Either.Left) {
-                              $tco_done = true;
-                              return v1.value0;
-                          };
-                          if (v1 instanceof Data_Either.Right) {
-                              $copy_v = v1.value0;
-                              return;
-                          };
-                          throw new Error("Failed pattern match at Control.Applicative.Free (line 54, column 17 - line 56, column 24): " + [ v1.constructor.name ]);
-                      };
-                      if (v.value1.value0 instanceof Lift) {
-                          var v1 = goApply(dictApplicative)(v.value0)(v.value1.value1)(nat(v.value1.value0.value0));
-                          if (v1 instanceof Data_Either.Left) {
-                              $tco_done = true;
-                              return v1.value0;
-                          };
-                          if (v1 instanceof Data_Either.Right) {
-                              $copy_v = v1.value0;
-                              return;
-                          };
-                          throw new Error("Failed pattern match at Control.Applicative.Free (line 57, column 17 - line 59, column 24): " + [ v1.constructor.name ]);
-                      };
-                      if (v.value1.value0 instanceof Ap) {
-                          var nextVals = new Data_NonEmpty.NonEmpty(v.value1.value0.value1, v.value1.value1);
-                          $copy_v = goLeft(dictApplicative)(v.value0)(nextVals)(nat)(v.value1.value0.value0)(1);
-                          return;
-                      };
-                      throw new Error("Failed pattern match at Control.Applicative.Free (line 53, column 5 - line 64, column 1): " + [ v.value1.value0.constructor.name ]);
-                  };
-                  while (!$tco_done) {
-                      $tco_result = $tco_loop($copy_v);
-                  };
-                  return $tco_result;
-              };
-              return go(new Data_Tuple.Tuple(Data_List_Types.Nil.value, Data_List_NonEmpty.singleton(z)));
-          };
-      };
-  };
-  var retractFreeAp = function (dictApplicative) {
-      return foldFreeAp(dictApplicative)(Control_Category.identity(Control_Category.categoryFn));
-  };
-  var applyFreeAp = new Control_Apply.Apply(function () {
-      return functorFreeAp;
-  }, function (fba) {
-      return function (fb) {
-          return mkAp(fba)(fb);
-      };
-  });
-  var applicativeFreeAp = new Control_Applicative.Applicative(function () {
-      return applyFreeAp;
-  }, Pure.create);
-  var hoistFreeAp = function (f) {
-      return foldFreeAp(applicativeFreeAp)(function ($37) {
-          return liftFreeAp(f($37));
-      });
-  };
-  exports["liftFreeAp"] = liftFreeAp;
-  exports["retractFreeAp"] = retractFreeAp;
-  exports["foldFreeAp"] = foldFreeAp;
-  exports["hoistFreeAp"] = hoistFreeAp;
-  exports["functorFreeAp"] = functorFreeAp;
-  exports["applyFreeAp"] = applyFreeAp;
-  exports["applicativeFreeAp"] = applicativeFreeAp;
-})(PS["Control.Applicative.Free"] = PS["Control.Applicative.Free"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.2
-  "use strict";
-  var Control_Alt = PS["Control.Alt"];
-  var Control_Alternative = PS["Control.Alternative"];
-  var Control_Applicative = PS["Control.Applicative"];
-  var Control_Apply = PS["Control.Apply"];
-  var Control_Bind = PS["Control.Bind"];
-  var Control_Monad = PS["Control.Monad"];
-  var Control_MonadPlus = PS["Control.MonadPlus"];
-  var Control_MonadZero = PS["Control.MonadZero"];
-  var Control_Plus = PS["Control.Plus"];
-  var Control_Semigroupoid = PS["Control.Semigroupoid"];
-  var Data_Eq = PS["Data.Eq"];
-  var Data_Foldable = PS["Data.Foldable"];
-  var Data_Function = PS["Data.Function"];
-  var Data_Functor = PS["Data.Functor"];
-  var Data_List = PS["Data.List"];
-  var Data_List_Types = PS["Data.List.Types"];
-  var Data_Maybe = PS["Data.Maybe"];
-  var Data_Monoid = PS["Data.Monoid"];
-  var Data_Ord = PS["Data.Ord"];
-  var Data_Ordering = PS["Data.Ordering"];
-  var Data_Semigroup = PS["Data.Semigroup"];
-  var Data_Semiring = PS["Data.Semiring"];
-  var Data_Show = PS["Data.Show"];
-  var Data_Traversable = PS["Data.Traversable"];
-  var Data_Tuple = PS["Data.Tuple"];
-  var Data_Unfoldable = PS["Data.Unfoldable"];
-  var Data_Unfoldable1 = PS["Data.Unfoldable1"];
-  var Prelude = PS["Prelude"];                 
-  var CatQueue = (function () {
-      function CatQueue(value0, value1) {
-          this.value0 = value0;
-          this.value1 = value1;
-      };
-      CatQueue.create = function (value0) {
-          return function (value1) {
-              return new CatQueue(value0, value1);
-          };
-      };
-      return CatQueue;
-  })();
-  var uncons = function ($copy_v) {
-      var $tco_done = false;
-      var $tco_result;
-      function $tco_loop(v) {
-          if (v.value0 instanceof Data_List_Types.Nil && v.value1 instanceof Data_List_Types.Nil) {
-              $tco_done = true;
-              return Data_Maybe.Nothing.value;
-          };
-          if (v.value0 instanceof Data_List_Types.Nil) {
-              $copy_v = new CatQueue(Data_List.reverse(v.value1), Data_List_Types.Nil.value);
-              return;
-          };
-          if (v.value0 instanceof Data_List_Types.Cons) {
-              $tco_done = true;
-              return new Data_Maybe.Just(new Data_Tuple.Tuple(v.value0.value0, new CatQueue(v.value0.value1, v.value1)));
-          };
-          throw new Error("Failed pattern match at Data.CatQueue (line 83, column 1 - line 83, column 63): " + [ v.constructor.name ]);
-      };
-      while (!$tco_done) {
-          $tco_result = $tco_loop($copy_v);
-      };
-      return $tco_result;
-  };
-  var snoc = function (v) {
-      return function (a) {
-          return new CatQueue(v.value0, new Data_List_Types.Cons(a, v.value1));
-      };
-  };
-  var $$null = function (v) {
-      if (v.value0 instanceof Data_List_Types.Nil && v.value1 instanceof Data_List_Types.Nil) {
-          return true;
-      };
-      return false;
-  };                                                                                                
-  var empty = new CatQueue(Data_List_Types.Nil.value, Data_List_Types.Nil.value);
-  exports["CatQueue"] = CatQueue;
-  exports["empty"] = empty;
-  exports["null"] = $$null;
-  exports["snoc"] = snoc;
-  exports["uncons"] = uncons;
-})(PS["Data.CatQueue"] = PS["Data.CatQueue"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.2
-  "use strict";
-  var Control_Alt = PS["Control.Alt"];
-  var Control_Alternative = PS["Control.Alternative"];
-  var Control_Applicative = PS["Control.Applicative"];
-  var Control_Apply = PS["Control.Apply"];
-  var Control_Bind = PS["Control.Bind"];
-  var Control_Monad = PS["Control.Monad"];
-  var Control_MonadPlus = PS["Control.MonadPlus"];
-  var Control_MonadZero = PS["Control.MonadZero"];
-  var Control_Plus = PS["Control.Plus"];
-  var Data_CatQueue = PS["Data.CatQueue"];
-  var Data_Foldable = PS["Data.Foldable"];
-  var Data_Function = PS["Data.Function"];
-  var Data_Functor = PS["Data.Functor"];
-  var Data_List = PS["Data.List"];
-  var Data_List_Types = PS["Data.List.Types"];
-  var Data_Maybe = PS["Data.Maybe"];
-  var Data_Monoid = PS["Data.Monoid"];
-  var Data_Semigroup = PS["Data.Semigroup"];
-  var Data_Semiring = PS["Data.Semiring"];
-  var Data_Show = PS["Data.Show"];
-  var Data_Traversable = PS["Data.Traversable"];
-  var Data_Tuple = PS["Data.Tuple"];
-  var Data_Unfoldable = PS["Data.Unfoldable"];
-  var Data_Unfoldable1 = PS["Data.Unfoldable1"];
-  var Prelude = PS["Prelude"];                 
-  var CatNil = (function () {
-      function CatNil() {
-
-      };
-      CatNil.value = new CatNil();
-      return CatNil;
-  })();
-  var CatCons = (function () {
-      function CatCons(value0, value1) {
-          this.value0 = value0;
-          this.value1 = value1;
-      };
-      CatCons.create = function (value0) {
-          return function (value1) {
-              return new CatCons(value0, value1);
-          };
-      };
-      return CatCons;
-  })();
-  var link = function (v) {
-      return function (cat) {
-          if (v instanceof CatNil) {
-              return cat;
-          };
-          if (v instanceof CatCons) {
-              return new CatCons(v.value0, Data_CatQueue.snoc(v.value1)(cat));
-          };
-          throw new Error("Failed pattern match at Data.CatList (line 111, column 1 - line 111, column 54): " + [ v.constructor.name, cat.constructor.name ]);
-      };
-  };
-  var foldr = function (k) {
-      return function (b) {
-          return function (q) {
-              var foldl = function ($copy_v) {
-                  return function ($copy_c) {
-                      return function ($copy_v1) {
-                          var $tco_var_v = $copy_v;
-                          var $tco_var_c = $copy_c;
-                          var $tco_done = false;
-                          var $tco_result;
-                          function $tco_loop(v, c, v1) {
-                              if (v1 instanceof Data_List_Types.Nil) {
-                                  $tco_done = true;
-                                  return c;
-                              };
-                              if (v1 instanceof Data_List_Types.Cons) {
-                                  $tco_var_v = v;
-                                  $tco_var_c = v(c)(v1.value0);
-                                  $copy_v1 = v1.value1;
-                                  return;
-                              };
-                              throw new Error("Failed pattern match at Data.CatList (line 126, column 3 - line 126, column 59): " + [ v.constructor.name, c.constructor.name, v1.constructor.name ]);
-                          };
-                          while (!$tco_done) {
-                              $tco_result = $tco_loop($tco_var_v, $tco_var_c, $copy_v1);
-                          };
-                          return $tco_result;
-                      };
-                  };
-              };
-              var go = function ($copy_xs) {
-                  return function ($copy_ys) {
-                      var $tco_var_xs = $copy_xs;
-                      var $tco_done = false;
-                      var $tco_result;
-                      function $tco_loop(xs, ys) {
-                          var v = Data_CatQueue.uncons(xs);
-                          if (v instanceof Data_Maybe.Nothing) {
-                              $tco_done = true;
-                              return foldl(function (x) {
-                                  return function (i) {
-                                      return i(x);
-                                  };
-                              })(b)(ys);
-                          };
-                          if (v instanceof Data_Maybe.Just) {
-                              $tco_var_xs = v.value0.value1;
-                              $copy_ys = new Data_List_Types.Cons(k(v.value0.value0), ys);
-                              return;
-                          };
-                          throw new Error("Failed pattern match at Data.CatList (line 122, column 14 - line 124, column 67): " + [ v.constructor.name ]);
-                      };
-                      while (!$tco_done) {
-                          $tco_result = $tco_loop($tco_var_xs, $copy_ys);
-                      };
-                      return $tco_result;
-                  };
-              };
-              return go(q)(Data_List_Types.Nil.value);
-          };
-      };
-  };
-  var uncons = function (v) {
-      if (v instanceof CatNil) {
-          return Data_Maybe.Nothing.value;
-      };
-      if (v instanceof CatCons) {
-          return new Data_Maybe.Just(new Data_Tuple.Tuple(v.value0, (function () {
-              var $45 = Data_CatQueue["null"](v.value1);
-              if ($45) {
-                  return CatNil.value;
-              };
-              return foldr(link)(CatNil.value)(v.value1);
-          })()));
-      };
-      throw new Error("Failed pattern match at Data.CatList (line 102, column 1 - line 102, column 61): " + [ v.constructor.name ]);
-  };
-  var empty = CatNil.value;
-  var append = function (v) {
-      return function (v1) {
-          if (v1 instanceof CatNil) {
-              return v;
-          };
-          if (v instanceof CatNil) {
-              return v1;
-          };
-          return link(v)(v1);
-      };
-  }; 
-  var semigroupCatList = new Data_Semigroup.Semigroup(append);
-  var snoc = function (cat) {
-      return function (a) {
-          return append(cat)(new CatCons(a, Data_CatQueue.empty));
-      };
-  };
-  exports["CatNil"] = CatNil;
-  exports["CatCons"] = CatCons;
-  exports["empty"] = empty;
-  exports["append"] = append;
-  exports["snoc"] = snoc;
-  exports["uncons"] = uncons;
-  exports["semigroupCatList"] = semigroupCatList;
-})(PS["Data.CatList"] = PS["Data.CatList"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.2
-  "use strict";
-  var Control_Applicative = PS["Control.Applicative"];
-  var Control_Apply = PS["Control.Apply"];
-  var Control_Bind = PS["Control.Bind"];
-  var Control_Category = PS["Control.Category"];
-  var Control_Monad = PS["Control.Monad"];
-  var Control_Monad_Rec_Class = PS["Control.Monad.Rec.Class"];
-  var Control_Monad_Trans_Class = PS["Control.Monad.Trans.Class"];
-  var Control_Semigroupoid = PS["Control.Semigroupoid"];
-  var Data_CatList = PS["Data.CatList"];
-  var Data_Either = PS["Data.Either"];
-  var Data_Eq = PS["Data.Eq"];
-  var Data_Foldable = PS["Data.Foldable"];
-  var Data_Function = PS["Data.Function"];
-  var Data_Functor = PS["Data.Functor"];
-  var Data_Maybe = PS["Data.Maybe"];
-  var Data_Ord = PS["Data.Ord"];
-  var Data_Ordering = PS["Data.Ordering"];
-  var Data_Semigroup = PS["Data.Semigroup"];
-  var Data_Traversable = PS["Data.Traversable"];
-  var Data_Tuple = PS["Data.Tuple"];
-  var Prelude = PS["Prelude"];
-  var Unsafe_Coerce = PS["Unsafe.Coerce"];
-  var Free = (function () {
-      function Free(value0, value1) {
-          this.value0 = value0;
-          this.value1 = value1;
-      };
-      Free.create = function (value0) {
-          return function (value1) {
-              return new Free(value0, value1);
-          };
-      };
-      return Free;
-  })();
-  var Return = (function () {
-      function Return(value0) {
-          this.value0 = value0;
-      };
-      Return.create = function (value0) {
-          return new Return(value0);
-      };
-      return Return;
-  })();
-  var Bind = (function () {
-      function Bind(value0, value1) {
-          this.value0 = value0;
-          this.value1 = value1;
-      };
-      Bind.create = function (value0) {
-          return function (value1) {
-              return new Bind(value0, value1);
-          };
-      };
-      return Bind;
-  })();
-  var toView = function ($copy_v) {
-      var $tco_done = false;
-      var $tco_result;
-      function $tco_loop(v) {
-          var runExpF = function (v2) {
-              return v2;
-          };
-          var concatF = function (v2) {
-              return function (r) {
-                  return new Free(v2.value0, Data_Semigroup.append(Data_CatList.semigroupCatList)(v2.value1)(r));
-              };
-          };
-          if (v.value0 instanceof Return) {
-              var v2 = Data_CatList.uncons(v.value1);
-              if (v2 instanceof Data_Maybe.Nothing) {
-                  $tco_done = true;
-                  return new Return(v.value0.value0);
-              };
-              if (v2 instanceof Data_Maybe.Just) {
-                  $copy_v = concatF(runExpF(v2.value0.value0)(v.value0.value0))(v2.value0.value1);
-                  return;
-              };
-              throw new Error("Failed pattern match at Control.Monad.Free (line 220, column 7 - line 224, column 64): " + [ v2.constructor.name ]);
-          };
-          if (v.value0 instanceof Bind) {
-              $tco_done = true;
-              return new Bind(v.value0.value0, function (a) {
-                  return concatF(v.value0.value1(a))(v.value1);
-              });
-          };
-          throw new Error("Failed pattern match at Control.Monad.Free (line 218, column 3 - line 226, column 56): " + [ v.value0.constructor.name ]);
-      };
-      while (!$tco_done) {
-          $tco_result = $tco_loop($copy_v);
-      };
-      return $tco_result;
-  };
-  var fromView = function (f) {
-      return new Free(f, Data_CatList.empty);
-  };
-  var freeMonad = new Control_Monad.Monad(function () {
-      return freeApplicative;
-  }, function () {
-      return freeBind;
-  });
-  var freeFunctor = new Data_Functor.Functor(function (k) {
-      return function (f) {
-          return Control_Bind.bindFlipped(freeBind)(function ($118) {
-              return Control_Applicative.pure(freeApplicative)(k($118));
-          })(f);
-      };
-  });
-  var freeBind = new Control_Bind.Bind(function () {
-      return freeApply;
-  }, function (v) {
-      return function (k) {
-          return new Free(v.value0, Data_CatList.snoc(v.value1)(k));
-      };
-  });
-  var freeApply = new Control_Apply.Apply(function () {
-      return freeFunctor;
-  }, Control_Monad.ap(freeMonad));
-  var freeApplicative = new Control_Applicative.Applicative(function () {
-      return freeApply;
-  }, function ($119) {
-      return fromView(Return.create($119));
-  });
-  var liftF = function (f) {
-      return fromView(new Bind(f, function ($120) {
-          return Control_Applicative.pure(freeApplicative)($120);
-      }));
-  };
-  var foldFree = function (dictMonadRec) {
-      return function (k) {
-          var go = function (f) {
-              var v = toView(f);
-              if (v instanceof Return) {
-                  return Data_Functor.map((((dictMonadRec.Monad0()).Bind1()).Apply0()).Functor0())(Control_Monad_Rec_Class.Done.create)(Control_Applicative.pure((dictMonadRec.Monad0()).Applicative0())(v.value0));
-              };
-              if (v instanceof Bind) {
-                  return Data_Functor.map((((dictMonadRec.Monad0()).Bind1()).Apply0()).Functor0())(function ($127) {
-                      return Control_Monad_Rec_Class.Loop.create(v.value1($127));
-                  })(k(v.value0));
-              };
-              throw new Error("Failed pattern match at Control.Monad.Free (line 151, column 10 - line 153, column 37): " + [ v.constructor.name ]);
-          };
-          return Control_Monad_Rec_Class.tailRecM(dictMonadRec)(go);
-      };
-  };
-  exports["liftF"] = liftF;
-  exports["foldFree"] = foldFree;
-  exports["freeFunctor"] = freeFunctor;
-  exports["freeBind"] = freeBind;
-  exports["freeApplicative"] = freeApplicative;
-  exports["freeApply"] = freeApply;
-  exports["freeMonad"] = freeMonad;
-})(PS["Control.Monad.Free"] = PS["Control.Monad.Free"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.2
-  "use strict";
-  var Unsafe_Coerce = PS["Unsafe.Coerce"];                 
-  var runExists = Unsafe_Coerce.unsafeCoerce;
-  var mkExists = Unsafe_Coerce.unsafeCoerce;
-  exports["mkExists"] = mkExists;
-  exports["runExists"] = runExists;
-})(PS["Data.Exists"] = PS["Data.Exists"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.2
-  "use strict";
-  var Control_Alt = PS["Control.Alt"];
-  var Control_Alternative = PS["Control.Alternative"];
-  var Control_Applicative = PS["Control.Applicative"];
-  var Control_Apply = PS["Control.Apply"];
-  var Control_Bind = PS["Control.Bind"];
-  var Control_Category = PS["Control.Category"];
-  var Control_Comonad = PS["Control.Comonad"];
-  var Control_Extend = PS["Control.Extend"];
-  var Control_Monad = PS["Control.Monad"];
-  var Control_Monad_Trans_Class = PS["Control.Monad.Trans.Class"];
-  var Control_MonadPlus = PS["Control.MonadPlus"];
-  var Control_MonadZero = PS["Control.MonadZero"];
-  var Control_Plus = PS["Control.Plus"];
-  var Control_Semigroupoid = PS["Control.Semigroupoid"];
-  var Data_Distributive = PS["Data.Distributive"];
-  var Data_Eq = PS["Data.Eq"];
-  var Data_Exists = PS["Data.Exists"];
-  var Data_Foldable = PS["Data.Foldable"];
-  var Data_Function = PS["Data.Function"];
-  var Data_Functor = PS["Data.Functor"];
-  var Data_Functor_Invariant = PS["Data.Functor.Invariant"];
-  var Data_Ord = PS["Data.Ord"];
-  var Data_Semigroup_Foldable = PS["Data.Semigroup.Foldable"];
-  var Data_Semigroup_Traversable = PS["Data.Semigroup.Traversable"];
-  var Data_Traversable = PS["Data.Traversable"];
-  var Prelude = PS["Prelude"];
-  var unCoyoneda = function (f) {
-      return function (v) {
-          return Data_Exists.runExists(function (v1) {
-              return f(v1.value0)(v1.value1);
-          })(v);
-      };
-  };
-  exports["unCoyoneda"] = unCoyoneda;
-})(PS["Data.Coyoneda"] = PS["Data.Coyoneda"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.2
-  "use strict";
-  var Control_Applicative = PS["Control.Applicative"];
-  var Control_Apply = PS["Control.Apply"];
-  var Control_Bind = PS["Control.Bind"];
-  var Control_Category = PS["Control.Category"];
-  var Control_Monad = PS["Control.Monad"];
-  var Control_Monad_Error_Class = PS["Control.Monad.Error.Class"];
-  var Control_Monad_Reader_Class = PS["Control.Monad.Reader.Class"];
-  var Control_Monad_Rec_Class = PS["Control.Monad.Rec.Class"];
-  var Control_Monad_State_Class = PS["Control.Monad.State.Class"];
-  var Control_Monad_Trans_Class = PS["Control.Monad.Trans.Class"];
-  var Control_Monad_Writer_Class = PS["Control.Monad.Writer.Class"];
-  var Control_Semigroupoid = PS["Control.Semigroupoid"];
-  var Data_Bifunctor = PS["Data.Bifunctor"];
-  var Data_Either = PS["Data.Either"];
-  var Data_Exists = PS["Data.Exists"];
-  var Data_Functor = PS["Data.Functor"];
-  var Data_Monoid = PS["Data.Monoid"];
-  var Data_Semigroup = PS["Data.Semigroup"];
-  var Data_Unit = PS["Data.Unit"];
-  var Effect_Class = PS["Effect.Class"];
-  var Prelude = PS["Prelude"];                 
-  var Bound = (function () {
-      function Bound(value0, value1) {
-          this.value0 = value0;
-          this.value1 = value1;
-      };
-      Bound.create = function (value0) {
-          return function (value1) {
-              return new Bound(value0, value1);
-          };
-      };
-      return Bound;
-  })();
-  var FreeT = (function () {
-      function FreeT(value0) {
-          this.value0 = value0;
-      };
-      FreeT.create = function (value0) {
-          return new FreeT(value0);
-      };
-      return FreeT;
-  })();
-  var Bind = (function () {
-      function Bind(value0) {
-          this.value0 = value0;
-      };
-      Bind.create = function (value0) {
-          return new Bind(value0);
-      };
-      return Bind;
-  })();
-  var monadTransFreeT = function (dictFunctor) {
-      return new Control_Monad_Trans_Class.MonadTrans(function (dictMonad) {
-          return function (ma) {
-              return new FreeT(function (v) {
-                  return Data_Functor.map(((dictMonad.Bind1()).Apply0()).Functor0())(Data_Either.Left.create)(ma);
-              });
-          };
-      });
-  };
-  var freeT = FreeT.create;
-  var bound = function (m) {
-      return function (f) {
-          return new Bind(Data_Exists.mkExists(new Bound(m, f)));
-      };
-  };
-  var functorFreeT = function (dictFunctor) {
-      return function (dictFunctor1) {
-          return new Data_Functor.Functor(function (f) {
-              return function (v) {
-                  if (v instanceof FreeT) {
-                      return new FreeT(function (v1) {
-                          return Data_Functor.map(dictFunctor1)(Data_Bifunctor.bimap(Data_Either.bifunctorEither)(f)(Data_Functor.map(dictFunctor)(Data_Functor.map(functorFreeT(dictFunctor)(dictFunctor1))(f))))(v.value0(Data_Unit.unit));
-                      });
-                  };
-                  if (v instanceof Bind) {
-                      return Data_Exists.runExists(function (v1) {
-                          return bound(v1.value0)(function ($104) {
-                              return Data_Functor.map(functorFreeT(dictFunctor)(dictFunctor1))(f)(v1.value1($104));
-                          });
-                      })(v.value0);
-                  };
-                  throw new Error("Failed pattern match at Control.Monad.Free.Trans (line 57, column 1 - line 57, column 71): " + [ f.constructor.name, v.constructor.name ]);
-              };
-          });
-      };
-  };
-  var monadFreeT = function (dictFunctor) {
-      return function (dictMonad) {
-          return new Control_Monad.Monad(function () {
-              return applicativeFreeT(dictFunctor)(dictMonad);
-          }, function () {
-              return bindFreeT(dictFunctor)(dictMonad);
-          });
-      };
-  };
-  var bindFreeT = function (dictFunctor) {
-      return function (dictMonad) {
-          return new Control_Bind.Bind(function () {
-              return applyFreeT(dictFunctor)(dictMonad);
-          }, function (v) {
-              return function (f) {
-                  if (v instanceof Bind) {
-                      return Data_Exists.runExists(function (v1) {
-                          return bound(v1.value0)(function (x) {
-                              return bound(function (v2) {
-                                  return v1.value1(x);
-                              })(f);
-                          });
-                      })(v.value0);
-                  };
-                  return bound(function (v1) {
-                      return v;
-                  })(f);
-              };
-          });
-      };
-  };
-  var applyFreeT = function (dictFunctor) {
-      return function (dictMonad) {
-          return new Control_Apply.Apply(function () {
-              return functorFreeT(dictFunctor)(((dictMonad.Bind1()).Apply0()).Functor0());
-          }, Control_Monad.ap(monadFreeT(dictFunctor)(dictMonad)));
-      };
-  };
-  var applicativeFreeT = function (dictFunctor) {
-      return function (dictMonad) {
-          return new Control_Applicative.Applicative(function () {
-              return applyFreeT(dictFunctor)(dictMonad);
-          }, function (a) {
-              return new FreeT(function (v) {
-                  return Control_Applicative.pure(dictMonad.Applicative0())(new Data_Either.Left(a));
-              });
-          });
-      };
-  };
-  var liftFreeT = function (dictFunctor) {
-      return function (dictMonad) {
-          return function (fa) {
-              return new FreeT(function (v) {
-                  return Control_Applicative.pure(dictMonad.Applicative0())(new Data_Either.Right(Data_Functor.map(dictFunctor)(Control_Applicative.pure(applicativeFreeT(dictFunctor)(dictMonad)))(fa)));
-              });
-          };
-      };
-  };
-  var resume = function (dictFunctor) {
-      return function (dictMonadRec) {
-          var go = function (v) {
-              if (v instanceof FreeT) {
-                  return Data_Functor.map((((dictMonadRec.Monad0()).Bind1()).Apply0()).Functor0())(Control_Monad_Rec_Class.Done.create)(v.value0(Data_Unit.unit));
-              };
-              if (v instanceof Bind) {
-                  return Data_Exists.runExists(function (v1) {
-                      var v2 = v1.value0(Data_Unit.unit);
-                      if (v2 instanceof FreeT) {
-                          return Control_Bind.bind((dictMonadRec.Monad0()).Bind1())(v2.value0(Data_Unit.unit))(function (v3) {
-                              if (v3 instanceof Data_Either.Left) {
-                                  return Control_Applicative.pure((dictMonadRec.Monad0()).Applicative0())(new Control_Monad_Rec_Class.Loop(v1.value1(v3.value0)));
-                              };
-                              if (v3 instanceof Data_Either.Right) {
-                                  return Control_Applicative.pure((dictMonadRec.Monad0()).Applicative0())(new Control_Monad_Rec_Class.Done(new Data_Either.Right(Data_Functor.map(dictFunctor)(function (h) {
-                                      return Control_Bind.bind(bindFreeT(dictFunctor)(dictMonadRec.Monad0()))(h)(v1.value1);
-                                  })(v3.value0))));
-                              };
-                              throw new Error("Failed pattern match at Control.Monad.Free.Trans (line 52, column 20 - line 54, column 67): " + [ v3.constructor.name ]);
-                          });
-                      };
-                      if (v2 instanceof Bind) {
-                          return Data_Exists.runExists(function (v3) {
-                              return Control_Applicative.pure((dictMonadRec.Monad0()).Applicative0())(new Control_Monad_Rec_Class.Loop(Control_Bind.bind(bindFreeT(dictFunctor)(dictMonadRec.Monad0()))(v3.value0(Data_Unit.unit))(function (z) {
-                                  return Control_Bind.bind(bindFreeT(dictFunctor)(dictMonadRec.Monad0()))(v3.value1(z))(v1.value1);
-                              })));
-                          })(v2.value0);
-                      };
-                      throw new Error("Failed pattern match at Control.Monad.Free.Trans (line 50, column 5 - line 55, column 98): " + [ v2.constructor.name ]);
-                  })(v.value0);
-              };
-              throw new Error("Failed pattern match at Control.Monad.Free.Trans (line 47, column 3 - line 47, column 75): " + [ v.constructor.name ]);
-          };
-          return Control_Monad_Rec_Class.tailRecM(dictMonadRec)(go);
-      };
-  };
-  var runFreeT = function (dictFunctor) {
-      return function (dictMonadRec) {
-          return function (interp) {
-              var go = function (v) {
-                  if (v instanceof Data_Either.Left) {
-                      return Control_Applicative.pure((dictMonadRec.Monad0()).Applicative0())(new Control_Monad_Rec_Class.Done(v.value0));
-                  };
-                  if (v instanceof Data_Either.Right) {
-                      return Data_Functor.map((((dictMonadRec.Monad0()).Bind1()).Apply0()).Functor0())(Control_Monad_Rec_Class.Loop.create)(interp(v.value0));
-                  };
-                  throw new Error("Failed pattern match at Control.Monad.Free.Trans (line 126, column 3 - line 126, column 63): " + [ v.constructor.name ]);
-              };
-              return Control_Monad_Rec_Class.tailRecM(dictMonadRec)(Control_Bind.composeKleisliFlipped((dictMonadRec.Monad0()).Bind1())(go)(resume(dictFunctor)(dictMonadRec)));
-          };
-      };
-  };
-  var monadRecFreeT = function (dictFunctor) {
-      return function (dictMonad) {
-          return new Control_Monad_Rec_Class.MonadRec(function () {
-              return monadFreeT(dictFunctor)(dictMonad);
-          }, function (f) {
-              var go = function (s) {
-                  return Control_Bind.bind(bindFreeT(dictFunctor)(dictMonad))(f(s))(function (v) {
-                      if (v instanceof Control_Monad_Rec_Class.Loop) {
-                          return go(v.value0);
-                      };
-                      if (v instanceof Control_Monad_Rec_Class.Done) {
-                          return Control_Applicative.pure(applicativeFreeT(dictFunctor)(dictMonad))(v.value0);
-                      };
-                      throw new Error("Failed pattern match at Control.Monad.Free.Trans (line 80, column 15 - line 82, column 25): " + [ v.constructor.name ]);
-                  });
-              };
-              return go;
-          });
-      };
-  };
-  exports["freeT"] = freeT;
-  exports["liftFreeT"] = liftFreeT;
-  exports["resume"] = resume;
-  exports["runFreeT"] = runFreeT;
-  exports["functorFreeT"] = functorFreeT;
-  exports["applyFreeT"] = applyFreeT;
-  exports["applicativeFreeT"] = applicativeFreeT;
-  exports["bindFreeT"] = bindFreeT;
-  exports["monadFreeT"] = monadFreeT;
-  exports["monadTransFreeT"] = monadTransFreeT;
-  exports["monadRecFreeT"] = monadRecFreeT;
-})(PS["Control.Monad.Free.Trans"] = PS["Control.Monad.Free.Trans"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.2
-  "use strict";
-  var Control_Applicative = PS["Control.Applicative"];
-  var Control_Apply = PS["Control.Apply"];
-  var Control_Bind = PS["Control.Bind"];
-  var Control_Category = PS["Control.Category"];
-  var Control_Monad_Except = PS["Control.Monad.Except"];
-  var Control_Monad_Except_Trans = PS["Control.Monad.Except.Trans"];
-  var Control_Monad_Free_Trans = PS["Control.Monad.Free.Trans"];
-  var Control_Monad_Rec_Class = PS["Control.Monad.Rec.Class"];
-  var Control_Monad_Trans_Class = PS["Control.Monad.Trans.Class"];
-  var Control_Parallel = PS["Control.Parallel"];
-  var Control_Parallel_Class = PS["Control.Parallel.Class"];
-  var Control_Semigroupoid = PS["Control.Semigroupoid"];
-  var Data_Bifunctor = PS["Data.Bifunctor"];
-  var Data_Either = PS["Data.Either"];
-  var Data_Function = PS["Data.Function"];
-  var Data_Functor = PS["Data.Functor"];
-  var Data_Identity = PS["Data.Identity"];
-  var Data_Maybe = PS["Data.Maybe"];
-  var Data_Newtype = PS["Data.Newtype"];
-  var Data_Profunctor = PS["Data.Profunctor"];
-  var Data_Tuple = PS["Data.Tuple"];
-  var Data_Unit = PS["Data.Unit"];
-  var Prelude = PS["Prelude"];
-  var Emit = (function () {
-      function Emit(value0, value1) {
-          this.value0 = value0;
-          this.value1 = value1;
-      };
-      Emit.create = function (value0) {
-          return function (value1) {
-              return new Emit(value0, value1);
-          };
-      };
-      return Emit;
-  })();
-  var runProcess = function (dictMonadRec) {
-      return Control_Monad_Free_Trans.runFreeT(Data_Identity.functorIdentity)(dictMonadRec)(function ($186) {
-          return Control_Applicative.pure((dictMonadRec.Monad0()).Applicative0())(Data_Newtype.unwrap(Data_Identity.newtypeIdentity)($186));
-      });
-  };
-  var profunctorAwait = new Data_Profunctor.Profunctor(function (f) {
-      return function (g) {
-          return function (v) {
-              return Data_Profunctor.dimap(Data_Profunctor.profunctorFn)(f)(g)(v);
-          };
-      };
-  });
-  var loop = function (dictFunctor) {
-      return function (dictMonad) {
-          return function (me) {
-              return Control_Monad_Rec_Class.tailRecM(Control_Monad_Free_Trans.monadRecFreeT(dictFunctor)(dictMonad))(function (v) {
-                  return Data_Functor.map(Control_Monad_Free_Trans.functorFreeT(dictFunctor)(((dictMonad.Bind1()).Apply0()).Functor0()))(Data_Maybe.maybe(new Control_Monad_Rec_Class.Loop(Data_Unit.unit))(Control_Monad_Rec_Class.Done.create))(me);
-              })(Data_Unit.unit);
-          };
-      };
-  };
-  var fuseWithL = function (dictFunctor) {
-      return function (dictFunctor1) {
-          return function (dictFunctor2) {
-              return function (dictMonadRec) {
-                  return function (zap) {
-                      return function (fs) {
-                          return function (gs) {
-                              var go = function (v) {
-                                  return Control_Monad_Except_Trans.runExceptT(Control_Bind.bind(Control_Monad_Except_Trans.bindExceptT(dictMonadRec.Monad0()))(Control_Monad_Except_Trans.ExceptT(Control_Monad_Free_Trans.resume(dictFunctor)(dictMonadRec)(v.value0)))(function (v1) {
-                                      return Control_Bind.bind(Control_Monad_Except_Trans.bindExceptT(dictMonadRec.Monad0()))(Control_Monad_Except_Trans.ExceptT(Control_Monad_Free_Trans.resume(dictFunctor1)(dictMonadRec)(v.value1)))(function (v2) {
-                                          return Control_Applicative.pure(Control_Monad_Except_Trans.applicativeExceptT(dictMonadRec.Monad0()))(Data_Functor.map(dictFunctor2)(function (t) {
-                                              return Control_Monad_Free_Trans.freeT(function (v3) {
-                                                  return go(t);
-                                              });
-                                          })(zap(Data_Tuple.Tuple.create)(v1)(v2)));
-                                      });
-                                  }));
-                              };
-                              return Control_Monad_Free_Trans.freeT(function (v) {
-                                  return go(new Data_Tuple.Tuple(fs, gs));
-                              });
-                          };
-                      };
-                  };
-              };
-          };
-      };
-  };
-  var fuseWith = function (dictFunctor) {
-      return function (dictFunctor1) {
-          return function (dictFunctor2) {
-              return function (dictMonadRec) {
-                  return function (dictParallel) {
-                      return function (zap) {
-                          return function (fs) {
-                              return function (gs) {
-                                  var go = function (v) {
-                                      return Control_Bind.bind((dictMonadRec.Monad0()).Bind1())(Control_Parallel_Class.sequential(dictParallel)(Control_Apply.apply((dictParallel.Applicative1()).Apply0())(Data_Functor.map(((dictParallel.Applicative1()).Apply0()).Functor0())(Control_Apply.lift2(Data_Either.applyEither)(zap(Data_Tuple.Tuple.create)))(Control_Parallel_Class.parallel(dictParallel)(Control_Monad_Free_Trans.resume(dictFunctor)(dictMonadRec)(v.value0))))(Control_Parallel_Class.parallel(dictParallel)(Control_Monad_Free_Trans.resume(dictFunctor1)(dictMonadRec)(v.value1)))))(function (v1) {
-                                          if (v1 instanceof Data_Either.Left) {
-                                              return Control_Applicative.pure((dictMonadRec.Monad0()).Applicative0())(new Data_Either.Left(v1.value0));
-                                          };
-                                          if (v1 instanceof Data_Either.Right) {
-                                              return Control_Applicative.pure((dictMonadRec.Monad0()).Applicative0())(new Data_Either.Right(Data_Functor.map(dictFunctor2)(function (t) {
-                                                  return Control_Monad_Free_Trans.freeT(function (v2) {
-                                                      return go(t);
-                                                  });
-                                              })(v1.value0)));
-                                          };
-                                          throw new Error("Failed pattern match at Control.Coroutine (line 79, column 5 - line 81, column 63): " + [ v1.constructor.name ]);
-                                      });
-                                  };
-                                  return Control_Monad_Free_Trans.freeT(function (v) {
-                                      return go(new Data_Tuple.Tuple(fs, gs));
-                                  });
-                              };
-                          };
-                      };
-                  };
-              };
-          };
-      };
-  };
-  var functorAwait = new Data_Functor.Functor(Data_Profunctor.rmap(profunctorAwait));
-  var bifunctorEmit = new Data_Bifunctor.Bifunctor(function (f) {
-      return function (g) {
-          return function (v) {
-              return new Emit(f(v.value0), g(v.value1));
-          };
-      };
-  });
-  var functorEmit = new Data_Functor.Functor(Data_Bifunctor.rmap(bifunctorEmit));
-  var connect = function (dictMonadRec) {
-      return function (dictParallel) {
-          return fuseWith(functorEmit)(functorAwait)(Data_Identity.functorIdentity)(dictMonadRec)(dictParallel)(function (f) {
-              return function (v) {
-                  return function (v1) {
-                      return f(v.value1)(v1(v.value0));
-                  };
-              };
-          });
-      };
-  };
-  var emit = function (dictMonad) {
-      return function (o) {
-          return Control_Monad_Free_Trans.liftFreeT(functorEmit)(dictMonad)(new Emit(o, Data_Unit.unit));
-      };
-  };
-  var producer = function (dictMonad) {
-      return function (recv) {
-          return loop(functorEmit)(dictMonad)(Control_Bind.bind(Control_Monad_Free_Trans.bindFreeT(functorEmit)(dictMonad))(Control_Monad_Trans_Class.lift(Control_Monad_Free_Trans.monadTransFreeT(functorEmit))(dictMonad)(recv))(function (v) {
-              if (v instanceof Data_Either.Left) {
-                  return Data_Functor.voidLeft(Control_Monad_Free_Trans.functorFreeT(functorEmit)(((dictMonad.Bind1()).Apply0()).Functor0()))(emit(dictMonad)(v.value0))(Data_Maybe.Nothing.value);
-              };
-              if (v instanceof Data_Either.Right) {
-                  return Control_Applicative.pure(Control_Monad_Free_Trans.applicativeFreeT(functorEmit)(dictMonad))(new Data_Maybe.Just(v.value0));
-              };
-              throw new Error("Failed pattern match at Control.Coroutine (line 125, column 3 - line 127, column 29): " + [ v.constructor.name ]);
-          }));
-      };
-  };
-  var pullFrom = function (dictMonadRec) {
-      return fuseWithL(functorAwait)(functorEmit)(Data_Identity.functorIdentity)(dictMonadRec)(function (f) {
-          return function (v) {
-              return function (v1) {
-                  return Control_Applicative.pure(Data_Identity.applicativeIdentity)(f(v(v1.value0))(v1.value1));
-              };
-          };
-      });
-  };
-  var $$await = function (dictMonad) {
-      return Control_Monad_Free_Trans.liftFreeT(functorAwait)(dictMonad)(Control_Category.identity(Control_Category.categoryFn));
-  };
-  exports["loop"] = loop;
-  exports["runProcess"] = runProcess;
-  exports["fuseWith"] = fuseWith;
-  exports["fuseWithL"] = fuseWithL;
-  exports["Emit"] = Emit;
-  exports["emit"] = emit;
-  exports["producer"] = producer;
-  exports["await"] = $$await;
-  exports["connect"] = connect;
-  exports["pullFrom"] = pullFrom;
-  exports["bifunctorEmit"] = bifunctorEmit;
-  exports["functorEmit"] = functorEmit;
-  exports["profunctorAwait"] = profunctorAwait;
-  exports["functorAwait"] = functorAwait;
-})(PS["Control.Coroutine"] = PS["Control.Coroutine"] || {});
-(function(exports) {
-  /* globals exports, setTimeout */
-  "use strict";
-
-  var AVar = function () {
-
-    function MutableQueue () {
-      this.head = null;
-      this.last = null;
-      this.size = 0;
-    }
-
-    function MutableCell (queue, value) {
-      this.queue = queue;
-      this.value = value;
-      this.next  = null;
-      this.prev  = null;
-    }
-
-    function AVar (value) {
-      this.draining = false;
-      this.error    = null;
-      this.value    = value;
-      this.takes    = new MutableQueue();
-      this.reads    = new MutableQueue();
-      this.puts     = new MutableQueue();
-    }
-
-    var EMPTY = {};
-
-    function runEff(eff) {
-      try {
-        eff();
-      } catch (error) {
-        setTimeout(function () {
-          throw error;
-        }, 0);
-      }
-    }
-
-    function putLast (queue, value) {
-      var cell = new MutableCell(queue, value);
-      switch (queue.size) {
-      case 0:
-        queue.head = cell;
-        break;
-      case 1:
-        cell.prev = queue.head;
-        queue.head.next = cell;
-        queue.last = cell;
-        break;
-      default:
-        cell.prev = queue.last;
-        queue.last.next = cell;
-        queue.last = cell;
-      }
-      queue.size++;
-      return cell;
-    }
-
-    function takeLast (queue) {
-      var cell;
-      switch (queue.size) {
-      case 0:
-        return null;
-      case 1:
-        cell = queue.head;
-        queue.head = null;
-        break;
-      case 2:
-        cell = queue.last;
-        queue.head.next = null;
-        queue.last = null;
-        break;
-      default:
-        cell = queue.last;
-        queue.last = cell.prev;
-        queue.last.next = null;
-      }
-      cell.prev = null;
-      cell.queue = null;
-      queue.size--;
-      return cell.value;
-    }
-
-    function takeHead (queue) {
-      var cell;
-      switch (queue.size) {
-      case 0:
-        return null;
-      case 1:
-        cell = queue.head;
-        queue.head = null;
-        break;
-      case 2:
-        cell = queue.head;
-        queue.last.prev = null;
-        queue.head = queue.last;
-        queue.last = null;
-        break;
-      default:
-        cell = queue.head;
-        queue.head = cell.next;
-        queue.head.prev = null;
-      }
-      cell.next = null;
-      cell.queue = null;
-      queue.size--;
-      return cell.value;
-    }
-
-    function deleteCell (cell) {
-      if (cell.queue === null) {
-        return;
-      }
-      if (cell.queue.last === cell) {
-        takeLast(cell.queue);
-        return;
-      }
-      if (cell.queue.head === cell) {
-        takeHead(cell.queue);
-        return;
-      }
-      if (cell.prev) {
-        cell.prev.next = cell.next;
-      }
-      if (cell.next) {
-        cell.next.prev = cell.prev;
-      }
-      cell.queue.size--;
-      cell.queue = null;
-      cell.value = null;
-      cell.next  = null;
-      cell.prev  = null;
-    }
-
-    function drainVar (util, avar) {
-      if (avar.draining) {
-        return;
-      }
-
-      var ps = avar.puts;
-      var ts = avar.takes;
-      var rs = avar.reads;
-      var p, r, t, value, rsize;
-
-      avar.draining = true;
-
-      while (1) { // eslint-disable-line no-constant-condition
-        p = null;
-        r = null;
-        t = null;
-        value = avar.value;
-        rsize = rs.size;
-
-        if (avar.error !== null) {
-          value = util.left(avar.error);
-          while (p = takeHead(ps)) { // eslint-disable-line no-cond-assign
-            runEff(p.cb(value));
-          }
-          while (r = takeHead(rs)) { // eslint-disable-line no-cond-assign
-            runEff(r(value));
-          }
-          while (t = takeHead(ts)) { // eslint-disable-line no-cond-assign
-            runEff(t(value));
-          }
-          break;
-        }
-
-        // Process the next put. We do not immediately invoke the callback
-        // because we want to preserve ordering. If there are takes/reads
-        // we want to run those first.
-        if (value === EMPTY && (p = takeHead(ps))) {
-          avar.value = value = p.value;
-        }
-
-        if (value !== EMPTY) {
-          // We go ahead and queue up the next take for the same reasons as
-          // above. Invoking the read callbacks can affect the mutable queue.
-          t = takeHead(ts);
-          // We only want to process the reads queued up before running these
-          // callbacks so we guard on rsize.
-          while (rsize-- && (r = takeHead(rs))) {
-            runEff(r(util.right(value)));
-          }
-          if (t !== null) {
-            avar.value = EMPTY;
-            runEff(t(util.right(value)));
-          }
-        }
-
-        if (p !== null) {
-          runEff(p.cb(util.right(void 0)));
-        }
-
-        // Callbacks could have queued up more items so we need to guard on the
-        // actual mutable properties.
-        if (avar.value === EMPTY && ps.size === 0 || avar.value !== EMPTY && ts.size === 0) {
-          break;
-        }
-      }
-      avar.draining = false;
-    }
-
-    AVar.EMPTY      = EMPTY;
-    AVar.putLast    = putLast;
-    AVar.takeLast   = takeLast;
-    AVar.takeHead   = takeHead;
-    AVar.deleteCell = deleteCell;
-    AVar.drainVar   = drainVar;
-
-    return AVar;
-  }();
-
-  exports.empty = function () {
-    return new AVar(AVar.EMPTY);
-  };
-
-  exports._killVar = function (util, error, avar) {
-    return function () {
-      if (avar.error === null) {
-        avar.error = error;
-        avar.value = AVar.EMPTY;
-        AVar.drainVar(util, avar);
-      }
-    };
-  };
-
-  exports._putVar = function (util, value, avar, cb) {
-    return function () {
-      var cell = AVar.putLast(avar.puts, { cb: cb, value: value });
-      AVar.drainVar(util, avar);
-      return function () {
-        AVar.deleteCell(cell);
-      };
-    };
-  };
-
-  exports._takeVar = function (util, avar, cb) {
-    return function () {
-      var cell = AVar.putLast(avar.takes, cb);
-      AVar.drainVar(util, avar);
-      return function () {
-        AVar.deleteCell(cell);
-      };
-    };
-  };
-})(PS["Effect.AVar"] = PS["Effect.AVar"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.2
-  "use strict";
-  var $foreign = PS["Effect.AVar"];
-  var Data_Either = PS["Data.Either"];
-  var Data_Function_Uncurried = PS["Data.Function.Uncurried"];
-  var Data_Maybe = PS["Data.Maybe"];
-  var Effect = PS["Effect"];
-  var Effect_Exception = PS["Effect.Exception"];
-  var Prelude = PS["Prelude"];                 
-  var Killed = (function () {
-      function Killed(value0) {
-          this.value0 = value0;
-      };
-      Killed.create = function (value0) {
-          return new Killed(value0);
-      };
-      return Killed;
-  })();
-  var Filled = (function () {
-      function Filled(value0) {
-          this.value0 = value0;
-      };
-      Filled.create = function (value0) {
-          return new Filled(value0);
-      };
-      return Filled;
-  })();
-  var Empty = (function () {
-      function Empty() {
-
-      };
-      Empty.value = new Empty();
-      return Empty;
-  })();
-  var ffiUtil = {
-      left: Data_Either.Left.create,
-      right: Data_Either.Right.create,
-      nothing: Data_Maybe.Nothing.value,
-      just: Data_Maybe.Just.create,
-      killed: Killed.create,
-      filled: Filled.create,
-      empty: Empty.value
-  };
-  var kill = function (err) {
-      return function (avar) {
-          return $foreign["_killVar"](ffiUtil, err, avar);
-      };
-  };
-  var put = function (value) {
-      return function (avar) {
-          return function (cb) {
-              return $foreign["_putVar"](ffiUtil, value, avar, cb);
-          };
-      };
-  };
-  var take = function (avar) {
-      return function (cb) {
-          return $foreign["_takeVar"](ffiUtil, avar, cb);
-      };
-  };
-  exports["Killed"] = Killed;
-  exports["Filled"] = Filled;
-  exports["Empty"] = Empty;
-  exports["take"] = take;
-  exports["put"] = put;
-  exports["kill"] = kill;
-  exports["empty"] = $foreign.empty;
-})(PS["Effect.AVar"] = PS["Effect.AVar"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.2
-  "use strict";
-  var Control_Applicative = PS["Control.Applicative"];
-  var Control_Bind = PS["Control.Bind"];
-  var Control_Semigroupoid = PS["Control.Semigroupoid"];
-  var Data_Maybe = PS["Data.Maybe"];
-  var Effect = PS["Effect"];
-  var Effect_AVar = PS["Effect.AVar"];
-  var Effect_Aff = PS["Effect.Aff"];
-  var Effect_Class = PS["Effect.Class"];
-  var Effect_Exception = PS["Effect.Exception"];
-  var Prelude = PS["Prelude"];
-  var take = function (avar) {
-      return Effect_Aff.makeAff(function (k) {
-          return function __do() {
-              var v = Effect_AVar.take(avar)(k)();
-              return Effect_Aff.effectCanceler(v);
-          };
-      });
-  };
-  var put = function (value) {
-      return function (avar) {
-          return Effect_Aff.makeAff(function (k) {
-              return function __do() {
-                  var v = Effect_AVar.put(value)(avar)(k)();
-                  return Effect_Aff.effectCanceler(v);
-              };
-          });
-      };
-  };
-  var kill = function (error) {
-      return function ($11) {
-          return Effect_Class.liftEffect(Effect_Aff.monadEffectAff)(Effect_AVar.kill(error)($11));
-      };
-  };
-  var empty = Effect_Class.liftEffect(Effect_Aff.monadEffectAff)(Effect_AVar.empty);
-  exports["empty"] = empty;
-  exports["take"] = take;
-  exports["put"] = put;
-  exports["kill"] = kill;
-})(PS["Effect.Aff.AVar"] = PS["Effect.Aff.AVar"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.2
-  "use strict";
-  var Control_Applicative = PS["Control.Applicative"];
-  var Control_Bind = PS["Control.Bind"];
-  var Control_Coroutine = PS["Control.Coroutine"];
-  var Control_Monad_Free_Trans = PS["Control.Monad.Free.Trans"];
-  var Control_Monad_Rec_Class = PS["Control.Monad.Rec.Class"];
-  var Control_Monad_Trans_Class = PS["Control.Monad.Trans.Class"];
-  var Control_Semigroupoid = PS["Control.Semigroupoid"];
-  var Data_Bifunctor = PS["Data.Bifunctor"];
-  var Data_Either = PS["Data.Either"];
-  var Data_Eq = PS["Data.Eq"];
-  var Data_Foldable = PS["Data.Foldable"];
-  var Data_Function = PS["Data.Function"];
-  var Data_Functor = PS["Data.Functor"];
-  var Data_Maybe = PS["Data.Maybe"];
-  var Data_Ord = PS["Data.Ord"];
-  var Data_Ordering = PS["Data.Ordering"];
-  var Data_Unit = PS["Data.Unit"];
-  var Effect = PS["Effect"];
-  var Effect_Aff = PS["Effect.Aff"];
-  var Effect_Aff_AVar = PS["Effect.Aff.AVar"];
-  var Effect_Aff_Class = PS["Effect.Aff.Class"];
-  var Effect_Class = PS["Effect.Class"];
-  var Effect_Exception = PS["Effect.Exception"];
-  var Prelude = PS["Prelude"];                 
-  var Listening = (function () {
-      function Listening() {
-
-      };
-      Listening.value = new Listening();
-      return Listening;
-  })();
-  var Done = (function () {
-      function Done() {
-
-      };
-      Done.value = new Done();
-      return Done;
-  })();
-  var unEventSource = function (v) {
-      return v;
-  };
-  var eqSubscribeStatus = new Data_Eq.Eq(function (x) {
-      return function (y) {
-          if (x instanceof Listening && y instanceof Listening) {
-              return true;
-          };
-          if (x instanceof Done && y instanceof Done) {
-              return true;
-          };
-          return false;
-      };
-  });
-  exports["Listening"] = Listening;
-  exports["Done"] = Done;
-  exports["unEventSource"] = unEventSource;
-  exports["eqSubscribeStatus"] = eqSubscribeStatus;
-})(PS["Halogen.Query.EventSource"] = PS["Halogen.Query.EventSource"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.2
-  "use strict";
-  var Control_Category = PS["Control.Category"];
-  var Data_Function = PS["Data.Function"];
-  var Data_Functor = PS["Data.Functor"];
-  var Effect_Aff = PS["Effect.Aff"];
-  var Effect_Exception = PS["Effect.Exception"];
-  var Prelude = PS["Prelude"];
-  var Unsafe_Coerce = PS["Unsafe.Coerce"];
-  var unFork = Unsafe_Coerce.unsafeCoerce;
-  exports["unFork"] = unFork;
-})(PS["Halogen.Query.ForkF"] = PS["Halogen.Query.ForkF"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.2
-  "use strict";
-  var Control_Applicative = PS["Control.Applicative"];
-  var Control_Applicative_Free = PS["Control.Applicative.Free"];
-  var Control_Apply = PS["Control.Apply"];
-  var Control_Bind = PS["Control.Bind"];
-  var Control_Category = PS["Control.Category"];
-  var Control_Monad = PS["Control.Monad"];
-  var Control_Monad_Free = PS["Control.Monad.Free"];
-  var Control_Monad_Reader_Class = PS["Control.Monad.Reader.Class"];
-  var Control_Monad_Rec_Class = PS["Control.Monad.Rec.Class"];
-  var Control_Monad_State_Class = PS["Control.Monad.State.Class"];
-  var Control_Monad_Trans_Class = PS["Control.Monad.Trans.Class"];
-  var Control_Monad_Writer_Class = PS["Control.Monad.Writer.Class"];
-  var Control_Parallel_Class = PS["Control.Parallel.Class"];
-  var Control_Semigroupoid = PS["Control.Semigroupoid"];
-  var Data_Bifunctor = PS["Data.Bifunctor"];
-  var Data_Coyoneda = PS["Data.Coyoneda"];
-  var Data_Function = PS["Data.Function"];
-  var Data_Functor = PS["Data.Functor"];
-  var Data_List = PS["Data.List"];
-  var Data_List_Types = PS["Data.List.Types"];
-  var Data_Maybe = PS["Data.Maybe"];
-  var Data_Newtype = PS["Data.Newtype"];
-  var Data_Tuple = PS["Data.Tuple"];
-  var Data_Unit = PS["Data.Unit"];
-  var Effect_Aff_Class = PS["Effect.Aff.Class"];
-  var Effect_Class = PS["Effect.Class"];
-  var Effect_Exception = PS["Effect.Exception"];
-  var Halogen_Query_EventSource = PS["Halogen.Query.EventSource"];
-  var Halogen_Query_ForkF = PS["Halogen.Query.ForkF"];
-  var Halogen_Query_InputF = PS["Halogen.Query.InputF"];
-  var Prelude = PS["Prelude"];
-  var Web_DOM = PS["Web.DOM"];
-  var HalogenM = function (x) {
-      return x;
-  };
-  var State = (function () {
-      function State(value0) {
-          this.value0 = value0;
-      };
-      State.create = function (value0) {
-          return new State(value0);
-      };
-      return State;
-  })();
-  var Subscribe = (function () {
-      function Subscribe(value0, value1) {
-          this.value0 = value0;
-          this.value1 = value1;
-      };
-      Subscribe.create = function (value0) {
-          return function (value1) {
-              return new Subscribe(value0, value1);
-          };
-      };
-      return Subscribe;
-  })();
-  var Lift = (function () {
-      function Lift(value0) {
-          this.value0 = value0;
-      };
-      Lift.create = function (value0) {
-          return new Lift(value0);
-      };
-      return Lift;
-  })();
-  var Halt = (function () {
-      function Halt(value0) {
-          this.value0 = value0;
-      };
-      Halt.create = function (value0) {
-          return new Halt(value0);
-      };
-      return Halt;
-  })();
-  var GetSlots = (function () {
-      function GetSlots(value0) {
-          this.value0 = value0;
-      };
-      GetSlots.create = function (value0) {
-          return new GetSlots(value0);
-      };
-      return GetSlots;
-  })();
-  var CheckSlot = (function () {
-      function CheckSlot(value0, value1) {
-          this.value0 = value0;
-          this.value1 = value1;
-      };
-      CheckSlot.create = function (value0) {
-          return function (value1) {
-              return new CheckSlot(value0, value1);
-          };
-      };
-      return CheckSlot;
-  })();
-  var ChildQuery = (function () {
-      function ChildQuery(value0, value1) {
-          this.value0 = value0;
-          this.value1 = value1;
-      };
-      ChildQuery.create = function (value0) {
-          return function (value1) {
-              return new ChildQuery(value0, value1);
-          };
-      };
-      return ChildQuery;
-  })();
-  var Raise = (function () {
-      function Raise(value0, value1) {
-          this.value0 = value0;
-          this.value1 = value1;
-      };
-      Raise.create = function (value0) {
-          return function (value1) {
-              return new Raise(value0, value1);
-          };
-      };
-      return Raise;
-  })();
-  var Par = (function () {
-      function Par(value0) {
-          this.value0 = value0;
-      };
-      Par.create = function (value0) {
-          return new Par(value0);
-      };
-      return Par;
-  })();
-  var Fork = (function () {
-      function Fork(value0) {
-          this.value0 = value0;
-      };
-      Fork.create = function (value0) {
-          return new Fork(value0);
-      };
-      return Fork;
-  })();
-  var GetRef = (function () {
-      function GetRef(value0, value1) {
-          this.value0 = value0;
-          this.value1 = value1;
-      };
-      GetRef.create = function (value0) {
-          return function (value1) {
-              return new GetRef(value0, value1);
-          };
-      };
-      return GetRef;
-  })();
-  var raise = function (o) {
-      return HalogenM(Control_Monad_Free.liftF(new Raise(o, Data_Unit.unit)));
-  };                                                                                                                      
-  var getRef = function (p) {
-      return HalogenM(Control_Monad_Free.liftF(new GetRef(p, Control_Category.identity(Control_Category.categoryFn))));
-  };
-  var functorHalogenM = new Data_Functor.Functor(function (f) {
-      return function (v) {
-          return Data_Functor.map(Control_Monad_Free.freeFunctor)(f)(v);
-      };
-  });
-  var applyHalogenM = new Control_Apply.Apply(function () {
-      return functorHalogenM;
-  }, function (v) {
-      return function (v1) {
-          return Control_Apply.apply(Control_Monad_Free.freeApply)(v)(v1);
-      };
-  });
-  var bindHalogenM = new Control_Bind.Bind(function () {
-      return applyHalogenM;
-  }, function (v) {
-      return function (f) {
-          return Control_Bind.bind(Control_Monad_Free.freeBind)(v)(function (x) {
-              var v1 = f(x);
-              return v1;
-          });
-      };
-  });                                                       
-  var applicativeHalogenM = new Control_Applicative.Applicative(function () {
-      return applyHalogenM;
-  }, function (a) {
-      return Control_Applicative.pure(Control_Monad_Free.freeApplicative)(a);
-  });
-  var monadHalogenM = new Control_Monad.Monad(function () {
-      return applicativeHalogenM;
-  }, function () {
-      return bindHalogenM;
-  });
-  var monadEffectHalogenM = function (dictMonadEffect) {
-      return new Effect_Class.MonadEffect(function () {
-          return monadHalogenM;
-      }, function (eff) {
-          return HalogenM(Control_Monad_Free.liftF(Lift.create(Effect_Class.liftEffect(dictMonadEffect)(eff))));
-      });
-  };
-  var monadAffHalogenM = function (dictMonadAff) {
-      return new Effect_Aff_Class.MonadAff(function () {
-          return monadEffectHalogenM(dictMonadAff.MonadEffect0());
-      }, function (aff) {
-          return HalogenM(Control_Monad_Free.liftF(Lift.create(Effect_Aff_Class.liftAff(dictMonadAff)(aff))));
-      });
-  };
-  var monadStateHalogenM = new Control_Monad_State_Class.MonadState(function () {
-      return monadHalogenM;
-  }, function ($180) {
-      return HalogenM(Control_Monad_Free.liftF(State.create($180)));
-  });
-  exports["State"] = State;
-  exports["Subscribe"] = Subscribe;
-  exports["Lift"] = Lift;
-  exports["Halt"] = Halt;
-  exports["GetSlots"] = GetSlots;
-  exports["CheckSlot"] = CheckSlot;
-  exports["ChildQuery"] = ChildQuery;
-  exports["Raise"] = Raise;
-  exports["Par"] = Par;
-  exports["Fork"] = Fork;
-  exports["GetRef"] = GetRef;
-  exports["HalogenM"] = HalogenM;
-  exports["getRef"] = getRef;
-  exports["raise"] = raise;
-  exports["functorHalogenM"] = functorHalogenM;
-  exports["applyHalogenM"] = applyHalogenM;
-  exports["applicativeHalogenM"] = applicativeHalogenM;
-  exports["bindHalogenM"] = bindHalogenM;
-  exports["monadHalogenM"] = monadHalogenM;
-  exports["monadEffectHalogenM"] = monadEffectHalogenM;
-  exports["monadAffHalogenM"] = monadAffHalogenM;
-  exports["monadStateHalogenM"] = monadStateHalogenM;
-})(PS["Halogen.Query.HalogenM"] = PS["Halogen.Query.HalogenM"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.2
-  "use strict";
-  var Control_Semigroupoid = PS["Control.Semigroupoid"];
-  var Data_Bifunctor = PS["Data.Bifunctor"];
-  var Data_Const = PS["Data.Const"];
-  var Data_Functor = PS["Data.Functor"];
-  var Data_Maybe = PS["Data.Maybe"];
-  var Data_Ord = PS["Data.Ord"];
-  var Halogen_Data_OrdBox = PS["Halogen.Data.OrdBox"];
-  var Halogen_HTML_Core = PS["Halogen.HTML.Core"];
-  var Halogen_Query_HalogenM = PS["Halogen.Query.HalogenM"];
-  var Prelude = PS["Prelude"];
-  var Unsafe_Coerce = PS["Unsafe.Coerce"];                 
-  var ComponentSlot = (function () {
-      function ComponentSlot(value0, value1, value2, value3, value4, value5) {
-          this.value0 = value0;
-          this.value1 = value1;
-          this.value2 = value2;
-          this.value3 = value3;
-          this.value4 = value4;
-          this.value5 = value5;
-      };
-      ComponentSlot.create = function (value0) {
-          return function (value1) {
-              return function (value2) {
-                  return function (value3) {
-                      return function (value4) {
-                          return function (value5) {
-                              return new ComponentSlot(value0, value1, value2, value3, value4, value5);
-                          };
-                      };
-                  };
-              };
-          };
-      };
-      return ComponentSlot;
-  })();
-  var unComponentSlot = function (f) {
-      return function (cs) {
-          return f(cs.value0)(cs.value1)(cs.value2)(cs.value3)(cs.value4)(cs.value5);
-      };
-  };
-  var unComponent = Unsafe_Coerce.unsafeCoerce;
-  var mkComponentSlot = ComponentSlot.create;
-  var mkComponent = Unsafe_Coerce.unsafeCoerce;
-  var parentComponent = function (dictOrd) {
-      return function (spec) {
-          return mkComponent({
-              initialState: spec.initialState,
-              render: spec.render,
-              "eval": spec["eval"],
-              receiver: spec.receiver,
-              initializer: Data_Maybe.Nothing.value,
-              finalizer: Data_Maybe.Nothing.value,
-              mkOrdBox: Halogen_Data_OrdBox.mkOrdBox(dictOrd)
-          });
-      };
-  };
-  var lifecycleComponent = function (dictBifunctor) {
-      return function (spec) {
-          return mkComponent({
-              initialState: spec.initialState,
-              render: spec.render,
-              "eval": spec["eval"],
-              receiver: spec.receiver,
-              initializer: spec.initializer,
-              finalizer: spec.finalizer,
-              mkOrdBox: Halogen_Data_OrdBox.mkOrdBox(Data_Ord.ordVoid)
-          });
-      };
-  }; 
-  var component = function (dictBifunctor) {
-      return function (spec) {
-          return lifecycleComponent(dictBifunctor)({
-              initialState: spec.initialState,
-              render: spec.render,
-              "eval": spec["eval"],
-              receiver: spec.receiver,
-              initializer: Data_Maybe.Nothing.value,
-              finalizer: Data_Maybe.Nothing.value
-          });
-      };
-  };
-  exports["mkComponent"] = mkComponent;
-  exports["unComponent"] = unComponent;
-  exports["component"] = component;
-  exports["lifecycleComponent"] = lifecycleComponent;
-  exports["parentComponent"] = parentComponent;
-  exports["mkComponentSlot"] = mkComponentSlot;
-  exports["unComponentSlot"] = unComponentSlot;
-})(PS["Halogen.Component"] = PS["Halogen.Component"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.2
-  "use strict";
-  var Control_Applicative = PS["Control.Applicative"];
-  var Control_Semigroupoid = PS["Control.Semigroupoid"];
-  var DOM_HTML_Indexed = PS["DOM.HTML.Indexed"];
-  var DOM_HTML_Indexed_ButtonType = PS["DOM.HTML.Indexed.ButtonType"];
-  var DOM_HTML_Indexed_FormMethod = PS["DOM.HTML.Indexed.FormMethod"];
-  var DOM_HTML_Indexed_InputType = PS["DOM.HTML.Indexed.InputType"];
-  var DOM_HTML_Indexed_MenuType = PS["DOM.HTML.Indexed.MenuType"];
-  var DOM_HTML_Indexed_MenuitemType = PS["DOM.HTML.Indexed.MenuitemType"];
-  var DOM_HTML_Indexed_OnOff = PS["DOM.HTML.Indexed.OnOff"];
-  var DOM_HTML_Indexed_OrderedListType = PS["DOM.HTML.Indexed.OrderedListType"];
-  var DOM_HTML_Indexed_PreloadValue = PS["DOM.HTML.Indexed.PreloadValue"];
-  var DOM_HTML_Indexed_StepValue = PS["DOM.HTML.Indexed.StepValue"];
-  var Data_Function = PS["Data.Function"];
-  var Data_Functor = PS["Data.Functor"];
-  var Data_HeytingAlgebra = PS["Data.HeytingAlgebra"];
-  var Data_Maybe = PS["Data.Maybe"];
-  var Data_MediaType = PS["Data.MediaType"];
-  var Data_Newtype = PS["Data.Newtype"];
-  var Data_String = PS["Data.String"];
-  var Data_String_Common = PS["Data.String.Common"];
-  var Data_Unit = PS["Data.Unit"];
-  var Halogen_HTML_Core = PS["Halogen.HTML.Core"];
-  var Halogen_Query_InputF = PS["Halogen.Query.InputF"];
-  var Halogen_VDom_DOM_Prop = PS["Halogen.VDom.DOM.Prop"];
-  var Prelude = PS["Prelude"];
-  var Unsafe_Coerce = PS["Unsafe.Coerce"];
-  var Web_DOM_Element = PS["Web.DOM.Element"];
-  var ref = (function () {
-      var go = function (p) {
-          return function (mel) {
-              return new Data_Maybe.Just(new Halogen_Query_InputF.RefUpdate(p, mel, Data_Unit.unit));
-          };
-      };
-      return function ($10) {
-          return Halogen_HTML_Core.ref(go($10));
-      };
-  })();
-  var prop = function (dictIsProp) {
-      return Halogen_HTML_Core.prop(dictIsProp);
-  };                                                    
-  var required = prop(Halogen_HTML_Core.booleanIsProp)("required");
-  var rows = prop(Halogen_HTML_Core.intIsProp)("rows");        
-  var target = prop(Halogen_HTML_Core.stringIsProp)("target");
-  var title = prop(Halogen_HTML_Core.stringIsProp)("title");
-  var type_ = function (dictIsProp) {
-      return prop(dictIsProp)("type");
-  };
-  var value = prop(Halogen_HTML_Core.stringIsProp)("value");
-  var name = prop(Halogen_HTML_Core.stringIsProp)("name"); 
-  var id_ = prop(Halogen_HTML_Core.stringIsProp)("id");
-  var href = prop(Halogen_HTML_Core.stringIsProp)("href");
-  var $$for = prop(Halogen_HTML_Core.stringIsProp)("htmlFor");
-  var class_ = function ($13) {
-      return prop(Halogen_HTML_Core.stringIsProp)("className")(Data_Newtype.unwrap(Halogen_HTML_Core.newtypeClassName)($13));
-  };
-  var checked = prop(Halogen_HTML_Core.booleanIsProp)("checked");  
-  var autofocus = prop(Halogen_HTML_Core.booleanIsProp)("autofocus");
-  var autocomplete = function ($14) {
-      return prop(Halogen_HTML_Core.onOffIsProp)("autocomplete")((function (b) {
-          if (b) {
-              return DOM_HTML_Indexed_OnOff.On.value;
-          };
-          return DOM_HTML_Indexed_OnOff.Off.value;
-      })($14));
-  };
-  var attr = Halogen_HTML_Core.attr(Data_Maybe.Nothing.value);
-  exports["prop"] = prop;
-  exports["attr"] = attr;
-  exports["ref"] = ref;
-  exports["class_"] = class_;
-  exports["rows"] = rows;
-  exports["for"] = $$for;
-  exports["href"] = href;
-  exports["id_"] = id_;
-  exports["name"] = name;
-  exports["target"] = target;
-  exports["title"] = title;
-  exports["type_"] = type_;
-  exports["value"] = value;
-  exports["required"] = required;
-  exports["checked"] = checked;
-  exports["autocomplete"] = autocomplete;
-  exports["autofocus"] = autofocus;
-})(PS["Halogen.HTML.Properties"] = PS["Halogen.HTML.Properties"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.2
-  "use strict";
-  var Control_Applicative = PS["Control.Applicative"];
-  var Control_Semigroupoid = PS["Control.Semigroupoid"];
-  var DOM_HTML_Indexed = PS["DOM.HTML.Indexed"];
-  var Data_Function = PS["Data.Function"];
-  var Data_Maybe = PS["Data.Maybe"];
-  var Data_Tuple = PS["Data.Tuple"];
-  var Halogen_HTML_Core = PS["Halogen.HTML.Core"];
-  var Halogen_HTML_Properties = PS["Halogen.HTML.Properties"];
-  var Halogen_Query_InputF = PS["Halogen.Query.InputF"];
-  var Halogen_VDom = PS["Halogen.VDom"];
-  var Halogen_VDom_Types = PS["Halogen.VDom.Types"];
-  var Prelude = PS["Prelude"];
-  var Unsafe_Coerce = PS["Unsafe.Coerce"];
-  var element = Halogen_HTML_Core.element(Data_Maybe.Nothing.value);
-  var form = element("form");
-  var input = function (props) {
-      return element("input")(props)([  ]);
-  };                   
-  var label = element("label");
-  var p = element("p");
-  var span = element("span");
-  var table = element("table");
-  var tbody = element("tbody");
-  var tbody_ = tbody([  ]);
-  var td = element("td");
-  var td_ = td([  ]);
-  var textarea = function (es) {
-      return element("textarea")(es)([  ]);
-  };                       
-  var tr = element("tr");
-  var tr_ = tr([  ]);
-  var div = element("div");
-  var div_ = div([  ]);
-  var button = element("button");
-  var br = function (props) {
-      return element("br")(props)([  ]);
-  };
-  var br_ = br([  ]);    
-  var a = element("a");
-  exports["element"] = element;
-  exports["a"] = a;
-  exports["br"] = br;
-  exports["br_"] = br_;
-  exports["button"] = button;
-  exports["div"] = div;
-  exports["div_"] = div_;
-  exports["form"] = form;
-  exports["input"] = input;
-  exports["label"] = label;
-  exports["p"] = p;
-  exports["span"] = span;
-  exports["table"] = table;
-  exports["tbody"] = tbody;
-  exports["tbody_"] = tbody_;
-  exports["td"] = td;
-  exports["td_"] = td_;
-  exports["textarea"] = textarea;
-  exports["tr"] = tr;
-  exports["tr_"] = tr_;
-})(PS["Halogen.HTML.Elements"] = PS["Halogen.HTML.Elements"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.2
-  "use strict";
-  var Control_Semigroupoid = PS["Control.Semigroupoid"];
-  var Data_Functor = PS["Data.Functor"];
-  var Data_Maybe = PS["Data.Maybe"];
-  var Halogen_Component = PS["Halogen.Component"];
-  var Halogen_Component_ChildPath = PS["Halogen.Component.ChildPath"];
-  var Halogen_HTML_Core = PS["Halogen.HTML.Core"];
-  var Halogen_HTML_Elements = PS["Halogen.HTML.Elements"];
-  var Halogen_HTML_Properties = PS["Halogen.HTML.Properties"];
-  var Prelude = PS["Prelude"];
-  var Unsafe_Coerce = PS["Unsafe.Coerce"];
-  var slot = function (p) {
-      return function (component) {
-          return function (input) {
-              return function (outputQuery) {
-                  var f = Halogen_Component.unComponent(function (v) {
-                      return v.receiver;
-                  })(component);
-                  return Halogen_HTML_Core.slot(Halogen_Component.mkComponentSlot(p)(component)(input)(f)(outputQuery)(Data_Maybe.Just.create));
-              };
-          };
-      };
-  };
-  exports["slot"] = slot;
-})(PS["Halogen.HTML"] = PS["Halogen.HTML"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.2
-  "use strict";
-  var Control_Applicative = PS["Control.Applicative"];
-  var Control_Apply = PS["Control.Apply"];
-  var Control_Category = PS["Control.Category"];
-  var Control_Semigroupoid = PS["Control.Semigroupoid"];
-  var Data_Eq = PS["Data.Eq"];
-  var Data_Foldable = PS["Data.Foldable"];
-  var Data_FoldableWithIndex = PS["Data.FoldableWithIndex"];
-  var Data_Function = PS["Data.Function"];
-  var Data_Functor = PS["Data.Functor"];
-  var Data_FunctorWithIndex = PS["Data.FunctorWithIndex"];
-  var Data_HeytingAlgebra = PS["Data.HeytingAlgebra"];
-  var Data_List = PS["Data.List"];
-  var Data_List_Lazy = PS["Data.List.Lazy"];
-  var Data_List_Lazy_Types = PS["Data.List.Lazy.Types"];
-  var Data_List_Types = PS["Data.List.Types"];
-  var Data_Maybe = PS["Data.Maybe"];
-  var Data_Monoid = PS["Data.Monoid"];
-  var Data_Ord = PS["Data.Ord"];
-  var Data_Ordering = PS["Data.Ordering"];
-  var Data_Semigroup = PS["Data.Semigroup"];
-  var Data_Semiring = PS["Data.Semiring"];
-  var Data_Show = PS["Data.Show"];
-  var Data_Traversable = PS["Data.Traversable"];
-  var Data_TraversableWithIndex = PS["Data.TraversableWithIndex"];
-  var Data_Tuple = PS["Data.Tuple"];
-  var Data_Unfoldable = PS["Data.Unfoldable"];
-  var Partial_Unsafe = PS["Partial.Unsafe"];
-  var Prelude = PS["Prelude"];                 
-  var Leaf = (function () {
-      function Leaf() {
-
-      };
-      Leaf.value = new Leaf();
-      return Leaf;
-  })();
-  var Two = (function () {
-      function Two(value0, value1, value2, value3) {
-          this.value0 = value0;
-          this.value1 = value1;
-          this.value2 = value2;
-          this.value3 = value3;
-      };
-      Two.create = function (value0) {
-          return function (value1) {
-              return function (value2) {
-                  return function (value3) {
-                      return new Two(value0, value1, value2, value3);
-                  };
-              };
-          };
-      };
-      return Two;
-  })();
-  var Three = (function () {
-      function Three(value0, value1, value2, value3, value4, value5, value6) {
-          this.value0 = value0;
-          this.value1 = value1;
-          this.value2 = value2;
-          this.value3 = value3;
-          this.value4 = value4;
-          this.value5 = value5;
-          this.value6 = value6;
-      };
-      Three.create = function (value0) {
-          return function (value1) {
-              return function (value2) {
-                  return function (value3) {
-                      return function (value4) {
-                          return function (value5) {
-                              return function (value6) {
-                                  return new Three(value0, value1, value2, value3, value4, value5, value6);
-                              };
-                          };
-                      };
-                  };
-              };
-          };
-      };
-      return Three;
-  })();
-  var TwoLeft = (function () {
-      function TwoLeft(value0, value1, value2) {
-          this.value0 = value0;
-          this.value1 = value1;
-          this.value2 = value2;
-      };
-      TwoLeft.create = function (value0) {
-          return function (value1) {
-              return function (value2) {
-                  return new TwoLeft(value0, value1, value2);
-              };
-          };
-      };
-      return TwoLeft;
-  })();
-  var TwoRight = (function () {
-      function TwoRight(value0, value1, value2) {
-          this.value0 = value0;
-          this.value1 = value1;
-          this.value2 = value2;
-      };
-      TwoRight.create = function (value0) {
-          return function (value1) {
-              return function (value2) {
-                  return new TwoRight(value0, value1, value2);
-              };
-          };
-      };
-      return TwoRight;
-  })();
-  var ThreeLeft = (function () {
-      function ThreeLeft(value0, value1, value2, value3, value4, value5) {
-          this.value0 = value0;
-          this.value1 = value1;
-          this.value2 = value2;
-          this.value3 = value3;
-          this.value4 = value4;
-          this.value5 = value5;
-      };
-      ThreeLeft.create = function (value0) {
-          return function (value1) {
-              return function (value2) {
-                  return function (value3) {
-                      return function (value4) {
-                          return function (value5) {
-                              return new ThreeLeft(value0, value1, value2, value3, value4, value5);
-                          };
-                      };
-                  };
-              };
-          };
-      };
-      return ThreeLeft;
-  })();
-  var ThreeMiddle = (function () {
-      function ThreeMiddle(value0, value1, value2, value3, value4, value5) {
-          this.value0 = value0;
-          this.value1 = value1;
-          this.value2 = value2;
-          this.value3 = value3;
-          this.value4 = value4;
-          this.value5 = value5;
-      };
-      ThreeMiddle.create = function (value0) {
-          return function (value1) {
-              return function (value2) {
-                  return function (value3) {
-                      return function (value4) {
-                          return function (value5) {
-                              return new ThreeMiddle(value0, value1, value2, value3, value4, value5);
-                          };
-                      };
-                  };
-              };
-          };
-      };
-      return ThreeMiddle;
-  })();
-  var ThreeRight = (function () {
-      function ThreeRight(value0, value1, value2, value3, value4, value5) {
-          this.value0 = value0;
-          this.value1 = value1;
-          this.value2 = value2;
-          this.value3 = value3;
-          this.value4 = value4;
-          this.value5 = value5;
-      };
-      ThreeRight.create = function (value0) {
-          return function (value1) {
-              return function (value2) {
-                  return function (value3) {
-                      return function (value4) {
-                          return function (value5) {
-                              return new ThreeRight(value0, value1, value2, value3, value4, value5);
-                          };
-                      };
-                  };
-              };
-          };
-      };
-      return ThreeRight;
-  })();
-  var KickUp = (function () {
-      function KickUp(value0, value1, value2, value3) {
-          this.value0 = value0;
-          this.value1 = value1;
-          this.value2 = value2;
-          this.value3 = value3;
-      };
-      KickUp.create = function (value0) {
-          return function (value1) {
-              return function (value2) {
-                  return function (value3) {
-                      return new KickUp(value0, value1, value2, value3);
-                  };
-              };
-          };
-      };
-      return KickUp;
-  })();
-  var values = function (v) {
-      if (v instanceof Leaf) {
-          return Data_List_Types.Nil.value;
-      };
-      if (v instanceof Two) {
-          return Data_Semigroup.append(Data_List_Types.semigroupList)(values(v.value0))(Data_Semigroup.append(Data_List_Types.semigroupList)(Control_Applicative.pure(Data_List_Types.applicativeList)(v.value2))(values(v.value3)));
-      };
-      if (v instanceof Three) {
-          return Data_Semigroup.append(Data_List_Types.semigroupList)(values(v.value0))(Data_Semigroup.append(Data_List_Types.semigroupList)(Control_Applicative.pure(Data_List_Types.applicativeList)(v.value2))(Data_Semigroup.append(Data_List_Types.semigroupList)(values(v.value3))(Data_Semigroup.append(Data_List_Types.semigroupList)(Control_Applicative.pure(Data_List_Types.applicativeList)(v.value5))(values(v.value6)))));
-      };
-      throw new Error("Failed pattern match at Data.Map.Internal (line 602, column 1 - line 602, column 40): " + [ v.constructor.name ]);
-  };
-  var lookup = function (dictOrd) {
-      return function (k) {
-          var comp = Data_Ord.compare(dictOrd);
-          var go = function ($copy_v) {
-              var $tco_done = false;
-              var $tco_result;
-              function $tco_loop(v) {
-                  if (v instanceof Leaf) {
-                      $tco_done = true;
-                      return Data_Maybe.Nothing.value;
-                  };
-                  if (v instanceof Two) {
-                      var v2 = comp(k)(v.value1);
-                      if (v2 instanceof Data_Ordering.EQ) {
-                          $tco_done = true;
-                          return new Data_Maybe.Just(v.value2);
-                      };
-                      if (v2 instanceof Data_Ordering.LT) {
-                          $copy_v = v.value0;
-                          return;
-                      };
-                      $copy_v = v.value3;
-                      return;
-                  };
-                  if (v instanceof Three) {
-                      var v3 = comp(k)(v.value1);
-                      if (v3 instanceof Data_Ordering.EQ) {
-                          $tco_done = true;
-                          return new Data_Maybe.Just(v.value2);
-                      };
-                      var v4 = comp(k)(v.value4);
-                      if (v4 instanceof Data_Ordering.EQ) {
-                          $tco_done = true;
-                          return new Data_Maybe.Just(v.value5);
-                      };
-                      if (v3 instanceof Data_Ordering.LT) {
-                          $copy_v = v.value0;
-                          return;
-                      };
-                      if (v4 instanceof Data_Ordering.GT) {
-                          $copy_v = v.value6;
-                          return;
-                      };
-                      $copy_v = v.value3;
-                      return;
-                  };
-                  throw new Error("Failed pattern match at Data.Map.Internal (line 197, column 5 - line 197, column 22): " + [ v.constructor.name ]);
-              };
-              while (!$tco_done) {
-                  $tco_result = $tco_loop($copy_v);
-              };
-              return $tco_result;
-          };
-          return go;
-      };
-  };
-  var member = function (dictOrd) {
-      return function (k) {
-          return function (m) {
-              return Data_Maybe.isJust(lookup(dictOrd)(k)(m));
-          };
-      };
-  };
-  var keys = function (v) {
-      if (v instanceof Leaf) {
-          return Data_List_Types.Nil.value;
-      };
-      if (v instanceof Two) {
-          return Data_Semigroup.append(Data_List_Types.semigroupList)(keys(v.value0))(Data_Semigroup.append(Data_List_Types.semigroupList)(Control_Applicative.pure(Data_List_Types.applicativeList)(v.value1))(keys(v.value3)));
-      };
-      if (v instanceof Three) {
-          return Data_Semigroup.append(Data_List_Types.semigroupList)(keys(v.value0))(Data_Semigroup.append(Data_List_Types.semigroupList)(Control_Applicative.pure(Data_List_Types.applicativeList)(v.value1))(Data_Semigroup.append(Data_List_Types.semigroupList)(keys(v.value3))(Data_Semigroup.append(Data_List_Types.semigroupList)(Control_Applicative.pure(Data_List_Types.applicativeList)(v.value4))(keys(v.value6)))));
-      };
-      throw new Error("Failed pattern match at Data.Map.Internal (line 596, column 1 - line 596, column 38): " + [ v.constructor.name ]);
-  };
-  var functorMap = new Data_Functor.Functor(function (v) {
-      return function (v1) {
-          if (v1 instanceof Leaf) {
-              return Leaf.value;
-          };
-          if (v1 instanceof Two) {
-              return new Two(Data_Functor.map(functorMap)(v)(v1.value0), v1.value1, v(v1.value2), Data_Functor.map(functorMap)(v)(v1.value3));
-          };
-          if (v1 instanceof Three) {
-              return new Three(Data_Functor.map(functorMap)(v)(v1.value0), v1.value1, v(v1.value2), Data_Functor.map(functorMap)(v)(v1.value3), v1.value4, v(v1.value5), Data_Functor.map(functorMap)(v)(v1.value6));
-          };
-          throw new Error("Failed pattern match at Data.Map.Internal (line 93, column 1 - line 93, column 39): " + [ v.constructor.name, v1.constructor.name ]);
-      };
-  });
-  var fromZipper = function ($copy_dictOrd) {
-      return function ($copy_v) {
-          return function ($copy_tree) {
-              var $tco_var_dictOrd = $copy_dictOrd;
-              var $tco_var_v = $copy_v;
-              var $tco_done = false;
-              var $tco_result;
-              function $tco_loop(dictOrd, v, tree) {
-                  if (v instanceof Data_List_Types.Nil) {
-                      $tco_done = true;
-                      return tree;
-                  };
-                  if (v instanceof Data_List_Types.Cons) {
-                      if (v.value0 instanceof TwoLeft) {
-                          $tco_var_dictOrd = dictOrd;
-                          $tco_var_v = v.value1;
-                          $copy_tree = new Two(tree, v.value0.value0, v.value0.value1, v.value0.value2);
-                          return;
-                      };
-                      if (v.value0 instanceof TwoRight) {
-                          $tco_var_dictOrd = dictOrd;
-                          $tco_var_v = v.value1;
-                          $copy_tree = new Two(v.value0.value0, v.value0.value1, v.value0.value2, tree);
-                          return;
-                      };
-                      if (v.value0 instanceof ThreeLeft) {
-                          $tco_var_dictOrd = dictOrd;
-                          $tco_var_v = v.value1;
-                          $copy_tree = new Three(tree, v.value0.value0, v.value0.value1, v.value0.value2, v.value0.value3, v.value0.value4, v.value0.value5);
-                          return;
-                      };
-                      if (v.value0 instanceof ThreeMiddle) {
-                          $tco_var_dictOrd = dictOrd;
-                          $tco_var_v = v.value1;
-                          $copy_tree = new Three(v.value0.value0, v.value0.value1, v.value0.value2, tree, v.value0.value3, v.value0.value4, v.value0.value5);
-                          return;
-                      };
-                      if (v.value0 instanceof ThreeRight) {
-                          $tco_var_dictOrd = dictOrd;
-                          $tco_var_v = v.value1;
-                          $copy_tree = new Three(v.value0.value0, v.value0.value1, v.value0.value2, v.value0.value3, v.value0.value4, v.value0.value5, tree);
-                          return;
-                      };
-                      throw new Error("Failed pattern match at Data.Map.Internal (line 415, column 3 - line 420, column 88): " + [ v.value0.constructor.name ]);
-                  };
-                  throw new Error("Failed pattern match at Data.Map.Internal (line 412, column 1 - line 412, column 80): " + [ v.constructor.name, tree.constructor.name ]);
-              };
-              while (!$tco_done) {
-                  $tco_result = $tco_loop($tco_var_dictOrd, $tco_var_v, $copy_tree);
-              };
-              return $tco_result;
-          };
-      };
-  };
-  var insert = function (dictOrd) {
-      return function (k) {
-          return function (v) {
-              var up = function ($copy_v1) {
-                  return function ($copy_v2) {
-                      var $tco_var_v1 = $copy_v1;
-                      var $tco_done = false;
-                      var $tco_result;
-                      function $tco_loop(v1, v2) {
-                          if (v1 instanceof Data_List_Types.Nil) {
-                              $tco_done = true;
-                              return new Two(v2.value0, v2.value1, v2.value2, v2.value3);
-                          };
-                          if (v1 instanceof Data_List_Types.Cons) {
-                              if (v1.value0 instanceof TwoLeft) {
-                                  $tco_done = true;
-                                  return fromZipper(dictOrd)(v1.value1)(new Three(v2.value0, v2.value1, v2.value2, v2.value3, v1.value0.value0, v1.value0.value1, v1.value0.value2));
-                              };
-                              if (v1.value0 instanceof TwoRight) {
-                                  $tco_done = true;
-                                  return fromZipper(dictOrd)(v1.value1)(new Three(v1.value0.value0, v1.value0.value1, v1.value0.value2, v2.value0, v2.value1, v2.value2, v2.value3));
-                              };
-                              if (v1.value0 instanceof ThreeLeft) {
-                                  $tco_var_v1 = v1.value1;
-                                  $copy_v2 = new KickUp(new Two(v2.value0, v2.value1, v2.value2, v2.value3), v1.value0.value0, v1.value0.value1, new Two(v1.value0.value2, v1.value0.value3, v1.value0.value4, v1.value0.value5));
-                                  return;
-                              };
-                              if (v1.value0 instanceof ThreeMiddle) {
-                                  $tco_var_v1 = v1.value1;
-                                  $copy_v2 = new KickUp(new Two(v1.value0.value0, v1.value0.value1, v1.value0.value2, v2.value0), v2.value1, v2.value2, new Two(v2.value3, v1.value0.value3, v1.value0.value4, v1.value0.value5));
-                                  return;
-                              };
-                              if (v1.value0 instanceof ThreeRight) {
-                                  $tco_var_v1 = v1.value1;
-                                  $copy_v2 = new KickUp(new Two(v1.value0.value0, v1.value0.value1, v1.value0.value2, v1.value0.value3), v1.value0.value4, v1.value0.value5, new Two(v2.value0, v2.value1, v2.value2, v2.value3));
-                                  return;
-                              };
-                              throw new Error("Failed pattern match at Data.Map.Internal (line 451, column 5 - line 456, column 108): " + [ v1.value0.constructor.name, v2.constructor.name ]);
-                          };
-                          throw new Error("Failed pattern match at Data.Map.Internal (line 448, column 3 - line 448, column 56): " + [ v1.constructor.name, v2.constructor.name ]);
-                      };
-                      while (!$tco_done) {
-                          $tco_result = $tco_loop($tco_var_v1, $copy_v2);
-                      };
-                      return $tco_result;
-                  };
-              };
-              var comp = Data_Ord.compare(dictOrd);
-              var down = function ($copy_ctx) {
-                  return function ($copy_v1) {
-                      var $tco_var_ctx = $copy_ctx;
-                      var $tco_done = false;
-                      var $tco_result;
-                      function $tco_loop(ctx, v1) {
-                          if (v1 instanceof Leaf) {
-                              $tco_done = true;
-                              return up(ctx)(new KickUp(Leaf.value, k, v, Leaf.value));
-                          };
-                          if (v1 instanceof Two) {
-                              var v2 = comp(k)(v1.value1);
-                              if (v2 instanceof Data_Ordering.EQ) {
-                                  $tco_done = true;
-                                  return fromZipper(dictOrd)(ctx)(new Two(v1.value0, k, v, v1.value3));
-                              };
-                              if (v2 instanceof Data_Ordering.LT) {
-                                  $tco_var_ctx = new Data_List_Types.Cons(new TwoLeft(v1.value1, v1.value2, v1.value3), ctx);
-                                  $copy_v1 = v1.value0;
-                                  return;
-                              };
-                              $tco_var_ctx = new Data_List_Types.Cons(new TwoRight(v1.value0, v1.value1, v1.value2), ctx);
-                              $copy_v1 = v1.value3;
-                              return;
-                          };
-                          if (v1 instanceof Three) {
-                              var v3 = comp(k)(v1.value1);
-                              if (v3 instanceof Data_Ordering.EQ) {
-                                  $tco_done = true;
-                                  return fromZipper(dictOrd)(ctx)(new Three(v1.value0, k, v, v1.value3, v1.value4, v1.value5, v1.value6));
-                              };
-                              var v4 = comp(k)(v1.value4);
-                              if (v4 instanceof Data_Ordering.EQ) {
-                                  $tco_done = true;
-                                  return fromZipper(dictOrd)(ctx)(new Three(v1.value0, v1.value1, v1.value2, v1.value3, k, v, v1.value6));
-                              };
-                              if (v3 instanceof Data_Ordering.LT) {
-                                  $tco_var_ctx = new Data_List_Types.Cons(new ThreeLeft(v1.value1, v1.value2, v1.value3, v1.value4, v1.value5, v1.value6), ctx);
-                                  $copy_v1 = v1.value0;
-                                  return;
-                              };
-                              if (v3 instanceof Data_Ordering.GT && v4 instanceof Data_Ordering.LT) {
-                                  $tco_var_ctx = new Data_List_Types.Cons(new ThreeMiddle(v1.value0, v1.value1, v1.value2, v1.value4, v1.value5, v1.value6), ctx);
-                                  $copy_v1 = v1.value3;
-                                  return;
-                              };
-                              $tco_var_ctx = new Data_List_Types.Cons(new ThreeRight(v1.value0, v1.value1, v1.value2, v1.value3, v1.value4, v1.value5), ctx);
-                              $copy_v1 = v1.value6;
-                              return;
-                          };
-                          throw new Error("Failed pattern match at Data.Map.Internal (line 431, column 3 - line 431, column 55): " + [ ctx.constructor.name, v1.constructor.name ]);
-                      };
-                      while (!$tco_done) {
-                          $tco_result = $tco_loop($tco_var_ctx, $copy_v1);
-                      };
-                      return $tco_result;
-                  };
-              };
-              return down(Data_List_Types.Nil.value);
-          };
-      };
-  };
-  var pop = function (dictOrd) {
-      return function (k) {
-          var up = function ($copy_ctxs) {
-              return function ($copy_tree) {
-                  var $tco_var_ctxs = $copy_ctxs;
-                  var $tco_done = false;
-                  var $tco_result;
-                  function $tco_loop(ctxs, tree) {
-                      if (ctxs instanceof Data_List_Types.Nil) {
-                          $tco_done = true;
-                          return tree;
-                      };
-                      if (ctxs instanceof Data_List_Types.Cons) {
-                          if (ctxs.value0 instanceof TwoLeft && (ctxs.value0.value2 instanceof Leaf && tree instanceof Leaf)) {
-                              $tco_done = true;
-                              return fromZipper(dictOrd)(ctxs.value1)(new Two(Leaf.value, ctxs.value0.value0, ctxs.value0.value1, Leaf.value));
-                          };
-                          if (ctxs.value0 instanceof TwoRight && (ctxs.value0.value0 instanceof Leaf && tree instanceof Leaf)) {
-                              $tco_done = true;
-                              return fromZipper(dictOrd)(ctxs.value1)(new Two(Leaf.value, ctxs.value0.value1, ctxs.value0.value2, Leaf.value));
-                          };
-                          if (ctxs.value0 instanceof TwoLeft && ctxs.value0.value2 instanceof Two) {
-                              $tco_var_ctxs = ctxs.value1;
-                              $copy_tree = new Three(tree, ctxs.value0.value0, ctxs.value0.value1, ctxs.value0.value2.value0, ctxs.value0.value2.value1, ctxs.value0.value2.value2, ctxs.value0.value2.value3);
-                              return;
-                          };
-                          if (ctxs.value0 instanceof TwoRight && ctxs.value0.value0 instanceof Two) {
-                              $tco_var_ctxs = ctxs.value1;
-                              $copy_tree = new Three(ctxs.value0.value0.value0, ctxs.value0.value0.value1, ctxs.value0.value0.value2, ctxs.value0.value0.value3, ctxs.value0.value1, ctxs.value0.value2, tree);
-                              return;
-                          };
-                          if (ctxs.value0 instanceof TwoLeft && ctxs.value0.value2 instanceof Three) {
-                              $tco_done = true;
-                              return fromZipper(dictOrd)(ctxs.value1)(new Two(new Two(tree, ctxs.value0.value0, ctxs.value0.value1, ctxs.value0.value2.value0), ctxs.value0.value2.value1, ctxs.value0.value2.value2, new Two(ctxs.value0.value2.value3, ctxs.value0.value2.value4, ctxs.value0.value2.value5, ctxs.value0.value2.value6)));
-                          };
-                          if (ctxs.value0 instanceof TwoRight && ctxs.value0.value0 instanceof Three) {
-                              $tco_done = true;
-                              return fromZipper(dictOrd)(ctxs.value1)(new Two(new Two(ctxs.value0.value0.value0, ctxs.value0.value0.value1, ctxs.value0.value0.value2, ctxs.value0.value0.value3), ctxs.value0.value0.value4, ctxs.value0.value0.value5, new Two(ctxs.value0.value0.value6, ctxs.value0.value1, ctxs.value0.value2, tree)));
-                          };
-                          if (ctxs.value0 instanceof ThreeLeft && (ctxs.value0.value2 instanceof Leaf && (ctxs.value0.value5 instanceof Leaf && tree instanceof Leaf))) {
-                              $tco_done = true;
-                              return fromZipper(dictOrd)(ctxs.value1)(new Three(Leaf.value, ctxs.value0.value0, ctxs.value0.value1, Leaf.value, ctxs.value0.value3, ctxs.value0.value4, Leaf.value));
-                          };
-                          if (ctxs.value0 instanceof ThreeMiddle && (ctxs.value0.value0 instanceof Leaf && (ctxs.value0.value5 instanceof Leaf && tree instanceof Leaf))) {
-                              $tco_done = true;
-                              return fromZipper(dictOrd)(ctxs.value1)(new Three(Leaf.value, ctxs.value0.value1, ctxs.value0.value2, Leaf.value, ctxs.value0.value3, ctxs.value0.value4, Leaf.value));
-                          };
-                          if (ctxs.value0 instanceof ThreeRight && (ctxs.value0.value0 instanceof Leaf && (ctxs.value0.value3 instanceof Leaf && tree instanceof Leaf))) {
-                              $tco_done = true;
-                              return fromZipper(dictOrd)(ctxs.value1)(new Three(Leaf.value, ctxs.value0.value1, ctxs.value0.value2, Leaf.value, ctxs.value0.value4, ctxs.value0.value5, Leaf.value));
-                          };
-                          if (ctxs.value0 instanceof ThreeLeft && ctxs.value0.value2 instanceof Two) {
-                              $tco_done = true;
-                              return fromZipper(dictOrd)(ctxs.value1)(new Two(new Three(tree, ctxs.value0.value0, ctxs.value0.value1, ctxs.value0.value2.value0, ctxs.value0.value2.value1, ctxs.value0.value2.value2, ctxs.value0.value2.value3), ctxs.value0.value3, ctxs.value0.value4, ctxs.value0.value5));
-                          };
-                          if (ctxs.value0 instanceof ThreeMiddle && ctxs.value0.value0 instanceof Two) {
-                              $tco_done = true;
-                              return fromZipper(dictOrd)(ctxs.value1)(new Two(new Three(ctxs.value0.value0.value0, ctxs.value0.value0.value1, ctxs.value0.value0.value2, ctxs.value0.value0.value3, ctxs.value0.value1, ctxs.value0.value2, tree), ctxs.value0.value3, ctxs.value0.value4, ctxs.value0.value5));
-                          };
-                          if (ctxs.value0 instanceof ThreeMiddle && ctxs.value0.value5 instanceof Two) {
-                              $tco_done = true;
-                              return fromZipper(dictOrd)(ctxs.value1)(new Two(ctxs.value0.value0, ctxs.value0.value1, ctxs.value0.value2, new Three(tree, ctxs.value0.value3, ctxs.value0.value4, ctxs.value0.value5.value0, ctxs.value0.value5.value1, ctxs.value0.value5.value2, ctxs.value0.value5.value3)));
-                          };
-                          if (ctxs.value0 instanceof ThreeRight && ctxs.value0.value3 instanceof Two) {
-                              $tco_done = true;
-                              return fromZipper(dictOrd)(ctxs.value1)(new Two(ctxs.value0.value0, ctxs.value0.value1, ctxs.value0.value2, new Three(ctxs.value0.value3.value0, ctxs.value0.value3.value1, ctxs.value0.value3.value2, ctxs.value0.value3.value3, ctxs.value0.value4, ctxs.value0.value5, tree)));
-                          };
-                          if (ctxs.value0 instanceof ThreeLeft && ctxs.value0.value2 instanceof Three) {
-                              $tco_done = true;
-                              return fromZipper(dictOrd)(ctxs.value1)(new Three(new Two(tree, ctxs.value0.value0, ctxs.value0.value1, ctxs.value0.value2.value0), ctxs.value0.value2.value1, ctxs.value0.value2.value2, new Two(ctxs.value0.value2.value3, ctxs.value0.value2.value4, ctxs.value0.value2.value5, ctxs.value0.value2.value6), ctxs.value0.value3, ctxs.value0.value4, ctxs.value0.value5));
-                          };
-                          if (ctxs.value0 instanceof ThreeMiddle && ctxs.value0.value0 instanceof Three) {
-                              $tco_done = true;
-                              return fromZipper(dictOrd)(ctxs.value1)(new Three(new Two(ctxs.value0.value0.value0, ctxs.value0.value0.value1, ctxs.value0.value0.value2, ctxs.value0.value0.value3), ctxs.value0.value0.value4, ctxs.value0.value0.value5, new Two(ctxs.value0.value0.value6, ctxs.value0.value1, ctxs.value0.value2, tree), ctxs.value0.value3, ctxs.value0.value4, ctxs.value0.value5));
-                          };
-                          if (ctxs.value0 instanceof ThreeMiddle && ctxs.value0.value5 instanceof Three) {
-                              $tco_done = true;
-                              return fromZipper(dictOrd)(ctxs.value1)(new Three(ctxs.value0.value0, ctxs.value0.value1, ctxs.value0.value2, new Two(tree, ctxs.value0.value3, ctxs.value0.value4, ctxs.value0.value5.value0), ctxs.value0.value5.value1, ctxs.value0.value5.value2, new Two(ctxs.value0.value5.value3, ctxs.value0.value5.value4, ctxs.value0.value5.value5, ctxs.value0.value5.value6)));
-                          };
-                          if (ctxs.value0 instanceof ThreeRight && ctxs.value0.value3 instanceof Three) {
-                              $tco_done = true;
-                              return fromZipper(dictOrd)(ctxs.value1)(new Three(ctxs.value0.value0, ctxs.value0.value1, ctxs.value0.value2, new Two(ctxs.value0.value3.value0, ctxs.value0.value3.value1, ctxs.value0.value3.value2, ctxs.value0.value3.value3), ctxs.value0.value3.value4, ctxs.value0.value3.value5, new Two(ctxs.value0.value3.value6, ctxs.value0.value4, ctxs.value0.value5, tree)));
-                          };
-                          throw new Error("Failed pattern match at Data.Map.Internal (line 501, column 9 - line 518, column 136): " + [ ctxs.value0.constructor.name, tree.constructor.name ]);
-                      };
-                      throw new Error("Failed pattern match at Data.Map.Internal (line 498, column 5 - line 518, column 136): " + [ ctxs.constructor.name ]);
-                  };
-                  while (!$tco_done) {
-                      $tco_result = $tco_loop($tco_var_ctxs, $copy_tree);
-                  };
-                  return $tco_result;
-              };
-          };
-          var removeMaxNode = function ($copy_ctx) {
-              return function ($copy_m) {
-                  var $tco_var_ctx = $copy_ctx;
-                  var $tco_done = false;
-                  var $tco_result;
-                  function $tco_loop(ctx, m) {
-                      if (m instanceof Two && (m.value0 instanceof Leaf && m.value3 instanceof Leaf)) {
-                          $tco_done = true;
-                          return up(ctx)(Leaf.value);
-                      };
-                      if (m instanceof Two) {
-                          $tco_var_ctx = new Data_List_Types.Cons(new TwoRight(m.value0, m.value1, m.value2), ctx);
-                          $copy_m = m.value3;
-                          return;
-                      };
-                      if (m instanceof Three && (m.value0 instanceof Leaf && (m.value3 instanceof Leaf && m.value6 instanceof Leaf))) {
-                          $tco_done = true;
-                          return up(new Data_List_Types.Cons(new TwoRight(Leaf.value, m.value1, m.value2), ctx))(Leaf.value);
-                      };
-                      if (m instanceof Three) {
-                          $tco_var_ctx = new Data_List_Types.Cons(new ThreeRight(m.value0, m.value1, m.value2, m.value3, m.value4, m.value5), ctx);
-                          $copy_m = m.value6;
-                          return;
-                      };
-                      throw new Error("Failed pattern match at Data.Map.Internal (line 530, column 5 - line 534, column 107): " + [ m.constructor.name ]);
-                  };
-                  while (!$tco_done) {
-                      $tco_result = $tco_loop($tco_var_ctx, $copy_m);
-                  };
-                  return $tco_result;
-              };
-          };
-          var maxNode = function ($copy_m) {
-              var $tco_done = false;
-              var $tco_result;
-              function $tco_loop(m) {
-                  if (m instanceof Two && m.value3 instanceof Leaf) {
-                      $tco_done = true;
-                      return {
-                          key: m.value1,
-                          value: m.value2
-                      };
-                  };
-                  if (m instanceof Two) {
-                      $copy_m = m.value3;
-                      return;
-                  };
-                  if (m instanceof Three && m.value6 instanceof Leaf) {
-                      $tco_done = true;
-                      return {
-                          key: m.value4,
-                          value: m.value5
-                      };
-                  };
-                  if (m instanceof Three) {
-                      $copy_m = m.value6;
-                      return;
-                  };
-                  throw new Error("Failed pattern match at Data.Map.Internal (line 521, column 33 - line 525, column 45): " + [ m.constructor.name ]);
-              };
-              while (!$tco_done) {
-                  $tco_result = $tco_loop($copy_m);
-              };
-              return $tco_result;
-          };
-          var comp = Data_Ord.compare(dictOrd);
-          var down = function ($copy_ctx) {
-              return function ($copy_m) {
-                  var $tco_var_ctx = $copy_ctx;
-                  var $tco_done = false;
-                  var $tco_result;
-                  function $tco_loop(ctx, m) {
-                      if (m instanceof Leaf) {
-                          $tco_done = true;
-                          return Data_Maybe.Nothing.value;
-                      };
-                      if (m instanceof Two) {
-                          var v = comp(k)(m.value1);
-                          if (m.value3 instanceof Leaf && v instanceof Data_Ordering.EQ) {
-                              $tco_done = true;
-                              return new Data_Maybe.Just(new Data_Tuple.Tuple(m.value2, up(ctx)(Leaf.value)));
-                          };
-                          if (v instanceof Data_Ordering.EQ) {
-                              var max = maxNode(m.value0);
-                              $tco_done = true;
-                              return new Data_Maybe.Just(new Data_Tuple.Tuple(m.value2, removeMaxNode(new Data_List_Types.Cons(new TwoLeft(max.key, max.value, m.value3), ctx))(m.value0)));
-                          };
-                          if (v instanceof Data_Ordering.LT) {
-                              $tco_var_ctx = new Data_List_Types.Cons(new TwoLeft(m.value1, m.value2, m.value3), ctx);
-                              $copy_m = m.value0;
-                              return;
-                          };
-                          $tco_var_ctx = new Data_List_Types.Cons(new TwoRight(m.value0, m.value1, m.value2), ctx);
-                          $copy_m = m.value3;
-                          return;
-                      };
-                      if (m instanceof Three) {
-                          var leaves = (function () {
-                              if (m.value0 instanceof Leaf && (m.value3 instanceof Leaf && m.value6 instanceof Leaf)) {
-                                  return true;
-                              };
-                              return false;
-                          })();
-                          var v = comp(k)(m.value4);
-                          var v3 = comp(k)(m.value1);
-                          if (leaves && v3 instanceof Data_Ordering.EQ) {
-                              $tco_done = true;
-                              return new Data_Maybe.Just(new Data_Tuple.Tuple(m.value2, fromZipper(dictOrd)(ctx)(new Two(Leaf.value, m.value4, m.value5, Leaf.value))));
-                          };
-                          if (leaves && v instanceof Data_Ordering.EQ) {
-                              $tco_done = true;
-                              return new Data_Maybe.Just(new Data_Tuple.Tuple(m.value5, fromZipper(dictOrd)(ctx)(new Two(Leaf.value, m.value1, m.value2, Leaf.value))));
-                          };
-                          if (v3 instanceof Data_Ordering.EQ) {
-                              var max = maxNode(m.value0);
-                              $tco_done = true;
-                              return new Data_Maybe.Just(new Data_Tuple.Tuple(m.value2, removeMaxNode(new Data_List_Types.Cons(new ThreeLeft(max.key, max.value, m.value3, m.value4, m.value5, m.value6), ctx))(m.value0)));
-                          };
-                          if (v instanceof Data_Ordering.EQ) {
-                              var max = maxNode(m.value3);
-                              $tco_done = true;
-                              return new Data_Maybe.Just(new Data_Tuple.Tuple(m.value5, removeMaxNode(new Data_List_Types.Cons(new ThreeMiddle(m.value0, m.value1, m.value2, max.key, max.value, m.value6), ctx))(m.value3)));
-                          };
-                          if (v3 instanceof Data_Ordering.LT) {
-                              $tco_var_ctx = new Data_List_Types.Cons(new ThreeLeft(m.value1, m.value2, m.value3, m.value4, m.value5, m.value6), ctx);
-                              $copy_m = m.value0;
-                              return;
-                          };
-                          if (v3 instanceof Data_Ordering.GT && v instanceof Data_Ordering.LT) {
-                              $tco_var_ctx = new Data_List_Types.Cons(new ThreeMiddle(m.value0, m.value1, m.value2, m.value4, m.value5, m.value6), ctx);
-                              $copy_m = m.value3;
-                              return;
-                          };
-                          $tco_var_ctx = new Data_List_Types.Cons(new ThreeRight(m.value0, m.value1, m.value2, m.value3, m.value4, m.value5), ctx);
-                          $copy_m = m.value6;
-                          return;
-                      };
-                      throw new Error("Failed pattern match at Data.Map.Internal (line 471, column 34 - line 494, column 80): " + [ m.constructor.name ]);
-                  };
-                  while (!$tco_done) {
-                      $tco_result = $tco_loop($tco_var_ctx, $copy_m);
-                  };
-                  return $tco_result;
-              };
-          };
-          return down(Data_List_Types.Nil.value);
-      };
-  };
-  var foldableMap = new Data_Foldable.Foldable(function (dictMonoid) {
-      return function (f) {
-          return function (m) {
-              return Data_Foldable.foldMap(Data_List_Types.foldableList)(dictMonoid)(f)(values(m));
-          };
-      };
-  }, function (f) {
-      return function (z) {
-          return function (m) {
-              return Data_Foldable.foldl(Data_List_Types.foldableList)(f)(z)(values(m));
-          };
-      };
-  }, function (f) {
-      return function (z) {
-          return function (m) {
-              return Data_Foldable.foldr(Data_List_Types.foldableList)(f)(z)(values(m));
-          };
-      };
-  });
-  var empty = Leaf.value;
-  var $$delete = function (dictOrd) {
-      return function (k) {
-          return function (m) {
-              return Data_Maybe.maybe(m)(Data_Tuple.snd)(pop(dictOrd)(k)(m));
-          };
-      };
-  }; 
-  var alter = function (dictOrd) {
-      return function (f) {
-          return function (k) {
-              return function (m) {
-                  var v = f(lookup(dictOrd)(k)(m));
-                  if (v instanceof Data_Maybe.Nothing) {
-                      return $$delete(dictOrd)(k)(m);
-                  };
-                  if (v instanceof Data_Maybe.Just) {
-                      return insert(dictOrd)(k)(v.value0)(m);
-                  };
-                  throw new Error("Failed pattern match at Data.Map.Internal (line 539, column 15 - line 541, column 25): " + [ v.constructor.name ]);
-              };
-          };
-      };
-  };
-  exports["empty"] = empty;
-  exports["insert"] = insert;
-  exports["lookup"] = lookup;
-  exports["delete"] = $$delete;
-  exports["pop"] = pop;
-  exports["member"] = member;
-  exports["alter"] = alter;
-  exports["keys"] = keys;
-  exports["values"] = values;
-  exports["functorMap"] = functorMap;
-  exports["foldableMap"] = foldableMap;
-})(PS["Data.Map.Internal"] = PS["Data.Map.Internal"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.2
-  "use strict";
-  var Control_Applicative = PS["Control.Applicative"];
-  var Control_Bind = PS["Control.Bind"];
-  var Control_Monad_Rec_Class = PS["Control.Monad.Rec.Class"];
-  var Control_Monad_ST = PS["Control.Monad.ST"];
-  var Control_Monad_ST_Internal = PS["Control.Monad.ST.Internal"];
-  var Control_Semigroupoid = PS["Control.Semigroupoid"];
-  var Data_Array = PS["Data.Array"];
-  var Data_Array_ST = PS["Data.Array.ST"];
-  var Data_Eq = PS["Data.Eq"];
-  var Data_Foldable = PS["Data.Foldable"];
-  var Data_Function = PS["Data.Function"];
-  var Data_Functor = PS["Data.Functor"];
-  var Data_HeytingAlgebra = PS["Data.HeytingAlgebra"];
-  var Data_List = PS["Data.List"];
-  var Data_List_Types = PS["Data.List.Types"];
-  var Data_Map_Internal = PS["Data.Map.Internal"];
-  var Data_Maybe = PS["Data.Maybe"];
-  var Data_Monoid = PS["Data.Monoid"];
-  var Data_Ord = PS["Data.Ord"];
-  var Data_Ordering = PS["Data.Ordering"];
-  var Data_Semigroup = PS["Data.Semigroup"];
-  var Data_Semiring = PS["Data.Semiring"];
-  var Data_Show = PS["Data.Show"];
-  var Data_Unfoldable = PS["Data.Unfoldable"];
-  var Data_Unit = PS["Data.Unit"];
-  var Partial_Unsafe = PS["Partial.Unsafe"];
-  var Prelude = PS["Prelude"];
-  var toList = function (v) {
-      return Data_Map_Internal.keys(v);
-  };
-  var foldableSet = new Data_Foldable.Foldable(function (dictMonoid) {
-      return function (f) {
-          return function ($65) {
-              return Data_Foldable.foldMap(Data_List_Types.foldableList)(dictMonoid)(f)(toList($65));
-          };
-      };
-  }, function (f) {
-      return function (x) {
-          return function ($66) {
-              return Data_Foldable.foldl(Data_List_Types.foldableList)(f)(x)(toList($66));
-          };
-      };
-  }, function (f) {
-      return function (x) {
-          return function ($67) {
-              return Data_Foldable.foldr(Data_List_Types.foldableList)(f)(x)(toList($67));
-          };
-      };
-  });
-  exports["foldableSet"] = foldableSet;
-})(PS["Data.Set"] = PS["Data.Set"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.2
-  "use strict";
-  var Control_Semigroupoid = PS["Control.Semigroupoid"];
-  var Data_Functor = PS["Data.Functor"];
-  var Data_Map_Internal = PS["Data.Map.Internal"];
-  var Data_Set = PS["Data.Set"];
-  var Prelude = PS["Prelude"];
-  var Unsafe_Coerce = PS["Unsafe.Coerce"];                 
-  var keys = function ($0) {
-      return Data_Functor["void"](Data_Map_Internal.functorMap)($0);
-  };
-  exports["keys"] = keys;
-})(PS["Data.Map"] = PS["Data.Map"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.2
-  "use strict";
-  var Control_Applicative = PS["Control.Applicative"];
-  var Control_Bind = PS["Control.Bind"];
-  var Control_Category = PS["Control.Category"];
-  var Control_Monad_State_Class = PS["Control.Monad.State.Class"];
-  var Control_Monad_Trans_Class = PS["Control.Monad.Trans.Class"];
-  var Control_Parallel = PS["Control.Parallel"];
-  var Control_Semigroupoid = PS["Control.Semigroupoid"];
-  var Data_Functor = PS["Data.Functor"];
-  var Data_List = PS["Data.List"];
-  var Data_List_Types = PS["Data.List.Types"];
-  var Data_Map = PS["Data.Map"];
-  var Data_Map_Internal = PS["Data.Map.Internal"];
-  var Data_Maybe = PS["Data.Maybe"];
-  var Data_Tuple = PS["Data.Tuple"];
-  var Data_Unit = PS["Data.Unit"];
-  var Effect_Aff_Class = PS["Effect.Aff.Class"];
-  var Effect_Class = PS["Effect.Class"];
-  var Halogen_Component_ChildPath = PS["Halogen.Component.ChildPath"];
-  var Halogen_Query_EventSource = PS["Halogen.Query.EventSource"];
-  var Halogen_Query_HalogenM = PS["Halogen.Query.HalogenM"];
-  var Halogen_Query_InputF = PS["Halogen.Query.InputF"];
-  var Prelude = PS["Prelude"];
-  var Web_HTML_HTMLElement = PS["Web.HTML.HTMLElement"];
-  var getHTMLElementRef = function ($10) {
-      return Data_Functor.map(Halogen_Query_HalogenM.functorHalogenM)(function (v) {
-          return Control_Bind.bindFlipped(Data_Maybe.bindMaybe)(Web_HTML_HTMLElement.fromElement)(v);
-      })(Halogen_Query_HalogenM.getRef($10));
-  };
-  var action = function (act) {
-      return act(Data_Unit.unit);
-  };
-  exports["action"] = action;
-  exports["getHTMLElementRef"] = getHTMLElementRef;
-})(PS["Halogen.Query"] = PS["Halogen.Query"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.2
-  "use strict";
-  var Web_Event_Event = PS["Web.Event.Event"];
-  var change = "change";
-  exports["change"] = change;
-})(PS["Web.HTML.Event.EventTypes"] = PS["Web.HTML.Event.EventTypes"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.2
-  "use strict";
-  var Web_Event_Event = PS["Web.Event.Event"];
-  var click = "click";
-  exports["click"] = click;
-})(PS["Web.UIEvent.MouseEvent.EventTypes"] = PS["Web.UIEvent.MouseEvent.EventTypes"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.2
-  "use strict";
-  var Control_Bind = PS["Control.Bind"];
-  var Control_Monad_Except = PS["Control.Monad.Except"];
-  var Control_Monad_Except_Trans = PS["Control.Monad.Except.Trans"];
-  var Control_Semigroupoid = PS["Control.Semigroupoid"];
-  var Data_Either = PS["Data.Either"];
-  var Data_Function = PS["Data.Function"];
-  var Data_Functor = PS["Data.Functor"];
-  var Data_Identity = PS["Data.Identity"];
-  var Data_Maybe = PS["Data.Maybe"];
-  var Foreign = PS["Foreign"];
-  var Foreign_Index = PS["Foreign.Index"];
-  var Halogen_HTML_Core = PS["Halogen.HTML.Core"];
-  var Halogen_HTML_Properties = PS["Halogen.HTML.Properties"];
-  var Halogen_Query = PS["Halogen.Query"];
-  var Halogen_Query_InputF = PS["Halogen.Query.InputF"];
-  var Prelude = PS["Prelude"];
-  var Unsafe_Coerce = PS["Unsafe.Coerce"];
-  var Web_Clipboard_ClipboardEvent = PS["Web.Clipboard.ClipboardEvent"];
-  var Web_Clipboard_ClipboardEvent_EventTypes = PS["Web.Clipboard.ClipboardEvent.EventTypes"];
-  var Web_Event_Event = PS["Web.Event.Event"];
-  var Web_HTML_Event_DragEvent = PS["Web.HTML.Event.DragEvent"];
-  var Web_HTML_Event_DragEvent_EventTypes = PS["Web.HTML.Event.DragEvent.EventTypes"];
-  var Web_HTML_Event_EventTypes = PS["Web.HTML.Event.EventTypes"];
-  var Web_TouchEvent_TouchEvent = PS["Web.TouchEvent.TouchEvent"];
-  var Web_UIEvent_FocusEvent = PS["Web.UIEvent.FocusEvent"];
-  var Web_UIEvent_FocusEvent_EventTypes = PS["Web.UIEvent.FocusEvent.EventTypes"];
-  var Web_UIEvent_KeyboardEvent = PS["Web.UIEvent.KeyboardEvent"];
-  var Web_UIEvent_KeyboardEvent_EventTypes = PS["Web.UIEvent.KeyboardEvent.EventTypes"];
-  var Web_UIEvent_MouseEvent = PS["Web.UIEvent.MouseEvent"];
-  var Web_UIEvent_MouseEvent_EventTypes = PS["Web.UIEvent.MouseEvent.EventTypes"];
-  var Web_UIEvent_WheelEvent = PS["Web.UIEvent.WheelEvent"];
-  var Web_UIEvent_WheelEvent_EventTypes = PS["Web.UIEvent.WheelEvent.EventTypes"];
-  var mouseHandler = Unsafe_Coerce.unsafeCoerce;
-  var input_ = function (f) {
-      return function (v) {
-          return Data_Maybe.Just.create(Halogen_Query.action(f));
-      };
-  };
-  var input = function (f) {
-      return function (x) {
-          return Data_Maybe.Just.create(Halogen_Query.action(f(x)));
-      };
-  };
-  var handler = function (et) {
-      return function ($1) {
-          return Halogen_HTML_Core.handler(et)(Data_Functor.map(Data_Functor.functorFn)(Data_Functor.map(Data_Maybe.functorMaybe)(Halogen_Query_InputF.Query.create))($1));
-      };
-  };                                                       
-  var onClick = function ($2) {
-      return handler(Web_UIEvent_MouseEvent_EventTypes.click)(mouseHandler($2));
-  };                                                       
-  var onSubmit = handler("submit");
-  var addForeignPropHandler = function (key) {
-      return function (prop) {
-          return function (reader) {
-              return function (f) {
-                  var go = function (a) {
-                      return Control_Bind.composeKleisliFlipped(Control_Monad_Except_Trans.bindExceptT(Data_Identity.monadIdentity))(reader)(Foreign_Index.readProp(prop))(Foreign.unsafeToForeign(a));
-                  };
-                  return handler(key)(Control_Bind.composeKleisli(Data_Maybe.bindMaybe)(Web_Event_Event.currentTarget)(function (e) {
-                      return Data_Either.either(Data_Function["const"](Data_Maybe.Nothing.value))(f)(Control_Monad_Except.runExcept(go(e)));
-                  }));
-              };
-          };
-      };
-  };
-  var onChecked = addForeignPropHandler(Web_HTML_Event_EventTypes.change)("checked")(Foreign.readBoolean);              
-  var onValueChange = addForeignPropHandler(Web_HTML_Event_EventTypes.change)("value")(Foreign.readString);
-  exports["input"] = input;
-  exports["input_"] = input_;
-  exports["handler"] = handler;
-  exports["onSubmit"] = onSubmit;
-  exports["onClick"] = onClick;
-  exports["onValueChange"] = onValueChange;
-  exports["onChecked"] = onChecked;
-})(PS["Halogen.HTML.Events"] = PS["Halogen.HTML.Events"] || {});
-(function(exports) {
-    "use strict";
-  /* global Symbol */
-
-  var hasArrayFrom = typeof Array.from === "function";
-  var hasStringIterator =
-    typeof Symbol !== "undefined" &&
-    Symbol != null &&
-    typeof Symbol.iterator !== "undefined" &&
-    typeof String.prototype[Symbol.iterator] === "function";
-  var hasFromCodePoint = typeof String.prototype.fromCodePoint === "function";
-  var hasCodePointAt = typeof String.prototype.codePointAt === "function";
-
-  exports._unsafeCodePointAt0 = function (fallback) {
-    return hasCodePointAt
-      ? function (str) { return str.codePointAt(0); }
-      : fallback;
-  };
-
-  exports._singleton = function (fallback) {
-    return hasFromCodePoint ? String.fromCodePoint : fallback;
-  };
-
-  exports._take = function (fallback) {
-    return function (n) {
-      if (hasStringIterator) {
-        return function (str) {
-          var accum = "";
-          var iter = str[Symbol.iterator]();
-          for (var i = 0; i < n; ++i) {
-            var o = iter.next();
-            if (o.done) return accum;
-            accum += o.value;
-          }
-          return accum;
-        };
-      }
-      return fallback(n);
-    };
-  };
-
-  exports._toCodePointArray = function (fallback) {
-    return function (unsafeCodePointAt0) {
-      if (hasArrayFrom) {
-        return function (str) {
-          return Array.from(str, unsafeCodePointAt0);
-        };
-      }
-      return fallback;
-    };
-  };
-})(PS["Data.String.CodePoints"] = PS["Data.String.CodePoints"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.2
-  "use strict";
-  var $foreign = PS["Data.String.CodePoints"];
-  var Control_Semigroupoid = PS["Control.Semigroupoid"];
-  var Data_Array = PS["Data.Array"];
-  var Data_Boolean = PS["Data.Boolean"];
-  var Data_Bounded = PS["Data.Bounded"];
-  var Data_Enum = PS["Data.Enum"];
-  var Data_Eq = PS["Data.Eq"];
-  var Data_EuclideanRing = PS["Data.EuclideanRing"];
-  var Data_Functor = PS["Data.Functor"];
-  var Data_HeytingAlgebra = PS["Data.HeytingAlgebra"];
-  var Data_Int = PS["Data.Int"];
-  var Data_Maybe = PS["Data.Maybe"];
-  var Data_Ord = PS["Data.Ord"];
-  var Data_Ring = PS["Data.Ring"];
-  var Data_Semigroup = PS["Data.Semigroup"];
-  var Data_Semiring = PS["Data.Semiring"];
-  var Data_Show = PS["Data.Show"];
-  var Data_String_CodeUnits = PS["Data.String.CodeUnits"];
-  var Data_String_Common = PS["Data.String.Common"];
-  var Data_String_Pattern = PS["Data.String.Pattern"];
-  var Data_String_Unsafe = PS["Data.String.Unsafe"];
-  var Data_Tuple = PS["Data.Tuple"];
-  var Data_Unfoldable = PS["Data.Unfoldable"];
-  var Prelude = PS["Prelude"];
-  var unsurrogate = function (lead) {
-      return function (trail) {
-          return (((lead - 55296 | 0) * 1024 | 0) + (trail - 56320 | 0) | 0) + 65536 | 0;
-      };
-  }; 
-  var isTrail = function (cu) {
-      return 56320 <= cu && cu <= 57343;
-  };
-  var isLead = function (cu) {
-      return 55296 <= cu && cu <= 56319;
-  };
-  var uncons = function (s) {
-      var v = Data_String_CodeUnits.length(s);
-      if (v === 0) {
-          return Data_Maybe.Nothing.value;
-      };
-      if (v === 1) {
-          return new Data_Maybe.Just({
-              head: Data_Enum.fromEnum(Data_Enum.boundedEnumChar)(Data_String_Unsafe.charAt(0)(s)),
-              tail: ""
-          });
-      };
-      var cu1 = Data_Enum.fromEnum(Data_Enum.boundedEnumChar)(Data_String_Unsafe.charAt(1)(s));
-      var cu0 = Data_Enum.fromEnum(Data_Enum.boundedEnumChar)(Data_String_Unsafe.charAt(0)(s));
-      var $21 = isLead(cu0) && isTrail(cu1);
-      if ($21) {
-          return new Data_Maybe.Just({
-              head: unsurrogate(cu0)(cu1),
-              tail: Data_String_CodeUnits.drop(2)(s)
-          });
-      };
-      return new Data_Maybe.Just({
-          head: cu0,
-          tail: Data_String_CodeUnits.drop(1)(s)
-      });
-  };
-  var unconsButWithTuple = function (s) {
-      return Data_Functor.map(Data_Maybe.functorMaybe)(function (v) {
-          return new Data_Tuple.Tuple(v.head, v.tail);
-      })(uncons(s));
-  };
-  var toCodePointArrayFallback = function (s) {
-      return Data_Unfoldable.unfoldr(Data_Unfoldable.unfoldableArray)(unconsButWithTuple)(s);
-  };
-  var unsafeCodePointAt0Fallback = function (s) {
-      var cu0 = Data_Enum.fromEnum(Data_Enum.boundedEnumChar)(Data_String_Unsafe.charAt(0)(s));
-      var $25 = isLead(cu0) && Data_String_CodeUnits.length(s) > 1;
-      if ($25) {
-          var cu1 = Data_Enum.fromEnum(Data_Enum.boundedEnumChar)(Data_String_Unsafe.charAt(1)(s));
-          var $26 = isTrail(cu1);
-          if ($26) {
-              return unsurrogate(cu0)(cu1);
-          };
-          return cu0;
-      };
-      return cu0;
-  };
-  var unsafeCodePointAt0 = $foreign["_unsafeCodePointAt0"](unsafeCodePointAt0Fallback);
-  var toCodePointArray = $foreign["_toCodePointArray"](toCodePointArrayFallback)(unsafeCodePointAt0);
-  var length = function ($52) {
-      return Data_Array.length(toCodePointArray($52));
-  };
-  var fromCharCode = function ($53) {
-      return Data_String_CodeUnits.singleton(Data_Enum.toEnumWithDefaults(Data_Enum.boundedEnumChar)(Data_Bounded.bottom(Data_Bounded.boundedChar))(Data_Bounded.top(Data_Bounded.boundedChar))($53));
-  };
-  var singletonFallback = function (v) {
-      if (v <= 65535) {
-          return fromCharCode(v);
-      };
-      var lead = Data_EuclideanRing.div(Data_EuclideanRing.euclideanRingInt)(v - 65536 | 0)(1024) + 55296 | 0;
-      var trail = Data_EuclideanRing.mod(Data_EuclideanRing.euclideanRingInt)(v - 65536 | 0)(1024) + 56320 | 0;
-      return fromCharCode(lead) + fromCharCode(trail);
-  };                                                                          
-  var singleton = $foreign["_singleton"](singletonFallback);
-  var takeFallback = function (n) {
-      return function (v) {
-          if (n < 1) {
-              return "";
-          };
-          var v1 = uncons(v);
-          if (v1 instanceof Data_Maybe.Just) {
-              return singleton(v1.value0.head) + takeFallback(n - 1 | 0)(v1.value0.tail);
-          };
-          return v;
-      };
-  };
-  var take = $foreign["_take"](takeFallback);
-  var drop = function (n) {
-      return function (s) {
-          return Data_String_CodeUnits.drop(Data_String_CodeUnits.length(take(n)(s)))(s);
-      };
-  };
-  exports["singleton"] = singleton;
-  exports["toCodePointArray"] = toCodePointArray;
-  exports["uncons"] = uncons;
-  exports["length"] = length;
-  exports["take"] = take;
-  exports["drop"] = drop;
-})(PS["Data.String.CodePoints"] = PS["Data.String.CodePoints"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.2
-  "use strict";
-  var Control_Applicative = PS["Control.Applicative"];
-  var Control_Bind = PS["Control.Bind"];
-  var Control_Monad_Maybe_Trans = PS["Control.Monad.Maybe.Trans"];
-  var Control_Semigroupoid = PS["Control.Semigroupoid"];
-  var Data_Array = PS["Data.Array"];
-  var Data_Eq = PS["Data.Eq"];
-  var Data_Foldable = PS["Data.Foldable"];
-  var Data_Function = PS["Data.Function"];
-  var Data_Functor = PS["Data.Functor"];
-  var Data_HeytingAlgebra = PS["Data.HeytingAlgebra"];
-  var Data_Maybe = PS["Data.Maybe"];
-  var Data_Nullable = PS["Data.Nullable"];
-  var Data_String = PS["Data.String"];
-  var Data_String_CodePoints = PS["Data.String.CodePoints"];
-  var Data_String_Common = PS["Data.String.Common"];
-  var Data_String_Pattern = PS["Data.String.Pattern"];
-  var Data_Tuple = PS["Data.Tuple"];
-  var Data_Unit = PS["Data.Unit"];
-  var Effect = PS["Effect"];
-  var Global_Unsafe = PS["Global.Unsafe"];
-  var Halogen = PS["Halogen"];
-  var Halogen_HTML = PS["Halogen.HTML"];
-  var Halogen_HTML_Core = PS["Halogen.HTML.Core"];
-  var Halogen_HTML_Properties = PS["Halogen.HTML.Properties"];
-  var Partial_Unsafe = PS["Partial.Unsafe"];
-  var Prelude = PS["Prelude"];
-  var Web_DOM = PS["Web.DOM"];
-  var Web_DOM_Document = PS["Web.DOM.Document"];
-  var Web_DOM_Element = PS["Web.DOM.Element"];
-  var Web_DOM_NodeList = PS["Web.DOM.NodeList"];
-  var Web_DOM_NonElementParentNode = PS["Web.DOM.NonElementParentNode"];
-  var Web_DOM_ParentNode = PS["Web.DOM.ParentNode"];
-  var Web_HTML = PS["Web.HTML"];
-  var Web_HTML_HTMLDocument = PS["Web.HTML.HTMLDocument"];
-  var Web_HTML_HTMLElement = PS["Web.HTML.HTMLElement"];
-  var Web_HTML_Location = PS["Web.HTML.Location"];
-  var Web_HTML_Window = PS["Web.HTML.Window"];
-  var fromNullableStr = function ($57) {
-      return Data_Maybe.fromMaybe("")(Data_Nullable.toMaybe($57));
-  };
-  var class_ = function ($58) {
-      return Halogen_HTML_Properties.class_(Halogen_HTML_Core.ClassName($58));
-  };
-  var attr = function (a) {
-      return Halogen_HTML_Properties.attr(a);
-  };
-  var _parseQueryString = function (srh) {
-      var decode = function ($59) {
-          return Global_Unsafe.unsafeDecodeURIComponent(Data_String_Common.replaceAll("+")(" ")($59));
-      };
-      var go = function (kv) {
-          var v = Data_String_Common.split("=")(kv);
-          if (v.length === 1) {
-              return new Data_Maybe.Just(new Data_Tuple.Tuple(decode(v[0]), Data_Maybe.Nothing.value));
-          };
-          if (v.length === 2) {
-              return new Data_Maybe.Just(new Data_Tuple.Tuple(decode(v[0]), new Data_Maybe.Just(decode(v[1]))));
-          };
-          return Data_Maybe.Nothing.value;
-      };
-      var qs = (function () {
-          var srh$prime = Data_String_CodePoints.take(1)(srh);
-          var $54 = srh$prime === "#" || srh$prime === "?";
-          if ($54) {
-              return Data_String_CodePoints.drop(1)(srh);
-          };
-          return srh;
-      })();
-      return Data_Array.mapMaybe(go)(Data_Array.filter(function (v) {
-          return v !== "";
-      })(Data_String_Common.split("&")(qs)));
-  };                                         
-  var _lookupQueryStringValue = function (qs) {
-      return function (k) {
-          return Control_Bind.join(Data_Maybe.bindMaybe)(Data_Functor.map(Data_Maybe.functorMaybe)(Data_Tuple.snd)(Data_Foldable.find(Data_Foldable.foldableArray)(function ($61) {
-              return (function (v) {
-                  return v === k;
-              })(Data_Tuple.fst($61));
-          })(qs)));
-      };
-  };
-  var _loc = Control_Bind.bindFlipped(Effect.bindEffect)(Web_HTML_Window.location)(Web_HTML.window);
-  var _curQuerystring = function __do() {
-      var v = _loc();
-      var v1 = Web_HTML_Location.search(v)();
-      return _parseQueryString(v1);
-  };
-  exports["class_"] = class_;
-  exports["attr"] = attr;
-  exports["_loc"] = _loc;
-  exports["_curQuerystring"] = _curQuerystring;
-  exports["_parseQueryString"] = _parseQueryString;
-  exports["_lookupQueryStringValue"] = _lookupQueryStringValue;
-  exports["fromNullableStr"] = fromNullableStr;
-})(PS["Util"] = PS["Util"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.2
-  "use strict";
-  var App = PS["App"];
-  var Control_Applicative = PS["Control.Applicative"];
-  var Control_Bind = PS["Control.Bind"];
-  var Control_Semigroupoid = PS["Control.Semigroupoid"];
-  var DOM_HTML_Indexed_InputType = PS["DOM.HTML.Indexed.InputType"];
-  var Data_Function = PS["Data.Function"];
-  var Data_Functor = PS["Data.Functor"];
-  var Data_Lens = PS["Data.Lens"];
-  var Data_Lens_Getter = PS["Data.Lens.Getter"];
-  var Data_Lens_Internal_Forget = PS["Data.Lens.Internal.Forget"];
-  var Data_Lens_Lens = PS["Data.Lens.Lens"];
-  var Data_Lens_Setter = PS["Data.Lens.Setter"];
-  var Data_Maybe = PS["Data.Maybe"];
-  var Data_Profunctor_Strong = PS["Data.Profunctor.Strong"];
-  var Data_Unit = PS["Data.Unit"];
-  var Effect_Aff = PS["Effect.Aff"];
-  var Effect_Aff_Class = PS["Effect.Aff.Class"];
-  var Globals = PS["Globals"];
-  var Halogen = PS["Halogen"];
-  var Halogen_Component = PS["Halogen.Component"];
-  var Halogen_HTML = PS["Halogen.HTML"];
-  var Halogen_HTML_Core = PS["Halogen.HTML.Core"];
-  var Halogen_HTML_Elements = PS["Halogen.HTML.Elements"];
-  var Halogen_HTML_Events = PS["Halogen.HTML.Events"];
-  var Halogen_HTML_Properties = PS["Halogen.HTML.Properties"];
-  var Halogen_Query_HalogenM = PS["Halogen.Query.HalogenM"];
-  var Model = PS["Model"];
-  var Prelude = PS["Prelude"];
-  var Util = PS["Util"];
-  var Web_Event_Event = PS["Web.Event.Event"];                 
-  var EarchiveDefault = (function () {
-      function EarchiveDefault(value0) {
-          this.value0 = value0;
-      };
-      EarchiveDefault.create = function (value0) {
-          return new EarchiveDefault(value0);
-      };
-      return EarchiveDefault;
-  })();
-  var EprivateDefault = (function () {
-      function EprivateDefault(value0) {
-          this.value0 = value0;
-      };
-      EprivateDefault.create = function (value0) {
-          return new EprivateDefault(value0);
-      };
-      return EprivateDefault;
-  })();
-  var EprivacyLock = (function () {
-      function EprivacyLock(value0) {
-          this.value0 = value0;
-      };
-      EprivacyLock.create = function (value0) {
-          return new EprivacyLock(value0);
-      };
-      return EprivacyLock;
-  })();
-  var UEditField = (function () {
-      function UEditField(value0, value1) {
-          this.value0 = value0;
-          this.value1 = value1;
-      };
-      UEditField.create = function (value0) {
-          return function (value1) {
-              return new UEditField(value0, value1);
-          };
-      };
-      return UEditField;
-  })();
-  var USubmit = (function () {
-      function USubmit(value0, value1) {
-          this.value0 = value0;
-          this.value1 = value1;
-      };
-      USubmit.create = function (value0) {
-          return function (value1) {
-              return new USubmit(value0, value1);
-          };
-      };
-      return USubmit;
-  })();
-  var _us = function (dictStrong) {
-      return Data_Lens_Lens.lens(function (v) {
-          return v.us;
-      })(function (v) {
-          return function (v1) {
-              return {
-                  us: v1
-              };
-          };
-      })(dictStrong);
-  };
-  var usetting = function (u$prime) {
-      var render = function (v) {
-          var editField = function (f) {
-              return function ($22) {
-                  return Halogen_HTML_Events.input(UEditField.create)(f($22));
-              };
-          };
-          return Halogen_HTML_Elements.div([ Util.class_("settings-form") ])([ Halogen_HTML_Elements.div([ Util.class_("fw7 mb2") ])([ Halogen_HTML_Core.text("Account Settings") ]), Halogen_HTML_Elements.div([ Util.class_("flex items-center mb2") ])([ Halogen_HTML_Elements.input([ Halogen_HTML_Properties.type_(Halogen_HTML_Core.inputTypeIsProp)(DOM_HTML_Indexed_InputType.InputCheckbox.value), Util.class_("pointer mr2"), Halogen_HTML_Properties.id_("archiveDefault"), Halogen_HTML_Properties.name("archiveDefault"), Halogen_HTML_Properties.checked(v.us.archiveDefault), Halogen_HTML_Events.onChecked(editField(EarchiveDefault.create)) ]), Halogen_HTML_Elements.label([ Halogen_HTML_Properties["for"]("archiveDefault"), Util.class_("lh-copy") ])([ Halogen_HTML_Core.text("Archive Non-Private Bookmarks (archive.li)") ]) ]), Halogen_HTML_Elements.div([ Util.class_("flex items-center mb2") ])([ Halogen_HTML_Elements.input([ Halogen_HTML_Properties.type_(Halogen_HTML_Core.inputTypeIsProp)(DOM_HTML_Indexed_InputType.InputCheckbox.value), Util.class_("pointer mr2"), Halogen_HTML_Properties.id_("privateDefault"), Halogen_HTML_Properties.name("privateDefault"), Halogen_HTML_Properties.checked(v.us.privateDefault), Halogen_HTML_Events.onChecked(editField(EprivateDefault.create)) ]), Halogen_HTML_Elements.label([ Halogen_HTML_Properties["for"]("privateDefault"), Util.class_("lh-copy") ])([ Halogen_HTML_Core.text("Default new bookmarks to Private") ]) ]), Halogen_HTML_Elements.div([ Util.class_("flex items-center mb2") ])([ Halogen_HTML_Elements.input([ Halogen_HTML_Properties.type_(Halogen_HTML_Core.inputTypeIsProp)(DOM_HTML_Indexed_InputType.InputCheckbox.value), Util.class_("pointer mr2"), Halogen_HTML_Properties.id_("privacyLock"), Halogen_HTML_Properties.name("privacyLock"), Halogen_HTML_Properties.checked(v.us.privacyLock), Halogen_HTML_Events.onChecked(editField(EprivacyLock.create)) ]), Halogen_HTML_Elements.label([ Halogen_HTML_Properties["for"]("privacyLock"), Util.class_("lh-copy") ])([ Halogen_HTML_Core.text("Privacy Lock (Private Account)") ]) ]) ]);
-      };
-      var mkState = function (u) {
-          return {
-              us: u
-          };
-      };
-      var $$eval = function (v) {
-          if (v instanceof UEditField) {
-              return Control_Bind.discard(Control_Bind.discardUnit)(Halogen_Query_HalogenM.bindHalogenM)(Data_Lens_Setter.modifying(Halogen_Query_HalogenM.monadStateHalogenM)(_us(Data_Profunctor_Strong.strongFn))((function () {
-                  if (v.value0 instanceof EarchiveDefault) {
-                      return function (v1) {
-                          return {
-                              archiveDefault: v.value0.value0,
-                              privateDefault: v1.privateDefault,
-                              privacyLock: v1.privacyLock
-                          };
-                      };
-                  };
-                  if (v.value0 instanceof EprivateDefault) {
-                      return function (v1) {
-                          return {
-                              archiveDefault: v1.archiveDefault,
-                              privateDefault: v.value0.value0,
-                              privacyLock: v1.privacyLock
-                          };
-                      };
-                  };
-                  if (v.value0 instanceof EprivacyLock) {
-                      return function (v1) {
-                          return {
-                              archiveDefault: v1.archiveDefault,
-                              privateDefault: v1.privateDefault,
-                              privacyLock: v.value0.value0
-                          };
-                      };
-                  };
-                  throw new Error("Failed pattern match at Component.AccountSettings (line 82, column 12 - line 85, column 46): " + [ v.value0.constructor.name ]);
-              })()))(function () {
-                  return Control_Applicative.pure(Halogen_Query_HalogenM.applicativeHalogenM)(v.value1);
-              });
-          };
-          if (v instanceof USubmit) {
-              return Control_Bind.bind(Halogen_Query_HalogenM.bindHalogenM)(Data_Lens_Getter.use(Halogen_Query_HalogenM.monadStateHalogenM)(_us(Data_Lens_Internal_Forget.strongForget)))(function (v1) {
-                  return Control_Bind.discard(Control_Bind.discardUnit)(Halogen_Query_HalogenM.bindHalogenM)(Data_Functor["void"](Halogen_Query_HalogenM.functorHalogenM)(Effect_Aff_Class.liftAff(Halogen_Query_HalogenM.monadAffHalogenM(Effect_Aff_Class.monadAffAff))(App.editAccountSettings(v1))))(function () {
-                      return Control_Applicative.pure(Halogen_Query_HalogenM.applicativeHalogenM)(v.value1);
-                  });
-              });
-          };
-          throw new Error("Failed pattern match at Component.AccountSettings (line 80, column 3 - line 80, column 58): " + [ v.constructor.name ]);
-      };
-      var app = Globals["app'"](Data_Unit.unit);
-      return Halogen_Component.component(Halogen_HTML_Core.bifunctorHTML)({
-          initialState: Data_Function["const"](mkState(u$prime)),
-          render: render,
-          "eval": $$eval,
-          receiver: Data_Function["const"](Data_Maybe.Nothing.value)
-      });
-  };
-  exports["_us"] = _us;
-  exports["UEditField"] = UEditField;
-  exports["USubmit"] = USubmit;
-  exports["EarchiveDefault"] = EarchiveDefault;
-  exports["EprivateDefault"] = EprivateDefault;
-  exports["EprivacyLock"] = EprivacyLock;
-  exports["usetting"] = usetting;
-})(PS["Component.AccountSettings"] = PS["Component.AccountSettings"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.2
-  "use strict";
-  var App = PS["App"];
-  var Control_Applicative = PS["Control.Applicative"];
-  var Control_Bind = PS["Control.Bind"];
-  var Control_Monad_State_Class = PS["Control.Monad.State.Class"];
-  var Control_Semigroupoid = PS["Control.Semigroupoid"];
-  var DOM_HTML_Indexed_ButtonType = PS["DOM.HTML.Indexed.ButtonType"];
-  var DOM_HTML_Indexed_InputType = PS["DOM.HTML.Indexed.InputType"];
-  var Data_Array = PS["Data.Array"];
-  var Data_Foldable = PS["Data.Foldable"];
-  var Data_Function = PS["Data.Function"];
-  var Data_Functor = PS["Data.Functor"];
-  var Data_HeytingAlgebra = PS["Data.HeytingAlgebra"];
-  var Data_Lens = PS["Data.Lens"];
-  var Data_Lens_Getter = PS["Data.Lens.Getter"];
-  var Data_Lens_Internal_Forget = PS["Data.Lens.Internal.Forget"];
-  var Data_Lens_Lens = PS["Data.Lens.Lens"];
-  var Data_Lens_Setter = PS["Data.Lens.Setter"];
-  var Data_Maybe = PS["Data.Maybe"];
-  var Data_Monoid = PS["Data.Monoid"];
-  var Data_Ord = PS["Data.Ord"];
-  var Data_Profunctor_Strong = PS["Data.Profunctor.Strong"];
-  var Data_Semigroup = PS["Data.Semigroup"];
-  var Data_String = PS["Data.String"];
-  var Data_String_Common = PS["Data.String.Common"];
-  var Data_String_Pattern = PS["Data.String.Pattern"];
-  var Data_Tuple = PS["Data.Tuple"];
-  var Data_Unit = PS["Data.Unit"];
-  var Effect_Aff = PS["Effect.Aff"];
-  var Effect_Aff_Class = PS["Effect.Aff.Class"];
-  var Effect_Class = PS["Effect.Class"];
-  var Globals = PS["Globals"];
-  var Halogen = PS["Halogen"];
-  var Halogen_Component = PS["Halogen.Component"];
-  var Halogen_HTML = PS["Halogen.HTML"];
-  var Halogen_HTML_Core = PS["Halogen.HTML.Core"];
-  var Halogen_HTML_Elements = PS["Halogen.HTML.Elements"];
-  var Halogen_HTML_Events = PS["Halogen.HTML.Events"];
-  var Halogen_HTML_Properties = PS["Halogen.HTML.Properties"];
-  var Halogen_Query_HalogenM = PS["Halogen.Query.HalogenM"];
-  var Model = PS["Model"];
-  var Prelude = PS["Prelude"];
-  var Util = PS["Util"];
-  var Web_Event_Event = PS["Web.Event.Event"];
-  var Web_HTML = PS["Web.HTML"];
-  var Web_HTML_Location = PS["Web.HTML.Location"];                 
-  var Eurl = (function () {
-      function Eurl(value0) {
-          this.value0 = value0;
-      };
-      Eurl.create = function (value0) {
-          return new Eurl(value0);
-      };
-      return Eurl;
-  })();
-  var Etitle = (function () {
-      function Etitle(value0) {
-          this.value0 = value0;
-      };
-      Etitle.create = function (value0) {
-          return new Etitle(value0);
-      };
-      return Etitle;
-  })();
-  var Edescription = (function () {
-      function Edescription(value0) {
-          this.value0 = value0;
-      };
-      Edescription.create = function (value0) {
-          return new Edescription(value0);
-      };
-      return Edescription;
-  })();
-  var Etags = (function () {
-      function Etags(value0) {
-          this.value0 = value0;
-      };
-      Etags.create = function (value0) {
-          return new Etags(value0);
-      };
-      return Etags;
-  })();
-  var Eprivate = (function () {
-      function Eprivate(value0) {
-          this.value0 = value0;
-      };
-      Eprivate.create = function (value0) {
-          return new Eprivate(value0);
-      };
-      return Eprivate;
-  })();
-  var Etoread = (function () {
-      function Etoread(value0) {
-          this.value0 = value0;
-      };
-      Etoread.create = function (value0) {
-          return new Etoread(value0);
-      };
-      return Etoread;
-  })();
-  var BEditField = (function () {
-      function BEditField(value0, value1) {
-          this.value0 = value0;
-          this.value1 = value1;
-      };
-      BEditField.create = function (value0) {
-          return function (value1) {
-              return new BEditField(value0, value1);
-          };
-      };
-      return BEditField;
-  })();
-  var BEditSubmit = (function () {
-      function BEditSubmit(value0, value1) {
-          this.value0 = value0;
-          this.value1 = value1;
-      };
-      BEditSubmit.create = function (value0) {
-          return function (value1) {
-              return new BEditSubmit(value0, value1);
-          };
-      };
-      return BEditSubmit;
-  })();
-  var BDeleteAsk = (function () {
-      function BDeleteAsk(value0, value1) {
-          this.value0 = value0;
-          this.value1 = value1;
-      };
-      BDeleteAsk.create = function (value0) {
-          return function (value1) {
-              return new BDeleteAsk(value0, value1);
-          };
-      };
-      return BDeleteAsk;
-  })();
-  var BDestroy = (function () {
-      function BDestroy(value0) {
-          this.value0 = value0;
-      };
-      BDestroy.create = function (value0) {
-          return new BDestroy(value0);
-      };
-      return BDestroy;
-  })();
-  var _edit_bm = function (dictStrong) {
-      return Data_Lens_Lens.lens(function (v) {
-          return v.edit_bm;
-      })(function (v) {
-          return function (v1) {
-              return {
-                  edit_bm: v1,
-                  bm: v.bm,
-                  deleteAsk: v.deleteAsk,
-                  destroyed: v.destroyed
-              };
-          };
-      })(dictStrong);
-  };
-  var _bm = function (dictStrong) {
-      return Data_Lens_Lens.lens(function (v) {
-          return v.bm;
-      })(function (v) {
-          return function (v1) {
-              return {
-                  bm: v1,
-                  deleteAsk: v.deleteAsk,
-                  destroyed: v.destroyed,
-                  edit_bm: v.edit_bm
-              };
-          };
-      })(dictStrong);
-  };
-  var addbmark = function (b$prime) {
-      var render = function (v) {
-          var toTextarea = function ($58) {
-              return Data_Array.drop(1)(Data_Foldable.foldMap(Data_Foldable.foldableArray)(Data_Monoid.monoidArray)(function (x) {
-                  return [ Halogen_HTML_Elements.br_, Halogen_HTML_Core.text(x) ];
-              })(Data_String_Common.split("\x0a")($58)));
-          };
-          var mmoment = Globals.mmoment8601(v.bm.time);
-          var editField = function (f) {
-              return function ($59) {
-                  return Halogen_HTML_Events.input(BEditField.create)(f($59));
-              };
-          };
-          var display_exists = Halogen_HTML_Elements.div([ Util.class_("alert") ])([ Halogen_HTML_Core.text("previously saved\xa0"), Halogen_HTML_Elements.span([ Util.class_("link f7 dib gray pr3"), Halogen_HTML_Properties.title(Data_Maybe.maybe(v.bm.time)(Data_Tuple.snd)(mmoment)) ])([ Halogen_HTML_Core.text(Data_Maybe.maybe("\xa0")(Data_Tuple.fst)(mmoment)) ]), Halogen_HTML_Elements.div([ Util.class_("edit_links dib ml1") ])([ Halogen_HTML_Elements.div([ Util.class_("delete_link di") ])([ Halogen_HTML_Elements.button(Data_Semigroup.append(Data_Semigroup.semigroupArray)([ Halogen_HTML_Properties.type_(Halogen_HTML_Core.buttonTypeIsProp)(DOM_HTML_Indexed_ButtonType.ButtonButton.value), Halogen_HTML_Events.onClick(Halogen_HTML_Events.input_(BDeleteAsk.create(true))), Util.class_("delete") ])(Data_Monoid.guard(Data_Monoid.monoidArray)(v.deleteAsk)([ Util.attr("hidden")("hidden") ])))([ Halogen_HTML_Core.text("delete") ]), Halogen_HTML_Elements.span(Data_Semigroup.append(Data_Semigroup.semigroupArray)([ Util.class_("confirm red") ])(Data_Monoid.guard(Data_Monoid.monoidArray)(!v.deleteAsk)([ Util.attr("hidden")("hidden") ])))([ Halogen_HTML_Elements.button([ Halogen_HTML_Properties.type_(Halogen_HTML_Core.buttonTypeIsProp)(DOM_HTML_Indexed_ButtonType.ButtonButton.value), Halogen_HTML_Events.onClick(Halogen_HTML_Events.input_(BDeleteAsk.create(false))) ])([ Halogen_HTML_Core.text("cancel\xa0/\xa0") ]), Halogen_HTML_Elements.button([ Halogen_HTML_Properties.type_(Halogen_HTML_Core.buttonTypeIsProp)(DOM_HTML_Indexed_ButtonType.ButtonButton.value), Halogen_HTML_Events.onClick(Halogen_HTML_Events.input_(BDestroy.create)), Util.class_("red") ])([ Halogen_HTML_Core.text("destroy") ]) ]) ]) ]) ]);
-          var display_edit = Halogen_HTML_Elements.form([ Halogen_HTML_Events.onSubmit(Halogen_HTML_Events.input(BEditSubmit.create)) ])([ Halogen_HTML_Elements.table([ Util.class_("w-100") ])([ Halogen_HTML_Elements.tbody_([ Halogen_HTML_Elements.tr_([ Halogen_HTML_Elements.td([ Util.class_("w1") ])([  ]), Halogen_HTML_Elements.td_(Data_Monoid.guard(Data_Monoid.monoidArray)(v.bm.bid > 0)([ display_exists ])) ]), Halogen_HTML_Elements.tr_([ Halogen_HTML_Elements.td_([ Halogen_HTML_Elements.label([ Halogen_HTML_Properties["for"]("url") ])([ Halogen_HTML_Core.text("URL") ]) ]), Halogen_HTML_Elements.td_([ Halogen_HTML_Elements.input([ Halogen_HTML_Properties.type_(Halogen_HTML_Core.inputTypeIsProp)(DOM_HTML_Indexed_InputType.InputUrl.value), Halogen_HTML_Properties.id_("url"), Util.class_("w-100 mv1"), Halogen_HTML_Properties.required(true), Halogen_HTML_Properties.name("url"), Halogen_HTML_Properties.autofocus(Data_String_Common["null"](v.bm.url)), Halogen_HTML_Properties.value(v.edit_bm.url), Halogen_HTML_Events.onValueChange(editField(Eurl.create)) ]) ]) ]), Halogen_HTML_Elements.tr_([ Halogen_HTML_Elements.td_([ Halogen_HTML_Elements.label([ Halogen_HTML_Properties["for"]("title") ])([ Halogen_HTML_Core.text("title") ]) ]), Halogen_HTML_Elements.td_([ Halogen_HTML_Elements.input([ Halogen_HTML_Properties.type_(Halogen_HTML_Core.inputTypeIsProp)(DOM_HTML_Indexed_InputType.InputText.value), Halogen_HTML_Properties.id_("title"), Util.class_("w-100 mv1"), Halogen_HTML_Properties.name("title"), Halogen_HTML_Properties.value(v.edit_bm.title), Halogen_HTML_Events.onValueChange(editField(Etitle.create)) ]) ]) ]), Halogen_HTML_Elements.tr_([ Halogen_HTML_Elements.td_([ Halogen_HTML_Elements.label([ Halogen_HTML_Properties["for"]("description") ])([ Halogen_HTML_Core.text("description") ]) ]), Halogen_HTML_Elements.td_([ Halogen_HTML_Elements.textarea([ Util.class_("w-100 mt1 mid-gray"), Halogen_HTML_Properties.id_("description"), Halogen_HTML_Properties.name("description"), Halogen_HTML_Properties.rows(4), Halogen_HTML_Properties.value(v.edit_bm.description), Halogen_HTML_Events.onValueChange(editField(Edescription.create)) ]) ]) ]), Halogen_HTML_Elements.tr_([ Halogen_HTML_Elements.td_([ Halogen_HTML_Elements.label([ Halogen_HTML_Properties["for"]("tags") ])([ Halogen_HTML_Core.text("tags") ]) ]), Halogen_HTML_Elements.td_([ Halogen_HTML_Elements.input([ Halogen_HTML_Properties.type_(Halogen_HTML_Core.inputTypeIsProp)(DOM_HTML_Indexed_InputType.InputText.value), Halogen_HTML_Properties.id_("tags"), Util.class_("w-100 mv1"), Halogen_HTML_Properties.name("tags"), Halogen_HTML_Properties.autocomplete(false), Util.attr("autocapitalize")("off"), Halogen_HTML_Properties.autofocus(!Data_String_Common["null"](v.bm.url)), Halogen_HTML_Properties.value(v.edit_bm.tags), Halogen_HTML_Events.onValueChange(editField(Etags.create)) ]) ]) ]), Halogen_HTML_Elements.tr_([ Halogen_HTML_Elements.td_([ Halogen_HTML_Elements.label([ Halogen_HTML_Properties["for"]("private") ])([ Halogen_HTML_Core.text("private") ]) ]), Halogen_HTML_Elements.td_([ Halogen_HTML_Elements.input([ Halogen_HTML_Properties.type_(Halogen_HTML_Core.inputTypeIsProp)(DOM_HTML_Indexed_InputType.InputCheckbox.value), Halogen_HTML_Properties.id_("private"), Util.class_("private pointer"), Halogen_HTML_Properties.name("private"), Halogen_HTML_Properties.checked(v["edit_bm"]["private"]), Halogen_HTML_Events.onChecked(editField(Eprivate.create)) ]) ]) ]), Halogen_HTML_Elements.tr_([ Halogen_HTML_Elements.td_([ Halogen_HTML_Elements.label([ Halogen_HTML_Properties["for"]("toread") ])([ Halogen_HTML_Core.text("read later") ]) ]), Halogen_HTML_Elements.td_([ Halogen_HTML_Elements.input([ Halogen_HTML_Properties.type_(Halogen_HTML_Core.inputTypeIsProp)(DOM_HTML_Indexed_InputType.InputCheckbox.value), Halogen_HTML_Properties.id_("toread"), Util.class_("toread pointer"), Halogen_HTML_Properties.name("toread"), Halogen_HTML_Properties.checked(v.edit_bm.toread), Halogen_HTML_Events.onChecked(editField(Etoread.create)) ]) ]) ]), Halogen_HTML_Elements.tr_([ Halogen_HTML_Elements.td_([  ]), Halogen_HTML_Elements.td_([ Halogen_HTML_Elements.input([ Halogen_HTML_Properties.type_(Halogen_HTML_Core.inputTypeIsProp)(DOM_HTML_Indexed_InputType.InputSubmit.value), Util.class_("ph3 pv2 input-reset ba b--navy bg-transparent pointer f6 dib mt1 dim"), Halogen_HTML_Properties.value((function () {
-              var $26 = v.bm.bid > 0;
-              if ($26) {
-                  return "update bookmark";
-              };
-              return "add bookmark";
-          })()) ]) ]) ]) ]) ]) ]);
-          var display_destroyed = Halogen_HTML_Elements.p([ Util.class_("red") ])([ Halogen_HTML_Core.text("you killed this bookmark") ]);
-          return Halogen_HTML_Elements.div_([ (function () {
-              var $27 = !v.destroyed;
-              if ($27) {
-                  return display_edit;
-              };
-              return display_destroyed;
-          })() ]);
-      };
-      var mkState = function (b) {
-          return {
-              bm: b,
-              edit_bm: b,
-              deleteAsk: false,
-              destroyed: false
-          };
-      };
-      var $$eval = function (v) {
-          if (v instanceof BDeleteAsk) {
-              return Control_Bind.discard(Control_Bind.discardUnit)(Halogen_Query_HalogenM.bindHalogenM)(Control_Monad_State_Class.modify_(Halogen_Query_HalogenM.monadStateHalogenM)(function (v1) {
-                  var $31 = {};
-                  for (var $32 in v1) {
-                      if ({}.hasOwnProperty.call(v1, $32)) {
-                          $31[$32] = v1[$32];
-                      };
-                  };
-                  $31.deleteAsk = v.value0;
-                  return $31;
-              }))(function () {
-                  return Control_Applicative.pure(Halogen_Query_HalogenM.applicativeHalogenM)(v.value1);
-              });
-          };
-          if (v instanceof BDestroy) {
-              return Control_Bind.bind(Halogen_Query_HalogenM.bindHalogenM)(Control_Monad_State_Class.gets(Halogen_Query_HalogenM.monadStateHalogenM)(function (v1) {
-                  return v1.bm.bid;
-              }))(function (v1) {
-                  return Control_Bind.discard(Control_Bind.discardUnit)(Halogen_Query_HalogenM.bindHalogenM)(Data_Functor["void"](Halogen_Query_HalogenM.functorHalogenM)(Effect_Aff_Class.liftAff(Halogen_Query_HalogenM.monadAffHalogenM(Effect_Aff_Class.monadAffAff))(App.destroy(v1))))(function () {
-                      return Control_Bind.discard(Control_Bind.discardUnit)(Halogen_Query_HalogenM.bindHalogenM)(Control_Monad_State_Class.modify_(Halogen_Query_HalogenM.monadStateHalogenM)(function (v2) {
-                          var $37 = {};
-                          for (var $38 in v2) {
-                              if ({}.hasOwnProperty.call(v2, $38)) {
-                                  $37[$38] = v2[$38];
-                              };
-                          };
-                          $37.destroyed = true;
-                          return $37;
-                      }))(function () {
-                          return Control_Applicative.pure(Halogen_Query_HalogenM.applicativeHalogenM)(v.value0);
-                      });
-                  });
-              });
-          };
-          if (v instanceof BEditField) {
-              return Control_Bind.discard(Control_Bind.discardUnit)(Halogen_Query_HalogenM.bindHalogenM)(Data_Lens_Setter.modifying(Halogen_Query_HalogenM.monadStateHalogenM)(_edit_bm(Data_Profunctor_Strong.strongFn))((function () {
-                  if (v.value0 instanceof Eurl) {
-                      return function (v1) {
-                          return {
-                              url: v.value0.value0,
-                              title: v1.title,
-                              description: v1.description,
-                              tags: v1.tags,
-                              "private": v1["private"],
-                              toread: v1.toread,
-                              bid: v1.bid,
-                              slug: v1.slug,
-                              selected: v1.selected,
-                              time: v1.time,
-                              archiveUrl: v1.archiveUrl
-                          };
-                      };
-                  };
-                  if (v.value0 instanceof Etitle) {
-                      return function (v1) {
-                          return {
-                              url: v1.url,
-                              title: v.value0.value0,
-                              description: v1.description,
-                              tags: v1.tags,
-                              "private": v1["private"],
-                              toread: v1.toread,
-                              bid: v1.bid,
-                              slug: v1.slug,
-                              selected: v1.selected,
-                              time: v1.time,
-                              archiveUrl: v1.archiveUrl
-                          };
-                      };
-                  };
-                  if (v.value0 instanceof Edescription) {
-                      return function (v1) {
-                          return {
-                              url: v1.url,
-                              title: v1.title,
-                              description: v.value0.value0,
-                              tags: v1.tags,
-                              "private": v1["private"],
-                              toread: v1.toread,
-                              bid: v1.bid,
-                              slug: v1.slug,
-                              selected: v1.selected,
-                              time: v1.time,
-                              archiveUrl: v1.archiveUrl
-                          };
-                      };
-                  };
-                  if (v.value0 instanceof Etags) {
-                      return function (v1) {
-                          return {
-                              url: v1.url,
-                              title: v1.title,
-                              description: v1.description,
-                              tags: v.value0.value0,
-                              "private": v1["private"],
-                              toread: v1.toread,
-                              bid: v1.bid,
-                              slug: v1.slug,
-                              selected: v1.selected,
-                              time: v1.time,
-                              archiveUrl: v1.archiveUrl
-                          };
-                      };
-                  };
-                  if (v.value0 instanceof Eprivate) {
-                      return function (v1) {
-                          return {
-                              url: v1.url,
-                              title: v1.title,
-                              description: v1.description,
-                              tags: v1.tags,
-                              "private": v.value0.value0,
-                              toread: v1.toread,
-                              bid: v1.bid,
-                              slug: v1.slug,
-                              selected: v1.selected,
-                              time: v1.time,
-                              archiveUrl: v1.archiveUrl
-                          };
-                      };
-                  };
-                  if (v.value0 instanceof Etoread) {
-                      return function (v1) {
-                          return {
-                              url: v1.url,
-                              title: v1.title,
-                              description: v1.description,
-                              tags: v1.tags,
-                              "private": v1["private"],
-                              toread: v.value0.value0,
-                              bid: v1.bid,
-                              slug: v1.slug,
-                              selected: v1.selected,
-                              time: v1.time,
-                              archiveUrl: v1.archiveUrl
-                          };
-                      };
-                  };
-                  throw new Error("Failed pattern match at Component.Add (line 160, column 17 - line 166, column 36): " + [ v.value0.constructor.name ]);
-              })()))(function () {
-                  return Control_Applicative.pure(Halogen_Query_HalogenM.applicativeHalogenM)(v.value1);
-              });
-          };
-          if (v instanceof BEditSubmit) {
-              return Control_Bind.discard(Control_Bind.discardUnit)(Halogen_Query_HalogenM.bindHalogenM)(Effect_Class.liftEffect(Halogen_Query_HalogenM.monadEffectHalogenM(Effect_Aff.monadEffectAff))(Web_Event_Event.preventDefault(v.value0)))(function () {
-                  return Control_Bind.bind(Halogen_Query_HalogenM.bindHalogenM)(Data_Lens_Getter.use(Halogen_Query_HalogenM.monadStateHalogenM)(_edit_bm(Data_Lens_Internal_Forget.strongForget)))(function (v1) {
-                      return Control_Bind.discard(Control_Bind.discardUnit)(Halogen_Query_HalogenM.bindHalogenM)(Data_Functor["void"](Halogen_Query_HalogenM.functorHalogenM)(Effect_Aff_Class.liftAff(Halogen_Query_HalogenM.monadAffHalogenM(Effect_Aff_Class.monadAffAff))(App.editBookmark(v1))))(function () {
-                          return Control_Bind.discard(Control_Bind.discardUnit)(Halogen_Query_HalogenM.bindHalogenM)(Data_Lens_Setter.assign(Halogen_Query_HalogenM.monadStateHalogenM)(_bm(Data_Profunctor_Strong.strongFn))(v1))(function () {
-                              return Control_Bind.bind(Halogen_Query_HalogenM.bindHalogenM)(Effect_Class.liftEffect(Halogen_Query_HalogenM.monadEffectHalogenM(Effect_Aff.monadEffectAff))(Util["_loc"]))(function (v2) {
-                                  return Control_Bind.bind(Halogen_Query_HalogenM.bindHalogenM)(Effect_Class.liftEffect(Halogen_Query_HalogenM.monadEffectHalogenM(Effect_Aff.monadEffectAff))(Web_HTML.window))(function (v3) {
-                                      return Control_Bind.bind(Halogen_Query_HalogenM.bindHalogenM)(Effect_Class.liftEffect(Halogen_Query_HalogenM.monadEffectHalogenM(Effect_Aff.monadEffectAff))(Util["_curQuerystring"]))(function (v4) {
-                                          return Control_Bind.discard(Control_Bind.discardUnit)(Halogen_Query_HalogenM.bindHalogenM)((function () {
-                                              var v5 = Util["_lookupQueryStringValue"](v4)("next");
-                                              if (v5 instanceof Data_Maybe.Just) {
-                                                  return Effect_Class.liftEffect(Halogen_Query_HalogenM.monadEffectHalogenM(Effect_Aff.monadEffectAff))(Web_HTML_Location.setHref(v5.value0)(v2));
-                                              };
-                                              return Effect_Class.liftEffect(Halogen_Query_HalogenM.monadEffectHalogenM(Effect_Aff.monadEffectAff))(Globals.closeWindow(v3));
-                                          })())(function () {
-                                              return Control_Applicative.pure(Halogen_Query_HalogenM.applicativeHalogenM)(v.value1);
-                                          });
-                                      });
-                                  });
-                              });
-                          });
-                      });
-                  });
-              });
-          };
-          throw new Error("Failed pattern match at Component.Add (line 150, column 3 - line 150, column 58): " + [ v.constructor.name ]);
-      };
-      var app = Globals["app'"](Data_Unit.unit);
-      return Halogen_Component.component(Halogen_HTML_Core.bifunctorHTML)({
-          initialState: Data_Function["const"](mkState(b$prime)),
-          render: render,
-          "eval": $$eval,
-          receiver: Data_Function["const"](Data_Maybe.Nothing.value)
-      });
-  };
-  exports["BEditField"] = BEditField;
-  exports["BEditSubmit"] = BEditSubmit;
-  exports["BDeleteAsk"] = BDeleteAsk;
-  exports["BDestroy"] = BDestroy;
-  exports["Eurl"] = Eurl;
-  exports["Etitle"] = Etitle;
-  exports["Edescription"] = Edescription;
-  exports["Etags"] = Etags;
-  exports["Eprivate"] = Eprivate;
-  exports["Etoread"] = Etoread;
-  exports["_bm"] = _bm;
-  exports["_edit_bm"] = _edit_bm;
-  exports["addbmark"] = addbmark;
-})(PS["Component.Add"] = PS["Component.Add"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.2
-  "use strict";
-  var App = PS["App"];
-  var Control_Applicative = PS["Control.Applicative"];
-  var Control_Bind = PS["Control.Bind"];
-  var Control_Monad_State_Class = PS["Control.Monad.State.Class"];
-  var Control_Semigroupoid = PS["Control.Semigroupoid"];
-  var DOM_HTML_Indexed_ButtonType = PS["DOM.HTML.Indexed.ButtonType"];
-  var DOM_HTML_Indexed_InputType = PS["DOM.HTML.Indexed.InputType"];
-  var Data_Array = PS["Data.Array"];
-  var Data_Eq = PS["Data.Eq"];
-  var Data_Foldable = PS["Data.Foldable"];
-  var Data_Function = PS["Data.Function"];
-  var Data_Functor = PS["Data.Functor"];
-  var Data_HeytingAlgebra = PS["Data.HeytingAlgebra"];
-  var Data_Lens = PS["Data.Lens"];
-  var Data_Lens_Getter = PS["Data.Lens.Getter"];
-  var Data_Lens_Internal_Forget = PS["Data.Lens.Internal.Forget"];
-  var Data_Lens_Lens = PS["Data.Lens.Lens"];
-  var Data_Lens_Setter = PS["Data.Lens.Setter"];
-  var Data_Maybe = PS["Data.Maybe"];
-  var Data_Monoid = PS["Data.Monoid"];
-  var Data_Nullable = PS["Data.Nullable"];
-  var Data_Profunctor_Strong = PS["Data.Profunctor.Strong"];
-  var Data_Semigroup = PS["Data.Semigroup"];
-  var Data_Show = PS["Data.Show"];
-  var Data_String = PS["Data.String"];
-  var Data_String_CodePoints = PS["Data.String.CodePoints"];
-  var Data_String_Common = PS["Data.String.Common"];
-  var Data_String_Pattern = PS["Data.String.Pattern"];
-  var Data_Tuple = PS["Data.Tuple"];
-  var Data_Unit = PS["Data.Unit"];
-  var Effect_Aff = PS["Effect.Aff"];
-  var Effect_Aff_Class = PS["Effect.Aff.Class"];
-  var Effect_Class = PS["Effect.Class"];
-  var Globals = PS["Globals"];
-  var Halogen = PS["Halogen"];
-  var Halogen_Component = PS["Halogen.Component"];
-  var Halogen_HTML = PS["Halogen.HTML"];
-  var Halogen_HTML_Core = PS["Halogen.HTML.Core"];
-  var Halogen_HTML_Elements = PS["Halogen.HTML.Elements"];
-  var Halogen_HTML_Events = PS["Halogen.HTML.Events"];
-  var Halogen_HTML_Properties = PS["Halogen.HTML.Properties"];
-  var Halogen_Query_HalogenM = PS["Halogen.Query.HalogenM"];
-  var Model = PS["Model"];
-  var Prelude = PS["Prelude"];
-  var Util = PS["Util"];
-  var Web_Event_Event = PS["Web.Event.Event"];                 
-  var Eurl = (function () {
-      function Eurl(value0) {
-          this.value0 = value0;
-      };
-      Eurl.create = function (value0) {
-          return new Eurl(value0);
-      };
-      return Eurl;
-  })();
-  var Etitle = (function () {
-      function Etitle(value0) {
-          this.value0 = value0;
-      };
-      Etitle.create = function (value0) {
-          return new Etitle(value0);
-      };
-      return Etitle;
-  })();
-  var Edescription = (function () {
-      function Edescription(value0) {
-          this.value0 = value0;
-      };
-      Edescription.create = function (value0) {
-          return new Edescription(value0);
-      };
-      return Edescription;
-  })();
-  var Etags = (function () {
-      function Etags(value0) {
-          this.value0 = value0;
-      };
-      Etags.create = function (value0) {
-          return new Etags(value0);
-      };
-      return Etags;
-  })();
-  var Eprivate = (function () {
-      function Eprivate(value0) {
-          this.value0 = value0;
-      };
-      Eprivate.create = function (value0) {
-          return new Eprivate(value0);
-      };
-      return Eprivate;
-  })();
-  var Etoread = (function () {
-      function Etoread(value0) {
-          this.value0 = value0;
-      };
-      Etoread.create = function (value0) {
-          return new Etoread(value0);
-      };
-      return Etoread;
-  })();
-  var BStar = (function () {
-      function BStar(value0, value1) {
-          this.value0 = value0;
-          this.value1 = value1;
-      };
-      BStar.create = function (value0) {
-          return function (value1) {
-              return new BStar(value0, value1);
-          };
-      };
-      return BStar;
-  })();
-  var BDeleteAsk = (function () {
-      function BDeleteAsk(value0, value1) {
-          this.value0 = value0;
-          this.value1 = value1;
-      };
-      BDeleteAsk.create = function (value0) {
-          return function (value1) {
-              return new BDeleteAsk(value0, value1);
-          };
-      };
-      return BDeleteAsk;
-  })();
-  var BDestroy = (function () {
-      function BDestroy(value0) {
-          this.value0 = value0;
-      };
-      BDestroy.create = function (value0) {
-          return new BDestroy(value0);
-      };
-      return BDestroy;
-  })();
-  var BEdit = (function () {
-      function BEdit(value0, value1) {
-          this.value0 = value0;
-          this.value1 = value1;
-      };
-      BEdit.create = function (value0) {
-          return function (value1) {
-              return new BEdit(value0, value1);
-          };
-      };
-      return BEdit;
-  })();
-  var BEditField = (function () {
-      function BEditField(value0, value1) {
-          this.value0 = value0;
-          this.value1 = value1;
-      };
-      BEditField.create = function (value0) {
-          return function (value1) {
-              return new BEditField(value0, value1);
-          };
-      };
-      return BEditField;
-  })();
-  var BEditSubmit = (function () {
-      function BEditSubmit(value0, value1) {
-          this.value0 = value0;
-          this.value1 = value1;
-      };
-      BEditSubmit.create = function (value0) {
-          return function (value1) {
-              return new BEditSubmit(value0, value1);
-          };
-      };
-      return BEditSubmit;
-  })();
-  var BMarkRead = (function () {
-      function BMarkRead(value0) {
-          this.value0 = value0;
-      };
-      BMarkRead.create = function (value0) {
-          return new BMarkRead(value0);
-      };
-      return BMarkRead;
-  })();
-  var BNotifyRemove = (function () {
-      function BNotifyRemove() {
-
-      };
-      BNotifyRemove.value = new BNotifyRemove();
-      return BNotifyRemove;
-  })();
-  var _edit_bm = function (dictStrong) {
-      return Data_Lens_Lens.lens(function (v) {
-          return v.edit_bm;
-      })(function (v) {
-          return function (v1) {
-              return {
-                  edit_bm: v1,
-                  bm: v.bm,
-                  deleteAsk: v.deleteAsk,
-                  edit: v.edit
-              };
-          };
-      })(dictStrong);
-  };
-  var _edit = function (dictStrong) {
-      return Data_Lens_Lens.lens(function (v) {
-          return v.edit;
-      })(function (v) {
-          return function (v1) {
-              return {
-                  edit: v1,
-                  bm: v.bm,
-                  deleteAsk: v.deleteAsk,
-                  edit_bm: v.edit_bm
-              };
-          };
-      })(dictStrong);
-  };
-  var _bm = function (dictStrong) {
-      return Data_Lens_Lens.lens(function (v) {
-          return v.bm;
-      })(function (v) {
-          return function (v1) {
-              return {
-                  bm: v1,
-                  deleteAsk: v.deleteAsk,
-                  edit: v.edit,
-                  edit_bm: v.edit_bm
-              };
-          };
-      })(dictStrong);
-  };
-  var bmark = function (b$prime) {
-      var mkState = function (b) {
-          return {
-              bm: b,
-              edit_bm: b,
-              deleteAsk: false,
-              edit: false
-          };
-      };
-      var $$eval = function (v) {
-          if (v instanceof BStar) {
-              return Control_Bind.bind(Halogen_Query_HalogenM.bindHalogenM)(Data_Lens_Getter.use(Halogen_Query_HalogenM.monadStateHalogenM)(_bm(Data_Lens_Internal_Forget.strongForget)))(function (v1) {
-                  return Control_Bind.discard(Control_Bind.discardUnit)(Halogen_Query_HalogenM.bindHalogenM)(Effect_Aff_Class.liftAff(Halogen_Query_HalogenM.monadAffHalogenM(Effect_Aff_Class.monadAffAff))(App.toggleStar(v1.bid)((function () {
-                      if (v.value0) {
-                          return App.Star.value;
-                      };
-                      return App.UnStar.value;
-                  })())))(function () {
-                      return Control_Bind.discard(Control_Bind.discardUnit)(Halogen_Query_HalogenM.bindHalogenM)(Data_Lens_Setter.modifying(Halogen_Query_HalogenM.monadStateHalogenM)(_bm(Data_Profunctor_Strong.strongFn))(function (v2) {
-                          return {
-                              url: v2.url,
-                              title: v2.title,
-                              description: v2.description,
-                              tags: v2.tags,
-                              "private": v2["private"],
-                              toread: v2.toread,
-                              bid: v2.bid,
-                              slug: v2.slug,
-                              selected: v.value0,
-                              time: v2.time,
-                              archiveUrl: v2.archiveUrl
-                          };
-                      }))(function () {
-                          return Control_Bind.discard(Control_Bind.discardUnit)(Halogen_Query_HalogenM.bindHalogenM)(Data_Lens_Setter.modifying(Halogen_Query_HalogenM.monadStateHalogenM)(_edit_bm(Data_Profunctor_Strong.strongFn))(function (v2) {
-                              return {
-                                  url: v2.url,
-                                  title: v2.title,
-                                  description: v2.description,
-                                  tags: v2.tags,
-                                  "private": v2["private"],
-                                  toread: v2.toread,
-                                  bid: v2.bid,
-                                  slug: v2.slug,
-                                  selected: v.value0,
-                                  time: v2.time,
-                                  archiveUrl: v2.archiveUrl
-                              };
-                          }))(function () {
-                              return Control_Applicative.pure(Halogen_Query_HalogenM.applicativeHalogenM)(v.value1);
-                          });
-                      });
-                  });
-              });
-          };
-          if (v instanceof BDeleteAsk) {
-              return Control_Bind.discard(Control_Bind.discardUnit)(Halogen_Query_HalogenM.bindHalogenM)(Control_Monad_State_Class.modify_(Halogen_Query_HalogenM.monadStateHalogenM)(function (v1) {
-                  var $34 = {};
-                  for (var $35 in v1) {
-                      if ({}.hasOwnProperty.call(v1, $35)) {
-                          $34[$35] = v1[$35];
-                      };
-                  };
-                  $34.deleteAsk = v.value0;
-                  return $34;
-              }))(function () {
-                  return Control_Applicative.pure(Halogen_Query_HalogenM.applicativeHalogenM)(v.value1);
-              });
-          };
-          if (v instanceof BDestroy) {
-              return Control_Bind.bind(Halogen_Query_HalogenM.bindHalogenM)(Data_Lens_Getter.use(Halogen_Query_HalogenM.monadStateHalogenM)(_bm(Data_Lens_Internal_Forget.strongForget)))(function (v1) {
-                  return Control_Bind.discard(Control_Bind.discardUnit)(Halogen_Query_HalogenM.bindHalogenM)(Data_Functor["void"](Halogen_Query_HalogenM.functorHalogenM)(Effect_Aff_Class.liftAff(Halogen_Query_HalogenM.monadAffHalogenM(Effect_Aff_Class.monadAffAff))(App.destroy(v1.bid))))(function () {
-                      return Control_Bind.discard(Control_Bind.discardUnit)(Halogen_Query_HalogenM.bindHalogenM)(Halogen_Query_HalogenM.raise(BNotifyRemove.value))(function () {
-                          return Control_Applicative.pure(Halogen_Query_HalogenM.applicativeHalogenM)(v.value0);
-                      });
-                  });
-              });
-          };
-          if (v instanceof BMarkRead) {
-              return Control_Bind.bind(Halogen_Query_HalogenM.bindHalogenM)(Data_Lens_Getter.use(Halogen_Query_HalogenM.monadStateHalogenM)(_bm(Data_Lens_Internal_Forget.strongForget)))(function (v1) {
-                  return Control_Bind.discard(Control_Bind.discardUnit)(Halogen_Query_HalogenM.bindHalogenM)(Data_Functor["void"](Halogen_Query_HalogenM.functorHalogenM)(Effect_Aff_Class.liftAff(Halogen_Query_HalogenM.monadAffHalogenM(Effect_Aff_Class.monadAffAff))(App.markRead(v1.bid))))(function () {
-                      return Control_Bind.discard(Control_Bind.discardUnit)(Halogen_Query_HalogenM.bindHalogenM)(Data_Lens_Setter.modifying(Halogen_Query_HalogenM.monadStateHalogenM)(_bm(Data_Profunctor_Strong.strongFn))(function (v2) {
-                          return {
-                              url: v2.url,
-                              title: v2.title,
-                              description: v2.description,
-                              tags: v2.tags,
-                              "private": v2["private"],
-                              toread: false,
-                              bid: v2.bid,
-                              slug: v2.slug,
-                              selected: v2.selected,
-                              time: v2.time,
-                              archiveUrl: v2.archiveUrl
-                          };
-                      }))(function () {
-                          return Control_Applicative.pure(Halogen_Query_HalogenM.applicativeHalogenM)(v.value0);
-                      });
-                  });
-              });
-          };
-          if (v instanceof BEdit) {
-              return Control_Bind.bind(Halogen_Query_HalogenM.bindHalogenM)(Data_Lens_Getter.use(Halogen_Query_HalogenM.monadStateHalogenM)(_bm(Data_Lens_Internal_Forget.strongForget)))(function (v1) {
-                  return Control_Bind.discard(Control_Bind.discardUnit)(Halogen_Query_HalogenM.bindHalogenM)(Data_Lens_Setter.assign(Halogen_Query_HalogenM.monadStateHalogenM)(_edit_bm(Data_Profunctor_Strong.strongFn))(v1))(function () {
-                      return Control_Bind.discard(Control_Bind.discardUnit)(Halogen_Query_HalogenM.bindHalogenM)(Data_Lens_Setter.assign(Halogen_Query_HalogenM.monadStateHalogenM)(_edit(Data_Profunctor_Strong.strongFn))(v.value0))(function () {
-                          return Control_Applicative.pure(Halogen_Query_HalogenM.applicativeHalogenM)(v.value1);
-                      });
-                  });
-              });
-          };
-          if (v instanceof BEditField) {
-              return Control_Bind.discard(Control_Bind.discardUnit)(Halogen_Query_HalogenM.bindHalogenM)(Data_Lens_Setter.modifying(Halogen_Query_HalogenM.monadStateHalogenM)(_edit_bm(Data_Profunctor_Strong.strongFn))((function () {
-                  if (v.value0 instanceof Eurl) {
-                      return function (v1) {
-                          return {
-                              url: v.value0.value0,
-                              title: v1.title,
-                              description: v1.description,
-                              tags: v1.tags,
-                              "private": v1["private"],
-                              toread: v1.toread,
-                              bid: v1.bid,
-                              slug: v1.slug,
-                              selected: v1.selected,
-                              time: v1.time,
-                              archiveUrl: v1.archiveUrl
-                          };
-                      };
-                  };
-                  if (v.value0 instanceof Etitle) {
-                      return function (v1) {
-                          return {
-                              url: v1.url,
-                              title: v.value0.value0,
-                              description: v1.description,
-                              tags: v1.tags,
-                              "private": v1["private"],
-                              toread: v1.toread,
-                              bid: v1.bid,
-                              slug: v1.slug,
-                              selected: v1.selected,
-                              time: v1.time,
-                              archiveUrl: v1.archiveUrl
-                          };
-                      };
-                  };
-                  if (v.value0 instanceof Edescription) {
-                      return function (v1) {
-                          return {
-                              url: v1.url,
-                              title: v1.title,
-                              description: v.value0.value0,
-                              tags: v1.tags,
-                              "private": v1["private"],
-                              toread: v1.toread,
-                              bid: v1.bid,
-                              slug: v1.slug,
-                              selected: v1.selected,
-                              time: v1.time,
-                              archiveUrl: v1.archiveUrl
-                          };
-                      };
-                  };
-                  if (v.value0 instanceof Etags) {
-                      return function (v1) {
-                          return {
-                              url: v1.url,
-                              title: v1.title,
-                              description: v1.description,
-                              tags: v.value0.value0,
-                              "private": v1["private"],
-                              toread: v1.toread,
-                              bid: v1.bid,
-                              slug: v1.slug,
-                              selected: v1.selected,
-                              time: v1.time,
-                              archiveUrl: v1.archiveUrl
-                          };
-                      };
-                  };
-                  if (v.value0 instanceof Eprivate) {
-                      return function (v1) {
-                          return {
-                              url: v1.url,
-                              title: v1.title,
-                              description: v1.description,
-                              tags: v1.tags,
-                              "private": v.value0.value0,
-                              toread: v1.toread,
-                              bid: v1.bid,
-                              slug: v1.slug,
-                              selected: v1.selected,
-                              time: v1.time,
-                              archiveUrl: v1.archiveUrl
-                          };
-                      };
-                  };
-                  if (v.value0 instanceof Etoread) {
-                      return function (v1) {
-                          return {
-                              url: v1.url,
-                              title: v1.title,
-                              description: v1.description,
-                              tags: v1.tags,
-                              "private": v1["private"],
-                              toread: v.value0.value0,
-                              bid: v1.bid,
-                              slug: v1.slug,
-                              selected: v1.selected,
-                              time: v1.time,
-                              archiveUrl: v1.archiveUrl
-                          };
-                      };
-                  };
-                  throw new Error("Failed pattern match at Component.BMark (line 231, column 17 - line 237, column 36): " + [ v.value0.constructor.name ]);
-              })()))(function () {
-                  return Control_Applicative.pure(Halogen_Query_HalogenM.applicativeHalogenM)(v.value1);
-              });
-          };
-          if (v instanceof BEditSubmit) {
-              return Control_Bind.discard(Control_Bind.discardUnit)(Halogen_Query_HalogenM.bindHalogenM)(Effect_Class.liftEffect(Halogen_Query_HalogenM.monadEffectHalogenM(Effect_Aff.monadEffectAff))(Web_Event_Event.preventDefault(v.value0)))(function () {
-                  return Control_Bind.bind(Halogen_Query_HalogenM.bindHalogenM)(Data_Lens_Getter.use(Halogen_Query_HalogenM.monadStateHalogenM)(_edit_bm(Data_Lens_Internal_Forget.strongForget)))(function (v1) {
-                      return Control_Bind.discard(Control_Bind.discardUnit)(Halogen_Query_HalogenM.bindHalogenM)(Data_Functor["void"](Halogen_Query_HalogenM.functorHalogenM)(Effect_Aff_Class.liftAff(Halogen_Query_HalogenM.monadAffHalogenM(Effect_Aff_Class.monadAffAff))(App.editBookmark(v1))))(function () {
-                          return Control_Bind.discard(Control_Bind.discardUnit)(Halogen_Query_HalogenM.bindHalogenM)(Data_Lens_Setter.assign(Halogen_Query_HalogenM.monadStateHalogenM)(_bm(Data_Profunctor_Strong.strongFn))(v1))(function () {
-                              return Control_Bind.discard(Control_Bind.discardUnit)(Halogen_Query_HalogenM.bindHalogenM)(Data_Lens_Setter.assign(Halogen_Query_HalogenM.monadStateHalogenM)(_edit(Data_Profunctor_Strong.strongFn))(false))(function () {
-                                  return Control_Applicative.pure(Halogen_Query_HalogenM.applicativeHalogenM)(v.value1);
-                              });
-                          });
-                      });
-                  });
-              });
-          };
-          throw new Error("Failed pattern match at Component.BMark (line 193, column 3 - line 193, column 62): " + [ v.constructor.name ]);
-      };
-      var app = Globals["app'"](Data_Unit.unit);
-      var render = function (v) {
-          var toTextarea = function (input) {
-              return Data_Array.drop(1)(Data_Foldable.foldMap(Data_Foldable.foldableArray)(Data_Monoid.monoidArray)(function (x) {
-                  return [ Halogen_HTML_Elements.br_, Halogen_HTML_Core.text(x) ];
-              })(Data_String_Common.split("\x0a")(input)));
-          };
-          var star = Data_Monoid.guard(Data_Monoid.monoidArray)(app.dat.isowner)([ Halogen_HTML_Elements.div([ Util.class_("star fl pointer" + Data_Monoid.guard(Data_Monoid.monoidString)(v.bm.selected)(" selected")) ])([ Halogen_HTML_Elements.button([ Util.class_("moon-gray"), Halogen_HTML_Events.onClick(Halogen_HTML_Events.input_(BStar.create(!v.bm.selected))) ])([ Halogen_HTML_Core.text("\u272d") ]) ]) ]);
-          var mmoment = Globals.mmoment8601(v.bm.time);
-          var links = Data_Monoid.guard(Data_Monoid.monoidArray)(app.dat.isowner)([ Halogen_HTML_Elements.div([ Util.class_("edit_links di") ])([ Halogen_HTML_Elements.button([ Halogen_HTML_Properties.type_(Halogen_HTML_Core.buttonTypeIsProp)(DOM_HTML_Indexed_ButtonType.ButtonButton.value), Halogen_HTML_Events.onClick(Halogen_HTML_Events.input_(BEdit.create(true))), Util.class_("edit light-silver hover-blue") ])([ Halogen_HTML_Core.text("edit\xa0\xa0") ]), Halogen_HTML_Elements.div([ Util.class_("delete_link di") ])([ Halogen_HTML_Elements.button([ Halogen_HTML_Properties.type_(Halogen_HTML_Core.buttonTypeIsProp)(DOM_HTML_Indexed_ButtonType.ButtonButton.value), Halogen_HTML_Events.onClick(Halogen_HTML_Events.input_(BDeleteAsk.create(true))), Util.class_("delete light-silver hover-blue" + Data_Monoid.guard(Data_Monoid.monoidString)(v.deleteAsk)(" dn")) ])([ Halogen_HTML_Core.text("delete") ]), Halogen_HTML_Elements.span([ Util.class_("confirm red" + Data_Monoid.guard(Data_Monoid.monoidString)(!v.deleteAsk)(" dn")) ])([ Halogen_HTML_Elements.button([ Halogen_HTML_Properties.type_(Halogen_HTML_Core.buttonTypeIsProp)(DOM_HTML_Indexed_ButtonType.ButtonButton.value), Halogen_HTML_Events.onClick(Halogen_HTML_Events.input_(BDeleteAsk.create(false))) ])([ Halogen_HTML_Core.text("cancel\xa0/\xa0") ]), Halogen_HTML_Elements.button([ Halogen_HTML_Properties.type_(Halogen_HTML_Core.buttonTypeIsProp)(DOM_HTML_Indexed_ButtonType.ButtonButton.value), Halogen_HTML_Events.onClick(Halogen_HTML_Events.input_(BDestroy.create)), Util.class_("red") ])([ Halogen_HTML_Core.text("destroy") ]) ]) ]) ]), Halogen_HTML_Elements.div([ Util.class_("read di") ])(Data_Monoid.guard(Data_Monoid.monoidArray)(v.bm.toread)([ Halogen_HTML_Core.text("\xa0\xa0"), Halogen_HTML_Elements.button([ Halogen_HTML_Events.onClick(Halogen_HTML_Events.input_(BMarkRead.create)), Util.class_("mark_read") ])([ Halogen_HTML_Core.text("mark as read") ]) ])) ]);
-          var linkToFilterTag = function (tag) {
-              return Util.fromNullableStr(app.userR) + ("/t:" + tag);
-          };
-          var linkToFilterSingle = function (slug) {
-              return Util.fromNullableStr(app.userR) + ("/b:" + slug);
-          };
-          var editField = function (f) {
-              return function ($64) {
-                  return Halogen_HTML_Events.input(BEditField.create)(f($64));
-              };
-          };
-          var display_edit = [ Halogen_HTML_Elements.div([ Util.class_("edit_bookmark_form pa2 pt0 bg-white") ])([ Halogen_HTML_Elements.form([ Halogen_HTML_Events.onSubmit(Halogen_HTML_Events.input(BEditSubmit.create)) ])([ Halogen_HTML_Elements.div_([ Halogen_HTML_Core.text("url") ]), Halogen_HTML_Elements.input([ Halogen_HTML_Properties.type_(Halogen_HTML_Core.inputTypeIsProp)(DOM_HTML_Indexed_InputType.InputUrl.value), Util.class_("url w-100 mb2 pt1 f7 edit_form_input"), Halogen_HTML_Properties.required(true), Halogen_HTML_Properties.name("url"), Halogen_HTML_Properties.value(v.edit_bm.url), Halogen_HTML_Events.onValueChange(editField(Eurl.create)) ]), Halogen_HTML_Elements.br_, Halogen_HTML_Elements.div_([ Halogen_HTML_Core.text("title") ]), Halogen_HTML_Elements.input([ Halogen_HTML_Properties.type_(Halogen_HTML_Core.inputTypeIsProp)(DOM_HTML_Indexed_InputType.InputText.value), Util.class_("title w-100 mb2 pt1 f7 edit_form_input"), Halogen_HTML_Properties.name("title"), Halogen_HTML_Properties.value(v.edit_bm.title), Halogen_HTML_Events.onValueChange(editField(Etitle.create)) ]), Halogen_HTML_Elements.br_, Halogen_HTML_Elements.div_([ Halogen_HTML_Core.text("description") ]), Halogen_HTML_Elements.textarea([ Util.class_("description w-100 mb1 pt1 f7 edit_form_input"), Halogen_HTML_Properties.name("description"), Halogen_HTML_Properties.rows(5), Halogen_HTML_Properties.value(v.edit_bm.description), Halogen_HTML_Events.onValueChange(editField(Edescription.create)) ]), Halogen_HTML_Elements.br_, Halogen_HTML_Elements.div([ Halogen_HTML_Properties.id_("tags_input_box") ])([ Halogen_HTML_Elements.div_([ Halogen_HTML_Core.text("tags") ]), Halogen_HTML_Elements.input([ Halogen_HTML_Properties.type_(Halogen_HTML_Core.inputTypeIsProp)(DOM_HTML_Indexed_InputType.InputText.value), Util.class_("tags w-100 mb1 pt1 f7 edit_form_input"), Halogen_HTML_Properties.name("tags"), Halogen_HTML_Properties.autocomplete(false), Util.attr("autocapitalize")("off"), Halogen_HTML_Properties.value(v.edit_bm.tags), Halogen_HTML_Events.onValueChange(editField(Etags.create)) ]), Halogen_HTML_Elements.br_ ]), Halogen_HTML_Elements.div([ Util.class_("edit_form_checkboxes mv3") ])([ Halogen_HTML_Elements.input([ Halogen_HTML_Properties.type_(Halogen_HTML_Core.inputTypeIsProp)(DOM_HTML_Indexed_InputType.InputCheckbox.value), Util.class_("private pointer"), Halogen_HTML_Properties.id_("edit_private"), Halogen_HTML_Properties.name("private"), Halogen_HTML_Properties.checked(v["edit_bm"]["private"]), Halogen_HTML_Events.onChecked(editField(Eprivate.create)) ]), Halogen_HTML_Core.text(" "), Halogen_HTML_Elements.label([ Halogen_HTML_Properties["for"]("edit_private"), Util.class_("mr2") ])([ Halogen_HTML_Core.text("private") ]), Halogen_HTML_Core.text(" "), Halogen_HTML_Elements.input([ Halogen_HTML_Properties.type_(Halogen_HTML_Core.inputTypeIsProp)(DOM_HTML_Indexed_InputType.InputCheckbox.value), Util.class_("toread pointer"), Halogen_HTML_Properties.id_("edit_toread"), Halogen_HTML_Properties.name("toread"), Halogen_HTML_Properties.checked(v.edit_bm.toread), Halogen_HTML_Events.onChecked(editField(Etoread.create)) ]), Halogen_HTML_Core.text(" "), Halogen_HTML_Elements.label([ Halogen_HTML_Properties["for"]("edit_toread") ])([ Halogen_HTML_Core.text("to-read") ]), Halogen_HTML_Elements.br_ ]), Halogen_HTML_Elements.input([ Halogen_HTML_Properties.type_(Halogen_HTML_Core.inputTypeIsProp)(DOM_HTML_Indexed_InputType.InputSubmit.value), Util.class_("mr1 pv1 ph2 dark-gray ba b--moon-gray bg-near-white pointer rdim"), Halogen_HTML_Properties.value("save") ]), Halogen_HTML_Core.text(" "), Halogen_HTML_Elements.input([ Halogen_HTML_Properties.type_(Halogen_HTML_Core.inputTypeIsProp)(DOM_HTML_Indexed_InputType.InputReset.value), Util.class_("pv1 ph2 dark-gray ba b--moon-gray bg-near-white pointer rdim"), Halogen_HTML_Properties.value("cancel"), Halogen_HTML_Events.onClick(Halogen_HTML_Events.input_(BEdit.create(false))) ]) ]) ]) ];
-          var display = [ Halogen_HTML_Elements.div([ Util.class_("display") ])(Data_Semigroup.append(Data_Semigroup.semigroupArray)([ Halogen_HTML_Elements.a([ Halogen_HTML_Properties.href(v.bm.url), Halogen_HTML_Properties.target("_blank"), Util.class_("link f5 lh-title" + Data_Monoid.guard(Data_Monoid.monoidString)(v.bm.toread)(" unread")) ])([ Halogen_HTML_Core.text((function () {
-              var $59 = Data_String_Common["null"](v.bm.title);
-              if ($59) {
-                  return "[no title]";
-              };
-              return v.bm.title;
-          })()) ]), Halogen_HTML_Elements.br_, Halogen_HTML_Elements.a([ Halogen_HTML_Properties.href(v.bm.url), Util.class_("link f7 gray hover-blue") ])([ Halogen_HTML_Core.text(v.bm.url) ]), Halogen_HTML_Elements.a([ Halogen_HTML_Properties.href(Data_Maybe.fromMaybe("http://archive.is/" + v.bm.url)(Data_Nullable.toMaybe(v.bm.archiveUrl))), Util.class_("link f7 gray hover-blue ml2" + Data_Monoid.guard(Data_Monoid.monoidString)(Data_Maybe.isJust(Data_Nullable.toMaybe(v.bm.archiveUrl)))(" green")), Halogen_HTML_Properties.target("_blank"), Halogen_HTML_Properties.title("archive link") ])([ (function () {
-              var $60 = Data_Maybe.isJust(Data_Nullable.toMaybe(v.bm.archiveUrl));
-              if ($60) {
-                  return Halogen_HTML_Core.text("\u2611");
-              };
-              return Halogen_HTML_Core.text("\u2610");
-          })() ]), Halogen_HTML_Elements.br_, Halogen_HTML_Elements.div([ Util.class_("description mt1 mid-gray") ])(toTextarea(v.bm.description)), Halogen_HTML_Elements.div([ Util.class_("tags") ])(Data_Monoid.guard(Data_Monoid.monoidFn(Data_Monoid.monoidFn(Data_Monoid.monoidArray)))(!Data_String_Common["null"](v.bm.tags))(Data_Functor.map(Data_Functor.functorArray))(function (tag) {
-              return Halogen_HTML_Elements.a([ Util.class_("link tag mr1" + Data_Monoid.guard(Data_Monoid.monoidString)(Data_String_CodePoints.take(1)(tag) === ".")(" private")), Halogen_HTML_Properties.href(linkToFilterTag(tag)) ])([ Halogen_HTML_Core.text(tag) ]);
-          })(Data_String_Common.split(" ")(v.bm.tags))), Halogen_HTML_Elements.a([ Util.class_("link f7 dib gray w4"), Halogen_HTML_Properties.title(Data_Maybe.maybe(v.bm.time)(Data_Tuple.snd)(mmoment)), Halogen_HTML_Properties.href(linkToFilterSingle(v.bm.slug)) ])([ Halogen_HTML_Core.text(Data_Maybe.maybe("\xa0")(Data_Tuple.fst)(mmoment)) ]) ])(links)) ];
-          return Halogen_HTML_Elements.div([ Halogen_HTML_Properties.id_(Data_Show.show(Data_Show.showInt)(v.bm.bid)), Util.class_("bookmark w-100 mw7 pa1 mb3" + Data_Monoid.guard(Data_Monoid.monoidString)(v["bm"]["private"])(" private")) ])(Data_Semigroup.append(Data_Semigroup.semigroupArray)(star)((function () {
-              if (v.edit) {
-                  return display_edit;
-              };
-              return display;
-          })()));
-      };
-      return Halogen_Component.component(Halogen_HTML_Core.bifunctorHTML)({
-          initialState: Data_Function["const"](mkState(b$prime)),
-          render: render,
-          "eval": $$eval,
-          receiver: Data_Function["const"](Data_Maybe.Nothing.value)
-      });
-  };
-  exports["BStar"] = BStar;
-  exports["BDeleteAsk"] = BDeleteAsk;
-  exports["BDestroy"] = BDestroy;
-  exports["BEdit"] = BEdit;
-  exports["BEditField"] = BEditField;
-  exports["BEditSubmit"] = BEditSubmit;
-  exports["BMarkRead"] = BMarkRead;
-  exports["Eurl"] = Eurl;
-  exports["Etitle"] = Etitle;
-  exports["Edescription"] = Edescription;
-  exports["Etags"] = Etags;
-  exports["Eprivate"] = Eprivate;
-  exports["Etoread"] = Etoread;
-  exports["BNotifyRemove"] = BNotifyRemove;
-  exports["_bm"] = _bm;
-  exports["_edit_bm"] = _edit_bm;
-  exports["_edit"] = _edit;
-  exports["bmark"] = bmark;
-})(PS["Component.BMark"] = PS["Component.BMark"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.2
-  "use strict";
-  var Component_BMark = PS["Component.BMark"];
-  var Control_Applicative = PS["Control.Applicative"];
-  var Control_Bind = PS["Control.Bind"];
-  var Control_Monad_State_Class = PS["Control.Monad.State.Class"];
-  var Data_Array = PS["Data.Array"];
-  var Data_Eq = PS["Data.Eq"];
-  var Data_Function = PS["Data.Function"];
-  var Data_Functor = PS["Data.Functor"];
-  var Data_Maybe = PS["Data.Maybe"];
-  var Data_Ord = PS["Data.Ord"];
-  var Data_Unit = PS["Data.Unit"];
-  var Effect_Aff = PS["Effect.Aff"];
-  var Halogen = PS["Halogen"];
-  var Halogen_Component = PS["Halogen.Component"];
-  var Halogen_HTML = PS["Halogen.HTML"];
-  var Halogen_HTML_Elements = PS["Halogen.HTML.Elements"];
-  var Halogen_HTML_Events = PS["Halogen.HTML.Events"];
-  var Halogen_Query_HalogenM = PS["Halogen.Query.HalogenM"];
-  var Model = PS["Model"];
-  var Prelude = PS["Prelude"];                 
-  var HandleBMessage = (function () {
-      function HandleBMessage(value0, value1, value2) {
-          this.value0 = value0;
-          this.value1 = value1;
-          this.value2 = value2;
-      };
-      HandleBMessage.create = function (value0) {
-          return function (value1) {
-              return function (value2) {
-                  return new HandleBMessage(value0, value1, value2);
-              };
-          };
-      };
-      return HandleBMessage;
-  })();
-  var blist = function (st) {
-      var render = function (bms) {
-          var renderBookmark = function (b) {
-              return Halogen_HTML.slot(b.bid)(Component_BMark.bmark(b))(Data_Unit.unit)(Halogen_HTML_Events.input(HandleBMessage.create(b.bid)));
-          };
-          return Halogen_HTML_Elements.div_(Data_Functor.map(Data_Functor.functorArray)(renderBookmark)(bms));
-      };
-      var $$eval = function (v) {
-          var removeBookmark = function (bookmarkId) {
-              return Data_Array.filter(function (b) {
-                  return b.bid !== bookmarkId;
-              });
-          };
-          return Control_Bind.discard(Control_Bind.discardUnit)(Halogen_Query_HalogenM.bindHalogenM)(Control_Monad_State_Class.modify_(Halogen_Query_HalogenM.monadStateHalogenM)(removeBookmark(v.value0)))(function () {
-              return Control_Applicative.pure(Halogen_Query_HalogenM.applicativeHalogenM)(v.value2);
-          });
-      };
-      return Halogen_Component.parentComponent(Data_Ord.ordInt)({
-          initialState: Data_Function["const"](st),
-          render: render,
-          "eval": $$eval,
-          receiver: Data_Function["const"](Data_Maybe.Nothing.value)
-      });
-  };
-  exports["HandleBMessage"] = HandleBMessage;
-  exports["blist"] = blist;
-})(PS["Component.BList"] = PS["Component.BList"] || {});
-(function(exports) {// use at your own risk!
-  exports.unsafeSetInnerHTML = function(element) {
-    return function(html) {
-      return function() {
-        element.innerHTML = html;
-      };
-    };
-  };
-})(PS["Component.RawHtml"] = PS["Component.RawHtml"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.2
-  "use strict";
-  var $foreign = PS["Component.RawHtml"];
-  var Control_Applicative = PS["Control.Applicative"];
-  var Control_Bind = PS["Control.Bind"];
-  var Control_Monad_State_Class = PS["Control.Monad.State.Class"];
-  var Data_Foldable = PS["Data.Foldable"];
-  var Data_Function = PS["Data.Function"];
-  var Data_Maybe = PS["Data.Maybe"];
-  var Effect = PS["Effect"];
-  var Effect_Aff = PS["Effect.Aff"];
-  var Effect_Class = PS["Effect.Class"];
-  var Globals = PS["Globals"];
-  var Halogen = PS["Halogen"];
-  var Halogen_Component = PS["Halogen.Component"];
-  var Halogen_HTML = PS["Halogen.HTML"];
-  var Halogen_HTML_Core = PS["Halogen.HTML.Core"];
-  var Halogen_HTML_Elements = PS["Halogen.HTML.Elements"];
-  var Halogen_HTML_Events = PS["Halogen.HTML.Events"];
-  var Halogen_HTML_Properties = PS["Halogen.HTML.Properties"];
-  var Halogen_Query = PS["Halogen.Query"];
-  var Halogen_Query_HalogenM = PS["Halogen.Query.HalogenM"];
-  var Halogen_Query_InputF = PS["Halogen.Query.InputF"];
-  var Prelude = PS["Prelude"];
-  var Web_HTML = PS["Web.HTML"];                 
-  var SetInnerHTML = (function () {
-      function SetInnerHTML(value0) {
-          this.value0 = value0;
-      };
-      SetInnerHTML.create = function (value0) {
-          return new SetInnerHTML(value0);
-      };
-      return SetInnerHTML;
-  })();
-  var Receive = (function () {
-      function Receive(value0, value1) {
-          this.value0 = value0;
-          this.value1 = value1;
-      };
-      Receive.create = function (value0) {
-          return function (value1) {
-              return new Receive(value0, value1);
-          };
-      };
-      return Receive;
-  })();
-  var mkComponent = function (toRawHTML) {
-      var render = function (state) {
-          return Halogen_HTML_Elements.div([ Halogen_HTML_Properties.ref(state.elRef) ])([  ]);
-      };
-      var $$eval = function (v) {
-          if (v instanceof SetInnerHTML) {
-              return Control_Bind.bind(Halogen_Query_HalogenM.bindHalogenM)(Control_Monad_State_Class.get(Halogen_Query_HalogenM.monadStateHalogenM))(function (v1) {
-                  return Control_Bind.bind(Halogen_Query_HalogenM.bindHalogenM)(Halogen_Query.getHTMLElementRef(v1.elRef))(function (v2) {
-                      return Control_Bind.discard(Control_Bind.discardUnit)(Halogen_Query_HalogenM.bindHalogenM)(Data_Foldable.for_(Halogen_Query_HalogenM.applicativeHalogenM)(Data_Foldable.foldableMaybe)(v2)(function (el) {
-                          return Control_Bind.bind(Halogen_Query_HalogenM.bindHalogenM)(Control_Monad_State_Class.get(Halogen_Query_HalogenM.monadStateHalogenM))(function (v3) {
-                              return Effect_Class.liftEffect(Halogen_Query_HalogenM.monadEffectHalogenM(Effect_Aff.monadEffectAff))($foreign.unsafeSetInnerHTML(el)(toRawHTML(v3.inputval)));
-                          });
-                      }))(function () {
-                          return Control_Applicative.pure(Halogen_Query_HalogenM.applicativeHalogenM)(v.value0);
-                      });
-                  });
-              });
-          };
-          if (v instanceof Receive) {
-              return Control_Bind.discard(Control_Bind.discardUnit)(Halogen_Query_HalogenM.bindHalogenM)(Control_Monad_State_Class.modify_(Halogen_Query_HalogenM.monadStateHalogenM)(function (v1) {
-                  var $12 = {};
-                  for (var $13 in v1) {
-                      if ({}.hasOwnProperty.call(v1, $13)) {
-                          $12[$13] = v1[$13];
-                      };
-                  };
-                  $12.inputval = v.value0;
-                  return $12;
-              }))(function () {
-                  return $$eval(new SetInnerHTML(v.value1));
-              });
-          };
-          throw new Error("Failed pattern match at Component.RawHtml (line 51, column 10 - line 62, column 27): " + [ v.constructor.name ]);
-      };
-      return Halogen_Component.lifecycleComponent(Halogen_HTML_Core.bifunctorHTML)({
-          initialState: function (inputval) {
-              return {
-                  elRef: "inputval",
-                  inputval: inputval
-              };
-          },
-          render: render,
-          "eval": $$eval,
-          receiver: Halogen_HTML_Events.input(Receive.create),
-          initializer: Data_Maybe.Just.create(Halogen_Query.action(SetInnerHTML.create)),
-          finalizer: Data_Maybe.Nothing.value
-      });
-  };
-  exports["SetInnerHTML"] = SetInnerHTML;
-  exports["Receive"] = Receive;
-  exports["mkComponent"] = mkComponent;
-})(PS["Component.RawHtml"] = PS["Component.RawHtml"] || {});
-(function(exports) {exports.markedImpl = function(str) {
-    marked.setOptions({
-      pedantic: false,
-      gfm: true
-    });
-    return marked(str);
-  };
-})(PS["Foreign.Marked"] = PS["Foreign.Marked"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.2
-  "use strict";
-  var $foreign = PS["Foreign.Marked"];
-  var Control_Semigroupoid = PS["Control.Semigroupoid"];
-  var Globals = PS["Globals"];
-  var Prelude = PS["Prelude"];                 
-  var marked = function ($0) {
-      return Globals.RawHTML($foreign.markedImpl($0));
-  };
-  exports["marked"] = marked;
-})(PS["Foreign.Marked"] = PS["Foreign.Marked"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.2
-  "use strict";
-  var Component_RawHtml = PS["Component.RawHtml"];
-  var Effect_Aff = PS["Effect.Aff"];
-  var Foreign_Marked = PS["Foreign.Marked"];
-  var Halogen = PS["Halogen"];
-  var Halogen_HTML = PS["Halogen.HTML"];                 
-  var component = Component_RawHtml.mkComponent(Foreign_Marked.marked);
-  exports["component"] = component;
-})(PS["Component.Markdown"] = PS["Component.Markdown"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.2
-  "use strict";
-  var Control_Applicative = PS["Control.Applicative"];
-  var Data_Array = PS["Data.Array"];
-  var Data_Foldable = PS["Data.Foldable"];
-  var Data_Function = PS["Data.Function"];
-  var Data_Functor = PS["Data.Functor"];
-  var Data_Maybe = PS["Data.Maybe"];
-  var Data_Monoid = PS["Data.Monoid"];
-  var Data_Semigroup = PS["Data.Semigroup"];
-  var Data_Show = PS["Data.Show"];
-  var Data_String = PS["Data.String"];
-  var Data_String_CodePoints = PS["Data.String.CodePoints"];
-  var Data_String_Common = PS["Data.String.Common"];
-  var Data_String_Pattern = PS["Data.String.Pattern"];
-  var Data_Tuple = PS["Data.Tuple"];
-  var Data_Unit = PS["Data.Unit"];
-  var Effect_Aff = PS["Effect.Aff"];
-  var Globals = PS["Globals"];
-  var Halogen = PS["Halogen"];
-  var Halogen_Component = PS["Halogen.Component"];
-  var Halogen_HTML = PS["Halogen.HTML"];
-  var Halogen_HTML_Core = PS["Halogen.HTML.Core"];
-  var Halogen_HTML_Elements = PS["Halogen.HTML.Elements"];
-  var Halogen_HTML_Properties = PS["Halogen.HTML.Properties"];
-  var Halogen_Query_HalogenM = PS["Halogen.Query.HalogenM"];
-  var Model = PS["Model"];
-  var Prelude = PS["Prelude"];
-  var Util = PS["Util"];
-  var nlist = function (st$prime) {
-      var toTextarea = function (input) {
-          return Data_Array.drop(1)(Data_Foldable.foldMap(Data_Foldable.foldableArray)(Data_Monoid.monoidArray)(function (x) {
-              return [ Halogen_HTML_Elements.br_, Halogen_HTML_Core.text(x) ];
-          })(Data_String_Common.split("\x0a")(input)));
-      };
-      var mmoment = function (bm) {
-          return Globals.mmoment8601(bm.created);
-      };
-      var mkState = function (notes$prime) {
-          return {
-              notes: notes$prime,
-              cur: Data_Maybe.Nothing.value,
-              deleteAsk: false,
-              edit: false
-          };
-      };
-      var $$eval = function (v) {
-          return Control_Applicative.pure(Halogen_Query_HalogenM.applicativeHalogenM)(v.value0);
-      };
-      var app = Globals["app'"](Data_Unit.unit);
-      var linkToFilterSingle = function (slug) {
-          return Util.fromNullableStr(app.userR) + ("/notes/" + slug);
-      };
-      var render = function (v) {
-          var renderNote = function (bm) {
-              return Halogen_HTML_Elements.div([ Halogen_HTML_Properties.id_(Data_Show.show(Data_Show.showInt)(bm.id)), Util.class_("note w-100 mw7 pa1 mb2") ])([ Halogen_HTML_Elements.div([ Util.class_("display") ])([ Halogen_HTML_Elements.a([ Halogen_HTML_Properties.href(linkToFilterSingle(bm.slug)), Util.class_("link f5 lh-title") ])([ Halogen_HTML_Core.text((function () {
-                  var $5 = Data_String_Common["null"](bm.title);
-                  if ($5) {
-                      return "[no title]";
-                  };
-                  return bm.title;
-              })()) ]), Halogen_HTML_Elements.br_, Halogen_HTML_Elements.div([ Util.class_("description mt1 mid-gray") ])(toTextarea(Data_String_CodePoints.take(200)(bm.text))), Halogen_HTML_Elements.a([ Util.class_("link f7 dib gray w4"), Halogen_HTML_Properties.title(Data_Maybe.maybe(bm.created)(Data_Tuple.snd)(mmoment(bm))), Halogen_HTML_Properties.href(linkToFilterSingle(bm.slug)) ])([ Halogen_HTML_Core.text(Data_Maybe.maybe("\xa0")(Data_Tuple.fst)(mmoment(bm))) ]) ]) ]);
-          };
-          return Halogen_HTML_Elements.div_(Data_Functor.map(Data_Functor.functorArray)(renderNote)(v.notes));
-      };
-      return Halogen_Component.component(Halogen_HTML_Core.bifunctorHTML)({
-          initialState: Data_Function["const"](mkState(st$prime)),
-          render: render,
-          "eval": $$eval,
-          receiver: Data_Function["const"](Data_Maybe.Nothing.value)
-      });
-  };
-  exports["nlist"] = nlist;
-})(PS["Component.NList"] = PS["Component.NList"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.2
-  "use strict";
-  var App = PS["App"];
-  var Component_Markdown = PS["Component.Markdown"];
-  var Control_Applicative = PS["Control.Applicative"];
-  var Control_Bind = PS["Control.Bind"];
-  var Control_Monad_State_Class = PS["Control.Monad.State.Class"];
-  var Control_Semigroupoid = PS["Control.Semigroupoid"];
-  var DOM_HTML_Indexed_ButtonType = PS["DOM.HTML.Indexed.ButtonType"];
-  var DOM_HTML_Indexed_InputType = PS["DOM.HTML.Indexed.InputType"];
-  var Data_Array = PS["Data.Array"];
-  var Data_Either = PS["Data.Either"];
-  var Data_Eq = PS["Data.Eq"];
-  var Data_Foldable = PS["Data.Foldable"];
-  var Data_Function = PS["Data.Function"];
-  var Data_Functor = PS["Data.Functor"];
-  var Data_HeytingAlgebra = PS["Data.HeytingAlgebra"];
-  var Data_Lens = PS["Data.Lens"];
-  var Data_Lens_Getter = PS["Data.Lens.Getter"];
-  var Data_Lens_Internal_Forget = PS["Data.Lens.Internal.Forget"];
-  var Data_Lens_Lens = PS["Data.Lens.Lens"];
-  var Data_Lens_Setter = PS["Data.Lens.Setter"];
-  var Data_Maybe = PS["Data.Maybe"];
-  var Data_Monoid = PS["Data.Monoid"];
-  var Data_Ord = PS["Data.Ord"];
-  var Data_Profunctor_Strong = PS["Data.Profunctor.Strong"];
-  var Data_Semigroup = PS["Data.Semigroup"];
-  var Data_Show = PS["Data.Show"];
-  var Data_String = PS["Data.String"];
-  var Data_String_Common = PS["Data.String.Common"];
-  var Data_String_Pattern = PS["Data.String.Pattern"];
-  var Data_Tuple = PS["Data.Tuple"];
-  var Data_Unit = PS["Data.Unit"];
-  var Data_Void = PS["Data.Void"];
-  var Effect = PS["Effect"];
-  var Effect_Aff = PS["Effect.Aff"];
-  var Effect_Aff_Class = PS["Effect.Aff.Class"];
-  var Effect_Class = PS["Effect.Class"];
-  var Globals = PS["Globals"];
-  var Halogen = PS["Halogen"];
-  var Halogen_Component = PS["Halogen.Component"];
-  var Halogen_HTML = PS["Halogen.HTML"];
-  var Halogen_HTML_Core = PS["Halogen.HTML.Core"];
-  var Halogen_HTML_Elements = PS["Halogen.HTML.Elements"];
-  var Halogen_HTML_Events = PS["Halogen.HTML.Events"];
-  var Halogen_HTML_Properties = PS["Halogen.HTML.Properties"];
-  var Halogen_Query_HalogenM = PS["Halogen.Query.HalogenM"];
-  var Model = PS["Model"];
-  var Prelude = PS["Prelude"];
-  var Util = PS["Util"];
-  var Web_Event_Event = PS["Web.Event.Event"];
-  var Web_HTML_Location = PS["Web.HTML.Location"];                 
-  var Etitle = (function () {
-      function Etitle(value0) {
-          this.value0 = value0;
-      };
-      Etitle.create = function (value0) {
-          return new Etitle(value0);
-      };
-      return Etitle;
-  })();
-  var Etext = (function () {
-      function Etext(value0) {
-          this.value0 = value0;
-      };
-      Etext.create = function (value0) {
-          return new Etext(value0);
-      };
-      return Etext;
-  })();
-  var EisMarkdown = (function () {
-      function EisMarkdown(value0) {
-          this.value0 = value0;
-      };
-      EisMarkdown.create = function (value0) {
-          return new EisMarkdown(value0);
-      };
-      return EisMarkdown;
-  })();
-  var NNop = (function () {
-      function NNop(value0) {
-          this.value0 = value0;
-      };
-      NNop.create = function (value0) {
-          return new NNop(value0);
-      };
-      return NNop;
-  })();
-  var NEditField = (function () {
-      function NEditField(value0, value1) {
-          this.value0 = value0;
-          this.value1 = value1;
-      };
-      NEditField.create = function (value0) {
-          return function (value1) {
-              return new NEditField(value0, value1);
-          };
-      };
-      return NEditField;
-  })();
-  var NEditSubmit = (function () {
-      function NEditSubmit(value0, value1) {
-          this.value0 = value0;
-          this.value1 = value1;
-      };
-      NEditSubmit.create = function (value0) {
-          return function (value1) {
-              return new NEditSubmit(value0, value1);
-          };
-      };
-      return NEditSubmit;
-  })();
-  var NEdit = (function () {
-      function NEdit(value0, value1) {
-          this.value0 = value0;
-          this.value1 = value1;
-      };
-      NEdit.create = function (value0) {
-          return function (value1) {
-              return new NEdit(value0, value1);
-          };
-      };
-      return NEdit;
-  })();
-  var NDeleteAsk = (function () {
-      function NDeleteAsk(value0, value1) {
-          this.value0 = value0;
-          this.value1 = value1;
-      };
-      NDeleteAsk.create = function (value0) {
-          return function (value1) {
-              return new NDeleteAsk(value0, value1);
-          };
-      };
-      return NDeleteAsk;
-  })();
-  var NDestroy = (function () {
-      function NDestroy(value0) {
-          this.value0 = value0;
-      };
-      NDestroy.create = function (value0) {
-          return new NDestroy(value0);
-      };
-      return NDestroy;
-  })();
-  var _note = function (dictStrong) {
-      return Data_Lens_Lens.lens(function (v) {
-          return v.note;
-      })(function (v) {
-          return function (v1) {
-              return {
-                  note: v1,
-                  deleteAsk: v.deleteAsk,
-                  destroyed: v.destroyed,
-                  edit: v.edit,
-                  edit_note: v.edit_note
-              };
-          };
-      })(dictStrong);
-  };
-  var _edit_note = function (dictStrong) {
-      return Data_Lens_Lens.lens(function (v) {
-          return v.edit_note;
-      })(function (v) {
-          return function (v1) {
-              return {
-                  edit_note: v1,
-                  deleteAsk: v.deleteAsk,
-                  destroyed: v.destroyed,
-                  edit: v.edit,
-                  note: v.note
-              };
-          };
-      })(dictStrong);
-  };
-  var _edit = function (dictStrong) {
-      return Data_Lens_Lens.lens(function (v) {
-          return v.edit;
-      })(function (v) {
-          return function (v1) {
-              return {
-                  edit: v1,
-                  deleteAsk: v.deleteAsk,
-                  destroyed: v.destroyed,
-                  edit_note: v.edit_note,
-                  note: v.note
-              };
-          };
-      })(dictStrong);
-  };
-  var nnote = function (st$prime) {
-      var render = function (v) {
-          var toTextarea = function (input) {
-              return Data_Array.drop(1)(Data_Foldable.foldMap(Data_Foldable.foldableArray)(Data_Monoid.monoidArray)(function (x) {
-                  return [ Halogen_HTML_Elements.br_, Halogen_HTML_Core.text(x) ];
-              })(Data_String_Common.split("\x0a")(input)));
-          };
-          var mmoment = function (n) {
-              return Globals.mmoment8601(n.created);
-          };
-          var renderNote = Halogen_HTML_Elements.div([ Halogen_HTML_Properties.id_(Data_Show.show(Data_Show.showInt)(v.note.id)), Util.class_("note w-100 mw7 pa1 mb2") ])(Data_Semigroup.append(Data_Semigroup.semigroupArray)([ Halogen_HTML_Elements.div([ Util.class_("display") ])([ Halogen_HTML_Elements.div([ Util.class_("link f5 lh-title") ])([ Halogen_HTML_Core.text((function () {
-              var $24 = Data_String_Common["null"](v.note.title);
-              if ($24) {
-                  return "[no title]";
-              };
-              return v.note.title;
-          })()) ]), Halogen_HTML_Elements.br_, (function () {
-              if (v.note.isMarkdown) {
-                  return Halogen_HTML_Elements.div([ Util.class_("description mt1") ])([ Halogen_HTML.slot(Data_Unit.unit)(Component_Markdown.component)(v.note.text)(Data_Void.absurd) ]);
-              };
-              return Halogen_HTML_Elements.div([ Util.class_("description mt1 mid-gray") ])(toTextarea(v.note.text));
-          })(), Halogen_HTML_Elements.div([ Util.class_("link f7 dib gray w4"), Halogen_HTML_Properties.title(Data_Maybe.maybe(v.note.created)(Data_Tuple.snd)(mmoment(v.note))) ])([ Halogen_HTML_Core.text(Data_Maybe.maybe("\xa0")(Data_Tuple.fst)(mmoment(v.note))) ]) ]) ])([ Halogen_HTML_Elements.div([ Util.class_("edit_links db mt3") ])([ Halogen_HTML_Elements.button([ Halogen_HTML_Properties.type_(Halogen_HTML_Core.buttonTypeIsProp)(DOM_HTML_Indexed_ButtonType.ButtonButton.value), Halogen_HTML_Events.onClick(Halogen_HTML_Events.input_(NEdit.create(true))), Util.class_("edit light-silver hover-blue") ])([ Halogen_HTML_Core.text("edit\xa0\xa0") ]), Halogen_HTML_Elements.div([ Util.class_("delete_link di") ])([ Halogen_HTML_Elements.button([ Halogen_HTML_Properties.type_(Halogen_HTML_Core.buttonTypeIsProp)(DOM_HTML_Indexed_ButtonType.ButtonButton.value), Halogen_HTML_Events.onClick(Halogen_HTML_Events.input_(NDeleteAsk.create(true))), Util.class_("delete light-silver hover-blue" + Data_Monoid.guard(Data_Monoid.monoidString)(v.deleteAsk)(" dn")) ])([ Halogen_HTML_Core.text("delete") ]), Halogen_HTML_Elements.span([ Util.class_("confirm red" + Data_Monoid.guard(Data_Monoid.monoidString)(!v.deleteAsk)(" dn")) ])([ Halogen_HTML_Elements.button([ Halogen_HTML_Properties.type_(Halogen_HTML_Core.buttonTypeIsProp)(DOM_HTML_Indexed_ButtonType.ButtonButton.value), Halogen_HTML_Events.onClick(Halogen_HTML_Events.input_(NDeleteAsk.create(false))) ])([ Halogen_HTML_Core.text("cancel\xa0/\xa0") ]), Halogen_HTML_Elements.button([ Halogen_HTML_Properties.type_(Halogen_HTML_Core.buttonTypeIsProp)(DOM_HTML_Indexed_ButtonType.ButtonButton.value), Halogen_HTML_Events.onClick(Halogen_HTML_Events.input_(NDestroy.create)), Util.class_("red") ])([ Halogen_HTML_Core.text("destroy") ]) ]) ]) ]) ]));
-          var editField = function (f) {
-              return function ($59) {
-                  return Halogen_HTML_Events.input(NEditField.create)(f($59));
-              };
-          };
-          var renderNote_edit = Halogen_HTML_Elements.form([ Halogen_HTML_Events.onSubmit(Halogen_HTML_Events.input(NEditSubmit.create)) ])([ Halogen_HTML_Elements.p([ Util.class_("mt2 mb1") ])([ Halogen_HTML_Core.text("title:") ]), Halogen_HTML_Elements.input([ Halogen_HTML_Properties.type_(Halogen_HTML_Core.inputTypeIsProp)(DOM_HTML_Indexed_InputType.InputText.value), Util.class_("title w-100 mb1 pt1 f7 edit_form_input"), Halogen_HTML_Properties.name("title"), Halogen_HTML_Properties.value(v.edit_note.title), Halogen_HTML_Events.onValueChange(editField(Etitle.create)) ]), Halogen_HTML_Elements.br_, Halogen_HTML_Elements.p([ Util.class_("mt2 mb1") ])([ Halogen_HTML_Core.text("description:") ]), Halogen_HTML_Elements.textarea([ Util.class_("description w-100 mb1 pt1 f7 edit_form_input"), Halogen_HTML_Properties.name("text"), Halogen_HTML_Properties.rows(30), Halogen_HTML_Properties.value(v.edit_note.text), Halogen_HTML_Events.onValueChange(editField(Etext.create)) ]), Halogen_HTML_Elements.div([ Util.class_("edit_form_checkboxes mb3") ])([ Halogen_HTML_Elements.input([ Halogen_HTML_Properties.type_(Halogen_HTML_Core.inputTypeIsProp)(DOM_HTML_Indexed_InputType.InputCheckbox.value), Util.class_("is-markdown pointer"), Halogen_HTML_Properties.id_("edit_ismarkdown"), Halogen_HTML_Properties.name("ismarkdown"), Halogen_HTML_Properties.checked(v.edit_note.isMarkdown), Halogen_HTML_Events.onChecked(editField(EisMarkdown.create)) ]), Halogen_HTML_Core.text(" "), Halogen_HTML_Elements.label([ Halogen_HTML_Properties["for"]("edit_ismarkdown"), Util.class_("mr2") ])([ Halogen_HTML_Core.text("use markdown?") ]), Halogen_HTML_Elements.br_ ]), Halogen_HTML_Elements.input([ Halogen_HTML_Properties.type_(Halogen_HTML_Core.inputTypeIsProp)(DOM_HTML_Indexed_InputType.InputSubmit.value), Util.class_("mr1 pv1 ph2 dark-gray ba b--moon-gray bg-near-white pointer rdim"), Halogen_HTML_Properties.value("save") ]), Halogen_HTML_Core.text(" "), Halogen_HTML_Elements.input([ Halogen_HTML_Properties.type_(Halogen_HTML_Core.inputTypeIsProp)(DOM_HTML_Indexed_InputType.InputReset.value), Util.class_("pv1 ph2 dark-gray ba b--moon-gray bg-near-white pointer rdim"), Halogen_HTML_Properties.value("cancel"), Halogen_HTML_Events.onClick(Halogen_HTML_Events.input_(NEdit.create(false))) ]) ]);
-          var display_destroyed = Halogen_HTML_Elements.p([ Util.class_("red") ])([ Halogen_HTML_Core.text("you killed this note") ]);
-          if (v.destroyed) {
-              return display_destroyed;
-          };
-          if (v.edit) {
-              return renderNote_edit;
-          };
-          return renderNote;
-      };
-      var mkState = function (note$prime) {
-          return {
-              note: note$prime,
-              edit_note: note$prime,
-              deleteAsk: false,
-              edit: note$prime.id <= 0,
-              destroyed: false
-          };
-      };
-      var app = Globals["app'"](Data_Unit.unit);
-      var $$eval = function (v) {
-          if (v instanceof NNop) {
-              return Control_Applicative.pure(Halogen_Query_HalogenM.applicativeHalogenM)(v.value0);
-          };
-          if (v instanceof NEditField) {
-              return Control_Bind.discard(Control_Bind.discardUnit)(Halogen_Query_HalogenM.bindHalogenM)(Data_Lens_Setter.modifying(Halogen_Query_HalogenM.monadStateHalogenM)(_edit_note(Data_Profunctor_Strong.strongFn))((function () {
-                  if (v.value0 instanceof Etitle) {
-                      return function (v1) {
-                          return {
-                              id: v1.id,
-                              slug: v1.slug,
-                              title: v.value0.value0,
-                              text: v1.text,
-                              length: v1.length,
-                              isMarkdown: v1.isMarkdown,
-                              created: v1.created,
-                              updated: v1.updated
-                          };
-                      };
-                  };
-                  if (v.value0 instanceof Etext) {
-                      return function (v1) {
-                          return {
-                              id: v1.id,
-                              slug: v1.slug,
-                              title: v1.title,
-                              text: v.value0.value0,
-                              length: v1.length,
-                              isMarkdown: v1.isMarkdown,
-                              created: v1.created,
-                              updated: v1.updated
-                          };
-                      };
-                  };
-                  if (v.value0 instanceof EisMarkdown) {
-                      return function (v1) {
-                          return {
-                              id: v1.id,
-                              slug: v1.slug,
-                              title: v1.title,
-                              text: v1.text,
-                              length: v1.length,
-                              isMarkdown: v.value0.value0,
-                              created: v1.created,
-                              updated: v1.updated
-                          };
-                      };
-                  };
-                  throw new Error("Failed pattern match at Component.NNote (line 158, column 19 - line 161, column 44): " + [ v.value0.constructor.name ]);
-              })()))(function () {
-                  return Control_Applicative.pure(Halogen_Query_HalogenM.applicativeHalogenM)(v.value1);
-              });
-          };
-          if (v instanceof NDeleteAsk) {
-              return Control_Bind.discard(Control_Bind.discardUnit)(Halogen_Query_HalogenM.bindHalogenM)(Control_Monad_State_Class.modify_(Halogen_Query_HalogenM.monadStateHalogenM)(function (v1) {
-                  var $38 = {};
-                  for (var $39 in v1) {
-                      if ({}.hasOwnProperty.call(v1, $39)) {
-                          $38[$39] = v1[$39];
-                      };
-                  };
-                  $38.deleteAsk = v.value0;
-                  return $38;
-              }))(function () {
-                  return Control_Applicative.pure(Halogen_Query_HalogenM.applicativeHalogenM)(v.value1);
-              });
-          };
-          if (v instanceof NDestroy) {
-              return Control_Bind.bind(Halogen_Query_HalogenM.bindHalogenM)(Data_Lens_Getter.use(Halogen_Query_HalogenM.monadStateHalogenM)(_note(Data_Lens_Internal_Forget.strongForget)))(function (v1) {
-                  return Control_Bind.discard(Control_Bind.discardUnit)(Halogen_Query_HalogenM.bindHalogenM)(Data_Functor["void"](Halogen_Query_HalogenM.functorHalogenM)(Effect_Aff_Class.liftAff(Halogen_Query_HalogenM.monadAffHalogenM(Effect_Aff_Class.monadAffAff))(App.destroyNote(v1.id))))(function () {
-                      return Control_Bind.discard(Control_Bind.discardUnit)(Halogen_Query_HalogenM.bindHalogenM)(Control_Monad_State_Class.modify_(Halogen_Query_HalogenM.monadStateHalogenM)(function (v2) {
-                          var $44 = {};
-                          for (var $45 in v2) {
-                              if ({}.hasOwnProperty.call(v2, $45)) {
-                                  $44[$45] = v2[$45];
-                              };
-                          };
-                          $44.destroyed = true;
-                          return $44;
-                      }))(function () {
-                          return Control_Applicative.pure(Halogen_Query_HalogenM.applicativeHalogenM)(v.value0);
-                      });
-                  });
-              });
-          };
-          if (v instanceof NEdit) {
-              return Control_Bind.bind(Halogen_Query_HalogenM.bindHalogenM)(Data_Lens_Getter.use(Halogen_Query_HalogenM.monadStateHalogenM)(_note(Data_Lens_Internal_Forget.strongForget)))(function (v1) {
-                  return Control_Bind.discard(Control_Bind.discardUnit)(Halogen_Query_HalogenM.bindHalogenM)(Data_Lens_Setter.assign(Halogen_Query_HalogenM.monadStateHalogenM)(_edit_note(Data_Profunctor_Strong.strongFn))(v1))(function () {
-                      return Control_Bind.discard(Control_Bind.discardUnit)(Halogen_Query_HalogenM.bindHalogenM)(Data_Lens_Setter.assign(Halogen_Query_HalogenM.monadStateHalogenM)(_edit(Data_Profunctor_Strong.strongFn))(v.value0))(function () {
-                          return Control_Applicative.pure(Halogen_Query_HalogenM.applicativeHalogenM)(v.value1);
-                      });
-                  });
-              });
-          };
-          if (v instanceof NEditSubmit) {
-              return Control_Bind.discard(Control_Bind.discardUnit)(Halogen_Query_HalogenM.bindHalogenM)(Effect_Class.liftEffect(Halogen_Query_HalogenM.monadEffectHalogenM(Effect_Aff.monadEffectAff))(Web_Event_Event.preventDefault(v.value0)))(function () {
-                  return Control_Bind.bind(Halogen_Query_HalogenM.bindHalogenM)(Data_Lens_Getter.use(Halogen_Query_HalogenM.monadStateHalogenM)(_edit_note(Data_Lens_Internal_Forget.strongForget)))(function (v1) {
-                      return Control_Bind.bind(Halogen_Query_HalogenM.bindHalogenM)(Effect_Aff_Class.liftAff(Halogen_Query_HalogenM.monadAffHalogenM(Effect_Aff_Class.monadAffAff))(App.editNote(v1)))(function (v2) {
-                          if (v2.body instanceof Data_Either.Left) {
-                              return Control_Applicative.pure(Halogen_Query_HalogenM.applicativeHalogenM)(v.value1);
-                          };
-                          if (v2.body instanceof Data_Either.Right) {
-                              return Control_Bind.discard(Control_Bind.discardUnit)(Halogen_Query_HalogenM.bindHalogenM)((function () {
-                                  var $55 = v1.id === 0;
-                                  if ($55) {
-                                      return Effect_Class.liftEffect(Halogen_Query_HalogenM.monadEffectHalogenM(Effect_Aff.monadEffectAff))(Control_Bind.bindFlipped(Effect.bindEffect)(Web_HTML_Location.setHref(Util.fromNullableStr(app.noteR)))(Util["_loc"]));
-                                  };
-                                  return Control_Bind.discard(Control_Bind.discardUnit)(Halogen_Query_HalogenM.bindHalogenM)(Data_Lens_Setter.assign(Halogen_Query_HalogenM.monadStateHalogenM)(_note(Data_Profunctor_Strong.strongFn))(v1))(function () {
-                                      return Data_Lens_Setter.assign(Halogen_Query_HalogenM.monadStateHalogenM)(_edit(Data_Profunctor_Strong.strongFn))(false);
-                                  });
-                              })())(function () {
-                                  return Control_Applicative.pure(Halogen_Query_HalogenM.applicativeHalogenM)(v.value1);
-                              });
-                          };
-                          throw new Error("Failed pattern match at Component.NNote (line 188, column 5 - line 197, column 14): " + [ v2.body.constructor.name ]);
-                      });
-                  });
-              });
-          };
-          throw new Error("Failed pattern match at Component.NNote (line 153, column 3 - line 153, column 72): " + [ v.constructor.name ]);
-      };
-      return Halogen_Component.parentComponent(Data_Ord.ordUnit)({
-          initialState: Data_Function["const"](mkState(st$prime)),
-          render: render,
-          "eval": $$eval,
-          receiver: Data_Function["const"](Data_Maybe.Nothing.value)
-      });
-  };
-  exports["NNop"] = NNop;
-  exports["NEditField"] = NEditField;
-  exports["NEditSubmit"] = NEditSubmit;
-  exports["NEdit"] = NEdit;
-  exports["NDeleteAsk"] = NDeleteAsk;
-  exports["NDestroy"] = NDestroy;
-  exports["_note"] = _note;
-  exports["_edit_note"] = _edit_note;
-  exports["_edit"] = _edit;
-  exports["Etitle"] = Etitle;
-  exports["Etext"] = Etext;
-  exports["EisMarkdown"] = EisMarkdown;
-  exports["nnote"] = nnote;
-})(PS["Component.NNote"] = PS["Component.NNote"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.2
-  "use strict";
-  var Control_Monad_Error_Class = PS["Control.Monad.Error.Class"];
-  var Control_Monad_Reader_Trans = PS["Control.Monad.Reader.Trans"];
-  var Control_Monad_Trans_Class = PS["Control.Monad.Trans.Class"];
-  var Control_Semigroupoid = PS["Control.Semigroupoid"];
-  var Effect_Aff = PS["Effect.Aff"];
-  var Prelude = PS["Prelude"];
-  var MonadFork = function (Functor1, Monad0, fork, join, suspend) {
-      this.Functor1 = Functor1;
-      this.Monad0 = Monad0;
-      this.fork = fork;
-      this.join = join;
-      this.suspend = suspend;
-  };
-  var suspend = function (dict) {
-      return dict.suspend;
-  };
-  var monadForkAff = new MonadFork(function () {
-      return Effect_Aff.functorFiber;
-  }, function () {
-      return Effect_Aff.monadAff;
-  }, Effect_Aff.forkAff, Effect_Aff.joinFiber, Effect_Aff.suspendAff);
-  var join = function (dict) {
-      return dict.join;
-  };
-  var fork = function (dict) {
-      return dict.fork;
-  };
-  exports["fork"] = fork;
-  exports["join"] = join;
-  exports["suspend"] = suspend;
-  exports["MonadFork"] = MonadFork;
-  exports["monadForkAff"] = monadForkAff;
-})(PS["Control.Monad.Fork.Class"] = PS["Control.Monad.Fork.Class"] || {});
-(function(exports) {
-    "use strict";
-
-  exports.warn = function (s) {
-    return function () {
-      console.warn(s);
-      return {};
-    };
-  };
-})(PS["Effect.Console"] = PS["Effect.Console"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.2
-  "use strict";
-  var $foreign = PS["Effect.Console"];
-  var Data_Show = PS["Data.Show"];
-  var Data_Unit = PS["Data.Unit"];
-  var Effect = PS["Effect"];
-  exports["warn"] = $foreign.warn;
-})(PS["Effect.Console"] = PS["Effect.Console"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.2
-  "use strict";
-  var Control_Applicative = PS["Control.Applicative"];
-  var Control_Bind = PS["Control.Bind"];
-  var Data_Foldable = PS["Data.Foldable"];
-  var Data_Function = PS["Data.Function"];
-  var Data_Functor = PS["Data.Functor"];
-  var Data_List = PS["Data.List"];
-  var Data_List_Types = PS["Data.List.Types"];
-  var Data_Map = PS["Data.Map"];
-  var Data_Map_Internal = PS["Data.Map.Internal"];
-  var Data_Maybe = PS["Data.Maybe"];
-  var Data_Traversable = PS["Data.Traversable"];
-  var Effect = PS["Effect"];
-  var Effect_Aff = PS["Effect.Aff"];
-  var Effect_Ref = PS["Effect.Ref"];
-  var Halogen_Component = PS["Halogen.Component"];
-  var Halogen_Data_OrdBox = PS["Halogen.Data.OrdBox"];
-  var Prelude = PS["Prelude"];
-  var Unsafe_Coerce = PS["Unsafe.Coerce"];
-  var Web_DOM = PS["Web.DOM"];
-  var unRenderStateX = Unsafe_Coerce.unsafeCoerce;
-  var unDriverStateX = Unsafe_Coerce.unsafeCoerce;
-  var renderStateX_ = function (dictApplicative) {
-      return function (f) {
-          return unDriverStateX(function (st) {
-              return Data_Foldable.traverse_(dictApplicative)(Data_Foldable.foldableMaybe)(f)(st.rendering);
-          });
-      };
-  };
-  var mkRenderStateX = function (v) {
-      return Unsafe_Coerce.unsafeCoerce;
-  };
-  var renderStateX = function (dictFunctor) {
-      return function (f) {
-          return unDriverStateX(function (st) {
-              return mkRenderStateX(st.prjQuery)(f(st.rendering));
-          });
-      };
-  };
-  var mkDriverStateXRef = Unsafe_Coerce.unsafeCoerce;
-  var initDriverState = function (component) {
-      return function (input) {
-          return function (handler) {
-              return function (prjQuery) {
-                  return function (lchs) {
-                      return function __do() {
-                          var v = Effect_Ref["new"]({})();
-                          var v1 = Effect_Ref["new"](Data_Map_Internal.empty)();
-                          var v2 = Effect_Ref["new"](Data_Map_Internal.empty)();
-                          var v3 = Effect_Ref["new"](Data_Functor.voidLeft(Data_Maybe.functorMaybe)(component.initializer)(Data_List_Types.Nil.value))();
-                          var v4 = Effect_Ref["new"](new Data_Maybe.Just(Data_List_Types.Nil.value))();
-                          var v5 = Effect_Ref["new"](Data_Maybe.Nothing.value)();
-                          var v6 = Effect_Ref["new"](0)();
-                          var v7 = Effect_Ref["new"](new Data_Maybe.Just(Data_Map_Internal.empty))();
-                          var ds = {
-                              component: component,
-                              state: component.initialState(input),
-                              refs: Data_Map_Internal.empty,
-                              children: Data_Map_Internal.empty,
-                              childrenIn: v1,
-                              childrenOut: v2,
-                              selfRef: v,
-                              handler: handler,
-                              pendingQueries: v3,
-                              pendingOuts: v4,
-                              pendingHandlers: v5,
-                              rendering: Data_Maybe.Nothing.value,
-                              prjQuery: prjQuery,
-                              fresh: v6,
-                              subscriptions: v7,
-                              lifecycleHandlers: lchs
-                          };
-                          Effect_Ref.write(ds)(v)();
-                          return mkDriverStateXRef(v);
-                      };
-                  };
-              };
-          };
-      };
-  };
-  exports["unDriverStateX"] = unDriverStateX;
-  exports["mkDriverStateXRef"] = mkDriverStateXRef;
-  exports["renderStateX"] = renderStateX;
-  exports["renderStateX_"] = renderStateX_;
-  exports["unRenderStateX"] = unRenderStateX;
-  exports["initDriverState"] = initDriverState;
-})(PS["Halogen.Aff.Driver.State"] = PS["Halogen.Aff.Driver.State"] || {});
-(function(exports) {
-    "use strict";
-
-  exports.reallyUnsafeRefEq = function (a) {
-    return function (b) {
-      return a === b;
-    };
-  };
-})(PS["Unsafe.Reference"] = PS["Unsafe.Reference"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.2
-  "use strict";
-  var $foreign = PS["Unsafe.Reference"]; 
-  var unsafeRefEq = $foreign.reallyUnsafeRefEq;
-  exports["unsafeRefEq"] = unsafeRefEq;
-})(PS["Unsafe.Reference"] = PS["Unsafe.Reference"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.2
-  "use strict";
-  var Control_Applicative = PS["Control.Applicative"];
-  var Control_Applicative_Free = PS["Control.Applicative.Free"];
-  var Control_Bind = PS["Control.Bind"];
-  var Control_Coroutine = PS["Control.Coroutine"];
-  var Control_Monad_Error_Class = PS["Control.Monad.Error.Class"];
-  var Control_Monad_Fork_Class = PS["Control.Monad.Fork.Class"];
-  var Control_Monad_Free = PS["Control.Monad.Free"];
-  var Control_Monad_Free_Trans = PS["Control.Monad.Free.Trans"];
-  var Control_Monad_Trans_Class = PS["Control.Monad.Trans.Class"];
-  var Control_Parallel = PS["Control.Parallel"];
-  var Control_Parallel_Class = PS["Control.Parallel.Class"];
-  var Control_Semigroupoid = PS["Control.Semigroupoid"];
-  var Data_Boolean = PS["Data.Boolean"];
-  var Data_Coyoneda = PS["Data.Coyoneda"];
-  var Data_Eq = PS["Data.Eq"];
-  var Data_Foldable = PS["Data.Foldable"];
-  var Data_Function = PS["Data.Function"];
-  var Data_Functor = PS["Data.Functor"];
-  var Data_List = PS["Data.List"];
-  var Data_List_Types = PS["Data.List.Types"];
-  var Data_Map = PS["Data.Map"];
-  var Data_Map_Internal = PS["Data.Map.Internal"];
-  var Data_Maybe = PS["Data.Maybe"];
-  var Data_Ord = PS["Data.Ord"];
-  var Data_Semiring = PS["Data.Semiring"];
-  var Data_Set = PS["Data.Set"];
-  var Data_Tuple = PS["Data.Tuple"];
-  var Effect = PS["Effect"];
-  var Effect_Aff = PS["Effect.Aff"];
-  var Effect_Class = PS["Effect.Class"];
-  var Effect_Exception = PS["Effect.Exception"];
-  var Effect_Ref = PS["Effect.Ref"];
-  var Halogen_Aff_Driver_State = PS["Halogen.Aff.Driver.State"];
-  var Halogen_Data_OrdBox = PS["Halogen.Data.OrdBox"];
-  var Halogen_Query_EventSource = PS["Halogen.Query.EventSource"];
-  var Halogen_Query_ForkF = PS["Halogen.Query.ForkF"];
-  var Halogen_Query_HalogenM = PS["Halogen.Query.HalogenM"];
-  var Halogen_Query_InputF = PS["Halogen.Query.InputF"];
-  var Prelude = PS["Prelude"];
-  var Unsafe_Reference = PS["Unsafe.Reference"];                 
-  var queuingHandler = function (handler) {
-      return function (ref) {
-          return function (message) {
-              return Control_Bind.bind(Effect_Aff.bindAff)(Effect_Class.liftEffect(Effect_Aff.monadEffectAff)(Effect_Ref.read(ref)))(function (v) {
-                  if (v instanceof Data_Maybe.Nothing) {
-                      return handler(message);
-                  };
-                  if (v instanceof Data_Maybe.Just) {
-                      return Effect_Class.liftEffect(Effect_Aff.monadEffectAff)(Effect_Ref.write(new Data_Maybe.Just(new Data_List_Types.Cons(handler(message), v.value0)))(ref));
-                  };
-                  throw new Error("Failed pattern match at Halogen.Aff.Driver.Eval (line 171, column 3 - line 175, column 59): " + [ v.constructor.name ]);
-              });
-          };
-      };
-  };
-  var handleLifecycle = function (lchs) {
-      return function (f) {
-          return Control_Bind.discard(Control_Bind.discardUnit)(Effect_Aff.bindAff)(Effect_Class.liftEffect(Effect_Aff.monadEffectAff)(Effect_Ref.write({
-              initializers: Data_List_Types.Nil.value,
-              finalizers: Data_List_Types.Nil.value
-          })(lchs)))(function () {
-              return Control_Bind.bind(Effect_Aff.bindAff)(Effect_Class.liftEffect(Effect_Aff.monadEffectAff)(f))(function (v) {
-                  return Control_Bind.bind(Effect_Aff.bindAff)(Effect_Class.liftEffect(Effect_Aff.monadEffectAff)(Effect_Ref.read(lchs)))(function (v1) {
-                      return Control_Bind.discard(Control_Bind.discardUnit)(Effect_Aff.bindAff)(Data_Foldable.traverse_(Effect_Aff.applicativeAff)(Data_List_Types.foldableList)(Control_Monad_Fork_Class.fork(Control_Monad_Fork_Class.monadForkAff))(v1.finalizers))(function () {
-                          return Control_Bind.discard(Control_Bind.discardUnit)(Effect_Aff.bindAff)(Control_Parallel.parSequence_(Effect_Aff.parallelAff)(Data_List_Types.foldableList)(v1.initializers))(function () {
-                              return Control_Applicative.pure(Effect_Aff.applicativeAff)(v);
-                          });
-                      });
-                  });
-              });
-          });
-      };
-  };
-  var $$eval = function (render) {
-      return function (r) {
-          var go = function (ref) {
-              return function (v) {
-                  if (v instanceof Halogen_Query_HalogenM.State) {
-                      return Control_Bind.bind(Effect_Aff.bindAff)(Effect_Class.liftEffect(Effect_Aff.monadEffectAff)(Effect_Ref.read(ref)))(function (v1) {
-                          var v2 = v.value0(v1.state);
-                          if (Unsafe_Reference.unsafeRefEq(v1.state)(v2.value1)) {
-                              return Control_Applicative.pure(Effect_Aff.applicativeAff)(v2.value0);
-                          };
-                          if (Data_Boolean.otherwise) {
-                              return Control_Bind.discard(Control_Bind.discardUnit)(Effect_Aff.bindAff)(Effect_Class.liftEffect(Effect_Aff.monadEffectAff)(Effect_Ref.write({
-                                  component: v1.component,
-                                  state: v2.value1,
-                                  refs: v1.refs,
-                                  children: v1.children,
-                                  childrenIn: v1.childrenIn,
-                                  childrenOut: v1.childrenOut,
-                                  selfRef: v1.selfRef,
-                                  handler: v1.handler,
-                                  pendingQueries: v1.pendingQueries,
-                                  pendingOuts: v1.pendingOuts,
-                                  pendingHandlers: v1.pendingHandlers,
-                                  rendering: v1.rendering,
-                                  prjQuery: v1.prjQuery,
-                                  fresh: v1.fresh,
-                                  subscriptions: v1.subscriptions,
-                                  lifecycleHandlers: v1.lifecycleHandlers
-                              })(ref)))(function () {
-                                  return Control_Bind.discard(Control_Bind.discardUnit)(Effect_Aff.bindAff)(handleLifecycle(v1.lifecycleHandlers)(render(v1.lifecycleHandlers)(ref)))(function () {
-                                      return Control_Applicative.pure(Effect_Aff.applicativeAff)(v2.value0);
-                                  });
-                              });
-                          };
-                          throw new Error("Failed pattern match at Halogen.Aff.Driver.Eval (line 76, column 7 - line 82, column 21): " + [ v2.constructor.name ]);
-                      });
-                  };
-                  if (v instanceof Halogen_Query_HalogenM.Subscribe) {
-                      return Control_Bind.bind(Effect_Aff.bindAff)(Effect_Class.liftEffect(Effect_Aff.monadEffectAff)(Effect_Ref.read(ref)))(function (v1) {
-                          return Control_Bind.bind(Effect_Aff.bindAff)(Control_Monad_Fork_Class.fork(Control_Monad_Fork_Class.monadForkAff)(Control_Bind.bind(Effect_Aff.bindAff)(Halogen_Query_EventSource.unEventSource(v.value0))(function (v2) {
-                              return Control_Bind.bind(Effect_Aff.bindAff)(Effect_Class.liftEffect(Effect_Aff.monadEffectAff)(Effect_Ref["modify'"](function (i) {
-                                  return {
-                                      state: i + 1 | 0,
-                                      value: i
-                                  };
-                              })(v1.fresh)))(function (v3) {
-                                  var done$prime = Control_Bind.bind(Effect_Aff.bindAff)(Effect_Class.liftEffect(Effect_Aff.monadEffectAff)(Effect_Ref.read(v1.subscriptions)))(function (v4) {
-                                      return Control_Applicative.when(Effect_Aff.applicativeAff)(Data_Maybe.maybe(false)(Data_Map_Internal.member(Data_Ord.ordInt)(v3))(v4))(Effect_Class.liftEffect(Effect_Aff.monadEffectAff)(Effect_Ref.modify_(Data_Functor.map(Data_Maybe.functorMaybe)(Data_Map_Internal["delete"](Data_Ord.ordInt)(v3)))(v1.subscriptions)));
-                                  });
-                                  return Control_Bind.discard(Control_Bind.discardUnit)(Effect_Aff.bindAff)(Effect_Class.liftEffect(Effect_Aff.monadEffectAff)(Effect_Ref.modify_(Data_Functor.map(Data_Maybe.functorMaybe)(Data_Map_Internal.insert(Data_Ord.ordInt)(v3)(done$prime)))(v1.subscriptions)))(function () {
-                                      var consumer = Control_Bind.bind(Control_Monad_Free_Trans.bindFreeT(Control_Coroutine.functorAwait)(Effect_Aff.monadAff))(Control_Coroutine["await"](Effect_Aff.monadAff))(function (v4) {
-                                          return Control_Bind.bind(Control_Monad_Free_Trans.bindFreeT(Control_Coroutine.functorAwait)(Effect_Aff.monadAff))(Control_Monad_Trans_Class.lift(Control_Monad_Free_Trans.monadTransFreeT(Control_Coroutine.functorAwait))(Effect_Aff.monadAff)(Effect_Class.liftEffect(Effect_Aff.monadEffectAff)(Effect_Ref.read(v1.subscriptions))))(function (v5) {
-                                              return Control_Applicative.when(Control_Monad_Free_Trans.applicativeFreeT(Control_Coroutine.functorAwait)(Effect_Aff.monadAff))(Data_Maybe.isJust(v5))(Control_Bind.bind(Control_Monad_Free_Trans.bindFreeT(Control_Coroutine.functorAwait)(Effect_Aff.monadAff))(Control_Monad_Trans_Class.lift(Control_Monad_Free_Trans.monadTransFreeT(Control_Coroutine.functorAwait))(Effect_Aff.monadAff)(evalF(ref)(v4)))(function (v6) {
-                                                  return Control_Applicative.when(Control_Monad_Free_Trans.applicativeFreeT(Control_Coroutine.functorAwait)(Effect_Aff.monadAff))(Data_Eq.eq(Halogen_Query_EventSource.eqSubscribeStatus)(v6)(Halogen_Query_EventSource.Listening.value))(consumer);
-                                              }));
-                                          });
-                                      });
-                                      return Control_Bind.discard(Control_Bind.discardUnit)(Effect_Aff.bindAff)(Control_Coroutine.runProcess(Effect_Aff.monadRecAff)(Control_Coroutine.pullFrom(Effect_Aff.monadRecAff)(consumer)(v2.producer)))(function () {
-                                          return done$prime;
-                                      });
-                                  });
-                              });
-                          })))(function (v2) {
-                              return Control_Applicative.pure(Effect_Aff.applicativeAff)(v.value1);
-                          });
-                      });
-                  };
-                  if (v instanceof Halogen_Query_HalogenM.Lift) {
-                      return v.value0;
-                  };
-                  if (v instanceof Halogen_Query_HalogenM.Halt) {
-                      return Control_Monad_Error_Class.throwError(Effect_Aff.monadThrowAff)(Effect_Exception.error(v.value0));
-                  };
-                  if (v instanceof Halogen_Query_HalogenM.GetSlots) {
-                      return Control_Bind.bind(Effect_Aff.bindAff)(Effect_Class.liftEffect(Effect_Aff.monadEffectAff)(Effect_Ref.read(ref)))(function (v1) {
-                          return Control_Applicative.pure(Effect_Aff.applicativeAff)(v.value0(Data_Functor.map(Data_List_Types.functorList)(Halogen_Data_OrdBox.unOrdBox)(Data_List.fromFoldable(Data_Set.foldableSet)(Data_Map.keys(v1.children)))));
-                      });
-                  };
-                  if (v instanceof Halogen_Query_HalogenM.CheckSlot) {
-                      return Control_Bind.bind(Effect_Aff.bindAff)(Effect_Class.liftEffect(Effect_Aff.monadEffectAff)(Effect_Ref.read(ref)))(function (v1) {
-                          return Control_Applicative.pure(Effect_Aff.applicativeAff)(v.value1(Data_Map_Internal.member(Halogen_Data_OrdBox.ordOrdBox)(v1.component.mkOrdBox(v.value0))(v1.children)));
-                      });
-                  };
-                  if (v instanceof Halogen_Query_HalogenM.ChildQuery) {
-                      return evalChildQuery(ref)(v.value0)(v.value1);
-                  };
-                  if (v instanceof Halogen_Query_HalogenM.Raise) {
-                      return Control_Bind.bind(Effect_Aff.bindAff)(Effect_Class.liftEffect(Effect_Aff.monadEffectAff)(Effect_Ref.read(ref)))(function (v1) {
-                          return Control_Bind.discard(Control_Bind.discardUnit)(Effect_Aff.bindAff)(queuingHandler(v1.handler)(v1.pendingOuts)(v.value0))(function () {
-                              return Control_Applicative.pure(Effect_Aff.applicativeAff)(v.value1);
-                          });
-                      });
-                  };
-                  if (v instanceof Halogen_Query_HalogenM.Par) {
-                      return Control_Parallel_Class.sequential(Effect_Aff.parallelAff)(Control_Applicative_Free.retractFreeAp(Effect_Aff.applicativeParAff)(Control_Applicative_Free.hoistFreeAp(function ($103) {
-                          return Control_Parallel_Class.parallel(Effect_Aff.parallelAff)(evalM(ref)($103));
-                      })(v.value0)));
-                  };
-                  if (v instanceof Halogen_Query_HalogenM.Fork) {
-                      return Halogen_Query_ForkF.unFork(function (v1) {
-                          return Control_Bind.bind(Effect_Aff.bindAff)(Control_Monad_Fork_Class.fork(Control_Monad_Fork_Class.monadForkAff)(evalM(ref)(v1.value0)))(function (v2) {
-                              return Control_Applicative.pure(Effect_Aff.applicativeAff)(v1.value1(Data_Function.flip(Effect_Aff.killFiber)(v2)));
-                          });
-                      })(v.value0);
-                  };
-                  if (v instanceof Halogen_Query_HalogenM.GetRef) {
-                      return Control_Bind.bind(Effect_Aff.bindAff)(Effect_Class.liftEffect(Effect_Aff.monadEffectAff)(Effect_Ref.read(ref)))(function (v1) {
-                          return Control_Applicative.pure(Effect_Aff.applicativeAff)(v.value1(Data_Map_Internal.lookup(Data_Ord.ordString)(v.value0)(v1.refs)));
-                      });
-                  };
-                  throw new Error("Failed pattern match at Halogen.Aff.Driver.Eval (line 73, column 12 - line 128, column 33): " + [ v.constructor.name ]);
-              };
-          };
-          var evalM = function (ref) {
-              return function (v) {
-                  return Control_Monad_Free.foldFree(Effect_Aff.monadRecAff)(go(ref))(v);
-              };
-          };
-          var evalF = function (ref) {
-              return function (q) {
-                  return Control_Bind.bind(Effect_Aff.bindAff)(Effect_Class.liftEffect(Effect_Aff.monadEffectAff)(Effect_Ref.read(ref)))(function (v) {
-                      var v1 = v["component"]["eval"](q);
-                      return Control_Monad_Free.foldFree(Effect_Aff.monadRecAff)(go(ref))(v1);
-                  });
-              };
-          };
-          var evalChildQuery = function (ref) {
-              return function (p) {
-                  return Data_Coyoneda.unCoyoneda(function (k) {
-                      return function (q) {
-                          return Control_Bind.bind(Effect_Aff.bindAff)(Effect_Class.liftEffect(Effect_Aff.monadEffectAff)(Effect_Ref.read(ref)))(function (v) {
-                              var v1 = Data_Map_Internal.lookup(Halogen_Data_OrdBox.ordOrdBox)(v.component.mkOrdBox(p))(v.children);
-                              if (v1 instanceof Data_Maybe.Just) {
-                                  return Control_Bind.bind(Effect_Aff.bindAff)(Effect_Class.liftEffect(Effect_Aff.monadEffectAff)(Effect_Ref.read(v1.value0)))(function (v2) {
-                                      return Halogen_Aff_Driver_State.unDriverStateX(function (ds) {
-                                          var v3 = ds.prjQuery(q);
-                                          if (v3 instanceof Data_Maybe.Just) {
-                                              return Data_Functor.map(Effect_Aff.functorAff)(k)(evalF(ds.selfRef)(v3.value0));
-                                          };
-                                          if (v3 instanceof Data_Maybe.Nothing) {
-                                              return Control_Monad_Error_Class.throwError(Effect_Aff.monadThrowAff)(Effect_Exception.error("Query projection failed for child query"));
-                                          };
-                                          throw new Error("Failed pattern match at Halogen.Aff.Driver.Eval (line 141, column 32 - line 143, column 82): " + [ v3.constructor.name ]);
-                                      })(v2);
-                                  });
-                              };
-                              if (v1 instanceof Data_Maybe.Nothing) {
-                                  return Control_Monad_Error_Class.throwError(Effect_Aff.monadThrowAff)(Effect_Exception.error("Slot lookup failed for child query"));
-                              };
-                              throw new Error("Failed pattern match at Halogen.Aff.Driver.Eval (line 138, column 5 - line 144, column 73): " + [ v1.constructor.name ]);
-                          });
-                      };
-                  });
-              };
-          };
-          return function (v) {
-              if (v instanceof Halogen_Query_InputF.RefUpdate) {
-                  return Control_Bind.discard(Control_Bind.discardUnit)(Effect_Aff.bindAff)(Effect_Class.liftEffect(Effect_Aff.monadEffectAff)(Effect_Ref.modify_(function (v1) {
-                      return {
-                          component: v1.component,
-                          state: v1.state,
-                          refs: Data_Map_Internal.alter(Data_Ord.ordString)(Data_Function["const"](v.value1))(v.value0)(v1.refs),
-                          children: v1.children,
-                          childrenIn: v1.childrenIn,
-                          childrenOut: v1.childrenOut,
-                          selfRef: v1.selfRef,
-                          handler: v1.handler,
-                          pendingQueries: v1.pendingQueries,
-                          pendingOuts: v1.pendingOuts,
-                          pendingHandlers: v1.pendingHandlers,
-                          rendering: v1.rendering,
-                          prjQuery: v1.prjQuery,
-                          fresh: v1.fresh,
-                          subscriptions: v1.subscriptions,
-                          lifecycleHandlers: v1.lifecycleHandlers
-                      };
-                  })(r)))(function () {
-                      return Control_Applicative.pure(Effect_Aff.applicativeAff)(v.value2);
-                  });
-              };
-              if (v instanceof Halogen_Query_InputF.Query) {
-                  return evalF(r)(v.value0);
-              };
-              throw new Error("Failed pattern match at Halogen.Aff.Driver.Eval (line 59, column 3 - line 64, column 25): " + [ v.constructor.name ]);
-          };
-      };
-  };
-  exports["handleLifecycle"] = handleLifecycle;
-  exports["eval"] = $$eval;
-  exports["queuingHandler"] = queuingHandler;
-})(PS["Halogen.Aff.Driver.Eval"] = PS["Halogen.Aff.Driver.Eval"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.2
-  "use strict";
-  var Control_Applicative = PS["Control.Applicative"];
-  var Control_Bind = PS["Control.Bind"];
-  var Control_Coroutine = PS["Control.Coroutine"];
-  var Control_Monad_Fork_Class = PS["Control.Monad.Fork.Class"];
-  var Control_Monad_Rec_Class = PS["Control.Monad.Rec.Class"];
-  var Control_Parallel = PS["Control.Parallel"];
-  var Control_Semigroupoid = PS["Control.Semigroupoid"];
-  var Data_Either = PS["Data.Either"];
-  var Data_Foldable = PS["Data.Foldable"];
-  var Data_Function = PS["Data.Function"];
-  var Data_Functor = PS["Data.Functor"];
-  var Data_List = PS["Data.List"];
-  var Data_List_Types = PS["Data.List.Types"];
-  var Data_Map = PS["Data.Map"];
-  var Data_Map_Internal = PS["Data.Map.Internal"];
-  var Data_Maybe = PS["Data.Maybe"];
-  var Data_Ord = PS["Data.Ord"];
-  var Data_Semiring = PS["Data.Semiring"];
-  var Data_Traversable = PS["Data.Traversable"];
-  var Data_Tuple = PS["Data.Tuple"];
-  var Data_Unit = PS["Data.Unit"];
-  var Effect = PS["Effect"];
-  var Effect_Aff = PS["Effect.Aff"];
-  var Effect_Aff_AVar = PS["Effect.Aff.AVar"];
-  var Effect_Class = PS["Effect.Class"];
-  var Effect_Console = PS["Effect.Console"];
-  var Effect_Exception = PS["Effect.Exception"];
-  var Effect_Ref = PS["Effect.Ref"];
-  var Halogen = PS["Halogen"];
-  var Halogen_Aff_Driver_Eval = PS["Halogen.Aff.Driver.Eval"];
-  var Halogen_Aff_Driver_State = PS["Halogen.Aff.Driver.State"];
-  var Halogen_Component = PS["Halogen.Component"];
-  var Halogen_Data_OrdBox = PS["Halogen.Data.OrdBox"];
-  var Halogen_Query_InputF = PS["Halogen.Query.InputF"];
-  var Prelude = PS["Prelude"];                 
-  var newLifecycleHandlers = Effect_Ref["new"]({
-      initializers: Data_List_Types.Nil.value,
-      finalizers: Data_List_Types.Nil.value
-  });
-  var handleAff = Effect_Aff.runAff_(Data_Either.either(Effect_Exception.throwException)(Data_Function["const"](Control_Applicative.pure(Effect.applicativeEffect)(Data_Unit.unit))));
-  var runUI = function (renderSpec) {
-      return function (component) {
-          return function (i) {
-              var subscribe = function (fresh) {
-                  return function (ref) {
-                      return function (consumer) {
-                          return Control_Bind.bind(Effect_Aff.bindAff)(Effect_Aff_AVar.empty)(function (v) {
-                              return Control_Bind.bind(Effect_Aff.bindAff)(Effect_Class.liftEffect(Effect_Aff.monadEffectAff)(function __do() {
-                                  var v1 = Effect_Ref.read(fresh)();
-                                  Effect_Ref.modify_(function (v2) {
-                                      return v2 + 1 | 0;
-                                  })(fresh)();
-                                  Effect_Ref.modify_(Data_Map_Internal.insert(Data_Ord.ordInt)(v1)(v))(ref)();
-                                  return v1;
-                              }))(function (v1) {
-                                  var producer = Control_Coroutine.producer(Effect_Aff.monadAff)(Data_Functor.map(Effect_Aff.functorAff)(Data_Either.Left.create)(Effect_Aff_AVar.take(v)));
-                                  return Data_Functor["void"](Effect_Aff.functorAff)(Control_Monad_Fork_Class.fork(Control_Monad_Fork_Class.monadForkAff)(Control_Bind.discard(Control_Bind.discardUnit)(Effect_Aff.bindAff)(Control_Coroutine.runProcess(Effect_Aff.monadRecAff)(Control_Coroutine.connect(Effect_Aff.monadRecAff)(Effect_Aff.parallelAff)(producer)(consumer)))(function () {
-                                      return Control_Bind.discard(Control_Bind.discardUnit)(Effect_Aff.bindAff)(Effect_Class.liftEffect(Effect_Aff.monadEffectAff)(Effect_Ref.modify_(Data_Map_Internal["delete"](Data_Ord.ordInt)(v1))(ref)))(function () {
-                                          return Effect_Aff_AVar.kill(Effect_Exception.error("ended"))(v);
-                                      });
-                                  })));
-                              });
-                          });
-                      };
-                  };
-              };
-              var rootHandler = function (ref) {
-                  return function (message) {
-                      return Control_Bind.bind(Effect_Aff.bindAff)(Effect_Class.liftEffect(Effect_Aff.monadEffectAff)(Effect_Ref.read(ref)))(function (v) {
-                          return Data_Foldable.traverse_(Effect_Aff.applicativeAff)(Data_Map_Internal.foldableMap)(Control_Monad_Fork_Class.fork(Control_Monad_Fork_Class.monadForkAff))(Data_Functor.map(Data_Map_Internal.functorMap)(Effect_Aff_AVar.put(message))(v));
-                      });
-                  };
-              };
-              var handlePending = function (ref) {
-                  return function __do() {
-                      var v = Effect_Ref.read(ref)();
-                      Effect_Ref.write(Data_Maybe.Nothing.value)(ref)();
-                      return Data_Foldable.for_(Effect.applicativeEffect)(Data_Foldable.foldableMaybe)(v)(function ($63) {
-                          return handleAff(Data_Foldable.traverse_(Effect_Aff.applicativeAff)(Data_List_Types.foldableList)(Control_Monad_Fork_Class.fork(Control_Monad_Fork_Class.monadForkAff))(Data_List.reverse($63)));
-                      })();
-                  };
-              };
-              var cleanupSubscriptions = function (v) {
-                  return function __do() {
-                      Control_Bind.bindFlipped(Effect.bindEffect)(Data_Foldable.traverse_(Effect.applicativeEffect)(Data_Foldable.foldableMaybe)(function ($64) {
-                          return handleAff(Data_Foldable.traverse_(Effect_Aff.applicativeAff)(Data_Map_Internal.foldableMap)(Control_Monad_Fork_Class.fork(Control_Monad_Fork_Class.monadForkAff))($64));
-                      }))(Effect_Ref.read(v.subscriptions))();
-                      return Effect_Ref.write(Data_Maybe.Nothing.value)(v.subscriptions)();
-                  };
-              };
-              var squashChildInitializers = function (lchs) {
-                  return function (preInits) {
-                      return Halogen_Aff_Driver_State.unDriverStateX(function (st) {
-                          var parentInitializer = Data_Functor.map(Data_Maybe.functorMaybe)(function ($65) {
-                              return evalF(st.selfRef)(Halogen_Query_InputF.Query.create($65));
-                          })(st.component.initializer);
-                          return Effect_Ref.modify_(function (handlers) {
-                              return {
-                                  initializers: new Data_List_Types.Cons(Control_Bind.discard(Control_Bind.discardUnit)(Effect_Aff.bindAff)(Control_Parallel.parSequence_(Effect_Aff.parallelAff)(Data_List_Types.foldableList)(Data_List.reverse(handlers.initializers)))(function () {
-                                      return Control_Bind.discard(Control_Bind.discardUnit)(Effect_Aff.bindAff)(Data_Foldable.sequence_(Effect_Aff.applicativeAff)(Data_Foldable.foldableMaybe)(parentInitializer))(function () {
-                                          return Effect_Class.liftEffect(Effect_Aff.monadEffectAff)(function __do() {
-                                              handlePending(st.pendingQueries)();
-                                              return handlePending(st.pendingOuts)();
-                                          });
-                                      });
-                                  }), preInits),
-                                  finalizers: handlers.finalizers
-                              };
-                          })(lchs);
-                      });
-                  };
-              };
-              var runComponent = function (lchs) {
-                  return function (handler) {
-                      return function (j) {
-                          return function (prjQuery) {
-                              return Halogen_Component.unComponent(function (c) {
-                                  return function __do() {
-                                      var v = newLifecycleHandlers();
-                                      var v1 = Halogen_Aff_Driver_State.initDriverState(c)(j)(handler)(prjQuery)(v)();
-                                      var v2 = Effect_Ref.read(lchs)();
-                                      Effect_Ref.write({
-                                          initializers: Data_List_Types.Nil.value,
-                                          finalizers: v2.finalizers
-                                      })(lchs)();
-                                      Control_Bind.bindFlipped(Effect.bindEffect)(Halogen_Aff_Driver_State.unDriverStateX(function ($66) {
-                                          return render(lchs)((function (v3) {
-                                              return v3.selfRef;
-                                          })($66));
-                                      }))(Effect_Ref.read(v1))();
-                                      Control_Bind.bindFlipped(Effect.bindEffect)(squashChildInitializers(lchs)(v2.initializers))(Effect_Ref.read(v1))();
-                                      return v1;
-                                  };
-                              });
-                          };
-                      };
-                  };
-              };
-              var renderChild = function (lchs) {
-                  return function (handler) {
-                      return function (mkOrdBox) {
-                          return function (childrenInRef) {
-                              return function (childrenOutRef) {
-                                  return Halogen_Component.unComponentSlot(function (p) {
-                                      return function (ctor) {
-                                          return function (input) {
-                                              return function (inputQuery) {
-                                                  return function (outputQuery) {
-                                                      return function (prjQuery) {
-                                                          var ordP = mkOrdBox(p);
-                                                          return function __do() {
-                                                              var v = Effect_Ref.read(childrenInRef)();
-                                                              var v1 = (function () {
-                                                                  var v1 = Data_Map_Internal.pop(Halogen_Data_OrdBox.ordOrdBox)(ordP)(v);
-                                                                  if (v1 instanceof Data_Maybe.Just) {
-                                                                      Effect_Ref.write(v1.value0.value1)(childrenInRef)();
-                                                                      Data_Foldable.for_(Effect.applicativeEffect)(Data_Foldable.foldableMaybe)(inputQuery(input))(function (q) {
-                                                                          return function __do() {
-                                                                              var v2 = Effect_Ref.read(v1.value0.value0)();
-                                                                              return Halogen_Aff_Driver_State.unDriverStateX(function (st) {
-                                                                                  return Data_Foldable.for_(Effect.applicativeEffect)(Data_Foldable.foldableMaybe)(st.prjQuery(q))(function ($67) {
-                                                                                      return handleAff(evalF(st.selfRef)(Halogen_Query_InputF.Query.create($67)));
-                                                                                  });
-                                                                              })(v2)();
-                                                                          };
-                                                                      })();
-                                                                      return v1.value0.value0;
-                                                                  };
-                                                                  if (v1 instanceof Data_Maybe.Nothing) {
-                                                                      return runComponent(lchs)(function ($68) {
-                                                                          return Data_Maybe.maybe(Control_Applicative.pure(Effect_Aff.applicativeAff)(Data_Unit.unit))(handler)(outputQuery($68));
-                                                                      })(input)(prjQuery)(ctor)();
-                                                                  };
-                                                                  throw new Error("Failed pattern match at Halogen.Aff.Driver (line 258, column 14 - line 266, column 92): " + [ v1.constructor.name ]);
-                                                              })();
-                                                              var v2 = Data_Functor.map(Effect.functorEffect)(Data_Map_Internal.member(Halogen_Data_OrdBox.ordOrdBox)(ordP))(Effect_Ref.read(childrenOutRef))();
-                                                              Control_Applicative.when(Effect.applicativeEffect)(v2)(Effect_Console.warn("Halogen: Duplicate slot address was detected during rendering, unexpected results may occur"))();
-                                                              Effect_Ref.modify_(Data_Map_Internal.insert(Halogen_Data_OrdBox.ordOrdBox)(ordP)(v1))(childrenOutRef)();
-                                                              return Control_Bind.bind(Effect.bindEffect)(Effect_Ref.read(v1))(Halogen_Aff_Driver_State.renderStateX(Effect.functorEffect)(function (v3) {
-                                                                  if (v3 instanceof Data_Maybe.Nothing) {
-                                                                      return Effect_Exception["throw"]("Halogen internal error: child was not initialized in renderChild");
-                                                                  };
-                                                                  if (v3 instanceof Data_Maybe.Just) {
-                                                                      return Control_Applicative.pure(Effect.applicativeEffect)(renderSpec.renderChild(v3.value0));
-                                                                  };
-                                                                  throw new Error("Failed pattern match at Halogen.Aff.Driver (line 271, column 37 - line 273, column 50): " + [ v3.constructor.name ]);
-                                                              }))();
-                                                          };
-                                                      };
-                                                  };
-                                              };
-                                          };
-                                      };
-                                  });
-                              };
-                          };
-                      };
-                  };
-              };
-              var render = function (lchs) {
-                  return function ($$var) {
-                      return function __do() {
-                          var v = Effect_Ref.read($$var)();
-                          var v1 = Data_Functor.map(Effect.functorEffect)(Data_Maybe.isNothing)(Effect_Ref.read(v.pendingHandlers))();
-                          Control_Applicative.when(Effect.applicativeEffect)(v1)(Effect_Ref.write(new Data_Maybe.Just(Data_List_Types.Nil.value))(v.pendingHandlers))();
-                          Effect_Ref.write(Data_Map_Internal.empty)(v.childrenOut)();
-                          Effect_Ref.write(v.children)(v.childrenIn)();
-                          var handler = Halogen_Aff_Driver_Eval.queuingHandler(function ($69) {
-                              return Data_Functor["void"](Effect_Aff.functorAff)(evalF(v.selfRef)($69));
-                          })(v.pendingHandlers);
-                          var childHandler = Halogen_Aff_Driver_Eval.queuingHandler(function ($70) {
-                              return handler(Halogen_Query_InputF.Query.create($70));
-                          })(v.pendingQueries);
-                          var v2 = renderSpec.render(function ($71) {
-                              return handleAff(handler($71));
-                          })(renderChild(lchs)(childHandler)(v.component.mkOrdBox)(v.childrenIn)(v.childrenOut))(v.component.render(v.state))(v.rendering)();
-                          var v3 = Effect_Ref.read(v.childrenOut)();
-                          Control_Bind.bind(Effect.bindEffect)(Effect_Ref.read(v.childrenIn))(Data_Foldable.traverse_(Effect.applicativeEffect)(Data_Map_Internal.foldableMap)(function (childVar) {
-                              return function __do() {
-                                  var v4 = Effect_Ref.read(childVar)();
-                                  Halogen_Aff_Driver_State.renderStateX_(Effect.applicativeEffect)(renderSpec.removeChild)(v4)();
-                                  return finalize(lchs)(v4)();
-                              };
-                          }))();
-                          Effect_Ref.modify_(function (v4) {
-                              return {
-                                  rendering: new Data_Maybe.Just(v2),
-                                  children: v3,
-                                  component: v4.component,
-                                  state: v4.state,
-                                  refs: v4.refs,
-                                  childrenIn: v4.childrenIn,
-                                  childrenOut: v4.childrenOut,
-                                  selfRef: v4.selfRef,
-                                  handler: v4.handler,
-                                  pendingQueries: v4.pendingQueries,
-                                  pendingOuts: v4.pendingOuts,
-                                  pendingHandlers: v4.pendingHandlers,
-                                  prjQuery: v4.prjQuery,
-                                  fresh: v4.fresh,
-                                  subscriptions: v4.subscriptions,
-                                  lifecycleHandlers: v4.lifecycleHandlers
-                              };
-                          })(v.selfRef)();
-                          return Control_Applicative.when(Effect.applicativeEffect)(v1)(Data_Function.flip(Control_Monad_Rec_Class.tailRecM(Control_Monad_Rec_Class.monadRecEffect))(Data_Unit.unit)(function (v4) {
-                              return function __do() {
-                                  var v5 = Effect_Ref.read(v.pendingHandlers)();
-                                  Effect_Ref.write(new Data_Maybe.Just(Data_List_Types.Nil.value))(v.pendingHandlers)();
-                                  Data_Foldable.traverse_(Effect.applicativeEffect)(Data_Foldable.foldableMaybe)(function ($72) {
-                                      return handleAff(Data_Foldable.traverse_(Effect_Aff.applicativeAff)(Data_List_Types.foldableList)(Control_Monad_Fork_Class.fork(Control_Monad_Fork_Class.monadForkAff))(Data_List.reverse($72)));
-                                  })(v5)();
-                                  var v6 = Effect_Ref.read(v.pendingHandlers)();
-                                  var $57 = Data_Maybe.maybe(false)(Data_List["null"])(v6);
-                                  if ($57) {
-                                      return Data_Functor.voidLeft(Effect.functorEffect)(Effect_Ref.write(Data_Maybe.Nothing.value)(v.pendingHandlers))(new Control_Monad_Rec_Class.Done(Data_Unit.unit))();
-                                  };
-                                  return new Control_Monad_Rec_Class.Loop(Data_Unit.unit);
-                              };
-                          }))();
-                      };
-                  };
-              };
-              var finalize = function (lchs) {
-                  return Halogen_Aff_Driver_State.unDriverStateX(function (st) {
-                      return function __do() {
-                          cleanupSubscriptions(st)();
-                          Data_Foldable.for_(Effect.applicativeEffect)(Data_Foldable.foldableMaybe)(Data_Functor.map(Data_Maybe.functorMaybe)(function ($73) {
-                              return evalF(st.selfRef)(Halogen_Query_InputF.Query.create($73));
-                          })(st.component.finalizer))(function (f) {
-                              return Effect_Ref.modify_(function (handlers) {
-                                  return {
-                                      initializers: handlers.initializers,
-                                      finalizers: new Data_List_Types.Cons(f, handlers.finalizers)
-                                  };
-                              })(lchs);
-                          })();
-                          return Data_Foldable.for_(Effect.applicativeEffect)(Data_Map_Internal.foldableMap)(st.children)(Control_Bind.composeKleisliFlipped(Effect.bindEffect)(finalize(lchs))(Effect_Ref.read))();
-                      };
-                  });
-              };
-              var evalF = function (ref) {
-                  return Halogen_Aff_Driver_Eval["eval"](render)(ref);
-              };
-              var evalDriver = function (ref) {
-                  return function (prjQuery) {
-                      return function (q) {
-                          var v = prjQuery(q);
-                          if (v instanceof Data_Maybe.Just) {
-                              return evalF(ref)(new Halogen_Query_InputF.Query(v.value0));
-                          };
-                          if (v instanceof Data_Maybe.Nothing) {
-                              return Effect_Class.liftEffect(Effect_Aff.monadEffectAff)(Effect_Exception.throwException(Effect_Exception.error("Halogen internal error: query projection failed in runUI'")));
-                          };
-                          throw new Error("Failed pattern match at Halogen.Aff.Driver (line 136, column 5 - line 138, column 113): " + [ v.constructor.name ]);
-                      };
-                  };
-              };
-              return Control_Bind.bind(Effect_Aff.bindAff)(Effect_Class.liftEffect(Effect_Aff.monadEffectAff)(newLifecycleHandlers))(function (v) {
-                  return Control_Bind.bind(Effect_Aff.bindAff)(Effect_Class.liftEffect(Effect_Aff.monadEffectAff)(Effect_Ref["new"](0)))(function (v1) {
-                      return Halogen_Aff_Driver_Eval.handleLifecycle(v)(function __do() {
-                          var v2 = Effect_Ref["new"](Data_Map_Internal.empty)();
-                          return Control_Bind.bind(Effect.bindEffect)(Control_Bind.bind(Effect.bindEffect)(runComponent(v)(rootHandler(v2))(i)(Data_Maybe.Just.create)(component))(Effect_Ref.read))(Halogen_Aff_Driver_State.unDriverStateX(function (st) {
-                              return Control_Applicative.pure(Effect.applicativeEffect)({
-                                  query: evalDriver(st.selfRef)(st.prjQuery),
-                                  subscribe: subscribe(v1)(v2)
-                              });
-                          }))();
-                      });
-                  });
-              });
-          };
-      };
-  };
-  exports["runUI"] = runUI;
-})(PS["Halogen.Aff.Driver"] = PS["Halogen.Aff.Driver"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.2
-  "use strict";
-  var Control_Applicative = PS["Control.Applicative"];
-  var Control_Bind = PS["Control.Bind"];
-  var Control_Monad_Error_Class = PS["Control.Monad.Error.Class"];
-  var Control_Semigroupoid = PS["Control.Semigroupoid"];
-  var Data_Either = PS["Data.Either"];
-  var Data_Function = PS["Data.Function"];
-  var Data_Functor = PS["Data.Functor"];
-  var Data_Maybe = PS["Data.Maybe"];
-  var Data_Unit = PS["Data.Unit"];
-  var Effect = PS["Effect"];
-  var Effect_Aff = PS["Effect.Aff"];
-  var Effect_Class = PS["Effect.Class"];
-  var Effect_Exception = PS["Effect.Exception"];
-  var Prelude = PS["Prelude"];
-  var Web_DOM_ParentNode = PS["Web.DOM.ParentNode"];
-  var Web_Event_EventTarget = PS["Web.Event.EventTarget"];
-  var Web_HTML = PS["Web.HTML"];
-  var Web_HTML_Event_EventTypes = PS["Web.HTML.Event.EventTypes"];
-  var Web_HTML_HTMLDocument = PS["Web.HTML.HTMLDocument"];
-  var Web_HTML_HTMLDocument_ReadyState = PS["Web.HTML.HTMLDocument.ReadyState"];
-  var Web_HTML_HTMLElement = PS["Web.HTML.HTMLElement"];
-  var Web_HTML_Window = PS["Web.HTML.Window"];                 
-  var selectElement = function (query) {
-      return Control_Bind.bind(Effect_Aff.bindAff)(Effect_Class.liftEffect(Effect_Aff.monadEffectAff)(Control_Bind.bindFlipped(Effect.bindEffect)(Control_Bind.composeKleisliFlipped(Effect.bindEffect)(function ($12) {
-          return Web_DOM_ParentNode.querySelector(query)(Web_HTML_HTMLDocument.toParentNode($12));
-      })(Web_HTML_Window.document))(Web_HTML.window)))(function (v) {
-          return Control_Applicative.pure(Effect_Aff.applicativeAff)(Control_Bind.bindFlipped(Data_Maybe.bindMaybe)(Web_HTML_HTMLElement.fromElement)(v));
-      });
-  };
-  var runHalogenAff = Effect_Aff.runAff_(Data_Either.either(Effect_Exception.throwException)(Data_Function["const"](Control_Applicative.pure(Effect.applicativeEffect)(Data_Unit.unit))));
-  exports["selectElement"] = selectElement;
-  exports["runHalogenAff"] = runHalogenAff;
-})(PS["Halogen.Aff.Util"] = PS["Halogen.Aff.Util"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.2
-  "use strict";
-  var Control_Applicative = PS["Control.Applicative"];
-  var Control_Bind = PS["Control.Bind"];
-  var Data_Array = PS["Data.Array"];
-  var Data_Eq = PS["Data.Eq"];
-  var Data_Function_Uncurried = PS["Data.Function.Uncurried"];
-  var Data_Maybe = PS["Data.Maybe"];
-  var Data_Nullable = PS["Data.Nullable"];
-  var Data_Tuple = PS["Data.Tuple"];
-  var Effect = PS["Effect"];
-  var Effect_Uncurried = PS["Effect.Uncurried"];
-  var Halogen_VDom_Machine = PS["Halogen.VDom.Machine"];
-  var Halogen_VDom_Types = PS["Halogen.VDom.Types"];
-  var Halogen_VDom_Util = PS["Halogen.VDom.Util"];
-  var Prelude = PS["Prelude"];
-  var Web_DOM_Document = PS["Web.DOM.Document"];
-  var Web_DOM_Element = PS["Web.DOM.Element"];
-  var Web_DOM_Node = PS["Web.DOM.Node"];
-  var eqElemSpec = function (a, b) {
-      if (a.value1 === b.value1) {
-          if (a.value0 instanceof Data_Maybe.Just && (b.value0 instanceof Data_Maybe.Just && a.value0.value0 === b.value0.value0)) {
-              return true;
-          };
-          if (a.value0 instanceof Data_Maybe.Nothing && b.value0 instanceof Data_Maybe.Nothing) {
-              return true;
-          };
-          return false;
-      };
-      return false;
-  };
-  var buildWidget = (function () {
-      var patch = function (build, v) {
-          return function (v1) {
-              if (v1 instanceof Halogen_VDom_Types.Grafted) {
-                  return patch(build, v)(Halogen_VDom_Types.runGraft(v1.value0));
-              };
-              if (v1 instanceof Halogen_VDom_Types.Widget) {
-                  var v2 = v.value1(v1.value0);
-                  return new Halogen_VDom_Machine.Step(v2.value0, patch(build, v2), v2.value2);
-              };
-              v.value2();
-              return build(v1);
-          };
-      };
-      var render = function (v, build, w) {
-          var v1 = v.buildWidget(v)(w);
-          return new Halogen_VDom_Machine.Step(v1.value0, patch(build, v1), v1.value2);
-      };
-      return render;
-  })();
-  var buildText = (function () {
-      var patch = function (build, halt, node, s1) {
-          return function (v) {
-              if (v instanceof Halogen_VDom_Types.Grafted) {
-                  return patch(build, halt, node, s1)(Halogen_VDom_Types.runGraft(v.value0));
-              };
-              if (v instanceof Halogen_VDom_Types.Text) {
-                  var res = new Halogen_VDom_Machine.Step(node, patch(build, halt, node, v.value0), halt);
-                  var $84 = s1 === v.value0;
-                  if ($84) {
-                      return res;
-                  };
-                  Halogen_VDom_Util.setTextContent(v.value0, node);
-                  return res;
-              };
-              halt();
-              return build(v);
-          };
-      };
-      var done = function (node) {
-          return function __do() {
-              var v = Halogen_VDom_Util.parentNode(node);
-              return Halogen_VDom_Util.removeChild(node, v);
-          };
-      };
-      var render = function (v, build, s) {
-          var v1 = Halogen_VDom_Util.createTextNode(s, v.document);
-          var halt = done(v1);
-          return new Halogen_VDom_Machine.Step(v1, patch(build, halt, v1, s), halt);
-      };
-      return render;
-  })();
-  var buildKeyed = (function () {
-      var done = function (node, attrs, steps) {
-          return function __do() {
-              var v = Halogen_VDom_Util.parentNode(node);
-              Halogen_VDom_Util.removeChild(node, v);
-              Halogen_VDom_Util.forInE(steps, function (v1, v2) {
-                  return v2.value2();
-              });
-              return Halogen_VDom_Machine.halt(attrs)();
-          };
-      };
-      var patch = function (build, halt, node, attrs, v, ch1, len1) {
-          return function (v1) {
-              if (v1 instanceof Halogen_VDom_Types.Grafted) {
-                  return patch(build, halt, node, attrs, v, ch1, len1)(Halogen_VDom_Types.runGraft(v1.value0));
-              };
-              if (v1 instanceof Halogen_VDom_Types.Keyed && eqElemSpec(v, v1.value0)) {
-                  var v2 = Data_Array.length(v1.value1);
-                  if (len1 === 0 && v2 === 0) {
-                      var v4 = Halogen_VDom_Machine.step(attrs)(v1.value0.value2);
-                      var halt$prime = done(node, v4, ch1);
-                      return new Halogen_VDom_Machine.Step(node, patch(build, halt$prime, node, v4, v1.value0, ch1, 0), halt$prime);
-                  };
-                  var onThis = function (v4, v5) {
-                      return v5.value2();
-                  };
-                  var onThese = function (v4, ix$prime, v5, v6) {
-                      var v7 = v5.value1(v6.value1);
-                      Halogen_VDom_Util.insertChildIx(ix$prime, v7.value0, node);
-                      return v7;
-                  };
-                  var onThat = function (v4, ix, v5) {
-                      var v6 = build(v5.value1);
-                      Halogen_VDom_Util.insertChildIx(ix, v6.value0, node);
-                      return v6;
-                  };
-                  var v4 = Halogen_VDom_Util.diffWithKeyAndIxE(ch1, v1.value1, Data_Tuple.fst, onThese, onThis, onThat);
-                  var v5 = Halogen_VDom_Machine.step(attrs)(v1.value0.value2);
-                  var halt$prime = done(node, v5, v4);
-                  return new Halogen_VDom_Machine.Step(node, patch(build, halt$prime, node, v5, v1.value0, v4, v2), halt$prime);
-              };
-              halt();
-              return build(v1);
-          };
-      };
-      var render = function (v, build, v1, ch1) {
-          var v2 = Halogen_VDom_Util.createElement(Data_Nullable.toNullable(v1.value0), v1.value1, v.document);
-          var node = Web_DOM_Element.toNode(v2);
-          var onChild = function (k, ix, v3) {
-              var v4 = build(v3.value1);
-              Halogen_VDom_Util.insertChildIx(ix, v4.value0, node);
-              return v4;
-          };
-          var v3 = Halogen_VDom_Util.strMapWithIxE(ch1, Data_Tuple.fst, onChild);
-          var v4 = v.buildAttributes(v2)(v1.value2);
-          var halt = done(node, v4, v3);
-          return new Halogen_VDom_Machine.Step(node, patch(build, halt, node, v4, v1, v3, Data_Array.length(ch1)), halt);
-      };
-      return render;
-  })();
-  var buildElem = (function () {
-      var done = function (node, attrs, steps) {
-          return function __do() {
-              var v = Halogen_VDom_Util.parentNode(node);
-              Halogen_VDom_Util.removeChild(node, v);
-              Effect.foreachE(steps)(Halogen_VDom_Machine.halt)();
-              return Halogen_VDom_Machine.halt(attrs)();
-          };
-      };
-      var patch = function (build, halt, node, attrs, v, ch1) {
-          return function (v1) {
-              if (v1 instanceof Halogen_VDom_Types.Grafted) {
-                  return patch(build, halt, node, attrs, v, ch1)(Halogen_VDom_Types.runGraft(v1.value0));
-              };
-              if (v1 instanceof Halogen_VDom_Types.Elem && eqElemSpec(v, v1.value0)) {
-                  var v2 = Data_Array.length(v1.value1);
-                  var v3 = Data_Array.length(ch1);
-                  if (v3 === 0 && v2 === 0) {
-                      var v4 = Halogen_VDom_Machine.step(attrs)(v1.value0.value2);
-                      var halt$prime = done(node, v4, ch1);
-                      return new Halogen_VDom_Machine.Step(node, patch(build, halt$prime, node, v4, v1.value0, ch1), halt$prime);
-                  };
-                  var onThis = function (ix, v4) {
-                      return v4.value2();
-                  };
-                  var onThese = function (ix, v4, vdom) {
-                      var v5 = v4.value1(vdom);
-                      Halogen_VDom_Util.insertChildIx(ix, v5.value0, node);
-                      return v5;
-                  };
-                  var onThat = function (ix, vdom) {
-                      var v4 = build(vdom);
-                      Halogen_VDom_Util.insertChildIx(ix, v4.value0, node);
-                      return v4;
-                  };
-                  var v4 = Halogen_VDom_Util.diffWithIxE(ch1, v1.value1, onThese, onThis, onThat);
-                  var v5 = Halogen_VDom_Machine.step(attrs)(v1.value0.value2);
-                  var halt$prime = done(node, v5, v4);
-                  return new Halogen_VDom_Machine.Step(node, patch(build, halt$prime, node, v5, v1.value0, v4), halt$prime);
-              };
-              halt();
-              return build(v1);
-          };
-      };
-      var render = function (v, build, v1, ch1) {
-          var v2 = Halogen_VDom_Util.createElement(Data_Nullable.toNullable(v1.value0), v1.value1, v.document);
-          var node = Web_DOM_Element.toNode(v2);
-          var onChild = function (ix, child) {
-              var v3 = build(child);
-              Halogen_VDom_Util.insertChildIx(ix, v3.value0, node);
-              return v3;
-          };
-          var v3 = Halogen_VDom_Util.forE(ch1, onChild);
-          var v4 = v.buildAttributes(v2)(v1.value2);
-          var halt = done(node, v4, v3);
-          return new Halogen_VDom_Machine.Step(node, patch(build, halt, node, v4, v1, v3), halt);
-      };
-      return render;
-  })();
-  var buildVDom = function (spec) {
-      var build = function (v) {
-          if (v instanceof Halogen_VDom_Types.Text) {
-              return buildText(spec, build, v.value0);
-          };
-          if (v instanceof Halogen_VDom_Types.Elem) {
-              return buildElem(spec, build, v.value0, v.value1);
-          };
-          if (v instanceof Halogen_VDom_Types.Keyed) {
-              return buildKeyed(spec, build, v.value0, v.value1);
-          };
-          if (v instanceof Halogen_VDom_Types.Widget) {
-              return buildWidget(spec, build, v.value0);
-          };
-          if (v instanceof Halogen_VDom_Types.Grafted) {
-              return build(Halogen_VDom_Types.runGraft(v.value0));
-          };
-          throw new Error("Failed pattern match at Halogen.VDom.DOM (line 58, column 27 - line 63, column 52): " + [ v.constructor.name ]);
-      };
-      return build;
-  };
-  exports["buildVDom"] = buildVDom;
-  exports["buildText"] = buildText;
-  exports["buildElem"] = buildElem;
-  exports["buildKeyed"] = buildKeyed;
-  exports["buildWidget"] = buildWidget;
-})(PS["Halogen.VDom.DOM"] = PS["Halogen.VDom.DOM"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.2
-  "use strict";
-  var Control_Applicative = PS["Control.Applicative"];
-  var Control_Bind = PS["Control.Bind"];
-  var Control_Category = PS["Control.Category"];
-  var Data_Foldable = PS["Data.Foldable"];
-  var Data_Function = PS["Data.Function"];
-  var Data_Functor = PS["Data.Functor"];
-  var Data_HeytingAlgebra = PS["Data.HeytingAlgebra"];
-  var Data_Maybe = PS["Data.Maybe"];
-  var Data_Unit = PS["Data.Unit"];
-  var Effect = PS["Effect"];
-  var Effect_Aff = PS["Effect.Aff"];
-  var Effect_Class = PS["Effect.Class"];
-  var Effect_Ref = PS["Effect.Ref"];
-  var Effect_Uncurried = PS["Effect.Uncurried"];
-  var Halogen_Aff_Driver = PS["Halogen.Aff.Driver"];
-  var Halogen_Aff_Driver_State = PS["Halogen.Aff.Driver.State"];
-  var Halogen_Component = PS["Halogen.Component"];
-  var Halogen_HTML_Core = PS["Halogen.HTML.Core"];
-  var Halogen_Query_InputF = PS["Halogen.Query.InputF"];
-  var Halogen_VDom = PS["Halogen.VDom"];
-  var Halogen_VDom_DOM = PS["Halogen.VDom.DOM"];
-  var Halogen_VDom_DOM_Prop = PS["Halogen.VDom.DOM.Prop"];
-  var Halogen_VDom_Machine = PS["Halogen.VDom.Machine"];
-  var Prelude = PS["Prelude"];
-  var Unsafe_Reference = PS["Unsafe.Reference"];
-  var Web_DOM_Document = PS["Web.DOM.Document"];
-  var Web_DOM_Element = PS["Web.DOM.Element"];
-  var Web_DOM_Node = PS["Web.DOM.Node"];
-  var Web_HTML = PS["Web.HTML"];
-  var Web_HTML_HTMLDocument = PS["Web.HTML.HTMLDocument"];
-  var Web_HTML_HTMLElement = PS["Web.HTML.HTMLElement"];
-  var Web_HTML_Window = PS["Web.HTML.Window"];
-  var substInParent = function (v) {
-      return function (v1) {
-          return function (v2) {
-              if (v1 instanceof Data_Maybe.Just && v2 instanceof Data_Maybe.Just) {
-                  return Data_Functor["void"](Effect.functorEffect)(Web_DOM_Node.insertBefore(v)(v1.value0)(v2.value0));
-              };
-              if (v1 instanceof Data_Maybe.Nothing && v2 instanceof Data_Maybe.Just) {
-                  return Data_Functor["void"](Effect.functorEffect)(Web_DOM_Node.appendChild(v)(v2.value0));
-              };
-              return Control_Applicative.pure(Effect.applicativeEffect)(Data_Unit.unit);
-          };
-      };
-  };
-  var removeChild = function (v) {
-      return function __do() {
-          var v1 = Web_DOM_Node.parentNode(v.node)();
-          return Data_Foldable.traverse_(Effect.applicativeEffect)(Data_Foldable.foldableMaybe)(function (pn) {
-              return Web_DOM_Node.removeChild(v.node)(pn);
-          })(v1)();
-      };
-  };
-  var mkSpec = function (handler) {
-      return function (renderChildRef) {
-          return function (document) {
-              var getNode = Halogen_Aff_Driver_State.unRenderStateX(function (v) {
-                  return v.node;
-              });
-              var done = Control_Applicative.pure(Effect.applicativeEffect)(Data_Unit.unit);
-              var patch = function (slot) {
-                  var v = Effect_Ref.read(renderChildRef)();
-                  var v1 = v(slot)();
-                  var node = getNode(v1);
-                  return new Halogen_VDom_Machine.Step(node, patch, done);
-              };
-              var buildWidget = function (spec) {
-                  return function (slot) {
-                      var v = Effect_Ref.read(renderChildRef)();
-                      var v1 = v(slot)();
-                      var node = getNode(v1);
-                      return new Halogen_VDom_Machine.Step(node, patch, done);
-                  };
-              };
-              var buildAttributes = Halogen_VDom_DOM_Prop.buildProp(handler);
-              return {
-                  buildWidget: buildWidget,
-                  buildAttributes: buildAttributes,
-                  document: document
-              };
-          };
-      };
-  };
-  var renderSpec = function (document) {
-      return function (container) {
-          var render = function (handler) {
-              return function (child) {
-                  return function (v) {
-                      return function (v1) {
-                          if (v1 instanceof Data_Maybe.Nothing) {
-                              return function __do() {
-                                  var v2 = Effect_Ref["new"](child)();
-                                  var spec = mkSpec(handler)(v2)(document);
-                                  var v3 = Halogen_VDom_DOM.buildVDom(spec)(v);
-                                  var node = Halogen_VDom_Machine.extract(v3);
-                                  Data_Functor["void"](Effect.functorEffect)(Web_DOM_Node.appendChild(node)(Web_HTML_HTMLElement.toNode(container)))();
-                                  return {
-                                      machine: v3,
-                                      node: node,
-                                      renderChildRef: v2
-                                  };
-                              };
-                          };
-                          if (v1 instanceof Data_Maybe.Just) {
-                              return function __do() {
-                                  Effect_Ref.write(child)(v1.value0.renderChildRef)();
-                                  var v2 = Web_DOM_Node.parentNode(v1.value0.node)();
-                                  var v3 = Web_DOM_Node.nextSibling(v1.value0.node)();
-                                  var v4 = Halogen_VDom_Machine.step(v1.value0.machine)(v);
-                                  var newNode = Halogen_VDom_Machine.extract(v4);
-                                  Control_Applicative.when(Effect.applicativeEffect)(Data_HeytingAlgebra.not(Data_HeytingAlgebra.heytingAlgebraFunction(Data_HeytingAlgebra.heytingAlgebraFunction(Data_HeytingAlgebra.heytingAlgebraBoolean)))(Unsafe_Reference.unsafeRefEq)(v1.value0.node)(newNode))(substInParent(newNode)(v3)(v2))();
-                                  return {
-                                      machine: v4,
-                                      node: newNode,
-                                      renderChildRef: v1.value0.renderChildRef
-                                  };
-                              };
-                          };
-                          throw new Error("Failed pattern match at Halogen.VDom.Driver (line 118, column 5 - line 134, column 80): " + [ v1.constructor.name ]);
-                      };
-                  };
-              };
-          };
-          return {
-              render: render,
-              renderChild: Control_Category.identity(Control_Category.categoryFn),
-              removeChild: removeChild
-          };
-      };
-  };
-  var runUI = function (component) {
-      return function (i) {
-          return function (element) {
-              return Control_Bind.bind(Effect_Aff.bindAff)(Effect_Class.liftEffect(Effect_Aff.monadEffectAff)(Data_Functor.map(Effect.functorEffect)(Web_HTML_HTMLDocument.toDocument)(Control_Bind.bindFlipped(Effect.bindEffect)(Web_HTML_Window.document)(Web_HTML.window))))(function (v) {
-                  return Halogen_Aff_Driver.runUI(renderSpec(v)(element))(component)(i);
-              });
-          };
-      };
-  };
-  exports["runUI"] = runUI;
-})(PS["Halogen.VDom.Driver"] = PS["Halogen.VDom.Driver"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.2
-  "use strict";
-  var App = PS["App"];
-  var Component_AccountSettings = PS["Component.AccountSettings"];
-  var Component_Add = PS["Component.Add"];
-  var Component_BList = PS["Component.BList"];
-  var Component_NList = PS["Component.NList"];
-  var Component_NNote = PS["Component.NNote"];
-  var Control_Applicative = PS["Control.Applicative"];
-  var Control_Bind = PS["Control.Bind"];
-  var Control_Semigroupoid = PS["Control.Semigroupoid"];
-  var Data_Foldable = PS["Data.Foldable"];
-  var Data_Function = PS["Data.Function"];
-  var Data_Functor = PS["Data.Functor"];
-  var Data_Unit = PS["Data.Unit"];
-  var Effect = PS["Effect"];
-  var Effect_Aff = PS["Effect.Aff"];
-  var Effect_Class = PS["Effect.Class"];
-  var Halogen_Aff = PS["Halogen.Aff"];
-  var Halogen_Aff_Util = PS["Halogen.Aff.Util"];
-  var Halogen_VDom_Driver = PS["Halogen.VDom.Driver"];
-  var Model = PS["Model"];
-  var Prelude = PS["Prelude"];
-  var Web_DOM_Element = PS["Web.DOM.Element"];
-  var Web_DOM_ParentNode = PS["Web.DOM.ParentNode"];
-  var Web_Event_Event = PS["Web.Event.Event"];
-  var Web_HTML_HTMLElement = PS["Web.HTML.HTMLElement"];                 
-  var showFooter = Control_Bind.bind(Effect_Aff.bindAff)(Halogen_Aff_Util.selectElement(".user_footer"))(Data_Foldable.traverse_(Effect_Aff.applicativeAff)(Data_Foldable.foldableMaybe)(function (el) {
-      return Effect_Class.liftEffect(Effect_Aff.monadEffectAff)(Web_DOM_Element.removeAttribute("hidden")(Web_HTML_HTMLElement.toElement(el)));
-  }));
-  var renderNotes = function (renderElSelector) {
-      return function (notes) {
-          return Halogen_Aff_Util.runHalogenAff(Control_Bind.bind(Effect_Aff.bindAff)(Halogen_Aff_Util.selectElement(renderElSelector))(Data_Foldable.traverse_(Effect_Aff.applicativeAff)(Data_Foldable.foldableMaybe)(function (el) {
-              return Control_Bind.discard(Control_Bind.discardUnit)(Effect_Aff.bindAff)(Data_Functor["void"](Effect_Aff.functorAff)(Halogen_VDom_Driver.runUI(Component_NList.nlist(notes))(Data_Unit.unit)(el)))(function () {
-                  return showFooter;
-              });
-          })));
-      };
-  };
-  var renderNote = function (renderElSelector) {
-      return function (note) {
-          return Halogen_Aff_Util.runHalogenAff(Control_Bind.bind(Effect_Aff.bindAff)(Halogen_Aff_Util.selectElement(renderElSelector))(Data_Foldable.traverse_(Effect_Aff.applicativeAff)(Data_Foldable.foldableMaybe)(function (el) {
-              return Data_Functor["void"](Effect_Aff.functorAff)(Halogen_VDom_Driver.runUI(Component_NNote.nnote(note))(Data_Unit.unit)(el));
-          })));
-      };
-  };
-  var renderBookmarks = function (renderElSelector) {
-      return function (bmarks) {
-          return Halogen_Aff_Util.runHalogenAff(Control_Bind.bind(Effect_Aff.bindAff)(Halogen_Aff_Util.selectElement(renderElSelector))(Data_Foldable.traverse_(Effect_Aff.applicativeAff)(Data_Foldable.foldableMaybe)(function (el) {
-              return Control_Bind.discard(Control_Bind.discardUnit)(Effect_Aff.bindAff)(Data_Functor["void"](Effect_Aff.functorAff)(Halogen_VDom_Driver.runUI(Component_BList.blist(bmarks))(Data_Unit.unit)(el)))(function () {
-                  return showFooter;
-              });
-          })));
-      };
-  };
-  var renderAddForm = function (renderElSelector) {
-      return function (bmark) {
-          return Halogen_Aff_Util.runHalogenAff(Control_Bind.bind(Effect_Aff.bindAff)(Halogen_Aff_Util.selectElement(renderElSelector))(Data_Foldable.traverse_(Effect_Aff.applicativeAff)(Data_Foldable.foldableMaybe)(function (el) {
-              return Halogen_VDom_Driver.runUI(Component_Add.addbmark(bmark))(Data_Unit.unit)(el);
-          })));
-      };
-  };
-  var renderAccountSettings = function (renderElSelector) {
-      return function (accountSettings) {
-          return Halogen_Aff_Util.runHalogenAff(Control_Bind.bind(Effect_Aff.bindAff)(Halogen_Aff_Util.selectElement(renderElSelector))(Data_Foldable.traverse_(Effect_Aff.applicativeAff)(Data_Foldable.foldableMaybe)(function (el) {
-              return Data_Functor["void"](Effect_Aff.functorAff)(Halogen_VDom_Driver.runUI(Component_AccountSettings.usetting(accountSettings))(Data_Unit.unit)(el));
-          })));
-      };
-  };
-  var main = Control_Applicative.pure(Effect.applicativeEffect)(Data_Unit.unit);
-  var logoutE = function (e) {
-      return Control_Bind.bindFlipped(Effect.bindEffect)(function ($0) {
-          return Data_Functor["void"](Effect.functorEffect)(Effect_Aff.launchAff(App.logout($0)));
-      })(Web_Event_Event.preventDefault(e));
-  };
-  exports["main"] = main;
-  exports["logoutE"] = logoutE;
-  exports["renderBookmarks"] = renderBookmarks;
-  exports["renderAddForm"] = renderAddForm;
-  exports["renderNotes"] = renderNotes;
-  exports["renderNote"] = renderNote;
-  exports["renderAccountSettings"] = renderAccountSettings;
-  exports["showFooter"] = showFooter;
-})(PS["Main"] = PS["Main"] || {});
-PS["Main"].main();
diff --git a/static/js/app.js.gz b/static/js/app.js.gz
deleted file mode 100644
Binary files a/static/js/app.js.gz and /dev/null differ
diff --git a/static/js/app.min.js b/static/js/app.min.js
--- a/static/js/app.min.js
+++ b/static/js/app.min.js
@@ -1,1 +1,20 @@
-var PS={};!function(n){"use strict";var e;(PS["Affjax"]=PS["Affjax"]||{})._ajax=(e={},"undefined"==typeof module||!module.require||"undefined"!=typeof process&&process.versions.electron?(e.newXHR=function(){return new XMLHttpRequest},e.fixupUrl=function(n){return n||"/"},e.getResponse=function(n){return n.response}):(e.newXHR=function(){return new(module.require("xhr2"))},e.fixupUrl=function(n){var e=module.require("url"),t=e.parse(n);return t.protocol=t.protocol||"http:",t.hostname=t.hostname||"localhost",e.format(t)},e.getResponse=function(n){return n.response}),function(n,t){return function(r,a){var o=e.newXHR(),u=e.fixupUrl(t.url);if(o.open(t.method||"GET",u,!0,t.username,t.password),t.headers)try{for(var i,l=0;null!=(i=t.headers[l]);l++)o.setRequestHeader(i.field,i.value)}catch(n){r(n)}return o.onerror=function(){r(new Error("AJAX request failed: "+t.method+" "+t.url))},o.onload=function(){a({status:o.status,statusText:o.statusText,headers:o.getAllResponseHeaders().split("\r\n").filter(function(n){return n.length>0}).map(function(e){var t=e.indexOf(":");return n(e.substring(0,t))(e.substring(t+2))}),body:e.getResponse(o)})},o.responseType=t.responseType,o.withCredentials=t.withCredentials,o.send(t.content),function(n,e,t){try{o.abort()}catch(n){return e(n)}return t()}}})}(),function(n){"use strict";n.fromObject=function(n){return n},n.stringify=function(n){return JSON.stringify(n)}}(PS["Data.Argonaut.Core"]=PS["Data.Argonaut.Core"]||{}),function(n){"use strict";(PS["Data.Eq"]=PS["Data.Eq"]||{}).refEq=function(n){return function(e){return n===e}}}(),function(n){"use strict";n.boolConj=function(n){return function(e){return n&&e}},n.boolDisj=function(n){return function(e){return n||e}},n.boolNot=function(n){return!n}}(PS["Data.HeytingAlgebra"]=PS["Data.HeytingAlgebra"]||{}),function(n){"use strict";PS["Data.Symbol"];var e=function(){function n(){}return n.value=new n,n}();n.IsSymbol=function(n){this.reflectSymbol=n},n.reflectSymbol=function(n){return n.reflectSymbol},n.SProxy=e}(PS["Data.Symbol"]=PS["Data.Symbol"]||{}),function(n){"use strict";(PS["Data.Unit"]=PS["Data.Unit"]||{}).unit={}}(),function(n){"use strict";(PS["Data.Show"]=PS["Data.Show"]||{}).showIntImpl=function(n){return n.toString()}}(),function(n){"use strict";(PS["Record.Unsafe"]=PS["Record.Unsafe"]||{}).unsafeGet=function(n){return function(e){return e[n]}}}(),function(n){"use strict";var e=PS["Record.Unsafe"];n.unsafeGet=e.unsafeGet}(PS["Record.Unsafe"]=PS["Record.Unsafe"]||{}),function(n){"use strict";var e=PS["Data.Show"],t=(PS["Data.Symbol"],PS["Record.Unsafe"],PS["Type.Data.RowList"],function(n){this.show=n}),r=new t(e.showIntImpl);n.Show=t,n.show=function(n){return n.show},n.showInt=r}(PS["Data.Show"]=PS["Data.Show"]||{}),function(n){"use strict";var e=PS["Data.Unit"];PS["Data.Show"];n.unit=e.unit}(PS["Data.Unit"]=PS["Data.Unit"]||{}),function(n){"use strict";var e=PS["Data.HeytingAlgebra"],t=(PS["Data.Symbol"],PS["Data.Unit"],PS["Record.Unsafe"],PS["Type.Data.Row"],PS["Type.Data.RowList"],function(n,e,t,r,a,o){this.conj=n,this.disj=e,this.ff=t,this.implies=r,this.not=a,this.tt=o}),r=function(n){return n.tt},a=function(n){return n.not},o=function(n){return n.implies},u=function(n){return n.ff},i=function(n){return n.disj},l=new t(e.boolConj,e.boolDisj,!1,function(n){return function(e){return i(l)(a(l)(n))(e)}},e.boolNot,!0),c=function(n){return n.conj};n.HeytingAlgebra=t,n.tt=r,n.ff=u,n.implies=o,n.conj=c,n.disj=i,n.not=a,n.heytingAlgebraBoolean=l,n.heytingAlgebraFunction=function(n){return new t(function(e){return function(t){return function(r){return c(n)(e(r))(t(r))}}},function(e){return function(t){return function(r){return i(n)(e(r))(t(r))}}},function(e){return u(n)},function(e){return function(t){return function(r){return o(n)(e(r))(t(r))}}},function(e){return function(t){return a(n)(e(t))}},function(e){return r(n)})}}(PS["Data.HeytingAlgebra"]=PS["Data.HeytingAlgebra"]||{}),function(n){"use strict";PS["Data.Show"];n.absurd=function(n){return function(n){for(var e;;)e=void(n=n);return e}(n)}}(PS["Data.Void"]=PS["Data.Void"]||{}),function(n){"use strict";var e=PS["Data.Eq"],t=(PS["Data.HeytingAlgebra"],PS["Data.Symbol"],PS["Data.Unit"],PS["Data.Void"],PS["Record.Unsafe"],PS["Type.Data.RowList"],function(n){this.eq=n}),r=new t(function(n){return function(n){return!0}}),a=new t(function(n){return function(n){return!0}}),o=new t(e.refEq),u=new t(e.refEq),i=new t(e.refEq);n.Eq=t,n.eq=function(n){return n.eq},n.eqInt=u,n.eqChar=i,n.eqString=o,n.eqUnit=a,n.eqVoid=r}(PS["Data.Eq"]=PS["Data.Eq"]||{}),function(n){"use strict";var e=function(n){this.compose=n},t=new e(function(n){return function(e){return function(t){return n(e(t))}}});n.compose=function(n){return n.compose},n.Semigroupoid=e,n.semigroupoidFn=t}(PS["Control.Semigroupoid"]=PS["Control.Semigroupoid"]||{}),function(n){"use strict";var e=PS["Control.Semigroupoid"],t=function(n,e){this.Semigroupoid0=n,this.identity=e},r=new t(function(){return e.semigroupoidFn},function(n){return n});n.Category=t,n.identity=function(n){return n.identity},n.categoryFn=r}(PS["Control.Category"]=PS["Control.Category"]||{}),function(n){"use strict";(PS["Data.Boolean"]=PS["Data.Boolean"]||{}).otherwise=!0}(),function(n){"use strict";(PS["Data.Ord.Unsafe"]=PS["Data.Ord.Unsafe"]||{}).unsafeCompareImpl=function(n){return function(e){return function(t){return function(r){return function(a){return r<a?n:r===a?e:t}}}}}}(),function(n){"use strict";n.concatString=function(n){return function(e){return n+e}},n.concatArray=function(n){return function(e){return 0===n.length?e:0===e.length?n:n.concat(e)}}}(PS["Data.Semigroup"]=PS["Data.Semigroup"]||{}),function(n){"use strict";var e=PS["Data.Semigroup"],t=(PS["Data.Symbol"],PS["Data.Unit"],PS["Data.Void"],PS["Record.Unsafe"],PS["Type.Data.RowList"],function(n){this.append=n}),r=new t(e.concatString),a=new t(e.concatArray),o=function(n){return n.append};n.Semigroup=t,n.append=o,n.semigroupString=r,n.semigroupFn=function(n){return new t(function(e){return function(t){return function(r){return o(n)(e(r))(t(r))}}})},n.semigroupArray=a}(PS["Data.Semigroup"]=PS["Data.Semigroup"]||{}),function(n){"use strict";PS["Data.Eq"],PS["Data.Semigroup"],PS["Data.Show"];var e=function(){function n(){}return n.value=new n,n}(),t=function(){function n(){}return n.value=new n,n}(),r=function(){function n(){}return n.value=new n,n}();n.LT=e,n.GT=t,n.EQ=r}(PS["Data.Ordering"]=PS["Data.Ordering"]||{}),function(n){"use strict";var e=PS["Data.Ord.Unsafe"],t=PS["Data.Ordering"],r=e.unsafeCompareImpl(t.LT.value)(t.EQ.value)(t.GT.value);n.unsafeCompare=r}(PS["Data.Ord.Unsafe"]=PS["Data.Ord.Unsafe"]||{}),function(n){"use strict";(PS["Data.Ring"]=PS["Data.Ring"]||{}).intSub=function(n){return function(e){return n-e|0}}}(),function(n){"use strict";n.intAdd=function(n){return function(e){return n+e|0}},n.intMul=function(n){return function(e){return n*e|0}}}(PS["Data.Semiring"]=PS["Data.Semiring"]||{}),function(n){"use strict";var e=PS["Data.Semiring"],t=(PS["Data.Symbol"],PS["Data.Unit"],PS["Record.Unsafe"],PS["Type.Data.Row"],PS["Type.Data.RowList"],function(n,e,t,r){this.add=n,this.mul=e,this.one=t,this.zero=r}),r=new t(e.intAdd,e.intMul,1,0);n.Semiring=t,n.add=function(n){return n.add},n.zero=function(n){return n.zero},n.mul=function(n){return n.mul},n.one=function(n){return n.one},n.semiringInt=r}(PS["Data.Semiring"]=PS["Data.Semiring"]||{}),function(n){"use strict";var e=PS["Data.Ring"],t=PS["Data.Semiring"],r=(PS["Data.Symbol"],PS["Data.Unit"],PS["Record.Unsafe"],PS["Type.Data.RowList"],function(n,e){this.Semiring0=n,this.sub=e}),a=new r(function(){return t.semiringInt},e.intSub);n.Ring=r,n.sub=function(n){return n.sub},n.ringInt=a}(PS["Data.Ring"]=PS["Data.Ring"]||{}),function(n){"use strict";PS["Data.Ord"];var e=PS["Data.Eq"],t=PS["Data.Ord.Unsafe"],r=PS["Data.Ordering"],a=(PS["Data.Ring"],PS["Data.Semiring"],PS["Data.Symbol"],PS["Data.Unit"],PS["Data.Void"],PS["Record.Unsafe"],PS["Type.Data.RowList"],function(n,e){this.Eq0=n,this.compare=e}),o=new a(function(){return e.eqVoid},function(n){return function(n){return r.EQ.value}}),u=new a(function(){return e.eqUnit},function(n){return function(n){return r.EQ.value}}),i=new a(function(){return e.eqString},t.unsafeCompare),l=new a(function(){return e.eqInt},t.unsafeCompare),c=new a(function(){return e.eqChar},t.unsafeCompare);n.Ord=a,n.compare=function(n){return n.compare},n.ordInt=l,n.ordString=i,n.ordChar=c,n.ordUnit=u,n.ordVoid=o}(PS["Data.Ord"]=PS["Data.Ord"]||{}),function(n){"use strict";PS["Control.Category"],PS["Data.Boolean"],PS["Data.Ord"],PS["Data.Ring"];n.flip=function(n){return function(e){return function(t){return n(t)(e)}}},n.const=function(n){return function(e){return n}},n.on=function(n){return function(e){return function(t){return function(r){return n(e(t))(e(r))}}}}}(PS["Data.Function"]=PS["Data.Function"]||{}),function(n){"use strict";(PS["Data.Function.Uncurried"]=PS["Data.Function.Uncurried"]||{}).runFn4=function(n){return function(e){return function(t){return function(r){return function(a){return n(e,t,r,a)}}}}}}(),function(n){"use strict";var e=PS["Data.Function.Uncurried"];PS["Data.Unit"];n.runFn4=e.runFn4}(PS["Data.Function.Uncurried"]=PS["Data.Function.Uncurried"]||{}),function(n){"use strict";(PS["Data.Functor"]=PS["Data.Functor"]||{}).arrayMap=function(n){return function(e){for(var t=e.length,r=new Array(t),a=0;a<t;a++)r[a]=n(e[a]);return r}}}(),function(n){"use strict";var e=PS["Data.Functor"],t=PS["Control.Semigroupoid"],r=PS["Data.Function"],a=PS["Data.Unit"],o=function(n){this.map=n},u=function(n){return n.map},i=new o(t.compose(t.semigroupoidFn)),l=new o(e.arrayMap);n.Functor=o,n.map=u,n.void=function(n){return u(n)(r.const(a.unit))},n.voidLeft=function(n){return function(e){return function(t){return u(n)(r.const(t))(e)}}},n.functorFn=i,n.functorArray=l}(PS["Data.Functor"]=PS["Data.Functor"]||{}),function(n){"use strict";PS["Data.Functor"],PS["Data.Semigroup"];n.Alt=function(n,e){this.Functor0=n,this.alt=e},n.alt=function(n){return n.alt}}(PS["Control.Alt"]=PS["Control.Alt"]||{}),function(n){"use strict";(PS["Control.Apply"]=PS["Control.Apply"]||{}).arrayApply=function(n){return function(e){for(var t=n.length,r=e.length,a=new Array(t*r),o=0,u=0;u<t;u++)for(var i=n[u],l=0;l<r;l++)a[o++]=i(e[l]);return a}}}(),function(n){"use strict";var e=PS["Control.Apply"],t=PS["Control.Category"],r=PS["Data.Function"],a=PS["Data.Functor"],o=function(n,e){this.Functor0=n,this.apply=e},u=new o(function(){return a.functorArray},e.arrayApply),i=function(n){return n.apply};n.Apply=o,n.apply=i,n.applySecond=function(n){return function(e){return function(o){return i(n)(a.map(n.Functor0())(r.const(t.identity(t.categoryFn)))(e))(o)}}},n.lift2=function(n){return function(e){return function(t){return function(r){return i(n)(a.map(n.Functor0())(e)(t))(r)}}}},n.applyArray=u}(PS["Control.Apply"]=PS["Control.Apply"]||{}),function(n){"use strict";var e=PS["Control.Apply"],t=(PS["Data.Functor"],PS["Data.Unit"]),r=function(n){return n.pure};n.Applicative=function(n,e){this.Apply0=n,this.pure=e},n.pure=r,n.liftA1=function(n){return function(t){return function(a){return e.apply(n.Apply0())(r(n)(t))(a)}}},n.when=function(n){return function(e){return function(a){if(e)return a;if(!e)return r(n)(t.unit);throw new Error("Failed pattern match at Control.Applicative (line 57, column 1 - line 57, column 63): "+[e.constructor.name,a.constructor.name])}}}}(PS["Control.Applicative"]=PS["Control.Applicative"]||{}),function(n){"use strict";(PS["Control.Bind"]=PS["Control.Bind"]||{}).arrayBind=function(n){return function(e){for(var t=[],r=0,a=n.length;r<a;r++)Array.prototype.push.apply(t,e(n[r]));return t}}}(),function(n){"use strict";var e=PS["Control.Bind"],t=(PS["Control.Applicative"],PS["Control.Apply"]),r=PS["Control.Category"],a=PS["Data.Function"],o=(PS["Data.Functor"],PS["Data.Unit"],function(n,e){this.Apply0=n,this.bind=e}),u=function(n){this.discard=n},i=new o(function(){return t.applyArray},e.arrayBind),l=function(n){return n.bind},c=function(n){return a.flip(l(n))},f=new u(function(n){return l(n)});n.Bind=o,n.bind=l,n.bindFlipped=c,n.Discard=u,n.discard=function(n){return n.discard},n.join=function(n){return function(e){return l(n)(e)(r.identity(r.categoryFn))}},n.composeKleisli=function(n){return function(e){return function(t){return function(r){return l(n)(e(r))(t)}}}},n.composeKleisliFlipped=function(n){return function(e){return function(t){return function(r){return c(n)(e)(t(r))}}}},n.bindArray=i,n.discardUnit=f}(PS["Control.Bind"]=PS["Control.Bind"]||{}),function(n){"use strict";var e=PS["Control.Applicative"],t=(PS["Control.Apply"],PS["Control.Bind"]);PS["Data.Functor"],PS["Data.Unit"];n.Monad=function(n,e){this.Applicative0=n,this.Bind1=e},n.ap=function(n){return function(r){return function(a){return t.bind(n.Bind1())(r)(function(r){return t.bind(n.Bind1())(a)(function(t){return e.pure(n.Applicative0())(r(t))})})}}}}(PS["Control.Monad"]=PS["Control.Monad"]||{}),function(n){"use strict";PS["Control.Alt"],PS["Data.Functor"];n.Plus=function(n,e){this.Alt0=n,this.empty=e},n.empty=function(n){return n.empty}}(PS["Control.Plus"]=PS["Control.Plus"]||{}),function(n){"use strict";n.topInt=2147483647,n.bottomInt=-2147483648,n.topChar=String.fromCharCode(65535),n.bottomChar=String.fromCharCode(0)}(PS["Data.Bounded"]=PS["Data.Bounded"]||{}),function(n){"use strict";var e=PS["Data.Bounded"],t=PS["Data.Ord"],r=(PS["Data.Ordering"],PS["Data.Unit"],function(n,e,t){this.Ord0=n,this.bottom=e,this.top=t}),a=new r(function(){return t.ordInt},e.bottomInt,e.topInt),o=new r(function(){return t.ordChar},e.bottomChar,e.topChar);n.Bounded=r,n.bottom=function(n){return n.bottom},n.top=function(n){return n.top},n.boundedInt=a,n.boundedChar=o}(PS["Data.Bounded"]=PS["Data.Bounded"]||{}),function(n){"use strict";n.intDegree=function(n){return Math.min(Math.abs(n),2147483647)},n.intDiv=function(n){return function(e){return 0===e?0:e>0?Math.floor(n/e):-Math.floor(n/-e)}},n.intMod=function(n){return function(e){if(0===e)return 0;var t=Math.abs(e);return(n%t+t)%t}}}(PS["Data.EuclideanRing"]=PS["Data.EuclideanRing"]||{}),function(n){"use strict";var e=PS["Data.Ring"],t=(PS["Data.Semiring"],PS["Data.Symbol"],PS["Data.Unit"],function(n){this.Ring0=n}),r=new t(function(){return e.ringInt});n.CommutativeRing=t,n.commutativeRingInt=r}(PS["Data.CommutativeRing"]=PS["Data.CommutativeRing"]||{}),function(n){"use strict";var e=PS["Data.EuclideanRing"],t=(PS["Data.BooleanAlgebra"],PS["Data.CommutativeRing"]),r=(PS["Data.Eq"],PS["Data.HeytingAlgebra"],PS["Data.Ring"],PS["Data.Semiring"],function(n,e,t,r){this.CommutativeRing0=n,this.degree=e,this.div=t,this.mod=r}),a=new r(function(){return t.commutativeRingInt},e.intDegree,e.intDiv,e.intMod);n.EuclideanRing=r,n.degree=function(n){return n.degree},n.div=function(n){return n.div},n.mod=function(n){return n.mod},n.euclideanRingInt=a}(PS["Data.EuclideanRing"]=PS["Data.EuclideanRing"]||{}),function(n){"use strict";PS["Data.Boolean"],PS["Data.Eq"],PS["Data.EuclideanRing"],PS["Data.Ord"],PS["Data.Ordering"];var e=PS["Data.Semigroup"],t=(PS["Data.Symbol"],PS["Data.Unit"],PS["Record.Unsafe"],PS["Type.Data.RowList"],function(n,e){this.Semigroup0=n,this.mempty=e}),r=new t(function(){return e.semigroupString},""),a=new t(function(){return e.semigroupArray},[]),o=function(n){return n.mempty};n.Monoid=t,n.mempty=o,n.guard=function(n){return function(e){return function(t){if(e)return t;if(!e)return o(n);throw new Error("Failed pattern match at Data.Monoid (line 74, column 1 - line 74, column 49): "+[e.constructor.name,t.constructor.name])}}},n.monoidFn=function(n){return new t(function(){return e.semigroupFn(n.Semigroup0())},function(e){return o(n)})},n.monoidString=r,n.monoidArray=a}(PS["Data.Monoid"]=PS["Data.Monoid"]||{}),function(n){"use strict";PS["Control.Alt"],PS["Control.Alternative"],PS["Control.Applicative"];var e=PS["Control.Apply"],t=PS["Control.Bind"],r=PS["Control.Category"],a=(PS["Control.Extend"],PS["Control.Monad"],PS["Control.MonadZero"],PS["Control.Plus"],PS["Data.Bounded"],PS["Data.Eq"],PS["Data.Function"]),o=PS["Data.Functor"],u=(PS["Data.Functor.Invariant"],PS["Data.Monoid"],PS["Data.Ord"],PS["Data.Ordering"],PS["Data.Semigroup"],PS["Data.Show"],PS["Data.Unit"],PS.Prelude,function(){function n(){}return n.value=new n,n}()),i=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),l=function(n){return function(e){return function(t){if(t instanceof u)return n;if(t instanceof i)return e(t.value0);throw new Error("Failed pattern match at Data.Maybe (line 217, column 1 - line 217, column 51): "+[n.constructor.name,e.constructor.name,t.constructor.name])}}},c=l(!0)(a.const(!1)),f=l(!1)(a.const(!0)),s=new o.Functor(function(n){return function(e){return e instanceof i?new i(n(e.value0)):u.value}}),d=new e.Apply(function(){return s},function(n){return function(e){if(n instanceof i)return o.map(s)(n.value0)(e);if(n instanceof u)return u.value;throw new Error("Failed pattern match at Data.Maybe (line 67, column 1 - line 67, column 35): "+[n.constructor.name,e.constructor.name])}}),S=new t.Bind(function(){return d},function(n){return function(e){if(n instanceof i)return e(n.value0);if(n instanceof u)return u.value;throw new Error("Failed pattern match at Data.Maybe (line 125, column 1 - line 125, column 33): "+[n.constructor.name,e.constructor.name])}});n.Nothing=u,n.Just=i,n.maybe=l,n.fromMaybe=function(n){return l(n)(r.identity(r.categoryFn))},n.isJust=f,n.isNothing=c,n.fromJust=function(n){return function(n){if(n instanceof i)return n.value0;throw new Error("Failed pattern match at Data.Maybe (line 268, column 1 - line 268, column 46): "+[n.constructor.name])}},n.functorMaybe=s,n.applyMaybe=d,n.bindMaybe=S}(PS["Data.Maybe"]=PS["Data.Maybe"]||{}),function(n){"use strict";n.empty={},n._lookup=function(n,e,t,r){return t in r?e(r[t]):n}}(PS["Foreign.Object"]=PS["Foreign.Object"]||{}),function(n){"use strict";n.length=function(n){return n.length},n.cons=function(n){return function(e){return[n].concat(e)}},n.snoc=function(n){return function(e){var t=n.slice();return t.push(e),t}},n.concat=function(n){if(n.length<=1e4)return Array.prototype.concat.apply([],n);for(var e=[],t=0,r=n.length;t<r;t++)for(var a=n[t],o=0,u=a.length;o<u;o++)e.push(a[o]);return e},n.filter=function(n){return function(e){return e.filter(n)}},n.slice=function(n){return function(e){return function(t){return t.slice(n,e)}}},n.drop=function(n){return function(e){return n<1?e:e.slice(n)}}}(PS["Data.Array"]=PS["Data.Array"]||{}),function(n){"use strict";var e=PS["Control.Category"],t=function(n){return n.bimap};n.bimap=t,n.Bifunctor=function(n){this.bimap=n},n.rmap=function(n){return t(n)(e.identity(e.categoryFn))}}(PS["Data.Bifunctor"]=PS["Data.Bifunctor"]||{}),function(n){"use strict";n.foldrArray=function(n){return function(e){return function(t){for(var r=e,a=t.length-1;a>=0;a--)r=n(t[a])(r);return r}}},n.foldlArray=function(n){return function(e){return function(t){for(var r=e,a=t.length,o=0;o<a;o++)r=n(r)(t[o]);return r}}}}(PS["Data.Foldable"]=PS["Data.Foldable"]||{}),function(n){"use strict";PS["Control.Applicative"],PS["Control.Apply"],PS["Control.Bind"],PS["Control.Monad"],PS["Data.Bounded"],PS["Data.Eq"],PS["Data.Functor"];var e=PS["Data.HeytingAlgebra"],t=PS["Data.Monoid"],r=(PS["Data.Ord"],PS["Data.Semigroup"]),a=(PS["Data.Semiring"],PS["Data.Show"],PS.Prelude,function(n){return new r.Semigroup(function(t){return function(r){return e.disj(n)(t)(r)}})});n.Disj=function(n){return n},n.semigroupDisj=a,n.monoidDisj=function(n){return new t.Monoid(function(){return a(n)},e.ff(n))}}(PS["Data.Monoid.Disj"]=PS["Data.Monoid.Disj"]||{}),function(n){"use strict";PS["Control.Semigroupoid"],PS["Data.Function"];var e=PS["Data.Functor"],t=(PS["Data.Monoid.Additive"],PS["Data.Monoid.Conj"],PS["Data.Monoid.Disj"]),r=(PS["Data.Monoid.Dual"],PS["Data.Monoid.Endo"],PS["Data.Monoid.Multiplicative"],PS["Data.Semigroup.First"],PS["Data.Semigroup.Last"],PS.Prelude,function(n,e){this.unwrap=n,this.wrap=e}),a=function(n){return n.wrap},o=function(n){return n.unwrap},u=new r(function(n){return n},t.Disj);n.unwrap=o,n.wrap=a,n.Newtype=r,n.alaF=function(n){return function(t){return function(r){return function(u){return function(i){return function(i){return function(l){return e.map(t)(o(u))(i(e.map(n)(a(r))(l)))}}}}}}},n.newtypeDisj=u}(PS["Data.Newtype"]=PS["Data.Newtype"]||{}),function(n){"use strict";var e=PS["Data.Foldable"],t=(PS["Control.Alt"],PS["Control.Applicative"]),r=PS["Control.Apply"],a=(PS["Control.Bind"],PS["Control.Category"]),o=(PS["Control.Plus"],PS["Control.Semigroupoid"],PS["Data.Eq"],PS["Data.Function"]),u=PS["Data.Functor"],i=(PS["Data.HeytingAlgebra"],PS["Data.Maybe"]),l=(PS["Data.Maybe.First"],PS["Data.Maybe.Last"],PS["Data.Monoid"]),c=(PS["Data.Monoid.Additive"],PS["Data.Monoid.Conj"],PS["Data.Monoid.Disj"]),f=(PS["Data.Monoid.Dual"],PS["Data.Monoid.Endo"],PS["Data.Monoid.Multiplicative"],PS["Data.Newtype"]),s=(PS["Data.Ord"],PS["Data.Ordering"],PS["Data.Semigroup"]),d=(PS["Data.Semiring"],PS["Data.Unit"]),S=(PS.Prelude,function(n,e,t){this.foldMap=n,this.foldl=e,this.foldr=t}),P=function(n){return n.foldr},v=function(n){return function(e){return function(a){return P(e)(function(e){return r.applySecond(n.Apply0())(a(e))})(t.pure(n)(d.unit))}}},p=function(n){return n.foldl},m=new S(function(n){return function(e){return function(t){if(t instanceof i.Nothing)return l.mempty(n);if(t instanceof i.Just)return e(t.value0);throw new Error("Failed pattern match at Data.Foldable (line 129, column 1 - line 129, column 41): "+[e.constructor.name,t.constructor.name])}}},function(n){return function(e){return function(t){if(t instanceof i.Nothing)return e;if(t instanceof i.Just)return n(e)(t.value0);throw new Error("Failed pattern match at Data.Foldable (line 129, column 1 - line 129, column 41): "+[n.constructor.name,e.constructor.name,t.constructor.name])}}},function(n){return function(e){return function(t){if(t instanceof i.Nothing)return e;if(t instanceof i.Just)return n(t.value0)(e);throw new Error("Failed pattern match at Data.Foldable (line 129, column 1 - line 129, column 41): "+[n.constructor.name,e.constructor.name,t.constructor.name])}}}),g=function(n){return function(e){return function(t){return P(n)(function(n){return function(r){return s.append(e.Semigroup0())(t(n))(r)}})(l.mempty(e))}}},D=new S(function(n){return g(D)(n)},e.foldlArray,e.foldrArray),b=function(n){return n.foldMap};n.Foldable=S,n.foldr=P,n.foldl=p,n.foldMap=b,n.foldMapDefaultR=g,n.traverse_=v,n.for_=function(n){return function(e){return o.flip(v(n)(e))}},n.sequence_=function(n){return function(e){return v(n)(e)(a.identity(a.categoryFn))}},n.any=function(n){return function(e){return f.alaF(u.functorFn)(u.functorFn)(f.newtypeDisj)(f.newtypeDisj)(c.Disj)(b(n)(c.monoidDisj(e)))}},n.find=function(n){return function(e){return p(n)(function(n){return function(t){return n instanceof i.Nothing&&e(t)?new i.Just(t):n}})(i.Nothing.value)}},n.foldableArray=D,n.foldableMaybe=m}(PS["Data.Foldable"]=PS["Data.Foldable"]||{}),function(n){"use strict";PS["Control.Alt"],PS["Control.Applicative"];var e=PS["Control.Apply"],t=(PS["Control.Bind"],PS["Control.Extend"],PS["Control.Monad"],PS["Control.Semigroupoid"],PS["Data.Bifoldable"],PS["Data.Bifunctor"]),r=(PS["Data.Bitraversable"],PS["Data.Bounded"],PS["Data.Eq"],PS["Data.Foldable"],PS["Data.FoldableWithIndex"],PS["Data.Function"],PS["Data.Functor"]),a=(PS["Data.Functor.Invariant"],PS["Data.FunctorWithIndex"],PS["Data.Maybe"],PS["Data.Monoid"],PS["Data.Ord"],PS["Data.Ordering"],PS["Data.Semigroup"],PS["Data.Show"],PS["Data.Traversable"],PS["Data.TraversableWithIndex"],PS["Data.Unit"],PS.Prelude,function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}()),o=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),u=new r.Functor(function(n){return function(e){if(e instanceof a)return new a(e.value0);if(e instanceof o)return new o(n(e.value0));throw new Error("Failed pattern match at Data.Either (line 38, column 8 - line 38, column 52): "+[e.constructor.name])}}),i=new t.Bifunctor(function(n){return function(e){return function(t){if(t instanceof a)return new a(n(t.value0));if(t instanceof o)return new o(e(t.value0));throw new Error("Failed pattern match at Data.Either (line 46, column 1 - line 46, column 45): "+[n.constructor.name,e.constructor.name,t.constructor.name])}}}),l=new e.Apply(function(){return u},function(n){return function(e){if(n instanceof a)return new a(n.value0);if(n instanceof o)return r.map(u)(n.value0)(e);throw new Error("Failed pattern match at Data.Either (line 82, column 1 - line 82, column 41): "+[n.constructor.name,e.constructor.name])}});n.Left=a,n.Right=o,n.either=function(n){return function(e){return function(t){if(t instanceof a)return n(t.value0);if(t instanceof o)return e(t.value0);throw new Error("Failed pattern match at Data.Either (line 238, column 1 - line 238, column 64): "+[n.constructor.name,e.constructor.name,t.constructor.name])}}},n.functorEither=u,n.bifunctorEither=i,n.applyEither=l}(PS["Data.Either"]=PS["Data.Either"]||{}),function(n){"use strict";PS["Control.Alt"];var e=PS["Control.Applicative"],t=PS["Control.Apply"],r=PS["Control.Bind"],a=(PS["Control.Comonad"],PS["Control.Extend"],PS["Control.Lazy"],PS["Control.Monad"]),o=(PS["Data.BooleanAlgebra"],PS["Data.Bounded"],PS["Data.CommutativeRing"],PS["Data.Eq"],PS["Data.EuclideanRing"],PS["Data.Foldable"],PS["Data.FoldableWithIndex"],PS["Data.Functor"]),u=(PS["Data.Functor.Invariant"],PS["Data.FunctorWithIndex"],PS["Data.HeytingAlgebra"],PS["Data.Monoid"],PS["Data.Newtype"]),i=(PS["Data.Ord"],PS["Data.Ring"],PS["Data.Semigroup"],PS["Data.Semigroup.Foldable"],PS["Data.Semigroup.Traversable"],PS["Data.Semiring"],PS["Data.Show"],PS["Data.Traversable"],PS["Data.TraversableWithIndex"],PS["Data.Unit"],PS.Prelude,function(n){return n}),l=new u.Newtype(function(n){return n},i),c=new o.Functor(function(n){return function(e){return n(e)}}),f=new t.Apply(function(){return c},function(n){return function(e){return n(e)}}),s=new r.Bind(function(){return f},function(n){return function(e){return e(n)}}),d=new e.Applicative(function(){return f},i),S=new a.Monad(function(){return d},function(){return s});n.Identity=i,n.newtypeIdentity=l,n.functorIdentity=c,n.applyIdentity=f,n.applicativeIdentity=d,n.bindIdentity=s,n.monadIdentity=S}(PS["Data.Identity"]=PS["Data.Identity"]||{}),function(n){"use strict";n.pureE=function(n){return function(){return n}},n.bindE=function(n){return function(e){return function(){return e(n())()}}},n.foreachE=function(n){return function(e){return function(){for(var t=0,r=n.length;t<r;t++)e(n[t])()}}}}(PS.Effect=PS.Effect||{}),function(n){"use strict";var e=PS.Effect,t=PS["Control.Applicative"],r=PS["Control.Apply"],a=PS["Control.Bind"],o=PS["Control.Monad"],u=PS["Data.Functor"],i=(PS["Data.Monoid"],PS["Data.Semigroup"],PS.Prelude,new o.Monad(function(){return f},function(){return l})),l=new a.Bind(function(){return c},e.bindE),c=new r.Apply(function(){return s},o.ap(i)),f=new t.Applicative(function(){return c},e.pureE),s=new u.Functor(t.liftA1(f));n.functorEffect=s,n.applyEffect=c,n.applicativeEffect=f,n.bindEffect=l,n.monadEffect=i,n.foreachE=e.foreachE}(PS.Effect=PS.Effect||{}),function(n){"use strict";n.new=function(n){return function(){return{value:n}}},n.read=function(n){return function(){return n.value}},n["modify'"]=function(n){return function(e){return function(){var t=n(e.value);return e.value=t.state,t.value}}},n.write=function(n){return function(e){return function(){return e.value=n,{}}}}}(PS["Effect.Ref"]=PS["Effect.Ref"]||{}),function(n){"use strict";var e=PS["Effect.Ref"],t=(PS["Data.Function"],PS["Data.Functor"]),r=PS.Effect,a=(PS.Prelude,function(n){return e["modify'"](function(e){var t=n(e);return{state:t,value:t}})});n.modify=a,n.modify_=function(n){return function(e){return t.void(r.functorEffect)(a(n)(e))}},n.new=e.new,n.read=e.read,n["modify'"]=e["modify'"],n.write=e.write}(PS["Effect.Ref"]=PS["Effect.Ref"]||{}),function(n){"use strict";(PS["Partial.Unsafe"]=PS["Partial.Unsafe"]||{}).unsafePartial=function(n){return n()}}(),function(n){"use strict";(PS["Partial"]=PS["Partial"]||{}).crashWith=function(){return function(n){throw new Error(n)}}}(),function(n){"use strict";var e=PS.Partial;n.crashWith=e.crashWith}(PS.Partial=PS.Partial||{}),function(n){"use strict";var e=PS["Partial.Unsafe"],t=PS.Partial;n.unsafeCrashWith=function(n){return e.unsafePartial(function(e){return t.crashWith(e)(n)})}}(PS["Partial.Unsafe"]=PS["Partial.Unsafe"]||{}),function(n){"use strict";PS["Control.Applicative"];var e=PS["Control.Bind"],t=(PS["Control.Monad"],PS["Control.Semigroupoid"],PS["Data.Bifunctor"],PS["Data.Either"],PS["Data.Functor"]),r=(PS["Data.Identity"],PS["Data.Maybe"],PS["Data.Unit"],PS.Effect),a=PS["Effect.Ref"],o=(PS["Partial.Unsafe"],PS.Prelude,function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}()),u=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),i=function(n,e){this.Monad0=n,this.tailRecM=e},l=new i(function(){return r.monadEffect},function(n){return function(i){var l=function(n){if(n instanceof u)return n.value0;throw new Error("Failed pattern match at Control.Monad.Rec.Class (line 111, column 30 - line 111, column 44): "+[n.constructor.name])};return function(){var c=e.bindFlipped(r.bindEffect)(a.new)(n(i))();return function(){for(;!function(){var e=a.read(c)();if(e instanceof o){var t=n(e.value0)();a.write(t)(c)();return!1}if(e instanceof u)return!0;throw new Error("Failed pattern match at Control.Monad.Rec.Class (line 102, column 22 - line 107, column 28): "+[e.constructor.name])}(););}(),t.map(r.functorEffect)(l)(a.read(c))()}}});n.Loop=o,n.Done=u,n.MonadRec=i,n.tailRecM=function(n){return n.tailRecM},n.monadRecEffect=l}(PS["Control.Monad.Rec.Class"]=PS["Control.Monad.Rec.Class"]||{}),function(n){"use strict";PS["Control.Applicative"],PS["Control.Apply"],PS["Control.Biapplicative"],PS["Control.Biapply"],PS["Control.Bind"],PS["Control.Comonad"],PS["Control.Extend"],PS["Control.Lazy"],PS["Control.Monad"],PS["Control.Semigroupoid"],PS["Data.Bifoldable"],PS["Data.Bifunctor"],PS["Data.Bitraversable"],PS["Data.BooleanAlgebra"],PS["Data.Bounded"],PS["Data.CommutativeRing"],PS["Data.Distributive"],PS["Data.Eq"],PS["Data.Foldable"],PS["Data.FoldableWithIndex"],PS["Data.Function"];var e=PS["Data.Functor"],t=(PS["Data.Functor.Invariant"],PS["Data.FunctorWithIndex"],PS["Data.HeytingAlgebra"],PS["Data.Maybe"],PS["Data.Maybe.First"],PS["Data.Monoid"],PS["Data.Newtype"],PS["Data.Ord"],PS["Data.Ordering"],PS["Data.Ring"],PS["Data.Semigroup"],PS["Data.Semigroup.Foldable"],PS["Data.Semigroup.Traversable"],PS["Data.Semiring"],PS["Data.Show"],PS["Data.Traversable"],PS["Data.TraversableWithIndex"],PS["Data.Unit"],PS.Prelude,PS["Type.Equality"],function(){function n(n,e){this.value0=n,this.value1=e}return n.create=function(e){return function(t){return new n(e,t)}},n}()),r=new e.Functor(function(n){return function(e){return new t(e.value0,n(e.value1))}});n.Tuple=t,n.fst=function(n){return n.value0},n.snd=function(n){return n.value1},n.functorTuple=r}(PS["Data.Tuple"]=PS["Data.Tuple"]||{}),function(n){"use strict";(PS["Data.Unfoldable"]=PS["Data.Unfoldable"]||{}).unfoldrArrayImpl=function(n){return function(e){return function(t){return function(r){return function(a){return function(o){for(var u=[],i=o;;){var l=a(i);if(n(l))return u;var c=e(l);u.push(t(c)),i=r(c)}}}}}}}}(),function(n){"use strict";(PS["Data.Unfoldable1"]=PS["Data.Unfoldable1"]||{}).unfoldr1ArrayImpl=function(n){return function(e){return function(t){return function(r){return function(a){return function(o){for(var u=[],i=o;;){var l=a(i);u.push(t(l));var c=r(l);if(n(c))return u;i=e(c)}}}}}}}}(),function(n){"use strict";var e=PS["Data.Unfoldable1"],t=(PS["Data.Boolean"],PS["Data.Eq"],PS["Data.Maybe"]),r=(PS["Data.Ord"],PS["Data.Ring"],PS["Data.Semigroup.Traversable"],PS["Data.Semiring"],PS["Data.Tuple"]),a=(PS["Partial.Unsafe"],PS.Prelude,function(n){this.unfoldr1=n}),o=new a(e.unfoldr1ArrayImpl(t.isNothing)(t.fromJust())(r.fst)(r.snd));n.Unfoldable1=a,n.unfoldr1=function(n){return n.unfoldr1},n.unfoldable1Array=o}(PS["Data.Unfoldable1"]=PS["Data.Unfoldable1"]||{}),function(n){"use strict";var e=PS["Data.Unfoldable"],t=(PS["Data.Function"],PS["Data.Functor"],PS["Data.Maybe"]),r=(PS["Data.Ord"],PS["Data.Ring"],PS["Data.Traversable"],PS["Data.Tuple"]),a=PS["Data.Unfoldable1"],o=(PS["Data.Unit"],PS["Partial.Unsafe"],PS.Prelude,function(n,e){this.Unfoldable10=n,this.unfoldr=e}),u=new o(function(){return a.unfoldable1Array},e.unfoldrArrayImpl(t.isNothing)(t.fromJust())(r.fst)(r.snd));n.Unfoldable=o,n.unfoldr=function(n){return n.unfoldr},n.unfoldableArray=u}(PS["Data.Unfoldable"]=PS["Data.Unfoldable"]||{}),function(n){"use strict";(PS["Unsafe.Coerce"]=PS["Unsafe.Coerce"]||{}).unsafeCoerce=function(n){return n}}(),function(n){"use strict";var e=PS["Unsafe.Coerce"];n.unsafeCoerce=e.unsafeCoerce}(PS["Unsafe.Coerce"]=PS["Unsafe.Coerce"]||{}),function(n){"use strict";var e=PS["Data.Array"],t=(PS["Control.Alt"],PS["Control.Alternative"],PS["Control.Applicative"],PS["Control.Apply"],PS["Control.Bind"]),r=(PS["Control.Category"],PS["Control.Lazy"],PS["Control.Monad.Rec.Class"],PS["Control.Monad.ST"],PS["Control.Monad.ST.Internal"],PS["Control.Semigroupoid"],PS["Data.Array.NonEmpty.Internal"],PS["Data.Array.ST"],PS["Data.Array.ST.Iterator"],PS["Data.Boolean"],PS["Data.Eq"],PS["Data.Foldable"],PS["Data.Function"]),a=(PS["Data.Functor"],PS["Data.HeytingAlgebra"],PS["Data.Maybe"]),o=(PS["Data.Ord"],PS["Data.Ordering"],PS["Data.Ring"],PS["Data.Semigroup"],PS["Data.Semiring"],PS["Data.Traversable"],PS["Data.Tuple"],PS["Data.Unfoldable"],PS["Partial.Unsafe"],PS.Prelude,PS["Unsafe.Coerce"],function(n){return[n]}),u=r.flip(t.bind(t.bindArray));n.singleton=o,n.concatMap=u,n.mapMaybe=function(n){return u(function(e){return a.maybe([])(o)(n(e))})},n.length=e.length,n.cons=e.cons,n.snoc=e.snoc,n.filter=e.filter,n.drop=e.drop}(PS["Data.Array"]=PS["Data.Array"]||{}),function(n){"use strict";(PS["Foreign.Object.ST"]=PS["Foreign.Object.ST"]||{}).new=function(){return{}}}(),function(n){"use strict";var e=PS["Foreign.Object.ST"];PS["Control.Monad.ST"],PS["Data.Maybe"];n.new=e.new}(PS["Foreign.Object.ST"]=PS["Foreign.Object.ST"]||{}),function(n){"use strict";var e=PS["Foreign.Object"],t=(PS["Control.Applicative"],PS["Control.Apply"],PS["Control.Bind"],PS["Control.Category"],PS["Control.Monad.ST"],PS["Control.Monad.ST.Internal"],PS["Control.Semigroupoid"],PS["Data.Array"],PS["Data.Eq"],PS["Data.Foldable"],PS["Data.FoldableWithIndex"],PS["Data.Function"],PS["Data.Function.Uncurried"]),r=(PS["Data.Functor"],PS["Data.FunctorWithIndex"],PS["Data.HeytingAlgebra"],PS["Data.Maybe"]),a=(PS["Data.Monoid"],PS["Data.Ord"],PS["Data.Semigroup"],PS["Data.Show"],PS["Data.Traversable"],PS["Data.TraversableWithIndex"],PS["Data.Tuple"],PS["Data.Unfoldable"],PS["Foreign.Object.ST"],PS.Prelude,PS["Type.Row.Homogeneous"],PS["Unsafe.Coerce"],t.runFn4(e._lookup)(r.Nothing.value)(r.Just.create));n.lookup=a,n.empty=e.empty}(PS["Foreign.Object"]=PS["Foreign.Object"]||{}),function(n){"use strict";var e=PS["Data.Argonaut.Core"],t=(PS["Data.Eq"],PS["Data.Function"],PS["Data.Function.Uncurried"],PS["Data.Maybe"],PS["Data.Ord"],PS["Data.Ordering"],PS["Foreign.Object"]),r=(PS.Prelude,e.fromObject(t.empty));n.jsonEmptyObject=r,n.stringify=e.stringify}(PS["Data.Argonaut.Core"]=PS["Data.Argonaut.Core"]||{}),function(n){"use strict";n.replace=function(n){return function(e){return function(t){return t.replace(n,e)}}},n.replaceAll=function(n){return function(e){return function(t){return t.replace(new RegExp(n.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&"),"g"),e)}}},n.split=function(n){return function(e){return e.split(n)}},n.joinWith=function(n){return function(e){return e.join(n)}}}(PS["Data.String.Common"]=PS["Data.String.Common"]||{}),function(n){"use strict";var e=PS["Data.String.Common"];PS["Data.Eq"],PS["Data.Ordering"],PS["Data.String.Pattern"],PS.Prelude;n.null=function(n){return""===n},n.replaceAll=e.replaceAll,n.split=e.split,n.joinWith=e.joinWith}(PS["Data.String.Common"]=PS["Data.String.Common"]||{}),function(n){"use strict";n.unsafeStringify=function(n){return JSON.stringify(n)},n.unsafeDecodeURIComponent=decodeURIComponent,n.unsafeEncodeURIComponent=encodeURIComponent}(PS["Global.Unsafe"]=PS["Global.Unsafe"]||{}),function(n){"use strict";var e=PS["Global.Unsafe"];n.unsafeStringify=e.unsafeStringify,n.unsafeDecodeURIComponent=e.unsafeDecodeURIComponent,n.unsafeEncodeURIComponent=e.unsafeEncodeURIComponent}(PS["Global.Unsafe"]=PS["Global.Unsafe"]||{}),function(n){"use strict";PS["Control.Semigroupoid"],PS["Data.Eq"];var e,t=PS["Data.Functor"],r=PS["Data.Maybe"],a=(PS["Data.Monoid"],PS["Data.Newtype"],PS["Data.Ord"],PS["Data.Semigroup"],PS["Data.Show"],PS["Data.String"],PS["Data.String.Common"]),o=(PS["Data.Tuple"],PS["Global.Unsafe"]),u=(PS.Prelude,function(n){return n}),i=(e=function(n){if(n.value1 instanceof r.Nothing)return o.unsafeEncodeURIComponent(n.value0);if(n.value1 instanceof r.Just)return o.unsafeEncodeURIComponent(n.value0)+"="+o.unsafeEncodeURIComponent(n.value1.value0);throw new Error("Failed pattern match at Data.FormURLEncoded (line 35, column 18 - line 37, column 89): "+[n.constructor.name])},function(n){return a.joinWith("&")(t.map(t.functorArray)(e)(u(n)))});n.toArray=u,n.encode=i}(PS["Data.FormURLEncoded"]=PS["Data.FormURLEncoded"]||{}),function(n){"use strict";PS["Data.Eq"];var e=PS["Data.Newtype"],t=(PS["Data.Ord"],PS["Data.Semigroup"],PS["Data.Show"],PS.Prelude,function(n){return n}),r=new e.Newtype(function(n){return n},t);n.MediaType=t,n.newtypeMediaType=r}(PS["Data.MediaType"]=PS["Data.MediaType"]||{}),function(n){"use strict";PS["Data.MediaType"];n.applicationFormURLEncoded="application/x-www-form-urlencoded",n.applicationJSON="application/json"}(PS["Data.MediaType.Common"]=PS["Data.MediaType.Common"]||{}),function(n){"use strict";PS["Data.Argonaut.Core"],PS["Data.ArrayBuffer.Types"],PS["Data.FormURLEncoded"];var e=PS["Data.Maybe"],t=(PS["Data.MediaType"],PS["Data.MediaType.Common"]),r=(PS["Web.DOM.Document"],PS["Web.File.Blob"],PS["Web.XHR.FormData"],function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}()),a=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),o=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),u=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),i=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),l=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),c=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),f=u.create;n.ArrayView=r,n.Blob=a,n.Document=o,n.String=u,n.FormData=i,n.FormURLEncoded=l,n.Json=c,n.string=f,n.toMediaType=function(n){return n instanceof l?new e.Just(t.applicationFormURLEncoded):n instanceof c?new e.Just(t.applicationJSON):e.Nothing.value}}(PS["Affjax.RequestBody"]=PS["Affjax.RequestBody"]||{}),function(n){"use strict";PS["Data.Eq"],PS["Data.HeytingAlgebra"];var e=PS["Data.MediaType"],t=PS["Data.Newtype"],r=(PS["Data.Semigroup"],PS["Data.Show"],PS.Prelude,function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}()),a=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),o=function(){function n(n,e){this.value0=n,this.value1=e}return n.create=function(e){return function(t){return new n(e,t)}},n}();n.Accept=r,n.ContentType=a,n.RequestHeader=o,n.requestHeaderName=function(n){if(n instanceof r)return"Accept";if(n instanceof a)return"Content-Type";if(n instanceof o)return n.value0;throw new Error("Failed pattern match at Affjax.RequestHeader (line 24, column 1 - line 24, column 45): "+[n.constructor.name])},n.requestHeaderValue=function(n){if(n instanceof r)return t.unwrap(e.newtypeMediaType)(n.value0);if(n instanceof a)return t.unwrap(e.newtypeMediaType)(n.value0);if(n instanceof o)return n.value1;throw new Error("Failed pattern match at Affjax.RequestHeader (line 29, column 1 - line 29, column 46): "+[n.constructor.name])}}(PS["Affjax.RequestHeader"]=PS["Affjax.RequestHeader"]||{}),function(n){"use strict";n.unsafeToForeign=function(n){return n},n.unsafeFromForeign=function(n){return n},n.typeOf=function(n){return typeof n},n.tagOf=function(n){return Object.prototype.toString.call(n).slice(8,-1)}}(PS.Foreign=PS.Foreign||{}),function(n){"use strict";var e=PS["Control.Applicative"],t=(PS["Control.Bind"],PS["Control.Semigroupoid"],PS["Data.Either"]),r=(PS["Data.Function"],PS["Data.Functor"]),a=(PS["Data.Maybe"],PS["Data.Unit"],PS.Prelude,function(n){return n.catchError});n.catchError=a,n.throwError=function(n){return n.throwError},n.MonadThrow=function(n,e){this.Monad0=n,this.throwError=e},n.MonadError=function(n,e){this.MonadThrow0=n,this.catchError=e},n.try=function(n){return function(o){return a(n)(r.map(n.MonadThrow0().Monad0().Bind1().Apply0().Functor0())(t.Right.create)(o))(function(r){return e.pure(n.MonadThrow0().Monad0().Applicative0())(t.Left.create(r))})}}}(PS["Control.Monad.Error.Class"]=PS["Control.Monad.Error.Class"]||{}),function(n){"use strict";var e=PS["Data.Tuple"],t=PS["Data.Unit"],r=(PS.Prelude,function(n){return n.state});n.state=r,n.MonadState=function(n,e){this.Monad0=n,this.state=e},n.get=function(n){return r(n)(function(n){return new e.Tuple(n,n)})},n.gets=function(n){return function(t){return r(n)(function(n){return new e.Tuple(t(n),n)})}},n.modify=function(n){return function(t){return r(n)(function(n){var r=t(n);return new e.Tuple(r,r)})}},n.modify_=function(n){return function(a){return r(n)(function(n){return new e.Tuple(t.unit,a(n))})}}}(PS["Control.Monad.State.Class"]=PS["Control.Monad.State.Class"]||{}),function(n){"use strict";PS.Prelude;n.lift=function(n){return n.lift},n.MonadTrans=function(n){this.lift=n}}(PS["Control.Monad.Trans.Class"]=PS["Control.Monad.Trans.Class"]||{}),function(n){"use strict";PS["Control.Category"],PS["Control.Monad"],PS.Effect;n.liftEffect=function(n){return n.liftEffect},n.MonadEffect=function(n,e){this.Monad0=n,this.liftEffect=e}}(PS["Effect.Class"]=PS["Effect.Class"]||{}),function(n){"use strict";PS["Control.Alt"],PS["Control.Alternative"];var e=PS["Control.Applicative"],t=PS["Control.Apply"],r=PS["Control.Bind"],a=(PS["Control.Category"],PS["Control.Monad"]),o=(PS["Control.Monad.Cont.Class"],PS["Control.Monad.Error.Class"]),u=(PS["Control.Monad.Reader.Class"],PS["Control.Monad.Rec.Class"],PS["Control.Monad.State.Class"],PS["Control.Monad.Trans.Class"],PS["Control.Monad.Writer.Class"],PS["Control.MonadPlus"],PS["Control.MonadZero"],PS["Control.Plus"],PS["Control.Semigroupoid"],PS["Data.Either"]),i=(PS["Data.Function"],PS["Data.Functor"]),l=(PS["Data.Monoid"],PS["Data.Newtype"],PS["Data.Semigroup"],PS["Data.Tuple"],PS["Effect.Class"],PS.Prelude,function(n){return n}),c=function(n){return function(e){return n(e)}},f=function(n){return new i.Functor(function(e){return c(i.map(n)(i.map(u.functorEither)(e)))})},s=function(n){return new a.Monad(function(){return P(n)},function(){return d(n)})},d=function(n){return new r.Bind(function(){return S(n)},function(t){return function(a){return r.bind(n.Bind1())(t)(u.either(function(t){return e.pure(n.Applicative0())(u.Left.create(t))})(function(n){return a(n)}))}})},S=function(n){return new t.Apply(function(){return f(n.Bind1().Apply0().Functor0())},a.ap(s(n)))},P=function(n){return new e.Applicative(function(){return S(n)},function(t){return l(e.pure(n.Applicative0())(u.Right.create(t)))})};n.ExceptT=l,n.runExceptT=function(n){return n},n.mapExceptT=c,n.functorExceptT=f,n.applyExceptT=S,n.applicativeExceptT=P,n.bindExceptT=d,n.monadExceptT=s,n.monadThrowExceptT=function(n){return new o.MonadThrow(function(){return s(n)},function(t){return l(e.pure(n.Applicative0())(u.Left.create(t)))})}}(PS["Control.Monad.Except.Trans"]=PS["Control.Monad.Except.Trans"]||{}),function(n){"use strict";PS["Control.Monad.Error.Class"];var e=PS["Control.Monad.Except.Trans"],t=(PS["Control.Semigroupoid"],PS["Data.Either"],PS["Data.Identity"]),r=PS["Data.Newtype"];PS.Prelude;n.runExcept=function(n){return r.unwrap(t.newtypeIdentity)(e.runExceptT(n))}}(PS["Control.Monad.Except"]=PS["Control.Monad.Except"]||{}),function(n){"use strict";PS["Control.Alt"],PS["Control.Alternative"],PS["Control.Applicative"],PS["Control.Apply"],PS["Control.Category"];var e=PS["Control.Plus"],t=(PS["Control.Semigroupoid"],PS["Data.Eq"],PS["Data.Foldable"],PS["Data.FoldableWithIndex"],PS["Data.Function"],PS["Data.Functor"],PS["Data.FunctorWithIndex"],PS["Data.HeytingAlgebra"],PS["Data.Maybe"],PS["Data.Ord"],PS["Data.Ordering"],PS["Data.Semigroup"],PS["Data.Semigroup.Foldable"],PS["Data.Show"],PS["Data.Traversable"],PS["Data.TraversableWithIndex"],PS["Data.Tuple"],PS["Data.Unfoldable"],PS["Data.Unfoldable1"],PS.Prelude,function(){function n(n,e){this.value0=n,this.value1=e}return n.create=function(e){return function(t){return new n(e,t)}},n}());n.NonEmpty=t,n.singleton=function(n){return function(r){return new t(r,e.empty(n))}}}(PS["Data.NonEmpty"]=PS["Data.NonEmpty"]||{}),function(n){"use strict";var e=PS["Control.Alt"],t=(PS["Control.Alternative"],PS["Control.Applicative"]),r=PS["Control.Apply"],a=(PS["Control.Bind"],PS["Control.Category"],PS["Control.Comonad"],PS["Control.Extend"],PS["Control.Monad"],PS["Control.MonadPlus"],PS["Control.MonadZero"],PS["Control.Plus"]),o=(PS["Control.Semigroupoid"],PS["Data.Eq"],PS["Data.Foldable"]),u=(PS["Data.FoldableWithIndex"],PS["Data.Function"]),i=PS["Data.Functor"],l=(PS["Data.FunctorWithIndex"],PS["Data.HeytingAlgebra"],PS["Data.Maybe"],PS["Data.Monoid"]),c=(PS["Data.Newtype"],PS["Data.NonEmpty"],PS["Data.Ord"],PS["Data.Ordering"],PS["Data.Ring"],PS["Data.Semigroup"]),f=(PS["Data.Semigroup.Foldable"],PS["Data.Semigroup.Traversable"],PS["Data.Semiring"],PS["Data.Show"],PS["Data.Traversable"],PS["Data.TraversableWithIndex"],PS["Data.Tuple"],PS["Data.Unfoldable"],PS["Data.Unfoldable1"],PS.Prelude,function(){function n(){}return n.value=new n,n}()),s=function(){function n(n,e){this.value0=n,this.value1=e}return n.create=function(e){return function(t){return new n(e,t)}},n}(),d=new o.Foldable(function(n){return function(e){return o.foldl(d)(function(t){return function(r){return c.append(n.Semigroup0())(t)(e(r))}})(l.mempty(n))}},function(n){return function(e){return function(t){var r,a=e,o=!1;function u(e,r){if(r instanceof f)return o=!0,e;if(r instanceof s)return a=n(e)(r.value0),void(t=r.value1);throw new Error("Failed pattern match at Data.List.Types (line 81, column 12 - line 83, column 30): "+[r.constructor.name])}for(;!o;)r=u(a,t);return r}}},function(n){return function(e){var t=o.foldl(d)(u.flip(s.create))(f.value);return function(r){return o.foldl(d)(u.flip(n))(e)(t(r))}}}),S=new i.Functor(function(n){return o.foldr(d)(function(e){return function(t){return new s(n(e),t)}})(f.value)}),P=new c.Semigroup(function(n){return function(e){return o.foldr(d)(s.create)(e)(n)}}),v=new r.Apply(function(){return S},function(n){return function(e){if(n instanceof f)return f.value;if(n instanceof s)return c.append(P)(i.map(S)(n.value0)(e))(r.apply(v)(n.value1)(e));throw new Error("Failed pattern match at Data.List.Types (line 127, column 1 - line 127, column 33): "+[n.constructor.name,e.constructor.name])}}),p=new t.Applicative(function(){return v},function(n){return new s(n,f.value)}),m=new e.Alt(function(){return S},c.append(P)),g=new a.Plus(function(){return m},f.value);n.Nil=f,n.Cons=s,n.NonEmptyList=function(n){return n},n.semigroupList=P,n.functorList=S,n.foldableList=d,n.applyList=v,n.applicativeList=p,n.altList=m,n.plusList=g}(PS["Data.List.Types"]=PS["Data.List.Types"]||{}),function(n){"use strict";PS["Control.Alt"],PS["Control.Alternative"],PS["Control.Applicative"],PS["Control.Apply"],PS["Control.Bind"],PS["Control.Category"],PS["Control.Lazy"],PS["Control.Monad.Rec.Class"],PS["Control.Semigroupoid"],PS["Data.Bifunctor"],PS["Data.Boolean"],PS["Data.Eq"];var e,t=PS["Data.Foldable"],r=(PS["Data.Function"],PS["Data.Functor"],PS["Data.FunctorWithIndex"],PS["Data.HeytingAlgebra"],PS["Data.List.Types"]),a=(PS["Data.Maybe"],PS["Data.Newtype"],PS["Data.NonEmpty"],PS["Data.Ord"],PS["Data.Ordering"],PS["Data.Ring"],PS["Data.Semigroup"],PS["Data.Semiring"],PS["Data.Show"],PS["Data.Traversable"],PS["Data.Tuple"],PS["Data.Unfoldable"],PS["Data.Unit"],PS.Prelude,e=r.Nil.value,function(n){var t,a=e,o=!1;function u(e,t){if(t instanceof r.Nil)return o=!0,e;if(t instanceof r.Cons)return a=new r.Cons(t.value0,e),void(n=t.value1);throw new Error("Failed pattern match at Data.List (line 368, column 3 - line 368, column 19): "+[e.constructor.name,t.constructor.name])}for(;!o;)t=u(a,n);return t});n.fromFoldable=function(n){return t.foldr(n)(r.Cons.create)(r.Nil.value)},n.null=function(n){return n instanceof r.Nil},n.reverse=a}(PS["Data.List"]=PS["Data.List"]||{}),function(n){"use strict";PS["Control.Bind"],PS["Control.Category"],PS["Control.Semigroupoid"],PS["Data.Boolean"],PS["Data.Eq"],PS["Data.Foldable"],PS["Data.Function"],PS["Data.Functor"],PS["Data.FunctorWithIndex"],PS["Data.List"];var e=PS["Data.List.Types"],t=(PS["Data.Maybe"],PS["Data.NonEmpty"]);PS["Data.Ord"],PS["Data.Ring"],PS["Data.Semigroup"],PS["Data.Semigroup.Foldable"],PS["Data.Semigroup.Traversable"],PS["Data.Semiring"],PS["Data.Traversable"],PS["Data.Tuple"],PS["Data.Unfoldable"],PS["Partial.Unsafe"],PS.Prelude;n.singleton=function(n){return e.NonEmptyList(t.singleton(e.plusList)(n))},n.cons=function(n){return function(r){return new t.NonEmpty(n,new e.Cons(r.value0,r.value1))}},n.head=function(n){return n.value0}}(PS["Data.List.NonEmpty"]=PS["Data.List.NonEmpty"]||{}),function(n){"use strict";n.singleton=function(n){return n},n.length=function(n){return n.length},n.drop=function(n){return function(e){return e.substring(n)}}}(PS["Data.String.CodeUnits"]=PS["Data.String.CodeUnits"]||{}),function(n){"use strict";(PS["Data.String.Unsafe"]=PS["Data.String.Unsafe"]||{}).charAt=function(n){return function(e){if(n>=0&&n<e.length)return e.charAt(n);throw new Error("Data.String.Unsafe.charAt: Invalid index.")}}}(),function(n){"use strict";var e=PS["Data.String.Unsafe"];n.charAt=e.charAt}(PS["Data.String.Unsafe"]=PS["Data.String.Unsafe"]||{}),function(n){"use strict";var e=PS["Data.String.CodeUnits"];PS["Control.Semigroupoid"],PS["Data.Boolean"],PS["Data.Eq"],PS["Data.Function"],PS["Data.HeytingAlgebra"],PS["Data.Maybe"],PS["Data.Ord"],PS["Data.Ring"],PS["Data.Semiring"],PS["Data.String.Pattern"],PS["Data.String.Unsafe"],PS.Prelude;n.singleton=e.singleton,n.length=e.length,n.drop=e.drop}(PS["Data.String.CodeUnits"]=PS["Data.String.CodeUnits"]||{}),function(n){"use strict";var e=PS.Foreign,t=PS["Control.Applicative"],r=PS["Control.Monad.Error.Class"],a=(PS["Control.Monad.Except"],PS["Control.Monad.Except.Trans"]),o=(PS["Control.Semigroupoid"],PS["Data.Boolean"]),u=(PS["Data.Either"],PS["Data.Eq"],PS["Data.Function"],PS["Data.HeytingAlgebra"],PS["Data.Identity"]),i=(PS["Data.Int"],PS["Data.List.NonEmpty"]),l=(PS["Data.Maybe"],PS["Data.Ord"],PS["Data.Ordering"],PS["Data.Semigroup"],PS["Data.Show"],PS["Data.String.CodeUnits"],PS.Prelude,function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}()),c=function(){function n(n,e){this.value0=n,this.value1=e}return n.create=function(e){return function(t){return new n(e,t)}},n}(),f=function(n){return r.throwError(a.monadThrowExceptT(u.monadIdentity))(i.singleton(n))},s=function(n){return function(r){if(e.tagOf(r)===n)return t.pure(a.applicativeExceptT(u.monadIdentity))(e.unsafeFromForeign(r));if(o.otherwise)return f(new c(n,e.tagOf(r)));throw new Error("Failed pattern match at Foreign (line 106, column 1 - line 106, column 55): "+[n.constructor.name,r.constructor.name])}},d=s("Boolean"),S=s("String");n.ForeignError=l,n.TypeMismatch=c,n.unsafeReadTagged=s,n.readString=S,n.readBoolean=d,n.fail=f,n.unsafeToForeign=e.unsafeToForeign,n.typeOf=e.typeOf}(PS.Foreign=PS.Foreign||{}),function(n){"use strict";var e=PS["Control.Category"],t=(PS["Data.Argonaut.Core"],PS["Data.ArrayBuffer.Types"],PS["Data.Maybe"]),r=(PS["Data.MediaType"],PS["Data.MediaType.Common"]),a=(PS.Foreign,PS.Prelude,PS["Web.DOM.Document"],PS["Web.File.Blob"],function(){function n(n,e){this.value0=n,this.value1=e}return n.create=function(e){return function(t){return new n(e,t)}},n}()),o=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),u=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),i=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),l=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),c=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),f=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),s=new l(e.identity(e.categoryFn)),d=new f(e.identity(e.categoryFn));n.ArrayBuffer=o,n.Blob=u,n.Document=i,n.Json=l,n.String=c,n.Ignore=f,n.json=s,n.ignore=d,n.toResponseType=function(n){if(n instanceof o)return"arraybuffer";if(n instanceof u)return"blob";if(n instanceof i)return"document";if(n instanceof l)return"text";if(n instanceof c)return"text";if(n instanceof f)return"";throw new Error("Failed pattern match at Affjax.ResponseFormat (line 46, column 3 - line 54, column 1): "+[n.constructor.name])},n.toMediaType=function(n){return n instanceof l?new t.Just(r.applicationJSON):t.Nothing.value},n.ResponseFormatError=a}(PS["Affjax.ResponseFormat"]=PS["Affjax.ResponseFormat"]||{}),function(n){"use strict";PS["Data.Eq"],PS["Data.HeytingAlgebra"],PS["Data.Semigroup"],PS["Data.Show"],PS.Prelude;var e=function(){function n(n,e){this.value0=n,this.value1=e}return n.create=function(e){return function(t){return new n(e,t)}},n}();n.responseHeader=function(n){return function(t){return new e(n,t)}}}(PS["Affjax.ResponseHeader"]=PS["Affjax.ResponseHeader"]||{}),function(n){"use strict";PS["Control.Alt"],PS["Control.Alternative"],PS["Control.Applicative"],PS["Control.Apply"],PS["Control.Bind"],PS["Control.Monad.Cont.Trans"],PS["Control.Monad.Except.Trans"],PS["Control.Monad.Maybe.Trans"],PS["Control.Monad.Reader.Trans"],PS["Control.Monad.Writer.Trans"],PS["Control.Plus"],PS["Control.Semigroupoid"],PS["Data.Either"],PS["Data.Function"],PS["Data.Functor"],PS["Data.Functor.Compose"],PS["Data.Maybe"],PS["Data.Newtype"],PS["Data.Unit"],PS["Effect.Class"],PS["Effect.Ref"],PS.Prelude;n.parallel=function(n){return n.parallel},n.sequential=function(n){return n.sequential},n.Parallel=function(n,e,t,r){this.Applicative1=n,this.Monad0=e,this.parallel=t,this.sequential=r}}(PS["Control.Parallel.Class"]=PS["Control.Parallel.Class"]||{}),function(n){"use strict";PS["Control.Alternative"],PS["Control.Apply"];var e=PS["Control.Category"],t=PS["Control.Parallel.Class"],r=(PS["Control.Semigroupoid"],PS["Data.Foldable"]),a=(PS["Data.Traversable"],PS.Prelude,function(n){return function(e){return function(a){return function(o){return t.sequential(n)(r.traverse_(n.Applicative1())(e)(function(e){return t.parallel(n)(a(e))})(o))}}}});n.parTraverse_=a,n.parSequence_=function(n){return function(t){return a(n)(t)(e.identity(e.categoryFn))}}}(PS["Control.Parallel"]=PS["Control.Parallel"]||{}),function(n){"use strict";(PS["Data.Argonaut.Parser"]=PS["Data.Argonaut.Parser"]||{})._jsonParser=function(n,e,t){try{return e(JSON.parse(t))}catch(e){return n(e.message)}}}(),function(n){"use strict";var e=PS["Data.Argonaut.Parser"],t=(PS["Data.Argonaut.Core"],PS["Data.Either"]);PS["Data.Function.Uncurried"];n.jsonParser=function(n){return e._jsonParser(t.Left.create,t.Right.create,n)}}(PS["Data.Argonaut.Parser"]=PS["Data.Argonaut.Parser"]||{}),function(n){"use strict";var e=PS["Data.Either"],t=(PS["Data.Eq"],PS["Data.Ord"],PS["Data.Ordering"],PS["Data.Semigroup"],PS["Data.Show"]),r=(PS["Data.String"],PS["Data.String.Common"],PS.Prelude,function(){function n(){}return n.value=new n,n}()),a=function(){function n(){}return n.value=new n,n}(),o=function(){function n(){}return n.value=new n,n}(),u=function(){function n(){}return n.value=new n,n}(),i=function(){function n(){}return n.value=new n,n}(),l=function(){function n(){}return n.value=new n,n}(),c=function(){function n(){}return n.value=new n,n}(),f=function(){function n(){}return n.value=new n,n}(),s=function(){function n(){}return n.value=new n,n}(),d=function(){function n(){}return n.value=new n,n}(),S=function(){function n(){}return n.value=new n,n}(),P=function(){function n(){}return n.value=new n,n}(),v=function(){function n(){}return n.value=new n,n}(),p=function(){function n(){}return n.value=new n,n}(),m=function(){function n(){}return n.value=new n,n}(),g=function(){function n(){}return n.value=new n,n}(),D=function(n){return n},b=new t.Show(function(n){if(n instanceof r)return"OPTIONS";if(n instanceof a)return"GET";if(n instanceof o)return"HEAD";if(n instanceof u)return"POST";if(n instanceof i)return"PUT";if(n instanceof l)return"DELETE";if(n instanceof c)return"TRACE";if(n instanceof f)return"CONNECT";if(n instanceof s)return"PROPFIND";if(n instanceof d)return"PROPPATCH";if(n instanceof S)return"MKCOL";if(n instanceof P)return"COPY";if(n instanceof v)return"MOVE";if(n instanceof p)return"LOCK";if(n instanceof m)return"UNLOCK";if(n instanceof g)return"PATCH";throw new Error("Failed pattern match at Data.HTTP.Method (line 40, column 1 - line 40, column 35): "+[n.constructor.name])}),h=e.either(t.show(b))(D);n.OPTIONS=r,n.GET=a,n.HEAD=o,n.POST=u,n.PUT=i,n.DELETE=l,n.TRACE=c,n.CONNECT=f,n.PROPFIND=s,n.PROPPATCH=d,n.MKCOL=S,n.COPY=P,n.MOVE=v,n.LOCK=p,n.UNLOCK=m,n.PATCH=g,n.unCustomMethod=D,n.print=h,n.showMethod=b}(PS["Data.HTTP.Method"]=PS["Data.HTTP.Method"]||{}),function(n){"use strict";n.null=null,n.nullable=function(n,e,t){return null==n?e:t(n)},n.notNull=function(n){return n}}(PS["Data.Nullable"]=PS["Data.Nullable"]||{}),function(n){"use strict";var e=PS["Data.Nullable"],t=(PS["Control.Semigroupoid"],PS["Data.Eq"],PS["Data.Function"],PS["Data.Function.Uncurried"],PS["Data.Maybe"]),r=(PS["Data.Ord"],PS["Data.Show"],PS.Prelude,t.maybe(e.null)(e.notNull));n.toMaybe=function(n){return e.nullable(n,t.Nothing.value,t.Just.create)},n.toNullable=r}(PS["Data.Nullable"]=PS["Data.Nullable"]||{}),function(n){"use strict";var e=function(){var n={},e="Pure",t="Throw",r="Catch",a="Sync",o="Async",u="Bind",i="Bracket",l="Fork",c="Sequential",f="Map",s="Apply",d="Alt",S="Cons",P="Resume",v="Release",p="Finalizer",m="Finalized",g="Forked";function D(n,e,t,r){this.tag=n,this._1=e,this._2=t,this._3=r}function b(n){var e=function(e,t,r){return new D(n,e,t,r)};return e.tag=n,e}function h(n){return new D(e,void 0)}function w(n){try{n()}catch(n){setTimeout(function(){throw n},0)}}function y(n,e,t){try{return e(t())}catch(e){return n(e)}}function M(n,e,t){try{return e(t)()}catch(e){return t(n(e))(),h}}var E=function(){var n=1024,e=0,t=0,r=new Array(n),a=!1;function o(){var o;for(a=!0;0!==e;)e--,o=r[t],r[t]=void 0,t=(t+1)%n,o();a=!1}return{isDraining:function(){return a},enqueue:function(u){var i;e===n&&(i=a,o(),a=i),r[(t+e)%n]=u,e++,a||o()}}}();var C=0,A=1,T=2,F=3,H=4,L=5,_=6;function I(n,f,s){var d=0,g=C,b=s,h=null,U=null,k=null,O=null,W=null,R=0,N=0,B=null,q=!0;function j(s){for(var N,V,J;;)switch(N=null,V=null,J=null,g){case T:g=A,b=k(b),null===O?k=null:(k=O._1,O=O._2);break;case F:n.isLeft(b)?(g=L,h=b,b=null):null===k?g=L:(g=T,b=n.fromRight(b));break;case A:switch(b.tag){case u:k&&(O=new D(S,k,O)),k=b._2,g=A,b=b._1;break;case e:null===k?(g=L,b=n.right(b._1)):(g=T,b=b._1);break;case a:g=F,b=y(n.left,n.right,b._1);break;case o:return g=H,void(b=M(n.left,b._1,function(n){return function(){d===s&&(d++,E.enqueue(function(){d===s+1&&(g=F,b=n,j(d))}))}}));case t:g=L,h=n.left(b._1),b=null;break;case r:W=new D(S,b,null===k?W:new D(S,new D(P,k,O),W,U),U),k=null,O=null,g=A,b=b._1;break;case i:R++,W=new D(S,b,null===k?W:new D(S,new D(P,k,O),W,U),U),k=null,O=null,g=A,b=b._1;break;case l:g=F,N=I(n,f,b._2),f&&f.register(N),b._1&&N.run(),b=n.right(N);break;case c:g=A,b=x(n,f,b._1)}break;case L:if(k=null,O=null,null===W)g=_,b=U||h||b;else switch(N=W._3,J=W._1,W=W._2,J.tag){case r:U&&U!==N?g=L:h&&(g=A,b=J._2(n.fromLeft(h)),h=null);break;case P:U&&U!==N||h?g=L:(k=J._1,O=J._2,g=T,b=n.fromRight(b));break;case i:R--,null===h&&(V=n.fromRight(b),W=new D(S,new D(v,J._2,V),W,N),(U===N||R>0)&&(g=A,b=J._3(V)));break;case v:R++,W=new D(S,new D(m,b,h),W,U),g=A,b=U&&U!==N?J._1.killed(n.fromLeft(U))(J._2):h?J._1.failed(n.fromLeft(h))(J._2):J._1.completed(n.fromRight(b))(J._2),h=null;break;case p:R++,W=new D(S,new D(m,b,h),W,U),g=A,b=J._1;break;case m:R--,g=L,b=J._1,h=J._2}break;case _:for(var Q in B)B.hasOwnProperty(Q)&&(q=q&&B[Q].rethrow,w(B[Q].handler(b)));return B=null,void(U&&h?setTimeout(function(){throw n.fromLeft(h)},0):n.isLeft(b)&&q&&setTimeout(function(){if(q)throw n.fromLeft(b)},0));case C:g=A;break;case H:return}}function V(n){return function(){if(g===_)return q=q&&n.rethrow,n.handler(b)(),function(){};var e=N++;return(B=B||{})[e]=n,function(){null!==B&&delete B[e]}}}return{kill:function(e,t){return function(){if(g===_)return t(n.right(void 0))(),function(){};var r=V({rethrow:!1,handler:function(){return t(n.right(void 0))}})();switch(g){case C:U=n.left(e),g=_,b=U,j(d);break;case H:null===U&&(U=n.left(e)),0===R&&(g===H&&(W=new D(S,new D(p,b(e)),W,U)),g=L,b=null,h=null,j(++d));break;default:null===U&&(U=n.left(e)),0===R&&(g=L,b=null,h=null)}return r}},join:function(n){return function(){var e=V({rethrow:!1,handler:n})();return g===C&&j(d),e}},onComplete:V,isSuspended:function(){return g===C},run:function(){g===C&&(E.isDraining()?j(d):E.enqueue(function(){j(d)}))}}}function U(e,t,r,a){var u=0,i={},l=0,c={},P=new Error("[ParAff] Early exit"),v=null,p=n;function m(t,r,a){var o,u,l=r,c=null,P=null,v=0,p={};n:for(;;)switch(o=null,l.tag){case g:if(l._3===n&&(o=i[l._1],p[v++]=o.kill(t,function(n){return function(){0===--v&&a(n)()}})),null===c)break n;l=c._2,null===P?c=null:(c=P._1,P=P._2);break;case f:l=l._2;break;case s:case d:c&&(P=new D(S,c,P)),c=l,l=l._1}if(0===v)a(e.right(void 0))();else for(u=0,o=v;u<o;u++)p[u]=p[u]();return p}function b(t){return function(r){return function(){delete i[t._1],t._3=r,function t(r,o,u){var i,S,p,g,D,b;for(e.isLeft(r)?(i=r,S=null):(S=r,i=null);;){if(p=null,g=null,D=null,b=null,null!==v)return;if(null===o)return void a(i||S)();if(o._3!==n)return;switch(o.tag){case f:null===i?(o._3=e.right(o._1(e.fromRight(S))),S=o._3):o._3=i;break;case s:if(p=o._1._3,g=o._2._3,i){if(o._3=i,D=!0,b=l++,c[b]=m(P,i===p?o._2:o._1,function(){return function(){delete c[b],D?D=!1:null===u?t(i,null,null):t(i,u._1,u._2)}}),D)return void(D=!1)}else{if(p===n||g===n)return;S=e.right(e.fromRight(p)(e.fromRight(g))),o._3=S}break;case d:if(p=o._1._3,g=o._2._3,p===n&&e.isLeft(g)||g===n&&e.isLeft(p))return;if(p!==n&&e.isLeft(p)&&g!==n&&e.isLeft(g))i=S===p?g:p,S=null,o._3=i;else if(o._3=S,D=!0,b=l++,c[b]=m(P,S===p?o._2:o._1,function(){return function(){delete c[b],D?D=!1:null===u?t(S,null,null):t(S,u._1,u._2)}}),D)return void(D=!1)}null===u?o=null:(o=u._1,u=u._2)}}(r,t._2._1,t._2._2)}}}return function(){var a,o,l=A,c=r,P=null,v=null;n:for(;;)switch(a=null,o=null,l){case A:switch(c.tag){case f:P&&(v=new D(S,P,v)),P=new D(f,c._1,n,n),c=c._2;break;case s:P&&(v=new D(S,P,v)),P=new D(s,n,c._2,n),c=c._1;break;case d:P&&(v=new D(S,P,v)),P=new D(d,n,c._2,n),c=c._1;break;default:o=u++,l=L,a=c,c=new D(g,o,new D(S,P,v),n),(a=I(e,t,a)).onComplete({rethrow:!1,handler:b(c)})(),i[o]=a,t&&t.register(a)}break;case L:if(null===P)break n;P._1===n?(P._1=c,l=A,c=P._2,P._2=n):(P._2=c,c=P,null===v?P=null:(P=v._1,v=v._2))}for(p=c,o=0;o<u;o++)i[o].run()}(),function(n){return new D(o,function(t){return function(){return function(n,t){var r;for(var a in v=e.left(n),c)if(c.hasOwnProperty(a))for(a in r=c[a])r.hasOwnProperty(a)&&r[a]();c=null;var u=m(n,p,t);return function(n){return new D(o,function(n){return function(){for(var n in u)u.hasOwnProperty(n)&&u[n]();return h}})}}(n,t)}})}}function x(n,e,t){return new D(o,function(r){return function(){return U(n,e,t,r)}})}return D.EMPTY=n,D.Pure=b(e),D.Throw=b(t),D.Catch=b(r),D.Sync=b(a),D.Async=b(o),D.Bind=b(u),D.Bracket=b(i),D.Fork=b(l),D.Seq=b(c),D.ParMap=b(f),D.ParApply=b(s),D.ParAlt=b(d),D.Fiber=I,D.Supervisor=function(n){var e={},t=0,r=0;return{register:function(n){var a=t++;n.onComplete({rethrow:!0,handler:function(n){return function(){r--,delete e[a]}}}),e[a]=n,r++},isEmpty:function(){return 0===r},killAll:function(o,u){return function(){var i=0,l={};function c(t){l[t]=e[t].kill(o,function(e){return function(){delete l[t],i--,n.isLeft(e)&&n.fromLeft(e)&&setTimeout(function(){throw n.fromLeft(e)},0),0===i&&u()}})()}for(var f in e)e.hasOwnProperty(f)&&(i++,c(f));return e={},t=0,r=0,function(n){return new D(a,function(){for(var n in l)l.hasOwnProperty(n)&&l[n]()})}}}}},D.Scheduler=E,D.nonCanceler=h,D}();n._pure=e.Pure,n._throwError=e.Throw,n._catchError=function(n){return function(t){return e.Catch(n,t)}},n._map=function(n){return function(t){return t.tag===e.Pure.tag?e.Pure(n(t._1)):e.Bind(t,function(t){return e.Pure(n(t))})}},n._bind=function(n){return function(t){return e.Bind(n,t)}},n._fork=function(n){return function(t){return e.Fork(n,t)}},n._liftEffect=e.Sync,n._parAffMap=function(n){return function(t){return e.ParMap(n,t)}},n._parAffApply=function(n){return function(t){return e.ParApply(n,t)}},n.makeAff=e.Async,n._makeFiber=function(n,t){return function(){return e.Fiber(n,null,t)}},n._sequential=e.Seq}(PS["Effect.Aff"]=PS["Effect.Aff"]||{}),function(n){"use strict";n.error=function(n){return new Error(n)},n.throwException=function(n){return function(){throw n}}}(PS["Effect.Exception"]=PS["Effect.Exception"]||{}),function(n){"use strict";var e=PS["Effect.Exception"];PS["Control.Applicative"],PS["Control.Semigroupoid"],PS["Data.Either"],PS["Data.Functor"],PS["Data.Maybe"],PS["Data.Show"],PS.Effect,PS.Prelude;n.throw=function(n){return e.throwException(e.error(n))},n.error=e.error,n.throwException=e.throwException}(PS["Effect.Exception"]=PS["Effect.Exception"]||{}),function(n){"use strict";(PS["Effect.Unsafe"]=PS["Effect.Unsafe"]||{}).unsafePerformEffect=function(n){return n()}}(),function(n){"use strict";var e=PS["Effect.Unsafe"];PS.Effect;n.unsafePerformEffect=e.unsafePerformEffect}(PS["Effect.Unsafe"]=PS["Effect.Unsafe"]||{}),function(n){"use strict";var e=PS["Effect.Aff"],t=(PS["Control.Alt"],PS["Control.Alternative"],PS["Control.Applicative"]),r=PS["Control.Apply"],a=PS["Control.Bind"],o=(PS["Control.Lazy"],PS["Control.Monad"]),u=PS["Control.Monad.Error.Class"],i=PS["Control.Monad.Rec.Class"],l=(PS["Control.Parallel"],PS["Control.Parallel.Class"]),c=(PS["Control.Plus"],PS["Control.Semigroupoid"],PS["Data.Either"]),f=(PS["Data.Foldable"],PS["Data.Function"]),s=(PS["Data.Function.Uncurried"],PS["Data.Functor"]),d=(PS["Data.Monoid"],PS["Data.Newtype"],PS["Data.Semigroup"],PS["Data.Time.Duration"],PS["Data.Unit"]),S=PS.Effect,P=PS["Effect.Class"],v=(PS["Effect.Exception"],PS["Effect.Unsafe"]),p=PS["Partial.Unsafe"],m=(PS.Prelude,PS["Unsafe.Coerce"]),g=function(n){return n},D=e._fork(!1),b=new s.Functor(e._parAffMap),h=new s.Functor(e._map),w=e._fork(!0),y={isLeft:function(n){if(n instanceof c.Left)return!0;if(n instanceof c.Right)return!1;throw new Error("Failed pattern match at Effect.Aff (line 390, column 12 - line 392, column 20): "+[n.constructor.name])},fromLeft:function(n){if(n instanceof c.Left)return n.value0;if(n instanceof c.Right)return p.unsafeCrashWith("unsafeFromLeft: Right");throw new Error("Failed pattern match at Effect.Aff (line 395, column 20 - line 399, column 3): "+[n.constructor.name])},fromRight:function(n){if(n instanceof c.Right)return n.value0;if(n instanceof c.Left)return p.unsafeCrashWith("unsafeFromRight: Left");throw new Error("Failed pattern match at Effect.Aff (line 400, column 21 - line 402, column 31): "+[n.constructor.name])},left:c.Left.create,right:c.Right.create},M=function(n){return e._makeFiber(y,n)},E=function(n){return function(){var e=M(n)();return e.run(),e}},C=new r.Apply(function(){return b},e._parAffApply),A=new o.Monad(function(){return H},function(){return T}),T=new a.Bind(function(){return F},e._bind),F=new r.Apply(function(){return h},o.ap(A)),H=new t.Applicative(function(){return F},e._pure),L=new P.MonadEffect(function(){return A},e._liftEffect),_=function(n){return g(f.const(P.liftEffect(L)(n)))},I=function(n){return e.makeAff(function(e){return s.map(S.functorEffect)(_)(n.join(e))})},U=new s.Functor(function(n){return function(e){return v.unsafePerformEffect(M(s.map(h)(n)(I(e))))}}),x=new u.MonadThrow(function(){return A},e._throwError),k=new u.MonadError(function(){return x},e._catchError),O=function(n){return function(e){return E(a.bindFlipped(T)(function(e){return P.liftEffect(L)(n(e))})(u.try(k)(e)))}},W=new l.Parallel(function(){return R},function(){return A},m.unsafeCoerce,e._sequential),R=new t.Applicative(function(){return C},function(n){return l.parallel(W)(t.pure(H)(n))}),N=new i.MonadRec(function(){return A},function(n){var e=function(r){return a.bind(T)(n(r))(function(n){if(n instanceof i.Done)return t.pure(H)(n.value0);if(n instanceof i.Loop)return e(n.value0);throw new Error("Failed pattern match at Effect.Aff (line 100, column 7 - line 102, column 22): "+[n.constructor.name])})};return e}),B=f.const(t.pure(H)(d.unit));n.Canceler=g,n.launchAff=E,n.runAff=O,n.runAff_=function(n){return function(e){return s.void(S.functorEffect)(O(n)(e))}},n.forkAff=w,n.suspendAff=D,n.killFiber=function(n){return function(r){return a.bind(T)(P.liftEffect(L)(r.isSuspended))(function(a){return a?P.liftEffect(L)(s.void(S.functorEffect)(r.kill(n,f.const(t.pure(S.applicativeEffect)(d.unit))))):e.makeAff(function(e){return s.map(S.functorEffect)(_)(r.kill(n,e))})})}},n.joinFiber=I,n.nonCanceler=B,n.effectCanceler=_,n.functorAff=h,n.applyAff=F,n.applicativeAff=H,n.bindAff=T,n.monadAff=A,n.monadRecAff=N,n.monadThrowAff=x,n.monadErrorAff=k,n.monadEffectAff=L,n.functorParAff=b,n.applyParAff=C,n.applicativeParAff=R,n.parallelAff=W,n.functorFiber=U,n.makeAff=e.makeAff}(PS["Effect.Aff"]=PS["Effect.Aff"]||{}),function(n){"use strict";PS["Control.Applicative"],PS["Control.Bind"],PS["Control.Semigroupoid"];var e=PS["Data.Either"],t=(PS["Data.Function"],PS.Effect,PS["Effect.Aff"]);PS["Effect.Exception"],PS["Effect.Uncurried"],PS.Prelude;n.fromEffectFnAff=function(n){return t.makeAff(function(r){return function(){var a=n(function(n){return r(e.Left.create(n))()},function(n){return r(e.Right.create(n))()});return function(n){return t.makeAff(function(r){return function(){return a(n,function(n){return r(e.Left.create(n))()},function(n){return r(e.Right.create(n))()}),t.nonCanceler}})}}})}}(PS["Effect.Aff.Compat"]=PS["Effect.Aff.Compat"]||{}),function(n){"use strict";var e=PS.Affjax,t=PS["Affjax.RequestBody"],r=PS["Affjax.RequestHeader"],a=PS["Affjax.ResponseFormat"],o=PS["Affjax.ResponseHeader"],u=(PS["Affjax.StatusCode"],PS["Control.Applicative"]),i=PS["Control.Bind"],l=(PS["Control.Monad.Error.Class"],PS["Control.Monad.Except"]),c=PS["Control.Monad.Except.Trans"],f=(PS["Control.Parallel"],PS["Control.Semigroupoid"],PS["Data.Argonaut.Core"]),s=PS["Data.Argonaut.Parser"],d=PS["Data.Array"],S=PS["Data.Either"],P=PS["Data.Eq"],v=PS["Data.Foldable"],p=PS["Data.FormURLEncoded"],m=PS["Data.Function"],g=(PS["Data.Function.Uncurried"],PS["Data.Functor"]),D=PS["Data.HTTP.Method"],b=PS["Data.HeytingAlgebra"],h=PS["Data.Identity"],w=(PS["Data.Int"],PS["Data.List.NonEmpty"]),y=PS["Data.Maybe"],M=PS["Data.Nullable"],E=(PS["Data.Ord"],PS["Data.Ring"],PS["Data.Semiring"],PS["Data.Time.Duration"],PS["Data.Unit"]),C=PS["Effect.Aff"],A=PS["Effect.Aff.Compat"],T=(PS["Effect.Class"],PS["Effect.Exception"],PS["Effect.Ref"],PS.Foreign),F=(PS.Math,PS.Prelude,{method:new S.Left(D.GET.value),url:"/",headers:[],content:y.Nothing.value,username:y.Nothing.value,password:y.Nothing.value,withCredentials:!1,responseFormat:a.ignore});n.defaultRequest=F,n.request=function(n){var F,H=function(){if(n.responseFormat instanceof a.ArrayBuffer)return T.unsafeReadTagged("ArrayBuffer");if(n.responseFormat instanceof a.Blob)return T.unsafeReadTagged("Blob");if(n.responseFormat instanceof a.Document)return T.unsafeReadTagged("Document");if(n.responseFormat instanceof a.Json)return i.composeKleisliFlipped(c.bindExceptT(h.monadIdentity))(function(e){return n.responseFormat.value0(""===(t=e)?u.pure(c.applicativeExceptT(h.monadIdentity))(f.jsonEmptyObject):S.either(function(n){return T.fail(T.ForeignError.create(n))})(u.pure(c.applicativeExceptT(h.monadIdentity)))(s.jsonParser(t)));var t})(T.unsafeReadTagged("String"));if(n.responseFormat instanceof a.String)return T.unsafeReadTagged("String");if(n.responseFormat instanceof a.Ignore)return m.const(n.responseFormat.value0(u.pure(c.applicativeExceptT(h.monadIdentity))(E.unit)));throw new Error("Failed pattern match at Affjax (line 292, column 19 - line 298, column 57): "+[n.responseFormat.constructor.name])}(),L=function(n){return function(e){return n instanceof y.Just&&!v.any(v.foldableArray)(b.heytingAlgebraBoolean)(m.on(P.eq(P.eqString))(r.requestHeaderName)(n.value0))(e)?d.snoc(e)(n.value0):e}},_={method:D.print(n.method),url:n.url,headers:g.map(g.functorArray)(function(n){return{field:r.requestHeaderName(n),value:r.requestHeaderValue(n)}})((F=n.content,L(g.map(y.functorMaybe)(r.ContentType.create)(i.bindFlipped(y.bindMaybe)(t.toMediaType)(F)))(L(g.map(y.functorMaybe)(r.Accept.create)(a.toMediaType(n.responseFormat)))(n.headers)))),content:M.toNullable(g.map(y.functorMaybe)(function(n){if(n instanceof t.ArrayView)return n.value0(T.unsafeToForeign);if(n instanceof t.Blob)return T.unsafeToForeign(n.value0);if(n instanceof t.Document)return T.unsafeToForeign(n.value0);if(n instanceof t.String)return T.unsafeToForeign(n.value0);if(n instanceof t.FormData)return T.unsafeToForeign(n.value0);if(n instanceof t.FormURLEncoded)return T.unsafeToForeign(p.encode(n.value0));if(n instanceof t.Json)return T.unsafeToForeign(f.stringify(n.value0));throw new Error("Failed pattern match at Affjax (line 266, column 20 - line 273, column 57): "+[n.constructor.name])})(n.content)),responseType:a.toResponseType(n.responseFormat),username:M.toNullable(n.username),password:M.toNullable(n.password),withCredentials:n.withCredentials};return i.bind(C.bindAff)(A.fromEffectFnAff(e._ajax(o.responseHeader,_)))(function(n){var e=l.runExcept(H(n.body));if(e instanceof S.Left)return u.pure(C.applicativeAff)({body:new S.Left(new a.ResponseFormatError(w.head(e.value0),n.body)),headers:n.headers,status:n.status,statusText:n.statusText});if(e instanceof S.Right)return u.pure(C.applicativeAff)({body:new S.Right(e.value0),headers:n.headers,status:n.status,statusText:n.statusText});throw new Error("Failed pattern match at Affjax (line 246, column 3 - line 250, column 39): "+[e.constructor.name])})}}(PS.Affjax=PS.Affjax||{}),function(n){"use strict";n._app=function(){return app},n._mmoment8601=function(n,e,t,r){try{var a=moment(r,moment.ISO_8601),o=a.fromNow(),u=a.format("MMMM D YYYY, h:mm a")+" ("+a.format()+") ";return n(t(o)(u))}catch(n){return e}},n._closeWindow=function(n){n.close()}}(PS.Globals=PS.Globals||{}),function(n){"use strict";(PS["Foreign.Index"]=PS["Foreign.Index"]||{}).unsafeReadPropImpl=function(n,e,t,r){return null==r?n:e(r[t])}}(),function(n){"use strict";var e=PS["Foreign.Index"],t=PS["Control.Applicative"],r=(PS["Control.Bind"],PS["Control.Monad.Except.Trans"]),a=(PS["Data.Eq"],PS["Data.Function"],PS["Data.Function.Uncurried"],PS["Data.HeytingAlgebra"],PS["Data.Identity"]),o=(PS["Data.List.NonEmpty"],PS.Foreign),u=(PS.Prelude,function(n){return function(u){return e.unsafeReadPropImpl(o.fail(new o.TypeMismatch("object",o.typeOf(u))),t.pure(r.applicativeExceptT(a.monadIdentity)),n,u)}});n.readProp=u}(PS["Foreign.Index"]=PS["Foreign.Index"]||{}),function(n){"use strict";PS["Type.Data.Boolean"],PS["Type.Data.Symbol"],PS["Type.Equality"];var e=function(){function n(){}return n.value=new n,n}();n.RLProxy=e}(PS["Type.Row"]=PS["Type.Row"]||{}),function(n){"use strict";PS["Data.Eq"],PS["Data.Function.Uncurried"],PS["Data.HeytingAlgebra"];var e=PS["Data.Symbol"],t=(PS.Prelude,PS["Record.Unsafe"]);PS["Record.Unsafe.Union"],PS["Type.Row"],PS["Unsafe.Coerce"];n.get=function(n){return function(r){return function(r){return function(a){return t.unsafeGet(e.reflectSymbol(n)(r))(a)}}}}}(PS.Record=PS.Record||{}),function(n){"use strict";n.copyRecord=function(n){var e={};for(var t in n)({}).hasOwnProperty.call(n,t)&&(e[t]=n[t]);return e},n.unsafeInsert=function(n){return function(e){return function(t){return t[n]=e,t}}}}(PS["Record.Builder"]=PS["Record.Builder"]||{}),function(n){"use strict";var e=PS["Record.Builder"],t=PS["Control.Category"],r=PS["Control.Semigroupoid"],a=(PS["Data.Function.Uncurried"],PS["Data.Symbol"]),o=(PS.Prelude,PS["Record.Unsafe.Union"],PS["Type.Row"],PS["Unsafe.Coerce"],r.semigroupoidFn),u=t.categoryFn;n.build=function(n){return function(t){return n(e.copyRecord(t))}},n.insert=function(n){return function(n){return function(n){return function(t){return function(r){return function(o){return e.unsafeInsert(a.reflectSymbol(n)(t))(r)(o)}}}}}},n.semigroupoidBuilder=o,n.categoryBuilder=u}(PS["Record.Builder"]=PS["Record.Builder"]||{}),function(n){"use strict";PS["Simple.JSON"],PS["Control.Alt"],PS["Control.Applicative"],PS["Control.Apply"],PS["Control.Bind"];var e=PS["Control.Category"],t=(PS["Control.Monad.Except"],PS["Control.Monad.Except.Trans"],PS["Control.Semigroupoid"]),r=(PS["Data.Bifunctor"],PS["Data.Boolean"],PS["Data.Either"],PS["Data.Eq"],PS["Data.Function"],PS["Data.Functor"],PS["Data.HeytingAlgebra"],PS["Data.Identity"],PS["Data.List.Types"],PS["Data.Maybe"]),a=PS["Data.Nullable"],o=(PS["Data.Semigroup"],PS["Data.Symbol"]),u=(PS["Data.Traversable"],PS["Data.Variant"],PS["Effect.Exception"],PS["Effect.Uncurried"],PS["Effect.Unsafe"],PS.Foreign),i=(PS["Foreign.Index"],PS["Foreign.Object"],PS["Global.Unsafe"]),l=(PS["Partial.Unsafe"],PS.Prelude,PS.Record),c=PS["Record.Builder"],f=(PS["Type.Prelude"],PS["Type.Row"]),s=function(n){this.writeImpl=n},d=function(n){this.writeImplFields=n},S=function(n){return n.writeImplFields},P=function(n){return n.writeImpl},v=new s(u.unsafeToForeign),p=new s(u.unsafeToForeign),m=new s(u.unsafeToForeign),g=new d(function(n){return function(n){return e.identity(c.categoryBuilder)}});n.writeJSON=function(n){return function(e){return i.unsafeStringify(P(n)(e))}},n.WriteForeign=s,n.writeImpl=P,n.WriteForeignFields=d,n.writeImplFields=S,n.writeForeignString=v,n.writeForeignInt=p,n.writeForeignBoolean=m,n.writeForeignNullable=function(n){return new s(function(e){return r.maybe(u.unsafeToForeign(a.toNullable(r.Nothing.value)))(P(n))(a.toMaybe(e))})},n.recordWriteForeign=function(n){return function(n){return new s(function(e){var t=S(n)(f.RLProxy.value)(e);return u.unsafeToForeign(c.build(t)({}))})}},n.consWriteForeignFields=function(n){return function(e){return function(r){return function(a){return function(u){return function(i){return new d(function(s){return function(s){var d=S(r)(f.RLProxy.value)(s),v=P(e)(l.get(n)(a)(o.SProxy.value)(s));return t.compose(c.semigroupoidBuilder)(c.insert(i)(u)(n)(o.SProxy.value)(v))(d)}})}}}}}},n.nilWriteForeignFields=g}(PS["Simple.JSON"]=PS["Simple.JSON"]||{}),function(n){"use strict";PS["Data.Nullable"];var e=PS["Data.Symbol"],t=PS["Simple.JSON"],r=t.recordWriteForeign()(t.consWriteForeignFields(new e.IsSymbol(function(){return"archiveDefault"}))(t.writeForeignBoolean)(t.consWriteForeignFields(new e.IsSymbol(function(){return"privacyLock"}))(t.writeForeignBoolean)(t.consWriteForeignFields(new e.IsSymbol(function(){return"privateDefault"}))(t.writeForeignBoolean)(t.nilWriteForeignFields)()()())()()())()()()),a=t.recordWriteForeign()(t.consWriteForeignFields(new e.IsSymbol(function(){return"created"}))(t.writeForeignString)(t.consWriteForeignFields(new e.IsSymbol(function(){return"id"}))(t.writeForeignInt)(t.consWriteForeignFields(new e.IsSymbol(function(){return"isMarkdown"}))(t.writeForeignBoolean)(t.consWriteForeignFields(new e.IsSymbol(function(){return"length"}))(t.writeForeignInt)(t.consWriteForeignFields(new e.IsSymbol(function(){return"slug"}))(t.writeForeignString)(t.consWriteForeignFields(new e.IsSymbol(function(){return"text"}))(t.writeForeignString)(t.consWriteForeignFields(new e.IsSymbol(function(){return"title"}))(t.writeForeignString)(t.consWriteForeignFields(new e.IsSymbol(function(){return"updated"}))(t.writeForeignString)(t.nilWriteForeignFields)()()())()()())()()())()()())()()())()()())()()())()()()),o=t.recordWriteForeign()(t.consWriteForeignFields(new e.IsSymbol(function(){return"archiveUrl"}))(t.writeForeignNullable(t.writeForeignString))(t.consWriteForeignFields(new e.IsSymbol(function(){return"bid"}))(t.writeForeignInt)(t.consWriteForeignFields(new e.IsSymbol(function(){return"description"}))(t.writeForeignString)(t.consWriteForeignFields(new e.IsSymbol(function(){return"private"}))(t.writeForeignBoolean)(t.consWriteForeignFields(new e.IsSymbol(function(){return"selected"}))(t.writeForeignBoolean)(t.consWriteForeignFields(new e.IsSymbol(function(){return"slug"}))(t.writeForeignString)(t.consWriteForeignFields(new e.IsSymbol(function(){return"tags"}))(t.writeForeignString)(t.consWriteForeignFields(new e.IsSymbol(function(){return"time"}))(t.writeForeignString)(t.consWriteForeignFields(new e.IsSymbol(function(){return"title"}))(t.writeForeignString)(t.consWriteForeignFields(new e.IsSymbol(function(){return"toread"}))(t.writeForeignBoolean)(t.consWriteForeignFields(new e.IsSymbol(function(){return"url"}))(t.writeForeignString)(t.nilWriteForeignFields)()()())()()())()()())()()())()()())()()())()()())()()())()()())()()())()()());n.bookmark_wfI=o,n.note_wfI=a,n.usersettings_wfI=r}(PS.Model=PS.Model||{}),function(n){"use strict";(PS["Web.HTML"]=PS["Web.HTML"]||{}).window=function(){return window}}(),function(n){"use strict";(PS["Web.DOM.ParentNode"]=PS["Web.DOM.ParentNode"]||{})._querySelector=function(n){return function(e){return function(){return e.querySelector(n)}}}}(),function(n){"use strict";var e=PS["Web.DOM.ParentNode"],t=(PS["Control.Semigroupoid"],PS["Data.Eq"],PS["Data.Functor"]),r=(PS["Data.Maybe"],PS["Data.Newtype"],PS["Data.Nullable"]),a=(PS["Data.Ord"],PS.Effect);PS.Prelude,PS["Web.DOM.HTMLCollection"],PS["Web.DOM.Internal.Types"],PS["Web.DOM.NodeList"];n.querySelector=function(n){return function(o){return t.map(a.functorEffect)(r.toMaybe)(e._querySelector(n)(o))}}}(PS["Web.DOM.ParentNode"]=PS["Web.DOM.ParentNode"]||{}),function(n){"use strict";(PS["Web.Event.EventTarget"]=PS["Web.Event.EventTarget"]||{}).eventListener=function(n){return function(){return function(e){return n(e)()}}}}(),function(n){"use strict";n._currentTarget=function(n){return n.currentTarget},n.preventDefault=function(n){return function(){return n.preventDefault()}}}(PS["Web.Event.Event"]=PS["Web.Event.Event"]||{}),function(n){"use strict";n.toCharCode=function(n){return n.charCodeAt(0)},n.fromCharCode=function(n){return String.fromCharCode(n)}}(PS["Data.Enum"]=PS["Data.Enum"]||{}),function(n){"use strict";var e=PS["Data.Enum"],t=(PS["Control.Apply"],PS["Control.Bind"],PS["Control.MonadPlus"],PS["Control.MonadZero"],PS["Control.Semigroupoid"],PS["Data.Boolean"],PS["Data.Bounded"]),r=(PS["Data.Either"],PS["Data.Eq"],PS["Data.Function"],PS["Data.Functor"],PS["Data.HeytingAlgebra"],PS["Data.Maybe"]),a=(PS["Data.Newtype"],PS["Data.Ord"]),o=(PS["Data.Ordering"],PS["Data.Ring"],PS["Data.Semigroup"],PS["Data.Semiring"],PS["Data.Show"],PS["Data.Tuple"],PS["Data.Unfoldable"],PS["Data.Unfoldable1"],PS["Data.Unit"],PS["Partial.Unsafe"],PS.Prelude,function(n,e,t){this.Ord0=n,this.pred=e,this.succ=t}),u=function(n,e,t,r,a){this.Bounded0=n,this.Enum1=e,this.cardinality=t,this.fromEnum=r,this.toEnum=a},i=function(n){return n.toEnum},l=function(n){return n.fromEnum},c=function(n){return function(e){return function(t){return n(e(t)+1|0)}}},f=function(n){return function(e){return function(t){return n(e(t)-1|0)}}},s=function(n){return n>=t.bottom(t.boundedInt)&&n<=t.top(t.boundedInt)?new r.Just(e.fromCharCode(n)):r.Nothing.value},d=new o(function(){return a.ordChar},f(s)(e.toCharCode),c(s)(e.toCharCode)),S=new u(function(){return t.boundedChar},function(){return d},e.toCharCode(t.top(t.boundedChar))-e.toCharCode(t.bottom(t.boundedChar))|0,e.toCharCode,s);n.Enum=o,n.succ=function(n){return n.succ},n.pred=function(n){return n.pred},n.BoundedEnum=u,n.cardinality=function(n){return n.cardinality},n.toEnum=i,n.fromEnum=l,n.toEnumWithDefaults=function(n){return function(e){return function(a){return function(o){var u=i(n)(o);if(u instanceof r.Just)return u.value0;if(u instanceof r.Nothing)return o<l(n)(t.bottom(n.Bounded0()))?e:a;throw new Error("Failed pattern match at Data.Enum (line 158, column 33 - line 160, column 62): "+[u.constructor.name])}}}},n.defaultSucc=c,n.defaultPred=f,n.enumChar=d,n.boundedEnumChar=S}(PS["Data.Enum"]=PS["Data.Enum"]||{}),function(n){"use strict";var e=PS["Web.Event.Event"],t=(PS["Control.Semigroupoid"],PS["Data.DateTime.Instant"],PS["Data.Enum"],PS["Data.Eq"],PS["Data.Maybe"],PS["Data.Newtype"],PS["Data.Nullable"]);PS["Data.Ord"],PS.Effect,PS.Prelude,PS["Web.Event.EventPhase"],PS["Web.Event.Internal.Types"];n.currentTarget=function(n){return t.toMaybe(e._currentTarget(n))},n.preventDefault=e.preventDefault}(PS["Web.Event.Event"]=PS["Web.Event.Event"]||{}),function(n){"use strict";var e=PS["Web.Event.EventTarget"];PS.Effect,PS.Prelude,PS["Web.Event.Event"],PS["Web.Event.Internal.Types"];n.eventListener=e.eventListener}(PS["Web.Event.EventTarget"]=PS["Web.Event.EventTarget"]||{}),function(n){"use strict";(PS["Web.HTML.HTMLElement"]=PS["Web.HTML.HTMLElement"]||{})._read=function(n,e,t){var r=Object.prototype.toString.call(t);return 0===r.indexOf("[object HTML")&&r.indexOf("Element]")===r.length-8?e(t):n}}(),function(n){"use strict";(PS["Web.DOM.Element"]=PS["Web.DOM.Element"]||{}).removeAttribute=function(n){return function(e){return function(){return e.removeAttribute(n),{}}}}}(),function(n){"use strict";var e=PS["Web.DOM.Element"],t=(PS["Control.Semigroupoid"],PS["Data.Functor"],PS["Data.Maybe"],PS["Data.Nullable"],PS.Effect,PS.Prelude,PS["Unsafe.Coerce"]),r=(PS["Web.DOM.ChildNode"],PS["Web.DOM.Internal.Types"],PS["Web.DOM.NonDocumentTypeChildNode"],PS["Web.DOM.ParentNode"],PS["Web.Event.EventTarget"],PS["Web.Internal.FFI"],t.unsafeCoerce);n.toNode=r,n.removeAttribute=e.removeAttribute}(PS["Web.DOM.Element"]=PS["Web.DOM.Element"]||{}),function(n){"use strict";var e=PS["Web.HTML.HTMLElement"],t=(PS["Control.Semigroupoid"],PS["Data.Function.Uncurried"],PS["Data.Functor"],PS["Data.Maybe"]),r=(PS["Data.Nullable"],PS.Effect,PS.Prelude,PS["Unsafe.Coerce"]),a=(PS["Web.DOM"],PS["Web.DOM.DOMTokenList"],PS["Web.DOM.Element"],PS["Web.DOM.Internal.Types"],PS["Web.DOM.NonDocumentTypeChildNode"],PS["Web.DOM.ParentNode"],PS["Web.Event.EventTarget"],r.unsafeCoerce),o=r.unsafeCoerce;n.fromElement=function(n){return e._read(t.Nothing.value,t.Just.create,n)},n.toElement=o,n.toNode=a}(PS["Web.HTML.HTMLElement"]=PS["Web.HTML.HTMLElement"]||{}),function(n){"use strict";PS["Web.HTML.HTMLDocument"],PS["Control.Semigroupoid"],PS["Data.Functor"],PS["Data.Maybe"],PS["Data.Nullable"],PS.Effect,PS.Prelude;var e=PS["Unsafe.Coerce"],t=(PS["Web.DOM.Document"],PS["Web.DOM.Internal.Types"],PS["Web.DOM.NonElementParentNode"],PS["Web.DOM.ParentNode"],PS["Web.Event.EventTarget"],PS["Web.HTML.HTMLDocument.ReadyState"],PS["Web.HTML.HTMLElement"],PS["Web.HTML.HTMLScriptElement"],PS["Web.Internal.FFI"],e.unsafeCoerce),r=e.unsafeCoerce;n.toDocument=r,n.toParentNode=t}(PS["Web.HTML.HTMLDocument"]=PS["Web.HTML.HTMLDocument"]||{}),function(n){"use strict";n.href=function(n){return function(){return n.href}},n.setHref=function(n){return function(e){return function(){e.href=n}}},n.search=function(n){return function(){return n.search}},n.reload=function(n){return function(){n.reload()}}}(PS["Web.HTML.Location"]=PS["Web.HTML.Location"]||{}),function(n){"use strict";var e=PS["Web.HTML.Location"];PS.Effect,PS.Prelude;n.setHref=e.setHref,n.search=e.search,n.reload=e.reload}(PS["Web.HTML.Location"]=PS["Web.HTML.Location"]||{}),function(n){"use strict";n.document=function(n){return function(){return n.document}},n.location=function(n){return function(){return n.location}}}(PS["Web.HTML.Window"]=PS["Web.HTML.Window"]||{}),function(n){"use strict";var e=PS["Web.HTML.Window"];PS["Control.Semigroupoid"],PS["Data.Eq"],PS["Data.Functor"],PS["Data.Maybe"],PS["Data.Newtype"],PS["Data.Nullable"],PS["Data.Ord"],PS.Effect,PS.Prelude,PS["Unsafe.Coerce"],PS["Web.Event.EventTarget"],PS["Web.HTML.HTMLDocument"],PS["Web.HTML.History"],PS["Web.HTML.Location"],PS["Web.HTML.Navigator"],PS["Web.Storage.Storage"];n.document=e.document,n.location=e.location}(PS["Web.HTML.Window"]=PS["Web.HTML.Window"]||{}),function(n){"use strict";var e=PS["Web.HTML"];PS.Effect,PS["Web.HTML.HTMLAnchorElement"],PS["Web.HTML.HTMLAreaElement"],PS["Web.HTML.HTMLAudioElement"],PS["Web.HTML.HTMLBRElement"],PS["Web.HTML.HTMLBaseElement"],PS["Web.HTML.HTMLBodyElement"],PS["Web.HTML.HTMLButtonElement"],PS["Web.HTML.HTMLCanvasElement"],PS["Web.HTML.HTMLDListElement"],PS["Web.HTML.HTMLDataElement"],PS["Web.HTML.HTMLDataListElement"],PS["Web.HTML.HTMLDivElement"],PS["Web.HTML.HTMLDocument"],PS["Web.HTML.HTMLElement"],PS["Web.HTML.HTMLEmbedElement"],PS["Web.HTML.HTMLFieldSetElement"],PS["Web.HTML.HTMLFormElement"],PS["Web.HTML.HTMLHRElement"],PS["Web.HTML.HTMLHeadElement"],PS["Web.HTML.HTMLHeadingElement"],PS["Web.HTML.HTMLIFrameElement"],PS["Web.HTML.HTMLImageElement"],PS["Web.HTML.HTMLInputElement"],PS["Web.HTML.HTMLKeygenElement"],PS["Web.HTML.HTMLLIElement"],PS["Web.HTML.HTMLLabelElement"],PS["Web.HTML.HTMLLegendElement"],PS["Web.HTML.HTMLLinkElement"],PS["Web.HTML.HTMLMapElement"],PS["Web.HTML.HTMLMediaElement"],PS["Web.HTML.HTMLMetaElement"],PS["Web.HTML.HTMLMeterElement"],PS["Web.HTML.HTMLModElement"],PS["Web.HTML.HTMLOListElement"],PS["Web.HTML.HTMLObjectElement"],PS["Web.HTML.HTMLOptGroupElement"],PS["Web.HTML.HTMLOptionElement"],PS["Web.HTML.HTMLOutputElement"],PS["Web.HTML.HTMLParagraphElement"],PS["Web.HTML.HTMLParamElement"],PS["Web.HTML.HTMLPreElement"],PS["Web.HTML.HTMLProgressElement"],PS["Web.HTML.HTMLQuoteElement"],PS["Web.HTML.HTMLScriptElement"],PS["Web.HTML.HTMLSelectElement"],PS["Web.HTML.HTMLSourceElement"],PS["Web.HTML.HTMLSpanElement"],PS["Web.HTML.HTMLStyleElement"],PS["Web.HTML.HTMLTableCaptionElement"],PS["Web.HTML.HTMLTableCellElement"],PS["Web.HTML.HTMLTableColElement"],PS["Web.HTML.HTMLTableDataCellElement"],PS["Web.HTML.HTMLTableElement"],PS["Web.HTML.HTMLTableHeaderCellElement"],PS["Web.HTML.HTMLTableRowElement"],PS["Web.HTML.HTMLTableSectionElement"],PS["Web.HTML.HTMLTemplateElement"],PS["Web.HTML.HTMLTextAreaElement"],PS["Web.HTML.HTMLTimeElement"],PS["Web.HTML.HTMLTitleElement"],PS["Web.HTML.HTMLTrackElement"],PS["Web.HTML.HTMLUListElement"],PS["Web.HTML.HTMLVideoElement"],PS["Web.HTML.History"],PS["Web.HTML.Location"],PS["Web.HTML.Navigator"],PS["Web.HTML.Window"];n.window=e.window}(PS["Web.HTML"]=PS["Web.HTML"]||{}),function(n){"use strict";var e=PS.Globals,t=PS["Control.Applicative"],r=(PS["Data.Function"],PS["Data.Function.Uncurried"],PS["Data.Maybe"]),a=(PS["Data.Newtype"],PS["Data.Nullable"],PS["Data.Tuple"]),o=PS.Effect;PS.Model,PS.Prelude,PS["Web.DOM"],PS["Web.HTML"],PS["Web.XHR.FormData"];n["app'"]=function(n){return e._app()},n.mmoment8601=function(n){return e._mmoment8601(r.Just.create,r.Nothing.value,a.Tuple.create,n)},n.closeWindow=function(n){return t.pure(o.applicativeEffect)(e._closeWindow(n))},n.RawHTML=function(n){return n}}(PS.Globals=PS.Globals||{}),function(n){"use strict";var e=PS.Affjax,t=PS["Affjax.RequestBody"],r=PS["Affjax.RequestHeader"],a=PS["Affjax.ResponseFormat"],o=PS["Control.Bind"],u=(PS["Control.Semigroupoid"],PS["Data.Argonaut"],PS["Data.Array"]),i=PS["Data.Either"],l=(PS["Data.FormURLEncoded"],PS["Data.Functor"]),c=PS["Data.HTTP.Method"],f=PS["Data.Maybe"],s=PS["Data.MediaType.Common"],d=(PS["Data.Semigroup"],PS["Data.Show"]),S=PS["Data.Unit"],P=PS.Effect,v=PS["Effect.Aff"],p=PS["Effect.Class"],m=PS.Globals,g=PS.Model,D=(PS.Prelude,PS["Simple.JSON"]),b=PS["Web.HTML"],h=PS["Web.HTML.Location"],w=PS["Web.HTML.Window"],y=function(){function n(){}return n.value=new n,n}(),M=function(){function n(){}return n.value=new n,n}(),E=new d.Show(function(n){if(n instanceof y)return"star";if(n instanceof M)return"unstar";throw new Error("Failed pattern match at App (line 28, column 1 - line 28, column 37): "+[n.constructor.name])}),C=function(n){return function(t){return function(a){return function(o){return function(l){var c=m["app'"](S.unit);return e.request({method:new i.Left(n),url:t,headers:u.cons(new r.RequestHeader(c.csrfHeaderName,c.csrfToken))(a),content:o,username:e.defaultRequest.username,password:e.defaultRequest.password,withCredentials:e.defaultRequest.withCredentials,responseFormat:l})}}}}},A=function(n){return function(e){return function(t){return function(r){return function(a){return C(n)(m["app'"](S.unit).homeR+e)(t)(r)(a)}}}}},T=function(n){return function(e){return function(a){return function(o){return A(n)(e)([new r.ContentType(s.applicationFormURLEncoded)])(l.map(f.functorMaybe)(t.FormURLEncoded.create)(a))(o)}}}},F=function(n){return function(e){return function(a){return function(o){return function(u){return A(e)(a)([new r.ContentType(s.applicationJSON)])(l.map(f.functorMaybe)(function(e){return t.string(D.writeJSON(n)(e))})(o))(u)}}}}};n.Star=y,n.UnStar=M,n.toggleStar=function(n){return function(e){var t="bm/"+d.show(d.showInt)(n)+"/"+d.show(E)(e);return l.void(v.functorAff)(T(c.POST.value)(t)(f.Nothing.value)(a.ignore))}},n.destroy=function(n){return T(c.DELETE.value)("bm/"+d.show(d.showInt)(n))(f.Nothing.value)(a.ignore)},n.markRead=function(n){var e="bm/"+d.show(d.showInt)(n)+"/read";return T(c.POST.value)(e)(f.Nothing.value)(a.ignore)},n.editBookmark=function(n){return F(g.bookmark_wfI)(c.POST.value)("api/add")(new f.Just(n))(a.ignore)},n.editNote=function(n){return F(g.note_wfI)(c.POST.value)("api/note/add")(new f.Just(n))(a.json)},n.destroyNote=function(n){return T(c.DELETE.value)("api/note/"+d.show(d.showInt)(n))(f.Nothing.value)(a.ignore)},n.editAccountSettings=function(n){return F(g.usersettings_wfI)(c.POST.value)("api/accountSettings")(new f.Just(n))(a.ignore)},n.logout=function(n){var e=m["app'"](n);return o.discard(o.discardUnit)(v.bindAff)(l.void(v.functorAff)(C(c.POST.value)(e.authRlogoutR)([])(f.Nothing.value)(a.ignore)))(function(){return p.liftEffect(v.monadEffectAff)(o.bind(P.bindEffect)(o.bind(P.bindEffect)(b.window)(w.location))(h.reload))})},n.fetchJson=F,n.fetchUrlEnc=T,n.fetchPath=A,n.fetchUrl=C,n.showStar=E}(PS.App=PS.App||{}),function(n){"use strict";var e=function(){function n(){}return n.value=new n,n}(),t=function(){function n(){}return n.value=new n,n}(),r=function(){function n(){}return n.value=new n,n}(),a=function(){function n(){}return n.value=new n,n}(),o=function(){function n(){}return n.value=new n,n}(),u=function(){function n(){}return n.value=new n,n}(),i=function(){function n(){}return n.value=new n,n}(),l=function(){function n(){}return n.value=new n,n}(),c=function(){function n(){}return n.value=new n,n}(),f=function(){function n(){}return n.value=new n,n}(),s=function(){function n(){}return n.value=new n,n}(),d=function(){function n(){}return n.value=new n,n}(),S=function(){function n(){}return n.value=new n,n}(),P=function(){function n(){}return n.value=new n,n}(),v=function(){function n(){}return n.value=new n,n}(),p=function(){function n(){}return n.value=new n,n}(),m=function(){function n(){}return n.value=new n,n}(),g=function(){function n(){}return n.value=new n,n}(),D=function(){function n(){}return n.value=new n,n}(),b=function(){function n(){}return n.value=new n,n}(),h=function(){function n(){}return n.value=new n,n}(),w=function(){function n(){}return n.value=new n,n}();n.InputButton=e,n.InputCheckbox=t,n.InputColor=r,n.InputDate=a,n.InputDatetimeLocal=o,n.InputEmail=u,n.InputFile=i,n.InputHidden=l,n.InputImage=c,n.InputMonth=f,n.InputNumber=s,n.InputPassword=d,n.InputRadio=S,n.InputRange=P,n.InputReset=v,n.InputSearch=p,n.InputSubmit=m,n.InputTel=g,n.InputText=D,n.InputTime=b,n.InputUrl=h,n.InputWeek=w,n.renderInputType=function(n){if(n instanceof e)return"button";if(n instanceof t)return"checkbox";if(n instanceof r)return"color";if(n instanceof a)return"date";if(n instanceof o)return"datetime-local";if(n instanceof u)return"email";if(n instanceof i)return"file";if(n instanceof l)return"hidden";if(n instanceof c)return"image";if(n instanceof f)return"month";if(n instanceof s)return"number";if(n instanceof d)return"password";if(n instanceof S)return"radio";if(n instanceof P)return"range";if(n instanceof v)return"reset";if(n instanceof p)return"search";if(n instanceof m)return"submit";if(n instanceof g)return"tel";if(n instanceof D)return"text";if(n instanceof b)return"time";if(n instanceof h)return"url";if(n instanceof w)return"week";throw new Error("Failed pattern match at DOM.HTML.Indexed.InputType (line 28, column 19 - line 50, column 16): "+[n.constructor.name])}}(PS["DOM.HTML.Indexed.InputType"]=PS["DOM.HTML.Indexed.InputType"]||{}),function(n){"use strict";var e=PS["Control.Category"],t=(PS["Control.Semigroupoid"],PS["Data.Newtype"],PS.Prelude,function(n){this.dimap=n}),r=new t(function(n){return function(e){return function(t){return function(r){return e(t(n(r)))}}}}),a=function(n){return n.dimap};n.dimap=a,n.Profunctor=t,n.rmap=function(n){return function(t){return a(n)(e.identity(e.categoryFn))(t)}},n.profunctorFn=r}(PS["Data.Profunctor"]=PS["Data.Profunctor"]||{}),function(n){"use strict";PS["Control.Category"],PS["Control.Semigroupoid"];var e=PS["Data.Functor"],t=PS["Data.Profunctor"],r=PS["Data.Tuple"],a=(PS.Prelude,function(n,e,t){this.Profunctor0=n,this.first=e,this.second=t}),o=new a(function(){return t.profunctorFn},function(n){return function(e){return new r.Tuple(n(e.value0),e.value1)}},e.map(r.functorTuple));n.first=function(n){return n.first},n.second=function(n){return n.second},n.Strong=a,n.strongFn=o}(PS["Data.Profunctor.Strong"]=PS["Data.Profunctor.Strong"]||{}),function(n){"use strict";PS["Control.Semigroupoid"],PS["Data.Const"],PS["Data.Either"],PS["Data.Functor"],PS["Data.Lens.Internal.Wander"],PS["Data.Monoid"];var e=PS["Data.Newtype"],t=PS["Data.Profunctor"],r=(PS["Data.Profunctor.Choice"],PS["Data.Profunctor.Cochoice"],PS["Data.Profunctor.Strong"]),a=(PS["Data.Semigroup"],PS["Data.Tuple"]),o=(PS.Prelude,function(n){return n}),u=new t.Profunctor(function(n){return function(e){return function(e){return function(t){return e(n(t))}}}}),i=new r.Strong(function(){return u},function(n){return function(e){return n(a.fst(e))}},function(n){return function(e){return n(a.snd(e))}}),l=new e.Newtype(function(n){return n},o);n.Forget=o,n.newtypeForget=l,n.profunctorForget=u,n.strongForget=i}(PS["Data.Lens.Internal.Forget"]=PS["Data.Lens.Internal.Forget"]||{}),function(n){"use strict";var e=PS["Control.Category"],t=PS["Control.Monad.State.Class"],r=(PS["Control.Semigroupoid"],PS["Data.Function"],PS["Data.Lens.Internal.Forget"]),a=(PS["Data.Lens.Internal.Indexed"],PS["Data.Lens.Types"],PS["Data.Newtype"]),o=(PS["Data.Profunctor.Strong"],PS["Data.Tuple"],PS.Prelude,function(n){return a.unwrap(r.newtypeForget)(n(e.identity(e.categoryFn)))}),u=function(n){return function(e){return o(e)(n)}};n.viewOn=u,n.view=o,n.use=function(n){return function(e){return t.gets(n)(function(n){return u(n)(e)})}}}(PS["Data.Lens.Getter"]=PS["Data.Lens.Getter"]||{}),function(n){"use strict";PS["Control.Category"],PS["Data.Lens.Internal.Indexed"],PS["Data.Lens.Internal.Shop"],PS["Data.Lens.Types"],PS["Data.Newtype"];var e=PS["Data.Profunctor"],t=PS["Data.Profunctor.Strong"],r=PS["Data.Tuple"];PS.Prelude;n.lens=function(n){return function(a){return function(o){return(u=function(e){return new r.Tuple(n(e),function(n){return a(e)(n)})},function(n){return function(r){return e.dimap(n.Profunctor0())(u)(function(n){return n.value1(n.value0)})(t.first(n)(r))}})(o);var u}}}}(PS["Data.Lens.Lens"]=PS["Data.Lens.Lens"]||{}),function(n){"use strict";var e=PS["Control.Monad.State.Class"],t=(PS["Control.Semigroupoid"],PS["Data.EuclideanRing"],PS["Data.Function"]),r=PS["Data.Functor"],a=(PS["Data.HeytingAlgebra"],PS["Data.Lens.Internal.Indexed"],PS["Data.Lens.Types"],PS["Data.Maybe"],PS["Data.Ring"],PS["Data.Semigroup"],PS["Data.Semiring"],PS["Data.Tuple"],PS.Prelude,function(n){return n}),o=function(n){return function(e){return a(n)(t.const(e))}};n.over=a,n.set=o,n.assign=function(n){return function(t){return function(a){return r.void(n.Monad0().Bind1().Apply0().Functor0())(e.modify(n)(o(t)(a)))}}},n.modifying=function(n){return function(t){return function(o){return r.void(n.Monad0().Bind1().Apply0().Functor0())(e.modify(n)(a(t)(o)))}}}}(PS["Data.Lens.Setter"]=PS["Data.Lens.Setter"]||{}),function(n){"use strict";var e=PS["Control.Category"],t=(PS["Control.Monad.Cont.Trans"],PS["Control.Monad.Except.Trans"],PS["Control.Monad.List.Trans"],PS["Control.Monad.Maybe.Trans"],PS["Control.Monad.RWS.Trans"],PS["Control.Monad.Reader.Trans"],PS["Control.Monad.State.Trans"],PS["Control.Monad.Trans.Class"],PS["Control.Monad.Writer.Trans"],PS["Control.Semigroupoid"],PS["Effect.Aff"]),r=(PS["Effect.Class"],PS.Prelude,function(n,e){this.MonadEffect0=n,this.liftAff=e}),a=new r(function(){return t.monadEffectAff},e.identity(e.categoryFn));n.liftAff=function(n){return n.liftAff},n.MonadAff=r,n.monadAffAff=a}(PS["Effect.Aff.Class"]=PS["Effect.Aff.Class"]||{}),function(n){"use strict";var e=PS["Data.Eq"],t=PS["Data.Ord"],r=(PS.Prelude,function(){function n(n,e,t){this.value0=n,this.value1=e,this.value2=t}return n.create=function(e){return function(t){return function(r){return new n(e,t,r)}}},n}()),a=new e.Eq(function(n){return function(e){return n.value0(n.value2)(e.value2)}}),o=new t.Ord(function(){return a},function(n){return function(e){return n.value1(n.value2)(e.value2)}});n.mkOrdBox=function(n){return r.create(e.eq(n.Eq0()))(t.compare(n))},n.unOrdBox=function(n){return n.value2},n.eqOrdBox=a,n.ordOrdBox=o}(PS["Halogen.Data.OrdBox"]=PS["Halogen.Data.OrdBox"]||{}),function(n){"use strict";var e=function(){function n(){}return n.value=new n,n}(),t=function(){function n(){}return n.value=new n,n}(),r=function(){function n(){}return n.value=new n,n}();n.ButtonButton=e,n.ButtonSubmit=t,n.ButtonReset=r,n.renderButtonType=function(n){if(n instanceof e)return"button";if(n instanceof t)return"submit";if(n instanceof r)return"reset";throw new Error("Failed pattern match at DOM.HTML.Indexed.ButtonType (line 9, column 20 - line 12, column 18): "+[n.constructor.name])}}(PS["DOM.HTML.Indexed.ButtonType"]=PS["DOM.HTML.Indexed.ButtonType"]||{}),function(n){"use strict";var e=function(){function n(){}return n.value=new n,n}(),t=function(){function n(){}return n.value=new n,n}();n.On=e,n.Off=t,n.renderOnOff=function(n){if(n instanceof e)return"on";if(n instanceof t)return"off";throw new Error("Failed pattern match at DOM.HTML.Indexed.OnOff (line 8, column 15 - line 10, column 10): "+[n.constructor.name])}}(PS["DOM.HTML.Indexed.OnOff"]=PS["DOM.HTML.Indexed.OnOff"]||{}),function(n){"use strict";var e=PS["Data.Bifunctor"],t=(PS["Data.Eq"],PS["Data.Functor"]),r=(PS["Data.Maybe"],PS["Data.Newtype"],PS["Data.Ord"],PS.Prelude,PS["Web.DOM"],function(){function n(n,e,t){this.value0=n,this.value1=e,this.value2=t}return n.create=function(e){return function(t){return function(r){return new n(e,t,r)}}},n}()),a=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),o=new e.Bifunctor(function(n){return function(e){return function(t){if(t instanceof r)return new r(t.value0,t.value1,n(t.value2));if(t instanceof a)return new a(e(t.value0));throw new Error("Failed pattern match at Halogen.Query.InputF (line 21, column 15 - line 23, column 27): "+[t.constructor.name])}}}),u=new t.Functor(e.rmap(o));n.RefUpdate=r,n.Query=a,n.bifunctorInputF=o,n.functorInputF=u}(PS["Halogen.Query.InputF"]=PS["Halogen.Query.InputF"]||{}),function(n){"use strict";PS.Effect,PS["Effect.Uncurried"],PS.Prelude;var e=function(){function n(n,e,t){this.value0=n,this.value1=e,this.value2=t}return n.create=function(e){return function(t){return function(r){return new n(e,t,r)}}},n}();n.Step=e,n.extract=function(n){return n.value0},n.step=function(n){return n.value1},n.halt=function(n){return n.value2}}(PS["Halogen.VDom.Machine"]=PS["Halogen.VDom.Machine"]||{}),function(n){"use strict";PS["Control.Category"],PS["Control.Semigroupoid"];var e=PS["Data.Bifunctor"],t=(PS["Data.Eq"],PS["Data.Functor"]),r=(PS["Data.HeytingAlgebra"],PS["Data.Maybe"],PS["Data.Newtype"],PS["Data.Ord"],PS["Data.Ordering"],PS["Data.Tuple"]),a=(PS.Prelude,PS["Unsafe.Coerce"]),o=function(){function n(n,e,t){this.value0=n,this.value1=e,this.value2=t}return n.create=function(e){return function(t){return function(r){return new n(e,t,r)}}},n}(),u=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),i=function(){function n(n,e){this.value0=n,this.value1=e}return n.create=function(e){return function(t){return new n(e,t)}},n}(),l=function(){function n(n,e){this.value0=n,this.value1=e}return n.create=function(e){return function(t){return new n(e,t)}},n}(),c=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),f=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),s=function(){function n(n,e,t){this.value0=n,this.value1=e,this.value2=t}return n.create=function(e){return function(t){return function(r){return new n(e,t,r)}}},n}(),d=function(n){return function(e){return n(e)}},S=a.unsafeCoerce,P=new t.Functor(function(n){return function(e){return new o(e.value0,e.value1,n(e.value2))}}),v=new e.Bifunctor(function(n){return function(e){return d(function(t){return S(new s(function(e){return n(t.value0(e))},function(n){return e(t.value1(n))},t.value2))})}}),p=new e.Bifunctor(function(n){return function(t){return function(r){return r instanceof u?new u(r.value0):new f(r instanceof f?e.bimap(v)(n)(t)(r.value0):S(new s(n,t,r)))}}}),m=d(function(n){var a=function(o){if(o instanceof u)return new u(o.value0);if(o instanceof i)return new i(t.map(P)(n.value0)(o.value0),t.map(t.functorArray)(a)(o.value1));if(o instanceof l)return new l(t.map(P)(n.value0)(o.value0),t.map(t.functorArray)(t.map(r.functorTuple)(a))(o.value1));if(o instanceof c)return new c(n.value1(o.value0));if(o instanceof f)return new f(e.bimap(v)(n.value0)(n.value1)(o.value0));throw new Error("Failed pattern match at Halogen.VDom.Types (line 74, column 7 - line 74, column 27): "+[o.constructor.name])};return a(n.value2)});n.Text=u,n.Elem=i,n.Keyed=l,n.Widget=c,n.Grafted=f,n.Graft=s,n.graft=S,n.unGraft=d,n.runGraft=m,n.ElemSpec=o,n.bifunctorVDom=p,n.bifunctorGraft=v,n.functorElemSpec=P}(PS["Halogen.VDom.Types"]=PS["Halogen.VDom.Types"]||{}),function(n){"use strict";n.unsafeGetAny=function(n,e){return e[n]},n.unsafeHasAny=function(n,e){return e.hasOwnProperty(n)},n.unsafeSetAny=function(n,e,t){t[n]=e},n.forE=function(n,e){for(var t=[],r=0;r<n.length;r++)t.push(e(r,n[r]));return t},n.forInE=function(n,e){for(var t=Object.keys(n),r=0;r<t.length;r++){var a=t[r];e(a,n[a])}},n.diffWithIxE=function(n,e,t,r,a){for(var o=[],u=n.length,i=e.length,l=0;;){if(l<u)l<i?o.push(t(l,n[l],e[l])):r(l,n[l]);else{if(!(l<i))break;o.push(a(l,e[l]))}l++}return o},n.strMapWithIxE=function(n,e,t){for(var r={},a=0;a<n.length;a++){var o=n[a],u=e(o);r[u]=t(u,a,o)}return r},n.diffWithKeyAndIxE=function(n,e,t,r,a,o){for(var u={},i=0;i<e.length;i++){var l=e[i],c=t(l);n.hasOwnProperty(c)?u[c]=r(c,i,n[c],l):u[c]=o(c,i,l)}for(var c in n)c in u||a(c,n[c]);return u},n.refEq=function(n,e){return n===e},n.createTextNode=function(n,e){return e.createTextNode(n)},n.setTextContent=function(n,e){e.textContent=n},n.createElement=function(n,e,t){return null!=n?t.createElementNS(n,e):t.createElement(e)},n.insertChildIx=function(n,e,t){var r=t.childNodes.item(n)||null;r!==e&&t.insertBefore(e,r)},n.removeChild=function(n,e){e&&n.parentNode===e&&e.removeChild(n)},n.parentNode=function(n){return n.parentNode},n.setAttribute=function(n,e,t,r){null!=n?r.setAttributeNS(n,e,t):r.setAttribute(e,t)},n.removeAttribute=function(n,e,t){null!=n?t.removeAttributeNS(n,e):t.removeAttribute(e)},n.addEventListener=function(n,e,t){t.addEventListener(n,e,!1)},n.removeEventListener=function(n,e,t){t.removeEventListener(n,e,!1)},n.jsUndefined=void 0}(PS["Halogen.VDom.Util"]=PS["Halogen.VDom.Util"]||{}),function(n){"use strict";var e=function(n){return function(e){return function(){return e[n]}}};n._parentNode=e("parentNode"),n._nextSibling=e("nextSibling"),n.insertBefore=function(n){return function(e){return function(t){return function(){return t.insertBefore(n,e)}}}},n.appendChild=function(n){return function(e){return function(){return e.appendChild(n)}}},n.removeChild=function(n){return function(e){return function(){return e.removeChild(n)}}}}(PS["Web.DOM.Node"]=PS["Web.DOM.Node"]||{}),function(n){"use strict";var e=PS["Web.DOM.Node"],t=(PS["Control.Semigroupoid"],PS["Data.Enum"],PS["Data.Functor"]),r=(PS["Data.Maybe"],PS["Data.Nullable"]),a=PS.Effect;PS.Prelude,PS["Unsafe.Coerce"],PS["Web.DOM.Document"],PS["Web.DOM.Element"],PS["Web.DOM.Internal.Types"],PS["Web.DOM.NodeType"],PS["Web.Event.EventTarget"],PS["Web.Internal.FFI"];n.parentNode=function(n){return t.map(a.functorEffect)(r.toMaybe)(e._parentNode(n))},n.nextSibling=function(n){return t.map(a.functorEffect)(r.toMaybe)(e._nextSibling(n))},n.insertBefore=e.insertBefore,n.appendChild=e.appendChild,n.removeChild=e.removeChild}(PS["Web.DOM.Node"]=PS["Web.DOM.Node"]||{}),function(n){"use strict";var e=PS["Halogen.VDom.Util"],t=PS["Control.Applicative"],r=(PS["Data.Function.Uncurried"],PS["Data.Nullable"],PS["Data.Unit"]),a=PS.Effect,o=(PS["Effect.Uncurried"],PS["Foreign.Object"],PS["Foreign.Object.ST"]),u=(PS["Halogen.VDom.Types"],PS.Prelude,PS["Unsafe.Coerce"]),i=(PS["Web.DOM.Document"],PS["Web.DOM.Element"],PS["Web.DOM.Node"],PS["Web.Event.EventTarget"],e.unsafeGetAny),l=u.unsafeCoerce,c=e.unsafeSetAny,f=o.new,s=t.pure(a.applicativeEffect)(r.unit);n.effectUnit=s,n.newMutMap=f,n.pokeMutMap=c,n.unsafeFreeze=l,n.unsafeLookup=i,n.unsafeGetAny=e.unsafeGetAny,n.unsafeHasAny=e.unsafeHasAny,n.unsafeSetAny=e.unsafeSetAny,n.forE=e.forE,n.forInE=e.forInE,n.diffWithIxE=e.diffWithIxE,n.diffWithKeyAndIxE=e.diffWithKeyAndIxE,n.strMapWithIxE=e.strMapWithIxE,n.refEq=e.refEq,n.createTextNode=e.createTextNode,n.setTextContent=e.setTextContent,n.createElement=e.createElement,n.insertChildIx=e.insertChildIx,n.removeChild=e.removeChild,n.parentNode=e.parentNode,n.setAttribute=e.setAttribute,n.removeAttribute=e.removeAttribute,n.addEventListener=e.addEventListener,n.removeEventListener=e.removeEventListener,n.jsUndefined=e.jsUndefined}(PS["Halogen.VDom.Util"]=PS["Halogen.VDom.Util"]||{}),function(n){"use strict";PS["Control.Applicative"],PS["Control.Bind"],PS["Data.Eq"],PS["Data.Function.Uncurried"];var e=PS["Data.Functor"],t=PS["Data.Maybe"],r=PS["Data.Nullable"],a=(PS["Data.Semigroup"],PS["Data.Tuple"]),o=PS["Data.Unit"],u=(PS.Effect,PS["Effect.Ref"]),i=(PS["Effect.Uncurried"],PS.Foreign),l=PS["Foreign.Object"],c=(PS["Halogen.VDom"],PS["Halogen.VDom.Machine"]),f=(PS["Halogen.VDom.Types"],PS["Halogen.VDom.Util"]),s=(PS.Prelude,PS["Unsafe.Coerce"]),d=(PS["Web.DOM.Element"],PS["Web.Event.Event"],PS["Web.Event.EventTarget"]),S=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),P=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),v=function(){function n(n,e,t){this.value0=n,this.value1=e,this.value2=t}return n.create=function(e){return function(t){return function(r){return new n(e,t,r)}}},n}(),p=function(){function n(n,e){this.value0=n,this.value1=e}return n.create=function(e){return function(t){return new n(e,t)}},n}(),m=function(){function n(n,e){this.value0=n,this.value1=e}return n.create=function(e){return function(t){return new n(e,t)}},n}(),g=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),D=f.unsafeGetAny,b=f.unsafeSetAny,h=function(n){if(n instanceof v&&n.value0 instanceof t.Just)return"attr/"+n.value0.value0+":"+n.value1;if(n instanceof v)return"attr/:"+n.value1;if(n instanceof p)return"prop/"+n.value0;if(n instanceof m)return"handler/"+n.value0;if(n instanceof g)return"ref";throw new Error("Failed pattern match at Halogen.VDom.DOM.Prop (line 178, column 16 - line 185, column 1): "+[n.constructor.name])},w=s.unsafeCoerce,y=s.unsafeCoerce,M=s.unsafeCoerce,E=new e.Functor(function(n){return function(r){return r instanceof m?new m(r.value0,e.map(e.functorFn)(e.map(t.functorMaybe)(n))(r.value1)):r instanceof g?new g(e.map(e.functorFn)(e.map(t.functorMaybe)(n))(r.value0)):r}});n.Attribute=v,n.Property=p,n.Handler=m,n.Ref=g,n.Created=S,n.Removed=P,n.propFromString=w,n.propFromBoolean=M,n.propFromInt=y,n.buildProp=function(n){return function(e){var s=function(n){return function(t,u){if(u instanceof v)return f.removeAttribute(r.toNullable(u.value0),u.value1,e);if(u instanceof p)return function(n,e){return"string"===i.typeOf(f.unsafeGetAny(n,e))?f.unsafeSetAny(n,"",e):"rowSpan"===n?f.unsafeSetAny(n,1,e):"colSpan"===n?f.unsafeSetAny(n,1,e):f.unsafeSetAny(n,f.jsUndefined,e)}(u.value0,e);if(u instanceof m){var l=f.unsafeLookup(u.value0,n);return f.removeEventListener(u.value0,a.fst(l),e)}if(u instanceof g)return o.unit;throw new Error("Failed pattern match at Halogen.VDom.DOM.Prop (line 165, column 5 - line 175, column 18): "+[u.constructor.name])}},w=function(e){return e instanceof t.Just?n(e.value0)():o.unit},y=function(n){var r=l.lookup("ref")(n);return r instanceof t.Just&&r.value0 instanceof g?function(){return w(r.value0.value0(new P(e)))}:f.effectUnit},M=function(n){return function(t,o,i){if(i instanceof v)return f.setAttribute(r.toNullable(i.value0),i.value1,i.value2,e),i;if(i instanceof p)return b(i.value0,i.value1,e),i;if(i instanceof m){var l=f.unsafeGetAny(i.value0,n);if(f.unsafeHasAny(i.value0,n))return u.write(i.value1)(a.snd(l))(),i;var c=u.new(i.value1)(),s=d.eventListener(function(n){return function(){var e=u.read(c)();return w(e(n))}})();return f.pokeMutMap(i.value0,new a.Tuple(s,c),n),f.addEventListener(i.value0,s,e),i}if(i instanceof g)return w(i.value0(new S(e))),i;throw new Error("Failed pattern match at Halogen.VDom.DOM.Prop (line 109, column 5 - line 131, column 15): "+[i.constructor.name])}},E=function(n,t){return function(i){var l=f.newMutMap(),d=s(n),S=function(n,t){return function(o,i,l,c){if(l instanceof v&&c instanceof v)return l.value2===c.value2?c:(f.setAttribute(r.toNullable(c.value0),c.value1,c.value2,e),c);if(l instanceof p&&c instanceof p){if(f.refEq(l.value1,c.value1))return c;if("value"===c.value0){var s=D("value",e);return f.refEq(s,c.value1)?c:(b(c.value0,c.value1,e),c)}return b(c.value0,c.value1,e),c}if(l instanceof m&&c instanceof m){var d=f.unsafeLookup(c.value0,n);return u.write(c.value1)(a.snd(d))(),f.pokeMutMap(c.value0,d,t),c}return c}}(n,l),P=M(l),g=f.diffWithKeyAndIxE(t,i,h,S,d,P);return new c.Step(o.unit,E(f.unsafeFreeze(l),g),y(g))}};return function(n){var e=f.newMutMap(),t=f.strMapWithIxE(n,h,M(e));return new c.Step(o.unit,E(f.unsafeFreeze(e),t),y(t))}}},n.functorProp=E}(PS["Halogen.VDom.DOM.Prop"]=PS["Halogen.VDom.DOM.Prop"]||{}),function(n){"use strict";PS["Control.Semigroupoid"];var e=PS["DOM.HTML.Indexed.ButtonType"],t=(PS["DOM.HTML.Indexed.CrossOriginValue"],PS["DOM.HTML.Indexed.DirValue"],PS["DOM.HTML.Indexed.FormMethod"],PS["DOM.HTML.Indexed.InputType"]),r=(PS["DOM.HTML.Indexed.KindValue"],PS["DOM.HTML.Indexed.MenuType"],PS["DOM.HTML.Indexed.MenuitemType"],PS["DOM.HTML.Indexed.OnOff"]),a=(PS["DOM.HTML.Indexed.OrderedListType"],PS["DOM.HTML.Indexed.PreloadValue"],PS["DOM.HTML.Indexed.ScopeValue"],PS["DOM.HTML.Indexed.StepValue"],PS["DOM.HTML.Indexed.WrapValue"],PS["Data.Bifunctor"]),o=(PS["Data.Eq"],PS["Data.Function"],PS["Data.Functor"]),u=PS["Data.Maybe"],i=(PS["Data.MediaType"],PS["Data.Newtype"]),l=(PS["Data.Ord"],PS["Data.Semigroup"],PS["Data.Tuple"],PS["Halogen.Query.InputF"]),c=(PS["Halogen.VDom"],PS["Halogen.VDom.DOM.Prop"]),f=PS["Halogen.VDom.Types"],s=(PS.Prelude,PS["Unsafe.Coerce"],PS["Web.DOM.Element"],PS["Web.Event.Event"],function(n){return n}),d=function(n){return n},S=function(n){this.toPropValue=n},P=function(n){return n.toPropValue},v=new S(c.propFromString),p=new S(function(n){return c.propFromString(r.renderOnOff(n))}),m=new i.Newtype(function(n){return n},d),g=new S(c.propFromInt),D=new S(function(n){return c.propFromString(t.renderInputType(n))}),b=c.Handler.create,h=new S(function(n){return c.propFromString(e.renderButtonType(n))}),w=new S(c.propFromBoolean),y=new a.Bifunctor(function(n){return function(e){return function(t){return a.bimap(f.bifunctorVDom)(o.map(o.functorArray)(o.map(c.functorProp)(o.map(l.functorInputF)(e))))(n)(t)}}});n.HTML=s,n.slot=function(n){return s(f.Widget.create(n))},n.text=function(n){return s(f.Text.create(n))},n.element=function(n){return function(e){return function(t){return function(r){return new f.Elem(new f.ElemSpec(n,e,t),r)}}}},n.prop=function(n){return function(e){return function(t){return c.Property.create(e)(P(n)(t))}}},n.attr=function(n){return function(e){return c.Attribute.create(n)(e)}},n.handler=b,n.ref=function(n){return c.Ref.create(function(e){return n(function(n){if(n instanceof c.Created)return new u.Just(n.value0);if(n instanceof c.Removed)return u.Nothing.value;throw new Error("Failed pattern match at Halogen.HTML.Core (line 103, column 21 - line 105, column 23): "+[n.constructor.name])}(e))})},n.IsProp=S,n.toPropValue=P,n.ClassName=d,n.bifunctorHTML=y,n.stringIsProp=v,n.intIsProp=g,n.booleanIsProp=w,n.buttonTypeIsProp=h,n.inputTypeIsProp=D,n.onOffIsProp=p,n.newtypeClassName=m}(PS["Halogen.HTML.Core"]=PS["Halogen.HTML.Core"]||{}),function(n){"use strict";var e=PS["Control.Applicative"],t=PS["Control.Apply"],r=PS["Control.Category"],a=(PS["Control.Semigroupoid"],PS["Data.Const"],PS["Data.Either"]),o=(PS["Data.Eq"],PS["Data.Function"],PS["Data.Functor"]),u=(PS["Data.List"],PS["Data.List.NonEmpty"]),i=PS["Data.List.Types"],l=(PS["Data.Newtype"],PS["Data.NonEmpty"]),c=(PS["Data.Ring"],PS["Data.Semiring"],PS["Data.Tuple"]),f=(PS.Prelude,PS["Unsafe.Coerce"],function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}()),s=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),d=function(){function n(n,e){this.value0=n,this.value1=e}return n.create=function(e){return function(t){return new n(e,t)}},n}(),S=function(n){return function(e){return new d(n,e)}},P=s.create,v=function(n){return function(t){return function(r){return function(a){return function(o){return function(l){var S,P=n,v=t,p=r,m=a,g=o,D=!1;function b(n,t,r,a,o,S){if(o instanceof f)return D=!0,new c.Tuple(new i.Cons({func:e.pure(n)(o.value0),count:S},t),r);if(o instanceof s)return D=!0,new c.Tuple(new i.Cons({func:a(o.value0),count:S},t),r);if(o instanceof d)return P=n,v=t,p=u.cons(o.value1)(r),m=a,g=o.value0,void(l=S+1|0);throw new Error("Failed pattern match at Control.Applicative.Free (line 102, column 41 - line 105, column 81): "+[o.constructor.name])}for(;!D;)S=b(P,v,p,m,g,l);return S}}}}}},p=function(n){return function(e){return function(r){return function(o){var u,f=n,s=e,d=r,S=!1;function P(n,e,r,u){if(e instanceof i.Nil)return S=!0,new a.Left(u);if(e instanceof i.Cons){var P=t.apply(n.Apply0())(e.value0.func)(u);if(1===e.value0.count)return e.value1 instanceof i.Nil?(S=!0,new a.Left(P)):(f=n,s=e.value1,d=r,void(o=P));if(r instanceof i.Nil)return S=!0,new a.Left(P);if(r instanceof i.Cons)return S=!0,a.Right.create(new c.Tuple(new i.Cons({func:P,count:e.value0.count-1|0},e.value1),new l.NonEmpty(r.value0,r.value1)));throw new Error("Failed pattern match at Control.Applicative.Free (line 83, column 11 - line 88, column 50): "+[r.constructor.name])}throw new Error("Failed pattern match at Control.Applicative.Free (line 72, column 3 - line 88, column 50): "+[e.constructor.name])}for(;!S;)u=P(f,s,d,o);return u}}}},m=new o.Functor(function(n){return function(e){return S(new f(n))(e)}}),g=function(n){return function(t){return function(r){return function(r){var o,u=!1;function i(o){if(o.value1.value0 instanceof f){if((i=p(n)(o.value0)(o.value1.value1)(e.pure(n)(o.value1.value0.value0)))instanceof a.Left)return u=!0,i.value0;if(i instanceof a.Right)return void(r=i.value0);throw new Error("Failed pattern match at Control.Applicative.Free (line 54, column 17 - line 56, column 24): "+[i.constructor.name])}if(o.value1.value0 instanceof s){var i;if((i=p(n)(o.value0)(o.value1.value1)(t(o.value1.value0.value0)))instanceof a.Left)return u=!0,i.value0;if(i instanceof a.Right)return void(r=i.value0);throw new Error("Failed pattern match at Control.Applicative.Free (line 57, column 17 - line 59, column 24): "+[i.constructor.name])}if(!(o.value1.value0 instanceof d))throw new Error("Failed pattern match at Control.Applicative.Free (line 53, column 5 - line 64, column 1): "+[o.value1.value0.constructor.name]);var c=new l.NonEmpty(o.value1.value0.value1,o.value1.value1);r=v(n)(o.value0)(c)(t)(o.value1.value0.value0)(1)}for(;!u;)o=i(r);return o}(new c.Tuple(i.Nil.value,u.singleton(r)))}}},D=new t.Apply(function(){return m},function(n){return function(e){return S(n)(e)}}),b=new e.Applicative(function(){return D},f.create);n.liftFreeAp=P,n.retractFreeAp=function(n){return g(n)(r.identity(r.categoryFn))},n.foldFreeAp=g,n.hoistFreeAp=function(n){return g(b)(function(e){return P(n(e))})},n.functorFreeAp=m,n.applyFreeAp=D,n.applicativeFreeAp=b}(PS["Control.Applicative.Free"]=PS["Control.Applicative.Free"]||{}),function(n){"use strict";PS["Control.Alt"],PS["Control.Alternative"],PS["Control.Applicative"],PS["Control.Apply"],PS["Control.Bind"],PS["Control.Monad"],PS["Control.MonadPlus"],PS["Control.MonadZero"],PS["Control.Plus"],PS["Control.Semigroupoid"],PS["Data.Eq"],PS["Data.Foldable"],PS["Data.Function"],PS["Data.Functor"];var e=PS["Data.List"],t=PS["Data.List.Types"],r=PS["Data.Maybe"],a=(PS["Data.Monoid"],PS["Data.Ord"],PS["Data.Ordering"],PS["Data.Semigroup"],PS["Data.Semiring"],PS["Data.Show"],PS["Data.Traversable"],PS["Data.Tuple"]),o=(PS["Data.Unfoldable"],PS["Data.Unfoldable1"],PS.Prelude,function(){function n(n,e){this.value0=n,this.value1=e}return n.create=function(e){return function(t){return new n(e,t)}},n}()),u=new o(t.Nil.value,t.Nil.value);n.CatQueue=o,n.empty=u,n.null=function(n){return n.value0 instanceof t.Nil&&n.value1 instanceof t.Nil},n.snoc=function(n){return function(e){return new o(n.value0,new t.Cons(e,n.value1))}},n.uncons=function(n){var u,i=!1;function l(u){if(u.value0 instanceof t.Nil&&u.value1 instanceof t.Nil)return i=!0,r.Nothing.value;if(!(u.value0 instanceof t.Nil)){if(u.value0 instanceof t.Cons)return i=!0,new r.Just(new a.Tuple(u.value0.value0,new o(u.value0.value1,u.value1)));throw new Error("Failed pattern match at Data.CatQueue (line 83, column 1 - line 83, column 63): "+[u.constructor.name])}n=new o(e.reverse(u.value1),t.Nil.value)}for(;!i;)u=l(n);return u}}(PS["Data.CatQueue"]=PS["Data.CatQueue"]||{}),function(n){"use strict";PS["Control.Alt"],PS["Control.Alternative"],PS["Control.Applicative"],PS["Control.Apply"],PS["Control.Bind"],PS["Control.Monad"],PS["Control.MonadPlus"],PS["Control.MonadZero"],PS["Control.Plus"];var e=PS["Data.CatQueue"],t=(PS["Data.Foldable"],PS["Data.Function"],PS["Data.Functor"],PS["Data.List"],PS["Data.List.Types"]),r=PS["Data.Maybe"],a=(PS["Data.Monoid"],PS["Data.Semigroup"]),o=(PS["Data.Semiring"],PS["Data.Show"],PS["Data.Traversable"],PS["Data.Tuple"]),u=(PS["Data.Unfoldable"],PS["Data.Unfoldable1"],PS.Prelude,function(){function n(){}return n.value=new n,n}()),i=function(){function n(n,e){this.value0=n,this.value1=e}return n.create=function(e){return function(t){return new n(e,t)}},n}(),l=function(n){return function(t){if(n instanceof u)return t;if(n instanceof i)return new i(n.value0,e.snoc(n.value1)(t));throw new Error("Failed pattern match at Data.CatList (line 111, column 1 - line 111, column 54): "+[n.constructor.name,t.constructor.name])}},c=u.value,f=function(n){return function(e){return e instanceof u?n:n instanceof u?e:l(n)(e)}},s=new a.Semigroup(f);n.CatNil=u,n.CatCons=i,n.empty=c,n.append=f,n.snoc=function(n){return function(t){return f(n)(new i(t,e.empty))}},n.uncons=function(n){if(n instanceof u)return r.Nothing.value;if(n instanceof i)return new r.Just(new o.Tuple(n.value0,e.null(n.value1)?u.value:(a=l,function(n){return function(o){var u,i=function(n){return function(e){return function(r){var a,o=n,u=e,i=!1;function l(n,e,a){if(a instanceof t.Nil)return i=!0,e;if(a instanceof t.Cons)return o=n,u=n(e)(a.value0),void(r=a.value1);throw new Error("Failed pattern match at Data.CatList (line 126, column 3 - line 126, column 59): "+[n.constructor.name,e.constructor.name,a.constructor.name])}for(;!i;)a=l(o,u,r);return a}}};return(u=o,function(o){var l,c=u,f=!1;function s(u,l){var s=e.uncons(u);if(s instanceof r.Nothing)return f=!0,i(function(n){return function(e){return e(n)}})(n)(l);if(s instanceof r.Just)return c=s.value0.value1,void(o=new t.Cons(a(s.value0.value0),l));throw new Error("Failed pattern match at Data.CatList (line 122, column 14 - line 124, column 67): "+[s.constructor.name])}for(;!f;)l=s(c,o);return l})(t.Nil.value)}})(u.value)(n.value1)));var a;throw new Error("Failed pattern match at Data.CatList (line 102, column 1 - line 102, column 61): "+[n.constructor.name])},n.semigroupCatList=s}(PS["Data.CatList"]=PS["Data.CatList"]||{}),function(n){"use strict";var e=PS["Control.Applicative"],t=PS["Control.Apply"],r=PS["Control.Bind"],a=(PS["Control.Category"],PS["Control.Monad"]),o=PS["Control.Monad.Rec.Class"],u=(PS["Control.Monad.Trans.Class"],PS["Control.Semigroupoid"],PS["Data.CatList"]),i=(PS["Data.Either"],PS["Data.Eq"],PS["Data.Foldable"],PS["Data.Function"],PS["Data.Functor"]),l=PS["Data.Maybe"],c=(PS["Data.Ord"],PS["Data.Ordering"],PS["Data.Semigroup"]),f=(PS["Data.Traversable"],PS["Data.Tuple"],PS.Prelude,PS["Unsafe.Coerce"],function(){function n(n,e){this.value0=n,this.value1=e}return n.create=function(e){return function(t){return new n(e,t)}},n}()),s=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),d=function(){function n(n,e){this.value0=n,this.value1=e}return n.create=function(e){return function(t){return new n(e,t)}},n}(),S=function(n){return new f(n,u.empty)},P=new a.Monad(function(){return g},function(){return p}),v=new i.Functor(function(n){return function(t){return r.bindFlipped(p)(function(t){return e.pure(g)(n(t))})(t)}}),p=new r.Bind(function(){return m},function(n){return function(e){return new f(n.value0,u.snoc(n.value1)(e))}}),m=new t.Apply(function(){return v},a.ap(P)),g=new e.Applicative(function(){return m},function(n){return S(s.create(n))});n.liftF=function(n){return S(new d(n,function(n){return e.pure(g)(n)}))},n.foldFree=function(n){return function(t){return o.tailRecM(n)(function(r){var a=function(n){var e,t=!1;function r(e){var r=function(n){return function(e){return new f(n.value0,c.append(u.semigroupCatList)(n.value1)(e))}};if(e.value0 instanceof s){var a=u.uncons(e.value1);if(a instanceof l.Nothing)return t=!0,new s(e.value0.value0);if(a instanceof l.Just)return void(n=r(function(n){return n}(a.value0.value0)(e.value0.value0))(a.value0.value1));throw new Error("Failed pattern match at Control.Monad.Free (line 220, column 7 - line 224, column 64): "+[a.constructor.name])}if(e.value0 instanceof d)return t=!0,new d(e.value0.value0,function(n){return r(e.value0.value1(n))(e.value1)});throw new Error("Failed pattern match at Control.Monad.Free (line 218, column 3 - line 226, column 56): "+[e.value0.constructor.name])}for(;!t;)e=r(n);return e}(r);if(a instanceof s)return i.map(n.Monad0().Bind1().Apply0().Functor0())(o.Done.create)(e.pure(n.Monad0().Applicative0())(a.value0));if(a instanceof d)return i.map(n.Monad0().Bind1().Apply0().Functor0())(function(n){return o.Loop.create(a.value1(n))})(t(a.value0));throw new Error("Failed pattern match at Control.Monad.Free (line 151, column 10 - line 153, column 37): "+[a.constructor.name])})}},n.freeFunctor=v,n.freeBind=p,n.freeApplicative=g,n.freeApply=m,n.freeMonad=P}(PS["Control.Monad.Free"]=PS["Control.Monad.Free"]||{}),function(n){"use strict";var e=PS["Unsafe.Coerce"],t=e.unsafeCoerce,r=e.unsafeCoerce;n.mkExists=r,n.runExists=t}(PS["Data.Exists"]=PS["Data.Exists"]||{}),function(n){"use strict";PS["Control.Alt"],PS["Control.Alternative"],PS["Control.Applicative"],PS["Control.Apply"],PS["Control.Bind"],PS["Control.Category"],PS["Control.Comonad"],PS["Control.Extend"],PS["Control.Monad"],PS["Control.Monad.Trans.Class"],PS["Control.MonadPlus"],PS["Control.MonadZero"],PS["Control.Plus"],PS["Control.Semigroupoid"],PS["Data.Distributive"],PS["Data.Eq"];var e=PS["Data.Exists"];PS["Data.Foldable"],PS["Data.Function"],PS["Data.Functor"],PS["Data.Functor.Invariant"],PS["Data.Ord"],PS["Data.Semigroup.Foldable"],PS["Data.Semigroup.Traversable"],PS["Data.Traversable"],PS.Prelude;n.unCoyoneda=function(n){return function(t){return e.runExists(function(e){return n(e.value0)(e.value1)})(t)}}}(PS["Data.Coyoneda"]=PS["Data.Coyoneda"]||{}),function(n){"use strict";var e=PS["Control.Applicative"],t=PS["Control.Apply"],r=PS["Control.Bind"],a=(PS["Control.Category"],PS["Control.Monad"]),o=(PS["Control.Monad.Error.Class"],PS["Control.Monad.Reader.Class"],PS["Control.Monad.Rec.Class"]),u=(PS["Control.Monad.State.Class"],PS["Control.Monad.Trans.Class"]),i=(PS["Control.Monad.Writer.Class"],PS["Control.Semigroupoid"],PS["Data.Bifunctor"]),l=PS["Data.Either"],c=PS["Data.Exists"],f=PS["Data.Functor"],s=(PS["Data.Monoid"],PS["Data.Semigroup"],PS["Data.Unit"]),d=(PS["Effect.Class"],PS.Prelude,function(){function n(n,e){this.value0=n,this.value1=e}return n.create=function(e){return function(t){return new n(e,t)}},n}()),S=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),P=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),v=S.create,p=function(n){return function(e){return new P(c.mkExists(new d(n,e)))}},m=function(n){return function(e){return new f.Functor(function(t){return function(r){if(r instanceof S)return new S(function(a){return f.map(e)(i.bimap(l.bifunctorEither)(t)(f.map(n)(f.map(m(n)(e))(t))))(r.value0(s.unit))});if(r instanceof P)return c.runExists(function(r){return p(r.value0)(function(a){return f.map(m(n)(e))(t)(r.value1(a))})})(r.value0);throw new Error("Failed pattern match at Control.Monad.Free.Trans (line 57, column 1 - line 57, column 71): "+[t.constructor.name,r.constructor.name])}})}},g=function(n){return function(e){return new a.Monad(function(){return h(n)(e)},function(){return D(n)(e)})}},D=function(n){return function(e){return new r.Bind(function(){return b(n)(e)},function(n){return function(e){return n instanceof P?c.runExists(function(n){return p(n.value0)(function(t){return p(function(e){return n.value1(t)})(e)})})(n.value0):p(function(e){return n})(e)}})}},b=function(n){return function(e){return new t.Apply(function(){return m(n)(e.Bind1().Apply0().Functor0())},a.ap(g(n)(e)))}},h=function(n){return function(t){return new e.Applicative(function(){return b(n)(t)},function(n){return new S(function(r){return e.pure(t.Applicative0())(new l.Left(n))})})}},w=function(n){return function(t){return o.tailRecM(t)(function(a){if(a instanceof S)return f.map(t.Monad0().Bind1().Apply0().Functor0())(o.Done.create)(a.value0(s.unit));if(a instanceof P)return c.runExists(function(a){var u=a.value0(s.unit);if(u instanceof S)return r.bind(t.Monad0().Bind1())(u.value0(s.unit))(function(u){if(u instanceof l.Left)return e.pure(t.Monad0().Applicative0())(new o.Loop(a.value1(u.value0)));if(u instanceof l.Right)return e.pure(t.Monad0().Applicative0())(new o.Done(new l.Right(f.map(n)(function(e){return r.bind(D(n)(t.Monad0()))(e)(a.value1)})(u.value0))));throw new Error("Failed pattern match at Control.Monad.Free.Trans (line 52, column 20 - line 54, column 67): "+[u.constructor.name])});if(u instanceof P)return c.runExists(function(u){return e.pure(t.Monad0().Applicative0())(new o.Loop(r.bind(D(n)(t.Monad0()))(u.value0(s.unit))(function(e){return r.bind(D(n)(t.Monad0()))(u.value1(e))(a.value1)})))})(u.value0);throw new Error("Failed pattern match at Control.Monad.Free.Trans (line 50, column 5 - line 55, column 98): "+[u.constructor.name])})(a.value0);throw new Error("Failed pattern match at Control.Monad.Free.Trans (line 47, column 3 - line 47, column 75): "+[a.constructor.name])})}};n.freeT=v,n.liftFreeT=function(n){return function(t){return function(r){return new S(function(a){return e.pure(t.Applicative0())(new l.Right(f.map(n)(e.pure(h(n)(t)))(r)))})}}},n.resume=w,n.runFreeT=function(n){return function(t){return function(a){return o.tailRecM(t)(r.composeKleisliFlipped(t.Monad0().Bind1())(function(n){if(n instanceof l.Left)return e.pure(t.Monad0().Applicative0())(new o.Done(n.value0));if(n instanceof l.Right)return f.map(t.Monad0().Bind1().Apply0().Functor0())(o.Loop.create)(a(n.value0));throw new Error("Failed pattern match at Control.Monad.Free.Trans (line 126, column 3 - line 126, column 63): "+[n.constructor.name])})(w(n)(t)))}}},n.functorFreeT=m,n.applyFreeT=b,n.applicativeFreeT=h,n.bindFreeT=D,n.monadFreeT=g,n.monadTransFreeT=function(n){return new u.MonadTrans(function(n){return function(e){return new S(function(t){return f.map(n.Bind1().Apply0().Functor0())(l.Left.create)(e)})}})},n.monadRecFreeT=function(n){return function(t){return new o.MonadRec(function(){return g(n)(t)},function(a){var u=function(i){return r.bind(D(n)(t))(a(i))(function(r){if(r instanceof o.Loop)return u(r.value0);if(r instanceof o.Done)return e.pure(h(n)(t))(r.value0);throw new Error("Failed pattern match at Control.Monad.Free.Trans (line 80, column 15 - line 82, column 25): "+[r.constructor.name])})};return u})}}}(PS["Control.Monad.Free.Trans"]=PS["Control.Monad.Free.Trans"]||{}),function(n){"use strict";var e=PS["Control.Applicative"],t=PS["Control.Apply"],r=PS["Control.Bind"],a=PS["Control.Category"],o=(PS["Control.Monad.Except"],PS["Control.Monad.Except.Trans"]),u=PS["Control.Monad.Free.Trans"],i=PS["Control.Monad.Rec.Class"],l=PS["Control.Monad.Trans.Class"],c=(PS["Control.Parallel"],PS["Control.Parallel.Class"]),f=(PS["Control.Semigroupoid"],PS["Data.Bifunctor"]),s=PS["Data.Either"],d=(PS["Data.Function"],PS["Data.Functor"]),S=PS["Data.Identity"],P=PS["Data.Maybe"],v=PS["Data.Newtype"],p=PS["Data.Profunctor"],m=PS["Data.Tuple"],g=PS["Data.Unit"],D=(PS.Prelude,function(){function n(n,e){this.value0=n,this.value1=e}return n.create=function(e){return function(t){return new n(e,t)}},n}()),b=new p.Profunctor(function(n){return function(e){return function(t){return p.dimap(p.profunctorFn)(n)(e)(t)}}}),h=function(n){return function(e){return function(t){return i.tailRecM(u.monadRecFreeT(n)(e))(function(r){return d.map(u.functorFreeT(n)(e.Bind1().Apply0().Functor0()))(P.maybe(new i.Loop(g.unit))(i.Done.create))(t)})(g.unit)}}},w=function(n){return function(t){return function(a){return function(i){return function(l){return function(c){return function(f){var s=function(c){return o.runExceptT(r.bind(o.bindExceptT(i.Monad0()))(o.ExceptT(u.resume(n)(i)(c.value0)))(function(n){return r.bind(o.bindExceptT(i.Monad0()))(o.ExceptT(u.resume(t)(i)(c.value1)))(function(t){return e.pure(o.applicativeExceptT(i.Monad0()))(d.map(a)(function(n){return u.freeT(function(e){return s(n)})})(l(m.Tuple.create)(n)(t)))})}))};return u.freeT(function(n){return s(new m.Tuple(c,f))})}}}}}}},y=function(n){return function(a){return function(o){return function(i){return function(l){return function(f){return function(S){return function(P){var v=function(S){return r.bind(i.Monad0().Bind1())(c.sequential(l)(t.apply(l.Applicative1().Apply0())(d.map(l.Applicative1().Apply0().Functor0())(t.lift2(s.applyEither)(f(m.Tuple.create)))(c.parallel(l)(u.resume(n)(i)(S.value0))))(c.parallel(l)(u.resume(a)(i)(S.value1)))))(function(n){if(n instanceof s.Left)return e.pure(i.Monad0().Applicative0())(new s.Left(n.value0));if(n instanceof s.Right)return e.pure(i.Monad0().Applicative0())(new s.Right(d.map(o)(function(n){return u.freeT(function(e){return v(n)})})(n.value0)));throw new Error("Failed pattern match at Control.Coroutine (line 79, column 5 - line 81, column 63): "+[n.constructor.name])})};return u.freeT(function(n){return v(new m.Tuple(S,P))})}}}}}}}},M=new d.Functor(p.rmap(b)),E=new f.Bifunctor(function(n){return function(e){return function(t){return new D(n(t.value0),e(t.value1))}}}),C=new d.Functor(f.rmap(E)),A=function(n){return function(e){return u.liftFreeT(C)(n)(new D(e,g.unit))}};n.loop=h,n.runProcess=function(n){return u.runFreeT(S.functorIdentity)(n)(function(t){return e.pure(n.Monad0().Applicative0())(v.unwrap(S.newtypeIdentity)(t))})},n.fuseWith=y,n.fuseWithL=w,n.Emit=D,n.emit=A,n.producer=function(n){return function(t){return h(C)(n)(r.bind(u.bindFreeT(C)(n))(l.lift(u.monadTransFreeT(C))(n)(t))(function(t){if(t instanceof s.Left)return d.voidLeft(u.functorFreeT(C)(n.Bind1().Apply0().Functor0()))(A(n)(t.value0))(P.Nothing.value);if(t instanceof s.Right)return e.pure(u.applicativeFreeT(C)(n))(new P.Just(t.value0));throw new Error("Failed pattern match at Control.Coroutine (line 125, column 3 - line 127, column 29): "+[t.constructor.name])}))}},n.await=function(n){return u.liftFreeT(M)(n)(a.identity(a.categoryFn))},n.connect=function(n){return function(e){return y(C)(M)(S.functorIdentity)(n)(e)(function(n){return function(e){return function(t){return n(e.value1)(t(e.value0))}}})}},n.pullFrom=function(n){return w(M)(C)(S.functorIdentity)(n)(function(n){return function(t){return function(r){return e.pure(S.applicativeIdentity)(n(t(r.value0))(r.value1))}}})},n.bifunctorEmit=E,n.functorEmit=C,n.profunctorAwait=b,n.functorAwait=M}(PS["Control.Coroutine"]=PS["Control.Coroutine"]||{}),function(n){"use strict";var e=function(){function n(){this.head=null,this.last=null,this.size=0}function e(n,e){this.queue=n,this.value=e,this.next=null,this.prev=null}function t(e){this.draining=!1,this.error=null,this.value=e,this.takes=new n,this.reads=new n,this.puts=new n}var r={};function a(n){try{n()}catch(n){setTimeout(function(){throw n},0)}}function o(n){var e;switch(n.size){case 0:return null;case 1:e=n.head,n.head=null;break;case 2:e=n.last,n.head.next=null,n.last=null;break;default:e=n.last,n.last=e.prev,n.last.next=null}return e.prev=null,e.queue=null,n.size--,e.value}function u(n){var e;switch(n.size){case 0:return null;case 1:e=n.head,n.head=null;break;case 2:e=n.head,n.last.prev=null,n.head=n.last,n.last=null;break;default:e=n.head,n.head=e.next,n.head.prev=null}return e.next=null,e.queue=null,n.size--,e.value}return t.EMPTY=r,t.putLast=function(n,t){var r=new e(n,t);switch(n.size){case 0:n.head=r;break;case 1:r.prev=n.head,n.head.next=r,n.last=r;break;default:r.prev=n.last,n.last.next=r,n.last=r}return n.size++,r},t.takeLast=o,t.takeHead=u,t.deleteCell=function(n){null!==n.queue&&(n.queue.last!==n?n.queue.head!==n?(n.prev&&(n.prev.next=n.next),n.next&&(n.next.prev=n.prev),n.queue.size--,n.queue=null,n.value=null,n.next=null,n.prev=null):u(n.queue):o(n.queue))},t.drainVar=function(n,e){if(!e.draining){var t,o,i,l,c,f=e.puts,s=e.takes,d=e.reads;for(e.draining=!0;;){if(t=null,o=null,i=null,l=e.value,c=d.size,null!==e.error){for(l=n.left(e.error);t=u(f);)a(t.cb(l));for(;o=u(d);)a(o(l));for(;i=u(s);)a(i(l));break}if(l===r&&(t=u(f))&&(e.value=l=t.value),l!==r){for(i=u(s);c--&&(o=u(d));)a(o(n.right(l)));null!==i&&(e.value=r,a(i(n.right(l))))}if(null!==t&&a(t.cb(n.right(void 0))),e.value===r&&0===f.size||e.value!==r&&0===s.size)break}e.draining=!1}},t}();n.empty=function(){return new e(e.EMPTY)},n._killVar=function(n,t,r){return function(){null===r.error&&(r.error=t,r.value=e.EMPTY,e.drainVar(n,r))}},n._putVar=function(n,t,r,a){return function(){var o=e.putLast(r.puts,{cb:a,value:t});return e.drainVar(n,r),function(){e.deleteCell(o)}}},n._takeVar=function(n,t,r){return function(){var a=e.putLast(t.takes,r);return e.drainVar(n,t),function(){e.deleteCell(a)}}}}(PS["Effect.AVar"]=PS["Effect.AVar"]||{}),function(n){"use strict";var e=PS["Effect.AVar"],t=PS["Data.Either"],r=(PS["Data.Function.Uncurried"],PS["Data.Maybe"]),a=(PS.Effect,PS["Effect.Exception"],PS.Prelude,function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}()),o=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),u=function(){function n(){}return n.value=new n,n}(),i={left:t.Left.create,right:t.Right.create,nothing:r.Nothing.value,just:r.Just.create,killed:a.create,filled:o.create,empty:u.value};n.Killed=a,n.Filled=o,n.Empty=u,n.take=function(n){return function(t){return e._takeVar(i,n,t)}},n.put=function(n){return function(t){return function(r){return e._putVar(i,n,t,r)}}},n.kill=function(n){return function(t){return e._killVar(i,n,t)}},n.empty=e.empty}(PS["Effect.AVar"]=PS["Effect.AVar"]||{}),function(n){"use strict";PS["Control.Applicative"],PS["Control.Bind"],PS["Control.Semigroupoid"],PS["Data.Maybe"],PS.Effect;var e=PS["Effect.AVar"],t=PS["Effect.Aff"],r=PS["Effect.Class"],a=(PS["Effect.Exception"],PS.Prelude,r.liftEffect(t.monadEffectAff)(e.empty));n.empty=a,n.take=function(n){return t.makeAff(function(r){return function(){var a=e.take(n)(r)();return t.effectCanceler(a)}})},n.put=function(n){return function(r){return t.makeAff(function(a){return function(){var o=e.put(n)(r)(a)();return t.effectCanceler(o)}})}},n.kill=function(n){return function(a){return r.liftEffect(t.monadEffectAff)(e.kill(n)(a))}}}(PS["Effect.Aff.AVar"]=PS["Effect.Aff.AVar"]||{}),function(n){"use strict";PS["Control.Applicative"],PS["Control.Bind"],PS["Control.Coroutine"],PS["Control.Monad.Free.Trans"],PS["Control.Monad.Rec.Class"],PS["Control.Monad.Trans.Class"],PS["Control.Semigroupoid"],PS["Data.Bifunctor"],PS["Data.Either"];var e=PS["Data.Eq"],t=(PS["Data.Foldable"],PS["Data.Function"],PS["Data.Functor"],PS["Data.Maybe"],PS["Data.Ord"],PS["Data.Ordering"],PS["Data.Unit"],PS.Effect,PS["Effect.Aff"],PS["Effect.Aff.AVar"],PS["Effect.Aff.Class"],PS["Effect.Class"],PS["Effect.Exception"],PS.Prelude,function(){function n(){}return n.value=new n,n}()),r=function(){function n(){}return n.value=new n,n}(),a=new e.Eq(function(n){return function(e){return n instanceof t&&e instanceof t||n instanceof r&&e instanceof r}});n.Listening=t,n.Done=r,n.unEventSource=function(n){return n},n.eqSubscribeStatus=a}(PS["Halogen.Query.EventSource"]=PS["Halogen.Query.EventSource"]||{}),function(n){"use strict";PS["Control.Category"],PS["Data.Function"],PS["Data.Functor"],PS["Effect.Aff"],PS["Effect.Exception"],PS.Prelude;var e=PS["Unsafe.Coerce"].unsafeCoerce;n.unFork=e}(PS["Halogen.Query.ForkF"]=PS["Halogen.Query.ForkF"]||{}),function(n){"use strict";var e=PS["Control.Applicative"],t=(PS["Control.Applicative.Free"],PS["Control.Apply"]),r=PS["Control.Bind"],a=PS["Control.Category"],o=PS["Control.Monad"],u=PS["Control.Monad.Free"],i=(PS["Control.Monad.Reader.Class"],PS["Control.Monad.Rec.Class"],PS["Control.Monad.State.Class"]),l=(PS["Control.Monad.Trans.Class"],PS["Control.Monad.Writer.Class"],PS["Control.Parallel.Class"],PS["Control.Semigroupoid"],PS["Data.Bifunctor"],PS["Data.Coyoneda"],PS["Data.Function"],PS["Data.Functor"]),c=(PS["Data.List"],PS["Data.List.Types"],PS["Data.Maybe"],PS["Data.Newtype"],PS["Data.Tuple"],PS["Data.Unit"]),f=PS["Effect.Aff.Class"],s=PS["Effect.Class"],d=(PS["Effect.Exception"],PS["Halogen.Query.EventSource"],PS["Halogen.Query.ForkF"],PS["Halogen.Query.InputF"],PS.Prelude,PS["Web.DOM"],function(n){return n}),S=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),P=function(){function n(n,e){this.value0=n,this.value1=e}return n.create=function(e){return function(t){return new n(e,t)}},n}(),v=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),p=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),m=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),g=function(){function n(n,e){this.value0=n,this.value1=e}return n.create=function(e){return function(t){return new n(e,t)}},n}(),D=function(){function n(n,e){this.value0=n,this.value1=e}return n.create=function(e){return function(t){return new n(e,t)}},n}(),b=function(){function n(n,e){this.value0=n,this.value1=e}return n.create=function(e){return function(t){return new n(e,t)}},n}(),h=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),w=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),y=function(){function n(n,e){this.value0=n,this.value1=e}return n.create=function(e){return function(t){return new n(e,t)}},n}(),M=new l.Functor(function(n){return function(e){return l.map(u.freeFunctor)(n)(e)}}),E=new t.Apply(function(){return M},function(n){return function(e){return t.apply(u.freeApply)(n)(e)}}),C=new r.Bind(function(){return E},function(n){return function(e){return r.bind(u.freeBind)(n)(function(n){return e(n)})}}),A=new e.Applicative(function(){return E},function(n){return e.pure(u.freeApplicative)(n)}),T=new o.Monad(function(){return A},function(){return C}),F=function(n){return new s.MonadEffect(function(){return T},function(e){return d(u.liftF(v.create(s.liftEffect(n)(e))))})},H=new i.MonadState(function(){return T},function(n){return d(u.liftF(S.create(n)))});n.State=S,n.Subscribe=P,n.Lift=v,n.Halt=p,n.GetSlots=m,n.CheckSlot=g,n.ChildQuery=D,n.Raise=b,n.Par=h,n.Fork=w,n.GetRef=y,n.HalogenM=d,n.getRef=function(n){return d(u.liftF(new y(n,a.identity(a.categoryFn))))},n.raise=function(n){return d(u.liftF(new b(n,c.unit)))},n.functorHalogenM=M,n.applyHalogenM=E,n.applicativeHalogenM=A,n.bindHalogenM=C,n.monadHalogenM=T,n.monadEffectHalogenM=F,n.monadAffHalogenM=function(n){return new f.MonadAff(function(){return F(n.MonadEffect0())},function(e){return d(u.liftF(v.create(f.liftAff(n)(e))))})},n.monadStateHalogenM=H}(PS["Halogen.Query.HalogenM"]=PS["Halogen.Query.HalogenM"]||{}),function(n){"use strict";PS["Control.Semigroupoid"],PS["Data.Bifunctor"],PS["Data.Const"],PS["Data.Functor"];var e=PS["Data.Maybe"],t=PS["Data.Ord"],r=PS["Halogen.Data.OrdBox"],a=(PS["Halogen.HTML.Core"],PS["Halogen.Query.HalogenM"],PS.Prelude,PS["Unsafe.Coerce"]),o=function(){function n(n,e,t,r,a,o){this.value0=n,this.value1=e,this.value2=t,this.value3=r,this.value4=a,this.value5=o}return n.create=function(e){return function(t){return function(r){return function(a){return function(o){return function(u){return new n(e,t,r,a,o,u)}}}}}},n}(),u=a.unsafeCoerce,i=o.create,l=a.unsafeCoerce,c=function(n){return function(n){return l({initialState:n.initialState,render:n.render,eval:n.eval,receiver:n.receiver,initializer:n.initializer,finalizer:n.finalizer,mkOrdBox:r.mkOrdBox(t.ordVoid)})}};n.mkComponent=l,n.unComponent=u,n.component=function(n){return function(n){return c()({initialState:n.initialState,render:n.render,eval:n.eval,receiver:n.receiver,initializer:e.Nothing.value,finalizer:e.Nothing.value})}},n.lifecycleComponent=c,n.parentComponent=function(n){return function(t){return l({initialState:t.initialState,render:t.render,eval:t.eval,receiver:t.receiver,initializer:e.Nothing.value,finalizer:e.Nothing.value,mkOrdBox:r.mkOrdBox(n)})}},n.mkComponentSlot=i,n.unComponentSlot=function(n){return function(e){return n(e.value0)(e.value1)(e.value2)(e.value3)(e.value4)(e.value5)}}}(PS["Halogen.Component"]=PS["Halogen.Component"]||{}),function(n){"use strict";PS["Control.Applicative"],PS["Control.Semigroupoid"],PS["DOM.HTML.Indexed"],PS["DOM.HTML.Indexed.ButtonType"],PS["DOM.HTML.Indexed.FormMethod"],PS["DOM.HTML.Indexed.InputType"],PS["DOM.HTML.Indexed.MenuType"],PS["DOM.HTML.Indexed.MenuitemType"];var e=PS["DOM.HTML.Indexed.OnOff"],t=(PS["DOM.HTML.Indexed.OrderedListType"],PS["DOM.HTML.Indexed.PreloadValue"],PS["DOM.HTML.Indexed.StepValue"],PS["Data.Function"],PS["Data.Functor"],PS["Data.HeytingAlgebra"],PS["Data.Maybe"]),r=(PS["Data.MediaType"],PS["Data.Newtype"]),a=(PS["Data.String"],PS["Data.String.Common"],PS["Data.Unit"]),o=PS["Halogen.HTML.Core"],u=PS["Halogen.Query.InputF"],i=(PS["Halogen.VDom.DOM.Prop"],PS.Prelude,PS["Unsafe.Coerce"],PS["Web.DOM.Element"],function(n){return o.ref((e=n,function(n){return new t.Just(new u.RefUpdate(e,n,a.unit))}));var e}),l=function(n){return o.prop(n)},c=l(o.booleanIsProp)("required"),f=l(o.intIsProp)("rows"),s=l(o.stringIsProp)("target"),d=l(o.stringIsProp)("title"),S=l(o.stringIsProp)("value"),P=l(o.stringIsProp)("name"),v=l(o.stringIsProp)("id"),p=l(o.stringIsProp)("href"),m=l(o.stringIsProp)("htmlFor"),g=l(o.booleanIsProp)("checked"),D=l(o.booleanIsProp)("autofocus"),b=o.attr(t.Nothing.value);n.prop=l,n.attr=b,n.ref=i,n.class_=function(n){return l(o.stringIsProp)("className")(r.unwrap(o.newtypeClassName)(n))},n.rows=f,n.for=m,n.href=p,n.id_=v,n.name=P,n.target=s,n.title=d,n.type_=function(n){return l(n)("type")},n.value=S,n.required=c,n.checked=g,n.autocomplete=function(n){return l(o.onOffIsProp)("autocomplete")(n?e.On.value:e.Off.value)},n.autofocus=D}(PS["Halogen.HTML.Properties"]=PS["Halogen.HTML.Properties"]||{}),function(n){"use strict";PS["Control.Applicative"],PS["Control.Semigroupoid"],PS["DOM.HTML.Indexed"],PS["Data.Function"];var e=PS["Data.Maybe"],t=(PS["Data.Tuple"],PS["Halogen.HTML.Core"]),r=(PS["Halogen.HTML.Properties"],PS["Halogen.Query.InputF"],PS["Halogen.VDom"],PS["Halogen.VDom.Types"],PS.Prelude,PS["Unsafe.Coerce"],t.element(e.Nothing.value)),a=r("form"),o=r("label"),u=r("p"),i=r("span"),l=r("table"),c=r("tbody"),f=c([]),s=r("td"),d=s([]),S=r("tr"),P=S([]),v=r("div"),p=v([]),m=r("button"),g=function(n){return r("br")(n)([])},D=g([]),b=r("a");n.element=r,n.a=b,n.br=g,n.br_=D,n.button=m,n.div=v,n.div_=p,n.form=a,n.input=function(n){return r("input")(n)([])},n.label=o,n.p=u,n.span=i,n.table=l,n.tbody=c,n.tbody_=f,n.td=s,n.td_=d,n.textarea=function(n){return r("textarea")(n)([])},n.tr=S,n.tr_=P}(PS["Halogen.HTML.Elements"]=PS["Halogen.HTML.Elements"]||{}),function(n){"use strict";PS["Control.Semigroupoid"],PS["Data.Functor"];var e=PS["Data.Maybe"],t=PS["Halogen.Component"],r=(PS["Halogen.Component.ChildPath"],PS["Halogen.HTML.Core"]);PS["Halogen.HTML.Elements"],PS["Halogen.HTML.Properties"],PS.Prelude,PS["Unsafe.Coerce"];n.slot=function(n){return function(a){return function(o){return function(u){var i=t.unComponent(function(n){return n.receiver})(a);return r.slot(t.mkComponentSlot(n)(a)(o)(i)(u)(e.Just.create))}}}}}(PS["Halogen.HTML"]=PS["Halogen.HTML"]||{}),function(n){"use strict";var e=PS["Control.Applicative"],t=(PS["Control.Apply"],PS["Control.Category"],PS["Control.Semigroupoid"],PS["Data.Eq"],PS["Data.Foldable"]),r=(PS["Data.FoldableWithIndex"],PS["Data.Function"],PS["Data.Functor"]),a=(PS["Data.FunctorWithIndex"],PS["Data.HeytingAlgebra"],PS["Data.List"],PS["Data.List.Lazy"],PS["Data.List.Lazy.Types"],PS["Data.List.Types"]),o=PS["Data.Maybe"],u=(PS["Data.Monoid"],PS["Data.Ord"]),i=PS["Data.Ordering"],l=PS["Data.Semigroup"],c=(PS["Data.Semiring"],PS["Data.Show"],PS["Data.Traversable"],PS["Data.TraversableWithIndex"],PS["Data.Tuple"]),f=(PS["Data.Unfoldable"],PS["Partial.Unsafe"],PS.Prelude,function(){function n(){}return n.value=new n,n}()),s=function(){function n(n,e,t,r){this.value0=n,this.value1=e,this.value2=t,this.value3=r}return n.create=function(e){return function(t){return function(r){return function(a){return new n(e,t,r,a)}}}},n}(),d=function(){function n(n,e,t,r,a,o,u){this.value0=n,this.value1=e,this.value2=t,this.value3=r,this.value4=a,this.value5=o,this.value6=u}return n.create=function(e){return function(t){return function(r){return function(a){return function(o){return function(u){return function(i){return new n(e,t,r,a,o,u,i)}}}}}}},n}(),S=function(){function n(n,e,t){this.value0=n,this.value1=e,this.value2=t}return n.create=function(e){return function(t){return function(r){return new n(e,t,r)}}},n}(),P=function(){function n(n,e,t){this.value0=n,this.value1=e,this.value2=t}return n.create=function(e){return function(t){return function(r){return new n(e,t,r)}}},n}(),v=function(){function n(n,e,t,r,a,o){this.value0=n,this.value1=e,this.value2=t,this.value3=r,this.value4=a,this.value5=o}return n.create=function(e){return function(t){return function(r){return function(a){return function(o){return function(u){return new n(e,t,r,a,o,u)}}}}}},n}(),p=function(){function n(n,e,t,r,a,o){this.value0=n,this.value1=e,this.value2=t,this.value3=r,this.value4=a,this.value5=o}return n.create=function(e){return function(t){return function(r){return function(a){return function(o){return function(u){return new n(e,t,r,a,o,u)}}}}}},n}(),m=function(){function n(n,e,t,r,a,o){this.value0=n,this.value1=e,this.value2=t,this.value3=r,this.value4=a,this.value5=o}return n.create=function(e){return function(t){return function(r){return function(a){return function(o){return function(u){return new n(e,t,r,a,o,u)}}}}}},n}(),g=function(){function n(n,e,t,r){this.value0=n,this.value1=e,this.value2=t,this.value3=r}return n.create=function(e){return function(t){return function(r){return function(a){return new n(e,t,r,a)}}}},n}(),D=function(n){if(n instanceof f)return a.Nil.value;if(n instanceof s)return l.append(a.semigroupList)(D(n.value0))(l.append(a.semigroupList)(e.pure(a.applicativeList)(n.value2))(D(n.value3)));if(n instanceof d)return l.append(a.semigroupList)(D(n.value0))(l.append(a.semigroupList)(e.pure(a.applicativeList)(n.value2))(l.append(a.semigroupList)(D(n.value3))(l.append(a.semigroupList)(e.pure(a.applicativeList)(n.value5))(D(n.value6)))));throw new Error("Failed pattern match at Data.Map.Internal (line 602, column 1 - line 602, column 40): "+[n.constructor.name])},b=function(n){return function(e){var t=u.compare(n);return function(n){var r,a=!1;function u(r){if(r instanceof f)return a=!0,o.Nothing.value;if(r instanceof s){var u=t(e)(r.value1);return u instanceof i.EQ?(a=!0,new o.Just(r.value2)):u instanceof i.LT?void(n=r.value0):void(n=r.value3)}if(r instanceof d){var l=t(e)(r.value1);if(l instanceof i.EQ)return a=!0,new o.Just(r.value2);var c=t(e)(r.value4);return c instanceof i.EQ?(a=!0,new o.Just(r.value5)):l instanceof i.LT?void(n=r.value0):c instanceof i.GT?void(n=r.value6):void(n=r.value3)}throw new Error("Failed pattern match at Data.Map.Internal (line 197, column 5 - line 197, column 22): "+[r.constructor.name])}for(;!a;)r=u(n);return r}}},h=function(n){if(n instanceof f)return a.Nil.value;if(n instanceof s)return l.append(a.semigroupList)(h(n.value0))(l.append(a.semigroupList)(e.pure(a.applicativeList)(n.value1))(h(n.value3)));if(n instanceof d)return l.append(a.semigroupList)(h(n.value0))(l.append(a.semigroupList)(e.pure(a.applicativeList)(n.value1))(l.append(a.semigroupList)(h(n.value3))(l.append(a.semigroupList)(e.pure(a.applicativeList)(n.value4))(h(n.value6)))));throw new Error("Failed pattern match at Data.Map.Internal (line 596, column 1 - line 596, column 38): "+[n.constructor.name])},w=new r.Functor(function(n){return function(e){if(e instanceof f)return f.value;if(e instanceof s)return new s(r.map(w)(n)(e.value0),e.value1,n(e.value2),r.map(w)(n)(e.value3));if(e instanceof d)return new d(r.map(w)(n)(e.value0),e.value1,n(e.value2),r.map(w)(n)(e.value3),e.value4,n(e.value5),r.map(w)(n)(e.value6));throw new Error("Failed pattern match at Data.Map.Internal (line 93, column 1 - line 93, column 39): "+[n.constructor.name,e.constructor.name])}}),y=function(n){return function(e){return function(t){var r,o=n,u=e,i=!1;function l(n,e,r){if(e instanceof a.Nil)return i=!0,r;if(e instanceof a.Cons){if(e.value0 instanceof S)return o=n,u=e.value1,void(t=new s(r,e.value0.value0,e.value0.value1,e.value0.value2));if(e.value0 instanceof P)return o=n,u=e.value1,void(t=new s(e.value0.value0,e.value0.value1,e.value0.value2,r));if(e.value0 instanceof v)return o=n,u=e.value1,void(t=new d(r,e.value0.value0,e.value0.value1,e.value0.value2,e.value0.value3,e.value0.value4,e.value0.value5));if(e.value0 instanceof p)return o=n,u=e.value1,void(t=new d(e.value0.value0,e.value0.value1,e.value0.value2,r,e.value0.value3,e.value0.value4,e.value0.value5));if(e.value0 instanceof m)return o=n,u=e.value1,void(t=new d(e.value0.value0,e.value0.value1,e.value0.value2,e.value0.value3,e.value0.value4,e.value0.value5,r));throw new Error("Failed pattern match at Data.Map.Internal (line 415, column 3 - line 420, column 88): "+[e.value0.constructor.name])}throw new Error("Failed pattern match at Data.Map.Internal (line 412, column 1 - line 412, column 80): "+[e.constructor.name,r.constructor.name])}for(;!i;)r=l(o,u,t);return r}}},M=function(n){return function(e){return function(t){var r,o=function(e){return function(t){var r,o=e,u=!1;function i(e,r){if(e instanceof a.Nil)return u=!0,new s(r.value0,r.value1,r.value2,r.value3);if(e instanceof a.Cons){if(e.value0 instanceof S)return u=!0,y(n)(e.value1)(new d(r.value0,r.value1,r.value2,r.value3,e.value0.value0,e.value0.value1,e.value0.value2));if(e.value0 instanceof P)return u=!0,y(n)(e.value1)(new d(e.value0.value0,e.value0.value1,e.value0.value2,r.value0,r.value1,r.value2,r.value3));if(e.value0 instanceof v)return o=e.value1,void(t=new g(new s(r.value0,r.value1,r.value2,r.value3),e.value0.value0,e.value0.value1,new s(e.value0.value2,e.value0.value3,e.value0.value4,e.value0.value5)));if(e.value0 instanceof p)return o=e.value1,void(t=new g(new s(e.value0.value0,e.value0.value1,e.value0.value2,r.value0),r.value1,r.value2,new s(r.value3,e.value0.value3,e.value0.value4,e.value0.value5)));if(e.value0 instanceof m)return o=e.value1,void(t=new g(new s(e.value0.value0,e.value0.value1,e.value0.value2,e.value0.value3),e.value0.value4,e.value0.value5,new s(r.value0,r.value1,r.value2,r.value3)));throw new Error("Failed pattern match at Data.Map.Internal (line 451, column 5 - line 456, column 108): "+[e.value0.constructor.name,r.constructor.name])}throw new Error("Failed pattern match at Data.Map.Internal (line 448, column 3 - line 448, column 56): "+[e.constructor.name,r.constructor.name])}for(;!u;)r=i(o,t);return r}},l=u.compare(n);return r=a.Nil.value,function(u){var c,D=r,b=!1;function h(r,c){if(c instanceof f)return b=!0,o(r)(new g(f.value,e,t,f.value));if(c instanceof s){var h=l(e)(c.value1);return h instanceof i.EQ?(b=!0,y(n)(r)(new s(c.value0,e,t,c.value3))):h instanceof i.LT?(D=new a.Cons(new S(c.value1,c.value2,c.value3),r),void(u=c.value0)):(D=new a.Cons(new P(c.value0,c.value1,c.value2),r),void(u=c.value3))}if(c instanceof d){var w=l(e)(c.value1);if(w instanceof i.EQ)return b=!0,y(n)(r)(new d(c.value0,e,t,c.value3,c.value4,c.value5,c.value6));var M=l(e)(c.value4);return M instanceof i.EQ?(b=!0,y(n)(r)(new d(c.value0,c.value1,c.value2,c.value3,e,t,c.value6))):w instanceof i.LT?(D=new a.Cons(new v(c.value1,c.value2,c.value3,c.value4,c.value5,c.value6),r),void(u=c.value0)):w instanceof i.GT&&M instanceof i.LT?(D=new a.Cons(new p(c.value0,c.value1,c.value2,c.value4,c.value5,c.value6),r),void(u=c.value3)):(D=new a.Cons(new m(c.value0,c.value1,c.value2,c.value3,c.value4,c.value5),r),void(u=c.value6))}throw new Error("Failed pattern match at Data.Map.Internal (line 431, column 3 - line 431, column 55): "+[r.constructor.name,c.constructor.name])}for(;!b;)c=h(D,u);return c}}}},E=function(n){return function(e){var t,r=function(e){return function(t){var r,o=e,u=!1;function i(e,r){if(e instanceof a.Nil)return u=!0,r;if(e instanceof a.Cons){if(e.value0 instanceof S&&e.value0.value2 instanceof f&&r instanceof f)return u=!0,y(n)(e.value1)(new s(f.value,e.value0.value0,e.value0.value1,f.value));if(e.value0 instanceof P&&e.value0.value0 instanceof f&&r instanceof f)return u=!0,y(n)(e.value1)(new s(f.value,e.value0.value1,e.value0.value2,f.value));if(e.value0 instanceof S&&e.value0.value2 instanceof s)return o=e.value1,void(t=new d(r,e.value0.value0,e.value0.value1,e.value0.value2.value0,e.value0.value2.value1,e.value0.value2.value2,e.value0.value2.value3));if(e.value0 instanceof P&&e.value0.value0 instanceof s)return o=e.value1,void(t=new d(e.value0.value0.value0,e.value0.value0.value1,e.value0.value0.value2,e.value0.value0.value3,e.value0.value1,e.value0.value2,r));if(e.value0 instanceof S&&e.value0.value2 instanceof d)return u=!0,y(n)(e.value1)(new s(new s(r,e.value0.value0,e.value0.value1,e.value0.value2.value0),e.value0.value2.value1,e.value0.value2.value2,new s(e.value0.value2.value3,e.value0.value2.value4,e.value0.value2.value5,e.value0.value2.value6)));if(e.value0 instanceof P&&e.value0.value0 instanceof d)return u=!0,y(n)(e.value1)(new s(new s(e.value0.value0.value0,e.value0.value0.value1,e.value0.value0.value2,e.value0.value0.value3),e.value0.value0.value4,e.value0.value0.value5,new s(e.value0.value0.value6,e.value0.value1,e.value0.value2,r)));if(e.value0 instanceof v&&e.value0.value2 instanceof f&&e.value0.value5 instanceof f&&r instanceof f)return u=!0,y(n)(e.value1)(new d(f.value,e.value0.value0,e.value0.value1,f.value,e.value0.value3,e.value0.value4,f.value));if(e.value0 instanceof p&&e.value0.value0 instanceof f&&e.value0.value5 instanceof f&&r instanceof f)return u=!0,y(n)(e.value1)(new d(f.value,e.value0.value1,e.value0.value2,f.value,e.value0.value3,e.value0.value4,f.value));if(e.value0 instanceof m&&e.value0.value0 instanceof f&&e.value0.value3 instanceof f&&r instanceof f)return u=!0,y(n)(e.value1)(new d(f.value,e.value0.value1,e.value0.value2,f.value,e.value0.value4,e.value0.value5,f.value));if(e.value0 instanceof v&&e.value0.value2 instanceof s)return u=!0,y(n)(e.value1)(new s(new d(r,e.value0.value0,e.value0.value1,e.value0.value2.value0,e.value0.value2.value1,e.value0.value2.value2,e.value0.value2.value3),e.value0.value3,e.value0.value4,e.value0.value5));if(e.value0 instanceof p&&e.value0.value0 instanceof s)return u=!0,y(n)(e.value1)(new s(new d(e.value0.value0.value0,e.value0.value0.value1,e.value0.value0.value2,e.value0.value0.value3,e.value0.value1,e.value0.value2,r),e.value0.value3,e.value0.value4,e.value0.value5));if(e.value0 instanceof p&&e.value0.value5 instanceof s)return u=!0,y(n)(e.value1)(new s(e.value0.value0,e.value0.value1,e.value0.value2,new d(r,e.value0.value3,e.value0.value4,e.value0.value5.value0,e.value0.value5.value1,e.value0.value5.value2,e.value0.value5.value3)));if(e.value0 instanceof m&&e.value0.value3 instanceof s)return u=!0,y(n)(e.value1)(new s(e.value0.value0,e.value0.value1,e.value0.value2,new d(e.value0.value3.value0,e.value0.value3.value1,e.value0.value3.value2,e.value0.value3.value3,e.value0.value4,e.value0.value5,r)));if(e.value0 instanceof v&&e.value0.value2 instanceof d)return u=!0,y(n)(e.value1)(new d(new s(r,e.value0.value0,e.value0.value1,e.value0.value2.value0),e.value0.value2.value1,e.value0.value2.value2,new s(e.value0.value2.value3,e.value0.value2.value4,e.value0.value2.value5,e.value0.value2.value6),e.value0.value3,e.value0.value4,e.value0.value5));if(e.value0 instanceof p&&e.value0.value0 instanceof d)return u=!0,y(n)(e.value1)(new d(new s(e.value0.value0.value0,e.value0.value0.value1,e.value0.value0.value2,e.value0.value0.value3),e.value0.value0.value4,e.value0.value0.value5,new s(e.value0.value0.value6,e.value0.value1,e.value0.value2,r),e.value0.value3,e.value0.value4,e.value0.value5));if(e.value0 instanceof p&&e.value0.value5 instanceof d)return u=!0,y(n)(e.value1)(new d(e.value0.value0,e.value0.value1,e.value0.value2,new s(r,e.value0.value3,e.value0.value4,e.value0.value5.value0),e.value0.value5.value1,e.value0.value5.value2,new s(e.value0.value5.value3,e.value0.value5.value4,e.value0.value5.value5,e.value0.value5.value6)));if(e.value0 instanceof m&&e.value0.value3 instanceof d)return u=!0,y(n)(e.value1)(new d(e.value0.value0,e.value0.value1,e.value0.value2,new s(e.value0.value3.value0,e.value0.value3.value1,e.value0.value3.value2,e.value0.value3.value3),e.value0.value3.value4,e.value0.value3.value5,new s(e.value0.value3.value6,e.value0.value4,e.value0.value5,r)));throw new Error("Failed pattern match at Data.Map.Internal (line 501, column 9 - line 518, column 136): "+[e.value0.constructor.name,r.constructor.name])}throw new Error("Failed pattern match at Data.Map.Internal (line 498, column 5 - line 518, column 136): "+[e.constructor.name])}for(;!u;)r=i(o,t);return r}},l=function(n){return function(e){var t,o=n,u=!1;function i(n,t){if(t instanceof s&&t.value0 instanceof f&&t.value3 instanceof f)return u=!0,r(n)(f.value);if(t instanceof s)return o=new a.Cons(new P(t.value0,t.value1,t.value2),n),void(e=t.value3);if(t instanceof d&&t.value0 instanceof f&&t.value3 instanceof f&&t.value6 instanceof f)return u=!0,r(new a.Cons(new P(f.value,t.value1,t.value2),n))(f.value);if(t instanceof d)return o=new a.Cons(new m(t.value0,t.value1,t.value2,t.value3,t.value4,t.value5),n),void(e=t.value6);throw new Error("Failed pattern match at Data.Map.Internal (line 530, column 5 - line 534, column 107): "+[t.constructor.name])}for(;!u;)t=i(o,e);return t}},g=function(n){var e,t=!1;function r(e){if(e instanceof s&&e.value3 instanceof f)return t=!0,{key:e.value1,value:e.value2};if(e instanceof s)n=e.value3;else{if(e instanceof d&&e.value6 instanceof f)return t=!0,{key:e.value4,value:e.value5};if(!(e instanceof d))throw new Error("Failed pattern match at Data.Map.Internal (line 521, column 33 - line 525, column 45): "+[e.constructor.name]);n=e.value6}}for(;!t;)e=r(n);return e},D=u.compare(n);return t=a.Nil.value,function(u){var b,h=t,w=!1;function M(t,b){if(b instanceof f)return w=!0,o.Nothing.value;if(b instanceof s){var M=D(e)(b.value1);if(b.value3 instanceof f&&M instanceof i.EQ)return w=!0,new o.Just(new c.Tuple(b.value2,r(t)(f.value)));if(M instanceof i.EQ){var E=g(b.value0);return w=!0,new o.Just(new c.Tuple(b.value2,l(new a.Cons(new S(E.key,E.value,b.value3),t))(b.value0)))}return M instanceof i.LT?(h=new a.Cons(new S(b.value1,b.value2,b.value3),t),void(u=b.value0)):(h=new a.Cons(new P(b.value0,b.value1,b.value2),t),void(u=b.value3))}if(b instanceof d){var C=b.value0 instanceof f&&b.value3 instanceof f&&b.value6 instanceof f,A=(M=D(e)(b.value4),D(e)(b.value1));return C&&A instanceof i.EQ?(w=!0,new o.Just(new c.Tuple(b.value2,y(n)(t)(new s(f.value,b.value4,b.value5,f.value))))):C&&M instanceof i.EQ?(w=!0,new o.Just(new c.Tuple(b.value5,y(n)(t)(new s(f.value,b.value1,b.value2,f.value))))):A instanceof i.EQ?(E=g(b.value0),w=!0,new o.Just(new c.Tuple(b.value2,l(new a.Cons(new v(E.key,E.value,b.value3,b.value4,b.value5,b.value6),t))(b.value0)))):M instanceof i.EQ?(E=g(b.value3),w=!0,new o.Just(new c.Tuple(b.value5,l(new a.Cons(new p(b.value0,b.value1,b.value2,E.key,E.value,b.value6),t))(b.value3)))):A instanceof i.LT?(h=new a.Cons(new v(b.value1,b.value2,b.value3,b.value4,b.value5,b.value6),t),void(u=b.value0)):A instanceof i.GT&&M instanceof i.LT?(h=new a.Cons(new p(b.value0,b.value1,b.value2,b.value4,b.value5,b.value6),t),void(u=b.value3)):(h=new a.Cons(new m(b.value0,b.value1,b.value2,b.value3,b.value4,b.value5),t),void(u=b.value6))}throw new Error("Failed pattern match at Data.Map.Internal (line 471, column 34 - line 494, column 80): "+[b.constructor.name])}for(;!w;)b=M(h,u);return b}}},C=new t.Foldable(function(n){return function(e){return function(r){return t.foldMap(a.foldableList)(n)(e)(D(r))}}},function(n){return function(e){return function(r){return t.foldl(a.foldableList)(n)(e)(D(r))}}},function(n){return function(e){return function(r){return t.foldr(a.foldableList)(n)(e)(D(r))}}}),A=f.value,T=function(n){return function(e){return function(t){return o.maybe(t)(c.snd)(E(n)(e)(t))}}};n.empty=A,n.insert=M,n.lookup=b,n.delete=T,n.pop=E,n.member=function(n){return function(e){return function(t){return o.isJust(b(n)(e)(t))}}},n.alter=function(n){return function(e){return function(t){return function(r){var a=e(b(n)(t)(r));if(a instanceof o.Nothing)return T(n)(t)(r);if(a instanceof o.Just)return M(n)(t)(a.value0)(r);throw new Error("Failed pattern match at Data.Map.Internal (line 539, column 15 - line 541, column 25): "+[a.constructor.name])}}}},n.keys=h,n.values=D,n.functorMap=w,n.foldableMap=C}(PS["Data.Map.Internal"]=PS["Data.Map.Internal"]||{}),function(n){"use strict";PS["Control.Applicative"],PS["Control.Bind"],PS["Control.Monad.Rec.Class"],PS["Control.Monad.ST"],PS["Control.Monad.ST.Internal"],PS["Control.Semigroupoid"],PS["Data.Array"],PS["Data.Array.ST"],PS["Data.Eq"];var e=PS["Data.Foldable"],t=(PS["Data.Function"],PS["Data.Functor"],PS["Data.HeytingAlgebra"],PS["Data.List"],PS["Data.List.Types"]),r=PS["Data.Map.Internal"],a=(PS["Data.Maybe"],PS["Data.Monoid"],PS["Data.Ord"],PS["Data.Ordering"],PS["Data.Semigroup"],PS["Data.Semiring"],PS["Data.Show"],PS["Data.Unfoldable"],PS["Data.Unit"],PS["Partial.Unsafe"],PS.Prelude,function(n){return r.keys(n)}),o=new e.Foldable(function(n){return function(r){return function(o){return e.foldMap(t.foldableList)(n)(r)(a(o))}}},function(n){return function(r){return function(o){return e.foldl(t.foldableList)(n)(r)(a(o))}}},function(n){return function(r){return function(o){return e.foldr(t.foldableList)(n)(r)(a(o))}}});n.foldableSet=o}(PS["Data.Set"]=PS["Data.Set"]||{}),function(n){"use strict";PS["Control.Semigroupoid"];var e=PS["Data.Functor"],t=PS["Data.Map.Internal"];PS["Data.Set"],PS.Prelude,PS["Unsafe.Coerce"];n.keys=function(n){return e.void(t.functorMap)(n)}}(PS["Data.Map"]=PS["Data.Map"]||{}),function(n){"use strict";PS["Control.Applicative"];var e=PS["Control.Bind"],t=(PS["Control.Category"],PS["Control.Monad.State.Class"],PS["Control.Monad.Trans.Class"],PS["Control.Parallel"],PS["Control.Semigroupoid"],PS["Data.Functor"]),r=(PS["Data.List"],PS["Data.List.Types"],PS["Data.Map"],PS["Data.Map.Internal"],PS["Data.Maybe"]),a=(PS["Data.Tuple"],PS["Data.Unit"]),o=(PS["Effect.Aff.Class"],PS["Effect.Class"],PS["Halogen.Component.ChildPath"],PS["Halogen.Query.EventSource"],PS["Halogen.Query.HalogenM"]),u=(PS["Halogen.Query.InputF"],PS.Prelude,PS["Web.HTML.HTMLElement"]);n.action=function(n){return n(a.unit)},n.getHTMLElementRef=function(n){return t.map(o.functorHalogenM)(function(n){return e.bindFlipped(r.bindMaybe)(u.fromElement)(n)})(o.getRef(n))}}(PS["Halogen.Query"]=PS["Halogen.Query"]||{}),function(n){"use strict";PS["Web.Event.Event"];n.change="change"}(PS["Web.HTML.Event.EventTypes"]=PS["Web.HTML.Event.EventTypes"]||{}),function(n){"use strict";PS["Web.Event.Event"];n.click="click"}(PS["Web.UIEvent.MouseEvent.EventTypes"]=PS["Web.UIEvent.MouseEvent.EventTypes"]||{}),function(n){"use strict";var e=PS["Control.Bind"],t=PS["Control.Monad.Except"],r=PS["Control.Monad.Except.Trans"],a=(PS["Control.Semigroupoid"],PS["Data.Either"]),o=PS["Data.Function"],u=PS["Data.Functor"],i=PS["Data.Identity"],l=PS["Data.Maybe"],c=PS.Foreign,f=PS["Foreign.Index"],s=PS["Halogen.HTML.Core"],d=(PS["Halogen.HTML.Properties"],PS["Halogen.Query"]),S=PS["Halogen.Query.InputF"],P=(PS.Prelude,PS["Unsafe.Coerce"]),v=(PS["Web.Clipboard.ClipboardEvent"],PS["Web.Clipboard.ClipboardEvent.EventTypes"],PS["Web.Event.Event"]),p=(PS["Web.HTML.Event.DragEvent"],PS["Web.HTML.Event.DragEvent.EventTypes"],PS["Web.HTML.Event.EventTypes"]),m=(PS["Web.TouchEvent.TouchEvent"],PS["Web.UIEvent.FocusEvent"],PS["Web.UIEvent.FocusEvent.EventTypes"],PS["Web.UIEvent.KeyboardEvent"],PS["Web.UIEvent.KeyboardEvent.EventTypes"],PS["Web.UIEvent.MouseEvent"],PS["Web.UIEvent.MouseEvent.EventTypes"]),g=(PS["Web.UIEvent.WheelEvent"],PS["Web.UIEvent.WheelEvent.EventTypes"],P.unsafeCoerce),D=function(n){return function(e){return s.handler(n)(u.map(u.functorFn)(u.map(l.functorMaybe)(S.Query.create))(e))}},b=D("submit"),h=function(n){return function(u){return function(s){return function(d){return D(n)(e.composeKleisli(l.bindMaybe)(v.currentTarget)(function(n){return a.either(o.const(l.Nothing.value))(d)(t.runExcept((S=n,e.composeKleisliFlipped(r.bindExceptT(i.monadIdentity))(s)(f.readProp(u))(c.unsafeToForeign(S)))));var S}))}}}},w=h(p.change)("checked")(c.readBoolean),y=h(p.change)("value")(c.readString);n.input=function(n){return function(e){return l.Just.create(d.action(n(e)))}},n.input_=function(n){return function(e){return l.Just.create(d.action(n))}},n.handler=D,n.onSubmit=b,n.onClick=function(n){return D(m.click)(g(n))},n.onValueChange=y,n.onChecked=w}(PS["Halogen.HTML.Events"]=PS["Halogen.HTML.Events"]||{}),function(n){"use strict";var e="function"==typeof Array.from,t="undefined"!=typeof Symbol&&null!=Symbol&&void 0!==Symbol.iterator&&"function"==typeof String.prototype[Symbol.iterator],r="function"==typeof String.prototype.fromCodePoint,a="function"==typeof String.prototype.codePointAt;n._unsafeCodePointAt0=function(n){return a?function(n){return n.codePointAt(0)}:n},n._singleton=function(n){return r?String.fromCodePoint:n},n._take=function(n){return function(e){return t?function(n){for(var t="",r=n[Symbol.iterator](),a=0;a<e;++a){var o=r.next();if(o.done)return t;t+=o.value}return t}:n(e)}},n._toCodePointArray=function(n){return function(t){return e?function(n){return Array.from(n,t)}:n}}}(PS["Data.String.CodePoints"]=PS["Data.String.CodePoints"]||{}),function(n){"use strict";var e=PS["Data.String.CodePoints"],t=(PS["Control.Semigroupoid"],PS["Data.Array"]),r=(PS["Data.Boolean"],PS["Data.Bounded"]),a=PS["Data.Enum"],o=(PS["Data.Eq"],PS["Data.EuclideanRing"]),u=PS["Data.Functor"],i=(PS["Data.HeytingAlgebra"],PS["Data.Int"],PS["Data.Maybe"]),l=(PS["Data.Ord"],PS["Data.Ring"],PS["Data.Semigroup"],PS["Data.Semiring"],PS["Data.Show"],PS["Data.String.CodeUnits"]),c=(PS["Data.String.Common"],PS["Data.String.Pattern"],PS["Data.String.Unsafe"]),f=PS["Data.Tuple"],s=PS["Data.Unfoldable"],d=(PS.Prelude,function(n){return function(e){return 65536+((1024*(n-55296|0)|0)+(e-56320|0)|0)|0}}),S=function(n){return 56320<=n&&n<=57343},P=function(n){return 55296<=n&&n<=56319},v=function(n){var e=l.length(n);if(0===e)return i.Nothing.value;if(1===e)return new i.Just({head:a.fromEnum(a.boundedEnumChar)(c.charAt(0)(n)),tail:""});var t=a.fromEnum(a.boundedEnumChar)(c.charAt(1)(n)),r=a.fromEnum(a.boundedEnumChar)(c.charAt(0)(n));return P(r)&&S(t)?new i.Just({head:d(r)(t),tail:l.drop(2)(n)}):new i.Just({head:r,tail:l.drop(1)(n)})},p=function(n){return u.map(i.functorMaybe)(function(n){return new f.Tuple(n.head,n.tail)})(v(n))},m=e._unsafeCodePointAt0(function(n){var e=a.fromEnum(a.boundedEnumChar)(c.charAt(0)(n));if(P(e)&&l.length(n)>1){var t=a.fromEnum(a.boundedEnumChar)(c.charAt(1)(n));return S(t)?d(e)(t):e}return e}),g=e._toCodePointArray(function(n){return s.unfoldr(s.unfoldableArray)(p)(n)})(m),D=function(n){return l.singleton(a.toEnumWithDefaults(a.boundedEnumChar)(r.bottom(r.boundedChar))(r.top(r.boundedChar))(n))},b=e._singleton(function(n){if(n<=65535)return D(n);var e=o.div(o.euclideanRingInt)(n-65536|0)(1024)+55296|0,t=o.mod(o.euclideanRingInt)(n-65536|0)(1024)+56320|0;return D(e)+D(t)}),h=function(n){return function(e){if(n<1)return"";var t=v(e);return t instanceof i.Just?b(t.value0.head)+h(n-1|0)(t.value0.tail):e}},w=e._take(h);n.singleton=b,n.toCodePointArray=g,n.uncons=v,n.length=function(n){return t.length(g(n))},n.take=w,n.drop=function(n){return function(e){return l.drop(l.length(w(n)(e)))(e)}}}(PS["Data.String.CodePoints"]=PS["Data.String.CodePoints"]||{}),function(n){"use strict";PS["Control.Applicative"];var e=PS["Control.Bind"],t=(PS["Control.Monad.Maybe.Trans"],PS["Control.Semigroupoid"],PS["Data.Array"]),r=(PS["Data.Eq"],PS["Data.Foldable"]),a=(PS["Data.Function"],PS["Data.Functor"]),o=(PS["Data.HeytingAlgebra"],PS["Data.Maybe"]),u=PS["Data.Nullable"],i=(PS["Data.String"],PS["Data.String.CodePoints"]),l=PS["Data.String.Common"],c=(PS["Data.String.Pattern"],PS["Data.Tuple"]),f=(PS["Data.Unit"],PS.Effect),s=PS["Global.Unsafe"],d=(PS.Halogen,PS["Halogen.HTML"],PS["Halogen.HTML.Core"]),S=PS["Halogen.HTML.Properties"],P=(PS["Partial.Unsafe"],PS.Prelude,PS["Web.DOM"],PS["Web.DOM.Document"],PS["Web.DOM.Element"],PS["Web.DOM.NodeList"],PS["Web.DOM.NonElementParentNode"],PS["Web.DOM.ParentNode"],PS["Web.HTML"]),v=(PS["Web.HTML.HTMLDocument"],PS["Web.HTML.HTMLElement"],PS["Web.HTML.Location"]),p=PS["Web.HTML.Window"],m=function(n){var e,r=function(n){return s.unsafeDecodeURIComponent(l.replaceAll("+")(" ")(n))},a="#"===(e=i.take(1)(n))||"?"===e?i.drop(1)(n):n;return t.mapMaybe(function(n){var e=l.split("=")(n);return 1===e.length?new o.Just(new c.Tuple(r(e[0]),o.Nothing.value)):2===e.length?new o.Just(new c.Tuple(r(e[0]),new o.Just(r(e[1])))):o.Nothing.value})(t.filter(function(n){return""!==n})(l.split("&")(a)))},g=e.bindFlipped(f.bindEffect)(p.location)(P.window);n.class_=function(n){return S.class_(d.ClassName(n))},n.attr=function(n){return S.attr(n)},n._loc=g,n._curQuerystring=function(){var n=g(),e=v.search(n)();return m(e)},n._parseQueryString=m,n._lookupQueryStringValue=function(n){return function(t){return e.join(o.bindMaybe)(a.map(o.functorMaybe)(c.snd)(r.find(r.foldableArray)(function(n){return c.fst(n)===t})(n)))}},n.fromNullableStr=function(n){return o.fromMaybe("")(u.toMaybe(n))}}(PS.Util=PS.Util||{}),function(n){"use strict";var e=PS.App,t=PS["Control.Applicative"],r=PS["Control.Bind"],a=(PS["Control.Semigroupoid"],PS["DOM.HTML.Indexed.InputType"]),o=PS["Data.Function"],u=PS["Data.Functor"],i=(PS["Data.Lens"],PS["Data.Lens.Getter"]),l=PS["Data.Lens.Internal.Forget"],c=PS["Data.Lens.Lens"],f=PS["Data.Lens.Setter"],s=PS["Data.Maybe"],d=PS["Data.Profunctor.Strong"],S=PS["Data.Unit"],P=(PS["Effect.Aff"],PS["Effect.Aff.Class"]),v=PS.Globals,p=(PS.Halogen,PS["Halogen.Component"]),m=(PS["Halogen.HTML"],PS["Halogen.HTML.Core"]),g=PS["Halogen.HTML.Elements"],D=PS["Halogen.HTML.Events"],b=PS["Halogen.HTML.Properties"],h=PS["Halogen.Query.HalogenM"],w=(PS.Model,PS.Prelude,PS.Util),y=(PS["Web.Event.Event"],function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}()),M=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),E=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),C=function(){function n(n,e){this.value0=n,this.value1=e}return n.create=function(e){return function(t){return new n(e,t)}},n}(),A=function(){function n(n,e){this.value0=n,this.value1=e}return n.create=function(e){return function(t){return new n(e,t)}},n}(),T=function(n){return c.lens(function(n){return n.us})(function(n){return function(n){return{us:n}}})(n)};n._us=T,n.UEditField=C,n.USubmit=A,n.EarchiveDefault=y,n.EprivateDefault=M,n.EprivacyLock=E,n.usetting=function(n){var c;v["app'"](S.unit);return p.component(m.bifunctorHTML)({initialState:o.const((c=n,{us:c})),render:function(n){var e=function(n){return function(e){return D.input(C.create)(n(e))}};return g.div([w.class_("settings-form")])([g.div([w.class_("fw7 mb2")])([m.text("Account Settings")]),g.div([w.class_("flex items-center mb2")])([g.input([b.type_(m.inputTypeIsProp)(a.InputCheckbox.value),w.class_("pointer mr2"),b.id_("archiveDefault"),b.name("archiveDefault"),b.checked(n.us.archiveDefault),D.onChecked(e(y.create))]),g.label([b.for("archiveDefault"),w.class_("lh-copy")])([m.text("Archive Non-Private Bookmarks (archive.li)")])]),g.div([w.class_("flex items-center mb2")])([g.input([b.type_(m.inputTypeIsProp)(a.InputCheckbox.value),w.class_("pointer mr2"),b.id_("privateDefault"),b.name("privateDefault"),b.checked(n.us.privateDefault),D.onChecked(e(M.create))]),g.label([b.for("privateDefault"),w.class_("lh-copy")])([m.text("Default new bookmarks to Private")])]),g.div([w.class_("flex items-center mb2")])([g.input([b.type_(m.inputTypeIsProp)(a.InputCheckbox.value),w.class_("pointer mr2"),b.id_("privacyLock"),b.name("privacyLock"),b.checked(n.us.privacyLock),D.onChecked(e(E.create))]),g.label([b.for("privacyLock"),w.class_("lh-copy")])([m.text("Privacy Lock (Private Account)")])])])},eval:function(n){if(n instanceof C)return r.discard(r.discardUnit)(h.bindHalogenM)(f.modifying(h.monadStateHalogenM)(T(d.strongFn))(function(){if(n.value0 instanceof y)return function(e){return{archiveDefault:n.value0.value0,privateDefault:e.privateDefault,privacyLock:e.privacyLock}};if(n.value0 instanceof M)return function(e){return{archiveDefault:e.archiveDefault,privateDefault:n.value0.value0,privacyLock:e.privacyLock}};if(n.value0 instanceof E)return function(e){return{archiveDefault:e.archiveDefault,privateDefault:e.privateDefault,privacyLock:n.value0.value0}};throw new Error("Failed pattern match at Component.AccountSettings (line 82, column 12 - line 85, column 46): "+[n.value0.constructor.name])}()))(function(){return t.pure(h.applicativeHalogenM)(n.value1)});if(n instanceof A)return r.bind(h.bindHalogenM)(i.use(h.monadStateHalogenM)(T(l.strongForget)))(function(a){return r.discard(r.discardUnit)(h.bindHalogenM)(u.void(h.functorHalogenM)(P.liftAff(h.monadAffHalogenM(P.monadAffAff))(e.editAccountSettings(a))))(function(){return t.pure(h.applicativeHalogenM)(n.value1)})});throw new Error("Failed pattern match at Component.AccountSettings (line 80, column 3 - line 80, column 58): "+[n.constructor.name])},receiver:o.const(s.Nothing.value)})}}(PS["Component.AccountSettings"]=PS["Component.AccountSettings"]||{}),function(n){"use strict";var e=PS.App,t=PS["Control.Applicative"],r=PS["Control.Bind"],a=PS["Control.Monad.State.Class"],o=(PS["Control.Semigroupoid"],PS["DOM.HTML.Indexed.ButtonType"]),u=PS["DOM.HTML.Indexed.InputType"],i=(PS["Data.Array"],PS["Data.Foldable"],PS["Data.Function"]),l=PS["Data.Functor"],c=(PS["Data.HeytingAlgebra"],PS["Data.Lens"],PS["Data.Lens.Getter"]),f=PS["Data.Lens.Internal.Forget"],s=PS["Data.Lens.Lens"],d=PS["Data.Lens.Setter"],S=PS["Data.Maybe"],P=PS["Data.Monoid"],v=(PS["Data.Ord"],PS["Data.Profunctor.Strong"]),p=PS["Data.Semigroup"],m=(PS["Data.String"],PS["Data.String.Common"]),g=(PS["Data.String.Pattern"],PS["Data.Tuple"]),D=PS["Data.Unit"],b=PS["Effect.Aff"],h=PS["Effect.Aff.Class"],w=PS["Effect.Class"],y=PS.Globals,M=(PS.Halogen,PS["Halogen.Component"]),E=(PS["Halogen.HTML"],PS["Halogen.HTML.Core"]),C=PS["Halogen.HTML.Elements"],A=PS["Halogen.HTML.Events"],T=PS["Halogen.HTML.Properties"],F=PS["Halogen.Query.HalogenM"],H=(PS.Model,PS.Prelude,PS.Util),L=PS["Web.Event.Event"],_=PS["Web.HTML"],I=PS["Web.HTML.Location"],U=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),x=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),k=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),O=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),W=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),R=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),N=function(){function n(n,e){this.value0=n,this.value1=e}return n.create=function(e){return function(t){return new n(e,t)}},n}(),B=function(){function n(n,e){this.value0=n,this.value1=e}return n.create=function(e){return function(t){return new n(e,t)}},n}(),q=function(){function n(n,e){this.value0=n,this.value1=e}return n.create=function(e){return function(t){return new n(e,t)}},n}(),j=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),V=function(n){return s.lens(function(n){return n.edit_bm})(function(n){return function(e){return{edit_bm:e,bm:n.bm,deleteAsk:n.deleteAsk,destroyed:n.destroyed}}})(n)},J=function(n){return s.lens(function(n){return n.bm})(function(n){return function(e){return{bm:e,deleteAsk:n.deleteAsk,destroyed:n.destroyed,edit_bm:n.edit_bm}}})(n)};n.BEditField=N,n.BEditSubmit=B,n.BDeleteAsk=q,n.BDestroy=j,n.Eurl=U,n.Etitle=x,n.Edescription=k,n.Etags=O,n.Eprivate=W,n.Etoread=R,n._bm=J,n._edit_bm=V,n.addbmark=function(n){var s;y["app'"](D.unit);return M.component(E.bifunctorHTML)({initialState:i.const((s=n,{bm:s,edit_bm:s,deleteAsk:!1,destroyed:!1})),render:function(n){var e=y.mmoment8601(n.bm.time),t=function(n){return function(e){return A.input(N.create)(n(e))}},r=C.div([H.class_("alert")])([E.text("previously saved "),C.span([H.class_("link f7 dib gray pr3"),T.title(S.maybe(n.bm.time)(g.snd)(e))])([E.text(S.maybe(" ")(g.fst)(e))]),C.div([H.class_("edit_links dib ml1")])([C.div([H.class_("delete_link di")])([C.button(p.append(p.semigroupArray)([T.type_(E.buttonTypeIsProp)(o.ButtonButton.value),A.onClick(A.input_(q.create(!0))),H.class_("delete")])(P.guard(P.monoidArray)(n.deleteAsk)([H.attr("hidden")("hidden")])))([E.text("delete")]),C.span(p.append(p.semigroupArray)([H.class_("confirm red")])(P.guard(P.monoidArray)(!n.deleteAsk)([H.attr("hidden")("hidden")])))([C.button([T.type_(E.buttonTypeIsProp)(o.ButtonButton.value),A.onClick(A.input_(q.create(!1)))])([E.text("cancel / ")]),C.button([T.type_(E.buttonTypeIsProp)(o.ButtonButton.value),A.onClick(A.input_(j.create)),H.class_("red")])([E.text("destroy")])])])])]),a=C.form([A.onSubmit(A.input(B.create))])([C.table([H.class_("w-100")])([C.tbody_([C.tr_([C.td([H.class_("w1")])([]),C.td_(P.guard(P.monoidArray)(n.bm.bid>0)([r]))]),C.tr_([C.td_([C.label([T.for("url")])([E.text("URL")])]),C.td_([C.input([T.type_(E.inputTypeIsProp)(u.InputUrl.value),T.id_("url"),H.class_("w-100 mv1"),T.required(!0),T.name("url"),T.autofocus(m.null(n.bm.url)),T.value(n.edit_bm.url),A.onValueChange(t(U.create))])])]),C.tr_([C.td_([C.label([T.for("title")])([E.text("title")])]),C.td_([C.input([T.type_(E.inputTypeIsProp)(u.InputText.value),T.id_("title"),H.class_("w-100 mv1"),T.name("title"),T.value(n.edit_bm.title),A.onValueChange(t(x.create))])])]),C.tr_([C.td_([C.label([T.for("description")])([E.text("description")])]),C.td_([C.textarea([H.class_("w-100 mt1 mid-gray"),T.id_("description"),T.name("description"),T.rows(4),T.value(n.edit_bm.description),A.onValueChange(t(k.create))])])]),C.tr_([C.td_([C.label([T.for("tags")])([E.text("tags")])]),C.td_([C.input([T.type_(E.inputTypeIsProp)(u.InputText.value),T.id_("tags"),H.class_("w-100 mv1"),T.name("tags"),T.autocomplete(!1),H.attr("autocapitalize")("off"),T.autofocus(!m.null(n.bm.url)),T.value(n.edit_bm.tags),A.onValueChange(t(O.create))])])]),C.tr_([C.td_([C.label([T.for("private")])([E.text("private")])]),C.td_([C.input([T.type_(E.inputTypeIsProp)(u.InputCheckbox.value),T.id_("private"),H.class_("private pointer"),T.name("private"),T.checked(n.edit_bm.private),A.onChecked(t(W.create))])])]),C.tr_([C.td_([C.label([T.for("toread")])([E.text("read later")])]),C.td_([C.input([T.type_(E.inputTypeIsProp)(u.InputCheckbox.value),T.id_("toread"),H.class_("toread pointer"),T.name("toread"),T.checked(n.edit_bm.toread),A.onChecked(t(R.create))])])]),C.tr_([C.td_([]),C.td_([C.input([T.type_(E.inputTypeIsProp)(u.InputSubmit.value),H.class_("ph3 pv2 input-reset ba b--navy bg-transparent pointer f6 dib mt1 dim"),T.value(n.bm.bid>0?"update bookmark":"add bookmark")])])])])])]),i=C.p([H.class_("red")])([E.text("you killed this bookmark")]);return C.div_([n.destroyed?i:a])},eval:function(n){if(n instanceof q)return r.discard(r.discardUnit)(F.bindHalogenM)(a.modify_(F.monadStateHalogenM)(function(e){var t={};for(var r in e)({}).hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.deleteAsk=n.value0,t}))(function(){return t.pure(F.applicativeHalogenM)(n.value1)});if(n instanceof j)return r.bind(F.bindHalogenM)(a.gets(F.monadStateHalogenM)(function(n){return n.bm.bid}))(function(o){return r.discard(r.discardUnit)(F.bindHalogenM)(l.void(F.functorHalogenM)(h.liftAff(F.monadAffHalogenM(h.monadAffAff))(e.destroy(o))))(function(){return r.discard(r.discardUnit)(F.bindHalogenM)(a.modify_(F.monadStateHalogenM)(function(n){var e={};for(var t in n)({}).hasOwnProperty.call(n,t)&&(e[t]=n[t]);return e.destroyed=!0,e}))(function(){return t.pure(F.applicativeHalogenM)(n.value0)})})});if(n instanceof N)return r.discard(r.discardUnit)(F.bindHalogenM)(d.modifying(F.monadStateHalogenM)(V(v.strongFn))(function(){if(n.value0 instanceof U)return function(e){return{url:n.value0.value0,title:e.title,description:e.description,tags:e.tags,private:e.private,toread:e.toread,bid:e.bid,slug:e.slug,selected:e.selected,time:e.time,archiveUrl:e.archiveUrl}};if(n.value0 instanceof x)return function(e){return{url:e.url,title:n.value0.value0,description:e.description,tags:e.tags,private:e.private,toread:e.toread,bid:e.bid,slug:e.slug,selected:e.selected,time:e.time,archiveUrl:e.archiveUrl}};if(n.value0 instanceof k)return function(e){return{url:e.url,title:e.title,description:n.value0.value0,tags:e.tags,private:e.private,toread:e.toread,bid:e.bid,slug:e.slug,selected:e.selected,time:e.time,archiveUrl:e.archiveUrl}};if(n.value0 instanceof O)return function(e){return{url:e.url,title:e.title,description:e.description,tags:n.value0.value0,private:e.private,toread:e.toread,bid:e.bid,slug:e.slug,selected:e.selected,time:e.time,archiveUrl:e.archiveUrl}};if(n.value0 instanceof W)return function(e){return{url:e.url,title:e.title,description:e.description,tags:e.tags,private:n.value0.value0,toread:e.toread,bid:e.bid,slug:e.slug,selected:e.selected,time:e.time,archiveUrl:e.archiveUrl}};if(n.value0 instanceof R)return function(e){return{url:e.url,title:e.title,description:e.description,tags:e.tags,private:e.private,toread:n.value0.value0,bid:e.bid,slug:e.slug,selected:e.selected,time:e.time,archiveUrl:e.archiveUrl}};throw new Error("Failed pattern match at Component.Add (line 160, column 17 - line 166, column 36): "+[n.value0.constructor.name])}()))(function(){return t.pure(F.applicativeHalogenM)(n.value1)});if(n instanceof B)return r.discard(r.discardUnit)(F.bindHalogenM)(w.liftEffect(F.monadEffectHalogenM(b.monadEffectAff))(L.preventDefault(n.value0)))(function(){return r.bind(F.bindHalogenM)(c.use(F.monadStateHalogenM)(V(f.strongForget)))(function(a){return r.discard(r.discardUnit)(F.bindHalogenM)(l.void(F.functorHalogenM)(h.liftAff(F.monadAffHalogenM(h.monadAffAff))(e.editBookmark(a))))(function(){return r.discard(r.discardUnit)(F.bindHalogenM)(d.assign(F.monadStateHalogenM)(J(v.strongFn))(a))(function(){return r.bind(F.bindHalogenM)(w.liftEffect(F.monadEffectHalogenM(b.monadEffectAff))(H._loc))(function(e){return r.bind(F.bindHalogenM)(w.liftEffect(F.monadEffectHalogenM(b.monadEffectAff))(_.window))(function(a){return r.bind(F.bindHalogenM)(w.liftEffect(F.monadEffectHalogenM(b.monadEffectAff))(H._curQuerystring))(function(o){return r.discard(r.discardUnit)(F.bindHalogenM)((u=H._lookupQueryStringValue(o)("next"))instanceof S.Just?w.liftEffect(F.monadEffectHalogenM(b.monadEffectAff))(I.setHref(u.value0)(e)):w.liftEffect(F.monadEffectHalogenM(b.monadEffectAff))(y.closeWindow(a)))(function(){return t.pure(F.applicativeHalogenM)(n.value1)});var u})})})})})})});throw new Error("Failed pattern match at Component.Add (line 150, column 3 - line 150, column 58): "+[n.constructor.name])},receiver:i.const(S.Nothing.value)})}}(PS["Component.Add"]=PS["Component.Add"]||{}),function(n){"use strict";var e=PS.App,t=PS["Control.Applicative"],r=PS["Control.Bind"],a=PS["Control.Monad.State.Class"],o=(PS["Control.Semigroupoid"],PS["DOM.HTML.Indexed.ButtonType"]),u=PS["DOM.HTML.Indexed.InputType"],i=PS["Data.Array"],l=(PS["Data.Eq"],PS["Data.Foldable"]),c=PS["Data.Function"],f=PS["Data.Functor"],s=(PS["Data.HeytingAlgebra"],PS["Data.Lens"],PS["Data.Lens.Getter"]),d=PS["Data.Lens.Internal.Forget"],S=PS["Data.Lens.Lens"],P=PS["Data.Lens.Setter"],v=PS["Data.Maybe"],p=PS["Data.Monoid"],m=PS["Data.Nullable"],g=PS["Data.Profunctor.Strong"],D=PS["Data.Semigroup"],b=PS["Data.Show"],h=(PS["Data.String"],PS["Data.String.CodePoints"]),w=PS["Data.String.Common"],y=(PS["Data.String.Pattern"],PS["Data.Tuple"]),M=PS["Data.Unit"],E=PS["Effect.Aff"],C=PS["Effect.Aff.Class"],A=PS["Effect.Class"],T=PS.Globals,F=(PS.Halogen,PS["Halogen.Component"]),H=(PS["Halogen.HTML"],PS["Halogen.HTML.Core"]),L=PS["Halogen.HTML.Elements"],_=PS["Halogen.HTML.Events"],I=PS["Halogen.HTML.Properties"],U=PS["Halogen.Query.HalogenM"],x=(PS.Model,PS.Prelude,PS.Util),k=PS["Web.Event.Event"],O=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),W=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),R=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),N=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),B=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),q=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),j=function(){function n(n,e){this.value0=n,this.value1=e}return n.create=function(e){return function(t){return new n(e,t)}},n}(),V=function(){function n(n,e){this.value0=n,this.value1=e}return n.create=function(e){return function(t){return new n(e,t)}},n}(),J=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),Q=function(){function n(n,e){this.value0=n,this.value1=e}return n.create=function(e){return function(t){return new n(e,t)}},n}(),G=function(){function n(n,e){this.value0=n,this.value1=e}return n.create=function(e){return function(t){return new n(e,t)}},n}(),z=function(){function n(n,e){this.value0=n,this.value1=e}return n.create=function(e){return function(t){return new n(e,t)}},n}(),K=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),X=function(){function n(){}return n.value=new n,n}(),Y=function(n){return S.lens(function(n){return n.edit_bm})(function(n){return function(e){return{edit_bm:e,bm:n.bm,deleteAsk:n.deleteAsk,edit:n.edit}}})(n)},Z=function(n){return S.lens(function(n){return n.edit})(function(n){return function(e){return{edit:e,bm:n.bm,deleteAsk:n.deleteAsk,edit_bm:n.edit_bm}}})(n)},$=function(n){return S.lens(function(n){return n.bm})(function(n){return function(e){return{bm:e,deleteAsk:n.deleteAsk,edit:n.edit,edit_bm:n.edit_bm}}})(n)};n.BStar=j,n.BDeleteAsk=V,n.BDestroy=J,n.BEdit=Q,n.BEditField=G,n.BEditSubmit=z,n.BMarkRead=K,n.Eurl=O,n.Etitle=W,n.Edescription=R,n.Etags=N,n.Eprivate=B,n.Etoread=q,n.BNotifyRemove=X,n._bm=$,n._edit_bm=Y,n._edit=Z,n.bmark=function(n){var S,nn=T["app'"](M.unit);return F.component(H.bifunctorHTML)({initialState:c.const((S=n,{bm:S,edit_bm:S,deleteAsk:!1,edit:!1})),render:function(n){var e,t,r=p.guard(p.monoidArray)(nn.dat.isowner)([L.div([x.class_("star fl pointer"+p.guard(p.monoidString)(n.bm.selected)(" selected"))])([L.button([x.class_("moon-gray"),_.onClick(_.input_(j.create(!n.bm.selected)))])([H.text("✭")])])]),a=T.mmoment8601(n.bm.time),c=p.guard(p.monoidArray)(nn.dat.isowner)([L.div([x.class_("edit_links di")])([L.button([I.type_(H.buttonTypeIsProp)(o.ButtonButton.value),_.onClick(_.input_(Q.create(!0))),x.class_("edit light-silver hover-blue")])([H.text("edit  ")]),L.div([x.class_("delete_link di")])([L.button([I.type_(H.buttonTypeIsProp)(o.ButtonButton.value),_.onClick(_.input_(V.create(!0))),x.class_("delete light-silver hover-blue"+p.guard(p.monoidString)(n.deleteAsk)(" dn"))])([H.text("delete")]),L.span([x.class_("confirm red"+p.guard(p.monoidString)(!n.deleteAsk)(" dn"))])([L.button([I.type_(H.buttonTypeIsProp)(o.ButtonButton.value),_.onClick(_.input_(V.create(!1)))])([H.text("cancel / ")]),L.button([I.type_(H.buttonTypeIsProp)(o.ButtonButton.value),_.onClick(_.input_(J.create)),x.class_("red")])([H.text("destroy")])])])]),L.div([x.class_("read di")])(p.guard(p.monoidArray)(n.bm.toread)([H.text("  "),L.button([_.onClick(_.input_(K.create)),x.class_("mark_read")])([H.text("mark as read")])]))]),s=function(n){return x.fromNullableStr(nn.userR)+"/t:"+n},d=function(n){return function(e){return _.input(G.create)(n(e))}},S=[L.div([x.class_("edit_bookmark_form pa2 pt0 bg-white")])([L.form([_.onSubmit(_.input(z.create))])([L.div_([H.text("url")]),L.input([I.type_(H.inputTypeIsProp)(u.InputUrl.value),x.class_("url w-100 mb2 pt1 f7 edit_form_input"),I.required(!0),I.name("url"),I.value(n.edit_bm.url),_.onValueChange(d(O.create))]),L.br_,L.div_([H.text("title")]),L.input([I.type_(H.inputTypeIsProp)(u.InputText.value),x.class_("title w-100 mb2 pt1 f7 edit_form_input"),I.name("title"),I.value(n.edit_bm.title),_.onValueChange(d(W.create))]),L.br_,L.div_([H.text("description")]),L.textarea([x.class_("description w-100 mb1 pt1 f7 edit_form_input"),I.name("description"),I.rows(5),I.value(n.edit_bm.description),_.onValueChange(d(R.create))]),L.br_,L.div([I.id_("tags_input_box")])([L.div_([H.text("tags")]),L.input([I.type_(H.inputTypeIsProp)(u.InputText.value),x.class_("tags w-100 mb1 pt1 f7 edit_form_input"),I.name("tags"),I.autocomplete(!1),x.attr("autocapitalize")("off"),I.value(n.edit_bm.tags),_.onValueChange(d(N.create))]),L.br_]),L.div([x.class_("edit_form_checkboxes mv3")])([L.input([I.type_(H.inputTypeIsProp)(u.InputCheckbox.value),x.class_("private pointer"),I.id_("edit_private"),I.name("private"),I.checked(n.edit_bm.private),_.onChecked(d(B.create))]),H.text(" "),L.label([I.for("edit_private"),x.class_("mr2")])([H.text("private")]),H.text(" "),L.input([I.type_(H.inputTypeIsProp)(u.InputCheckbox.value),x.class_("toread pointer"),I.id_("edit_toread"),I.name("toread"),I.checked(n.edit_bm.toread),_.onChecked(d(q.create))]),H.text(" "),L.label([I.for("edit_toread")])([H.text("to-read")]),L.br_]),L.input([I.type_(H.inputTypeIsProp)(u.InputSubmit.value),x.class_("mr1 pv1 ph2 dark-gray ba b--moon-gray bg-near-white pointer rdim"),I.value("save")]),H.text(" "),L.input([I.type_(H.inputTypeIsProp)(u.InputReset.value),x.class_("pv1 ph2 dark-gray ba b--moon-gray bg-near-white pointer rdim"),I.value("cancel"),_.onClick(_.input_(Q.create(!1)))])])])],P=[L.div([x.class_("display")])(D.append(D.semigroupArray)([L.a([I.href(n.bm.url),I.target("_blank"),x.class_("link f5 lh-title"+p.guard(p.monoidString)(n.bm.toread)(" unread"))])([H.text(w.null(n.bm.title)?"[no title]":n.bm.title)]),L.br_,L.a([I.href(n.bm.url),x.class_("link f7 gray hover-blue")])([H.text(n.bm.url)]),L.a([I.href(v.fromMaybe("http://archive.is/"+n.bm.url)(m.toMaybe(n.bm.archiveUrl))),x.class_("link f7 gray hover-blue ml2"+p.guard(p.monoidString)(v.isJust(m.toMaybe(n.bm.archiveUrl)))(" green")),I.target("_blank"),I.title("archive link")])([v.isJust(m.toMaybe(n.bm.archiveUrl))?H.text("☑"):H.text("☐")]),L.br_,L.div([x.class_("description mt1 mid-gray")])((t=n.bm.description,i.drop(1)(l.foldMap(l.foldableArray)(p.monoidArray)(function(n){return[L.br_,H.text(n)]})(w.split("\n")(t))))),L.div([x.class_("tags")])(p.guard(p.monoidFn(p.monoidFn(p.monoidArray)))(!w.null(n.bm.tags))(f.map(f.functorArray))(function(n){return L.a([x.class_("link tag mr1"+p.guard(p.monoidString)("."===h.take(1)(n))(" private")),I.href(s(n))])([H.text(n)])})(w.split(" ")(n.bm.tags))),L.a([x.class_("link f7 dib gray w4"),I.title(v.maybe(n.bm.time)(y.snd)(a)),I.href((e=n.bm.slug,x.fromNullableStr(nn.userR)+"/b:"+e))])([H.text(v.maybe(" ")(y.fst)(a))])])(c))];return L.div([I.id_(b.show(b.showInt)(n.bm.bid)),x.class_("bookmark w-100 mw7 pa1 mb3"+p.guard(p.monoidString)(n.bm.private)(" private"))])(D.append(D.semigroupArray)(r)(n.edit?S:P))},eval:function(n){if(n instanceof j)return r.bind(U.bindHalogenM)(s.use(U.monadStateHalogenM)($(d.strongForget)))(function(a){return r.discard(r.discardUnit)(U.bindHalogenM)(C.liftAff(U.monadAffHalogenM(C.monadAffAff))(e.toggleStar(a.bid)(n.value0?e.Star.value:e.UnStar.value)))(function(){return r.discard(r.discardUnit)(U.bindHalogenM)(P.modifying(U.monadStateHalogenM)($(g.strongFn))(function(e){return{url:e.url,title:e.title,description:e.description,tags:e.tags,private:e.private,toread:e.toread,bid:e.bid,slug:e.slug,selected:n.value0,time:e.time,archiveUrl:e.archiveUrl}}))(function(){return r.discard(r.discardUnit)(U.bindHalogenM)(P.modifying(U.monadStateHalogenM)(Y(g.strongFn))(function(e){return{url:e.url,title:e.title,description:e.description,tags:e.tags,private:e.private,toread:e.toread,bid:e.bid,slug:e.slug,selected:n.value0,time:e.time,archiveUrl:e.archiveUrl}}))(function(){return t.pure(U.applicativeHalogenM)(n.value1)})})})});if(n instanceof V)return r.discard(r.discardUnit)(U.bindHalogenM)(a.modify_(U.monadStateHalogenM)(function(e){var t={};for(var r in e)({}).hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.deleteAsk=n.value0,t}))(function(){return t.pure(U.applicativeHalogenM)(n.value1)});if(n instanceof J)return r.bind(U.bindHalogenM)(s.use(U.monadStateHalogenM)($(d.strongForget)))(function(a){return r.discard(r.discardUnit)(U.bindHalogenM)(f.void(U.functorHalogenM)(C.liftAff(U.monadAffHalogenM(C.monadAffAff))(e.destroy(a.bid))))(function(){return r.discard(r.discardUnit)(U.bindHalogenM)(U.raise(X.value))(function(){return t.pure(U.applicativeHalogenM)(n.value0)})})});if(n instanceof K)return r.bind(U.bindHalogenM)(s.use(U.monadStateHalogenM)($(d.strongForget)))(function(a){return r.discard(r.discardUnit)(U.bindHalogenM)(f.void(U.functorHalogenM)(C.liftAff(U.monadAffHalogenM(C.monadAffAff))(e.markRead(a.bid))))(function(){return r.discard(r.discardUnit)(U.bindHalogenM)(P.modifying(U.monadStateHalogenM)($(g.strongFn))(function(n){return{url:n.url,title:n.title,description:n.description,tags:n.tags,private:n.private,toread:!1,bid:n.bid,slug:n.slug,selected:n.selected,time:n.time,archiveUrl:n.archiveUrl}}))(function(){return t.pure(U.applicativeHalogenM)(n.value0)})})});if(n instanceof Q)return r.bind(U.bindHalogenM)(s.use(U.monadStateHalogenM)($(d.strongForget)))(function(e){return r.discard(r.discardUnit)(U.bindHalogenM)(P.assign(U.monadStateHalogenM)(Y(g.strongFn))(e))(function(){return r.discard(r.discardUnit)(U.bindHalogenM)(P.assign(U.monadStateHalogenM)(Z(g.strongFn))(n.value0))(function(){return t.pure(U.applicativeHalogenM)(n.value1)})})});if(n instanceof G)return r.discard(r.discardUnit)(U.bindHalogenM)(P.modifying(U.monadStateHalogenM)(Y(g.strongFn))(function(){if(n.value0 instanceof O)return function(e){return{url:n.value0.value0,title:e.title,description:e.description,tags:e.tags,private:e.private,toread:e.toread,bid:e.bid,slug:e.slug,selected:e.selected,time:e.time,archiveUrl:e.archiveUrl}};if(n.value0 instanceof W)return function(e){return{url:e.url,title:n.value0.value0,description:e.description,tags:e.tags,private:e.private,toread:e.toread,bid:e.bid,slug:e.slug,selected:e.selected,time:e.time,archiveUrl:e.archiveUrl}};if(n.value0 instanceof R)return function(e){return{url:e.url,title:e.title,description:n.value0.value0,tags:e.tags,private:e.private,toread:e.toread,bid:e.bid,slug:e.slug,selected:e.selected,time:e.time,archiveUrl:e.archiveUrl}};if(n.value0 instanceof N)return function(e){return{url:e.url,title:e.title,description:e.description,tags:n.value0.value0,private:e.private,toread:e.toread,bid:e.bid,slug:e.slug,selected:e.selected,time:e.time,archiveUrl:e.archiveUrl}};if(n.value0 instanceof B)return function(e){return{url:e.url,title:e.title,description:e.description,tags:e.tags,private:n.value0.value0,toread:e.toread,bid:e.bid,slug:e.slug,selected:e.selected,time:e.time,archiveUrl:e.archiveUrl}};if(n.value0 instanceof q)return function(e){return{url:e.url,title:e.title,description:e.description,tags:e.tags,private:e.private,toread:n.value0.value0,bid:e.bid,slug:e.slug,selected:e.selected,time:e.time,archiveUrl:e.archiveUrl}};throw new Error("Failed pattern match at Component.BMark (line 231, column 17 - line 237, column 36): "+[n.value0.constructor.name])}()))(function(){return t.pure(U.applicativeHalogenM)(n.value1)});if(n instanceof z)return r.discard(r.discardUnit)(U.bindHalogenM)(A.liftEffect(U.monadEffectHalogenM(E.monadEffectAff))(k.preventDefault(n.value0)))(function(){return r.bind(U.bindHalogenM)(s.use(U.monadStateHalogenM)(Y(d.strongForget)))(function(a){return r.discard(r.discardUnit)(U.bindHalogenM)(f.void(U.functorHalogenM)(C.liftAff(U.monadAffHalogenM(C.monadAffAff))(e.editBookmark(a))))(function(){return r.discard(r.discardUnit)(U.bindHalogenM)(P.assign(U.monadStateHalogenM)($(g.strongFn))(a))(function(){return r.discard(r.discardUnit)(U.bindHalogenM)(P.assign(U.monadStateHalogenM)(Z(g.strongFn))(!1))(function(){return t.pure(U.applicativeHalogenM)(n.value1)})})})})});throw new Error("Failed pattern match at Component.BMark (line 193, column 3 - line 193, column 62): "+[n.constructor.name])},receiver:c.const(v.Nothing.value)})}}(PS["Component.BMark"]=PS["Component.BMark"]||{}),function(n){"use strict";var e=PS["Component.BMark"],t=PS["Control.Applicative"],r=PS["Control.Bind"],a=PS["Control.Monad.State.Class"],o=PS["Data.Array"],u=(PS["Data.Eq"],PS["Data.Function"]),i=PS["Data.Functor"],l=PS["Data.Maybe"],c=PS["Data.Ord"],f=PS["Data.Unit"],s=(PS["Effect.Aff"],PS.Halogen,PS["Halogen.Component"]),d=PS["Halogen.HTML"],S=PS["Halogen.HTML.Elements"],P=PS["Halogen.HTML.Events"],v=PS["Halogen.Query.HalogenM"],p=(PS.Model,PS.Prelude,function(){function n(n,e,t){this.value0=n,this.value1=e,this.value2=t}return n.create=function(e){return function(t){return function(r){return new n(e,t,r)}}},n}());n.HandleBMessage=p,n.blist=function(n){return s.parentComponent(c.ordInt)({initialState:u.const(n),render:function(n){return S.div_(i.map(i.functorArray)(function(n){return d.slot(n.bid)(e.bmark(n))(f.unit)(P.input(p.create(n.bid)))})(n))},eval:function(n){var e;return r.discard(r.discardUnit)(v.bindHalogenM)(a.modify_(v.monadStateHalogenM)((e=n.value0,o.filter(function(n){return n.bid!==e}))))(function(){return t.pure(v.applicativeHalogenM)(n.value2)})},receiver:u.const(l.Nothing.value)})}}(PS["Component.BList"]=PS["Component.BList"]||{}),(PS["Component.RawHtml"]=PS["Component.RawHtml"]||{}).unsafeSetInnerHTML=function(n){return function(e){return function(){n.innerHTML=e}}},function(n){"use strict";var e=PS["Component.RawHtml"],t=PS["Control.Applicative"],r=PS["Control.Bind"],a=PS["Control.Monad.State.Class"],o=PS["Data.Foldable"],u=(PS["Data.Function"],PS["Data.Maybe"]),i=(PS.Effect,PS["Effect.Aff"]),l=PS["Effect.Class"],c=(PS.Globals,PS.Halogen,PS["Halogen.Component"]),f=(PS["Halogen.HTML"],PS["Halogen.HTML.Core"]),s=PS["Halogen.HTML.Elements"],d=PS["Halogen.HTML.Events"],S=PS["Halogen.HTML.Properties"],P=PS["Halogen.Query"],v=PS["Halogen.Query.HalogenM"],p=(PS["Halogen.Query.InputF"],PS.Prelude,PS["Web.HTML"],function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}()),m=function(){function n(n,e){this.value0=n,this.value1=e}return n.create=function(e){return function(t){return new n(e,t)}},n}();n.SetInnerHTML=p,n.Receive=m,n.mkComponent=function(n){var g=function(u){if(u instanceof p)return r.bind(v.bindHalogenM)(a.get(v.monadStateHalogenM))(function(c){return r.bind(v.bindHalogenM)(P.getHTMLElementRef(c.elRef))(function(c){return r.discard(r.discardUnit)(v.bindHalogenM)(o.for_(v.applicativeHalogenM)(o.foldableMaybe)(c)(function(t){return r.bind(v.bindHalogenM)(a.get(v.monadStateHalogenM))(function(r){return l.liftEffect(v.monadEffectHalogenM(i.monadEffectAff))(e.unsafeSetInnerHTML(t)(n(r.inputval)))})}))(function(){return t.pure(v.applicativeHalogenM)(u.value0)})})});if(u instanceof m)return r.discard(r.discardUnit)(v.bindHalogenM)(a.modify_(v.monadStateHalogenM)(function(n){var e={};for(var t in n)({}).hasOwnProperty.call(n,t)&&(e[t]=n[t]);return e.inputval=u.value0,e}))(function(){return g(new p(u.value1))});throw new Error("Failed pattern match at Component.RawHtml (line 51, column 10 - line 62, column 27): "+[u.constructor.name])};return c.lifecycleComponent(f.bifunctorHTML)({initialState:function(n){return{elRef:"inputval",inputval:n}},render:function(n){return s.div([S.ref(n.elRef)])([])},eval:g,receiver:d.input(m.create),initializer:u.Just.create(P.action(p.create)),finalizer:u.Nothing.value})}}(PS["Component.RawHtml"]=PS["Component.RawHtml"]||{}),(PS["Foreign.Marked"]=PS["Foreign.Marked"]||{}).markedImpl=function(n){return marked.setOptions({pedantic:!1,gfm:!0}),marked(n)},function(n){"use strict";var e=PS["Foreign.Marked"],t=(PS["Control.Semigroupoid"],PS.Globals);PS.Prelude;n.marked=function(n){return t.RawHTML(e.markedImpl(n))}}(PS["Foreign.Marked"]=PS["Foreign.Marked"]||{}),function(n){"use strict";var e=PS["Component.RawHtml"],t=(PS["Effect.Aff"],PS["Foreign.Marked"]),r=(PS.Halogen,PS["Halogen.HTML"],e.mkComponent(t.marked));n.component=r}(PS["Component.Markdown"]=PS["Component.Markdown"]||{}),function(n){"use strict";var e=PS["Control.Applicative"],t=PS["Data.Array"],r=PS["Data.Foldable"],a=PS["Data.Function"],o=PS["Data.Functor"],u=PS["Data.Maybe"],i=PS["Data.Monoid"],l=(PS["Data.Semigroup"],PS["Data.Show"]),c=(PS["Data.String"],PS["Data.String.CodePoints"]),f=PS["Data.String.Common"],s=(PS["Data.String.Pattern"],PS["Data.Tuple"]),d=PS["Data.Unit"],S=(PS["Effect.Aff"],PS.Globals),P=(PS.Halogen,PS["Halogen.Component"]),v=(PS["Halogen.HTML"],PS["Halogen.HTML.Core"]),p=PS["Halogen.HTML.Elements"],m=PS["Halogen.HTML.Properties"],g=PS["Halogen.Query.HalogenM"],D=(PS.Model,PS.Prelude,PS.Util);n.nlist=function(n){var b,h=function(n){return S.mmoment8601(n.created)},w=S["app'"](d.unit),y=function(n){return D.fromNullableStr(w.userR)+"/notes/"+n};return P.component(v.bifunctorHTML)({initialState:a.const((b=n,{notes:b,cur:u.Nothing.value,deleteAsk:!1,edit:!1})),render:function(n){return p.div_(o.map(o.functorArray)(function(n){return p.div([m.id_(l.show(l.showInt)(n.id)),D.class_("note w-100 mw7 pa1 mb2")])([p.div([D.class_("display")])([p.a([m.href(y(n.slug)),D.class_("link f5 lh-title")])([v.text(f.null(n.title)?"[no title]":n.title)]),p.br_,p.div([D.class_("description mt1 mid-gray")])((e=c.take(200)(n.text),t.drop(1)(r.foldMap(r.foldableArray)(i.monoidArray)(function(n){return[p.br_,v.text(n)]})(f.split("\n")(e))))),p.a([D.class_("link f7 dib gray w4"),m.title(u.maybe(n.created)(s.snd)(h(n))),m.href(y(n.slug))])([v.text(u.maybe(" ")(s.fst)(h(n)))])])]);var e})(n.notes))},eval:function(n){return e.pure(g.applicativeHalogenM)(n.value0)},receiver:a.const(u.Nothing.value)})}}(PS["Component.NList"]=PS["Component.NList"]||{}),function(n){"use strict";var e=PS.App,t=PS["Component.Markdown"],r=PS["Control.Applicative"],a=PS["Control.Bind"],o=PS["Control.Monad.State.Class"],u=(PS["Control.Semigroupoid"],PS["DOM.HTML.Indexed.ButtonType"]),i=PS["DOM.HTML.Indexed.InputType"],l=PS["Data.Array"],c=PS["Data.Either"],f=(PS["Data.Eq"],PS["Data.Foldable"]),s=PS["Data.Function"],d=PS["Data.Functor"],S=(PS["Data.HeytingAlgebra"],PS["Data.Lens"],PS["Data.Lens.Getter"]),P=PS["Data.Lens.Internal.Forget"],v=PS["Data.Lens.Lens"],p=PS["Data.Lens.Setter"],m=PS["Data.Maybe"],g=PS["Data.Monoid"],D=PS["Data.Ord"],b=PS["Data.Profunctor.Strong"],h=PS["Data.Semigroup"],w=PS["Data.Show"],y=(PS["Data.String"],PS["Data.String.Common"]),M=(PS["Data.String.Pattern"],PS["Data.Tuple"]),E=PS["Data.Unit"],C=PS["Data.Void"],A=PS.Effect,T=PS["Effect.Aff"],F=PS["Effect.Aff.Class"],H=PS["Effect.Class"],L=PS.Globals,_=(PS.Halogen,PS["Halogen.Component"]),I=PS["Halogen.HTML"],U=PS["Halogen.HTML.Core"],x=PS["Halogen.HTML.Elements"],k=PS["Halogen.HTML.Events"],O=PS["Halogen.HTML.Properties"],W=PS["Halogen.Query.HalogenM"],R=(PS.Model,PS.Prelude,PS.Util),N=PS["Web.Event.Event"],B=PS["Web.HTML.Location"],q=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),j=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),V=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),J=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),Q=function(){function n(n,e){this.value0=n,this.value1=e}return n.create=function(e){return function(t){return new n(e,t)}},n}(),G=function(){function n(n,e){this.value0=n,this.value1=e}return n.create=function(e){return function(t){return new n(e,t)}},n}(),z=function(){function n(n,e){this.value0=n,this.value1=e}return n.create=function(e){return function(t){return new n(e,t)}},n}(),K=function(){function n(n,e){this.value0=n,this.value1=e}return n.create=function(e){return function(t){return new n(e,t)}},n}(),X=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),Y=function(n){return v.lens(function(n){return n.note})(function(n){return function(e){return{note:e,deleteAsk:n.deleteAsk,destroyed:n.destroyed,edit:n.edit,edit_note:n.edit_note}}})(n)},Z=function(n){return v.lens(function(n){return n.edit_note})(function(n){return function(e){return{edit_note:e,deleteAsk:n.deleteAsk,destroyed:n.destroyed,edit:n.edit,note:n.note}}})(n)},$=function(n){return v.lens(function(n){return n.edit})(function(n){return function(e){return{edit:e,deleteAsk:n.deleteAsk,destroyed:n.destroyed,edit_note:n.edit_note,note:n.note}}})(n)};n.NNop=J,n.NEditField=Q,n.NEditSubmit=G,n.NEdit=z,n.NDeleteAsk=K,n.NDestroy=X,n._note=Y,n._edit_note=Z,n._edit=$,n.Etitle=q,n.Etext=j,n.EisMarkdown=V,n.nnote=function(n){var v,nn=L["app'"](E.unit);return _.parentComponent(D.ordUnit)({initialState:s.const((v=n,{note:v,edit_note:v,deleteAsk:!1,edit:v.id<=0,destroyed:!1})),render:function(n){var e,r=function(n){return L.mmoment8601(n.created)},a=x.div([O.id_(w.show(w.showInt)(n.note.id)),R.class_("note w-100 mw7 pa1 mb2")])(h.append(h.semigroupArray)([x.div([R.class_("display")])([x.div([R.class_("link f5 lh-title")])([U.text(y.null(n.note.title)?"[no title]":n.note.title)]),x.br_,n.note.isMarkdown?x.div([R.class_("description mt1")])([I.slot(E.unit)(t.component)(n.note.text)(C.absurd)]):x.div([R.class_("description mt1 mid-gray")])((e=n.note.text,l.drop(1)(f.foldMap(f.foldableArray)(g.monoidArray)(function(n){return[x.br_,U.text(n)]})(y.split("\n")(e))))),x.div([R.class_("link f7 dib gray w4"),O.title(m.maybe(n.note.created)(M.snd)(r(n.note)))])([U.text(m.maybe(" ")(M.fst)(r(n.note)))])])])([x.div([R.class_("edit_links db mt3")])([x.button([O.type_(U.buttonTypeIsProp)(u.ButtonButton.value),k.onClick(k.input_(z.create(!0))),R.class_("edit light-silver hover-blue")])([U.text("edit  ")]),x.div([R.class_("delete_link di")])([x.button([O.type_(U.buttonTypeIsProp)(u.ButtonButton.value),k.onClick(k.input_(K.create(!0))),R.class_("delete light-silver hover-blue"+g.guard(g.monoidString)(n.deleteAsk)(" dn"))])([U.text("delete")]),x.span([R.class_("confirm red"+g.guard(g.monoidString)(!n.deleteAsk)(" dn"))])([x.button([O.type_(U.buttonTypeIsProp)(u.ButtonButton.value),k.onClick(k.input_(K.create(!1)))])([U.text("cancel / ")]),x.button([O.type_(U.buttonTypeIsProp)(u.ButtonButton.value),k.onClick(k.input_(X.create)),R.class_("red")])([U.text("destroy")])])])])])),o=function(n){return function(e){return k.input(Q.create)(n(e))}},c=x.form([k.onSubmit(k.input(G.create))])([x.p([R.class_("mt2 mb1")])([U.text("title:")]),x.input([O.type_(U.inputTypeIsProp)(i.InputText.value),R.class_("title w-100 mb1 pt1 f7 edit_form_input"),O.name("title"),O.value(n.edit_note.title),k.onValueChange(o(q.create))]),x.br_,x.p([R.class_("mt2 mb1")])([U.text("description:")]),x.textarea([R.class_("description w-100 mb1 pt1 f7 edit_form_input"),O.name("text"),O.rows(30),O.value(n.edit_note.text),k.onValueChange(o(j.create))]),x.div([R.class_("edit_form_checkboxes mb3")])([x.input([O.type_(U.inputTypeIsProp)(i.InputCheckbox.value),R.class_("is-markdown pointer"),O.id_("edit_ismarkdown"),O.name("ismarkdown"),O.checked(n.edit_note.isMarkdown),k.onChecked(o(V.create))]),U.text(" "),x.label([O.for("edit_ismarkdown"),R.class_("mr2")])([U.text("use markdown?")]),x.br_]),x.input([O.type_(U.inputTypeIsProp)(i.InputSubmit.value),R.class_("mr1 pv1 ph2 dark-gray ba b--moon-gray bg-near-white pointer rdim"),O.value("save")]),U.text(" "),x.input([O.type_(U.inputTypeIsProp)(i.InputReset.value),R.class_("pv1 ph2 dark-gray ba b--moon-gray bg-near-white pointer rdim"),O.value("cancel"),k.onClick(k.input_(z.create(!1)))])]),s=x.p([R.class_("red")])([U.text("you killed this note")]);return n.destroyed?s:n.edit?c:a},eval:function(n){if(n instanceof J)return r.pure(W.applicativeHalogenM)(n.value0);if(n instanceof Q)return a.discard(a.discardUnit)(W.bindHalogenM)(p.modifying(W.monadStateHalogenM)(Z(b.strongFn))(function(){if(n.value0 instanceof q)return function(e){return{id:e.id,slug:e.slug,title:n.value0.value0,text:e.text,length:e.length,isMarkdown:e.isMarkdown,created:e.created,updated:e.updated}};if(n.value0 instanceof j)return function(e){return{id:e.id,slug:e.slug,title:e.title,text:n.value0.value0,length:e.length,isMarkdown:e.isMarkdown,created:e.created,updated:e.updated}};if(n.value0 instanceof V)return function(e){return{id:e.id,slug:e.slug,title:e.title,text:e.text,length:e.length,isMarkdown:n.value0.value0,created:e.created,updated:e.updated}};throw new Error("Failed pattern match at Component.NNote (line 158, column 19 - line 161, column 44): "+[n.value0.constructor.name])}()))(function(){return r.pure(W.applicativeHalogenM)(n.value1)});if(n instanceof K)return a.discard(a.discardUnit)(W.bindHalogenM)(o.modify_(W.monadStateHalogenM)(function(e){var t={};for(var r in e)({}).hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.deleteAsk=n.value0,t}))(function(){return r.pure(W.applicativeHalogenM)(n.value1)});if(n instanceof X)return a.bind(W.bindHalogenM)(S.use(W.monadStateHalogenM)(Y(P.strongForget)))(function(t){return a.discard(a.discardUnit)(W.bindHalogenM)(d.void(W.functorHalogenM)(F.liftAff(W.monadAffHalogenM(F.monadAffAff))(e.destroyNote(t.id))))(function(){return a.discard(a.discardUnit)(W.bindHalogenM)(o.modify_(W.monadStateHalogenM)(function(n){var e={};for(var t in n)({}).hasOwnProperty.call(n,t)&&(e[t]=n[t]);return e.destroyed=!0,e}))(function(){return r.pure(W.applicativeHalogenM)(n.value0)})})});if(n instanceof z)return a.bind(W.bindHalogenM)(S.use(W.monadStateHalogenM)(Y(P.strongForget)))(function(e){return a.discard(a.discardUnit)(W.bindHalogenM)(p.assign(W.monadStateHalogenM)(Z(b.strongFn))(e))(function(){return a.discard(a.discardUnit)(W.bindHalogenM)(p.assign(W.monadStateHalogenM)($(b.strongFn))(n.value0))(function(){return r.pure(W.applicativeHalogenM)(n.value1)})})});if(n instanceof G)return a.discard(a.discardUnit)(W.bindHalogenM)(H.liftEffect(W.monadEffectHalogenM(T.monadEffectAff))(N.preventDefault(n.value0)))(function(){return a.bind(W.bindHalogenM)(S.use(W.monadStateHalogenM)(Z(P.strongForget)))(function(t){return a.bind(W.bindHalogenM)(F.liftAff(W.monadAffHalogenM(F.monadAffAff))(e.editNote(t)))(function(e){if(e.body instanceof c.Left)return r.pure(W.applicativeHalogenM)(n.value1);if(e.body instanceof c.Right)return a.discard(a.discardUnit)(W.bindHalogenM)(0===t.id?H.liftEffect(W.monadEffectHalogenM(T.monadEffectAff))(a.bindFlipped(A.bindEffect)(B.setHref(R.fromNullableStr(nn.noteR)))(R._loc)):a.discard(a.discardUnit)(W.bindHalogenM)(p.assign(W.monadStateHalogenM)(Y(b.strongFn))(t))(function(){return p.assign(W.monadStateHalogenM)($(b.strongFn))(!1)}))(function(){return r.pure(W.applicativeHalogenM)(n.value1)});throw new Error("Failed pattern match at Component.NNote (line 188, column 5 - line 197, column 14): "+[e.body.constructor.name])})})});throw new Error("Failed pattern match at Component.NNote (line 153, column 3 - line 153, column 72): "+[n.constructor.name])},receiver:s.const(m.Nothing.value)})}}(PS["Component.NNote"]=PS["Component.NNote"]||{}),function(n){"use strict";PS["Control.Monad.Error.Class"],PS["Control.Monad.Reader.Trans"],PS["Control.Monad.Trans.Class"],PS["Control.Semigroupoid"];var e=PS["Effect.Aff"],t=(PS.Prelude,function(n,e,t,r,a){this.Functor1=n,this.Monad0=e,this.fork=t,this.join=r,this.suspend=a}),r=new t(function(){return e.functorFiber},function(){return e.monadAff},e.forkAff,e.joinFiber,e.suspendAff);n.fork=function(n){return n.fork},n.join=function(n){return n.join},n.suspend=function(n){return n.suspend},n.MonadFork=t,n.monadForkAff=r}(PS["Control.Monad.Fork.Class"]=PS["Control.Monad.Fork.Class"]||{}),function(n){"use strict";(PS["Effect.Console"]=PS["Effect.Console"]||{}).warn=function(n){return function(){return console.warn(n),{}}}}(),function(n){"use strict";var e=PS["Effect.Console"];PS["Data.Show"],PS["Data.Unit"],PS.Effect;n.warn=e.warn}(PS["Effect.Console"]=PS["Effect.Console"]||{}),function(n){"use strict";PS["Control.Applicative"],PS["Control.Bind"];var e=PS["Data.Foldable"],t=(PS["Data.Function"],PS["Data.Functor"]),r=(PS["Data.List"],PS["Data.List.Types"]),a=(PS["Data.Map"],PS["Data.Map.Internal"]),o=PS["Data.Maybe"],u=(PS["Data.Traversable"],PS.Effect,PS["Effect.Aff"],PS["Effect.Ref"]),i=(PS["Halogen.Component"],PS["Halogen.Data.OrdBox"],PS.Prelude,PS["Unsafe.Coerce"]),l=(PS["Web.DOM"],i.unsafeCoerce),c=i.unsafeCoerce,f=i.unsafeCoerce;n.unDriverStateX=c,n.mkDriverStateXRef=f,n.renderStateX=function(n){return function(n){return c(function(e){return(e.prjQuery,i.unsafeCoerce)(n(e.rendering))})}},n.renderStateX_=function(n){return function(t){return c(function(r){return e.traverse_(n)(e.foldableMaybe)(t)(r.rendering)})}},n.unRenderStateX=l,n.initDriverState=function(n){return function(e){return function(i){return function(l){return function(c){return function(){var s=u.new({})(),d=u.new(a.empty)(),S=u.new(a.empty)(),P=u.new(t.voidLeft(o.functorMaybe)(n.initializer)(r.Nil.value))(),v=u.new(new o.Just(r.Nil.value))(),p=u.new(o.Nothing.value)(),m=u.new(0)(),g=u.new(new o.Just(a.empty))(),D={component:n,state:n.initialState(e),refs:a.empty,children:a.empty,childrenIn:d,childrenOut:S,selfRef:s,handler:i,pendingQueries:P,pendingOuts:v,pendingHandlers:p,rendering:o.Nothing.value,prjQuery:l,fresh:m,subscriptions:g,lifecycleHandlers:c};return u.write(D)(s)(),f(s)}}}}}}}(PS["Halogen.Aff.Driver.State"]=PS["Halogen.Aff.Driver.State"]||{}),function(n){"use strict";(PS["Unsafe.Reference"]=PS["Unsafe.Reference"]||{}).reallyUnsafeRefEq=function(n){return function(e){return n===e}}}(),function(n){"use strict";var e=PS["Unsafe.Reference"].reallyUnsafeRefEq;n.unsafeRefEq=e}(PS["Unsafe.Reference"]=PS["Unsafe.Reference"]||{}),function(n){"use strict";var e=PS["Control.Applicative"],t=PS["Control.Applicative.Free"],r=PS["Control.Bind"],a=PS["Control.Coroutine"],o=PS["Control.Monad.Error.Class"],u=PS["Control.Monad.Fork.Class"],i=PS["Control.Monad.Free"],l=PS["Control.Monad.Free.Trans"],c=PS["Control.Monad.Trans.Class"],f=PS["Control.Parallel"],s=PS["Control.Parallel.Class"],d=(PS["Control.Semigroupoid"],PS["Data.Boolean"]),S=PS["Data.Coyoneda"],P=PS["Data.Eq"],v=PS["Data.Foldable"],p=PS["Data.Function"],m=PS["Data.Functor"],g=PS["Data.List"],D=PS["Data.List.Types"],b=PS["Data.Map"],h=PS["Data.Map.Internal"],w=PS["Data.Maybe"],y=PS["Data.Ord"],M=(PS["Data.Semiring"],PS["Data.Set"]),E=(PS["Data.Tuple"],PS.Effect,PS["Effect.Aff"]),C=PS["Effect.Class"],A=PS["Effect.Exception"],T=PS["Effect.Ref"],F=PS["Halogen.Aff.Driver.State"],H=PS["Halogen.Data.OrdBox"],L=PS["Halogen.Query.EventSource"],_=PS["Halogen.Query.ForkF"],I=PS["Halogen.Query.HalogenM"],U=PS["Halogen.Query.InputF"],x=(PS.Prelude,PS["Unsafe.Reference"]),k=function(n){return function(e){return function(t){return r.bind(E.bindAff)(C.liftEffect(E.monadEffectAff)(T.read(e)))(function(r){if(r instanceof w.Nothing)return n(t);if(r instanceof w.Just)return C.liftEffect(E.monadEffectAff)(T.write(new w.Just(new D.Cons(n(t),r.value0)))(e));throw new Error("Failed pattern match at Halogen.Aff.Driver.Eval (line 171, column 3 - line 175, column 59): "+[r.constructor.name])})}}},O=function(n){return function(t){return r.discard(r.discardUnit)(E.bindAff)(C.liftEffect(E.monadEffectAff)(T.write({initializers:D.Nil.value,finalizers:D.Nil.value})(n)))(function(){return r.bind(E.bindAff)(C.liftEffect(E.monadEffectAff)(t))(function(t){return r.bind(E.bindAff)(C.liftEffect(E.monadEffectAff)(T.read(n)))(function(n){return r.discard(r.discardUnit)(E.bindAff)(v.traverse_(E.applicativeAff)(D.foldableList)(u.fork(u.monadForkAff))(n.finalizers))(function(){return r.discard(r.discardUnit)(E.bindAff)(f.parSequence_(E.parallelAff)(D.foldableList)(n.initializers))(function(){return e.pure(E.applicativeAff)(t)})})})})})}};n.handleLifecycle=O,n.eval=function(n){return function(f){var v=function(i){return function(f){if(f instanceof I.State)return r.bind(E.bindAff)(C.liftEffect(E.monadEffectAff)(T.read(i)))(function(t){var a=f.value0(t.state);if(x.unsafeRefEq(t.state)(a.value1))return e.pure(E.applicativeAff)(a.value0);if(d.otherwise)return r.discard(r.discardUnit)(E.bindAff)(C.liftEffect(E.monadEffectAff)(T.write({component:t.component,state:a.value1,refs:t.refs,children:t.children,childrenIn:t.childrenIn,childrenOut:t.childrenOut,selfRef:t.selfRef,handler:t.handler,pendingQueries:t.pendingQueries,pendingOuts:t.pendingOuts,pendingHandlers:t.pendingHandlers,rendering:t.rendering,prjQuery:t.prjQuery,fresh:t.fresh,subscriptions:t.subscriptions,lifecycleHandlers:t.lifecycleHandlers})(i)))(function(){return r.discard(r.discardUnit)(E.bindAff)(O(t.lifecycleHandlers)(n(t.lifecycleHandlers)(i)))(function(){return e.pure(E.applicativeAff)(a.value0)})});throw new Error("Failed pattern match at Halogen.Aff.Driver.Eval (line 76, column 7 - line 82, column 21): "+[a.constructor.name])});if(f instanceof I.Subscribe)return r.bind(E.bindAff)(C.liftEffect(E.monadEffectAff)(T.read(i)))(function(n){return r.bind(E.bindAff)(u.fork(u.monadForkAff)(r.bind(E.bindAff)(L.unEventSource(f.value0))(function(t){return r.bind(E.bindAff)(C.liftEffect(E.monadEffectAff)(T["modify'"](function(n){return{state:n+1|0,value:n}})(n.fresh)))(function(o){var u=r.bind(E.bindAff)(C.liftEffect(E.monadEffectAff)(T.read(n.subscriptions)))(function(t){return e.when(E.applicativeAff)(w.maybe(!1)(h.member(y.ordInt)(o))(t))(C.liftEffect(E.monadEffectAff)(T.modify_(m.map(w.functorMaybe)(h.delete(y.ordInt)(o)))(n.subscriptions)))});return r.discard(r.discardUnit)(E.bindAff)(C.liftEffect(E.monadEffectAff)(T.modify_(m.map(w.functorMaybe)(h.insert(y.ordInt)(o)(u)))(n.subscriptions)))(function(){var o=r.bind(l.bindFreeT(a.functorAwait)(E.monadAff))(a.await(E.monadAff))(function(t){return r.bind(l.bindFreeT(a.functorAwait)(E.monadAff))(c.lift(l.monadTransFreeT(a.functorAwait))(E.monadAff)(C.liftEffect(E.monadEffectAff)(T.read(n.subscriptions))))(function(n){return e.when(l.applicativeFreeT(a.functorAwait)(E.monadAff))(w.isJust(n))(r.bind(l.bindFreeT(a.functorAwait)(E.monadAff))(c.lift(l.monadTransFreeT(a.functorAwait))(E.monadAff)(R(i)(t)))(function(n){return e.when(l.applicativeFreeT(a.functorAwait)(E.monadAff))(P.eq(L.eqSubscribeStatus)(n)(L.Listening.value))(o)}))})});return r.discard(r.discardUnit)(E.bindAff)(a.runProcess(E.monadRecAff)(a.pullFrom(E.monadRecAff)(o)(t.producer)))(function(){return u})})})})))(function(n){return e.pure(E.applicativeAff)(f.value1)})});if(f instanceof I.Lift)return f.value0;if(f instanceof I.Halt)return o.throwError(E.monadThrowAff)(A.error(f.value0));if(f instanceof I.GetSlots)return r.bind(E.bindAff)(C.liftEffect(E.monadEffectAff)(T.read(i)))(function(n){return e.pure(E.applicativeAff)(f.value0(m.map(D.functorList)(H.unOrdBox)(g.fromFoldable(M.foldableSet)(b.keys(n.children)))))});if(f instanceof I.CheckSlot)return r.bind(E.bindAff)(C.liftEffect(E.monadEffectAff)(T.read(i)))(function(n){return e.pure(E.applicativeAff)(f.value1(h.member(H.ordOrdBox)(n.component.mkOrdBox(f.value0))(n.children)))});if(f instanceof I.ChildQuery)return N(i)(f.value0)(f.value1);if(f instanceof I.Raise)return r.bind(E.bindAff)(C.liftEffect(E.monadEffectAff)(T.read(i)))(function(n){return r.discard(r.discardUnit)(E.bindAff)(k(n.handler)(n.pendingOuts)(f.value0))(function(){return e.pure(E.applicativeAff)(f.value1)})});if(f instanceof I.Par)return s.sequential(E.parallelAff)(t.retractFreeAp(E.applicativeParAff)(t.hoistFreeAp(function(n){return s.parallel(E.parallelAff)(W(i)(n))})(f.value0)));if(f instanceof I.Fork)return _.unFork(function(n){return r.bind(E.bindAff)(u.fork(u.monadForkAff)(W(i)(n.value0)))(function(t){return e.pure(E.applicativeAff)(n.value1(p.flip(E.killFiber)(t)))})})(f.value0);if(f instanceof I.GetRef)return r.bind(E.bindAff)(C.liftEffect(E.monadEffectAff)(T.read(i)))(function(n){return e.pure(E.applicativeAff)(f.value1(h.lookup(y.ordString)(f.value0)(n.refs)))});throw new Error("Failed pattern match at Halogen.Aff.Driver.Eval (line 73, column 12 - line 128, column 33): "+[f.constructor.name])}},W=function(n){return function(e){return i.foldFree(E.monadRecAff)(v(n))(e)}},R=function(n){return function(e){return r.bind(E.bindAff)(C.liftEffect(E.monadEffectAff)(T.read(n)))(function(t){var r=t.component.eval(e);return i.foldFree(E.monadRecAff)(v(n))(r)})}},N=function(n){return function(e){return S.unCoyoneda(function(t){return function(a){return r.bind(E.bindAff)(C.liftEffect(E.monadEffectAff)(T.read(n)))(function(n){var u=h.lookup(H.ordOrdBox)(n.component.mkOrdBox(e))(n.children);if(u instanceof w.Just)return r.bind(E.bindAff)(C.liftEffect(E.monadEffectAff)(T.read(u.value0)))(function(n){return F.unDriverStateX(function(n){var e=n.prjQuery(a);if(e instanceof w.Just)return m.map(E.functorAff)(t)(R(n.selfRef)(e.value0));if(e instanceof w.Nothing)return o.throwError(E.monadThrowAff)(A.error("Query projection failed for child query"));throw new Error("Failed pattern match at Halogen.Aff.Driver.Eval (line 141, column 32 - line 143, column 82): "+[e.constructor.name])})(n)});if(u instanceof w.Nothing)return o.throwError(E.monadThrowAff)(A.error("Slot lookup failed for child query"));throw new Error("Failed pattern match at Halogen.Aff.Driver.Eval (line 138, column 5 - line 144, column 73): "+[u.constructor.name])})}})}};return function(n){if(n instanceof U.RefUpdate)return r.discard(r.discardUnit)(E.bindAff)(C.liftEffect(E.monadEffectAff)(T.modify_(function(e){return{component:e.component,state:e.state,refs:h.alter(y.ordString)(p.const(n.value1))(n.value0)(e.refs),children:e.children,childrenIn:e.childrenIn,childrenOut:e.childrenOut,selfRef:e.selfRef,handler:e.handler,pendingQueries:e.pendingQueries,pendingOuts:e.pendingOuts,pendingHandlers:e.pendingHandlers,rendering:e.rendering,prjQuery:e.prjQuery,fresh:e.fresh,subscriptions:e.subscriptions,lifecycleHandlers:e.lifecycleHandlers}})(f)))(function(){return e.pure(E.applicativeAff)(n.value2)});if(n instanceof U.Query)return R(f)(n.value0);throw new Error("Failed pattern match at Halogen.Aff.Driver.Eval (line 59, column 3 - line 64, column 25): "+[n.constructor.name])}}},n.queuingHandler=k}(PS["Halogen.Aff.Driver.Eval"]=PS["Halogen.Aff.Driver.Eval"]||{}),function(n){"use strict";var e=PS["Control.Applicative"],t=PS["Control.Bind"],r=PS["Control.Coroutine"],a=PS["Control.Monad.Fork.Class"],o=PS["Control.Monad.Rec.Class"],u=PS["Control.Parallel"],i=(PS["Control.Semigroupoid"],PS["Data.Either"]),l=PS["Data.Foldable"],c=PS["Data.Function"],f=PS["Data.Functor"],s=PS["Data.List"],d=PS["Data.List.Types"],S=(PS["Data.Map"],PS["Data.Map.Internal"]),P=PS["Data.Maybe"],v=PS["Data.Ord"],p=(PS["Data.Semiring"],PS["Data.Traversable"],PS["Data.Tuple"],PS["Data.Unit"]),m=PS.Effect,g=PS["Effect.Aff"],D=PS["Effect.Aff.AVar"],b=PS["Effect.Class"],h=PS["Effect.Console"],w=PS["Effect.Exception"],y=PS["Effect.Ref"],M=(PS.Halogen,PS["Halogen.Aff.Driver.Eval"]),E=PS["Halogen.Aff.Driver.State"],C=PS["Halogen.Component"],A=PS["Halogen.Data.OrdBox"],T=PS["Halogen.Query.InputF"],F=(PS.Prelude,y.new({initializers:d.Nil.value,finalizers:d.Nil.value})),H=g.runAff_(i.either(w.throwException)(c.const(e.pure(m.applicativeEffect)(p.unit))));n.runUI=function(n){return function(L){return function(_){var I=function(n){return function(){var e=y.read(n)();return y.write(P.Nothing.value)(n)(),l.for_(m.applicativeEffect)(l.foldableMaybe)(e)(function(n){return H(l.traverse_(g.applicativeAff)(d.foldableList)(a.fork(a.monadForkAff))(s.reverse(n)))})()}},U=function(n){return function(e){return function(r){return function(a){return C.unComponent(function(o){return function(){var i=F(),c=E.initDriverState(o)(r)(e)(a)(i)(),S=y.read(n)();return y.write({initializers:d.Nil.value,finalizers:S.finalizers})(n)(),t.bindFlipped(m.bindEffect)(E.unDriverStateX(function(e){return x(n)(e.selfRef)}))(y.read(c))(),t.bindFlipped(m.bindEffect)(function(n){return function(e){return E.unDriverStateX(function(r){var a=f.map(P.functorMaybe)(function(n){return O(r.selfRef)(T.Query.create(n))})(r.component.initializer);return y.modify_(function(n){return{initializers:new d.Cons(t.discard(t.discardUnit)(g.bindAff)(u.parSequence_(g.parallelAff)(d.foldableList)(s.reverse(n.initializers)))(function(){return t.discard(t.discardUnit)(g.bindAff)(l.sequence_(g.applicativeAff)(l.foldableMaybe)(a))(function(){return b.liftEffect(g.monadEffectAff)(function(){return I(r.pendingQueries)(),I(r.pendingOuts)()})})}),e),finalizers:n.finalizers}})(n)})}}(n)(S.initializers))(y.read(c))(),c}})}}}},x=function(r){return function(u){return function(){var i=y.read(u)(),v=f.map(m.functorEffect)(P.isNothing)(y.read(i.pendingHandlers))();e.when(m.applicativeEffect)(v)(y.write(new P.Just(d.Nil.value))(i.pendingHandlers))(),y.write(S.empty)(i.childrenOut)(),y.write(i.children)(i.childrenIn)();var D=M.queuingHandler(function(n){return f.void(g.functorAff)(O(i.selfRef)(n))})(i.pendingHandlers),b=M.queuingHandler(function(n){return D(T.Query.create(n))})(i.pendingQueries),F=n.render(function(n){return H(D(n))})(function(r){return function(a){return function(o){return function(u){return function(i){return C.unComponentSlot(function(c){return function(s){return function(d){return function(v){return function(D){return function(b){var M=o(c);return function(){var o=y.read(u)(),c=function(){var n=S.pop(A.ordOrdBox)(M)(o);if(n instanceof P.Just)return y.write(n.value0.value1)(u)(),l.for_(m.applicativeEffect)(l.foldableMaybe)(v(d))(function(e){return function(){var t=y.read(n.value0.value0)();return E.unDriverStateX(function(n){return l.for_(m.applicativeEffect)(l.foldableMaybe)(n.prjQuery(e))(function(e){return H(O(n.selfRef)(T.Query.create(e)))})})(t)()}})(),n.value0.value0;if(n instanceof P.Nothing)return U(r)(function(n){return P.maybe(e.pure(g.applicativeAff)(p.unit))(a)(D(n))})(d)(b)(s)();throw new Error("Failed pattern match at Halogen.Aff.Driver (line 258, column 14 - line 266, column 92): "+[n.constructor.name])}(),C=f.map(m.functorEffect)(S.member(A.ordOrdBox)(M))(y.read(i))();return e.when(m.applicativeEffect)(C)(h.warn("Halogen: Duplicate slot address was detected during rendering, unexpected results may occur"))(),y.modify_(S.insert(A.ordOrdBox)(M)(c))(i)(),t.bind(m.bindEffect)(y.read(c))(E.renderStateX(m.functorEffect)(function(t){if(t instanceof P.Nothing)return w.throw("Halogen internal error: child was not initialized in renderChild");if(t instanceof P.Just)return e.pure(m.applicativeEffect)(n.renderChild(t.value0));throw new Error("Failed pattern match at Halogen.Aff.Driver (line 271, column 37 - line 273, column 50): "+[t.constructor.name])}))()}}}}}}})}}}}}(r)(b)(i.component.mkOrdBox)(i.childrenIn)(i.childrenOut))(i.component.render(i.state))(i.rendering)(),L=y.read(i.childrenOut)();return t.bind(m.bindEffect)(y.read(i.childrenIn))(l.traverse_(m.applicativeEffect)(S.foldableMap)(function(e){return function(){var t=y.read(e)();return E.renderStateX_(m.applicativeEffect)(n.removeChild)(t)(),k(r)(t)()}}))(),y.modify_(function(n){return{rendering:new P.Just(F),children:L,component:n.component,state:n.state,refs:n.refs,childrenIn:n.childrenIn,childrenOut:n.childrenOut,selfRef:n.selfRef,handler:n.handler,pendingQueries:n.pendingQueries,pendingOuts:n.pendingOuts,pendingHandlers:n.pendingHandlers,prjQuery:n.prjQuery,fresh:n.fresh,subscriptions:n.subscriptions,lifecycleHandlers:n.lifecycleHandlers}})(i.selfRef)(),e.when(m.applicativeEffect)(v)(c.flip(o.tailRecM(o.monadRecEffect))(p.unit)(function(n){return function(){var n=y.read(i.pendingHandlers)();y.write(new P.Just(d.Nil.value))(i.pendingHandlers)(),l.traverse_(m.applicativeEffect)(l.foldableMaybe)(function(n){return H(l.traverse_(g.applicativeAff)(d.foldableList)(a.fork(a.monadForkAff))(s.reverse(n)))})(n)();var e=y.read(i.pendingHandlers)();return P.maybe(!1)(s.null)(e)?f.voidLeft(m.functorEffect)(y.write(P.Nothing.value)(i.pendingHandlers))(new o.Done(p.unit))():new o.Loop(p.unit)}}))()}}},k=function(n){return E.unDriverStateX(function(e){return function(){var r;return(r=e,function(){return t.bindFlipped(m.bindEffect)(l.traverse_(m.applicativeEffect)(l.foldableMaybe)(function(n){return H(l.traverse_(g.applicativeAff)(S.foldableMap)(a.fork(a.monadForkAff))(n))}))(y.read(r.subscriptions))(),y.write(P.Nothing.value)(r.subscriptions)()})(),l.for_(m.applicativeEffect)(l.foldableMaybe)(f.map(P.functorMaybe)(function(n){return O(e.selfRef)(T.Query.create(n))})(e.component.finalizer))(function(e){return y.modify_(function(n){return{initializers:n.initializers,finalizers:new d.Cons(e,n.finalizers)}})(n)})(),l.for_(m.applicativeEffect)(S.foldableMap)(e.children)(t.composeKleisliFlipped(m.bindEffect)(k(n))(y.read))()}})},O=function(n){return M.eval(x)(n)};return t.bind(g.bindAff)(b.liftEffect(g.monadEffectAff)(F))(function(n){return t.bind(g.bindAff)(b.liftEffect(g.monadEffectAff)(y.new(0)))(function(o){return M.handleLifecycle(n)(function(){var u,c=y.new(S.empty)();return t.bind(m.bindEffect)(t.bind(m.bindEffect)(U(n)((u=c,function(n){return t.bind(g.bindAff)(b.liftEffect(g.monadEffectAff)(y.read(u)))(function(e){return l.traverse_(g.applicativeAff)(S.foldableMap)(a.fork(a.monadForkAff))(f.map(S.functorMap)(D.put(n))(e))})}))(_)(P.Just.create)(L))(y.read))(E.unDriverStateX(function(n){return e.pure(m.applicativeEffect)({query:(l=n.selfRef,function(n){return function(e){var t=n(e);if(t instanceof P.Just)return O(l)(new T.Query(t.value0));if(t instanceof P.Nothing)return b.liftEffect(g.monadEffectAff)(w.throwException(w.error("Halogen internal error: query projection failed in runUI'")));throw new Error("Failed pattern match at Halogen.Aff.Driver (line 136, column 5 - line 138, column 113): "+[t.constructor.name])}})(n.prjQuery),subscribe:(u=o,function(n){return function(e){return t.bind(g.bindAff)(D.empty)(function(o){return t.bind(g.bindAff)(b.liftEffect(g.monadEffectAff)(function(){var e=y.read(u)();return y.modify_(function(n){return n+1|0})(u)(),y.modify_(S.insert(v.ordInt)(e)(o))(n)(),e}))(function(u){var l=r.producer(g.monadAff)(f.map(g.functorAff)(i.Left.create)(D.take(o)));return f.void(g.functorAff)(a.fork(a.monadForkAff)(t.discard(t.discardUnit)(g.bindAff)(r.runProcess(g.monadRecAff)(r.connect(g.monadRecAff)(g.parallelAff)(l)(e)))(function(){return t.discard(t.discardUnit)(g.bindAff)(b.liftEffect(g.monadEffectAff)(y.modify_(S.delete(v.ordInt)(u))(n)))(function(){return D.kill(w.error("ended"))(o)})})))})})}})(c)});var u,l}))()})})})}}}}(PS["Halogen.Aff.Driver"]=PS["Halogen.Aff.Driver"]||{}),function(n){"use strict";var e=PS["Control.Applicative"],t=PS["Control.Bind"],r=(PS["Control.Monad.Error.Class"],PS["Control.Semigroupoid"],PS["Data.Either"]),a=PS["Data.Function"],o=(PS["Data.Functor"],PS["Data.Maybe"]),u=PS["Data.Unit"],i=PS.Effect,l=PS["Effect.Aff"],c=PS["Effect.Class"],f=PS["Effect.Exception"],s=(PS.Prelude,PS["Web.DOM.ParentNode"]),d=(PS["Web.Event.EventTarget"],PS["Web.HTML"]),S=(PS["Web.HTML.Event.EventTypes"],PS["Web.HTML.HTMLDocument"]),P=(PS["Web.HTML.HTMLDocument.ReadyState"],PS["Web.HTML.HTMLElement"]),v=PS["Web.HTML.Window"],p=l.runAff_(r.either(f.throwException)(a.const(e.pure(i.applicativeEffect)(u.unit))));n.selectElement=function(n){return t.bind(l.bindAff)(c.liftEffect(l.monadEffectAff)(t.bindFlipped(i.bindEffect)(t.composeKleisliFlipped(i.bindEffect)(function(e){return s.querySelector(n)(S.toParentNode(e))})(v.document))(d.window)))(function(n){return e.pure(l.applicativeAff)(t.bindFlipped(o.bindMaybe)(P.fromElement)(n))})},n.runHalogenAff=p}(PS["Halogen.Aff.Util"]=PS["Halogen.Aff.Util"]||{}),function(n){"use strict";PS["Control.Applicative"],PS["Control.Bind"];var e,t=PS["Data.Array"],r=(PS["Data.Eq"],PS["Data.Function.Uncurried"],PS["Data.Maybe"]),a=PS["Data.Nullable"],o=PS["Data.Tuple"],u=PS.Effect,i=(PS["Effect.Uncurried"],PS["Halogen.VDom.Machine"]),l=PS["Halogen.VDom.Types"],c=PS["Halogen.VDom.Util"],f=(PS.Prelude,PS["Web.DOM.Document"],PS["Web.DOM.Element"]),s=(PS["Web.DOM.Node"],function(n,e){return n.value1===e.value1&&(n.value0 instanceof r.Just&&e.value0 instanceof r.Just&&n.value0.value0===e.value0.value0||n.value0 instanceof r.Nothing&&e.value0 instanceof r.Nothing)}),d=(e=function(n,t){return function(r){if(r instanceof l.Grafted)return e(n,t)(l.runGraft(r.value0));if(r instanceof l.Widget){var a=t.value1(r.value0);return new i.Step(a.value0,e(n,a),a.value2)}return t.value2(),n(r)}},function(n,t,r){var a=n.buildWidget(n)(r);return new i.Step(a.value0,e(t,a),a.value2)}),S=function(){var n=function(e,t,r,a){return function(o){if(o instanceof l.Grafted)return n(e,t,r,a)(l.runGraft(o.value0));if(o instanceof l.Text){var u=new i.Step(r,n(e,t,r,o.value0),t);return a===o.value0?u:(c.setTextContent(o.value0,r),u)}return t(),e(o)}};return function(e,t,r){var a,o=c.createTextNode(r,e.document),u=(a=o,function(){var n=c.parentNode(a);return c.removeChild(a,n)});return new i.Step(o,n(t,u,o,r),u)}}(),P=function(){var n=function(n,e,t){return function(){var r=c.parentNode(n);return c.removeChild(n,r),c.forInE(t,function(n,e){return e.value2()}),i.halt(e)()}},e=function(r,a,u,f,d,S,P){return function(v){if(v instanceof l.Grafted)return e(r,a,u,f,d,S,P)(l.runGraft(v.value0));if(v instanceof l.Keyed&&s(d,v.value0)){var p=t.length(v.value1);if(0===P&&0===p){var m=i.step(f)(v.value0.value2),g=n(u,m,S);return new i.Step(u,e(r,g,u,m,v.value0,S,0),g)}m=c.diffWithKeyAndIxE(S,v.value1,o.fst,function(n,e,t,r){var a=t.value1(r.value1);return c.insertChildIx(e,a.value0,u),a},function(n,e){return e.value2()},function(n,e,t){var a=r(t.value1);return c.insertChildIx(e,a.value0,u),a});var D=i.step(f)(v.value0.value2);g=n(u,D,m);return new i.Step(u,e(r,g,u,D,v.value0,m,p),g)}return a(),r(v)}};return function(r,u,l,s){var d=c.createElement(a.toNullable(l.value0),l.value1,r.document),S=f.toNode(d),P=c.strMapWithIxE(s,o.fst,function(n,e,t){var r=u(t.value1);return c.insertChildIx(e,r.value0,S),r}),v=r.buildAttributes(d)(l.value2),p=n(S,v,P);return new i.Step(S,e(u,p,S,v,l,P,t.length(s)),p)}}(),v=function(){var n=function(n,e,t){return function(){var r=c.parentNode(n);return c.removeChild(n,r),u.foreachE(t)(i.halt)(),i.halt(e)()}},e=function(r,a,o,u,f,d){return function(S){if(S instanceof l.Grafted)return e(r,a,o,u,f,d)(l.runGraft(S.value0));if(S instanceof l.Elem&&s(f,S.value0)){var P=t.length(S.value1);if(0===t.length(d)&&0===P){var v=i.step(u)(S.value0.value2),p=n(o,v,d);return new i.Step(o,e(r,p,o,v,S.value0,d),p)}v=c.diffWithIxE(d,S.value1,function(n,e,t){var r=e.value1(t);return c.insertChildIx(n,r.value0,o),r},function(n,e){return e.value2()},function(n,e){var t=r(e);return c.insertChildIx(n,t.value0,o),t});var m=i.step(u)(S.value0.value2);p=n(o,m,v);return new i.Step(o,e(r,p,o,m,S.value0,v),p)}return a(),r(S)}};return function(t,r,o,u){var l=c.createElement(a.toNullable(o.value0),o.value1,t.document),s=f.toNode(l),d=c.forE(u,function(n,e){var t=r(e);return c.insertChildIx(n,t.value0,s),t}),S=t.buildAttributes(l)(o.value2),P=n(s,S,d);return new i.Step(s,e(r,P,s,S,o,d),P)}}();n.buildVDom=function(n){var e=function(t){if(t instanceof l.Text)return S(n,e,t.value0);if(t instanceof l.Elem)return v(n,e,t.value0,t.value1);if(t instanceof l.Keyed)return P(n,e,t.value0,t.value1);if(t instanceof l.Widget)return d(n,e,t.value0);if(t instanceof l.Grafted)return e(l.runGraft(t.value0));throw new Error("Failed pattern match at Halogen.VDom.DOM (line 58, column 27 - line 63, column 52): "+[t.constructor.name])};return e},n.buildText=S,n.buildElem=v,n.buildKeyed=P,n.buildWidget=d}(PS["Halogen.VDom.DOM"]=PS["Halogen.VDom.DOM"]||{}),function(n){"use strict";var e=PS["Control.Applicative"],t=PS["Control.Bind"],r=PS["Control.Category"],a=PS["Data.Foldable"],o=(PS["Data.Function"],PS["Data.Functor"]),u=PS["Data.HeytingAlgebra"],i=PS["Data.Maybe"],l=PS["Data.Unit"],c=PS.Effect,f=PS["Effect.Aff"],s=PS["Effect.Class"],d=PS["Effect.Ref"],S=(PS["Effect.Uncurried"],PS["Halogen.Aff.Driver"]),P=PS["Halogen.Aff.Driver.State"],v=(PS["Halogen.Component"],PS["Halogen.HTML.Core"],PS["Halogen.Query.InputF"],PS["Halogen.VDom"],PS["Halogen.VDom.DOM"]),p=PS["Halogen.VDom.DOM.Prop"],m=PS["Halogen.VDom.Machine"],g=(PS.Prelude,PS["Unsafe.Reference"]),D=(PS["Web.DOM.Document"],PS["Web.DOM.Element"],PS["Web.DOM.Node"]),b=PS["Web.HTML"],h=PS["Web.HTML.HTMLDocument"],w=PS["Web.HTML.HTMLElement"],y=PS["Web.HTML.Window"],M=function(n){return function(){var e=D.parentNode(n.node)();return a.traverse_(c.applicativeEffect)(a.foldableMaybe)(function(e){return D.removeChild(n.node)(e)})(e)()}},E=function(n){return function(t){return{render:function(r){return function(a){return function(f){return function(s){if(s instanceof i.Nothing)return function(){var u=d.new(a)(),i=function(n){return function(t){return function(r){var a=P.unRenderStateX(function(n){return n.node}),o=e.pure(c.applicativeEffect)(l.unit),u=function(n){var e=d.read(t)()(n)(),r=a(e);return new m.Step(r,u,o)};return{buildWidget:function(n){return function(n){var e=d.read(t)()(n)(),r=a(e);return new m.Step(r,u,o)}},buildAttributes:p.buildProp(n),document:r}}}}(r)(u)(n),s=v.buildVDom(i)(f),S=m.extract(s);return o.void(c.functorEffect)(D.appendChild(S)(w.toNode(t)))(),{machine:s,node:S,renderChildRef:u}};if(s instanceof i.Just)return function(){d.write(a)(s.value0.renderChildRef)();var n=D.parentNode(s.value0.node)(),t=D.nextSibling(s.value0.node)(),r=m.step(s.value0.machine)(f),S=m.extract(r);return e.when(c.applicativeEffect)(u.not(u.heytingAlgebraFunction(u.heytingAlgebraFunction(u.heytingAlgebraBoolean)))(g.unsafeRefEq)(s.value0.node)(S))(function(n){return function(t){return function(r){return t instanceof i.Just&&r instanceof i.Just?o.void(c.functorEffect)(D.insertBefore(n)(t.value0)(r.value0)):t instanceof i.Nothing&&r instanceof i.Just?o.void(c.functorEffect)(D.appendChild(n)(r.value0)):e.pure(c.applicativeEffect)(l.unit)}}}(S)(t)(n))(),{machine:r,node:S,renderChildRef:s.value0.renderChildRef}};throw new Error("Failed pattern match at Halogen.VDom.Driver (line 118, column 5 - line 134, column 80): "+[s.constructor.name])}}}},renderChild:r.identity(r.categoryFn),removeChild:M}}};n.runUI=function(n){return function(e){return function(r){return t.bind(f.bindAff)(s.liftEffect(f.monadEffectAff)(o.map(c.functorEffect)(h.toDocument)(t.bindFlipped(c.bindEffect)(y.document)(b.window))))(function(t){return S.runUI(E(t)(r))(n)(e)})}}}}(PS["Halogen.VDom.Driver"]=PS["Halogen.VDom.Driver"]||{}),function(n){"use strict";var e=PS.App,t=PS["Component.AccountSettings"],r=PS["Component.Add"],a=PS["Component.BList"],o=PS["Component.NList"],u=PS["Component.NNote"],i=PS["Control.Applicative"],l=PS["Control.Bind"],c=(PS["Control.Semigroupoid"],PS["Data.Foldable"]),f=(PS["Data.Function"],PS["Data.Functor"]),s=PS["Data.Unit"],d=PS.Effect,S=PS["Effect.Aff"],P=PS["Effect.Class"],v=(PS["Halogen.Aff"],PS["Halogen.Aff.Util"]),p=PS["Halogen.VDom.Driver"],m=(PS.Model,PS.Prelude,PS["Web.DOM.Element"]),g=(PS["Web.DOM.ParentNode"],PS["Web.Event.Event"]),D=PS["Web.HTML.HTMLElement"],b=l.bind(S.bindAff)(v.selectElement(".user_footer"))(c.traverse_(S.applicativeAff)(c.foldableMaybe)(function(n){return P.liftEffect(S.monadEffectAff)(m.removeAttribute("hidden")(D.toElement(n)))})),h=i.pure(d.applicativeEffect)(s.unit);n.main=h,n.logoutE=function(n){return l.bindFlipped(d.bindEffect)(function(n){return f.void(d.functorEffect)(S.launchAff(e.logout(n)))})(g.preventDefault(n))},n.renderBookmarks=function(n){return function(e){return v.runHalogenAff(l.bind(S.bindAff)(v.selectElement(n))(c.traverse_(S.applicativeAff)(c.foldableMaybe)(function(n){return l.discard(l.discardUnit)(S.bindAff)(f.void(S.functorAff)(p.runUI(a.blist(e))(s.unit)(n)))(function(){return b})})))}},n.renderAddForm=function(n){return function(e){return v.runHalogenAff(l.bind(S.bindAff)(v.selectElement(n))(c.traverse_(S.applicativeAff)(c.foldableMaybe)(function(n){return p.runUI(r.addbmark(e))(s.unit)(n)})))}},n.renderNotes=function(n){return function(e){return v.runHalogenAff(l.bind(S.bindAff)(v.selectElement(n))(c.traverse_(S.applicativeAff)(c.foldableMaybe)(function(n){return l.discard(l.discardUnit)(S.bindAff)(f.void(S.functorAff)(p.runUI(o.nlist(e))(s.unit)(n)))(function(){return b})})))}},n.renderNote=function(n){return function(e){return v.runHalogenAff(l.bind(S.bindAff)(v.selectElement(n))(c.traverse_(S.applicativeAff)(c.foldableMaybe)(function(n){return f.void(S.functorAff)(p.runUI(u.nnote(e))(s.unit)(n))})))}},n.renderAccountSettings=function(n){return function(e){return v.runHalogenAff(l.bind(S.bindAff)(v.selectElement(n))(c.traverse_(S.applicativeAff)(c.foldableMaybe)(function(n){return f.void(S.functorAff)(p.runUI(t.usetting(e))(s.unit)(n))})))}},n.showFooter=b}(PS.Main=PS.Main||{}),PS.Main.main();
+parcelRequire=function(e,r,t,n){var i,o="function"==typeof parcelRequire&&parcelRequire,u="function"==typeof require&&require;function f(t,n){if(!r[t]){if(!e[t]){var i="function"==typeof parcelRequire&&parcelRequire;if(!n&&i)return i(t,!0);if(o)return o(t,!0);if(u&&"string"==typeof t)return u(t);var c=new Error("Cannot find module '"+t+"'");throw c.code="MODULE_NOT_FOUND",c}p.resolve=function(r){return e[t][1][r]||r},p.cache={};var l=r[t]=new f.Module(t);e[t][0].call(l.exports,p,l,l.exports,this)}return r[t].exports;function p(e){return f(p.resolve(e))}}f.isParcelRequire=!0,f.Module=function(e){this.id=e,this.bundle=f,this.exports={}},f.modules=e,f.cache=r,f.parent=o,f.register=function(r,t){e[r]=[function(e,r){r.exports=t},{}]};for(var c=0;c<t.length;c++)try{f(t[c])}catch(e){i||(i=e)}if(t.length){var l=f(t[t.length-1]);"object"==typeof exports&&"undefined"!=typeof module?module.exports=l:"function"==typeof define&&define.amd?define(function(){return l}):n&&(this[n]=l)}if(parcelRequire=f,i)throw i;return f}({"a2Bw":[function(require,module,exports) {
+var define;
+var global = arguments[3];
+var e,t=arguments[3];!function(t,n){"object"==typeof exports&&"undefined"!=typeof module?module.exports=n():"function"==typeof e&&e.amd?e(n):t.moment=n()}(this,function(){"use strict";var e,t;function n(){return e.apply(null,arguments)}function s(e){return e instanceof Array||"[object Array]"===Object.prototype.toString.call(e)}function i(e){return null!=e&&"[object Object]"===Object.prototype.toString.call(e)}function r(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function a(e){if(Object.getOwnPropertyNames)return 0===Object.getOwnPropertyNames(e).length;var t;for(t in e)if(r(e,t))return!1;return!0}function o(e){return void 0===e}function u(e){return"number"==typeof e||"[object Number]"===Object.prototype.toString.call(e)}function l(e){return e instanceof Date||"[object Date]"===Object.prototype.toString.call(e)}function h(e,t){var n,s=[];for(n=0;n<e.length;++n)s.push(t(e[n],n));return s}function d(e,t){for(var n in t)r(t,n)&&(e[n]=t[n]);return r(t,"toString")&&(e.toString=t.toString),r(t,"valueOf")&&(e.valueOf=t.valueOf),e}function c(e,t,n,s){return Tt(e,t,n,s,!0).utc()}function f(e){return null==e._pf&&(e._pf={empty:!1,unusedTokens:[],unusedInput:[],overflow:-2,charsLeftOver:0,nullInput:!1,invalidEra:null,invalidMonth:null,invalidFormat:!1,userInvalidated:!1,iso:!1,parsedDateParts:[],era:null,meridiem:null,rfc2822:!1,weekdayMismatch:!1}),e._pf}function m(e){if(null==e._isValid){var n=f(e),s=t.call(n.parsedDateParts,function(e){return null!=e}),i=!isNaN(e._d.getTime())&&n.overflow<0&&!n.empty&&!n.invalidEra&&!n.invalidMonth&&!n.invalidWeekday&&!n.weekdayMismatch&&!n.nullInput&&!n.invalidFormat&&!n.userInvalidated&&(!n.meridiem||n.meridiem&&s);if(e._strict&&(i=i&&0===n.charsLeftOver&&0===n.unusedTokens.length&&void 0===n.bigHour),null!=Object.isFrozen&&Object.isFrozen(e))return i;e._isValid=i}return e._isValid}function _(e){var t=c(NaN);return null!=e?d(f(t),e):f(t).userInvalidated=!0,t}t=Array.prototype.some?Array.prototype.some:function(e){var t,n=Object(this),s=n.length>>>0;for(t=0;t<s;t++)if(t in n&&e.call(this,n[t],t,n))return!0;return!1};var y=n.momentProperties=[],g=!1;function w(e,t){var n,s,i;if(o(t._isAMomentObject)||(e._isAMomentObject=t._isAMomentObject),o(t._i)||(e._i=t._i),o(t._f)||(e._f=t._f),o(t._l)||(e._l=t._l),o(t._strict)||(e._strict=t._strict),o(t._tzm)||(e._tzm=t._tzm),o(t._isUTC)||(e._isUTC=t._isUTC),o(t._offset)||(e._offset=t._offset),o(t._pf)||(e._pf=f(t)),o(t._locale)||(e._locale=t._locale),y.length>0)for(n=0;n<y.length;n++)o(i=t[s=y[n]])||(e[s]=i);return e}function p(e){w(this,e),this._d=new Date(null!=e._d?e._d.getTime():NaN),this.isValid()||(this._d=new Date(NaN)),!1===g&&(g=!0,n.updateOffset(this),g=!1)}function v(e){return e instanceof p||null!=e&&null!=e._isAMomentObject}function k(e){!1===n.suppressDeprecationWarnings&&"undefined"!=typeof console&&console.warn&&console.warn("Deprecation warning: "+e)}function M(e,t){var s=!0;return d(function(){if(null!=n.deprecationHandler&&n.deprecationHandler(null,e),s){var i,a,o,u=[];for(a=0;a<arguments.length;a++){if(i="","object"==typeof arguments[a]){for(o in i+="\n["+a+"] ",arguments[0])r(arguments[0],o)&&(i+=o+": "+arguments[0][o]+", ");i=i.slice(0,-2)}else i=arguments[a];u.push(i)}k(e+"\nArguments: "+Array.prototype.slice.call(u).join("")+"\n"+(new Error).stack),s=!1}return t.apply(this,arguments)},t)}var D,S={};function Y(e,t){null!=n.deprecationHandler&&n.deprecationHandler(e,t),S[e]||(k(t),S[e]=!0)}function O(e){return"undefined"!=typeof Function&&e instanceof Function||"[object Function]"===Object.prototype.toString.call(e)}function b(e,t){var n,s=d({},e);for(n in t)r(t,n)&&(i(e[n])&&i(t[n])?(s[n]={},d(s[n],e[n]),d(s[n],t[n])):null!=t[n]?s[n]=t[n]:delete s[n]);for(n in e)r(e,n)&&!r(t,n)&&i(e[n])&&(s[n]=d({},s[n]));return s}function x(e){null!=e&&this.set(e)}n.suppressDeprecationWarnings=!1,n.deprecationHandler=null,D=Object.keys?Object.keys:function(e){var t,n=[];for(t in e)r(e,t)&&n.push(t);return n};function T(e,t,n){var s=""+Math.abs(e),i=t-s.length;return(e>=0?n?"+":"":"-")+Math.pow(10,Math.max(0,i)).toString().substr(1)+s}var N=/(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,P=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,R={},W={};function C(e,t,n,s){var i=s;"string"==typeof s&&(i=function(){return this[s]()}),e&&(W[e]=i),t&&(W[t[0]]=function(){return T(i.apply(this,arguments),t[1],t[2])}),n&&(W[n]=function(){return this.localeData().ordinal(i.apply(this,arguments),e)})}function U(e,t){return e.isValid()?(t=H(t,e.localeData()),R[t]=R[t]||function(e){var t,n,s,i=e.match(N);for(t=0,n=i.length;t<n;t++)W[i[t]]?i[t]=W[i[t]]:i[t]=(s=i[t]).match(/\[[\s\S]/)?s.replace(/^\[|\]$/g,""):s.replace(/\\/g,"");return function(t){var s,r="";for(s=0;s<n;s++)r+=O(i[s])?i[s].call(t,e):i[s];return r}}(t),R[t](e)):e.localeData().invalidDate()}function H(e,t){var n=5;function s(e){return t.longDateFormat(e)||e}for(P.lastIndex=0;n>=0&&P.test(e);)e=e.replace(P,s),P.lastIndex=0,n-=1;return e}var F={};function L(e,t){var n=e.toLowerCase();F[n]=F[n+"s"]=F[t]=e}function V(e){return"string"==typeof e?F[e]||F[e.toLowerCase()]:void 0}function G(e){var t,n,s={};for(n in e)r(e,n)&&(t=V(n))&&(s[t]=e[n]);return s}var E={};function A(e,t){E[e]=t}function j(e){return e%4==0&&e%100!=0||e%400==0}function I(e){return e<0?Math.ceil(e)||0:Math.floor(e)}function Z(e){var t=+e,n=0;return 0!==t&&isFinite(t)&&(n=I(t)),n}function z(e,t){return function(s){return null!=s?(q(this,e,s),n.updateOffset(this,t),this):$(this,e)}}function $(e,t){return e.isValid()?e._d["get"+(e._isUTC?"UTC":"")+t]():NaN}function q(e,t,n){e.isValid()&&!isNaN(n)&&("FullYear"===t&&j(e.year())&&1===e.month()&&29===e.date()?(n=Z(n),e._d["set"+(e._isUTC?"UTC":"")+t](n,e.month(),Te(n,e.month()))):e._d["set"+(e._isUTC?"UTC":"")+t](n))}var B,J=/\d/,Q=/\d\d/,X=/\d{3}/,K=/\d{4}/,ee=/[+-]?\d{6}/,te=/\d\d?/,ne=/\d\d\d\d?/,se=/\d\d\d\d\d\d?/,ie=/\d{1,3}/,re=/\d{1,4}/,ae=/[+-]?\d{1,6}/,oe=/\d+/,ue=/[+-]?\d+/,le=/Z|[+-]\d\d:?\d\d/gi,he=/Z|[+-]\d\d(?::?\d\d)?/gi,de=/[0-9]{0,256}['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFF07\uFF10-\uFFEF]{1,256}|[\u0600-\u06FF\/]{1,256}(\s*?[\u0600-\u06FF]{1,256}){1,2}/i;function ce(e,t,n){B[e]=O(t)?t:function(e,s){return e&&n?n:t}}function fe(e,t){return r(B,e)?B[e](t._strict,t._locale):new RegExp(me(e.replace("\\","").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(e,t,n,s,i){return t||n||s||i})))}function me(e){return e.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}B={};var _e={};function ye(e,t){var n,s=t;for("string"==typeof e&&(e=[e]),u(t)&&(s=function(e,n){n[t]=Z(e)}),n=0;n<e.length;n++)_e[e[n]]=s}function ge(e,t){ye(e,function(e,n,s,i){s._w=s._w||{},t(e,s._w,s,i)})}function we(e,t,n){null!=t&&r(_e,e)&&_e[e](t,n._a,n,e)}var pe,ve=0,ke=1,Me=2,De=3,Se=4,Ye=5,Oe=6,be=7,xe=8;function Te(e,t){if(isNaN(e)||isNaN(t))return NaN;var n,s=(t%(n=12)+n)%n;return e+=(t-s)/12,1===s?j(e)?29:28:31-s%7%2}pe=Array.prototype.indexOf?Array.prototype.indexOf:function(e){var t;for(t=0;t<this.length;++t)if(this[t]===e)return t;return-1},C("M",["MM",2],"Mo",function(){return this.month()+1}),C("MMM",0,0,function(e){return this.localeData().monthsShort(this,e)}),C("MMMM",0,0,function(e){return this.localeData().months(this,e)}),L("month","M"),A("month",8),ce("M",te),ce("MM",te,Q),ce("MMM",function(e,t){return t.monthsShortRegex(e)}),ce("MMMM",function(e,t){return t.monthsRegex(e)}),ye(["M","MM"],function(e,t){t[ke]=Z(e)-1}),ye(["MMM","MMMM"],function(e,t,n,s){var i=n._locale.monthsParse(e,s,n._strict);null!=i?t[ke]=i:f(n).invalidMonth=e});var Ne="January_February_March_April_May_June_July_August_September_October_November_December".split("_"),Pe="Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),Re=/D[oD]?(\[[^\[\]]*\]|\s)+MMMM?/,We=de,Ce=de;function Ue(e,t){var n;if(!e.isValid())return e;if("string"==typeof t)if(/^\d+$/.test(t))t=Z(t);else if(!u(t=e.localeData().monthsParse(t)))return e;return n=Math.min(e.date(),Te(e.year(),t)),e._d["set"+(e._isUTC?"UTC":"")+"Month"](t,n),e}function He(e){return null!=e?(Ue(this,e),n.updateOffset(this,!0),this):$(this,"Month")}function Fe(){function e(e,t){return t.length-e.length}var t,n,s=[],i=[],r=[];for(t=0;t<12;t++)n=c([2e3,t]),s.push(this.monthsShort(n,"")),i.push(this.months(n,"")),r.push(this.months(n,"")),r.push(this.monthsShort(n,""));for(s.sort(e),i.sort(e),r.sort(e),t=0;t<12;t++)s[t]=me(s[t]),i[t]=me(i[t]);for(t=0;t<24;t++)r[t]=me(r[t]);this._monthsRegex=new RegExp("^("+r.join("|")+")","i"),this._monthsShortRegex=this._monthsRegex,this._monthsStrictRegex=new RegExp("^("+i.join("|")+")","i"),this._monthsShortStrictRegex=new RegExp("^("+s.join("|")+")","i")}function Le(e){return j(e)?366:365}C("Y",0,0,function(){var e=this.year();return e<=9999?T(e,4):"+"+e}),C(0,["YY",2],0,function(){return this.year()%100}),C(0,["YYYY",4],0,"year"),C(0,["YYYYY",5],0,"year"),C(0,["YYYYYY",6,!0],0,"year"),L("year","y"),A("year",1),ce("Y",ue),ce("YY",te,Q),ce("YYYY",re,K),ce("YYYYY",ae,ee),ce("YYYYYY",ae,ee),ye(["YYYYY","YYYYYY"],ve),ye("YYYY",function(e,t){t[ve]=2===e.length?n.parseTwoDigitYear(e):Z(e)}),ye("YY",function(e,t){t[ve]=n.parseTwoDigitYear(e)}),ye("Y",function(e,t){t[ve]=parseInt(e,10)}),n.parseTwoDigitYear=function(e){return Z(e)+(Z(e)>68?1900:2e3)};var Ve=z("FullYear",!0);function Ge(e){var t,n;return e<100&&e>=0?((n=Array.prototype.slice.call(arguments))[0]=e+400,t=new Date(Date.UTC.apply(null,n)),isFinite(t.getUTCFullYear())&&t.setUTCFullYear(e)):t=new Date(Date.UTC.apply(null,arguments)),t}function Ee(e,t,n){var s=7+t-n;return-((7+Ge(e,0,s).getUTCDay()-t)%7)+s-1}function Ae(e,t,n,s,i){var r,a,o=1+7*(t-1)+(7+n-s)%7+Ee(e,s,i);return o<=0?a=Le(r=e-1)+o:o>Le(e)?(r=e+1,a=o-Le(e)):(r=e,a=o),{year:r,dayOfYear:a}}function je(e,t,n){var s,i,r=Ee(e.year(),t,n),a=Math.floor((e.dayOfYear()-r-1)/7)+1;return a<1?s=a+Ie(i=e.year()-1,t,n):a>Ie(e.year(),t,n)?(s=a-Ie(e.year(),t,n),i=e.year()+1):(i=e.year(),s=a),{week:s,year:i}}function Ie(e,t,n){var s=Ee(e,t,n),i=Ee(e+1,t,n);return(Le(e)-s+i)/7}C("w",["ww",2],"wo","week"),C("W",["WW",2],"Wo","isoWeek"),L("week","w"),L("isoWeek","W"),A("week",5),A("isoWeek",5),ce("w",te),ce("ww",te,Q),ce("W",te),ce("WW",te,Q),ge(["w","ww","W","WW"],function(e,t,n,s){t[s.substr(0,1)]=Z(e)});function Ze(e,t){return e.slice(t,7).concat(e.slice(0,t))}C("d",0,"do","day"),C("dd",0,0,function(e){return this.localeData().weekdaysMin(this,e)}),C("ddd",0,0,function(e){return this.localeData().weekdaysShort(this,e)}),C("dddd",0,0,function(e){return this.localeData().weekdays(this,e)}),C("e",0,0,"weekday"),C("E",0,0,"isoWeekday"),L("day","d"),L("weekday","e"),L("isoWeekday","E"),A("day",11),A("weekday",11),A("isoWeekday",11),ce("d",te),ce("e",te),ce("E",te),ce("dd",function(e,t){return t.weekdaysMinRegex(e)}),ce("ddd",function(e,t){return t.weekdaysShortRegex(e)}),ce("dddd",function(e,t){return t.weekdaysRegex(e)}),ge(["dd","ddd","dddd"],function(e,t,n,s){var i=n._locale.weekdaysParse(e,s,n._strict);null!=i?t.d=i:f(n).invalidWeekday=e}),ge(["d","e","E"],function(e,t,n,s){t[s]=Z(e)});var ze="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),$e="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),qe="Su_Mo_Tu_We_Th_Fr_Sa".split("_"),Be=de,Je=de,Qe=de;function Xe(){function e(e,t){return t.length-e.length}var t,n,s,i,r,a=[],o=[],u=[],l=[];for(t=0;t<7;t++)n=c([2e3,1]).day(t),s=me(this.weekdaysMin(n,"")),i=me(this.weekdaysShort(n,"")),r=me(this.weekdays(n,"")),a.push(s),o.push(i),u.push(r),l.push(s),l.push(i),l.push(r);a.sort(e),o.sort(e),u.sort(e),l.sort(e),this._weekdaysRegex=new RegExp("^("+l.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp("^("+u.join("|")+")","i"),this._weekdaysShortStrictRegex=new RegExp("^("+o.join("|")+")","i"),this._weekdaysMinStrictRegex=new RegExp("^("+a.join("|")+")","i")}function Ke(){return this.hours()%12||12}function et(e,t){C(e,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),t)})}function tt(e,t){return t._meridiemParse}C("H",["HH",2],0,"hour"),C("h",["hh",2],0,Ke),C("k",["kk",2],0,function(){return this.hours()||24}),C("hmm",0,0,function(){return""+Ke.apply(this)+T(this.minutes(),2)}),C("hmmss",0,0,function(){return""+Ke.apply(this)+T(this.minutes(),2)+T(this.seconds(),2)}),C("Hmm",0,0,function(){return""+this.hours()+T(this.minutes(),2)}),C("Hmmss",0,0,function(){return""+this.hours()+T(this.minutes(),2)+T(this.seconds(),2)}),et("a",!0),et("A",!1),L("hour","h"),A("hour",13),ce("a",tt),ce("A",tt),ce("H",te),ce("h",te),ce("k",te),ce("HH",te,Q),ce("hh",te,Q),ce("kk",te,Q),ce("hmm",ne),ce("hmmss",se),ce("Hmm",ne),ce("Hmmss",se),ye(["H","HH"],De),ye(["k","kk"],function(e,t,n){var s=Z(e);t[De]=24===s?0:s}),ye(["a","A"],function(e,t,n){n._isPm=n._locale.isPM(e),n._meridiem=e}),ye(["h","hh"],function(e,t,n){t[De]=Z(e),f(n).bigHour=!0}),ye("hmm",function(e,t,n){var s=e.length-2;t[De]=Z(e.substr(0,s)),t[Se]=Z(e.substr(s)),f(n).bigHour=!0}),ye("hmmss",function(e,t,n){var s=e.length-4,i=e.length-2;t[De]=Z(e.substr(0,s)),t[Se]=Z(e.substr(s,2)),t[Ye]=Z(e.substr(i)),f(n).bigHour=!0}),ye("Hmm",function(e,t,n){var s=e.length-2;t[De]=Z(e.substr(0,s)),t[Se]=Z(e.substr(s))}),ye("Hmmss",function(e,t,n){var s=e.length-4,i=e.length-2;t[De]=Z(e.substr(0,s)),t[Se]=Z(e.substr(s,2)),t[Ye]=Z(e.substr(i))});var nt=z("Hours",!0);var st,it={calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},longDateFormat:{LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},invalidDate:"Invalid date",ordinal:"%d",dayOfMonthOrdinalParse:/\d{1,2}/,relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",w:"a week",ww:"%d weeks",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},months:Ne,monthsShort:Pe,week:{dow:0,doy:6},weekdays:ze,weekdaysMin:qe,weekdaysShort:$e,meridiemParse:/[ap]\.?m?\.?/i},rt={},at={};function ot(e,t){var n,s=Math.min(e.length,t.length);for(n=0;n<s;n+=1)if(e[n]!==t[n])return n;return s}function ut(e){return e?e.toLowerCase().replace("_","-"):e}function lt(e){var t=null;if(void 0===rt[e]&&"undefined"!=typeof module&&module&&module.exports)try{t=st._abbr,require("./locale/"+e),ht(t)}catch(n){rt[e]=null}return rt[e]}function ht(e,t){var n;return e&&((n=o(t)?ct(e):dt(e,t))?st=n:"undefined"!=typeof console&&console.warn&&console.warn("Locale "+e+" not found. Did you forget to load it?")),st._abbr}function dt(e,t){if(null!==t){var n,s=it;if(t.abbr=e,null!=rt[e])Y("defineLocaleOverride","use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale See http://momentjs.com/guides/#/warnings/define-locale/ for more info."),s=rt[e]._config;else if(null!=t.parentLocale)if(null!=rt[t.parentLocale])s=rt[t.parentLocale]._config;else{if(null==(n=lt(t.parentLocale)))return at[t.parentLocale]||(at[t.parentLocale]=[]),at[t.parentLocale].push({name:e,config:t}),null;s=n._config}return rt[e]=new x(b(s,t)),at[e]&&at[e].forEach(function(e){dt(e.name,e.config)}),ht(e),rt[e]}return delete rt[e],null}function ct(e){var t;if(e&&e._locale&&e._locale._abbr&&(e=e._locale._abbr),!e)return st;if(!s(e)){if(t=lt(e))return t;e=[e]}return function(e){for(var t,n,s,i,r=0;r<e.length;){for(t=(i=ut(e[r]).split("-")).length,n=(n=ut(e[r+1]))?n.split("-"):null;t>0;){if(s=lt(i.slice(0,t).join("-")))return s;if(n&&n.length>=t&&ot(i,n)>=t-1)break;t--}r++}return st}(e)}function ft(e){var t,n=e._a;return n&&-2===f(e).overflow&&(t=n[ke]<0||n[ke]>11?ke:n[Me]<1||n[Me]>Te(n[ve],n[ke])?Me:n[De]<0||n[De]>24||24===n[De]&&(0!==n[Se]||0!==n[Ye]||0!==n[Oe])?De:n[Se]<0||n[Se]>59?Se:n[Ye]<0||n[Ye]>59?Ye:n[Oe]<0||n[Oe]>999?Oe:-1,f(e)._overflowDayOfYear&&(t<ve||t>Me)&&(t=Me),f(e)._overflowWeeks&&-1===t&&(t=be),f(e)._overflowWeekday&&-1===t&&(t=xe),f(e).overflow=t),e}var mt=/^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/,_t=/^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d|))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/,yt=/Z|[+-]\d\d(?::?\d\d)?/,gt=[["YYYYYY-MM-DD",/[+-]\d{6}-\d\d-\d\d/],["YYYY-MM-DD",/\d{4}-\d\d-\d\d/],["GGGG-[W]WW-E",/\d{4}-W\d\d-\d/],["GGGG-[W]WW",/\d{4}-W\d\d/,!1],["YYYY-DDD",/\d{4}-\d{3}/],["YYYY-MM",/\d{4}-\d\d/,!1],["YYYYYYMMDD",/[+-]\d{10}/],["YYYYMMDD",/\d{8}/],["GGGG[W]WWE",/\d{4}W\d{3}/],["GGGG[W]WW",/\d{4}W\d{2}/,!1],["YYYYDDD",/\d{7}/],["YYYYMM",/\d{6}/,!1],["YYYY",/\d{4}/,!1]],wt=[["HH:mm:ss.SSSS",/\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss,SSSS",/\d\d:\d\d:\d\d,\d+/],["HH:mm:ss",/\d\d:\d\d:\d\d/],["HH:mm",/\d\d:\d\d/],["HHmmss.SSSS",/\d\d\d\d\d\d\.\d+/],["HHmmss,SSSS",/\d\d\d\d\d\d,\d+/],["HHmmss",/\d\d\d\d\d\d/],["HHmm",/\d\d\d\d/],["HH",/\d\d/]],pt=/^\/?Date\((-?\d+)/i,vt=/^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\d{4}))$/,kt={UT:0,GMT:0,EDT:-240,EST:-300,CDT:-300,CST:-360,MDT:-360,MST:-420,PDT:-420,PST:-480};function Mt(e){var t,n,s,i,r,a,o=e._i,u=mt.exec(o)||_t.exec(o);if(u){for(f(e).iso=!0,t=0,n=gt.length;t<n;t++)if(gt[t][1].exec(u[1])){i=gt[t][0],s=!1!==gt[t][2];break}if(null==i)return void(e._isValid=!1);if(u[3]){for(t=0,n=wt.length;t<n;t++)if(wt[t][1].exec(u[3])){r=(u[2]||" ")+wt[t][0];break}if(null==r)return void(e._isValid=!1)}if(!s&&null!=r)return void(e._isValid=!1);if(u[4]){if(!yt.exec(u[4]))return void(e._isValid=!1);a="Z"}e._f=i+(r||"")+(a||""),bt(e)}else e._isValid=!1}function Dt(e){var t=parseInt(e,10);return t<=49?2e3+t:t<=999?1900+t:t}function St(e){var t,n,s,i,r,a,o,u,l=vt.exec(e._i.replace(/\([^)]*\)|[\n\t]/g," ").replace(/(\s\s+)/g," ").replace(/^\s\s*/,"").replace(/\s\s*$/,""));if(l){if(n=l[4],s=l[3],i=l[2],r=l[5],a=l[6],o=l[7],u=[Dt(n),Pe.indexOf(s),parseInt(i,10),parseInt(r,10),parseInt(a,10)],o&&u.push(parseInt(o,10)),t=u,!function(e,t,n){return!e||$e.indexOf(e)===new Date(t[0],t[1],t[2]).getDay()||(f(n).weekdayMismatch=!0,n._isValid=!1,!1)}(l[1],t,e))return;e._a=t,e._tzm=function(e,t,n){if(e)return kt[e];if(t)return 0;var s=parseInt(n,10),i=s%100;return(s-i)/100*60+i}(l[8],l[9],l[10]),e._d=Ge.apply(null,e._a),e._d.setUTCMinutes(e._d.getUTCMinutes()-e._tzm),f(e).rfc2822=!0}else e._isValid=!1}function Yt(e,t,n){return null!=e?e:null!=t?t:n}function Ot(e){var t,s,i,r,a,o=[];if(!e._d){for(i=function(e){var t=new Date(n.now());return e._useUTC?[t.getUTCFullYear(),t.getUTCMonth(),t.getUTCDate()]:[t.getFullYear(),t.getMonth(),t.getDate()]}(e),e._w&&null==e._a[Me]&&null==e._a[ke]&&function(e){var t,n,s,i,r,a,o,u,l;null!=(t=e._w).GG||null!=t.W||null!=t.E?(r=1,a=4,n=Yt(t.GG,e._a[ve],je(Nt(),1,4).year),s=Yt(t.W,1),((i=Yt(t.E,1))<1||i>7)&&(u=!0)):(r=e._locale._week.dow,a=e._locale._week.doy,l=je(Nt(),r,a),n=Yt(t.gg,e._a[ve],l.year),s=Yt(t.w,l.week),null!=t.d?((i=t.d)<0||i>6)&&(u=!0):null!=t.e?(i=t.e+r,(t.e<0||t.e>6)&&(u=!0)):i=r);s<1||s>Ie(n,r,a)?f(e)._overflowWeeks=!0:null!=u?f(e)._overflowWeekday=!0:(o=Ae(n,s,i,r,a),e._a[ve]=o.year,e._dayOfYear=o.dayOfYear)}(e),null!=e._dayOfYear&&(a=Yt(e._a[ve],i[ve]),(e._dayOfYear>Le(a)||0===e._dayOfYear)&&(f(e)._overflowDayOfYear=!0),s=Ge(a,0,e._dayOfYear),e._a[ke]=s.getUTCMonth(),e._a[Me]=s.getUTCDate()),t=0;t<3&&null==e._a[t];++t)e._a[t]=o[t]=i[t];for(;t<7;t++)e._a[t]=o[t]=null==e._a[t]?2===t?1:0:e._a[t];24===e._a[De]&&0===e._a[Se]&&0===e._a[Ye]&&0===e._a[Oe]&&(e._nextDay=!0,e._a[De]=0),e._d=(e._useUTC?Ge:function(e,t,n,s,i,r,a){var o;return e<100&&e>=0?(o=new Date(e+400,t,n,s,i,r,a),isFinite(o.getFullYear())&&o.setFullYear(e)):o=new Date(e,t,n,s,i,r,a),o}).apply(null,o),r=e._useUTC?e._d.getUTCDay():e._d.getDay(),null!=e._tzm&&e._d.setUTCMinutes(e._d.getUTCMinutes()-e._tzm),e._nextDay&&(e._a[De]=24),e._w&&void 0!==e._w.d&&e._w.d!==r&&(f(e).weekdayMismatch=!0)}}function bt(e){if(e._f!==n.ISO_8601)if(e._f!==n.RFC_2822){e._a=[],f(e).empty=!0;var t,s,i,r,a,o,u=""+e._i,l=u.length,h=0;for(i=H(e._f,e._locale).match(N)||[],t=0;t<i.length;t++)r=i[t],(s=(u.match(fe(r,e))||[])[0])&&((a=u.substr(0,u.indexOf(s))).length>0&&f(e).unusedInput.push(a),u=u.slice(u.indexOf(s)+s.length),h+=s.length),W[r]?(s?f(e).empty=!1:f(e).unusedTokens.push(r),we(r,s,e)):e._strict&&!s&&f(e).unusedTokens.push(r);f(e).charsLeftOver=l-h,u.length>0&&f(e).unusedInput.push(u),e._a[De]<=12&&!0===f(e).bigHour&&e._a[De]>0&&(f(e).bigHour=void 0),f(e).parsedDateParts=e._a.slice(0),f(e).meridiem=e._meridiem,e._a[De]=function(e,t,n){var s;if(null==n)return t;return null!=e.meridiemHour?e.meridiemHour(t,n):null!=e.isPM?((s=e.isPM(n))&&t<12&&(t+=12),s||12!==t||(t=0),t):t}(e._locale,e._a[De],e._meridiem),null!==(o=f(e).era)&&(e._a[ve]=e._locale.erasConvertYear(o,e._a[ve])),Ot(e),ft(e)}else St(e);else Mt(e)}function xt(e){var t=e._i,r=e._f;return e._locale=e._locale||ct(e._l),null===t||void 0===r&&""===t?_({nullInput:!0}):("string"==typeof t&&(e._i=t=e._locale.preparse(t)),v(t)?new p(ft(t)):(l(t)?e._d=t:s(r)?function(e){var t,n,s,i,r,a,o=!1;if(0===e._f.length)return f(e).invalidFormat=!0,void(e._d=new Date(NaN));for(i=0;i<e._f.length;i++)r=0,a=!1,t=w({},e),null!=e._useUTC&&(t._useUTC=e._useUTC),t._f=e._f[i],bt(t),m(t)&&(a=!0),r+=f(t).charsLeftOver,r+=10*f(t).unusedTokens.length,f(t).score=r,o?r<s&&(s=r,n=t):(null==s||r<s||a)&&(s=r,n=t,a&&(o=!0));d(e,n||t)}(e):r?bt(e):function(e){var t=e._i;o(t)?e._d=new Date(n.now()):l(t)?e._d=new Date(t.valueOf()):"string"==typeof t?function(e){var t=pt.exec(e._i);null===t?(Mt(e),!1===e._isValid&&(delete e._isValid,St(e),!1===e._isValid&&(delete e._isValid,e._strict?e._isValid=!1:n.createFromInputFallback(e)))):e._d=new Date(+t[1])}(e):s(t)?(e._a=h(t.slice(0),function(e){return parseInt(e,10)}),Ot(e)):i(t)?function(e){if(!e._d){var t=G(e._i),n=void 0===t.day?t.date:t.day;e._a=h([t.year,t.month,n,t.hour,t.minute,t.second,t.millisecond],function(e){return e&&parseInt(e,10)}),Ot(e)}}(e):u(t)?e._d=new Date(t):n.createFromInputFallback(e)}(e),m(e)||(e._d=null),e))}function Tt(e,t,n,r,o){var u,l={};return!0!==t&&!1!==t||(r=t,t=void 0),!0!==n&&!1!==n||(r=n,n=void 0),(i(e)&&a(e)||s(e)&&0===e.length)&&(e=void 0),l._isAMomentObject=!0,l._useUTC=l._isUTC=o,l._l=n,l._i=e,l._f=t,l._strict=r,(u=new p(ft(xt(l))))._nextDay&&(u.add(1,"d"),u._nextDay=void 0),u}function Nt(e,t,n,s){return Tt(e,t,n,s,!1)}n.createFromInputFallback=M("value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are discouraged. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.",function(e){e._d=new Date(e._i+(e._useUTC?" UTC":""))}),n.ISO_8601=function(){},n.RFC_2822=function(){};var Pt=M("moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/",function(){var e=Nt.apply(null,arguments);return this.isValid()&&e.isValid()?e<this?this:e:_()}),Rt=M("moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/",function(){var e=Nt.apply(null,arguments);return this.isValid()&&e.isValid()?e>this?this:e:_()});function Wt(e,t){var n,i;if(1===t.length&&s(t[0])&&(t=t[0]),!t.length)return Nt();for(n=t[0],i=1;i<t.length;++i)t[i].isValid()&&!t[i][e](n)||(n=t[i]);return n}var Ct=["year","quarter","month","week","day","hour","minute","second","millisecond"];function Ut(e){var t=G(e),n=t.year||0,s=t.quarter||0,i=t.month||0,a=t.week||t.isoWeek||0,o=t.day||0,u=t.hour||0,l=t.minute||0,h=t.second||0,d=t.millisecond||0;this._isValid=function(e){var t,n,s=!1;for(t in e)if(r(e,t)&&(-1===pe.call(Ct,t)||null!=e[t]&&isNaN(e[t])))return!1;for(n=0;n<Ct.length;++n)if(e[Ct[n]]){if(s)return!1;parseFloat(e[Ct[n]])!==Z(e[Ct[n]])&&(s=!0)}return!0}(t),this._milliseconds=+d+1e3*h+6e4*l+1e3*u*60*60,this._days=+o+7*a,this._months=+i+3*s+12*n,this._data={},this._locale=ct(),this._bubble()}function Ht(e){return e instanceof Ut}function Ft(e){return e<0?-1*Math.round(-1*e):Math.round(e)}function Lt(e,t){C(e,0,0,function(){var e=this.utcOffset(),n="+";return e<0&&(e=-e,n="-"),n+T(~~(e/60),2)+t+T(~~e%60,2)})}Lt("Z",":"),Lt("ZZ",""),ce("Z",he),ce("ZZ",he),ye(["Z","ZZ"],function(e,t,n){n._useUTC=!0,n._tzm=Gt(he,e)});var Vt=/([\+\-]|\d\d)/gi;function Gt(e,t){var n,s,i=(t||"").match(e);return null===i?null:0===(s=60*(n=((i[i.length-1]||[])+"").match(Vt)||["-",0,0])[1]+Z(n[2]))?0:"+"===n[0]?s:-s}function Et(e,t){var s,i;return t._isUTC?(s=t.clone(),i=(v(e)||l(e)?e.valueOf():Nt(e).valueOf())-s.valueOf(),s._d.setTime(s._d.valueOf()+i),n.updateOffset(s,!1),s):Nt(e).local()}function At(e){return-Math.round(e._d.getTimezoneOffset())}function jt(){return!!this.isValid()&&(this._isUTC&&0===this._offset)}n.updateOffset=function(){};var It=/^(-|\+)?(?:(\d*)[. ])?(\d+):(\d+)(?::(\d+)(\.\d*)?)?$/,Zt=/^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;function zt(e,t){var n,s,i,a=e,o=null;return Ht(e)?a={ms:e._milliseconds,d:e._days,M:e._months}:u(e)||!isNaN(+e)?(a={},t?a[t]=+e:a.milliseconds=+e):(o=It.exec(e))?(n="-"===o[1]?-1:1,a={y:0,d:Z(o[Me])*n,h:Z(o[De])*n,m:Z(o[Se])*n,s:Z(o[Ye])*n,ms:Z(Ft(1e3*o[Oe]))*n}):(o=Zt.exec(e))?(n="-"===o[1]?-1:1,a={y:$t(o[2],n),M:$t(o[3],n),w:$t(o[4],n),d:$t(o[5],n),h:$t(o[6],n),m:$t(o[7],n),s:$t(o[8],n)}):null==a?a={}:"object"==typeof a&&("from"in a||"to"in a)&&(i=function(e,t){var n;if(!e.isValid()||!t.isValid())return{milliseconds:0,months:0};t=Et(t,e),e.isBefore(t)?n=qt(e,t):((n=qt(t,e)).milliseconds=-n.milliseconds,n.months=-n.months);return n}(Nt(a.from),Nt(a.to)),(a={}).ms=i.milliseconds,a.M=i.months),s=new Ut(a),Ht(e)&&r(e,"_locale")&&(s._locale=e._locale),Ht(e)&&r(e,"_isValid")&&(s._isValid=e._isValid),s}function $t(e,t){var n=e&&parseFloat(e.replace(",","."));return(isNaN(n)?0:n)*t}function qt(e,t){var n={};return n.months=t.month()-e.month()+12*(t.year()-e.year()),e.clone().add(n.months,"M").isAfter(t)&&--n.months,n.milliseconds=+t-+e.clone().add(n.months,"M"),n}function Bt(e,t){return function(n,s){var i;return null===s||isNaN(+s)||(Y(t,"moment()."+t+"(period, number) is deprecated. Please use moment()."+t+"(number, period). See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info."),i=n,n=s,s=i),Jt(this,zt(n,s),e),this}}function Jt(e,t,s,i){var r=t._milliseconds,a=Ft(t._days),o=Ft(t._months);e.isValid()&&(i=null==i||i,o&&Ue(e,$(e,"Month")+o*s),a&&q(e,"Date",$(e,"Date")+a*s),r&&e._d.setTime(e._d.valueOf()+r*s),i&&n.updateOffset(e,a||o))}zt.fn=Ut.prototype,zt.invalid=function(){return zt(NaN)};var Qt=Bt(1,"add"),Xt=Bt(-1,"subtract");function Kt(e){return"string"==typeof e||e instanceof String}function en(e){return v(e)||l(e)||Kt(e)||u(e)||function(e){var t=s(e),n=!1;t&&(n=0===e.filter(function(t){return!u(t)&&Kt(e)}).length);return t&&n}(e)||function(e){var t,n,s=i(e)&&!a(e),o=!1,u=["years","year","y","months","month","M","days","day","d","dates","date","D","hours","hour","h","minutes","minute","m","seconds","second","s","milliseconds","millisecond","ms"];for(t=0;t<u.length;t+=1)n=u[t],o=o||r(e,n);return s&&o}(e)||null==e}function tn(e,t){if(e.date()<t.date())return-tn(t,e);var n=12*(t.year()-e.year())+(t.month()-e.month()),s=e.clone().add(n,"months");return-(n+(t-s<0?(t-s)/(s-e.clone().add(n-1,"months")):(t-s)/(e.clone().add(n+1,"months")-s)))||0}function nn(e){var t;return void 0===e?this._locale._abbr:(null!=(t=ct(e))&&(this._locale=t),this)}n.defaultFormat="YYYY-MM-DDTHH:mm:ssZ",n.defaultFormatUtc="YYYY-MM-DDTHH:mm:ss[Z]";var sn=M("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",function(e){return void 0===e?this.localeData():this.locale(e)});function rn(){return this._locale}var an=1e3,on=60*an,un=60*on,ln=3506328*un;function hn(e,t){return(e%t+t)%t}function dn(e,t,n){return e<100&&e>=0?new Date(e+400,t,n)-ln:new Date(e,t,n).valueOf()}function cn(e,t,n){return e<100&&e>=0?Date.UTC(e+400,t,n)-ln:Date.UTC(e,t,n)}function fn(e,t){return t.erasAbbrRegex(e)}function mn(){var e,t,n=[],s=[],i=[],r=[],a=this.eras();for(e=0,t=a.length;e<t;++e)s.push(me(a[e].name)),n.push(me(a[e].abbr)),i.push(me(a[e].narrow)),r.push(me(a[e].name)),r.push(me(a[e].abbr)),r.push(me(a[e].narrow));this._erasRegex=new RegExp("^("+r.join("|")+")","i"),this._erasNameRegex=new RegExp("^("+s.join("|")+")","i"),this._erasAbbrRegex=new RegExp("^("+n.join("|")+")","i"),this._erasNarrowRegex=new RegExp("^("+i.join("|")+")","i")}function _n(e,t){C(0,[e,e.length],0,t)}function yn(e,t,n,s,i){var r;return null==e?je(this,s,i).year:(t>(r=Ie(e,s,i))&&(t=r),function(e,t,n,s,i){var r=Ae(e,t,n,s,i),a=Ge(r.year,0,r.dayOfYear);return this.year(a.getUTCFullYear()),this.month(a.getUTCMonth()),this.date(a.getUTCDate()),this}.call(this,e,t,n,s,i))}C("N",0,0,"eraAbbr"),C("NN",0,0,"eraAbbr"),C("NNN",0,0,"eraAbbr"),C("NNNN",0,0,"eraName"),C("NNNNN",0,0,"eraNarrow"),C("y",["y",1],"yo","eraYear"),C("y",["yy",2],0,"eraYear"),C("y",["yyy",3],0,"eraYear"),C("y",["yyyy",4],0,"eraYear"),ce("N",fn),ce("NN",fn),ce("NNN",fn),ce("NNNN",function(e,t){return t.erasNameRegex(e)}),ce("NNNNN",function(e,t){return t.erasNarrowRegex(e)}),ye(["N","NN","NNN","NNNN","NNNNN"],function(e,t,n,s){var i=n._locale.erasParse(e,s,n._strict);i?f(n).era=i:f(n).invalidEra=e}),ce("y",oe),ce("yy",oe),ce("yyy",oe),ce("yyyy",oe),ce("yo",function(e,t){return t._eraYearOrdinalRegex||oe}),ye(["y","yy","yyy","yyyy"],ve),ye(["yo"],function(e,t,n,s){var i;n._locale._eraYearOrdinalRegex&&(i=e.match(n._locale._eraYearOrdinalRegex)),n._locale.eraYearOrdinalParse?t[ve]=n._locale.eraYearOrdinalParse(e,i):t[ve]=parseInt(e,10)}),C(0,["gg",2],0,function(){return this.weekYear()%100}),C(0,["GG",2],0,function(){return this.isoWeekYear()%100}),_n("gggg","weekYear"),_n("ggggg","weekYear"),_n("GGGG","isoWeekYear"),_n("GGGGG","isoWeekYear"),L("weekYear","gg"),L("isoWeekYear","GG"),A("weekYear",1),A("isoWeekYear",1),ce("G",ue),ce("g",ue),ce("GG",te,Q),ce("gg",te,Q),ce("GGGG",re,K),ce("gggg",re,K),ce("GGGGG",ae,ee),ce("ggggg",ae,ee),ge(["gggg","ggggg","GGGG","GGGGG"],function(e,t,n,s){t[s.substr(0,2)]=Z(e)}),ge(["gg","GG"],function(e,t,s,i){t[i]=n.parseTwoDigitYear(e)}),C("Q",0,"Qo","quarter"),L("quarter","Q"),A("quarter",7),ce("Q",J),ye("Q",function(e,t){t[ke]=3*(Z(e)-1)}),C("D",["DD",2],"Do","date"),L("date","D"),A("date",9),ce("D",te),ce("DD",te,Q),ce("Do",function(e,t){return e?t._dayOfMonthOrdinalParse||t._ordinalParse:t._dayOfMonthOrdinalParseLenient}),ye(["D","DD"],Me),ye("Do",function(e,t){t[Me]=Z(e.match(te)[0])});var gn=z("Date",!0);C("DDD",["DDDD",3],"DDDo","dayOfYear"),L("dayOfYear","DDD"),A("dayOfYear",4),ce("DDD",ie),ce("DDDD",X),ye(["DDD","DDDD"],function(e,t,n){n._dayOfYear=Z(e)}),C("m",["mm",2],0,"minute"),L("minute","m"),A("minute",14),ce("m",te),ce("mm",te,Q),ye(["m","mm"],Se);var wn=z("Minutes",!1);C("s",["ss",2],0,"second"),L("second","s"),A("second",15),ce("s",te),ce("ss",te,Q),ye(["s","ss"],Ye);var pn,vn,kn=z("Seconds",!1);for(C("S",0,0,function(){return~~(this.millisecond()/100)}),C(0,["SS",2],0,function(){return~~(this.millisecond()/10)}),C(0,["SSS",3],0,"millisecond"),C(0,["SSSS",4],0,function(){return 10*this.millisecond()}),C(0,["SSSSS",5],0,function(){return 100*this.millisecond()}),C(0,["SSSSSS",6],0,function(){return 1e3*this.millisecond()}),C(0,["SSSSSSS",7],0,function(){return 1e4*this.millisecond()}),C(0,["SSSSSSSS",8],0,function(){return 1e5*this.millisecond()}),C(0,["SSSSSSSSS",9],0,function(){return 1e6*this.millisecond()}),L("millisecond","ms"),A("millisecond",16),ce("S",ie,J),ce("SS",ie,Q),ce("SSS",ie,X),pn="SSSS";pn.length<=9;pn+="S")ce(pn,oe);function Mn(e,t){t[Oe]=Z(1e3*("0."+e))}for(pn="S";pn.length<=9;pn+="S")ye(pn,Mn);vn=z("Milliseconds",!1),C("z",0,0,"zoneAbbr"),C("zz",0,0,"zoneName");var Dn=p.prototype;function Sn(e){return e}Dn.add=Qt,Dn.calendar=function(e,t){1===arguments.length&&(arguments[0]?en(arguments[0])?(e=arguments[0],t=void 0):function(e){var t,n=i(e)&&!a(e),s=!1,o=["sameDay","nextDay","lastDay","nextWeek","lastWeek","sameElse"];for(t=0;t<o.length;t+=1)s=s||r(e,o[t]);return n&&s}(arguments[0])&&(t=arguments[0],e=void 0):(e=void 0,t=void 0));var s=e||Nt(),o=Et(s,this).startOf("day"),u=n.calendarFormat(this,o)||"sameElse",l=t&&(O(t[u])?t[u].call(this,s):t[u]);return this.format(l||this.localeData().calendar(u,this,Nt(s)))},Dn.clone=function(){return new p(this)},Dn.diff=function(e,t,n){var s,i,r;if(!this.isValid())return NaN;if(!(s=Et(e,this)).isValid())return NaN;switch(i=6e4*(s.utcOffset()-this.utcOffset()),t=V(t)){case"year":r=tn(this,s)/12;break;case"month":r=tn(this,s);break;case"quarter":r=tn(this,s)/3;break;case"second":r=(this-s)/1e3;break;case"minute":r=(this-s)/6e4;break;case"hour":r=(this-s)/36e5;break;case"day":r=(this-s-i)/864e5;break;case"week":r=(this-s-i)/6048e5;break;default:r=this-s}return n?r:I(r)},Dn.endOf=function(e){var t,s;if(void 0===(e=V(e))||"millisecond"===e||!this.isValid())return this;switch(s=this._isUTC?cn:dn,e){case"year":t=s(this.year()+1,0,1)-1;break;case"quarter":t=s(this.year(),this.month()-this.month()%3+3,1)-1;break;case"month":t=s(this.year(),this.month()+1,1)-1;break;case"week":t=s(this.year(),this.month(),this.date()-this.weekday()+7)-1;break;case"isoWeek":t=s(this.year(),this.month(),this.date()-(this.isoWeekday()-1)+7)-1;break;case"day":case"date":t=s(this.year(),this.month(),this.date()+1)-1;break;case"hour":t=this._d.valueOf(),t+=un-hn(t+(this._isUTC?0:this.utcOffset()*on),un)-1;break;case"minute":t=this._d.valueOf(),t+=on-hn(t,on)-1;break;case"second":t=this._d.valueOf(),t+=an-hn(t,an)-1}return this._d.setTime(t),n.updateOffset(this,!0),this},Dn.format=function(e){e||(e=this.isUtc()?n.defaultFormatUtc:n.defaultFormat);var t=U(this,e);return this.localeData().postformat(t)},Dn.from=function(e,t){return this.isValid()&&(v(e)&&e.isValid()||Nt(e).isValid())?zt({to:this,from:e}).locale(this.locale()).humanize(!t):this.localeData().invalidDate()},Dn.fromNow=function(e){return this.from(Nt(),e)},Dn.to=function(e,t){return this.isValid()&&(v(e)&&e.isValid()||Nt(e).isValid())?zt({from:this,to:e}).locale(this.locale()).humanize(!t):this.localeData().invalidDate()},Dn.toNow=function(e){return this.to(Nt(),e)},Dn.get=function(e){return O(this[e=V(e)])?this[e]():this},Dn.invalidAt=function(){return f(this).overflow},Dn.isAfter=function(e,t){var n=v(e)?e:Nt(e);return!(!this.isValid()||!n.isValid())&&("millisecond"===(t=V(t)||"millisecond")?this.valueOf()>n.valueOf():n.valueOf()<this.clone().startOf(t).valueOf())},Dn.isBefore=function(e,t){var n=v(e)?e:Nt(e);return!(!this.isValid()||!n.isValid())&&("millisecond"===(t=V(t)||"millisecond")?this.valueOf()<n.valueOf():this.clone().endOf(t).valueOf()<n.valueOf())},Dn.isBetween=function(e,t,n,s){var i=v(e)?e:Nt(e),r=v(t)?t:Nt(t);return!!(this.isValid()&&i.isValid()&&r.isValid())&&("("===(s=s||"()")[0]?this.isAfter(i,n):!this.isBefore(i,n))&&(")"===s[1]?this.isBefore(r,n):!this.isAfter(r,n))},Dn.isSame=function(e,t){var n,s=v(e)?e:Nt(e);return!(!this.isValid()||!s.isValid())&&("millisecond"===(t=V(t)||"millisecond")?this.valueOf()===s.valueOf():(n=s.valueOf(),this.clone().startOf(t).valueOf()<=n&&n<=this.clone().endOf(t).valueOf()))},Dn.isSameOrAfter=function(e,t){return this.isSame(e,t)||this.isAfter(e,t)},Dn.isSameOrBefore=function(e,t){return this.isSame(e,t)||this.isBefore(e,t)},Dn.isValid=function(){return m(this)},Dn.lang=sn,Dn.locale=nn,Dn.localeData=rn,Dn.max=Rt,Dn.min=Pt,Dn.parsingFlags=function(){return d({},f(this))},Dn.set=function(e,t){if("object"==typeof e){var n,s=function(e){var t,n=[];for(t in e)r(e,t)&&n.push({unit:t,priority:E[t]});return n.sort(function(e,t){return e.priority-t.priority}),n}(e=G(e));for(n=0;n<s.length;n++)this[s[n].unit](e[s[n].unit])}else if(O(this[e=V(e)]))return this[e](t);return this},Dn.startOf=function(e){var t,s;if(void 0===(e=V(e))||"millisecond"===e||!this.isValid())return this;switch(s=this._isUTC?cn:dn,e){case"year":t=s(this.year(),0,1);break;case"quarter":t=s(this.year(),this.month()-this.month()%3,1);break;case"month":t=s(this.year(),this.month(),1);break;case"week":t=s(this.year(),this.month(),this.date()-this.weekday());break;case"isoWeek":t=s(this.year(),this.month(),this.date()-(this.isoWeekday()-1));break;case"day":case"date":t=s(this.year(),this.month(),this.date());break;case"hour":t=this._d.valueOf(),t-=hn(t+(this._isUTC?0:this.utcOffset()*on),un);break;case"minute":t=this._d.valueOf(),t-=hn(t,on);break;case"second":t=this._d.valueOf(),t-=hn(t,an)}return this._d.setTime(t),n.updateOffset(this,!0),this},Dn.subtract=Xt,Dn.toArray=function(){var e=this;return[e.year(),e.month(),e.date(),e.hour(),e.minute(),e.second(),e.millisecond()]},Dn.toObject=function(){var e=this;return{years:e.year(),months:e.month(),date:e.date(),hours:e.hours(),minutes:e.minutes(),seconds:e.seconds(),milliseconds:e.milliseconds()}},Dn.toDate=function(){return new Date(this.valueOf())},Dn.toISOString=function(e){if(!this.isValid())return null;var t=!0!==e,n=t?this.clone().utc():this;return n.year()<0||n.year()>9999?U(n,t?"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYYYY-MM-DD[T]HH:mm:ss.SSSZ"):O(Date.prototype.toISOString)?t?this.toDate().toISOString():new Date(this.valueOf()+60*this.utcOffset()*1e3).toISOString().replace("Z",U(n,"Z")):U(n,t?"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYY-MM-DD[T]HH:mm:ss.SSSZ")},Dn.inspect=function(){if(!this.isValid())return"moment.invalid(/* "+this._i+" */)";var e,t,n,s="moment",i="";return this.isLocal()||(s=0===this.utcOffset()?"moment.utc":"moment.parseZone",i="Z"),e="["+s+'("]',t=0<=this.year()&&this.year()<=9999?"YYYY":"YYYYYY",n=i+'[")]',this.format(e+t+"-MM-DD[T]HH:mm:ss.SSS"+n)},"undefined"!=typeof Symbol&&null!=Symbol.for&&(Dn[Symbol.for("nodejs.util.inspect.custom")]=function(){return"Moment<"+this.format()+">"}),Dn.toJSON=function(){return this.isValid()?this.toISOString():null},Dn.toString=function(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")},Dn.unix=function(){return Math.floor(this.valueOf()/1e3)},Dn.valueOf=function(){return this._d.valueOf()-6e4*(this._offset||0)},Dn.creationData=function(){return{input:this._i,format:this._f,locale:this._locale,isUTC:this._isUTC,strict:this._strict}},Dn.eraName=function(){var e,t,n,s=this.localeData().eras();for(e=0,t=s.length;e<t;++e){if(n=this.clone().startOf("day").valueOf(),s[e].since<=n&&n<=s[e].until)return s[e].name;if(s[e].until<=n&&n<=s[e].since)return s[e].name}return""},Dn.eraNarrow=function(){var e,t,n,s=this.localeData().eras();for(e=0,t=s.length;e<t;++e){if(n=this.clone().startOf("day").valueOf(),s[e].since<=n&&n<=s[e].until)return s[e].narrow;if(s[e].until<=n&&n<=s[e].since)return s[e].narrow}return""},Dn.eraAbbr=function(){var e,t,n,s=this.localeData().eras();for(e=0,t=s.length;e<t;++e){if(n=this.clone().startOf("day").valueOf(),s[e].since<=n&&n<=s[e].until)return s[e].abbr;if(s[e].until<=n&&n<=s[e].since)return s[e].abbr}return""},Dn.eraYear=function(){var e,t,s,i,r=this.localeData().eras();for(e=0,t=r.length;e<t;++e)if(s=r[e].since<=r[e].until?1:-1,i=this.clone().startOf("day").valueOf(),r[e].since<=i&&i<=r[e].until||r[e].until<=i&&i<=r[e].since)return(this.year()-n(r[e].since).year())*s+r[e].offset;return this.year()},Dn.year=Ve,Dn.isLeapYear=function(){return j(this.year())},Dn.weekYear=function(e){return yn.call(this,e,this.week(),this.weekday(),this.localeData()._week.dow,this.localeData()._week.doy)},Dn.isoWeekYear=function(e){return yn.call(this,e,this.isoWeek(),this.isoWeekday(),1,4)},Dn.quarter=Dn.quarters=function(e){return null==e?Math.ceil((this.month()+1)/3):this.month(3*(e-1)+this.month()%3)},Dn.month=He,Dn.daysInMonth=function(){return Te(this.year(),this.month())},Dn.week=Dn.weeks=function(e){var t=this.localeData().week(this);return null==e?t:this.add(7*(e-t),"d")},Dn.isoWeek=Dn.isoWeeks=function(e){var t=je(this,1,4).week;return null==e?t:this.add(7*(e-t),"d")},Dn.weeksInYear=function(){var e=this.localeData()._week;return Ie(this.year(),e.dow,e.doy)},Dn.weeksInWeekYear=function(){var e=this.localeData()._week;return Ie(this.weekYear(),e.dow,e.doy)},Dn.isoWeeksInYear=function(){return Ie(this.year(),1,4)},Dn.isoWeeksInISOWeekYear=function(){return Ie(this.isoWeekYear(),1,4)},Dn.date=gn,Dn.day=Dn.days=function(e){if(!this.isValid())return null!=e?this:NaN;var t=this._isUTC?this._d.getUTCDay():this._d.getDay();return null!=e?(e=function(e,t){return"string"!=typeof e?e:isNaN(e)?"number"==typeof(e=t.weekdaysParse(e))?e:null:parseInt(e,10)}(e,this.localeData()),this.add(e-t,"d")):t},Dn.weekday=function(e){if(!this.isValid())return null!=e?this:NaN;var t=(this.day()+7-this.localeData()._week.dow)%7;return null==e?t:this.add(e-t,"d")},Dn.isoWeekday=function(e){if(!this.isValid())return null!=e?this:NaN;if(null!=e){var t=function(e,t){return"string"==typeof e?t.weekdaysParse(e)%7||7:isNaN(e)?null:e}(e,this.localeData());return this.day(this.day()%7?t:t-7)}return this.day()||7},Dn.dayOfYear=function(e){var t=Math.round((this.clone().startOf("day")-this.clone().startOf("year"))/864e5)+1;return null==e?t:this.add(e-t,"d")},Dn.hour=Dn.hours=nt,Dn.minute=Dn.minutes=wn,Dn.second=Dn.seconds=kn,Dn.millisecond=Dn.milliseconds=vn,Dn.utcOffset=function(e,t,s){var i,r=this._offset||0;if(!this.isValid())return null!=e?this:NaN;if(null!=e){if("string"==typeof e){if(null===(e=Gt(he,e)))return this}else Math.abs(e)<16&&!s&&(e*=60);return!this._isUTC&&t&&(i=At(this)),this._offset=e,this._isUTC=!0,null!=i&&this.add(i,"m"),r!==e&&(!t||this._changeInProgress?Jt(this,zt(e-r,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,n.updateOffset(this,!0),this._changeInProgress=null)),this}return this._isUTC?r:At(this)},Dn.utc=function(e){return this.utcOffset(0,e)},Dn.local=function(e){return this._isUTC&&(this.utcOffset(0,e),this._isUTC=!1,e&&this.subtract(At(this),"m")),this},Dn.parseZone=function(){if(null!=this._tzm)this.utcOffset(this._tzm,!1,!0);else if("string"==typeof this._i){var e=Gt(le,this._i);null!=e?this.utcOffset(e):this.utcOffset(0,!0)}return this},Dn.hasAlignedHourOffset=function(e){return!!this.isValid()&&(e=e?Nt(e).utcOffset():0,(this.utcOffset()-e)%60==0)},Dn.isDST=function(){return this.utcOffset()>this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()},Dn.isLocal=function(){return!!this.isValid()&&!this._isUTC},Dn.isUtcOffset=function(){return!!this.isValid()&&this._isUTC},Dn.isUtc=jt,Dn.isUTC=jt,Dn.zoneAbbr=function(){return this._isUTC?"UTC":""},Dn.zoneName=function(){return this._isUTC?"Coordinated Universal Time":""},Dn.dates=M("dates accessor is deprecated. Use date instead.",gn),Dn.months=M("months accessor is deprecated. Use month instead",He),Dn.years=M("years accessor is deprecated. Use year instead",Ve),Dn.zone=M("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/",function(e,t){return null!=e?("string"!=typeof e&&(e=-e),this.utcOffset(e,t),this):-this.utcOffset()}),Dn.isDSTShifted=M("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information",function(){if(!o(this._isDSTShifted))return this._isDSTShifted;var e,t={};return w(t,this),(t=xt(t))._a?(e=t._isUTC?c(t._a):Nt(t._a),this._isDSTShifted=this.isValid()&&function(e,t,n){var s,i=Math.min(e.length,t.length),r=Math.abs(e.length-t.length),a=0;for(s=0;s<i;s++)(n&&e[s]!==t[s]||!n&&Z(e[s])!==Z(t[s]))&&a++;return a+r}(t._a,e.toArray())>0):this._isDSTShifted=!1,this._isDSTShifted});var Yn=x.prototype;function On(e,t,n,s){var i=ct(),r=c().set(s,t);return i[n](r,e)}function bn(e,t,n){if(u(e)&&(t=e,e=void 0),e=e||"",null!=t)return On(e,t,n,"month");var s,i=[];for(s=0;s<12;s++)i[s]=On(e,s,n,"month");return i}function xn(e,t,n,s){"boolean"==typeof e?(u(t)&&(n=t,t=void 0),t=t||""):(n=t=e,e=!1,u(t)&&(n=t,t=void 0),t=t||"");var i,r=ct(),a=e?r._week.dow:0,o=[];if(null!=n)return On(t,(n+a)%7,s,"day");for(i=0;i<7;i++)o[i]=On(t,(i+a)%7,s,"day");return o}Yn.calendar=function(e,t,n){var s=this._calendar[e]||this._calendar.sameElse;return O(s)?s.call(t,n):s},Yn.longDateFormat=function(e){var t=this._longDateFormat[e],n=this._longDateFormat[e.toUpperCase()];return t||!n?t:(this._longDateFormat[e]=n.match(N).map(function(e){return"MMMM"===e||"MM"===e||"DD"===e||"dddd"===e?e.slice(1):e}).join(""),this._longDateFormat[e])},Yn.invalidDate=function(){return this._invalidDate},Yn.ordinal=function(e){return this._ordinal.replace("%d",e)},Yn.preparse=Sn,Yn.postformat=Sn,Yn.relativeTime=function(e,t,n,s){var i=this._relativeTime[n];return O(i)?i(e,t,n,s):i.replace(/%d/i,e)},Yn.pastFuture=function(e,t){var n=this._relativeTime[e>0?"future":"past"];return O(n)?n(t):n.replace(/%s/i,t)},Yn.set=function(e){var t,n;for(n in e)r(e,n)&&(O(t=e[n])?this[n]=t:this["_"+n]=t);this._config=e,this._dayOfMonthOrdinalParseLenient=new RegExp((this._dayOfMonthOrdinalParse.source||this._ordinalParse.source)+"|"+/\d{1,2}/.source)},Yn.eras=function(e,t){var s,i,r,a=this._eras||ct("en")._eras;for(s=0,i=a.length;s<i;++s){switch(typeof a[s].since){case"string":r=n(a[s].since).startOf("day"),a[s].since=r.valueOf()}switch(typeof a[s].until){case"undefined":a[s].until=1/0;break;case"string":r=n(a[s].until).startOf("day").valueOf(),a[s].until=r.valueOf()}}return a},Yn.erasParse=function(e,t,n){var s,i,r,a,o,u=this.eras();for(e=e.toUpperCase(),s=0,i=u.length;s<i;++s)if(r=u[s].name.toUpperCase(),a=u[s].abbr.toUpperCase(),o=u[s].narrow.toUpperCase(),n)switch(t){case"N":case"NN":case"NNN":if(a===e)return u[s];break;case"NNNN":if(r===e)return u[s];break;case"NNNNN":if(o===e)return u[s]}else if([r,a,o].indexOf(e)>=0)return u[s]},Yn.erasConvertYear=function(e,t){var s=e.since<=e.until?1:-1;return void 0===t?n(e.since).year():n(e.since).year()+(t-e.offset)*s},Yn.erasAbbrRegex=function(e){return r(this,"_erasAbbrRegex")||mn.call(this),e?this._erasAbbrRegex:this._erasRegex},Yn.erasNameRegex=function(e){return r(this,"_erasNameRegex")||mn.call(this),e?this._erasNameRegex:this._erasRegex},Yn.erasNarrowRegex=function(e){return r(this,"_erasNarrowRegex")||mn.call(this),e?this._erasNarrowRegex:this._erasRegex},Yn.months=function(e,t){return e?s(this._months)?this._months[e.month()]:this._months[(this._months.isFormat||Re).test(t)?"format":"standalone"][e.month()]:s(this._months)?this._months:this._months.standalone},Yn.monthsShort=function(e,t){return e?s(this._monthsShort)?this._monthsShort[e.month()]:this._monthsShort[Re.test(t)?"format":"standalone"][e.month()]:s(this._monthsShort)?this._monthsShort:this._monthsShort.standalone},Yn.monthsParse=function(e,t,n){var s,i,r;if(this._monthsParseExact)return function(e,t,n){var s,i,r,a=e.toLocaleLowerCase();if(!this._monthsParse)for(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[],s=0;s<12;++s)r=c([2e3,s]),this._shortMonthsParse[s]=this.monthsShort(r,"").toLocaleLowerCase(),this._longMonthsParse[s]=this.months(r,"").toLocaleLowerCase();return n?"MMM"===t?-1!==(i=pe.call(this._shortMonthsParse,a))?i:null:-1!==(i=pe.call(this._longMonthsParse,a))?i:null:"MMM"===t?-1!==(i=pe.call(this._shortMonthsParse,a))?i:-1!==(i=pe.call(this._longMonthsParse,a))?i:null:-1!==(i=pe.call(this._longMonthsParse,a))?i:-1!==(i=pe.call(this._shortMonthsParse,a))?i:null}.call(this,e,t,n);for(this._monthsParse||(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[]),s=0;s<12;s++){if(i=c([2e3,s]),n&&!this._longMonthsParse[s]&&(this._longMonthsParse[s]=new RegExp("^"+this.months(i,"").replace(".","")+"$","i"),this._shortMonthsParse[s]=new RegExp("^"+this.monthsShort(i,"").replace(".","")+"$","i")),n||this._monthsParse[s]||(r="^"+this.months(i,"")+"|^"+this.monthsShort(i,""),this._monthsParse[s]=new RegExp(r.replace(".",""),"i")),n&&"MMMM"===t&&this._longMonthsParse[s].test(e))return s;if(n&&"MMM"===t&&this._shortMonthsParse[s].test(e))return s;if(!n&&this._monthsParse[s].test(e))return s}},Yn.monthsRegex=function(e){return this._monthsParseExact?(r(this,"_monthsRegex")||Fe.call(this),e?this._monthsStrictRegex:this._monthsRegex):(r(this,"_monthsRegex")||(this._monthsRegex=Ce),this._monthsStrictRegex&&e?this._monthsStrictRegex:this._monthsRegex)},Yn.monthsShortRegex=function(e){return this._monthsParseExact?(r(this,"_monthsRegex")||Fe.call(this),e?this._monthsShortStrictRegex:this._monthsShortRegex):(r(this,"_monthsShortRegex")||(this._monthsShortRegex=We),this._monthsShortStrictRegex&&e?this._monthsShortStrictRegex:this._monthsShortRegex)},Yn.week=function(e){return je(e,this._week.dow,this._week.doy).week},Yn.firstDayOfYear=function(){return this._week.doy},Yn.firstDayOfWeek=function(){return this._week.dow},Yn.weekdays=function(e,t){var n=s(this._weekdays)?this._weekdays:this._weekdays[e&&!0!==e&&this._weekdays.isFormat.test(t)?"format":"standalone"];return!0===e?Ze(n,this._week.dow):e?n[e.day()]:n},Yn.weekdaysMin=function(e){return!0===e?Ze(this._weekdaysMin,this._week.dow):e?this._weekdaysMin[e.day()]:this._weekdaysMin},Yn.weekdaysShort=function(e){return!0===e?Ze(this._weekdaysShort,this._week.dow):e?this._weekdaysShort[e.day()]:this._weekdaysShort},Yn.weekdaysParse=function(e,t,n){var s,i,r;if(this._weekdaysParseExact)return function(e,t,n){var s,i,r,a=e.toLocaleLowerCase();if(!this._weekdaysParse)for(this._weekdaysParse=[],this._shortWeekdaysParse=[],this._minWeekdaysParse=[],s=0;s<7;++s)r=c([2e3,1]).day(s),this._minWeekdaysParse[s]=this.weekdaysMin(r,"").toLocaleLowerCase(),this._shortWeekdaysParse[s]=this.weekdaysShort(r,"").toLocaleLowerCase(),this._weekdaysParse[s]=this.weekdays(r,"").toLocaleLowerCase();return n?"dddd"===t?-1!==(i=pe.call(this._weekdaysParse,a))?i:null:"ddd"===t?-1!==(i=pe.call(this._shortWeekdaysParse,a))?i:null:-1!==(i=pe.call(this._minWeekdaysParse,a))?i:null:"dddd"===t?-1!==(i=pe.call(this._weekdaysParse,a))?i:-1!==(i=pe.call(this._shortWeekdaysParse,a))?i:-1!==(i=pe.call(this._minWeekdaysParse,a))?i:null:"ddd"===t?-1!==(i=pe.call(this._shortWeekdaysParse,a))?i:-1!==(i=pe.call(this._weekdaysParse,a))?i:-1!==(i=pe.call(this._minWeekdaysParse,a))?i:null:-1!==(i=pe.call(this._minWeekdaysParse,a))?i:-1!==(i=pe.call(this._weekdaysParse,a))?i:-1!==(i=pe.call(this._shortWeekdaysParse,a))?i:null}.call(this,e,t,n);for(this._weekdaysParse||(this._weekdaysParse=[],this._minWeekdaysParse=[],this._shortWeekdaysParse=[],this._fullWeekdaysParse=[]),s=0;s<7;s++){if(i=c([2e3,1]).day(s),n&&!this._fullWeekdaysParse[s]&&(this._fullWeekdaysParse[s]=new RegExp("^"+this.weekdays(i,"").replace(".","\\.?")+"$","i"),this._shortWeekdaysParse[s]=new RegExp("^"+this.weekdaysShort(i,"").replace(".","\\.?")+"$","i"),this._minWeekdaysParse[s]=new RegExp("^"+this.weekdaysMin(i,"").replace(".","\\.?")+"$","i")),this._weekdaysParse[s]||(r="^"+this.weekdays(i,"")+"|^"+this.weekdaysShort(i,"")+"|^"+this.weekdaysMin(i,""),this._weekdaysParse[s]=new RegExp(r.replace(".",""),"i")),n&&"dddd"===t&&this._fullWeekdaysParse[s].test(e))return s;if(n&&"ddd"===t&&this._shortWeekdaysParse[s].test(e))return s;if(n&&"dd"===t&&this._minWeekdaysParse[s].test(e))return s;if(!n&&this._weekdaysParse[s].test(e))return s}},Yn.weekdaysRegex=function(e){return this._weekdaysParseExact?(r(this,"_weekdaysRegex")||Xe.call(this),e?this._weekdaysStrictRegex:this._weekdaysRegex):(r(this,"_weekdaysRegex")||(this._weekdaysRegex=Be),this._weekdaysStrictRegex&&e?this._weekdaysStrictRegex:this._weekdaysRegex)},Yn.weekdaysShortRegex=function(e){return this._weekdaysParseExact?(r(this,"_weekdaysRegex")||Xe.call(this),e?this._weekdaysShortStrictRegex:this._weekdaysShortRegex):(r(this,"_weekdaysShortRegex")||(this._weekdaysShortRegex=Je),this._weekdaysShortStrictRegex&&e?this._weekdaysShortStrictRegex:this._weekdaysShortRegex)},Yn.weekdaysMinRegex=function(e){return this._weekdaysParseExact?(r(this,"_weekdaysRegex")||Xe.call(this),e?this._weekdaysMinStrictRegex:this._weekdaysMinRegex):(r(this,"_weekdaysMinRegex")||(this._weekdaysMinRegex=Qe),this._weekdaysMinStrictRegex&&e?this._weekdaysMinStrictRegex:this._weekdaysMinRegex)},Yn.isPM=function(e){return"p"===(e+"").toLowerCase().charAt(0)},Yn.meridiem=function(e,t,n){return e>11?n?"pm":"PM":n?"am":"AM"},ht("en",{eras:[{since:"0001-01-01",until:1/0,offset:1,name:"Anno Domini",narrow:"AD",abbr:"AD"},{since:"0000-12-31",until:-1/0,offset:1,name:"Before Christ",narrow:"BC",abbr:"BC"}],dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(e){var t=e%10;return e+(1===Z(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")}}),n.lang=M("moment.lang is deprecated. Use moment.locale instead.",ht),n.langData=M("moment.langData is deprecated. Use moment.localeData instead.",ct);var Tn=Math.abs;function Nn(e,t,n,s){var i=zt(t,n);return e._milliseconds+=s*i._milliseconds,e._days+=s*i._days,e._months+=s*i._months,e._bubble()}function Pn(e){return e<0?Math.floor(e):Math.ceil(e)}function Rn(e){return 4800*e/146097}function Wn(e){return 146097*e/4800}function Cn(e){return function(){return this.as(e)}}var Un=Cn("ms"),Hn=Cn("s"),Fn=Cn("m"),Ln=Cn("h"),Vn=Cn("d"),Gn=Cn("w"),En=Cn("M"),An=Cn("Q"),jn=Cn("y");function In(e){return function(){return this.isValid()?this._data[e]:NaN}}var Zn=In("milliseconds"),zn=In("seconds"),$n=In("minutes"),qn=In("hours"),Bn=In("days"),Jn=In("months"),Qn=In("years");var Xn=Math.round,Kn={ss:44,s:45,m:45,h:22,d:26,w:null,M:11};var es=Math.abs;function ts(e){return(e>0)-(e<0)||+e}function ns(){if(!this.isValid())return this.localeData().invalidDate();var e,t,n,s,i,r,a,o,u=es(this._milliseconds)/1e3,l=es(this._days),h=es(this._months),d=this.asSeconds();return d?(e=I(u/60),t=I(e/60),u%=60,e%=60,n=I(h/12),h%=12,s=u?u.toFixed(3).replace(/\.?0+$/,""):"",i=d<0?"-":"",r=ts(this._months)!==ts(d)?"-":"",a=ts(this._days)!==ts(d)?"-":"",o=ts(this._milliseconds)!==ts(d)?"-":"",i+"P"+(n?r+n+"Y":"")+(h?r+h+"M":"")+(l?a+l+"D":"")+(t||e||u?"T":"")+(t?o+t+"H":"")+(e?o+e+"M":"")+(u?o+s+"S":"")):"P0D"}var ss=Ut.prototype;return ss.isValid=function(){return this._isValid},ss.abs=function(){var e=this._data;return this._milliseconds=Tn(this._milliseconds),this._days=Tn(this._days),this._months=Tn(this._months),e.milliseconds=Tn(e.milliseconds),e.seconds=Tn(e.seconds),e.minutes=Tn(e.minutes),e.hours=Tn(e.hours),e.months=Tn(e.months),e.years=Tn(e.years),this},ss.add=function(e,t){return Nn(this,e,t,1)},ss.subtract=function(e,t){return Nn(this,e,t,-1)},ss.as=function(e){if(!this.isValid())return NaN;var t,n,s=this._milliseconds;if("month"===(e=V(e))||"quarter"===e||"year"===e)switch(t=this._days+s/864e5,n=this._months+Rn(t),e){case"month":return n;case"quarter":return n/3;case"year":return n/12}else switch(t=this._days+Math.round(Wn(this._months)),e){case"week":return t/7+s/6048e5;case"day":return t+s/864e5;case"hour":return 24*t+s/36e5;case"minute":return 1440*t+s/6e4;case"second":return 86400*t+s/1e3;case"millisecond":return Math.floor(864e5*t)+s;default:throw new Error("Unknown unit "+e)}},ss.asMilliseconds=Un,ss.asSeconds=Hn,ss.asMinutes=Fn,ss.asHours=Ln,ss.asDays=Vn,ss.asWeeks=Gn,ss.asMonths=En,ss.asQuarters=An,ss.asYears=jn,ss.valueOf=function(){return this.isValid()?this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*Z(this._months/12):NaN},ss._bubble=function(){var e,t,n,s,i,r=this._milliseconds,a=this._days,o=this._months,u=this._data;return r>=0&&a>=0&&o>=0||r<=0&&a<=0&&o<=0||(r+=864e5*Pn(Wn(o)+a),a=0,o=0),u.milliseconds=r%1e3,e=I(r/1e3),u.seconds=e%60,t=I(e/60),u.minutes=t%60,n=I(t/60),u.hours=n%24,a+=I(n/24),o+=i=I(Rn(a)),a-=Pn(Wn(i)),s=I(o/12),o%=12,u.days=a,u.months=o,u.years=s,this},ss.clone=function(){return zt(this)},ss.get=function(e){return e=V(e),this.isValid()?this[e+"s"]():NaN},ss.milliseconds=Zn,ss.seconds=zn,ss.minutes=$n,ss.hours=qn,ss.days=Bn,ss.weeks=function(){return I(this.days()/7)},ss.months=Jn,ss.years=Qn,ss.humanize=function(e,t){if(!this.isValid())return this.localeData().invalidDate();var n,s,i=!1,r=Kn;return"object"==typeof e&&(t=e,e=!1),"boolean"==typeof e&&(i=e),"object"==typeof t&&(r=Object.assign({},Kn,t),null!=t.s&&null==t.ss&&(r.ss=t.s-1)),s=function(e,t,n,s){var i=zt(e).abs(),r=Xn(i.as("s")),a=Xn(i.as("m")),o=Xn(i.as("h")),u=Xn(i.as("d")),l=Xn(i.as("M")),h=Xn(i.as("w")),d=Xn(i.as("y")),c=r<=n.ss&&["s",r]||r<n.s&&["ss",r]||a<=1&&["m"]||a<n.m&&["mm",a]||o<=1&&["h"]||o<n.h&&["hh",o]||u<=1&&["d"]||u<n.d&&["dd",u];return null!=n.w&&(c=c||h<=1&&["w"]||h<n.w&&["ww",h]),(c=c||l<=1&&["M"]||l<n.M&&["MM",l]||d<=1&&["y"]||["yy",d])[2]=t,c[3]=+e>0,c[4]=s,function(e,t,n,s,i){return i.relativeTime(t||1,!!n,e,s)}.apply(null,c)}(this,!i,r,n=this.localeData()),i&&(s=n.pastFuture(+this,s)),n.postformat(s)},ss.toISOString=ns,ss.toString=ns,ss.toJSON=ns,ss.locale=nn,ss.localeData=rn,ss.toIsoString=M("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",ns),ss.lang=sn,C("X",0,0,"unix"),C("x",0,0,"valueOf"),ce("x",ue),ce("X",/[+-]?\d+(\.\d{1,3})?/),ye("X",function(e,t,n){n._d=new Date(1e3*parseFloat(e))}),ye("x",function(e,t,n){n._d=new Date(Z(e))}),n.version="2.29.1",e=Nt,n.fn=Dn,n.min=function(){return Wt("isBefore",[].slice.call(arguments,0))},n.max=function(){return Wt("isAfter",[].slice.call(arguments,0))},n.now=function(){return Date.now?Date.now():+new Date},n.utc=c,n.unix=function(e){return Nt(1e3*e)},n.months=function(e,t){return bn(e,t,"months")},n.isDate=l,n.locale=ht,n.invalid=_,n.duration=zt,n.isMoment=v,n.weekdays=function(e,t,n){return xn(e,t,n,"weekdays")},n.parseZone=function(){return Nt.apply(null,arguments).parseZone()},n.localeData=ct,n.isDuration=Ht,n.monthsShort=function(e,t){return bn(e,t,"monthsShort")},n.weekdaysMin=function(e,t,n){return xn(e,t,n,"weekdaysMin")},n.defineLocale=dt,n.updateLocale=function(e,t){if(null!=t){var n,s,i=it;null!=rt[e]&&null!=rt[e].parentLocale?rt[e].set(b(rt[e]._config,t)):(null!=(s=lt(e))&&(i=s._config),t=b(i,t),null==s&&(t.abbr=e),(n=new x(t)).parentLocale=rt[e],rt[e]=n),ht(e)}else null!=rt[e]&&(null!=rt[e].parentLocale?(rt[e]=rt[e].parentLocale,e===ht()&&ht(e)):null!=rt[e]&&delete rt[e]);return rt[e]},n.locales=function(){return D(rt)},n.weekdaysShort=function(e,t,n){return xn(e,t,n,"weekdaysShort")},n.normalizeUnits=V,n.relativeTimeRounding=function(e){return void 0===e?Xn:"function"==typeof e&&(Xn=e,!0)},n.relativeTimeThreshold=function(e,t){return void 0!==Kn[e]&&(void 0===t?Kn[e]:(Kn[e]=t,"s"===e&&(Kn.ss=t-1),!0))},n.calendarFormat=function(e,t){var n=e.diff(t,"days",!0);return n<-6?"sameElse":n<-1?"lastWeek":n<0?"lastDay":n<1?"sameDay":n<2?"nextDay":n<7?"nextWeek":"sameElse"},n.prototype=Dn,n.HTML5_FMT={DATETIME_LOCAL:"YYYY-MM-DDTHH:mm",DATETIME_LOCAL_SECONDS:"YYYY-MM-DDTHH:mm:ss",DATETIME_LOCAL_MS:"YYYY-MM-DDTHH:mm:ss.SSS",DATE:"YYYY-MM-DD",TIME:"HH:mm",TIME_SECONDS:"HH:mm:ss",TIME_MS:"HH:mm:ss.SSS",WEEK:"GGGG-[W]WW",MONTH:"YYYY-MM"},n});
+},{}],"F7mU":[function(require,module,exports) {
+var define;
+var global = arguments[3];
+var e,t=arguments[3];function u(e){return(u="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}!function(t,n){"object"===("undefined"==typeof exports?"undefined":u(exports))&&"undefined"!=typeof module?module.exports=n():"function"==typeof e&&e.amd?e(n):(t="undefined"!=typeof globalThis?globalThis:t||self).marked=n()}(this,function(){"use strict";function e(e,t){for(var u=0;u<t.length;u++){var n=t[u];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}function t(e,t){(null==t||t>e.length)&&(t=e.length);for(var u=0,n=new Array(t);u<t;u++)n[u]=e[u];return n}function u(e,u){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(n)return(n=n.call(e)).next.bind(n);if(Array.isArray(e)||(n=function(e,u){if(e){if("string"==typeof e)return t(e,u);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?t(e,u):void 0}}(e))||u&&e&&"number"==typeof e.length){n&&(e=n);var r=0;return function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var n={exports:{}};function r(){return{baseUrl:null,breaks:!1,extensions:null,gfm:!0,headerIds:!0,headerPrefix:"",highlight:null,langPrefix:"language-",mangle:!0,pedantic:!1,renderer:null,sanitize:!1,sanitizer:null,silent:!1,smartLists:!1,smartypants:!1,tokenizer:null,walkTokens:null,xhtml:!1}}n.exports={defaults:{baseUrl:null,breaks:!1,extensions:null,gfm:!0,headerIds:!0,headerPrefix:"",highlight:null,langPrefix:"language-",mangle:!0,pedantic:!1,renderer:null,sanitize:!1,sanitizer:null,silent:!1,smartLists:!1,smartypants:!1,tokenizer:null,walkTokens:null,xhtml:!1},getDefaults:r,changeDefaults:function(e){n.exports.defaults=e}};var i=/[&<>"']/,s=/[&<>"']/g,l=/[<>"']|&(?!#?\w+;)/,a=/[<>"']|&(?!#?\w+;)/g,o={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"},D=function(e){return o[e]};var c=/&(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/gi;function h(e){return e.replace(c,function(e,t){return"colon"===(t=t.toLowerCase())?":":"#"===t.charAt(0)?"x"===t.charAt(1)?String.fromCharCode(parseInt(t.substring(2),16)):String.fromCharCode(+t.substring(1)):""})}var p=/(^|[^\[])\^/g;var f=/[^\w:]/g,g=/^$|^[a-z][a-z0-9+.-]*:|^[?#]/i;var F={},A=/^[^:]+:\/*[^/]*$/,d=/^([^:]+:)[\s\S]*$/,C=/^([^:]+:\/*[^/]*)[\s\S]*$/;function k(e,t){F[" "+e]||(A.test(e)?F[" "+e]=e+"/":F[" "+e]=E(e,"/",!0));var u=-1===(e=F[" "+e]).indexOf(":");return"//"===t.substring(0,2)?u?t:e.replace(d,"$1")+t:"/"===t.charAt(0)?u?t:e.replace(C,"$1")+t:e+t}function E(e,t,u){var n=e.length;if(0===n)return"";for(var r=0;r<n;){var i=e.charAt(n-r-1);if(i!==t||u){if(i===t||!u)break;r++}else r++}return e.substr(0,n-r)}var x=function(e,t){if(t){if(i.test(e))return e.replace(s,D)}else if(l.test(e))return e.replace(a,D);return e},m=h,b=function(e,t){e=e.source||e,t=t||"";var u={replace:function(t,n){return n=(n=n.source||n).replace(p,"$1"),e=e.replace(t,n),u},getRegex:function(){return new RegExp(e,t)}};return u},B=function(e,t,u){if(e){var n;try{n=decodeURIComponent(h(u)).replace(f,"").toLowerCase()}catch(r){return null}if(0===n.indexOf("javascript:")||0===n.indexOf("vbscript:")||0===n.indexOf("data:"))return null}t&&!g.test(u)&&(u=k(t,u));try{u=encodeURI(u).replace(/%25/g,"%")}catch(r){return null}return u},w={exec:function(){}},v=function(e){for(var t,u,n=1;n<arguments.length;n++)for(u in t=arguments[n])Object.prototype.hasOwnProperty.call(t,u)&&(e[u]=t[u]);return e},y=function(e,t){var u=e.replace(/\|/g,function(e,t,u){for(var n=!1,r=t;--r>=0&&"\\"===u[r];)n=!n;return n?"|":" |"}).split(/ \|/),n=0;if(u[0].trim()||u.shift(),u[u.length-1].trim()||u.pop(),u.length>t)u.splice(t);else for(;u.length<t;)u.push("");for(;n<u.length;n++)u[n]=u[n].trim().replace(/\\\|/g,"|");return u},_=E,z=function(e,t){if(-1===e.indexOf(t[1]))return-1;for(var u=e.length,n=0,r=0;r<u;r++)if("\\"===e[r])r++;else if(e[r]===t[0])n++;else if(e[r]===t[1]&&--n<0)return r;return-1},S=function(e){e&&e.sanitize&&!e.silent&&console.warn("marked(): sanitize and sanitizer parameters are deprecated since version 0.7.0, should not be used and will be removed in the future. Read more here: https://marked.js.org/#/USING_ADVANCED.md#options")},$=function(e,t){if(t<1)return"";for(var u="";t>1;)1&t&&(u+=e),t>>=1,e+=e;return u+e},T=n.exports.defaults,R=_,I=y,Z=x,q=z;function O(e,t,u,n){var r=t.href,i=t.title?Z(t.title):null,s=e[1].replace(/\\([\[\]])/g,"$1");if("!"!==e[0].charAt(0)){n.state.inLink=!0;var l={type:"link",raw:u,href:r,title:i,text:s,tokens:n.inlineTokens(s,[])};return n.state.inLink=!1,l}return{type:"image",raw:u,href:r,title:i,text:Z(s)}}var L=function(){function e(e){this.options=e||T}var t=e.prototype;return t.space=function(e){var t=this.rules.block.newline.exec(e);if(t)return t[0].length>1?{type:"space",raw:t[0]}:{raw:"\n"}},t.code=function(e){var t=this.rules.block.code.exec(e);if(t){var u=t[0].replace(/^ {1,4}/gm,"");return{type:"code",raw:t[0],codeBlockStyle:"indented",text:this.options.pedantic?u:R(u,"\n")}}},t.fences=function(e){var t=this.rules.block.fences.exec(e);if(t){var u=t[0],n=function(e,t){var u=e.match(/^(\s+)(?:```)/);if(null===u)return t;var n=u[1];return t.split("\n").map(function(e){var t=e.match(/^\s+/);return null===t?e:t[0].length>=n.length?e.slice(n.length):e}).join("\n")}(u,t[3]||"");return{type:"code",raw:u,lang:t[2]?t[2].trim():t[2],text:n}}},t.heading=function(e){var t=this.rules.block.heading.exec(e);if(t){var u=t[2].trim();if(/#$/.test(u)){var n=R(u,"#");this.options.pedantic?u=n.trim():n&&!/ $/.test(n)||(u=n.trim())}var r={type:"heading",raw:t[0],depth:t[1].length,text:u,tokens:[]};return this.lexer.inline(r.text,r.tokens),r}},t.hr=function(e){var t=this.rules.block.hr.exec(e);if(t)return{type:"hr",raw:t[0]}},t.blockquote=function(e){var t=this.rules.block.blockquote.exec(e);if(t){var u=t[0].replace(/^ *> ?/gm,"");return{type:"blockquote",raw:t[0],tokens:this.lexer.blockTokens(u,[]),text:u}}},t.list=function(e){var t=this.rules.block.list.exec(e);if(t){var u,n,r,i,s,l,a,o,D,c,h=t[1].trim(),p=h.length>1,f={type:"list",raw:"",ordered:p,start:p?+h.slice(0,-1):"",loose:!1,items:[]};h=p?"\\d{1,9}\\"+h.slice(-1):"\\"+h,this.options.pedantic&&(h=p?h:"[*+-]");for(var g=new RegExp("^( {0,3}"+h+")((?: [^\\n]*| *)(?:\\n[^\\n]*)*(?:\\n|$))");e&&!this.rules.block.hr.test(e)&&(t=g.exec(e));){D=t[2].split("\n"),this.options.pedantic?(i=2,c=D[0].trimLeft()):(i=t[2].search(/[^ ]/),i=t[1].length+(i>4?1:i),c=D[0].slice(i-t[1].length)),l=!1,u=t[0],!D[0]&&/^ *$/.test(D[1])&&(u=t[1]+D.slice(0,2).join("\n")+"\n",f.loose=!0,D=[]);var F=new RegExp("^ {0,"+Math.min(3,i-1)+"}(?:[*+-]|\\d{1,9}[.)])");for(s=1;s<D.length;s++){if(o=D[s],this.options.pedantic&&(o=o.replace(/^ {1,4}(?=( {4})*[^ ])/g,"  ")),F.test(o)){u=t[1]+D.slice(0,s).join("\n")+"\n";break}if(l){if(!(o.search(/[^ ]/)>=i)&&o.trim()){u=t[1]+D.slice(0,s).join("\n")+"\n";break}c+="\n"+o.slice(i)}else o.trim()||(l=!0),o.search(/[^ ]/)>=i?c+="\n"+o.slice(i):c+="\n"+o}f.loose||(a?f.loose=!0:/\n *\n *$/.test(u)&&(a=!0)),this.options.gfm&&(n=/^\[[ xX]\] /.exec(c))&&(r="[ ] "!==n[0],c=c.replace(/^\[[ xX]\] +/,"")),f.items.push({type:"list_item",raw:u,task:!!n,checked:r,loose:!1,text:c}),f.raw+=u,e=e.slice(u.length)}f.items[f.items.length-1].raw=u.trimRight(),f.items[f.items.length-1].text=c.trimRight(),f.raw=f.raw.trimRight();var A=f.items.length;for(s=0;s<A;s++)this.lexer.state.top=!1,f.items[s].tokens=this.lexer.blockTokens(f.items[s].text,[]),f.items[s].tokens.some(function(e){return"space"===e.type})&&(f.loose=!0,f.items[s].loose=!0);return f}},t.html=function(e){var t=this.rules.block.html.exec(e);if(t){var u={type:"html",raw:t[0],pre:!this.options.sanitizer&&("pre"===t[1]||"script"===t[1]||"style"===t[1]),text:t[0]};return this.options.sanitize&&(u.type="paragraph",u.text=this.options.sanitizer?this.options.sanitizer(t[0]):Z(t[0]),u.tokens=[],this.lexer.inline(u.text,u.tokens)),u}},t.def=function(e){var t=this.rules.block.def.exec(e);if(t)return t[3]&&(t[3]=t[3].substring(1,t[3].length-1)),{type:"def",tag:t[1].toLowerCase().replace(/\s+/g," "),raw:t[0],href:t[2],title:t[3]}},t.table=function(e){var t=this.rules.block.table.exec(e);if(t){var u={type:"table",header:I(t[1]).map(function(e){return{text:e}}),align:t[2].replace(/^ *|\| *$/g,"").split(/ *\| */),rows:t[3]?t[3].replace(/\n$/,"").split("\n"):[]};if(u.header.length===u.align.length){u.raw=t[0];var n,r,i,s,l=u.align.length;for(n=0;n<l;n++)/^ *-+: *$/.test(u.align[n])?u.align[n]="right":/^ *:-+: *$/.test(u.align[n])?u.align[n]="center":/^ *:-+ *$/.test(u.align[n])?u.align[n]="left":u.align[n]=null;for(l=u.rows.length,n=0;n<l;n++)u.rows[n]=I(u.rows[n],u.header.length).map(function(e){return{text:e}});for(l=u.header.length,r=0;r<l;r++)u.header[r].tokens=[],this.lexer.inlineTokens(u.header[r].text,u.header[r].tokens);for(l=u.rows.length,r=0;r<l;r++)for(s=u.rows[r],i=0;i<s.length;i++)s[i].tokens=[],this.lexer.inlineTokens(s[i].text,s[i].tokens);return u}}},t.lheading=function(e){var t=this.rules.block.lheading.exec(e);if(t){var u={type:"heading",raw:t[0],depth:"="===t[2].charAt(0)?1:2,text:t[1],tokens:[]};return this.lexer.inline(u.text,u.tokens),u}},t.paragraph=function(e){var t=this.rules.block.paragraph.exec(e);if(t){var u={type:"paragraph",raw:t[0],text:"\n"===t[1].charAt(t[1].length-1)?t[1].slice(0,-1):t[1],tokens:[]};return this.lexer.inline(u.text,u.tokens),u}},t.text=function(e){var t=this.rules.block.text.exec(e);if(t){var u={type:"text",raw:t[0],text:t[0],tokens:[]};return this.lexer.inline(u.text,u.tokens),u}},t.escape=function(e){var t=this.rules.inline.escape.exec(e);if(t)return{type:"escape",raw:t[0],text:Z(t[1])}},t.tag=function(e){var t=this.rules.inline.tag.exec(e);if(t)return!this.lexer.state.inLink&&/^<a /i.test(t[0])?this.lexer.state.inLink=!0:this.lexer.state.inLink&&/^<\/a>/i.test(t[0])&&(this.lexer.state.inLink=!1),!this.lexer.state.inRawBlock&&/^<(pre|code|kbd|script)(\s|>)/i.test(t[0])?this.lexer.state.inRawBlock=!0:this.lexer.state.inRawBlock&&/^<\/(pre|code|kbd|script)(\s|>)/i.test(t[0])&&(this.lexer.state.inRawBlock=!1),{type:this.options.sanitize?"text":"html",raw:t[0],inLink:this.lexer.state.inLink,inRawBlock:this.lexer.state.inRawBlock,text:this.options.sanitize?this.options.sanitizer?this.options.sanitizer(t[0]):Z(t[0]):t[0]}},t.link=function(e){var t=this.rules.inline.link.exec(e);if(t){var u=t[2].trim();if(!this.options.pedantic&&/^</.test(u)){if(!/>$/.test(u))return;var n=R(u.slice(0,-1),"\\");if((u.length-n.length)%2==0)return}else{var r=q(t[2],"()");if(r>-1){var i=(0===t[0].indexOf("!")?5:4)+t[1].length+r;t[2]=t[2].substring(0,r),t[0]=t[0].substring(0,i).trim(),t[3]=""}}var s=t[2],l="";if(this.options.pedantic){var a=/^([^'"]*[^\s])\s+(['"])(.*)\2/.exec(s);a&&(s=a[1],l=a[3])}else l=t[3]?t[3].slice(1,-1):"";return s=s.trim(),/^</.test(s)&&(s=this.options.pedantic&&!/>$/.test(u)?s.slice(1):s.slice(1,-1)),O(t,{href:s?s.replace(this.rules.inline._escapes,"$1"):s,title:l?l.replace(this.rules.inline._escapes,"$1"):l},t[0],this.lexer)}},t.reflink=function(e,t){var u;if((u=this.rules.inline.reflink.exec(e))||(u=this.rules.inline.nolink.exec(e))){var n=(u[2]||u[1]).replace(/\s+/g," ");if(!(n=t[n.toLowerCase()])||!n.href){var r=u[0].charAt(0);return{type:"text",raw:r,text:r}}return O(u,n,u[0],this.lexer)}},t.emStrong=function(e,t,u){void 0===u&&(u="");var n=this.rules.inline.emStrong.lDelim.exec(e);if(n&&(!n[3]||!u.match(/(?:[0-9A-Za-z\xAA\xB2\xB3\xB5\xB9\xBA\xBC-\xBE\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0560-\u0588\u05D0-\u05EA\u05EF-\u05F2\u0620-\u064A\u0660-\u0669\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07C0-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u08A0-\u08B4\u08B6-\u08C7\u0904-\u0939\u093D\u0950\u0958-\u0961\u0966-\u096F\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09E6-\u09F1\u09F4-\u09F9\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A66-\u0A6F\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AE6-\u0AEF\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B66-\u0B6F\u0B71-\u0B77\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0BE6-\u0BF2\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C66-\u0C6F\u0C78-\u0C7E\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CE6-\u0CEF\u0CF1\u0CF2\u0D04-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D58-\u0D61\u0D66-\u0D78\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DE6-\u0DEF\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E86-\u0E8A\u0E8C-\u0EA3\u0EA5\u0EA7-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F20-\u0F33\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F-\u1049\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u1090-\u1099\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1369-\u137C\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u17E0-\u17E9\u17F0-\u17F9\u1810-\u1819\u1820-\u1878\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19DA\u1A00-\u1A16\u1A20-\u1A54\u1A80-\u1A89\u1A90-\u1A99\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B50-\u1B59\u1B83-\u1BA0\u1BAE-\u1BE5\u1C00-\u1C23\u1C40-\u1C49\u1C4D-\u1C7D\u1C80-\u1C88\u1C90-\u1CBA\u1CBD-\u1CBF\u1CE9-\u1CEC\u1CEE-\u1CF3\u1CF5\u1CF6\u1CFA\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2070\u2071\u2074-\u2079\u207F-\u2089\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2150-\u2189\u2460-\u249B\u24EA-\u24FF\u2776-\u2793\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2CFD\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312F\u3131-\u318E\u3192-\u3195\u31A0-\u31BF\u31F0-\u31FF\u3220-\u3229\u3248-\u324F\u3251-\u325F\u3280-\u3289\u32B1-\u32BF\u3400-\u4DBF\u4E00-\u9FFC\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7BF\uA7C2-\uA7CA\uA7F5-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA830-\uA835\uA840-\uA873\uA882-\uA8B3\uA8D0-\uA8D9\uA8F2-\uA8F7\uA8FB\uA8FD\uA8FE\uA900-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF-\uA9D9\uA9E0-\uA9E4\uA9E6-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA50-\uAA59\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB69\uAB70-\uABE2\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD07-\uDD33\uDD40-\uDD78\uDD8A\uDD8B\uDE80-\uDE9C\uDEA0-\uDED0\uDEE1-\uDEFB\uDF00-\uDF23\uDF2D-\uDF4A\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCA0-\uDCA9\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC58-\uDC76\uDC79-\uDC9E\uDCA7-\uDCAF\uDCE0-\uDCF2\uDCF4\uDCF5\uDCFB-\uDD1B\uDD20-\uDD39\uDD80-\uDDB7\uDDBC-\uDDCF\uDDD2-\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE35\uDE40-\uDE48\uDE60-\uDE7E\uDE80-\uDE9F\uDEC0-\uDEC7\uDEC9-\uDEE4\uDEEB-\uDEEF\uDF00-\uDF35\uDF40-\uDF55\uDF58-\uDF72\uDF78-\uDF91\uDFA9-\uDFAF]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2\uDCFA-\uDD23\uDD30-\uDD39\uDE60-\uDE7E\uDE80-\uDEA9\uDEB0\uDEB1\uDF00-\uDF27\uDF30-\uDF45\uDF51-\uDF54\uDFB0-\uDFCB\uDFE0-\uDFF6]|\uD804[\uDC03-\uDC37\uDC52-\uDC6F\uDC83-\uDCAF\uDCD0-\uDCE8\uDCF0-\uDCF9\uDD03-\uDD26\uDD36-\uDD3F\uDD44\uDD47\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDD0-\uDDDA\uDDDC\uDDE1-\uDDF4\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDEF0-\uDEF9\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC50-\uDC59\uDC5F-\uDC61\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDCD0-\uDCD9\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE50-\uDE59\uDE80-\uDEAA\uDEB8\uDEC0-\uDEC9\uDF00-\uDF1A\uDF30-\uDF3B]|\uD806[\uDC00-\uDC2B\uDCA0-\uDCF2\uDCFF-\uDD06\uDD09\uDD0C-\uDD13\uDD15\uDD16\uDD18-\uDD2F\uDD3F\uDD41\uDD50-\uDD59\uDDA0-\uDDA7\uDDAA-\uDDD0\uDDE1\uDDE3\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE89\uDE9D\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC50-\uDC6C\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46\uDD50-\uDD59\uDD60-\uDD65\uDD67\uDD68\uDD6A-\uDD89\uDD98\uDDA0-\uDDA9\uDEE0-\uDEF2\uDFB0\uDFC0-\uDFD4]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD822\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879\uD880-\uD883][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE60-\uDE69\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF50-\uDF59\uDF5B-\uDF61\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDE40-\uDE96\uDF00-\uDF4A\uDF50\uDF93-\uDF9F\uDFE0\uDFE1\uDFE3]|\uD821[\uDC00-\uDFF7]|\uD823[\uDC00-\uDCD5\uDD00-\uDD08]|\uD82C[\uDC00-\uDD1E\uDD50-\uDD52\uDD64-\uDD67\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD834[\uDEE0-\uDEF3\uDF60-\uDF78]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB\uDFCE-\uDFFF]|\uD838[\uDD00-\uDD2C\uDD37-\uDD3D\uDD40-\uDD49\uDD4E\uDEC0-\uDEEB\uDEF0-\uDEF9]|\uD83A[\uDC00-\uDCC4\uDCC7-\uDCCF\uDD00-\uDD43\uDD4B\uDD50-\uDD59]|\uD83B[\uDC71-\uDCAB\uDCAD-\uDCAF\uDCB1-\uDCB4\uDD01-\uDD2D\uDD2F-\uDD3D\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD83C[\uDD00-\uDD0C]|\uD83E[\uDFF0-\uDFF9]|\uD869[\uDC00-\uDEDD\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]|\uD884[\uDC00-\uDF4A])/))){var r=n[1]||n[2]||"";if(!r||r&&(""===u||this.rules.inline.punctuation.exec(u))){var i,s,l=n[0].length-1,a=l,o=0,D="*"===n[0][0]?this.rules.inline.emStrong.rDelimAst:this.rules.inline.emStrong.rDelimUnd;for(D.lastIndex=0,t=t.slice(-1*e.length+l);null!=(n=D.exec(t));)if(i=n[1]||n[2]||n[3]||n[4]||n[5]||n[6])if(s=i.length,n[3]||n[4])a+=s;else if(!((n[5]||n[6])&&l%3)||(l+s)%3){if(!((a-=s)>0)){if(s=Math.min(s,s+a+o),Math.min(l,s)%2){var c=e.slice(1,l+n.index+s);return{type:"em",raw:e.slice(0,l+n.index+s+1),text:c,tokens:this.lexer.inlineTokens(c,[])}}var h=e.slice(2,l+n.index+s-1);return{type:"strong",raw:e.slice(0,l+n.index+s+1),text:h,tokens:this.lexer.inlineTokens(h,[])}}}else o+=s}}},t.codespan=function(e){var t=this.rules.inline.code.exec(e);if(t){var u=t[2].replace(/\n/g," "),n=/[^ ]/.test(u),r=/^ /.test(u)&&/ $/.test(u);return n&&r&&(u=u.substring(1,u.length-1)),u=Z(u,!0),{type:"codespan",raw:t[0],text:u}}},t.br=function(e){var t=this.rules.inline.br.exec(e);if(t)return{type:"br",raw:t[0]}},t.del=function(e){var t=this.rules.inline.del.exec(e);if(t)return{type:"del",raw:t[0],text:t[2],tokens:this.lexer.inlineTokens(t[2],[])}},t.autolink=function(e,t){var u,n,r=this.rules.inline.autolink.exec(e);if(r)return n="@"===r[2]?"mailto:"+(u=Z(this.options.mangle?t(r[1]):r[1])):u=Z(r[1]),{type:"link",raw:r[0],text:u,href:n,tokens:[{type:"text",raw:u,text:u}]}},t.url=function(e,t){var u;if(u=this.rules.inline.url.exec(e)){var n,r;if("@"===u[2])r="mailto:"+(n=Z(this.options.mangle?t(u[0]):u[0]));else{var i;do{i=u[0],u[0]=this.rules.inline._backpedal.exec(u[0])[0]}while(i!==u[0]);n=Z(u[0]),r="www."===u[1]?"http://"+n:n}return{type:"link",raw:u[0],text:n,href:r,tokens:[{type:"text",raw:n,text:n}]}}},t.inlineText=function(e,t){var u,n=this.rules.inline.text.exec(e);if(n)return u=this.lexer.state.inRawBlock?this.options.sanitize?this.options.sanitizer?this.options.sanitizer(n[0]):Z(n[0]):n[0]:Z(this.options.smartypants?t(n[0]):n[0]),{type:"text",raw:n[0],text:u}},e}(),j=w,U=b,P=v,Q={newline:/^(?: *(?:\n|$))+/,code:/^( {4}[^\n]+(?:\n(?: *(?:\n|$))*)?)+/,fences:/^ {0,3}(`{3,}(?=[^`\n]*\n)|~{3,})([^\n]*)\n(?:|([\s\S]*?)\n)(?: {0,3}\1[~`]* *(?=\n|$)|$)/,hr:/^ {0,3}((?:- *){3,}|(?:_ *){3,}|(?:\* *){3,})(?:\n+|$)/,heading:/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,blockquote:/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/,list:/^( {0,3}bull)( [^\n]+?)?(?:\n|$)/,html:"^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:</\\1>[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>\\n*|$)|<![A-Z][\\s\\S]*?(?:>\\n*|$)|<!\\[CDATA\\[[\\s\\S]*?(?:\\]\\]>\\n*|$)|</?(tag)(?: +|\\n|/?>)[\\s\\S]*?(?:(?:\\n *)+\\n|$)|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n *)+\\n|$)|</(?!script|pre|style|textarea)[a-z][\\w-]*\\s*>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n *)+\\n|$))",def:/^ {0,3}\[(label)\]: *\n? *<?([^\s>]+)>?(?:(?: +\n? *| *\n *)(title))? *(?:\n+|$)/,table:j,lheading:/^([^\n]+)\n {0,3}(=+|-+) *(?:\n+|$)/,_paragraph:/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html| +\n)[^\n]+)*)/,text:/^[^\n]+/,_label:/(?!\s*\])(?:\\[\[\]]|[^\[\]])+/,_title:/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/};Q.def=U(Q.def).replace("label",Q._label).replace("title",Q._title).getRegex(),Q.bullet=/(?:[*+-]|\d{1,9}[.)])/,Q.listItemStart=U(/^( *)(bull) */).replace("bull",Q.bullet).getRegex(),Q.list=U(Q.list).replace(/bull/g,Q.bullet).replace("hr","\\n+(?=\\1?(?:(?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$))").replace("def","\\n+(?="+Q.def.source+")").getRegex(),Q._tag="address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul",Q._comment=/<!--(?!-?>)[\s\S]*?(?:-->|$)/,Q.html=U(Q.html,"i").replace("comment",Q._comment).replace("tag",Q._tag).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),Q.paragraph=U(Q._paragraph).replace("hr",Q.hr).replace("heading"," {0,3}#{1,6} ").replace("|lheading","").replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",Q._tag).getRegex(),Q.blockquote=U(Q.blockquote).replace("paragraph",Q.paragraph).getRegex(),Q.normal=P({},Q),Q.gfm=P({},Q.normal,{table:"^ *([^\\n ].*\\|.*)\\n {0,3}(?:\\| *)?(:?-+:? *(?:\\| *:?-+:? *)*)\\|?(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)"}),Q.gfm.table=U(Q.gfm.table).replace("hr",Q.hr).replace("heading"," {0,3}#{1,6} ").replace("blockquote"," {0,3}>").replace("code"," {4}[^\\n]").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",Q._tag).getRegex(),Q.pedantic=P({},Q.normal,{html:U("^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+?</\\1> *(?:\\n{2,}|\\s*$)|<tag(?:\"[^\"]*\"|'[^']*'|\\s[^'\"/>\\s]*)*?/?> *(?:\\n{2,}|\\s*$))").replace("comment",Q._comment).replace(/tag/g,"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(),def:/^ *\[([^\]]+)\]: *<?([^\s>]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^(#{1,6})(.*)(?:\n+|$)/,fences:j,paragraph:U(Q.normal._paragraph).replace("hr",Q.hr).replace("heading"," *#{1,6} *[^\n]").replace("lheading",Q.lheading).replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").getRegex()});var M={escape:/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,autolink:/^<(scheme:[^\s\x00-\x1f<>]*|email)>/,url:j,tag:"^comment|^</[a-zA-Z][\\w:-]*\\s*>|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^<![a-zA-Z]+\\s[\\s\\S]*?>|^<!\\[CDATA\\[[\\s\\S]*?\\]\\]>",link:/^!?\[(label)\]\(\s*(href)(?:\s+(title))?\s*\)/,reflink:/^!?\[(label)\]\[(?!\s*\])((?:\\[\[\]]?|[^\[\]\\])+)\]/,nolink:/^!?\[(?!\s*\])((?:\[[^\[\]]*\]|\\[\[\]]|[^\[\]])*)\](?:\[\])?/,reflinkSearch:"reflink|nolink(?!\\()",emStrong:{lDelim:/^(?:\*+(?:([punct_])|[^\s*]))|^_+(?:([punct*])|([^\s_]))/,rDelimAst:/\_\_[^_*]*?\*[^_*]*?\_\_|[punct_](\*+)(?=[\s]|$)|[^punct*_\s](\*+)(?=[punct_\s]|$)|[punct_\s](\*+)(?=[^punct*_\s])|[\s](\*+)(?=[punct_])|[punct_](\*+)(?=[punct_])|[^punct*_\s](\*+)(?=[^punct*_\s])/,rDelimUnd:/\*\*[^_*]*?\_[^_*]*?\*\*|[punct*](\_+)(?=[\s]|$)|[^punct*_\s](\_+)(?=[punct*\s]|$)|[punct*\s](\_+)(?=[^punct*_\s])|[\s](\_+)(?=[punct*])|[punct*](\_+)(?=[punct*])/},code:/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,br:/^( {2,}|\\)\n(?!\s*$)/,del:j,text:/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\<!\[`*_]|\b_|$)|[^ ](?= {2,}\n)))/,punctuation:/^([\spunctuation])/,_punctuation:"!\"#$%&'()+\\-.,/:;<=>?@\\[\\]`^{|}~"};M.punctuation=U(M.punctuation).replace(/punctuation/g,M._punctuation).getRegex(),M.blockSkip=/\[[^\]]*?\]\([^\)]*?\)|`[^`]*?`|<[^>]*?>/g,M.escapedEmSt=/\\\*|\\_/g,M._comment=U(Q._comment).replace("(?:--\x3e|$)","--\x3e").getRegex(),M.emStrong.lDelim=U(M.emStrong.lDelim).replace(/punct/g,M._punctuation).getRegex(),M.emStrong.rDelimAst=U(M.emStrong.rDelimAst,"g").replace(/punct/g,M._punctuation).getRegex(),M.emStrong.rDelimUnd=U(M.emStrong.rDelimUnd,"g").replace(/punct/g,M._punctuation).getRegex(),M._escapes=/\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/g,M._scheme=/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/,M._email=/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/,M.autolink=U(M.autolink).replace("scheme",M._scheme).replace("email",M._email).getRegex(),M._attribute=/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/,M.tag=U(M.tag).replace("comment",M._comment).replace("attribute",M._attribute).getRegex(),M._label=/(?:\[(?:\\.|[^\[\]\\])*\]|\\.|`[^`]*`|[^\[\]\\`])*?/,M._href=/<(?:\\.|[^\n<>\\])+>|[^\s\x00-\x1f]*/,M._title=/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/,M.link=U(M.link).replace("label",M._label).replace("href",M._href).replace("title",M._title).getRegex(),M.reflink=U(M.reflink).replace("label",M._label).getRegex(),M.reflinkSearch=U(M.reflinkSearch,"g").replace("reflink",M.reflink).replace("nolink",M.nolink).getRegex(),M.normal=P({},M),M.pedantic=P({},M.normal,{strong:{start:/^__|\*\*/,middle:/^__(?=\S)([\s\S]*?\S)__(?!_)|^\*\*(?=\S)([\s\S]*?\S)\*\*(?!\*)/,endAst:/\*\*(?!\*)/g,endUnd:/__(?!_)/g},em:{start:/^_|\*/,middle:/^()\*(?=\S)([\s\S]*?\S)\*(?!\*)|^_(?=\S)([\s\S]*?\S)_(?!_)/,endAst:/\*(?!\*)/g,endUnd:/_(?!_)/g},link:U(/^!?\[(label)\]\((.*?)\)/).replace("label",M._label).getRegex(),reflink:U(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label",M._label).getRegex()}),M.gfm=P({},M.normal,{escape:U(M.escape).replace("])","~|])").getRegex(),_extended_email:/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/,url:/^((?:ftp|https?):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/,_backpedal:/(?:[^?!.,:;*_~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_~)]+(?!$))+/,del:/^(~~?)(?=[^\s~])([\s\S]*?[^\s~])\1(?=[^~]|$)/,text:/^([`~]+|[^`~])(?:(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\<!\[`*~_]|\b_|https?:\/\/|ftp:\/\/|www\.|$)|[^ ](?= {2,}\n)|[^a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-](?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)))/}),M.gfm.url=U(M.gfm.url,"i").replace("email",M.gfm._extended_email).getRegex(),M.breaks=P({},M.gfm,{br:U(M.br).replace("{2,}","*").getRegex(),text:U(M.gfm.text).replace("\\b_","\\b_| {2,}\\n").replace(/\{2,\}/g,"*").getRegex()});var N={block:Q,inline:M},X=L,G=n.exports.defaults,V=N.block,H=N.inline,J=$;function K(e){return e.replace(/---/g,"—").replace(/--/g,"–").replace(/(^|[-\u2014/(\[{"\s])'/g,"$1‘").replace(/'/g,"’").replace(/(^|[-\u2014/(\[{\u2018\s])"/g,"$1“").replace(/"/g,"”").replace(/\.{3}/g,"…")}function W(e){var t,u,n="",r=e.length;for(t=0;t<r;t++)u=e.charCodeAt(t),Math.random()>.5&&(u="x"+u.toString(16)),n+="&#"+u+";";return n}var Y=function(){function t(e){this.tokens=[],this.tokens.links=Object.create(null),this.options=e||G,this.options.tokenizer=this.options.tokenizer||new X,this.tokenizer=this.options.tokenizer,this.tokenizer.options=this.options,this.tokenizer.lexer=this,this.inlineQueue=[],this.state={inLink:!1,inRawBlock:!1,top:!0};var t={block:V.normal,inline:H.normal};this.options.pedantic?(t.block=V.pedantic,t.inline=H.pedantic):this.options.gfm&&(t.block=V.gfm,this.options.breaks?t.inline=H.breaks:t.inline=H.gfm),this.tokenizer.rules=t}t.lex=function(e,u){return new t(u).lex(e)},t.lexInline=function(e,u){return new t(u).inlineTokens(e)};var u,n,r,i=t.prototype;return i.lex=function(e){var t;for(e=e.replace(/\r\n|\r/g,"\n").replace(/\t/g,"    "),this.blockTokens(e,this.tokens);t=this.inlineQueue.shift();)this.inlineTokens(t.src,t.tokens);return this.tokens},i.blockTokens=function(e,t){var u,n,r,i,s=this;for(void 0===t&&(t=[]),this.options.pedantic&&(e=e.replace(/^ +$/gm,""));e;)if(!(this.options.extensions&&this.options.extensions.block&&this.options.extensions.block.some(function(n){return!!(u=n.call({lexer:s},e,t))&&(e=e.substring(u.raw.length),t.push(u),!0)})))if(u=this.tokenizer.space(e))e=e.substring(u.raw.length),u.type&&t.push(u);else if(u=this.tokenizer.code(e))e=e.substring(u.raw.length),!(n=t[t.length-1])||"paragraph"!==n.type&&"text"!==n.type?t.push(u):(n.raw+="\n"+u.raw,n.text+="\n"+u.text,this.inlineQueue[this.inlineQueue.length-1].src=n.text);else if(u=this.tokenizer.fences(e))e=e.substring(u.raw.length),t.push(u);else if(u=this.tokenizer.heading(e))e=e.substring(u.raw.length),t.push(u);else if(u=this.tokenizer.hr(e))e=e.substring(u.raw.length),t.push(u);else if(u=this.tokenizer.blockquote(e))e=e.substring(u.raw.length),t.push(u);else if(u=this.tokenizer.list(e))e=e.substring(u.raw.length),t.push(u);else if(u=this.tokenizer.html(e))e=e.substring(u.raw.length),t.push(u);else if(u=this.tokenizer.def(e))e=e.substring(u.raw.length),!(n=t[t.length-1])||"paragraph"!==n.type&&"text"!==n.type?this.tokens.links[u.tag]||(this.tokens.links[u.tag]={href:u.href,title:u.title}):(n.raw+="\n"+u.raw,n.text+="\n"+u.raw,this.inlineQueue[this.inlineQueue.length-1].src=n.text);else if(u=this.tokenizer.table(e))e=e.substring(u.raw.length),t.push(u);else if(u=this.tokenizer.lheading(e))e=e.substring(u.raw.length),t.push(u);else if(r=e,this.options.extensions&&this.options.extensions.startBlock&&function(){var t=1/0,u=e.slice(1),n=void 0;s.options.extensions.startBlock.forEach(function(e){"number"==typeof(n=e.call({lexer:this},u))&&n>=0&&(t=Math.min(t,n))}),t<1/0&&t>=0&&(r=e.substring(0,t+1))}(),this.state.top&&(u=this.tokenizer.paragraph(r)))n=t[t.length-1],i&&"paragraph"===n.type?(n.raw+="\n"+u.raw,n.text+="\n"+u.text,this.inlineQueue.pop(),this.inlineQueue[this.inlineQueue.length-1].src=n.text):t.push(u),i=r.length!==e.length,e=e.substring(u.raw.length);else if(u=this.tokenizer.text(e))e=e.substring(u.raw.length),(n=t[t.length-1])&&"text"===n.type?(n.raw+="\n"+u.raw,n.text+="\n"+u.text,this.inlineQueue.pop(),this.inlineQueue[this.inlineQueue.length-1].src=n.text):t.push(u);else if(e){var l="Infinite loop on byte: "+e.charCodeAt(0);if(this.options.silent){console.error(l);break}throw new Error(l)}return this.state.top=!0,t},i.inline=function(e,t){this.inlineQueue.push({src:e,tokens:t})},i.inlineTokens=function(e,t){var u,n,r,i=this;void 0===t&&(t=[]);var s,l,a,o=e;if(this.tokens.links){var D=Object.keys(this.tokens.links);if(D.length>0)for(;null!=(s=this.tokenizer.rules.inline.reflinkSearch.exec(o));)D.includes(s[0].slice(s[0].lastIndexOf("[")+1,-1))&&(o=o.slice(0,s.index)+"["+J("a",s[0].length-2)+"]"+o.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex))}for(;null!=(s=this.tokenizer.rules.inline.blockSkip.exec(o));)o=o.slice(0,s.index)+"["+J("a",s[0].length-2)+"]"+o.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);for(;null!=(s=this.tokenizer.rules.inline.escapedEmSt.exec(o));)o=o.slice(0,s.index)+"++"+o.slice(this.tokenizer.rules.inline.escapedEmSt.lastIndex);for(;e;)if(l||(a=""),l=!1,!(this.options.extensions&&this.options.extensions.inline&&this.options.extensions.inline.some(function(n){return!!(u=n.call({lexer:i},e,t))&&(e=e.substring(u.raw.length),t.push(u),!0)})))if(u=this.tokenizer.escape(e))e=e.substring(u.raw.length),t.push(u);else if(u=this.tokenizer.tag(e))e=e.substring(u.raw.length),(n=t[t.length-1])&&"text"===u.type&&"text"===n.type?(n.raw+=u.raw,n.text+=u.text):t.push(u);else if(u=this.tokenizer.link(e))e=e.substring(u.raw.length),t.push(u);else if(u=this.tokenizer.reflink(e,this.tokens.links))e=e.substring(u.raw.length),(n=t[t.length-1])&&"text"===u.type&&"text"===n.type?(n.raw+=u.raw,n.text+=u.text):t.push(u);else if(u=this.tokenizer.emStrong(e,o,a))e=e.substring(u.raw.length),t.push(u);else if(u=this.tokenizer.codespan(e))e=e.substring(u.raw.length),t.push(u);else if(u=this.tokenizer.br(e))e=e.substring(u.raw.length),t.push(u);else if(u=this.tokenizer.del(e))e=e.substring(u.raw.length),t.push(u);else if(u=this.tokenizer.autolink(e,W))e=e.substring(u.raw.length),t.push(u);else if(this.state.inLink||!(u=this.tokenizer.url(e,W))){if(r=e,this.options.extensions&&this.options.extensions.startInline&&function(){var t=1/0,u=e.slice(1),n=void 0;i.options.extensions.startInline.forEach(function(e){"number"==typeof(n=e.call({lexer:this},u))&&n>=0&&(t=Math.min(t,n))}),t<1/0&&t>=0&&(r=e.substring(0,t+1))}(),u=this.tokenizer.inlineText(r,K))e=e.substring(u.raw.length),"_"!==u.raw.slice(-1)&&(a=u.raw.slice(-1)),l=!0,(n=t[t.length-1])&&"text"===n.type?(n.raw+=u.raw,n.text+=u.text):t.push(u);else if(e){var c="Infinite loop on byte: "+e.charCodeAt(0);if(this.options.silent){console.error(c);break}throw new Error(c)}}else e=e.substring(u.raw.length),t.push(u);return t},u=t,r=[{key:"rules",get:function(){return{block:V,inline:H}}}],(n=null)&&e(u.prototype,n),r&&e(u,r),t}(),ee=n.exports.defaults,te=B,ue=x,ne=function(){function e(e){this.options=e||ee}var t=e.prototype;return t.code=function(e,t,u){var n=(t||"").match(/\S*/)[0];if(this.options.highlight){var r=this.options.highlight(e,n);null!=r&&r!==e&&(u=!0,e=r)}return e=e.replace(/\n$/,"")+"\n",n?'<pre><code class="'+this.options.langPrefix+ue(n,!0)+'">'+(u?e:ue(e,!0))+"</code></pre>\n":"<pre><code>"+(u?e:ue(e,!0))+"</code></pre>\n"},t.blockquote=function(e){return"<blockquote>\n"+e+"</blockquote>\n"},t.html=function(e){return e},t.heading=function(e,t,u,n){return this.options.headerIds?"<h"+t+' id="'+this.options.headerPrefix+n.slug(u)+'">'+e+"</h"+t+">\n":"<h"+t+">"+e+"</h"+t+">\n"},t.hr=function(){return this.options.xhtml?"<hr/>\n":"<hr>\n"},t.list=function(e,t,u){var n=t?"ol":"ul";return"<"+n+(t&&1!==u?' start="'+u+'"':"")+">\n"+e+"</"+n+">\n"},t.listitem=function(e){return"<li>"+e+"</li>\n"},t.checkbox=function(e){return"<input "+(e?'checked="" ':"")+'disabled="" type="checkbox"'+(this.options.xhtml?" /":"")+"> "},t.paragraph=function(e){return"<p>"+e+"</p>\n"},t.table=function(e,t){return t&&(t="<tbody>"+t+"</tbody>"),"<table>\n<thead>\n"+e+"</thead>\n"+t+"</table>\n"},t.tablerow=function(e){return"<tr>\n"+e+"</tr>\n"},t.tablecell=function(e,t){var u=t.header?"th":"td";return(t.align?"<"+u+' align="'+t.align+'">':"<"+u+">")+e+"</"+u+">\n"},t.strong=function(e){return"<strong>"+e+"</strong>"},t.em=function(e){return"<em>"+e+"</em>"},t.codespan=function(e){return"<code>"+e+"</code>"},t.br=function(){return this.options.xhtml?"<br/>":"<br>"},t.del=function(e){return"<del>"+e+"</del>"},t.link=function(e,t,u){if(null===(e=te(this.options.sanitize,this.options.baseUrl,e)))return u;var n='<a href="'+ue(e)+'"';return t&&(n+=' title="'+t+'"'),n+=">"+u+"</a>"},t.image=function(e,t,u){if(null===(e=te(this.options.sanitize,this.options.baseUrl,e)))return u;var n='<img src="'+e+'" alt="'+u+'"';return t&&(n+=' title="'+t+'"'),n+=this.options.xhtml?"/>":">"},t.text=function(e){return e},e}(),re=function(){function e(){}var t=e.prototype;return t.strong=function(e){return e},t.em=function(e){return e},t.codespan=function(e){return e},t.del=function(e){return e},t.html=function(e){return e},t.text=function(e){return e},t.link=function(e,t,u){return""+u},t.image=function(e,t,u){return""+u},t.br=function(){return""},e}(),ie=function(){function e(){this.seen={}}var t=e.prototype;return t.serialize=function(e){return e.toLowerCase().trim().replace(/<[!\/a-z].*?>/gi,"").replace(/[\u2000-\u206F\u2E00-\u2E7F\\'!"#$%&()*+,./:;<=>?@[\]^`{|}~]/g,"").replace(/\s/g,"-")},t.getNextSafeSlug=function(e,t){var u=e,n=0;if(this.seen.hasOwnProperty(u)){n=this.seen[e];do{u=e+"-"+ ++n}while(this.seen.hasOwnProperty(u))}return t||(this.seen[e]=n,this.seen[u]=0),u},t.slug=function(e,t){void 0===t&&(t={});var u=this.serialize(e);return this.getNextSafeSlug(u,t.dryrun)},e}(),se=ne,le=re,ae=ie,oe=n.exports.defaults,De=m,ce=Y,he=function(){function e(e){this.options=e||oe,this.options.renderer=this.options.renderer||new se,this.renderer=this.options.renderer,this.renderer.options=this.options,this.textRenderer=new le,this.slugger=new ae}e.parse=function(t,u){return new e(u).parse(t)},e.parseInline=function(t,u){return new e(u).parseInline(t)};var t=e.prototype;return t.parse=function(e,t){void 0===t&&(t=!0);var u,n,r,i,s,l,a,o,D,c,h,p,f,g,F,A,d,C,k,E="",x=e.length;for(u=0;u<x;u++)if(c=e[u],!(this.options.extensions&&this.options.extensions.renderers&&this.options.extensions.renderers[c.type])||!1===(k=this.options.extensions.renderers[c.type].call({parser:this},c))&&["space","hr","heading","code","table","blockquote","list","html","paragraph","text"].includes(c.type))switch(c.type){case"space":continue;case"hr":E+=this.renderer.hr();continue;case"heading":E+=this.renderer.heading(this.parseInline(c.tokens),c.depth,De(this.parseInline(c.tokens,this.textRenderer)),this.slugger);continue;case"code":E+=this.renderer.code(c.text,c.lang,c.escaped);continue;case"table":for(o="",a="",i=c.header.length,n=0;n<i;n++)a+=this.renderer.tablecell(this.parseInline(c.header[n].tokens),{header:!0,align:c.align[n]});for(o+=this.renderer.tablerow(a),D="",i=c.rows.length,n=0;n<i;n++){for(a="",s=(l=c.rows[n]).length,r=0;r<s;r++)a+=this.renderer.tablecell(this.parseInline(l[r].tokens),{header:!1,align:c.align[r]});D+=this.renderer.tablerow(a)}E+=this.renderer.table(o,D);continue;case"blockquote":D=this.parse(c.tokens),E+=this.renderer.blockquote(D);continue;case"list":for(h=c.ordered,p=c.start,f=c.loose,i=c.items.length,D="",n=0;n<i;n++)A=(F=c.items[n]).checked,d=F.task,g="",F.task&&(C=this.renderer.checkbox(A),f?F.tokens.length>0&&"paragraph"===F.tokens[0].type?(F.tokens[0].text=C+" "+F.tokens[0].text,F.tokens[0].tokens&&F.tokens[0].tokens.length>0&&"text"===F.tokens[0].tokens[0].type&&(F.tokens[0].tokens[0].text=C+" "+F.tokens[0].tokens[0].text)):F.tokens.unshift({type:"text",text:C}):g+=C),g+=this.parse(F.tokens,f),D+=this.renderer.listitem(g,d,A);E+=this.renderer.list(D,h,p);continue;case"html":E+=this.renderer.html(c.text);continue;case"paragraph":E+=this.renderer.paragraph(this.parseInline(c.tokens));continue;case"text":for(D=c.tokens?this.parseInline(c.tokens):c.text;u+1<x&&"text"===e[u+1].type;)D+="\n"+((c=e[++u]).tokens?this.parseInline(c.tokens):c.text);E+=t?this.renderer.paragraph(D):D;continue;default:var m='Token with "'+c.type+'" type was not found.';if(this.options.silent)return void console.error(m);throw new Error(m)}else E+=k||"";return E},t.parseInline=function(e,t){t=t||this.renderer;var u,n,r,i="",s=e.length;for(u=0;u<s;u++)if(n=e[u],!(this.options.extensions&&this.options.extensions.renderers&&this.options.extensions.renderers[n.type])||!1===(r=this.options.extensions.renderers[n.type].call({parser:this},n))&&["escape","html","link","image","strong","em","codespan","br","del","text"].includes(n.type))switch(n.type){case"escape":i+=t.text(n.text);break;case"html":i+=t.html(n.text);break;case"link":i+=t.link(n.href,n.title,this.parseInline(n.tokens,t));break;case"image":i+=t.image(n.href,n.title,n.text);break;case"strong":i+=t.strong(this.parseInline(n.tokens,t));break;case"em":i+=t.em(this.parseInline(n.tokens,t));break;case"codespan":i+=t.codespan(n.text);break;case"br":i+=t.br();break;case"del":i+=t.del(this.parseInline(n.tokens,t));break;case"text":i+=t.text(n.text);break;default:var l='Token with "'+n.type+'" type was not found.';if(this.options.silent)return void console.error(l);throw new Error(l)}else i+=r||"";return i},e}(),pe=L,fe=ne,ge=re,Fe=ie,Ae=v,de=S,Ce=x,ke=n.exports.getDefaults,Ee=n.exports.changeDefaults,xe=n.exports.defaults;function me(e,t,u){if(null==e)throw new Error("marked(): input parameter is undefined or null");if("string"!=typeof e)throw new Error("marked(): input parameter is of type "+Object.prototype.toString.call(e)+", string expected");if("function"==typeof t&&(u=t,t=null),t=Ae({},me.defaults,t||{}),de(t),u){var n,r=t.highlight;try{n=ce.lex(e,t)}catch(a){return u(a)}var i=function(e){var i;if(!e)try{t.walkTokens&&me.walkTokens(n,t.walkTokens),i=he.parse(n,t)}catch(a){e=a}return t.highlight=r,e?u(e):u(null,i)};if(!r||r.length<3)return i();if(delete t.highlight,!n.length)return i();var s=0;return me.walkTokens(n,function(e){"code"===e.type&&(s++,setTimeout(function(){r(e.text,e.lang,function(t,u){if(t)return i(t);null!=u&&u!==e.text&&(e.text=u,e.escaped=!0),0===--s&&i()})},0))}),void(0===s&&i())}try{var l=ce.lex(e,t);return t.walkTokens&&me.walkTokens(l,t.walkTokens),he.parse(l,t)}catch(a){if(a.message+="\nPlease report this to https://github.com/markedjs/marked.",t.silent)return"<p>An error occurred:</p><pre>"+Ce(a.message+"",!0)+"</pre>";throw a}}return me.options=me.setOptions=function(e){return Ae(me.defaults,e),Ee(me.defaults),me},me.getDefaults=ke,me.defaults=xe,me.use=function(){for(var e=this,t=arguments.length,u=new Array(t),n=0;n<t;n++)u[n]=arguments[n];var r,i=Ae.apply(void 0,[{}].concat(u)),s=me.defaults.extensions||{renderers:{},childTokens:{}};u.forEach(function(t){if(t.extensions&&(r=!0,t.extensions.forEach(function(e){if(!e.name)throw new Error("extension name required");if(e.renderer){var t=s.renderers?s.renderers[e.name]:null;s.renderers[e.name]=t?function(){for(var u=arguments.length,n=new Array(u),r=0;r<u;r++)n[r]=arguments[r];var i=e.renderer.apply(this,n);return!1===i&&(i=t.apply(this,n)),i}:e.renderer}if(e.tokenizer){if(!e.level||"block"!==e.level&&"inline"!==e.level)throw new Error("extension level must be 'block' or 'inline'");s[e.level]?s[e.level].unshift(e.tokenizer):s[e.level]=[e.tokenizer],e.start&&("block"===e.level?s.startBlock?s.startBlock.push(e.start):s.startBlock=[e.start]:"inline"===e.level&&(s.startInline?s.startInline.push(e.start):s.startInline=[e.start]))}e.childTokens&&(s.childTokens[e.name]=e.childTokens)})),t.renderer&&function(){var e=me.defaults.renderer||new fe,u=function(u){var n=e[u];e[u]=function(){for(var r=arguments.length,i=new Array(r),s=0;s<r;s++)i[s]=arguments[s];var l=t.renderer[u].apply(e,i);return!1===l&&(l=n.apply(e,i)),l}};for(var n in t.renderer)u(n);i.renderer=e}(),t.tokenizer&&function(){var e=me.defaults.tokenizer||new pe,u=function(u){var n=e[u];e[u]=function(){for(var r=arguments.length,i=new Array(r),s=0;s<r;s++)i[s]=arguments[s];var l=t.tokenizer[u].apply(e,i);return!1===l&&(l=n.apply(e,i)),l}};for(var n in t.tokenizer)u(n);i.tokenizer=e}(),t.walkTokens){var u=me.defaults.walkTokens;i.walkTokens=function(n){t.walkTokens.call(e,n),u&&u(n)}}r&&(i.extensions=s),me.setOptions(i)})},me.walkTokens=function(e,t){for(var n,r=function(){var e=n.value;switch(t(e),e.type){case"table":for(var r,i=u(e.header);!(r=i()).done;){var s=r.value;me.walkTokens(s.tokens,t)}for(var l,a=u(e.rows);!(l=a()).done;)for(var o,D=u(l.value);!(o=D()).done;){var c=o.value;me.walkTokens(c.tokens,t)}break;case"list":me.walkTokens(e.items,t);break;default:me.defaults.extensions&&me.defaults.extensions.childTokens&&me.defaults.extensions.childTokens[e.type]?me.defaults.extensions.childTokens[e.type].forEach(function(u){me.walkTokens(e[u],t)}):e.tokens&&me.walkTokens(e.tokens,t)}},i=u(e);!(n=i()).done;)r()},me.parseInline=function(e,t){if(null==e)throw new Error("marked.parseInline(): input parameter is undefined or null");if("string"!=typeof e)throw new Error("marked.parseInline(): input parameter is of type "+Object.prototype.toString.call(e)+", string expected");t=Ae({},me.defaults,t||{}),de(t);try{var u=ce.lexInline(e,t);return t.walkTokens&&me.walkTokens(u,t.walkTokens),he.parseInline(u,t)}catch(n){if(n.message+="\nPlease report this to https://github.com/markedjs/marked.",t.silent)return"<p>An error occurred:</p><pre>"+Ce(n.message+"",!0)+"</pre>";throw n}},me.Parser=he,me.parser=he.parse,me.Renderer=fe,me.TextRenderer=ge,me.Lexer=ce,me.lexer=ce.lex,me.Tokenizer=pe,me.Slugger=Fe,me.parse=me,me});
+},{}],"ufcH":[function(require,module,exports) {
+var define;
+var global = arguments[3];
+var e,t=arguments[3];!function(t,n){"object"==typeof exports&&"undefined"!=typeof module?module.exports=n():"function"==typeof e&&e.amd?e(n):(t=t||self).DOMPurify=n()}(this,function(){"use strict";var e=Object.hasOwnProperty,t=Object.setPrototypeOf,n=Object.isFrozen,r=Object.getPrototypeOf,o=Object.getOwnPropertyDescriptor,i=Object.freeze,a=Object.seal,l=Object.create,c="undefined"!=typeof Reflect&&Reflect,s=c.apply,u=c.construct;s||(s=function(e,t,n){return e.apply(t,n)}),i||(i=function(e){return e}),a||(a=function(e){return e}),u||(u=function(e,t){return new(Function.prototype.bind.apply(e,[null].concat(function(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t<e.length;t++)n[t]=e[t];return n}return Array.from(e)}(t))))});var m,f=x(Array.prototype.forEach),p=x(Array.prototype.pop),d=x(Array.prototype.push),h=x(String.prototype.toLowerCase),g=x(String.prototype.match),y=x(String.prototype.replace),v=x(String.prototype.indexOf),b=x(String.prototype.trim),T=x(RegExp.prototype.test),A=(m=TypeError,function(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];return u(m,t)});function x(e){return function(t){for(var n=arguments.length,r=Array(n>1?n-1:0),o=1;o<n;o++)r[o-1]=arguments[o];return s(e,t,r)}}function S(e,r){t&&t(e,null);for(var o=r.length;o--;){var i=r[o];if("string"==typeof i){var a=h(i);a!==i&&(n(r)||(r[o]=a),i=a)}e[i]=!0}return e}function w(t){var n=l(null),r=void 0;for(r in t)s(e,t,[r])&&(n[r]=t[r]);return n}function E(e,t){for(;null!==e;){var n=o(e,t);if(n){if(n.get)return x(n.get);if("function"==typeof n.value)return x(n.value)}e=r(e)}return function(e){return console.warn("fallback value for",e),null}}var R=i(["a","abbr","acronym","address","area","article","aside","audio","b","bdi","bdo","big","blink","blockquote","body","br","button","canvas","caption","center","cite","code","col","colgroup","content","data","datalist","dd","decorator","del","details","dfn","dialog","dir","div","dl","dt","element","em","fieldset","figcaption","figure","font","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","img","input","ins","kbd","label","legend","li","main","map","mark","marquee","menu","menuitem","meter","nav","nobr","ol","optgroup","option","output","p","picture","pre","progress","q","rp","rt","ruby","s","samp","section","select","shadow","small","source","spacer","span","strike","strong","style","sub","summary","sup","table","tbody","td","template","textarea","tfoot","th","thead","time","tr","track","tt","u","ul","var","video","wbr"]),_=i(["svg","a","altglyph","altglyphdef","altglyphitem","animatecolor","animatemotion","animatetransform","circle","clippath","defs","desc","ellipse","filter","font","g","glyph","glyphref","hkern","image","line","lineargradient","marker","mask","metadata","mpath","path","pattern","polygon","polyline","radialgradient","rect","stop","style","switch","symbol","text","textpath","title","tref","tspan","view","vkern"]),N=i(["feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence"]),D=i(["animate","color-profile","cursor","discard","fedropshadow","feimage","font-face","font-face-format","font-face-name","font-face-src","font-face-uri","foreignobject","hatch","hatchpath","mesh","meshgradient","meshpatch","meshrow","missing-glyph","script","set","solidcolor","unknown","use"]),k=i(["math","menclose","merror","mfenced","mfrac","mglyph","mi","mlabeledtr","mmultiscripts","mn","mo","mover","mpadded","mphantom","mroot","mrow","ms","mspace","msqrt","mstyle","msub","msup","msubsup","mtable","mtd","mtext","mtr","munder","munderover"]),O=i(["maction","maligngroup","malignmark","mlongdiv","mscarries","mscarry","msgroup","mstack","msline","msrow","semantics","annotation","annotation-xml","mprescripts","none"]),M=i(["#text"]),L=i(["accept","action","align","alt","autocapitalize","autocomplete","autopictureinpicture","autoplay","background","bgcolor","border","capture","cellpadding","cellspacing","checked","cite","class","clear","color","cols","colspan","controls","controlslist","coords","crossorigin","datetime","decoding","default","dir","disabled","disablepictureinpicture","disableremoteplayback","download","draggable","enctype","enterkeyhint","face","for","headers","height","hidden","high","href","hreflang","id","inputmode","integrity","ismap","kind","label","lang","list","loading","loop","low","max","maxlength","media","method","min","minlength","multiple","muted","name","noshade","novalidate","nowrap","open","optimum","pattern","placeholder","playsinline","poster","preload","pubdate","radiogroup","readonly","rel","required","rev","reversed","role","rows","rowspan","spellcheck","scope","selected","shape","size","sizes","span","srclang","start","src","srcset","step","style","summary","tabindex","title","translate","type","usemap","valign","value","width","xmlns","slot"]),F=i(["accent-height","accumulate","additive","alignment-baseline","ascent","attributename","attributetype","azimuth","basefrequency","baseline-shift","begin","bias","by","class","clip","clippathunits","clip-path","clip-rule","color","color-interpolation","color-interpolation-filters","color-profile","color-rendering","cx","cy","d","dx","dy","diffuseconstant","direction","display","divisor","dur","edgemode","elevation","end","fill","fill-opacity","fill-rule","filter","filterunits","flood-color","flood-opacity","font-family","font-size","font-size-adjust","font-stretch","font-style","font-variant","font-weight","fx","fy","g1","g2","glyph-name","glyphref","gradientunits","gradienttransform","height","href","id","image-rendering","in","in2","k","k1","k2","k3","k4","kerning","keypoints","keysplines","keytimes","lang","lengthadjust","letter-spacing","kernelmatrix","kernelunitlength","lighting-color","local","marker-end","marker-mid","marker-start","markerheight","markerunits","markerwidth","maskcontentunits","maskunits","max","mask","media","method","mode","min","name","numoctaves","offset","operator","opacity","order","orient","orientation","origin","overflow","paint-order","path","pathlength","patterncontentunits","patterntransform","patternunits","points","preservealpha","preserveaspectratio","primitiveunits","r","rx","ry","radius","refx","refy","repeatcount","repeatdur","restart","result","rotate","scale","seed","shape-rendering","specularconstant","specularexponent","spreadmethod","startoffset","stddeviation","stitchtiles","stop-color","stop-opacity","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke","stroke-width","style","surfacescale","systemlanguage","tabindex","targetx","targety","transform","text-anchor","text-decoration","text-rendering","textlength","type","u1","u2","unicode","values","viewbox","visibility","version","vert-adv-y","vert-origin-x","vert-origin-y","width","word-spacing","wrap","writing-mode","xchannelselector","ychannelselector","x","x1","x2","xmlns","y","y1","y2","z","zoomandpan"]),I=i(["accent","accentunder","align","bevelled","close","columnsalign","columnlines","columnspan","denomalign","depth","dir","display","displaystyle","encoding","fence","frame","height","href","id","largeop","length","linethickness","lspace","lquote","mathbackground","mathcolor","mathsize","mathvariant","maxsize","minsize","movablelimits","notation","numalign","open","rowalign","rowlines","rowspacing","rowspan","rspace","rquote","scriptlevel","scriptminsize","scriptsizemultiplier","selection","separator","separators","stretchy","subscriptshift","supscriptshift","symmetric","voffset","width","xmlns"]),C=i(["xlink:href","xml:id","xlink:title","xml:space","xmlns:xlink"]),z=a(/\{\{[\s\S]*|[\s\S]*\}\}/gm),H=a(/<%[\s\S]*|[\s\S]*%>/gm),U=a(/^data-[\-\w.\u00B7-\uFFFF]/),P=a(/^aria-[\-\w]+$/),j=a(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|cid|xmpp):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),B=a(/^(?:\w+script|data):/i),W=a(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),G="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};function q(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t<e.length;t++)n[t]=e[t];return n}return Array.from(e)}var Y=function(){return"undefined"==typeof window?null:window},K=function(e,t){if("object"!==(void 0===e?"undefined":G(e))||"function"!=typeof e.createPolicy)return null;var n=null;t.currentScript&&t.currentScript.hasAttribute("data-tt-policy-suffix")&&(n=t.currentScript.getAttribute("data-tt-policy-suffix"));var r="dompurify"+(n?"#"+n:"");try{return e.createPolicy(r,{createHTML:function(e){return e}})}catch(o){return console.warn("TrustedTypes policy "+r+" could not be created."),null}};return function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:Y(),n=function(t){return e(t)};if(n.version="2.3.3",n.removed=[],!t||!t.document||9!==t.document.nodeType)return n.isSupported=!1,n;var r=t.document,o=t.document,a=t.DocumentFragment,l=t.HTMLTemplateElement,c=t.Node,s=t.Element,u=t.NodeFilter,m=t.NamedNodeMap,x=void 0===m?t.NamedNodeMap||t.MozNamedAttrMap:m,V=t.Text,X=t.Comment,$=t.DOMParser,Z=t.trustedTypes,J=s.prototype,Q=E(J,"cloneNode"),ee=E(J,"nextSibling"),te=E(J,"childNodes"),ne=E(J,"parentNode");if("function"==typeof l){var re=o.createElement("template");re.content&&re.content.ownerDocument&&(o=re.content.ownerDocument)}var oe=K(Z,r),ie=oe&&ze?oe.createHTML(""):"",ae=o,le=ae.implementation,ce=ae.createNodeIterator,se=ae.createDocumentFragment,ue=ae.getElementsByTagName,me=r.importNode,fe={};try{fe=w(o).documentMode?o.documentMode:{}}catch(bt){}var pe={};n.isSupported="function"==typeof ne&&le&&void 0!==le.createHTMLDocument&&9!==fe;var de=z,he=H,ge=U,ye=P,ve=B,be=W,Te=j,Ae=null,xe=S({},[].concat(q(R),q(_),q(N),q(k),q(M))),Se=null,we=S({},[].concat(q(L),q(F),q(I),q(C))),Ee=null,Re=null,_e=!0,Ne=!0,De=!1,ke=!1,Oe=!1,Me=!1,Le=!1,Fe=!1,Ie=!1,Ce=!0,ze=!1,He=!0,Ue=!0,Pe=!1,je={},Be=null,We=S({},["annotation-xml","audio","colgroup","desc","foreignobject","head","iframe","math","mi","mn","mo","ms","mtext","noembed","noframes","noscript","plaintext","script","style","svg","template","thead","title","video","xmp"]),Ge=null,qe=S({},["audio","video","img","source","image","track"]),Ye=null,Ke=S({},["alt","class","for","id","label","name","pattern","placeholder","role","summary","title","value","style","xmlns"]),Ve="http://www.w3.org/1998/Math/MathML",Xe="http://www.w3.org/2000/svg",$e="http://www.w3.org/1999/xhtml",Ze=$e,Je=!1,Qe=void 0,et=["application/xhtml+xml","text/html"],tt=void 0,nt=null,rt=o.createElement("form"),ot=function(e){nt&&nt===e||(e&&"object"===(void 0===e?"undefined":G(e))||(e={}),e=w(e),Ae="ALLOWED_TAGS"in e?S({},e.ALLOWED_TAGS):xe,Se="ALLOWED_ATTR"in e?S({},e.ALLOWED_ATTR):we,Ye="ADD_URI_SAFE_ATTR"in e?S(w(Ke),e.ADD_URI_SAFE_ATTR):Ke,Ge="ADD_DATA_URI_TAGS"in e?S(w(qe),e.ADD_DATA_URI_TAGS):qe,Be="FORBID_CONTENTS"in e?S({},e.FORBID_CONTENTS):We,Ee="FORBID_TAGS"in e?S({},e.FORBID_TAGS):{},Re="FORBID_ATTR"in e?S({},e.FORBID_ATTR):{},je="USE_PROFILES"in e&&e.USE_PROFILES,_e=!1!==e.ALLOW_ARIA_ATTR,Ne=!1!==e.ALLOW_DATA_ATTR,De=e.ALLOW_UNKNOWN_PROTOCOLS||!1,ke=e.SAFE_FOR_TEMPLATES||!1,Oe=e.WHOLE_DOCUMENT||!1,Fe=e.RETURN_DOM||!1,Ie=e.RETURN_DOM_FRAGMENT||!1,Ce=!1!==e.RETURN_DOM_IMPORT,ze=e.RETURN_TRUSTED_TYPE||!1,Le=e.FORCE_BODY||!1,He=!1!==e.SANITIZE_DOM,Ue=!1!==e.KEEP_CONTENT,Pe=e.IN_PLACE||!1,Te=e.ALLOWED_URI_REGEXP||Te,Ze=e.NAMESPACE||$e,Qe=Qe=-1===et.indexOf(e.PARSER_MEDIA_TYPE)?"text/html":e.PARSER_MEDIA_TYPE,tt="application/xhtml+xml"===Qe?function(e){return e}:h,ke&&(Ne=!1),Ie&&(Fe=!0),je&&(Ae=S({},[].concat(q(M))),Se=[],!0===je.html&&(S(Ae,R),S(Se,L)),!0===je.svg&&(S(Ae,_),S(Se,F),S(Se,C)),!0===je.svgFilters&&(S(Ae,N),S(Se,F),S(Se,C)),!0===je.mathMl&&(S(Ae,k),S(Se,I),S(Se,C))),e.ADD_TAGS&&(Ae===xe&&(Ae=w(Ae)),S(Ae,e.ADD_TAGS)),e.ADD_ATTR&&(Se===we&&(Se=w(Se)),S(Se,e.ADD_ATTR)),e.ADD_URI_SAFE_ATTR&&S(Ye,e.ADD_URI_SAFE_ATTR),e.FORBID_CONTENTS&&(Be===We&&(Be=w(Be)),S(Be,e.FORBID_CONTENTS)),Ue&&(Ae["#text"]=!0),Oe&&S(Ae,["html","head","body"]),Ae.table&&(S(Ae,["tbody"]),delete Ee.tbody),i&&i(e),nt=e)},it=S({},["mi","mo","mn","ms","mtext"]),at=S({},["foreignobject","desc","title","annotation-xml"]),lt=S({},_);S(lt,N),S(lt,D);var ct=S({},k);S(ct,O);var st=function(e){d(n.removed,{element:e});try{e.parentNode.removeChild(e)}catch(bt){try{e.outerHTML=ie}catch(bt){e.remove()}}},ut=function(e,t){try{d(n.removed,{attribute:t.getAttributeNode(e),from:t})}catch(bt){d(n.removed,{attribute:null,from:t})}if(t.removeAttribute(e),"is"===e&&!Se[e])if(Fe||Ie)try{st(t)}catch(bt){}else try{t.setAttribute(e,"")}catch(bt){}},mt=function(e){var t=void 0,n=void 0;if(Le)e="<remove></remove>"+e;else{var r=g(e,/^[\r\n\t ]+/);n=r&&r[0]}"application/xhtml+xml"===Qe&&(e='<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body>'+e+"</body></html>");var i=oe?oe.createHTML(e):e;if(Ze===$e)try{t=(new $).parseFromString(i,Qe)}catch(bt){}if(!t||!t.documentElement){t=le.createDocument(Ze,"template",null);try{t.documentElement.innerHTML=Je?"":i}catch(bt){}}var a=t.body||t.documentElement;return e&&n&&a.insertBefore(o.createTextNode(n),a.childNodes[0]||null),Ze===$e?ue.call(t,Oe?"html":"body")[0]:Oe?t.documentElement:a},ft=function(e){return ce.call(e.ownerDocument||e,e,u.SHOW_ELEMENT|u.SHOW_COMMENT|u.SHOW_TEXT,null,!1)},pt=function(e){return"object"===(void 0===c?"undefined":G(c))?e instanceof c:e&&"object"===(void 0===e?"undefined":G(e))&&"number"==typeof e.nodeType&&"string"==typeof e.nodeName},dt=function(e,t,r){pe[e]&&f(pe[e],function(e){e.call(n,t,r,nt)})},ht=function(e){var t,r=void 0;if(dt("beforeSanitizeElements",e,null),!((t=e)instanceof V||t instanceof X||"string"==typeof t.nodeName&&"string"==typeof t.textContent&&"function"==typeof t.removeChild&&t.attributes instanceof x&&"function"==typeof t.removeAttribute&&"function"==typeof t.setAttribute&&"string"==typeof t.namespaceURI&&"function"==typeof t.insertBefore))return st(e),!0;if(g(e.nodeName,/[\u0080-\uFFFF]/))return st(e),!0;var o=tt(e.nodeName);if(dt("uponSanitizeElement",e,{tagName:o,allowedTags:Ae}),!pt(e.firstElementChild)&&(!pt(e.content)||!pt(e.content.firstElementChild))&&T(/<[/\w]/g,e.innerHTML)&&T(/<[/\w]/g,e.textContent))return st(e),!0;if("select"===o&&T(/<template/i,e.innerHTML))return st(e),!0;if(!Ae[o]||Ee[o]){if(Ue&&!Be[o]){var i=ne(e)||e.parentNode,a=te(e)||e.childNodes;if(a&&i)for(var l=a.length-1;l>=0;--l)i.insertBefore(Q(a[l],!0),ee(e))}return st(e),!0}return e instanceof s&&!function(e){var t=ne(e);t&&t.tagName||(t={namespaceURI:$e,tagName:"template"});var n=h(e.tagName),r=h(t.tagName);if(e.namespaceURI===Xe)return t.namespaceURI===$e?"svg"===n:t.namespaceURI===Ve?"svg"===n&&("annotation-xml"===r||it[r]):Boolean(lt[n]);if(e.namespaceURI===Ve)return t.namespaceURI===$e?"math"===n:t.namespaceURI===Xe?"math"===n&&at[r]:Boolean(ct[n]);if(e.namespaceURI===$e){if(t.namespaceURI===Xe&&!at[r])return!1;if(t.namespaceURI===Ve&&!it[r])return!1;var o=S({},["title","style","font","a","script"]);return!ct[n]&&(o[n]||!lt[n])}return!1}(e)?(st(e),!0):"noscript"!==o&&"noembed"!==o||!T(/<\/no(script|embed)/i,e.innerHTML)?(ke&&3===e.nodeType&&(r=e.textContent,r=y(r,de," "),r=y(r,he," "),e.textContent!==r&&(d(n.removed,{element:e.cloneNode()}),e.textContent=r)),dt("afterSanitizeElements",e,null),!1):(st(e),!0)},gt=function(e,t,n){if(He&&("id"===t||"name"===t)&&(n in o||n in rt))return!1;if(Ne&&!Re[t]&&T(ge,t));else if(_e&&T(ye,t));else{if(!Se[t]||Re[t])return!1;if(Ye[t]);else if(T(Te,y(n,be,"")));else if("src"!==t&&"xlink:href"!==t&&"href"!==t||"script"===e||0!==v(n,"data:")||!Ge[e])if(De&&!T(ve,y(n,be,"")));else if(n)return!1}return!0},yt=function(e){var t=void 0,r=void 0,o=void 0,i=void 0;dt("beforeSanitizeAttributes",e,null);var a=e.attributes;if(a){var l={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:Se};for(i=a.length;i--;){var c=t=a[i],s=c.name,u=c.namespaceURI;if(r=b(t.value),o=tt(s),l.attrName=o,l.attrValue=r,l.keepAttr=!0,l.forceKeepAttr=void 0,dt("uponSanitizeAttribute",e,l),r=l.attrValue,!l.forceKeepAttr&&(ut(s,e),l.keepAttr))if(T(/\/>/i,r))ut(s,e);else{ke&&(r=y(r,de," "),r=y(r,he," "));var m=tt(e.nodeName);if(gt(m,o,r))try{u?e.setAttributeNS(u,s,r):e.setAttribute(s,r),p(n.removed)}catch(bt){}}}dt("afterSanitizeAttributes",e,null)}},vt=function e(t){var n=void 0,r=ft(t);for(dt("beforeSanitizeShadowDOM",t,null);n=r.nextNode();)dt("uponSanitizeShadowNode",n,null),ht(n)||(n.content instanceof a&&e(n.content),yt(n));dt("afterSanitizeShadowDOM",t,null)};return n.sanitize=function(e,o){var i=void 0,l=void 0,s=void 0,u=void 0,m=void 0;if((Je=!e)&&(e="\x3c!--\x3e"),"string"!=typeof e&&!pt(e)){if("function"!=typeof e.toString)throw A("toString is not a function");if("string"!=typeof(e=e.toString()))throw A("dirty is not a string, aborting")}if(!n.isSupported){if("object"===G(t.toStaticHTML)||"function"==typeof t.toStaticHTML){if("string"==typeof e)return t.toStaticHTML(e);if(pt(e))return t.toStaticHTML(e.outerHTML)}return e}if(Me||ot(o),n.removed=[],"string"==typeof e&&(Pe=!1),Pe);else if(e instanceof c)1===(l=(i=mt("\x3c!----\x3e")).ownerDocument.importNode(e,!0)).nodeType&&"BODY"===l.nodeName?i=l:"HTML"===l.nodeName?i=l:i.appendChild(l);else{if(!Fe&&!ke&&!Oe&&-1===e.indexOf("<"))return oe&&ze?oe.createHTML(e):e;if(!(i=mt(e)))return Fe?null:ie}i&&Le&&st(i.firstChild);for(var f=ft(Pe?e:i);s=f.nextNode();)3===s.nodeType&&s===u||ht(s)||(s.content instanceof a&&vt(s.content),yt(s),u=s);if(u=null,Pe)return e;if(Fe){if(Ie)for(m=se.call(i.ownerDocument);i.firstChild;)m.appendChild(i.firstChild);else m=i;return Ce&&(m=me.call(r,m,!0)),m}var p=Oe?i.outerHTML:i.innerHTML;return ke&&(p=y(p,de," "),p=y(p,he," ")),oe&&ze?oe.createHTML(p):p},n.setConfig=function(e){ot(e),Me=!0},n.clearConfig=function(){nt=null,Me=!1},n.isValidAttribute=function(e,t,n){nt||ot({});var r=tt(e),o=tt(t);return gt(r,o,n)},n.addHook=function(e,t){"function"==typeof t&&(pe[e]=pe[e]||[],d(pe[e],t))},n.removeHook=function(e){pe[e]&&p(pe[e])},n.removeHooks=function(e){pe[e]&&(pe[e]=[])},n.removeAllHooks=function(){pe={}},n}()});
+},{}],"pBGv":[function(require,module,exports) {
+
+var t,e,n=module.exports={};function r(){throw new Error("setTimeout has not been defined")}function o(){throw new Error("clearTimeout has not been defined")}function i(e){if(t===setTimeout)return setTimeout(e,0);if((t===r||!t)&&setTimeout)return t=setTimeout,setTimeout(e,0);try{return t(e,0)}catch(n){try{return t.call(null,e,0)}catch(n){return t.call(this,e,0)}}}function u(t){if(e===clearTimeout)return clearTimeout(t);if((e===o||!e)&&clearTimeout)return e=clearTimeout,clearTimeout(t);try{return e(t)}catch(n){try{return e.call(null,t)}catch(n){return e.call(this,t)}}}!function(){try{t="function"==typeof setTimeout?setTimeout:r}catch(n){t=r}try{e="function"==typeof clearTimeout?clearTimeout:o}catch(n){e=o}}();var c,s=[],l=!1,a=-1;function f(){l&&c&&(l=!1,c.length?s=c.concat(s):a=-1,s.length&&h())}function h(){if(!l){var t=i(f);l=!0;for(var e=s.length;e;){for(c=s,s=[];++a<e;)c&&c[a].run();a=-1,e=s.length}c=null,l=!1,u(t)}}function m(t,e){this.fun=t,this.array=e}function p(){}n.nextTick=function(t){var e=new Array(arguments.length-1);if(arguments.length>1)for(var n=1;n<arguments.length;n++)e[n-1]=arguments[n];s.push(new m(t,e)),1!==s.length||l||i(h)},m.prototype.run=function(){this.fun.apply(null,this.array)},n.title="browser",n.env={},n.argv=[],n.version="",n.versions={},n.on=p,n.addListener=p,n.once=p,n.off=p,n.removeListener=p,n.removeAllListeners=p,n.emit=p,n.prependListener=p,n.prependOnceListener=p,n.listeners=function(t){return[]},n.binding=function(t){throw new Error("process.binding is not supported")},n.cwd=function(){return"/"},n.chdir=function(t){throw new Error("process.chdir is not supported")},n.umask=function(){return 0};
+},{}],"C4Nx":[function(require,module,exports) {
+var process = require("process");
+var n=require("process");function e(n){return(e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(n){return typeof n}:function(n){return n&&"function"==typeof Symbol&&n.constructor===Symbol&&n!==Symbol.prototype?"symbol":typeof n})(n)}var t={};!function(e){"use strict";var r;(t["Affjax"]=t["Affjax"]||{})._ajax=(r={},"undefined"==typeof module||!module.require||void 0!==n&&n.versions.electron?(r.newXHR=function(){return new XMLHttpRequest},r.fixupUrl=function(n){return n||"/"},r.getResponse=function(n){return n.response}):(r.newXHR=function(){return new(module.require("xhr2"))},r.fixupUrl=function(n,e){if(null===e.nodejsBaseUrl){var t=module.require("url"),r=t.parse(n);return r.protocol=r.protocol||"http:",r.hostname=r.hostname||"localhost",t.format(r)}return n||"/"},r.getResponse=function(n){return n.response}),function(n,e,t,u){return function(a,o){var i=r.newXHR(),c=r.fixupUrl(u.url,i);if(i.open(u.method||"GET",c,!0,u.username,u.password),u.headers)try{for(var f,l=0;null!=(f=u.headers[l]);l++)i.setRequestHeader(f.field,f.value)}catch(d){a(d)}var s=function(n){return function(){a(new Error(n))}};return i.onerror=s(e),i.ontimeout=s(n),i.onload=function(){o({status:i.status,statusText:i.statusText,headers:i.getAllResponseHeaders().split("\r\n").filter(function(n){return n.length>0}).map(function(n){var e=n.indexOf(":");return t(n.substring(0,e))(n.substring(e+2))}),body:r.getResponse(i)})},i.responseType=u.responseType,i.withCredentials=u.withCredentials,i.timeout=u.timeout,i.send(u.content),function(n,e,t){try{i.abort()}catch(d){return e(d)}return t()}}})}(),function(n){"use strict";n["Control.Semigroupoid"]=n["Control.Semigroupoid"]||{};var e=n["Control.Semigroupoid"];e.compose=function(n){return n.compose},e.semigroupoidFn={compose:function(n){return function(e){return function(t){return n(e(t))}}}}}(t),function(n){"use strict";n["Control.Category"]=n["Control.Category"]||{};var e=n["Control.Category"],t=n["Control.Semigroupoid"],r={identity:function(n){return n},Semigroupoid0:function(){return t.semigroupoidFn}};e.identity=function(n){return n.identity},e.categoryFn=r}(t),function(n){"use strict";n["Data.Function"]=n["Data.Function"]||{};var e=n["Data.Function"];e.flip=function(n){return function(e){return function(t){return n(t)(e)}}},e.const=function(n){return function(e){return n}},e.applyFlipped=function(n){return function(e){return e(n)}},e.on=function(n){return function(e){return function(t){return function(r){return n(e(t))(e(r))}}}}}(t),function(n){"use strict";(t["Data.Functor"]=t["Data.Functor"]||{}).arrayMap=function(n){return function(e){for(var t=e.length,r=new Array(t),u=0;u<t;u++)r[u]=n(e[u]);return r}}}(),function(n){"use strict";(t["Data.Unit"]=t["Data.Unit"]||{}).unit={}}(),function(n){"use strict";n["Data.Unit"]=n["Data.Unit"]||{};var e=n["Data.Unit"],t=n["Data.Unit"];e.unit=t.unit}(t),function(n){"use strict";n["Data.Functor"]=n["Data.Functor"]||{};var e=n["Data.Functor"],t=n["Data.Functor"],r=n["Data.Function"],u=n["Data.Unit"],a=function(n){return n.map},o={map:t.arrayMap};e.map=a,e.mapFlipped=function(n){return function(e){return function(t){return a(n)(t)(e)}}},e.void=function(n){return a(n)(r.const(u.unit))},e.voidLeft=function(n){return function(e){return function(t){return a(n)(r.const(t))(e)}}},e.functorArray=o}(t),function(n){"use strict";n["Data.Maybe"]=n["Data.Maybe"]||{};var e=n["Data.Maybe"],t=n["Control.Category"],r=n["Data.Function"],u=n["Data.Functor"],a=function(){function n(){}return n.value=new n,n}(),o=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),i=function(n){return function(e){return function(t){if(t instanceof a)return n;if(t instanceof o)return e(t.value0);throw new Error("Failed pattern match at Data.Maybe (line 230, column 1 - line 230, column 51): "+[n.constructor.name,e.constructor.name,t.constructor.name])}}},c=i(!0)(r.const(!1)),f=i(!1)(r.const(!0)),l={map:function(n){return function(e){return e instanceof o?new o(n(e.value0)):a.value}}},s={apply:function(n){return function(e){if(n instanceof o)return u.map(l)(n.value0)(e);if(n instanceof a)return a.value;throw new Error("Failed pattern match at Data.Maybe (line 68, column 1 - line 70, column 30): "+[n.constructor.name,e.constructor.name])}},Functor0:function(){return l}},d={bind:function(n){return function(e){if(n instanceof o)return e(n.value0);if(n instanceof a)return a.value;throw new Error("Failed pattern match at Data.Maybe (line 126, column 1 - line 128, column 28): "+[n.constructor.name,e.constructor.name])}},Apply0:function(){return s}},v={pure:o.create,Apply0:function(){return s}};e.Nothing=a,e.Just=o,e.maybe=i,e.fromMaybe=function(n){return i(n)(t.identity(t.categoryFn))},e.isJust=f,e.isNothing=c,e.fromJust=function(){return function(n){if(n instanceof o)return n.value0;throw new Error("Failed pattern match at Data.Maybe (line 281, column 1 - line 281, column 46): "+[n.constructor.name])}},e.functorMaybe=l,e.applyMaybe=s,e.applicativeMaybe=v,e.bindMaybe=d}(t),function(n){"use strict";n["Data.MediaType.Common"]=n["Data.MediaType.Common"]||{};var e=n["Data.MediaType.Common"];e.applicationFormURLEncoded="application/x-www-form-urlencoded",e.applicationJSON="application/json"}(t),function(n){"use strict";n["Affjax.RequestBody"]=n["Affjax.RequestBody"]||{};var e=n["Affjax.RequestBody"],t=n["Data.Maybe"],r=n["Data.MediaType.Common"],u=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),a=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),o=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),i=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),c=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),f=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),l=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),s=i.create;e.ArrayView=u,e.Blob=a,e.Document=o,e.String=i,e.FormData=c,e.FormURLEncoded=f,e.Json=l,e.string=s,e.toMediaType=function(n){return n instanceof f?new t.Just(r.applicationFormURLEncoded):n instanceof l?new t.Just(r.applicationJSON):t.Nothing.value}}(t),function(n){"use strict";(t["Unsafe.Coerce"]=t["Unsafe.Coerce"]||{}).unsafeCoerce=function(n){return n}}(),function(n){"use strict";n["Unsafe.Coerce"]=n["Unsafe.Coerce"]||{};var e=n["Unsafe.Coerce"],t=n["Unsafe.Coerce"];e.unsafeCoerce=t.unsafeCoerce}(t),function(n){"use strict";n["Safe.Coerce"]=n["Safe.Coerce"]||{};var e=n["Safe.Coerce"],t=n["Unsafe.Coerce"];e.coerce=function(){return t.unsafeCoerce}}(t),function(n){"use strict";n["Data.Newtype"]=n["Data.Newtype"]||{};var e=n["Data.Newtype"],t=n["Safe.Coerce"],r=t.coerce;e.unwrap=r,e.alaF=function(){return function(){return function(){return function(){return function(n){return t.coerce()}}}}}}(t),function(n){"use strict";n["Affjax.RequestHeader"]=n["Affjax.RequestHeader"]||{};var e=n["Affjax.RequestHeader"],t=n["Data.Newtype"],r=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),u=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),a=function(){function n(n,e){this.value0=n,this.value1=e}return n.create=function(e){return function(t){return new n(e,t)}},n}();e.Accept=r,e.ContentType=u,e.RequestHeader=a,e.name=function(n){if(n instanceof r)return"Accept";if(n instanceof u)return"Content-Type";if(n instanceof a)return n.value0;throw new Error("Failed pattern match at Affjax.RequestHeader (line 21, column 1 - line 21, column 32): "+[n.constructor.name])},e.value=function(n){if(n instanceof r)return t.unwrap()(n.value0);if(n instanceof u)return t.unwrap()(n.value0);if(n instanceof a)return n.value1;throw new Error("Failed pattern match at Affjax.RequestHeader (line 26, column 1 - line 26, column 33): "+[n.constructor.name])}}(t),function(n){"use strict";n["Affjax.ResponseFormat"]=n["Affjax.ResponseFormat"]||{};var e=n["Affjax.ResponseFormat"],t=n["Control.Category"],r=n["Data.Maybe"],u=n["Data.MediaType.Common"],a=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),o=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),i=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),c=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),f=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),l=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),s=new f(t.identity(t.categoryFn)),d=new c(t.identity(t.categoryFn)),v=new l(t.identity(t.categoryFn));e.ArrayBuffer=a,e.Blob=o,e.Document=i,e.Json=c,e.String=f,e.Ignore=l,e.json=d,e.string=s,e.ignore=v,e.toResponseType=function(n){if(n instanceof a)return"arraybuffer";if(n instanceof o)return"blob";if(n instanceof i)return"document";if(n instanceof c)return"text";if(n instanceof f)return"text";if(n instanceof l)return"";throw new Error("Failed pattern match at Affjax.ResponseFormat (line 44, column 3 - line 50, column 19): "+[n.constructor.name])},e.toMediaType=function(n){return n instanceof c?new r.Just(u.applicationJSON):r.Nothing.value}}(t),function(n){"use strict";n["Affjax.ResponseHeader"]=n["Affjax.ResponseHeader"]||{};var e=n["Affjax.ResponseHeader"],t=function(){function n(n,e){this.value0=n,this.value1=e}return n.create=function(e){return function(t){return new n(e,t)}},n}();e.ResponseHeader=t}(t),function(n){"use strict";n["Control.Alt"]=n["Control.Alt"]||{};n["Control.Alt"].alt=function(n){return n.alt}}(t),function(n){"use strict";(t["Control.Apply"]=t["Control.Apply"]||{}).arrayApply=function(n){return function(e){for(var t=n.length,r=e.length,u=new Array(t*r),a=0,o=0;o<t;o++)for(var i=n[o],c=0;c<r;c++)u[a++]=i(e[c]);return u}}}(),function(n){"use strict";n["Control.Apply"]=n["Control.Apply"]||{};var e=n["Control.Apply"],t=n["Control.Apply"],r=n["Control.Category"],u=n["Data.Function"],a=n["Data.Functor"],o={apply:t.arrayApply,Functor0:function(){return a.functorArray}},i=function(n){return n.apply};e.apply=i,e.applySecond=function(n){return function(e){return function(t){return i(n)(a.map(n.Functor0())(u.const(r.identity(r.categoryFn)))(e))(t)}}},e.lift2=function(n){return function(e){return function(t){return function(r){return i(n)(a.map(n.Functor0())(e)(t))(r)}}}},e.applyArray=o}(t),function(n){"use strict";n["Control.Applicative"]=n["Control.Applicative"]||{};var e=n["Control.Applicative"],t=n["Control.Apply"],r=n["Data.Unit"],u=function(n){return n.pure};e.pure=u,e.liftA1=function(n){return function(e){return function(r){return t.apply(n.Apply0())(u(n)(e))(r)}}},e.unless=function(n){return function(e){return function(t){if(!e)return t;if(e)return u(n)(r.unit);throw new Error("Failed pattern match at Control.Applicative (line 66, column 1 - line 66, column 65): "+[e.constructor.name,t.constructor.name])}}},e.when=function(n){return function(e){return function(t){if(e)return t;if(!e)return u(n)(r.unit);throw new Error("Failed pattern match at Control.Applicative (line 61, column 1 - line 61, column 63): "+[e.constructor.name,t.constructor.name])}}}}(t),function(n){"use strict";(t["Control.Bind"]=t["Control.Bind"]||{}).arrayBind=function(n){return function(e){for(var t=[],r=0,u=n.length;r<u;r++)Array.prototype.push.apply(t,e(n[r]));return t}}}(),function(n){"use strict";n["Control.Bind"]=n["Control.Bind"]||{};var e=n["Control.Bind"],t=n["Control.Bind"],r=n["Control.Apply"],u=n["Control.Category"],a=n["Data.Function"],o={bind:t.arrayBind,Apply0:function(){return r.applyArray}},i=function(n){return n.bind},c=function(n){return a.flip(i(n))},f={discard:function(n){return i(n)}};e.bind=i,e.bindFlipped=c,e.discard=function(n){return n.discard},e.join=function(n){return function(e){return i(n)(e)(u.identity(u.categoryFn))}},e.composeKleisli=function(n){return function(e){return function(t){return function(r){return i(n)(e(r))(t)}}}},e.composeKleisliFlipped=function(n){return function(e){return function(t){return function(r){return c(n)(e)(t(r))}}}},e.bindArray=o,e.discardUnit=f}(t),function(n){"use strict";n["Data.Either"]=n["Data.Either"]||{};var e=n["Data.Either"],t=n["Data.Function"],r=n["Data.Functor"],u=n["Data.Maybe"],a=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),o=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),i={map:function(n){return function(e){if(e instanceof a)return new a(e.value0);if(e instanceof o)return new o(n(e.value0));throw new Error("Failed pattern match at Data.Either (line 31, column 1 - line 31, column 52): "+[e.constructor.name])}}},c=function(n){return function(e){return function(t){if(t instanceof a)return n(t.value0);if(t instanceof o)return e(t.value0);throw new Error("Failed pattern match at Data.Either (line 208, column 1 - line 208, column 64): "+[n.constructor.name,e.constructor.name,t.constructor.name])}}},f=c(t.const(u.Nothing.value))(u.Just.create),l={apply:function(n){return function(e){if(n instanceof a)return new a(n.value0);if(n instanceof o)return r.map(i)(n.value0)(e);throw new Error("Failed pattern match at Data.Either (line 70, column 1 - line 72, column 30): "+[n.constructor.name,e.constructor.name])}},Functor0:function(){return i}},s={bind:c(function(n){return function(e){return new a(n)}})(function(n){return function(e){return e(n)}}),Apply0:function(){return l}},d={pure:o.create,Apply0:function(){return l}};e.Left=a,e.Right=o,e.either=c,e.note=function(n){return u.maybe(new a(n))(o.create)},e.hush=f,e.functorEither=i,e.applicativeEither=d,e.bindEither=s}(t),function(n){"use strict";n["Control.Monad.Error.Class"]=n["Control.Monad.Error.Class"]||{};var e=n["Control.Monad.Error.Class"],t=n["Control.Applicative"],r=n["Data.Either"],u=n["Data.Functor"];e.throwError=function(n){return n.throwError},e.try=function(n){return function(e){return n.catchError(u.map(n.MonadThrow0().Monad0().Bind1().Apply0().Functor0())(r.Right.create)(e))((a=t.pure(n.MonadThrow0().Monad0().Applicative0()),function(n){return a(r.Left.create(n))}));var a}}}(t),function(n){"use strict";n["Control.Monad"]=n["Control.Monad"]||{};var e=n["Control.Monad"],t=n["Control.Applicative"],r=n["Control.Bind"];e.whenM=function(n){return function(e){return function(u){return r.bind(n.Bind1())(e)(function(e){return t.when(n.Applicative0())(e)(u)})}}},e.unlessM=function(n){return function(e){return function(u){return r.bind(n.Bind1())(e)(function(e){return t.unless(n.Applicative0())(e)(u)})}}},e.ap=function(n){return function(e){return function(u){return r.bind(n.Bind1())(e)(function(e){return r.bind(n.Bind1())(u)(function(r){return t.pure(n.Applicative0())(e(r))})})}}}}(t),function(n){"use strict";n.concatString=function(n){return function(e){return n+e}},n.concatArray=function(n){return function(e){return 0===n.length?e:0===e.length?n:n.concat(e)}}}(t["Data.Semigroup"]=t["Data.Semigroup"]||{}),function(n){"use strict";n["Data.Semigroup"]=n["Data.Semigroup"]||{};var e=n["Data.Semigroup"],t=n["Data.Semigroup"],r={append:t.concatString},u={append:t.concatArray};e.append=function(n){return n.append},e.semigroupString=r,e.semigroupArray=u}(t),function(n){"use strict";n["Control.Monad.Except.Trans"]=n["Control.Monad.Except.Trans"]||{};var e=n["Control.Monad.Except.Trans"],t=n["Control.Applicative"],r=n["Control.Bind"],u=n["Control.Monad"],a=n["Data.Either"],o=n["Data.Functor"],i=n["Data.Semigroup"],c=function(n){return n},f=function(n){return function(e){return n(e)}},l=function(n){return{map:function(e){return f(o.map(n)(o.map(a.functorEither)(e)))}}},s=function(n){return{Applicative0:function(){return p(n)},Bind1:function(){return d(n)}}},d=function(n){return{bind:function(e){return function(u){return r.bind(n.Bind1())(e)(a.either((o=t.pure(n.Applicative0()),function(n){return o(a.Left.create(n))}))(function(n){return u(n)}));var o}},Apply0:function(){return v(n)}}},v=function(n){return{apply:u.ap(s(n)),Functor0:function(){return l(n.Bind1().Apply0().Functor0())}}},p=function(n){return{pure:(e=t.pure(n.Applicative0()),function(n){return c(e(a.Right.create(n)))}),Apply0:function(){return v(n)}};var e};e.runExceptT=function(n){return n},e.mapExceptT=f,e.functorExceptT=l,e.applicativeExceptT=p,e.bindExceptT=d,e.altExceptT=function(n){return function(e){return{alt:function(u){return function(o){return r.bind(e.Bind1())(u)(function(u){if(u instanceof a.Right)return t.pure(e.Applicative0())(new a.Right(u.value0));if(u instanceof a.Left)return r.bind(e.Bind1())(o)(function(r){if(r instanceof a.Right)return t.pure(e.Applicative0())(new a.Right(r.value0));if(r instanceof a.Left)return t.pure(e.Applicative0())(new a.Left(i.append(n)(u.value0)(r.value0)));throw new Error("Failed pattern match at Control.Monad.Except.Trans (line 87, column 9 - line 89, column 49): "+[r.constructor.name])});throw new Error("Failed pattern match at Control.Monad.Except.Trans (line 83, column 5 - line 89, column 49): "+[u.constructor.name])})}},Functor0:function(){return l(e.Bind1().Apply0().Functor0())}}}},e.monadThrowExceptT=function(n){return{throwError:(e=t.pure(n.Applicative0()),function(n){return c(e(a.Left.create(n)))}),Monad0:function(){return s(n)}};var e}}(t),function(n){"use strict";n["Control.Monad.Except"]=n["Control.Monad.Except"]||{};var e,t=n["Control.Monad.Except"],r=n["Control.Monad.Except.Trans"],u=n["Data.Newtype"],a=(e=u.unwrap(),function(n){return e(r.runExceptT(n))});t.runExcept=a}(t),function(n){"use strict";n.fromObject=function(n){return n},n.stringify=function(n){return JSON.stringify(n)},n._caseJson=function(n,e,t,r,u,a,o){return null==o?n():"boolean"==typeof o?e(o):"number"==typeof o?t(o):"string"==typeof o?r(o):"[object Array]"===Object.prototype.toString.call(o)?u(o):a(o)}}(t["Data.Argonaut.Core"]=t["Data.Argonaut.Core"]||{}),function(n){"use strict";n._copyST=function(n){return function(){var e={};for(var t in n)hasOwnProperty.call(n,t)&&(e[t]=n[t]);return e}},n.empty={},n.runST=function(n){return n()},n._fmapObject=function(n,e){var t={};for(var r in n)hasOwnProperty.call(n,r)&&(t[r]=e(n[r]));return t},n._mapWithKey=function(n,e){var t={};for(var r in n)hasOwnProperty.call(n,r)&&(t[r]=e(r)(n[r]));return t},n._foldM=function(n){return function(e){return function(t){return function(r){var u=t;function a(n){return function(t){return e(t)(n)(r[n])}}for(var o in r)hasOwnProperty.call(r,o)&&(u=n(u)(a(o)));return u}}}},n._lookup=function(n,e,t,r){return t in r?e(r[t]):n},n.toArrayWithKey=function(n){return function(e){var t=[];for(var r in e)hasOwnProperty.call(e,r)&&t.push(n(r)(e[r]));return t}}}(t["Foreign.Object"]=t["Foreign.Object"]||{}),function(n){"use strict";n.length=function(n){return n.length},n.findIndexImpl=function(n){return function(e){return function(t){return function(r){for(var u=0,a=r.length;u<a;u++)if(t(r[u]))return n(u);return e}}}},n._deleteAt=function(n){return function(e){return function(t){return function(r){if(t<0||t>=r.length)return e;var u=r.slice();return u.splice(t,1),n(u)}}}},n.concat=function(n){if(n.length<=1e4)return Array.prototype.concat.apply([],n);for(var e=[],t=0,r=n.length;t<r;t++)for(var u=n[t],a=0,o=u.length;a<o;a++)e.push(u[a]);return e},n.filter=function(n){return function(e){return e.filter(n)}},n.sortByImpl=function(){return function(n){return function(e){return function(t){var r;return t.length<2?t:(r=t.slice(0),function n(e,t,r,u,a,o){var i,c,f,l,s,d;for((i=a+(o-a>>1))-a>1&&n(e,t,u,r,a,i),o-i>1&&n(e,t,u,r,i,o),c=a,f=i,l=a;c<i&&f<o;)s=u[c],d=u[f],t(e(s)(d))>0?(r[l++]=d,++f):(r[l++]=s,++c);for(;c<i;)r[l++]=u[c++];for(;f<o;)r[l++]=u[f++]}(n,e,r,t.slice(0),0,t.length),r)}}}}(),n.slice=function(n){return function(e){return function(t){return t.slice(n,e)}}},n.unsafeIndexImpl=function(n){return function(e){return n[e]}}}(t["Data.Array"]=t["Data.Array"]||{}),function(n){"use strict";n.pushAll=function(n){return function(e){return function(){return e.push.apply(e,n)}}},n.unsafeFreeze=function(n){return function(){return n}},n.thaw=function(n){return function(){return n.slice()}}}(t["Data.Array.ST"]=t["Data.Array.ST"]||{}),function(n){"use strict";n["Data.Array.ST"]=n["Data.Array.ST"]||{};var e=n["Data.Array.ST"],t=n["Data.Array.ST"];e.withArray=function(n){return function(e){return function(){var r=t.thaw(e)();return n(r)(),t.unsafeFreeze(r)()}}},e.push=function(n){return t.pushAll([n])}}(t),function(n){"use strict";n["Data.Boolean"]=n["Data.Boolean"]||{};n["Data.Boolean"].otherwise=!0}(t),function(n){"use strict";var e=function(n){return function(e){return n===e}};n.eqIntImpl=e,n.eqCharImpl=e,n.eqStringImpl=e,n.eqArrayImpl=function(n){return function(e){return function(t){if(e.length!==t.length)return!1;for(var r=0;r<e.length;r++)if(!n(e[r])(t[r]))return!1;return!0}}}}(t["Data.Eq"]=t["Data.Eq"]||{}),function(n){"use strict";n["Data.Eq"]=n["Data.Eq"]||{};var e=n["Data.Eq"],t=n["Data.Eq"],r={eq:t.eqStringImpl},u={eq:t.eqIntImpl},a={eq:t.eqCharImpl},o=function(n){return n.eq};e.eq=o,e.eqInt=u,e.eqChar=a,e.eqString=r,e.eqUnit={eq:function(n){return function(n){return!0}}},e.eqArray=function(n){return{eq:t.eqArrayImpl(o(n))}}}(t),function(n){"use strict";n.foldrArray=function(n){return function(e){return function(t){for(var r=e,u=t.length-1;u>=0;u--)r=n(t[u])(r);return r}}},n.foldlArray=function(n){return function(e){return function(t){for(var r=e,u=t.length,a=0;a<u;a++)r=n(r)(t[a]);return r}}}}(t["Data.Foldable"]=t["Data.Foldable"]||{}),function(n){"use strict";n["Data.Monoid"]=n["Data.Monoid"]||{};var e=n["Data.Monoid"],t=n["Data.Semigroup"],r={mempty:"",Semigroup0:function(){return t.semigroupString}},u={mempty:[],Semigroup0:function(){return t.semigroupArray}},a=function(n){return n.mempty};e.mempty=a,e.guard=function(n){return function(e){return function(t){if(e)return t;if(!e)return a(n);throw new Error("Failed pattern match at Data.Monoid (line 94, column 1 - line 94, column 49): "+[e.constructor.name,t.constructor.name])}}},e.monoidString=r,e.monoidArray=u}(t),function(n){"use strict";n.boolConj=function(n){return function(e){return n&&e}},n.boolDisj=function(n){return function(e){return n||e}},n.boolNot=function(n){return!n}}(t["Data.HeytingAlgebra"]=t["Data.HeytingAlgebra"]||{}),function(n){"use strict";n["Data.HeytingAlgebra"]=n["Data.HeytingAlgebra"]||{};var e=n["Data.HeytingAlgebra"],t=n["Data.HeytingAlgebra"],r=function(n){return n.not},u=function(n){return n.ff},a=function(n){return n.disj},o={ff:!1,tt:!0,implies:function(n){return function(e){return a(o)(r(o)(n))(e)}},conj:t.boolConj,disj:t.boolDisj,not:t.boolNot};e.ff=u,e.disj=a,e.not=r,e.heytingAlgebraBoolean=o,e.heytingAlgebraFunction=function(n){return{ff:function(e){return u(n)},tt:function(e){return n.tt},implies:function(e){return function(t){return function(r){return n.implies(e(r))(t(r))}}},conj:function(e){return function(t){return function(r){return n.conj(e(r))(t(r))}}},disj:function(e){return function(t){return function(r){return a(n)(e(r))(t(r))}}},not:function(e){return function(t){return r(n)(e(t))}}}}}(t),function(n){"use strict";n["Data.Monoid.Disj"]=n["Data.Monoid.Disj"]||{};var e=n["Data.Monoid.Disj"],t=n["Data.HeytingAlgebra"];e.Disj=function(n){return n},e.monoidDisj=function(n){return{mempty:t.ff(n),Semigroup0:function(){return function(n){return{append:function(e){return function(r){return t.disj(n)(e)(r)}}}}(n)}}}}(t),function(n){"use strict";var e=function(n){return function(e){return function(t){return function(r){return function(u){return r<u?n:r===u?e:t}}}}};n.ordIntImpl=e,n.ordStringImpl=e,n.ordCharImpl=e}(t["Data.Ord"]=t["Data.Ord"]||{}),function(n){"use strict";n["Data.Ordering"]=n["Data.Ordering"]||{};var e=n["Data.Ordering"],t=function(){function n(){}return n.value=new n,n}(),r=function(){function n(){}return n.value=new n,n}(),u=function(){function n(){}return n.value=new n,n}(),a={eq:function(n){return function(e){return n instanceof t&&e instanceof t||(n instanceof r&&e instanceof r||n instanceof u&&e instanceof u)}}};e.LT=t,e.GT=r,e.EQ=u,e.eqOrdering=a}(t),function(n){"use strict";n["Data.Ord"]=n["Data.Ord"]||{};var e=n["Data.Ord"],t=n["Data.Ord"],r=n["Data.Eq"],u=n["Data.Ordering"],a={compare:function(n){return function(n){return u.EQ.value}},Eq0:function(){return r.eqUnit}},o={compare:t.ordStringImpl(u.LT.value)(u.EQ.value)(u.GT.value),Eq0:function(){return r.eqString}},i={compare:t.ordIntImpl(u.LT.value)(u.EQ.value)(u.GT.value),Eq0:function(){return r.eqInt}},c={compare:t.ordCharImpl(u.LT.value)(u.EQ.value)(u.GT.value),Eq0:function(){return r.eqChar}},f=function(n){return n.compare};e.compare=f,e.comparing=function(n){return function(e){return function(t){return function(r){return f(n)(e(t))(e(r))}}}},e.ordInt=i,e.ordString=o,e.ordChar=c,e.ordUnit=a}(t),function(n){"use strict";n["Data.Foldable"]=n["Data.Foldable"]||{};var e=n["Data.Foldable"],t=n["Data.Foldable"],r=n["Control.Applicative"],u=n["Control.Apply"],a=n["Data.Eq"],o=n["Data.Function"],i=n["Data.Maybe"],c=n["Data.Monoid"],f=n["Data.Monoid.Disj"],l=n["Data.Newtype"],s=n["Data.Ord"],d=n["Data.Ordering"],v=n["Data.Semigroup"],p=n["Data.Unit"],m=function(n){return n.foldr},g=function(n){return function(e){return function(t){return m(e)((a=u.applySecond(n.Apply0()),function(n){return a(t(n))}))(r.pure(n)(p.unit));var a}}},h=function(n){return n.foldl},b={foldr:function(n){return function(e){return function(t){if(t instanceof i.Nothing)return e;if(t instanceof i.Just)return n(t.value0)(e);throw new Error("Failed pattern match at Data.Foldable (line 138, column 1 - line 144, column 27): "+[n.constructor.name,e.constructor.name,t.constructor.name])}}},foldl:function(n){return function(e){return function(t){if(t instanceof i.Nothing)return e;if(t instanceof i.Just)return n(e)(t.value0);throw new Error("Failed pattern match at Data.Foldable (line 138, column 1 - line 144, column 27): "+[n.constructor.name,e.constructor.name,t.constructor.name])}}},foldMap:function(n){return function(e){return function(t){if(t instanceof i.Nothing)return c.mempty(n);if(t instanceof i.Just)return e(t.value0);throw new Error("Failed pattern match at Data.Foldable (line 138, column 1 - line 144, column 27): "+[e.constructor.name,t.constructor.name])}}}},w={foldr:t.foldrArray,foldl:t.foldlArray,foldMap:function(n){return(e=w,function(n){return function(t){return m(e)(function(e){return function(r){return v.append(n.Semigroup0())(t(e))(r)}})(c.mempty(n))}})(n);var e}},y=function(n){return n.foldMap};e.foldr=m,e.foldl=h,e.foldMap=y,e.traverse_=g,e.for_=function(n){return function(e){return o.flip(g(n)(e))}},e.intercalate=function(n){return function(e){return function(t){return function(r){return h(n)(function(n){return function(r){return n.init?{init:!1,acc:r}:{init:!1,acc:v.append(e.Semigroup0())(n.acc)(v.append(e.Semigroup0())(t)(r))}}})({init:!0,acc:c.mempty(e)})(r).acc}}}},e.any=function(n){return function(e){return l.alaF()()()()(f.Disj)(y(n)(f.monoidDisj(e)))}},e.maximum=function(n){return function(e){return function(n){return function(e){return h(n)(function(n){return function(t){if(n instanceof i.Nothing)return new i.Just(t);if(n instanceof i.Just)return new i.Just(a.eq(d.eqOrdering)(e(n.value0)(t))(d.GT.value)?n.value0:t);throw new Error("Failed pattern match at Data.Foldable (line 441, column 3 - line 441, column 27): "+[n.constructor.name,t.constructor.name])}})(i.Nothing.value)}}(e)(s.compare(n))}},e.minimum=function(n){return function(e){return function(n){return function(e){return h(n)(function(n){return function(t){if(n instanceof i.Nothing)return new i.Just(t);if(n instanceof i.Just)return new i.Just(a.eq(d.eqOrdering)(e(n.value0)(t))(d.LT.value)?n.value0:t);throw new Error("Failed pattern match at Data.Foldable (line 454, column 3 - line 454, column 27): "+[n.constructor.name,t.constructor.name])}})(i.Nothing.value)}}(e)(s.compare(n))}},e.foldableArray=w,e.foldableMaybe=b}(t),function(n){"use strict";n["Data.Tuple"]=n["Data.Tuple"]||{};var e=n["Data.Tuple"],t=n["Data.Eq"],r=n["Data.Ord"],u=n["Data.Ordering"],a=function(){function n(n,e){this.value0=n,this.value1=e}return n.create=function(e){return function(t){return new n(e,t)}},n}(),o={map:function(n){return function(e){return new a(e.value0,n(e.value1))}}};e.Tuple=a,e.fst=function(n){return n.value0},e.snd=function(n){return n.value1},e.uncurry=function(n){return function(e){return n(e.value0)(e.value1)}},e.ordTuple=function(n){return function(e){return{compare:function(t){return function(a){var o=r.compare(n)(t.value0)(a.value0);return o instanceof u.LT?u.LT.value:o instanceof u.GT?u.GT.value:r.compare(e)(t.value1)(a.value1)}},Eq0:function(){return(r=n.Eq0(),function(n){return{eq:function(e){return function(u){return t.eq(r)(e.value0)(u.value0)&&t.eq(n)(e.value1)(u.value1)}}}})(e.Eq0());var r}}}},e.functorTuple=o}(t),function(n){"use strict";(t["Data.Unfoldable"]=t["Data.Unfoldable"]||{}).unfoldrArrayImpl=function(n){return function(e){return function(t){return function(r){return function(u){return function(a){for(var o=[],i=a;;){var c=u(i);if(n(c))return o;var f=e(c);o.push(t(f)),i=r(f)}}}}}}}}(),function(n){"use strict";(t["Data.Unfoldable1"]=t["Data.Unfoldable1"]||{}).unfoldr1ArrayImpl=function(n){return function(e){return function(t){return function(r){return function(u){return function(a){for(var o=[],i=a;;){var c=u(i);o.push(t(c));var f=r(c);if(n(f))return o;i=e(f)}}}}}}}}(),function(n){"use strict";n["Data.Unfoldable1"]=n["Data.Unfoldable1"]||{};var e=n["Data.Unfoldable1"],t=n["Data.Unfoldable1"],r=n["Data.Maybe"],u=n["Data.Tuple"],a={unfoldr1:t.unfoldr1ArrayImpl(r.isNothing)(r.fromJust())(u.fst)(u.snd)};e.unfoldable1Array=a}(t),function(n){"use strict";n["Data.Unfoldable"]=n["Data.Unfoldable"]||{};var e=n["Data.Unfoldable"],t=n["Data.Unfoldable"],r=n["Data.Maybe"],u=n["Data.Tuple"],a=n["Data.Unfoldable1"],o={unfoldr:t.unfoldrArrayImpl(r.isNothing)(r.fromJust())(u.fst)(u.snd),Unfoldable10:function(){return a.unfoldable1Array}};e.unfoldr=function(n){return n.unfoldr},e.unfoldableArray=o}(t),function(n){"use strict";n["Data.Array"]=n["Data.Array"]||{};var e=n["Data.Array"],t=n["Data.Array"],r=n["Control.Bind"],u=n["Data.Array.ST"],a=n["Data.Boolean"],o=n["Data.Eq"],i=n["Data.Foldable"],c=n["Data.Function"],f=n["Data.Functor"],l=n["Data.Maybe"],s=n["Data.Ordering"],d=n["Data.Semigroup"],v=n["Data.Tuple"],p=n["Data.Unfoldable"],m=function(){return t.unsafeIndexImpl},g=function(n){return[n]},h=t.findIndexImpl(l.Just.create)(l.Nothing.value),b=t._deleteAt(l.Just.create)(l.Nothing.value),w=function(n){return function(e){return function(t){return 0===t.length?[]:l.maybe(t)(function(n){return l.fromJust()(b(n)(t))})(h(n(e))(t))}}},y=c.flip(r.bind(r.bindArray));e.toUnfoldable=function(n){return function(e){var r=t.length(e);return p.unfoldr(n)(function(n){if(n<r)return new l.Just(new v.Tuple(m()(e)(n),n+1|0));if(a.otherwise)return l.Nothing.value;throw new Error("Failed pattern match at Data.Array (line 158, column 3 - line 160, column 26): "+[n.constructor.name])})(0)}},e.null=function(n){return 0===t.length(n)},e.cons=function(n){return function(e){return d.append(d.semigroupArray)([n])(e)}},e.snoc=function(n){return function(e){return u.withArray(u.push(e))(n)()}},e.notElem=function(n){return function(e){return function(t){return l.isNothing(function(n){return function(e){return h(function(t){return o.eq(n)(t)(e)})}}(n)(e)(t))}}},e.find=function(n){return function(e){return f.map(l.functorMaybe)(m()(e))(h(n)(e))}},e.mapMaybe=function(n){return y((e=l.maybe([])(g),function(t){return e(n(t))}));var e},e.foldMap=function(n){return i.foldMap(i.foldableArray)(n)},e.intercalate=function(n){return i.intercalate(i.foldableArray)(n)},e.sortBy=function(n){return t.sortByImpl(n)(function(n){if(n instanceof s.GT)return 1;if(n instanceof s.EQ)return 0;if(n instanceof s.LT)return-1;throw new Error("Failed pattern match at Data.Array (line 831, column 31 - line 834, column 11): "+[n.constructor.name])})},e.drop=function(n){return function(e){return n<1?e:t.slice(n)(t.length(e))(e)}},e.delete=function(n){return w(o.eq(n))},e.deleteBy=w,e.length=t.length,e.concat=t.concat,e.filter=t.filter}(t),function(n){"use strict";n.runFn3=function(n){return function(e){return function(t){return function(r){return n(e,t,r)}}}},n.runFn4=function(n){return function(e){return function(t){return function(r){return function(u){return n(e,t,r,u)}}}}}}(t["Data.Function.Uncurried"]=t["Data.Function.Uncurried"]||{}),function(n){"use strict";n["Data.Function.Uncurried"]=n["Data.Function.Uncurried"]||{};var e=n["Data.Function.Uncurried"],t=n["Data.Function.Uncurried"];e.runFn3=t.runFn3,e.runFn4=t.runFn4}(t),function(n){"use strict";(t["Data.Traversable"]=t["Data.Traversable"]||{}).traverseArrayImpl=function(){function n(n){return[n]}function e(n){return function(e){return[n,e]}}function t(n){return function(e){return function(t){return[n,e,t]}}}function r(n){return function(e){return n.concat(e)}}return function(u){return function(a){return function(o){return function(i){return function(c){return function f(l,s){switch(s-l){case 0:return o([]);case 1:return a(n)(i(c[l]));case 2:return u(a(e)(i(c[l])))(i(c[l+1]));case 3:return u(u(a(t)(i(c[l])))(i(c[l+1])))(i(c[l+2]));default:var d=l+2*Math.floor((s-l)/4);return u(a(r)(f(l,d)))(f(d,s))}}(0,c.length)}}}}}}()}(),function(n){"use strict";n["Data.Traversable"]=n["Data.Traversable"]||{};var e=n["Data.Traversable"],t=n["Data.Traversable"],r=n["Control.Applicative"],u=n["Control.Apply"],a=n["Control.Category"],o=n["Data.Foldable"],i=n["Data.Functor"],c=function(n){return n.traverse},f={traverse:function(n){return t.traverseArrayImpl(u.apply(n.Apply0()))(i.map(n.Apply0().Functor0()))(r.pure(n))},sequence:function(n){return(e=f,function(n){return c(e)(n)(a.identity(a.categoryFn))})(n);var e},Functor0:function(){return i.functorArray},Foldable1:function(){return o.foldableArray}};e.traverse=c,e.traversableArray=f}(t),function(n){"use strict";n["Data.TraversableWithIndex"]=n["Data.TraversableWithIndex"]||{};n["Data.TraversableWithIndex"].traverseWithIndex=function(n){return n.traverseWithIndex}}(t),function(n){"use strict";n.new=function(){return{}},n.poke=function(n){return function(e){return function(t){return function(){return t[n]=e,t}}}}}(t["Foreign.Object.ST"]=t["Foreign.Object.ST"]||{}),function(n){"use strict";n["Foreign.Object.ST"]=n["Foreign.Object.ST"]||{};var e=n["Foreign.Object.ST"],t=n["Foreign.Object.ST"];e.new=t.new,e.poke=t.poke}(t),function(n){"use strict";n["Foreign.Object"]=n["Foreign.Object"]||{};var e=n["Foreign.Object"],t=n["Foreign.Object"],r=n["Control.Applicative"],u=n["Control.Apply"],a=n["Control.Category"],o=n["Data.Array"],i=n["Data.Foldable"],c=n["Data.Function"],f=n["Data.Function.Uncurried"],l=n["Data.Functor"],s=n["Data.Maybe"],d=n["Data.Monoid"],v=n["Data.Semigroup"],p=n["Data.Traversable"],m=n["Data.TraversableWithIndex"],g=n["Data.Tuple"],h=n["Foreign.Object.ST"],b=t.toArrayWithKey(function(n){return function(n){return n}}),w=t._copyST,y=f.runFn4(t._lookup)(s.Nothing.value)(s.Just.create),E=function(n){return function(e){return r=h.poke(n)(e),function(n){return t.runST(function(){var e=w(n)();return r(e)(),e})};var r}},D={map:function(n){return function(e){return t._fmapObject(e,n)}}},M={mapWithIndex:function(n){return function(e){return t._mapWithKey(e,n)}},Functor0:function(){return D}},A=t._foldM(c.applyFlipped),C=function(n){return function(e){return A(function(t){return function(r){return function(u){return v.append(n.Semigroup0())(t)(e(r)(u))}}})(d.mempty(n))}},F={foldl:function(n){return A(function(e){return function(t){return n(e)}})},foldr:function(n){return function(e){return function(t){return i.foldr(i.foldableArray)(n)(e)(b(t))}}},foldMap:function(n){return function(e){return C(n)(c.const(e))}}},H={foldlWithIndex:function(n){return A(c.flip(n))},foldrWithIndex:function(n){return function(e){return function(r){return i.foldr(i.foldableArray)(g.uncurry(n))(e)(t.toArrayWithKey(g.Tuple.create)(r))}}},foldMapWithIndex:function(n){return C(n)},Foldable0:function(){return F}},T={traverseWithIndex:function(n){return function(e){return function(a){return A(function(t){return function(r){return function(a){return u.apply(n.Apply0())(l.map(n.Apply0().Functor0())(c.flip(E(r)))(t))(e(r)(a))}}})(r.pure(n)(t.empty))(a)}}},FunctorWithIndex0:function(){return M},FoldableWithIndex1:function(){return H},Traversable2:function(){return S}},S={traverse:function(n){var e=m.traverseWithIndex(T)(n);return function(n){return e(c.const(n))}},sequence:function(n){return p.traverse(S)(n)(a.identity(a.categoryFn))},Functor0:function(){return D},Foldable1:function(){return F}};e.lookup=y,e.toUnfoldable=function(n){var e=o.toUnfoldable(n),r=t.toArrayWithKey(g.Tuple.create);return function(n){return e(r(n))}},e.values=b,e.traversableObject=S,e.empty=t.empty}(t),function(n){"use strict";n["Data.Argonaut.Core"]=n["Data.Argonaut.Core"]||{};var e,t=n["Data.Argonaut.Core"],r=n["Data.Argonaut.Core"],u=n["Data.Function"],a=n["Data.Maybe"],o=n["Foreign.Object"],i=(e=a.Nothing.value,function(n){return function(t){return t(e)(n)}})(a.Just.create),c=r.fromObject(o.empty),f=i(function(n){return function(e){return function(t){return r._caseJson(u.const(n),u.const(n),u.const(n),u.const(n),u.const(n),e,t)}}});t.caseJsonNumber=function(n){return function(e){return function(t){return r._caseJson(u.const(n),u.const(n),e,u.const(n),u.const(n),u.const(n),t)}}},t.toObject=f,t.jsonEmptyObject=c,t.stringify=r.stringify}(t),function(n){"use strict";(t["Data.Argonaut.Parser"]=t["Data.Argonaut.Parser"]||{})._jsonParser=function(n,e,t){try{return e(JSON.parse(t))}catch(r){return n(r.message)}}}(),function(n){"use strict";n["Data.Argonaut.Parser"]=n["Data.Argonaut.Parser"]||{};var e=n["Data.Argonaut.Parser"],t=n["Data.Argonaut.Parser"],r=n["Data.Either"];e.jsonParser=function(n){return t._jsonParser(r.Left.create,r.Right.create,n)}}(t),function(n){"use strict";n.replaceAll=function(n){return function(e){return function(t){return t.replace(new RegExp(n.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&"),"g"),e)}}},n.split=function(n){return function(e){return e.split(n)}},n.toLower=function(n){return n.toLowerCase()},n.joinWith=function(n){return function(e){return e.join(n)}}}(t["Data.String.Common"]=t["Data.String.Common"]||{}),function(n){"use strict";n["Data.String.Common"]=n["Data.String.Common"]||{};var e=n["Data.String.Common"],t=n["Data.String.Common"];e.null=function(n){return""===n},e.replaceAll=t.replaceAll,e.split=t.split,e.toLower=t.toLower,e.joinWith=t.joinWith}(t),function(n){"use strict";function e(n){return n.replace(/[!'()*]/g,function(n){return"%"+n.charCodeAt(0).toString(16)})}n._encodeURIComponent=function(n,t,r){try{return t(e(encodeURIComponent(r)))}catch(u){return n(u)}},n._encodeFormURLComponent=function(n,t,r){try{return t(e(encodeURIComponent(r)).replace(/%20/g,"+"))}catch(u){return n(u)}},n._decodeURIComponent=function(n,e,t){try{return e(decodeURIComponent(t))}catch(r){return n(r)}}}(t.JSURI=t.JSURI||{}),function(n){"use strict";n.JSURI=n.JSURI||{};var e=n.JSURI,t=n.JSURI,r=n["Data.Function"],u=n["Data.Function.Uncurried"],a=n["Data.Maybe"],o=u.runFn3(t._encodeURIComponent)(r.const(a.Nothing.value))(a.Just.create),i=u.runFn3(t._encodeFormURLComponent)(r.const(a.Nothing.value))(a.Just.create),c=u.runFn3(t._decodeURIComponent)(r.const(a.Nothing.value))(a.Just.create);e.encodeURIComponent=o,e.encodeFormURLComponent=i,e.decodeURIComponent=c}(t),function(n){"use strict";n["Data.FormURLEncoded"]=n["Data.FormURLEncoded"]||{};var e,t,r=n["Data.FormURLEncoded"],u=n["Control.Apply"],a=n["Data.Functor"],o=n["Data.Maybe"],i=n["Data.String.Common"],c=n["Data.Traversable"],f=n.JSURI,l=(e=a.map(o.functorMaybe)(i.joinWith("&")),t=c.traverse(c.traversableArray)(o.applicativeMaybe)(function(n){if(n.value1 instanceof o.Nothing)return f.encodeFormURLComponent(n.value0);if(n.value1 instanceof o.Just)return u.apply(o.applyMaybe)(a.map(o.functorMaybe)(function(n){return function(e){return n+"="+e}})(f.encodeFormURLComponent(n.value0)))(f.encodeFormURLComponent(n.value1.value0));throw new Error("Failed pattern match at Data.FormURLEncoded (line 37, column 18 - line 39, column 116): "+[n.constructor.name])}),function(n){return e(t(n))});r.encode=l}(t),function(n){"use strict";n.showIntImpl=function(n){return n.toString()},n.showNumberImpl=function(n){var e=n.toString();return isNaN(e+".0")?e:e+".0"},n.showStringImpl=function(n){var e=n.length;return'"'+n.replace(/[\0-\x1F\x7F"\\]/g,function(t,r){switch(t){case'"':case"\\":return"\\"+t;case"":return"\\a";case"\b":return"\\b";case"\f":return"\\f";case"\n":return"\\n";case"\r":return"\\r";case"\t":return"\\t";case"\v":return"\\v"}var u=r+1,a=u<e&&n[u]>="0"&&n[u]<="9"?"\\&":"";return"\\"+t.charCodeAt(0).toString(10)+a})+'"'}}(t["Data.Show"]=t["Data.Show"]||{}),function(n){"use strict";n["Data.Show"]=n["Data.Show"]||{};var e=n["Data.Show"],t=n["Data.Show"],r={show:t.showStringImpl},u={show:t.showNumberImpl},a={show:t.showIntImpl};e.show=function(n){return n.show},e.showInt=a,e.showNumber=u,e.showString=r}(t),function(n){"use strict";n["Data.HTTP.Method"]=n["Data.HTTP.Method"]||{};var e=n["Data.HTTP.Method"],t=n["Data.Either"],r=n["Data.Show"],u=function(){function n(){}return n.value=new n,n}(),a=function(){function n(){}return n.value=new n,n}(),o=function(){function n(){}return n.value=new n,n}(),i=function(){function n(){}return n.value=new n,n}(),c=function(){function n(){}return n.value=new n,n}(),f=function(){function n(){}return n.value=new n,n}(),l=function(){function n(){}return n.value=new n,n}(),s=function(){function n(){}return n.value=new n,n}(),d=function(){function n(){}return n.value=new n,n}(),v=function(){function n(){}return n.value=new n,n}(),p=function(){function n(){}return n.value=new n,n}(),m=function(){function n(){}return n.value=new n,n}(),g=function(){function n(){}return n.value=new n,n}(),h=function(){function n(){}return n.value=new n,n}(),b=function(){function n(){}return n.value=new n,n}(),w=function(){function n(){}return n.value=new n,n}(),y={show:function(n){if(n instanceof u)return"OPTIONS";if(n instanceof a)return"GET";if(n instanceof o)return"HEAD";if(n instanceof i)return"POST";if(n instanceof c)return"PUT";if(n instanceof f)return"DELETE";if(n instanceof l)return"TRACE";if(n instanceof s)return"CONNECT";if(n instanceof d)return"PROPFIND";if(n instanceof v)return"PROPPATCH";if(n instanceof p)return"MKCOL";if(n instanceof m)return"COPY";if(n instanceof g)return"MOVE";if(n instanceof h)return"LOCK";if(n instanceof b)return"UNLOCK";if(n instanceof w)return"PATCH";throw new Error("Failed pattern match at Data.HTTP.Method (line 43, column 1 - line 59, column 23): "+[n.constructor.name])}},E=t.either(r.show(y))(function(n){return n});e.GET=a,e.POST=i,e.DELETE=f,e.print=E}(t),function(n){"use strict";n["Data.Identity"]=n["Data.Identity"]||{};var e=n["Data.Identity"],t={map:function(n){return function(e){return n(e)}}},r={apply:function(n){return function(e){return n(e)}},Functor0:function(){return t}},u={bind:function(n){return function(e){return e(n)}},Apply0:function(){return r}},a={pure:function(n){return n},Apply0:function(){return r}},o={Applicative0:function(){return a},Bind1:function(){return u}};e.functorIdentity=t,e.monadIdentity=o}(t),function(n){"use strict";n["Control.Plus"]=n["Control.Plus"]||{};n["Control.Plus"].empty=function(n){return n.empty}}(t),function(n){"use strict";n["Data.NonEmpty"]=n["Data.NonEmpty"]||{};var e=n["Data.NonEmpty"],t=n["Control.Plus"],r=function(){function n(n,e){this.value0=n,this.value1=e}return n.create=function(e){return function(t){return new n(e,t)}},n}();e.NonEmpty=r,e.singleton=function(n){return function(e){return new r(e,t.empty(n))}}}(t),function(n){"use strict";n["Data.List.Types"]=n["Data.List.Types"]||{};var e=n["Data.List.Types"],t=n["Control.Apply"],r=n["Data.Foldable"],u=n["Data.Function"],a=n["Data.Functor"],o=n["Data.Monoid"],i=n["Data.NonEmpty"],c=n["Data.Semigroup"],f=function(){function n(){}return n.value=new n,n}(),l=function(){function n(n,e){this.value0=n,this.value1=e}return n.create=function(e){return function(t){return new n(e,t)}},n}(),s={map:function(n){var e;return e=f.value,function(t){var r,u=e,a=!1;function o(e,r){return r instanceof l&&r.value1 instanceof l&&r.value1.value1 instanceof l?(u=new l(r,e),void(t=r.value1.value1.value1)):(a=!0,(i=e,function(e){for(var t,r,u,a=i,o=!1;!o;)u=e,t=(r=a)instanceof l&&r.value0 instanceof l&&r.value0.value1 instanceof l&&r.value0.value1.value1 instanceof l?(a=r.value1,void(e=new l(n(r.value0.value0),new l(n(r.value0.value1.value0),new l(n(r.value0.value1.value1.value0),u))))):(o=!0,u);return t})((o=r)instanceof l&&o.value1 instanceof l&&o.value1.value1 instanceof f?new l(n(o.value0),new l(n(o.value1.value0),f.value)):o instanceof l&&o.value1 instanceof f?new l(n(o.value0),f.value):f.value));var o,i}for(;!a;)r=o(u,t);return r}}},d={foldr:function(n){return function(e){var t,a=(t=f.value,function(n){var e,r=t,u=!1;function a(e,t){if(t instanceof f)return u=!0,e;if(t instanceof l)return r=new l(t.value0,e),void(n=t.value1);throw new Error("Failed pattern match at Data.List.Types (line 108, column 7 - line 108, column 23): "+[e.constructor.name,t.constructor.name])}for(;!u;)e=a(r,n);return e}),o=r.foldl(d)(u.flip(n))(e);return function(n){return o(a(n))}}},foldl:function(n){return function(e){return function(t){var r,u=e,a=!1;function o(e,r){if(r instanceof f)return a=!0,e;if(r instanceof l)return u=n(e)(r.value0),void(t=r.value1);throw new Error("Failed pattern match at Data.List.Types (line 112, column 12 - line 114, column 30): "+[r.constructor.name])}for(;!a;)r=o(u,t);return r}}},foldMap:function(n){return function(e){return r.foldl(d)(function(t){var r=c.append(n.Semigroup0())(t);return function(n){return r(e(n))}})(o.mempty(n))}}},v={append:function(n){return function(e){return r.foldr(d)(l.create)(e)(n)}}},p={append:function(n){return function(e){return new i.NonEmpty(n.value0,c.append(v)(n.value1)(function(n){return new l(n.value0,n.value1)}(e)))}}},m={apply:function(n){return function(e){if(n instanceof f)return f.value;if(n instanceof l)return c.append(v)(a.map(s)(n.value0)(e))(t.apply(m)(n.value1)(e));throw new Error("Failed pattern match at Data.List.Types (line 158, column 1 - line 160, column 48): "+[n.constructor.name,e.constructor.name])}},Functor0:function(){return s}},g={pure:function(n){return new l(n,f.value)},Apply0:function(){return m}},h={alt:c.append(v),Functor0:function(){return s}},b={empty:f.value,Alt0:function(){return h}};e.Nil=f,e.Cons=l,e.NonEmptyList=function(n){return n},e.semigroupList=v,e.foldableList=d,e.applicativeList=g,e.plusList=b,e.semigroupNonEmptyList=p}(t),function(n){"use strict";n["Data.List.NonEmpty"]=n["Data.List.NonEmpty"]||{};var e,t=n["Data.List.NonEmpty"],r=n["Data.List.Types"],u=n["Data.NonEmpty"],a=(e=u.singleton(r.plusList),function(n){return r.NonEmptyList(e(n))});t.singleton=a,t.cons=function(n){return function(e){return new u.NonEmpty(n,new r.Cons(e.value0,e.value1))}},t.head=function(n){return n.value0}}(t),function(n){"use strict";n.null=null,n.nullable=function(n,e,t){return null==n?e:t(n)},n.notNull=function(n){return n}}(t["Data.Nullable"]=t["Data.Nullable"]||{}),function(n){"use strict";n["Data.Nullable"]=n["Data.Nullable"]||{};var e=n["Data.Nullable"],t=n["Data.Nullable"],r=n["Data.Maybe"],u=r.maybe(t.null)(t.notNull);e.toMaybe=function(n){return t.nullable(n,r.Nothing.value,r.Just.create)},e.toNullable=u,e.null=t.null}(t),function(n){"use strict";var e=function(){var n={},e="Pure",t="Throw",r="Catch",u="Sync",a="Async",o="Bind",i="Bracket",c="Fork",f="Sequential",l="Map",s="Apply",d="Alt",v="Cons",p="Resume",m="Release",g="Finalizer",h="Finalized",b="Forked";function w(n,e,t,r){this.tag=n,this._1=e,this._2=t,this._3=r}function y(n){var e=function(e,t,r){return new w(n,e,t,r)};return e.tag=n,e}function E(n){return new w(e,void 0)}function D(n){try{n()}catch(e){setTimeout(function(){throw e},0)}}function M(n,e,t){try{return e(t())}catch(r){return n(r)}}function A(n,e,t){try{return e(t)()}catch(r){return t(n(r))(),E}}var C=function(){var n=1024,e=0,t=0,r=new Array(n),u=!1;function a(){var a;for(u=!0;0!==e;)e--,a=r[t],r[t]=void 0,t=(t+1)%n,a();u=!1}return{isDraining:function(){return u},enqueue:function(o){var i;e===n&&(i=u,a(),u=i),r[(t+e)%n]=o,e++,u||a()}}}();var F=0,H=1,T=2,S=3,_=4,k=5,L=6;function x(n,l,s){var d=0,b=F,y=s,E=null,I=null,U=null,R=null,P=null,B=0,O=0,W=null,q=!0;function J(s){for(var O,j,Q;;)switch(O=null,j=null,Q=null,b){case T:b=H;try{y=U(y),null===R?U=null:(U=R._1,R=R._2)}catch(z){b=k,E=n.left(z),y=null}break;case S:n.isLeft(y)?(b=k,E=y,y=null):null===U?b=k:(b=T,y=n.fromRight(y));break;case H:switch(y.tag){case o:U&&(R=new w(v,U,R)),U=y._2,b=H,y=y._1;break;case e:null===U?(b=k,y=n.right(y._1)):(b=T,y=y._1);break;case u:b=S,y=M(n.left,n.right,y._1);break;case a:return b=_,void(y=A(n.left,y._1,function(n){return function(){d===s&&(d++,C.enqueue(function(){d===s+1&&(b=S,y=n,J(d))}))}}));case t:b=k,E=n.left(y._1),y=null;break;case r:P=new w(v,y,null===U?P:new w(v,new w(p,U,R),P,I),I),U=null,R=null,b=H,y=y._1;break;case i:B++,P=new w(v,y,null===U?P:new w(v,new w(p,U,R),P,I),I),U=null,R=null,b=H,y=y._1;break;case c:b=S,O=x(n,l,y._2),l&&l.register(O),y._1&&O.run(),y=n.right(O);break;case f:b=H,y=N(n,l,y._1)}break;case k:if(U=null,R=null,null===P)b=L,y=I||E||y;else switch(O=P._3,Q=P._1,P=P._2,Q.tag){case r:I&&I!==O&&0===B?b=k:E&&(b=H,y=Q._2(n.fromLeft(E)),E=null);break;case p:I&&I!==O&&0===B||E?b=k:(U=Q._1,R=Q._2,b=T,y=n.fromRight(y));break;case i:B--,null===E&&(j=n.fromRight(y),P=new w(v,new w(m,Q._2,j),P,O),(I===O||B>0)&&(b=H,y=Q._3(j)));break;case m:P=new w(v,new w(h,y,E),P,I),b=H,y=I&&I!==O&&0===B?Q._1.killed(n.fromLeft(I))(Q._2):E?Q._1.failed(n.fromLeft(E))(Q._2):Q._1.completed(n.fromRight(y))(Q._2),E=null,B++;break;case g:B++,P=new w(v,new w(h,y,E),P,I),b=H,y=Q._1;break;case h:B--,b=k,y=Q._1,E=Q._2}break;case L:for(var V in W)W.hasOwnProperty(V)&&(q=q&&W[V].rethrow,D(W[V].handler(y)));return W=null,void(I&&E?setTimeout(function(){throw n.fromLeft(E)},0):n.isLeft(y)&&q&&setTimeout(function(){if(q)throw n.fromLeft(y)},0));case F:b=H;break;case _:return}}function j(n){return function(){if(b===L)return q=q&&n.rethrow,n.handler(y)(),function(){};var e=O++;return(W=W||{})[e]=n,function(){null!==W&&delete W[e]}}}return{kill:function(e,t){return function(){if(b===L)return t(n.right(void 0))(),function(){};var r=j({rethrow:!1,handler:function(){return t(n.right(void 0))}})();switch(b){case F:I=n.left(e),b=L,y=I,J(d);break;case _:null===I&&(I=n.left(e)),0===B&&(b===_&&(P=new w(v,new w(g,y(e)),P,I)),b=k,y=null,E=null,J(++d));break;default:null===I&&(I=n.left(e)),0===B&&(b=k,y=null,E=null)}return r}},join:function(n){return function(){var e=j({rethrow:!1,handler:n})();return b===F&&J(d),e}},onComplete:j,isSuspended:function(){return b===F},run:function(){b===F&&(C.isDraining()?J(d):C.enqueue(function(){J(d)}))}}}function I(e,t,r,u){var o=0,i={},c=0,f={},p=new Error("[ParAff] Early exit"),m=null,g=n;function h(t,r,u){var a,o,c=r,f=null,p=null,m=0,g={};n:for(;;)switch(a=null,c.tag){case b:if(c._3===n&&(a=i[c._1],g[m++]=a.kill(t,function(n){return function(){0===--m&&u(n)()}})),null===f)break n;c=f._2,null===p?f=null:(f=p._1,p=p._2);break;case l:c=c._2;break;case s:case d:f&&(p=new w(v,f,p)),f=c,c=c._1}if(0===m)u(e.right(void 0))();else for(o=0,a=m;o<a;o++)g[o]=g[o]();return g}function y(t){return function(r){return function(){delete i[t._1],t._3=r,function t(r,a,o){var i,v,g,b,w,y;for(e.isLeft(r)?(i=r,v=null):(v=r,i=null);;){if(g=null,b=null,w=null,y=null,null!==m)return;if(null===a)return void u(i||v)();if(a._3!==n)return;switch(a.tag){case l:null===i?(a._3=e.right(a._1(e.fromRight(v))),v=a._3):a._3=i;break;case s:if(g=a._1._3,b=a._2._3,i){if(a._3=i,w=!0,y=c++,f[y]=h(p,i===g?a._2:a._1,function(){return function(){delete f[y],w?w=!1:null===o?t(i,null,null):t(i,o._1,o._2)}}),w)return void(w=!1)}else{if(g===n||b===n)return;v=e.right(e.fromRight(g)(e.fromRight(b))),a._3=v}break;case d:if(g=a._1._3,b=a._2._3,g===n&&e.isLeft(b)||b===n&&e.isLeft(g))return;if(g!==n&&e.isLeft(g)&&b!==n&&e.isLeft(b))i=v===g?b:g,v=null,a._3=i;else if(a._3=v,w=!0,y=c++,f[y]=h(p,v===g?a._2:a._1,function(){return function(){delete f[y],w?w=!1:null===o?t(v,null,null):t(v,o._1,o._2)}}),w)return void(w=!1)}null===o?a=null:(a=o._1,o=o._2)}}(r,t._2._1,t._2._2)}}}return function(){var u,a,c=H,f=r,p=null,m=null;n:for(;;)switch(u=null,a=null,c){case H:switch(f.tag){case l:p&&(m=new w(v,p,m)),p=new w(l,f._1,n,n),f=f._2;break;case s:p&&(m=new w(v,p,m)),p=new w(s,n,f._2,n),f=f._1;break;case d:p&&(m=new w(v,p,m)),p=new w(d,n,f._2,n),f=f._1;break;default:a=o++,c=k,u=f,f=new w(b,a,new w(v,p,m),n),(u=x(e,t,u)).onComplete({rethrow:!1,handler:y(f)})(),i[a]=u,t&&t.register(u)}break;case k:if(null===p)break n;p._1===n?(p._1=f,c=H,f=p._2,p._2=n):(p._2=f,f=p,null===m?p=null:(p=m._1,m=m._2))}for(g=f,a=0;a<o;a++)i[a].run()}(),function(n){return new w(a,function(t){return function(){return function(n,t){var r;for(var u in m=e.left(n),f)if(f.hasOwnProperty(u))for(u in r=f[u])r.hasOwnProperty(u)&&r[u]();f=null;var o=h(n,g,t);return function(n){return new w(a,function(n){return function(){for(var n in o)o.hasOwnProperty(n)&&o[n]();return E}})}}(n,t)}})}}function N(n,e,t){return new w(a,function(r){return function(){return I(n,e,t,r)}})}return w.EMPTY=n,w.Pure=y(e),w.Throw=y(t),w.Catch=y(r),w.Sync=y(u),w.Async=y(a),w.Bind=y(o),w.Bracket=y(i),w.Fork=y(c),w.Seq=y(f),w.ParMap=y(l),w.ParApply=y(s),w.ParAlt=y(d),w.Fiber=x,w.Supervisor=function(n){var e={},t=0,r=0;return{register:function(n){var u=t++;n.onComplete({rethrow:!0,handler:function(n){return function(){r--,delete e[u]}}})(),e[u]=n,r++},isEmpty:function(){return 0===r},killAll:function(a,o){return function(){if(0===r)return o();var i=0,c={};function f(t){c[t]=e[t].kill(a,function(e){return function(){delete c[t],i--,n.isLeft(e)&&n.fromLeft(e)&&setTimeout(function(){throw n.fromLeft(e)},0),0===i&&o()}})()}for(var l in e)e.hasOwnProperty(l)&&(i++,f(l));return e={},t=0,r=0,function(n){return new w(u,function(){for(var n in c)c.hasOwnProperty(n)&&c[n]()})}}}}},w.Scheduler=C,w.nonCanceler=E,w}();n._pure=e.Pure,n._throwError=e.Throw,n._catchError=function(n){return function(t){return e.Catch(n,t)}},n._map=function(n){return function(t){return t.tag===e.Pure.tag?e.Pure(n(t._1)):e.Bind(t,function(t){return e.Pure(n(t))})}},n._bind=function(n){return function(t){return e.Bind(n,t)}},n._fork=function(n){return function(t){return e.Fork(n,t)}},n._liftEffect=e.Sync,n._parAffMap=function(n){return function(t){return e.ParMap(n,t)}},n._parAffApply=function(n){return function(t){return e.ParApply(n,t)}},n.makeAff=e.Async,n.generalBracket=function(n){return function(t){return function(r){return e.Bracket(n,t,r)}}},n._makeFiber=function(n,t){return function(){return e.Fiber(n,null,t)}},n._sequential=e.Seq}(t["Effect.Aff"]=t["Effect.Aff"]||{}),function(n){"use strict";n.pureE=function(n){return function(){return n}},n.bindE=function(n){return function(e){return function(){return e(n())()}}}}(t.Effect=t.Effect||{}),function(n){"use strict";n.Effect=n.Effect||{};var e=n.Effect,t=n.Effect,r=n["Control.Applicative"],u=n["Control.Apply"],a=n["Control.Monad"],o=n["Data.Monoid"],i=n["Data.Semigroup"],c={Applicative0:function(){return s},Bind1:function(){return f}},f={bind:t.bindE,Apply0:function(){return l}},l={apply:a.ap(c),Functor0:function(){return d}},s={pure:t.pureE,Apply0:function(){return l}},d={map:r.liftA1(s)};e.functorEffect=d,e.applicativeEffect=s,e.bindEffect=f,e.monadEffect=c,e.monoidEffect=function(n){return{mempty:t.pureE(o.mempty(n)),Semigroup0:function(){return e=n.Semigroup0(),{append:u.lift2(l)(i.append(e))};var e}}}}(t),function(n){"use strict";n.new=function(n){return function(){return{value:n}}},n.read=function(n){return function(){return n.value}},n.modifyImpl=function(n){return function(e){return function(){var t=n(e.value);return e.value=t.state,t.value}}},n.write=function(n){return function(e){return function(){e.value=n}}}}(t["Effect.Ref"]=t["Effect.Ref"]||{}),function(n){"use strict";n["Effect.Ref"]=n["Effect.Ref"]||{};var e=n["Effect.Ref"],t=n["Effect.Ref"],r=n["Data.Functor"],u=n.Effect,a=t.modifyImpl;e["modify'"]=a,e.modify_=function(n){return function(e){return r.void(u.functorEffect)(function(n){return a(function(e){var t=n(e);return{state:t,value:t}})}(n)(e))}},e.new=t.new,e.read=t.read,e.write=t.write}(t),function(n){"use strict";n["Control.Monad.Rec.Class"]=n["Control.Monad.Rec.Class"]||{};var e=n["Control.Monad.Rec.Class"],t=n["Control.Bind"],r=n["Data.Functor"],u=n.Effect,a=n["Effect.Ref"],o=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),i=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),c={tailRecM:function(n){return function(e){var c=function(n){if(n instanceof i)return n.value0;throw new Error("Failed pattern match at Control.Monad.Rec.Class (line 113, column 30 - line 113, column 44): "+[n.constructor.name])};return function(){var f=t.bindFlipped(u.bindEffect)(a.new)(n(e))();return function(){for(;!function(){var e=a.read(f)();if(e instanceof o){var t=n(e.value0)();return a.write(t)(f)(),!1}if(e instanceof i)return!0;throw new Error("Failed pattern match at Control.Monad.Rec.Class (line 104, column 22 - line 109, column 28): "+[e.constructor.name])}(););}(),r.map(u.functorEffect)(c)(a.read(f))()}}},Monad0:function(){return u.monadEffect}};e.Loop=o,e.Done=i,e.tailRecM=function(n){return n.tailRecM},e.monadRecEffect=c}(t),function(n){"use strict";n["Control.Parallel.Class"]=n["Control.Parallel.Class"]||{};var e=n["Control.Parallel.Class"];e.parallel=function(n){return n.parallel},e.sequential=function(n){return n.sequential}}(t),function(n){"use strict";n["Control.Parallel"]=n["Control.Parallel"]||{};var e=n["Control.Parallel"],t=n["Control.Category"],r=n["Control.Parallel.Class"],u=n["Data.Foldable"];e.parSequence_=function(n){return function(e){return function(n){return function(e){return function(t){var a,o=r.sequential(n),i=u.traverse_(n.Applicative1())(e)((a=r.parallel(n),function(n){return a(t(n))}));return function(n){return o(i(n))}}}}(n)(e)(t.identity(t.categoryFn))}}}(t),function(n){"use strict";n["Effect.Class"]=n["Effect.Class"]||{};var e=n["Effect.Class"],t=n["Control.Category"],r=n.Effect,u={liftEffect:t.identity(t.categoryFn),Monad0:function(){return r.monadEffect}};e.liftEffect=function(n){return n.liftEffect},e.monadEffectEffect=u}(t),function(n){"use strict";(t["Effect.Unsafe"]=t["Effect.Unsafe"]||{}).unsafePerformEffect=function(n){return n()}}(),function(n){"use strict";n["Effect.Unsafe"]=n["Effect.Unsafe"]||{};var e=n["Effect.Unsafe"],t=n["Effect.Unsafe"];e.unsafePerformEffect=t.unsafePerformEffect}(t),function(n){"use strict";(t["Partial.Unsafe"]=t["Partial.Unsafe"]||{})._unsafePartial=function(n){return n()}}(),function(n){"use strict";(t["Partial"]=t["Partial"]||{})._crashWith=function(n){throw new Error(n)}}(),function(n){"use strict";n.Partial=n.Partial||{};var e=n.Partial,t=n.Partial;e.crashWith=function(){return t._crashWith}}(t),function(n){"use strict";n["Partial.Unsafe"]=n["Partial.Unsafe"]||{};var e=n["Partial.Unsafe"],t=n["Partial.Unsafe"],r=n.Partial,u=t._unsafePartial;e.unsafeCrashWith=function(n){return u(function(){return r.crashWith()(n)})}}(t),function(n){"use strict";n["Effect.Aff"]=n["Effect.Aff"]||{};var e,t,r,u=n["Effect.Aff"],a=n["Effect.Aff"],o=n["Control.Applicative"],i=n["Control.Bind"],c=n["Control.Monad"],f=n["Control.Monad.Error.Class"],l=n["Control.Monad.Rec.Class"],s=n["Control.Parallel"],d=n["Control.Parallel.Class"],v=n["Data.Either"],p=n["Data.Foldable"],m=n["Data.Function"],g=n["Data.Functor"],h=n["Data.Unit"],b=n.Effect,w=n["Effect.Class"],y=n["Effect.Unsafe"],E=n["Partial.Unsafe"],D=n["Unsafe.Coerce"],M=a._fork(!1),A={map:a._parAffMap},C={map:a._map},F=a._fork(!0),H={isLeft:function(n){if(n instanceof v.Left)return!0;if(n instanceof v.Right)return!1;throw new Error("Failed pattern match at Effect.Aff (line 394, column 12 - line 396, column 20): "+[n.constructor.name])},fromLeft:function(n){if(n instanceof v.Left)return n.value0;if(n instanceof v.Right)return E.unsafeCrashWith("unsafeFromLeft: Right");throw new Error("Failed pattern match at Effect.Aff (line 399, column 20 - line 401, column 54): "+[n.constructor.name])},fromRight:function(n){if(n instanceof v.Right)return n.value0;if(n instanceof v.Left)return E.unsafeCrashWith("unsafeFromRight: Left");throw new Error("Failed pattern match at Effect.Aff (line 404, column 21 - line 406, column 54): "+[n.constructor.name])},left:v.Left.create,right:v.Right.create},T=function(n){return a._makeFiber(H,n)},S=function(n){return function(){var e=T(n)();return e.run(),e}},_={apply:a._parAffApply,Functor0:function(){return A}},k={Applicative0:function(){return I},Bind1:function(){return L}},L={bind:a._bind,Apply0:function(){return x}},x={apply:c.ap(k),Functor0:function(){return C}},I={pure:a._pure,Apply0:function(){return x}},N={liftEffect:a._liftEffect,Monad0:function(){return k}},U=(e=w.liftEffect(N),function(n){return m.const(e(n))}),R=function(n){return a.makeAff(function(e){return g.map(b.functorEffect)(U)(n.join(e))})},P={map:function(n){return function(e){return y.unsafePerformEffect(T(g.map(C)(n)(R(e))))}}},B={throwError:a._throwError,Monad0:function(){return k}},O={catchError:a._catchError,MonadThrow0:function(){return B}},W={parallel:D.unsafeCoerce,sequential:a._sequential,Monad0:function(){return k},Applicative1:function(){return q}},q={pure:(t=d.parallel(W),r=o.pure(I),function(n){return t(r(n))}),Apply0:function(){return _}},J={append:function(n){return function(e){return function(t){return s.parSequence_(W)(p.foldableArray)([n(t),e(t)])}}}},j={tailRecM:function(n){return function e(t){return i.bind(L)(n(t))(function(n){if(n instanceof l.Done)return o.pure(I)(n.value0);if(n instanceof l.Loop)return e(n.value0);throw new Error("Failed pattern match at Effect.Aff (line 102, column 7 - line 104, column 22): "+[n.constructor.name])})}},Monad0:function(){return k}},Q=m.const(o.pure(I)(h.unit)),V={mempty:Q,Semigroup0:function(){return J}};u.launchAff=S,u.runAff_=function(n){return function(e){return g.void(b.functorEffect)(function(n){return function(e){return S(i.bindFlipped(L)((t=w.liftEffect(N),function(e){return t(n(e))}))(f.try(O)(e)));var t}}(n)(e))}},u.forkAff=F,u.suspendAff=M,u.finally=function(n){return function(e){return(t=o.pure(I)(h.unit),function(n){return a.generalBracket(t)({killed:m.const(n),failed:m.const(n),completed:m.const(n)})})(m.const(n))(m.const(e));var t}},u.killFiber=function(n){return function(e){return i.bind(L)(w.liftEffect(N)(e.isSuspended))(function(t){return t?w.liftEffect(N)(g.void(b.functorEffect)(e.kill(n,m.const(o.pure(b.applicativeEffect)(h.unit))))):a.makeAff(function(t){return g.map(b.functorEffect)(U)(e.kill(n,t))})})}},u.joinFiber=R,u.nonCanceler=Q,u.functorAff=C,u.applicativeAff=I,u.bindAff=L,u.monadAff=k,u.monadRecAff=j,u.monadErrorAff=O,u.monadEffectAff=N,u.applicativeParAff=q,u.parallelAff=W,u.functorFiber=P,u.monoidCanceler=V,u.makeAff=a.makeAff}(t),function(n){"use strict";n["Effect.Aff.Compat"]=n["Effect.Aff.Compat"]||{};var e=n["Effect.Aff.Compat"],t=n["Data.Either"],r=n["Effect.Aff"];e.fromEffectFnAff=function(n){return r.makeAff(function(e){return function(){var u=n(function(n){return e(t.Left.create(n))()},function(n){return e(t.Right.create(n))()});return function(n){return r.makeAff(function(e){return function(){return u(n,function(n){return e(t.Left.create(n))()},function(n){return e(t.Right.create(n))()}),r.nonCanceler}})}}})}}(t),function(n){"use strict";n.error=function(n){return new Error(n)},n.message=function(n){return n.message},n.throwException=function(n){return function(){throw n}}}(t["Effect.Exception"]=t["Effect.Exception"]||{}),function(n){"use strict";n["Effect.Exception"]=n["Effect.Exception"]||{};var e=n["Effect.Exception"],t=n["Effect.Exception"];e.throw=function(n){return t.throwException(t.error(n))},e.error=t.error,e.message=t.message,e.throwException=t.throwException}(t),function(n){"use strict";n.typeOf=function(n){return e(n)},n.tagOf=function(n){return Object.prototype.toString.call(n).slice(8,-1)}}(t.Foreign=t.Foreign||{}),function(n){"use strict";n.fromNumberImpl=function(n){return function(e){return function(t){return(0|t)===t?n(t):e}}},n.toNumber=function(n){return n}}(t["Data.Int"]=t["Data.Int"]||{}),function(n){"use strict";n["Data.Int"]=n["Data.Int"]||{};var e=n["Data.Int"],t=n["Data.Int"],r=n["Data.Maybe"],u=t.fromNumberImpl(r.Just.create)(r.Nothing.value);e.fromNumber=u,e.toNumber=t.toNumber}(t),function(n){"use strict";n.Foreign=n.Foreign||{};var e=n.Foreign,t=n.Foreign,r=n["Control.Applicative"],u=n["Control.Monad.Error.Class"],a=n["Control.Monad.Except.Trans"],o=n["Data.Boolean"],i=n["Data.Either"],c=n["Data.Function"],f=n["Data.Functor"],l=n["Data.Int"],s=n["Data.List.NonEmpty"],d=n["Data.Maybe"],v=n["Data.Show"],p=n["Unsafe.Coerce"],m=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),g=function(){function n(n,e){this.value0=n,this.value1=e}return n.create=function(e){return function(t){return new n(e,t)}},n}(),h=function(){function n(n,e){this.value0=n,this.value1=e}return n.create=function(e){return function(t){return new n(e,t)}},n}(),b=function(){function n(n,e){this.value0=n,this.value1=e}return n.create=function(e){return function(t){return new n(e,t)}},n}(),w=p.unsafeCoerce,y=p.unsafeCoerce,E=function(n){var e=u.throwError(a.monadThrowExceptT(n));return function(n){return e(s.singleton(n))}},D=function(n){return function(e){return function(u){if(t.tagOf(u)===e)return r.pure(a.applicativeExceptT(n))(y(u));if(o.otherwise)return E(n)(new g(e,t.tagOf(u)));throw new Error("Failed pattern match at Foreign (line 110, column 1 - line 110, column 71): "+[e.constructor.name,u.constructor.name])}}};e.ForeignError=m,e.TypeMismatch=g,e.renderForeignError=function n(e){if(e instanceof m)return e.value0;if(e instanceof h)return"Error at array index "+v.show(v.showInt)(e.value0)+": "+n(e.value1);if(e instanceof b)return"Error at property "+v.show(v.showString)(e.value0)+": "+n(e.value1);if(e instanceof g)return"Type mismatch: expected "+e.value0+", found "+e.value1;throw new Error("Failed pattern match at Foreign (line 73, column 1 - line 73, column 45): "+[e.constructor.name])},e.unsafeToForeign=w,e.unsafeReadTagged=D,e.readString=function(n){return D(n)("String")},e.readBoolean=function(n){return D(n)("Boolean")},e.readInt=function(n){return function(e){var u,o=new i.Left(s.singleton(new g("Int",t.tagOf(e)))),v=(u=d.maybe(o)(r.pure(i.applicativeEither)),function(n){return u(l.fromNumber(n))});return a.mapExceptT(f.map(n.Bind1().Apply0().Functor0())(i.either(c.const(o))(v)))(function(n){return D(n)("Number")}(n)(e))}},e.fail=E,e.typeOf=t.typeOf}(t),function(n){"use strict";n.Affjax=n.Affjax||{};var e=n.Affjax,t=n.Affjax,r=n["Affjax.RequestBody"],u=n["Affjax.RequestHeader"],a=n["Affjax.ResponseFormat"],o=n["Affjax.ResponseHeader"],i=n["Control.Alt"],c=n["Control.Applicative"],f=n["Control.Bind"],l=n["Control.Monad.Error.Class"],s=n["Control.Monad.Except"],d=n["Control.Monad.Except.Trans"],v=n["Data.Argonaut.Core"],p=n["Data.Argonaut.Parser"],m=n["Data.Array"],g=n["Data.Either"],h=n["Data.Eq"],b=n["Data.Foldable"],w=n["Data.FormURLEncoded"],y=n["Data.Function"],E=n["Data.Functor"],D=n["Data.HTTP.Method"],M=n["Data.HeytingAlgebra"],A=n["Data.Identity"],C=n["Data.List.NonEmpty"],F=n["Data.List.Types"],H=n["Data.Maybe"],T=n["Data.Nullable"],S=n["Data.Unit"],_=n["Effect.Aff"],k=n["Effect.Aff.Compat"],L=n["Effect.Exception"],x=n.Foreign,I=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),N=function(){function n(n,e){this.value0=n,this.value1=e}return n.create=function(e){return function(t){return new n(e,t)}},n}(),U=function(){function n(){}return n.value=new n,n}(),R=function(){function n(){}return n.value=new n,n}(),P=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),B={method:new g.Left(D.GET.value),url:"/",headers:[],content:H.Nothing.value,username:H.Nothing.value,password:H.Nothing.value,withCredentials:!1,responseFormat:a.ignore,timeout:H.Nothing.value};e.defaultRequest=B,e.printError=function(n){if(n instanceof I)return"There was a problem with the request content: "+n.value0;if(n instanceof N)return"There was a problem with the response body: "+x.renderForeignError(n.value0);if(n instanceof U)return"There was a problem making the request: timeout";if(n instanceof R)return"There was a problem making the request: request failed";if(n instanceof P)return"There was a problem making the request: "+L.message(n.value0);throw new Error("Failed pattern match at Affjax (line 97, column 14 - line 107, column 66): "+[n.constructor.name])},e.request=function(n){var e=function(){if(n.responseFormat instanceof a.ArrayBuffer)return x.unsafeReadTagged(A.monadIdentity)("ArrayBuffer");if(n.responseFormat instanceof a.Blob)return x.unsafeReadTagged(A.monadIdentity)("Blob");if(n.responseFormat instanceof a.Document)return function(n){return i.alt(d.altExceptT(F.semigroupNonEmptyList)(A.monadIdentity))(i.alt(d.altExceptT(F.semigroupNonEmptyList)(A.monadIdentity))(x.unsafeReadTagged(A.monadIdentity)("Document")(n))(x.unsafeReadTagged(A.monadIdentity)("XMLDocument")(n)))(x.unsafeReadTagged(A.monadIdentity)("HTMLDocument")(n))};if(n.responseFormat instanceof a.Json)return f.composeKleisliFlipped(d.bindExceptT(A.monadIdentity))(function(e){return n.responseFormat.value0(""===(t=e)?c.pure(d.applicativeExceptT(A.monadIdentity))(v.jsonEmptyObject):g.either((r=x.fail(A.monadIdentity),function(n){return r(x.ForeignError.create(n))}))(c.pure(d.applicativeExceptT(A.monadIdentity)))(p.jsonParser(t)));var t,r})(x.unsafeReadTagged(A.monadIdentity)("String"));if(n.responseFormat instanceof a.String)return x.unsafeReadTagged(A.monadIdentity)("String");if(n.responseFormat instanceof a.Ignore)return y.const(n.responseFormat.value0(c.pure(d.applicativeExceptT(A.monadIdentity))(S.unit)));throw new Error("Failed pattern match at Affjax (line 257, column 18 - line 265, column 57): "+[n.responseFormat.constructor.name])}(),B=function(n){return function(e){return n instanceof H.Just&&!b.any(b.foldableArray)(M.heytingAlgebraBoolean)(y.on(h.eq(h.eqString))(u.name)(n.value0))(e)?m.snoc(e)(n.value0):e}},O=function(i){return E.mapFlipped(_.functorAff)(l.try(_.monadErrorAff)(k.fromEffectFnAff(t._ajax("AffjaxTimeoutErrorMessageIdent","AffjaxRequestFailedMessageIdent",o.ResponseHeader.create,(c=i,{method:D.print(n.method),url:n.url,headers:E.map(E.functorArray)(function(n){return{field:u.name(n),value:u.value(n)}})((d=n.content,B(E.map(H.functorMaybe)(u.ContentType.create)(f.bindFlipped(H.bindMaybe)(r.toMediaType)(d)))(B(E.map(H.functorMaybe)(u.Accept.create)(a.toMediaType(n.responseFormat)))(n.headers)))),content:c,responseType:a.toResponseType(n.responseFormat),username:T.toNullable(n.username),password:T.toNullable(n.password),withCredentials:n.withCredentials,timeout:H.fromMaybe(0)(E.map(H.functorMaybe)(function(n){return n})(n.timeout))})))))(function(n){if(n instanceof g.Right){var t=s.runExcept(e(n.value0.body));if(t instanceof g.Left)return new g.Left(new N(C.head(t.value0),n.value0));if(t instanceof g.Right)return new g.Right({body:t.value0,headers:n.value0.headers,status:n.value0.status,statusText:n.value0.statusText});throw new Error("Failed pattern match at Affjax (line 193, column 9 - line 195, column 52): "+[t.constructor.name])}if(n instanceof g.Left){var r=L.message(n.value0);return new g.Left("AffjaxTimeoutErrorMessageIdent"===r?U.value:"AffjaxRequestFailedMessageIdent"===r?R.value:new P(n.value0))}throw new Error("Failed pattern match at Affjax (line 191, column 137 - line 201, column 33): "+[n.constructor.name])});var c,d};if(n.content instanceof H.Nothing)return O(T.toNullable(H.Nothing.value));if(n.content instanceof H.Just){var W=function(n){if(n instanceof r.ArrayView)return new g.Right(n.value0(x.unsafeToForeign));if(n instanceof r.Blob)return new g.Right(x.unsafeToForeign(n.value0));if(n instanceof r.Document)return new g.Right(x.unsafeToForeign(n.value0));if(n instanceof r.String)return new g.Right(x.unsafeToForeign(n.value0));if(n instanceof r.FormData)return new g.Right(x.unsafeToForeign(n.value0));if(n instanceof r.FormURLEncoded)return g.note("Body contains values that cannot be encoded as application/x-www-form-urlencoded")(E.map(H.functorMaybe)(x.unsafeToForeign)(w.encode(n.value0)));if(n instanceof r.Json)return new g.Right(x.unsafeToForeign(v.stringify(n.value0)));throw new Error("Failed pattern match at Affjax (line 217, column 20 - line 232, column 69): "+[n.constructor.name])}(n.content.value0);if(W instanceof g.Right)return O(T.toNullable(new H.Just(W.value0)));if(W instanceof g.Left)return c.pure(_.applicativeAff)(new g.Left(new I(W.value0)));throw new Error("Failed pattern match at Affjax (line 183, column 7 - line 187, column 48): "+[W.constructor.name])}throw new Error("Failed pattern match at Affjax (line 179, column 3 - line 187, column 48): "+[n.content.constructor.name])}}(t),function(n){"use strict";n["Affjax.StatusCode"]=n["Affjax.StatusCode"]||{};n["Affjax.StatusCode"].eqStatusCode={eq:function(n){return function(e){return n===e}}}}(t),function(n){"use strict";n["Data.Argonaut.Decode.Error"]=n["Data.Argonaut.Decode.Error"]||{};var e=n["Data.Argonaut.Decode.Error"],t=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),r=function(){function n(n,e){this.value0=n,this.value1=e}return n.create=function(e){return function(t){return new n(e,t)}},n}();e.TypeMismatch=t,e.Named=r}(t),function(n){"use strict";n["Data.Bifunctor"]=n["Data.Bifunctor"]||{};var e=n["Data.Bifunctor"],t=n["Control.Category"],r=n["Data.Either"],u=function(n){return n.bimap},a={bimap:function(n){return function(e){return function(t){if(t instanceof r.Left)return new r.Left(n(t.value0));if(t instanceof r.Right)return new r.Right(e(t.value0));throw new Error("Failed pattern match at Data.Bifunctor (line 32, column 1 - line 34, column 36): "+[n.constructor.name,e.constructor.name,t.constructor.name])}}}};e.bimap=u,e.lmap=function(n){return function(e){return u(n)(e)(t.identity(t.categoryFn))}},e.bifunctorEither=a}(t),function(n){"use strict";n["Data.Argonaut.Decode.Decoders"]=n["Data.Argonaut.Decode.Decoders"]||{};var e,t,r=n["Data.Argonaut.Decode.Decoders"],u=n["Control.Bind"],a=n["Data.Argonaut.Core"],o=n["Data.Argonaut.Decode.Error"],i=n["Data.Bifunctor"],c=n["Data.Either"],f=n["Data.Int"],l=n["Data.Traversable"],s=n["Foreign.Object"],d=a.caseJsonNumber(new c.Left(new o.TypeMismatch("Number")))(c.Right.create),v=(e=c.note(new o.TypeMismatch("Object")),function(n){return e(a.toObject(n))}),p=u.composeKleisliFlipped(c.bindEither)((t=c.note(new o.TypeMismatch("Integer")),function(n){return t(f.fromNumber(n))}))(d);r.decodeInt=p,r.decodeForeignObject=function(n){return u.composeKleisliFlipped(c.bindEither)((e=i.lmap(i.bifunctorEither)(o.Named.create("ForeignObject")),t=l.traverse(s.traversableObject)(c.applicativeEither)(n),function(n){return e(t(n))}))(v);var e,t}}(t),function(n){"use strict";n["Data.Argonaut.Decode.Class"]=n["Data.Argonaut.Decode.Class"]||{};var e=n["Data.Argonaut.Decode.Class"],t=n["Data.Argonaut.Decode.Decoders"],r={decodeJson:t.decodeInt},u=function(n){return n.decodeJson};e.decodeJson=u,e.decodeJsonInt=r,e.decodeForeignObject=function(n){return{decodeJson:t.decodeForeignObject(u(n))}}}(t),function(n){"use strict";var e=require("moment");n._app=function(){return app},n._mmoment8601=function(n,t,r,u){try{var a=e(u,e.ISO_8601),o=a.fromNow(),i=a.format("MMMM D YYYY, h:mm a")+" ("+a.format()+") ";return n(r(o)(i))}catch(c){return t}},n._closeWindow=function(n){n.close()},n._setFocus=function(n){document.getElementById(n).focus()},n._toLocaleDateString=function(n){return new Date(n).toLocaleDateString(void 0,{dateStyle:"medium"})}}(t.Globals=t.Globals||{}),function(n){"use strict";n.Globals=n.Globals||{};var e=n.Globals,t=n.Globals,r=n["Data.Maybe"],u=n["Data.Tuple"];e["app'"]=function(n){return t._app()},e.mmoment8601=function(n){return t._mmoment8601(r.Just.create,r.Nothing.value,u.Tuple.create,n)},e.closeWindow=function(n){return function(){return t._closeWindow(n)}},e.RawHTML=function(n){return n},e.setFocus=function(n){return function(){return t._setFocus(n)}},e.toLocaleDateString=function(n){return t._toLocaleDateString(n)}}(t),(t["Simple.JSON"]=t["Simple.JSON"]||{})._unsafeStringify=JSON.stringify,function(n){"use strict";n["Data.Symbol"]=n["Data.Symbol"]||{};var e=n["Data.Symbol"],t=function(){function n(){}return n.value=new n,n}();e.reflectSymbol=function(n){return n.reflectSymbol},e.SProxy=t}(t),function(n){"use strict";(t["Record.Unsafe"]=t["Record.Unsafe"]||{}).unsafeGet=function(n){return function(e){return e[n]}}}(),function(n){"use strict";n["Record.Unsafe"]=n["Record.Unsafe"]||{};var e=n["Record.Unsafe"],t=n["Record.Unsafe"];e.unsafeGet=t.unsafeGet}(t),function(n){"use strict";n.Record=n.Record||{};var e=n.Record,t=n["Data.Symbol"],r=n["Record.Unsafe"];e.get=function(n){return function(){return function(e){return function(u){return r.unsafeGet(t.reflectSymbol(n)(e))(u)}}}}}(t),function(n){"use strict";n.copyRecord=function(n){var e={};for(var t in n)({}).hasOwnProperty.call(n,t)&&(e[t]=n[t]);return e},n.unsafeInsert=function(n){return function(e){return function(t){return t[n]=e,t}}}}(t["Record.Builder"]=t["Record.Builder"]||{}),function(n){"use strict";n["Record.Builder"]=n["Record.Builder"]||{};var e=n["Record.Builder"],t=n["Record.Builder"],r=n["Control.Category"],u=n["Control.Semigroupoid"],a=n["Data.Symbol"],o=u.semigroupoidFn,i=r.categoryFn;e.build=function(n){return function(e){return n(t.copyRecord(e))}},e.insert=function(){return function(){return function(n){return function(e){return function(r){return function(u){return t.unsafeInsert(a.reflectSymbol(n)(e))(r)(u)}}}}}},e.semigroupoidBuilder=o,e.categoryBuilder=i}(t),function(n){"use strict";n["Type.Proxy"]=n["Type.Proxy"]||{};var e=n["Type.Proxy"],t=function(){function n(){}return n.value=new n,n}();e.Proxy=t}(t),function(n){"use strict";n["Simple.JSON"]=n["Simple.JSON"]||{};var e=n["Simple.JSON"],t=n["Simple.JSON"],r=n["Control.Category"],u=n["Control.Semigroupoid"],a=n["Data.Maybe"],o=n["Data.Nullable"],i=n["Data.Symbol"],c=n.Foreign,f=n.Record,l=n["Record.Builder"],s=n["Type.Proxy"],d=function(n){return n.writeImplFields},v=function(n){return n.writeImpl},p={writeImpl:c.unsafeToForeign},m={writeImpl:c.unsafeToForeign},g={writeImpl:r.identity(r.categoryFn)},h={writeImpl:c.unsafeToForeign},b={writeImplFields:function(n){return function(n){return r.identity(l.categoryBuilder)}}};e.writeJSON=function(n){var e=v(n);return function(n){return t._unsafeStringify(e(n))}},e.writeForeignForeign=g,e.writeForeignString=p,e.writeForeignInt=m,e.writeForeignBoolean=h,e.writeForeignNullable=function(n){return{writeImpl:(e=a.maybe(c.unsafeToForeign(o.toNullable(a.Nothing.value)))(v(n)),function(n){return e(o.toMaybe(n))})};var e},e.recordWriteForeign=function(){return function(n){return{writeImpl:function(e){var t=d(n)(s.Proxy.value)(e);return c.unsafeToForeign(l.build(t)({}))}}}},e.consWriteForeignFields=function(n){return function(e){return function(t){return function(){return function(){return function(){return{writeImplFields:function(r){return function(r){var a=d(t)(s.Proxy.value)(r),o=v(e)(f.get(n)()(i.SProxy.value)(r));return u.compose(l.semigroupoidBuilder)(l.insert()()(n)(i.SProxy.value)(o))(a)}}}}}}}}},e.nilWriteForeignFields=b}(t),function(n){"use strict";n.Model=n.Model||{};var e=n.Model,t=n["Control.Applicative"],r=n["Control.Monad.Except"],u=n["Control.Monad.Except.Trans"],a=n["Data.Array"],o=n["Data.Either"],i=n["Data.Eq"],c=n["Data.Functor"],f=n["Data.Identity"],l=n["Data.Maybe"],s=n["Data.Monoid"],d=n["Data.String.Common"],v=n.Foreign,p=n["Simple.JSON"],m=function(){function n(n,e){this.value0=n,this.value1=e}return n.create=function(e){return function(t){return new n(e,t)}},n}(),g=function(){function n(n,e){this.value0=n,this.value1=e}return n.create=function(e){return function(t){return new n(e,t)}},n}(),h=function(){function n(n,e){this.value0=n,this.value1=e}return n.create=function(e){return function(t){return new n(e,t)}},n}(),b=function(){function n(){}return n.value=new n,n}(),w=p.recordWriteForeign()(p.consWriteForeignFields({reflectSymbol:function(){return"expanded"}})(p.writeForeignBoolean)(p.consWriteForeignFields({reflectSymbol:function(){return"mode"}})(p.writeForeignString)(p.consWriteForeignFields({reflectSymbol:function(){return"value"}})(p.writeForeignForeign)(p.nilWriteForeignFields)()()())()()())()()()),y=p.recordWriteForeign()(p.consWriteForeignFields({reflectSymbol:function(){return"created"}})(p.writeForeignString)(p.consWriteForeignFields({reflectSymbol:function(){return"id"}})(p.writeForeignInt)(p.consWriteForeignFields({reflectSymbol:function(){return"isMarkdown"}})(p.writeForeignBoolean)(p.consWriteForeignFields({reflectSymbol:function(){return"length"}})(p.writeForeignInt)(p.consWriteForeignFields({reflectSymbol:function(){return"shared"}})(p.writeForeignBoolean)(p.consWriteForeignFields({reflectSymbol:function(){return"slug"}})(p.writeForeignString)(p.consWriteForeignFields({reflectSymbol:function(){return"text"}})(p.writeForeignString)(p.consWriteForeignFields({reflectSymbol:function(){return"title"}})(p.writeForeignString)(p.consWriteForeignFields({reflectSymbol:function(){return"updated"}})(p.writeForeignString)(p.nilWriteForeignFields)()()())()()())()()())()()())()()())()()())()()())()()())()()()),E=p.recordWriteForeign()(p.consWriteForeignFields({reflectSymbol:function(){return"archiveUrl"}})(p.writeForeignNullable(p.writeForeignString))(p.consWriteForeignFields({reflectSymbol:function(){return"bid"}})(p.writeForeignInt)(p.consWriteForeignFields({reflectSymbol:function(){return"description"}})(p.writeForeignString)(p.consWriteForeignFields({reflectSymbol:function(){return"private"}})(p.writeForeignBoolean)(p.consWriteForeignFields({reflectSymbol:function(){return"selected"}})(p.writeForeignBoolean)(p.consWriteForeignFields({reflectSymbol:function(){return"slug"}})(p.writeForeignString)(p.consWriteForeignFields({reflectSymbol:function(){return"tags"}})(p.writeForeignString)(p.consWriteForeignFields({reflectSymbol:function(){return"time"}})(p.writeForeignString)(p.consWriteForeignFields({reflectSymbol:function(){return"title"}})(p.writeForeignString)(p.consWriteForeignFields({reflectSymbol:function(){return"toread"}})(p.writeForeignBoolean)(p.consWriteForeignFields({reflectSymbol:function(){return"url"}})(p.writeForeignString)(p.nilWriteForeignFields)()()())()()())()()())()()())()()())()()())()()())()()())()()())()()())()()()),D=p.recordWriteForeign()(p.consWriteForeignFields({reflectSymbol:function(){return"archiveDefault"}})(p.writeForeignBoolean)(p.consWriteForeignFields({reflectSymbol:function(){return"privacyLock"}})(p.writeForeignBoolean)(p.consWriteForeignFields({reflectSymbol:function(){return"privateDefault"}})(p.writeForeignBoolean)(p.nilWriteForeignFields)()()())()()())()()()),M={eq:function(n){return function(e){return n instanceof m&&e instanceof m?n.value0===e.value0&&n.value1===e.value1:n instanceof g&&e instanceof g?n.value0===e.value0&&n.value1===e.value1:n instanceof h&&e instanceof h?n.value0===e.value0&&i.eq(i.eqArray(i.eqString))(n.value1)(e.value1):n instanceof b&&e instanceof b}}};e.TagCloudModeTop=m,e.TagCloudModeLowerBound=g,e.TagCloudModeRelated=h,e.TagCloudModeNone=b,e.tagCloudModeToF=function(n){return l.fromMaybe(b.value)(o.hush(r.runExcept("top"===n.mode?c.map(u.functorExceptT(f.functorIdentity))(m.create(n.expanded))(v.readInt(f.monadIdentity)(n.value)):"lowerBound"===n.mode?c.map(u.functorExceptT(f.functorIdentity))(g.create(n.expanded))(v.readInt(f.monadIdentity)(n.value)):"related"===n.mode?c.map(u.functorExceptT(f.functorIdentity))(function(e){return new h(n.expanded,d.split(" ")(e))})(v.readString(f.monadIdentity)(n.value)):t.pure(u.applicativeExceptT(f.monadIdentity))(b.value))))},e.tagCloudModeFromF=function(n){if(n instanceof m)return{mode:"top",value:v.unsafeToForeign(n.value1),expanded:n.value0};if(n instanceof g)return{mode:"lowerBound",value:v.unsafeToForeign(n.value1),expanded:n.value0};if(n instanceof h)return{mode:"related",value:v.unsafeToForeign(a.intercalate(s.monoidString)(" ")(n.value1)),expanded:n.value0};if(n instanceof b)return{mode:"none",value:v.unsafeToForeign(""),expanded:!1};throw new Error("Failed pattern match at Model (line 92, column 1 - line 92, column 51): "+[n.constructor.name])},e.isExpanded=function(n){if(n instanceof m)return n.value0;if(n instanceof g)return n.value0;if(n instanceof h)return n.value0;if(n instanceof b)return!1;throw new Error("Failed pattern match at Model (line 102, column 1 - line 102, column 39): "+[n.constructor.name])},e.isRelated=function(n){return n instanceof h},e.setExpanded=function(n){return function(e){if(n instanceof m)return new m(e,n.value1);if(n instanceof g)return new g(e,n.value1);if(n instanceof h)return new h(e,n.value1);if(n instanceof b)return b.value;throw new Error("Failed pattern match at Model (line 112, column 1 - line 112, column 57): "+[n.constructor.name,e.constructor.name])}},e["writeForeignBookmark'"]=E,e["writeForeignNote'"]=y,e.writeForeignAccountSettin=D,e["writeForeignTagCloudMode'"]=w,e.eqTagCloudModeF=M}(t),function(n){"use strict";(t["Web.HTML"]=t["Web.HTML"]||{}).window=function(){return window}}(),function(n){"use strict";n["Web.HTML"]=n["Web.HTML"]||{};var e=n["Web.HTML"],t=n["Web.HTML"];e.window=t.window}(t),function(n){"use strict";n.setHref=function(n){return function(e){return function(){e.href=n}}},n.origin=function(n){return function(){return n.origin}},n.search=function(n){return function(){return n.search}},n.reload=function(n){return function(){n.reload()}}}(t["Web.HTML.Location"]=t["Web.HTML.Location"]||{}),function(n){"use strict";n["Web.HTML.Location"]=n["Web.HTML.Location"]||{};var e=n["Web.HTML.Location"],t=n["Web.HTML.Location"];e.setHref=t.setHref,e.origin=t.origin,e.search=t.search,e.reload=t.reload}(t),function(n){"use strict";n.document=function(n){return function(){return n.document}},n.location=function(n){return function(){return n.location}}}(t["Web.HTML.Window"]=t["Web.HTML.Window"]||{}),function(n){"use strict";n["Web.HTML.Window"]=n["Web.HTML.Window"]||{};var e=n["Web.HTML.Window"],t=n["Web.HTML.Window"];e.document=t.document,e.location=t.location}(t),function(n){"use strict";n.App=n.App||{};var e=n.App,t=n.Affjax,r=n["Affjax.RequestBody"],u=n["Affjax.RequestHeader"],a=n["Affjax.ResponseFormat"],o=n["Affjax.StatusCode"],i=n["Control.Applicative"],c=n["Control.Bind"],f=n["Data.Argonaut.Decode.Class"],l=n["Data.Array"],s=n["Data.Either"],d=n["Data.Eq"],v=n["Data.Functor"],p=n["Data.HTTP.Method"],m=n["Data.Maybe"],g=n["Data.MediaType.Common"],h=n["Data.Show"],b=n["Data.Unit"],w=n.Effect,y=n["Effect.Aff"],E=n["Effect.Class"],D=n.Globals,M=n.Model,A=n["Simple.JSON"],C=n["Web.HTML"],F=n["Web.HTML.Location"],H=n["Web.HTML.Window"],T=function(){function n(){}return n.value=new n,n}(),S=function(){function n(){}return n.value=new n,n}(),_={show:function(n){if(n instanceof T)return"star";if(n instanceof S)return"unstar";throw new Error("Failed pattern match at App (line 29, column 1 - line 31, column 25): "+[n.constructor.name])}},k=function(n){return function(e){return function(r){return function(a){return function(o){var i=D["app'"](b.unit);return t.request({method:new s.Left(n),url:e,headers:l.cons(new u.RequestHeader(i.csrfHeaderName,i.csrfToken))(r),content:a,username:t.defaultRequest.username,password:t.defaultRequest.password,withCredentials:t.defaultRequest.withCredentials,responseFormat:o,timeout:t.defaultRequest.timeout})}}}}},L=function(n){return function(e){return function(t){return function(r){return function(u){return k(n)(D["app'"](b.unit).homeR+e)(t)(r)(u)}}}}},x=function(n){return function(e){return function(t){return function(a){return L(n)(e)([new u.ContentType(g.applicationFormURLEncoded)])(v.map(m.functorMaybe)(r.FormURLEncoded.create)(t))(a)}}}},I=function(n){return function(e){return function(t){return function(a){return function(o){return L(e)(t)([new u.ContentType(g.applicationJSON)])(v.map(m.functorMaybe)((i=A.writeJSON(n),function(n){return r.string(i(n))}))(a))(o);var i}}}}};e.Star=T,e.UnStar=S,e.toggleStar=function(n){return function(e){var t="bm/"+h.show(h.showInt)(n)+"/"+h.show(_)(e);return v.void(y.functorAff)(x(p.POST.value)(t)(m.Nothing.value)(a.ignore))}},e.destroy=function(n){return x(p.DELETE.value)("bm/"+h.show(h.showInt)(n))(m.Nothing.value)(a.ignore)},e.markRead=function(n){var e="bm/"+h.show(h.showInt)(n)+"/read";return x(p.POST.value)(e)(m.Nothing.value)(a.ignore)},e.editBookmark=function(n){return I(M["writeForeignBookmark'"])(p.POST.value)("api/add")(new m.Just(n))(a.string)},e.editNote=function(n){return I(M["writeForeignNote'"])(p.POST.value)("api/note/add")(new m.Just(n))(a.string)},e.lookupTitle=function(n){return c.bind(y.bindAff)(I(M["writeForeignBookmark'"])(p.POST.value)("api/lookuptitle")(new m.Just(n))(a.string))(function(n){return i.pure(y.applicativeAff)(c.bind(m.bindMaybe)(s.hush(n))(function(n){return d.eq(o.eqStatusCode)(n.status)(200)?new m.Just(n.body):m.Nothing.value}))})},e.getTagCloud=function(n){return c.bind(y.bindAff)(I(M["writeForeignTagCloudMode'"])(p.POST.value)("api/tagcloud")(new m.Just(n))(a.json))(function(n){return i.pure(y.applicativeAff)(c.bind(m.bindMaybe)(s.hush(n))(function(n){return s.hush(f.decodeJson(f.decodeForeignObject(f.decodeJsonInt))(n.body))}))})},e.updateTagCloudMode=function(n){return I(M["writeForeignTagCloudMode'"])(p.POST.value)("api/tagcloudmode")(new m.Just(n))(a.ignore)},e.destroyNote=function(n){return x(p.DELETE.value)("api/note/"+h.show(h.showInt)(n))(m.Nothing.value)(a.ignore)},e.editAccountSettings=function(n){return I(M.writeForeignAccountSettin)(p.POST.value)("api/accountSettings")(new m.Just(n))(a.ignore)},e.logout=function(n){var e=D["app'"](n);return c.discard(c.discardUnit)(y.bindAff)(v.void(y.functorAff)(k(p.POST.value)(e.authRlogoutR)([])(m.Nothing.value)(a.ignore)))(function(){return E.liftEffect(y.monadEffectAff)(c.bind(w.bindEffect)(c.bind(w.bindEffect)(C.window)(H.location))(F.reload))})}}(t),function(n){"use strict";n["DOM.HTML.Indexed.InputType"]=n["DOM.HTML.Indexed.InputType"]||{};var e=n["DOM.HTML.Indexed.InputType"],t=function(){function n(){}return n.value=new n,n}(),r=function(){function n(){}return n.value=new n,n}(),u=function(){function n(){}return n.value=new n,n}(),a=function(){function n(){}return n.value=new n,n}(),o=function(){function n(){}return n.value=new n,n}(),i=function(){function n(){}return n.value=new n,n}(),c=function(){function n(){}return n.value=new n,n}(),f=function(){function n(){}return n.value=new n,n}(),l=function(){function n(){}return n.value=new n,n}(),s=function(){function n(){}return n.value=new n,n}(),d=function(){function n(){}return n.value=new n,n}(),v=function(){function n(){}return n.value=new n,n}(),p=function(){function n(){}return n.value=new n,n}(),m=function(){function n(){}return n.value=new n,n}(),g=function(){function n(){}return n.value=new n,n}(),h=function(){function n(){}return n.value=new n,n}(),b=function(){function n(){}return n.value=new n,n}(),w=function(){function n(){}return n.value=new n,n}(),y=function(){function n(){}return n.value=new n,n}(),E=function(){function n(){}return n.value=new n,n}(),D=function(){function n(){}return n.value=new n,n}(),M=function(){function n(){}return n.value=new n,n}();e.InputCheckbox=r,e.InputReset=g,e.InputSubmit=b,e.InputText=y,e.InputUrl=D,e.renderInputType=function(n){if(n instanceof t)return"button";if(n instanceof r)return"checkbox";if(n instanceof u)return"color";if(n instanceof a)return"date";if(n instanceof o)return"datetime-local";if(n instanceof i)return"email";if(n instanceof c)return"file";if(n instanceof f)return"hidden";if(n instanceof l)return"image";if(n instanceof s)return"month";if(n instanceof d)return"number";if(n instanceof v)return"password";if(n instanceof p)return"radio";if(n instanceof m)return"range";if(n instanceof g)return"reset";if(n instanceof h)return"search";if(n instanceof b)return"submit";if(n instanceof w)return"tel";if(n instanceof y)return"text";if(n instanceof E)return"time";if(n instanceof D)return"url";if(n instanceof M)return"week";throw new Error("Failed pattern match at DOM.HTML.Indexed.InputType (line 28, column 19 - line 50, column 22): "+[n.constructor.name])}}(t),function(n){"use strict";n["Control.Monad.State.Class"]=n["Control.Monad.State.Class"]||{};var e=n["Control.Monad.State.Class"],t=n["Data.Tuple"],r=n["Data.Unit"],u=function(n){return n.state};e.get=function(n){return u(n)(function(n){return new t.Tuple(n,n)})},e.gets=function(n){return function(e){return u(n)(function(n){return new t.Tuple(e(n),n)})}},e.modify=function(n){return function(e){return u(n)(function(n){var r=e(n);return new t.Tuple(r,r)})}},e.modify_=function(n){return function(e){return u(n)(function(n){return new t.Tuple(r.unit,e(n))})}}}(t),function(n){"use strict";n["Data.Lens.Getter"]=n["Data.Lens.Getter"]||{};var e=n["Data.Lens.Getter"],t=n["Control.Category"],r=n["Control.Monad.State.Class"],u=n["Data.Newtype"],a=function(n){return function(e){return function(n){return u.unwrap()(n(t.identity(t.categoryFn)))}(e)(n)}};e.use=function(n){return function(e){return r.gets(n)(function(n){return a(n)(e)})}}}(t),function(n){"use strict";n["Data.Lens.Internal.Forget"]=n["Data.Lens.Internal.Forget"]||{};var e=n["Data.Lens.Internal.Forget"],t=n["Data.Tuple"],r={dimap:function(n){return function(e){return function(e){return function(t){return e(n(t))}}}}},u={first:function(n){return function(e){return n(t.fst(e))}},second:function(n){return function(e){return n(t.snd(e))}},Profunctor0:function(){return r}};e.strongForget=u}(t),function(n){"use strict";n["Data.Profunctor"]=n["Data.Profunctor"]||{};var e=n["Data.Profunctor"];e.dimap=function(n){return n.dimap},e.profunctorFn={dimap:function(n){return function(e){return function(t){return function(r){return e(t(n(r)))}}}}}}(t),function(n){"use strict";n["Data.Profunctor.Strong"]=n["Data.Profunctor.Strong"]||{};var e=n["Data.Profunctor.Strong"],t=n["Data.Functor"],r=n["Data.Profunctor"],u=n["Data.Tuple"],a={first:function(n){return function(e){return new u.Tuple(n(e.value0),e.value1)}},second:t.map(u.functorTuple),Profunctor0:function(){return r.profunctorFn}};e.first=function(n){return n.first},e.strongFn=a}(t),function(n){"use strict";n["Data.Lens.Lens"]=n["Data.Lens.Lens"]||{};var e=n["Data.Lens.Lens"],t=n["Data.Profunctor"],r=n["Data.Profunctor.Strong"],u=n["Data.Tuple"];e.lens=function(n){return function(e){return function(a){return(o=function(t){return new u.Tuple(n(t),function(n){return e(t)(n)})},function(n){return function(e){return t.dimap(n.Profunctor0())(o)(function(n){return n.value1(n.value0)})(r.first(n)(e))}})(a);var o}}}}(t),function(n){"use strict";n["Data.Lens.Setter"]=n["Data.Lens.Setter"]||{};var e=n["Data.Lens.Setter"],t=n["Control.Monad.State.Class"],r=n["Data.Function"],u=n["Data.Functor"],a=function(n){return n};e.assign=function(n){return function(e){return function(o){return u.void(n.Monad0().Bind1().Apply0().Functor0())(t.modify(n)((i=e,function(n){return a(i)(r.const(n))})(o)));var i}}},e.modifying=function(n){return function(e){return function(r){return u.void(n.Monad0().Bind1().Apply0().Functor0())(t.modify(n)(a(e)(r)))}}}}(t),function(n){"use strict";n["Effect.Aff.Class"]=n["Effect.Aff.Class"]||{};var e=n["Effect.Aff.Class"],t=n["Control.Category"],r=n["Effect.Aff"],u={liftAff:t.identity(t.categoryFn),MonadEffect0:function(){return r.monadEffectAff}};e.liftAff=function(n){return n.liftAff},e.monadAffAff=u}(t),function(n){"use strict";n["Data.Exists"]=n["Data.Exists"]||{};var e=n["Data.Exists"],t=n["Unsafe.Coerce"],r=t.unsafeCoerce,u=t.unsafeCoerce;e.mkExists=u,e.runExists=r}(t),function(n){"use strict";n["Data.Coyoneda"]=n["Data.Coyoneda"]||{};var e=n["Data.Coyoneda"],t=n["Control.Category"],r=n["Data.Exists"],u=function(){function n(n,e){this.value0=n,this.value1=e}return n.create=function(e){return function(t){return new n(e,t)}},n}(),a=function(n){return function(e){return r.mkExists(new u(n,e))}},o={map:function(n){return function(e){return r.runExists(function(e){return a(function(t){return n(e.value0(t))})(e.value1)})(e)}}},i=a(t.identity(t.categoryFn));e.unCoyoneda=function(n){return function(e){return r.runExists(function(e){return n(e.value0)(e.value1)})(e)}},e.liftCoyoneda=i,e.functorCoyoneda=o}(t),function(n){"use strict";n["Data.Map.Internal"]=n["Data.Map.Internal"]||{};var e=n["Data.Map.Internal"],t=n["Control.Applicative"],r=n["Data.Foldable"],u=n["Data.List.Types"],a=n["Data.Maybe"],o=n["Data.Ord"],i=n["Data.Ordering"],c=n["Data.Semigroup"],f=n["Data.Tuple"],l=function(){function n(){}return n.value=new n,n}(),s=function(){function n(n,e,t,r){this.value0=n,this.value1=e,this.value2=t,this.value3=r}return n.create=function(e){return function(t){return function(r){return function(u){return new n(e,t,r,u)}}}},n}(),d=function(){function n(n,e,t,r,u,a,o){this.value0=n,this.value1=e,this.value2=t,this.value3=r,this.value4=u,this.value5=a,this.value6=o}return n.create=function(e){return function(t){return function(r){return function(u){return function(a){return function(o){return function(i){return new n(e,t,r,u,a,o,i)}}}}}}},n}(),v=function(){function n(n,e,t){this.value0=n,this.value1=e,this.value2=t}return n.create=function(e){return function(t){return function(r){return new n(e,t,r)}}},n}(),p=function(){function n(n,e,t){this.value0=n,this.value1=e,this.value2=t}return n.create=function(e){return function(t){return function(r){return new n(e,t,r)}}},n}(),m=function(){function n(n,e,t,r,u,a){this.value0=n,this.value1=e,this.value2=t,this.value3=r,this.value4=u,this.value5=a}return n.create=function(e){return function(t){return function(r){return function(u){return function(a){return function(o){return new n(e,t,r,u,a,o)}}}}}},n}(),g=function(){function n(n,e,t,r,u,a){this.value0=n,this.value1=e,this.value2=t,this.value3=r,this.value4=u,this.value5=a}return n.create=function(e){return function(t){return function(r){return function(u){return function(a){return function(o){return new n(e,t,r,u,a,o)}}}}}},n}(),h=function(){function n(n,e,t,r,u,a){this.value0=n,this.value1=e,this.value2=t,this.value3=r,this.value4=u,this.value5=a}return n.create=function(e){return function(t){return function(r){return function(u){return function(a){return function(o){return new n(e,t,r,u,a,o)}}}}}},n}(),b=function(){function n(n,e,t,r){this.value0=n,this.value1=e,this.value2=t,this.value3=r}return n.create=function(e){return function(t){return function(r){return function(u){return new n(e,t,r,u)}}}},n}(),w=function n(e){if(e instanceof l)return u.Nil.value;if(e instanceof s)return c.append(u.semigroupList)(n(e.value0))(c.append(u.semigroupList)(t.pure(u.applicativeList)(e.value2))(n(e.value3)));if(e instanceof d)return c.append(u.semigroupList)(n(e.value0))(c.append(u.semigroupList)(t.pure(u.applicativeList)(e.value2))(c.append(u.semigroupList)(n(e.value3))(c.append(u.semigroupList)(t.pure(u.applicativeList)(e.value5))(n(e.value6)))));throw new Error("Failed pattern match at Data.Map.Internal (line 626, column 1 - line 626, column 40): "+[e.constructor.name])},y=function(n){return function(e){var t=o.compare(n);return function(n){var r,u=!1;function o(r){if(r instanceof l)return u=!0,a.Nothing.value;if(r instanceof s){var o=t(e)(r.value1);return o instanceof i.EQ?(u=!0,new a.Just(r.value2)):o instanceof i.LT?void(n=r.value0):void(n=r.value3)}if(r instanceof d){var c=t(e)(r.value1);if(c instanceof i.EQ)return u=!0,new a.Just(r.value2);var f=t(e)(r.value4);return f instanceof i.EQ?(u=!0,new a.Just(r.value5)):c instanceof i.LT?void(n=r.value0):f instanceof i.GT?void(n=r.value6):void(n=r.value3)}throw new Error("Failed pattern match at Data.Map.Internal (line 211, column 5 - line 211, column 22): "+[r.constructor.name])}for(;!u;)r=o(n);return r}}},E=function(n){return function(e){return function(t){var r,a=n,o=e,i=!1;function c(n,e,r){if(e instanceof u.Nil)return i=!0,r;if(e instanceof u.Cons){if(e.value0 instanceof v)return a=n,o=e.value1,void(t=new s(r,e.value0.value0,e.value0.value1,e.value0.value2));if(e.value0 instanceof p)return a=n,o=e.value1,void(t=new s(e.value0.value0,e.value0.value1,e.value0.value2,r));if(e.value0 instanceof m)return a=n,o=e.value1,void(t=new d(r,e.value0.value0,e.value0.value1,e.value0.value2,e.value0.value3,e.value0.value4,e.value0.value5));if(e.value0 instanceof g)return a=n,o=e.value1,void(t=new d(e.value0.value0,e.value0.value1,e.value0.value2,r,e.value0.value3,e.value0.value4,e.value0.value5));if(e.value0 instanceof h)return a=n,o=e.value1,void(t=new d(e.value0.value0,e.value0.value1,e.value0.value2,e.value0.value3,e.value0.value4,e.value0.value5,r));throw new Error("Failed pattern match at Data.Map.Internal (line 432, column 3 - line 437, column 88): "+[e.value0.constructor.name])}throw new Error("Failed pattern match at Data.Map.Internal (line 429, column 1 - line 429, column 80): "+[e.constructor.name,r.constructor.name])}for(;!i;)r=c(a,o,t);return r}}},D=function(n){return function(e){return function(t){var r,a=function(e){return function(t){var r,a=e,o=!1;function i(e,r){if(e instanceof u.Nil)return o=!0,new s(r.value0,r.value1,r.value2,r.value3);if(e instanceof u.Cons){if(e.value0 instanceof v)return o=!0,E(n)(e.value1)(new d(r.value0,r.value1,r.value2,r.value3,e.value0.value0,e.value0.value1,e.value0.value2));if(e.value0 instanceof p)return o=!0,E(n)(e.value1)(new d(e.value0.value0,e.value0.value1,e.value0.value2,r.value0,r.value1,r.value2,r.value3));if(e.value0 instanceof m)return a=e.value1,void(t=new b(new s(r.value0,r.value1,r.value2,r.value3),e.value0.value0,e.value0.value1,new s(e.value0.value2,e.value0.value3,e.value0.value4,e.value0.value5)));if(e.value0 instanceof g)return a=e.value1,void(t=new b(new s(e.value0.value0,e.value0.value1,e.value0.value2,r.value0),r.value1,r.value2,new s(r.value3,e.value0.value3,e.value0.value4,e.value0.value5)));if(e.value0 instanceof h)return a=e.value1,void(t=new b(new s(e.value0.value0,e.value0.value1,e.value0.value2,e.value0.value3),e.value0.value4,e.value0.value5,new s(r.value0,r.value1,r.value2,r.value3)));throw new Error("Failed pattern match at Data.Map.Internal (line 468, column 5 - line 473, column 108): "+[e.value0.constructor.name,r.constructor.name])}throw new Error("Failed pattern match at Data.Map.Internal (line 465, column 3 - line 465, column 56): "+[e.constructor.name,r.constructor.name])}for(;!o;)r=i(a,t);return r}},c=o.compare(n);return r=u.Nil.value,function(o){var f,w=r,y=!1;function D(r,f){if(f instanceof l)return y=!0,a(r)(new b(l.value,e,t,l.value));if(f instanceof s){var D=c(e)(f.value1);return D instanceof i.EQ?(y=!0,E(n)(r)(new s(f.value0,e,t,f.value3))):D instanceof i.LT?(w=new u.Cons(new v(f.value1,f.value2,f.value3),r),void(o=f.value0)):(w=new u.Cons(new p(f.value0,f.value1,f.value2),r),void(o=f.value3))}if(f instanceof d){var M=c(e)(f.value1);if(M instanceof i.EQ)return y=!0,E(n)(r)(new d(f.value0,e,t,f.value3,f.value4,f.value5,f.value6));var A=c(e)(f.value4);return A instanceof i.EQ?(y=!0,E(n)(r)(new d(f.value0,f.value1,f.value2,f.value3,e,t,f.value6))):M instanceof i.LT?(w=new u.Cons(new m(f.value1,f.value2,f.value3,f.value4,f.value5,f.value6),r),void(o=f.value0)):M instanceof i.GT&&A instanceof i.LT?(w=new u.Cons(new g(f.value0,f.value1,f.value2,f.value4,f.value5,f.value6),r),void(o=f.value3)):(w=new u.Cons(new h(f.value0,f.value1,f.value2,f.value3,f.value4,f.value5),r),void(o=f.value6))}throw new Error("Failed pattern match at Data.Map.Internal (line 448, column 3 - line 448, column 55): "+[r.constructor.name,f.constructor.name])}for(;!y;)f=D(w,o);return f}}}},M=function(n){return function(e){var t,r=function(e){return function(t){var r,a=e,o=!1;function i(e,r){if(e instanceof u.Nil)return o=!0,r;if(e instanceof u.Cons){if(e.value0 instanceof v&&e.value0.value2 instanceof l&&r instanceof l)return o=!0,E(n)(e.value1)(new s(l.value,e.value0.value0,e.value0.value1,l.value));if(e.value0 instanceof p&&e.value0.value0 instanceof l&&r instanceof l)return o=!0,E(n)(e.value1)(new s(l.value,e.value0.value1,e.value0.value2,l.value));if(e.value0 instanceof v&&e.value0.value2 instanceof s)return a=e.value1,void(t=new d(r,e.value0.value0,e.value0.value1,e.value0.value2.value0,e.value0.value2.value1,e.value0.value2.value2,e.value0.value2.value3));if(e.value0 instanceof p&&e.value0.value0 instanceof s)return a=e.value1,void(t=new d(e.value0.value0.value0,e.value0.value0.value1,e.value0.value0.value2,e.value0.value0.value3,e.value0.value1,e.value0.value2,r));if(e.value0 instanceof v&&e.value0.value2 instanceof d)return o=!0,E(n)(e.value1)(new s(new s(r,e.value0.value0,e.value0.value1,e.value0.value2.value0),e.value0.value2.value1,e.value0.value2.value2,new s(e.value0.value2.value3,e.value0.value2.value4,e.value0.value2.value5,e.value0.value2.value6)));if(e.value0 instanceof p&&e.value0.value0 instanceof d)return o=!0,E(n)(e.value1)(new s(new s(e.value0.value0.value0,e.value0.value0.value1,e.value0.value0.value2,e.value0.value0.value3),e.value0.value0.value4,e.value0.value0.value5,new s(e.value0.value0.value6,e.value0.value1,e.value0.value2,r)));if(e.value0 instanceof m&&e.value0.value2 instanceof l&&e.value0.value5 instanceof l&&r instanceof l)return o=!0,E(n)(e.value1)(new d(l.value,e.value0.value0,e.value0.value1,l.value,e.value0.value3,e.value0.value4,l.value));if(e.value0 instanceof g&&e.value0.value0 instanceof l&&e.value0.value5 instanceof l&&r instanceof l)return o=!0,E(n)(e.value1)(new d(l.value,e.value0.value1,e.value0.value2,l.value,e.value0.value3,e.value0.value4,l.value));if(e.value0 instanceof h&&e.value0.value0 instanceof l&&e.value0.value3 instanceof l&&r instanceof l)return o=!0,E(n)(e.value1)(new d(l.value,e.value0.value1,e.value0.value2,l.value,e.value0.value4,e.value0.value5,l.value));if(e.value0 instanceof m&&e.value0.value2 instanceof s)return o=!0,E(n)(e.value1)(new s(new d(r,e.value0.value0,e.value0.value1,e.value0.value2.value0,e.value0.value2.value1,e.value0.value2.value2,e.value0.value2.value3),e.value0.value3,e.value0.value4,e.value0.value5));if(e.value0 instanceof g&&e.value0.value0 instanceof s)return o=!0,E(n)(e.value1)(new s(new d(e.value0.value0.value0,e.value0.value0.value1,e.value0.value0.value2,e.value0.value0.value3,e.value0.value1,e.value0.value2,r),e.value0.value3,e.value0.value4,e.value0.value5));if(e.value0 instanceof g&&e.value0.value5 instanceof s)return o=!0,E(n)(e.value1)(new s(e.value0.value0,e.value0.value1,e.value0.value2,new d(r,e.value0.value3,e.value0.value4,e.value0.value5.value0,e.value0.value5.value1,e.value0.value5.value2,e.value0.value5.value3)));if(e.value0 instanceof h&&e.value0.value3 instanceof s)return o=!0,E(n)(e.value1)(new s(e.value0.value0,e.value0.value1,e.value0.value2,new d(e.value0.value3.value0,e.value0.value3.value1,e.value0.value3.value2,e.value0.value3.value3,e.value0.value4,e.value0.value5,r)));if(e.value0 instanceof m&&e.value0.value2 instanceof d)return o=!0,E(n)(e.value1)(new d(new s(r,e.value0.value0,e.value0.value1,e.value0.value2.value0),e.value0.value2.value1,e.value0.value2.value2,new s(e.value0.value2.value3,e.value0.value2.value4,e.value0.value2.value5,e.value0.value2.value6),e.value0.value3,e.value0.value4,e.value0.value5));if(e.value0 instanceof g&&e.value0.value0 instanceof d)return o=!0,E(n)(e.value1)(new d(new s(e.value0.value0.value0,e.value0.value0.value1,e.value0.value0.value2,e.value0.value0.value3),e.value0.value0.value4,e.value0.value0.value5,new s(e.value0.value0.value6,e.value0.value1,e.value0.value2,r),e.value0.value3,e.value0.value4,e.value0.value5));if(e.value0 instanceof g&&e.value0.value5 instanceof d)return o=!0,E(n)(e.value1)(new d(e.value0.value0,e.value0.value1,e.value0.value2,new s(r,e.value0.value3,e.value0.value4,e.value0.value5.value0),e.value0.value5.value1,e.value0.value5.value2,new s(e.value0.value5.value3,e.value0.value5.value4,e.value0.value5.value5,e.value0.value5.value6)));if(e.value0 instanceof h&&e.value0.value3 instanceof d)return o=!0,E(n)(e.value1)(new d(e.value0.value0,e.value0.value1,e.value0.value2,new s(e.value0.value3.value0,e.value0.value3.value1,e.value0.value3.value2,e.value0.value3.value3),e.value0.value3.value4,e.value0.value3.value5,new s(e.value0.value3.value6,e.value0.value4,e.value0.value5,r)));throw new Error("Failed pattern match at Data.Map.Internal (line 525, column 9 - line 542, column 136): "+[e.value0.constructor.name,r.constructor.name])}throw new Error("Failed pattern match at Data.Map.Internal (line 522, column 5 - line 542, column 136): "+[e.constructor.name])}for(;!o;)r=i(a,t);return r}},c=function(n){return function(e){var t,a=n,o=!1;function i(n,t){if(t instanceof s&&t.value0 instanceof l&&t.value3 instanceof l)return o=!0,r(n)(l.value);if(t instanceof s)return a=new u.Cons(new p(t.value0,t.value1,t.value2),n),void(e=t.value3);if(t instanceof d&&t.value0 instanceof l&&t.value3 instanceof l&&t.value6 instanceof l)return o=!0,r(new u.Cons(new p(l.value,t.value1,t.value2),n))(l.value);if(t instanceof d)return a=new u.Cons(new h(t.value0,t.value1,t.value2,t.value3,t.value4,t.value5),n),void(e=t.value6);throw new Error("Failed pattern match at Data.Map.Internal (line 554, column 5 - line 558, column 107): "+[t.constructor.name])}for(;!o;)t=i(a,e);return t}},b=function(n){var e,t=!1;function r(e){if(e instanceof s&&e.value3 instanceof l)return t=!0,{key:e.value1,value:e.value2};if(e instanceof s)n=e.value3;else{if(e instanceof d&&e.value6 instanceof l)return t=!0,{key:e.value4,value:e.value5};if(!(e instanceof d))throw new Error("Failed pattern match at Data.Map.Internal (line 545, column 33 - line 549, column 45): "+[e.constructor.name]);n=e.value6}}for(;!t;)e=r(n);return e},w=o.compare(n);return t=u.Nil.value,function(o){var y,D=t,M=!1;function A(t,y){if(y instanceof l)return M=!0,a.Nothing.value;if(y instanceof s){var A=w(e)(y.value1);if(y.value3 instanceof l&&A instanceof i.EQ)return M=!0,new a.Just(new f.Tuple(y.value2,r(t)(l.value)));if(A instanceof i.EQ){var C=b(y.value0);return M=!0,new a.Just(new f.Tuple(y.value2,c(new u.Cons(new v(C.key,C.value,y.value3),t))(y.value0)))}return A instanceof i.LT?(D=new u.Cons(new v(y.value1,y.value2,y.value3),t),void(o=y.value0)):(D=new u.Cons(new p(y.value0,y.value1,y.value2),t),void(o=y.value3))}if(y instanceof d){var F=y.value0 instanceof l&&y.value3 instanceof l&&y.value6 instanceof l,H=(A=w(e)(y.value4),w(e)(y.value1));return F&&H instanceof i.EQ?(M=!0,new a.Just(new f.Tuple(y.value2,E(n)(t)(new s(l.value,y.value4,y.value5,l.value))))):F&&A instanceof i.EQ?(M=!0,new a.Just(new f.Tuple(y.value5,E(n)(t)(new s(l.value,y.value1,y.value2,l.value))))):H instanceof i.EQ?(C=b(y.value0),M=!0,new a.Just(new f.Tuple(y.value2,c(new u.Cons(new m(C.key,C.value,y.value3,y.value4,y.value5,y.value6),t))(y.value0)))):A instanceof i.EQ?(C=b(y.value3),M=!0,new a.Just(new f.Tuple(y.value5,c(new u.Cons(new g(y.value0,y.value1,y.value2,C.key,C.value,y.value6),t))(y.value3)))):H instanceof i.LT?(D=new u.Cons(new m(y.value1,y.value2,y.value3,y.value4,y.value5,y.value6),t),void(o=y.value0)):H instanceof i.GT&&A instanceof i.LT?(D=new u.Cons(new g(y.value0,y.value1,y.value2,y.value4,y.value5,y.value6),t),void(o=y.value3)):(D=new u.Cons(new h(y.value0,y.value1,y.value2,y.value3,y.value4,y.value5),t),void(o=y.value6))}throw new Error("Failed pattern match at Data.Map.Internal (line 495, column 34 - line 518, column 80): "+[y.constructor.name])}for(;!M;)y=A(D,o);return y}}},A={foldl:function(n){return function(e){return function(t){return r.foldl(u.foldableList)(n)(e)(w(t))}}},foldr:function(n){return function(e){return function(t){return r.foldr(u.foldableList)(n)(e)(w(t))}}},foldMap:function(n){return function(e){return function(t){return r.foldMap(u.foldableList)(n)(e)(w(t))}}}},C=l.value,F=function(n){return function(e){return function(t){return a.maybe(t)(f.snd)(M(n)(e)(t))}}};e.empty=C,e.insert=D,e.lookup=y,e.delete=F,e.pop=M,e.alter=function(n){return function(e){return function(t){return function(r){var u=e(y(n)(t)(r));if(u instanceof a.Nothing)return F(n)(t)(r);if(u instanceof a.Just)return D(n)(t)(u.value0)(r);throw new Error("Failed pattern match at Data.Map.Internal (line 563, column 15 - line 565, column 25): "+[u.constructor.name])}}}},e.foldableMap=A}(t),function(n){"use strict";n["Halogen.Data.OrdBox"]=n["Halogen.Data.OrdBox"]||{};var e=n["Halogen.Data.OrdBox"],t=n["Data.Eq"],r=n["Data.Ord"],u=function(){function n(n,e,t){this.value0=n,this.value1=e,this.value2=t}return n.create=function(e){return function(t){return function(r){return new n(e,t,r)}}},n}(),a={eq:function(n){return function(e){return n.value0(n.value2)(e.value2)}}},o={compare:function(n){return function(e){return n.value1(n.value2)(e.value2)}},Eq0:function(){return a}};e.mkOrdBox=function(n){return u.create(t.eq(n.Eq0()))(r.compare(n))},e.ordOrdBox=o}(t),function(n){"use strict";n["Halogen.Data.Slot"]=n["Halogen.Data.Slot"]||{};var e=n["Halogen.Data.Slot"],t=n["Data.Foldable"],r=n["Data.Map.Internal"],u=n["Data.Ord"],a=n["Data.Symbol"],o=n["Data.Tuple"],i=n["Halogen.Data.OrdBox"],c=r.empty;e.empty=c,e.lookup=function(){return function(n){return function(e){return function(t){return function(c){return function(f){return r.lookup(o.ordTuple(u.ordString)(i.ordOrdBox))(new o.Tuple(a.reflectSymbol(n)(t),i.mkOrdBox(e)(c)))(f)}}}}}},e.insert=function(){return function(n){return function(e){return function(t){return function(c){return function(f){return function(l){return r.insert(o.ordTuple(u.ordString)(i.ordOrdBox))(new o.Tuple(a.reflectSymbol(n)(t),i.mkOrdBox(e)(c)))(f)(l)}}}}}}},e.pop=function(){return function(n){return function(e){return function(t){return function(c){return function(f){return r.pop(o.ordTuple(u.ordString)(i.ordOrdBox))(new o.Tuple(a.reflectSymbol(n)(t),i.mkOrdBox(e)(c)))(f)}}}}}},e.foreachSlot=function(n){return function(e){return function(u){return t.traverse_(n)(r.foldableMap)(function(n){return u(n)})(e)}}}}(t),function(n){"use strict";n["Data.List"]=n["Data.List"]||{};var e,t=n["Data.List"],r=n["Data.List.Types"],u=(e=r.Nil.value,function(n){var t,u=e,a=!1;function o(e,t){if(t instanceof r.Nil)return a=!0,e;if(t instanceof r.Cons)return u=new r.Cons(t.value0,e),void(n=t.value1);throw new Error("Failed pattern match at Data.List (line 372, column 3 - line 372, column 19): "+[e.constructor.name,t.constructor.name])}for(;!a;)t=o(u,n);return t});t.null=function(n){return n instanceof r.Nil},t.reverse=u}(t),function(n){"use strict";n["Data.CatQueue"]=n["Data.CatQueue"]||{};var e=n["Data.CatQueue"],t=n["Data.List"],r=n["Data.List.Types"],u=n["Data.Maybe"],a=n["Data.Tuple"],o=function(){function n(n,e){this.value0=n,this.value1=e}return n.create=function(e){return function(t){return new n(e,t)}},n}(),i=new o(r.Nil.value,r.Nil.value);e.empty=i,e.null=function(n){return n.value0 instanceof r.Nil&&n.value1 instanceof r.Nil},e.snoc=function(n){return function(e){return new o(n.value0,new r.Cons(e,n.value1))}},e.uncons=function(n){var e,i=!1;function c(e){if(e.value0 instanceof r.Nil&&e.value1 instanceof r.Nil)return i=!0,u.Nothing.value;if(!(e.value0 instanceof r.Nil)){if(e.value0 instanceof r.Cons)return i=!0,new u.Just(new a.Tuple(e.value0.value0,new o(e.value0.value1,e.value1)));throw new Error("Failed pattern match at Data.CatQueue (line 83, column 1 - line 83, column 63): "+[e.constructor.name])}n=new o(t.reverse(e.value1),r.Nil.value)}for(;!i;)e=c(n);return e}}(t),function(n){"use strict";n["Data.CatList"]=n["Data.CatList"]||{};var e=n["Data.CatList"],t=n["Data.CatQueue"],r=n["Data.List.Types"],u=n["Data.Maybe"],a=n["Data.Tuple"],o=function(){function n(){}return n.value=new n,n}(),i=function(){function n(n,e){this.value0=n,this.value1=e}return n.create=function(e){return function(t){return new n(e,t)}},n}(),c=function(n){return function(e){if(n instanceof o)return e;if(e instanceof o)return n;if(n instanceof i)return new i(n.value0,t.snoc(n.value1)(e));throw new Error("Failed pattern match at Data.CatList (line 109, column 1 - line 109, column 54): "+[n.constructor.name,e.constructor.name])}},f=o.value,l=c,s={append:l};e.empty=f,e.snoc=function(n){return function(e){return l(n)(new i(e,t.empty))}},e.uncons=function(n){if(n instanceof o)return u.Nothing.value;if(n instanceof i)return new u.Just(new a.Tuple(n.value0,t.null(n.value1)?o.value:(e=c,function(n){return function(a){var o,i=function(n){return function(e){return function(t){var u,a=n,o=e,i=!1;function c(n,e,u){if(u instanceof r.Nil)return i=!0,e;if(u instanceof r.Cons)return a=n,o=n(e)(u.value0),void(t=u.value1);throw new Error("Failed pattern match at Data.CatList (line 125, column 3 - line 125, column 59): "+[n.constructor.name,e.constructor.name,u.constructor.name])}for(;!i;)u=c(a,o,t);return u}}};return(o=a,function(a){var c,f=o,l=!1;function s(o,c){var s=t.uncons(o);if(s instanceof u.Nothing)return l=!0,i(function(n){return function(e){return e(n)}})(n)(c);if(s instanceof u.Just)return f=s.value0.value1,void(a=new r.Cons(e(s.value0.value0),c));throw new Error("Failed pattern match at Data.CatList (line 121, column 14 - line 123, column 67): "+[s.constructor.name])}for(;!l;)c=s(f,a);return c})(r.Nil.value)}})(o.value)(n.value1)));var e;throw new Error("Failed pattern match at Data.CatList (line 100, column 1 - line 100, column 61): "+[n.constructor.name])},e.semigroupCatList=s}(t),function(n){"use strict";n["Control.Monad.Free"]=n["Control.Monad.Free"]||{};var e=n["Control.Monad.Free"],t=n["Control.Applicative"],r=n["Control.Bind"],u=n["Control.Monad"],a=n["Control.Monad.Rec.Class"],o=n["Data.CatList"],i=n["Data.Functor"],c=n["Data.Maybe"],f=n["Data.Semigroup"],l=function(){function n(n,e){this.value0=n,this.value1=e}return n.create=function(e){return function(t){return new n(e,t)}},n}(),s=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),d=function(){function n(n,e){this.value0=n,this.value1=e}return n.create=function(e){return function(t){return new n(e,t)}},n}(),v=function(n){return new l(n,o.empty)},p={Applicative0:function(){return b},Bind1:function(){return g}},m={map:function(n){return function(e){return r.bindFlipped(g)((u=t.pure(b),function(e){return u(n(e))}))(e);var u}}},g={bind:function(n){return function(e){return new l(n.value0,o.snoc(n.value1)(e))}},Apply0:function(){return h}},h={apply:u.ap(p),Functor0:function(){return m}},b={pure:function(n){return v(s.create(n))},Apply0:function(){return h}};e.liftF=function(n){return v(new d(n,(e=t.pure(b),function(n){return e(n)})));var e},e.foldFree=function(n){return function(e){return a.tailRecM(n)(function(r){var u=function(n){var e,t=!1;function r(e){var r=function(n){return function(e){return new l(n.value0,f.append(o.semigroupCatList)(n.value1)(e))}};if(e.value0 instanceof s){var u=o.uncons(e.value1);if(u instanceof c.Nothing)return t=!0,new s(e.value0.value0);if(u instanceof c.Just)return void(n=r(function(n){return n}(u.value0.value0)(e.value0.value0))(u.value0.value1));throw new Error("Failed pattern match at Control.Monad.Free (line 227, column 7 - line 231, column 64): "+[u.constructor.name])}if(e.value0 instanceof d)return t=!0,new d(e.value0.value0,function(n){return r(e.value0.value1(n))(e.value1)});throw new Error("Failed pattern match at Control.Monad.Free (line 225, column 3 - line 233, column 56): "+[e.value0.constructor.name])}for(;!t;)e=r(n);return e}(r);if(u instanceof s)return i.map(n.Monad0().Bind1().Apply0().Functor0())(a.Done.create)(t.pure(n.Monad0().Applicative0())(u.value0));if(u instanceof d)return i.map(n.Monad0().Bind1().Apply0().Functor0())(function(n){return a.Loop.create(u.value1(n))})(e(u.value0));throw new Error("Failed pattern match at Control.Monad.Free (line 158, column 10 - line 160, column 37): "+[u.constructor.name])})}},e.freeFunctor=m,e.freeBind=g,e.freeApplicative=b,e.freeMonad=p}(t),function(n){"use strict";n["Halogen.Query.HalogenM"]=n["Halogen.Query.HalogenM"]||{};var e=n["Halogen.Query.HalogenM"],t=n["Control.Category"],r=n["Control.Monad.Free"],u=n["Data.Ord"],a=n["Data.Unit"],o=n["Effect.Aff.Class"],i=n["Effect.Class"],c=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),f=function(){function n(n,e){this.value0=n,this.value1=e}return n.create=function(e){return function(t){return new n(e,t)}},n}(),l=function(){function n(n,e){this.value0=n,this.value1=e}return n.create=function(e){return function(t){return new n(e,t)}},n}(),s=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),d=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),v=function(){function n(n,e){this.value0=n,this.value1=e}return n.create=function(e){return function(t){return new n(e,t)}},n}(),p=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),m=function(){function n(n,e){this.value0=n,this.value1=e}return n.create=function(e){return function(t){return new n(e,t)}},n}(),g=function(){function n(n,e){this.value0=n,this.value1=e}return n.create=function(e){return function(t){return new n(e,t)}},n}(),h=function(){function n(n,e){this.value0=n,this.value1=e}return n.create=function(e){return function(t){return new n(e,t)}},n}(),b=function(n){return n},w=u.ordInt,y=u.ordInt,E=r.freeMonad,D={state:function(n){return b(r.liftF(c.create(n)))},Monad0:function(){return E}},M=function(n){return{liftEffect:(e=i.liftEffect(n),function(n){return b(r.liftF(s.create(e(n))))}),Monad0:function(){return E}};var e},A=r.freeFunctor,C=r.freeBind,F=r.freeApplicative;e.State=c,e.Subscribe=f,e.Unsubscribe=l,e.Lift=s,e.ChildQuery=d,e.Raise=v,e.Par=p,e.Fork=m,e.Kill=g,e.GetRef=h,e.raise=function(n){return r.liftF(new v(n,a.unit))},e.SubscriptionId=function(n){return n},e.ForkId=function(n){return n},e.getRef=function(n){return r.liftF(new h(n,t.identity(t.categoryFn)))},e.functorHalogenM=A,e.applicativeHalogenM=F,e.bindHalogenM=C,e.monadEffectHalogenM=M,e.monadAffHalogenM=function(n){return{liftAff:(e=o.liftAff(n),function(n){return b(r.liftF(s.create(e(n))))}),MonadEffect0:function(){return M(n.MonadEffect0())}};var e},e.monadStateHalogenM=D,e.ordSubscriptionId=w,e.ordForkId=y}(t),function(n){"use strict";n["Halogen.Query.HalogenQ"]=n["Halogen.Query.HalogenQ"]||{};var e=n["Halogen.Query.HalogenQ"],t=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),r=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),u=function(){function n(n,e){this.value0=n,this.value1=e}return n.create=function(e){return function(t){return new n(e,t)}},n}(),a=function(){function n(n,e){this.value0=n,this.value1=e}return n.create=function(e){return function(t){return new n(e,t)}},n}(),o=function(){function n(n,e){this.value0=n,this.value1=e}return n.create=function(e){return function(t){return new n(e,t)}},n}();e.Initialize=t,e.Finalize=r,e.Receive=u,e.Action=a,e.Query=o}(t),function(n){"use strict";n["Halogen.Component"]=n["Halogen.Component"]||{};var e=n["Halogen.Component"],t=n["Control.Applicative"],r=n["Data.Coyoneda"],u=n["Data.Foldable"],a=n["Data.Function"],o=n["Data.Functor"],i=n["Data.Maybe"],c=n["Data.Unit"],f=n["Halogen.Data.Slot"],l=n["Halogen.Query.HalogenM"],s=n["Halogen.Query.HalogenQ"],d=n["Unsafe.Coerce"],v=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),p=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),m=d.unsafeCoerce,g=d.unsafeCoerce,h=d.unsafeCoerce,b=d.unsafeCoerce,w={handleAction:a.const(t.pure(l.applicativeHalogenM)(c.unit)),handleQuery:a.const(t.pure(l.applicativeHalogenM)(i.Nothing.value)),receive:a.const(i.Nothing.value),initialize:i.Nothing.value,finalize:i.Nothing.value};e.mkComponent=b,e.unComponent=g,e.mkEval=function(n){return function(e){if(e instanceof s.Initialize)return o.voidLeft(l.functorHalogenM)(u.traverse_(l.applicativeHalogenM)(u.foldableMaybe)(n.handleAction)(n.initialize))(e.value0);if(e instanceof s.Finalize)return o.voidLeft(l.functorHalogenM)(u.traverse_(l.applicativeHalogenM)(u.foldableMaybe)(n.handleAction)(n.finalize))(e.value0);if(e instanceof s.Receive)return o.voidLeft(l.functorHalogenM)(u.traverse_(l.applicativeHalogenM)(u.foldableMaybe)(n.handleAction)(n.receive(e.value0)))(e.value1);if(e instanceof s.Action)return o.voidLeft(l.functorHalogenM)(n.handleAction(e.value0))(e.value1);if(e instanceof s.Query)return r.unCoyoneda(function(t){var r=o.map(l.functorHalogenM)(i.maybe(e.value1(c.unit))(t));return function(e){return r(n.handleQuery(e))}})(e.value0);throw new Error("Failed pattern match at Halogen.Component (line 182, column 15 - line 192, column 70): "+[e.constructor.name])}},e.defaultEval=w,e.ComponentSlot=v,e.ThunkSlot=p,e.componentSlot=function(){return function(n){return function(e){return function(t){return function(r){return function(u){return function(a){return function(o){return h({get:f.lookup()(n)(e)(t)(r),pop:f.pop()(n)(e)(t)(r),set:f.insert()(n)(e)(t)(r),component:u,input:a,output:o})}}}}}}}},e.unComponentSlot=m}(t),function(n){"use strict";n["DOM.HTML.Indexed.ButtonType"]=n["DOM.HTML.Indexed.ButtonType"]||{};var e=n["DOM.HTML.Indexed.ButtonType"],t=function(){function n(){}return n.value=new n,n}(),r=function(){function n(){}return n.value=new n,n}(),u=function(){function n(){}return n.value=new n,n}();e.ButtonButton=t,e.renderButtonType=function(n){if(n instanceof t)return"button";if(n instanceof r)return"submit";if(n instanceof u)return"reset";throw new Error("Failed pattern match at DOM.HTML.Indexed.ButtonType (line 9, column 20 - line 12, column 25): "+[n.constructor.name])}}(t),function(n){"use strict";n["DOM.HTML.Indexed.OnOff"]=n["DOM.HTML.Indexed.OnOff"]||{};var e=n["DOM.HTML.Indexed.OnOff"],t=function(){function n(){}return n.value=new n,n}(),r=function(){function n(){}return n.value=new n,n}();e.On=t,e.Off=r,e.renderOnOff=function(n){if(n instanceof t)return"on";if(n instanceof r)return"off";throw new Error("Failed pattern match at DOM.HTML.Indexed.OnOff (line 8, column 15 - line 10, column 15): "+[n.constructor.name])}}(t),function(n){"use strict";n["Halogen.VDom.Machine"]=n["Halogen.VDom.Machine"]||{};var e=n["Halogen.VDom.Machine"],t=n["Unsafe.Coerce"],r=function(){function n(n,e,t,r){this.value0=n,this.value1=e,this.value2=t,this.value3=r}return n.create=function(e){return function(t){return function(r){return function(u){return new n(e,t,r,u)}}}},n}(),u=t.unsafeCoerce,a=t.unsafeCoerce,o=u(function(n){return n.value0});e.Step=r,e.mkStep=a,e.unStep=u,e.extract=o,e.step=function(n,e){return n.value2(n.value1,e)},e.halt=function(n){return n.value3(n.value1)}}(t),function(n){"use strict";n.unsafeGetAny=function(n,e){return e[n]},n.unsafeHasAny=function(n,e){return e.hasOwnProperty(n)},n.unsafeSetAny=function(n,e,t){t[n]=e},n.forE=function(n,e){for(var t=[],r=0;r<n.length;r++)t.push(e(r,n[r]));return t},n.forEachE=function(n,e){for(var t=0;t<n.length;t++)e(n[t])},n.forInE=function(n,e){for(var t=Object.keys(n),r=0;r<t.length;r++){var u=t[r];e(u,n[u])}},n.diffWithIxE=function(n,e,t,r,u){for(var a=[],o=n.length,i=e.length,c=0;;){if(c<o)c<i?a.push(t(c,n[c],e[c])):r(c,n[c]);else{if(!(c<i))break;a.push(u(c,e[c]))}c++}return a},n.strMapWithIxE=function(n,e,t){for(var r={},u=0;u<n.length;u++){var a=n[u],o=e(a);r[o]=t(o,u,a)}return r},n.diffWithKeyAndIxE=function(n,e,t,r,u,a){for(var o={},i=0;i<e.length;i++){var c=e[i],f=t(c);n.hasOwnProperty(f)?o[f]=r(f,i,n[f],c):o[f]=a(f,i,c)}for(var f in n)f in o||u(f,n[f]);return o},n.refEq=function(n,e){return n===e},n.createTextNode=function(n,e){return e.createTextNode(n)},n.setTextContent=function(n,e){e.textContent=n},n.createElement=function(n,e,t){return null!=n?t.createElementNS(n,e):t.createElement(e)},n.insertChildIx=function(n,e,t){var r=t.childNodes.item(n)||null;r!==e&&t.insertBefore(e,r)},n.removeChild=function(n,e){e&&n.parentNode===e&&e.removeChild(n)},n.parentNode=function(n){return n.parentNode},n.setAttribute=function(n,e,t,r){null!=n?r.setAttributeNS(n,e,t):r.setAttribute(e,t)},n.removeAttribute=function(n,e,t){null!=n?t.removeAttributeNS(n,e):t.removeAttribute(e)},n.hasAttribute=function(n,e,t){return null!=n?t.hasAttributeNS(n,e):t.hasAttribute(e)},n.addEventListener=function(n,e,t){t.addEventListener(n,e,!1)},n.removeEventListener=function(n,e,t){t.removeEventListener(n,e,!1)},n.jsUndefined=void 0}(t["Halogen.VDom.Util"]=t["Halogen.VDom.Util"]||{}),function(n){"use strict";n["Halogen.VDom.Util"]=n["Halogen.VDom.Util"]||{};var e=n["Halogen.VDom.Util"],t=n["Halogen.VDom.Util"],r=n["Foreign.Object.ST"],u=n["Unsafe.Coerce"],a=t.unsafeGetAny,o=u.unsafeCoerce,i=t.unsafeSetAny,c=r.new;e.newMutMap=c,e.pokeMutMap=i,e.unsafeFreeze=o,e.unsafeLookup=a,e.unsafeGetAny=t.unsafeGetAny,e.unsafeHasAny=t.unsafeHasAny,e.unsafeSetAny=t.unsafeSetAny,e.forE=t.forE,e.forEachE=t.forEachE,e.forInE=t.forInE,e.diffWithIxE=t.diffWithIxE,e.diffWithKeyAndIxE=t.diffWithKeyAndIxE,e.strMapWithIxE=t.strMapWithIxE,e.refEq=t.refEq,e.createTextNode=t.createTextNode,e.setTextContent=t.setTextContent,e.createElement=t.createElement,e.insertChildIx=t.insertChildIx,e.removeChild=t.removeChild,e.parentNode=t.parentNode,e.setAttribute=t.setAttribute,e.removeAttribute=t.removeAttribute,e.hasAttribute=t.hasAttribute,e.addEventListener=t.addEventListener,e.removeEventListener=t.removeEventListener,e.jsUndefined=t.jsUndefined}(t),function(n){"use strict";(t["Web.Event.EventTarget"]=t["Web.Event.EventTarget"]||{}).eventListener=function(n){return function(){return function(e){return n(e)()}}}}(),function(n){"use strict";n["Web.Event.EventTarget"]=n["Web.Event.EventTarget"]||{};var e=n["Web.Event.EventTarget"],t=n["Web.Event.EventTarget"];e.eventListener=t.eventListener}(t),function(n){"use strict";n["Halogen.VDom.DOM.Prop"]=n["Halogen.VDom.DOM.Prop"]||{};var e=n["Halogen.VDom.DOM.Prop"],t=n["Data.Maybe"],r=n["Data.Nullable"],u=n["Data.Tuple"],a=n["Data.Unit"],o=n["Effect.Ref"],i=n.Foreign,c=n["Foreign.Object"],f=n["Halogen.VDom.Machine"],l=n["Halogen.VDom.Util"],s=n["Unsafe.Coerce"],d=n["Web.Event.EventTarget"],v=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),p=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),m=function(){function n(n,e,t){this.value0=n,this.value1=e,this.value2=t}return n.create=function(e){return function(t){return function(r){return new n(e,t,r)}}},n}(),g=function(){function n(n,e){this.value0=n,this.value1=e}return n.create=function(e){return function(t){return new n(e,t)}},n}(),h=function(){function n(n,e){this.value0=n,this.value1=e}return n.create=function(e){return function(t){return new n(e,t)}},n}(),b=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),w=l.unsafeGetAny,y=l.unsafeSetAny,E=function(n){if(n instanceof m&&n.value0 instanceof t.Just)return"attr/"+n.value0.value0+":"+n.value1;if(n instanceof m)return"attr/:"+n.value1;if(n instanceof g)return"prop/"+n.value0;if(n instanceof h)return"handler/"+n.value0;if(n instanceof b)return"ref";throw new Error("Failed pattern match at Halogen.VDom.DOM.Prop (line 182, column 16 - line 187, column 16): "+[n.constructor.name])},D=s.unsafeCoerce,M=s.unsafeCoerce,A=s.unsafeCoerce;e.Attribute=m,e.Property=g,e.Handler=h,e.Ref=b,e.Created=v,e.Removed=p,e.propFromString=D,e.propFromBoolean=A,e.propFromInt=M,e.buildProp=function(n){return function(e){var s=function(n){return function(t,o){if(o instanceof m)return l.removeAttribute(r.toNullable(o.value0),o.value1,e);if(o instanceof g)return function(n,e){return l.hasAttribute(r.null,n,e)?l.removeAttribute(r.null,n,e):"string"===i.typeOf(l.unsafeGetAny(n,e))?l.unsafeSetAny(n,"",e):"rowSpan"===n?l.unsafeSetAny(n,1,e):"colSpan"===n?l.unsafeSetAny(n,1,e):l.unsafeSetAny(n,l.jsUndefined,e)}(o.value0,e);if(o instanceof h){var c=l.unsafeLookup(o.value0,n);return l.removeEventListener(o.value0,u.fst(c),e)}if(o instanceof b)return a.unit;throw new Error("Failed pattern match at Halogen.VDom.DOM.Prop (line 169, column 5 - line 179, column 18): "+[o.constructor.name])}},D=function(e){return e instanceof t.Just?n(e.value0)():a.unit},M=function(n){var r=c.lookup("ref")(n.props);return r instanceof t.Just&&r.value0 instanceof b?D(r.value0.value0(new p(e))):a.unit},A=function(n){return function(t,a,i){if(i instanceof m)return l.setAttribute(r.toNullable(i.value0),i.value1,i.value2,e),i;if(i instanceof g)return y(i.value0,i.value1,e),i;if(i instanceof h){var c=l.unsafeGetAny(i.value0,n);if(l.unsafeHasAny(i.value0,n))return o.write(i.value1)(u.snd(c))(),i;var f=o.new(i.value1)(),s=d.eventListener(function(n){return function(){var e=o.read(f)();return D(e(n))}})();return l.pokeMutMap(i.value0,new u.Tuple(s,f),n),l.addEventListener(i.value0,s,e),i}if(i instanceof b)return D(i.value0(new v(e))),i;throw new Error("Failed pattern match at Halogen.VDom.DOM.Prop (line 113, column 5 - line 135, column 15): "+[i.constructor.name])}},C=function n(t,i){var c=l.newMutMap(),d=s(t.events),v=function(n,t){return function(a,i,c,f){if(c instanceof m&&f instanceof m)return c.value2===f.value2?f:(l.setAttribute(r.toNullable(f.value0),f.value1,f.value2,e),f);if(c instanceof g&&f instanceof g){if(l.refEq(c.value1,f.value1))return f;if("value"===f.value0){var s=w("value",e);return l.refEq(s,f.value1)?f:(y(f.value0,f.value1,e),f)}return y(f.value0,f.value1,e),f}if(c instanceof h&&f instanceof h){var d=l.unsafeLookup(f.value0,n);return o.write(f.value1)(u.snd(d))(),l.pokeMutMap(f.value0,d,t),f}return f}}(t.events,c),p=A(c),b=l.diffWithKeyAndIxE(t.props,i,E,v,d,p),D={events:l.unsafeFreeze(c),props:b};return f.mkStep(new f.Step(a.unit,D,n,M))};return function(n){var e=l.newMutMap(),t=l.strMapWithIxE(n,E,A(e)),r={events:l.unsafeFreeze(e),props:t};return f.mkStep(new f.Step(a.unit,r,C,M))}}}}(t),function(n){"use strict";n["Halogen.VDom.Types"]=n["Halogen.VDom.Types"]||{};var e=n["Halogen.VDom.Types"],t=n["Data.Bifunctor"],r=n["Data.Functor"],u=n["Data.Tuple"],a=n["Unsafe.Coerce"],o=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),i=function(){function n(n,e,t,r){this.value0=n,this.value1=e,this.value2=t,this.value3=r}return n.create=function(e){return function(t){return function(r){return function(u){return new n(e,t,r,u)}}}},n}(),c=function(){function n(n,e,t,r){this.value0=n,this.value1=e,this.value2=t,this.value3=r}return n.create=function(e){return function(t){return function(r){return function(u){return new n(e,t,r,u)}}}},n}(),f=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),l=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),s=function(){function n(n,e,t){this.value0=n,this.value1=e,this.value2=t}return n.create=function(e){return function(t){return function(r){return new n(e,t,r)}}},n}(),d=function(n){return function(e){return n(e)}},v=a.unsafeCoerce,p={bimap:function(n){return function(e){return d(function(t){return v(new s(function(e){return n(t.value0(e))},function(n){return e(t.value1(n))},t.value2))})}}},m=d(function(n){return function e(a){if(a instanceof o)return new o(a.value0);if(a instanceof i)return new i(a.value0,a.value1,n.value0(a.value2),r.map(r.functorArray)(e)(a.value3));if(a instanceof c)return new c(a.value0,a.value1,n.value0(a.value2),r.map(r.functorArray)(r.map(u.functorTuple)(e))(a.value3));if(a instanceof f)return new f(n.value1(a.value0));if(a instanceof l)return new l(t.bimap(p)(n.value0)(n.value1)(a.value0));throw new Error("Failed pattern match at Halogen.VDom.Types (line 86, column 7 - line 86, column 27): "+[a.constructor.name])}(n.value2)});e.Text=o,e.Elem=i,e.Keyed=c,e.Widget=f,e.Grafted=l,e.runGraft=m}(t),function(n){"use strict";n["Halogen.HTML.Core"]=n["Halogen.HTML.Core"]||{};var e=n["Halogen.HTML.Core"],t=n["DOM.HTML.Indexed.ButtonType"],r=n["DOM.HTML.Indexed.InputType"],u=n["DOM.HTML.Indexed.OnOff"],a=n["Data.Maybe"],o=n["Halogen.VDom.DOM.Prop"],i=n["Halogen.VDom.Types"],c=function(n){return n},f={toPropValue:o.propFromString},l={toPropValue:function(n){return o.propFromString(u.renderOnOff(n))}},s={toPropValue:o.propFromInt},d={toPropValue:function(n){return o.propFromString(r.renderInputType(n))}},v={toPropValue:function(n){return o.propFromString(t.renderButtonType(n))}},p={toPropValue:o.propFromBoolean},m=o.Handler.create;e.widget=function(n){return c(i.Widget.create(n))},e.text=function(n){return c(i.Text.create(n))},e.element=function(n){return function(e){return function(t){return function(r){return new i.Elem(n,e,t,r)}}}},e.prop=function(n){return function(e){var t=o.Property.create(e),r=n.toPropValue;return function(n){return t(r(n))}}},e.attr=function(n){return function(e){return o.Attribute.create(n)(e)}},e.handler=m,e.ref=function(n){return new o.Ref(function(e){return n(function(n){if(n instanceof o.Created)return new a.Just(n.value0);if(n instanceof o.Removed)return a.Nothing.value;throw new Error("Failed pattern match at Halogen.HTML.Core (line 103, column 21 - line 105, column 23): "+[n.constructor.name])}(e))})},e.isPropString=f,e.isPropInt=s,e.isPropBoolean=p,e.isPropButtonType=v,e.isPropInputType=d,e.isPropOnOff=l}(t),function(n){"use strict";n["Halogen.HTML.Elements"]=n["Halogen.HTML.Elements"]||{};var e,t=n["Halogen.HTML.Elements"],r=n["Data.Maybe"],u=n["Halogen.HTML.Core"].element(r.Nothing.value),a=u("form"),o=u("label"),i=u("p"),c=u("span"),f=u("table"),l=u("tbody")([]),s=u("td"),d=s([]),v=u("tr")([]),p=u("div"),m=p([]),g=u("button"),h=(e=[],u("br")(e)([])),b=u("a");t.a=b,t.br_=h,t.button=g,t.div=p,t.div_=m,t.form=a,t.input=function(n){return u("input")(n)([])},t.label=o,t.p=i,t.span=c,t.table=f,t.tbody_=l,t.td=s,t.td_=d,t.textarea=function(n){return u("textarea")(n)([])},t.tr_=v}(t),function(n){"use strict";(t["Foreign.Index"]=t["Foreign.Index"]||{}).unsafeReadPropImpl=function(n,e,t,r){return null==r?n:e(r[t])}}(),function(n){"use strict";n["Foreign.Index"]=n["Foreign.Index"]||{};var e=n["Foreign.Index"],t=n["Foreign.Index"],r=n["Control.Applicative"],u=n["Control.Monad.Except.Trans"],a=n.Foreign;e.readProp=function(n){return function(n){return function(e){return function(o){return t.unsafeReadPropImpl(a.fail(n)(new a.TypeMismatch("object",a.typeOf(o))),r.pure(u.applicativeExceptT(n)),e,o)}}}(n)}}(t),function(n){"use strict";n["Halogen.Query.Input"]=n["Halogen.Query.Input"]||{};var e=n["Halogen.Query.Input"],t=function(){function n(n,e){this.value0=n,this.value1=e}return n.create=function(e){return function(t){return new n(e,t)}},n}(),r=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}();e.RefUpdate=t,e.Action=r}(t),function(n){"use strict";n._currentTarget=function(n){return n.currentTarget},n.preventDefault=function(n){return function(){return n.preventDefault()}}}(t["Web.Event.Event"]=t["Web.Event.Event"]||{}),function(n){"use strict";n["Web.Event.Event"]=n["Web.Event.Event"]||{};var e=n["Web.Event.Event"],t=n["Web.Event.Event"],r=n["Data.Nullable"];e.currentTarget=function(n){return r.toMaybe(t._currentTarget(n))},e.preventDefault=t.preventDefault}(t),function(n){"use strict";n["Web.HTML.Event.EventTypes"]=n["Web.HTML.Event.EventTypes"]||{};n["Web.HTML.Event.EventTypes"].change="change"}(t),function(n){"use strict";n["Web.UIEvent.MouseEvent.EventTypes"]=n["Web.UIEvent.MouseEvent.EventTypes"]||{};n["Web.UIEvent.MouseEvent.EventTypes"].click="click"}(t),function(n){"use strict";n["Halogen.HTML.Events"]=n["Halogen.HTML.Events"]||{};var e,t=n["Halogen.HTML.Events"],r=n["Control.Bind"],u=n["Control.Monad.Except"],a=n["Control.Monad.Except.Trans"],o=n["Data.Either"],i=n["Data.Function"],c=n["Data.Functor"],f=n["Data.Identity"],l=n["Data.Maybe"],s=n.Foreign,d=n["Foreign.Index"],v=n["Halogen.HTML.Core"],p=n["Halogen.Query.Input"],m=n["Unsafe.Coerce"],g=n["Web.Event.Event"],h=n["Web.HTML.Event.EventTypes"],b=n["Web.UIEvent.MouseEvent.EventTypes"],w=m.unsafeCoerce,y=function(n){return function(e){return v.handler(n)(function(n){return new l.Just(new p.Action(e(n)))})}},E=(e=y(b.click),function(n){return e(w(n))}),D=y("submit"),M=function(n){return function(e){return function(t){return function(m){var h;return(h=n,function(n){return v.handler(h)(function(e){return c.map(l.functorMaybe)(p.Action.create)(n(e))})})(r.composeKleisli(l.bindMaybe)(g.currentTarget)(function(n){return o.either(i.const(l.Nothing.value))(function(n){return l.Just.create(m(n))})(u.runExcept((c=n,r.composeKleisliFlipped(a.bindExceptT(f.monadIdentity))(t)(d.readProp(f.monadIdentity)(e))(s.unsafeToForeign(c)))));var c}))}}}},A=M(h.change)("checked")(s.readBoolean(f.monadIdentity)),C=M(h.change)("value")(s.readString(f.monadIdentity));t.onSubmit=D,t.onClick=E,t.onValueChange=C,t.onChecked=A}(t),function(n){"use strict";n["Halogen.HTML.Properties"]=n["Halogen.HTML.Properties"]||{};var e,t,r,u=n["Halogen.HTML.Properties"],a=n["DOM.HTML.Indexed.OnOff"],o=n["Data.Maybe"],i=n["Data.Newtype"],c=n["Halogen.HTML.Core"],f=n["Halogen.Query.Input"],l=function(n){return c.ref((e=n,function(n){return new o.Just(new f.RefUpdate(e,n))}));var e},s=function(n){return c.prop(n)},d=s(c.isPropBoolean)("required"),v=s(c.isPropInt)("rows"),p=s(c.isPropString)("target"),m=s(c.isPropString)("title"),g=s(c.isPropString)("value"),h=s(c.isPropString)("name"),b=s(c.isPropString)("id"),w=s(c.isPropString)("href"),y=s(c.isPropString)("htmlFor"),E=s(c.isPropBoolean)("disabled"),D=(e=s(c.isPropString)("className"),t=i.unwrap(),function(n){return e(t(n))}),M=s(c.isPropBoolean)("checked"),A=s(c.isPropBoolean)("autofocus"),C=(r=s(c.isPropOnOff)("autocomplete"),function(n){return r(n?a.On.value:a.Off.value)}),F=c.attr(o.Nothing.value);u.attr=F,u.ref=l,u.class_=D,u.rows=v,u.for=y,u.href=w,u.id=b,u.name=h,u.target=p,u.title=m,u.type_=function(n){return s(n)("type")},u.value=g,u.disabled=E,u.required=d,u.checked=M,u.autocomplete=C,u.autofocus=A}(t),function(n){"use strict";var e="function"==typeof Array.from,t="undefined"!=typeof Symbol&&null!=Symbol&&void 0!==Symbol.iterator&&"function"==typeof String.prototype[Symbol.iterator],r="function"==typeof String.prototype.fromCodePoint,u="function"==typeof String.prototype.codePointAt;n._unsafeCodePointAt0=function(n){return u?function(n){return n.codePointAt(0)}:n},n._singleton=function(n){return r?String.fromCodePoint:n},n._take=function(n){return function(e){return t?function(n){for(var t="",r=n[Symbol.iterator](),u=0;u<e;++u){var a=r.next();if(a.done)return t;t+=a.value}return t}:n(e)}},n._toCodePointArray=function(n){return function(t){return e?function(n){return Array.from(n,t)}:n}}}(t["Data.String.CodePoints"]=t["Data.String.CodePoints"]||{}),function(n){"use strict";n.topInt=2147483647,n.bottomInt=-2147483648,n.topChar=String.fromCharCode(65535),n.bottomChar=String.fromCharCode(0)}(t["Data.Bounded"]=t["Data.Bounded"]||{}),function(n){"use strict";n["Data.Bounded"]=n["Data.Bounded"]||{};var e=n["Data.Bounded"],t=n["Data.Bounded"],r=n["Data.Ord"],u={top:t.topInt,bottom:t.bottomInt,Ord0:function(){return r.ordInt}},a={top:t.topChar,bottom:t.bottomChar,Ord0:function(){return r.ordChar}};e.bottom=function(n){return n.bottom},e.top=function(n){return n.top},e.boundedInt=u,e.boundedChar=a}(t),function(n){"use strict";n.toCharCode=function(n){return n.charCodeAt(0)},n.fromCharCode=function(n){return String.fromCharCode(n)}}(t["Data.Enum"]=t["Data.Enum"]||{}),function(n){"use strict";n["Data.Enum"]=n["Data.Enum"]||{};var e,t=n["Data.Enum"],r=n["Data.Enum"],u=n["Data.Bounded"],a=n["Data.Maybe"],o=n["Data.Ord"],i=function(n){return n.fromEnum},c=function(n){return n>=u.bottom(u.boundedInt)&&n<=u.top(u.boundedInt)?new a.Just(r.fromCharCode(n)):a.Nothing.value},f={succ:(e=c,function(n){return function(t){return e(n(t)+1|0)}})(r.toCharCode),pred:function(n){return function(e){return function(t){return n(e(t)-1|0)}}}(c)(r.toCharCode),Ord0:function(){return o.ordChar}},l={cardinality:r.toCharCode(u.top(u.boundedChar))-r.toCharCode(u.bottom(u.boundedChar))|0,toEnum:c,fromEnum:r.toCharCode,Bounded0:function(){return u.boundedChar},Enum1:function(){return f}};t.fromEnum=i,t.toEnumWithDefaults=function(n){return function(e){return function(t){return function(r){var o=n.toEnum(r);if(o instanceof a.Just)return o.value0;if(o instanceof a.Nothing)return r<i(n)(u.bottom(n.Bounded0()))?e:t;throw new Error("Failed pattern match at Data.Enum (line 158, column 33 - line 160, column 62): "+[o.constructor.name])}}}},t.boundedEnumChar=l}(t),function(n){"use strict";n.intDegree=function(n){return Math.min(Math.abs(n),2147483647)},n.intDiv=function(n){return function(e){return 0===e?0:e>0?Math.floor(n/e):-Math.floor(n/-e)}},n.intMod=function(n){return function(e){if(0===e)return 0;var t=Math.abs(e);return(n%t+t)%t}}}(t["Data.EuclideanRing"]=t["Data.EuclideanRing"]||{}),function(n){"use strict";(t["Data.Ring"]=t["Data.Ring"]||{}).intSub=function(n){return function(e){return n-e|0}}}(),function(n){"use strict";n.intAdd=function(n){return function(e){return n+e|0}},n.intMul=function(n){return function(e){return n*e|0}}}(t["Data.Semiring"]=t["Data.Semiring"]||{}),function(n){"use strict";n["Data.Semiring"]=n["Data.Semiring"]||{};var e=n["Data.Semiring"],t=n["Data.Semiring"],r={add:t.intAdd,zero:0,mul:t.intMul,one:1};e.semiringInt=r}(t),function(n){"use strict";n["Data.Ring"]=n["Data.Ring"]||{};var e=n["Data.Ring"],t=n["Data.Ring"],r=n["Data.Semiring"],u={sub:t.intSub,Semiring0:function(){return r.semiringInt}};e.ringInt=u}(t),function(n){"use strict";n["Data.CommutativeRing"]=n["Data.CommutativeRing"]||{};var e=n["Data.CommutativeRing"],t=n["Data.Ring"],r={Ring0:function(){return t.ringInt}};e.commutativeRingInt=r}(t),function(n){"use strict";n["Data.EuclideanRing"]=n["Data.EuclideanRing"]||{};var e=n["Data.EuclideanRing"],t=n["Data.EuclideanRing"],r=n["Data.CommutativeRing"],u={degree:t.intDegree,div:t.intDiv,mod:t.intMod,CommutativeRing0:function(){return r.commutativeRingInt}};e.div=function(n){return n.div},e.mod=function(n){return n.mod},e.euclideanRingInt=u}(t),function(n){"use strict";n.singleton=function(n){return n},n.length=function(n){return n.length},n.drop=function(n){return function(e){return e.substring(n)}},n.splitAt=function(n){return function(e){return{before:e.substring(0,n),after:e.substring(n)}}}}(t["Data.String.CodeUnits"]=t["Data.String.CodeUnits"]||{}),function(n){"use strict";n["Data.String.CodeUnits"]=n["Data.String.CodeUnits"]||{};var e=n["Data.String.CodeUnits"],t=n["Data.String.CodeUnits"],r=n["Data.Maybe"];e.stripPrefix=function(n){return function(e){var u=t.splitAt(t.length(n))(e);return u.before===n?new r.Just(u.after):r.Nothing.value}},e.singleton=t.singleton,e.length=t.length,e.drop=t.drop}(t),function(n){"use strict";(t["Data.String.Unsafe"]=t["Data.String.Unsafe"]||{}).charAt=function(n){return function(e){if(n>=0&&n<e.length)return e.charAt(n);throw new Error("Data.String.Unsafe.charAt: Invalid index.")}}}(),function(n){"use strict";n["Data.String.Unsafe"]=n["Data.String.Unsafe"]||{};var e=n["Data.String.Unsafe"],t=n["Data.String.Unsafe"];e.charAt=t.charAt}(t),function(n){"use strict";n["Data.String.CodePoints"]=n["Data.String.CodePoints"]||{};var e,t=n["Data.String.CodePoints"],r=n["Data.String.CodePoints"],u=(n["Data.Array"],n["Data.Bounded"]),a=n["Data.Enum"],o=n["Data.EuclideanRing"],i=n["Data.Functor"],c=n["Data.Maybe"],f=n["Data.String.CodeUnits"],l=n["Data.String.Unsafe"],s=n["Data.Tuple"],d=n["Data.Unfoldable"],v=function(n){return function(e){return 65536+((1024*(n-55296|0)|0)+(e-56320|0)|0)|0}},p=function(n){return 56320<=n&&n<=57343},m=function(n){return 55296<=n&&n<=56319},g=function(n){var e=f.length(n);if(0===e)return c.Nothing.value;if(1===e)return new c.Just({head:a.fromEnum(a.boundedEnumChar)(l.charAt(0)(n)),tail:""});var t=a.fromEnum(a.boundedEnumChar)(l.charAt(1)(n)),r=a.fromEnum(a.boundedEnumChar)(l.charAt(0)(n));return m(r)&&p(t)?new c.Just({head:v(r)(t),tail:f.drop(2)(n)}):new c.Just({head:r,tail:f.drop(1)(n)})},h=function(n){return i.map(c.functorMaybe)(function(n){return new s.Tuple(n.head,n.tail)})(g(n))},b=r._unsafeCodePointAt0(function(n){var e=a.fromEnum(a.boundedEnumChar)(l.charAt(0)(n));if(m(e)&&f.length(n)>1){var t=a.fromEnum(a.boundedEnumChar)(l.charAt(1)(n));return p(t)?v(e)(t):e}return e}),w=(r._toCodePointArray(function(n){return d.unfoldr(d.unfoldableArray)(h)(n)})(b),e=a.toEnumWithDefaults(a.boundedEnumChar)(u.bottom(u.boundedChar))(u.top(u.boundedChar)),function(n){return f.singleton(e(n))}),y=r._singleton(function(n){if(n<=65535)return w(n);var e=o.div(o.euclideanRingInt)(n-65536|0)(1024)+55296|0,t=o.mod(o.euclideanRingInt)(n-65536|0)(1024)+56320|0;return w(e)+w(t)}),E=r._take(function n(e){return function(t){if(e<1)return"";var r=g(t);return r instanceof c.Just?y(r.value0.head)+n(e-1|0)(r.value0.tail):t}});t.take=E,t.drop=function(n){return function(e){return f.drop(f.length(E(n)(e)))(e)}}}(t),function(n){"use strict";n["Web.HTML.Common"]=n["Web.HTML.Common"]||{};n["Web.HTML.Common"].ClassName=function(n){return n}}(t),function(n){"use strict";n.Util=n.Util||{};var e,t,r,u=n.Util,a=n["Control.Bind"],o=n["Data.Array"],i=n["Data.Functor"],c=n["Data.Maybe"],f=n["Data.Nullable"],l=n["Data.String.CodePoints"],s=n["Data.String.Common"],d=n["Data.Tuple"],v=n["Data.Unit"],p=n.Effect,m=n["Halogen.HTML.Core"],g=n["Halogen.HTML.Properties"],h=n.JSURI,b=n["Web.HTML"],w=n["Web.HTML.Common"],y=n["Web.HTML.Location"],E=n["Web.HTML.Window"],D=(e=c.fromMaybe(""),function(n){return e(f.toMaybe(n))}),M=(t=c.fromMaybe(""),r=s.replaceAll("+")("%2B"),function(n){return t(h.encodeURIComponent(r(n)))}),A=function(n){var e,t,r=(e=s.replaceAll("+")(" "),function(n){return t=e(n),c.fromJust()(h.decodeURIComponent(t));var t}),u="#"===(t=l.take(1)(n))||"?"===t?l.drop(1)(n):n;return o.mapMaybe(function(n){var e=s.split("=")(n);return 1===e.length?new c.Just(new d.Tuple(r(e[0]),c.Nothing.value)):2===e.length?new c.Just(new d.Tuple(r(e[0]),new c.Just(r(e[1])))):c.Nothing.value})(o.filter(function(n){return""!==n})(s.split("&")(u)))},C=a.bindFlipped(p.bindEffect)(E.location)(b.window),F=a.bindFlipped(p.bindEffect)(E.document)(b.window);u.class_=function(n){return g.class_(w.ClassName(n))},u.attr=function(n){return g.attr(n)},u._doc=F,u._loc=C,u._curQuerystring=function(){var n=C(),e=y.search(n)();return A(e)},u._lookupQueryStringValue=function(n){return function(e){return a.join(c.bindMaybe)(i.map(c.functorMaybe)(d.snd)(o.find(function(n){return d.fst(n)===e})(n)))}},u.encodeTag=M,u.whenH=function(n){return function(e){return n?e(v.unit):m.text("")}},u.whenA=function(n){return function(e){return n?e(v.unit):[]}},u.ifElseH=function(n){return function(e){return function(t){return n?e(v.unit):t(v.unit)}}},u.ifElseA=function(n){return function(e){return function(t){return n?e(v.unit):t(v.unit)}}},u.fromNullableStr=D}(t),function(n){"use strict";n["Component.AccountSettings"]=n["Component.AccountSettings"]||{};var e=n["Component.AccountSettings"],t=n.App,r=n["Control.Bind"],u=n["DOM.HTML.Indexed.InputType"],a=n["Data.Function"],o=n["Data.Functor"],i=n["Data.Lens.Getter"],c=n["Data.Lens.Internal.Forget"],f=n["Data.Lens.Lens"],l=n["Data.Lens.Setter"],s=n["Data.Profunctor.Strong"],d=n["Data.Unit"],v=n["Effect.Aff.Class"],p=n.Globals,m=n["Halogen.Component"],g=n["Halogen.HTML.Core"],h=n["Halogen.HTML.Elements"],b=n["Halogen.HTML.Events"],w=n["Halogen.HTML.Properties"],y=n["Halogen.Query.HalogenM"],E=n.Util,D=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),M=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),A=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),C=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),F=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),H=function(n){return f.lens(function(n){return n.us})(function(n){return function(n){return{us:n}}})(n)};e.usetting=function(n){var e;p["app'"](d.unit);return m.mkComponent({initialState:a.const((e=n,{us:e})),render:function(n){var e=function(n){return function(e){return C.create(n(e))}};return h.div([E.class_("settings-form")])([h.div([E.class_("fw7 mb2")])([g.text("Account Settings")]),h.div([E.class_("flex items-center mb2")])([h.input([w.type_(g.isPropInputType)(u.InputCheckbox.value),E.class_("pointer mr2"),w.id("archiveDefault"),w.name("archiveDefault"),w.checked(n.us.archiveDefault),b.onChecked(e(D.create))]),h.label([w.for("archiveDefault"),E.class_("lh-copy")])([g.text("Archive Non-Private Bookmarks (archive.li)")])]),h.div([E.class_("flex items-center mb2")])([h.input([w.type_(g.isPropInputType)(u.InputCheckbox.value),E.class_("pointer mr2"),w.id("privateDefault"),w.name("privateDefault"),w.checked(n.us.privateDefault),b.onChecked(e(M.create))]),h.label([w.for("privateDefault"),E.class_("lh-copy")])([g.text("Default new bookmarks to Private")])]),h.div([E.class_("flex items-center mb2")])([h.input([w.type_(g.isPropInputType)(u.InputCheckbox.value),E.class_("pointer mr2"),w.id("privacyLock"),w.name("privacyLock"),w.checked(n.us.privacyLock),b.onChecked(e(A.create))]),h.label([w.for("privacyLock"),E.class_("lh-copy")])([g.text("Privacy Lock (Private Account)")])])])},eval:m.mkEval({handleAction:function(n){if(n instanceof C)return r.discard(r.discardUnit)(y.bindHalogenM)(l.modifying(y.monadStateHalogenM)(H(s.strongFn))(function(){if(n.value0 instanceof D)return function(e){return{archiveDefault:n.value0.value0,privateDefault:e.privateDefault,privacyLock:e.privacyLock}};if(n.value0 instanceof M)return function(e){return{archiveDefault:e.archiveDefault,privateDefault:n.value0.value0,privacyLock:e.privacyLock}};if(n.value0 instanceof A)return function(e){return{archiveDefault:e.archiveDefault,privateDefault:e.privateDefault,privacyLock:n.value0.value0}};throw new Error("Failed pattern match at Component.AccountSettings (line 79, column 12 - line 82, column 46): "+[n.value0.constructor.name])}()))(function(){return r.bind(y.bindHalogenM)(i.use(y.monadStateHalogenM)(H(c.strongForget)))(function(n){return o.void(y.functorHalogenM)(v.liftAff(y.monadAffHalogenM(v.monadAffAff))(t.editAccountSettings(n)))})});if(n instanceof F)return r.bind(y.bindHalogenM)(i.use(y.monadStateHalogenM)(H(c.strongForget)))(function(n){return o.void(y.functorHalogenM)(v.liftAff(y.monadAffHalogenM(v.monadAffAff))(t.editAccountSettings(n)))});throw new Error("Failed pattern match at Component.AccountSettings (line 77, column 3 - line 77, column 69): "+[n.constructor.name])},handleQuery:m.defaultEval.handleQuery,receive:m.defaultEval.receive,initialize:m.defaultEval.initialize,finalize:m.defaultEval.finalize})})}}(t),function(n){"use strict";n.log=function(n){return function(){console.log(n)}},n.warn=function(n){return function(){console.warn(n)}}}(t["Effect.Console"]=t["Effect.Console"]||{}),function(n){"use strict";n["Effect.Console"]=n["Effect.Console"]||{};var e=n["Effect.Console"],t=n["Effect.Console"];e.log=t.log,e.warn=t.warn}(t),function(n){"use strict";(t["Web.HTML.HTMLDocument"]=t["Web.HTML.HTMLDocument"]||{}).referrer=function(n){return function(){return n.referrer}}}(),function(n){"use strict";n["Web.HTML.HTMLDocument"]=n["Web.HTML.HTMLDocument"]||{};var e=n["Web.HTML.HTMLDocument"],t=n["Web.HTML.HTMLDocument"],r=n["Unsafe.Coerce"],u=r.unsafeCoerce,a=r.unsafeCoerce;e.toDocument=a,e.toParentNode=u,e.referrer=t.referrer}(t),function(n){"use strict";n["Component.Add"]=n["Component.Add"]||{};var e=n["Component.Add"],t=n.Affjax,r=n.App,u=n["Control.Applicative"],a=n["Control.Bind"],o=n["Control.Monad.State.Class"],i=n["DOM.HTML.Indexed.ButtonType"],c=n["DOM.HTML.Indexed.InputType"],f=n["Data.Either"],l=n["Data.Function"],s=n["Data.Functor"],d=n["Data.Lens.Getter"],v=n["Data.Lens.Internal.Forget"],p=n["Data.Lens.Lens"],m=n["Data.Lens.Setter"],g=n["Data.Maybe"],h=n["Data.Monoid"],b=n["Data.Profunctor.Strong"],w=n["Data.Semigroup"],y=n["Data.String.CodeUnits"],E=n["Data.String.Common"],D=n["Data.Tuple"],M=n["Data.Unit"],A=n.Effect,C=n["Effect.Aff"],F=n["Effect.Aff.Class"],H=n["Effect.Class"],T=n["Effect.Console"],S=n.Globals,_=n["Halogen.Component"],k=n["Halogen.HTML.Core"],L=n["Halogen.HTML.Elements"],x=n["Halogen.HTML.Events"],I=n["Halogen.HTML.Properties"],N=n["Halogen.Query.HalogenM"],U=n.Util,R=n["Web.Event.Event"],P=n["Web.HTML"],B=n["Web.HTML.HTMLDocument"],O=n["Web.HTML.Location"],W=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),q=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),J=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),j=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),Q=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),V=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),z=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),G=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),K=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),X=function(){function n(){}return n.value=new n,n}(),Y=function(){function n(){}return n.value=new n,n}(),$=function(n){return p.lens(function(n){return n.edit_bm})(function(n){return function(e){return{edit_bm:e,apiError:n.apiError,bm:n.bm,deleteAsk:n.deleteAsk,destroyed:n.destroyed,loading:n.loading}}})(n)},Z=function(n){return p.lens(function(n){return n.apiError})(function(n){return function(e){return{apiError:e,bm:n.bm,deleteAsk:n.deleteAsk,destroyed:n.destroyed,edit_bm:n.edit_bm,loading:n.loading}}})(n)};e.addbmark=function(n){var e;return _.mkComponent({initialState:l.const((e=n,{bm:e,edit_bm:e,deleteAsk:!1,destroyed:!1,loading:!1,apiError:g.Nothing.value})),render:function(n){var e=S.mmoment8601(n.bm.time),t=function(n){return function(e){return z.create(n(e))}},r=function(t){return L.div([U.class_("alert")])([k.text("previously saved "),L.span([U.class_("link f7 dib gray pr3"),I.title(g.maybe(n.bm.time)(D.snd)(e))])([k.text(g.maybe(" ")(D.fst)(e))]),L.div([U.class_("edit_links dib ml1")])([L.div([U.class_("delete_link di")])([L.button(w.append(w.semigroupArray)([I.type_(k.isPropButtonType)(i.ButtonButton.value),x.onClick(function(n){return new K(!0)}),U.class_("delete")])(h.guard(h.monoidArray)(n.deleteAsk)([U.attr("hidden")("hidden")])))([k.text("delete")]),L.span(w.append(w.semigroupArray)([U.class_("confirm red")])(h.guard(h.monoidArray)(!n.deleteAsk)([U.attr("hidden")("hidden")])))([L.button([I.type_(k.isPropButtonType)(i.ButtonButton.value),x.onClick(function(n){return new K(!1)})])([k.text("cancel / ")]),L.button([I.type_(k.isPropButtonType)(i.ButtonButton.value),x.onClick(function(n){return Y.value}),U.class_("red")])([k.text("destroy")])])])])])};return U.ifElseH(!n.destroyed)(function(e){return L.form([x.onSubmit(G.create)])([L.table([U.class_("w-100")])([L.tbody_([L.tr_([L.td([U.class_("w1")])([]),L.td_([U.whenH(n.bm.bid>0)(r),U.whenH(g.isJust(n.apiError))((u=g.fromMaybe("")(n.apiError),function(n){return L.div([U.class_("alert alert-err")])([k.text(u)])}))])]),L.tr_([L.td_([L.label([I.for("url")])([k.text("URL")])]),L.td_([L.input([I.type_(k.isPropInputType)(c.InputUrl.value),I.id("url"),U.class_("w-100 mv1"),I.required(!0),I.name("url"),I.autofocus(E.null(n.bm.url)),I.value(n.edit_bm.url),x.onValueChange(t(W.create))])])]),L.tr_([L.td_([L.label([I.for("title")])([k.text("title")])]),L.td([U.class_("flex")])([L.input([I.type_(k.isPropInputType)(c.InputText.value),I.id("title"),U.class_("w-100 mv1 flex-auto"),I.name("title"),I.value(n.edit_bm.title),x.onValueChange(t(q.create))]),L.button([I.disabled(n.loading),I.type_(k.isPropButtonType)(i.ButtonButton.value),x.onClick(function(n){return X.value}),U.class_("ml2 input-reset ba b--navy pointer f6 di dim pa1 ma1 mr0 "+h.guard(h.monoidString)(n.loading)("bg-light-silver"))])([k.text("fetch")])])]),L.tr_([L.td_([L.label([I.for("description")])([k.text("description")])]),L.td_([L.textarea([U.class_("w-100 mt1 mid-gray"),I.id("description"),I.name("description"),I.rows(4),I.value(n.edit_bm.description),x.onValueChange(t(J.create))])])]),L.tr_([L.td_([L.label([I.for("tags")])([k.text("tags")])]),L.td_([L.input([I.type_(k.isPropInputType)(c.InputText.value),I.id("tags"),U.class_("w-100 mv1"),I.name("tags"),I.autocomplete(!1),U.attr("autocapitalize")("off"),I.autofocus(!E.null(n.bm.url)),I.value(n.edit_bm.tags),x.onValueChange(t(j.create))])])]),L.tr_([L.td_([L.label([I.for("private")])([k.text("private")])]),L.td_([L.input([I.type_(k.isPropInputType)(c.InputCheckbox.value),I.id("private"),U.class_("private pointer"),I.name("private"),I.checked(n.edit_bm.private),x.onChecked(t(Q.create))])])]),L.tr_([L.td_([L.label([I.for("toread")])([k.text("read later")])]),L.td_([L.input([I.type_(k.isPropInputType)(c.InputCheckbox.value),I.id("toread"),U.class_("toread pointer"),I.name("toread"),I.checked(n.edit_bm.toread),x.onChecked(t(V.create))])])]),L.tr_([L.td_([]),L.td_([L.input([I.type_(k.isPropInputType)(c.InputSubmit.value),U.class_("ph3 pv2 input-reset ba b--navy bg-transparent pointer f6 dib mt1 dim"),I.value(n.bm.bid>0?"update bookmark":"add bookmark")])])])])])]);var u})(function(n){return L.p([U.class_("red")])([k.text("you killed this bookmark")])})},eval:_.mkEval({handleAction:function(n){if(n instanceof K)return o.modify_(N.monadStateHalogenM)(function(e){var t={};for(var r in e)({}).hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.deleteAsk=n.value0,t});if(n instanceof X)return a.discard(a.discardUnit)(N.bindHalogenM)(o.modify_(N.monadStateHalogenM)(function(n){var e={};for(var t in n)({}).hasOwnProperty.call(n,t)&&(e[t]=n[t]);return e.loading=!0,e}))(function(){return a.bind(N.bindHalogenM)(o.gets(N.monadStateHalogenM)(function(n){return n.edit_bm}))(function(n){return a.bind(N.bindHalogenM)(F.liftAff(N.monadAffHalogenM(F.monadAffAff))(r.lookupTitle(n)))(function(n){return a.discard(a.discardUnit)(N.bindHalogenM)(function(){if(n instanceof g.Just)return m.modifying(N.monadStateHalogenM)($(b.strongFn))(function(e){return{url:e.url,title:n.value0,description:e.description,tags:e.tags,private:e.private,toread:e.toread,bid:e.bid,slug:e.slug,selected:e.selected,time:e.time,archiveUrl:e.archiveUrl}});if(n instanceof g.Nothing)return u.pure(N.applicativeHalogenM)(M.unit);throw new Error("Failed pattern match at Component.Add (line 176, column 5 - line 178, column 29): "+[n.constructor.name])}())(function(){return o.modify_(N.monadStateHalogenM)(function(n){var e={};for(var t in n)({}).hasOwnProperty.call(n,t)&&(e[t]=n[t]);return e.loading=!1,e})})})})});if(n instanceof Y)return a.bind(N.bindHalogenM)(o.gets(N.monadStateHalogenM)(function(n){return n.bm.bid}))(function(n){return a.discard(a.discardUnit)(N.bindHalogenM)(s.void(N.functorHalogenM)(F.liftAff(N.monadAffHalogenM(F.monadAffAff))(r.destroy(n))))(function(){return o.modify_(N.monadStateHalogenM)(function(n){var e={};for(var t in n)({}).hasOwnProperty.call(n,t)&&(e[t]=n[t]);return e.destroyed=!0,e})})});if(n instanceof z)return m.modifying(N.monadStateHalogenM)($(b.strongFn))(function(){if(n.value0 instanceof W)return function(e){return{url:n.value0.value0,title:e.title,description:e.description,tags:e.tags,private:e.private,toread:e.toread,bid:e.bid,slug:e.slug,selected:e.selected,time:e.time,archiveUrl:e.archiveUrl}};if(n.value0 instanceof q)return function(e){return{url:e.url,title:n.value0.value0,description:e.description,tags:e.tags,private:e.private,toread:e.toread,bid:e.bid,slug:e.slug,selected:e.selected,time:e.time,archiveUrl:e.archiveUrl}};if(n.value0 instanceof J)return function(e){return{url:e.url,title:e.title,description:n.value0.value0,tags:e.tags,private:e.private,toread:e.toread,bid:e.bid,slug:e.slug,selected:e.selected,time:e.time,archiveUrl:e.archiveUrl}};if(n.value0 instanceof j)return function(e){return{url:e.url,title:e.title,description:e.description,tags:n.value0.value0,private:e.private,toread:e.toread,bid:e.bid,slug:e.slug,selected:e.selected,time:e.time,archiveUrl:e.archiveUrl}};if(n.value0 instanceof Q)return function(e){return{url:e.url,title:e.title,description:e.description,tags:e.tags,private:n.value0.value0,toread:e.toread,bid:e.bid,slug:e.slug,selected:e.selected,time:e.time,archiveUrl:e.archiveUrl}};if(n.value0 instanceof V)return function(e){return{url:e.url,title:e.title,description:e.description,tags:e.tags,private:e.private,toread:n.value0.value0,bid:e.bid,slug:e.slug,selected:e.selected,time:e.time,archiveUrl:e.archiveUrl}};throw new Error("Failed pattern match at Component.Add (line 187, column 17 - line 193, column 36): "+[n.value0.constructor.name])}());if(n instanceof G)return a.discard(a.discardUnit)(N.bindHalogenM)(H.liftEffect(N.monadEffectHalogenM(C.monadEffectAff))(R.preventDefault(n.value0)))(function(){return a.bind(N.bindHalogenM)(d.use(N.monadStateHalogenM)($(v.strongForget)))(function(n){return a.discard(a.discardUnit)(N.bindHalogenM)(m.assign(N.monadStateHalogenM)(Z(b.strongFn))(g.Nothing.value))(function(){return a.bind(N.bindHalogenM)(F.liftAff(N.monadAffHalogenM(F.monadAffAff))(r.editBookmark(n)))(function(e){if(e instanceof f.Left)return a.discard(a.discardUnit)(N.bindHalogenM)(m.assign(N.monadStateHalogenM)(Z(b.strongFn))(new g.Just(t.printError(e.value0))))(function(){return H.liftEffect(N.monadEffectHalogenM(C.monadEffectAff))(T.log(t.printError(e.value0)))});if(e instanceof f.Right&&e.value0.status>=200&&e.value0.status<300)return a.discard(a.discardUnit)(N.bindHalogenM)(m.assign(N.monadStateHalogenM)((r=b.strongFn,p.lens(function(n){return n.bm})(function(n){return function(e){return{bm:e,apiError:n.apiError,deleteAsk:n.deleteAsk,destroyed:n.destroyed,edit_bm:n.edit_bm,loading:n.loading}}})(r)))(n))(function(){return a.bind(N.bindHalogenM)(H.liftEffect(N.monadEffectHalogenM(C.monadEffectAff))(U._curQuerystring))(function(n){return a.bind(N.bindHalogenM)(H.liftEffect(N.monadEffectHalogenM(C.monadEffectAff))(U._doc))(function(e){return a.bind(N.bindHalogenM)(H.liftEffect(N.monadEffectHalogenM(C.monadEffectAff))(B.referrer(e)))(function(e){return a.bind(N.bindHalogenM)(H.liftEffect(N.monadEffectHalogenM(C.monadEffectAff))(U._loc))(function(t){return a.bind(N.bindHalogenM)(H.liftEffect(N.monadEffectHalogenM(C.monadEffectAff))(O.origin(t)))(function(r){var u=U._lookupQueryStringValue(n)("next");return u instanceof g.Just&&"closeWindow"===u.value0?H.liftEffect(N.monadEffectHalogenM(C.monadEffectAff))(a.bindFlipped(A.bindEffect)(S.closeWindow)(P.window)):u instanceof g.Just&&"back"===u.value0?H.liftEffect(N.monadEffectHalogenM(C.monadEffectAff))(function(){var n=y.stripPrefix(r)(e);if(n instanceof g.Just)return O.setHref(e)(t);if(n instanceof g.Nothing)return O.setHref(r)(t);throw new Error("Failed pattern match at Component.Add (line 213, column 13 - line 215, column 41): "+[n.constructor.name])}()):H.liftEffect(N.monadEffectHalogenM(C.monadEffectAff))(a.bindFlipped(A.bindEffect)(S.closeWindow)(P.window))})})})})})});var r;if(e instanceof f.Right)return a.discard(a.discardUnit)(N.bindHalogenM)(m.assign(N.monadStateHalogenM)(Z(b.strongFn))(new g.Just(e.value0.body)))(function(){return H.liftEffect(N.monadEffectHalogenM(C.monadEffectAff))(T.log(e.value0.body))});throw new Error("Failed pattern match at Component.Add (line 199, column 42 - line 219, column 36): "+[e.constructor.name])})})})});throw new Error("Failed pattern match at Component.Add (line 168, column 3 - line 168, column 69): "+[n.constructor.name])},handleQuery:_.defaultEval.handleQuery,receive:_.defaultEval.receive,initialize:_.defaultEval.initialize,finalize:_.defaultEval.finalize})})}}(t),(t["Component.RawHtml"]=t["Component.RawHtml"]||{}).unsafeSetInnerHTML=function(n){return function(e){return function(){n.innerHTML=e}}},function(n){"use strict";(t["Web.HTML.HTMLElement"]=t["Web.HTML.HTMLElement"]||{})._read=function(n,e,t){var r=Object.prototype.toString.call(t);return 0===r.indexOf("[object HTML")&&r.indexOf("Element]")===r.length-8?e(t):n}}(),function(n){"use strict";n["Web.HTML.HTMLElement"]=n["Web.HTML.HTMLElement"]||{};var e=n["Web.HTML.HTMLElement"],t=n["Web.HTML.HTMLElement"],r=n["Data.Maybe"],u=n["Unsafe.Coerce"],a=u.unsafeCoerce,o=u.unsafeCoerce;e.fromElement=function(n){return t._read(r.Nothing.value,r.Just.create,n)},e.toElement=o,e.toNode=a}(t),function(n){"use strict";n["Halogen.Query"]=n["Halogen.Query"]||{};var e,t=n["Halogen.Query"],r=n["Control.Bind"],u=n["Data.Functor"],a=n["Data.Maybe"],o=n["Halogen.Query.HalogenM"],i=n["Web.HTML.HTMLElement"],c=(e=u.map(o.functorHalogenM)(function(n){return r.bindFlipped(a.bindMaybe)(i.fromElement)(n)}),function(n){return e(o.getRef(n))});t.getHTMLElementRef=c}(t),function(n){"use strict";n["Component.RawHtml"]=n["Component.RawHtml"]||{};var e=n["Component.RawHtml"],t=n["Component.RawHtml"],r=n["Control.Applicative"],u=n["Control.Bind"],a=n["Control.Monad.State.Class"],o=n["Data.Foldable"],i=n["Data.Maybe"],c=n["Data.Monoid"],f=n["Data.Unit"],l=n.Effect,s=n["Effect.Aff"],d=n["Effect.Aff.Class"],v=n["Effect.Class"],p=n["Halogen.Component"],m=n["Halogen.HTML.Elements"],g=n["Halogen.HTML.Properties"],h=n["Halogen.Query"],b=n["Halogen.Query.HalogenM"],w=function(){function n(){}return n.value=new n,n}(),y=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}();e.mkComponent=function(n){return p.mkComponent({initialState:function(n){return{elRef:"inputval",inputval:n}},render:function(n){return m.div([g.ref(n.elRef)])([])},eval:p.mkEval({handleAction:function e(i){if(i instanceof w)return u.bind(b.bindHalogenM)(a.get(b.monadStateHalogenM))(function(e){return u.bind(b.bindHalogenM)(h.getHTMLElementRef(e.elRef))(function(e){return u.discard(u.discardUnit)(b.bindHalogenM)(o.for_(b.applicativeHalogenM)(o.foldableMaybe)(e)(function(e){return u.bind(b.bindHalogenM)(a.get(b.monadStateHalogenM))(function(r){return d.liftAff(b.monadAffHalogenM(d.monadAffAff))(s.forkAff(s.makeAff(function(u){return function(){return v.liftEffect(v.monadEffectEffect)(t.unsafeSetInnerHTML(e)(n(r.inputval)))(),c.mempty(l.monoidEffect(s.monoidCanceler))()}})))})}))(function(){return r.pure(b.applicativeHalogenM)(f.unit)})})});if(i instanceof y)return u.discard(u.discardUnit)(b.bindHalogenM)(a.modify_(b.monadStateHalogenM)(function(n){var e={};for(var t in n)({}).hasOwnProperty.call(n,t)&&(e[t]=n[t]);return e.inputval=i.value0,e}))(function(){return e(w.value)});throw new Error("Failed pattern match at Component.RawHtml (line 51, column 18 - line 64, column 34): "+[i.constructor.name])},handleQuery:p.defaultEval.handleQuery,receive:function(n){return i.Just.create(y.create(n))},initialize:new i.Just(w.value),finalize:p.defaultEval.finalize})})}}(t),function(n){var e=require("marked"),t=require("dompurify");e.setOptions({pedantic:!1,gfm:!0}),n.markedImpl=function(n){return n?t.sanitize(e(n)):""}}(t["Foreign.Marked"]=t["Foreign.Marked"]||{}),function(n){"use strict";n["Foreign.Marked"]=n["Foreign.Marked"]||{};var e=n["Foreign.Marked"],t=n["Foreign.Marked"],r=n.Globals;e.marked=function(n){return r.RawHTML(t.markedImpl(n))}}(t),function(n){"use strict";n["Component.Markdown"]=n["Component.Markdown"]||{};var e=n["Component.Markdown"],t=n["Component.RawHtml"],r=n["Foreign.Marked"],u=t.mkComponent(r.marked);e.component=u}(t),function(n){"use strict";n["Data.Void"]=n["Data.Void"]||{};n["Data.Void"].absurd=function(n){return function(n){for(var e;;)e=void(n=n);return e}(n)}}(t),function(n){"use strict";n["Effect.Class.Console"]=n["Effect.Class.Console"]||{};var e=n["Effect.Class.Console"],t=n["Effect.Class"],r=n["Effect.Console"];e.log=function(n){var e=t.liftEffect(n);return function(n){return e(r.log(n))}}}(t),function(n){"use strict";n["Halogen.HTML"]=n["Halogen.HTML"]||{};var e=n["Halogen.HTML"],t=n["Data.Maybe"],r=n["Halogen.Component"],u=n["Halogen.HTML.Core"];e.slot=function(){return function(n){return function(e){return function(a){return function(o){return function(i){return function(c){return function(f){return u.widget(new r.ComponentSlot(r.componentSlot()(n)(e)(a)(o)(i)(c)(function(n){return t.Just.create(f(n))})))}}}}}}}}}(t),function(n){"use strict";n["Component.BMark"]=n["Component.BMark"]||{};var e=n["Component.BMark"],t=n.Affjax,r=n.App,u=n["Component.Markdown"],a=n["Control.Applicative"],o=n["Control.Bind"],i=n["Control.Monad.State.Class"],c=n["DOM.HTML.Indexed.ButtonType"],f=n["DOM.HTML.Indexed.InputType"],l=n["Data.Either"],s=n["Data.Function"],d=n["Data.Functor"],v=n["Data.Lens.Getter"],p=n["Data.Lens.Internal.Forget"],m=n["Data.Lens.Lens"],g=n["Data.Lens.Setter"],h=n["Data.Maybe"],b=n["Data.Monoid"],w=n["Data.Nullable"],y=n["Data.Ord"],E=n["Data.Profunctor.Strong"],D=n["Data.Show"],M=n["Data.String.CodePoints"],A=n["Data.String.Common"],C=n["Data.Unit"],F=n["Data.Void"],H=n.Effect,T=n["Effect.Aff"],S=n["Effect.Aff.Class"],_=n["Effect.Class"],k=n["Effect.Class.Console"],L=n.Globals,x=n["Halogen.Component"],I=n["Halogen.HTML"],N=n["Halogen.HTML.Core"],U=n["Halogen.HTML.Elements"],R=n["Halogen.HTML.Events"],P=n["Halogen.HTML.Properties"],B=n["Halogen.Query.HalogenM"],O=n["Type.Proxy"],W=n.Util,q=n["Web.Event.Event"],J=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),j=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),Q=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),V=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),z=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),G=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),K=function(){function n(){}return n.value=new n,n}(),X=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),Y=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),$=function(){function n(){}return n.value=new n,n}(),Z=function(){function n(){}return n.value=new n,n}(),nn=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),en=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),tn=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),rn=function(){function n(){}return n.value=new n,n}(),un=O.Proxy.value,an=function(n){return m.lens(function(n){return n.edit_bm})(function(n){return function(e){return{edit_bm:e,apiError:n.apiError,bm:n.bm,deleteAsk:n.deleteAsk,edit:n.edit,loading:n.loading}}})(n)},on=function(n){return m.lens(function(n){return n.edit})(function(n){return function(e){return{edit:e,apiError:n.apiError,bm:n.bm,deleteAsk:n.deleteAsk,edit_bm:n.edit_bm,loading:n.loading}}})(n)},cn=function(n){return m.lens(function(n){return n.bm})(function(n){return function(e){return{bm:e,apiError:n.apiError,deleteAsk:n.deleteAsk,edit:n.edit,edit_bm:n.edit_bm,loading:n.loading}}})(n)},fn=function(n){return m.lens(function(n){return n.apiError})(function(n){return function(e){return{apiError:e,bm:n.bm,deleteAsk:n.deleteAsk,edit:n.edit,edit_bm:n.edit_bm,loading:n.loading}}})(n)};e.bmark=function(n){var e,m=function(n){return D.show(D.showInt)(n.bid)+"_tags"},O=L["app'"](C.unit);return x.mkComponent({initialState:s.const((e=n,{bm:e,edit_bm:e,deleteAsk:!1,edit:!1,loading:!1,apiError:h.Nothing.value})),render:function(n){var e=M.take(16)(n.bm.time)+"Z",t=L.toLocaleDateString(n.bm.time),r=function(n){return W.fromNullableStr(O.userR)+"/t:"+W.encodeTag(n)},a=function(n){return function(e){return en.create(n(e))}};return U.div([P.id(D.show(D.showInt)(n.bm.bid)),W.class_("bookmark w-100 mw7 pa1 mb3"+b.guard(b.monoidString)(n.bm.private)(" private"))])([W.whenH(O.dat.isowner)(function(e){return U.div([W.class_("star fl pointer"+b.guard(b.monoidString)(n.bm.selected)(" selected"))])([U.button([W.class_("moon-gray"),R.onClick(function(e){return new X(!n.bm.selected)})])([N.text("✭")])])}),W.ifElseH(n.edit)(function(e){return U.div([W.class_("edit_bookmark_form pa2 pt0 bg-white")])([W.whenH(h.isJust(n.apiError))((t=h.fromMaybe("")(n.apiError),function(n){return U.div([W.class_("alert alert-err")])([N.text(t)])})),U.form([R.onSubmit(tn.create)])([U.div_([N.text("url")]),U.input([P.type_(N.isPropInputType)(f.InputUrl.value),W.class_("url w-100 mb2 pt1 edit_form_input"),P.required(!0),P.name("url"),P.value(n.edit_bm.url),R.onValueChange(a(J.create))]),U.div_([N.text("title")]),U.div([W.class_("flex")])([U.input([P.type_(N.isPropInputType)(f.InputText.value),W.class_("title w-100 mb2 pt1 edit_form_input"),P.name("title"),P.value(n.edit_bm.title),R.onValueChange(a(j.create))]),U.button([P.disabled(n.loading),P.type_(N.isPropButtonType)(c.ButtonButton.value),R.onClick(function(n){return $.value}),W.class_("ml1 pa1 mb2 dark-gray ba b--moon-gray bg-near-white pointer rdim f7 "+b.guard(b.monoidString)(n.loading)("bg-light-silver"))])([N.text("fetch")])]),U.div_([N.text("description")]),U.textarea([W.class_("description w-100 mb1 pt1 edit_form_input"),P.name("description"),P.rows(5),P.value(n.edit_bm.description),R.onValueChange(a(Q.create))]),U.div([P.id("tags_input_box")])([U.div_([N.text("tags")]),U.input([P.id(m(n.edit_bm)),P.type_(N.isPropInputType)(f.InputText.value),W.class_("tags w-100 mb1 pt1 edit_form_input"),P.name("tags"),P.autocomplete(!1),W.attr("autocapitalize")("off"),P.value(n.edit_bm.tags),R.onValueChange(a(V.create))])]),U.div([W.class_("edit_form_checkboxes mv3")])([U.input([P.type_(N.isPropInputType)(f.InputCheckbox.value),W.class_("private pointer"),P.id("edit_private"),P.name("private"),P.checked(n.edit_bm.private),R.onChecked(a(z.create))]),N.text(" "),U.label([P.for("edit_private"),W.class_("mr2")])([N.text("private")]),N.text(" "),U.input([P.type_(N.isPropInputType)(f.InputCheckbox.value),W.class_("toread pointer"),P.id("edit_toread"),P.name("toread"),P.checked(n.edit_bm.toread),R.onChecked(a(G.create))]),N.text(" "),U.label([P.for("edit_toread")])([N.text("to-read")])]),U.input([P.type_(N.isPropInputType)(f.InputSubmit.value),W.class_("mr1 pv1 ph2 dark-gray ba b--moon-gray bg-near-white pointer rdim"),P.value("save")]),N.text(" "),U.input([P.type_(N.isPropInputType)(f.InputReset.value),W.class_("pv1 ph2 dark-gray ba b--moon-gray bg-near-white pointer rdim"),P.value("cancel"),R.onClick(function(n){return new nn(!1)})])])]);var t})(function(a){return U.div([W.class_("display")])([U.a([P.href(n.bm.url),P.target("_blank"),W.class_("link f5 lh-title"+b.guard(b.monoidString)(n.bm.toread)(" unread"))])([N.text(A.null(n.bm.title)?"[no title]":n.bm.title)]),U.br_,U.a([P.href(n.bm.url),W.class_("link f7 gray hover-blue")])([N.text(n.bm.url)]),U.a([P.href(h.fromMaybe("http://archive.is/"+n.bm.url)(w.toMaybe(n.bm.archiveUrl))),W.class_("link f7 gray hover-blue ml2"+b.guard(b.monoidString)(h.isJust(w.toMaybe(n.bm.archiveUrl)))(" green")),P.target("_blank"),P.title("archive link")])([h.isJust(w.toMaybe(n.bm.archiveUrl))?N.text("☑"):N.text("☐")]),U.br_,U.div([W.class_("description mt1 mid-gray")])([I.slot()({reflectSymbol:function(){return"markdown"}})(y.ordUnit)(un)(C.unit)(u.component)(n.bm.description)(F.absurd)]),U.div([W.class_("tags")])(W.whenA(!A.null(n.bm.tags))(function(e){return d.map(d.functorArray)(function(n){return U.a([W.class_("link tag mr1"+b.guard(b.monoidString)("."===M.take(1)(n))(" private")),P.href(r(n))])([N.text(n)])})(A.split(" ")(n.bm.tags))})),U.a([W.class_("link f7 dib gray w4"),P.href((o=n.bm.slug,W.fromNullableStr(O.userR)+"/b:"+o)),P.title(e)])([N.text(t)]),W.whenH(O.dat.isowner)(function(e){return U.div([W.class_("edit_links di")])([U.button([P.type_(N.isPropButtonType)(c.ButtonButton.value),R.onClick(function(n){return new nn(!0)}),W.class_("edit light-silver hover-blue")])([N.text("edit  ")]),U.div([W.class_("delete_link di")])([U.button([P.type_(N.isPropButtonType)(c.ButtonButton.value),R.onClick(function(n){return new Y(!0)}),W.class_("delete light-silver hover-blue"+b.guard(b.monoidString)(n.deleteAsk)(" dn"))])([N.text("delete")]),U.span([W.class_("confirm red"+b.guard(b.monoidString)(!n.deleteAsk)(" dn"))])([U.button([P.type_(N.isPropButtonType)(c.ButtonButton.value),R.onClick(function(n){return new Y(!1)})])([N.text("cancel / ")]),U.button([P.type_(N.isPropButtonType)(c.ButtonButton.value),R.onClick(function(n){return Z.value}),W.class_("red")])([N.text("destroy")])])])])}),W.whenH(O.dat.isowner)(function(e){return U.div([W.class_("read di")])(b.guard(b.monoidArray)(n.bm.toread)([N.text("  "),U.button([R.onClick(function(n){return rn.value}),W.class_("mark_read")])([N.text("mark as read")])]))})]);var o})])},eval:x.mkEval({handleAction:function(n){if(n instanceof X)return o.bind(B.bindHalogenM)(v.use(B.monadStateHalogenM)(cn(p.strongForget)))(function(e){return o.discard(o.discardUnit)(B.bindHalogenM)(S.liftAff(B.monadAffHalogenM(S.monadAffAff))(r.toggleStar(e.bid)(n.value0?r.Star.value:r.UnStar.value)))(function(){return o.discard(o.discardUnit)(B.bindHalogenM)(g.modifying(B.monadStateHalogenM)(cn(E.strongFn))(function(e){return{url:e.url,title:e.title,description:e.description,tags:e.tags,private:e.private,toread:e.toread,bid:e.bid,slug:e.slug,selected:n.value0,time:e.time,archiveUrl:e.archiveUrl}}))(function(){return g.modifying(B.monadStateHalogenM)(an(E.strongFn))(function(e){return{url:e.url,title:e.title,description:e.description,tags:e.tags,private:e.private,toread:e.toread,bid:e.bid,slug:e.slug,selected:n.value0,time:e.time,archiveUrl:e.archiveUrl}})})})});if(n instanceof Y)return i.modify_(B.monadStateHalogenM)(function(e){var t={};for(var r in e)({}).hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.deleteAsk=n.value0,t});if(n instanceof Z)return o.bind(B.bindHalogenM)(v.use(B.monadStateHalogenM)(cn(p.strongForget)))(function(n){return o.discard(o.discardUnit)(B.bindHalogenM)(d.void(B.functorHalogenM)(S.liftAff(B.monadAffHalogenM(S.monadAffAff))(r.destroy(n.bid))))(function(){return B.raise(K.value)})});if(n instanceof rn)return o.bind(B.bindHalogenM)(v.use(B.monadStateHalogenM)(cn(p.strongForget)))(function(n){return o.discard(o.discardUnit)(B.bindHalogenM)(d.void(B.functorHalogenM)(S.liftAff(B.monadAffHalogenM(S.monadAffAff))(r.markRead(n.bid))))(function(){return g.modifying(B.monadStateHalogenM)(cn(E.strongFn))(function(n){return{url:n.url,title:n.title,description:n.description,tags:n.tags,private:n.private,toread:!1,bid:n.bid,slug:n.slug,selected:n.selected,time:n.time,archiveUrl:n.archiveUrl}})})});if(n instanceof nn)return o.bind(B.bindHalogenM)(v.use(B.monadStateHalogenM)(cn(p.strongForget)))(function(e){return o.discard(o.discardUnit)(B.bindHalogenM)(g.assign(B.monadStateHalogenM)(an(E.strongFn))(e))(function(){return o.discard(o.discardUnit)(B.bindHalogenM)(g.assign(B.monadStateHalogenM)(on(E.strongFn))(n.value0))(function(){return o.discard(o.discardUnit)(B.bindHalogenM)(g.assign(B.monadStateHalogenM)(fn(E.strongFn))(h.Nothing.value))(function(){return _.liftEffect(B.monadEffectHalogenM(T.monadEffectAff))(a.when(H.applicativeEffect)(n.value0)(L.setFocus(m(e))))})})})});if(n instanceof en)return g.modifying(B.monadStateHalogenM)(an(E.strongFn))(function(){if(n.value0 instanceof J)return function(e){return{url:n.value0.value0,title:e.title,description:e.description,tags:e.tags,private:e.private,toread:e.toread,bid:e.bid,slug:e.slug,selected:e.selected,time:e.time,archiveUrl:e.archiveUrl}};if(n.value0 instanceof j)return function(e){return{url:e.url,title:n.value0.value0,description:e.description,tags:e.tags,private:e.private,toread:e.toread,bid:e.bid,slug:e.slug,selected:e.selected,time:e.time,archiveUrl:e.archiveUrl}};if(n.value0 instanceof Q)return function(e){return{url:e.url,title:e.title,description:n.value0.value0,tags:e.tags,private:e.private,toread:e.toread,bid:e.bid,slug:e.slug,selected:e.selected,time:e.time,archiveUrl:e.archiveUrl}};if(n.value0 instanceof V)return function(e){return{url:e.url,title:e.title,description:e.description,tags:n.value0.value0,private:e.private,toread:e.toread,bid:e.bid,slug:e.slug,selected:e.selected,time:e.time,archiveUrl:e.archiveUrl}};if(n.value0 instanceof z)return function(e){return{url:e.url,title:e.title,description:e.description,tags:e.tags,private:n.value0.value0,toread:e.toread,bid:e.bid,slug:e.slug,selected:e.selected,time:e.time,archiveUrl:e.archiveUrl}};if(n.value0 instanceof G)return function(e){return{url:e.url,title:e.title,description:e.description,tags:e.tags,private:e.private,toread:n.value0.value0,bid:e.bid,slug:e.slug,selected:e.selected,time:e.time,archiveUrl:e.archiveUrl}};throw new Error("Failed pattern match at Component.BMark (line 252, column 17 - line 258, column 36): "+[n.value0.constructor.name])}());if(n instanceof $)return o.discard(o.discardUnit)(B.bindHalogenM)(i.modify_(B.monadStateHalogenM)(function(n){var e={};for(var t in n)({}).hasOwnProperty.call(n,t)&&(e[t]=n[t]);return e.loading=!0,e}))(function(){return o.bind(B.bindHalogenM)(i.gets(B.monadStateHalogenM)(function(n){return n.edit_bm}))(function(n){return o.bind(B.bindHalogenM)(S.liftAff(B.monadAffHalogenM(S.monadAffAff))(r.lookupTitle(n)))(function(n){return o.discard(o.discardUnit)(B.bindHalogenM)(function(){if(n instanceof h.Just)return g.modifying(B.monadStateHalogenM)(an(E.strongFn))(function(e){return{url:e.url,title:n.value0,description:e.description,tags:e.tags,private:e.private,toread:e.toread,bid:e.bid,slug:e.slug,selected:e.selected,time:e.time,archiveUrl:e.archiveUrl}});if(n instanceof h.Nothing)return a.pure(B.applicativeHalogenM)(C.unit);throw new Error("Failed pattern match at Component.BMark (line 265, column 5 - line 267, column 29): "+[n.constructor.name])}())(function(){return i.modify_(B.monadStateHalogenM)(function(n){var e={};for(var t in n)({}).hasOwnProperty.call(n,t)&&(e[t]=n[t]);return e.loading=!1,e})})})})});if(n instanceof tn)return o.discard(o.discardUnit)(B.bindHalogenM)(_.liftEffect(B.monadEffectHalogenM(T.monadEffectAff))(q.preventDefault(n.value0)))(function(){return o.bind(B.bindHalogenM)(v.use(B.monadStateHalogenM)(an(p.strongForget)))(function(n){return o.discard(o.discardUnit)(B.bindHalogenM)(g.assign(B.monadStateHalogenM)(fn(E.strongFn))(h.Nothing.value))(function(){var e={tags:A.replaceAll(",")(" ")(n.tags),archiveUrl:n.archiveUrl,bid:n.bid,description:n.description,private:n.private,selected:n.selected,slug:n.slug,time:n.time,title:n.title,toread:n.toread,url:n.url};return o.bind(B.bindHalogenM)(S.liftAff(B.monadAffHalogenM(S.monadAffAff))(r.editBookmark(e)))(function(n){if(n instanceof l.Left)return o.discard(o.discardUnit)(B.bindHalogenM)(g.assign(B.monadStateHalogenM)(fn(E.strongFn))(new h.Just(t.printError(n.value0))))(function(){return _.liftEffect(B.monadEffectHalogenM(T.monadEffectAff))(k.log(_.monadEffectEffect)(t.printError(n.value0)))});if(n instanceof l.Right&&n.value0.status>=200&&n.value0.status<300)return o.discard(o.discardUnit)(B.bindHalogenM)(g.assign(B.monadStateHalogenM)(cn(E.strongFn))(e))(function(){return g.assign(B.monadStateHalogenM)(on(E.strongFn))(!1)});if(n instanceof l.Right)return o.discard(o.discardUnit)(B.bindHalogenM)(g.assign(B.monadStateHalogenM)(fn(E.strongFn))(new h.Just(n.value0.body)))(function(){return _.liftEffect(B.monadEffectHalogenM(T.monadEffectAff))(k.log(_.monadEffectEffect)(n.value0.body))});throw new Error("Failed pattern match at Component.BMark (line 276, column 43 - line 285, column 36): "+[n.constructor.name])})})})});throw new Error("Failed pattern match at Component.BMark (line 215, column 3 - line 215, column 84): "+[n.constructor.name])},handleQuery:x.defaultEval.handleQuery,receive:x.defaultEval.receive,initialize:x.defaultEval.initialize,finalize:x.defaultEval.finalize})})}}(t),function(n){"use strict";n["Component.BList"]=n["Component.BList"]||{};var e=n["Component.BList"],t=n["Component.BMark"],r=n["Control.Monad.State.Class"],u=n["Data.Array"],a=n["Data.Function"],o=n["Data.Functor"],i=n["Data.Ord"],c=n["Data.Unit"],f=n["Halogen.Component"],l=n["Halogen.HTML"],s=n["Halogen.HTML.Elements"],d=n["Halogen.Query.HalogenM"],v=n["Type.Proxy"],p=function(){function n(n,e){this.value0=n,this.value1=e}return n.create=function(e){return function(t){return new n(e,t)}},n}(),m=v.Proxy.value;e.blist=function(n){return f.mkComponent({initialState:a.const(n),render:function(n){return s.div_(o.map(o.functorArray)(function(n){return l.slot()({reflectSymbol:function(){return"bookmark"}})(i.ordInt)(m)(n.bid)(t.bmark(n))(c.unit)(p.create(n.bid))})(n))},eval:f.mkEval({handleAction:function(n){return r.modify_(d.monadStateHalogenM)(u.filter(function(e){return e.bid!==n.value0}))},handleQuery:f.defaultEval.handleQuery,receive:f.defaultEval.receive,initialize:f.defaultEval.initialize,finalize:f.defaultEval.finalize})})}}(t),function(n){"use strict";n["Component.NList"]=n["Component.NList"]||{};var e=n["Component.NList"],t=n["Control.Applicative"],r=n["Data.Array"],u=n["Data.Function"],a=n["Data.Functor"],o=n["Data.Maybe"],i=n["Data.Monoid"],c=n["Data.Show"],f=n["Data.String.CodePoints"],l=n["Data.String.Common"],s=n["Data.Tuple"],d=n["Data.Unit"],v=n.Globals,p=n["Halogen.Component"],m=n["Halogen.HTML.Core"],g=n["Halogen.HTML.Elements"],h=n["Halogen.HTML.Properties"],b=n["Halogen.Query.HalogenM"],w=n.Util;e.nlist=function(n){var e,y=function(n){return v.mmoment8601(n.created)},E=v["app'"](d.unit),D=function(n){return w.fromNullableStr(E.userR)+"/notes/"+n};return p.mkComponent({initialState:u.const((e=n,{notes:e,cur:o.Nothing.value,deleteAsk:!1,edit:!1})),render:function(n){return g.div_(a.map(a.functorArray)(function(n){return g.div([h.id(c.show(c.showInt)(n.id)),w.class_("note w-100 mw7 pa1 mb2"+(n.shared?"":" private"))])([g.div([w.class_("display")])([g.a([h.href(D(n.slug)),w.class_("link f5 lh-title")])([m.text(l.null(n.title)?"[no title]":n.title)]),g.br_,g.div([w.class_("description mt1 mid-gray")])((e=f.take(200)(n.text),r.drop(1)(r.foldMap(i.monoidArray)(function(n){return[g.br_,m.text(n)]})(l.split("\n")(e))))),g.a([w.class_("link f7 dib gray w4"),h.title(o.maybe(n.created)(s.snd)(y(n))),h.href(D(n.slug))])([m.text(o.maybe(" ")(s.fst)(y(n)))])])]);var e})(n.notes))},eval:p.mkEval({handleAction:function(n){return t.pure(b.applicativeHalogenM)(d.unit)},handleQuery:p.defaultEval.handleQuery,receive:p.defaultEval.receive,initialize:p.defaultEval.initialize,finalize:p.defaultEval.finalize})})}}(t),function(n){"use strict";n["Component.NNote"]=n["Component.NNote"]||{};var e=n["Component.NNote"],t=n.Affjax,r=n.App,u=n["Component.Markdown"],a=n["Control.Applicative"],o=n["Control.Bind"],i=n["Control.Monad"],c=n["Control.Monad.State.Class"],f=n["DOM.HTML.Indexed.ButtonType"],l=n["DOM.HTML.Indexed.InputType"],s=n["Data.Array"],d=n["Data.Either"],v=n["Data.Function"],p=n["Data.Functor"],m=n["Data.Lens.Getter"],g=n["Data.Lens.Internal.Forget"],h=n["Data.Lens.Lens"],b=n["Data.Lens.Setter"],w=n["Data.Maybe"],y=n["Data.Monoid"],E=n["Data.Ord"],D=n["Data.Profunctor.Strong"],M=n["Data.Show"],A=n["Data.String.CodeUnits"],C=n["Data.String.Common"],F=n["Data.Tuple"],H=n["Data.Unit"],T=n["Data.Void"],S=n.Effect,_=n["Effect.Aff"],k=n["Effect.Aff.Class"],L=n["Effect.Class"],x=n["Effect.Console"],I=n.Globals,N=n["Halogen.Component"],U=n["Halogen.HTML"],R=n["Halogen.HTML.Core"],P=n["Halogen.HTML.Elements"],B=n["Halogen.HTML.Events"],O=n["Halogen.HTML.Properties"],W=n["Halogen.Query.HalogenM"],q=n["Type.Proxy"],J=n.Util,j=n["Web.Event.Event"],Q=n["Web.HTML"],V=n["Web.HTML.HTMLDocument"],z=n["Web.HTML.Location"],G=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),K=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),X=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),Y=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),$=function(){function n(){}return n.value=new n,n}(),Z=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),nn=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),en=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),tn=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),rn=function(){function n(){}return n.value=new n,n}(),un=function(n){return h.lens(function(n){return n.note})(function(n){return function(e){return{note:e,apiError:n.apiError,deleteAsk:n.deleteAsk,destroyed:n.destroyed,edit:n.edit,edit_note:n.edit_note}}})(n)},an=q.Proxy.value,on=function(n){return h.lens(function(n){return n.edit_note})(function(n){return function(e){return{edit_note:e,apiError:n.apiError,deleteAsk:n.deleteAsk,destroyed:n.destroyed,edit:n.edit,note:n.note}}})(n)},cn=function(n){return h.lens(function(n){return n.edit})(function(n){return function(e){return{edit:e,apiError:n.apiError,deleteAsk:n.deleteAsk,destroyed:n.destroyed,edit_note:n.edit_note,note:n.note}}})(n)},fn=function(n){return h.lens(function(n){return n.apiError})(function(n){return function(e){return{apiError:e,deleteAsk:n.deleteAsk,destroyed:n.destroyed,edit:n.edit,edit_note:n.edit_note,note:n.note}}})(n)};e.nnote=function(n){var e,h=function(n){return M.show(M.showInt)(n.id)+"_text"},q=I["app'"](H.unit);return N.mkComponent({initialState:v.const((e=n,{note:e,edit_note:e,deleteAsk:!1,edit:e.id<=0,destroyed:!1,apiError:w.Nothing.value})),render:function(n){var e=function(n){return I.mmoment8601(n.created)},t=function(n){return function(e){return Z.create(n(e))}};return J.ifElseH(n.destroyed)(function(n){return P.p([J.class_("red")])([R.text("you killed this note")])})(v.const(J.ifElseH(n.edit)(function(e){return P.form([B.onSubmit(nn.create)])([J.whenH(w.isJust(n.apiError))((r=w.fromMaybe("")(n.apiError),function(n){return P.div([J.class_("alert alert-err")])([R.text(r)])})),P.p([J.class_("mt2 mb1")])([R.text("title:")]),P.input([O.type_(R.isPropInputType)(l.InputText.value),J.class_("title w-100 mb1 pt1 edit_form_input"),O.name("title"),O.value(n.edit_note.title),B.onValueChange(t(G.create)),O.autofocus(C.null(n.edit_note.title))]),P.br_,P.p([J.class_("mt2 mb1")])([R.text("description:")]),P.textarea([O.id(h(n.edit_note)),J.class_("description w-100 mb1 pt1 edit_form_input"),O.name("text"),O.rows(25),O.value(n.edit_note.text),B.onValueChange(t(K.create))]),P.div([J.class_("edit_form_checkboxes mb3")])([P.input([O.type_(R.isPropInputType)(l.InputCheckbox.value),J.class_("is-markdown pointer"),O.id("edit_ismarkdown"),O.name("ismarkdown"),O.checked(n.edit_note.isMarkdown),B.onChecked(t(X.create))]),R.text(" "),P.label([O.for("edit_ismarkdown"),J.class_("mr2")])([R.text("use markdown?")]),P.br_]),P.div([J.class_("edit_form_checkboxes mb3")])([P.input([O.type_(R.isPropInputType)(l.InputCheckbox.value),J.class_("is-markdown pointer"),O.id("edit_shared"),O.name("shared"),O.checked(n.edit_note.shared),B.onChecked(t(Y.create))]),R.text(" "),P.label([O.for("edit_shared"),J.class_("mr2")])([R.text("public?")]),P.br_]),P.input([O.type_(R.isPropInputType)(l.InputSubmit.value),J.class_("mr1 pv1 ph2 dark-gray ba b--moon-gray bg-near-white pointer rdim"),O.value("save")]),R.text(" "),P.input([O.type_(R.isPropInputType)(l.InputReset.value),J.class_("pv1 ph2 dark-gray ba b--moon-gray bg-near-white pointer rdim"),O.value("cancel"),B.onClick(function(n){return new en(!1)})])]);var r})(function(t){return P.div([O.id(M.show(M.showInt)(n.note.id)),J.class_("note w-100 mw7 pa1 mb2")])([P.div([J.class_("display")])([P.div([J.class_("link f5 lh-title")])([R.text(C.null(n.note.title)?"[no title]":n.note.title)]),P.br_,n.note.isMarkdown?P.div([J.class_("description mt1")])([U.slot()({reflectSymbol:function(){return"markdown"}})(E.ordUnit)(an)(H.unit)(u.component)(n.note.text)(T.absurd)]):P.div([J.class_("description mt1 mid-gray")])((r=n.note.text,s.drop(1)(s.foldMap(y.monoidArray)(function(n){return[P.br_,R.text(n)]})(C.split("\n")(r))))),P.div([J.class_("link f7 dib gray w4")])([P.span([O.title(w.maybe(n.note.created)(F.snd)(e(n.note)))])([R.text(w.maybe(" ")(F.fst)(e(n.note)))]),R.text(" - "),P.span([J.class_("gray")])([R.text(n.note.shared?"public":"private")])])]),J.whenH(q.dat.isowner)(function(e){return P.div([J.class_("edit_links db mt3")])([P.button([O.type_(R.isPropButtonType)(f.ButtonButton.value),B.onClick(function(n){return new en(!0)}),J.class_("edit light-silver hover-blue")])([R.text("edit  ")]),P.div([J.class_("delete_link di")])([P.button([O.type_(R.isPropButtonType)(f.ButtonButton.value),B.onClick(function(n){return new tn(!0)}),J.class_("delete light-silver hover-blue"+y.guard(y.monoidString)(n.deleteAsk)(" dn"))])([R.text("delete")]),P.span([J.class_("confirm red"+y.guard(y.monoidString)(!n.deleteAsk)(" dn"))])([P.button([O.type_(R.isPropButtonType)(f.ButtonButton.value),B.onClick(function(n){return new tn(!1)})])([R.text("cancel / ")]),P.button([O.type_(R.isPropButtonType)(f.ButtonButton.value),B.onClick(function(n){return rn.value}),J.class_("red")])([R.text("destroy")])])])])})]);var r})))},eval:N.mkEval({handleAction:function(n){if(n instanceof $)return a.pure(W.applicativeHalogenM)(H.unit);if(n instanceof Z)return b.modifying(W.monadStateHalogenM)(on(D.strongFn))(function(){if(n.value0 instanceof G)return function(e){return{id:e.id,slug:e.slug,title:n.value0.value0,text:e.text,length:e.length,isMarkdown:e.isMarkdown,shared:e.shared,created:e.created,updated:e.updated}};if(n.value0 instanceof K)return function(e){return{id:e.id,slug:e.slug,title:e.title,text:n.value0.value0,length:e.length,isMarkdown:e.isMarkdown,shared:e.shared,created:e.created,updated:e.updated}};if(n.value0 instanceof X)return function(e){return{id:e.id,slug:e.slug,title:e.title,text:e.text,length:e.length,isMarkdown:n.value0.value0,shared:e.shared,created:e.created,updated:e.updated}};if(n.value0 instanceof Y)return function(e){return{id:e.id,slug:e.slug,title:e.title,text:e.text,length:e.length,isMarkdown:e.isMarkdown,shared:n.value0.value0,created:e.created,updated:e.updated}};throw new Error("Failed pattern match at Component.NNote (line 195, column 19 - line 199, column 36): "+[n.value0.constructor.name])}());if(n instanceof tn)return c.modify_(W.monadStateHalogenM)(function(e){var t={};for(var r in e)({}).hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.deleteAsk=n.value0,t});if(n instanceof rn)return o.bind(W.bindHalogenM)(m.use(W.monadStateHalogenM)(un(g.strongForget)))(function(n){return o.discard(o.discardUnit)(W.bindHalogenM)(p.void(W.functorHalogenM)(k.liftAff(W.monadAffHalogenM(k.monadAffAff))(r.destroyNote(n.id))))(function(){return c.modify_(W.monadStateHalogenM)(function(n){var e={};for(var t in n)({}).hasOwnProperty.call(n,t)&&(e[t]=n[t]);return e.destroyed=!0,e})})});if(n instanceof en)return o.bind(W.bindHalogenM)(m.use(W.monadStateHalogenM)(un(g.strongForget)))(function(e){return o.discard(o.discardUnit)(W.bindHalogenM)(b.assign(W.monadStateHalogenM)(on(D.strongFn))(e))(function(){return o.discard(o.discardUnit)(W.bindHalogenM)(b.assign(W.monadStateHalogenM)(cn(D.strongFn))(n.value0))(function(){return o.bind(W.bindHalogenM)(L.liftEffect(W.monadEffectHalogenM(_.monadEffectAff))(J._curQuerystring))(function(t){var r=n.value0,u=J._lookupQueryStringValue(t)("next");return!r&&u instanceof w.Just&&"closeWindow"===u.value0?L.liftEffect(W.monadEffectHalogenM(_.monadEffectAff))(o.bindFlipped(S.bindEffect)(I.closeWindow)(Q.window)):L.liftEffect(W.monadEffectHalogenM(_.monadEffectAff))(i.whenM(S.monadEffect)(a.pure(S.applicativeEffect)(n.value0))(I.setFocus(h(e))))})})})});if(n instanceof nn)return o.discard(o.discardUnit)(W.bindHalogenM)(L.liftEffect(W.monadEffectHalogenM(_.monadEffectAff))(j.preventDefault(n.value0)))(function(){return o.bind(W.bindHalogenM)(m.use(W.monadStateHalogenM)(on(g.strongForget)))(function(n){return o.discard(o.discardUnit)(W.bindHalogenM)(b.assign(W.monadStateHalogenM)(fn(D.strongFn))(w.Nothing.value))(function(){return o.bind(W.bindHalogenM)(k.liftAff(W.monadAffHalogenM(k.monadAffAff))(r.editNote(n)))(function(e){if(e instanceof d.Left)return o.discard(o.discardUnit)(W.bindHalogenM)(b.assign(W.monadStateHalogenM)(fn(D.strongFn))(new w.Just(t.printError(e.value0))))(function(){return L.liftEffect(W.monadEffectHalogenM(_.monadEffectAff))(x.log(t.printError(e.value0)))});if(e instanceof d.Right&&e.value0.status>=200&&e.value0.status<300)return o.bind(W.bindHalogenM)(L.liftEffect(W.monadEffectHalogenM(_.monadEffectAff))(J._curQuerystring))(function(e){return o.bind(W.bindHalogenM)(L.liftEffect(W.monadEffectHalogenM(_.monadEffectAff))(J._doc))(function(t){return o.bind(W.bindHalogenM)(L.liftEffect(W.monadEffectHalogenM(_.monadEffectAff))(V.referrer(t)))(function(t){return o.bind(W.bindHalogenM)(L.liftEffect(W.monadEffectHalogenM(_.monadEffectAff))(J._loc))(function(r){return o.bind(W.bindHalogenM)(L.liftEffect(W.monadEffectHalogenM(_.monadEffectAff))(z.origin(r)))(function(u){var a=J._lookupQueryStringValue(e)("next");return a instanceof w.Just&&"closeWindow"===a.value0?L.liftEffect(W.monadEffectHalogenM(_.monadEffectAff))(o.bindFlipped(S.bindEffect)(I.closeWindow)(Q.window)):a instanceof w.Just&&"back"===a.value0?L.liftEffect(W.monadEffectHalogenM(_.monadEffectAff))(w.isJust(A.stripPrefix(u)(t))?z.setHref(t)(r):z.setHref(u)(r)):0===n.id?L.liftEffect(W.monadEffectHalogenM(_.monadEffectAff))(o.bindFlipped(S.bindEffect)(z.setHref(J.fromNullableStr(q.noteR)))(J._loc)):o.discard(o.discardUnit)(W.bindHalogenM)(b.assign(W.monadStateHalogenM)(un(D.strongFn))(n))(function(){return b.assign(W.monadStateHalogenM)(cn(D.strongFn))(!1)})})})})})});if(e instanceof d.Right)return o.discard(o.discardUnit)(W.bindHalogenM)(b.assign(W.monadStateHalogenM)(fn(D.strongFn))(new w.Just(e.value0.body)))(function(){return L.liftEffect(W.monadEffectHalogenM(_.monadEffectAff))(x.log(e.value0.body))});throw new Error("Failed pattern match at Component.NNote (line 227, column 40 - line 250, column 36): "+[e.constructor.name])})})})});throw new Error("Failed pattern match at Component.NNote (line 190, column 3 - line 190, column 77): "+[n.constructor.name])},handleQuery:N.defaultEval.handleQuery,receive:N.defaultEval.receive,initialize:N.defaultEval.initialize,finalize:N.defaultEval.finalize})})}}(t),function(n){"use strict";(t["Math"]=t["Math"]||{}).log=Math.log}(),function(n){"use strict";n.Math=n.Math||{};var e=n.Math,t=n.Math;e.log=t.log}(t),function(n){"use strict";n["Component.TagCloud"]=n["Component.TagCloud"]||{};var e=n["Component.TagCloud"],t=n.App,r=n["Control.Applicative"],u=n["Control.Bind"],a=n["Control.Category"],o=n["Control.Monad.State.Class"],i=n["DOM.HTML.Indexed.ButtonType"],c=n["Data.Array"],f=n["Data.Eq"],l=n["Data.Foldable"],s=n["Data.Function"],d=n["Data.Functor"],v=n["Data.Int"],p=n["Data.Maybe"],m=n["Data.Monoid"],g=n["Data.Ord"],h=n["Data.Semigroup"],b=n["Data.Show"],w=n["Data.String.Common"],y=n["Data.Tuple"],E=n["Data.Unfoldable"],D=n["Data.Unit"],M=n["Effect.Aff.Class"],A=n["Foreign.Object"],C=n.Globals,F=n["Halogen.Component"],H=n["Halogen.HTML.Core"],T=n["Halogen.HTML.Elements"],S=n["Halogen.HTML.Events"],_=n["Halogen.HTML.Properties"],k=n["Halogen.Query.HalogenM"],L=n.Math,x=n.Model,I=n.Util,N=function(){function n(){}return n.value=new n,n}(),U=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),R=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}();e.tagcloudcomponent=function(n){var e,P=function(n){return function(e){return function(t){return function(r){return function(u){return function(a){return(r-t<.01?1:n(e-t)/n(r-t))*(a-u)+u}}}}}},B=function(n){return n instanceof x.TagCloudModeNone?r.pure(k.applicativeHalogenM)(D.unit):u.bind(k.bindHalogenM)(M.liftAff(k.monadAffHalogenM(M.monadAffAff))(t.getTagCloud(x.tagCloudModeFromF(n))))(function(e){return o.modify_(k.monadStateHalogenM)(function(t){var r={};for(var u in t)({}).hasOwnProperty.call(t,u)&&(r[u]=t[u]);return r.mode=n,r.tagcloud=p.fromMaybe(A.empty)(e),r})})},O=C["app'"](D.unit),W=function(n){return I.fromNullableStr(O.userR)+(w.null(n)?"":"/t:"+n)},q=function(n){return function(e){return function(t){var r=d.map(d.functorArray)(y.uncurry(function(n){return function(e){return function(t){return function(r){return function(u){var o=P(function(n){return L.log(1+n)})(v.toNumber(u))(v.toNumber(e))(v.toNumber(t))(.6)(1),i=w.toLower(r),l=P(a.identity(a.categoryFn))(v.toNumber(u))(v.toNumber(e))(v.toNumber(t))(100)(150),s=_.attr("style")("font-size:"+b.show(b.showNumber)(l)+"%;opacity:"+b.show(b.showNumber)(o));return[T.a([_.href(W(I.encodeTag(r))),I.class_("link tag mr1"),s])([H.text(r)]),I.whenH(!c.null(n))(function(e){return c.notElem(f.eqString)(i)(n)?T.a([_.href(W(w.joinWith("+")(d.map(d.functorArray)(I.encodeTag)(c.cons(i)(n))))),I.class_("link mr2 tag-include")])([H.text("⊕")]):T.a([_.href(W(w.joinWith("+")(d.map(d.functorArray)(I.encodeTag)(c.delete(f.eqString)(i)(n))))),I.class_("link mr2 tag-exclude")])([H.text("⊖")])})]}}}}}(d.map(d.functorArray)(w.toLower)(n))(e)(t))),u=c.sortBy(g.comparing(g.ordString)(function(n){return w.toLower(y.fst(n))})),o=A.toUnfoldable(E.unfoldableArray);return function(n){return c.concat(r(u(o(n))))}}}};return F.mkComponent({initialState:s.const((e=n,{mode:e,tagcloud:A.empty})),render:function(n){if(n.mode instanceof x.TagCloudModeNone)return T.div([I.class_("tag_cloud")])([]);var e=new x.TagCloudModeTop(x.isExpanded(n.mode),200),t=new x.TagCloudModeLowerBound(x.isExpanded(n.mode),5),r=new x.TagCloudModeLowerBound(x.isExpanded(n.mode),20),u=new x.TagCloudModeLowerBound(x.isExpanded(n.mode),2),a=new x.TagCloudModeLowerBound(x.isExpanded(n.mode),10),o=new x.TagCloudModeLowerBound(x.isExpanded(n.mode),1);return T.div([I.class_("tag_cloud mv3")])([T.div([I.class_("tag_cloud_header mb2")])(h.append(h.semigroupArray)(I.ifElseA(x.isRelated(n.mode))(function(e){return[T.button([_.type_(H.isPropButtonType)(i.ButtonButton.value),I.class_("pa1 f7 link hover-blue mr1 b"),S.onClick(function(e){return new U(!x.isExpanded(n.mode))})])([H.text("Related Tags")])]})(function(c){return[T.button([_.type_(H.isPropButtonType)(i.ButtonButton.value),I.class_("pa1 f7 link hover-blue mr1"+m.guard(m.monoidString)(f.eq(x.eqTagCloudModeF)(n.mode)(e))(" b")),_.title("show a cloud of your most-used tags"),S.onClick(function(n){return new R(e)})])([H.text("Top Tags")]),T.button([_.type_(H.isPropButtonType)(i.ButtonButton.value),I.class_("pa1 f7 link hover-blue ml2 "+m.guard(m.monoidString)(f.eq(x.eqTagCloudModeF)(n.mode)(o))(" b")),_.title("show all tags"),S.onClick(function(n){return new R(o)})])([H.text("all")]),H.text("‧"),T.button([_.type_(H.isPropButtonType)(i.ButtonButton.value),I.class_("pa1 f7 link hover-blue"+m.guard(m.monoidString)(f.eq(x.eqTagCloudModeF)(n.mode)(u))(" b")),_.title("show tags with at least 2 bookmarks"),S.onClick(function(n){return new R(u)})])([H.text("2")]),H.text("‧"),T.button([_.type_(H.isPropButtonType)(i.ButtonButton.value),I.class_("pa1 f7 link hover-blue"+m.guard(m.monoidString)(f.eq(x.eqTagCloudModeF)(n.mode)(t))(" b")),_.title("show tags with at least 5 bookmarks"),S.onClick(function(n){return new R(t)})])([H.text("5")]),H.text("‧"),T.button([_.type_(H.isPropButtonType)(i.ButtonButton.value),I.class_("pa1 f7 link hover-blue"+m.guard(m.monoidString)(f.eq(x.eqTagCloudModeF)(n.mode)(a))(" b")),_.title("show tags with at least 10 bookmarks"),S.onClick(function(n){return new R(a)})])([H.text("10")]),H.text("‧"),T.button([_.type_(H.isPropButtonType)(i.ButtonButton.value),I.class_("pa1 f7 link hover-blue"+m.guard(m.monoidString)(f.eq(x.eqTagCloudModeF)(n.mode)(r))(" b")),_.title("show tags with at least 20 bookmarks"),S.onClick(function(n){return new R(r)})])([H.text("20")])]}))([T.button([_.type_(H.isPropButtonType)(i.ButtonButton.value),I.class_("pa1 ml2 f7 link silver hover-blue "),S.onClick(function(e){return new U(!x.isExpanded(n.mode))})])([H.text(x.isExpanded(n.mode)?"hide":"show")])])),I.whenH(x.isExpanded(n.mode))(function(e){var t=p.fromMaybe(1)(l.minimum(g.ordInt)(l.foldableArray)(A.values(n.tagcloud))),r=p.fromMaybe(1)(l.maximum(g.ordInt)(l.foldableArray)(A.values(n.tagcloud)));return T.div([I.class_("tag_cloud_body")])(n.mode instanceof x.TagCloudModeNone?[]:n.mode instanceof x.TagCloudModeRelated?q(n.mode.value1)(t)(r)(n.tagcloud):q([])(t)(r)(n.tagcloud))})])},eval:F.mkEval({handleAction:function n(e){if(e instanceof N)return u.bind(k.bindHalogenM)(o.gets(k.monadStateHalogenM)(function(n){return n.mode}))(function(n){return B(n)});if(e instanceof U)return u.discard(u.discardUnit)(k.bindHalogenM)(o.modify_(k.monadStateHalogenM)(function(n){var t={};for(var r in n)({}).hasOwnProperty.call(n,r)&&(t[r]=n[r]);return t.mode=x.setExpanded(n.mode)(e.value0),t}))(function(){return u.bind(k.bindHalogenM)(o.gets(k.monadStateHalogenM)(function(n){return n.mode}))(function(n){return d.void(k.functorHalogenM)(M.liftAff(k.monadAffHalogenM(M.monadAffAff))(t.updateTagCloudMode(x.tagCloudModeFromF(n))))})});if(e instanceof R)return u.bind(k.bindHalogenM)(o.gets(k.monadStateHalogenM)(function(n){return n.mode}))(function(t){return f.eq(x.eqTagCloudModeF)(t)(e.value0)?n(new U(!x.isExpanded(t))):B(x.setExpanded(e.value0)(!0))});throw new Error("Failed pattern match at Component.TagCloud (line 161, column 3 - line 161, column 69): "+[e.constructor.name])},handleQuery:F.defaultEval.handleQuery,receive:F.defaultEval.receive,initialize:new p.Just(N.value),finalize:F.defaultEval.finalize})})}}(t),function(n){"use strict";n["Control.Applicative.Free"]=n["Control.Applicative.Free"]||{};var e=n["Control.Applicative.Free"],t=n["Control.Applicative"],r=n["Control.Apply"],u=n["Control.Category"],a=n["Data.Either"],o=n["Data.List.NonEmpty"],i=n["Data.List.Types"],c=n["Data.NonEmpty"],f=n["Data.Tuple"],l=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),s=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),d=function(){function n(n,e){this.value0=n,this.value1=e}return n.create=function(e){return function(t){return new n(e,t)}},n}(),v=function(n){return function(e){return new d(n,e)}},p=s.create,m=function(n){return function(e){return function(r){return function(u){return function(a){return function(c){var v,p=n,m=e,g=r,h=u,b=a,w=!1;function y(n,e,r,u,a,v){if(a instanceof l)return w=!0,new f.Tuple(new i.Cons({func:t.pure(n)(a.value0),count:v},e),r);if(a instanceof s)return w=!0,new f.Tuple(new i.Cons({func:u(a.value0),count:v},e),r);if(a instanceof d)return p=n,m=e,g=o.cons(a.value1)(r),h=u,b=a.value0,void(c=v+1|0);throw new Error("Failed pattern match at Control.Applicative.Free (line 102, column 41 - line 105, column 81): "+[a.constructor.name])}for(;!w;)v=y(p,m,g,h,b,c);return v}}}}}},g=function(n){return function(e){return function(t){return function(u){var o,l=n,s=e,d=t,v=!1;function p(n,e,t,o){if(e instanceof i.Nil)return v=!0,new a.Left(o);if(e instanceof i.Cons){var p=r.apply(n.Apply0())(e.value0.func)(o);if(1===e.value0.count)return e.value1 instanceof i.Nil?(v=!0,new a.Left(p)):(l=n,s=e.value1,d=t,void(u=p));if(t instanceof i.Nil)return v=!0,new a.Left(p);if(t instanceof i.Cons)return v=!0,new a.Right(new f.Tuple(new i.Cons({func:p,count:e.value0.count-1|0},e.value1),new c.NonEmpty(t.value0,t.value1)));throw new Error("Failed pattern match at Control.Applicative.Free (line 83, column 11 - line 88, column 50): "+[t.constructor.name])}throw new Error("Failed pattern match at Control.Applicative.Free (line 72, column 3 - line 88, column 50): "+[e.constructor.name])}for(;!v;)o=p(l,s,d,u);return o}}}},h={map:function(n){return function(e){return v(new l(n))(e)}}},b=function(n){return function(e){return function(r){return function(r){var u,o=!1;function i(u){if(u.value1.value0 instanceof l){if((i=g(n)(u.value0)(u.value1.value1)(t.pure(n)(u.value1.value0.value0)))instanceof a.Left)return o=!0,i.value0;if(i instanceof a.Right)return void(r=i.value0);throw new Error("Failed pattern match at Control.Applicative.Free (line 54, column 17 - line 56, column 24): "+[i.constructor.name])}if(u.value1.value0 instanceof s){var i;if((i=g(n)(u.value0)(u.value1.value1)(e(u.value1.value0.value0)))instanceof a.Left)return o=!0,i.value0;if(i instanceof a.Right)return void(r=i.value0);throw new Error("Failed pattern match at Control.Applicative.Free (line 57, column 17 - line 59, column 24): "+[i.constructor.name])}if(!(u.value1.value0 instanceof d))throw new Error("Failed pattern match at Control.Applicative.Free (line 53, column 5 - line 62, column 47): "+[u.value1.value0.constructor.name]);var f=new c.NonEmpty(u.value1.value0.value1,u.value1.value1);r=m(n)(u.value0)(f)(e)(u.value1.value0.value0)(1)}for(;!o;)u=i(r);return u}(new f.Tuple(i.Nil.value,o.singleton(r)))}}},w={apply:function(n){return function(e){return v(n)(e)}},Functor0:function(){return h}},y={pure:l.create,Apply0:function(){return w}};e.retractFreeAp=function(n){return b(n)(u.identity(u.categoryFn))},e.hoistFreeAp=function(n){return b(y)(function(e){return p(n(e))})}}(t),function(n){"use strict";n["Control.Monad.Fork.Class"]=n["Control.Monad.Fork.Class"]||{};var e=n["Control.Monad.Fork.Class"],t=n["Effect.Aff"],r={suspend:t.suspendAff,fork:t.forkAff,join:t.joinFiber,Monad0:function(){return t.monadAff},Functor1:function(){return t.functorFiber}};e.fork=function(n){return n.fork},e.monadForkAff=r}(t),function(n){"use strict";n["Halogen.Aff.Driver.State"]=n["Halogen.Aff.Driver.State"]||{};var e=n["Halogen.Aff.Driver.State"],t=n["Data.Foldable"],r=n["Data.List.Types"],u=n["Data.Map.Internal"],a=n["Data.Maybe"],o=n["Effect.Ref"],i=n["Halogen.Data.Slot"],c=n["Unsafe.Coerce"],f=c.unsafeCoerce,l=c.unsafeCoerce,s=c.unsafeCoerce,d=c.unsafeCoerce;e.mapDriverState=function(n){return function(e){return n(e)}},e.unDriverStateX=l,e.renderStateX=function(n){return function(n){return l(function(e){return s(n(e.rendering))})}},e.renderStateX_=function(n){return function(e){return l(function(r){return t.traverse_(n)(t.foldableMaybe)(e)(r.rendering)})}},e.unRenderStateX=f,e.initDriverState=function(n){return function(e){return function(t){return function(c){return function(){var f=o.new({})(),l=o.new(i.empty)(),s=o.new(i.empty)(),v=o.new(t)(),p=o.new(new a.Just(r.Nil.value))(),m=o.new(new a.Just(r.Nil.value))(),g=o.new(a.Nothing.value)(),h=o.new(1)(),b=o.new(new a.Just(u.empty))(),w=o.new(u.empty)(),y={component:n,state:n.initialState(e),refs:u.empty,children:i.empty,childrenIn:l,childrenOut:s,selfRef:f,handlerRef:v,pendingQueries:p,pendingOuts:m,pendingHandlers:g,rendering:a.Nothing.value,fresh:h,subscriptions:b,forks:w,lifecycleHandlers:c};return o.write(y)(f)(),d(f)}}}}}}(t),function(n){"use strict";n["Halogen.Query.ChildQuery"]=n["Halogen.Query.ChildQuery"]||{};var e=n["Halogen.Query.ChildQuery"],t=n["Unsafe.Coerce"].unsafeCoerce;e.unChildQueryBox=t}(t),function(n){"use strict";(t["Unsafe.Reference"]=t["Unsafe.Reference"]||{}).reallyUnsafeRefEq=function(n){return function(e){return n===e}}}(),function(n){"use strict";n["Unsafe.Reference"]=n["Unsafe.Reference"]||{};var e=n["Unsafe.Reference"],t=n["Unsafe.Reference"].reallyUnsafeRefEq;e.unsafeRefEq=t}(t),function(n){"use strict";n["Halogen.Subscription"]=n["Halogen.Subscription"]||{};var e=n["Halogen.Subscription"],t=n["Control.Bind"],r=n["Data.Array"],u=n["Data.Foldable"],a=n["Data.Functor"],o=n["Data.Semigroup"],i=n.Effect,c=n["Effect.Ref"],f=n["Unsafe.Reference"];e.create=function(){var n=c.new([])();return{emitter:function(e){return function(){return c.modify_(function(n){return o.append(o.semigroupArray)(n)([e])})(n)(),c.modify_(r.deleteBy(f.unsafeRefEq)(e))(n)}},listener:function(e){return t.bind(i.bindEffect)(c.read(n))(u.traverse_(i.applicativeEffect)(u.foldableArray)(function(n){return n(e)}))}}},e.notify=function(n){return function(e){return n(e)}},e.subscribe=function(n){return function(e){return n((t=a.void(i.functorEffect),function(n){return t(e(n))}));var t}},e.unsubscribe=function(n){return n}}(t),function(n){"use strict";n["Halogen.Aff.Driver.Eval"]=n["Halogen.Aff.Driver.Eval"]||{};var e=n["Halogen.Aff.Driver.Eval"],t=n["Control.Applicative"],r=n["Control.Applicative.Free"],u=n["Control.Bind"],a=n["Control.Monad"],o=n["Control.Monad.Fork.Class"],i=n["Control.Monad.Free"],c=n["Control.Parallel"],f=n["Control.Parallel.Class"],l=n["Data.Boolean"],s=n["Data.Coyoneda"],d=n["Data.Either"],v=n["Data.Foldable"],p=n["Data.Function"],m=n["Data.Functor"],g=n["Data.List.Types"],h=n["Data.Map.Internal"],b=n["Data.Maybe"],w=n["Data.Ord"],y=n["Data.Unit"],E=n.Effect,D=n["Effect.Aff"],M=n["Effect.Class"],A=n["Effect.Exception"],C=n["Effect.Ref"],F=n["Halogen.Aff.Driver.State"],H=n["Halogen.Query.ChildQuery"],T=n["Halogen.Query.HalogenM"],S=n["Halogen.Query.HalogenQ"],_=n["Halogen.Query.Input"],k=n["Halogen.Subscription"],L=n["Unsafe.Reference"],x=function(n){return function(e){return u.bind(D.bindAff)(M.liftEffect(D.monadEffectAff)(C.read(n)))(function(t){if(t instanceof b.Nothing)return e;if(t instanceof b.Just)return M.liftEffect(D.monadEffectAff)(C.write(new b.Just(new g.Cons(e,t.value0)))(n));throw new Error("Failed pattern match at Halogen.Aff.Driver.Eval (line 182, column 33 - line 184, column 57): "+[t.constructor.name])})}},I=function(n){return function(e){return u.discard(u.discardUnit)(D.bindAff)(M.liftEffect(D.monadEffectAff)(C.write({initializers:g.Nil.value,finalizers:g.Nil.value})(n)))(function(){return u.bind(D.bindAff)(M.liftEffect(D.monadEffectAff)(e))(function(e){return u.bind(D.bindAff)(M.liftEffect(D.monadEffectAff)(C.read(n)))(function(n){return u.discard(u.discardUnit)(D.bindAff)(v.traverse_(D.applicativeAff)(g.foldableList)(o.fork(o.monadForkAff))(n.finalizers))(function(){return u.discard(u.discardUnit)(D.bindAff)(c.parSequence_(D.parallelAff)(g.foldableList)(n.initializers))(function(){return t.pure(D.applicativeAff)(e)})})})})})}},N=D.runAff_(d.either(A.throwException)(p.const(t.pure(E.applicativeEffect)(y.unit)))),U=function(n){return function(e){return u.bind(D.bindAff)(M.liftEffect(D.monadEffectAff)(C.read(e)))(function(e){return M.liftEffect(D.monadEffectAff)(C["modify'"](function(e){return{state:e+1|0,value:n(e)}})(e.fresh))})}},R=function(n){return function(e){return function(t){return u.bind(D.bindAff)(M.liftEffect(D.monadEffectAff)(C.read(e)))(function(r){return P(n)(e)(r.component.eval(new S.Query(m.map(s.functorCoyoneda)(b.Just.create)(s.liftCoyoneda(t)),p.const(b.Nothing.value))))})}}},P=function n(e){return function(c){return function(s){var d;return i.foldFree(D.monadRecAff)((d=c,function(i){if(i instanceof T.State)return u.bind(D.bindAff)(M.liftEffect(D.monadEffectAff)(C.read(d)))(function(n){var r=i.value0(n.state);if(L.unsafeRefEq(n.state)(r.value1))return t.pure(D.applicativeAff)(r.value0);if(l.otherwise)return u.discard(u.discardUnit)(D.bindAff)(M.liftEffect(D.monadEffectAff)(C.write({component:n.component,state:r.value1,refs:n.refs,children:n.children,childrenIn:n.childrenIn,childrenOut:n.childrenOut,selfRef:n.selfRef,handlerRef:n.handlerRef,pendingQueries:n.pendingQueries,pendingOuts:n.pendingOuts,pendingHandlers:n.pendingHandlers,rendering:n.rendering,fresh:n.fresh,subscriptions:n.subscriptions,forks:n.forks,lifecycleHandlers:n.lifecycleHandlers})(d)))(function(){return u.discard(u.discardUnit)(D.bindAff)(I(n.lifecycleHandlers)(e(n.lifecycleHandlers)(d)))(function(){return t.pure(D.applicativeAff)(r.value0)})});throw new Error("Failed pattern match at Halogen.Aff.Driver.Eval (line 86, column 7 - line 92, column 21): "+[r.constructor.name])});if(i instanceof T.Subscribe)return u.bind(D.bindAff)(U(T.SubscriptionId)(d))(function(n){return u.bind(D.bindAff)(M.liftEffect(D.monadEffectAff)(k.subscribe(i.value0(n))(function(n){return N(B(e)(d)(new _.Action(n)))})))(function(e){return u.bind(D.bindAff)(M.liftEffect(D.monadEffectAff)(C.read(d)))(function(r){return u.discard(u.discardUnit)(D.bindAff)(M.liftEffect(D.monadEffectAff)(C.modify_(m.map(b.functorMaybe)(h.insert(T.ordSubscriptionId)(n)(e)))(r.subscriptions)))(function(){return t.pure(D.applicativeAff)(i.value1(n))})})})});if(i instanceof T.Unsubscribe)return u.discard(u.discardUnit)(D.bindAff)(M.liftEffect(D.monadEffectAff)((c=i.value0,function(n){return function(){var e=C.read(n)(),t=C.read(e.subscriptions)();return v.traverse_(E.applicativeEffect)(v.foldableMaybe)(k.unsubscribe)(u.bindFlipped(b.bindMaybe)(h.lookup(T.ordSubscriptionId)(c))(t))()}})(d)))(function(){return t.pure(D.applicativeAff)(i.value1)});var c,s,p;if(i instanceof T.Lift)return i.value0;if(i instanceof T.ChildQuery)return function(n){return function(t){return u.bind(D.bindAff)(M.liftEffect(D.monadEffectAff)(C.read(n)))(function(n){return H.unChildQueryBox(function(t){return m.map(D.functorAff)(t.value2)(f.sequential(D.parallelAff)(t.value0(D.applicativeParAff)(function(n){return f.parallel(D.parallelAff)(u.bind(D.bindAff)(M.liftEffect(D.monadEffectAff)(C.read(n)))(function(n){return F.unDriverStateX(function(n){return R(e)(n.selfRef)(t.value1)})(n)}))})(n.children)))})(t)})}}(d)(i.value0);if(i instanceof T.Raise)return u.bind(D.bindAff)(M.liftEffect(D.monadEffectAff)(C.read(d)))(function(n){return u.bind(D.bindAff)(M.liftEffect(D.monadEffectAff)(C.read(n.handlerRef)))(function(e){return u.discard(u.discardUnit)(D.bindAff)(x(n.pendingOuts)(e(i.value0)))(function(){return t.pure(D.applicativeAff)(i.value1)})})});if(i instanceof T.Par)return f.sequential(D.parallelAff)(r.retractFreeAp(D.applicativeParAff)(r.hoistFreeAp((s=f.parallel(D.parallelAff),p=n(e)(d),function(n){return s(p(n))}))(i.value0)));if(i instanceof T.Fork)return u.bind(D.bindAff)(U(T.ForkId)(d))(function(r){return u.bind(D.bindAff)(M.liftEffect(D.monadEffectAff)(C.read(d)))(function(c){return u.bind(D.bindAff)(M.liftEffect(D.monadEffectAff)(C.new(!1)))(function(f){return u.bind(D.bindAff)(o.fork(o.monadForkAff)(D.finally(M.liftEffect(D.monadEffectAff)(function(){return C.modify_(h.delete(T.ordForkId)(r))(c.forks)(),C.write(!0)(f)()}))(n(e)(d)(i.value0))))(function(n){return u.discard(u.discardUnit)(D.bindAff)(M.liftEffect(D.monadEffectAff)(a.unlessM(E.monadEffect)(C.read(f))(C.modify_(h.insert(T.ordForkId)(r)(n))(c.forks))))(function(){return t.pure(D.applicativeAff)(i.value1(r))})})})})});if(i instanceof T.Kill)return u.bind(D.bindAff)(M.liftEffect(D.monadEffectAff)(C.read(d)))(function(n){return u.bind(D.bindAff)(M.liftEffect(D.monadEffectAff)(C.read(n.forks)))(function(n){return u.discard(u.discardUnit)(D.bindAff)(v.traverse_(D.applicativeAff)(v.foldableMaybe)(D.killFiber(A.error("Cancelled")))(h.lookup(T.ordForkId)(i.value0)(n)))(function(){return t.pure(D.applicativeAff)(i.value1)})})});if(i instanceof T.GetRef)return u.bind(D.bindAff)(M.liftEffect(D.monadEffectAff)(C.read(d)))(function(n){return t.pure(D.applicativeAff)(i.value1(h.lookup(w.ordString)(i.value0)(n.refs)))});throw new Error("Failed pattern match at Halogen.Aff.Driver.Eval (line 83, column 12 - line 133, column 33): "+[i.constructor.name])}))(s)}}},B=function(n){return function(e){return function(t){if(t instanceof _.RefUpdate)return M.liftEffect(D.monadEffectAff)(p.flip(C.modify_)(e)(F.mapDriverState(function(n){return{component:n.component,state:n.state,refs:h.alter(w.ordString)(p.const(t.value1))(t.value0)(n.refs),children:n.children,childrenIn:n.childrenIn,childrenOut:n.childrenOut,selfRef:n.selfRef,handlerRef:n.handlerRef,pendingQueries:n.pendingQueries,pendingOuts:n.pendingOuts,pendingHandlers:n.pendingHandlers,rendering:n.rendering,fresh:n.fresh,subscriptions:n.subscriptions,forks:n.forks,lifecycleHandlers:n.lifecycleHandlers}})));if(t instanceof _.Action)return u.bind(D.bindAff)(M.liftEffect(D.monadEffectAff)(C.read(e)))(function(r){return P(n)(e)(r.component.eval(new S.Action(t.value0,y.unit)))});throw new Error("Failed pattern match at Halogen.Aff.Driver.Eval (line 52, column 20 - line 58, column 62): "+[t.constructor.name])}}};e.evalF=B,e.evalQ=R,e.evalM=P,e.handleLifecycle=I,e.queueOrRun=x,e.handleAff=N}(t),function(n){"use strict";n["Halogen.Aff.Driver"]=n["Halogen.Aff.Driver"]||{};var e=n["Halogen.Aff.Driver"],t=n["Control.Applicative"],r=n["Control.Bind"],u=n["Control.Category"],a=n["Control.Monad.Fork.Class"],o=n["Control.Monad.Rec.Class"],i=n["Control.Parallel"],c=n["Data.Foldable"],f=n["Data.Function"],l=n["Data.Functor"],s=n["Data.List"],d=n["Data.List.Types"],v=n["Data.Map.Internal"],p=n["Data.Maybe"],m=n["Data.Unit"],g=n.Effect,h=n["Effect.Aff"],b=n["Effect.Class"],w=n["Effect.Console"],y=n["Effect.Exception"],E=n["Effect.Ref"],D=n["Halogen.Aff.Driver.Eval"],M=n["Halogen.Aff.Driver.State"],A=n["Halogen.Component"],C=n["Halogen.Data.Slot"],F=n["Halogen.Query.HalogenQ"],H=n["Halogen.Query.Input"],T=n["Halogen.Subscription"],S=E.new({initializers:d.Nil.value,finalizers:d.Nil.value}),_=function(n){return function(){var e,t=E.read(n)();return E.write(p.Nothing.value)(n)(),c.for_(g.applicativeEffect)(c.foldableMaybe)(t)((e=c.traverse_(h.applicativeAff)(d.foldableList)(a.fork(a.monadForkAff)),function(n){return D.handleAff(e(s.reverse(n)))}))()}};e.runUI=function(n){return function(e){return function(k){var L=function(n){return function(e){return function(t){return A.unComponent(function(u){return function(){var a,o=S(),c=M.initDriverState(u)(t)(e)(o)(),f=E.read(n)();return E.write({initializers:d.Nil.value,finalizers:f.finalizers})(n)(),r.bindFlipped(g.bindEffect)(M.unDriverStateX((a=I(n),function(n){return a(n.selfRef)})))(E.read(c))(),r.bindFlipped(g.bindEffect)(function(n){return function(e){return M.unDriverStateX(function(t){var u=D.evalM(I)(t.selfRef)(t.component.eval(new F.Initialize(m.unit)));return E.modify_(function(n){return{initializers:new d.Cons(r.discard(r.discardUnit)(h.bindAff)(i.parSequence_(h.parallelAff)(d.foldableList)(s.reverse(n.initializers)))(function(){return r.discard(r.discardUnit)(h.bindAff)(u)(function(){return b.liftEffect(h.monadEffectAff)(function(){return _(t.pendingQueries)(),_(t.pendingOuts)()})})}),e),finalizers:n.finalizers}})(n)})}}(n)(f.initializers))(E.read(c))(),c}})}}},x=function(e){return function(u){return function(a){return function(o){return A.unComponentSlot(function(i){return function(){var c=l.map(g.functorEffect)(i.pop)(E.read(a))(),s=function(){if(c instanceof p.Just){E.write(c.value0.value1)(a)();var n=E.read(c.value0.value0)();return M.unDriverStateX(function(n){return function(){var e;return f.flip(E.write)(n.handlerRef)((e=p.maybe(t.pure(h.applicativeAff)(m.unit))(u),function(n){return e(i.output(n))}))(),D.handleAff(D.evalM(I)(n.selfRef)(n.component.eval(new F.Receive(i.input,m.unit))))()}})(n)(),c.value0.value0}if(c instanceof p.Nothing)return L(e)((r=p.maybe(t.pure(h.applicativeAff)(m.unit))(u),function(n){return r(i.output(n))}))(i.input)(i.component)();var r;throw new Error("Failed pattern match at Halogen.Aff.Driver (line 210, column 14 - line 219, column 98): "+[c.constructor.name])}(),d=l.map(g.functorEffect)(function(n){return p.isJust(i.get(n))})(E.read(o))();return t.when(g.applicativeEffect)(d)(w.warn("Halogen: Duplicate slot address was detected during rendering, unexpected results may occur"))(),E.modify_(i.set(s))(o)(),r.bind(g.bindEffect)(E.read(s))(M.renderStateX(g.functorEffect)(function(e){if(e instanceof p.Nothing)return y.throw("Halogen internal error: child was not initialized in renderChild");if(e instanceof p.Just)return t.pure(g.applicativeEffect)(n.renderChild(e.value0));throw new Error("Failed pattern match at Halogen.Aff.Driver (line 224, column 37 - line 226, column 50): "+[e.constructor.name])}))()}})}}}},I=function e(r){return function(i){return function(){var v=E.read(i)(),b=l.map(g.functorEffect)(p.isNothing)(E.read(v.pendingHandlers))();t.when(g.applicativeEffect)(b)(E.write(new p.Just(d.Nil.value))(v.pendingHandlers))(),E.write(C.empty)(v.childrenOut)(),E.write(v.children)(v.childrenIn)();var w,y,A,F,T=u.identity(u.categoryFn)(v.selfRef),S=u.identity(u.categoryFn)(v.pendingQueries),_=u.identity(u.categoryFn)(v.pendingHandlers),k=(w=D.queueOrRun(_),y=l.void(h.functorAff),A=D.evalF(e)(T),function(n){return w(y(A(n)))}),L=(F=D.queueOrRun(S),function(n){return F(k(H.Action.create(n)))}),I=n.render(function(n){return D.handleAff(k(n))})(x(r)(L)(v.childrenIn)(v.childrenOut))(v.component.render(v.state))(v.rendering)(),U=E.read(v.childrenOut)(),R=E.read(v.childrenIn)();return C.foreachSlot(g.applicativeEffect)(R)(function(e){return function(){var t=E.read(e)();return M.renderStateX_(g.applicativeEffect)(n.removeChild)(t)(),N(r)(t)()}})(),f.flip(E.modify_)(v.selfRef)(M.mapDriverState(function(n){return{component:n.component,state:n.state,refs:n.refs,children:U,childrenIn:n.childrenIn,childrenOut:n.childrenOut,selfRef:n.selfRef,handlerRef:n.handlerRef,pendingQueries:n.pendingQueries,pendingOuts:n.pendingOuts,pendingHandlers:n.pendingHandlers,rendering:new p.Just(I),fresh:n.fresh,subscriptions:n.subscriptions,forks:n.forks,lifecycleHandlers:n.lifecycleHandlers}}))(),t.when(g.applicativeEffect)(b)(f.flip(o.tailRecM(o.monadRecEffect))(m.unit)(function(n){return function(){var n,e=E.read(_)();E.write(new p.Just(d.Nil.value))(_)(),c.traverse_(g.applicativeEffect)(c.foldableMaybe)((n=c.traverse_(h.applicativeAff)(d.foldableList)(a.fork(a.monadForkAff)),function(e){return D.handleAff(n(s.reverse(e)))}))(e)();var t=E.read(_)();return p.maybe(!1)(s.null)(t)?l.voidLeft(g.functorEffect)(E.write(p.Nothing.value)(_))(new o.Done(m.unit))():new o.Loop(m.unit)}}))()}}},N=function n(e){return M.unDriverStateX(function(t){return function(){var u;(u=t,function(){var n;return r.bindFlipped(g.bindEffect)(c.traverse_(g.applicativeEffect)(c.foldableMaybe)(c.traverse_(g.applicativeEffect)(v.foldableMap)(T.unsubscribe)))(E.read(u.subscriptions))(),E.write(p.Nothing.value)(u.subscriptions)(),r.bindFlipped(g.bindEffect)(c.traverse_(g.applicativeEffect)(v.foldableMap)((n=h.killFiber(y.error("finalized")),function(e){return D.handleAff(n(e))})))(E.read(u.forks))(),E.write(v.empty)(u.forks)()})();var a=D.evalM(I)(t.selfRef)(t.component.eval(new F.Finalize(m.unit)));return E.modify_(function(n){return{initializers:n.initializers,finalizers:new d.Cons(a,n.finalizers)}})(e)(),C.foreachSlot(g.applicativeEffect)(t.children)(function(t){return function(){var r=E.read(t)();return n(e)(r)()}})()}})},U=function(n){return function(e){return function(u){return r.bind(h.bindAff)(b.liftEffect(h.monadEffectAff)(E.read(n)))(function(n){return n?t.pure(h.applicativeAff)(p.Nothing.value):D.evalQ(I)(e)(u)})}}},R=function(e){return function(t){return function(r){return D.handleLifecycle(t)(function(){return E.read(e)()?m.unit:(E.write(!0)(e)(),N(t)(r)(),M.unDriverStateX(function(e){return function(){var t=b.liftEffect(b.monadEffectEffect)(E.read(e.selfRef))();return c.for_(g.applicativeEffect)(c.foldableMaybe)(t.rendering)(n.dispose)()}})(r)())})}}};return r.bind(h.bindAff)(b.liftEffect(h.monadEffectAff)(S))(function(n){return r.bind(h.bindAff)(b.liftEffect(h.monadEffectAff)(E.new(!1)))(function(u){return D.handleLifecycle(n)(function(){var a,o,i=T.create(),c=r.bindFlipped(g.bindEffect)(E.read)(L(n)((a=b.liftEffect(h.monadEffectAff),o=T.notify(i.listener),function(n){return a(o(n))}))(k)(e))();return M.unDriverStateX(function(e){return t.pure(g.applicativeEffect)({query:U(u)(e.selfRef),messages:i.emitter,dispose:R(u)(n)(c)})})(c)()})})})}}}}(t),function(n){"use strict";(t["Web.DOM.ParentNode"]=t["Web.DOM.ParentNode"]||{})._querySelector=function(n){return function(e){return function(){return e.querySelector(n)}}}}(),function(n){"use strict";n["Web.DOM.ParentNode"]=n["Web.DOM.ParentNode"]||{};var e=n["Web.DOM.ParentNode"],t=n["Web.DOM.ParentNode"],r=n["Data.Functor"],u=n["Data.Nullable"],a=n.Effect;e.querySelector=function(n){var e=r.map(a.functorEffect)(u.toMaybe),o=t._querySelector(n);return function(n){return e(o(n))}}}(t),function(n){"use strict";n["Halogen.Aff.Util"]=n["Halogen.Aff.Util"]||{};var e=n["Halogen.Aff.Util"],t=n["Control.Applicative"],r=n["Control.Bind"],u=n["Data.Either"],a=n["Data.Function"],o=n["Data.Maybe"],i=n["Data.Unit"],c=n.Effect,f=n["Effect.Aff"],l=n["Effect.Class"],s=n["Effect.Exception"],d=n["Web.DOM.ParentNode"],v=n["Web.HTML"],p=n["Web.HTML.HTMLDocument"],m=n["Web.HTML.HTMLElement"],g=n["Web.HTML.Window"],h=f.runAff_(u.either(s.throwException)(a.const(t.pure(c.applicativeEffect)(i.unit))));e.selectElement=function(n){return r.bind(f.bindAff)(l.liftEffect(f.monadEffectAff)(r.bindFlipped(c.bindEffect)(r.composeKleisliFlipped(c.bindEffect)((e=d.querySelector(n),function(n){return e(p.toParentNode(n))}))(g.document))(v.window)))(function(n){return t.pure(f.applicativeAff)(r.bindFlipped(o.bindMaybe)(m.fromElement)(n))});var e},e.runHalogenAff=h}(t),function(n){"use strict";(t["Web.DOM.Element"]=t["Web.DOM.Element"]||{}).setAttribute=function(n){return function(e){return function(t){return function(){t.setAttribute(n,e)}}}}}(),function(n){"use strict";n["Web.DOM.Element"]=n["Web.DOM.Element"]||{};var e=n["Web.DOM.Element"],t=n["Web.DOM.Element"],r=n["Unsafe.Coerce"].unsafeCoerce;e.toNode=r,e.setAttribute=t.setAttribute}(t),function(n){"use strict";n["Halogen.VDom.DOM"]=n["Halogen.VDom.DOM"]||{};var e=n["Halogen.VDom.DOM"],t=n["Data.Array"],r=n["Data.Boolean"],u=n["Data.Maybe"],a=n["Data.Nullable"],o=n["Data.Tuple"],i=n["Halogen.VDom.Machine"],c=n["Halogen.VDom.Types"],f=n["Halogen.VDom.Util"],l=n["Web.DOM.Element"],s=function(n){return i.halt(n.widget)},d=function n(e,t){if(t instanceof c.Grafted)return n(e,c.runGraft(t.value0));if(t instanceof c.Widget){var r=i.step(e.widget,t.value0);return i.unStep(function(t){return i.mkStep(new i.Step(t.value0,{build:e.build,widget:r},n,s))})(r)}return s(e),e.build(t)},v=function(n){var e=f.parentNode(n.node);return f.removeChild(n.node,e)},p=function n(e,t){if(t instanceof c.Grafted)return n(e,c.runGraft(t.value0));if(t instanceof c.Text){if(e.value===t.value0)return i.mkStep(new i.Step(e.node,e,n,v));if(r.otherwise){var u={build:e.build,node:e.node,value:t.value0};return f.setTextContent(t.value0,e.node),i.mkStep(new i.Step(e.node,u,n,v))}}return v(e),e.build(t)},m=function(n){var e=f.parentNode(n.node);return f.removeChild(n.node,e),f.forInE(n.children,function(n,e){return i.halt(e)}),i.halt(n.attrs)},g=function(n){var e=f.parentNode(n.node);return f.removeChild(n.node,e),f.forEachE(n.children,i.halt),i.halt(n.attrs)},h=function(n,e,t,r){return!(e!==r)&&(n instanceof u.Just&&t instanceof u.Just&&n.value0===t.value0||n instanceof u.Nothing&&t instanceof u.Nothing)},b=function n(e,r){if(r instanceof c.Grafted)return n(e,c.runGraft(r.value0));if(r instanceof c.Elem&&h(e.ns,e.name,r.value0,r.value1)){var u=t.length(r.value3);if(0===t.length(e.children)&&0===u){var a=i.step(e.attrs,r.value2),o={build:e.build,node:e.node,attrs:a,ns:r.value0,name:r.value1,children:e.children};return i.mkStep(new i.Step(e.node,o,n,g))}var l=f.diffWithIxE(e.children,r.value3,function(n,t,r){var u=i.step(t,r);return f.insertChildIx(n,i.extract(u),e.node),u},function(n,e){return i.halt(e)},function(n,t){var r=e.build(t);return f.insertChildIx(n,i.extract(r),e.node),r});a=i.step(e.attrs,r.value2),o={build:e.build,node:e.node,attrs:a,ns:r.value0,name:r.value1,children:l};return i.mkStep(new i.Step(e.node,o,n,g))}return g(e),e.build(r)},w=function n(e,r){if(r instanceof c.Grafted)return n(e,c.runGraft(r.value0));if(r instanceof c.Keyed&&h(e.ns,e.name,r.value0,r.value1)){var u=t.length(r.value3);if(0===e.length&&0===u){var a=i.step(e.attrs,r.value2),l={build:e.build,node:e.node,attrs:a,ns:r.value0,name:r.value1,children:e.children,length:0};return i.mkStep(new i.Step(e.node,l,n,m))}var s=f.diffWithKeyAndIxE(e.children,r.value3,o.fst,function(n,t,r,u){var a=i.step(r,u.value1);return f.insertChildIx(t,i.extract(a),e.node),a},function(n,e){return i.halt(e)},function(n,t,r){var u=e.build(r.value1);return f.insertChildIx(t,i.extract(u),e.node),u});a=i.step(e.attrs,r.value2),l={build:e.build,node:e.node,attrs:a,ns:r.value0,name:r.value1,children:s,length:u};return i.mkStep(new i.Step(e.node,l,n,m))}return m(e),e.build(r)};e.buildVDom=function(n){return function e(r){if(r instanceof c.Text)return function(n,e,t){var r=f.createTextNode(t,n.document),u={build:e,node:r,value:t};return i.mkStep(new i.Step(r,u,p,v))}(n,e,r.value0);if(r instanceof c.Elem)return function(n,e,t,r,u,o){var c=f.createElement(a.toNullable(t),r,n.document),s=l.toNode(c),d=f.forE(o,function(n,t){var r=e(t);return f.insertChildIx(n,i.extract(r),s),r}),v=n.buildAttributes(c)(u),p={build:e,node:s,attrs:v,ns:t,name:r,children:d};return i.mkStep(new i.Step(s,p,b,g))}(n,e,r.value0,r.value1,r.value2,r.value3);if(r instanceof c.Keyed)return function(n,e,r,u,c,s){var d=f.createElement(a.toNullable(r),u,n.document),v=l.toNode(d),p=f.strMapWithIxE(s,o.fst,function(n,t,r){var u=e(r.value1);return f.insertChildIx(t,i.extract(u),v),u}),g=n.buildAttributes(d)(c),h={build:e,node:v,attrs:g,ns:r,name:u,children:p,length:t.length(s)};return i.mkStep(new i.Step(v,h,w,m))}(n,e,r.value0,r.value1,r.value2,r.value3);if(r instanceof c.Widget)return function(n,e,t){var r=n.buildWidget(n)(t);return i.unStep(function(n){return i.mkStep(new i.Step(n.value0,{build:e,widget:r},d,s))})(r)}(n,e,r.value0);if(r instanceof c.Grafted)return e(c.runGraft(r.value0));throw new Error("Failed pattern match at Halogen.VDom.DOM (line 58, column 27 - line 63, column 52): "+[r.constructor.name])}}}(t),function(n){"use strict";n["Halogen.VDom.Thunk"]=n["Halogen.VDom.Thunk"]||{};var e=n["Halogen.VDom.Thunk"],t=n["Halogen.VDom.DOM"],r=n["Halogen.VDom.Machine"],u=n["Halogen.VDom.Util"],a=(function(){function n(n,e,t,r){this.value0=n,this.value1=e,this.value2=t,this.value3=r}n.create=function(e){return function(t){return function(r){return function(u){return new n(e,t,r,u)}}}}}(),function(n){return n.value2(n.value3)});e.buildThunk=function(n){var e=function(n){return r.halt(n.vdom)},o=function t(o,i){var c,f;if(c=o.thunk,f=i,u.refEq(c.value0,f.value0)&&u.refEq(c.value1,f.value1)&&c.value1(c.value3,f.value3))return r.mkStep(new r.Step(r.extract(o.vdom),o,t,e));var l=r.step(o.vdom,n(a(i)));return r.mkStep(new r.Step(r.extract(l),{vdom:l,thunk:i},t,e))};return function(u){return function(i){var c=t.buildVDom(u)(n(a(i)));return r.mkStep(new r.Step(r.extract(c),{thunk:i,vdom:c},o,e))}}}}(t),function(n){"use strict";var e=function(n){return function(e){return function(){return e[n]}}};n._parentNode=e("parentNode"),n._nextSibling=e("nextSibling"),n.insertBefore=function(n){return function(e){return function(t){return function(){t.insertBefore(n,e)}}}},n.appendChild=function(n){return function(e){return function(){e.appendChild(n)}}},n.removeChild=function(n){return function(e){return function(){e.removeChild(n)}}}}(t["Web.DOM.Node"]=t["Web.DOM.Node"]||{}),function(n){"use strict";n["Web.DOM.Node"]=n["Web.DOM.Node"]||{};var e,t,r=n["Web.DOM.Node"],u=n["Web.DOM.Node"],a=n["Data.Functor"],o=n["Data.Nullable"],i=n.Effect,c=(e=a.map(i.functorEffect)(o.toMaybe),function(n){return e(u._parentNode(n))}),f=(t=a.map(i.functorEffect)(o.toMaybe),function(n){return t(u._nextSibling(n))});r.parentNode=c,r.nextSibling=f,r.insertBefore=u.insertBefore,r.appendChild=u.appendChild,r.removeChild=u.removeChild}(t),function(n){"use strict";n["Halogen.VDom.Driver"]=n["Halogen.VDom.Driver"]||{};var e=n["Halogen.VDom.Driver"],t=n["Control.Applicative"],r=n["Control.Bind"],u=n["Control.Category"],a=n["Data.Foldable"],o=n["Data.Functor"],i=n["Data.HeytingAlgebra"],c=n["Data.Maybe"],f=n["Data.Newtype"],l=n["Data.Unit"],s=n.Effect,d=n["Effect.Aff"],v=n["Effect.Class"],p=n["Effect.Ref"],m=n["Halogen.Aff.Driver"],g=n["Halogen.Aff.Driver.State"],h=n["Halogen.Component"],b=n["Halogen.VDom.DOM"],w=n["Halogen.VDom.DOM.Prop"],y=n["Halogen.VDom.Machine"],E=n["Halogen.VDom.Thunk"],D=n["Unsafe.Reference"],M=n["Web.DOM.Node"],A=n["Web.HTML"],C=n["Web.HTML.HTMLDocument"],F=n["Web.HTML.HTMLElement"],H=n["Web.HTML.Window"],T=function(n){return function(){var e=M.parentNode(n.node)();return a.traverse_(s.applicativeEffect)(a.foldableMaybe)(function(e){return M.removeChild(n.node)(e)})(e)()}},S=function(n){return function(e){return{render:function(r){return function(u){return function(a){return function(d){if(d instanceof c.Nothing)return function(){var t=p.new(u)(),i=function(n){return function(e){return function(t){var r=g.unRenderStateX(function(n){return n.node}),u=function(n){return n instanceof c.Just?y.halt(n.value0):l.unit};return{buildWidget:function(n){var t=E.buildThunk(f.unwrap())(n),a=function(n){var t=p.read(e)()(n)(),a=r(t);return y.mkStep(new y.Step(a,c.Nothing.value,i,u))},o=function(n){if(n instanceof h.ComponentSlot)return a(n.value0);if(n instanceof h.ThunkSlot){var e=t(n.value0);return y.mkStep(new y.Step(y.extract(e),new c.Just(e),i,u))}throw new Error("Failed pattern match at Halogen.VDom.Driver (line 85, column 7 - line 90, column 75): "+[n.constructor.name])},i=function n(e,t){if(e instanceof c.Just){if(t instanceof h.ComponentSlot)return y.halt(e.value0),a(t.value0);if(t instanceof h.ThunkSlot){var r=y.step(e.value0,t.value0);return y.mkStep(new y.Step(y.extract(r),new c.Just(r),n,u))}throw new Error("Failed pattern match at Halogen.VDom.Driver (line 98, column 22 - line 104, column 79): "+[t.constructor.name])}return o(t)};return o},buildAttributes:w.buildProp(n),document:t}}}}(r)(t)(n),d=b.buildVDom(i)(a),v=y.extract(d);return o.void(s.functorEffect)(M.appendChild(v)(F.toNode(e)))(),{machine:d,node:v,renderChildRef:t}};if(d instanceof c.Just)return function(){p.write(u)(d.value0.renderChildRef)();var n=M.parentNode(d.value0.node)(),e=M.nextSibling(d.value0.node)(),r=y.step(d.value0.machine,a),f=y.extract(r);return t.when(s.applicativeEffect)(i.not(i.heytingAlgebraFunction(i.heytingAlgebraFunction(i.heytingAlgebraBoolean)))(D.unsafeRefEq)(d.value0.node)(f))(function(n){return function(e){return function(r){return e instanceof c.Just&&r instanceof c.Just?o.void(s.functorEffect)(M.insertBefore(n)(e.value0)(r.value0)):e instanceof c.Nothing&&r instanceof c.Just?o.void(s.functorEffect)(M.appendChild(n)(r.value0)):t.pure(s.applicativeEffect)(l.unit)}}}(f)(e)(n))(),{machine:r,node:f,renderChildRef:d.value0.renderChildRef}};throw new Error("Failed pattern match at Halogen.VDom.Driver (line 159, column 5 - line 175, column 80): "+[d.constructor.name])}}}},renderChild:u.identity(u.categoryFn),removeChild:T,dispose:T}}};e.runUI=function(n){return function(e){return function(t){return r.bind(d.bindAff)(v.liftEffect(d.monadEffectAff)(o.map(s.functorEffect)(C.toDocument)(r.bindFlipped(s.bindEffect)(H.document)(A.window))))(function(r){return m.runUI(S(r)(t))(n)(e)})}}}}(t),function(n){"use strict";(t["Main"]=t["Main"]||{})._mainImpl=function(){return window.PS=t}}(),function(n){"use strict";n.Main=n.Main||{};var e=n.Main,t=n.Main,r=n.App,u=n["Component.AccountSettings"],a=n["Component.Add"],o=n["Component.BList"],i=n["Component.NList"],c=n["Component.NNote"],f=n["Component.TagCloud"],l=n["Control.Bind"],s=n["Data.Foldable"],d=n["Data.Functor"],v=n["Data.Unit"],p=n.Effect,m=n["Effect.Aff"],g=n["Effect.Class"],h=n["Halogen.Aff.Util"],b=n["Halogen.VDom.Driver"],w=n.Model,y=n["Web.DOM.Element"],E=n["Web.Event.Event"],D=n["Web.HTML.HTMLElement"],M=l.bind(m.bindAff)(h.selectElement("#content"))(s.traverse_(m.applicativeAff)(s.foldableMaybe)(function(n){return g.liftEffect(m.monadEffectAff)(y.setAttribute("view-rendered")("")(D.toElement(n)))})),A=t._mainImpl;e.main=A,e.logoutE=function(n){return l.bindFlipped(p.bindEffect)((e=d.void(p.functorEffect),function(n){return e(m.launchAff(r.logout(n)))}))(E.preventDefault(n));var e},e.renderBookmarks=function(n){return function(e){return h.runHalogenAff(l.bind(m.bindAff)(h.selectElement(n))(s.traverse_(m.applicativeAff)(s.foldableMaybe)(function(n){return l.discard(l.discardUnit)(m.bindAff)(d.void(m.functorAff)(b.runUI(o.blist(e))(v.unit)(n)))(function(){return M})})))}},e.renderTagCloud=function(n){return function(e){return h.runHalogenAff(l.bind(m.bindAff)(h.selectElement(n))(s.traverse_(m.applicativeAff)(s.foldableMaybe)(function(n){return d.void(m.functorAff)(b.runUI(f.tagcloudcomponent(w.tagCloudModeToF(e)))(v.unit)(n))})))}},e.renderAddForm=function(n){return function(e){return h.runHalogenAff(l.bind(m.bindAff)(h.selectElement(n))(s.traverse_(m.applicativeAff)(s.foldableMaybe)(function(n){return l.discard(l.discardUnit)(m.bindAff)(d.void(m.functorAff)(b.runUI(a.addbmark(e))(v.unit)(n)))(function(){return M})})))}},e.renderNotes=function(n){return function(e){return h.runHalogenAff(l.bind(m.bindAff)(h.selectElement(n))(s.traverse_(m.applicativeAff)(s.foldableMaybe)(function(n){return l.discard(l.discardUnit)(m.bindAff)(d.void(m.functorAff)(b.runUI(i.nlist(e))(v.unit)(n)))(function(){return M})})))}},e.renderNote=function(n){return function(e){return h.runHalogenAff(l.bind(m.bindAff)(h.selectElement(n))(s.traverse_(m.applicativeAff)(s.foldableMaybe)(function(n){return l.discard(l.discardUnit)(m.bindAff)(d.void(m.functorAff)(b.runUI(c.nnote(e))(v.unit)(n)))(function(){return M})})))}},e.renderAccountSettings=function(n){return function(e){return h.runHalogenAff(l.bind(m.bindAff)(h.selectElement(n))(s.traverse_(m.applicativeAff)(s.foldableMaybe)(function(n){return l.discard(l.discardUnit)(m.bindAff)(d.void(m.functorAff)(b.runUI(u.usetting(e))(v.unit)(n)))(function(){return M})})))}},e.viewRendered=M,e._mainImpl=t._mainImpl}(t),t.Main.main();
+},{"moment":"a2Bw","marked":"F7mU","dompurify":"ufcH","process":"pBGv"}]},{},["C4Nx"], null)
+//# sourceMappingURL=/static/js/app.min.js.map
diff --git a/static/js/app.min.js.gz b/static/js/app.min.js.gz
Binary files a/static/js/app.min.js.gz and b/static/js/app.min.js.gz differ
diff --git a/static/js/app.min.js.map b/static/js/app.min.js.map
new file mode 100644
--- /dev/null
+++ b/static/js/app.min.js.map
@@ -0,0 +1,1 @@
+{"version":3,"sources":["../node_modules/moment/moment.js","../node_modules/marked/lib/marked.js","../src/purify.js","../src/utils.js","../src/tags.js","../src/attrs.js","../src/regexp.js","../node_modules/process/browser.js","bundle.js"],"names":["global","factory","exports","module","define","amd","globalThis","self","marked","_defineProperties","target","props","i","length","descriptor","enumerable","configurable","writable","Object","defineProperty","key","_arrayLikeToArray","arr","len","arr2","Array","_createForOfIteratorHelperLoose","o","allowArrayLike","it","Symbol","iterator","call","next","bind","isArray","_unsupportedIterableToArray","minLen","n","prototype","toString","slice","constructor","name","from","test","done","value","TypeError","defaults$5","getDefaults$1","baseUrl","breaks","extensions","gfm","headerIds","headerPrefix","highlight","langPrefix","mangle","pedantic","renderer","sanitize","sanitizer","silent","smartLists","smartypants","tokenizer","walkTokens","xhtml","defaults","getDefaults","changeDefaults","changeDefaults$1","newDefaults","escapeTest","escapeReplace","escapeTestNoEncode","escapeReplaceNoEncode","escapeReplacements","getEscapeReplacement","ch","unescapeTest","unescape$1","html","replace","_","toLowerCase","charAt","String","fromCharCode","parseInt","substring","caret","nonWordAndColonTest","originIndependentUrl","baseUrls","justDomain","protocol","domain","resolveUrl","base","href","rtrim$1","relativeBase","indexOf","str","c","invert","l","suffLen","currChar","substr","helpers","escape$2","encode","edit$1","regex","opt","source","obj","val","getRegex","RegExp","cleanUrl$1","prot","decodeURIComponent","e","encodeURI","exec","merge$2","arguments","hasOwnProperty","splitCells$1","tableRow","count","row","cells","match","offset","escaped","curr","split","trim","shift","pop","splice","push","findClosingBracket$1","b","level","checkSanitizeDeprecation$1","console","warn","repeatString$1","pattern","result","defaults$4","rtrim","splitCells","_escape","findClosingBracket","outputLink","cap","link","raw","lexer","title","text","state","inLink","token","type","tokens","inlineTokens","Tokenizer_1","Tokenizer","options","_proto","space","src","rules","block","newline","code","codeBlockStyle","fences","indentCodeCompensation","matchIndentToCode","indentToCode","map","node","matchIndentInNode","join","lang","heading","trimmed","depth","inline","hr","blockquote","blockTokens","list","istask","ischecked","indent","blankLine","endsWithBlankLine","line","lines","itemContents","bull","isordered","ordered","start","loose","items","itemRegex","trimLeft","search","nextBulletRegex","Math","min","task","checked","trimRight","top","some","t","pre","def","tag","table","item","header","align","rows","j","k","lheading","paragraph","escape","inRawBlock","trimmedUrl","rtrimSlash","lastParenIndex","linkLen","_escapes","reflink","links","nolink","emStrong","maskedSrc","prevChar","lDelim","nextChar","punctuation","lLength","rDelim","rLength","delimTotal","midDelimTotal","endReg","rDelimAst","rDelimUnd","lastIndex","_text","index","codespan","hasNonSpaceChars","hasSpaceCharsOnBothEnds","br","del","autolink","url","prevCapZero","_backpedal","inlineText","noopTest","edit","merge$1","block$1","_paragraph","_label","_title","bullet","listItemStart","_tag","_comment","normal","inline$1","reflinkSearch","_punctuation","blockSkip","escapedEmSt","_scheme","_email","_attribute","_href","strong","middle","endAst","endUnd","em","_extended_email","Tokenizer$1","defaults$3","repeatString","out","charCodeAt","random","Lexer_1","Lexer","create","inlineQueue","lex","lexInline","Constructor","protoProps","staticProps","_this","lastToken","cutSrc","lastParagraphClipped","extTokenizer","startBlock","startIndex","Infinity","tempSrc","tempStart","forEach","getStartIndex","errMsg","error","Error","_this2","keepPrevChar","keys","includes","lastIndexOf","startInline","get","defaults$2","cleanUrl","escape$1","Renderer_1","Renderer","_code","infostring","quote","_html","slugger","slug","body","listitem","checkbox","tablerow","content","tablecell","flags","image","TextRenderer_1","TextRenderer","Slugger_1","Slugger","seen","serialize","getNextSafeSlug","originalSlug","isDryRun","occurenceAccumulator","dryrun","Renderer$1","TextRenderer$1","Slugger$1","defaults$1","unescape","Parser","textRenderer","parse","parser","parseInline","l2","l3","cell","itemBody","ret","renderers","unshift","merge","checkSanitizeDeprecation","callback","err","pending","setTimeout","_tokens","message","marked_1","setOptions","use","_len","args","_key","opts","hasExtensions","apply","concat","childTokens","pack","ext","prevRenderer","_len2","_key2","_loop","prop","_len3","_key3","_loop2","prevTokenizer","_len4","_key4","_loop3","_step","_step2","_iterator2","_step3","_iterator3","_step4","_iterator4","_cell","_iterator","setPrototypeOf","isFrozen","getPrototypeOf","getOwnPropertyDescriptor","freeze","seal","Reflect","construct","fun","thisValue","x","Func","func","arrayForEach","unapply","arrayPop","arrayPush","stringToLowerCase","stringMatch","stringReplace","stringIndexOf","stringTrim","regExpTest","typeErrorCreate","thisArg","addToSet","set","array","element","lcElement","clone","object","newObject","property","lookupGetter","desc","fallbackValue","svg","svgFilters","svgDisallowed","mathMl","mathMlDisallowed","xml","MUSTACHE_EXPR","ERB_EXPR","DATA_ATTR","ARIA_ATTR","IS_ALLOWED_URI","IS_SCRIPT_OR_DATA","ATTR_WHITESPACE","getGlobal","window","_createTrustedTypesPolicy","trustedTypes","document","createPolicy","suffix","currentScript","hasAttribute","getAttribute","policyName","createDOMPurify","DOMPurify","root","version","VERSION","removed","nodeType","isSupported","originalDocument","DocumentFragment","HTMLTemplateElement","Node","Element","NodeFilter","NamedNodeMap","MozNamedAttrMap","Text","Comment","DOMParser","ElementPrototype","cloneNode","getNextSibling","getChildNodes","getParentNode","template","createElement","ownerDocument","trustedTypesPolicy","emptyHTML","RETURN_TRUSTED_TYPE","createHTML","implementation","createNodeIterator","createDocumentFragment","getElementsByTagName","importNode","documentMode","hooks","createHTMLDocument","EXPRESSIONS","ALLOWED_TAGS","DEFAULT_ALLOWED_TAGS","TAGS","ALLOWED_ATTR","DEFAULT_ALLOWED_ATTR","ATTRS","FORBID_TAGS","FORBID_ATTR","ALLOW_ARIA_ATTR","ALLOW_DATA_ATTR","ALLOW_UNKNOWN_PROTOCOLS","SAFE_FOR_TEMPLATES","WHOLE_DOCUMENT","SET_CONFIG","FORCE_BODY","RETURN_DOM","RETURN_DOM_FRAGMENT","RETURN_DOM_IMPORT","SANITIZE_DOM","KEEP_CONTENT","IN_PLACE","USE_PROFILES","FORBID_CONTENTS","DEFAULT_FORBID_CONTENTS","DATA_URI_TAGS","DEFAULT_DATA_URI_TAGS","URI_SAFE_ATTRIBUTES","DEFAULT_URI_SAFE_ATTRIBUTES","MATHML_NAMESPACE","SVG_NAMESPACE","HTML_NAMESPACE","NAMESPACE","IS_EMPTY_INPUT","PARSER_MEDIA_TYPE","SUPPORTED_PARSER_MEDIA_TYPES","transformCaseFunc","CONFIG","formElement","_parseConfig","cfg","ADD_URI_SAFE_ATTR","ADD_DATA_URI_TAGS","ALLOWED_URI_REGEXP","ADD_TAGS","ADD_ATTR","tbody","MATHML_TEXT_INTEGRATION_POINTS","HTML_INTEGRATION_POINTS","ALL_SVG_TAGS","ALL_MATHML_TAGS","_checkValidNamespace","_forceRemove","parentNode","removeChild","outerHTML","remove","_removeAttribute","getAttributeNode","removeAttribute","setAttribute","_initDocument","dirty","doc","leadingWhitespace","matches","dirtyPayload","parseFromString","documentElement","createDocument","innerHTML","insertBefore","createTextNode","childNodes","_createIterator","SHOW_ELEMENT","SHOW_COMMENT","SHOW_TEXT","_isNode","nodeName","_executeHook","entryPoint","currentNode","data","hook","_sanitizeElements","elm","_isClobbered","textContent","attributes","namespaceURI","tagName","firstElementChild","childCount","parent","parentTagName","Boolean","commonSvgAndHTMLElements","_isValidAttribute","lcTag","lcName","_sanitizeAttributes","attr","hookEvent","attrName","attrValue","keepAttr","forceKeepAttr","undefined","setAttributeNS","_sanitizeShadowDOM","fragment","shadowNode","shadowIterator","nextNode","importedNode","oldNode","returnNode","toStaticHTML","appendChild","firstChild","nodeIterator","serializedHTML","setConfig","clearConfig","isValidAttribute","addHook","hookFunction","removeHook","removeHooks","removeAllHooks","cachedSetTimeout","cachedClearTimeout","process","defaultSetTimout","defaultClearTimeout","runTimeout","runClearTimeout","marker","clearTimeout","currentQueue","queue","draining","queueIndex","cleanUpNextTick","drainQueue","timeout","run","Item","noop","nextTick","env","argv","versions","on","addListener","once","off","removeListener","removeAllListeners","emit","prependListener","prependOnceListener","listeners","binding","cwd","chdir","dir","umask","PS","platformSpecific","_ajax","require","newXHR","XMLHttpRequest","fixupUrl","getResponse","xhr","response","nodejsBaseUrl","urllib","u","hostname","format","timeoutErrorMessageIdent","requestFailedMessageIdent","mkHeader","errback","fixedUrl","open","method","username","password","headers","setRequestHeader","field","onerror","msgIdent","ontimeout","onload","status","statusText","getAllResponseHeaders","filter","responseType","withCredentials","send","cancelErrback","cancelCallback","abort","$PS","dict","compose","f","g","Control_Semigroupoid","categoryFn","identity","Semigroupoid0","semigroupoidFn","a","v","y","arrayMap","unit","$foreign","Data_Function","Data_Unit","functorArray","dictFunctor","fa","Control_Category","Data_Functor","Nothing","Just","value0","maybe","v1","v2","isNothing","isJust","functorMaybe","applyMaybe","Functor0","bindMaybe","Apply0","applicativeMaybe","pure","Data_Maybe","Data_MediaType_Common","ArrayView","Blob","Document","$$String","FormData","FormURLEncoded","Json","string","applicationFormURLEncoded","applicationJSON","unsafeCoerce","Unsafe_Coerce","Safe_Coerce","unwrap","coerce","Data_Newtype","Accept","ContentType","RequestHeader","value1","$$ArrayBuffer","Ignore","json","ignore","ResponseHeader","alt","arrayApply","fs","xs","applyArray","dictApply","Control_Apply","dictApplicative","arrayBind","bindArray","bindFlipped","dictBind","flip","discardUnit","discard","m","Left","Right","functorEither","either","hush","applyEither","bindEither","applicativeEither","Control_Applicative","Data_Either","throwError","dictMonadError","catchError","MonadThrow0","Monad0","Bind1","$21","Applicative0","$22","Control_Bind","dictMonad","mb","when","unless","f$prime","a$prime","concatString","s1","s2","concatArray","ys","semigroupString","append","semigroupArray","Control_Monad","Data_Semigroup","ExceptT","mapExceptT","functorExceptT","monadExceptT","applicativeExceptT","bindExceptT","$91","$92","applyExceptT","ap","$93","$94","dictSemigroup","rm","rn","$103","$104","$0","Control_Monad_Except_Trans","runExcept","$1","runExceptT","fromObject","id","stringify","JSON","_caseJson","isNull","isBool","isNum","isStr","isArr","isObj","_copyST","r","empty","runST","_fmapObject","m0","_mapWithKey","_foldM","mz","acc","z","_lookup","no","yes","toArrayWithKey","findIndexImpl","just","nothing","_deleteAt","l1","xss","sortByImpl","compare","fromOrdering","mergeFromTo","xs1","xs2","to","mid","s","unsafeIndexImpl","pushAll","as","unsafeFreeze","thaw","copyImpl","refEq","r1","r2","eqIntImpl","eqCharImpl","eqStringImpl","eqArrayImpl","eqString","eq","eqInt","eqChar","dictEq","foldrArray","init","foldlArray","monoidString","mempty","Semigroup0","monoidArray","dictMonoid","boolConj","b1","b2","boolDisj","boolNot","not","ff","disj","heytingAlgebraBoolean","tt","implies","conj","dictHeytingAlgebra","Data_HeytingAlgebra","semigroupDisj","unsafeCompareImpl","lt","gt","ordIntImpl","ordStringImpl","ordCharImpl","LT","GT","EQ","eqOrdering","Data_Eq","Data_Ordering","ordUnit","Eq0","eqUnit","ordString","ordInt","ordChar","dictOrd","Data_Monoid","Data_Monoid_Disj","Data_Ord","foldr","traverse_","dictFoldable","$316","applySecond","$317","foldl","foldableMaybe","foldMap","foldableArray","foldMapDefaultR","sep","alaF","Disj","monoidDisj","maximumBy","cmp","minimumBy","Tuple","functorTuple","dictOrd1","eqTuple","dictEq1","unfoldrArrayImpl","fromJust","fst","snd","tuple","unfoldr1ArrayImpl","Data_Tuple","unfoldable1Array","unfoldr1","Data_Unfoldable1","unfoldableArray","unfoldr","Unfoldable10","Data_Array_ST","Data_Boolean","Data_Foldable","Data_Unfoldable","unsafeIndex","singleton","findIndex","deleteAt","deleteBy","concatMap","dictUnfoldable","otherwise","withArray","elemIndex","$100","$101","intercalate","comp","$80","runFn3","fn","runFn4","d","traverseArrayImpl","array1","array2","array3","concat2","go","bot","pivot","floor","traverse","traversableArray","sequence","sequenceDefault","dictTraversable","Foldable1","traverseWithIndex","poke","Data_Array","Data_Function_Uncurried","Data_Traversable","Data_TraversableWithIndex","Foreign_Object_ST","values","thawST","lookup","insert","mutate","functorObject","functorWithIndexObject","mapWithIndex","fold","applyFlipped","foldableObject","foldableWithIndexObject","foldlWithIndex","foldrWithIndex","uncurry","foldMapWithIndex","Foldable0","traversableWithIndexObject","ms","FunctorWithIndex0","FoldableWithIndex1","Traversable2","traversableObject","$42","$43","$35","toUnfoldable","$36","$37","Foreign_Object","toJsonType","jsonEmptyObject","toObject","_jsonParser","fail","succ","replaceAll","s3","toLower","joinWith","toRFC3896","input","_encodeURIComponent","succeed","encodeURIComponent","_encodeFormURLComponent","_decodeURIComponent","$$encodeURIComponent","encodeFormURLComponent","$$decodeURIComponent","$16","$17","Data_String_Common","JSURI","$18","showIntImpl","showNumberImpl","isNaN","showStringImpl","showString","show","showNumber","showInt","Data_Show","OPTIONS","GET","HEAD","POST","PUT","DELETE","TRACE","CONNECT","PROPFIND","PROPPATCH","MKCOL","COPY","MOVE","LOCK","UNLOCK","PATCH","showMethod","print","functorIdentity","applyIdentity","bindIdentity","applicativeIdentity","monadIdentity","Control_Plus","NonEmpty","dictPlus","Data_NonEmpty","Nil","Cons","functorList","chunkedRevMap","$copy_chunksAcc","$copy_v","$tco_var_chunksAcc","$tco_result","$tco_done","$tco_loop","chunksAcc","$copy_v1","$copy_acc","$tco_var_v1","$tco_done1","unrolledMap","foldableList","rev","$tco_var_acc","$205","$206","$copy_b","$tco_var_b","$207","$208","semigroupList","semigroupNonEmptyList","as$prime","toList","applyList","applicativeList","altList","plusList","Alt0","$171","Data_List_Types","$172","NonEmptyList","nullable","notNull","toNullable","Aff","EMPTY","PURE","THROW","CATCH","SYNC","ASYNC","BIND","BRACKET","FORK","SEQ","MAP","APPLY","ALT","CONS","RESUME","RELEASE","FINALIZER","FINALIZED","FORKED","_1","_2","_3","AffCtr","nonCanceler","runEff","eff","runSync","left","right","runAsync","Scheduler","limit","size","ix","drain","thunk","isDraining","enqueue","cb","tmp","SUSPENDED","CONTINUE","STEP_BIND","STEP_RESULT","PENDING","RETURN","COMPLETED","Fiber","util","supervisor","aff","runTick","step","interrupt","bhead","btail","attempts","bracketCount","joinId","joins","rethrow","localRunTick","attempt","isLeft","fromRight","register","sequential","fromLeft","killed","failed","completed","handler","onComplete","jid","kill","canceler","isSuspended","runPar","par","fiberId","fibers","killId","kills","early","kid","head","tail","loop","resolve","fiber","lhs","rhs","fid","killError","killCb","cancel","innerKills","newKills","Pure","Throw","Catch","Sync","Async","Bind","Bracket","Fork","Seq","ParMap","ParApply","ParAlt","Supervisor","isEmpty","killAll","killCount","_pure","_throwError","_catchError","_map","_bind","_fork","immediate","_liftEffect","_parAffMap","_parAffApply","aff1","aff2","makeAff","generalBracket","acquire","_makeFiber","_sequential","pureE","bindE","monadEffect","applicativeEffect","bindEffect","applyEffect","functorEffect","liftA1","semigroupEffect","lift2","new","read","ref","modifyImpl","write","Effect","modify$prime","s$prime","modify","Effect_Ref","Loop","Done","monadRecEffect","tailRecM","fromDone","parallel","Control_Parallel_Class","dictParallel","parTraverse_","$20","Applicative1","$19","monadEffectEffect","liftEffect","unsafePerformEffect","_unsafePartial","_crashWith","msg","Partial","unsafePartial","crashWith","$50","$51","Control_Monad_Error_Class","Control_Monad_Rec_Class","Control_Parallel","Effect_Class","Effect_Unsafe","Partial_Unsafe","suspendAff","functorParAff","functorAff","forkAff","ffiUtil","unsafeCrashWith","makeFiber","launchAff","applyParAff","monadAff","applicativeAff","bindAff","applyAff","monadEffectAff","effectCanceler","Canceler","joinFiber","functorFiber","monadThrowAff","monadErrorAff","parallelAff","applicativeParAff","$52","semigroupCanceler","parSequence_","monadRecAff","res","monoidCanceler","$46","$47","runAff","fin","bracket","Effect_Aff","$4","$5","k2","$6","$7","throwException","$2","typeOf","tagOf","fromNumberImpl","toNumber","fromNumber","Data_Int","Data_List_NonEmpty","ForeignError","TypeMismatch","ErrorAtIndex","ErrorAtProperty","unsafeToForeign","unsafeFromForeign","$118","monadThrowExceptT","$119","unsafeReadTagged","renderForeignError","$120","$121","readNumber","Affjax_RequestBody","Affjax_RequestHeader","Affjax_ResponseFormat","Affjax_ResponseHeader","Control_Alt","Control_Monad_Except","Data_Argonaut_Core","Data_Argonaut_Parser","Data_FormURLEncoded","Data_HTTP_Method","Data_Identity","Data_Nullable","Effect_Aff_Compat","Effect_Exception","Foreign","RequestContentError","ResponseBodyError","TimeoutError","RequestFailedError","XHROtherError","defaultRequest","responseFormat","req","parseJSON","fromResponse","altExceptT","composeKleisliFlipped","$53","jsonParser","addHeader","mh","hs","any","snoc","mapFlipped","fromEffectFnAff","h","reqContent","toMediaType","toResponseType","fromMaybe","note","extractContent","Named","bimap","bifunctorEither","dictBifunctor","$54","Data_Argonaut_Decode_Error","Data_Bifunctor","decodeNumber","caseJsonNumber","decodeJObject","decodeInt","$55","decoder","$56","lmap","$57","$58","Data_Argonaut_Decode_Decoders","decodeJsonInt","decodeJson","dictDecodeJson","decodeForeignObject","moment","_app","app","_mmoment8601","ISO_8601","fromNow","_closeWindow","close","_setFocus","elemId","getElementById","focus","_toLocaleDateString","dateString","Date","toLocaleDateString","dateStyle","win","_unsafeStringify","SProxy","reflectSymbol","unsafeGet","label","rec","Data_Symbol","Record_Unsafe","dictIsSymbol","copyRecord","copy","unsafeInsert","semigroupoidBuilder","categoryBuilder","$$Proxy","Record","Record_Builder","Type_Proxy","writeImplFields","writeImpl","writeForeignString","writeForeignInt","writeForeignForeign","writeForeignBoolean","nilWriteForeignFields","dictWriteForeign","$82","$83","$86","$87","toMaybe","dictWriteForeignFields","steps","build","rest","Simple_JSON","TagCloudModeTop","TagCloudModeLowerBound","TagCloudModeRelated","TagCloudModeNone","writeForeignTagCloudMode$prime","recordWriteForeign","consWriteForeignFields","writeForeignNote$prime","writeForeignBookmark$prime","writeForeignNullable","writeForeignAccountSettin","eqTagCloudModeF","eqArray","tagCloudMode","mode","expanded","readInt","readString","setHref","location","origin","reload","Affjax","Affjax_StatusCode","Data_Argonaut_Decode_Class","Globals","Model","Web_HTML","Web_HTML_Location","Web_HTML_Window","Star","UnStar","showStar","fetchUrl","rt","request","cons","csrfHeaderName","csrfToken","fetchPath","path","homeR","fetchUrlEnc","fetchJson","writeJSON","bid","action","bm","eres","eqStatusCode","nid","us","authRlogoutR","InputButton","InputCheckbox","InputColor","InputDate","InputDatetimeLocal","InputEmail","InputFile","InputHidden","InputImage","InputMonth","InputNumber","InputPassword","InputRadio","InputRange","InputReset","InputSearch","InputSubmit","InputTel","InputText","InputTime","InputUrl","InputWeek","dictMonadState","Control_Monad_State_Class","viewOn","view","p","gets","profunctorForget","dimap","$24","strongForget","first","$25","second","$26","Profunctor0","a2b","c2d","b2c","$8","Data_Profunctor","strongFn","profunctorFn","Data_Profunctor_Strong","dictStrong","lens$prime","pab","over","monadAffAff","liftAff","MonadEffect0","runExists","mkExists","Data_Exists","CoyonedaF","coyoneda","fi","functorCoyoneda","$84","liftCoyoneda","Leaf","Two","value2","value3","Three","value4","value5","value6","TwoLeft","TwoRight","ThreeLeft","ThreeMiddle","ThreeRight","KickUp","v3","v4","fromZipper","$copy_dictOrd","$copy_tree","$tco_var_dictOrd","$tco_var_v","tree","up","$copy_ctx","$copy_v2","down","$tco_var_ctx","ctx","$copy_ctxs","$tco_var_ctxs","ctxs","removeMaxNode","$copy_m","maxNode","$tco_done2","$tco_done3","max","leaves","foldableMap","$$delete","OrdBox","eqOrdBox","ordOrdBox","Data_Map_Internal","Halogen_Data_OrdBox","sym","ordTuple","mkOrdBox","$33","reverse","Data_List","CatQueue","Data_CatQueue","CatNil","CatCons","semigroupCatList","cat","q","$copy_xs","$copy_c","$tco_var_c","$copy_ys","$tco_var_xs","uncons","Data_CatList","Free","Return","fromView","freeMonad","freeApplicative","freeBind","freeFunctor","freeApply","$122","$123","dictMonadRec","runExpF","concatF","toView","$135","Control_Monad_Free","Effect_Aff_Class","State","Subscribe","Unsubscribe","Lift","ChildQuery","Raise","Par","Kill","GetRef","HalogenM","ordSubscriptionId","ordForkId","monadHalogenM","monadStateHalogenM","$134","liftF","monadEffectHalogenM","dictMonadEffect","$139","$140","functorHalogenM","bindHalogenM","applicativeHalogenM","dictMonadAff","$141","$142","Initialize","Finalize","Receive","Action","Query","Data_Coyoneda","Halogen_Data_Slot","Halogen_Query_HalogenM","Halogen_Query_HalogenQ","ComponentSlot","ThunkSlot","unComponentSlot","unComponent","mkComponentSlot","mkComponent","defaultEval","handleAction","handleQuery","receive","initialize","finalize","voidLeft","unCoyoneda","output","component","ButtonButton","ButtonSubmit","ButtonReset","On","Off","Step","unStep","mkStep","extract","unsafeGetAny","unsafeHasAny","unsafeSetAny","forE","forEachE","forInE","ks","diffWithIxE","a1","a2","f1","f2","f3","a3","strMapWithIxE","fk","diffWithKeyAndIxE","o1","o2","setTextContent","ns","createElementNS","insertChildIx","el","removeAttributeNS","hasAttributeNS","addEventListener","ev","listener","removeEventListener","jsUndefined","unsafeLookup","pokeMutMap","newMutMap","eventListener","event","Halogen_VDom_Machine","Halogen_VDom_Util","Web_Event_EventTarget","Created","Removed","Attribute","Property","Handler","Ref","unsafeGetProperty","setProperty","propToStrKey","propFromString","propFromInt","propFromBoolean","removeProp","prevEvents","removeProperty","mbEmit","haltProp","applyProp","events","patchProp","ps2","onThis","onThese","v11","elVal","$66","diffProp","onThat","nextState","renderProp","ps1","ps1$prime","Elem","Keyed","Widget","Grafted","Graft","unGraft","graft","bifunctorGraft","runGraft","DOM_HTML_Indexed_ButtonType","DOM_HTML_Indexed_InputType","DOM_HTML_Indexed_OnOff","Halogen_VDom_DOM_Prop","Halogen_VDom_Types","HTML","isPropString","toPropValue","isPropOnOff","$32","renderOnOff","isPropInt","isPropInputType","$38","renderInputType","isPropButtonType","renderButtonType","isPropBoolean","children","dictIsProp","$23","form","span","tbody_","td","td_","tr_","tr","div","div_","button","br_","es","unsafeReadPropImpl","unsafeReadProp","RefUpdate","_currentTarget","currentTarget","preventDefault","Foreign_Index","Halogen_HTML_Core","Halogen_Query_Input","Web_Event_Event","Web_HTML_Event_EventTypes","Web_UIEvent_MouseEvent_EventTypes","mouseHandler","et","onClick","click","onSubmit","addForeignPropHandler","reader","handler$prime","composeKleisli","$71","readProp","onChecked","change","readBoolean","onValueChange","$14","$15","mel","required","$$for","disabled","class_","autofocus","autocomplete","hasArrayFrom","hasStringIterator","hasFromCodePoint","fromCodePoint","hasCodePointAt","codePointAt","_unsafeCodePointAt0","fallback","_singleton","_take","accum","iter","_toCodePointArray","unsafeCodePointAt0","topInt","bottomInt","topChar","bottomChar","boundedInt","bottom","Ord0","boundedChar","toCharCode","toEnum$prime","Data_Bounded","fromEnum","charToEnum","enumChar","fromEnum$prime","pred","defaultPred","boundedEnumChar","cardinality","toEnum","Bounded0","Enum1","dictBoundedEnum","low","high","intDegree","abs","intDiv","intMod","yy","intSub","intAdd","intMul","semiringInt","add","zero","mul","one","Data_Semiring","ringInt","sub","Semiring0","Data_Ring","commutativeRingInt","Ring0","Data_CommutativeRing","euclideanRingInt","degree","mod","CommutativeRing0","drop","splitAt","before","after","Data_Enum","Data_EuclideanRing","Data_String_CodeUnits","Data_String_Unsafe","unsurrogate","lead","trail","isTrail","cu","isLead","cu1","cu0","unconsButWithTuple","toEnumWithDefaults","take","takeFallback","$41","$44","Data_String_CodePoints","Halogen_HTML_Properties","Web_HTML_Common","fromNullableStr","encodeTag","$45","_parseQueryString","srh","decode","srh$prime","$48","unsafeDecode","qs","mapMaybe","kv","_loc","_doc","ClassName","loc","find","App","Data_Lens_Getter","Data_Lens_Internal_Forget","Data_Lens_Lens","Data_Lens_Setter","Halogen_Component","Halogen_HTML_Elements","Halogen_HTML_Events","Util","EarchiveDefault","EprivateDefault","EprivacyLock","UEditField","USubmit","_us","lens","u$prime","render","initialState","editField","type_","archiveDefault","privateDefault","privacyLock","mkEval","modifying","monadAffHalogenM","editAccountSettings","log","referrer","toParentNode","toDocument","Effect_Console","Web_HTML_HTMLDocument","Eurl","Etitle","Edescription","Etags","Eprivate","Etoread","BEditField","BEditSubmit","BDeleteAsk","BLookupTitle","BDestroy","_edit_bm","edit_bm","apiError","deleteAsk","destroyed","loading","_apiError","b$prime","mmoment","mmoment8601","time","$79","display_exists","guard","ifElseH","whenH","alert_text","textarea","description","tags","toread","modify_","$49","lookupTitle","mtitle","selected","archiveUrl","destroy","assign","editBookmark","printError","org","closeWindow","stripPrefix","unsafeSetInnerHTML","_read","toNode","toElement","$9","Web_HTML_HTMLElement","getHTMLElementRef","fromElement","$10","getRef","Halogen_Query","SetInnerHTML","toRawHTML","inputval","elRef","for_","monoidEffect","$11","$12","markedImpl","RawHTML","Component_RawHtml","Foreign_Marked","spin","$30","$31","outputQuery","widget","componentSlot","Component_Markdown","Data_Void","Effect_Class_Console","Halogen_HTML","BNotifyRemove","BStar","BEdit","BMarkRead","_markdown","_edit","_bm","tagid","star","shdatetime","shdate","linkToFilterTag","userR","dat","isowner","slot","absurd","whenA","toggleStar","raise","markRead","setFocus","$67","$72","edit_bm$prime","Component_BMark","HandleBMessage","_bookmark","st","bms","bmark","st$prime","toTextarea","notes$prime","created","linkToFilterSingle","notes","cur","shared","Etext","EisMarkdown","Eshared","NNop","NEditField","NEditSubmit","NEdit","NDeleteAsk","NDestroy","_note","edit_note","_edit_note","notetextid","note$prime","$74","isMarkdown","updated","destroyNote","whenM","editNote","noteR","$$Math","TInitialize","TExpanded","TChangeMode","m$prime","rescale","fetchTagCloud","mode$prime","getTagCloud","tagCloudModeFromF","tagcloud","$27","$28","toArray","curtags","opacity","k_lower","fontsize","style","notElem","toSizedTag","sortBy","comparing","modetop","isExpanded","modelb5","modelb20","modelb2","modelb10","modelb1","ifElseA","isRelated","minimum","maximum","setExpanded","updateTagCloudMode","Ap","mkAp","fba","fb","liftFreeAp","goLeft","$copy_dictApplicative","$copy_fStack","$copy_valStack","$copy_nat","$copy_func","$copy_count","$tco_var_dictApplicative","$tco_var_fStack","$tco_var_valStack","$tco_var_nat","$tco_var_func","fStack","valStack","nat","goApply","$copy_vals","$copy_gVal","$tco_var_vals","vals","gVal","gRes","functorFreeAp","foldFreeAp","nextVals","applyFreeAp","applicativeFreeAp","monadForkAff","suspend","fork","Functor1","unRenderStateX","unDriverStateX","mkRenderStateX","mkDriverStateXRef","rendering","lchs","selfRef","childrenIn","childrenOut","handlerRef","pendingQueries","pendingOuts","pendingHandlers","fresh","subscriptions","forks","ds","refs","lifecycleHandlers","unChildQueryBox","reallyUnsafeRefEq","unsafeRefEq","Unsafe_Reference","subscribers","emitter","Control_Applicative_Free","Control_Monad_Fork_Class","Halogen_Aff_Driver_State","Halogen_Query_ChildQuery","Halogen_Subscription","queueOrRun","au","handleLifecycle","initializers","finalizers","handleAff","runAff_","evalQ","evalM","initRef","evalChildQuery","foldFree","SubscriptionId","sid","subscribe","act","evalF","subs","unsubscribe","$78","cqb","dsx","retractFreeAp","hoistFreeAp","ForkId","doneRef","unlessM","forkMap","killFiber","mapDriverState","alter","Halogen_Aff_Driver_Eval","newLifecycleHandlers","handlePending","$29","renderSpec","squashChildInitializers","runComponent","lchs$prime","$$var","initDriverState","preInits","parentInitializer","handlers","renderChild","childrenInRef","childrenOutRef","$34","isDuplicate","renderStateX","shouldProcessHandlers","$39","$40","childHandler","foreachSlot","childDS","renderStateX_","ds$prime","mmore","evalDriver","disposed","dispose","sio","notify","query","messages","_querySelector","selector","querySelector","Web_DOM_ParentNode","runHalogenAff","$3","Web_DOM_Element","haltWidget","halt","patchWidget","vdom","res$prime","haltText","patchText","haltKeyed","attrs","haltElem","eqElemSpec","ns1","ns2","patchElem","attrs2","children2","patchKeyed","ix$prime","spec","buildText","buildElem","name1","as1","ch1","child","buildAttributes","buildKeyed","buildWidget","w","Halogen_VDom_DOM","runThunk","Thunk","toVDom","haltThunk","patchThunk","t2","renderThunk","buildVDom","getEffProp","_parentNode","_nextSibling","node1","node2","$13","nextSibling","Halogen_Aff_Driver","Halogen_VDom_Thunk","Web_DOM_Node","npn","pn","container","renderChildRef","getNode","buildThunk","renderComponentSlot","cs","rsx","patch","step$prime","buildProp","mkSpec","machine","nextSib","machine$prime","newNode","heytingAlgebraFunction","substInParent","runUI","_mainImpl","Component_AccountSettings","Component_Add","Component_BList","Component_NList","Component_NNote","Component_TagCloud","Halogen_Aff_Util","Halogen_VDom_Driver","viewRendered","selectElement","main","logout","renderElSelector","bmarks","blist","tagcloudcomponent","tagCloudModeToF","addbmark","nlist","nnote","accountSettings","usetting"],"mappings":"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UACA,QACA,QACA,IACA,MACA,MACA,MACA,QACA,aACA,OACA,KACA,SACA,SACA,UACA,SACA,OACA,OACA,MACA,WACA,UACA,OACA,WACA,KACA,YACA,MACA,UACA,MACA,SACA,MACA,MACA,KACA,KACA,UACA,KACA,WACA,aACA,SACA,OACA,SACA,OACA,KACA,KACA,KACA,KACA,KACA,KACA,OACA,SACA,SACA,KACA,OACA,IACA,MACA,QACA,MACA,MACA,QACA,SACA,KACA,OACA,MACA,OACA,UACA,OACA,WACA,QACA,MACA,OACA,KACA,WACA,SACA,SACA,IACA,UACA,MACA,WACA,IACA,KACA,KACA,OACA,IACA,OACA,UACA,SACA,SACA,QACA,SACA,SACA,OACA,SACA,SACA,QACA,MACA,UACA,MACA,QACA,QACA,KACA,WACA,WACA,QACA,KACA,QACA,OACA,KACA,QACA,KACA,IACA,KACA,MACA,QACA,QAIWiC,EAAMjC,EAAO,CACxB,MACA,IACA,WACA,cACA,eACA,eACA,gBACA,mBACA,SACA,WACA,OACA,OACA,UACA,SACA,OACA,IACA,QACA,WACA,QACA,QACA,OACA,iBACA,SACA,OACA,WACA,QACA,OACA,UACA,UACA,WACA,iBACA,OACA,OACA,QACA,SACA,SACA,OACA,WACA,QACA,OACA,QACA,OACA,UAGWkC,EAAalC,EAAO,CAC/B,UACA,gBACA,sBACA,cACA,mBACA,oBACA,oBACA,iBACA,UACA,UACA,UACA,UACA,UACA,iBACA,UACA,cACA,eACA,WACA,eACA,qBACA,cACA,SACA,iBAOWmC,EAAgBnC,EAAO,CAClC,UACA,gBACA,SACA,UACA,eACA,UACA,YACA,mBACA,iBACA,gBACA,gBACA,gBACA,QACA,YACA,OACA,eACA,YACA,UACA,gBACA,SACA,MACA,aACA,UACA,QAGWoC,EAASpC,EAAO,CAC3B,OACA,WACA,SACA,UACA,QACA,SACA,KACA,aACA,gBACA,KACA,KACA,QACA,UACA,WACA,QACA,OACA,KACA,SACA,QACA,SACA,OACA,OACA,UACA,SACA,MACA,QACA,MACA,SACA,eAKWqC,EAAmBrC,EAAO,CACrC,UACA,cACA,aACA,WACA,YACA,UACA,UACA,SACA,SACA,QACA,YACA,aACA,iBACA,cACA,SAGW3Q,EAAO2Q,EAAO,CAAC,UCpRf/V,EAAO+V,EAAO,CACzB,SACA,SACA,QACA,MACA,iBACA,eACA,uBACA,WACA,aACA,UACA,SACA,UACA,cACA,cACA,UACA,OACA,QACA,QACA,QACA,OACA,UACA,WACA,eACA,SACA,cACA,WACA,WACA,UACA,MACA,WACA,0BACA,wBACA,WACA,YACA,UACA,eACA,OACA,MACA,UACA,SACA,SACA,OACA,OACA,WACA,KACA,YACA,YACA,QACA,OACA,QACA,OACA,OACA,UACA,OACA,MACA,MACA,YACA,QACA,SACA,MACA,YACA,WACA,QACA,OACA,UACA,aACA,SACA,OACA,UACA,UACA,cACA,cACA,SACA,UACA,UACA,aACA,WACA,MACA,WACA,MACA,WACA,OACA,OACA,UACA,aACA,QACA,WACA,QACA,OACA,QACA,OACA,UACA,QACA,MACA,SACA,OACA,QACA,UACA,WACA,QACA,YACA,OACA,SACA,SACA,QACA,QACA,QACA,SAGWiC,EAAMjC,EAAO,CACxB,gBACA,aACA,WACA,qBACA,SACA,gBACA,gBACA,UACA,gBACA,iBACA,QACA,OACA,KACA,QACA,OACA,gBACA,YACA,YACA,QACA,sBACA,8BACA,gBACA,kBACA,KACA,KACA,IACA,KACA,KACA,kBACA,YACA,UACA,UACA,MACA,WACA,YACA,MACA,OACA,eACA,YACA,SACA,cACA,cACA,gBACA,cACA,YACA,mBACA,eACA,aACA,eACA,cACA,KACA,KACA,KACA,KACA,aACA,WACA,gBACA,oBACA,SACA,OACA,KACA,kBACA,KACA,MACA,IACA,KACA,KACA,KACA,KACA,UACA,YACA,aACA,WACA,OACA,eACA,iBACA,eACA,mBACA,iBACA,QACA,aACA,aACA,eACA,eACA,cACA,cACA,mBACA,YACA,MACA,OACA,QACA,SACA,OACA,MACA,OACA,aACA,SACA,WACA,UACA,QACA,SACA,cACA,SACA,WACA,cACA,OACA,aACA,sBACA,mBACA,eACA,SACA,gBACA,sBACA,iBACA,IACA,KACA,KACA,SACA,OACA,OACA,cACA,YACA,UACA,SACA,SACA,QACA,OACA,kBACA,mBACA,mBACA,eACA,cACA,eACA,cACA,aACA,eACA,mBACA,oBACA,iBACA,kBACA,oBACA,iBACA,SACA,eACA,QACA,eACA,iBACA,WACA,UACA,UACA,YACA,cACA,kBACA,iBACA,aACA,OACA,KACA,KACA,UACA,SACA,UACA,aACA,UACA,aACA,gBACA,gBACA,QACA,eACA,OACA,eACA,mBACA,mBACA,IACA,KACA,KACA,QACA,IACA,KACA,KACA,IACA,eAGWoC,EAASpC,EAAO,CAC3B,SACA,cACA,QACA,WACA,QACA,eACA,cACA,aACA,aACA,QACA,MACA,UACA,eACA,WACA,QACA,QACA,SACA,OACA,KACA,UACA,SACA,gBACA,SACA,SACA,iBACA,YACA,WACA,cACA,UACA,UACA,gBACA,WACA,WACA,OACA,WACA,WACA,aACA,UACA,SACA,SACA,cACA,gBACA,uBACA,YACA,YACA,aACA,WACA,iBACA,iBACA,YACA,UACA,QACA,UAGWsC,EAAMtC,EAAO,CACxB,aACA,SACA,cACA,YACA,gBCnWWuC,EAAgBtC,EAAK,6BACrBuC,EAAWvC,EAAK,yBAChBwC,EAAYxC,EAAK,8BACjByC,EAAYzC,EAAK,kBACjB0C,EAAiB1C,EAC5B,yFAEW2C,EAAoB3C,EAAK,yBACzB4C,EAAkB5C,EAC7B,+DJ84CF,EAAA,mBAAA,QAAA,iBAAA,OAAA,SAAA,SAAA,GAAA,cAAA,GAAA,SAAA,GAAA,OAAA,GAAA,mBAAA,QAAA,EAAA,cAAA,QAAA,IAAA,OAAA,UAAA,gBAAA,GAAA,SAAA,EAAA,GAAA,GAAA,MAAA,QAAA,GAAA,CAAA,IAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA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","file":"app.min.js","sourceRoot":"","sourcesContent":["//! moment.js\n//! version : 2.29.1\n//! authors : Tim Wood, Iskren Chernev, Moment.js contributors\n//! license : MIT\n//! momentjs.com\n\n;(function (global, factory) {\n    typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n    typeof define === 'function' && define.amd ? define(factory) :\n    global.moment = factory()\n}(this, (function () { 'use strict';\n\n    var hookCallback;\n\n    function hooks() {\n        return hookCallback.apply(null, arguments);\n    }\n\n    // This is done to register the method called with moment()\n    // without creating circular dependencies.\n    function setHookCallback(callback) {\n        hookCallback = callback;\n    }\n\n    function isArray(input) {\n        return (\n            input instanceof Array ||\n            Object.prototype.toString.call(input) === '[object Array]'\n        );\n    }\n\n    function isObject(input) {\n        // IE8 will treat undefined and null as object if it wasn't for\n        // input != null\n        return (\n            input != null &&\n            Object.prototype.toString.call(input) === '[object Object]'\n        );\n    }\n\n    function hasOwnProp(a, b) {\n        return Object.prototype.hasOwnProperty.call(a, b);\n    }\n\n    function isObjectEmpty(obj) {\n        if (Object.getOwnPropertyNames) {\n            return Object.getOwnPropertyNames(obj).length === 0;\n        } else {\n            var k;\n            for (k in obj) {\n                if (hasOwnProp(obj, k)) {\n                    return false;\n                }\n            }\n            return true;\n        }\n    }\n\n    function isUndefined(input) {\n        return input === void 0;\n    }\n\n    function isNumber(input) {\n        return (\n            typeof input === 'number' ||\n            Object.prototype.toString.call(input) === '[object Number]'\n        );\n    }\n\n    function isDate(input) {\n        return (\n            input instanceof Date ||\n            Object.prototype.toString.call(input) === '[object Date]'\n        );\n    }\n\n    function map(arr, fn) {\n        var res = [],\n            i;\n        for (i = 0; i < arr.length; ++i) {\n            res.push(fn(arr[i], i));\n        }\n        return res;\n    }\n\n    function extend(a, b) {\n        for (var i in b) {\n            if (hasOwnProp(b, i)) {\n                a[i] = b[i];\n            }\n        }\n\n        if (hasOwnProp(b, 'toString')) {\n            a.toString = b.toString;\n        }\n\n        if (hasOwnProp(b, 'valueOf')) {\n            a.valueOf = b.valueOf;\n        }\n\n        return a;\n    }\n\n    function createUTC(input, format, locale, strict) {\n        return createLocalOrUTC(input, format, locale, strict, true).utc();\n    }\n\n    function defaultParsingFlags() {\n        // We need to deep clone this object.\n        return {\n            empty: false,\n            unusedTokens: [],\n            unusedInput: [],\n            overflow: -2,\n            charsLeftOver: 0,\n            nullInput: false,\n            invalidEra: null,\n            invalidMonth: null,\n            invalidFormat: false,\n            userInvalidated: false,\n            iso: false,\n            parsedDateParts: [],\n            era: null,\n            meridiem: null,\n            rfc2822: false,\n            weekdayMismatch: false,\n        };\n    }\n\n    function getParsingFlags(m) {\n        if (m._pf == null) {\n            m._pf = defaultParsingFlags();\n        }\n        return m._pf;\n    }\n\n    var some;\n    if (Array.prototype.some) {\n        some = Array.prototype.some;\n    } else {\n        some = function (fun) {\n            var t = Object(this),\n                len = t.length >>> 0,\n                i;\n\n            for (i = 0; i < len; i++) {\n                if (i in t && fun.call(this, t[i], i, t)) {\n                    return true;\n                }\n            }\n\n            return false;\n        };\n    }\n\n    function isValid(m) {\n        if (m._isValid == null) {\n            var flags = getParsingFlags(m),\n                parsedParts = some.call(flags.parsedDateParts, function (i) {\n                    return i != null;\n                }),\n                isNowValid =\n                    !isNaN(m._d.getTime()) &&\n                    flags.overflow < 0 &&\n                    !flags.empty &&\n                    !flags.invalidEra &&\n                    !flags.invalidMonth &&\n                    !flags.invalidWeekday &&\n                    !flags.weekdayMismatch &&\n                    !flags.nullInput &&\n                    !flags.invalidFormat &&\n                    !flags.userInvalidated &&\n                    (!flags.meridiem || (flags.meridiem && parsedParts));\n\n            if (m._strict) {\n                isNowValid =\n                    isNowValid &&\n                    flags.charsLeftOver === 0 &&\n                    flags.unusedTokens.length === 0 &&\n                    flags.bigHour === undefined;\n            }\n\n            if (Object.isFrozen == null || !Object.isFrozen(m)) {\n                m._isValid = isNowValid;\n            } else {\n                return isNowValid;\n            }\n        }\n        return m._isValid;\n    }\n\n    function createInvalid(flags) {\n        var m = createUTC(NaN);\n        if (flags != null) {\n            extend(getParsingFlags(m), flags);\n        } else {\n            getParsingFlags(m).userInvalidated = true;\n        }\n\n        return m;\n    }\n\n    // Plugins that add properties should also add the key here (null value),\n    // so we can properly clone ourselves.\n    var momentProperties = (hooks.momentProperties = []),\n        updateInProgress = false;\n\n    function copyConfig(to, from) {\n        var i, prop, val;\n\n        if (!isUndefined(from._isAMomentObject)) {\n            to._isAMomentObject = from._isAMomentObject;\n        }\n        if (!isUndefined(from._i)) {\n            to._i = from._i;\n        }\n        if (!isUndefined(from._f)) {\n            to._f = from._f;\n        }\n        if (!isUndefined(from._l)) {\n            to._l = from._l;\n        }\n        if (!isUndefined(from._strict)) {\n            to._strict = from._strict;\n        }\n        if (!isUndefined(from._tzm)) {\n            to._tzm = from._tzm;\n        }\n        if (!isUndefined(from._isUTC)) {\n            to._isUTC = from._isUTC;\n        }\n        if (!isUndefined(from._offset)) {\n            to._offset = from._offset;\n        }\n        if (!isUndefined(from._pf)) {\n            to._pf = getParsingFlags(from);\n        }\n        if (!isUndefined(from._locale)) {\n            to._locale = from._locale;\n        }\n\n        if (momentProperties.length > 0) {\n            for (i = 0; i < momentProperties.length; i++) {\n                prop = momentProperties[i];\n                val = from[prop];\n                if (!isUndefined(val)) {\n                    to[prop] = val;\n                }\n            }\n        }\n\n        return to;\n    }\n\n    // Moment prototype object\n    function Moment(config) {\n        copyConfig(this, config);\n        this._d = new Date(config._d != null ? config._d.getTime() : NaN);\n        if (!this.isValid()) {\n            this._d = new Date(NaN);\n        }\n        // Prevent infinite loop in case updateOffset creates new moment\n        // objects.\n        if (updateInProgress === false) {\n            updateInProgress = true;\n            hooks.updateOffset(this);\n            updateInProgress = false;\n        }\n    }\n\n    function isMoment(obj) {\n        return (\n            obj instanceof Moment || (obj != null && obj._isAMomentObject != null)\n        );\n    }\n\n    function warn(msg) {\n        if (\n            hooks.suppressDeprecationWarnings === false &&\n            typeof console !== 'undefined' &&\n            console.warn\n        ) {\n            console.warn('Deprecation warning: ' + msg);\n        }\n    }\n\n    function deprecate(msg, fn) {\n        var firstTime = true;\n\n        return extend(function () {\n            if (hooks.deprecationHandler != null) {\n                hooks.deprecationHandler(null, msg);\n            }\n            if (firstTime) {\n                var args = [],\n                    arg,\n                    i,\n                    key;\n                for (i = 0; i < arguments.length; i++) {\n                    arg = '';\n                    if (typeof arguments[i] === 'object') {\n                        arg += '\\n[' + i + '] ';\n                        for (key in arguments[0]) {\n                            if (hasOwnProp(arguments[0], key)) {\n                                arg += key + ': ' + arguments[0][key] + ', ';\n                            }\n                        }\n                        arg = arg.slice(0, -2); // Remove trailing comma and space\n                    } else {\n                        arg = arguments[i];\n                    }\n                    args.push(arg);\n                }\n                warn(\n                    msg +\n                        '\\nArguments: ' +\n                        Array.prototype.slice.call(args).join('') +\n                        '\\n' +\n                        new Error().stack\n                );\n                firstTime = false;\n            }\n            return fn.apply(this, arguments);\n        }, fn);\n    }\n\n    var deprecations = {};\n\n    function deprecateSimple(name, msg) {\n        if (hooks.deprecationHandler != null) {\n            hooks.deprecationHandler(name, msg);\n        }\n        if (!deprecations[name]) {\n            warn(msg);\n            deprecations[name] = true;\n        }\n    }\n\n    hooks.suppressDeprecationWarnings = false;\n    hooks.deprecationHandler = null;\n\n    function isFunction(input) {\n        return (\n            (typeof Function !== 'undefined' && input instanceof Function) ||\n            Object.prototype.toString.call(input) === '[object Function]'\n        );\n    }\n\n    function set(config) {\n        var prop, i;\n        for (i in config) {\n            if (hasOwnProp(config, i)) {\n                prop = config[i];\n                if (isFunction(prop)) {\n                    this[i] = prop;\n                } else {\n                    this['_' + i] = prop;\n                }\n            }\n        }\n        this._config = config;\n        // Lenient ordinal parsing accepts just a number in addition to\n        // number + (possibly) stuff coming from _dayOfMonthOrdinalParse.\n        // TODO: Remove \"ordinalParse\" fallback in next major release.\n        this._dayOfMonthOrdinalParseLenient = new RegExp(\n            (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) +\n                '|' +\n                /\\d{1,2}/.source\n        );\n    }\n\n    function mergeConfigs(parentConfig, childConfig) {\n        var res = extend({}, parentConfig),\n            prop;\n        for (prop in childConfig) {\n            if (hasOwnProp(childConfig, prop)) {\n                if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) {\n                    res[prop] = {};\n                    extend(res[prop], parentConfig[prop]);\n                    extend(res[prop], childConfig[prop]);\n                } else if (childConfig[prop] != null) {\n                    res[prop] = childConfig[prop];\n                } else {\n                    delete res[prop];\n                }\n            }\n        }\n        for (prop in parentConfig) {\n            if (\n                hasOwnProp(parentConfig, prop) &&\n                !hasOwnProp(childConfig, prop) &&\n                isObject(parentConfig[prop])\n            ) {\n                // make sure changes to properties don't modify parent config\n                res[prop] = extend({}, res[prop]);\n            }\n        }\n        return res;\n    }\n\n    function Locale(config) {\n        if (config != null) {\n            this.set(config);\n        }\n    }\n\n    var keys;\n\n    if (Object.keys) {\n        keys = Object.keys;\n    } else {\n        keys = function (obj) {\n            var i,\n                res = [];\n            for (i in obj) {\n                if (hasOwnProp(obj, i)) {\n                    res.push(i);\n                }\n            }\n            return res;\n        };\n    }\n\n    var defaultCalendar = {\n        sameDay: '[Today at] LT',\n        nextDay: '[Tomorrow at] LT',\n        nextWeek: 'dddd [at] LT',\n        lastDay: '[Yesterday at] LT',\n        lastWeek: '[Last] dddd [at] LT',\n        sameElse: 'L',\n    };\n\n    function calendar(key, mom, now) {\n        var output = this._calendar[key] || this._calendar['sameElse'];\n        return isFunction(output) ? output.call(mom, now) : output;\n    }\n\n    function zeroFill(number, targetLength, forceSign) {\n        var absNumber = '' + Math.abs(number),\n            zerosToFill = targetLength - absNumber.length,\n            sign = number >= 0;\n        return (\n            (sign ? (forceSign ? '+' : '') : '-') +\n            Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) +\n            absNumber\n        );\n    }\n\n    var formattingTokens = /(\\[[^\\[]*\\])|(\\\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,\n        localFormattingTokens = /(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g,\n        formatFunctions = {},\n        formatTokenFunctions = {};\n\n    // token:    'M'\n    // padded:   ['MM', 2]\n    // ordinal:  'Mo'\n    // callback: function () { this.month() + 1 }\n    function addFormatToken(token, padded, ordinal, callback) {\n        var func = callback;\n        if (typeof callback === 'string') {\n            func = function () {\n                return this[callback]();\n            };\n        }\n        if (token) {\n            formatTokenFunctions[token] = func;\n        }\n        if (padded) {\n            formatTokenFunctions[padded[0]] = function () {\n                return zeroFill(func.apply(this, arguments), padded[1], padded[2]);\n            };\n        }\n        if (ordinal) {\n            formatTokenFunctions[ordinal] = function () {\n                return this.localeData().ordinal(\n                    func.apply(this, arguments),\n                    token\n                );\n            };\n        }\n    }\n\n    function removeFormattingTokens(input) {\n        if (input.match(/\\[[\\s\\S]/)) {\n            return input.replace(/^\\[|\\]$/g, '');\n        }\n        return input.replace(/\\\\/g, '');\n    }\n\n    function makeFormatFunction(format) {\n        var array = format.match(formattingTokens),\n            i,\n            length;\n\n        for (i = 0, length = array.length; i < length; i++) {\n            if (formatTokenFunctions[array[i]]) {\n                array[i] = formatTokenFunctions[array[i]];\n            } else {\n                array[i] = removeFormattingTokens(array[i]);\n            }\n        }\n\n        return function (mom) {\n            var output = '',\n                i;\n            for (i = 0; i < length; i++) {\n                output += isFunction(array[i])\n                    ? array[i].call(mom, format)\n                    : array[i];\n            }\n            return output;\n        };\n    }\n\n    // format date using native date object\n    function formatMoment(m, format) {\n        if (!m.isValid()) {\n            return m.localeData().invalidDate();\n        }\n\n        format = expandFormat(format, m.localeData());\n        formatFunctions[format] =\n            formatFunctions[format] || makeFormatFunction(format);\n\n        return formatFunctions[format](m);\n    }\n\n    function expandFormat(format, locale) {\n        var i = 5;\n\n        function replaceLongDateFormatTokens(input) {\n            return locale.longDateFormat(input) || input;\n        }\n\n        localFormattingTokens.lastIndex = 0;\n        while (i >= 0 && localFormattingTokens.test(format)) {\n            format = format.replace(\n                localFormattingTokens,\n                replaceLongDateFormatTokens\n            );\n            localFormattingTokens.lastIndex = 0;\n            i -= 1;\n        }\n\n        return format;\n    }\n\n    var defaultLongDateFormat = {\n        LTS: 'h:mm:ss A',\n        LT: 'h:mm A',\n        L: 'MM/DD/YYYY',\n        LL: 'MMMM D, YYYY',\n        LLL: 'MMMM D, YYYY h:mm A',\n        LLLL: 'dddd, MMMM D, YYYY h:mm A',\n    };\n\n    function longDateFormat(key) {\n        var format = this._longDateFormat[key],\n            formatUpper = this._longDateFormat[key.toUpperCase()];\n\n        if (format || !formatUpper) {\n            return format;\n        }\n\n        this._longDateFormat[key] = formatUpper\n            .match(formattingTokens)\n            .map(function (tok) {\n                if (\n                    tok === 'MMMM' ||\n                    tok === 'MM' ||\n                    tok === 'DD' ||\n                    tok === 'dddd'\n                ) {\n                    return tok.slice(1);\n                }\n                return tok;\n            })\n            .join('');\n\n        return this._longDateFormat[key];\n    }\n\n    var defaultInvalidDate = 'Invalid date';\n\n    function invalidDate() {\n        return this._invalidDate;\n    }\n\n    var defaultOrdinal = '%d',\n        defaultDayOfMonthOrdinalParse = /\\d{1,2}/;\n\n    function ordinal(number) {\n        return this._ordinal.replace('%d', number);\n    }\n\n    var defaultRelativeTime = {\n        future: 'in %s',\n        past: '%s ago',\n        s: 'a few seconds',\n        ss: '%d seconds',\n        m: 'a minute',\n        mm: '%d minutes',\n        h: 'an hour',\n        hh: '%d hours',\n        d: 'a day',\n        dd: '%d days',\n        w: 'a week',\n        ww: '%d weeks',\n        M: 'a month',\n        MM: '%d months',\n        y: 'a year',\n        yy: '%d years',\n    };\n\n    function relativeTime(number, withoutSuffix, string, isFuture) {\n        var output = this._relativeTime[string];\n        return isFunction(output)\n            ? output(number, withoutSuffix, string, isFuture)\n            : output.replace(/%d/i, number);\n    }\n\n    function pastFuture(diff, output) {\n        var format = this._relativeTime[diff > 0 ? 'future' : 'past'];\n        return isFunction(format) ? format(output) : format.replace(/%s/i, output);\n    }\n\n    var aliases = {};\n\n    function addUnitAlias(unit, shorthand) {\n        var lowerCase = unit.toLowerCase();\n        aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit;\n    }\n\n    function normalizeUnits(units) {\n        return typeof units === 'string'\n            ? aliases[units] || aliases[units.toLowerCase()]\n            : undefined;\n    }\n\n    function normalizeObjectUnits(inputObject) {\n        var normalizedInput = {},\n            normalizedProp,\n            prop;\n\n        for (prop in inputObject) {\n            if (hasOwnProp(inputObject, prop)) {\n                normalizedProp = normalizeUnits(prop);\n                if (normalizedProp) {\n                    normalizedInput[normalizedProp] = inputObject[prop];\n                }\n            }\n        }\n\n        return normalizedInput;\n    }\n\n    var priorities = {};\n\n    function addUnitPriority(unit, priority) {\n        priorities[unit] = priority;\n    }\n\n    function getPrioritizedUnits(unitsObj) {\n        var units = [],\n            u;\n        for (u in unitsObj) {\n            if (hasOwnProp(unitsObj, u)) {\n                units.push({ unit: u, priority: priorities[u] });\n            }\n        }\n        units.sort(function (a, b) {\n            return a.priority - b.priority;\n        });\n        return units;\n    }\n\n    function isLeapYear(year) {\n        return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\n    }\n\n    function absFloor(number) {\n        if (number < 0) {\n            // -0 -> 0\n            return Math.ceil(number) || 0;\n        } else {\n            return Math.floor(number);\n        }\n    }\n\n    function toInt(argumentForCoercion) {\n        var coercedNumber = +argumentForCoercion,\n            value = 0;\n\n        if (coercedNumber !== 0 && isFinite(coercedNumber)) {\n            value = absFloor(coercedNumber);\n        }\n\n        return value;\n    }\n\n    function makeGetSet(unit, keepTime) {\n        return function (value) {\n            if (value != null) {\n                set$1(this, unit, value);\n                hooks.updateOffset(this, keepTime);\n                return this;\n            } else {\n                return get(this, unit);\n            }\n        };\n    }\n\n    function get(mom, unit) {\n        return mom.isValid()\n            ? mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]()\n            : NaN;\n    }\n\n    function set$1(mom, unit, value) {\n        if (mom.isValid() && !isNaN(value)) {\n            if (\n                unit === 'FullYear' &&\n                isLeapYear(mom.year()) &&\n                mom.month() === 1 &&\n                mom.date() === 29\n            ) {\n                value = toInt(value);\n                mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](\n                    value,\n                    mom.month(),\n                    daysInMonth(value, mom.month())\n                );\n            } else {\n                mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value);\n            }\n        }\n    }\n\n    // MOMENTS\n\n    function stringGet(units) {\n        units = normalizeUnits(units);\n        if (isFunction(this[units])) {\n            return this[units]();\n        }\n        return this;\n    }\n\n    function stringSet(units, value) {\n        if (typeof units === 'object') {\n            units = normalizeObjectUnits(units);\n            var prioritized = getPrioritizedUnits(units),\n                i;\n            for (i = 0; i < prioritized.length; i++) {\n                this[prioritized[i].unit](units[prioritized[i].unit]);\n            }\n        } else {\n            units = normalizeUnits(units);\n            if (isFunction(this[units])) {\n                return this[units](value);\n            }\n        }\n        return this;\n    }\n\n    var match1 = /\\d/, //       0 - 9\n        match2 = /\\d\\d/, //      00 - 99\n        match3 = /\\d{3}/, //     000 - 999\n        match4 = /\\d{4}/, //    0000 - 9999\n        match6 = /[+-]?\\d{6}/, // -999999 - 999999\n        match1to2 = /\\d\\d?/, //       0 - 99\n        match3to4 = /\\d\\d\\d\\d?/, //     999 - 9999\n        match5to6 = /\\d\\d\\d\\d\\d\\d?/, //   99999 - 999999\n        match1to3 = /\\d{1,3}/, //       0 - 999\n        match1to4 = /\\d{1,4}/, //       0 - 9999\n        match1to6 = /[+-]?\\d{1,6}/, // -999999 - 999999\n        matchUnsigned = /\\d+/, //       0 - inf\n        matchSigned = /[+-]?\\d+/, //    -inf - inf\n        matchOffset = /Z|[+-]\\d\\d:?\\d\\d/gi, // +00:00 -00:00 +0000 -0000 or Z\n        matchShortOffset = /Z|[+-]\\d\\d(?::?\\d\\d)?/gi, // +00 -00 +00:00 -00:00 +0000 -0000 or Z\n        matchTimestamp = /[+-]?\\d+(\\.\\d{1,3})?/, // 123456789 123456789.123\n        // any word (or two) characters or numbers including two/three word month in arabic.\n        // includes scottish gaelic two word and hyphenated months\n        matchWord = /[0-9]{0,256}['a-z\\u00A0-\\u05FF\\u0700-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFF07\\uFF10-\\uFFEF]{1,256}|[\\u0600-\\u06FF\\/]{1,256}(\\s*?[\\u0600-\\u06FF]{1,256}){1,2}/i,\n        regexes;\n\n    regexes = {};\n\n    function addRegexToken(token, regex, strictRegex) {\n        regexes[token] = isFunction(regex)\n            ? regex\n            : function (isStrict, localeData) {\n                  return isStrict && strictRegex ? strictRegex : regex;\n              };\n    }\n\n    function getParseRegexForToken(token, config) {\n        if (!hasOwnProp(regexes, token)) {\n            return new RegExp(unescapeFormat(token));\n        }\n\n        return regexes[token](config._strict, config._locale);\n    }\n\n    // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript\n    function unescapeFormat(s) {\n        return regexEscape(\n            s\n                .replace('\\\\', '')\n                .replace(/\\\\(\\[)|\\\\(\\])|\\[([^\\]\\[]*)\\]|\\\\(.)/g, function (\n                    matched,\n                    p1,\n                    p2,\n                    p3,\n                    p4\n                ) {\n                    return p1 || p2 || p3 || p4;\n                })\n        );\n    }\n\n    function regexEscape(s) {\n        return s.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n    }\n\n    var tokens = {};\n\n    function addParseToken(token, callback) {\n        var i,\n            func = callback;\n        if (typeof token === 'string') {\n            token = [token];\n        }\n        if (isNumber(callback)) {\n            func = function (input, array) {\n                array[callback] = toInt(input);\n            };\n        }\n        for (i = 0; i < token.length; i++) {\n            tokens[token[i]] = func;\n        }\n    }\n\n    function addWeekParseToken(token, callback) {\n        addParseToken(token, function (input, array, config, token) {\n            config._w = config._w || {};\n            callback(input, config._w, config, token);\n        });\n    }\n\n    function addTimeToArrayFromToken(token, input, config) {\n        if (input != null && hasOwnProp(tokens, token)) {\n            tokens[token](input, config._a, config, token);\n        }\n    }\n\n    var YEAR = 0,\n        MONTH = 1,\n        DATE = 2,\n        HOUR = 3,\n        MINUTE = 4,\n        SECOND = 5,\n        MILLISECOND = 6,\n        WEEK = 7,\n        WEEKDAY = 8;\n\n    function mod(n, x) {\n        return ((n % x) + x) % x;\n    }\n\n    var indexOf;\n\n    if (Array.prototype.indexOf) {\n        indexOf = Array.prototype.indexOf;\n    } else {\n        indexOf = function (o) {\n            // I know\n            var i;\n            for (i = 0; i < this.length; ++i) {\n                if (this[i] === o) {\n                    return i;\n                }\n            }\n            return -1;\n        };\n    }\n\n    function daysInMonth(year, month) {\n        if (isNaN(year) || isNaN(month)) {\n            return NaN;\n        }\n        var modMonth = mod(month, 12);\n        year += (month - modMonth) / 12;\n        return modMonth === 1\n            ? isLeapYear(year)\n                ? 29\n                : 28\n            : 31 - ((modMonth % 7) % 2);\n    }\n\n    // FORMATTING\n\n    addFormatToken('M', ['MM', 2], 'Mo', function () {\n        return this.month() + 1;\n    });\n\n    addFormatToken('MMM', 0, 0, function (format) {\n        return this.localeData().monthsShort(this, format);\n    });\n\n    addFormatToken('MMMM', 0, 0, function (format) {\n        return this.localeData().months(this, format);\n    });\n\n    // ALIASES\n\n    addUnitAlias('month', 'M');\n\n    // PRIORITY\n\n    addUnitPriority('month', 8);\n\n    // PARSING\n\n    addRegexToken('M', match1to2);\n    addRegexToken('MM', match1to2, match2);\n    addRegexToken('MMM', function (isStrict, locale) {\n        return locale.monthsShortRegex(isStrict);\n    });\n    addRegexToken('MMMM', function (isStrict, locale) {\n        return locale.monthsRegex(isStrict);\n    });\n\n    addParseToken(['M', 'MM'], function (input, array) {\n        array[MONTH] = toInt(input) - 1;\n    });\n\n    addParseToken(['MMM', 'MMMM'], function (input, array, config, token) {\n        var month = config._locale.monthsParse(input, token, config._strict);\n        // if we didn't find a month name, mark the date as invalid.\n        if (month != null) {\n            array[MONTH] = month;\n        } else {\n            getParsingFlags(config).invalidMonth = input;\n        }\n    });\n\n    // LOCALES\n\n    var defaultLocaleMonths = 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n            '_'\n        ),\n        defaultLocaleMonthsShort = 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split(\n            '_'\n        ),\n        MONTHS_IN_FORMAT = /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?/,\n        defaultMonthsShortRegex = matchWord,\n        defaultMonthsRegex = matchWord;\n\n    function localeMonths(m, format) {\n        if (!m) {\n            return isArray(this._months)\n                ? this._months\n                : this._months['standalone'];\n        }\n        return isArray(this._months)\n            ? this._months[m.month()]\n            : this._months[\n                  (this._months.isFormat || MONTHS_IN_FORMAT).test(format)\n                      ? 'format'\n                      : 'standalone'\n              ][m.month()];\n    }\n\n    function localeMonthsShort(m, format) {\n        if (!m) {\n            return isArray(this._monthsShort)\n                ? this._monthsShort\n                : this._monthsShort['standalone'];\n        }\n        return isArray(this._monthsShort)\n            ? this._monthsShort[m.month()]\n            : this._monthsShort[\n                  MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'\n              ][m.month()];\n    }\n\n    function handleStrictParse(monthName, format, strict) {\n        var i,\n            ii,\n            mom,\n            llc = monthName.toLocaleLowerCase();\n        if (!this._monthsParse) {\n            // this is not used\n            this._monthsParse = [];\n            this._longMonthsParse = [];\n            this._shortMonthsParse = [];\n            for (i = 0; i < 12; ++i) {\n                mom = createUTC([2000, i]);\n                this._shortMonthsParse[i] = this.monthsShort(\n                    mom,\n                    ''\n                ).toLocaleLowerCase();\n                this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();\n            }\n        }\n\n        if (strict) {\n            if (format === 'MMM') {\n                ii = indexOf.call(this._shortMonthsParse, llc);\n                return ii !== -1 ? ii : null;\n            } else {\n                ii = indexOf.call(this._longMonthsParse, llc);\n                return ii !== -1 ? ii : null;\n            }\n        } else {\n            if (format === 'MMM') {\n                ii = indexOf.call(this._shortMonthsParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._longMonthsParse, llc);\n                return ii !== -1 ? ii : null;\n            } else {\n                ii = indexOf.call(this._longMonthsParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._shortMonthsParse, llc);\n                return ii !== -1 ? ii : null;\n            }\n        }\n    }\n\n    function localeMonthsParse(monthName, format, strict) {\n        var i, mom, regex;\n\n        if (this._monthsParseExact) {\n            return handleStrictParse.call(this, monthName, format, strict);\n        }\n\n        if (!this._monthsParse) {\n            this._monthsParse = [];\n            this._longMonthsParse = [];\n            this._shortMonthsParse = [];\n        }\n\n        // TODO: add sorting\n        // Sorting makes sure if one month (or abbr) is a prefix of another\n        // see sorting in computeMonthsParse\n        for (i = 0; i < 12; i++) {\n            // make the regex if we don't have it already\n            mom = createUTC([2000, i]);\n            if (strict && !this._longMonthsParse[i]) {\n                this._longMonthsParse[i] = new RegExp(\n                    '^' + this.months(mom, '').replace('.', '') + '$',\n                    'i'\n                );\n                this._shortMonthsParse[i] = new RegExp(\n                    '^' + this.monthsShort(mom, '').replace('.', '') + '$',\n                    'i'\n                );\n            }\n            if (!strict && !this._monthsParse[i]) {\n                regex =\n                    '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');\n                this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');\n            }\n            // test the regex\n            if (\n                strict &&\n                format === 'MMMM' &&\n                this._longMonthsParse[i].test(monthName)\n            ) {\n                return i;\n            } else if (\n                strict &&\n                format === 'MMM' &&\n                this._shortMonthsParse[i].test(monthName)\n            ) {\n                return i;\n            } else if (!strict && this._monthsParse[i].test(monthName)) {\n                return i;\n            }\n        }\n    }\n\n    // MOMENTS\n\n    function setMonth(mom, value) {\n        var dayOfMonth;\n\n        if (!mom.isValid()) {\n            // No op\n            return mom;\n        }\n\n        if (typeof value === 'string') {\n            if (/^\\d+$/.test(value)) {\n                value = toInt(value);\n            } else {\n                value = mom.localeData().monthsParse(value);\n                // TODO: Another silent failure?\n                if (!isNumber(value)) {\n                    return mom;\n                }\n            }\n        }\n\n        dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value));\n        mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth);\n        return mom;\n    }\n\n    function getSetMonth(value) {\n        if (value != null) {\n            setMonth(this, value);\n            hooks.updateOffset(this, true);\n            return this;\n        } else {\n            return get(this, 'Month');\n        }\n    }\n\n    function getDaysInMonth() {\n        return daysInMonth(this.year(), this.month());\n    }\n\n    function monthsShortRegex(isStrict) {\n        if (this._monthsParseExact) {\n            if (!hasOwnProp(this, '_monthsRegex')) {\n                computeMonthsParse.call(this);\n            }\n            if (isStrict) {\n                return this._monthsShortStrictRegex;\n            } else {\n                return this._monthsShortRegex;\n            }\n        } else {\n            if (!hasOwnProp(this, '_monthsShortRegex')) {\n                this._monthsShortRegex = defaultMonthsShortRegex;\n            }\n            return this._monthsShortStrictRegex && isStrict\n                ? this._monthsShortStrictRegex\n                : this._monthsShortRegex;\n        }\n    }\n\n    function monthsRegex(isStrict) {\n        if (this._monthsParseExact) {\n            if (!hasOwnProp(this, '_monthsRegex')) {\n                computeMonthsParse.call(this);\n            }\n            if (isStrict) {\n                return this._monthsStrictRegex;\n            } else {\n                return this._monthsRegex;\n            }\n        } else {\n            if (!hasOwnProp(this, '_monthsRegex')) {\n                this._monthsRegex = defaultMonthsRegex;\n            }\n            return this._monthsStrictRegex && isStrict\n                ? this._monthsStrictRegex\n                : this._monthsRegex;\n        }\n    }\n\n    function computeMonthsParse() {\n        function cmpLenRev(a, b) {\n            return b.length - a.length;\n        }\n\n        var shortPieces = [],\n            longPieces = [],\n            mixedPieces = [],\n            i,\n            mom;\n        for (i = 0; i < 12; i++) {\n            // make the regex if we don't have it already\n            mom = createUTC([2000, i]);\n            shortPieces.push(this.monthsShort(mom, ''));\n            longPieces.push(this.months(mom, ''));\n            mixedPieces.push(this.months(mom, ''));\n            mixedPieces.push(this.monthsShort(mom, ''));\n        }\n        // Sorting makes sure if one month (or abbr) is a prefix of another it\n        // will match the longer piece.\n        shortPieces.sort(cmpLenRev);\n        longPieces.sort(cmpLenRev);\n        mixedPieces.sort(cmpLenRev);\n        for (i = 0; i < 12; i++) {\n            shortPieces[i] = regexEscape(shortPieces[i]);\n            longPieces[i] = regexEscape(longPieces[i]);\n        }\n        for (i = 0; i < 24; i++) {\n            mixedPieces[i] = regexEscape(mixedPieces[i]);\n        }\n\n        this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n        this._monthsShortRegex = this._monthsRegex;\n        this._monthsStrictRegex = new RegExp(\n            '^(' + longPieces.join('|') + ')',\n            'i'\n        );\n        this._monthsShortStrictRegex = new RegExp(\n            '^(' + shortPieces.join('|') + ')',\n            'i'\n        );\n    }\n\n    // FORMATTING\n\n    addFormatToken('Y', 0, 0, function () {\n        var y = this.year();\n        return y <= 9999 ? zeroFill(y, 4) : '+' + y;\n    });\n\n    addFormatToken(0, ['YY', 2], 0, function () {\n        return this.year() % 100;\n    });\n\n    addFormatToken(0, ['YYYY', 4], 0, 'year');\n    addFormatToken(0, ['YYYYY', 5], 0, 'year');\n    addFormatToken(0, ['YYYYYY', 6, true], 0, 'year');\n\n    // ALIASES\n\n    addUnitAlias('year', 'y');\n\n    // PRIORITIES\n\n    addUnitPriority('year', 1);\n\n    // PARSING\n\n    addRegexToken('Y', matchSigned);\n    addRegexToken('YY', match1to2, match2);\n    addRegexToken('YYYY', match1to4, match4);\n    addRegexToken('YYYYY', match1to6, match6);\n    addRegexToken('YYYYYY', match1to6, match6);\n\n    addParseToken(['YYYYY', 'YYYYYY'], YEAR);\n    addParseToken('YYYY', function (input, array) {\n        array[YEAR] =\n            input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input);\n    });\n    addParseToken('YY', function (input, array) {\n        array[YEAR] = hooks.parseTwoDigitYear(input);\n    });\n    addParseToken('Y', function (input, array) {\n        array[YEAR] = parseInt(input, 10);\n    });\n\n    // HELPERS\n\n    function daysInYear(year) {\n        return isLeapYear(year) ? 366 : 365;\n    }\n\n    // HOOKS\n\n    hooks.parseTwoDigitYear = function (input) {\n        return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);\n    };\n\n    // MOMENTS\n\n    var getSetYear = makeGetSet('FullYear', true);\n\n    function getIsLeapYear() {\n        return isLeapYear(this.year());\n    }\n\n    function createDate(y, m, d, h, M, s, ms) {\n        // can't just apply() to create a date:\n        // https://stackoverflow.com/q/181348\n        var date;\n        // the date constructor remaps years 0-99 to 1900-1999\n        if (y < 100 && y >= 0) {\n            // preserve leap years using a full 400 year cycle, then reset\n            date = new Date(y + 400, m, d, h, M, s, ms);\n            if (isFinite(date.getFullYear())) {\n                date.setFullYear(y);\n            }\n        } else {\n            date = new Date(y, m, d, h, M, s, ms);\n        }\n\n        return date;\n    }\n\n    function createUTCDate(y) {\n        var date, args;\n        // the Date.UTC function remaps years 0-99 to 1900-1999\n        if (y < 100 && y >= 0) {\n            args = Array.prototype.slice.call(arguments);\n            // preserve leap years using a full 400 year cycle, then reset\n            args[0] = y + 400;\n            date = new Date(Date.UTC.apply(null, args));\n            if (isFinite(date.getUTCFullYear())) {\n                date.setUTCFullYear(y);\n            }\n        } else {\n            date = new Date(Date.UTC.apply(null, arguments));\n        }\n\n        return date;\n    }\n\n    // start-of-first-week - start-of-year\n    function firstWeekOffset(year, dow, doy) {\n        var // first-week day -- which january is always in the first week (4 for iso, 1 for other)\n            fwd = 7 + dow - doy,\n            // first-week day local weekday -- which local weekday is fwd\n            fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;\n\n        return -fwdlw + fwd - 1;\n    }\n\n    // https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday\n    function dayOfYearFromWeeks(year, week, weekday, dow, doy) {\n        var localWeekday = (7 + weekday - dow) % 7,\n            weekOffset = firstWeekOffset(year, dow, doy),\n            dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,\n            resYear,\n            resDayOfYear;\n\n        if (dayOfYear <= 0) {\n            resYear = year - 1;\n            resDayOfYear = daysInYear(resYear) + dayOfYear;\n        } else if (dayOfYear > daysInYear(year)) {\n            resYear = year + 1;\n            resDayOfYear = dayOfYear - daysInYear(year);\n        } else {\n            resYear = year;\n            resDayOfYear = dayOfYear;\n        }\n\n        return {\n            year: resYear,\n            dayOfYear: resDayOfYear,\n        };\n    }\n\n    function weekOfYear(mom, dow, doy) {\n        var weekOffset = firstWeekOffset(mom.year(), dow, doy),\n            week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,\n            resWeek,\n            resYear;\n\n        if (week < 1) {\n            resYear = mom.year() - 1;\n            resWeek = week + weeksInYear(resYear, dow, doy);\n        } else if (week > weeksInYear(mom.year(), dow, doy)) {\n            resWeek = week - weeksInYear(mom.year(), dow, doy);\n            resYear = mom.year() + 1;\n        } else {\n            resYear = mom.year();\n            resWeek = week;\n        }\n\n        return {\n            week: resWeek,\n            year: resYear,\n        };\n    }\n\n    function weeksInYear(year, dow, doy) {\n        var weekOffset = firstWeekOffset(year, dow, doy),\n            weekOffsetNext = firstWeekOffset(year + 1, dow, doy);\n        return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;\n    }\n\n    // FORMATTING\n\n    addFormatToken('w', ['ww', 2], 'wo', 'week');\n    addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek');\n\n    // ALIASES\n\n    addUnitAlias('week', 'w');\n    addUnitAlias('isoWeek', 'W');\n\n    // PRIORITIES\n\n    addUnitPriority('week', 5);\n    addUnitPriority('isoWeek', 5);\n\n    // PARSING\n\n    addRegexToken('w', match1to2);\n    addRegexToken('ww', match1to2, match2);\n    addRegexToken('W', match1to2);\n    addRegexToken('WW', match1to2, match2);\n\n    addWeekParseToken(['w', 'ww', 'W', 'WW'], function (\n        input,\n        week,\n        config,\n        token\n    ) {\n        week[token.substr(0, 1)] = toInt(input);\n    });\n\n    // HELPERS\n\n    // LOCALES\n\n    function localeWeek(mom) {\n        return weekOfYear(mom, this._week.dow, this._week.doy).week;\n    }\n\n    var defaultLocaleWeek = {\n        dow: 0, // Sunday is the first day of the week.\n        doy: 6, // The week that contains Jan 6th is the first week of the year.\n    };\n\n    function localeFirstDayOfWeek() {\n        return this._week.dow;\n    }\n\n    function localeFirstDayOfYear() {\n        return this._week.doy;\n    }\n\n    // MOMENTS\n\n    function getSetWeek(input) {\n        var week = this.localeData().week(this);\n        return input == null ? week : this.add((input - week) * 7, 'd');\n    }\n\n    function getSetISOWeek(input) {\n        var week = weekOfYear(this, 1, 4).week;\n        return input == null ? week : this.add((input - week) * 7, 'd');\n    }\n\n    // FORMATTING\n\n    addFormatToken('d', 0, 'do', 'day');\n\n    addFormatToken('dd', 0, 0, function (format) {\n        return this.localeData().weekdaysMin(this, format);\n    });\n\n    addFormatToken('ddd', 0, 0, function (format) {\n        return this.localeData().weekdaysShort(this, format);\n    });\n\n    addFormatToken('dddd', 0, 0, function (format) {\n        return this.localeData().weekdays(this, format);\n    });\n\n    addFormatToken('e', 0, 0, 'weekday');\n    addFormatToken('E', 0, 0, 'isoWeekday');\n\n    // ALIASES\n\n    addUnitAlias('day', 'd');\n    addUnitAlias('weekday', 'e');\n    addUnitAlias('isoWeekday', 'E');\n\n    // PRIORITY\n    addUnitPriority('day', 11);\n    addUnitPriority('weekday', 11);\n    addUnitPriority('isoWeekday', 11);\n\n    // PARSING\n\n    addRegexToken('d', match1to2);\n    addRegexToken('e', match1to2);\n    addRegexToken('E', match1to2);\n    addRegexToken('dd', function (isStrict, locale) {\n        return locale.weekdaysMinRegex(isStrict);\n    });\n    addRegexToken('ddd', function (isStrict, locale) {\n        return locale.weekdaysShortRegex(isStrict);\n    });\n    addRegexToken('dddd', function (isStrict, locale) {\n        return locale.weekdaysRegex(isStrict);\n    });\n\n    addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {\n        var weekday = config._locale.weekdaysParse(input, token, config._strict);\n        // if we didn't get a weekday name, mark the date as invalid\n        if (weekday != null) {\n            week.d = weekday;\n        } else {\n            getParsingFlags(config).invalidWeekday = input;\n        }\n    });\n\n    addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {\n        week[token] = toInt(input);\n    });\n\n    // HELPERS\n\n    function parseWeekday(input, locale) {\n        if (typeof input !== 'string') {\n            return input;\n        }\n\n        if (!isNaN(input)) {\n            return parseInt(input, 10);\n        }\n\n        input = locale.weekdaysParse(input);\n        if (typeof input === 'number') {\n            return input;\n        }\n\n        return null;\n    }\n\n    function parseIsoWeekday(input, locale) {\n        if (typeof input === 'string') {\n            return locale.weekdaysParse(input) % 7 || 7;\n        }\n        return isNaN(input) ? null : input;\n    }\n\n    // LOCALES\n    function shiftWeekdays(ws, n) {\n        return ws.slice(n, 7).concat(ws.slice(0, n));\n    }\n\n    var defaultLocaleWeekdays = 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n            '_'\n        ),\n        defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n        defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n        defaultWeekdaysRegex = matchWord,\n        defaultWeekdaysShortRegex = matchWord,\n        defaultWeekdaysMinRegex = matchWord;\n\n    function localeWeekdays(m, format) {\n        var weekdays = isArray(this._weekdays)\n            ? this._weekdays\n            : this._weekdays[\n                  m && m !== true && this._weekdays.isFormat.test(format)\n                      ? 'format'\n                      : 'standalone'\n              ];\n        return m === true\n            ? shiftWeekdays(weekdays, this._week.dow)\n            : m\n            ? weekdays[m.day()]\n            : weekdays;\n    }\n\n    function localeWeekdaysShort(m) {\n        return m === true\n            ? shiftWeekdays(this._weekdaysShort, this._week.dow)\n            : m\n            ? this._weekdaysShort[m.day()]\n            : this._weekdaysShort;\n    }\n\n    function localeWeekdaysMin(m) {\n        return m === true\n            ? shiftWeekdays(this._weekdaysMin, this._week.dow)\n            : m\n            ? this._weekdaysMin[m.day()]\n            : this._weekdaysMin;\n    }\n\n    function handleStrictParse$1(weekdayName, format, strict) {\n        var i,\n            ii,\n            mom,\n            llc = weekdayName.toLocaleLowerCase();\n        if (!this._weekdaysParse) {\n            this._weekdaysParse = [];\n            this._shortWeekdaysParse = [];\n            this._minWeekdaysParse = [];\n\n            for (i = 0; i < 7; ++i) {\n                mom = createUTC([2000, 1]).day(i);\n                this._minWeekdaysParse[i] = this.weekdaysMin(\n                    mom,\n                    ''\n                ).toLocaleLowerCase();\n                this._shortWeekdaysParse[i] = this.weekdaysShort(\n                    mom,\n                    ''\n                ).toLocaleLowerCase();\n                this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();\n            }\n        }\n\n        if (strict) {\n            if (format === 'dddd') {\n                ii = indexOf.call(this._weekdaysParse, llc);\n                return ii !== -1 ? ii : null;\n            } else if (format === 'ddd') {\n                ii = indexOf.call(this._shortWeekdaysParse, llc);\n                return ii !== -1 ? ii : null;\n            } else {\n                ii = indexOf.call(this._minWeekdaysParse, llc);\n                return ii !== -1 ? ii : null;\n            }\n        } else {\n            if (format === 'dddd') {\n                ii = indexOf.call(this._weekdaysParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._shortWeekdaysParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._minWeekdaysParse, llc);\n                return ii !== -1 ? ii : null;\n            } else if (format === 'ddd') {\n                ii = indexOf.call(this._shortWeekdaysParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._weekdaysParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._minWeekdaysParse, llc);\n                return ii !== -1 ? ii : null;\n            } else {\n                ii = indexOf.call(this._minWeekdaysParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._weekdaysParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._shortWeekdaysParse, llc);\n                return ii !== -1 ? ii : null;\n            }\n        }\n    }\n\n    function localeWeekdaysParse(weekdayName, format, strict) {\n        var i, mom, regex;\n\n        if (this._weekdaysParseExact) {\n            return handleStrictParse$1.call(this, weekdayName, format, strict);\n        }\n\n        if (!this._weekdaysParse) {\n            this._weekdaysParse = [];\n            this._minWeekdaysParse = [];\n            this._shortWeekdaysParse = [];\n            this._fullWeekdaysParse = [];\n        }\n\n        for (i = 0; i < 7; i++) {\n            // make the regex if we don't have it already\n\n            mom = createUTC([2000, 1]).day(i);\n            if (strict && !this._fullWeekdaysParse[i]) {\n                this._fullWeekdaysParse[i] = new RegExp(\n                    '^' + this.weekdays(mom, '').replace('.', '\\\\.?') + '$',\n                    'i'\n                );\n                this._shortWeekdaysParse[i] = new RegExp(\n                    '^' + this.weekdaysShort(mom, '').replace('.', '\\\\.?') + '$',\n                    'i'\n                );\n                this._minWeekdaysParse[i] = new RegExp(\n                    '^' + this.weekdaysMin(mom, '').replace('.', '\\\\.?') + '$',\n                    'i'\n                );\n            }\n            if (!this._weekdaysParse[i]) {\n                regex =\n                    '^' +\n                    this.weekdays(mom, '') +\n                    '|^' +\n                    this.weekdaysShort(mom, '') +\n                    '|^' +\n                    this.weekdaysMin(mom, '');\n                this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');\n            }\n            // test the regex\n            if (\n                strict &&\n                format === 'dddd' &&\n                this._fullWeekdaysParse[i].test(weekdayName)\n            ) {\n                return i;\n            } else if (\n                strict &&\n                format === 'ddd' &&\n                this._shortWeekdaysParse[i].test(weekdayName)\n            ) {\n                return i;\n            } else if (\n                strict &&\n                format === 'dd' &&\n                this._minWeekdaysParse[i].test(weekdayName)\n            ) {\n                return i;\n            } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {\n                return i;\n            }\n        }\n    }\n\n    // MOMENTS\n\n    function getSetDayOfWeek(input) {\n        if (!this.isValid()) {\n            return input != null ? this : NaN;\n        }\n        var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay();\n        if (input != null) {\n            input = parseWeekday(input, this.localeData());\n            return this.add(input - day, 'd');\n        } else {\n            return day;\n        }\n    }\n\n    function getSetLocaleDayOfWeek(input) {\n        if (!this.isValid()) {\n            return input != null ? this : NaN;\n        }\n        var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;\n        return input == null ? weekday : this.add(input - weekday, 'd');\n    }\n\n    function getSetISODayOfWeek(input) {\n        if (!this.isValid()) {\n            return input != null ? this : NaN;\n        }\n\n        // behaves the same as moment#day except\n        // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)\n        // as a setter, sunday should belong to the previous week.\n\n        if (input != null) {\n            var weekday = parseIsoWeekday(input, this.localeData());\n            return this.day(this.day() % 7 ? weekday : weekday - 7);\n        } else {\n            return this.day() || 7;\n        }\n    }\n\n    function weekdaysRegex(isStrict) {\n        if (this._weekdaysParseExact) {\n            if (!hasOwnProp(this, '_weekdaysRegex')) {\n                computeWeekdaysParse.call(this);\n            }\n            if (isStrict) {\n                return this._weekdaysStrictRegex;\n            } else {\n                return this._weekdaysRegex;\n            }\n        } else {\n            if (!hasOwnProp(this, '_weekdaysRegex')) {\n                this._weekdaysRegex = defaultWeekdaysRegex;\n            }\n            return this._weekdaysStrictRegex && isStrict\n                ? this._weekdaysStrictRegex\n                : this._weekdaysRegex;\n        }\n    }\n\n    function weekdaysShortRegex(isStrict) {\n        if (this._weekdaysParseExact) {\n            if (!hasOwnProp(this, '_weekdaysRegex')) {\n                computeWeekdaysParse.call(this);\n            }\n            if (isStrict) {\n                return this._weekdaysShortStrictRegex;\n            } else {\n                return this._weekdaysShortRegex;\n            }\n        } else {\n            if (!hasOwnProp(this, '_weekdaysShortRegex')) {\n                this._weekdaysShortRegex = defaultWeekdaysShortRegex;\n            }\n            return this._weekdaysShortStrictRegex && isStrict\n                ? this._weekdaysShortStrictRegex\n                : this._weekdaysShortRegex;\n        }\n    }\n\n    function weekdaysMinRegex(isStrict) {\n        if (this._weekdaysParseExact) {\n            if (!hasOwnProp(this, '_weekdaysRegex')) {\n                computeWeekdaysParse.call(this);\n            }\n            if (isStrict) {\n                return this._weekdaysMinStrictRegex;\n            } else {\n                return this._weekdaysMinRegex;\n            }\n        } else {\n            if (!hasOwnProp(this, '_weekdaysMinRegex')) {\n                this._weekdaysMinRegex = defaultWeekdaysMinRegex;\n            }\n            return this._weekdaysMinStrictRegex && isStrict\n                ? this._weekdaysMinStrictRegex\n                : this._weekdaysMinRegex;\n        }\n    }\n\n    function computeWeekdaysParse() {\n        function cmpLenRev(a, b) {\n            return b.length - a.length;\n        }\n\n        var minPieces = [],\n            shortPieces = [],\n            longPieces = [],\n            mixedPieces = [],\n            i,\n            mom,\n            minp,\n            shortp,\n            longp;\n        for (i = 0; i < 7; i++) {\n            // make the regex if we don't have it already\n            mom = createUTC([2000, 1]).day(i);\n            minp = regexEscape(this.weekdaysMin(mom, ''));\n            shortp = regexEscape(this.weekdaysShort(mom, ''));\n            longp = regexEscape(this.weekdays(mom, ''));\n            minPieces.push(minp);\n            shortPieces.push(shortp);\n            longPieces.push(longp);\n            mixedPieces.push(minp);\n            mixedPieces.push(shortp);\n            mixedPieces.push(longp);\n        }\n        // Sorting makes sure if one weekday (or abbr) is a prefix of another it\n        // will match the longer piece.\n        minPieces.sort(cmpLenRev);\n        shortPieces.sort(cmpLenRev);\n        longPieces.sort(cmpLenRev);\n        mixedPieces.sort(cmpLenRev);\n\n        this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n        this._weekdaysShortRegex = this._weekdaysRegex;\n        this._weekdaysMinRegex = this._weekdaysRegex;\n\n        this._weekdaysStrictRegex = new RegExp(\n            '^(' + longPieces.join('|') + ')',\n            'i'\n        );\n        this._weekdaysShortStrictRegex = new RegExp(\n            '^(' + shortPieces.join('|') + ')',\n            'i'\n        );\n        this._weekdaysMinStrictRegex = new RegExp(\n            '^(' + minPieces.join('|') + ')',\n            'i'\n        );\n    }\n\n    // FORMATTING\n\n    function hFormat() {\n        return this.hours() % 12 || 12;\n    }\n\n    function kFormat() {\n        return this.hours() || 24;\n    }\n\n    addFormatToken('H', ['HH', 2], 0, 'hour');\n    addFormatToken('h', ['hh', 2], 0, hFormat);\n    addFormatToken('k', ['kk', 2], 0, kFormat);\n\n    addFormatToken('hmm', 0, 0, function () {\n        return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);\n    });\n\n    addFormatToken('hmmss', 0, 0, function () {\n        return (\n            '' +\n            hFormat.apply(this) +\n            zeroFill(this.minutes(), 2) +\n            zeroFill(this.seconds(), 2)\n        );\n    });\n\n    addFormatToken('Hmm', 0, 0, function () {\n        return '' + this.hours() + zeroFill(this.minutes(), 2);\n    });\n\n    addFormatToken('Hmmss', 0, 0, function () {\n        return (\n            '' +\n            this.hours() +\n            zeroFill(this.minutes(), 2) +\n            zeroFill(this.seconds(), 2)\n        );\n    });\n\n    function meridiem(token, lowercase) {\n        addFormatToken(token, 0, 0, function () {\n            return this.localeData().meridiem(\n                this.hours(),\n                this.minutes(),\n                lowercase\n            );\n        });\n    }\n\n    meridiem('a', true);\n    meridiem('A', false);\n\n    // ALIASES\n\n    addUnitAlias('hour', 'h');\n\n    // PRIORITY\n    addUnitPriority('hour', 13);\n\n    // PARSING\n\n    function matchMeridiem(isStrict, locale) {\n        return locale._meridiemParse;\n    }\n\n    addRegexToken('a', matchMeridiem);\n    addRegexToken('A', matchMeridiem);\n    addRegexToken('H', match1to2);\n    addRegexToken('h', match1to2);\n    addRegexToken('k', match1to2);\n    addRegexToken('HH', match1to2, match2);\n    addRegexToken('hh', match1to2, match2);\n    addRegexToken('kk', match1to2, match2);\n\n    addRegexToken('hmm', match3to4);\n    addRegexToken('hmmss', match5to6);\n    addRegexToken('Hmm', match3to4);\n    addRegexToken('Hmmss', match5to6);\n\n    addParseToken(['H', 'HH'], HOUR);\n    addParseToken(['k', 'kk'], function (input, array, config) {\n        var kInput = toInt(input);\n        array[HOUR] = kInput === 24 ? 0 : kInput;\n    });\n    addParseToken(['a', 'A'], function (input, array, config) {\n        config._isPm = config._locale.isPM(input);\n        config._meridiem = input;\n    });\n    addParseToken(['h', 'hh'], function (input, array, config) {\n        array[HOUR] = toInt(input);\n        getParsingFlags(config).bigHour = true;\n    });\n    addParseToken('hmm', function (input, array, config) {\n        var pos = input.length - 2;\n        array[HOUR] = toInt(input.substr(0, pos));\n        array[MINUTE] = toInt(input.substr(pos));\n        getParsingFlags(config).bigHour = true;\n    });\n    addParseToken('hmmss', function (input, array, config) {\n        var pos1 = input.length - 4,\n            pos2 = input.length - 2;\n        array[HOUR] = toInt(input.substr(0, pos1));\n        array[MINUTE] = toInt(input.substr(pos1, 2));\n        array[SECOND] = toInt(input.substr(pos2));\n        getParsingFlags(config).bigHour = true;\n    });\n    addParseToken('Hmm', function (input, array, config) {\n        var pos = input.length - 2;\n        array[HOUR] = toInt(input.substr(0, pos));\n        array[MINUTE] = toInt(input.substr(pos));\n    });\n    addParseToken('Hmmss', function (input, array, config) {\n        var pos1 = input.length - 4,\n            pos2 = input.length - 2;\n        array[HOUR] = toInt(input.substr(0, pos1));\n        array[MINUTE] = toInt(input.substr(pos1, 2));\n        array[SECOND] = toInt(input.substr(pos2));\n    });\n\n    // LOCALES\n\n    function localeIsPM(input) {\n        // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays\n        // Using charAt should be more compatible.\n        return (input + '').toLowerCase().charAt(0) === 'p';\n    }\n\n    var defaultLocaleMeridiemParse = /[ap]\\.?m?\\.?/i,\n        // Setting the hour should keep the time, because the user explicitly\n        // specified which hour they want. So trying to maintain the same hour (in\n        // a new timezone) makes sense. Adding/subtracting hours does not follow\n        // this rule.\n        getSetHour = makeGetSet('Hours', true);\n\n    function localeMeridiem(hours, minutes, isLower) {\n        if (hours > 11) {\n            return isLower ? 'pm' : 'PM';\n        } else {\n            return isLower ? 'am' : 'AM';\n        }\n    }\n\n    var baseConfig = {\n        calendar: defaultCalendar,\n        longDateFormat: defaultLongDateFormat,\n        invalidDate: defaultInvalidDate,\n        ordinal: defaultOrdinal,\n        dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse,\n        relativeTime: defaultRelativeTime,\n\n        months: defaultLocaleMonths,\n        monthsShort: defaultLocaleMonthsShort,\n\n        week: defaultLocaleWeek,\n\n        weekdays: defaultLocaleWeekdays,\n        weekdaysMin: defaultLocaleWeekdaysMin,\n        weekdaysShort: defaultLocaleWeekdaysShort,\n\n        meridiemParse: defaultLocaleMeridiemParse,\n    };\n\n    // internal storage for locale config files\n    var locales = {},\n        localeFamilies = {},\n        globalLocale;\n\n    function commonPrefix(arr1, arr2) {\n        var i,\n            minl = Math.min(arr1.length, arr2.length);\n        for (i = 0; i < minl; i += 1) {\n            if (arr1[i] !== arr2[i]) {\n                return i;\n            }\n        }\n        return minl;\n    }\n\n    function normalizeLocale(key) {\n        return key ? key.toLowerCase().replace('_', '-') : key;\n    }\n\n    // pick the locale from the array\n    // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each\n    // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root\n    function chooseLocale(names) {\n        var i = 0,\n            j,\n            next,\n            locale,\n            split;\n\n        while (i < names.length) {\n            split = normalizeLocale(names[i]).split('-');\n            j = split.length;\n            next = normalizeLocale(names[i + 1]);\n            next = next ? next.split('-') : null;\n            while (j > 0) {\n                locale = loadLocale(split.slice(0, j).join('-'));\n                if (locale) {\n                    return locale;\n                }\n                if (\n                    next &&\n                    next.length >= j &&\n                    commonPrefix(split, next) >= j - 1\n                ) {\n                    //the next array item is better than a shallower substring of this one\n                    break;\n                }\n                j--;\n            }\n            i++;\n        }\n        return globalLocale;\n    }\n\n    function loadLocale(name) {\n        var oldLocale = null,\n            aliasedRequire;\n        // TODO: Find a better way to register and load all the locales in Node\n        if (\n            locales[name] === undefined &&\n            typeof module !== 'undefined' &&\n            module &&\n            module.exports\n        ) {\n            try {\n                oldLocale = globalLocale._abbr;\n                aliasedRequire = require;\n                aliasedRequire('./locale/' + name);\n                getSetGlobalLocale(oldLocale);\n            } catch (e) {\n                // mark as not found to avoid repeating expensive file require call causing high CPU\n                // when trying to find en-US, en_US, en-us for every format call\n                locales[name] = null; // null means not found\n            }\n        }\n        return locales[name];\n    }\n\n    // This function will load locale and then set the global locale.  If\n    // no arguments are passed in, it will simply return the current global\n    // locale key.\n    function getSetGlobalLocale(key, values) {\n        var data;\n        if (key) {\n            if (isUndefined(values)) {\n                data = getLocale(key);\n            } else {\n                data = defineLocale(key, values);\n            }\n\n            if (data) {\n                // moment.duration._locale = moment._locale = data;\n                globalLocale = data;\n            } else {\n                if (typeof console !== 'undefined' && console.warn) {\n                    //warn user if arguments are passed but the locale could not be set\n                    console.warn(\n                        'Locale ' + key + ' not found. Did you forget to load it?'\n                    );\n                }\n            }\n        }\n\n        return globalLocale._abbr;\n    }\n\n    function defineLocale(name, config) {\n        if (config !== null) {\n            var locale,\n                parentConfig = baseConfig;\n            config.abbr = name;\n            if (locales[name] != null) {\n                deprecateSimple(\n                    'defineLocaleOverride',\n                    'use moment.updateLocale(localeName, config) to change ' +\n                        'an existing locale. moment.defineLocale(localeName, ' +\n                        'config) should only be used for creating a new locale ' +\n                        'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.'\n                );\n                parentConfig = locales[name]._config;\n            } else if (config.parentLocale != null) {\n                if (locales[config.parentLocale] != null) {\n                    parentConfig = locales[config.parentLocale]._config;\n                } else {\n                    locale = loadLocale(config.parentLocale);\n                    if (locale != null) {\n                        parentConfig = locale._config;\n                    } else {\n                        if (!localeFamilies[config.parentLocale]) {\n                            localeFamilies[config.parentLocale] = [];\n                        }\n                        localeFamilies[config.parentLocale].push({\n                            name: name,\n                            config: config,\n                        });\n                        return null;\n                    }\n                }\n            }\n            locales[name] = new Locale(mergeConfigs(parentConfig, config));\n\n            if (localeFamilies[name]) {\n                localeFamilies[name].forEach(function (x) {\n                    defineLocale(x.name, x.config);\n                });\n            }\n\n            // backwards compat for now: also set the locale\n            // make sure we set the locale AFTER all child locales have been\n            // created, so we won't end up with the child locale set.\n            getSetGlobalLocale(name);\n\n            return locales[name];\n        } else {\n            // useful for testing\n            delete locales[name];\n            return null;\n        }\n    }\n\n    function updateLocale(name, config) {\n        if (config != null) {\n            var locale,\n                tmpLocale,\n                parentConfig = baseConfig;\n\n            if (locales[name] != null && locales[name].parentLocale != null) {\n                // Update existing child locale in-place to avoid memory-leaks\n                locales[name].set(mergeConfigs(locales[name]._config, config));\n            } else {\n                // MERGE\n                tmpLocale = loadLocale(name);\n                if (tmpLocale != null) {\n                    parentConfig = tmpLocale._config;\n                }\n                config = mergeConfigs(parentConfig, config);\n                if (tmpLocale == null) {\n                    // updateLocale is called for creating a new locale\n                    // Set abbr so it will have a name (getters return\n                    // undefined otherwise).\n                    config.abbr = name;\n                }\n                locale = new Locale(config);\n                locale.parentLocale = locales[name];\n                locales[name] = locale;\n            }\n\n            // backwards compat for now: also set the locale\n            getSetGlobalLocale(name);\n        } else {\n            // pass null for config to unupdate, useful for tests\n            if (locales[name] != null) {\n                if (locales[name].parentLocale != null) {\n                    locales[name] = locales[name].parentLocale;\n                    if (name === getSetGlobalLocale()) {\n                        getSetGlobalLocale(name);\n                    }\n                } else if (locales[name] != null) {\n                    delete locales[name];\n                }\n            }\n        }\n        return locales[name];\n    }\n\n    // returns locale data\n    function getLocale(key) {\n        var locale;\n\n        if (key && key._locale && key._locale._abbr) {\n            key = key._locale._abbr;\n        }\n\n        if (!key) {\n            return globalLocale;\n        }\n\n        if (!isArray(key)) {\n            //short-circuit everything else\n            locale = loadLocale(key);\n            if (locale) {\n                return locale;\n            }\n            key = [key];\n        }\n\n        return chooseLocale(key);\n    }\n\n    function listLocales() {\n        return keys(locales);\n    }\n\n    function checkOverflow(m) {\n        var overflow,\n            a = m._a;\n\n        if (a && getParsingFlags(m).overflow === -2) {\n            overflow =\n                a[MONTH] < 0 || a[MONTH] > 11\n                    ? MONTH\n                    : a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH])\n                    ? DATE\n                    : a[HOUR] < 0 ||\n                      a[HOUR] > 24 ||\n                      (a[HOUR] === 24 &&\n                          (a[MINUTE] !== 0 ||\n                              a[SECOND] !== 0 ||\n                              a[MILLISECOND] !== 0))\n                    ? HOUR\n                    : a[MINUTE] < 0 || a[MINUTE] > 59\n                    ? MINUTE\n                    : a[SECOND] < 0 || a[SECOND] > 59\n                    ? SECOND\n                    : a[MILLISECOND] < 0 || a[MILLISECOND] > 999\n                    ? MILLISECOND\n                    : -1;\n\n            if (\n                getParsingFlags(m)._overflowDayOfYear &&\n                (overflow < YEAR || overflow > DATE)\n            ) {\n                overflow = DATE;\n            }\n            if (getParsingFlags(m)._overflowWeeks && overflow === -1) {\n                overflow = WEEK;\n            }\n            if (getParsingFlags(m)._overflowWeekday && overflow === -1) {\n                overflow = WEEKDAY;\n            }\n\n            getParsingFlags(m).overflow = overflow;\n        }\n\n        return m;\n    }\n\n    // iso 8601 regex\n    // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00)\n    var extendedIsoRegex = /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n        basicIsoRegex = /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d|))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n        tzRegex = /Z|[+-]\\d\\d(?::?\\d\\d)?/,\n        isoDates = [\n            ['YYYYYY-MM-DD', /[+-]\\d{6}-\\d\\d-\\d\\d/],\n            ['YYYY-MM-DD', /\\d{4}-\\d\\d-\\d\\d/],\n            ['GGGG-[W]WW-E', /\\d{4}-W\\d\\d-\\d/],\n            ['GGGG-[W]WW', /\\d{4}-W\\d\\d/, false],\n            ['YYYY-DDD', /\\d{4}-\\d{3}/],\n            ['YYYY-MM', /\\d{4}-\\d\\d/, false],\n            ['YYYYYYMMDD', /[+-]\\d{10}/],\n            ['YYYYMMDD', /\\d{8}/],\n            ['GGGG[W]WWE', /\\d{4}W\\d{3}/],\n            ['GGGG[W]WW', /\\d{4}W\\d{2}/, false],\n            ['YYYYDDD', /\\d{7}/],\n            ['YYYYMM', /\\d{6}/, false],\n            ['YYYY', /\\d{4}/, false],\n        ],\n        // iso time formats and regexes\n        isoTimes = [\n            ['HH:mm:ss.SSSS', /\\d\\d:\\d\\d:\\d\\d\\.\\d+/],\n            ['HH:mm:ss,SSSS', /\\d\\d:\\d\\d:\\d\\d,\\d+/],\n            ['HH:mm:ss', /\\d\\d:\\d\\d:\\d\\d/],\n            ['HH:mm', /\\d\\d:\\d\\d/],\n            ['HHmmss.SSSS', /\\d\\d\\d\\d\\d\\d\\.\\d+/],\n            ['HHmmss,SSSS', /\\d\\d\\d\\d\\d\\d,\\d+/],\n            ['HHmmss', /\\d\\d\\d\\d\\d\\d/],\n            ['HHmm', /\\d\\d\\d\\d/],\n            ['HH', /\\d\\d/],\n        ],\n        aspNetJsonRegex = /^\\/?Date\\((-?\\d+)/i,\n        // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3\n        rfc2822 = /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\\s)?(\\d{1,2})\\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s(\\d{2,4})\\s(\\d\\d):(\\d\\d)(?::(\\d\\d))?\\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\\d{4}))$/,\n        obsOffsets = {\n            UT: 0,\n            GMT: 0,\n            EDT: -4 * 60,\n            EST: -5 * 60,\n            CDT: -5 * 60,\n            CST: -6 * 60,\n            MDT: -6 * 60,\n            MST: -7 * 60,\n            PDT: -7 * 60,\n            PST: -8 * 60,\n        };\n\n    // date from iso format\n    function configFromISO(config) {\n        var i,\n            l,\n            string = config._i,\n            match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),\n            allowTime,\n            dateFormat,\n            timeFormat,\n            tzFormat;\n\n        if (match) {\n            getParsingFlags(config).iso = true;\n\n            for (i = 0, l = isoDates.length; i < l; i++) {\n                if (isoDates[i][1].exec(match[1])) {\n                    dateFormat = isoDates[i][0];\n                    allowTime = isoDates[i][2] !== false;\n                    break;\n                }\n            }\n            if (dateFormat == null) {\n                config._isValid = false;\n                return;\n            }\n            if (match[3]) {\n                for (i = 0, l = isoTimes.length; i < l; i++) {\n                    if (isoTimes[i][1].exec(match[3])) {\n                        // match[2] should be 'T' or space\n                        timeFormat = (match[2] || ' ') + isoTimes[i][0];\n                        break;\n                    }\n                }\n                if (timeFormat == null) {\n                    config._isValid = false;\n                    return;\n                }\n            }\n            if (!allowTime && timeFormat != null) {\n                config._isValid = false;\n                return;\n            }\n            if (match[4]) {\n                if (tzRegex.exec(match[4])) {\n                    tzFormat = 'Z';\n                } else {\n                    config._isValid = false;\n                    return;\n                }\n            }\n            config._f = dateFormat + (timeFormat || '') + (tzFormat || '');\n            configFromStringAndFormat(config);\n        } else {\n            config._isValid = false;\n        }\n    }\n\n    function extractFromRFC2822Strings(\n        yearStr,\n        monthStr,\n        dayStr,\n        hourStr,\n        minuteStr,\n        secondStr\n    ) {\n        var result = [\n            untruncateYear(yearStr),\n            defaultLocaleMonthsShort.indexOf(monthStr),\n            parseInt(dayStr, 10),\n            parseInt(hourStr, 10),\n            parseInt(minuteStr, 10),\n        ];\n\n        if (secondStr) {\n            result.push(parseInt(secondStr, 10));\n        }\n\n        return result;\n    }\n\n    function untruncateYear(yearStr) {\n        var year = parseInt(yearStr, 10);\n        if (year <= 49) {\n            return 2000 + year;\n        } else if (year <= 999) {\n            return 1900 + year;\n        }\n        return year;\n    }\n\n    function preprocessRFC2822(s) {\n        // Remove comments and folding whitespace and replace multiple-spaces with a single space\n        return s\n            .replace(/\\([^)]*\\)|[\\n\\t]/g, ' ')\n            .replace(/(\\s\\s+)/g, ' ')\n            .replace(/^\\s\\s*/, '')\n            .replace(/\\s\\s*$/, '');\n    }\n\n    function checkWeekday(weekdayStr, parsedInput, config) {\n        if (weekdayStr) {\n            // TODO: Replace the vanilla JS Date object with an independent day-of-week check.\n            var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr),\n                weekdayActual = new Date(\n                    parsedInput[0],\n                    parsedInput[1],\n                    parsedInput[2]\n                ).getDay();\n            if (weekdayProvided !== weekdayActual) {\n                getParsingFlags(config).weekdayMismatch = true;\n                config._isValid = false;\n                return false;\n            }\n        }\n        return true;\n    }\n\n    function calculateOffset(obsOffset, militaryOffset, numOffset) {\n        if (obsOffset) {\n            return obsOffsets[obsOffset];\n        } else if (militaryOffset) {\n            // the only allowed military tz is Z\n            return 0;\n        } else {\n            var hm = parseInt(numOffset, 10),\n                m = hm % 100,\n                h = (hm - m) / 100;\n            return h * 60 + m;\n        }\n    }\n\n    // date and time from ref 2822 format\n    function configFromRFC2822(config) {\n        var match = rfc2822.exec(preprocessRFC2822(config._i)),\n            parsedArray;\n        if (match) {\n            parsedArray = extractFromRFC2822Strings(\n                match[4],\n                match[3],\n                match[2],\n                match[5],\n                match[6],\n                match[7]\n            );\n            if (!checkWeekday(match[1], parsedArray, config)) {\n                return;\n            }\n\n            config._a = parsedArray;\n            config._tzm = calculateOffset(match[8], match[9], match[10]);\n\n            config._d = createUTCDate.apply(null, config._a);\n            config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n\n            getParsingFlags(config).rfc2822 = true;\n        } else {\n            config._isValid = false;\n        }\n    }\n\n    // date from 1) ASP.NET, 2) ISO, 3) RFC 2822 formats, or 4) optional fallback if parsing isn't strict\n    function configFromString(config) {\n        var matched = aspNetJsonRegex.exec(config._i);\n        if (matched !== null) {\n            config._d = new Date(+matched[1]);\n            return;\n        }\n\n        configFromISO(config);\n        if (config._isValid === false) {\n            delete config._isValid;\n        } else {\n            return;\n        }\n\n        configFromRFC2822(config);\n        if (config._isValid === false) {\n            delete config._isValid;\n        } else {\n            return;\n        }\n\n        if (config._strict) {\n            config._isValid = false;\n        } else {\n            // Final attempt, use Input Fallback\n            hooks.createFromInputFallback(config);\n        }\n    }\n\n    hooks.createFromInputFallback = deprecate(\n        'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' +\n            'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' +\n            'discouraged. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.',\n        function (config) {\n            config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));\n        }\n    );\n\n    // Pick the first defined of two or three arguments.\n    function defaults(a, b, c) {\n        if (a != null) {\n            return a;\n        }\n        if (b != null) {\n            return b;\n        }\n        return c;\n    }\n\n    function currentDateArray(config) {\n        // hooks is actually the exported moment object\n        var nowValue = new Date(hooks.now());\n        if (config._useUTC) {\n            return [\n                nowValue.getUTCFullYear(),\n                nowValue.getUTCMonth(),\n                nowValue.getUTCDate(),\n            ];\n        }\n        return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];\n    }\n\n    // convert an array to a date.\n    // the array should mirror the parameters below\n    // note: all values past the year are optional and will default to the lowest possible value.\n    // [year, month, day , hour, minute, second, millisecond]\n    function configFromArray(config) {\n        var i,\n            date,\n            input = [],\n            currentDate,\n            expectedWeekday,\n            yearToUse;\n\n        if (config._d) {\n            return;\n        }\n\n        currentDate = currentDateArray(config);\n\n        //compute day of the year from weeks and weekdays\n        if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {\n            dayOfYearFromWeekInfo(config);\n        }\n\n        //if the day of the year is set, figure out what it is\n        if (config._dayOfYear != null) {\n            yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);\n\n            if (\n                config._dayOfYear > daysInYear(yearToUse) ||\n                config._dayOfYear === 0\n            ) {\n                getParsingFlags(config)._overflowDayOfYear = true;\n            }\n\n            date = createUTCDate(yearToUse, 0, config._dayOfYear);\n            config._a[MONTH] = date.getUTCMonth();\n            config._a[DATE] = date.getUTCDate();\n        }\n\n        // Default to current date.\n        // * if no year, month, day of month are given, default to today\n        // * if day of month is given, default month and year\n        // * if month is given, default only year\n        // * if year is given, don't default anything\n        for (i = 0; i < 3 && config._a[i] == null; ++i) {\n            config._a[i] = input[i] = currentDate[i];\n        }\n\n        // Zero out whatever was not defaulted, including time\n        for (; i < 7; i++) {\n            config._a[i] = input[i] =\n                config._a[i] == null ? (i === 2 ? 1 : 0) : config._a[i];\n        }\n\n        // Check for 24:00:00.000\n        if (\n            config._a[HOUR] === 24 &&\n            config._a[MINUTE] === 0 &&\n            config._a[SECOND] === 0 &&\n            config._a[MILLISECOND] === 0\n        ) {\n            config._nextDay = true;\n            config._a[HOUR] = 0;\n        }\n\n        config._d = (config._useUTC ? createUTCDate : createDate).apply(\n            null,\n            input\n        );\n        expectedWeekday = config._useUTC\n            ? config._d.getUTCDay()\n            : config._d.getDay();\n\n        // Apply timezone offset from input. The actual utcOffset can be changed\n        // with parseZone.\n        if (config._tzm != null) {\n            config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n        }\n\n        if (config._nextDay) {\n            config._a[HOUR] = 24;\n        }\n\n        // check for mismatching day of week\n        if (\n            config._w &&\n            typeof config._w.d !== 'undefined' &&\n            config._w.d !== expectedWeekday\n        ) {\n            getParsingFlags(config).weekdayMismatch = true;\n        }\n    }\n\n    function dayOfYearFromWeekInfo(config) {\n        var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow, curWeek;\n\n        w = config._w;\n        if (w.GG != null || w.W != null || w.E != null) {\n            dow = 1;\n            doy = 4;\n\n            // TODO: We need to take the current isoWeekYear, but that depends on\n            // how we interpret now (local, utc, fixed offset). So create\n            // a now version of current config (take local/utc/offset flags, and\n            // create now).\n            weekYear = defaults(\n                w.GG,\n                config._a[YEAR],\n                weekOfYear(createLocal(), 1, 4).year\n            );\n            week = defaults(w.W, 1);\n            weekday = defaults(w.E, 1);\n            if (weekday < 1 || weekday > 7) {\n                weekdayOverflow = true;\n            }\n        } else {\n            dow = config._locale._week.dow;\n            doy = config._locale._week.doy;\n\n            curWeek = weekOfYear(createLocal(), dow, doy);\n\n            weekYear = defaults(w.gg, config._a[YEAR], curWeek.year);\n\n            // Default to current week.\n            week = defaults(w.w, curWeek.week);\n\n            if (w.d != null) {\n                // weekday -- low day numbers are considered next week\n                weekday = w.d;\n                if (weekday < 0 || weekday > 6) {\n                    weekdayOverflow = true;\n                }\n            } else if (w.e != null) {\n                // local weekday -- counting starts from beginning of week\n                weekday = w.e + dow;\n                if (w.e < 0 || w.e > 6) {\n                    weekdayOverflow = true;\n                }\n            } else {\n                // default to beginning of week\n                weekday = dow;\n            }\n        }\n        if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {\n            getParsingFlags(config)._overflowWeeks = true;\n        } else if (weekdayOverflow != null) {\n            getParsingFlags(config)._overflowWeekday = true;\n        } else {\n            temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);\n            config._a[YEAR] = temp.year;\n            config._dayOfYear = temp.dayOfYear;\n        }\n    }\n\n    // constant that refers to the ISO standard\n    hooks.ISO_8601 = function () {};\n\n    // constant that refers to the RFC 2822 form\n    hooks.RFC_2822 = function () {};\n\n    // date from string and format string\n    function configFromStringAndFormat(config) {\n        // TODO: Move this to another part of the creation flow to prevent circular deps\n        if (config._f === hooks.ISO_8601) {\n            configFromISO(config);\n            return;\n        }\n        if (config._f === hooks.RFC_2822) {\n            configFromRFC2822(config);\n            return;\n        }\n        config._a = [];\n        getParsingFlags(config).empty = true;\n\n        // This array is used to make a Date, either with `new Date` or `Date.UTC`\n        var string = '' + config._i,\n            i,\n            parsedInput,\n            tokens,\n            token,\n            skipped,\n            stringLength = string.length,\n            totalParsedInputLength = 0,\n            era;\n\n        tokens =\n            expandFormat(config._f, config._locale).match(formattingTokens) || [];\n\n        for (i = 0; i < tokens.length; i++) {\n            token = tokens[i];\n            parsedInput = (string.match(getParseRegexForToken(token, config)) ||\n                [])[0];\n            if (parsedInput) {\n                skipped = string.substr(0, string.indexOf(parsedInput));\n                if (skipped.length > 0) {\n                    getParsingFlags(config).unusedInput.push(skipped);\n                }\n                string = string.slice(\n                    string.indexOf(parsedInput) + parsedInput.length\n                );\n                totalParsedInputLength += parsedInput.length;\n            }\n            // don't parse if it's not a known token\n            if (formatTokenFunctions[token]) {\n                if (parsedInput) {\n                    getParsingFlags(config).empty = false;\n                } else {\n                    getParsingFlags(config).unusedTokens.push(token);\n                }\n                addTimeToArrayFromToken(token, parsedInput, config);\n            } else if (config._strict && !parsedInput) {\n                getParsingFlags(config).unusedTokens.push(token);\n            }\n        }\n\n        // add remaining unparsed input length to the string\n        getParsingFlags(config).charsLeftOver =\n            stringLength - totalParsedInputLength;\n        if (string.length > 0) {\n            getParsingFlags(config).unusedInput.push(string);\n        }\n\n        // clear _12h flag if hour is <= 12\n        if (\n            config._a[HOUR] <= 12 &&\n            getParsingFlags(config).bigHour === true &&\n            config._a[HOUR] > 0\n        ) {\n            getParsingFlags(config).bigHour = undefined;\n        }\n\n        getParsingFlags(config).parsedDateParts = config._a.slice(0);\n        getParsingFlags(config).meridiem = config._meridiem;\n        // handle meridiem\n        config._a[HOUR] = meridiemFixWrap(\n            config._locale,\n            config._a[HOUR],\n            config._meridiem\n        );\n\n        // handle era\n        era = getParsingFlags(config).era;\n        if (era !== null) {\n            config._a[YEAR] = config._locale.erasConvertYear(era, config._a[YEAR]);\n        }\n\n        configFromArray(config);\n        checkOverflow(config);\n    }\n\n    function meridiemFixWrap(locale, hour, meridiem) {\n        var isPm;\n\n        if (meridiem == null) {\n            // nothing to do\n            return hour;\n        }\n        if (locale.meridiemHour != null) {\n            return locale.meridiemHour(hour, meridiem);\n        } else if (locale.isPM != null) {\n            // Fallback\n            isPm = locale.isPM(meridiem);\n            if (isPm && hour < 12) {\n                hour += 12;\n            }\n            if (!isPm && hour === 12) {\n                hour = 0;\n            }\n            return hour;\n        } else {\n            // this is not supposed to happen\n            return hour;\n        }\n    }\n\n    // date from string and array of format strings\n    function configFromStringAndArray(config) {\n        var tempConfig,\n            bestMoment,\n            scoreToBeat,\n            i,\n            currentScore,\n            validFormatFound,\n            bestFormatIsValid = false;\n\n        if (config._f.length === 0) {\n            getParsingFlags(config).invalidFormat = true;\n            config._d = new Date(NaN);\n            return;\n        }\n\n        for (i = 0; i < config._f.length; i++) {\n            currentScore = 0;\n            validFormatFound = false;\n            tempConfig = copyConfig({}, config);\n            if (config._useUTC != null) {\n                tempConfig._useUTC = config._useUTC;\n            }\n            tempConfig._f = config._f[i];\n            configFromStringAndFormat(tempConfig);\n\n            if (isValid(tempConfig)) {\n                validFormatFound = true;\n            }\n\n            // if there is any input that was not parsed add a penalty for that format\n            currentScore += getParsingFlags(tempConfig).charsLeftOver;\n\n            //or tokens\n            currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;\n\n            getParsingFlags(tempConfig).score = currentScore;\n\n            if (!bestFormatIsValid) {\n                if (\n                    scoreToBeat == null ||\n                    currentScore < scoreToBeat ||\n                    validFormatFound\n                ) {\n                    scoreToBeat = currentScore;\n                    bestMoment = tempConfig;\n                    if (validFormatFound) {\n                        bestFormatIsValid = true;\n                    }\n                }\n            } else {\n                if (currentScore < scoreToBeat) {\n                    scoreToBeat = currentScore;\n                    bestMoment = tempConfig;\n                }\n            }\n        }\n\n        extend(config, bestMoment || tempConfig);\n    }\n\n    function configFromObject(config) {\n        if (config._d) {\n            return;\n        }\n\n        var i = normalizeObjectUnits(config._i),\n            dayOrDate = i.day === undefined ? i.date : i.day;\n        config._a = map(\n            [i.year, i.month, dayOrDate, i.hour, i.minute, i.second, i.millisecond],\n            function (obj) {\n                return obj && parseInt(obj, 10);\n            }\n        );\n\n        configFromArray(config);\n    }\n\n    function createFromConfig(config) {\n        var res = new Moment(checkOverflow(prepareConfig(config)));\n        if (res._nextDay) {\n            // Adding is smart enough around DST\n            res.add(1, 'd');\n            res._nextDay = undefined;\n        }\n\n        return res;\n    }\n\n    function prepareConfig(config) {\n        var input = config._i,\n            format = config._f;\n\n        config._locale = config._locale || getLocale(config._l);\n\n        if (input === null || (format === undefined && input === '')) {\n            return createInvalid({ nullInput: true });\n        }\n\n        if (typeof input === 'string') {\n            config._i = input = config._locale.preparse(input);\n        }\n\n        if (isMoment(input)) {\n            return new Moment(checkOverflow(input));\n        } else if (isDate(input)) {\n            config._d = input;\n        } else if (isArray(format)) {\n            configFromStringAndArray(config);\n        } else if (format) {\n            configFromStringAndFormat(config);\n        } else {\n            configFromInput(config);\n        }\n\n        if (!isValid(config)) {\n            config._d = null;\n        }\n\n        return config;\n    }\n\n    function configFromInput(config) {\n        var input = config._i;\n        if (isUndefined(input)) {\n            config._d = new Date(hooks.now());\n        } else if (isDate(input)) {\n            config._d = new Date(input.valueOf());\n        } else if (typeof input === 'string') {\n            configFromString(config);\n        } else if (isArray(input)) {\n            config._a = map(input.slice(0), function (obj) {\n                return parseInt(obj, 10);\n            });\n            configFromArray(config);\n        } else if (isObject(input)) {\n            configFromObject(config);\n        } else if (isNumber(input)) {\n            // from milliseconds\n            config._d = new Date(input);\n        } else {\n            hooks.createFromInputFallback(config);\n        }\n    }\n\n    function createLocalOrUTC(input, format, locale, strict, isUTC) {\n        var c = {};\n\n        if (format === true || format === false) {\n            strict = format;\n            format = undefined;\n        }\n\n        if (locale === true || locale === false) {\n            strict = locale;\n            locale = undefined;\n        }\n\n        if (\n            (isObject(input) && isObjectEmpty(input)) ||\n            (isArray(input) && input.length === 0)\n        ) {\n            input = undefined;\n        }\n        // object construction must be done this way.\n        // https://github.com/moment/moment/issues/1423\n        c._isAMomentObject = true;\n        c._useUTC = c._isUTC = isUTC;\n        c._l = locale;\n        c._i = input;\n        c._f = format;\n        c._strict = strict;\n\n        return createFromConfig(c);\n    }\n\n    function createLocal(input, format, locale, strict) {\n        return createLocalOrUTC(input, format, locale, strict, false);\n    }\n\n    var prototypeMin = deprecate(\n            'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/',\n            function () {\n                var other = createLocal.apply(null, arguments);\n                if (this.isValid() && other.isValid()) {\n                    return other < this ? this : other;\n                } else {\n                    return createInvalid();\n                }\n            }\n        ),\n        prototypeMax = deprecate(\n            'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/',\n            function () {\n                var other = createLocal.apply(null, arguments);\n                if (this.isValid() && other.isValid()) {\n                    return other > this ? this : other;\n                } else {\n                    return createInvalid();\n                }\n            }\n        );\n\n    // Pick a moment m from moments so that m[fn](other) is true for all\n    // other. This relies on the function fn to be transitive.\n    //\n    // moments should either be an array of moment objects or an array, whose\n    // first element is an array of moment objects.\n    function pickBy(fn, moments) {\n        var res, i;\n        if (moments.length === 1 && isArray(moments[0])) {\n            moments = moments[0];\n        }\n        if (!moments.length) {\n            return createLocal();\n        }\n        res = moments[0];\n        for (i = 1; i < moments.length; ++i) {\n            if (!moments[i].isValid() || moments[i][fn](res)) {\n                res = moments[i];\n            }\n        }\n        return res;\n    }\n\n    // TODO: Use [].sort instead?\n    function min() {\n        var args = [].slice.call(arguments, 0);\n\n        return pickBy('isBefore', args);\n    }\n\n    function max() {\n        var args = [].slice.call(arguments, 0);\n\n        return pickBy('isAfter', args);\n    }\n\n    var now = function () {\n        return Date.now ? Date.now() : +new Date();\n    };\n\n    var ordering = [\n        'year',\n        'quarter',\n        'month',\n        'week',\n        'day',\n        'hour',\n        'minute',\n        'second',\n        'millisecond',\n    ];\n\n    function isDurationValid(m) {\n        var key,\n            unitHasDecimal = false,\n            i;\n        for (key in m) {\n            if (\n                hasOwnProp(m, key) &&\n                !(\n                    indexOf.call(ordering, key) !== -1 &&\n                    (m[key] == null || !isNaN(m[key]))\n                )\n            ) {\n                return false;\n            }\n        }\n\n        for (i = 0; i < ordering.length; ++i) {\n            if (m[ordering[i]]) {\n                if (unitHasDecimal) {\n                    return false; // only allow non-integers for smallest unit\n                }\n                if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) {\n                    unitHasDecimal = true;\n                }\n            }\n        }\n\n        return true;\n    }\n\n    function isValid$1() {\n        return this._isValid;\n    }\n\n    function createInvalid$1() {\n        return createDuration(NaN);\n    }\n\n    function Duration(duration) {\n        var normalizedInput = normalizeObjectUnits(duration),\n            years = normalizedInput.year || 0,\n            quarters = normalizedInput.quarter || 0,\n            months = normalizedInput.month || 0,\n            weeks = normalizedInput.week || normalizedInput.isoWeek || 0,\n            days = normalizedInput.day || 0,\n            hours = normalizedInput.hour || 0,\n            minutes = normalizedInput.minute || 0,\n            seconds = normalizedInput.second || 0,\n            milliseconds = normalizedInput.millisecond || 0;\n\n        this._isValid = isDurationValid(normalizedInput);\n\n        // representation for dateAddRemove\n        this._milliseconds =\n            +milliseconds +\n            seconds * 1e3 + // 1000\n            minutes * 6e4 + // 1000 * 60\n            hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978\n        // Because of dateAddRemove treats 24 hours as different from a\n        // day when working around DST, we need to store them separately\n        this._days = +days + weeks * 7;\n        // It is impossible to translate months into days without knowing\n        // which months you are are talking about, so we have to store\n        // it separately.\n        this._months = +months + quarters * 3 + years * 12;\n\n        this._data = {};\n\n        this._locale = getLocale();\n\n        this._bubble();\n    }\n\n    function isDuration(obj) {\n        return obj instanceof Duration;\n    }\n\n    function absRound(number) {\n        if (number < 0) {\n            return Math.round(-1 * number) * -1;\n        } else {\n            return Math.round(number);\n        }\n    }\n\n    // compare two arrays, return the number of differences\n    function compareArrays(array1, array2, dontConvert) {\n        var len = Math.min(array1.length, array2.length),\n            lengthDiff = Math.abs(array1.length - array2.length),\n            diffs = 0,\n            i;\n        for (i = 0; i < len; i++) {\n            if (\n                (dontConvert && array1[i] !== array2[i]) ||\n                (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))\n            ) {\n                diffs++;\n            }\n        }\n        return diffs + lengthDiff;\n    }\n\n    // FORMATTING\n\n    function offset(token, separator) {\n        addFormatToken(token, 0, 0, function () {\n            var offset = this.utcOffset(),\n                sign = '+';\n            if (offset < 0) {\n                offset = -offset;\n                sign = '-';\n            }\n            return (\n                sign +\n                zeroFill(~~(offset / 60), 2) +\n                separator +\n                zeroFill(~~offset % 60, 2)\n            );\n        });\n    }\n\n    offset('Z', ':');\n    offset('ZZ', '');\n\n    // PARSING\n\n    addRegexToken('Z', matchShortOffset);\n    addRegexToken('ZZ', matchShortOffset);\n    addParseToken(['Z', 'ZZ'], function (input, array, config) {\n        config._useUTC = true;\n        config._tzm = offsetFromString(matchShortOffset, input);\n    });\n\n    // HELPERS\n\n    // timezone chunker\n    // '+10:00' > ['10',  '00']\n    // '-1530'  > ['-15', '30']\n    var chunkOffset = /([\\+\\-]|\\d\\d)/gi;\n\n    function offsetFromString(matcher, string) {\n        var matches = (string || '').match(matcher),\n            chunk,\n            parts,\n            minutes;\n\n        if (matches === null) {\n            return null;\n        }\n\n        chunk = matches[matches.length - 1] || [];\n        parts = (chunk + '').match(chunkOffset) || ['-', 0, 0];\n        minutes = +(parts[1] * 60) + toInt(parts[2]);\n\n        return minutes === 0 ? 0 : parts[0] === '+' ? minutes : -minutes;\n    }\n\n    // Return a moment from input, that is local/utc/zone equivalent to model.\n    function cloneWithOffset(input, model) {\n        var res, diff;\n        if (model._isUTC) {\n            res = model.clone();\n            diff =\n                (isMoment(input) || isDate(input)\n                    ? input.valueOf()\n                    : createLocal(input).valueOf()) - res.valueOf();\n            // Use low-level api, because this fn is low-level api.\n            res._d.setTime(res._d.valueOf() + diff);\n            hooks.updateOffset(res, false);\n            return res;\n        } else {\n            return createLocal(input).local();\n        }\n    }\n\n    function getDateOffset(m) {\n        // On Firefox.24 Date#getTimezoneOffset returns a floating point.\n        // https://github.com/moment/moment/pull/1871\n        return -Math.round(m._d.getTimezoneOffset());\n    }\n\n    // HOOKS\n\n    // This function will be called whenever a moment is mutated.\n    // It is intended to keep the offset in sync with the timezone.\n    hooks.updateOffset = function () {};\n\n    // MOMENTS\n\n    // keepLocalTime = true means only change the timezone, without\n    // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->\n    // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset\n    // +0200, so we adjust the time as needed, to be valid.\n    //\n    // Keeping the time actually adds/subtracts (one hour)\n    // from the actual represented time. That is why we call updateOffset\n    // a second time. In case it wants us to change the offset again\n    // _changeInProgress == true case, then we have to adjust, because\n    // there is no such time in the given timezone.\n    function getSetOffset(input, keepLocalTime, keepMinutes) {\n        var offset = this._offset || 0,\n            localAdjust;\n        if (!this.isValid()) {\n            return input != null ? this : NaN;\n        }\n        if (input != null) {\n            if (typeof input === 'string') {\n                input = offsetFromString(matchShortOffset, input);\n                if (input === null) {\n                    return this;\n                }\n            } else if (Math.abs(input) < 16 && !keepMinutes) {\n                input = input * 60;\n            }\n            if (!this._isUTC && keepLocalTime) {\n                localAdjust = getDateOffset(this);\n            }\n            this._offset = input;\n            this._isUTC = true;\n            if (localAdjust != null) {\n                this.add(localAdjust, 'm');\n            }\n            if (offset !== input) {\n                if (!keepLocalTime || this._changeInProgress) {\n                    addSubtract(\n                        this,\n                        createDuration(input - offset, 'm'),\n                        1,\n                        false\n                    );\n                } else if (!this._changeInProgress) {\n                    this._changeInProgress = true;\n                    hooks.updateOffset(this, true);\n                    this._changeInProgress = null;\n                }\n            }\n            return this;\n        } else {\n            return this._isUTC ? offset : getDateOffset(this);\n        }\n    }\n\n    function getSetZone(input, keepLocalTime) {\n        if (input != null) {\n            if (typeof input !== 'string') {\n                input = -input;\n            }\n\n            this.utcOffset(input, keepLocalTime);\n\n            return this;\n        } else {\n            return -this.utcOffset();\n        }\n    }\n\n    function setOffsetToUTC(keepLocalTime) {\n        return this.utcOffset(0, keepLocalTime);\n    }\n\n    function setOffsetToLocal(keepLocalTime) {\n        if (this._isUTC) {\n            this.utcOffset(0, keepLocalTime);\n            this._isUTC = false;\n\n            if (keepLocalTime) {\n                this.subtract(getDateOffset(this), 'm');\n            }\n        }\n        return this;\n    }\n\n    function setOffsetToParsedOffset() {\n        if (this._tzm != null) {\n            this.utcOffset(this._tzm, false, true);\n        } else if (typeof this._i === 'string') {\n            var tZone = offsetFromString(matchOffset, this._i);\n            if (tZone != null) {\n                this.utcOffset(tZone);\n            } else {\n                this.utcOffset(0, true);\n            }\n        }\n        return this;\n    }\n\n    function hasAlignedHourOffset(input) {\n        if (!this.isValid()) {\n            return false;\n        }\n        input = input ? createLocal(input).utcOffset() : 0;\n\n        return (this.utcOffset() - input) % 60 === 0;\n    }\n\n    function isDaylightSavingTime() {\n        return (\n            this.utcOffset() > this.clone().month(0).utcOffset() ||\n            this.utcOffset() > this.clone().month(5).utcOffset()\n        );\n    }\n\n    function isDaylightSavingTimeShifted() {\n        if (!isUndefined(this._isDSTShifted)) {\n            return this._isDSTShifted;\n        }\n\n        var c = {},\n            other;\n\n        copyConfig(c, this);\n        c = prepareConfig(c);\n\n        if (c._a) {\n            other = c._isUTC ? createUTC(c._a) : createLocal(c._a);\n            this._isDSTShifted =\n                this.isValid() && compareArrays(c._a, other.toArray()) > 0;\n        } else {\n            this._isDSTShifted = false;\n        }\n\n        return this._isDSTShifted;\n    }\n\n    function isLocal() {\n        return this.isValid() ? !this._isUTC : false;\n    }\n\n    function isUtcOffset() {\n        return this.isValid() ? this._isUTC : false;\n    }\n\n    function isUtc() {\n        return this.isValid() ? this._isUTC && this._offset === 0 : false;\n    }\n\n    // ASP.NET json date format regex\n    var aspNetRegex = /^(-|\\+)?(?:(\\d*)[. ])?(\\d+):(\\d+)(?::(\\d+)(\\.\\d*)?)?$/,\n        // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html\n        // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere\n        // and further modified to allow for strings containing both week and day\n        isoRegex = /^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;\n\n    function createDuration(input, key) {\n        var duration = input,\n            // matching against regexp is expensive, do it on demand\n            match = null,\n            sign,\n            ret,\n            diffRes;\n\n        if (isDuration(input)) {\n            duration = {\n                ms: input._milliseconds,\n                d: input._days,\n                M: input._months,\n            };\n        } else if (isNumber(input) || !isNaN(+input)) {\n            duration = {};\n            if (key) {\n                duration[key] = +input;\n            } else {\n                duration.milliseconds = +input;\n            }\n        } else if ((match = aspNetRegex.exec(input))) {\n            sign = match[1] === '-' ? -1 : 1;\n            duration = {\n                y: 0,\n                d: toInt(match[DATE]) * sign,\n                h: toInt(match[HOUR]) * sign,\n                m: toInt(match[MINUTE]) * sign,\n                s: toInt(match[SECOND]) * sign,\n                ms: toInt(absRound(match[MILLISECOND] * 1000)) * sign, // the millisecond decimal point is included in the match\n            };\n        } else if ((match = isoRegex.exec(input))) {\n            sign = match[1] === '-' ? -1 : 1;\n            duration = {\n                y: parseIso(match[2], sign),\n                M: parseIso(match[3], sign),\n                w: parseIso(match[4], sign),\n                d: parseIso(match[5], sign),\n                h: parseIso(match[6], sign),\n                m: parseIso(match[7], sign),\n                s: parseIso(match[8], sign),\n            };\n        } else if (duration == null) {\n            // checks for null or undefined\n            duration = {};\n        } else if (\n            typeof duration === 'object' &&\n            ('from' in duration || 'to' in duration)\n        ) {\n            diffRes = momentsDifference(\n                createLocal(duration.from),\n                createLocal(duration.to)\n            );\n\n            duration = {};\n            duration.ms = diffRes.milliseconds;\n            duration.M = diffRes.months;\n        }\n\n        ret = new Duration(duration);\n\n        if (isDuration(input) && hasOwnProp(input, '_locale')) {\n            ret._locale = input._locale;\n        }\n\n        if (isDuration(input) && hasOwnProp(input, '_isValid')) {\n            ret._isValid = input._isValid;\n        }\n\n        return ret;\n    }\n\n    createDuration.fn = Duration.prototype;\n    createDuration.invalid = createInvalid$1;\n\n    function parseIso(inp, sign) {\n        // We'd normally use ~~inp for this, but unfortunately it also\n        // converts floats to ints.\n        // inp may be undefined, so careful calling replace on it.\n        var res = inp && parseFloat(inp.replace(',', '.'));\n        // apply sign while we're at it\n        return (isNaN(res) ? 0 : res) * sign;\n    }\n\n    function positiveMomentsDifference(base, other) {\n        var res = {};\n\n        res.months =\n            other.month() - base.month() + (other.year() - base.year()) * 12;\n        if (base.clone().add(res.months, 'M').isAfter(other)) {\n            --res.months;\n        }\n\n        res.milliseconds = +other - +base.clone().add(res.months, 'M');\n\n        return res;\n    }\n\n    function momentsDifference(base, other) {\n        var res;\n        if (!(base.isValid() && other.isValid())) {\n            return { milliseconds: 0, months: 0 };\n        }\n\n        other = cloneWithOffset(other, base);\n        if (base.isBefore(other)) {\n            res = positiveMomentsDifference(base, other);\n        } else {\n            res = positiveMomentsDifference(other, base);\n            res.milliseconds = -res.milliseconds;\n            res.months = -res.months;\n        }\n\n        return res;\n    }\n\n    // TODO: remove 'name' arg after deprecation is removed\n    function createAdder(direction, name) {\n        return function (val, period) {\n            var dur, tmp;\n            //invert the arguments, but complain about it\n            if (period !== null && !isNaN(+period)) {\n                deprecateSimple(\n                    name,\n                    'moment().' +\n                        name +\n                        '(period, number) is deprecated. Please use moment().' +\n                        name +\n                        '(number, period). ' +\n                        'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.'\n                );\n                tmp = val;\n                val = period;\n                period = tmp;\n            }\n\n            dur = createDuration(val, period);\n            addSubtract(this, dur, direction);\n            return this;\n        };\n    }\n\n    function addSubtract(mom, duration, isAdding, updateOffset) {\n        var milliseconds = duration._milliseconds,\n            days = absRound(duration._days),\n            months = absRound(duration._months);\n\n        if (!mom.isValid()) {\n            // No op\n            return;\n        }\n\n        updateOffset = updateOffset == null ? true : updateOffset;\n\n        if (months) {\n            setMonth(mom, get(mom, 'Month') + months * isAdding);\n        }\n        if (days) {\n            set$1(mom, 'Date', get(mom, 'Date') + days * isAdding);\n        }\n        if (milliseconds) {\n            mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);\n        }\n        if (updateOffset) {\n            hooks.updateOffset(mom, days || months);\n        }\n    }\n\n    var add = createAdder(1, 'add'),\n        subtract = createAdder(-1, 'subtract');\n\n    function isString(input) {\n        return typeof input === 'string' || input instanceof String;\n    }\n\n    // type MomentInput = Moment | Date | string | number | (number | string)[] | MomentInputObject | void; // null | undefined\n    function isMomentInput(input) {\n        return (\n            isMoment(input) ||\n            isDate(input) ||\n            isString(input) ||\n            isNumber(input) ||\n            isNumberOrStringArray(input) ||\n            isMomentInputObject(input) ||\n            input === null ||\n            input === undefined\n        );\n    }\n\n    function isMomentInputObject(input) {\n        var objectTest = isObject(input) && !isObjectEmpty(input),\n            propertyTest = false,\n            properties = [\n                'years',\n                'year',\n                'y',\n                'months',\n                'month',\n                'M',\n                'days',\n                'day',\n                'd',\n                'dates',\n                'date',\n                'D',\n                'hours',\n                'hour',\n                'h',\n                'minutes',\n                'minute',\n                'm',\n                'seconds',\n                'second',\n                's',\n                'milliseconds',\n                'millisecond',\n                'ms',\n            ],\n            i,\n            property;\n\n        for (i = 0; i < properties.length; i += 1) {\n            property = properties[i];\n            propertyTest = propertyTest || hasOwnProp(input, property);\n        }\n\n        return objectTest && propertyTest;\n    }\n\n    function isNumberOrStringArray(input) {\n        var arrayTest = isArray(input),\n            dataTypeTest = false;\n        if (arrayTest) {\n            dataTypeTest =\n                input.filter(function (item) {\n                    return !isNumber(item) && isString(input);\n                }).length === 0;\n        }\n        return arrayTest && dataTypeTest;\n    }\n\n    function isCalendarSpec(input) {\n        var objectTest = isObject(input) && !isObjectEmpty(input),\n            propertyTest = false,\n            properties = [\n                'sameDay',\n                'nextDay',\n                'lastDay',\n                'nextWeek',\n                'lastWeek',\n                'sameElse',\n            ],\n            i,\n            property;\n\n        for (i = 0; i < properties.length; i += 1) {\n            property = properties[i];\n            propertyTest = propertyTest || hasOwnProp(input, property);\n        }\n\n        return objectTest && propertyTest;\n    }\n\n    function getCalendarFormat(myMoment, now) {\n        var diff = myMoment.diff(now, 'days', true);\n        return diff < -6\n            ? 'sameElse'\n            : diff < -1\n            ? 'lastWeek'\n            : diff < 0\n            ? 'lastDay'\n            : diff < 1\n            ? 'sameDay'\n            : diff < 2\n            ? 'nextDay'\n            : diff < 7\n            ? 'nextWeek'\n            : 'sameElse';\n    }\n\n    function calendar$1(time, formats) {\n        // Support for single parameter, formats only overload to the calendar function\n        if (arguments.length === 1) {\n            if (!arguments[0]) {\n                time = undefined;\n                formats = undefined;\n            } else if (isMomentInput(arguments[0])) {\n                time = arguments[0];\n                formats = undefined;\n            } else if (isCalendarSpec(arguments[0])) {\n                formats = arguments[0];\n                time = undefined;\n            }\n        }\n        // We want to compare the start of today, vs this.\n        // Getting start-of-today depends on whether we're local/utc/offset or not.\n        var now = time || createLocal(),\n            sod = cloneWithOffset(now, this).startOf('day'),\n            format = hooks.calendarFormat(this, sod) || 'sameElse',\n            output =\n                formats &&\n                (isFunction(formats[format])\n                    ? formats[format].call(this, now)\n                    : formats[format]);\n\n        return this.format(\n            output || this.localeData().calendar(format, this, createLocal(now))\n        );\n    }\n\n    function clone() {\n        return new Moment(this);\n    }\n\n    function isAfter(input, units) {\n        var localInput = isMoment(input) ? input : createLocal(input);\n        if (!(this.isValid() && localInput.isValid())) {\n            return false;\n        }\n        units = normalizeUnits(units) || 'millisecond';\n        if (units === 'millisecond') {\n            return this.valueOf() > localInput.valueOf();\n        } else {\n            return localInput.valueOf() < this.clone().startOf(units).valueOf();\n        }\n    }\n\n    function isBefore(input, units) {\n        var localInput = isMoment(input) ? input : createLocal(input);\n        if (!(this.isValid() && localInput.isValid())) {\n            return false;\n        }\n        units = normalizeUnits(units) || 'millisecond';\n        if (units === 'millisecond') {\n            return this.valueOf() < localInput.valueOf();\n        } else {\n            return this.clone().endOf(units).valueOf() < localInput.valueOf();\n        }\n    }\n\n    function isBetween(from, to, units, inclusivity) {\n        var localFrom = isMoment(from) ? from : createLocal(from),\n            localTo = isMoment(to) ? to : createLocal(to);\n        if (!(this.isValid() && localFrom.isValid() && localTo.isValid())) {\n            return false;\n        }\n        inclusivity = inclusivity || '()';\n        return (\n            (inclusivity[0] === '('\n                ? this.isAfter(localFrom, units)\n                : !this.isBefore(localFrom, units)) &&\n            (inclusivity[1] === ')'\n                ? this.isBefore(localTo, units)\n                : !this.isAfter(localTo, units))\n        );\n    }\n\n    function isSame(input, units) {\n        var localInput = isMoment(input) ? input : createLocal(input),\n            inputMs;\n        if (!(this.isValid() && localInput.isValid())) {\n            return false;\n        }\n        units = normalizeUnits(units) || 'millisecond';\n        if (units === 'millisecond') {\n            return this.valueOf() === localInput.valueOf();\n        } else {\n            inputMs = localInput.valueOf();\n            return (\n                this.clone().startOf(units).valueOf() <= inputMs &&\n                inputMs <= this.clone().endOf(units).valueOf()\n            );\n        }\n    }\n\n    function isSameOrAfter(input, units) {\n        return this.isSame(input, units) || this.isAfter(input, units);\n    }\n\n    function isSameOrBefore(input, units) {\n        return this.isSame(input, units) || this.isBefore(input, units);\n    }\n\n    function diff(input, units, asFloat) {\n        var that, zoneDelta, output;\n\n        if (!this.isValid()) {\n            return NaN;\n        }\n\n        that = cloneWithOffset(input, this);\n\n        if (!that.isValid()) {\n            return NaN;\n        }\n\n        zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;\n\n        units = normalizeUnits(units);\n\n        switch (units) {\n            case 'year':\n                output = monthDiff(this, that) / 12;\n                break;\n            case 'month':\n                output = monthDiff(this, that);\n                break;\n            case 'quarter':\n                output = monthDiff(this, that) / 3;\n                break;\n            case 'second':\n                output = (this - that) / 1e3;\n                break; // 1000\n            case 'minute':\n                output = (this - that) / 6e4;\n                break; // 1000 * 60\n            case 'hour':\n                output = (this - that) / 36e5;\n                break; // 1000 * 60 * 60\n            case 'day':\n                output = (this - that - zoneDelta) / 864e5;\n                break; // 1000 * 60 * 60 * 24, negate dst\n            case 'week':\n                output = (this - that - zoneDelta) / 6048e5;\n                break; // 1000 * 60 * 60 * 24 * 7, negate dst\n            default:\n                output = this - that;\n        }\n\n        return asFloat ? output : absFloor(output);\n    }\n\n    function monthDiff(a, b) {\n        if (a.date() < b.date()) {\n            // end-of-month calculations work correct when the start month has more\n            // days than the end month.\n            return -monthDiff(b, a);\n        }\n        // difference in months\n        var wholeMonthDiff = (b.year() - a.year()) * 12 + (b.month() - a.month()),\n            // b is in (anchor - 1 month, anchor + 1 month)\n            anchor = a.clone().add(wholeMonthDiff, 'months'),\n            anchor2,\n            adjust;\n\n        if (b - anchor < 0) {\n            anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');\n            // linear across the month\n            adjust = (b - anchor) / (anchor - anchor2);\n        } else {\n            anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');\n            // linear across the month\n            adjust = (b - anchor) / (anchor2 - anchor);\n        }\n\n        //check for negative zero, return zero if negative zero\n        return -(wholeMonthDiff + adjust) || 0;\n    }\n\n    hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';\n    hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';\n\n    function toString() {\n        return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');\n    }\n\n    function toISOString(keepOffset) {\n        if (!this.isValid()) {\n            return null;\n        }\n        var utc = keepOffset !== true,\n            m = utc ? this.clone().utc() : this;\n        if (m.year() < 0 || m.year() > 9999) {\n            return formatMoment(\n                m,\n                utc\n                    ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]'\n                    : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ'\n            );\n        }\n        if (isFunction(Date.prototype.toISOString)) {\n            // native implementation is ~50x faster, use it when we can\n            if (utc) {\n                return this.toDate().toISOString();\n            } else {\n                return new Date(this.valueOf() + this.utcOffset() * 60 * 1000)\n                    .toISOString()\n                    .replace('Z', formatMoment(m, 'Z'));\n            }\n        }\n        return formatMoment(\n            m,\n            utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ'\n        );\n    }\n\n    /**\n     * Return a human readable representation of a moment that can\n     * also be evaluated to get a new moment which is the same\n     *\n     * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects\n     */\n    function inspect() {\n        if (!this.isValid()) {\n            return 'moment.invalid(/* ' + this._i + ' */)';\n        }\n        var func = 'moment',\n            zone = '',\n            prefix,\n            year,\n            datetime,\n            suffix;\n        if (!this.isLocal()) {\n            func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone';\n            zone = 'Z';\n        }\n        prefix = '[' + func + '(\"]';\n        year = 0 <= this.year() && this.year() <= 9999 ? 'YYYY' : 'YYYYYY';\n        datetime = '-MM-DD[T]HH:mm:ss.SSS';\n        suffix = zone + '[\")]';\n\n        return this.format(prefix + year + datetime + suffix);\n    }\n\n    function format(inputString) {\n        if (!inputString) {\n            inputString = this.isUtc()\n                ? hooks.defaultFormatUtc\n                : hooks.defaultFormat;\n        }\n        var output = formatMoment(this, inputString);\n        return this.localeData().postformat(output);\n    }\n\n    function from(time, withoutSuffix) {\n        if (\n            this.isValid() &&\n            ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n        ) {\n            return createDuration({ to: this, from: time })\n                .locale(this.locale())\n                .humanize(!withoutSuffix);\n        } else {\n            return this.localeData().invalidDate();\n        }\n    }\n\n    function fromNow(withoutSuffix) {\n        return this.from(createLocal(), withoutSuffix);\n    }\n\n    function to(time, withoutSuffix) {\n        if (\n            this.isValid() &&\n            ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n        ) {\n            return createDuration({ from: this, to: time })\n                .locale(this.locale())\n                .humanize(!withoutSuffix);\n        } else {\n            return this.localeData().invalidDate();\n        }\n    }\n\n    function toNow(withoutSuffix) {\n        return this.to(createLocal(), withoutSuffix);\n    }\n\n    // If passed a locale key, it will set the locale for this\n    // instance.  Otherwise, it will return the locale configuration\n    // variables for this instance.\n    function locale(key) {\n        var newLocaleData;\n\n        if (key === undefined) {\n            return this._locale._abbr;\n        } else {\n            newLocaleData = getLocale(key);\n            if (newLocaleData != null) {\n                this._locale = newLocaleData;\n            }\n            return this;\n        }\n    }\n\n    var lang = deprecate(\n        'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',\n        function (key) {\n            if (key === undefined) {\n                return this.localeData();\n            } else {\n                return this.locale(key);\n            }\n        }\n    );\n\n    function localeData() {\n        return this._locale;\n    }\n\n    var MS_PER_SECOND = 1000,\n        MS_PER_MINUTE = 60 * MS_PER_SECOND,\n        MS_PER_HOUR = 60 * MS_PER_MINUTE,\n        MS_PER_400_YEARS = (365 * 400 + 97) * 24 * MS_PER_HOUR;\n\n    // actual modulo - handles negative numbers (for dates before 1970):\n    function mod$1(dividend, divisor) {\n        return ((dividend % divisor) + divisor) % divisor;\n    }\n\n    function localStartOfDate(y, m, d) {\n        // the date constructor remaps years 0-99 to 1900-1999\n        if (y < 100 && y >= 0) {\n            // preserve leap years using a full 400 year cycle, then reset\n            return new Date(y + 400, m, d) - MS_PER_400_YEARS;\n        } else {\n            return new Date(y, m, d).valueOf();\n        }\n    }\n\n    function utcStartOfDate(y, m, d) {\n        // Date.UTC remaps years 0-99 to 1900-1999\n        if (y < 100 && y >= 0) {\n            // preserve leap years using a full 400 year cycle, then reset\n            return Date.UTC(y + 400, m, d) - MS_PER_400_YEARS;\n        } else {\n            return Date.UTC(y, m, d);\n        }\n    }\n\n    function startOf(units) {\n        var time, startOfDate;\n        units = normalizeUnits(units);\n        if (units === undefined || units === 'millisecond' || !this.isValid()) {\n            return this;\n        }\n\n        startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n        switch (units) {\n            case 'year':\n                time = startOfDate(this.year(), 0, 1);\n                break;\n            case 'quarter':\n                time = startOfDate(\n                    this.year(),\n                    this.month() - (this.month() % 3),\n                    1\n                );\n                break;\n            case 'month':\n                time = startOfDate(this.year(), this.month(), 1);\n                break;\n            case 'week':\n                time = startOfDate(\n                    this.year(),\n                    this.month(),\n                    this.date() - this.weekday()\n                );\n                break;\n            case 'isoWeek':\n                time = startOfDate(\n                    this.year(),\n                    this.month(),\n                    this.date() - (this.isoWeekday() - 1)\n                );\n                break;\n            case 'day':\n            case 'date':\n                time = startOfDate(this.year(), this.month(), this.date());\n                break;\n            case 'hour':\n                time = this._d.valueOf();\n                time -= mod$1(\n                    time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n                    MS_PER_HOUR\n                );\n                break;\n            case 'minute':\n                time = this._d.valueOf();\n                time -= mod$1(time, MS_PER_MINUTE);\n                break;\n            case 'second':\n                time = this._d.valueOf();\n                time -= mod$1(time, MS_PER_SECOND);\n                break;\n        }\n\n        this._d.setTime(time);\n        hooks.updateOffset(this, true);\n        return this;\n    }\n\n    function endOf(units) {\n        var time, startOfDate;\n        units = normalizeUnits(units);\n        if (units === undefined || units === 'millisecond' || !this.isValid()) {\n            return this;\n        }\n\n        startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n        switch (units) {\n            case 'year':\n                time = startOfDate(this.year() + 1, 0, 1) - 1;\n                break;\n            case 'quarter':\n                time =\n                    startOfDate(\n                        this.year(),\n                        this.month() - (this.month() % 3) + 3,\n                        1\n                    ) - 1;\n                break;\n            case 'month':\n                time = startOfDate(this.year(), this.month() + 1, 1) - 1;\n                break;\n            case 'week':\n                time =\n                    startOfDate(\n                        this.year(),\n                        this.month(),\n                        this.date() - this.weekday() + 7\n                    ) - 1;\n                break;\n            case 'isoWeek':\n                time =\n                    startOfDate(\n                        this.year(),\n                        this.month(),\n                        this.date() - (this.isoWeekday() - 1) + 7\n                    ) - 1;\n                break;\n            case 'day':\n            case 'date':\n                time = startOfDate(this.year(), this.month(), this.date() + 1) - 1;\n                break;\n            case 'hour':\n                time = this._d.valueOf();\n                time +=\n                    MS_PER_HOUR -\n                    mod$1(\n                        time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n                        MS_PER_HOUR\n                    ) -\n                    1;\n                break;\n            case 'minute':\n                time = this._d.valueOf();\n                time += MS_PER_MINUTE - mod$1(time, MS_PER_MINUTE) - 1;\n                break;\n            case 'second':\n                time = this._d.valueOf();\n                time += MS_PER_SECOND - mod$1(time, MS_PER_SECOND) - 1;\n                break;\n        }\n\n        this._d.setTime(time);\n        hooks.updateOffset(this, true);\n        return this;\n    }\n\n    function valueOf() {\n        return this._d.valueOf() - (this._offset || 0) * 60000;\n    }\n\n    function unix() {\n        return Math.floor(this.valueOf() / 1000);\n    }\n\n    function toDate() {\n        return new Date(this.valueOf());\n    }\n\n    function toArray() {\n        var m = this;\n        return [\n            m.year(),\n            m.month(),\n            m.date(),\n            m.hour(),\n            m.minute(),\n            m.second(),\n            m.millisecond(),\n        ];\n    }\n\n    function toObject() {\n        var m = this;\n        return {\n            years: m.year(),\n            months: m.month(),\n            date: m.date(),\n            hours: m.hours(),\n            minutes: m.minutes(),\n            seconds: m.seconds(),\n            milliseconds: m.milliseconds(),\n        };\n    }\n\n    function toJSON() {\n        // new Date(NaN).toJSON() === null\n        return this.isValid() ? this.toISOString() : null;\n    }\n\n    function isValid$2() {\n        return isValid(this);\n    }\n\n    function parsingFlags() {\n        return extend({}, getParsingFlags(this));\n    }\n\n    function invalidAt() {\n        return getParsingFlags(this).overflow;\n    }\n\n    function creationData() {\n        return {\n            input: this._i,\n            format: this._f,\n            locale: this._locale,\n            isUTC: this._isUTC,\n            strict: this._strict,\n        };\n    }\n\n    addFormatToken('N', 0, 0, 'eraAbbr');\n    addFormatToken('NN', 0, 0, 'eraAbbr');\n    addFormatToken('NNN', 0, 0, 'eraAbbr');\n    addFormatToken('NNNN', 0, 0, 'eraName');\n    addFormatToken('NNNNN', 0, 0, 'eraNarrow');\n\n    addFormatToken('y', ['y', 1], 'yo', 'eraYear');\n    addFormatToken('y', ['yy', 2], 0, 'eraYear');\n    addFormatToken('y', ['yyy', 3], 0, 'eraYear');\n    addFormatToken('y', ['yyyy', 4], 0, 'eraYear');\n\n    addRegexToken('N', matchEraAbbr);\n    addRegexToken('NN', matchEraAbbr);\n    addRegexToken('NNN', matchEraAbbr);\n    addRegexToken('NNNN', matchEraName);\n    addRegexToken('NNNNN', matchEraNarrow);\n\n    addParseToken(['N', 'NN', 'NNN', 'NNNN', 'NNNNN'], function (\n        input,\n        array,\n        config,\n        token\n    ) {\n        var era = config._locale.erasParse(input, token, config._strict);\n        if (era) {\n            getParsingFlags(config).era = era;\n        } else {\n            getParsingFlags(config).invalidEra = input;\n        }\n    });\n\n    addRegexToken('y', matchUnsigned);\n    addRegexToken('yy', matchUnsigned);\n    addRegexToken('yyy', matchUnsigned);\n    addRegexToken('yyyy', matchUnsigned);\n    addRegexToken('yo', matchEraYearOrdinal);\n\n    addParseToken(['y', 'yy', 'yyy', 'yyyy'], YEAR);\n    addParseToken(['yo'], function (input, array, config, token) {\n        var match;\n        if (config._locale._eraYearOrdinalRegex) {\n            match = input.match(config._locale._eraYearOrdinalRegex);\n        }\n\n        if (config._locale.eraYearOrdinalParse) {\n            array[YEAR] = config._locale.eraYearOrdinalParse(input, match);\n        } else {\n            array[YEAR] = parseInt(input, 10);\n        }\n    });\n\n    function localeEras(m, format) {\n        var i,\n            l,\n            date,\n            eras = this._eras || getLocale('en')._eras;\n        for (i = 0, l = eras.length; i < l; ++i) {\n            switch (typeof eras[i].since) {\n                case 'string':\n                    // truncate time\n                    date = hooks(eras[i].since).startOf('day');\n                    eras[i].since = date.valueOf();\n                    break;\n            }\n\n            switch (typeof eras[i].until) {\n                case 'undefined':\n                    eras[i].until = +Infinity;\n                    break;\n                case 'string':\n                    // truncate time\n                    date = hooks(eras[i].until).startOf('day').valueOf();\n                    eras[i].until = date.valueOf();\n                    break;\n            }\n        }\n        return eras;\n    }\n\n    function localeErasParse(eraName, format, strict) {\n        var i,\n            l,\n            eras = this.eras(),\n            name,\n            abbr,\n            narrow;\n        eraName = eraName.toUpperCase();\n\n        for (i = 0, l = eras.length; i < l; ++i) {\n            name = eras[i].name.toUpperCase();\n            abbr = eras[i].abbr.toUpperCase();\n            narrow = eras[i].narrow.toUpperCase();\n\n            if (strict) {\n                switch (format) {\n                    case 'N':\n                    case 'NN':\n                    case 'NNN':\n                        if (abbr === eraName) {\n                            return eras[i];\n                        }\n                        break;\n\n                    case 'NNNN':\n                        if (name === eraName) {\n                            return eras[i];\n                        }\n                        break;\n\n                    case 'NNNNN':\n                        if (narrow === eraName) {\n                            return eras[i];\n                        }\n                        break;\n                }\n            } else if ([name, abbr, narrow].indexOf(eraName) >= 0) {\n                return eras[i];\n            }\n        }\n    }\n\n    function localeErasConvertYear(era, year) {\n        var dir = era.since <= era.until ? +1 : -1;\n        if (year === undefined) {\n            return hooks(era.since).year();\n        } else {\n            return hooks(era.since).year() + (year - era.offset) * dir;\n        }\n    }\n\n    function getEraName() {\n        var i,\n            l,\n            val,\n            eras = this.localeData().eras();\n        for (i = 0, l = eras.length; i < l; ++i) {\n            // truncate time\n            val = this.clone().startOf('day').valueOf();\n\n            if (eras[i].since <= val && val <= eras[i].until) {\n                return eras[i].name;\n            }\n            if (eras[i].until <= val && val <= eras[i].since) {\n                return eras[i].name;\n            }\n        }\n\n        return '';\n    }\n\n    function getEraNarrow() {\n        var i,\n            l,\n            val,\n            eras = this.localeData().eras();\n        for (i = 0, l = eras.length; i < l; ++i) {\n            // truncate time\n            val = this.clone().startOf('day').valueOf();\n\n            if (eras[i].since <= val && val <= eras[i].until) {\n                return eras[i].narrow;\n            }\n            if (eras[i].until <= val && val <= eras[i].since) {\n                return eras[i].narrow;\n            }\n        }\n\n        return '';\n    }\n\n    function getEraAbbr() {\n        var i,\n            l,\n            val,\n            eras = this.localeData().eras();\n        for (i = 0, l = eras.length; i < l; ++i) {\n            // truncate time\n            val = this.clone().startOf('day').valueOf();\n\n            if (eras[i].since <= val && val <= eras[i].until) {\n                return eras[i].abbr;\n            }\n            if (eras[i].until <= val && val <= eras[i].since) {\n                return eras[i].abbr;\n            }\n        }\n\n        return '';\n    }\n\n    function getEraYear() {\n        var i,\n            l,\n            dir,\n            val,\n            eras = this.localeData().eras();\n        for (i = 0, l = eras.length; i < l; ++i) {\n            dir = eras[i].since <= eras[i].until ? +1 : -1;\n\n            // truncate time\n            val = this.clone().startOf('day').valueOf();\n\n            if (\n                (eras[i].since <= val && val <= eras[i].until) ||\n                (eras[i].until <= val && val <= eras[i].since)\n            ) {\n                return (\n                    (this.year() - hooks(eras[i].since).year()) * dir +\n                    eras[i].offset\n                );\n            }\n        }\n\n        return this.year();\n    }\n\n    function erasNameRegex(isStrict) {\n        if (!hasOwnProp(this, '_erasNameRegex')) {\n            computeErasParse.call(this);\n        }\n        return isStrict ? this._erasNameRegex : this._erasRegex;\n    }\n\n    function erasAbbrRegex(isStrict) {\n        if (!hasOwnProp(this, '_erasAbbrRegex')) {\n            computeErasParse.call(this);\n        }\n        return isStrict ? this._erasAbbrRegex : this._erasRegex;\n    }\n\n    function erasNarrowRegex(isStrict) {\n        if (!hasOwnProp(this, '_erasNarrowRegex')) {\n            computeErasParse.call(this);\n        }\n        return isStrict ? this._erasNarrowRegex : this._erasRegex;\n    }\n\n    function matchEraAbbr(isStrict, locale) {\n        return locale.erasAbbrRegex(isStrict);\n    }\n\n    function matchEraName(isStrict, locale) {\n        return locale.erasNameRegex(isStrict);\n    }\n\n    function matchEraNarrow(isStrict, locale) {\n        return locale.erasNarrowRegex(isStrict);\n    }\n\n    function matchEraYearOrdinal(isStrict, locale) {\n        return locale._eraYearOrdinalRegex || matchUnsigned;\n    }\n\n    function computeErasParse() {\n        var abbrPieces = [],\n            namePieces = [],\n            narrowPieces = [],\n            mixedPieces = [],\n            i,\n            l,\n            eras = this.eras();\n\n        for (i = 0, l = eras.length; i < l; ++i) {\n            namePieces.push(regexEscape(eras[i].name));\n            abbrPieces.push(regexEscape(eras[i].abbr));\n            narrowPieces.push(regexEscape(eras[i].narrow));\n\n            mixedPieces.push(regexEscape(eras[i].name));\n            mixedPieces.push(regexEscape(eras[i].abbr));\n            mixedPieces.push(regexEscape(eras[i].narrow));\n        }\n\n        this._erasRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n        this._erasNameRegex = new RegExp('^(' + namePieces.join('|') + ')', 'i');\n        this._erasAbbrRegex = new RegExp('^(' + abbrPieces.join('|') + ')', 'i');\n        this._erasNarrowRegex = new RegExp(\n            '^(' + narrowPieces.join('|') + ')',\n            'i'\n        );\n    }\n\n    // FORMATTING\n\n    addFormatToken(0, ['gg', 2], 0, function () {\n        return this.weekYear() % 100;\n    });\n\n    addFormatToken(0, ['GG', 2], 0, function () {\n        return this.isoWeekYear() % 100;\n    });\n\n    function addWeekYearFormatToken(token, getter) {\n        addFormatToken(0, [token, token.length], 0, getter);\n    }\n\n    addWeekYearFormatToken('gggg', 'weekYear');\n    addWeekYearFormatToken('ggggg', 'weekYear');\n    addWeekYearFormatToken('GGGG', 'isoWeekYear');\n    addWeekYearFormatToken('GGGGG', 'isoWeekYear');\n\n    // ALIASES\n\n    addUnitAlias('weekYear', 'gg');\n    addUnitAlias('isoWeekYear', 'GG');\n\n    // PRIORITY\n\n    addUnitPriority('weekYear', 1);\n    addUnitPriority('isoWeekYear', 1);\n\n    // PARSING\n\n    addRegexToken('G', matchSigned);\n    addRegexToken('g', matchSigned);\n    addRegexToken('GG', match1to2, match2);\n    addRegexToken('gg', match1to2, match2);\n    addRegexToken('GGGG', match1to4, match4);\n    addRegexToken('gggg', match1to4, match4);\n    addRegexToken('GGGGG', match1to6, match6);\n    addRegexToken('ggggg', match1to6, match6);\n\n    addWeekParseToken(['gggg', 'ggggg', 'GGGG', 'GGGGG'], function (\n        input,\n        week,\n        config,\n        token\n    ) {\n        week[token.substr(0, 2)] = toInt(input);\n    });\n\n    addWeekParseToken(['gg', 'GG'], function (input, week, config, token) {\n        week[token] = hooks.parseTwoDigitYear(input);\n    });\n\n    // MOMENTS\n\n    function getSetWeekYear(input) {\n        return getSetWeekYearHelper.call(\n            this,\n            input,\n            this.week(),\n            this.weekday(),\n            this.localeData()._week.dow,\n            this.localeData()._week.doy\n        );\n    }\n\n    function getSetISOWeekYear(input) {\n        return getSetWeekYearHelper.call(\n            this,\n            input,\n            this.isoWeek(),\n            this.isoWeekday(),\n            1,\n            4\n        );\n    }\n\n    function getISOWeeksInYear() {\n        return weeksInYear(this.year(), 1, 4);\n    }\n\n    function getISOWeeksInISOWeekYear() {\n        return weeksInYear(this.isoWeekYear(), 1, 4);\n    }\n\n    function getWeeksInYear() {\n        var weekInfo = this.localeData()._week;\n        return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);\n    }\n\n    function getWeeksInWeekYear() {\n        var weekInfo = this.localeData()._week;\n        return weeksInYear(this.weekYear(), weekInfo.dow, weekInfo.doy);\n    }\n\n    function getSetWeekYearHelper(input, week, weekday, dow, doy) {\n        var weeksTarget;\n        if (input == null) {\n            return weekOfYear(this, dow, doy).year;\n        } else {\n            weeksTarget = weeksInYear(input, dow, doy);\n            if (week > weeksTarget) {\n                week = weeksTarget;\n            }\n            return setWeekAll.call(this, input, week, weekday, dow, doy);\n        }\n    }\n\n    function setWeekAll(weekYear, week, weekday, dow, doy) {\n        var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),\n            date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);\n\n        this.year(date.getUTCFullYear());\n        this.month(date.getUTCMonth());\n        this.date(date.getUTCDate());\n        return this;\n    }\n\n    // FORMATTING\n\n    addFormatToken('Q', 0, 'Qo', 'quarter');\n\n    // ALIASES\n\n    addUnitAlias('quarter', 'Q');\n\n    // PRIORITY\n\n    addUnitPriority('quarter', 7);\n\n    // PARSING\n\n    addRegexToken('Q', match1);\n    addParseToken('Q', function (input, array) {\n        array[MONTH] = (toInt(input) - 1) * 3;\n    });\n\n    // MOMENTS\n\n    function getSetQuarter(input) {\n        return input == null\n            ? Math.ceil((this.month() + 1) / 3)\n            : this.month((input - 1) * 3 + (this.month() % 3));\n    }\n\n    // FORMATTING\n\n    addFormatToken('D', ['DD', 2], 'Do', 'date');\n\n    // ALIASES\n\n    addUnitAlias('date', 'D');\n\n    // PRIORITY\n    addUnitPriority('date', 9);\n\n    // PARSING\n\n    addRegexToken('D', match1to2);\n    addRegexToken('DD', match1to2, match2);\n    addRegexToken('Do', function (isStrict, locale) {\n        // TODO: Remove \"ordinalParse\" fallback in next major release.\n        return isStrict\n            ? locale._dayOfMonthOrdinalParse || locale._ordinalParse\n            : locale._dayOfMonthOrdinalParseLenient;\n    });\n\n    addParseToken(['D', 'DD'], DATE);\n    addParseToken('Do', function (input, array) {\n        array[DATE] = toInt(input.match(match1to2)[0]);\n    });\n\n    // MOMENTS\n\n    var getSetDayOfMonth = makeGetSet('Date', true);\n\n    // FORMATTING\n\n    addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');\n\n    // ALIASES\n\n    addUnitAlias('dayOfYear', 'DDD');\n\n    // PRIORITY\n    addUnitPriority('dayOfYear', 4);\n\n    // PARSING\n\n    addRegexToken('DDD', match1to3);\n    addRegexToken('DDDD', match3);\n    addParseToken(['DDD', 'DDDD'], function (input, array, config) {\n        config._dayOfYear = toInt(input);\n    });\n\n    // HELPERS\n\n    // MOMENTS\n\n    function getSetDayOfYear(input) {\n        var dayOfYear =\n            Math.round(\n                (this.clone().startOf('day') - this.clone().startOf('year')) / 864e5\n            ) + 1;\n        return input == null ? dayOfYear : this.add(input - dayOfYear, 'd');\n    }\n\n    // FORMATTING\n\n    addFormatToken('m', ['mm', 2], 0, 'minute');\n\n    // ALIASES\n\n    addUnitAlias('minute', 'm');\n\n    // PRIORITY\n\n    addUnitPriority('minute', 14);\n\n    // PARSING\n\n    addRegexToken('m', match1to2);\n    addRegexToken('mm', match1to2, match2);\n    addParseToken(['m', 'mm'], MINUTE);\n\n    // MOMENTS\n\n    var getSetMinute = makeGetSet('Minutes', false);\n\n    // FORMATTING\n\n    addFormatToken('s', ['ss', 2], 0, 'second');\n\n    // ALIASES\n\n    addUnitAlias('second', 's');\n\n    // PRIORITY\n\n    addUnitPriority('second', 15);\n\n    // PARSING\n\n    addRegexToken('s', match1to2);\n    addRegexToken('ss', match1to2, match2);\n    addParseToken(['s', 'ss'], SECOND);\n\n    // MOMENTS\n\n    var getSetSecond = makeGetSet('Seconds', false);\n\n    // FORMATTING\n\n    addFormatToken('S', 0, 0, function () {\n        return ~~(this.millisecond() / 100);\n    });\n\n    addFormatToken(0, ['SS', 2], 0, function () {\n        return ~~(this.millisecond() / 10);\n    });\n\n    addFormatToken(0, ['SSS', 3], 0, 'millisecond');\n    addFormatToken(0, ['SSSS', 4], 0, function () {\n        return this.millisecond() * 10;\n    });\n    addFormatToken(0, ['SSSSS', 5], 0, function () {\n        return this.millisecond() * 100;\n    });\n    addFormatToken(0, ['SSSSSS', 6], 0, function () {\n        return this.millisecond() * 1000;\n    });\n    addFormatToken(0, ['SSSSSSS', 7], 0, function () {\n        return this.millisecond() * 10000;\n    });\n    addFormatToken(0, ['SSSSSSSS', 8], 0, function () {\n        return this.millisecond() * 100000;\n    });\n    addFormatToken(0, ['SSSSSSSSS', 9], 0, function () {\n        return this.millisecond() * 1000000;\n    });\n\n    // ALIASES\n\n    addUnitAlias('millisecond', 'ms');\n\n    // PRIORITY\n\n    addUnitPriority('millisecond', 16);\n\n    // PARSING\n\n    addRegexToken('S', match1to3, match1);\n    addRegexToken('SS', match1to3, match2);\n    addRegexToken('SSS', match1to3, match3);\n\n    var token, getSetMillisecond;\n    for (token = 'SSSS'; token.length <= 9; token += 'S') {\n        addRegexToken(token, matchUnsigned);\n    }\n\n    function parseMs(input, array) {\n        array[MILLISECOND] = toInt(('0.' + input) * 1000);\n    }\n\n    for (token = 'S'; token.length <= 9; token += 'S') {\n        addParseToken(token, parseMs);\n    }\n\n    getSetMillisecond = makeGetSet('Milliseconds', false);\n\n    // FORMATTING\n\n    addFormatToken('z', 0, 0, 'zoneAbbr');\n    addFormatToken('zz', 0, 0, 'zoneName');\n\n    // MOMENTS\n\n    function getZoneAbbr() {\n        return this._isUTC ? 'UTC' : '';\n    }\n\n    function getZoneName() {\n        return this._isUTC ? 'Coordinated Universal Time' : '';\n    }\n\n    var proto = Moment.prototype;\n\n    proto.add = add;\n    proto.calendar = calendar$1;\n    proto.clone = clone;\n    proto.diff = diff;\n    proto.endOf = endOf;\n    proto.format = format;\n    proto.from = from;\n    proto.fromNow = fromNow;\n    proto.to = to;\n    proto.toNow = toNow;\n    proto.get = stringGet;\n    proto.invalidAt = invalidAt;\n    proto.isAfter = isAfter;\n    proto.isBefore = isBefore;\n    proto.isBetween = isBetween;\n    proto.isSame = isSame;\n    proto.isSameOrAfter = isSameOrAfter;\n    proto.isSameOrBefore = isSameOrBefore;\n    proto.isValid = isValid$2;\n    proto.lang = lang;\n    proto.locale = locale;\n    proto.localeData = localeData;\n    proto.max = prototypeMax;\n    proto.min = prototypeMin;\n    proto.parsingFlags = parsingFlags;\n    proto.set = stringSet;\n    proto.startOf = startOf;\n    proto.subtract = subtract;\n    proto.toArray = toArray;\n    proto.toObject = toObject;\n    proto.toDate = toDate;\n    proto.toISOString = toISOString;\n    proto.inspect = inspect;\n    if (typeof Symbol !== 'undefined' && Symbol.for != null) {\n        proto[Symbol.for('nodejs.util.inspect.custom')] = function () {\n            return 'Moment<' + this.format() + '>';\n        };\n    }\n    proto.toJSON = toJSON;\n    proto.toString = toString;\n    proto.unix = unix;\n    proto.valueOf = valueOf;\n    proto.creationData = creationData;\n    proto.eraName = getEraName;\n    proto.eraNarrow = getEraNarrow;\n    proto.eraAbbr = getEraAbbr;\n    proto.eraYear = getEraYear;\n    proto.year = getSetYear;\n    proto.isLeapYear = getIsLeapYear;\n    proto.weekYear = getSetWeekYear;\n    proto.isoWeekYear = getSetISOWeekYear;\n    proto.quarter = proto.quarters = getSetQuarter;\n    proto.month = getSetMonth;\n    proto.daysInMonth = getDaysInMonth;\n    proto.week = proto.weeks = getSetWeek;\n    proto.isoWeek = proto.isoWeeks = getSetISOWeek;\n    proto.weeksInYear = getWeeksInYear;\n    proto.weeksInWeekYear = getWeeksInWeekYear;\n    proto.isoWeeksInYear = getISOWeeksInYear;\n    proto.isoWeeksInISOWeekYear = getISOWeeksInISOWeekYear;\n    proto.date = getSetDayOfMonth;\n    proto.day = proto.days = getSetDayOfWeek;\n    proto.weekday = getSetLocaleDayOfWeek;\n    proto.isoWeekday = getSetISODayOfWeek;\n    proto.dayOfYear = getSetDayOfYear;\n    proto.hour = proto.hours = getSetHour;\n    proto.minute = proto.minutes = getSetMinute;\n    proto.second = proto.seconds = getSetSecond;\n    proto.millisecond = proto.milliseconds = getSetMillisecond;\n    proto.utcOffset = getSetOffset;\n    proto.utc = setOffsetToUTC;\n    proto.local = setOffsetToLocal;\n    proto.parseZone = setOffsetToParsedOffset;\n    proto.hasAlignedHourOffset = hasAlignedHourOffset;\n    proto.isDST = isDaylightSavingTime;\n    proto.isLocal = isLocal;\n    proto.isUtcOffset = isUtcOffset;\n    proto.isUtc = isUtc;\n    proto.isUTC = isUtc;\n    proto.zoneAbbr = getZoneAbbr;\n    proto.zoneName = getZoneName;\n    proto.dates = deprecate(\n        'dates accessor is deprecated. Use date instead.',\n        getSetDayOfMonth\n    );\n    proto.months = deprecate(\n        'months accessor is deprecated. Use month instead',\n        getSetMonth\n    );\n    proto.years = deprecate(\n        'years accessor is deprecated. Use year instead',\n        getSetYear\n    );\n    proto.zone = deprecate(\n        'moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/',\n        getSetZone\n    );\n    proto.isDSTShifted = deprecate(\n        'isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information',\n        isDaylightSavingTimeShifted\n    );\n\n    function createUnix(input) {\n        return createLocal(input * 1000);\n    }\n\n    function createInZone() {\n        return createLocal.apply(null, arguments).parseZone();\n    }\n\n    function preParsePostFormat(string) {\n        return string;\n    }\n\n    var proto$1 = Locale.prototype;\n\n    proto$1.calendar = calendar;\n    proto$1.longDateFormat = longDateFormat;\n    proto$1.invalidDate = invalidDate;\n    proto$1.ordinal = ordinal;\n    proto$1.preparse = preParsePostFormat;\n    proto$1.postformat = preParsePostFormat;\n    proto$1.relativeTime = relativeTime;\n    proto$1.pastFuture = pastFuture;\n    proto$1.set = set;\n    proto$1.eras = localeEras;\n    proto$1.erasParse = localeErasParse;\n    proto$1.erasConvertYear = localeErasConvertYear;\n    proto$1.erasAbbrRegex = erasAbbrRegex;\n    proto$1.erasNameRegex = erasNameRegex;\n    proto$1.erasNarrowRegex = erasNarrowRegex;\n\n    proto$1.months = localeMonths;\n    proto$1.monthsShort = localeMonthsShort;\n    proto$1.monthsParse = localeMonthsParse;\n    proto$1.monthsRegex = monthsRegex;\n    proto$1.monthsShortRegex = monthsShortRegex;\n    proto$1.week = localeWeek;\n    proto$1.firstDayOfYear = localeFirstDayOfYear;\n    proto$1.firstDayOfWeek = localeFirstDayOfWeek;\n\n    proto$1.weekdays = localeWeekdays;\n    proto$1.weekdaysMin = localeWeekdaysMin;\n    proto$1.weekdaysShort = localeWeekdaysShort;\n    proto$1.weekdaysParse = localeWeekdaysParse;\n\n    proto$1.weekdaysRegex = weekdaysRegex;\n    proto$1.weekdaysShortRegex = weekdaysShortRegex;\n    proto$1.weekdaysMinRegex = weekdaysMinRegex;\n\n    proto$1.isPM = localeIsPM;\n    proto$1.meridiem = localeMeridiem;\n\n    function get$1(format, index, field, setter) {\n        var locale = getLocale(),\n            utc = createUTC().set(setter, index);\n        return locale[field](utc, format);\n    }\n\n    function listMonthsImpl(format, index, field) {\n        if (isNumber(format)) {\n            index = format;\n            format = undefined;\n        }\n\n        format = format || '';\n\n        if (index != null) {\n            return get$1(format, index, field, 'month');\n        }\n\n        var i,\n            out = [];\n        for (i = 0; i < 12; i++) {\n            out[i] = get$1(format, i, field, 'month');\n        }\n        return out;\n    }\n\n    // ()\n    // (5)\n    // (fmt, 5)\n    // (fmt)\n    // (true)\n    // (true, 5)\n    // (true, fmt, 5)\n    // (true, fmt)\n    function listWeekdaysImpl(localeSorted, format, index, field) {\n        if (typeof localeSorted === 'boolean') {\n            if (isNumber(format)) {\n                index = format;\n                format = undefined;\n            }\n\n            format = format || '';\n        } else {\n            format = localeSorted;\n            index = format;\n            localeSorted = false;\n\n            if (isNumber(format)) {\n                index = format;\n                format = undefined;\n            }\n\n            format = format || '';\n        }\n\n        var locale = getLocale(),\n            shift = localeSorted ? locale._week.dow : 0,\n            i,\n            out = [];\n\n        if (index != null) {\n            return get$1(format, (index + shift) % 7, field, 'day');\n        }\n\n        for (i = 0; i < 7; i++) {\n            out[i] = get$1(format, (i + shift) % 7, field, 'day');\n        }\n        return out;\n    }\n\n    function listMonths(format, index) {\n        return listMonthsImpl(format, index, 'months');\n    }\n\n    function listMonthsShort(format, index) {\n        return listMonthsImpl(format, index, 'monthsShort');\n    }\n\n    function listWeekdays(localeSorted, format, index) {\n        return listWeekdaysImpl(localeSorted, format, index, 'weekdays');\n    }\n\n    function listWeekdaysShort(localeSorted, format, index) {\n        return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');\n    }\n\n    function listWeekdaysMin(localeSorted, format, index) {\n        return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');\n    }\n\n    getSetGlobalLocale('en', {\n        eras: [\n            {\n                since: '0001-01-01',\n                until: +Infinity,\n                offset: 1,\n                name: 'Anno Domini',\n                narrow: 'AD',\n                abbr: 'AD',\n            },\n            {\n                since: '0000-12-31',\n                until: -Infinity,\n                offset: 1,\n                name: 'Before Christ',\n                narrow: 'BC',\n                abbr: 'BC',\n            },\n        ],\n        dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n        ordinal: function (number) {\n            var b = number % 10,\n                output =\n                    toInt((number % 100) / 10) === 1\n                        ? 'th'\n                        : b === 1\n                        ? 'st'\n                        : b === 2\n                        ? 'nd'\n                        : b === 3\n                        ? 'rd'\n                        : 'th';\n            return number + output;\n        },\n    });\n\n    // Side effect imports\n\n    hooks.lang = deprecate(\n        'moment.lang is deprecated. Use moment.locale instead.',\n        getSetGlobalLocale\n    );\n    hooks.langData = deprecate(\n        'moment.langData is deprecated. Use moment.localeData instead.',\n        getLocale\n    );\n\n    var mathAbs = Math.abs;\n\n    function abs() {\n        var data = this._data;\n\n        this._milliseconds = mathAbs(this._milliseconds);\n        this._days = mathAbs(this._days);\n        this._months = mathAbs(this._months);\n\n        data.milliseconds = mathAbs(data.milliseconds);\n        data.seconds = mathAbs(data.seconds);\n        data.minutes = mathAbs(data.minutes);\n        data.hours = mathAbs(data.hours);\n        data.months = mathAbs(data.months);\n        data.years = mathAbs(data.years);\n\n        return this;\n    }\n\n    function addSubtract$1(duration, input, value, direction) {\n        var other = createDuration(input, value);\n\n        duration._milliseconds += direction * other._milliseconds;\n        duration._days += direction * other._days;\n        duration._months += direction * other._months;\n\n        return duration._bubble();\n    }\n\n    // supports only 2.0-style add(1, 's') or add(duration)\n    function add$1(input, value) {\n        return addSubtract$1(this, input, value, 1);\n    }\n\n    // supports only 2.0-style subtract(1, 's') or subtract(duration)\n    function subtract$1(input, value) {\n        return addSubtract$1(this, input, value, -1);\n    }\n\n    function absCeil(number) {\n        if (number < 0) {\n            return Math.floor(number);\n        } else {\n            return Math.ceil(number);\n        }\n    }\n\n    function bubble() {\n        var milliseconds = this._milliseconds,\n            days = this._days,\n            months = this._months,\n            data = this._data,\n            seconds,\n            minutes,\n            hours,\n            years,\n            monthsFromDays;\n\n        // if we have a mix of positive and negative values, bubble down first\n        // check: https://github.com/moment/moment/issues/2166\n        if (\n            !(\n                (milliseconds >= 0 && days >= 0 && months >= 0) ||\n                (milliseconds <= 0 && days <= 0 && months <= 0)\n            )\n        ) {\n            milliseconds += absCeil(monthsToDays(months) + days) * 864e5;\n            days = 0;\n            months = 0;\n        }\n\n        // The following code bubbles up values, see the tests for\n        // examples of what that means.\n        data.milliseconds = milliseconds % 1000;\n\n        seconds = absFloor(milliseconds / 1000);\n        data.seconds = seconds % 60;\n\n        minutes = absFloor(seconds / 60);\n        data.minutes = minutes % 60;\n\n        hours = absFloor(minutes / 60);\n        data.hours = hours % 24;\n\n        days += absFloor(hours / 24);\n\n        // convert days to months\n        monthsFromDays = absFloor(daysToMonths(days));\n        months += monthsFromDays;\n        days -= absCeil(monthsToDays(monthsFromDays));\n\n        // 12 months -> 1 year\n        years = absFloor(months / 12);\n        months %= 12;\n\n        data.days = days;\n        data.months = months;\n        data.years = years;\n\n        return this;\n    }\n\n    function daysToMonths(days) {\n        // 400 years have 146097 days (taking into account leap year rules)\n        // 400 years have 12 months === 4800\n        return (days * 4800) / 146097;\n    }\n\n    function monthsToDays(months) {\n        // the reverse of daysToMonths\n        return (months * 146097) / 4800;\n    }\n\n    function as(units) {\n        if (!this.isValid()) {\n            return NaN;\n        }\n        var days,\n            months,\n            milliseconds = this._milliseconds;\n\n        units = normalizeUnits(units);\n\n        if (units === 'month' || units === 'quarter' || units === 'year') {\n            days = this._days + milliseconds / 864e5;\n            months = this._months + daysToMonths(days);\n            switch (units) {\n                case 'month':\n                    return months;\n                case 'quarter':\n                    return months / 3;\n                case 'year':\n                    return months / 12;\n            }\n        } else {\n            // handle milliseconds separately because of floating point math errors (issue #1867)\n            days = this._days + Math.round(monthsToDays(this._months));\n            switch (units) {\n                case 'week':\n                    return days / 7 + milliseconds / 6048e5;\n                case 'day':\n                    return days + milliseconds / 864e5;\n                case 'hour':\n                    return days * 24 + milliseconds / 36e5;\n                case 'minute':\n                    return days * 1440 + milliseconds / 6e4;\n                case 'second':\n                    return days * 86400 + milliseconds / 1000;\n                // Math.floor prevents floating point math errors here\n                case 'millisecond':\n                    return Math.floor(days * 864e5) + milliseconds;\n                default:\n                    throw new Error('Unknown unit ' + units);\n            }\n        }\n    }\n\n    // TODO: Use this.as('ms')?\n    function valueOf$1() {\n        if (!this.isValid()) {\n            return NaN;\n        }\n        return (\n            this._milliseconds +\n            this._days * 864e5 +\n            (this._months % 12) * 2592e6 +\n            toInt(this._months / 12) * 31536e6\n        );\n    }\n\n    function makeAs(alias) {\n        return function () {\n            return this.as(alias);\n        };\n    }\n\n    var asMilliseconds = makeAs('ms'),\n        asSeconds = makeAs('s'),\n        asMinutes = makeAs('m'),\n        asHours = makeAs('h'),\n        asDays = makeAs('d'),\n        asWeeks = makeAs('w'),\n        asMonths = makeAs('M'),\n        asQuarters = makeAs('Q'),\n        asYears = makeAs('y');\n\n    function clone$1() {\n        return createDuration(this);\n    }\n\n    function get$2(units) {\n        units = normalizeUnits(units);\n        return this.isValid() ? this[units + 's']() : NaN;\n    }\n\n    function makeGetter(name) {\n        return function () {\n            return this.isValid() ? this._data[name] : NaN;\n        };\n    }\n\n    var milliseconds = makeGetter('milliseconds'),\n        seconds = makeGetter('seconds'),\n        minutes = makeGetter('minutes'),\n        hours = makeGetter('hours'),\n        days = makeGetter('days'),\n        months = makeGetter('months'),\n        years = makeGetter('years');\n\n    function weeks() {\n        return absFloor(this.days() / 7);\n    }\n\n    var round = Math.round,\n        thresholds = {\n            ss: 44, // a few seconds to seconds\n            s: 45, // seconds to minute\n            m: 45, // minutes to hour\n            h: 22, // hours to day\n            d: 26, // days to month/week\n            w: null, // weeks to month\n            M: 11, // months to year\n        };\n\n    // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize\n    function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {\n        return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);\n    }\n\n    function relativeTime$1(posNegDuration, withoutSuffix, thresholds, locale) {\n        var duration = createDuration(posNegDuration).abs(),\n            seconds = round(duration.as('s')),\n            minutes = round(duration.as('m')),\n            hours = round(duration.as('h')),\n            days = round(duration.as('d')),\n            months = round(duration.as('M')),\n            weeks = round(duration.as('w')),\n            years = round(duration.as('y')),\n            a =\n                (seconds <= thresholds.ss && ['s', seconds]) ||\n                (seconds < thresholds.s && ['ss', seconds]) ||\n                (minutes <= 1 && ['m']) ||\n                (minutes < thresholds.m && ['mm', minutes]) ||\n                (hours <= 1 && ['h']) ||\n                (hours < thresholds.h && ['hh', hours]) ||\n                (days <= 1 && ['d']) ||\n                (days < thresholds.d && ['dd', days]);\n\n        if (thresholds.w != null) {\n            a =\n                a ||\n                (weeks <= 1 && ['w']) ||\n                (weeks < thresholds.w && ['ww', weeks]);\n        }\n        a = a ||\n            (months <= 1 && ['M']) ||\n            (months < thresholds.M && ['MM', months]) ||\n            (years <= 1 && ['y']) || ['yy', years];\n\n        a[2] = withoutSuffix;\n        a[3] = +posNegDuration > 0;\n        a[4] = locale;\n        return substituteTimeAgo.apply(null, a);\n    }\n\n    // This function allows you to set the rounding function for relative time strings\n    function getSetRelativeTimeRounding(roundingFunction) {\n        if (roundingFunction === undefined) {\n            return round;\n        }\n        if (typeof roundingFunction === 'function') {\n            round = roundingFunction;\n            return true;\n        }\n        return false;\n    }\n\n    // This function allows you to set a threshold for relative time strings\n    function getSetRelativeTimeThreshold(threshold, limit) {\n        if (thresholds[threshold] === undefined) {\n            return false;\n        }\n        if (limit === undefined) {\n            return thresholds[threshold];\n        }\n        thresholds[threshold] = limit;\n        if (threshold === 's') {\n            thresholds.ss = limit - 1;\n        }\n        return true;\n    }\n\n    function humanize(argWithSuffix, argThresholds) {\n        if (!this.isValid()) {\n            return this.localeData().invalidDate();\n        }\n\n        var withSuffix = false,\n            th = thresholds,\n            locale,\n            output;\n\n        if (typeof argWithSuffix === 'object') {\n            argThresholds = argWithSuffix;\n            argWithSuffix = false;\n        }\n        if (typeof argWithSuffix === 'boolean') {\n            withSuffix = argWithSuffix;\n        }\n        if (typeof argThresholds === 'object') {\n            th = Object.assign({}, thresholds, argThresholds);\n            if (argThresholds.s != null && argThresholds.ss == null) {\n                th.ss = argThresholds.s - 1;\n            }\n        }\n\n        locale = this.localeData();\n        output = relativeTime$1(this, !withSuffix, th, locale);\n\n        if (withSuffix) {\n            output = locale.pastFuture(+this, output);\n        }\n\n        return locale.postformat(output);\n    }\n\n    var abs$1 = Math.abs;\n\n    function sign(x) {\n        return (x > 0) - (x < 0) || +x;\n    }\n\n    function toISOString$1() {\n        // for ISO strings we do not use the normal bubbling rules:\n        //  * milliseconds bubble up until they become hours\n        //  * days do not bubble at all\n        //  * months bubble up until they become years\n        // This is because there is no context-free conversion between hours and days\n        // (think of clock changes)\n        // and also not between days and months (28-31 days per month)\n        if (!this.isValid()) {\n            return this.localeData().invalidDate();\n        }\n\n        var seconds = abs$1(this._milliseconds) / 1000,\n            days = abs$1(this._days),\n            months = abs$1(this._months),\n            minutes,\n            hours,\n            years,\n            s,\n            total = this.asSeconds(),\n            totalSign,\n            ymSign,\n            daysSign,\n            hmsSign;\n\n        if (!total) {\n            // this is the same as C#'s (Noda) and python (isodate)...\n            // but not other JS (goog.date)\n            return 'P0D';\n        }\n\n        // 3600 seconds -> 60 minutes -> 1 hour\n        minutes = absFloor(seconds / 60);\n        hours = absFloor(minutes / 60);\n        seconds %= 60;\n        minutes %= 60;\n\n        // 12 months -> 1 year\n        years = absFloor(months / 12);\n        months %= 12;\n\n        // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js\n        s = seconds ? seconds.toFixed(3).replace(/\\.?0+$/, '') : '';\n\n        totalSign = total < 0 ? '-' : '';\n        ymSign = sign(this._months) !== sign(total) ? '-' : '';\n        daysSign = sign(this._days) !== sign(total) ? '-' : '';\n        hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : '';\n\n        return (\n            totalSign +\n            'P' +\n            (years ? ymSign + years + 'Y' : '') +\n            (months ? ymSign + months + 'M' : '') +\n            (days ? daysSign + days + 'D' : '') +\n            (hours || minutes || seconds ? 'T' : '') +\n            (hours ? hmsSign + hours + 'H' : '') +\n            (minutes ? hmsSign + minutes + 'M' : '') +\n            (seconds ? hmsSign + s + 'S' : '')\n        );\n    }\n\n    var proto$2 = Duration.prototype;\n\n    proto$2.isValid = isValid$1;\n    proto$2.abs = abs;\n    proto$2.add = add$1;\n    proto$2.subtract = subtract$1;\n    proto$2.as = as;\n    proto$2.asMilliseconds = asMilliseconds;\n    proto$2.asSeconds = asSeconds;\n    proto$2.asMinutes = asMinutes;\n    proto$2.asHours = asHours;\n    proto$2.asDays = asDays;\n    proto$2.asWeeks = asWeeks;\n    proto$2.asMonths = asMonths;\n    proto$2.asQuarters = asQuarters;\n    proto$2.asYears = asYears;\n    proto$2.valueOf = valueOf$1;\n    proto$2._bubble = bubble;\n    proto$2.clone = clone$1;\n    proto$2.get = get$2;\n    proto$2.milliseconds = milliseconds;\n    proto$2.seconds = seconds;\n    proto$2.minutes = minutes;\n    proto$2.hours = hours;\n    proto$2.days = days;\n    proto$2.weeks = weeks;\n    proto$2.months = months;\n    proto$2.years = years;\n    proto$2.humanize = humanize;\n    proto$2.toISOString = toISOString$1;\n    proto$2.toString = toISOString$1;\n    proto$2.toJSON = toISOString$1;\n    proto$2.locale = locale;\n    proto$2.localeData = localeData;\n\n    proto$2.toIsoString = deprecate(\n        'toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)',\n        toISOString$1\n    );\n    proto$2.lang = lang;\n\n    // FORMATTING\n\n    addFormatToken('X', 0, 0, 'unix');\n    addFormatToken('x', 0, 0, 'valueOf');\n\n    // PARSING\n\n    addRegexToken('x', matchSigned);\n    addRegexToken('X', matchTimestamp);\n    addParseToken('X', function (input, array, config) {\n        config._d = new Date(parseFloat(input) * 1000);\n    });\n    addParseToken('x', function (input, array, config) {\n        config._d = new Date(toInt(input));\n    });\n\n    //! moment.js\n\n    hooks.version = '2.29.1';\n\n    setHookCallback(createLocal);\n\n    hooks.fn = proto;\n    hooks.min = min;\n    hooks.max = max;\n    hooks.now = now;\n    hooks.utc = createUTC;\n    hooks.unix = createUnix;\n    hooks.months = listMonths;\n    hooks.isDate = isDate;\n    hooks.locale = getSetGlobalLocale;\n    hooks.invalid = createInvalid;\n    hooks.duration = createDuration;\n    hooks.isMoment = isMoment;\n    hooks.weekdays = listWeekdays;\n    hooks.parseZone = createInZone;\n    hooks.localeData = getLocale;\n    hooks.isDuration = isDuration;\n    hooks.monthsShort = listMonthsShort;\n    hooks.weekdaysMin = listWeekdaysMin;\n    hooks.defineLocale = defineLocale;\n    hooks.updateLocale = updateLocale;\n    hooks.locales = listLocales;\n    hooks.weekdaysShort = listWeekdaysShort;\n    hooks.normalizeUnits = normalizeUnits;\n    hooks.relativeTimeRounding = getSetRelativeTimeRounding;\n    hooks.relativeTimeThreshold = getSetRelativeTimeThreshold;\n    hooks.calendarFormat = getCalendarFormat;\n    hooks.prototype = proto;\n\n    // currently HTML5 input type only supports 24-hour formats\n    hooks.HTML5_FMT = {\n        DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm', // <input type=\"datetime-local\" />\n        DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss', // <input type=\"datetime-local\" step=\"1\" />\n        DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS', // <input type=\"datetime-local\" step=\"0.001\" />\n        DATE: 'YYYY-MM-DD', // <input type=\"date\" />\n        TIME: 'HH:mm', // <input type=\"time\" />\n        TIME_SECONDS: 'HH:mm:ss', // <input type=\"time\" step=\"1\" />\n        TIME_MS: 'HH:mm:ss.SSS', // <input type=\"time\" step=\"0.001\" />\n        WEEK: 'GGGG-[W]WW', // <input type=\"week\" />\n        MONTH: 'YYYY-MM', // <input type=\"month\" />\n    };\n\n    return hooks;\n\n})));\n","/**\n * marked - a markdown parser\n * Copyright (c) 2011-2021, Christopher Jeffrey. (MIT Licensed)\n * https://github.com/markedjs/marked\n */\n\n/**\n * DO NOT EDIT THIS FILE\n * The code in this file is generated from files in ./src/\n */\n\n(function (global, factory) {\n  typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n  typeof define === 'function' && define.amd ? define(factory) :\n  (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.marked = factory());\n}(this, (function () { 'use strict';\n\n  function _defineProperties(target, props) {\n    for (var i = 0; i < props.length; i++) {\n      var descriptor = props[i];\n      descriptor.enumerable = descriptor.enumerable || false;\n      descriptor.configurable = true;\n      if (\"value\" in descriptor) descriptor.writable = true;\n      Object.defineProperty(target, descriptor.key, descriptor);\n    }\n  }\n\n  function _createClass(Constructor, protoProps, staticProps) {\n    if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n    if (staticProps) _defineProperties(Constructor, staticProps);\n    return Constructor;\n  }\n\n  function _unsupportedIterableToArray(o, minLen) {\n    if (!o) return;\n    if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n    var n = Object.prototype.toString.call(o).slice(8, -1);\n    if (n === \"Object\" && o.constructor) n = o.constructor.name;\n    if (n === \"Map\" || n === \"Set\") return Array.from(o);\n    if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n  }\n\n  function _arrayLikeToArray(arr, len) {\n    if (len == null || len > arr.length) len = arr.length;\n\n    for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n    return arr2;\n  }\n\n  function _createForOfIteratorHelperLoose(o, allowArrayLike) {\n    var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n    if (it) return (it = it.call(o)).next.bind(it);\n\n    if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n      if (it) o = it;\n      var i = 0;\n      return function () {\n        if (i >= o.length) return {\n          done: true\n        };\n        return {\n          done: false,\n          value: o[i++]\n        };\n      };\n    }\n\n    throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n  }\n\n  var defaults$5 = {exports: {}};\n\n  function getDefaults$1() {\n    return {\n      baseUrl: null,\n      breaks: false,\n      extensions: null,\n      gfm: true,\n      headerIds: true,\n      headerPrefix: '',\n      highlight: null,\n      langPrefix: 'language-',\n      mangle: true,\n      pedantic: false,\n      renderer: null,\n      sanitize: false,\n      sanitizer: null,\n      silent: false,\n      smartLists: false,\n      smartypants: false,\n      tokenizer: null,\n      walkTokens: null,\n      xhtml: false\n    };\n  }\n\n  function changeDefaults$1(newDefaults) {\n    defaults$5.exports.defaults = newDefaults;\n  }\n\n  defaults$5.exports = {\n    defaults: getDefaults$1(),\n    getDefaults: getDefaults$1,\n    changeDefaults: changeDefaults$1\n  };\n\n  /**\n   * Helpers\n   */\n  var escapeTest = /[&<>\"']/;\n  var escapeReplace = /[&<>\"']/g;\n  var escapeTestNoEncode = /[<>\"']|&(?!#?\\w+;)/;\n  var escapeReplaceNoEncode = /[<>\"']|&(?!#?\\w+;)/g;\n  var escapeReplacements = {\n    '&': '&amp;',\n    '<': '&lt;',\n    '>': '&gt;',\n    '\"': '&quot;',\n    \"'\": '&#39;'\n  };\n\n  var getEscapeReplacement = function getEscapeReplacement(ch) {\n    return escapeReplacements[ch];\n  };\n\n  function escape$2(html, encode) {\n    if (encode) {\n      if (escapeTest.test(html)) {\n        return html.replace(escapeReplace, getEscapeReplacement);\n      }\n    } else {\n      if (escapeTestNoEncode.test(html)) {\n        return html.replace(escapeReplaceNoEncode, getEscapeReplacement);\n      }\n    }\n\n    return html;\n  }\n\n  var unescapeTest = /&(#(?:\\d+)|(?:#x[0-9A-Fa-f]+)|(?:\\w+));?/ig;\n\n  function unescape$1(html) {\n    // explicitly match decimal, hex, and named HTML entities\n    return html.replace(unescapeTest, function (_, n) {\n      n = n.toLowerCase();\n      if (n === 'colon') return ':';\n\n      if (n.charAt(0) === '#') {\n        return n.charAt(1) === 'x' ? String.fromCharCode(parseInt(n.substring(2), 16)) : String.fromCharCode(+n.substring(1));\n      }\n\n      return '';\n    });\n  }\n\n  var caret = /(^|[^\\[])\\^/g;\n\n  function edit$1(regex, opt) {\n    regex = regex.source || regex;\n    opt = opt || '';\n    var obj = {\n      replace: function replace(name, val) {\n        val = val.source || val;\n        val = val.replace(caret, '$1');\n        regex = regex.replace(name, val);\n        return obj;\n      },\n      getRegex: function getRegex() {\n        return new RegExp(regex, opt);\n      }\n    };\n    return obj;\n  }\n\n  var nonWordAndColonTest = /[^\\w:]/g;\n  var originIndependentUrl = /^$|^[a-z][a-z0-9+.-]*:|^[?#]/i;\n\n  function cleanUrl$1(sanitize, base, href) {\n    if (sanitize) {\n      var prot;\n\n      try {\n        prot = decodeURIComponent(unescape$1(href)).replace(nonWordAndColonTest, '').toLowerCase();\n      } catch (e) {\n        return null;\n      }\n\n      if (prot.indexOf('javascript:') === 0 || prot.indexOf('vbscript:') === 0 || prot.indexOf('data:') === 0) {\n        return null;\n      }\n    }\n\n    if (base && !originIndependentUrl.test(href)) {\n      href = resolveUrl(base, href);\n    }\n\n    try {\n      href = encodeURI(href).replace(/%25/g, '%');\n    } catch (e) {\n      return null;\n    }\n\n    return href;\n  }\n\n  var baseUrls = {};\n  var justDomain = /^[^:]+:\\/*[^/]*$/;\n  var protocol = /^([^:]+:)[\\s\\S]*$/;\n  var domain = /^([^:]+:\\/*[^/]*)[\\s\\S]*$/;\n\n  function resolveUrl(base, href) {\n    if (!baseUrls[' ' + base]) {\n      // we can ignore everything in base after the last slash of its path component,\n      // but we might need to add _that_\n      // https://tools.ietf.org/html/rfc3986#section-3\n      if (justDomain.test(base)) {\n        baseUrls[' ' + base] = base + '/';\n      } else {\n        baseUrls[' ' + base] = rtrim$1(base, '/', true);\n      }\n    }\n\n    base = baseUrls[' ' + base];\n    var relativeBase = base.indexOf(':') === -1;\n\n    if (href.substring(0, 2) === '//') {\n      if (relativeBase) {\n        return href;\n      }\n\n      return base.replace(protocol, '$1') + href;\n    } else if (href.charAt(0) === '/') {\n      if (relativeBase) {\n        return href;\n      }\n\n      return base.replace(domain, '$1') + href;\n    } else {\n      return base + href;\n    }\n  }\n\n  var noopTest$1 = {\n    exec: function noopTest() {}\n  };\n\n  function merge$2(obj) {\n    var i = 1,\n        target,\n        key;\n\n    for (; i < arguments.length; i++) {\n      target = arguments[i];\n\n      for (key in target) {\n        if (Object.prototype.hasOwnProperty.call(target, key)) {\n          obj[key] = target[key];\n        }\n      }\n    }\n\n    return obj;\n  }\n\n  function splitCells$1(tableRow, count) {\n    // ensure that every cell-delimiting pipe has a space\n    // before it to distinguish it from an escaped pipe\n    var row = tableRow.replace(/\\|/g, function (match, offset, str) {\n      var escaped = false,\n          curr = offset;\n\n      while (--curr >= 0 && str[curr] === '\\\\') {\n        escaped = !escaped;\n      }\n\n      if (escaped) {\n        // odd number of slashes means | is escaped\n        // so we leave it alone\n        return '|';\n      } else {\n        // add space before unescaped |\n        return ' |';\n      }\n    }),\n        cells = row.split(/ \\|/);\n    var i = 0; // First/last cell in a row cannot be empty if it has no leading/trailing pipe\n\n    if (!cells[0].trim()) {\n      cells.shift();\n    }\n\n    if (!cells[cells.length - 1].trim()) {\n      cells.pop();\n    }\n\n    if (cells.length > count) {\n      cells.splice(count);\n    } else {\n      while (cells.length < count) {\n        cells.push('');\n      }\n    }\n\n    for (; i < cells.length; i++) {\n      // leading or trailing whitespace is ignored per the gfm spec\n      cells[i] = cells[i].trim().replace(/\\\\\\|/g, '|');\n    }\n\n    return cells;\n  } // Remove trailing 'c's. Equivalent to str.replace(/c*$/, '').\n  // /c*$/ is vulnerable to REDOS.\n  // invert: Remove suffix of non-c chars instead. Default falsey.\n\n\n  function rtrim$1(str, c, invert) {\n    var l = str.length;\n\n    if (l === 0) {\n      return '';\n    } // Length of suffix matching the invert condition.\n\n\n    var suffLen = 0; // Step left until we fail to match the invert condition.\n\n    while (suffLen < l) {\n      var currChar = str.charAt(l - suffLen - 1);\n\n      if (currChar === c && !invert) {\n        suffLen++;\n      } else if (currChar !== c && invert) {\n        suffLen++;\n      } else {\n        break;\n      }\n    }\n\n    return str.substr(0, l - suffLen);\n  }\n\n  function findClosingBracket$1(str, b) {\n    if (str.indexOf(b[1]) === -1) {\n      return -1;\n    }\n\n    var l = str.length;\n    var level = 0,\n        i = 0;\n\n    for (; i < l; i++) {\n      if (str[i] === '\\\\') {\n        i++;\n      } else if (str[i] === b[0]) {\n        level++;\n      } else if (str[i] === b[1]) {\n        level--;\n\n        if (level < 0) {\n          return i;\n        }\n      }\n    }\n\n    return -1;\n  }\n\n  function checkSanitizeDeprecation$1(opt) {\n    if (opt && opt.sanitize && !opt.silent) {\n      console.warn('marked(): sanitize and sanitizer parameters are deprecated since version 0.7.0, should not be used and will be removed in the future. Read more here: https://marked.js.org/#/USING_ADVANCED.md#options');\n    }\n  } // copied from https://stackoverflow.com/a/5450113/806777\n\n\n  function repeatString$1(pattern, count) {\n    if (count < 1) {\n      return '';\n    }\n\n    var result = '';\n\n    while (count > 1) {\n      if (count & 1) {\n        result += pattern;\n      }\n\n      count >>= 1;\n      pattern += pattern;\n    }\n\n    return result + pattern;\n  }\n\n  var helpers = {\n    escape: escape$2,\n    unescape: unescape$1,\n    edit: edit$1,\n    cleanUrl: cleanUrl$1,\n    resolveUrl: resolveUrl,\n    noopTest: noopTest$1,\n    merge: merge$2,\n    splitCells: splitCells$1,\n    rtrim: rtrim$1,\n    findClosingBracket: findClosingBracket$1,\n    checkSanitizeDeprecation: checkSanitizeDeprecation$1,\n    repeatString: repeatString$1\n  };\n\n  var defaults$4 = defaults$5.exports.defaults;\n  var rtrim = helpers.rtrim,\n      splitCells = helpers.splitCells,\n      _escape = helpers.escape,\n      findClosingBracket = helpers.findClosingBracket;\n\n  function outputLink(cap, link, raw, lexer) {\n    var href = link.href;\n    var title = link.title ? _escape(link.title) : null;\n    var text = cap[1].replace(/\\\\([\\[\\]])/g, '$1');\n\n    if (cap[0].charAt(0) !== '!') {\n      lexer.state.inLink = true;\n      var token = {\n        type: 'link',\n        raw: raw,\n        href: href,\n        title: title,\n        text: text,\n        tokens: lexer.inlineTokens(text, [])\n      };\n      lexer.state.inLink = false;\n      return token;\n    } else {\n      return {\n        type: 'image',\n        raw: raw,\n        href: href,\n        title: title,\n        text: _escape(text)\n      };\n    }\n  }\n\n  function indentCodeCompensation(raw, text) {\n    var matchIndentToCode = raw.match(/^(\\s+)(?:```)/);\n\n    if (matchIndentToCode === null) {\n      return text;\n    }\n\n    var indentToCode = matchIndentToCode[1];\n    return text.split('\\n').map(function (node) {\n      var matchIndentInNode = node.match(/^\\s+/);\n\n      if (matchIndentInNode === null) {\n        return node;\n      }\n\n      var indentInNode = matchIndentInNode[0];\n\n      if (indentInNode.length >= indentToCode.length) {\n        return node.slice(indentToCode.length);\n      }\n\n      return node;\n    }).join('\\n');\n  }\n  /**\n   * Tokenizer\n   */\n\n\n  var Tokenizer_1 = /*#__PURE__*/function () {\n    function Tokenizer(options) {\n      this.options = options || defaults$4;\n    }\n\n    var _proto = Tokenizer.prototype;\n\n    _proto.space = function space(src) {\n      var cap = this.rules.block.newline.exec(src);\n\n      if (cap) {\n        if (cap[0].length > 1) {\n          return {\n            type: 'space',\n            raw: cap[0]\n          };\n        }\n\n        return {\n          raw: '\\n'\n        };\n      }\n    };\n\n    _proto.code = function code(src) {\n      var cap = this.rules.block.code.exec(src);\n\n      if (cap) {\n        var text = cap[0].replace(/^ {1,4}/gm, '');\n        return {\n          type: 'code',\n          raw: cap[0],\n          codeBlockStyle: 'indented',\n          text: !this.options.pedantic ? rtrim(text, '\\n') : text\n        };\n      }\n    };\n\n    _proto.fences = function fences(src) {\n      var cap = this.rules.block.fences.exec(src);\n\n      if (cap) {\n        var raw = cap[0];\n        var text = indentCodeCompensation(raw, cap[3] || '');\n        return {\n          type: 'code',\n          raw: raw,\n          lang: cap[2] ? cap[2].trim() : cap[2],\n          text: text\n        };\n      }\n    };\n\n    _proto.heading = function heading(src) {\n      var cap = this.rules.block.heading.exec(src);\n\n      if (cap) {\n        var text = cap[2].trim(); // remove trailing #s\n\n        if (/#$/.test(text)) {\n          var trimmed = rtrim(text, '#');\n\n          if (this.options.pedantic) {\n            text = trimmed.trim();\n          } else if (!trimmed || / $/.test(trimmed)) {\n            // CommonMark requires space before trailing #s\n            text = trimmed.trim();\n          }\n        }\n\n        var token = {\n          type: 'heading',\n          raw: cap[0],\n          depth: cap[1].length,\n          text: text,\n          tokens: []\n        };\n        this.lexer.inline(token.text, token.tokens);\n        return token;\n      }\n    };\n\n    _proto.hr = function hr(src) {\n      var cap = this.rules.block.hr.exec(src);\n\n      if (cap) {\n        return {\n          type: 'hr',\n          raw: cap[0]\n        };\n      }\n    };\n\n    _proto.blockquote = function blockquote(src) {\n      var cap = this.rules.block.blockquote.exec(src);\n\n      if (cap) {\n        var text = cap[0].replace(/^ *> ?/gm, '');\n        return {\n          type: 'blockquote',\n          raw: cap[0],\n          tokens: this.lexer.blockTokens(text, []),\n          text: text\n        };\n      }\n    };\n\n    _proto.list = function list(src) {\n      var cap = this.rules.block.list.exec(src);\n\n      if (cap) {\n        var raw, istask, ischecked, indent, i, blankLine, endsWithBlankLine, line, lines, itemContents;\n        var bull = cap[1].trim();\n        var isordered = bull.length > 1;\n        var list = {\n          type: 'list',\n          raw: '',\n          ordered: isordered,\n          start: isordered ? +bull.slice(0, -1) : '',\n          loose: false,\n          items: []\n        };\n        bull = isordered ? \"\\\\d{1,9}\\\\\" + bull.slice(-1) : \"\\\\\" + bull;\n\n        if (this.options.pedantic) {\n          bull = isordered ? bull : '[*+-]';\n        } // Get next list item\n\n\n        var itemRegex = new RegExp(\"^( {0,3}\" + bull + \")((?: [^\\\\n]*| *)(?:\\\\n[^\\\\n]*)*(?:\\\\n|$))\"); // Get each top-level item\n\n        while (src) {\n          if (this.rules.block.hr.test(src)) {\n            // End list if we encounter an HR (possibly move into itemRegex?)\n            break;\n          }\n\n          if (!(cap = itemRegex.exec(src))) {\n            break;\n          }\n\n          lines = cap[2].split('\\n');\n\n          if (this.options.pedantic) {\n            indent = 2;\n            itemContents = lines[0].trimLeft();\n          } else {\n            indent = cap[2].search(/[^ ]/); // Find first non-space char\n\n            indent = cap[1].length + (indent > 4 ? 1 : indent); // intented code blocks after 4 spaces; indent is always 1\n\n            itemContents = lines[0].slice(indent - cap[1].length);\n          }\n\n          blankLine = false;\n          raw = cap[0];\n\n          if (!lines[0] && /^ *$/.test(lines[1])) {\n            // items begin with at most one blank line\n            raw = cap[1] + lines.slice(0, 2).join('\\n') + '\\n';\n            list.loose = true;\n            lines = [];\n          }\n\n          var nextBulletRegex = new RegExp(\"^ {0,\" + Math.min(3, indent - 1) + \"}(?:[*+-]|\\\\d{1,9}[.)])\");\n\n          for (i = 1; i < lines.length; i++) {\n            line = lines[i];\n\n            if (this.options.pedantic) {\n              // Re-align to follow commonmark nesting rules\n              line = line.replace(/^ {1,4}(?=( {4})*[^ ])/g, '  ');\n            } // End list item if found start of new bullet\n\n\n            if (nextBulletRegex.test(line)) {\n              raw = cap[1] + lines.slice(0, i).join('\\n') + '\\n';\n              break;\n            } // Until we encounter a blank line, item contents do not need indentation\n\n\n            if (!blankLine) {\n              if (!line.trim()) {\n                // Check if current line is empty\n                blankLine = true;\n              } // Dedent if possible\n\n\n              if (line.search(/[^ ]/) >= indent) {\n                itemContents += '\\n' + line.slice(indent);\n              } else {\n                itemContents += '\\n' + line;\n              }\n\n              continue;\n            } // Dedent this line\n\n\n            if (line.search(/[^ ]/) >= indent || !line.trim()) {\n              itemContents += '\\n' + line.slice(indent);\n              continue;\n            } else {\n              // Line was not properly indented; end of this item\n              raw = cap[1] + lines.slice(0, i).join('\\n') + '\\n';\n              break;\n            }\n          }\n\n          if (!list.loose) {\n            // If the previous item ended with a blank line, the list is loose\n            if (endsWithBlankLine) {\n              list.loose = true;\n            } else if (/\\n *\\n *$/.test(raw)) {\n              endsWithBlankLine = true;\n            }\n          } // Check for task list items\n\n\n          if (this.options.gfm) {\n            istask = /^\\[[ xX]\\] /.exec(itemContents);\n\n            if (istask) {\n              ischecked = istask[0] !== '[ ] ';\n              itemContents = itemContents.replace(/^\\[[ xX]\\] +/, '');\n            }\n          }\n\n          list.items.push({\n            type: 'list_item',\n            raw: raw,\n            task: !!istask,\n            checked: ischecked,\n            loose: false,\n            text: itemContents\n          });\n          list.raw += raw;\n          src = src.slice(raw.length);\n        } // Do not consume newlines at end of final item. Alternatively, make itemRegex *start* with any newlines to simplify/speed up endsWithBlankLine logic\n\n\n        list.items[list.items.length - 1].raw = raw.trimRight();\n        list.items[list.items.length - 1].text = itemContents.trimRight();\n        list.raw = list.raw.trimRight();\n        var l = list.items.length; // Item child tokens handled here at end because we needed to have the final item to trim it first\n\n        for (i = 0; i < l; i++) {\n          this.lexer.state.top = false;\n          list.items[i].tokens = this.lexer.blockTokens(list.items[i].text, []);\n\n          if (list.items[i].tokens.some(function (t) {\n            return t.type === 'space';\n          })) {\n            list.loose = true;\n            list.items[i].loose = true;\n          }\n        }\n\n        return list;\n      }\n    };\n\n    _proto.html = function html(src) {\n      var cap = this.rules.block.html.exec(src);\n\n      if (cap) {\n        var token = {\n          type: 'html',\n          raw: cap[0],\n          pre: !this.options.sanitizer && (cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style'),\n          text: cap[0]\n        };\n\n        if (this.options.sanitize) {\n          token.type = 'paragraph';\n          token.text = this.options.sanitizer ? this.options.sanitizer(cap[0]) : _escape(cap[0]);\n          token.tokens = [];\n          this.lexer.inline(token.text, token.tokens);\n        }\n\n        return token;\n      }\n    };\n\n    _proto.def = function def(src) {\n      var cap = this.rules.block.def.exec(src);\n\n      if (cap) {\n        if (cap[3]) cap[3] = cap[3].substring(1, cap[3].length - 1);\n        var tag = cap[1].toLowerCase().replace(/\\s+/g, ' ');\n        return {\n          type: 'def',\n          tag: tag,\n          raw: cap[0],\n          href: cap[2],\n          title: cap[3]\n        };\n      }\n    };\n\n    _proto.table = function table(src) {\n      var cap = this.rules.block.table.exec(src);\n\n      if (cap) {\n        var item = {\n          type: 'table',\n          header: splitCells(cap[1]).map(function (c) {\n            return {\n              text: c\n            };\n          }),\n          align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n          rows: cap[3] ? cap[3].replace(/\\n$/, '').split('\\n') : []\n        };\n\n        if (item.header.length === item.align.length) {\n          item.raw = cap[0];\n          var l = item.align.length;\n          var i, j, k, row;\n\n          for (i = 0; i < l; i++) {\n            if (/^ *-+: *$/.test(item.align[i])) {\n              item.align[i] = 'right';\n            } else if (/^ *:-+: *$/.test(item.align[i])) {\n              item.align[i] = 'center';\n            } else if (/^ *:-+ *$/.test(item.align[i])) {\n              item.align[i] = 'left';\n            } else {\n              item.align[i] = null;\n            }\n          }\n\n          l = item.rows.length;\n\n          for (i = 0; i < l; i++) {\n            item.rows[i] = splitCells(item.rows[i], item.header.length).map(function (c) {\n              return {\n                text: c\n              };\n            });\n          } // parse child tokens inside headers and cells\n          // header child tokens\n\n\n          l = item.header.length;\n\n          for (j = 0; j < l; j++) {\n            item.header[j].tokens = [];\n            this.lexer.inlineTokens(item.header[j].text, item.header[j].tokens);\n          } // cell child tokens\n\n\n          l = item.rows.length;\n\n          for (j = 0; j < l; j++) {\n            row = item.rows[j];\n\n            for (k = 0; k < row.length; k++) {\n              row[k].tokens = [];\n              this.lexer.inlineTokens(row[k].text, row[k].tokens);\n            }\n          }\n\n          return item;\n        }\n      }\n    };\n\n    _proto.lheading = function lheading(src) {\n      var cap = this.rules.block.lheading.exec(src);\n\n      if (cap) {\n        var token = {\n          type: 'heading',\n          raw: cap[0],\n          depth: cap[2].charAt(0) === '=' ? 1 : 2,\n          text: cap[1],\n          tokens: []\n        };\n        this.lexer.inline(token.text, token.tokens);\n        return token;\n      }\n    };\n\n    _proto.paragraph = function paragraph(src) {\n      var cap = this.rules.block.paragraph.exec(src);\n\n      if (cap) {\n        var token = {\n          type: 'paragraph',\n          raw: cap[0],\n          text: cap[1].charAt(cap[1].length - 1) === '\\n' ? cap[1].slice(0, -1) : cap[1],\n          tokens: []\n        };\n        this.lexer.inline(token.text, token.tokens);\n        return token;\n      }\n    };\n\n    _proto.text = function text(src) {\n      var cap = this.rules.block.text.exec(src);\n\n      if (cap) {\n        var token = {\n          type: 'text',\n          raw: cap[0],\n          text: cap[0],\n          tokens: []\n        };\n        this.lexer.inline(token.text, token.tokens);\n        return token;\n      }\n    };\n\n    _proto.escape = function escape(src) {\n      var cap = this.rules.inline.escape.exec(src);\n\n      if (cap) {\n        return {\n          type: 'escape',\n          raw: cap[0],\n          text: _escape(cap[1])\n        };\n      }\n    };\n\n    _proto.tag = function tag(src) {\n      var cap = this.rules.inline.tag.exec(src);\n\n      if (cap) {\n        if (!this.lexer.state.inLink && /^<a /i.test(cap[0])) {\n          this.lexer.state.inLink = true;\n        } else if (this.lexer.state.inLink && /^<\\/a>/i.test(cap[0])) {\n          this.lexer.state.inLink = false;\n        }\n\n        if (!this.lexer.state.inRawBlock && /^<(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n          this.lexer.state.inRawBlock = true;\n        } else if (this.lexer.state.inRawBlock && /^<\\/(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n          this.lexer.state.inRawBlock = false;\n        }\n\n        return {\n          type: this.options.sanitize ? 'text' : 'html',\n          raw: cap[0],\n          inLink: this.lexer.state.inLink,\n          inRawBlock: this.lexer.state.inRawBlock,\n          text: this.options.sanitize ? this.options.sanitizer ? this.options.sanitizer(cap[0]) : _escape(cap[0]) : cap[0]\n        };\n      }\n    };\n\n    _proto.link = function link(src) {\n      var cap = this.rules.inline.link.exec(src);\n\n      if (cap) {\n        var trimmedUrl = cap[2].trim();\n\n        if (!this.options.pedantic && /^</.test(trimmedUrl)) {\n          // commonmark requires matching angle brackets\n          if (!/>$/.test(trimmedUrl)) {\n            return;\n          } // ending angle bracket cannot be escaped\n\n\n          var rtrimSlash = rtrim(trimmedUrl.slice(0, -1), '\\\\');\n\n          if ((trimmedUrl.length - rtrimSlash.length) % 2 === 0) {\n            return;\n          }\n        } else {\n          // find closing parenthesis\n          var lastParenIndex = findClosingBracket(cap[2], '()');\n\n          if (lastParenIndex > -1) {\n            var start = cap[0].indexOf('!') === 0 ? 5 : 4;\n            var linkLen = start + cap[1].length + lastParenIndex;\n            cap[2] = cap[2].substring(0, lastParenIndex);\n            cap[0] = cap[0].substring(0, linkLen).trim();\n            cap[3] = '';\n          }\n        }\n\n        var href = cap[2];\n        var title = '';\n\n        if (this.options.pedantic) {\n          // split pedantic href and title\n          var link = /^([^'\"]*[^\\s])\\s+(['\"])(.*)\\2/.exec(href);\n\n          if (link) {\n            href = link[1];\n            title = link[3];\n          }\n        } else {\n          title = cap[3] ? cap[3].slice(1, -1) : '';\n        }\n\n        href = href.trim();\n\n        if (/^</.test(href)) {\n          if (this.options.pedantic && !/>$/.test(trimmedUrl)) {\n            // pedantic allows starting angle bracket without ending angle bracket\n            href = href.slice(1);\n          } else {\n            href = href.slice(1, -1);\n          }\n        }\n\n        return outputLink(cap, {\n          href: href ? href.replace(this.rules.inline._escapes, '$1') : href,\n          title: title ? title.replace(this.rules.inline._escapes, '$1') : title\n        }, cap[0], this.lexer);\n      }\n    };\n\n    _proto.reflink = function reflink(src, links) {\n      var cap;\n\n      if ((cap = this.rules.inline.reflink.exec(src)) || (cap = this.rules.inline.nolink.exec(src))) {\n        var link = (cap[2] || cap[1]).replace(/\\s+/g, ' ');\n        link = links[link.toLowerCase()];\n\n        if (!link || !link.href) {\n          var text = cap[0].charAt(0);\n          return {\n            type: 'text',\n            raw: text,\n            text: text\n          };\n        }\n\n        return outputLink(cap, link, cap[0], this.lexer);\n      }\n    };\n\n    _proto.emStrong = function emStrong(src, maskedSrc, prevChar) {\n      if (prevChar === void 0) {\n        prevChar = '';\n      }\n\n      var match = this.rules.inline.emStrong.lDelim.exec(src);\n      if (!match) return; // _ can't be between two alphanumerics. \\p{L}\\p{N} includes non-english alphabet/numbers as well\n\n      if (match[3] && prevChar.match(/(?:[0-9A-Za-z\\xAA\\xB2\\xB3\\xB5\\xB9\\xBA\\xBC-\\xBE\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0560-\\u0588\\u05D0-\\u05EA\\u05EF-\\u05F2\\u0620-\\u064A\\u0660-\\u0669\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07C0-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u0860-\\u086A\\u08A0-\\u08B4\\u08B6-\\u08C7\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0966-\\u096F\\u0971-\\u0980\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09E6-\\u09F1\\u09F4-\\u09F9\\u09FC\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A66-\\u0A6F\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0AE6-\\u0AEF\\u0AF9\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B66-\\u0B6F\\u0B71-\\u0B77\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0BE6-\\u0BF2\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D\\u0C58-\\u0C5A\\u0C60\\u0C61\\u0C66-\\u0C6F\\u0C78-\\u0C7E\\u0C80\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CE6-\\u0CEF\\u0CF1\\u0CF2\\u0D04-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D54-\\u0D56\\u0D58-\\u0D61\\u0D66-\\u0D78\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0DE6-\\u0DEF\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E50-\\u0E59\\u0E81\\u0E82\\u0E84\\u0E86-\\u0E8A\\u0E8C-\\u0EA3\\u0EA5\\u0EA7-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0ED0-\\u0ED9\\u0EDC-\\u0EDF\\u0F00\\u0F20-\\u0F33\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F-\\u1049\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u1090-\\u1099\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1369-\\u137C\\u1380-\\u138F\\u13A0-\\u13F5\\u13F8-\\u13FD\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u17E0-\\u17E9\\u17F0-\\u17F9\\u1810-\\u1819\\u1820-\\u1878\\u1880-\\u1884\\u1887-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1946-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u19D0-\\u19DA\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1A80-\\u1A89\\u1A90-\\u1A99\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B50-\\u1B59\\u1B83-\\u1BA0\\u1BAE-\\u1BE5\\u1C00-\\u1C23\\u1C40-\\u1C49\\u1C4D-\\u1C7D\\u1C80-\\u1C88\\u1C90-\\u1CBA\\u1CBD-\\u1CBF\\u1CE9-\\u1CEC\\u1CEE-\\u1CF3\\u1CF5\\u1CF6\\u1CFA\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2070\\u2071\\u2074-\\u2079\\u207F-\\u2089\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2150-\\u2189\\u2460-\\u249B\\u24EA-\\u24FF\\u2776-\\u2793\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2CFD\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312F\\u3131-\\u318E\\u3192-\\u3195\\u31A0-\\u31BF\\u31F0-\\u31FF\\u3220-\\u3229\\u3248-\\u324F\\u3251-\\u325F\\u3280-\\u3289\\u32B1-\\u32BF\\u3400-\\u4DBF\\u4E00-\\u9FFC\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA62B\\uA640-\\uA66E\\uA67F-\\uA69D\\uA6A0-\\uA6EF\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA7BF\\uA7C2-\\uA7CA\\uA7F5-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA830-\\uA835\\uA840-\\uA873\\uA882-\\uA8B3\\uA8D0-\\uA8D9\\uA8F2-\\uA8F7\\uA8FB\\uA8FD\\uA8FE\\uA900-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF-\\uA9D9\\uA9E0-\\uA9E4\\uA9E6-\\uA9FE\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA50-\\uAA59\\uAA60-\\uAA76\\uAA7A\\uAA7E-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB69\\uAB70-\\uABE2\\uABF0-\\uABF9\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF10-\\uFF19\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]|\\uD800[\\uDC00-\\uDC0B\\uDC0D-\\uDC26\\uDC28-\\uDC3A\\uDC3C\\uDC3D\\uDC3F-\\uDC4D\\uDC50-\\uDC5D\\uDC80-\\uDCFA\\uDD07-\\uDD33\\uDD40-\\uDD78\\uDD8A\\uDD8B\\uDE80-\\uDE9C\\uDEA0-\\uDED0\\uDEE1-\\uDEFB\\uDF00-\\uDF23\\uDF2D-\\uDF4A\\uDF50-\\uDF75\\uDF80-\\uDF9D\\uDFA0-\\uDFC3\\uDFC8-\\uDFCF\\uDFD1-\\uDFD5]|\\uD801[\\uDC00-\\uDC9D\\uDCA0-\\uDCA9\\uDCB0-\\uDCD3\\uDCD8-\\uDCFB\\uDD00-\\uDD27\\uDD30-\\uDD63\\uDE00-\\uDF36\\uDF40-\\uDF55\\uDF60-\\uDF67]|\\uD802[\\uDC00-\\uDC05\\uDC08\\uDC0A-\\uDC35\\uDC37\\uDC38\\uDC3C\\uDC3F-\\uDC55\\uDC58-\\uDC76\\uDC79-\\uDC9E\\uDCA7-\\uDCAF\\uDCE0-\\uDCF2\\uDCF4\\uDCF5\\uDCFB-\\uDD1B\\uDD20-\\uDD39\\uDD80-\\uDDB7\\uDDBC-\\uDDCF\\uDDD2-\\uDE00\\uDE10-\\uDE13\\uDE15-\\uDE17\\uDE19-\\uDE35\\uDE40-\\uDE48\\uDE60-\\uDE7E\\uDE80-\\uDE9F\\uDEC0-\\uDEC7\\uDEC9-\\uDEE4\\uDEEB-\\uDEEF\\uDF00-\\uDF35\\uDF40-\\uDF55\\uDF58-\\uDF72\\uDF78-\\uDF91\\uDFA9-\\uDFAF]|\\uD803[\\uDC00-\\uDC48\\uDC80-\\uDCB2\\uDCC0-\\uDCF2\\uDCFA-\\uDD23\\uDD30-\\uDD39\\uDE60-\\uDE7E\\uDE80-\\uDEA9\\uDEB0\\uDEB1\\uDF00-\\uDF27\\uDF30-\\uDF45\\uDF51-\\uDF54\\uDFB0-\\uDFCB\\uDFE0-\\uDFF6]|\\uD804[\\uDC03-\\uDC37\\uDC52-\\uDC6F\\uDC83-\\uDCAF\\uDCD0-\\uDCE8\\uDCF0-\\uDCF9\\uDD03-\\uDD26\\uDD36-\\uDD3F\\uDD44\\uDD47\\uDD50-\\uDD72\\uDD76\\uDD83-\\uDDB2\\uDDC1-\\uDDC4\\uDDD0-\\uDDDA\\uDDDC\\uDDE1-\\uDDF4\\uDE00-\\uDE11\\uDE13-\\uDE2B\\uDE80-\\uDE86\\uDE88\\uDE8A-\\uDE8D\\uDE8F-\\uDE9D\\uDE9F-\\uDEA8\\uDEB0-\\uDEDE\\uDEF0-\\uDEF9\\uDF05-\\uDF0C\\uDF0F\\uDF10\\uDF13-\\uDF28\\uDF2A-\\uDF30\\uDF32\\uDF33\\uDF35-\\uDF39\\uDF3D\\uDF50\\uDF5D-\\uDF61]|\\uD805[\\uDC00-\\uDC34\\uDC47-\\uDC4A\\uDC50-\\uDC59\\uDC5F-\\uDC61\\uDC80-\\uDCAF\\uDCC4\\uDCC5\\uDCC7\\uDCD0-\\uDCD9\\uDD80-\\uDDAE\\uDDD8-\\uDDDB\\uDE00-\\uDE2F\\uDE44\\uDE50-\\uDE59\\uDE80-\\uDEAA\\uDEB8\\uDEC0-\\uDEC9\\uDF00-\\uDF1A\\uDF30-\\uDF3B]|\\uD806[\\uDC00-\\uDC2B\\uDCA0-\\uDCF2\\uDCFF-\\uDD06\\uDD09\\uDD0C-\\uDD13\\uDD15\\uDD16\\uDD18-\\uDD2F\\uDD3F\\uDD41\\uDD50-\\uDD59\\uDDA0-\\uDDA7\\uDDAA-\\uDDD0\\uDDE1\\uDDE3\\uDE00\\uDE0B-\\uDE32\\uDE3A\\uDE50\\uDE5C-\\uDE89\\uDE9D\\uDEC0-\\uDEF8]|\\uD807[\\uDC00-\\uDC08\\uDC0A-\\uDC2E\\uDC40\\uDC50-\\uDC6C\\uDC72-\\uDC8F\\uDD00-\\uDD06\\uDD08\\uDD09\\uDD0B-\\uDD30\\uDD46\\uDD50-\\uDD59\\uDD60-\\uDD65\\uDD67\\uDD68\\uDD6A-\\uDD89\\uDD98\\uDDA0-\\uDDA9\\uDEE0-\\uDEF2\\uDFB0\\uDFC0-\\uDFD4]|\\uD808[\\uDC00-\\uDF99]|\\uD809[\\uDC00-\\uDC6E\\uDC80-\\uDD43]|[\\uD80C\\uD81C-\\uD820\\uD822\\uD840-\\uD868\\uD86A-\\uD86C\\uD86F-\\uD872\\uD874-\\uD879\\uD880-\\uD883][\\uDC00-\\uDFFF]|\\uD80D[\\uDC00-\\uDC2E]|\\uD811[\\uDC00-\\uDE46]|\\uD81A[\\uDC00-\\uDE38\\uDE40-\\uDE5E\\uDE60-\\uDE69\\uDED0-\\uDEED\\uDF00-\\uDF2F\\uDF40-\\uDF43\\uDF50-\\uDF59\\uDF5B-\\uDF61\\uDF63-\\uDF77\\uDF7D-\\uDF8F]|\\uD81B[\\uDE40-\\uDE96\\uDF00-\\uDF4A\\uDF50\\uDF93-\\uDF9F\\uDFE0\\uDFE1\\uDFE3]|\\uD821[\\uDC00-\\uDFF7]|\\uD823[\\uDC00-\\uDCD5\\uDD00-\\uDD08]|\\uD82C[\\uDC00-\\uDD1E\\uDD50-\\uDD52\\uDD64-\\uDD67\\uDD70-\\uDEFB]|\\uD82F[\\uDC00-\\uDC6A\\uDC70-\\uDC7C\\uDC80-\\uDC88\\uDC90-\\uDC99]|\\uD834[\\uDEE0-\\uDEF3\\uDF60-\\uDF78]|\\uD835[\\uDC00-\\uDC54\\uDC56-\\uDC9C\\uDC9E\\uDC9F\\uDCA2\\uDCA5\\uDCA6\\uDCA9-\\uDCAC\\uDCAE-\\uDCB9\\uDCBB\\uDCBD-\\uDCC3\\uDCC5-\\uDD05\\uDD07-\\uDD0A\\uDD0D-\\uDD14\\uDD16-\\uDD1C\\uDD1E-\\uDD39\\uDD3B-\\uDD3E\\uDD40-\\uDD44\\uDD46\\uDD4A-\\uDD50\\uDD52-\\uDEA5\\uDEA8-\\uDEC0\\uDEC2-\\uDEDA\\uDEDC-\\uDEFA\\uDEFC-\\uDF14\\uDF16-\\uDF34\\uDF36-\\uDF4E\\uDF50-\\uDF6E\\uDF70-\\uDF88\\uDF8A-\\uDFA8\\uDFAA-\\uDFC2\\uDFC4-\\uDFCB\\uDFCE-\\uDFFF]|\\uD838[\\uDD00-\\uDD2C\\uDD37-\\uDD3D\\uDD40-\\uDD49\\uDD4E\\uDEC0-\\uDEEB\\uDEF0-\\uDEF9]|\\uD83A[\\uDC00-\\uDCC4\\uDCC7-\\uDCCF\\uDD00-\\uDD43\\uDD4B\\uDD50-\\uDD59]|\\uD83B[\\uDC71-\\uDCAB\\uDCAD-\\uDCAF\\uDCB1-\\uDCB4\\uDD01-\\uDD2D\\uDD2F-\\uDD3D\\uDE00-\\uDE03\\uDE05-\\uDE1F\\uDE21\\uDE22\\uDE24\\uDE27\\uDE29-\\uDE32\\uDE34-\\uDE37\\uDE39\\uDE3B\\uDE42\\uDE47\\uDE49\\uDE4B\\uDE4D-\\uDE4F\\uDE51\\uDE52\\uDE54\\uDE57\\uDE59\\uDE5B\\uDE5D\\uDE5F\\uDE61\\uDE62\\uDE64\\uDE67-\\uDE6A\\uDE6C-\\uDE72\\uDE74-\\uDE77\\uDE79-\\uDE7C\\uDE7E\\uDE80-\\uDE89\\uDE8B-\\uDE9B\\uDEA1-\\uDEA3\\uDEA5-\\uDEA9\\uDEAB-\\uDEBB]|\\uD83C[\\uDD00-\\uDD0C]|\\uD83E[\\uDFF0-\\uDFF9]|\\uD869[\\uDC00-\\uDEDD\\uDF00-\\uDFFF]|\\uD86D[\\uDC00-\\uDF34\\uDF40-\\uDFFF]|\\uD86E[\\uDC00-\\uDC1D\\uDC20-\\uDFFF]|\\uD873[\\uDC00-\\uDEA1\\uDEB0-\\uDFFF]|\\uD87A[\\uDC00-\\uDFE0]|\\uD87E[\\uDC00-\\uDE1D]|\\uD884[\\uDC00-\\uDF4A])/)) return;\n      var nextChar = match[1] || match[2] || '';\n\n      if (!nextChar || nextChar && (prevChar === '' || this.rules.inline.punctuation.exec(prevChar))) {\n        var lLength = match[0].length - 1;\n        var rDelim,\n            rLength,\n            delimTotal = lLength,\n            midDelimTotal = 0;\n        var endReg = match[0][0] === '*' ? this.rules.inline.emStrong.rDelimAst : this.rules.inline.emStrong.rDelimUnd;\n        endReg.lastIndex = 0; // Clip maskedSrc to same section of string as src (move to lexer?)\n\n        maskedSrc = maskedSrc.slice(-1 * src.length + lLength);\n\n        while ((match = endReg.exec(maskedSrc)) != null) {\n          rDelim = match[1] || match[2] || match[3] || match[4] || match[5] || match[6];\n          if (!rDelim) continue; // skip single * in __abc*abc__\n\n          rLength = rDelim.length;\n\n          if (match[3] || match[4]) {\n            // found another Left Delim\n            delimTotal += rLength;\n            continue;\n          } else if (match[5] || match[6]) {\n            // either Left or Right Delim\n            if (lLength % 3 && !((lLength + rLength) % 3)) {\n              midDelimTotal += rLength;\n              continue; // CommonMark Emphasis Rules 9-10\n            }\n          }\n\n          delimTotal -= rLength;\n          if (delimTotal > 0) continue; // Haven't found enough closing delimiters\n          // Remove extra characters. *a*** -> *a*\n\n          rLength = Math.min(rLength, rLength + delimTotal + midDelimTotal); // Create `em` if smallest delimiter has odd char count. *a***\n\n          if (Math.min(lLength, rLength) % 2) {\n            var _text = src.slice(1, lLength + match.index + rLength);\n\n            return {\n              type: 'em',\n              raw: src.slice(0, lLength + match.index + rLength + 1),\n              text: _text,\n              tokens: this.lexer.inlineTokens(_text, [])\n            };\n          } // Create 'strong' if smallest delimiter has even char count. **a***\n\n\n          var text = src.slice(2, lLength + match.index + rLength - 1);\n          return {\n            type: 'strong',\n            raw: src.slice(0, lLength + match.index + rLength + 1),\n            text: text,\n            tokens: this.lexer.inlineTokens(text, [])\n          };\n        }\n      }\n    };\n\n    _proto.codespan = function codespan(src) {\n      var cap = this.rules.inline.code.exec(src);\n\n      if (cap) {\n        var text = cap[2].replace(/\\n/g, ' ');\n        var hasNonSpaceChars = /[^ ]/.test(text);\n        var hasSpaceCharsOnBothEnds = /^ /.test(text) && / $/.test(text);\n\n        if (hasNonSpaceChars && hasSpaceCharsOnBothEnds) {\n          text = text.substring(1, text.length - 1);\n        }\n\n        text = _escape(text, true);\n        return {\n          type: 'codespan',\n          raw: cap[0],\n          text: text\n        };\n      }\n    };\n\n    _proto.br = function br(src) {\n      var cap = this.rules.inline.br.exec(src);\n\n      if (cap) {\n        return {\n          type: 'br',\n          raw: cap[0]\n        };\n      }\n    };\n\n    _proto.del = function del(src) {\n      var cap = this.rules.inline.del.exec(src);\n\n      if (cap) {\n        return {\n          type: 'del',\n          raw: cap[0],\n          text: cap[2],\n          tokens: this.lexer.inlineTokens(cap[2], [])\n        };\n      }\n    };\n\n    _proto.autolink = function autolink(src, mangle) {\n      var cap = this.rules.inline.autolink.exec(src);\n\n      if (cap) {\n        var text, href;\n\n        if (cap[2] === '@') {\n          text = _escape(this.options.mangle ? mangle(cap[1]) : cap[1]);\n          href = 'mailto:' + text;\n        } else {\n          text = _escape(cap[1]);\n          href = text;\n        }\n\n        return {\n          type: 'link',\n          raw: cap[0],\n          text: text,\n          href: href,\n          tokens: [{\n            type: 'text',\n            raw: text,\n            text: text\n          }]\n        };\n      }\n    };\n\n    _proto.url = function url(src, mangle) {\n      var cap;\n\n      if (cap = this.rules.inline.url.exec(src)) {\n        var text, href;\n\n        if (cap[2] === '@') {\n          text = _escape(this.options.mangle ? mangle(cap[0]) : cap[0]);\n          href = 'mailto:' + text;\n        } else {\n          // do extended autolink path validation\n          var prevCapZero;\n\n          do {\n            prevCapZero = cap[0];\n            cap[0] = this.rules.inline._backpedal.exec(cap[0])[0];\n          } while (prevCapZero !== cap[0]);\n\n          text = _escape(cap[0]);\n\n          if (cap[1] === 'www.') {\n            href = 'http://' + text;\n          } else {\n            href = text;\n          }\n        }\n\n        return {\n          type: 'link',\n          raw: cap[0],\n          text: text,\n          href: href,\n          tokens: [{\n            type: 'text',\n            raw: text,\n            text: text\n          }]\n        };\n      }\n    };\n\n    _proto.inlineText = function inlineText(src, smartypants) {\n      var cap = this.rules.inline.text.exec(src);\n\n      if (cap) {\n        var text;\n\n        if (this.lexer.state.inRawBlock) {\n          text = this.options.sanitize ? this.options.sanitizer ? this.options.sanitizer(cap[0]) : _escape(cap[0]) : cap[0];\n        } else {\n          text = _escape(this.options.smartypants ? smartypants(cap[0]) : cap[0]);\n        }\n\n        return {\n          type: 'text',\n          raw: cap[0],\n          text: text\n        };\n      }\n    };\n\n    return Tokenizer;\n  }();\n\n  var noopTest = helpers.noopTest,\n      edit = helpers.edit,\n      merge$1 = helpers.merge;\n  /**\n   * Block-Level Grammar\n   */\n\n  var block$1 = {\n    newline: /^(?: *(?:\\n|$))+/,\n    code: /^( {4}[^\\n]+(?:\\n(?: *(?:\\n|$))*)?)+/,\n    fences: /^ {0,3}(`{3,}(?=[^`\\n]*\\n)|~{3,})([^\\n]*)\\n(?:|([\\s\\S]*?)\\n)(?: {0,3}\\1[~`]* *(?=\\n|$)|$)/,\n    hr: /^ {0,3}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)/,\n    heading: /^ {0,3}(#{1,6})(?=\\s|$)(.*)(?:\\n+|$)/,\n    blockquote: /^( {0,3}> ?(paragraph|[^\\n]*)(?:\\n|$))+/,\n    list: /^( {0,3}bull)( [^\\n]+?)?(?:\\n|$)/,\n    html: '^ {0,3}(?:' // optional indentation\n    + '<(script|pre|style|textarea)[\\\\s>][\\\\s\\\\S]*?(?:</\\\\1>[^\\\\n]*\\\\n+|$)' // (1)\n    + '|comment[^\\\\n]*(\\\\n+|$)' // (2)\n    + '|<\\\\?[\\\\s\\\\S]*?(?:\\\\?>\\\\n*|$)' // (3)\n    + '|<![A-Z][\\\\s\\\\S]*?(?:>\\\\n*|$)' // (4)\n    + '|<!\\\\[CDATA\\\\[[\\\\s\\\\S]*?(?:\\\\]\\\\]>\\\\n*|$)' // (5)\n    + '|</?(tag)(?: +|\\\\n|/?>)[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (6)\n    + '|<(?!script|pre|style|textarea)([a-z][\\\\w-]*)(?:attribute)*? */?>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (7) open tag\n    + '|</(?!script|pre|style|textarea)[a-z][\\\\w-]*\\\\s*>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (7) closing tag\n    + ')',\n    def: /^ {0,3}\\[(label)\\]: *\\n? *<?([^\\s>]+)>?(?:(?: +\\n? *| *\\n *)(title))? *(?:\\n+|$)/,\n    table: noopTest,\n    lheading: /^([^\\n]+)\\n {0,3}(=+|-+) *(?:\\n+|$)/,\n    // regex template, placeholders will be replaced according to different paragraph\n    // interruption rules of commonmark and the original markdown spec:\n    _paragraph: /^([^\\n]+(?:\\n(?!hr|heading|lheading|blockquote|fences|list|html| +\\n)[^\\n]+)*)/,\n    text: /^[^\\n]+/\n  };\n  block$1._label = /(?!\\s*\\])(?:\\\\[\\[\\]]|[^\\[\\]])+/;\n  block$1._title = /(?:\"(?:\\\\\"?|[^\"\\\\])*\"|'[^'\\n]*(?:\\n[^'\\n]+)*\\n?'|\\([^()]*\\))/;\n  block$1.def = edit(block$1.def).replace('label', block$1._label).replace('title', block$1._title).getRegex();\n  block$1.bullet = /(?:[*+-]|\\d{1,9}[.)])/;\n  block$1.listItemStart = edit(/^( *)(bull) */).replace('bull', block$1.bullet).getRegex();\n  block$1.list = edit(block$1.list).replace(/bull/g, block$1.bullet).replace('hr', '\\\\n+(?=\\\\1?(?:(?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$))').replace('def', '\\\\n+(?=' + block$1.def.source + ')').getRegex();\n  block$1._tag = 'address|article|aside|base|basefont|blockquote|body|caption' + '|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption' + '|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe' + '|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option' + '|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr' + '|track|ul';\n  block$1._comment = /<!--(?!-?>)[\\s\\S]*?(?:-->|$)/;\n  block$1.html = edit(block$1.html, 'i').replace('comment', block$1._comment).replace('tag', block$1._tag).replace('attribute', / +[a-zA-Z:_][\\w.:-]*(?: *= *\"[^\"\\n]*\"| *= *'[^'\\n]*'| *= *[^\\s\"'=<>`]+)?/).getRegex();\n  block$1.paragraph = edit(block$1._paragraph).replace('hr', block$1.hr).replace('heading', ' {0,3}#{1,6} ').replace('|lheading', '') // setex headings don't interrupt commonmark paragraphs\n  .replace('blockquote', ' {0,3}>').replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n').replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n  .replace('html', '</?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)').replace('tag', block$1._tag) // pars can be interrupted by type (6) html blocks\n  .getRegex();\n  block$1.blockquote = edit(block$1.blockquote).replace('paragraph', block$1.paragraph).getRegex();\n  /**\n   * Normal Block Grammar\n   */\n\n  block$1.normal = merge$1({}, block$1);\n  /**\n   * GFM Block Grammar\n   */\n\n  block$1.gfm = merge$1({}, block$1.normal, {\n    table: '^ *([^\\\\n ].*\\\\|.*)\\\\n' // Header\n    + ' {0,3}(?:\\\\| *)?(:?-+:? *(?:\\\\| *:?-+:? *)*)\\\\|?' // Align\n    + '(?:\\\\n((?:(?! *\\\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\\\n|$))*)\\\\n*|$)' // Cells\n\n  });\n  block$1.gfm.table = edit(block$1.gfm.table).replace('hr', block$1.hr).replace('heading', ' {0,3}#{1,6} ').replace('blockquote', ' {0,3}>').replace('code', ' {4}[^\\\\n]').replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n').replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n  .replace('html', '</?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)').replace('tag', block$1._tag) // tables can be interrupted by type (6) html blocks\n  .getRegex();\n  /**\n   * Pedantic grammar (original John Gruber's loose markdown specification)\n   */\n\n  block$1.pedantic = merge$1({}, block$1.normal, {\n    html: edit('^ *(?:comment *(?:\\\\n|\\\\s*$)' + '|<(tag)[\\\\s\\\\S]+?</\\\\1> *(?:\\\\n{2,}|\\\\s*$)' // closed tag\n    + '|<tag(?:\"[^\"]*\"|\\'[^\\']*\\'|\\\\s[^\\'\"/>\\\\s]*)*?/?> *(?:\\\\n{2,}|\\\\s*$))').replace('comment', block$1._comment).replace(/tag/g, '(?!(?:' + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub' + '|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)' + '\\\\b)\\\\w+(?!:|[^\\\\w\\\\s@]*@)\\\\b').getRegex(),\n    def: /^ *\\[([^\\]]+)\\]: *<?([^\\s>]+)>?(?: +([\"(][^\\n]+[\")]))? *(?:\\n+|$)/,\n    heading: /^(#{1,6})(.*)(?:\\n+|$)/,\n    fences: noopTest,\n    // fences not supported\n    paragraph: edit(block$1.normal._paragraph).replace('hr', block$1.hr).replace('heading', ' *#{1,6} *[^\\n]').replace('lheading', block$1.lheading).replace('blockquote', ' {0,3}>').replace('|fences', '').replace('|list', '').replace('|html', '').getRegex()\n  });\n  /**\n   * Inline-Level Grammar\n   */\n\n  var inline$1 = {\n    escape: /^\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/,\n    autolink: /^<(scheme:[^\\s\\x00-\\x1f<>]*|email)>/,\n    url: noopTest,\n    tag: '^comment' + '|^</[a-zA-Z][\\\\w:-]*\\\\s*>' // self-closing tag\n    + '|^<[a-zA-Z][\\\\w-]*(?:attribute)*?\\\\s*/?>' // open tag\n    + '|^<\\\\?[\\\\s\\\\S]*?\\\\?>' // processing instruction, e.g. <?php ?>\n    + '|^<![a-zA-Z]+\\\\s[\\\\s\\\\S]*?>' // declaration, e.g. <!DOCTYPE html>\n    + '|^<!\\\\[CDATA\\\\[[\\\\s\\\\S]*?\\\\]\\\\]>',\n    // CDATA section\n    link: /^!?\\[(label)\\]\\(\\s*(href)(?:\\s+(title))?\\s*\\)/,\n    reflink: /^!?\\[(label)\\]\\[(?!\\s*\\])((?:\\\\[\\[\\]]?|[^\\[\\]\\\\])+)\\]/,\n    nolink: /^!?\\[(?!\\s*\\])((?:\\[[^\\[\\]]*\\]|\\\\[\\[\\]]|[^\\[\\]])*)\\](?:\\[\\])?/,\n    reflinkSearch: 'reflink|nolink(?!\\\\()',\n    emStrong: {\n      lDelim: /^(?:\\*+(?:([punct_])|[^\\s*]))|^_+(?:([punct*])|([^\\s_]))/,\n      //        (1) and (2) can only be a Right Delimiter. (3) and (4) can only be Left.  (5) and (6) can be either Left or Right.\n      //        () Skip other delimiter (1) #***                   (2) a***#, a***                   (3) #***a, ***a                 (4) ***#              (5) #***#                 (6) a***a\n      rDelimAst: /\\_\\_[^_*]*?\\*[^_*]*?\\_\\_|[punct_](\\*+)(?=[\\s]|$)|[^punct*_\\s](\\*+)(?=[punct_\\s]|$)|[punct_\\s](\\*+)(?=[^punct*_\\s])|[\\s](\\*+)(?=[punct_])|[punct_](\\*+)(?=[punct_])|[^punct*_\\s](\\*+)(?=[^punct*_\\s])/,\n      rDelimUnd: /\\*\\*[^_*]*?\\_[^_*]*?\\*\\*|[punct*](\\_+)(?=[\\s]|$)|[^punct*_\\s](\\_+)(?=[punct*\\s]|$)|[punct*\\s](\\_+)(?=[^punct*_\\s])|[\\s](\\_+)(?=[punct*])|[punct*](\\_+)(?=[punct*])/ // ^- Not allowed for _\n\n    },\n    code: /^(`+)([^`]|[^`][\\s\\S]*?[^`])\\1(?!`)/,\n    br: /^( {2,}|\\\\)\\n(?!\\s*$)/,\n    del: noopTest,\n    text: /^(`+|[^`])(?:(?= {2,}\\n)|[\\s\\S]*?(?:(?=[\\\\<!\\[`*_]|\\b_|$)|[^ ](?= {2,}\\n)))/,\n    punctuation: /^([\\spunctuation])/\n  }; // list of punctuation marks from CommonMark spec\n  // without * and _ to handle the different emphasis markers * and _\n\n  inline$1._punctuation = '!\"#$%&\\'()+\\\\-.,/:;<=>?@\\\\[\\\\]`^{|}~';\n  inline$1.punctuation = edit(inline$1.punctuation).replace(/punctuation/g, inline$1._punctuation).getRegex(); // sequences em should skip over [title](link), `code`, <html>\n\n  inline$1.blockSkip = /\\[[^\\]]*?\\]\\([^\\)]*?\\)|`[^`]*?`|<[^>]*?>/g;\n  inline$1.escapedEmSt = /\\\\\\*|\\\\_/g;\n  inline$1._comment = edit(block$1._comment).replace('(?:-->|$)', '-->').getRegex();\n  inline$1.emStrong.lDelim = edit(inline$1.emStrong.lDelim).replace(/punct/g, inline$1._punctuation).getRegex();\n  inline$1.emStrong.rDelimAst = edit(inline$1.emStrong.rDelimAst, 'g').replace(/punct/g, inline$1._punctuation).getRegex();\n  inline$1.emStrong.rDelimUnd = edit(inline$1.emStrong.rDelimUnd, 'g').replace(/punct/g, inline$1._punctuation).getRegex();\n  inline$1._escapes = /\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/g;\n  inline$1._scheme = /[a-zA-Z][a-zA-Z0-9+.-]{1,31}/;\n  inline$1._email = /[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/;\n  inline$1.autolink = edit(inline$1.autolink).replace('scheme', inline$1._scheme).replace('email', inline$1._email).getRegex();\n  inline$1._attribute = /\\s+[a-zA-Z:_][\\w.:-]*(?:\\s*=\\s*\"[^\"]*\"|\\s*=\\s*'[^']*'|\\s*=\\s*[^\\s\"'=<>`]+)?/;\n  inline$1.tag = edit(inline$1.tag).replace('comment', inline$1._comment).replace('attribute', inline$1._attribute).getRegex();\n  inline$1._label = /(?:\\[(?:\\\\.|[^\\[\\]\\\\])*\\]|\\\\.|`[^`]*`|[^\\[\\]\\\\`])*?/;\n  inline$1._href = /<(?:\\\\.|[^\\n<>\\\\])+>|[^\\s\\x00-\\x1f]*/;\n  inline$1._title = /\"(?:\\\\\"?|[^\"\\\\])*\"|'(?:\\\\'?|[^'\\\\])*'|\\((?:\\\\\\)?|[^)\\\\])*\\)/;\n  inline$1.link = edit(inline$1.link).replace('label', inline$1._label).replace('href', inline$1._href).replace('title', inline$1._title).getRegex();\n  inline$1.reflink = edit(inline$1.reflink).replace('label', inline$1._label).getRegex();\n  inline$1.reflinkSearch = edit(inline$1.reflinkSearch, 'g').replace('reflink', inline$1.reflink).replace('nolink', inline$1.nolink).getRegex();\n  /**\n   * Normal Inline Grammar\n   */\n\n  inline$1.normal = merge$1({}, inline$1);\n  /**\n   * Pedantic Inline Grammar\n   */\n\n  inline$1.pedantic = merge$1({}, inline$1.normal, {\n    strong: {\n      start: /^__|\\*\\*/,\n      middle: /^__(?=\\S)([\\s\\S]*?\\S)__(?!_)|^\\*\\*(?=\\S)([\\s\\S]*?\\S)\\*\\*(?!\\*)/,\n      endAst: /\\*\\*(?!\\*)/g,\n      endUnd: /__(?!_)/g\n    },\n    em: {\n      start: /^_|\\*/,\n      middle: /^()\\*(?=\\S)([\\s\\S]*?\\S)\\*(?!\\*)|^_(?=\\S)([\\s\\S]*?\\S)_(?!_)/,\n      endAst: /\\*(?!\\*)/g,\n      endUnd: /_(?!_)/g\n    },\n    link: edit(/^!?\\[(label)\\]\\((.*?)\\)/).replace('label', inline$1._label).getRegex(),\n    reflink: edit(/^!?\\[(label)\\]\\s*\\[([^\\]]*)\\]/).replace('label', inline$1._label).getRegex()\n  });\n  /**\n   * GFM Inline Grammar\n   */\n\n  inline$1.gfm = merge$1({}, inline$1.normal, {\n    escape: edit(inline$1.escape).replace('])', '~|])').getRegex(),\n    _extended_email: /[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/,\n    url: /^((?:ftp|https?):\\/\\/|www\\.)(?:[a-zA-Z0-9\\-]+\\.?)+[^\\s<]*|^email/,\n    _backpedal: /(?:[^?!.,:;*_~()&]+|\\([^)]*\\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_~)]+(?!$))+/,\n    del: /^(~~?)(?=[^\\s~])([\\s\\S]*?[^\\s~])\\1(?=[^~]|$)/,\n    text: /^([`~]+|[^`~])(?:(?= {2,}\\n)|(?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)|[\\s\\S]*?(?:(?=[\\\\<!\\[`*~_]|\\b_|https?:\\/\\/|ftp:\\/\\/|www\\.|$)|[^ ](?= {2,}\\n)|[^a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-](?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)))/\n  });\n  inline$1.gfm.url = edit(inline$1.gfm.url, 'i').replace('email', inline$1.gfm._extended_email).getRegex();\n  /**\n   * GFM + Line Breaks Inline Grammar\n   */\n\n  inline$1.breaks = merge$1({}, inline$1.gfm, {\n    br: edit(inline$1.br).replace('{2,}', '*').getRegex(),\n    text: edit(inline$1.gfm.text).replace('\\\\b_', '\\\\b_| {2,}\\\\n').replace(/\\{2,\\}/g, '*').getRegex()\n  });\n  var rules = {\n    block: block$1,\n    inline: inline$1\n  };\n\n  var Tokenizer$1 = Tokenizer_1;\n  var defaults$3 = defaults$5.exports.defaults;\n  var block = rules.block,\n      inline = rules.inline;\n  var repeatString = helpers.repeatString;\n  /**\n   * smartypants text replacement\n   */\n\n  function smartypants(text) {\n    return text // em-dashes\n    .replace(/---/g, \"\\u2014\") // en-dashes\n    .replace(/--/g, \"\\u2013\") // opening singles\n    .replace(/(^|[-\\u2014/(\\[{\"\\s])'/g, \"$1\\u2018\") // closing singles & apostrophes\n    .replace(/'/g, \"\\u2019\") // opening doubles\n    .replace(/(^|[-\\u2014/(\\[{\\u2018\\s])\"/g, \"$1\\u201C\") // closing doubles\n    .replace(/\"/g, \"\\u201D\") // ellipses\n    .replace(/\\.{3}/g, \"\\u2026\");\n  }\n  /**\n   * mangle email addresses\n   */\n\n\n  function mangle(text) {\n    var out = '',\n        i,\n        ch;\n    var l = text.length;\n\n    for (i = 0; i < l; i++) {\n      ch = text.charCodeAt(i);\n\n      if (Math.random() > 0.5) {\n        ch = 'x' + ch.toString(16);\n      }\n\n      out += '&#' + ch + ';';\n    }\n\n    return out;\n  }\n  /**\n   * Block Lexer\n   */\n\n\n  var Lexer_1 = /*#__PURE__*/function () {\n    function Lexer(options) {\n      this.tokens = [];\n      this.tokens.links = Object.create(null);\n      this.options = options || defaults$3;\n      this.options.tokenizer = this.options.tokenizer || new Tokenizer$1();\n      this.tokenizer = this.options.tokenizer;\n      this.tokenizer.options = this.options;\n      this.tokenizer.lexer = this;\n      this.inlineQueue = [];\n      this.state = {\n        inLink: false,\n        inRawBlock: false,\n        top: true\n      };\n      var rules = {\n        block: block.normal,\n        inline: inline.normal\n      };\n\n      if (this.options.pedantic) {\n        rules.block = block.pedantic;\n        rules.inline = inline.pedantic;\n      } else if (this.options.gfm) {\n        rules.block = block.gfm;\n\n        if (this.options.breaks) {\n          rules.inline = inline.breaks;\n        } else {\n          rules.inline = inline.gfm;\n        }\n      }\n\n      this.tokenizer.rules = rules;\n    }\n    /**\n     * Expose Rules\n     */\n\n\n    /**\n     * Static Lex Method\n     */\n    Lexer.lex = function lex(src, options) {\n      var lexer = new Lexer(options);\n      return lexer.lex(src);\n    }\n    /**\n     * Static Lex Inline Method\n     */\n    ;\n\n    Lexer.lexInline = function lexInline(src, options) {\n      var lexer = new Lexer(options);\n      return lexer.inlineTokens(src);\n    }\n    /**\n     * Preprocessing\n     */\n    ;\n\n    var _proto = Lexer.prototype;\n\n    _proto.lex = function lex(src) {\n      src = src.replace(/\\r\\n|\\r/g, '\\n').replace(/\\t/g, '    ');\n      this.blockTokens(src, this.tokens);\n      var next;\n\n      while (next = this.inlineQueue.shift()) {\n        this.inlineTokens(next.src, next.tokens);\n      }\n\n      return this.tokens;\n    }\n    /**\n     * Lexing\n     */\n    ;\n\n    _proto.blockTokens = function blockTokens(src, tokens) {\n      var _this = this;\n\n      if (tokens === void 0) {\n        tokens = [];\n      }\n\n      if (this.options.pedantic) {\n        src = src.replace(/^ +$/gm, '');\n      }\n\n      var token, lastToken, cutSrc, lastParagraphClipped;\n\n      while (src) {\n        if (this.options.extensions && this.options.extensions.block && this.options.extensions.block.some(function (extTokenizer) {\n          if (token = extTokenizer.call({\n            lexer: _this\n          }, src, tokens)) {\n            src = src.substring(token.raw.length);\n            tokens.push(token);\n            return true;\n          }\n\n          return false;\n        })) {\n          continue;\n        } // newline\n\n\n        if (token = this.tokenizer.space(src)) {\n          src = src.substring(token.raw.length);\n\n          if (token.type) {\n            tokens.push(token);\n          }\n\n          continue;\n        } // code\n\n\n        if (token = this.tokenizer.code(src)) {\n          src = src.substring(token.raw.length);\n          lastToken = tokens[tokens.length - 1]; // An indented code block cannot interrupt a paragraph.\n\n          if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {\n            lastToken.raw += '\\n' + token.raw;\n            lastToken.text += '\\n' + token.text;\n            this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n          } else {\n            tokens.push(token);\n          }\n\n          continue;\n        } // fences\n\n\n        if (token = this.tokenizer.fences(src)) {\n          src = src.substring(token.raw.length);\n          tokens.push(token);\n          continue;\n        } // heading\n\n\n        if (token = this.tokenizer.heading(src)) {\n          src = src.substring(token.raw.length);\n          tokens.push(token);\n          continue;\n        } // hr\n\n\n        if (token = this.tokenizer.hr(src)) {\n          src = src.substring(token.raw.length);\n          tokens.push(token);\n          continue;\n        } // blockquote\n\n\n        if (token = this.tokenizer.blockquote(src)) {\n          src = src.substring(token.raw.length);\n          tokens.push(token);\n          continue;\n        } // list\n\n\n        if (token = this.tokenizer.list(src)) {\n          src = src.substring(token.raw.length);\n          tokens.push(token);\n          continue;\n        } // html\n\n\n        if (token = this.tokenizer.html(src)) {\n          src = src.substring(token.raw.length);\n          tokens.push(token);\n          continue;\n        } // def\n\n\n        if (token = this.tokenizer.def(src)) {\n          src = src.substring(token.raw.length);\n          lastToken = tokens[tokens.length - 1];\n\n          if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {\n            lastToken.raw += '\\n' + token.raw;\n            lastToken.text += '\\n' + token.raw;\n            this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n          } else if (!this.tokens.links[token.tag]) {\n            this.tokens.links[token.tag] = {\n              href: token.href,\n              title: token.title\n            };\n          }\n\n          continue;\n        } // table (gfm)\n\n\n        if (token = this.tokenizer.table(src)) {\n          src = src.substring(token.raw.length);\n          tokens.push(token);\n          continue;\n        } // lheading\n\n\n        if (token = this.tokenizer.lheading(src)) {\n          src = src.substring(token.raw.length);\n          tokens.push(token);\n          continue;\n        } // top-level paragraph\n        // prevent paragraph consuming extensions by clipping 'src' to extension start\n\n\n        cutSrc = src;\n\n        if (this.options.extensions && this.options.extensions.startBlock) {\n          (function () {\n            var startIndex = Infinity;\n            var tempSrc = src.slice(1);\n            var tempStart = void 0;\n\n            _this.options.extensions.startBlock.forEach(function (getStartIndex) {\n              tempStart = getStartIndex.call({\n                lexer: this\n              }, tempSrc);\n\n              if (typeof tempStart === 'number' && tempStart >= 0) {\n                startIndex = Math.min(startIndex, tempStart);\n              }\n            });\n\n            if (startIndex < Infinity && startIndex >= 0) {\n              cutSrc = src.substring(0, startIndex + 1);\n            }\n          })();\n        }\n\n        if (this.state.top && (token = this.tokenizer.paragraph(cutSrc))) {\n          lastToken = tokens[tokens.length - 1];\n\n          if (lastParagraphClipped && lastToken.type === 'paragraph') {\n            lastToken.raw += '\\n' + token.raw;\n            lastToken.text += '\\n' + token.text;\n            this.inlineQueue.pop();\n            this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n          } else {\n            tokens.push(token);\n          }\n\n          lastParagraphClipped = cutSrc.length !== src.length;\n          src = src.substring(token.raw.length);\n          continue;\n        } // text\n\n\n        if (token = this.tokenizer.text(src)) {\n          src = src.substring(token.raw.length);\n          lastToken = tokens[tokens.length - 1];\n\n          if (lastToken && lastToken.type === 'text') {\n            lastToken.raw += '\\n' + token.raw;\n            lastToken.text += '\\n' + token.text;\n            this.inlineQueue.pop();\n            this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n          } else {\n            tokens.push(token);\n          }\n\n          continue;\n        }\n\n        if (src) {\n          var errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n\n          if (this.options.silent) {\n            console.error(errMsg);\n            break;\n          } else {\n            throw new Error(errMsg);\n          }\n        }\n      }\n\n      this.state.top = true;\n      return tokens;\n    };\n\n    _proto.inline = function inline(src, tokens) {\n      this.inlineQueue.push({\n        src: src,\n        tokens: tokens\n      });\n    }\n    /**\n     * Lexing/Compiling\n     */\n    ;\n\n    _proto.inlineTokens = function inlineTokens(src, tokens) {\n      var _this2 = this;\n\n      if (tokens === void 0) {\n        tokens = [];\n      }\n\n      var token, lastToken, cutSrc; // String with links masked to avoid interference with em and strong\n\n      var maskedSrc = src;\n      var match;\n      var keepPrevChar, prevChar; // Mask out reflinks\n\n      if (this.tokens.links) {\n        var links = Object.keys(this.tokens.links);\n\n        if (links.length > 0) {\n          while ((match = this.tokenizer.rules.inline.reflinkSearch.exec(maskedSrc)) != null) {\n            if (links.includes(match[0].slice(match[0].lastIndexOf('[') + 1, -1))) {\n              maskedSrc = maskedSrc.slice(0, match.index) + '[' + repeatString('a', match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex);\n            }\n          }\n        }\n      } // Mask out other blocks\n\n\n      while ((match = this.tokenizer.rules.inline.blockSkip.exec(maskedSrc)) != null) {\n        maskedSrc = maskedSrc.slice(0, match.index) + '[' + repeatString('a', match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);\n      } // Mask out escaped em & strong delimiters\n\n\n      while ((match = this.tokenizer.rules.inline.escapedEmSt.exec(maskedSrc)) != null) {\n        maskedSrc = maskedSrc.slice(0, match.index) + '++' + maskedSrc.slice(this.tokenizer.rules.inline.escapedEmSt.lastIndex);\n      }\n\n      while (src) {\n        if (!keepPrevChar) {\n          prevChar = '';\n        }\n\n        keepPrevChar = false; // extensions\n\n        if (this.options.extensions && this.options.extensions.inline && this.options.extensions.inline.some(function (extTokenizer) {\n          if (token = extTokenizer.call({\n            lexer: _this2\n          }, src, tokens)) {\n            src = src.substring(token.raw.length);\n            tokens.push(token);\n            return true;\n          }\n\n          return false;\n        })) {\n          continue;\n        } // escape\n\n\n        if (token = this.tokenizer.escape(src)) {\n          src = src.substring(token.raw.length);\n          tokens.push(token);\n          continue;\n        } // tag\n\n\n        if (token = this.tokenizer.tag(src)) {\n          src = src.substring(token.raw.length);\n          lastToken = tokens[tokens.length - 1];\n\n          if (lastToken && token.type === 'text' && lastToken.type === 'text') {\n            lastToken.raw += token.raw;\n            lastToken.text += token.text;\n          } else {\n            tokens.push(token);\n          }\n\n          continue;\n        } // link\n\n\n        if (token = this.tokenizer.link(src)) {\n          src = src.substring(token.raw.length);\n          tokens.push(token);\n          continue;\n        } // reflink, nolink\n\n\n        if (token = this.tokenizer.reflink(src, this.tokens.links)) {\n          src = src.substring(token.raw.length);\n          lastToken = tokens[tokens.length - 1];\n\n          if (lastToken && token.type === 'text' && lastToken.type === 'text') {\n            lastToken.raw += token.raw;\n            lastToken.text += token.text;\n          } else {\n            tokens.push(token);\n          }\n\n          continue;\n        } // em & strong\n\n\n        if (token = this.tokenizer.emStrong(src, maskedSrc, prevChar)) {\n          src = src.substring(token.raw.length);\n          tokens.push(token);\n          continue;\n        } // code\n\n\n        if (token = this.tokenizer.codespan(src)) {\n          src = src.substring(token.raw.length);\n          tokens.push(token);\n          continue;\n        } // br\n\n\n        if (token = this.tokenizer.br(src)) {\n          src = src.substring(token.raw.length);\n          tokens.push(token);\n          continue;\n        } // del (gfm)\n\n\n        if (token = this.tokenizer.del(src)) {\n          src = src.substring(token.raw.length);\n          tokens.push(token);\n          continue;\n        } // autolink\n\n\n        if (token = this.tokenizer.autolink(src, mangle)) {\n          src = src.substring(token.raw.length);\n          tokens.push(token);\n          continue;\n        } // url (gfm)\n\n\n        if (!this.state.inLink && (token = this.tokenizer.url(src, mangle))) {\n          src = src.substring(token.raw.length);\n          tokens.push(token);\n          continue;\n        } // text\n        // prevent inlineText consuming extensions by clipping 'src' to extension start\n\n\n        cutSrc = src;\n\n        if (this.options.extensions && this.options.extensions.startInline) {\n          (function () {\n            var startIndex = Infinity;\n            var tempSrc = src.slice(1);\n            var tempStart = void 0;\n\n            _this2.options.extensions.startInline.forEach(function (getStartIndex) {\n              tempStart = getStartIndex.call({\n                lexer: this\n              }, tempSrc);\n\n              if (typeof tempStart === 'number' && tempStart >= 0) {\n                startIndex = Math.min(startIndex, tempStart);\n              }\n            });\n\n            if (startIndex < Infinity && startIndex >= 0) {\n              cutSrc = src.substring(0, startIndex + 1);\n            }\n          })();\n        }\n\n        if (token = this.tokenizer.inlineText(cutSrc, smartypants)) {\n          src = src.substring(token.raw.length);\n\n          if (token.raw.slice(-1) !== '_') {\n            // Track prevChar before string of ____ started\n            prevChar = token.raw.slice(-1);\n          }\n\n          keepPrevChar = true;\n          lastToken = tokens[tokens.length - 1];\n\n          if (lastToken && lastToken.type === 'text') {\n            lastToken.raw += token.raw;\n            lastToken.text += token.text;\n          } else {\n            tokens.push(token);\n          }\n\n          continue;\n        }\n\n        if (src) {\n          var errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n\n          if (this.options.silent) {\n            console.error(errMsg);\n            break;\n          } else {\n            throw new Error(errMsg);\n          }\n        }\n      }\n\n      return tokens;\n    };\n\n    _createClass(Lexer, null, [{\n      key: \"rules\",\n      get: function get() {\n        return {\n          block: block,\n          inline: inline\n        };\n      }\n    }]);\n\n    return Lexer;\n  }();\n\n  var defaults$2 = defaults$5.exports.defaults;\n  var cleanUrl = helpers.cleanUrl,\n      escape$1 = helpers.escape;\n  /**\n   * Renderer\n   */\n\n  var Renderer_1 = /*#__PURE__*/function () {\n    function Renderer(options) {\n      this.options = options || defaults$2;\n    }\n\n    var _proto = Renderer.prototype;\n\n    _proto.code = function code(_code, infostring, escaped) {\n      var lang = (infostring || '').match(/\\S*/)[0];\n\n      if (this.options.highlight) {\n        var out = this.options.highlight(_code, lang);\n\n        if (out != null && out !== _code) {\n          escaped = true;\n          _code = out;\n        }\n      }\n\n      _code = _code.replace(/\\n$/, '') + '\\n';\n\n      if (!lang) {\n        return '<pre><code>' + (escaped ? _code : escape$1(_code, true)) + '</code></pre>\\n';\n      }\n\n      return '<pre><code class=\"' + this.options.langPrefix + escape$1(lang, true) + '\">' + (escaped ? _code : escape$1(_code, true)) + '</code></pre>\\n';\n    };\n\n    _proto.blockquote = function blockquote(quote) {\n      return '<blockquote>\\n' + quote + '</blockquote>\\n';\n    };\n\n    _proto.html = function html(_html) {\n      return _html;\n    };\n\n    _proto.heading = function heading(text, level, raw, slugger) {\n      if (this.options.headerIds) {\n        return '<h' + level + ' id=\"' + this.options.headerPrefix + slugger.slug(raw) + '\">' + text + '</h' + level + '>\\n';\n      } // ignore IDs\n\n\n      return '<h' + level + '>' + text + '</h' + level + '>\\n';\n    };\n\n    _proto.hr = function hr() {\n      return this.options.xhtml ? '<hr/>\\n' : '<hr>\\n';\n    };\n\n    _proto.list = function list(body, ordered, start) {\n      var type = ordered ? 'ol' : 'ul',\n          startatt = ordered && start !== 1 ? ' start=\"' + start + '\"' : '';\n      return '<' + type + startatt + '>\\n' + body + '</' + type + '>\\n';\n    };\n\n    _proto.listitem = function listitem(text) {\n      return '<li>' + text + '</li>\\n';\n    };\n\n    _proto.checkbox = function checkbox(checked) {\n      return '<input ' + (checked ? 'checked=\"\" ' : '') + 'disabled=\"\" type=\"checkbox\"' + (this.options.xhtml ? ' /' : '') + '> ';\n    };\n\n    _proto.paragraph = function paragraph(text) {\n      return '<p>' + text + '</p>\\n';\n    };\n\n    _proto.table = function table(header, body) {\n      if (body) body = '<tbody>' + body + '</tbody>';\n      return '<table>\\n' + '<thead>\\n' + header + '</thead>\\n' + body + '</table>\\n';\n    };\n\n    _proto.tablerow = function tablerow(content) {\n      return '<tr>\\n' + content + '</tr>\\n';\n    };\n\n    _proto.tablecell = function tablecell(content, flags) {\n      var type = flags.header ? 'th' : 'td';\n      var tag = flags.align ? '<' + type + ' align=\"' + flags.align + '\">' : '<' + type + '>';\n      return tag + content + '</' + type + '>\\n';\n    } // span level renderer\n    ;\n\n    _proto.strong = function strong(text) {\n      return '<strong>' + text + '</strong>';\n    };\n\n    _proto.em = function em(text) {\n      return '<em>' + text + '</em>';\n    };\n\n    _proto.codespan = function codespan(text) {\n      return '<code>' + text + '</code>';\n    };\n\n    _proto.br = function br() {\n      return this.options.xhtml ? '<br/>' : '<br>';\n    };\n\n    _proto.del = function del(text) {\n      return '<del>' + text + '</del>';\n    };\n\n    _proto.link = function link(href, title, text) {\n      href = cleanUrl(this.options.sanitize, this.options.baseUrl, href);\n\n      if (href === null) {\n        return text;\n      }\n\n      var out = '<a href=\"' + escape$1(href) + '\"';\n\n      if (title) {\n        out += ' title=\"' + title + '\"';\n      }\n\n      out += '>' + text + '</a>';\n      return out;\n    };\n\n    _proto.image = function image(href, title, text) {\n      href = cleanUrl(this.options.sanitize, this.options.baseUrl, href);\n\n      if (href === null) {\n        return text;\n      }\n\n      var out = '<img src=\"' + href + '\" alt=\"' + text + '\"';\n\n      if (title) {\n        out += ' title=\"' + title + '\"';\n      }\n\n      out += this.options.xhtml ? '/>' : '>';\n      return out;\n    };\n\n    _proto.text = function text(_text) {\n      return _text;\n    };\n\n    return Renderer;\n  }();\n\n  /**\n   * TextRenderer\n   * returns only the textual part of the token\n   */\n\n  var TextRenderer_1 = /*#__PURE__*/function () {\n    function TextRenderer() {}\n\n    var _proto = TextRenderer.prototype;\n\n    // no need for block level renderers\n    _proto.strong = function strong(text) {\n      return text;\n    };\n\n    _proto.em = function em(text) {\n      return text;\n    };\n\n    _proto.codespan = function codespan(text) {\n      return text;\n    };\n\n    _proto.del = function del(text) {\n      return text;\n    };\n\n    _proto.html = function html(text) {\n      return text;\n    };\n\n    _proto.text = function text(_text) {\n      return _text;\n    };\n\n    _proto.link = function link(href, title, text) {\n      return '' + text;\n    };\n\n    _proto.image = function image(href, title, text) {\n      return '' + text;\n    };\n\n    _proto.br = function br() {\n      return '';\n    };\n\n    return TextRenderer;\n  }();\n\n  /**\n   * Slugger generates header id\n   */\n\n  var Slugger_1 = /*#__PURE__*/function () {\n    function Slugger() {\n      this.seen = {};\n    }\n\n    var _proto = Slugger.prototype;\n\n    _proto.serialize = function serialize(value) {\n      return value.toLowerCase().trim() // remove html tags\n      .replace(/<[!\\/a-z].*?>/ig, '') // remove unwanted chars\n      .replace(/[\\u2000-\\u206F\\u2E00-\\u2E7F\\\\'!\"#$%&()*+,./:;<=>?@[\\]^`{|}~]/g, '').replace(/\\s/g, '-');\n    }\n    /**\n     * Finds the next safe (unique) slug to use\n     */\n    ;\n\n    _proto.getNextSafeSlug = function getNextSafeSlug(originalSlug, isDryRun) {\n      var slug = originalSlug;\n      var occurenceAccumulator = 0;\n\n      if (this.seen.hasOwnProperty(slug)) {\n        occurenceAccumulator = this.seen[originalSlug];\n\n        do {\n          occurenceAccumulator++;\n          slug = originalSlug + '-' + occurenceAccumulator;\n        } while (this.seen.hasOwnProperty(slug));\n      }\n\n      if (!isDryRun) {\n        this.seen[originalSlug] = occurenceAccumulator;\n        this.seen[slug] = 0;\n      }\n\n      return slug;\n    }\n    /**\n     * Convert string to unique id\n     * @param {object} options\n     * @param {boolean} options.dryrun Generates the next unique slug without updating the internal accumulator.\n     */\n    ;\n\n    _proto.slug = function slug(value, options) {\n      if (options === void 0) {\n        options = {};\n      }\n\n      var slug = this.serialize(value);\n      return this.getNextSafeSlug(slug, options.dryrun);\n    };\n\n    return Slugger;\n  }();\n\n  var Renderer$1 = Renderer_1;\n  var TextRenderer$1 = TextRenderer_1;\n  var Slugger$1 = Slugger_1;\n  var defaults$1 = defaults$5.exports.defaults;\n  var unescape = helpers.unescape;\n  /**\n   * Parsing & Compiling\n   */\n\n  var Parser_1 = /*#__PURE__*/function () {\n    function Parser(options) {\n      this.options = options || defaults$1;\n      this.options.renderer = this.options.renderer || new Renderer$1();\n      this.renderer = this.options.renderer;\n      this.renderer.options = this.options;\n      this.textRenderer = new TextRenderer$1();\n      this.slugger = new Slugger$1();\n    }\n    /**\n     * Static Parse Method\n     */\n\n\n    Parser.parse = function parse(tokens, options) {\n      var parser = new Parser(options);\n      return parser.parse(tokens);\n    }\n    /**\n     * Static Parse Inline Method\n     */\n    ;\n\n    Parser.parseInline = function parseInline(tokens, options) {\n      var parser = new Parser(options);\n      return parser.parseInline(tokens);\n    }\n    /**\n     * Parse Loop\n     */\n    ;\n\n    var _proto = Parser.prototype;\n\n    _proto.parse = function parse(tokens, top) {\n      if (top === void 0) {\n        top = true;\n      }\n\n      var out = '',\n          i,\n          j,\n          k,\n          l2,\n          l3,\n          row,\n          cell,\n          header,\n          body,\n          token,\n          ordered,\n          start,\n          loose,\n          itemBody,\n          item,\n          checked,\n          task,\n          checkbox,\n          ret;\n      var l = tokens.length;\n\n      for (i = 0; i < l; i++) {\n        token = tokens[i]; // Run any renderer extensions\n\n        if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[token.type]) {\n          ret = this.options.extensions.renderers[token.type].call({\n            parser: this\n          }, token);\n\n          if (ret !== false || !['space', 'hr', 'heading', 'code', 'table', 'blockquote', 'list', 'html', 'paragraph', 'text'].includes(token.type)) {\n            out += ret || '';\n            continue;\n          }\n        }\n\n        switch (token.type) {\n          case 'space':\n            {\n              continue;\n            }\n\n          case 'hr':\n            {\n              out += this.renderer.hr();\n              continue;\n            }\n\n          case 'heading':\n            {\n              out += this.renderer.heading(this.parseInline(token.tokens), token.depth, unescape(this.parseInline(token.tokens, this.textRenderer)), this.slugger);\n              continue;\n            }\n\n          case 'code':\n            {\n              out += this.renderer.code(token.text, token.lang, token.escaped);\n              continue;\n            }\n\n          case 'table':\n            {\n              header = ''; // header\n\n              cell = '';\n              l2 = token.header.length;\n\n              for (j = 0; j < l2; j++) {\n                cell += this.renderer.tablecell(this.parseInline(token.header[j].tokens), {\n                  header: true,\n                  align: token.align[j]\n                });\n              }\n\n              header += this.renderer.tablerow(cell);\n              body = '';\n              l2 = token.rows.length;\n\n              for (j = 0; j < l2; j++) {\n                row = token.rows[j];\n                cell = '';\n                l3 = row.length;\n\n                for (k = 0; k < l3; k++) {\n                  cell += this.renderer.tablecell(this.parseInline(row[k].tokens), {\n                    header: false,\n                    align: token.align[k]\n                  });\n                }\n\n                body += this.renderer.tablerow(cell);\n              }\n\n              out += this.renderer.table(header, body);\n              continue;\n            }\n\n          case 'blockquote':\n            {\n              body = this.parse(token.tokens);\n              out += this.renderer.blockquote(body);\n              continue;\n            }\n\n          case 'list':\n            {\n              ordered = token.ordered;\n              start = token.start;\n              loose = token.loose;\n              l2 = token.items.length;\n              body = '';\n\n              for (j = 0; j < l2; j++) {\n                item = token.items[j];\n                checked = item.checked;\n                task = item.task;\n                itemBody = '';\n\n                if (item.task) {\n                  checkbox = this.renderer.checkbox(checked);\n\n                  if (loose) {\n                    if (item.tokens.length > 0 && item.tokens[0].type === 'paragraph') {\n                      item.tokens[0].text = checkbox + ' ' + item.tokens[0].text;\n\n                      if (item.tokens[0].tokens && item.tokens[0].tokens.length > 0 && item.tokens[0].tokens[0].type === 'text') {\n                        item.tokens[0].tokens[0].text = checkbox + ' ' + item.tokens[0].tokens[0].text;\n                      }\n                    } else {\n                      item.tokens.unshift({\n                        type: 'text',\n                        text: checkbox\n                      });\n                    }\n                  } else {\n                    itemBody += checkbox;\n                  }\n                }\n\n                itemBody += this.parse(item.tokens, loose);\n                body += this.renderer.listitem(itemBody, task, checked);\n              }\n\n              out += this.renderer.list(body, ordered, start);\n              continue;\n            }\n\n          case 'html':\n            {\n              // TODO parse inline content if parameter markdown=1\n              out += this.renderer.html(token.text);\n              continue;\n            }\n\n          case 'paragraph':\n            {\n              out += this.renderer.paragraph(this.parseInline(token.tokens));\n              continue;\n            }\n\n          case 'text':\n            {\n              body = token.tokens ? this.parseInline(token.tokens) : token.text;\n\n              while (i + 1 < l && tokens[i + 1].type === 'text') {\n                token = tokens[++i];\n                body += '\\n' + (token.tokens ? this.parseInline(token.tokens) : token.text);\n              }\n\n              out += top ? this.renderer.paragraph(body) : body;\n              continue;\n            }\n\n          default:\n            {\n              var errMsg = 'Token with \"' + token.type + '\" type was not found.';\n\n              if (this.options.silent) {\n                console.error(errMsg);\n                return;\n              } else {\n                throw new Error(errMsg);\n              }\n            }\n        }\n      }\n\n      return out;\n    }\n    /**\n     * Parse Inline Tokens\n     */\n    ;\n\n    _proto.parseInline = function parseInline(tokens, renderer) {\n      renderer = renderer || this.renderer;\n      var out = '',\n          i,\n          token,\n          ret;\n      var l = tokens.length;\n\n      for (i = 0; i < l; i++) {\n        token = tokens[i]; // Run any renderer extensions\n\n        if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[token.type]) {\n          ret = this.options.extensions.renderers[token.type].call({\n            parser: this\n          }, token);\n\n          if (ret !== false || !['escape', 'html', 'link', 'image', 'strong', 'em', 'codespan', 'br', 'del', 'text'].includes(token.type)) {\n            out += ret || '';\n            continue;\n          }\n        }\n\n        switch (token.type) {\n          case 'escape':\n            {\n              out += renderer.text(token.text);\n              break;\n            }\n\n          case 'html':\n            {\n              out += renderer.html(token.text);\n              break;\n            }\n\n          case 'link':\n            {\n              out += renderer.link(token.href, token.title, this.parseInline(token.tokens, renderer));\n              break;\n            }\n\n          case 'image':\n            {\n              out += renderer.image(token.href, token.title, token.text);\n              break;\n            }\n\n          case 'strong':\n            {\n              out += renderer.strong(this.parseInline(token.tokens, renderer));\n              break;\n            }\n\n          case 'em':\n            {\n              out += renderer.em(this.parseInline(token.tokens, renderer));\n              break;\n            }\n\n          case 'codespan':\n            {\n              out += renderer.codespan(token.text);\n              break;\n            }\n\n          case 'br':\n            {\n              out += renderer.br();\n              break;\n            }\n\n          case 'del':\n            {\n              out += renderer.del(this.parseInline(token.tokens, renderer));\n              break;\n            }\n\n          case 'text':\n            {\n              out += renderer.text(token.text);\n              break;\n            }\n\n          default:\n            {\n              var errMsg = 'Token with \"' + token.type + '\" type was not found.';\n\n              if (this.options.silent) {\n                console.error(errMsg);\n                return;\n              } else {\n                throw new Error(errMsg);\n              }\n            }\n        }\n      }\n\n      return out;\n    };\n\n    return Parser;\n  }();\n\n  var Lexer = Lexer_1;\n  var Parser = Parser_1;\n  var Tokenizer = Tokenizer_1;\n  var Renderer = Renderer_1;\n  var TextRenderer = TextRenderer_1;\n  var Slugger = Slugger_1;\n  var merge = helpers.merge,\n      checkSanitizeDeprecation = helpers.checkSanitizeDeprecation,\n      escape = helpers.escape;\n  var getDefaults = defaults$5.exports.getDefaults,\n      changeDefaults = defaults$5.exports.changeDefaults,\n      defaults = defaults$5.exports.defaults;\n  /**\n   * Marked\n   */\n\n  function marked(src, opt, callback) {\n    // throw error in case of non string input\n    if (typeof src === 'undefined' || src === null) {\n      throw new Error('marked(): input parameter is undefined or null');\n    }\n\n    if (typeof src !== 'string') {\n      throw new Error('marked(): input parameter is of type ' + Object.prototype.toString.call(src) + ', string expected');\n    }\n\n    if (typeof opt === 'function') {\n      callback = opt;\n      opt = null;\n    }\n\n    opt = merge({}, marked.defaults, opt || {});\n    checkSanitizeDeprecation(opt);\n\n    if (callback) {\n      var highlight = opt.highlight;\n      var tokens;\n\n      try {\n        tokens = Lexer.lex(src, opt);\n      } catch (e) {\n        return callback(e);\n      }\n\n      var done = function done(err) {\n        var out;\n\n        if (!err) {\n          try {\n            if (opt.walkTokens) {\n              marked.walkTokens(tokens, opt.walkTokens);\n            }\n\n            out = Parser.parse(tokens, opt);\n          } catch (e) {\n            err = e;\n          }\n        }\n\n        opt.highlight = highlight;\n        return err ? callback(err) : callback(null, out);\n      };\n\n      if (!highlight || highlight.length < 3) {\n        return done();\n      }\n\n      delete opt.highlight;\n      if (!tokens.length) return done();\n      var pending = 0;\n      marked.walkTokens(tokens, function (token) {\n        if (token.type === 'code') {\n          pending++;\n          setTimeout(function () {\n            highlight(token.text, token.lang, function (err, code) {\n              if (err) {\n                return done(err);\n              }\n\n              if (code != null && code !== token.text) {\n                token.text = code;\n                token.escaped = true;\n              }\n\n              pending--;\n\n              if (pending === 0) {\n                done();\n              }\n            });\n          }, 0);\n        }\n      });\n\n      if (pending === 0) {\n        done();\n      }\n\n      return;\n    }\n\n    try {\n      var _tokens = Lexer.lex(src, opt);\n\n      if (opt.walkTokens) {\n        marked.walkTokens(_tokens, opt.walkTokens);\n      }\n\n      return Parser.parse(_tokens, opt);\n    } catch (e) {\n      e.message += '\\nPlease report this to https://github.com/markedjs/marked.';\n\n      if (opt.silent) {\n        return '<p>An error occurred:</p><pre>' + escape(e.message + '', true) + '</pre>';\n      }\n\n      throw e;\n    }\n  }\n  /**\n   * Options\n   */\n\n\n  marked.options = marked.setOptions = function (opt) {\n    merge(marked.defaults, opt);\n    changeDefaults(marked.defaults);\n    return marked;\n  };\n\n  marked.getDefaults = getDefaults;\n  marked.defaults = defaults;\n  /**\n   * Use Extension\n   */\n\n  marked.use = function () {\n    var _this = this;\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    var opts = merge.apply(void 0, [{}].concat(args));\n    var extensions = marked.defaults.extensions || {\n      renderers: {},\n      childTokens: {}\n    };\n    var hasExtensions;\n    args.forEach(function (pack) {\n      // ==-- Parse \"addon\" extensions --== //\n      if (pack.extensions) {\n        hasExtensions = true;\n        pack.extensions.forEach(function (ext) {\n          if (!ext.name) {\n            throw new Error('extension name required');\n          }\n\n          if (ext.renderer) {\n            // Renderer extensions\n            var prevRenderer = extensions.renderers ? extensions.renderers[ext.name] : null;\n\n            if (prevRenderer) {\n              // Replace extension with func to run new extension but fall back if false\n              extensions.renderers[ext.name] = function () {\n                for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n                  args[_key2] = arguments[_key2];\n                }\n\n                var ret = ext.renderer.apply(this, args);\n\n                if (ret === false) {\n                  ret = prevRenderer.apply(this, args);\n                }\n\n                return ret;\n              };\n            } else {\n              extensions.renderers[ext.name] = ext.renderer;\n            }\n          }\n\n          if (ext.tokenizer) {\n            // Tokenizer Extensions\n            if (!ext.level || ext.level !== 'block' && ext.level !== 'inline') {\n              throw new Error(\"extension level must be 'block' or 'inline'\");\n            }\n\n            if (extensions[ext.level]) {\n              extensions[ext.level].unshift(ext.tokenizer);\n            } else {\n              extensions[ext.level] = [ext.tokenizer];\n            }\n\n            if (ext.start) {\n              // Function to check for start of token\n              if (ext.level === 'block') {\n                if (extensions.startBlock) {\n                  extensions.startBlock.push(ext.start);\n                } else {\n                  extensions.startBlock = [ext.start];\n                }\n              } else if (ext.level === 'inline') {\n                if (extensions.startInline) {\n                  extensions.startInline.push(ext.start);\n                } else {\n                  extensions.startInline = [ext.start];\n                }\n              }\n            }\n          }\n\n          if (ext.childTokens) {\n            // Child tokens to be visited by walkTokens\n            extensions.childTokens[ext.name] = ext.childTokens;\n          }\n        });\n      } // ==-- Parse \"overwrite\" extensions --== //\n\n\n      if (pack.renderer) {\n        (function () {\n          var renderer = marked.defaults.renderer || new Renderer();\n\n          var _loop = function _loop(prop) {\n            var prevRenderer = renderer[prop]; // Replace renderer with func to run extension, but fall back if false\n\n            renderer[prop] = function () {\n              for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n                args[_key3] = arguments[_key3];\n              }\n\n              var ret = pack.renderer[prop].apply(renderer, args);\n\n              if (ret === false) {\n                ret = prevRenderer.apply(renderer, args);\n              }\n\n              return ret;\n            };\n          };\n\n          for (var prop in pack.renderer) {\n            _loop(prop);\n          }\n\n          opts.renderer = renderer;\n        })();\n      }\n\n      if (pack.tokenizer) {\n        (function () {\n          var tokenizer = marked.defaults.tokenizer || new Tokenizer();\n\n          var _loop2 = function _loop2(prop) {\n            var prevTokenizer = tokenizer[prop]; // Replace tokenizer with func to run extension, but fall back if false\n\n            tokenizer[prop] = function () {\n              for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n                args[_key4] = arguments[_key4];\n              }\n\n              var ret = pack.tokenizer[prop].apply(tokenizer, args);\n\n              if (ret === false) {\n                ret = prevTokenizer.apply(tokenizer, args);\n              }\n\n              return ret;\n            };\n          };\n\n          for (var prop in pack.tokenizer) {\n            _loop2(prop);\n          }\n\n          opts.tokenizer = tokenizer;\n        })();\n      } // ==-- Parse WalkTokens extensions --== //\n\n\n      if (pack.walkTokens) {\n        var walkTokens = marked.defaults.walkTokens;\n\n        opts.walkTokens = function (token) {\n          pack.walkTokens.call(_this, token);\n\n          if (walkTokens) {\n            walkTokens(token);\n          }\n        };\n      }\n\n      if (hasExtensions) {\n        opts.extensions = extensions;\n      }\n\n      marked.setOptions(opts);\n    });\n  };\n  /**\n   * Run callback for every token\n   */\n\n\n  marked.walkTokens = function (tokens, callback) {\n    var _loop3 = function _loop3() {\n      var token = _step.value;\n      callback(token);\n\n      switch (token.type) {\n        case 'table':\n          {\n            for (var _iterator2 = _createForOfIteratorHelperLoose(token.header), _step2; !(_step2 = _iterator2()).done;) {\n              var cell = _step2.value;\n              marked.walkTokens(cell.tokens, callback);\n            }\n\n            for (var _iterator3 = _createForOfIteratorHelperLoose(token.rows), _step3; !(_step3 = _iterator3()).done;) {\n              var row = _step3.value;\n\n              for (var _iterator4 = _createForOfIteratorHelperLoose(row), _step4; !(_step4 = _iterator4()).done;) {\n                var _cell = _step4.value;\n                marked.walkTokens(_cell.tokens, callback);\n              }\n            }\n\n            break;\n          }\n\n        case 'list':\n          {\n            marked.walkTokens(token.items, callback);\n            break;\n          }\n\n        default:\n          {\n            if (marked.defaults.extensions && marked.defaults.extensions.childTokens && marked.defaults.extensions.childTokens[token.type]) {\n              // Walk any extensions\n              marked.defaults.extensions.childTokens[token.type].forEach(function (childTokens) {\n                marked.walkTokens(token[childTokens], callback);\n              });\n            } else if (token.tokens) {\n              marked.walkTokens(token.tokens, callback);\n            }\n          }\n      }\n    };\n\n    for (var _iterator = _createForOfIteratorHelperLoose(tokens), _step; !(_step = _iterator()).done;) {\n      _loop3();\n    }\n  };\n  /**\n   * Parse Inline\n   */\n\n\n  marked.parseInline = function (src, opt) {\n    // throw error in case of non string input\n    if (typeof src === 'undefined' || src === null) {\n      throw new Error('marked.parseInline(): input parameter is undefined or null');\n    }\n\n    if (typeof src !== 'string') {\n      throw new Error('marked.parseInline(): input parameter is of type ' + Object.prototype.toString.call(src) + ', string expected');\n    }\n\n    opt = merge({}, marked.defaults, opt || {});\n    checkSanitizeDeprecation(opt);\n\n    try {\n      var tokens = Lexer.lexInline(src, opt);\n\n      if (opt.walkTokens) {\n        marked.walkTokens(tokens, opt.walkTokens);\n      }\n\n      return Parser.parseInline(tokens, opt);\n    } catch (e) {\n      e.message += '\\nPlease report this to https://github.com/markedjs/marked.';\n\n      if (opt.silent) {\n        return '<p>An error occurred:</p><pre>' + escape(e.message + '', true) + '</pre>';\n      }\n\n      throw e;\n    }\n  };\n  /**\n   * Expose\n   */\n\n\n  marked.Parser = Parser;\n  marked.parser = Parser.parse;\n  marked.Renderer = Renderer;\n  marked.TextRenderer = TextRenderer;\n  marked.Lexer = Lexer;\n  marked.lexer = Lexer.lex;\n  marked.Tokenizer = Tokenizer;\n  marked.Slugger = Slugger;\n  marked.parse = marked;\n  var marked_1 = marked;\n\n  return marked_1;\n\n})));\n","import * as TAGS from './tags.js';\nimport * as ATTRS from './attrs.js';\nimport * as EXPRESSIONS from './regexp.js';\nimport {\n  addToSet,\n  clone,\n  freeze,\n  arrayForEach,\n  arrayPop,\n  arrayPush,\n  stringMatch,\n  stringReplace,\n  stringToLowerCase,\n  stringIndexOf,\n  stringTrim,\n  regExpTest,\n  typeErrorCreate,\n  lookupGetter,\n} from './utils.js';\n\nconst getGlobal = () => (typeof window === 'undefined' ? null : window);\n\n/**\n * Creates a no-op policy for internal use only.\n * Don't export this function outside this module!\n * @param {?TrustedTypePolicyFactory} trustedTypes The policy factory.\n * @param {Document} document The document object (to determine policy name suffix)\n * @return {?TrustedTypePolicy} The policy created (or null, if Trusted Types\n * are not supported).\n */\nconst _createTrustedTypesPolicy = function (trustedTypes, document) {\n  if (\n    typeof trustedTypes !== 'object' ||\n    typeof trustedTypes.createPolicy !== 'function'\n  ) {\n    return null;\n  }\n\n  // Allow the callers to control the unique policy name\n  // by adding a data-tt-policy-suffix to the script element with the DOMPurify.\n  // Policy creation with duplicate names throws in Trusted Types.\n  let suffix = null;\n  const ATTR_NAME = 'data-tt-policy-suffix';\n  if (\n    document.currentScript &&\n    document.currentScript.hasAttribute(ATTR_NAME)\n  ) {\n    suffix = document.currentScript.getAttribute(ATTR_NAME);\n  }\n\n  const policyName = 'dompurify' + (suffix ? '#' + suffix : '');\n\n  try {\n    return trustedTypes.createPolicy(policyName, {\n      createHTML(html) {\n        return html;\n      },\n    });\n  } catch (_) {\n    // Policy creation failed (most likely another DOMPurify script has\n    // already run). Skip creating the policy, as this will only cause errors\n    // if TT are enforced.\n    console.warn(\n      'TrustedTypes policy ' + policyName + ' could not be created.'\n    );\n    return null;\n  }\n};\n\nfunction createDOMPurify(window = getGlobal()) {\n  const DOMPurify = (root) => createDOMPurify(root);\n\n  /**\n   * Version label, exposed for easier checks\n   * if DOMPurify is up to date or not\n   */\n  DOMPurify.version = VERSION;\n\n  /**\n   * Array of elements that DOMPurify removed during sanitation.\n   * Empty if nothing was removed.\n   */\n  DOMPurify.removed = [];\n\n  if (!window || !window.document || window.document.nodeType !== 9) {\n    // Not running in a browser, provide a factory function\n    // so that you can pass your own Window\n    DOMPurify.isSupported = false;\n\n    return DOMPurify;\n  }\n\n  const originalDocument = window.document;\n\n  let { document } = window;\n  const {\n    DocumentFragment,\n    HTMLTemplateElement,\n    Node,\n    Element,\n    NodeFilter,\n    NamedNodeMap = window.NamedNodeMap || window.MozNamedAttrMap,\n    Text,\n    Comment,\n    DOMParser,\n    trustedTypes,\n  } = window;\n\n  const ElementPrototype = Element.prototype;\n\n  const cloneNode = lookupGetter(ElementPrototype, 'cloneNode');\n  const getNextSibling = lookupGetter(ElementPrototype, 'nextSibling');\n  const getChildNodes = lookupGetter(ElementPrototype, 'childNodes');\n  const getParentNode = lookupGetter(ElementPrototype, 'parentNode');\n\n  // As per issue #47, the web-components registry is inherited by a\n  // new document created via createHTMLDocument. As per the spec\n  // (http://w3c.github.io/webcomponents/spec/custom/#creating-and-passing-registries)\n  // a new empty registry is used when creating a template contents owner\n  // document, so we use that as our parent document to ensure nothing\n  // is inherited.\n  if (typeof HTMLTemplateElement === 'function') {\n    const template = document.createElement('template');\n    if (template.content && template.content.ownerDocument) {\n      document = template.content.ownerDocument;\n    }\n  }\n\n  const trustedTypesPolicy = _createTrustedTypesPolicy(\n    trustedTypes,\n    originalDocument\n  );\n  const emptyHTML =\n    trustedTypesPolicy && RETURN_TRUSTED_TYPE\n      ? trustedTypesPolicy.createHTML('')\n      : '';\n\n  const {\n    implementation,\n    createNodeIterator,\n    createDocumentFragment,\n    getElementsByTagName,\n  } = document;\n  const { importNode } = originalDocument;\n\n  let documentMode = {};\n  try {\n    documentMode = clone(document).documentMode ? document.documentMode : {};\n  } catch (_) {}\n\n  let hooks = {};\n\n  /**\n   * Expose whether this browser supports running the full DOMPurify.\n   */\n  DOMPurify.isSupported =\n    typeof getParentNode === 'function' &&\n    implementation &&\n    typeof implementation.createHTMLDocument !== 'undefined' &&\n    documentMode !== 9;\n\n  const {\n    MUSTACHE_EXPR,\n    ERB_EXPR,\n    DATA_ATTR,\n    ARIA_ATTR,\n    IS_SCRIPT_OR_DATA,\n    ATTR_WHITESPACE,\n  } = EXPRESSIONS;\n\n  let { IS_ALLOWED_URI } = EXPRESSIONS;\n\n  /**\n   * We consider the elements and attributes below to be safe. Ideally\n   * don't add any new ones but feel free to remove unwanted ones.\n   */\n\n  /* allowed element names */\n  let ALLOWED_TAGS = null;\n  const DEFAULT_ALLOWED_TAGS = addToSet({}, [\n    ...TAGS.html,\n    ...TAGS.svg,\n    ...TAGS.svgFilters,\n    ...TAGS.mathMl,\n    ...TAGS.text,\n  ]);\n\n  /* Allowed attribute names */\n  let ALLOWED_ATTR = null;\n  const DEFAULT_ALLOWED_ATTR = addToSet({}, [\n    ...ATTRS.html,\n    ...ATTRS.svg,\n    ...ATTRS.mathMl,\n    ...ATTRS.xml,\n  ]);\n\n  /* Explicitly forbidden tags (overrides ALLOWED_TAGS/ADD_TAGS) */\n  let FORBID_TAGS = null;\n\n  /* Explicitly forbidden attributes (overrides ALLOWED_ATTR/ADD_ATTR) */\n  let FORBID_ATTR = null;\n\n  /* Decide if ARIA attributes are okay */\n  let ALLOW_ARIA_ATTR = true;\n\n  /* Decide if custom data attributes are okay */\n  let ALLOW_DATA_ATTR = true;\n\n  /* Decide if unknown protocols are okay */\n  let ALLOW_UNKNOWN_PROTOCOLS = false;\n\n  /* Output should be safe for common template engines.\n   * This means, DOMPurify removes data attributes, mustaches and ERB\n   */\n  let SAFE_FOR_TEMPLATES = false;\n\n  /* Decide if document with <html>... should be returned */\n  let WHOLE_DOCUMENT = false;\n\n  /* Track whether config is already set on this instance of DOMPurify. */\n  let SET_CONFIG = false;\n\n  /* Decide if all elements (e.g. style, script) must be children of\n   * document.body. By default, browsers might move them to document.head */\n  let FORCE_BODY = false;\n\n  /* Decide if a DOM `HTMLBodyElement` should be returned, instead of a html\n   * string (or a TrustedHTML object if Trusted Types are supported).\n   * If `WHOLE_DOCUMENT` is enabled a `HTMLHtmlElement` will be returned instead\n   */\n  let RETURN_DOM = false;\n\n  /* Decide if a DOM `DocumentFragment` should be returned, instead of a html\n   * string  (or a TrustedHTML object if Trusted Types are supported) */\n  let RETURN_DOM_FRAGMENT = false;\n\n  /* If `RETURN_DOM` or `RETURN_DOM_FRAGMENT` is enabled, decide if the returned DOM\n   * `Node` is imported into the current `Document`. If this flag is not enabled the\n   * `Node` will belong (its ownerDocument) to a fresh `HTMLDocument`, created by\n   * DOMPurify.\n   *\n   * This defaults to `true` starting DOMPurify 2.2.0. Note that setting it to `false`\n   * might cause XSS from attacks hidden in closed shadowroots in case the browser\n   * supports Declarative Shadow: DOM https://web.dev/declarative-shadow-dom/\n   */\n  let RETURN_DOM_IMPORT = true;\n\n  /* Try to return a Trusted Type object instead of a string, return a string in\n   * case Trusted Types are not supported  */\n  let RETURN_TRUSTED_TYPE = false;\n\n  /* Output should be free from DOM clobbering attacks? */\n  let SANITIZE_DOM = true;\n\n  /* Keep element content when removing element? */\n  let KEEP_CONTENT = true;\n\n  /* If a `Node` is passed to sanitize(), then performs sanitization in-place instead\n   * of importing it into a new Document and returning a sanitized copy */\n  let IN_PLACE = false;\n\n  /* Allow usage of profiles like html, svg and mathMl */\n  let USE_PROFILES = {};\n\n  /* Tags to ignore content of when KEEP_CONTENT is true */\n  let FORBID_CONTENTS = null;\n  const DEFAULT_FORBID_CONTENTS = addToSet({}, [\n    'annotation-xml',\n    'audio',\n    'colgroup',\n    'desc',\n    'foreignobject',\n    'head',\n    'iframe',\n    'math',\n    'mi',\n    'mn',\n    'mo',\n    'ms',\n    'mtext',\n    'noembed',\n    'noframes',\n    'noscript',\n    'plaintext',\n    'script',\n    'style',\n    'svg',\n    'template',\n    'thead',\n    'title',\n    'video',\n    'xmp',\n  ]);\n\n  /* Tags that are safe for data: URIs */\n  let DATA_URI_TAGS = null;\n  const DEFAULT_DATA_URI_TAGS = addToSet({}, [\n    'audio',\n    'video',\n    'img',\n    'source',\n    'image',\n    'track',\n  ]);\n\n  /* Attributes safe for values like \"javascript:\" */\n  let URI_SAFE_ATTRIBUTES = null;\n  const DEFAULT_URI_SAFE_ATTRIBUTES = addToSet({}, [\n    'alt',\n    'class',\n    'for',\n    'id',\n    'label',\n    'name',\n    'pattern',\n    'placeholder',\n    'role',\n    'summary',\n    'title',\n    'value',\n    'style',\n    'xmlns',\n  ]);\n\n  const MATHML_NAMESPACE = 'http://www.w3.org/1998/Math/MathML';\n  const SVG_NAMESPACE = 'http://www.w3.org/2000/svg';\n  const HTML_NAMESPACE = 'http://www.w3.org/1999/xhtml';\n  /* Document namespace */\n  let NAMESPACE = HTML_NAMESPACE;\n  let IS_EMPTY_INPUT = false;\n\n  /* Parsing of strict XHTML documents */\n  let PARSER_MEDIA_TYPE;\n  const SUPPORTED_PARSER_MEDIA_TYPES = ['application/xhtml+xml', 'text/html'];\n  const DEFAULT_PARSER_MEDIA_TYPE = 'text/html';\n  let transformCaseFunc;\n\n  /* Keep a reference to config to pass to hooks */\n  let CONFIG = null;\n\n  /* Ideally, do not touch anything below this line */\n  /* ______________________________________________ */\n\n  const formElement = document.createElement('form');\n\n  /**\n   * _parseConfig\n   *\n   * @param  {Object} cfg optional config literal\n   */\n  // eslint-disable-next-line complexity\n  const _parseConfig = function (cfg) {\n    if (CONFIG && CONFIG === cfg) {\n      return;\n    }\n\n    /* Shield configuration object from tampering */\n    if (!cfg || typeof cfg !== 'object') {\n      cfg = {};\n    }\n\n    /* Shield configuration object from prototype pollution */\n    cfg = clone(cfg);\n\n    /* Set configuration parameters */\n    ALLOWED_TAGS =\n      'ALLOWED_TAGS' in cfg\n        ? addToSet({}, cfg.ALLOWED_TAGS)\n        : DEFAULT_ALLOWED_TAGS;\n    ALLOWED_ATTR =\n      'ALLOWED_ATTR' in cfg\n        ? addToSet({}, cfg.ALLOWED_ATTR)\n        : DEFAULT_ALLOWED_ATTR;\n    URI_SAFE_ATTRIBUTES =\n      'ADD_URI_SAFE_ATTR' in cfg\n        ? addToSet(clone(DEFAULT_URI_SAFE_ATTRIBUTES), cfg.ADD_URI_SAFE_ATTR)\n        : DEFAULT_URI_SAFE_ATTRIBUTES;\n    DATA_URI_TAGS =\n      'ADD_DATA_URI_TAGS' in cfg\n        ? addToSet(clone(DEFAULT_DATA_URI_TAGS), cfg.ADD_DATA_URI_TAGS)\n        : DEFAULT_DATA_URI_TAGS;\n    FORBID_CONTENTS =\n      'FORBID_CONTENTS' in cfg\n        ? addToSet({}, cfg.FORBID_CONTENTS)\n        : DEFAULT_FORBID_CONTENTS;\n    FORBID_TAGS = 'FORBID_TAGS' in cfg ? addToSet({}, cfg.FORBID_TAGS) : {};\n    FORBID_ATTR = 'FORBID_ATTR' in cfg ? addToSet({}, cfg.FORBID_ATTR) : {};\n    USE_PROFILES = 'USE_PROFILES' in cfg ? cfg.USE_PROFILES : false;\n    ALLOW_ARIA_ATTR = cfg.ALLOW_ARIA_ATTR !== false; // Default true\n    ALLOW_DATA_ATTR = cfg.ALLOW_DATA_ATTR !== false; // Default true\n    ALLOW_UNKNOWN_PROTOCOLS = cfg.ALLOW_UNKNOWN_PROTOCOLS || false; // Default false\n    SAFE_FOR_TEMPLATES = cfg.SAFE_FOR_TEMPLATES || false; // Default false\n    WHOLE_DOCUMENT = cfg.WHOLE_DOCUMENT || false; // Default false\n    RETURN_DOM = cfg.RETURN_DOM || false; // Default false\n    RETURN_DOM_FRAGMENT = cfg.RETURN_DOM_FRAGMENT || false; // Default false\n    RETURN_DOM_IMPORT = cfg.RETURN_DOM_IMPORT !== false; // Default true\n    RETURN_TRUSTED_TYPE = cfg.RETURN_TRUSTED_TYPE || false; // Default false\n    FORCE_BODY = cfg.FORCE_BODY || false; // Default false\n    SANITIZE_DOM = cfg.SANITIZE_DOM !== false; // Default true\n    KEEP_CONTENT = cfg.KEEP_CONTENT !== false; // Default true\n    IN_PLACE = cfg.IN_PLACE || false; // Default false\n    IS_ALLOWED_URI = cfg.ALLOWED_URI_REGEXP || IS_ALLOWED_URI;\n    NAMESPACE = cfg.NAMESPACE || HTML_NAMESPACE;\n\n    PARSER_MEDIA_TYPE =\n      // eslint-disable-next-line unicorn/prefer-includes\n      SUPPORTED_PARSER_MEDIA_TYPES.indexOf(cfg.PARSER_MEDIA_TYPE) === -1\n        ? (PARSER_MEDIA_TYPE = DEFAULT_PARSER_MEDIA_TYPE)\n        : (PARSER_MEDIA_TYPE = cfg.PARSER_MEDIA_TYPE);\n\n    // HTML tags and attributes are not case-sensitive, converting to lowercase. Keeping XHTML as is.\n    transformCaseFunc =\n      PARSER_MEDIA_TYPE === 'application/xhtml+xml'\n        ? (x) => x\n        : stringToLowerCase;\n\n    if (SAFE_FOR_TEMPLATES) {\n      ALLOW_DATA_ATTR = false;\n    }\n\n    if (RETURN_DOM_FRAGMENT) {\n      RETURN_DOM = true;\n    }\n\n    /* Parse profile info */\n    if (USE_PROFILES) {\n      ALLOWED_TAGS = addToSet({}, [...TAGS.text]);\n      ALLOWED_ATTR = [];\n      if (USE_PROFILES.html === true) {\n        addToSet(ALLOWED_TAGS, TAGS.html);\n        addToSet(ALLOWED_ATTR, ATTRS.html);\n      }\n\n      if (USE_PROFILES.svg === true) {\n        addToSet(ALLOWED_TAGS, TAGS.svg);\n        addToSet(ALLOWED_ATTR, ATTRS.svg);\n        addToSet(ALLOWED_ATTR, ATTRS.xml);\n      }\n\n      if (USE_PROFILES.svgFilters === true) {\n        addToSet(ALLOWED_TAGS, TAGS.svgFilters);\n        addToSet(ALLOWED_ATTR, ATTRS.svg);\n        addToSet(ALLOWED_ATTR, ATTRS.xml);\n      }\n\n      if (USE_PROFILES.mathMl === true) {\n        addToSet(ALLOWED_TAGS, TAGS.mathMl);\n        addToSet(ALLOWED_ATTR, ATTRS.mathMl);\n        addToSet(ALLOWED_ATTR, ATTRS.xml);\n      }\n    }\n\n    /* Merge configuration parameters */\n    if (cfg.ADD_TAGS) {\n      if (ALLOWED_TAGS === DEFAULT_ALLOWED_TAGS) {\n        ALLOWED_TAGS = clone(ALLOWED_TAGS);\n      }\n\n      addToSet(ALLOWED_TAGS, cfg.ADD_TAGS);\n    }\n\n    if (cfg.ADD_ATTR) {\n      if (ALLOWED_ATTR === DEFAULT_ALLOWED_ATTR) {\n        ALLOWED_ATTR = clone(ALLOWED_ATTR);\n      }\n\n      addToSet(ALLOWED_ATTR, cfg.ADD_ATTR);\n    }\n\n    if (cfg.ADD_URI_SAFE_ATTR) {\n      addToSet(URI_SAFE_ATTRIBUTES, cfg.ADD_URI_SAFE_ATTR);\n    }\n\n    if (cfg.FORBID_CONTENTS) {\n      if (FORBID_CONTENTS === DEFAULT_FORBID_CONTENTS) {\n        FORBID_CONTENTS = clone(FORBID_CONTENTS);\n      }\n\n      addToSet(FORBID_CONTENTS, cfg.FORBID_CONTENTS);\n    }\n\n    /* Add #text in case KEEP_CONTENT is set to true */\n    if (KEEP_CONTENT) {\n      ALLOWED_TAGS['#text'] = true;\n    }\n\n    /* Add html, head and body to ALLOWED_TAGS in case WHOLE_DOCUMENT is true */\n    if (WHOLE_DOCUMENT) {\n      addToSet(ALLOWED_TAGS, ['html', 'head', 'body']);\n    }\n\n    /* Add tbody to ALLOWED_TAGS in case tables are permitted, see #286, #365 */\n    if (ALLOWED_TAGS.table) {\n      addToSet(ALLOWED_TAGS, ['tbody']);\n      delete FORBID_TAGS.tbody;\n    }\n\n    // Prevent further manipulation of configuration.\n    // Not available in IE8, Safari 5, etc.\n    if (freeze) {\n      freeze(cfg);\n    }\n\n    CONFIG = cfg;\n  };\n\n  const MATHML_TEXT_INTEGRATION_POINTS = addToSet({}, [\n    'mi',\n    'mo',\n    'mn',\n    'ms',\n    'mtext',\n  ]);\n\n  const HTML_INTEGRATION_POINTS = addToSet({}, [\n    'foreignobject',\n    'desc',\n    'title',\n    'annotation-xml',\n  ]);\n\n  /* Keep track of all possible SVG and MathML tags\n   * so that we can perform the namespace checks\n   * correctly. */\n  const ALL_SVG_TAGS = addToSet({}, TAGS.svg);\n  addToSet(ALL_SVG_TAGS, TAGS.svgFilters);\n  addToSet(ALL_SVG_TAGS, TAGS.svgDisallowed);\n\n  const ALL_MATHML_TAGS = addToSet({}, TAGS.mathMl);\n  addToSet(ALL_MATHML_TAGS, TAGS.mathMlDisallowed);\n\n  /**\n   *\n   *\n   * @param  {Element} element a DOM element whose namespace is being checked\n   * @returns {boolean} Return false if the element has a\n   *  namespace that a spec-compliant parser would never\n   *  return. Return true otherwise.\n   */\n  const _checkValidNamespace = function (element) {\n    let parent = getParentNode(element);\n\n    // In JSDOM, if we're inside shadow DOM, then parentNode\n    // can be null. We just simulate parent in this case.\n    if (!parent || !parent.tagName) {\n      parent = {\n        namespaceURI: HTML_NAMESPACE,\n        tagName: 'template',\n      };\n    }\n\n    const tagName = stringToLowerCase(element.tagName);\n    const parentTagName = stringToLowerCase(parent.tagName);\n\n    if (element.namespaceURI === SVG_NAMESPACE) {\n      // The only way to switch from HTML namespace to SVG\n      // is via <svg>. If it happens via any other tag, then\n      // it should be killed.\n      if (parent.namespaceURI === HTML_NAMESPACE) {\n        return tagName === 'svg';\n      }\n\n      // The only way to switch from MathML to SVG is via\n      // svg if parent is either <annotation-xml> or MathML\n      // text integration points.\n      if (parent.namespaceURI === MATHML_NAMESPACE) {\n        return (\n          tagName === 'svg' &&\n          (parentTagName === 'annotation-xml' ||\n            MATHML_TEXT_INTEGRATION_POINTS[parentTagName])\n        );\n      }\n\n      // We only allow elements that are defined in SVG\n      // spec. All others are disallowed in SVG namespace.\n      return Boolean(ALL_SVG_TAGS[tagName]);\n    }\n\n    if (element.namespaceURI === MATHML_NAMESPACE) {\n      // The only way to switch from HTML namespace to MathML\n      // is via <math>. If it happens via any other tag, then\n      // it should be killed.\n      if (parent.namespaceURI === HTML_NAMESPACE) {\n        return tagName === 'math';\n      }\n\n      // The only way to switch from SVG to MathML is via\n      // <math> and HTML integration points\n      if (parent.namespaceURI === SVG_NAMESPACE) {\n        return tagName === 'math' && HTML_INTEGRATION_POINTS[parentTagName];\n      }\n\n      // We only allow elements that are defined in MathML\n      // spec. All others are disallowed in MathML namespace.\n      return Boolean(ALL_MATHML_TAGS[tagName]);\n    }\n\n    if (element.namespaceURI === HTML_NAMESPACE) {\n      // The only way to switch from SVG to HTML is via\n      // HTML integration points, and from MathML to HTML\n      // is via MathML text integration points\n      if (\n        parent.namespaceURI === SVG_NAMESPACE &&\n        !HTML_INTEGRATION_POINTS[parentTagName]\n      ) {\n        return false;\n      }\n\n      if (\n        parent.namespaceURI === MATHML_NAMESPACE &&\n        !MATHML_TEXT_INTEGRATION_POINTS[parentTagName]\n      ) {\n        return false;\n      }\n\n      // Certain elements are allowed in both SVG and HTML\n      // namespace. We need to specify them explicitly\n      // so that they don't get erronously deleted from\n      // HTML namespace.\n      const commonSvgAndHTMLElements = addToSet({}, [\n        'title',\n        'style',\n        'font',\n        'a',\n        'script',\n      ]);\n\n      // We disallow tags that are specific for MathML\n      // or SVG and should never appear in HTML namespace\n      return (\n        !ALL_MATHML_TAGS[tagName] &&\n        (commonSvgAndHTMLElements[tagName] || !ALL_SVG_TAGS[tagName])\n      );\n    }\n\n    // The code should never reach this place (this means\n    // that the element somehow got namespace that is not\n    // HTML, SVG or MathML). Return false just in case.\n    return false;\n  };\n\n  /**\n   * _forceRemove\n   *\n   * @param  {Node} node a DOM node\n   */\n  const _forceRemove = function (node) {\n    arrayPush(DOMPurify.removed, { element: node });\n    try {\n      // eslint-disable-next-line unicorn/prefer-dom-node-remove\n      node.parentNode.removeChild(node);\n    } catch (_) {\n      try {\n        node.outerHTML = emptyHTML;\n      } catch (_) {\n        node.remove();\n      }\n    }\n  };\n\n  /**\n   * _removeAttribute\n   *\n   * @param  {String} name an Attribute name\n   * @param  {Node} node a DOM node\n   */\n  const _removeAttribute = function (name, node) {\n    try {\n      arrayPush(DOMPurify.removed, {\n        attribute: node.getAttributeNode(name),\n        from: node,\n      });\n    } catch (_) {\n      arrayPush(DOMPurify.removed, {\n        attribute: null,\n        from: node,\n      });\n    }\n\n    node.removeAttribute(name);\n\n    // We void attribute values for unremovable \"is\"\" attributes\n    if (name === 'is' && !ALLOWED_ATTR[name]) {\n      if (RETURN_DOM || RETURN_DOM_FRAGMENT) {\n        try {\n          _forceRemove(node);\n        } catch (_) {}\n      } else {\n        try {\n          node.setAttribute(name, '');\n        } catch (_) {}\n      }\n    }\n  };\n\n  /**\n   * _initDocument\n   *\n   * @param  {String} dirty a string of dirty markup\n   * @return {Document} a DOM, filled with the dirty markup\n   */\n  const _initDocument = function (dirty) {\n    /* Create a HTML document */\n    let doc;\n    let leadingWhitespace;\n\n    if (FORCE_BODY) {\n      dirty = '<remove></remove>' + dirty;\n    } else {\n      /* If FORCE_BODY isn't used, leading whitespace needs to be preserved manually */\n      const matches = stringMatch(dirty, /^[\\r\\n\\t ]+/);\n      leadingWhitespace = matches && matches[0];\n    }\n\n    if (PARSER_MEDIA_TYPE === 'application/xhtml+xml') {\n      // Root of XHTML doc must contain xmlns declaration (see https://www.w3.org/TR/xhtml1/normative.html#strict)\n      dirty =\n        '<html xmlns=\"http://www.w3.org/1999/xhtml\"><head></head><body>' +\n        dirty +\n        '</body></html>';\n    }\n\n    const dirtyPayload = trustedTypesPolicy\n      ? trustedTypesPolicy.createHTML(dirty)\n      : dirty;\n    /*\n     * Use the DOMParser API by default, fallback later if needs be\n     * DOMParser not work for svg when has multiple root element.\n     */\n    if (NAMESPACE === HTML_NAMESPACE) {\n      try {\n        doc = new DOMParser().parseFromString(dirtyPayload, PARSER_MEDIA_TYPE);\n      } catch (_) {}\n    }\n\n    /* Use createHTMLDocument in case DOMParser is not available */\n    if (!doc || !doc.documentElement) {\n      doc = implementation.createDocument(NAMESPACE, 'template', null);\n      try {\n        doc.documentElement.innerHTML = IS_EMPTY_INPUT ? '' : dirtyPayload;\n      } catch (_) {\n        // Syntax error if dirtyPayload is invalid xml\n      }\n    }\n\n    const body = doc.body || doc.documentElement;\n\n    if (dirty && leadingWhitespace) {\n      body.insertBefore(\n        document.createTextNode(leadingWhitespace),\n        body.childNodes[0] || null\n      );\n    }\n\n    /* Work on whole document or just its body */\n    if (NAMESPACE === HTML_NAMESPACE) {\n      return getElementsByTagName.call(\n        doc,\n        WHOLE_DOCUMENT ? 'html' : 'body'\n      )[0];\n    }\n\n    return WHOLE_DOCUMENT ? doc.documentElement : body;\n  };\n\n  /**\n   * _createIterator\n   *\n   * @param  {Document} root document/fragment to create iterator for\n   * @return {Iterator} iterator instance\n   */\n  const _createIterator = function (root) {\n    return createNodeIterator.call(\n      root.ownerDocument || root,\n      root,\n      NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_COMMENT | NodeFilter.SHOW_TEXT,\n      null,\n      false\n    );\n  };\n\n  /**\n   * _isClobbered\n   *\n   * @param  {Node} elm element to check for clobbering attacks\n   * @return {Boolean} true if clobbered, false if safe\n   */\n  const _isClobbered = function (elm) {\n    if (elm instanceof Text || elm instanceof Comment) {\n      return false;\n    }\n\n    if (\n      typeof elm.nodeName !== 'string' ||\n      typeof elm.textContent !== 'string' ||\n      typeof elm.removeChild !== 'function' ||\n      !(elm.attributes instanceof NamedNodeMap) ||\n      typeof elm.removeAttribute !== 'function' ||\n      typeof elm.setAttribute !== 'function' ||\n      typeof elm.namespaceURI !== 'string' ||\n      typeof elm.insertBefore !== 'function'\n    ) {\n      return true;\n    }\n\n    return false;\n  };\n\n  /**\n   * _isNode\n   *\n   * @param  {Node} obj object to check whether it's a DOM node\n   * @return {Boolean} true is object is a DOM node\n   */\n  const _isNode = function (object) {\n    return typeof Node === 'object'\n      ? object instanceof Node\n      : object &&\n          typeof object === 'object' &&\n          typeof object.nodeType === 'number' &&\n          typeof object.nodeName === 'string';\n  };\n\n  /**\n   * _executeHook\n   * Execute user configurable hooks\n   *\n   * @param  {String} entryPoint  Name of the hook's entry point\n   * @param  {Node} currentNode node to work on with the hook\n   * @param  {Object} data additional hook parameters\n   */\n  const _executeHook = function (entryPoint, currentNode, data) {\n    if (!hooks[entryPoint]) {\n      return;\n    }\n\n    arrayForEach(hooks[entryPoint], (hook) => {\n      hook.call(DOMPurify, currentNode, data, CONFIG);\n    });\n  };\n\n  /**\n   * _sanitizeElements\n   *\n   * @protect nodeName\n   * @protect textContent\n   * @protect removeChild\n   *\n   * @param   {Node} currentNode to check for permission to exist\n   * @return  {Boolean} true if node was killed, false if left alive\n   */\n  const _sanitizeElements = function (currentNode) {\n    let content;\n\n    /* Execute a hook if present */\n    _executeHook('beforeSanitizeElements', currentNode, null);\n\n    /* Check if element is clobbered or can clobber */\n    if (_isClobbered(currentNode)) {\n      _forceRemove(currentNode);\n      return true;\n    }\n\n    /* Check if tagname contains Unicode */\n    if (stringMatch(currentNode.nodeName, /[\\u0080-\\uFFFF]/)) {\n      _forceRemove(currentNode);\n      return true;\n    }\n\n    /* Now let's check the element's type and name */\n    const tagName = transformCaseFunc(currentNode.nodeName);\n\n    /* Execute a hook if present */\n    _executeHook('uponSanitizeElement', currentNode, {\n      tagName,\n      allowedTags: ALLOWED_TAGS,\n    });\n\n    /* Detect mXSS attempts abusing namespace confusion */\n    if (\n      !_isNode(currentNode.firstElementChild) &&\n      (!_isNode(currentNode.content) ||\n        !_isNode(currentNode.content.firstElementChild)) &&\n      regExpTest(/<[/\\w]/g, currentNode.innerHTML) &&\n      regExpTest(/<[/\\w]/g, currentNode.textContent)\n    ) {\n      _forceRemove(currentNode);\n      return true;\n    }\n\n    /* Mitigate a problem with templates inside select */\n    if (\n      tagName === 'select' &&\n      regExpTest(/<template/i, currentNode.innerHTML)\n    ) {\n      _forceRemove(currentNode);\n      return true;\n    }\n\n    /* Remove element if anything forbids its presence */\n    if (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName]) {\n      /* Keep content except for bad-listed elements */\n      if (KEEP_CONTENT && !FORBID_CONTENTS[tagName]) {\n        const parentNode = getParentNode(currentNode) || currentNode.parentNode;\n        const childNodes = getChildNodes(currentNode) || currentNode.childNodes;\n\n        if (childNodes && parentNode) {\n          const childCount = childNodes.length;\n\n          for (let i = childCount - 1; i >= 0; --i) {\n            parentNode.insertBefore(\n              cloneNode(childNodes[i], true),\n              getNextSibling(currentNode)\n            );\n          }\n        }\n      }\n\n      _forceRemove(currentNode);\n      return true;\n    }\n\n    /* Check whether element has a valid namespace */\n    if (currentNode instanceof Element && !_checkValidNamespace(currentNode)) {\n      _forceRemove(currentNode);\n      return true;\n    }\n\n    if (\n      (tagName === 'noscript' || tagName === 'noembed') &&\n      regExpTest(/<\\/no(script|embed)/i, currentNode.innerHTML)\n    ) {\n      _forceRemove(currentNode);\n      return true;\n    }\n\n    /* Sanitize element content to be template-safe */\n    if (SAFE_FOR_TEMPLATES && currentNode.nodeType === 3) {\n      /* Get the element's text content */\n      content = currentNode.textContent;\n      content = stringReplace(content, MUSTACHE_EXPR, ' ');\n      content = stringReplace(content, ERB_EXPR, ' ');\n      if (currentNode.textContent !== content) {\n        arrayPush(DOMPurify.removed, { element: currentNode.cloneNode() });\n        currentNode.textContent = content;\n      }\n    }\n\n    /* Execute a hook if present */\n    _executeHook('afterSanitizeElements', currentNode, null);\n\n    return false;\n  };\n\n  /**\n   * _isValidAttribute\n   *\n   * @param  {string} lcTag Lowercase tag name of containing element.\n   * @param  {string} lcName Lowercase attribute name.\n   * @param  {string} value Attribute value.\n   * @return {Boolean} Returns true if `value` is valid, otherwise false.\n   */\n  // eslint-disable-next-line complexity\n  const _isValidAttribute = function (lcTag, lcName, value) {\n    /* Make sure attribute cannot clobber */\n    if (\n      SANITIZE_DOM &&\n      (lcName === 'id' || lcName === 'name') &&\n      (value in document || value in formElement)\n    ) {\n      return false;\n    }\n\n    /* Allow valid data-* attributes: At least one character after \"-\"\n        (https://html.spec.whatwg.org/multipage/dom.html#embedding-custom-non-visible-data-with-the-data-*-attributes)\n        XML-compatible (https://html.spec.whatwg.org/multipage/infrastructure.html#xml-compatible and http://www.w3.org/TR/xml/#d0e804)\n        We don't need to check the value; it's always URI safe. */\n    if (\n      ALLOW_DATA_ATTR &&\n      !FORBID_ATTR[lcName] &&\n      regExpTest(DATA_ATTR, lcName)\n    ) {\n      // This attribute is safe\n    } else if (ALLOW_ARIA_ATTR && regExpTest(ARIA_ATTR, lcName)) {\n      // This attribute is safe\n      /* Otherwise, check the name is permitted */\n    } else if (!ALLOWED_ATTR[lcName] || FORBID_ATTR[lcName]) {\n      return false;\n\n      /* Check value is safe. First, is attr inert? If so, is safe */\n    } else if (URI_SAFE_ATTRIBUTES[lcName]) {\n      // This attribute is safe\n      /* Check no script, data or unknown possibly unsafe URI\n        unless we know URI values are safe for that attribute */\n    } else if (\n      regExpTest(IS_ALLOWED_URI, stringReplace(value, ATTR_WHITESPACE, ''))\n    ) {\n      // This attribute is safe\n      /* Keep image data URIs alive if src/xlink:href is allowed */\n      /* Further prevent gadget XSS for dynamically built script tags */\n    } else if (\n      (lcName === 'src' || lcName === 'xlink:href' || lcName === 'href') &&\n      lcTag !== 'script' &&\n      stringIndexOf(value, 'data:') === 0 &&\n      DATA_URI_TAGS[lcTag]\n    ) {\n      // This attribute is safe\n      /* Allow unknown protocols: This provides support for links that\n        are handled by protocol handlers which may be unknown ahead of\n        time, e.g. fb:, spotify: */\n    } else if (\n      ALLOW_UNKNOWN_PROTOCOLS &&\n      !regExpTest(IS_SCRIPT_OR_DATA, stringReplace(value, ATTR_WHITESPACE, ''))\n    ) {\n      // This attribute is safe\n      /* Check for binary attributes */\n      // eslint-disable-next-line no-negated-condition\n    } else if (!value) {\n      // Binary attributes are safe at this point\n      /* Anything else, presume unsafe, do not add it back */\n    } else {\n      return false;\n    }\n\n    return true;\n  };\n\n  /**\n   * _sanitizeAttributes\n   *\n   * @protect attributes\n   * @protect nodeName\n   * @protect removeAttribute\n   * @protect setAttribute\n   *\n   * @param  {Node} currentNode to sanitize\n   */\n  const _sanitizeAttributes = function (currentNode) {\n    let attr;\n    let value;\n    let lcName;\n    let l;\n    /* Execute a hook if present */\n    _executeHook('beforeSanitizeAttributes', currentNode, null);\n\n    const { attributes } = currentNode;\n\n    /* Check if we have attributes; if not we might have a text node */\n    if (!attributes) {\n      return;\n    }\n\n    const hookEvent = {\n      attrName: '',\n      attrValue: '',\n      keepAttr: true,\n      allowedAttributes: ALLOWED_ATTR,\n    };\n    l = attributes.length;\n\n    /* Go backwards over all attributes; safely remove bad ones */\n    while (l--) {\n      attr = attributes[l];\n      const { name, namespaceURI } = attr;\n      value = stringTrim(attr.value);\n      lcName = transformCaseFunc(name);\n\n      /* Execute a hook if present */\n      hookEvent.attrName = lcName;\n      hookEvent.attrValue = value;\n      hookEvent.keepAttr = true;\n      hookEvent.forceKeepAttr = undefined; // Allows developers to see this is a property they can set\n      _executeHook('uponSanitizeAttribute', currentNode, hookEvent);\n      value = hookEvent.attrValue;\n      /* Did the hooks approve of the attribute? */\n      if (hookEvent.forceKeepAttr) {\n        continue;\n      }\n\n      /* Remove attribute */\n      _removeAttribute(name, currentNode);\n\n      /* Did the hooks approve of the attribute? */\n      if (!hookEvent.keepAttr) {\n        continue;\n      }\n\n      /* Work around a security issue in jQuery 3.0 */\n      if (regExpTest(/\\/>/i, value)) {\n        _removeAttribute(name, currentNode);\n        continue;\n      }\n\n      /* Sanitize attribute content to be template-safe */\n      if (SAFE_FOR_TEMPLATES) {\n        value = stringReplace(value, MUSTACHE_EXPR, ' ');\n        value = stringReplace(value, ERB_EXPR, ' ');\n      }\n\n      /* Is `value` valid for this attribute? */\n      const lcTag = transformCaseFunc(currentNode.nodeName);\n      if (!_isValidAttribute(lcTag, lcName, value)) {\n        continue;\n      }\n\n      /* Handle invalid data-* attribute set by try-catching it */\n      try {\n        if (namespaceURI) {\n          currentNode.setAttributeNS(namespaceURI, name, value);\n        } else {\n          /* Fallback to setAttribute() for browser-unrecognized namespaces e.g. \"x-schema\". */\n          currentNode.setAttribute(name, value);\n        }\n\n        arrayPop(DOMPurify.removed);\n      } catch (_) {}\n    }\n\n    /* Execute a hook if present */\n    _executeHook('afterSanitizeAttributes', currentNode, null);\n  };\n\n  /**\n   * _sanitizeShadowDOM\n   *\n   * @param  {DocumentFragment} fragment to iterate over recursively\n   */\n  const _sanitizeShadowDOM = function (fragment) {\n    let shadowNode;\n    const shadowIterator = _createIterator(fragment);\n\n    /* Execute a hook if present */\n    _executeHook('beforeSanitizeShadowDOM', fragment, null);\n\n    while ((shadowNode = shadowIterator.nextNode())) {\n      /* Execute a hook if present */\n      _executeHook('uponSanitizeShadowNode', shadowNode, null);\n\n      /* Sanitize tags and elements */\n      if (_sanitizeElements(shadowNode)) {\n        continue;\n      }\n\n      /* Deep shadow DOM detected */\n      if (shadowNode.content instanceof DocumentFragment) {\n        _sanitizeShadowDOM(shadowNode.content);\n      }\n\n      /* Check attributes, sanitize if necessary */\n      _sanitizeAttributes(shadowNode);\n    }\n\n    /* Execute a hook if present */\n    _executeHook('afterSanitizeShadowDOM', fragment, null);\n  };\n\n  /**\n   * Sanitize\n   * Public method providing core sanitation functionality\n   *\n   * @param {String|Node} dirty string or DOM node\n   * @param {Object} configuration object\n   */\n  // eslint-disable-next-line complexity\n  DOMPurify.sanitize = function (dirty, cfg) {\n    let body;\n    let importedNode;\n    let currentNode;\n    let oldNode;\n    let returnNode;\n    /* Make sure we have a string to sanitize.\n      DO NOT return early, as this will return the wrong type if\n      the user has requested a DOM object rather than a string */\n    IS_EMPTY_INPUT = !dirty;\n    if (IS_EMPTY_INPUT) {\n      dirty = '<!-->';\n    }\n\n    /* Stringify, in case dirty is an object */\n    if (typeof dirty !== 'string' && !_isNode(dirty)) {\n      // eslint-disable-next-line no-negated-condition\n      if (typeof dirty.toString !== 'function') {\n        throw typeErrorCreate('toString is not a function');\n      } else {\n        dirty = dirty.toString();\n        if (typeof dirty !== 'string') {\n          throw typeErrorCreate('dirty is not a string, aborting');\n        }\n      }\n    }\n\n    /* Check we can run. Otherwise fall back or ignore */\n    if (!DOMPurify.isSupported) {\n      if (\n        typeof window.toStaticHTML === 'object' ||\n        typeof window.toStaticHTML === 'function'\n      ) {\n        if (typeof dirty === 'string') {\n          return window.toStaticHTML(dirty);\n        }\n\n        if (_isNode(dirty)) {\n          return window.toStaticHTML(dirty.outerHTML);\n        }\n      }\n\n      return dirty;\n    }\n\n    /* Assign config vars */\n    if (!SET_CONFIG) {\n      _parseConfig(cfg);\n    }\n\n    /* Clean up removed elements */\n    DOMPurify.removed = [];\n\n    /* Check if dirty is correctly typed for IN_PLACE */\n    if (typeof dirty === 'string') {\n      IN_PLACE = false;\n    }\n\n    if (IN_PLACE) {\n      /* No special handling necessary for in-place sanitization */\n    } else if (dirty instanceof Node) {\n      /* If dirty is a DOM element, append to an empty document to avoid\n         elements being stripped by the parser */\n      body = _initDocument('<!---->');\n      importedNode = body.ownerDocument.importNode(dirty, true);\n      if (importedNode.nodeType === 1 && importedNode.nodeName === 'BODY') {\n        /* Node is already a body, use as is */\n        body = importedNode;\n      } else if (importedNode.nodeName === 'HTML') {\n        body = importedNode;\n      } else {\n        // eslint-disable-next-line unicorn/prefer-dom-node-append\n        body.appendChild(importedNode);\n      }\n    } else {\n      /* Exit directly if we have nothing to do */\n      if (\n        !RETURN_DOM &&\n        !SAFE_FOR_TEMPLATES &&\n        !WHOLE_DOCUMENT &&\n        // eslint-disable-next-line unicorn/prefer-includes\n        dirty.indexOf('<') === -1\n      ) {\n        return trustedTypesPolicy && RETURN_TRUSTED_TYPE\n          ? trustedTypesPolicy.createHTML(dirty)\n          : dirty;\n      }\n\n      /* Initialize the document to work on */\n      body = _initDocument(dirty);\n\n      /* Check we have a DOM node from the data */\n      if (!body) {\n        return RETURN_DOM ? null : emptyHTML;\n      }\n    }\n\n    /* Remove first element node (ours) if FORCE_BODY is set */\n    if (body && FORCE_BODY) {\n      _forceRemove(body.firstChild);\n    }\n\n    /* Get node iterator */\n    const nodeIterator = _createIterator(IN_PLACE ? dirty : body);\n\n    /* Now start iterating over the created document */\n    while ((currentNode = nodeIterator.nextNode())) {\n      /* Fix IE's strange behavior with manipulated textNodes #89 */\n      if (currentNode.nodeType === 3 && currentNode === oldNode) {\n        continue;\n      }\n\n      /* Sanitize tags and elements */\n      if (_sanitizeElements(currentNode)) {\n        continue;\n      }\n\n      /* Shadow DOM detected, sanitize it */\n      if (currentNode.content instanceof DocumentFragment) {\n        _sanitizeShadowDOM(currentNode.content);\n      }\n\n      /* Check attributes, sanitize if necessary */\n      _sanitizeAttributes(currentNode);\n\n      oldNode = currentNode;\n    }\n\n    oldNode = null;\n\n    /* If we sanitized `dirty` in-place, return it. */\n    if (IN_PLACE) {\n      return dirty;\n    }\n\n    /* Return sanitized string or DOM */\n    if (RETURN_DOM) {\n      if (RETURN_DOM_FRAGMENT) {\n        returnNode = createDocumentFragment.call(body.ownerDocument);\n\n        while (body.firstChild) {\n          // eslint-disable-next-line unicorn/prefer-dom-node-append\n          returnNode.appendChild(body.firstChild);\n        }\n      } else {\n        returnNode = body;\n      }\n\n      if (RETURN_DOM_IMPORT) {\n        /*\n          AdoptNode() is not used because internal state is not reset\n          (e.g. the past names map of a HTMLFormElement), this is safe\n          in theory but we would rather not risk another attack vector.\n          The state that is cloned by importNode() is explicitly defined\n          by the specs.\n        */\n        returnNode = importNode.call(originalDocument, returnNode, true);\n      }\n\n      return returnNode;\n    }\n\n    let serializedHTML = WHOLE_DOCUMENT ? body.outerHTML : body.innerHTML;\n\n    /* Sanitize final string template-safe */\n    if (SAFE_FOR_TEMPLATES) {\n      serializedHTML = stringReplace(serializedHTML, MUSTACHE_EXPR, ' ');\n      serializedHTML = stringReplace(serializedHTML, ERB_EXPR, ' ');\n    }\n\n    return trustedTypesPolicy && RETURN_TRUSTED_TYPE\n      ? trustedTypesPolicy.createHTML(serializedHTML)\n      : serializedHTML;\n  };\n\n  /**\n   * Public method to set the configuration once\n   * setConfig\n   *\n   * @param {Object} cfg configuration object\n   */\n  DOMPurify.setConfig = function (cfg) {\n    _parseConfig(cfg);\n    SET_CONFIG = true;\n  };\n\n  /**\n   * Public method to remove the configuration\n   * clearConfig\n   *\n   */\n  DOMPurify.clearConfig = function () {\n    CONFIG = null;\n    SET_CONFIG = false;\n  };\n\n  /**\n   * Public method to check if an attribute value is valid.\n   * Uses last set config, if any. Otherwise, uses config defaults.\n   * isValidAttribute\n   *\n   * @param  {string} tag Tag name of containing element.\n   * @param  {string} attr Attribute name.\n   * @param  {string} value Attribute value.\n   * @return {Boolean} Returns true if `value` is valid. Otherwise, returns false.\n   */\n  DOMPurify.isValidAttribute = function (tag, attr, value) {\n    /* Initialize shared config vars if necessary. */\n    if (!CONFIG) {\n      _parseConfig({});\n    }\n\n    const lcTag = transformCaseFunc(tag);\n    const lcName = transformCaseFunc(attr);\n    return _isValidAttribute(lcTag, lcName, value);\n  };\n\n  /**\n   * AddHook\n   * Public method to add DOMPurify hooks\n   *\n   * @param {String} entryPoint entry point for the hook to add\n   * @param {Function} hookFunction function to execute\n   */\n  DOMPurify.addHook = function (entryPoint, hookFunction) {\n    if (typeof hookFunction !== 'function') {\n      return;\n    }\n\n    hooks[entryPoint] = hooks[entryPoint] || [];\n    arrayPush(hooks[entryPoint], hookFunction);\n  };\n\n  /**\n   * RemoveHook\n   * Public method to remove a DOMPurify hook at a given entryPoint\n   * (pops it from the stack of hooks if more are present)\n   *\n   * @param {String} entryPoint entry point for the hook to remove\n   */\n  DOMPurify.removeHook = function (entryPoint) {\n    if (hooks[entryPoint]) {\n      arrayPop(hooks[entryPoint]);\n    }\n  };\n\n  /**\n   * RemoveHooks\n   * Public method to remove all DOMPurify hooks at a given entryPoint\n   *\n   * @param  {String} entryPoint entry point for the hooks to remove\n   */\n  DOMPurify.removeHooks = function (entryPoint) {\n    if (hooks[entryPoint]) {\n      hooks[entryPoint] = [];\n    }\n  };\n\n  /**\n   * RemoveAllHooks\n   * Public method to remove all DOMPurify hooks\n   *\n   */\n  DOMPurify.removeAllHooks = function () {\n    hooks = {};\n  };\n\n  return DOMPurify;\n}\n\nexport default createDOMPurify();\n","const {\n  hasOwnProperty,\n  setPrototypeOf,\n  isFrozen,\n  getPrototypeOf,\n  getOwnPropertyDescriptor,\n} = Object;\n\nlet { freeze, seal, create } = Object; // eslint-disable-line import/no-mutable-exports\nlet { apply, construct } = typeof Reflect !== 'undefined' && Reflect;\n\nif (!apply) {\n  apply = function (fun, thisValue, args) {\n    return fun.apply(thisValue, args);\n  };\n}\n\nif (!freeze) {\n  freeze = function (x) {\n    return x;\n  };\n}\n\nif (!seal) {\n  seal = function (x) {\n    return x;\n  };\n}\n\nif (!construct) {\n  construct = function (Func, args) {\n    return new Func(...args);\n  };\n}\n\nconst arrayForEach = unapply(Array.prototype.forEach);\nconst arrayIndexOf = unapply(Array.prototype.indexOf);\nconst arrayPop = unapply(Array.prototype.pop);\nconst arrayPush = unapply(Array.prototype.push);\nconst arraySlice = unapply(Array.prototype.slice);\n\nconst stringToLowerCase = unapply(String.prototype.toLowerCase);\nconst stringMatch = unapply(String.prototype.match);\nconst stringReplace = unapply(String.prototype.replace);\nconst stringIndexOf = unapply(String.prototype.indexOf);\nconst stringTrim = unapply(String.prototype.trim);\n\nconst regExpTest = unapply(RegExp.prototype.test);\n\nconst typeErrorCreate = unconstruct(TypeError);\n\nexport function unapply(func) {\n  return (thisArg, ...args) => apply(func, thisArg, args);\n}\n\nexport function unconstruct(func) {\n  return (...args) => construct(func, args);\n}\n\n/* Add properties to a lookup table */\nexport function addToSet(set, array) {\n  if (setPrototypeOf) {\n    // Make 'in' and truthy checks like Boolean(set.constructor)\n    // independent of any properties defined on Object.prototype.\n    // Prevent prototype setters from intercepting set as a this value.\n    setPrototypeOf(set, null);\n  }\n\n  let l = array.length;\n  while (l--) {\n    let element = array[l];\n    if (typeof element === 'string') {\n      const lcElement = stringToLowerCase(element);\n      if (lcElement !== element) {\n        // Config presets (e.g. tags.js, attrs.js) are immutable.\n        if (!isFrozen(array)) {\n          array[l] = lcElement;\n        }\n\n        element = lcElement;\n      }\n    }\n\n    set[element] = true;\n  }\n\n  return set;\n}\n\n/* Shallow clone an object */\nexport function clone(object) {\n  const newObject = create(null);\n\n  let property;\n  for (property in object) {\n    if (apply(hasOwnProperty, object, [property])) {\n      newObject[property] = object[property];\n    }\n  }\n\n  return newObject;\n}\n\n/* IE10 doesn't support __lookupGetter__ so lets'\n * simulate it. It also automatically checks\n * if the prop is function or getter and behaves\n * accordingly. */\nfunction lookupGetter(object, prop) {\n  while (object !== null) {\n    const desc = getOwnPropertyDescriptor(object, prop);\n    if (desc) {\n      if (desc.get) {\n        return unapply(desc.get);\n      }\n\n      if (typeof desc.value === 'function') {\n        return unapply(desc.value);\n      }\n    }\n\n    object = getPrototypeOf(object);\n  }\n\n  function fallbackValue(element) {\n    console.warn('fallback value for', element);\n    return null;\n  }\n\n  return fallbackValue;\n}\n\nexport {\n  // Array\n  arrayForEach,\n  arrayIndexOf,\n  arrayPop,\n  arrayPush,\n  arraySlice,\n  // Object\n  freeze,\n  getPrototypeOf,\n  getOwnPropertyDescriptor,\n  hasOwnProperty,\n  isFrozen,\n  setPrototypeOf,\n  seal,\n  // RegExp\n  regExpTest,\n  // String\n  stringIndexOf,\n  stringMatch,\n  stringReplace,\n  stringToLowerCase,\n  stringTrim,\n  // Errors\n  typeErrorCreate,\n  // Other\n  lookupGetter,\n};\n","import { freeze } from './utils.js';\n\nexport const html = freeze([\n  'a',\n  'abbr',\n  'acronym',\n  'address',\n  'area',\n  'article',\n  'aside',\n  'audio',\n  'b',\n  'bdi',\n  'bdo',\n  'big',\n  'blink',\n  'blockquote',\n  'body',\n  'br',\n  'button',\n  'canvas',\n  'caption',\n  'center',\n  'cite',\n  'code',\n  'col',\n  'colgroup',\n  'content',\n  'data',\n  'datalist',\n  'dd',\n  'decorator',\n  'del',\n  'details',\n  'dfn',\n  'dialog',\n  'dir',\n  'div',\n  'dl',\n  'dt',\n  'element',\n  'em',\n  'fieldset',\n  'figcaption',\n  'figure',\n  'font',\n  'footer',\n  'form',\n  'h1',\n  'h2',\n  'h3',\n  'h4',\n  'h5',\n  'h6',\n  'head',\n  'header',\n  'hgroup',\n  'hr',\n  'html',\n  'i',\n  'img',\n  'input',\n  'ins',\n  'kbd',\n  'label',\n  'legend',\n  'li',\n  'main',\n  'map',\n  'mark',\n  'marquee',\n  'menu',\n  'menuitem',\n  'meter',\n  'nav',\n  'nobr',\n  'ol',\n  'optgroup',\n  'option',\n  'output',\n  'p',\n  'picture',\n  'pre',\n  'progress',\n  'q',\n  'rp',\n  'rt',\n  'ruby',\n  's',\n  'samp',\n  'section',\n  'select',\n  'shadow',\n  'small',\n  'source',\n  'spacer',\n  'span',\n  'strike',\n  'strong',\n  'style',\n  'sub',\n  'summary',\n  'sup',\n  'table',\n  'tbody',\n  'td',\n  'template',\n  'textarea',\n  'tfoot',\n  'th',\n  'thead',\n  'time',\n  'tr',\n  'track',\n  'tt',\n  'u',\n  'ul',\n  'var',\n  'video',\n  'wbr',\n]);\n\n// SVG\nexport const svg = freeze([\n  'svg',\n  'a',\n  'altglyph',\n  'altglyphdef',\n  'altglyphitem',\n  'animatecolor',\n  'animatemotion',\n  'animatetransform',\n  'circle',\n  'clippath',\n  'defs',\n  'desc',\n  'ellipse',\n  'filter',\n  'font',\n  'g',\n  'glyph',\n  'glyphref',\n  'hkern',\n  'image',\n  'line',\n  'lineargradient',\n  'marker',\n  'mask',\n  'metadata',\n  'mpath',\n  'path',\n  'pattern',\n  'polygon',\n  'polyline',\n  'radialgradient',\n  'rect',\n  'stop',\n  'style',\n  'switch',\n  'symbol',\n  'text',\n  'textpath',\n  'title',\n  'tref',\n  'tspan',\n  'view',\n  'vkern',\n]);\n\nexport const svgFilters = freeze([\n  'feBlend',\n  'feColorMatrix',\n  'feComponentTransfer',\n  'feComposite',\n  'feConvolveMatrix',\n  'feDiffuseLighting',\n  'feDisplacementMap',\n  'feDistantLight',\n  'feFlood',\n  'feFuncA',\n  'feFuncB',\n  'feFuncG',\n  'feFuncR',\n  'feGaussianBlur',\n  'feMerge',\n  'feMergeNode',\n  'feMorphology',\n  'feOffset',\n  'fePointLight',\n  'feSpecularLighting',\n  'feSpotLight',\n  'feTile',\n  'feTurbulence',\n]);\n\n// List of SVG elements that are disallowed by default.\n// We still need to know them so that we can do namespace\n// checks properly in case one wants to add them to\n// allow-list.\nexport const svgDisallowed = freeze([\n  'animate',\n  'color-profile',\n  'cursor',\n  'discard',\n  'fedropshadow',\n  'feimage',\n  'font-face',\n  'font-face-format',\n  'font-face-name',\n  'font-face-src',\n  'font-face-uri',\n  'foreignobject',\n  'hatch',\n  'hatchpath',\n  'mesh',\n  'meshgradient',\n  'meshpatch',\n  'meshrow',\n  'missing-glyph',\n  'script',\n  'set',\n  'solidcolor',\n  'unknown',\n  'use',\n]);\n\nexport const mathMl = freeze([\n  'math',\n  'menclose',\n  'merror',\n  'mfenced',\n  'mfrac',\n  'mglyph',\n  'mi',\n  'mlabeledtr',\n  'mmultiscripts',\n  'mn',\n  'mo',\n  'mover',\n  'mpadded',\n  'mphantom',\n  'mroot',\n  'mrow',\n  'ms',\n  'mspace',\n  'msqrt',\n  'mstyle',\n  'msub',\n  'msup',\n  'msubsup',\n  'mtable',\n  'mtd',\n  'mtext',\n  'mtr',\n  'munder',\n  'munderover',\n]);\n\n// Similarly to SVG, we want to know all MathML elements,\n// even those that we disallow by default.\nexport const mathMlDisallowed = freeze([\n  'maction',\n  'maligngroup',\n  'malignmark',\n  'mlongdiv',\n  'mscarries',\n  'mscarry',\n  'msgroup',\n  'mstack',\n  'msline',\n  'msrow',\n  'semantics',\n  'annotation',\n  'annotation-xml',\n  'mprescripts',\n  'none',\n]);\n\nexport const text = freeze(['#text']);\n","import { freeze } from './utils.js';\n\nexport const html = freeze([\n  'accept',\n  'action',\n  'align',\n  'alt',\n  'autocapitalize',\n  'autocomplete',\n  'autopictureinpicture',\n  'autoplay',\n  'background',\n  'bgcolor',\n  'border',\n  'capture',\n  'cellpadding',\n  'cellspacing',\n  'checked',\n  'cite',\n  'class',\n  'clear',\n  'color',\n  'cols',\n  'colspan',\n  'controls',\n  'controlslist',\n  'coords',\n  'crossorigin',\n  'datetime',\n  'decoding',\n  'default',\n  'dir',\n  'disabled',\n  'disablepictureinpicture',\n  'disableremoteplayback',\n  'download',\n  'draggable',\n  'enctype',\n  'enterkeyhint',\n  'face',\n  'for',\n  'headers',\n  'height',\n  'hidden',\n  'high',\n  'href',\n  'hreflang',\n  'id',\n  'inputmode',\n  'integrity',\n  'ismap',\n  'kind',\n  'label',\n  'lang',\n  'list',\n  'loading',\n  'loop',\n  'low',\n  'max',\n  'maxlength',\n  'media',\n  'method',\n  'min',\n  'minlength',\n  'multiple',\n  'muted',\n  'name',\n  'noshade',\n  'novalidate',\n  'nowrap',\n  'open',\n  'optimum',\n  'pattern',\n  'placeholder',\n  'playsinline',\n  'poster',\n  'preload',\n  'pubdate',\n  'radiogroup',\n  'readonly',\n  'rel',\n  'required',\n  'rev',\n  'reversed',\n  'role',\n  'rows',\n  'rowspan',\n  'spellcheck',\n  'scope',\n  'selected',\n  'shape',\n  'size',\n  'sizes',\n  'span',\n  'srclang',\n  'start',\n  'src',\n  'srcset',\n  'step',\n  'style',\n  'summary',\n  'tabindex',\n  'title',\n  'translate',\n  'type',\n  'usemap',\n  'valign',\n  'value',\n  'width',\n  'xmlns',\n  'slot',\n]);\n\nexport const svg = freeze([\n  'accent-height',\n  'accumulate',\n  'additive',\n  'alignment-baseline',\n  'ascent',\n  'attributename',\n  'attributetype',\n  'azimuth',\n  'basefrequency',\n  'baseline-shift',\n  'begin',\n  'bias',\n  'by',\n  'class',\n  'clip',\n  'clippathunits',\n  'clip-path',\n  'clip-rule',\n  'color',\n  'color-interpolation',\n  'color-interpolation-filters',\n  'color-profile',\n  'color-rendering',\n  'cx',\n  'cy',\n  'd',\n  'dx',\n  'dy',\n  'diffuseconstant',\n  'direction',\n  'display',\n  'divisor',\n  'dur',\n  'edgemode',\n  'elevation',\n  'end',\n  'fill',\n  'fill-opacity',\n  'fill-rule',\n  'filter',\n  'filterunits',\n  'flood-color',\n  'flood-opacity',\n  'font-family',\n  'font-size',\n  'font-size-adjust',\n  'font-stretch',\n  'font-style',\n  'font-variant',\n  'font-weight',\n  'fx',\n  'fy',\n  'g1',\n  'g2',\n  'glyph-name',\n  'glyphref',\n  'gradientunits',\n  'gradienttransform',\n  'height',\n  'href',\n  'id',\n  'image-rendering',\n  'in',\n  'in2',\n  'k',\n  'k1',\n  'k2',\n  'k3',\n  'k4',\n  'kerning',\n  'keypoints',\n  'keysplines',\n  'keytimes',\n  'lang',\n  'lengthadjust',\n  'letter-spacing',\n  'kernelmatrix',\n  'kernelunitlength',\n  'lighting-color',\n  'local',\n  'marker-end',\n  'marker-mid',\n  'marker-start',\n  'markerheight',\n  'markerunits',\n  'markerwidth',\n  'maskcontentunits',\n  'maskunits',\n  'max',\n  'mask',\n  'media',\n  'method',\n  'mode',\n  'min',\n  'name',\n  'numoctaves',\n  'offset',\n  'operator',\n  'opacity',\n  'order',\n  'orient',\n  'orientation',\n  'origin',\n  'overflow',\n  'paint-order',\n  'path',\n  'pathlength',\n  'patterncontentunits',\n  'patterntransform',\n  'patternunits',\n  'points',\n  'preservealpha',\n  'preserveaspectratio',\n  'primitiveunits',\n  'r',\n  'rx',\n  'ry',\n  'radius',\n  'refx',\n  'refy',\n  'repeatcount',\n  'repeatdur',\n  'restart',\n  'result',\n  'rotate',\n  'scale',\n  'seed',\n  'shape-rendering',\n  'specularconstant',\n  'specularexponent',\n  'spreadmethod',\n  'startoffset',\n  'stddeviation',\n  'stitchtiles',\n  'stop-color',\n  'stop-opacity',\n  'stroke-dasharray',\n  'stroke-dashoffset',\n  'stroke-linecap',\n  'stroke-linejoin',\n  'stroke-miterlimit',\n  'stroke-opacity',\n  'stroke',\n  'stroke-width',\n  'style',\n  'surfacescale',\n  'systemlanguage',\n  'tabindex',\n  'targetx',\n  'targety',\n  'transform',\n  'text-anchor',\n  'text-decoration',\n  'text-rendering',\n  'textlength',\n  'type',\n  'u1',\n  'u2',\n  'unicode',\n  'values',\n  'viewbox',\n  'visibility',\n  'version',\n  'vert-adv-y',\n  'vert-origin-x',\n  'vert-origin-y',\n  'width',\n  'word-spacing',\n  'wrap',\n  'writing-mode',\n  'xchannelselector',\n  'ychannelselector',\n  'x',\n  'x1',\n  'x2',\n  'xmlns',\n  'y',\n  'y1',\n  'y2',\n  'z',\n  'zoomandpan',\n]);\n\nexport const mathMl = freeze([\n  'accent',\n  'accentunder',\n  'align',\n  'bevelled',\n  'close',\n  'columnsalign',\n  'columnlines',\n  'columnspan',\n  'denomalign',\n  'depth',\n  'dir',\n  'display',\n  'displaystyle',\n  'encoding',\n  'fence',\n  'frame',\n  'height',\n  'href',\n  'id',\n  'largeop',\n  'length',\n  'linethickness',\n  'lspace',\n  'lquote',\n  'mathbackground',\n  'mathcolor',\n  'mathsize',\n  'mathvariant',\n  'maxsize',\n  'minsize',\n  'movablelimits',\n  'notation',\n  'numalign',\n  'open',\n  'rowalign',\n  'rowlines',\n  'rowspacing',\n  'rowspan',\n  'rspace',\n  'rquote',\n  'scriptlevel',\n  'scriptminsize',\n  'scriptsizemultiplier',\n  'selection',\n  'separator',\n  'separators',\n  'stretchy',\n  'subscriptshift',\n  'supscriptshift',\n  'symmetric',\n  'voffset',\n  'width',\n  'xmlns',\n]);\n\nexport const xml = freeze([\n  'xlink:href',\n  'xml:id',\n  'xlink:title',\n  'xml:space',\n  'xmlns:xlink',\n]);\n","import { seal } from './utils.js';\n\n// eslint-disable-next-line unicorn/better-regex\nexport const MUSTACHE_EXPR = seal(/\\{\\{[\\s\\S]*|[\\s\\S]*\\}\\}/gm); // Specify template detection regex for SAFE_FOR_TEMPLATES mode\nexport const ERB_EXPR = seal(/<%[\\s\\S]*|[\\s\\S]*%>/gm);\nexport const DATA_ATTR = seal(/^data-[\\-\\w.\\u00B7-\\uFFFF]/); // eslint-disable-line no-useless-escape\nexport const ARIA_ATTR = seal(/^aria-[\\-\\w]+$/); // eslint-disable-line no-useless-escape\nexport const IS_ALLOWED_URI = seal(\n  /^(?:(?:(?:f|ht)tps?|mailto|tel|callto|cid|xmpp):|[^a-z]|[a-z+.\\-]+(?:[^a-z+.\\-:]|$))/i // eslint-disable-line no-useless-escape\n);\nexport const IS_SCRIPT_OR_DATA = seal(/^(?:\\w+script|data):/i);\nexport const ATTR_WHITESPACE = seal(\n  /[\\u0000-\\u0020\\u00A0\\u1680\\u180E\\u2000-\\u2029\\u205F\\u3000]/g // eslint-disable-line no-control-regex\n);\n","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things.  But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals.  It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n    throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n    throw new Error('clearTimeout has not been defined');\n}\n(function () {\n    try {\n        if (typeof setTimeout === 'function') {\n            cachedSetTimeout = setTimeout;\n        } else {\n            cachedSetTimeout = defaultSetTimout;\n        }\n    } catch (e) {\n        cachedSetTimeout = defaultSetTimout;\n    }\n    try {\n        if (typeof clearTimeout === 'function') {\n            cachedClearTimeout = clearTimeout;\n        } else {\n            cachedClearTimeout = defaultClearTimeout;\n        }\n    } catch (e) {\n        cachedClearTimeout = defaultClearTimeout;\n    }\n} ())\nfunction runTimeout(fun) {\n    if (cachedSetTimeout === setTimeout) {\n        //normal enviroments in sane situations\n        return setTimeout(fun, 0);\n    }\n    // if setTimeout wasn't available but was latter defined\n    if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n        cachedSetTimeout = setTimeout;\n        return setTimeout(fun, 0);\n    }\n    try {\n        // when when somebody has screwed with setTimeout but no I.E. maddness\n        return cachedSetTimeout(fun, 0);\n    } catch(e){\n        try {\n            // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n            return cachedSetTimeout.call(null, fun, 0);\n        } catch(e){\n            // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n            return cachedSetTimeout.call(this, fun, 0);\n        }\n    }\n\n\n}\nfunction runClearTimeout(marker) {\n    if (cachedClearTimeout === clearTimeout) {\n        //normal enviroments in sane situations\n        return clearTimeout(marker);\n    }\n    // if clearTimeout wasn't available but was latter defined\n    if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n        cachedClearTimeout = clearTimeout;\n        return clearTimeout(marker);\n    }\n    try {\n        // when when somebody has screwed with setTimeout but no I.E. maddness\n        return cachedClearTimeout(marker);\n    } catch (e){\n        try {\n            // When we are in I.E. but the script has been evaled so I.E. doesn't  trust the global object when called normally\n            return cachedClearTimeout.call(null, marker);\n        } catch (e){\n            // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n            // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n            return cachedClearTimeout.call(this, marker);\n        }\n    }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n    if (!draining || !currentQueue) {\n        return;\n    }\n    draining = false;\n    if (currentQueue.length) {\n        queue = currentQueue.concat(queue);\n    } else {\n        queueIndex = -1;\n    }\n    if (queue.length) {\n        drainQueue();\n    }\n}\n\nfunction drainQueue() {\n    if (draining) {\n        return;\n    }\n    var timeout = runTimeout(cleanUpNextTick);\n    draining = true;\n\n    var len = queue.length;\n    while(len) {\n        currentQueue = queue;\n        queue = [];\n        while (++queueIndex < len) {\n            if (currentQueue) {\n                currentQueue[queueIndex].run();\n            }\n        }\n        queueIndex = -1;\n        len = queue.length;\n    }\n    currentQueue = null;\n    draining = false;\n    runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n    var args = new Array(arguments.length - 1);\n    if (arguments.length > 1) {\n        for (var i = 1; i < arguments.length; i++) {\n            args[i - 1] = arguments[i];\n        }\n    }\n    queue.push(new Item(fun, args));\n    if (queue.length === 1 && !draining) {\n        runTimeout(drainQueue);\n    }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n    this.fun = fun;\n    this.array = array;\n}\nItem.prototype.run = function () {\n    this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n    throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n    throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","// Generated by purs bundle 0.14.7\nvar PS = {};\n(function(exports) {\n  /* global XMLHttpRequest */\n  /* global process */\n  \"use strict\";\n\n  exports._ajax = function () {\n    var platformSpecific = { };\n    if (typeof module !== \"undefined\" && module.require && !(typeof process !== \"undefined\" && process.versions[\"electron\"])) {\n      // We are on node.js\n      platformSpecific.newXHR = function () {\n        var XHR = module.require(\"xhr2\");\n        return new XHR();\n      };\n\n      platformSpecific.fixupUrl = function (url, xhr) {\n        if (xhr.nodejsBaseUrl === null) {\n          var urllib = module.require(\"url\");\n          var u = urllib.parse(url);\n          u.protocol = u.protocol || \"http:\";\n          u.hostname = u.hostname || \"localhost\";\n          return urllib.format(u);\n        } else {\n          return url || \"/\";\n        }\n      };\n\n      platformSpecific.getResponse = function (xhr) {\n        return xhr.response;\n      };\n    } else {\n      // We are in the browser\n      platformSpecific.newXHR = function () {\n        return new XMLHttpRequest();\n      };\n\n      platformSpecific.fixupUrl = function (url) {\n        return url || \"/\";\n      };\n\n      platformSpecific.getResponse = function (xhr) {\n        return xhr.response;\n      };\n    }\n\n    return function (timeoutErrorMessageIdent, requestFailedMessageIdent, mkHeader, options) {\n      return function (errback, callback) {\n        var xhr = platformSpecific.newXHR();\n        var fixedUrl = platformSpecific.fixupUrl(options.url, xhr);\n        xhr.open(options.method || \"GET\", fixedUrl, true, options.username, options.password);\n        if (options.headers) {\n          try {\n            // eslint-disable-next-line no-eq-null,eqeqeq\n            for (var i = 0, header; (header = options.headers[i]) != null; i++) {\n              xhr.setRequestHeader(header.field, header.value);\n            }\n          } catch (e) {\n            errback(e);\n          }\n        }\n        var onerror = function (msgIdent) {\n          return function () {\n            errback(new Error(msgIdent));\n          };\n        };\n        xhr.onerror = onerror(requestFailedMessageIdent);\n        xhr.ontimeout = onerror(timeoutErrorMessageIdent);\n        xhr.onload = function () {\n          callback({\n            status: xhr.status,\n            statusText: xhr.statusText,\n            headers: xhr.getAllResponseHeaders().split(\"\\r\\n\")\n              .filter(function (header) {\n                return header.length > 0;\n              })\n              .map(function (header) {\n                var i = header.indexOf(\":\");\n                return mkHeader(header.substring(0, i))(header.substring(i + 2));\n              }),\n            body: platformSpecific.getResponse(xhr)\n          });\n        };\n        xhr.responseType = options.responseType;\n        xhr.withCredentials = options.withCredentials;\n        xhr.timeout = options.timeout;\n        xhr.send(options.content);\n\n        return function (error, cancelErrback, cancelCallback) {\n          try {\n            xhr.abort();\n          } catch (e) {\n            return cancelErrback(e);\n          }\n          return cancelCallback();\n        };\n      };\n    };\n  }();\n})(PS[\"Affjax\"] = PS[\"Affjax\"] || {});\n(function($PS) {\n  // Generated by purs version 0.14.7\n  \"use strict\";\n  $PS[\"Control.Semigroupoid\"] = $PS[\"Control.Semigroupoid\"] || {};\n  var exports = $PS[\"Control.Semigroupoid\"];\n  var semigroupoidFn = {\n      compose: function (f) {\n          return function (g) {\n              return function (x) {\n                  return f(g(x));\n              };\n          };\n      }\n  };\n  var compose = function (dict) {\n      return dict.compose;\n  };\n  exports[\"compose\"] = compose;\n  exports[\"semigroupoidFn\"] = semigroupoidFn;\n})(PS);\n(function($PS) {\n  // Generated by purs version 0.14.7\n  \"use strict\";\n  $PS[\"Control.Category\"] = $PS[\"Control.Category\"] || {};\n  var exports = $PS[\"Control.Category\"];\n  var Control_Semigroupoid = $PS[\"Control.Semigroupoid\"];                \n  var identity = function (dict) {\n      return dict.identity;\n  };\n  var categoryFn = {\n      identity: function (x) {\n          return x;\n      },\n      Semigroupoid0: function () {\n          return Control_Semigroupoid.semigroupoidFn;\n      }\n  };\n  exports[\"identity\"] = identity;\n  exports[\"categoryFn\"] = categoryFn;\n})(PS);\n(function($PS) {\n  // Generated by purs version 0.14.7\n  \"use strict\";\n  $PS[\"Data.Function\"] = $PS[\"Data.Function\"] || {};\n  var exports = $PS[\"Data.Function\"];                    \n  var on = function (f) {\n      return function (g) {\n          return function (x) {\n              return function (y) {\n                  return f(g(x))(g(y));\n              };\n          };\n      };\n  };\n  var flip = function (f) {\n      return function (b) {\n          return function (a) {\n              return f(a)(b);\n          };\n      };\n  };\n  var $$const = function (a) {\n      return function (v) {\n          return a;\n      };\n  };\n  var applyFlipped = function (x) {\n      return function (f) {\n          return f(x);\n      };\n  };\n  exports[\"flip\"] = flip;\n  exports[\"const\"] = $$const;\n  exports[\"applyFlipped\"] = applyFlipped;\n  exports[\"on\"] = on;\n})(PS);\n(function(exports) {\n  \"use strict\";\n\n  exports.arrayMap = function (f) {\n    return function (arr) {\n      var l = arr.length;\n      var result = new Array(l);\n      for (var i = 0; i < l; i++) {\n        result[i] = f(arr[i]);\n      }\n      return result;\n    };\n  };\n})(PS[\"Data.Functor\"] = PS[\"Data.Functor\"] || {});\n(function(exports) {\n  \"use strict\";\n\n  exports.unit = {};\n})(PS[\"Data.Unit\"] = PS[\"Data.Unit\"] || {});\n(function($PS) {\n  // Generated by purs version 0.14.7\n  \"use strict\";\n  $PS[\"Data.Unit\"] = $PS[\"Data.Unit\"] || {};\n  var exports = $PS[\"Data.Unit\"];\n  var $foreign = $PS[\"Data.Unit\"];\n  exports[\"unit\"] = $foreign.unit;\n})(PS);\n(function($PS) {\n  // Generated by purs version 0.14.7\n  \"use strict\";\n  $PS[\"Data.Functor\"] = $PS[\"Data.Functor\"] || {};\n  var exports = $PS[\"Data.Functor\"];\n  var $foreign = $PS[\"Data.Functor\"];\n  var Data_Function = $PS[\"Data.Function\"];\n  var Data_Unit = $PS[\"Data.Unit\"];                  \n  var map = function (dict) {\n      return dict.map;\n  };\n  var mapFlipped = function (dictFunctor) {\n      return function (fa) {\n          return function (f) {\n              return map(dictFunctor)(f)(fa);\n          };\n      };\n  };\n  var $$void = function (dictFunctor) {\n      return map(dictFunctor)(Data_Function[\"const\"](Data_Unit.unit));\n  };\n  var voidLeft = function (dictFunctor) {\n      return function (f) {\n          return function (x) {\n              return map(dictFunctor)(Data_Function[\"const\"](x))(f);\n          };\n      };\n  };\n  var functorArray = {\n      map: $foreign.arrayMap\n  };\n  exports[\"map\"] = map;\n  exports[\"mapFlipped\"] = mapFlipped;\n  exports[\"void\"] = $$void;\n  exports[\"voidLeft\"] = voidLeft;\n  exports[\"functorArray\"] = functorArray;\n})(PS);\n(function($PS) {\n  // Generated by purs version 0.14.7\n  \"use strict\";\n  $PS[\"Data.Maybe\"] = $PS[\"Data.Maybe\"] || {};\n  var exports = $PS[\"Data.Maybe\"];\n  var Control_Category = $PS[\"Control.Category\"];\n  var Data_Function = $PS[\"Data.Function\"];\n  var Data_Functor = $PS[\"Data.Functor\"];          \n  var Nothing = (function () {\n      function Nothing() {\n\n      };\n      Nothing.value = new Nothing();\n      return Nothing;\n  })();\n  var Just = (function () {\n      function Just(value0) {\n          this.value0 = value0;\n      };\n      Just.create = function (value0) {\n          return new Just(value0);\n      };\n      return Just;\n  })();\n  var maybe = function (v) {\n      return function (v1) {\n          return function (v2) {\n              if (v2 instanceof Nothing) {\n                  return v;\n              };\n              if (v2 instanceof Just) {\n                  return v1(v2.value0);\n              };\n              throw new Error(\"Failed pattern match at Data.Maybe (line 230, column 1 - line 230, column 51): \" + [ v.constructor.name, v1.constructor.name, v2.constructor.name ]);\n          };\n      };\n  };\n  var isNothing = maybe(true)(Data_Function[\"const\"](false));\n  var isJust = maybe(false)(Data_Function[\"const\"](true));\n  var functorMaybe = {\n      map: function (v) {\n          return function (v1) {\n              if (v1 instanceof Just) {\n                  return new Just(v(v1.value0));\n              };\n              return Nothing.value;\n          };\n      }\n  };\n  var fromMaybe = function (a) {\n      return maybe(a)(Control_Category.identity(Control_Category.categoryFn));\n  };\n  var fromJust = function () {\n      return function (v) {\n          if (v instanceof Just) {\n              return v.value0;\n          };\n          throw new Error(\"Failed pattern match at Data.Maybe (line 281, column 1 - line 281, column 46): \" + [ v.constructor.name ]);\n      };\n  };\n  var applyMaybe = {\n      apply: function (v) {\n          return function (v1) {\n              if (v instanceof Just) {\n                  return Data_Functor.map(functorMaybe)(v.value0)(v1);\n              };\n              if (v instanceof Nothing) {\n                  return Nothing.value;\n              };\n              throw new Error(\"Failed pattern match at Data.Maybe (line 68, column 1 - line 70, column 30): \" + [ v.constructor.name, v1.constructor.name ]);\n          };\n      },\n      Functor0: function () {\n          return functorMaybe;\n      }\n  };\n  var bindMaybe = {\n      bind: function (v) {\n          return function (v1) {\n              if (v instanceof Just) {\n                  return v1(v.value0);\n              };\n              if (v instanceof Nothing) {\n                  return Nothing.value;\n              };\n              throw new Error(\"Failed pattern match at Data.Maybe (line 126, column 1 - line 128, column 28): \" + [ v.constructor.name, v1.constructor.name ]);\n          };\n      },\n      Apply0: function () {\n          return applyMaybe;\n      }\n  };\n  var applicativeMaybe = {\n      pure: Just.create,\n      Apply0: function () {\n          return applyMaybe;\n      }\n  };\n  exports[\"Nothing\"] = Nothing;\n  exports[\"Just\"] = Just;\n  exports[\"maybe\"] = maybe;\n  exports[\"fromMaybe\"] = fromMaybe;\n  exports[\"isJust\"] = isJust;\n  exports[\"isNothing\"] = isNothing;\n  exports[\"fromJust\"] = fromJust;\n  exports[\"functorMaybe\"] = functorMaybe;\n  exports[\"applyMaybe\"] = applyMaybe;\n  exports[\"applicativeMaybe\"] = applicativeMaybe;\n  exports[\"bindMaybe\"] = bindMaybe;\n})(PS);\n(function($PS) {\n  // Generated by purs version 0.14.7\n  \"use strict\";\n  $PS[\"Data.MediaType.Common\"] = $PS[\"Data.MediaType.Common\"] || {};\n  var exports = $PS[\"Data.MediaType.Common\"];          \n  var applicationJSON = \"application/json\";\n  var applicationFormURLEncoded = \"application/x-www-form-urlencoded\";\n  exports[\"applicationFormURLEncoded\"] = applicationFormURLEncoded;\n  exports[\"applicationJSON\"] = applicationJSON;\n})(PS);\n(function($PS) {\n  // Generated by purs version 0.14.7\n  \"use strict\";\n  $PS[\"Affjax.RequestBody\"] = $PS[\"Affjax.RequestBody\"] || {};\n  var exports = $PS[\"Affjax.RequestBody\"];\n  var Data_Maybe = $PS[\"Data.Maybe\"];\n  var Data_MediaType_Common = $PS[\"Data.MediaType.Common\"];                \n  var ArrayView = (function () {\n      function ArrayView(value0) {\n          this.value0 = value0;\n      };\n      ArrayView.create = function (value0) {\n          return new ArrayView(value0);\n      };\n      return ArrayView;\n  })();\n  var Blob = (function () {\n      function Blob(value0) {\n          this.value0 = value0;\n      };\n      Blob.create = function (value0) {\n          return new Blob(value0);\n      };\n      return Blob;\n  })();\n  var Document = (function () {\n      function Document(value0) {\n          this.value0 = value0;\n      };\n      Document.create = function (value0) {\n          return new Document(value0);\n      };\n      return Document;\n  })();\n  var $$String = (function () {\n      function $$String(value0) {\n          this.value0 = value0;\n      };\n      $$String.create = function (value0) {\n          return new $$String(value0);\n      };\n      return $$String;\n  })();\n  var FormData = (function () {\n      function FormData(value0) {\n          this.value0 = value0;\n      };\n      FormData.create = function (value0) {\n          return new FormData(value0);\n      };\n      return FormData;\n  })();\n  var FormURLEncoded = (function () {\n      function FormURLEncoded(value0) {\n          this.value0 = value0;\n      };\n      FormURLEncoded.create = function (value0) {\n          return new FormURLEncoded(value0);\n      };\n      return FormURLEncoded;\n  })();\n  var Json = (function () {\n      function Json(value0) {\n          this.value0 = value0;\n      };\n      Json.create = function (value0) {\n          return new Json(value0);\n      };\n      return Json;\n  })();\n  var toMediaType = function (v) {\n      if (v instanceof FormURLEncoded) {\n          return new Data_Maybe.Just(Data_MediaType_Common.applicationFormURLEncoded);\n      };\n      if (v instanceof Json) {\n          return new Data_Maybe.Just(Data_MediaType_Common.applicationJSON);\n      };\n      return Data_Maybe.Nothing.value;\n  };\n  var string = $$String.create;\n  exports[\"ArrayView\"] = ArrayView;\n  exports[\"Blob\"] = Blob;\n  exports[\"Document\"] = Document;\n  exports[\"String\"] = $$String;\n  exports[\"FormData\"] = FormData;\n  exports[\"FormURLEncoded\"] = FormURLEncoded;\n  exports[\"Json\"] = Json;\n  exports[\"string\"] = string;\n  exports[\"toMediaType\"] = toMediaType;\n})(PS);\n(function(exports) {\n  \"use strict\";\n\n  // module Unsafe.Coerce\n\n  exports.unsafeCoerce = function (x) {\n    return x;\n  };\n})(PS[\"Unsafe.Coerce\"] = PS[\"Unsafe.Coerce\"] || {});\n(function($PS) {\n  // Generated by purs version 0.14.7\n  \"use strict\";\n  $PS[\"Unsafe.Coerce\"] = $PS[\"Unsafe.Coerce\"] || {};\n  var exports = $PS[\"Unsafe.Coerce\"];\n  var $foreign = $PS[\"Unsafe.Coerce\"];\n  exports[\"unsafeCoerce\"] = $foreign.unsafeCoerce;\n})(PS);\n(function($PS) {\n  // Generated by purs version 0.14.7\n  \"use strict\";\n  $PS[\"Safe.Coerce\"] = $PS[\"Safe.Coerce\"] || {};\n  var exports = $PS[\"Safe.Coerce\"];\n  var Unsafe_Coerce = $PS[\"Unsafe.Coerce\"];                \n  var coerce = function () {\n      return Unsafe_Coerce.unsafeCoerce;\n  };\n  exports[\"coerce\"] = coerce;\n})(PS);\n(function($PS) {\n  // Generated by purs version 0.14.7\n  \"use strict\";\n  $PS[\"Data.Newtype\"] = $PS[\"Data.Newtype\"] || {};\n  var exports = $PS[\"Data.Newtype\"];\n  var Safe_Coerce = $PS[\"Safe.Coerce\"];\n  var unwrap = Safe_Coerce.coerce;\n  var alaF = function () {\n      return function () {\n          return function () {\n              return function () {\n                  return function (v) {\n                      return Safe_Coerce.coerce();\n                  };\n              };\n          };\n      };\n  };\n  exports[\"unwrap\"] = unwrap;\n  exports[\"alaF\"] = alaF;\n})(PS);\n(function($PS) {\n  // Generated by purs version 0.14.7\n  \"use strict\";\n  $PS[\"Affjax.RequestHeader\"] = $PS[\"Affjax.RequestHeader\"] || {};\n  var exports = $PS[\"Affjax.RequestHeader\"];\n  var Data_Newtype = $PS[\"Data.Newtype\"];          \n  var Accept = (function () {\n      function Accept(value0) {\n          this.value0 = value0;\n      };\n      Accept.create = function (value0) {\n          return new Accept(value0);\n      };\n      return Accept;\n  })();\n  var ContentType = (function () {\n      function ContentType(value0) {\n          this.value0 = value0;\n      };\n      ContentType.create = function (value0) {\n          return new ContentType(value0);\n      };\n      return ContentType;\n  })();\n  var RequestHeader = (function () {\n      function RequestHeader(value0, value1) {\n          this.value0 = value0;\n          this.value1 = value1;\n      };\n      RequestHeader.create = function (value0) {\n          return function (value1) {\n              return new RequestHeader(value0, value1);\n          };\n      };\n      return RequestHeader;\n  })();\n  var value = function (v) {\n      if (v instanceof Accept) {\n          return Data_Newtype.unwrap()(v.value0);\n      };\n      if (v instanceof ContentType) {\n          return Data_Newtype.unwrap()(v.value0);\n      };\n      if (v instanceof RequestHeader) {\n          return v.value1;\n      };\n      throw new Error(\"Failed pattern match at Affjax.RequestHeader (line 26, column 1 - line 26, column 33): \" + [ v.constructor.name ]);\n  };\n  var name = function (v) {\n      if (v instanceof Accept) {\n          return \"Accept\";\n      };\n      if (v instanceof ContentType) {\n          return \"Content-Type\";\n      };\n      if (v instanceof RequestHeader) {\n          return v.value0;\n      };\n      throw new Error(\"Failed pattern match at Affjax.RequestHeader (line 21, column 1 - line 21, column 32): \" + [ v.constructor.name ]);\n  };\n  exports[\"Accept\"] = Accept;\n  exports[\"ContentType\"] = ContentType;\n  exports[\"RequestHeader\"] = RequestHeader;\n  exports[\"name\"] = name;\n  exports[\"value\"] = value;\n})(PS);\n(function($PS) {\n  // Generated by purs version 0.14.7\n  \"use strict\";\n  $PS[\"Affjax.ResponseFormat\"] = $PS[\"Affjax.ResponseFormat\"] || {};\n  var exports = $PS[\"Affjax.ResponseFormat\"];\n  var Control_Category = $PS[\"Control.Category\"];\n  var Data_Maybe = $PS[\"Data.Maybe\"];\n  var Data_MediaType_Common = $PS[\"Data.MediaType.Common\"];                \n  var $$ArrayBuffer = (function () {\n      function $$ArrayBuffer(value0) {\n          this.value0 = value0;\n      };\n      $$ArrayBuffer.create = function (value0) {\n          return new $$ArrayBuffer(value0);\n      };\n      return $$ArrayBuffer;\n  })();\n  var Blob = (function () {\n      function Blob(value0) {\n          this.value0 = value0;\n      };\n      Blob.create = function (value0) {\n          return new Blob(value0);\n      };\n      return Blob;\n  })();\n  var Document = (function () {\n      function Document(value0) {\n          this.value0 = value0;\n      };\n      Document.create = function (value0) {\n          return new Document(value0);\n      };\n      return Document;\n  })();\n  var Json = (function () {\n      function Json(value0) {\n          this.value0 = value0;\n      };\n      Json.create = function (value0) {\n          return new Json(value0);\n      };\n      return Json;\n  })();\n  var $$String = (function () {\n      function $$String(value0) {\n          this.value0 = value0;\n      };\n      $$String.create = function (value0) {\n          return new $$String(value0);\n      };\n      return $$String;\n  })();\n  var Ignore = (function () {\n      function Ignore(value0) {\n          this.value0 = value0;\n      };\n      Ignore.create = function (value0) {\n          return new Ignore(value0);\n      };\n      return Ignore;\n  })();\n  var toResponseType = function (v) {\n      if (v instanceof $$ArrayBuffer) {\n          return \"arraybuffer\";\n      };\n      if (v instanceof Blob) {\n          return \"blob\";\n      };\n      if (v instanceof Document) {\n          return \"document\";\n      };\n      if (v instanceof Json) {\n          return \"text\";\n      };\n      if (v instanceof $$String) {\n          return \"text\";\n      };\n      if (v instanceof Ignore) {\n          return \"\";\n      };\n      throw new Error(\"Failed pattern match at Affjax.ResponseFormat (line 44, column 3 - line 50, column 19): \" + [ v.constructor.name ]);\n  };\n  var toMediaType = function (v) {\n      if (v instanceof Json) {\n          return new Data_Maybe.Just(Data_MediaType_Common.applicationJSON);\n      };\n      return Data_Maybe.Nothing.value;\n  };\n  var string = new $$String(Control_Category.identity(Control_Category.categoryFn));\n  var json = new Json(Control_Category.identity(Control_Category.categoryFn));\n  var ignore = new Ignore(Control_Category.identity(Control_Category.categoryFn));\n  exports[\"ArrayBuffer\"] = $$ArrayBuffer;\n  exports[\"Blob\"] = Blob;\n  exports[\"Document\"] = Document;\n  exports[\"Json\"] = Json;\n  exports[\"String\"] = $$String;\n  exports[\"Ignore\"] = Ignore;\n  exports[\"json\"] = json;\n  exports[\"string\"] = string;\n  exports[\"ignore\"] = ignore;\n  exports[\"toResponseType\"] = toResponseType;\n  exports[\"toMediaType\"] = toMediaType;\n})(PS);\n(function($PS) {\n  // Generated by purs version 0.14.7\n  \"use strict\";\n  $PS[\"Affjax.ResponseHeader\"] = $PS[\"Affjax.ResponseHeader\"] || {};\n  var exports = $PS[\"Affjax.ResponseHeader\"];      \n  var ResponseHeader = (function () {\n      function ResponseHeader(value0, value1) {\n          this.value0 = value0;\n          this.value1 = value1;\n      };\n      ResponseHeader.create = function (value0) {\n          return function (value1) {\n              return new ResponseHeader(value0, value1);\n          };\n      };\n      return ResponseHeader;\n  })();\n  exports[\"ResponseHeader\"] = ResponseHeader;\n})(PS);\n(function($PS) {\n  // Generated by purs version 0.14.7\n  \"use strict\";\n  $PS[\"Control.Alt\"] = $PS[\"Control.Alt\"] || {};\n  var exports = $PS[\"Control.Alt\"];\n  var alt = function (dict) {\n      return dict.alt;\n  };\n  exports[\"alt\"] = alt;\n})(PS);\n(function(exports) {\n  \"use strict\";\n\n  exports.arrayApply = function (fs) {\n    return function (xs) {\n      var l = fs.length;\n      var k = xs.length;\n      var result = new Array(l*k);\n      var n = 0;\n      for (var i = 0; i < l; i++) {\n        var f = fs[i];\n        for (var j = 0; j < k; j++) {\n          result[n++] = f(xs[j]);\n        }\n      }\n      return result;\n    };\n  };\n})(PS[\"Control.Apply\"] = PS[\"Control.Apply\"] || {});\n(function($PS) {\n  // Generated by purs version 0.14.7\n  \"use strict\";\n  $PS[\"Control.Apply\"] = $PS[\"Control.Apply\"] || {};\n  var exports = $PS[\"Control.Apply\"];\n  var $foreign = $PS[\"Control.Apply\"];\n  var Control_Category = $PS[\"Control.Category\"];\n  var Data_Function = $PS[\"Data.Function\"];\n  var Data_Functor = $PS[\"Data.Functor\"];\n  var applyArray = {\n      apply: $foreign.arrayApply,\n      Functor0: function () {\n          return Data_Functor.functorArray;\n      }\n  };\n  var apply = function (dict) {\n      return dict.apply;\n  };\n  var applySecond = function (dictApply) {\n      return function (a) {\n          return function (b) {\n              return apply(dictApply)(Data_Functor.map(dictApply.Functor0())(Data_Function[\"const\"](Control_Category.identity(Control_Category.categoryFn)))(a))(b);\n          };\n      };\n  };\n  var lift2 = function (dictApply) {\n      return function (f) {\n          return function (a) {\n              return function (b) {\n                  return apply(dictApply)(Data_Functor.map(dictApply.Functor0())(f)(a))(b);\n              };\n          };\n      };\n  };\n  exports[\"apply\"] = apply;\n  exports[\"applySecond\"] = applySecond;\n  exports[\"lift2\"] = lift2;\n  exports[\"applyArray\"] = applyArray;\n})(PS);\n(function($PS) {\n  // Generated by purs version 0.14.7\n  \"use strict\";\n  $PS[\"Control.Applicative\"] = $PS[\"Control.Applicative\"] || {};\n  var exports = $PS[\"Control.Applicative\"];\n  var Control_Apply = $PS[\"Control.Apply\"];\n  var Data_Unit = $PS[\"Data.Unit\"];                  \n  var pure = function (dict) {\n      return dict.pure;\n  };\n  var unless = function (dictApplicative) {\n      return function (v) {\n          return function (v1) {\n              if (!v) {\n                  return v1;\n              };\n              if (v) {\n                  return pure(dictApplicative)(Data_Unit.unit);\n              };\n              throw new Error(\"Failed pattern match at Control.Applicative (line 66, column 1 - line 66, column 65): \" + [ v.constructor.name, v1.constructor.name ]);\n          };\n      };\n  };\n  var when = function (dictApplicative) {\n      return function (v) {\n          return function (v1) {\n              if (v) {\n                  return v1;\n              };\n              if (!v) {\n                  return pure(dictApplicative)(Data_Unit.unit);\n              };\n              throw new Error(\"Failed pattern match at Control.Applicative (line 61, column 1 - line 61, column 63): \" + [ v.constructor.name, v1.constructor.name ]);\n          };\n      };\n  };\n  var liftA1 = function (dictApplicative) {\n      return function (f) {\n          return function (a) {\n              return Control_Apply.apply(dictApplicative.Apply0())(pure(dictApplicative)(f))(a);\n          };\n      };\n  };\n  exports[\"pure\"] = pure;\n  exports[\"liftA1\"] = liftA1;\n  exports[\"unless\"] = unless;\n  exports[\"when\"] = when;\n})(PS);\n(function(exports) {\n  \"use strict\";\n\n  exports.arrayBind = function (arr) {\n    return function (f) {\n      var result = [];\n      for (var i = 0, l = arr.length; i < l; i++) {\n        Array.prototype.push.apply(result, f(arr[i]));\n      }\n      return result;\n    };\n  };\n})(PS[\"Control.Bind\"] = PS[\"Control.Bind\"] || {});\n(function($PS) {\n  // Generated by purs version 0.14.7\n  \"use strict\";\n  $PS[\"Control.Bind\"] = $PS[\"Control.Bind\"] || {};\n  var exports = $PS[\"Control.Bind\"];\n  var $foreign = $PS[\"Control.Bind\"];\n  var Control_Apply = $PS[\"Control.Apply\"];\n  var Control_Category = $PS[\"Control.Category\"];\n  var Data_Function = $PS[\"Data.Function\"];          \n  var discard = function (dict) {\n      return dict.discard;\n  };\n  var bindArray = {\n      bind: $foreign.arrayBind,\n      Apply0: function () {\n          return Control_Apply.applyArray;\n      }\n  };\n  var bind = function (dict) {\n      return dict.bind;\n  };\n  var bindFlipped = function (dictBind) {\n      return Data_Function.flip(bind(dictBind));\n  };\n  var composeKleisliFlipped = function (dictBind) {\n      return function (f) {\n          return function (g) {\n              return function (a) {\n                  return bindFlipped(dictBind)(f)(g(a));\n              };\n          };\n      };\n  };\n  var composeKleisli = function (dictBind) {\n      return function (f) {\n          return function (g) {\n              return function (a) {\n                  return bind(dictBind)(f(a))(g);\n              };\n          };\n      };\n  };\n  var discardUnit = {\n      discard: function (dictBind) {\n          return bind(dictBind);\n      }\n  };\n  var join = function (dictBind) {\n      return function (m) {\n          return bind(dictBind)(m)(Control_Category.identity(Control_Category.categoryFn));\n      };\n  };\n  exports[\"bind\"] = bind;\n  exports[\"bindFlipped\"] = bindFlipped;\n  exports[\"discard\"] = discard;\n  exports[\"join\"] = join;\n  exports[\"composeKleisli\"] = composeKleisli;\n  exports[\"composeKleisliFlipped\"] = composeKleisliFlipped;\n  exports[\"bindArray\"] = bindArray;\n  exports[\"discardUnit\"] = discardUnit;\n})(PS);\n(function($PS) {\n  // Generated by purs version 0.14.7\n  \"use strict\";\n  $PS[\"Data.Either\"] = $PS[\"Data.Either\"] || {};\n  var exports = $PS[\"Data.Either\"];\n  var Data_Function = $PS[\"Data.Function\"];\n  var Data_Functor = $PS[\"Data.Functor\"];\n  var Data_Maybe = $PS[\"Data.Maybe\"];              \n  var Left = (function () {\n      function Left(value0) {\n          this.value0 = value0;\n      };\n      Left.create = function (value0) {\n          return new Left(value0);\n      };\n      return Left;\n  })();\n  var Right = (function () {\n      function Right(value0) {\n          this.value0 = value0;\n      };\n      Right.create = function (value0) {\n          return new Right(value0);\n      };\n      return Right;\n  })();\n  var note = function (a) {\n      return Data_Maybe.maybe(new Left(a))(Right.create);\n  };\n  var functorEither = {\n      map: function (f) {\n          return function (m) {\n              if (m instanceof Left) {\n                  return new Left(m.value0);\n              };\n              if (m instanceof Right) {\n                  return new Right(f(m.value0));\n              };\n              throw new Error(\"Failed pattern match at Data.Either (line 31, column 1 - line 31, column 52): \" + [ m.constructor.name ]);\n          };\n      }\n  };\n  var either = function (v) {\n      return function (v1) {\n          return function (v2) {\n              if (v2 instanceof Left) {\n                  return v(v2.value0);\n              };\n              if (v2 instanceof Right) {\n                  return v1(v2.value0);\n              };\n              throw new Error(\"Failed pattern match at Data.Either (line 208, column 1 - line 208, column 64): \" + [ v.constructor.name, v1.constructor.name, v2.constructor.name ]);\n          };\n      };\n  };\n  var hush = either(Data_Function[\"const\"](Data_Maybe.Nothing.value))(Data_Maybe.Just.create);\n  var applyEither = {\n      apply: function (v) {\n          return function (v1) {\n              if (v instanceof Left) {\n                  return new Left(v.value0);\n              };\n              if (v instanceof Right) {\n                  return Data_Functor.map(functorEither)(v.value0)(v1);\n              };\n              throw new Error(\"Failed pattern match at Data.Either (line 70, column 1 - line 72, column 30): \" + [ v.constructor.name, v1.constructor.name ]);\n          };\n      },\n      Functor0: function () {\n          return functorEither;\n      }\n  };\n  var bindEither = {\n      bind: either(function (e) {\n          return function (v) {\n              return new Left(e);\n          };\n      })(function (a) {\n          return function (f) {\n              return f(a);\n          };\n      }),\n      Apply0: function () {\n          return applyEither;\n      }\n  };\n  var applicativeEither = {\n      pure: Right.create,\n      Apply0: function () {\n          return applyEither;\n      }\n  };\n  exports[\"Left\"] = Left;\n  exports[\"Right\"] = Right;\n  exports[\"either\"] = either;\n  exports[\"note\"] = note;\n  exports[\"hush\"] = hush;\n  exports[\"functorEither\"] = functorEither;\n  exports[\"applicativeEither\"] = applicativeEither;\n  exports[\"bindEither\"] = bindEither;\n})(PS);\n(function($PS) {\n  // Generated by purs version 0.14.7\n  \"use strict\";\n  $PS[\"Control.Monad.Error.Class\"] = $PS[\"Control.Monad.Error.Class\"] || {};\n  var exports = $PS[\"Control.Monad.Error.Class\"];\n  var Control_Applicative = $PS[\"Control.Applicative\"];\n  var Data_Either = $PS[\"Data.Either\"];\n  var Data_Functor = $PS[\"Data.Functor\"];                        \n  var throwError = function (dict) {\n      return dict.throwError;\n  };\n  var catchError = function (dict) {\n      return dict.catchError;\n  };\n  var $$try = function (dictMonadError) {\n      return function (a) {\n          return catchError(dictMonadError)(Data_Functor.map(((((dictMonadError.MonadThrow0()).Monad0()).Bind1()).Apply0()).Functor0())(Data_Either.Right.create)(a))((function () {\n              var $21 = Control_Applicative.pure(((dictMonadError.MonadThrow0()).Monad0()).Applicative0());\n              return function ($22) {\n                  return $21(Data_Either.Left.create($22));\n              };\n          })());\n      };\n  };\n  exports[\"throwError\"] = throwError;\n  exports[\"try\"] = $$try;\n})(PS);\n(function($PS) {\n  // Generated by purs version 0.14.7\n  \"use strict\";\n  $PS[\"Control.Monad\"] = $PS[\"Control.Monad\"] || {};\n  var exports = $PS[\"Control.Monad\"];\n  var Control_Applicative = $PS[\"Control.Applicative\"];\n  var Control_Bind = $PS[\"Control.Bind\"];                \n  var whenM = function (dictMonad) {\n      return function (mb) {\n          return function (m) {\n              return Control_Bind.bind(dictMonad.Bind1())(mb)(function (b) {\n                  return Control_Applicative.when(dictMonad.Applicative0())(b)(m);\n              });\n          };\n      };\n  };\n  var unlessM = function (dictMonad) {\n      return function (mb) {\n          return function (m) {\n              return Control_Bind.bind(dictMonad.Bind1())(mb)(function (b) {\n                  return Control_Applicative.unless(dictMonad.Applicative0())(b)(m);\n              });\n          };\n      };\n  };\n  var ap = function (dictMonad) {\n      return function (f) {\n          return function (a) {\n              return Control_Bind.bind(dictMonad.Bind1())(f)(function (f$prime) {\n                  return Control_Bind.bind(dictMonad.Bind1())(a)(function (a$prime) {\n                      return Control_Applicative.pure(dictMonad.Applicative0())(f$prime(a$prime));\n                  });\n              });\n          };\n      };\n  };\n  exports[\"whenM\"] = whenM;\n  exports[\"unlessM\"] = unlessM;\n  exports[\"ap\"] = ap;\n})(PS);\n(function(exports) {\n  \"use strict\";\n\n  exports.concatString = function (s1) {\n    return function (s2) {\n      return s1 + s2;\n    };\n  };\n\n  exports.concatArray = function (xs) {\n    return function (ys) {\n      if (xs.length === 0) return ys;\n      if (ys.length === 0) return xs;\n      return xs.concat(ys);\n    };\n  };\n})(PS[\"Data.Semigroup\"] = PS[\"Data.Semigroup\"] || {});\n(function($PS) {\n  // Generated by purs version 0.14.7\n  \"use strict\";\n  $PS[\"Data.Semigroup\"] = $PS[\"Data.Semigroup\"] || {};\n  var exports = $PS[\"Data.Semigroup\"];\n  var $foreign = $PS[\"Data.Semigroup\"];\n  var semigroupString = {\n      append: $foreign.concatString\n  };\n  var semigroupArray = {\n      append: $foreign.concatArray\n  };\n  var append = function (dict) {\n      return dict.append;\n  };\n  exports[\"append\"] = append;\n  exports[\"semigroupString\"] = semigroupString;\n  exports[\"semigroupArray\"] = semigroupArray;\n})(PS);\n(function($PS) {\n  // Generated by purs version 0.14.7\n  \"use strict\";\n  $PS[\"Control.Monad.Except.Trans\"] = $PS[\"Control.Monad.Except.Trans\"] || {};\n  var exports = $PS[\"Control.Monad.Except.Trans\"];\n  var Control_Applicative = $PS[\"Control.Applicative\"];\n  var Control_Bind = $PS[\"Control.Bind\"];\n  var Control_Monad = $PS[\"Control.Monad\"];\n  var Data_Either = $PS[\"Data.Either\"];\n  var Data_Functor = $PS[\"Data.Functor\"];\n  var Data_Semigroup = $PS[\"Data.Semigroup\"];            \n  var ExceptT = function (x) {\n      return x;\n  };\n  var runExceptT = function (v) {\n      return v;\n  };\n  var mapExceptT = function (f) {\n      return function (v) {\n          return f(v);\n      };\n  };\n  var functorExceptT = function (dictFunctor) {\n      return {\n          map: function (f) {\n              return mapExceptT(Data_Functor.map(dictFunctor)(Data_Functor.map(Data_Either.functorEither)(f)));\n          }\n      };\n  };\n  var monadExceptT = function (dictMonad) {\n      return {\n          Applicative0: function () {\n              return applicativeExceptT(dictMonad);\n          },\n          Bind1: function () {\n              return bindExceptT(dictMonad);\n          }\n      };\n  };\n  var bindExceptT = function (dictMonad) {\n      return {\n          bind: function (v) {\n              return function (k) {\n                  return Control_Bind.bind(dictMonad.Bind1())(v)(Data_Either.either((function () {\n                      var $91 = Control_Applicative.pure(dictMonad.Applicative0());\n                      return function ($92) {\n                          return $91(Data_Either.Left.create($92));\n                      };\n                  })())(function (a) {\n                      var v1 = k(a);\n                      return v1;\n                  }));\n              };\n          },\n          Apply0: function () {\n              return applyExceptT(dictMonad);\n          }\n      };\n  };\n  var applyExceptT = function (dictMonad) {\n      return {\n          apply: Control_Monad.ap(monadExceptT(dictMonad)),\n          Functor0: function () {\n              return functorExceptT(((dictMonad.Bind1()).Apply0()).Functor0());\n          }\n      };\n  };\n  var applicativeExceptT = function (dictMonad) {\n      return {\n          pure: (function () {\n              var $93 = Control_Applicative.pure(dictMonad.Applicative0());\n              return function ($94) {\n                  return ExceptT($93(Data_Either.Right.create($94)));\n              };\n          })(),\n          Apply0: function () {\n              return applyExceptT(dictMonad);\n          }\n      };\n  };\n  var monadThrowExceptT = function (dictMonad) {\n      return {\n          throwError: (function () {\n              var $103 = Control_Applicative.pure(dictMonad.Applicative0());\n              return function ($104) {\n                  return ExceptT($103(Data_Either.Left.create($104)));\n              };\n          })(),\n          Monad0: function () {\n              return monadExceptT(dictMonad);\n          }\n      };\n  };\n  var altExceptT = function (dictSemigroup) {\n      return function (dictMonad) {\n          return {\n              alt: function (v) {\n                  return function (v1) {\n                      return Control_Bind.bind(dictMonad.Bind1())(v)(function (rm) {\n                          if (rm instanceof Data_Either.Right) {\n                              return Control_Applicative.pure(dictMonad.Applicative0())(new Data_Either.Right(rm.value0));\n                          };\n                          if (rm instanceof Data_Either.Left) {\n                              return Control_Bind.bind(dictMonad.Bind1())(v1)(function (rn) {\n                                  if (rn instanceof Data_Either.Right) {\n                                      return Control_Applicative.pure(dictMonad.Applicative0())(new Data_Either.Right(rn.value0));\n                                  };\n                                  if (rn instanceof Data_Either.Left) {\n                                      return Control_Applicative.pure(dictMonad.Applicative0())(new Data_Either.Left(Data_Semigroup.append(dictSemigroup)(rm.value0)(rn.value0)));\n                                  };\n                                  throw new Error(\"Failed pattern match at Control.Monad.Except.Trans (line 87, column 9 - line 89, column 49): \" + [ rn.constructor.name ]);\n                              });\n                          };\n                          throw new Error(\"Failed pattern match at Control.Monad.Except.Trans (line 83, column 5 - line 89, column 49): \" + [ rm.constructor.name ]);\n                      });\n                  };\n              },\n              Functor0: function () {\n                  return functorExceptT(((dictMonad.Bind1()).Apply0()).Functor0());\n              }\n          };\n      };\n  };\n  exports[\"runExceptT\"] = runExceptT;\n  exports[\"mapExceptT\"] = mapExceptT;\n  exports[\"functorExceptT\"] = functorExceptT;\n  exports[\"applicativeExceptT\"] = applicativeExceptT;\n  exports[\"bindExceptT\"] = bindExceptT;\n  exports[\"altExceptT\"] = altExceptT;\n  exports[\"monadThrowExceptT\"] = monadThrowExceptT;\n})(PS);\n(function($PS) {\n  // Generated by purs version 0.14.7\n  \"use strict\";\n  $PS[\"Control.Monad.Except\"] = $PS[\"Control.Monad.Except\"] || {};\n  var exports = $PS[\"Control.Monad.Except\"];\n  var Control_Monad_Except_Trans = $PS[\"Control.Monad.Except.Trans\"];\n  var Data_Newtype = $PS[\"Data.Newtype\"];                                                \n  var runExcept = (function () {\n      var $0 = Data_Newtype.unwrap();\n      return function ($1) {\n          return $0(Control_Monad_Except_Trans.runExceptT($1));\n      };\n  })();\n  exports[\"runExcept\"] = runExcept;\n})(PS);\n(function(exports) {\n  /* eslint-disable no-eq-null, eqeqeq */\n  \"use strict\";\n\n  function id(x) {\n    return x;\n  }                      \n  exports.fromObject = id;\n\n  exports.stringify = function (j) {\n    return JSON.stringify(j);\n  };\n\n  exports._caseJson = function (isNull, isBool, isNum, isStr, isArr, isObj, j) {\n    if (j == null) return isNull();\n    else if (typeof j === \"boolean\") return isBool(j);\n    else if (typeof j === \"number\") return isNum(j);\n    else if (typeof j === \"string\") return isStr(j);\n    else if (Object.prototype.toString.call(j) === \"[object Array]\")\n      return isArr(j);\n    else return isObj(j);\n  };\n})(PS[\"Data.Argonaut.Core\"] = PS[\"Data.Argonaut.Core\"] || {});\n(function(exports) {\n  \"use strict\";\n\n  exports._copyST = function (m) {\n    return function () {\n      var r = {};\n      for (var k in m) {\n        if (hasOwnProperty.call(m, k)) {\n          r[k] = m[k];\n        }\n      }\n      return r;\n    };\n  };\n\n  exports.empty = {};\n\n  exports.runST = function (f) {\n    return f();\n  };\n\n  exports._fmapObject = function (m0, f) {\n    var m = {};\n    for (var k in m0) {\n      if (hasOwnProperty.call(m0, k)) {\n        m[k] = f(m0[k]);\n      }\n    }\n    return m;\n  };\n\n  exports._mapWithKey = function (m0, f) {\n    var m = {};\n    for (var k in m0) {\n      if (hasOwnProperty.call(m0, k)) {\n        m[k] = f(k)(m0[k]);\n      }\n    }\n    return m;\n  };\n\n  exports._foldM = function (bind) {\n    return function (f) {\n      return function (mz) {\n        return function (m) {\n          var acc = mz;\n          function g(k) {\n            return function (z) {\n              return f(z)(k)(m[k]);\n            };\n          }\n          for (var k in m) {\n            if (hasOwnProperty.call(m, k)) {\n              acc = bind(acc)(g(k));\n            }\n          }\n          return acc;\n        };\n      };\n    };\n  };\n\n  exports._lookup = function (no, yes, k, m) {\n    return k in m ? yes(m[k]) : no;\n  };\n\n  function toArrayWithKey(f) {\n    return function (m) {\n      var r = [];\n      for (var k in m) {\n        if (hasOwnProperty.call(m, k)) {\n          r.push(f(k)(m[k]));\n        }\n      }\n      return r;\n    };\n  }\n\n  exports.toArrayWithKey = toArrayWithKey;\n})(PS[\"Foreign.Object\"] = PS[\"Foreign.Object\"] || {});\n(function(exports) {\n  \"use strict\";\n\n  //------------------------------------------------------------------------------\n  // Array size ------------------------------------------------------------------\n  //------------------------------------------------------------------------------\n\n  exports.length = function (xs) {\n    return xs.length;\n  };\n\n  exports.findIndexImpl = function (just) {\n    return function (nothing) {\n      return function (f) {\n        return function (xs) {\n          for (var i = 0, l = xs.length; i < l; i++) {\n            if (f(xs[i])) return just(i);\n          }\n          return nothing;\n        };\n      };\n    };\n  };\n\n  exports._deleteAt = function (just) {\n    return function (nothing) {\n      return function (i) {\n        return function (l) {\n          if (i < 0 || i >= l.length) return nothing;\n          var l1 = l.slice();\n          l1.splice(i, 1);\n          return just(l1);\n        };\n      };\n    };\n  };\n\n  exports.concat = function (xss) {\n    if (xss.length <= 10000) {\n      // This method is faster, but it crashes on big arrays.\n      // So we use it when can and fallback to simple variant otherwise.\n      return Array.prototype.concat.apply([], xss);\n    }\n\n    var result = [];\n    for (var i = 0, l = xss.length; i < l; i++) {\n      var xs = xss[i];\n      for (var j = 0, m = xs.length; j < m; j++) {\n        result.push(xs[j]);\n      }\n    }\n    return result;\n  };\n\n  exports.filter = function (f) {\n    return function (xs) {\n      return xs.filter(f);\n    };\n  };\n\n  //------------------------------------------------------------------------------\n  // Sorting ---------------------------------------------------------------------\n  //------------------------------------------------------------------------------\n\n  exports.sortByImpl = (function () {\n    function mergeFromTo(compare, fromOrdering, xs1, xs2, from, to) {\n      var mid;\n      var i;\n      var j;\n      var k;\n      var x;\n      var y;\n      var c;\n\n      mid = from + ((to - from) >> 1);\n      if (mid - from > 1) mergeFromTo(compare, fromOrdering, xs2, xs1, from, mid);\n      if (to - mid > 1) mergeFromTo(compare, fromOrdering, xs2, xs1, mid, to);\n\n      i = from;\n      j = mid;\n      k = from;\n      while (i < mid && j < to) {\n        x = xs2[i];\n        y = xs2[j];\n        c = fromOrdering(compare(x)(y));\n        if (c > 0) {\n          xs1[k++] = y;\n          ++j;\n        }\n        else {\n          xs1[k++] = x;\n          ++i;\n        }\n      }\n      while (i < mid) {\n        xs1[k++] = xs2[i++];\n      }\n      while (j < to) {\n        xs1[k++] = xs2[j++];\n      }\n    }\n\n    return function (compare) {\n      return function (fromOrdering) {\n        return function (xs) {\n          var out;\n\n          if (xs.length < 2) return xs;\n\n          out = xs.slice(0);\n          mergeFromTo(compare, fromOrdering, out, xs.slice(0), 0, xs.length);\n\n          return out;\n        };\n      };\n    };\n  })();\n\n  //------------------------------------------------------------------------------\n  // Subarrays -------------------------------------------------------------------\n  //------------------------------------------------------------------------------\n\n  exports.slice = function (s) {\n    return function (e) {\n      return function (l) {\n        return l.slice(s, e);\n      };\n    };\n  };\n\n  //------------------------------------------------------------------------------\n  // Partial ---------------------------------------------------------------------\n  //------------------------------------------------------------------------------\n\n  exports.unsafeIndexImpl = function (xs) {\n    return function (n) {\n      return xs[n];\n    };\n  };\n})(PS[\"Data.Array\"] = PS[\"Data.Array\"] || {});\n(function(exports) {\n  \"use strict\";\n\n  exports.pushAll = function (as) {\n    return function (xs) {\n      return function () {\n        return xs.push.apply(xs, as);\n      };\n    };\n  };\n\n  exports.unsafeFreeze = function (xs) {\n    return function () {\n      return xs;\n    };\n  };\n\n  function copyImpl(xs) {\n    return function () {\n      return xs.slice();\n    };\n  }                         \n\n  exports.thaw = copyImpl;\n})(PS[\"Data.Array.ST\"] = PS[\"Data.Array.ST\"] || {});\n(function($PS) {\n  // Generated by purs version 0.14.7\n  \"use strict\";\n  $PS[\"Data.Array.ST\"] = $PS[\"Data.Array.ST\"] || {};\n  var exports = $PS[\"Data.Array.ST\"];\n  var $foreign = $PS[\"Data.Array.ST\"];                     \n  var withArray = function (f) {\n      return function (xs) {\n          return function __do() {\n              var result = $foreign.thaw(xs)();\n              f(result)();\n              return $foreign.unsafeFreeze(result)();\n          };\n      };\n  };\n  var push = function (a) {\n      return $foreign.pushAll([ a ]);\n  };\n  exports[\"withArray\"] = withArray;\n  exports[\"push\"] = push;\n})(PS);\n(function($PS) {\n  // Generated by purs version 0.14.7\n  \"use strict\";\n  $PS[\"Data.Boolean\"] = $PS[\"Data.Boolean\"] || {};\n  var exports = $PS[\"Data.Boolean\"];\n  var otherwise = true;\n  exports[\"otherwise\"] = otherwise;\n})(PS);\n(function(exports) {\n  \"use strict\";\n\n  var refEq = function (r1) {\n    return function (r2) {\n      return r1 === r2;\n    };\n  };                            \n  exports.eqIntImpl = refEq;   \n  exports.eqCharImpl = refEq;\n  exports.eqStringImpl = refEq;\n\n  exports.eqArrayImpl = function (f) {\n    return function (xs) {\n      return function (ys) {\n        if (xs.length !== ys.length) return false;\n        for (var i = 0; i < xs.length; i++) {\n          if (!f(xs[i])(ys[i])) return false;\n        }\n        return true;\n      };\n    };\n  };\n})(PS[\"Data.Eq\"] = PS[\"Data.Eq\"] || {});\n(function($PS) {\n  // Generated by purs version 0.14.7\n  \"use strict\";\n  $PS[\"Data.Eq\"] = $PS[\"Data.Eq\"] || {};\n  var exports = $PS[\"Data.Eq\"];\n  var $foreign = $PS[\"Data.Eq\"];\n  var eqUnit = {\n      eq: function (v) {\n          return function (v1) {\n              return true;\n          };\n      }\n  };\n  var eqString = {\n      eq: $foreign.eqStringImpl\n  };\n  var eqInt = {\n      eq: $foreign.eqIntImpl\n  };\n  var eqChar = {\n      eq: $foreign.eqCharImpl\n  };\n  var eq = function (dict) {\n      return dict.eq;\n  };\n  var eqArray = function (dictEq) {\n      return {\n          eq: $foreign.eqArrayImpl(eq(dictEq))\n      };\n  };\n  exports[\"eq\"] = eq;\n  exports[\"eqInt\"] = eqInt;\n  exports[\"eqChar\"] = eqChar;\n  exports[\"eqString\"] = eqString;\n  exports[\"eqUnit\"] = eqUnit;\n  exports[\"eqArray\"] = eqArray;\n})(PS);\n(function(exports) {\n  \"use strict\";\n\n  exports.foldrArray = function (f) {\n    return function (init) {\n      return function (xs) {\n        var acc = init;\n        var len = xs.length;\n        for (var i = len - 1; i >= 0; i--) {\n          acc = f(xs[i])(acc);\n        }\n        return acc;\n      };\n    };\n  };\n\n  exports.foldlArray = function (f) {\n    return function (init) {\n      return function (xs) {\n        var acc = init;\n        var len = xs.length;\n        for (var i = 0; i < len; i++) {\n          acc = f(acc)(xs[i]);\n        }\n        return acc;\n      };\n    };\n  };\n})(PS[\"Data.Foldable\"] = PS[\"Data.Foldable\"] || {});\n(function($PS) {\n  // Generated by purs version 0.14.7\n  \"use strict\";\n  $PS[\"Data.Monoid\"] = $PS[\"Data.Monoid\"] || {};\n  var exports = $PS[\"Data.Monoid\"];\n  var Data_Semigroup = $PS[\"Data.Semigroup\"];\n  var monoidString = {\n      mempty: \"\",\n      Semigroup0: function () {\n          return Data_Semigroup.semigroupString;\n      }\n  };\n  var monoidArray = {\n      mempty: [  ],\n      Semigroup0: function () {\n          return Data_Semigroup.semigroupArray;\n      }\n  };\n  var mempty = function (dict) {\n      return dict.mempty;\n  };\n  var guard = function (dictMonoid) {\n      return function (v) {\n          return function (v1) {\n              if (v) {\n                  return v1;\n              };\n              if (!v) {\n                  return mempty(dictMonoid);\n              };\n              throw new Error(\"Failed pattern match at Data.Monoid (line 94, column 1 - line 94, column 49): \" + [ v.constructor.name, v1.constructor.name ]);\n          };\n      };\n  };\n  exports[\"mempty\"] = mempty;\n  exports[\"guard\"] = guard;\n  exports[\"monoidString\"] = monoidString;\n  exports[\"monoidArray\"] = monoidArray;\n})(PS);\n(function(exports) {\n  \"use strict\";\n\n  exports.boolConj = function (b1) {\n    return function (b2) {\n      return b1 && b2;\n    };\n  };\n\n  exports.boolDisj = function (b1) {\n    return function (b2) {\n      return b1 || b2;\n    };\n  };\n\n  exports.boolNot = function (b) {\n    return !b;\n  };\n})(PS[\"Data.HeytingAlgebra\"] = PS[\"Data.HeytingAlgebra\"] || {});\n(function($PS) {\n  // Generated by purs version 0.14.7\n  \"use strict\";\n  $PS[\"Data.HeytingAlgebra\"] = $PS[\"Data.HeytingAlgebra\"] || {};\n  var exports = $PS[\"Data.HeytingAlgebra\"];\n  var $foreign = $PS[\"Data.HeytingAlgebra\"];\n  var tt = function (dict) {\n      return dict.tt;\n  };\n  var not = function (dict) {\n      return dict.not;\n  };\n  var implies = function (dict) {\n      return dict.implies;\n  };\n  var ff = function (dict) {\n      return dict.ff;\n  };\n  var disj = function (dict) {\n      return dict.disj;\n  };\n  var heytingAlgebraBoolean = {\n      ff: false,\n      tt: true,\n      implies: function (a) {\n          return function (b) {\n              return disj(heytingAlgebraBoolean)(not(heytingAlgebraBoolean)(a))(b);\n          };\n      },\n      conj: $foreign.boolConj,\n      disj: $foreign.boolDisj,\n      not: $foreign.boolNot\n  };\n  var conj = function (dict) {\n      return dict.conj;\n  };\n  var heytingAlgebraFunction = function (dictHeytingAlgebra) {\n      return {\n          ff: function (v) {\n              return ff(dictHeytingAlgebra);\n          },\n          tt: function (v) {\n              return tt(dictHeytingAlgebra);\n          },\n          implies: function (f) {\n              return function (g) {\n                  return function (a) {\n                      return implies(dictHeytingAlgebra)(f(a))(g(a));\n                  };\n              };\n          },\n          conj: function (f) {\n              return function (g) {\n                  return function (a) {\n                      return conj(dictHeytingAlgebra)(f(a))(g(a));\n                  };\n              };\n          },\n          disj: function (f) {\n              return function (g) {\n                  return function (a) {\n                      return disj(dictHeytingAlgebra)(f(a))(g(a));\n                  };\n              };\n          },\n          not: function (f) {\n              return function (a) {\n                  return not(dictHeytingAlgebra)(f(a));\n              };\n          }\n      };\n  };\n  exports[\"ff\"] = ff;\n  exports[\"disj\"] = disj;\n  exports[\"not\"] = not;\n  exports[\"heytingAlgebraBoolean\"] = heytingAlgebraBoolean;\n  exports[\"heytingAlgebraFunction\"] = heytingAlgebraFunction;\n})(PS);\n(function($PS) {\n  // Generated by purs version 0.14.7\n  \"use strict\";\n  $PS[\"Data.Monoid.Disj\"] = $PS[\"Data.Monoid.Disj\"] || {};\n  var exports = $PS[\"Data.Monoid.Disj\"];\n  var Data_HeytingAlgebra = $PS[\"Data.HeytingAlgebra\"];\n  var Disj = function (x) {\n      return x;\n  };\n  var semigroupDisj = function (dictHeytingAlgebra) {\n      return {\n          append: function (v) {\n              return function (v1) {\n                  return Data_HeytingAlgebra.disj(dictHeytingAlgebra)(v)(v1);\n              };\n          }\n      };\n  };\n  var monoidDisj = function (dictHeytingAlgebra) {\n      return {\n          mempty: Data_HeytingAlgebra.ff(dictHeytingAlgebra),\n          Semigroup0: function () {\n              return semigroupDisj(dictHeytingAlgebra);\n          }\n      };\n  };\n  exports[\"Disj\"] = Disj;\n  exports[\"monoidDisj\"] = monoidDisj;\n})(PS);\n(function(exports) {\n  \"use strict\";\n\n  var unsafeCompareImpl = function (lt) {\n    return function (eq) {\n      return function (gt) {\n        return function (x) {\n          return function (y) {\n            return x < y ? lt : x === y ? eq : gt;\n          };\n        };\n      };\n    };\n  };                                         \n  exports.ordIntImpl = unsafeCompareImpl;   \n  exports.ordStringImpl = unsafeCompareImpl;\n  exports.ordCharImpl = unsafeCompareImpl;\n})(PS[\"Data.Ord\"] = PS[\"Data.Ord\"] || {});\n(function($PS) {\n  // Generated by purs version 0.14.7\n  \"use strict\";\n  $PS[\"Data.Ordering\"] = $PS[\"Data.Ordering\"] || {};\n  var exports = $PS[\"Data.Ordering\"];\n  var LT = (function () {\n      function LT() {\n\n      };\n      LT.value = new LT();\n      return LT;\n  })();\n  var GT = (function () {\n      function GT() {\n\n      };\n      GT.value = new GT();\n      return GT;\n  })();\n  var EQ = (function () {\n      function EQ() {\n\n      };\n      EQ.value = new EQ();\n      return EQ;\n  })();\n  var eqOrdering = {\n      eq: function (v) {\n          return function (v1) {\n              if (v instanceof LT && v1 instanceof LT) {\n                  return true;\n              };\n              if (v instanceof GT && v1 instanceof GT) {\n                  return true;\n              };\n              if (v instanceof EQ && v1 instanceof EQ) {\n                  return true;\n              };\n              return false;\n          };\n      }\n  };\n  exports[\"LT\"] = LT;\n  exports[\"GT\"] = GT;\n  exports[\"EQ\"] = EQ;\n  exports[\"eqOrdering\"] = eqOrdering;\n})(PS);\n(function($PS) {\n  // Generated by purs version 0.14.7\n  \"use strict\";\n  $PS[\"Data.Ord\"] = $PS[\"Data.Ord\"] || {};\n  var exports = $PS[\"Data.Ord\"];\n  var $foreign = $PS[\"Data.Ord\"];\n  var Data_Eq = $PS[\"Data.Eq\"];\n  var Data_Ordering = $PS[\"Data.Ordering\"];\n  var ordUnit = {\n      compare: function (v) {\n          return function (v1) {\n              return Data_Ordering.EQ.value;\n          };\n      },\n      Eq0: function () {\n          return Data_Eq.eqUnit;\n      }\n  };\n  var ordString = {\n      compare: $foreign.ordStringImpl(Data_Ordering.LT.value)(Data_Ordering.EQ.value)(Data_Ordering.GT.value),\n      Eq0: function () {\n          return Data_Eq.eqString;\n      }\n  };\n  var ordInt = {\n      compare: $foreign.ordIntImpl(Data_Ordering.LT.value)(Data_Ordering.EQ.value)(Data_Ordering.GT.value),\n      Eq0: function () {\n          return Data_Eq.eqInt;\n      }\n  };\n  var ordChar = {\n      compare: $foreign.ordCharImpl(Data_Ordering.LT.value)(Data_Ordering.EQ.value)(Data_Ordering.GT.value),\n      Eq0: function () {\n          return Data_Eq.eqChar;\n      }\n  };\n  var compare = function (dict) {\n      return dict.compare;\n  };\n  var comparing = function (dictOrd) {\n      return function (f) {\n          return function (x) {\n              return function (y) {\n                  return compare(dictOrd)(f(x))(f(y));\n              };\n          };\n      };\n  };\n  exports[\"compare\"] = compare;\n  exports[\"comparing\"] = comparing;\n  exports[\"ordInt\"] = ordInt;\n  exports[\"ordString\"] = ordString;\n  exports[\"ordChar\"] = ordChar;\n  exports[\"ordUnit\"] = ordUnit;\n})(PS);\n(function($PS) {\n  // Generated by purs version 0.14.7\n  \"use strict\";\n  $PS[\"Data.Foldable\"] = $PS[\"Data.Foldable\"] || {};\n  var exports = $PS[\"Data.Foldable\"];\n  var $foreign = $PS[\"Data.Foldable\"];\n  var Control_Applicative = $PS[\"Control.Applicative\"];\n  var Control_Apply = $PS[\"Control.Apply\"];\n  var Data_Eq = $PS[\"Data.Eq\"];\n  var Data_Function = $PS[\"Data.Function\"];\n  var Data_Maybe = $PS[\"Data.Maybe\"];\n  var Data_Monoid = $PS[\"Data.Monoid\"];\n  var Data_Monoid_Disj = $PS[\"Data.Monoid.Disj\"];\n  var Data_Newtype = $PS[\"Data.Newtype\"];\n  var Data_Ord = $PS[\"Data.Ord\"];\n  var Data_Ordering = $PS[\"Data.Ordering\"];\n  var Data_Semigroup = $PS[\"Data.Semigroup\"];\n  var Data_Unit = $PS[\"Data.Unit\"];                \n  var foldr = function (dict) {\n      return dict.foldr;\n  };\n  var traverse_ = function (dictApplicative) {\n      return function (dictFoldable) {\n          return function (f) {\n              return foldr(dictFoldable)((function () {\n                  var $316 = Control_Apply.applySecond(dictApplicative.Apply0());\n                  return function ($317) {\n                      return $316(f($317));\n                  };\n              })())(Control_Applicative.pure(dictApplicative)(Data_Unit.unit));\n          };\n      };\n  };\n  var for_ = function (dictApplicative) {\n      return function (dictFoldable) {\n          return Data_Function.flip(traverse_(dictApplicative)(dictFoldable));\n      };\n  };\n  var foldl = function (dict) {\n      return dict.foldl;\n  };\n  var intercalate = function (dictFoldable) {\n      return function (dictMonoid) {\n          return function (sep) {\n              return function (xs) {\n                  var go = function (v) {\n                      return function (x) {\n                          if (v.init) {\n                              return {\n                                  init: false,\n                                  acc: x\n                              };\n                          };\n                          return {\n                              init: false,\n                              acc: Data_Semigroup.append(dictMonoid.Semigroup0())(v.acc)(Data_Semigroup.append(dictMonoid.Semigroup0())(sep)(x))\n                          };\n                      };\n                  };\n                  return (foldl(dictFoldable)(go)({\n                      init: true,\n                      acc: Data_Monoid.mempty(dictMonoid)\n                  })(xs)).acc;\n              };\n          };\n      };\n  };\n  var maximumBy = function (dictFoldable) {\n      return function (cmp) {\n          var max$prime = function (v) {\n              return function (v1) {\n                  if (v instanceof Data_Maybe.Nothing) {\n                      return new Data_Maybe.Just(v1);\n                  };\n                  if (v instanceof Data_Maybe.Just) {\n                      return new Data_Maybe.Just((function () {\n                          var $164 = Data_Eq.eq(Data_Ordering.eqOrdering)(cmp(v.value0)(v1))(Data_Ordering.GT.value);\n                          if ($164) {\n                              return v.value0;\n                          };\n                          return v1;\n                      })());\n                  };\n                  throw new Error(\"Failed pattern match at Data.Foldable (line 441, column 3 - line 441, column 27): \" + [ v.constructor.name, v1.constructor.name ]);\n              };\n          };\n          return foldl(dictFoldable)(max$prime)(Data_Maybe.Nothing.value);\n      };\n  };\n  var maximum = function (dictOrd) {\n      return function (dictFoldable) {\n          return maximumBy(dictFoldable)(Data_Ord.compare(dictOrd));\n      };\n  };\n  var minimumBy = function (dictFoldable) {\n      return function (cmp) {\n          var min$prime = function (v) {\n              return function (v1) {\n                  if (v instanceof Data_Maybe.Nothing) {\n                      return new Data_Maybe.Just(v1);\n                  };\n                  if (v instanceof Data_Maybe.Just) {\n                      return new Data_Maybe.Just((function () {\n                          var $168 = Data_Eq.eq(Data_Ordering.eqOrdering)(cmp(v.value0)(v1))(Data_Ordering.LT.value);\n                          if ($168) {\n                              return v.value0;\n                          };\n                          return v1;\n                      })());\n                  };\n                  throw new Error(\"Failed pattern match at Data.Foldable (line 454, column 3 - line 454, column 27): \" + [ v.constructor.name, v1.constructor.name ]);\n              };\n          };\n          return foldl(dictFoldable)(min$prime)(Data_Maybe.Nothing.value);\n      };\n  };\n  var minimum = function (dictOrd) {\n      return function (dictFoldable) {\n          return minimumBy(dictFoldable)(Data_Ord.compare(dictOrd));\n      };\n  };\n  var foldableMaybe = {\n      foldr: function (v) {\n          return function (z) {\n              return function (v1) {\n                  if (v1 instanceof Data_Maybe.Nothing) {\n                      return z;\n                  };\n                  if (v1 instanceof Data_Maybe.Just) {\n                      return v(v1.value0)(z);\n                  };\n                  throw new Error(\"Failed pattern match at Data.Foldable (line 138, column 1 - line 144, column 27): \" + [ v.constructor.name, z.constructor.name, v1.constructor.name ]);\n              };\n          };\n      },\n      foldl: function (v) {\n          return function (z) {\n              return function (v1) {\n                  if (v1 instanceof Data_Maybe.Nothing) {\n                      return z;\n                  };\n                  if (v1 instanceof Data_Maybe.Just) {\n                      return v(z)(v1.value0);\n                  };\n                  throw new Error(\"Failed pattern match at Data.Foldable (line 138, column 1 - line 144, column 27): \" + [ v.constructor.name, z.constructor.name, v1.constructor.name ]);\n              };\n          };\n      },\n      foldMap: function (dictMonoid) {\n          return function (v) {\n              return function (v1) {\n                  if (v1 instanceof Data_Maybe.Nothing) {\n                      return Data_Monoid.mempty(dictMonoid);\n                  };\n                  if (v1 instanceof Data_Maybe.Just) {\n                      return v(v1.value0);\n                  };\n                  throw new Error(\"Failed pattern match at Data.Foldable (line 138, column 1 - line 144, column 27): \" + [ v.constructor.name, v1.constructor.name ]);\n              };\n          };\n      }\n  };\n  var foldMapDefaultR = function (dictFoldable) {\n      return function (dictMonoid) {\n          return function (f) {\n              return foldr(dictFoldable)(function (x) {\n                  return function (acc) {\n                      return Data_Semigroup.append(dictMonoid.Semigroup0())(f(x))(acc);\n                  };\n              })(Data_Monoid.mempty(dictMonoid));\n          };\n      };\n  };\n  var foldableArray = {\n      foldr: $foreign.foldrArray,\n      foldl: $foreign.foldlArray,\n      foldMap: function (dictMonoid) {\n          return foldMapDefaultR(foldableArray)(dictMonoid);\n      }\n  };\n  var foldMap = function (dict) {\n      return dict.foldMap;\n  };\n  var any = function (dictFoldable) {\n      return function (dictHeytingAlgebra) {\n          return Data_Newtype.alaF()()()()(Data_Monoid_Disj.Disj)(foldMap(dictFoldable)(Data_Monoid_Disj.monoidDisj(dictHeytingAlgebra)));\n      };\n  };\n  exports[\"foldr\"] = foldr;\n  exports[\"foldl\"] = foldl;\n  exports[\"foldMap\"] = foldMap;\n  exports[\"traverse_\"] = traverse_;\n  exports[\"for_\"] = for_;\n  exports[\"intercalate\"] = intercalate;\n  exports[\"any\"] = any;\n  exports[\"maximum\"] = maximum;\n  exports[\"minimum\"] = minimum;\n  exports[\"foldableArray\"] = foldableArray;\n  exports[\"foldableMaybe\"] = foldableMaybe;\n})(PS);\n(function($PS) {\n  // Generated by purs version 0.14.7\n  \"use strict\";\n  $PS[\"Data.Tuple\"] = $PS[\"Data.Tuple\"] || {};\n  var exports = $PS[\"Data.Tuple\"];\n  var Data_Eq = $PS[\"Data.Eq\"];\n  var Data_Ord = $PS[\"Data.Ord\"];\n  var Data_Ordering = $PS[\"Data.Ordering\"];        \n  var Tuple = (function () {\n      function Tuple(value0, value1) {\n          this.value0 = value0;\n          this.value1 = value1;\n      };\n      Tuple.create = function (value0) {\n          return function (value1) {\n              return new Tuple(value0, value1);\n          };\n      };\n      return Tuple;\n  })();\n  var uncurry = function (f) {\n      return function (v) {\n          return f(v.value0)(v.value1);\n      };\n  };\n  var snd = function (v) {\n      return v.value1;\n  };\n  var functorTuple = {\n      map: function (f) {\n          return function (m) {\n              return new Tuple(m.value0, f(m.value1));\n          };\n      }\n  };\n  var fst = function (v) {\n      return v.value0;\n  };\n  var eqTuple = function (dictEq) {\n      return function (dictEq1) {\n          return {\n              eq: function (x) {\n                  return function (y) {\n                      return Data_Eq.eq(dictEq)(x.value0)(y.value0) && Data_Eq.eq(dictEq1)(x.value1)(y.value1);\n                  };\n              }\n          };\n      };\n  };\n  var ordTuple = function (dictOrd) {\n      return function (dictOrd1) {\n          return {\n              compare: function (x) {\n                  return function (y) {\n                      var v = Data_Ord.compare(dictOrd)(x.value0)(y.value0);\n                      if (v instanceof Data_Ordering.LT) {\n                          return Data_Ordering.LT.value;\n                      };\n                      if (v instanceof Data_Ordering.GT) {\n                          return Data_Ordering.GT.value;\n                      };\n                      return Data_Ord.compare(dictOrd1)(x.value1)(y.value1);\n                  };\n              },\n              Eq0: function () {\n                  return eqTuple(dictOrd.Eq0())(dictOrd1.Eq0());\n              }\n          };\n      };\n  };\n  exports[\"Tuple\"] = Tuple;\n  exports[\"fst\"] = fst;\n  exports[\"snd\"] = snd;\n  exports[\"uncurry\"] = uncurry;\n  exports[\"ordTuple\"] = ordTuple;\n  exports[\"functorTuple\"] = functorTuple;\n})(PS);\n(function(exports) {\n  \"use strict\";\n\n  exports.unfoldrArrayImpl = function (isNothing) {\n    return function (fromJust) {\n      return function (fst) {\n        return function (snd) {\n          return function (f) {\n            return function (b) {\n              var result = [];\n              var value = b;\n              while (true) { // eslint-disable-line no-constant-condition\n                var maybe = f(value);\n                if (isNothing(maybe)) return result;\n                var tuple = fromJust(maybe);\n                result.push(fst(tuple));\n                value = snd(tuple);\n              }\n            };\n          };\n        };\n      };\n    };\n  };\n})(PS[\"Data.Unfoldable\"] = PS[\"Data.Unfoldable\"] || {});\n(function(exports) {\n  \"use strict\";\n\n  exports.unfoldr1ArrayImpl = function (isNothing) {\n    return function (fromJust) {\n      return function (fst) {\n        return function (snd) {\n          return function (f) {\n            return function (b) {\n              var result = [];\n              var value = b;\n              while (true) { // eslint-disable-line no-constant-condition\n                var tuple = f(value);\n                result.push(fst(tuple));\n                var maybe = snd(tuple);\n                if (isNothing(maybe)) return result;\n                value = fromJust(maybe);\n              }\n            };\n          };\n        };\n      };\n    };\n  };\n})(PS[\"Data.Unfoldable1\"] = PS[\"Data.Unfoldable1\"] || {});\n(function($PS) {\n  // Generated by purs version 0.14.7\n  \"use strict\";\n  $PS[\"Data.Unfoldable1\"] = $PS[\"Data.Unfoldable1\"] || {};\n  var exports = $PS[\"Data.Unfoldable1\"];\n  var $foreign = $PS[\"Data.Unfoldable1\"];\n  var Data_Maybe = $PS[\"Data.Maybe\"];\n  var Data_Tuple = $PS[\"Data.Tuple\"];\n  var unfoldable1Array = {\n      unfoldr1: $foreign.unfoldr1ArrayImpl(Data_Maybe.isNothing)(Data_Maybe.fromJust())(Data_Tuple.fst)(Data_Tuple.snd)\n  };\n  exports[\"unfoldable1Array\"] = unfoldable1Array;\n})(PS);\n(function($PS) {\n  // Generated by purs version 0.14.7\n  \"use strict\";\n  $PS[\"Data.Unfoldable\"] = $PS[\"Data.Unfoldable\"] || {};\n  var exports = $PS[\"Data.Unfoldable\"];\n  var $foreign = $PS[\"Data.Unfoldable\"];\n  var Data_Maybe = $PS[\"Data.Maybe\"];\n  var Data_Tuple = $PS[\"Data.Tuple\"];\n  var Data_Unfoldable1 = $PS[\"Data.Unfoldable1\"];  \n  var unfoldr = function (dict) {\n      return dict.unfoldr;\n  };\n  var unfoldableArray = {\n      unfoldr: $foreign.unfoldrArrayImpl(Data_Maybe.isNothing)(Data_Maybe.fromJust())(Data_Tuple.fst)(Data_Tuple.snd),\n      Unfoldable10: function () {\n          return Data_Unfoldable1.unfoldable1Array;\n      }\n  };\n  exports[\"unfoldr\"] = unfoldr;\n  exports[\"unfoldableArray\"] = unfoldableArray;\n})(PS);\n(function($PS) {\n  // Generated by purs version 0.14.7\n  \"use strict\";\n  $PS[\"Data.Array\"] = $PS[\"Data.Array\"] || {};\n  var exports = $PS[\"Data.Array\"];\n  var $foreign = $PS[\"Data.Array\"];\n  var Control_Bind = $PS[\"Control.Bind\"];\n  var Data_Array_ST = $PS[\"Data.Array.ST\"];\n  var Data_Boolean = $PS[\"Data.Boolean\"];\n  var Data_Eq = $PS[\"Data.Eq\"];\n  var Data_Foldable = $PS[\"Data.Foldable\"];\n  var Data_Function = $PS[\"Data.Function\"];\n  var Data_Functor = $PS[\"Data.Functor\"];\n  var Data_Maybe = $PS[\"Data.Maybe\"];\n  var Data_Ordering = $PS[\"Data.Ordering\"];\n  var Data_Semigroup = $PS[\"Data.Semigroup\"];\n  var Data_Tuple = $PS[\"Data.Tuple\"];\n  var Data_Unfoldable = $PS[\"Data.Unfoldable\"];                                          \n  var unsafeIndex = function () {\n      return $foreign.unsafeIndexImpl;\n  }; \n  var toUnfoldable = function (dictUnfoldable) {\n      return function (xs) {\n          var len = $foreign.length(xs);\n          var f = function (i) {\n              if (i < len) {\n                  return new Data_Maybe.Just(new Data_Tuple.Tuple(unsafeIndex()(xs)(i), i + 1 | 0));\n              };\n              if (Data_Boolean.otherwise) {\n                  return Data_Maybe.Nothing.value;\n              };\n              throw new Error(\"Failed pattern match at Data.Array (line 158, column 3 - line 160, column 26): \" + [ i.constructor.name ]);\n          };\n          return Data_Unfoldable.unfoldr(dictUnfoldable)(f)(0);\n      };\n  };\n  var sortBy = function (comp) {\n      return $foreign.sortByImpl(comp)(function (v) {\n          if (v instanceof Data_Ordering.GT) {\n              return 1;\n          };\n          if (v instanceof Data_Ordering.EQ) {\n              return 0;\n          };\n          if (v instanceof Data_Ordering.LT) {\n              return -1 | 0;\n          };\n          throw new Error(\"Failed pattern match at Data.Array (line 831, column 31 - line 834, column 11): \" + [ v.constructor.name ]);\n      });\n  };\n  var snoc = function (xs) {\n      return function (x) {\n          return Data_Array_ST.withArray(Data_Array_ST.push(x))(xs)();\n      };\n  };\n  var singleton = function (a) {\n      return [ a ];\n  };\n  var $$null = function (xs) {\n      return $foreign.length(xs) === 0;\n  };\n  var intercalate = function (dictMonoid) {\n      return Data_Foldable.intercalate(Data_Foldable.foldableArray)(dictMonoid);\n  };\n  var foldMap = function (dictMonoid) {\n      return Data_Foldable.foldMap(Data_Foldable.foldableArray)(dictMonoid);\n  };\n  var findIndex = $foreign.findIndexImpl(Data_Maybe.Just.create)(Data_Maybe.Nothing.value);\n  var find = function (f) {\n      return function (xs) {\n          return Data_Functor.map(Data_Maybe.functorMaybe)(unsafeIndex()(xs))(findIndex(f)(xs));\n      };\n  };\n  var elemIndex = function (dictEq) {\n      return function (x) {\n          return findIndex(function (v) {\n              return Data_Eq.eq(dictEq)(v)(x);\n          });\n      };\n  };\n  var notElem = function (dictEq) {\n      return function (a) {\n          return function (arr) {\n              return Data_Maybe.isNothing(elemIndex(dictEq)(a)(arr));\n          };\n      };\n  };\n  var drop = function (n) {\n      return function (xs) {\n          var $80 = n < 1;\n          if ($80) {\n              return xs;\n          };\n          return $foreign.slice(n)($foreign.length(xs))(xs);\n      };\n  };\n  var deleteAt = $foreign[\"_deleteAt\"](Data_Maybe.Just.create)(Data_Maybe.Nothing.value);\n  var deleteBy = function (v) {\n      return function (v1) {\n          return function (v2) {\n              if (v2.length === 0) {\n                  return [  ];\n              };\n              return Data_Maybe.maybe(v2)(function (i) {\n                  return Data_Maybe.fromJust()(deleteAt(i)(v2));\n              })(findIndex(v(v1))(v2));\n          };\n      };\n  };\n  var $$delete = function (dictEq) {\n      return deleteBy(Data_Eq.eq(dictEq));\n  };\n  var cons = function (x) {\n      return function (xs) {\n          return Data_Semigroup.append(Data_Semigroup.semigroupArray)([ x ])(xs);\n      };\n  };\n  var concatMap = Data_Function.flip(Control_Bind.bind(Control_Bind.bindArray));\n  var mapMaybe = function (f) {\n      return concatMap((function () {\n          var $100 = Data_Maybe.maybe([  ])(singleton);\n          return function ($101) {\n              return $100(f($101));\n          };\n      })());\n  };\n  exports[\"toUnfoldable\"] = toUnfoldable;\n  exports[\"null\"] = $$null;\n  exports[\"cons\"] = cons;\n  exports[\"snoc\"] = snoc;\n  exports[\"notElem\"] = notElem;\n  exports[\"find\"] = find;\n  exports[\"mapMaybe\"] = mapMaybe;\n  exports[\"foldMap\"] = foldMap;\n  exports[\"intercalate\"] = intercalate;\n  exports[\"sortBy\"] = sortBy;\n  exports[\"drop\"] = drop;\n  exports[\"delete\"] = $$delete;\n  exports[\"deleteBy\"] = deleteBy;\n  exports[\"length\"] = $foreign.length;\n  exports[\"concat\"] = $foreign.concat;\n  exports[\"filter\"] = $foreign.filter;\n})(PS);\n(function(exports) {\n  \"use strict\";\n\n  exports.runFn3 = function (fn) {\n    return function (a) {\n      return function (b) {\n        return function (c) {\n          return fn(a, b, c);\n        };\n      };\n    };\n  };\n\n  exports.runFn4 = function (fn) {\n    return function (a) {\n      return function (b) {\n        return function (c) {\n          return function (d) {\n            return fn(a, b, c, d);\n          };\n        };\n      };\n    };\n  };\n})(PS[\"Data.Function.Uncurried\"] = PS[\"Data.Function.Uncurried\"] || {});\n(function($PS) {\n  // Generated by purs version 0.14.7\n  \"use strict\";\n  $PS[\"Data.Function.Uncurried\"] = $PS[\"Data.Function.Uncurried\"] || {};\n  var exports = $PS[\"Data.Function.Uncurried\"];\n  var $foreign = $PS[\"Data.Function.Uncurried\"];\n  exports[\"runFn3\"] = $foreign.runFn3;\n  exports[\"runFn4\"] = $foreign.runFn4;\n})(PS);\n(function(exports) {\n  \"use strict\";\n\n  // jshint maxparams: 3\n\n  exports.traverseArrayImpl = (function () {\n    function array1(a) {\n      return [a];\n    }\n\n    function array2(a) {\n      return function (b) {\n        return [a, b];\n      };\n    }\n\n    function array3(a) {\n      return function (b) {\n        return function (c) {\n          return [a, b, c];\n        };\n      };\n    }\n\n    function concat2(xs) {\n      return function (ys) {\n        return xs.concat(ys);\n      };\n    }\n\n    return function (apply) {\n      return function (map) {\n        return function (pure) {\n          return function (f) {\n            return function (array) {\n              function go(bot, top) {\n                switch (top - bot) {\n                case 0: return pure([]);\n                case 1: return map(array1)(f(array[bot]));\n                case 2: return apply(map(array2)(f(array[bot])))(f(array[bot + 1]));\n                case 3: return apply(apply(map(array3)(f(array[bot])))(f(array[bot + 1])))(f(array[bot + 2]));\n                default:\n                  // This slightly tricky pivot selection aims to produce two\n                  // even-length partitions where possible.\n                  var pivot = bot + Math.floor((top - bot) / 4) * 2;\n                  return apply(map(concat2)(go(bot, pivot)))(go(pivot, top));\n                }\n              }\n              return go(0, array.length);\n            };\n          };\n        };\n      };\n    };\n  })();\n})(PS[\"Data.Traversable\"] = PS[\"Data.Traversable\"] || {});\n(function($PS) {\n  // Generated by purs version 0.14.7\n  \"use strict\";\n  $PS[\"Data.Traversable\"] = $PS[\"Data.Traversable\"] || {};\n  var exports = $PS[\"Data.Traversable\"];\n  var $foreign = $PS[\"Data.Traversable\"];\n  var Control_Applicative = $PS[\"Control.Applicative\"];\n  var Control_Apply = $PS[\"Control.Apply\"];\n  var Control_Category = $PS[\"Control.Category\"];\n  var Data_Foldable = $PS[\"Data.Foldable\"];\n  var Data_Functor = $PS[\"Data.Functor\"];            \n  var traverse = function (dict) {\n      return dict.traverse;\n  };\n  var sequenceDefault = function (dictTraversable) {\n      return function (dictApplicative) {\n          return traverse(dictTraversable)(dictApplicative)(Control_Category.identity(Control_Category.categoryFn));\n      };\n  };\n  var traversableArray = {\n      traverse: function (dictApplicative) {\n          return $foreign.traverseArrayImpl(Control_Apply.apply(dictApplicative.Apply0()))(Data_Functor.map((dictApplicative.Apply0()).Functor0()))(Control_Applicative.pure(dictApplicative));\n      },\n      sequence: function (dictApplicative) {\n          return sequenceDefault(traversableArray)(dictApplicative);\n      },\n      Functor0: function () {\n          return Data_Functor.functorArray;\n      },\n      Foldable1: function () {\n          return Data_Foldable.foldableArray;\n      }\n  };\n  exports[\"traverse\"] = traverse;\n  exports[\"traversableArray\"] = traversableArray;\n})(PS);\n(function($PS) {\n  // Generated by purs version 0.14.7\n  \"use strict\";\n  $PS[\"Data.TraversableWithIndex\"] = $PS[\"Data.TraversableWithIndex\"] || {};\n  var exports = $PS[\"Data.TraversableWithIndex\"];\n  var traverseWithIndex = function (dict) {\n      return dict.traverseWithIndex;\n  };\n  exports[\"traverseWithIndex\"] = traverseWithIndex;\n})(PS);\n(function(exports) {\n  \"use strict\";\n\n  exports[\"new\"] = function () {\n    return {};\n  };\n\n  exports.poke = function (k) {\n    return function (v) {\n      return function (m) {\n        return function () {\n          m[k] = v;\n          return m;\n        };\n      };\n    };\n  };\n})(PS[\"Foreign.Object.ST\"] = PS[\"Foreign.Object.ST\"] || {});\n(function($PS) {\n  // Generated by purs version 0.14.7\n  \"use strict\";\n  $PS[\"Foreign.Object.ST\"] = $PS[\"Foreign.Object.ST\"] || {};\n  var exports = $PS[\"Foreign.Object.ST\"];\n  var $foreign = $PS[\"Foreign.Object.ST\"];\n  exports[\"new\"] = $foreign[\"new\"];\n  exports[\"poke\"] = $foreign.poke;\n})(PS);\n(function($PS) {\n  // Generated by purs version 0.14.7\n  \"use strict\";\n  $PS[\"Foreign.Object\"] = $PS[\"Foreign.Object\"] || {};\n  var exports = $PS[\"Foreign.Object\"];\n  var $foreign = $PS[\"Foreign.Object\"];\n  var Control_Applicative = $PS[\"Control.Applicative\"];\n  var Control_Apply = $PS[\"Control.Apply\"];\n  var Control_Category = $PS[\"Control.Category\"];\n  var Data_Array = $PS[\"Data.Array\"];\n  var Data_Foldable = $PS[\"Data.Foldable\"];\n  var Data_Function = $PS[\"Data.Function\"];\n  var Data_Function_Uncurried = $PS[\"Data.Function.Uncurried\"];\n  var Data_Functor = $PS[\"Data.Functor\"];\n  var Data_Maybe = $PS[\"Data.Maybe\"];\n  var Data_Monoid = $PS[\"Data.Monoid\"];\n  var Data_Semigroup = $PS[\"Data.Semigroup\"];\n  var Data_Traversable = $PS[\"Data.Traversable\"];\n  var Data_TraversableWithIndex = $PS[\"Data.TraversableWithIndex\"];\n  var Data_Tuple = $PS[\"Data.Tuple\"];\n  var Foreign_Object_ST = $PS[\"Foreign.Object.ST\"];        \n  var values = $foreign.toArrayWithKey(function (v) {\n      return function (v1) {\n          return v1;\n      };\n  });\n  var toUnfoldable = function (dictUnfoldable) {\n      var $35 = Data_Array.toUnfoldable(dictUnfoldable);\n      var $36 = $foreign.toArrayWithKey(Data_Tuple.Tuple.create);\n      return function ($37) {\n          return $35($36($37));\n      };\n  };                                                             \n  var thawST = $foreign[\"_copyST\"];\n  var mutate = function (f) {\n      return function (m) {\n          return $foreign.runST(function __do() {\n              var s = thawST(m)();\n              f(s)();\n              return s;\n          });\n      };\n  };                                                                                                    \n  var mapWithKey = function (f) {\n      return function (m) {\n          return $foreign[\"_mapWithKey\"](m, f);\n      };\n  };\n  var lookup = Data_Function_Uncurried.runFn4($foreign[\"_lookup\"])(Data_Maybe.Nothing.value)(Data_Maybe.Just.create);\n  var insert = function (k) {\n      return function (v) {\n          return mutate(Foreign_Object_ST.poke(k)(v));\n      };\n  };\n  var functorObject = {\n      map: function (f) {\n          return function (m) {\n              return $foreign[\"_fmapObject\"](m, f);\n          };\n      }\n  };\n  var functorWithIndexObject = {\n      mapWithIndex: mapWithKey,\n      Functor0: function () {\n          return functorObject;\n      }\n  };\n  var fold = $foreign[\"_foldM\"](Data_Function.applyFlipped);\n  var foldMap = function (dictMonoid) {\n      return function (f) {\n          return fold(function (acc) {\n              return function (k) {\n                  return function (v) {\n                      return Data_Semigroup.append(dictMonoid.Semigroup0())(acc)(f(k)(v));\n                  };\n              };\n          })(Data_Monoid.mempty(dictMonoid));\n      };\n  };\n  var foldableObject = {\n      foldl: function (f) {\n          return fold(function (z) {\n              return function (v) {\n                  return f(z);\n              };\n          });\n      },\n      foldr: function (f) {\n          return function (z) {\n              return function (m) {\n                  return Data_Foldable.foldr(Data_Foldable.foldableArray)(f)(z)(values(m));\n              };\n          };\n      },\n      foldMap: function (dictMonoid) {\n          return function (f) {\n              return foldMap(dictMonoid)(Data_Function[\"const\"](f));\n          };\n      }\n  };\n  var foldableWithIndexObject = {\n      foldlWithIndex: function (f) {\n          return fold(Data_Function.flip(f));\n      },\n      foldrWithIndex: function (f) {\n          return function (z) {\n              return function (m) {\n                  return Data_Foldable.foldr(Data_Foldable.foldableArray)(Data_Tuple.uncurry(f))(z)($foreign.toArrayWithKey(Data_Tuple.Tuple.create)(m));\n              };\n          };\n      },\n      foldMapWithIndex: function (dictMonoid) {\n          return foldMap(dictMonoid);\n      },\n      Foldable0: function () {\n          return foldableObject;\n      }\n  };\n  var traversableWithIndexObject = {\n      traverseWithIndex: function (dictApplicative) {\n          return function (f) {\n              return function (ms) {\n                  return fold(function (acc) {\n                      return function (k) {\n                          return function (v) {\n                              return Control_Apply.apply(dictApplicative.Apply0())(Data_Functor.map((dictApplicative.Apply0()).Functor0())(Data_Function.flip(insert(k)))(acc))(f(k)(v));\n                          };\n                      };\n                  })(Control_Applicative.pure(dictApplicative)($foreign.empty))(ms);\n              };\n          };\n      },\n      FunctorWithIndex0: function () {\n          return functorWithIndexObject;\n      },\n      FoldableWithIndex1: function () {\n          return foldableWithIndexObject;\n      },\n      Traversable2: function () {\n          return traversableObject;\n      }\n  };\n  var traversableObject = {\n      traverse: function (dictApplicative) {\n          var $42 = Data_TraversableWithIndex.traverseWithIndex(traversableWithIndexObject)(dictApplicative);\n          return function ($43) {\n              return $42(Data_Function[\"const\"]($43));\n          };\n      },\n      sequence: function (dictApplicative) {\n          return Data_Traversable.traverse(traversableObject)(dictApplicative)(Control_Category.identity(Control_Category.categoryFn));\n      },\n      Functor0: function () {\n          return functorObject;\n      },\n      Foldable1: function () {\n          return foldableObject;\n      }\n  };\n  exports[\"lookup\"] = lookup;\n  exports[\"toUnfoldable\"] = toUnfoldable;\n  exports[\"values\"] = values;\n  exports[\"traversableObject\"] = traversableObject;\n  exports[\"empty\"] = $foreign.empty;\n})(PS);\n(function($PS) {\n  // Generated by purs version 0.14.7\n  \"use strict\";\n  $PS[\"Data.Argonaut.Core\"] = $PS[\"Data.Argonaut.Core\"] || {};\n  var exports = $PS[\"Data.Argonaut.Core\"];\n  var $foreign = $PS[\"Data.Argonaut.Core\"];\n  var Data_Function = $PS[\"Data.Function\"];\n  var Data_Maybe = $PS[\"Data.Maybe\"];\n  var Foreign_Object = $PS[\"Foreign.Object\"];                \n  var verbJsonType = function (def) {\n      return function (f) {\n          return function (g) {\n              return g(def)(f);\n          };\n      };\n  };\n  var toJsonType = verbJsonType(Data_Maybe.Nothing.value)(Data_Maybe.Just.create);\n  var jsonEmptyObject = $foreign.fromObject(Foreign_Object.empty);\n  var caseJsonObject = function (d) {\n      return function (f) {\n          return function (j) {\n              return $foreign[\"_caseJson\"](Data_Function[\"const\"](d), Data_Function[\"const\"](d), Data_Function[\"const\"](d), Data_Function[\"const\"](d), Data_Function[\"const\"](d), f, j);\n          };\n      };\n  };                                        \n  var toObject = toJsonType(caseJsonObject);\n  var caseJsonNumber = function (d) {\n      return function (f) {\n          return function (j) {\n              return $foreign[\"_caseJson\"](Data_Function[\"const\"](d), Data_Function[\"const\"](d), f, Data_Function[\"const\"](d), Data_Function[\"const\"](d), Data_Function[\"const\"](d), j);\n          };\n      };\n  };\n  exports[\"caseJsonNumber\"] = caseJsonNumber;\n  exports[\"toObject\"] = toObject;\n  exports[\"jsonEmptyObject\"] = jsonEmptyObject;\n  exports[\"stringify\"] = $foreign.stringify;\n})(PS);\n(function(exports) {\n  \"use strict\";\n\n  exports._jsonParser = function (fail, succ, s) {\n    try {\n      return succ(JSON.parse(s));\n    }\n    catch (e) {\n      return fail(e.message);\n    }\n  };\n})(PS[\"Data.Argonaut.Parser\"] = PS[\"Data.Argonaut.Parser\"] || {});\n(function($PS) {\n  // Generated by purs version 0.14.7\n  \"use strict\";\n  $PS[\"Data.Argonaut.Parser\"] = $PS[\"Data.Argonaut.Parser\"] || {};\n  var exports = $PS[\"Data.Argonaut.Parser\"];\n  var $foreign = $PS[\"Data.Argonaut.Parser\"];\n  var Data_Either = $PS[\"Data.Either\"];                \n  var jsonParser = function (j) {\n      return $foreign[\"_jsonParser\"](Data_Either.Left.create, Data_Either.Right.create, j);\n  };\n  exports[\"jsonParser\"] = jsonParser;\n})(PS);\n(function(exports) {\n  \"use strict\";\n\n  exports.replaceAll = function (s1) {\n    return function (s2) {\n      return function (s3) {\n        return s3.replace(new RegExp(s1.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, \"\\\\$&\"), \"g\"), s2); // eslint-disable-line no-useless-escape\n      };\n    };\n  };\n\n  exports.split = function (sep) {\n    return function (s) {\n      return s.split(sep);\n    };\n  };\n\n  exports.toLower = function (s) {\n    return s.toLowerCase();\n  };\n\n  exports.joinWith = function (s) {\n    return function (xs) {\n      return xs.join(s);\n    };\n  };\n})(PS[\"Data.String.Common\"] = PS[\"Data.String.Common\"] || {});\n(function($PS) {\n  // Generated by purs version 0.14.7\n  \"use strict\";\n  $PS[\"Data.String.Common\"] = $PS[\"Data.String.Common\"] || {};\n  var exports = $PS[\"Data.String.Common\"];\n  var $foreign = $PS[\"Data.String.Common\"];                \n  var $$null = function (s) {\n      return s === \"\";\n  };\n  exports[\"null\"] = $$null;\n  exports[\"replaceAll\"] = $foreign.replaceAll;\n  exports[\"split\"] = $foreign.split;\n  exports[\"toLower\"] = $foreign.toLower;\n  exports[\"joinWith\"] = $foreign.joinWith;\n})(PS);\n(function(exports) {\n  \"use strict\";\n\n  // A helper which transforms the result ofencodeURIComponent to be compliant\n  // with RFC3896, as described in the MDN documentation here:\n  //\n  // https://web.archive.org/web/20201206001047/https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent\n  function toRFC3896(input) {\n    return input.replace(/[!'()*]/g, function (c) {\n      return \"%\" + c.charCodeAt(0).toString(16);\n    });\n  }\n\n  exports._encodeURIComponent = function encode(fail, succeed, input) {\n    try {\n      return succeed(toRFC3896(encodeURIComponent(input)));\n    } catch (err) {\n      return fail(err);\n    }\n  };\n\n  exports._encodeFormURLComponent = function encode(fail, succeed, input) {\n    try {\n      return succeed(toRFC3896(encodeURIComponent(input)).replace(/%20/g, \"+\"));\n    } catch (err) {\n      return fail(err);\n    }\n  };\n\n  function _decodeURIComponent(fail, succeed, input) {\n    try {\n      return succeed(decodeURIComponent(input));\n    } catch (err) {\n      return fail(err);\n    }\n  }\n\n  exports._decodeURIComponent = _decodeURIComponent;\n})(PS[\"JSURI\"] = PS[\"JSURI\"] || {});\n(function($PS) {\n  // Generated by purs version 0.14.7\n  \"use strict\";\n  $PS[\"JSURI\"] = $PS[\"JSURI\"] || {};\n  var exports = $PS[\"JSURI\"];\n  var $foreign = $PS[\"JSURI\"];\n  var Data_Function = $PS[\"Data.Function\"];\n  var Data_Function_Uncurried = $PS[\"Data.Function.Uncurried\"];\n  var Data_Maybe = $PS[\"Data.Maybe\"];                \n  var $$encodeURIComponent = Data_Function_Uncurried.runFn3($foreign[\"_encodeURIComponent\"])(Data_Function[\"const\"](Data_Maybe.Nothing.value))(Data_Maybe.Just.create);\n  var encodeFormURLComponent = Data_Function_Uncurried.runFn3($foreign[\"_encodeFormURLComponent\"])(Data_Function[\"const\"](Data_Maybe.Nothing.value))(Data_Maybe.Just.create);\n  var $$decodeURIComponent = Data_Function_Uncurried.runFn3($foreign[\"_decodeURIComponent\"])(Data_Function[\"const\"](Data_Maybe.Nothing.value))(Data_Maybe.Just.create);\n  exports[\"encodeURIComponent\"] = $$encodeURIComponent;\n  exports[\"encodeFormURLComponent\"] = encodeFormURLComponent;\n  exports[\"decodeURIComponent\"] = $$decodeURIComponent;\n})(PS);\n(function($PS) {\n  // Generated by purs version 0.14.7\n  \"use strict\";\n  $PS[\"Data.FormURLEncoded\"] = $PS[\"Data.FormURLEncoded\"] || {};\n  var exports = $PS[\"Data.FormURLEncoded\"];\n  var Control_Apply = $PS[\"Control.Apply\"];\n  var Data_Functor = $PS[\"Data.Functor\"];\n  var Data_Maybe = $PS[\"Data.Maybe\"];\n  var Data_String_Common = $PS[\"Data.String.Common\"];\n  var Data_Traversable = $PS[\"Data.Traversable\"];\n  var JSURI = $PS[\"JSURI\"];\n  var toArray = function (v) {\n      return v;\n  };                                                                                                                 \n  var encode = (function () {\n      var encodePart = function (v) {\n          if (v.value1 instanceof Data_Maybe.Nothing) {\n              return JSURI.encodeFormURLComponent(v.value0);\n          };\n          if (v.value1 instanceof Data_Maybe.Just) {\n              return Control_Apply.apply(Data_Maybe.applyMaybe)(Data_Functor.map(Data_Maybe.functorMaybe)(function (key) {\n                  return function (val) {\n                      return key + (\"=\" + val);\n                  };\n              })(JSURI.encodeFormURLComponent(v.value0)))(JSURI.encodeFormURLComponent(v.value1.value0));\n          };\n          throw new Error(\"Failed pattern match at Data.FormURLEncoded (line 37, column 18 - line 39, column 116): \" + [ v.constructor.name ]);\n      };\n      var $16 = Data_Functor.map(Data_Maybe.functorMaybe)(Data_String_Common.joinWith(\"&\"));\n      var $17 = Data_Traversable.traverse(Data_Traversable.traversableArray)(Data_Maybe.applicativeMaybe)(encodePart);\n      return function ($18) {\n          return $16($17(toArray($18)));\n      };\n  })();\n  exports[\"encode\"] = encode;\n})(PS);\n(function(exports) {\n  \"use strict\";\n\n  exports.showIntImpl = function (n) {\n    return n.toString();\n  };\n\n  exports.showNumberImpl = function (n) {\n    var str = n.toString();\n    return isNaN(str + \".0\") ? str : str + \".0\";\n  };\n\n  exports.showStringImpl = function (s) {\n    var l = s.length;\n    return \"\\\"\" + s.replace(\n      /[\\0-\\x1F\\x7F\"\\\\]/g, // eslint-disable-line no-control-regex\n      function (c, i) {\n        switch (c) {\n          case \"\\\"\":\n          case \"\\\\\":\n            return \"\\\\\" + c;\n          case \"\\x07\": return \"\\\\a\";\n          case \"\\b\": return \"\\\\b\";\n          case \"\\f\": return \"\\\\f\";\n          case \"\\n\": return \"\\\\n\";\n          case \"\\r\": return \"\\\\r\";\n          case \"\\t\": return \"\\\\t\";\n          case \"\\v\": return \"\\\\v\";\n        }\n        var k = i + 1;\n        var empty = k < l && s[k] >= \"0\" && s[k] <= \"9\" ? \"\\\\&\" : \"\";\n        return \"\\\\\" + c.charCodeAt(0).toString(10) + empty;\n      }\n    ) + \"\\\"\";\n  };\n})(PS[\"Data.Show\"] = PS[\"Data.Show\"] || {});\n(function($PS) {\n  // Generated by purs version 0.14.7\n  \"use strict\";\n  $PS[\"Data.Show\"] = $PS[\"Data.Show\"] || {};\n  var exports = $PS[\"Data.Show\"];\n  var $foreign = $PS[\"Data.Show\"];                   \n  var showString = {\n      show: $foreign.showStringImpl\n  };\n  var showNumber = {\n      show: $foreign.showNumberImpl\n  };\n  var showInt = {\n      show: $foreign.showIntImpl\n  };\n  var show = function (dict) {\n      return dict.show;\n  };\n  exports[\"show\"] = show;\n  exports[\"showInt\"] = showInt;\n  exports[\"showNumber\"] = showNumber;\n  exports[\"showString\"] = showString;\n})(PS);\n(function($PS) {\n  // Generated by purs version 0.14.7\n  \"use strict\";\n  $PS[\"Data.HTTP.Method\"] = $PS[\"Data.HTTP.Method\"] || {};\n  var exports = $PS[\"Data.HTTP.Method\"];\n  var Data_Either = $PS[\"Data.Either\"];\n  var Data_Show = $PS[\"Data.Show\"];                                  \n  var OPTIONS = (function () {\n      function OPTIONS() {\n\n      };\n      OPTIONS.value = new OPTIONS();\n      return OPTIONS;\n  })();\n  var GET = (function () {\n      function GET() {\n\n      };\n      GET.value = new GET();\n      return GET;\n  })();\n  var HEAD = (function () {\n      function HEAD() {\n\n      };\n      HEAD.value = new HEAD();\n      return HEAD;\n  })();\n  var POST = (function () {\n      function POST() {\n\n      };\n      POST.value = new POST();\n      return POST;\n  })();\n  var PUT = (function () {\n      function PUT() {\n\n      };\n      PUT.value = new PUT();\n      return PUT;\n  })();\n  var DELETE = (function () {\n      function DELETE() {\n\n      };\n      DELETE.value = new DELETE();\n      return DELETE;\n  })();\n  var TRACE = (function () {\n      function TRACE() {\n\n      };\n      TRACE.value = new TRACE();\n      return TRACE;\n  })();\n  var CONNECT = (function () {\n      function CONNECT() {\n\n      };\n      CONNECT.value = new CONNECT();\n      return CONNECT;\n  })();\n  var PROPFIND = (function () {\n      function PROPFIND() {\n\n      };\n      PROPFIND.value = new PROPFIND();\n      return PROPFIND;\n  })();\n  var PROPPATCH = (function () {\n      function PROPPATCH() {\n\n      };\n      PROPPATCH.value = new PROPPATCH();\n      return PROPPATCH;\n  })();\n  var MKCOL = (function () {\n      function MKCOL() {\n\n      };\n      MKCOL.value = new MKCOL();\n      return MKCOL;\n  })();\n  var COPY = (function () {\n      function COPY() {\n\n      };\n      COPY.value = new COPY();\n      return COPY;\n  })();\n  var MOVE = (function () {\n      function MOVE() {\n\n      };\n      MOVE.value = new MOVE();\n      return MOVE;\n  })();\n  var LOCK = (function () {\n      function LOCK() {\n\n      };\n      LOCK.value = new LOCK();\n      return LOCK;\n  })();\n  var UNLOCK = (function () {\n      function UNLOCK() {\n\n      };\n      UNLOCK.value = new UNLOCK();\n      return UNLOCK;\n  })();\n  var PATCH = (function () {\n      function PATCH() {\n\n      };\n      PATCH.value = new PATCH();\n      return PATCH;\n  })();\n  var unCustomMethod = function (v) {\n      return v;\n  };\n  var showMethod = {\n      show: function (v) {\n          if (v instanceof OPTIONS) {\n              return \"OPTIONS\";\n          };\n          if (v instanceof GET) {\n              return \"GET\";\n          };\n          if (v instanceof HEAD) {\n              return \"HEAD\";\n          };\n          if (v instanceof POST) {\n              return \"POST\";\n          };\n          if (v instanceof PUT) {\n              return \"PUT\";\n          };\n          if (v instanceof DELETE) {\n              return \"DELETE\";\n          };\n          if (v instanceof TRACE) {\n              return \"TRACE\";\n          };\n          if (v instanceof CONNECT) {\n              return \"CONNECT\";\n          };\n          if (v instanceof PROPFIND) {\n              return \"PROPFIND\";\n          };\n          if (v instanceof PROPPATCH) {\n              return \"PROPPATCH\";\n          };\n          if (v instanceof MKCOL) {\n              return \"MKCOL\";\n          };\n          if (v instanceof COPY) {\n              return \"COPY\";\n          };\n          if (v instanceof MOVE) {\n              return \"MOVE\";\n          };\n          if (v instanceof LOCK) {\n              return \"LOCK\";\n          };\n          if (v instanceof UNLOCK) {\n              return \"UNLOCK\";\n          };\n          if (v instanceof PATCH) {\n              return \"PATCH\";\n          };\n          throw new Error(\"Failed pattern match at Data.HTTP.Method (line 43, column 1 - line 59, column 23): \" + [ v.constructor.name ]);\n      }\n  };\n  var print = Data_Either.either(Data_Show.show(showMethod))(unCustomMethod);\n  exports[\"GET\"] = GET;\n  exports[\"POST\"] = POST;\n  exports[\"DELETE\"] = DELETE;\n  exports[\"print\"] = print;\n})(PS);\n(function($PS) {\n  // Generated by purs version 0.14.7\n  \"use strict\";\n  $PS[\"Data.Identity\"] = $PS[\"Data.Identity\"] || {};\n  var exports = $PS[\"Data.Identity\"];              \n  var Identity = function (x) {\n      return x;\n  };\n  var functorIdentity = {\n      map: function (f) {\n          return function (m) {\n              return f(m);\n          };\n      }\n  };\n  var applyIdentity = {\n      apply: function (v) {\n          return function (v1) {\n              return v(v1);\n          };\n      },\n      Functor0: function () {\n          return functorIdentity;\n      }\n  };\n  var bindIdentity = {\n      bind: function (v) {\n          return function (f) {\n              return f(v);\n          };\n      },\n      Apply0: function () {\n          return applyIdentity;\n      }\n  };\n  var applicativeIdentity = {\n      pure: Identity,\n      Apply0: function () {\n          return applyIdentity;\n      }\n  };\n  var monadIdentity = {\n      Applicative0: function () {\n          return applicativeIdentity;\n      },\n      Bind1: function () {\n          return bindIdentity;\n      }\n  };\n  exports[\"functorIdentity\"] = functorIdentity;\n  exports[\"monadIdentity\"] = monadIdentity;\n})(PS);\n(function($PS) {\n  // Generated by purs version 0.14.7\n  \"use strict\";\n  $PS[\"Control.Plus\"] = $PS[\"Control.Plus\"] || {};\n  var exports = $PS[\"Control.Plus\"];\n  var empty = function (dict) {\n      return dict.empty;\n  };\n  exports[\"empty\"] = empty;\n})(PS);\n(function($PS) {\n  // Generated by purs version 0.14.7\n  \"use strict\";\n  $PS[\"Data.NonEmpty\"] = $PS[\"Data.NonEmpty\"] || {};\n  var exports = $PS[\"Data.NonEmpty\"];\n  var Control_Plus = $PS[\"Control.Plus\"];                      \n  var NonEmpty = (function () {\n      function NonEmpty(value0, value1) {\n          this.value0 = value0;\n          this.value1 = value1;\n      };\n      NonEmpty.create = function (value0) {\n          return function (value1) {\n              return new NonEmpty(value0, value1);\n          };\n      };\n      return NonEmpty;\n  })();\n  var singleton = function (dictPlus) {\n      return function (a) {\n          return new NonEmpty(a, Control_Plus.empty(dictPlus));\n      };\n  };\n  exports[\"NonEmpty\"] = NonEmpty;\n  exports[\"singleton\"] = singleton;\n})(PS);\n(function($PS) {\n  // Generated by purs version 0.14.7\n  \"use strict\";\n  $PS[\"Data.List.Types\"] = $PS[\"Data.List.Types\"] || {};\n  var exports = $PS[\"Data.List.Types\"];\n  var Control_Apply = $PS[\"Control.Apply\"];\n  var Data_Foldable = $PS[\"Data.Foldable\"];\n  var Data_Function = $PS[\"Data.Function\"];\n  var Data_Functor = $PS[\"Data.Functor\"];\n  var Data_Monoid = $PS[\"Data.Monoid\"];\n  var Data_NonEmpty = $PS[\"Data.NonEmpty\"];\n  var Data_Semigroup = $PS[\"Data.Semigroup\"];        \n  var Nil = (function () {\n      function Nil() {\n\n      };\n      Nil.value = new Nil();\n      return Nil;\n  })();\n  var Cons = (function () {\n      function Cons(value0, value1) {\n          this.value0 = value0;\n          this.value1 = value1;\n      };\n      Cons.create = function (value0) {\n          return function (value1) {\n              return new Cons(value0, value1);\n          };\n      };\n      return Cons;\n  })();\n  var NonEmptyList = function (x) {\n      return x;\n  };\n  var toList = function (v) {\n      return new Cons(v.value0, v.value1);\n  };\n  var listMap = function (f) {\n      var chunkedRevMap = function ($copy_chunksAcc) {\n          return function ($copy_v) {\n              var $tco_var_chunksAcc = $copy_chunksAcc;\n              var $tco_done = false;\n              var $tco_result;\n              function $tco_loop(chunksAcc, v) {\n                  if (v instanceof Cons && (v.value1 instanceof Cons && v.value1.value1 instanceof Cons)) {\n                      $tco_var_chunksAcc = new Cons(v, chunksAcc);\n                      $copy_v = v.value1.value1.value1;\n                      return;\n                  };\n                  var unrolledMap = function (v1) {\n                      if (v1 instanceof Cons && (v1.value1 instanceof Cons && v1.value1.value1 instanceof Nil)) {\n                          return new Cons(f(v1.value0), new Cons(f(v1.value1.value0), Nil.value));\n                      };\n                      if (v1 instanceof Cons && v1.value1 instanceof Nil) {\n                          return new Cons(f(v1.value0), Nil.value);\n                      };\n                      return Nil.value;\n                  };\n                  var reverseUnrolledMap = function ($copy_v1) {\n                      return function ($copy_acc) {\n                          var $tco_var_v1 = $copy_v1;\n                          var $tco_done1 = false;\n                          var $tco_result;\n                          function $tco_loop(v1, acc) {\n                              if (v1 instanceof Cons && (v1.value0 instanceof Cons && (v1.value0.value1 instanceof Cons && v1.value0.value1.value1 instanceof Cons))) {\n                                  $tco_var_v1 = v1.value1;\n                                  $copy_acc = new Cons(f(v1.value0.value0), new Cons(f(v1.value0.value1.value0), new Cons(f(v1.value0.value1.value1.value0), acc)));\n                                  return;\n                              };\n                              $tco_done1 = true;\n                              return acc;\n                          };\n                          while (!$tco_done1) {\n                              $tco_result = $tco_loop($tco_var_v1, $copy_acc);\n                          };\n                          return $tco_result;\n                      };\n                  };\n                  $tco_done = true;\n                  return reverseUnrolledMap(chunksAcc)(unrolledMap(v));\n              };\n              while (!$tco_done) {\n                  $tco_result = $tco_loop($tco_var_chunksAcc, $copy_v);\n              };\n              return $tco_result;\n          };\n      };\n      return chunkedRevMap(Nil.value);\n  };\n  var functorList = {\n      map: listMap\n  };                                                                   \n  var foldableList = {\n      foldr: function (f) {\n          return function (b) {\n              var rev = (function () {\n                  var go = function ($copy_acc) {\n                      return function ($copy_v) {\n                          var $tco_var_acc = $copy_acc;\n                          var $tco_done = false;\n                          var $tco_result;\n                          function $tco_loop(acc, v) {\n                              if (v instanceof Nil) {\n                                  $tco_done = true;\n                                  return acc;\n                              };\n                              if (v instanceof Cons) {\n                                  $tco_var_acc = new Cons(v.value0, acc);\n                                  $copy_v = v.value1;\n                                  return;\n                              };\n                              throw new Error(\"Failed pattern match at Data.List.Types (line 108, column 7 - line 108, column 23): \" + [ acc.constructor.name, v.constructor.name ]);\n                          };\n                          while (!$tco_done) {\n                              $tco_result = $tco_loop($tco_var_acc, $copy_v);\n                          };\n                          return $tco_result;\n                      };\n                  };\n                  return go(Nil.value);\n              })();\n              var $205 = Data_Foldable.foldl(foldableList)(Data_Function.flip(f))(b);\n              return function ($206) {\n                  return $205(rev($206));\n              };\n          };\n      },\n      foldl: function (f) {\n          var go = function ($copy_b) {\n              return function ($copy_v) {\n                  var $tco_var_b = $copy_b;\n                  var $tco_done1 = false;\n                  var $tco_result;\n                  function $tco_loop(b, v) {\n                      if (v instanceof Nil) {\n                          $tco_done1 = true;\n                          return b;\n                      };\n                      if (v instanceof Cons) {\n                          $tco_var_b = f(b)(v.value0);\n                          $copy_v = v.value1;\n                          return;\n                      };\n                      throw new Error(\"Failed pattern match at Data.List.Types (line 112, column 12 - line 114, column 30): \" + [ v.constructor.name ]);\n                  };\n                  while (!$tco_done1) {\n                      $tco_result = $tco_loop($tco_var_b, $copy_v);\n                  };\n                  return $tco_result;\n              };\n          };\n          return go;\n      },\n      foldMap: function (dictMonoid) {\n          return function (f) {\n              return Data_Foldable.foldl(foldableList)(function (acc) {\n                  var $207 = Data_Semigroup.append(dictMonoid.Semigroup0())(acc);\n                  return function ($208) {\n                      return $207(f($208));\n                  };\n              })(Data_Monoid.mempty(dictMonoid));\n          };\n      }\n  };\n  var semigroupList = {\n      append: function (xs) {\n          return function (ys) {\n              return Data_Foldable.foldr(foldableList)(Cons.create)(ys)(xs);\n          };\n      }\n  };\n  var semigroupNonEmptyList = {\n      append: function (v) {\n          return function (as$prime) {\n              return new Data_NonEmpty.NonEmpty(v.value0, Data_Semigroup.append(semigroupList)(v.value1)(toList(as$prime)));\n          };\n      }\n  };\n  var applyList = {\n      apply: function (v) {\n          return function (v1) {\n              if (v instanceof Nil) {\n                  return Nil.value;\n              };\n              if (v instanceof Cons) {\n                  return Data_Semigroup.append(semigroupList)(Data_Functor.map(functorList)(v.value0)(v1))(Control_Apply.apply(applyList)(v.value1)(v1));\n              };\n              throw new Error(\"Failed pattern match at Data.List.Types (line 158, column 1 - line 160, column 48): \" + [ v.constructor.name, v1.constructor.name ]);\n          };\n      },\n      Functor0: function () {\n          return functorList;\n      }\n  };\n  var applicativeList = {\n      pure: function (a) {\n          return new Cons(a, Nil.value);\n      },\n      Apply0: function () {\n          return applyList;\n      }\n  };\n  var altList = {\n      alt: Data_Semigroup.append(semigroupList),\n      Functor0: function () {\n          return functorList;\n      }\n  };\n  var plusList = {\n      empty: Nil.value,\n      Alt0: function () {\n          return altList;\n      }\n  };\n  exports[\"Nil\"] = Nil;\n  exports[\"Cons\"] = Cons;\n  exports[\"NonEmptyList\"] = NonEmptyList;\n  exports[\"semigroupList\"] = semigroupList;\n  exports[\"foldableList\"] = foldableList;\n  exports[\"applicativeList\"] = applicativeList;\n  exports[\"plusList\"] = plusList;\n  exports[\"semigroupNonEmptyList\"] = semigroupNonEmptyList;\n})(PS);\n(function($PS) {\n  // Generated by purs version 0.14.7\n  \"use strict\";\n  $PS[\"Data.List.NonEmpty\"] = $PS[\"Data.List.NonEmpty\"] || {};\n  var exports = $PS[\"Data.List.NonEmpty\"];\n  var Data_List_Types = $PS[\"Data.List.Types\"];\n  var Data_NonEmpty = $PS[\"Data.NonEmpty\"];\n  var singleton = (function () {\n      var $171 = Data_NonEmpty.singleton(Data_List_Types.plusList);\n      return function ($172) {\n          return Data_List_Types.NonEmptyList($171($172));\n      };\n  })();\n  var head = function (v) {\n      return v.value0;\n  };\n  var cons = function (y) {\n      return function (v) {\n          return new Data_NonEmpty.NonEmpty(y, new Data_List_Types.Cons(v.value0, v.value1));\n      };\n  };\n  exports[\"singleton\"] = singleton;\n  exports[\"cons\"] = cons;\n  exports[\"head\"] = head;\n})(PS);\n(function(exports) {\n  /* eslint-disable no-eq-null, eqeqeq */\n\n  \"use strict\";\n\n  exports[\"null\"] = null;\n\n  exports.nullable = function (a, r, f) {\n    return a == null ? r : f(a);\n  };\n\n  exports.notNull = function (x) {\n    return x;\n  };\n})(PS[\"Data.Nullable\"] = PS[\"Data.Nullable\"] || {});\n(function($PS) {\n  // Generated by purs version 0.14.7\n  \"use strict\";\n  $PS[\"Data.Nullable\"] = $PS[\"Data.Nullable\"] || {};\n  var exports = $PS[\"Data.Nullable\"];\n  var $foreign = $PS[\"Data.Nullable\"];\n  var Data_Maybe = $PS[\"Data.Maybe\"];              \n  var toNullable = Data_Maybe.maybe($foreign[\"null\"])($foreign.notNull);\n  var toMaybe = function (n) {\n      return $foreign.nullable(n, Data_Maybe.Nothing.value, Data_Maybe.Just.create);\n  };\n  exports[\"toMaybe\"] = toMaybe;\n  exports[\"toNullable\"] = toNullable;\n  exports[\"null\"] = $foreign[\"null\"];\n})(PS);\n(function(exports) {\n  /* globals setImmediate, clearImmediate, setTimeout, clearTimeout */\n  /* eslint-disable no-unused-vars, no-prototype-builtins, no-use-before-define, no-unused-labels, no-param-reassign */\n  \"use strict\";\n\n  var Aff = function () {\n    // A unique value for empty.\n    var EMPTY = {};\n\n    /*\n\n  An awkward approximation. We elide evidence we would otherwise need in PS for\n  efficiency sake.\n\n  data Aff eff a\n    = Pure a\n    | Throw Error\n    | Catch (Aff eff a) (Error -> Aff eff a)\n    | Sync (Eff eff a)\n    | Async ((Either Error a -> Eff eff Unit) -> Eff eff (Canceler eff))\n    | forall b. Bind (Aff eff b) (b -> Aff eff a)\n    | forall b. Bracket (Aff eff b) (BracketConditions eff b) (b -> Aff eff a)\n    | forall b. Fork Boolean (Aff eff b) ?(Fiber eff b -> a)\n    | Sequential (ParAff aff a)\n\n  */  \n    var PURE    = \"Pure\";\n    var THROW   = \"Throw\";\n    var CATCH   = \"Catch\";\n    var SYNC    = \"Sync\";\n    var ASYNC   = \"Async\";\n    var BIND    = \"Bind\";\n    var BRACKET = \"Bracket\";\n    var FORK    = \"Fork\";\n    var SEQ     = \"Sequential\";\n\n    /*\n\n  data ParAff eff a\n    = forall b. Map (b -> a) (ParAff eff b)\n    | forall b. Apply (ParAff eff (b -> a)) (ParAff eff b)\n    | Alt (ParAff eff a) (ParAff eff a)\n    | ?Par (Aff eff a)\n\n  */  \n    var MAP   = \"Map\";\n    var APPLY = \"Apply\";\n    var ALT   = \"Alt\";\n\n    // Various constructors used in interpretation\n    var CONS      = \"Cons\";      // Cons-list, for stacks\n    var RESUME    = \"Resume\";    // Continue indiscriminately\n    var RELEASE   = \"Release\";   // Continue with bracket finalizers\n    var FINALIZER = \"Finalizer\"; // A non-interruptible effect\n    var FINALIZED = \"Finalized\"; // Marker for finalization\n    var FORKED    = \"Forked\";    // Reference to a forked fiber, with resumption stack\n    var FIBER     = \"Fiber\";     // Actual fiber reference\n    var THUNK     = \"Thunk\";     // Primed effect, ready to invoke\n\n    function Aff(tag, _1, _2, _3) {\n      this.tag = tag;\n      this._1  = _1;\n      this._2  = _2;\n      this._3  = _3;\n    }\n\n    function AffCtr(tag) {\n      var fn = function (_1, _2, _3) {\n        return new Aff(tag, _1, _2, _3);\n      };\n      fn.tag = tag;\n      return fn;\n    }\n\n    function nonCanceler(error) {\n      return new Aff(PURE, void 0);\n    }\n\n    function runEff(eff) {\n      try {\n        eff();\n      } catch (error) {\n        setTimeout(function () {\n          throw error;\n        }, 0);\n      }\n    }\n\n    function runSync(left, right, eff) {\n      try {\n        return right(eff());\n      } catch (error) {\n        return left(error);\n      }\n    }\n\n    function runAsync(left, eff, k) {\n      try {\n        return eff(k)();\n      } catch (error) {\n        k(left(error))();\n        return nonCanceler;\n      }\n    }\n\n    var Scheduler = function () {\n      var limit    = 1024;\n      var size     = 0;\n      var ix       = 0;\n      var queue    = new Array(limit);\n      var draining = false;\n\n      function drain() {\n        var thunk;\n        draining = true;\n        while (size !== 0) {\n          size--;\n          thunk     = queue[ix];\n          queue[ix] = void 0;\n          ix        = (ix + 1) % limit;\n          thunk();\n        }\n        draining = false;\n      }\n\n      return {\n        isDraining: function () {\n          return draining;\n        },\n        enqueue: function (cb) {\n          var i, tmp;\n          if (size === limit) {\n            tmp = draining;\n            drain();\n            draining = tmp;\n          }\n\n          queue[(ix + size) % limit] = cb;\n          size++;\n\n          if (!draining) {\n            drain();\n          }\n        }\n      };\n    }();\n\n    function Supervisor(util) {\n      var fibers  = {};\n      var fiberId = 0;\n      var count   = 0;\n\n      return {\n        register: function (fiber) {\n          var fid = fiberId++;\n          fiber.onComplete({\n            rethrow: true,\n            handler: function (result) {\n              return function () {\n                count--;\n                delete fibers[fid];\n              };\n            }\n          })();\n          fibers[fid] = fiber;\n          count++;\n        },\n        isEmpty: function () {\n          return count === 0;\n        },\n        killAll: function (killError, cb) {\n          return function () {\n            if (count === 0) {\n              return cb();\n            }\n\n            var killCount = 0;\n            var kills     = {};\n\n            function kill(fid) {\n              kills[fid] = fibers[fid].kill(killError, function (result) {\n                return function () {\n                  delete kills[fid];\n                  killCount--;\n                  if (util.isLeft(result) && util.fromLeft(result)) {\n                    setTimeout(function () {\n                      throw util.fromLeft(result);\n                    }, 0);\n                  }\n                  if (killCount === 0) {\n                    cb();\n                  }\n                };\n              })();\n            }\n\n            for (var k in fibers) {\n              if (fibers.hasOwnProperty(k)) {\n                killCount++;\n                kill(k);\n              }\n            }\n\n            fibers  = {};\n            fiberId = 0;\n            count   = 0;\n\n            return function (error) {\n              return new Aff(SYNC, function () {\n                for (var k in kills) {\n                  if (kills.hasOwnProperty(k)) {\n                    kills[k]();\n                  }\n                }\n              });\n            };\n          };\n        }\n      };\n    }\n\n    // Fiber state machine\n    var SUSPENDED   = 0; // Suspended, pending a join.\n    var CONTINUE    = 1; // Interpret the next instruction.\n    var STEP_BIND   = 2; // Apply the next bind.\n    var STEP_RESULT = 3; // Handle potential failure from a result.\n    var PENDING     = 4; // An async effect is running.\n    var RETURN      = 5; // The current stack has returned.\n    var COMPLETED   = 6; // The entire fiber has completed.\n\n    function Fiber(util, supervisor, aff) {\n      // Monotonically increasing tick, increased on each asynchronous turn.\n      var runTick = 0;\n\n      // The current branch of the state machine.\n      var status = SUSPENDED;\n\n      // The current point of interest for the state machine branch.\n      var step      = aff;  // Successful step\n      var fail      = null; // Failure step\n      var interrupt = null; // Asynchronous interrupt\n\n      // Stack of continuations for the current fiber.\n      var bhead = null;\n      var btail = null;\n\n      // Stack of attempts and finalizers for error recovery. Every `Cons` is also\n      // tagged with current `interrupt` state. We use this to track which items\n      // should be ignored or evaluated as a result of a kill.\n      var attempts = null;\n\n      // A special state is needed for Bracket, because it cannot be killed. When\n      // we enter a bracket acquisition or finalizer, we increment the counter,\n      // and then decrement once complete.\n      var bracketCount = 0;\n\n      // Each join gets a new id so they can be revoked.\n      var joinId  = 0;\n      var joins   = null;\n      var rethrow = true;\n\n      // Each invocation of `run` requires a tick. When an asynchronous effect is\n      // resolved, we must check that the local tick coincides with the fiber\n      // tick before resuming. This prevents multiple async continuations from\n      // accidentally resuming the same fiber. A common example may be invoking\n      // the provided callback in `makeAff` more than once, but it may also be an\n      // async effect resuming after the fiber was already cancelled.\n      function run(localRunTick) {\n        var tmp, result, attempt;\n        while (true) {\n          tmp       = null;\n          result    = null;\n          attempt   = null;\n\n          switch (status) {\n          case STEP_BIND:\n            status = CONTINUE;\n            try {\n              step   = bhead(step);\n              if (btail === null) {\n                bhead = null;\n              } else {\n                bhead = btail._1;\n                btail = btail._2;\n              }\n            } catch (e) {\n              status = RETURN;\n              fail   = util.left(e);\n              step   = null;\n            }\n            break;\n\n          case STEP_RESULT:\n            if (util.isLeft(step)) {\n              status = RETURN;\n              fail   = step;\n              step   = null;\n            } else if (bhead === null) {\n              status = RETURN;\n            } else {\n              status = STEP_BIND;\n              step   = util.fromRight(step);\n            }\n            break;\n\n          case CONTINUE:\n            switch (step.tag) {\n            case BIND:\n              if (bhead) {\n                btail = new Aff(CONS, bhead, btail);\n              }\n              bhead  = step._2;\n              status = CONTINUE;\n              step   = step._1;\n              break;\n\n            case PURE:\n              if (bhead === null) {\n                status = RETURN;\n                step   = util.right(step._1);\n              } else {\n                status = STEP_BIND;\n                step   = step._1;\n              }\n              break;\n\n            case SYNC:\n              status = STEP_RESULT;\n              step   = runSync(util.left, util.right, step._1);\n              break;\n\n            case ASYNC:\n              status = PENDING;\n              step   = runAsync(util.left, step._1, function (result) {\n                return function () {\n                  if (runTick !== localRunTick) {\n                    return;\n                  }\n                  runTick++;\n                  Scheduler.enqueue(function () {\n                    // It's possible to interrupt the fiber between enqueuing and\n                    // resuming, so we need to check that the runTick is still\n                    // valid.\n                    if (runTick !== localRunTick + 1) {\n                      return;\n                    }\n                    status = STEP_RESULT;\n                    step   = result;\n                    run(runTick);\n                  });\n                };\n              });\n              return;\n\n            case THROW:\n              status = RETURN;\n              fail   = util.left(step._1);\n              step   = null;\n              break;\n\n            // Enqueue the Catch so that we can call the error handler later on\n            // in case of an exception.\n            case CATCH:\n              if (bhead === null) {\n                attempts = new Aff(CONS, step, attempts, interrupt);\n              } else {\n                attempts = new Aff(CONS, step, new Aff(CONS, new Aff(RESUME, bhead, btail), attempts, interrupt), interrupt);\n              }\n              bhead    = null;\n              btail    = null;\n              status   = CONTINUE;\n              step     = step._1;\n              break;\n\n            // Enqueue the Bracket so that we can call the appropriate handlers\n            // after resource acquisition.\n            case BRACKET:\n              bracketCount++;\n              if (bhead === null) {\n                attempts = new Aff(CONS, step, attempts, interrupt);\n              } else {\n                attempts = new Aff(CONS, step, new Aff(CONS, new Aff(RESUME, bhead, btail), attempts, interrupt), interrupt);\n              }\n              bhead  = null;\n              btail  = null;\n              status = CONTINUE;\n              step   = step._1;\n              break;\n\n            case FORK:\n              status = STEP_RESULT;\n              tmp    = Fiber(util, supervisor, step._2);\n              if (supervisor) {\n                supervisor.register(tmp);\n              }\n              if (step._1) {\n                tmp.run();\n              }\n              step = util.right(tmp);\n              break;\n\n            case SEQ:\n              status = CONTINUE;\n              step   = sequential(util, supervisor, step._1);\n              break;\n            }\n            break;\n\n          case RETURN:\n            bhead = null;\n            btail = null;\n            // If the current stack has returned, and we have no other stacks to\n            // resume or finalizers to run, the fiber has halted and we can\n            // invoke all join callbacks. Otherwise we need to resume.\n            if (attempts === null) {\n              status = COMPLETED;\n              step   = interrupt || fail || step;\n            } else {\n              // The interrupt status for the enqueued item.\n              tmp      = attempts._3;\n              attempt  = attempts._1;\n              attempts = attempts._2;\n\n              switch (attempt.tag) {\n              // We cannot recover from an unmasked interrupt. Otherwise we should\n              // continue stepping, or run the exception handler if an exception\n              // was raised.\n              case CATCH:\n                // We should compare the interrupt status as well because we\n                // only want it to apply if there has been an interrupt since\n                // enqueuing the catch.\n                if (interrupt && interrupt !== tmp && bracketCount === 0) {\n                  status = RETURN;\n                } else if (fail) {\n                  status = CONTINUE;\n                  step   = attempt._2(util.fromLeft(fail));\n                  fail   = null;\n                }\n                break;\n\n              // We cannot resume from an unmasked interrupt or exception.\n              case RESUME:\n                // As with Catch, we only want to ignore in the case of an\n                // interrupt since enqueing the item.\n                if (interrupt && interrupt !== tmp && bracketCount === 0 || fail) {\n                  status = RETURN;\n                } else {\n                  bhead  = attempt._1;\n                  btail  = attempt._2;\n                  status = STEP_BIND;\n                  step   = util.fromRight(step);\n                }\n                break;\n\n              // If we have a bracket, we should enqueue the handlers,\n              // and continue with the success branch only if the fiber has\n              // not been interrupted. If the bracket acquisition failed, we\n              // should not run either.\n              case BRACKET:\n                bracketCount--;\n                if (fail === null) {\n                  result   = util.fromRight(step);\n                  // We need to enqueue the Release with the same interrupt\n                  // status as the Bracket that is initiating it.\n                  attempts = new Aff(CONS, new Aff(RELEASE, attempt._2, result), attempts, tmp);\n                  // We should only coninue as long as the interrupt status has not changed or\n                  // we are currently within a non-interruptable finalizer.\n                  if (interrupt === tmp || bracketCount > 0) {\n                    status = CONTINUE;\n                    step   = attempt._3(result);\n                  }\n                }\n                break;\n\n              // Enqueue the appropriate handler. We increase the bracket count\n              // because it should not be cancelled.\n              case RELEASE:\n                attempts = new Aff(CONS, new Aff(FINALIZED, step, fail), attempts, interrupt);\n                status   = CONTINUE;\n                // It has only been killed if the interrupt status has changed\n                // since we enqueued the item, and the bracket count is 0. If the\n                // bracket count is non-zero then we are in a masked state so it's\n                // impossible to be killed.\n                if (interrupt && interrupt !== tmp && bracketCount === 0) {\n                  step = attempt._1.killed(util.fromLeft(interrupt))(attempt._2);\n                } else if (fail) {\n                  step = attempt._1.failed(util.fromLeft(fail))(attempt._2);\n                } else {\n                  step = attempt._1.completed(util.fromRight(step))(attempt._2);\n                }\n                fail = null;\n                bracketCount++;\n                break;\n\n              case FINALIZER:\n                bracketCount++;\n                attempts = new Aff(CONS, new Aff(FINALIZED, step, fail), attempts, interrupt);\n                status   = CONTINUE;\n                step     = attempt._1;\n                break;\n\n              case FINALIZED:\n                bracketCount--;\n                status = RETURN;\n                step   = attempt._1;\n                fail   = attempt._2;\n                break;\n              }\n            }\n            break;\n\n          case COMPLETED:\n            for (var k in joins) {\n              if (joins.hasOwnProperty(k)) {\n                rethrow = rethrow && joins[k].rethrow;\n                runEff(joins[k].handler(step));\n              }\n            }\n            joins = null;\n            // If we have an interrupt and a fail, then the thread threw while\n            // running finalizers. This should always rethrow in a fresh stack.\n            if (interrupt && fail) {\n              setTimeout(function () {\n                throw util.fromLeft(fail);\n              }, 0);\n            // If we have an unhandled exception, and no other fiber has joined\n            // then we need to throw the exception in a fresh stack.\n            } else if (util.isLeft(step) && rethrow) {\n              setTimeout(function () {\n                // Guard on reathrow because a completely synchronous fiber can\n                // still have an observer which was added after-the-fact.\n                if (rethrow) {\n                  throw util.fromLeft(step);\n                }\n              }, 0);\n            }\n            return;\n          case SUSPENDED:\n            status = CONTINUE;\n            break;\n          case PENDING: return;\n          }\n        }\n      }\n\n      function onComplete(join) {\n        return function () {\n          if (status === COMPLETED) {\n            rethrow = rethrow && join.rethrow;\n            join.handler(step)();\n            return function () {};\n          }\n\n          var jid    = joinId++;\n          joins      = joins || {};\n          joins[jid] = join;\n\n          return function() {\n            if (joins !== null) {\n              delete joins[jid];\n            }\n          };\n        };\n      }\n\n      function kill(error, cb) {\n        return function () {\n          if (status === COMPLETED) {\n            cb(util.right(void 0))();\n            return function () {};\n          }\n\n          var canceler = onComplete({\n            rethrow: false,\n            handler: function (/* unused */) {\n              return cb(util.right(void 0));\n            }\n          })();\n\n          switch (status) {\n          case SUSPENDED:\n            interrupt = util.left(error);\n            status    = COMPLETED;\n            step      = interrupt;\n            run(runTick);\n            break;\n          case PENDING:\n            if (interrupt === null) {\n              interrupt = util.left(error);\n            }\n            if (bracketCount === 0) {\n              if (status === PENDING) {\n                attempts = new Aff(CONS, new Aff(FINALIZER, step(error)), attempts, interrupt);\n              }\n              status   = RETURN;\n              step     = null;\n              fail     = null;\n              run(++runTick);\n            }\n            break;\n          default:\n            if (interrupt === null) {\n              interrupt = util.left(error);\n            }\n            if (bracketCount === 0) {\n              status = RETURN;\n              step   = null;\n              fail   = null;\n            }\n          }\n\n          return canceler;\n        };\n      }\n\n      function join(cb) {\n        return function () {\n          var canceler = onComplete({\n            rethrow: false,\n            handler: cb\n          })();\n          if (status === SUSPENDED) {\n            run(runTick);\n          }\n          return canceler;\n        };\n      }\n\n      return {\n        kill: kill,\n        join: join,\n        onComplete: onComplete,\n        isSuspended: function () {\n          return status === SUSPENDED;\n        },\n        run: function () {\n          if (status === SUSPENDED) {\n            if (!Scheduler.isDraining()) {\n              Scheduler.enqueue(function () {\n                run(runTick);\n              });\n            } else {\n              run(runTick);\n            }\n          }\n        }\n      };\n    }\n\n    function runPar(util, supervisor, par, cb) {\n      // Table of all forked fibers.\n      var fiberId   = 0;\n      var fibers    = {};\n\n      // Table of currently running cancelers, as a product of `Alt` behavior.\n      var killId    = 0;\n      var kills     = {};\n\n      // Error used for early cancelation on Alt branches.\n      var early     = new Error(\"[ParAff] Early exit\");\n\n      // Error used to kill the entire tree.\n      var interrupt = null;\n\n      // The root pointer of the tree.\n      var root      = EMPTY;\n\n      // Walks a tree, invoking all the cancelers. Returns the table of pending\n      // cancellation fibers.\n      function kill(error, par, cb) {\n        var step  = par;\n        var head  = null;\n        var tail  = null;\n        var count = 0;\n        var kills = {};\n        var tmp, kid;\n\n        loop: while (true) {\n          tmp = null;\n\n          switch (step.tag) {\n          case FORKED:\n            if (step._3 === EMPTY) {\n              tmp = fibers[step._1];\n              kills[count++] = tmp.kill(error, function (result) {\n                return function () {\n                  count--;\n                  if (count === 0) {\n                    cb(result)();\n                  }\n                };\n              });\n            }\n            // Terminal case.\n            if (head === null) {\n              break loop;\n            }\n            // Go down the right side of the tree.\n            step = head._2;\n            if (tail === null) {\n              head = null;\n            } else {\n              head = tail._1;\n              tail = tail._2;\n            }\n            break;\n          case MAP:\n            step = step._2;\n            break;\n          case APPLY:\n          case ALT:\n            if (head) {\n              tail = new Aff(CONS, head, tail);\n            }\n            head = step;\n            step = step._1;\n            break;\n          }\n        }\n\n        if (count === 0) {\n          cb(util.right(void 0))();\n        } else {\n          // Run the cancelation effects. We alias `count` because it's mutable.\n          kid = 0;\n          tmp = count;\n          for (; kid < tmp; kid++) {\n            kills[kid] = kills[kid]();\n          }\n        }\n\n        return kills;\n      }\n\n      // When a fiber resolves, we need to bubble back up the tree with the\n      // result, computing the applicative nodes.\n      function join(result, head, tail) {\n        var fail, step, lhs, rhs, tmp, kid;\n\n        if (util.isLeft(result)) {\n          fail = result;\n          step = null;\n        } else {\n          step = result;\n          fail = null;\n        }\n\n        loop: while (true) {\n          lhs = null;\n          rhs = null;\n          tmp = null;\n          kid = null;\n\n          // We should never continue if the entire tree has been interrupted.\n          if (interrupt !== null) {\n            return;\n          }\n\n          // We've made it all the way to the root of the tree, which means\n          // the tree has fully evaluated.\n          if (head === null) {\n            cb(fail || step)();\n            return;\n          }\n\n          // The tree has already been computed, so we shouldn't try to do it\n          // again. This should never happen.\n          // TODO: Remove this?\n          if (head._3 !== EMPTY) {\n            return;\n          }\n\n          switch (head.tag) {\n          case MAP:\n            if (fail === null) {\n              head._3 = util.right(head._1(util.fromRight(step)));\n              step    = head._3;\n            } else {\n              head._3 = fail;\n            }\n            break;\n          case APPLY:\n            lhs = head._1._3;\n            rhs = head._2._3;\n            // If we have a failure we should kill the other side because we\n            // can't possible yield a result anymore.\n            if (fail) {\n              head._3 = fail;\n              tmp     = true;\n              kid     = killId++;\n\n              kills[kid] = kill(early, fail === lhs ? head._2 : head._1, function (/* unused */) {\n                return function () {\n                  delete kills[kid];\n                  if (tmp) {\n                    tmp = false;\n                  } else if (tail === null) {\n                    join(fail, null, null);\n                  } else {\n                    join(fail, tail._1, tail._2);\n                  }\n                };\n              });\n\n              if (tmp) {\n                tmp = false;\n                return;\n              }\n            } else if (lhs === EMPTY || rhs === EMPTY) {\n              // We can only proceed if both sides have resolved.\n              return;\n            } else {\n              step    = util.right(util.fromRight(lhs)(util.fromRight(rhs)));\n              head._3 = step;\n            }\n            break;\n          case ALT:\n            lhs = head._1._3;\n            rhs = head._2._3;\n            // We can only proceed if both have resolved or we have a success\n            if (lhs === EMPTY && util.isLeft(rhs) || rhs === EMPTY && util.isLeft(lhs)) {\n              return;\n            }\n            // If both sides resolve with an error, we should continue with the\n            // first error\n            if (lhs !== EMPTY && util.isLeft(lhs) && rhs !== EMPTY && util.isLeft(rhs)) {\n              fail    = step === lhs ? rhs : lhs;\n              step    = null;\n              head._3 = fail;\n            } else {\n              head._3 = step;\n              tmp     = true;\n              kid     = killId++;\n              // Once a side has resolved, we need to cancel the side that is still\n              // pending before we can continue.\n              kills[kid] = kill(early, step === lhs ? head._2 : head._1, function (/* unused */) {\n                return function () {\n                  delete kills[kid];\n                  if (tmp) {\n                    tmp = false;\n                  } else if (tail === null) {\n                    join(step, null, null);\n                  } else {\n                    join(step, tail._1, tail._2);\n                  }\n                };\n              });\n\n              if (tmp) {\n                tmp = false;\n                return;\n              }\n            }\n            break;\n          }\n\n          if (tail === null) {\n            head = null;\n          } else {\n            head = tail._1;\n            tail = tail._2;\n          }\n        }\n      }\n\n      function resolve(fiber) {\n        return function (result) {\n          return function () {\n            delete fibers[fiber._1];\n            fiber._3 = result;\n            join(result, fiber._2._1, fiber._2._2);\n          };\n        };\n      }\n\n      // Walks the applicative tree, substituting non-applicative nodes with\n      // `FORKED` nodes. In this tree, all applicative nodes use the `_3` slot\n      // as a mutable slot for memoization. In an unresolved state, the `_3`\n      // slot is `EMPTY`. In the cases of `ALT` and `APPLY`, we always walk\n      // the left side first, because both operations are left-associative. As\n      // we `RETURN` from those branches, we then walk the right side.\n      function run() {\n        var status = CONTINUE;\n        var step   = par;\n        var head   = null;\n        var tail   = null;\n        var tmp, fid;\n\n        loop: while (true) {\n          tmp = null;\n          fid = null;\n\n          switch (status) {\n          case CONTINUE:\n            switch (step.tag) {\n            case MAP:\n              if (head) {\n                tail = new Aff(CONS, head, tail);\n              }\n              head = new Aff(MAP, step._1, EMPTY, EMPTY);\n              step = step._2;\n              break;\n            case APPLY:\n              if (head) {\n                tail = new Aff(CONS, head, tail);\n              }\n              head = new Aff(APPLY, EMPTY, step._2, EMPTY);\n              step = step._1;\n              break;\n            case ALT:\n              if (head) {\n                tail = new Aff(CONS, head, tail);\n              }\n              head = new Aff(ALT, EMPTY, step._2, EMPTY);\n              step = step._1;\n              break;\n            default:\n              // When we hit a leaf value, we suspend the stack in the `FORKED`.\n              // When the fiber resolves, it can bubble back up the tree.\n              fid    = fiberId++;\n              status = RETURN;\n              tmp    = step;\n              step   = new Aff(FORKED, fid, new Aff(CONS, head, tail), EMPTY);\n              tmp    = Fiber(util, supervisor, tmp);\n              tmp.onComplete({\n                rethrow: false,\n                handler: resolve(step)\n              })();\n              fibers[fid] = tmp;\n              if (supervisor) {\n                supervisor.register(tmp);\n              }\n            }\n            break;\n          case RETURN:\n            // Terminal case, we are back at the root.\n            if (head === null) {\n              break loop;\n            }\n            // If we are done with the right side, we need to continue down the\n            // left. Otherwise we should continue up the stack.\n            if (head._1 === EMPTY) {\n              head._1 = step;\n              status  = CONTINUE;\n              step    = head._2;\n              head._2 = EMPTY;\n            } else {\n              head._2 = step;\n              step    = head;\n              if (tail === null) {\n                head  = null;\n              } else {\n                head  = tail._1;\n                tail  = tail._2;\n              }\n            }\n          }\n        }\n\n        // Keep a reference to the tree root so it can be cancelled.\n        root = step;\n\n        for (fid = 0; fid < fiberId; fid++) {\n          fibers[fid].run();\n        }\n      }\n\n      // Cancels the entire tree. If there are already subtrees being canceled,\n      // we need to first cancel those joins. We will then add fresh joins for\n      // all pending branches including those that were in the process of being\n      // canceled.\n      function cancel(error, cb) {\n        interrupt = util.left(error);\n        var innerKills;\n        for (var kid in kills) {\n          if (kills.hasOwnProperty(kid)) {\n            innerKills = kills[kid];\n            for (kid in innerKills) {\n              if (innerKills.hasOwnProperty(kid)) {\n                innerKills[kid]();\n              }\n            }\n          }\n        }\n\n        kills = null;\n        var newKills = kill(error, root, cb);\n\n        return function (killError) {\n          return new Aff(ASYNC, function (killCb) {\n            return function () {\n              for (var kid in newKills) {\n                if (newKills.hasOwnProperty(kid)) {\n                  newKills[kid]();\n                }\n              }\n              return nonCanceler;\n            };\n          });\n        };\n      }\n\n      run();\n\n      return function (killError) {\n        return new Aff(ASYNC, function (killCb) {\n          return function () {\n            return cancel(killError, killCb);\n          };\n        });\n      };\n    }\n\n    function sequential(util, supervisor, par) {\n      return new Aff(ASYNC, function (cb) {\n        return function () {\n          return runPar(util, supervisor, par, cb);\n        };\n      });\n    }\n\n    Aff.EMPTY       = EMPTY;\n    Aff.Pure        = AffCtr(PURE);\n    Aff.Throw       = AffCtr(THROW);\n    Aff.Catch       = AffCtr(CATCH);\n    Aff.Sync        = AffCtr(SYNC);\n    Aff.Async       = AffCtr(ASYNC);\n    Aff.Bind        = AffCtr(BIND);\n    Aff.Bracket     = AffCtr(BRACKET);\n    Aff.Fork        = AffCtr(FORK);\n    Aff.Seq         = AffCtr(SEQ);\n    Aff.ParMap      = AffCtr(MAP);\n    Aff.ParApply    = AffCtr(APPLY);\n    Aff.ParAlt      = AffCtr(ALT);\n    Aff.Fiber       = Fiber;\n    Aff.Supervisor  = Supervisor;\n    Aff.Scheduler   = Scheduler;\n    Aff.nonCanceler = nonCanceler;\n\n    return Aff;\n  }();\n\n  exports._pure = Aff.Pure;\n\n  exports._throwError = Aff.Throw;\n\n  exports._catchError = function (aff) {\n    return function (k) {\n      return Aff.Catch(aff, k);\n    };\n  };\n\n  exports._map = function (f) {\n    return function (aff) {\n      if (aff.tag === Aff.Pure.tag) {\n        return Aff.Pure(f(aff._1));\n      } else {\n        return Aff.Bind(aff, function (value) {\n          return Aff.Pure(f(value));\n        });\n      }\n    };\n  };\n\n  exports._bind = function (aff) {\n    return function (k) {\n      return Aff.Bind(aff, k);\n    };\n  };\n\n  exports._fork = function (immediate) {\n    return function (aff) {\n      return Aff.Fork(immediate, aff);\n    };\n  };\n\n  exports._liftEffect = Aff.Sync;\n\n  exports._parAffMap = function (f) {\n    return function (aff) {\n      return Aff.ParMap(f, aff);\n    };\n  };\n\n  exports._parAffApply = function (aff1) {\n    return function (aff2) {\n      return Aff.ParApply(aff1, aff2);\n    };\n  };\n\n  exports.makeAff = Aff.Async;\n\n  exports.generalBracket = function (acquire) {\n    return function (options) {\n      return function (k) {\n        return Aff.Bracket(acquire, options, k);\n      };\n    };\n  };\n\n  exports._makeFiber = function (util, aff) {\n    return function () {\n      return Aff.Fiber(util, null, aff);\n    };\n  };  \n\n  exports._sequential = Aff.Seq;\n})(PS[\"Effect.Aff\"] = PS[\"Effect.Aff\"] || {});\n(function(exports) {\n  \"use strict\";\n\n  exports.pureE = function (a) {\n    return function () {\n      return a;\n    };\n  };\n\n  exports.bindE = function (a) {\n    return function (f) {\n      return function () {\n        return f(a())();\n      };\n    };\n  };\n})(PS[\"Effect\"] = PS[\"Effect\"] || {});\n(function($PS) {\n  // Generated by purs version 0.14.7\n  \"use strict\";\n  $PS[\"Effect\"] = $PS[\"Effect\"] || {};\n  var exports = $PS[\"Effect\"];\n  var $foreign = $PS[\"Effect\"];\n  var Control_Applicative = $PS[\"Control.Applicative\"];\n  var Control_Apply = $PS[\"Control.Apply\"];\n  var Control_Monad = $PS[\"Control.Monad\"];\n  var Data_Monoid = $PS[\"Data.Monoid\"];\n  var Data_Semigroup = $PS[\"Data.Semigroup\"];                \n  var monadEffect = {\n      Applicative0: function () {\n          return applicativeEffect;\n      },\n      Bind1: function () {\n          return bindEffect;\n      }\n  };\n  var bindEffect = {\n      bind: $foreign.bindE,\n      Apply0: function () {\n          return applyEffect;\n      }\n  };\n  var applyEffect = {\n      apply: Control_Monad.ap(monadEffect),\n      Functor0: function () {\n          return functorEffect;\n      }\n  };\n  var applicativeEffect = {\n      pure: $foreign.pureE,\n      Apply0: function () {\n          return applyEffect;\n      }\n  };\n  var functorEffect = {\n      map: Control_Applicative.liftA1(applicativeEffect)\n  };\n  var semigroupEffect = function (dictSemigroup) {\n      return {\n          append: Control_Apply.lift2(applyEffect)(Data_Semigroup.append(dictSemigroup))\n      };\n  };\n  var monoidEffect = function (dictMonoid) {\n      return {\n          mempty: $foreign.pureE(Data_Monoid.mempty(dictMonoid)),\n          Semigroup0: function () {\n              return semigroupEffect(dictMonoid.Semigroup0());\n          }\n      };\n  };\n  exports[\"functorEffect\"] = functorEffect;\n  exports[\"applicativeEffect\"] = applicativeEffect;\n  exports[\"bindEffect\"] = bindEffect;\n  exports[\"monadEffect\"] = monadEffect;\n  exports[\"monoidEffect\"] = monoidEffect;\n})(PS);\n(function(exports) {\n  \"use strict\";\n\n  exports.new = function (val) {\n    return function () {\n      return { value: val };\n    };\n  };\n\n  exports.read = function (ref) {\n    return function () {\n      return ref.value;\n    };\n  };\n\n  exports.modifyImpl = function (f) {\n    return function (ref) {\n      return function () {\n        var t = f(ref.value);\n        ref.value = t.state;\n        return t.value;\n      };\n    };\n  };\n\n  exports.write = function (val) {\n    return function (ref) {\n      return function () {\n        ref.value = val;\n      };\n    };\n  };\n})(PS[\"Effect.Ref\"] = PS[\"Effect.Ref\"] || {});\n(function($PS) {\n  // Generated by purs version 0.14.7\n  \"use strict\";\n  $PS[\"Effect.Ref\"] = $PS[\"Effect.Ref\"] || {};\n  var exports = $PS[\"Effect.Ref\"];\n  var $foreign = $PS[\"Effect.Ref\"];\n  var Data_Functor = $PS[\"Data.Functor\"];\n  var Effect = $PS[\"Effect\"];                \n  var modify$prime = $foreign.modifyImpl;\n  var modify = function (f) {\n      return modify$prime(function (s) {\n          var s$prime = f(s);\n          return {\n              state: s$prime,\n              value: s$prime\n          };\n      });\n  };\n  var modify_ = function (f) {\n      return function (s) {\n          return Data_Functor[\"void\"](Effect.functorEffect)(modify(f)(s));\n      };\n  };\n  exports[\"modify'\"] = modify$prime;\n  exports[\"modify_\"] = modify_;\n  exports[\"new\"] = $foreign[\"new\"];\n  exports[\"read\"] = $foreign.read;\n  exports[\"write\"] = $foreign.write;\n})(PS);\n(function($PS) {\n  // Generated by purs version 0.14.7\n  \"use strict\";\n  $PS[\"Control.Monad.Rec.Class\"] = $PS[\"Control.Monad.Rec.Class\"] || {};\n  var exports = $PS[\"Control.Monad.Rec.Class\"];\n  var Control_Bind = $PS[\"Control.Bind\"];\n  var Data_Functor = $PS[\"Data.Functor\"];\n  var Effect = $PS[\"Effect\"];\n  var Effect_Ref = $PS[\"Effect.Ref\"];                \n  var Loop = (function () {\n      function Loop(value0) {\n          this.value0 = value0;\n      };\n      Loop.create = function (value0) {\n          return new Loop(value0);\n      };\n      return Loop;\n  })();\n  var Done = (function () {\n      function Done(value0) {\n          this.value0 = value0;\n      };\n      Done.create = function (value0) {\n          return new Done(value0);\n      };\n      return Done;\n  })();\n  var tailRecM = function (dict) {\n      return dict.tailRecM;\n  };\n  var monadRecEffect = {\n      tailRecM: function (f) {\n          return function (a) {\n              var fromDone = function (v) {\n                  if (v instanceof Done) {\n                      return v.value0;\n                  };\n                  throw new Error(\"Failed pattern match at Control.Monad.Rec.Class (line 113, column 30 - line 113, column 44): \" + [ v.constructor.name ]);\n              };\n              return function __do() {\n                  var r = Control_Bind.bindFlipped(Effect.bindEffect)(Effect_Ref[\"new\"])(f(a))();\n                  (function () {\n                      while (!(function __do() {\n                          var v = Effect_Ref.read(r)();\n                          if (v instanceof Loop) {\n                              var e = f(v.value0)();\n                              Effect_Ref.write(e)(r)();\n                              return false;\n                          };\n                          if (v instanceof Done) {\n                              return true;\n                          };\n                          throw new Error(\"Failed pattern match at Control.Monad.Rec.Class (line 104, column 22 - line 109, column 28): \" + [ v.constructor.name ]);\n                      })()) {\n\n                      };\n                      return {};\n                  })();\n                  return Data_Functor.map(Effect.functorEffect)(fromDone)(Effect_Ref.read(r))();\n              };\n          };\n      },\n      Monad0: function () {\n          return Effect.monadEffect;\n      }\n  };\n  exports[\"Loop\"] = Loop;\n  exports[\"Done\"] = Done;\n  exports[\"tailRecM\"] = tailRecM;\n  exports[\"monadRecEffect\"] = monadRecEffect;\n})(PS);\n(function($PS) {\n  // Generated by purs version 0.14.7\n  \"use strict\";\n  $PS[\"Control.Parallel.Class\"] = $PS[\"Control.Parallel.Class\"] || {};\n  var exports = $PS[\"Control.Parallel.Class\"];\n  var sequential = function (dict) {\n      return dict.sequential;\n  };\n  var parallel = function (dict) {\n      return dict.parallel;\n  };\n  exports[\"parallel\"] = parallel;\n  exports[\"sequential\"] = sequential;\n})(PS);\n(function($PS) {\n  // Generated by purs version 0.14.7\n  \"use strict\";\n  $PS[\"Control.Parallel\"] = $PS[\"Control.Parallel\"] || {};\n  var exports = $PS[\"Control.Parallel\"];\n  var Control_Category = $PS[\"Control.Category\"];\n  var Control_Parallel_Class = $PS[\"Control.Parallel.Class\"];\n  var Data_Foldable = $PS[\"Data.Foldable\"];                      \n  var parTraverse_ = function (dictParallel) {\n      return function (dictFoldable) {\n          return function (f) {\n              var $17 = Control_Parallel_Class.sequential(dictParallel);\n              var $18 = Data_Foldable.traverse_(dictParallel.Applicative1())(dictFoldable)((function () {\n                  var $20 = Control_Parallel_Class.parallel(dictParallel);\n                  return function ($21) {\n                      return $20(f($21));\n                  };\n              })());\n              return function ($19) {\n                  return $17($18($19));\n              };\n          };\n      };\n  };\n  var parSequence_ = function (dictParallel) {\n      return function (dictFoldable) {\n          return parTraverse_(dictParallel)(dictFoldable)(Control_Category.identity(Control_Category.categoryFn));\n      };\n  };\n  exports[\"parSequence_\"] = parSequence_;\n})(PS);\n(function($PS) {\n  // Generated by purs version 0.14.7\n  \"use strict\";\n  $PS[\"Effect.Class\"] = $PS[\"Effect.Class\"] || {};\n  var exports = $PS[\"Effect.Class\"];\n  var Control_Category = $PS[\"Control.Category\"];\n  var Effect = $PS[\"Effect\"];                \n  var monadEffectEffect = {\n      liftEffect: Control_Category.identity(Control_Category.categoryFn),\n      Monad0: function () {\n          return Effect.monadEffect;\n      }\n  };\n  var liftEffect = function (dict) {\n      return dict.liftEffect;\n  };\n  exports[\"liftEffect\"] = liftEffect;\n  exports[\"monadEffectEffect\"] = monadEffectEffect;\n})(PS);\n(function(exports) {\n  \"use strict\";\n\n  exports.unsafePerformEffect = function (f) {\n    return f();\n  };\n})(PS[\"Effect.Unsafe\"] = PS[\"Effect.Unsafe\"] || {});\n(function($PS) {\n  // Generated by purs version 0.14.7\n  \"use strict\";\n  $PS[\"Effect.Unsafe\"] = $PS[\"Effect.Unsafe\"] || {};\n  var exports = $PS[\"Effect.Unsafe\"];\n  var $foreign = $PS[\"Effect.Unsafe\"];\n  exports[\"unsafePerformEffect\"] = $foreign.unsafePerformEffect;\n})(PS);\n(function(exports) {\n  \"use strict\";\n\n  // module Partial.Unsafe\n\n  exports._unsafePartial = function (f) {\n    return f();\n  };\n})(PS[\"Partial.Unsafe\"] = PS[\"Partial.Unsafe\"] || {});\n(function(exports) {\n  \"use strict\";\n\n  // module Partial\n\n  exports._crashWith = function (msg) {\n    throw new Error(msg);\n  };\n})(PS[\"Partial\"] = PS[\"Partial\"] || {});\n(function($PS) {\n  // Generated by purs version 0.14.7\n  \"use strict\";\n  $PS[\"Partial\"] = $PS[\"Partial\"] || {};\n  var exports = $PS[\"Partial\"];\n  var $foreign = $PS[\"Partial\"];         \n  var crashWith = function () {\n      return $foreign[\"_crashWith\"];\n  };\n  exports[\"crashWith\"] = crashWith;\n})(PS);\n(function($PS) {\n  // Generated by purs version 0.14.7\n  \"use strict\";\n  $PS[\"Partial.Unsafe\"] = $PS[\"Partial.Unsafe\"] || {};\n  var exports = $PS[\"Partial.Unsafe\"];\n  var $foreign = $PS[\"Partial.Unsafe\"];\n  var Partial = $PS[\"Partial\"];                \n  var unsafePartial = $foreign[\"_unsafePartial\"];\n  var unsafeCrashWith = function (msg) {\n      return unsafePartial(function () {\n          return Partial.crashWith()(msg);\n      });\n  };\n  exports[\"unsafeCrashWith\"] = unsafeCrashWith;\n})(PS);\n(function($PS) {\n  // Generated by purs version 0.14.7\n  \"use strict\";\n  $PS[\"Effect.Aff\"] = $PS[\"Effect.Aff\"] || {};\n  var exports = $PS[\"Effect.Aff\"];\n  var $foreign = $PS[\"Effect.Aff\"];\n  var Control_Applicative = $PS[\"Control.Applicative\"];\n  var Control_Bind = $PS[\"Control.Bind\"];\n  var Control_Monad = $PS[\"Control.Monad\"];\n  var Control_Monad_Error_Class = $PS[\"Control.Monad.Error.Class\"];\n  var Control_Monad_Rec_Class = $PS[\"Control.Monad.Rec.Class\"];\n  var Control_Parallel = $PS[\"Control.Parallel\"];\n  var Control_Parallel_Class = $PS[\"Control.Parallel.Class\"];\n  var Data_Either = $PS[\"Data.Either\"];\n  var Data_Foldable = $PS[\"Data.Foldable\"];\n  var Data_Function = $PS[\"Data.Function\"];\n  var Data_Functor = $PS[\"Data.Functor\"];\n  var Data_Unit = $PS[\"Data.Unit\"];\n  var Effect = $PS[\"Effect\"];\n  var Effect_Class = $PS[\"Effect.Class\"];\n  var Effect_Unsafe = $PS[\"Effect.Unsafe\"];\n  var Partial_Unsafe = $PS[\"Partial.Unsafe\"];\n  var Unsafe_Coerce = $PS[\"Unsafe.Coerce\"];\n  var Canceler = function (x) {\n      return x;\n  };\n  var suspendAff = $foreign[\"_fork\"](false);\n  var functorParAff = {\n      map: $foreign[\"_parAffMap\"]\n  };\n  var functorAff = {\n      map: $foreign[\"_map\"]\n  };\n  var forkAff = $foreign[\"_fork\"](true);\n  var ffiUtil = (function () {\n      var unsafeFromRight = function (v) {\n          if (v instanceof Data_Either.Right) {\n              return v.value0;\n          };\n          if (v instanceof Data_Either.Left) {\n              return Partial_Unsafe.unsafeCrashWith(\"unsafeFromRight: Left\");\n          };\n          throw new Error(\"Failed pattern match at Effect.Aff (line 404, column 21 - line 406, column 54): \" + [ v.constructor.name ]);\n      };\n      var unsafeFromLeft = function (v) {\n          if (v instanceof Data_Either.Left) {\n              return v.value0;\n          };\n          if (v instanceof Data_Either.Right) {\n              return Partial_Unsafe.unsafeCrashWith(\"unsafeFromLeft: Right\");\n          };\n          throw new Error(\"Failed pattern match at Effect.Aff (line 399, column 20 - line 401, column 54): \" + [ v.constructor.name ]);\n      };\n      var isLeft = function (v) {\n          if (v instanceof Data_Either.Left) {\n              return true;\n          };\n          if (v instanceof Data_Either.Right) {\n              return false;\n          };\n          throw new Error(\"Failed pattern match at Effect.Aff (line 394, column 12 - line 396, column 20): \" + [ v.constructor.name ]);\n      };\n      return {\n          isLeft: isLeft,\n          fromLeft: unsafeFromLeft,\n          fromRight: unsafeFromRight,\n          left: Data_Either.Left.create,\n          right: Data_Either.Right.create\n      };\n  })();\n  var makeFiber = function (aff) {\n      return $foreign[\"_makeFiber\"](ffiUtil, aff);\n  };\n  var launchAff = function (aff) {\n      return function __do() {\n          var fiber = makeFiber(aff)();\n          fiber.run();\n          return fiber;\n      };\n  };\n  var bracket = function (acquire) {\n      return function (completed) {\n          return $foreign.generalBracket(acquire)({\n              killed: Data_Function[\"const\"](completed),\n              failed: Data_Function[\"const\"](completed),\n              completed: Data_Function[\"const\"](completed)\n          });\n      };\n  };\n  var applyParAff = {\n      apply: $foreign[\"_parAffApply\"],\n      Functor0: function () {\n          return functorParAff;\n      }\n  };\n  var monadAff = {\n      Applicative0: function () {\n          return applicativeAff;\n      },\n      Bind1: function () {\n          return bindAff;\n      }\n  };\n  var bindAff = {\n      bind: $foreign[\"_bind\"],\n      Apply0: function () {\n          return applyAff;\n      }\n  };\n  var applyAff = {\n      apply: Control_Monad.ap(monadAff),\n      Functor0: function () {\n          return functorAff;\n      }\n  };\n  var applicativeAff = {\n      pure: $foreign[\"_pure\"],\n      Apply0: function () {\n          return applyAff;\n      }\n  };\n  var $$finally = function (fin) {\n      return function (a) {\n          return bracket(Control_Applicative.pure(applicativeAff)(Data_Unit.unit))(Data_Function[\"const\"](fin))(Data_Function[\"const\"](a));\n      };\n  };\n  var monadEffectAff = {\n      liftEffect: $foreign[\"_liftEffect\"],\n      Monad0: function () {\n          return monadAff;\n      }\n  };\n  var effectCanceler = (function () {\n      var $42 = Effect_Class.liftEffect(monadEffectAff);\n      return function ($43) {\n          return Canceler(Data_Function[\"const\"]($42($43)));\n      };\n  })();\n  var joinFiber = function (v) {\n      return $foreign.makeAff(function (k) {\n          return Data_Functor.map(Effect.functorEffect)(effectCanceler)(v.join(k));\n      });\n  };\n  var functorFiber = {\n      map: function (f) {\n          return function (t) {\n              return Effect_Unsafe.unsafePerformEffect(makeFiber(Data_Functor.map(functorAff)(f)(joinFiber(t))));\n          };\n      }\n  };\n  var killFiber = function (e) {\n      return function (v) {\n          return Control_Bind.bind(bindAff)(Effect_Class.liftEffect(monadEffectAff)(v.isSuspended))(function (v1) {\n              if (v1) {\n                  return Effect_Class.liftEffect(monadEffectAff)(Data_Functor[\"void\"](Effect.functorEffect)(v.kill(e, Data_Function[\"const\"](Control_Applicative.pure(Effect.applicativeEffect)(Data_Unit.unit)))));\n              };\n              return $foreign.makeAff(function (k) {\n                  return Data_Functor.map(Effect.functorEffect)(effectCanceler)(v.kill(e, k));\n              });\n          });\n      };\n  };   \n  var monadThrowAff = {\n      throwError: $foreign[\"_throwError\"],\n      Monad0: function () {\n          return monadAff;\n      }\n  };\n  var monadErrorAff = {\n      catchError: $foreign[\"_catchError\"],\n      MonadThrow0: function () {\n          return monadThrowAff;\n      }\n  };                                                            \n  var runAff = function (k) {\n      return function (aff) {\n          return launchAff(Control_Bind.bindFlipped(bindAff)((function () {\n              var $46 = Effect_Class.liftEffect(monadEffectAff);\n              return function ($47) {\n                  return $46(k($47));\n              };\n          })())(Control_Monad_Error_Class[\"try\"](monadErrorAff)(aff)));\n      };\n  };\n  var runAff_ = function (k) {\n      return function (aff) {\n          return Data_Functor[\"void\"](Effect.functorEffect)(runAff(k)(aff));\n      };\n  };\n  var parallelAff = {\n      parallel: Unsafe_Coerce.unsafeCoerce,\n      sequential: $foreign[\"_sequential\"],\n      Monad0: function () {\n          return monadAff;\n      },\n      Applicative1: function () {\n          return applicativeParAff;\n      }\n  };\n  var applicativeParAff = {\n      pure: (function () {\n          var $50 = Control_Parallel_Class.parallel(parallelAff);\n          var $51 = Control_Applicative.pure(applicativeAff);\n          return function ($52) {\n              return $50($51($52));\n          };\n      })(),\n      Apply0: function () {\n          return applyParAff;\n      }\n  };\n  var semigroupCanceler = {\n      append: function (v) {\n          return function (v1) {\n              return function (err) {\n                  return Control_Parallel.parSequence_(parallelAff)(Data_Foldable.foldableArray)([ v(err), v1(err) ]);\n              };\n          };\n      }\n  };\n  var monadRecAff = {\n      tailRecM: function (k) {\n          var go = function (a) {\n              return Control_Bind.bind(bindAff)(k(a))(function (res) {\n                  if (res instanceof Control_Monad_Rec_Class.Done) {\n                      return Control_Applicative.pure(applicativeAff)(res.value0);\n                  };\n                  if (res instanceof Control_Monad_Rec_Class.Loop) {\n                      return go(res.value0);\n                  };\n                  throw new Error(\"Failed pattern match at Effect.Aff (line 102, column 7 - line 104, column 22): \" + [ res.constructor.name ]);\n              });\n          };\n          return go;\n      },\n      Monad0: function () {\n          return monadAff;\n      }\n  };\n  var nonCanceler = Data_Function[\"const\"](Control_Applicative.pure(applicativeAff)(Data_Unit.unit));\n  var monoidCanceler = {\n      mempty: nonCanceler,\n      Semigroup0: function () {\n          return semigroupCanceler;\n      }\n  };\n  exports[\"launchAff\"] = launchAff;\n  exports[\"runAff_\"] = runAff_;\n  exports[\"forkAff\"] = forkAff;\n  exports[\"suspendAff\"] = suspendAff;\n  exports[\"finally\"] = $$finally;\n  exports[\"killFiber\"] = killFiber;\n  exports[\"joinFiber\"] = joinFiber;\n  exports[\"nonCanceler\"] = nonCanceler;\n  exports[\"functorAff\"] = functorAff;\n  exports[\"applicativeAff\"] = applicativeAff;\n  exports[\"bindAff\"] = bindAff;\n  exports[\"monadAff\"] = monadAff;\n  exports[\"monadRecAff\"] = monadRecAff;\n  exports[\"monadErrorAff\"] = monadErrorAff;\n  exports[\"monadEffectAff\"] = monadEffectAff;\n  exports[\"applicativeParAff\"] = applicativeParAff;\n  exports[\"parallelAff\"] = parallelAff;\n  exports[\"functorFiber\"] = functorFiber;\n  exports[\"monoidCanceler\"] = monoidCanceler;\n  exports[\"makeAff\"] = $foreign.makeAff;\n})(PS);\n(function($PS) {\n  // Generated by purs version 0.14.7\n  \"use strict\";\n  $PS[\"Effect.Aff.Compat\"] = $PS[\"Effect.Aff.Compat\"] || {};\n  var exports = $PS[\"Effect.Aff.Compat\"];\n  var Data_Either = $PS[\"Data.Either\"];\n  var Effect_Aff = $PS[\"Effect.Aff\"];\n  var fromEffectFnAff = function (v) {\n      return Effect_Aff.makeAff(function (k) {\n          return function __do() {\n              var v1 = v(function ($4) {\n                  return k(Data_Either.Left.create($4))();\n              }, function ($5) {\n                  return k(Data_Either.Right.create($5))();\n              });\n              return function (e) {\n                  return Effect_Aff.makeAff(function (k2) {\n                      return function __do() {\n                          v1(e, function ($6) {\n                              return k2(Data_Either.Left.create($6))();\n                          }, function ($7) {\n                              return k2(Data_Either.Right.create($7))();\n                          });\n                          return Effect_Aff.nonCanceler;\n                      };\n                  });\n              };\n          };\n      });\n  };\n  exports[\"fromEffectFnAff\"] = fromEffectFnAff;\n})(PS);\n(function(exports) {\n  \"use strict\";\n\n  exports.error = function (msg) {\n    return new Error(msg);\n  };\n\n  exports.message = function (e) {\n    return e.message;\n  };\n\n  exports.throwException = function (e) {\n    return function () {\n      throw e;\n    };\n  };\n})(PS[\"Effect.Exception\"] = PS[\"Effect.Exception\"] || {});\n(function($PS) {\n  // Generated by purs version 0.14.7\n  \"use strict\";\n  $PS[\"Effect.Exception\"] = $PS[\"Effect.Exception\"] || {};\n  var exports = $PS[\"Effect.Exception\"];\n  var $foreign = $PS[\"Effect.Exception\"];\n  var $$throw = function ($2) {\n      return $foreign.throwException($foreign.error($2));\n  };\n  exports[\"throw\"] = $$throw;\n  exports[\"error\"] = $foreign.error;\n  exports[\"message\"] = $foreign.message;\n  exports[\"throwException\"] = $foreign.throwException;\n})(PS);\n(function(exports) {\n  \"use strict\";\n\n  exports.typeOf = function (value) {\n    return typeof value;\n  };\n\n  exports.tagOf = function (value) {\n    return Object.prototype.toString.call(value).slice(8, -1);\n  };\n})(PS[\"Foreign\"] = PS[\"Foreign\"] || {});\n(function(exports) {\n  \"use strict\";\n\n  exports.fromNumberImpl = function (just) {\n    return function (nothing) {\n      return function (n) {\n        /* jshint bitwise: false */\n        return (n | 0) === n ? just(n) : nothing;\n      };\n    };\n  };\n\n  exports.toNumber = function (n) {\n    return n;\n  };\n})(PS[\"Data.Int\"] = PS[\"Data.Int\"] || {});\n(function($PS) {\n  // Generated by purs version 0.14.7\n  \"use strict\";\n  $PS[\"Data.Int\"] = $PS[\"Data.Int\"] || {};\n  var exports = $PS[\"Data.Int\"];\n  var $foreign = $PS[\"Data.Int\"];\n  var Data_Maybe = $PS[\"Data.Maybe\"];\n  var fromNumber = $foreign.fromNumberImpl(Data_Maybe.Just.create)(Data_Maybe.Nothing.value);\n  exports[\"fromNumber\"] = fromNumber;\n  exports[\"toNumber\"] = $foreign.toNumber;\n})(PS);\n(function($PS) {\n  // Generated by purs version 0.14.7\n  \"use strict\";\n  $PS[\"Foreign\"] = $PS[\"Foreign\"] || {};\n  var exports = $PS[\"Foreign\"];\n  var $foreign = $PS[\"Foreign\"];\n  var Control_Applicative = $PS[\"Control.Applicative\"];\n  var Control_Monad_Error_Class = $PS[\"Control.Monad.Error.Class\"];\n  var Control_Monad_Except_Trans = $PS[\"Control.Monad.Except.Trans\"];\n  var Data_Boolean = $PS[\"Data.Boolean\"];\n  var Data_Either = $PS[\"Data.Either\"];\n  var Data_Function = $PS[\"Data.Function\"];\n  var Data_Functor = $PS[\"Data.Functor\"];\n  var Data_Int = $PS[\"Data.Int\"];\n  var Data_List_NonEmpty = $PS[\"Data.List.NonEmpty\"];\n  var Data_Maybe = $PS[\"Data.Maybe\"];\n  var Data_Show = $PS[\"Data.Show\"];\n  var Unsafe_Coerce = $PS[\"Unsafe.Coerce\"];                \n  var ForeignError = (function () {\n      function ForeignError(value0) {\n          this.value0 = value0;\n      };\n      ForeignError.create = function (value0) {\n          return new ForeignError(value0);\n      };\n      return ForeignError;\n  })();\n  var TypeMismatch = (function () {\n      function TypeMismatch(value0, value1) {\n          this.value0 = value0;\n          this.value1 = value1;\n      };\n      TypeMismatch.create = function (value0) {\n          return function (value1) {\n              return new TypeMismatch(value0, value1);\n          };\n      };\n      return TypeMismatch;\n  })();\n  var ErrorAtIndex = (function () {\n      function ErrorAtIndex(value0, value1) {\n          this.value0 = value0;\n          this.value1 = value1;\n      };\n      ErrorAtIndex.create = function (value0) {\n          return function (value1) {\n              return new ErrorAtIndex(value0, value1);\n          };\n      };\n      return ErrorAtIndex;\n  })();\n  var ErrorAtProperty = (function () {\n      function ErrorAtProperty(value0, value1) {\n          this.value0 = value0;\n          this.value1 = value1;\n      };\n      ErrorAtProperty.create = function (value0) {\n          return function (value1) {\n              return new ErrorAtProperty(value0, value1);\n          };\n      };\n      return ErrorAtProperty;\n  })();\n  var unsafeToForeign = Unsafe_Coerce.unsafeCoerce;\n  var unsafeFromForeign = Unsafe_Coerce.unsafeCoerce;\n  var renderForeignError = function (v) {\n      if (v instanceof ForeignError) {\n          return v.value0;\n      };\n      if (v instanceof ErrorAtIndex) {\n          return \"Error at array index \" + (Data_Show.show(Data_Show.showInt)(v.value0) + (\": \" + renderForeignError(v.value1)));\n      };\n      if (v instanceof ErrorAtProperty) {\n          return \"Error at property \" + (Data_Show.show(Data_Show.showString)(v.value0) + (\": \" + renderForeignError(v.value1)));\n      };\n      if (v instanceof TypeMismatch) {\n          return \"Type mismatch: expected \" + (v.value0 + (\", found \" + v.value1));\n      };\n      throw new Error(\"Failed pattern match at Foreign (line 73, column 1 - line 73, column 45): \" + [ v.constructor.name ]);\n  };\n  var fail = function (dictMonad) {\n      var $118 = Control_Monad_Error_Class.throwError(Control_Monad_Except_Trans.monadThrowExceptT(dictMonad));\n      return function ($119) {\n          return $118(Data_List_NonEmpty.singleton($119));\n      };\n  };\n  var unsafeReadTagged = function (dictMonad) {\n      return function (tag) {\n          return function (value) {\n              if ($foreign.tagOf(value) === tag) {\n                  return Control_Applicative.pure(Control_Monad_Except_Trans.applicativeExceptT(dictMonad))(unsafeFromForeign(value));\n              };\n              if (Data_Boolean.otherwise) {\n                  return fail(dictMonad)(new TypeMismatch(tag, $foreign.tagOf(value)));\n              };\n              throw new Error(\"Failed pattern match at Foreign (line 110, column 1 - line 110, column 71): \" + [ tag.constructor.name, value.constructor.name ]);\n          };\n      };\n  };\n  var readBoolean = function (dictMonad) {\n      return unsafeReadTagged(dictMonad)(\"Boolean\");\n  };\n  var readNumber = function (dictMonad) {\n      return unsafeReadTagged(dictMonad)(\"Number\");\n  };\n  var readInt = function (dictMonad) {\n      return function (value) {\n          var error = new Data_Either.Left(Data_List_NonEmpty.singleton(new TypeMismatch(\"Int\", $foreign.tagOf(value))));\n          var fromNumber = (function () {\n              var $120 = Data_Maybe.maybe(error)(Control_Applicative.pure(Data_Either.applicativeEither));\n              return function ($121) {\n                  return $120(Data_Int.fromNumber($121));\n              };\n          })();\n          return Control_Monad_Except_Trans.mapExceptT(Data_Functor.map(((dictMonad.Bind1()).Apply0()).Functor0())(Data_Either.either(Data_Function[\"const\"](error))(fromNumber)))(readNumber(dictMonad)(value));\n      };\n  };\n  var readString = function (dictMonad) {\n      return unsafeReadTagged(dictMonad)(\"String\");\n  };\n  exports[\"ForeignError\"] = ForeignError;\n  exports[\"TypeMismatch\"] = TypeMismatch;\n  exports[\"renderForeignError\"] = renderForeignError;\n  exports[\"unsafeToForeign\"] = unsafeToForeign;\n  exports[\"unsafeReadTagged\"] = unsafeReadTagged;\n  exports[\"readString\"] = readString;\n  exports[\"readBoolean\"] = readBoolean;\n  exports[\"readInt\"] = readInt;\n  exports[\"fail\"] = fail;\n  exports[\"typeOf\"] = $foreign.typeOf;\n})(PS);\n(function($PS) {\n  // Generated by purs version 0.14.7\n  \"use strict\";\n  $PS[\"Affjax\"] = $PS[\"Affjax\"] || {};\n  var exports = $PS[\"Affjax\"];\n  var $foreign = $PS[\"Affjax\"];\n  var Affjax_RequestBody = $PS[\"Affjax.RequestBody\"];\n  var Affjax_RequestHeader = $PS[\"Affjax.RequestHeader\"];\n  var Affjax_ResponseFormat = $PS[\"Affjax.ResponseFormat\"];\n  var Affjax_ResponseHeader = $PS[\"Affjax.ResponseHeader\"];\n  var Control_Alt = $PS[\"Control.Alt\"];\n  var Control_Applicative = $PS[\"Control.Applicative\"];\n  var Control_Bind = $PS[\"Control.Bind\"];\n  var Control_Monad_Error_Class = $PS[\"Control.Monad.Error.Class\"];\n  var Control_Monad_Except = $PS[\"Control.Monad.Except\"];\n  var Control_Monad_Except_Trans = $PS[\"Control.Monad.Except.Trans\"];\n  var Data_Argonaut_Core = $PS[\"Data.Argonaut.Core\"];\n  var Data_Argonaut_Parser = $PS[\"Data.Argonaut.Parser\"];\n  var Data_Array = $PS[\"Data.Array\"];\n  var Data_Either = $PS[\"Data.Either\"];\n  var Data_Eq = $PS[\"Data.Eq\"];\n  var Data_Foldable = $PS[\"Data.Foldable\"];\n  var Data_FormURLEncoded = $PS[\"Data.FormURLEncoded\"];\n  var Data_Function = $PS[\"Data.Function\"];\n  var Data_Functor = $PS[\"Data.Functor\"];\n  var Data_HTTP_Method = $PS[\"Data.HTTP.Method\"];\n  var Data_HeytingAlgebra = $PS[\"Data.HeytingAlgebra\"];\n  var Data_Identity = $PS[\"Data.Identity\"];\n  var Data_List_NonEmpty = $PS[\"Data.List.NonEmpty\"];\n  var Data_List_Types = $PS[\"Data.List.Types\"];\n  var Data_Maybe = $PS[\"Data.Maybe\"];\n  var Data_Nullable = $PS[\"Data.Nullable\"];\n  var Data_Unit = $PS[\"Data.Unit\"];\n  var Effect_Aff = $PS[\"Effect.Aff\"];\n  var Effect_Aff_Compat = $PS[\"Effect.Aff.Compat\"];\n  var Effect_Exception = $PS[\"Effect.Exception\"];\n  var Foreign = $PS[\"Foreign\"];                \n  var RequestContentError = (function () {\n      function RequestContentError(value0) {\n          this.value0 = value0;\n      };\n      RequestContentError.create = function (value0) {\n          return new RequestContentError(value0);\n      };\n      return RequestContentError;\n  })();\n  var ResponseBodyError = (function () {\n      function ResponseBodyError(value0, value1) {\n          this.value0 = value0;\n          this.value1 = value1;\n      };\n      ResponseBodyError.create = function (value0) {\n          return function (value1) {\n              return new ResponseBodyError(value0, value1);\n          };\n      };\n      return ResponseBodyError;\n  })();\n  var TimeoutError = (function () {\n      function TimeoutError() {\n\n      };\n      TimeoutError.value = new TimeoutError();\n      return TimeoutError;\n  })();\n  var RequestFailedError = (function () {\n      function RequestFailedError() {\n\n      };\n      RequestFailedError.value = new RequestFailedError();\n      return RequestFailedError;\n  })();\n  var XHROtherError = (function () {\n      function XHROtherError(value0) {\n          this.value0 = value0;\n      };\n      XHROtherError.create = function (value0) {\n          return new XHROtherError(value0);\n      };\n      return XHROtherError;\n  })();\n  var request = function (req) {\n      var parseJSON = function (v) {\n          if (v === \"\") {\n              return Control_Applicative.pure(Control_Monad_Except_Trans.applicativeExceptT(Data_Identity.monadIdentity))(Data_Argonaut_Core.jsonEmptyObject);\n          };\n          return Data_Either.either((function () {\n              var $51 = Foreign.fail(Data_Identity.monadIdentity);\n              return function ($52) {\n                  return $51(Foreign.ForeignError.create($52));\n              };\n          })())(Control_Applicative.pure(Control_Monad_Except_Trans.applicativeExceptT(Data_Identity.monadIdentity)))(Data_Argonaut_Parser.jsonParser(v));\n      };\n      var fromResponse = (function () {\n          if (req.responseFormat instanceof Affjax_ResponseFormat[\"ArrayBuffer\"]) {\n              return Foreign.unsafeReadTagged(Data_Identity.monadIdentity)(\"ArrayBuffer\");\n          };\n          if (req.responseFormat instanceof Affjax_ResponseFormat.Blob) {\n              return Foreign.unsafeReadTagged(Data_Identity.monadIdentity)(\"Blob\");\n          };\n          if (req.responseFormat instanceof Affjax_ResponseFormat.Document) {\n              return function (x) {\n                  return Control_Alt.alt(Control_Monad_Except_Trans.altExceptT(Data_List_Types.semigroupNonEmptyList)(Data_Identity.monadIdentity))(Control_Alt.alt(Control_Monad_Except_Trans.altExceptT(Data_List_Types.semigroupNonEmptyList)(Data_Identity.monadIdentity))(Foreign.unsafeReadTagged(Data_Identity.monadIdentity)(\"Document\")(x))(Foreign.unsafeReadTagged(Data_Identity.monadIdentity)(\"XMLDocument\")(x)))(Foreign.unsafeReadTagged(Data_Identity.monadIdentity)(\"HTMLDocument\")(x));\n              };\n          };\n          if (req.responseFormat instanceof Affjax_ResponseFormat.Json) {\n              return Control_Bind.composeKleisliFlipped(Control_Monad_Except_Trans.bindExceptT(Data_Identity.monadIdentity))(function ($53) {\n                  return req.responseFormat.value0(parseJSON($53));\n              })(Foreign.unsafeReadTagged(Data_Identity.monadIdentity)(\"String\"));\n          };\n          if (req.responseFormat instanceof Affjax_ResponseFormat[\"String\"]) {\n              return Foreign.unsafeReadTagged(Data_Identity.monadIdentity)(\"String\");\n          };\n          if (req.responseFormat instanceof Affjax_ResponseFormat.Ignore) {\n              return Data_Function[\"const\"](req.responseFormat.value0(Control_Applicative.pure(Control_Monad_Except_Trans.applicativeExceptT(Data_Identity.monadIdentity))(Data_Unit.unit)));\n          };\n          throw new Error(\"Failed pattern match at Affjax (line 257, column 18 - line 265, column 57): \" + [ req.responseFormat.constructor.name ]);\n      })();\n      var extractContent = function (v) {\n          if (v instanceof Affjax_RequestBody.ArrayView) {\n              return new Data_Either.Right(v.value0(Foreign.unsafeToForeign));\n          };\n          if (v instanceof Affjax_RequestBody.Blob) {\n              return new Data_Either.Right(Foreign.unsafeToForeign(v.value0));\n          };\n          if (v instanceof Affjax_RequestBody.Document) {\n              return new Data_Either.Right(Foreign.unsafeToForeign(v.value0));\n          };\n          if (v instanceof Affjax_RequestBody[\"String\"]) {\n              return new Data_Either.Right(Foreign.unsafeToForeign(v.value0));\n          };\n          if (v instanceof Affjax_RequestBody.FormData) {\n              return new Data_Either.Right(Foreign.unsafeToForeign(v.value0));\n          };\n          if (v instanceof Affjax_RequestBody.FormURLEncoded) {\n              return Data_Either.note(\"Body contains values that cannot be encoded as application/x-www-form-urlencoded\")(Data_Functor.map(Data_Maybe.functorMaybe)(Foreign.unsafeToForeign)(Data_FormURLEncoded.encode(v.value0)));\n          };\n          if (v instanceof Affjax_RequestBody.Json) {\n              return new Data_Either.Right(Foreign.unsafeToForeign(Data_Argonaut_Core.stringify(v.value0)));\n          };\n          throw new Error(\"Failed pattern match at Affjax (line 217, column 20 - line 232, column 69): \" + [ v.constructor.name ]);\n      };\n      var addHeader = function (mh) {\n          return function (hs) {\n              if (mh instanceof Data_Maybe.Just && !Data_Foldable.any(Data_Foldable.foldableArray)(Data_HeytingAlgebra.heytingAlgebraBoolean)(Data_Function.on(Data_Eq.eq(Data_Eq.eqString))(Affjax_RequestHeader.name)(mh.value0))(hs)) {\n                  return Data_Array.snoc(hs)(mh.value0);\n              };\n              return hs;\n          };\n      };\n      var headers = function (reqContent) {\n          return addHeader(Data_Functor.map(Data_Maybe.functorMaybe)(Affjax_RequestHeader.ContentType.create)(Control_Bind.bindFlipped(Data_Maybe.bindMaybe)(Affjax_RequestBody.toMediaType)(reqContent)))(addHeader(Data_Functor.map(Data_Maybe.functorMaybe)(Affjax_RequestHeader.Accept.create)(Affjax_ResponseFormat.toMediaType(req.responseFormat)))(req.headers));\n      };\n      var ajaxRequest = function (v) {\n          return {\n              method: Data_HTTP_Method.print(req.method),\n              url: req.url,\n              headers: Data_Functor.map(Data_Functor.functorArray)(function (h) {\n                  return {\n                      field: Affjax_RequestHeader.name(h),\n                      value: Affjax_RequestHeader.value(h)\n                  };\n              })(headers(req.content)),\n              content: v,\n              responseType: Affjax_ResponseFormat.toResponseType(req.responseFormat),\n              username: Data_Nullable.toNullable(req.username),\n              password: Data_Nullable.toNullable(req.password),\n              withCredentials: req.withCredentials,\n              timeout: Data_Maybe.fromMaybe(0.0)(Data_Functor.map(Data_Maybe.functorMaybe)(function (v1) {\n                  return v1;\n              })(req.timeout))\n          };\n      };\n      var send = function (content) {\n          return Data_Functor.mapFlipped(Effect_Aff.functorAff)(Control_Monad_Error_Class[\"try\"](Effect_Aff.monadErrorAff)(Effect_Aff_Compat.fromEffectFnAff($foreign[\"_ajax\"](\"AffjaxTimeoutErrorMessageIdent\", \"AffjaxRequestFailedMessageIdent\", Affjax_ResponseHeader.ResponseHeader.create, ajaxRequest(content)))))(function (v) {\n              if (v instanceof Data_Either.Right) {\n                  var v1 = Control_Monad_Except.runExcept(fromResponse(v.value0.body));\n                  if (v1 instanceof Data_Either.Left) {\n                      return new Data_Either.Left(new ResponseBodyError(Data_List_NonEmpty.head(v1.value0), v.value0));\n                  };\n                  if (v1 instanceof Data_Either.Right) {\n                      return new Data_Either.Right({\n                          body: v1.value0,\n                          headers: v.value0.headers,\n                          status: v.value0.status,\n                          statusText: v.value0.statusText\n                      });\n                  };\n                  throw new Error(\"Failed pattern match at Affjax (line 193, column 9 - line 195, column 52): \" + [ v1.constructor.name ]);\n              };\n              if (v instanceof Data_Either.Left) {\n                  var message = Effect_Exception.message(v.value0);\n                  return new Data_Either.Left((function () {\n                      var $38 = message === \"AffjaxTimeoutErrorMessageIdent\";\n                      if ($38) {\n                          return TimeoutError.value;\n                      };\n                      var $39 = message === \"AffjaxRequestFailedMessageIdent\";\n                      if ($39) {\n                          return RequestFailedError.value;\n                      };\n                      return new XHROtherError(v.value0);\n                  })());\n              };\n              throw new Error(\"Failed pattern match at Affjax (line 191, column 137 - line 201, column 33): \" + [ v.constructor.name ]);\n          });\n      };\n      if (req.content instanceof Data_Maybe.Nothing) {\n          return send(Data_Nullable.toNullable(Data_Maybe.Nothing.value));\n      };\n      if (req.content instanceof Data_Maybe.Just) {\n          var v = extractContent(req.content.value0);\n          if (v instanceof Data_Either.Right) {\n              return send(Data_Nullable.toNullable(new Data_Maybe.Just(v.value0)));\n          };\n          if (v instanceof Data_Either.Left) {\n              return Control_Applicative.pure(Effect_Aff.applicativeAff)(new Data_Either.Left(new RequestContentError(v.value0)));\n          };\n          throw new Error(\"Failed pattern match at Affjax (line 183, column 7 - line 187, column 48): \" + [ v.constructor.name ]);\n      };\n      throw new Error(\"Failed pattern match at Affjax (line 179, column 3 - line 187, column 48): \" + [ req.content.constructor.name ]);\n  };\n  var printError = function (v) {\n      if (v instanceof RequestContentError) {\n          return \"There was a problem with the request content: \" + v.value0;\n      };\n      if (v instanceof ResponseBodyError) {\n          return \"There was a problem with the response body: \" + Foreign.renderForeignError(v.value0);\n      };\n      if (v instanceof TimeoutError) {\n          return \"There was a problem making the request: timeout\";\n      };\n      if (v instanceof RequestFailedError) {\n          return \"There was a problem making the request: request failed\";\n      };\n      if (v instanceof XHROtherError) {\n          return \"There was a problem making the request: \" + Effect_Exception.message(v.value0);\n      };\n      throw new Error(\"Failed pattern match at Affjax (line 97, column 14 - line 107, column 66): \" + [ v.constructor.name ]);\n  };\n  var defaultRequest = {\n      method: new Data_Either.Left(Data_HTTP_Method.GET.value),\n      url: \"/\",\n      headers: [  ],\n      content: Data_Maybe.Nothing.value,\n      username: Data_Maybe.Nothing.value,\n      password: Data_Maybe.Nothing.value,\n      withCredentials: false,\n      responseFormat: Affjax_ResponseFormat.ignore,\n      timeout: Data_Maybe.Nothing.value\n  };\n  exports[\"defaultRequest\"] = defaultRequest;\n  exports[\"printError\"] = printError;\n  exports[\"request\"] = request;\n})(PS);\n(function($PS) {\n  // Generated by purs version 0.14.7\n  \"use strict\";\n  $PS[\"Affjax.StatusCode\"] = $PS[\"Affjax.StatusCode\"] || {};\n  var exports = $PS[\"Affjax.StatusCode\"];\n  var eqStatusCode = {\n      eq: function (x) {\n          return function (y) {\n              return x === y;\n          };\n      }\n  };\n  exports[\"eqStatusCode\"] = eqStatusCode;\n})(PS);\n(function($PS) {\n  // Generated by purs version 0.14.7\n  \"use strict\";\n  $PS[\"Data.Argonaut.Decode.Error\"] = $PS[\"Data.Argonaut.Decode.Error\"] || {};\n  var exports = $PS[\"Data.Argonaut.Decode.Error\"]; \n  var TypeMismatch = (function () {\n      function TypeMismatch(value0) {\n          this.value0 = value0;\n      };\n      TypeMismatch.create = function (value0) {\n          return new TypeMismatch(value0);\n      };\n      return TypeMismatch;\n  })();\n  var Named = (function () {\n      function Named(value0, value1) {\n          this.value0 = value0;\n          this.value1 = value1;\n      };\n      Named.create = function (value0) {\n          return function (value1) {\n              return new Named(value0, value1);\n          };\n      };\n      return Named;\n  })();\n  exports[\"TypeMismatch\"] = TypeMismatch;\n  exports[\"Named\"] = Named;\n})(PS);\n(function($PS) {\n  // Generated by purs version 0.14.7\n  \"use strict\";\n  $PS[\"Data.Bifunctor\"] = $PS[\"Data.Bifunctor\"] || {};\n  var exports = $PS[\"Data.Bifunctor\"];\n  var Control_Category = $PS[\"Control.Category\"];\n  var Data_Either = $PS[\"Data.Either\"];              \n  var bimap = function (dict) {\n      return dict.bimap;\n  };\n  var lmap = function (dictBifunctor) {\n      return function (f) {\n          return bimap(dictBifunctor)(f)(Control_Category.identity(Control_Category.categoryFn));\n      };\n  };\n  var bifunctorEither = {\n      bimap: function (v) {\n          return function (v1) {\n              return function (v2) {\n                  if (v2 instanceof Data_Either.Left) {\n                      return new Data_Either.Left(v(v2.value0));\n                  };\n                  if (v2 instanceof Data_Either.Right) {\n                      return new Data_Either.Right(v1(v2.value0));\n                  };\n                  throw new Error(\"Failed pattern match at Data.Bifunctor (line 32, column 1 - line 34, column 36): \" + [ v.constructor.name, v1.constructor.name, v2.constructor.name ]);\n              };\n          };\n      }\n  };\n  exports[\"bimap\"] = bimap;\n  exports[\"lmap\"] = lmap;\n  exports[\"bifunctorEither\"] = bifunctorEither;\n})(PS);\n(function($PS) {\n  // Generated by purs version 0.14.7\n  \"use strict\";\n  $PS[\"Data.Argonaut.Decode.Decoders\"] = $PS[\"Data.Argonaut.Decode.Decoders\"] || {};\n  var exports = $PS[\"Data.Argonaut.Decode.Decoders\"];\n  var Control_Bind = $PS[\"Control.Bind\"];\n  var Data_Argonaut_Core = $PS[\"Data.Argonaut.Core\"];\n  var Data_Argonaut_Decode_Error = $PS[\"Data.Argonaut.Decode.Error\"];\n  var Data_Bifunctor = $PS[\"Data.Bifunctor\"];\n  var Data_Either = $PS[\"Data.Either\"];\n  var Data_Int = $PS[\"Data.Int\"];\n  var Data_Traversable = $PS[\"Data.Traversable\"];\n  var Foreign_Object = $PS[\"Foreign.Object\"];                                                                                                                 \n  var decodeNumber = Data_Argonaut_Core.caseJsonNumber(new Data_Either.Left(new Data_Argonaut_Decode_Error.TypeMismatch(\"Number\")))(Data_Either.Right.create);\n  var decodeJObject = (function () {\n      var $20 = Data_Either.note(new Data_Argonaut_Decode_Error.TypeMismatch(\"Object\"));\n      return function ($21) {\n          return $20(Data_Argonaut_Core.toObject($21));\n      };\n  })();\n  var decodeInt = Control_Bind.composeKleisliFlipped(Data_Either.bindEither)((function () {\n      var $54 = Data_Either.note(new Data_Argonaut_Decode_Error.TypeMismatch(\"Integer\"));\n      return function ($55) {\n          return $54(Data_Int.fromNumber($55));\n      };\n  })())(decodeNumber);\n  var decodeForeignObject = function (decoder) {\n      return Control_Bind.composeKleisliFlipped(Data_Either.bindEither)((function () {\n          var $56 = Data_Bifunctor.lmap(Data_Bifunctor.bifunctorEither)(Data_Argonaut_Decode_Error.Named.create(\"ForeignObject\"));\n          var $57 = Data_Traversable.traverse(Foreign_Object.traversableObject)(Data_Either.applicativeEither)(decoder);\n          return function ($58) {\n              return $56($57($58));\n          };\n      })())(decodeJObject);\n  };\n  exports[\"decodeInt\"] = decodeInt;\n  exports[\"decodeForeignObject\"] = decodeForeignObject;\n})(PS);\n(function($PS) {\n  // Generated by purs version 0.14.7\n  \"use strict\";\n  $PS[\"Data.Argonaut.Decode.Class\"] = $PS[\"Data.Argonaut.Decode.Class\"] || {};\n  var exports = $PS[\"Data.Argonaut.Decode.Class\"];\n  var Data_Argonaut_Decode_Decoders = $PS[\"Data.Argonaut.Decode.Decoders\"];\n  var decodeJsonInt = {\n      decodeJson: Data_Argonaut_Decode_Decoders.decodeInt\n  };\n  var decodeJson = function (dict) {\n      return dict.decodeJson;\n  };\n  var decodeForeignObject = function (dictDecodeJson) {\n      return {\n          decodeJson: Data_Argonaut_Decode_Decoders.decodeForeignObject(decodeJson(dictDecodeJson))\n      };\n  };\n  exports[\"decodeJson\"] = decodeJson;\n  exports[\"decodeJsonInt\"] = decodeJsonInt;\n  exports[\"decodeForeignObject\"] = decodeForeignObject;\n})(PS);\n(function(exports) {\n  \"use strict\";\n  var moment =require(\"moment\"); \n\n  exports._app = function() {\n    return app;\n  }\n\n  exports._mmoment8601 = function(just, nothing, tuple, s) {\n    try {\n      var m = moment(s, moment.ISO_8601);\n      var s1 = m.fromNow();\n      var s2 = m.format('MMMM D YYYY, h:mm a') + \" (\" + m.format() + \") \";\n      return just(tuple(s1)(s2));\n    } catch (error) {\n      return nothing\n    }\n  }\n\n  exports._closeWindow = function (window) {\n    window.close();\n  };\n\n  exports._setFocus = function(elemId) {\n      document.getElementById(elemId).focus();\n  };\n\n\n  exports._toLocaleDateString = function(dateString) {\n    return new Date(dateString).toLocaleDateString(undefined, {dateStyle: 'medium'}) \n  }\n})(PS[\"Globals\"] = PS[\"Globals\"] || {});\n(function($PS) {\n  // Generated by purs version 0.14.7\n  \"use strict\";\n  $PS[\"Globals\"] = $PS[\"Globals\"] || {};\n  var exports = $PS[\"Globals\"];\n  var $foreign = $PS[\"Globals\"];\n  var Data_Maybe = $PS[\"Data.Maybe\"];\n  var Data_Tuple = $PS[\"Data.Tuple\"];                \n  var RawHTML = function (x) {\n      return x;\n  };\n  var toLocaleDateString = function (s) {\n      return $foreign[\"_toLocaleDateString\"](s);\n  };\n  var setFocus = function (s) {\n      return function () {\n          return $foreign[\"_setFocus\"](s);\n      };\n  };\n  var mmoment8601 = function (s) {\n      return $foreign[\"_mmoment8601\"](Data_Maybe.Just.create, Data_Maybe.Nothing.value, Data_Tuple.Tuple.create, s);\n  };\n  var closeWindow = function (win) {\n      return function () {\n          return $foreign[\"_closeWindow\"](win);\n      };\n  };\n  var app$prime = function (v) {\n      return $foreign[\"_app\"]();\n  };\n  exports[\"app'\"] = app$prime;\n  exports[\"mmoment8601\"] = mmoment8601;\n  exports[\"closeWindow\"] = closeWindow;\n  exports[\"RawHTML\"] = RawHTML;\n  exports[\"setFocus\"] = setFocus;\n  exports[\"toLocaleDateString\"] = toLocaleDateString;\n})(PS);\n(function(exports) {\n                                 \n\n  exports._unsafeStringify = JSON.stringify;\n})(PS[\"Simple.JSON\"] = PS[\"Simple.JSON\"] || {});\n(function($PS) {\n  // Generated by purs version 0.14.7\n  \"use strict\";\n  $PS[\"Data.Symbol\"] = $PS[\"Data.Symbol\"] || {};\n  var exports = $PS[\"Data.Symbol\"];                  \n  var SProxy = (function () {\n      function SProxy() {\n\n      };\n      SProxy.value = new SProxy();\n      return SProxy;\n  })();\n  var reflectSymbol = function (dict) {\n      return dict.reflectSymbol;\n  };\n  exports[\"reflectSymbol\"] = reflectSymbol;\n  exports[\"SProxy\"] = SProxy;\n})(PS);\n(function(exports) {\n  \"use strict\";\n\n  exports.unsafeGet = function (label) {\n    return function (rec) {\n      return rec[label];\n    };\n  };\n})(PS[\"Record.Unsafe\"] = PS[\"Record.Unsafe\"] || {});\n(function($PS) {\n  // Generated by purs version 0.14.7\n  \"use strict\";\n  $PS[\"Record.Unsafe\"] = $PS[\"Record.Unsafe\"] || {};\n  var exports = $PS[\"Record.Unsafe\"];\n  var $foreign = $PS[\"Record.Unsafe\"];\n  exports[\"unsafeGet\"] = $foreign.unsafeGet;\n})(PS);\n(function($PS) {\n  // Generated by purs version 0.14.7\n  \"use strict\";\n  $PS[\"Record\"] = $PS[\"Record\"] || {};\n  var exports = $PS[\"Record\"];\n  var Data_Symbol = $PS[\"Data.Symbol\"];\n  var Record_Unsafe = $PS[\"Record.Unsafe\"];\n  var get = function (dictIsSymbol) {\n      return function () {\n          return function (l) {\n              return function (r) {\n                  return Record_Unsafe.unsafeGet(Data_Symbol.reflectSymbol(dictIsSymbol)(l))(r);\n              };\n          };\n      };\n  };\n  exports[\"get\"] = get;\n})(PS);\n(function(exports) {\n  \"use strict\";\n\n  exports.copyRecord = function(rec) {\n    var copy = {};\n    for (var key in rec) {\n      if ({}.hasOwnProperty.call(rec, key)) {\n        copy[key] = rec[key];\n      }\n    }\n    return copy;\n  };\n\n  exports.unsafeInsert = function(l) {\n    return function(a) {\n      return function(rec) {\n        rec[l] = a;\n        return rec;\n      };\n    };\n  };\n})(PS[\"Record.Builder\"] = PS[\"Record.Builder\"] || {});\n(function($PS) {\n  // Generated by purs version 0.14.7\n  \"use strict\";\n  $PS[\"Record.Builder\"] = $PS[\"Record.Builder\"] || {};\n  var exports = $PS[\"Record.Builder\"];\n  var $foreign = $PS[\"Record.Builder\"];\n  var Control_Category = $PS[\"Control.Category\"];\n  var Control_Semigroupoid = $PS[\"Control.Semigroupoid\"];\n  var Data_Symbol = $PS[\"Data.Symbol\"];\n  var semigroupoidBuilder = Control_Semigroupoid.semigroupoidFn;\n  var insert = function () {\n      return function () {\n          return function (dictIsSymbol) {\n              return function (l) {\n                  return function (a) {\n                      return function (r1) {\n                          return $foreign.unsafeInsert(Data_Symbol.reflectSymbol(dictIsSymbol)(l))(a)(r1);\n                      };\n                  };\n              };\n          };\n      };\n  };\n  var categoryBuilder = Control_Category.categoryFn;\n  var build = function (v) {\n      return function (r1) {\n          return v($foreign.copyRecord(r1));\n      };\n  };\n  exports[\"build\"] = build;\n  exports[\"insert\"] = insert;\n  exports[\"semigroupoidBuilder\"] = semigroupoidBuilder;\n  exports[\"categoryBuilder\"] = categoryBuilder;\n})(PS);\n(function($PS) {\n  // Generated by purs version 0.14.7\n  \"use strict\";\n  $PS[\"Type.Proxy\"] = $PS[\"Type.Proxy\"] || {};\n  var exports = $PS[\"Type.Proxy\"];\n  var $$Proxy = (function () {\n      function $$Proxy() {\n\n      };\n      $$Proxy.value = new $$Proxy();\n      return $$Proxy;\n  })();\n  exports[\"Proxy\"] = $$Proxy;\n})(PS);\n(function($PS) {\n  // Generated by purs version 0.14.7\n  \"use strict\";\n  $PS[\"Simple.JSON\"] = $PS[\"Simple.JSON\"] || {};\n  var exports = $PS[\"Simple.JSON\"];\n  var $foreign = $PS[\"Simple.JSON\"];\n  var Control_Category = $PS[\"Control.Category\"];\n  var Control_Semigroupoid = $PS[\"Control.Semigroupoid\"];\n  var Data_Maybe = $PS[\"Data.Maybe\"];\n  var Data_Nullable = $PS[\"Data.Nullable\"];\n  var Data_Symbol = $PS[\"Data.Symbol\"];\n  var Foreign = $PS[\"Foreign\"];\n  var Record = $PS[\"Record\"];\n  var Record_Builder = $PS[\"Record.Builder\"];\n  var Type_Proxy = $PS[\"Type.Proxy\"];\n  var writeImplFields = function (dict) {\n      return dict.writeImplFields;\n  };\n  var writeImpl = function (dict) {\n      return dict.writeImpl;\n  };\n  var writeJSON = function (dictWriteForeign) {\n      var $82 = writeImpl(dictWriteForeign);\n      return function ($83) {\n          return $foreign[\"_unsafeStringify\"]($82($83));\n      };\n  };\n  var writeForeignString = {\n      writeImpl: Foreign.unsafeToForeign\n  };\n  var writeForeignNullable = function (dictWriteForeign) {\n      return {\n          writeImpl: (function () {\n              var $86 = Data_Maybe.maybe(Foreign.unsafeToForeign(Data_Nullable.toNullable(Data_Maybe.Nothing.value)))(writeImpl(dictWriteForeign));\n              return function ($87) {\n                  return $86(Data_Nullable.toMaybe($87));\n              };\n          })()\n      };\n  };\n  var writeForeignInt = {\n      writeImpl: Foreign.unsafeToForeign\n  };\n  var writeForeignForeign = {\n      writeImpl: Control_Category.identity(Control_Category.categoryFn)\n  };\n  var writeForeignBoolean = {\n      writeImpl: Foreign.unsafeToForeign\n  };\n  var recordWriteForeign = function () {\n      return function (dictWriteForeignFields) {\n          return {\n              writeImpl: function (rec) {\n                  var steps = writeImplFields(dictWriteForeignFields)(Type_Proxy[\"Proxy\"].value)(rec);\n                  return Foreign.unsafeToForeign(Record_Builder.build(steps)({}));\n              }\n          };\n      };\n  };\n  var nilWriteForeignFields = {\n      writeImplFields: function (v) {\n          return function (v1) {\n              return Control_Category.identity(Record_Builder.categoryBuilder);\n          };\n      }\n  };\n  var consWriteForeignFields = function (dictIsSymbol) {\n      return function (dictWriteForeign) {\n          return function (dictWriteForeignFields) {\n              return function () {\n                  return function () {\n                      return function () {\n                          return {\n                              writeImplFields: function (v) {\n                                  return function (rec) {\n                                      var rest = writeImplFields(dictWriteForeignFields)(Type_Proxy[\"Proxy\"].value)(rec);\n                                      var value = writeImpl(dictWriteForeign)(Record.get(dictIsSymbol)()(Data_Symbol.SProxy.value)(rec));\n                                      var result = Control_Semigroupoid.compose(Record_Builder.semigroupoidBuilder)(Record_Builder.insert()()(dictIsSymbol)(Data_Symbol.SProxy.value)(value))(rest);\n                                      return result;\n                                  };\n                              }\n                          };\n                      };\n                  };\n              };\n          };\n      };\n  };\n  exports[\"writeJSON\"] = writeJSON;\n  exports[\"writeForeignForeign\"] = writeForeignForeign;\n  exports[\"writeForeignString\"] = writeForeignString;\n  exports[\"writeForeignInt\"] = writeForeignInt;\n  exports[\"writeForeignBoolean\"] = writeForeignBoolean;\n  exports[\"writeForeignNullable\"] = writeForeignNullable;\n  exports[\"recordWriteForeign\"] = recordWriteForeign;\n  exports[\"consWriteForeignFields\"] = consWriteForeignFields;\n  exports[\"nilWriteForeignFields\"] = nilWriteForeignFields;\n})(PS);\n(function($PS) {\n  // Generated by purs version 0.14.7\n  \"use strict\";\n  $PS[\"Model\"] = $PS[\"Model\"] || {};\n  var exports = $PS[\"Model\"];\n  var Control_Applicative = $PS[\"Control.Applicative\"];\n  var Control_Monad_Except = $PS[\"Control.Monad.Except\"];\n  var Control_Monad_Except_Trans = $PS[\"Control.Monad.Except.Trans\"];\n  var Data_Array = $PS[\"Data.Array\"];\n  var Data_Either = $PS[\"Data.Either\"];\n  var Data_Eq = $PS[\"Data.Eq\"];\n  var Data_Functor = $PS[\"Data.Functor\"];\n  var Data_Identity = $PS[\"Data.Identity\"];\n  var Data_Maybe = $PS[\"Data.Maybe\"];\n  var Data_Monoid = $PS[\"Data.Monoid\"];\n  var Data_String_Common = $PS[\"Data.String.Common\"];\n  var Foreign = $PS[\"Foreign\"];\n  var Simple_JSON = $PS[\"Simple.JSON\"];                \n  var TagCloudModeTop = (function () {\n      function TagCloudModeTop(value0, value1) {\n          this.value0 = value0;\n          this.value1 = value1;\n      };\n      TagCloudModeTop.create = function (value0) {\n          return function (value1) {\n              return new TagCloudModeTop(value0, value1);\n          };\n      };\n      return TagCloudModeTop;\n  })();\n  var TagCloudModeLowerBound = (function () {\n      function TagCloudModeLowerBound(value0, value1) {\n          this.value0 = value0;\n          this.value1 = value1;\n      };\n      TagCloudModeLowerBound.create = function (value0) {\n          return function (value1) {\n              return new TagCloudModeLowerBound(value0, value1);\n          };\n      };\n      return TagCloudModeLowerBound;\n  })();\n  var TagCloudModeRelated = (function () {\n      function TagCloudModeRelated(value0, value1) {\n          this.value0 = value0;\n          this.value1 = value1;\n      };\n      TagCloudModeRelated.create = function (value0) {\n          return function (value1) {\n              return new TagCloudModeRelated(value0, value1);\n          };\n      };\n      return TagCloudModeRelated;\n  })();\n  var TagCloudModeNone = (function () {\n      function TagCloudModeNone() {\n\n      };\n      TagCloudModeNone.value = new TagCloudModeNone();\n      return TagCloudModeNone;\n  })();\n  var writeForeignTagCloudMode$prime = Simple_JSON.recordWriteForeign()(Simple_JSON.consWriteForeignFields({\n      reflectSymbol: function () {\n          return \"expanded\";\n      }\n  })(Simple_JSON.writeForeignBoolean)(Simple_JSON.consWriteForeignFields({\n      reflectSymbol: function () {\n          return \"mode\";\n      }\n  })(Simple_JSON.writeForeignString)(Simple_JSON.consWriteForeignFields({\n      reflectSymbol: function () {\n          return \"value\";\n      }\n  })(Simple_JSON.writeForeignForeign)(Simple_JSON.nilWriteForeignFields)()()())()()())()()());\n  var writeForeignNote$prime = Simple_JSON.recordWriteForeign()(Simple_JSON.consWriteForeignFields({\n      reflectSymbol: function () {\n          return \"created\";\n      }\n  })(Simple_JSON.writeForeignString)(Simple_JSON.consWriteForeignFields({\n      reflectSymbol: function () {\n          return \"id\";\n      }\n  })(Simple_JSON.writeForeignInt)(Simple_JSON.consWriteForeignFields({\n      reflectSymbol: function () {\n          return \"isMarkdown\";\n      }\n  })(Simple_JSON.writeForeignBoolean)(Simple_JSON.consWriteForeignFields({\n      reflectSymbol: function () {\n          return \"length\";\n      }\n  })(Simple_JSON.writeForeignInt)(Simple_JSON.consWriteForeignFields({\n      reflectSymbol: function () {\n          return \"shared\";\n      }\n  })(Simple_JSON.writeForeignBoolean)(Simple_JSON.consWriteForeignFields({\n      reflectSymbol: function () {\n          return \"slug\";\n      }\n  })(Simple_JSON.writeForeignString)(Simple_JSON.consWriteForeignFields({\n      reflectSymbol: function () {\n          return \"text\";\n      }\n  })(Simple_JSON.writeForeignString)(Simple_JSON.consWriteForeignFields({\n      reflectSymbol: function () {\n          return \"title\";\n      }\n  })(Simple_JSON.writeForeignString)(Simple_JSON.consWriteForeignFields({\n      reflectSymbol: function () {\n          return \"updated\";\n      }\n  })(Simple_JSON.writeForeignString)(Simple_JSON.nilWriteForeignFields)()()())()()())()()())()()())()()())()()())()()())()()())()()());\n  var writeForeignBookmark$prime = Simple_JSON.recordWriteForeign()(Simple_JSON.consWriteForeignFields({\n      reflectSymbol: function () {\n          return \"archiveUrl\";\n      }\n  })(Simple_JSON.writeForeignNullable(Simple_JSON.writeForeignString))(Simple_JSON.consWriteForeignFields({\n      reflectSymbol: function () {\n          return \"bid\";\n      }\n  })(Simple_JSON.writeForeignInt)(Simple_JSON.consWriteForeignFields({\n      reflectSymbol: function () {\n          return \"description\";\n      }\n  })(Simple_JSON.writeForeignString)(Simple_JSON.consWriteForeignFields({\n      reflectSymbol: function () {\n          return \"private\";\n      }\n  })(Simple_JSON.writeForeignBoolean)(Simple_JSON.consWriteForeignFields({\n      reflectSymbol: function () {\n          return \"selected\";\n      }\n  })(Simple_JSON.writeForeignBoolean)(Simple_JSON.consWriteForeignFields({\n      reflectSymbol: function () {\n          return \"slug\";\n      }\n  })(Simple_JSON.writeForeignString)(Simple_JSON.consWriteForeignFields({\n      reflectSymbol: function () {\n          return \"tags\";\n      }\n  })(Simple_JSON.writeForeignString)(Simple_JSON.consWriteForeignFields({\n      reflectSymbol: function () {\n          return \"time\";\n      }\n  })(Simple_JSON.writeForeignString)(Simple_JSON.consWriteForeignFields({\n      reflectSymbol: function () {\n          return \"title\";\n      }\n  })(Simple_JSON.writeForeignString)(Simple_JSON.consWriteForeignFields({\n      reflectSymbol: function () {\n          return \"toread\";\n      }\n  })(Simple_JSON.writeForeignBoolean)(Simple_JSON.consWriteForeignFields({\n      reflectSymbol: function () {\n          return \"url\";\n      }\n  })(Simple_JSON.writeForeignString)(Simple_JSON.nilWriteForeignFields)()()())()()())()()())()()())()()())()()())()()())()()())()()())()()())()()());\n  var writeForeignAccountSettin = Simple_JSON.recordWriteForeign()(Simple_JSON.consWriteForeignFields({\n      reflectSymbol: function () {\n          return \"archiveDefault\";\n      }\n  })(Simple_JSON.writeForeignBoolean)(Simple_JSON.consWriteForeignFields({\n      reflectSymbol: function () {\n          return \"privacyLock\";\n      }\n  })(Simple_JSON.writeForeignBoolean)(Simple_JSON.consWriteForeignFields({\n      reflectSymbol: function () {\n          return \"privateDefault\";\n      }\n  })(Simple_JSON.writeForeignBoolean)(Simple_JSON.nilWriteForeignFields)()()())()()())()()());\n  var eqTagCloudModeF = {\n      eq: function (x) {\n          return function (y) {\n              if (x instanceof TagCloudModeTop && y instanceof TagCloudModeTop) {\n                  return x.value0 === y.value0 && x.value1 === y.value1;\n              };\n              if (x instanceof TagCloudModeLowerBound && y instanceof TagCloudModeLowerBound) {\n                  return x.value0 === y.value0 && x.value1 === y.value1;\n              };\n              if (x instanceof TagCloudModeRelated && y instanceof TagCloudModeRelated) {\n                  return x.value0 === y.value0 && Data_Eq.eq(Data_Eq.eqArray(Data_Eq.eqString))(x.value1)(y.value1);\n              };\n              if (x instanceof TagCloudModeNone && y instanceof TagCloudModeNone) {\n                  return true;\n              };\n              return false;\n          };\n      }\n  };\n  var tagCloudModeToF = function (tagCloudMode) {\n      return Data_Maybe.fromMaybe(TagCloudModeNone.value)(Data_Either.hush(Control_Monad_Except.runExcept((function () {\n          if (tagCloudMode.mode === \"top\") {\n              return Data_Functor.map(Control_Monad_Except_Trans.functorExceptT(Data_Identity.functorIdentity))(TagCloudModeTop.create(tagCloudMode.expanded))(Foreign.readInt(Data_Identity.monadIdentity)(tagCloudMode.value));\n          };\n          if (tagCloudMode.mode === \"lowerBound\") {\n              return Data_Functor.map(Control_Monad_Except_Trans.functorExceptT(Data_Identity.functorIdentity))(TagCloudModeLowerBound.create(tagCloudMode.expanded))(Foreign.readInt(Data_Identity.monadIdentity)(tagCloudMode.value));\n          };\n          if (tagCloudMode.mode === \"related\") {\n              return Data_Functor.map(Control_Monad_Except_Trans.functorExceptT(Data_Identity.functorIdentity))(function (s) {\n                  return new TagCloudModeRelated(tagCloudMode.expanded, Data_String_Common.split(\" \")(s));\n              })(Foreign.readString(Data_Identity.monadIdentity)(tagCloudMode.value));\n          };\n          return Control_Applicative.pure(Control_Monad_Except_Trans.applicativeExceptT(Data_Identity.monadIdentity))(TagCloudModeNone.value);\n      })())));\n  };\n  var tagCloudModeFromF = function (v) {\n      if (v instanceof TagCloudModeTop) {\n          return {\n              mode: \"top\",\n              value: Foreign.unsafeToForeign(v.value1),\n              expanded: v.value0\n          };\n      };\n      if (v instanceof TagCloudModeLowerBound) {\n          return {\n              mode: \"lowerBound\",\n              value: Foreign.unsafeToForeign(v.value1),\n              expanded: v.value0\n          };\n      };\n      if (v instanceof TagCloudModeRelated) {\n          return {\n              mode: \"related\",\n              value: Foreign.unsafeToForeign(Data_Array.intercalate(Data_Monoid.monoidString)(\" \")(v.value1)),\n              expanded: v.value0\n          };\n      };\n      if (v instanceof TagCloudModeNone) {\n          return {\n              mode: \"none\",\n              value: Foreign.unsafeToForeign(\"\"),\n              expanded: false\n          };\n      };\n      throw new Error(\"Failed pattern match at Model (line 92, column 1 - line 92, column 51): \" + [ v.constructor.name ]);\n  };\n  var setExpanded = function (v) {\n      return function (v1) {\n          if (v instanceof TagCloudModeTop) {\n              return new TagCloudModeTop(v1, v.value1);\n          };\n          if (v instanceof TagCloudModeLowerBound) {\n              return new TagCloudModeLowerBound(v1, v.value1);\n          };\n          if (v instanceof TagCloudModeRelated) {\n              return new TagCloudModeRelated(v1, v.value1);\n          };\n          if (v instanceof TagCloudModeNone) {\n              return TagCloudModeNone.value;\n          };\n          throw new Error(\"Failed pattern match at Model (line 112, column 1 - line 112, column 57): \" + [ v.constructor.name, v1.constructor.name ]);\n      };\n  };\n  var isRelated = function (v) {\n      if (v instanceof TagCloudModeRelated) {\n          return true;\n      };\n      return false;\n  };\n  var isExpanded = function (v) {\n      if (v instanceof TagCloudModeTop) {\n          return v.value0;\n      };\n      if (v instanceof TagCloudModeLowerBound) {\n          return v.value0;\n      };\n      if (v instanceof TagCloudModeRelated) {\n          return v.value0;\n      };\n      if (v instanceof TagCloudModeNone) {\n          return false;\n      };\n      throw new Error(\"Failed pattern match at Model (line 102, column 1 - line 102, column 39): \" + [ v.constructor.name ]);\n  };\n  exports[\"TagCloudModeTop\"] = TagCloudModeTop;\n  exports[\"TagCloudModeLowerBound\"] = TagCloudModeLowerBound;\n  exports[\"TagCloudModeRelated\"] = TagCloudModeRelated;\n  exports[\"TagCloudModeNone\"] = TagCloudModeNone;\n  exports[\"tagCloudModeToF\"] = tagCloudModeToF;\n  exports[\"tagCloudModeFromF\"] = tagCloudModeFromF;\n  exports[\"isExpanded\"] = isExpanded;\n  exports[\"isRelated\"] = isRelated;\n  exports[\"setExpanded\"] = setExpanded;\n  exports[\"writeForeignBookmark'\"] = writeForeignBookmark$prime;\n  exports[\"writeForeignNote'\"] = writeForeignNote$prime;\n  exports[\"writeForeignAccountSettin\"] = writeForeignAccountSettin;\n  exports[\"writeForeignTagCloudMode'\"] = writeForeignTagCloudMode$prime;\n  exports[\"eqTagCloudModeF\"] = eqTagCloudModeF;\n})(PS);\n(function(exports) {\n  \"use strict\";\n\n  exports.window = function () {\n    return window;\n  };\n})(PS[\"Web.HTML\"] = PS[\"Web.HTML\"] || {});\n(function($PS) {\n  // Generated by purs version 0.14.7\n  \"use strict\";\n  $PS[\"Web.HTML\"] = $PS[\"Web.HTML\"] || {};\n  var exports = $PS[\"Web.HTML\"];\n  var $foreign = $PS[\"Web.HTML\"];\n  exports[\"window\"] = $foreign.window;\n})(PS);\n(function(exports) {\n  \"use strict\";\n\n  exports.setHref = function (href) {\n    return function (location) {\n      return function () {\n        location.href = href;\n      };\n    };\n  };\n\n  // ----------------------------------------------------------------------------\n\n  exports.origin = function (location) {\n    return function () {\n      return location.origin;\n    };\n  };\n\n  // ----------------------------------------------------------------------------\n\n  exports.search = function (location) {\n    return function () {\n      return location.search;\n    };\n  };\n\n  // ----------------------------------------------------------------------------\n\n  exports.reload = function (location) {\n    return function () {\n      location.reload();\n    };\n  };\n})(PS[\"Web.HTML.Location\"] = PS[\"Web.HTML.Location\"] || {});\n(function($PS) {\n  // Generated by purs version 0.14.7\n  \"use strict\";\n  $PS[\"Web.HTML.Location\"] = $PS[\"Web.HTML.Location\"] || {};\n  var exports = $PS[\"Web.HTML.Location\"];\n  var $foreign = $PS[\"Web.HTML.Location\"];\n  exports[\"setHref\"] = $foreign.setHref;\n  exports[\"origin\"] = $foreign.origin;\n  exports[\"search\"] = $foreign.search;\n  exports[\"reload\"] = $foreign.reload;\n})(PS);\n(function(exports) {\n  \"use strict\";\n\n  exports.document = function (window) {\n    return function () {\n      return window.document;\n    };\n  };\n\n  exports.location = function (window) {\n    return function () {\n      return window.location;\n    };\n  };\n})(PS[\"Web.HTML.Window\"] = PS[\"Web.HTML.Window\"] || {});\n(function($PS) {\n  // Generated by purs version 0.14.7\n  \"use strict\";\n  $PS[\"Web.HTML.Window\"] = $PS[\"Web.HTML.Window\"] || {};\n  var exports = $PS[\"Web.HTML.Window\"];\n  var $foreign = $PS[\"Web.HTML.Window\"];\n  exports[\"document\"] = $foreign.document;\n  exports[\"location\"] = $foreign.location;\n})(PS);\n(function($PS) {\n  // Generated by purs version 0.14.7\n  \"use strict\";\n  $PS[\"App\"] = $PS[\"App\"] || {};\n  var exports = $PS[\"App\"];\n  var Affjax = $PS[\"Affjax\"];\n  var Affjax_RequestBody = $PS[\"Affjax.RequestBody\"];\n  var Affjax_RequestHeader = $PS[\"Affjax.RequestHeader\"];\n  var Affjax_ResponseFormat = $PS[\"Affjax.ResponseFormat\"];\n  var Affjax_StatusCode = $PS[\"Affjax.StatusCode\"];\n  var Control_Applicative = $PS[\"Control.Applicative\"];\n  var Control_Bind = $PS[\"Control.Bind\"];\n  var Data_Argonaut_Decode_Class = $PS[\"Data.Argonaut.Decode.Class\"];\n  var Data_Array = $PS[\"Data.Array\"];\n  var Data_Either = $PS[\"Data.Either\"];\n  var Data_Eq = $PS[\"Data.Eq\"];\n  var Data_Functor = $PS[\"Data.Functor\"];\n  var Data_HTTP_Method = $PS[\"Data.HTTP.Method\"];\n  var Data_Maybe = $PS[\"Data.Maybe\"];\n  var Data_MediaType_Common = $PS[\"Data.MediaType.Common\"];\n  var Data_Show = $PS[\"Data.Show\"];\n  var Data_Unit = $PS[\"Data.Unit\"];\n  var Effect = $PS[\"Effect\"];\n  var Effect_Aff = $PS[\"Effect.Aff\"];\n  var Effect_Class = $PS[\"Effect.Class\"];\n  var Globals = $PS[\"Globals\"];\n  var Model = $PS[\"Model\"];\n  var Simple_JSON = $PS[\"Simple.JSON\"];\n  var Web_HTML = $PS[\"Web.HTML\"];\n  var Web_HTML_Location = $PS[\"Web.HTML.Location\"];\n  var Web_HTML_Window = $PS[\"Web.HTML.Window\"];                \n  var Star = (function () {\n      function Star() {\n\n      };\n      Star.value = new Star();\n      return Star;\n  })();\n  var UnStar = (function () {\n      function UnStar() {\n\n      };\n      UnStar.value = new UnStar();\n      return UnStar;\n  })();\n  var showStar = {\n      show: function (v) {\n          if (v instanceof Star) {\n              return \"star\";\n          };\n          if (v instanceof UnStar) {\n              return \"unstar\";\n          };\n          throw new Error(\"Failed pattern match at App (line 29, column 1 - line 31, column 25): \" + [ v.constructor.name ]);\n      }\n  };\n  var fetchUrl = function (method) {\n      return function (url) {\n          return function (headers) {\n              return function (content) {\n                  return function (rt) {\n                      var app = Globals[\"app'\"](Data_Unit.unit);\n                      return Affjax.request({\n                          method: new Data_Either.Left(method),\n                          url: url,\n                          headers: Data_Array.cons(new Affjax_RequestHeader.RequestHeader(app.csrfHeaderName, app.csrfToken))(headers),\n                          content: content,\n                          username: Affjax.defaultRequest.username,\n                          password: Affjax.defaultRequest.password,\n                          withCredentials: Affjax.defaultRequest.withCredentials,\n                          responseFormat: rt,\n                          timeout: Affjax.defaultRequest.timeout\n                      });\n                  };\n              };\n          };\n      };\n  };\n  var logout = function (u) {\n      var app = Globals[\"app'\"](u);\n      return Control_Bind.discard(Control_Bind.discardUnit)(Effect_Aff.bindAff)(Data_Functor[\"void\"](Effect_Aff.functorAff)(fetchUrl(Data_HTTP_Method.POST.value)(app.authRlogoutR)([  ])(Data_Maybe.Nothing.value)(Affjax_ResponseFormat.ignore)))(function () {\n          return Effect_Class.liftEffect(Effect_Aff.monadEffectAff)(Control_Bind.bind(Effect.bindEffect)(Control_Bind.bind(Effect.bindEffect)(Web_HTML.window)(Web_HTML_Window.location))(Web_HTML_Location.reload));\n      });\n  };\n  var fetchPath = function (method) {\n      return function (path) {\n          return function (headers) {\n              return function (content) {\n                  return function (rt) {\n                      return fetchUrl(method)((Globals[\"app'\"](Data_Unit.unit)).homeR + path)(headers)(content)(rt);\n                  };\n              };\n          };\n      };\n  };\n  var fetchUrlEnc = function (method) {\n      return function (path) {\n          return function (content) {\n              return function (rt) {\n                  return fetchPath(method)(path)([ new Affjax_RequestHeader.ContentType(Data_MediaType_Common.applicationFormURLEncoded) ])(Data_Functor.map(Data_Maybe.functorMaybe)(Affjax_RequestBody.FormURLEncoded.create)(content))(rt);\n              };\n          };\n      };\n  };\n  var markRead = function (bid) {\n      var path = \"bm/\" + (Data_Show.show(Data_Show.showInt)(bid) + \"/read\");\n      return fetchUrlEnc(Data_HTTP_Method.POST.value)(path)(Data_Maybe.Nothing.value)(Affjax_ResponseFormat.ignore);\n  };\n  var toggleStar = function (bid) {\n      return function (action) {\n          var path = \"bm/\" + (Data_Show.show(Data_Show.showInt)(bid) + (\"/\" + Data_Show.show(showStar)(action)));\n          return Data_Functor[\"void\"](Effect_Aff.functorAff)(fetchUrlEnc(Data_HTTP_Method.POST.value)(path)(Data_Maybe.Nothing.value)(Affjax_ResponseFormat.ignore));\n      };\n  };\n  var fetchJson = function (dictWriteForeign) {\n      return function (method) {\n          return function (path) {\n              return function (content) {\n                  return function (rt) {\n                      return fetchPath(method)(path)([ new Affjax_RequestHeader.ContentType(Data_MediaType_Common.applicationJSON) ])(Data_Functor.map(Data_Maybe.functorMaybe)((function () {\n                          var $5 = Simple_JSON.writeJSON(dictWriteForeign);\n                          return function ($6) {\n                              return Affjax_RequestBody.string($5($6));\n                          };\n                      })())(content))(rt);\n                  };\n              };\n          };\n      };\n  };\n  var getTagCloud = function (mode) {\n      return Control_Bind.bind(Effect_Aff.bindAff)(fetchJson(Model[\"writeForeignTagCloudMode'\"])(Data_HTTP_Method.POST.value)(\"api/tagcloud\")(new Data_Maybe.Just(mode))(Affjax_ResponseFormat.json))(function (eres) {\n          return Control_Applicative.pure(Effect_Aff.applicativeAff)(Control_Bind.bind(Data_Maybe.bindMaybe)(Data_Either.hush(eres))(function (res) {\n              return Data_Either.hush(Data_Argonaut_Decode_Class.decodeJson(Data_Argonaut_Decode_Class.decodeForeignObject(Data_Argonaut_Decode_Class.decodeJsonInt))(res.body));\n          }));\n      });\n  };\n  var lookupTitle = function (bm) {\n      return Control_Bind.bind(Effect_Aff.bindAff)(fetchJson(Model[\"writeForeignBookmark'\"])(Data_HTTP_Method.POST.value)(\"api/lookuptitle\")(new Data_Maybe.Just(bm))(Affjax_ResponseFormat.string))(function (eres) {\n          return Control_Applicative.pure(Effect_Aff.applicativeAff)(Control_Bind.bind(Data_Maybe.bindMaybe)(Data_Either.hush(eres))(function (res) {\n              var $4 = Data_Eq.eq(Affjax_StatusCode.eqStatusCode)(res.status)(200);\n              if ($4) {\n                  return new Data_Maybe.Just(res.body);\n              };\n              return Data_Maybe.Nothing.value;\n          }));\n      });\n  };\n  var updateTagCloudMode = function (mode) {\n      return fetchJson(Model[\"writeForeignTagCloudMode'\"])(Data_HTTP_Method.POST.value)(\"api/tagcloudmode\")(new Data_Maybe.Just(mode))(Affjax_ResponseFormat.ignore);\n  };\n  var editNote = function (bm) {\n      return fetchJson(Model[\"writeForeignNote'\"])(Data_HTTP_Method.POST.value)(\"api/note/add\")(new Data_Maybe.Just(bm))(Affjax_ResponseFormat.string);\n  };\n  var editBookmark = function (bm) {\n      return fetchJson(Model[\"writeForeignBookmark'\"])(Data_HTTP_Method.POST.value)(\"api/add\")(new Data_Maybe.Just(bm))(Affjax_ResponseFormat.string);\n  };\n  var editAccountSettings = function (us) {\n      return fetchJson(Model.writeForeignAccountSettin)(Data_HTTP_Method.POST.value)(\"api/accountSettings\")(new Data_Maybe.Just(us))(Affjax_ResponseFormat.ignore);\n  };\n  var destroyNote = function (nid) {\n      return fetchUrlEnc(Data_HTTP_Method.DELETE.value)(\"api/note/\" + Data_Show.show(Data_Show.showInt)(nid))(Data_Maybe.Nothing.value)(Affjax_ResponseFormat.ignore);\n  };\n  var destroy = function (bid) {\n      return fetchUrlEnc(Data_HTTP_Method.DELETE.value)(\"bm/\" + Data_Show.show(Data_Show.showInt)(bid))(Data_Maybe.Nothing.value)(Affjax_ResponseFormat.ignore);\n  };\n  exports[\"Star\"] = Star;\n  exports[\"UnStar\"] = UnStar;\n  exports[\"toggleStar\"] = toggleStar;\n  exports[\"destroy\"] = destroy;\n  exports[\"markRead\"] = markRead;\n  exports[\"editBookmark\"] = editBookmark;\n  exports[\"editNote\"] = editNote;\n  exports[\"lookupTitle\"] = lookupTitle;\n  exports[\"getTagCloud\"] = getTagCloud;\n  exports[\"updateTagCloudMode\"] = updateTagCloudMode;\n  exports[\"destroyNote\"] = destroyNote;\n  exports[\"editAccountSettings\"] = editAccountSettings;\n  exports[\"logout\"] = logout;\n})(PS);\n(function($PS) {\n  // Generated by purs version 0.14.7\n  \"use strict\";\n  $PS[\"DOM.HTML.Indexed.InputType\"] = $PS[\"DOM.HTML.Indexed.InputType\"] || {};\n  var exports = $PS[\"DOM.HTML.Indexed.InputType\"];\n  var InputButton = (function () {\n      function InputButton() {\n\n      };\n      InputButton.value = new InputButton();\n      return InputButton;\n  })();\n  var InputCheckbox = (function () {\n      function InputCheckbox() {\n\n      };\n      InputCheckbox.value = new InputCheckbox();\n      return InputCheckbox;\n  })();\n  var InputColor = (function () {\n      function InputColor() {\n\n      };\n      InputColor.value = new InputColor();\n      return InputColor;\n  })();\n  var InputDate = (function () {\n      function InputDate() {\n\n      };\n      InputDate.value = new InputDate();\n      return InputDate;\n  })();\n  var InputDatetimeLocal = (function () {\n      function InputDatetimeLocal() {\n\n      };\n      InputDatetimeLocal.value = new InputDatetimeLocal();\n      return InputDatetimeLocal;\n  })();\n  var InputEmail = (function () {\n      function InputEmail() {\n\n      };\n      InputEmail.value = new InputEmail();\n      return InputEmail;\n  })();\n  var InputFile = (function () {\n      function InputFile() {\n\n      };\n      InputFile.value = new InputFile();\n      return InputFile;\n  })();\n  var InputHidden = (function () {\n      function InputHidden() {\n\n      };\n      InputHidden.value = new InputHidden();\n      return InputHidden;\n  })();\n  var InputImage = (function () {\n      function InputImage() {\n\n      };\n      InputImage.value = new InputImage();\n      return InputImage;\n  })();\n  var InputMonth = (function () {\n      function InputMonth() {\n\n      };\n      InputMonth.value = new InputMonth();\n      return InputMonth;\n  })();\n  var InputNumber = (function () {\n      function InputNumber() {\n\n      };\n      InputNumber.value = new InputNumber();\n      return InputNumber;\n  })();\n  var InputPassword = (function () {\n      function InputPassword() {\n\n      };\n      InputPassword.value = new InputPassword();\n      return InputPassword;\n  })();\n  var InputRadio = (function () {\n      function InputRadio() {\n\n      };\n      InputRadio.value = new InputRadio();\n      return InputRadio;\n  })();\n  var InputRange = (function () {\n      function InputRange() {\n\n      };\n      InputRange.value = new InputRange();\n      return InputRange;\n  })();\n  var InputReset = (function () {\n      function InputReset() {\n\n      };\n      InputReset.value = new InputReset();\n      return InputReset;\n  })();\n  var InputSearch = (function () {\n      function InputSearch() {\n\n      };\n      InputSearch.value = new InputSearch();\n      return InputSearch;\n  })();\n  var InputSubmit = (function () {\n      function InputSubmit() {\n\n      };\n      InputSubmit.value = new InputSubmit();\n      return InputSubmit;\n  })();\n  var InputTel = (function () {\n      function InputTel() {\n\n      };\n      InputTel.value = new InputTel();\n      return InputTel;\n  })();\n  var InputText = (function () {\n      function InputText() {\n\n      };\n      InputText.value = new InputText();\n      return InputText;\n  })();\n  var InputTime = (function () {\n      function InputTime() {\n\n      };\n      InputTime.value = new InputTime();\n      return InputTime;\n  })();\n  var InputUrl = (function () {\n      function InputUrl() {\n\n      };\n      InputUrl.value = new InputUrl();\n      return InputUrl;\n  })();\n  var InputWeek = (function () {\n      function InputWeek() {\n\n      };\n      InputWeek.value = new InputWeek();\n      return InputWeek;\n  })();\n  var renderInputType = function (v) {\n      if (v instanceof InputButton) {\n          return \"button\";\n      };\n      if (v instanceof InputCheckbox) {\n          return \"checkbox\";\n      };\n      if (v instanceof InputColor) {\n          return \"color\";\n      };\n      if (v instanceof InputDate) {\n          return \"date\";\n      };\n      if (v instanceof InputDatetimeLocal) {\n          return \"datetime-local\";\n      };\n      if (v instanceof InputEmail) {\n          return \"email\";\n      };\n      if (v instanceof InputFile) {\n          return \"file\";\n      };\n      if (v instanceof InputHidden) {\n          return \"hidden\";\n      };\n      if (v instanceof InputImage) {\n          return \"image\";\n      };\n      if (v instanceof InputMonth) {\n          return \"month\";\n      };\n      if (v instanceof InputNumber) {\n          return \"number\";\n      };\n      if (v instanceof InputPassword) {\n          return \"password\";\n      };\n      if (v instanceof InputRadio) {\n          return \"radio\";\n      };\n      if (v instanceof InputRange) {\n          return \"range\";\n      };\n      if (v instanceof InputReset) {\n          return \"reset\";\n      };\n      if (v instanceof InputSearch) {\n          return \"search\";\n      };\n      if (v instanceof InputSubmit) {\n          return \"submit\";\n      };\n      if (v instanceof InputTel) {\n          return \"tel\";\n      };\n      if (v instanceof InputText) {\n          return \"text\";\n      };\n      if (v instanceof InputTime) {\n          return \"time\";\n      };\n      if (v instanceof InputUrl) {\n          return \"url\";\n      };\n      if (v instanceof InputWeek) {\n          return \"week\";\n      };\n      throw new Error(\"Failed pattern match at DOM.HTML.Indexed.InputType (line 28, column 19 - line 50, column 22): \" + [ v.constructor.name ]);\n  };\n  exports[\"InputCheckbox\"] = InputCheckbox;\n  exports[\"InputReset\"] = InputReset;\n  exports[\"InputSubmit\"] = InputSubmit;\n  exports[\"InputText\"] = InputText;\n  exports[\"InputUrl\"] = InputUrl;\n  exports[\"renderInputType\"] = renderInputType;\n})(PS);\n(function($PS) {\n  // Generated by purs version 0.14.7\n  \"use strict\";\n  $PS[\"Control.Monad.State.Class\"] = $PS[\"Control.Monad.State.Class\"] || {};\n  var exports = $PS[\"Control.Monad.State.Class\"];\n  var Data_Tuple = $PS[\"Data.Tuple\"];\n  var Data_Unit = $PS[\"Data.Unit\"];                \n  var state = function (dict) {\n      return dict.state;\n  };\n  var modify_ = function (dictMonadState) {\n      return function (f) {\n          return state(dictMonadState)(function (s) {\n              return new Data_Tuple.Tuple(Data_Unit.unit, f(s));\n          });\n      };\n  };\n  var modify = function (dictMonadState) {\n      return function (f) {\n          return state(dictMonadState)(function (s) {\n              var s$prime = f(s);\n              return new Data_Tuple.Tuple(s$prime, s$prime);\n          });\n      };\n  };\n  var gets = function (dictMonadState) {\n      return function (f) {\n          return state(dictMonadState)(function (s) {\n              return new Data_Tuple.Tuple(f(s), s);\n          });\n      };\n  };\n  var get = function (dictMonadState) {\n      return state(dictMonadState)(function (s) {\n          return new Data_Tuple.Tuple(s, s);\n      });\n  };\n  exports[\"get\"] = get;\n  exports[\"gets\"] = gets;\n  exports[\"modify\"] = modify;\n  exports[\"modify_\"] = modify_;\n})(PS);\n(function($PS) {\n  // Generated by purs version 0.14.7\n  \"use strict\";\n  $PS[\"Data.Lens.Getter\"] = $PS[\"Data.Lens.Getter\"] || {};\n  var exports = $PS[\"Data.Lens.Getter\"];\n  var Control_Category = $PS[\"Control.Category\"];\n  var Control_Monad_State_Class = $PS[\"Control.Monad.State.Class\"];\n  var Data_Newtype = $PS[\"Data.Newtype\"];                                    \n  var view = function (l) {\n      return Data_Newtype.unwrap()(l(Control_Category.identity(Control_Category.categoryFn)));\n  };\n  var viewOn = function (s) {\n      return function (l) {\n          return view(l)(s);\n      };\n  };\n  var use = function (dictMonadState) {\n      return function (p) {\n          return Control_Monad_State_Class.gets(dictMonadState)(function (v) {\n              return viewOn(v)(p);\n          });\n      };\n  };\n  exports[\"use\"] = use;\n})(PS);\n(function($PS) {\n  // Generated by purs version 0.14.7\n  \"use strict\";\n  $PS[\"Data.Lens.Internal.Forget\"] = $PS[\"Data.Lens.Internal.Forget\"] || {};\n  var exports = $PS[\"Data.Lens.Internal.Forget\"];\n  var Data_Tuple = $PS[\"Data.Tuple\"];\n  var profunctorForget = {\n      dimap: function (f) {\n          return function (v) {\n              return function (v1) {\n                  return function ($24) {\n                      return v1(f($24));\n                  };\n              };\n          };\n      }\n  };\n  var strongForget = {\n      first: function (v) {\n          return function ($25) {\n              return v(Data_Tuple.fst($25));\n          };\n      },\n      second: function (v) {\n          return function ($26) {\n              return v(Data_Tuple.snd($26));\n          };\n      },\n      Profunctor0: function () {\n          return profunctorForget;\n      }\n  };\n  exports[\"strongForget\"] = strongForget;\n})(PS);\n(function($PS) {\n  // Generated by purs version 0.14.7\n  \"use strict\";\n  $PS[\"Data.Profunctor\"] = $PS[\"Data.Profunctor\"] || {};\n  var exports = $PS[\"Data.Profunctor\"];                  \n  var profunctorFn = {\n      dimap: function (a2b) {\n          return function (c2d) {\n              return function (b2c) {\n                  return function ($8) {\n                      return c2d(b2c(a2b($8)));\n                  };\n              };\n          };\n      }\n  };\n  var dimap = function (dict) {\n      return dict.dimap;\n  };\n  exports[\"dimap\"] = dimap;\n  exports[\"profunctorFn\"] = profunctorFn;\n})(PS);\n(function($PS) {\n  // Generated by purs version 0.14.7\n  \"use strict\";\n  $PS[\"Data.Profunctor.Strong\"] = $PS[\"Data.Profunctor.Strong\"] || {};\n  var exports = $PS[\"Data.Profunctor.Strong\"];\n  var Data_Functor = $PS[\"Data.Functor\"];\n  var Data_Profunctor = $PS[\"Data.Profunctor\"];\n  var Data_Tuple = $PS[\"Data.Tuple\"];                \n  var strongFn = {\n      first: function (a2b) {\n          return function (v) {\n              return new Data_Tuple.Tuple(a2b(v.value0), v.value1);\n          };\n      },\n      second: Data_Functor.map(Data_Tuple.functorTuple),\n      Profunctor0: function () {\n          return Data_Profunctor.profunctorFn;\n      }\n  };\n  var first = function (dict) {\n      return dict.first;\n  };\n  exports[\"first\"] = first;\n  exports[\"strongFn\"] = strongFn;\n})(PS);\n(function($PS) {\n  // Generated by purs version 0.14.7\n  \"use strict\";\n  $PS[\"Data.Lens.Lens\"] = $PS[\"Data.Lens.Lens\"] || {};\n  var exports = $PS[\"Data.Lens.Lens\"];\n  var Data_Profunctor = $PS[\"Data.Profunctor\"];\n  var Data_Profunctor_Strong = $PS[\"Data.Profunctor.Strong\"];\n  var Data_Tuple = $PS[\"Data.Tuple\"];\n  var lens$prime = function (to) {\n      return function (dictStrong) {\n          return function (pab) {\n              return Data_Profunctor.dimap(dictStrong.Profunctor0())(to)(function (v) {\n                  return v.value1(v.value0);\n              })(Data_Profunctor_Strong.first(dictStrong)(pab));\n          };\n      };\n  };\n  var lens = function (get) {\n      return function (set) {\n          return function (dictStrong) {\n              return lens$prime(function (s) {\n                  return new Data_Tuple.Tuple(get(s), function (b) {\n                      return set(s)(b);\n                  });\n              })(dictStrong);\n          };\n      };\n  };\n  exports[\"lens\"] = lens;\n})(PS);\n(function($PS) {\n  // Generated by purs version 0.14.7\n  \"use strict\";\n  $PS[\"Data.Lens.Setter\"] = $PS[\"Data.Lens.Setter\"] || {};\n  var exports = $PS[\"Data.Lens.Setter\"];\n  var Control_Monad_State_Class = $PS[\"Control.Monad.State.Class\"];\n  var Data_Function = $PS[\"Data.Function\"];\n  var Data_Functor = $PS[\"Data.Functor\"];            \n  var over = function (l) {\n      return l;\n  };\n  var set = function (l) {\n      return function (b) {\n          return over(l)(Data_Function[\"const\"](b));\n      };\n  };\n  var modifying = function (dictMonadState) {\n      return function (p) {\n          return function (f) {\n              return Data_Functor[\"void\"]((((dictMonadState.Monad0()).Bind1()).Apply0()).Functor0())(Control_Monad_State_Class.modify(dictMonadState)(over(p)(f)));\n          };\n      };\n  };\n  var assign = function (dictMonadState) {\n      return function (p) {\n          return function (b) {\n              return Data_Functor[\"void\"]((((dictMonadState.Monad0()).Bind1()).Apply0()).Functor0())(Control_Monad_State_Class.modify(dictMonadState)(set(p)(b)));\n          };\n      };\n  };\n  exports[\"assign\"] = assign;\n  exports[\"modifying\"] = modifying;\n})(PS);\n(function($PS) {\n  // Generated by purs version 0.14.7\n  \"use strict\";\n  $PS[\"Effect.Aff.Class\"] = $PS[\"Effect.Aff.Class\"] || {};\n  var exports = $PS[\"Effect.Aff.Class\"];\n  var Control_Category = $PS[\"Control.Category\"];\n  var Effect_Aff = $PS[\"Effect.Aff\"];                \n  var monadAffAff = {\n      liftAff: Control_Category.identity(Control_Category.categoryFn),\n      MonadEffect0: function () {\n          return Effect_Aff.monadEffectAff;\n      }\n  };\n  var liftAff = function (dict) {\n      return dict.liftAff;\n  };\n  exports[\"liftAff\"] = liftAff;\n  exports[\"monadAffAff\"] = monadAffAff;\n})(PS);\n(function($PS) {\n  // Generated by purs version 0.14.7\n  \"use strict\";\n  $PS[\"Data.Exists\"] = $PS[\"Data.Exists\"] || {};\n  var exports = $PS[\"Data.Exists\"];\n  var Unsafe_Coerce = $PS[\"Unsafe.Coerce\"];                \n  var runExists = Unsafe_Coerce.unsafeCoerce;\n  var mkExists = Unsafe_Coerce.unsafeCoerce;\n  exports[\"mkExists\"] = mkExists;\n  exports[\"runExists\"] = runExists;\n})(PS);\n(function($PS) {\n  // Generated by purs version 0.14.7\n  \"use strict\";\n  $PS[\"Data.Coyoneda\"] = $PS[\"Data.Coyoneda\"] || {};\n  var exports = $PS[\"Data.Coyoneda\"];\n  var Control_Category = $PS[\"Control.Category\"];\n  var Data_Exists = $PS[\"Data.Exists\"];                          \n  var CoyonedaF = (function () {\n      function CoyonedaF(value0, value1) {\n          this.value0 = value0;\n          this.value1 = value1;\n      };\n      CoyonedaF.create = function (value0) {\n          return function (value1) {\n              return new CoyonedaF(value0, value1);\n          };\n      };\n      return CoyonedaF;\n  })();\n  var unCoyoneda = function (f) {\n      return function (v) {\n          return Data_Exists.runExists(function (v1) {\n              return f(v1.value0)(v1.value1);\n          })(v);\n      };\n  };\n  var coyoneda = function (k) {\n      return function (fi) {\n          return Data_Exists.mkExists(new CoyonedaF(k, fi));\n      };\n  };\n  var functorCoyoneda = {\n      map: function (f) {\n          return function (v) {\n              return Data_Exists.runExists(function (v1) {\n                  return coyoneda(function ($84) {\n                      return f(v1.value0($84));\n                  })(v1.value1);\n              })(v);\n          };\n      }\n  };\n  var liftCoyoneda = coyoneda(Control_Category.identity(Control_Category.categoryFn));\n  exports[\"unCoyoneda\"] = unCoyoneda;\n  exports[\"liftCoyoneda\"] = liftCoyoneda;\n  exports[\"functorCoyoneda\"] = functorCoyoneda;\n})(PS);\n(function($PS) {\n  // Generated by purs version 0.14.7\n  \"use strict\";\n  $PS[\"Data.Map.Internal\"] = $PS[\"Data.Map.Internal\"] || {};\n  var exports = $PS[\"Data.Map.Internal\"];\n  var Control_Applicative = $PS[\"Control.Applicative\"];\n  var Data_Foldable = $PS[\"Data.Foldable\"];\n  var Data_List_Types = $PS[\"Data.List.Types\"];\n  var Data_Maybe = $PS[\"Data.Maybe\"];\n  var Data_Ord = $PS[\"Data.Ord\"];\n  var Data_Ordering = $PS[\"Data.Ordering\"];\n  var Data_Semigroup = $PS[\"Data.Semigroup\"];\n  var Data_Tuple = $PS[\"Data.Tuple\"];                          \n  var Leaf = (function () {\n      function Leaf() {\n\n      };\n      Leaf.value = new Leaf();\n      return Leaf;\n  })();\n  var Two = (function () {\n      function Two(value0, value1, value2, value3) {\n          this.value0 = value0;\n          this.value1 = value1;\n          this.value2 = value2;\n          this.value3 = value3;\n      };\n      Two.create = function (value0) {\n          return function (value1) {\n              return function (value2) {\n                  return function (value3) {\n                      return new Two(value0, value1, value2, value3);\n                  };\n              };\n          };\n      };\n      return Two;\n  })();\n  var Three = (function () {\n      function Three(value0, value1, value2, value3, value4, value5, value6) {\n          this.value0 = value0;\n          this.value1 = value1;\n          this.value2 = value2;\n          this.value3 = value3;\n          this.value4 = value4;\n          this.value5 = value5;\n          this.value6 = value6;\n      };\n      Three.create = function (value0) {\n          return function (value1) {\n              return function (value2) {\n                  return function (value3) {\n                      return function (value4) {\n                          return function (value5) {\n                              return function (value6) {\n                                  return new Three(value0, value1, value2, value3, value4, value5, value6);\n                              };\n                          };\n                      };\n                  };\n              };\n          };\n      };\n      return Three;\n  })();\n  var TwoLeft = (function () {\n      function TwoLeft(value0, value1, value2) {\n          this.value0 = value0;\n          this.value1 = value1;\n          this.value2 = value2;\n      };\n      TwoLeft.create = function (value0) {\n          return function (value1) {\n              return function (value2) {\n                  return new TwoLeft(value0, value1, value2);\n              };\n          };\n      };\n      return TwoLeft;\n  })();\n  var TwoRight = (function () {\n      function TwoRight(value0, value1, value2) {\n          this.value0 = value0;\n          this.value1 = value1;\n          this.value2 = value2;\n      };\n      TwoRight.create = function (value0) {\n          return function (value1) {\n              return function (value2) {\n                  return new TwoRight(value0, value1, value2);\n              };\n          };\n      };\n      return TwoRight;\n  })();\n  var ThreeLeft = (function () {\n      function ThreeLeft(value0, value1, value2, value3, value4, value5) {\n          this.value0 = value0;\n          this.value1 = value1;\n          this.value2 = value2;\n          this.value3 = value3;\n          this.value4 = value4;\n          this.value5 = value5;\n      };\n      ThreeLeft.create = function (value0) {\n          return function (value1) {\n              return function (value2) {\n                  return function (value3) {\n                      return function (value4) {\n                          return function (value5) {\n                              return new ThreeLeft(value0, value1, value2, value3, value4, value5);\n                          };\n                      };\n                  };\n              };\n          };\n      };\n      return ThreeLeft;\n  })();\n  var ThreeMiddle = (function () {\n      function ThreeMiddle(value0, value1, value2, value3, value4, value5) {\n          this.value0 = value0;\n          this.value1 = value1;\n          this.value2 = value2;\n          this.value3 = value3;\n          this.value4 = value4;\n          this.value5 = value5;\n      };\n      ThreeMiddle.create = function (value0) {\n          return function (value1) {\n              return function (value2) {\n                  return function (value3) {\n                      return function (value4) {\n                          return function (value5) {\n                              return new ThreeMiddle(value0, value1, value2, value3, value4, value5);\n                          };\n                      };\n                  };\n              };\n          };\n      };\n      return ThreeMiddle;\n  })();\n  var ThreeRight = (function () {\n      function ThreeRight(value0, value1, value2, value3, value4, value5) {\n          this.value0 = value0;\n          this.value1 = value1;\n          this.value2 = value2;\n          this.value3 = value3;\n          this.value4 = value4;\n          this.value5 = value5;\n      };\n      ThreeRight.create = function (value0) {\n          return function (value1) {\n              return function (value2) {\n                  return function (value3) {\n                      return function (value4) {\n                          return function (value5) {\n                              return new ThreeRight(value0, value1, value2, value3, value4, value5);\n                          };\n                      };\n                  };\n              };\n          };\n      };\n      return ThreeRight;\n  })();\n  var KickUp = (function () {\n      function KickUp(value0, value1, value2, value3) {\n          this.value0 = value0;\n          this.value1 = value1;\n          this.value2 = value2;\n          this.value3 = value3;\n      };\n      KickUp.create = function (value0) {\n          return function (value1) {\n              return function (value2) {\n                  return function (value3) {\n                      return new KickUp(value0, value1, value2, value3);\n                  };\n              };\n          };\n      };\n      return KickUp;\n  })();\n  var values = function (v) {\n      if (v instanceof Leaf) {\n          return Data_List_Types.Nil.value;\n      };\n      if (v instanceof Two) {\n          return Data_Semigroup.append(Data_List_Types.semigroupList)(values(v.value0))(Data_Semigroup.append(Data_List_Types.semigroupList)(Control_Applicative.pure(Data_List_Types.applicativeList)(v.value2))(values(v.value3)));\n      };\n      if (v instanceof Three) {\n          return Data_Semigroup.append(Data_List_Types.semigroupList)(values(v.value0))(Data_Semigroup.append(Data_List_Types.semigroupList)(Control_Applicative.pure(Data_List_Types.applicativeList)(v.value2))(Data_Semigroup.append(Data_List_Types.semigroupList)(values(v.value3))(Data_Semigroup.append(Data_List_Types.semigroupList)(Control_Applicative.pure(Data_List_Types.applicativeList)(v.value5))(values(v.value6)))));\n      };\n      throw new Error(\"Failed pattern match at Data.Map.Internal (line 626, column 1 - line 626, column 40): \" + [ v.constructor.name ]);\n  };\n  var lookup = function (dictOrd) {\n      return function (k) {\n          var comp = Data_Ord.compare(dictOrd);\n          var go = function ($copy_v) {\n              var $tco_done = false;\n              var $tco_result;\n              function $tco_loop(v) {\n                  if (v instanceof Leaf) {\n                      $tco_done = true;\n                      return Data_Maybe.Nothing.value;\n                  };\n                  if (v instanceof Two) {\n                      var v2 = comp(k)(v.value1);\n                      if (v2 instanceof Data_Ordering.EQ) {\n                          $tco_done = true;\n                          return new Data_Maybe.Just(v.value2);\n                      };\n                      if (v2 instanceof Data_Ordering.LT) {\n                          $copy_v = v.value0;\n                          return;\n                      };\n                      $copy_v = v.value3;\n                      return;\n                  };\n                  if (v instanceof Three) {\n                      var v3 = comp(k)(v.value1);\n                      if (v3 instanceof Data_Ordering.EQ) {\n                          $tco_done = true;\n                          return new Data_Maybe.Just(v.value2);\n                      };\n                      var v4 = comp(k)(v.value4);\n                      if (v4 instanceof Data_Ordering.EQ) {\n                          $tco_done = true;\n                          return new Data_Maybe.Just(v.value5);\n                      };\n                      if (v3 instanceof Data_Ordering.LT) {\n                          $copy_v = v.value0;\n                          return;\n                      };\n                      if (v4 instanceof Data_Ordering.GT) {\n                          $copy_v = v.value6;\n                          return;\n                      };\n                      $copy_v = v.value3;\n                      return;\n                  };\n                  throw new Error(\"Failed pattern match at Data.Map.Internal (line 211, column 5 - line 211, column 22): \" + [ v.constructor.name ]);\n              };\n              while (!$tco_done) {\n                  $tco_result = $tco_loop($copy_v);\n              };\n              return $tco_result;\n          };\n          return go;\n      };\n  };\n  var fromZipper = function ($copy_dictOrd) {\n      return function ($copy_v) {\n          return function ($copy_tree) {\n              var $tco_var_dictOrd = $copy_dictOrd;\n              var $tco_var_v = $copy_v;\n              var $tco_done = false;\n              var $tco_result;\n              function $tco_loop(dictOrd, v, tree) {\n                  if (v instanceof Data_List_Types.Nil) {\n                      $tco_done = true;\n                      return tree;\n                  };\n                  if (v instanceof Data_List_Types.Cons) {\n                      if (v.value0 instanceof TwoLeft) {\n                          $tco_var_dictOrd = dictOrd;\n                          $tco_var_v = v.value1;\n                          $copy_tree = new Two(tree, v.value0.value0, v.value0.value1, v.value0.value2);\n                          return;\n                      };\n                      if (v.value0 instanceof TwoRight) {\n                          $tco_var_dictOrd = dictOrd;\n                          $tco_var_v = v.value1;\n                          $copy_tree = new Two(v.value0.value0, v.value0.value1, v.value0.value2, tree);\n                          return;\n                      };\n                      if (v.value0 instanceof ThreeLeft) {\n                          $tco_var_dictOrd = dictOrd;\n                          $tco_var_v = v.value1;\n                          $copy_tree = new Three(tree, v.value0.value0, v.value0.value1, v.value0.value2, v.value0.value3, v.value0.value4, v.value0.value5);\n                          return;\n                      };\n                      if (v.value0 instanceof ThreeMiddle) {\n                          $tco_var_dictOrd = dictOrd;\n                          $tco_var_v = v.value1;\n                          $copy_tree = new Three(v.value0.value0, v.value0.value1, v.value0.value2, tree, v.value0.value3, v.value0.value4, v.value0.value5);\n                          return;\n                      };\n                      if (v.value0 instanceof ThreeRight) {\n                          $tco_var_dictOrd = dictOrd;\n                          $tco_var_v = v.value1;\n                          $copy_tree = new Three(v.value0.value0, v.value0.value1, v.value0.value2, v.value0.value3, v.value0.value4, v.value0.value5, tree);\n                          return;\n                      };\n                      throw new Error(\"Failed pattern match at Data.Map.Internal (line 432, column 3 - line 437, column 88): \" + [ v.value0.constructor.name ]);\n                  };\n                  throw new Error(\"Failed pattern match at Data.Map.Internal (line 429, column 1 - line 429, column 80): \" + [ v.constructor.name, tree.constructor.name ]);\n              };\n              while (!$tco_done) {\n                  $tco_result = $tco_loop($tco_var_dictOrd, $tco_var_v, $copy_tree);\n              };\n              return $tco_result;\n          };\n      };\n  };\n  var insert = function (dictOrd) {\n      return function (k) {\n          return function (v) {\n              var up = function ($copy_v1) {\n                  return function ($copy_v2) {\n                      var $tco_var_v1 = $copy_v1;\n                      var $tco_done = false;\n                      var $tco_result;\n                      function $tco_loop(v1, v2) {\n                          if (v1 instanceof Data_List_Types.Nil) {\n                              $tco_done = true;\n                              return new Two(v2.value0, v2.value1, v2.value2, v2.value3);\n                          };\n                          if (v1 instanceof Data_List_Types.Cons) {\n                              if (v1.value0 instanceof TwoLeft) {\n                                  $tco_done = true;\n                                  return fromZipper(dictOrd)(v1.value1)(new Three(v2.value0, v2.value1, v2.value2, v2.value3, v1.value0.value0, v1.value0.value1, v1.value0.value2));\n                              };\n                              if (v1.value0 instanceof TwoRight) {\n                                  $tco_done = true;\n                                  return fromZipper(dictOrd)(v1.value1)(new Three(v1.value0.value0, v1.value0.value1, v1.value0.value2, v2.value0, v2.value1, v2.value2, v2.value3));\n                              };\n                              if (v1.value0 instanceof ThreeLeft) {\n                                  $tco_var_v1 = v1.value1;\n                                  $copy_v2 = new KickUp(new Two(v2.value0, v2.value1, v2.value2, v2.value3), v1.value0.value0, v1.value0.value1, new Two(v1.value0.value2, v1.value0.value3, v1.value0.value4, v1.value0.value5));\n                                  return;\n                              };\n                              if (v1.value0 instanceof ThreeMiddle) {\n                                  $tco_var_v1 = v1.value1;\n                                  $copy_v2 = new KickUp(new Two(v1.value0.value0, v1.value0.value1, v1.value0.value2, v2.value0), v2.value1, v2.value2, new Two(v2.value3, v1.value0.value3, v1.value0.value4, v1.value0.value5));\n                                  return;\n                              };\n                              if (v1.value0 instanceof ThreeRight) {\n                                  $tco_var_v1 = v1.value1;\n                                  $copy_v2 = new KickUp(new Two(v1.value0.value0, v1.value0.value1, v1.value0.value2, v1.value0.value3), v1.value0.value4, v1.value0.value5, new Two(v2.value0, v2.value1, v2.value2, v2.value3));\n                                  return;\n                              };\n                              throw new Error(\"Failed pattern match at Data.Map.Internal (line 468, column 5 - line 473, column 108): \" + [ v1.value0.constructor.name, v2.constructor.name ]);\n                          };\n                          throw new Error(\"Failed pattern match at Data.Map.Internal (line 465, column 3 - line 465, column 56): \" + [ v1.constructor.name, v2.constructor.name ]);\n                      };\n                      while (!$tco_done) {\n                          $tco_result = $tco_loop($tco_var_v1, $copy_v2);\n                      };\n                      return $tco_result;\n                  };\n              };\n              var comp = Data_Ord.compare(dictOrd);\n              var down = function ($copy_ctx) {\n                  return function ($copy_v1) {\n                      var $tco_var_ctx = $copy_ctx;\n                      var $tco_done1 = false;\n                      var $tco_result;\n                      function $tco_loop(ctx, v1) {\n                          if (v1 instanceof Leaf) {\n                              $tco_done1 = true;\n                              return up(ctx)(new KickUp(Leaf.value, k, v, Leaf.value));\n                          };\n                          if (v1 instanceof Two) {\n                              var v2 = comp(k)(v1.value1);\n                              if (v2 instanceof Data_Ordering.EQ) {\n                                  $tco_done1 = true;\n                                  return fromZipper(dictOrd)(ctx)(new Two(v1.value0, k, v, v1.value3));\n                              };\n                              if (v2 instanceof Data_Ordering.LT) {\n                                  $tco_var_ctx = new Data_List_Types.Cons(new TwoLeft(v1.value1, v1.value2, v1.value3), ctx);\n                                  $copy_v1 = v1.value0;\n                                  return;\n                              };\n                              $tco_var_ctx = new Data_List_Types.Cons(new TwoRight(v1.value0, v1.value1, v1.value2), ctx);\n                              $copy_v1 = v1.value3;\n                              return;\n                          };\n                          if (v1 instanceof Three) {\n                              var v3 = comp(k)(v1.value1);\n                              if (v3 instanceof Data_Ordering.EQ) {\n                                  $tco_done1 = true;\n                                  return fromZipper(dictOrd)(ctx)(new Three(v1.value0, k, v, v1.value3, v1.value4, v1.value5, v1.value6));\n                              };\n                              var v4 = comp(k)(v1.value4);\n                              if (v4 instanceof Data_Ordering.EQ) {\n                                  $tco_done1 = true;\n                                  return fromZipper(dictOrd)(ctx)(new Three(v1.value0, v1.value1, v1.value2, v1.value3, k, v, v1.value6));\n                              };\n                              if (v3 instanceof Data_Ordering.LT) {\n                                  $tco_var_ctx = new Data_List_Types.Cons(new ThreeLeft(v1.value1, v1.value2, v1.value3, v1.value4, v1.value5, v1.value6), ctx);\n                                  $copy_v1 = v1.value0;\n                                  return;\n                              };\n                              if (v3 instanceof Data_Ordering.GT && v4 instanceof Data_Ordering.LT) {\n                                  $tco_var_ctx = new Data_List_Types.Cons(new ThreeMiddle(v1.value0, v1.value1, v1.value2, v1.value4, v1.value5, v1.value6), ctx);\n                                  $copy_v1 = v1.value3;\n                                  return;\n                              };\n                              $tco_var_ctx = new Data_List_Types.Cons(new ThreeRight(v1.value0, v1.value1, v1.value2, v1.value3, v1.value4, v1.value5), ctx);\n                              $copy_v1 = v1.value6;\n                              return;\n                          };\n                          throw new Error(\"Failed pattern match at Data.Map.Internal (line 448, column 3 - line 448, column 55): \" + [ ctx.constructor.name, v1.constructor.name ]);\n                      };\n                      while (!$tco_done1) {\n                          $tco_result = $tco_loop($tco_var_ctx, $copy_v1);\n                      };\n                      return $tco_result;\n                  };\n              };\n              return down(Data_List_Types.Nil.value);\n          };\n      };\n  };\n  var pop = function (dictOrd) {\n      return function (k) {\n          var up = function ($copy_ctxs) {\n              return function ($copy_tree) {\n                  var $tco_var_ctxs = $copy_ctxs;\n                  var $tco_done = false;\n                  var $tco_result;\n                  function $tco_loop(ctxs, tree) {\n                      if (ctxs instanceof Data_List_Types.Nil) {\n                          $tco_done = true;\n                          return tree;\n                      };\n                      if (ctxs instanceof Data_List_Types.Cons) {\n                          if (ctxs.value0 instanceof TwoLeft && (ctxs.value0.value2 instanceof Leaf && tree instanceof Leaf)) {\n                              $tco_done = true;\n                              return fromZipper(dictOrd)(ctxs.value1)(new Two(Leaf.value, ctxs.value0.value0, ctxs.value0.value1, Leaf.value));\n                          };\n                          if (ctxs.value0 instanceof TwoRight && (ctxs.value0.value0 instanceof Leaf && tree instanceof Leaf)) {\n                              $tco_done = true;\n                              return fromZipper(dictOrd)(ctxs.value1)(new Two(Leaf.value, ctxs.value0.value1, ctxs.value0.value2, Leaf.value));\n                          };\n                          if (ctxs.value0 instanceof TwoLeft && ctxs.value0.value2 instanceof Two) {\n                              $tco_var_ctxs = ctxs.value1;\n                              $copy_tree = new Three(tree, ctxs.value0.value0, ctxs.value0.value1, ctxs.value0.value2.value0, ctxs.value0.value2.value1, ctxs.value0.value2.value2, ctxs.value0.value2.value3);\n                              return;\n                          };\n                          if (ctxs.value0 instanceof TwoRight && ctxs.value0.value0 instanceof Two) {\n                              $tco_var_ctxs = ctxs.value1;\n                              $copy_tree = new Three(ctxs.value0.value0.value0, ctxs.value0.value0.value1, ctxs.value0.value0.value2, ctxs.value0.value0.value3, ctxs.value0.value1, ctxs.value0.value2, tree);\n                              return;\n                          };\n                          if (ctxs.value0 instanceof TwoLeft && ctxs.value0.value2 instanceof Three) {\n                              $tco_done = true;\n                              return fromZipper(dictOrd)(ctxs.value1)(new Two(new Two(tree, ctxs.value0.value0, ctxs.value0.value1, ctxs.value0.value2.value0), ctxs.value0.value2.value1, ctxs.value0.value2.value2, new Two(ctxs.value0.value2.value3, ctxs.value0.value2.value4, ctxs.value0.value2.value5, ctxs.value0.value2.value6)));\n                          };\n                          if (ctxs.value0 instanceof TwoRight && ctxs.value0.value0 instanceof Three) {\n                              $tco_done = true;\n                              return fromZipper(dictOrd)(ctxs.value1)(new Two(new Two(ctxs.value0.value0.value0, ctxs.value0.value0.value1, ctxs.value0.value0.value2, ctxs.value0.value0.value3), ctxs.value0.value0.value4, ctxs.value0.value0.value5, new Two(ctxs.value0.value0.value6, ctxs.value0.value1, ctxs.value0.value2, tree)));\n                          };\n                          if (ctxs.value0 instanceof ThreeLeft && (ctxs.value0.value2 instanceof Leaf && (ctxs.value0.value5 instanceof Leaf && tree instanceof Leaf))) {\n                              $tco_done = true;\n                              return fromZipper(dictOrd)(ctxs.value1)(new Three(Leaf.value, ctxs.value0.value0, ctxs.value0.value1, Leaf.value, ctxs.value0.value3, ctxs.value0.value4, Leaf.value));\n                          };\n                          if (ctxs.value0 instanceof ThreeMiddle && (ctxs.value0.value0 instanceof Leaf && (ctxs.value0.value5 instanceof Leaf && tree instanceof Leaf))) {\n                              $tco_done = true;\n                              return fromZipper(dictOrd)(ctxs.value1)(new Three(Leaf.value, ctxs.value0.value1, ctxs.value0.value2, Leaf.value, ctxs.value0.value3, ctxs.value0.value4, Leaf.value));\n                          };\n                          if (ctxs.value0 instanceof ThreeRight && (ctxs.value0.value0 instanceof Leaf && (ctxs.value0.value3 instanceof Leaf && tree instanceof Leaf))) {\n                              $tco_done = true;\n                              return fromZipper(dictOrd)(ctxs.value1)(new Three(Leaf.value, ctxs.value0.value1, ctxs.value0.value2, Leaf.value, ctxs.value0.value4, ctxs.value0.value5, Leaf.value));\n                          };\n                          if (ctxs.value0 instanceof ThreeLeft && ctxs.value0.value2 instanceof Two) {\n                              $tco_done = true;\n                              return fromZipper(dictOrd)(ctxs.value1)(new Two(new Three(tree, ctxs.value0.value0, ctxs.value0.value1, ctxs.value0.value2.value0, ctxs.value0.value2.value1, ctxs.value0.value2.value2, ctxs.value0.value2.value3), ctxs.value0.value3, ctxs.value0.value4, ctxs.value0.value5));\n                          };\n                          if (ctxs.value0 instanceof ThreeMiddle && ctxs.value0.value0 instanceof Two) {\n                              $tco_done = true;\n                              return fromZipper(dictOrd)(ctxs.value1)(new Two(new Three(ctxs.value0.value0.value0, ctxs.value0.value0.value1, ctxs.value0.value0.value2, ctxs.value0.value0.value3, ctxs.value0.value1, ctxs.value0.value2, tree), ctxs.value0.value3, ctxs.value0.value4, ctxs.value0.value5));\n                          };\n                          if (ctxs.value0 instanceof ThreeMiddle && ctxs.value0.value5 instanceof Two) {\n                              $tco_done = true;\n                              return fromZipper(dictOrd)(ctxs.value1)(new Two(ctxs.value0.value0, ctxs.value0.value1, ctxs.value0.value2, new Three(tree, ctxs.value0.value3, ctxs.value0.value4, ctxs.value0.value5.value0, ctxs.value0.value5.value1, ctxs.value0.value5.value2, ctxs.value0.value5.value3)));\n                          };\n                          if (ctxs.value0 instanceof ThreeRight && ctxs.value0.value3 instanceof Two) {\n                              $tco_done = true;\n                              return fromZipper(dictOrd)(ctxs.value1)(new Two(ctxs.value0.value0, ctxs.value0.value1, ctxs.value0.value2, new Three(ctxs.value0.value3.value0, ctxs.value0.value3.value1, ctxs.value0.value3.value2, ctxs.value0.value3.value3, ctxs.value0.value4, ctxs.value0.value5, tree)));\n                          };\n                          if (ctxs.value0 instanceof ThreeLeft && ctxs.value0.value2 instanceof Three) {\n                              $tco_done = true;\n                              return fromZipper(dictOrd)(ctxs.value1)(new Three(new Two(tree, ctxs.value0.value0, ctxs.value0.value1, ctxs.value0.value2.value0), ctxs.value0.value2.value1, ctxs.value0.value2.value2, new Two(ctxs.value0.value2.value3, ctxs.value0.value2.value4, ctxs.value0.value2.value5, ctxs.value0.value2.value6), ctxs.value0.value3, ctxs.value0.value4, ctxs.value0.value5));\n                          };\n                          if (ctxs.value0 instanceof ThreeMiddle && ctxs.value0.value0 instanceof Three) {\n                              $tco_done = true;\n                              return fromZipper(dictOrd)(ctxs.value1)(new Three(new Two(ctxs.value0.value0.value0, ctxs.value0.value0.value1, ctxs.value0.value0.value2, ctxs.value0.value0.value3), ctxs.value0.value0.value4, ctxs.value0.value0.value5, new Two(ctxs.value0.value0.value6, ctxs.value0.value1, ctxs.value0.value2, tree), ctxs.value0.value3, ctxs.value0.value4, ctxs.value0.value5));\n                          };\n                          if (ctxs.value0 instanceof ThreeMiddle && ctxs.value0.value5 instanceof Three) {\n                              $tco_done = true;\n                              return fromZipper(dictOrd)(ctxs.value1)(new Three(ctxs.value0.value0, ctxs.value0.value1, ctxs.value0.value2, new Two(tree, ctxs.value0.value3, ctxs.value0.value4, ctxs.value0.value5.value0), ctxs.value0.value5.value1, ctxs.value0.value5.value2, new Two(ctxs.value0.value5.value3, ctxs.value0.value5.value4, ctxs.value0.value5.value5, ctxs.value0.value5.value6)));\n                          };\n                          if (ctxs.value0 instanceof ThreeRight && ctxs.value0.value3 instanceof Three) {\n                              $tco_done = true;\n                              return fromZipper(dictOrd)(ctxs.value1)(new Three(ctxs.value0.value0, ctxs.value0.value1, ctxs.value0.value2, new Two(ctxs.value0.value3.value0, ctxs.value0.value3.value1, ctxs.value0.value3.value2, ctxs.value0.value3.value3), ctxs.value0.value3.value4, ctxs.value0.value3.value5, new Two(ctxs.value0.value3.value6, ctxs.value0.value4, ctxs.value0.value5, tree)));\n                          };\n                          throw new Error(\"Failed pattern match at Data.Map.Internal (line 525, column 9 - line 542, column 136): \" + [ ctxs.value0.constructor.name, tree.constructor.name ]);\n                      };\n                      throw new Error(\"Failed pattern match at Data.Map.Internal (line 522, column 5 - line 542, column 136): \" + [ ctxs.constructor.name ]);\n                  };\n                  while (!$tco_done) {\n                      $tco_result = $tco_loop($tco_var_ctxs, $copy_tree);\n                  };\n                  return $tco_result;\n              };\n          };\n          var removeMaxNode = function ($copy_ctx) {\n              return function ($copy_m) {\n                  var $tco_var_ctx = $copy_ctx;\n                  var $tco_done1 = false;\n                  var $tco_result;\n                  function $tco_loop(ctx, m) {\n                      if (m instanceof Two && (m.value0 instanceof Leaf && m.value3 instanceof Leaf)) {\n                          $tco_done1 = true;\n                          return up(ctx)(Leaf.value);\n                      };\n                      if (m instanceof Two) {\n                          $tco_var_ctx = new Data_List_Types.Cons(new TwoRight(m.value0, m.value1, m.value2), ctx);\n                          $copy_m = m.value3;\n                          return;\n                      };\n                      if (m instanceof Three && (m.value0 instanceof Leaf && (m.value3 instanceof Leaf && m.value6 instanceof Leaf))) {\n                          $tco_done1 = true;\n                          return up(new Data_List_Types.Cons(new TwoRight(Leaf.value, m.value1, m.value2), ctx))(Leaf.value);\n                      };\n                      if (m instanceof Three) {\n                          $tco_var_ctx = new Data_List_Types.Cons(new ThreeRight(m.value0, m.value1, m.value2, m.value3, m.value4, m.value5), ctx);\n                          $copy_m = m.value6;\n                          return;\n                      };\n                      throw new Error(\"Failed pattern match at Data.Map.Internal (line 554, column 5 - line 558, column 107): \" + [ m.constructor.name ]);\n                  };\n                  while (!$tco_done1) {\n                      $tco_result = $tco_loop($tco_var_ctx, $copy_m);\n                  };\n                  return $tco_result;\n              };\n          };\n          var maxNode = function ($copy_m) {\n              var $tco_done2 = false;\n              var $tco_result;\n              function $tco_loop(m) {\n                  if (m instanceof Two && m.value3 instanceof Leaf) {\n                      $tco_done2 = true;\n                      return {\n                          key: m.value1,\n                          value: m.value2\n                      };\n                  };\n                  if (m instanceof Two) {\n                      $copy_m = m.value3;\n                      return;\n                  };\n                  if (m instanceof Three && m.value6 instanceof Leaf) {\n                      $tco_done2 = true;\n                      return {\n                          key: m.value4,\n                          value: m.value5\n                      };\n                  };\n                  if (m instanceof Three) {\n                      $copy_m = m.value6;\n                      return;\n                  };\n                  throw new Error(\"Failed pattern match at Data.Map.Internal (line 545, column 33 - line 549, column 45): \" + [ m.constructor.name ]);\n              };\n              while (!$tco_done2) {\n                  $tco_result = $tco_loop($copy_m);\n              };\n              return $tco_result;\n          };\n          var comp = Data_Ord.compare(dictOrd);\n          var down = function ($copy_ctx) {\n              return function ($copy_m) {\n                  var $tco_var_ctx = $copy_ctx;\n                  var $tco_done3 = false;\n                  var $tco_result;\n                  function $tco_loop(ctx, m) {\n                      if (m instanceof Leaf) {\n                          $tco_done3 = true;\n                          return Data_Maybe.Nothing.value;\n                      };\n                      if (m instanceof Two) {\n                          var v = comp(k)(m.value1);\n                          if (m.value3 instanceof Leaf && v instanceof Data_Ordering.EQ) {\n                              $tco_done3 = true;\n                              return new Data_Maybe.Just(new Data_Tuple.Tuple(m.value2, up(ctx)(Leaf.value)));\n                          };\n                          if (v instanceof Data_Ordering.EQ) {\n                              var max = maxNode(m.value0);\n                              $tco_done3 = true;\n                              return new Data_Maybe.Just(new Data_Tuple.Tuple(m.value2, removeMaxNode(new Data_List_Types.Cons(new TwoLeft(max.key, max.value, m.value3), ctx))(m.value0)));\n                          };\n                          if (v instanceof Data_Ordering.LT) {\n                              $tco_var_ctx = new Data_List_Types.Cons(new TwoLeft(m.value1, m.value2, m.value3), ctx);\n                              $copy_m = m.value0;\n                              return;\n                          };\n                          $tco_var_ctx = new Data_List_Types.Cons(new TwoRight(m.value0, m.value1, m.value2), ctx);\n                          $copy_m = m.value3;\n                          return;\n                      };\n                      if (m instanceof Three) {\n                          var leaves = (function () {\n                              if (m.value0 instanceof Leaf && (m.value3 instanceof Leaf && m.value6 instanceof Leaf)) {\n                                  return true;\n                              };\n                              return false;\n                          })();\n                          var v = comp(k)(m.value4);\n                          var v3 = comp(k)(m.value1);\n                          if (leaves && v3 instanceof Data_Ordering.EQ) {\n                              $tco_done3 = true;\n                              return new Data_Maybe.Just(new Data_Tuple.Tuple(m.value2, fromZipper(dictOrd)(ctx)(new Two(Leaf.value, m.value4, m.value5, Leaf.value))));\n                          };\n                          if (leaves && v instanceof Data_Ordering.EQ) {\n                              $tco_done3 = true;\n                              return new Data_Maybe.Just(new Data_Tuple.Tuple(m.value5, fromZipper(dictOrd)(ctx)(new Two(Leaf.value, m.value1, m.value2, Leaf.value))));\n                          };\n                          if (v3 instanceof Data_Ordering.EQ) {\n                              var max = maxNode(m.value0);\n                              $tco_done3 = true;\n                              return new Data_Maybe.Just(new Data_Tuple.Tuple(m.value2, removeMaxNode(new Data_List_Types.Cons(new ThreeLeft(max.key, max.value, m.value3, m.value4, m.value5, m.value6), ctx))(m.value0)));\n                          };\n                          if (v instanceof Data_Ordering.EQ) {\n                              var max = maxNode(m.value3);\n                              $tco_done3 = true;\n                              return new Data_Maybe.Just(new Data_Tuple.Tuple(m.value5, removeMaxNode(new Data_List_Types.Cons(new ThreeMiddle(m.value0, m.value1, m.value2, max.key, max.value, m.value6), ctx))(m.value3)));\n                          };\n                          if (v3 instanceof Data_Ordering.LT) {\n                              $tco_var_ctx = new Data_List_Types.Cons(new ThreeLeft(m.value1, m.value2, m.value3, m.value4, m.value5, m.value6), ctx);\n                              $copy_m = m.value0;\n                              return;\n                          };\n                          if (v3 instanceof Data_Ordering.GT && v instanceof Data_Ordering.LT) {\n                              $tco_var_ctx = new Data_List_Types.Cons(new ThreeMiddle(m.value0, m.value1, m.value2, m.value4, m.value5, m.value6), ctx);\n                              $copy_m = m.value3;\n                              return;\n                          };\n                          $tco_var_ctx = new Data_List_Types.Cons(new ThreeRight(m.value0, m.value1, m.value2, m.value3, m.value4, m.value5), ctx);\n                          $copy_m = m.value6;\n                          return;\n                      };\n                      throw new Error(\"Failed pattern match at Data.Map.Internal (line 495, column 34 - line 518, column 80): \" + [ m.constructor.name ]);\n                  };\n                  while (!$tco_done3) {\n                      $tco_result = $tco_loop($tco_var_ctx, $copy_m);\n                  };\n                  return $tco_result;\n              };\n          };\n          return down(Data_List_Types.Nil.value);\n      };\n  };\n  var foldableMap = {\n      foldl: function (f) {\n          return function (z) {\n              return function (m) {\n                  return Data_Foldable.foldl(Data_List_Types.foldableList)(f)(z)(values(m));\n              };\n          };\n      },\n      foldr: function (f) {\n          return function (z) {\n              return function (m) {\n                  return Data_Foldable.foldr(Data_List_Types.foldableList)(f)(z)(values(m));\n              };\n          };\n      },\n      foldMap: function (dictMonoid) {\n          return function (f) {\n              return function (m) {\n                  return Data_Foldable.foldMap(Data_List_Types.foldableList)(dictMonoid)(f)(values(m));\n              };\n          };\n      }\n  };\n  var empty = Leaf.value;\n  var $$delete = function (dictOrd) {\n      return function (k) {\n          return function (m) {\n              return Data_Maybe.maybe(m)(Data_Tuple.snd)(pop(dictOrd)(k)(m));\n          };\n      };\n  };\n  var alter = function (dictOrd) {\n      return function (f) {\n          return function (k) {\n              return function (m) {\n                  var v = f(lookup(dictOrd)(k)(m));\n                  if (v instanceof Data_Maybe.Nothing) {\n                      return $$delete(dictOrd)(k)(m);\n                  };\n                  if (v instanceof Data_Maybe.Just) {\n                      return insert(dictOrd)(k)(v.value0)(m);\n                  };\n                  throw new Error(\"Failed pattern match at Data.Map.Internal (line 563, column 15 - line 565, column 25): \" + [ v.constructor.name ]);\n              };\n          };\n      };\n  };\n  exports[\"empty\"] = empty;\n  exports[\"insert\"] = insert;\n  exports[\"lookup\"] = lookup;\n  exports[\"delete\"] = $$delete;\n  exports[\"pop\"] = pop;\n  exports[\"alter\"] = alter;\n  exports[\"foldableMap\"] = foldableMap;\n})(PS);\n(function($PS) {\n  // Generated by purs version 0.14.7\n  \"use strict\";\n  $PS[\"Halogen.Data.OrdBox\"] = $PS[\"Halogen.Data.OrdBox\"] || {};\n  var exports = $PS[\"Halogen.Data.OrdBox\"];\n  var Data_Eq = $PS[\"Data.Eq\"];\n  var Data_Ord = $PS[\"Data.Ord\"];                \n  var OrdBox = (function () {\n      function OrdBox(value0, value1, value2) {\n          this.value0 = value0;\n          this.value1 = value1;\n          this.value2 = value2;\n      };\n      OrdBox.create = function (value0) {\n          return function (value1) {\n              return function (value2) {\n                  return new OrdBox(value0, value1, value2);\n              };\n          };\n      };\n      return OrdBox;\n  })();\n  var mkOrdBox = function (dictOrd) {\n      return OrdBox.create(Data_Eq.eq(dictOrd.Eq0()))(Data_Ord.compare(dictOrd));\n  };\n  var eqOrdBox = {\n      eq: function (v) {\n          return function (v1) {\n              return v.value0(v.value2)(v1.value2);\n          };\n      }\n  };\n  var ordOrdBox = {\n      compare: function (v) {\n          return function (v1) {\n              return v.value1(v.value2)(v1.value2);\n          };\n      },\n      Eq0: function () {\n          return eqOrdBox;\n      }\n  };\n  exports[\"mkOrdBox\"] = mkOrdBox;\n  exports[\"ordOrdBox\"] = ordOrdBox;\n})(PS);\n(function($PS) {\n  // Generated by purs version 0.14.7\n  \"use strict\";\n  $PS[\"Halogen.Data.Slot\"] = $PS[\"Halogen.Data.Slot\"] || {};\n  var exports = $PS[\"Halogen.Data.Slot\"];\n  var Data_Foldable = $PS[\"Data.Foldable\"];\n  var Data_Map_Internal = $PS[\"Data.Map.Internal\"];\n  var Data_Ord = $PS[\"Data.Ord\"];\n  var Data_Symbol = $PS[\"Data.Symbol\"];\n  var Data_Tuple = $PS[\"Data.Tuple\"];\n  var Halogen_Data_OrdBox = $PS[\"Halogen.Data.OrdBox\"];\n  var pop = function () {\n      return function (dictIsSymbol) {\n          return function (dictOrd) {\n              return function (sym) {\n                  return function (key) {\n                      return function (v) {\n                          return Data_Map_Internal.pop(Data_Tuple.ordTuple(Data_Ord.ordString)(Halogen_Data_OrdBox.ordOrdBox))(new Data_Tuple.Tuple(Data_Symbol.reflectSymbol(dictIsSymbol)(sym), Halogen_Data_OrdBox.mkOrdBox(dictOrd)(key)))(v);\n                      };\n                  };\n              };\n          };\n      };\n  };\n  var lookup = function () {\n      return function (dictIsSymbol) {\n          return function (dictOrd) {\n              return function (sym) {\n                  return function (key) {\n                      return function (v) {\n                          return Data_Map_Internal.lookup(Data_Tuple.ordTuple(Data_Ord.ordString)(Halogen_Data_OrdBox.ordOrdBox))(new Data_Tuple.Tuple(Data_Symbol.reflectSymbol(dictIsSymbol)(sym), Halogen_Data_OrdBox.mkOrdBox(dictOrd)(key)))(v);\n                      };\n                  };\n              };\n          };\n      };\n  };\n  var insert = function () {\n      return function (dictIsSymbol) {\n          return function (dictOrd) {\n              return function (sym) {\n                  return function (key) {\n                      return function (val) {\n                          return function (v) {\n                              return Data_Map_Internal.insert(Data_Tuple.ordTuple(Data_Ord.ordString)(Halogen_Data_OrdBox.ordOrdBox))(new Data_Tuple.Tuple(Data_Symbol.reflectSymbol(dictIsSymbol)(sym), Halogen_Data_OrdBox.mkOrdBox(dictOrd)(key)))(val)(v);\n                          };\n                      };\n                  };\n              };\n          };\n      };\n  };\n  var foreachSlot = function (dictApplicative) {\n      return function (v) {\n          return function (k) {\n              return Data_Foldable.traverse_(dictApplicative)(Data_Map_Internal.foldableMap)(function ($33) {\n                  return k($33);\n              })(v);\n          };\n      };\n  };\n  var empty = Data_Map_Internal.empty;\n  exports[\"empty\"] = empty;\n  exports[\"lookup\"] = lookup;\n  exports[\"insert\"] = insert;\n  exports[\"pop\"] = pop;\n  exports[\"foreachSlot\"] = foreachSlot;\n})(PS);\n(function($PS) {\n  // Generated by purs version 0.14.7\n  \"use strict\";\n  $PS[\"Data.List\"] = $PS[\"Data.List\"] || {};\n  var exports = $PS[\"Data.List\"];\n  var Data_List_Types = $PS[\"Data.List.Types\"];\n  var reverse = (function () {\n      var go = function ($copy_acc) {\n          return function ($copy_v) {\n              var $tco_var_acc = $copy_acc;\n              var $tco_done = false;\n              var $tco_result;\n              function $tco_loop(acc, v) {\n                  if (v instanceof Data_List_Types.Nil) {\n                      $tco_done = true;\n                      return acc;\n                  };\n                  if (v instanceof Data_List_Types.Cons) {\n                      $tco_var_acc = new Data_List_Types.Cons(v.value0, acc);\n                      $copy_v = v.value1;\n                      return;\n                  };\n                  throw new Error(\"Failed pattern match at Data.List (line 372, column 3 - line 372, column 19): \" + [ acc.constructor.name, v.constructor.name ]);\n              };\n              while (!$tco_done) {\n                  $tco_result = $tco_loop($tco_var_acc, $copy_v);\n              };\n              return $tco_result;\n          };\n      };\n      return go(Data_List_Types.Nil.value);\n  })();\n  var $$null = function (v) {\n      if (v instanceof Data_List_Types.Nil) {\n          return true;\n      };\n      return false;\n  };\n  exports[\"null\"] = $$null;\n  exports[\"reverse\"] = reverse;\n})(PS);\n(function($PS) {\n  // Generated by purs version 0.14.7\n  \"use strict\";\n  $PS[\"Data.CatQueue\"] = $PS[\"Data.CatQueue\"] || {};\n  var exports = $PS[\"Data.CatQueue\"];\n  var Data_List = $PS[\"Data.List\"];\n  var Data_List_Types = $PS[\"Data.List.Types\"];\n  var Data_Maybe = $PS[\"Data.Maybe\"];\n  var Data_Tuple = $PS[\"Data.Tuple\"];                \n  var CatQueue = (function () {\n      function CatQueue(value0, value1) {\n          this.value0 = value0;\n          this.value1 = value1;\n      };\n      CatQueue.create = function (value0) {\n          return function (value1) {\n              return new CatQueue(value0, value1);\n          };\n      };\n      return CatQueue;\n  })();\n  var uncons = function ($copy_v) {\n      var $tco_done = false;\n      var $tco_result;\n      function $tco_loop(v) {\n          if (v.value0 instanceof Data_List_Types.Nil && v.value1 instanceof Data_List_Types.Nil) {\n              $tco_done = true;\n              return Data_Maybe.Nothing.value;\n          };\n          if (v.value0 instanceof Data_List_Types.Nil) {\n              $copy_v = new CatQueue(Data_List.reverse(v.value1), Data_List_Types.Nil.value);\n              return;\n          };\n          if (v.value0 instanceof Data_List_Types.Cons) {\n              $tco_done = true;\n              return new Data_Maybe.Just(new Data_Tuple.Tuple(v.value0.value0, new CatQueue(v.value0.value1, v.value1)));\n          };\n          throw new Error(\"Failed pattern match at Data.CatQueue (line 83, column 1 - line 83, column 63): \" + [ v.constructor.name ]);\n      };\n      while (!$tco_done) {\n          $tco_result = $tco_loop($copy_v);\n      };\n      return $tco_result;\n  };\n  var snoc = function (v) {\n      return function (a) {\n          return new CatQueue(v.value0, new Data_List_Types.Cons(a, v.value1));\n      };\n  };\n  var $$null = function (v) {\n      if (v.value0 instanceof Data_List_Types.Nil && v.value1 instanceof Data_List_Types.Nil) {\n          return true;\n      };\n      return false;\n  };\n  var empty = new CatQueue(Data_List_Types.Nil.value, Data_List_Types.Nil.value);\n  exports[\"empty\"] = empty;\n  exports[\"null\"] = $$null;\n  exports[\"snoc\"] = snoc;\n  exports[\"uncons\"] = uncons;\n})(PS);\n(function($PS) {\n  // Generated by purs version 0.14.7\n  \"use strict\";\n  $PS[\"Data.CatList\"] = $PS[\"Data.CatList\"] || {};\n  var exports = $PS[\"Data.CatList\"];\n  var Data_CatQueue = $PS[\"Data.CatQueue\"];\n  var Data_List_Types = $PS[\"Data.List.Types\"];\n  var Data_Maybe = $PS[\"Data.Maybe\"];\n  var Data_Tuple = $PS[\"Data.Tuple\"];                \n  var CatNil = (function () {\n      function CatNil() {\n\n      };\n      CatNil.value = new CatNil();\n      return CatNil;\n  })();\n  var CatCons = (function () {\n      function CatCons(value0, value1) {\n          this.value0 = value0;\n          this.value1 = value1;\n      };\n      CatCons.create = function (value0) {\n          return function (value1) {\n              return new CatCons(value0, value1);\n          };\n      };\n      return CatCons;\n  })();\n  var link = function (v) {\n      return function (v1) {\n          if (v instanceof CatNil) {\n              return v1;\n          };\n          if (v1 instanceof CatNil) {\n              return v;\n          };\n          if (v instanceof CatCons) {\n              return new CatCons(v.value0, Data_CatQueue.snoc(v.value1)(v1));\n          };\n          throw new Error(\"Failed pattern match at Data.CatList (line 109, column 1 - line 109, column 54): \" + [ v.constructor.name, v1.constructor.name ]);\n      };\n  };\n  var foldr = function (k) {\n      return function (b) {\n          return function (q) {\n              var foldl = function ($copy_v) {\n                  return function ($copy_c) {\n                      return function ($copy_v1) {\n                          var $tco_var_v = $copy_v;\n                          var $tco_var_c = $copy_c;\n                          var $tco_done = false;\n                          var $tco_result;\n                          function $tco_loop(v, c, v1) {\n                              if (v1 instanceof Data_List_Types.Nil) {\n                                  $tco_done = true;\n                                  return c;\n                              };\n                              if (v1 instanceof Data_List_Types.Cons) {\n                                  $tco_var_v = v;\n                                  $tco_var_c = v(c)(v1.value0);\n                                  $copy_v1 = v1.value1;\n                                  return;\n                              };\n                              throw new Error(\"Failed pattern match at Data.CatList (line 125, column 3 - line 125, column 59): \" + [ v.constructor.name, c.constructor.name, v1.constructor.name ]);\n                          };\n                          while (!$tco_done) {\n                              $tco_result = $tco_loop($tco_var_v, $tco_var_c, $copy_v1);\n                          };\n                          return $tco_result;\n                      };\n                  };\n              };\n              var go = function ($copy_xs) {\n                  return function ($copy_ys) {\n                      var $tco_var_xs = $copy_xs;\n                      var $tco_done1 = false;\n                      var $tco_result;\n                      function $tco_loop(xs, ys) {\n                          var v = Data_CatQueue.uncons(xs);\n                          if (v instanceof Data_Maybe.Nothing) {\n                              $tco_done1 = true;\n                              return foldl(function (x) {\n                                  return function (i) {\n                                      return i(x);\n                                  };\n                              })(b)(ys);\n                          };\n                          if (v instanceof Data_Maybe.Just) {\n                              $tco_var_xs = v.value0.value1;\n                              $copy_ys = new Data_List_Types.Cons(k(v.value0.value0), ys);\n                              return;\n                          };\n                          throw new Error(\"Failed pattern match at Data.CatList (line 121, column 14 - line 123, column 67): \" + [ v.constructor.name ]);\n                      };\n                      while (!$tco_done1) {\n                          $tco_result = $tco_loop($tco_var_xs, $copy_ys);\n                      };\n                      return $tco_result;\n                  };\n              };\n              return go(q)(Data_List_Types.Nil.value);\n          };\n      };\n  };\n  var uncons = function (v) {\n      if (v instanceof CatNil) {\n          return Data_Maybe.Nothing.value;\n      };\n      if (v instanceof CatCons) {\n          return new Data_Maybe.Just(new Data_Tuple.Tuple(v.value0, (function () {\n              var $45 = Data_CatQueue[\"null\"](v.value1);\n              if ($45) {\n                  return CatNil.value;\n              };\n              return foldr(link)(CatNil.value)(v.value1);\n          })()));\n      };\n      throw new Error(\"Failed pattern match at Data.CatList (line 100, column 1 - line 100, column 61): \" + [ v.constructor.name ]);\n  };\n  var empty = CatNil.value;\n  var append = link;\n  var semigroupCatList = {\n      append: append\n  };\n  var snoc = function (cat) {\n      return function (a) {\n          return append(cat)(new CatCons(a, Data_CatQueue.empty));\n      };\n  };\n  exports[\"empty\"] = empty;\n  exports[\"snoc\"] = snoc;\n  exports[\"uncons\"] = uncons;\n  exports[\"semigroupCatList\"] = semigroupCatList;\n})(PS);\n(function($PS) {\n  // Generated by purs version 0.14.7\n  \"use strict\";\n  $PS[\"Control.Monad.Free\"] = $PS[\"Control.Monad.Free\"] || {};\n  var exports = $PS[\"Control.Monad.Free\"];\n  var Control_Applicative = $PS[\"Control.Applicative\"];\n  var Control_Bind = $PS[\"Control.Bind\"];\n  var Control_Monad = $PS[\"Control.Monad\"];\n  var Control_Monad_Rec_Class = $PS[\"Control.Monad.Rec.Class\"];\n  var Data_CatList = $PS[\"Data.CatList\"];\n  var Data_Functor = $PS[\"Data.Functor\"];\n  var Data_Maybe = $PS[\"Data.Maybe\"];\n  var Data_Semigroup = $PS[\"Data.Semigroup\"];\n  var Free = (function () {\n      function Free(value0, value1) {\n          this.value0 = value0;\n          this.value1 = value1;\n      };\n      Free.create = function (value0) {\n          return function (value1) {\n              return new Free(value0, value1);\n          };\n      };\n      return Free;\n  })();\n  var Return = (function () {\n      function Return(value0) {\n          this.value0 = value0;\n      };\n      Return.create = function (value0) {\n          return new Return(value0);\n      };\n      return Return;\n  })();\n  var Bind = (function () {\n      function Bind(value0, value1) {\n          this.value0 = value0;\n          this.value1 = value1;\n      };\n      Bind.create = function (value0) {\n          return function (value1) {\n              return new Bind(value0, value1);\n          };\n      };\n      return Bind;\n  })();\n  var toView = function ($copy_v) {\n      var $tco_done = false;\n      var $tco_result;\n      function $tco_loop(v) {\n          var runExpF = function (v2) {\n              return v2;\n          };\n          var concatF = function (v2) {\n              return function (r) {\n                  return new Free(v2.value0, Data_Semigroup.append(Data_CatList.semigroupCatList)(v2.value1)(r));\n              };\n          };\n          if (v.value0 instanceof Return) {\n              var v2 = Data_CatList.uncons(v.value1);\n              if (v2 instanceof Data_Maybe.Nothing) {\n                  $tco_done = true;\n                  return new Return(v.value0.value0);\n              };\n              if (v2 instanceof Data_Maybe.Just) {\n                  $copy_v = concatF(runExpF(v2.value0.value0)(v.value0.value0))(v2.value0.value1);\n                  return;\n              };\n              throw new Error(\"Failed pattern match at Control.Monad.Free (line 227, column 7 - line 231, column 64): \" + [ v2.constructor.name ]);\n          };\n          if (v.value0 instanceof Bind) {\n              $tco_done = true;\n              return new Bind(v.value0.value0, function (a) {\n                  return concatF(v.value0.value1(a))(v.value1);\n              });\n          };\n          throw new Error(\"Failed pattern match at Control.Monad.Free (line 225, column 3 - line 233, column 56): \" + [ v.value0.constructor.name ]);\n      };\n      while (!$tco_done) {\n          $tco_result = $tco_loop($copy_v);\n      };\n      return $tco_result;\n  };\n  var fromView = function (f) {\n      return new Free(f, Data_CatList.empty);\n  };\n  var freeMonad = {\n      Applicative0: function () {\n          return freeApplicative;\n      },\n      Bind1: function () {\n          return freeBind;\n      }\n  };\n  var freeFunctor = {\n      map: function (k) {\n          return function (f) {\n              return Control_Bind.bindFlipped(freeBind)((function () {\n                  var $119 = Control_Applicative.pure(freeApplicative);\n                  return function ($120) {\n                      return $119(k($120));\n                  };\n              })())(f);\n          };\n      }\n  };\n  var freeBind = {\n      bind: function (v) {\n          return function (k) {\n              return new Free(v.value0, Data_CatList.snoc(v.value1)(k));\n          };\n      },\n      Apply0: function () {\n          return freeApply;\n      }\n  };\n  var freeApply = {\n      apply: Control_Monad.ap(freeMonad),\n      Functor0: function () {\n          return freeFunctor;\n      }\n  };\n  var freeApplicative = {\n      pure: function ($121) {\n          return fromView(Return.create($121));\n      },\n      Apply0: function () {\n          return freeApply;\n      }\n  };\n  var liftF = function (f) {\n      return fromView(new Bind(f, (function () {\n          var $122 = Control_Applicative.pure(freeApplicative);\n          return function ($123) {\n              return $122($123);\n          };\n      })()));\n  };\n  var foldFree = function (dictMonadRec) {\n      return function (k) {\n          var go = function (f) {\n              var v = toView(f);\n              if (v instanceof Return) {\n                  return Data_Functor.map((((dictMonadRec.Monad0()).Bind1()).Apply0()).Functor0())(Control_Monad_Rec_Class.Done.create)(Control_Applicative.pure((dictMonadRec.Monad0()).Applicative0())(v.value0));\n              };\n              if (v instanceof Bind) {\n                  return Data_Functor.map((((dictMonadRec.Monad0()).Bind1()).Apply0()).Functor0())(function ($135) {\n                      return Control_Monad_Rec_Class.Loop.create(v.value1($135));\n                  })(k(v.value0));\n              };\n              throw new Error(\"Failed pattern match at Control.Monad.Free (line 158, column 10 - line 160, column 37): \" + [ v.constructor.name ]);\n          };\n          return Control_Monad_Rec_Class.tailRecM(dictMonadRec)(go);\n      };\n  };\n  exports[\"liftF\"] = liftF;\n  exports[\"foldFree\"] = foldFree;\n  exports[\"freeFunctor\"] = freeFunctor;\n  exports[\"freeBind\"] = freeBind;\n  exports[\"freeApplicative\"] = freeApplicative;\n  exports[\"freeMonad\"] = freeMonad;\n})(PS);\n(function($PS) {\n  // Generated by purs version 0.14.7\n  \"use strict\";\n  $PS[\"Halogen.Query.HalogenM\"] = $PS[\"Halogen.Query.HalogenM\"] || {};\n  var exports = $PS[\"Halogen.Query.HalogenM\"];\n  var Control_Category = $PS[\"Control.Category\"];\n  var Control_Monad_Free = $PS[\"Control.Monad.Free\"];\n  var Data_Ord = $PS[\"Data.Ord\"];\n  var Data_Unit = $PS[\"Data.Unit\"];\n  var Effect_Aff_Class = $PS[\"Effect.Aff.Class\"];\n  var Effect_Class = $PS[\"Effect.Class\"];                                \n  var SubscriptionId = function (x) {\n      return x;\n  };\n  var ForkId = function (x) {\n      return x;\n  };\n  var State = (function () {\n      function State(value0) {\n          this.value0 = value0;\n      };\n      State.create = function (value0) {\n          return new State(value0);\n      };\n      return State;\n  })();\n  var Subscribe = (function () {\n      function Subscribe(value0, value1) {\n          this.value0 = value0;\n          this.value1 = value1;\n      };\n      Subscribe.create = function (value0) {\n          return function (value1) {\n              return new Subscribe(value0, value1);\n          };\n      };\n      return Subscribe;\n  })();\n  var Unsubscribe = (function () {\n      function Unsubscribe(value0, value1) {\n          this.value0 = value0;\n          this.value1 = value1;\n      };\n      Unsubscribe.create = function (value0) {\n          return function (value1) {\n              return new Unsubscribe(value0, value1);\n          };\n      };\n      return Unsubscribe;\n  })();\n  var Lift = (function () {\n      function Lift(value0) {\n          this.value0 = value0;\n      };\n      Lift.create = function (value0) {\n          return new Lift(value0);\n      };\n      return Lift;\n  })();\n  var ChildQuery = (function () {\n      function ChildQuery(value0) {\n          this.value0 = value0;\n      };\n      ChildQuery.create = function (value0) {\n          return new ChildQuery(value0);\n      };\n      return ChildQuery;\n  })();\n  var Raise = (function () {\n      function Raise(value0, value1) {\n          this.value0 = value0;\n          this.value1 = value1;\n      };\n      Raise.create = function (value0) {\n          return function (value1) {\n              return new Raise(value0, value1);\n          };\n      };\n      return Raise;\n  })();\n  var Par = (function () {\n      function Par(value0) {\n          this.value0 = value0;\n      };\n      Par.create = function (value0) {\n          return new Par(value0);\n      };\n      return Par;\n  })();\n  var Fork = (function () {\n      function Fork(value0, value1) {\n          this.value0 = value0;\n          this.value1 = value1;\n      };\n      Fork.create = function (value0) {\n          return function (value1) {\n              return new Fork(value0, value1);\n          };\n      };\n      return Fork;\n  })();\n  var Kill = (function () {\n      function Kill(value0, value1) {\n          this.value0 = value0;\n          this.value1 = value1;\n      };\n      Kill.create = function (value0) {\n          return function (value1) {\n              return new Kill(value0, value1);\n          };\n      };\n      return Kill;\n  })();\n  var GetRef = (function () {\n      function GetRef(value0, value1) {\n          this.value0 = value0;\n          this.value1 = value1;\n      };\n      GetRef.create = function (value0) {\n          return function (value1) {\n              return new GetRef(value0, value1);\n          };\n      };\n      return GetRef;\n  })();\n  var HalogenM = function (x) {\n      return x;\n  };\n  var raise = function (o) {\n      return Control_Monad_Free.liftF(new Raise(o, Data_Unit.unit));\n  };\n  var ordSubscriptionId = Data_Ord.ordInt;\n  var ordForkId = Data_Ord.ordInt;\n  var monadHalogenM = Control_Monad_Free.freeMonad;\n  var monadStateHalogenM = {\n      state: function ($134) {\n          return HalogenM(Control_Monad_Free.liftF(State.create($134)));\n      },\n      Monad0: function () {\n          return monadHalogenM;\n      }\n  };\n  var monadEffectHalogenM = function (dictMonadEffect) {\n      return {\n          liftEffect: (function () {\n              var $139 = Effect_Class.liftEffect(dictMonadEffect);\n              return function ($140) {\n                  return HalogenM(Control_Monad_Free.liftF(Lift.create($139($140))));\n              };\n          })(),\n          Monad0: function () {\n              return monadHalogenM;\n          }\n      };\n  };\n  var monadAffHalogenM = function (dictMonadAff) {\n      return {\n          liftAff: (function () {\n              var $141 = Effect_Aff_Class.liftAff(dictMonadAff);\n              return function ($142) {\n                  return HalogenM(Control_Monad_Free.liftF(Lift.create($141($142))));\n              };\n          })(),\n          MonadEffect0: function () {\n              return monadEffectHalogenM(dictMonadAff.MonadEffect0());\n          }\n      };\n  };\n  var getRef = function (p) {\n      return Control_Monad_Free.liftF(new GetRef(p, Control_Category.identity(Control_Category.categoryFn)));\n  };\n  var functorHalogenM = Control_Monad_Free.freeFunctor;\n  var bindHalogenM = Control_Monad_Free.freeBind;           \n  var applicativeHalogenM = Control_Monad_Free.freeApplicative;\n  exports[\"State\"] = State;\n  exports[\"Subscribe\"] = Subscribe;\n  exports[\"Unsubscribe\"] = Unsubscribe;\n  exports[\"Lift\"] = Lift;\n  exports[\"ChildQuery\"] = ChildQuery;\n  exports[\"Raise\"] = Raise;\n  exports[\"Par\"] = Par;\n  exports[\"Fork\"] = Fork;\n  exports[\"Kill\"] = Kill;\n  exports[\"GetRef\"] = GetRef;\n  exports[\"raise\"] = raise;\n  exports[\"SubscriptionId\"] = SubscriptionId;\n  exports[\"ForkId\"] = ForkId;\n  exports[\"getRef\"] = getRef;\n  exports[\"functorHalogenM\"] = functorHalogenM;\n  exports[\"applicativeHalogenM\"] = applicativeHalogenM;\n  exports[\"bindHalogenM\"] = bindHalogenM;\n  exports[\"monadEffectHalogenM\"] = monadEffectHalogenM;\n  exports[\"monadAffHalogenM\"] = monadAffHalogenM;\n  exports[\"monadStateHalogenM\"] = monadStateHalogenM;\n  exports[\"ordSubscriptionId\"] = ordSubscriptionId;\n  exports[\"ordForkId\"] = ordForkId;\n})(PS);\n(function($PS) {\n  // Generated by purs version 0.14.7\n  \"use strict\";\n  $PS[\"Halogen.Query.HalogenQ\"] = $PS[\"Halogen.Query.HalogenQ\"] || {};\n  var exports = $PS[\"Halogen.Query.HalogenQ\"];           \n  var Initialize = (function () {\n      function Initialize(value0) {\n          this.value0 = value0;\n      };\n      Initialize.create = function (value0) {\n          return new Initialize(value0);\n      };\n      return Initialize;\n  })();\n  var Finalize = (function () {\n      function Finalize(value0) {\n          this.value0 = value0;\n      };\n      Finalize.create = function (value0) {\n          return new Finalize(value0);\n      };\n      return Finalize;\n  })();\n  var Receive = (function () {\n      function Receive(value0, value1) {\n          this.value0 = value0;\n          this.value1 = value1;\n      };\n      Receive.create = function (value0) {\n          return function (value1) {\n              return new Receive(value0, value1);\n          };\n      };\n      return Receive;\n  })();\n  var Action = (function () {\n      function Action(value0, value1) {\n          this.value0 = value0;\n          this.value1 = value1;\n      };\n      Action.create = function (value0) {\n          return function (value1) {\n              return new Action(value0, value1);\n          };\n      };\n      return Action;\n  })();\n  var Query = (function () {\n      function Query(value0, value1) {\n          this.value0 = value0;\n          this.value1 = value1;\n      };\n      Query.create = function (value0) {\n          return function (value1) {\n              return new Query(value0, value1);\n          };\n      };\n      return Query;\n  })();\n  exports[\"Initialize\"] = Initialize;\n  exports[\"Finalize\"] = Finalize;\n  exports[\"Receive\"] = Receive;\n  exports[\"Action\"] = Action;\n  exports[\"Query\"] = Query;\n})(PS);\n(function($PS) {\n  // Generated by purs version 0.14.7\n  \"use strict\";\n  $PS[\"Halogen.Component\"] = $PS[\"Halogen.Component\"] || {};\n  var exports = $PS[\"Halogen.Component\"];\n  var Control_Applicative = $PS[\"Control.Applicative\"];\n  var Data_Coyoneda = $PS[\"Data.Coyoneda\"];\n  var Data_Foldable = $PS[\"Data.Foldable\"];\n  var Data_Function = $PS[\"Data.Function\"];\n  var Data_Functor = $PS[\"Data.Functor\"];\n  var Data_Maybe = $PS[\"Data.Maybe\"];\n  var Data_Unit = $PS[\"Data.Unit\"];\n  var Halogen_Data_Slot = $PS[\"Halogen.Data.Slot\"];\n  var Halogen_Query_HalogenM = $PS[\"Halogen.Query.HalogenM\"];\n  var Halogen_Query_HalogenQ = $PS[\"Halogen.Query.HalogenQ\"];\n  var Unsafe_Coerce = $PS[\"Unsafe.Coerce\"];                \n  var ComponentSlot = (function () {\n      function ComponentSlot(value0) {\n          this.value0 = value0;\n      };\n      ComponentSlot.create = function (value0) {\n          return new ComponentSlot(value0);\n      };\n      return ComponentSlot;\n  })();\n  var ThunkSlot = (function () {\n      function ThunkSlot(value0) {\n          this.value0 = value0;\n      };\n      ThunkSlot.create = function (value0) {\n          return new ThunkSlot(value0);\n      };\n      return ThunkSlot;\n  })();\n  var unComponentSlot = Unsafe_Coerce.unsafeCoerce;\n  var unComponent = Unsafe_Coerce.unsafeCoerce;\n  var mkEval = function (args) {\n      return function (v) {\n          if (v instanceof Halogen_Query_HalogenQ.Initialize) {\n              return Data_Functor.voidLeft(Halogen_Query_HalogenM.functorHalogenM)(Data_Foldable.traverse_(Halogen_Query_HalogenM.applicativeHalogenM)(Data_Foldable.foldableMaybe)(args.handleAction)(args.initialize))(v.value0);\n          };\n          if (v instanceof Halogen_Query_HalogenQ.Finalize) {\n              return Data_Functor.voidLeft(Halogen_Query_HalogenM.functorHalogenM)(Data_Foldable.traverse_(Halogen_Query_HalogenM.applicativeHalogenM)(Data_Foldable.foldableMaybe)(args.handleAction)(args.finalize))(v.value0);\n          };\n          if (v instanceof Halogen_Query_HalogenQ.Receive) {\n              return Data_Functor.voidLeft(Halogen_Query_HalogenM.functorHalogenM)(Data_Foldable.traverse_(Halogen_Query_HalogenM.applicativeHalogenM)(Data_Foldable.foldableMaybe)(args.handleAction)(args.receive(v.value0)))(v.value1);\n          };\n          if (v instanceof Halogen_Query_HalogenQ.Action) {\n              return Data_Functor.voidLeft(Halogen_Query_HalogenM.functorHalogenM)(args.handleAction(v.value0))(v.value1);\n          };\n          if (v instanceof Halogen_Query_HalogenQ.Query) {\n              return Data_Coyoneda.unCoyoneda(function (g) {\n                  var $24 = Data_Functor.map(Halogen_Query_HalogenM.functorHalogenM)(Data_Maybe.maybe(v.value1(Data_Unit.unit))(g));\n                  return function ($25) {\n                      return $24(args.handleQuery($25));\n                  };\n              })(v.value0);\n          };\n          throw new Error(\"Failed pattern match at Halogen.Component (line 182, column 15 - line 192, column 70): \" + [ v.constructor.name ]);\n      };\n  };\n  var mkComponentSlot = Unsafe_Coerce.unsafeCoerce;\n  var mkComponent = Unsafe_Coerce.unsafeCoerce;\n  var defaultEval = {\n      handleAction: Data_Function[\"const\"](Control_Applicative.pure(Halogen_Query_HalogenM.applicativeHalogenM)(Data_Unit.unit)),\n      handleQuery: Data_Function[\"const\"](Control_Applicative.pure(Halogen_Query_HalogenM.applicativeHalogenM)(Data_Maybe.Nothing.value)),\n      receive: Data_Function[\"const\"](Data_Maybe.Nothing.value),\n      initialize: Data_Maybe.Nothing.value,\n      finalize: Data_Maybe.Nothing.value\n  };\n  var componentSlot = function () {\n      return function (dictIsSymbol) {\n          return function (dictOrd) {\n              return function (label) {\n                  return function (p) {\n                      return function (comp) {\n                          return function (input) {\n                              return function (output) {\n                                  return mkComponentSlot({\n                                      get: Halogen_Data_Slot.lookup()(dictIsSymbol)(dictOrd)(label)(p),\n                                      pop: Halogen_Data_Slot.pop()(dictIsSymbol)(dictOrd)(label)(p),\n                                      set: Halogen_Data_Slot.insert()(dictIsSymbol)(dictOrd)(label)(p),\n                                      component: comp,\n                                      input: input,\n                                      output: output\n                                  });\n                              };\n                          };\n                      };\n                  };\n              };\n          };\n      };\n  };\n  exports[\"mkComponent\"] = mkComponent;\n  exports[\"unComponent\"] = unComponent;\n  exports[\"mkEval\"] = mkEval;\n  exports[\"defaultEval\"] = defaultEval;\n  exports[\"ComponentSlot\"] = ComponentSlot;\n  exports[\"ThunkSlot\"] = ThunkSlot;\n  exports[\"componentSlot\"] = componentSlot;\n  exports[\"unComponentSlot\"] = unComponentSlot;\n})(PS);\n(function($PS) {\n  // Generated by purs version 0.14.7\n  \"use strict\";\n  $PS[\"DOM.HTML.Indexed.ButtonType\"] = $PS[\"DOM.HTML.Indexed.ButtonType\"] || {};\n  var exports = $PS[\"DOM.HTML.Indexed.ButtonType\"];\n  var ButtonButton = (function () {\n      function ButtonButton() {\n\n      };\n      ButtonButton.value = new ButtonButton();\n      return ButtonButton;\n  })();\n  var ButtonSubmit = (function () {\n      function ButtonSubmit() {\n\n      };\n      ButtonSubmit.value = new ButtonSubmit();\n      return ButtonSubmit;\n  })();\n  var ButtonReset = (function () {\n      function ButtonReset() {\n\n      };\n      ButtonReset.value = new ButtonReset();\n      return ButtonReset;\n  })();\n  var renderButtonType = function (v) {\n      if (v instanceof ButtonButton) {\n          return \"button\";\n      };\n      if (v instanceof ButtonSubmit) {\n          return \"submit\";\n      };\n      if (v instanceof ButtonReset) {\n          return \"reset\";\n      };\n      throw new Error(\"Failed pattern match at DOM.HTML.Indexed.ButtonType (line 9, column 20 - line 12, column 25): \" + [ v.constructor.name ]);\n  };\n  exports[\"ButtonButton\"] = ButtonButton;\n  exports[\"renderButtonType\"] = renderButtonType;\n})(PS);\n(function($PS) {\n  // Generated by purs version 0.14.7\n  \"use strict\";\n  $PS[\"DOM.HTML.Indexed.OnOff\"] = $PS[\"DOM.HTML.Indexed.OnOff\"] || {};\n  var exports = $PS[\"DOM.HTML.Indexed.OnOff\"];\n  var On = (function () {\n      function On() {\n\n      };\n      On.value = new On();\n      return On;\n  })();\n  var Off = (function () {\n      function Off() {\n\n      };\n      Off.value = new Off();\n      return Off;\n  })();\n  var renderOnOff = function (v) {\n      if (v instanceof On) {\n          return \"on\";\n      };\n      if (v instanceof Off) {\n          return \"off\";\n      };\n      throw new Error(\"Failed pattern match at DOM.HTML.Indexed.OnOff (line 8, column 15 - line 10, column 15): \" + [ v.constructor.name ]);\n  };\n  exports[\"On\"] = On;\n  exports[\"Off\"] = Off;\n  exports[\"renderOnOff\"] = renderOnOff;\n})(PS);\n(function($PS) {\n  // Generated by purs version 0.14.7\n  \"use strict\";\n  $PS[\"Halogen.VDom.Machine\"] = $PS[\"Halogen.VDom.Machine\"] || {};\n  var exports = $PS[\"Halogen.VDom.Machine\"];\n  var Unsafe_Coerce = $PS[\"Unsafe.Coerce\"];                \n  var Step = (function () {\n      function Step(value0, value1, value2, value3) {\n          this.value0 = value0;\n          this.value1 = value1;\n          this.value2 = value2;\n          this.value3 = value3;\n      };\n      Step.create = function (value0) {\n          return function (value1) {\n              return function (value2) {\n                  return function (value3) {\n                      return new Step(value0, value1, value2, value3);\n                  };\n              };\n          };\n      };\n      return Step;\n  })();\n  var unStep = Unsafe_Coerce.unsafeCoerce;\n  var step = function (v, a) {\n      return v.value2(v.value1, a);\n  };\n  var mkStep = Unsafe_Coerce.unsafeCoerce;\n  var halt = function (v) {\n      return v.value3(v.value1);\n  };\n  var extract = unStep(function (v) {\n      return v.value0;\n  });\n  exports[\"Step\"] = Step;\n  exports[\"mkStep\"] = mkStep;\n  exports[\"unStep\"] = unStep;\n  exports[\"extract\"] = extract;\n  exports[\"step\"] = step;\n  exports[\"halt\"] = halt;\n})(PS);\n(function(exports) {\n  \"use strict\";\n\n  exports.unsafeGetAny = function (key, obj) {\n    return obj[key];\n  };\n\n  exports.unsafeHasAny = function (key, obj) {\n    return obj.hasOwnProperty(key);\n  };\n\n  exports.unsafeSetAny = function (key, val, obj) {\n      obj[key] = val;\n  };\n\n  exports.forE = function (a, f) {\n    var b = [];\n    for (var i = 0; i < a.length; i++) {\n      b.push(f(i, a[i]));\n    }\n    return b;\n  };\n\n  exports.forEachE = function (a, f) {\n    for (var i = 0; i < a.length; i++) {\n      f(a[i]);\n    }\n  };\n\n  exports.forInE = function (o, f) {\n    var ks = Object.keys(o);\n    for (var i = 0; i < ks.length; i++) {\n      var k = ks[i];\n      f(k, o[k]);\n    }\n  };\n\n  exports.diffWithIxE = function (a1, a2, f1, f2, f3) {\n    var a3 = [];\n    var l1 = a1.length;\n    var l2 = a2.length;\n    var i  = 0;\n    while (1) {\n      if (i < l1) {\n        if (i < l2) {\n          a3.push(f1(i, a1[i], a2[i]));\n        } else {\n          f2(i, a1[i]);\n        }\n      } else if (i < l2) {\n        a3.push(f3(i, a2[i]));\n      } else {\n        break;\n      }\n      i++;\n    }\n    return a3;\n  };\n\n  exports.strMapWithIxE = function (as, fk, f) {\n    var o = {};\n    for (var i = 0; i < as.length; i++) {\n      var a = as[i];\n      var k = fk(a);\n      o[k] = f(k, i, a);\n    }\n    return o;\n  };\n\n  exports.diffWithKeyAndIxE = function (o1, as, fk, f1, f2, f3) {\n    var o2 = {};\n    for (var i = 0; i < as.length; i++) {\n      var a = as[i];\n      var k = fk(a);\n      if (o1.hasOwnProperty(k)) {\n        o2[k] = f1(k, i, o1[k], a);\n      } else {\n        o2[k] = f3(k, i, a);\n      }\n    }\n    for (var k in o1) {\n      if (k in o2) {\n        continue;\n      }\n      f2(k, o1[k]);\n    }\n    return o2;\n  };\n\n  exports.refEq = function (a, b) {\n    return a === b;\n  };\n\n  exports.createTextNode = function (s, doc) {\n    return doc.createTextNode(s);\n  };\n\n  exports.setTextContent = function (s, n) {\n    n.textContent = s;\n  };\n\n  exports.createElement = function (ns, name, doc) {\n    if (ns != null) {\n      return doc.createElementNS(ns, name);\n    } else {\n      return doc.createElement(name)\n    }\n  };\n\n  exports.insertChildIx = function (i, a, b) {\n    var n = b.childNodes.item(i) || null;\n    if (n !== a) {\n      b.insertBefore(a, n);\n    }\n  };\n\n  exports.removeChild = function (a, b) {\n    if (b && a.parentNode === b) {\n      b.removeChild(a);\n    }\n  };\n\n  exports.parentNode = function (a) {\n    return a.parentNode;\n  };\n\n  exports.setAttribute = function (ns, attr, val, el) {\n    if (ns != null) {\n      el.setAttributeNS(ns, attr, val);\n    } else {\n      el.setAttribute(attr, val);\n    }\n  };\n\n  exports.removeAttribute = function (ns, attr, el) {\n    if (ns != null) {\n      el.removeAttributeNS(ns, attr);\n    } else {\n      el.removeAttribute(attr);\n    }\n  };\n\n  exports.hasAttribute = function (ns, attr, el) {\n    if (ns != null) {\n      return el.hasAttributeNS(ns, attr);\n    } else {\n      return el.hasAttribute(attr);\n    }\n  };\n\n  exports.addEventListener = function (ev, listener, el) {\n    el.addEventListener(ev, listener, false);\n  };\n\n  exports.removeEventListener = function (ev, listener, el) {\n    el.removeEventListener(ev, listener, false);\n  };\n\n  exports.jsUndefined = void 0;\n})(PS[\"Halogen.VDom.Util\"] = PS[\"Halogen.VDom.Util\"] || {});\n(function($PS) {\n  // Generated by purs version 0.14.7\n  \"use strict\";\n  $PS[\"Halogen.VDom.Util\"] = $PS[\"Halogen.VDom.Util\"] || {};\n  var exports = $PS[\"Halogen.VDom.Util\"];\n  var $foreign = $PS[\"Halogen.VDom.Util\"];\n  var Foreign_Object_ST = $PS[\"Foreign.Object.ST\"];\n  var Unsafe_Coerce = $PS[\"Unsafe.Coerce\"];                \n  var unsafeLookup = $foreign.unsafeGetAny;\n  var unsafeFreeze = Unsafe_Coerce.unsafeCoerce;\n  var pokeMutMap = $foreign.unsafeSetAny;\n  var newMutMap = Foreign_Object_ST[\"new\"];\n  exports[\"newMutMap\"] = newMutMap;\n  exports[\"pokeMutMap\"] = pokeMutMap;\n  exports[\"unsafeFreeze\"] = unsafeFreeze;\n  exports[\"unsafeLookup\"] = unsafeLookup;\n  exports[\"unsafeGetAny\"] = $foreign.unsafeGetAny;\n  exports[\"unsafeHasAny\"] = $foreign.unsafeHasAny;\n  exports[\"unsafeSetAny\"] = $foreign.unsafeSetAny;\n  exports[\"forE\"] = $foreign.forE;\n  exports[\"forEachE\"] = $foreign.forEachE;\n  exports[\"forInE\"] = $foreign.forInE;\n  exports[\"diffWithIxE\"] = $foreign.diffWithIxE;\n  exports[\"diffWithKeyAndIxE\"] = $foreign.diffWithKeyAndIxE;\n  exports[\"strMapWithIxE\"] = $foreign.strMapWithIxE;\n  exports[\"refEq\"] = $foreign.refEq;\n  exports[\"createTextNode\"] = $foreign.createTextNode;\n  exports[\"setTextContent\"] = $foreign.setTextContent;\n  exports[\"createElement\"] = $foreign.createElement;\n  exports[\"insertChildIx\"] = $foreign.insertChildIx;\n  exports[\"removeChild\"] = $foreign.removeChild;\n  exports[\"parentNode\"] = $foreign.parentNode;\n  exports[\"setAttribute\"] = $foreign.setAttribute;\n  exports[\"removeAttribute\"] = $foreign.removeAttribute;\n  exports[\"hasAttribute\"] = $foreign.hasAttribute;\n  exports[\"addEventListener\"] = $foreign.addEventListener;\n  exports[\"removeEventListener\"] = $foreign.removeEventListener;\n  exports[\"jsUndefined\"] = $foreign.jsUndefined;\n})(PS);\n(function(exports) {\n  \"use strict\";\n\n  exports.eventListener = function (fn) {\n    return function () {\n      return function (event) {\n        return fn(event)();\n      };\n    };\n  };\n})(PS[\"Web.Event.EventTarget\"] = PS[\"Web.Event.EventTarget\"] || {});\n(function($PS) {\n  // Generated by purs version 0.14.7\n  \"use strict\";\n  $PS[\"Web.Event.EventTarget\"] = $PS[\"Web.Event.EventTarget\"] || {};\n  var exports = $PS[\"Web.Event.EventTarget\"];\n  var $foreign = $PS[\"Web.Event.EventTarget\"];\n  exports[\"eventListener\"] = $foreign.eventListener;\n})(PS);\n(function($PS) {\n  // Generated by purs version 0.14.7\n  \"use strict\";\n  $PS[\"Halogen.VDom.DOM.Prop\"] = $PS[\"Halogen.VDom.DOM.Prop\"] || {};\n  var exports = $PS[\"Halogen.VDom.DOM.Prop\"];\n  var Data_Maybe = $PS[\"Data.Maybe\"];\n  var Data_Nullable = $PS[\"Data.Nullable\"];\n  var Data_Tuple = $PS[\"Data.Tuple\"];\n  var Data_Unit = $PS[\"Data.Unit\"];\n  var Effect_Ref = $PS[\"Effect.Ref\"];\n  var Foreign = $PS[\"Foreign\"];\n  var Foreign_Object = $PS[\"Foreign.Object\"];\n  var Halogen_VDom_Machine = $PS[\"Halogen.VDom.Machine\"];\n  var Halogen_VDom_Util = $PS[\"Halogen.VDom.Util\"];\n  var Unsafe_Coerce = $PS[\"Unsafe.Coerce\"];\n  var Web_Event_EventTarget = $PS[\"Web.Event.EventTarget\"];                \n  var Created = (function () {\n      function Created(value0) {\n          this.value0 = value0;\n      };\n      Created.create = function (value0) {\n          return new Created(value0);\n      };\n      return Created;\n  })();\n  var Removed = (function () {\n      function Removed(value0) {\n          this.value0 = value0;\n      };\n      Removed.create = function (value0) {\n          return new Removed(value0);\n      };\n      return Removed;\n  })();\n  var Attribute = (function () {\n      function Attribute(value0, value1, value2) {\n          this.value0 = value0;\n          this.value1 = value1;\n          this.value2 = value2;\n      };\n      Attribute.create = function (value0) {\n          return function (value1) {\n              return function (value2) {\n                  return new Attribute(value0, value1, value2);\n              };\n          };\n      };\n      return Attribute;\n  })();\n  var Property = (function () {\n      function Property(value0, value1) {\n          this.value0 = value0;\n          this.value1 = value1;\n      };\n      Property.create = function (value0) {\n          return function (value1) {\n              return new Property(value0, value1);\n          };\n      };\n      return Property;\n  })();\n  var Handler = (function () {\n      function Handler(value0, value1) {\n          this.value0 = value0;\n          this.value1 = value1;\n      };\n      Handler.create = function (value0) {\n          return function (value1) {\n              return new Handler(value0, value1);\n          };\n      };\n      return Handler;\n  })();\n  var Ref = (function () {\n      function Ref(value0) {\n          this.value0 = value0;\n      };\n      Ref.create = function (value0) {\n          return new Ref(value0);\n      };\n      return Ref;\n  })();\n  var unsafeGetProperty = Halogen_VDom_Util.unsafeGetAny;\n  var setProperty = Halogen_VDom_Util.unsafeSetAny;\n  var removeProperty = function (key, el) {\n      var v = Halogen_VDom_Util.hasAttribute(Data_Nullable[\"null\"], key, el);\n      if (v) {\n          return Halogen_VDom_Util.removeAttribute(Data_Nullable[\"null\"], key, el);\n      };\n      var v1 = Foreign.typeOf(Halogen_VDom_Util.unsafeGetAny(key, el));\n      if (v1 === \"string\") {\n          return Halogen_VDom_Util.unsafeSetAny(key, \"\", el);\n      };\n      if (key === \"rowSpan\") {\n          return Halogen_VDom_Util.unsafeSetAny(key, 1, el);\n      };\n      if (key === \"colSpan\") {\n          return Halogen_VDom_Util.unsafeSetAny(key, 1, el);\n      };\n      return Halogen_VDom_Util.unsafeSetAny(key, Halogen_VDom_Util.jsUndefined, el);\n  };\n  var propToStrKey = function (v) {\n      if (v instanceof Attribute && v.value0 instanceof Data_Maybe.Just) {\n          return \"attr/\" + (v.value0.value0 + (\":\" + v.value1));\n      };\n      if (v instanceof Attribute) {\n          return \"attr/:\" + v.value1;\n      };\n      if (v instanceof Property) {\n          return \"prop/\" + v.value0;\n      };\n      if (v instanceof Handler) {\n          return \"handler/\" + v.value0;\n      };\n      if (v instanceof Ref) {\n          return \"ref\";\n      };\n      throw new Error(\"Failed pattern match at Halogen.VDom.DOM.Prop (line 182, column 16 - line 187, column 16): \" + [ v.constructor.name ]);\n  };\n  var propFromString = Unsafe_Coerce.unsafeCoerce;\n  var propFromInt = Unsafe_Coerce.unsafeCoerce;\n  var propFromBoolean = Unsafe_Coerce.unsafeCoerce;\n  var buildProp = function (emit) {\n      return function (el) {\n          var removeProp = function (prevEvents) {\n              return function (v, v1) {\n                  if (v1 instanceof Attribute) {\n                      return Halogen_VDom_Util.removeAttribute(Data_Nullable.toNullable(v1.value0), v1.value1, el);\n                  };\n                  if (v1 instanceof Property) {\n                      return removeProperty(v1.value0, el);\n                  };\n                  if (v1 instanceof Handler) {\n                      var handler = Halogen_VDom_Util.unsafeLookup(v1.value0, prevEvents);\n                      return Halogen_VDom_Util.removeEventListener(v1.value0, Data_Tuple.fst(handler), el);\n                  };\n                  if (v1 instanceof Ref) {\n                      return Data_Unit.unit;\n                  };\n                  throw new Error(\"Failed pattern match at Halogen.VDom.DOM.Prop (line 169, column 5 - line 179, column 18): \" + [ v1.constructor.name ]);\n              };\n          };\n          var mbEmit = function (v) {\n              if (v instanceof Data_Maybe.Just) {\n                  return emit(v.value0)();\n              };\n              return Data_Unit.unit;\n          };\n          var haltProp = function (state) {\n              var v = Foreign_Object.lookup(\"ref\")(state.props);\n              if (v instanceof Data_Maybe.Just && v.value0 instanceof Ref) {\n                  return mbEmit(v.value0.value0(new Removed(el)));\n              };\n              return Data_Unit.unit;\n          };\n          var diffProp = function (prevEvents, events) {\n              return function (v, v1, v11, v2) {\n                  if (v11 instanceof Attribute && v2 instanceof Attribute) {\n                      var $57 = v11.value2 === v2.value2;\n                      if ($57) {\n                          return v2;\n                      };\n                      Halogen_VDom_Util.setAttribute(Data_Nullable.toNullable(v2.value0), v2.value1, v2.value2, el);\n                      return v2;\n                  };\n                  if (v11 instanceof Property && v2 instanceof Property) {\n                      var v4 = Halogen_VDom_Util.refEq(v11.value1, v2.value1);\n                      if (v4) {\n                          return v2;\n                      };\n                      if (v2.value0 === \"value\") {\n                          var elVal = unsafeGetProperty(\"value\", el);\n                          var $66 = Halogen_VDom_Util.refEq(elVal, v2.value1);\n                          if ($66) {\n                              return v2;\n                          };\n                          setProperty(v2.value0, v2.value1, el);\n                          return v2;\n                      };\n                      setProperty(v2.value0, v2.value1, el);\n                      return v2;\n                  };\n                  if (v11 instanceof Handler && v2 instanceof Handler) {\n                      var handler = Halogen_VDom_Util.unsafeLookup(v2.value0, prevEvents);\n                      Effect_Ref.write(v2.value1)(Data_Tuple.snd(handler))();\n                      Halogen_VDom_Util.pokeMutMap(v2.value0, handler, events);\n                      return v2;\n                  };\n                  return v2;\n              };\n          };\n          var applyProp = function (events) {\n              return function (v, v1, v2) {\n                  if (v2 instanceof Attribute) {\n                      Halogen_VDom_Util.setAttribute(Data_Nullable.toNullable(v2.value0), v2.value1, v2.value2, el);\n                      return v2;\n                  };\n                  if (v2 instanceof Property) {\n                      setProperty(v2.value0, v2.value1, el);\n                      return v2;\n                  };\n                  if (v2 instanceof Handler) {\n                      var v3 = Halogen_VDom_Util.unsafeGetAny(v2.value0, events);\n                      if (Halogen_VDom_Util.unsafeHasAny(v2.value0, events)) {\n                          Effect_Ref.write(v2.value1)(Data_Tuple.snd(v3))();\n                          return v2;\n                      };\n                      var ref = Effect_Ref[\"new\"](v2.value1)();\n                      var listener = Web_Event_EventTarget.eventListener(function (ev) {\n                          return function __do() {\n                              var f$prime = Effect_Ref.read(ref)();\n                              return mbEmit(f$prime(ev));\n                          };\n                      })();\n                      Halogen_VDom_Util.pokeMutMap(v2.value0, new Data_Tuple.Tuple(listener, ref), events);\n                      Halogen_VDom_Util.addEventListener(v2.value0, listener, el);\n                      return v2;\n                  };\n                  if (v2 instanceof Ref) {\n                      mbEmit(v2.value0(new Created(el)));\n                      return v2;\n                  };\n                  throw new Error(\"Failed pattern match at Halogen.VDom.DOM.Prop (line 113, column 5 - line 135, column 15): \" + [ v2.constructor.name ]);\n              };\n          };\n          var patchProp = function (state, ps2) {\n              var events = Halogen_VDom_Util.newMutMap();\n              var onThis = removeProp(state.events);\n              var onThese = diffProp(state.events, events);\n              var onThat = applyProp(events);\n              var props = Halogen_VDom_Util.diffWithKeyAndIxE(state.props, ps2, propToStrKey, onThese, onThis, onThat);\n              var nextState = {\n                  events: Halogen_VDom_Util.unsafeFreeze(events),\n                  props: props\n              };\n              return Halogen_VDom_Machine.mkStep(new Halogen_VDom_Machine.Step(Data_Unit.unit, nextState, patchProp, haltProp));\n          };\n          var renderProp = function (ps1) {\n              var events = Halogen_VDom_Util.newMutMap();\n              var ps1$prime = Halogen_VDom_Util.strMapWithIxE(ps1, propToStrKey, applyProp(events));\n              var state = {\n                  events: Halogen_VDom_Util.unsafeFreeze(events),\n                  props: ps1$prime\n              };\n              return Halogen_VDom_Machine.mkStep(new Halogen_VDom_Machine.Step(Data_Unit.unit, state, patchProp, haltProp));\n          };\n          return renderProp;\n      };\n  };\n  exports[\"Attribute\"] = Attribute;\n  exports[\"Property\"] = Property;\n  exports[\"Handler\"] = Handler;\n  exports[\"Ref\"] = Ref;\n  exports[\"Created\"] = Created;\n  exports[\"Removed\"] = Removed;\n  exports[\"propFromString\"] = propFromString;\n  exports[\"propFromBoolean\"] = propFromBoolean;\n  exports[\"propFromInt\"] = propFromInt;\n  exports[\"buildProp\"] = buildProp;\n})(PS);\n(function($PS) {\n  // Generated by purs version 0.14.7\n  \"use strict\";\n  $PS[\"Halogen.VDom.Types\"] = $PS[\"Halogen.VDom.Types\"] || {};\n  var exports = $PS[\"Halogen.VDom.Types\"];\n  var Data_Bifunctor = $PS[\"Data.Bifunctor\"];\n  var Data_Functor = $PS[\"Data.Functor\"];\n  var Data_Tuple = $PS[\"Data.Tuple\"];\n  var Unsafe_Coerce = $PS[\"Unsafe.Coerce\"];\n  var Text = (function () {\n      function Text(value0) {\n          this.value0 = value0;\n      };\n      Text.create = function (value0) {\n          return new Text(value0);\n      };\n      return Text;\n  })();\n  var Elem = (function () {\n      function Elem(value0, value1, value2, value3) {\n          this.value0 = value0;\n          this.value1 = value1;\n          this.value2 = value2;\n          this.value3 = value3;\n      };\n      Elem.create = function (value0) {\n          return function (value1) {\n              return function (value2) {\n                  return function (value3) {\n                      return new Elem(value0, value1, value2, value3);\n                  };\n              };\n          };\n      };\n      return Elem;\n  })();\n  var Keyed = (function () {\n      function Keyed(value0, value1, value2, value3) {\n          this.value0 = value0;\n          this.value1 = value1;\n          this.value2 = value2;\n          this.value3 = value3;\n      };\n      Keyed.create = function (value0) {\n          return function (value1) {\n              return function (value2) {\n                  return function (value3) {\n                      return new Keyed(value0, value1, value2, value3);\n                  };\n              };\n          };\n      };\n      return Keyed;\n  })();\n  var Widget = (function () {\n      function Widget(value0) {\n          this.value0 = value0;\n      };\n      Widget.create = function (value0) {\n          return new Widget(value0);\n      };\n      return Widget;\n  })();\n  var Grafted = (function () {\n      function Grafted(value0) {\n          this.value0 = value0;\n      };\n      Grafted.create = function (value0) {\n          return new Grafted(value0);\n      };\n      return Grafted;\n  })();\n  var Graft = (function () {\n      function Graft(value0, value1, value2) {\n          this.value0 = value0;\n          this.value1 = value1;\n          this.value2 = value2;\n      };\n      Graft.create = function (value0) {\n          return function (value1) {\n              return function (value2) {\n                  return new Graft(value0, value1, value2);\n              };\n          };\n      };\n      return Graft;\n  })();\n  var unGraft = function (f) {\n      return function ($55) {\n          return f($55);\n      };\n  };\n  var graft = Unsafe_Coerce.unsafeCoerce;\n  var bifunctorGraft = {\n      bimap: function (f) {\n          return function (g) {\n              return unGraft(function (v) {\n                  return graft(new Graft(function ($57) {\n                      return f(v.value0($57));\n                  }, function ($58) {\n                      return g(v.value1($58));\n                  }, v.value2));\n              });\n          };\n      }\n  };\n  var runGraft = unGraft(function (v) {\n      var go = function (v2) {\n          if (v2 instanceof Text) {\n              return new Text(v2.value0);\n          };\n          if (v2 instanceof Elem) {\n              return new Elem(v2.value0, v2.value1, v.value0(v2.value2), Data_Functor.map(Data_Functor.functorArray)(go)(v2.value3));\n          };\n          if (v2 instanceof Keyed) {\n              return new Keyed(v2.value0, v2.value1, v.value0(v2.value2), Data_Functor.map(Data_Functor.functorArray)(Data_Functor.map(Data_Tuple.functorTuple)(go))(v2.value3));\n          };\n          if (v2 instanceof Widget) {\n              return new Widget(v.value1(v2.value0));\n          };\n          if (v2 instanceof Grafted) {\n              return new Grafted(Data_Bifunctor.bimap(bifunctorGraft)(v.value0)(v.value1)(v2.value0));\n          };\n          throw new Error(\"Failed pattern match at Halogen.VDom.Types (line 86, column 7 - line 86, column 27): \" + [ v2.constructor.name ]);\n      };\n      return go(v.value2);\n  });\n  exports[\"Text\"] = Text;\n  exports[\"Elem\"] = Elem;\n  exports[\"Keyed\"] = Keyed;\n  exports[\"Widget\"] = Widget;\n  exports[\"Grafted\"] = Grafted;\n  exports[\"runGraft\"] = runGraft;\n})(PS);\n(function($PS) {\n  // Generated by purs version 0.14.7\n  \"use strict\";\n  $PS[\"Halogen.HTML.Core\"] = $PS[\"Halogen.HTML.Core\"] || {};\n  var exports = $PS[\"Halogen.HTML.Core\"];\n  var DOM_HTML_Indexed_ButtonType = $PS[\"DOM.HTML.Indexed.ButtonType\"];\n  var DOM_HTML_Indexed_InputType = $PS[\"DOM.HTML.Indexed.InputType\"];\n  var DOM_HTML_Indexed_OnOff = $PS[\"DOM.HTML.Indexed.OnOff\"];\n  var Data_Maybe = $PS[\"Data.Maybe\"];\n  var Halogen_VDom_DOM_Prop = $PS[\"Halogen.VDom.DOM.Prop\"];\n  var Halogen_VDom_Types = $PS[\"Halogen.VDom.Types\"];          \n  var HTML = function (x) {\n      return x;\n  };\n  var widget = function ($19) {\n      return HTML(Halogen_VDom_Types.Widget.create($19));\n  };\n  var toPropValue = function (dict) {\n      return dict.toPropValue;\n  };\n  var text = function ($20) {\n      return HTML(Halogen_VDom_Types.Text.create($20));\n  };\n  var ref = function (f) {\n      return new Halogen_VDom_DOM_Prop.Ref(function ($21) {\n          return f((function (v) {\n              if (v instanceof Halogen_VDom_DOM_Prop.Created) {\n                  return new Data_Maybe.Just(v.value0);\n              };\n              if (v instanceof Halogen_VDom_DOM_Prop.Removed) {\n                  return Data_Maybe.Nothing.value;\n              };\n              throw new Error(\"Failed pattern match at Halogen.HTML.Core (line 103, column 21 - line 105, column 23): \" + [ v.constructor.name ]);\n          })($21));\n      });\n  };\n  var prop = function (dictIsProp) {\n      return function (v) {\n          var $22 = Halogen_VDom_DOM_Prop.Property.create(v);\n          var $23 = toPropValue(dictIsProp);\n          return function ($24) {\n              return $22($23($24));\n          };\n      };\n  };\n  var isPropString = {\n      toPropValue: Halogen_VDom_DOM_Prop.propFromString\n  };\n  var isPropOnOff = {\n      toPropValue: function ($32) {\n          return Halogen_VDom_DOM_Prop.propFromString(DOM_HTML_Indexed_OnOff.renderOnOff($32));\n      }\n  };\n  var isPropInt = {\n      toPropValue: Halogen_VDom_DOM_Prop.propFromInt\n  };\n  var isPropInputType = {\n      toPropValue: function ($38) {\n          return Halogen_VDom_DOM_Prop.propFromString(DOM_HTML_Indexed_InputType.renderInputType($38));\n      }\n  };\n  var isPropButtonType = {\n      toPropValue: function ($43) {\n          return Halogen_VDom_DOM_Prop.propFromString(DOM_HTML_Indexed_ButtonType.renderButtonType($43));\n      }\n  };\n  var isPropBoolean = {\n      toPropValue: Halogen_VDom_DOM_Prop.propFromBoolean\n  };\n  var handler = Halogen_VDom_DOM_Prop.Handler.create;\n  var element = function (ns) {\n      return function (name) {\n          return function (props) {\n              return function (children) {\n                  return new Halogen_VDom_Types.Elem(ns, name, props, children);\n              };\n          };\n      };\n  };\n  var attr = function (ns) {\n      return function (v) {\n          return Halogen_VDom_DOM_Prop.Attribute.create(ns)(v);\n      };\n  };\n  exports[\"widget\"] = widget;\n  exports[\"text\"] = text;\n  exports[\"element\"] = element;\n  exports[\"prop\"] = prop;\n  exports[\"attr\"] = attr;\n  exports[\"handler\"] = handler;\n  exports[\"ref\"] = ref;\n  exports[\"isPropString\"] = isPropString;\n  exports[\"isPropInt\"] = isPropInt;\n  exports[\"isPropBoolean\"] = isPropBoolean;\n  exports[\"isPropButtonType\"] = isPropButtonType;\n  exports[\"isPropInputType\"] = isPropInputType;\n  exports[\"isPropOnOff\"] = isPropOnOff;\n})(PS);\n(function($PS) {\n  // Generated by purs version 0.14.7\n  \"use strict\";\n  $PS[\"Halogen.HTML.Elements\"] = $PS[\"Halogen.HTML.Elements\"] || {};\n  var exports = $PS[\"Halogen.HTML.Elements\"];\n  var Data_Maybe = $PS[\"Data.Maybe\"];\n  var Halogen_HTML_Core = $PS[\"Halogen.HTML.Core\"];\n  var element = Halogen_HTML_Core.element(Data_Maybe.Nothing.value);\n  var form = element(\"form\");\n  var input = function (props) {\n      return element(\"input\")(props)([  ]);\n  };                   \n  var label = element(\"label\");\n  var p = element(\"p\");\n  var span = element(\"span\");\n  var table = element(\"table\");\n  var tbody = element(\"tbody\");\n  var tbody_ = tbody([  ]);\n  var td = element(\"td\");\n  var td_ = td([  ]);\n  var textarea = function (es) {\n      return element(\"textarea\")(es)([  ]);\n  };                       \n  var tr = element(\"tr\");\n  var tr_ = tr([  ]);\n  var div = element(\"div\");\n  var div_ = div([  ]);\n  var button = element(\"button\");\n  var br = function (props) {\n      return element(\"br\")(props)([  ]);\n  };\n  var br_ = br([  ]);    \n  var a = element(\"a\");\n  exports[\"a\"] = a;\n  exports[\"br_\"] = br_;\n  exports[\"button\"] = button;\n  exports[\"div\"] = div;\n  exports[\"div_\"] = div_;\n  exports[\"form\"] = form;\n  exports[\"input\"] = input;\n  exports[\"label\"] = label;\n  exports[\"p\"] = p;\n  exports[\"span\"] = span;\n  exports[\"table\"] = table;\n  exports[\"tbody_\"] = tbody_;\n  exports[\"td\"] = td;\n  exports[\"td_\"] = td_;\n  exports[\"textarea\"] = textarea;\n  exports[\"tr_\"] = tr_;\n})(PS);\n(function(exports) {\n  \"use strict\";\n\n  exports.unsafeReadPropImpl = function (f, s, key, value) {\n    return value == null ? f : s(value[key]);\n  };\n})(PS[\"Foreign.Index\"] = PS[\"Foreign.Index\"] || {});\n(function($PS) {\n  // Generated by purs version 0.14.7\n  \"use strict\";\n  $PS[\"Foreign.Index\"] = $PS[\"Foreign.Index\"] || {};\n  var exports = $PS[\"Foreign.Index\"];\n  var $foreign = $PS[\"Foreign.Index\"];\n  var Control_Applicative = $PS[\"Control.Applicative\"];\n  var Control_Monad_Except_Trans = $PS[\"Control.Monad.Except.Trans\"];\n  var Foreign = $PS[\"Foreign\"];                \n  var unsafeReadProp = function (dictMonad) {\n      return function (k) {\n          return function (value) {\n              return $foreign.unsafeReadPropImpl(Foreign.fail(dictMonad)(new Foreign.TypeMismatch(\"object\", Foreign.typeOf(value))), Control_Applicative.pure(Control_Monad_Except_Trans.applicativeExceptT(dictMonad)), k, value);\n          };\n      };\n  };\n  var readProp = function (dictMonad) {\n      return unsafeReadProp(dictMonad);\n  };\n  exports[\"readProp\"] = readProp;\n})(PS);\n(function($PS) {\n  // Generated by purs version 0.14.7\n  \"use strict\";\n  $PS[\"Halogen.Query.Input\"] = $PS[\"Halogen.Query.Input\"] || {};\n  var exports = $PS[\"Halogen.Query.Input\"];\n  var RefUpdate = (function () {\n      function RefUpdate(value0, value1) {\n          this.value0 = value0;\n          this.value1 = value1;\n      };\n      RefUpdate.create = function (value0) {\n          return function (value1) {\n              return new RefUpdate(value0, value1);\n          };\n      };\n      return RefUpdate;\n  })();\n  var Action = (function () {\n      function Action(value0) {\n          this.value0 = value0;\n      };\n      Action.create = function (value0) {\n          return new Action(value0);\n      };\n      return Action;\n  })();\n  exports[\"RefUpdate\"] = RefUpdate;\n  exports[\"Action\"] = Action;\n})(PS);\n(function(exports) {\n  \"use strict\";\n\n  exports._currentTarget = function (e) {\n    return e.currentTarget;\n  };\n\n  exports.preventDefault = function (e) {\n    return function () {\n      return e.preventDefault();\n    };\n  };\n})(PS[\"Web.Event.Event\"] = PS[\"Web.Event.Event\"] || {});\n(function($PS) {\n  // Generated by purs version 0.14.7\n  \"use strict\";\n  $PS[\"Web.Event.Event\"] = $PS[\"Web.Event.Event\"] || {};\n  var exports = $PS[\"Web.Event.Event\"];\n  var $foreign = $PS[\"Web.Event.Event\"];\n  var Data_Nullable = $PS[\"Data.Nullable\"];\n  var currentTarget = function ($4) {\n      return Data_Nullable.toMaybe($foreign[\"_currentTarget\"]($4));\n  };\n  exports[\"currentTarget\"] = currentTarget;\n  exports[\"preventDefault\"] = $foreign.preventDefault;\n})(PS);\n(function($PS) {\n  // Generated by purs version 0.14.7\n  \"use strict\";\n  $PS[\"Web.HTML.Event.EventTypes\"] = $PS[\"Web.HTML.Event.EventTypes\"] || {};\n  var exports = $PS[\"Web.HTML.Event.EventTypes\"];\n  var change = \"change\";\n  exports[\"change\"] = change;\n})(PS);\n(function($PS) {\n  // Generated by purs version 0.14.7\n  \"use strict\";\n  $PS[\"Web.UIEvent.MouseEvent.EventTypes\"] = $PS[\"Web.UIEvent.MouseEvent.EventTypes\"] || {};\n  var exports = $PS[\"Web.UIEvent.MouseEvent.EventTypes\"];\n  var click = \"click\";\n  exports[\"click\"] = click;\n})(PS);\n(function($PS) {\n  // Generated by purs version 0.14.7\n  \"use strict\";\n  $PS[\"Halogen.HTML.Events\"] = $PS[\"Halogen.HTML.Events\"] || {};\n  var exports = $PS[\"Halogen.HTML.Events\"];\n  var Control_Bind = $PS[\"Control.Bind\"];\n  var Control_Monad_Except = $PS[\"Control.Monad.Except\"];\n  var Control_Monad_Except_Trans = $PS[\"Control.Monad.Except.Trans\"];\n  var Data_Either = $PS[\"Data.Either\"];\n  var Data_Function = $PS[\"Data.Function\"];\n  var Data_Functor = $PS[\"Data.Functor\"];\n  var Data_Identity = $PS[\"Data.Identity\"];\n  var Data_Maybe = $PS[\"Data.Maybe\"];\n  var Foreign = $PS[\"Foreign\"];\n  var Foreign_Index = $PS[\"Foreign.Index\"];\n  var Halogen_HTML_Core = $PS[\"Halogen.HTML.Core\"];\n  var Halogen_Query_Input = $PS[\"Halogen.Query.Input\"];\n  var Unsafe_Coerce = $PS[\"Unsafe.Coerce\"];\n  var Web_Event_Event = $PS[\"Web.Event.Event\"];\n  var Web_HTML_Event_EventTypes = $PS[\"Web.HTML.Event.EventTypes\"];\n  var Web_UIEvent_MouseEvent_EventTypes = $PS[\"Web.UIEvent.MouseEvent.EventTypes\"];\n  var mouseHandler = Unsafe_Coerce.unsafeCoerce;\n  var handler$prime = function (et) {\n      return function (f) {\n          return Halogen_HTML_Core.handler(et)(function (ev) {\n              return Data_Functor.map(Data_Maybe.functorMaybe)(Halogen_Query_Input.Action.create)(f(ev));\n          });\n      };\n  };\n  var handler = function (et) {\n      return function (f) {\n          return Halogen_HTML_Core.handler(et)(function (ev) {\n              return new Data_Maybe.Just(new Halogen_Query_Input.Action(f(ev)));\n          });\n      };\n  };                                                       \n  var onClick = (function () {\n      var $1 = handler(Web_UIEvent_MouseEvent_EventTypes.click);\n      return function ($2) {\n          return $1(mouseHandler($2));\n      };\n  })();                                                    \n  var onSubmit = handler(\"submit\");\n  var addForeignPropHandler = function (key) {\n      return function (prop) {\n          return function (reader) {\n              return function (f) {\n                  var go = function (a) {\n                      return Control_Bind.composeKleisliFlipped(Control_Monad_Except_Trans.bindExceptT(Data_Identity.monadIdentity))(reader)(Foreign_Index.readProp(Data_Identity.monadIdentity)(prop))(Foreign.unsafeToForeign(a));\n                  };\n                  return handler$prime(key)(Control_Bind.composeKleisli(Data_Maybe.bindMaybe)(Web_Event_Event.currentTarget)(function (e) {\n                      return Data_Either.either(Data_Function[\"const\"](Data_Maybe.Nothing.value))(function ($71) {\n                          return Data_Maybe.Just.create(f($71));\n                      })(Control_Monad_Except.runExcept(go(e)));\n                  }));\n              };\n          };\n      };\n  };\n  var onChecked = addForeignPropHandler(Web_HTML_Event_EventTypes.change)(\"checked\")(Foreign.readBoolean(Data_Identity.monadIdentity));              \n  var onValueChange = addForeignPropHandler(Web_HTML_Event_EventTypes.change)(\"value\")(Foreign.readString(Data_Identity.monadIdentity));\n  exports[\"onSubmit\"] = onSubmit;\n  exports[\"onClick\"] = onClick;\n  exports[\"onValueChange\"] = onValueChange;\n  exports[\"onChecked\"] = onChecked;\n})(PS);\n(function($PS) {\n  // Generated by purs version 0.14.7\n  \"use strict\";\n  $PS[\"Halogen.HTML.Properties\"] = $PS[\"Halogen.HTML.Properties\"] || {};\n  var exports = $PS[\"Halogen.HTML.Properties\"];\n  var DOM_HTML_Indexed_OnOff = $PS[\"DOM.HTML.Indexed.OnOff\"];\n  var Data_Maybe = $PS[\"Data.Maybe\"];\n  var Data_Newtype = $PS[\"Data.Newtype\"];\n  var Halogen_HTML_Core = $PS[\"Halogen.HTML.Core\"];\n  var Halogen_Query_Input = $PS[\"Halogen.Query.Input\"];\n  var ref = (function () {\n      var go = function (p) {\n          return function (mel) {\n              return new Data_Maybe.Just(new Halogen_Query_Input.RefUpdate(p, mel));\n          };\n      };\n      return function ($7) {\n          return Halogen_HTML_Core.ref(go($7));\n      };\n  })();\n  var prop = function (dictIsProp) {\n      return Halogen_HTML_Core.prop(dictIsProp);\n  };                                                    \n  var required = prop(Halogen_HTML_Core.isPropBoolean)(\"required\");\n  var rows = prop(Halogen_HTML_Core.isPropInt)(\"rows\");        \n  var target = prop(Halogen_HTML_Core.isPropString)(\"target\");\n  var title = prop(Halogen_HTML_Core.isPropString)(\"title\");\n  var type_ = function (dictIsProp) {\n      return prop(dictIsProp)(\"type\");\n  };\n  var value = prop(Halogen_HTML_Core.isPropString)(\"value\");\n  var name = prop(Halogen_HTML_Core.isPropString)(\"name\"); \n  var id = prop(Halogen_HTML_Core.isPropString)(\"id\");\n  var href = prop(Halogen_HTML_Core.isPropString)(\"href\");\n  var $$for = prop(Halogen_HTML_Core.isPropString)(\"htmlFor\");    \n  var disabled = prop(Halogen_HTML_Core.isPropBoolean)(\"disabled\");\n  var class_ = (function () {\n      var $14 = prop(Halogen_HTML_Core.isPropString)(\"className\");\n      var $15 = Data_Newtype.unwrap();\n      return function ($16) {\n          return $14($15($16));\n      };\n  })();\n  var checked = prop(Halogen_HTML_Core.isPropBoolean)(\"checked\");  \n  var autofocus = prop(Halogen_HTML_Core.isPropBoolean)(\"autofocus\");\n  var autocomplete = (function () {\n      var $17 = prop(Halogen_HTML_Core.isPropOnOff)(\"autocomplete\");\n      return function ($18) {\n          return $17((function (b) {\n              if (b) {\n                  return DOM_HTML_Indexed_OnOff.On.value;\n              };\n              return DOM_HTML_Indexed_OnOff.Off.value;\n          })($18));\n      };\n  })();\n  var attr = Halogen_HTML_Core.attr(Data_Maybe.Nothing.value);\n  exports[\"attr\"] = attr;\n  exports[\"ref\"] = ref;\n  exports[\"class_\"] = class_;\n  exports[\"rows\"] = rows;\n  exports[\"for\"] = $$for;\n  exports[\"href\"] = href;\n  exports[\"id\"] = id;\n  exports[\"name\"] = name;\n  exports[\"target\"] = target;\n  exports[\"title\"] = title;\n  exports[\"type_\"] = type_;\n  exports[\"value\"] = value;\n  exports[\"disabled\"] = disabled;\n  exports[\"required\"] = required;\n  exports[\"checked\"] = checked;\n  exports[\"autocomplete\"] = autocomplete;\n  exports[\"autofocus\"] = autofocus;\n})(PS);\n(function(exports) {\n  \"use strict\";\n  /* global Symbol */\n\n  var hasArrayFrom = typeof Array.from === \"function\";\n  var hasStringIterator =\n    typeof Symbol !== \"undefined\" &&\n    Symbol != null &&\n    typeof Symbol.iterator !== \"undefined\" &&\n    typeof String.prototype[Symbol.iterator] === \"function\";\n  var hasFromCodePoint = typeof String.prototype.fromCodePoint === \"function\";\n  var hasCodePointAt = typeof String.prototype.codePointAt === \"function\";\n\n  exports._unsafeCodePointAt0 = function (fallback) {\n    return hasCodePointAt\n      ? function (str) { return str.codePointAt(0); }\n      : fallback;\n  };\n\n  exports._singleton = function (fallback) {\n    return hasFromCodePoint ? String.fromCodePoint : fallback;\n  };\n\n  exports._take = function (fallback) {\n    return function (n) {\n      if (hasStringIterator) {\n        return function (str) {\n          var accum = \"\";\n          var iter = str[Symbol.iterator]();\n          for (var i = 0; i < n; ++i) {\n            var o = iter.next();\n            if (o.done) return accum;\n            accum += o.value;\n          }\n          return accum;\n        };\n      }\n      return fallback(n);\n    };\n  };\n\n  exports._toCodePointArray = function (fallback) {\n    return function (unsafeCodePointAt0) {\n      if (hasArrayFrom) {\n        return function (str) {\n          return Array.from(str, unsafeCodePointAt0);\n        };\n      }\n      return fallback;\n    };\n  };\n})(PS[\"Data.String.CodePoints\"] = PS[\"Data.String.CodePoints\"] || {});\n(function(exports) {\n  \"use strict\";\n\n  exports.topInt = 2147483647;\n  exports.bottomInt = -2147483648;\n\n  exports.topChar = String.fromCharCode(65535);\n  exports.bottomChar = String.fromCharCode(0);\n})(PS[\"Data.Bounded\"] = PS[\"Data.Bounded\"] || {});\n(function($PS) {\n  // Generated by purs version 0.14.7\n  \"use strict\";\n  $PS[\"Data.Bounded\"] = $PS[\"Data.Bounded\"] || {};\n  var exports = $PS[\"Data.Bounded\"];\n  var $foreign = $PS[\"Data.Bounded\"];\n  var Data_Ord = $PS[\"Data.Ord\"];\n  var top = function (dict) {\n      return dict.top;\n  };\n  var boundedInt = {\n      top: $foreign.topInt,\n      bottom: $foreign.bottomInt,\n      Ord0: function () {\n          return Data_Ord.ordInt;\n      }\n  };\n  var boundedChar = {\n      top: $foreign.topChar,\n      bottom: $foreign.bottomChar,\n      Ord0: function () {\n          return Data_Ord.ordChar;\n      }\n  };\n  var bottom = function (dict) {\n      return dict.bottom;\n  };\n  exports[\"bottom\"] = bottom;\n  exports[\"top\"] = top;\n  exports[\"boundedInt\"] = boundedInt;\n  exports[\"boundedChar\"] = boundedChar;\n})(PS);\n(function(exports) {\n  \"use strict\";\n\n  exports.toCharCode = function (c) {\n    return c.charCodeAt(0);\n  };\n\n  exports.fromCharCode = function (c) {\n    return String.fromCharCode(c);\n  };\n})(PS[\"Data.Enum\"] = PS[\"Data.Enum\"] || {});\n(function($PS) {\n  // Generated by purs version 0.14.7\n  \"use strict\";\n  $PS[\"Data.Enum\"] = $PS[\"Data.Enum\"] || {};\n  var exports = $PS[\"Data.Enum\"];\n  var $foreign = $PS[\"Data.Enum\"];\n  var Data_Bounded = $PS[\"Data.Bounded\"];\n  var Data_Maybe = $PS[\"Data.Maybe\"];\n  var Data_Ord = $PS[\"Data.Ord\"];\n  var toEnum = function (dict) {\n      return dict.toEnum;\n  };\n  var fromEnum = function (dict) {\n      return dict.fromEnum;\n  };\n  var toEnumWithDefaults = function (dictBoundedEnum) {\n      return function (low) {\n          return function (high) {\n              return function (x) {\n                  var v = toEnum(dictBoundedEnum)(x);\n                  if (v instanceof Data_Maybe.Just) {\n                      return v.value0;\n                  };\n                  if (v instanceof Data_Maybe.Nothing) {\n                      var $54 = x < fromEnum(dictBoundedEnum)(Data_Bounded.bottom(dictBoundedEnum.Bounded0()));\n                      if ($54) {\n                          return low;\n                      };\n                      return high;\n                  };\n                  throw new Error(\"Failed pattern match at Data.Enum (line 158, column 33 - line 160, column 62): \" + [ v.constructor.name ]);\n              };\n          };\n      };\n  };\n  var defaultSucc = function (toEnum$prime) {\n      return function (fromEnum$prime) {\n          return function (a) {\n              return toEnum$prime(fromEnum$prime(a) + 1 | 0);\n          };\n      };\n  };\n  var defaultPred = function (toEnum$prime) {\n      return function (fromEnum$prime) {\n          return function (a) {\n              return toEnum$prime(fromEnum$prime(a) - 1 | 0);\n          };\n      };\n  };\n  var charToEnum = function (v) {\n      if (v >= Data_Bounded.bottom(Data_Bounded.boundedInt) && v <= Data_Bounded.top(Data_Bounded.boundedInt)) {\n          return new Data_Maybe.Just($foreign.fromCharCode(v));\n      };\n      return Data_Maybe.Nothing.value;\n  };\n  var enumChar = {\n      succ: defaultSucc(charToEnum)($foreign.toCharCode),\n      pred: defaultPred(charToEnum)($foreign.toCharCode),\n      Ord0: function () {\n          return Data_Ord.ordChar;\n      }\n  };\n  var boundedEnumChar = {\n      cardinality: $foreign.toCharCode(Data_Bounded.top(Data_Bounded.boundedChar)) - $foreign.toCharCode(Data_Bounded.bottom(Data_Bounded.boundedChar)) | 0,\n      toEnum: charToEnum,\n      fromEnum: $foreign.toCharCode,\n      Bounded0: function () {\n          return Data_Bounded.boundedChar;\n      },\n      Enum1: function () {\n          return enumChar;\n      }\n  };\n  exports[\"fromEnum\"] = fromEnum;\n  exports[\"toEnumWithDefaults\"] = toEnumWithDefaults;\n  exports[\"boundedEnumChar\"] = boundedEnumChar;\n})(PS);\n(function(exports) {\n  \"use strict\";\n\n  exports.intDegree = function (x) {\n    return Math.min(Math.abs(x), 2147483647);\n  };\n\n  // See the Euclidean definition in\n  // https://en.m.wikipedia.org/wiki/Modulo_operation.\n  exports.intDiv = function (x) {\n    return function (y) {\n      if (y === 0) return 0;\n      return y > 0 ? Math.floor(x / y) : -Math.floor(x / -y);\n    };\n  };\n\n  exports.intMod = function (x) {\n    return function (y) {\n      if (y === 0) return 0;\n      var yy = Math.abs(y);\n      return ((x % yy) + yy) % yy;\n    };\n  };\n})(PS[\"Data.EuclideanRing\"] = PS[\"Data.EuclideanRing\"] || {});\n(function(exports) {\n  \"use strict\";\n\n  exports.intSub = function (x) {\n    return function (y) {\n      /* jshint bitwise: false */\n      return x - y | 0;\n    };\n  };\n})(PS[\"Data.Ring\"] = PS[\"Data.Ring\"] || {});\n(function(exports) {\n  \"use strict\";\n\n  exports.intAdd = function (x) {\n    return function (y) {\n      /* jshint bitwise: false */\n      return x + y | 0;\n    };\n  };\n\n  exports.intMul = function (x) {\n    return function (y) {\n      /* jshint bitwise: false */\n      return x * y | 0;\n    };\n  };\n})(PS[\"Data.Semiring\"] = PS[\"Data.Semiring\"] || {});\n(function($PS) {\n  // Generated by purs version 0.14.7\n  \"use strict\";\n  $PS[\"Data.Semiring\"] = $PS[\"Data.Semiring\"] || {};\n  var exports = $PS[\"Data.Semiring\"];\n  var $foreign = $PS[\"Data.Semiring\"];\n  var semiringInt = {\n      add: $foreign.intAdd,\n      zero: 0,\n      mul: $foreign.intMul,\n      one: 1\n  };\n  exports[\"semiringInt\"] = semiringInt;\n})(PS);\n(function($PS) {\n  // Generated by purs version 0.14.7\n  \"use strict\";\n  $PS[\"Data.Ring\"] = $PS[\"Data.Ring\"] || {};\n  var exports = $PS[\"Data.Ring\"];\n  var $foreign = $PS[\"Data.Ring\"];\n  var Data_Semiring = $PS[\"Data.Semiring\"];\n  var ringInt = {\n      sub: $foreign.intSub,\n      Semiring0: function () {\n          return Data_Semiring.semiringInt;\n      }\n  };\n  exports[\"ringInt\"] = ringInt;\n})(PS);\n(function($PS) {\n  // Generated by purs version 0.14.7\n  \"use strict\";\n  $PS[\"Data.CommutativeRing\"] = $PS[\"Data.CommutativeRing\"] || {};\n  var exports = $PS[\"Data.CommutativeRing\"];\n  var Data_Ring = $PS[\"Data.Ring\"];\n  var commutativeRingInt = {\n      Ring0: function () {\n          return Data_Ring.ringInt;\n      }\n  };\n  exports[\"commutativeRingInt\"] = commutativeRingInt;\n})(PS);\n(function($PS) {\n  // Generated by purs version 0.14.7\n  \"use strict\";\n  $PS[\"Data.EuclideanRing\"] = $PS[\"Data.EuclideanRing\"] || {};\n  var exports = $PS[\"Data.EuclideanRing\"];\n  var $foreign = $PS[\"Data.EuclideanRing\"];\n  var Data_CommutativeRing = $PS[\"Data.CommutativeRing\"];  \n  var mod = function (dict) {\n      return dict.mod;\n  };\n  var euclideanRingInt = {\n      degree: $foreign.intDegree,\n      div: $foreign.intDiv,\n      mod: $foreign.intMod,\n      CommutativeRing0: function () {\n          return Data_CommutativeRing.commutativeRingInt;\n      }\n  };\n  var div = function (dict) {\n      return dict.div;\n  };\n  exports[\"div\"] = div;\n  exports[\"mod\"] = mod;\n  exports[\"euclideanRingInt\"] = euclideanRingInt;\n})(PS);\n(function(exports) {\n  \"use strict\";\n\n  exports.singleton = function (c) {\n    return c;\n  };\n\n  exports.length = function (s) {\n    return s.length;\n  };\n\n  exports.drop = function (n) {\n    return function (s) {\n      return s.substring(n);\n    };\n  };\n\n  exports.splitAt = function (i) {\n    return function (s) {\n      return { before: s.substring(0, i), after: s.substring(i) };\n    };\n  };\n})(PS[\"Data.String.CodeUnits\"] = PS[\"Data.String.CodeUnits\"] || {});\n(function($PS) {\n  // Generated by purs version 0.14.7\n  \"use strict\";\n  $PS[\"Data.String.CodeUnits\"] = $PS[\"Data.String.CodeUnits\"] || {};\n  var exports = $PS[\"Data.String.CodeUnits\"];\n  var $foreign = $PS[\"Data.String.CodeUnits\"];\n  var Data_Maybe = $PS[\"Data.Maybe\"];\n  var stripPrefix = function (v) {\n      return function (str) {\n          var v1 = $foreign.splitAt($foreign.length(v))(str);\n          var $15 = v1.before === v;\n          if ($15) {\n              return new Data_Maybe.Just(v1.after);\n          };\n          return Data_Maybe.Nothing.value;\n      };\n  };\n  exports[\"stripPrefix\"] = stripPrefix;\n  exports[\"singleton\"] = $foreign.singleton;\n  exports[\"length\"] = $foreign.length;\n  exports[\"drop\"] = $foreign.drop;\n})(PS);\n(function(exports) {\n  \"use strict\";\n\n  exports.charAt = function (i) {\n    return function (s) {\n      if (i >= 0 && i < s.length) return s.charAt(i);\n      throw new Error(\"Data.String.Unsafe.charAt: Invalid index.\");\n    };\n  };\n})(PS[\"Data.String.Unsafe\"] = PS[\"Data.String.Unsafe\"] || {});\n(function($PS) {\n  // Generated by purs version 0.14.7\n  \"use strict\";\n  $PS[\"Data.String.Unsafe\"] = $PS[\"Data.String.Unsafe\"] || {};\n  var exports = $PS[\"Data.String.Unsafe\"];\n  var $foreign = $PS[\"Data.String.Unsafe\"];\n  exports[\"charAt\"] = $foreign.charAt;\n})(PS);\n(function($PS) {\n  // Generated by purs version 0.14.7\n  \"use strict\";\n  $PS[\"Data.String.CodePoints\"] = $PS[\"Data.String.CodePoints\"] || {};\n  var exports = $PS[\"Data.String.CodePoints\"];\n  var $foreign = $PS[\"Data.String.CodePoints\"];\n  var Data_Array = $PS[\"Data.Array\"];\n  var Data_Bounded = $PS[\"Data.Bounded\"];\n  var Data_Enum = $PS[\"Data.Enum\"];\n  var Data_EuclideanRing = $PS[\"Data.EuclideanRing\"];\n  var Data_Functor = $PS[\"Data.Functor\"];\n  var Data_Maybe = $PS[\"Data.Maybe\"];\n  var Data_String_CodeUnits = $PS[\"Data.String.CodeUnits\"];\n  var Data_String_Unsafe = $PS[\"Data.String.Unsafe\"];\n  var Data_Tuple = $PS[\"Data.Tuple\"];\n  var Data_Unfoldable = $PS[\"Data.Unfoldable\"];\n  var unsurrogate = function (lead) {\n      return function (trail) {\n          return (((lead - 55296 | 0) * 1024 | 0) + (trail - 56320 | 0) | 0) + 65536 | 0;\n      };\n  };\n  var isTrail = function (cu) {\n      return 56320 <= cu && cu <= 57343;\n  };\n  var isLead = function (cu) {\n      return 55296 <= cu && cu <= 56319;\n  };\n  var uncons = function (s) {\n      var v = Data_String_CodeUnits.length(s);\n      if (v === 0) {\n          return Data_Maybe.Nothing.value;\n      };\n      if (v === 1) {\n          return new Data_Maybe.Just({\n              head: Data_Enum.fromEnum(Data_Enum.boundedEnumChar)(Data_String_Unsafe.charAt(0)(s)),\n              tail: \"\"\n          });\n      };\n      var cu1 = Data_Enum.fromEnum(Data_Enum.boundedEnumChar)(Data_String_Unsafe.charAt(1)(s));\n      var cu0 = Data_Enum.fromEnum(Data_Enum.boundedEnumChar)(Data_String_Unsafe.charAt(0)(s));\n      var $21 = isLead(cu0) && isTrail(cu1);\n      if ($21) {\n          return new Data_Maybe.Just({\n              head: unsurrogate(cu0)(cu1),\n              tail: Data_String_CodeUnits.drop(2)(s)\n          });\n      };\n      return new Data_Maybe.Just({\n          head: cu0,\n          tail: Data_String_CodeUnits.drop(1)(s)\n      });\n  };\n  var unconsButWithTuple = function (s) {\n      return Data_Functor.map(Data_Maybe.functorMaybe)(function (v) {\n          return new Data_Tuple.Tuple(v.head, v.tail);\n      })(uncons(s));\n  };\n  var toCodePointArrayFallback = function (s) {\n      return Data_Unfoldable.unfoldr(Data_Unfoldable.unfoldableArray)(unconsButWithTuple)(s);\n  };\n  var unsafeCodePointAt0Fallback = function (s) {\n      var cu0 = Data_Enum.fromEnum(Data_Enum.boundedEnumChar)(Data_String_Unsafe.charAt(0)(s));\n      var $25 = isLead(cu0) && Data_String_CodeUnits.length(s) > 1;\n      if ($25) {\n          var cu1 = Data_Enum.fromEnum(Data_Enum.boundedEnumChar)(Data_String_Unsafe.charAt(1)(s));\n          var $26 = isTrail(cu1);\n          if ($26) {\n              return unsurrogate(cu0)(cu1);\n          };\n          return cu0;\n      };\n      return cu0;\n  };\n  var unsafeCodePointAt0 = $foreign[\"_unsafeCodePointAt0\"](unsafeCodePointAt0Fallback);\n  var toCodePointArray = $foreign[\"_toCodePointArray\"](toCodePointArrayFallback)(unsafeCodePointAt0);\n  var length = function ($52) {\n      return Data_Array.length(toCodePointArray($52));\n  };\n  var fromCharCode = (function () {\n      var $53 = Data_Enum.toEnumWithDefaults(Data_Enum.boundedEnumChar)(Data_Bounded.bottom(Data_Bounded.boundedChar))(Data_Bounded.top(Data_Bounded.boundedChar));\n      return function ($54) {\n          return Data_String_CodeUnits.singleton($53($54));\n      };\n  })();\n  var singletonFallback = function (v) {\n      if (v <= 65535) {\n          return fromCharCode(v);\n      };\n      var lead = Data_EuclideanRing.div(Data_EuclideanRing.euclideanRingInt)(v - 65536 | 0)(1024) + 55296 | 0;\n      var trail = Data_EuclideanRing.mod(Data_EuclideanRing.euclideanRingInt)(v - 65536 | 0)(1024) + 56320 | 0;\n      return fromCharCode(lead) + fromCharCode(trail);\n  };                                                                          \n  var singleton = $foreign[\"_singleton\"](singletonFallback);\n  var takeFallback = function (n) {\n      return function (v) {\n          if (n < 1) {\n              return \"\";\n          };\n          var v1 = uncons(v);\n          if (v1 instanceof Data_Maybe.Just) {\n              return singleton(v1.value0.head) + takeFallback(n - 1 | 0)(v1.value0.tail);\n          };\n          return v;\n      };\n  };\n  var take = $foreign[\"_take\"](takeFallback);\n  var drop = function (n) {\n      return function (s) {\n          return Data_String_CodeUnits.drop(Data_String_CodeUnits.length(take(n)(s)))(s);\n      };\n  };\n  exports[\"take\"] = take;\n  exports[\"drop\"] = drop;\n})(PS);\n(function($PS) {\n  // Generated by purs version 0.14.7\n  \"use strict\";\n  $PS[\"Web.HTML.Common\"] = $PS[\"Web.HTML.Common\"] || {};\n  var exports = $PS[\"Web.HTML.Common\"];\n  var ClassName = function (x) {\n      return x;\n  };\n  exports[\"ClassName\"] = ClassName;\n})(PS);\n(function($PS) {\n  // Generated by purs version 0.14.7\n  \"use strict\";\n  $PS[\"Util\"] = $PS[\"Util\"] || {};\n  var exports = $PS[\"Util\"];\n  var Control_Bind = $PS[\"Control.Bind\"];\n  var Data_Array = $PS[\"Data.Array\"];\n  var Data_Functor = $PS[\"Data.Functor\"];\n  var Data_Maybe = $PS[\"Data.Maybe\"];\n  var Data_Nullable = $PS[\"Data.Nullable\"];\n  var Data_String_CodePoints = $PS[\"Data.String.CodePoints\"];\n  var Data_String_Common = $PS[\"Data.String.Common\"];\n  var Data_Tuple = $PS[\"Data.Tuple\"];\n  var Data_Unit = $PS[\"Data.Unit\"];\n  var Effect = $PS[\"Effect\"];\n  var Halogen_HTML_Core = $PS[\"Halogen.HTML.Core\"];\n  var Halogen_HTML_Properties = $PS[\"Halogen.HTML.Properties\"];\n  var JSURI = $PS[\"JSURI\"];\n  var Web_HTML = $PS[\"Web.HTML\"];\n  var Web_HTML_Common = $PS[\"Web.HTML.Common\"];\n  var Web_HTML_Location = $PS[\"Web.HTML.Location\"];\n  var Web_HTML_Window = $PS[\"Web.HTML.Window\"];                \n  var whenH = function (b) {\n      return function (k) {\n          if (b) {\n              return k(Data_Unit.unit);\n          };\n          return Halogen_HTML_Core.text(\"\");\n      };\n  };\n  var whenA = function (b) {\n      return function (k) {\n          if (b) {\n              return k(Data_Unit.unit);\n          };\n          return [  ];\n      };\n  };\n  var unsafeDecode = function (str) {\n      return Data_Maybe.fromJust()(JSURI[\"decodeURIComponent\"](str));\n  };\n  var ifElseH = function (b) {\n      return function (f) {\n          return function (k) {\n              if (b) {\n                  return f(Data_Unit.unit);\n              };\n              return k(Data_Unit.unit);\n          };\n      };\n  };\n  var ifElseA = function (b) {\n      return function (f) {\n          return function (k) {\n              if (b) {\n                  return f(Data_Unit.unit);\n              };\n              return k(Data_Unit.unit);\n          };\n      };\n  };\n  var fromNullableStr = (function () {\n      var $41 = Data_Maybe.fromMaybe(\"\");\n      return function ($42) {\n          return $41(Data_Nullable.toMaybe($42));\n      };\n  })();\n  var encodeTag = (function () {\n      var $43 = Data_Maybe.fromMaybe(\"\");\n      var $44 = Data_String_Common.replaceAll(\"+\")(\"%2B\");\n      return function ($45) {\n          return $43(JSURI[\"encodeURIComponent\"]($44($45)));\n      };\n  })();\n  var class_ = function ($46) {\n      return Halogen_HTML_Properties.class_(Web_HTML_Common.ClassName($46));\n  };\n  var attr = function (a) {\n      return Halogen_HTML_Properties.attr(a);\n  };\n  var _parseQueryString = function (srh) {\n      var decode = (function () {\n          var $47 = Data_String_Common.replaceAll(\"+\")(\" \");\n          return function ($48) {\n              return unsafeDecode($47($48));\n          };\n      })();\n      var go = function (kv) {\n          var v = Data_String_Common.split(\"=\")(kv);\n          if (v.length === 1) {\n              return new Data_Maybe.Just(new Data_Tuple.Tuple(decode(v[0]), Data_Maybe.Nothing.value));\n          };\n          if (v.length === 2) {\n              return new Data_Maybe.Just(new Data_Tuple.Tuple(decode(v[0]), new Data_Maybe.Just(decode(v[1]))));\n          };\n          return Data_Maybe.Nothing.value;\n      };\n      var qs = (function () {\n          var srh$prime = Data_String_CodePoints.take(1)(srh);\n          var $40 = srh$prime === \"#\" || srh$prime === \"?\";\n          if ($40) {\n              return Data_String_CodePoints.drop(1)(srh);\n          };\n          return srh;\n      })();\n      return Data_Array.mapMaybe(go)(Data_Array.filter(function (v) {\n          return v !== \"\";\n      })(Data_String_Common.split(\"&\")(qs)));\n  };                                         \n  var _lookupQueryStringValue = function (qs) {\n      return function (k) {\n          return Control_Bind.join(Data_Maybe.bindMaybe)(Data_Functor.map(Data_Maybe.functorMaybe)(Data_Tuple.snd)(Data_Array.find(function ($51) {\n              return (function (v) {\n                  return v === k;\n              })(Data_Tuple.fst($51));\n          })(qs)));\n      };\n  };\n  var _loc = Control_Bind.bindFlipped(Effect.bindEffect)(Web_HTML_Window.location)(Web_HTML.window);\n  var _doc = Control_Bind.bindFlipped(Effect.bindEffect)(Web_HTML_Window.document)(Web_HTML.window);\n  var _curQuerystring = function __do() {\n      var loc = _loc();\n      var srh = Web_HTML_Location.search(loc)();\n      return _parseQueryString(srh);\n  };\n  exports[\"class_\"] = class_;\n  exports[\"attr\"] = attr;\n  exports[\"_doc\"] = _doc;\n  exports[\"_loc\"] = _loc;\n  exports[\"_curQuerystring\"] = _curQuerystring;\n  exports[\"_lookupQueryStringValue\"] = _lookupQueryStringValue;\n  exports[\"encodeTag\"] = encodeTag;\n  exports[\"whenH\"] = whenH;\n  exports[\"whenA\"] = whenA;\n  exports[\"ifElseH\"] = ifElseH;\n  exports[\"ifElseA\"] = ifElseA;\n  exports[\"fromNullableStr\"] = fromNullableStr;\n})(PS);\n(function($PS) {\n  // Generated by purs version 0.14.7\n  \"use strict\";\n  $PS[\"Component.AccountSettings\"] = $PS[\"Component.AccountSettings\"] || {};\n  var exports = $PS[\"Component.AccountSettings\"];\n  var App = $PS[\"App\"];\n  var Control_Bind = $PS[\"Control.Bind\"];\n  var DOM_HTML_Indexed_InputType = $PS[\"DOM.HTML.Indexed.InputType\"];\n  var Data_Function = $PS[\"Data.Function\"];\n  var Data_Functor = $PS[\"Data.Functor\"];\n  var Data_Lens_Getter = $PS[\"Data.Lens.Getter\"];\n  var Data_Lens_Internal_Forget = $PS[\"Data.Lens.Internal.Forget\"];\n  var Data_Lens_Lens = $PS[\"Data.Lens.Lens\"];\n  var Data_Lens_Setter = $PS[\"Data.Lens.Setter\"];\n  var Data_Profunctor_Strong = $PS[\"Data.Profunctor.Strong\"];\n  var Data_Unit = $PS[\"Data.Unit\"];\n  var Effect_Aff_Class = $PS[\"Effect.Aff.Class\"];\n  var Globals = $PS[\"Globals\"];\n  var Halogen_Component = $PS[\"Halogen.Component\"];\n  var Halogen_HTML_Core = $PS[\"Halogen.HTML.Core\"];\n  var Halogen_HTML_Elements = $PS[\"Halogen.HTML.Elements\"];\n  var Halogen_HTML_Events = $PS[\"Halogen.HTML.Events\"];\n  var Halogen_HTML_Properties = $PS[\"Halogen.HTML.Properties\"];\n  var Halogen_Query_HalogenM = $PS[\"Halogen.Query.HalogenM\"];\n  var Util = $PS[\"Util\"];                \n  var EarchiveDefault = (function () {\n      function EarchiveDefault(value0) {\n          this.value0 = value0;\n      };\n      EarchiveDefault.create = function (value0) {\n          return new EarchiveDefault(value0);\n      };\n      return EarchiveDefault;\n  })();\n  var EprivateDefault = (function () {\n      function EprivateDefault(value0) {\n          this.value0 = value0;\n      };\n      EprivateDefault.create = function (value0) {\n          return new EprivateDefault(value0);\n      };\n      return EprivateDefault;\n  })();\n  var EprivacyLock = (function () {\n      function EprivacyLock(value0) {\n          this.value0 = value0;\n      };\n      EprivacyLock.create = function (value0) {\n          return new EprivacyLock(value0);\n      };\n      return EprivacyLock;\n  })();\n  var UEditField = (function () {\n      function UEditField(value0) {\n          this.value0 = value0;\n      };\n      UEditField.create = function (value0) {\n          return new UEditField(value0);\n      };\n      return UEditField;\n  })();\n  var USubmit = (function () {\n      function USubmit(value0) {\n          this.value0 = value0;\n      };\n      USubmit.create = function (value0) {\n          return new USubmit(value0);\n      };\n      return USubmit;\n  })();\n  var _us = function (dictStrong) {\n      return Data_Lens_Lens.lens(function (v) {\n          return v.us;\n      })(function (v) {\n          return function (v1) {\n              return {\n                  us: v1\n              };\n          };\n      })(dictStrong);\n  };\n  var usetting = function (u$prime) {\n      var render = function (v) {\n          var editField = function (f) {\n              return function ($19) {\n                  return UEditField.create(f($19));\n              };\n          };\n          return Halogen_HTML_Elements.div([ Util.class_(\"settings-form\") ])([ Halogen_HTML_Elements.div([ Util.class_(\"fw7 mb2\") ])([ Halogen_HTML_Core.text(\"Account Settings\") ]), Halogen_HTML_Elements.div([ Util.class_(\"flex items-center mb2\") ])([ Halogen_HTML_Elements.input([ Halogen_HTML_Properties.type_(Halogen_HTML_Core.isPropInputType)(DOM_HTML_Indexed_InputType.InputCheckbox.value), Util.class_(\"pointer mr2\"), Halogen_HTML_Properties.id(\"archiveDefault\"), Halogen_HTML_Properties.name(\"archiveDefault\"), Halogen_HTML_Properties.checked(v.us.archiveDefault), Halogen_HTML_Events.onChecked(editField(EarchiveDefault.create)) ]), Halogen_HTML_Elements.label([ Halogen_HTML_Properties[\"for\"](\"archiveDefault\"), Util.class_(\"lh-copy\") ])([ Halogen_HTML_Core.text(\"Archive Non-Private Bookmarks (archive.li)\") ]) ]), Halogen_HTML_Elements.div([ Util.class_(\"flex items-center mb2\") ])([ Halogen_HTML_Elements.input([ Halogen_HTML_Properties.type_(Halogen_HTML_Core.isPropInputType)(DOM_HTML_Indexed_InputType.InputCheckbox.value), Util.class_(\"pointer mr2\"), Halogen_HTML_Properties.id(\"privateDefault\"), Halogen_HTML_Properties.name(\"privateDefault\"), Halogen_HTML_Properties.checked(v.us.privateDefault), Halogen_HTML_Events.onChecked(editField(EprivateDefault.create)) ]), Halogen_HTML_Elements.label([ Halogen_HTML_Properties[\"for\"](\"privateDefault\"), Util.class_(\"lh-copy\") ])([ Halogen_HTML_Core.text(\"Default new bookmarks to Private\") ]) ]), Halogen_HTML_Elements.div([ Util.class_(\"flex items-center mb2\") ])([ Halogen_HTML_Elements.input([ Halogen_HTML_Properties.type_(Halogen_HTML_Core.isPropInputType)(DOM_HTML_Indexed_InputType.InputCheckbox.value), Util.class_(\"pointer mr2\"), Halogen_HTML_Properties.id(\"privacyLock\"), Halogen_HTML_Properties.name(\"privacyLock\"), Halogen_HTML_Properties.checked(v.us.privacyLock), Halogen_HTML_Events.onChecked(editField(EprivacyLock.create)) ]), Halogen_HTML_Elements.label([ Halogen_HTML_Properties[\"for\"](\"privacyLock\"), Util.class_(\"lh-copy\") ])([ Halogen_HTML_Core.text(\"Privacy Lock (Private Account)\") ]) ]) ]);\n      };\n      var mkState = function (u) {\n          return {\n              us: u\n          };\n      };\n      var handleAction = function (v) {\n          if (v instanceof UEditField) {\n              return Control_Bind.discard(Control_Bind.discardUnit)(Halogen_Query_HalogenM.bindHalogenM)(Data_Lens_Setter.modifying(Halogen_Query_HalogenM.monadStateHalogenM)(_us(Data_Profunctor_Strong.strongFn))((function () {\n                  if (v.value0 instanceof EarchiveDefault) {\n                      return function (v1) {\n                          return {\n                              archiveDefault: v.value0.value0,\n                              privateDefault: v1.privateDefault,\n                              privacyLock: v1.privacyLock\n                          };\n                      };\n                  };\n                  if (v.value0 instanceof EprivateDefault) {\n                      return function (v1) {\n                          return {\n                              archiveDefault: v1.archiveDefault,\n                              privateDefault: v.value0.value0,\n                              privacyLock: v1.privacyLock\n                          };\n                      };\n                  };\n                  if (v.value0 instanceof EprivacyLock) {\n                      return function (v1) {\n                          return {\n                              archiveDefault: v1.archiveDefault,\n                              privateDefault: v1.privateDefault,\n                              privacyLock: v.value0.value0\n                          };\n                      };\n                  };\n                  throw new Error(\"Failed pattern match at Component.AccountSettings (line 79, column 12 - line 82, column 46): \" + [ v.value0.constructor.name ]);\n              })()))(function () {\n                  return Control_Bind.bind(Halogen_Query_HalogenM.bindHalogenM)(Data_Lens_Getter.use(Halogen_Query_HalogenM.monadStateHalogenM)(_us(Data_Lens_Internal_Forget.strongForget)))(function (us) {\n                      return Data_Functor[\"void\"](Halogen_Query_HalogenM.functorHalogenM)(Effect_Aff_Class.liftAff(Halogen_Query_HalogenM.monadAffHalogenM(Effect_Aff_Class.monadAffAff))(App.editAccountSettings(us)));\n                  });\n              });\n          };\n          if (v instanceof USubmit) {\n              return Control_Bind.bind(Halogen_Query_HalogenM.bindHalogenM)(Data_Lens_Getter.use(Halogen_Query_HalogenM.monadStateHalogenM)(_us(Data_Lens_Internal_Forget.strongForget)))(function (us) {\n                  return Data_Functor[\"void\"](Halogen_Query_HalogenM.functorHalogenM)(Effect_Aff_Class.liftAff(Halogen_Query_HalogenM.monadAffHalogenM(Effect_Aff_Class.monadAffAff))(App.editAccountSettings(us)));\n              });\n          };\n          throw new Error(\"Failed pattern match at Component.AccountSettings (line 77, column 3 - line 77, column 69): \" + [ v.constructor.name ]);\n      };\n      var app = Globals[\"app'\"](Data_Unit.unit);\n      return Halogen_Component.mkComponent({\n          initialState: Data_Function[\"const\"](mkState(u$prime)),\n          render: render,\n          \"eval\": Halogen_Component.mkEval({\n              handleAction: handleAction,\n              handleQuery: Halogen_Component.defaultEval.handleQuery,\n              receive: Halogen_Component.defaultEval.receive,\n              initialize: Halogen_Component.defaultEval.initialize,\n              finalize: Halogen_Component.defaultEval.finalize\n          })\n      });\n  };\n  exports[\"usetting\"] = usetting;\n})(PS);\n(function(exports) {\n  \"use strict\";\n\n  exports.log = function (s) {\n    return function () {\n      console.log(s);\n    };\n  };\n\n  exports.warn = function (s) {\n    return function () {\n      console.warn(s);\n    };\n  };\n})(PS[\"Effect.Console\"] = PS[\"Effect.Console\"] || {});\n(function($PS) {\n  // Generated by purs version 0.14.7\n  \"use strict\";\n  $PS[\"Effect.Console\"] = $PS[\"Effect.Console\"] || {};\n  var exports = $PS[\"Effect.Console\"];\n  var $foreign = $PS[\"Effect.Console\"];\n  exports[\"log\"] = $foreign.log;\n  exports[\"warn\"] = $foreign.warn;\n})(PS);\n(function(exports) {\n  \"use strict\";\n\n  exports.referrer = function (doc) {\n    return function () {\n      return doc.referrer;\n    };\n  };\n})(PS[\"Web.HTML.HTMLDocument\"] = PS[\"Web.HTML.HTMLDocument\"] || {});\n(function($PS) {\n  // Generated by purs version 0.14.7\n  \"use strict\";\n  $PS[\"Web.HTML.HTMLDocument\"] = $PS[\"Web.HTML.HTMLDocument\"] || {};\n  var exports = $PS[\"Web.HTML.HTMLDocument\"];\n  var $foreign = $PS[\"Web.HTML.HTMLDocument\"];\n  var Unsafe_Coerce = $PS[\"Unsafe.Coerce\"];                      \n  var toParentNode = Unsafe_Coerce.unsafeCoerce; \n  var toDocument = Unsafe_Coerce.unsafeCoerce;\n  exports[\"toDocument\"] = toDocument;\n  exports[\"toParentNode\"] = toParentNode;\n  exports[\"referrer\"] = $foreign.referrer;\n})(PS);\n(function($PS) {\n  // Generated by purs version 0.14.7\n  \"use strict\";\n  $PS[\"Component.Add\"] = $PS[\"Component.Add\"] || {};\n  var exports = $PS[\"Component.Add\"];\n  var Affjax = $PS[\"Affjax\"];\n  var App = $PS[\"App\"];\n  var Control_Applicative = $PS[\"Control.Applicative\"];\n  var Control_Bind = $PS[\"Control.Bind\"];\n  var Control_Monad_State_Class = $PS[\"Control.Monad.State.Class\"];\n  var DOM_HTML_Indexed_ButtonType = $PS[\"DOM.HTML.Indexed.ButtonType\"];\n  var DOM_HTML_Indexed_InputType = $PS[\"DOM.HTML.Indexed.InputType\"];\n  var Data_Either = $PS[\"Data.Either\"];\n  var Data_Function = $PS[\"Data.Function\"];\n  var Data_Functor = $PS[\"Data.Functor\"];\n  var Data_Lens_Getter = $PS[\"Data.Lens.Getter\"];\n  var Data_Lens_Internal_Forget = $PS[\"Data.Lens.Internal.Forget\"];\n  var Data_Lens_Lens = $PS[\"Data.Lens.Lens\"];\n  var Data_Lens_Setter = $PS[\"Data.Lens.Setter\"];\n  var Data_Maybe = $PS[\"Data.Maybe\"];\n  var Data_Monoid = $PS[\"Data.Monoid\"];\n  var Data_Profunctor_Strong = $PS[\"Data.Profunctor.Strong\"];\n  var Data_Semigroup = $PS[\"Data.Semigroup\"];\n  var Data_String_CodeUnits = $PS[\"Data.String.CodeUnits\"];\n  var Data_String_Common = $PS[\"Data.String.Common\"];\n  var Data_Tuple = $PS[\"Data.Tuple\"];\n  var Data_Unit = $PS[\"Data.Unit\"];\n  var Effect = $PS[\"Effect\"];\n  var Effect_Aff = $PS[\"Effect.Aff\"];\n  var Effect_Aff_Class = $PS[\"Effect.Aff.Class\"];\n  var Effect_Class = $PS[\"Effect.Class\"];\n  var Effect_Console = $PS[\"Effect.Console\"];\n  var Globals = $PS[\"Globals\"];\n  var Halogen_Component = $PS[\"Halogen.Component\"];\n  var Halogen_HTML_Core = $PS[\"Halogen.HTML.Core\"];\n  var Halogen_HTML_Elements = $PS[\"Halogen.HTML.Elements\"];\n  var Halogen_HTML_Events = $PS[\"Halogen.HTML.Events\"];\n  var Halogen_HTML_Properties = $PS[\"Halogen.HTML.Properties\"];\n  var Halogen_Query_HalogenM = $PS[\"Halogen.Query.HalogenM\"];\n  var Util = $PS[\"Util\"];\n  var Web_Event_Event = $PS[\"Web.Event.Event\"];\n  var Web_HTML = $PS[\"Web.HTML\"];\n  var Web_HTML_HTMLDocument = $PS[\"Web.HTML.HTMLDocument\"];\n  var Web_HTML_Location = $PS[\"Web.HTML.Location\"];                \n  var Eurl = (function () {\n      function Eurl(value0) {\n          this.value0 = value0;\n      };\n      Eurl.create = function (value0) {\n          return new Eurl(value0);\n      };\n      return Eurl;\n  })();\n  var Etitle = (function () {\n      function Etitle(value0) {\n          this.value0 = value0;\n      };\n      Etitle.create = function (value0) {\n          return new Etitle(value0);\n      };\n      return Etitle;\n  })();\n  var Edescription = (function () {\n      function Edescription(value0) {\n          this.value0 = value0;\n      };\n      Edescription.create = function (value0) {\n          return new Edescription(value0);\n      };\n      return Edescription;\n  })();\n  var Etags = (function () {\n      function Etags(value0) {\n          this.value0 = value0;\n      };\n      Etags.create = function (value0) {\n          return new Etags(value0);\n      };\n      return Etags;\n  })();\n  var Eprivate = (function () {\n      function Eprivate(value0) {\n          this.value0 = value0;\n      };\n      Eprivate.create = function (value0) {\n          return new Eprivate(value0);\n      };\n      return Eprivate;\n  })();\n  var Etoread = (function () {\n      function Etoread(value0) {\n          this.value0 = value0;\n      };\n      Etoread.create = function (value0) {\n          return new Etoread(value0);\n      };\n      return Etoread;\n  })();\n  var BEditField = (function () {\n      function BEditField(value0) {\n          this.value0 = value0;\n      };\n      BEditField.create = function (value0) {\n          return new BEditField(value0);\n      };\n      return BEditField;\n  })();\n  var BEditSubmit = (function () {\n      function BEditSubmit(value0) {\n          this.value0 = value0;\n      };\n      BEditSubmit.create = function (value0) {\n          return new BEditSubmit(value0);\n      };\n      return BEditSubmit;\n  })();\n  var BDeleteAsk = (function () {\n      function BDeleteAsk(value0) {\n          this.value0 = value0;\n      };\n      BDeleteAsk.create = function (value0) {\n          return new BDeleteAsk(value0);\n      };\n      return BDeleteAsk;\n  })();\n  var BLookupTitle = (function () {\n      function BLookupTitle() {\n\n      };\n      BLookupTitle.value = new BLookupTitle();\n      return BLookupTitle;\n  })();\n  var BDestroy = (function () {\n      function BDestroy() {\n\n      };\n      BDestroy.value = new BDestroy();\n      return BDestroy;\n  })();\n  var _edit_bm = function (dictStrong) {\n      return Data_Lens_Lens.lens(function (v) {\n          return v.edit_bm;\n      })(function (v) {\n          return function (v1) {\n              return {\n                  edit_bm: v1,\n                  apiError: v.apiError,\n                  bm: v.bm,\n                  deleteAsk: v.deleteAsk,\n                  destroyed: v.destroyed,\n                  loading: v.loading\n              };\n          };\n      })(dictStrong);\n  };\n  var _bm = function (dictStrong) {\n      return Data_Lens_Lens.lens(function (v) {\n          return v.bm;\n      })(function (v) {\n          return function (v1) {\n              return {\n                  bm: v1,\n                  apiError: v.apiError,\n                  deleteAsk: v.deleteAsk,\n                  destroyed: v.destroyed,\n                  edit_bm: v.edit_bm,\n                  loading: v.loading\n              };\n          };\n      })(dictStrong);\n  };\n  var _apiError = function (dictStrong) {\n      return Data_Lens_Lens.lens(function (v) {\n          return v.apiError;\n      })(function (v) {\n          return function (v1) {\n              return {\n                  apiError: v1,\n                  bm: v.bm,\n                  deleteAsk: v.deleteAsk,\n                  destroyed: v.destroyed,\n                  edit_bm: v.edit_bm,\n                  loading: v.loading\n              };\n          };\n      })(dictStrong);\n  };\n  var addbmark = function (b$prime) {\n      var render = function (v) {\n          var mmoment = Globals.mmoment8601(v.bm.time);\n          var editField = function (f) {\n              return function ($79) {\n                  return BEditField.create(f($79));\n              };\n          };\n          var display_exists = function (v1) {\n              return Halogen_HTML_Elements.div([ Util.class_(\"alert\") ])([ Halogen_HTML_Core.text(\"previously saved\\xa0\"), Halogen_HTML_Elements.span([ Util.class_(\"link f7 dib gray pr3\"), Halogen_HTML_Properties.title(Data_Maybe.maybe(v.bm.time)(Data_Tuple.snd)(mmoment)) ])([ Halogen_HTML_Core.text(Data_Maybe.maybe(\"\\xa0\")(Data_Tuple.fst)(mmoment)) ]), Halogen_HTML_Elements.div([ Util.class_(\"edit_links dib ml1\") ])([ Halogen_HTML_Elements.div([ Util.class_(\"delete_link di\") ])([ Halogen_HTML_Elements.button(Data_Semigroup.append(Data_Semigroup.semigroupArray)([ Halogen_HTML_Properties.type_(Halogen_HTML_Core.isPropButtonType)(DOM_HTML_Indexed_ButtonType.ButtonButton.value), Halogen_HTML_Events.onClick(function (v2) {\n                  return new BDeleteAsk(true);\n              }), Util.class_(\"delete\") ])(Data_Monoid.guard(Data_Monoid.monoidArray)(v.deleteAsk)([ Util.attr(\"hidden\")(\"hidden\") ])))([ Halogen_HTML_Core.text(\"delete\") ]), Halogen_HTML_Elements.span(Data_Semigroup.append(Data_Semigroup.semigroupArray)([ Util.class_(\"confirm red\") ])(Data_Monoid.guard(Data_Monoid.monoidArray)(!v.deleteAsk)([ Util.attr(\"hidden\")(\"hidden\") ])))([ Halogen_HTML_Elements.button([ Halogen_HTML_Properties.type_(Halogen_HTML_Core.isPropButtonType)(DOM_HTML_Indexed_ButtonType.ButtonButton.value), Halogen_HTML_Events.onClick(function (v2) {\n                  return new BDeleteAsk(false);\n              }) ])([ Halogen_HTML_Core.text(\"cancel\\xa0/\\xa0\") ]), Halogen_HTML_Elements.button([ Halogen_HTML_Properties.type_(Halogen_HTML_Core.isPropButtonType)(DOM_HTML_Indexed_ButtonType.ButtonButton.value), Halogen_HTML_Events.onClick(function (v2) {\n                  return BDestroy.value;\n              }), Util.class_(\"red\") ])([ Halogen_HTML_Core.text(\"destroy\") ]) ]) ]) ]) ]);\n          };\n          var display_destroyed = function (v1) {\n              return Halogen_HTML_Elements.p([ Util.class_(\"red\") ])([ Halogen_HTML_Core.text(\"you killed this bookmark\") ]);\n          };\n          var alert_notification = function (alert_text) {\n              return function (v1) {\n                  return Halogen_HTML_Elements.div([ Util.class_(\"alert alert-err\") ])([ Halogen_HTML_Core.text(alert_text) ]);\n              };\n          };\n          var display_edit = function (v1) {\n              return Halogen_HTML_Elements.form([ Halogen_HTML_Events.onSubmit(BEditSubmit.create) ])([ Halogen_HTML_Elements.table([ Util.class_(\"w-100\") ])([ Halogen_HTML_Elements.tbody_([ Halogen_HTML_Elements.tr_([ Halogen_HTML_Elements.td([ Util.class_(\"w1\") ])([  ]), Halogen_HTML_Elements.td_([ Util.whenH(v.bm.bid > 0)(display_exists), Util.whenH(Data_Maybe.isJust(v.apiError))(alert_notification(Data_Maybe.fromMaybe(\"\")(v.apiError))) ]) ]), Halogen_HTML_Elements.tr_([ Halogen_HTML_Elements.td_([ Halogen_HTML_Elements.label([ Halogen_HTML_Properties[\"for\"](\"url\") ])([ Halogen_HTML_Core.text(\"URL\") ]) ]), Halogen_HTML_Elements.td_([ Halogen_HTML_Elements.input([ Halogen_HTML_Properties.type_(Halogen_HTML_Core.isPropInputType)(DOM_HTML_Indexed_InputType.InputUrl.value), Halogen_HTML_Properties.id(\"url\"), Util.class_(\"w-100 mv1\"), Halogen_HTML_Properties.required(true), Halogen_HTML_Properties.name(\"url\"), Halogen_HTML_Properties.autofocus(Data_String_Common[\"null\"](v.bm.url)), Halogen_HTML_Properties.value(v.edit_bm.url), Halogen_HTML_Events.onValueChange(editField(Eurl.create)) ]) ]) ]), Halogen_HTML_Elements.tr_([ Halogen_HTML_Elements.td_([ Halogen_HTML_Elements.label([ Halogen_HTML_Properties[\"for\"](\"title\") ])([ Halogen_HTML_Core.text(\"title\") ]) ]), Halogen_HTML_Elements.td([ Util.class_(\"flex\") ])([ Halogen_HTML_Elements.input([ Halogen_HTML_Properties.type_(Halogen_HTML_Core.isPropInputType)(DOM_HTML_Indexed_InputType.InputText.value), Halogen_HTML_Properties.id(\"title\"), Util.class_(\"w-100 mv1 flex-auto\"), Halogen_HTML_Properties.name(\"title\"), Halogen_HTML_Properties.value(v.edit_bm.title), Halogen_HTML_Events.onValueChange(editField(Etitle.create)) ]), Halogen_HTML_Elements.button([ Halogen_HTML_Properties.disabled(v.loading), Halogen_HTML_Properties.type_(Halogen_HTML_Core.isPropButtonType)(DOM_HTML_Indexed_ButtonType.ButtonButton.value), Halogen_HTML_Events.onClick(function (v2) {\n                  return BLookupTitle.value;\n              }), Util.class_(\"ml2 input-reset ba b--navy pointer f6 di dim pa1 ma1 mr0 \" + Data_Monoid.guard(Data_Monoid.monoidString)(v.loading)(\"bg-light-silver\")) ])([ Halogen_HTML_Core.text(\"fetch\") ]) ]) ]), Halogen_HTML_Elements.tr_([ Halogen_HTML_Elements.td_([ Halogen_HTML_Elements.label([ Halogen_HTML_Properties[\"for\"](\"description\") ])([ Halogen_HTML_Core.text(\"description\") ]) ]), Halogen_HTML_Elements.td_([ Halogen_HTML_Elements.textarea([ Util.class_(\"w-100 mt1 mid-gray\"), Halogen_HTML_Properties.id(\"description\"), Halogen_HTML_Properties.name(\"description\"), Halogen_HTML_Properties.rows(4), Halogen_HTML_Properties.value(v.edit_bm.description), Halogen_HTML_Events.onValueChange(editField(Edescription.create)) ]) ]) ]), Halogen_HTML_Elements.tr_([ Halogen_HTML_Elements.td_([ Halogen_HTML_Elements.label([ Halogen_HTML_Properties[\"for\"](\"tags\") ])([ Halogen_HTML_Core.text(\"tags\") ]) ]), Halogen_HTML_Elements.td_([ Halogen_HTML_Elements.input([ Halogen_HTML_Properties.type_(Halogen_HTML_Core.isPropInputType)(DOM_HTML_Indexed_InputType.InputText.value), Halogen_HTML_Properties.id(\"tags\"), Util.class_(\"w-100 mv1\"), Halogen_HTML_Properties.name(\"tags\"), Halogen_HTML_Properties.autocomplete(false), Util.attr(\"autocapitalize\")(\"off\"), Halogen_HTML_Properties.autofocus(!Data_String_Common[\"null\"](v.bm.url)), Halogen_HTML_Properties.value(v.edit_bm.tags), Halogen_HTML_Events.onValueChange(editField(Etags.create)) ]) ]) ]), Halogen_HTML_Elements.tr_([ Halogen_HTML_Elements.td_([ Halogen_HTML_Elements.label([ Halogen_HTML_Properties[\"for\"](\"private\") ])([ Halogen_HTML_Core.text(\"private\") ]) ]), Halogen_HTML_Elements.td_([ Halogen_HTML_Elements.input([ Halogen_HTML_Properties.type_(Halogen_HTML_Core.isPropInputType)(DOM_HTML_Indexed_InputType.InputCheckbox.value), Halogen_HTML_Properties.id(\"private\"), Util.class_(\"private pointer\"), Halogen_HTML_Properties.name(\"private\"), Halogen_HTML_Properties.checked(v[\"edit_bm\"][\"private\"]), Halogen_HTML_Events.onChecked(editField(Eprivate.create)) ]) ]) ]), Halogen_HTML_Elements.tr_([ Halogen_HTML_Elements.td_([ Halogen_HTML_Elements.label([ Halogen_HTML_Properties[\"for\"](\"toread\") ])([ Halogen_HTML_Core.text(\"read later\") ]) ]), Halogen_HTML_Elements.td_([ Halogen_HTML_Elements.input([ Halogen_HTML_Properties.type_(Halogen_HTML_Core.isPropInputType)(DOM_HTML_Indexed_InputType.InputCheckbox.value), Halogen_HTML_Properties.id(\"toread\"), Util.class_(\"toread pointer\"), Halogen_HTML_Properties.name(\"toread\"), Halogen_HTML_Properties.checked(v.edit_bm.toread), Halogen_HTML_Events.onChecked(editField(Etoread.create)) ]) ]) ]), Halogen_HTML_Elements.tr_([ Halogen_HTML_Elements.td_([  ]), Halogen_HTML_Elements.td_([ Halogen_HTML_Elements.input([ Halogen_HTML_Properties.type_(Halogen_HTML_Core.isPropInputType)(DOM_HTML_Indexed_InputType.InputSubmit.value), Util.class_(\"ph3 pv2 input-reset ba b--navy bg-transparent pointer f6 dib mt1 dim\"), Halogen_HTML_Properties.value((function () {\n                  var $40 = v.bm.bid > 0;\n                  if ($40) {\n                      return \"update bookmark\";\n                  };\n                  return \"add bookmark\";\n              })()) ]) ]) ]) ]) ]) ]);\n          };\n          return Util.ifElseH(!v.destroyed)(display_edit)(display_destroyed);\n      };\n      var mkState = function (b) {\n          return {\n              bm: b,\n              edit_bm: b,\n              deleteAsk: false,\n              destroyed: false,\n              loading: false,\n              apiError: Data_Maybe.Nothing.value\n          };\n      };\n      var handleAction = function (v) {\n          if (v instanceof BDeleteAsk) {\n              return Control_Monad_State_Class.modify_(Halogen_Query_HalogenM.monadStateHalogenM)(function (v1) {\n                  var $45 = {};\n                  for (var $46 in v1) {\n                      if ({}.hasOwnProperty.call(v1, $46)) {\n                          $45[$46] = v1[$46];\n                      };\n                  };\n                  $45.deleteAsk = v.value0;\n                  return $45;\n              });\n          };\n          if (v instanceof BLookupTitle) {\n              return Control_Bind.discard(Control_Bind.discardUnit)(Halogen_Query_HalogenM.bindHalogenM)(Control_Monad_State_Class.modify_(Halogen_Query_HalogenM.monadStateHalogenM)(function (v1) {\n                  var $49 = {};\n                  for (var $50 in v1) {\n                      if ({}.hasOwnProperty.call(v1, $50)) {\n                          $49[$50] = v1[$50];\n                      };\n                  };\n                  $49.loading = true;\n                  return $49;\n              }))(function () {\n                  return Control_Bind.bind(Halogen_Query_HalogenM.bindHalogenM)(Control_Monad_State_Class.gets(Halogen_Query_HalogenM.monadStateHalogenM)(function (v1) {\n                      return v1.edit_bm;\n                  }))(function (edit_bm) {\n                      return Control_Bind.bind(Halogen_Query_HalogenM.bindHalogenM)(Effect_Aff_Class.liftAff(Halogen_Query_HalogenM.monadAffHalogenM(Effect_Aff_Class.monadAffAff))(App.lookupTitle(edit_bm)))(function (mtitle) {\n                          return Control_Bind.discard(Control_Bind.discardUnit)(Halogen_Query_HalogenM.bindHalogenM)((function () {\n                              if (mtitle instanceof Data_Maybe.Just) {\n                                  return Data_Lens_Setter.modifying(Halogen_Query_HalogenM.monadStateHalogenM)(_edit_bm(Data_Profunctor_Strong.strongFn))(function (v1) {\n                                      return {\n                                          url: v1.url,\n                                          title: mtitle.value0,\n                                          description: v1.description,\n                                          tags: v1.tags,\n                                          \"private\": v1[\"private\"],\n                                          toread: v1.toread,\n                                          bid: v1.bid,\n                                          slug: v1.slug,\n                                          selected: v1.selected,\n                                          time: v1.time,\n                                          archiveUrl: v1.archiveUrl\n                                      };\n                                  });\n                              };\n                              if (mtitle instanceof Data_Maybe.Nothing) {\n                                  return Control_Applicative.pure(Halogen_Query_HalogenM.applicativeHalogenM)(Data_Unit.unit);\n                              };\n                              throw new Error(\"Failed pattern match at Component.Add (line 176, column 5 - line 178, column 29): \" + [ mtitle.constructor.name ]);\n                          })())(function () {\n                              return Control_Monad_State_Class.modify_(Halogen_Query_HalogenM.monadStateHalogenM)(function (v1) {\n                                  var $54 = {};\n                                  for (var $55 in v1) {\n                                      if ({}.hasOwnProperty.call(v1, $55)) {\n                                          $54[$55] = v1[$55];\n                                      };\n                                  };\n                                  $54.loading = false;\n                                  return $54;\n                              });\n                          });\n                      });\n                  });\n              });\n          };\n          if (v instanceof BDestroy) {\n              return Control_Bind.bind(Halogen_Query_HalogenM.bindHalogenM)(Control_Monad_State_Class.gets(Halogen_Query_HalogenM.monadStateHalogenM)(function (v1) {\n                  return v1.bm.bid;\n              }))(function (bid) {\n                  return Control_Bind.discard(Control_Bind.discardUnit)(Halogen_Query_HalogenM.bindHalogenM)(Data_Functor[\"void\"](Halogen_Query_HalogenM.functorHalogenM)(Effect_Aff_Class.liftAff(Halogen_Query_HalogenM.monadAffHalogenM(Effect_Aff_Class.monadAffAff))(App.destroy(bid))))(function () {\n                      return Control_Monad_State_Class.modify_(Halogen_Query_HalogenM.monadStateHalogenM)(function (v1) {\n                          var $57 = {};\n                          for (var $58 in v1) {\n                              if ({}.hasOwnProperty.call(v1, $58)) {\n                                  $57[$58] = v1[$58];\n                              };\n                          };\n                          $57.destroyed = true;\n                          return $57;\n                      });\n                  });\n              });\n          };\n          if (v instanceof BEditField) {\n              return Data_Lens_Setter.modifying(Halogen_Query_HalogenM.monadStateHalogenM)(_edit_bm(Data_Profunctor_Strong.strongFn))((function () {\n                  if (v.value0 instanceof Eurl) {\n                      return function (v1) {\n                          return {\n                              url: v.value0.value0,\n                              title: v1.title,\n                              description: v1.description,\n                              tags: v1.tags,\n                              \"private\": v1[\"private\"],\n                              toread: v1.toread,\n                              bid: v1.bid,\n                              slug: v1.slug,\n                              selected: v1.selected,\n                              time: v1.time,\n                              archiveUrl: v1.archiveUrl\n                          };\n                      };\n                  };\n                  if (v.value0 instanceof Etitle) {\n                      return function (v1) {\n                          return {\n                              url: v1.url,\n                              title: v.value0.value0,\n                              description: v1.description,\n                              tags: v1.tags,\n                              \"private\": v1[\"private\"],\n                              toread: v1.toread,\n                              bid: v1.bid,\n                              slug: v1.slug,\n                              selected: v1.selected,\n                              time: v1.time,\n                              archiveUrl: v1.archiveUrl\n                          };\n                      };\n                  };\n                  if (v.value0 instanceof Edescription) {\n                      return function (v1) {\n                          return {\n                              url: v1.url,\n                              title: v1.title,\n                              description: v.value0.value0,\n                              tags: v1.tags,\n                              \"private\": v1[\"private\"],\n                              toread: v1.toread,\n                              bid: v1.bid,\n                              slug: v1.slug,\n                              selected: v1.selected,\n                              time: v1.time,\n                              archiveUrl: v1.archiveUrl\n                          };\n                      };\n                  };\n                  if (v.value0 instanceof Etags) {\n                      return function (v1) {\n                          return {\n                              url: v1.url,\n                              title: v1.title,\n                              description: v1.description,\n                              tags: v.value0.value0,\n                              \"private\": v1[\"private\"],\n                              toread: v1.toread,\n                              bid: v1.bid,\n                              slug: v1.slug,\n                              selected: v1.selected,\n                              time: v1.time,\n                              archiveUrl: v1.archiveUrl\n                          };\n                      };\n                  };\n                  if (v.value0 instanceof Eprivate) {\n                      return function (v1) {\n                          return {\n                              url: v1.url,\n                              title: v1.title,\n                              description: v1.description,\n                              tags: v1.tags,\n                              \"private\": v.value0.value0,\n                              toread: v1.toread,\n                              bid: v1.bid,\n                              slug: v1.slug,\n                              selected: v1.selected,\n                              time: v1.time,\n                              archiveUrl: v1.archiveUrl\n                          };\n                      };\n                  };\n                  if (v.value0 instanceof Etoread) {\n                      return function (v1) {\n                          return {\n                              url: v1.url,\n                              title: v1.title,\n                              description: v1.description,\n                              tags: v1.tags,\n                              \"private\": v1[\"private\"],\n                              toread: v.value0.value0,\n                              bid: v1.bid,\n                              slug: v1.slug,\n                              selected: v1.selected,\n                              time: v1.time,\n                              archiveUrl: v1.archiveUrl\n                          };\n                      };\n                  };\n                  throw new Error(\"Failed pattern match at Component.Add (line 187, column 17 - line 193, column 36): \" + [ v.value0.constructor.name ]);\n              })());\n          };\n          if (v instanceof BEditSubmit) {\n              return Control_Bind.discard(Control_Bind.discardUnit)(Halogen_Query_HalogenM.bindHalogenM)(Effect_Class.liftEffect(Halogen_Query_HalogenM.monadEffectHalogenM(Effect_Aff.monadEffectAff))(Web_Event_Event.preventDefault(v.value0)))(function () {\n                  return Control_Bind.bind(Halogen_Query_HalogenM.bindHalogenM)(Data_Lens_Getter.use(Halogen_Query_HalogenM.monadStateHalogenM)(_edit_bm(Data_Lens_Internal_Forget.strongForget)))(function (edit_bm) {\n                      return Control_Bind.discard(Control_Bind.discardUnit)(Halogen_Query_HalogenM.bindHalogenM)(Data_Lens_Setter.assign(Halogen_Query_HalogenM.monadStateHalogenM)(_apiError(Data_Profunctor_Strong.strongFn))(Data_Maybe.Nothing.value))(function () {\n                          return Control_Bind.bind(Halogen_Query_HalogenM.bindHalogenM)(Effect_Aff_Class.liftAff(Halogen_Query_HalogenM.monadAffHalogenM(Effect_Aff_Class.monadAffAff))(App.editBookmark(edit_bm)))(function (v1) {\n                              if (v1 instanceof Data_Either.Left) {\n                                  return Control_Bind.discard(Control_Bind.discardUnit)(Halogen_Query_HalogenM.bindHalogenM)(Data_Lens_Setter.assign(Halogen_Query_HalogenM.monadStateHalogenM)(_apiError(Data_Profunctor_Strong.strongFn))(new Data_Maybe.Just(Affjax.printError(v1.value0))))(function () {\n                                      return Effect_Class.liftEffect(Halogen_Query_HalogenM.monadEffectHalogenM(Effect_Aff.monadEffectAff))(Effect_Console.log(Affjax.printError(v1.value0)));\n                                  });\n                              };\n                              if (v1 instanceof Data_Either.Right && (v1.value0.status >= 200 && v1.value0.status < 300)) {\n                                  return Control_Bind.discard(Control_Bind.discardUnit)(Halogen_Query_HalogenM.bindHalogenM)(Data_Lens_Setter.assign(Halogen_Query_HalogenM.monadStateHalogenM)(_bm(Data_Profunctor_Strong.strongFn))(edit_bm))(function () {\n                                      return Control_Bind.bind(Halogen_Query_HalogenM.bindHalogenM)(Effect_Class.liftEffect(Halogen_Query_HalogenM.monadEffectHalogenM(Effect_Aff.monadEffectAff))(Util[\"_curQuerystring\"]))(function (qs) {\n                                          return Control_Bind.bind(Halogen_Query_HalogenM.bindHalogenM)(Effect_Class.liftEffect(Halogen_Query_HalogenM.monadEffectHalogenM(Effect_Aff.monadEffectAff))(Util[\"_doc\"]))(function (doc) {\n                                              return Control_Bind.bind(Halogen_Query_HalogenM.bindHalogenM)(Effect_Class.liftEffect(Halogen_Query_HalogenM.monadEffectHalogenM(Effect_Aff.monadEffectAff))(Web_HTML_HTMLDocument.referrer(doc)))(function (ref) {\n                                                  return Control_Bind.bind(Halogen_Query_HalogenM.bindHalogenM)(Effect_Class.liftEffect(Halogen_Query_HalogenM.monadEffectHalogenM(Effect_Aff.monadEffectAff))(Util[\"_loc\"]))(function (loc) {\n                                                      return Control_Bind.bind(Halogen_Query_HalogenM.bindHalogenM)(Effect_Class.liftEffect(Halogen_Query_HalogenM.monadEffectHalogenM(Effect_Aff.monadEffectAff))(Web_HTML_Location.origin(loc)))(function (org) {\n                                                          var v2 = Util[\"_lookupQueryStringValue\"](qs)(\"next\");\n                                                          if (v2 instanceof Data_Maybe.Just && v2.value0 === \"closeWindow\") {\n                                                              return Effect_Class.liftEffect(Halogen_Query_HalogenM.monadEffectHalogenM(Effect_Aff.monadEffectAff))(Control_Bind.bindFlipped(Effect.bindEffect)(Globals.closeWindow)(Web_HTML.window));\n                                                          };\n                                                          if (v2 instanceof Data_Maybe.Just && v2.value0 === \"back\") {\n                                                              return Effect_Class.liftEffect(Halogen_Query_HalogenM.monadEffectHalogenM(Effect_Aff.monadEffectAff))((function () {\n                                                                  var v3 = Data_String_CodeUnits.stripPrefix(org)(ref);\n                                                                  if (v3 instanceof Data_Maybe.Just) {\n                                                                      return Web_HTML_Location.setHref(ref)(loc);\n                                                                  };\n                                                                  if (v3 instanceof Data_Maybe.Nothing) {\n                                                                      return Web_HTML_Location.setHref(org)(loc);\n                                                                  };\n                                                                  throw new Error(\"Failed pattern match at Component.Add (line 213, column 13 - line 215, column 41): \" + [ v3.constructor.name ]);\n                                                              })());\n                                                          };\n                                                          return Effect_Class.liftEffect(Halogen_Query_HalogenM.monadEffectHalogenM(Effect_Aff.monadEffectAff))(Control_Bind.bindFlipped(Effect.bindEffect)(Globals.closeWindow)(Web_HTML.window));\n                                                      });\n                                                  });\n                                              });\n                                          });\n                                      });\n                                  });\n                              };\n                              if (v1 instanceof Data_Either.Right) {\n                                  return Control_Bind.discard(Control_Bind.discardUnit)(Halogen_Query_HalogenM.bindHalogenM)(Data_Lens_Setter.assign(Halogen_Query_HalogenM.monadStateHalogenM)(_apiError(Data_Profunctor_Strong.strongFn))(new Data_Maybe.Just(v1.value0.body)))(function () {\n                                      return Effect_Class.liftEffect(Halogen_Query_HalogenM.monadEffectHalogenM(Effect_Aff.monadEffectAff))(Effect_Console.log(v1.value0.body));\n                                  });\n                              };\n                              throw new Error(\"Failed pattern match at Component.Add (line 199, column 42 - line 219, column 36): \" + [ v1.constructor.name ]);\n                          });\n                      });\n                  });\n              });\n          };\n          throw new Error(\"Failed pattern match at Component.Add (line 168, column 3 - line 168, column 69): \" + [ v.constructor.name ]);\n      };\n      return Halogen_Component.mkComponent({\n          initialState: Data_Function[\"const\"](mkState(b$prime)),\n          render: render,\n          \"eval\": Halogen_Component.mkEval({\n              handleAction: handleAction,\n              handleQuery: Halogen_Component.defaultEval.handleQuery,\n              receive: Halogen_Component.defaultEval.receive,\n              initialize: Halogen_Component.defaultEval.initialize,\n              finalize: Halogen_Component.defaultEval.finalize\n          })\n      });\n  };\n  exports[\"addbmark\"] = addbmark;\n})(PS);\n(function(exports) {\n  // use at your own risk!\n  exports.unsafeSetInnerHTML = function(element) {\n    return function(html) {\n      return function() {\n        element.innerHTML = html;\n      };\n    };\n  };\n})(PS[\"Component.RawHtml\"] = PS[\"Component.RawHtml\"] || {});\n(function(exports) {\n  \"use strict\";\n\n  exports._read = function (nothing, just, value) {\n    var tag = Object.prototype.toString.call(value);\n    if (tag.indexOf(\"[object HTML\") === 0 && tag.indexOf(\"Element]\") === tag.length - 8) {\n      return just(value);\n    } else {\n      return nothing;\n    }\n  };\n})(PS[\"Web.HTML.HTMLElement\"] = PS[\"Web.HTML.HTMLElement\"] || {});\n(function($PS) {\n  // Generated by purs version 0.14.7\n  \"use strict\";\n  $PS[\"Web.HTML.HTMLElement\"] = $PS[\"Web.HTML.HTMLElement\"] || {};\n  var exports = $PS[\"Web.HTML.HTMLElement\"];\n  var $foreign = $PS[\"Web.HTML.HTMLElement\"];\n  var Data_Maybe = $PS[\"Data.Maybe\"];\n  var Unsafe_Coerce = $PS[\"Unsafe.Coerce\"];                   \n  var toNode = Unsafe_Coerce.unsafeCoerce;       \n  var toElement = Unsafe_Coerce.unsafeCoerce;\n  var fromElement = function (x) {\n      return $foreign[\"_read\"](Data_Maybe.Nothing.value, Data_Maybe.Just.create, x);\n  };\n  exports[\"fromElement\"] = fromElement;\n  exports[\"toElement\"] = toElement;\n  exports[\"toNode\"] = toNode;\n})(PS);\n(function($PS) {\n  // Generated by purs version 0.14.7\n  \"use strict\";\n  $PS[\"Halogen.Query\"] = $PS[\"Halogen.Query\"] || {};\n  var exports = $PS[\"Halogen.Query\"];\n  var Control_Bind = $PS[\"Control.Bind\"];\n  var Data_Functor = $PS[\"Data.Functor\"];\n  var Data_Maybe = $PS[\"Data.Maybe\"];\n  var Halogen_Query_HalogenM = $PS[\"Halogen.Query.HalogenM\"];\n  var Web_HTML_HTMLElement = $PS[\"Web.HTML.HTMLElement\"];\n  var getHTMLElementRef = (function () {\n      var $9 = Data_Functor.map(Halogen_Query_HalogenM.functorHalogenM)(function (v) {\n          return Control_Bind.bindFlipped(Data_Maybe.bindMaybe)(Web_HTML_HTMLElement.fromElement)(v);\n      });\n      return function ($10) {\n          return $9(Halogen_Query_HalogenM.getRef($10));\n      };\n  })();\n  exports[\"getHTMLElementRef\"] = getHTMLElementRef;\n})(PS);\n(function($PS) {\n  // Generated by purs version 0.14.7\n  \"use strict\";\n  $PS[\"Component.RawHtml\"] = $PS[\"Component.RawHtml\"] || {};\n  var exports = $PS[\"Component.RawHtml\"];\n  var $foreign = $PS[\"Component.RawHtml\"];\n  var Control_Applicative = $PS[\"Control.Applicative\"];\n  var Control_Bind = $PS[\"Control.Bind\"];\n  var Control_Monad_State_Class = $PS[\"Control.Monad.State.Class\"];\n  var Data_Foldable = $PS[\"Data.Foldable\"];\n  var Data_Maybe = $PS[\"Data.Maybe\"];\n  var Data_Monoid = $PS[\"Data.Monoid\"];\n  var Data_Unit = $PS[\"Data.Unit\"];\n  var Effect = $PS[\"Effect\"];\n  var Effect_Aff = $PS[\"Effect.Aff\"];\n  var Effect_Aff_Class = $PS[\"Effect.Aff.Class\"];\n  var Effect_Class = $PS[\"Effect.Class\"];\n  var Halogen_Component = $PS[\"Halogen.Component\"];\n  var Halogen_HTML_Elements = $PS[\"Halogen.HTML.Elements\"];\n  var Halogen_HTML_Properties = $PS[\"Halogen.HTML.Properties\"];\n  var Halogen_Query = $PS[\"Halogen.Query\"];\n  var Halogen_Query_HalogenM = $PS[\"Halogen.Query.HalogenM\"];                \n  var SetInnerHTML = (function () {\n      function SetInnerHTML() {\n\n      };\n      SetInnerHTML.value = new SetInnerHTML();\n      return SetInnerHTML;\n  })();\n  var Receive = (function () {\n      function Receive(value0) {\n          this.value0 = value0;\n      };\n      Receive.create = function (value0) {\n          return new Receive(value0);\n      };\n      return Receive;\n  })();\n  var mkComponent = function (toRawHTML) {\n      var render = function (state) {\n          return Halogen_HTML_Elements.div([ Halogen_HTML_Properties.ref(state.elRef) ])([  ]);\n      };\n      var handleAction = function (v) {\n          if (v instanceof SetInnerHTML) {\n              return Control_Bind.bind(Halogen_Query_HalogenM.bindHalogenM)(Control_Monad_State_Class.get(Halogen_Query_HalogenM.monadStateHalogenM))(function (v1) {\n                  return Control_Bind.bind(Halogen_Query_HalogenM.bindHalogenM)(Halogen_Query.getHTMLElementRef(v1.elRef))(function (mel) {\n                      return Control_Bind.discard(Control_Bind.discardUnit)(Halogen_Query_HalogenM.bindHalogenM)(Data_Foldable.for_(Halogen_Query_HalogenM.applicativeHalogenM)(Data_Foldable.foldableMaybe)(mel)(function (el) {\n                          return Control_Bind.bind(Halogen_Query_HalogenM.bindHalogenM)(Control_Monad_State_Class.get(Halogen_Query_HalogenM.monadStateHalogenM))(function (v2) {\n                              return Effect_Aff_Class.liftAff(Halogen_Query_HalogenM.monadAffHalogenM(Effect_Aff_Class.monadAffAff))(Effect_Aff.forkAff(Effect_Aff.makeAff(function (v3) {\n                                  return function __do() {\n                                      Effect_Class.liftEffect(Effect_Class.monadEffectEffect)($foreign.unsafeSetInnerHTML(el)(toRawHTML(v2.inputval)))();\n                                      return Data_Monoid.mempty(Effect.monoidEffect(Effect_Aff.monoidCanceler))();\n                                  };\n                              })));\n                          });\n                      }))(function () {\n                          return Control_Applicative.pure(Halogen_Query_HalogenM.applicativeHalogenM)(Data_Unit.unit);\n                      });\n                  });\n              });\n          };\n          if (v instanceof Receive) {\n              return Control_Bind.discard(Control_Bind.discardUnit)(Halogen_Query_HalogenM.bindHalogenM)(Control_Monad_State_Class.modify_(Halogen_Query_HalogenM.monadStateHalogenM)(function (v1) {\n                  var $11 = {};\n                  for (var $12 in v1) {\n                      if ({}.hasOwnProperty.call(v1, $12)) {\n                          $11[$12] = v1[$12];\n                      };\n                  };\n                  $11.inputval = v.value0;\n                  return $11;\n              }))(function () {\n                  return handleAction(SetInnerHTML.value);\n              });\n          };\n          throw new Error(\"Failed pattern match at Component.RawHtml (line 51, column 18 - line 64, column 34): \" + [ v.constructor.name ]);\n      };\n      return Halogen_Component.mkComponent({\n          initialState: function (inputval) {\n              return {\n                  elRef: \"inputval\",\n                  inputval: inputval\n              };\n          },\n          render: render,\n          \"eval\": Halogen_Component.mkEval({\n              handleAction: handleAction,\n              handleQuery: Halogen_Component.defaultEval.handleQuery,\n              receive: function ($15) {\n                  return Data_Maybe.Just.create(Receive.create($15));\n              },\n              initialize: new Data_Maybe.Just(SetInnerHTML.value),\n              finalize: Halogen_Component.defaultEval.finalize\n          })\n      });\n  };\n  exports[\"mkComponent\"] = mkComponent;\n})(PS);\n(function(exports) {\n  \n  var marked =require(\"marked\");\n  var DOMPurify =require(\"dompurify\"); \n\n  marked.setOptions({\n    pedantic: false,\n    gfm: true\n  });\n\n  exports.markedImpl = function(str) {\n    if (!str) return \"\";\n    return DOMPurify.sanitize(marked(str));\n  };\n})(PS[\"Foreign.Marked\"] = PS[\"Foreign.Marked\"] || {});\n(function($PS) {\n  // Generated by purs version 0.14.7\n  \"use strict\";\n  $PS[\"Foreign.Marked\"] = $PS[\"Foreign.Marked\"] || {};\n  var exports = $PS[\"Foreign.Marked\"];\n  var $foreign = $PS[\"Foreign.Marked\"];\n  var Globals = $PS[\"Globals\"];                \n  var marked = function ($0) {\n      return Globals.RawHTML($foreign.markedImpl($0));\n  };\n  exports[\"marked\"] = marked;\n})(PS);\n(function($PS) {\n  // Generated by purs version 0.14.7\n  \"use strict\";\n  $PS[\"Component.Markdown\"] = $PS[\"Component.Markdown\"] || {};\n  var exports = $PS[\"Component.Markdown\"];\n  var Component_RawHtml = $PS[\"Component.RawHtml\"];\n  var Foreign_Marked = $PS[\"Foreign.Marked\"];                \n  var component = Component_RawHtml.mkComponent(Foreign_Marked.marked);\n  exports[\"component\"] = component;\n})(PS);\n(function($PS) {\n  // Generated by purs version 0.14.7\n  \"use strict\";\n  $PS[\"Data.Void\"] = $PS[\"Data.Void\"] || {};\n  var exports = $PS[\"Data.Void\"];\n  var absurd = function (a) {\n      var spin = function ($copy_v) {\n          var $tco_result;\n          function $tco_loop(v) {\n              $copy_v = v;\n              return;\n          };\n          while (!false) {\n              $tco_result = $tco_loop($copy_v);\n          };\n          return $tco_result;\n      };\n      return spin(a);\n  };\n  exports[\"absurd\"] = absurd;\n})(PS);\n(function($PS) {\n  // Generated by purs version 0.14.7\n  \"use strict\";\n  $PS[\"Effect.Class.Console\"] = $PS[\"Effect.Class.Console\"] || {};\n  var exports = $PS[\"Effect.Class.Console\"];\n  var Effect_Class = $PS[\"Effect.Class\"];\n  var Effect_Console = $PS[\"Effect.Console\"];\n  var log = function (dictMonadEffect) {\n      var $30 = Effect_Class.liftEffect(dictMonadEffect);\n      return function ($31) {\n          return $30(Effect_Console.log($31));\n      };\n  };\n  exports[\"log\"] = log;\n})(PS);\n(function($PS) {\n  // Generated by purs version 0.14.7\n  \"use strict\";\n  $PS[\"Halogen.HTML\"] = $PS[\"Halogen.HTML\"] || {};\n  var exports = $PS[\"Halogen.HTML\"];\n  var Data_Maybe = $PS[\"Data.Maybe\"];\n  var Halogen_Component = $PS[\"Halogen.Component\"];\n  var Halogen_HTML_Core = $PS[\"Halogen.HTML.Core\"];\n  var slot = function () {\n      return function (dictIsSymbol) {\n          return function (dictOrd) {\n              return function (label) {\n                  return function (p) {\n                      return function (component) {\n                          return function (input) {\n                              return function (outputQuery) {\n                                  return Halogen_HTML_Core.widget(new Halogen_Component.ComponentSlot(Halogen_Component.componentSlot()(dictIsSymbol)(dictOrd)(label)(p)(component)(input)(function ($4) {\n                                      return Data_Maybe.Just.create(outputQuery($4));\n                                  })));\n                              };\n                          };\n                      };\n                  };\n              };\n          };\n      };\n  };\n  exports[\"slot\"] = slot;\n})(PS);\n(function($PS) {\n  // Generated by purs version 0.14.7\n  \"use strict\";\n  $PS[\"Component.BMark\"] = $PS[\"Component.BMark\"] || {};\n  var exports = $PS[\"Component.BMark\"];\n  var Affjax = $PS[\"Affjax\"];\n  var App = $PS[\"App\"];\n  var Component_Markdown = $PS[\"Component.Markdown\"];\n  var Control_Applicative = $PS[\"Control.Applicative\"];\n  var Control_Bind = $PS[\"Control.Bind\"];\n  var Control_Monad_State_Class = $PS[\"Control.Monad.State.Class\"];\n  var DOM_HTML_Indexed_ButtonType = $PS[\"DOM.HTML.Indexed.ButtonType\"];\n  var DOM_HTML_Indexed_InputType = $PS[\"DOM.HTML.Indexed.InputType\"];\n  var Data_Either = $PS[\"Data.Either\"];\n  var Data_Function = $PS[\"Data.Function\"];\n  var Data_Functor = $PS[\"Data.Functor\"];\n  var Data_Lens_Getter = $PS[\"Data.Lens.Getter\"];\n  var Data_Lens_Internal_Forget = $PS[\"Data.Lens.Internal.Forget\"];\n  var Data_Lens_Lens = $PS[\"Data.Lens.Lens\"];\n  var Data_Lens_Setter = $PS[\"Data.Lens.Setter\"];\n  var Data_Maybe = $PS[\"Data.Maybe\"];\n  var Data_Monoid = $PS[\"Data.Monoid\"];\n  var Data_Nullable = $PS[\"Data.Nullable\"];\n  var Data_Ord = $PS[\"Data.Ord\"];\n  var Data_Profunctor_Strong = $PS[\"Data.Profunctor.Strong\"];\n  var Data_Show = $PS[\"Data.Show\"];\n  var Data_String_CodePoints = $PS[\"Data.String.CodePoints\"];\n  var Data_String_Common = $PS[\"Data.String.Common\"];\n  var Data_Unit = $PS[\"Data.Unit\"];\n  var Data_Void = $PS[\"Data.Void\"];\n  var Effect = $PS[\"Effect\"];\n  var Effect_Aff = $PS[\"Effect.Aff\"];\n  var Effect_Aff_Class = $PS[\"Effect.Aff.Class\"];\n  var Effect_Class = $PS[\"Effect.Class\"];\n  var Effect_Class_Console = $PS[\"Effect.Class.Console\"];\n  var Globals = $PS[\"Globals\"];\n  var Halogen_Component = $PS[\"Halogen.Component\"];\n  var Halogen_HTML = $PS[\"Halogen.HTML\"];\n  var Halogen_HTML_Core = $PS[\"Halogen.HTML.Core\"];\n  var Halogen_HTML_Elements = $PS[\"Halogen.HTML.Elements\"];\n  var Halogen_HTML_Events = $PS[\"Halogen.HTML.Events\"];\n  var Halogen_HTML_Properties = $PS[\"Halogen.HTML.Properties\"];\n  var Halogen_Query_HalogenM = $PS[\"Halogen.Query.HalogenM\"];\n  var Type_Proxy = $PS[\"Type.Proxy\"];\n  var Util = $PS[\"Util\"];\n  var Web_Event_Event = $PS[\"Web.Event.Event\"];                \n  var Eurl = (function () {\n      function Eurl(value0) {\n          this.value0 = value0;\n      };\n      Eurl.create = function (value0) {\n          return new Eurl(value0);\n      };\n      return Eurl;\n  })();\n  var Etitle = (function () {\n      function Etitle(value0) {\n          this.value0 = value0;\n      };\n      Etitle.create = function (value0) {\n          return new Etitle(value0);\n      };\n      return Etitle;\n  })();\n  var Edescription = (function () {\n      function Edescription(value0) {\n          this.value0 = value0;\n      };\n      Edescription.create = function (value0) {\n          return new Edescription(value0);\n      };\n      return Edescription;\n  })();\n  var Etags = (function () {\n      function Etags(value0) {\n          this.value0 = value0;\n      };\n      Etags.create = function (value0) {\n          return new Etags(value0);\n      };\n      return Etags;\n  })();\n  var Eprivate = (function () {\n      function Eprivate(value0) {\n          this.value0 = value0;\n      };\n      Eprivate.create = function (value0) {\n          return new Eprivate(value0);\n      };\n      return Eprivate;\n  })();\n  var Etoread = (function () {\n      function Etoread(value0) {\n          this.value0 = value0;\n      };\n      Etoread.create = function (value0) {\n          return new Etoread(value0);\n      };\n      return Etoread;\n  })();\n  var BNotifyRemove = (function () {\n      function BNotifyRemove() {\n\n      };\n      BNotifyRemove.value = new BNotifyRemove();\n      return BNotifyRemove;\n  })();\n  var BStar = (function () {\n      function BStar(value0) {\n          this.value0 = value0;\n      };\n      BStar.create = function (value0) {\n          return new BStar(value0);\n      };\n      return BStar;\n  })();\n  var BDeleteAsk = (function () {\n      function BDeleteAsk(value0) {\n          this.value0 = value0;\n      };\n      BDeleteAsk.create = function (value0) {\n          return new BDeleteAsk(value0);\n      };\n      return BDeleteAsk;\n  })();\n  var BLookupTitle = (function () {\n      function BLookupTitle() {\n\n      };\n      BLookupTitle.value = new BLookupTitle();\n      return BLookupTitle;\n  })();\n  var BDestroy = (function () {\n      function BDestroy() {\n\n      };\n      BDestroy.value = new BDestroy();\n      return BDestroy;\n  })();\n  var BEdit = (function () {\n      function BEdit(value0) {\n          this.value0 = value0;\n      };\n      BEdit.create = function (value0) {\n          return new BEdit(value0);\n      };\n      return BEdit;\n  })();\n  var BEditField = (function () {\n      function BEditField(value0) {\n          this.value0 = value0;\n      };\n      BEditField.create = function (value0) {\n          return new BEditField(value0);\n      };\n      return BEditField;\n  })();\n  var BEditSubmit = (function () {\n      function BEditSubmit(value0) {\n          this.value0 = value0;\n      };\n      BEditSubmit.create = function (value0) {\n          return new BEditSubmit(value0);\n      };\n      return BEditSubmit;\n  })();\n  var BMarkRead = (function () {\n      function BMarkRead() {\n\n      };\n      BMarkRead.value = new BMarkRead();\n      return BMarkRead;\n  })();\n  var _markdown = Type_Proxy[\"Proxy\"].value;\n  var _edit_bm = function (dictStrong) {\n      return Data_Lens_Lens.lens(function (v) {\n          return v.edit_bm;\n      })(function (v) {\n          return function (v1) {\n              return {\n                  edit_bm: v1,\n                  apiError: v.apiError,\n                  bm: v.bm,\n                  deleteAsk: v.deleteAsk,\n                  edit: v.edit,\n                  loading: v.loading\n              };\n          };\n      })(dictStrong);\n  };\n  var _edit = function (dictStrong) {\n      return Data_Lens_Lens.lens(function (v) {\n          return v.edit;\n      })(function (v) {\n          return function (v1) {\n              return {\n                  edit: v1,\n                  apiError: v.apiError,\n                  bm: v.bm,\n                  deleteAsk: v.deleteAsk,\n                  edit_bm: v.edit_bm,\n                  loading: v.loading\n              };\n          };\n      })(dictStrong);\n  };\n  var _bm = function (dictStrong) {\n      return Data_Lens_Lens.lens(function (v) {\n          return v.bm;\n      })(function (v) {\n          return function (v1) {\n              return {\n                  bm: v1,\n                  apiError: v.apiError,\n                  deleteAsk: v.deleteAsk,\n                  edit: v.edit,\n                  edit_bm: v.edit_bm,\n                  loading: v.loading\n              };\n          };\n      })(dictStrong);\n  };\n  var _apiError = function (dictStrong) {\n      return Data_Lens_Lens.lens(function (v) {\n          return v.apiError;\n      })(function (v) {\n          return function (v1) {\n              return {\n                  apiError: v1,\n                  bm: v.bm,\n                  deleteAsk: v.deleteAsk,\n                  edit: v.edit,\n                  edit_bm: v.edit_bm,\n                  loading: v.loading\n              };\n          };\n      })(dictStrong);\n  };\n  var bmark = function (b$prime) {\n      var tagid = function (bm) {\n          return Data_Show.show(Data_Show.showInt)(bm.bid) + \"_tags\";\n      };\n      var mkState = function (b) {\n          return {\n              bm: b,\n              edit_bm: b,\n              deleteAsk: false,\n              edit: false,\n              loading: false,\n              apiError: Data_Maybe.Nothing.value\n          };\n      };\n      var handleAction = function (v) {\n          if (v instanceof BStar) {\n              return Control_Bind.bind(Halogen_Query_HalogenM.bindHalogenM)(Data_Lens_Getter.use(Halogen_Query_HalogenM.monadStateHalogenM)(_bm(Data_Lens_Internal_Forget.strongForget)))(function (bm) {\n                  return Control_Bind.discard(Control_Bind.discardUnit)(Halogen_Query_HalogenM.bindHalogenM)(Effect_Aff_Class.liftAff(Halogen_Query_HalogenM.monadAffHalogenM(Effect_Aff_Class.monadAffAff))(App.toggleStar(bm.bid)((function () {\n                      if (v.value0) {\n                          return App.Star.value;\n                      };\n                      return App.UnStar.value;\n                  })())))(function () {\n                      return Control_Bind.discard(Control_Bind.discardUnit)(Halogen_Query_HalogenM.bindHalogenM)(Data_Lens_Setter.modifying(Halogen_Query_HalogenM.monadStateHalogenM)(_bm(Data_Profunctor_Strong.strongFn))(function (v1) {\n                          return {\n                              url: v1.url,\n                              title: v1.title,\n                              description: v1.description,\n                              tags: v1.tags,\n                              \"private\": v1[\"private\"],\n                              toread: v1.toread,\n                              bid: v1.bid,\n                              slug: v1.slug,\n                              selected: v.value0,\n                              time: v1.time,\n                              archiveUrl: v1.archiveUrl\n                          };\n                      }))(function () {\n                          return Data_Lens_Setter.modifying(Halogen_Query_HalogenM.monadStateHalogenM)(_edit_bm(Data_Profunctor_Strong.strongFn))(function (v1) {\n                              return {\n                                  url: v1.url,\n                                  title: v1.title,\n                                  description: v1.description,\n                                  tags: v1.tags,\n                                  \"private\": v1[\"private\"],\n                                  toread: v1.toread,\n                                  bid: v1.bid,\n                                  slug: v1.slug,\n                                  selected: v.value0,\n                                  time: v1.time,\n                                  archiveUrl: v1.archiveUrl\n                              };\n                          });\n                      });\n                  });\n              });\n          };\n          if (v instanceof BDeleteAsk) {\n              return Control_Monad_State_Class.modify_(Halogen_Query_HalogenM.monadStateHalogenM)(function (v1) {\n                  var $53 = {};\n                  for (var $54 in v1) {\n                      if ({}.hasOwnProperty.call(v1, $54)) {\n                          $53[$54] = v1[$54];\n                      };\n                  };\n                  $53.deleteAsk = v.value0;\n                  return $53;\n              });\n          };\n          if (v instanceof BDestroy) {\n              return Control_Bind.bind(Halogen_Query_HalogenM.bindHalogenM)(Data_Lens_Getter.use(Halogen_Query_HalogenM.monadStateHalogenM)(_bm(Data_Lens_Internal_Forget.strongForget)))(function (bm) {\n                  return Control_Bind.discard(Control_Bind.discardUnit)(Halogen_Query_HalogenM.bindHalogenM)(Data_Functor[\"void\"](Halogen_Query_HalogenM.functorHalogenM)(Effect_Aff_Class.liftAff(Halogen_Query_HalogenM.monadAffHalogenM(Effect_Aff_Class.monadAffAff))(App.destroy(bm.bid))))(function () {\n                      return Halogen_Query_HalogenM.raise(BNotifyRemove.value);\n                  });\n              });\n          };\n          if (v instanceof BMarkRead) {\n              return Control_Bind.bind(Halogen_Query_HalogenM.bindHalogenM)(Data_Lens_Getter.use(Halogen_Query_HalogenM.monadStateHalogenM)(_bm(Data_Lens_Internal_Forget.strongForget)))(function (bm) {\n                  return Control_Bind.discard(Control_Bind.discardUnit)(Halogen_Query_HalogenM.bindHalogenM)(Data_Functor[\"void\"](Halogen_Query_HalogenM.functorHalogenM)(Effect_Aff_Class.liftAff(Halogen_Query_HalogenM.monadAffHalogenM(Effect_Aff_Class.monadAffAff))(App.markRead(bm.bid))))(function () {\n                      return Data_Lens_Setter.modifying(Halogen_Query_HalogenM.monadStateHalogenM)(_bm(Data_Profunctor_Strong.strongFn))(function (v1) {\n                          return {\n                              url: v1.url,\n                              title: v1.title,\n                              description: v1.description,\n                              tags: v1.tags,\n                              \"private\": v1[\"private\"],\n                              toread: false,\n                              bid: v1.bid,\n                              slug: v1.slug,\n                              selected: v1.selected,\n                              time: v1.time,\n                              archiveUrl: v1.archiveUrl\n                          };\n                      });\n                  });\n              });\n          };\n          if (v instanceof BEdit) {\n              return Control_Bind.bind(Halogen_Query_HalogenM.bindHalogenM)(Data_Lens_Getter.use(Halogen_Query_HalogenM.monadStateHalogenM)(_bm(Data_Lens_Internal_Forget.strongForget)))(function (bm) {\n                  return Control_Bind.discard(Control_Bind.discardUnit)(Halogen_Query_HalogenM.bindHalogenM)(Data_Lens_Setter.assign(Halogen_Query_HalogenM.monadStateHalogenM)(_edit_bm(Data_Profunctor_Strong.strongFn))(bm))(function () {\n                      return Control_Bind.discard(Control_Bind.discardUnit)(Halogen_Query_HalogenM.bindHalogenM)(Data_Lens_Setter.assign(Halogen_Query_HalogenM.monadStateHalogenM)(_edit(Data_Profunctor_Strong.strongFn))(v.value0))(function () {\n                          return Control_Bind.discard(Control_Bind.discardUnit)(Halogen_Query_HalogenM.bindHalogenM)(Data_Lens_Setter.assign(Halogen_Query_HalogenM.monadStateHalogenM)(_apiError(Data_Profunctor_Strong.strongFn))(Data_Maybe.Nothing.value))(function () {\n                              return Effect_Class.liftEffect(Halogen_Query_HalogenM.monadEffectHalogenM(Effect_Aff.monadEffectAff))(Control_Applicative.when(Effect.applicativeEffect)(v.value0)(Globals.setFocus(tagid(bm))));\n                          });\n                      });\n                  });\n              });\n          };\n          if (v instanceof BEditField) {\n              return Data_Lens_Setter.modifying(Halogen_Query_HalogenM.monadStateHalogenM)(_edit_bm(Data_Profunctor_Strong.strongFn))((function () {\n                  if (v.value0 instanceof Eurl) {\n                      return function (v1) {\n                          return {\n                              url: v.value0.value0,\n                              title: v1.title,\n                              description: v1.description,\n                              tags: v1.tags,\n                              \"private\": v1[\"private\"],\n                              toread: v1.toread,\n                              bid: v1.bid,\n                              slug: v1.slug,\n                              selected: v1.selected,\n                              time: v1.time,\n                              archiveUrl: v1.archiveUrl\n                          };\n                      };\n                  };\n                  if (v.value0 instanceof Etitle) {\n                      return function (v1) {\n                          return {\n                              url: v1.url,\n                              title: v.value0.value0,\n                              description: v1.description,\n                              tags: v1.tags,\n                              \"private\": v1[\"private\"],\n                              toread: v1.toread,\n                              bid: v1.bid,\n                              slug: v1.slug,\n                              selected: v1.selected,\n                              time: v1.time,\n                              archiveUrl: v1.archiveUrl\n                          };\n                      };\n                  };\n                  if (v.value0 instanceof Edescription) {\n                      return function (v1) {\n                          return {\n                              url: v1.url,\n                              title: v1.title,\n                              description: v.value0.value0,\n                              tags: v1.tags,\n                              \"private\": v1[\"private\"],\n                              toread: v1.toread,\n                              bid: v1.bid,\n                              slug: v1.slug,\n                              selected: v1.selected,\n                              time: v1.time,\n                              archiveUrl: v1.archiveUrl\n                          };\n                      };\n                  };\n                  if (v.value0 instanceof Etags) {\n                      return function (v1) {\n                          return {\n                              url: v1.url,\n                              title: v1.title,\n                              description: v1.description,\n                              tags: v.value0.value0,\n                              \"private\": v1[\"private\"],\n                              toread: v1.toread,\n                              bid: v1.bid,\n                              slug: v1.slug,\n                              selected: v1.selected,\n                              time: v1.time,\n                              archiveUrl: v1.archiveUrl\n                          };\n                      };\n                  };\n                  if (v.value0 instanceof Eprivate) {\n                      return function (v1) {\n                          return {\n                              url: v1.url,\n                              title: v1.title,\n                              description: v1.description,\n                              tags: v1.tags,\n                              \"private\": v.value0.value0,\n                              toread: v1.toread,\n                              bid: v1.bid,\n                              slug: v1.slug,\n                              selected: v1.selected,\n                              time: v1.time,\n                              archiveUrl: v1.archiveUrl\n                          };\n                      };\n                  };\n                  if (v.value0 instanceof Etoread) {\n                      return function (v1) {\n                          return {\n                              url: v1.url,\n                              title: v1.title,\n                              description: v1.description,\n                              tags: v1.tags,\n                              \"private\": v1[\"private\"],\n                              toread: v.value0.value0,\n                              bid: v1.bid,\n                              slug: v1.slug,\n                              selected: v1.selected,\n                              time: v1.time,\n                              archiveUrl: v1.archiveUrl\n                          };\n                      };\n                  };\n                  throw new Error(\"Failed pattern match at Component.BMark (line 252, column 17 - line 258, column 36): \" + [ v.value0.constructor.name ]);\n              })());\n          };\n          if (v instanceof BLookupTitle) {\n              return Control_Bind.discard(Control_Bind.discardUnit)(Halogen_Query_HalogenM.bindHalogenM)(Control_Monad_State_Class.modify_(Halogen_Query_HalogenM.monadStateHalogenM)(function (v1) {\n                  var $66 = {};\n                  for (var $67 in v1) {\n                      if ({}.hasOwnProperty.call(v1, $67)) {\n                          $66[$67] = v1[$67];\n                      };\n                  };\n                  $66.loading = true;\n                  return $66;\n              }))(function () {\n                  return Control_Bind.bind(Halogen_Query_HalogenM.bindHalogenM)(Control_Monad_State_Class.gets(Halogen_Query_HalogenM.monadStateHalogenM)(function (v1) {\n                      return v1.edit_bm;\n                  }))(function (edit_bm) {\n                      return Control_Bind.bind(Halogen_Query_HalogenM.bindHalogenM)(Effect_Aff_Class.liftAff(Halogen_Query_HalogenM.monadAffHalogenM(Effect_Aff_Class.monadAffAff))(App.lookupTitle(edit_bm)))(function (mtitle) {\n                          return Control_Bind.discard(Control_Bind.discardUnit)(Halogen_Query_HalogenM.bindHalogenM)((function () {\n                              if (mtitle instanceof Data_Maybe.Just) {\n                                  return Data_Lens_Setter.modifying(Halogen_Query_HalogenM.monadStateHalogenM)(_edit_bm(Data_Profunctor_Strong.strongFn))(function (v1) {\n                                      return {\n                                          url: v1.url,\n                                          title: mtitle.value0,\n                                          description: v1.description,\n                                          tags: v1.tags,\n                                          \"private\": v1[\"private\"],\n                                          toread: v1.toread,\n                                          bid: v1.bid,\n                                          slug: v1.slug,\n                                          selected: v1.selected,\n                                          time: v1.time,\n                                          archiveUrl: v1.archiveUrl\n                                      };\n                                  });\n                              };\n                              if (mtitle instanceof Data_Maybe.Nothing) {\n                                  return Control_Applicative.pure(Halogen_Query_HalogenM.applicativeHalogenM)(Data_Unit.unit);\n                              };\n                              throw new Error(\"Failed pattern match at Component.BMark (line 265, column 5 - line 267, column 29): \" + [ mtitle.constructor.name ]);\n                          })())(function () {\n                              return Control_Monad_State_Class.modify_(Halogen_Query_HalogenM.monadStateHalogenM)(function (v1) {\n                                  var $71 = {};\n                                  for (var $72 in v1) {\n                                      if ({}.hasOwnProperty.call(v1, $72)) {\n                                          $71[$72] = v1[$72];\n                                      };\n                                  };\n                                  $71.loading = false;\n                                  return $71;\n                              });\n                          });\n                      });\n                  });\n              });\n          };\n          if (v instanceof BEditSubmit) {\n              return Control_Bind.discard(Control_Bind.discardUnit)(Halogen_Query_HalogenM.bindHalogenM)(Effect_Class.liftEffect(Halogen_Query_HalogenM.monadEffectHalogenM(Effect_Aff.monadEffectAff))(Web_Event_Event.preventDefault(v.value0)))(function () {\n                  return Control_Bind.bind(Halogen_Query_HalogenM.bindHalogenM)(Data_Lens_Getter.use(Halogen_Query_HalogenM.monadStateHalogenM)(_edit_bm(Data_Lens_Internal_Forget.strongForget)))(function (edit_bm) {\n                      return Control_Bind.discard(Control_Bind.discardUnit)(Halogen_Query_HalogenM.bindHalogenM)(Data_Lens_Setter.assign(Halogen_Query_HalogenM.monadStateHalogenM)(_apiError(Data_Profunctor_Strong.strongFn))(Data_Maybe.Nothing.value))(function () {\n                          var edit_bm$prime = {\n                              tags: Data_String_Common.replaceAll(\",\")(\" \")(edit_bm.tags),\n                              archiveUrl: edit_bm.archiveUrl,\n                              bid: edit_bm.bid,\n                              description: edit_bm.description,\n                              \"private\": edit_bm[\"private\"],\n                              selected: edit_bm.selected,\n                              slug: edit_bm.slug,\n                              time: edit_bm.time,\n                              title: edit_bm.title,\n                              toread: edit_bm.toread,\n                              url: edit_bm.url\n                          };\n                          return Control_Bind.bind(Halogen_Query_HalogenM.bindHalogenM)(Effect_Aff_Class.liftAff(Halogen_Query_HalogenM.monadAffHalogenM(Effect_Aff_Class.monadAffAff))(App.editBookmark(edit_bm$prime)))(function (v1) {\n                              if (v1 instanceof Data_Either.Left) {\n                                  return Control_Bind.discard(Control_Bind.discardUnit)(Halogen_Query_HalogenM.bindHalogenM)(Data_Lens_Setter.assign(Halogen_Query_HalogenM.monadStateHalogenM)(_apiError(Data_Profunctor_Strong.strongFn))(new Data_Maybe.Just(Affjax.printError(v1.value0))))(function () {\n                                      return Effect_Class.liftEffect(Halogen_Query_HalogenM.monadEffectHalogenM(Effect_Aff.monadEffectAff))(Effect_Class_Console.log(Effect_Class.monadEffectEffect)(Affjax.printError(v1.value0)));\n                                  });\n                              };\n                              if (v1 instanceof Data_Either.Right && (v1.value0.status >= 200 && v1.value0.status < 300)) {\n                                  return Control_Bind.discard(Control_Bind.discardUnit)(Halogen_Query_HalogenM.bindHalogenM)(Data_Lens_Setter.assign(Halogen_Query_HalogenM.monadStateHalogenM)(_bm(Data_Profunctor_Strong.strongFn))(edit_bm$prime))(function () {\n                                      return Data_Lens_Setter.assign(Halogen_Query_HalogenM.monadStateHalogenM)(_edit(Data_Profunctor_Strong.strongFn))(false);\n                                  });\n                              };\n                              if (v1 instanceof Data_Either.Right) {\n                                  return Control_Bind.discard(Control_Bind.discardUnit)(Halogen_Query_HalogenM.bindHalogenM)(Data_Lens_Setter.assign(Halogen_Query_HalogenM.monadStateHalogenM)(_apiError(Data_Profunctor_Strong.strongFn))(new Data_Maybe.Just(v1.value0.body)))(function () {\n                                      return Effect_Class.liftEffect(Halogen_Query_HalogenM.monadEffectHalogenM(Effect_Aff.monadEffectAff))(Effect_Class_Console.log(Effect_Class.monadEffectEffect)(v1.value0.body));\n                                  });\n                              };\n                              throw new Error(\"Failed pattern match at Component.BMark (line 276, column 43 - line 285, column 36): \" + [ v1.constructor.name ]);\n                          });\n                      });\n                  });\n              });\n          };\n          throw new Error(\"Failed pattern match at Component.BMark (line 215, column 3 - line 215, column 84): \" + [ v.constructor.name ]);\n      };\n      var app = Globals[\"app'\"](Data_Unit.unit);\n      var render = function (v) {\n          var star = function (v1) {\n              return Halogen_HTML_Elements.div([ Util.class_(\"star fl pointer\" + Data_Monoid.guard(Data_Monoid.monoidString)(v.bm.selected)(\" selected\")) ])([ Halogen_HTML_Elements.button([ Util.class_(\"moon-gray\"), Halogen_HTML_Events.onClick(function (v2) {\n                  return new BStar(!v.bm.selected);\n              }) ])([ Halogen_HTML_Core.text(\"\\u272d\") ]) ]);\n          };\n          var shdatetime = Data_String_CodePoints.take(16)(v.bm.time) + \"Z\";\n          var shdate = Globals.toLocaleDateString(v.bm.time);\n          var linkToFilterTag = function (tag) {\n              return Util.fromNullableStr(app.userR) + (\"/t:\" + Util.encodeTag(tag));\n          };\n          var linkToFilterSingle = function (slug) {\n              return Util.fromNullableStr(app.userR) + (\"/b:\" + slug);\n          };\n          var editField = function (f) {\n              return function ($86) {\n                  return BEditField.create(f($86));\n              };\n          };\n          var display = function (v1) {\n              return Halogen_HTML_Elements.div([ Util.class_(\"display\") ])([ Halogen_HTML_Elements.a([ Halogen_HTML_Properties.href(v.bm.url), Halogen_HTML_Properties.target(\"_blank\"), Util.class_(\"link f5 lh-title\" + Data_Monoid.guard(Data_Monoid.monoidString)(v.bm.toread)(\" unread\")) ])([ Halogen_HTML_Core.text((function () {\n                  var $81 = Data_String_Common[\"null\"](v.bm.title);\n                  if ($81) {\n                      return \"[no title]\";\n                  };\n                  return v.bm.title;\n              })()) ]), Halogen_HTML_Elements.br_, Halogen_HTML_Elements.a([ Halogen_HTML_Properties.href(v.bm.url), Util.class_(\"link f7 gray hover-blue\") ])([ Halogen_HTML_Core.text(v.bm.url) ]), Halogen_HTML_Elements.a([ Halogen_HTML_Properties.href(Data_Maybe.fromMaybe(\"http://archive.is/\" + v.bm.url)(Data_Nullable.toMaybe(v.bm.archiveUrl))), Util.class_(\"link f7 gray hover-blue ml2\" + Data_Monoid.guard(Data_Monoid.monoidString)(Data_Maybe.isJust(Data_Nullable.toMaybe(v.bm.archiveUrl)))(\" green\")), Halogen_HTML_Properties.target(\"_blank\"), Halogen_HTML_Properties.title(\"archive link\") ])([ (function () {\n                  var $82 = Data_Maybe.isJust(Data_Nullable.toMaybe(v.bm.archiveUrl));\n                  if ($82) {\n                      return Halogen_HTML_Core.text(\"\\u2611\");\n                  };\n                  return Halogen_HTML_Core.text(\"\\u2610\");\n              })() ]), Halogen_HTML_Elements.br_, Halogen_HTML_Elements.div([ Util.class_(\"description mt1 mid-gray\") ])([ Halogen_HTML.slot()({\n                  reflectSymbol: function () {\n                      return \"markdown\";\n                  }\n              })(Data_Ord.ordUnit)(_markdown)(Data_Unit.unit)(Component_Markdown.component)(v.bm.description)(Data_Void.absurd) ]), Halogen_HTML_Elements.div([ Util.class_(\"tags\") ])(Util.whenA(!Data_String_Common[\"null\"](v.bm.tags))(function (v2) {\n                  return Data_Functor.map(Data_Functor.functorArray)(function (tag) {\n                      return Halogen_HTML_Elements.a([ Util.class_(\"link tag mr1\" + Data_Monoid.guard(Data_Monoid.monoidString)(Data_String_CodePoints.take(1)(tag) === \".\")(\" private\")), Halogen_HTML_Properties.href(linkToFilterTag(tag)) ])([ Halogen_HTML_Core.text(tag) ]);\n                  })(Data_String_Common.split(\" \")(v.bm.tags));\n              })), Halogen_HTML_Elements.a([ Util.class_(\"link f7 dib gray w4\"), Halogen_HTML_Properties.href(linkToFilterSingle(v.bm.slug)), Halogen_HTML_Properties.title(shdatetime) ])([ Halogen_HTML_Core.text(shdate) ]), Util.whenH(app.dat.isowner)(function (v2) {\n                  return Halogen_HTML_Elements.div([ Util.class_(\"edit_links di\") ])([ Halogen_HTML_Elements.button([ Halogen_HTML_Properties.type_(Halogen_HTML_Core.isPropButtonType)(DOM_HTML_Indexed_ButtonType.ButtonButton.value), Halogen_HTML_Events.onClick(function (v3) {\n                      return new BEdit(true);\n                  }), Util.class_(\"edit light-silver hover-blue\") ])([ Halogen_HTML_Core.text(\"edit\\xa0\\xa0\") ]), Halogen_HTML_Elements.div([ Util.class_(\"delete_link di\") ])([ Halogen_HTML_Elements.button([ Halogen_HTML_Properties.type_(Halogen_HTML_Core.isPropButtonType)(DOM_HTML_Indexed_ButtonType.ButtonButton.value), Halogen_HTML_Events.onClick(function (v3) {\n                      return new BDeleteAsk(true);\n                  }), Util.class_(\"delete light-silver hover-blue\" + Data_Monoid.guard(Data_Monoid.monoidString)(v.deleteAsk)(\" dn\")) ])([ Halogen_HTML_Core.text(\"delete\") ]), Halogen_HTML_Elements.span([ Util.class_(\"confirm red\" + Data_Monoid.guard(Data_Monoid.monoidString)(!v.deleteAsk)(\" dn\")) ])([ Halogen_HTML_Elements.button([ Halogen_HTML_Properties.type_(Halogen_HTML_Core.isPropButtonType)(DOM_HTML_Indexed_ButtonType.ButtonButton.value), Halogen_HTML_Events.onClick(function (v3) {\n                      return new BDeleteAsk(false);\n                  }) ])([ Halogen_HTML_Core.text(\"cancel\\xa0/\\xa0\") ]), Halogen_HTML_Elements.button([ Halogen_HTML_Properties.type_(Halogen_HTML_Core.isPropButtonType)(DOM_HTML_Indexed_ButtonType.ButtonButton.value), Halogen_HTML_Events.onClick(function (v3) {\n                      return BDestroy.value;\n                  }), Util.class_(\"red\") ])([ Halogen_HTML_Core.text(\"destroy\") ]) ]) ]) ]);\n              }), Util.whenH(app.dat.isowner)(function (v2) {\n                  return Halogen_HTML_Elements.div([ Util.class_(\"read di\") ])(Data_Monoid.guard(Data_Monoid.monoidArray)(v.bm.toread)([ Halogen_HTML_Core.text(\"\\xa0\\xa0\"), Halogen_HTML_Elements.button([ Halogen_HTML_Events.onClick(function (v3) {\n                      return BMarkRead.value;\n                  }), Util.class_(\"mark_read\") ])([ Halogen_HTML_Core.text(\"mark as read\") ]) ]));\n              }) ]);\n          };\n          var alert_notification = function (alert_text) {\n              return function (v1) {\n                  return Halogen_HTML_Elements.div([ Util.class_(\"alert alert-err\") ])([ Halogen_HTML_Core.text(alert_text) ]);\n              };\n          };\n          var display_edit = function (v1) {\n              return Halogen_HTML_Elements.div([ Util.class_(\"edit_bookmark_form pa2 pt0 bg-white\") ])([ Util.whenH(Data_Maybe.isJust(v.apiError))(alert_notification(Data_Maybe.fromMaybe(\"\")(v.apiError))), Halogen_HTML_Elements.form([ Halogen_HTML_Events.onSubmit(BEditSubmit.create) ])([ Halogen_HTML_Elements.div_([ Halogen_HTML_Core.text(\"url\") ]), Halogen_HTML_Elements.input([ Halogen_HTML_Properties.type_(Halogen_HTML_Core.isPropInputType)(DOM_HTML_Indexed_InputType.InputUrl.value), Util.class_(\"url w-100 mb2 pt1 edit_form_input\"), Halogen_HTML_Properties.required(true), Halogen_HTML_Properties.name(\"url\"), Halogen_HTML_Properties.value(v.edit_bm.url), Halogen_HTML_Events.onValueChange(editField(Eurl.create)) ]), Halogen_HTML_Elements.div_([ Halogen_HTML_Core.text(\"title\") ]), Halogen_HTML_Elements.div([ Util.class_(\"flex\") ])([ Halogen_HTML_Elements.input([ Halogen_HTML_Properties.type_(Halogen_HTML_Core.isPropInputType)(DOM_HTML_Indexed_InputType.InputText.value), Util.class_(\"title w-100 mb2 pt1 edit_form_input\"), Halogen_HTML_Properties.name(\"title\"), Halogen_HTML_Properties.value(v.edit_bm.title), Halogen_HTML_Events.onValueChange(editField(Etitle.create)) ]), Halogen_HTML_Elements.button([ Halogen_HTML_Properties.disabled(v.loading), Halogen_HTML_Properties.type_(Halogen_HTML_Core.isPropButtonType)(DOM_HTML_Indexed_ButtonType.ButtonButton.value), Halogen_HTML_Events.onClick(function (v2) {\n                  return BLookupTitle.value;\n              }), Util.class_(\"ml1 pa1 mb2 dark-gray ba b--moon-gray bg-near-white pointer rdim f7 \" + Data_Monoid.guard(Data_Monoid.monoidString)(v.loading)(\"bg-light-silver\")) ])([ Halogen_HTML_Core.text(\"fetch\") ]) ]), Halogen_HTML_Elements.div_([ Halogen_HTML_Core.text(\"description\") ]), Halogen_HTML_Elements.textarea([ Util.class_(\"description w-100 mb1 pt1 edit_form_input\"), Halogen_HTML_Properties.name(\"description\"), Halogen_HTML_Properties.rows(5), Halogen_HTML_Properties.value(v.edit_bm.description), Halogen_HTML_Events.onValueChange(editField(Edescription.create)) ]), Halogen_HTML_Elements.div([ Halogen_HTML_Properties.id(\"tags_input_box\") ])([ Halogen_HTML_Elements.div_([ Halogen_HTML_Core.text(\"tags\") ]), Halogen_HTML_Elements.input([ Halogen_HTML_Properties.id(tagid(v.edit_bm)), Halogen_HTML_Properties.type_(Halogen_HTML_Core.isPropInputType)(DOM_HTML_Indexed_InputType.InputText.value), Util.class_(\"tags w-100 mb1 pt1 edit_form_input\"), Halogen_HTML_Properties.name(\"tags\"), Halogen_HTML_Properties.autocomplete(false), Util.attr(\"autocapitalize\")(\"off\"), Halogen_HTML_Properties.value(v.edit_bm.tags), Halogen_HTML_Events.onValueChange(editField(Etags.create)) ]) ]), Halogen_HTML_Elements.div([ Util.class_(\"edit_form_checkboxes mv3\") ])([ Halogen_HTML_Elements.input([ Halogen_HTML_Properties.type_(Halogen_HTML_Core.isPropInputType)(DOM_HTML_Indexed_InputType.InputCheckbox.value), Util.class_(\"private pointer\"), Halogen_HTML_Properties.id(\"edit_private\"), Halogen_HTML_Properties.name(\"private\"), Halogen_HTML_Properties.checked(v[\"edit_bm\"][\"private\"]), Halogen_HTML_Events.onChecked(editField(Eprivate.create)) ]), Halogen_HTML_Core.text(\" \"), Halogen_HTML_Elements.label([ Halogen_HTML_Properties[\"for\"](\"edit_private\"), Util.class_(\"mr2\") ])([ Halogen_HTML_Core.text(\"private\") ]), Halogen_HTML_Core.text(\" \"), Halogen_HTML_Elements.input([ Halogen_HTML_Properties.type_(Halogen_HTML_Core.isPropInputType)(DOM_HTML_Indexed_InputType.InputCheckbox.value), Util.class_(\"toread pointer\"), Halogen_HTML_Properties.id(\"edit_toread\"), Halogen_HTML_Properties.name(\"toread\"), Halogen_HTML_Properties.checked(v.edit_bm.toread), Halogen_HTML_Events.onChecked(editField(Etoread.create)) ]), Halogen_HTML_Core.text(\" \"), Halogen_HTML_Elements.label([ Halogen_HTML_Properties[\"for\"](\"edit_toread\") ])([ Halogen_HTML_Core.text(\"to-read\") ]) ]), Halogen_HTML_Elements.input([ Halogen_HTML_Properties.type_(Halogen_HTML_Core.isPropInputType)(DOM_HTML_Indexed_InputType.InputSubmit.value), Util.class_(\"mr1 pv1 ph2 dark-gray ba b--moon-gray bg-near-white pointer rdim\"), Halogen_HTML_Properties.value(\"save\") ]), Halogen_HTML_Core.text(\" \"), Halogen_HTML_Elements.input([ Halogen_HTML_Properties.type_(Halogen_HTML_Core.isPropInputType)(DOM_HTML_Indexed_InputType.InputReset.value), Util.class_(\"pv1 ph2 dark-gray ba b--moon-gray bg-near-white pointer rdim\"), Halogen_HTML_Properties.value(\"cancel\"), Halogen_HTML_Events.onClick(function (v2) {\n                  return new BEdit(false);\n              }) ]) ]) ]);\n          };\n          return Halogen_HTML_Elements.div([ Halogen_HTML_Properties.id(Data_Show.show(Data_Show.showInt)(v.bm.bid)), Util.class_(\"bookmark w-100 mw7 pa1 mb3\" + Data_Monoid.guard(Data_Monoid.monoidString)(v[\"bm\"][\"private\"])(\" private\")) ])([ Util.whenH(app.dat.isowner)(star), Util.ifElseH(v.edit)(display_edit)(display) ]);\n      };\n      return Halogen_Component.mkComponent({\n          initialState: Data_Function[\"const\"](mkState(b$prime)),\n          render: render,\n          \"eval\": Halogen_Component.mkEval({\n              handleAction: handleAction,\n              handleQuery: Halogen_Component.defaultEval.handleQuery,\n              receive: Halogen_Component.defaultEval.receive,\n              initialize: Halogen_Component.defaultEval.initialize,\n              finalize: Halogen_Component.defaultEval.finalize\n          })\n      });\n  };\n  exports[\"bmark\"] = bmark;\n})(PS);\n(function($PS) {\n  // Generated by purs version 0.14.7\n  \"use strict\";\n  $PS[\"Component.BList\"] = $PS[\"Component.BList\"] || {};\n  var exports = $PS[\"Component.BList\"];\n  var Component_BMark = $PS[\"Component.BMark\"];\n  var Control_Monad_State_Class = $PS[\"Control.Monad.State.Class\"];\n  var Data_Array = $PS[\"Data.Array\"];\n  var Data_Function = $PS[\"Data.Function\"];\n  var Data_Functor = $PS[\"Data.Functor\"];\n  var Data_Ord = $PS[\"Data.Ord\"];\n  var Data_Unit = $PS[\"Data.Unit\"];\n  var Halogen_Component = $PS[\"Halogen.Component\"];\n  var Halogen_HTML = $PS[\"Halogen.HTML\"];\n  var Halogen_HTML_Elements = $PS[\"Halogen.HTML.Elements\"];\n  var Halogen_Query_HalogenM = $PS[\"Halogen.Query.HalogenM\"];\n  var Type_Proxy = $PS[\"Type.Proxy\"];                \n  var HandleBMessage = (function () {\n      function HandleBMessage(value0, value1) {\n          this.value0 = value0;\n          this.value1 = value1;\n      };\n      HandleBMessage.create = function (value0) {\n          return function (value1) {\n              return new HandleBMessage(value0, value1);\n          };\n      };\n      return HandleBMessage;\n  })();\n  var _bookmark = Type_Proxy[\"Proxy\"].value;\n  var blist = function (st) {\n      var render = function (bms) {\n          return Halogen_HTML_Elements.div_(Data_Functor.map(Data_Functor.functorArray)(function (b) {\n              return Halogen_HTML.slot()({\n                  reflectSymbol: function () {\n                      return \"bookmark\";\n                  }\n              })(Data_Ord.ordInt)(_bookmark)(b.bid)(Component_BMark.bmark(b))(Data_Unit.unit)(HandleBMessage.create(b.bid));\n          })(bms));\n      };\n      var handleAction = function (v) {\n          return Control_Monad_State_Class.modify_(Halogen_Query_HalogenM.monadStateHalogenM)(Data_Array.filter(function (b) {\n              return b.bid !== v.value0;\n          }));\n      };\n      return Halogen_Component.mkComponent({\n          initialState: Data_Function[\"const\"](st),\n          render: render,\n          \"eval\": Halogen_Component.mkEval({\n              handleAction: handleAction,\n              handleQuery: Halogen_Component.defaultEval.handleQuery,\n              receive: Halogen_Component.defaultEval.receive,\n              initialize: Halogen_Component.defaultEval.initialize,\n              finalize: Halogen_Component.defaultEval.finalize\n          })\n      });\n  };\n  exports[\"blist\"] = blist;\n})(PS);\n(function($PS) {\n  // Generated by purs version 0.14.7\n  \"use strict\";\n  $PS[\"Component.NList\"] = $PS[\"Component.NList\"] || {};\n  var exports = $PS[\"Component.NList\"];\n  var Control_Applicative = $PS[\"Control.Applicative\"];\n  var Data_Array = $PS[\"Data.Array\"];\n  var Data_Function = $PS[\"Data.Function\"];\n  var Data_Functor = $PS[\"Data.Functor\"];\n  var Data_Maybe = $PS[\"Data.Maybe\"];\n  var Data_Monoid = $PS[\"Data.Monoid\"];\n  var Data_Show = $PS[\"Data.Show\"];\n  var Data_String_CodePoints = $PS[\"Data.String.CodePoints\"];\n  var Data_String_Common = $PS[\"Data.String.Common\"];\n  var Data_Tuple = $PS[\"Data.Tuple\"];\n  var Data_Unit = $PS[\"Data.Unit\"];\n  var Globals = $PS[\"Globals\"];\n  var Halogen_Component = $PS[\"Halogen.Component\"];\n  var Halogen_HTML_Core = $PS[\"Halogen.HTML.Core\"];\n  var Halogen_HTML_Elements = $PS[\"Halogen.HTML.Elements\"];\n  var Halogen_HTML_Properties = $PS[\"Halogen.HTML.Properties\"];\n  var Halogen_Query_HalogenM = $PS[\"Halogen.Query.HalogenM\"];\n  var Util = $PS[\"Util\"];\n  var nlist = function (st$prime) {\n      var toTextarea = function (input) {\n          return Data_Array.drop(1)(Data_Array.foldMap(Data_Monoid.monoidArray)(function (x) {\n              return [ Halogen_HTML_Elements.br_, Halogen_HTML_Core.text(x) ];\n          })(Data_String_Common.split(\"\\x0a\")(input)));\n      };\n      var mmoment = function (note) {\n          return Globals.mmoment8601(note.created);\n      };\n      var mkState = function (notes$prime) {\n          return {\n              notes: notes$prime,\n              cur: Data_Maybe.Nothing.value,\n              deleteAsk: false,\n              edit: false\n          };\n      };\n      var handleAction = function (v) {\n          return Control_Applicative.pure(Halogen_Query_HalogenM.applicativeHalogenM)(Data_Unit.unit);\n      };\n      var app = Globals[\"app'\"](Data_Unit.unit);\n      var linkToFilterSingle = function (slug) {\n          return Util.fromNullableStr(app.userR) + (\"/notes/\" + slug);\n      };\n      var render = function (v) {\n          var renderNote = function (note) {\n              return Halogen_HTML_Elements.div([ Halogen_HTML_Properties.id(Data_Show.show(Data_Show.showInt)(note.id)), Util.class_(\"note w-100 mw7 pa1 mb2\" + (function () {\n                  if (note.shared) {\n                      return \"\";\n                  };\n                  return \" private\";\n              })()) ])([ Halogen_HTML_Elements.div([ Util.class_(\"display\") ])([ Halogen_HTML_Elements.a([ Halogen_HTML_Properties.href(linkToFilterSingle(note.slug)), Util.class_(\"link f5 lh-title\") ])([ Halogen_HTML_Core.text((function () {\n                  var $6 = Data_String_Common[\"null\"](note.title);\n                  if ($6) {\n                      return \"[no title]\";\n                  };\n                  return note.title;\n              })()) ]), Halogen_HTML_Elements.br_, Halogen_HTML_Elements.div([ Util.class_(\"description mt1 mid-gray\") ])(toTextarea(Data_String_CodePoints.take(200)(note.text))), Halogen_HTML_Elements.a([ Util.class_(\"link f7 dib gray w4\"), Halogen_HTML_Properties.title(Data_Maybe.maybe(note.created)(Data_Tuple.snd)(mmoment(note))), Halogen_HTML_Properties.href(linkToFilterSingle(note.slug)) ])([ Halogen_HTML_Core.text(Data_Maybe.maybe(\"\\xa0\")(Data_Tuple.fst)(mmoment(note))) ]) ]) ]);\n          };\n          return Halogen_HTML_Elements.div_(Data_Functor.map(Data_Functor.functorArray)(renderNote)(v.notes));\n      };\n      return Halogen_Component.mkComponent({\n          initialState: Data_Function[\"const\"](mkState(st$prime)),\n          render: render,\n          \"eval\": Halogen_Component.mkEval({\n              handleAction: handleAction,\n              handleQuery: Halogen_Component.defaultEval.handleQuery,\n              receive: Halogen_Component.defaultEval.receive,\n              initialize: Halogen_Component.defaultEval.initialize,\n              finalize: Halogen_Component.defaultEval.finalize\n          })\n      });\n  };\n  exports[\"nlist\"] = nlist;\n})(PS);\n(function($PS) {\n  // Generated by purs version 0.14.7\n  \"use strict\";\n  $PS[\"Component.NNote\"] = $PS[\"Component.NNote\"] || {};\n  var exports = $PS[\"Component.NNote\"];\n  var Affjax = $PS[\"Affjax\"];\n  var App = $PS[\"App\"];\n  var Component_Markdown = $PS[\"Component.Markdown\"];\n  var Control_Applicative = $PS[\"Control.Applicative\"];\n  var Control_Bind = $PS[\"Control.Bind\"];\n  var Control_Monad = $PS[\"Control.Monad\"];\n  var Control_Monad_State_Class = $PS[\"Control.Monad.State.Class\"];\n  var DOM_HTML_Indexed_ButtonType = $PS[\"DOM.HTML.Indexed.ButtonType\"];\n  var DOM_HTML_Indexed_InputType = $PS[\"DOM.HTML.Indexed.InputType\"];\n  var Data_Array = $PS[\"Data.Array\"];\n  var Data_Either = $PS[\"Data.Either\"];\n  var Data_Function = $PS[\"Data.Function\"];\n  var Data_Functor = $PS[\"Data.Functor\"];\n  var Data_Lens_Getter = $PS[\"Data.Lens.Getter\"];\n  var Data_Lens_Internal_Forget = $PS[\"Data.Lens.Internal.Forget\"];\n  var Data_Lens_Lens = $PS[\"Data.Lens.Lens\"];\n  var Data_Lens_Setter = $PS[\"Data.Lens.Setter\"];\n  var Data_Maybe = $PS[\"Data.Maybe\"];\n  var Data_Monoid = $PS[\"Data.Monoid\"];\n  var Data_Ord = $PS[\"Data.Ord\"];\n  var Data_Profunctor_Strong = $PS[\"Data.Profunctor.Strong\"];\n  var Data_Show = $PS[\"Data.Show\"];\n  var Data_String_CodeUnits = $PS[\"Data.String.CodeUnits\"];\n  var Data_String_Common = $PS[\"Data.String.Common\"];\n  var Data_Tuple = $PS[\"Data.Tuple\"];\n  var Data_Unit = $PS[\"Data.Unit\"];\n  var Data_Void = $PS[\"Data.Void\"];\n  var Effect = $PS[\"Effect\"];\n  var Effect_Aff = $PS[\"Effect.Aff\"];\n  var Effect_Aff_Class = $PS[\"Effect.Aff.Class\"];\n  var Effect_Class = $PS[\"Effect.Class\"];\n  var Effect_Console = $PS[\"Effect.Console\"];\n  var Globals = $PS[\"Globals\"];\n  var Halogen_Component = $PS[\"Halogen.Component\"];\n  var Halogen_HTML = $PS[\"Halogen.HTML\"];\n  var Halogen_HTML_Core = $PS[\"Halogen.HTML.Core\"];\n  var Halogen_HTML_Elements = $PS[\"Halogen.HTML.Elements\"];\n  var Halogen_HTML_Events = $PS[\"Halogen.HTML.Events\"];\n  var Halogen_HTML_Properties = $PS[\"Halogen.HTML.Properties\"];\n  var Halogen_Query_HalogenM = $PS[\"Halogen.Query.HalogenM\"];\n  var Type_Proxy = $PS[\"Type.Proxy\"];\n  var Util = $PS[\"Util\"];\n  var Web_Event_Event = $PS[\"Web.Event.Event\"];\n  var Web_HTML = $PS[\"Web.HTML\"];\n  var Web_HTML_HTMLDocument = $PS[\"Web.HTML.HTMLDocument\"];\n  var Web_HTML_Location = $PS[\"Web.HTML.Location\"];                \n  var Etitle = (function () {\n      function Etitle(value0) {\n          this.value0 = value0;\n      };\n      Etitle.create = function (value0) {\n          return new Etitle(value0);\n      };\n      return Etitle;\n  })();\n  var Etext = (function () {\n      function Etext(value0) {\n          this.value0 = value0;\n      };\n      Etext.create = function (value0) {\n          return new Etext(value0);\n      };\n      return Etext;\n  })();\n  var EisMarkdown = (function () {\n      function EisMarkdown(value0) {\n          this.value0 = value0;\n      };\n      EisMarkdown.create = function (value0) {\n          return new EisMarkdown(value0);\n      };\n      return EisMarkdown;\n  })();\n  var Eshared = (function () {\n      function Eshared(value0) {\n          this.value0 = value0;\n      };\n      Eshared.create = function (value0) {\n          return new Eshared(value0);\n      };\n      return Eshared;\n  })();\n  var NNop = (function () {\n      function NNop() {\n\n      };\n      NNop.value = new NNop();\n      return NNop;\n  })();\n  var NEditField = (function () {\n      function NEditField(value0) {\n          this.value0 = value0;\n      };\n      NEditField.create = function (value0) {\n          return new NEditField(value0);\n      };\n      return NEditField;\n  })();\n  var NEditSubmit = (function () {\n      function NEditSubmit(value0) {\n          this.value0 = value0;\n      };\n      NEditSubmit.create = function (value0) {\n          return new NEditSubmit(value0);\n      };\n      return NEditSubmit;\n  })();\n  var NEdit = (function () {\n      function NEdit(value0) {\n          this.value0 = value0;\n      };\n      NEdit.create = function (value0) {\n          return new NEdit(value0);\n      };\n      return NEdit;\n  })();\n  var NDeleteAsk = (function () {\n      function NDeleteAsk(value0) {\n          this.value0 = value0;\n      };\n      NDeleteAsk.create = function (value0) {\n          return new NDeleteAsk(value0);\n      };\n      return NDeleteAsk;\n  })();\n  var NDestroy = (function () {\n      function NDestroy() {\n\n      };\n      NDestroy.value = new NDestroy();\n      return NDestroy;\n  })();\n  var _note = function (dictStrong) {\n      return Data_Lens_Lens.lens(function (v) {\n          return v.note;\n      })(function (v) {\n          return function (v1) {\n              return {\n                  note: v1,\n                  apiError: v.apiError,\n                  deleteAsk: v.deleteAsk,\n                  destroyed: v.destroyed,\n                  edit: v.edit,\n                  edit_note: v.edit_note\n              };\n          };\n      })(dictStrong);\n  };\n  var _markdown = Type_Proxy[\"Proxy\"].value;\n  var _edit_note = function (dictStrong) {\n      return Data_Lens_Lens.lens(function (v) {\n          return v.edit_note;\n      })(function (v) {\n          return function (v1) {\n              return {\n                  edit_note: v1,\n                  apiError: v.apiError,\n                  deleteAsk: v.deleteAsk,\n                  destroyed: v.destroyed,\n                  edit: v.edit,\n                  note: v.note\n              };\n          };\n      })(dictStrong);\n  };\n  var _edit = function (dictStrong) {\n      return Data_Lens_Lens.lens(function (v) {\n          return v.edit;\n      })(function (v) {\n          return function (v1) {\n              return {\n                  edit: v1,\n                  apiError: v.apiError,\n                  deleteAsk: v.deleteAsk,\n                  destroyed: v.destroyed,\n                  edit_note: v.edit_note,\n                  note: v.note\n              };\n          };\n      })(dictStrong);\n  };\n  var _apiError = function (dictStrong) {\n      return Data_Lens_Lens.lens(function (v) {\n          return v.apiError;\n      })(function (v) {\n          return function (v1) {\n              return {\n                  apiError: v1,\n                  deleteAsk: v.deleteAsk,\n                  destroyed: v.destroyed,\n                  edit: v.edit,\n                  edit_note: v.edit_note,\n                  note: v.note\n              };\n          };\n      })(dictStrong);\n  };\n  var nnote = function (st$prime) {\n      var notetextid = function (note) {\n          return Data_Show.show(Data_Show.showInt)(note.id) + \"_text\";\n      };\n      var mkState = function (note$prime) {\n          return {\n              note: note$prime,\n              edit_note: note$prime,\n              deleteAsk: false,\n              edit: note$prime.id <= 0,\n              destroyed: false,\n              apiError: Data_Maybe.Nothing.value\n          };\n      };\n      var app = Globals[\"app'\"](Data_Unit.unit);\n      var handleAction = function (v) {\n          if (v instanceof NNop) {\n              return Control_Applicative.pure(Halogen_Query_HalogenM.applicativeHalogenM)(Data_Unit.unit);\n          };\n          if (v instanceof NEditField) {\n              return Data_Lens_Setter.modifying(Halogen_Query_HalogenM.monadStateHalogenM)(_edit_note(Data_Profunctor_Strong.strongFn))((function () {\n                  if (v.value0 instanceof Etitle) {\n                      return function (v1) {\n                          return {\n                              id: v1.id,\n                              slug: v1.slug,\n                              title: v.value0.value0,\n                              text: v1.text,\n                              length: v1.length,\n                              isMarkdown: v1.isMarkdown,\n                              shared: v1.shared,\n                              created: v1.created,\n                              updated: v1.updated\n                          };\n                      };\n                  };\n                  if (v.value0 instanceof Etext) {\n                      return function (v1) {\n                          return {\n                              id: v1.id,\n                              slug: v1.slug,\n                              title: v1.title,\n                              text: v.value0.value0,\n                              length: v1.length,\n                              isMarkdown: v1.isMarkdown,\n                              shared: v1.shared,\n                              created: v1.created,\n                              updated: v1.updated\n                          };\n                      };\n                  };\n                  if (v.value0 instanceof EisMarkdown) {\n                      return function (v1) {\n                          return {\n                              id: v1.id,\n                              slug: v1.slug,\n                              title: v1.title,\n                              text: v1.text,\n                              length: v1.length,\n                              isMarkdown: v.value0.value0,\n                              shared: v1.shared,\n                              created: v1.created,\n                              updated: v1.updated\n                          };\n                      };\n                  };\n                  if (v.value0 instanceof Eshared) {\n                      return function (v1) {\n                          return {\n                              id: v1.id,\n                              slug: v1.slug,\n                              title: v1.title,\n                              text: v1.text,\n                              length: v1.length,\n                              isMarkdown: v1.isMarkdown,\n                              shared: v.value0.value0,\n                              created: v1.created,\n                              updated: v1.updated\n                          };\n                      };\n                  };\n                  throw new Error(\"Failed pattern match at Component.NNote (line 195, column 19 - line 199, column 36): \" + [ v.value0.constructor.name ]);\n              })());\n          };\n          if (v instanceof NDeleteAsk) {\n              return Control_Monad_State_Class.modify_(Halogen_Query_HalogenM.monadStateHalogenM)(function (v1) {\n                  var $44 = {};\n                  for (var $45 in v1) {\n                      if ({}.hasOwnProperty.call(v1, $45)) {\n                          $44[$45] = v1[$45];\n                      };\n                  };\n                  $44.deleteAsk = v.value0;\n                  return $44;\n              });\n          };\n          if (v instanceof NDestroy) {\n              return Control_Bind.bind(Halogen_Query_HalogenM.bindHalogenM)(Data_Lens_Getter.use(Halogen_Query_HalogenM.monadStateHalogenM)(_note(Data_Lens_Internal_Forget.strongForget)))(function (note) {\n                  return Control_Bind.discard(Control_Bind.discardUnit)(Halogen_Query_HalogenM.bindHalogenM)(Data_Functor[\"void\"](Halogen_Query_HalogenM.functorHalogenM)(Effect_Aff_Class.liftAff(Halogen_Query_HalogenM.monadAffHalogenM(Effect_Aff_Class.monadAffAff))(App.destroyNote(note.id))))(function () {\n                      return Control_Monad_State_Class.modify_(Halogen_Query_HalogenM.monadStateHalogenM)(function (v1) {\n                          var $48 = {};\n                          for (var $49 in v1) {\n                              if ({}.hasOwnProperty.call(v1, $49)) {\n                                  $48[$49] = v1[$49];\n                              };\n                          };\n                          $48.destroyed = true;\n                          return $48;\n                      });\n                  });\n              });\n          };\n          if (v instanceof NEdit) {\n              return Control_Bind.bind(Halogen_Query_HalogenM.bindHalogenM)(Data_Lens_Getter.use(Halogen_Query_HalogenM.monadStateHalogenM)(_note(Data_Lens_Internal_Forget.strongForget)))(function (note) {\n                  return Control_Bind.discard(Control_Bind.discardUnit)(Halogen_Query_HalogenM.bindHalogenM)(Data_Lens_Setter.assign(Halogen_Query_HalogenM.monadStateHalogenM)(_edit_note(Data_Profunctor_Strong.strongFn))(note))(function () {\n                      return Control_Bind.discard(Control_Bind.discardUnit)(Halogen_Query_HalogenM.bindHalogenM)(Data_Lens_Setter.assign(Halogen_Query_HalogenM.monadStateHalogenM)(_edit(Data_Profunctor_Strong.strongFn))(v.value0))(function () {\n                          return Control_Bind.bind(Halogen_Query_HalogenM.bindHalogenM)(Effect_Class.liftEffect(Halogen_Query_HalogenM.monadEffectHalogenM(Effect_Aff.monadEffectAff))(Util[\"_curQuerystring\"]))(function (qs) {\n                              var $51 = {\n                                  e: v.value0,\n                                  q: Util[\"_lookupQueryStringValue\"](qs)(\"next\")\n                              };\n                              if (!$51.e && ($51.q instanceof Data_Maybe.Just && $51.q.value0 === \"closeWindow\")) {\n                                  return Effect_Class.liftEffect(Halogen_Query_HalogenM.monadEffectHalogenM(Effect_Aff.monadEffectAff))(Control_Bind.bindFlipped(Effect.bindEffect)(Globals.closeWindow)(Web_HTML.window));\n                              };\n                              return Effect_Class.liftEffect(Halogen_Query_HalogenM.monadEffectHalogenM(Effect_Aff.monadEffectAff))(Control_Monad.whenM(Effect.monadEffect)(Control_Applicative.pure(Effect.applicativeEffect)(v.value0))(Globals.setFocus(notetextid(note))));\n                          });\n                      });\n                  });\n              });\n          };\n          if (v instanceof NEditSubmit) {\n              return Control_Bind.discard(Control_Bind.discardUnit)(Halogen_Query_HalogenM.bindHalogenM)(Effect_Class.liftEffect(Halogen_Query_HalogenM.monadEffectHalogenM(Effect_Aff.monadEffectAff))(Web_Event_Event.preventDefault(v.value0)))(function () {\n                  return Control_Bind.bind(Halogen_Query_HalogenM.bindHalogenM)(Data_Lens_Getter.use(Halogen_Query_HalogenM.monadStateHalogenM)(_edit_note(Data_Lens_Internal_Forget.strongForget)))(function (edit_note) {\n                      return Control_Bind.discard(Control_Bind.discardUnit)(Halogen_Query_HalogenM.bindHalogenM)(Data_Lens_Setter.assign(Halogen_Query_HalogenM.monadStateHalogenM)(_apiError(Data_Profunctor_Strong.strongFn))(Data_Maybe.Nothing.value))(function () {\n                          return Control_Bind.bind(Halogen_Query_HalogenM.bindHalogenM)(Effect_Aff_Class.liftAff(Halogen_Query_HalogenM.monadAffHalogenM(Effect_Aff_Class.monadAffAff))(App.editNote(edit_note)))(function (v1) {\n                              if (v1 instanceof Data_Either.Left) {\n                                  return Control_Bind.discard(Control_Bind.discardUnit)(Halogen_Query_HalogenM.bindHalogenM)(Data_Lens_Setter.assign(Halogen_Query_HalogenM.monadStateHalogenM)(_apiError(Data_Profunctor_Strong.strongFn))(new Data_Maybe.Just(Affjax.printError(v1.value0))))(function () {\n                                      return Effect_Class.liftEffect(Halogen_Query_HalogenM.monadEffectHalogenM(Effect_Aff.monadEffectAff))(Effect_Console.log(Affjax.printError(v1.value0)));\n                                  });\n                              };\n                              if (v1 instanceof Data_Either.Right && (v1.value0.status >= 200 && v1.value0.status < 300)) {\n                                  return Control_Bind.bind(Halogen_Query_HalogenM.bindHalogenM)(Effect_Class.liftEffect(Halogen_Query_HalogenM.monadEffectHalogenM(Effect_Aff.monadEffectAff))(Util[\"_curQuerystring\"]))(function (qs) {\n                                      return Control_Bind.bind(Halogen_Query_HalogenM.bindHalogenM)(Effect_Class.liftEffect(Halogen_Query_HalogenM.monadEffectHalogenM(Effect_Aff.monadEffectAff))(Util[\"_doc\"]))(function (doc) {\n                                          return Control_Bind.bind(Halogen_Query_HalogenM.bindHalogenM)(Effect_Class.liftEffect(Halogen_Query_HalogenM.monadEffectHalogenM(Effect_Aff.monadEffectAff))(Web_HTML_HTMLDocument.referrer(doc)))(function (ref) {\n                                              return Control_Bind.bind(Halogen_Query_HalogenM.bindHalogenM)(Effect_Class.liftEffect(Halogen_Query_HalogenM.monadEffectHalogenM(Effect_Aff.monadEffectAff))(Util[\"_loc\"]))(function (loc) {\n                                                  return Control_Bind.bind(Halogen_Query_HalogenM.bindHalogenM)(Effect_Class.liftEffect(Halogen_Query_HalogenM.monadEffectHalogenM(Effect_Aff.monadEffectAff))(Web_HTML_Location.origin(loc)))(function (org) {\n                                                      var v2 = Util[\"_lookupQueryStringValue\"](qs)(\"next\");\n                                                      if (v2 instanceof Data_Maybe.Just && v2.value0 === \"closeWindow\") {\n                                                          return Effect_Class.liftEffect(Halogen_Query_HalogenM.monadEffectHalogenM(Effect_Aff.monadEffectAff))(Control_Bind.bindFlipped(Effect.bindEffect)(Globals.closeWindow)(Web_HTML.window));\n                                                      };\n                                                      if (v2 instanceof Data_Maybe.Just && v2.value0 === \"back\") {\n                                                          return Effect_Class.liftEffect(Halogen_Query_HalogenM.monadEffectHalogenM(Effect_Aff.monadEffectAff))((function () {\n                                                              var $60 = Data_Maybe.isJust(Data_String_CodeUnits.stripPrefix(org)(ref));\n                                                              if ($60) {\n                                                                  return Web_HTML_Location.setHref(ref)(loc);\n                                                              };\n                                                              return Web_HTML_Location.setHref(org)(loc);\n                                                          })());\n                                                      };\n                                                      var $62 = edit_note.id === 0;\n                                                      if ($62) {\n                                                          return Effect_Class.liftEffect(Halogen_Query_HalogenM.monadEffectHalogenM(Effect_Aff.monadEffectAff))(Control_Bind.bindFlipped(Effect.bindEffect)(Web_HTML_Location.setHref(Util.fromNullableStr(app.noteR)))(Util[\"_loc\"]));\n                                                      };\n                                                      return Control_Bind.discard(Control_Bind.discardUnit)(Halogen_Query_HalogenM.bindHalogenM)(Data_Lens_Setter.assign(Halogen_Query_HalogenM.monadStateHalogenM)(_note(Data_Profunctor_Strong.strongFn))(edit_note))(function () {\n                                                          return Data_Lens_Setter.assign(Halogen_Query_HalogenM.monadStateHalogenM)(_edit(Data_Profunctor_Strong.strongFn))(false);\n                                                      });\n                                                  });\n                                              });\n                                          });\n                                      });\n                                  });\n                              };\n                              if (v1 instanceof Data_Either.Right) {\n                                  return Control_Bind.discard(Control_Bind.discardUnit)(Halogen_Query_HalogenM.bindHalogenM)(Data_Lens_Setter.assign(Halogen_Query_HalogenM.monadStateHalogenM)(_apiError(Data_Profunctor_Strong.strongFn))(new Data_Maybe.Just(v1.value0.body)))(function () {\n                                      return Effect_Class.liftEffect(Halogen_Query_HalogenM.monadEffectHalogenM(Effect_Aff.monadEffectAff))(Effect_Console.log(v1.value0.body));\n                                  });\n                              };\n                              throw new Error(\"Failed pattern match at Component.NNote (line 227, column 40 - line 250, column 36): \" + [ v1.constructor.name ]);\n                          });\n                      });\n                  });\n              });\n          };\n          throw new Error(\"Failed pattern match at Component.NNote (line 190, column 3 - line 190, column 77): \" + [ v.constructor.name ]);\n      };\n      var render = function (v) {\n          var toTextarea = function (input) {\n              return Data_Array.drop(1)(Data_Array.foldMap(Data_Monoid.monoidArray)(function (x) {\n                  return [ Halogen_HTML_Elements.br_, Halogen_HTML_Core.text(x) ];\n              })(Data_String_Common.split(\"\\x0a\")(input)));\n          };\n          var mmoment = function (n) {\n              return Globals.mmoment8601(n.created);\n          };\n          var renderNote = function (v1) {\n              return Halogen_HTML_Elements.div([ Halogen_HTML_Properties.id(Data_Show.show(Data_Show.showInt)(v.note.id)), Util.class_(\"note w-100 mw7 pa1 mb2\") ])([ Halogen_HTML_Elements.div([ Util.class_(\"display\") ])([ Halogen_HTML_Elements.div([ Util.class_(\"link f5 lh-title\") ])([ Halogen_HTML_Core.text((function () {\n                  var $68 = Data_String_Common[\"null\"](v.note.title);\n                  if ($68) {\n                      return \"[no title]\";\n                  };\n                  return v.note.title;\n              })()) ]), Halogen_HTML_Elements.br_, (function () {\n                  if (v.note.isMarkdown) {\n                      return Halogen_HTML_Elements.div([ Util.class_(\"description mt1\") ])([ Halogen_HTML.slot()({\n                          reflectSymbol: function () {\n                              return \"markdown\";\n                          }\n                      })(Data_Ord.ordUnit)(_markdown)(Data_Unit.unit)(Component_Markdown.component)(v.note.text)(Data_Void.absurd) ]);\n                  };\n                  return Halogen_HTML_Elements.div([ Util.class_(\"description mt1 mid-gray\") ])(toTextarea(v.note.text));\n              })(), Halogen_HTML_Elements.div([ Util.class_(\"link f7 dib gray w4\") ])([ Halogen_HTML_Elements.span([ Halogen_HTML_Properties.title(Data_Maybe.maybe(v.note.created)(Data_Tuple.snd)(mmoment(v.note))) ])([ Halogen_HTML_Core.text(Data_Maybe.maybe(\"\\xa0\")(Data_Tuple.fst)(mmoment(v.note))) ]), Halogen_HTML_Core.text(\" - \"), Halogen_HTML_Elements.span([ Util.class_(\"gray\") ])([ Halogen_HTML_Core.text((function () {\n                  if (v.note.shared) {\n                      return \"public\";\n                  };\n                  return \"private\";\n              })()) ]) ]) ]), Util.whenH(app.dat.isowner)(function (v2) {\n                  return Halogen_HTML_Elements.div([ Util.class_(\"edit_links db mt3\") ])([ Halogen_HTML_Elements.button([ Halogen_HTML_Properties.type_(Halogen_HTML_Core.isPropButtonType)(DOM_HTML_Indexed_ButtonType.ButtonButton.value), Halogen_HTML_Events.onClick(function (v3) {\n                      return new NEdit(true);\n                  }), Util.class_(\"edit light-silver hover-blue\") ])([ Halogen_HTML_Core.text(\"edit\\xa0\\xa0\") ]), Halogen_HTML_Elements.div([ Util.class_(\"delete_link di\") ])([ Halogen_HTML_Elements.button([ Halogen_HTML_Properties.type_(Halogen_HTML_Core.isPropButtonType)(DOM_HTML_Indexed_ButtonType.ButtonButton.value), Halogen_HTML_Events.onClick(function (v3) {\n                      return new NDeleteAsk(true);\n                  }), Util.class_(\"delete light-silver hover-blue\" + Data_Monoid.guard(Data_Monoid.monoidString)(v.deleteAsk)(\" dn\")) ])([ Halogen_HTML_Core.text(\"delete\") ]), Halogen_HTML_Elements.span([ Util.class_(\"confirm red\" + Data_Monoid.guard(Data_Monoid.monoidString)(!v.deleteAsk)(\" dn\")) ])([ Halogen_HTML_Elements.button([ Halogen_HTML_Properties.type_(Halogen_HTML_Core.isPropButtonType)(DOM_HTML_Indexed_ButtonType.ButtonButton.value), Halogen_HTML_Events.onClick(function (v3) {\n                      return new NDeleteAsk(false);\n                  }) ])([ Halogen_HTML_Core.text(\"cancel\\xa0/\\xa0\") ]), Halogen_HTML_Elements.button([ Halogen_HTML_Properties.type_(Halogen_HTML_Core.isPropButtonType)(DOM_HTML_Indexed_ButtonType.ButtonButton.value), Halogen_HTML_Events.onClick(function (v3) {\n                      return NDestroy.value;\n                  }), Util.class_(\"red\") ])([ Halogen_HTML_Core.text(\"destroy\") ]) ]) ]) ]);\n              }) ]);\n          };\n          var editField = function (f) {\n              return function ($74) {\n                  return NEditField.create(f($74));\n              };\n          };\n          var display_destroyed = function (v1) {\n              return Halogen_HTML_Elements.p([ Util.class_(\"red\") ])([ Halogen_HTML_Core.text(\"you killed this note\") ]);\n          };\n          var alert_notification = function (alert_text) {\n              return function (v1) {\n                  return Halogen_HTML_Elements.div([ Util.class_(\"alert alert-err\") ])([ Halogen_HTML_Core.text(alert_text) ]);\n              };\n          };\n          var renderNote_edit = function (v1) {\n              return Halogen_HTML_Elements.form([ Halogen_HTML_Events.onSubmit(NEditSubmit.create) ])([ Util.whenH(Data_Maybe.isJust(v.apiError))(alert_notification(Data_Maybe.fromMaybe(\"\")(v.apiError))), Halogen_HTML_Elements.p([ Util.class_(\"mt2 mb1\") ])([ Halogen_HTML_Core.text(\"title:\") ]), Halogen_HTML_Elements.input([ Halogen_HTML_Properties.type_(Halogen_HTML_Core.isPropInputType)(DOM_HTML_Indexed_InputType.InputText.value), Util.class_(\"title w-100 mb1 pt1 edit_form_input\"), Halogen_HTML_Properties.name(\"title\"), Halogen_HTML_Properties.value(v.edit_note.title), Halogen_HTML_Events.onValueChange(editField(Etitle.create)), Halogen_HTML_Properties.autofocus(Data_String_Common[\"null\"](v.edit_note.title)) ]), Halogen_HTML_Elements.br_, Halogen_HTML_Elements.p([ Util.class_(\"mt2 mb1\") ])([ Halogen_HTML_Core.text(\"description:\") ]), Halogen_HTML_Elements.textarea([ Halogen_HTML_Properties.id(notetextid(v.edit_note)), Util.class_(\"description w-100 mb1 pt1 edit_form_input\"), Halogen_HTML_Properties.name(\"text\"), Halogen_HTML_Properties.rows(25), Halogen_HTML_Properties.value(v.edit_note.text), Halogen_HTML_Events.onValueChange(editField(Etext.create)) ]), Halogen_HTML_Elements.div([ Util.class_(\"edit_form_checkboxes mb3\") ])([ Halogen_HTML_Elements.input([ Halogen_HTML_Properties.type_(Halogen_HTML_Core.isPropInputType)(DOM_HTML_Indexed_InputType.InputCheckbox.value), Util.class_(\"is-markdown pointer\"), Halogen_HTML_Properties.id(\"edit_ismarkdown\"), Halogen_HTML_Properties.name(\"ismarkdown\"), Halogen_HTML_Properties.checked(v.edit_note.isMarkdown), Halogen_HTML_Events.onChecked(editField(EisMarkdown.create)) ]), Halogen_HTML_Core.text(\" \"), Halogen_HTML_Elements.label([ Halogen_HTML_Properties[\"for\"](\"edit_ismarkdown\"), Util.class_(\"mr2\") ])([ Halogen_HTML_Core.text(\"use markdown?\") ]), Halogen_HTML_Elements.br_ ]), Halogen_HTML_Elements.div([ Util.class_(\"edit_form_checkboxes mb3\") ])([ Halogen_HTML_Elements.input([ Halogen_HTML_Properties.type_(Halogen_HTML_Core.isPropInputType)(DOM_HTML_Indexed_InputType.InputCheckbox.value), Util.class_(\"is-markdown pointer\"), Halogen_HTML_Properties.id(\"edit_shared\"), Halogen_HTML_Properties.name(\"shared\"), Halogen_HTML_Properties.checked(v.edit_note.shared), Halogen_HTML_Events.onChecked(editField(Eshared.create)) ]), Halogen_HTML_Core.text(\" \"), Halogen_HTML_Elements.label([ Halogen_HTML_Properties[\"for\"](\"edit_shared\"), Util.class_(\"mr2\") ])([ Halogen_HTML_Core.text(\"public?\") ]), Halogen_HTML_Elements.br_ ]), Halogen_HTML_Elements.input([ Halogen_HTML_Properties.type_(Halogen_HTML_Core.isPropInputType)(DOM_HTML_Indexed_InputType.InputSubmit.value), Util.class_(\"mr1 pv1 ph2 dark-gray ba b--moon-gray bg-near-white pointer rdim\"), Halogen_HTML_Properties.value(\"save\") ]), Halogen_HTML_Core.text(\" \"), Halogen_HTML_Elements.input([ Halogen_HTML_Properties.type_(Halogen_HTML_Core.isPropInputType)(DOM_HTML_Indexed_InputType.InputReset.value), Util.class_(\"pv1 ph2 dark-gray ba b--moon-gray bg-near-white pointer rdim\"), Halogen_HTML_Properties.value(\"cancel\"), Halogen_HTML_Events.onClick(function (v2) {\n                  return new NEdit(false);\n              }) ]) ]);\n          };\n          return Util.ifElseH(v.destroyed)(display_destroyed)(Data_Function[\"const\"](Util.ifElseH(v.edit)(renderNote_edit)(renderNote)));\n      };\n      return Halogen_Component.mkComponent({\n          initialState: Data_Function[\"const\"](mkState(st$prime)),\n          render: render,\n          \"eval\": Halogen_Component.mkEval({\n              handleAction: handleAction,\n              handleQuery: Halogen_Component.defaultEval.handleQuery,\n              receive: Halogen_Component.defaultEval.receive,\n              initialize: Halogen_Component.defaultEval.initialize,\n              finalize: Halogen_Component.defaultEval.finalize\n          })\n      });\n  };\n  exports[\"nnote\"] = nnote;\n})(PS);\n(function(exports) {\n  \"use strict\";\n\n  exports.log = Math.log;\n})(PS[\"Math\"] = PS[\"Math\"] || {});\n(function($PS) {\n  // Generated by purs version 0.14.7\n  \"use strict\";\n  $PS[\"Math\"] = $PS[\"Math\"] || {};\n  var exports = $PS[\"Math\"];\n  var $foreign = $PS[\"Math\"];\n  exports[\"log\"] = $foreign.log;\n})(PS);\n(function($PS) {\n  // Generated by purs version 0.14.7\n  \"use strict\";\n  $PS[\"Component.TagCloud\"] = $PS[\"Component.TagCloud\"] || {};\n  var exports = $PS[\"Component.TagCloud\"];\n  var App = $PS[\"App\"];\n  var Control_Applicative = $PS[\"Control.Applicative\"];\n  var Control_Bind = $PS[\"Control.Bind\"];\n  var Control_Category = $PS[\"Control.Category\"];\n  var Control_Monad_State_Class = $PS[\"Control.Monad.State.Class\"];\n  var DOM_HTML_Indexed_ButtonType = $PS[\"DOM.HTML.Indexed.ButtonType\"];\n  var Data_Array = $PS[\"Data.Array\"];\n  var Data_Eq = $PS[\"Data.Eq\"];\n  var Data_Foldable = $PS[\"Data.Foldable\"];\n  var Data_Function = $PS[\"Data.Function\"];\n  var Data_Functor = $PS[\"Data.Functor\"];\n  var Data_Int = $PS[\"Data.Int\"];\n  var Data_Maybe = $PS[\"Data.Maybe\"];\n  var Data_Monoid = $PS[\"Data.Monoid\"];\n  var Data_Ord = $PS[\"Data.Ord\"];\n  var Data_Semigroup = $PS[\"Data.Semigroup\"];\n  var Data_Show = $PS[\"Data.Show\"];\n  var Data_String_Common = $PS[\"Data.String.Common\"];\n  var Data_Tuple = $PS[\"Data.Tuple\"];\n  var Data_Unfoldable = $PS[\"Data.Unfoldable\"];\n  var Data_Unit = $PS[\"Data.Unit\"];\n  var Effect_Aff_Class = $PS[\"Effect.Aff.Class\"];\n  var Foreign_Object = $PS[\"Foreign.Object\"];\n  var Globals = $PS[\"Globals\"];\n  var Halogen_Component = $PS[\"Halogen.Component\"];\n  var Halogen_HTML_Core = $PS[\"Halogen.HTML.Core\"];\n  var Halogen_HTML_Elements = $PS[\"Halogen.HTML.Elements\"];\n  var Halogen_HTML_Events = $PS[\"Halogen.HTML.Events\"];\n  var Halogen_HTML_Properties = $PS[\"Halogen.HTML.Properties\"];\n  var Halogen_Query_HalogenM = $PS[\"Halogen.Query.HalogenM\"];\n  var $$Math = $PS[\"Math\"];\n  var Model = $PS[\"Model\"];\n  var Util = $PS[\"Util\"];                \n  var TInitialize = (function () {\n      function TInitialize() {\n\n      };\n      TInitialize.value = new TInitialize();\n      return TInitialize;\n  })();\n  var TExpanded = (function () {\n      function TExpanded(value0) {\n          this.value0 = value0;\n      };\n      TExpanded.create = function (value0) {\n          return new TExpanded(value0);\n      };\n      return TExpanded;\n  })();\n  var TChangeMode = (function () {\n      function TChangeMode(value0) {\n          this.value0 = value0;\n      };\n      TChangeMode.create = function (value0) {\n          return new TChangeMode(value0);\n      };\n      return TChangeMode;\n  })();\n  var tagcloudcomponent = function (m$prime) {\n      var rescale = function (f) {\n          return function (v) {\n              return function (n) {\n                  return function (m) {\n                      return function (l) {\n                          return function (h) {\n                              return (function () {\n                                  var $25 = m - n < 1.0e-2;\n                                  if ($25) {\n                                      return 1.0;\n                                  };\n                                  return f(v - n) / f(m - n);\n                              })() * (h - l) + l;\n                          };\n                      };\n                  };\n              };\n          };\n      };\n      var mkState = function (m) {\n          return {\n              mode: m,\n              tagcloud: Foreign_Object.empty\n          };\n      };\n      var fetchTagCloud = function (mode$prime) {\n          if (mode$prime instanceof Model.TagCloudModeNone) {\n              return Control_Applicative.pure(Halogen_Query_HalogenM.applicativeHalogenM)(Data_Unit.unit);\n          };\n          return Control_Bind.bind(Halogen_Query_HalogenM.bindHalogenM)(Effect_Aff_Class.liftAff(Halogen_Query_HalogenM.monadAffHalogenM(Effect_Aff_Class.monadAffAff))(App.getTagCloud(Model.tagCloudModeFromF(mode$prime))))(function (tagcloud) {\n              return Control_Monad_State_Class.modify_(Halogen_Query_HalogenM.monadStateHalogenM)(function (s) {\n                  var $27 = {};\n                  for (var $28 in s) {\n                      if ({}.hasOwnProperty.call(s, $28)) {\n                          $27[$28] = s[$28];\n                      };\n                  };\n                  $27.mode = mode$prime;\n                  $27.tagcloud = Data_Maybe.fromMaybe(Foreign_Object.empty)(tagcloud);\n                  return $27;\n              });\n          });\n      };\n      var handleAction = function (v) {\n          if (v instanceof TInitialize) {\n              return Control_Bind.bind(Halogen_Query_HalogenM.bindHalogenM)(Control_Monad_State_Class.gets(Halogen_Query_HalogenM.monadStateHalogenM)(function (v1) {\n                  return v1.mode;\n              }))(function (mode) {\n                  return fetchTagCloud(mode);\n              });\n          };\n          if (v instanceof TExpanded) {\n              return Control_Bind.discard(Control_Bind.discardUnit)(Halogen_Query_HalogenM.bindHalogenM)(Control_Monad_State_Class.modify_(Halogen_Query_HalogenM.monadStateHalogenM)(function (s) {\n                  var $31 = {};\n                  for (var $32 in s) {\n                      if ({}.hasOwnProperty.call(s, $32)) {\n                          $31[$32] = s[$32];\n                      };\n                  };\n                  $31.mode = Model.setExpanded(s.mode)(v.value0);\n                  return $31;\n              }))(function () {\n                  return Control_Bind.bind(Halogen_Query_HalogenM.bindHalogenM)(Control_Monad_State_Class.gets(Halogen_Query_HalogenM.monadStateHalogenM)(function (v1) {\n                      return v1.mode;\n                  }))(function (mode) {\n                      return Data_Functor[\"void\"](Halogen_Query_HalogenM.functorHalogenM)(Effect_Aff_Class.liftAff(Halogen_Query_HalogenM.monadAffHalogenM(Effect_Aff_Class.monadAffAff))(App.updateTagCloudMode(Model.tagCloudModeFromF(mode))));\n                  });\n              });\n          };\n          if (v instanceof TChangeMode) {\n              return Control_Bind.bind(Halogen_Query_HalogenM.bindHalogenM)(Control_Monad_State_Class.gets(Halogen_Query_HalogenM.monadStateHalogenM)(function (v1) {\n                  return v1.mode;\n              }))(function (mode) {\n                  var $35 = Data_Eq.eq(Model.eqTagCloudModeF)(mode)(v.value0);\n                  if ($35) {\n                      return handleAction(new TExpanded(!Model.isExpanded(mode)));\n                  };\n                  return fetchTagCloud(Model.setExpanded(v.value0)(true));\n              });\n          };\n          throw new Error(\"Failed pattern match at Component.TagCloud (line 161, column 3 - line 161, column 69): \" + [ v.constructor.name ]);\n      };\n      var app = Globals[\"app'\"](Data_Unit.unit);\n      var linkToFilterTag = function (rest) {\n          return Util.fromNullableStr(app.userR) + (function () {\n              var $37 = Data_String_Common[\"null\"](rest);\n              if ($37) {\n                  return \"\";\n              };\n              return \"/t:\" + rest;\n          })();\n      };\n      var toSizedTag = function (curtags) {\n          return function (n) {\n              return function (m) {\n                  return function (k) {\n                      return function (v) {\n                          var opacity = rescale(function ($47) {\n                              return $$Math.log((function (v1) {\n                                  return 1.0 + v1;\n                              })($47));\n                          })(Data_Int.toNumber(v))(Data_Int.toNumber(n))(Data_Int.toNumber(m))(0.6)(1.0);\n                          var k_lower = Data_String_Common.toLower(k);\n                          var fontsize = rescale(Control_Category.identity(Control_Category.categoryFn))(Data_Int.toNumber(v))(Data_Int.toNumber(n))(Data_Int.toNumber(m))(100.0)(150.0);\n                          var style = Halogen_HTML_Properties.attr(\"style\")(\"font-size:\" + (Data_Show.show(Data_Show.showNumber)(fontsize) + (\"%\" + (\";opacity:\" + Data_Show.show(Data_Show.showNumber)(opacity)))));\n                          return [ Halogen_HTML_Elements.a([ Halogen_HTML_Properties.href(linkToFilterTag(Util.encodeTag(k))), Util.class_(\"link tag mr1\"), style ])([ Halogen_HTML_Core.text(k) ]), Util.whenH(!Data_Array[\"null\"](curtags))(function (v1) {\n                              var $38 = Data_Array.notElem(Data_Eq.eqString)(k_lower)(curtags);\n                              if ($38) {\n                                  return Halogen_HTML_Elements.a([ Halogen_HTML_Properties.href(linkToFilterTag(Data_String_Common.joinWith(\"+\")(Data_Functor.map(Data_Functor.functorArray)(Util.encodeTag)(Data_Array.cons(k_lower)(curtags))))), Util.class_(\"link mr2 tag-include\") ])([ Halogen_HTML_Core.text(\"\\u2295\") ]);\n                              };\n                              return Halogen_HTML_Elements.a([ Halogen_HTML_Properties.href(linkToFilterTag(Data_String_Common.joinWith(\"+\")(Data_Functor.map(Data_Functor.functorArray)(Util.encodeTag)(Data_Array[\"delete\"](Data_Eq.eqString)(k_lower)(curtags))))), Util.class_(\"link mr2 tag-exclude\") ])([ Halogen_HTML_Core.text(\"\\u2296\") ]);\n                          }) ];\n                      };\n                  };\n              };\n          };\n      };\n      var toArray = function (curtags) {\n          return function (n) {\n              return function (m) {\n                  var $48 = Data_Functor.map(Data_Functor.functorArray)(Data_Tuple.uncurry(toSizedTag(Data_Functor.map(Data_Functor.functorArray)(Data_String_Common.toLower)(curtags))(n)(m)));\n                  var $49 = Data_Array.sortBy(Data_Ord.comparing(Data_Ord.ordString)(function ($52) {\n                      return Data_String_Common.toLower(Data_Tuple.fst($52));\n                  }));\n                  var $50 = Foreign_Object.toUnfoldable(Data_Unfoldable.unfoldableArray);\n                  return function ($51) {\n                      return Data_Array.concat($48($49($50($51))));\n                  };\n              };\n          };\n      };\n      var render = function (v) {\n          if (v.mode instanceof Model.TagCloudModeNone) {\n              return Halogen_HTML_Elements.div([ Util.class_(\"tag_cloud\") ])([  ]);\n          };\n          var modetop = new Model.TagCloudModeTop(Model.isExpanded(v.mode), 200);\n          var modelb5 = new Model.TagCloudModeLowerBound(Model.isExpanded(v.mode), 5);\n          var modelb20 = new Model.TagCloudModeLowerBound(Model.isExpanded(v.mode), 20);\n          var modelb2 = new Model.TagCloudModeLowerBound(Model.isExpanded(v.mode), 2);\n          var modelb10 = new Model.TagCloudModeLowerBound(Model.isExpanded(v.mode), 10);\n          var modelb1 = new Model.TagCloudModeLowerBound(Model.isExpanded(v.mode), 1);\n          return Halogen_HTML_Elements.div([ Util.class_(\"tag_cloud mv3\") ])([ Halogen_HTML_Elements.div([ Util.class_(\"tag_cloud_header mb2\") ])(Data_Semigroup.append(Data_Semigroup.semigroupArray)(Util.ifElseA(Model.isRelated(v.mode))(function (v1) {\n              return [ Halogen_HTML_Elements.button([ Halogen_HTML_Properties.type_(Halogen_HTML_Core.isPropButtonType)(DOM_HTML_Indexed_ButtonType.ButtonButton.value), Util.class_(\"pa1 f7 link hover-blue mr1 b\"), Halogen_HTML_Events.onClick(function (v2) {\n                  return new TExpanded(!Model.isExpanded(v.mode));\n              }) ])([ Halogen_HTML_Core.text(\"Related Tags\") ]) ];\n          })(function (v1) {\n              return [ Halogen_HTML_Elements.button([ Halogen_HTML_Properties.type_(Halogen_HTML_Core.isPropButtonType)(DOM_HTML_Indexed_ButtonType.ButtonButton.value), Util.class_(\"pa1 f7 link hover-blue mr1\" + Data_Monoid.guard(Data_Monoid.monoidString)(Data_Eq.eq(Model.eqTagCloudModeF)(v.mode)(modetop))(\" b\")), Halogen_HTML_Properties.title(\"show a cloud of your most-used tags\"), Halogen_HTML_Events.onClick(function (v2) {\n                  return new TChangeMode(modetop);\n              }) ])([ Halogen_HTML_Core.text(\"Top Tags\") ]), Halogen_HTML_Elements.button([ Halogen_HTML_Properties.type_(Halogen_HTML_Core.isPropButtonType)(DOM_HTML_Indexed_ButtonType.ButtonButton.value), Util.class_(\"pa1 f7 link hover-blue ml2 \" + Data_Monoid.guard(Data_Monoid.monoidString)(Data_Eq.eq(Model.eqTagCloudModeF)(v.mode)(modelb1))(\" b\")), Halogen_HTML_Properties.title(\"show all tags\"), Halogen_HTML_Events.onClick(function (v2) {\n                  return new TChangeMode(modelb1);\n              }) ])([ Halogen_HTML_Core.text(\"all\") ]), Halogen_HTML_Core.text(\"\\u2027\"), Halogen_HTML_Elements.button([ Halogen_HTML_Properties.type_(Halogen_HTML_Core.isPropButtonType)(DOM_HTML_Indexed_ButtonType.ButtonButton.value), Util.class_(\"pa1 f7 link hover-blue\" + Data_Monoid.guard(Data_Monoid.monoidString)(Data_Eq.eq(Model.eqTagCloudModeF)(v.mode)(modelb2))(\" b\")), Halogen_HTML_Properties.title(\"show tags with at least 2 bookmarks\"), Halogen_HTML_Events.onClick(function (v2) {\n                  return new TChangeMode(modelb2);\n              }) ])([ Halogen_HTML_Core.text(\"2\") ]), Halogen_HTML_Core.text(\"\\u2027\"), Halogen_HTML_Elements.button([ Halogen_HTML_Properties.type_(Halogen_HTML_Core.isPropButtonType)(DOM_HTML_Indexed_ButtonType.ButtonButton.value), Util.class_(\"pa1 f7 link hover-blue\" + Data_Monoid.guard(Data_Monoid.monoidString)(Data_Eq.eq(Model.eqTagCloudModeF)(v.mode)(modelb5))(\" b\")), Halogen_HTML_Properties.title(\"show tags with at least 5 bookmarks\"), Halogen_HTML_Events.onClick(function (v2) {\n                  return new TChangeMode(modelb5);\n              }) ])([ Halogen_HTML_Core.text(\"5\") ]), Halogen_HTML_Core.text(\"\\u2027\"), Halogen_HTML_Elements.button([ Halogen_HTML_Properties.type_(Halogen_HTML_Core.isPropButtonType)(DOM_HTML_Indexed_ButtonType.ButtonButton.value), Util.class_(\"pa1 f7 link hover-blue\" + Data_Monoid.guard(Data_Monoid.monoidString)(Data_Eq.eq(Model.eqTagCloudModeF)(v.mode)(modelb10))(\" b\")), Halogen_HTML_Properties.title(\"show tags with at least 10 bookmarks\"), Halogen_HTML_Events.onClick(function (v2) {\n                  return new TChangeMode(modelb10);\n              }) ])([ Halogen_HTML_Core.text(\"10\") ]), Halogen_HTML_Core.text(\"\\u2027\"), Halogen_HTML_Elements.button([ Halogen_HTML_Properties.type_(Halogen_HTML_Core.isPropButtonType)(DOM_HTML_Indexed_ButtonType.ButtonButton.value), Util.class_(\"pa1 f7 link hover-blue\" + Data_Monoid.guard(Data_Monoid.monoidString)(Data_Eq.eq(Model.eqTagCloudModeF)(v.mode)(modelb20))(\" b\")), Halogen_HTML_Properties.title(\"show tags with at least 20 bookmarks\"), Halogen_HTML_Events.onClick(function (v2) {\n                  return new TChangeMode(modelb20);\n              }) ])([ Halogen_HTML_Core.text(\"20\") ]) ];\n          }))([ Halogen_HTML_Elements.button([ Halogen_HTML_Properties.type_(Halogen_HTML_Core.isPropButtonType)(DOM_HTML_Indexed_ButtonType.ButtonButton.value), Util.class_(\"pa1 ml2 f7 link silver hover-blue \"), Halogen_HTML_Events.onClick(function (v1) {\n              return new TExpanded(!Model.isExpanded(v.mode));\n          }) ])([ Halogen_HTML_Core.text((function () {\n              var $41 = Model.isExpanded(v.mode);\n              if ($41) {\n                  return \"hide\";\n              };\n              return \"show\";\n          })()) ]) ])), Util.whenH(Model.isExpanded(v.mode))(function (v1) {\n              var n = Data_Maybe.fromMaybe(1)(Data_Foldable.minimum(Data_Ord.ordInt)(Data_Foldable.foldableArray)(Foreign_Object.values(v.tagcloud)));\n              var m = Data_Maybe.fromMaybe(1)(Data_Foldable.maximum(Data_Ord.ordInt)(Data_Foldable.foldableArray)(Foreign_Object.values(v.tagcloud)));\n              return Halogen_HTML_Elements.div([ Util.class_(\"tag_cloud_body\") ])((function () {\n                  if (v.mode instanceof Model.TagCloudModeNone) {\n                      return [  ];\n                  };\n                  if (v.mode instanceof Model.TagCloudModeRelated) {\n                      return toArray(v.mode.value1)(n)(m)(v.tagcloud);\n                  };\n                  return toArray([  ])(n)(m)(v.tagcloud);\n              })());\n          }) ]);\n      };\n      return Halogen_Component.mkComponent({\n          initialState: Data_Function[\"const\"](mkState(m$prime)),\n          render: render,\n          \"eval\": Halogen_Component.mkEval({\n              handleAction: handleAction,\n              handleQuery: Halogen_Component.defaultEval.handleQuery,\n              receive: Halogen_Component.defaultEval.receive,\n              initialize: new Data_Maybe.Just(TInitialize.value),\n              finalize: Halogen_Component.defaultEval.finalize\n          })\n      });\n  };\n  exports[\"tagcloudcomponent\"] = tagcloudcomponent;\n})(PS);\n(function($PS) {\n  // Generated by purs version 0.14.7\n  \"use strict\";\n  $PS[\"Control.Applicative.Free\"] = $PS[\"Control.Applicative.Free\"] || {};\n  var exports = $PS[\"Control.Applicative.Free\"];\n  var Control_Applicative = $PS[\"Control.Applicative\"];\n  var Control_Apply = $PS[\"Control.Apply\"];\n  var Control_Category = $PS[\"Control.Category\"];\n  var Data_Either = $PS[\"Data.Either\"];\n  var Data_List_NonEmpty = $PS[\"Data.List.NonEmpty\"];\n  var Data_List_Types = $PS[\"Data.List.Types\"];\n  var Data_NonEmpty = $PS[\"Data.NonEmpty\"];\n  var Data_Tuple = $PS[\"Data.Tuple\"];                \n  var Pure = (function () {\n      function Pure(value0) {\n          this.value0 = value0;\n      };\n      Pure.create = function (value0) {\n          return new Pure(value0);\n      };\n      return Pure;\n  })();\n  var Lift = (function () {\n      function Lift(value0) {\n          this.value0 = value0;\n      };\n      Lift.create = function (value0) {\n          return new Lift(value0);\n      };\n      return Lift;\n  })();\n  var Ap = (function () {\n      function Ap(value0, value1) {\n          this.value0 = value0;\n          this.value1 = value1;\n      };\n      Ap.create = function (value0) {\n          return function (value1) {\n              return new Ap(value0, value1);\n          };\n      };\n      return Ap;\n  })();\n  var mkAp = function (fba) {\n      return function (fb) {\n          return new Ap(fba, fb);\n      };\n  };\n  var liftFreeAp = Lift.create;\n  var goLeft = function ($copy_dictApplicative) {\n      return function ($copy_fStack) {\n          return function ($copy_valStack) {\n              return function ($copy_nat) {\n                  return function ($copy_func) {\n                      return function ($copy_count) {\n                          var $tco_var_dictApplicative = $copy_dictApplicative;\n                          var $tco_var_fStack = $copy_fStack;\n                          var $tco_var_valStack = $copy_valStack;\n                          var $tco_var_nat = $copy_nat;\n                          var $tco_var_func = $copy_func;\n                          var $tco_done = false;\n                          var $tco_result;\n                          function $tco_loop(dictApplicative, fStack, valStack, nat, func, count) {\n                              if (func instanceof Pure) {\n                                  $tco_done = true;\n                                  return new Data_Tuple.Tuple(new Data_List_Types.Cons({\n                                      func: Control_Applicative.pure(dictApplicative)(func.value0),\n                                      count: count\n                                  }, fStack), valStack);\n                              };\n                              if (func instanceof Lift) {\n                                  $tco_done = true;\n                                  return new Data_Tuple.Tuple(new Data_List_Types.Cons({\n                                      func: nat(func.value0),\n                                      count: count\n                                  }, fStack), valStack);\n                              };\n                              if (func instanceof Ap) {\n                                  $tco_var_dictApplicative = dictApplicative;\n                                  $tco_var_fStack = fStack;\n                                  $tco_var_valStack = Data_List_NonEmpty.cons(func.value1)(valStack);\n                                  $tco_var_nat = nat;\n                                  $tco_var_func = func.value0;\n                                  $copy_count = count + 1 | 0;\n                                  return;\n                              };\n                              throw new Error(\"Failed pattern match at Control.Applicative.Free (line 102, column 41 - line 105, column 81): \" + [ func.constructor.name ]);\n                          };\n                          while (!$tco_done) {\n                              $tco_result = $tco_loop($tco_var_dictApplicative, $tco_var_fStack, $tco_var_valStack, $tco_var_nat, $tco_var_func, $copy_count);\n                          };\n                          return $tco_result;\n                      };\n                  };\n              };\n          };\n      };\n  };\n  var goApply = function ($copy_dictApplicative) {\n      return function ($copy_fStack) {\n          return function ($copy_vals) {\n              return function ($copy_gVal) {\n                  var $tco_var_dictApplicative = $copy_dictApplicative;\n                  var $tco_var_fStack = $copy_fStack;\n                  var $tco_var_vals = $copy_vals;\n                  var $tco_done = false;\n                  var $tco_result;\n                  function $tco_loop(dictApplicative, fStack, vals, gVal) {\n                      if (fStack instanceof Data_List_Types.Nil) {\n                          $tco_done = true;\n                          return new Data_Either.Left(gVal);\n                      };\n                      if (fStack instanceof Data_List_Types.Cons) {\n                          var gRes = Control_Apply.apply(dictApplicative.Apply0())(fStack.value0.func)(gVal);\n                          var $14 = fStack.value0.count === 1;\n                          if ($14) {\n                              if (fStack.value1 instanceof Data_List_Types.Nil) {\n                                  $tco_done = true;\n                                  return new Data_Either.Left(gRes);\n                              };\n                              $tco_var_dictApplicative = dictApplicative;\n                              $tco_var_fStack = fStack.value1;\n                              $tco_var_vals = vals;\n                              $copy_gVal = gRes;\n                              return;\n                          };\n                          if (vals instanceof Data_List_Types.Nil) {\n                              $tco_done = true;\n                              return new Data_Either.Left(gRes);\n                          };\n                          if (vals instanceof Data_List_Types.Cons) {\n                              $tco_done = true;\n                              return new Data_Either.Right(new Data_Tuple.Tuple(new Data_List_Types.Cons({\n                                  func: gRes,\n                                  count: fStack.value0.count - 1 | 0\n                              }, fStack.value1), new Data_NonEmpty.NonEmpty(vals.value0, vals.value1)));\n                          };\n                          throw new Error(\"Failed pattern match at Control.Applicative.Free (line 83, column 11 - line 88, column 50): \" + [ vals.constructor.name ]);\n                      };\n                      throw new Error(\"Failed pattern match at Control.Applicative.Free (line 72, column 3 - line 88, column 50): \" + [ fStack.constructor.name ]);\n                  };\n                  while (!$tco_done) {\n                      $tco_result = $tco_loop($tco_var_dictApplicative, $tco_var_fStack, $tco_var_vals, $copy_gVal);\n                  };\n                  return $tco_result;\n              };\n          };\n      };\n  };\n  var functorFreeAp = {\n      map: function (f) {\n          return function (x) {\n              return mkAp(new Pure(f))(x);\n          };\n      }\n  };\n  var foldFreeAp = function (dictApplicative) {\n      return function (nat) {\n          return function (z) {\n              var go = function ($copy_v) {\n                  var $tco_done = false;\n                  var $tco_result;\n                  function $tco_loop(v) {\n                      if (v.value1.value0 instanceof Pure) {\n                          var v1 = goApply(dictApplicative)(v.value0)(v.value1.value1)(Control_Applicative.pure(dictApplicative)(v.value1.value0.value0));\n                          if (v1 instanceof Data_Either.Left) {\n                              $tco_done = true;\n                              return v1.value0;\n                          };\n                          if (v1 instanceof Data_Either.Right) {\n                              $copy_v = v1.value0;\n                              return;\n                          };\n                          throw new Error(\"Failed pattern match at Control.Applicative.Free (line 54, column 17 - line 56, column 24): \" + [ v1.constructor.name ]);\n                      };\n                      if (v.value1.value0 instanceof Lift) {\n                          var v1 = goApply(dictApplicative)(v.value0)(v.value1.value1)(nat(v.value1.value0.value0));\n                          if (v1 instanceof Data_Either.Left) {\n                              $tco_done = true;\n                              return v1.value0;\n                          };\n                          if (v1 instanceof Data_Either.Right) {\n                              $copy_v = v1.value0;\n                              return;\n                          };\n                          throw new Error(\"Failed pattern match at Control.Applicative.Free (line 57, column 17 - line 59, column 24): \" + [ v1.constructor.name ]);\n                      };\n                      if (v.value1.value0 instanceof Ap) {\n                          var nextVals = new Data_NonEmpty.NonEmpty(v.value1.value0.value1, v.value1.value1);\n                          $copy_v = goLeft(dictApplicative)(v.value0)(nextVals)(nat)(v.value1.value0.value0)(1);\n                          return;\n                      };\n                      throw new Error(\"Failed pattern match at Control.Applicative.Free (line 53, column 5 - line 62, column 47): \" + [ v.value1.value0.constructor.name ]);\n                  };\n                  while (!$tco_done) {\n                      $tco_result = $tco_loop($copy_v);\n                  };\n                  return $tco_result;\n              };\n              return go(new Data_Tuple.Tuple(Data_List_Types.Nil.value, Data_List_NonEmpty.singleton(z)));\n          };\n      };\n  };\n  var retractFreeAp = function (dictApplicative) {\n      return foldFreeAp(dictApplicative)(Control_Category.identity(Control_Category.categoryFn));\n  };\n  var applyFreeAp = {\n      apply: function (fba) {\n          return function (fb) {\n              return mkAp(fba)(fb);\n          };\n      },\n      Functor0: function () {\n          return functorFreeAp;\n      }\n  };\n  var applicativeFreeAp = {\n      pure: Pure.create,\n      Apply0: function () {\n          return applyFreeAp;\n      }\n  };\n  var hoistFreeAp = function (f) {\n      return foldFreeAp(applicativeFreeAp)(function ($37) {\n          return liftFreeAp(f($37));\n      });\n  };\n  exports[\"retractFreeAp\"] = retractFreeAp;\n  exports[\"hoistFreeAp\"] = hoistFreeAp;\n})(PS);\n(function($PS) {\n  // Generated by purs version 0.14.7\n  \"use strict\";\n  $PS[\"Control.Monad.Fork.Class\"] = $PS[\"Control.Monad.Fork.Class\"] || {};\n  var exports = $PS[\"Control.Monad.Fork.Class\"];\n  var Effect_Aff = $PS[\"Effect.Aff\"];\n  var monadForkAff = {\n      suspend: Effect_Aff.suspendAff,\n      fork: Effect_Aff.forkAff,\n      join: Effect_Aff.joinFiber,\n      Monad0: function () {\n          return Effect_Aff.monadAff;\n      },\n      Functor1: function () {\n          return Effect_Aff.functorFiber;\n      }\n  };\n  var fork = function (dict) {\n      return dict.fork;\n  };\n  exports[\"fork\"] = fork;\n  exports[\"monadForkAff\"] = monadForkAff;\n})(PS);\n(function($PS) {\n  // Generated by purs version 0.14.7\n  \"use strict\";\n  $PS[\"Halogen.Aff.Driver.State\"] = $PS[\"Halogen.Aff.Driver.State\"] || {};\n  var exports = $PS[\"Halogen.Aff.Driver.State\"];\n  var Data_Foldable = $PS[\"Data.Foldable\"];\n  var Data_List_Types = $PS[\"Data.List.Types\"];\n  var Data_Map_Internal = $PS[\"Data.Map.Internal\"];\n  var Data_Maybe = $PS[\"Data.Maybe\"];\n  var Effect_Ref = $PS[\"Effect.Ref\"];\n  var Halogen_Data_Slot = $PS[\"Halogen.Data.Slot\"];\n  var Unsafe_Coerce = $PS[\"Unsafe.Coerce\"];\n  var unRenderStateX = Unsafe_Coerce.unsafeCoerce;\n  var unDriverStateX = Unsafe_Coerce.unsafeCoerce;\n  var renderStateX_ = function (dictApplicative) {\n      return function (f) {\n          return unDriverStateX(function (st) {\n              return Data_Foldable.traverse_(dictApplicative)(Data_Foldable.foldableMaybe)(f)(st.rendering);\n          });\n      };\n  };\n  var mkRenderStateX = Unsafe_Coerce.unsafeCoerce;\n  var renderStateX = function (dictFunctor) {\n      return function (f) {\n          return unDriverStateX(function (st) {\n              return mkRenderStateX(f(st.rendering));\n          });\n      };\n  };\n  var mkDriverStateXRef = Unsafe_Coerce.unsafeCoerce;\n  var mapDriverState = function (f) {\n      return function (v) {\n          return f(v);\n      };\n  };\n  var initDriverState = function (component) {\n      return function (input) {\n          return function (handler) {\n              return function (lchs) {\n                  return function __do() {\n                      var selfRef = Effect_Ref[\"new\"]({})();\n                      var childrenIn = Effect_Ref[\"new\"](Halogen_Data_Slot.empty)();\n                      var childrenOut = Effect_Ref[\"new\"](Halogen_Data_Slot.empty)();\n                      var handlerRef = Effect_Ref[\"new\"](handler)();\n                      var pendingQueries = Effect_Ref[\"new\"](new Data_Maybe.Just(Data_List_Types.Nil.value))();\n                      var pendingOuts = Effect_Ref[\"new\"](new Data_Maybe.Just(Data_List_Types.Nil.value))();\n                      var pendingHandlers = Effect_Ref[\"new\"](Data_Maybe.Nothing.value)();\n                      var fresh = Effect_Ref[\"new\"](1)();\n                      var subscriptions = Effect_Ref[\"new\"](new Data_Maybe.Just(Data_Map_Internal.empty))();\n                      var forks = Effect_Ref[\"new\"](Data_Map_Internal.empty)();\n                      var ds = {\n                          component: component,\n                          state: component.initialState(input),\n                          refs: Data_Map_Internal.empty,\n                          children: Halogen_Data_Slot.empty,\n                          childrenIn: childrenIn,\n                          childrenOut: childrenOut,\n                          selfRef: selfRef,\n                          handlerRef: handlerRef,\n                          pendingQueries: pendingQueries,\n                          pendingOuts: pendingOuts,\n                          pendingHandlers: pendingHandlers,\n                          rendering: Data_Maybe.Nothing.value,\n                          fresh: fresh,\n                          subscriptions: subscriptions,\n                          forks: forks,\n                          lifecycleHandlers: lchs\n                      };\n                      Effect_Ref.write(ds)(selfRef)();\n                      return mkDriverStateXRef(selfRef);\n                  };\n              };\n          };\n      };\n  };\n  exports[\"mapDriverState\"] = mapDriverState;\n  exports[\"unDriverStateX\"] = unDriverStateX;\n  exports[\"renderStateX\"] = renderStateX;\n  exports[\"renderStateX_\"] = renderStateX_;\n  exports[\"unRenderStateX\"] = unRenderStateX;\n  exports[\"initDriverState\"] = initDriverState;\n})(PS);\n(function($PS) {\n  // Generated by purs version 0.14.7\n  \"use strict\";\n  $PS[\"Halogen.Query.ChildQuery\"] = $PS[\"Halogen.Query.ChildQuery\"] || {};\n  var exports = $PS[\"Halogen.Query.ChildQuery\"];\n  var Unsafe_Coerce = $PS[\"Unsafe.Coerce\"];\n  var unChildQueryBox = Unsafe_Coerce.unsafeCoerce;\n  exports[\"unChildQueryBox\"] = unChildQueryBox;\n})(PS);\n(function(exports) {\n  \"use strict\";\n\n  exports.reallyUnsafeRefEq = function (a) {\n    return function (b) {\n      return a === b;\n    };\n  };\n})(PS[\"Unsafe.Reference\"] = PS[\"Unsafe.Reference\"] || {});\n(function($PS) {\n  // Generated by purs version 0.14.7\n  \"use strict\";\n  $PS[\"Unsafe.Reference\"] = $PS[\"Unsafe.Reference\"] || {};\n  var exports = $PS[\"Unsafe.Reference\"];\n  var $foreign = $PS[\"Unsafe.Reference\"];\n  var unsafeRefEq = $foreign.reallyUnsafeRefEq;\n  exports[\"unsafeRefEq\"] = unsafeRefEq;\n})(PS);\n(function($PS) {\n  // Generated by purs version 0.14.7\n  \"use strict\";\n  $PS[\"Halogen.Subscription\"] = $PS[\"Halogen.Subscription\"] || {};\n  var exports = $PS[\"Halogen.Subscription\"];\n  var Control_Bind = $PS[\"Control.Bind\"];\n  var Data_Array = $PS[\"Data.Array\"];\n  var Data_Foldable = $PS[\"Data.Foldable\"];\n  var Data_Functor = $PS[\"Data.Functor\"];\n  var Data_Semigroup = $PS[\"Data.Semigroup\"];\n  var Effect = $PS[\"Effect\"];\n  var Effect_Ref = $PS[\"Effect.Ref\"];\n  var Unsafe_Reference = $PS[\"Unsafe.Reference\"];\n  var unsubscribe = function (v) {\n      return v;\n  };\n  var subscribe = function (v) {\n      return function (k) {\n          return v((function () {\n              var $55 = Data_Functor[\"void\"](Effect.functorEffect);\n              return function ($56) {\n                  return $55(k($56));\n              };\n          })());\n      };\n  };                                                                               \n  var notify = function (v) {\n      return function (a) {\n          return v(a);\n      };\n  };\n  var create = function __do() {\n      var subscribers = Effect_Ref[\"new\"]([  ])();\n      return {\n          emitter: function (k) {\n              return function __do() {\n                  Effect_Ref.modify_(function (v) {\n                      return Data_Semigroup.append(Data_Semigroup.semigroupArray)(v)([ k ]);\n                  })(subscribers)();\n                  return Effect_Ref.modify_(Data_Array.deleteBy(Unsafe_Reference.unsafeRefEq)(k))(subscribers);\n              };\n          },\n          listener: function (a) {\n              return Control_Bind.bind(Effect.bindEffect)(Effect_Ref.read(subscribers))(Data_Foldable.traverse_(Effect.applicativeEffect)(Data_Foldable.foldableArray)(function (k) {\n                  return k(a);\n              }));\n          }\n      };\n  };\n  exports[\"create\"] = create;\n  exports[\"notify\"] = notify;\n  exports[\"subscribe\"] = subscribe;\n  exports[\"unsubscribe\"] = unsubscribe;\n})(PS);\n(function($PS) {\n  // Generated by purs version 0.14.7\n  \"use strict\";\n  $PS[\"Halogen.Aff.Driver.Eval\"] = $PS[\"Halogen.Aff.Driver.Eval\"] || {};\n  var exports = $PS[\"Halogen.Aff.Driver.Eval\"];\n  var Control_Applicative = $PS[\"Control.Applicative\"];\n  var Control_Applicative_Free = $PS[\"Control.Applicative.Free\"];\n  var Control_Bind = $PS[\"Control.Bind\"];\n  var Control_Monad = $PS[\"Control.Monad\"];\n  var Control_Monad_Fork_Class = $PS[\"Control.Monad.Fork.Class\"];\n  var Control_Monad_Free = $PS[\"Control.Monad.Free\"];\n  var Control_Parallel = $PS[\"Control.Parallel\"];\n  var Control_Parallel_Class = $PS[\"Control.Parallel.Class\"];\n  var Data_Boolean = $PS[\"Data.Boolean\"];\n  var Data_Coyoneda = $PS[\"Data.Coyoneda\"];\n  var Data_Either = $PS[\"Data.Either\"];\n  var Data_Foldable = $PS[\"Data.Foldable\"];\n  var Data_Function = $PS[\"Data.Function\"];\n  var Data_Functor = $PS[\"Data.Functor\"];\n  var Data_List_Types = $PS[\"Data.List.Types\"];\n  var Data_Map_Internal = $PS[\"Data.Map.Internal\"];\n  var Data_Maybe = $PS[\"Data.Maybe\"];\n  var Data_Ord = $PS[\"Data.Ord\"];\n  var Data_Unit = $PS[\"Data.Unit\"];\n  var Effect = $PS[\"Effect\"];\n  var Effect_Aff = $PS[\"Effect.Aff\"];\n  var Effect_Class = $PS[\"Effect.Class\"];\n  var Effect_Exception = $PS[\"Effect.Exception\"];\n  var Effect_Ref = $PS[\"Effect.Ref\"];\n  var Halogen_Aff_Driver_State = $PS[\"Halogen.Aff.Driver.State\"];\n  var Halogen_Query_ChildQuery = $PS[\"Halogen.Query.ChildQuery\"];\n  var Halogen_Query_HalogenM = $PS[\"Halogen.Query.HalogenM\"];\n  var Halogen_Query_HalogenQ = $PS[\"Halogen.Query.HalogenQ\"];\n  var Halogen_Query_Input = $PS[\"Halogen.Query.Input\"];\n  var Halogen_Subscription = $PS[\"Halogen.Subscription\"];\n  var Unsafe_Reference = $PS[\"Unsafe.Reference\"];                \n  var unsubscribe = function (sid) {\n      return function (ref) {\n          return function __do() {\n              var v = Effect_Ref.read(ref)();\n              var subs = Effect_Ref.read(v.subscriptions)();\n              return Data_Foldable.traverse_(Effect.applicativeEffect)(Data_Foldable.foldableMaybe)(Halogen_Subscription.unsubscribe)(Control_Bind.bindFlipped(Data_Maybe.bindMaybe)(Data_Map_Internal.lookup(Halogen_Query_HalogenM.ordSubscriptionId)(sid))(subs))();\n          };\n      };\n  };\n  var queueOrRun = function (ref) {\n      return function (au) {\n          return Control_Bind.bind(Effect_Aff.bindAff)(Effect_Class.liftEffect(Effect_Aff.monadEffectAff)(Effect_Ref.read(ref)))(function (v) {\n              if (v instanceof Data_Maybe.Nothing) {\n                  return au;\n              };\n              if (v instanceof Data_Maybe.Just) {\n                  return Effect_Class.liftEffect(Effect_Aff.monadEffectAff)(Effect_Ref.write(new Data_Maybe.Just(new Data_List_Types.Cons(au, v.value0)))(ref));\n              };\n              throw new Error(\"Failed pattern match at Halogen.Aff.Driver.Eval (line 182, column 33 - line 184, column 57): \" + [ v.constructor.name ]);\n          });\n      };\n  };\n  var handleLifecycle = function (lchs) {\n      return function (f) {\n          return Control_Bind.discard(Control_Bind.discardUnit)(Effect_Aff.bindAff)(Effect_Class.liftEffect(Effect_Aff.monadEffectAff)(Effect_Ref.write({\n              initializers: Data_List_Types.Nil.value,\n              finalizers: Data_List_Types.Nil.value\n          })(lchs)))(function () {\n              return Control_Bind.bind(Effect_Aff.bindAff)(Effect_Class.liftEffect(Effect_Aff.monadEffectAff)(f))(function (result) {\n                  return Control_Bind.bind(Effect_Aff.bindAff)(Effect_Class.liftEffect(Effect_Aff.monadEffectAff)(Effect_Ref.read(lchs)))(function (v) {\n                      return Control_Bind.discard(Control_Bind.discardUnit)(Effect_Aff.bindAff)(Data_Foldable.traverse_(Effect_Aff.applicativeAff)(Data_List_Types.foldableList)(Control_Monad_Fork_Class.fork(Control_Monad_Fork_Class.monadForkAff))(v.finalizers))(function () {\n                          return Control_Bind.discard(Control_Bind.discardUnit)(Effect_Aff.bindAff)(Control_Parallel.parSequence_(Effect_Aff.parallelAff)(Data_List_Types.foldableList)(v.initializers))(function () {\n                              return Control_Applicative.pure(Effect_Aff.applicativeAff)(result);\n                          });\n                      });\n                  });\n              });\n          });\n      };\n  };\n  var handleAff = Effect_Aff.runAff_(Data_Either.either(Effect_Exception.throwException)(Data_Function[\"const\"](Control_Applicative.pure(Effect.applicativeEffect)(Data_Unit.unit))));\n  var fresh = function (f) {\n      return function (ref) {\n          return Control_Bind.bind(Effect_Aff.bindAff)(Effect_Class.liftEffect(Effect_Aff.monadEffectAff)(Effect_Ref.read(ref)))(function (v) {\n              return Effect_Class.liftEffect(Effect_Aff.monadEffectAff)(Effect_Ref[\"modify'\"](function (i) {\n                  return {\n                      state: i + 1 | 0,\n                      value: f(i)\n                  };\n              })(v.fresh));\n          });\n      };\n  };\n  var evalQ = function (render) {\n      return function (ref) {\n          return function (q) {\n              return Control_Bind.bind(Effect_Aff.bindAff)(Effect_Class.liftEffect(Effect_Aff.monadEffectAff)(Effect_Ref.read(ref)))(function (v) {\n                  return evalM(render)(ref)(v[\"component\"][\"eval\"](new Halogen_Query_HalogenQ.Query(Data_Functor.map(Data_Coyoneda.functorCoyoneda)(Data_Maybe.Just.create)(Data_Coyoneda.liftCoyoneda(q)), Data_Function[\"const\"](Data_Maybe.Nothing.value))));\n              });\n          };\n      };\n  };\n  var evalM = function (render) {\n      return function (initRef) {\n          return function (v) {\n              var evalChildQuery = function (ref) {\n                  return function (cqb) {\n                      return Control_Bind.bind(Effect_Aff.bindAff)(Effect_Class.liftEffect(Effect_Aff.monadEffectAff)(Effect_Ref.read(ref)))(function (v1) {\n                          return Halogen_Query_ChildQuery.unChildQueryBox(function (v2) {\n                              var evalChild = function (v3) {\n                                  return Control_Parallel_Class.parallel(Effect_Aff.parallelAff)(Control_Bind.bind(Effect_Aff.bindAff)(Effect_Class.liftEffect(Effect_Aff.monadEffectAff)(Effect_Ref.read(v3)))(function (dsx) {\n                                      return Halogen_Aff_Driver_State.unDriverStateX(function (ds) {\n                                          return evalQ(render)(ds.selfRef)(v2.value1);\n                                      })(dsx);\n                                  }));\n                              };\n                              return Data_Functor.map(Effect_Aff.functorAff)(v2.value2)(Control_Parallel_Class.sequential(Effect_Aff.parallelAff)(v2.value0(Effect_Aff.applicativeParAff)(evalChild)(v1.children)));\n                          })(cqb);\n                      });\n                  };\n              };\n              var go = function (ref) {\n                  return function (v1) {\n                      if (v1 instanceof Halogen_Query_HalogenM.State) {\n                          return Control_Bind.bind(Effect_Aff.bindAff)(Effect_Class.liftEffect(Effect_Aff.monadEffectAff)(Effect_Ref.read(ref)))(function (v2) {\n                              var v3 = v1.value0(v2.state);\n                              if (Unsafe_Reference.unsafeRefEq(v2.state)(v3.value1)) {\n                                  return Control_Applicative.pure(Effect_Aff.applicativeAff)(v3.value0);\n                              };\n                              if (Data_Boolean.otherwise) {\n                                  return Control_Bind.discard(Control_Bind.discardUnit)(Effect_Aff.bindAff)(Effect_Class.liftEffect(Effect_Aff.monadEffectAff)(Effect_Ref.write({\n                                      component: v2.component,\n                                      state: v3.value1,\n                                      refs: v2.refs,\n                                      children: v2.children,\n                                      childrenIn: v2.childrenIn,\n                                      childrenOut: v2.childrenOut,\n                                      selfRef: v2.selfRef,\n                                      handlerRef: v2.handlerRef,\n                                      pendingQueries: v2.pendingQueries,\n                                      pendingOuts: v2.pendingOuts,\n                                      pendingHandlers: v2.pendingHandlers,\n                                      rendering: v2.rendering,\n                                      fresh: v2.fresh,\n                                      subscriptions: v2.subscriptions,\n                                      forks: v2.forks,\n                                      lifecycleHandlers: v2.lifecycleHandlers\n                                  })(ref)))(function () {\n                                      return Control_Bind.discard(Control_Bind.discardUnit)(Effect_Aff.bindAff)(handleLifecycle(v2.lifecycleHandlers)(render(v2.lifecycleHandlers)(ref)))(function () {\n                                          return Control_Applicative.pure(Effect_Aff.applicativeAff)(v3.value0);\n                                      });\n                                  });\n                              };\n                              throw new Error(\"Failed pattern match at Halogen.Aff.Driver.Eval (line 86, column 7 - line 92, column 21): \" + [ v3.constructor.name ]);\n                          });\n                      };\n                      if (v1 instanceof Halogen_Query_HalogenM.Subscribe) {\n                          return Control_Bind.bind(Effect_Aff.bindAff)(fresh(Halogen_Query_HalogenM.SubscriptionId)(ref))(function (sid) {\n                              return Control_Bind.bind(Effect_Aff.bindAff)(Effect_Class.liftEffect(Effect_Aff.monadEffectAff)(Halogen_Subscription.subscribe(v1.value0(sid))(function (act) {\n                                  return handleAff(evalF(render)(ref)(new Halogen_Query_Input.Action(act)));\n                              })))(function (finalize) {\n                                  return Control_Bind.bind(Effect_Aff.bindAff)(Effect_Class.liftEffect(Effect_Aff.monadEffectAff)(Effect_Ref.read(ref)))(function (v2) {\n                                      return Control_Bind.discard(Control_Bind.discardUnit)(Effect_Aff.bindAff)(Effect_Class.liftEffect(Effect_Aff.monadEffectAff)(Effect_Ref.modify_(Data_Functor.map(Data_Maybe.functorMaybe)(Data_Map_Internal.insert(Halogen_Query_HalogenM.ordSubscriptionId)(sid)(finalize)))(v2.subscriptions)))(function () {\n                                          return Control_Applicative.pure(Effect_Aff.applicativeAff)(v1.value1(sid));\n                                      });\n                                  });\n                              });\n                          });\n                      };\n                      if (v1 instanceof Halogen_Query_HalogenM.Unsubscribe) {\n                          return Control_Bind.discard(Control_Bind.discardUnit)(Effect_Aff.bindAff)(Effect_Class.liftEffect(Effect_Aff.monadEffectAff)(unsubscribe(v1.value0)(ref)))(function () {\n                              return Control_Applicative.pure(Effect_Aff.applicativeAff)(v1.value1);\n                          });\n                      };\n                      if (v1 instanceof Halogen_Query_HalogenM.Lift) {\n                          return v1.value0;\n                      };\n                      if (v1 instanceof Halogen_Query_HalogenM.ChildQuery) {\n                          return evalChildQuery(ref)(v1.value0);\n                      };\n                      if (v1 instanceof Halogen_Query_HalogenM.Raise) {\n                          return Control_Bind.bind(Effect_Aff.bindAff)(Effect_Class.liftEffect(Effect_Aff.monadEffectAff)(Effect_Ref.read(ref)))(function (v2) {\n                              return Control_Bind.bind(Effect_Aff.bindAff)(Effect_Class.liftEffect(Effect_Aff.monadEffectAff)(Effect_Ref.read(v2.handlerRef)))(function (handler) {\n                                  return Control_Bind.discard(Control_Bind.discardUnit)(Effect_Aff.bindAff)(queueOrRun(v2.pendingOuts)(handler(v1.value0)))(function () {\n                                      return Control_Applicative.pure(Effect_Aff.applicativeAff)(v1.value1);\n                                  });\n                              });\n                          });\n                      };\n                      if (v1 instanceof Halogen_Query_HalogenM.Par) {\n                          return Control_Parallel_Class.sequential(Effect_Aff.parallelAff)(Control_Applicative_Free.retractFreeAp(Effect_Aff.applicativeParAff)(Control_Applicative_Free.hoistFreeAp((function () {\n                              var $78 = Control_Parallel_Class.parallel(Effect_Aff.parallelAff);\n                              var $79 = evalM(render)(ref);\n                              return function ($80) {\n                                  return $78($79($80));\n                              };\n                          })())(v1.value0)));\n                      };\n                      if (v1 instanceof Halogen_Query_HalogenM.Fork) {\n                          return Control_Bind.bind(Effect_Aff.bindAff)(fresh(Halogen_Query_HalogenM.ForkId)(ref))(function (fid) {\n                              return Control_Bind.bind(Effect_Aff.bindAff)(Effect_Class.liftEffect(Effect_Aff.monadEffectAff)(Effect_Ref.read(ref)))(function (v2) {\n                                  return Control_Bind.bind(Effect_Aff.bindAff)(Effect_Class.liftEffect(Effect_Aff.monadEffectAff)(Effect_Ref[\"new\"](false)))(function (doneRef) {\n                                      return Control_Bind.bind(Effect_Aff.bindAff)(Control_Monad_Fork_Class.fork(Control_Monad_Fork_Class.monadForkAff)(Effect_Aff[\"finally\"](Effect_Class.liftEffect(Effect_Aff.monadEffectAff)(function __do() {\n                                          Effect_Ref.modify_(Data_Map_Internal[\"delete\"](Halogen_Query_HalogenM.ordForkId)(fid))(v2.forks)();\n                                          return Effect_Ref.write(true)(doneRef)();\n                                      }))(evalM(render)(ref)(v1.value0))))(function (fiber) {\n                                          return Control_Bind.discard(Control_Bind.discardUnit)(Effect_Aff.bindAff)(Effect_Class.liftEffect(Effect_Aff.monadEffectAff)(Control_Monad.unlessM(Effect.monadEffect)(Effect_Ref.read(doneRef))(Effect_Ref.modify_(Data_Map_Internal.insert(Halogen_Query_HalogenM.ordForkId)(fid)(fiber))(v2.forks))))(function () {\n                                              return Control_Applicative.pure(Effect_Aff.applicativeAff)(v1.value1(fid));\n                                          });\n                                      });\n                                  });\n                              });\n                          });\n                      };\n                      if (v1 instanceof Halogen_Query_HalogenM.Kill) {\n                          return Control_Bind.bind(Effect_Aff.bindAff)(Effect_Class.liftEffect(Effect_Aff.monadEffectAff)(Effect_Ref.read(ref)))(function (v2) {\n                              return Control_Bind.bind(Effect_Aff.bindAff)(Effect_Class.liftEffect(Effect_Aff.monadEffectAff)(Effect_Ref.read(v2.forks)))(function (forkMap) {\n                                  return Control_Bind.discard(Control_Bind.discardUnit)(Effect_Aff.bindAff)(Data_Foldable.traverse_(Effect_Aff.applicativeAff)(Data_Foldable.foldableMaybe)(Effect_Aff.killFiber(Effect_Exception.error(\"Cancelled\")))(Data_Map_Internal.lookup(Halogen_Query_HalogenM.ordForkId)(v1.value0)(forkMap)))(function () {\n                                      return Control_Applicative.pure(Effect_Aff.applicativeAff)(v1.value1);\n                                  });\n                              });\n                          });\n                      };\n                      if (v1 instanceof Halogen_Query_HalogenM.GetRef) {\n                          return Control_Bind.bind(Effect_Aff.bindAff)(Effect_Class.liftEffect(Effect_Aff.monadEffectAff)(Effect_Ref.read(ref)))(function (v2) {\n                              return Control_Applicative.pure(Effect_Aff.applicativeAff)(v1.value1(Data_Map_Internal.lookup(Data_Ord.ordString)(v1.value0)(v2.refs)));\n                          });\n                      };\n                      throw new Error(\"Failed pattern match at Halogen.Aff.Driver.Eval (line 83, column 12 - line 133, column 33): \" + [ v1.constructor.name ]);\n                  };\n              };\n              return Control_Monad_Free.foldFree(Effect_Aff.monadRecAff)(go(initRef))(v);\n          };\n      };\n  };\n  var evalF = function (render) {\n      return function (ref) {\n          return function (v) {\n              if (v instanceof Halogen_Query_Input.RefUpdate) {\n                  return Effect_Class.liftEffect(Effect_Aff.monadEffectAff)(Data_Function.flip(Effect_Ref.modify_)(ref)(Halogen_Aff_Driver_State.mapDriverState(function (st) {\n                      return {\n                          component: st.component,\n                          state: st.state,\n                          refs: Data_Map_Internal.alter(Data_Ord.ordString)(Data_Function[\"const\"](v.value1))(v.value0)(st.refs),\n                          children: st.children,\n                          childrenIn: st.childrenIn,\n                          childrenOut: st.childrenOut,\n                          selfRef: st.selfRef,\n                          handlerRef: st.handlerRef,\n                          pendingQueries: st.pendingQueries,\n                          pendingOuts: st.pendingOuts,\n                          pendingHandlers: st.pendingHandlers,\n                          rendering: st.rendering,\n                          fresh: st.fresh,\n                          subscriptions: st.subscriptions,\n                          forks: st.forks,\n                          lifecycleHandlers: st.lifecycleHandlers\n                      };\n                  })));\n              };\n              if (v instanceof Halogen_Query_Input.Action) {\n                  return Control_Bind.bind(Effect_Aff.bindAff)(Effect_Class.liftEffect(Effect_Aff.monadEffectAff)(Effect_Ref.read(ref)))(function (v1) {\n                      return evalM(render)(ref)(v1[\"component\"][\"eval\"](new Halogen_Query_HalogenQ.Action(v.value0, Data_Unit.unit)));\n                  });\n              };\n              throw new Error(\"Failed pattern match at Halogen.Aff.Driver.Eval (line 52, column 20 - line 58, column 62): \" + [ v.constructor.name ]);\n          };\n      };\n  };\n  exports[\"evalF\"] = evalF;\n  exports[\"evalQ\"] = evalQ;\n  exports[\"evalM\"] = evalM;\n  exports[\"handleLifecycle\"] = handleLifecycle;\n  exports[\"queueOrRun\"] = queueOrRun;\n  exports[\"handleAff\"] = handleAff;\n})(PS);\n(function($PS) {\n  // Generated by purs version 0.14.7\n  \"use strict\";\n  $PS[\"Halogen.Aff.Driver\"] = $PS[\"Halogen.Aff.Driver\"] || {};\n  var exports = $PS[\"Halogen.Aff.Driver\"];\n  var Control_Applicative = $PS[\"Control.Applicative\"];\n  var Control_Bind = $PS[\"Control.Bind\"];\n  var Control_Category = $PS[\"Control.Category\"];\n  var Control_Monad_Fork_Class = $PS[\"Control.Monad.Fork.Class\"];\n  var Control_Monad_Rec_Class = $PS[\"Control.Monad.Rec.Class\"];\n  var Control_Parallel = $PS[\"Control.Parallel\"];\n  var Data_Foldable = $PS[\"Data.Foldable\"];\n  var Data_Function = $PS[\"Data.Function\"];\n  var Data_Functor = $PS[\"Data.Functor\"];\n  var Data_List = $PS[\"Data.List\"];\n  var Data_List_Types = $PS[\"Data.List.Types\"];\n  var Data_Map_Internal = $PS[\"Data.Map.Internal\"];\n  var Data_Maybe = $PS[\"Data.Maybe\"];\n  var Data_Unit = $PS[\"Data.Unit\"];\n  var Effect = $PS[\"Effect\"];\n  var Effect_Aff = $PS[\"Effect.Aff\"];\n  var Effect_Class = $PS[\"Effect.Class\"];\n  var Effect_Console = $PS[\"Effect.Console\"];\n  var Effect_Exception = $PS[\"Effect.Exception\"];\n  var Effect_Ref = $PS[\"Effect.Ref\"];\n  var Halogen_Aff_Driver_Eval = $PS[\"Halogen.Aff.Driver.Eval\"];\n  var Halogen_Aff_Driver_State = $PS[\"Halogen.Aff.Driver.State\"];\n  var Halogen_Component = $PS[\"Halogen.Component\"];\n  var Halogen_Data_Slot = $PS[\"Halogen.Data.Slot\"];\n  var Halogen_Query_HalogenQ = $PS[\"Halogen.Query.HalogenQ\"];\n  var Halogen_Query_Input = $PS[\"Halogen.Query.Input\"];\n  var Halogen_Subscription = $PS[\"Halogen.Subscription\"];                \n  var newLifecycleHandlers = Effect_Ref[\"new\"]({\n      initializers: Data_List_Types.Nil.value,\n      finalizers: Data_List_Types.Nil.value\n  });\n  var handlePending = function (ref) {\n      return function __do() {\n          var queue = Effect_Ref.read(ref)();\n          Effect_Ref.write(Data_Maybe.Nothing.value)(ref)();\n          return Data_Foldable.for_(Effect.applicativeEffect)(Data_Foldable.foldableMaybe)(queue)((function () {\n              var $28 = Data_Foldable.traverse_(Effect_Aff.applicativeAff)(Data_List_Types.foldableList)(Control_Monad_Fork_Class.fork(Control_Monad_Fork_Class.monadForkAff));\n              return function ($29) {\n                  return Halogen_Aff_Driver_Eval.handleAff($28(Data_List.reverse($29)));\n              };\n          })())();\n      };\n  };\n  var cleanupSubscriptionsAndForks = function (v) {\n      return function __do() {\n          Control_Bind.bindFlipped(Effect.bindEffect)(Data_Foldable.traverse_(Effect.applicativeEffect)(Data_Foldable.foldableMaybe)(Data_Foldable.traverse_(Effect.applicativeEffect)(Data_Map_Internal.foldableMap)(Halogen_Subscription.unsubscribe)))(Effect_Ref.read(v.subscriptions))();\n          Effect_Ref.write(Data_Maybe.Nothing.value)(v.subscriptions)();\n          Control_Bind.bindFlipped(Effect.bindEffect)(Data_Foldable.traverse_(Effect.applicativeEffect)(Data_Map_Internal.foldableMap)((function () {\n              var $30 = Effect_Aff.killFiber(Effect_Exception.error(\"finalized\"));\n              return function ($31) {\n                  return Halogen_Aff_Driver_Eval.handleAff($30($31));\n              };\n          })()))(Effect_Ref.read(v.forks))();\n          return Effect_Ref.write(Data_Map_Internal.empty)(v.forks)();\n      };\n  };\n  var runUI = function (renderSpec) {\n      return function (component) {\n          return function (i) {\n              var squashChildInitializers = function (lchs) {\n                  return function (preInits) {\n                      return Halogen_Aff_Driver_State.unDriverStateX(function (st) {\n                          var parentInitializer = Halogen_Aff_Driver_Eval.evalM(render)(st.selfRef)(st[\"component\"][\"eval\"](new Halogen_Query_HalogenQ.Initialize(Data_Unit.unit)));\n                          return Effect_Ref.modify_(function (handlers) {\n                              return {\n                                  initializers: new Data_List_Types.Cons(Control_Bind.discard(Control_Bind.discardUnit)(Effect_Aff.bindAff)(Control_Parallel.parSequence_(Effect_Aff.parallelAff)(Data_List_Types.foldableList)(Data_List.reverse(handlers.initializers)))(function () {\n                                      return Control_Bind.discard(Control_Bind.discardUnit)(Effect_Aff.bindAff)(parentInitializer)(function () {\n                                          return Effect_Class.liftEffect(Effect_Aff.monadEffectAff)(function __do() {\n                                              handlePending(st.pendingQueries)();\n                                              return handlePending(st.pendingOuts)();\n                                          });\n                                      });\n                                  }), preInits),\n                                  finalizers: handlers.finalizers\n                              };\n                          })(lchs);\n                      });\n                  };\n              };\n              var runComponent = function (lchs) {\n                  return function (handler) {\n                      return function (j) {\n                          return Halogen_Component.unComponent(function (c) {\n                              return function __do() {\n                                  var lchs$prime = newLifecycleHandlers();\n                                  var $$var = Halogen_Aff_Driver_State.initDriverState(c)(j)(handler)(lchs$prime)();\n                                  var pre = Effect_Ref.read(lchs)();\n                                  Effect_Ref.write({\n                                      initializers: Data_List_Types.Nil.value,\n                                      finalizers: pre.finalizers\n                                  })(lchs)();\n                                  Control_Bind.bindFlipped(Effect.bindEffect)(Halogen_Aff_Driver_State.unDriverStateX((function () {\n                                      var $32 = render(lchs);\n                                      return function ($33) {\n                                          return $32((function (v) {\n                                              return v.selfRef;\n                                          })($33));\n                                      };\n                                  })()))(Effect_Ref.read($$var))();\n                                  Control_Bind.bindFlipped(Effect.bindEffect)(squashChildInitializers(lchs)(pre.initializers))(Effect_Ref.read($$var))();\n                                  return $$var;\n                              };\n                          });\n                      };\n                  };\n              };\n              var renderChild = function (lchs) {\n                  return function (handler) {\n                      return function (childrenInRef) {\n                          return function (childrenOutRef) {\n                              return Halogen_Component.unComponentSlot(function (slot) {\n                                  return function __do() {\n                                      var childrenIn = Data_Functor.map(Effect.functorEffect)(slot.pop)(Effect_Ref.read(childrenInRef))();\n                                      var $$var = (function () {\n                                          if (childrenIn instanceof Data_Maybe.Just) {\n                                              Effect_Ref.write(childrenIn.value0.value1)(childrenInRef)();\n                                              var dsx = Effect_Ref.read(childrenIn.value0.value0)();\n                                              Halogen_Aff_Driver_State.unDriverStateX(function (st) {\n                                                  return function __do() {\n                                                      Data_Function.flip(Effect_Ref.write)(st.handlerRef)((function () {\n                                                          var $34 = Data_Maybe.maybe(Control_Applicative.pure(Effect_Aff.applicativeAff)(Data_Unit.unit))(handler);\n                                                          return function ($35) {\n                                                              return $34(slot.output($35));\n                                                          };\n                                                      })())();\n                                                      return Halogen_Aff_Driver_Eval.handleAff(Halogen_Aff_Driver_Eval.evalM(render)(st.selfRef)(st[\"component\"][\"eval\"](new Halogen_Query_HalogenQ.Receive(slot.input, Data_Unit.unit))))();\n                                                  };\n                                              })(dsx)();\n                                              return childrenIn.value0.value0;\n                                          };\n                                          if (childrenIn instanceof Data_Maybe.Nothing) {\n                                              return runComponent(lchs)((function () {\n                                                  var $36 = Data_Maybe.maybe(Control_Applicative.pure(Effect_Aff.applicativeAff)(Data_Unit.unit))(handler);\n                                                  return function ($37) {\n                                                      return $36(slot.output($37));\n                                                  };\n                                              })())(slot.input)(slot.component)();\n                                          };\n                                          throw new Error(\"Failed pattern match at Halogen.Aff.Driver (line 210, column 14 - line 219, column 98): \" + [ childrenIn.constructor.name ]);\n                                      })();\n                                      var isDuplicate = Data_Functor.map(Effect.functorEffect)(function ($38) {\n                                          return Data_Maybe.isJust(slot.get($38));\n                                      })(Effect_Ref.read(childrenOutRef))();\n                                      Control_Applicative.when(Effect.applicativeEffect)(isDuplicate)(Effect_Console.warn(\"Halogen: Duplicate slot address was detected during rendering, unexpected results may occur\"))();\n                                      Effect_Ref.modify_(slot.set($$var))(childrenOutRef)();\n                                      return Control_Bind.bind(Effect.bindEffect)(Effect_Ref.read($$var))(Halogen_Aff_Driver_State.renderStateX(Effect.functorEffect)(function (v) {\n                                          if (v instanceof Data_Maybe.Nothing) {\n                                              return Effect_Exception[\"throw\"](\"Halogen internal error: child was not initialized in renderChild\");\n                                          };\n                                          if (v instanceof Data_Maybe.Just) {\n                                              return Control_Applicative.pure(Effect.applicativeEffect)(renderSpec.renderChild(v.value0));\n                                          };\n                                          throw new Error(\"Failed pattern match at Halogen.Aff.Driver (line 224, column 37 - line 226, column 50): \" + [ v.constructor.name ]);\n                                      }))();\n                                  };\n                              });\n                          };\n                      };\n                  };\n              };\n              var render = function (lchs) {\n                  return function ($$var) {\n                      return function __do() {\n                          var v = Effect_Ref.read($$var)();\n                          var shouldProcessHandlers = Data_Functor.map(Effect.functorEffect)(Data_Maybe.isNothing)(Effect_Ref.read(v.pendingHandlers))();\n                          Control_Applicative.when(Effect.applicativeEffect)(shouldProcessHandlers)(Effect_Ref.write(new Data_Maybe.Just(Data_List_Types.Nil.value))(v.pendingHandlers))();\n                          Effect_Ref.write(Halogen_Data_Slot.empty)(v.childrenOut)();\n                          Effect_Ref.write(v.children)(v.childrenIn)();\n                          var selfRef = Control_Category.identity(Control_Category.categoryFn)(v.selfRef);\n                          var pendingQueries = Control_Category.identity(Control_Category.categoryFn)(v.pendingQueries);\n                          var pendingHandlers = Control_Category.identity(Control_Category.categoryFn)(v.pendingHandlers);\n                          var handler = (function () {\n                              var $39 = Halogen_Aff_Driver_Eval.queueOrRun(pendingHandlers);\n                              var $40 = Data_Functor[\"void\"](Effect_Aff.functorAff);\n                              var $41 = Halogen_Aff_Driver_Eval.evalF(render)(selfRef);\n                              return function ($42) {\n                                  return $39($40($41($42)));\n                              };\n                          })();\n                          var childHandler = (function () {\n                              var $43 = Halogen_Aff_Driver_Eval.queueOrRun(pendingQueries);\n                              return function ($44) {\n                                  return $43(handler(Halogen_Query_Input.Action.create($44)));\n                              };\n                          })();\n                          var rendering = renderSpec.render(function ($45) {\n                              return Halogen_Aff_Driver_Eval.handleAff(handler($45));\n                          })(renderChild(lchs)(childHandler)(v.childrenIn)(v.childrenOut))(v.component.render(v.state))(v.rendering)();\n                          var children = Effect_Ref.read(v.childrenOut)();\n                          var childrenIn = Effect_Ref.read(v.childrenIn)();\n                          Halogen_Data_Slot.foreachSlot(Effect.applicativeEffect)(childrenIn)(function (v1) {\n                              return function __do() {\n                                  var childDS = Effect_Ref.read(v1)();\n                                  Halogen_Aff_Driver_State.renderStateX_(Effect.applicativeEffect)(renderSpec.removeChild)(childDS)();\n                                  return finalize(lchs)(childDS)();\n                              };\n                          })();\n                          Data_Function.flip(Effect_Ref.modify_)(v.selfRef)(Halogen_Aff_Driver_State.mapDriverState(function (ds$prime) {\n                              return {\n                                  component: ds$prime.component,\n                                  state: ds$prime.state,\n                                  refs: ds$prime.refs,\n                                  children: children,\n                                  childrenIn: ds$prime.childrenIn,\n                                  childrenOut: ds$prime.childrenOut,\n                                  selfRef: ds$prime.selfRef,\n                                  handlerRef: ds$prime.handlerRef,\n                                  pendingQueries: ds$prime.pendingQueries,\n                                  pendingOuts: ds$prime.pendingOuts,\n                                  pendingHandlers: ds$prime.pendingHandlers,\n                                  rendering: new Data_Maybe.Just(rendering),\n                                  fresh: ds$prime.fresh,\n                                  subscriptions: ds$prime.subscriptions,\n                                  forks: ds$prime.forks,\n                                  lifecycleHandlers: ds$prime.lifecycleHandlers\n                              };\n                          }))();\n                          return Control_Applicative.when(Effect.applicativeEffect)(shouldProcessHandlers)(Data_Function.flip(Control_Monad_Rec_Class.tailRecM(Control_Monad_Rec_Class.monadRecEffect))(Data_Unit.unit)(function (v1) {\n                              return function __do() {\n                                  var handlers = Effect_Ref.read(pendingHandlers)();\n                                  Effect_Ref.write(new Data_Maybe.Just(Data_List_Types.Nil.value))(pendingHandlers)();\n                                  Data_Foldable.traverse_(Effect.applicativeEffect)(Data_Foldable.foldableMaybe)((function () {\n                                      var $46 = Data_Foldable.traverse_(Effect_Aff.applicativeAff)(Data_List_Types.foldableList)(Control_Monad_Fork_Class.fork(Control_Monad_Fork_Class.monadForkAff));\n                                      return function ($47) {\n                                          return Halogen_Aff_Driver_Eval.handleAff($46(Data_List.reverse($47)));\n                                      };\n                                  })())(handlers)();\n                                  var mmore = Effect_Ref.read(pendingHandlers)();\n                                  var $21 = Data_Maybe.maybe(false)(Data_List[\"null\"])(mmore);\n                                  if ($21) {\n                                      return Data_Functor.voidLeft(Effect.functorEffect)(Effect_Ref.write(Data_Maybe.Nothing.value)(pendingHandlers))(new Control_Monad_Rec_Class.Done(Data_Unit.unit))();\n                                  };\n                                  return new Control_Monad_Rec_Class.Loop(Data_Unit.unit);\n                              };\n                          }))();\n                      };\n                  };\n              };\n              var finalize = function (lchs) {\n                  return Halogen_Aff_Driver_State.unDriverStateX(function (st) {\n                      return function __do() {\n                          cleanupSubscriptionsAndForks(st)();\n                          var f = Halogen_Aff_Driver_Eval.evalM(render)(st.selfRef)(st[\"component\"][\"eval\"](new Halogen_Query_HalogenQ.Finalize(Data_Unit.unit)));\n                          Effect_Ref.modify_(function (handlers) {\n                              return {\n                                  initializers: handlers.initializers,\n                                  finalizers: new Data_List_Types.Cons(f, handlers.finalizers)\n                              };\n                          })(lchs)();\n                          return Halogen_Data_Slot.foreachSlot(Effect.applicativeEffect)(st.children)(function (v) {\n                              return function __do() {\n                                  var dsx = Effect_Ref.read(v)();\n                                  return finalize(lchs)(dsx)();\n                              };\n                          })();\n                      };\n                  });\n              };\n              var evalDriver = function (disposed) {\n                  return function (ref) {\n                      return function (q) {\n                          return Control_Bind.bind(Effect_Aff.bindAff)(Effect_Class.liftEffect(Effect_Aff.monadEffectAff)(Effect_Ref.read(disposed)))(function (v) {\n                              if (v) {\n                                  return Control_Applicative.pure(Effect_Aff.applicativeAff)(Data_Maybe.Nothing.value);\n                              };\n                              return Halogen_Aff_Driver_Eval.evalQ(render)(ref)(q);\n                          });\n                      };\n                  };\n              };\n              var dispose = function (disposed) {\n                  return function (lchs) {\n                      return function (dsx) {\n                          return Halogen_Aff_Driver_Eval.handleLifecycle(lchs)(function __do() {\n                              var v = Effect_Ref.read(disposed)();\n                              if (v) {\n                                  return Data_Unit.unit;\n                              };\n                              Effect_Ref.write(true)(disposed)();\n                              finalize(lchs)(dsx)();\n                              return Halogen_Aff_Driver_State.unDriverStateX(function (v1) {\n                                  return function __do() {\n                                      var v2 = Effect_Class.liftEffect(Effect_Class.monadEffectEffect)(Effect_Ref.read(v1.selfRef))();\n                                      return Data_Foldable.for_(Effect.applicativeEffect)(Data_Foldable.foldableMaybe)(v2.rendering)(renderSpec.dispose)();\n                                  };\n                              })(dsx)();\n                          });\n                      };\n                  };\n              };\n              return Control_Bind.bind(Effect_Aff.bindAff)(Effect_Class.liftEffect(Effect_Aff.monadEffectAff)(newLifecycleHandlers))(function (lchs) {\n                  return Control_Bind.bind(Effect_Aff.bindAff)(Effect_Class.liftEffect(Effect_Aff.monadEffectAff)(Effect_Ref[\"new\"](false)))(function (disposed) {\n                      return Halogen_Aff_Driver_Eval.handleLifecycle(lchs)(function __do() {\n                          var sio = Halogen_Subscription.create();\n                          var dsx = Control_Bind.bindFlipped(Effect.bindEffect)(Effect_Ref.read)(runComponent(lchs)((function () {\n                              var $48 = Effect_Class.liftEffect(Effect_Aff.monadEffectAff);\n                              var $49 = Halogen_Subscription.notify(sio.listener);\n                              return function ($50) {\n                                  return $48($49($50));\n                              };\n                          })())(i)(component))();\n                          return Halogen_Aff_Driver_State.unDriverStateX(function (st) {\n                              return Control_Applicative.pure(Effect.applicativeEffect)({\n                                  query: evalDriver(disposed)(st.selfRef),\n                                  messages: sio.emitter,\n                                  dispose: dispose(disposed)(lchs)(dsx)\n                              });\n                          })(dsx)();\n                      });\n                  });\n              });\n          };\n      };\n  };\n  exports[\"runUI\"] = runUI;\n})(PS);\n(function(exports) {\n  \"use strict\";                                               \n\n  exports._querySelector = function (selector) {\n    return function (node) {\n      return function () {\n        return node.querySelector(selector);\n      };\n    };\n  };\n})(PS[\"Web.DOM.ParentNode\"] = PS[\"Web.DOM.ParentNode\"] || {});\n(function($PS) {\n  // Generated by purs version 0.14.7\n  \"use strict\";\n  $PS[\"Web.DOM.ParentNode\"] = $PS[\"Web.DOM.ParentNode\"] || {};\n  var exports = $PS[\"Web.DOM.ParentNode\"];\n  var $foreign = $PS[\"Web.DOM.ParentNode\"];\n  var Data_Functor = $PS[\"Data.Functor\"];\n  var Data_Nullable = $PS[\"Data.Nullable\"];\n  var Effect = $PS[\"Effect\"];\n  var querySelector = function (qs) {\n      var $0 = Data_Functor.map(Effect.functorEffect)(Data_Nullable.toMaybe);\n      var $1 = $foreign[\"_querySelector\"](qs);\n      return function ($2) {\n          return $0($1($2));\n      };\n  };\n  exports[\"querySelector\"] = querySelector;\n})(PS);\n(function($PS) {\n  // Generated by purs version 0.14.7\n  \"use strict\";\n  $PS[\"Halogen.Aff.Util\"] = $PS[\"Halogen.Aff.Util\"] || {};\n  var exports = $PS[\"Halogen.Aff.Util\"];\n  var Control_Applicative = $PS[\"Control.Applicative\"];\n  var Control_Bind = $PS[\"Control.Bind\"];\n  var Data_Either = $PS[\"Data.Either\"];\n  var Data_Function = $PS[\"Data.Function\"];\n  var Data_Maybe = $PS[\"Data.Maybe\"];\n  var Data_Unit = $PS[\"Data.Unit\"];\n  var Effect = $PS[\"Effect\"];\n  var Effect_Aff = $PS[\"Effect.Aff\"];\n  var Effect_Class = $PS[\"Effect.Class\"];\n  var Effect_Exception = $PS[\"Effect.Exception\"];\n  var Web_DOM_ParentNode = $PS[\"Web.DOM.ParentNode\"];\n  var Web_HTML = $PS[\"Web.HTML\"];\n  var Web_HTML_HTMLDocument = $PS[\"Web.HTML.HTMLDocument\"];\n  var Web_HTML_HTMLElement = $PS[\"Web.HTML.HTMLElement\"];\n  var Web_HTML_Window = $PS[\"Web.HTML.Window\"];                \n  var selectElement = function (query) {\n      return Control_Bind.bind(Effect_Aff.bindAff)(Effect_Class.liftEffect(Effect_Aff.monadEffectAff)(Control_Bind.bindFlipped(Effect.bindEffect)(Control_Bind.composeKleisliFlipped(Effect.bindEffect)((function () {\n          var $2 = Web_DOM_ParentNode.querySelector(query);\n          return function ($3) {\n              return $2(Web_HTML_HTMLDocument.toParentNode($3));\n          };\n      })())(Web_HTML_Window.document))(Web_HTML.window)))(function (mel) {\n          return Control_Applicative.pure(Effect_Aff.applicativeAff)(Control_Bind.bindFlipped(Data_Maybe.bindMaybe)(Web_HTML_HTMLElement.fromElement)(mel));\n      });\n  };\n  var runHalogenAff = Effect_Aff.runAff_(Data_Either.either(Effect_Exception.throwException)(Data_Function[\"const\"](Control_Applicative.pure(Effect.applicativeEffect)(Data_Unit.unit))));\n  exports[\"selectElement\"] = selectElement;\n  exports[\"runHalogenAff\"] = runHalogenAff;\n})(PS);\n(function(exports) {\n  \"use strict\";\n\n  exports.setAttribute = function (name) {\n    return function (value) {\n      return function (element) {\n        return function () {\n          element.setAttribute(name, value);\n        };\n      };\n    };\n  };\n})(PS[\"Web.DOM.Element\"] = PS[\"Web.DOM.Element\"] || {});\n(function($PS) {\n  // Generated by purs version 0.14.7\n  \"use strict\";\n  $PS[\"Web.DOM.Element\"] = $PS[\"Web.DOM.Element\"] || {};\n  var exports = $PS[\"Web.DOM.Element\"];\n  var $foreign = $PS[\"Web.DOM.Element\"];\n  var Unsafe_Coerce = $PS[\"Unsafe.Coerce\"];                   \n  var toNode = Unsafe_Coerce.unsafeCoerce;\n  exports[\"toNode\"] = toNode;\n  exports[\"setAttribute\"] = $foreign.setAttribute;\n})(PS);\n(function($PS) {\n  // Generated by purs version 0.14.7\n  \"use strict\";\n  $PS[\"Halogen.VDom.DOM\"] = $PS[\"Halogen.VDom.DOM\"] || {};\n  var exports = $PS[\"Halogen.VDom.DOM\"];\n  var Data_Array = $PS[\"Data.Array\"];\n  var Data_Boolean = $PS[\"Data.Boolean\"];\n  var Data_Maybe = $PS[\"Data.Maybe\"];\n  var Data_Nullable = $PS[\"Data.Nullable\"];\n  var Data_Tuple = $PS[\"Data.Tuple\"];\n  var Halogen_VDom_Machine = $PS[\"Halogen.VDom.Machine\"];\n  var Halogen_VDom_Types = $PS[\"Halogen.VDom.Types\"];\n  var Halogen_VDom_Util = $PS[\"Halogen.VDom.Util\"];\n  var Web_DOM_Element = $PS[\"Web.DOM.Element\"];\n  var haltWidget = function (v) {\n      return Halogen_VDom_Machine.halt(v.widget);\n  };\n  var patchWidget = function (state, vdom) {\n      if (vdom instanceof Halogen_VDom_Types.Grafted) {\n          return patchWidget(state, Halogen_VDom_Types.runGraft(vdom.value0));\n      };\n      if (vdom instanceof Halogen_VDom_Types.Widget) {\n          var res = Halogen_VDom_Machine.step(state.widget, vdom.value0);\n          var res$prime = Halogen_VDom_Machine.unStep(function (v) {\n              return Halogen_VDom_Machine.mkStep(new Halogen_VDom_Machine.Step(v.value0, {\n                  build: state.build,\n                  widget: res\n              }, patchWidget, haltWidget));\n          })(res);\n          return res$prime;\n      };\n      haltWidget(state);\n      return state.build(vdom);\n  };\n  var haltText = function (v) {\n      var parent = Halogen_VDom_Util.parentNode(v.node);\n      return Halogen_VDom_Util.removeChild(v.node, parent);\n  };\n  var patchText = function (state, vdom) {\n      if (vdom instanceof Halogen_VDom_Types.Grafted) {\n          return patchText(state, Halogen_VDom_Types.runGraft(vdom.value0));\n      };\n      if (vdom instanceof Halogen_VDom_Types.Text) {\n          if (state.value === vdom.value0) {\n              return Halogen_VDom_Machine.mkStep(new Halogen_VDom_Machine.Step(state.node, state, patchText, haltText));\n          };\n          if (Data_Boolean.otherwise) {\n              var nextState = {\n                  build: state.build,\n                  node: state.node,\n                  value: vdom.value0\n              };\n              Halogen_VDom_Util.setTextContent(vdom.value0, state.node);\n              return Halogen_VDom_Machine.mkStep(new Halogen_VDom_Machine.Step(state.node, nextState, patchText, haltText));\n          };\n      };\n      haltText(state);\n      return state.build(vdom);\n  };\n  var haltKeyed = function (v) {\n      var parent = Halogen_VDom_Util.parentNode(v.node);\n      Halogen_VDom_Util.removeChild(v.node, parent);\n      Halogen_VDom_Util.forInE(v.children, function (v1, s) {\n          return Halogen_VDom_Machine.halt(s);\n      });\n      return Halogen_VDom_Machine.halt(v.attrs);\n  };\n  var haltElem = function (v) {\n      var parent = Halogen_VDom_Util.parentNode(v.node);\n      Halogen_VDom_Util.removeChild(v.node, parent);\n      Halogen_VDom_Util.forEachE(v.children, Halogen_VDom_Machine.halt);\n      return Halogen_VDom_Machine.halt(v.attrs);\n  };\n  var eqElemSpec = function (ns1, v, ns2, v1) {\n      var $58 = v === v1;\n      if ($58) {\n          if (ns1 instanceof Data_Maybe.Just && (ns2 instanceof Data_Maybe.Just && ns1.value0 === ns2.value0)) {\n              return true;\n          };\n          if (ns1 instanceof Data_Maybe.Nothing && ns2 instanceof Data_Maybe.Nothing) {\n              return true;\n          };\n          return false;\n      };\n      return false;\n  };\n  var patchElem = function (state, vdom) {\n      if (vdom instanceof Halogen_VDom_Types.Grafted) {\n          return patchElem(state, Halogen_VDom_Types.runGraft(vdom.value0));\n      };\n      if (vdom instanceof Halogen_VDom_Types.Elem && eqElemSpec(state.ns, state.name, vdom.value0, vdom.value1)) {\n          var v = Data_Array.length(vdom.value3);\n          var v1 = Data_Array.length(state.children);\n          if (v1 === 0 && v === 0) {\n              var attrs2 = Halogen_VDom_Machine.step(state.attrs, vdom.value2);\n              var nextState = {\n                  build: state.build,\n                  node: state.node,\n                  attrs: attrs2,\n                  ns: vdom.value0,\n                  name: vdom.value1,\n                  children: state.children\n              };\n              return Halogen_VDom_Machine.mkStep(new Halogen_VDom_Machine.Step(state.node, nextState, patchElem, haltElem));\n          };\n          var onThis = function (v2, s) {\n              return Halogen_VDom_Machine.halt(s);\n          };\n          var onThese = function (ix, s, v2) {\n              var res = Halogen_VDom_Machine.step(s, v2);\n              Halogen_VDom_Util.insertChildIx(ix, Halogen_VDom_Machine.extract(res), state.node);\n              return res;\n          };\n          var onThat = function (ix, v2) {\n              var res = state.build(v2);\n              Halogen_VDom_Util.insertChildIx(ix, Halogen_VDom_Machine.extract(res), state.node);\n              return res;\n          };\n          var children2 = Halogen_VDom_Util.diffWithIxE(state.children, vdom.value3, onThese, onThis, onThat);\n          var attrs2 = Halogen_VDom_Machine.step(state.attrs, vdom.value2);\n          var nextState = {\n              build: state.build,\n              node: state.node,\n              attrs: attrs2,\n              ns: vdom.value0,\n              name: vdom.value1,\n              children: children2\n          };\n          return Halogen_VDom_Machine.mkStep(new Halogen_VDom_Machine.Step(state.node, nextState, patchElem, haltElem));\n      };\n      haltElem(state);\n      return state.build(vdom);\n  };\n  var patchKeyed = function (state, vdom) {\n      if (vdom instanceof Halogen_VDom_Types.Grafted) {\n          return patchKeyed(state, Halogen_VDom_Types.runGraft(vdom.value0));\n      };\n      if (vdom instanceof Halogen_VDom_Types.Keyed && eqElemSpec(state.ns, state.name, vdom.value0, vdom.value1)) {\n          var v = Data_Array.length(vdom.value3);\n          if (state.length === 0 && v === 0) {\n              var attrs2 = Halogen_VDom_Machine.step(state.attrs, vdom.value2);\n              var nextState = {\n                  build: state.build,\n                  node: state.node,\n                  attrs: attrs2,\n                  ns: vdom.value0,\n                  name: vdom.value1,\n                  children: state.children,\n                  length: 0\n              };\n              return Halogen_VDom_Machine.mkStep(new Halogen_VDom_Machine.Step(state.node, nextState, patchKeyed, haltKeyed));\n          };\n          var onThis = function (v2, s) {\n              return Halogen_VDom_Machine.halt(s);\n          };\n          var onThese = function (v2, ix$prime, s, v3) {\n              var res = Halogen_VDom_Machine.step(s, v3.value1);\n              Halogen_VDom_Util.insertChildIx(ix$prime, Halogen_VDom_Machine.extract(res), state.node);\n              return res;\n          };\n          var onThat = function (v2, ix, v3) {\n              var res = state.build(v3.value1);\n              Halogen_VDom_Util.insertChildIx(ix, Halogen_VDom_Machine.extract(res), state.node);\n              return res;\n          };\n          var children2 = Halogen_VDom_Util.diffWithKeyAndIxE(state.children, vdom.value3, Data_Tuple.fst, onThese, onThis, onThat);\n          var attrs2 = Halogen_VDom_Machine.step(state.attrs, vdom.value2);\n          var nextState = {\n              build: state.build,\n              node: state.node,\n              attrs: attrs2,\n              ns: vdom.value0,\n              name: vdom.value1,\n              children: children2,\n              length: v\n          };\n          return Halogen_VDom_Machine.mkStep(new Halogen_VDom_Machine.Step(state.node, nextState, patchKeyed, haltKeyed));\n      };\n      haltKeyed(state);\n      return state.build(vdom);\n  };\n  var buildWidget = function (v, build, w) {\n      var res = v.buildWidget(v)(w);\n      var res$prime = Halogen_VDom_Machine.unStep(function (v1) {\n          return Halogen_VDom_Machine.mkStep(new Halogen_VDom_Machine.Step(v1.value0, {\n              build: build,\n              widget: res\n          }, patchWidget, haltWidget));\n      })(res);\n      return res$prime;\n  };\n  var buildText = function (v, build, s) {\n      var node = Halogen_VDom_Util.createTextNode(s, v.document);\n      var state = {\n          build: build,\n          node: node,\n          value: s\n      };\n      return Halogen_VDom_Machine.mkStep(new Halogen_VDom_Machine.Step(node, state, patchText, haltText));\n  };\n  var buildKeyed = function (v, build, ns1, name1, as1, ch1) {\n      var el = Halogen_VDom_Util.createElement(Data_Nullable.toNullable(ns1), name1, v.document);\n      var node = Web_DOM_Element.toNode(el);\n      var onChild = function (v1, ix, v2) {\n          var res = build(v2.value1);\n          Halogen_VDom_Util.insertChildIx(ix, Halogen_VDom_Machine.extract(res), node);\n          return res;\n      };\n      var children = Halogen_VDom_Util.strMapWithIxE(ch1, Data_Tuple.fst, onChild);\n      var attrs = v.buildAttributes(el)(as1);\n      var state = {\n          build: build,\n          node: node,\n          attrs: attrs,\n          ns: ns1,\n          name: name1,\n          children: children,\n          length: Data_Array.length(ch1)\n      };\n      return Halogen_VDom_Machine.mkStep(new Halogen_VDom_Machine.Step(node, state, patchKeyed, haltKeyed));\n  };\n  var buildElem = function (v, build, ns1, name1, as1, ch1) {\n      var el = Halogen_VDom_Util.createElement(Data_Nullable.toNullable(ns1), name1, v.document);\n      var node = Web_DOM_Element.toNode(el);\n      var onChild = function (ix, child) {\n          var res = build(child);\n          Halogen_VDom_Util.insertChildIx(ix, Halogen_VDom_Machine.extract(res), node);\n          return res;\n      };\n      var children = Halogen_VDom_Util.forE(ch1, onChild);\n      var attrs = v.buildAttributes(el)(as1);\n      var state = {\n          build: build,\n          node: node,\n          attrs: attrs,\n          ns: ns1,\n          name: name1,\n          children: children\n      };\n      return Halogen_VDom_Machine.mkStep(new Halogen_VDom_Machine.Step(node, state, patchElem, haltElem));\n  };\n  var buildVDom = function (spec) {\n      var build = function (v) {\n          if (v instanceof Halogen_VDom_Types.Text) {\n              return buildText(spec, build, v.value0);\n          };\n          if (v instanceof Halogen_VDom_Types.Elem) {\n              return buildElem(spec, build, v.value0, v.value1, v.value2, v.value3);\n          };\n          if (v instanceof Halogen_VDom_Types.Keyed) {\n              return buildKeyed(spec, build, v.value0, v.value1, v.value2, v.value3);\n          };\n          if (v instanceof Halogen_VDom_Types.Widget) {\n              return buildWidget(spec, build, v.value0);\n          };\n          if (v instanceof Halogen_VDom_Types.Grafted) {\n              return build(Halogen_VDom_Types.runGraft(v.value0));\n          };\n          throw new Error(\"Failed pattern match at Halogen.VDom.DOM (line 58, column 27 - line 63, column 52): \" + [ v.constructor.name ]);\n      };\n      return build;\n  };\n  exports[\"buildVDom\"] = buildVDom;\n})(PS);\n(function($PS) {\n  // Generated by purs version 0.14.7\n  \"use strict\";\n  $PS[\"Halogen.VDom.Thunk\"] = $PS[\"Halogen.VDom.Thunk\"] || {};\n  var exports = $PS[\"Halogen.VDom.Thunk\"];\n  var Halogen_VDom_DOM = $PS[\"Halogen.VDom.DOM\"];\n  var Halogen_VDom_Machine = $PS[\"Halogen.VDom.Machine\"];\n  var Halogen_VDom_Util = $PS[\"Halogen.VDom.Util\"];        \n  var Thunk = (function () {\n      function Thunk(value0, value1, value2, value3) {\n          this.value0 = value0;\n          this.value1 = value1;\n          this.value2 = value2;\n          this.value3 = value3;\n      };\n      Thunk.create = function (value0) {\n          return function (value1) {\n              return function (value2) {\n                  return function (value3) {\n                      return new Thunk(value0, value1, value2, value3);\n                  };\n              };\n          };\n      };\n      return Thunk;\n  })();                                          \n  var unsafeEqThunk = function (v, v1) {\n      return Halogen_VDom_Util.refEq(v.value0, v1.value0) && (Halogen_VDom_Util.refEq(v.value1, v1.value1) && v.value1(v.value3, v1.value3));\n  };\n  var thunk = function (tid, eqFn, f, a) {\n      return new Thunk(tid, eqFn, f, a);\n  };\n  var runThunk = function (v) {\n      return v.value2(v.value3);\n  };\n  var buildThunk = function (toVDom) {\n      var haltThunk = function (state) {\n          return Halogen_VDom_Machine.halt(state.vdom);\n      };\n      var patchThunk = function (state, t2) {\n          var $43 = unsafeEqThunk(state.thunk, t2);\n          if ($43) {\n              return Halogen_VDom_Machine.mkStep(new Halogen_VDom_Machine.Step(Halogen_VDom_Machine.extract(state.vdom), state, patchThunk, haltThunk));\n          };\n          var vdom = Halogen_VDom_Machine.step(state.vdom, toVDom(runThunk(t2)));\n          return Halogen_VDom_Machine.mkStep(new Halogen_VDom_Machine.Step(Halogen_VDom_Machine.extract(vdom), {\n              vdom: vdom,\n              thunk: t2\n          }, patchThunk, haltThunk));\n      };\n      var renderThunk = function (spec) {\n          return function (t) {\n              var vdom = Halogen_VDom_DOM.buildVDom(spec)(toVDom(runThunk(t)));\n              return Halogen_VDom_Machine.mkStep(new Halogen_VDom_Machine.Step(Halogen_VDom_Machine.extract(vdom), {\n                  thunk: t,\n                  vdom: vdom\n              }, patchThunk, haltThunk));\n          };\n      };\n      return renderThunk;\n  };\n  exports[\"buildThunk\"] = buildThunk;\n})(PS);\n(function(exports) {\n  \"use strict\";\n\n  var getEffProp = function (name) {\n    return function (node) {\n      return function () {\n        return node[name];\n      };\n    };\n  };                                                   \n\n  exports._parentNode = getEffProp(\"parentNode\");          \n\n  exports._nextSibling = getEffProp(\"nextSibling\");\n\n  exports.insertBefore = function (node1) {\n    return function (node2) {\n      return function (parent) {\n        return function () {\n          parent.insertBefore(node1, node2);\n        };\n      };\n    };\n  };\n\n  exports.appendChild = function (node) {\n    return function (parent) {\n      return function () {\n        parent.appendChild(node);\n      };\n    };\n  };\n\n  exports.removeChild = function (node) {\n    return function (parent) {\n      return function () {\n        parent.removeChild(node);\n      };\n    };\n  };\n})(PS[\"Web.DOM.Node\"] = PS[\"Web.DOM.Node\"] || {});\n(function($PS) {\n  // Generated by purs version 0.14.7\n  \"use strict\";\n  $PS[\"Web.DOM.Node\"] = $PS[\"Web.DOM.Node\"] || {};\n  var exports = $PS[\"Web.DOM.Node\"];\n  var $foreign = $PS[\"Web.DOM.Node\"];\n  var Data_Functor = $PS[\"Data.Functor\"];\n  var Data_Nullable = $PS[\"Data.Nullable\"];\n  var Effect = $PS[\"Effect\"];\n  var parentNode = (function () {\n      var $2 = Data_Functor.map(Effect.functorEffect)(Data_Nullable.toMaybe);\n      return function ($3) {\n          return $2($foreign[\"_parentNode\"]($3));\n      };\n  })();\n  var nextSibling = (function () {\n      var $13 = Data_Functor.map(Effect.functorEffect)(Data_Nullable.toMaybe);\n      return function ($14) {\n          return $13($foreign[\"_nextSibling\"]($14));\n      };\n  })();\n  exports[\"parentNode\"] = parentNode;\n  exports[\"nextSibling\"] = nextSibling;\n  exports[\"insertBefore\"] = $foreign.insertBefore;\n  exports[\"appendChild\"] = $foreign.appendChild;\n  exports[\"removeChild\"] = $foreign.removeChild;\n})(PS);\n(function($PS) {\n  // Generated by purs version 0.14.7\n  \"use strict\";\n  $PS[\"Halogen.VDom.Driver\"] = $PS[\"Halogen.VDom.Driver\"] || {};\n  var exports = $PS[\"Halogen.VDom.Driver\"];\n  var Control_Applicative = $PS[\"Control.Applicative\"];\n  var Control_Bind = $PS[\"Control.Bind\"];\n  var Control_Category = $PS[\"Control.Category\"];\n  var Data_Foldable = $PS[\"Data.Foldable\"];\n  var Data_Functor = $PS[\"Data.Functor\"];\n  var Data_HeytingAlgebra = $PS[\"Data.HeytingAlgebra\"];\n  var Data_Maybe = $PS[\"Data.Maybe\"];\n  var Data_Newtype = $PS[\"Data.Newtype\"];\n  var Data_Unit = $PS[\"Data.Unit\"];\n  var Effect = $PS[\"Effect\"];\n  var Effect_Aff = $PS[\"Effect.Aff\"];\n  var Effect_Class = $PS[\"Effect.Class\"];\n  var Effect_Ref = $PS[\"Effect.Ref\"];\n  var Halogen_Aff_Driver = $PS[\"Halogen.Aff.Driver\"];\n  var Halogen_Aff_Driver_State = $PS[\"Halogen.Aff.Driver.State\"];\n  var Halogen_Component = $PS[\"Halogen.Component\"];\n  var Halogen_VDom_DOM = $PS[\"Halogen.VDom.DOM\"];\n  var Halogen_VDom_DOM_Prop = $PS[\"Halogen.VDom.DOM.Prop\"];\n  var Halogen_VDom_Machine = $PS[\"Halogen.VDom.Machine\"];\n  var Halogen_VDom_Thunk = $PS[\"Halogen.VDom.Thunk\"];\n  var Unsafe_Reference = $PS[\"Unsafe.Reference\"];\n  var Web_DOM_Node = $PS[\"Web.DOM.Node\"];\n  var Web_HTML = $PS[\"Web.HTML\"];\n  var Web_HTML_HTMLDocument = $PS[\"Web.HTML.HTMLDocument\"];\n  var Web_HTML_HTMLElement = $PS[\"Web.HTML.HTMLElement\"];\n  var Web_HTML_Window = $PS[\"Web.HTML.Window\"];\n  var substInParent = function (v) {\n      return function (v1) {\n          return function (v2) {\n              if (v1 instanceof Data_Maybe.Just && v2 instanceof Data_Maybe.Just) {\n                  return Data_Functor[\"void\"](Effect.functorEffect)(Web_DOM_Node.insertBefore(v)(v1.value0)(v2.value0));\n              };\n              if (v1 instanceof Data_Maybe.Nothing && v2 instanceof Data_Maybe.Just) {\n                  return Data_Functor[\"void\"](Effect.functorEffect)(Web_DOM_Node.appendChild(v)(v2.value0));\n              };\n              return Control_Applicative.pure(Effect.applicativeEffect)(Data_Unit.unit);\n          };\n      };\n  };\n  var removeChild = function (v) {\n      return function __do() {\n          var npn = Web_DOM_Node.parentNode(v.node)();\n          return Data_Foldable.traverse_(Effect.applicativeEffect)(Data_Foldable.foldableMaybe)(function (pn) {\n              return Web_DOM_Node.removeChild(v.node)(pn);\n          })(npn)();\n      };\n  };\n  var mkSpec = function (handler) {\n      return function (renderChildRef) {\n          return function (document) {\n              var getNode = Halogen_Aff_Driver_State.unRenderStateX(function (v) {\n                  return v.node;\n              });\n              var done = function (st) {\n                  if (st instanceof Data_Maybe.Just) {\n                      return Halogen_VDom_Machine.halt(st.value0);\n                  };\n                  return Data_Unit.unit;\n              };\n              var buildWidget = function (spec) {\n                  var buildThunk = Halogen_VDom_Thunk.buildThunk(Data_Newtype.unwrap())(spec);\n                  var renderComponentSlot = function (cs) {\n                      var renderChild = Effect_Ref.read(renderChildRef)();\n                      var rsx = renderChild(cs)();\n                      var node = getNode(rsx);\n                      return Halogen_VDom_Machine.mkStep(new Halogen_VDom_Machine.Step(node, Data_Maybe.Nothing.value, patch, done));\n                  };\n                  var render = function (slot) {\n                      if (slot instanceof Halogen_Component.ComponentSlot) {\n                          return renderComponentSlot(slot.value0);\n                      };\n                      if (slot instanceof Halogen_Component.ThunkSlot) {\n                          var step = buildThunk(slot.value0);\n                          return Halogen_VDom_Machine.mkStep(new Halogen_VDom_Machine.Step(Halogen_VDom_Machine.extract(step), new Data_Maybe.Just(step), patch, done));\n                      };\n                      throw new Error(\"Failed pattern match at Halogen.VDom.Driver (line 85, column 7 - line 90, column 75): \" + [ slot.constructor.name ]);\n                  };\n                  var patch = function (st, slot) {\n                      if (st instanceof Data_Maybe.Just) {\n                          if (slot instanceof Halogen_Component.ComponentSlot) {\n                              Halogen_VDom_Machine.halt(st.value0);\n                              return renderComponentSlot(slot.value0);\n                          };\n                          if (slot instanceof Halogen_Component.ThunkSlot) {\n                              var step$prime = Halogen_VDom_Machine.step(st.value0, slot.value0);\n                              return Halogen_VDom_Machine.mkStep(new Halogen_VDom_Machine.Step(Halogen_VDom_Machine.extract(step$prime), new Data_Maybe.Just(step$prime), patch, done));\n                          };\n                          throw new Error(\"Failed pattern match at Halogen.VDom.Driver (line 98, column 22 - line 104, column 79): \" + [ slot.constructor.name ]);\n                      };\n                      return render(slot);\n                  };\n                  return render;\n              };\n              var buildAttributes = Halogen_VDom_DOM_Prop.buildProp(handler);\n              return {\n                  buildWidget: buildWidget,\n                  buildAttributes: buildAttributes,\n                  document: document\n              };\n          };\n      };\n  };\n  var renderSpec = function (document) {\n      return function (container) {\n          var render = function (handler) {\n              return function (child) {\n                  return function (v) {\n                      return function (v1) {\n                          if (v1 instanceof Data_Maybe.Nothing) {\n                              return function __do() {\n                                  var renderChildRef = Effect_Ref[\"new\"](child)();\n                                  var spec = mkSpec(handler)(renderChildRef)(document);\n                                  var machine = Halogen_VDom_DOM.buildVDom(spec)(v);\n                                  var node = Halogen_VDom_Machine.extract(machine);\n                                  Data_Functor[\"void\"](Effect.functorEffect)(Web_DOM_Node.appendChild(node)(Web_HTML_HTMLElement.toNode(container)))();\n                                  return {\n                                      machine: machine,\n                                      node: node,\n                                      renderChildRef: renderChildRef\n                                  };\n                              };\n                          };\n                          if (v1 instanceof Data_Maybe.Just) {\n                              return function __do() {\n                                  Effect_Ref.write(child)(v1.value0.renderChildRef)();\n                                  var parent = Web_DOM_Node.parentNode(v1.value0.node)();\n                                  var nextSib = Web_DOM_Node.nextSibling(v1.value0.node)();\n                                  var machine$prime = Halogen_VDom_Machine.step(v1.value0.machine, v);\n                                  var newNode = Halogen_VDom_Machine.extract(machine$prime);\n                                  Control_Applicative.when(Effect.applicativeEffect)(Data_HeytingAlgebra.not(Data_HeytingAlgebra.heytingAlgebraFunction(Data_HeytingAlgebra.heytingAlgebraFunction(Data_HeytingAlgebra.heytingAlgebraBoolean)))(Unsafe_Reference.unsafeRefEq)(v1.value0.node)(newNode))(substInParent(newNode)(nextSib)(parent))();\n                                  return {\n                                      machine: machine$prime,\n                                      node: newNode,\n                                      renderChildRef: v1.value0.renderChildRef\n                                  };\n                              };\n                          };\n                          throw new Error(\"Failed pattern match at Halogen.VDom.Driver (line 159, column 5 - line 175, column 80): \" + [ v1.constructor.name ]);\n                      };\n                  };\n              };\n          };\n          return {\n              render: render,\n              renderChild: Control_Category.identity(Control_Category.categoryFn),\n              removeChild: removeChild,\n              dispose: removeChild\n          };\n      };\n  };\n  var runUI = function (component) {\n      return function (i) {\n          return function (element) {\n              return Control_Bind.bind(Effect_Aff.bindAff)(Effect_Class.liftEffect(Effect_Aff.monadEffectAff)(Data_Functor.map(Effect.functorEffect)(Web_HTML_HTMLDocument.toDocument)(Control_Bind.bindFlipped(Effect.bindEffect)(Web_HTML_Window.document)(Web_HTML.window))))(function (document) {\n                  return Halogen_Aff_Driver.runUI(renderSpec(document)(element))(component)(i);\n              });\n          };\n      };\n  };\n  exports[\"runUI\"] = runUI;\n})(PS);\n(function(exports) {\n  \"use strict\";\n\n  exports._mainImpl = function() {\n    return window.PS = PS;\n  }\n})(PS[\"Main\"] = PS[\"Main\"] || {});\n(function($PS) {\n  // Generated by purs version 0.14.7\n  \"use strict\";\n  $PS[\"Main\"] = $PS[\"Main\"] || {};\n  var exports = $PS[\"Main\"];\n  var $foreign = $PS[\"Main\"];\n  var App = $PS[\"App\"];\n  var Component_AccountSettings = $PS[\"Component.AccountSettings\"];\n  var Component_Add = $PS[\"Component.Add\"];\n  var Component_BList = $PS[\"Component.BList\"];\n  var Component_NList = $PS[\"Component.NList\"];\n  var Component_NNote = $PS[\"Component.NNote\"];\n  var Component_TagCloud = $PS[\"Component.TagCloud\"];\n  var Control_Bind = $PS[\"Control.Bind\"];\n  var Data_Foldable = $PS[\"Data.Foldable\"];\n  var Data_Functor = $PS[\"Data.Functor\"];\n  var Data_Unit = $PS[\"Data.Unit\"];\n  var Effect = $PS[\"Effect\"];\n  var Effect_Aff = $PS[\"Effect.Aff\"];\n  var Effect_Class = $PS[\"Effect.Class\"];\n  var Halogen_Aff_Util = $PS[\"Halogen.Aff.Util\"];\n  var Halogen_VDom_Driver = $PS[\"Halogen.VDom.Driver\"];\n  var Model = $PS[\"Model\"];\n  var Web_DOM_Element = $PS[\"Web.DOM.Element\"];\n  var Web_Event_Event = $PS[\"Web.Event.Event\"];\n  var Web_HTML_HTMLElement = $PS[\"Web.HTML.HTMLElement\"];                \n  var viewRendered = Control_Bind.bind(Effect_Aff.bindAff)(Halogen_Aff_Util.selectElement(\"#content\"))(Data_Foldable.traverse_(Effect_Aff.applicativeAff)(Data_Foldable.foldableMaybe)(function (el) {\n      return Effect_Class.liftEffect(Effect_Aff.monadEffectAff)(Web_DOM_Element.setAttribute(\"view-rendered\")(\"\")(Web_HTML_HTMLElement.toElement(el)));\n  }));\n  var renderTagCloud = function (renderElSelector) {\n      return function (tagCloudMode) {\n          return Halogen_Aff_Util.runHalogenAff(Control_Bind.bind(Effect_Aff.bindAff)(Halogen_Aff_Util.selectElement(renderElSelector))(Data_Foldable.traverse_(Effect_Aff.applicativeAff)(Data_Foldable.foldableMaybe)(function (el) {\n              return Data_Functor[\"void\"](Effect_Aff.functorAff)(Halogen_VDom_Driver.runUI(Component_TagCloud.tagcloudcomponent(Model.tagCloudModeToF(tagCloudMode)))(Data_Unit.unit)(el));\n          })));\n      };\n  };\n  var renderNotes = function (renderElSelector) {\n      return function (notes) {\n          return Halogen_Aff_Util.runHalogenAff(Control_Bind.bind(Effect_Aff.bindAff)(Halogen_Aff_Util.selectElement(renderElSelector))(Data_Foldable.traverse_(Effect_Aff.applicativeAff)(Data_Foldable.foldableMaybe)(function (el) {\n              return Control_Bind.discard(Control_Bind.discardUnit)(Effect_Aff.bindAff)(Data_Functor[\"void\"](Effect_Aff.functorAff)(Halogen_VDom_Driver.runUI(Component_NList.nlist(notes))(Data_Unit.unit)(el)))(function () {\n                  return viewRendered;\n              });\n          })));\n      };\n  };\n  var renderNote = function (renderElSelector) {\n      return function (note) {\n          return Halogen_Aff_Util.runHalogenAff(Control_Bind.bind(Effect_Aff.bindAff)(Halogen_Aff_Util.selectElement(renderElSelector))(Data_Foldable.traverse_(Effect_Aff.applicativeAff)(Data_Foldable.foldableMaybe)(function (el) {\n              return Control_Bind.discard(Control_Bind.discardUnit)(Effect_Aff.bindAff)(Data_Functor[\"void\"](Effect_Aff.functorAff)(Halogen_VDom_Driver.runUI(Component_NNote.nnote(note))(Data_Unit.unit)(el)))(function () {\n                  return viewRendered;\n              });\n          })));\n      };\n  };\n  var renderBookmarks = function (renderElSelector) {\n      return function (bmarks) {\n          return Halogen_Aff_Util.runHalogenAff(Control_Bind.bind(Effect_Aff.bindAff)(Halogen_Aff_Util.selectElement(renderElSelector))(Data_Foldable.traverse_(Effect_Aff.applicativeAff)(Data_Foldable.foldableMaybe)(function (el) {\n              return Control_Bind.discard(Control_Bind.discardUnit)(Effect_Aff.bindAff)(Data_Functor[\"void\"](Effect_Aff.functorAff)(Halogen_VDom_Driver.runUI(Component_BList.blist(bmarks))(Data_Unit.unit)(el)))(function () {\n                  return viewRendered;\n              });\n          })));\n      };\n  };\n  var renderAddForm = function (renderElSelector) {\n      return function (bmark) {\n          return Halogen_Aff_Util.runHalogenAff(Control_Bind.bind(Effect_Aff.bindAff)(Halogen_Aff_Util.selectElement(renderElSelector))(Data_Foldable.traverse_(Effect_Aff.applicativeAff)(Data_Foldable.foldableMaybe)(function (el) {\n              return Control_Bind.discard(Control_Bind.discardUnit)(Effect_Aff.bindAff)(Data_Functor[\"void\"](Effect_Aff.functorAff)(Halogen_VDom_Driver.runUI(Component_Add.addbmark(bmark))(Data_Unit.unit)(el)))(function () {\n                  return viewRendered;\n              });\n          })));\n      };\n  };\n  var renderAccountSettings = function (renderElSelector) {\n      return function (accountSettings) {\n          return Halogen_Aff_Util.runHalogenAff(Control_Bind.bind(Effect_Aff.bindAff)(Halogen_Aff_Util.selectElement(renderElSelector))(Data_Foldable.traverse_(Effect_Aff.applicativeAff)(Data_Foldable.foldableMaybe)(function (el) {\n              return Control_Bind.discard(Control_Bind.discardUnit)(Effect_Aff.bindAff)(Data_Functor[\"void\"](Effect_Aff.functorAff)(Halogen_VDom_Driver.runUI(Component_AccountSettings.usetting(accountSettings))(Data_Unit.unit)(el)))(function () {\n                  return viewRendered;\n              });\n          })));\n      };\n  };\n  var main = $foreign[\"_mainImpl\"];\n  var logoutE = function (e) {\n      return Control_Bind.bindFlipped(Effect.bindEffect)((function () {\n          var $0 = Data_Functor[\"void\"](Effect.functorEffect);\n          return function ($1) {\n              return $0(Effect_Aff.launchAff(App.logout($1)));\n          };\n      })())(Web_Event_Event.preventDefault(e));\n  };\n  exports[\"main\"] = main;\n  exports[\"logoutE\"] = logoutE;\n  exports[\"renderBookmarks\"] = renderBookmarks;\n  exports[\"renderTagCloud\"] = renderTagCloud;\n  exports[\"renderAddForm\"] = renderAddForm;\n  exports[\"renderNotes\"] = renderNotes;\n  exports[\"renderNote\"] = renderNote;\n  exports[\"renderAccountSettings\"] = renderAccountSettings;\n  exports[\"viewRendered\"] = viewRendered;\n  exports[\"_mainImpl\"] = $foreign[\"_mainImpl\"];\n})(PS);\nPS[\"Main\"].main();"]}
diff --git a/static/js/app.min.js.map.gz b/static/js/app.min.js.map.gz
new file mode 100644
Binary files /dev/null and b/static/js/app.min.js.map.gz differ
diff --git a/static/js/marked.min.js b/static/js/marked.min.js
deleted file mode 100644
--- a/static/js/marked.min.js
+++ /dev/null
@@ -1,6 +0,0 @@
-/**
- * marked - a markdown parser
- * Copyright (c) 2011-2018, Christopher Jeffrey. (MIT Licensed)
- * https://github.com/markedjs/marked
- */
-!function(e){"use strict";var k={newline:/^\n+/,code:/^( {4}[^\n]+\n*)+/,fences:f,hr:/^ {0,3}((?:- *){3,}|(?:_ *){3,}|(?:\* *){3,})(?:\n+|$)/,heading:/^ *(#{1,6}) *([^\n]+?) *(?:#+ *)?(?:\n+|$)/,nptable:f,blockquote:/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/,list:/^( {0,3})(bull) [\s\S]+?(?:hr|def|\n{2,}(?! )(?!\1bull )\n*|\s*$)/,html:"^ {0,3}(?:<(script|pre|style)[\\s>][\\s\\S]*?(?:</\\1>[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?\\?>\\n*|<![A-Z][\\s\\S]*?>\\n*|<!\\[CDATA\\[[\\s\\S]*?\\]\\]>\\n*|</?(tag)(?: +|\\n|/?>)[\\s\\S]*?(?:\\n{2,}|$)|<(?!script|pre|style)([a-z][\\w-]*)(?:attribute)*? */?>(?=\\h*\\n)[\\s\\S]*?(?:\\n{2,}|$)|</(?!script|pre|style)[a-z][\\w-]*\\s*>(?=\\h*\\n)[\\s\\S]*?(?:\\n{2,}|$))",def:/^ {0,3}\[(label)\]: *\n? *<?([^\s>]+)>?(?:(?: +\n? *| *\n *)(title))? *(?:\n+|$)/,table:f,lheading:/^([^\n]+)\n *(=|-){2,} *(?:\n+|$)/,paragraph:/^([^\n]+(?:\n(?!hr|heading|lheading| {0,3}>|<\/?(?:tag)(?: +|\n|\/?>)|<(?:script|pre|style|!--))[^\n]+)*)/,text:/^[^\n]+/};function a(e){this.tokens=[],this.tokens.links=Object.create(null),this.options=e||m.defaults,this.rules=k.normal,this.options.pedantic?this.rules=k.pedantic:this.options.gfm&&(this.options.tables?this.rules=k.tables:this.rules=k.gfm)}k._label=/(?!\s*\])(?:\\[\[\]]|[^\[\]])+/,k._title=/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/,k.def=i(k.def).replace("label",k._label).replace("title",k._title).getRegex(),k.bullet=/(?:[*+-]|\d{1,9}\.)/,k.item=/^( *)(bull) ?[^\n]*(?:\n(?!\1bull ?)[^\n]*)*/,k.item=i(k.item,"gm").replace(/bull/g,k.bullet).getRegex(),k.list=i(k.list).replace(/bull/g,k.bullet).replace("hr","\\n+(?=\\1?(?:(?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$))").replace("def","\\n+(?="+k.def.source+")").getRegex(),k._tag="address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul",k._comment=/<!--(?!-?>)[\s\S]*?-->/,k.html=i(k.html,"i").replace("comment",k._comment).replace("tag",k._tag).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),k.paragraph=i(k.paragraph).replace("hr",k.hr).replace("heading",k.heading).replace("lheading",k.lheading).replace("tag",k._tag).getRegex(),k.blockquote=i(k.blockquote).replace("paragraph",k.paragraph).getRegex(),k.normal=d({},k),k.gfm=d({},k.normal,{fences:/^ {0,3}(`{3,}|~{3,})([^`\n]*)\n(?:|([\s\S]*?)\n)(?: {0,3}\1[~`]* *(?:\n+|$)|$)/,paragraph:/^/,heading:/^ *(#{1,6}) +([^\n]+?) *#* *(?:\n+|$)/}),k.gfm.paragraph=i(k.paragraph).replace("(?!","(?!"+k.gfm.fences.source.replace("\\1","\\2")+"|"+k.list.source.replace("\\1","\\3")+"|").getRegex(),k.tables=d({},k.gfm,{nptable:/^ *([^|\n ].*\|.*)\n *([-:]+ *\|[-| :]*)(?:\n((?:.*[^>\n ].*(?:\n|$))*)\n*|$)/,table:/^ *\|(.+)\n *\|?( *[-:]+[-| :]*)(?:\n((?: *[^>\n ].*(?:\n|$))*)\n*|$)/}),k.pedantic=d({},k.normal,{html:i("^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+?</\\1> *(?:\\n{2,}|\\s*$)|<tag(?:\"[^\"]*\"|'[^']*'|\\s[^'\"/>\\s]*)*?/?> *(?:\\n{2,}|\\s*$))").replace("comment",k._comment).replace(/tag/g,"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(),def:/^ *\[([^\]]+)\]: *<?([^\s>]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/}),a.rules=k,a.lex=function(e,t){return new a(t).lex(e)},a.prototype.lex=function(e){return e=e.replace(/\r\n|\r/g,"\n").replace(/\t/g,"    ").replace(/\u00a0/g," ").replace(/\u2424/g,"\n"),this.token(e,!0)},a.prototype.token=function(e,t){var n,r,s,i,l,o,a,h,p,u,c,g,f,d,m,b;for(e=e.replace(/^ +$/gm,"");e;)if((s=this.rules.newline.exec(e))&&(e=e.substring(s[0].length),1<s[0].length&&this.tokens.push({type:"space"})),s=this.rules.code.exec(e))e=e.substring(s[0].length),s=s[0].replace(/^ {4}/gm,""),this.tokens.push({type:"code",text:this.options.pedantic?s:y(s,"\n")});else if(s=this.rules.fences.exec(e))e=e.substring(s[0].length),this.tokens.push({type:"code",lang:s[2]?s[2].trim():s[2],text:s[3]||""});else if(s=this.rules.heading.exec(e))e=e.substring(s[0].length),this.tokens.push({type:"heading",depth:s[1].length,text:s[2]});else if(t&&(s=this.rules.nptable.exec(e))&&(o={type:"table",header:x(s[1].replace(/^ *| *\| *$/g,"")),align:s[2].replace(/^ *|\| *$/g,"").split(/ *\| */),cells:s[3]?s[3].replace(/\n$/,"").split("\n"):[]}).header.length===o.align.length){for(e=e.substring(s[0].length),c=0;c<o.align.length;c++)/^ *-+: *$/.test(o.align[c])?o.align[c]="right":/^ *:-+: *$/.test(o.align[c])?o.align[c]="center":/^ *:-+ *$/.test(o.align[c])?o.align[c]="left":o.align[c]=null;for(c=0;c<o.cells.length;c++)o.cells[c]=x(o.cells[c],o.header.length);this.tokens.push(o)}else if(s=this.rules.hr.exec(e))e=e.substring(s[0].length),this.tokens.push({type:"hr"});else if(s=this.rules.blockquote.exec(e))e=e.substring(s[0].length),this.tokens.push({type:"blockquote_start"}),s=s[0].replace(/^ *> ?/gm,""),this.token(s,t),this.tokens.push({type:"blockquote_end"});else if(s=this.rules.list.exec(e)){for(e=e.substring(s[0].length),a={type:"list_start",ordered:d=1<(i=s[2]).length,start:d?+i:"",loose:!1},this.tokens.push(a),n=!(h=[]),f=(s=s[0].match(this.rules.item)).length,c=0;c<f;c++)u=(o=s[c]).length,~(o=o.replace(/^ *([*+-]|\d+\.) */,"")).indexOf("\n ")&&(u-=o.length,o=this.options.pedantic?o.replace(/^ {1,4}/gm,""):o.replace(new RegExp("^ {1,"+u+"}","gm"),"")),c!==f-1&&(l=k.bullet.exec(s[c+1])[0],(1<i.length?1===l.length:1<l.length||this.options.smartLists&&l!==i)&&(e=s.slice(c+1).join("\n")+e,c=f-1)),r=n||/\n\n(?!\s*$)/.test(o),c!==f-1&&(n="\n"===o.charAt(o.length-1),r||(r=n)),r&&(a.loose=!0),b=void 0,(m=/^\[[ xX]\] /.test(o))&&(b=" "!==o[1],o=o.replace(/^\[[ xX]\] +/,"")),p={type:"list_item_start",task:m,checked:b,loose:r},h.push(p),this.tokens.push(p),this.token(o,!1),this.tokens.push({type:"list_item_end"});if(a.loose)for(f=h.length,c=0;c<f;c++)h[c].loose=!0;this.tokens.push({type:"list_end"})}else if(s=this.rules.html.exec(e))e=e.substring(s[0].length),this.tokens.push({type:this.options.sanitize?"paragraph":"html",pre:!this.options.sanitizer&&("pre"===s[1]||"script"===s[1]||"style"===s[1]),text:s[0]});else if(t&&(s=this.rules.def.exec(e)))e=e.substring(s[0].length),s[3]&&(s[3]=s[3].substring(1,s[3].length-1)),g=s[1].toLowerCase().replace(/\s+/g," "),this.tokens.links[g]||(this.tokens.links[g]={href:s[2],title:s[3]});else if(t&&(s=this.rules.table.exec(e))&&(o={type:"table",header:x(s[1].replace(/^ *| *\| *$/g,"")),align:s[2].replace(/^ *|\| *$/g,"").split(/ *\| */),cells:s[3]?s[3].replace(/(?: *\| *)?\n$/,"").split("\n"):[]}).header.length===o.align.length){for(e=e.substring(s[0].length),c=0;c<o.align.length;c++)/^ *-+: *$/.test(o.align[c])?o.align[c]="right":/^ *:-+: *$/.test(o.align[c])?o.align[c]="center":/^ *:-+ *$/.test(o.align[c])?o.align[c]="left":o.align[c]=null;for(c=0;c<o.cells.length;c++)o.cells[c]=x(o.cells[c].replace(/^ *\| *| *\| *$/g,""),o.header.length);this.tokens.push(o)}else if(s=this.rules.lheading.exec(e))e=e.substring(s[0].length),this.tokens.push({type:"heading",depth:"="===s[2]?1:2,text:s[1]});else if(t&&(s=this.rules.paragraph.exec(e)))e=e.substring(s[0].length),this.tokens.push({type:"paragraph",text:"\n"===s[1].charAt(s[1].length-1)?s[1].slice(0,-1):s[1]});else if(s=this.rules.text.exec(e))e=e.substring(s[0].length),this.tokens.push({type:"text",text:s[0]});else if(e)throw new Error("Infinite loop on byte: "+e.charCodeAt(0));return this.tokens};var n={escape:/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,autolink:/^<(scheme:[^\s\x00-\x1f<>]*|email)>/,url:f,tag:"^comment|^</[a-zA-Z][\\w:-]*\\s*>|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^<![a-zA-Z]+\\s[\\s\\S]*?>|^<!\\[CDATA\\[[\\s\\S]*?\\]\\]>",link:/^!?\[(label)\]\(href(?:\s+(title))?\s*\)/,reflink:/^!?\[(label)\]\[(?!\s*\])((?:\\[\[\]]?|[^\[\]\\])+)\]/,nolink:/^!?\[(?!\s*\])((?:\[[^\[\]]*\]|\\[\[\]]|[^\[\]])*)\](?:\[\])?/,strong:/^__([^\s_])__(?!_)|^\*\*([^\s*])\*\*(?!\*)|^__([^\s][\s\S]*?[^\s])__(?!_)|^\*\*([^\s][\s\S]*?[^\s])\*\*(?!\*)/,em:/^_([^\s_])_(?!_)|^\*([^\s*"<\[])\*(?!\*)|^_([^\s][\s\S]*?[^\s_])_(?!_|[^\spunctuation])|^_([^\s_][\s\S]*?[^\s])_(?!_|[^\spunctuation])|^\*([^\s"<\[][\s\S]*?[^\s*])\*(?!\*)|^\*([^\s*"<\[][\s\S]*?[^\s])\*(?!\*)/,code:/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,br:/^( {2,}|\\)\n(?!\s*$)/,del:f,text:/^(`+|[^`])[\s\S]*?(?=[\\<!\[`*]|\b_| {2,}\n|$)/};function h(e,t){if(this.options=t||m.defaults,this.links=e,this.rules=n.normal,this.renderer=this.options.renderer||new r,this.renderer.options=this.options,!this.links)throw new Error("Tokens array requires a `links` property.");this.options.pedantic?this.rules=n.pedantic:this.options.gfm&&(this.options.breaks?this.rules=n.breaks:this.rules=n.gfm)}function r(e){this.options=e||m.defaults}function s(){}function p(e){this.tokens=[],this.token=null,this.options=e||m.defaults,this.options.renderer=this.options.renderer||new r,this.renderer=this.options.renderer,this.renderer.options=this.options,this.slugger=new t}function t(){this.seen={}}function u(e,t){if(t){if(u.escapeTest.test(e))return e.replace(u.escapeReplace,function(e){return u.replacements[e]})}else if(u.escapeTestNoEncode.test(e))return e.replace(u.escapeReplaceNoEncode,function(e){return u.replacements[e]});return e}function c(e){return e.replace(/&(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/gi,function(e,t){return"colon"===(t=t.toLowerCase())?":":"#"===t.charAt(0)?"x"===t.charAt(1)?String.fromCharCode(parseInt(t.substring(2),16)):String.fromCharCode(+t.substring(1)):""})}function i(n,e){return n=n.source||n,e=e||"",{replace:function(e,t){return t=(t=t.source||t).replace(/(^|[^\[])\^/g,"$1"),n=n.replace(e,t),this},getRegex:function(){return new RegExp(n,e)}}}function l(e,t,n){if(e){try{var r=decodeURIComponent(c(n)).replace(/[^\w:]/g,"").toLowerCase()}catch(e){return null}if(0===r.indexOf("javascript:")||0===r.indexOf("vbscript:")||0===r.indexOf("data:"))return null}t&&!g.test(n)&&(n=function(e,t){o[" "+e]||(/^[^:]+:\/*[^/]*$/.test(e)?o[" "+e]=e+"/":o[" "+e]=y(e,"/",!0));return e=o[" "+e],"//"===t.slice(0,2)?e.replace(/:[\s\S]*/,":")+t:"/"===t.charAt(0)?e.replace(/(:\/*[^/]*)[\s\S]*/,"$1")+t:e+t}(t,n));try{n=encodeURI(n).replace(/%25/g,"%")}catch(e){return null}return n}n._punctuation="!\"#$%&'()*+,\\-./:;<=>?@\\[^_{|}~",n.em=i(n.em).replace(/punctuation/g,n._punctuation).getRegex(),n._escapes=/\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/g,n._scheme=/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/,n._email=/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/,n.autolink=i(n.autolink).replace("scheme",n._scheme).replace("email",n._email).getRegex(),n._attribute=/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/,n.tag=i(n.tag).replace("comment",k._comment).replace("attribute",n._attribute).getRegex(),n._label=/(?:\[[^\[\]]*\]|\\[\[\]]?|`[^`]*`|[^\[\]\\])*?/,n._href=/\s*(<(?:\\[<>]?|[^\s<>\\])*>|(?:\\[()]?|\([^\s\x00-\x1f\\]*\)|[^\s\x00-\x1f()\\])*?)/,n._title=/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/,n.link=i(n.link).replace("label",n._label).replace("href",n._href).replace("title",n._title).getRegex(),n.reflink=i(n.reflink).replace("label",n._label).getRegex(),n.normal=d({},n),n.pedantic=d({},n.normal,{strong:/^__(?=\S)([\s\S]*?\S)__(?!_)|^\*\*(?=\S)([\s\S]*?\S)\*\*(?!\*)/,em:/^_(?=\S)([\s\S]*?\S)_(?!_)|^\*(?=\S)([\s\S]*?\S)\*(?!\*)/,link:i(/^!?\[(label)\]\((.*?)\)/).replace("label",n._label).getRegex(),reflink:i(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label",n._label).getRegex()}),n.gfm=d({},n.normal,{escape:i(n.escape).replace("])","~|])").getRegex(),_extended_email:/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/,url:/^((?:ftp|https?):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/,_backpedal:/(?:[^?!.,:;*_~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_~)]+(?!$))+/,del:/^~+(?=\S)([\s\S]*?\S)~+/,text:i(n.text).replace("]|","~]|").replace("|$","|https?://|ftp://|www\\.|[a-zA-Z0-9.!#$%&'*+/=?^_`{\\|}~-]+@|$").getRegex()}),n.gfm.url=i(n.gfm.url,"i").replace("email",n.gfm._extended_email).getRegex(),n.breaks=d({},n.gfm,{br:i(n.br).replace("{2,}","*").getRegex(),text:i(n.gfm.text).replace("{2,}","*").getRegex()}),h.rules=n,h.output=function(e,t,n){return new h(t,n).output(e)},h.prototype.output=function(e){for(var t,n,r,s,i,l,o="";e;)if(i=this.rules.escape.exec(e))e=e.substring(i[0].length),o+=u(i[1]);else if(i=this.rules.tag.exec(e))!this.inLink&&/^<a /i.test(i[0])?this.inLink=!0:this.inLink&&/^<\/a>/i.test(i[0])&&(this.inLink=!1),!this.inRawBlock&&/^<(pre|code|kbd|script)(\s|>)/i.test(i[0])?this.inRawBlock=!0:this.inRawBlock&&/^<\/(pre|code|kbd|script)(\s|>)/i.test(i[0])&&(this.inRawBlock=!1),e=e.substring(i[0].length),o+=this.options.sanitize?this.options.sanitizer?this.options.sanitizer(i[0]):u(i[0]):i[0];else if(i=this.rules.link.exec(e))e=e.substring(i[0].length),this.inLink=!0,r=i[2],this.options.pedantic?(t=/^([^'"]*[^\s])\s+(['"])(.*)\2/.exec(r))?(r=t[1],s=t[3]):s="":s=i[3]?i[3].slice(1,-1):"",r=r.trim().replace(/^<([\s\S]*)>$/,"$1"),o+=this.outputLink(i,{href:h.escapes(r),title:h.escapes(s)}),this.inLink=!1;else if((i=this.rules.reflink.exec(e))||(i=this.rules.nolink.exec(e))){if(e=e.substring(i[0].length),t=(i[2]||i[1]).replace(/\s+/g," "),!(t=this.links[t.toLowerCase()])||!t.href){o+=i[0].charAt(0),e=i[0].substring(1)+e;continue}this.inLink=!0,o+=this.outputLink(i,t),this.inLink=!1}else if(i=this.rules.strong.exec(e))e=e.substring(i[0].length),o+=this.renderer.strong(this.output(i[4]||i[3]||i[2]||i[1]));else if(i=this.rules.em.exec(e))e=e.substring(i[0].length),o+=this.renderer.em(this.output(i[6]||i[5]||i[4]||i[3]||i[2]||i[1]));else if(i=this.rules.code.exec(e))e=e.substring(i[0].length),o+=this.renderer.codespan(u(i[2].trim(),!0));else if(i=this.rules.br.exec(e))e=e.substring(i[0].length),o+=this.renderer.br();else if(i=this.rules.del.exec(e))e=e.substring(i[0].length),o+=this.renderer.del(this.output(i[1]));else if(i=this.rules.autolink.exec(e))e=e.substring(i[0].length),r="@"===i[2]?"mailto:"+(n=u(this.mangle(i[1]))):n=u(i[1]),o+=this.renderer.link(r,null,n);else if(this.inLink||!(i=this.rules.url.exec(e))){if(i=this.rules.text.exec(e))e=e.substring(i[0].length),this.inRawBlock?o+=this.renderer.text(i[0]):o+=this.renderer.text(u(this.smartypants(i[0])));else if(e)throw new Error("Infinite loop on byte: "+e.charCodeAt(0))}else{if("@"===i[2])r="mailto:"+(n=u(i[0]));else{for(;l=i[0],i[0]=this.rules._backpedal.exec(i[0])[0],l!==i[0];);n=u(i[0]),r="www."===i[1]?"http://"+n:n}e=e.substring(i[0].length),o+=this.renderer.link(r,null,n)}return o},h.escapes=function(e){return e?e.replace(h.rules._escapes,"$1"):e},h.prototype.outputLink=function(e,t){var n=t.href,r=t.title?u(t.title):null;return"!"!==e[0].charAt(0)?this.renderer.link(n,r,this.output(e[1])):this.renderer.image(n,r,u(e[1]))},h.prototype.smartypants=function(e){return this.options.smartypants?e.replace(/---/g,"—").replace(/--/g,"–").replace(/(^|[-\u2014/(\[{"\s])'/g,"$1‘").replace(/'/g,"’").replace(/(^|[-\u2014/(\[{\u2018\s])"/g,"$1“").replace(/"/g,"”").replace(/\.{3}/g,"…"):e},h.prototype.mangle=function(e){if(!this.options.mangle)return e;for(var t,n="",r=e.length,s=0;s<r;s++)t=e.charCodeAt(s),.5<Math.random()&&(t="x"+t.toString(16)),n+="&#"+t+";";return n},r.prototype.code=function(e,t,n){var r=(t||"").match(/\S*/)[0];if(this.options.highlight){var s=this.options.highlight(e,r);null!=s&&s!==e&&(n=!0,e=s)}return r?'<pre><code class="'+this.options.langPrefix+u(r,!0)+'">'+(n?e:u(e,!0))+"</code></pre>\n":"<pre><code>"+(n?e:u(e,!0))+"</code></pre>"},r.prototype.blockquote=function(e){return"<blockquote>\n"+e+"</blockquote>\n"},r.prototype.html=function(e){return e},r.prototype.heading=function(e,t,n,r){return this.options.headerIds?"<h"+t+' id="'+this.options.headerPrefix+r.slug(n)+'">'+e+"</h"+t+">\n":"<h"+t+">"+e+"</h"+t+">\n"},r.prototype.hr=function(){return this.options.xhtml?"<hr/>\n":"<hr>\n"},r.prototype.list=function(e,t,n){var r=t?"ol":"ul";return"<"+r+(t&&1!==n?' start="'+n+'"':"")+">\n"+e+"</"+r+">\n"},r.prototype.listitem=function(e){return"<li>"+e+"</li>\n"},r.prototype.checkbox=function(e){return"<input "+(e?'checked="" ':"")+'disabled="" type="checkbox"'+(this.options.xhtml?" /":"")+"> "},r.prototype.paragraph=function(e){return"<p>"+e+"</p>\n"},r.prototype.table=function(e,t){return t&&(t="<tbody>"+t+"</tbody>"),"<table>\n<thead>\n"+e+"</thead>\n"+t+"</table>\n"},r.prototype.tablerow=function(e){return"<tr>\n"+e+"</tr>\n"},r.prototype.tablecell=function(e,t){var n=t.header?"th":"td";return(t.align?"<"+n+' align="'+t.align+'">':"<"+n+">")+e+"</"+n+">\n"},r.prototype.strong=function(e){return"<strong>"+e+"</strong>"},r.prototype.em=function(e){return"<em>"+e+"</em>"},r.prototype.codespan=function(e){return"<code>"+e+"</code>"},r.prototype.br=function(){return this.options.xhtml?"<br/>":"<br>"},r.prototype.del=function(e){return"<del>"+e+"</del>"},r.prototype.link=function(e,t,n){if(null===(e=l(this.options.sanitize,this.options.baseUrl,e)))return n;var r='<a href="'+u(e)+'"';return t&&(r+=' title="'+t+'"'),r+=">"+n+"</a>"},r.prototype.image=function(e,t,n){if(null===(e=l(this.options.sanitize,this.options.baseUrl,e)))return n;var r='<img src="'+e+'" alt="'+n+'"';return t&&(r+=' title="'+t+'"'),r+=this.options.xhtml?"/>":">"},r.prototype.text=function(e){return e},s.prototype.strong=s.prototype.em=s.prototype.codespan=s.prototype.del=s.prototype.text=function(e){return e},s.prototype.link=s.prototype.image=function(e,t,n){return""+n},s.prototype.br=function(){return""},p.parse=function(e,t){return new p(t).parse(e)},p.prototype.parse=function(e){this.inline=new h(e.links,this.options),this.inlineText=new h(e.links,d({},this.options,{renderer:new s})),this.tokens=e.reverse();for(var t="";this.next();)t+=this.tok();return t},p.prototype.next=function(){return this.token=this.tokens.pop()},p.prototype.peek=function(){return this.tokens[this.tokens.length-1]||0},p.prototype.parseText=function(){for(var e=this.token.text;"text"===this.peek().type;)e+="\n"+this.next().text;return this.inline.output(e)},p.prototype.tok=function(){switch(this.token.type){case"space":return"";case"hr":return this.renderer.hr();case"heading":return this.renderer.heading(this.inline.output(this.token.text),this.token.depth,c(this.inlineText.output(this.token.text)),this.slugger);case"code":return this.renderer.code(this.token.text,this.token.lang,this.token.escaped);case"table":var e,t,n,r,s="",i="";for(n="",e=0;e<this.token.header.length;e++)n+=this.renderer.tablecell(this.inline.output(this.token.header[e]),{header:!0,align:this.token.align[e]});for(s+=this.renderer.tablerow(n),e=0;e<this.token.cells.length;e++){for(t=this.token.cells[e],n="",r=0;r<t.length;r++)n+=this.renderer.tablecell(this.inline.output(t[r]),{header:!1,align:this.token.align[r]});i+=this.renderer.tablerow(n)}return this.renderer.table(s,i);case"blockquote_start":for(i="";"blockquote_end"!==this.next().type;)i+=this.tok();return this.renderer.blockquote(i);case"list_start":i="";for(var l=this.token.ordered,o=this.token.start;"list_end"!==this.next().type;)i+=this.tok();return this.renderer.list(i,l,o);case"list_item_start":i="";var a=this.token.loose;for(this.token.task&&(i+=this.renderer.checkbox(this.token.checked));"list_item_end"!==this.next().type;)i+=a||"text"!==this.token.type?this.tok():this.parseText();return this.renderer.listitem(i);case"html":return this.renderer.html(this.token.text);case"paragraph":return this.renderer.paragraph(this.inline.output(this.token.text));case"text":return this.renderer.paragraph(this.parseText());default:var h='Token with "'+this.token.type+'" type was not found.';if(!this.options.silent)throw new Error(h);console.log(h)}},t.prototype.slug=function(e){var t=e.toLowerCase().trim().replace(/[\u2000-\u206F\u2E00-\u2E7F\\'!"#$%&()*+,./:;<=>?@[\]^`{|}~]/g,"").replace(/\s/g,"-");if(this.seen.hasOwnProperty(t))for(var n=t;this.seen[n]++,t=n+"-"+this.seen[n],this.seen.hasOwnProperty(t););return this.seen[t]=0,t},u.escapeTest=/[&<>"']/,u.escapeReplace=/[&<>"']/g,u.replacements={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"},u.escapeTestNoEncode=/[<>"']|&(?!#?\w+;)/,u.escapeReplaceNoEncode=/[<>"']|&(?!#?\w+;)/g;var o={},g=/^$|^[a-z][a-z0-9+.-]*:|^[?#]/i;function f(){}function d(e){for(var t,n,r=1;r<arguments.length;r++)for(n in t=arguments[r])Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n]);return e}function x(e,t){var n=e.replace(/\|/g,function(e,t,n){for(var r=!1,s=t;0<=--s&&"\\"===n[s];)r=!r;return r?"|":" |"}).split(/ \|/),r=0;if(n.length>t)n.splice(t);else for(;n.length<t;)n.push("");for(;r<n.length;r++)n[r]=n[r].trim().replace(/\\\|/g,"|");return n}function y(e,t,n){if(0===e.length)return"";for(var r=0;r<e.length;){var s=e.charAt(e.length-r-1);if(s!==t||n){if(s===t||!n)break;r++}else r++}return e.substr(0,e.length-r)}function m(e,n,r){if(null==e)throw new Error("marked(): input parameter is undefined or null");if("string"!=typeof e)throw new Error("marked(): input parameter is of type "+Object.prototype.toString.call(e)+", string expected");if(r||"function"==typeof n){r||(r=n,n=null);var s,i,l=(n=d({},m.defaults,n||{})).highlight,t=0;try{s=a.lex(e,n)}catch(e){return r(e)}i=s.length;var o=function(t){if(t)return n.highlight=l,r(t);var e;try{e=p.parse(s,n)}catch(e){t=e}return n.highlight=l,t?r(t):r(null,e)};if(!l||l.length<3)return o();if(delete n.highlight,!i)return o();for(;t<s.length;t++)!function(n){"code"!==n.type?--i||o():l(n.text,n.lang,function(e,t){return e?o(e):null==t||t===n.text?--i||o():(n.text=t,n.escaped=!0,void(--i||o()))})}(s[t])}else try{return n&&(n=d({},m.defaults,n)),p.parse(a.lex(e,n),n)}catch(e){if(e.message+="\nPlease report this to https://github.com/markedjs/marked.",(n||m.defaults).silent)return"<p>An error occurred:</p><pre>"+u(e.message+"",!0)+"</pre>";throw e}}f.exec=f,m.options=m.setOptions=function(e){return d(m.defaults,e),m},m.getDefaults=function(){return{baseUrl:null,breaks:!1,gfm:!0,headerIds:!0,headerPrefix:"",highlight:null,langPrefix:"language-",mangle:!0,pedantic:!1,renderer:new r,sanitize:!1,sanitizer:null,silent:!1,smartLists:!1,smartypants:!1,tables:!0,xhtml:!1}},m.defaults=m.getDefaults(),m.Parser=p,m.parser=p.parse,m.Renderer=r,m.TextRenderer=s,m.Lexer=a,m.lexer=a.lex,m.InlineLexer=h,m.inlineLexer=h.output,m.Slugger=t,m.parse=m,"undefined"!=typeof module&&"object"==typeof exports?module.exports=m:"function"==typeof define&&define.amd?define(function(){return m}):e.marked=m}(this||("undefined"!=typeof window?window:global));
diff --git a/static/js/marked.min.js.gz b/static/js/marked.min.js.gz
deleted file mode 100644
Binary files a/static/js/marked.min.js.gz and /dev/null differ
diff --git a/static/js/moment.min.js b/static/js/moment.min.js
deleted file mode 100644
--- a/static/js/moment.min.js
+++ /dev/null
@@ -1,1 +0,0 @@
-!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):e.moment=t()}(this,function(){"use strict";var e,i;function c(){return e.apply(null,arguments)}function o(e){return e instanceof Array||"[object Array]"===Object.prototype.toString.call(e)}function u(e){return null!=e&&"[object Object]"===Object.prototype.toString.call(e)}function l(e){return void 0===e}function d(e){return"number"==typeof e||"[object Number]"===Object.prototype.toString.call(e)}function h(e){return e instanceof Date||"[object Date]"===Object.prototype.toString.call(e)}function f(e,t){var n,s=[];for(n=0;n<e.length;++n)s.push(t(e[n],n));return s}function m(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function _(e,t){for(var n in t)m(t,n)&&(e[n]=t[n]);return m(t,"toString")&&(e.toString=t.toString),m(t,"valueOf")&&(e.valueOf=t.valueOf),e}function y(e,t,n,s){return Ot(e,t,n,s,!0).utc()}function g(e){return null==e._pf&&(e._pf={empty:!1,unusedTokens:[],unusedInput:[],overflow:-2,charsLeftOver:0,nullInput:!1,invalidMonth:null,invalidFormat:!1,userInvalidated:!1,iso:!1,parsedDateParts:[],meridiem:null,rfc2822:!1,weekdayMismatch:!1}),e._pf}function p(e){if(null==e._isValid){var t=g(e),n=i.call(t.parsedDateParts,function(e){return null!=e}),s=!isNaN(e._d.getTime())&&t.overflow<0&&!t.empty&&!t.invalidMonth&&!t.invalidWeekday&&!t.weekdayMismatch&&!t.nullInput&&!t.invalidFormat&&!t.userInvalidated&&(!t.meridiem||t.meridiem&&n);if(e._strict&&(s=s&&0===t.charsLeftOver&&0===t.unusedTokens.length&&void 0===t.bigHour),null!=Object.isFrozen&&Object.isFrozen(e))return s;e._isValid=s}return e._isValid}function v(e){var t=y(NaN);return null!=e?_(g(t),e):g(t).userInvalidated=!0,t}i=Array.prototype.some?Array.prototype.some:function(e){for(var t=Object(this),n=t.length>>>0,s=0;s<n;s++)if(s in t&&e.call(this,t[s],s,t))return!0;return!1};var r=c.momentProperties=[];function w(e,t){var n,s,i;if(l(t._isAMomentObject)||(e._isAMomentObject=t._isAMomentObject),l(t._i)||(e._i=t._i),l(t._f)||(e._f=t._f),l(t._l)||(e._l=t._l),l(t._strict)||(e._strict=t._strict),l(t._tzm)||(e._tzm=t._tzm),l(t._isUTC)||(e._isUTC=t._isUTC),l(t._offset)||(e._offset=t._offset),l(t._pf)||(e._pf=g(t)),l(t._locale)||(e._locale=t._locale),0<r.length)for(n=0;n<r.length;n++)l(i=t[s=r[n]])||(e[s]=i);return e}var t=!1;function M(e){w(this,e),this._d=new Date(null!=e._d?e._d.getTime():NaN),this.isValid()||(this._d=new Date(NaN)),!1===t&&(t=!0,c.updateOffset(this),t=!1)}function S(e){return e instanceof M||null!=e&&null!=e._isAMomentObject}function D(e){return e<0?Math.ceil(e)||0:Math.floor(e)}function k(e){var t=+e,n=0;return 0!==t&&isFinite(t)&&(n=D(t)),n}function a(e,t,n){var s,i=Math.min(e.length,t.length),r=Math.abs(e.length-t.length),a=0;for(s=0;s<i;s++)(n&&e[s]!==t[s]||!n&&k(e[s])!==k(t[s]))&&a++;return a+r}function Y(e){!1===c.suppressDeprecationWarnings&&"undefined"!=typeof console&&console.warn&&console.warn("Deprecation warning: "+e)}function n(i,r){var a=!0;return _(function(){if(null!=c.deprecationHandler&&c.deprecationHandler(null,i),a){for(var e,t=[],n=0;n<arguments.length;n++){if(e="","object"==typeof arguments[n]){for(var s in e+="\n["+n+"] ",arguments[0])e+=s+": "+arguments[0][s]+", ";e=e.slice(0,-2)}else e=arguments[n];t.push(e)}Y(i+"\nArguments: "+Array.prototype.slice.call(t).join("")+"\n"+(new Error).stack),a=!1}return r.apply(this,arguments)},r)}var s,O={};function T(e,t){null!=c.deprecationHandler&&c.deprecationHandler(e,t),O[e]||(Y(t),O[e]=!0)}function x(e){return e instanceof Function||"[object Function]"===Object.prototype.toString.call(e)}function b(e,t){var n,s=_({},e);for(n in t)m(t,n)&&(u(e[n])&&u(t[n])?(s[n]={},_(s[n],e[n]),_(s[n],t[n])):null!=t[n]?s[n]=t[n]:delete s[n]);for(n in e)m(e,n)&&!m(t,n)&&u(e[n])&&(s[n]=_({},s[n]));return s}function P(e){null!=e&&this.set(e)}c.suppressDeprecationWarnings=!1,c.deprecationHandler=null,s=Object.keys?Object.keys:function(e){var t,n=[];for(t in e)m(e,t)&&n.push(t);return n};var W={};function H(e,t){var n=e.toLowerCase();W[n]=W[n+"s"]=W[t]=e}function R(e){return"string"==typeof e?W[e]||W[e.toLowerCase()]:void 0}function C(e){var t,n,s={};for(n in e)m(e,n)&&(t=R(n))&&(s[t]=e[n]);return s}var F={};function L(e,t){F[e]=t}function U(e,t,n){var s=""+Math.abs(e),i=t-s.length;return(0<=e?n?"+":"":"-")+Math.pow(10,Math.max(0,i)).toString().substr(1)+s}var N=/(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,G=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,V={},E={};function I(e,t,n,s){var i=s;"string"==typeof s&&(i=function(){return this[s]()}),e&&(E[e]=i),t&&(E[t[0]]=function(){return U(i.apply(this,arguments),t[1],t[2])}),n&&(E[n]=function(){return this.localeData().ordinal(i.apply(this,arguments),e)})}function A(e,t){return e.isValid()?(t=j(t,e.localeData()),V[t]=V[t]||function(s){var e,i,t,r=s.match(N);for(e=0,i=r.length;e<i;e++)E[r[e]]?r[e]=E[r[e]]:r[e]=(t=r[e]).match(/\[[\s\S]/)?t.replace(/^\[|\]$/g,""):t.replace(/\\/g,"");return function(e){var t,n="";for(t=0;t<i;t++)n+=x(r[t])?r[t].call(e,s):r[t];return n}}(t),V[t](e)):e.localeData().invalidDate()}function j(e,t){var n=5;function s(e){return t.longDateFormat(e)||e}for(G.lastIndex=0;0<=n&&G.test(e);)e=e.replace(G,s),G.lastIndex=0,n-=1;return e}var Z=/\d/,z=/\d\d/,$=/\d{3}/,q=/\d{4}/,J=/[+-]?\d{6}/,B=/\d\d?/,Q=/\d\d\d\d?/,X=/\d\d\d\d\d\d?/,K=/\d{1,3}/,ee=/\d{1,4}/,te=/[+-]?\d{1,6}/,ne=/\d+/,se=/[+-]?\d+/,ie=/Z|[+-]\d\d:?\d\d/gi,re=/Z|[+-]\d\d(?::?\d\d)?/gi,ae=/[0-9]{0,256}['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFF07\uFF10-\uFFEF]{1,256}|[\u0600-\u06FF\/]{1,256}(\s*?[\u0600-\u06FF]{1,256}){1,2}/i,oe={};function ue(e,n,s){oe[e]=x(n)?n:function(e,t){return e&&s?s:n}}function le(e,t){return m(oe,e)?oe[e](t._strict,t._locale):new RegExp(de(e.replace("\\","").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(e,t,n,s,i){return t||n||s||i})))}function de(e){return e.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}var he={};function ce(e,n){var t,s=n;for("string"==typeof e&&(e=[e]),d(n)&&(s=function(e,t){t[n]=k(e)}),t=0;t<e.length;t++)he[e[t]]=s}function fe(e,i){ce(e,function(e,t,n,s){n._w=n._w||{},i(e,n._w,n,s)})}var me=0,_e=1,ye=2,ge=3,pe=4,ve=5,we=6,Me=7,Se=8;function De(e){return ke(e)?366:365}function ke(e){return e%4==0&&e%100!=0||e%400==0}I("Y",0,0,function(){var e=this.year();return e<=9999?""+e:"+"+e}),I(0,["YY",2],0,function(){return this.year()%100}),I(0,["YYYY",4],0,"year"),I(0,["YYYYY",5],0,"year"),I(0,["YYYYYY",6,!0],0,"year"),H("year","y"),L("year",1),ue("Y",se),ue("YY",B,z),ue("YYYY",ee,q),ue("YYYYY",te,J),ue("YYYYYY",te,J),ce(["YYYYY","YYYYYY"],me),ce("YYYY",function(e,t){t[me]=2===e.length?c.parseTwoDigitYear(e):k(e)}),ce("YY",function(e,t){t[me]=c.parseTwoDigitYear(e)}),ce("Y",function(e,t){t[me]=parseInt(e,10)}),c.parseTwoDigitYear=function(e){return k(e)+(68<k(e)?1900:2e3)};var Ye,Oe=Te("FullYear",!0);function Te(t,n){return function(e){return null!=e?(be(this,t,e),c.updateOffset(this,n),this):xe(this,t)}}function xe(e,t){return e.isValid()?e._d["get"+(e._isUTC?"UTC":"")+t]():NaN}function be(e,t,n){e.isValid()&&!isNaN(n)&&("FullYear"===t&&ke(e.year())&&1===e.month()&&29===e.date()?e._d["set"+(e._isUTC?"UTC":"")+t](n,e.month(),Pe(n,e.month())):e._d["set"+(e._isUTC?"UTC":"")+t](n))}function Pe(e,t){if(isNaN(e)||isNaN(t))return NaN;var n,s=(t%(n=12)+n)%n;return e+=(t-s)/12,1===s?ke(e)?29:28:31-s%7%2}Ye=Array.prototype.indexOf?Array.prototype.indexOf:function(e){var t;for(t=0;t<this.length;++t)if(this[t]===e)return t;return-1},I("M",["MM",2],"Mo",function(){return this.month()+1}),I("MMM",0,0,function(e){return this.localeData().monthsShort(this,e)}),I("MMMM",0,0,function(e){return this.localeData().months(this,e)}),H("month","M"),L("month",8),ue("M",B),ue("MM",B,z),ue("MMM",function(e,t){return t.monthsShortRegex(e)}),ue("MMMM",function(e,t){return t.monthsRegex(e)}),ce(["M","MM"],function(e,t){t[_e]=k(e)-1}),ce(["MMM","MMMM"],function(e,t,n,s){var i=n._locale.monthsParse(e,s,n._strict);null!=i?t[_e]=i:g(n).invalidMonth=e});var We=/D[oD]?(\[[^\[\]]*\]|\s)+MMMM?/,He="January_February_March_April_May_June_July_August_September_October_November_December".split("_");var Re="Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_");function Ce(e,t){var n;if(!e.isValid())return e;if("string"==typeof t)if(/^\d+$/.test(t))t=k(t);else if(!d(t=e.localeData().monthsParse(t)))return e;return n=Math.min(e.date(),Pe(e.year(),t)),e._d["set"+(e._isUTC?"UTC":"")+"Month"](t,n),e}function Fe(e){return null!=e?(Ce(this,e),c.updateOffset(this,!0),this):xe(this,"Month")}var Le=ae;var Ue=ae;function Ne(){function e(e,t){return t.length-e.length}var t,n,s=[],i=[],r=[];for(t=0;t<12;t++)n=y([2e3,t]),s.push(this.monthsShort(n,"")),i.push(this.months(n,"")),r.push(this.months(n,"")),r.push(this.monthsShort(n,""));for(s.sort(e),i.sort(e),r.sort(e),t=0;t<12;t++)s[t]=de(s[t]),i[t]=de(i[t]);for(t=0;t<24;t++)r[t]=de(r[t]);this._monthsRegex=new RegExp("^("+r.join("|")+")","i"),this._monthsShortRegex=this._monthsRegex,this._monthsStrictRegex=new RegExp("^("+i.join("|")+")","i"),this._monthsShortStrictRegex=new RegExp("^("+s.join("|")+")","i")}function Ge(e){var t=new Date(Date.UTC.apply(null,arguments));return e<100&&0<=e&&isFinite(t.getUTCFullYear())&&t.setUTCFullYear(e),t}function Ve(e,t,n){var s=7+t-n;return-((7+Ge(e,0,s).getUTCDay()-t)%7)+s-1}function Ee(e,t,n,s,i){var r,a,o=1+7*(t-1)+(7+n-s)%7+Ve(e,s,i);return o<=0?a=De(r=e-1)+o:o>De(e)?(r=e+1,a=o-De(e)):(r=e,a=o),{year:r,dayOfYear:a}}function Ie(e,t,n){var s,i,r=Ve(e.year(),t,n),a=Math.floor((e.dayOfYear()-r-1)/7)+1;return a<1?s=a+Ae(i=e.year()-1,t,n):a>Ae(e.year(),t,n)?(s=a-Ae(e.year(),t,n),i=e.year()+1):(i=e.year(),s=a),{week:s,year:i}}function Ae(e,t,n){var s=Ve(e,t,n),i=Ve(e+1,t,n);return(De(e)-s+i)/7}I("w",["ww",2],"wo","week"),I("W",["WW",2],"Wo","isoWeek"),H("week","w"),H("isoWeek","W"),L("week",5),L("isoWeek",5),ue("w",B),ue("ww",B,z),ue("W",B),ue("WW",B,z),fe(["w","ww","W","WW"],function(e,t,n,s){t[s.substr(0,1)]=k(e)});I("d",0,"do","day"),I("dd",0,0,function(e){return this.localeData().weekdaysMin(this,e)}),I("ddd",0,0,function(e){return this.localeData().weekdaysShort(this,e)}),I("dddd",0,0,function(e){return this.localeData().weekdays(this,e)}),I("e",0,0,"weekday"),I("E",0,0,"isoWeekday"),H("day","d"),H("weekday","e"),H("isoWeekday","E"),L("day",11),L("weekday",11),L("isoWeekday",11),ue("d",B),ue("e",B),ue("E",B),ue("dd",function(e,t){return t.weekdaysMinRegex(e)}),ue("ddd",function(e,t){return t.weekdaysShortRegex(e)}),ue("dddd",function(e,t){return t.weekdaysRegex(e)}),fe(["dd","ddd","dddd"],function(e,t,n,s){var i=n._locale.weekdaysParse(e,s,n._strict);null!=i?t.d=i:g(n).invalidWeekday=e}),fe(["d","e","E"],function(e,t,n,s){t[s]=k(e)});var je="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_");var Ze="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_");var ze="Su_Mo_Tu_We_Th_Fr_Sa".split("_");var $e=ae;var qe=ae;var Je=ae;function Be(){function e(e,t){return t.length-e.length}var t,n,s,i,r,a=[],o=[],u=[],l=[];for(t=0;t<7;t++)n=y([2e3,1]).day(t),s=this.weekdaysMin(n,""),i=this.weekdaysShort(n,""),r=this.weekdays(n,""),a.push(s),o.push(i),u.push(r),l.push(s),l.push(i),l.push(r);for(a.sort(e),o.sort(e),u.sort(e),l.sort(e),t=0;t<7;t++)o[t]=de(o[t]),u[t]=de(u[t]),l[t]=de(l[t]);this._weekdaysRegex=new RegExp("^("+l.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp("^("+u.join("|")+")","i"),this._weekdaysShortStrictRegex=new RegExp("^("+o.join("|")+")","i"),this._weekdaysMinStrictRegex=new RegExp("^("+a.join("|")+")","i")}function Qe(){return this.hours()%12||12}function Xe(e,t){I(e,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),t)})}function Ke(e,t){return t._meridiemParse}I("H",["HH",2],0,"hour"),I("h",["hh",2],0,Qe),I("k",["kk",2],0,function(){return this.hours()||24}),I("hmm",0,0,function(){return""+Qe.apply(this)+U(this.minutes(),2)}),I("hmmss",0,0,function(){return""+Qe.apply(this)+U(this.minutes(),2)+U(this.seconds(),2)}),I("Hmm",0,0,function(){return""+this.hours()+U(this.minutes(),2)}),I("Hmmss",0,0,function(){return""+this.hours()+U(this.minutes(),2)+U(this.seconds(),2)}),Xe("a",!0),Xe("A",!1),H("hour","h"),L("hour",13),ue("a",Ke),ue("A",Ke),ue("H",B),ue("h",B),ue("k",B),ue("HH",B,z),ue("hh",B,z),ue("kk",B,z),ue("hmm",Q),ue("hmmss",X),ue("Hmm",Q),ue("Hmmss",X),ce(["H","HH"],ge),ce(["k","kk"],function(e,t,n){var s=k(e);t[ge]=24===s?0:s}),ce(["a","A"],function(e,t,n){n._isPm=n._locale.isPM(e),n._meridiem=e}),ce(["h","hh"],function(e,t,n){t[ge]=k(e),g(n).bigHour=!0}),ce("hmm",function(e,t,n){var s=e.length-2;t[ge]=k(e.substr(0,s)),t[pe]=k(e.substr(s)),g(n).bigHour=!0}),ce("hmmss",function(e,t,n){var s=e.length-4,i=e.length-2;t[ge]=k(e.substr(0,s)),t[pe]=k(e.substr(s,2)),t[ve]=k(e.substr(i)),g(n).bigHour=!0}),ce("Hmm",function(e,t,n){var s=e.length-2;t[ge]=k(e.substr(0,s)),t[pe]=k(e.substr(s))}),ce("Hmmss",function(e,t,n){var s=e.length-4,i=e.length-2;t[ge]=k(e.substr(0,s)),t[pe]=k(e.substr(s,2)),t[ve]=k(e.substr(i))});var et,tt=Te("Hours",!0),nt={calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},longDateFormat:{LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},invalidDate:"Invalid date",ordinal:"%d",dayOfMonthOrdinalParse:/\d{1,2}/,relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},months:He,monthsShort:Re,week:{dow:0,doy:6},weekdays:je,weekdaysMin:ze,weekdaysShort:Ze,meridiemParse:/[ap]\.?m?\.?/i},st={},it={};function rt(e){return e?e.toLowerCase().replace("_","-"):e}function at(e){var t=null;if(!st[e]&&"undefined"!=typeof module&&module&&module.exports)try{t=et._abbr,require("./locale/"+e),ot(t)}catch(e){}return st[e]}function ot(e,t){var n;return e&&((n=l(t)?lt(e):ut(e,t))?et=n:"undefined"!=typeof console&&console.warn&&console.warn("Locale "+e+" not found. Did you forget to load it?")),et._abbr}function ut(e,t){if(null!==t){var n,s=nt;if(t.abbr=e,null!=st[e])T("defineLocaleOverride","use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale See http://momentjs.com/guides/#/warnings/define-locale/ for more info."),s=st[e]._config;else if(null!=t.parentLocale)if(null!=st[t.parentLocale])s=st[t.parentLocale]._config;else{if(null==(n=at(t.parentLocale)))return it[t.parentLocale]||(it[t.parentLocale]=[]),it[t.parentLocale].push({name:e,config:t}),null;s=n._config}return st[e]=new P(b(s,t)),it[e]&&it[e].forEach(function(e){ut(e.name,e.config)}),ot(e),st[e]}return delete st[e],null}function lt(e){var t;if(e&&e._locale&&e._locale._abbr&&(e=e._locale._abbr),!e)return et;if(!o(e)){if(t=at(e))return t;e=[e]}return function(e){for(var t,n,s,i,r=0;r<e.length;){for(t=(i=rt(e[r]).split("-")).length,n=(n=rt(e[r+1]))?n.split("-"):null;0<t;){if(s=at(i.slice(0,t).join("-")))return s;if(n&&n.length>=t&&a(i,n,!0)>=t-1)break;t--}r++}return et}(e)}function dt(e){var t,n=e._a;return n&&-2===g(e).overflow&&(t=n[_e]<0||11<n[_e]?_e:n[ye]<1||n[ye]>Pe(n[me],n[_e])?ye:n[ge]<0||24<n[ge]||24===n[ge]&&(0!==n[pe]||0!==n[ve]||0!==n[we])?ge:n[pe]<0||59<n[pe]?pe:n[ve]<0||59<n[ve]?ve:n[we]<0||999<n[we]?we:-1,g(e)._overflowDayOfYear&&(t<me||ye<t)&&(t=ye),g(e)._overflowWeeks&&-1===t&&(t=Me),g(e)._overflowWeekday&&-1===t&&(t=Se),g(e).overflow=t),e}function ht(e,t,n){return null!=e?e:null!=t?t:n}function ct(e){var t,n,s,i,r,a=[];if(!e._d){var o,u;for(o=e,u=new Date(c.now()),s=o._useUTC?[u.getUTCFullYear(),u.getUTCMonth(),u.getUTCDate()]:[u.getFullYear(),u.getMonth(),u.getDate()],e._w&&null==e._a[ye]&&null==e._a[_e]&&function(e){var t,n,s,i,r,a,o,u;if(null!=(t=e._w).GG||null!=t.W||null!=t.E)r=1,a=4,n=ht(t.GG,e._a[me],Ie(Tt(),1,4).year),s=ht(t.W,1),((i=ht(t.E,1))<1||7<i)&&(u=!0);else{r=e._locale._week.dow,a=e._locale._week.doy;var l=Ie(Tt(),r,a);n=ht(t.gg,e._a[me],l.year),s=ht(t.w,l.week),null!=t.d?((i=t.d)<0||6<i)&&(u=!0):null!=t.e?(i=t.e+r,(t.e<0||6<t.e)&&(u=!0)):i=r}s<1||s>Ae(n,r,a)?g(e)._overflowWeeks=!0:null!=u?g(e)._overflowWeekday=!0:(o=Ee(n,s,i,r,a),e._a[me]=o.year,e._dayOfYear=o.dayOfYear)}(e),null!=e._dayOfYear&&(r=ht(e._a[me],s[me]),(e._dayOfYear>De(r)||0===e._dayOfYear)&&(g(e)._overflowDayOfYear=!0),n=Ge(r,0,e._dayOfYear),e._a[_e]=n.getUTCMonth(),e._a[ye]=n.getUTCDate()),t=0;t<3&&null==e._a[t];++t)e._a[t]=a[t]=s[t];for(;t<7;t++)e._a[t]=a[t]=null==e._a[t]?2===t?1:0:e._a[t];24===e._a[ge]&&0===e._a[pe]&&0===e._a[ve]&&0===e._a[we]&&(e._nextDay=!0,e._a[ge]=0),e._d=(e._useUTC?Ge:function(e,t,n,s,i,r,a){var o=new Date(e,t,n,s,i,r,a);return e<100&&0<=e&&isFinite(o.getFullYear())&&o.setFullYear(e),o}).apply(null,a),i=e._useUTC?e._d.getUTCDay():e._d.getDay(),null!=e._tzm&&e._d.setUTCMinutes(e._d.getUTCMinutes()-e._tzm),e._nextDay&&(e._a[ge]=24),e._w&&void 0!==e._w.d&&e._w.d!==i&&(g(e).weekdayMismatch=!0)}}var ft=/^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,mt=/^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,_t=/Z|[+-]\d\d(?::?\d\d)?/,yt=[["YYYYYY-MM-DD",/[+-]\d{6}-\d\d-\d\d/],["YYYY-MM-DD",/\d{4}-\d\d-\d\d/],["GGGG-[W]WW-E",/\d{4}-W\d\d-\d/],["GGGG-[W]WW",/\d{4}-W\d\d/,!1],["YYYY-DDD",/\d{4}-\d{3}/],["YYYY-MM",/\d{4}-\d\d/,!1],["YYYYYYMMDD",/[+-]\d{10}/],["YYYYMMDD",/\d{8}/],["GGGG[W]WWE",/\d{4}W\d{3}/],["GGGG[W]WW",/\d{4}W\d{2}/,!1],["YYYYDDD",/\d{7}/]],gt=[["HH:mm:ss.SSSS",/\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss,SSSS",/\d\d:\d\d:\d\d,\d+/],["HH:mm:ss",/\d\d:\d\d:\d\d/],["HH:mm",/\d\d:\d\d/],["HHmmss.SSSS",/\d\d\d\d\d\d\.\d+/],["HHmmss,SSSS",/\d\d\d\d\d\d,\d+/],["HHmmss",/\d\d\d\d\d\d/],["HHmm",/\d\d\d\d/],["HH",/\d\d/]],pt=/^\/?Date\((\-?\d+)/i;function vt(e){var t,n,s,i,r,a,o=e._i,u=ft.exec(o)||mt.exec(o);if(u){for(g(e).iso=!0,t=0,n=yt.length;t<n;t++)if(yt[t][1].exec(u[1])){i=yt[t][0],s=!1!==yt[t][2];break}if(null==i)return void(e._isValid=!1);if(u[3]){for(t=0,n=gt.length;t<n;t++)if(gt[t][1].exec(u[3])){r=(u[2]||" ")+gt[t][0];break}if(null==r)return void(e._isValid=!1)}if(!s&&null!=r)return void(e._isValid=!1);if(u[4]){if(!_t.exec(u[4]))return void(e._isValid=!1);a="Z"}e._f=i+(r||"")+(a||""),kt(e)}else e._isValid=!1}var wt=/^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\d{4}))$/;function Mt(e,t,n,s,i,r){var a=[function(e){var t=parseInt(e,10);{if(t<=49)return 2e3+t;if(t<=999)return 1900+t}return t}(e),Re.indexOf(t),parseInt(n,10),parseInt(s,10),parseInt(i,10)];return r&&a.push(parseInt(r,10)),a}var St={UT:0,GMT:0,EDT:-240,EST:-300,CDT:-300,CST:-360,MDT:-360,MST:-420,PDT:-420,PST:-480};function Dt(e){var t,n,s,i=wt.exec(e._i.replace(/\([^)]*\)|[\n\t]/g," ").replace(/(\s\s+)/g," ").trim());if(i){var r=Mt(i[4],i[3],i[2],i[5],i[6],i[7]);if(t=i[1],n=r,s=e,t&&Ze.indexOf(t)!==new Date(n[0],n[1],n[2]).getDay()&&(g(s).weekdayMismatch=!0,!(s._isValid=!1)))return;e._a=r,e._tzm=function(e,t,n){if(e)return St[e];if(t)return 0;var s=parseInt(n,10),i=s%100;return(s-i)/100*60+i}(i[8],i[9],i[10]),e._d=Ge.apply(null,e._a),e._d.setUTCMinutes(e._d.getUTCMinutes()-e._tzm),g(e).rfc2822=!0}else e._isValid=!1}function kt(e){if(e._f!==c.ISO_8601)if(e._f!==c.RFC_2822){e._a=[],g(e).empty=!0;var t,n,s,i,r,a,o,u,l=""+e._i,d=l.length,h=0;for(s=j(e._f,e._locale).match(N)||[],t=0;t<s.length;t++)i=s[t],(n=(l.match(le(i,e))||[])[0])&&(0<(r=l.substr(0,l.indexOf(n))).length&&g(e).unusedInput.push(r),l=l.slice(l.indexOf(n)+n.length),h+=n.length),E[i]?(n?g(e).empty=!1:g(e).unusedTokens.push(i),a=i,u=e,null!=(o=n)&&m(he,a)&&he[a](o,u._a,u,a)):e._strict&&!n&&g(e).unusedTokens.push(i);g(e).charsLeftOver=d-h,0<l.length&&g(e).unusedInput.push(l),e._a[ge]<=12&&!0===g(e).bigHour&&0<e._a[ge]&&(g(e).bigHour=void 0),g(e).parsedDateParts=e._a.slice(0),g(e).meridiem=e._meridiem,e._a[ge]=function(e,t,n){var s;if(null==n)return t;return null!=e.meridiemHour?e.meridiemHour(t,n):(null!=e.isPM&&((s=e.isPM(n))&&t<12&&(t+=12),s||12!==t||(t=0)),t)}(e._locale,e._a[ge],e._meridiem),ct(e),dt(e)}else Dt(e);else vt(e)}function Yt(e){var t,n,s,i,r=e._i,a=e._f;return e._locale=e._locale||lt(e._l),null===r||void 0===a&&""===r?v({nullInput:!0}):("string"==typeof r&&(e._i=r=e._locale.preparse(r)),S(r)?new M(dt(r)):(h(r)?e._d=r:o(a)?function(e){var t,n,s,i,r;if(0===e._f.length)return g(e).invalidFormat=!0,e._d=new Date(NaN);for(i=0;i<e._f.length;i++)r=0,t=w({},e),null!=e._useUTC&&(t._useUTC=e._useUTC),t._f=e._f[i],kt(t),p(t)&&(r+=g(t).charsLeftOver,r+=10*g(t).unusedTokens.length,g(t).score=r,(null==s||r<s)&&(s=r,n=t));_(e,n||t)}(e):a?kt(e):l(n=(t=e)._i)?t._d=new Date(c.now()):h(n)?t._d=new Date(n.valueOf()):"string"==typeof n?(s=t,null===(i=pt.exec(s._i))?(vt(s),!1===s._isValid&&(delete s._isValid,Dt(s),!1===s._isValid&&(delete s._isValid,c.createFromInputFallback(s)))):s._d=new Date(+i[1])):o(n)?(t._a=f(n.slice(0),function(e){return parseInt(e,10)}),ct(t)):u(n)?function(e){if(!e._d){var t=C(e._i);e._a=f([t.year,t.month,t.day||t.date,t.hour,t.minute,t.second,t.millisecond],function(e){return e&&parseInt(e,10)}),ct(e)}}(t):d(n)?t._d=new Date(n):c.createFromInputFallback(t),p(e)||(e._d=null),e))}function Ot(e,t,n,s,i){var r,a={};return!0!==n&&!1!==n||(s=n,n=void 0),(u(e)&&function(e){if(Object.getOwnPropertyNames)return 0===Object.getOwnPropertyNames(e).length;var t;for(t in e)if(e.hasOwnProperty(t))return!1;return!0}(e)||o(e)&&0===e.length)&&(e=void 0),a._isAMomentObject=!0,a._useUTC=a._isUTC=i,a._l=n,a._i=e,a._f=t,a._strict=s,(r=new M(dt(Yt(a))))._nextDay&&(r.add(1,"d"),r._nextDay=void 0),r}function Tt(e,t,n,s){return Ot(e,t,n,s,!1)}c.createFromInputFallback=n("value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are discouraged and will be removed in an upcoming major release. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.",function(e){e._d=new Date(e._i+(e._useUTC?" UTC":""))}),c.ISO_8601=function(){},c.RFC_2822=function(){};var xt=n("moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/",function(){var e=Tt.apply(null,arguments);return this.isValid()&&e.isValid()?e<this?this:e:v()}),bt=n("moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/",function(){var e=Tt.apply(null,arguments);return this.isValid()&&e.isValid()?this<e?this:e:v()});function Pt(e,t){var n,s;if(1===t.length&&o(t[0])&&(t=t[0]),!t.length)return Tt();for(n=t[0],s=1;s<t.length;++s)t[s].isValid()&&!t[s][e](n)||(n=t[s]);return n}var Wt=["year","quarter","month","week","day","hour","minute","second","millisecond"];function Ht(e){var t=C(e),n=t.year||0,s=t.quarter||0,i=t.month||0,r=t.week||0,a=t.day||0,o=t.hour||0,u=t.minute||0,l=t.second||0,d=t.millisecond||0;this._isValid=function(e){for(var t in e)if(-1===Ye.call(Wt,t)||null!=e[t]&&isNaN(e[t]))return!1;for(var n=!1,s=0;s<Wt.length;++s)if(e[Wt[s]]){if(n)return!1;parseFloat(e[Wt[s]])!==k(e[Wt[s]])&&(n=!0)}return!0}(t),this._milliseconds=+d+1e3*l+6e4*u+1e3*o*60*60,this._days=+a+7*r,this._months=+i+3*s+12*n,this._data={},this._locale=lt(),this._bubble()}function Rt(e){return e instanceof Ht}function Ct(e){return e<0?-1*Math.round(-1*e):Math.round(e)}function Ft(e,n){I(e,0,0,function(){var e=this.utcOffset(),t="+";return e<0&&(e=-e,t="-"),t+U(~~(e/60),2)+n+U(~~e%60,2)})}Ft("Z",":"),Ft("ZZ",""),ue("Z",re),ue("ZZ",re),ce(["Z","ZZ"],function(e,t,n){n._useUTC=!0,n._tzm=Ut(re,e)});var Lt=/([\+\-]|\d\d)/gi;function Ut(e,t){var n=(t||"").match(e);if(null===n)return null;var s=((n[n.length-1]||[])+"").match(Lt)||["-",0,0],i=60*s[1]+k(s[2]);return 0===i?0:"+"===s[0]?i:-i}function Nt(e,t){var n,s;return t._isUTC?(n=t.clone(),s=(S(e)||h(e)?e.valueOf():Tt(e).valueOf())-n.valueOf(),n._d.setTime(n._d.valueOf()+s),c.updateOffset(n,!1),n):Tt(e).local()}function Gt(e){return 15*-Math.round(e._d.getTimezoneOffset()/15)}function Vt(){return!!this.isValid()&&(this._isUTC&&0===this._offset)}c.updateOffset=function(){};var Et=/^(\-|\+)?(?:(\d*)[. ])?(\d+)\:(\d+)(?:\:(\d+)(\.\d*)?)?$/,It=/^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;function At(e,t){var n,s,i,r=e,a=null;return Rt(e)?r={ms:e._milliseconds,d:e._days,M:e._months}:d(e)?(r={},t?r[t]=e:r.milliseconds=e):(a=Et.exec(e))?(n="-"===a[1]?-1:1,r={y:0,d:k(a[ye])*n,h:k(a[ge])*n,m:k(a[pe])*n,s:k(a[ve])*n,ms:k(Ct(1e3*a[we]))*n}):(a=It.exec(e))?(n="-"===a[1]?-1:(a[1],1),r={y:jt(a[2],n),M:jt(a[3],n),w:jt(a[4],n),d:jt(a[5],n),h:jt(a[6],n),m:jt(a[7],n),s:jt(a[8],n)}):null==r?r={}:"object"==typeof r&&("from"in r||"to"in r)&&(i=function(e,t){var n;if(!e.isValid()||!t.isValid())return{milliseconds:0,months:0};t=Nt(t,e),e.isBefore(t)?n=Zt(e,t):((n=Zt(t,e)).milliseconds=-n.milliseconds,n.months=-n.months);return n}(Tt(r.from),Tt(r.to)),(r={}).ms=i.milliseconds,r.M=i.months),s=new Ht(r),Rt(e)&&m(e,"_locale")&&(s._locale=e._locale),s}function jt(e,t){var n=e&&parseFloat(e.replace(",","."));return(isNaN(n)?0:n)*t}function Zt(e,t){var n={milliseconds:0,months:0};return n.months=t.month()-e.month()+12*(t.year()-e.year()),e.clone().add(n.months,"M").isAfter(t)&&--n.months,n.milliseconds=+t-+e.clone().add(n.months,"M"),n}function zt(s,i){return function(e,t){var n;return null===t||isNaN(+t)||(T(i,"moment()."+i+"(period, number) is deprecated. Please use moment()."+i+"(number, period). See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info."),n=e,e=t,t=n),$t(this,At(e="string"==typeof e?+e:e,t),s),this}}function $t(e,t,n,s){var i=t._milliseconds,r=Ct(t._days),a=Ct(t._months);e.isValid()&&(s=null==s||s,a&&Ce(e,xe(e,"Month")+a*n),r&&be(e,"Date",xe(e,"Date")+r*n),i&&e._d.setTime(e._d.valueOf()+i*n),s&&c.updateOffset(e,r||a))}At.fn=Ht.prototype,At.invalid=function(){return At(NaN)};var qt=zt(1,"add"),Jt=zt(-1,"subtract");function Bt(e,t){var n=12*(t.year()-e.year())+(t.month()-e.month()),s=e.clone().add(n,"months");return-(n+(t-s<0?(t-s)/(s-e.clone().add(n-1,"months")):(t-s)/(e.clone().add(n+1,"months")-s)))||0}function Qt(e){var t;return void 0===e?this._locale._abbr:(null!=(t=lt(e))&&(this._locale=t),this)}c.defaultFormat="YYYY-MM-DDTHH:mm:ssZ",c.defaultFormatUtc="YYYY-MM-DDTHH:mm:ss[Z]";var Xt=n("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",function(e){return void 0===e?this.localeData():this.locale(e)});function Kt(){return this._locale}function en(e,t){I(0,[e,e.length],0,t)}function tn(e,t,n,s,i){var r;return null==e?Ie(this,s,i).year:((r=Ae(e,s,i))<t&&(t=r),function(e,t,n,s,i){var r=Ee(e,t,n,s,i),a=Ge(r.year,0,r.dayOfYear);return this.year(a.getUTCFullYear()),this.month(a.getUTCMonth()),this.date(a.getUTCDate()),this}.call(this,e,t,n,s,i))}I(0,["gg",2],0,function(){return this.weekYear()%100}),I(0,["GG",2],0,function(){return this.isoWeekYear()%100}),en("gggg","weekYear"),en("ggggg","weekYear"),en("GGGG","isoWeekYear"),en("GGGGG","isoWeekYear"),H("weekYear","gg"),H("isoWeekYear","GG"),L("weekYear",1),L("isoWeekYear",1),ue("G",se),ue("g",se),ue("GG",B,z),ue("gg",B,z),ue("GGGG",ee,q),ue("gggg",ee,q),ue("GGGGG",te,J),ue("ggggg",te,J),fe(["gggg","ggggg","GGGG","GGGGG"],function(e,t,n,s){t[s.substr(0,2)]=k(e)}),fe(["gg","GG"],function(e,t,n,s){t[s]=c.parseTwoDigitYear(e)}),I("Q",0,"Qo","quarter"),H("quarter","Q"),L("quarter",7),ue("Q",Z),ce("Q",function(e,t){t[_e]=3*(k(e)-1)}),I("D",["DD",2],"Do","date"),H("date","D"),L("date",9),ue("D",B),ue("DD",B,z),ue("Do",function(e,t){return e?t._dayOfMonthOrdinalParse||t._ordinalParse:t._dayOfMonthOrdinalParseLenient}),ce(["D","DD"],ye),ce("Do",function(e,t){t[ye]=k(e.match(B)[0])});var nn=Te("Date",!0);I("DDD",["DDDD",3],"DDDo","dayOfYear"),H("dayOfYear","DDD"),L("dayOfYear",4),ue("DDD",K),ue("DDDD",$),ce(["DDD","DDDD"],function(e,t,n){n._dayOfYear=k(e)}),I("m",["mm",2],0,"minute"),H("minute","m"),L("minute",14),ue("m",B),ue("mm",B,z),ce(["m","mm"],pe);var sn=Te("Minutes",!1);I("s",["ss",2],0,"second"),H("second","s"),L("second",15),ue("s",B),ue("ss",B,z),ce(["s","ss"],ve);var rn,an=Te("Seconds",!1);for(I("S",0,0,function(){return~~(this.millisecond()/100)}),I(0,["SS",2],0,function(){return~~(this.millisecond()/10)}),I(0,["SSS",3],0,"millisecond"),I(0,["SSSS",4],0,function(){return 10*this.millisecond()}),I(0,["SSSSS",5],0,function(){return 100*this.millisecond()}),I(0,["SSSSSS",6],0,function(){return 1e3*this.millisecond()}),I(0,["SSSSSSS",7],0,function(){return 1e4*this.millisecond()}),I(0,["SSSSSSSS",8],0,function(){return 1e5*this.millisecond()}),I(0,["SSSSSSSSS",9],0,function(){return 1e6*this.millisecond()}),H("millisecond","ms"),L("millisecond",16),ue("S",K,Z),ue("SS",K,z),ue("SSS",K,$),rn="SSSS";rn.length<=9;rn+="S")ue(rn,ne);function on(e,t){t[we]=k(1e3*("0."+e))}for(rn="S";rn.length<=9;rn+="S")ce(rn,on);var un=Te("Milliseconds",!1);I("z",0,0,"zoneAbbr"),I("zz",0,0,"zoneName");var ln=M.prototype;function dn(e){return e}ln.add=qt,ln.calendar=function(e,t){var n=e||Tt(),s=Nt(n,this).startOf("day"),i=c.calendarFormat(this,s)||"sameElse",r=t&&(x(t[i])?t[i].call(this,n):t[i]);return this.format(r||this.localeData().calendar(i,this,Tt(n)))},ln.clone=function(){return new M(this)},ln.diff=function(e,t,n){var s,i,r;if(!this.isValid())return NaN;if(!(s=Nt(e,this)).isValid())return NaN;switch(i=6e4*(s.utcOffset()-this.utcOffset()),t=R(t)){case"year":r=Bt(this,s)/12;break;case"month":r=Bt(this,s);break;case"quarter":r=Bt(this,s)/3;break;case"second":r=(this-s)/1e3;break;case"minute":r=(this-s)/6e4;break;case"hour":r=(this-s)/36e5;break;case"day":r=(this-s-i)/864e5;break;case"week":r=(this-s-i)/6048e5;break;default:r=this-s}return n?r:D(r)},ln.endOf=function(e){return void 0===(e=R(e))||"millisecond"===e?this:("date"===e&&(e="day"),this.startOf(e).add(1,"isoWeek"===e?"week":e).subtract(1,"ms"))},ln.format=function(e){e||(e=this.isUtc()?c.defaultFormatUtc:c.defaultFormat);var t=A(this,e);return this.localeData().postformat(t)},ln.from=function(e,t){return this.isValid()&&(S(e)&&e.isValid()||Tt(e).isValid())?At({to:this,from:e}).locale(this.locale()).humanize(!t):this.localeData().invalidDate()},ln.fromNow=function(e){return this.from(Tt(),e)},ln.to=function(e,t){return this.isValid()&&(S(e)&&e.isValid()||Tt(e).isValid())?At({from:this,to:e}).locale(this.locale()).humanize(!t):this.localeData().invalidDate()},ln.toNow=function(e){return this.to(Tt(),e)},ln.get=function(e){return x(this[e=R(e)])?this[e]():this},ln.invalidAt=function(){return g(this).overflow},ln.isAfter=function(e,t){var n=S(e)?e:Tt(e);return!(!this.isValid()||!n.isValid())&&("millisecond"===(t=R(l(t)?"millisecond":t))?this.valueOf()>n.valueOf():n.valueOf()<this.clone().startOf(t).valueOf())},ln.isBefore=function(e,t){var n=S(e)?e:Tt(e);return!(!this.isValid()||!n.isValid())&&("millisecond"===(t=R(l(t)?"millisecond":t))?this.valueOf()<n.valueOf():this.clone().endOf(t).valueOf()<n.valueOf())},ln.isBetween=function(e,t,n,s){return("("===(s=s||"()")[0]?this.isAfter(e,n):!this.isBefore(e,n))&&(")"===s[1]?this.isBefore(t,n):!this.isAfter(t,n))},ln.isSame=function(e,t){var n,s=S(e)?e:Tt(e);return!(!this.isValid()||!s.isValid())&&("millisecond"===(t=R(t||"millisecond"))?this.valueOf()===s.valueOf():(n=s.valueOf(),this.clone().startOf(t).valueOf()<=n&&n<=this.clone().endOf(t).valueOf()))},ln.isSameOrAfter=function(e,t){return this.isSame(e,t)||this.isAfter(e,t)},ln.isSameOrBefore=function(e,t){return this.isSame(e,t)||this.isBefore(e,t)},ln.isValid=function(){return p(this)},ln.lang=Xt,ln.locale=Qt,ln.localeData=Kt,ln.max=bt,ln.min=xt,ln.parsingFlags=function(){return _({},g(this))},ln.set=function(e,t){if("object"==typeof e)for(var n=function(e){var t=[];for(var n in e)t.push({unit:n,priority:F[n]});return t.sort(function(e,t){return e.priority-t.priority}),t}(e=C(e)),s=0;s<n.length;s++)this[n[s].unit](e[n[s].unit]);else if(x(this[e=R(e)]))return this[e](t);return this},ln.startOf=function(e){switch(e=R(e)){case"year":this.month(0);case"quarter":case"month":this.date(1);case"week":case"isoWeek":case"day":case"date":this.hours(0);case"hour":this.minutes(0);case"minute":this.seconds(0);case"second":this.milliseconds(0)}return"week"===e&&this.weekday(0),"isoWeek"===e&&this.isoWeekday(1),"quarter"===e&&this.month(3*Math.floor(this.month()/3)),this},ln.subtract=Jt,ln.toArray=function(){var e=this;return[e.year(),e.month(),e.date(),e.hour(),e.minute(),e.second(),e.millisecond()]},ln.toObject=function(){var e=this;return{years:e.year(),months:e.month(),date:e.date(),hours:e.hours(),minutes:e.minutes(),seconds:e.seconds(),milliseconds:e.milliseconds()}},ln.toDate=function(){return new Date(this.valueOf())},ln.toISOString=function(e){if(!this.isValid())return null;var t=!0!==e,n=t?this.clone().utc():this;return n.year()<0||9999<n.year()?A(n,t?"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYYYY-MM-DD[T]HH:mm:ss.SSSZ"):x(Date.prototype.toISOString)?t?this.toDate().toISOString():new Date(this.valueOf()+60*this.utcOffset()*1e3).toISOString().replace("Z",A(n,"Z")):A(n,t?"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYY-MM-DD[T]HH:mm:ss.SSSZ")},ln.inspect=function(){if(!this.isValid())return"moment.invalid(/* "+this._i+" */)";var e="moment",t="";this.isLocal()||(e=0===this.utcOffset()?"moment.utc":"moment.parseZone",t="Z");var n="["+e+'("]',s=0<=this.year()&&this.year()<=9999?"YYYY":"YYYYYY",i=t+'[")]';return this.format(n+s+"-MM-DD[T]HH:mm:ss.SSS"+i)},ln.toJSON=function(){return this.isValid()?this.toISOString():null},ln.toString=function(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")},ln.unix=function(){return Math.floor(this.valueOf()/1e3)},ln.valueOf=function(){return this._d.valueOf()-6e4*(this._offset||0)},ln.creationData=function(){return{input:this._i,format:this._f,locale:this._locale,isUTC:this._isUTC,strict:this._strict}},ln.year=Oe,ln.isLeapYear=function(){return ke(this.year())},ln.weekYear=function(e){return tn.call(this,e,this.week(),this.weekday(),this.localeData()._week.dow,this.localeData()._week.doy)},ln.isoWeekYear=function(e){return tn.call(this,e,this.isoWeek(),this.isoWeekday(),1,4)},ln.quarter=ln.quarters=function(e){return null==e?Math.ceil((this.month()+1)/3):this.month(3*(e-1)+this.month()%3)},ln.month=Fe,ln.daysInMonth=function(){return Pe(this.year(),this.month())},ln.week=ln.weeks=function(e){var t=this.localeData().week(this);return null==e?t:this.add(7*(e-t),"d")},ln.isoWeek=ln.isoWeeks=function(e){var t=Ie(this,1,4).week;return null==e?t:this.add(7*(e-t),"d")},ln.weeksInYear=function(){var e=this.localeData()._week;return Ae(this.year(),e.dow,e.doy)},ln.isoWeeksInYear=function(){return Ae(this.year(),1,4)},ln.date=nn,ln.day=ln.days=function(e){if(!this.isValid())return null!=e?this:NaN;var t,n,s=this._isUTC?this._d.getUTCDay():this._d.getDay();return null!=e?(t=e,n=this.localeData(),e="string"!=typeof t?t:isNaN(t)?"number"==typeof(t=n.weekdaysParse(t))?t:null:parseInt(t,10),this.add(e-s,"d")):s},ln.weekday=function(e){if(!this.isValid())return null!=e?this:NaN;var t=(this.day()+7-this.localeData()._week.dow)%7;return null==e?t:this.add(e-t,"d")},ln.isoWeekday=function(e){if(!this.isValid())return null!=e?this:NaN;if(null!=e){var t=(n=e,s=this.localeData(),"string"==typeof n?s.weekdaysParse(n)%7||7:isNaN(n)?null:n);return this.day(this.day()%7?t:t-7)}return this.day()||7;var n,s},ln.dayOfYear=function(e){var t=Math.round((this.clone().startOf("day")-this.clone().startOf("year"))/864e5)+1;return null==e?t:this.add(e-t,"d")},ln.hour=ln.hours=tt,ln.minute=ln.minutes=sn,ln.second=ln.seconds=an,ln.millisecond=ln.milliseconds=un,ln.utcOffset=function(e,t,n){var s,i=this._offset||0;if(!this.isValid())return null!=e?this:NaN;if(null!=e){if("string"==typeof e){if(null===(e=Ut(re,e)))return this}else Math.abs(e)<16&&!n&&(e*=60);return!this._isUTC&&t&&(s=Gt(this)),this._offset=e,this._isUTC=!0,null!=s&&this.add(s,"m"),i!==e&&(!t||this._changeInProgress?$t(this,At(e-i,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,c.updateOffset(this,!0),this._changeInProgress=null)),this}return this._isUTC?i:Gt(this)},ln.utc=function(e){return this.utcOffset(0,e)},ln.local=function(e){return this._isUTC&&(this.utcOffset(0,e),this._isUTC=!1,e&&this.subtract(Gt(this),"m")),this},ln.parseZone=function(){if(null!=this._tzm)this.utcOffset(this._tzm,!1,!0);else if("string"==typeof this._i){var e=Ut(ie,this._i);null!=e?this.utcOffset(e):this.utcOffset(0,!0)}return this},ln.hasAlignedHourOffset=function(e){return!!this.isValid()&&(e=e?Tt(e).utcOffset():0,(this.utcOffset()-e)%60==0)},ln.isDST=function(){return this.utcOffset()>this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()},ln.isLocal=function(){return!!this.isValid()&&!this._isUTC},ln.isUtcOffset=function(){return!!this.isValid()&&this._isUTC},ln.isUtc=Vt,ln.isUTC=Vt,ln.zoneAbbr=function(){return this._isUTC?"UTC":""},ln.zoneName=function(){return this._isUTC?"Coordinated Universal Time":""},ln.dates=n("dates accessor is deprecated. Use date instead.",nn),ln.months=n("months accessor is deprecated. Use month instead",Fe),ln.years=n("years accessor is deprecated. Use year instead",Oe),ln.zone=n("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/",function(e,t){return null!=e?("string"!=typeof e&&(e=-e),this.utcOffset(e,t),this):-this.utcOffset()}),ln.isDSTShifted=n("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information",function(){if(!l(this._isDSTShifted))return this._isDSTShifted;var e={};if(w(e,this),(e=Yt(e))._a){var t=e._isUTC?y(e._a):Tt(e._a);this._isDSTShifted=this.isValid()&&0<a(e._a,t.toArray())}else this._isDSTShifted=!1;return this._isDSTShifted});var hn=P.prototype;function cn(e,t,n,s){var i=lt(),r=y().set(s,t);return i[n](r,e)}function fn(e,t,n){if(d(e)&&(t=e,e=void 0),e=e||"",null!=t)return cn(e,t,n,"month");var s,i=[];for(s=0;s<12;s++)i[s]=cn(e,s,n,"month");return i}function mn(e,t,n,s){"boolean"==typeof e?d(t)&&(n=t,t=void 0):(t=e,e=!1,d(n=t)&&(n=t,t=void 0)),t=t||"";var i,r=lt(),a=e?r._week.dow:0;if(null!=n)return cn(t,(n+a)%7,s,"day");var o=[];for(i=0;i<7;i++)o[i]=cn(t,(i+a)%7,s,"day");return o}hn.calendar=function(e,t,n){var s=this._calendar[e]||this._calendar.sameElse;return x(s)?s.call(t,n):s},hn.longDateFormat=function(e){var t=this._longDateFormat[e],n=this._longDateFormat[e.toUpperCase()];return t||!n?t:(this._longDateFormat[e]=n.replace(/MMMM|MM|DD|dddd/g,function(e){return e.slice(1)}),this._longDateFormat[e])},hn.invalidDate=function(){return this._invalidDate},hn.ordinal=function(e){return this._ordinal.replace("%d",e)},hn.preparse=dn,hn.postformat=dn,hn.relativeTime=function(e,t,n,s){var i=this._relativeTime[n];return x(i)?i(e,t,n,s):i.replace(/%d/i,e)},hn.pastFuture=function(e,t){var n=this._relativeTime[0<e?"future":"past"];return x(n)?n(t):n.replace(/%s/i,t)},hn.set=function(e){var t,n;for(n in e)x(t=e[n])?this[n]=t:this["_"+n]=t;this._config=e,this._dayOfMonthOrdinalParseLenient=new RegExp((this._dayOfMonthOrdinalParse.source||this._ordinalParse.source)+"|"+/\d{1,2}/.source)},hn.months=function(e,t){return e?o(this._months)?this._months[e.month()]:this._months[(this._months.isFormat||We).test(t)?"format":"standalone"][e.month()]:o(this._months)?this._months:this._months.standalone},hn.monthsShort=function(e,t){return e?o(this._monthsShort)?this._monthsShort[e.month()]:this._monthsShort[We.test(t)?"format":"standalone"][e.month()]:o(this._monthsShort)?this._monthsShort:this._monthsShort.standalone},hn.monthsParse=function(e,t,n){var s,i,r;if(this._monthsParseExact)return function(e,t,n){var s,i,r,a=e.toLocaleLowerCase();if(!this._monthsParse)for(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[],s=0;s<12;++s)r=y([2e3,s]),this._shortMonthsParse[s]=this.monthsShort(r,"").toLocaleLowerCase(),this._longMonthsParse[s]=this.months(r,"").toLocaleLowerCase();return n?"MMM"===t?-1!==(i=Ye.call(this._shortMonthsParse,a))?i:null:-1!==(i=Ye.call(this._longMonthsParse,a))?i:null:"MMM"===t?-1!==(i=Ye.call(this._shortMonthsParse,a))?i:-1!==(i=Ye.call(this._longMonthsParse,a))?i:null:-1!==(i=Ye.call(this._longMonthsParse,a))?i:-1!==(i=Ye.call(this._shortMonthsParse,a))?i:null}.call(this,e,t,n);for(this._monthsParse||(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[]),s=0;s<12;s++){if(i=y([2e3,s]),n&&!this._longMonthsParse[s]&&(this._longMonthsParse[s]=new RegExp("^"+this.months(i,"").replace(".","")+"$","i"),this._shortMonthsParse[s]=new RegExp("^"+this.monthsShort(i,"").replace(".","")+"$","i")),n||this._monthsParse[s]||(r="^"+this.months(i,"")+"|^"+this.monthsShort(i,""),this._monthsParse[s]=new RegExp(r.replace(".",""),"i")),n&&"MMMM"===t&&this._longMonthsParse[s].test(e))return s;if(n&&"MMM"===t&&this._shortMonthsParse[s].test(e))return s;if(!n&&this._monthsParse[s].test(e))return s}},hn.monthsRegex=function(e){return this._monthsParseExact?(m(this,"_monthsRegex")||Ne.call(this),e?this._monthsStrictRegex:this._monthsRegex):(m(this,"_monthsRegex")||(this._monthsRegex=Ue),this._monthsStrictRegex&&e?this._monthsStrictRegex:this._monthsRegex)},hn.monthsShortRegex=function(e){return this._monthsParseExact?(m(this,"_monthsRegex")||Ne.call(this),e?this._monthsShortStrictRegex:this._monthsShortRegex):(m(this,"_monthsShortRegex")||(this._monthsShortRegex=Le),this._monthsShortStrictRegex&&e?this._monthsShortStrictRegex:this._monthsShortRegex)},hn.week=function(e){return Ie(e,this._week.dow,this._week.doy).week},hn.firstDayOfYear=function(){return this._week.doy},hn.firstDayOfWeek=function(){return this._week.dow},hn.weekdays=function(e,t){return e?o(this._weekdays)?this._weekdays[e.day()]:this._weekdays[this._weekdays.isFormat.test(t)?"format":"standalone"][e.day()]:o(this._weekdays)?this._weekdays:this._weekdays.standalone},hn.weekdaysMin=function(e){return e?this._weekdaysMin[e.day()]:this._weekdaysMin},hn.weekdaysShort=function(e){return e?this._weekdaysShort[e.day()]:this._weekdaysShort},hn.weekdaysParse=function(e,t,n){var s,i,r;if(this._weekdaysParseExact)return function(e,t,n){var s,i,r,a=e.toLocaleLowerCase();if(!this._weekdaysParse)for(this._weekdaysParse=[],this._shortWeekdaysParse=[],this._minWeekdaysParse=[],s=0;s<7;++s)r=y([2e3,1]).day(s),this._minWeekdaysParse[s]=this.weekdaysMin(r,"").toLocaleLowerCase(),this._shortWeekdaysParse[s]=this.weekdaysShort(r,"").toLocaleLowerCase(),this._weekdaysParse[s]=this.weekdays(r,"").toLocaleLowerCase();return n?"dddd"===t?-1!==(i=Ye.call(this._weekdaysParse,a))?i:null:"ddd"===t?-1!==(i=Ye.call(this._shortWeekdaysParse,a))?i:null:-1!==(i=Ye.call(this._minWeekdaysParse,a))?i:null:"dddd"===t?-1!==(i=Ye.call(this._weekdaysParse,a))?i:-1!==(i=Ye.call(this._shortWeekdaysParse,a))?i:-1!==(i=Ye.call(this._minWeekdaysParse,a))?i:null:"ddd"===t?-1!==(i=Ye.call(this._shortWeekdaysParse,a))?i:-1!==(i=Ye.call(this._weekdaysParse,a))?i:-1!==(i=Ye.call(this._minWeekdaysParse,a))?i:null:-1!==(i=Ye.call(this._minWeekdaysParse,a))?i:-1!==(i=Ye.call(this._weekdaysParse,a))?i:-1!==(i=Ye.call(this._shortWeekdaysParse,a))?i:null}.call(this,e,t,n);for(this._weekdaysParse||(this._weekdaysParse=[],this._minWeekdaysParse=[],this._shortWeekdaysParse=[],this._fullWeekdaysParse=[]),s=0;s<7;s++){if(i=y([2e3,1]).day(s),n&&!this._fullWeekdaysParse[s]&&(this._fullWeekdaysParse[s]=new RegExp("^"+this.weekdays(i,"").replace(".",".?")+"$","i"),this._shortWeekdaysParse[s]=new RegExp("^"+this.weekdaysShort(i,"").replace(".",".?")+"$","i"),this._minWeekdaysParse[s]=new RegExp("^"+this.weekdaysMin(i,"").replace(".",".?")+"$","i")),this._weekdaysParse[s]||(r="^"+this.weekdays(i,"")+"|^"+this.weekdaysShort(i,"")+"|^"+this.weekdaysMin(i,""),this._weekdaysParse[s]=new RegExp(r.replace(".",""),"i")),n&&"dddd"===t&&this._fullWeekdaysParse[s].test(e))return s;if(n&&"ddd"===t&&this._shortWeekdaysParse[s].test(e))return s;if(n&&"dd"===t&&this._minWeekdaysParse[s].test(e))return s;if(!n&&this._weekdaysParse[s].test(e))return s}},hn.weekdaysRegex=function(e){return this._weekdaysParseExact?(m(this,"_weekdaysRegex")||Be.call(this),e?this._weekdaysStrictRegex:this._weekdaysRegex):(m(this,"_weekdaysRegex")||(this._weekdaysRegex=$e),this._weekdaysStrictRegex&&e?this._weekdaysStrictRegex:this._weekdaysRegex)},hn.weekdaysShortRegex=function(e){return this._weekdaysParseExact?(m(this,"_weekdaysRegex")||Be.call(this),e?this._weekdaysShortStrictRegex:this._weekdaysShortRegex):(m(this,"_weekdaysShortRegex")||(this._weekdaysShortRegex=qe),this._weekdaysShortStrictRegex&&e?this._weekdaysShortStrictRegex:this._weekdaysShortRegex)},hn.weekdaysMinRegex=function(e){return this._weekdaysParseExact?(m(this,"_weekdaysRegex")||Be.call(this),e?this._weekdaysMinStrictRegex:this._weekdaysMinRegex):(m(this,"_weekdaysMinRegex")||(this._weekdaysMinRegex=Je),this._weekdaysMinStrictRegex&&e?this._weekdaysMinStrictRegex:this._weekdaysMinRegex)},hn.isPM=function(e){return"p"===(e+"").toLowerCase().charAt(0)},hn.meridiem=function(e,t,n){return 11<e?n?"pm":"PM":n?"am":"AM"},ot("en",{dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(e){var t=e%10;return e+(1===k(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")}}),c.lang=n("moment.lang is deprecated. Use moment.locale instead.",ot),c.langData=n("moment.langData is deprecated. Use moment.localeData instead.",lt);var _n=Math.abs;function yn(e,t,n,s){var i=At(t,n);return e._milliseconds+=s*i._milliseconds,e._days+=s*i._days,e._months+=s*i._months,e._bubble()}function gn(e){return e<0?Math.floor(e):Math.ceil(e)}function pn(e){return 4800*e/146097}function vn(e){return 146097*e/4800}function wn(e){return function(){return this.as(e)}}var Mn=wn("ms"),Sn=wn("s"),Dn=wn("m"),kn=wn("h"),Yn=wn("d"),On=wn("w"),Tn=wn("M"),xn=wn("y");function bn(e){return function(){return this.isValid()?this._data[e]:NaN}}var Pn=bn("milliseconds"),Wn=bn("seconds"),Hn=bn("minutes"),Rn=bn("hours"),Cn=bn("days"),Fn=bn("months"),Ln=bn("years");var Un=Math.round,Nn={ss:44,s:45,m:45,h:22,d:26,M:11};var Gn=Math.abs;function Vn(e){return(0<e)-(e<0)||+e}function En(){if(!this.isValid())return this.localeData().invalidDate();var e,t,n=Gn(this._milliseconds)/1e3,s=Gn(this._days),i=Gn(this._months);t=D((e=D(n/60))/60),n%=60,e%=60;var r=D(i/12),a=i%=12,o=s,u=t,l=e,d=n?n.toFixed(3).replace(/\.?0+$/,""):"",h=this.asSeconds();if(!h)return"P0D";var c=h<0?"-":"",f=Vn(this._months)!==Vn(h)?"-":"",m=Vn(this._days)!==Vn(h)?"-":"",_=Vn(this._milliseconds)!==Vn(h)?"-":"";return c+"P"+(r?f+r+"Y":"")+(a?f+a+"M":"")+(o?m+o+"D":"")+(u||l||d?"T":"")+(u?_+u+"H":"")+(l?_+l+"M":"")+(d?_+d+"S":"")}var In=Ht.prototype;return In.isValid=function(){return this._isValid},In.abs=function(){var e=this._data;return this._milliseconds=_n(this._milliseconds),this._days=_n(this._days),this._months=_n(this._months),e.milliseconds=_n(e.milliseconds),e.seconds=_n(e.seconds),e.minutes=_n(e.minutes),e.hours=_n(e.hours),e.months=_n(e.months),e.years=_n(e.years),this},In.add=function(e,t){return yn(this,e,t,1)},In.subtract=function(e,t){return yn(this,e,t,-1)},In.as=function(e){if(!this.isValid())return NaN;var t,n,s=this._milliseconds;if("month"===(e=R(e))||"year"===e)return t=this._days+s/864e5,n=this._months+pn(t),"month"===e?n:n/12;switch(t=this._days+Math.round(vn(this._months)),e){case"week":return t/7+s/6048e5;case"day":return t+s/864e5;case"hour":return 24*t+s/36e5;case"minute":return 1440*t+s/6e4;case"second":return 86400*t+s/1e3;case"millisecond":return Math.floor(864e5*t)+s;default:throw new Error("Unknown unit "+e)}},In.asMilliseconds=Mn,In.asSeconds=Sn,In.asMinutes=Dn,In.asHours=kn,In.asDays=Yn,In.asWeeks=On,In.asMonths=Tn,In.asYears=xn,In.valueOf=function(){return this.isValid()?this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*k(this._months/12):NaN},In._bubble=function(){var e,t,n,s,i,r=this._milliseconds,a=this._days,o=this._months,u=this._data;return 0<=r&&0<=a&&0<=o||r<=0&&a<=0&&o<=0||(r+=864e5*gn(vn(o)+a),o=a=0),u.milliseconds=r%1e3,e=D(r/1e3),u.seconds=e%60,t=D(e/60),u.minutes=t%60,n=D(t/60),u.hours=n%24,o+=i=D(pn(a+=D(n/24))),a-=gn(vn(i)),s=D(o/12),o%=12,u.days=a,u.months=o,u.years=s,this},In.clone=function(){return At(this)},In.get=function(e){return e=R(e),this.isValid()?this[e+"s"]():NaN},In.milliseconds=Pn,In.seconds=Wn,In.minutes=Hn,In.hours=Rn,In.days=Cn,In.weeks=function(){return D(this.days()/7)},In.months=Fn,In.years=Ln,In.humanize=function(e){if(!this.isValid())return this.localeData().invalidDate();var t,n,s,i,r,a,o,u,l,d,h,c=this.localeData(),f=(n=!e,s=c,i=At(t=this).abs(),r=Un(i.as("s")),a=Un(i.as("m")),o=Un(i.as("h")),u=Un(i.as("d")),l=Un(i.as("M")),d=Un(i.as("y")),(h=r<=Nn.ss&&["s",r]||r<Nn.s&&["ss",r]||a<=1&&["m"]||a<Nn.m&&["mm",a]||o<=1&&["h"]||o<Nn.h&&["hh",o]||u<=1&&["d"]||u<Nn.d&&["dd",u]||l<=1&&["M"]||l<Nn.M&&["MM",l]||d<=1&&["y"]||["yy",d])[2]=n,h[3]=0<+t,h[4]=s,function(e,t,n,s,i){return i.relativeTime(t||1,!!n,e,s)}.apply(null,h));return e&&(f=c.pastFuture(+this,f)),c.postformat(f)},In.toISOString=En,In.toString=En,In.toJSON=En,In.locale=Qt,In.localeData=Kt,In.toIsoString=n("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",En),In.lang=Xt,I("X",0,0,"unix"),I("x",0,0,"valueOf"),ue("x",se),ue("X",/[+-]?\d+(\.\d{1,3})?/),ce("X",function(e,t,n){n._d=new Date(1e3*parseFloat(e,10))}),ce("x",function(e,t,n){n._d=new Date(k(e))}),c.version="2.22.0",e=Tt,c.fn=ln,c.min=function(){return Pt("isBefore",[].slice.call(arguments,0))},c.max=function(){return Pt("isAfter",[].slice.call(arguments,0))},c.now=function(){return Date.now?Date.now():+new Date},c.utc=y,c.unix=function(e){return Tt(1e3*e)},c.months=function(e,t){return fn(e,t,"months")},c.isDate=h,c.locale=ot,c.invalid=v,c.duration=At,c.isMoment=S,c.weekdays=function(e,t,n){return mn(e,t,n,"weekdays")},c.parseZone=function(){return Tt.apply(null,arguments).parseZone()},c.localeData=lt,c.isDuration=Rt,c.monthsShort=function(e,t){return fn(e,t,"monthsShort")},c.weekdaysMin=function(e,t,n){return mn(e,t,n,"weekdaysMin")},c.defineLocale=ut,c.updateLocale=function(e,t){if(null!=t){var n,s,i=nt;null!=(s=at(e))&&(i=s._config),(n=new P(t=b(i,t))).parentLocale=st[e],st[e]=n,ot(e)}else null!=st[e]&&(null!=st[e].parentLocale?st[e]=st[e].parentLocale:null!=st[e]&&delete st[e]);return st[e]},c.locales=function(){return s(st)},c.weekdaysShort=function(e,t,n){return mn(e,t,n,"weekdaysShort")},c.normalizeUnits=R,c.relativeTimeRounding=function(e){return void 0===e?Un:"function"==typeof e&&(Un=e,!0)},c.relativeTimeThreshold=function(e,t){return void 0!==Nn[e]&&(void 0===t?Nn[e]:(Nn[e]=t,"s"===e&&(Nn.ss=t-1),!0))},c.calendarFormat=function(e,t){var n=e.diff(t,"days",!0);return n<-6?"sameElse":n<-1?"lastWeek":n<0?"lastDay":n<1?"sameDay":n<2?"nextDay":n<7?"nextWeek":"sameElse"},c.prototype=ln,c.HTML5_FMT={DATETIME_LOCAL:"YYYY-MM-DDTHH:mm",DATETIME_LOCAL_SECONDS:"YYYY-MM-DDTHH:mm:ss",DATETIME_LOCAL_MS:"YYYY-MM-DDTHH:mm:ss.SSS",DATE:"YYYY-MM-DD",TIME:"HH:mm",TIME_SECONDS:"HH:mm:ss",TIME_MS:"HH:mm:ss.SSS",WEEK:"YYYY-[W]WW",MONTH:"YYYY-MM"},c});
diff --git a/static/js/moment.min.js.gz b/static/js/moment.min.js.gz
deleted file mode 100644
Binary files a/static/js/moment.min.js.gz and /dev/null differ
diff --git a/templates/default-layout-wrapper.hamlet b/templates/default-layout-wrapper.hamlet
--- a/templates/default-layout-wrapper.hamlet
+++ b/templates/default-layout-wrapper.hamlet
@@ -1,37 +1,38 @@
-$newline never
-\<!doctype html>
-\<!--[if lt IE 7]> <html class="no-js ie6 oldie" lang="en"> <![endif]-->
-\<!--[if IE 7]>    <html class="no-js ie7 oldie" lang="en"> <![endif]-->
-\<!--[if IE 8]>    <html class="no-js ie8 oldie" lang="en"> <![endif]-->
-\<!--[if gt IE 8]><!-->
-<html class="no-js" lang="en"> <!--<![endif]-->
-  <head>
-    <meta charset="UTF-8">
-
-    <title>#{pageTitle pc}
-    <meta name="description" content="">
-    <meta name="author" content="">
-
-    <meta name="viewport" content="width=device-width,initial-scale=1">
-
-    ^{pageHead pc}
-
-    \<!--[if lt IE 9]>
-    \<script src="@{StaticR js_html5shiv_min_js}"></script>
-    \<![endif]-->
-
-    <script>document.documentElement.className = document.documentElement.className.replace(/\bno-js\b/, 'js');
-    <script src="@{StaticR js_js_cookie_2_2_0_min_js}">
-    <script>
-      var app =
-        { csrfHeaderName: "#{ TE.decodeUtf8 $ CI.foldedCase defaultCsrfHeaderName }"
-        , csrfParamName: "#{ defaultCsrfParamName }"
-        , csrfCookieName: "#{ TE.decodeUtf8 defaultCsrfCookieName }"
-        , csrfToken: Cookies.get("#{ TE.decodeUtf8 defaultCsrfCookieName }")
-        , homeR: "@{ HomeR }"
-        , authRlogoutR: "@{ AuthR LogoutR }"
-        , userFilterRFilterSingle: ""
-        , dat: {bmarks : [], bmark: {}, isowner: false, notes: []}
-        };
-  <body .f6.dark-gray.helvetica>
-    ^{pageBody pc}
+$newline never
+\<!doctype html>
+\<!--[if lt IE 7]> <html class="no-js ie6 oldie" lang="en"> <![endif]-->
+\<!--[if IE 7]>    <html class="no-js ie7 oldie" lang="en"> <![endif]-->
+\<!--[if IE 8]>    <html class="no-js ie8 oldie" lang="en"> <![endif]-->
+\<!--[if gt IE 8]><!-->
+<html class="no-js" lang="en"> <!--<![endif]-->
+  <head>
+    <meta charset="UTF-8">
+
+    <title>#{pageTitle pc}
+    <meta name="description" content="Espial is an open-source, web-based bookmarking server.">
+    <meta name="robots" content="noindex, nofollow, noodp, noydir">
+    <meta name="viewport" content="width=device-width,initial-scale=1">
+    $maybe sourceCodeUri <- msourceCodeUri
+      <meta name="source" content="#{ sourceCodeUri }">
+
+    ^{pageHead pc}
+
+    \<!--[if lt IE 9]>
+    \<script src="@{StaticR js_html5shiv_min_js}"></script>
+    \<![endif]-->
+
+    <script>document.documentElement.className = document.documentElement.className.replace(/\bno-js\b/, 'js');
+    <script src="@{StaticR js_js_cookie_2_2_0_min_js}">
+    <script>
+      var app =
+        { csrfHeaderName: "#{ TE.decodeUtf8 $ CI.foldedCase defaultCsrfHeaderName }"
+        , csrfParamName: "#{ defaultCsrfParamName }"
+        , csrfCookieName: "#{ TE.decodeUtf8 defaultCsrfCookieName }"
+        , csrfToken: Cookies.get("#{ TE.decodeUtf8 defaultCsrfCookieName }")
+        , homeR: "@{ HomeR }"
+        , authRlogoutR: "@{ AuthR LogoutR }"
+        , userFilterRFilterSingle: ""
+        , dat: {bmarks : [], bmark: {}, isowner: false, notes: []}
+        };
+  <body .f6.dark-gray.helvetica>
+    ^{pageBody pc}
diff --git a/templates/default-layout.hamlet b/templates/default-layout.hamlet
--- a/templates/default-layout.hamlet
+++ b/templates/default-layout.hamlet
@@ -14,12 +14,11 @@
       <div .top_menu.fr>
 
         $maybe userName <- musername
-          $maybe currentroute <- mcurrentRoute
-            <a .link href="@?{(AddViewR, [("next",urlrender currentroute)])}">add url&nbsp;&nbsp;
-            <a .link href="@{AddNoteViewR (UserNameP userName)}">add note&nbsp;&nbsp;
-            <a .link href="@{NotesR (UserNameP userName)}">notes&nbsp;&nbsp;
-            <a .link href="@{AccountSettingsR}">settings&nbsp;&nbsp;
-            <a .link onclick="PS['Main'].logoutE(event)()" href="@{AuthR LogoutR}">
+          <a .link href="@?{(AddViewR, [("next","back")])}">add url&nbsp;&nbsp;
+          <a .link href="@{AddNoteViewR (UserNameP userName)}">add note&nbsp;&nbsp;
+          <a .link href="@{NotesR (UserNameP userName)}">notes&nbsp;&nbsp;
+          <a .link href="@{AccountSettingsR}">settings&nbsp;&nbsp;
+          <a .link onclick="PS['Main'].logoutE(event)()" href="@{AuthR LogoutR}">
               log out
         $nothing
           <a .link href="@{AuthR LoginR}">
@@ -32,3 +31,10 @@
         #{preEscapedToMarkup msg}
 
   ^{widget}
+
+  <footer .view-delay>
+    <div .w-100.mw8.center>
+      <div .footer-links.fr.pv2.ph3.mh1.b>
+        $maybe sourceCodeUri <- msourceCodeUri
+          <a .link title="Source Code" href="#{ sourceCodeUri }" target=_blank>&lt;/&gt;
+    
diff --git a/templates/notes.hamlet b/templates/notes.hamlet
--- a/templates/notes.hamlet
+++ b/templates/notes.hamlet
@@ -2,6 +2,10 @@
   <div .w-100.mw8.center>
     <div .fr.nt1 style="margin-bottom:.7rem">
       ^{search}
+    <div .di>
+      <div .fr.f6.pr3.dib.mb2>
+          <a .link.gold.hover-orange
+             href="@{NotesFeedR unamep}">RSS
 
     <span .db .mb3>#{T.append "" (maybe "You have" (const "Found") mquery)} #{bcount} notes:
 
diff --git a/templates/user.hamlet b/templates/user.hamlet
--- a/templates/user.hamlet
+++ b/templates/user.hamlet
@@ -1,56 +1,61 @@
-$maybe route <- mroute
-  <main #main_column .pv2.ph3.mh1>
-    <div .w-100.mw8.center>
-      <div .fr.nt1 style="margin-bottom:.7rem">
-        ^{search}
-      <div .di>
-        <div .fl.pr3.dib.mb2>
-          <b>
-            <a .link href="@{UserR unamep}">#{uname}
-            $forall tag <- pathtags
-              \  + #
-              <a .link href="@{UserTagsR unamep (TagsP [tag])}">#{tag}
-        <div .fl.pr3.dib.mb2>
-          <span .f7.silver>#{bcount}</span>
-        $if isowner
-          <div .fl.pr3.dib.mb2>
-            <a .link.silver.hover-blue :isAll:.nav-active 
-               href="@{UserR unamep}">all
-            ‧  
-            <a .link.silver.hover-blue :sharedp == SharedPrivate:.nav-active 
-               href="@{UserSharedR unamep SharedPrivate}">private
-            ‧  
-            <a .link.silver.hover-blue :sharedp == SharedPublic:.nav-active 
-               href="@{UserSharedR unamep SharedPublic}">public
-            ‧  
-            <a .link.silver.hover-blue :filterp == FilterUnread:.nav-active 
-               href="@{UserFilterR unamep FilterUnread}">unread
-            ‧  
-            <a .link.silver.hover-blue :filterp == FilterUntagged:.nav-active 
-               href="@{UserFilterR unamep FilterUntagged}">untagged
-            ‧  
-            <a .link.silver.hover-blue :filterp == FilterStarred:.nav-active 
-               href="@{UserFilterR unamep FilterStarred}">starred
-  
-      <div .cf>
-      
-      ^{pager}
-  
-      <div .cf>
-  
-      <div ##{renderEl} .mt3>
-  
-      <div .cf>
-  
-      <div .user_footer hidden>
-        ^{pager}
-  
-        $if (fromIntegral bcount >= limit) || (page > 1)
-          <div .dib.ml5>
-            <span .silver.mr1>per page:
-            <a .link.light-silver :limit == 20:.nav-active href="@?{(route, catMaybes [Just ("count", "20"), mqueryp])}"‧>20</a> ‧ 
-            <a .link.light-silver :limit == 40:.nav-active href="@?{(route, catMaybes [Just ("count", "40"), mqueryp])}"‧>40</a> ‧ 
-            <a .link.light-silver :limit == 80:.nav-active href="@?{(route, catMaybes [Just ("count", "80"), mqueryp])}"‧>80</a> ‧ 
-            <a .link.light-silver :limit == 120:.nav-active href="@?{(route, catMaybes [Just ("count", "120"), mqueryp])}"‧>120</a> ‧ 
-            <a .link.light-silver :limit == 160:.nav-active href="@?{(route, catMaybes [Just ("count", "160"), mqueryp])}"‧>160</a>
-  
+$maybe route <- mroute
+  <main #main_column .pv2.ph3.mh1>
+    <div .w-100.mw8.center>
+      <div .fr.nt1 style="margin-bottom:.7rem">
+        ^{search}
+      <div .di>
+        <div .fl.pr3.dib.mb2>
+          <b>
+            <a .link href="@{UserR unamep}">#{uname}
+            $forall tag <- pathtags
+              \  + #
+              <a .link href="@{UserTagsR unamep (TagsP [tag])}">#{tag}
+        <div .fl.pr3.dib.mb2>
+          <span .f7.silver>#{bcount}</span>
+        $if isowner
+          <div .fl.pr3.dib.mb2>
+            <a .link.silver.hover-blue :isAll:.nav-active 
+               href="@{UserR unamep}">all
+            ‧  
+            <a .link.silver.hover-blue :sharedp == SharedPrivate:.nav-active 
+               href="@{UserSharedR unamep SharedPrivate}">private
+            ‧  
+            <a .link.silver.hover-blue :sharedp == SharedPublic:.nav-active 
+               href="@{UserSharedR unamep SharedPublic}">public
+            ‧  
+            <a .link.silver.hover-blue :filterp == FilterUnread:.nav-active 
+               href="@{UserFilterR unamep FilterUnread}">unread
+            ‧  
+            <a .link.silver.hover-blue :filterp == FilterUntagged:.nav-active 
+               href="@{UserFilterR unamep FilterUntagged}">untagged
+            ‧  
+            <a .link.silver.hover-blue :filterp == FilterStarred:.nav-active 
+               href="@{UserFilterR unamep FilterStarred}">starred
+        <div .fr.f6.pr3.dib.mb2>
+            <a .link.gold.hover-orange
+               href="@{UserFeedR unamep}">RSS
+  
+      <div .cf>
+      
+      ^{pager}
+  
+      <div .cf>
+  
+      <div ##{tagCloudRenderEl}>
+
+      <div ##{renderEl} .mt3>
+  
+      <div .cf>
+  
+      <div .user_footer.view-delay>
+        ^{pager}
+  
+        $if (fromIntegral bcount >= limit) || (page > 1)
+          <div .dib.ml5>
+            <span .silver.mr1>per page:
+            <a .link.light-silver :limit == 20:.nav-active href="@?{(route, catMaybes [Just ("count", "20"), mqueryp])}"‧>20</a> ‧ 
+            <a .link.light-silver :limit == 40:.nav-active href="@?{(route, catMaybes [Just ("count", "40"), mqueryp])}"‧>40</a> ‧ 
+            <a .link.light-silver :limit == 80:.nav-active href="@?{(route, catMaybes [Just ("count", "80"), mqueryp])}"‧>80</a> ‧ 
+            <a .link.light-silver :limit == 120:.nav-active href="@?{(route, catMaybes [Just ("count", "120"), mqueryp])}"‧>120</a> ‧ 
+            <a .link.light-silver :limit == 160:.nav-active href="@?{(route, catMaybes [Just ("count", "160"), mqueryp])}"‧>160</a>
+  
diff --git a/test/TestImport.hs b/test/TestImport.hs
--- a/test/TestImport.hs
+++ b/test/TestImport.hs
@@ -10,7 +10,7 @@
 import Application           (makeFoundation, makeLogWare)
 import ClassyPrelude         as X hiding (delete, deleteBy, Handler)
 import Database.Persist      as X hiding (get)
-import Database.Persist.Sql  (SqlPersistM, runSqlPersistMPool, rawExecute, rawSql, unSingle, connEscapeName)
+import Database.Persist.Sql  (SqlPersistM, runSqlPersistMPool, rawExecute, rawSql, unSingle)
 import Foundation            as X
 import Model                 as X
 import Test.Hspec            as X
@@ -62,8 +62,9 @@
 
     flip runSqlPersistMPool pool $ do
         tables <- getTables
-        sqlBackend <- ask
-        let queries = map (\t -> "DELETE FROM " ++ (connEscapeName sqlBackend $ DBName t)) tables
+        -- sqlBackend <- ask
+        -- let queries = map (\t -> "DELETE FROM " ++ (connEscapeName sqlBackend $ DBName t)) tables
+        let queries = map (\t -> "DELETE FROM " ++ t) tables
         forM_ queries (\q -> rawExecute q [])
 
 getTables :: DB [Text]
