diff --git a/machines/howl/default.nix b/machines/howl/default.nix new file mode 100644 index 0000000..1652d0d --- /dev/null +++ b/machines/howl/default.nix @@ -0,0 +1,61 @@ +{ config, pkgs, lib, ... }: + +{ + imports = [ + ./hardware-configuration.nix + ]; + + + # for luks onlock over tor + services.tor.enable = true; + services.tor.client.enable = true; + + # don't use remote builders + nix.distributedBuilds = lib.mkForce false; + + services.udev.extraRules = '' + # depthai + SUBSYSTEM=="usb", ATTRS{idVendor}=="03e7", MODE="0666" + + # Moonlander + # Rules for Oryx web flashing and live training + KERNEL=="hidraw*", ATTRS{idVendor}=="16c0", MODE="0664", GROUP="plugdev" + KERNEL=="hidraw*", ATTRS{idVendor}=="3297", MODE="0664", GROUP="plugdev" + # Wally Flashing rules for the Moonlander and Planck EZ + SUBSYSTEMS=="usb", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="df11", MODE:="0666", SYMLINK+="stm32_dfu" + ''; + services.udev.packages = [ pkgs.platformio ]; + users.groups.plugdev = { + members = [ "googlebot" ]; + }; + + # virt-manager + virtualisation.libvirtd.enable = true; + programs.dconf.enable = true; + virtualisation.spiceUSBRedirection.enable = true; + environment.systemPackages = with pkgs; [ virt-manager ]; + users.users.googlebot.extraGroups = [ "libvirtd" "adbusers" ]; + + # allow building ARM derivations + boot.binfmt.emulatedSystems = [ "aarch64-linux" ]; + + services.spotifyd.enable = true; + + virtualisation.podman.enable = true; + virtualisation.podman.dockerCompat = true; + + virtualisation.appvm.enable = true; + virtualisation.appvm.user = "googlebot"; + + services.mount-samba.enable = true; + + de.enable = true; + de.touchpad.enable = true; + + networking.firewall.allowedTCPPorts = [ + # barrier + 24800 + ]; + + programs.adb.enable = true; +} diff --git a/machines/howl/hardware-configuration.nix b/machines/howl/hardware-configuration.nix new file mode 100644 index 0000000..92ceb0a --- /dev/null +++ b/machines/howl/hardware-configuration.nix @@ -0,0 +1,47 @@ +{ config, lib, pkgs, modulesPath, ... }: + +{ + imports = + [ (modulesPath + "/installer/scan/not-detected.nix") + ]; + + boot.kernelPackages = pkgs.linuxPackages_latest; + + # boot + boot.loader.systemd-boot.enable = true; + boot.initrd.availableKernelModules = [ "nvme" "xhci_pci" "thunderbolt" "usb_storage" "sd_mod" ]; + boot.initrd.kernelModules = [ "dm-snapshot" ]; + boot.kernelModules = [ "kvm-amd" ]; + boot.extraModulePackages = [ ]; + + # firmware + firmware.x86_64.enable = true; + + # disks + remoteLuksUnlock.enable = true; + boot.initrd.luks.devices."enc-pv" = { + device = "/dev/disk/by-uuid/c801586b-f0a2-465c-8dae-532e61b83fee"; + allowDiscards = true; + }; + fileSystems."/" = + { device = "/dev/disk/by-uuid/95db6950-a7bc-46cf-9765-3ea675ccf014"; + fsType = "btrfs"; + }; + fileSystems."/boot" = + { device = "/dev/disk/by-uuid/B087-2C20"; + fsType = "vfat"; + options = [ "fmask=0022" "dmask=0022" ]; + }; + swapDevices = + [ { device = "/dev/disk/by-uuid/49fbdf62-eef4-421b-aac3-c93494afd23c"; } + ]; + + # Enables DHCP on each ethernet and wireless interface. In case of scripted networking + # (the default) this is the recommended approach. When using systemd-networkd it's + # still possible to use this option, but it's recommended to use it in conjunction + # with explicit per-interface declarations with `networking.interfaces..useDHCP`. + networking.useDHCP = lib.mkDefault true; + # networking.interfaces.wlp1s0.useDHCP = lib.mkDefault true; + + nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; +} diff --git a/machines/howl/properties.nix b/machines/howl/properties.nix new file mode 100644 index 0000000..536e0c3 --- /dev/null +++ b/machines/howl/properties.nix @@ -0,0 +1,26 @@ +{ + hostNames = [ + "howl" + ]; + + arch = "x86_64-linux"; + + systemRoles = [ + "personal" + ]; + + hostKey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIEQi3q8jU6vRruExAL60J7GFO1gS8HsmXVJuKRT4ljrG"; + + userKeys = [ + "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKPnLt84bKhUgFxjQf10+Htro9Lo1Pabqm8mGalBUniv" + ]; + + deployKeys = [ + # TODO + ]; + + remoteUnlock = { + hostKey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIN0N80r0Sl2WlJaUqfxZPkOtYyGumFazkIqq7eq3Gd2o"; + onionHost = "ll6yjnkh4psmfwmtkmqoutl4gq4elqzbmjxv4s6gpgoavyi3kwhjvnqd.onion"; + }; +} diff --git a/secrets/backblaze-s3-backups.age b/secrets/backblaze-s3-backups.age index 8790132..b827c03 100644 --- a/secrets/backblaze-s3-backups.age +++ b/secrets/backblaze-s3-backups.age @@ -1,23 +1,24 @@ age-encryption.org/v1 --> ssh-ed25519 yHDAQw BnVxLTfrWFqaT6+Tz8I0gQReC2NjADak1TlzotVHzEs -tzQGIMBFH1v91gezCWjCk3qNi6nhCFVMxaZrrxqFT+c --> ssh-ed25519 jQaHAA BwpFr2XXWTaNeYgieI1rkRw5u/mf55vVooZnJJhMLSI -4VmJ1R5lcmD+apxg4WLnMk+aTJt3GOS+6KOE75NqjEY --> ssh-ed25519 dMQYog oBypOzXH4ioZv9PzYGYxG4jBDRv6qIiRglj/f/uJugU -SQRv3Iel0jeONRAVp96VFtKjXGJ8PMvp80ys4otQp0U --> ssh-ed25519 WBT1Hw wb7yUuZOQPhCYusR6WS5/e/NgC7UpBnIO0HZaO2+xxM -faHL6WBApWk8+871XmVRHcllXN4I7kgnqngY633jSI0 --> ssh-ed25519 6AT2/g +l7AjVqKk9oi96mglZDQN5AVncmVqjEjFfPXFZYdGlI -nEQtVZGMIKJlIf0Bj8T2YkUKQawpyP0bqCJ3Nj8PDPc --> ssh-ed25519 VyYH/Q QHjWhus6HvedZXiDtkoK9DiS8EPOpUxRHix1cSwVuiU -vn0vSFHo6doBH/rzk42DxKN8XzSzMVDMMaeqQX6iuII --> ssh-ed25519 hPp1nw FH8TXl9deDyGS9pCyG3sBvzpi8d9S0u4tprKopO6vBo -ZaricPkMTEn+xNPOJP4nLIpsHdFDVCCEqFVq4FxOPCw --> ssh-ed25519 dMQYog FYeNrUyYZ/aYZkmjTEVJ3Fq4J5qAe+Do7IDPiYDZrgw -RroBGlF7DyNKmL4+Nd84eKKkJh7AGE9FP1VxgUO3iF4 --> htnK=h-grease F7l m it+; <4OvM -2MOngVDIi1sJJnjX2eAt4L3jObghFIbv20wJHLb7G0AMyavVmOiQ4xSehDKCb34g -10vwok0cSXaKOGmbXOFst9J2tk+z ---- nOQEybjt9MPX5X2cUnpKFgHtTSPvJSFnDGyj3ATlrEQ -O"ofչ|܊'_j]I ssh-ed25519 N7drjg YHZO6ENbBihFQFqRRjdWtgfX3R+qHtaJWIa54igHpEc +HLeZDyErwJme8knPYCxuSXMmHBkz2kDI6OBG6/EtP7w +-> ssh-ed25519 yHDAQw 2YvHNNsiDJSUkKZOlhWzP4l1NfH0zTnldZV4Jjfy620 +dHM0wG9JLiQJJ+NquhPeI/xv1iEqsxRy9D//NcYTr8k +-> ssh-ed25519 jQaHAA QtNkLsgdVgJqbmxLFhaf7AIG208NXHzgBweO8L3Dc3E +SGjvdajk9M5azgP4QcynnxKieKEJYil1T2az4hYffdM +-> ssh-ed25519 w3nu8g JuFJuOdVOc8Uk5es2rpqPVHgg+l6/K0J+MHDFuffn0A +n7tzohV+Uvecu6GVNeht/O/dL4x6e5SVdHEzRbJg3rI +-> ssh-ed25519 dMQYog 44RRRe8M2FJWigy3d9TNaUQSM47gLDgU38F6ow1Xe2c +uQVkQma/hZVMCMtgcelyZhscvc46LItvbcPBuJI81Ns +-> ssh-ed25519 WBT1Hw +b+2TOduL4XERN7qOYPtJ3R5w54m7VYqmyy8Smz6tXU +TyQ+bjSK6IYSulW0rm12V+lpXYCt5kr3byaNNGJeMVc +-> ssh-ed25519 6AT2/g ZUmtQOHWmn0shq1iP3Ca7aQ74PLcqZGTprvsM/HAXR8 +eNonzRSAwNCQi0DgtVs67zCjpOYsqeLEJYBmLjuS9rI +-> ssh-ed25519 hPp1nw qzrGZr5bFvfPwWrfNIUFubvGXBT+oQo9HZQuePSbPwk +MKNlVl3OXBYEFWiu2hbbXDQnqkV4nENG+lcLcd+H33I +-> ssh-ed25519 w3nu8g H2UDASHwHNxU74g5IbuHIDHEZYgyWNmSX7Wv/lV41HQ +WMgKT0GZxWQoK57E9B2j8MsyOroMhWd5SiCQtZa7AIY +-> ssh-ed25519 dMQYog YkL6XApXeP9qc4pVaIHFaNmYIK/PVEKoJz5SotQbGmQ +H+3wAxIl9Yip4xQqjhje9tL1V4m00NNSxNjH6Dbb1K8 +--- vBQpXXpKzzXwpNP17r8OBqO4Q3bIS4pHqbEl4u9dB1w +L9[gdxg8*0W&`*?`ʭIQd1*bM\D+) +\ghD3#k3;j ގݾHF&X %6B8TfG`Q?[hD*c \ No newline at end of file diff --git a/secrets/binary-cache-private-key.age b/secrets/binary-cache-private-key.age index fd5b8df..a27e7d8 100644 Binary files a/secrets/binary-cache-private-key.age and b/secrets/binary-cache-private-key.age differ diff --git a/secrets/binary-cache-push-sshkey.age b/secrets/binary-cache-push-sshkey.age index 5ae1484..195d854 100644 Binary files a/secrets/binary-cache-push-sshkey.age and b/secrets/binary-cache-push-sshkey.age differ diff --git a/secrets/cris-hashed-email-pw.age b/secrets/cris-hashed-email-pw.age index bbe438b..0b4a0d9 100644 --- a/secrets/cris-hashed-email-pw.age +++ b/secrets/cris-hashed-email-pw.age @@ -1,10 +1,10 @@ age-encryption.org/v1 --> ssh-ed25519 6AT2/g MmInWcw6GlfzvN9kxFtTVWMX+UX9PHO5V35TzRcmex0 -dSMoGNuJMpRwyWTAnjHpO9mJBCxsJ77M5fWA0F1gR6s --> ssh-ed25519 dMQYog ua3OPiErZcVRNGf/uxv7PiBBFOKAUkaSSIV4UCMu5Wc -L8kYIzyEXcAxAlPQbqasgiaQi7JARhja6vM6WzvdMrs --> CIn-grease !G{f,9h( Hjn\ \hTpE MAP<)J -0u+eQDvbxgI6aDT7xqdwOX3A34E2T4Ft9bSF6KBpHqucHib9tA5lJHgtXwgkpa/P -nbaJDnRWbM/AL7nnT7XpdLVO2r7w2ish4ALBgPvXxH/0iUXqvQk1B/E ---- +aKXbSfk6VkxqtTn+fI8VhcgO7Dw0jNSUJOJlqCbEGM -? q}`im.6{I ۰Ȅ csjRD$Z͒ Pˊj0ĉ;{CJx/* \ No newline at end of file +-> ssh-ed25519 6AT2/g WZ9p/pCsEDpKbgGDLcTtisn25kExQX9iv+tL3wyPwiY +vom2z9QRIQSFB0+4/7lSWUEB0eoAG+08nXgiUg/OSX4 +-> ssh-ed25519 w3nu8g ECLZwCRJVJqyUMf70EOl2/3ExTruKaxCSQlY5fBZqxk +VemnmGpzx1VprkybW1hPlkfmiDaNcBDoEzX0mDZgmu0 +-> ssh-ed25519 dMQYog QiPsbFE8MtXnRNBwkUEC+6grqXEbDstEtxYR8uJks2w +O3JWQGppFeZEd6o3W0KVTEIyNVGeLxKfTYTlgsAEVHQ +--- RncZzBFEyMAkpZRWrPORA0DPHuCTNswmWG5CMNnfm4A + /8nť7ht?T=%z[!(udu@ +עEbyD=!Xt:#XX@_M \ No newline at end of file diff --git a/secrets/gitea-actions-runner-token.age b/secrets/gitea-actions-runner-token.age index 10adf5c..ce2c080 100644 Binary files a/secrets/gitea-actions-runner-token.age and b/secrets/gitea-actions-runner-token.age differ diff --git a/secrets/hashed-email-pw.age b/secrets/hashed-email-pw.age index 1d2b6be..42d7a1d 100644 Binary files a/secrets/hashed-email-pw.age and b/secrets/hashed-email-pw.age differ diff --git a/secrets/hashed-robots-email-pw.age b/secrets/hashed-robots-email-pw.age index ae30edf..eeed62b 100644 Binary files a/secrets/hashed-robots-email-pw.age and b/secrets/hashed-robots-email-pw.age differ diff --git a/secrets/hostapd-pw-CXNK00BF9176.age b/secrets/hostapd-pw-CXNK00BF9176.age index 84a9e79..07a5f97 100644 --- a/secrets/hostapd-pw-CXNK00BF9176.age +++ b/secrets/hostapd-pw-CXNK00BF9176.age @@ -1,10 +1,7 @@ age-encryption.org/v1 --> ssh-ed25519 VyYH/Q evYn+9ipH4t4cT2lZOiwnGqSkU+bbdVw80S0rgAqt00 -Vr24AqHOqH5DQYYlyS0X+k6TnczKHRDGZCeoLOJkybE --> ssh-ed25519 dMQYog 23GqNi0N24EtnRV25Ick+aurPOngZ2Zd279LmZH15WY -FEo0GyymjnPrSjf608SyCH22FvaqEixyVcbXdQ+Z3zA --> (Rd{ky@}-grease D f/KA]Pe -8Ip1fddb0BYUwg62FSmUBp7O+TILFaCtWHcxheEyUlXPoY9TGTaySl6Znw9Mksde -q2aAHn8 ---- ibLXcq9R/5X2jFKBABgsUcDiBjjuoA9SrCuFbGOiNBI -;X mhŽ%펗+6k@nWT0 %v \ No newline at end of file +-> ssh-ed25519 w3nu8g ER07FH17Wm9op5F4pCftNK76f+nNjtA6zQc/2dLyAHI +nxxq/8tS3ENJhAEIhJCiSi7dV+68AmcEMh9zvZoWpdY +-> ssh-ed25519 dMQYog JelCfh+akP7C/i1kimq3fC5PRQa9gHbmBaOnjKu+PDw +GVTwo7MzkpCereZRh0HVjGYmtdMY1gHowMZtUQl7XQw +--- p2l83t3bEdBrrp1ctaqqKhwB4l2McgZqZTtc2SXgd8Q +ed\Y4lXVFUM||)د8>랭%J$ \ No newline at end of file diff --git a/secrets/hostapd-pw-experimental-tower.age b/secrets/hostapd-pw-experimental-tower.age index e799b25..d56ebf3 100644 Binary files a/secrets/hostapd-pw-experimental-tower.age and b/secrets/hostapd-pw-experimental-tower.age differ diff --git a/secrets/iodine.age b/secrets/iodine.age index 1a5cf6c..58e7c07 100644 --- a/secrets/iodine.age +++ b/secrets/iodine.age @@ -1,11 +1,9 @@ age-encryption.org/v1 --> ssh-ed25519 6AT2/g UG+Ub0bZK74/Ifa/YkZOc6B3cPl6oI7M4Ev1zxkFEh0 -z71vjnEqhL3kuLePbP0nKQNwU0mrCOO386wLdUhH5tU --> ssh-ed25519 dMQYog t8H6XoIhhE4H9g4913sWgZ5BaYK04uk7Mj0FYnOdtTo -U4Ygto4z3l4dcCsnGxnRo1YGBl6YZ5y5pnVBJXCSrOc --> Bad-grease <$Y -1xw ---- wiGO0H6gfd+3D/+V/rMNLGkDk6FPFUihXi43J82LAkg -8>`spU#KV%jbwxN@ -@i -Ow\(@@Tz \ No newline at end of file +-> ssh-ed25519 6AT2/g Knb25oYknkiXyMqVBR3T0sFSO4hDjWUTq3xIml/b4ig +n7xamnrZ+SCWiKqniF3r2JvH4G8q2pJaHzF0riNEDf4 +-> ssh-ed25519 w3nu8g 7+2R5RpLjBf4jjj3S8ibMquUWgRMrifziGQubwuLrhA +3jLCalnbA3Z2jr8Zs+qrpzSoi3Jv6E5OV2binpr3Kk4 +-> ssh-ed25519 dMQYog Nh2e7me0tiG7ZwQK8669VS0LCYFSH+b33I9tr8uI5CY +7Gs1N9eZa1CGR9pczzugHbqnghqevX7kQCOeqR4q0eI +--- OzW+omJsZA/b4DMF4hdQga7JVgiEYluZok3r8JM258I +*PAc1@tenf&#I7acbD~a]1w= \ No newline at end of file diff --git a/secrets/librechat-env-file.age b/secrets/librechat-env-file.age index b7877b6..0e3dcef 100644 Binary files a/secrets/librechat-env-file.age and b/secrets/librechat-env-file.age differ diff --git a/secrets/nextcloud-pw.age b/secrets/nextcloud-pw.age index 8105dc0..6823818 100644 Binary files a/secrets/nextcloud-pw.age and b/secrets/nextcloud-pw.age differ diff --git a/secrets/oauth2-proxy-env.age b/secrets/oauth2-proxy-env.age index bb975be..8b4872b 100644 Binary files a/secrets/oauth2-proxy-env.age and b/secrets/oauth2-proxy-env.age differ diff --git a/secrets/pia-login.age b/secrets/pia-login.age index a38e952..7b54154 100644 --- a/secrets/pia-login.age +++ b/secrets/pia-login.age @@ -1,13 +1,11 @@ age-encryption.org/v1 --> ssh-ed25519 6AT2/g gPeZnJ8arK6xAGnEK9uTcGfwBI1pYjjv6VX4o9EBIns -sKFfqnafLachTKE93Pb7gsZ5gdKis64N64BK5128LKg --> ssh-ed25519 hPp1nw e2taazZ3R6EBCbgh6Gg0Dc9p1K7zp5R7n9LIkWF/Wj8 -+/VkcMDL1HNJhbc6/OxpiUe1dlO0lrc1hgkD/RrYXjY --> ssh-ed25519 dMQYog znMKkv1O7F/EeAyvTfULUn/pWdai2NI0uBfWn/02xg0 -45W9s4Vo8J+xOTGec9h6s0ra9ZSUA6JkorAAyqqlPfg --> T/!XI-grease GJ_O' -mAOW54Txa2H9WdEMog0g1XQjkC5z0wQIoqNlnbsjCSvM1UaPiiu6vJOJKCmJb1Z6 -3wyLN6lCIjkR ---- yX7lzKnDkn+KkRVTumffcd/SJSznR5n6JtUgWkSSohk -Q^yW;]+u>3wzoM:9,xvKXT-K8rA(@-| -:Pȝ*H6'&i \ No newline at end of file +-> ssh-ed25519 6AT2/g MGKlbzVOk5+czgAOerwl+eIyOifXJm/q4UgQUXVpx1c +43l6s4+5TSMQyO9tAg7v9Y5OdXOjKYz56lbr9Jm2r+o +-> ssh-ed25519 hPp1nw aOxni4sFPPgedUkBOuOyEWfFPJrhdTJnivIaWt5RJxM +KNaxijzSMp7EjYKwWiAP66nPYYZK3/VXL8u+3uJt6bg +-> ssh-ed25519 w3nu8g qTAzEzQbFze35AtbvkYREw3wa7ApDN5u7RSZUXrEpms +Dy0uGF458A9RJMvDl2XKOkEABbbRgT+eIgvb6ZOEQqg +-> ssh-ed25519 dMQYog 5DfYuGeWuN0/CO6WWbFIi7LaKl23FXYVdPROM+TFpCA +PDBdDn+YUMKYNKFkCEfXesmkB/XUxZRK3ddQt0kqQ7g +--- JOeG87EVD+QBx6n+rMoPTOni0PyoG7xx4a2USNiapYI +Zs{i_Q\+@@߸ù&_5$Gt2rFyQIa 7zgf%O(,V}n|'J2Q B \ No newline at end of file diff --git a/secrets/restic-password.age b/secrets/restic-password.age index f97e213..9124acd 100644 Binary files a/secrets/restic-password.age and b/secrets/restic-password.age differ diff --git a/secrets/robots-email-pw.age b/secrets/robots-email-pw.age index 17c5252..61cb328 100644 Binary files a/secrets/robots-email-pw.age and b/secrets/robots-email-pw.age differ diff --git a/secrets/sasl_relay_passwd.age b/secrets/sasl_relay_passwd.age index 28c8a85..3c9359e 100644 Binary files a/secrets/sasl_relay_passwd.age and b/secrets/sasl_relay_passwd.age differ diff --git a/secrets/searx.age b/secrets/searx.age index 12669d4..69279e6 100644 Binary files a/secrets/searx.age and b/secrets/searx.age differ diff --git a/secrets/smb-secrets.age b/secrets/smb-secrets.age index d11bd98..81a335f 100644 Binary files a/secrets/smb-secrets.age and b/secrets/smb-secrets.age differ diff --git a/secrets/spotifyd.age b/secrets/spotifyd.age index 032115b..19bf5dd 100644 Binary files a/secrets/spotifyd.age and b/secrets/spotifyd.age differ diff --git a/secrets/wolframalpha.age b/secrets/wolframalpha.age index b0ed931..48c1556 100644 --- a/secrets/wolframalpha.age +++ b/secrets/wolframalpha.age @@ -1,10 +1,10 @@ age-encryption.org/v1 --> ssh-ed25519 6AT2/g 3xkROcKh6I/oVGRwnvJ9Dy36JvYmsJQZq2DBvYC4Dz4 -JunaGg8zg2SJZmBnuV0ZcDSc8vsMHgTd1RbDn8giy+Y --> ssh-ed25519 dMQYog JG8QC1thl+CMlxoI1Y+ZUj0dQ3FXF4cquk7tdzfaS0E -zW7jyrXhVvyIq7HXfcRqkyZdg/wkWwNfPk5KbI2jH7I --> $"v%-grease `Xo|a eIFIq 7hBk?8%1 -ZoNiAXY1HE1GEQPd1aJirTitFgXf3HKcV2H6HxRpzWysUd1DGOsF/jScUO36JgIP -sY8FA22PjyUv7g ---- zFpfG3JQpSmE108GMEWLjGWMJe7cXVn3NN9vs8iDY3E -8f,ժ*}V@j3CM*@}y29 N|y \ No newline at end of file +-> ssh-ed25519 6AT2/g Kw5/he5m/XAJUNv8XEJQU+e+Ou7hCYluMXXWlHiePXY +GkhJOzSlcC9S7bs8FuDNMvMaFU3+fQ5z+o+Pb8wllp8 +-> ssh-ed25519 w3nu8g fUORtXN1ygOeV42jveCosGXR/Y6R6OG6DK7LPDBEAk8 +yFpoasbY/sl6BQp0LVBQnInA4Kxd8A8meEObU1KD108 +-> ssh-ed25519 dMQYog 75qVEe6/1yOV4DDLAOGaufs3ojx1/Sc1fIQOe+Oirz0 +iDFsr6/30AHKH6hUs/WTpHEM8WQ03QMlGbtQkGrnVCU +--- islx8t7a6bShXGxvYeDVuUxkmAMtpUfr0Gp7aYrJUkI +247 +?wJv 9,xŊ򨉦ƦnH?>I \ No newline at end of file