diff --git a/configs/default.nix b/configs/default.nix index 6de31c8..51f7088 100644 --- a/configs/default.nix +++ b/configs/default.nix @@ -224,7 +224,8 @@ in { ./nix.nix ./newsboat.nix ./flameshot-once.nix - ./packages + ./packages.nix + ./stardict.nix ./power-action.nix ./printing.nix ./openweathermap.nix diff --git a/configs/packages/default.nix b/configs/packages.nix similarity index 72% rename from configs/packages/default.nix rename to configs/packages.nix index 1679f73..67fb784 100644 --- a/configs/packages/default.nix +++ b/configs/packages.nix @@ -3,9 +3,33 @@ let hc = pkgs.callPackage {}; worldradio = pkgs.callPackage {}; menstruation = pkgs.callPackage {}; + pandoc-doc = pkgs.callPackage {}; nixpkgs-unstable = import { config.allowUnfree = true; }; + zoteroStyle = { name, sha256 }: { + name = "${name}.csl"; + path = pkgs.fetchurl { + url = "https://www.zotero.org/styles/${name}"; + inherit sha256; + }; + }; + cslDirectory = pkgs.linkFarm "citation-styles" [ + (zoteroStyle { + name = "chicago-author-date-de"; + sha256 = "0fz0xn46rkciblr34a7x2v60j0lbq9l3fmzi43iphph27m0czn6s"; + }) + (zoteroStyle { + name = "din-1505-2"; + sha256 = "1pvy1b7qm13mnph7z365rrz1j082bl2y8ih73rhzd0zd6dz1jyjq"; + }) + (zoteroStyle { + name = "apa"; + sha256 = "1878vxp0y0h05yzaghnd51n981623mxskw3lsdyzmffqhihvv111"; + }) + ]; + + astrolog = nixpkgs-unstable.astrolog.overrideAttrs (old: old // { installPhase = '' ${old.installPhase} @@ -33,34 +57,10 @@ let }) {}; in { - imports = [ - ./writing.nix - ./python.nix - ./haskell - { - environment.systemPackages = let - # nightly = pkgs.rustChannelOf { - # date = "2019-12-27"; - # channel = "nightly"; - # }; - in with pkgs; [ - htmlTidy - nodePackages.csslint - nodePackages.jsonlint - nodePackages.prettier - nodePackages.typescript - nodePackages.yarn - nodejs - nodePackages.javascript-typescript-langserver - - tokei # count lines of code - gnumake - binutils # for strip, ld, ... - # nightly.rust - shellcheck - ]; - } - ]; + home-manager.users.me.home.file = { + ".csl".source = cslDirectory; + ".local/share/pandoc/csl".source = cslDirectory; # as of pandoc 2.11, it includes citeproc + }; environment.systemPackages = with pkgs; [ # INTERNET @@ -70,9 +70,7 @@ in { w3m wget whois - ix dnsutils - # mtr # my traceroute # FILE MANAGERS ranger pcmanfm @@ -80,7 +78,6 @@ in { ffmpeg imagemagick exiftool - scrot # ARCHIVE TOOLS unzip unrar @@ -106,14 +103,12 @@ in { xmlstarlet # xml toolkit manpages posix_man_pages - # moreutils # for parallel, sponge, combine tree fuse_exfat # to mount windows drives parallel # for parallel, since moreutils shadows task spooler ripgrep # better grep rlwrap progress # display progress bars for pipes - up # universal plumber (piping tool) # HARDWARE TOOLS usbutils # for lsusb pciutils # for lspci @@ -126,7 +121,7 @@ in { audacity calibre inkscape - astrolog # astrolog + astrolog anki # flashcards nixpkgs-unstable.zoom-us # video conferencing pdfgrep # search in pdf @@ -158,11 +153,8 @@ in { recht scripts.vimv scripts.swallow # window swallowing - scripts.genius - scripts.instaget scripts.literature-quote scripts.nav # json navigation - scripts.n scripts.notetags scripts.booksplit scripts.dmenurandr @@ -192,7 +184,6 @@ in { nixfmt par qrencode - wtf menstruation @@ -222,6 +213,53 @@ in { irc-announce git-preview ircaids + + (python3.withPackages (py: [ + py.black + # py.python-language-server + # py.pyls-mypy + # py.pyls-black + # py.pyls-isort + py.flake8 + py.pygments + py.schema + ])) + python3Packages.poetry + + htmlTidy + nodePackages.csslint + nodePackages.jsonlint + nodePackages.prettier + nodePackages.typescript + nodePackages.yarn + nodejs + nodePackages.javascript-typescript-langserver + texlive.combined.scheme-full + latexrun + (aspellWithDicts (dict: [ dict.de dict.en dict.en-computers ])) + # haskellPackages.pandoc-citeproc + scripts.text2pdf + lowdown + glow # markdown to term + libreoffice + # gnumeric + dia + pandoc + pandoc-doc + # proselint + asciidoctor + wordnet + tokei # count lines of code + gnumake + binutils # for strip, ld, ... + # nightly.rust + shellcheck ]; + + home-manager.users.me.xdg.configFile."pycodestyle".text = '' + [pycodestyle] + max-line-length = 110 + ''; + } diff --git a/configs/packages/haskell/default.nix b/configs/packages/haskell/default.nix deleted file mode 100644 index 972c987..0000000 --- a/configs/packages/haskell/default.nix +++ /dev/null @@ -1,46 +0,0 @@ -{ config, pkgs, ... }: { - home-manager.users.me.home.file = { - ".ghc/ghci.conf".text = '' - :set editor vim - :def hoogle \s -> return $ ":!${pkgs.haskellPackages.hoogle}/bin/hoogle search --color -l --count=15 \"" ++ s ++ "\"" - :def doc \s -> return $ ":!${pkgs.haskellPackages.hoogle}/bin/hoogle search --color -l --info \"" ++ s ++ "\"" - :set prompt "\o033[1m%s\o033[1;34m λ\o033[0m " - :set -Wall - :set -XOverloadedStrings - ''; - # :def unpl \x -> return $ ":!${pkgs.haskellPackages.pointful}/bin/pointful \"" ++ x ++ "\"" - # :def pl \x -> return $ ":!${pkgs.haskellPackages.pointfree}/bin/pointfree -v \"" ++ x ++ "\"" - ".stack/config.yaml".source = - let inherit (import ) kieran; - in (pkgs.formats.yaml {}).generate "config.yaml" { - templates.params = { - author-name = kieran.name; - author-email = kieran.email; - copyright = "Copyright: (c) 2020 ${kieran.name}"; - github-username = kieran.github; - }; - }; - }; - - services.hoogle = { - enable = false; - packages = import ./packages.nix; - port = 8091; - }; - - environment.systemPackages = with pkgs; - [ - cabal2nix - cabal-install - hlint - haskellPackages.ormolu - (haskellPackages.ghcWithHoogle (import ./packages.nix)) - ] ++ map haskell.lib.justStaticExecutables [ - haskellPackages.ghcid - haskellPackages.hasktags - # haskellPackages.hindent - # haskellPackages.pointfree - # haskellPackages.pointful - haskellPackages.hpack - ]; -} diff --git a/configs/packages/haskell/packages.nix b/configs/packages/haskell/packages.nix deleted file mode 100644 index a682865..0000000 --- a/configs/packages/haskell/packages.nix +++ /dev/null @@ -1,100 +0,0 @@ -haskellPackages: -with haskellPackages; [ - HTTP - HUnit - MissingH - QuickCheck - ad - adjunctions - aeson - # algebra - ansi-terminal - async - attoparsec - base-orphans - bifunctors - binary - blaze-html - blaze-markup - brick - bytes - bytestring - case-insensitive - cassava - cereal - clock - comonad - comonad-transformers - conduit - conduit-extra - constraints - containers - contravariant - criterion - data-default - diagrams - directory - dlist - either - edit-distance - exceptions - extra - filepath - foundation - free - haskeline - hedgehog - hourglass - hspec - http-client - http-conduit - kan-extensions - lens - linear - lucid - megaparsec - microlens - monad-logger - monad-memo - mono-traversable - mtl - network - parallel - parsec - persistent - pipes - pointed - pretty - pretty-show - prettyprinter - primitive - process - profunctors - regex-tdfa - safe - scalpel - semigroupoids - semigroups - servant - servant-blaze - servant-client - servant-docs - servant-server - servant-swagger - split - stm - tagsoup - tasty - text - time - transformers - turtle - unix-time - unordered-containers - vector - void - vty - warp - wreq - yaml -] diff --git a/configs/packages/python.nix b/configs/packages/python.nix deleted file mode 100644 index 21b091e..0000000 --- a/configs/packages/python.nix +++ /dev/null @@ -1,20 +0,0 @@ -{ pkgs, ... }: { - environment.systemPackages = [ - (pkgs.python3.withPackages (py: [ - py.black - # py.python-language-server - # py.pyls-mypy - # py.pyls-black - # py.pyls-isort - py.flake8 - py.pygments - py.schema - ])) - pkgs.python3Packages.poetry - ]; - - home-manager.users.me.xdg.configFile."pycodestyle".text = '' - [pycodestyle] - max-line-length = 110 - ''; -} diff --git a/configs/packages/writing.nix b/configs/packages/writing.nix deleted file mode 100644 index 251c9db..0000000 --- a/configs/packages/writing.nix +++ /dev/null @@ -1,81 +0,0 @@ -{ pkgs, lib, config, ... }: -let - pandoc-doc = pkgs.callPackage {}; - - zoteroStyle = { name, sha256 }: { - name = "${name}.csl"; - path = pkgs.fetchurl { - url = "https://www.zotero.org/styles/${name}"; - inherit sha256; - }; - }; - - cslDirectory = pkgs.linkFarm "citation-styles" [ - (zoteroStyle { - name = "chicago-author-date-de"; - sha256 = "0fz0xn46rkciblr34a7x2v60j0lbq9l3fmzi43iphph27m0czn6s"; - }) - (zoteroStyle { - name = "din-1505-2"; - sha256 = "1pvy1b7qm13mnph7z365rrz1j082bl2y8ih73rhzd0zd6dz1jyjq"; - }) - (zoteroStyle { - name = "apa"; - sha256 = "1878vxp0y0h05yzaghnd51n981623mxskw3lsdyzmffqhihvv111"; - }) - ]; - - makeStardictDataDir = dicts: - pkgs.linkFarm "dictionaries" (map ({ name, path }: { - name = "dic/${name}"; - inherit path; - }) dicts); -in { - environment.variables.STARDICT_DATA_DIR = toString (makeStardictDataDir [ - { - name = "gr-de"; - path = pkgs.fetchurl { - url = "http://tovotu.de/data/stardict/pape_gr-de.zip"; - sha256 = "1d705y47b40vp0mg79vbwasw4y0i8fmnlwvf4x4ri0dkfqng9sky"; - }; - } - { - name = "la-de"; - path = pkgs.fetchurl { - url = "http://tovotu.de/data/stardict/georges_lat-de.zip"; - sha256 = "12n26nzwg28wn4zwv45mv0wkgy1jh1d8p0k6haamz9601cqq7hkj"; - }; - } - { - name = "de-la"; - path = pkgs.fetchurl { - url = "http://tovotu.de/data/stardict/georges_de-lat.zip"; - sha256 = "0inm6xn1lcnb851cj329n0v2vbfc1z1bxwhgsd8fnm0zxy3f3ifq"; - }; - } - ]); - - home-manager.users.me.home.file = { - ".csl".source = cslDirectory; - ".local/share/pandoc/csl".source = cslDirectory; # as of pandoc 2.11, it includes citeproc - }; - - environment.systemPackages = with pkgs; [ - texlive.combined.scheme-full - latexrun - (aspellWithDicts (dict: [ dict.de dict.en dict.en-computers ])) - # haskellPackages.pandoc-citeproc - scripts.text2pdf - lowdown - glow # markdown to term - libreoffice - # gnumeric - dia - pandoc - pandoc-doc - # proselint - asciidoctor - wordnet - # sdcv # stardict cli - ]; -} diff --git a/configs/stardict.nix b/configs/stardict.nix new file mode 100644 index 0000000..6ba5b52 --- /dev/null +++ b/configs/stardict.nix @@ -0,0 +1,161 @@ +{ pkgs, lib, ... }: +let + classicsDictionaries = { + Pape = "${pkgs.fetchzip { + url = "http://chaerephon.e-monsite.com/medias/files/pape.zip"; + sha256 = "0cm1z35bc47lx3709f4042kvd2zqkcqmn8q9fcw9dflikl6kgbij"; + stripRoot = false; + }}/Pape"; + Woodhouse = pkgs.fetchzip { + url = "https://c.krebsco.de/Woodhouse.zip"; + sha256 = "1dvnc2679yb048q2f3hr2h34acvhan0n3iir6h9ajlrdzz48mlkq"; + stripRoot = false; + }; + LSJ = pkgs.fetchzip { + url = "https://github.com/nikita-moor/latin-dictionary/releases/download/2020-02-14/LiddellScott1940-stardict.zip"; + sha256 = "13rprgd9jvnhxk9735c91xr6ywr0j5jiwkjnpm3qpvy93isyjbys"; + }; + GreekMorphology = pkgs.fetchzip { + url = "https://github.com/latin-dict/Morphologia-Graeca/releases/download/v0.5/morphology-mobile-goldendict.oxia.zip"; + sha256 = "0m75cppjjjmvv18cs7yh9f4p7ckqzxfznnndgkiw3yrfd50k8p96"; + }; + Frisk = pkgs.fetchzip { + url = "https://github.com/latin-dict/Frisk1960/releases/download/v1.1/Frisk1960-stardict.zip"; + sha256 = "1rk5a3n3fpfdcmg4bc5945m88s6ldxql8cjn4jqs33rgklh7n046"; + }; + Georges-Lat-De = builtins.fetchTarball { + url = "http://download.huzheng.org/de/stardict-georges_lat-de-2.4.2.tar.bz2"; + sha256 = "0n9jkr17q8amldw7ndy3ji6nnadjfmxl4v8clqqicbdfd1w44yj2"; + }; + Georges-De-Lat = builtins.fetchTarball { + url = "http://download.huzheng.org/de/stardict-georges_de-lat-2.4.2.tar.bz2"; + sha256 = "023n55fcbx0jm92198am600h9pv4n3iymkz2ixqn2ka4fj6dhw9g"; + }; + SmithBiographyMythology = pkgs.fetchzip { + url = "https://github.com/latin-dict/Smith1873/releases/download/v1.0/Smith1873-stardict.zip"; + sha256 = "01h5fxacp2m60xir8kzslkfy772vs3vmz07zhdwfhcwdaxif2af2"; + }; + SmithAntiquities = pkgs.fetchzip { + url = "https://github.com/latin-dict/Smith1890/releases/download/v1.0/Smith1890-stardict.zip"; + sha256 = "0vpsv62p2lrzmgys4d1swpnc6lqhdi7rxwkj2ngy3lz5dk3fysyb"; + }; + LewisShort = pkgs.fetchzip { + url = "https://github.com/latin-dict/LewisShort1879/releases/download/v1.3/LewisShort1879-stardict.zip"; + sha256 = "1y3ans47iv8bzzb1paimdqvcid8ms04ikjbqy3iw077i2js3qbjk"; + }; + DoederleinSynonymes = pkgs.fetchzip { + url = "https://github.com/latin-dict/Doederlein1874/releases/download/v1.1/Doederlein1875-stardict.zip"; + sha256 = "0mhik7gjxl8ncr9g5z2l4pfk60k1c5n0gc1w0cnp2x1v6lqvb57h"; + }; + }; + + englishGermanDictionaries = { + Etymonline = pkgs.fetchzip { + url = "http://tovotu.de/data/stardict/etymonline.zip"; + sha256 = "1bjja3n3layfd08xa1r0a6375dxh5zi6hlv7chkhgnx800cx7hxn"; + }; + Roget = builtins.fetchTarball { + url = "http://download.huzheng.org/bigdict/stardict-Roget_s_II_The_New_Thesaurus_3th_Ed-2.4.2.tar.bz2"; + sha256 = "1szyny9497bpyyccf9l5kr3bnw0wvl4cnsd0n1zscxpyzlsrqqbz"; + }; + OED1 = builtins.fetchTarball { + url = "http://download.huzheng.org/bigdict/stardict-Oxford_English_Dictionary_2nd_Ed._P1-2.4.2.tar.bz2"; + sha256 = "0i5vv1rv44yfwyf9bfbdrb9brzhhpvz2jnh39fv8hh107nkv2vcf"; + }; + OED2 = builtins.fetchTarball { + url = "http://download.huzheng.org/bigdict/stardict-Oxford_English_Dictionary_2nd_Ed._P2-2.4.2.tar.bz2"; + sha256 = "1pk234pbq4pk55d8sjk0pp9j5sajm82f8804kf2xm2x5p387q1rg"; + }; + JargonFile = builtins.fetchTarball { + url = "http://download.huzheng.org/dict.org/stardict-dictd-jargon-2.4.2.tar.bz2"; + sha256 = "096phar9qpmm0fnaqv5nz8x9lpxwnfj78g4vjfcfyd7kqp7iqla4"; + }; + Oxford-Collocations = builtins.fetchTarball { + url = "http://download.huzheng.org/bigdict/stardict-Oxford_Collocations_Dictionary_2nd_Ed-2.4.2.tar.bz2"; + sha256 = "1zkfs0zxkcn21z2lhcabrs77v4ma9hpv7qm119hpyi1d8ajcw07q"; + }; + Langenscheidt-Deu-En = builtins.fetchTarball { + url = "http://download.huzheng.org/babylon/german/stardict-Handw_rterbuch_Deutsch_Englisc-2.4.2.tar.bz2"; + sha256 = "12q9i5azq7ylyrpb6jqbaf1rxalc3kzcwjvbinvb0yabdxb80y30"; + }; + Langenscheidt-En-Deu = builtins.fetchTarball { + url = "http://download.huzheng.org/babylon/german/stardict-Handw_rterbuch_Englisch_Deutsc-2.4.2.tar.bz2"; + sha256 = "087b05h155j5ldshfgx91pz81h6ijq2zaqjirg7ma8ig3l96zb59"; + }; + Duden_Das_Fremdworterbuch = builtins.fetchTarball { + url = "http://download.huzheng.org/babylon/german/stardict-Duden_Das_Fremdworterbuch-2.4.2.tar.bz2"; + sha256 = "1zrcay54ccl031s6dvjwsah5slhanmjab87d81rxlcy8fx0xd8wq"; + }; + Duden_De_De = builtins.fetchTarball { + url = "http://download.huzheng.org/babylon/german/stardict-Duden_De_De-2.4.2.tar.bz2"; + sha256 = "1fhay04w5aaj83axfmla2ql34nb60gb05dgv0k94ig7p8x4yxxlf"; + }; + # Duden_Rechtschreibung = builtins.fetchTarball { + # url = "http://download.huzheng.org/babylon/german/stardict-Duden_Rechtschreibung-2.4.2.tar.bz2"; + # sha256 = "0xiprb45s88w62rn8rlbjrsagbiliay9hszsiy20glwabf6zsfji"; + # }; + Duden_Synonym = builtins.fetchTarball { + url = "http://download.huzheng.org/babylon/german/stardict-Duden_Synonym-2.4.2.tar.bz2"; + sha256 = "0cx086zvb86bmz7i8vnsch4cj4fb0cp165g4hig4982zakj6f2jd"; + }; + # Duden = builtins.fetchTarball { + # url = "http://download.huzheng.org/de/stardict-duden-2.4.2.tar.bz2"; + # sha256 = "049i4ynfqqxykv1nlkyks94mvn14s22qdax5gg7hx1ks5y4xw64j"; + # }; + # ConciseOED = builtins.fetchTarball { + # url = "http://download.huzheng.org/bigdict/stardict-Concise_Oxford_English_Dictionary-2.4.2.tar.bz2"; + # sha256 = "19kpcxbhqzpmhi94mp48nalgmsh6s7rsx1gb4kwkhirp2pbjcyl7"; + # }; + # FreeOnlineDictionaryOfComputing = builtins.fetchTarball { + # url = "http://download.huzheng.org/dict.org/stardict-dictd_www.dict.org_foldoc-2.4.2.tar.bz2"; + # sha256 = "1lw2i8dzxpx929cpgvv0x366dnh4drr10wzqmrhcd0kvwglqawgm"; + # }; + }; + + sanskritDictionaries = { + BoehtlingkRoth = pkgs.fetchzip { + url = "https://c.krebsco.de/Bohtlingk-and-Roth-Grosses-Petersburger-Worterbuch.zip"; + sha256 = "13414a8rgd7hd5ffar6nl68nk3ys60wjkgb7m11hp0ahaasmf6ly"; + stripRoot = false; + }; + MonierWilliams = pkgs.fetchzip { + url = "https://c.krebsco.de/mw-cologne.zip"; + sha256 = "0p99ybxwxmmd94hf035hvm2hhnfy84av7qq79xf28bh2rbx6s9ng"; + stripRoot = false; + }; + MonierWilliamsEnglish = pkgs.fetchzip { + url = "https://c.krebsco.de/mw-english-sanskrit.zip"; + sha256 = "09a61hhii4b1m2fkrlh4rm2xnlgwrllh84iypbc6wyj00w9jkl3x"; + stripRoot = false; + }; + }; + makeStardictDataDir = dicts: pkgs.linkFarm "dictionaries" (lib.mapAttrsToList (name: path: { inherit name path; }) dicts); +in +{ + # https://github.com/latin-dict/Georges1910/releases/download/v1.0/Georges1910-stardict.zip + # https://github.com/nikita-moor/latin-dictionary/releases/download/2020-02-14/LiddellScott1940-stardict.zip + # http://download.huzheng.org/bigdict/stardict-Cambridge_Dictionary_of_American_Idioms-2.4.2.tar.bz2 + # http://download.huzheng.org/bigdict/stardict-Concise_Oxford_Thesaurus_2nd_Ed-2.4.2.tar.bz2 + # http://download.huzheng.org/bigdict/stardict-Urban_Dictionary_P1-2.4.2.tar.bz2 + # http://download.huzheng.org/bigdict/stardict-Urban_Dictionary_P2-2.4.2.tar.bz2 + environment.etc.stardict.source = toString (makeStardictDataDir (classicsDictionaries // sanskritDictionaries // englishGermanDictionaries)); + + environment.variables = { + SDCV_PAGER = "${pkgs.w3m}/bin/w3m -T text/html -dump"; + }; + + + home-manager.users.me = { + home.file.".goldendict/config".text = import { + path = "/etc/stardict"; + inherit pkgs; + }; + }; + + environment.systemPackages = [ + pkgs.goldendict + (pkgs.writers.writeDashBin "sd-classics" ''${pkgs.sdcv}/bin/sdcv --data-dir ${makeStardictDataDir classicsDictionaries} "$@"'') + (pkgs.writers.writeDashBin "sd-sanskrit" ''${pkgs.sdcv}/bin/sdcv --data-dir ${makeStardictDataDir sanskritDictionaries} "$@"'') + (pkgs.writers.writeDashBin "sd" ''${pkgs.sdcv}/bin/sdcv --data-dir ${makeStardictDataDir englishGermanDictionaries} "$@"'') + ]; +} diff --git a/lib/goldendict-config.nix b/lib/goldendict-config.nix new file mode 100644 index 0000000..f52dfcc --- /dev/null +++ b/lib/goldendict-config.nix @@ -0,0 +1,179 @@ +{pkgs, path}: '' + + + ${path} + + + + + + + + + + + + 0 + 0 + 0 + 0 + + 0 + 1 + 1 + 1 + + + 0 + 1 + 0 + 0 + 1 + 1 + + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + ae6f89aac7151829681b85f035d54e48 + + + + + modern + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 1 + 1 + 0 + 1 + Ctrl+F11, Ctrl+F11 + 1 + Ctrl+C, Ctrl+C + 1 + 0 + 0 + 0 + 0 + 3 + 0 + 0 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 1 + FFmpeg+libao + mplayer + 1 + 1 + 0 + 0 + 1 + + 0 + + 3128 + + + + + + 0 + 0 + 0 + 50 + 1 + 500 + 1 + 0 + + 0 + 2000 + 0 + 1000 + 20 + 0 + 1 + + 0 + 0 + 100 + 2 + 0 + 1 + + + 1 + 0 + 0 + 0 + + + 0 + 0 + AAAA/wAAAAH9AAAAAAAAAg0AAAGTAAAABAAAAAQAAAAIAAAACPwAAAABAAAAAQAAAAEAAAAaAGQAaQBjAHQAaQBvAG4AYQByAHkAQgBhAHIDAAAAAP////8AAAAAAAAAAA== + AdnQywADAAAAAAC6AAABEgAAAuYAAAKkAAAAugAAARIAAALmAAACpAAAAAAAAAAABVYAAAC6AAABEgAAAuYAAAKk + 0 + 0 + AAAA/wAAAAH9AAAAAgAAAAAAAADMAAAC0PwCAAAAAfsAAAAUAHMAZQBhAHIAYwBoAFAAYQBuAGUBAAAAFAAAAtAAAAB9AP///wAAAAEAAADMAAAC0PwCAAAAA/sAAAASAGQAaQBjAHQAcwBQAGEAbgBlAQAAABQAAAFvAAAAYQD////7AAAAGgBmAGEAdgBvAHIAaQB0AGUAcwBQAGEAbgBlAAAAABQAAALQAAAAYQD////7AAAAFgBoAGkAcwB0AG8AcgB5AFAAYQBuAGUBAAABhAAAAWAAAABhAP///wAAA7QAAALQAAAABAAAAAQAAAAIAAAACPwAAAABAAAAAgAAAAIAAAAUAG4AYQB2AFQAbwBvAGwAYgBhAHIAAAAAAP////8AAAAAAAAAAAAAABoAZABpAGMAdABpAG8AbgBhAHIAeQBCAGEAcgAAAAAA/////wAAAAAAAAAA + AdnQywADAAAAAAAEAAAAGAAABVEAAAL7AAAABAAAABgAAAVRAAAC+wAAAAAAAAAABVYAAAAEAAAAGAAABVEAAAL7 + AdnQywADAAAAAAF3AAAAgwAAA9AAAAJGAAABeAAAAIQAAAPPAAACRQAAAAAAAAAABVYAAAF4AAAAhAAAA88AAAJF + AAAA/wAAAAEAAAACAAABBAAABAAB/////wEAAAABAA== + AdnQywADAAAAAAF1AAAAmgAAA84AAAIrAAABdgAAAJsAAAPNAAACKgAAAAAAAAAABVYAAAF2AAAAmwAAA80AAAIq + + + + 1 + 1 + + 0 + 256 + 0 + + 0 + 0 + 0 + + + + +''