aboutsummaryrefslogtreecommitdiff
path: root/virtual/modules/websites/tools
diff options
context:
space:
mode:
authorIsmaël Bouya <ismael.bouya@normalesup.org>2019-01-25 23:15:08 +0100
committerIsmaël Bouya <ismael.bouya@normalesup.org>2019-01-25 23:15:08 +0100
commit01f21083a897b86bf148f1d2bb9c8edca4d3786a (patch)
tree784f04e9b6ef99a49e572c84e4b7ab40b5eb5fde /virtual/modules/websites/tools
parentbfe3c9c9df0c5112bc8806483292b55ed0f7e02d (diff)
downloadNix-01f21083a897b86bf148f1d2bb9c8edca4d3786a.tar.gz
Nix-01f21083a897b86bf148f1d2bb9c8edca4d3786a.tar.zst
Nix-01f21083a897b86bf148f1d2bb9c8edca4d3786a.zip
Rename virtual folder to nixops
Fixes https://git.immae.eu/mantisbt/view.php?id=82
Diffstat (limited to 'virtual/modules/websites/tools')
-rw-r--r--virtual/modules/websites/tools/cloud/default.nix47
-rw-r--r--virtual/modules/websites/tools/cloud/nextcloud-config/mimetypealiases.json4
-rw-r--r--virtual/modules/websites/tools/cloud/nextcloud-config/mimetypemapping.json4
-rw-r--r--virtual/modules/websites/tools/cloud/nextcloud.nix258
-rw-r--r--virtual/modules/websites/tools/dav/davical.nix160
-rw-r--r--virtual/modules/websites/tools/dav/davical_19eb79ebf9250e5f339675319902458c40ed1755.patch26
-rw-r--r--virtual/modules/websites/tools/dav/default.nix35
-rw-r--r--virtual/modules/websites/tools/dav/infcloud.nix38
-rw-r--r--virtual/modules/websites/tools/dav/infcloud_config.js1446
-rw-r--r--virtual/modules/websites/tools/db/default.nix22
-rw-r--r--virtual/modules/websites/tools/diaspora/Gemfile318
-rw-r--r--virtual/modules/websites/tools/diaspora/Gemfile.lock909
-rw-r--r--virtual/modules/websites/tools/diaspora/default.nix113
-rw-r--r--virtual/modules/websites/tools/diaspora/diaspora.json15
-rw-r--r--virtual/modules/websites/tools/diaspora/diaspora.nix154
-rw-r--r--virtual/modules/websites/tools/diaspora/gemset.nix3045
-rw-r--r--virtual/modules/websites/tools/diaspora/ldap.patch256
-rw-r--r--virtual/modules/websites/tools/ether/default.nix89
-rw-r--r--virtual/modules/websites/tools/ether/etherpad-lite.json15
-rw-r--r--virtual/modules/websites/tools/ether/etherpad_lite.nix183
-rw-r--r--virtual/modules/websites/tools/ether/libreoffice_patch.diff11
-rw-r--r--virtual/modules/websites/tools/git/default.nix48
-rw-r--r--virtual/modules/websites/tools/git/gitweb/gitweb.nix65
-rw-r--r--virtual/modules/websites/tools/git/gitweb/theme/git-favicon.pngbin1125 -> 0 bytes
-rw-r--r--virtual/modules/websites/tools/git/gitweb/theme/git-logo.pngbin2412 -> 0 bytes
-rw-r--r--virtual/modules/websites/tools/git/gitweb/theme/gitweb.css783
-rw-r--r--virtual/modules/websites/tools/git/gitweb/theme/gitweb.js27
-rw-r--r--virtual/modules/websites/tools/git/mantisbt/mantisbt-plugin-slack.json15
-rw-r--r--virtual/modules/websites/tools/git/mantisbt/mantisbt-plugin-source-integration.json15
-rw-r--r--virtual/modules/websites/tools/git/mantisbt/mantisbt-plugin-source-integration_Source.API.php.diff12
-rw-r--r--virtual/modules/websites/tools/git/mantisbt/mantisbt.nix120
-rw-r--r--virtual/modules/websites/tools/git/mantisbt/patches/bug_report.php.diff20
-rw-r--r--virtual/modules/websites/tools/git/mantisbt/patches/bug_report_page.php.diff53
-rw-r--r--virtual/modules/websites/tools/git/mantisbt/patches/bugnote_add.php.diff20
-rw-r--r--virtual/modules/websites/tools/git/mantisbt/patches/bugnote_add_inc.php.diff52
-rw-r--r--virtual/modules/websites/tools/mastodon/default.nix208
-rw-r--r--virtual/modules/websites/tools/mastodon/gemset.nix2878
-rw-r--r--virtual/modules/websites/tools/mastodon/mastodon.json15
-rw-r--r--virtual/modules/websites/tools/mastodon/mastodon.nix129
-rw-r--r--virtual/modules/websites/tools/mastodon/yarn-packages.nix12164
-rw-r--r--virtual/modules/websites/tools/mediagoblin/bower-packages.nix8
-rw-r--r--virtual/modules/websites/tools/mediagoblin/default.nix147
-rw-r--r--virtual/modules/websites/tools/mediagoblin/ldap_fix.py93
-rw-r--r--virtual/modules/websites/tools/mediagoblin/mediagoblin-plugin-basicsearch.json15
-rw-r--r--virtual/modules/websites/tools/mediagoblin/mediagoblin.json14
-rw-r--r--virtual/modules/websites/tools/mediagoblin/mediagoblin.nix288
-rw-r--r--virtual/modules/websites/tools/mediagoblin/tempita.json15
-rw-r--r--virtual/modules/websites/tools/tools/default.nix91
-rw-r--r--virtual/modules/websites/tools/tools/rompr.json15
-rw-r--r--virtual/modules/websites/tools/tools/rompr.nix86
-rw-r--r--virtual/modules/websites/tools/tools/roundcubemail.nix105
-rw-r--r--virtual/modules/websites/tools/tools/tt-rss.json14
-rw-r--r--virtual/modules/websites/tools/tools/ttrss-af-feedmod_type_replace.patch12
-rw-r--r--virtual/modules/websites/tools/tools/ttrss-af_feedmod.json15
-rw-r--r--virtual/modules/websites/tools/tools/ttrss-auth-ldap.json15
-rw-r--r--virtual/modules/websites/tools/tools/ttrss-feediron.json15
-rw-r--r--virtual/modules/websites/tools/tools/ttrss-feediron_json_reformat.patch18
-rw-r--r--virtual/modules/websites/tools/tools/ttrss-ff_instagram.json15
-rw-r--r--virtual/modules/websites/tools/tools/ttrss-tumblr_gdpr_ua.json15
-rw-r--r--virtual/modules/websites/tools/tools/ttrss.nix177
-rw-r--r--virtual/modules/websites/tools/tools/wallabag.nix181
-rw-r--r--virtual/modules/websites/tools/tools/wallabag_ldap.patch698
-rw-r--r--virtual/modules/websites/tools/tools/ympd.nix32
-rw-r--r--virtual/modules/websites/tools/tools/yourls-ldap-plugin.json15
-rw-r--r--virtual/modules/websites/tools/tools/yourls.json15
-rw-r--r--virtual/modules/websites/tools/tools/yourls.nix102
66 files changed, 0 insertions, 25988 deletions
diff --git a/virtual/modules/websites/tools/cloud/default.nix b/virtual/modules/websites/tools/cloud/default.nix
deleted file mode 100644
index 241b982..0000000
--- a/virtual/modules/websites/tools/cloud/default.nix
+++ /dev/null
@@ -1,47 +0,0 @@
1{ lib, pkgs, config, myconfig, mylibs, ... }:
2let
3 nextcloud = pkgs.callPackage ./nextcloud.nix {
4 env = myconfig.env.tools.nextcloud;
5 };
6
7 cfg = config.services.myWebsites.tools.cloud;
8in {
9 options.services.myWebsites.tools.cloud = {
10 enable = lib.mkEnableOption "enable cloud website";
11 };
12
13 config = lib.mkIf cfg.enable {
14 security.acme.certs."eldiron".extraDomains."cloud.immae.eu" = null;
15
16 services.myWebsites.tools.modules = nextcloud.apache.modules;
17
18 services.myWebsites.tools.vhostConfs.cloud = {
19 certName = "eldiron";
20 hosts = ["cloud.immae.eu" ];
21 root = nextcloud.webRoot;
22 extraConfig = [
23 nextcloud.apache.vhostConf
24 ];
25 };
26
27 environment.systemPackages = let
28 occ = pkgs.writeScriptBin "nextcloud-occ" ''
29 #! ${pkgs.stdenv.shell}
30 cd ${nextcloud.webRoot}
31 NEXTCLOUD_CONFIG_DIR="${nextcloud.webRoot}/config" \
32 exec \
33 ${pkgs.php}/bin/php \
34 -c ${pkgs.php}/etc/php.ini \
35 occ $*
36 '';
37 in [ occ ];
38
39 system.activationScripts.nextcloud = nextcloud.activationScript;
40
41 services.myPhpfpm = {
42 poolPhpConfigs.nextcloud = nextcloud.phpFpm.phpConfig;
43 poolConfigs.nextcloud = nextcloud.phpFpm.pool;
44 };
45
46 };
47}
diff --git a/virtual/modules/websites/tools/cloud/nextcloud-config/mimetypealiases.json b/virtual/modules/websites/tools/cloud/nextcloud-config/mimetypealiases.json
deleted file mode 100644
index 3806e53..0000000
--- a/virtual/modules/websites/tools/cloud/nextcloud-config/mimetypealiases.json
+++ /dev/null
@@ -1,4 +0,0 @@
1{
2 "application/gpx+xml": "gpx",
3 "x-application/kdbx": "kdbx"
4}
diff --git a/virtual/modules/websites/tools/cloud/nextcloud-config/mimetypemapping.json b/virtual/modules/websites/tools/cloud/nextcloud-config/mimetypemapping.json
deleted file mode 100644
index 2db4691..0000000
--- a/virtual/modules/websites/tools/cloud/nextcloud-config/mimetypemapping.json
+++ /dev/null
@@ -1,4 +0,0 @@
1{
2 "gpx": ["application/gpx+xml"],
3 "kdbx": ["x-application/kdbx"]
4}
diff --git a/virtual/modules/websites/tools/cloud/nextcloud.nix b/virtual/modules/websites/tools/cloud/nextcloud.nix
deleted file mode 100644
index 3c6bfc9..0000000
--- a/virtual/modules/websites/tools/cloud/nextcloud.nix
+++ /dev/null
@@ -1,258 +0,0 @@
1{ stdenv, fetchurl, env, writeText, lib, phpPackages, php }:
2let
3 nextcloud = let
4 buildApp = { appName, version, url, sha256, installPhase ? "mkdir -p $out && cp -R . $out/" }:
5 stdenv.mkDerivation rec {
6 name = "nextcloud-app-${appName}-${version}";
7 inherit version;
8 phases = "unpackPhase installPhase";
9 inherit installPhase;
10 src = fetchurl { inherit url sha256; };
11 };
12 apps = {
13 audioplayer = buildApp rec {
14 appName = "audioplayer";
15 version = "2.5.0";
16 url = "https://github.com/Rello/${appName}/releases/download/${version}/${appName}-${version}.tar.gz";
17 sha256 = "1pg4y51cv3agy28n4gfc8i7x1ya1yijxrmhpblm1n846vhmwdcm8";
18 };
19 bookmarks = buildApp rec {
20 appName = "bookmarks";
21 version = "0.14.3";
22 url = "https://github.com/nextcloud/${appName}/releases/download/v${version}/${appName}-${version}.tar.gz";
23 sha256 = "0s7lkcl70izlkihnml1par0cac0wvckllyyga3jkb7k9vdg7d40c";
24 };
25 calendar = buildApp rec {
26 appName = "calendar";
27 version = "1.6.4";
28 url = "https://github.com/nextcloud/${appName}/releases/download/v${version}/${appName}.tar.gz";
29 sha256 = "00dijvcvy7snsjslfbyzvpp9anhms22zp1f0zkj89ln33jmana63";
30 };
31 contacts = buildApp rec {
32 appName = "contacts";
33 version = "3.0.0";
34 url = "https://github.com/nextcloud/${appName}/releases/download/v${version}/${appName}.tar.gz";
35 sha256 = "0fafy5kgzr5ldr3hxxxgmnw4y3qpjnv5ha1f1dlmqbc65s8frw7s";
36 };
37 deck = buildApp rec {
38 appName = "deck";
39 version = "0.5.2";
40 url = "https://github.com/nextcloud/${appName}/releases/download/v${version}/${appName}.tar.gz";
41 sha256 = "1kygzixxdkp3dbma009p3pw0fj8wgcqcv39n7pay78lh6zi3nic7";
42 };
43 files_markdown = buildApp rec {
44 appName = "files_markdown";
45 version = "2.0.5";
46 url = "https://github.com/icewind1991/${appName}/releases/download/v${version}/${appName}.tar.gz";
47 sha256 = "1dzvy4c6vff2qmkwqw13dx92xdkafaxgnipswjw44mh0ncc2n9ym";
48 };
49 gpxedit = buildApp rec {
50 appName = "gpxedit";
51 version = "0.0.10";
52 url = "https://gitlab.com/eneiluj/gpxedit-oc/wikis/uploads/33d187268c5f6f6a55350d656305701c/${appName}-${version}.tar.gz";
53 sha256 = "0ynpaxm0xhvcj8xax6rm1w0p6j57wbqidhi7bhn268n483gwl2sw";
54 };
55 gpxpod = buildApp rec {
56 appName = "gpxpod";
57 version = "3.0.0";
58 url = "https://gitlab.com/eneiluj/gpxpod-oc/-/archive/v${version}/${appName}-oc-v${version}.tar.gz";
59 sha256 = "0smpi4r3z7zfl1612fb30cwm1xmpiq95c81zzqiwzjf288iys74k";
60 };
61 keeweb = buildApp rec {
62 appName = "keeweb";
63 version = "0.4.0";
64 url = "https://github.com/jhass/nextcloud-keeweb/releases/download/v${version}/${appName}-${version}.tar.gz";
65 sha256 = "0453kkb0a8vfivmibpwpx4bvhyn64jhns6cdfjacmnvbm6d75nj1";
66 };
67 notes = buildApp rec {
68 appName = "notes";
69 version = "2.5.1";
70 url = "https://github.com/nextcloud/${appName}/releases/download/v${version}/${appName}.tar.gz";
71 sha256 = "1albzqqsdirzyw8vhvs7r0qm2wqp8vm9vmxm4crhncd85bk01hmh";
72 };
73 ocsms = buildApp rec {
74 appName = "ocsms";
75 version = "2.1.0";
76 url = "https://github.com/nextcloud/${appName}/releases/download/${version}/${appName}-${version}.tar.gz";
77 sha256 = "19xgs82js4sdf6j9478vg9li7za7csvcaa1hbq9nmrq441sbxk9c";
78 installPhase = ''
79 sed -i -e "/addScript.*devel/d" -e "s@//\(.*addScript.*app.min\)@\1@" templates/main.php
80 mkdir -p $out
81 cp -R . $out/
82 '';
83 };
84 spreed = buildApp rec {
85 appName = "spreed";
86 version = "5.0.0";
87 url = "https://github.com/nextcloud/${appName}/releases/download/v${version}/${appName}-${version}.tar.gz";
88 sha256 = "1d48mak1fnf1b28r2687yqamm4pxfg3qyxcj9ny31a6xg2cm0xa7";
89 };
90 tasks = buildApp rec {
91 appName = "tasks";
92 version = "0.9.8";
93 url = "https://github.com/nextcloud/${appName}/releases/download/v${version}/${appName}.tar.gz";
94 sha256 = "089m124lfsfk09fqj50x9n7zndq97jp5afgb8s001rpmzym4g6ny";
95 };
96 };
97 in rec {
98 varDir = "/var/lib/nextcloud";
99 config_php = writeText "config.php" ''
100 <?php
101 $CONFIG = array (
102 'instanceid' => '${env.instance_id}',
103 'datadirectory' => '/var/lib/nextcloud/',
104 'passwordsalt' => '${env.password_salt}',
105 'debug' => false,
106 'dbtype' => 'pgsql',
107 'version' => '15.0.0.10',
108 'dbname' => '${env.postgresql.database}',
109 'dbhost' => '${env.postgresql.socket}',
110 'dbtableprefix' => 'oc_',
111 'dbuser' => '${env.postgresql.user}',
112 'dbpassword' => '${env.postgresql.password}',
113 'installed' => true,
114 'maxZipInputSize' => 0,
115 'allowZipDownload' => true,
116 'forcessl' => true,
117 'theme' => ${"''"},
118 'maintenance' => false,
119 'trusted_domains' =>
120 array (
121 0 => 'cloud.immae.eu',
122 ),
123 'secret' => '${env.secret}',
124 'appstoreenabled' => false,
125 'appstore.experimental.enabled' => true,
126 'loglevel' => 0,
127 'trashbin_retention_obligation' => 'auto',
128 'htaccess.RewriteBase' => '/',
129 'mail_smtpmode' => 'smtp',
130 'mail_smtphost' => 'mail.immae.eu',
131 'mail_smtpname' => ${"''"},
132 'mail_smtppassword' => ${"''"},
133 'mail_from_address' => 'owncloud',
134 'mail_smtpauth' => false,
135 'mail_domain' => 'immae.eu',
136 'memcache.local' => '\\OC\\Memcache\\APCu',
137 'memcache.locking' => '\\OC\\Memcache\\Redis',
138 'filelocking.enabled' => true,
139 'redis' =>
140 array (
141 'host' => '${env.redis.socket}',
142 'port' => 0,
143 'dbindex' => ${env.redis.db_index},
144 ),
145 'overwrite.cli.url' => 'https://cloud.immae.eu',
146 'ldapIgnoreNamingRules' => false,
147 'ldapProviderFactory' => '\\OCA\\User_LDAP\\LDAPProviderFactory',
148 'config_is_read_only' => true,
149 );
150 '';
151 config = stdenv.mkDerivation rec {
152 name = "nextcloud-config";
153 src = ./nextcloud-config;
154 phases = "installPhase";
155 installPhase = ''
156 mkdir -p $out
157 cp -r $src/* $out
158 cp ${config_php} $out/config.php
159 '';
160 };
161 webRoot = stdenv.mkDerivation rec {
162 name = "nextcloud-${version}";
163 version = "15.0.0";
164
165 src = fetchurl {
166 url = "https://download.nextcloud.com/server/releases/${name}.tar.bz2";
167 sha256 = "0y7bk1588n5rmmranmmrkajh50074460hr4v052ahg9mf60wbc2v";
168 };
169
170 installPhase = ''
171 mkdir -p $out/
172 cp -R . $out/
173 rm -r $out/config
174 ln -sf ${config} $out/config
175 ${builtins.concatStringsSep "\n" (
176 lib.attrsets.mapAttrsToList (name: value: "ln -sf ${value} $out/apps/${name}") apps
177 )}
178 '';
179
180 meta = {
181 description = "Sharing solution for files, calendars, contacts and more";
182 homepage = https://nextcloud.com;
183 maintainers = with lib.maintainers; [ schneefux bachp globin fpletz ];
184 license = lib.licenses.agpl3Plus;
185 platforms = with lib.platforms; unix;
186 };
187 };
188 activationScript = {
189 deps = [ ];
190 text = ''
191 install -m 0755 -o ${apache.user} -g ${apache.group} -d ${varDir}
192 install -m 0750 -o ${apache.user} -g ${apache.group} -d ${varDir}/phpSessions
193 '';
194 };
195 apache = {
196 user = "wwwrun";
197 group = "wwwrun";
198 modules = [ "proxy_fcgi" ];
199 vhostConf = ''
200 SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1
201 <Directory ${webRoot}>
202 AcceptPathInfo On
203 DirectoryIndex index.php
204 Options FollowSymlinks
205 Require all granted
206 AllowOverride all
207
208 <IfModule mod_headers.c>
209 Header always set Strict-Transport-Security "max-age=15552000; includeSubDomains; preload"
210 </IfModule>
211 <FilesMatch "\.php$">
212 CGIPassAuth on
213 SetHandler "proxy:unix:${phpFpm.socket}|fcgi://localhost"
214 </FilesMatch>
215
216 </Directory>
217
218 '';
219 };
220 phpFpm = rec {
221 basedir = builtins.concatStringsSep ":" (
222 [ webRoot varDir config ]
223 ++ lib.attrsets.mapAttrsToList (name: value: value) apps);
224 socket = "/var/run/phpfpm/nextcloud.sock";
225 phpConfig = ''
226 extension=${phpPackages.redis}/lib/php/extensions/redis.so
227 extension=${phpPackages.apcu}/lib/php/extensions/apcu.so
228 zend_extension=${php}/lib/php/extensions/opcache.so
229 '';
230 pool = ''
231 listen = ${socket}
232 user = ${apache.user}
233 group = ${apache.group}
234 listen.owner = ${apache.user}
235 listen.group = ${apache.group}
236 pm = ondemand
237 pm.max_children = 60
238 pm.process_idle_timeout = 60
239
240 php_admin_value[output_buffering] = 0
241 php_admin_value[max_execution_time] = 1800
242 php_admin_value[zend_extension] = "opcache"
243 php_value[opcache.enable] = 1
244 php_value[opcache.enable_cli] = 1
245 php_value[opcache.interned_strings_buffer] = 8
246 php_value[opcache.max_accelerated_files] = 10000
247 php_value[opcache.memory_consumption] = 128
248 php_value[opcache.save_comments] = 1
249 php_value[opcache.revalidate_freq] = 1
250 php_admin_value[memory_limit] = 512M
251
252 php_admin_value[open_basedir] = "${basedir}:/proc/meminfo:/dev/urandom:/proc/self/fd:/tmp"
253 php_admin_value[session.save_path] = "${varDir}/phpSessions"
254 '';
255 };
256 };
257in
258 nextcloud
diff --git a/virtual/modules/websites/tools/dav/davical.nix b/virtual/modules/websites/tools/dav/davical.nix
deleted file mode 100644
index 4d0639f..0000000
--- a/virtual/modules/websites/tools/dav/davical.nix
+++ /dev/null
@@ -1,160 +0,0 @@
1{ stdenv, fetchurl, gettext, writeText, env }:
2let
3 awl = stdenv.mkDerivation rec {
4 version = "0.59";
5 name = "awl-${version}";
6 src = fetchurl {
7 url = "https://www.davical.org/downloads/awl_${version}.orig.tar.xz";
8 sha256 = "01b7km7ga3ggbpp8axkc55nizgk5c35fl2z93iydb3hwbxmsvnjp";
9 };
10 unpackCmd = ''
11 tar --one-top-level -xf $curSrc
12 '';
13 installPhase = ''
14 mkdir -p $out
15 cp -ra dba docs inc scripts tests $out
16 '';
17 };
18 davical = rec {
19 config = writeText "davical_config.php" ''
20 <?php
21 $c->pg_connect[] = "dbname=davical user=davical_app host=db-1.immae.eu password=${env.postgresql.password}";
22
23 $c->readonly_webdav_collections = false;
24
25 $c->admin_email ='davical@immae.eu';
26
27 $c->restrict_setup_to_admin = true;
28
29 $c->collections_always_exist = false;
30
31 $c->external_refresh = 60;
32
33 $c->enable_scheduling = true;
34
35 $c->iMIP = (object) array("send_email" => true);
36
37 $c->authenticate_hook['optional'] = false;
38 $c->authenticate_hook['call'] = 'LDAP_check';
39 $c->authenticate_hook['config'] = array(
40 'host' => 'ldap.immae.eu',
41 'port' => '389',
42 'startTLS' => 'yes',
43 'bindDN'=> 'cn=davical,ou=services,dc=immae,dc=eu',
44 'passDN'=> '${env.ldap.password}',
45 'protocolVersion' => '3',
46 'baseDNUsers'=> array('ou=users,dc=immae,dc=eu', 'ou=group_users,dc=immae,dc=eu'),
47 'filterUsers' => 'memberOf=cn=users,cn=davical,ou=services,dc=immae,dc=eu',
48 'baseDNGroups' => 'ou=groups,dc=immae,dc=eu',
49 'filterGroups' => 'memberOf=cn=groups,cn=davical,ou=services,dc=immae,dc=eu',
50 'mapping_field' => array(
51 "username" => "uid",
52 "fullname" => "cn",
53 "email" => "mail",
54 "modified" => "modifyTimestamp",
55 ),
56 'format_updated'=> array('Y' => array(0,4),'m' => array(4,2),'d'=> array(6,2),'H' => array(8,2),'M'=>array(10,2),'S' => array(12,2)),
57 /** used to set default value for all users, will be overcharged by ldap if defined also in mapping_field **/
58 // 'default_value' => array("date_format_type" => "E","locale" => "fr_FR"),
59 'group_mapping_field' => array(
60 "username" => "cn",
61 "updated" => "modifyTimestamp",
62 "fullname" => "givenName",
63 "displayname" => "givenName",
64 "members" => "memberUid",
65 "email" => "mail",
66 ),
67 );
68
69 $c->do_not_sync_from_ldap = array('admin' => true);
70 include('drivers_ldap.php');
71 '';
72 webapp = stdenv.mkDerivation rec {
73 version = "1.1.7";
74 name = "davical-${version}";
75 src = fetchurl {
76 url = "https://www.davical.org/downloads/davical_${version}.orig.tar.xz";
77 sha256 = "1ar5m2dxr92b204wkdi8z33ir9vz2jbh5k1p74icpv9ywifvjjp9";
78 };
79 unpackCmd = ''
80 tar --one-top-level -xf $curSrc
81 '';
82 makeFlags = "all";
83 patches = [ ./davical_19eb79ebf9250e5f339675319902458c40ed1755.patch ];
84 installPhase = ''
85 mkdir -p $out
86 cp -ra config dba docs htdocs inc locale po scripts testing zonedb $out
87 ln -s ${config} $out/config/config.php
88 '';
89 buildInputs = [ gettext ];
90 };
91 webRoot = "${webapp}/htdocs";
92 apache = {
93 user = "wwwrun";
94 group = "wwwrun";
95 modules = [ "proxy_fcgi" ];
96 vhostConf = ''
97 Alias /davical "${webRoot}"
98 Alias /caldav.php "${webRoot}/caldav.php"
99 <Directory "${webRoot}">
100 DirectoryIndex index.php index.html
101 AcceptPathInfo On
102 AllowOverride None
103 Require all granted
104
105 <FilesMatch "\.php$">
106 CGIPassAuth on
107 SetHandler "proxy:unix:${phpFpm.socket}|fcgi://localhost"
108 </FilesMatch>
109
110 RewriteEngine On
111 <IfModule mod_headers.c>
112 Header unset Access-Control-Allow-Origin
113 Header unset Access-Control-Allow-Methods
114 Header unset Access-Control-Allow-Headers
115 Header unset Access-Control-Allow-Credentials
116 Header unset Access-Control-Expose-Headers
117
118 Header always set Access-Control-Allow-Origin "*"
119 Header always set Access-Control-Allow-Methods "GET,POST,OPTIONS,PROPFIND,PROPPATCH,REPORT,PUT,MOVE,DELETE,LOCK,UNLOCK"
120 Header always set Access-Control-Allow-Headers "User-Agent,Authorization,Content-type,Depth,If-match,If-None-Match,Lock-Token,Timeout,Destination,Overwrite,Prefer,X-client,X-Requested-With"
121 Header always set Access-Control-Allow-Credentials false
122 Header always set Access-Control-Expose-Headers "Etag,Preference-Applied"
123
124 RewriteCond %{HTTP:Access-Control-Request-Method} !^$
125 RewriteCond %{REQUEST_METHOD} OPTIONS
126 RewriteRule ^(.*)$ $1 [R=200,L]
127 </IfModule>
128 </Directory>
129 '';
130 };
131 phpFpm = rec {
132 basedir = builtins.concatStringsSep ":" [ webapp config awl ];
133 socket = "/var/run/phpfpm/davical.sock";
134 pool = ''
135 listen = ${socket}
136 user = ${apache.user}
137 group = ${apache.group}
138 listen.owner = ${apache.user}
139 listen.group = ${apache.group}
140 pm = dynamic
141 pm.max_children = 60
142 pm.start_servers = 2
143 pm.min_spare_servers = 1
144 pm.max_spare_servers = 10
145
146 ; Needed to avoid clashes in browser cookies (same domain)
147 php_value[session.name] = DavicalPHPSESSID
148 php_admin_value[open_basedir] = "${basedir}:/tmp"
149 php_admin_value[include_path] = "${awl}/inc:${webapp}/inc"
150 php_admin_value[session.save_path] = "/var/lib/php/sessions/davical"
151 php_flag[magic_quotes_gpc] = Off
152 php_flag[register_globals] = Off
153 php_admin_value[error_reporting] = "E_ALL & ~E_NOTICE"
154 php_admin_value[default_charset] = "utf-8"
155 php_flag[magic_quotes_runtime] = Off
156 '';
157 };
158 };
159in
160 davical
diff --git a/virtual/modules/websites/tools/dav/davical_19eb79ebf9250e5f339675319902458c40ed1755.patch b/virtual/modules/websites/tools/dav/davical_19eb79ebf9250e5f339675319902458c40ed1755.patch
deleted file mode 100644
index 2a08a5c..0000000
--- a/virtual/modules/websites/tools/dav/davical_19eb79ebf9250e5f339675319902458c40ed1755.patch
+++ /dev/null
@@ -1,26 +0,0 @@
1diff --git a/inc/ui/collection-edit.php b/inc/ui/collection-edit.php
2index 3af9edd3b8c4ad9074113273175098841af6a28e..8c1d84012b035f7bc7faedcb24916581a02a5d3e 100644
3--- a/inc/ui/collection-edit.php
4+++ b/inc/ui/collection-edit.php
5@@ -190,7 +190,7 @@ $privilege_xlate = array(
6 * @param dbrow $row The row object we read from the database.
7 * @return string The formatted privileges.
8 */
9-function collection_privilege_format_function( $value, $column, $row ) {
10+function collection_privilege_format_function( $value, $column = NULL, $row = NULL ) {
11 global $privilege_xlate;
12
13 $privs = bits_to_privilege($value, 'calendar');
14diff --git a/inc/ui/principal-edit.php b/inc/ui/principal-edit.php
15index 20dee7fa4ca2235ff2f74be0dfb52cbe937ef822..2e37cd596b597bcce1e59d7c02a1c5fc2a7f88ce 100644
16--- a/inc/ui/principal-edit.php
17+++ b/inc/ui/principal-edit.php
18@@ -454,7 +454,7 @@ EOTEMPLATE;
19 * @param dbrow $row The row object we read from the database.
20 * @return string The formatted privileges.
21 */
22-function principal_privilege_format_function( $value, $column, $row ) {
23+function principal_privilege_format_function( $value, $column = NULL, $row = NULL ) {
24 global $privilege_xlate;
25
26 $privs = bits_to_privilege($value,'*');
diff --git a/virtual/modules/websites/tools/dav/default.nix b/virtual/modules/websites/tools/dav/default.nix
deleted file mode 100644
index ef9735e..0000000
--- a/virtual/modules/websites/tools/dav/default.nix
+++ /dev/null
@@ -1,35 +0,0 @@
1{ lib, pkgs, config, myconfig, mylibs, ... }:
2let
3 infcloud = pkgs.callPackage ./infcloud.nix {};
4 davical = pkgs.callPackage ./davical.nix {
5 env = myconfig.env.tools.davical;
6 };
7
8 cfg = config.services.myWebsites.tools.dav;
9in {
10 options.services.myWebsites.tools.dav = {
11 enable = lib.mkEnableOption "enable dav website";
12 };
13
14 config = lib.mkIf cfg.enable {
15 security.acme.certs."eldiron".extraDomains."dav.immae.eu" = null;
16
17 services.myWebsites.tools.modules = davical.apache.modules;
18
19 services.myWebsites.tools.vhostConfs.dav = {
20 certName = "eldiron";
21 hosts = ["dav.immae.eu" ];
22 root = null;
23 extraConfig = [
24 infcloud.apache.vhostConf
25 davical.apache.vhostConf
26 ];
27 };
28
29 services.myPhpfpm.poolConfigs = {
30 davical = davical.phpFpm.pool;
31 };
32
33 };
34}
35
diff --git a/virtual/modules/websites/tools/dav/infcloud.nix b/virtual/modules/websites/tools/dav/infcloud.nix
deleted file mode 100644
index 876578b..0000000
--- a/virtual/modules/websites/tools/dav/infcloud.nix
+++ /dev/null
@@ -1,38 +0,0 @@
1{ stdenv, fetchzip, ed }:
2let
3 infcloud = rec {
4 webRoot = stdenv.mkDerivation rec {
5 version = "0.13.1";
6 name = "InfCloud-${version}";
7 src = fetchzip {
8 url = "https://www.inf-it.com/InfCloud_${version}.zip";
9 sha256 = "1fjhs0cj0b9fhf5ysfz281mknmmg1z551bas143sxfcqlpa5aiiq";
10 };
11 buildPhase = ''
12 ./cache_update.sh
13 rm config.js
14 '';
15 installPhase = ''
16 cp -a . $out
17 ln -s ${./infcloud_config.js} $out/config.js
18 '';
19 buildInputs = [ ed ];
20 };
21 apache = {
22 user = "wwwrun";
23 group = "wwwrun";
24 vhostConf = ''
25 Alias /carddavmate ${webRoot}
26 Alias /caldavzap ${webRoot}
27 Alias /infcloud ${webRoot}
28 <Directory ${webRoot}>
29 AllowOverride All
30 Options FollowSymlinks
31 Require all granted
32 DirectoryIndex index.html
33 </Directory>
34 '';
35 };
36 };
37in
38 infcloud
diff --git a/virtual/modules/websites/tools/dav/infcloud_config.js b/virtual/modules/websites/tools/dav/infcloud_config.js
deleted file mode 100644
index ba73860..0000000
--- a/virtual/modules/websites/tools/dav/infcloud_config.js
+++ /dev/null
@@ -1,1446 +0,0 @@
1/*
2InfCloud - the open source CalDAV/CardDAV Web Client
3Copyright (C) 2011-2015
4 Jan Mate <jan.mate@inf-it.com>
5 Andrej Lezo <andrej.lezo@inf-it.com>
6 Matej Mihalik <matej.mihalik@inf-it.com>
7
8This program is free software: you can redistribute it and/or modify
9it under the terms of the GNU Affero General Public License as
10published by the Free Software Foundation, either version 3 of the
11License, or (at your option) any later version.
12
13This program is distributed in the hope that it will be useful,
14but WITHOUT ANY WARRANTY; without even the implied warranty of
15MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16GNU Affero General Public License for more details.
17
18You should have received a copy of the GNU Affero General Public License
19along with this program. If not, see <http://www.gnu.org/licenses/>.
20*/
21
22
23// NOTE: see readme.txt before you start to configure this client!
24
25
26// NOTE: do not forget to execute the cache_update.sh script every time you
27// update this configuration file or any other files (otherwise your browser
28// will use the previous version of files stored in HTML5 cache). Alternatively
29// you can update the cache.manifest manually - edit the second line beginning
30// with "#V 20" to anything else (this file simple needs "some" change)
31
32
33// Supported setup types (use ONE of them):
34// a.) globalAccountSettings => username and password is hardcoded
35// in config.js, automatic login without the login screen
36// - advantages: fast login process = no username/password is required
37// - disadvantages: username/password is visible in your config.js, so
38// this type of setup is recommended ONLY for intranet/home users
39// b.) globalNetworkCheckSettings => standard setup with login screen
40// - advantages: username/password is required (no visible
41// username/password in config.js)
42// - disadvantages: if a user enters wrong username/password then
43// the browser will show authentication popup window (it is NOT
44// possible to disable it in JavaScript; see the next option)
45// c.) globalNetworkAccountSettings => advanced setup with login screen
46// - advantages: no authentication popup if you enter wrong username/
47// password, dynamic XML configuration generator (you can generate
48// different configurations for your users /by modifying the "auth"
49// module configuration or the PHP code itself/)
50// - disadvantages: requires PHP >= 5.3 and additional configuration,
51// only basic http authentication is supported => always use https!
52//
53//
54// What is a "principal URL"? => Check you server documentation!
55// - "principal URL" is NOT "collection URL"
56// - this client automatically detects collections for "principal URL"
57// - PROPER "principal URL" looks like:
58// https://server.com:8443/principals/users/USER/
59// https://server.com:8443/caldav.php/USER/
60// - INVALID principal URL looks like:
61// https://server.com:8443/principals/users/USER/collection/
62// => this is a collection URL
63// https://server.com:8443/caldav.php/USER/collection/
64// => this is a collection URL
65// https://server.com:8443/principals/users/USER
66// => missing trailing '/'
67// https://server.com:8443/caldav.php/USER
68// => missing trailing '/'
69// /caldav.php/USER/
70// => relative URL instead of full URL
71//
72//
73// List of properties used in globalAccountSettings, globalNetworkCheckSettings
74// and globalNetworkAccountSettings variables (+ in the "auth" module):
75// - href
76// Depending on the setup type set the value to:
77// a.) globalAccountSettings: full "principal URL"
78// b.) globalNetworkCheckSettings: "principal URL" WITHOUT the "USER/" part
79// c.) globalNetworkAccountSettings: "full URL" to the "auth" directory
80// This property is supported in:
81// globalAccountSettings
82// globalNetworkCheckSettings
83// globalNetworkAccountSettings
84// - userAuth
85// - userName
86// Set the username you want to login.
87// - userPassword
88// Set the password for the given username.
89// This property is supported in:
90// globalAccountSettings
91// - timeOut
92// This option sets the timeout for jQuery .ajax call (in miliseconds).
93// Example:
94// timeOut: 90000
95// This property is supported in:
96// globalAccountSettings
97// globalNetworkCheckSettings
98// globalNetworkAccountSettings
99// - lockTimeOut
100// NOTE: used only if server supports LOCK requests
101// This option sets the LOCK timeout value if resource locking
102// is used (in miliseconds).
103// Example:
104// lockTimeOut: 10000
105// This property is supported in:
106// globalAccountSettings
107// globalNetworkCheckSettings
108// globalNetworkAccountSettings (available in auth module only)
109// - checkContentType
110// This option enables a content-type checking for server response.
111// If enabled then only objects with proper content-type are inserted
112// into the interface.
113// If you cannot see data in the interface you may try to disable it (useful
114// if your server returns wrong value in "propstat/prop/getcontenttype").
115// If undefined then content-type checking is enabled.
116// Examples:
117// checkContentType: true
118// checkContentType: false
119// This property is supported in:
120// globalAccountSettings
121// globalNetworkCheckSettings
122// globalNetworkAccountSettings (available in auth module only)
123// - settingsAccount
124// NOTE: server support for custom DAV properties is REQUIRED!
125// This option sets the account where the client properties such as:
126// loaded collections, enabled collections, ... are saved during
127// the logout and resource/collection synchronisation
128// NOTE: set it to true ONLY for ONE account!
129// Examples:
130// settingsAccount: true
131// settingsAccount: false
132// This property is supported in:
133// globalAccountSettings
134// globalNetworkCheckSettings
135// globalNetworkAccountSettings (available in auth module only)
136// - delegation
137// NOTE: server support for this functionality is REQUIRED!
138// This option allows you to load delegated (shared) collections.
139// If set to true (default) then delegation functionality is enabled,
140// and the interface allows you to load delegated collections.
141// If false then delegation functionality is completely disabled.
142// Examples:
143// delegation: true
144// delegation: false
145// This property is supported in:
146// globalAccountSettings
147// globalNetworkCheckSettings
148// globalNetworkAccountSettings (available in auth module only)
149// - additionalResources
150// This options sets the list of additional resources (e.g. shared resources
151// accessible by all users). If the server supports delegation (see
152// the delegation option above) there is no reason to use this option!
153// Supported values:
154// - array of URL encoded resource names (not collections), such as:
155// 'company'
156// 'shared_resource'
157// If empty (default) or undefined then shared resources are not loaded
158// using this option, but may be loaded using the delegation option.
159// Examples:
160// additionalResources=[]
161// additionalResources=['public', 'shared_resource']
162// This property is supported in:
163// globalNetworkCheckSettings
164// - hrefLabel
165// This option sets the server name in the resource header (useful if
166// you want to see custom resource header above the collections).
167// You can use the following variables in the value:
168// %H = full hostname (including the port number)
169// %h = full hostname (without the port number)
170// %D = full domain name
171// %d = only the first and second level domain
172// %P = principal name
173// %p = principal name without the @domain.com part (if present)
174// %U = logged user name
175// %u = logged user name without the @domain.com part (if present)
176// If undefined, empty or or null then '%d/%p [%u]' is used.
177// Examples:
178// hrefLabel: '%d/%p [%u]'
179// hrefLabel: '%D/%u'
180// This property is supported in:
181// globalAccountSettings
182// globalNetworkCheckSettings
183// globalNetworkAccountSettings (available in auth module only)
184// - forceReadOnly
185// This option sets the list of collections as "read-only".
186// Supported values:
187// - true
188// all collections will be "read-only"
189// - array of URL encoded
190// - collections, such as:
191// '/caldav.php/user/calendar/'
192// '/caldav.php/user%40domain.com/calendar/'
193// - regexes, such as:
194// new RegExp('^/caldav.php/user/calendar[0-9]/$', 'i')
195// specifies the list of collections marked as "read-only"
196// If null (default) or undefined then server detected privileges are used.
197// Examples:
198// forceReadOnly: null
199// forceReadOnly: true
200// forceReadOnly: ['/caldav.php/user/calendar/',
201// '/caldav.php/user/calendar2/']
202// forceReadOnly: [new RegExp('^/.*/user/calendar[0-9]/$', 'i')]
203// This property is supported in:
204// globalAccountSettings
205// globalNetworkCheckSettings
206// globalNetworkAccountSettings (available in auth module only, with
207// different syntax for regexes)
208// - ignoreAlarms
209// This option sets list of calendar collections with disabled
210// alarm functionality.
211// Supported values:
212// - true
213// alarm functionality is disabled for all collections
214// - array of URL encoded
215// - collections, such as:
216// '/caldav.php/user/calendar/'
217// '/caldav.php/user%40domain.com/calendar/'
218// - regexes, such as:
219// new RegExp('^/caldav.php/user/calendar[0-9]/$', 'i')
220// specifies the list of collections with disabled alarm functionality.
221// If false (default) or undefined then alarm functionality is enabled
222// for all collections.
223// Examples:
224// ignoreAlarms: true
225// ignoreAlarms: ['/caldav.php/user/calendar/',
226// '/caldav.php/user/calendar2/']
227// ignoreAlarms: [new RegExp('^/.*/user/calendar[0-9]/$', 'i')]
228// This property is supported in:
229// globalAccountSettings
230// globalNetworkCheckSettings
231// globalNetworkAccountSettings (available in auth module only, with
232// different syntax for regexes)
233// - backgroundCalendars
234// This options defines a list of background calendars. If there is
235// at least one event defined for the given day in a background calendar,
236// the background color for that day will be pink/light-red.
237// Supported values:
238// - array of URL encoded
239// - collections, such as:
240// '/caldav.php/user/calendar/'
241// '/caldav.php/user%40domain.com/calendar/'
242// - regexes, such as:
243// new RegExp('^/caldav.php/user/calendar[0-9]/$', 'i')
244// specifies the list of background calendar collections.
245// Examples:
246// backgroundCalendars: ['/caldav.php/user/calendar/',
247// '/caldav.php/user/calendar2/']
248// backgroundCalendars: [new RegExp('^/.*/user/calendar[0-9]/$', 'i')]
249// This property is supported in:
250// globalAccountSettings
251// globalNetworkCheckSettings
252// globalNetworkAccountSettings (available in auth module only, with
253// different syntax for regexes)
254// Special options not present in configuration examples:
255// NOTE: use ONLY if you know what are you doing!
256// - crossDomain
257// This option sets the crossDomain for jQuery .ajax call. If null (default)
258// then the value is autodetected /and the result is shown in the console/
259// - withCredentials
260// This option sets the withCredentials for jQuery .ajax call. The default
261// value is false and there is NO REASON to change it to true!
262// NOTE: if true, Access-Control-Allow-Origin "*" (CORS header) not works!
263
264
265// globalAccountSettings
266// Use this option if you want to use automatic login (without a login
267// screen) with hardcoded username/password in config.js. Otherwise use
268// globalNetworkCheckSettings or globalNetworkAccountSettings (see below).
269// NOTE: if this option is used the value must be an array of object(s).
270// List of properties used in globalAccountSettings variable:
271// - href
272// Set this option to the full "principal URL".
273// NOTE: the last character in the value must be '/'
274// - userAuth
275// - userName
276// Set the username you want to login.
277// - userPassword
278// Set the password for the given username.
279// NOTE: for description of other properties see comments at the beginning
280// of this file.
281// NOTE: for minimal/fast setup you need to set only the href and userAuth
282// options. It is safe/recommended to keep the remaining options unchanged!
283// Example:
284//var globalAccountSettings=[
285// {
286// href: 'https://server1.com:8443/caldav.php/USERNAME1/',
287// userAuth:
288// {
289// userName: 'USERNAME1',
290// userPassword: 'PASSWORD1'
291// },
292// timeOut: 90000,
293// lockTimeOut: 10000,
294// checkContentType: true,
295// settingsAccount: true,
296// delegation: true,
297// hrefLabel: null,
298// forceReadOnly: null,
299// ignoreAlarms: false,
300// backgroundCalendars: []
301// },
302// {
303// href: 'https://server2.com:8443/caldav.php/USERNAME2/',
304// ...
305// ...
306// }
307//];
308
309
310// globalNetworkCheckSettings
311// Use this option if you want to use standard login screen without
312// hardcoded username/password in config.js (used by globalAccountSettings).
313// NOTE: if this option is used the value must be an object.
314// List of properties used in globalAccountSettings variable:
315// - href
316// Set this option to the "principal URL" WITHOUT the "USERNAME/"
317// part (this options uses the username from the login screen).
318// NOTE: the last character in the value must be '/'
319// NOTE: for description of other properties see comments at the beginning
320// of this file.
321// NOTE: for minimal/fast setup you need to set only the href option. It is
322// safe/recommended to keep the remaining options unchanged!
323// Example href values:
324// OS X server http example (see misc/readme_osx.txt for server setup):
325// href: 'http://osx.server.com:8008/principals/users/'
326// OS X server https example (see misc/readme_osx.txt for server setup):
327// href: 'https://osx.server.com:8443/principals/users/'
328// Cyrus server https example:
329// href: 'https://cyrus.server.com/dav/principals/user/'
330// Example:
331// Davical example which automatically detects the protocol, server name,
332// port, ... (client installed into Davical "htdocs" subdirectory;
333// works "out of the box", no additional setup required):
334var globalNetworkCheckSettings={
335 href: location.protocol+'//'+location.hostname+
336 (location.port ? ':'+location.port: '')+
337 location.pathname.replace(RegExp('/+[^/]+/*(index\.html)?$'),'')+
338 '/caldav.php/',
339 timeOut: 90000,
340 lockTimeOut: 10000,
341 checkContentType: true,
342 settingsAccount: true,
343 delegation: true,
344 additionalResources: [],
345 hrefLabel: null,
346 forceReadOnly: null,
347 ignoreAlarms: false,
348 backgroundCalendars: []
349}
350
351
352// globalNetworkAccountSettings
353// Try this option ONLY if you have working setup using
354// globalNetworkCheckSettings and want to fix the authentication popup
355// window problem (if invalid username/password is entered)!
356// If you use this option then your browser sends username/password to the PHP
357// "auth" module ("auth" directory) instead of the DAV server itself.
358// The "auth" module then validates your username/password against your server,
359// and if the authentication is successful, then it sends back a configuration
360// XML (requires additional configuration). The resulting XML is handled
361// IDENTICALLY as the globalAccountSettings configuration option.
362// NOTE: for the "auth" module configuration see readme.txt!
363// NOTE: this option invokes a login screen and disallows access until
364// the client gets correct XML configuration file from the server!
365// List of properties used in globalNetworkAccountSettings variable:
366// - href
367// Set this option to the "full URL" of the "auth" directory
368// NOTE: the last character in the value must be '/'
369// NOTE: for description of other properties see comments at the beginning
370// of this file.
371// Example href values:
372// href: 'https://server.com/client/auth/'
373// Example:
374// Use this configuration if the "auth" module is located in the client
375// installation subdirectory (default):
376//var globalNetworkAccountSettings={
377// href: location.protocol+'//'+location.hostname+
378// (location.port ? ':'+location.port : '')+
379// location.pathname.replace(RegExp('index\.html$'),'')+
380// 'auth/',
381// timeOut: 30000
382//};
383
384
385// globalUseJqueryAuth
386// Use jQuery .ajax() auth or custom header for HTTP basic auth (default).
387// Set this option to true if your server uses digest auth (note: you may
388// experience auth popups on some browsers).
389// If undefined (or empty), custom header for HTTP basic auth is used.
390// Example:
391//var globalUseJqueryAuth=false;
392
393
394// globalBackgroundSync
395// Enable background synchronization even if the browser window/tab has no
396// focus.
397// If false, synchronization is performed only if the browser window/tab
398// is focused. If undefined or not false, then background sync is enabled.
399// Example:
400var globalBackgroundSync=true;
401
402
403// globalSyncResourcesInterval
404// This option defines how often (in miliseconds) are resources/collections
405// asynchronously synchronized.
406// Example:
407var globalSyncResourcesInterval=120000;
408
409
410// globalEnableRefresh
411// This option enables or disables the manual synchronization button in
412// the interface. If this option is enabled then users can perform server
413// synchronization manually. Enabling this option may cause high server
414// load (even DDOS) if users will try to manually synchronize data too
415// often (instead of waiting for the automatic synchronization).
416// If undefined or false, the synchronization button is disabled.
417// NOTE: enable this option only if you really know what are you doing!
418// Example:
419var globalEnableRefresh=false;
420
421
422// globalEnableKbNavigation
423// Enable basic keyboard navigation using arrow keys?
424// If undefined or not false, keyboard navigation is enabled.
425// Example:
426var globalEnableKbNavigation=true;
427
428
429// globalSettingsType
430// Where to store user settings such as: active view, enabled/selected
431// collections, ... (the client store them into DAV property on the server).
432// NOTE: not all servers support storing DAV properties (some servers support
433// only subset /or none/ of these URLs).
434// Supported values:
435// - 'principal-URL', '', null or undefined (default) => settings are stored
436// to principal-URL (recommended for most servers)
437// - 'addressbook-home-set' => settings are are stored to addressbook-home-set
438// - 'calendar-home-set' => settings are stored to calendar-home-set
439// Example:
440//var globalSettingsType='';
441
442
443// globalCrossServerSettingsURL
444// Settings such as enabled/selected collections are stored on the server
445// (see the previous option) in form of full URL
446// (e.g.: https://user@server:port/principal/collection/), but even if this
447// approach is "correct" (you can use the same principal URL with multiple
448// different logins, ...) it causes a problem if your server is accessible
449// from multiple URLs (e.g. http://server/ and https://server/). If you want
450// to store only the "principal/collection/" part of the URL (instead of the
451// full URL) then enable this option.
452// Example:
453//var globalCrossServerSettingsURL=false;
454
455
456// globalInterfaceLanguage
457// Default interface language (note: this option is case sensitive):
458// cs_CZ (Čeština [Czech])
459// da_DK (Dansk [Danish]; thanks Niels Bo Andersen)
460// de_DE (Deutsch [German]; thanks Marten Gajda and Thomas Scheel)
461// en_US (English [English/US])
462// es_ES (Español [Spanish]; thanks Damián Vila)
463// fr_FR (Français [French]; thanks John Fischer)
464// it_IT (Italiano [Italian]; thanks Luca Ferrario)
465// ja_JP (日本語 [Japan]; thanks Muimu Nakayama)
466// hu_HU (Magyar [Hungarian])
467// nl_NL (Nederlands [Dutch]; thanks Johan Vromans)
468// sk_SK (Slovenčina [Slovak])
469// tr_TR (Türkçe [Turkish]; thanks Selcuk Pultar)
470// ru_RU (Русский [Russian]; thanks Александр Симонов)
471// uk_UA (Українська [Ukrainian]; thanks Serge Yakimchuck)
472// zh_CN (中国 [Chinese]; thanks Fandy)
473// Example:
474var globalInterfaceLanguage='fr_FR';
475
476
477// globalInterfaceCustomLanguages
478// If defined and not empty then only languages listed here are shown
479// at the login screen, otherwise (default) all languages are shown
480// NOTE: values in the array must refer to an existing localization
481// (see the option above)
482// Example:
483// globalInterfaceCustomLanguages=['en_US', 'sk_SK'];
484var globalInterfaceCustomLanguages=[];
485
486
487// globalSortAlphabet
488// Use JavaScript localeCompare() or custom alphabet for data sorting.
489// Custom alphabet is used by default because JavaScript localeCompare()
490// not supports collation and often returns "wrong" result. If set to null
491// then localeCompare() is used.
492// Example:
493// var globalSortAlphabet=null;
494var globalSortAlphabet=' 0123456789'+
495 'AÀÁÂÄÆÃÅĀBCÇĆČDĎEÈÉÊËĒĖĘĚFGĞHIÌÍÎİÏĪĮJKLŁĹĽMNŃÑŇOÒÓÔÖŐŒØÕŌ'+
496 'PQRŔŘSŚŠȘșŞşẞTŤȚțŢţUÙÚÛÜŰŮŪVWXYÝŸZŹŻŽ'+
497 'aàáâäæãåābcçćčdďeèéêëēėęěfgğhiìíîïīįıjklłĺľmnńñňoòóôöőœøõō'+
498 'pqrŕřsśšßtťuùúûüűůūvwxyýÿzźżžАБВГҐДЕЄЖЗИІЇЙКЛМНОПРСТУФХЦЧШЩЮЯ'+
499 'Ьабвгґдеєжзиіїйклмнопрстуфхцчшщюяь';
500
501
502// globalSearchTransformAlphabet
503// To support search without diacritics (e.g. search for 'd' will find: 'Ď', 'ď')
504// it is required to define something like "character equivalence".
505// key = regex text, value = search character
506// Example:
507var globalSearchTransformAlphabet={
508 '[ÀàÁáÂâÄäÆæÃãÅåĀā]': 'a', '[ÇçĆćČč]': 'c', '[Ďď]': 'd',
509 '[ÈèÉéÊêËëĒēĖėĘęĚě]': 'e', '[Ğğ]': 'g', '[ÌìÍíÎîİıÏïĪīĮį]': 'i',
510 '[ŁłĹ弾]': 'l', '[ŃńÑñŇň]': 'n', '[ÒòÓóÔôÖöŐőŒœØøÕõŌō]': 'o',
511 '[ŔŕŘř]': 'r', '[ŚśŠšȘșŞşẞß]': 's', '[ŤťȚțŢţ]': 't',
512 '[ÙùÚúÛûÜüŰűŮůŪū]': 'u', '[ÝýŸÿ]': 'y', '[ŹźŻżŽž]': 'z'
513};
514
515// globalResourceAlphabetSorting
516// If more than one resource (server account) is configured, sort the
517// resources alphabetically?
518// Example:
519var globalResourceAlphabetSorting=true;
520
521
522// globalNewVersionNotifyUsers
523// Update notification will be shown only to users with login names defined
524// in this array.
525// If undefined (or empty), update notifications will be shown to all users.
526// Example:
527// globalNewVersionNotifyUsers=['admin', 'peter'];
528var globalNewVersionNotifyUsers=[];
529
530
531// globalDatepickerFormat
532// Set the datepicker format (see
533// http://docs.jquery.com/UI/Datepicker/formatDate for valid values).
534// NOTE: date format is predefined for each localization - use this option
535// ONLY if you want to use custom date format (instead of the localization
536// predefined one).
537// Example:
538//var globalDatepickerFormat='dd.mm.yy';
539var globalDatepickerFormat='yy-mm-dd';
540
541
542// globalDatepickerFirstDayOfWeek
543// Set the datepicker first day of the week: Sunday is 0, Monday is 1, etc.
544// Example:
545var globalDatepickerFirstDayOfWeek=1;
546
547
548// globalHideInfoMessageAfter
549// How long are information messages (such as: success, error) displayed
550// (in miliseconds).
551// Example:
552var globalHideInfoMessageAfter=1800;
553
554
555// globalEditorFadeAnimation
556// Set the editor fade in/out animation duration when editing or saving data
557// (in miliseconds).
558// Example:
559var globalEditorFadeAnimation=666;
560
561
562
563
564// ******* CalDAV (CalDavZAP) related settings ******* //
565
566// globalEventStartPastLimit, globalEventStartFutureLimit, globalTodoPastLimit
567// Number of months pre-loaded from past/future in advance for calendars
568// and todo lists (if null then date range synchronization is disabled).
569// NOTE: interval synchronization is used only if your server supports
570// sync-collection REPORT (e.g. DAViCal).
571// NOTE: if you experience problems with data loading and your server has
572// no time-range filtering support set these variables to null.
573// Example:
574var globalEventStartPastLimit=3;
575var globalEventStartFutureLimit=3;
576var globalTodoPastLimit=1;
577
578
579// globalLoadedCalendarCollections
580// This option sets the list of calendar collections (down)loaded after login.
581// If empty then all calendar collections for the currently logged user are
582// loaded.
583// NOTE: settings stored on the server (see settingsAccount) overwrite this
584// option.
585// Example:
586var globalLoadedCalendarCollections=[];
587
588
589// globalLoadedTodoCollections
590// This option sets the list of todo collections (down)loaded after login.
591// If empty then all todo collections for the currently logged user are loaded.
592// NOTE: settings stored on the server (see settingsAccount) overwrite this
593// option.
594// Example:
595var globalLoadedTodoCollections=[];
596
597
598// globalActiveCalendarCollections
599// This options sets the list of calendar collections checked (enabled
600// checkbox => data visible in the interface) by default after login.
601// If empty then all loaded calendar collections for the currently logged
602// user are checked.
603// NOTE: only already (down)loaded collections can be checked (see
604// the globalLoadedCalendarCollections option).
605// NOTE: settings stored on the server (see settingsAccount) overwrite this
606// option.
607// Example:
608var globalActiveCalendarCollections=[];
609
610
611// globalActiveTodoCollections
612// This options sets the list of todo collections checked (enabled
613// checkbox => data visible in the interface) by default after login.
614// If empty then all loaded todo collections for the currently logged
615// user are checked.
616// NOTE: only already (down)loaded collections can be checked (see
617// the globalLoadedTodoCollections option).
618// NOTE: settings stored on the server (see settingsAccount) overwrite this
619// option.
620// Example:
621var globalActiveTodoCollections=[];
622
623
624// globalCalendarSelected
625// This option sets which calendar collection will be pre-selected
626// (if you create a new event) by default after login.
627// The value must be URL encoded path to a calendar collection,
628// for example: 'USER/calendar/'
629// If empty or undefined then the first available calendar collection
630// is selected automatically.
631// NOTE: only already (down)loaded collections can be pre-selected (see
632// the globalLoadedCalendarCollections option).
633// NOTE: settings stored on the server (see settingsAccount) overwrite this
634// option.
635// Example:
636//var globalCalendarSelected='';
637
638
639// globalTodoCalendarSelected
640// This option sets which todo collection will be pre-selected
641// (if you create a new todo) by default after login.
642// The value must be URL encoded path to a todo collection,
643// for example: 'USER/todo_calendar/'
644// If empty or undefined then the first available todo collection
645// is selected automatically.
646// NOTE: only already (down)loaded collections can be pre-selected (see
647// the globalLoadedTodoCollections option).
648// NOTE: settings stored on the server (see settingsAccount) overwrite this
649// option.
650// Example:
651//var globalTodoCalendarSelected='';
652
653
654// globalActiveView
655// This options sets the default fullcalendar view option (the default calendar
656// view after the first login).
657// Supported values:
658// - 'month'
659// - 'multiWeek'
660// - 'agendaWeek'
661// - 'agendaDay'
662// NOTE: we use custom and enhanced version of fullcalendar!
663// Example:
664var globalActiveView='multiWeek';
665
666
667// globalOpenFormMode
668// Open new event form on 'single' or 'double' click.
669// If undefined or not 'double', then 'single' is used.
670// Example:
671var globalOpenFormMode='double';
672
673
674// globalTodoListFilterSelected
675// This options sets the list of filters in todo list that are selected
676// after login.
677// Supported options:
678// - 'filterAction'
679// - 'filterProgress' (available only if globalAppleRemindersMode is disabled)
680// - 'filterCompleted'
681// - 'filterCanceled' (available only if globalAppleRemindersMode is disabled)
682// NOTE: settings stored on the server (see settingsAccount) overwrite this
683// option.
684// Example:
685var globalTodoListFilterSelected=['filterAction', 'filterProgress'];
686
687
688// globalCalendarStartOfBusiness, globalCalendarEndOfBusiness
689// These options set the start and end of business hours with 0.5 hour
690// precision. Non-business hours are faded out in the calendar interface.
691// If both variables are set to the same value then no fade out occurs.
692// Example:
693var globalCalendarStartOfBusiness=8;
694var globalCalendarEndOfBusiness=17;
695
696
697// globalDefaultEventDuration
698// This option sets the default duration (in minutes) for newly created events.
699// If undefined or null, globalCalendarEndOfBusiness value will be taken as
700// a default end time instead.
701// Example:
702var globalDefaultEventDuration=120;
703
704
705// globalAMPMFormat
706// This option enables to use 12 hours format (AM/PM) for displaying time.
707// NOTE: time format is predefined for each localization - use this option
708// ONLY if you want to use custom time format (instead of the localization
709// predefined one).
710// Example:
711//var globalAMPMFormat=false;
712
713
714// globalTimeFormatBasic
715// This option defines the time format information for events in month and
716// multiweek views. If undefined or null then default value is used.
717// If defined as empty string no time information is shown in these views.
718// See http://arshaw.com/fullcalendar/docs/utilities/formatDate/ for exact
719// formating rules.
720// Example:
721//var globalTimeFormatBasic='';
722
723
724// globalTimeFormatAgenda
725// This option defines the time format information for events in day and
726// week views. If undefined or null then default value is used.
727// If defined as empty string no time information is shown in these views.
728// See http://arshaw.com/fullcalendar/docs/utilities/formatDate/ for exact
729// formating rules.
730// Example:
731//var globalTimeFormatAgenda='';
732
733
734// globalDisplayHiddenEvents
735// This option defined whether events from unechecked calendars are displayed
736// with certain transparency (true) or completely hidden (false).
737// Example:
738var globalDisplayHiddenEvents=false;
739
740
741// globalTimeZoneSupport
742// This option enables timezone support in the client.
743// NOTE: timezone cannot be specified for all-day events because these don't
744// have start and end time.
745// If this option is disabled then local time is used.
746// Example:
747var globalTimeZoneSupport=true;
748
749
750// globalTimeZone
751// If timezone support is enabled, this option sets the default timezone.
752// See timezones.js or use the following command to get the list of supported
753// timezones (defined in timezones.js):
754// grep "'[^']\+': {" timezones.js | sed -Ee "s#(\s*'|':\s*\{)##g"
755// Example:
756var globalTimeZone='Europe/Paris';
757
758
759// globalTimeZonesEnabled
760// This option sets the list of available timezones in the interface (for the
761// list of supported timezones see the comment for the previous configuration
762// option).
763// NOTE: if there is at least one event/todo with a certain timezone defined,
764// that timezone is enabled (even if it is not present in this list).
765// Example:
766// var globalTimeZonesEnabled=['America/New_York', 'Europe/Berlin'];
767var globalTimeZonesEnabled=[];
768
769
770// globalRewriteTimezoneComponent
771// This options sets whether the client will enhance/replace (if you edit an
772// event or todo) the timezone information using the official IANA timezone
773// database information (recommended).
774// Example:
775var globalRewriteTimezoneComponent=true;
776
777
778// globalRemoveUnknownTimezone
779// This options sets whether the client will remove all non-standard timezone
780// names from events and todos (if you edit an event or todo)
781// (e.g.: /freeassociation.sourceforge.net/Tzfile/Europe/Vienna)
782// Example:
783var globalRemoveUnknownTimezone=false;
784
785
786// globalShowHiddenAlarms
787// This option sets whether the client will show alarm notifications for
788// unchecked calendars. If this option is enabled and you uncheck a calendar
789// in the calendar list, alarm notifications will be temporary disabled for
790// unchecked calendar(s).
791// Example:
792var globalShowHiddenAlarms=false;
793
794
795// globalIgnoreCompletedOrCancelledAlarms
796// This options sets whether the client will show alarm notifications for
797// already completed or cancelled todos. If enabled then alarm notification
798// for completed and cancelled todos are disabled.
799// Example:
800var globalIgnoreCompletedOrCancelledAlarms=true;
801
802
803// globalMozillaSupport
804// Mozilla automatically treats custom repeating event calculations as if
805// the start day of the week is Monday, despite what day is chosen in settings.
806// Set this variable to true to use the same approach, ensuring compatible
807// event rendering in special cases.
808// Example:
809var globalMozillaSupport=false;
810
811
812// globalCalendarColorPropertyXmlns
813// This options sets the namespace used for storing the "calendar-color"
814// property by the client.
815// If true, undefined (or empty) "http://apple.com/ns/ical/" is used (Apple
816// compatible). If false, then the calendar color modification functionality
817// is completely disabled.
818// Example:
819//var globalCalendarColorPropertyXmlns=true;
820
821
822// globalWeekendDays
823// This option sets the list of days considered as weekend days (these
824// are faded out in the calendar interface). Non-weekend days are automatically
825// considered as business days.
826// Sunday is 0, Monday is 1, etc.
827// Example:
828var globalWeekendDays=[0, 6];
829
830
831// globalAppleRemindersMode
832// If this option is enabled then then client will use the same approach
833// for handling repeating reminders (todos) as Apple. It is STRONGLY
834// recommended to enabled this option if you use any Apple clients for
835// reminders (todos).
836// Supported options:
837// - 'iOS6'
838// - 'iOS7'
839// - true (support of the latest iOS version - 'iOS8')
840// - false
841// If this option is enabled:
842// - RFC todo support is SEVERELY limited and the client mimics the behaviour
843// of Apple Reminders.app (to ensure maximum compatibility)
844// - when a single instance of repeating todo is edited, it becomes an
845// autonomous non-repeating todo with NO relation to the original repeating
846// todo
847// - capabilities of repeating todos are limited - only the first instance
848// is ever visible in the interface
849// - support for todo DTSTART attribute is disabled
850// - support for todo STATUS attribute other than COMPLETED and NEEDS-ACTION
851// is disabled
852// - [iOS6 only] support for LOCATION and URL attributes is disabled
853// Example:
854var globalAppleRemindersMode=true;
855
856
857// globalSubscribedCalendars
858// This option specifies a list of remote URLs to ics files (e.g.: used
859// for distributing holidays information). Subscribed calendars are
860// ALWAYS read-only. Remote servers where ics files are hosted MUST
861// return proper CORS headers (see readme.txt) otherwise this functionality
862// will not work!
863// NOTE: subsribed calendars are NOT "shared" calendars. For "shared"
864// calendars see the delegation option in globalAccountSettings,
865// globalNetworkCheckSettings and globalNetworkAccountSettings.
866// List of properties used in globalSubscribedCalendars variable:
867// - hrefLabel
868// This options defines the header string above the subcsribed calendars.
869// - calendars
870// This option specifies an array of remote calendar objects with the
871// following properties:
872// - href
873// Set this option to the "full URL" of the remote calendar
874// - userAuth
875// NOTE: keep empty if remote authentication is not required!
876// - userName
877// Set the username you want to login.
878// - userPassword
879// Set the password for the given username.
880// - typeList
881// Set the list of objects you want to process from remote calendars;
882// two options are available:
883// - 'vevent' (show remote events in the interface)
884// - 'vtodo' (show remote todos in the interface)
885// - ignoreAlarm
886// Set this option to true if you want to disable alarm notifications
887// from the remote calendar.
888// - displayName
889// Set this option to the name of the calendar you want to see
890// in the interface.
891// - color
892// Set the calendar color you want to see in the interface.
893// Example:
894//var globalSubscribedCalendars={
895// hrefLabel: 'Subscribed',
896// calendars: [
897// {
898// href: 'http://something.com/calendar.ics',
899// userAuth: {
900// userName: '',
901// userPassword: ''
902// },
903// typeList: ['vevent', 'vtodo'],
904// ignoreAlarm: true,
905// displayName: 'Remote Calendar 1',
906// color: '#ff0000'
907// },
908// {
909// href: 'http://calendar.com/calendar2.ics',
910// ...
911// ...
912// }
913// ]
914//};
915
916
917
918// ******* CardDAV (CardDavMATE) related settings ******* //
919
920
921// globalLoadedAddressbookCollections
922// This option sets the list of addressbook collections (down)loaded after
923// login. If empty then all addressbook collections for the currently logged
924// user are loaded.
925// NOTE: settings stored on the server (see settingsAccount) overwrite this
926// option.
927// Example:
928var globalLoadedAddressbookCollections=[];
929
930
931// globalActiveAddressbookCollections
932// This options sets the list of addressbook collections checked (enabled
933// checkbox => data visible in the interface) by default after login.
934// If empty then all loaded addressbook collections for the currently logged
935// user are checked.
936// NOTE: only already (down)loaded collections can be checked (see
937// the globalLoadedAddressbookCollections option).
938// NOTE: settings stored on the server (see settingsAccount) overwrite this
939// option.
940// Example:
941var globalActiveAddressbookCollections=[];
942
943
944// globalAddressbookSelected
945// This option sets which addressbook collection will be pre-selected
946// (if you create a new contact) by default after login.
947// The value must be URL encoded path to an addressbook collection,
948// for example: 'USER/addressbook/'
949// If empty or undefined then the first available addressbook collection
950// is selected automatically.
951// NOTE: only already (down)loaded collections can be pre-selected (see
952// the globalLoadedAddressbookCollections option).
953// NOTE: settings stored on the server (see settingsAccount) overwrite this
954// option.
955// Example:
956//var globalAddressbookSelected='';
957
958
959// globalCompatibility
960// This options is reserved for various compatibility settings.
961// NOTE: if this option is used the value must be an object.
962// Currently there is only one supported option:
963// - anniversaryOutputFormat
964// Different clients use different (and incompatible) approach
965// to store anniversary date in vCards. Apple stores this attribute as:
966// itemX.X-ABDATE;TYPE=pref:2000-01-01\r\n
967// itemX.X-ABLabel:_$!<Anniversary>!$_\r\n'
968// other clients store this attribute as:
969// X-ANNIVERSARY:2000-01-01\r\n
970// Choose 'apple' or 'other' (lower case) for your 3rd party client
971// compatibility. You can chose both: ['apple', 'other'], but it may
972// cause many problems in the future, for example: duplicate anniversary
973// dates, invalid/old anniversary date in your clients, ...)
974// Examples:
975// anniversaryOutputFormat: ['other']
976// anniversaryOutputFormat: ['apple', 'other']
977// Example:
978var globalCompatibility={anniversaryOutputFormat: ['apple']};
979
980
981// globalUriHandler{Tel,Email,Url,Profile}
982// These options set the URI handlers for TEL, EMAIL, URL and X-SOCIALPROFILE
983// vCard attributes. Set them to null (or comment out) to disable.
984// NOTE: for globalUriHandlerTel is recommended to use 'tel:', 'callto:'
985// or 'skype:'. The globalUriHandlerUrl value is used only if no URI handler
986// is defined in the URL.
987// NOTE: it is safe to keep these values unchanged!
988// Example:
989var globalUriHandlerTel='tel:';
990var globalUriHandlerEmail='mailto:';
991var globalUriHandlerUrl='http://';
992var globalUriHandlerProfile={
993 'twitter': 'http://twitter.com/%u',
994 'facebook': 'http://www.facebook.com/%u',
995 'flickr': 'http://www.flickr.com/photos/%u',
996 'linkedin': 'http://www.linkedin.com/in/%u',
997 'myspace': 'http://www.myspace.com/%u',
998 'sinaweibo': 'http://weibo.com/n/%u'
999};
1000
1001
1002// globalDefaultAddressCountry
1003// This option sets the default country for new address fields.
1004// See common.js or use the following command to get the list of
1005// all supported country codes (defined in common.js):
1006// grep -E "'[a-z]{2}':\s+\[" common.js | sed -Ee 's#^\s+|\s+\[\s+# #g'
1007// Example:
1008var globalDefaultAddressCountry='fr';
1009
1010
1011// globalAddressCountryEquivalence
1012// This option sets the processing of the country field specified
1013// in the vCard ADR attribute.
1014// By default the address field in vCard looks like:
1015// ADR;TYPE=WORK:;;1 Waters Edge;Baytown;LA;30314;USA\r\n
1016// what cause a problem, because the country field is a plain
1017// text and can contain any value, e.g.:
1018// USA
1019// United States of America
1020// US
1021// and because the address format can be completely different for
1022// each country, e.g.:
1023// China address example:
1024// [China]
1025// [Province] [City]
1026// [Street]
1027// [Postal]
1028// Japan address example:
1029// [Postal]
1030// [Prefecture] [County/City]
1031// [Further Divisions]
1032// [Japan]
1033// the client needs to correctly detect the country from the ADR
1034// attribute. Apple solved this problem by using:
1035// item1.ADR;TYPE=WORK:;;1 Waters Edge;Baytown;LA;30314;USA\r\n
1036// item1.X-ABADR:us\r\n
1037// where the second "related" attribute defines the country code
1038// for the ADR attribute. This client uses the same approach, but
1039// if the vCard is created by 3rd party clients and the X-ABADR
1040// is missing, it is possible to define additional "rules" for
1041// country matching. These rules are specied by the country code
1042// (for full list of country codes see the comment for pre previous
1043// option) and a case insensitive regular expression (which matches
1044// the plain text value in the country field).
1045// NOTE: if X-ABADR is not present and the country not matches any
1046// country defined in this option, then globalDefaultAddressCountry
1047// is used by default.
1048// Example:
1049var globalAddressCountryEquivalence=[
1050 {country: 'de', regex: '^\\W*Deutschland\\W*$'},
1051 {country: 'sk', regex: '^\\W*Slovensko\\W*$'}
1052];
1053
1054
1055// globalAddressCountryFavorites
1056// This option defines the list of countries which are shown at the top
1057// of the country list in the interface (for full list of country codes
1058// see the comment for pre globalDefaultAddressCountry option).
1059// Example:
1060// var globalAddressCountryFavorites=['de','sk'];
1061var globalAddressCountryFavorites=[];
1062
1063
1064// globalAddrColorPropertyXmlns
1065// This options sets the namespace used for storing the "addressbook-color"
1066// property by the client.
1067// If true, undefined (or empty) "http://inf-it.com/ns/ab/" is used.
1068// If false, then the addressbook color modification functionality
1069// is completely disabled, and addressbook colors in the interface are
1070// generated automatically.
1071// Example:
1072//var globalAddrColorPropertyXmlns=true;
1073
1074
1075// globalContactStoreFN
1076// This option specifies how the FN (formatted name) is stored into vCard.
1077// The value for this options must be an array of strings, that can contain
1078// the following variables:
1079// prefix
1080// last
1081// middle
1082// first
1083// suffix
1084// The string element of the array can contain any other characters (usually
1085// space or colon). Elements are added into FN only if the there is
1086// a variable match, for example if:
1087// last='Lastname'
1088// first='Firstname'
1089// middle='' (empty)
1090// and this option is set to:
1091// ['last', ' middle', ' first'] (space in the second and third element)
1092// the resulting value for FN will be: 'Lastname Firstname' and not
1093// 'Lastname Firstname' (two spaces), because the middle name is empty (so
1094// the second element is completely ignored /not added into FN/).
1095// NOTE: this attribute is NOT used by this client, and it is also NOT
1096// possible to directly edit it in the interface.
1097// Examples:
1098// var globalContactStoreFN=[' last', ' middle', ' first'];
1099// var globalContactStoreFN=['last', ', middle', ' ,first'];
1100var globalContactStoreFN=['prefix',' last',' middle',' first',' suffix'];
1101
1102
1103// globalGroupContactsByCompanies
1104// This options specifies how contacts are grouped in the interface.
1105// By default the interface looks like (very simple example):
1106// A
1107// Adams Adam
1108// Anderson Peter
1109// B
1110// Brown John
1111// Baker Josh
1112// if grouped by company/deparment the result is:
1113// Company A [Department X]
1114// Adams Adam
1115// Brown John
1116// Company B [Department Y]
1117// Anderson Peter
1118// Baker Josh
1119// If this option is set to true contacts are grouped by company/department,
1120// otherwise (default) contacts are grouped by letters of the alphabet.
1121// If undefined or not true, grouping by alphabet letters is used.
1122// NOTE: see also the globalCollectionDisplay option below.
1123var globalGroupContactsByCompanies=false;
1124
1125
1126// globalCollectionDisplay
1127// This options specifies how data columns in the contact list are displayed.
1128//
1129// NOTE: columns are displayed ONLY if there is enought horizontal place in
1130// the browser window (e.g. if you define 5 columns here, but your browser
1131// window is not wide enough, you will see only first 3 columns instead of 5).
1132//
1133// NOTE: see the globalContactDataMinVisiblePercentage option which defines the
1134// width for columns.
1135//
1136// The value must be an array of columns, where each column is represented by
1137// an object with the following properties:
1138// label => the value of this option is a string used as column header
1139// You can use the following localized variables in the label string:
1140// - {Name}
1141// - {FirstName}
1142// - {LastName}
1143// - {MiddleName}
1144// - {NickName}
1145// - {Prefix}
1146// - {Suffix}
1147// - {BirthDay}
1148// - {PhoneticLastName}
1149// - {PhoneticFirstName}
1150// - {JobTitle}
1151// - {Company}
1152// - {Department}
1153// - {Categories}
1154// - {NoteText}
1155// - {Address}, {AddressWork}, {AddressHome}, {AddressOther}
1156// - {Phone}, {PhoneWork}, {PhoneHome}, {PhoneCell}, {PhoneMain},
1157// {PhonePager}, {PhoneFax}, {PhoneIphone}, {PhoneOther}
1158// - {Email}, {EmailWork}, {EmailHome}, {EmailMobileme}, {EmailOther}
1159// - {URL}, {URLWork}, {URLHome}, {URLHomepage}, {URLOther}
1160// - {Dates}, {DatesAnniversary}, {DatesOther}
1161// - {Related}, {RelatedManager}, {RelatedAssistant}, {RelatedFather},
1162// {RelatedMother}, {RelatedParent}, {RelatedBrother}, {RelatedSister},
1163// {RelatedChild}, {RelatedFriend}, {RelatedSpouse}, {RelatedPartner},
1164// {RelatedOther}
1165// - {Profile}, {ProfileTwitter}, {ProfileFacebook}, {ProfileFlickr},
1166// {ProfileLinkedin}, {ProfileMyspace}, {ProfileSinaweibo}
1167// - {IM}, {IMWork}, {IMHome}, {IMMobileme}, {IMOther}, {IMAim}, {IMIcq},
1168// {IMIrc}, {IMJabber}, {IMMsn}, {IMYahoo}, {IMFacebook}, {IMGadugadu},
1169// {IMGoogletalk}, {IMQq}, {IMSkype}
1170// value => the value of this option is an array of format strings, or
1171// an object with the following properties:
1172// - company (used for company contacts)
1173// - personal (used for user contacts)
1174// where the value of these properties is an array of format strings used
1175// for company or user contacts (you can have different values in the same
1176// column for personal and company contacts).
1177// You can use the following simple variables in the format string:
1178// - {FirstName}
1179// - {LastName}
1180// - {MiddleName}
1181// - {NickName}
1182// - {Prefix}
1183// - {Suffix}
1184// - {BirthDay}
1185// - {PhoneticLastName}
1186// - {PhoneticFirstName}
1187// - {JobTitle}
1188// - {Company}
1189// - {Department}
1190// - {Categories}
1191// - {NoteText}
1192// You can also use parametrized variables, where the parameter is enclosed
1193// in square bracket. Paramatrized variables are useful to extract data
1194// such as home phone {Phone[type=home]}, extract the second phone number
1195// {Phone[:1]} (zero based indexing) or extract the third home phone number
1196// {Phone[type=home][:2]} from the vCard.
1197// NOTE: if the parametrized variable matches multiple items, e.g.:
1198// {Phone[type=work]} (if the contact has multiple work phones) then the
1199// first one is used!
1200//
1201// The following parametrized variables are supported (note: you can use
1202// all of them also without parameters /the first one will be used/):
1203// - {Address[type=XXX]} or {Address[:NUM]} or {Address[type=XXX][:NUM]}
1204// where supported values for XXX are:
1205// - work
1206// - home
1207// - other
1208// - any other custom value
1209// - {Phone[type=XXX]} or {Phone[:NUM]} or {Phone[type=XXX][:NUM]}
1210// where supported values for XXX are:
1211// - work
1212// - home
1213// - cell
1214// - main
1215// - pager
1216// - fax
1217// - iphone
1218// - other
1219// - any other custom value
1220// - {Email[type=XXX]} or {Email[:NUM]} or {Email[type=XXX][:NUM]}
1221// where supported values for XXX are:
1222// - work
1223// - home
1224// - mobileme
1225// - other
1226// - any other custom value
1227// - {URL[type=XXX]} or {URL[:NUM]} or {URL[type=XXX][:NUM]}
1228// where supported values for XXX are:
1229// - work
1230// - home
1231// - homepage
1232// - other
1233// - any other custom value
1234// - {Dates[type=XXX]} or {Dates[:NUM]} or {Dates[type=XXX][:NUM]}
1235// where supported values for XXX are:
1236// - anniversary
1237// - other
1238// - any other custom value
1239// - {Related[type=XXX]} or {Related[:NUM]} or {Related[type=XXX][:NUM]}
1240// where supported values for XXX are:
1241// - manager
1242// - assistant
1243// - father
1244// - mother
1245// - parent
1246// - brother
1247// - sister
1248// - child
1249// - friend
1250// - spouse
1251// - partner
1252// - other
1253// - any other custom value
1254// - {Profile[type=XXX]} or {Profile[:NUM]} or {Profile[type=XXX][:NUM]}
1255// where supported values for XXX are:
1256// - twitter
1257// - facebook
1258// - flickr
1259// - linkedin
1260// - myspace
1261// - sinaweibo
1262// - any other custom value
1263// - {IM[type=XXX]} or {IM[service-type=YYY]} or {IM[:NUM]}
1264// where supported values for XXX are:
1265// - work
1266// - home
1267// - mobileme
1268// - other
1269// - any other custom value
1270// and supported values for YYY are:
1271// - aim
1272// - icq
1273// - irc
1274// - jabber
1275// - msn
1276// - yahoo
1277// - facebook
1278// - gadugadu
1279// - googletalk
1280// - qq
1281// - skype
1282// - any other custom value
1283//
1284// NOTE: if you want to use the "any other custom value" option (for XXX
1285// or YYY above) you MUST double escape the following characters:
1286// =[]{}\
1287// for example:
1288// - for profile type "=XXX=" use: '{Profile[type=\\=XXX\\=]}'
1289// - for profile type "\XXX\" use: '{Profile[type=\\\\XXX\\\\]}'
1290//
1291// NOTE: if you want to use curly brackets in the format string you must
1292// double escape it, e.g.: ['{Company}', '\\{{Department}\\}']
1293//
1294// The format string (for the value option) is an array to allow full
1295// customization of the interface. For example if:
1296// value: ['{LastName} {MiddleName} {FirstName}']
1297// and the person has no middle name, then the result in the column
1298// will be (without quotes):
1299// "Parker Peter" (note: two space characters)
1300// but if you use:
1301// value: ['{LastName}', ' {MiddleName}', ' {FirstName}']
1302// then the result will be (without quotes):
1303// "Parker Peter" (note: only one space character)
1304// The reason is that only those elements of the array are appended
1305// into the result where non-empty substitution was performed (so the
1306// ' {MiddleName}' element in this case is ignored, because the person
1307// in the example above has no /more precisely has empty/ middle name).
1308//
1309// Examples:
1310// To specify two columns (named "Company" and "Department / LastName"),
1311// where the first will display the company name, and the second will display
1312// department for company contacts (with "Dep -" prefix), and lastname for
1313// personal contacts (with "Name -" prefix) use:
1314// var globalCollectionDisplay=[
1315// {
1316// label: 'Company',
1317// value: ['{Company}']
1318// },
1319// {
1320// label: 'Department / LastName',
1321// value: {
1322// company: ['Dep - {Department}'],
1323// personal: ['Name - {LastName}']
1324// }
1325// }
1326// ];
1327// To specify 3 columns (named "Categories", "URL" and "IM"), where the first
1328// will display categories, second will display the third work URL, and third
1329// will display ICQ IM use:
1330// var globalCollectionDisplay=[
1331// {
1332// label: 'Categories',
1333// value: ['{Categories}']
1334// },
1335// {
1336// label: 'URL',
1337// value: ['{URL[type=WORK][:2]}']
1338// },
1339// {
1340// label: 'IM',
1341// value: ['{IM[service-type=ICQ]}']
1342// }
1343// ];
1344//
1345// Recommended settings if globalGroupContactsByCompanies
1346// is set to false:
1347// var globalCollectionDisplay=[
1348// {
1349// label: '{Name}',
1350// value: ['{LastName}', ' {MiddleName}', ' {FirstName}']
1351// },
1352// {
1353// label: '{Company} [{Department}]',
1354// value: ['{Company}', ' [{Department}]']
1355// },
1356// {
1357// label: '{JobTitle}',
1358// value: ['{JobTitle}']
1359// },
1360// {
1361// label: '{Email}',
1362// value: ['{Email[:0]}']
1363// },
1364// {
1365// label: '{Phone} 1',
1366// value: ['{Phone[:0]}']
1367// },
1368// {
1369// label: '{Phone} 2',
1370// value: ['{Phone[:1]}']
1371// },
1372// {
1373// label: '{NoteText}',
1374// value: ['{NoteText}']
1375// }
1376// ];
1377//
1378// Recommended settings if globalGroupContactsByCompanies
1379// is set to true:
1380// var globalCollectionDisplay=[
1381// {
1382// label: '{Name}',
1383// value: {
1384// personal: ['{LastName}', ' {MiddleName}', ' {FirstName}'],
1385// company: ['{Company}', ' [{Department}]']
1386// }
1387// },
1388// {
1389// label: '{JobTitle}',
1390// value: ['{JobTitle}']
1391// },
1392// {
1393// label: '{Email}',
1394// value: ['{Email[:0]}']
1395// },
1396// {
1397// label: '{Phone} 1',
1398// value: ['{Phone[:0]}']
1399// },
1400// {
1401// label: '{Phone} 2',
1402// value: ['{Phone[:1]}']
1403// },
1404// {
1405// label: '{NoteText}',
1406// value: ['{NoteText}']
1407// }
1408// ];
1409//
1410// NOTE: if left undefined, the recommended settings will be used.
1411
1412
1413// globalCollectionSort
1414// This options sets the ordering of contacts in the interface. In general
1415// contacts are ordered alphabetically by an internal "sort string" which
1416// is created for each contact. Here you can specify how this internal string
1417// is created. The value is a simple array holding only the values from the
1418// value property defined in the globalCollectionDisplay option.
1419// If undefined, the definition from globalCollectionDisplay is used.
1420// Example:
1421// var globalCollectionSort = [
1422// ['{LastName}'],
1423// ['{FirstName}'],
1424// ['{MiddleName}'],
1425// {
1426// company: ['{Categories}'],
1427// personal: ['{Company}']
1428// }
1429// ];
1430var globalCollectionSort=[
1431 ['{LastName}'],
1432 ['{FirstName}'],
1433 ['{MiddleName}']
1434];
1435
1436
1437// globalContactDataMinVisiblePercentage
1438// This option defines how the width for columns are computed. If you set
1439// it to 1 then 100% of all data in the column will be visible (the column
1440// width is determined by the longest string in the column). If you set it
1441// to 0.95 then 95% of data will fit into the column width, and the remaining
1442// 5% will be truncated (" ...").
1443// Example:
1444var globalContactDataMinVisiblePercentage=0.95;
1445
1446
diff --git a/virtual/modules/websites/tools/db/default.nix b/virtual/modules/websites/tools/db/default.nix
deleted file mode 100644
index 2a82bd6..0000000
--- a/virtual/modules/websites/tools/db/default.nix
+++ /dev/null
@@ -1,22 +0,0 @@
1{ lib, pkgs, config, mylibs, ... }:
2let
3 adminer = pkgs.callPackage ../../commons/adminer.nix {};
4
5 cfg = config.services.myWebsites.tools.databases;
6in {
7 options.services.myWebsites.tools.databases = {
8 enable = lib.mkEnableOption "enable database's website";
9 };
10
11 config = lib.mkIf cfg.enable {
12 security.acme.certs."eldiron".extraDomains."db-1.immae.eu" = null;
13
14 services.myWebsites.tools.modules = adminer.apache.modules;
15 services.myWebsites.tools.vhostConfs.db-1 = {
16 certName = "eldiron";
17 hosts = ["db-1.immae.eu" ];
18 root = null;
19 extraConfig = [ adminer.apache.vhostConf ];
20 };
21 };
22}
diff --git a/virtual/modules/websites/tools/diaspora/Gemfile b/virtual/modules/websites/tools/diaspora/Gemfile
deleted file mode 100644
index e279514..0000000
--- a/virtual/modules/websites/tools/diaspora/Gemfile
+++ /dev/null
@@ -1,318 +0,0 @@
1# frozen_string_literal: true
2
3source "https://rubygems.org"
4
5gem "rails", "5.1.6"
6
7# Legacy Rails features, remove me!
8# responders (class level)
9gem "responders", "2.4.0"
10
11# Appserver
12
13gem "unicorn", "5.4.1", require: false
14gem "unicorn-worker-killer", "0.4.4"
15
16# Federation
17
18gem "diaspora_federation-json_schema", "0.2.5"
19gem "diaspora_federation-rails", "0.2.5"
20
21# API and JSON
22
23gem "acts_as_api", "1.0.1"
24gem "json", "2.1.0"
25gem "json-schema", "2.8.1"
26
27# Authentication
28
29gem "devise", "4.5.0"
30gem "devise_lastseenable", "0.0.6"
31
32# Captcha
33
34gem "simple_captcha2", "0.4.3", require: "simple_captcha"
35
36# Background processing
37
38gem "redis", "3.3.5" # Pinned to 3.3.x because of https://github.com/antirez/redis/issues/4272
39gem "sidekiq", "5.2.3"
40
41# Scheduled processing
42
43gem "sidekiq-cron", "1.0.4"
44
45# Compression
46
47gem "uglifier", "4.1.19"
48
49# Configuration
50
51gem "configurate", "0.3.1"
52
53# Cross-origin resource sharing
54
55gem "rack-cors", "1.0.2", require: "rack/cors"
56
57# CSS
58
59gem "autoprefixer-rails", "8.6.5"
60gem "bootstrap-sass", "3.3.7"
61gem "bootstrap-switch-rails", "3.3.4"
62gem "compass-rails", "3.1.0"
63gem "sass-rails", "5.0.7"
64gem "sprockets-rails", "3.2.1"
65
66# Database
67
68group :mysql, optional: true do
69 gem "mysql2", "0.5.2"
70end
71gem "pg", "1.1.3"
72
73
74gem "activerecord-import", "0.27.0"
75
76# File uploading
77
78gem "carrierwave", "1.2.3"
79gem "fog-aws", "3.3.0"
80gem "mini_magick", "4.9.2"
81
82# GUID generation
83gem "uuid", "2.3.9"
84
85# Icons
86
87gem "entypo-rails", "3.0.0"
88
89# JavaScript
90
91gem "handlebars_assets", "0.23.2"
92gem "jquery-rails", "4.3.3"
93gem "js-routes", "1.4.4"
94gem "js_image_paths", "0.1.1"
95
96source "https://rails-assets.org" do
97 gem "rails-assets-jquery", "3.3.1" # Should be kept in sync with jquery-rails
98 gem "rails-assets-jquery.ui", "1.11.4"
99
100 gem "rails-assets-highlightjs", "9.12.0"
101 gem "rails-assets-markdown-it", "8.4.2"
102 gem "rails-assets-markdown-it-hashtag", "0.4.0"
103 gem "rails-assets-markdown-it-diaspora-mention", "1.2.0"
104 gem "rails-assets-markdown-it-sanitizer", "0.4.3"
105 gem "rails-assets-markdown-it--markdown-it-for-inline", "0.1.1"
106 gem "rails-assets-markdown-it-sub", "1.0.0"
107 gem "rails-assets-markdown-it-sup", "1.0.0"
108
109 gem "rails-assets-backbone", "1.3.3"
110 gem "rails-assets-bootstrap-markdown", "2.10.0"
111 gem "rails-assets-corejs-typeahead", "1.2.1"
112 gem "rails-assets-fine-uploader", "5.13.0"
113
114 # jQuery plugins
115
116 gem "rails-assets-autosize", "4.0.2"
117 gem "rails-assets-blueimp-gallery", "2.33.0"
118 gem "rails-assets-jquery.are-you-sure", "1.9.0"
119 gem "rails-assets-jquery-placeholder", "2.3.1"
120 gem "rails-assets-jquery-textchange", "0.2.3"
121 gem "rails-assets-utatti-perfect-scrollbar", "1.4.0"
122end
123
124gem "markdown-it-html5-embed", "1.0.0"
125
126# Localization
127
128gem "http_accept_language", "2.1.1"
129gem "i18n-inflector-rails", "1.0.7"
130gem "rails-i18n", "5.1.2"
131
132# Mail
133
134gem "markerb", "1.1.0"
135
136# Map
137gem "leaflet-rails", "1.3.1"
138
139# Parsing
140
141gem "nokogiri", "1.8.5"
142gem "open_graph_reader", "0.6.2" # also update User-Agent in features/support/webmock.rb
143gem "redcarpet", "3.4.0"
144gem "ruby-oembed", "0.12.0"
145gem "twitter-text", "1.14.7"
146
147# RTL support
148
149gem "string-direction", "1.2.1"
150
151# Security Headers
152
153gem "secure_headers", "6.0.0"
154
155# Services
156
157gem "omniauth", "1.8.1"
158gem "omniauth-tumblr", "1.2"
159gem "omniauth-twitter", "1.4.0"
160gem "omniauth-wordpress", "0.2.2"
161gem "twitter", "6.2.0"
162
163# OpenID Connect
164gem "openid_connect", "1.1.6"
165
166# Serializers
167
168gem "active_model_serializers", "0.9.7"
169
170# XMPP chat dependencies
171gem "diaspora-prosody-config", "0.0.7"
172gem "rails-assets-diaspora_jsxc", "0.1.5.develop.7", source: "https://rails-assets.org"
173
174# Tags
175
176gem "acts-as-taggable-on", "6.0.0"
177
178# URIs and HTTP
179
180gem "addressable", "2.5.2", require: "addressable/uri"
181gem "faraday", "0.15.3"
182gem "faraday_middleware", "0.12.2"
183gem "faraday-cookie_jar", "0.0.6"
184gem "typhoeus", "1.3.1"
185
186# Views
187
188gem "gon", "6.2.1"
189gem "hamlit", "2.9.1"
190gem "mobile-fu", "1.4.0"
191gem "rails-timeago", "2.16.0"
192gem "will_paginate", "3.1.6"
193
194# Logging
195
196gem "logging-rails", "0.6.0", require: "logging/rails"
197
198# Reading and writing zip files
199
200gem "rubyzip", "1.2.2", require: "zip"
201
202# Prevent occasions where minitest is not bundled in
203# packaged versions of ruby. See following issues/prs:
204# https://github.com/gitlabhq/gitlabhq/issues/3826
205# https://github.com/gitlabhq/gitlabhq/pull/3852
206# https://github.com/discourse/discourse/pull/238
207gem "minitest"
208
209gem "versionist", "1.7.0"
210
211# Windows and OSX have an execjs compatible runtime built-in, Linux users should
212# install Node.js or use "therubyracer".
213#
214# See https://github.com/sstephenson/execjs#readme for more supported runtimes
215
216# gem "therubyracer", :platform => :ruby
217
218# LDAP
219gem 'net-ldap', '~> 0.16'
220
221group :production do # we don"t install these on travis to speed up test runs
222 # Analytics
223
224 gem "rack-google-analytics", "1.2.0"
225 gem "rack-piwik", "0.3.0", require: "rack/piwik"
226
227 # Process management
228
229 gem "eye", "0.10.0"
230
231 # Redirects
232
233 gem "rack-rewrite", "1.5.1", require: false
234 gem "rack-ssl", "1.4.1", require: "rack/ssl"
235
236 # Third party asset hosting
237
238 gem "asset_sync", "2.5.0", require: false
239end
240
241group :development do
242 # Automatic test runs
243 gem "guard", "2.15.0", require: false
244 gem "guard-rspec", "4.7.3", require: false
245 gem "guard-rubocop", "1.3.0", require: false
246 gem "rb-fsevent", "0.10.3", require: false
247 gem "rb-inotify", "0.9.10", require: false
248
249 # Linters
250 gem "haml_lint", "0.28.0", require: false
251 gem "pronto", "0.9.5", require: false
252 gem "pronto-eslint", "0.9.1", require: false
253 gem "pronto-haml", "0.9.0", require: false
254 gem "pronto-rubocop", "0.9.1", require: false
255 gem "pronto-scss", "0.9.1", require: false
256 gem "rubocop", "0.60.0", require: false
257
258 # Preloading environment
259
260 gem "spring", "2.0.2"
261 gem "spring-commands-rspec", "1.0.4"
262 gem "spring-commands-cucumber", "1.0.1"
263
264 # Debugging
265 gem "pry"
266 gem "pry-byebug"
267
268 # test coverage
269 gem "simplecov", "0.16.1", require: false
270
271 gem "turbo_dev_assets", "0.0.2"
272end
273
274group :test do
275 # RSpec (unit tests, some integration tests)
276
277 gem "fixture_builder", "0.5.2.rc3"
278 gem "fuubar", "2.3.2"
279 gem "json-schema-rspec", "0.0.4"
280 gem "rspec-json_expectations", "~> 2.1"
281
282 # Cucumber (integration tests)
283
284 gem "capybara", "3.11.1"
285 gem "database_cleaner", "1.7.0"
286 gem "poltergeist", "1.18.1"
287
288 gem "cucumber-api-steps", "0.14", require: false
289
290 # General helpers
291
292 gem "factory_girl_rails", "4.8.0"
293 gem "shoulda-matchers", "3.1.2"
294 gem "timecop", "0.9.1"
295 gem "webmock", "3.4.2", require: false
296
297 gem "diaspora_federation-test", "0.2.5"
298
299 # Coverage
300 gem "coveralls", "0.8.22", require: false
301end
302
303group :development, :test do
304 # RSpec (unit tests, some integration tests)
305 gem "rspec-rails", "3.8.1"
306
307 # Cucumber (integration tests)
308 gem "cucumber-rails", "1.6.0", require: false
309
310 # Jasmine (client side application tests (JS))
311 gem "jasmine", "3.3.0"
312 gem "jasmine-jquery-rails", "2.0.3"
313 gem "rails-assets-jasmine-ajax", "3.4.0", source: "https://rails-assets.org"
314 gem "sinon-rails", "1.15.0"
315
316 # For `assigns` in controller specs
317 gem "rails-controller-testing", "1.0.2"
318end
diff --git a/virtual/modules/websites/tools/diaspora/Gemfile.lock b/virtual/modules/websites/tools/diaspora/Gemfile.lock
deleted file mode 100644
index ceb08c1..0000000
--- a/virtual/modules/websites/tools/diaspora/Gemfile.lock
+++ /dev/null
@@ -1,909 +0,0 @@
1GEM
2 remote: https://rubygems.org/
3 remote: https://rails-assets.org/
4 specs:
5 actioncable (5.1.6)
6 actionpack (= 5.1.6)
7 nio4r (~> 2.0)
8 websocket-driver (~> 0.6.1)
9 actionmailer (5.1.6)
10 actionpack (= 5.1.6)
11 actionview (= 5.1.6)
12 activejob (= 5.1.6)
13 mail (~> 2.5, >= 2.5.4)
14 rails-dom-testing (~> 2.0)
15 actionpack (5.1.6)
16 actionview (= 5.1.6)
17 activesupport (= 5.1.6)
18 rack (~> 2.0)
19 rack-test (>= 0.6.3)
20 rails-dom-testing (~> 2.0)
21 rails-html-sanitizer (~> 1.0, >= 1.0.2)
22 actionview (5.1.6)
23 activesupport (= 5.1.6)
24 builder (~> 3.1)
25 erubi (~> 1.4)
26 rails-dom-testing (~> 2.0)
27 rails-html-sanitizer (~> 1.0, >= 1.0.3)
28 active_model_serializers (0.9.7)
29 activemodel (>= 3.2)
30 concurrent-ruby (~> 1.0)
31 activejob (5.1.6)
32 activesupport (= 5.1.6)
33 globalid (>= 0.3.6)
34 activemodel (5.1.6)
35 activesupport (= 5.1.6)
36 activerecord (5.1.6)
37 activemodel (= 5.1.6)
38 activesupport (= 5.1.6)
39 arel (~> 8.0)
40 activerecord-import (0.27.0)
41 activerecord (>= 3.2)
42 activesupport (5.1.6)
43 concurrent-ruby (~> 1.0, >= 1.0.2)
44 i18n (>= 0.7, < 2)
45 minitest (~> 5.1)
46 tzinfo (~> 1.1)
47 acts-as-taggable-on (6.0.0)
48 activerecord (~> 5.0)
49 acts_as_api (1.0.1)
50 activemodel (>= 3.0.0)
51 activesupport (>= 3.0.0)
52 rack (>= 1.1.0)
53 addressable (2.5.2)
54 public_suffix (>= 2.0.2, < 4.0)
55 aes_key_wrap (1.0.1)
56 arel (8.0.0)
57 asset_sync (2.5.0)
58 activemodel (>= 4.1.0)
59 fog-core
60 mime-types (>= 2.99)
61 unf
62 ast (2.4.0)
63 attr_required (1.0.1)
64 autoprefixer-rails (8.6.5)
65 execjs
66 backports (3.11.4)
67 bcrypt (3.1.12)
68 bindata (2.4.4)
69 bootstrap-sass (3.3.7)
70 autoprefixer-rails (>= 5.2.1)
71 sass (>= 3.3.4)
72 bootstrap-switch-rails (3.3.4)
73 buftok (0.2.0)
74 builder (3.2.3)
75 byebug (10.0.2)
76 capybara (3.11.1)
77 addressable
78 mini_mime (>= 0.1.3)
79 nokogiri (~> 1.8)
80 rack (>= 1.6.0)
81 rack-test (>= 0.6.3)
82 regexp_parser (~> 1.2)
83 xpath (~> 3.2)
84 carrierwave (1.2.3)
85 activemodel (>= 4.0.0)
86 activesupport (>= 4.0.0)
87 mime-types (>= 1.16)
88 celluloid (0.17.3)
89 celluloid-essentials
90 celluloid-extras
91 celluloid-fsm
92 celluloid-pool
93 celluloid-supervision
94 timers (>= 4.1.1)
95 celluloid-essentials (0.20.5)
96 timers (>= 4.1.1)
97 celluloid-extras (0.20.5)
98 timers (>= 4.1.1)
99 celluloid-fsm (0.20.5)
100 timers (>= 4.1.1)
101 celluloid-io (0.17.3)
102 celluloid (>= 0.17.2)
103 nio4r (>= 1.1)
104 timers (>= 4.1.1)
105 celluloid-pool (0.20.5)
106 timers (>= 4.1.1)
107 celluloid-supervision (0.20.6)
108 timers (>= 4.1.1)
109 chunky_png (1.3.10)
110 cliver (0.3.2)
111 coderay (1.1.2)
112 compass (1.0.3)
113 chunky_png (~> 1.2)
114 compass-core (~> 1.0.2)
115 compass-import-once (~> 1.0.5)
116 rb-fsevent (>= 0.9.3)
117 rb-inotify (>= 0.9)
118 sass (>= 3.3.13, < 3.5)
119 compass-core (1.0.3)
120 multi_json (~> 1.0)
121 sass (>= 3.3.0, < 3.5)
122 compass-import-once (1.0.5)
123 sass (>= 3.2, < 3.5)
124 compass-rails (3.1.0)
125 compass (~> 1.0.0)
126 sass-rails (< 5.1)
127 sprockets (< 4.0)
128 concurrent-ruby (1.1.3)
129 configurate (0.3.1)
130 connection_pool (2.2.2)
131 coveralls (0.8.22)
132 json (>= 1.8, < 3)
133 simplecov (~> 0.16.1)
134 term-ansicolor (~> 1.3)
135 thor (~> 0.19.4)
136 tins (~> 1.6)
137 crack (0.4.3)
138 safe_yaml (~> 1.0.0)
139 crass (1.0.4)
140 cucumber (3.1.2)
141 builder (>= 2.1.2)
142 cucumber-core (~> 3.2.0)
143 cucumber-expressions (~> 6.0.1)
144 cucumber-wire (~> 0.0.1)
145 diff-lcs (~> 1.3)
146 gherkin (~> 5.1.0)
147 multi_json (>= 1.7.5, < 2.0)
148 multi_test (>= 0.1.2)
149 cucumber-api-steps (0.14.0)
150 cucumber (>= 2.0.2)
151 jsonpath (>= 0.1.2)
152 cucumber-core (3.2.1)
153 backports (>= 3.8.0)
154 cucumber-tag_expressions (~> 1.1.0)
155 gherkin (~> 5.0)
156 cucumber-expressions (6.0.1)
157 cucumber-rails (1.6.0)
158 capybara (>= 1.1.2, < 4)
159 cucumber (>= 3.0.2, < 4)
160 mime-types (>= 1.17, < 4)
161 nokogiri (~> 1.8)
162 railties (>= 4, < 6)
163 cucumber-tag_expressions (1.1.1)
164 cucumber-wire (0.0.1)
165 database_cleaner (1.7.0)
166 devise (4.5.0)
167 bcrypt (~> 3.0)
168 orm_adapter (~> 0.1)
169 railties (>= 4.1.0, < 6.0)
170 responders
171 warden (~> 1.2.3)
172 devise_lastseenable (0.0.6)
173 devise
174 rails (>= 3.0.4)
175 diaspora-prosody-config (0.0.7)
176 diaspora_federation (0.2.5)
177 faraday (>= 0.9.0, < 0.16.0)
178 faraday_middleware (>= 0.10.0, < 0.13.0)
179 nokogiri (~> 1.6, >= 1.6.8)
180 typhoeus (~> 1.0)
181 valid (~> 1.0)
182 diaspora_federation-json_schema (0.2.5)
183 diaspora_federation-rails (0.2.5)
184 actionpack (>= 4.2, < 6)
185 diaspora_federation (= 0.2.5)
186 diaspora_federation-test (0.2.5)
187 diaspora_federation (= 0.2.5)
188 fabrication (~> 2.16)
189 uuid (~> 2.3, >= 2.3.8)
190 diff-lcs (1.3)
191 docile (1.3.1)
192 domain_name (0.5.20180417)
193 unf (>= 0.0.5, < 1.0.0)
194 entypo-rails (3.0.0)
195 railties (>= 4.1, < 6)
196 equalizer (0.0.11)
197 erubi (1.7.1)
198 eslintrb (2.1.0)
199 execjs
200 multi_json (>= 1.3)
201 rake
202 et-orbi (1.1.6)
203 tzinfo
204 ethon (0.11.0)
205 ffi (>= 1.3.0)
206 excon (0.62.0)
207 execjs (2.7.0)
208 eye (0.10.0)
209 celluloid (~> 0.17.3)
210 celluloid-io (~> 0.17.0)
211 kostya-sigar (~> 2.0.0)
212 state_machines
213 thor
214 fabrication (2.20.1)
215 factory_girl (4.8.0)
216 activesupport (>= 3.0.0)
217 factory_girl_rails (4.8.0)
218 factory_girl (~> 4.8.0)
219 railties (>= 3.0.0)
220 faraday (0.15.3)
221 multipart-post (>= 1.2, < 3)
222 faraday-cookie_jar (0.0.6)
223 faraday (>= 0.7.4)
224 http-cookie (~> 1.0.0)
225 faraday_middleware (0.12.2)
226 faraday (>= 0.7.4, < 1.0)
227 ffi (1.9.25)
228 fixture_builder (0.5.2.rc3)
229 activerecord (>= 2)
230 activesupport (>= 2)
231 hashdiff
232 fog-aws (3.3.0)
233 fog-core (~> 2.1)
234 fog-json (~> 1.1)
235 fog-xml (~> 0.1)
236 ipaddress (~> 0.8)
237 fog-core (2.1.2)
238 builder
239 excon (~> 0.58)
240 formatador (~> 0.2)
241 mime-types
242 fog-json (1.2.0)
243 fog-core
244 multi_json (~> 1.10)
245 fog-xml (0.1.3)
246 fog-core
247 nokogiri (>= 1.5.11, < 2.0.0)
248 formatador (0.2.5)
249 fugit (1.1.6)
250 et-orbi (~> 1.1, >= 1.1.6)
251 raabro (~> 1.1)
252 fuubar (2.3.2)
253 rspec-core (~> 3.0)
254 ruby-progressbar (~> 1.4)
255 get_process_mem (0.2.3)
256 gherkin (5.1.0)
257 gitlab (4.7.0)
258 httparty (>= 0.14.0)
259 terminal-table (>= 1.5.1)
260 globalid (0.4.1)
261 activesupport (>= 4.2.0)
262 gon (6.2.1)
263 actionpack (>= 3.0)
264 multi_json
265 request_store (>= 1.0)
266 guard (2.15.0)
267 formatador (>= 0.2.4)
268 listen (>= 2.7, < 4.0)
269 lumberjack (>= 1.0.12, < 2.0)
270 nenv (~> 0.1)
271 notiffany (~> 0.0)
272 pry (>= 0.9.12)
273 shellany (~> 0.0)
274 thor (>= 0.18.1)
275 guard-compat (1.2.1)
276 guard-rspec (4.7.3)
277 guard (~> 2.1)
278 guard-compat (~> 1.1)
279 rspec (>= 2.99.0, < 4.0)
280 guard-rubocop (1.3.0)
281 guard (~> 2.0)
282 rubocop (~> 0.20)
283 haml (5.0.4)
284 temple (>= 0.8.0)
285 tilt
286 haml_lint (0.28.0)
287 haml (>= 4.0, < 5.1)
288 rainbow
289 rake (>= 10, < 13)
290 rubocop (>= 0.50.0)
291 sysexits (~> 1.1)
292 hamlit (2.9.1)
293 temple (>= 0.8.0)
294 thor
295 tilt
296 handlebars_assets (0.23.2)
297 execjs (~> 2.0)
298 sprockets (>= 2.0.0)
299 tilt (>= 1.2)
300 hashdiff (0.3.7)
301 hashie (3.5.7)
302 http (3.3.0)
303 addressable (~> 2.3)
304 http-cookie (~> 1.0)
305 http-form_data (~> 2.0)
306 http_parser.rb (~> 0.6.0)
307 http-cookie (1.0.3)
308 domain_name (~> 0.5)
309 http-form_data (2.1.1)
310 http_accept_language (2.1.1)
311 http_parser.rb (0.6.0)
312 httparty (0.16.3)
313 mime-types (~> 3.0)
314 multi_xml (>= 0.5.2)
315 httpclient (2.8.3)
316 i18n (1.1.1)
317 concurrent-ruby (~> 1.0)
318 i18n-inflector (2.6.7)
319 i18n (>= 0.4.1)
320 i18n-inflector-rails (1.0.7)
321 actionpack (>= 3.0.0)
322 i18n-inflector (~> 2.6)
323 railties (>= 3.0.0)
324 ipaddress (0.8.3)
325 jaro_winkler (1.5.1)
326 jasmine (3.3.0)
327 jasmine-core (~> 3.3.0)
328 phantomjs
329 rack (>= 1.2.1)
330 rake
331 jasmine-core (3.3.0)
332 jasmine-jquery-rails (2.0.3)
333 jquery-rails (4.3.3)
334 rails-dom-testing (>= 1, < 3)
335 railties (>= 4.2.0)
336 thor (>= 0.14, < 2.0)
337 js-routes (1.4.4)
338 railties (>= 3.2)
339 sprockets-rails
340 js_image_paths (0.1.1)
341 rails (>= 4.0, < 6.0)
342 sprockets (>= 3.0.0)
343 json (2.1.0)
344 json-jwt (1.9.4)
345 activesupport
346 aes_key_wrap
347 bindata
348 json-schema (2.8.1)
349 addressable (>= 2.4)
350 json-schema-rspec (0.0.4)
351 json-schema (~> 2.5)
352 rspec
353 jsonpath (0.9.6)
354 multi_json
355 to_regexp (~> 0.2.1)
356 jwt (2.1.0)
357 kgio (2.11.2)
358 kostya-sigar (2.0.4)
359 leaflet-rails (1.3.1)
360 rails (>= 4.2.0)
361 listen (3.1.5)
362 rb-fsevent (~> 0.9, >= 0.9.4)
363 rb-inotify (~> 0.9, >= 0.9.7)
364 ruby_dep (~> 1.2)
365 little-plugger (1.1.4)
366 logging (2.2.2)
367 little-plugger (~> 1.1)
368 multi_json (~> 1.10)
369 logging-rails (0.6.0)
370 logging (>= 1.8)
371 loofah (2.2.3)
372 crass (~> 1.0.2)
373 nokogiri (>= 1.5.9)
374 lumberjack (1.0.13)
375 macaddr (1.7.1)
376 systemu (~> 2.6.2)
377 mail (2.7.1)
378 mini_mime (>= 0.1.1)
379 markdown-it-html5-embed (1.0.0)
380 markerb (1.1.0)
381 memoizable (0.4.2)
382 thread_safe (~> 0.3, >= 0.3.1)
383 method_source (0.9.2)
384 mime-types (3.2.2)
385 mime-types-data (~> 3.2015)
386 mime-types-data (3.2018.0812)
387 mini_magick (4.9.2)
388 mini_mime (1.0.1)
389 mini_portile2 (2.3.0)
390 minitest (5.11.3)
391 mobile-fu (1.4.0)
392 rack-mobile-detect
393 rails
394 multi_json (1.13.1)
395 multi_test (0.1.2)
396 multi_xml (0.6.0)
397 multipart-post (2.0.0)
398 mysql2 (0.5.2)
399 naught (1.1.0)
400 nenv (0.3.0)
401 net-ldap (0.16.1)
402 nio4r (2.3.1)
403 nokogiri (1.8.5)
404 mini_portile2 (~> 2.3.0)
405 notiffany (0.1.1)
406 nenv (~> 0.1)
407 shellany (~> 0.0)
408 oauth (0.5.4)
409 oauth2 (1.4.1)
410 faraday (>= 0.8, < 0.16.0)
411 jwt (>= 1.0, < 3.0)
412 multi_json (~> 1.3)
413 multi_xml (~> 0.5)
414 rack (>= 1.2, < 3)
415 octokit (4.13.0)
416 sawyer (~> 0.8.0, >= 0.5.3)
417 omniauth (1.8.1)
418 hashie (>= 3.4.6, < 3.6.0)
419 rack (>= 1.6.2, < 3)
420 omniauth-oauth (1.1.0)
421 oauth
422 omniauth (~> 1.0)
423 omniauth-oauth2 (1.5.0)
424 oauth2 (~> 1.1)
425 omniauth (~> 1.2)
426 omniauth-tumblr (1.2)
427 multi_json
428 omniauth-oauth (~> 1.0)
429 omniauth-twitter (1.4.0)
430 omniauth-oauth (~> 1.1)
431 rack
432 omniauth-wordpress (0.2.2)
433 omniauth-oauth2 (>= 1.1.0)
434 open_graph_reader (0.6.2)
435 faraday (>= 0.9.0)
436 nokogiri (~> 1.6)
437 openid_connect (1.1.6)
438 activemodel
439 attr_required (>= 1.0.0)
440 json-jwt (>= 1.5.0)
441 rack-oauth2 (>= 1.6.1)
442 swd (>= 1.0.0)
443 tzinfo
444 validate_email
445 validate_url
446 webfinger (>= 1.0.1)
447 orm_adapter (0.5.0)
448 parallel (1.12.1)
449 parser (2.5.3.0)
450 ast (~> 2.4.0)
451 pg (1.1.3)
452 phantomjs (2.1.1.0)
453 poltergeist (1.18.1)
454 capybara (>= 2.1, < 4)
455 cliver (~> 0.3.1)
456 websocket-driver (>= 0.2.0)
457 powerpack (0.1.2)
458 pronto (0.9.5)
459 gitlab (~> 4.0, >= 4.0.0)
460 httparty (>= 0.13.7)
461 octokit (~> 4.7, >= 4.7.0)
462 rainbow (~> 2.1)
463 rugged (~> 0.24, >= 0.23.0)
464 thor (~> 0.19.0)
465 pronto-eslint (0.9.1)
466 eslintrb (~> 2.0, >= 2.0.0)
467 pronto (~> 0.9.0)
468 pronto-haml (0.9.0)
469 haml_lint (~> 0.23)
470 pronto (~> 0.9.0)
471 pronto-rubocop (0.9.1)
472 pronto (~> 0.9.0)
473 rubocop (~> 0.50, >= 0.49.1)
474 pronto-scss (0.9.1)
475 pronto (~> 0.9.0)
476 scss_lint (~> 0.43, >= 0.43.0)
477 pry (0.12.2)
478 coderay (~> 1.1.0)
479 method_source (~> 0.9.0)
480 pry-byebug (3.6.0)
481 byebug (~> 10.0)
482 pry (~> 0.10)
483 public_suffix (3.0.3)
484 raabro (1.1.6)
485 rack (2.0.6)
486 rack-cors (1.0.2)
487 rack-google-analytics (1.2.0)
488 actionpack
489 activesupport
490 rack-mobile-detect (0.4.0)
491 rack
492 rack-oauth2 (1.9.3)
493 activesupport
494 attr_required
495 httpclient
496 json-jwt (>= 1.9.0)
497 rack
498 rack-piwik (0.3.0)
499 rack-protection (2.0.4)
500 rack
501 rack-rewrite (1.5.1)
502 rack-ssl (1.4.1)
503 rack
504 rack-test (1.1.0)
505 rack (>= 1.0, < 3)
506 rails (5.1.6)
507 actioncable (= 5.1.6)
508 actionmailer (= 5.1.6)
509 actionpack (= 5.1.6)
510 actionview (= 5.1.6)
511 activejob (= 5.1.6)
512 activemodel (= 5.1.6)
513 activerecord (= 5.1.6)
514 activesupport (= 5.1.6)
515 bundler (>= 1.3.0)
516 railties (= 5.1.6)
517 sprockets-rails (>= 2.0.0)
518 rails-assets-autosize (4.0.2)
519 rails-assets-backbone (1.3.3)
520 rails-assets-underscore (>= 1.8.3)
521 rails-assets-blueimp-gallery (2.33.0)
522 rails-assets-bootstrap (3.3.7)
523 rails-assets-jquery (>= 1.9.1, < 4)
524 rails-assets-bootstrap-markdown (2.10.0)
525 rails-assets-bootstrap (~> 3)
526 rails-assets-corejs-typeahead (1.2.1)
527 rails-assets-jquery (>= 1.11)
528 rails-assets-diaspora_jsxc (0.1.5.develop.7)
529 rails-assets-emojione (~> 2.0.1)
530 rails-assets-favico.js (>= 0.3.10, < 0.4)
531 rails-assets-jquery-colorbox (~> 1.6.3)
532 rails-assets-jquery-fullscreen-plugin (~> 0.5.0)
533 rails-assets-jquery.slimscroll (~> 1.3.6)
534 rails-assets-jquery.ui (~> 1.11.4)
535 rails-assets-emojione (2.0.1)
536 rails-assets-favico.js (0.3.10)
537 rails-assets-fine-uploader (5.13.0)
538 rails-assets-highlightjs (9.12.0)
539 rails-assets-jasmine (3.3.0)
540 rails-assets-jasmine-ajax (3.4.0)
541 rails-assets-jasmine (~> 3)
542 rails-assets-jquery (3.3.1)
543 rails-assets-jquery-colorbox (1.6.4)
544 rails-assets-jquery (>= 1.3.2)
545 rails-assets-jquery-fullscreen-plugin (0.5.0)
546 rails-assets-jquery-placeholder (2.3.1)
547 rails-assets-jquery (>= 1.6)
548 rails-assets-jquery-textchange (0.2.3)
549 rails-assets-jquery
550 rails-assets-jquery.are-you-sure (1.9.0)
551 rails-assets-jquery (>= 1.4.2)
552 rails-assets-jquery.slimscroll (1.3.8)
553 rails-assets-jquery.ui (1.11.4)
554 rails-assets-jquery (>= 1.6)
555 rails-assets-markdown-it--markdown-it-for-inline (0.1.1)
556 rails-assets-markdown-it (8.4.2)
557 rails-assets-markdown-it-diaspora-mention (1.2.0)
558 rails-assets-markdown-it-hashtag (0.4.0)
559 rails-assets-markdown-it-sanitizer (0.4.3)
560 rails-assets-markdown-it-sub (1.0.0)
561 rails-assets-markdown-it-sup (1.0.0)
562 rails-assets-underscore (1.9.1)
563 rails-assets-utatti-perfect-scrollbar (1.4.0)
564 rails-controller-testing (1.0.2)
565 actionpack (~> 5.x, >= 5.0.1)
566 actionview (~> 5.x, >= 5.0.1)
567 activesupport (~> 5.x)
568 rails-dom-testing (2.0.3)
569 activesupport (>= 4.2.0)
570 nokogiri (>= 1.6)
571 rails-html-sanitizer (1.0.4)
572 loofah (~> 2.2, >= 2.2.2)
573 rails-i18n (5.1.2)
574 i18n (>= 0.7, < 2)
575 railties (>= 5.0, < 6)
576 rails-timeago (2.16.0)
577 actionpack (>= 3.1)
578 activesupport (>= 3.1)
579 railties (5.1.6)
580 actionpack (= 5.1.6)
581 activesupport (= 5.1.6)
582 method_source
583 rake (>= 0.8.7)
584 thor (>= 0.18.1, < 2.0)
585 rainbow (2.2.2)
586 rake
587 raindrops (0.19.0)
588 rake (12.3.1)
589 rb-fsevent (0.10.3)
590 rb-inotify (0.9.10)
591 ffi (>= 0.5.0, < 2)
592 redcarpet (3.4.0)
593 redis (3.3.5)
594 regexp_parser (1.3.0)
595 request_store (1.4.1)
596 rack (>= 1.4)
597 responders (2.4.0)
598 actionpack (>= 4.2.0, < 5.3)
599 railties (>= 4.2.0, < 5.3)
600 rspec (3.8.0)
601 rspec-core (~> 3.8.0)
602 rspec-expectations (~> 3.8.0)
603 rspec-mocks (~> 3.8.0)
604 rspec-core (3.8.0)
605 rspec-support (~> 3.8.0)
606 rspec-expectations (3.8.2)
607 diff-lcs (>= 1.2.0, < 2.0)
608 rspec-support (~> 3.8.0)
609 rspec-json_expectations (2.1.0)
610 rspec-mocks (3.8.0)
611 diff-lcs (>= 1.2.0, < 2.0)
612 rspec-support (~> 3.8.0)
613 rspec-rails (3.8.1)
614 actionpack (>= 3.0)
615 activesupport (>= 3.0)
616 railties (>= 3.0)
617 rspec-core (~> 3.8.0)
618 rspec-expectations (~> 3.8.0)
619 rspec-mocks (~> 3.8.0)
620 rspec-support (~> 3.8.0)
621 rspec-support (3.8.0)
622 rubocop (0.60.0)
623 jaro_winkler (~> 1.5.1)
624 parallel (~> 1.10)
625 parser (>= 2.5, != 2.5.1.1)
626 powerpack (~> 0.1)
627 rainbow (>= 2.2.2, < 4.0)
628 ruby-progressbar (~> 1.7)
629 unicode-display_width (~> 1.4.0)
630 ruby-oembed (0.12.0)
631 ruby-progressbar (1.10.0)
632 ruby_dep (1.5.0)
633 rubyzip (1.2.2)
634 rugged (0.27.5)
635 safe_yaml (1.0.4)
636 sass (3.4.25)
637 sass-rails (5.0.7)
638 railties (>= 4.0.0, < 6)
639 sass (~> 3.1)
640 sprockets (>= 2.8, < 4.0)
641 sprockets-rails (>= 2.0, < 4.0)
642 tilt (>= 1.1, < 3)
643 sawyer (0.8.1)
644 addressable (>= 2.3.5, < 2.6)
645 faraday (~> 0.8, < 1.0)
646 scss_lint (0.55.0)
647 rake (>= 0.9, < 13)
648 sass (~> 3.4.20)
649 secure_headers (6.0.0)
650 shellany (0.0.1)
651 shoulda-matchers (3.1.2)
652 activesupport (>= 4.0.0)
653 sidekiq (5.2.3)
654 connection_pool (~> 2.2, >= 2.2.2)
655 rack-protection (>= 1.5.0)
656 redis (>= 3.3.5, < 5)
657 sidekiq-cron (1.0.4)
658 fugit (~> 1.1)
659 sidekiq (>= 4.2.1)
660 simple_captcha2 (0.4.3)
661 rails (>= 4.1)
662 simple_oauth (0.3.1)
663 simplecov (0.16.1)
664 docile (~> 1.1)
665 json (>= 1.8, < 3)
666 simplecov-html (~> 0.10.0)
667 simplecov-html (0.10.2)
668 sinon-rails (1.15.0)
669 railties (>= 3.1)
670 spring (2.0.2)
671 activesupport (>= 4.2)
672 spring-commands-cucumber (1.0.1)
673 spring (>= 0.9.1)
674 spring-commands-rspec (1.0.4)
675 spring (>= 0.9.1)
676 sprockets (3.7.2)
677 concurrent-ruby (~> 1.0)
678 rack (> 1, < 3)
679 sprockets-rails (3.2.1)
680 actionpack (>= 4.0)
681 activesupport (>= 4.0)
682 sprockets (>= 3.0.0)
683 state_machines (0.5.0)
684 string-direction (1.2.1)
685 swd (1.1.2)
686 activesupport (>= 3)
687 attr_required (>= 0.0.5)
688 httpclient (>= 2.4)
689 sysexits (1.2.0)
690 systemu (2.6.5)
691 temple (0.8.0)
692 term-ansicolor (1.7.0)
693 tins (~> 1.0)
694 terminal-table (1.8.0)
695 unicode-display_width (~> 1.1, >= 1.1.1)
696 thor (0.19.4)
697 thread_safe (0.3.6)
698 tilt (2.0.8)
699 timecop (0.9.1)
700 timers (4.2.0)
701 tins (1.20.2)
702 to_regexp (0.2.1)
703 turbo_dev_assets (0.0.2)
704 twitter (6.2.0)
705 addressable (~> 2.3)
706 buftok (~> 0.2.0)
707 equalizer (~> 0.0.11)
708 http (~> 3.0)
709 http-form_data (~> 2.0)
710 http_parser.rb (~> 0.6.0)
711 memoizable (~> 0.4.0)
712 multipart-post (~> 2.0)
713 naught (~> 1.0)
714 simple_oauth (~> 0.3.0)
715 twitter-text (1.14.7)
716 unf (~> 0.1.0)
717 typhoeus (1.3.1)
718 ethon (>= 0.9.0)
719 tzinfo (1.2.5)
720 thread_safe (~> 0.1)
721 uglifier (4.1.19)
722 execjs (>= 0.3.0, < 3)
723 unf (0.1.4)
724 unf_ext
725 unf_ext (0.0.7.5)
726 unicode-display_width (1.4.0)
727 unicorn (5.4.1)
728 kgio (~> 2.6)
729 raindrops (~> 0.7)
730 unicorn-worker-killer (0.4.4)
731 get_process_mem (~> 0)
732 unicorn (>= 4, < 6)
733 uuid (2.3.9)
734 macaddr (~> 1.0)
735 valid (1.2.0)
736 validate_email (0.1.6)
737 activemodel (>= 3.0)
738 mail (>= 2.2.5)
739 validate_url (1.0.2)
740 activemodel (>= 3.0.0)
741 addressable
742 versionist (1.7.0)
743 activesupport (>= 3)
744 railties (>= 3)
745 yard (~> 0.9.11)
746 warden (1.2.8)
747 rack (>= 2.0.6)
748 webfinger (1.1.0)
749 activesupport
750 httpclient (>= 2.4)
751 webmock (3.4.2)
752 addressable (>= 2.3.6)
753 crack (>= 0.3.2)
754 hashdiff
755 websocket-driver (0.6.5)
756 websocket-extensions (>= 0.1.0)
757 websocket-extensions (0.1.3)
758 will_paginate (3.1.6)
759 xpath (3.2.0)
760 nokogiri (~> 1.8)
761 yard (0.9.16)
762
763PLATFORMS
764 ruby
765
766DEPENDENCIES
767 active_model_serializers (= 0.9.7)
768 activerecord-import (= 0.27.0)
769 acts-as-taggable-on (= 6.0.0)
770 acts_as_api (= 1.0.1)
771 addressable (= 2.5.2)
772 asset_sync (= 2.5.0)
773 autoprefixer-rails (= 8.6.5)
774 bootstrap-sass (= 3.3.7)
775 bootstrap-switch-rails (= 3.3.4)
776 capybara (= 3.11.1)
777 carrierwave (= 1.2.3)
778 compass-rails (= 3.1.0)
779 configurate (= 0.3.1)
780 coveralls (= 0.8.22)
781 cucumber-api-steps (= 0.14)
782 cucumber-rails (= 1.6.0)
783 database_cleaner (= 1.7.0)
784 devise (= 4.5.0)
785 devise_lastseenable (= 0.0.6)
786 diaspora-prosody-config (= 0.0.7)
787 diaspora_federation-json_schema (= 0.2.5)
788 diaspora_federation-rails (= 0.2.5)
789 diaspora_federation-test (= 0.2.5)
790 entypo-rails (= 3.0.0)
791 eye (= 0.10.0)
792 factory_girl_rails (= 4.8.0)
793 faraday (= 0.15.3)
794 faraday-cookie_jar (= 0.0.6)
795 faraday_middleware (= 0.12.2)
796 fixture_builder (= 0.5.2.rc3)
797 fog-aws (= 3.3.0)
798 fuubar (= 2.3.2)
799 gon (= 6.2.1)
800 guard (= 2.15.0)
801 guard-rspec (= 4.7.3)
802 guard-rubocop (= 1.3.0)
803 haml_lint (= 0.28.0)
804 hamlit (= 2.9.1)
805 handlebars_assets (= 0.23.2)
806 http_accept_language (= 2.1.1)
807 i18n-inflector-rails (= 1.0.7)
808 jasmine (= 3.3.0)
809 jasmine-jquery-rails (= 2.0.3)
810 jquery-rails (= 4.3.3)
811 js-routes (= 1.4.4)
812 js_image_paths (= 0.1.1)
813 json (= 2.1.0)
814 json-schema (= 2.8.1)
815 json-schema-rspec (= 0.0.4)
816 leaflet-rails (= 1.3.1)
817 logging-rails (= 0.6.0)
818 markdown-it-html5-embed (= 1.0.0)
819 markerb (= 1.1.0)
820 mini_magick (= 4.9.2)
821 minitest
822 mobile-fu (= 1.4.0)
823 mysql2 (= 0.5.2)
824 net-ldap (~> 0.16)
825 nokogiri (= 1.8.5)
826 omniauth (= 1.8.1)
827 omniauth-tumblr (= 1.2)
828 omniauth-twitter (= 1.4.0)
829 omniauth-wordpress (= 0.2.2)
830 open_graph_reader (= 0.6.2)
831 openid_connect (= 1.1.6)
832 pg (= 1.1.3)
833 poltergeist (= 1.18.1)
834 pronto (= 0.9.5)
835 pronto-eslint (= 0.9.1)
836 pronto-haml (= 0.9.0)
837 pronto-rubocop (= 0.9.1)
838 pronto-scss (= 0.9.1)
839 pry
840 pry-byebug
841 rack-cors (= 1.0.2)
842 rack-google-analytics (= 1.2.0)
843 rack-piwik (= 0.3.0)
844 rack-rewrite (= 1.5.1)
845 rack-ssl (= 1.4.1)
846 rails (= 5.1.6)
847 rails-assets-autosize (= 4.0.2)!
848 rails-assets-backbone (= 1.3.3)!
849 rails-assets-blueimp-gallery (= 2.33.0)!
850 rails-assets-bootstrap-markdown (= 2.10.0)!
851 rails-assets-corejs-typeahead (= 1.2.1)!
852 rails-assets-diaspora_jsxc (= 0.1.5.develop.7)!
853 rails-assets-fine-uploader (= 5.13.0)!
854 rails-assets-highlightjs (= 9.12.0)!
855 rails-assets-jasmine-ajax (= 3.4.0)!
856 rails-assets-jquery (= 3.3.1)!
857 rails-assets-jquery-placeholder (= 2.3.1)!
858 rails-assets-jquery-textchange (= 0.2.3)!
859 rails-assets-jquery.are-you-sure (= 1.9.0)!
860 rails-assets-jquery.ui (= 1.11.4)!
861 rails-assets-markdown-it (= 8.4.2)!
862 rails-assets-markdown-it--markdown-it-for-inline (= 0.1.1)!
863 rails-assets-markdown-it-diaspora-mention (= 1.2.0)!
864 rails-assets-markdown-it-hashtag (= 0.4.0)!
865 rails-assets-markdown-it-sanitizer (= 0.4.3)!
866 rails-assets-markdown-it-sub (= 1.0.0)!
867 rails-assets-markdown-it-sup (= 1.0.0)!
868 rails-assets-utatti-perfect-scrollbar (= 1.4.0)!
869 rails-controller-testing (= 1.0.2)
870 rails-i18n (= 5.1.2)
871 rails-timeago (= 2.16.0)
872 rb-fsevent (= 0.10.3)
873 rb-inotify (= 0.9.10)
874 redcarpet (= 3.4.0)
875 redis (= 3.3.5)
876 responders (= 2.4.0)
877 rspec-json_expectations (~> 2.1)
878 rspec-rails (= 3.8.1)
879 rubocop (= 0.60.0)
880 ruby-oembed (= 0.12.0)
881 rubyzip (= 1.2.2)
882 sass-rails (= 5.0.7)
883 secure_headers (= 6.0.0)
884 shoulda-matchers (= 3.1.2)
885 sidekiq (= 5.2.3)
886 sidekiq-cron (= 1.0.4)
887 simple_captcha2 (= 0.4.3)
888 simplecov (= 0.16.1)
889 sinon-rails (= 1.15.0)
890 spring (= 2.0.2)
891 spring-commands-cucumber (= 1.0.1)
892 spring-commands-rspec (= 1.0.4)
893 sprockets-rails (= 3.2.1)
894 string-direction (= 1.2.1)
895 timecop (= 0.9.1)
896 turbo_dev_assets (= 0.0.2)
897 twitter (= 6.2.0)
898 twitter-text (= 1.14.7)
899 typhoeus (= 1.3.1)
900 uglifier (= 4.1.19)
901 unicorn (= 5.4.1)
902 unicorn-worker-killer (= 0.4.4)
903 uuid (= 2.3.9)
904 versionist (= 1.7.0)
905 webmock (= 3.4.2)
906 will_paginate (= 3.1.6)
907
908BUNDLED WITH
909 1.17.1
diff --git a/virtual/modules/websites/tools/diaspora/default.nix b/virtual/modules/websites/tools/diaspora/default.nix
deleted file mode 100644
index ae870b0..0000000
--- a/virtual/modules/websites/tools/diaspora/default.nix
+++ /dev/null
@@ -1,113 +0,0 @@
1{ lib, pkgs, config, myconfig, mylibs, ... }:
2let
3 diaspora = pkgs.callPackage ./diaspora.nix {
4 inherit (mylibs) fetchedGithub;
5 env = myconfig.env.tools.diaspora;
6 };
7
8 cfg = config.services.myWebsites.tools.diaspora;
9in {
10 options.services.myWebsites.tools.diaspora = {
11 enable = lib.mkEnableOption "enable diaspora's website";
12 };
13
14 config = lib.mkIf cfg.enable {
15 ids.uids.diaspora = 398;
16 ids.gids.diaspora = 398;
17
18 users.users.diaspora = {
19 name = "diaspora";
20 uid = config.ids.uids.diaspora;
21 group = "diaspora";
22 description = "Diaspora user";
23 home = diaspora.railsRoot;
24 useDefaultShell = true;
25 packages = [ diaspora.gems pkgs.nodejs diaspora.gems.ruby ];
26 };
27
28 users.groups.diaspora.gid = config.ids.gids.diaspora;
29
30 systemd.services.diaspora = {
31 description = "Diaspora";
32 wantedBy = [ "multi-user.target" ];
33 after = [ "network.target" "redis.service" "postgresql.service" ];
34 wants = [ "redis.service" "postgresql.service" ];
35
36 environment.RAILS_ENV = "production";
37 environment.BUNDLE_PATH = "${diaspora.gems}/${diaspora.gems.ruby.gemPath}";
38 environment.BUNDLE_GEMFILE = "${diaspora.gems.confFiles}/Gemfile";
39 environment.EYE_SOCK = "${diaspora.socketsDir}/eye.sock";
40 environment.EYE_PID = "${diaspora.socketsDir}/eye.pid";
41
42 path = [ diaspora.gems pkgs.nodejs diaspora.gems.ruby pkgs.curl pkgs.which pkgs.gawk ];
43
44 preStart = ''
45 ./bin/bundle exec rails db:migrate
46 '';
47
48 script = ''
49 exec ${diaspora.railsRoot}/script/server
50 '';
51
52 serviceConfig = {
53 User = "diaspora";
54 PrivateTmp = true;
55 Restart = "always";
56 Type = "simple";
57 WorkingDirectory = diaspora.railsRoot;
58 StandardInput = "null";
59 KillMode = "control-group";
60 };
61
62 unitConfig.RequiresMountsFor = diaspora.varDir;
63 };
64
65 system.activationScripts.diaspora = {
66 deps = [ "users" ];
67 text = ''
68 install -m 0755 -o diaspora -g diaspora -d ${diaspora.socketsDir}
69 install -m 0755 -o diaspora -g diaspora -d ${diaspora.varDir} \
70 ${diaspora.varDir}/uploads ${diaspora.varDir}/tmp \
71 ${diaspora.varDir}/log
72 install -m 0700 -o diaspora -g diaspora -d ${diaspora.varDir}/tmp/pids
73 if [ ! -f ${diaspora.varDir}/schedule.yml ]; then
74 echo "{}" | $wrapperDir/sudo -u diaspora tee ${diaspora.varDir}/schedule.yml
75 fi
76 '';
77 };
78
79 services.myWebsites.tools.modules = [
80 "headers" "proxy" "proxy_http" "proxy_balancer"
81 "lbmethod_byrequests" "lbmethod_bytraffic" "lbmethod_bybusyness" "lbmethod_heartbeat"
82 ];
83 security.acme.certs."eldiron".extraDomains."diaspora.immae.eu" = null;
84 services.myWebsites.tools.vhostConfs.diaspora = {
85 certName = "eldiron";
86 hosts = [ "diaspora.immae.eu" ];
87 root = "${diaspora.railsRoot}/public/";
88 extraConfig = [ ''
89 RewriteEngine On
90 RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f
91 RewriteRule ^/(.*)$ balancer://thinservers%{REQUEST_URI} [P,QSA,L]
92
93 <Proxy balancer://thinservers>
94 BalancerMember unix://${diaspora.railsSocket}|http://
95 </Proxy>
96
97 ProxyRequests Off
98 ProxyVia On
99 ProxyPreserveHost On
100 RequestHeader set X_FORWARDED_PROTO https
101
102 <Proxy *>
103 Require all granted
104 </Proxy>
105
106 <Directory ${diaspora.railsRoot}/public>
107 Require all granted
108 Options -MultiViews
109 </Directory>
110 '' ];
111 };
112 };
113}
diff --git a/virtual/modules/websites/tools/diaspora/diaspora.json b/virtual/modules/websites/tools/diaspora/diaspora.json
deleted file mode 100644
index d5891c1..0000000
--- a/virtual/modules/websites/tools/diaspora/diaspora.json
+++ /dev/null
@@ -1,15 +0,0 @@
1{
2 "tag": "v0.7.8.0",
3 "meta": {
4 "name": "diaspora",
5 "url": "https://github.com/diaspora/diaspora",
6 "branch": "refs/tags/v0.7.8.0"
7 },
8 "github": {
9 "owner": "diaspora",
10 "repo": "diaspora",
11 "rev": "e1b66f3c7cb72bd2cc9cf51475b31b005a547556",
12 "sha256": "1cgyb878zhdnkh7qa9qj8lwaf0jlb1prg1qnqasf7j5kgh9wn0nn",
13 "fetchSubmodules": true
14 }
15}
diff --git a/virtual/modules/websites/tools/diaspora/diaspora.nix b/virtual/modules/websites/tools/diaspora/diaspora.nix
deleted file mode 100644
index 798ebe6..0000000
--- a/virtual/modules/websites/tools/diaspora/diaspora.nix
+++ /dev/null
@@ -1,154 +0,0 @@
1{ env, fetchedGithub, stdenv, defaultGemConfig, writeText, bundlerEnv, ruby_2_4, pkgs, cacert }:
2let
3 gems = bundlerEnv {
4 name = "diaspora-env";
5 ruby = ruby_2_4;
6 gemdir = ./.;
7 gemConfig = defaultGemConfig // {
8 kostya-sigar = attrs: {
9 buildInputs = with pkgs; [ pkgs.perl ];
10 };
11 };
12 };
13 varDir = "/var/lib/diaspora_immae";
14 socketsDir = "/run/diaspora";
15 diaspora = stdenv.mkDerivation (fetchedGithub ./diaspora.json // rec {
16 buildPhase = ''
17 patch -p1 < ${./ldap.patch}
18 '';
19 installPhase = ''
20 cp -a . $out
21 '';
22 });
23 secret_token = writeText "secret_token.rb" ''
24 Diaspora::Application.config.secret_key_base = '${env.secret_token}'
25 '';
26 config = writeText "diaspora.yml" ''
27 configuration:
28 environment:
29 url: "https://diaspora.immae.eu/"
30 certificate_authorities: '${cacert}/etc/ssl/certs/ca-bundle.crt'
31 redis: '${env.redis_url}'
32 sidekiq:
33 s3:
34 assets:
35 logging:
36 logrotate:
37 debug:
38 server:
39 listen: '${socketsDir}/diaspora.sock'
40 rails_environment: 'production'
41 chat:
42 server:
43 bosh:
44 log:
45 map:
46 mapbox:
47 privacy:
48 piwik:
49 statistics:
50 camo:
51 settings:
52 enable_registrations: false
53 welcome_message:
54 invitations:
55 open: false
56 paypal_donations:
57 community_spotlight:
58 captcha:
59 enable: false
60 terms:
61 maintenance:
62 remove_old_users:
63 default_metas:
64 csp:
65 services:
66 twitter:
67 tumblr:
68 wordpress:
69 mail:
70 enable: true
71 sender_address: 'diaspora@immae.eu'
72 method: 'smtp'
73 smtp:
74 host: 'mail.immae.eu'
75 sendmail:
76 admins:
77 account: "ismael"
78 podmin_email: 'diaspora@immae.eu'
79 relay:
80 outbound:
81 inbound:
82 ldap:
83 enable: true
84 host: ldap.immae.eu
85 port: 636
86 only_ldap: true
87 mail_attribute: mail
88 skip_email_confirmation: true
89 use_bind_dn: true
90 bind_dn: "cn=diaspora,ou=services,dc=immae,dc=eu"
91 bind_pw: "${env.ldap.password}"
92 search_base: "dc=immae,dc=eu"
93 search_filter: "(&(memberOf=cn=users,cn=diaspora,ou=services,dc=immae,dc=eu)(uid=%{username}))"
94 production:
95 environment:
96 development:
97 environment:
98 '';
99 database_config = writeText "database.yml" ''
100 postgresql: &postgresql
101 adapter: postgresql
102 host: db-1.immae.eu
103 port: 5432
104 username: "diaspora"
105 password: "${env.postgresql.password}"
106 encoding: unicode
107 common: &common
108 <<: *postgresql
109 combined: &combined
110 <<: *common
111 development:
112 <<: *combined
113 database: diaspora_development
114 production:
115 <<: *combined
116 database: diaspora
117 test:
118 <<: *combined
119 database: "diaspora_test"
120 integration1:
121 <<: *combined
122 database: diaspora_integration1
123 integration2:
124 <<: *combined
125 database: diaspora_integration2
126 '';
127
128 railsRoot = stdenv.mkDerivation {
129 name = "diaspora_immae";
130 inherit diaspora;
131 builder = writeText "build_diaspora_immae" ''
132 source $stdenv/setup
133 cp -a $diaspora $out
134 cd $out
135 chmod -R u+rwX .
136 tar -czf public/source.tar.gz ./{app,db,lib,script,Gemfile,Gemfile.lock,Rakefile,config.ru}
137 ln -s ${database_config} config/database.yml
138 ln -s ${config} config/diaspora.yml
139 ln -s ${secret_token} config/initializers/secret_token.rb
140 ln -sf ../../../../../../${varDir}/schedule.yml config/schedule.yml
141 ln -sf ../../../../../../${varDir}/oidc_key.pem config/oidc_key.pem
142 ln -sf ../../../../../../${varDir}/uploads public/uploads
143 RAILS_ENV=production ${gems}/bin/rake assets:precompile
144 rm -rf tmp log
145 ln -sf ../../../../../${varDir}/tmp tmp
146 ln -sf ../../../../../${varDir}/log log
147 '';
148 propagatedBuildInputs = [ gems pkgs.nodejs pkgs.which pkgs.git ];
149 };
150in
151 {
152 inherit railsRoot varDir socketsDir gems;
153 railsSocket = "${socketsDir}/diaspora.sock";
154 }
diff --git a/virtual/modules/websites/tools/diaspora/gemset.nix b/virtual/modules/websites/tools/diaspora/gemset.nix
deleted file mode 100644
index 66482f0..0000000
--- a/virtual/modules/websites/tools/diaspora/gemset.nix
+++ /dev/null
@@ -1,3045 +0,0 @@
1{
2 actioncable = {
3 dependencies = ["actionpack" "nio4r" "websocket-driver"];
4 platforms = [];
5 source = {
6 remotes = ["https://rubygems.org"];
7 sha256 = "07r6hnh05db84yr9419mbhyzp20hr8yy9m50jxc2w91ghm2qnrrf";
8 type = "gem";
9 };
10 version = "5.1.6";
11 };
12 actionmailer = {
13 dependencies = ["actionpack" "actionview" "activejob" "mail" "rails-dom-testing"];
14 platforms = [];
15 source = {
16 remotes = ["https://rubygems.org"];
17 sha256 = "1s9xcqfx97q4yva2zc4qzb567mwzhry6v3x3zc318aqhcrz31g7c";
18 type = "gem";
19 };
20 version = "5.1.6";
21 };
22 actionpack = {
23 dependencies = ["actionview" "activesupport" "rack" "rack-test" "rails-dom-testing" "rails-html-sanitizer"];
24 platforms = [];
25 source = {
26 remotes = ["https://rubygems.org"];
27 sha256 = "0vz2ms80nqw21c304g3w2vkbs80gadzhi3mcwwym7smxccr37kcd";
28 type = "gem";
29 };
30 version = "5.1.6";
31 };
32 actionview = {
33 dependencies = ["activesupport" "builder" "erubi" "rails-dom-testing" "rails-html-sanitizer"];
34 platforms = [];
35 source = {
36 remotes = ["https://rubygems.org"];
37 sha256 = "1kfxlz9v7b47pdyy1whb4zzhvaj8h4sp1ajhbih2ax1hkldyg081";
38 type = "gem";
39 };
40 version = "5.1.6";
41 };
42 active_model_serializers = {
43 dependencies = ["activemodel" "concurrent-ruby"];
44 platforms = [];
45 source = {
46 remotes = ["https://rubygems.org"];
47 sha256 = "19zr5pp84q4ya7mfrcanakjv86lv4wfmbcbbd2xnd4bkyprw5w7z";
48 type = "gem";
49 };
50 version = "0.9.7";
51 };
52 activejob = {
53 dependencies = ["activesupport" "globalid"];
54 platforms = [];
55 source = {
56 remotes = ["https://rubygems.org"];
57 sha256 = "02lssq8ps98mfg20dyhcpd16f9c0v4zzy7gfbb6ksbs06wrrd4d2";
58 type = "gem";
59 };
60 version = "5.1.6";
61 };
62 activemodel = {
63 dependencies = ["activesupport"];
64 platforms = [];
65 source = {
66 remotes = ["https://rubygems.org"];
67 sha256 = "10f8cpv4sl1w3m1qj8hl6sd2f1n7x91h45qaf57qr894ll22jgby";
68 type = "gem";
69 };
70 version = "5.1.6";
71 };
72 activerecord = {
73 dependencies = ["activemodel" "activesupport" "arel"];
74 platforms = [];
75 source = {
76 remotes = ["https://rubygems.org"];
77 sha256 = "1iqkvxzx5bfp8rmlccww0cj1xr6iaxmn3hhbj1dv5j9c8mnm980x";
78 type = "gem";
79 };
80 version = "5.1.6";
81 };
82 activerecord-import = {
83 dependencies = ["activerecord"];
84 platforms = [];
85 source = {
86 remotes = ["https://rubygems.org"];
87 sha256 = "1bxpbrcwc9k6khizwdikvfbhw9pcvs4sp3h4grpcww5k7bgpliz6";
88 type = "gem";
89 };
90 version = "0.27.0";
91 };
92 activesupport = {
93 dependencies = ["concurrent-ruby" "i18n" "minitest" "tzinfo"];
94 platforms = [];
95 source = {
96 remotes = ["https://rubygems.org"];
97 sha256 = "08dm0mgmj31ggk7ib66wfagj4bgbr2jfl500bqb22x0szslz5lll";
98 type = "gem";
99 };
100 version = "5.1.6";
101 };
102 acts-as-taggable-on = {
103 dependencies = ["activerecord"];
104 platforms = [];
105 source = {
106 remotes = ["https://rubygems.org"];
107 sha256 = "0hl52pjgfzy3acdwnbxfqy08m808vlv9dmsyp03d5x7x0y499kvl";
108 type = "gem";
109 };
110 version = "6.0.0";
111 };
112 acts_as_api = {
113 dependencies = ["activemodel" "activesupport" "rack"];
114 platforms = [];
115 source = {
116 remotes = ["https://rubygems.org"];
117 sha256 = "06miad13nnfr2gslc203ahsbvj499s9lngxxvfizwp964vglygsc";
118 type = "gem";
119 };
120 version = "1.0.1";
121 };
122 addressable = {
123 dependencies = ["public_suffix"];
124 platforms = [];
125 source = {
126 remotes = ["https://rubygems.org"];
127 sha256 = "0viqszpkggqi8hq87pqp0xykhvz60g99nwmkwsb0v45kc2liwxvk";
128 type = "gem";
129 };
130 version = "2.5.2";
131 };
132 aes_key_wrap = {
133 platforms = [];
134 source = {
135 remotes = ["https://rubygems.org"];
136 sha256 = "0li86k0g812jkzrppb2fvqngvzp09nygywjpn81nx90s01wxqw07";
137 type = "gem";
138 };
139 version = "1.0.1";
140 };
141 arel = {
142 platforms = [];
143 source = {
144 remotes = ["https://rubygems.org"];
145 sha256 = "0nw0qbc6ph625p6n3maqq9f527vz3nbl0hk72fbyka8jzsmplxzl";
146 type = "gem";
147 };
148 version = "8.0.0";
149 };
150 asset_sync = {
151 dependencies = ["activemodel" "fog-core" "mime-types" "unf"];
152 platforms = [];
153 source = {
154 remotes = ["https://rubygems.org"];
155 sha256 = "0mfz51g8rzk5h5fpdhfkycnm7y4dpfhx46wm7fygna7nd4w9ixdx";
156 type = "gem";
157 };
158 version = "2.5.0";
159 };
160 ast = {
161 platforms = [];
162 source = {
163 remotes = ["https://rubygems.org"];
164 sha256 = "184ssy3w93nkajlz2c70ifm79jp3j737294kbc5fjw69v1w0n9x7";
165 type = "gem";
166 };
167 version = "2.4.0";
168 };
169 attr_required = {
170 platforms = [];
171 source = {
172 remotes = ["https://rubygems.org"];
173 sha256 = "1g22axmi2rhhy7w8c3x6gppsawxqavbrnxpnmphh22fk7cwi0kh2";
174 type = "gem";
175 };
176 version = "1.0.1";
177 };
178 autoprefixer-rails = {
179 dependencies = ["execjs"];
180 platforms = [];
181 source = {
182 remotes = ["https://rubygems.org"];
183 sha256 = "08irrl1mz6skagr1lygq79l34lc0dghgva0v9q7nng76dpiglgj3";
184 type = "gem";
185 };
186 version = "8.6.5";
187 };
188 backports = {
189 platforms = [];
190 source = {
191 remotes = ["https://rubygems.org"];
192 sha256 = "1hshjxww2h7s0dk57njrygq4zpp0nlqrjfya7zwm27iq3rhc3y8g";
193 type = "gem";
194 };
195 version = "3.11.4";
196 };
197 bcrypt = {
198 platforms = [];
199 source = {
200 remotes = ["https://rubygems.org"];
201 sha256 = "0ysblqxkclmnhrd0kmb5mr8p38mbar633gdsb14b7dhkhgawgzfy";
202 type = "gem";
203 };
204 version = "3.1.12";
205 };
206 bindata = {
207 platforms = [];
208 source = {
209 remotes = ["https://rubygems.org"];
210 sha256 = "0kz42nvxnk1j9cj0i8lcnhprcgdqsqska92g6l19ziadydfk2gqy";
211 type = "gem";
212 };
213 version = "2.4.4";
214 };
215 bootstrap-sass = {
216 dependencies = ["autoprefixer-rails" "sass"];
217 platforms = [];
218 source = {
219 remotes = ["https://rubygems.org"];
220 sha256 = "1bc9bf6caddqn1rv15b5x56yczmbjzaxzl9lk5zbwrg1bfph4bx9";
221 type = "gem";
222 };
223 version = "3.3.7";
224 };
225 bootstrap-switch-rails = {
226 platforms = [];
227 source = {
228 remotes = ["https://rubygems.org"];
229 sha256 = "0qdk7xx0zlv4l49s2mwg4jd8a5ms3cy43n9l3217bknagcjyjfjx";
230 type = "gem";
231 };
232 version = "3.3.4";
233 };
234 buftok = {
235 platforms = [];
236 source = {
237 remotes = ["https://rubygems.org"];
238 sha256 = "1rzsy1vy50v55x9z0nivf23y0r9jkmq6i130xa75pq9i8qrn1mxs";
239 type = "gem";
240 };
241 version = "0.2.0";
242 };
243 builder = {
244 platforms = [];
245 source = {
246 remotes = ["https://rubygems.org"];
247 sha256 = "0qibi5s67lpdv1wgcj66wcymcr04q6j4mzws6a479n0mlrmh5wr1";
248 type = "gem";
249 };
250 version = "3.2.3";
251 };
252 byebug = {
253 platforms = [];
254 source = {
255 remotes = ["https://rubygems.org"];
256 sha256 = "10znc1hjv8n686hhpl08f3m2g6h08a4b83nxblqwy2kqamkxcqf8";
257 type = "gem";
258 };
259 version = "10.0.2";
260 };
261 capybara = {
262 dependencies = ["addressable" "mini_mime" "nokogiri" "rack" "rack-test" "regexp_parser" "xpath"];
263 platforms = [];
264 source = {
265 remotes = ["https://rubygems.org"];
266 sha256 = "10zj8syak12xd1kqywr35bkr2hkdjq18kij54x1ys8c26h6j4d0m";
267 type = "gem";
268 };
269 version = "3.11.1";
270 };
271 carrierwave = {
272 dependencies = ["activemodel" "activesupport" "mime-types"];
273 platforms = [];
274 source = {
275 remotes = ["https://rubygems.org"];
276 sha256 = "1k9kla5ncygm97vn33lsrs7ch5zy4qqhhvc8m3khm986yaqh75qs";
277 type = "gem";
278 };
279 version = "1.2.3";
280 };
281 celluloid = {
282 dependencies = ["celluloid-essentials" "celluloid-extras" "celluloid-fsm" "celluloid-pool" "celluloid-supervision" "timers"];
283 platforms = [];
284 source = {
285 remotes = ["https://rubygems.org"];
286 sha256 = "10i29q7kkdlrhf5rg43xygdfm795a02vp28k2ca3nklmqna57qmg";
287 type = "gem";
288 };
289 version = "0.17.3";
290 };
291 celluloid-essentials = {
292 dependencies = ["timers"];
293 platforms = [];
294 source = {
295 remotes = ["https://rubygems.org"];
296 sha256 = "1l4p3p73wjdj07ww124q0db5k1cyzggbndzmcb12xbsf2dnj121k";
297 type = "gem";
298 };
299 version = "0.20.5";
300 };
301 celluloid-extras = {
302 dependencies = ["timers"];
303 platforms = [];
304 source = {
305 remotes = ["https://rubygems.org"];
306 sha256 = "078agvnsfp78jv343kn5g1cz50147dk0q46blwh5r8lk6whag7ng";
307 type = "gem";
308 };
309 version = "0.20.5";
310 };
311 celluloid-fsm = {
312 dependencies = ["timers"];
313 platforms = [];
314 source = {
315 remotes = ["https://rubygems.org"];
316 sha256 = "1pmpi6h4abpkczp46rd6llk1mldpx19i9hll8mkxp3kxin9slivc";
317 type = "gem";
318 };
319 version = "0.20.5";
320 };
321 celluloid-io = {
322 dependencies = ["celluloid" "nio4r" "timers"];
323 platforms = [];
324 source = {
325 remotes = ["https://rubygems.org"];
326 sha256 = "1frcpja7h9vcxsw7w7ff550x54rfx514fpv2n6kawbk1j4zrm314";
327 type = "gem";
328 };
329 version = "0.17.3";
330 };
331 celluloid-pool = {
332 dependencies = ["timers"];
333 platforms = [];
334 source = {
335 remotes = ["https://rubygems.org"];
336 sha256 = "1bfr54ijl95bnhqlabhf5p4ff9n0y2sslc91f49jjn33n2zm755c";
337 type = "gem";
338 };
339 version = "0.20.5";
340 };
341 celluloid-supervision = {
342 dependencies = ["timers"];
343 platforms = [];
344 source = {
345 remotes = ["https://rubygems.org"];
346 sha256 = "1b41gg1rsmms0m5mshy6h66y5rydl3nv6x9wf050ixfa1s2c8vzw";
347 type = "gem";
348 };
349 version = "0.20.6";
350 };
351 chunky_png = {
352 platforms = [];
353 source = {
354 remotes = ["https://rubygems.org"];
355 sha256 = "05g2xli9wbjylkmblln3bhvjalziwb92q452q8ibjagmb853424w";
356 type = "gem";
357 };
358 version = "1.3.10";
359 };
360 cliver = {
361 platforms = [];
362 source = {
363 remotes = ["https://rubygems.org"];
364 sha256 = "096f4rj7virwvqxhkavy0v55rax10r4jqf8cymbvn4n631948xc7";
365 type = "gem";
366 };
367 version = "0.3.2";
368 };
369 coderay = {
370 platforms = [];
371 source = {
372 remotes = ["https://rubygems.org"];
373 sha256 = "15vav4bhcc2x3jmi3izb11l4d9f3xv8hp2fszb7iqmpsccv1pz4y";
374 type = "gem";
375 };
376 version = "1.1.2";
377 };
378 compass = {
379 dependencies = ["chunky_png" "compass-core" "compass-import-once" "rb-fsevent" "rb-inotify" "sass"];
380 platforms = [];
381 source = {
382 remotes = ["https://rubygems.org"];
383 sha256 = "0lfi83w8z75czr0pf0rmj9hda22082h3cmvczl8r1ma9agf88y2c";
384 type = "gem";
385 };
386 version = "1.0.3";
387 };
388 compass-core = {
389 dependencies = ["multi_json" "sass"];
390 platforms = [];
391 source = {
392 remotes = ["https://rubygems.org"];
393 sha256 = "0yaspqwdmzwdcqviclbs3blq7an16pysrfzylz8q1gxmmd6bpj3a";
394 type = "gem";
395 };
396 version = "1.0.3";
397 };
398 compass-import-once = {
399 dependencies = ["sass"];
400 platforms = [];
401 source = {
402 remotes = ["https://rubygems.org"];
403 sha256 = "0bn7gwbfz7jvvdd0qdfqlx67fcb83gyvxqc7dr9fhcnks3z8z5rq";
404 type = "gem";
405 };
406 version = "1.0.5";
407 };
408 compass-rails = {
409 dependencies = ["compass" "sass-rails" "sprockets"];
410 platforms = [];
411 source = {
412 remotes = ["https://rubygems.org"];
413 sha256 = "02ydlbl1qb80myjv5xrpwzhmmj6qd80jf5izvpqhq2bikv84j9wr";
414 type = "gem";
415 };
416 version = "3.1.0";
417 };
418 concurrent-ruby = {
419 platforms = [];
420 source = {
421 remotes = ["https://rubygems.org"];
422 sha256 = "18q9skp5pfq4jwbxzmw8q2rn4cpw6mf4561i2hsjcl1nxdag2jvb";
423 type = "gem";
424 };
425 version = "1.1.3";
426 };
427 configurate = {
428 platforms = [];
429 source = {
430 remotes = ["https://rubygems.org"];
431 sha256 = "1m6cppb4jf7liwc3f5dvgn2v2nhp2jq8ixb9papaqz24f4s8dnd1";
432 type = "gem";
433 };
434 version = "0.3.1";
435 };
436 connection_pool = {
437 platforms = [];
438 source = {
439 remotes = ["https://rubygems.org"];
440 sha256 = "0lflx29mlznf1hn0nihkgllzbj8xp5qasn8j7h838465pi399k68";
441 type = "gem";
442 };
443 version = "2.2.2";
444 };
445 coveralls = {
446 dependencies = ["json" "simplecov" "term-ansicolor" "thor" "tins"];
447 platforms = [];
448 source = {
449 remotes = ["https://rubygems.org"];
450 sha256 = "022kc16np6w4mv17hq3m9hhw9l8hjl78ld3fzqqx6337vwvwvwcg";
451 type = "gem";
452 };
453 version = "0.8.22";
454 };
455 crack = {
456 dependencies = ["safe_yaml"];
457 platforms = [];
458 source = {
459 remotes = ["https://rubygems.org"];
460 sha256 = "0abb0fvgw00akyik1zxnq7yv391va148151qxdghnzngv66bl62k";
461 type = "gem";
462 };
463 version = "0.4.3";
464 };
465 crass = {
466 platforms = [];
467 source = {
468 remotes = ["https://rubygems.org"];
469 sha256 = "0bpxzy6gjw9ggjynlxschbfsgmx8lv3zw1azkjvnb8b9i895dqfi";
470 type = "gem";
471 };
472 version = "1.0.4";
473 };
474 cucumber = {
475 dependencies = ["builder" "cucumber-core" "cucumber-expressions" "cucumber-wire" "diff-lcs" "gherkin" "multi_json" "multi_test"];
476 platforms = [];
477 source = {
478 remotes = ["https://rubygems.org"];
479 sha256 = "1s2brssrpal8hyhcgg974x3xyhpmvpwps5ypd9p8w2lg01l1pp3j";
480 type = "gem";
481 };
482 version = "3.1.2";
483 };
484 cucumber-api-steps = {
485 dependencies = ["cucumber" "jsonpath"];
486 platforms = [];
487 source = {
488 remotes = ["https://rubygems.org"];
489 sha256 = "0fij6bgzshda68jp7kac0hs5n6xsmv49g8ynqhy6s3znc9d4qjbw";
490 type = "gem";
491 };
492 version = "0.14.0";
493 };
494 cucumber-core = {
495 dependencies = ["backports" "cucumber-tag_expressions" "gherkin"];
496 platforms = [];
497 source = {
498 remotes = ["https://rubygems.org"];
499 sha256 = "1iavlh8hqj9lwljbpkw06259gdicbr1bdb6pbj5yy3n8szgr8k3c";
500 type = "gem";
501 };
502 version = "3.2.1";
503 };
504 cucumber-expressions = {
505 platforms = [];
506 source = {
507 remotes = ["https://rubygems.org"];
508 sha256 = "0zwmv6hznyz9vk81f5dhwcr9jhxx2vmbk8yyazayvllvhy0fkpdw";
509 type = "gem";
510 };
511 version = "6.0.1";
512 };
513 cucumber-rails = {
514 dependencies = ["capybara" "cucumber" "mime-types" "nokogiri" "railties"];
515 platforms = [];
516 source = {
517 remotes = ["https://rubygems.org"];
518 sha256 = "0pmlza6r2601k1i7v3z8gj4apdcq6qa830bzwkj1pnfjzn4z12n7";
519 type = "gem";
520 };
521 version = "1.6.0";
522 };
523 cucumber-tag_expressions = {
524 platforms = [];
525 source = {
526 remotes = ["https://rubygems.org"];
527 sha256 = "0cvmbljybws0qzjs1l67fvr9gqr005l8jk1ni5gcsis9pfmqh3vc";
528 type = "gem";
529 };
530 version = "1.1.1";
531 };
532 cucumber-wire = {
533 platforms = [];
534 source = {
535 remotes = ["https://rubygems.org"];
536 sha256 = "09ymvqb0sbw2if1nxg8rcj33sf0va88ancq5nmp8g01dfwzwma2f";
537 type = "gem";
538 };
539 version = "0.0.1";
540 };
541 database_cleaner = {
542 platforms = [];
543 source = {
544 remotes = ["https://rubygems.org"];
545 sha256 = "05i0nf2aj70m61y3fspypdkc6d1qgibf5kav05a71b5gjz0k7y5x";
546 type = "gem";
547 };
548 version = "1.7.0";
549 };
550 devise = {
551 dependencies = ["bcrypt" "orm_adapter" "railties" "responders" "warden"];
552 platforms = [];
553 source = {
554 remotes = ["https://rubygems.org"];
555 sha256 = "1vs8nibl568ghm6a7hbw6xgcv8zbm4gykprcxpnzi7bz5d4gvcjx";
556 type = "gem";
557 };
558 version = "4.5.0";
559 };
560 devise_lastseenable = {
561 dependencies = ["devise" "rails"];
562 platforms = [];
563 source = {
564 remotes = ["https://rubygems.org"];
565 sha256 = "1h83h73qjh8fc7lmr089shky8lc3wm4xn653rjdbb0cddflvrx8y";
566 type = "gem";
567 };
568 version = "0.0.6";
569 };
570 diaspora-prosody-config = {
571 platforms = [];
572 source = {
573 remotes = ["https://rubygems.org"];
574 sha256 = "1976ijqjf5jcq1jwr6vi0srjadhbqfa9y3nxyipzcv91pzskl2lp";
575 type = "gem";
576 };
577 version = "0.0.7";
578 };
579 diaspora_federation = {
580 dependencies = ["faraday" "faraday_middleware" "nokogiri" "typhoeus" "valid"];
581 platforms = [];
582 source = {
583 remotes = ["https://rubygems.org"];
584 sha256 = "1xxy6ahlhgyr00qkfmmq0h3nqm6gjkr9i6hsqr0nkb3l6qg0m0yc";
585 type = "gem";
586 };
587 version = "0.2.5";
588 };
589 diaspora_federation-json_schema = {
590 platforms = [];
591 source = {
592 remotes = ["https://rubygems.org"];
593 sha256 = "0hfv4cq5wfdg86xmbp5y0h50b11326ymzks1yr9dvr4wa7di00hr";
594 type = "gem";
595 };
596 version = "0.2.5";
597 };
598 diaspora_federation-rails = {
599 dependencies = ["actionpack" "diaspora_federation"];
600 platforms = [];
601 source = {
602 remotes = ["https://rubygems.org"];
603 sha256 = "1wrni7d9084v3pqd3sq8j532wx5ym6kmd959bw29bzwxc3zidd9h";
604 type = "gem";
605 };
606 version = "0.2.5";
607 };
608 diaspora_federation-test = {
609 dependencies = ["diaspora_federation" "fabrication" "uuid"];
610 platforms = [];
611 source = {
612 remotes = ["https://rubygems.org"];
613 sha256 = "1b09y78pyl9kix8slbybnks2cbq0ac9wml31j2s6qwjixranjsm4";
614 type = "gem";
615 };
616 version = "0.2.5";
617 };
618 diff-lcs = {
619 platforms = [];
620 source = {
621 remotes = ["https://rubygems.org"];
622 sha256 = "18w22bjz424gzafv6nzv98h0aqkwz3d9xhm7cbr1wfbyas8zayza";
623 type = "gem";
624 };
625 version = "1.3";
626 };
627 docile = {
628 platforms = [];
629 source = {
630 remotes = ["https://rubygems.org"];
631 sha256 = "04d2izkna3ahfn6fwq4xrcafa715d3bbqczxm16fq40fqy87xn17";
632 type = "gem";
633 };
634 version = "1.3.1";
635 };
636 domain_name = {
637 dependencies = ["unf"];
638 platforms = [];
639 source = {
640 remotes = ["https://rubygems.org"];
641 sha256 = "0abdlwb64ns7ssmiqhdwgl27ly40x2l27l8hs8hn0z4kb3zd2x3v";
642 type = "gem";
643 };
644 version = "0.5.20180417";
645 };
646 entypo-rails = {
647 dependencies = ["railties"];
648 platforms = [];
649 source = {
650 remotes = ["https://rubygems.org"];
651 sha256 = "124x0jszg6n0k2lcacd627ndlp1fv7cbgnv4scwy5s3czp0qwip6";
652 type = "gem";
653 };
654 version = "3.0.0";
655 };
656 equalizer = {
657 platforms = [];
658 source = {
659 remotes = ["https://rubygems.org"];
660 sha256 = "1kjmx3fygx8njxfrwcmn7clfhjhb6bvv3scy2lyyi0wqyi3brra4";
661 type = "gem";
662 };
663 version = "0.0.11";
664 };
665 erubi = {
666 platforms = [];
667 source = {
668 remotes = ["https://rubygems.org"];
669 sha256 = "0bws86na9k565raiz0kk61yy5pxxp0fmwyzpibdwjkq0xzx8q6q1";
670 type = "gem";
671 };
672 version = "1.7.1";
673 };
674 eslintrb = {
675 dependencies = ["execjs" "multi_json" "rake"];
676 platforms = [];
677 source = {
678 remotes = ["https://rubygems.org"];
679 sha256 = "0kx9sbs7pnl436zyczylnqqb1858hffy66fwdqfmcn18q8xdqwkx";
680 type = "gem";
681 };
682 version = "2.1.0";
683 };
684 et-orbi = {
685 dependencies = ["tzinfo"];
686 platforms = [];
687 source = {
688 remotes = ["https://rubygems.org"];
689 sha256 = "0wk7i0bmsy46la8gcvbmdns0ni8lmdqas838phj97bdwykxw8m4b";
690 type = "gem";
691 };
692 version = "1.1.6";
693 };
694 ethon = {
695 dependencies = ["ffi"];
696 platforms = [];
697 source = {
698 remotes = ["https://rubygems.org"];
699 sha256 = "0y70szwm2p0b9qfvpqrzjrgm3jz0ig65vlbfr6ppc3z0m1h7kv48";
700 type = "gem";
701 };
702 version = "0.11.0";
703 };
704 excon = {
705 platforms = [];
706 source = {
707 remotes = ["https://rubygems.org"];
708 sha256 = "15l9w0938c19nxmrp09n75qpmm64k12xj69h47yvxzcxcpbgnkb2";
709 type = "gem";
710 };
711 version = "0.62.0";
712 };
713 execjs = {
714 platforms = [];
715 source = {
716 remotes = ["https://rubygems.org"];
717 sha256 = "1yz55sf2nd3l666ms6xr18sm2aggcvmb8qr3v53lr4rir32y1yp1";
718 type = "gem";
719 };
720 version = "2.7.0";
721 };
722 eye = {
723 dependencies = ["celluloid" "celluloid-io" "kostya-sigar" "state_machines" "thor"];
724 platforms = [];
725 source = {
726 remotes = ["https://rubygems.org"];
727 sha256 = "0gqrrrisy492m6sczq775dyg9sxkl926r8lkr6z33kfb4cnimfzk";
728 type = "gem";
729 };
730 version = "0.10.0";
731 };
732 fabrication = {
733 platforms = [];
734 source = {
735 remotes = ["https://rubygems.org"];
736 sha256 = "0an28kjand4mjbkmnwd9fmgq3y5vf717zpmiijavar3sxqj52zri";
737 type = "gem";
738 };
739 version = "2.20.1";
740 };
741 factory_girl = {
742 dependencies = ["activesupport"];
743 platforms = [];
744 source = {
745 remotes = ["https://rubygems.org"];
746 sha256 = "0cc60v28r7w1gp34p4amzdnq7cyip6qhffvxywsj3ypilyf8jqla";
747 type = "gem";
748 };
749 version = "4.8.0";
750 };
751 factory_girl_rails = {
752 dependencies = ["factory_girl" "railties"];
753 platforms = [];
754 source = {
755 remotes = ["https://rubygems.org"];
756 sha256 = "0hw8qqp30vm4yf4a36r1r65wk78ihxmas7jg5fyl6fcf705z9fvv";
757 type = "gem";
758 };
759 version = "4.8.0";
760 };
761 faraday = {
762 dependencies = ["multipart-post"];
763 platforms = [];
764 source = {
765 remotes = ["https://rubygems.org"];
766 sha256 = "16hwxc8v0z6gkanckjhx0ffgqmzpc4ywz4dfhxpjlz2mbz8d5m52";
767 type = "gem";
768 };
769 version = "0.15.3";
770 };
771 faraday-cookie_jar = {
772 dependencies = ["faraday" "http-cookie"];
773 platforms = [];
774 source = {
775 remotes = ["https://rubygems.org"];
776 sha256 = "1di4gx6446a6zdkrpj679m5k515i53wvb4yxcsqvy8d8zacxiiv6";
777 type = "gem";
778 };
779 version = "0.0.6";
780 };
781 faraday_middleware = {
782 dependencies = ["faraday"];
783 platforms = [];
784 source = {
785 remotes = ["https://rubygems.org"];
786 sha256 = "1p7icfl28nvl8qqdsngryz1snqic9l8x6bk0dxd7ygn230y0k41d";
787 type = "gem";
788 };
789 version = "0.12.2";
790 };
791 ffi = {
792 platforms = [];
793 source = {
794 remotes = ["https://rubygems.org"];
795 sha256 = "0jpm2dis1j7zvvy3lg7axz9jml316zrn7s0j59vyq3qr127z0m7q";
796 type = "gem";
797 };
798 version = "1.9.25";
799 };
800 fixture_builder = {
801 dependencies = ["activerecord" "activesupport" "hashdiff"];
802 platforms = [];
803 source = {
804 remotes = ["https://rubygems.org"];
805 sha256 = "1qlq0nyfhjvz09hm0jankl9bgs9672k31b3lmsfq8p135x3xs627";
806 type = "gem";
807 };
808 version = "0.5.2.rc3";
809 };
810 fog-aws = {
811 dependencies = ["fog-core" "fog-json" "fog-xml" "ipaddress"];
812 platforms = [];
813 source = {
814 remotes = ["https://rubygems.org"];
815 sha256 = "1zprxg0spvkkri1jf40zg3rfr5h2gq6009d7l36lifpvhjn658cs";
816 type = "gem";
817 };
818 version = "3.3.0";
819 };
820 fog-core = {
821 dependencies = ["builder" "excon" "formatador" "mime-types"];
822 platforms = [];
823 source = {
824 remotes = ["https://rubygems.org"];
825 sha256 = "1fsama04wlxhv537bm4b7rr4zzn0mvisy87m3qzv6f0mhlrq3zp8";
826 type = "gem";
827 };
828 version = "2.1.2";
829 };
830 fog-json = {
831 dependencies = ["fog-core" "multi_json"];
832 platforms = [];
833 source = {
834 remotes = ["https://rubygems.org"];
835 sha256 = "1zj8llzc119zafbmfa4ai3z5s7c4vp9akfs0f9l2piyvcarmlkyx";
836 type = "gem";
837 };
838 version = "1.2.0";
839 };
840 fog-xml = {
841 dependencies = ["fog-core" "nokogiri"];
842 platforms = [];
843 source = {
844 remotes = ["https://rubygems.org"];
845 sha256 = "043lwdw2wsi6d55ifk0w3izi5l1d1h0alwyr3fixic7b94kc812n";
846 type = "gem";
847 };
848 version = "0.1.3";
849 };
850 formatador = {
851 platforms = [];
852 source = {
853 remotes = ["https://rubygems.org"];
854 sha256 = "1gc26phrwlmlqrmz4bagq1wd5b7g64avpx0ghxr9xdxcvmlii0l0";
855 type = "gem";
856 };
857 version = "0.2.5";
858 };
859 fugit = {
860 dependencies = ["et-orbi" "raabro"];
861 platforms = [];
862 source = {
863 remotes = ["https://rubygems.org"];
864 sha256 = "1szijawzdii668z5is9xi849399gy786951dx0l5r2z5mbfqvl9i";
865 type = "gem";
866 };
867 version = "1.1.6";
868 };
869 fuubar = {
870 dependencies = ["rspec-core" "ruby-progressbar"];
871 platforms = [];
872 source = {
873 remotes = ["https://rubygems.org"];
874 sha256 = "1sqkr1nh49rlm86l3qyrgsdqavgqii4pnrjn7855z6dfavh3spxr";
875 type = "gem";
876 };
877 version = "2.3.2";
878 };
879 get_process_mem = {
880 platforms = [];
881 source = {
882 remotes = ["https://rubygems.org"];
883 sha256 = "1bvfjdign16r0zwm2rlfrq0sk1licvmlgbnlpnyckniv5r7i080g";
884 type = "gem";
885 };
886 version = "0.2.3";
887 };
888 gherkin = {
889 platforms = [];
890 source = {
891 remotes = ["https://rubygems.org"];
892 sha256 = "1cgcdchwwdm10rsk44frjwqd4ihprhxjbm799nscqy2q1raqfj5s";
893 type = "gem";
894 };
895 version = "5.1.0";
896 };
897 gitlab = {
898 dependencies = ["httparty" "terminal-table"];
899 platforms = [];
900 source = {
901 remotes = ["https://rubygems.org"];
902 sha256 = "1nncjmk71ivjxmgkpv100yybry5c7ld6xjgi1b5zsfv4g3mz0v34";
903 type = "gem";
904 };
905 version = "4.7.0";
906 };
907 globalid = {
908 dependencies = ["activesupport"];
909 platforms = [];
910 source = {
911 remotes = ["https://rubygems.org"];
912 sha256 = "02smrgdi11kziqi9zhnsy9i6yr2fnxrqlv3lllsvdjki3cd4is38";
913 type = "gem";
914 };
915 version = "0.4.1";
916 };
917 gon = {
918 dependencies = ["actionpack" "multi_json" "request_store"];
919 platforms = [];
920 source = {
921 remotes = ["https://rubygems.org"];
922 sha256 = "07sm7fd94pfscrbs4lyprs0das8s1yn32cw521ch738jaqb388xl";
923 type = "gem";
924 };
925 version = "6.2.1";
926 };
927 guard = {
928 dependencies = ["formatador" "listen" "lumberjack" "nenv" "notiffany" "pry" "shellany" "thor"];
929 platforms = [];
930 source = {
931 remotes = ["https://rubygems.org"];
932 sha256 = "0h84ja6qvii3hx86w9l4vjpbgl4m8ma8fbawwp7s8l791cgkdcmk";
933 type = "gem";
934 };
935 version = "2.15.0";
936 };
937 guard-compat = {
938 platforms = [];
939 source = {
940 remotes = ["https://rubygems.org"];
941 sha256 = "1zj6sr1k8w59mmi27rsii0v8xyy2rnsi09nqvwpgj1q10yq1mlis";
942 type = "gem";
943 };
944 version = "1.2.1";
945 };
946 guard-rspec = {
947 dependencies = ["guard" "guard-compat" "rspec"];
948 platforms = [];
949 source = {
950 remotes = ["https://rubygems.org"];
951 sha256 = "1jkm5xp90gm4c5s51pmf92i9hc10gslwwic6mvk72g0yplya0yx4";
952 type = "gem";
953 };
954 version = "4.7.3";
955 };
956 guard-rubocop = {
957 dependencies = ["guard" "rubocop"];
958 platforms = [];
959 source = {
960 remotes = ["https://rubygems.org"];
961 sha256 = "1p97zkzasghl1md13rh57n3s2rr2kqly8w4vfn6vaj89igjpagdp";
962 type = "gem";
963 };
964 version = "1.3.0";
965 };
966 haml = {
967 dependencies = ["temple" "tilt"];
968 platforms = [];
969 source = {
970 remotes = ["https://rubygems.org"];
971 sha256 = "1q0a9fvqh8kn6wm97fcks6qzbjd400bv8bx748w8v87m7p4klhac";
972 type = "gem";
973 };
974 version = "5.0.4";
975 };
976 haml_lint = {
977 dependencies = ["haml" "rainbow" "rake" "rubocop" "sysexits"];
978 platforms = [];
979 source = {
980 remotes = ["https://rubygems.org"];
981 sha256 = "125aj0j84nx5gqm42hfx5d8486higlra423ahgfpsdjwbp399rwv";
982 type = "gem";
983 };
984 version = "0.28.0";
985 };
986 hamlit = {
987 dependencies = ["temple" "thor" "tilt"];
988 platforms = [];
989 source = {
990 remotes = ["https://rubygems.org"];
991 sha256 = "14fsc208qsf46cflk23vs2fdw435dk65fwv55zhziciwn96ld8sf";
992 type = "gem";
993 };
994 version = "2.9.1";
995 };
996 handlebars_assets = {
997 dependencies = ["execjs" "sprockets" "tilt"];
998 platforms = [];
999 source = {
1000 remotes = ["https://rubygems.org"];
1001 sha256 = "18pyksz4jb0n28acqxv14ahy8mkc9ldqbbn73gcj28m0l9wjzsca";
1002 type = "gem";
1003 };
1004 version = "0.23.2";
1005 };
1006 hashdiff = {
1007 platforms = [];
1008 source = {
1009 remotes = ["https://rubygems.org"];
1010 sha256 = "0yj5l2rw8i8jc725hbcpc4wks0qlaaimr3dpaqamfjkjkxl0hjp9";
1011 type = "gem";
1012 };
1013 version = "0.3.7";
1014 };
1015 hashie = {
1016 platforms = [];
1017 source = {
1018 remotes = ["https://rubygems.org"];
1019 sha256 = "1hh5lybf8hm7d7xs4xm8hxvm8xqrs2flc8fnwkrclaj746izw6xb";
1020 type = "gem";
1021 };
1022 version = "3.5.7";
1023 };
1024 http = {
1025 dependencies = ["addressable" "http-cookie" "http-form_data" "http_parser.rb"];
1026 platforms = [];
1027 source = {
1028 remotes = ["https://rubygems.org"];
1029 sha256 = "1jlm5prw437wqpfxcigh88lfap3m7g8mnmj5as7qw6dzqnvrxwmc";
1030 type = "gem";
1031 };
1032 version = "3.3.0";
1033 };
1034 http-cookie = {
1035 dependencies = ["domain_name"];
1036 platforms = [];
1037 source = {
1038 remotes = ["https://rubygems.org"];
1039 sha256 = "004cgs4xg5n6byjs7qld0xhsjq3n6ydfh897myr2mibvh6fjc49g";
1040 type = "gem";
1041 };
1042 version = "1.0.3";
1043 };
1044 http-form_data = {
1045 platforms = [];
1046 source = {
1047 remotes = ["https://rubygems.org"];
1048 sha256 = "15lpn604byf7cyxnw949xz4rvpcknqp7a48q73nm630gqxsa76f3";
1049 type = "gem";
1050 };
1051 version = "2.1.1";
1052 };
1053 http_accept_language = {
1054 platforms = [];
1055 source = {
1056 remotes = ["https://rubygems.org"];
1057 sha256 = "0d0nlfz9vm4jr1l6q0chx4rp2hrnrfbx3gadc1dz930lbbaz0hq0";
1058 type = "gem";
1059 };
1060 version = "2.1.1";
1061 };
1062 "http_parser.rb" = {
1063 platforms = [];
1064 source = {
1065 remotes = ["https://rubygems.org"];
1066 sha256 = "15nidriy0v5yqfjsgsra51wmknxci2n2grliz78sf9pga3n0l7gi";
1067 type = "gem";
1068 };
1069 version = "0.6.0";
1070 };
1071 httparty = {
1072 dependencies = ["mime-types" "multi_xml"];
1073 platforms = [];
1074 source = {
1075 remotes = ["https://rubygems.org"];
1076 sha256 = "1xmm7pxmz3pblkdr76dg7qm5s60kpp3yvh46c2i0bn1dm0zgl730";
1077 type = "gem";
1078 };
1079 version = "0.16.3";
1080 };
1081 httpclient = {
1082 platforms = [];
1083 source = {
1084 remotes = ["https://rubygems.org"];
1085 sha256 = "19mxmvghp7ki3klsxwrlwr431li7hm1lczhhj8z4qihl2acy8l99";
1086 type = "gem";
1087 };
1088 version = "2.8.3";
1089 };
1090 i18n = {
1091 dependencies = ["concurrent-ruby"];
1092 platforms = [];
1093 source = {
1094 remotes = ["https://rubygems.org"];
1095 sha256 = "1gcp1m1p6dpasycfz2sj82ci9ggz7lsskz9c9q6gvfwxrl8y9dx7";
1096 type = "gem";
1097 };
1098 version = "1.1.1";
1099 };
1100 i18n-inflector = {
1101 dependencies = ["i18n"];
1102 platforms = [];
1103 source = {
1104 remotes = ["https://rubygems.org"];
1105 sha256 = "081jr7z947aqjfmpbfs10w9jxi205jwgk4mgd8jds1b4m4i8mc7g";
1106 type = "gem";
1107 };
1108 version = "2.6.7";
1109 };
1110 i18n-inflector-rails = {
1111 dependencies = ["actionpack" "i18n-inflector" "railties"];
1112 platforms = [];
1113 source = {
1114 remotes = ["https://rubygems.org"];
1115 sha256 = "0c04jm657akp5n14syhcwnn3hnsvx7harvg97768bvf3f9a37hyk";
1116 type = "gem";
1117 };
1118 version = "1.0.7";
1119 };
1120 ipaddress = {
1121 platforms = [];
1122 source = {
1123 remotes = ["https://rubygems.org"];
1124 sha256 = "1x86s0s11w202j6ka40jbmywkrx8fhq8xiy8mwvnkhllj57hqr45";
1125 type = "gem";
1126 };
1127 version = "0.8.3";
1128 };
1129 jaro_winkler = {
1130 platforms = [];
1131 source = {
1132 remotes = ["https://rubygems.org"];
1133 sha256 = "0rr797nqz081bfk30m2apj5h24bg5d1jr1c8p3xwx4hbwsrbclah";
1134 type = "gem";
1135 };
1136 version = "1.5.1";
1137 };
1138 jasmine = {
1139 dependencies = ["jasmine-core" "phantomjs" "rack" "rake"];
1140 platforms = [];
1141 source = {
1142 remotes = ["https://rubygems.org"];
1143 sha256 = "1xfwf163wi5a9i0vlm564cqi6k30h15wnrwd15ph95jfa5516kv1";
1144 type = "gem";
1145 };
1146 version = "3.3.0";
1147 };
1148 jasmine-core = {
1149 platforms = [];
1150 source = {
1151 remotes = ["https://rubygems.org"];
1152 sha256 = "1b12bjfrxvb8mwjwlfyngykd80lz956glcpfz7rhhw7n75b2rdlv";
1153 type = "gem";
1154 };
1155 version = "3.3.0";
1156 };
1157 jasmine-jquery-rails = {
1158 platforms = [];
1159 source = {
1160 remotes = ["https://rubygems.org"];
1161 sha256 = "0cq5zd4ng5dlza45whd6sa7bzd60rlddk9760271mybdqyd96jlv";
1162 type = "gem";
1163 };
1164 version = "2.0.3";
1165 };
1166 jquery-rails = {
1167 dependencies = ["rails-dom-testing" "railties" "thor"];
1168 platforms = [];
1169 source = {
1170 remotes = ["https://rubygems.org"];
1171 sha256 = "17201sb8ddwy4yprizmqabq1kfx3m9c53p0yqngn63m07jjcpnh8";
1172 type = "gem";
1173 };
1174 version = "4.3.3";
1175 };
1176 js-routes = {
1177 dependencies = ["railties" "sprockets-rails"];
1178 platforms = [];
1179 source = {
1180 remotes = ["https://rubygems.org"];
1181 sha256 = "14yx3jrd4sgcwgj8yrrqdwl691mci1hcjqyyvp0v15jbzis1bclm";
1182 type = "gem";
1183 };
1184 version = "1.4.4";
1185 };
1186 js_image_paths = {
1187 dependencies = ["rails" "sprockets"];
1188 platforms = [];
1189 source = {
1190 remotes = ["https://rubygems.org"];
1191 sha256 = "1d4kq8895i61a338ddk5f2k16l5lvmnkby9cdjwnmm2jddw4q7nf";
1192 type = "gem";
1193 };
1194 version = "0.1.1";
1195 };
1196 json = {
1197 platforms = [];
1198 source = {
1199 remotes = ["https://rubygems.org"];
1200 sha256 = "01v6jjpvh3gnq6sgllpfqahlgxzj50ailwhj9b3cd20hi2dx0vxp";
1201 type = "gem";
1202 };
1203 version = "2.1.0";
1204 };
1205 json-jwt = {
1206 dependencies = ["activesupport" "aes_key_wrap" "bindata"];
1207 platforms = [];
1208 source = {
1209 remotes = ["https://rubygems.org"];
1210 sha256 = "065k7vffdki73f4nz89lxi6wxmcw5dlf593831pgvlbralll6x3r";
1211 type = "gem";
1212 };
1213 version = "1.9.4";
1214 };
1215 json-schema = {
1216 dependencies = ["addressable"];
1217 platforms = [];
1218 source = {
1219 remotes = ["https://rubygems.org"];
1220 sha256 = "1yv5lfmr2nzd14af498xqd5p89f3g080q8wk0klr3vxgypsikkb5";
1221 type = "gem";
1222 };
1223 version = "2.8.1";
1224 };
1225 json-schema-rspec = {
1226 dependencies = ["json-schema" "rspec"];
1227 platforms = [];
1228 source = {
1229 remotes = ["https://rubygems.org"];
1230 sha256 = "1ip30yjzyigqqp9jwkrw9x9vrfpnmwi160zmk2vkrwlv9pby0wr9";
1231 type = "gem";
1232 };
1233 version = "0.0.4";
1234 };
1235 jsonpath = {
1236 dependencies = ["multi_json" "to_regexp"];
1237 platforms = [];
1238 source = {
1239 remotes = ["https://rubygems.org"];
1240 sha256 = "06i41lwpj0dwvbxcpqrad5pjn2gmcv0srv0zw0ap7irwc21ifd7d";
1241 type = "gem";
1242 };
1243 version = "0.9.6";
1244 };
1245 jwt = {
1246 platforms = [];
1247 source = {
1248 remotes = ["https://rubygems.org"];
1249 sha256 = "1w0kaqrbl71cq9sbnixc20x5lqah3hs2i93xmhlfdg2y3by7yzky";
1250 type = "gem";
1251 };
1252 version = "2.1.0";
1253 };
1254 kgio = {
1255 platforms = [];
1256 source = {
1257 remotes = ["https://rubygems.org"];
1258 sha256 = "1528pyj1szzzp3pgj05fzjd36qjrxm9yj2x5radc9p1z7vl67y50";
1259 type = "gem";
1260 };
1261 version = "2.11.2";
1262 };
1263 kostya-sigar = {
1264 platforms = [];
1265 source = {
1266 remotes = ["https://rubygems.org"];
1267 sha256 = "0z0pcykhjyrb7kq76jfcyxc1qq23gj5zmgy3miy87v85ydrxiqwb";
1268 type = "gem";
1269 };
1270 version = "2.0.4";
1271 };
1272 leaflet-rails = {
1273 dependencies = ["rails"];
1274 platforms = [];
1275 source = {
1276 remotes = ["https://rubygems.org"];
1277 sha256 = "0dy7vhsjj1fhbbqm2s7pw57vgysd31qqi4y0hm91325hmvq75grb";
1278 type = "gem";
1279 };
1280 version = "1.3.1";
1281 };
1282 listen = {
1283 dependencies = ["rb-fsevent" "rb-inotify" "ruby_dep"];
1284 platforms = [];
1285 source = {
1286 remotes = ["https://rubygems.org"];
1287 sha256 = "01v5mrnfqm6sgm8xn2v5swxsn1wlmq7rzh2i48d4jzjsc7qvb6mx";
1288 type = "gem";
1289 };
1290 version = "3.1.5";
1291 };
1292 little-plugger = {
1293 platforms = [];
1294 source = {
1295 remotes = ["https://rubygems.org"];
1296 sha256 = "1frilv82dyxnlg8k1jhrvyd73l6k17mxc5vwxx080r4x1p04gwym";
1297 type = "gem";
1298 };
1299 version = "1.1.4";
1300 };
1301 logging = {
1302 dependencies = ["little-plugger" "multi_json"];
1303 platforms = [];
1304 source = {
1305 remotes = ["https://rubygems.org"];
1306 sha256 = "06j6iaj89h9jhkx1x3hlswqrfnqds8br05xb1qra69dpvbdmjcwn";
1307 type = "gem";
1308 };
1309 version = "2.2.2";
1310 };
1311 logging-rails = {
1312 dependencies = ["logging"];
1313 platforms = [];
1314 source = {
1315 remotes = ["https://rubygems.org"];
1316 sha256 = "022cnj9v177282kadd9ygzjpvlvbq9k5z0xhdbbmgypi05z4i239";
1317 type = "gem";
1318 };
1319 version = "0.6.0";
1320 };
1321 loofah = {
1322 dependencies = ["crass" "nokogiri"];
1323 platforms = [];
1324 source = {
1325 remotes = ["https://rubygems.org"];
1326 sha256 = "1ccsid33xjajd0im2xv941aywi58z7ihwkvaf1w2bv89vn5bhsjg";
1327 type = "gem";
1328 };
1329 version = "2.2.3";
1330 };
1331 lumberjack = {
1332 platforms = [];
1333 source = {
1334 remotes = ["https://rubygems.org"];
1335 sha256 = "06im7gcg42x77yhz2w5da2ly9xz0n0c36y5ks7xs53v0l9g0vf5n";
1336 type = "gem";
1337 };
1338 version = "1.0.13";
1339 };
1340 macaddr = {
1341 dependencies = ["systemu"];
1342 platforms = [];
1343 source = {
1344 remotes = ["https://rubygems.org"];
1345 sha256 = "1clii8mvhmh5lmnm95ljnjygyiyhdpja85c5vy487rhxn52scn0b";
1346 type = "gem";
1347 };
1348 version = "1.7.1";
1349 };
1350 mail = {
1351 dependencies = ["mini_mime"];
1352 platforms = [];
1353 source = {
1354 remotes = ["https://rubygems.org"];
1355 sha256 = "00wwz6ys0502dpk8xprwcqfwyf3hmnx6lgxaiq6vj43mkx43sapc";
1356 type = "gem";
1357 };
1358 version = "2.7.1";
1359 };
1360 markdown-it-html5-embed = {
1361 platforms = [];
1362 source = {
1363 remotes = ["https://rubygems.org"];
1364 sha256 = "10n2z6j0whc6makxvcf2jhpwb8xrj4s6vyywijsaaxs0cn490a5c";
1365 type = "gem";
1366 };
1367 version = "1.0.0";
1368 };
1369 markerb = {
1370 platforms = [];
1371 source = {
1372 remotes = ["https://rubygems.org"];
1373 sha256 = "08sm3kafc3086l0a9is2cysk7j2k71mxy6ba295pwwzyvy734y76";
1374 type = "gem";
1375 };
1376 version = "1.1.0";
1377 };
1378 memoizable = {
1379 dependencies = ["thread_safe"];
1380 platforms = [];
1381 source = {
1382 remotes = ["https://rubygems.org"];
1383 sha256 = "0v42bvghsvfpzybfazl14qhkrjvx0xlmxz0wwqc960ga1wld5x5c";
1384 type = "gem";
1385 };
1386 version = "0.4.2";
1387 };
1388 method_source = {
1389 platforms = [];
1390 source = {
1391 remotes = ["https://rubygems.org"];
1392 sha256 = "1pviwzvdqd90gn6y7illcdd9adapw8fczml933p5vl739dkvl3lq";
1393 type = "gem";
1394 };
1395 version = "0.9.2";
1396 };
1397 mime-types = {
1398 dependencies = ["mime-types-data"];
1399 platforms = [];
1400 source = {
1401 remotes = ["https://rubygems.org"];
1402 sha256 = "0fjxy1jm52ixpnv3vg9ld9pr9f35gy0jp66i1njhqjvmnvq0iwwk";
1403 type = "gem";
1404 };
1405 version = "3.2.2";
1406 };
1407 mime-types-data = {
1408 platforms = [];
1409 source = {
1410 remotes = ["https://rubygems.org"];
1411 sha256 = "07wvp0aw2gjm4njibb70as6rh5hi1zzri5vky1q6jx95h8l56idc";
1412 type = "gem";
1413 };
1414 version = "3.2018.0812";
1415 };
1416 mini_magick = {
1417 platforms = [];
1418 source = {
1419 remotes = ["https://rubygems.org"];
1420 sha256 = "0sisx59mr5kydmxmx5vr8spmrxhrjkfqv35zhsqdlyzmp1z5px9p";
1421 type = "gem";
1422 };
1423 version = "4.9.2";
1424 };
1425 mini_mime = {
1426 platforms = [];
1427 source = {
1428 remotes = ["https://rubygems.org"];
1429 sha256 = "1q4pshq387lzv9m39jv32vwb8wrq3wc4jwgl4jk209r4l33v09d3";
1430 type = "gem";
1431 };
1432 version = "1.0.1";
1433 };
1434 mini_portile2 = {
1435 platforms = [];
1436 source = {
1437 remotes = ["https://rubygems.org"];
1438 sha256 = "13d32jjadpjj6d2wdhkfpsmy68zjx90p49bgf8f7nkpz86r1fr11";
1439 type = "gem";
1440 };
1441 version = "2.3.0";
1442 };
1443 minitest = {
1444 platforms = [];
1445 source = {
1446 remotes = ["https://rubygems.org"];
1447 sha256 = "0icglrhghgwdlnzzp4jf76b0mbc71s80njn5afyfjn4wqji8mqbq";
1448 type = "gem";
1449 };
1450 version = "5.11.3";
1451 };
1452 mobile-fu = {
1453 dependencies = ["rack-mobile-detect" "rails"];
1454 platforms = [];
1455 source = {
1456 remotes = ["https://rubygems.org"];
1457 sha256 = "0lxfcsd7dwwcpa1j2jbl382anmv6kksf5q1wqj14gc6jxxjq9s4i";
1458 type = "gem";
1459 };
1460 version = "1.4.0";
1461 };
1462 multi_json = {
1463 platforms = [];
1464 source = {
1465 remotes = ["https://rubygems.org"];
1466 sha256 = "1rl0qy4inf1mp8mybfk56dfga0mvx97zwpmq5xmiwl5r770171nv";
1467 type = "gem";
1468 };
1469 version = "1.13.1";
1470 };
1471 multi_test = {
1472 platforms = [];
1473 source = {
1474 remotes = ["https://rubygems.org"];
1475 sha256 = "1sx356q81plr67hg16jfwz9hcqvnk03bd9n75pmdw8pfxjfy1yxd";
1476 type = "gem";
1477 };
1478 version = "0.1.2";
1479 };
1480 multi_xml = {
1481 platforms = [];
1482 source = {
1483 remotes = ["https://rubygems.org"];
1484 sha256 = "0lmd4f401mvravi1i1yq7b2qjjli0yq7dfc4p1nj5nwajp7r6hyj";
1485 type = "gem";
1486 };
1487 version = "0.6.0";
1488 };
1489 multipart-post = {
1490 platforms = [];
1491 source = {
1492 remotes = ["https://rubygems.org"];
1493 sha256 = "09k0b3cybqilk1gwrwwain95rdypixb2q9w65gd44gfzsd84xi1x";
1494 type = "gem";
1495 };
1496 version = "2.0.0";
1497 };
1498 naught = {
1499 platforms = [];
1500 source = {
1501 remotes = ["https://rubygems.org"];
1502 sha256 = "1wwjx35zgbc0nplp8a866iafk4zsrbhwwz4pav5gydr2wm26nksg";
1503 type = "gem";
1504 };
1505 version = "1.1.0";
1506 };
1507 nenv = {
1508 platforms = [];
1509 source = {
1510 remotes = ["https://rubygems.org"];
1511 sha256 = "0r97jzknll9bhd8yyg2bngnnkj8rjhal667n7d32h8h7ny7nvpnr";
1512 type = "gem";
1513 };
1514 version = "0.3.0";
1515 };
1516 net-ldap = {
1517 platforms = [];
1518 source = {
1519 remotes = ["https://rubygems.org"];
1520 sha256 = "016igqz81a8zcwqzp5bbhryqmb2skmyf57ij3nb5z8sxwhw22jgh";
1521 type = "gem";
1522 };
1523 version = "0.16.1";
1524 };
1525 nio4r = {
1526 platforms = [];
1527 source = {
1528 remotes = ["https://rubygems.org"];
1529 sha256 = "1a41ca1kpdmrypjp9xbgvckpy8g26zxphkja9vk7j5wl4n8yvlyr";
1530 type = "gem";
1531 };
1532 version = "2.3.1";
1533 };
1534 nokogiri = {
1535 dependencies = ["mini_portile2"];
1536 platforms = [];
1537 source = {
1538 remotes = ["https://rubygems.org"];
1539 sha256 = "0byyxrazkfm29ypcx5q4syrv126nvjnf7z6bqi01sqkv4llsi4qz";
1540 type = "gem";
1541 };
1542 version = "1.8.5";
1543 };
1544 notiffany = {
1545 dependencies = ["nenv" "shellany"];
1546 platforms = [];
1547 source = {
1548 remotes = ["https://rubygems.org"];
1549 sha256 = "0x838fa5il0dd9zbm3lxkpbfxcf5fxv9556mayc2mxsdl5ghv8nx";
1550 type = "gem";
1551 };
1552 version = "0.1.1";
1553 };
1554 oauth = {
1555 platforms = [];
1556 source = {
1557 remotes = ["https://rubygems.org"];
1558 sha256 = "1zszdg8q1b135z7l7crjj234k4j0m347hywp5kj6zsq7q78pw09y";
1559 type = "gem";
1560 };
1561 version = "0.5.4";
1562 };
1563 oauth2 = {
1564 dependencies = ["faraday" "jwt" "multi_json" "multi_xml" "rack"];
1565 platforms = [];
1566 source = {
1567 remotes = ["https://rubygems.org"];
1568 sha256 = "0av6nlb5y2sm6m8fx669ywrqa9858yqaqfqzny75nqp3anag89qh";
1569 type = "gem";
1570 };
1571 version = "1.4.1";
1572 };
1573 octokit = {
1574 dependencies = ["sawyer"];
1575 platforms = [];
1576 source = {
1577 remotes = ["https://rubygems.org"];
1578 sha256 = "1yh0yzzqg575ix3y2l2261b9ag82gv2v4f1wczdhcmfbxcz755x6";
1579 type = "gem";
1580 };
1581 version = "4.13.0";
1582 };
1583 omniauth = {
1584 dependencies = ["hashie" "rack"];
1585 platforms = [];
1586 source = {
1587 remotes = ["https://rubygems.org"];
1588 sha256 = "1msqr4qq7mfdvl3rg89529isrv595hvjpj2gi0say4b8nwqfggmg";
1589 type = "gem";
1590 };
1591 version = "1.8.1";
1592 };
1593 omniauth-oauth = {
1594 dependencies = ["oauth" "omniauth"];
1595 platforms = [];
1596 source = {
1597 remotes = ["https://rubygems.org"];
1598 sha256 = "1n5vk4by7hkyc09d9blrw2argry5awpw4gbw1l4n2s9b3j4qz037";
1599 type = "gem";
1600 };
1601 version = "1.1.0";
1602 };
1603 omniauth-oauth2 = {
1604 dependencies = ["oauth2" "omniauth"];
1605 platforms = [];
1606 source = {
1607 remotes = ["https://rubygems.org"];
1608 sha256 = "0kscjf1y0lnggsl4z3w5bwllqshqjlsl5kmcya5haydajdnzvdjr";
1609 type = "gem";
1610 };
1611 version = "1.5.0";
1612 };
1613 omniauth-tumblr = {
1614 dependencies = ["multi_json" "omniauth-oauth"];
1615 platforms = [];
1616 source = {
1617 remotes = ["https://rubygems.org"];
1618 sha256 = "10ncmfym4l6k6aqp402g7mqxahbggcj5xkpsjxgngs746s82y97w";
1619 type = "gem";
1620 };
1621 version = "1.2";
1622 };
1623 omniauth-twitter = {
1624 dependencies = ["omniauth-oauth" "rack"];
1625 platforms = [];
1626 source = {
1627 remotes = ["https://rubygems.org"];
1628 sha256 = "0r5j65hkpgzhvvbs90id3nfsjgsad6ymzggbm7zlaxvnrmvnrk65";
1629 type = "gem";
1630 };
1631 version = "1.4.0";
1632 };
1633 omniauth-wordpress = {
1634 dependencies = ["omniauth-oauth2"];
1635 platforms = [];
1636 source = {
1637 remotes = ["https://rubygems.org"];
1638 sha256 = "008zx4zwrbzyvlgv6hy68k1d05zskiwvcgwvxxbxhbl0mvlmh303";
1639 type = "gem";
1640 };
1641 version = "0.2.2";
1642 };
1643 open_graph_reader = {
1644 dependencies = ["faraday" "nokogiri"];
1645 platforms = [];
1646 source = {
1647 remotes = ["https://rubygems.org"];
1648 sha256 = "0af4yldyb0d8zglw73s13pyn0g90gs4m5zf7bwy8r4kym9zbvc21";
1649 type = "gem";
1650 };
1651 version = "0.6.2";
1652 };
1653 openid_connect = {
1654 dependencies = ["activemodel" "attr_required" "json-jwt" "rack-oauth2" "swd" "tzinfo" "validate_email" "validate_url" "webfinger"];
1655 platforms = [];
1656 source = {
1657 remotes = ["https://rubygems.org"];
1658 sha256 = "1r13bv18nyvw0g1nw3fzffvv2si99zj24w0k5zgawf4q6nn5f7vd";
1659 type = "gem";
1660 };
1661 version = "1.1.6";
1662 };
1663 orm_adapter = {
1664 platforms = [];
1665 source = {
1666 remotes = ["https://rubygems.org"];
1667 sha256 = "1fg9jpjlzf5y49qs9mlpdrgs5rpcyihq1s4k79nv9js0spjhnpda";
1668 type = "gem";
1669 };
1670 version = "0.5.0";
1671 };
1672 parallel = {
1673 platforms = [];
1674 source = {
1675 remotes = ["https://rubygems.org"];
1676 sha256 = "01hj8v1qnyl5ndrs33g8ld8ibk0rbcqdpkpznr04gkbxd11pqn67";
1677 type = "gem";
1678 };
1679 version = "1.12.1";
1680 };
1681 parser = {
1682 dependencies = ["ast"];
1683 platforms = [];
1684 source = {
1685 remotes = ["https://rubygems.org"];
1686 sha256 = "1zjk0w1kjj3xk8ymy1430aa4gg0k8ckphfj88br6il4pm83f0n1f";
1687 type = "gem";
1688 };
1689 version = "2.5.3.0";
1690 };
1691 pg = {
1692 platforms = [];
1693 source = {
1694 remotes = ["https://rubygems.org"];
1695 sha256 = "1pnjw3rspdfjssxyf42jnbsdlgri8ylysimp0s28wxb93k6ff2qb";
1696 type = "gem";
1697 };
1698 version = "1.1.3";
1699 };
1700 phantomjs = {
1701 platforms = [];
1702 source = {
1703 remotes = ["https://rubygems.org"];
1704 sha256 = "0y8pbbyq9dirxb7igkb2s5limz2895qmr41c09fjhx6k6fxcz4mk";
1705 type = "gem";
1706 };
1707 version = "2.1.1.0";
1708 };
1709 poltergeist = {
1710 dependencies = ["capybara" "cliver" "websocket-driver"];
1711 platforms = [];
1712 source = {
1713 remotes = ["https://rubygems.org"];
1714 sha256 = "0il80p97psmhs6scl0grq031gv7kws4ylvvd6zyr8xv91qadga95";
1715 type = "gem";
1716 };
1717 version = "1.18.1";
1718 };
1719 powerpack = {
1720 platforms = [];
1721 source = {
1722 remotes = ["https://rubygems.org"];
1723 sha256 = "1r51d67wd467rpdfl6x43y84vwm8f5ql9l9m85ak1s2sp3nc5hyv";
1724 type = "gem";
1725 };
1726 version = "0.1.2";
1727 };
1728 pronto = {
1729 dependencies = ["gitlab" "httparty" "octokit" "rainbow" "rugged" "thor"];
1730 platforms = [];
1731 source = {
1732 remotes = ["https://rubygems.org"];
1733 sha256 = "13xbg1pm3kz5zbzxad5qgqnkzkp3ddajj7wxx16aqbfr7rqggvhz";
1734 type = "gem";
1735 };
1736 version = "0.9.5";
1737 };
1738 pronto-eslint = {
1739 dependencies = ["eslintrb" "pronto"];
1740 platforms = [];
1741 source = {
1742 remotes = ["https://rubygems.org"];
1743 sha256 = "1cxyx6mlcdgv4ykliaizkx9cps68xf7qvy8lzxmv7pcqzkxaq7xc";
1744 type = "gem";
1745 };
1746 version = "0.9.1";
1747 };
1748 pronto-haml = {
1749 dependencies = ["haml_lint" "pronto"];
1750 platforms = [];
1751 source = {
1752 remotes = ["https://rubygems.org"];
1753 sha256 = "116iln1whwiqy55f86q33lnnic0awnqm415xvxwnhwlagcbwmnkg";
1754 type = "gem";
1755 };
1756 version = "0.9.0";
1757 };
1758 pronto-rubocop = {
1759 dependencies = ["pronto" "rubocop"];
1760 platforms = [];
1761 source = {
1762 remotes = ["https://rubygems.org"];
1763 sha256 = "0bcm34qlpp02wf69why5lpi5p53h5r4fq36f4b1fwi621fwzlgsy";
1764 type = "gem";
1765 };
1766 version = "0.9.1";
1767 };
1768 pronto-scss = {
1769 dependencies = ["pronto" "scss_lint"];
1770 platforms = [];
1771 source = {
1772 remotes = ["https://rubygems.org"];
1773 sha256 = "0kgaqd6l2w3brdsp5231fpfr6fwajciz2hdr925l1zhh6ni1y2za";
1774 type = "gem";
1775 };
1776 version = "0.9.1";
1777 };
1778 pry = {
1779 dependencies = ["coderay" "method_source"];
1780 platforms = [];
1781 source = {
1782 remotes = ["https://rubygems.org"];
1783 sha256 = "00rm71x0r1jdycwbs83lf9l6p494m99asakbvqxh8rz7zwnlzg69";
1784 type = "gem";
1785 };
1786 version = "0.12.2";
1787 };
1788 pry-byebug = {
1789 dependencies = ["byebug" "pry"];
1790 platforms = [];
1791 source = {
1792 remotes = ["https://rubygems.org"];
1793 sha256 = "0y2758593i2ij0nhmv0j1pbdfx2cgi52ns6wkij0frgnk2lf650g";
1794 type = "gem";
1795 };
1796 version = "3.6.0";
1797 };
1798 public_suffix = {
1799 platforms = [];
1800 source = {
1801 remotes = ["https://rubygems.org"];
1802 sha256 = "08q64b5br692dd3v0a9wq9q5dvycc6kmiqmjbdxkxbfizggsvx6l";
1803 type = "gem";
1804 };
1805 version = "3.0.3";
1806 };
1807 raabro = {
1808 platforms = [];
1809 source = {
1810 remotes = ["https://rubygems.org"];
1811 sha256 = "0xzdmbn48753f6k0ckirp8ja5p0xn1a92wbwxfyggyhj0hza9ylq";
1812 type = "gem";
1813 };
1814 version = "1.1.6";
1815 };
1816 rack = {
1817 platforms = [];
1818 source = {
1819 remotes = ["https://rubygems.org"];
1820 sha256 = "1pcgv8dv4vkaczzlix8q3j68capwhk420cddzijwqgi2qb4lm1zm";
1821 type = "gem";
1822 };
1823 version = "2.0.6";
1824 };
1825 rack-cors = {
1826 platforms = [];
1827 source = {
1828 remotes = ["https://rubygems.org"];
1829 sha256 = "1j27vy1bmhbqcyzhxg8d07qassmax769xjalfwcwz6qfiq8cf013";
1830 type = "gem";
1831 };
1832 version = "1.0.2";
1833 };
1834 rack-google-analytics = {
1835 dependencies = ["actionpack" "activesupport"];
1836 platforms = [];
1837 source = {
1838 remotes = ["https://rubygems.org"];
1839 sha256 = "09pv0z5dhjjrlhi9qj5qy48hi66f7iix337qrapg7mvwwz6czcvj";
1840 type = "gem";
1841 };
1842 version = "1.2.0";
1843 };
1844 rack-mobile-detect = {
1845 dependencies = ["rack"];
1846 platforms = [];
1847 source = {
1848 remotes = ["https://rubygems.org"];
1849 sha256 = "0bagli6ldhkpd1yym775sxy7w5n4jds6gbcjm3gmcl37vggvm8a5";
1850 type = "gem";
1851 };
1852 version = "0.4.0";
1853 };
1854 rack-oauth2 = {
1855 dependencies = ["activesupport" "attr_required" "httpclient" "json-jwt" "rack"];
1856 platforms = [];
1857 source = {
1858 remotes = ["https://rubygems.org"];
1859 sha256 = "0kmxj9hbjhhcs3yyb433s82hkpmzb536m0mwfadjiaisganx1cii";
1860 type = "gem";
1861 };
1862 version = "1.9.3";
1863 };
1864 rack-piwik = {
1865 platforms = [];
1866 source = {
1867 remotes = ["https://rubygems.org"];
1868 sha256 = "0raxrckapqh693lpid0cnx1j1v2i3mz5cyssg7grgrilgrn9318z";
1869 type = "gem";
1870 };
1871 version = "0.3.0";
1872 };
1873 rack-protection = {
1874 dependencies = ["rack"];
1875 platforms = [];
1876 source = {
1877 remotes = ["https://rubygems.org"];
1878 sha256 = "0ylx74ravz7nvnyygq0nk3v86qdzrmqxpwpayhppyy50l72rcajq";
1879 type = "gem";
1880 };
1881 version = "2.0.4";
1882 };
1883 rack-rewrite = {
1884 platforms = [];
1885 source = {
1886 remotes = ["https://rubygems.org"];
1887 sha256 = "0milw71dv96wnc6i48vbzypws51dgf415kkp8c4air0mkdhpj838";
1888 type = "gem";
1889 };
1890 version = "1.5.1";
1891 };
1892 rack-ssl = {
1893 dependencies = ["rack"];
1894 platforms = [];
1895 source = {
1896 remotes = ["https://rubygems.org"];
1897 sha256 = "0c21xqkjyl10fngq6dy8082vmn2png8cwkiyzv83ymixq5cx7ygp";
1898 type = "gem";
1899 };
1900 version = "1.4.1";
1901 };
1902 rack-test = {
1903 dependencies = ["rack"];
1904 platforms = [];
1905 source = {
1906 remotes = ["https://rubygems.org"];
1907 sha256 = "0rh8h376mx71ci5yklnpqqn118z3bl67nnv5k801qaqn1zs62h8m";
1908 type = "gem";
1909 };
1910 version = "1.1.0";
1911 };
1912 rails = {
1913 dependencies = ["actioncable" "actionmailer" "actionpack" "actionview" "activejob" "activemodel" "activerecord" "activesupport" "railties" "sprockets-rails"];
1914 platforms = [];
1915 source = {
1916 remotes = ["https://rubygems.org"];
1917 sha256 = "0lb07cbwgm371zyn9i6fyj9q8rmv89lacmyzrfvzxqqx2n3ilc5q";
1918 type = "gem";
1919 };
1920 version = "5.1.6";
1921 };
1922 rails-assets-autosize = {
1923 platforms = [];
1924 source = {
1925 remotes = ["https://rails-assets.org"];
1926 sha256 = "0hr72mfprb9678lf7dj9lh801lm7p98nzkrnrz764sy9lmbpzcib";
1927 type = "gem";
1928 };
1929 version = "4.0.2";
1930 };
1931 rails-assets-backbone = {
1932 dependencies = ["rails-assets-underscore"];
1933 platforms = [];
1934 source = {
1935 remotes = ["https://rails-assets.org"];
1936 sha256 = "0zjgwhgfmg1jyyds7zfjp6g4bz8vw56qvhlrpj943wcqpdxm93id";
1937 type = "gem";
1938 };
1939 version = "1.3.3";
1940 };
1941 rails-assets-blueimp-gallery = {
1942 platforms = [];
1943 source = {
1944 remotes = ["https://rails-assets.org"];
1945 sha256 = "18b7xvvkdnd39xlbkyw46i86w3wzj349s8iv5wdiypa5qdcql8mq";
1946 type = "gem";
1947 };
1948 version = "2.33.0";
1949 };
1950 rails-assets-bootstrap = {
1951 dependencies = ["rails-assets-jquery"];
1952 platforms = [];
1953 source = {
1954 remotes = ["https://rails-assets.org"];
1955 sha256 = "0x4i11132qcmghmqb061iq47yksrr7i0la5hzzdm38dxybh87x5v";
1956 type = "gem";
1957 };
1958 version = "3.3.7";
1959 };
1960 rails-assets-bootstrap-markdown = {
1961 dependencies = ["rails-assets-bootstrap"];
1962 platforms = [];
1963 source = {
1964 remotes = ["https://rails-assets.org"];
1965 sha256 = "1nxirs9wx5jxrjmxjwvsqlf2rsypjn3ajg7fs28c4ib7wwpabwj3";
1966 type = "gem";
1967 };
1968 version = "2.10.0";
1969 };
1970 rails-assets-corejs-typeahead = {
1971 dependencies = ["rails-assets-jquery"];
1972 platforms = [];
1973 source = {
1974 remotes = ["https://rails-assets.org"];
1975 sha256 = "1p5i6afd156rakrin99c2ryaz3zykx21ir6y10l34jnw03rikcfg";
1976 type = "gem";
1977 };
1978 version = "1.2.1";
1979 };
1980 rails-assets-diaspora_jsxc = {
1981 dependencies = ["rails-assets-emojione" "rails-assets-favico.js" "rails-assets-jquery-colorbox" "rails-assets-jquery-fullscreen-plugin" "rails-assets-jquery.slimscroll" "rails-assets-jquery.ui"];
1982 platforms = [];
1983 source = {
1984 remotes = ["https://rails-assets.org"];
1985 sha256 = "07vqdj0l8fsj4fd2sschba2jgfbimyfad56009ldzlcvb6ml5nhi";
1986 type = "gem";
1987 };
1988 version = "0.1.5.develop.7";
1989 };
1990 rails-assets-emojione = {
1991 platforms = [];
1992 source = {
1993 remotes = ["https://rails-assets.org"];
1994 sha256 = "1j29vbsf6v9ikiqlmnfgzxys4xsa1glvmfky8id5xfyymnjx2c52";
1995 type = "gem";
1996 };
1997 version = "2.0.1";
1998 };
1999 "rails-assets-favico.js" = {
2000 platforms = [];
2001 source = {
2002 remotes = ["https://rails-assets.org"];
2003 sha256 = "19yndhljmqlvarf49h5v71zq0p0ngvspjr2v0m6lac0q9ni7r5bv";
2004 type = "gem";
2005 };
2006 version = "0.3.10";
2007 };
2008 rails-assets-fine-uploader = {
2009 platforms = [];
2010 source = {
2011 remotes = ["https://rails-assets.org"];
2012 sha256 = "1vxj78x2vvlchpapxpaawysc9wn8alzdd3gxhwfwy11xv8ka9mdv";
2013 type = "gem";
2014 };
2015 version = "5.13.0";
2016 };
2017 rails-assets-highlightjs = {
2018 platforms = [];
2019 source = {
2020 remotes = ["https://rails-assets.org"];
2021 sha256 = "0spmb0gkfs13fmljjv1n53r53q69fhb6r573ndbxnhgb3izqgnqp";
2022 type = "gem";
2023 };
2024 version = "9.12.0";
2025 };
2026 rails-assets-jasmine = {
2027 platforms = [];
2028 source = {
2029 remotes = ["https://rails-assets.org"];
2030 sha256 = "1n6yixrl9cgq5kckay75b44p878s1kqi69mhgyw99w8dsq8i2vy5";
2031 type = "gem";
2032 };
2033 version = "3.3.0";
2034 };
2035 rails-assets-jasmine-ajax = {
2036 dependencies = ["rails-assets-jasmine"];
2037 platforms = [];
2038 source = {
2039 remotes = ["https://rails-assets.org"];
2040 sha256 = "0l8z0p75x1yzk1l1ryfvdlvq8yq4w2xngp4icz478axd5jcqx6kg";
2041 type = "gem";
2042 };
2043 version = "3.4.0";
2044 };
2045 rails-assets-jquery = {
2046 platforms = [];
2047 source = {
2048 remotes = ["https://rails-assets.org"];
2049 sha256 = "1wcaappk12w300733lrqb571cir9nw35d9q6d2i52wwdvhv2fx2y";
2050 type = "gem";
2051 };
2052 version = "3.3.1";
2053 };
2054 rails-assets-jquery-colorbox = {
2055 dependencies = ["rails-assets-jquery"];
2056 platforms = [];
2057 source = {
2058 remotes = ["https://rails-assets.org"];
2059 sha256 = "19ws3r1zfviwnfr9s0jh6iqss50iwqkf4a78zhrk0p3bb4lvmmsp";
2060 type = "gem";
2061 };
2062 version = "1.6.4";
2063 };
2064 rails-assets-jquery-fullscreen-plugin = {
2065 platforms = [];
2066 source = {
2067 remotes = ["https://rails-assets.org"];
2068 sha256 = "0ldvq4s15lap9p6w7d1yw6dajn2gh6p75dbkp79p0d8ylzapsd58";
2069 type = "gem";
2070 };
2071 version = "0.5.0";
2072 };
2073 rails-assets-jquery-placeholder = {
2074 dependencies = ["rails-assets-jquery"];
2075 platforms = [];
2076 source = {
2077 remotes = ["https://rails-assets.org"];
2078 sha256 = "0h17gjazc27pj4cm2ig232ww4d4ppq9bcginwzjss95pl63richi";
2079 type = "gem";
2080 };
2081 version = "2.3.1";
2082 };
2083 rails-assets-jquery-textchange = {
2084 dependencies = ["rails-assets-jquery"];
2085 platforms = [];
2086 source = {
2087 remotes = ["https://rails-assets.org"];
2088 sha256 = "0rsw3cn9a5njv80zy53339kmrmv60b8fqcrr7bacapbagb2rd4dj";
2089 type = "gem";
2090 };
2091 version = "0.2.3";
2092 };
2093 "rails-assets-jquery.are-you-sure" = {
2094 dependencies = ["rails-assets-jquery"];
2095 platforms = [];
2096 source = {
2097 remotes = ["https://rails-assets.org"];
2098 sha256 = "0nj04aqh9jpcg57xbjxpm2vn7mkd5clnpma907515a1nxy40bym0";
2099 type = "gem";
2100 };
2101 version = "1.9.0";
2102 };
2103 "rails-assets-jquery.slimscroll" = {
2104 platforms = [];
2105 source = {
2106 remotes = ["https://rails-assets.org"];
2107 sha256 = "1rymmd2rxy1vjjj70v88abmdlfs55276rs3rksj300dgirnnj998";
2108 type = "gem";
2109 };
2110 version = "1.3.8";
2111 };
2112 "rails-assets-jquery.ui" = {
2113 dependencies = ["rails-assets-jquery"];
2114 platforms = [];
2115 source = {
2116 remotes = ["https://rails-assets.org"];
2117 sha256 = "0xc9kfb29hi441irj49b7aawxkddk1dxzy938rpqv9ylpsj7knaa";
2118 type = "gem";
2119 };
2120 version = "1.11.4";
2121 };
2122 rails-assets-markdown-it = {
2123 platforms = [];
2124 source = {
2125 remotes = ["https://rails-assets.org"];
2126 sha256 = "0fxx7ldszsdqr5ry21bnxmv33byz7abpk9lcp100q5cqsjx091r9";
2127 type = "gem";
2128 };
2129 version = "8.4.2";
2130 };
2131 rails-assets-markdown-it--markdown-it-for-inline = {
2132 platforms = [];
2133 source = {
2134 remotes = ["https://rails-assets.org"];
2135 sha256 = "0fznv2x7ndadr3wb4dzhh86bpcpwz8f4d8rfhz4sfbqlai40j3jl";
2136 type = "gem";
2137 };
2138 version = "0.1.1";
2139 };
2140 rails-assets-markdown-it-diaspora-mention = {
2141 platforms = [];
2142 source = {
2143 remotes = ["https://rails-assets.org"];
2144 sha256 = "0asggm7wgmdll8x94291p2w6icmp2izi914dlh3b7vb7dpjq3jig";
2145 type = "gem";
2146 };
2147 version = "1.2.0";
2148 };
2149 rails-assets-markdown-it-hashtag = {
2150 platforms = [];
2151 source = {
2152 remotes = ["https://rails-assets.org"];
2153 sha256 = "0dr8fwaxgkfqm7z4rl4jdym0i1ycqw1sgkxshkd9k0849ry12cdk";
2154 type = "gem";
2155 };
2156 version = "0.4.0";
2157 };
2158 rails-assets-markdown-it-sanitizer = {
2159 platforms = [];
2160 source = {
2161 remotes = ["https://rails-assets.org"];
2162 sha256 = "0fkpffh83fc257zkzaia93j4hw2baz90lg10s5yxsxww06q5dn36";
2163 type = "gem";
2164 };
2165 version = "0.4.3";
2166 };
2167 rails-assets-markdown-it-sub = {
2168 platforms = [];
2169 source = {
2170 remotes = ["https://rails-assets.org"];
2171 sha256 = "08hjij5fqvhvg7s27n4g8qqsks974g3kc5k7xl2qmh41k7f4hcrk";
2172 type = "gem";
2173 };
2174 version = "1.0.0";
2175 };
2176 rails-assets-markdown-it-sup = {
2177 platforms = [];
2178 source = {
2179 remotes = ["https://rails-assets.org"];
2180 sha256 = "17nnnvky7zy0yiwwl6dm8ibbkyvvf63xfp3snch4dzmras05lmig";
2181 type = "gem";
2182 };
2183 version = "1.0.0";
2184 };
2185 rails-assets-underscore = {
2186 platforms = [];
2187 source = {
2188 remotes = ["https://rails-assets.org"];
2189 sha256 = "1ccnzj7aqrvngcs915y290pijryqmjygimdwlrykpyj8vwzifdnc";
2190 type = "gem";
2191 };
2192 version = "1.9.1";
2193 };
2194 rails-assets-utatti-perfect-scrollbar = {
2195 platforms = [];
2196 source = {
2197 remotes = ["https://rails-assets.org"];
2198 sha256 = "0m8syfv8p5bnwm8nrba6mpjnhrd29ffwzi6awhiw537jqw42b12v";
2199 type = "gem";
2200 };
2201 version = "1.4.0";
2202 };
2203 rails-controller-testing = {
2204 dependencies = ["actionpack" "actionview" "activesupport"];
2205 platforms = [];
2206 source = {
2207 remotes = ["https://rubygems.org"];
2208 sha256 = "16kdkk73mhhs73iz3i1i0ryjm84dadiyh817b3nh8acdi490jyhy";
2209 type = "gem";
2210 };
2211 version = "1.0.2";
2212 };
2213 rails-dom-testing = {
2214 dependencies = ["activesupport" "nokogiri"];
2215 platforms = [];
2216 source = {
2217 remotes = ["https://rubygems.org"];
2218 sha256 = "1lfq2a7kp2x64dzzi5p4cjcbiv62vxh9lyqk2f0rqq3fkzrw8h5i";
2219 type = "gem";
2220 };
2221 version = "2.0.3";
2222 };
2223 rails-html-sanitizer = {
2224 dependencies = ["loofah"];
2225 platforms = [];
2226 source = {
2227 remotes = ["https://rubygems.org"];
2228 sha256 = "1gv7vr5d9g2xmgpjfq4nxsqr70r9pr042r9ycqqnfvw5cz9c7jwr";
2229 type = "gem";
2230 };
2231 version = "1.0.4";
2232 };
2233 rails-i18n = {
2234 dependencies = ["i18n" "railties"];
2235 platforms = [];
2236 source = {
2237 remotes = ["https://rubygems.org"];
2238 sha256 = "05lkhc737a9dw0hd5ljmja0yp4cw39r3200s1r0n4bs7z1g3ka7l";
2239 type = "gem";
2240 };
2241 version = "5.1.2";
2242 };
2243 rails-timeago = {
2244 dependencies = ["actionpack" "activesupport"];
2245 platforms = [];
2246 source = {
2247 remotes = ["https://rubygems.org"];
2248 sha256 = "01x1vs9hni9wn8dc4fmyqzkrn651chzsi2mhmk0pxdrfx9md0lxv";
2249 type = "gem";
2250 };
2251 version = "2.16.0";
2252 };
2253 railties = {
2254 dependencies = ["actionpack" "activesupport" "method_source" "rake" "thor"];
2255 platforms = [];
2256 source = {
2257 remotes = ["https://rubygems.org"];
2258 sha256 = "0ycy2gdaj0px1vfaghskvl6qkczwaigrli2zxn54w7zn1z29faj8";
2259 type = "gem";
2260 };
2261 version = "5.1.6";
2262 };
2263 rainbow = {
2264 dependencies = ["rake"];
2265 platforms = [];
2266 source = {
2267 remotes = ["https://rubygems.org"];
2268 sha256 = "08w2ghc5nv0kcq5b257h7dwjzjz1pqcavajfdx2xjyxqsvh2y34w";
2269 type = "gem";
2270 };
2271 version = "2.2.2";
2272 };
2273 raindrops = {
2274 platforms = [];
2275 source = {
2276 remotes = ["https://rubygems.org"];
2277 sha256 = "1qpbd9jif40c53fz2r0l8khfl016y8s8bkx37ibcaafclbl3xygp";
2278 type = "gem";
2279 };
2280 version = "0.19.0";
2281 };
2282 rake = {
2283 platforms = [];
2284 source = {
2285 remotes = ["https://rubygems.org"];
2286 sha256 = "1idi53jay34ba9j68c3mfr9wwkg3cd9qh0fn9cg42hv72c6q8dyg";
2287 type = "gem";
2288 };
2289 version = "12.3.1";
2290 };
2291 rb-fsevent = {
2292 platforms = [];
2293 source = {
2294 remotes = ["https://rubygems.org"];
2295 sha256 = "1lm1k7wpz69jx7jrc92w3ggczkjyjbfziq5mg62vjnxmzs383xx8";
2296 type = "gem";
2297 };
2298 version = "0.10.3";
2299 };
2300 rb-inotify = {
2301 dependencies = ["ffi"];
2302 platforms = [];
2303 source = {
2304 remotes = ["https://rubygems.org"];
2305 sha256 = "0yfsgw5n7pkpyky6a9wkf1g9jafxb0ja7gz0qw0y14fd2jnzfh71";
2306 type = "gem";
2307 };
2308 version = "0.9.10";
2309 };
2310 redcarpet = {
2311 platforms = [];
2312 source = {
2313 remotes = ["https://rubygems.org"];
2314 sha256 = "0h9qz2hik4s9knpmbwrzb3jcp3vc5vygp9ya8lcpl7f1l9khmcd7";
2315 type = "gem";
2316 };
2317 version = "3.4.0";
2318 };
2319 redis = {
2320 platforms = [];
2321 source = {
2322 remotes = ["https://rubygems.org"];
2323 sha256 = "0i415x8gi0c5vsiy6ikvx5js6fhc4x80a5lqv8iidy2iymd20irv";
2324 type = "gem";
2325 };
2326 version = "3.3.5";
2327 };
2328 regexp_parser = {
2329 platforms = [];
2330 source = {
2331 remotes = ["https://rubygems.org"];
2332 sha256 = "18g5jyg3blsdrz3mc8d87bms6qqn6gcdh1nvdhvgbjdpk9pw21dq";
2333 type = "gem";
2334 };
2335 version = "1.3.0";
2336 };
2337 request_store = {
2338 dependencies = ["rack"];
2339 platforms = [];
2340 source = {
2341 remotes = ["https://rubygems.org"];
2342 sha256 = "1963330z03fk382fi8y231ygcbnh86m91dqlp5rh1mwy9ihzzl6d";
2343 type = "gem";
2344 };
2345 version = "1.4.1";
2346 };
2347 responders = {
2348 dependencies = ["actionpack" "railties"];
2349 platforms = [];
2350 source = {
2351 remotes = ["https://rubygems.org"];
2352 sha256 = "1rhdyyvvm26f2l3fgwdp6xasfl2y0whwgy766bhdwz697mf78zfn";
2353 type = "gem";
2354 };
2355 version = "2.4.0";
2356 };
2357 rspec = {
2358 dependencies = ["rspec-core" "rspec-expectations" "rspec-mocks"];
2359 platforms = [];
2360 source = {
2361 remotes = ["https://rubygems.org"];
2362 sha256 = "15ppasvb9qrscwlyjz67ppw1lnxiqnkzx5vkx1bd8x5n3dhikxc3";
2363 type = "gem";
2364 };
2365 version = "3.8.0";
2366 };
2367 rspec-core = {
2368 dependencies = ["rspec-support"];
2369 platforms = [];
2370 source = {
2371 remotes = ["https://rubygems.org"];
2372 sha256 = "1p1s5bnbqp3sxk67y0fh0x884jjym527r0vgmhbm81w7aq6b7l4p";
2373 type = "gem";
2374 };
2375 version = "3.8.0";
2376 };
2377 rspec-expectations = {
2378 dependencies = ["diff-lcs" "rspec-support"];
2379 platforms = [];
2380 source = {
2381 remotes = ["https://rubygems.org"];
2382 sha256 = "18l21hy1zdc2pgc2yb17k3n2al1khpfr0z6pijlm852iz6vj0dkm";
2383 type = "gem";
2384 };
2385 version = "3.8.2";
2386 };
2387 rspec-json_expectations = {
2388 platforms = [];
2389 source = {
2390 remotes = ["https://rubygems.org"];
2391 sha256 = "0l3dhvkb95zwyg72wz33azxigc9cisqgg3z16ksns1sx0b93nnbn";
2392 type = "gem";
2393 };
2394 version = "2.1.0";
2395 };
2396 rspec-mocks = {
2397 dependencies = ["diff-lcs" "rspec-support"];
2398 platforms = [];
2399 source = {
2400 remotes = ["https://rubygems.org"];
2401 sha256 = "06y508cjqycb4yfhxmb3nxn0v9xqf17qbd46l1dh4xhncinr4fyp";
2402 type = "gem";
2403 };
2404 version = "3.8.0";
2405 };
2406 rspec-rails = {
2407 dependencies = ["actionpack" "activesupport" "railties" "rspec-core" "rspec-expectations" "rspec-mocks" "rspec-support"];
2408 platforms = [];
2409 source = {
2410 remotes = ["https://rubygems.org"];
2411 sha256 = "0sqj5da2kc937j5jb18jcf0hrmmzwgj7pk62j0q3qndhc2kvx88p";
2412 type = "gem";
2413 };
2414 version = "3.8.1";
2415 };
2416 rspec-support = {
2417 platforms = [];
2418 source = {
2419 remotes = ["https://rubygems.org"];
2420 sha256 = "0p3m7drixrlhvj2zpc38b11x145bvm311x6f33jjcxmvcm0wq609";
2421 type = "gem";
2422 };
2423 version = "3.8.0";
2424 };
2425 rubocop = {
2426 dependencies = ["jaro_winkler" "parallel" "parser" "powerpack" "rainbow" "ruby-progressbar" "unicode-display_width"];
2427 platforms = [];
2428 source = {
2429 remotes = ["https://rubygems.org"];
2430 sha256 = "1ivk049z3mp12nc6v1wn35bsq1g7nz1i2r4xwzqf0v25hm2v7n1i";
2431 type = "gem";
2432 };
2433 version = "0.60.0";
2434 };
2435 ruby-oembed = {
2436 platforms = [];
2437 source = {
2438 remotes = ["https://rubygems.org"];
2439 sha256 = "1kw4aplb3m13z3kchhb79wf87qb3prn1m99s6vl5cyp0xqwyymv0";
2440 type = "gem";
2441 };
2442 version = "0.12.0";
2443 };
2444 ruby-progressbar = {
2445 platforms = [];
2446 source = {
2447 remotes = ["https://rubygems.org"];
2448 sha256 = "1cv2ym3rl09svw8940ny67bav7b2db4ms39i4raaqzkf59jmhglk";
2449 type = "gem";
2450 };
2451 version = "1.10.0";
2452 };
2453 ruby_dep = {
2454 platforms = [];
2455 source = {
2456 remotes = ["https://rubygems.org"];
2457 sha256 = "1c1bkl97i9mkcvkn1jks346ksnvnnp84cs22gwl0vd7radybrgy5";
2458 type = "gem";
2459 };
2460 version = "1.5.0";
2461 };
2462 rubyzip = {
2463 platforms = [];
2464 source = {
2465 remotes = ["https://rubygems.org"];
2466 sha256 = "1n1lb2sdwh9h27y244hxzg1lrxxg2m53pk1vq7p33bna003qkyrj";
2467 type = "gem";
2468 };
2469 version = "1.2.2";
2470 };
2471 rugged = {
2472 platforms = [];
2473 source = {
2474 remotes = ["https://rubygems.org"];
2475 sha256 = "1jv4nw9hvlxp8hhhlllrfcznki82i50fp1sj65zsjllfl2bvz8x6";
2476 type = "gem";
2477 };
2478 version = "0.27.5";
2479 };
2480 safe_yaml = {
2481 platforms = [];
2482 source = {
2483 remotes = ["https://rubygems.org"];
2484 sha256 = "1hly915584hyi9q9vgd968x2nsi5yag9jyf5kq60lwzi5scr7094";
2485 type = "gem";
2486 };
2487 version = "1.0.4";
2488 };
2489 sass = {
2490 platforms = [];
2491 source = {
2492 remotes = ["https://rubygems.org"];
2493 sha256 = "0kfpcwh8dgw4lc81qglkvjl73689jy3g7196zkxm4fpskg1p5lkw";
2494 type = "gem";
2495 };
2496 version = "3.4.25";
2497 };
2498 sass-rails = {
2499 dependencies = ["railties" "sass" "sprockets" "sprockets-rails" "tilt"];
2500 platforms = [];
2501 source = {
2502 remotes = ["https://rubygems.org"];
2503 sha256 = "1wa63sbsimrsf7nfm8h0m1wbsllkfxvd7naph5d1j6pbc555ma7s";
2504 type = "gem";
2505 };
2506 version = "5.0.7";
2507 };
2508 sawyer = {
2509 dependencies = ["addressable" "faraday"];
2510 platforms = [];
2511 source = {
2512 remotes = ["https://rubygems.org"];
2513 sha256 = "0sv1463r7bqzvx4drqdmd36m7rrv6sf1v3c6vswpnq3k6vdw2dvd";
2514 type = "gem";
2515 };
2516 version = "0.8.1";
2517 };
2518 scss_lint = {
2519 dependencies = ["rake" "sass"];
2520 platforms = [];
2521 source = {
2522 remotes = ["https://rubygems.org"];
2523 sha256 = "11rl8kj32p34mqlkhxvlwfrwl8gdl0iha8q9xsrr3sjxjagzv8yp";
2524 type = "gem";
2525 };
2526 version = "0.55.0";
2527 };
2528 secure_headers = {
2529 platforms = [];
2530 source = {
2531 remotes = ["https://rubygems.org"];
2532 sha256 = "17cxci8jyvlgssix0cy7kbm5m2h7s8ym9caj8nilrbd21jis9pc5";
2533 type = "gem";
2534 };
2535 version = "6.0.0";
2536 };
2537 shellany = {
2538 platforms = [];
2539 source = {
2540 remotes = ["https://rubygems.org"];
2541 sha256 = "1ryyzrj1kxmnpdzhlv4ys3dnl2r5r3d2rs2jwzbnd1v96a8pl4hf";
2542 type = "gem";
2543 };
2544 version = "0.0.1";
2545 };
2546 shoulda-matchers = {
2547 dependencies = ["activesupport"];
2548 platforms = [];
2549 source = {
2550 remotes = ["https://rubygems.org"];
2551 sha256 = "1zvv94pqk5b5my3w1shdz7h34xf2ldhg5k4qfdpbwi2iy0j9zw2a";
2552 type = "gem";
2553 };
2554 version = "3.1.2";
2555 };
2556 sidekiq = {
2557 dependencies = ["connection_pool" "rack-protection" "redis"];
2558 platforms = [];
2559 source = {
2560 remotes = ["https://rubygems.org"];
2561 sha256 = "1zyf9y3rvzizbwh68i2g1lzd40lalrdc4iyjmaa74gnfwsf92i26";
2562 type = "gem";
2563 };
2564 version = "5.2.3";
2565 };
2566 sidekiq-cron = {
2567 dependencies = ["fugit" "sidekiq"];
2568 platforms = [];
2569 source = {
2570 remotes = ["https://rubygems.org"];
2571 sha256 = "1aliswahmpxn1ib2brn4126gk97ac3zdnwr71mn8vzbr3vdd7fl0";
2572 type = "gem";
2573 };
2574 version = "1.0.4";
2575 };
2576 simple_captcha2 = {
2577 dependencies = ["rails"];
2578 platforms = [];
2579 source = {
2580 remotes = ["https://rubygems.org"];
2581 sha256 = "0vdjydym8sjpa8c1q0n2hanj3n9vzi4ycdw2p6bbm6qqmm1f3fq3";
2582 type = "gem";
2583 };
2584 version = "0.4.3";
2585 };
2586 simple_oauth = {
2587 platforms = [];
2588 source = {
2589 remotes = ["https://rubygems.org"];
2590 sha256 = "0dw9ii6m7wckml100xhjc6vxpjcry174lbi9jz5v7ibjr3i94y8l";
2591 type = "gem";
2592 };
2593 version = "0.3.1";
2594 };
2595 simplecov = {
2596 dependencies = ["docile" "json" "simplecov-html"];
2597 platforms = [];
2598 source = {
2599 remotes = ["https://rubygems.org"];
2600 sha256 = "1sfyfgf7zrp2n42v7rswkqgk3bbwk1bnsphm24y7laxv3f8z0947";
2601 type = "gem";
2602 };
2603 version = "0.16.1";
2604 };
2605 simplecov-html = {
2606 platforms = [];
2607 source = {
2608 remotes = ["https://rubygems.org"];
2609 sha256 = "1lihraa4rgxk8wbfl77fy9sf0ypk31iivly8vl3w04srd7i0clzn";
2610 type = "gem";
2611 };
2612 version = "0.10.2";
2613 };
2614 sinon-rails = {
2615 dependencies = ["railties"];
2616 platforms = [];
2617 source = {
2618 remotes = ["https://rubygems.org"];
2619 sha256 = "1b7996hb8vfky29b0zcql90x8i6vhdg2zy9nfzmhh820gjv3kggb";
2620 type = "gem";
2621 };
2622 version = "1.15.0";
2623 };
2624 spring = {
2625 dependencies = ["activesupport"];
2626 platforms = [];
2627 source = {
2628 remotes = ["https://rubygems.org"];
2629 sha256 = "168yz9c1fv21wc5i8q7n43b9nk33ivg3ws1fn6x0afgryz3ssx75";
2630 type = "gem";
2631 };
2632 version = "2.0.2";
2633 };
2634 spring-commands-cucumber = {
2635 dependencies = ["spring"];
2636 platforms = [];
2637 source = {
2638 remotes = ["https://rubygems.org"];
2639 sha256 = "0mw81gvms2svn4k4pc6ly7smkmf0j9r2xbf0d38vygbyhiwd1c9a";
2640 type = "gem";
2641 };
2642 version = "1.0.1";
2643 };
2644 spring-commands-rspec = {
2645 dependencies = ["spring"];
2646 platforms = [];
2647 source = {
2648 remotes = ["https://rubygems.org"];
2649 sha256 = "0b0svpq3md1pjz5drpa5pxwg8nk48wrshq8lckim4x3nli7ya0k2";
2650 type = "gem";
2651 };
2652 version = "1.0.4";
2653 };
2654 sprockets = {
2655 dependencies = ["concurrent-ruby" "rack"];
2656 platforms = [];
2657 source = {
2658 remotes = ["https://rubygems.org"];
2659 sha256 = "182jw5a0fbqah5w9jancvfmjbk88h8bxdbwnl4d3q809rpxdg8ay";
2660 type = "gem";
2661 };
2662 version = "3.7.2";
2663 };
2664 sprockets-rails = {
2665 dependencies = ["actionpack" "activesupport" "sprockets"];
2666 platforms = [];
2667 source = {
2668 remotes = ["https://rubygems.org"];
2669 sha256 = "0ab42pm8p5zxpv3sfraq45b9lj39cz9mrpdirm30vywzrwwkm5p1";
2670 type = "gem";
2671 };
2672 version = "3.2.1";
2673 };
2674 state_machines = {
2675 platforms = [];
2676 source = {
2677 remotes = ["https://rubygems.org"];
2678 sha256 = "00mi16hg3rhkxz4y58s173cbnjlba41y9bfcim90p4ja6yfj9ri3";
2679 type = "gem";
2680 };
2681 version = "0.5.0";
2682 };
2683 string-direction = {
2684 platforms = [];
2685 source = {
2686 remotes = ["https://rubygems.org"];
2687 sha256 = "0iyddwmkj425c6xbn5pmlr2yzwcq4snzlan7rky5b1yp2pvf70jj";
2688 type = "gem";
2689 };
2690 version = "1.2.1";
2691 };
2692 swd = {
2693 dependencies = ["activesupport" "attr_required" "httpclient"];
2694 platforms = [];
2695 source = {
2696 remotes = ["https://rubygems.org"];
2697 sha256 = "1s2vjb6f13za7p1iycl2p73d3p202xa6xny9fjrp8ynwsqix7lyd";
2698 type = "gem";
2699 };
2700 version = "1.1.2";
2701 };
2702 sysexits = {
2703 platforms = [];
2704 source = {
2705 remotes = ["https://rubygems.org"];
2706 sha256 = "0qjng6pllznmprzx8vb0zg0c86hdrkyjs615q41s9fjpmv2430jr";
2707 type = "gem";
2708 };
2709 version = "1.2.0";
2710 };
2711 systemu = {
2712 platforms = [];
2713 source = {
2714 remotes = ["https://rubygems.org"];
2715 sha256 = "0gmkbakhfci5wnmbfx5i54f25j9zsvbw858yg3jjhfs5n4ad1xq1";
2716 type = "gem";
2717 };
2718 version = "2.6.5";
2719 };
2720 temple = {
2721 platforms = [];
2722 source = {
2723 remotes = ["https://rubygems.org"];
2724 sha256 = "00nxf610nzi4n1i2lkby43nrnarvl89fcl6lg19406msr0k3ycmq";
2725 type = "gem";
2726 };
2727 version = "0.8.0";
2728 };
2729 term-ansicolor = {
2730 dependencies = ["tins"];
2731 platforms = [];
2732 source = {
2733 remotes = ["https://rubygems.org"];
2734 sha256 = "079hbagd9mk0839rkajsdrbzkn992gj8ah2n45qd64v25ml27i6d";
2735 type = "gem";
2736 };
2737 version = "1.7.0";
2738 };
2739 terminal-table = {
2740 dependencies = ["unicode-display_width"];
2741 platforms = [];
2742 source = {
2743 remotes = ["https://rubygems.org"];
2744 sha256 = "1512cngw35hsmhvw4c05rscihc59mnj09m249sm9p3pik831ydqk";
2745 type = "gem";
2746 };
2747 version = "1.8.0";
2748 };
2749 thor = {
2750 platforms = [];
2751 source = {
2752 remotes = ["https://rubygems.org"];
2753 sha256 = "01n5dv9kql60m6a00zc0r66jvaxx98qhdny3klyj0p3w34pad2ns";
2754 type = "gem";
2755 };
2756 version = "0.19.4";
2757 };
2758 thread_safe = {
2759 platforms = [];
2760 source = {
2761 remotes = ["https://rubygems.org"];
2762 sha256 = "0nmhcgq6cgz44srylra07bmaw99f5271l0dpsvl5f75m44l0gmwy";
2763 type = "gem";
2764 };
2765 version = "0.3.6";
2766 };
2767 tilt = {
2768 platforms = [];
2769 source = {
2770 remotes = ["https://rubygems.org"];
2771 sha256 = "0020mrgdf11q23hm1ddd6fv691l51vi10af00f137ilcdb2ycfra";
2772 type = "gem";
2773 };
2774 version = "2.0.8";
2775 };
2776 timecop = {
2777 platforms = [];
2778 source = {
2779 remotes = ["https://rubygems.org"];
2780 sha256 = "0d7mm786180v4kzvn1f77rhfppsg5n0sq2bdx63x9nv114zm8jrp";
2781 type = "gem";
2782 };
2783 version = "0.9.1";
2784 };
2785 timers = {
2786 platforms = [];
2787 source = {
2788 remotes = ["https://rubygems.org"];
2789 sha256 = "04zbs9wyzajn7g9xfgg2zqz5kzf0qa7jgh4hgry4pfcxfmlnwdwx";
2790 type = "gem";
2791 };
2792 version = "4.2.0";
2793 };
2794 tins = {
2795 platforms = [];
2796 source = {
2797 remotes = ["https://rubygems.org"];
2798 sha256 = "1pqj45n216zrz7yckdbdknlmhh187iqzx8fp76y2h0jrgqjfkxmj";
2799 type = "gem";
2800 };
2801 version = "1.20.2";
2802 };
2803 to_regexp = {
2804 platforms = [];
2805 source = {
2806 remotes = ["https://rubygems.org"];
2807 sha256 = "1rgabfhnql6l4fx09mmj5d0vza924iczqf2blmn82l782b6qqi9v";
2808 type = "gem";
2809 };
2810 version = "0.2.1";
2811 };
2812 turbo_dev_assets = {
2813 platforms = [];
2814 source = {
2815 remotes = ["https://rubygems.org"];
2816 sha256 = "08yp7gpishjfj8b7d61hxs677288ycv6yg78a7hfzn631gxczipx";
2817 type = "gem";
2818 };
2819 version = "0.0.2";
2820 };
2821 twitter = {
2822 dependencies = ["addressable" "buftok" "equalizer" "http" "http-form_data" "http_parser.rb" "memoizable" "multipart-post" "naught" "simple_oauth"];
2823 platforms = [];
2824 source = {
2825 remotes = ["https://rubygems.org"];
2826 sha256 = "0fjyz3viabz3xs5d9aad18zgdbhfwm51jsnzigc8kxk77p1x58n5";
2827 type = "gem";
2828 };
2829 version = "6.2.0";
2830 };
2831 twitter-text = {
2832 dependencies = ["unf"];
2833 platforms = [];
2834 source = {
2835 remotes = ["https://rubygems.org"];
2836 sha256 = "1732h7hy1k152w8wfvjsx7b79alk45i5imwd37ia4qcx8hfm3gvg";
2837 type = "gem";
2838 };
2839 version = "1.14.7";
2840 };
2841 typhoeus = {
2842 dependencies = ["ethon"];
2843 platforms = [];
2844 source = {
2845 remotes = ["https://rubygems.org"];
2846 sha256 = "0cni8b1idcp0dk8kybmxydadhfpaj3lbs99w5kjibv8bsmip2zi5";
2847 type = "gem";
2848 };
2849 version = "1.3.1";
2850 };
2851 tzinfo = {
2852 dependencies = ["thread_safe"];
2853 platforms = [];
2854 source = {
2855 remotes = ["https://rubygems.org"];
2856 sha256 = "1fjx9j327xpkkdlxwmkl3a8wqj7i4l4jwlrv3z13mg95z9wl253z";
2857 type = "gem";
2858 };
2859 version = "1.2.5";
2860 };
2861 uglifier = {
2862 dependencies = ["execjs"];
2863 platforms = [];
2864 source = {
2865 remotes = ["https://rubygems.org"];
2866 sha256 = "1g203kly5wp4qlkc7371skyvyin6iinc8i0p5wrpiqgblqxxgcf1";
2867 type = "gem";
2868 };
2869 version = "4.1.19";
2870 };
2871 unf = {
2872 dependencies = ["unf_ext"];
2873 platforms = [];
2874 source = {
2875 remotes = ["https://rubygems.org"];
2876 sha256 = "0bh2cf73i2ffh4fcpdn9ir4mhq8zi50ik0zqa1braahzadx536a9";
2877 type = "gem";
2878 };
2879 version = "0.1.4";
2880 };
2881 unf_ext = {
2882 platforms = [];
2883 source = {
2884 remotes = ["https://rubygems.org"];
2885 sha256 = "06p1i6qhy34bpb8q8ms88y6f2kz86azwm098yvcc0nyqk9y729j1";
2886 type = "gem";
2887 };
2888 version = "0.0.7.5";
2889 };
2890 unicode-display_width = {
2891 platforms = [];
2892 source = {
2893 remotes = ["https://rubygems.org"];
2894 sha256 = "0040bsdpcmvp8w31lqi2s9s4p4h031zv52401qidmh25cgyh4a57";
2895 type = "gem";
2896 };
2897 version = "1.4.0";
2898 };
2899 unicorn = {
2900 dependencies = ["kgio" "raindrops"];
2901 platforms = [];
2902 source = {
2903 remotes = ["https://rubygems.org"];
2904 sha256 = "1qfhvzs4i6ja1s43j8p1kfbzm10n7a02ngki30a38y5m46a2qrak";
2905 type = "gem";
2906 };
2907 version = "5.4.1";
2908 };
2909 unicorn-worker-killer = {
2910 dependencies = ["get_process_mem" "unicorn"];
2911 platforms = [];
2912 source = {
2913 remotes = ["https://rubygems.org"];
2914 sha256 = "0rrdxpwdsapx47axjin8ymxb4f685qlpx8a26bql4ay1559c3gva";
2915 type = "gem";
2916 };
2917 version = "0.4.4";
2918 };
2919 uuid = {
2920 dependencies = ["macaddr"];
2921 platforms = [];
2922 source = {
2923 remotes = ["https://rubygems.org"];
2924 sha256 = "1mr405vg4ccnndkyf7pb49gp1fha8i6gj7iwq43nxkak41cwzh5f";
2925 type = "gem";
2926 };
2927 version = "2.3.9";
2928 };
2929 valid = {
2930 platforms = [];
2931 source = {
2932 remotes = ["https://rubygems.org"];
2933 sha256 = "0vxrgik9gxyh5j2w16nz5azjk0cbzmvv883hq9pvxm9anfbbj8d3";
2934 type = "gem";
2935 };
2936 version = "1.2.0";
2937 };
2938 validate_email = {
2939 dependencies = ["activemodel" "mail"];
2940 platforms = [];
2941 source = {
2942 remotes = ["https://rubygems.org"];
2943 sha256 = "1r1fz29l699arka177c9xw7409d1a3ff95bf7a6pmc97slb91zlx";
2944 type = "gem";
2945 };
2946 version = "0.1.6";
2947 };
2948 validate_url = {
2949 dependencies = ["activemodel" "addressable"];
2950 platforms = [];
2951 source = {
2952 remotes = ["https://rubygems.org"];
2953 sha256 = "1df4gch8dizimpbl185vfgw95yb8ffr6zwj6whzbxfil95c3f2qh";
2954 type = "gem";
2955 };
2956 version = "1.0.2";
2957 };
2958 versionist = {
2959 dependencies = ["activesupport" "railties" "yard"];
2960 platforms = [];
2961 source = {
2962 remotes = ["https://rubygems.org"];
2963 sha256 = "1p8wizg6jml7gz1qiqk7d77hy0w5650g812jhgd0zzkwwdmzm38m";
2964 type = "gem";
2965 };
2966 version = "1.7.0";
2967 };
2968 warden = {
2969 dependencies = ["rack"];
2970 platforms = [];
2971 source = {
2972 remotes = ["https://rubygems.org"];
2973 sha256 = "1fr9n9i9r82xb6i61fdw4xgc7zjv7fsdrr4k0njchy87iw9fl454";
2974 type = "gem";
2975 };
2976 version = "1.2.8";
2977 };
2978 webfinger = {
2979 dependencies = ["activesupport" "httpclient"];
2980 platforms = [];
2981 source = {
2982 remotes = ["https://rubygems.org"];
2983 sha256 = "0m0jh8k7c0ifh2jhbn7ihqrmn5fi754wflva97zgy70hpdvxyjar";
2984 type = "gem";
2985 };
2986 version = "1.1.0";
2987 };
2988 webmock = {
2989 dependencies = ["addressable" "crack" "hashdiff"];
2990 platforms = [];
2991 source = {
2992 remotes = ["https://rubygems.org"];
2993 sha256 = "03994dxs4xayvkxqp01dd1ivhg4xxx7z35f7cxw7y2mwj3xn24ib";
2994 type = "gem";
2995 };
2996 version = "3.4.2";
2997 };
2998 websocket-driver = {
2999 dependencies = ["websocket-extensions"];
3000 platforms = [];
3001 source = {
3002 remotes = ["https://rubygems.org"];
3003 sha256 = "1943442yllhldh9dbp374x2q39cxa49xrm28nb78b7mfbv3y195l";
3004 type = "gem";
3005 };
3006 version = "0.6.5";
3007 };
3008 websocket-extensions = {
3009 platforms = [];
3010 source = {
3011 remotes = ["https://rubygems.org"];
3012 sha256 = "034sdr7fd34yag5l6y156rkbhiqgmy395m231dwhlpcswhs6d270";
3013 type = "gem";
3014 };
3015 version = "0.1.3";
3016 };
3017 will_paginate = {
3018 platforms = [];
3019 source = {
3020 remotes = ["https://rubygems.org"];
3021 sha256 = "0ihf15yaj8883ddhkxq7q60zrg3zfsvqaf5853gybhcg18zq8bn9";
3022 type = "gem";
3023 };
3024 version = "3.1.6";
3025 };
3026 xpath = {
3027 dependencies = ["nokogiri"];
3028 platforms = [];
3029 source = {
3030 remotes = ["https://rubygems.org"];
3031 sha256 = "0bh8lk9hvlpn7vmi6h4hkcwjzvs2y0cmkk3yjjdr8fxvj6fsgzbd";
3032 type = "gem";
3033 };
3034 version = "3.2.0";
3035 };
3036 yard = {
3037 platforms = [];
3038 source = {
3039 remotes = ["https://rubygems.org"];
3040 sha256 = "0lmmr1839qgbb3zxfa7jf5mzy17yjl1yirwlgzdhws4452gqhn67";
3041 type = "gem";
3042 };
3043 version = "0.9.16";
3044 };
3045}
diff --git a/virtual/modules/websites/tools/diaspora/ldap.patch b/virtual/modules/websites/tools/diaspora/ldap.patch
deleted file mode 100644
index 3d4f785..0000000
--- a/virtual/modules/websites/tools/diaspora/ldap.patch
+++ /dev/null
@@ -1,256 +0,0 @@
1commit 936a14e225037aca4cdeac11c843c7985e636c88
2Author: Ismaël Bouya <ismael.bouya@normalesup.org>
3Date: Mon Jul 24 19:58:24 2017 +0200
4
5 Add LDAP to diaspora
6
7diff --git a/Gemfile b/Gemfile
8index 414b0138d..2a934e9c9 100644
9--- a/Gemfile
10+++ b/Gemfile
11@@ -217,6 +217,9 @@ gem "thor", "0.19.1"
12
13 # gem "therubyracer", :platform => :ruby
14
15+# LDAP
16+gem 'net-ldap', '~> 0.16'
17+
18 group :production do # we don"t install these on travis to speed up test runs
19 # Analytics
20
21diff --git a/Gemfile.lock b/Gemfile.lock
22index 84f8172e4..cdbf19fcd 100644
23--- a/Gemfile.lock 2019-01-13 19:55:52.538561762 +0100
24+++ b/Gemfile.lock 2019-01-13 19:58:11.087099067 +0100
25@@ -398,6 +398,7 @@
26 mysql2 (0.5.2)
27 naught (1.1.0)
28 nenv (0.3.0)
29+ net-ldap (0.16.1)
30 nio4r (2.3.1)
31 nokogiri (1.8.5)
32 mini_portile2 (~> 2.3.0)
33@@ -820,6 +821,7 @@
34 minitest
35 mobile-fu (= 1.4.0)
36 mysql2 (= 0.5.2)
37+ net-ldap (~> 0.16)
38 nokogiri (= 1.8.5)
39 omniauth (= 1.8.1)
40 omniauth-tumblr (= 1.2)
41diff --git a/app/models/user.rb b/app/models/user.rb
42index 940a48f25..d1e2beeee 100644
43--- a/app/models/user.rb
44+++ b/app/models/user.rb
45@@ -337,6 +337,12 @@ class User < ActiveRecord::Base
46 end
47
48 def send_confirm_email
49+ if skip_email_confirmation?
50+ self.email = unconfirmed_email
51+ self.unconfirmed_email = nil
52+ save
53+ end
54+
55 return if unconfirmed_email.blank?
56 Workers::Mail::ConfirmEmail.perform_async(id)
57 end
58@@ -554,6 +560,14 @@ class User < ActiveRecord::Base
59 end
60 end
61
62+ def ldap_user?
63+ AppConfig.ldap.enable? && ldap_dn.present?
64+ end
65+
66+ def skip_email_confirmation?
67+ ldap_user? && AppConfig.ldap.skip_email_confirmation?
68+ end
69+
70 private
71
72 def clearable_fields
73diff --git a/config/defaults.yml b/config/defaults.yml
74index c046aff07..66e9afa13 100644
75--- a/config/defaults.yml
76+++ b/config/defaults.yml
77@@ -202,6 +202,20 @@ defaults:
78 scope: tags
79 include_user_tags: false
80 pod_tags:
81+ ldap:
82+ enable: false
83+ host: localhost
84+ port: 389
85+ only_ldap: true
86+ mail_attribute: mail
87+ skip_email_confirmation: true
88+ use_bind_dn: true
89+ bind_dn: "cn=diaspora,dc=example,dc=com"
90+ bind_pw: "password"
91+ search_base: "dc=example,dc=com"
92+ search_filter: "uid=%{username}"
93+ bind_template: "uid=%{username},dc=example,dc=com"
94+
95
96 development:
97 environment:
98diff --git a/config/diaspora.yml.example b/config/diaspora.yml.example
99index b2573625d..c357c8651 100644
100--- a/config/diaspora.yml.example
101+++ b/config/diaspora.yml.example
102@@ -710,6 +710,36 @@ configuration: ## Section
103 ## If scope is 'tags', a comma separated list of tags here can be set.
104 ## For example "linux,diaspora", to receive posts related to these tags
105 #pod_tags:
106+ ldap:
107+ # Uncomment next line if you want to use LDAP on your instance
108+ enable: true
109+ host: localhost
110+ port: 389
111+ # Use only LDAP authentication (don't try other means)
112+ only_ldap: true
113+ # LDAP attribute to find the user's e-mail. Necessary to create accounts
114+ # for not existing users
115+ mail_attribute: mail
116+ # Skip e-mail confirmation when creating an account via LDAP.
117+ skip_email_confirmation: true
118+ # ----- Using bind_dn and bind_pw
119+ # bind_dn and bind_pw may be used if the diaspora instance
120+ # should be able to connect to LDAP to find and search for users.
121+
122+ use_bind_dn: true
123+ bind_dn: "cn=diaspora,dc=example,dc=com"
124+ bind_pw: "password"
125+ search_base: "dc=example,dc=com"
126+ # This is the filter with which to search for the user. %{username} will
127+ # be replaced by the given login.
128+ search_filter: "uid=%{username}"
129+ #
130+ # ----- Using template
131+ # This setting doesn't require a diaspora LDAP user. Use a template, and
132+ # diaspora will try to login with the templated dn and password
133+ #
134+ # bind_template: "uid=%{username},dc=example,dc=com"
135+
136
137 ## Here you can override settings defined above if you need
138 ## to have them different in different environments.
139diff --git a/config/initializers/0_ldap_authenticatable.rb b/config/initializers/0_ldap_authenticatable.rb
140new file mode 100644
141index 000000000..49846502f
142--- /dev/null
143+++ b/config/initializers/0_ldap_authenticatable.rb
144@@ -0,0 +1,82 @@
145+require 'net/ldap'
146+require 'devise/strategies/authenticatable'
147+
148+module Devise
149+ module Strategies
150+ class LdapAuthenticatable < Authenticatable
151+ def valid?
152+ AppConfig.ldap.enable? && params[:user].present?
153+ end
154+
155+ def authenticate!
156+ ldap = Net::LDAP.new(
157+ host: AppConfig.ldap.host,
158+ port: AppConfig.ldap.port,
159+ encryption: :simple_tls,
160+ )
161+
162+ if AppConfig.ldap.use_bind_dn?
163+ ldap.auth AppConfig.ldap.bind_dn, AppConfig.ldap.bind_pw
164+
165+ if !ldap.bind
166+ return fail(:ldap_configuration_error)
167+ end
168+
169+ search_filter = AppConfig.ldap.search_filter % { username: params[:user][:username] }
170+
171+ result = ldap.search(base: AppConfig.ldap.search_base, filter: search_filter, result_set: true)
172+
173+ if result.count != 1
174+ return login_fail
175+ end
176+
177+ user_dn = result.first.dn
178+ user_email = result.first[AppConfig.ldap.mail_attribute].first
179+ else
180+ user_dn = AppConfig.ldap.bind_template % { username: params[:user][:username] }
181+ end
182+
183+ ldap.auth user_dn, params[:user][:password]
184+
185+ if ldap.bind
186+ user = User.find_by(ldap_dn: user_dn)
187+
188+ # We don't want to trust too much the email attribute from
189+ # LDAP: if the user can edit it himself, he may login as
190+ # anyone
191+ if user.nil?
192+ if !AppConfig.ldap.use_bind_dn?
193+ result = ldap.search(base: user_dn, scope: Net::LDAP::SearchScope_BaseObject, filter: "(objectClass=*)", result_set: true)
194+ user_email = result.first[AppConfig.ldap.mail_attribute].first
195+ end
196+
197+ if user_email.present? && User.find_by(email: user_email).nil?
198+ # Password is used for remember_me token
199+ user = User.build(email: user_email, ldap_dn: user_dn, password: SecureRandom.hex, username: params[:user][:username])
200+ user.save
201+ user.seed_aspects
202+ elsif User.find_by(email: user_email).present?
203+ return fail(:ldap_existing_email)
204+ else
205+ return fail(:ldap_cannot_create_account_without_email)
206+ end
207+ end
208+
209+ success!(user)
210+ else
211+ return login_fail
212+ end
213+ end
214+
215+ def login_fail
216+ if AppConfig.ldap.only_ldap?
217+ return fail(:ldap_invalid_login)
218+ else
219+ return pass
220+ end
221+ end
222+ end
223+ end
224+end
225+
226+Warden::Strategies.add(:ldap_authenticatable, Devise::Strategies::LdapAuthenticatable)
227diff --git a/config/initializers/devise.rb b/config/initializers/devise.rb
228index 3698e2373..14e88063e 100644
229--- a/config/initializers/devise.rb
230+++ b/config/initializers/devise.rb
231@@ -250,10 +250,9 @@ Devise.setup do |config|
232 # If you want to use other strategies, that are not supported by Devise, or
233 # change the failure app, you can configure them inside the config.warden block.
234 #
235- # config.warden do |manager|
236- # manager.intercept_401 = false
237- # manager.default_strategies(:scope => :user).unshift :some_external_strategy
238- # end
239+ config.warden do |manager|
240+ manager.default_strategies(scope: :user).unshift :ldap_authenticatable
241+ end
242
243 # ==> Mountable engine configurations
244 # When using Devise inside an engine, let's call it `MyEngine`, and this engine
245diff --git a/db/migrate/20170724182100_add_ldap_dn_to_users.rb b/db/migrate/20170724182100_add_ldap_dn_to_users.rb
246new file mode 100644
247index 000000000..f5cc84d11
248--- /dev/null
249+++ b/db/migrate/20170724182100_add_ldap_dn_to_users.rb
250@@ -0,0 +1,6 @@
251+class AddLdapDnToUsers < ActiveRecord::Migration
252+ def change
253+ add_column :users, :ldap_dn, :text, null: true, default: nil
254+ add_index :users, ['ldap_dn'], :length => { "ldap_dn" => 191 }
255+ end
256+end
diff --git a/virtual/modules/websites/tools/ether/default.nix b/virtual/modules/websites/tools/ether/default.nix
deleted file mode 100644
index 5ee3433..0000000
--- a/virtual/modules/websites/tools/ether/default.nix
+++ /dev/null
@@ -1,89 +0,0 @@
1{ lib, pkgs, config, myconfig, mylibs, ... }:
2let
3 etherpad = pkgs.callPackage ./etherpad_lite.nix {
4 inherit (mylibs) fetchedGithub;
5 env = myconfig.env.tools.etherpad-lite;
6 };
7
8 cfg = config.services.myWebsites.tools.etherpad-lite;
9in {
10 options.services.myWebsites.tools.etherpad-lite = {
11 enable = lib.mkEnableOption "enable etherpad's website";
12 };
13
14 config = lib.mkIf cfg.enable {
15 systemd.services.etherpad-lite = {
16 description = "Etherpad-lite";
17 wantedBy = [ "multi-user.target" ];
18 after = [ "network.target" "postgresql.service" ];
19 wants = [ "postgresql.service" ];
20
21 environment.NODE_ENV = "production";
22 environment.HOME = etherpad.webappDir;
23
24 path = [ pkgs.nodejs ];
25
26 script = ''
27 exec ${pkgs.nodejs}/bin/node ${etherpad.webappDir}/src/node/server.js \
28 --settings ${etherpad.config}
29 '';
30
31 serviceConfig = {
32 DynamicUser = true;
33 User = "etherpad-lite";
34 Group = "etherpad-lite";
35 WorkingDirectory = etherpad.webappDir;
36 PrivateTmp = true;
37 NoNewPrivileges = true;
38 PrivateDevices = true;
39 ProtectHome = true;
40 ProtectControlGroups = true;
41 ProtectKernelModules = true;
42 Restart = "always";
43 Type = "simple";
44 TimeoutSec = 60;
45 };
46 };
47
48 services.myWebsites.tools.modules = [
49 "headers" "proxy" "proxy_http" "proxy_wstunnel"
50 ];
51 security.acme.certs."eldiron".extraDomains."ether.immae.eu" = null;
52 services.myWebsites.tools.vhostConfs.etherpad-lite = {
53 certName = "eldiron";
54 hosts = [ "ether.immae.eu" ];
55 root = null;
56 extraConfig = [ ''
57 Header always set Strict-Transport-Security "max-age=31536000; includeSubdomains;"
58 RequestHeader set X-Forwarded-Proto "https"
59
60 RewriteEngine On
61
62 RewriteMap redirects "txt:${pkgs.writeText "redirects.txt" myconfig.env.tools.etherpad-lite.redirects}"
63 RewriteCond %{QUERY_STRING} "!noredirect"
64 RewriteCond %{REQUEST_URI} "^(.*)$"
65 RewriteCond ''${redirects:$1|Unknown} "!Unknown"
66 RewriteRule "^(.*)$" ''${redirects:$1} [L,NE,R=301,QSD]
67
68 RewriteCond %{REQUEST_URI} ^/socket.io [NC]
69 RewriteCond %{QUERY_STRING} transport=websocket [NC]
70 RewriteRule /(.*) ws://localhost:${etherpad.listenPort}/$1 [P,L]
71
72 <IfModule mod_proxy.c>
73 ProxyVia On
74 ProxyRequests Off
75 ProxyPreserveHost On
76 ProxyPass / http://localhost:${etherpad.listenPort}/
77 ProxyPassReverse / http://localhost:${etherpad.listenPort}/
78 ProxyPass /socket.io ws://localhost:${etherpad.listenPort}/socket.io
79 ProxyPassReverse /socket.io ws://localhost:${etherpad.listenPort}/socket.io
80 <Proxy *>
81 Options FollowSymLinks MultiViews
82 AllowOverride None
83 Require all granted
84 </Proxy>
85 </IfModule>
86 '' ];
87 };
88 };
89}
diff --git a/virtual/modules/websites/tools/ether/etherpad-lite.json b/virtual/modules/websites/tools/ether/etherpad-lite.json
deleted file mode 100644
index 81369c4..0000000
--- a/virtual/modules/websites/tools/ether/etherpad-lite.json
+++ /dev/null
@@ -1,15 +0,0 @@
1{
2 "tag": "1.7.0",
3 "meta": {
4 "name": "etherpad-lite",
5 "url": "https://github.com/ether/etherpad-lite",
6 "branch": "refs/tags/1.7.0"
7 },
8 "github": {
9 "owner": "ether",
10 "repo": "etherpad-lite",
11 "rev": "96ac381afb9ea731dad48968f15d77dc6488bd0d",
12 "sha256": "03k6bwlm9ch9kssy9jipfg8ij7rpbzd89xq4mvg4grg1q6ivnzk9",
13 "fetchSubmodules": true
14 }
15}
diff --git a/virtual/modules/websites/tools/ether/etherpad_lite.nix b/virtual/modules/websites/tools/ether/etherpad_lite.nix
deleted file mode 100644
index 02071f1..0000000
--- a/virtual/modules/websites/tools/ether/etherpad_lite.nix
+++ /dev/null
@@ -1,183 +0,0 @@
1{ env, fetchedGithub, fetchurl, stdenv, writeText, pkgs, cacert }:
2let
3 listenPort = env.listenPort;
4 sessionkey = writeText "SESSIONKEY.txt" env.session_key;
5 apikey = writeText "APIKEY.txt" env.api_key;
6 jquery = fetchurl {
7 url = https://code.jquery.com/jquery-1.9.1.js;
8 sha256 = "0h4dk67yc9d0kadqxb6b33585f3x3559p6qmp70l00qwq030vn3v";
9 };
10 etherpad_modules = [
11 "ep_aa_file_menu_toolbar"
12 "ep_adminpads"
13 "ep_align"
14 "ep_bookmark"
15 "ep_clear_formatting"
16 "ep_colors"
17 "ep_copy_paste_select_all"
18 "ep_cursortrace"
19 "ep_embedmedia"
20 "ep_font_family"
21 "ep_font_size"
22 "ep_headings2"
23 "ep_ldapauth"
24 "ep_line_height"
25 "ep_markdown"
26 "ep_previewimages"
27 "ep_ruler"
28 "ep_scrollto"
29 "ep_set_title_on_pad"
30 "ep_subscript_and_superscript"
31 "ep_timesliderdiff"
32 ];
33 config =
34 # Make sure we’re not rebuilding whole libreoffice just because of a
35 # dependency
36 let libreoffice = (import <nixpkgs> {}).libreoffice-fresh;
37 in
38 writeText "settings.json" ''
39 {
40 "title": "Etherpad",
41 "favicon": "favicon.ico",
42
43 "ip": "127.0.0.1",
44 "port" : ${env.listenPort},
45 "showSettingsInAdminPage" : false,
46 "dbType" : "postgres",
47 "dbSettings" : {
48 "user" : "${env.postgresql.user}",
49 "host" : "${env.postgresql.socket}",
50 "password": "${env.postgresql.password}",
51 "database": "${env.postgresql.database}",
52 "charset" : "utf8mb4"
53 },
54
55 "defaultPadText" : "Welcome to Etherpad!\n\nThis pad text is synchronized as you type, so that everyone viewing this page sees the same text. This allows you to collaborate seamlessly on documents!\n\nGet involved with Etherpad at http:\/\/etherpad.org\n",
56 "padOptions": {
57 "noColors": false,
58 "showControls": true,
59 "showChat": true,
60 "showLineNumbers": true,
61 "useMonospaceFont": false,
62 "userName": false,
63 "userColor": false,
64 "rtl": false,
65 "alwaysShowChat": false,
66 "chatAndUsers": false,
67 "lang": "en-gb"
68 },
69
70 "suppressErrorsInPadText" : false,
71 "requireSession" : false,
72 "editOnly" : false,
73 "sessionNoPassword" : false,
74 "minify" : true,
75 "maxAge" : 21600,
76 "abiword" : null,
77 "soffice" : "${libreoffice}/bin/soffice",
78 "tidyHtml" : "${pkgs.html-tidy}/bin/tidy",
79 "allowUnknownFileEnds" : true,
80 "requireAuthentication" : false,
81 "requireAuthorization" : false,
82 "trustProxy" : false,
83 "disableIPlogging" : false,
84 "automaticReconnectionTimeout" : 0,
85 "scrollWhenFocusLineIsOutOfViewport": {
86 "percentage": {
87 "editionAboveViewport": 0,
88 "editionBelowViewport": 0
89 },
90 "duration": 0,
91 "scrollWhenCaretIsInTheLastLineOfViewport": false,
92 "percentageToScrollWhenUserPressesArrowUp": 0
93 },
94 "users": {
95 "ldapauth": {
96 "url": "ldaps://${env.ldap.host}",
97 "accountBase": "${env.ldap.base}",
98 "accountPattern": "(&(memberOf=cn=users,cn=etherpad,ou=services,dc=immae,dc=eu)(uid={{username}}))",
99 "displayNameAttribute": "cn",
100 "searchDN": "cn=etherpad,ou=services,dc=immae,dc=eu",
101 "searchPWD": "${env.ldap.password}",
102 "groupSearchBase": "${env.ldap.base}",
103 "groupAttribute": "member",
104 "groupAttributeIsDN": true,
105 "searchScope": "sub",
106 "groupSearch": "(memberOf=cn=groups,cn=etherpad,ou=services,dc=immae,dc=eu)",
107 "anonymousReadonly": false
108 }
109 },
110 "socketTransportProtocols" : ["xhr-polling", "jsonp-polling", "htmlfile"],
111 "loadTest": false,
112 "indentationOnNewLine": false,
113 "toolbar": {
114 "left": [
115 ["bold", "italic", "underline", "strikethrough"],
116 ["orderedlist", "unorderedlist", "indent", "outdent"],
117 ["undo", "redo"],
118 ["clearauthorship"]
119 ],
120 "right": [
121 ["importexport", "timeslider", "savedrevision"],
122 ["settings", "embed"],
123 ["showusers"]
124 ],
125 "timeslider": [
126 ["timeslider_export", "timeslider_returnToPad"]
127 ]
128 },
129 "loglevel": "INFO",
130 "logconfig" : { "appenders": [ { "type": "console" } ] }
131 }
132 '';
133 webappDir = stdenv.mkDerivation (fetchedGithub ./etherpad-lite.json // rec {
134 __noChroot = true;
135 patches = [ ./libreoffice_patch.diff ];
136 buildPhase = ''
137 export GIT_SSL_CAINFO=${cacert}/etc/ssl/certs/ca-bundle.crt
138 export SSL_CERT_FILE=${cacert}/etc/ssl/certs/ca-bundle.crt
139 export HOME=$PWD
140
141 touch src/.ep_initialized
142 cp -v src/static/custom/js.template src/static/custom/index.js
143 cp -v src/static/custom/js.template src/static/custom/pad.js
144 cp -v src/static/custom/js.template src/static/custom/timeslider.js
145 cp -v src/static/custom/css.template src/static/custom/index.css
146 cp -v src/static/custom/css.template src/static/custom/pad.css
147 cp -v src/static/custom/css.template src/static/custom/timeslider.css
148
149 sed -i 's/var\/dirty.db/\/var\/lib\/etherpad-lite\/dirty.db/g' \
150 settings.json.template
151
152 mkdir -v node_modules
153 ln -s ../src node_modules/ep_etherpad-lite
154
155 node bin/doc/generate doc/index.md --format=html \
156 --template=doc/template.html > documentation.html
157
158 cd src
159 npm install
160 cd ..
161 ${builtins.concatStringsSep "\n"
162 (map (n: "npm install ${n}; touch node_modules/${n}/.ep_initialized") etherpad_modules)}
163 '';
164 installPhase = ''
165 mkdir -p $out
166 install -t $out/src/ -vDm 644 src/.ep_initialized
167 cp -a node_modules $out/
168 cp -a src/* $out/src/
169 ln -sf ${sessionkey} $out/SESSIONKEY.txt
170 ln -sf ${apikey} $out/APIKEY.txt
171 cp ${jquery} $out/src/static/js/jquery.js
172
173 mkdir $out/doc
174 install -t "$out/doc/" \
175 -vDm 644 {CHANGELOG,CONTRIBUTING,README}.md \
176 -vDm 644 documentation.html
177 '';
178 buildInputs = [ pkgs.nodejs pkgs.python ];
179 });
180in
181 {
182 inherit webappDir config listenPort;
183 }
diff --git a/virtual/modules/websites/tools/ether/libreoffice_patch.diff b/virtual/modules/websites/tools/ether/libreoffice_patch.diff
deleted file mode 100644
index d9e3dfc..0000000
--- a/virtual/modules/websites/tools/ether/libreoffice_patch.diff
+++ /dev/null
@@ -1,11 +0,0 @@
1--- a/src/node/utils/LibreOffice.js 2018-06-18 09:54:15.087161212 +0200
2+++ b/src/node/utils/LibreOffice.js 2018-06-18 10:33:27.534055021 +0200
3@@ -63,6 +63,7 @@
4 '--invisible',
5 '--nologo',
6 '--nolockcheck',
7+ '-env:UserInstallation=file:///tmp/',
8 '--convert-to', task.type,
9 task.srcFile,
10 '--outdir', tmpDir
11
diff --git a/virtual/modules/websites/tools/git/default.nix b/virtual/modules/websites/tools/git/default.nix
deleted file mode 100644
index 91aa1d0..0000000
--- a/virtual/modules/websites/tools/git/default.nix
+++ /dev/null
@@ -1,48 +0,0 @@
1{ lib, pkgs, config, myconfig, mylibs, ... }:
2let
3 mantisbt = pkgs.callPackage ./mantisbt/mantisbt.nix {
4 inherit (mylibs) fetchedGithub;
5 env = myconfig.env.tools.mantisbt;
6 };
7 gitweb = pkgs.callPackage ./gitweb/gitweb.nix { gitoliteDir = config.services.myGitolite.gitoliteDir; };
8
9 cfg = config.services.myWebsites.tools.git;
10in {
11 options.services.myWebsites.tools.git = {
12 enable = lib.mkEnableOption "enable git's website";
13 };
14
15 config = lib.mkIf cfg.enable {
16 security.acme.certs."eldiron".extraDomains."git.immae.eu" = null;
17
18 nixpkgs.config.packageOverrides = oldpkgs: rec {
19 gitweb = oldpkgs.gitweb.overrideAttrs(old: {
20 installPhase = old.installPhase + ''
21 cp -r ${./gitweb/theme} $out/gitweb-theme;
22 '';
23 });
24 };
25
26 services.myWebsites.tools.modules =
27 gitweb.apache.modules ++
28 mantisbt.apache.modules;
29
30 services.myWebsites.tools.vhostConfs.git = {
31 certName = "eldiron";
32 hosts = ["git.immae.eu" ];
33 root = gitweb.webRoot;
34 extraConfig = [
35 gitweb.apache.vhostConf
36 mantisbt.apache.vhostConf
37 ''
38 RewriteEngine on
39 RewriteCond %{REQUEST_URI} ^/releases
40 RewriteRule /releases(.*) https://release.immae.eu$1 [P,L]
41 ''
42 ];
43 };
44 services.myPhpfpm.poolConfigs = {
45 mantisbt = mantisbt.phpFpm.pool;
46 };
47 };
48}
diff --git a/virtual/modules/websites/tools/git/gitweb/gitweb.nix b/virtual/modules/websites/tools/git/gitweb/gitweb.nix
deleted file mode 100644
index 22c70f2..0000000
--- a/virtual/modules/websites/tools/git/gitweb/gitweb.nix
+++ /dev/null
@@ -1,65 +0,0 @@
1{ gitweb, writeText, gitolite, git, gitoliteDir, highlight }:
2rec {
3 varDir = gitoliteDir;
4 webRoot = gitweb;
5 config = writeText "gitweb.conf" ''
6 $git_temp = "/tmp";
7
8 # The directories where your projects are. Must not end with a
9 # slash.
10 $projectroot = "${varDir}/repositories";
11
12 $projects_list = "${varDir}/projects.list";
13 $strict_export = "true";
14
15 # Base URLs for links displayed in the web interface.
16 our @git_base_url_list = qw(ssh://gitolite@git.immae.eu https://git.immae.eu);
17
18 $feature{'blame'}{'default'} = [1];
19 $feature{'avatar'}{'default'} = ['gravatar'];
20 $feature{'highlight'}{'default'} = [1];
21
22 @stylesheets = ("gitweb-theme/gitweb.css");
23 $logo = "gitweb-theme/git-logo.png";
24 $favicon = "gitweb-theme/git-favicon.png";
25 $javascript = "gitweb-theme/gitweb.js";
26 $logo_url = "https://git.immae.eu/";
27 $projects_list_group_categories = "true";
28 $projects_list_description_width = 60;
29 $project_list_default_category = "__Others__";
30 $highlight_bin = "${highlight}/bin/highlight";
31 '';
32 apache = {
33 user = "wwwrun";
34 group = "wwwrun";
35 modules = [ "cgid" ];
36 vhostConf = ''
37 SetEnv GIT_PROJECT_ROOT ${varDir}/repositories/
38 ScriptAliasMatch \
39 "(?x)^/(.*/(HEAD | \
40 info/refs | \
41 objects/(info/[^/]+ | \
42 [0-9a-f]{2}/[0-9a-f]{38} | \
43 pack/pack-[0-9a-f]{40}\.(pack|idx)) | \
44 git-(upload|receive)-pack))$" \
45 ${git}/libexec/git-core/git-http-backend/$1
46
47 <Directory "${gitolite}">
48 Require all granted
49 </Directory>
50 <Directory "${git}/libexec/git-core">
51 Require all granted
52 </Directory>
53 <Directory "${webRoot}">
54 DirectoryIndex gitweb.cgi
55 Require all granted
56 AllowOverride None
57 Options ExecCGI FollowSymLinks
58 <Files gitweb.cgi>
59 SetHandler cgi-script
60 SetEnv GITWEB_CONFIG "${config}"
61 </Files>
62 </Directory>
63 '';
64 };
65}
diff --git a/virtual/modules/websites/tools/git/gitweb/theme/git-favicon.png b/virtual/modules/websites/tools/git/gitweb/theme/git-favicon.png
deleted file mode 100644
index 4fa44bb..0000000
--- a/virtual/modules/websites/tools/git/gitweb/theme/git-favicon.png
+++ /dev/null
Binary files differ
diff --git a/virtual/modules/websites/tools/git/gitweb/theme/git-logo.png b/virtual/modules/websites/tools/git/gitweb/theme/git-logo.png
deleted file mode 100644
index fdaf7b7..0000000
--- a/virtual/modules/websites/tools/git/gitweb/theme/git-logo.png
+++ /dev/null
Binary files differ
diff --git a/virtual/modules/websites/tools/git/gitweb/theme/gitweb.css b/virtual/modules/websites/tools/git/gitweb/theme/gitweb.css
deleted file mode 100644
index 83e0742..0000000
--- a/virtual/modules/websites/tools/git/gitweb/theme/gitweb.css
+++ /dev/null
@@ -1,783 +0,0 @@
1/* Reset
2------------------------------------------------------------------------- */
3
4/* Based on http://meyerweb.com/eric/tools/css/reset/ */
5/* v1.0 | 20080212 */
6
7html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p,
8blockquote, pre, a, abbr, acronym, address, big, cite, code, del, dfn, em,
9font, img, ins, kbd, q, s, samp, small, strike, strong, sub, sup, tt, var, b,
10u, i, center, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table,
11caption, tbody, tfoot, thead, tr, th, td {
12 margin: 0;
13 padding: 0;
14 border: 0;
15 outline: 0;
16 font-size: 100%;
17 vertical-align: baseline;
18 background: transparent;
19}
20
21ol, ul { list-style: none; }
22
23blockquote, q { quotes: none; }
24
25blockquote:before, blockquote:after,
26q:before, q:after {
27 content: '';
28 content: none;
29}
30
31:focus { outline: 0; }
32
33ins { text-decoration: none; }
34
35del { text-decoration: line-through; }
36
37table {
38 border-collapse: collapse;
39 border-spacing: 0;
40}
41
42a { outline: none; }
43
44/* General
45---------------------------------------------------------------------------- */
46
47html {
48 position: relative;
49 min-height: 100%;
50}
51
52body {
53 font: 13px Helvetica,arial,freesans,clean,sans-serif;
54 line-height: 1.4;
55 margin: 0 0 105px;
56 background-color: #fff;
57 color: #000000;
58}
59
60/* Monospaced Fonts */
61.sha1, .mode, .diff_tree .list, .pre, .diff, .patchset {
62 font-family: 'Consolas','Bitstream Vera Sans Mono',monospace;
63}
64
65a:link, a:visited {
66 color: #4183C4;
67 text-decoration: none;
68}
69
70a:hover {
71 text-decoration: underline;
72}
73
74td.list a[href*='tree'], td.list a[href*='blob'] {
75 padding-left: 20px;
76 display: block;
77 float: left;
78 height: 16px;
79 line-height: 16px;
80}
81
82td.list a[href*='tree'] {
83 background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABq0lEQVQ4y8WTu4oUQRSGv+rtGVuxhwVFdFEEE2c3d0HYTEMTn8DEVxADQTDUF9DMwMxQMBMx8AEWzRQ3cBHd9TI91+2urjq/QbczY2IygSep4nD+79yqnCRWsYQVbWVACvDh5ZXdrLe15dwyT1TjT/sxFFeB6i+VA2B6+cb7kAI4Jf0LO087zjlQI8Y5Qvnj0sHug321XoC1bk+K9eHk6+s7wPMUgKAS88eqb4+Jfg2SHs7lZBvX2Nh+2EUCDGSAcMnJsx9f7NxfAGqXyDzRd5EJO/pMPT1gcviGTnYOVIN5pAAE8v7dLrKL8xnglFk4ws9Afko9HpH3b5Gd2mwb/lOBmgrSdYhJugDUCenxM6xv3p4HCsP8F0LxCsUhCkMURihOyM7fg0osASTFEpu9a4LjGIUCqwcoDiEUrX+E4hRUQb20RiokC1j9vckUhygU7X3QZh7NAVKYL7YBeMkRUfjVCotF2XGIwnghtrJpMywB5G0QZj9P1JNujuWJ1AHLQadRrACPkuZ0SSSWpeStWgDK6tHek5vbiOs48n++XQHurcf0rFng//6NvwG+iB9/4duaTgAAAABJRU5ErkJgggo=) center left no-repeat;
84}
85
86td.list a[href*='blob'] {
87 background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAQAAAC1+jfqAAAA6ElEQVQoFQXBMW5TQRgGwNnHnoE0QbiCjoIooUmTU3AuS1BwIoTSUdJBigg3GCWOg9/++zHTop078wIAsPMrE4SL5/1aIyMjIyMjz/m0tbFECFdrPeaQQw75mz/5nZH7fN7aWILmauSYfznmmIfss8vIUx7zZWsTTXM5vpWvTk5Wq9VHQP/gtgOLa0Qpw940vAQdaG6thpOhlOkG0AEuAVGmEkAH+G4YSikxXQM6wDsAMRFAB/ihDNNUmN4DOsAbBAEAdICfpmmaAt4COoj2GgCASbIkZh1NAACznhQt2itnFgAAlF3u/gMDtJXPzQxoswAAAABJRU5ErkJgggo=) center left no-repeat;
88}
89
90i {
91 font-style: normal;
92}
93
94td, th {
95 padding: 5px;
96}
97
98.page_nav br {
99 display: none;
100}
101
102/* Page Header
103---------------------------------------------------------------------------- */
104
105.page_header {
106 height: 50px;
107 line-height: 50px;
108 position: relative;
109 padding: 0 27px;
110 margin-bottom: 20px;
111 font-size: 20px;
112 font-family: Helvetica, Arial, Freesans, Clean, sans-serif;
113 background: #FFFFFF; /* old browsers */
114 background: -moz-linear-gradient(top, #FFFFFF 0%, #F5F5F5 100%); /* firefox */
115 background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#FFFFFF), color-stop(100%,#F5F5F5)); /* webkit */
116 filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#FFFFFF', endColorstr='#F5F5F5',GradientType=0 ); /* ie */
117 background: -o-linear-gradient(top, #FFFFFF 0%, #F5F5F5 100%);
118 border-bottom: 1px solid #dfdfdf;
119}
120
121.page_header a:link, .page_header a:visited {
122 color: #4183C4;
123 text-decoration: none;
124 padding: 3px;
125 font-weight: bold;
126}
127
128.page_header a:hover {
129 font-weight: bold;
130 padding: 3px;
131 text-decoration: underline;
132}
133
134.page_header a:first-child {
135 background: transparent;
136}
137
138.page_header img.logo {
139 position: relative;
140 top: 7px;
141 margin-right: 5px;
142}
143
144/* Page Footer
145---------------------------------------------------------------------------- */
146
147.page_footer {
148 position: absolute;
149 left: 0;
150 bottom: 0;
151 width: 100%;
152 height: 80px;
153 line-height: 80px;
154 margin-top: 15px;
155 background: #f1f1f1;
156 border-top: 2px solid #ddd;
157 border-bottom: 1px solid #ddd;
158}
159
160.page_footer_text {
161 color: #666;
162 display: inline;
163 float: left;
164 margin-left: 25px;
165 width: 80%;
166 overflow: hidden;
167 white-space: nowrap;
168 text-overflow: ellipsis;
169}
170
171a.rss_logo {
172 float: right;
173 padding: 3px 1px;
174 width: 35px;
175 line-height: 10px;
176 border: 1px solid;
177 border-color: #fcc7a5 #7d3302 #3e1a01 #ff954e;
178 color: #ffffff;
179 background-color: #ff6600;
180 font-weight: bold;
181 font-family: sans-serif;
182 font-size: 80%;
183 text-align: center;
184 text-decoration: none;
185 margin-top: 30px;
186 margin-left: 5px;
187}
188
189a.rss_logo:hover {
190 background-color: #ee5500;
191}
192
193.rss_logo {
194 margin-right: 25px;
195 background: yellow;
196}
197
198.rss_logo:last-child {
199 margin-right: 5px;
200}
201
202/* Index include
203---------------------------------------------------------------------------- */
204
205.index_include {
206 width: 95%;
207 margin: 0 auto 15px;
208 background: -moz-linear-gradient(center top , #FFFFFF 0%, #F5F5F5 100%) repeat scroll 0 0 transparent;
209 border: 1px solid #DFDFDF;
210 padding: 8px;
211 -webkit-box-sizing: border-box;
212 -moz-box-sizing: border-box;
213 box-sizing: border-box;
214}
215
216/* Elements
217---------------------------------------------------------------------------- */
218
219.project_list,
220.shortlog,
221.tree,
222.commit_search,
223.history {
224 width: 95%;
225 margin: 0 auto 15px auto;
226 border: 1px solid #d8d8d8;
227 -moz-box-shadow: 0 0 3px rgba(0,0,0,0.2);
228 -webkit-box-shadow: 0 0 3px rgba(0,0,0,0.2);
229 box-shadow: 0 0 3px rgba(0,0,0,0.2);
230}
231
232.project_list th,
233.shortlog th,
234.tree th,
235.commit_search th {
236 color: #afafaf;
237 font-weight: normal;
238}
239
240.project_list th {
241 font-weight: bold;
242}
243
244.project_list tr,
245.shortlog tr,
246.tree tr,
247.commit_search tr {
248 background: #eaeaea;
249 height: 2.5em;
250 text-align: left;
251 color: #545454;
252}
253
254.project_list tr.dark, .project_list tr.light,
255.shortlog tr.dark, .shortlog tr.light,
256.tree tr.dark, .tree tr.light,
257.commit_search tr.dark, .commit_search tr.light,
258.history tr.dark, .history tr.light,
259.heads tr.dark, .heads tr.light {
260 background: #F9F9F9; /* old browsers */
261 background: -moz-linear-gradient(top, #F9F9F9 0%, #EFEFEF 100%); /* firefox */
262 background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#F9F9F9), color-stop(100%,#EFEFEF)); /* webkit */
263 filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#F9F9F9', endColorstr='#EFEFEF',GradientType=0 ); /* ie */
264 background: -o-linear-gradient(top, #F9F9F9 0%, #EFEFEF 100%);
265 height: 2.5em;
266 border-bottom: 1px solid #e1e1e1;
267}
268
269th .header {
270 background: transparent;
271 border: 0;
272 padding: 0;
273 font-weight: bold;
274}
275
276.tree {
277 width: 100%;
278 margin: 0;
279}
280
281.projsearch {
282 position: absolute;
283 right: 4%;
284 top: 15px;
285}
286
287.projsearch a {
288 display: none;
289}
290
291.commit_search {
292 background: #eaeaea;
293}
294
295.page_nav,
296.list_head,
297.page_path,
298.search {
299 width: 94%;
300 background: #eaeaea;
301 color: #545454;
302 border: 1px solid #d8d8d8;
303 padding: 5px;
304 margin: 0 auto 15px auto;
305}
306
307.history {
308 background: #eaeaea;
309}
310
311.title {
312 margin: 0 auto 15px auto;
313 padding: 5px;
314 width: 95%;
315}
316
317.readme {
318 background: #eaf2f5;
319 border: 1px solid #bedce7;
320 -moz-box-sizing: border-box;
321 -webkit-box-sizing: border-box;
322 box-sizing: border-box;
323 margin: 0 auto 15px auto;
324 padding: 15px;
325 width: 95%;
326}
327
328.readme h1 {
329 display: block;
330 font-size: 2em;
331 font-weight: bold;
332 margin-bottom: 0.67em;
333 margin-top: 0;
334}
335
336.readme h2 {
337 font-size: 1.5em;
338 font-weight: bold;
339 margin-bottom: 0.83em;
340}
341
342
343.readme h3 {
344 font-size: 1.17em;
345 font-weight: bold;
346 margin-bottom: 1em;
347}
348
349.readme p {
350 margin-bottom: 1em;
351}
352
353.readme ul {
354 list-style: disc;
355 margin-bottom: 1em;
356 margin-left: 1.5em;
357}
358
359.readme ul ul {
360 margin-bottom: 0;
361}
362
363.readme ol {
364 list-style: decimal;
365 margin-bottom: 1em;
366 margin-left: 1.5em;
367}
368
369.readme ol ol {
370 margin-bottom: 0;
371}
372
373.readme pre {
374 font-family: monospace;
375 margin: 1em 0;
376 white-space: pre;
377}
378
379.readme tt, .readme code, .readme kbd, .readme samp {
380 font-family: monospace;
381}
382
383.readme blockquote {
384 margin: 1em;
385}
386
387.projects_list,
388.tags {
389 width: 95%;
390 background: #f0f0f0;
391 color: #545454;
392 border: 1px solid #d8d8d8;
393 padding: 5px;
394 margin: 0 auto 15px auto;
395}
396
397.heads {
398 width: 95%;
399 color: #545454;
400 border: 1px solid #d8d8d8;
401 padding: 5px;
402 margin: 0 auto 15px auto;
403}
404
405.header {
406 width: 94%;
407 margin: 0 auto 15px auto;
408 background: #eaf2f5;
409 border: 1px solid #bedce7;
410 padding: 5px;
411}
412
413.header .age {
414 float: left;
415 color: #000;
416 font-weight: bold;
417 width: 10em;
418}
419
420.title_text {
421 width: 94%;
422 background: #eaf2f5;
423 border: 1px solid #bedce7;
424 padding: 5px;
425 margin: 0 auto 0 auto;
426}
427
428.log_body {
429 width: 94%;
430 background: #eaf2f5;
431 border: 1px solid #bedce7;
432 border-top: 0;
433 padding: 5px;
434 margin: 0 auto 15px auto;
435}
436
437.page_body {
438 line-height: 1.4em;
439 width: 94%;
440 background: #f8f8f8;
441 border: 1px solid #d8d8d8;
442 padding: 5px;
443 margin: 15px auto 15px auto;
444}
445
446.diff_tree {
447 width: 95%;
448 background: #f0f0f0;
449 border: 1px solid #d8d8d8;
450 padding: 5px;
451 margin: 0 auto 15px auto;
452}
453
454.page_body > .list_head {
455 width: 98.5%;
456}
457
458.page_body > .diff_tree {
459 width: 99.5%;
460}
461
462.patch > .header {
463 width: 99%;
464}
465
466.author .avatar,
467.author_date .avatar {
468 position: relative;
469 top: 3px;
470}
471
472.object_header .avatar {
473 border: 1px solid #D8D8D8;
474 float: right;
475}
476
477.object_header td,
478.object_header th {
479 vertical-align: top;
480}
481
482/* Refs
483---------------------------------------------------------------------------- */
484
485span.refs span {
486 color: #707070;
487 display: inline-block;
488 margin: 0;
489 background-color: #eee;
490 border: 1px solid #ccc;
491 border-radius: 3px;
492 height: 18px;
493 padding: 0 6px;
494 text-overflow: ellipsis;
495}
496
497span.refs span.ref {
498 color: #707070;
499 display: inline-block;
500 margin: 0;
501 background-color: #c4c4ff;
502 border: 1px solid #7878ff;
503 border-radius: 3px;
504 height: 18px;
505 padding: 0 6px;
506 text-overflow: ellipsis;
507 background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAMAAABhEH5lAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH3gIKFSUnpolg7AAAAHJQTFRFAAAAVVWqZmbMVVXVYGDgbW3td3fuc3PzdHT0cHD1d3f6dHT6dnb7dHT7dnb8dnb8dnb9d3f9dnb+eHj+d3f+eHj+d3f+d3f+d3f+eHj+d3f+eHj+d3f+eHj+d3f+d3f+eHj+d3f+d3f+d3f+eHj/////V9oQhQAAACR0Uk5TAAIEBQcNDhMVGCotNTZAT217i5CgobvExtjZ4eLr7vP09ff7uqQ6cgAAAAFiS0dEJcMByQ8AAABUSURBVBjTpc43AoAwDENRh95bgNBM1f3PyOpslD++RSJ61YgH5M2IbIkn4GocSR1MZVBL4t2n4FgkbaxI8Sqph041WknZCWAIrcmEUbpf3lNe0N9u59YFYHnZ78gAAAAASUVORK5CYII=);
508 background-repeat: no-repeat;
509 padding-left: 18px;
510}
511
512span.refs span.tag {
513 color: #707070;
514 display: inline-block;
515 margin: 0;
516 background-color: #ffffab;
517 border: 1px solid #d9d93b;
518 border-radius: 3px;
519 height: 18px;
520 padding: 0 6px;
521 text-overflow: ellipsis;
522 background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAMAAABhEH5lAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH3gIKFSUZZ+h9RwAAAGZQTFRFAAAAtrYkwMBAwMBAx8c4yso11NQ71NQ51dU52Ng71tY519c719c719c62Ng719c719c62Ng72dk62Ng62Ng72Ng72dk62Ng72Ng62dk62dk72dk62Ng62dk72Ng72Ng72dk7////ou/AnQAAACB0Uk5TAAYHCxESLjRCWWlqa4uNkpissbrO19jc3ufs8vf6/f7atAU2AAAAAWJLR0QhxGwNFgAAAF1JREFUGFeNy0cOgCAABVGw94rY5d//lC7omhhn+ZIh5Gf1xPk0Zi5dAABROIQjSU/fsAXhDkCUljAv8jW2wlQpaixpo4Nj+dtatVpjkSJjLNaizRVpvhBCu/4h391jzw1lU12Z7wAAAABJRU5ErkJggg==);
523 background-repeat: no-repeat;
524 padding-left: 18px;
525}
526
527span.refs span.head {
528 color: #707070;
529 display: inline-block;
530 margin: 0;
531 background-color: #c4ffc4;
532 border: 1px solid #78ff78;
533 border-radius: 3px;
534 height: 18px;
535 padding: 0 6px;
536 text-overflow: ellipsis;
537 background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH3gIKFSYDsafX/gAAAUpJREFUOMvVkjFLA0EQhd/s7l06MSCihbV/wC5/QBDEIFYWprRIIQQJFqKFQi4kUbBQsFSwtrUQLQULUTBFLCzVIgimCXe7z0q5yIWcqfRVwzDzMTNvgL8mSUqWw3JOtFQJdsIwLDYyjdYgkEmkazl2oVtQWk36nn8AYBYASmFpxmizGtnoqO7Vb+M9KglEkASdpWU872nvVCiPRpuTnz2JIHGyqX3d0kZfR1G0Ht+g/do+FIhOBbLW3n/FNb/28D0puZ+dyL44ur1UoH5yzt2JyIj6UGdDgwrPhYzSagNEszJaeU/lWlylbmnaeGZZICsAppxzi6nt73HK85oQCMknOuarpno+FIjglVjZDXaCS2yDv3rIHlCb88FY0BlUl3hs7ektkhckb5DFWhoz+n12zr7ZPLpYUqLm0oBMn8NUzLhpAgjpWMS/1CcSJ3ykD7Rk1QAAAABJRU5ErkJggg==);
538 background-repeat: no-repeat;
539 padding-left: 18px;
540}
541
542span.refs a {
543 color: #4e4e4e;
544 font: 11px "Bitstream Vera Sans Mono", "DejaVu Sans Mono", Monaco, monospace;
545 line-height: 18px;
546}
547
548/* Diffs
549---------------------------------------------------------------------------- */
550
551div.diff.to_file a.path,
552div.diff.to_file {
553 color: #007000;
554}
555
556div.diff.from_file a.path,
557div.diff.from_file {
558 color: #aa0000;
559}
560
561.patch .header {
562 margin: 0;
563}
564
565.patchset {
566 overflow-x: auto;
567 overflow-y: hidden;
568}
569
570.chunk_header {
571 background: #eaf2f5;
572 color: #999;
573}
574
575.rem {
576 background: #ffdddd;
577}
578.rem .marked {
579 background: #ffaaaa;
580}
581.add {
582 background: #ddffdd;
583}
584.add .marked {
585 background: #7dff7d;
586}
587
588.extended_header {
589 width: 99.5%;
590}
591
592div.chunk_block {
593 overflow: hidden;
594}
595
596div.chunk_block div.old {
597 float: left;
598 width: 50%;
599 overflow: hidden;
600 border-right: 5px solid #EAF2F5;
601}
602
603div.chunk_block.rem,
604div.chunk_block.add {
605 background: transparent;
606}
607
608div.chunk_block div.old .add,
609div.chunk_block div.old .rem {
610 padding-right: 3px;
611}
612
613div.chunk_block div.new .add,
614div.chunk_block div.new .rem {
615 padding-left: 3px;
616}
617
618div.chunk_block div.new {
619 margin-left: 50%;
620 width: 50%;
621 border-left: 5px solid #EAF2F5;
622}
623
624/* Category
625---------------------------------------------------------------------------- */
626
627td.category {
628 background: #E6F1F6; /* old browsers */
629 background: -moz-linear-gradient(top, #C8D8E7 0%, #E6F1F3 100%); /* firefox */
630 background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#C8D8E7), color-stop(100%,#E6F1F3)); /* webkit */
631 filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#C8D8E7', endColorstr='#E6F1F3',GradientType=0 ); /* ie */
632 background: -o-linear-gradient(top, #C8D8E7 0%, #E6F1F3 100%);
633 font-weight: bold;
634 border-bottom: 1px solid #D1D1D1;
635 border-top: 1px solid #D1D1D1;
636}
637
638/* Age
639---------------------------------------------------------------------------- */
640
641/* noage: "No commits" */
642.project_list td.noage {
643 color: #cdcdcd;
644}
645
646/* age2: 60*60*24*2 <= age */
647.project_list td.age2, .blame td.age2 {
648 color: #545454;
649}
650
651/* age1: 60*60*2 <= age < 60*60*24*2 */
652.project_list td.age1 {
653 color: #009900;
654}
655
656/* age0: age < 60*60*2 */
657.project_list td.age0 {
658 color: #009900;
659 font-weight: bold;
660}
661
662/* File status
663---------------------------------------------------------------------------- */
664
665.diff_tree span.file_status.new {
666 color: #008000;
667}
668
669table.diff_tree span.file_status.deleted {
670 color: #c00000;
671}
672
673table.diff_tree span.file_status.moved,
674table.diff_tree span.file_status.mode_chnge {
675 color: #545454;
676}
677
678table.diff_tree span.file_status.copied {
679 color: #70a070;
680}
681
682span.cntrl {
683 border: dashed #aaaaaa;
684 border-width: 1px;
685 padding: 0px 2px 0px 2px;
686 margin: 0px 2px 0px 2px;
687}
688
689span.match {
690 background: #aaffaa;
691 color: #000;
692}
693
694td.error {
695 color: red;
696 background: yellow;
697}
698
699/* blob view */
700
701td.pre, div.pre, div.diff {
702 white-space: pre-wrap;
703}
704
705/* JavaScript-based timezone manipulation */
706
707.popup { /* timezone selection UI */
708 position: absolute;
709 /* "top: 0; right: 0;" would be better, if not for bugs in browsers */
710 top: 0; left: 0;
711 border: 1px solid #d8d8d8;
712 padding: 2px;
713 background-color: #f0f0f0;
714 font-style: normal;
715 color: #545454;
716 cursor: auto;
717}
718
719.close-button { /* close timezone selection UI without selecting */
720 /* float doesn't work within absolutely positioned container,
721 * if width of container is not set explicitly */
722 /* float: right; */
723 position: absolute;
724 top: 0px; right: 0px;
725 border: 1px solid #ffaaaa;
726 margin: 1px 1px 1px 1px;
727 padding-bottom: 2px;
728 width: 12px;
729 height: 10px;
730 font-size: 9px;
731 font-weight: bold;
732 text-align: center;
733 background-color: #ffdddd;
734 cursor: pointer;
735}
736
737/* Style definition generated by highlight 2.4.5, http://www.andre-simon.de/ */
738
739/* Highlighting theme definition: */
740
741.num { color:#6ecf36; }
742.esc { color:#ff00ff; }
743.str { color:#ff00d3; background-color: #edc9ec }
744.dstr { color:#818100; }
745.slc { color:#838183; font-style:italic; }
746.com { color:#838183; font-style:italic; }
747.dir { color:#008200; }
748.sym { color:#000000; }
749.line { color:#555555; }
750.kwa { color:#666666; font-weight:bold; }
751.kwb { color:#6b3099; }
752.kwc { color:#d4663d; }
753.kwd { color:#2928ff; }
754
755/**** Styles supplémentaires *****/
756
757.readme div.toc {
758 float: right;
759 border: 1px solid black;
760 background-color: white;
761}
762.readme div.toc span.toctitle {
763 display: inline-block;
764 width: 100%;
765 text-align: center;
766 font-weight: bold;
767}
768
769.readme table {
770 background-color: white;
771}
772
773.readme table thead tr {
774 background-color: #ccc;
775}
776
777.readme table tbody tr:nth-child(2n) {
778 background-color: #f8f8f8;
779}
780
781.readme table td, .readme table th {
782 border: 1px solid black;
783}
diff --git a/virtual/modules/websites/tools/git/gitweb/theme/gitweb.js b/virtual/modules/websites/tools/git/gitweb/theme/gitweb.js
deleted file mode 100644
index 72f3cfa..0000000
--- a/virtual/modules/websites/tools/git/gitweb/theme/gitweb.js
+++ /dev/null
@@ -1,27 +0,0 @@
1function include(filename, onload) {
2 var head = document.getElementsByTagName('head')[0];
3 var script = document.createElement('script');
4 script.src = filename;
5 script.type = 'text/javascript';
6 script.onload = script.onreadystatechange = function() {
7 if (script.readyState) {
8 if (script.readyState === 'complete' || script.readyState === 'loaded') {
9 script.onreadystatechange = null;
10 onload();
11 }
12 }
13 else {
14 onload();
15 }
16 }
17 head.appendChild(script);
18}
19
20include('static/gitweb.js', function() {});
21include('//code.jquery.com/jquery-3.1.0.min.js', function() {
22 $("div.title").each(function(index, element) {
23 if ($(element).text() === "readme" || $(element).text() === " ") {
24 $(element).hide();
25 }
26 });
27});
diff --git a/virtual/modules/websites/tools/git/mantisbt/mantisbt-plugin-slack.json b/virtual/modules/websites/tools/git/mantisbt/mantisbt-plugin-slack.json
deleted file mode 100644
index 54ea38b..0000000
--- a/virtual/modules/websites/tools/git/mantisbt/mantisbt-plugin-slack.json
+++ /dev/null
@@ -1,15 +0,0 @@
1{
2 "tag": "9286d2e-master",
3 "meta": {
4 "name": "mantisbt-plugin-slack",
5 "url": "https://github.com/mantisbt-plugins/Slack",
6 "branch": "master"
7 },
8 "github": {
9 "owner": "mantisbt-plugins",
10 "repo": "Slack",
11 "rev": "9286d2eeeb8a986ed949e378711fef5f0bf182dc",
12 "sha256": "0nn0v4jc967giilkzrppi5svd04m2hnals75xxp0iabcdjnih0mn",
13 "fetchSubmodules": true
14 }
15}
diff --git a/virtual/modules/websites/tools/git/mantisbt/mantisbt-plugin-source-integration.json b/virtual/modules/websites/tools/git/mantisbt/mantisbt-plugin-source-integration.json
deleted file mode 100644
index e36a68c..0000000
--- a/virtual/modules/websites/tools/git/mantisbt/mantisbt-plugin-source-integration.json
+++ /dev/null
@@ -1,15 +0,0 @@
1{
2 "tag": "v2.1.5",
3 "meta": {
4 "name": "mantisbt-plugin-source-integration",
5 "url": "https://github.com/mantisbt-plugins/source-integration",
6 "branch": "refs/tags/v2.1.5"
7 },
8 "github": {
9 "owner": "mantisbt-plugins",
10 "repo": "source-integration",
11 "rev": "a48039a20abc50864e0e68c0c843b27058404386",
12 "sha256": "07g6q3hivmnd94r47pp0snk5bv4pa3piwclc9qhj612i4wnsazsk",
13 "fetchSubmodules": true
14 }
15}
diff --git a/virtual/modules/websites/tools/git/mantisbt/mantisbt-plugin-source-integration_Source.API.php.diff b/virtual/modules/websites/tools/git/mantisbt/mantisbt-plugin-source-integration_Source.API.php.diff
deleted file mode 100644
index c355144..0000000
--- a/virtual/modules/websites/tools/git/mantisbt/mantisbt-plugin-source-integration_Source.API.php.diff
+++ /dev/null
@@ -1,12 +0,0 @@
1--- b/Source/Source.API.php 2017-09-18 00:50:32.000000000 +0200
2+++ a/Source/Source.API.php 2018-03-04 19:00:25.578889039 +0100
3@@ -452,6 +452,9 @@
4 # Allow other plugins to post-process commit data
5 event_signal( 'EVENT_SOURCE_COMMITS', array( $p_changesets ) );
6 event_signal( 'EVENT_SOURCE_FIXED', array( $t_fixed_bugs ) );
7+ foreach( $t_fixed_bugs as $t_bug_id => $t_changeset ) {
8+ event_signal( 'EVENT_BUG_ACTION', array('RESOLVE', $t_bug_id) );
9+ }
10 }
11
12 /**
diff --git a/virtual/modules/websites/tools/git/mantisbt/mantisbt.nix b/virtual/modules/websites/tools/git/mantisbt/mantisbt.nix
deleted file mode 100644
index bc2ff3a..0000000
--- a/virtual/modules/websites/tools/git/mantisbt/mantisbt.nix
+++ /dev/null
@@ -1,120 +0,0 @@
1{ lib, env, writeText, stdenv, fetchurl, fetchedGithub }:
2let
3 mantisbt = let
4 plugins = {
5 slack = stdenv.mkDerivation (fetchedGithub ./mantisbt-plugin-slack.json // rec {
6 installPhase = ''
7 sed -i -e "s/return '@' . \\\$username;/return \\\$username;/" Slack.php
8 cp -a . $out
9 '';
10 });
11 source-integration = stdenv.mkDerivation (fetchedGithub ./mantisbt-plugin-source-integration.json // rec {
12 installPhase = ''
13 mkdir $out
14 patch -p1 < ${./mantisbt-plugin-source-integration_Source.API.php.diff}
15 cp -a Source* $out/
16 '';
17 });
18 };
19 in rec {
20 config =
21 writeText "config_inc.php" ''
22 <?php
23 $g_hostname = 'db-1.immae.eu';
24 $g_db_username = 'mantisbt';
25 $g_db_password = '${env.postgresql.password}';
26 $g_database_name = 'mantisbt';
27 $g_db_type = 'pgsql';
28 $g_crypto_master_salt = '${env.master_salt}';
29 $g_allow_signup = OFF;
30 $g_allow_anonymous_login = ON;
31 $g_anonymous_account = 'anonymous';
32
33 $g_phpMailer_method = PHPMAILER_METHOD_SMTP;
34 $g_smtp_host = 'mail.immae.eu';
35 $g_smtp_username = ''';
36 $g_smtp_password = ''';
37 $g_webmaster_email = 'webmaster@immae.eu';
38 $g_from_email = 'noreply@immae.eu';
39 $g_return_path_email = 'webmaster@immae.eu';
40 $g_from_name = 'Mantis Bug Tracker at immae.eu';
41 $g_email_receive_own = OFF;
42 # --- LDAP ---
43 $g_login_method = LDAP;
44 $g_ldap_protocol_version = 3;
45 $g_ldap_server = 'ldaps://ldap.immae.eu:636';
46 $g_ldap_root_dn = 'ou=users,dc=immae,dc=eu';
47 $g_ldap_bind_dn = 'cn=mantisbt,ou=services,dc=immae,dc=eu';
48 $g_ldap_bind_passwd = '${env.ldap.password}';
49 $g_use_ldap_email = ON;
50 $g_use_ldap_realname = ON;
51 $g_ldap_uid_field = 'uid';
52 $g_ldap_realname_field = 'cn';
53 $g_ldap_organization = '(memberOf=cn=users,cn=mantisbt,ou=services,dc=immae,dc=eu)';
54 '';
55 webRoot = stdenv.mkDerivation rec {
56 name = "mantisbt-${version}";
57 version = "2.11.1";
58 src = fetchurl {
59 url = "https://downloads.sourceforge.net/project/mantisbt/mantis-stable/${version}/${name}.tar.gz";
60 sha256 = "0jnrqz6r2hf53v0k1lh3il7hlfiphn61r9wgg6mzyywkjxwq07md";
61 };
62 patches = [
63 ./patches/bug_report.php.diff
64 ./patches/bug_report_page.php.diff
65 ./patches/bugnote_add.php.diff
66 ./patches/bugnote_add_inc.php.diff
67 ];
68 installPhase = ''
69 cp -a . $out
70 ln -s ${config} $out/config/config_inc.php
71 ln -s ${plugins.slack} $out/plugins/Slack
72 ln -s ${plugins.source-integration}/Source* $out/plugins/
73 '';
74 };
75 apache = {
76 user = "wwwrun";
77 group = "wwwrun";
78 modules = [ "proxy_fcgi" ];
79 vhostConf = ''
80 Alias /mantisbt "${webRoot}"
81 <Directory "${webRoot}">
82 DirectoryIndex index.php
83 <FilesMatch "\.php$">
84 SetHandler "proxy:unix:${phpFpm.socket}|fcgi://localhost"
85 </FilesMatch>
86
87 AllowOverride All
88 Options FollowSymlinks
89 Require all granted
90 </Directory>
91 <Directory "${webRoot}/admin">
92 #Reenable during upgrade
93 Require all denied
94 </Directory>
95 '';
96 };
97 phpFpm = rec {
98 basedir = builtins.concatStringsSep ":" (
99 [ webRoot config ]
100 ++ lib.attrsets.mapAttrsToList (name: value: value) plugins);
101 socket = "/var/run/phpfpm/mantisbt.sock";
102 pool = ''
103 listen = ${socket}
104 user = ${apache.user}
105 group = ${apache.group}
106 listen.owner = ${apache.user}
107 listen.group = ${apache.group}
108 pm = ondemand
109 pm.max_children = 60
110 pm.process_idle_timeout = 60
111
112 php_admin_value[upload_max_filesize] = 5000000
113
114 php_admin_value[open_basedir] = "${basedir}:/tmp"
115 php_admin_value[session.save_path] = "/var/lib/php/sessions/mantisbt"
116 '';
117 };
118 };
119in
120 mantisbt
diff --git a/virtual/modules/websites/tools/git/mantisbt/patches/bug_report.php.diff b/virtual/modules/websites/tools/git/mantisbt/patches/bug_report.php.diff
deleted file mode 100644
index a520043..0000000
--- a/virtual/modules/websites/tools/git/mantisbt/patches/bug_report.php.diff
+++ /dev/null
@@ -1,20 +0,0 @@
1--- a/bug_report.php 2018-02-10 21:29:27.000000000 +0100
2+++ b/bug_report.php 2018-03-03 15:04:19.622499678 +0100
3@@ -149,6 +149,17 @@
4 access_ensure_project_level( config_get( 'update_bug_assign_threshold' ) );
5 }
6
7+# begin captcha check for anon user
8+if ( current_user_is_anonymous() && get_gd_version() > 0 ) {
9+ $f_captcha = gpc_get_string( 'captcha', '' );
10+ $f_captcha = utf8_strtolower( trim( $f_captcha ) );
11+
12+ $t_securimage = new Securimage();
13+ if( $t_securimage->check( $f_captcha ) == false ) {
14+ trigger_error( ERROR_SIGNUP_NOT_MATCHING_CAPTCHA, ERROR );
15+ }
16+}
17+
18 # if a profile was selected then let's use that information
19 if( 0 != $t_bug_data->profile_id ) {
20 if( profile_is_global( $t_bug_data->profile_id ) ) {
diff --git a/virtual/modules/websites/tools/git/mantisbt/patches/bug_report_page.php.diff b/virtual/modules/websites/tools/git/mantisbt/patches/bug_report_page.php.diff
deleted file mode 100644
index 80dea91..0000000
--- a/virtual/modules/websites/tools/git/mantisbt/patches/bug_report_page.php.diff
+++ /dev/null
@@ -1,53 +0,0 @@
1--- a/bug_report_page.php 2018-02-10 21:29:27.000000000 +0100
2+++ b/bug_report_page.php 2018-03-03 15:04:19.622499678 +0100
3@@ -708,7 +708,50 @@
4 <span class="lbl padding-6"><?php echo lang_get( 'check_report_more_bugs' ) ?></span>
5 </label>
6 </td>
7 </tr>
8+<?php
9+ # captcha image requires GD library and related option to ON
10+ if( current_user_is_anonymous() && get_gd_version() > 0 ) {
11+ $t_securimage_path = 'vendor/dapphp/securimage';
12+ $t_securimage_show = $t_securimage_path . '/securimage_show.php';
13+ $t_securimage_play = $t_securimage_path . '/securimage_play.swf?'
14+ . http_build_query( array(
15+ 'audio_file' => $t_securimage_path . '/securimage_play.php',
16+ 'bgColor1=' => '#fff',
17+ 'bgColor2=' => '#fff',
18+ 'iconColor=' => '#777',
19+ 'borderWidth=' => 1,
20+ 'borderColor=' => '#000',
21+ ) );
22+?>
23+ <tr>
24+ <th class="category">CAPTCHA</th>
25+ <td>
26+
27+ <label for="captcha-field" class="block clearfix">
28+ <strong><?php echo lang_get( 'signup_captcha_request_label' ); ?></strong>
29+ </label>
30+ <span id="captcha-input" class="input">
31+ <?php print_captcha_input( 'captcha' ); ?>
32+
33+ <span id="captcha-image" class="captcha-image" style="padding-right:3px;">
34+ <img src="<?php echo $t_securimage_show; ?>" alt="visual captcha" />
35+ <ul id="captcha-refresh"><li><a href="#"><?php
36+ echo lang_get( 'signup_captcha_refresh' );
37+ ?></a></li></ul>
38+ </span>
39+
40+ <object type="application/x-shockwave-flash" width="19" height="19"
41+ data="<?php echo $t_securimage_play; ?>">
42+ <param name="movie" value="<?php echo $t_securimage_play; ?>" />
43+ </object>
44+ </span>
45+ </td>
46+ </tr>
47+<?php
48+ }
49+?>
50+
51 </table>
52 </div>
53 </div>
diff --git a/virtual/modules/websites/tools/git/mantisbt/patches/bugnote_add.php.diff b/virtual/modules/websites/tools/git/mantisbt/patches/bugnote_add.php.diff
deleted file mode 100644
index 4509f0a..0000000
--- a/virtual/modules/websites/tools/git/mantisbt/patches/bugnote_add.php.diff
+++ /dev/null
@@ -1,20 +0,0 @@
1--- a/bugnote_add.php 2018-02-10 21:29:27.000000000 +0100
2+++ b/bugnote_add.php 2018-03-03 15:13:12.439919511 +0100
3@@ -44,6 +44,17 @@
4
5 $t_query = array( 'issue_id' => $f_bug_id );
6
7+# begin captcha check for anon user
8+if ( current_user_is_anonymous() && get_gd_version() > 0 ) {
9+ $f_captcha = gpc_get_string( 'captcha', '' );
10+ $f_captcha = utf8_strtolower( trim( $f_captcha ) );
11+
12+ $t_securimage = new Securimage();
13+ if( $t_securimage->check( $f_captcha ) == false ) {
14+ trigger_error( ERROR_SIGNUP_NOT_MATCHING_CAPTCHA, ERROR );
15+ }
16+}
17+
18 if( count( $f_files ) > 0 && is_blank( $f_text ) && helper_duration_to_minutes( $f_duration ) == 0 ) {
19 $t_payload = array(
20 'files' => helper_array_transpose( $f_files )
diff --git a/virtual/modules/websites/tools/git/mantisbt/patches/bugnote_add_inc.php.diff b/virtual/modules/websites/tools/git/mantisbt/patches/bugnote_add_inc.php.diff
deleted file mode 100644
index a8589c7..0000000
--- a/virtual/modules/websites/tools/git/mantisbt/patches/bugnote_add_inc.php.diff
+++ /dev/null
@@ -1,52 +0,0 @@
1--- a/bugnote_add_inc.php 2018-02-10 21:29:27.000000000 +0100
2+++ b/bugnote_add_inc.php 2018-03-03 15:14:27.332428557 +0100
3@@ -119,6 +119,49 @@
4 <textarea name="bugnote_text" id="bugnote_text" class="<?php echo $t_bugnote_class ?>" rows="7"></textarea>
5 </td>
6 </tr>
7+<?php
8+ # captcha image requires GD library and related option to ON
9+ if( current_user_is_anonymous() && get_gd_version() > 0 ) {
10+ $t_securimage_path = 'vendor/dapphp/securimage';
11+ $t_securimage_show = $t_securimage_path . '/securimage_show.php';
12+ $t_securimage_play = $t_securimage_path . '/securimage_play.swf?'
13+ . http_build_query( array(
14+ 'audio_file' => $t_securimage_path . '/securimage_play.php',
15+ 'bgColor1=' => '#fff',
16+ 'bgColor2=' => '#fff',
17+ 'iconColor=' => '#777',
18+ 'borderWidth=' => 1,
19+ 'borderColor=' => '#000',
20+ ) );
21+?>
22+ <tr>
23+ <th class="category">CAPTCHA</th>
24+ <td>
25+
26+ <label for="captcha-field" class="block clearfix">
27+ <strong><?php echo lang_get( 'signup_captcha_request_label' ); ?></strong>
28+ </label>
29+ <span id="captcha-input" class="input">
30+ <?php print_captcha_input( 'captcha' ); ?>
31+
32+ <span id="captcha-image" class="captcha-image" style="padding-right:3px;">
33+ <img src="<?php echo $t_securimage_show; ?>" alt="visual captcha" />
34+ <ul id="captcha-refresh"><li><a href="#"><?php
35+ echo lang_get( 'signup_captcha_refresh' );
36+ ?></a></li></ul>
37+ </span>
38+
39+ <object type="application/x-shockwave-flash" width="19" height="19"
40+ data="<?php echo $t_securimage_play; ?>">
41+ <param name="movie" value="<?php echo $t_securimage_play; ?>" />
42+ </object>
43+ </span>
44+ </td>
45+ </tr>
46+<?php
47+ }
48+?>
49+
50
51 <?php
52 if( config_get( 'time_tracking_enabled' ) ) {
diff --git a/virtual/modules/websites/tools/mastodon/default.nix b/virtual/modules/websites/tools/mastodon/default.nix
deleted file mode 100644
index f1a207f..0000000
--- a/virtual/modules/websites/tools/mastodon/default.nix
+++ /dev/null
@@ -1,208 +0,0 @@
1{ lib, pkgs, config, myconfig, mylibs, ... }:
2let
3 mastodon = pkgs.callPackage ./mastodon.nix {
4 inherit (mylibs) fetchedGithub;
5 env = myconfig.env.tools.mastodon;
6 };
7
8 cfg = config.services.myWebsites.tools.mastodon;
9in {
10 options.services.myWebsites.tools.mastodon = {
11 enable = lib.mkEnableOption "enable mastodon's website";
12 };
13
14 config = lib.mkIf cfg.enable {
15 ids.uids.mastodon = 399;
16 ids.gids.mastodon = 399;
17
18 users.users.mastodon = {
19 name = "mastodon";
20 uid = config.ids.uids.mastodon;
21 group = "mastodon";
22 description = "Mastodon user";
23 home = mastodon.railsRoot;
24 useDefaultShell = true;
25 };
26
27 users.groups.mastodon.gid = config.ids.gids.mastodon;
28
29 systemd.services.mastodon-streaming = {
30 description = "Mastodon Streaming";
31 wantedBy = [ "multi-user.target" ];
32 after = [ "network.target" "mastodon-web.service" ];
33
34 environment.NODE_ENV = "production";
35 environment.SOCKET = mastodon.nodeSocket;
36
37 path = [ pkgs.nodejs pkgs.bashInteractive ];
38
39 script = ''
40 exec npm run start
41 '';
42
43 postStart = ''
44 while [ ! -S $SOCKET ]; do
45 sleep 0.5
46 done
47 chmod a+w $SOCKET
48 '';
49
50 postStop = ''
51 rm $SOCKET
52 '';
53
54 serviceConfig = {
55 User = "mastodon";
56 EnvironmentFile = mastodon.config;
57 PrivateTmp = true;
58 Restart = "always";
59 TimeoutSec = 15;
60 Type = "simple";
61 WorkingDirectory = mastodon.railsRoot;
62 };
63
64 unitConfig.RequiresMountsFor = mastodon.varDir;
65 };
66
67 systemd.services.mastodon-web = {
68 description = "Mastodon Web app";
69 wantedBy = [ "multi-user.target" ];
70 after = [ "network.target" ];
71
72 environment.RAILS_ENV = "production";
73 environment.BUNDLE_PATH = "${mastodon.gems}/lib/ruby/gems/2.5.0";
74 environment.BUNDLE_GEMFILE = "${mastodon.gems.confFiles}/Gemfile";
75 environment.SOCKET = mastodon.railsSocket;
76
77 path = [ mastodon.gems mastodon.gems.ruby pkgs.file ];
78
79 preStart = ''
80 ./bin/bundle exec rails db:migrate
81 '';
82
83 script = ''
84 exec ./bin/bundle exec puma -C config/puma.rb
85 '';
86
87 serviceConfig = {
88 User = "mastodon";
89 EnvironmentFile = mastodon.config;
90 PrivateTmp = true;
91 Restart = "always";
92 TimeoutSec = 60;
93 Type = "simple";
94 WorkingDirectory = mastodon.railsRoot;
95 };
96
97 unitConfig.RequiresMountsFor = mastodon.varDir;
98 };
99
100 systemd.services.mastodon-sidekiq = {
101 description = "Mastodon Sidekiq";
102 wantedBy = [ "multi-user.target" ];
103 after = [ "network.target" "mastodon-web.service" ];
104
105 environment.RAILS_ENV="production";
106 environment.BUNDLE_PATH = "${mastodon.gems}/${mastodon.gems.ruby.gemPath}";
107 environment.BUNDLE_GEMFILE = "${mastodon.gems.confFiles}/Gemfile";
108 environment.DB_POOL="5";
109
110 path = [ mastodon.gems mastodon.gems.ruby pkgs.imagemagick pkgs.ffmpeg pkgs.file ];
111
112 script = ''
113 exec ./bin/bundle exec sidekiq -c 5 -q default -q mailers -q pull -q push
114 '';
115
116 serviceConfig = {
117 User = "mastodon";
118 EnvironmentFile = mastodon.config;
119 PrivateTmp = true;
120 Restart = "always";
121 TimeoutSec = 15;
122 Type = "simple";
123 WorkingDirectory = mastodon.railsRoot;
124 };
125
126 unitConfig.RequiresMountsFor = mastodon.varDir;
127 };
128
129 system.activationScripts.mastodon = {
130 deps = [ "users" ];
131 text = ''
132 install -m 0755 -o mastodon -g mastodon -d ${mastodon.socketsDir}
133 install -m 0755 -o mastodon -g mastodon -d ${mastodon.varDir} ${mastodon.varDir}/tmp/cache
134 '';
135 };
136
137 services.myWebsites.tools.modules = [
138 "headers" "proxy" "proxy_wstunnel" "proxy_http" "proxy_balancer"
139 "lbmethod_byrequests" "lbmethod_bytraffic" "lbmethod_bybusyness" "lbmethod_heartbeat"
140 ];
141 security.acme.certs."eldiron".extraDomains."mastodon.immae.eu" = null;
142 services.myWebsites.tools.vhostConfs.mastodon = {
143 certName = "eldiron";
144 hosts = ["mastodon.immae.eu" ];
145 root = "${mastodon.railsRoot}/public/";
146 extraConfig = [ ''
147 Header always set Referrer-Policy "strict-origin-when-cross-origin"
148 Header always set Strict-Transport-Security "max-age=31536000"
149
150 <LocationMatch "^/(assets|avatars|emoji|headers|packs|sounds|system)>
151 Header always set Cache-Control "public, max-age=31536000, immutable"
152 Require all granted
153 </LocationMatch>
154
155 ProxyPreserveHost On
156 RequestHeader set X-Forwarded-Proto "https"
157
158 RewriteEngine On
159
160 ProxyPass /500.html !
161 ProxyPass /sw.js !
162 ProxyPass /embed.js !
163 ProxyPass /robots.txt !
164 ProxyPass /manifest.json !
165 ProxyPass /browserconfig.xml !
166 ProxyPass /mask-icon.svg !
167 ProxyPassMatch ^(/.*\.(png|ico|gif)$) !
168 ProxyPassMatch ^/(assets|avatars|emoji|headers|packs|sounds|system|.well-known/acme-challenge) !
169
170 ProxyPassMatch /api/v1/streaming/(.+)$ balancer://node_servers_http/api/v1/streaming/$1
171 ProxyPass /api/v1/streaming/ balancer://node_servers/
172 ProxyPassReverse /api/v1/streaming/ balancer://node_servers/
173 ProxyPass / balancer://puma_servers/
174 ProxyPassReverse / balancer://puma_servers/
175
176 <Proxy balancer://puma_servers>
177 BalancerMember unix://${mastodon.railsSocket}|http://
178 </Proxy>
179
180 <Proxy balancer://node_servers>
181 BalancerMember unix://${mastodon.nodeSocket}|ws://localhost
182 </Proxy>
183
184 <Proxy balancer://node_servers_http>
185 BalancerMember unix://${mastodon.nodeSocket}|http://localhost
186 </Proxy>
187
188 Alias /system ${mastodon.varDir}
189
190 <Directory ${mastodon.varDir}>
191 Require all granted
192 Options -MultiViews
193 </Directory>
194
195 <Directory ${mastodon.railsRoot}/public/>
196 Require all granted
197 Options -MultiViews +FollowSymlinks
198 </Directory>
199
200 ErrorDocument 500 /500.html
201 ErrorDocument 501 /500.html
202 ErrorDocument 502 /500.html
203 ErrorDocument 503 /500.html
204 ErrorDocument 504 /500.html
205 '' ];
206 };
207 };
208}
diff --git a/virtual/modules/websites/tools/mastodon/gemset.nix b/virtual/modules/websites/tools/mastodon/gemset.nix
deleted file mode 100644
index 585dab1..0000000
--- a/virtual/modules/websites/tools/mastodon/gemset.nix
+++ /dev/null
@@ -1,2878 +0,0 @@
1{
2 actioncable = {
3 dependencies = ["actionpack" "nio4r" "websocket-driver"];
4 groups = ["default"];
5 platforms = [];
6 source = {
7 remotes = ["https://rubygems.org"];
8 sha256 = "17vdxn0afi5rfnbs09nl0m0cyj7yvpi445bmi8pkmzbaqzqkq3ff";
9 type = "gem";
10 };
11 version = "5.2.1";
12 };
13 actionmailer = {
14 dependencies = ["actionpack" "actionview" "activejob" "mail" "rails-dom-testing"];
15 groups = ["default" "development"];
16 platforms = [];
17 source = {
18 remotes = ["https://rubygems.org"];
19 sha256 = "0h1nqg47jap0wzp0dhlnck4xjijfvdfw49aipjp8y2ihdpvyqrx6";
20 type = "gem";
21 };
22 version = "5.2.1";
23 };
24 actionpack = {
25 dependencies = ["actionview" "activesupport" "rack" "rack-test" "rails-dom-testing" "rails-html-sanitizer"];
26 groups = ["default" "development" "pam_authentication" "production" "test"];
27 platforms = [];
28 source = {
29 remotes = ["https://rubygems.org"];
30 sha256 = "19zv9ix9iwpd8dxi5hyxgwrc1gh0fvx0a2vjhmic8dn8six41f4f";
31 type = "gem";
32 };
33 version = "5.2.1";
34 };
35 actionview = {
36 dependencies = ["activesupport" "builder" "erubi" "rails-dom-testing" "rails-html-sanitizer"];
37 groups = ["default" "development" "pam_authentication" "production" "test"];
38 platforms = [];
39 source = {
40 remotes = ["https://rubygems.org"];
41 sha256 = "0dxanjs7ngpny4ig7dg93ywmg9ljswzg8risdlff6ag8fzvsnidf";
42 type = "gem";
43 };
44 version = "5.2.1";
45 };
46 active_model_serializers = {
47 dependencies = ["actionpack" "activemodel" "case_transform" "jsonapi-renderer"];
48 groups = ["default"];
49 platforms = [];
50 source = {
51 remotes = ["https://rubygems.org"];
52 sha256 = "06arlz90rspfz899g3y2mrp5vwv6h6yahp936yqvl83d6jjpry12";
53 type = "gem";
54 };
55 version = "0.10.7";
56 };
57 active_record_query_trace = {
58 groups = ["development"];
59 platforms = [];
60 source = {
61 remotes = ["https://rubygems.org"];
62 sha256 = "1aharmy1fcd0plv9k0i2dk5icvnlww8n43ia8xahfkcask0cpidh";
63 type = "gem";
64 };
65 version = "1.5.4";
66 };
67 activejob = {
68 dependencies = ["activesupport" "globalid"];
69 groups = ["default" "development"];
70 platforms = [];
71 source = {
72 remotes = ["https://rubygems.org"];
73 sha256 = "1m4l7z08cx1lybfswfggy7y1rxnwr6gi15h0g9kkkkvmmn6klf3r";
74 type = "gem";
75 };
76 version = "5.2.1";
77 };
78 activemodel = {
79 dependencies = ["activesupport"];
80 groups = ["default" "development"];
81 platforms = [];
82 source = {
83 remotes = ["https://rubygems.org"];
84 sha256 = "043nnxaf3cfq8jijls0jh1bg3a8v5zd9slc62zc2acp2n2wkjnd4";
85 type = "gem";
86 };
87 version = "5.2.1";
88 };
89 activerecord = {
90 dependencies = ["activemodel" "activesupport" "arel"];
91 groups = ["default" "development"];
92 platforms = [];
93 source = {
94 remotes = ["https://rubygems.org"];
95 sha256 = "0pc7cycvhzjpw0swil2inka6c0fvcxhln793czp52pidg0654g7g";
96 type = "gem";
97 };
98 version = "5.2.1";
99 };
100 activestorage = {
101 dependencies = ["actionpack" "activerecord" "marcel"];
102 groups = ["default"];
103 platforms = [];
104 source = {
105 remotes = ["https://rubygems.org"];
106 sha256 = "0wncr3h94jsjmmqqmmips9vgy2kf1zhb96rlv5fbrgqplfhvpyag";
107 type = "gem";
108 };
109 version = "5.2.1";
110 };
111 activesupport = {
112 dependencies = ["concurrent-ruby" "i18n" "minitest" "tzinfo"];
113 groups = ["default" "development" "pam_authentication" "production" "test"];
114 platforms = [];
115 source = {
116 remotes = ["https://rubygems.org"];
117 sha256 = "0ziy6xk31k4fs115cdkba1ys4i8nzcyri7a2jig7nx7k5h7li6l2";
118 type = "gem";
119 };
120 version = "5.2.1";
121 };
122 addressable = {
123 dependencies = ["public_suffix"];
124 groups = ["default" "development" "test"];
125 platforms = [];
126 source = {
127 remotes = ["https://rubygems.org"];
128 sha256 = "0viqszpkggqi8hq87pqp0xykhvz60g99nwmkwsb0v45kc2liwxvk";
129 type = "gem";
130 };
131 version = "2.5.2";
132 };
133 airbrussh = {
134 dependencies = ["sshkit"];
135 groups = ["default" "development"];
136 platforms = [];
137 source = {
138 remotes = ["https://rubygems.org"];
139 sha256 = "0yp1sl5n94ksxpwmaajflbdls45s81hw4spgz01h19xs2zrvv8wl";
140 type = "gem";
141 };
142 version = "1.3.0";
143 };
144 annotate = {
145 dependencies = ["activerecord" "rake"];
146 groups = ["development"];
147 platforms = [];
148 source = {
149 remotes = ["https://rubygems.org"];
150 sha256 = "1l69l2kn06nkrnyq6gb1x322x5raxs8ms60shpf0v5dsi8lfig16";
151 type = "gem";
152 };
153 version = "2.7.4";
154 };
155 arel = {
156 groups = ["default" "development"];
157 platforms = [];
158 source = {
159 remotes = ["https://rubygems.org"];
160 sha256 = "1jk7wlmkr61f6g36w9s2sn46nmdg6wn2jfssrhbhirv5x9n95nk0";
161 type = "gem";
162 };
163 version = "9.0.0";
164 };
165 ast = {
166 groups = ["default" "development" "test"];
167 platforms = [];
168 source = {
169 remotes = ["https://rubygems.org"];
170 sha256 = "184ssy3w93nkajlz2c70ifm79jp3j737294kbc5fjw69v1w0n9x7";
171 type = "gem";
172 };
173 version = "2.4.0";
174 };
175 attr_encrypted = {
176 dependencies = ["encryptor"];
177 groups = ["default"];
178 platforms = [];
179 source = {
180 remotes = ["https://rubygems.org"];
181 sha256 = "0ncv2az1zlj33bsllr6q1qdvbw42gv91lxq0ryclbv8l8xh841jg";
182 type = "gem";
183 };
184 version = "3.1.0";
185 };
186 av = {
187 dependencies = ["cocaine"];
188 groups = ["default"];
189 platforms = [];
190 source = {
191 remotes = ["https://rubygems.org"];
192 sha256 = "1swakpybf6g0nzfdn6q4s9c97ysc3i4ffk84dw8v2321fpvc8gqq";
193 type = "gem";
194 };
195 version = "0.9.0";
196 };
197 aws-eventstream = {
198 groups = ["default"];
199 platforms = [];
200 source = {
201 remotes = ["https://rubygems.org"];
202 sha256 = "0gdiwkg24jpx5f3bkw6vchgliicn6v9bpm09j0dldaxsca66q0wy";
203 type = "gem";
204 };
205 version = "1.0.1";
206 };
207 aws-partitions = {
208 groups = ["default"];
209 platforms = [];
210 source = {
211 remotes = ["https://rubygems.org"];
212 sha256 = "0hhdbb5fy8514v7gpz5n3csbhwlk1wwnj9xxc9fwzxiyzh4y0zr4";
213 type = "gem";
214 };
215 version = "1.106.0";
216 };
217 aws-sdk-core = {
218 dependencies = ["aws-eventstream" "aws-partitions" "aws-sigv4" "jmespath"];
219 groups = ["default"];
220 platforms = [];
221 source = {
222 remotes = ["https://rubygems.org"];
223 sha256 = "1gj98hbmzw2c2j8ri1hlrig17b7fsvzzf5jlpzbmmk9ic69hvh1p";
224 type = "gem";
225 };
226 version = "3.35.0";
227 };
228 aws-sdk-kms = {
229 dependencies = ["aws-sdk-core" "aws-sigv4"];
230 groups = ["default"];
231 platforms = [];
232 source = {
233 remotes = ["https://rubygems.org"];
234 sha256 = "0g13jv1s8hj1yv6qxa2rm0k3n5jzmamn3zk3c73276s3gixpp986";
235 type = "gem";
236 };
237 version = "1.11.0";
238 };
239 aws-sdk-s3 = {
240 dependencies = ["aws-sdk-core" "aws-sdk-kms" "aws-sigv4"];
241 groups = ["default"];
242 platforms = [];
243 source = {
244 remotes = ["https://rubygems.org"];
245 sha256 = "1q0bppa23knjnzys3zrbbhajdj0fl9qc23nlrk72cc96rh4caklj";
246 type = "gem";
247 };
248 version = "1.23.0";
249 };
250 aws-sigv4 = {
251 groups = ["default"];
252 platforms = [];
253 source = {
254 remotes = ["https://rubygems.org"];
255 sha256 = "1hzndv113i6bgy2n72i5l3mwn8vjnb6hhjxfkpn9mm2p5ra77yk7";
256 type = "gem";
257 };
258 version = "1.0.3";
259 };
260 bcrypt = {
261 groups = ["default" "pam_authentication"];
262 platforms = [];
263 source = {
264 remotes = ["https://rubygems.org"];
265 sha256 = "0ysblqxkclmnhrd0kmb5mr8p38mbar633gdsb14b7dhkhgawgzfy";
266 type = "gem";
267 };
268 version = "3.1.12";
269 };
270 benchmark-ips = {
271 groups = ["default" "development"];
272 platforms = [];
273 source = {
274 remotes = ["https://rubygems.org"];
275 sha256 = "1w59c4qnwkjqwn7zyp9hshslbshna77vknmz43h0va5lxisd6ai2";
276 type = "gem";
277 };
278 version = "2.7.2";
279 };
280 better_errors = {
281 dependencies = ["coderay" "erubi" "rack"];
282 groups = ["development"];
283 platforms = [];
284 source = {
285 remotes = ["https://rubygems.org"];
286 sha256 = "1pqnxxsqqs7vnqvamk5bzs84dv584g9s0qaf2vqb1v2aj5dabcg7";
287 type = "gem";
288 };
289 version = "2.5.0";
290 };
291 binding_of_caller = {
292 dependencies = ["debug_inspector"];
293 groups = ["development"];
294 platforms = [];
295 source = {
296 remotes = ["https://rubygems.org"];
297 sha256 = "05syqlks7463zsy1jdfbbdravdhj9hpj5pv2m74blqpv8bq4vv5g";
298 type = "gem";
299 };
300 version = "0.8.0";
301 };
302 bootsnap = {
303 dependencies = ["msgpack"];
304 groups = ["default"];
305 platforms = [];
306 source = {
307 remotes = ["https://rubygems.org"];
308 sha256 = "0g6r784lmjfhwi046w82phsk244byq9wkj1q3lddwxg9z559bmhy";
309 type = "gem";
310 };
311 version = "1.3.2";
312 };
313 brakeman = {
314 groups = ["development"];
315 platforms = [];
316 source = {
317 remotes = ["https://rubygems.org"];
318 sha256 = "1y4i4vw7hawypvgg04s544fqx52ml67h9zxsaqm8w5hvxmb20wkh";
319 type = "gem";
320 };
321 version = "4.3.1";
322 };
323 browser = {
324 groups = ["default"];
325 platforms = [];
326 source = {
327 remotes = ["https://rubygems.org"];
328 sha256 = "0sdx0ny34i6vqxdsc7sy9g0nafdbrw8kvvb5xh9m18x1bzpqk92f";
329 type = "gem";
330 };
331 version = "2.5.3";
332 };
333 builder = {
334 groups = ["default" "development" "pam_authentication" "production" "test"];
335 platforms = [];
336 source = {
337 remotes = ["https://rubygems.org"];
338 sha256 = "0qibi5s67lpdv1wgcj66wcymcr04q6j4mzws6a479n0mlrmh5wr1";
339 type = "gem";
340 };
341 version = "3.2.3";
342 };
343 bullet = {
344 dependencies = ["activesupport" "uniform_notifier"];
345 groups = ["development"];
346 platforms = [];
347 source = {
348 remotes = ["https://rubygems.org"];
349 sha256 = "1szq47fa3m1k3x9dj6gh2g6q5n36zdmw8yxl5g45pbxrg70iaga8";
350 type = "gem";
351 };
352 version = "5.7.6";
353 };
354 bundler-audit = {
355 dependencies = ["thor"];
356 groups = ["development"];
357 platforms = [];
358 source = {
359 remotes = ["https://rubygems.org"];
360 sha256 = "1b884xja6q87siscsx34z2ky3h7npd334pprfy13ns60fax8pn52";
361 type = "gem";
362 };
363 version = "0.6.0";
364 };
365 byebug = {
366 groups = ["default" "development" "test"];
367 platforms = [];
368 source = {
369 remotes = ["https://rubygems.org"];
370 sha256 = "10znc1hjv8n686hhpl08f3m2g6h08a4b83nxblqwy2kqamkxcqf8";
371 type = "gem";
372 };
373 version = "10.0.2";
374 };
375 capistrano = {
376 dependencies = ["airbrussh" "i18n" "rake" "sshkit"];
377 groups = ["development"];
378 platforms = [];
379 source = {
380 remotes = ["https://rubygems.org"];
381 sha256 = "1p1hj8hpmplxl41y6phsvkw2k8x3yxmkngs8yl8gkr7c1ma870p4";
382 type = "gem";
383 };
384 version = "3.11.0";
385 };
386 capistrano-bundler = {
387 dependencies = ["capistrano" "sshkit"];
388 groups = ["default" "development"];
389 platforms = [];
390 source = {
391 remotes = ["https://rubygems.org"];
392 sha256 = "1p00rw2886v77kfjnh0mslyrv4lij5fa9niflz1lhynzlivgrmdr";
393 type = "gem";
394 };
395 version = "1.3.0";
396 };
397 capistrano-rails = {
398 dependencies = ["capistrano" "capistrano-bundler"];
399 groups = ["development"];
400 platforms = [];
401 source = {
402 remotes = ["https://rubygems.org"];
403 sha256 = "19j82kiarrph1ilw2xfhfj62z0b53w0gph7613b21iccb2gn3dqy";
404 type = "gem";
405 };
406 version = "1.4.0";
407 };
408 capistrano-rbenv = {
409 dependencies = ["capistrano" "sshkit"];
410 groups = ["development"];
411 platforms = [];
412 source = {
413 remotes = ["https://rubygems.org"];
414 sha256 = "182dmsliny87b74m9mxi7farmp03ycqh30yf58b2kcx7m2js2s92";
415 type = "gem";
416 };
417 version = "2.1.4";
418 };
419 capistrano-yarn = {
420 dependencies = ["capistrano"];
421 groups = ["development"];
422 platforms = [];
423 source = {
424 remotes = ["https://rubygems.org"];
425 sha256 = "1zdg2s061vl5b8114n909mrjb2hc1qx0i4wqx9nacsrcjgyp07l9";
426 type = "gem";
427 };
428 version = "2.0.2";
429 };
430 capybara = {
431 dependencies = ["addressable" "mini_mime" "nokogiri" "rack" "rack-test" "regexp_parser" "xpath"];
432 groups = ["test"];
433 platforms = [];
434 source = {
435 remotes = ["https://rubygems.org"];
436 sha256 = "0mgx24j9aqcablkny997qm8f1w0cpqmgy6kscrmna1k6r18w8pva";
437 type = "gem";
438 };
439 version = "3.10.0";
440 };
441 case_transform = {
442 dependencies = ["activesupport"];
443 groups = ["default"];
444 platforms = [];
445 source = {
446 remotes = ["https://rubygems.org"];
447 sha256 = "0fzyws6spn5arqf6q604dh9mrj84a36k5hsc8z7jgcpfvhc49bg2";
448 type = "gem";
449 };
450 version = "0.2";
451 };
452 charlock_holmes = {
453 groups = ["default"];
454 platforms = [];
455 source = {
456 remotes = ["https://rubygems.org"];
457 sha256 = "1nf1l31n10yaark2rrg5qzyzcx9w80681449s3j09qmnipsl8rl5";
458 type = "gem";
459 };
460 version = "0.7.6";
461 };
462 chewy = {
463 dependencies = ["activesupport" "elasticsearch" "elasticsearch-dsl"];
464 groups = ["default"];
465 platforms = [];
466 source = {
467 remotes = ["https://rubygems.org"];
468 sha256 = "0m1n98fww2is9v4h73qnxjzs0l9ixx2szby5rip26g9l7mjwmm7v";
469 type = "gem";
470 };
471 version = "5.0.0";
472 };
473 chunky_png = {
474 groups = ["default"];
475 platforms = [];
476 source = {
477 remotes = ["https://rubygems.org"];
478 sha256 = "05g2xli9wbjylkmblln3bhvjalziwb92q452q8ibjagmb853424w";
479 type = "gem";
480 };
481 version = "1.3.10";
482 };
483 cld3 = {
484 dependencies = ["ffi"];
485 groups = ["default"];
486 platforms = [];
487 source = {
488 remotes = ["https://rubygems.org"];
489 sha256 = "0ij0i1c511hak7n588qpl0pczdyvin7bzm4g4p5drzbrvr4n1ln7";
490 type = "gem";
491 };
492 version = "3.2.2";
493 };
494 climate_control = {
495 groups = ["test"];
496 platforms = [];
497 source = {
498 remotes = ["https://rubygems.org"];
499 sha256 = "0q11v0iabvr6rif0d025xh078ili5frrihlj0m04zfg7lgvagxji";
500 type = "gem";
501 };
502 version = "0.2.0";
503 };
504 cocaine = {
505 dependencies = ["climate_control"];
506 groups = ["default"];
507 platforms = [];
508 source = {
509 remotes = ["https://rubygems.org"];
510 sha256 = "01kk5xd7lspbkdvn6nyj0y51zhvia3z6r4nalbdcqw5fbsywwi7d";
511 type = "gem";
512 };
513 version = "0.5.8";
514 };
515 coderay = {
516 groups = ["default" "development" "test"];
517 platforms = [];
518 source = {
519 remotes = ["https://rubygems.org"];
520 sha256 = "15vav4bhcc2x3jmi3izb11l4d9f3xv8hp2fszb7iqmpsccv1pz4y";
521 type = "gem";
522 };
523 version = "1.1.2";
524 };
525 concurrent-ruby = {
526 groups = ["default" "development" "pam_authentication" "production" "test"];
527 platforms = [];
528 source = {
529 remotes = ["https://rubygems.org"];
530 sha256 = "183lszf5gx84kcpb779v6a2y0mx9sssy8dgppng1z9a505nj1qcf";
531 type = "gem";
532 };
533 version = "1.0.5";
534 };
535 connection_pool = {
536 groups = ["default" "test"];
537 platforms = [];
538 source = {
539 remotes = ["https://rubygems.org"];
540 sha256 = "0lflx29mlznf1hn0nihkgllzbj8xp5qasn8j7h838465pi399k68";
541 type = "gem";
542 };
543 version = "2.2.2";
544 };
545 crack = {
546 dependencies = ["safe_yaml"];
547 groups = ["default" "test"];
548 platforms = [];
549 source = {
550 remotes = ["https://rubygems.org"];
551 sha256 = "0abb0fvgw00akyik1zxnq7yv391va148151qxdghnzngv66bl62k";
552 type = "gem";
553 };
554 version = "0.4.3";
555 };
556 crass = {
557 groups = ["default" "development" "pam_authentication" "production" "test"];
558 platforms = [];
559 source = {
560 remotes = ["https://rubygems.org"];
561 sha256 = "0bpxzy6gjw9ggjynlxschbfsgmx8lv3zw1azkjvnb8b9i895dqfi";
562 type = "gem";
563 };
564 version = "1.0.4";
565 };
566 css_parser = {
567 dependencies = ["addressable"];
568 groups = ["default"];
569 platforms = [];
570 source = {
571 remotes = ["https://rubygems.org"];
572 sha256 = "0gwvf8mc8gnz4aizfijplv3594998h2j44ydakpzsdmkivs07v61";
573 type = "gem";
574 };
575 version = "1.6.0";
576 };
577 debug_inspector = {
578 groups = ["default" "development"];
579 platforms = [];
580 source = {
581 remotes = ["https://rubygems.org"];
582 sha256 = "0vxr0xa1mfbkfcrn71n7c4f2dj7la5hvphn904vh20j3x4j5lrx0";
583 type = "gem";
584 };
585 version = "0.0.3";
586 };
587 derailed_benchmarks = {
588 dependencies = ["benchmark-ips" "get_process_mem" "heapy" "memory_profiler" "rack" "rake" "thor"];
589 groups = ["development"];
590 platforms = [];
591 source = {
592 remotes = ["https://rubygems.org"];
593 sha256 = "1c9djg1r2w461h97zmmdsdgnsrxqm4qfyp7gry9qxbav9skrplb8";
594 type = "gem";
595 };
596 version = "1.3.5";
597 };
598 devise = {
599 dependencies = ["bcrypt" "orm_adapter" "railties" "responders" "warden"];
600 groups = ["default" "pam_authentication"];
601 platforms = [];
602 source = {
603 remotes = ["https://rubygems.org"];
604 sha256 = "1vs8nibl568ghm6a7hbw6xgcv8zbm4gykprcxpnzi7bz5d4gvcjx";
605 type = "gem";
606 };
607 version = "4.5.0";
608 };
609 devise-two-factor = {
610 dependencies = ["activesupport" "attr_encrypted" "devise" "railties" "rotp"];
611 groups = ["default"];
612 platforms = [];
613 source = {
614 remotes = ["https://rubygems.org"];
615 sha256 = "1b61s5y1ch205lgf3xv8hcvyi27ddd0d4qbbcpnnakhn2bx16lmc";
616 type = "gem";
617 };
618 version = "3.0.3";
619 };
620 devise_pam_authenticatable2 = {
621 dependencies = ["devise" "rpam2"];
622 groups = ["pam_authentication"];
623 platforms = [];
624 source = {
625 remotes = ["https://rubygems.org"];
626 sha256 = "13ipl52pkhc6vxp8ca31viwv01237bi2bfk3b1fixq1x46nf87p2";
627 type = "gem";
628 };
629 version = "9.2.0";
630 };
631 diff-lcs = {
632 groups = ["default" "development" "test"];
633 platforms = [];
634 source = {
635 remotes = ["https://rubygems.org"];
636 sha256 = "18w22bjz424gzafv6nzv98h0aqkwz3d9xhm7cbr1wfbyas8zayza";
637 type = "gem";
638 };
639 version = "1.3";
640 };
641 docile = {
642 groups = ["default" "test"];
643 platforms = [];
644 source = {
645 remotes = ["https://rubygems.org"];
646 sha256 = "0yyh4lr03q2vafzsfqy1xax7vr8zn7mbddz3ax3vnlm5fg0px6pn";
647 type = "gem";
648 };
649 version = "1.3.0";
650 };
651 domain_name = {
652 dependencies = ["unf"];
653 groups = ["default"];
654 platforms = [];
655 source = {
656 remotes = ["https://rubygems.org"];
657 sha256 = "0abdlwb64ns7ssmiqhdwgl27ly40x2l27l8hs8hn0z4kb3zd2x3v";
658 type = "gem";
659 };
660 version = "0.5.20180417";
661 };
662 doorkeeper = {
663 dependencies = ["railties"];
664 groups = ["default"];
665 platforms = [];
666 source = {
667 remotes = ["https://rubygems.org"];
668 sha256 = "0488m6nwp31mxrhayj60gsb7jgyw1lzh73r2kldx00a9bw3634d4";
669 type = "gem";
670 };
671 version = "5.0.2";
672 };
673 dotenv = {
674 groups = ["default"];
675 platforms = [];
676 source = {
677 remotes = ["https://rubygems.org"];
678 sha256 = "1va5y19f7l5jh53vz5vibz618lg8z93k5m2k70l25s9k46v2gfm3";
679 type = "gem";
680 };
681 version = "2.5.0";
682 };
683 dotenv-rails = {
684 dependencies = ["dotenv" "railties"];
685 groups = ["default"];
686 platforms = [];
687 source = {
688 remotes = ["https://rubygems.org"];
689 sha256 = "1vmk541bhb2mw0gfc1bg43jdilqspiggxzglnlr26rzsmvy2cgd2";
690 type = "gem";
691 };
692 version = "2.5.0";
693 };
694 elasticsearch = {
695 dependencies = ["elasticsearch-api" "elasticsearch-transport"];
696 groups = ["default"];
697 platforms = [];
698 source = {
699 remotes = ["https://rubygems.org"];
700 sha256 = "0a08ynvxz5clfm2ndqpgjrv4aiga9m2y1ab34s3qkihdfdzdzhj8";
701 type = "gem";
702 };
703 version = "6.0.2";
704 };
705 elasticsearch-api = {
706 dependencies = ["multi_json"];
707 groups = ["default"];
708 platforms = [];
709 source = {
710 remotes = ["https://rubygems.org"];
711 sha256 = "1vkahknqn85vvwr1gzh8jf3pvdial0c0d524icg8x06vibqgzd5h";
712 type = "gem";
713 };
714 version = "6.0.2";
715 };
716 elasticsearch-dsl = {
717 groups = ["default"];
718 platforms = [];
719 source = {
720 remotes = ["https://rubygems.org"];
721 sha256 = "1mwn6hvkki560p7sfc841q15zzgldsk9lzm2mlvc2bra7x1yk2q8";
722 type = "gem";
723 };
724 version = "0.1.5";
725 };
726 elasticsearch-transport = {
727 dependencies = ["faraday" "multi_json"];
728 groups = ["default"];
729 platforms = [];
730 source = {
731 remotes = ["https://rubygems.org"];
732 sha256 = "0gpwbw70qisx681j1bw8xq6shg5kdxmcdzg6425af0b5881jg7iy";
733 type = "gem";
734 };
735 version = "6.0.2";
736 };
737 encryptor = {
738 groups = ["default"];
739 platforms = [];
740 source = {
741 remotes = ["https://rubygems.org"];
742 sha256 = "0s8rvfl0vn8w7k1sgkc234060jh468s3zd45xa64p1jdmfa3zwmb";
743 type = "gem";
744 };
745 version = "3.0.0";
746 };
747 equatable = {
748 groups = ["default"];
749 platforms = [];
750 source = {
751 remotes = ["https://rubygems.org"];
752 sha256 = "1sjm9zjakyixyvsqziikdrsqfzis6j3fq23crgjkp6fwkfgndj7x";
753 type = "gem";
754 };
755 version = "0.5.0";
756 };
757 erubi = {
758 groups = ["default" "development" "pam_authentication" "production" "test"];
759 platforms = [];
760 source = {
761 remotes = ["https://rubygems.org"];
762 sha256 = "0bws86na9k565raiz0kk61yy5pxxp0fmwyzpibdwjkq0xzx8q6q1";
763 type = "gem";
764 };
765 version = "1.7.1";
766 };
767 et-orbi = {
768 dependencies = ["tzinfo"];
769 groups = ["default"];
770 platforms = [];
771 source = {
772 remotes = ["https://rubygems.org"];
773 sha256 = "0wk7i0bmsy46la8gcvbmdns0ni8lmdqas838phj97bdwykxw8m4b";
774 type = "gem";
775 };
776 version = "1.1.6";
777 };
778 excon = {
779 groups = ["default"];
780 platforms = [];
781 source = {
782 remotes = ["https://rubygems.org"];
783 sha256 = "15l9w0938c19nxmrp09n75qpmm64k12xj69h47yvxzcxcpbgnkb2";
784 type = "gem";
785 };
786 version = "0.62.0";
787 };
788 fabrication = {
789 groups = ["development" "test"];
790 platforms = [];
791 source = {
792 remotes = ["https://rubygems.org"];
793 sha256 = "0an28kjand4mjbkmnwd9fmgq3y5vf717zpmiijavar3sxqj52zri";
794 type = "gem";
795 };
796 version = "2.20.1";
797 };
798 faker = {
799 dependencies = ["i18n"];
800 groups = ["test"];
801 platforms = [];
802 source = {
803 remotes = ["https://rubygems.org"];
804 sha256 = "01q7wrk5bl0c0qrvg2my3kl0mbfnj1jpd89mqm3fzy4ggbkdhh7i";
805 type = "gem";
806 };
807 version = "1.9.1";
808 };
809 faraday = {
810 dependencies = ["multipart-post"];
811 groups = ["default"];
812 platforms = [];
813 source = {
814 remotes = ["https://rubygems.org"];
815 sha256 = "1dv1vcxxyw4vy0r2diiml0r8zqk1csrksfxv8nkrw61xlf2daaaa";
816 type = "gem";
817 };
818 version = "0.15.0";
819 };
820 fast_blank = {
821 groups = ["default"];
822 platforms = [];
823 source = {
824 remotes = ["https://rubygems.org"];
825 sha256 = "16s1ilyvwzmkcgmklbrn0c2pch5n02vf921njx0bld4crgdr6z56";
826 type = "gem";
827 };
828 version = "1.0.0";
829 };
830 fastimage = {
831 groups = ["default"];
832 platforms = [];
833 source = {
834 remotes = ["https://rubygems.org"];
835 sha256 = "0i7p9jgb9x1lxkhkwq8xlq7an5qbgdq6gsyrbs2xnf5ffa8yx1i2";
836 type = "gem";
837 };
838 version = "2.1.4";
839 };
840 ffi = {
841 groups = ["default" "development"];
842 platforms = [];
843 source = {
844 remotes = ["https://rubygems.org"];
845 sha256 = "0jpm2dis1j7zvvy3lg7axz9jml316zrn7s0j59vyq3qr127z0m7q";
846 type = "gem";
847 };
848 version = "1.9.25";
849 };
850 fog-core = {
851 dependencies = ["builder" "excon" "formatador" "mime-types"];
852 groups = ["default"];
853 platforms = [];
854 source = {
855 remotes = ["https://rubygems.org"];
856 sha256 = "1agd6xgzk0rxrsjdpn94v4hy89s0nm2cs4zg2p880w2dan9xgrak";
857 type = "gem";
858 };
859 version = "2.1.0";
860 };
861 fog-json = {
862 dependencies = ["fog-core" "multi_json"];
863 groups = ["default"];
864 platforms = [];
865 source = {
866 remotes = ["https://rubygems.org"];
867 sha256 = "1zj8llzc119zafbmfa4ai3z5s7c4vp9akfs0f9l2piyvcarmlkyx";
868 type = "gem";
869 };
870 version = "1.2.0";
871 };
872 fog-openstack = {
873 dependencies = ["fog-core" "fog-json" "ipaddress"];
874 groups = ["default"];
875 platforms = [];
876 source = {
877 remotes = ["https://rubygems.org"];
878 sha256 = "0aphjrvmchmqbyxqq82yj0qngyvkmwdci9iqs8722fi23bk83gdl";
879 type = "gem";
880 };
881 version = "0.3.7";
882 };
883 formatador = {
884 groups = ["default"];
885 platforms = [];
886 source = {
887 remotes = ["https://rubygems.org"];
888 sha256 = "1gc26phrwlmlqrmz4bagq1wd5b7g64avpx0ghxr9xdxcvmlii0l0";
889 type = "gem";
890 };
891 version = "0.2.5";
892 };
893 fugit = {
894 dependencies = ["et-orbi" "raabro"];
895 groups = ["default"];
896 platforms = [];
897 source = {
898 remotes = ["https://rubygems.org"];
899 sha256 = "1szijawzdii668z5is9xi849399gy786951dx0l5r2z5mbfqvl9i";
900 type = "gem";
901 };
902 version = "1.1.6";
903 };
904 fuubar = {
905 dependencies = ["rspec-core" "ruby-progressbar"];
906 groups = ["development" "test"];
907 platforms = [];
908 source = {
909 remotes = ["https://rubygems.org"];
910 sha256 = "1sqkr1nh49rlm86l3qyrgsdqavgqii4pnrjn7855z6dfavh3spxr";
911 type = "gem";
912 };
913 version = "2.3.2";
914 };
915 get_process_mem = {
916 groups = ["default" "development"];
917 platforms = [];
918 source = {
919 remotes = ["https://rubygems.org"];
920 sha256 = "0bfd9q1z133a0wh3l8g2imd2rdlbdhav0z41k147n8j40hgg8ygw";
921 type = "gem";
922 };
923 version = "0.2.2";
924 };
925 globalid = {
926 dependencies = ["activesupport"];
927 groups = ["default" "development"];
928 platforms = [];
929 source = {
930 remotes = ["https://rubygems.org"];
931 sha256 = "02smrgdi11kziqi9zhnsy9i6yr2fnxrqlv3lllsvdjki3cd4is38";
932 type = "gem";
933 };
934 version = "0.4.1";
935 };
936 goldfinger = {
937 dependencies = ["addressable" "http" "nokogiri" "oj"];
938 groups = ["default"];
939 platforms = [];
940 source = {
941 remotes = ["https://rubygems.org"];
942 sha256 = "0n142035jhyqwczi52zjr07c8kygp9b9f158miaby3z5hygzjyzh";
943 type = "gem";
944 };
945 version = "2.1.0";
946 };
947 hamlit = {
948 dependencies = ["temple" "thor" "tilt"];
949 groups = ["default"];
950 platforms = [];
951 source = {
952 remotes = ["https://rubygems.org"];
953 sha256 = "0hk338vkzmwszxdh0q02iw88rbr3bj3fd7fzn4psm8wy80zcgl9i";
954 type = "gem";
955 };
956 version = "2.8.8";
957 };
958 hamlit-rails = {
959 dependencies = ["actionpack" "activesupport" "hamlit" "railties"];
960 groups = ["default"];
961 platforms = [];
962 source = {
963 remotes = ["https://rubygems.org"];
964 sha256 = "14gzlp6w1j3b5fb4bhbjjh24skx031vnfc2shym9bkmq3r0p8dws";
965 type = "gem";
966 };
967 version = "0.2.0";
968 };
969 hamster = {
970 dependencies = ["concurrent-ruby"];
971 groups = ["default"];
972 platforms = [];
973 source = {
974 remotes = ["https://rubygems.org"];
975 sha256 = "1n1lsh96vnyc1pnzyd30f9prcsclmvmkdb3nm5aahnyizyiy6lar";
976 type = "gem";
977 };
978 version = "3.0.0";
979 };
980 hashdiff = {
981 groups = ["default" "test"];
982 platforms = [];
983 source = {
984 remotes = ["https://rubygems.org"];
985 sha256 = "0yj5l2rw8i8jc725hbcpc4wks0qlaaimr3dpaqamfjkjkxl0hjp9";
986 type = "gem";
987 };
988 version = "0.3.7";
989 };
990 hashie = {
991 groups = ["default"];
992 platforms = [];
993 source = {
994 remotes = ["https://rubygems.org"];
995 sha256 = "1hh5lybf8hm7d7xs4xm8hxvm8xqrs2flc8fnwkrclaj746izw6xb";
996 type = "gem";
997 };
998 version = "3.5.7";
999 };
1000 heapy = {
1001 groups = ["default" "development"];
1002 platforms = [];
1003 source = {
1004 remotes = ["https://rubygems.org"];
1005 sha256 = "1r9f38fpgjgaxskkwvsliijj6vfmgsff9pnranvvvzkdl67hk1hw";
1006 type = "gem";
1007 };
1008 version = "0.1.4";
1009 };
1010 highline = {
1011 groups = ["default" "development" "test"];
1012 platforms = [];
1013 source = {
1014 remotes = ["https://rubygems.org"];
1015 sha256 = "069sz5qmjpmv3x7kr5r3rwl20m9vqg97p15scmjdagglra34clkl";
1016 type = "gem";
1017 };
1018 version = "2.0.0";
1019 };
1020 hiredis = {
1021 groups = ["default"];
1022 platforms = [];
1023 source = {
1024 remotes = ["https://rubygems.org"];
1025 sha256 = "19fsmy0qv0spyv1jm0mp6c8pk08r1rilw5f778m4n7hbc1x01wnl";
1026 type = "gem";
1027 };
1028 version = "0.6.1";
1029 };
1030 hitimes = {
1031 groups = ["default"];
1032 platforms = [];
1033 source = {
1034 remotes = ["https://rubygems.org"];
1035 sha256 = "1z1ss5j5xf9lpc0pn8vbhxkx63r6ai1dd453dqcms2638kx4l2b9";
1036 type = "gem";
1037 };
1038 version = "1.3.0";
1039 };
1040 hkdf = {
1041 groups = ["default"];
1042 platforms = [];
1043 source = {
1044 remotes = ["https://rubygems.org"];
1045 sha256 = "04fixg0a51n4vy0j6c1hvisa2yl33m3jrrpxpb5sq6j511vjriil";
1046 type = "gem";
1047 };
1048 version = "0.3.0";
1049 };
1050 htmlentities = {
1051 groups = ["default"];
1052 platforms = [];
1053 source = {
1054 remotes = ["https://rubygems.org"];
1055 sha256 = "1nkklqsn8ir8wizzlakncfv42i32wc0w9hxp00hvdlgjr7376nhj";
1056 type = "gem";
1057 };
1058 version = "4.3.4";
1059 };
1060 http = {
1061 dependencies = ["addressable" "http-cookie" "http-form_data" "http_parser.rb"];
1062 groups = ["default"];
1063 platforms = [];
1064 source = {
1065 remotes = ["https://rubygems.org"];
1066 sha256 = "1jlm5prw437wqpfxcigh88lfap3m7g8mnmj5as7qw6dzqnvrxwmc";
1067 type = "gem";
1068 };
1069 version = "3.3.0";
1070 };
1071 http-cookie = {
1072 dependencies = ["domain_name"];
1073 groups = ["default"];
1074 platforms = [];
1075 source = {
1076 remotes = ["https://rubygems.org"];
1077 sha256 = "004cgs4xg5n6byjs7qld0xhsjq3n6ydfh897myr2mibvh6fjc49g";
1078 type = "gem";
1079 };
1080 version = "1.0.3";
1081 };
1082 http-form_data = {
1083 groups = ["default"];
1084 platforms = [];
1085 source = {
1086 remotes = ["https://rubygems.org"];
1087 sha256 = "15lpn604byf7cyxnw949xz4rvpcknqp7a48q73nm630gqxsa76f3";
1088 type = "gem";
1089 };
1090 version = "2.1.1";
1091 };
1092 http_accept_language = {
1093 groups = ["default"];
1094 platforms = [];
1095 source = {
1096 remotes = ["https://rubygems.org"];
1097 sha256 = "0d0nlfz9vm4jr1l6q0chx4rp2hrnrfbx3gadc1dz930lbbaz0hq0";
1098 type = "gem";
1099 };
1100 version = "2.1.1";
1101 };
1102 "http_parser.rb" = {
1103 groups = ["default"];
1104 platforms = [];
1105 source = {
1106 fetchSubmodules = true;
1107 rev = "54b17ba8c7d8d20a16dfc65d1775241833219cf2";
1108 sha256 = "079nwjsmg9jp33afc4f5bhjdbhcnfykdw4rd7ahhz8cbdkbhlzcp";
1109 type = "git";
1110 url = "https://github.com/tmm1/http_parser.rb";
1111 };
1112 version = "0.6.1";
1113 };
1114 httplog = {
1115 dependencies = ["rack" "rainbow"];
1116 groups = ["default"];
1117 platforms = [];
1118 source = {
1119 remotes = ["https://rubygems.org"];
1120 sha256 = "1kxxvkk2zkvq5skj5m6j6z5v0zz404f1s5fi6s4p8ywx5g1hj4ff";
1121 type = "gem";
1122 };
1123 version = "1.1.1";
1124 };
1125 i18n = {
1126 dependencies = ["concurrent-ruby"];
1127 groups = ["default" "development" "pam_authentication" "production" "test"];
1128 platforms = [];
1129 source = {
1130 remotes = ["https://rubygems.org"];
1131 sha256 = "1gcp1m1p6dpasycfz2sj82ci9ggz7lsskz9c9q6gvfwxrl8y9dx7";
1132 type = "gem";
1133 };
1134 version = "1.1.1";
1135 };
1136 i18n-tasks = {
1137 dependencies = ["activesupport" "ast" "erubi" "highline" "i18n" "parser" "rails-i18n" "rainbow" "terminal-table"];
1138 groups = ["development" "test"];
1139 platforms = [];
1140 source = {
1141 remotes = ["https://rubygems.org"];
1142 sha256 = "16592471ylgigmjx98pmbqibjwhavr4wb670kya9qh3nbgf7s1ym";
1143 type = "gem";
1144 };
1145 version = "0.9.28";
1146 };
1147 idn-ruby = {
1148 groups = ["default"];
1149 platforms = [];
1150 source = {
1151 remotes = ["https://rubygems.org"];
1152 sha256 = "07vblcyk3g72sbq12xz7xj28snpxnh3sbcnxy8bglqbfqqhvmawr";
1153 type = "gem";
1154 };
1155 version = "0.1.0";
1156 };
1157 ipaddress = {
1158 groups = ["default"];
1159 platforms = [];
1160 source = {
1161 remotes = ["https://rubygems.org"];
1162 sha256 = "1x86s0s11w202j6ka40jbmywkrx8fhq8xiy8mwvnkhllj57hqr45";
1163 type = "gem";
1164 };
1165 version = "0.8.3";
1166 };
1167 iso-639 = {
1168 groups = ["default"];
1169 platforms = [];
1170 source = {
1171 remotes = ["https://rubygems.org"];
1172 sha256 = "10k1gpkkbxbasgjzh4hd32ygxzjb5312rphipm46ryxkpx556zzz";
1173 type = "gem";
1174 };
1175 version = "0.2.8";
1176 };
1177 jaro_winkler = {
1178 groups = ["default" "development"];
1179 platforms = [];
1180 source = {
1181 remotes = ["https://rubygems.org"];
1182 sha256 = "0rr797nqz081bfk30m2apj5h24bg5d1jr1c8p3xwx4hbwsrbclah";
1183 type = "gem";
1184 };
1185 version = "1.5.1";
1186 };
1187 jmespath = {
1188 groups = ["default"];
1189 platforms = [];
1190 source = {
1191 remotes = ["https://rubygems.org"];
1192 sha256 = "1d4wac0dcd1jf6kc57891glih9w57552zgqswgy74d1xhgnk0ngf";
1193 type = "gem";
1194 };
1195 version = "1.4.0";
1196 };
1197 json = {
1198 groups = ["default" "test"];
1199 platforms = [];
1200 source = {
1201 remotes = ["https://rubygems.org"];
1202 sha256 = "01v6jjpvh3gnq6sgllpfqahlgxzj50ailwhj9b3cd20hi2dx0vxp";
1203 type = "gem";
1204 };
1205 version = "2.1.0";
1206 };
1207 json-ld = {
1208 dependencies = ["multi_json" "rdf"];
1209 groups = ["default"];
1210 platforms = [];
1211 source = {
1212 remotes = ["https://rubygems.org"];
1213 sha256 = "08ql8j546akan51yhrjjcphwjdmrl551sz5hi2czc74993523mkw";
1214 type = "gem";
1215 };
1216 version = "2.2.1";
1217 };
1218 json-ld-preloaded = {
1219 dependencies = ["json-ld" "multi_json" "rdf"];
1220 groups = ["default"];
1221 platforms = [];
1222 source = {
1223 remotes = ["https://rubygems.org"];
1224 sha256 = "08vjc9bgb0bh7dafs55i0ph4jqb7asj0p8qhhls8kq1ira7kzbng";
1225 type = "gem";
1226 };
1227 version = "2.2.3";
1228 };
1229 jsonapi-renderer = {
1230 groups = ["default"];
1231 platforms = [];
1232 source = {
1233 remotes = ["https://rubygems.org"];
1234 sha256 = "00ysmcv3nrccyimi334ida4axlfgir6cc2ryjxrf4xb97m1bfk5j";
1235 type = "gem";
1236 };
1237 version = "0.2.0";
1238 };
1239 jwt = {
1240 groups = ["default"];
1241 platforms = [];
1242 source = {
1243 remotes = ["https://rubygems.org"];
1244 sha256 = "1w0kaqrbl71cq9sbnixc20x5lqah3hs2i93xmhlfdg2y3by7yzky";
1245 type = "gem";
1246 };
1247 version = "2.1.0";
1248 };
1249 kaminari = {
1250 dependencies = ["activesupport" "kaminari-actionview" "kaminari-activerecord" "kaminari-core"];
1251 groups = ["default"];
1252 platforms = [];
1253 source = {
1254 remotes = ["https://rubygems.org"];
1255 sha256 = "1j27y5phifwpggspglmg8pmlf6n4jblxwziix9am42661c770jlm";
1256 type = "gem";
1257 };
1258 version = "1.1.1";
1259 };
1260 kaminari-actionview = {
1261 dependencies = ["actionview" "kaminari-core"];
1262 groups = ["default"];
1263 platforms = [];
1264 source = {
1265 remotes = ["https://rubygems.org"];
1266 sha256 = "1386wshpy1ygbris0s7rv7lyzbs0v8dfqkzdwsrsgm9fd1ira640";
1267 type = "gem";
1268 };
1269 version = "1.1.1";
1270 };
1271 kaminari-activerecord = {
1272 dependencies = ["activerecord" "kaminari-core"];
1273 groups = ["default"];
1274 platforms = [];
1275 source = {
1276 remotes = ["https://rubygems.org"];
1277 sha256 = "0q31ik5648xi2hpy61knnjd0m7rvs17i93gzwcbh3ccj1y24gv2x";
1278 type = "gem";
1279 };
1280 version = "1.1.1";
1281 };
1282 kaminari-core = {
1283 groups = ["default"];
1284 platforms = [];
1285 source = {
1286 remotes = ["https://rubygems.org"];
1287 sha256 = "1cfjrhvidvgdwp9ffsm9d4c2s18k2zp3gnya3f41qb3fc6bc2q2w";
1288 type = "gem";
1289 };
1290 version = "1.1.1";
1291 };
1292 launchy = {
1293 dependencies = ["addressable"];
1294 groups = ["default" "development"];
1295 platforms = [];
1296 source = {
1297 remotes = ["https://rubygems.org"];
1298 sha256 = "190lfbiy1vwxhbgn4nl4dcbzxvm049jwc158r2x7kq3g5khjrxa2";
1299 type = "gem";
1300 };
1301 version = "2.4.3";
1302 };
1303 letter_opener = {
1304 dependencies = ["launchy"];
1305 groups = ["development"];
1306 platforms = [];
1307 source = {
1308 remotes = ["https://rubygems.org"];
1309 sha256 = "0hvvcl2n4j05vixgydld9lm2hspifn9f651l0d9qdzvlic7wh0rx";
1310 type = "gem";
1311 };
1312 version = "1.6.0";
1313 };
1314 letter_opener_web = {
1315 dependencies = ["actionmailer" "letter_opener" "railties"];
1316 groups = ["development"];
1317 platforms = [];
1318 source = {
1319 remotes = ["https://rubygems.org"];
1320 sha256 = "17qhwrkncrrp1bi2f7fbkm5lpnkdsiwy8jcvgr2wa97ck8y4x2bb";
1321 type = "gem";
1322 };
1323 version = "1.3.4";
1324 };
1325 link_header = {
1326 groups = ["default"];
1327 platforms = [];
1328 source = {
1329 remotes = ["https://rubygems.org"];
1330 sha256 = "1yamrdq4rywmnpdhbygnkkl9fdy249fg5r851nrkkxr97gj5rihm";
1331 type = "gem";
1332 };
1333 version = "0.0.8";
1334 };
1335 lograge = {
1336 dependencies = ["actionpack" "activesupport" "railties" "request_store"];
1337 groups = ["production"];
1338 platforms = [];
1339 source = {
1340 remotes = ["https://rubygems.org"];
1341 sha256 = "00lcn7s3slfn32di4qwlx2yj5f9r2pcnd0naxrvqqwypcg1z2sdd";
1342 type = "gem";
1343 };
1344 version = "0.10.0";
1345 };
1346 loofah = {
1347 dependencies = ["crass" "nokogiri"];
1348 groups = ["default" "development" "pam_authentication" "production" "test"];
1349 platforms = [];
1350 source = {
1351 remotes = ["https://rubygems.org"];
1352 sha256 = "1ccsid33xjajd0im2xv941aywi58z7ihwkvaf1w2bv89vn5bhsjg";
1353 type = "gem";
1354 };
1355 version = "2.2.3";
1356 };
1357 mail = {
1358 dependencies = ["mini_mime"];
1359 groups = ["default" "development"];
1360 platforms = [];
1361 source = {
1362 remotes = ["https://rubygems.org"];
1363 sha256 = "10dyifazss9mgdzdv08p47p344wmphp5pkh5i73s7c04ra8y6ahz";
1364 type = "gem";
1365 };
1366 version = "2.7.0";
1367 };
1368 makara = {
1369 dependencies = ["activerecord"];
1370 groups = ["default"];
1371 platforms = [];
1372 source = {
1373 remotes = ["https://rubygems.org"];
1374 sha256 = "1ri6r558nylaclqhfq1zhapfsyhryggln7gw69qb9i4c1rkfnyd2";
1375 type = "gem";
1376 };
1377 version = "0.4.0";
1378 };
1379 marcel = {
1380 dependencies = ["mimemagic"];
1381 groups = ["default"];
1382 platforms = [];
1383 source = {
1384 remotes = ["https://rubygems.org"];
1385 sha256 = "0v1kncmyh0yn9h28zri6hkfdqzr8bf26ar9bvglhgzy0chqr9dp8";
1386 type = "gem";
1387 };
1388 version = "0.3.2";
1389 };
1390 mario-redis-lock = {
1391 dependencies = ["redis"];
1392 groups = ["default"];
1393 platforms = [];
1394 source = {
1395 remotes = ["https://rubygems.org"];
1396 sha256 = "1v9wdjcjqzpns2migxp4a5b4w82mipi0fwihbqz3q2qj2qm7wc17";
1397 type = "gem";
1398 };
1399 version = "1.2.1";
1400 };
1401 memory_profiler = {
1402 groups = ["development"];
1403 platforms = [];
1404 source = {
1405 remotes = ["https://rubygems.org"];
1406 sha256 = "0qir6bc2rw6lac6fsjhnspqyr01sh12d75dkd630qknjwvrrq8kj";
1407 type = "gem";
1408 };
1409 version = "0.9.12";
1410 };
1411 method_source = {
1412 groups = ["default" "development" "pam_authentication" "production" "test"];
1413 platforms = [];
1414 source = {
1415 remotes = ["https://rubygems.org"];
1416 sha256 = "0xqj21j3vfq4ldia6i2akhn2qd84m0iqcnsl49kfpq3xk6x0dzgn";
1417 type = "gem";
1418 };
1419 version = "0.9.0";
1420 };
1421 microformats = {
1422 dependencies = ["json" "nokogiri"];
1423 groups = ["test"];
1424 platforms = [];
1425 source = {
1426 remotes = ["https://rubygems.org"];
1427 sha256 = "14az36ax3n81fmwqjb5giixvxsnmxpnlfrsz012pl78x1bkrvfki";
1428 type = "gem";
1429 };
1430 version = "4.0.7";
1431 };
1432 mime-types = {
1433 dependencies = ["mime-types-data"];
1434 groups = ["default"];
1435 platforms = [];
1436 source = {
1437 remotes = ["https://rubygems.org"];
1438 sha256 = "0fjxy1jm52ixpnv3vg9ld9pr9f35gy0jp66i1njhqjvmnvq0iwwk";
1439 type = "gem";
1440 };
1441 version = "3.2.2";
1442 };
1443 mime-types-data = {
1444 groups = ["default"];
1445 platforms = [];
1446 source = {
1447 remotes = ["https://rubygems.org"];
1448 sha256 = "07wvp0aw2gjm4njibb70as6rh5hi1zzri5vky1q6jx95h8l56idc";
1449 type = "gem";
1450 };
1451 version = "3.2018.0812";
1452 };
1453 mimemagic = {
1454 groups = ["default"];
1455 platforms = [];
1456 source = {
1457 remotes = ["https://rubygems.org"];
1458 sha256 = "00ibc1mhvdfyfyl103xwb45621nwyqxf124cni5hyfhag0fn1c3q";
1459 type = "gem";
1460 };
1461 version = "0.3.2";
1462 };
1463 mini_mime = {
1464 groups = ["default" "development" "test"];
1465 platforms = [];
1466 source = {
1467 remotes = ["https://rubygems.org"];
1468 sha256 = "1q4pshq387lzv9m39jv32vwb8wrq3wc4jwgl4jk209r4l33v09d3";
1469 type = "gem";
1470 };
1471 version = "1.0.1";
1472 };
1473 mini_portile2 = {
1474 groups = ["default" "development" "pam_authentication" "production" "test"];
1475 platforms = [];
1476 source = {
1477 remotes = ["https://rubygems.org"];
1478 sha256 = "13d32jjadpjj6d2wdhkfpsmy68zjx90p49bgf8f7nkpz86r1fr11";
1479 type = "gem";
1480 };
1481 version = "2.3.0";
1482 };
1483 minitest = {
1484 groups = ["default" "development" "pam_authentication" "production" "test"];
1485 platforms = [];
1486 source = {
1487 remotes = ["https://rubygems.org"];
1488 sha256 = "0icglrhghgwdlnzzp4jf76b0mbc71s80njn5afyfjn4wqji8mqbq";
1489 type = "gem";
1490 };
1491 version = "5.11.3";
1492 };
1493 msgpack = {
1494 groups = ["default"];
1495 platforms = [];
1496 source = {
1497 remotes = ["https://rubygems.org"];
1498 sha256 = "09xy1wc4wfbd1jdrzgxwmqjzfdfxbz0cqdszq2gv6rmc3gv1c864";
1499 type = "gem";
1500 };
1501 version = "1.2.4";
1502 };
1503 multi_json = {
1504 groups = ["default"];
1505 platforms = [];
1506 source = {
1507 remotes = ["https://rubygems.org"];
1508 sha256 = "1rl0qy4inf1mp8mybfk56dfga0mvx97zwpmq5xmiwl5r770171nv";
1509 type = "gem";
1510 };
1511 version = "1.13.1";
1512 };
1513 multipart-post = {
1514 groups = ["default"];
1515 platforms = [];
1516 source = {
1517 remotes = ["https://rubygems.org"];
1518 sha256 = "09k0b3cybqilk1gwrwwain95rdypixb2q9w65gd44gfzsd84xi1x";
1519 type = "gem";
1520 };
1521 version = "2.0.0";
1522 };
1523 necromancer = {
1524 groups = ["default"];
1525 platforms = [];
1526 source = {
1527 remotes = ["https://rubygems.org"];
1528 sha256 = "0v9nhdkv6zrp7cn48xv7n2vjhsbslpvs0ha36mfkcd56cp27pavz";
1529 type = "gem";
1530 };
1531 version = "0.4.0";
1532 };
1533 net-ldap = {
1534 groups = ["default"];
1535 platforms = [];
1536 source = {
1537 remotes = ["https://rubygems.org"];
1538 sha256 = "016igqz81a8zcwqzp5bbhryqmb2skmyf57ij3nb5z8sxwhw22jgh";
1539 type = "gem";
1540 };
1541 version = "0.16.1";
1542 };
1543 net-scp = {
1544 dependencies = ["net-ssh"];
1545 groups = ["default" "development"];
1546 platforms = [];
1547 source = {
1548 remotes = ["https://rubygems.org"];
1549 sha256 = "0b0jqrcsp4bbi4n4mzyf70cp2ysyp6x07j8k8cqgxnvb4i3a134j";
1550 type = "gem";
1551 };
1552 version = "1.2.1";
1553 };
1554 net-ssh = {
1555 groups = ["default" "development"];
1556 platforms = [];
1557 source = {
1558 remotes = ["https://rubygems.org"];
1559 sha256 = "0qfanf71yv8w7yl9l9wqcy68i2x1ghvnf8m581yy4pl0anfdhqw8";
1560 type = "gem";
1561 };
1562 version = "5.0.2";
1563 };
1564 nio4r = {
1565 groups = ["default"];
1566 platforms = [];
1567 source = {
1568 remotes = ["https://rubygems.org"];
1569 sha256 = "1a41ca1kpdmrypjp9xbgvckpy8g26zxphkja9vk7j5wl4n8yvlyr";
1570 type = "gem";
1571 };
1572 version = "2.3.1";
1573 };
1574 nokogiri = {
1575 dependencies = ["mini_portile2"];
1576 groups = ["default" "development" "pam_authentication" "production" "test"];
1577 platforms = [];
1578 source = {
1579 remotes = ["https://rubygems.org"];
1580 sha256 = "0byyxrazkfm29ypcx5q4syrv126nvjnf7z6bqi01sqkv4llsi4qz";
1581 type = "gem";
1582 };
1583 version = "1.8.5";
1584 };
1585 nokogumbo = {
1586 dependencies = ["nokogiri"];
1587 groups = ["default"];
1588 platforms = [];
1589 source = {
1590 remotes = ["https://rubygems.org"];
1591 sha256 = "1qr7r2ysbp8b5q78yr8l5qpaxfqdw1i2yz6nsrbavdki8mqjgj24";
1592 type = "gem";
1593 };
1594 version = "2.0.0";
1595 };
1596 nsa = {
1597 dependencies = ["activesupport" "concurrent-ruby" "sidekiq" "statsd-ruby"];
1598 groups = ["default"];
1599 platforms = [];
1600 source = {
1601 remotes = ["https://rubygems.org"];
1602 sha256 = "1xki3jd107lc189mwwyxf19wz17dlaysrqy2jcbgyk7cdvbmhgf0";
1603 type = "gem";
1604 };
1605 version = "0.2.4";
1606 };
1607 oj = {
1608 groups = ["default"];
1609 platforms = [];
1610 source = {
1611 remotes = ["https://rubygems.org"];
1612 sha256 = "01pb6k8sfcj3i04gnwg33ld8682axzpn2kh26d7nsf44jx9k6bdd";
1613 type = "gem";
1614 };
1615 version = "3.7.0";
1616 };
1617 omniauth = {
1618 dependencies = ["hashie" "rack"];
1619 groups = ["default"];
1620 platforms = [];
1621 source = {
1622 remotes = ["https://rubygems.org"];
1623 sha256 = "1msqr4qq7mfdvl3rg89529isrv595hvjpj2gi0say4b8nwqfggmg";
1624 type = "gem";
1625 };
1626 version = "1.8.1";
1627 };
1628 omniauth-cas = {
1629 dependencies = ["addressable" "nokogiri" "omniauth"];
1630 groups = ["default"];
1631 platforms = [];
1632 source = {
1633 remotes = ["https://rubygems.org"];
1634 sha256 = "1nnk7cr45aj7hj19zpky58yysvjg8mn5f45sj9knpn5f9kgld7p4";
1635 type = "gem";
1636 };
1637 version = "1.1.1";
1638 };
1639 omniauth-saml = {
1640 dependencies = ["omniauth" "ruby-saml"];
1641 groups = ["default"];
1642 platforms = [];
1643 source = {
1644 remotes = ["https://rubygems.org"];
1645 sha256 = "1pg3pw4yjd9w1rn3lkycllrvd767pydbhldgdcqbbcck01asfcfz";
1646 type = "gem";
1647 };
1648 version = "1.10.1";
1649 };
1650 orm_adapter = {
1651 groups = ["default" "pam_authentication"];
1652 platforms = [];
1653 source = {
1654 remotes = ["https://rubygems.org"];
1655 sha256 = "1fg9jpjlzf5y49qs9mlpdrgs5rpcyihq1s4k79nv9js0spjhnpda";
1656 type = "gem";
1657 };
1658 version = "0.5.0";
1659 };
1660 ostatus2 = {
1661 dependencies = ["addressable" "http" "nokogiri"];
1662 groups = ["default"];
1663 platforms = [];
1664 source = {
1665 remotes = ["https://rubygems.org"];
1666 sha256 = "0fj27nr38g5y52s755pmg5zifwc6n88bw2zmkc22kg4vrhs64k19";
1667 type = "gem";
1668 };
1669 version = "2.0.3";
1670 };
1671 ox = {
1672 groups = ["default"];
1673 platforms = [];
1674 source = {
1675 remotes = ["https://rubygems.org"];
1676 sha256 = "15vkq18fp58504ld9vfakisxdmp68pk5y1bmmm5g7b0q25p8z5pq";
1677 type = "gem";
1678 };
1679 version = "2.10.0";
1680 };
1681 paperclip = {
1682 dependencies = ["activemodel" "activesupport" "mime-types" "mimemagic" "terrapin"];
1683 groups = ["default"];
1684 platforms = [];
1685 source = {
1686 remotes = ["https://rubygems.org"];
1687 sha256 = "04mlw7aqj20ry0fy92gxnxg99hy5xczff7rhywfzz4mqlhc2wgg7";
1688 type = "gem";
1689 };
1690 version = "6.0.0";
1691 };
1692 paperclip-av-transcoder = {
1693 dependencies = ["av" "paperclip"];
1694 groups = ["default"];
1695 platforms = [];
1696 source = {
1697 remotes = ["https://rubygems.org"];
1698 sha256 = "1gcnp3fpdb5lqilcij4yqga6397nb7zyyf9lzxnqpbp7cvc18lhf";
1699 type = "gem";
1700 };
1701 version = "0.6.4";
1702 };
1703 parallel = {
1704 groups = ["default" "development" "test"];
1705 platforms = [];
1706 source = {
1707 remotes = ["https://rubygems.org"];
1708 sha256 = "01hj8v1qnyl5ndrs33g8ld8ibk0rbcqdpkpznr04gkbxd11pqn67";
1709 type = "gem";
1710 };
1711 version = "1.12.1";
1712 };
1713 parallel_tests = {
1714 dependencies = ["parallel"];
1715 groups = ["test"];
1716 platforms = [];
1717 source = {
1718 remotes = ["https://rubygems.org"];
1719 sha256 = "1rlbahdvrng1wbzhqxg0n2q92a25y2mvarmjn2qcrj9mdmlq51kr";
1720 type = "gem";
1721 };
1722 version = "2.26.0";
1723 };
1724 parser = {
1725 dependencies = ["ast"];
1726 groups = ["default" "development" "test"];
1727 platforms = [];
1728 source = {
1729 remotes = ["https://rubygems.org"];
1730 sha256 = "1zjk0w1kjj3xk8ymy1430aa4gg0k8ckphfj88br6il4pm83f0n1f";
1731 type = "gem";
1732 };
1733 version = "2.5.3.0";
1734 };
1735 pastel = {
1736 dependencies = ["equatable" "tty-color"];
1737 groups = ["default"];
1738 platforms = [];
1739 source = {
1740 remotes = ["https://rubygems.org"];
1741 sha256 = "1yf30d9kzpm96gw9kwbv31p0qigwfykn8qdis5950plnzgc1vlp1";
1742 type = "gem";
1743 };
1744 version = "0.7.2";
1745 };
1746 pg = {
1747 groups = ["default"];
1748 platforms = [];
1749 source = {
1750 remotes = ["https://rubygems.org"];
1751 sha256 = "1pnjw3rspdfjssxyf42jnbsdlgri8ylysimp0s28wxb93k6ff2qb";
1752 type = "gem";
1753 };
1754 version = "1.1.3";
1755 };
1756 pghero = {
1757 dependencies = ["activerecord"];
1758 groups = ["default"];
1759 platforms = [];
1760 source = {
1761 remotes = ["https://rubygems.org"];
1762 sha256 = "0nvg9jwynnw3brignq6raka0abrcjmm8mr8yxhvybjpmr6lyyjrd";
1763 type = "gem";
1764 };
1765 version = "2.2.0";
1766 };
1767 pkg-config = {
1768 groups = ["default"];
1769 platforms = [];
1770 source = {
1771 remotes = ["https://rubygems.org"];
1772 sha256 = "0yrxwki3nzyss1fnjrhkahya0w9wgb7jg6ji995z7y4ph81zwflm";
1773 type = "gem";
1774 };
1775 version = "1.3.1";
1776 };
1777 posix-spawn = {
1778 groups = ["default"];
1779 platforms = [];
1780 source = {
1781 fetchSubmodules = false;
1782 rev = "58465d2e213991f8afb13b984854a49fcdcc980c";
1783 sha256 = "1mq284bps0y4yfwkhvj2j27g6lpzfhzw1bypim1a0n1js7j54vhk";
1784 type = "git";
1785 url = "https://github.com/rtomayko/posix-spawn";
1786 };
1787 version = "0.3.13";
1788 };
1789 powerpack = {
1790 groups = ["default" "development"];
1791 platforms = [];
1792 source = {
1793 remotes = ["https://rubygems.org"];
1794 sha256 = "1r51d67wd467rpdfl6x43y84vwm8f5ql9l9m85ak1s2sp3nc5hyv";
1795 type = "gem";
1796 };
1797 version = "0.1.2";
1798 };
1799 premailer = {
1800 dependencies = ["addressable" "css_parser" "htmlentities"];
1801 groups = ["default"];
1802 platforms = [];
1803 source = {
1804 remotes = ["https://rubygems.org"];
1805 sha256 = "1xrhmialxn5vlp1nmf40a4db9gji4h2wbzd7f43sz64z8lvrjj6h";
1806 type = "gem";
1807 };
1808 version = "1.11.1";
1809 };
1810 premailer-rails = {
1811 dependencies = ["actionmailer" "premailer"];
1812 groups = ["default"];
1813 platforms = [];
1814 source = {
1815 remotes = ["https://rubygems.org"];
1816 sha256 = "1avh2bkhabicf1zxla8z6ig5192h3vdzli4d2y9wmxfwgh549lmx";
1817 type = "gem";
1818 };
1819 version = "1.10.2";
1820 };
1821 private_address_check = {
1822 groups = ["production" "test"];
1823 platforms = [];
1824 source = {
1825 remotes = ["https://rubygems.org"];
1826 sha256 = "05phz0vscfh9chv90yc9091pifw3cpwkh76flnhrmvja1q3na4cy";
1827 type = "gem";
1828 };
1829 version = "0.5.0";
1830 };
1831 pry = {
1832 dependencies = ["coderay" "method_source"];
1833 groups = ["default" "development" "test"];
1834 platforms = [];
1835 source = {
1836 remotes = ["https://rubygems.org"];
1837 sha256 = "1mh312k3y94sj0pi160wpia0ps8f4kmzvm505i6bvwynfdh7v30g";
1838 type = "gem";
1839 };
1840 version = "0.11.3";
1841 };
1842 pry-byebug = {
1843 dependencies = ["byebug" "pry"];
1844 groups = ["development" "test"];
1845 platforms = [];
1846 source = {
1847 remotes = ["https://rubygems.org"];
1848 sha256 = "0y2758593i2ij0nhmv0j1pbdfx2cgi52ns6wkij0frgnk2lf650g";
1849 type = "gem";
1850 };
1851 version = "3.6.0";
1852 };
1853 pry-rails = {
1854 dependencies = ["pry"];
1855 groups = ["development" "test"];
1856 platforms = [];
1857 source = {
1858 remotes = ["https://rubygems.org"];
1859 sha256 = "0k2d43bwmqbswfra4fkadjjbszwb11pr7qdkma91qrcrk62wqxvy";
1860 type = "gem";
1861 };
1862 version = "0.3.6";
1863 };
1864 public_suffix = {
1865 groups = ["default" "development" "test"];
1866 platforms = [];
1867 source = {
1868 remotes = ["https://rubygems.org"];
1869 sha256 = "08q64b5br692dd3v0a9wq9q5dvycc6kmiqmjbdxkxbfizggsvx6l";
1870 type = "gem";
1871 };
1872 version = "3.0.3";
1873 };
1874 puma = {
1875 groups = ["default"];
1876 platforms = [];
1877 source = {
1878 remotes = ["https://rubygems.org"];
1879 sha256 = "1k7dqxnq0dnf5rxkgs9rknclkn3ah7lsdrk6nrqxla8qzy31wliq";
1880 type = "gem";
1881 };
1882 version = "3.12.0";
1883 };
1884 pundit = {
1885 dependencies = ["activesupport"];
1886 groups = ["default"];
1887 platforms = [];
1888 source = {
1889 remotes = ["https://rubygems.org"];
1890 sha256 = "0s59ilsqnr3vbai66mp7jj097m6i7ivpnjpbw665s50f5z834vls";
1891 type = "gem";
1892 };
1893 version = "2.0.0";
1894 };
1895 raabro = {
1896 groups = ["default"];
1897 platforms = [];
1898 source = {
1899 remotes = ["https://rubygems.org"];
1900 sha256 = "0xzdmbn48753f6k0ckirp8ja5p0xn1a92wbwxfyggyhj0hza9ylq";
1901 type = "gem";
1902 };
1903 version = "1.1.6";
1904 };
1905 rack = {
1906 groups = ["default" "development" "pam_authentication" "production" "test"];
1907 platforms = [];
1908 source = {
1909 remotes = ["https://rubygems.org"];
1910 sha256 = "158hbn7rlc3czp2vivvam44dv6vmzz16qrh5dbzhfxbfsgiyrqw1";
1911 type = "gem";
1912 };
1913 version = "2.0.5";
1914 };
1915 rack-attack = {
1916 dependencies = ["rack"];
1917 groups = ["default"];
1918 platforms = [];
1919 source = {
1920 remotes = ["https://rubygems.org"];
1921 sha256 = "08787kd5cnm9mbvpbj73xai21fn87wyrlzfp8l753lb9qqjhdn4p";
1922 type = "gem";
1923 };
1924 version = "5.4.1";
1925 };
1926 rack-cors = {
1927 groups = ["default"];
1928 platforms = [];
1929 source = {
1930 remotes = ["https://rubygems.org"];
1931 sha256 = "1j27vy1bmhbqcyzhxg8d07qassmax769xjalfwcwz6qfiq8cf013";
1932 type = "gem";
1933 };
1934 version = "1.0.2";
1935 };
1936 rack-protection = {
1937 dependencies = ["rack"];
1938 groups = ["default" "test"];
1939 platforms = [];
1940 source = {
1941 remotes = ["https://rubygems.org"];
1942 sha256 = "0ylx74ravz7nvnyygq0nk3v86qdzrmqxpwpayhppyy50l72rcajq";
1943 type = "gem";
1944 };
1945 version = "2.0.4";
1946 };
1947 rack-proxy = {
1948 dependencies = ["rack"];
1949 groups = ["default"];
1950 platforms = [];
1951 source = {
1952 remotes = ["https://rubygems.org"];
1953 sha256 = "1igdsim4ifyx9rfcjbxcwmf2vnxca3f8wmr2sj9j118a21g455pp";
1954 type = "gem";
1955 };
1956 version = "0.6.4";
1957 };
1958 rack-test = {
1959 dependencies = ["rack"];
1960 groups = ["default" "development" "pam_authentication" "production" "test"];
1961 platforms = [];
1962 source = {
1963 remotes = ["https://rubygems.org"];
1964 sha256 = "0rh8h376mx71ci5yklnpqqn118z3bl67nnv5k801qaqn1zs62h8m";
1965 type = "gem";
1966 };
1967 version = "1.1.0";
1968 };
1969 rails = {
1970 dependencies = ["actioncable" "actionmailer" "actionpack" "actionview" "activejob" "activemodel" "activerecord" "activestorage" "activesupport" "railties" "sprockets-rails"];
1971 groups = ["default"];
1972 platforms = [];
1973 source = {
1974 remotes = ["https://rubygems.org"];
1975 sha256 = "1307cv1p6cj350hq2mi00dfgjb77rzvlhrr3h0bjz5s0a6jgwv3p";
1976 type = "gem";
1977 };
1978 version = "5.2.1";
1979 };
1980 rails-controller-testing = {
1981 dependencies = ["actionpack" "actionview" "activesupport"];
1982 groups = ["test"];
1983 platforms = [];
1984 source = {
1985 remotes = ["https://rubygems.org"];
1986 sha256 = "16kdkk73mhhs73iz3i1i0ryjm84dadiyh817b3nh8acdi490jyhy";
1987 type = "gem";
1988 };
1989 version = "1.0.2";
1990 };
1991 rails-dom-testing = {
1992 dependencies = ["activesupport" "nokogiri"];
1993 groups = ["default" "development" "pam_authentication" "production" "test"];
1994 platforms = [];
1995 source = {
1996 remotes = ["https://rubygems.org"];
1997 sha256 = "1lfq2a7kp2x64dzzi5p4cjcbiv62vxh9lyqk2f0rqq3fkzrw8h5i";
1998 type = "gem";
1999 };
2000 version = "2.0.3";
2001 };
2002 rails-html-sanitizer = {
2003 dependencies = ["loofah"];
2004 groups = ["default" "development" "pam_authentication" "production" "test"];
2005 platforms = [];
2006 source = {
2007 remotes = ["https://rubygems.org"];
2008 sha256 = "1gv7vr5d9g2xmgpjfq4nxsqr70r9pr042r9ycqqnfvw5cz9c7jwr";
2009 type = "gem";
2010 };
2011 version = "1.0.4";
2012 };
2013 rails-i18n = {
2014 dependencies = ["i18n" "railties"];
2015 groups = ["default" "development" "test"];
2016 platforms = [];
2017 source = {
2018 remotes = ["https://rubygems.org"];
2019 sha256 = "05lkhc737a9dw0hd5ljmja0yp4cw39r3200s1r0n4bs7z1g3ka7l";
2020 type = "gem";
2021 };
2022 version = "5.1.2";
2023 };
2024 rails-settings-cached = {
2025 dependencies = ["rails"];
2026 groups = ["default"];
2027 platforms = [];
2028 source = {
2029 remotes = ["https://rubygems.org"];
2030 sha256 = "0wyhyls0aqb1iw7mnaldg39w3mnbi3anmpbvb52rjwkpj2mchhnc";
2031 type = "gem";
2032 };
2033 version = "0.6.6";
2034 };
2035 railties = {
2036 dependencies = ["actionpack" "activesupport" "method_source" "rake" "thor"];
2037 groups = ["default" "development" "pam_authentication" "production" "test"];
2038 platforms = [];
2039 source = {
2040 remotes = ["https://rubygems.org"];
2041 sha256 = "19y343dvb7vih82q2ssyhp1cirmp5sp1vpw4k5zmd1bxxkjix9qv";
2042 type = "gem";
2043 };
2044 version = "5.2.1";
2045 };
2046 rainbow = {
2047 groups = ["default" "development" "test"];
2048 platforms = [];
2049 source = {
2050 remotes = ["https://rubygems.org"];
2051 sha256 = "0bb2fpjspydr6x0s8pn1pqkzmxszvkfapv0p4627mywl7ky4zkhk";
2052 type = "gem";
2053 };
2054 version = "3.0.0";
2055 };
2056 rake = {
2057 groups = ["default" "development" "pam_authentication" "production" "test"];
2058 platforms = [];
2059 source = {
2060 remotes = ["https://rubygems.org"];
2061 sha256 = "1idi53jay34ba9j68c3mfr9wwkg3cd9qh0fn9cg42hv72c6q8dyg";
2062 type = "gem";
2063 };
2064 version = "12.3.1";
2065 };
2066 rb-fsevent = {
2067 groups = ["default" "development"];
2068 platforms = [];
2069 source = {
2070 remotes = ["https://rubygems.org"];
2071 sha256 = "1lm1k7wpz69jx7jrc92w3ggczkjyjbfziq5mg62vjnxmzs383xx8";
2072 type = "gem";
2073 };
2074 version = "0.10.3";
2075 };
2076 rb-inotify = {
2077 dependencies = ["ffi"];
2078 groups = ["default" "development"];
2079 platforms = [];
2080 source = {
2081 remotes = ["https://rubygems.org"];
2082 sha256 = "0yfsgw5n7pkpyky6a9wkf1g9jafxb0ja7gz0qw0y14fd2jnzfh71";
2083 type = "gem";
2084 };
2085 version = "0.9.10";
2086 };
2087 rdf = {
2088 dependencies = ["hamster" "link_header"];
2089 groups = ["default"];
2090 platforms = [];
2091 source = {
2092 remotes = ["https://rubygems.org"];
2093 sha256 = "0fjla68kfhxhq0hip1jjxcp2lpa2h8c6yzjmm4jizrj1amv2cidp";
2094 type = "gem";
2095 };
2096 version = "3.0.2";
2097 };
2098 rdf-normalize = {
2099 dependencies = ["rdf"];
2100 groups = ["default"];
2101 platforms = [];
2102 source = {
2103 remotes = ["https://rubygems.org"];
2104 sha256 = "0h8qk3x5frqbgb4gj9ga75ddls47x8qhghscgz82gfq76m4r45g0";
2105 type = "gem";
2106 };
2107 version = "0.3.3";
2108 };
2109 redis = {
2110 groups = ["default" "production" "test"];
2111 platforms = [];
2112 source = {
2113 remotes = ["https://rubygems.org"];
2114 sha256 = "0c2106d7rx12j1d7lnwqgd2v85xwc5raf9q0xv01qmnq2x167yxk";
2115 type = "gem";
2116 };
2117 version = "4.0.2";
2118 };
2119 redis-actionpack = {
2120 dependencies = ["actionpack" "redis-rack" "redis-store"];
2121 groups = ["default" "production"];
2122 platforms = [];
2123 source = {
2124 remotes = ["https://rubygems.org"];
2125 sha256 = "15k41gz7nygd4yydk2yd25gghya1j7q6zifk4mdrra6bwnwjbm63";
2126 type = "gem";
2127 };
2128 version = "5.0.2";
2129 };
2130 redis-activesupport = {
2131 dependencies = ["activesupport" "redis-store"];
2132 groups = ["default" "production"];
2133 platforms = [];
2134 source = {
2135 remotes = ["https://rubygems.org"];
2136 sha256 = "0rq5dhrzc1l8c7f5gx9r7mvnsk5206dfwih3yv5si5rf42nx2ay5";
2137 type = "gem";
2138 };
2139 version = "5.0.4";
2140 };
2141 redis-namespace = {
2142 dependencies = ["redis"];
2143 groups = ["default"];
2144 platforms = [];
2145 source = {
2146 remotes = ["https://rubygems.org"];
2147 sha256 = "0r7daagrjjribn098dxwbv9zivrbq2rsffbkj2ccxyn9lmjjbgah";
2148 type = "gem";
2149 };
2150 version = "1.6.0";
2151 };
2152 redis-rack = {
2153 dependencies = ["rack" "redis-store"];
2154 groups = ["default" "production"];
2155 platforms = [];
2156 source = {
2157 remotes = ["https://rubygems.org"];
2158 sha256 = "0px0wv8zripc6lrn3k0k61j6nlxda145q8sz50yvnig17wlk36gb";
2159 type = "gem";
2160 };
2161 version = "2.0.4";
2162 };
2163 redis-rails = {
2164 dependencies = ["redis-actionpack" "redis-activesupport" "redis-store"];
2165 groups = ["production"];
2166 platforms = [];
2167 source = {
2168 remotes = ["https://rubygems.org"];
2169 sha256 = "0hjvkyaw5hgz7v6fgwdk8pb966z44h1gv8jarmb0gwhkqmjnsh40";
2170 type = "gem";
2171 };
2172 version = "5.0.2";
2173 };
2174 redis-store = {
2175 dependencies = ["redis"];
2176 groups = ["default" "production"];
2177 platforms = [];
2178 source = {
2179 remotes = ["https://rubygems.org"];
2180 sha256 = "0cpg4fmqcyl8mm77l852xsidp8384a7s1mgbpki999swvq97svi4";
2181 type = "gem";
2182 };
2183 version = "1.5.0";
2184 };
2185 regexp_parser = {
2186 groups = ["default" "test"];
2187 platforms = [];
2188 source = {
2189 remotes = ["https://rubygems.org"];
2190 sha256 = "12q3m74kmdc1mdc1nfphxj1089j425cjw9fr3h9z8x1987mgzpw3";
2191 type = "gem";
2192 };
2193 version = "1.2.0";
2194 };
2195 request_store = {
2196 dependencies = ["rack"];
2197 groups = ["default" "production"];
2198 platforms = [];
2199 source = {
2200 remotes = ["https://rubygems.org"];
2201 sha256 = "1963330z03fk382fi8y231ygcbnh86m91dqlp5rh1mwy9ihzzl6d";
2202 type = "gem";
2203 };
2204 version = "1.4.1";
2205 };
2206 responders = {
2207 dependencies = ["actionpack" "railties"];
2208 groups = ["default" "pam_authentication"];
2209 platforms = [];
2210 source = {
2211 remotes = ["https://rubygems.org"];
2212 sha256 = "1rhdyyvvm26f2l3fgwdp6xasfl2y0whwgy766bhdwz697mf78zfn";
2213 type = "gem";
2214 };
2215 version = "2.4.0";
2216 };
2217 rotp = {
2218 groups = ["default"];
2219 platforms = [];
2220 source = {
2221 remotes = ["https://rubygems.org"];
2222 sha256 = "1w8d6svhq3y9y952r8cqirxvdx12zlkb7zxjb44bcbidb2sisy4d";
2223 type = "gem";
2224 };
2225 version = "2.1.2";
2226 };
2227 rpam2 = {
2228 groups = ["default" "pam_authentication"];
2229 platforms = [];
2230 source = {
2231 remotes = ["https://rubygems.org"];
2232 sha256 = "1zvli3s4z1hf2l7gyfickm5i3afjrnycc3ihbiax6ji6arpbyf33";
2233 type = "gem";
2234 };
2235 version = "4.0.2";
2236 };
2237 rqrcode = {
2238 dependencies = ["chunky_png"];
2239 groups = ["default"];
2240 platforms = [];
2241 source = {
2242 remotes = ["https://rubygems.org"];
2243 sha256 = "0h1pnnydgs032psakvg3l779w3ghbn08ajhhhw19hpmnfhrs8k0a";
2244 type = "gem";
2245 };
2246 version = "0.10.1";
2247 };
2248 rspec-core = {
2249 dependencies = ["rspec-support"];
2250 groups = ["default" "development" "test"];
2251 platforms = [];
2252 source = {
2253 remotes = ["https://rubygems.org"];
2254 sha256 = "1p1s5bnbqp3sxk67y0fh0x884jjym527r0vgmhbm81w7aq6b7l4p";
2255 type = "gem";
2256 };
2257 version = "3.8.0";
2258 };
2259 rspec-expectations = {
2260 dependencies = ["diff-lcs" "rspec-support"];
2261 groups = ["default" "development" "test"];
2262 platforms = [];
2263 source = {
2264 remotes = ["https://rubygems.org"];
2265 sha256 = "18l21hy1zdc2pgc2yb17k3n2al1khpfr0z6pijlm852iz6vj0dkm";
2266 type = "gem";
2267 };
2268 version = "3.8.2";
2269 };
2270 rspec-mocks = {
2271 dependencies = ["diff-lcs" "rspec-support"];
2272 groups = ["default" "development" "test"];
2273 platforms = [];
2274 source = {
2275 remotes = ["https://rubygems.org"];
2276 sha256 = "06y508cjqycb4yfhxmb3nxn0v9xqf17qbd46l1dh4xhncinr4fyp";
2277 type = "gem";
2278 };
2279 version = "3.8.0";
2280 };
2281 rspec-rails = {
2282 dependencies = ["actionpack" "activesupport" "railties" "rspec-core" "rspec-expectations" "rspec-mocks" "rspec-support"];
2283 groups = ["development" "test"];
2284 platforms = [];
2285 source = {
2286 remotes = ["https://rubygems.org"];
2287 sha256 = "0sqj5da2kc937j5jb18jcf0hrmmzwgj7pk62j0q3qndhc2kvx88p";
2288 type = "gem";
2289 };
2290 version = "3.8.1";
2291 };
2292 rspec-sidekiq = {
2293 dependencies = ["rspec-core" "sidekiq"];
2294 groups = ["test"];
2295 platforms = [];
2296 source = {
2297 remotes = ["https://rubygems.org"];
2298 sha256 = "0y7pbqrbc8rjszc45vg4vz9qbn8aymgcc4ribrhvm76wrfz3ksfq";
2299 type = "gem";
2300 };
2301 version = "3.0.3";
2302 };
2303 rspec-support = {
2304 groups = ["default" "development" "test"];
2305 platforms = [];
2306 source = {
2307 remotes = ["https://rubygems.org"];
2308 sha256 = "0p3m7drixrlhvj2zpc38b11x145bvm311x6f33jjcxmvcm0wq609";
2309 type = "gem";
2310 };
2311 version = "3.8.0";
2312 };
2313 rubocop = {
2314 dependencies = ["jaro_winkler" "parallel" "parser" "powerpack" "rainbow" "ruby-progressbar" "unicode-display_width"];
2315 groups = ["development"];
2316 platforms = [];
2317 source = {
2318 remotes = ["https://rubygems.org"];
2319 sha256 = "1ivk049z3mp12nc6v1wn35bsq1g7nz1i2r4xwzqf0v25hm2v7n1i";
2320 type = "gem";
2321 };
2322 version = "0.60.0";
2323 };
2324 ruby-progressbar = {
2325 groups = ["default" "development" "test"];
2326 platforms = [];
2327 source = {
2328 remotes = ["https://rubygems.org"];
2329 sha256 = "1cv2ym3rl09svw8940ny67bav7b2db4ms39i4raaqzkf59jmhglk";
2330 type = "gem";
2331 };
2332 version = "1.10.0";
2333 };
2334 ruby-saml = {
2335 dependencies = ["nokogiri"];
2336 groups = ["default"];
2337 platforms = [];
2338 source = {
2339 remotes = ["https://rubygems.org"];
2340 sha256 = "12f3mmyds4y8f7535p79xzx0wnp7rj02h1fp2x3j2hy5vrkmz2k4";
2341 type = "gem";
2342 };
2343 version = "1.9.0";
2344 };
2345 rufus-scheduler = {
2346 dependencies = ["fugit"];
2347 groups = ["default"];
2348 platforms = [];
2349 source = {
2350 remotes = ["https://rubygems.org"];
2351 sha256 = "074w41a88343cbv8ydkpl3firhvh3kbh8ppldhdmpvv2g569m32i";
2352 type = "gem";
2353 };
2354 version = "3.5.2";
2355 };
2356 safe_yaml = {
2357 groups = ["default" "test"];
2358 platforms = [];
2359 source = {
2360 remotes = ["https://rubygems.org"];
2361 sha256 = "1hly915584hyi9q9vgd968x2nsi5yag9jyf5kq60lwzi5scr7094";
2362 type = "gem";
2363 };
2364 version = "1.0.4";
2365 };
2366 sanitize = {
2367 dependencies = ["crass" "nokogiri" "nokogumbo"];
2368 groups = ["default"];
2369 platforms = [];
2370 source = {
2371 remotes = ["https://rubygems.org"];
2372 sha256 = "0rsb2gvqdh41miq7xjckidmgnjh3slvfqbp1hh4s6xfhc32r8g3s";
2373 type = "gem";
2374 };
2375 version = "5.0.0";
2376 };
2377 sass = {
2378 dependencies = ["sass-listen"];
2379 groups = ["default" "development"];
2380 platforms = [];
2381 source = {
2382 remotes = ["https://rubygems.org"];
2383 sha256 = "18c6prbw9wl8bqhb2435pd9s0lzarl3g7xf8pmyla28zblvwxmyh";
2384 type = "gem";
2385 };
2386 version = "3.6.0";
2387 };
2388 sass-listen = {
2389 dependencies = ["rb-fsevent" "rb-inotify"];
2390 groups = ["default" "development"];
2391 platforms = [];
2392 source = {
2393 remotes = ["https://rubygems.org"];
2394 sha256 = "0xw3q46cmahkgyldid5hwyiwacp590zj2vmswlll68ryvmvcp7df";
2395 type = "gem";
2396 };
2397 version = "4.0.0";
2398 };
2399 scss_lint = {
2400 dependencies = ["rake" "sass"];
2401 groups = ["development"];
2402 platforms = [];
2403 source = {
2404 remotes = ["https://rubygems.org"];
2405 sha256 = "0dv4ff1lqbgqdx99nwg059c983dhw67kvvjd21f6vf62cjx09lpn";
2406 type = "gem";
2407 };
2408 version = "0.57.1";
2409 };
2410 sidekiq = {
2411 dependencies = ["connection_pool" "rack-protection" "redis"];
2412 groups = ["default" "test"];
2413 platforms = [];
2414 source = {
2415 remotes = ["https://rubygems.org"];
2416 sha256 = "06jws6zlyxqdbpcyvdd61ylp9cxsg2h4bs2mmz3k2ah42p5xxkjp";
2417 type = "gem";
2418 };
2419 version = "5.2.2";
2420 };
2421 sidekiq-bulk = {
2422 dependencies = ["activesupport" "sidekiq"];
2423 groups = ["default"];
2424 platforms = [];
2425 source = {
2426 remotes = ["https://rubygems.org"];
2427 sha256 = "1yj2fwjygv93pr6ph5xyapgwq5vhspvg2hkv8mgf3d3ain082wbi";
2428 type = "gem";
2429 };
2430 version = "0.1.1";
2431 };
2432 sidekiq-scheduler = {
2433 dependencies = ["redis" "rufus-scheduler" "sidekiq" "tilt"];
2434 groups = ["default"];
2435 platforms = [];
2436 source = {
2437 remotes = ["https://rubygems.org"];
2438 sha256 = "1n38p1ig8rx4ndqxcsc2gyzbaaax6r16b1xkn9mgcwwfx8qd5dbw";
2439 type = "gem";
2440 };
2441 version = "3.0.0";
2442 };
2443 sidekiq-unique-jobs = {
2444 dependencies = ["sidekiq" "thor"];
2445 groups = ["default"];
2446 platforms = [];
2447 source = {
2448 remotes = ["https://rubygems.org"];
2449 sha256 = "001bmbqbibf7r3hbdkm2sjnmdw5dznnwk89f2s7wk0xhibsczkhw";
2450 type = "gem";
2451 };
2452 version = "5.0.10";
2453 };
2454 simple-navigation = {
2455 dependencies = ["activesupport"];
2456 groups = ["default"];
2457 platforms = [];
2458 source = {
2459 remotes = ["https://rubygems.org"];
2460 sha256 = "08a2s18an3br3xj5j86r33q0hrkai0y157xg67h1khdskb08yylk";
2461 type = "gem";
2462 };
2463 version = "4.0.5";
2464 };
2465 simple_form = {
2466 dependencies = ["actionpack" "activemodel"];
2467 groups = ["default"];
2468 platforms = [];
2469 source = {
2470 remotes = ["https://rubygems.org"];
2471 sha256 = "197wzz7yy4ls4ivrvnysa28hvrrwyrq9dny9jpq6d15y2v31chqh";
2472 type = "gem";
2473 };
2474 version = "4.0.1";
2475 };
2476 simplecov = {
2477 dependencies = ["docile" "json" "simplecov-html"];
2478 groups = ["test"];
2479 platforms = [];
2480 source = {
2481 remotes = ["https://rubygems.org"];
2482 sha256 = "1sfyfgf7zrp2n42v7rswkqgk3bbwk1bnsphm24y7laxv3f8z0947";
2483 type = "gem";
2484 };
2485 version = "0.16.1";
2486 };
2487 simplecov-html = {
2488 groups = ["default" "test"];
2489 platforms = [];
2490 source = {
2491 remotes = ["https://rubygems.org"];
2492 sha256 = "1lihraa4rgxk8wbfl77fy9sf0ypk31iivly8vl3w04srd7i0clzn";
2493 type = "gem";
2494 };
2495 version = "0.10.2";
2496 };
2497 sprockets = {
2498 dependencies = ["concurrent-ruby" "rack"];
2499 groups = ["default"];
2500 platforms = [];
2501 source = {
2502 remotes = ["https://rubygems.org"];
2503 sha256 = "182jw5a0fbqah5w9jancvfmjbk88h8bxdbwnl4d3q809rpxdg8ay";
2504 type = "gem";
2505 };
2506 version = "3.7.2";
2507 };
2508 sprockets-rails = {
2509 dependencies = ["actionpack" "activesupport" "sprockets"];
2510 groups = ["default"];
2511 platforms = [];
2512 source = {
2513 remotes = ["https://rubygems.org"];
2514 sha256 = "0ab42pm8p5zxpv3sfraq45b9lj39cz9mrpdirm30vywzrwwkm5p1";
2515 type = "gem";
2516 };
2517 version = "3.2.1";
2518 };
2519 sshkit = {
2520 dependencies = ["net-scp" "net-ssh"];
2521 groups = ["default" "development"];
2522 platforms = [];
2523 source = {
2524 remotes = ["https://rubygems.org"];
2525 sha256 = "1982pcckxy811gm6z9h8brkds13mrgrx8sgmdz8dq5rg1h91y0yw";
2526 type = "gem";
2527 };
2528 version = "1.17.0";
2529 };
2530 stackprof = {
2531 groups = ["development"];
2532 platforms = [];
2533 source = {
2534 remotes = ["https://rubygems.org"];
2535 sha256 = "1v7mkl4ng2is5h0glivhcjjkkj2shq1qzx9sg9shw9nn8xvg7i4w";
2536 type = "gem";
2537 };
2538 version = "0.2.12";
2539 };
2540 statsd-ruby = {
2541 groups = ["default"];
2542 platforms = [];
2543 source = {
2544 remotes = ["https://rubygems.org"];
2545 sha256 = "1qh9w1vydx96v5y04y0k2g56k9yrsgrmbxh1d7haq07wbli0a6yz";
2546 type = "gem";
2547 };
2548 version = "1.2.1";
2549 };
2550 stoplight = {
2551 groups = ["default"];
2552 platforms = [];
2553 source = {
2554 remotes = ["https://rubygems.org"];
2555 sha256 = "1c55ar2chyivz8n6xkhyq36hgpb0b7cfqfjrcyyv9sjiyrbqyhic";
2556 type = "gem";
2557 };
2558 version = "2.1.3";
2559 };
2560 streamio-ffmpeg = {
2561 dependencies = ["multi_json"];
2562 groups = ["default"];
2563 platforms = [];
2564 source = {
2565 remotes = ["https://rubygems.org"];
2566 sha256 = "1nnxizc0371vwh0k6gqjj1b7fjszydpqfz549n6qn2q1pza3894z";
2567 type = "gem";
2568 };
2569 version = "3.0.2";
2570 };
2571 strong_migrations = {
2572 dependencies = ["activerecord"];
2573 groups = ["default"];
2574 platforms = [];
2575 source = {
2576 remotes = ["https://rubygems.org"];
2577 sha256 = "0scrffkhjx14rrk5cn01vg20y3vvhzzb47a7c9wa864aq8j8kw7z";
2578 type = "gem";
2579 };
2580 version = "0.3.1";
2581 };
2582 temple = {
2583 groups = ["default"];
2584 platforms = [];
2585 source = {
2586 remotes = ["https://rubygems.org"];
2587 sha256 = "00nxf610nzi4n1i2lkby43nrnarvl89fcl6lg19406msr0k3ycmq";
2588 type = "gem";
2589 };
2590 version = "0.8.0";
2591 };
2592 terminal-table = {
2593 dependencies = ["unicode-display_width"];
2594 groups = ["default" "development" "test"];
2595 platforms = [];
2596 source = {
2597 remotes = ["https://rubygems.org"];
2598 sha256 = "1512cngw35hsmhvw4c05rscihc59mnj09m249sm9p3pik831ydqk";
2599 type = "gem";
2600 };
2601 version = "1.8.0";
2602 };
2603 terrapin = {
2604 dependencies = ["climate_control"];
2605 groups = ["default"];
2606 platforms = [];
2607 source = {
2608 remotes = ["https://rubygems.org"];
2609 sha256 = "0p18f05r0c5s70571gqig3z2ym74wx79s6rd45sprp207bqskzn9";
2610 type = "gem";
2611 };
2612 version = "0.6.0";
2613 };
2614 thor = {
2615 groups = ["default" "development" "pam_authentication" "production" "test"];
2616 platforms = [];
2617 source = {
2618 remotes = ["https://rubygems.org"];
2619 sha256 = "0nmqpyj642sk4g16nkbq6pj856adpv91lp4krwhqkh2iw63aszdl";
2620 type = "gem";
2621 };
2622 version = "0.20.0";
2623 };
2624 thread_safe = {
2625 groups = ["default" "development" "pam_authentication" "production" "test"];
2626 platforms = [];
2627 source = {
2628 remotes = ["https://rubygems.org"];
2629 sha256 = "0nmhcgq6cgz44srylra07bmaw99f5271l0dpsvl5f75m44l0gmwy";
2630 type = "gem";
2631 };
2632 version = "0.3.6";
2633 };
2634 tilt = {
2635 groups = ["default"];
2636 platforms = [];
2637 source = {
2638 remotes = ["https://rubygems.org"];
2639 sha256 = "0020mrgdf11q23hm1ddd6fv691l51vi10af00f137ilcdb2ycfra";
2640 type = "gem";
2641 };
2642 version = "2.0.8";
2643 };
2644 timers = {
2645 dependencies = ["hitimes"];
2646 groups = ["default"];
2647 platforms = [];
2648 source = {
2649 remotes = ["https://rubygems.org"];
2650 sha256 = "0wax58yagbc7876az5731fs4hxwzr567y9r48v0agmnm162199x7";
2651 type = "gem";
2652 };
2653 version = "4.1.2";
2654 };
2655 tty-color = {
2656 groups = ["default"];
2657 platforms = [];
2658 source = {
2659 remotes = ["https://rubygems.org"];
2660 sha256 = "0zz5xa6xbrj69h334d8nx7z732fz80s1a0b02b53mim95p80s7bk";
2661 type = "gem";
2662 };
2663 version = "0.4.3";
2664 };
2665 tty-command = {
2666 dependencies = ["pastel"];
2667 groups = ["default"];
2668 platforms = [];
2669 source = {
2670 remotes = ["https://rubygems.org"];
2671 sha256 = "1d1fghdvnlc8m5i36h7gswn21232k2f9z5ls73fhs9p5ryfs4vz7";
2672 type = "gem";
2673 };
2674 version = "0.8.2";
2675 };
2676 tty-cursor = {
2677 groups = ["default"];
2678 platforms = [];
2679 source = {
2680 remotes = ["https://rubygems.org"];
2681 sha256 = "1f4rsapf4apaxn11xnqrq7axgrlvn6pdlqxqb2g34jnpfh5yrk1i";
2682 type = "gem";
2683 };
2684 version = "0.6.0";
2685 };
2686 tty-prompt = {
2687 dependencies = ["necromancer" "pastel" "timers" "tty-cursor" "tty-reader"];
2688 groups = ["default"];
2689 platforms = [];
2690 source = {
2691 remotes = ["https://rubygems.org"];
2692 sha256 = "0bnrpz52ga2pwrq5lbjyh4v8v8rhliw749vgzlahzxivvyg93k70";
2693 type = "gem";
2694 };
2695 version = "0.17.1";
2696 };
2697 tty-reader = {
2698 dependencies = ["tty-cursor" "tty-screen" "wisper"];
2699 groups = ["default"];
2700 platforms = [];
2701 source = {
2702 remotes = ["https://rubygems.org"];
2703 sha256 = "0cy5yyanfgyxxy0g6abiwz2jlbxwdjavk63yjl3gbdjr1j5jgy23";
2704 type = "gem";
2705 };
2706 version = "0.4.0";
2707 };
2708 tty-screen = {
2709 groups = ["default"];
2710 platforms = [];
2711 source = {
2712 remotes = ["https://rubygems.org"];
2713 sha256 = "0azpjgyhdm8ycblnx9crq3dgb2x8yg454a13n60zfpsc0n138sw1";
2714 type = "gem";
2715 };
2716 version = "0.6.5";
2717 };
2718 twitter-text = {
2719 dependencies = ["unf"];
2720 groups = ["default"];
2721 platforms = [];
2722 source = {
2723 remotes = ["https://rubygems.org"];
2724 sha256 = "1732h7hy1k152w8wfvjsx7b79alk45i5imwd37ia4qcx8hfm3gvg";
2725 type = "gem";
2726 };
2727 version = "1.14.7";
2728 };
2729 tzinfo = {
2730 dependencies = ["thread_safe"];
2731 groups = ["default" "development" "pam_authentication" "production" "test"];
2732 platforms = [];
2733 source = {
2734 remotes = ["https://rubygems.org"];
2735 sha256 = "1fjx9j327xpkkdlxwmkl3a8wqj7i4l4jwlrv3z13mg95z9wl253z";
2736 type = "gem";
2737 };
2738 version = "1.2.5";
2739 };
2740 tzinfo-data = {
2741 dependencies = ["tzinfo"];
2742 groups = ["default"];
2743 platforms = [];
2744 source = {
2745 remotes = ["https://rubygems.org"];
2746 sha256 = "12il6cwzprzrjqv2szxwr3a5zd68q4p37vxfkv0br0c61hi2p8j9";
2747 type = "gem";
2748 };
2749 version = "1.2018.7";
2750 };
2751 unf = {
2752 dependencies = ["unf_ext"];
2753 groups = ["default"];
2754 platforms = [];
2755 source = {
2756 remotes = ["https://rubygems.org"];
2757 sha256 = "0bh2cf73i2ffh4fcpdn9ir4mhq8zi50ik0zqa1braahzadx536a9";
2758 type = "gem";
2759 };
2760 version = "0.1.4";
2761 };
2762 unf_ext = {
2763 groups = ["default"];
2764 platforms = [];
2765 source = {
2766 remotes = ["https://rubygems.org"];
2767 sha256 = "06p1i6qhy34bpb8q8ms88y6f2kz86azwm098yvcc0nyqk9y729j1";
2768 type = "gem";
2769 };
2770 version = "0.0.7.5";
2771 };
2772 unicode-display_width = {
2773 groups = ["default" "development" "test"];
2774 platforms = [];
2775 source = {
2776 remotes = ["https://rubygems.org"];
2777 sha256 = "0040bsdpcmvp8w31lqi2s9s4p4h031zv52401qidmh25cgyh4a57";
2778 type = "gem";
2779 };
2780 version = "1.4.0";
2781 };
2782 uniform_notifier = {
2783 groups = ["default" "development"];
2784 platforms = [];
2785 source = {
2786 remotes = ["https://rubygems.org"];
2787 sha256 = "1yblj2rhlabxiqkqn7v3mrk8rnkmvsp3l3mp6c3hrb08rxidssga";
2788 type = "gem";
2789 };
2790 version = "1.11.0";
2791 };
2792 warden = {
2793 dependencies = ["rack"];
2794 groups = ["default" "pam_authentication"];
2795 platforms = [];
2796 source = {
2797 remotes = ["https://rubygems.org"];
2798 sha256 = "0va966lhpylcwbqb9n151kkihx30agh0a57mwjwdxyanll4s1q12";
2799 type = "gem";
2800 };
2801 version = "1.2.7";
2802 };
2803 webmock = {
2804 dependencies = ["addressable" "crack" "hashdiff"];
2805 groups = ["test"];
2806 platforms = [];
2807 source = {
2808 remotes = ["https://rubygems.org"];
2809 sha256 = "03994dxs4xayvkxqp01dd1ivhg4xxx7z35f7cxw7y2mwj3xn24ib";
2810 type = "gem";
2811 };
2812 version = "3.4.2";
2813 };
2814 webpacker = {
2815 dependencies = ["activesupport" "rack-proxy" "railties"];
2816 groups = ["default"];
2817 platforms = [];
2818 source = {
2819 remotes = ["https://rubygems.org"];
2820 sha256 = "0bw01ihvxpy05xzz3wq6p9d3lw7n4x10ivfrh70hlrjyixmapws6";
2821 type = "gem";
2822 };
2823 version = "3.5.5";
2824 };
2825 webpush = {
2826 dependencies = ["hkdf" "jwt"];
2827 groups = ["default"];
2828 platforms = [];
2829 source = {
2830 remotes = ["https://rubygems.org"];
2831 sha256 = "0qhamsbzixns0fss77c2bdrni1lk192kbm51r2q6m6gk2iqyk0xv";
2832 type = "gem";
2833 };
2834 version = "0.3.4";
2835 };
2836 websocket-driver = {
2837 dependencies = ["websocket-extensions"];
2838 groups = ["default"];
2839 platforms = [];
2840 source = {
2841 remotes = ["https://rubygems.org"];
2842 sha256 = "1551k3fs3kkb3ghqfj3n5lps0ikb9pyrdnzmvgfdxy8574n4g1dn";
2843 type = "gem";
2844 };
2845 version = "0.7.0";
2846 };
2847 websocket-extensions = {
2848 groups = ["default"];
2849 platforms = [];
2850 source = {
2851 remotes = ["https://rubygems.org"];
2852 sha256 = "034sdr7fd34yag5l6y156rkbhiqgmy395m231dwhlpcswhs6d270";
2853 type = "gem";
2854 };
2855 version = "0.1.3";
2856 };
2857 wisper = {
2858 groups = ["default"];
2859 platforms = [];
2860 source = {
2861 remotes = ["https://rubygems.org"];
2862 sha256 = "0ar2wn3pxnffyzcmf67y67b8lnhgn9zayqhqp26jwqa3d73j71kd";
2863 type = "gem";
2864 };
2865 version = "2.0.0";
2866 };
2867 xpath = {
2868 dependencies = ["nokogiri"];
2869 groups = ["default" "test"];
2870 platforms = [];
2871 source = {
2872 remotes = ["https://rubygems.org"];
2873 sha256 = "0bh8lk9hvlpn7vmi6h4hkcwjzvs2y0cmkk3yjjdr8fxvj6fsgzbd";
2874 type = "gem";
2875 };
2876 version = "3.2.0";
2877 };
2878}
diff --git a/virtual/modules/websites/tools/mastodon/mastodon.json b/virtual/modules/websites/tools/mastodon/mastodon.json
deleted file mode 100644
index 11e59fa..0000000
--- a/virtual/modules/websites/tools/mastodon/mastodon.json
+++ /dev/null
@@ -1,15 +0,0 @@
1{
2 "tag": "v2.6.5",
3 "meta": {
4 "name": "mastodon",
5 "url": "https://github.com/tootsuite/mastodon",
6 "branch": "refs/tags/v2.6.5"
7 },
8 "github": {
9 "owner": "tootsuite",
10 "repo": "mastodon",
11 "rev": "887f9de6dc12ef405f92b94eeaa775df74ebb1ef",
12 "sha256": "0bszv3cnlqghwpkmh7qzak7wlanlp0dp5k4wxnl3acxzj72p53v5",
13 "fetchSubmodules": true
14 }
15}
diff --git a/virtual/modules/websites/tools/mastodon/mastodon.nix b/virtual/modules/websites/tools/mastodon/mastodon.nix
deleted file mode 100644
index 770aa2c..0000000
--- a/virtual/modules/websites/tools/mastodon/mastodon.nix
+++ /dev/null
@@ -1,129 +0,0 @@
1{ env, ruby_2_5, bundlerEnv, defaultGemConfig, fetchedGithub, stdenv, writeText, pkgs }:
2let
3 varDir = "/var/lib/mastodon_immae";
4 socketsDir = "/run/mastodon";
5 gems = bundlerEnv {
6 name = "mastodon-env";
7 ruby = ruby_2_5;
8 gemset = ./gemset.nix;
9 gemdir = (fetchedGithub ./mastodon.json).src;
10 groups = [ "default" "production" "test" "development" ];
11 gemConfig = defaultGemConfig // {
12 cld3 = attrs: {
13 buildInputs = with pkgs; [ protobuf protobufc pkgconfig ];
14 };
15 idn-ruby = attrs: {
16 buildInputs = with pkgs; [ libidn ];
17 };
18 rpam2 = attrs: {
19 buildInputs = with pkgs; [ pam ];
20 };
21 };
22 };
23 yarnModules = let
24 info = fetchedGithub ./mastodon.json;
25 in
26 pkgs.yarn2nix.mkYarnModules {
27 name = "mastodon-yarn-modules";
28 packageJSON = "${info.src}/package.json";
29 yarnLock = "${info.src}/yarn.lock";
30 yarnNix = ./yarn-packages.nix;
31 pkgConfig = {
32 uws = {
33 postInstall = ''
34 node-gyp rebuild > build_log.txt 2>&1 || true
35 '';
36 buildInputs = with pkgs; [ nodePackages.node-gyp ];
37 };
38 node-zopfli = {
39 postInstall = ''
40 node-pre-gyp install --fallback-to-build
41 '';
42 buildInputs = with pkgs; [ nodePackages.node-pre-gyp ];
43 };
44 node-sass = {
45 buildInputs = with pkgs; [ binutils libsass python ];
46 postInstall = let
47 nodeHeaders = pkgs.fetchurl {
48 url = "https://nodejs.org/download/release/v${pkgs.nodejs.version}/node-v${pkgs.nodejs.version}-headers.tar.gz";
49 sha256 = "12zzsf8my43b8qnlacp871ih5vqafl2vlpqp51xp6h3gckn2frwy";
50 };
51 in
52 ''
53 export AR=${pkgs.binutils.bintools}/bin/ar
54 node scripts/build.js --tarball=${nodeHeaders}
55 '';
56 };
57 };
58 };
59 mastodon = stdenv.mkDerivation (fetchedGithub ./mastodon.json // rec {
60 installPhase = ''
61 cp -a . $out
62 cp -a ${yarnModules}/node_modules $out
63 '';
64 buildInputs = [ yarnModules gems ];
65 });
66 config = writeText "mastodon_environment" ''
67 REDIS_HOST=${env.redis.host}
68 REDIS_PORT=${env.redis.port}
69 REDIS_DB=${env.redis.db}
70 DB_HOST=${env.postgresql.socket}
71 DB_USER=${env.postgresql.user}
72 DB_NAME=${env.postgresql.database}
73 DB_PASS=${env.postgresql.password}
74 DB_PORT=${env.postgresql.port}
75
76 LOCAL_DOMAIN=mastodon.immae.eu
77 LOCAL_HTTPS=true
78 ALTERNATE_DOMAINS=immae.eu
79
80 PAPERCLIP_SECRET=${env.paperclip_secret}
81 SECRET_KEY_BASE=${env.secret_key_base}
82 OTP_SECRET=${env.otp_secret}
83
84 VAPID_PRIVATE_KEY=${env.vapid.private}
85 VAPID_PUBLIC_KEY=${env.vapid.public}
86
87 SMTP_SERVER=mail.immae.eu
88 SMTP_PORT=587
89 SMTP_FROM_ADDRESS=notifications@mastodon.immae.eu
90 SMTP_DELIVERY_METHOD=smtp
91 PAPERCLIP_ROOT_PATH=${varDir}
92
93 STREAMING_CLUSTER_NUM=1
94
95 # LDAP authentication (optional)
96 LDAP_ENABLED=true
97 LDAP_HOST=ldap.immae.eu
98 LDAP_PORT=636
99 LDAP_METHOD=simple_tls
100 LDAP_BASE="dc=immae,dc=eu"
101 LDAP_BIND_DN="cn=mastodon,ou=services,dc=immae,dc=eu"
102 LDAP_PASSWORD="${env.ldap.password}"
103 LDAP_UID="uid"
104 LDAP_SEARCH_FILTER="(&(%{uid}=%{email})(memberOf=cn=users,cn=mastodon,ou=services,dc=immae,dc=eu))"
105 '';
106
107 railsRoot = stdenv.mkDerivation {
108 name = "mastodon_immae";
109 inherit config mastodon;
110 builder = writeText "build_mastodon_immae" ''
111 source $stdenv/setup
112 set -a
113 source $config
114 set +a
115 cp -a $mastodon $out
116 cd $out
117 chmod u+rwX . public
118 RAILS_ENV=production ${gems}/bin/rails assets:precompile
119 rm -rf tmp/cache
120 ln -sf ../../../../../../../${varDir}/tmp/cache tmp
121 '';
122 buildInputs = [ gems gems.ruby pkgs.nodejs pkgs.yarn ];
123 };
124in
125 {
126 inherit railsRoot config varDir socketsDir gems;
127 nodeSocket = "${socketsDir}/live_immae_node.sock";
128 railsSocket = "${socketsDir}/live_immae_puma.sock";
129 }
diff --git a/virtual/modules/websites/tools/mastodon/yarn-packages.nix b/virtual/modules/websites/tools/mastodon/yarn-packages.nix
deleted file mode 100644
index 5ef66d6..0000000
--- a/virtual/modules/websites/tools/mastodon/yarn-packages.nix
+++ /dev/null
@@ -1,12164 +0,0 @@
1{fetchurl, linkFarm}: rec {
2 offline_cache = linkFarm "offline" packages;
3 packages = [
4
5 {
6 name = "code-frame-7.0.0.tgz";
7 path = fetchurl {
8 name = "code-frame-7.0.0.tgz";
9 url = "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.0.0.tgz";
10 sha1 = "06e2ab19bdb535385559aabb5ba59729482800f8";
11 };
12 }
13
14 {
15 name = "core-7.0.1.tgz";
16 path = fetchurl {
17 name = "core-7.0.1.tgz";
18 url = "https://registry.yarnpkg.com/@babel/core/-/core-7.0.1.tgz";
19 sha1 = "406658caed0e9686fa4feb5c2f3cefb6161c0f41";
20 };
21 }
22
23 {
24 name = "generator-7.0.0.tgz";
25 path = fetchurl {
26 name = "generator-7.0.0.tgz";
27 url = "https://registry.yarnpkg.com/@babel/generator/-/generator-7.0.0.tgz";
28 sha1 = "1efd58bffa951dc846449e58ce3a1d7f02d393aa";
29 };
30 }
31
32 {
33 name = "helper-annotate-as-pure-7.0.0.tgz";
34 path = fetchurl {
35 name = "helper-annotate-as-pure-7.0.0.tgz";
36 url = "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.0.0.tgz";
37 sha1 = "323d39dd0b50e10c7c06ca7d7638e6864d8c5c32";
38 };
39 }
40
41 {
42 name = "helper-builder-binary-assignment-operator-visitor-7.0.0.tgz";
43 path = fetchurl {
44 name = "helper-builder-binary-assignment-operator-visitor-7.0.0.tgz";
45 url = "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.0.0.tgz";
46 sha1 = "ba26336beb2abb547d58b6eba5b84d77975a39eb";
47 };
48 }
49
50 {
51 name = "helper-builder-react-jsx-7.0.0.tgz";
52 path = fetchurl {
53 name = "helper-builder-react-jsx-7.0.0.tgz";
54 url = "https://registry.yarnpkg.com/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.0.0.tgz";
55 sha1 = "fa154cb53eb918cf2a9a7ce928e29eb649c5acdb";
56 };
57 }
58
59 {
60 name = "helper-call-delegate-7.0.0.tgz";
61 path = fetchurl {
62 name = "helper-call-delegate-7.0.0.tgz";
63 url = "https://registry.yarnpkg.com/@babel/helper-call-delegate/-/helper-call-delegate-7.0.0.tgz";
64 sha1 = "e036956bb33d76e59c07a04a1fff144e9f62ab78";
65 };
66 }
67
68 {
69 name = "helper-define-map-7.0.0.tgz";
70 path = fetchurl {
71 name = "helper-define-map-7.0.0.tgz";
72 url = "https://registry.yarnpkg.com/@babel/helper-define-map/-/helper-define-map-7.0.0.tgz";
73 sha1 = "a5684dd2adf30f0137cf9b0bde436f8c2db17225";
74 };
75 }
76
77 {
78 name = "helper-explode-assignable-expression-7.0.0.tgz";
79 path = fetchurl {
80 name = "helper-explode-assignable-expression-7.0.0.tgz";
81 url = "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.0.0.tgz";
82 sha1 = "fdfa4c88603ae3e954d0fc3244d5ca82fb468497";
83 };
84 }
85
86 {
87 name = "helper-function-name-7.0.0.tgz";
88 path = fetchurl {
89 name = "helper-function-name-7.0.0.tgz";
90 url = "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.0.0.tgz";
91 sha1 = "a68cc8d04420ccc663dd258f9cc41b8261efa2d4";
92 };
93 }
94
95 {
96 name = "helper-get-function-arity-7.0.0.tgz";
97 path = fetchurl {
98 name = "helper-get-function-arity-7.0.0.tgz";
99 url = "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz";
100 sha1 = "83572d4320e2a4657263734113c42868b64e49c3";
101 };
102 }
103
104 {
105 name = "helper-hoist-variables-7.0.0.tgz";
106 path = fetchurl {
107 name = "helper-hoist-variables-7.0.0.tgz";
108 url = "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.0.0.tgz";
109 sha1 = "46adc4c5e758645ae7a45deb92bab0918c23bb88";
110 };
111 }
112
113 {
114 name = "helper-member-expression-to-functions-7.0.0.tgz";
115 path = fetchurl {
116 name = "helper-member-expression-to-functions-7.0.0.tgz";
117 url = "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.0.0.tgz";
118 sha1 = "8cd14b0a0df7ff00f009e7d7a436945f47c7a16f";
119 };
120 }
121
122 {
123 name = "helper-module-imports-7.0.0.tgz";
124 path = fetchurl {
125 name = "helper-module-imports-7.0.0.tgz";
126 url = "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.0.0.tgz";
127 sha1 = "96081b7111e486da4d2cd971ad1a4fe216cc2e3d";
128 };
129 }
130
131 {
132 name = "helper-module-transforms-7.0.0.tgz";
133 path = fetchurl {
134 name = "helper-module-transforms-7.0.0.tgz";
135 url = "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.0.0.tgz";
136 sha1 = "b01ee7d543e81e8c3fc404b19c9f26acb6e4cf4c";
137 };
138 }
139
140 {
141 name = "helper-optimise-call-expression-7.0.0.tgz";
142 path = fetchurl {
143 name = "helper-optimise-call-expression-7.0.0.tgz";
144 url = "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.0.0.tgz";
145 sha1 = "a2920c5702b073c15de51106200aa8cad20497d5";
146 };
147 }
148
149 {
150 name = "helper-plugin-utils-7.0.0.tgz";
151 path = fetchurl {
152 name = "helper-plugin-utils-7.0.0.tgz";
153 url = "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0.tgz";
154 sha1 = "bbb3fbee98661c569034237cc03967ba99b4f250";
155 };
156 }
157
158 {
159 name = "helper-regex-7.0.0.tgz";
160 path = fetchurl {
161 name = "helper-regex-7.0.0.tgz";
162 url = "https://registry.yarnpkg.com/@babel/helper-regex/-/helper-regex-7.0.0.tgz";
163 sha1 = "2c1718923b57f9bbe64705ffe5640ac64d9bdb27";
164 };
165 }
166
167 {
168 name = "helper-remap-async-to-generator-7.0.0.tgz";
169 path = fetchurl {
170 name = "helper-remap-async-to-generator-7.0.0.tgz";
171 url = "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.0.0.tgz";
172 sha1 = "6512273c2feb91587822335cf913fdf680c26901";
173 };
174 }
175
176 {
177 name = "helper-replace-supers-7.0.0.tgz";
178 path = fetchurl {
179 name = "helper-replace-supers-7.0.0.tgz";
180 url = "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.0.0.tgz";
181 sha1 = "b6f21237280e0be54f591f63a464b66627ced707";
182 };
183 }
184
185 {
186 name = "helper-simple-access-7.0.0.tgz";
187 path = fetchurl {
188 name = "helper-simple-access-7.0.0.tgz";
189 url = "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.0.0.tgz";
190 sha1 = "ff36a27983ae4c27122da2f7f294dced80ecbd08";
191 };
192 }
193
194 {
195 name = "helper-split-export-declaration-7.0.0.tgz";
196 path = fetchurl {
197 name = "helper-split-export-declaration-7.0.0.tgz";
198 url = "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0.tgz";
199 sha1 = "3aae285c0311c2ab095d997b8c9a94cad547d813";
200 };
201 }
202
203 {
204 name = "helper-wrap-function-7.0.0.tgz";
205 path = fetchurl {
206 name = "helper-wrap-function-7.0.0.tgz";
207 url = "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.0.0.tgz";
208 sha1 = "1c8e42a2cfb0808e3140189dfe9490782a6fa740";
209 };
210 }
211
212 {
213 name = "helpers-7.0.0.tgz";
214 path = fetchurl {
215 name = "helpers-7.0.0.tgz";
216 url = "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.0.0.tgz";
217 sha1 = "7213388341eeb07417f44710fd7e1d00acfa6ac0";
218 };
219 }
220
221 {
222 name = "highlight-7.0.0.tgz";
223 path = fetchurl {
224 name = "highlight-7.0.0.tgz";
225 url = "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.0.0.tgz";
226 sha1 = "f710c38c8d458e6dd9a201afb637fcb781ce99e4";
227 };
228 }
229
230 {
231 name = "parser-7.0.0.tgz";
232 path = fetchurl {
233 name = "parser-7.0.0.tgz";
234 url = "https://registry.yarnpkg.com/@babel/parser/-/parser-7.0.0.tgz";
235 sha1 = "697655183394facffb063437ddf52c0277698775";
236 };
237 }
238
239 {
240 name = "plugin-proposal-async-generator-functions-7.0.0.tgz";
241 path = fetchurl {
242 name = "plugin-proposal-async-generator-functions-7.0.0.tgz";
243 url = "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.0.0.tgz";
244 sha1 = "5d1eb6b44fd388b97f964350007ab9da090b1d70";
245 };
246 }
247
248 {
249 name = "plugin-proposal-class-properties-7.0.0.tgz";
250 path = fetchurl {
251 name = "plugin-proposal-class-properties-7.0.0.tgz";
252 url = "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.0.0.tgz";
253 sha1 = "a16b5c076ba6c3d87df64d2480a380e979543731";
254 };
255 }
256
257 {
258 name = "plugin-proposal-decorators-7.0.0.tgz";
259 path = fetchurl {
260 name = "plugin-proposal-decorators-7.0.0.tgz";
261 url = "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.0.0.tgz";
262 sha1 = "33e7e683ca9f8ec3f72104ed11096839d48df502";
263 };
264 }
265
266 {
267 name = "plugin-proposal-json-strings-7.0.0.tgz";
268 path = fetchurl {
269 name = "plugin-proposal-json-strings-7.0.0.tgz";
270 url = "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.0.0.tgz";
271 sha1 = "3b4d7b5cf51e1f2e70f52351d28d44fc2970d01e";
272 };
273 }
274
275 {
276 name = "plugin-proposal-object-rest-spread-7.0.0.tgz";
277 path = fetchurl {
278 name = "plugin-proposal-object-rest-spread-7.0.0.tgz";
279 url = "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.0.0.tgz";
280 sha1 = "9a17b547f64d0676b6c9cecd4edf74a82ab85e7e";
281 };
282 }
283
284 {
285 name = "plugin-proposal-optional-catch-binding-7.0.0.tgz";
286 path = fetchurl {
287 name = "plugin-proposal-optional-catch-binding-7.0.0.tgz";
288 url = "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.0.0.tgz";
289 sha1 = "b610d928fe551ff7117d42c8bb410eec312a6425";
290 };
291 }
292
293 {
294 name = "plugin-proposal-unicode-property-regex-7.0.0.tgz";
295 path = fetchurl {
296 name = "plugin-proposal-unicode-property-regex-7.0.0.tgz";
297 url = "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.0.0.tgz";
298 sha1 = "498b39cd72536cd7c4b26177d030226eba08cd33";
299 };
300 }
301
302 {
303 name = "plugin-syntax-async-generators-7.0.0.tgz";
304 path = fetchurl {
305 name = "plugin-syntax-async-generators-7.0.0.tgz";
306 url = "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.0.0.tgz";
307 sha1 = "bf0891dcdbf59558359d0c626fdc9490e20bc13c";
308 };
309 }
310
311 {
312 name = "plugin-syntax-class-properties-7.0.0.tgz";
313 path = fetchurl {
314 name = "plugin-syntax-class-properties-7.0.0.tgz";
315 url = "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.0.0.tgz";
316 sha1 = "e051af5d300cbfbcec4a7476e37a803489881634";
317 };
318 }
319
320 {
321 name = "plugin-syntax-decorators-7.0.0.tgz";
322 path = fetchurl {
323 name = "plugin-syntax-decorators-7.0.0.tgz";
324 url = "https://registry.yarnpkg.com/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.0.0.tgz";
325 sha1 = "7e151f744e1de3ec3601f6a4c69c8662cef1b27b";
326 };
327 }
328
329 {
330 name = "plugin-syntax-dynamic-import-7.0.0.tgz";
331 path = fetchurl {
332 name = "plugin-syntax-dynamic-import-7.0.0.tgz";
333 url = "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.0.0.tgz";
334 sha1 = "6dfb7d8b6c3be14ce952962f658f3b7eb54c33ee";
335 };
336 }
337
338 {
339 name = "plugin-syntax-json-strings-7.0.0.tgz";
340 path = fetchurl {
341 name = "plugin-syntax-json-strings-7.0.0.tgz";
342 url = "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.0.0.tgz";
343 sha1 = "0d259a68090e15b383ce3710e01d5b23f3770cbd";
344 };
345 }
346
347 {
348 name = "plugin-syntax-jsx-7.0.0.tgz";
349 path = fetchurl {
350 name = "plugin-syntax-jsx-7.0.0.tgz";
351 url = "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.0.0.tgz";
352 sha1 = "034d5e2b4e14ccaea2e4c137af7e4afb39375ffd";
353 };
354 }
355
356 {
357 name = "plugin-syntax-object-rest-spread-7.0.0.tgz";
358 path = fetchurl {
359 name = "plugin-syntax-object-rest-spread-7.0.0.tgz";
360 url = "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.0.0.tgz";
361 sha1 = "37d8fbcaf216bd658ea1aebbeb8b75e88ebc549b";
362 };
363 }
364
365 {
366 name = "plugin-syntax-optional-catch-binding-7.0.0.tgz";
367 path = fetchurl {
368 name = "plugin-syntax-optional-catch-binding-7.0.0.tgz";
369 url = "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.0.0.tgz";
370 sha1 = "886f72008b3a8b185977f7cb70713b45e51ee475";
371 };
372 }
373
374 {
375 name = "plugin-transform-arrow-functions-7.0.0.tgz";
376 path = fetchurl {
377 name = "plugin-transform-arrow-functions-7.0.0.tgz";
378 url = "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.0.0.tgz";
379 sha1 = "a6c14875848c68a3b4b3163a486535ef25c7e749";
380 };
381 }
382
383 {
384 name = "plugin-transform-async-to-generator-7.0.0.tgz";
385 path = fetchurl {
386 name = "plugin-transform-async-to-generator-7.0.0.tgz";
387 url = "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.0.0.tgz";
388 sha1 = "feaf18f4bfeaf2236eea4b2d4879da83006cc8f5";
389 };
390 }
391
392 {
393 name = "plugin-transform-block-scoped-functions-7.0.0.tgz";
394 path = fetchurl {
395 name = "plugin-transform-block-scoped-functions-7.0.0.tgz";
396 url = "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.0.0.tgz";
397 sha1 = "482b3f75103927e37288b3b67b65f848e2aa0d07";
398 };
399 }
400
401 {
402 name = "plugin-transform-block-scoping-7.0.0.tgz";
403 path = fetchurl {
404 name = "plugin-transform-block-scoping-7.0.0.tgz";
405 url = "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.0.0.tgz";
406 sha1 = "1745075edffd7cdaf69fab2fb6f9694424b7e9bc";
407 };
408 }
409
410 {
411 name = "plugin-transform-classes-7.0.0.tgz";
412 path = fetchurl {
413 name = "plugin-transform-classes-7.0.0.tgz";
414 url = "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.0.0.tgz";
415 sha1 = "9e65ca401747dde99e344baea90ab50dccb4c468";
416 };
417 }
418
419 {
420 name = "plugin-transform-computed-properties-7.0.0.tgz";
421 path = fetchurl {
422 name = "plugin-transform-computed-properties-7.0.0.tgz";
423 url = "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.0.0.tgz";
424 sha1 = "2fbb8900cd3e8258f2a2ede909b90e7556185e31";
425 };
426 }
427
428 {
429 name = "plugin-transform-destructuring-7.0.0.tgz";
430 path = fetchurl {
431 name = "plugin-transform-destructuring-7.0.0.tgz";
432 url = "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.0.0.tgz";
433 sha1 = "68e911e1935dda2f06b6ccbbf184ffb024e9d43a";
434 };
435 }
436
437 {
438 name = "plugin-transform-dotall-regex-7.0.0.tgz";
439 path = fetchurl {
440 name = "plugin-transform-dotall-regex-7.0.0.tgz";
441 url = "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.0.0.tgz";
442 sha1 = "73a24da69bc3c370251f43a3d048198546115e58";
443 };
444 }
445
446 {
447 name = "plugin-transform-duplicate-keys-7.0.0.tgz";
448 path = fetchurl {
449 name = "plugin-transform-duplicate-keys-7.0.0.tgz";
450 url = "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.0.0.tgz";
451 sha1 = "a0601e580991e7cace080e4cf919cfd58da74e86";
452 };
453 }
454
455 {
456 name = "plugin-transform-exponentiation-operator-7.0.0.tgz";
457 path = fetchurl {
458 name = "plugin-transform-exponentiation-operator-7.0.0.tgz";
459 url = "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.0.0.tgz";
460 sha1 = "c51b45e090a01876f64d32b5b46c0799c85ea56c";
461 };
462 }
463
464 {
465 name = "plugin-transform-for-of-7.0.0.tgz";
466 path = fetchurl {
467 name = "plugin-transform-for-of-7.0.0.tgz";
468 url = "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.0.0.tgz";
469 sha1 = "f2ba4eadb83bd17dc3c7e9b30f4707365e1c3e39";
470 };
471 }
472
473 {
474 name = "plugin-transform-function-name-7.0.0.tgz";
475 path = fetchurl {
476 name = "plugin-transform-function-name-7.0.0.tgz";
477 url = "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.0.0.tgz";
478 sha1 = "eeda18dc22584e13c3581a68f6be4822bb1d1d81";
479 };
480 }
481
482 {
483 name = "plugin-transform-literals-7.0.0.tgz";
484 path = fetchurl {
485 name = "plugin-transform-literals-7.0.0.tgz";
486 url = "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.0.0.tgz";
487 sha1 = "2aec1d29cdd24c407359c930cdd89e914ee8ff86";
488 };
489 }
490
491 {
492 name = "plugin-transform-modules-amd-7.0.0.tgz";
493 path = fetchurl {
494 name = "plugin-transform-modules-amd-7.0.0.tgz";
495 url = "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.0.0.tgz";
496 sha1 = "2430ab73db9960c4ca89966f425b803f5d0d0468";
497 };
498 }
499
500 {
501 name = "plugin-transform-modules-commonjs-7.0.0.tgz";
502 path = fetchurl {
503 name = "plugin-transform-modules-commonjs-7.0.0.tgz";
504 url = "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.0.0.tgz";
505 sha1 = "20b906e5ab130dd8e456b694a94d9575da0fd41f";
506 };
507 }
508
509 {
510 name = "plugin-transform-modules-systemjs-7.0.0.tgz";
511 path = fetchurl {
512 name = "plugin-transform-modules-systemjs-7.0.0.tgz";
513 url = "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.0.0.tgz";
514 sha1 = "8873d876d4fee23209decc4d1feab8f198cf2df4";
515 };
516 }
517
518 {
519 name = "plugin-transform-modules-umd-7.0.0.tgz";
520 path = fetchurl {
521 name = "plugin-transform-modules-umd-7.0.0.tgz";
522 url = "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.0.0.tgz";
523 sha1 = "e7bb4f2a6cd199668964241951a25013450349be";
524 };
525 }
526
527 {
528 name = "plugin-transform-new-target-7.0.0.tgz";
529 path = fetchurl {
530 name = "plugin-transform-new-target-7.0.0.tgz";
531 url = "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.0.0.tgz";
532 sha1 = "ae8fbd89517fa7892d20e6564e641e8770c3aa4a";
533 };
534 }
535
536 {
537 name = "plugin-transform-object-super-7.0.0.tgz";
538 path = fetchurl {
539 name = "plugin-transform-object-super-7.0.0.tgz";
540 url = "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.0.0.tgz";
541 sha1 = "b8587d511309b3a0e96e9e38169908b3e392041e";
542 };
543 }
544
545 {
546 name = "plugin-transform-parameters-7.0.0.tgz";
547 path = fetchurl {
548 name = "plugin-transform-parameters-7.0.0.tgz";
549 url = "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.0.0.tgz";
550 sha1 = "da864efa111816a6df161d492f33de10e74b1949";
551 };
552 }
553
554 {
555 name = "plugin-transform-react-display-name-7.0.0.tgz";
556 path = fetchurl {
557 name = "plugin-transform-react-display-name-7.0.0.tgz";
558 url = "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.0.0.tgz";
559 sha1 = "93759e6c023782e52c2da3b75eca60d4f10533ee";
560 };
561 }
562
563 {
564 name = "plugin-transform-react-inline-elements-7.0.0.tgz";
565 path = fetchurl {
566 name = "plugin-transform-react-inline-elements-7.0.0.tgz";
567 url = "https://registry.yarnpkg.com/@babel/plugin-transform-react-inline-elements/-/plugin-transform-react-inline-elements-7.0.0.tgz";
568 sha1 = "caec13a7829b34d7eb64dfe9fc310326f74f7b05";
569 };
570 }
571
572 {
573 name = "plugin-transform-react-jsx-self-7.0.0.tgz";
574 path = fetchurl {
575 name = "plugin-transform-react-jsx-self-7.0.0.tgz";
576 url = "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.0.0.tgz";
577 sha1 = "a84bb70fea302d915ea81d9809e628266bb0bc11";
578 };
579 }
580
581 {
582 name = "plugin-transform-react-jsx-source-7.0.0.tgz";
583 path = fetchurl {
584 name = "plugin-transform-react-jsx-source-7.0.0.tgz";
585 url = "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.0.0.tgz";
586 sha1 = "28e00584f9598c0dd279f6280eee213fa0121c3c";
587 };
588 }
589
590 {
591 name = "plugin-transform-react-jsx-7.0.0.tgz";
592 path = fetchurl {
593 name = "plugin-transform-react-jsx-7.0.0.tgz";
594 url = "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.0.0.tgz";
595 sha1 = "524379e4eca5363cd10c4446ba163f093da75f3e";
596 };
597 }
598
599 {
600 name = "plugin-transform-regenerator-7.0.0.tgz";
601 path = fetchurl {
602 name = "plugin-transform-regenerator-7.0.0.tgz";
603 url = "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.0.0.tgz";
604 sha1 = "5b41686b4ed40bef874d7ed6a84bdd849c13e0c1";
605 };
606 }
607
608 {
609 name = "plugin-transform-runtime-7.0.0.tgz";
610 path = fetchurl {
611 name = "plugin-transform-runtime-7.0.0.tgz";
612 url = "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.0.0.tgz";
613 sha1 = "0f1443c07bac16dba8efa939e0c61d6922740062";
614 };
615 }
616
617 {
618 name = "plugin-transform-shorthand-properties-7.0.0.tgz";
619 path = fetchurl {
620 name = "plugin-transform-shorthand-properties-7.0.0.tgz";
621 url = "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.0.0.tgz";
622 sha1 = "85f8af592dcc07647541a0350e8c95c7bf419d15";
623 };
624 }
625
626 {
627 name = "plugin-transform-spread-7.0.0.tgz";
628 path = fetchurl {
629 name = "plugin-transform-spread-7.0.0.tgz";
630 url = "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.0.0.tgz";
631 sha1 = "93583ce48dd8c85e53f3a46056c856e4af30b49b";
632 };
633 }
634
635 {
636 name = "plugin-transform-sticky-regex-7.0.0.tgz";
637 path = fetchurl {
638 name = "plugin-transform-sticky-regex-7.0.0.tgz";
639 url = "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.0.0.tgz";
640 sha1 = "30a9d64ac2ab46eec087b8530535becd90e73366";
641 };
642 }
643
644 {
645 name = "plugin-transform-template-literals-7.0.0.tgz";
646 path = fetchurl {
647 name = "plugin-transform-template-literals-7.0.0.tgz";
648 url = "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.0.0.tgz";
649 sha1 = "084f1952efe5b153ddae69eb8945f882c7a97c65";
650 };
651 }
652
653 {
654 name = "plugin-transform-typeof-symbol-7.0.0.tgz";
655 path = fetchurl {
656 name = "plugin-transform-typeof-symbol-7.0.0.tgz";
657 url = "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.0.0.tgz";
658 sha1 = "4dcf1e52e943e5267b7313bff347fdbe0f81cec9";
659 };
660 }
661
662 {
663 name = "plugin-transform-unicode-regex-7.0.0.tgz";
664 path = fetchurl {
665 name = "plugin-transform-unicode-regex-7.0.0.tgz";
666 url = "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.0.0.tgz";
667 sha1 = "c6780e5b1863a76fe792d90eded9fcd5b51d68fc";
668 };
669 }
670
671 {
672 name = "preset-env-7.0.0.tgz";
673 path = fetchurl {
674 name = "preset-env-7.0.0.tgz";
675 url = "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.0.0.tgz";
676 sha1 = "f450f200c14e713f98cb14d113bf0c2cfbb89ca9";
677 };
678 }
679
680 {
681 name = "preset-react-7.0.0.tgz";
682 path = fetchurl {
683 name = "preset-react-7.0.0.tgz";
684 url = "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.0.0.tgz";
685 sha1 = "e86b4b3d99433c7b3e9e91747e2653958bc6b3c0";
686 };
687 }
688
689 {
690 name = "runtime-7.0.0.tgz";
691 path = fetchurl {
692 name = "runtime-7.0.0.tgz";
693 url = "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.0.0.tgz";
694 sha1 = "adeb78fedfc855aa05bc041640f3f6f98e85424c";
695 };
696 }
697
698 {
699 name = "runtime-7.0.0-rc.1.tgz";
700 path = fetchurl {
701 name = "runtime-7.0.0-rc.1.tgz";
702 url = "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.0.0-rc.1.tgz";
703 sha1 = "42f36fc5817911c89ea75da2b874054922967616";
704 };
705 }
706
707 {
708 name = "template-7.0.0.tgz";
709 path = fetchurl {
710 name = "template-7.0.0.tgz";
711 url = "https://registry.yarnpkg.com/@babel/template/-/template-7.0.0.tgz";
712 sha1 = "c2bc9870405959c89a9c814376a2ecb247838c80";
713 };
714 }
715
716 {
717 name = "traverse-7.0.0.tgz";
718 path = fetchurl {
719 name = "traverse-7.0.0.tgz";
720 url = "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.0.0.tgz";
721 sha1 = "b1fe9b6567fdf3ab542cfad6f3b31f854d799a61";
722 };
723 }
724
725 {
726 name = "types-7.0.0.tgz";
727 path = fetchurl {
728 name = "types-7.0.0.tgz";
729 url = "https://registry.yarnpkg.com/@babel/types/-/types-7.0.0.tgz";
730 sha1 = "6e191793d3c854d19c6749989e3bc55f0e962118";
731 };
732 }
733
734 {
735 name = "convert-colors-1.4.0.tgz";
736 path = fetchurl {
737 name = "convert-colors-1.4.0.tgz";
738 url = "https://registry.yarnpkg.com/@csstools/convert-colors/-/convert-colors-1.4.0.tgz";
739 sha1 = "ad495dc41b12e75d588c6db8b9834f08fa131eb7";
740 };
741 }
742
743 {
744 name = "postcss-image-set-function-1.0.0.tgz";
745 path = fetchurl {
746 name = "postcss-image-set-function-1.0.0.tgz";
747 url = "https://registry.yarnpkg.com/@csstools/postcss-image-set-function/-/postcss-image-set-function-1.0.0.tgz";
748 sha1 = "1ef0913d90a9c4440495eb41624c202e53a703f3";
749 };
750 }
751
752 {
753 name = "sass-import-resolve-1.0.0.tgz";
754 path = fetchurl {
755 name = "sass-import-resolve-1.0.0.tgz";
756 url = "https://registry.yarnpkg.com/@csstools/sass-import-resolve/-/sass-import-resolve-1.0.0.tgz";
757 sha1 = "32c3cdb2f7af3cd8f0dca357b592e7271f3831b5";
758 };
759 }
760
761 {
762 name = "node-10.9.4.tgz";
763 path = fetchurl {
764 name = "node-10.9.4.tgz";
765 url = "https://registry.yarnpkg.com/@types/node/-/node-10.9.4.tgz";
766 sha1 = "0f4cb2dc7c1de6096055357f70179043c33e9897";
767 };
768 }
769
770 {
771 name = "react-16.4.6.tgz";
772 path = fetchurl {
773 name = "react-16.4.6.tgz";
774 url = "https://registry.yarnpkg.com/@types/react/-/react-16.4.6.tgz";
775 sha1 = "5024957c6bcef4f02823accf5974faba2e54fada";
776 };
777 }
778
779 {
780 name = "ast-1.7.6.tgz";
781 path = fetchurl {
782 name = "ast-1.7.6.tgz";
783 url = "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.7.6.tgz";
784 sha1 = "3ef8c45b3e5e943a153a05281317474fef63e21e";
785 };
786 }
787
788 {
789 name = "floating-point-hex-parser-1.7.6.tgz";
790 path = fetchurl {
791 name = "floating-point-hex-parser-1.7.6.tgz";
792 url = "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.7.6.tgz";
793 sha1 = "7cb37d51a05c3fe09b464ae7e711d1ab3837801f";
794 };
795 }
796
797 {
798 name = "helper-api-error-1.7.6.tgz";
799 path = fetchurl {
800 name = "helper-api-error-1.7.6.tgz";
801 url = "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.7.6.tgz";
802 sha1 = "99b7e30e66f550a2638299a109dda84a622070ef";
803 };
804 }
805
806 {
807 name = "helper-buffer-1.7.6.tgz";
808 path = fetchurl {
809 name = "helper-buffer-1.7.6.tgz";
810 url = "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.7.6.tgz";
811 sha1 = "ba0648be12bbe560c25c997e175c2018df39ca3e";
812 };
813 }
814
815 {
816 name = "helper-code-frame-1.7.6.tgz";
817 path = fetchurl {
818 name = "helper-code-frame-1.7.6.tgz";
819 url = "https://registry.yarnpkg.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.7.6.tgz";
820 sha1 = "5a94d21b0057b69a7403fca0c253c3aaca95b1a5";
821 };
822 }
823
824 {
825 name = "helper-fsm-1.7.6.tgz";
826 path = fetchurl {
827 name = "helper-fsm-1.7.6.tgz";
828 url = "https://registry.yarnpkg.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.7.6.tgz";
829 sha1 = "ae1741c6f6121213c7a0b587fb964fac492d3e49";
830 };
831 }
832
833 {
834 name = "helper-module-context-1.7.6.tgz";
835 path = fetchurl {
836 name = "helper-module-context-1.7.6.tgz";
837 url = "https://registry.yarnpkg.com/@webassemblyjs/helper-module-context/-/helper-module-context-1.7.6.tgz";
838 sha1 = "116d19a51a6cebc8900ad53ca34ff8269c668c23";
839 };
840 }
841
842 {
843 name = "helper-wasm-bytecode-1.7.6.tgz";
844 path = fetchurl {
845 name = "helper-wasm-bytecode-1.7.6.tgz";
846 url = "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.7.6.tgz";
847 sha1 = "98e515eaee611aa6834eb5f6a7f8f5b29fefb6f1";
848 };
849 }
850
851 {
852 name = "helper-wasm-section-1.7.6.tgz";
853 path = fetchurl {
854 name = "helper-wasm-section-1.7.6.tgz";
855 url = "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.7.6.tgz";
856 sha1 = "783835867bdd686df7a95377ab64f51a275e8333";
857 };
858 }
859
860 {
861 name = "ieee754-1.7.6.tgz";
862 path = fetchurl {
863 name = "ieee754-1.7.6.tgz";
864 url = "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.7.6.tgz";
865 sha1 = "c34fc058f2f831fae0632a8bb9803cf2d3462eb1";
866 };
867 }
868
869 {
870 name = "leb128-1.7.6.tgz";
871 path = fetchurl {
872 name = "leb128-1.7.6.tgz";
873 url = "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.7.6.tgz";
874 sha1 = "197f75376a29f6ed6ace15898a310d871d92f03b";
875 };
876 }
877
878 {
879 name = "utf8-1.7.6.tgz";
880 path = fetchurl {
881 name = "utf8-1.7.6.tgz";
882 url = "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.7.6.tgz";
883 sha1 = "eb62c66f906af2be70de0302e29055d25188797d";
884 };
885 }
886
887 {
888 name = "wasm-edit-1.7.6.tgz";
889 path = fetchurl {
890 name = "wasm-edit-1.7.6.tgz";
891 url = "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.7.6.tgz";
892 sha1 = "fa41929160cd7d676d4c28ecef420eed5b3733c5";
893 };
894 }
895
896 {
897 name = "wasm-gen-1.7.6.tgz";
898 path = fetchurl {
899 name = "wasm-gen-1.7.6.tgz";
900 url = "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.7.6.tgz";
901 sha1 = "695ac38861ab3d72bf763c8c75e5f087ffabc322";
902 };
903 }
904
905 {
906 name = "wasm-opt-1.7.6.tgz";
907 path = fetchurl {
908 name = "wasm-opt-1.7.6.tgz";
909 url = "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.7.6.tgz";
910 sha1 = "fbafa78e27e1a75ab759a4b658ff3d50b4636c21";
911 };
912 }
913
914 {
915 name = "wasm-parser-1.7.6.tgz";
916 path = fetchurl {
917 name = "wasm-parser-1.7.6.tgz";
918 url = "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.7.6.tgz";
919 sha1 = "84eafeeff405ad6f4c4b5777d6a28ae54eed51fe";
920 };
921 }
922
923 {
924 name = "wast-parser-1.7.6.tgz";
925 path = fetchurl {
926 name = "wast-parser-1.7.6.tgz";
927 url = "https://registry.yarnpkg.com/@webassemblyjs/wast-parser/-/wast-parser-1.7.6.tgz";
928 sha1 = "ca4d20b1516e017c91981773bd7e819d6bd9c6a7";
929 };
930 }
931
932 {
933 name = "wast-printer-1.7.6.tgz";
934 path = fetchurl {
935 name = "wast-printer-1.7.6.tgz";
936 url = "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.7.6.tgz";
937 sha1 = "a6002c526ac5fa230fe2c6d2f1bdbf4aead43a5e";
938 };
939 }
940
941 {
942 name = "ieee754-1.2.0.tgz";
943 path = fetchurl {
944 name = "ieee754-1.2.0.tgz";
945 url = "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz";
946 sha1 = "eef014a3145ae477a1cbc00cd1e552336dceb790";
947 };
948 }
949
950 {
951 name = "long-4.2.1.tgz";
952 path = fetchurl {
953 name = "long-4.2.1.tgz";
954 url = "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.1.tgz";
955 sha1 = "5c85d662f76fa1d34575766c5dcd6615abcd30d8";
956 };
957 }
958
959 {
960 name = "abab-2.0.0.tgz";
961 path = fetchurl {
962 name = "abab-2.0.0.tgz";
963 url = "https://registry.yarnpkg.com/abab/-/abab-2.0.0.tgz";
964 sha1 = "aba0ab4c5eee2d4c79d3487d85450fb2376ebb0f";
965 };
966 }
967
968 {
969 name = "abbrev-1.1.1.tgz";
970 path = fetchurl {
971 name = "abbrev-1.1.1.tgz";
972 url = "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz";
973 sha1 = "f8f2c887ad10bf67f634f005b6987fed3179aac8";
974 };
975 }
976
977 {
978 name = "accepts-1.3.5.tgz";
979 path = fetchurl {
980 name = "accepts-1.3.5.tgz";
981 url = "https://registry.yarnpkg.com/accepts/-/accepts-1.3.5.tgz";
982 sha1 = "eb777df6011723a3b14e8a72c0805c8e86746bd2";
983 };
984 }
985
986 {
987 name = "acorn-dynamic-import-3.0.0.tgz";
988 path = fetchurl {
989 name = "acorn-dynamic-import-3.0.0.tgz";
990 url = "https://registry.yarnpkg.com/acorn-dynamic-import/-/acorn-dynamic-import-3.0.0.tgz";
991 sha1 = "901ceee4c7faaef7e07ad2a47e890675da50a278";
992 };
993 }
994
995 {
996 name = "acorn-globals-4.1.0.tgz";
997 path = fetchurl {
998 name = "acorn-globals-4.1.0.tgz";
999 url = "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-4.1.0.tgz";
1000 sha1 = "ab716025dbe17c54d3ef81d32ece2b2d99fe2538";
1001 };
1002 }
1003
1004 {
1005 name = "acorn-jsx-3.0.1.tgz";
1006 path = fetchurl {
1007 name = "acorn-jsx-3.0.1.tgz";
1008 url = "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-3.0.1.tgz";
1009 sha1 = "afdf9488fb1ecefc8348f6fb22f464e32a58b36b";
1010 };
1011 }
1012
1013 {
1014 name = "acorn-3.3.0.tgz";
1015 path = fetchurl {
1016 name = "acorn-3.3.0.tgz";
1017 url = "http://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz";
1018 sha1 = "45e37fb39e8da3f25baee3ff5369e2bb5f22017a";
1019 };
1020 }
1021
1022 {
1023 name = "acorn-5.7.3.tgz";
1024 path = fetchurl {
1025 name = "acorn-5.7.3.tgz";
1026 url = "https://registry.yarnpkg.com/acorn/-/acorn-5.7.3.tgz";
1027 sha1 = "67aa231bf8812974b85235a96771eb6bd07ea279";
1028 };
1029 }
1030
1031 {
1032 name = "ajv-errors-1.0.0.tgz";
1033 path = fetchurl {
1034 name = "ajv-errors-1.0.0.tgz";
1035 url = "https://registry.yarnpkg.com/ajv-errors/-/ajv-errors-1.0.0.tgz";
1036 sha1 = "ecf021fa108fd17dfb5e6b383f2dd233e31ffc59";
1037 };
1038 }
1039
1040 {
1041 name = "ajv-keywords-2.1.1.tgz";
1042 path = fetchurl {
1043 name = "ajv-keywords-2.1.1.tgz";
1044 url = "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-2.1.1.tgz";
1045 sha1 = "617997fc5f60576894c435f940d819e135b80762";
1046 };
1047 }
1048
1049 {
1050 name = "ajv-keywords-3.2.0.tgz";
1051 path = fetchurl {
1052 name = "ajv-keywords-3.2.0.tgz";
1053 url = "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.2.0.tgz";
1054 sha1 = "e86b819c602cf8821ad637413698f1dec021847a";
1055 };
1056 }
1057
1058 {
1059 name = "ajv-4.11.8.tgz";
1060 path = fetchurl {
1061 name = "ajv-4.11.8.tgz";
1062 url = "https://registry.yarnpkg.com/ajv/-/ajv-4.11.8.tgz";
1063 sha1 = "82ffb02b29e662ae53bdc20af15947706739c536";
1064 };
1065 }
1066
1067 {
1068 name = "ajv-5.5.2.tgz";
1069 path = fetchurl {
1070 name = "ajv-5.5.2.tgz";
1071 url = "https://registry.yarnpkg.com/ajv/-/ajv-5.5.2.tgz";
1072 sha1 = "73b5eeca3fab653e3d3f9422b341ad42205dc965";
1073 };
1074 }
1075
1076 {
1077 name = "ajv-6.5.3.tgz";
1078 path = fetchurl {
1079 name = "ajv-6.5.3.tgz";
1080 url = "https://registry.yarnpkg.com/ajv/-/ajv-6.5.3.tgz";
1081 sha1 = "71a569d189ecf4f4f321224fecb166f071dd90f9";
1082 };
1083 }
1084
1085 {
1086 name = "amdefine-1.0.1.tgz";
1087 path = fetchurl {
1088 name = "amdefine-1.0.1.tgz";
1089 url = "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz";
1090 sha1 = "4a5282ac164729e93619bcfd3ad151f817ce91f5";
1091 };
1092 }
1093
1094 {
1095 name = "ansi-colors-3.0.5.tgz";
1096 path = fetchurl {
1097 name = "ansi-colors-3.0.5.tgz";
1098 url = "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.0.5.tgz";
1099 sha1 = "cb9dc64993b64fd6945485f797fc3853137d9a7b";
1100 };
1101 }
1102
1103 {
1104 name = "ansi-escapes-3.1.0.tgz";
1105 path = fetchurl {
1106 name = "ansi-escapes-3.1.0.tgz";
1107 url = "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.1.0.tgz";
1108 sha1 = "f73207bb81207d75fd6c83f125af26eea378ca30";
1109 };
1110 }
1111
1112 {
1113 name = "ansi-html-0.0.7.tgz";
1114 path = fetchurl {
1115 name = "ansi-html-0.0.7.tgz";
1116 url = "https://registry.yarnpkg.com/ansi-html/-/ansi-html-0.0.7.tgz";
1117 sha1 = "813584021962a9e9e6fd039f940d12f56ca7859e";
1118 };
1119 }
1120
1121 {
1122 name = "ansi-regex-2.1.1.tgz";
1123 path = fetchurl {
1124 name = "ansi-regex-2.1.1.tgz";
1125 url = "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz";
1126 sha1 = "c3b33ab5ee360d86e0e628f0468ae7ef27d654df";
1127 };
1128 }
1129
1130 {
1131 name = "ansi-regex-3.0.0.tgz";
1132 path = fetchurl {
1133 name = "ansi-regex-3.0.0.tgz";
1134 url = "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz";
1135 sha1 = "ed0317c322064f79466c02966bddb605ab37d998";
1136 };
1137 }
1138
1139 {
1140 name = "ansi-styles-2.2.1.tgz";
1141 path = fetchurl {
1142 name = "ansi-styles-2.2.1.tgz";
1143 url = "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz";
1144 sha1 = "b432dd3358b634cf75e1e4664368240533c1ddbe";
1145 };
1146 }
1147
1148 {
1149 name = "ansi-styles-3.2.1.tgz";
1150 path = fetchurl {
1151 name = "ansi-styles-3.2.1.tgz";
1152 url = "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz";
1153 sha1 = "41fbb20243e50b12be0f04b8dedbf07520ce841d";
1154 };
1155 }
1156
1157 {
1158 name = "any-promise-0.1.0.tgz";
1159 path = fetchurl {
1160 name = "any-promise-0.1.0.tgz";
1161 url = "https://registry.yarnpkg.com/any-promise/-/any-promise-0.1.0.tgz";
1162 sha1 = "830b680aa7e56f33451d4b049f3bd8044498ee27";
1163 };
1164 }
1165
1166 {
1167 name = "anymatch-2.0.0.tgz";
1168 path = fetchurl {
1169 name = "anymatch-2.0.0.tgz";
1170 url = "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz";
1171 sha1 = "bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb";
1172 };
1173 }
1174
1175 {
1176 name = "append-transform-0.4.0.tgz";
1177 path = fetchurl {
1178 name = "append-transform-0.4.0.tgz";
1179 url = "https://registry.yarnpkg.com/append-transform/-/append-transform-0.4.0.tgz";
1180 sha1 = "d76ebf8ca94d276e247a36bad44a4b74ab611991";
1181 };
1182 }
1183
1184 {
1185 name = "aproba-1.2.0.tgz";
1186 path = fetchurl {
1187 name = "aproba-1.2.0.tgz";
1188 url = "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz";
1189 sha1 = "6802e6264efd18c790a1b0d517f0f2627bf2c94a";
1190 };
1191 }
1192
1193 {
1194 name = "are-we-there-yet-1.1.5.tgz";
1195 path = fetchurl {
1196 name = "are-we-there-yet-1.1.5.tgz";
1197 url = "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz";
1198 sha1 = "4b35c2944f062a8bfcda66410760350fe9ddfc21";
1199 };
1200 }
1201
1202 {
1203 name = "argparse-1.0.10.tgz";
1204 path = fetchurl {
1205 name = "argparse-1.0.10.tgz";
1206 url = "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz";
1207 sha1 = "bcd6791ea5ae09725e17e5ad988134cd40b3d911";
1208 };
1209 }
1210
1211 {
1212 name = "aria-query-3.0.0.tgz";
1213 path = fetchurl {
1214 name = "aria-query-3.0.0.tgz";
1215 url = "https://registry.yarnpkg.com/aria-query/-/aria-query-3.0.0.tgz";
1216 sha1 = "65b3fcc1ca1155a8c9ae64d6eee297f15d5133cc";
1217 };
1218 }
1219
1220 {
1221 name = "arr-diff-2.0.0.tgz";
1222 path = fetchurl {
1223 name = "arr-diff-2.0.0.tgz";
1224 url = "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz";
1225 sha1 = "8f3b827f955a8bd669697e4a4256ac3ceae356cf";
1226 };
1227 }
1228
1229 {
1230 name = "arr-diff-4.0.0.tgz";
1231 path = fetchurl {
1232 name = "arr-diff-4.0.0.tgz";
1233 url = "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz";
1234 sha1 = "d6461074febfec71e7e15235761a329a5dc7c520";
1235 };
1236 }
1237
1238 {
1239 name = "arr-flatten-1.1.0.tgz";
1240 path = fetchurl {
1241 name = "arr-flatten-1.1.0.tgz";
1242 url = "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz";
1243 sha1 = "36048bbff4e7b47e136644316c99669ea5ae91f1";
1244 };
1245 }
1246
1247 {
1248 name = "arr-union-3.1.0.tgz";
1249 path = fetchurl {
1250 name = "arr-union-3.1.0.tgz";
1251 url = "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz";
1252 sha1 = "e39b09aea9def866a8f206e288af63919bae39c4";
1253 };
1254 }
1255
1256 {
1257 name = "array-equal-1.0.0.tgz";
1258 path = fetchurl {
1259 name = "array-equal-1.0.0.tgz";
1260 url = "https://registry.yarnpkg.com/array-equal/-/array-equal-1.0.0.tgz";
1261 sha1 = "8c2a5ef2472fd9ea742b04c77a75093ba2757c93";
1262 };
1263 }
1264
1265 {
1266 name = "array-find-index-1.0.2.tgz";
1267 path = fetchurl {
1268 name = "array-find-index-1.0.2.tgz";
1269 url = "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz";
1270 sha1 = "df010aa1287e164bbda6f9723b0a96a1ec4187a1";
1271 };
1272 }
1273
1274 {
1275 name = "array-flatten-1.1.1.tgz";
1276 path = fetchurl {
1277 name = "array-flatten-1.1.1.tgz";
1278 url = "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz";
1279 sha1 = "9a5f699051b1e7073328f2a008968b64ea2955d2";
1280 };
1281 }
1282
1283 {
1284 name = "array-flatten-2.1.1.tgz";
1285 path = fetchurl {
1286 name = "array-flatten-2.1.1.tgz";
1287 url = "https://registry.yarnpkg.com/array-flatten/-/array-flatten-2.1.1.tgz";
1288 sha1 = "426bb9da84090c1838d812c8150af20a8331e296";
1289 };
1290 }
1291
1292 {
1293 name = "array-includes-3.0.3.tgz";
1294 path = fetchurl {
1295 name = "array-includes-3.0.3.tgz";
1296 url = "https://registry.yarnpkg.com/array-includes/-/array-includes-3.0.3.tgz";
1297 sha1 = "184b48f62d92d7452bb31b323165c7f8bd02266d";
1298 };
1299 }
1300
1301 {
1302 name = "array-union-1.0.2.tgz";
1303 path = fetchurl {
1304 name = "array-union-1.0.2.tgz";
1305 url = "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz";
1306 sha1 = "9a34410e4f4e3da23dea375be5be70f24778ec39";
1307 };
1308 }
1309
1310 {
1311 name = "array-uniq-1.0.3.tgz";
1312 path = fetchurl {
1313 name = "array-uniq-1.0.3.tgz";
1314 url = "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz";
1315 sha1 = "af6ac877a25cc7f74e058894753858dfdb24fdb6";
1316 };
1317 }
1318
1319 {
1320 name = "array-unique-0.2.1.tgz";
1321 path = fetchurl {
1322 name = "array-unique-0.2.1.tgz";
1323 url = "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz";
1324 sha1 = "a1d97ccafcbc2625cc70fadceb36a50c58b01a53";
1325 };
1326 }
1327
1328 {
1329 name = "array-unique-0.3.2.tgz";
1330 path = fetchurl {
1331 name = "array-unique-0.3.2.tgz";
1332 url = "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz";
1333 sha1 = "a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428";
1334 };
1335 }
1336
1337 {
1338 name = "array.prototype.flat-1.2.1.tgz";
1339 path = fetchurl {
1340 name = "array.prototype.flat-1.2.1.tgz";
1341 url = "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.2.1.tgz";
1342 sha1 = "812db8f02cad24d3fab65dd67eabe3b8903494a4";
1343 };
1344 }
1345
1346 {
1347 name = "arrify-1.0.1.tgz";
1348 path = fetchurl {
1349 name = "arrify-1.0.1.tgz";
1350 url = "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz";
1351 sha1 = "898508da2226f380df904728456849c1501a4b0d";
1352 };
1353 }
1354
1355 {
1356 name = "asap-2.0.6.tgz";
1357 path = fetchurl {
1358 name = "asap-2.0.6.tgz";
1359 url = "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz";
1360 sha1 = "e50347611d7e690943208bbdafebcbc2fb866d46";
1361 };
1362 }
1363
1364 {
1365 name = "asn1.js-4.10.1.tgz";
1366 path = fetchurl {
1367 name = "asn1.js-4.10.1.tgz";
1368 url = "https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.10.1.tgz";
1369 sha1 = "b9c2bf5805f1e64aadeed6df3a2bfafb5a73f5a0";
1370 };
1371 }
1372
1373 {
1374 name = "asn1-0.2.4.tgz";
1375 path = fetchurl {
1376 name = "asn1-0.2.4.tgz";
1377 url = "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz";
1378 sha1 = "8d2475dfab553bb33e77b54e59e880bb8ce23136";
1379 };
1380 }
1381
1382 {
1383 name = "assert-plus-1.0.0.tgz";
1384 path = fetchurl {
1385 name = "assert-plus-1.0.0.tgz";
1386 url = "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz";
1387 sha1 = "f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525";
1388 };
1389 }
1390
1391 {
1392 name = "assert-plus-0.2.0.tgz";
1393 path = fetchurl {
1394 name = "assert-plus-0.2.0.tgz";
1395 url = "https://registry.yarnpkg.com/assert-plus/-/assert-plus-0.2.0.tgz";
1396 sha1 = "d74e1b87e7affc0db8aadb7021f3fe48101ab234";
1397 };
1398 }
1399
1400 {
1401 name = "assert-1.4.1.tgz";
1402 path = fetchurl {
1403 name = "assert-1.4.1.tgz";
1404 url = "https://registry.yarnpkg.com/assert/-/assert-1.4.1.tgz";
1405 sha1 = "99912d591836b5a6f5b345c0f07eefc08fc65d91";
1406 };
1407 }
1408
1409 {
1410 name = "assign-symbols-1.0.0.tgz";
1411 path = fetchurl {
1412 name = "assign-symbols-1.0.0.tgz";
1413 url = "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz";
1414 sha1 = "59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367";
1415 };
1416 }
1417
1418 {
1419 name = "ast-types-flow-0.0.7.tgz";
1420 path = fetchurl {
1421 name = "ast-types-flow-0.0.7.tgz";
1422 url = "https://registry.yarnpkg.com/ast-types-flow/-/ast-types-flow-0.0.7.tgz";
1423 sha1 = "f70b735c6bca1a5c9c22d982c3e39e7feba3bdad";
1424 };
1425 }
1426
1427 {
1428 name = "astral-regex-1.0.0.tgz";
1429 path = fetchurl {
1430 name = "astral-regex-1.0.0.tgz";
1431 url = "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz";
1432 sha1 = "6c8c3fb827dd43ee3918f27b82782ab7658a6fd9";
1433 };
1434 }
1435
1436 {
1437 name = "async-each-1.0.1.tgz";
1438 path = fetchurl {
1439 name = "async-each-1.0.1.tgz";
1440 url = "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz";
1441 sha1 = "19d386a1d9edc6e7c1c85d388aedbcc56d33602d";
1442 };
1443 }
1444
1445 {
1446 name = "async-foreach-0.1.3.tgz";
1447 path = fetchurl {
1448 name = "async-foreach-0.1.3.tgz";
1449 url = "https://registry.yarnpkg.com/async-foreach/-/async-foreach-0.1.3.tgz";
1450 sha1 = "36121f845c0578172de419a97dbeb1d16ec34542";
1451 };
1452 }
1453
1454 {
1455 name = "async-limiter-1.0.0.tgz";
1456 path = fetchurl {
1457 name = "async-limiter-1.0.0.tgz";
1458 url = "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.0.tgz";
1459 sha1 = "78faed8c3d074ab81f22b4e985d79e8738f720f8";
1460 };
1461 }
1462
1463 {
1464 name = "async-1.5.2.tgz";
1465 path = fetchurl {
1466 name = "async-1.5.2.tgz";
1467 url = "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz";
1468 sha1 = "ec6a61ae56480c0c3cb241c95618e20892f9672a";
1469 };
1470 }
1471
1472 {
1473 name = "async-2.6.1.tgz";
1474 path = fetchurl {
1475 name = "async-2.6.1.tgz";
1476 url = "https://registry.yarnpkg.com/async/-/async-2.6.1.tgz";
1477 sha1 = "b245a23ca71930044ec53fa46aa00a3e87c6a610";
1478 };
1479 }
1480
1481 {
1482 name = "asynckit-0.4.0.tgz";
1483 path = fetchurl {
1484 name = "asynckit-0.4.0.tgz";
1485 url = "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz";
1486 sha1 = "c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79";
1487 };
1488 }
1489
1490 {
1491 name = "atob-2.1.2.tgz";
1492 path = fetchurl {
1493 name = "atob-2.1.2.tgz";
1494 url = "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz";
1495 sha1 = "6d9517eb9e030d2436666651e86bd9f6f13533c9";
1496 };
1497 }
1498
1499 {
1500 name = "autoprefixer-8.6.5.tgz";
1501 path = fetchurl {
1502 name = "autoprefixer-8.6.5.tgz";
1503 url = "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-8.6.5.tgz";
1504 sha1 = "343f3d193ed568b3208e00117a1b96eb691d4ee9";
1505 };
1506 }
1507
1508 {
1509 name = "aws-sign2-0.6.0.tgz";
1510 path = fetchurl {
1511 name = "aws-sign2-0.6.0.tgz";
1512 url = "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.6.0.tgz";
1513 sha1 = "14342dd38dbcc94d0e5b87d763cd63612c0e794f";
1514 };
1515 }
1516
1517 {
1518 name = "aws-sign2-0.7.0.tgz";
1519 path = fetchurl {
1520 name = "aws-sign2-0.7.0.tgz";
1521 url = "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz";
1522 sha1 = "b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8";
1523 };
1524 }
1525
1526 {
1527 name = "aws4-1.8.0.tgz";
1528 path = fetchurl {
1529 name = "aws4-1.8.0.tgz";
1530 url = "https://registry.yarnpkg.com/aws4/-/aws4-1.8.0.tgz";
1531 sha1 = "f0e003d9ca9e7f59c7a508945d7b2ef9a04a542f";
1532 };
1533 }
1534
1535 {
1536 name = "axios-0.16.2.tgz";
1537 path = fetchurl {
1538 name = "axios-0.16.2.tgz";
1539 url = "https://registry.yarnpkg.com/axios/-/axios-0.16.2.tgz";
1540 sha1 = "ba4f92f17167dfbab40983785454b9ac149c3c6d";
1541 };
1542 }
1543
1544 {
1545 name = "axobject-query-2.0.1.tgz";
1546 path = fetchurl {
1547 name = "axobject-query-2.0.1.tgz";
1548 url = "https://registry.yarnpkg.com/axobject-query/-/axobject-query-2.0.1.tgz";
1549 sha1 = "05dfa705ada8ad9db993fa6896f22d395b0b0a07";
1550 };
1551 }
1552
1553 {
1554 name = "babel-code-frame-6.26.0.tgz";
1555 path = fetchurl {
1556 name = "babel-code-frame-6.26.0.tgz";
1557 url = "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz";
1558 sha1 = "63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b";
1559 };
1560 }
1561
1562 {
1563 name = "babel-core-6.26.3.tgz";
1564 path = fetchurl {
1565 name = "babel-core-6.26.3.tgz";
1566 url = "https://registry.yarnpkg.com/babel-core/-/babel-core-6.26.3.tgz";
1567 sha1 = "b2e2f09e342d0f0c88e2f02e067794125e75c207";
1568 };
1569 }
1570
1571 {
1572 name = "babel-core-7.0.0-bridge.0.tgz";
1573 path = fetchurl {
1574 name = "babel-core-7.0.0-bridge.0.tgz";
1575 url = "https://registry.yarnpkg.com/babel-core/-/babel-core-7.0.0-bridge.0.tgz";
1576 sha1 = "95a492ddd90f9b4e9a4a1da14eb335b87b634ece";
1577 };
1578 }
1579
1580 {
1581 name = "babel-eslint-9.0.0.tgz";
1582 path = fetchurl {
1583 name = "babel-eslint-9.0.0.tgz";
1584 url = "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-9.0.0.tgz";
1585 sha1 = "7d9445f81ed9f60aff38115f838970df9f2b6220";
1586 };
1587 }
1588
1589 {
1590 name = "babel-generator-6.26.1.tgz";
1591 path = fetchurl {
1592 name = "babel-generator-6.26.1.tgz";
1593 url = "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.26.1.tgz";
1594 sha1 = "1844408d3b8f0d35a404ea7ac180f087a601bd90";
1595 };
1596 }
1597
1598 {
1599 name = "babel-helpers-6.24.1.tgz";
1600 path = fetchurl {
1601 name = "babel-helpers-6.24.1.tgz";
1602 url = "https://registry.yarnpkg.com/babel-helpers/-/babel-helpers-6.24.1.tgz";
1603 sha1 = "3471de9caec388e5c850e597e58a26ddf37602b2";
1604 };
1605 }
1606
1607 {
1608 name = "babel-jest-23.6.0.tgz";
1609 path = fetchurl {
1610 name = "babel-jest-23.6.0.tgz";
1611 url = "https://registry.yarnpkg.com/babel-jest/-/babel-jest-23.6.0.tgz";
1612 sha1 = "a644232366557a2240a0c083da6b25786185a2f1";
1613 };
1614 }
1615
1616 {
1617 name = "babel-loader-8.0.2.tgz";
1618 path = fetchurl {
1619 name = "babel-loader-8.0.2.tgz";
1620 url = "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.0.2.tgz";
1621 sha1 = "2079b8ec1628284a929241da3d90f5b3de2a5ae5";
1622 };
1623 }
1624
1625 {
1626 name = "babel-messages-6.23.0.tgz";
1627 path = fetchurl {
1628 name = "babel-messages-6.23.0.tgz";
1629 url = "https://registry.yarnpkg.com/babel-messages/-/babel-messages-6.23.0.tgz";
1630 sha1 = "f3cdf4703858035b2a2951c6ec5edf6c62f2630e";
1631 };
1632 }
1633
1634 {
1635 name = "babel-plugin-istanbul-4.1.6.tgz";
1636 path = fetchurl {
1637 name = "babel-plugin-istanbul-4.1.6.tgz";
1638 url = "http://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-4.1.6.tgz";
1639 sha1 = "36c59b2192efce81c5b378321b74175add1c9a45";
1640 };
1641 }
1642
1643 {
1644 name = "babel-plugin-jest-hoist-23.2.0.tgz";
1645 path = fetchurl {
1646 name = "babel-plugin-jest-hoist-23.2.0.tgz";
1647 url = "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-23.2.0.tgz";
1648 sha1 = "e61fae05a1ca8801aadee57a6d66b8cefaf44167";
1649 };
1650 }
1651
1652 {
1653 name = "babel-plugin-lodash-3.3.4.tgz";
1654 path = fetchurl {
1655 name = "babel-plugin-lodash-3.3.4.tgz";
1656 url = "https://registry.yarnpkg.com/babel-plugin-lodash/-/babel-plugin-lodash-3.3.4.tgz";
1657 sha1 = "4f6844358a1340baed182adbeffa8df9967bc196";
1658 };
1659 }
1660
1661 {
1662 name = "babel-plugin-macros-2.4.0.tgz";
1663 path = fetchurl {
1664 name = "babel-plugin-macros-2.4.0.tgz";
1665 url = "https://registry.yarnpkg.com/babel-plugin-macros/-/babel-plugin-macros-2.4.0.tgz";
1666 sha1 = "6c5f9836e1f6c0a9743b3bab4af29f73e437e544";
1667 };
1668 }
1669
1670 {
1671 name = "babel-plugin-preval-3.0.1.tgz";
1672 path = fetchurl {
1673 name = "babel-plugin-preval-3.0.1.tgz";
1674 url = "https://registry.yarnpkg.com/babel-plugin-preval/-/babel-plugin-preval-3.0.1.tgz";
1675 sha1 = "a26f9690114a864a54a5cbdf865496ebf541a9c3";
1676 };
1677 }
1678
1679 {
1680 name = "babel-plugin-react-intl-3.0.0.tgz";
1681 path = fetchurl {
1682 name = "babel-plugin-react-intl-3.0.0.tgz";
1683 url = "https://registry.yarnpkg.com/babel-plugin-react-intl/-/babel-plugin-react-intl-3.0.0.tgz";
1684 sha1 = "ea2152b1fe0a36be33b89f8cc8b961b8fd4cfaf8";
1685 };
1686 }
1687
1688 {
1689 name = "babel-plugin-syntax-object-rest-spread-6.13.0.tgz";
1690 path = fetchurl {
1691 name = "babel-plugin-syntax-object-rest-spread-6.13.0.tgz";
1692 url = "http://registry.npmjs.org/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz";
1693 sha1 = "fd6536f2bce13836ffa3a5458c4903a597bb3bf5";
1694 };
1695 }
1696
1697 {
1698 name = "babel-plugin-transform-react-remove-prop-types-0.4.15.tgz";
1699 path = fetchurl {
1700 name = "babel-plugin-transform-react-remove-prop-types-0.4.15.tgz";
1701 url = "https://registry.yarnpkg.com/babel-plugin-transform-react-remove-prop-types/-/babel-plugin-transform-react-remove-prop-types-0.4.15.tgz";
1702 sha1 = "7ba830e77276a0e788cd58ea527b5f70396e12a7";
1703 };
1704 }
1705
1706 {
1707 name = "babel-preset-jest-23.2.0.tgz";
1708 path = fetchurl {
1709 name = "babel-preset-jest-23.2.0.tgz";
1710 url = "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-23.2.0.tgz";
1711 sha1 = "8ec7a03a138f001a1a8fb1e8113652bf1a55da46";
1712 };
1713 }
1714
1715 {
1716 name = "babel-register-6.26.0.tgz";
1717 path = fetchurl {
1718 name = "babel-register-6.26.0.tgz";
1719 url = "https://registry.yarnpkg.com/babel-register/-/babel-register-6.26.0.tgz";
1720 sha1 = "6ed021173e2fcb486d7acb45c6009a856f647071";
1721 };
1722 }
1723
1724 {
1725 name = "babel-runtime-6.26.0.tgz";
1726 path = fetchurl {
1727 name = "babel-runtime-6.26.0.tgz";
1728 url = "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz";
1729 sha1 = "965c7058668e82b55d7bfe04ff2337bc8b5647fe";
1730 };
1731 }
1732
1733 {
1734 name = "babel-template-6.26.0.tgz";
1735 path = fetchurl {
1736 name = "babel-template-6.26.0.tgz";
1737 url = "https://registry.yarnpkg.com/babel-template/-/babel-template-6.26.0.tgz";
1738 sha1 = "de03e2d16396b069f46dd9fff8521fb1a0e35e02";
1739 };
1740 }
1741
1742 {
1743 name = "babel-traverse-6.26.0.tgz";
1744 path = fetchurl {
1745 name = "babel-traverse-6.26.0.tgz";
1746 url = "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.26.0.tgz";
1747 sha1 = "46a9cbd7edcc62c8e5c064e2d2d8d0f4035766ee";
1748 };
1749 }
1750
1751 {
1752 name = "babel-types-6.26.0.tgz";
1753 path = fetchurl {
1754 name = "babel-types-6.26.0.tgz";
1755 url = "https://registry.yarnpkg.com/babel-types/-/babel-types-6.26.0.tgz";
1756 sha1 = "a3b073f94ab49eb6fa55cd65227a334380632497";
1757 };
1758 }
1759
1760 {
1761 name = "babylon-6.18.0.tgz";
1762 path = fetchurl {
1763 name = "babylon-6.18.0.tgz";
1764 url = "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz";
1765 sha1 = "af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3";
1766 };
1767 }
1768
1769 {
1770 name = "backoff-2.5.0.tgz";
1771 path = fetchurl {
1772 name = "backoff-2.5.0.tgz";
1773 url = "https://registry.yarnpkg.com/backoff/-/backoff-2.5.0.tgz";
1774 sha1 = "f616eda9d3e4b66b8ca7fca79f695722c5f8e26f";
1775 };
1776 }
1777
1778 {
1779 name = "balanced-match-0.4.2.tgz";
1780 path = fetchurl {
1781 name = "balanced-match-0.4.2.tgz";
1782 url = "https://registry.yarnpkg.com/balanced-match/-/balanced-match-0.4.2.tgz";
1783 sha1 = "cb3f3e3c732dc0f01ee70b403f302e61d7709838";
1784 };
1785 }
1786
1787 {
1788 name = "balanced-match-1.0.0.tgz";
1789 path = fetchurl {
1790 name = "balanced-match-1.0.0.tgz";
1791 url = "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz";
1792 sha1 = "89b4d199ab2bee49de164ea02b89ce462d71b767";
1793 };
1794 }
1795
1796 {
1797 name = "base64-js-1.3.0.tgz";
1798 path = fetchurl {
1799 name = "base64-js-1.3.0.tgz";
1800 url = "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.0.tgz";
1801 sha1 = "cab1e6118f051095e58b5281aea8c1cd22bfc0e3";
1802 };
1803 }
1804
1805 {
1806 name = "base-0.11.2.tgz";
1807 path = fetchurl {
1808 name = "base-0.11.2.tgz";
1809 url = "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz";
1810 sha1 = "7bde5ced145b6d551a90db87f83c558b4eb48a8f";
1811 };
1812 }
1813
1814 {
1815 name = "batch-0.6.1.tgz";
1816 path = fetchurl {
1817 name = "batch-0.6.1.tgz";
1818 url = "https://registry.yarnpkg.com/batch/-/batch-0.6.1.tgz";
1819 sha1 = "dc34314f4e679318093fc760272525f94bf25c16";
1820 };
1821 }
1822
1823 {
1824 name = "bcrypt-pbkdf-1.0.2.tgz";
1825 path = fetchurl {
1826 name = "bcrypt-pbkdf-1.0.2.tgz";
1827 url = "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz";
1828 sha1 = "a4301d389b6a43f9b67ff3ca11a3f6637e360e9e";
1829 };
1830 }
1831
1832 {
1833 name = "bfj-node4-5.3.1.tgz";
1834 path = fetchurl {
1835 name = "bfj-node4-5.3.1.tgz";
1836 url = "https://registry.yarnpkg.com/bfj-node4/-/bfj-node4-5.3.1.tgz";
1837 sha1 = "e23d8b27057f1d0214fc561142ad9db998f26830";
1838 };
1839 }
1840
1841 {
1842 name = "big.js-3.2.0.tgz";
1843 path = fetchurl {
1844 name = "big.js-3.2.0.tgz";
1845 url = "https://registry.yarnpkg.com/big.js/-/big.js-3.2.0.tgz";
1846 sha1 = "a5fc298b81b9e0dca2e458824784b65c52ba588e";
1847 };
1848 }
1849
1850 {
1851 name = "binary-extensions-1.11.0.tgz";
1852 path = fetchurl {
1853 name = "binary-extensions-1.11.0.tgz";
1854 url = "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.11.0.tgz";
1855 sha1 = "46aa1751fb6a2f93ee5e689bb1087d4b14c6c205";
1856 };
1857 }
1858
1859 {
1860 name = "block-stream-0.0.9.tgz";
1861 path = fetchurl {
1862 name = "block-stream-0.0.9.tgz";
1863 url = "https://registry.yarnpkg.com/block-stream/-/block-stream-0.0.9.tgz";
1864 sha1 = "13ebfe778a03205cfe03751481ebb4b3300c126a";
1865 };
1866 }
1867
1868 {
1869 name = "bluebird-3.5.2.tgz";
1870 path = fetchurl {
1871 name = "bluebird-3.5.2.tgz";
1872 url = "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.2.tgz";
1873 sha1 = "1be0908e054a751754549c270489c1505d4ab15a";
1874 };
1875 }
1876
1877 {
1878 name = "bn.js-4.11.8.tgz";
1879 path = fetchurl {
1880 name = "bn.js-4.11.8.tgz";
1881 url = "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.8.tgz";
1882 sha1 = "2cde09eb5ee341f484746bb0309b3253b1b1442f";
1883 };
1884 }
1885
1886 {
1887 name = "body-parser-1.18.2.tgz";
1888 path = fetchurl {
1889 name = "body-parser-1.18.2.tgz";
1890 url = "https://registry.yarnpkg.com/body-parser/-/body-parser-1.18.2.tgz";
1891 sha1 = "87678a19d84b47d859b83199bd59bce222b10454";
1892 };
1893 }
1894
1895 {
1896 name = "bonjour-3.5.0.tgz";
1897 path = fetchurl {
1898 name = "bonjour-3.5.0.tgz";
1899 url = "https://registry.yarnpkg.com/bonjour/-/bonjour-3.5.0.tgz";
1900 sha1 = "8e890a183d8ee9a2393b3844c691a42bcf7bc9f5";
1901 };
1902 }
1903
1904 {
1905 name = "boolbase-1.0.0.tgz";
1906 path = fetchurl {
1907 name = "boolbase-1.0.0.tgz";
1908 url = "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz";
1909 sha1 = "68dff5fbe60c51eb37725ea9e3ed310dcc1e776e";
1910 };
1911 }
1912
1913 {
1914 name = "boom-2.10.1.tgz";
1915 path = fetchurl {
1916 name = "boom-2.10.1.tgz";
1917 url = "https://registry.yarnpkg.com/boom/-/boom-2.10.1.tgz";
1918 sha1 = "39c8918ceff5799f83f9492a848f625add0c766f";
1919 };
1920 }
1921
1922 {
1923 name = "brace-expansion-1.1.11.tgz";
1924 path = fetchurl {
1925 name = "brace-expansion-1.1.11.tgz";
1926 url = "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz";
1927 sha1 = "3c7fcbf529d87226f3d2f52b966ff5271eb441dd";
1928 };
1929 }
1930
1931 {
1932 name = "braces-1.8.5.tgz";
1933 path = fetchurl {
1934 name = "braces-1.8.5.tgz";
1935 url = "https://registry.yarnpkg.com/braces/-/braces-1.8.5.tgz";
1936 sha1 = "ba77962e12dff969d6b76711e914b737857bf6a7";
1937 };
1938 }
1939
1940 {
1941 name = "braces-2.3.2.tgz";
1942 path = fetchurl {
1943 name = "braces-2.3.2.tgz";
1944 url = "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz";
1945 sha1 = "5979fd3f14cd531565e5fa2df1abfff1dfaee729";
1946 };
1947 }
1948
1949 {
1950 name = "brorand-1.1.0.tgz";
1951 path = fetchurl {
1952 name = "brorand-1.1.0.tgz";
1953 url = "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz";
1954 sha1 = "12c25efe40a45e3c323eb8675a0a0ce57b22371f";
1955 };
1956 }
1957
1958 {
1959 name = "browser-process-hrtime-0.1.2.tgz";
1960 path = fetchurl {
1961 name = "browser-process-hrtime-0.1.2.tgz";
1962 url = "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-0.1.2.tgz";
1963 sha1 = "425d68a58d3447f02a04aa894187fce8af8b7b8e";
1964 };
1965 }
1966
1967 {
1968 name = "browser-resolve-1.11.3.tgz";
1969 path = fetchurl {
1970 name = "browser-resolve-1.11.3.tgz";
1971 url = "https://registry.yarnpkg.com/browser-resolve/-/browser-resolve-1.11.3.tgz";
1972 sha1 = "9b7cbb3d0f510e4cb86bdbd796124d28b5890af6";
1973 };
1974 }
1975
1976 {
1977 name = "browserify-aes-1.2.0.tgz";
1978 path = fetchurl {
1979 name = "browserify-aes-1.2.0.tgz";
1980 url = "http://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz";
1981 sha1 = "326734642f403dabc3003209853bb70ad428ef48";
1982 };
1983 }
1984
1985 {
1986 name = "browserify-cipher-1.0.1.tgz";
1987 path = fetchurl {
1988 name = "browserify-cipher-1.0.1.tgz";
1989 url = "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.1.tgz";
1990 sha1 = "8d6474c1b870bfdabcd3bcfcc1934a10e94f15f0";
1991 };
1992 }
1993
1994 {
1995 name = "browserify-des-1.0.2.tgz";
1996 path = fetchurl {
1997 name = "browserify-des-1.0.2.tgz";
1998 url = "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.2.tgz";
1999 sha1 = "3af4f1f59839403572f1c66204375f7a7f703e9c";
2000 };
2001 }
2002
2003 {
2004 name = "browserify-rsa-4.0.1.tgz";
2005 path = fetchurl {
2006 name = "browserify-rsa-4.0.1.tgz";
2007 url = "http://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz";
2008 sha1 = "21e0abfaf6f2029cf2fafb133567a701d4135524";
2009 };
2010 }
2011
2012 {
2013 name = "browserify-sign-4.0.4.tgz";
2014 path = fetchurl {
2015 name = "browserify-sign-4.0.4.tgz";
2016 url = "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.0.4.tgz";
2017 sha1 = "aa4eb68e5d7b658baa6bf6a57e630cbd7a93d298";
2018 };
2019 }
2020
2021 {
2022 name = "browserify-zlib-0.2.0.tgz";
2023 path = fetchurl {
2024 name = "browserify-zlib-0.2.0.tgz";
2025 url = "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.2.0.tgz";
2026 sha1 = "2869459d9aa3be245fe8fe2ca1f46e2e7f54d73f";
2027 };
2028 }
2029
2030 {
2031 name = "browserslist-3.2.8.tgz";
2032 path = fetchurl {
2033 name = "browserslist-3.2.8.tgz";
2034 url = "https://registry.yarnpkg.com/browserslist/-/browserslist-3.2.8.tgz";
2035 sha1 = "b0005361d6471f0f5952797a76fc985f1f978fc6";
2036 };
2037 }
2038
2039 {
2040 name = "browserslist-4.1.1.tgz";
2041 path = fetchurl {
2042 name = "browserslist-4.1.1.tgz";
2043 url = "https://registry.yarnpkg.com/browserslist/-/browserslist-4.1.1.tgz";
2044 sha1 = "328eb4ff1215b12df6589e9ab82f8adaa4fc8cd6";
2045 };
2046 }
2047
2048 {
2049 name = "bser-2.0.0.tgz";
2050 path = fetchurl {
2051 name = "bser-2.0.0.tgz";
2052 url = "https://registry.yarnpkg.com/bser/-/bser-2.0.0.tgz";
2053 sha1 = "9ac78d3ed5d915804fd87acb158bc797147a1719";
2054 };
2055 }
2056
2057 {
2058 name = "buffer-from-1.1.1.tgz";
2059 path = fetchurl {
2060 name = "buffer-from-1.1.1.tgz";
2061 url = "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz";
2062 sha1 = "32713bc028f75c02fdb710d7c7bcec1f2c6070ef";
2063 };
2064 }
2065
2066 {
2067 name = "buffer-indexof-1.1.1.tgz";
2068 path = fetchurl {
2069 name = "buffer-indexof-1.1.1.tgz";
2070 url = "https://registry.yarnpkg.com/buffer-indexof/-/buffer-indexof-1.1.1.tgz";
2071 sha1 = "52fabcc6a606d1a00302802648ef68f639da268c";
2072 };
2073 }
2074
2075 {
2076 name = "buffer-writer-1.0.1.tgz";
2077 path = fetchurl {
2078 name = "buffer-writer-1.0.1.tgz";
2079 url = "https://registry.yarnpkg.com/buffer-writer/-/buffer-writer-1.0.1.tgz";
2080 sha1 = "22a936901e3029afcd7547eb4487ceb697a3bf08";
2081 };
2082 }
2083
2084 {
2085 name = "buffer-xor-1.0.3.tgz";
2086 path = fetchurl {
2087 name = "buffer-xor-1.0.3.tgz";
2088 url = "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz";
2089 sha1 = "26e61ed1422fb70dd42e6e36729ed51d855fe8d9";
2090 };
2091 }
2092
2093 {
2094 name = "buffer-4.9.1.tgz";
2095 path = fetchurl {
2096 name = "buffer-4.9.1.tgz";
2097 url = "http://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz";
2098 sha1 = "6d1bb601b07a4efced97094132093027c95bc298";
2099 };
2100 }
2101
2102 {
2103 name = "builtin-modules-1.1.1.tgz";
2104 path = fetchurl {
2105 name = "builtin-modules-1.1.1.tgz";
2106 url = "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz";
2107 sha1 = "270f076c5a72c02f5b65a47df94c5fe3a278892f";
2108 };
2109 }
2110
2111 {
2112 name = "builtin-status-codes-3.0.0.tgz";
2113 path = fetchurl {
2114 name = "builtin-status-codes-3.0.0.tgz";
2115 url = "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz";
2116 sha1 = "85982878e21b98e1c66425e03d0174788f569ee8";
2117 };
2118 }
2119
2120 {
2121 name = "bytes-3.0.0.tgz";
2122 path = fetchurl {
2123 name = "bytes-3.0.0.tgz";
2124 url = "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz";
2125 sha1 = "d32815404d689699f85a4ea4fa8755dd13a96048";
2126 };
2127 }
2128
2129 {
2130 name = "cacache-10.0.4.tgz";
2131 path = fetchurl {
2132 name = "cacache-10.0.4.tgz";
2133 url = "https://registry.yarnpkg.com/cacache/-/cacache-10.0.4.tgz";
2134 sha1 = "6452367999eff9d4188aefd9a14e9d7c6a263460";
2135 };
2136 }
2137
2138 {
2139 name = "cacache-11.2.0.tgz";
2140 path = fetchurl {
2141 name = "cacache-11.2.0.tgz";
2142 url = "https://registry.yarnpkg.com/cacache/-/cacache-11.2.0.tgz";
2143 sha1 = "617bdc0b02844af56310e411c0878941d5739965";
2144 };
2145 }
2146
2147 {
2148 name = "cache-base-1.0.1.tgz";
2149 path = fetchurl {
2150 name = "cache-base-1.0.1.tgz";
2151 url = "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz";
2152 sha1 = "0a7f46416831c8b662ee36fe4e7c59d76f666ab2";
2153 };
2154 }
2155
2156 {
2157 name = "caller-path-0.1.0.tgz";
2158 path = fetchurl {
2159 name = "caller-path-0.1.0.tgz";
2160 url = "https://registry.yarnpkg.com/caller-path/-/caller-path-0.1.0.tgz";
2161 sha1 = "94085ef63581ecd3daa92444a8fe94e82577751f";
2162 };
2163 }
2164
2165 {
2166 name = "callsites-0.2.0.tgz";
2167 path = fetchurl {
2168 name = "callsites-0.2.0.tgz";
2169 url = "https://registry.yarnpkg.com/callsites/-/callsites-0.2.0.tgz";
2170 sha1 = "afab96262910a7f33c19a5775825c69f34e350ca";
2171 };
2172 }
2173
2174 {
2175 name = "callsites-2.0.0.tgz";
2176 path = fetchurl {
2177 name = "callsites-2.0.0.tgz";
2178 url = "https://registry.yarnpkg.com/callsites/-/callsites-2.0.0.tgz";
2179 sha1 = "06eb84f00eea413da86affefacbffb36093b3c50";
2180 };
2181 }
2182
2183 {
2184 name = "camelcase-keys-2.1.0.tgz";
2185 path = fetchurl {
2186 name = "camelcase-keys-2.1.0.tgz";
2187 url = "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-2.1.0.tgz";
2188 sha1 = "308beeaffdf28119051efa1d932213c91b8f92e7";
2189 };
2190 }
2191
2192 {
2193 name = "camelcase-2.1.1.tgz";
2194 path = fetchurl {
2195 name = "camelcase-2.1.1.tgz";
2196 url = "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz";
2197 sha1 = "7c1d16d679a1bbe59ca02cacecfb011e201f5a1f";
2198 };
2199 }
2200
2201 {
2202 name = "camelcase-3.0.0.tgz";
2203 path = fetchurl {
2204 name = "camelcase-3.0.0.tgz";
2205 url = "https://registry.yarnpkg.com/camelcase/-/camelcase-3.0.0.tgz";
2206 sha1 = "32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a";
2207 };
2208 }
2209
2210 {
2211 name = "camelcase-4.1.0.tgz";
2212 path = fetchurl {
2213 name = "camelcase-4.1.0.tgz";
2214 url = "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz";
2215 sha1 = "d545635be1e33c542649c69173e5de6acfae34dd";
2216 };
2217 }
2218
2219 {
2220 name = "caniuse-lite-1.0.30000885.tgz";
2221 path = fetchurl {
2222 name = "caniuse-lite-1.0.30000885.tgz";
2223 url = "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000885.tgz";
2224 sha1 = "e889e9f8e7e50e769f2a49634c932b8aee622984";
2225 };
2226 }
2227
2228 {
2229 name = "capture-exit-1.2.0.tgz";
2230 path = fetchurl {
2231 name = "capture-exit-1.2.0.tgz";
2232 url = "https://registry.yarnpkg.com/capture-exit/-/capture-exit-1.2.0.tgz";
2233 sha1 = "1c5fcc489fd0ab00d4f1ac7ae1072e3173fbab6f";
2234 };
2235 }
2236
2237 {
2238 name = "caseless-0.12.0.tgz";
2239 path = fetchurl {
2240 name = "caseless-0.12.0.tgz";
2241 url = "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz";
2242 sha1 = "1b681c21ff84033c826543090689420d187151dc";
2243 };
2244 }
2245
2246 {
2247 name = "chalk-1.1.3.tgz";
2248 path = fetchurl {
2249 name = "chalk-1.1.3.tgz";
2250 url = "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz";
2251 sha1 = "a8115c55e4a702fe4d150abd3872822a7e09fc98";
2252 };
2253 }
2254
2255 {
2256 name = "chalk-2.4.1.tgz";
2257 path = fetchurl {
2258 name = "chalk-2.4.1.tgz";
2259 url = "https://registry.yarnpkg.com/chalk/-/chalk-2.4.1.tgz";
2260 sha1 = "18c49ab16a037b6eb0152cc83e3471338215b66e";
2261 };
2262 }
2263
2264 {
2265 name = "chardet-0.4.2.tgz";
2266 path = fetchurl {
2267 name = "chardet-0.4.2.tgz";
2268 url = "https://registry.yarnpkg.com/chardet/-/chardet-0.4.2.tgz";
2269 sha1 = "b5473b33dc97c424e5d98dc87d55d4d8a29c8bf2";
2270 };
2271 }
2272
2273 {
2274 name = "chardet-0.7.0.tgz";
2275 path = fetchurl {
2276 name = "chardet-0.7.0.tgz";
2277 url = "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz";
2278 sha1 = "90094849f0937f2eedc2425d0d28a9e5f0cbad9e";
2279 };
2280 }
2281
2282 {
2283 name = "check-types-7.4.0.tgz";
2284 path = fetchurl {
2285 name = "check-types-7.4.0.tgz";
2286 url = "https://registry.yarnpkg.com/check-types/-/check-types-7.4.0.tgz";
2287 sha1 = "0378ec1b9616ec71f774931a3c6516fad8c152f4";
2288 };
2289 }
2290
2291 {
2292 name = "cheerio-1.0.0-rc.2.tgz";
2293 path = fetchurl {
2294 name = "cheerio-1.0.0-rc.2.tgz";
2295 url = "https://registry.yarnpkg.com/cheerio/-/cheerio-1.0.0-rc.2.tgz";
2296 sha1 = "4b9f53a81b27e4d5dac31c0ffd0cfa03cc6830db";
2297 };
2298 }
2299
2300 {
2301 name = "chokidar-2.0.4.tgz";
2302 path = fetchurl {
2303 name = "chokidar-2.0.4.tgz";
2304 url = "https://registry.yarnpkg.com/chokidar/-/chokidar-2.0.4.tgz";
2305 sha1 = "356ff4e2b0e8e43e322d18a372460bbcf3accd26";
2306 };
2307 }
2308
2309 {
2310 name = "chownr-1.0.1.tgz";
2311 path = fetchurl {
2312 name = "chownr-1.0.1.tgz";
2313 url = "https://registry.yarnpkg.com/chownr/-/chownr-1.0.1.tgz";
2314 sha1 = "e2a75042a9551908bebd25b8523d5f9769d79181";
2315 };
2316 }
2317
2318 {
2319 name = "chrome-trace-event-1.0.0.tgz";
2320 path = fetchurl {
2321 name = "chrome-trace-event-1.0.0.tgz";
2322 url = "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.0.tgz";
2323 sha1 = "45a91bd2c20c9411f0963b5aaeb9a1b95e09cc48";
2324 };
2325 }
2326
2327 {
2328 name = "ci-info-1.5.1.tgz";
2329 path = fetchurl {
2330 name = "ci-info-1.5.1.tgz";
2331 url = "https://registry.yarnpkg.com/ci-info/-/ci-info-1.5.1.tgz";
2332 sha1 = "17e8eb5de6f8b2b6038f0cbb714d410bfa9f3030";
2333 };
2334 }
2335
2336 {
2337 name = "cipher-base-1.0.4.tgz";
2338 path = fetchurl {
2339 name = "cipher-base-1.0.4.tgz";
2340 url = "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz";
2341 sha1 = "8760e4ecc272f4c363532f926d874aae2c1397de";
2342 };
2343 }
2344
2345 {
2346 name = "circular-json-0.3.3.tgz";
2347 path = fetchurl {
2348 name = "circular-json-0.3.3.tgz";
2349 url = "https://registry.yarnpkg.com/circular-json/-/circular-json-0.3.3.tgz";
2350 sha1 = "815c99ea84f6809529d2f45791bdf82711352d66";
2351 };
2352 }
2353
2354 {
2355 name = "class-utils-0.3.6.tgz";
2356 path = fetchurl {
2357 name = "class-utils-0.3.6.tgz";
2358 url = "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz";
2359 sha1 = "f93369ae8b9a7ce02fd41faad0ca83033190c463";
2360 };
2361 }
2362
2363 {
2364 name = "classnames-2.2.6.tgz";
2365 path = fetchurl {
2366 name = "classnames-2.2.6.tgz";
2367 url = "https://registry.yarnpkg.com/classnames/-/classnames-2.2.6.tgz";
2368 sha1 = "43935bffdd291f326dad0a205309b38d00f650ce";
2369 };
2370 }
2371
2372 {
2373 name = "cli-cursor-2.1.0.tgz";
2374 path = fetchurl {
2375 name = "cli-cursor-2.1.0.tgz";
2376 url = "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz";
2377 sha1 = "b35dac376479facc3e94747d41d0d0f5238ffcb5";
2378 };
2379 }
2380
2381 {
2382 name = "cli-width-2.2.0.tgz";
2383 path = fetchurl {
2384 name = "cli-width-2.2.0.tgz";
2385 url = "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.0.tgz";
2386 sha1 = "ff19ede8a9a5e579324147b0c11f0fbcbabed639";
2387 };
2388 }
2389
2390 {
2391 name = "cliui-3.2.0.tgz";
2392 path = fetchurl {
2393 name = "cliui-3.2.0.tgz";
2394 url = "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz";
2395 sha1 = "120601537a916d29940f934da3b48d585a39213d";
2396 };
2397 }
2398
2399 {
2400 name = "cliui-4.1.0.tgz";
2401 path = fetchurl {
2402 name = "cliui-4.1.0.tgz";
2403 url = "https://registry.yarnpkg.com/cliui/-/cliui-4.1.0.tgz";
2404 sha1 = "348422dbe82d800b3022eef4f6ac10bf2e4d1b49";
2405 };
2406 }
2407
2408 {
2409 name = "clone-deep-2.0.2.tgz";
2410 path = fetchurl {
2411 name = "clone-deep-2.0.2.tgz";
2412 url = "https://registry.yarnpkg.com/clone-deep/-/clone-deep-2.0.2.tgz";
2413 sha1 = "00db3a1e173656730d1188c3d6aced6d7ea97713";
2414 };
2415 }
2416
2417 {
2418 name = "clone-1.0.4.tgz";
2419 path = fetchurl {
2420 name = "clone-1.0.4.tgz";
2421 url = "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz";
2422 sha1 = "da309cc263df15994c688ca902179ca3c7cd7c7e";
2423 };
2424 }
2425
2426 {
2427 name = "co-4.6.0.tgz";
2428 path = fetchurl {
2429 name = "co-4.6.0.tgz";
2430 url = "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz";
2431 sha1 = "6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184";
2432 };
2433 }
2434
2435 {
2436 name = "code-point-at-1.1.0.tgz";
2437 path = fetchurl {
2438 name = "code-point-at-1.1.0.tgz";
2439 url = "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz";
2440 sha1 = "0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77";
2441 };
2442 }
2443
2444 {
2445 name = "collection-visit-1.0.0.tgz";
2446 path = fetchurl {
2447 name = "collection-visit-1.0.0.tgz";
2448 url = "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz";
2449 sha1 = "4bc0373c164bc3291b4d368c829cf1a80a59dca0";
2450 };
2451 }
2452
2453 {
2454 name = "color-convert-1.9.3.tgz";
2455 path = fetchurl {
2456 name = "color-convert-1.9.3.tgz";
2457 url = "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz";
2458 sha1 = "bb71850690e1f136567de629d2d5471deda4c1e8";
2459 };
2460 }
2461
2462 {
2463 name = "color-name-1.1.3.tgz";
2464 path = fetchurl {
2465 name = "color-name-1.1.3.tgz";
2466 url = "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz";
2467 sha1 = "a7d0558bd89c42f795dd42328f740831ca53bc25";
2468 };
2469 }
2470
2471 {
2472 name = "color-string-1.5.3.tgz";
2473 path = fetchurl {
2474 name = "color-string-1.5.3.tgz";
2475 url = "https://registry.yarnpkg.com/color-string/-/color-string-1.5.3.tgz";
2476 sha1 = "c9bbc5f01b58b5492f3d6857459cb6590ce204cc";
2477 };
2478 }
2479
2480 {
2481 name = "color-1.0.3.tgz";
2482 path = fetchurl {
2483 name = "color-1.0.3.tgz";
2484 url = "https://registry.yarnpkg.com/color/-/color-1.0.3.tgz";
2485 sha1 = "e48e832d85f14ef694fb468811c2d5cfe729b55d";
2486 };
2487 }
2488
2489 {
2490 name = "colors-0.5.1.tgz";
2491 path = fetchurl {
2492 name = "colors-0.5.1.tgz";
2493 url = "https://registry.yarnpkg.com/colors/-/colors-0.5.1.tgz";
2494 sha1 = "7d0023eaeb154e8ee9fce75dcb923d0ed1667774";
2495 };
2496 }
2497
2498 {
2499 name = "combined-stream-1.0.6.tgz";
2500 path = fetchurl {
2501 name = "combined-stream-1.0.6.tgz";
2502 url = "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.6.tgz";
2503 sha1 = "723e7df6e801ac5613113a7e445a9b69cb632818";
2504 };
2505 }
2506
2507 {
2508 name = "commander-2.18.0.tgz";
2509 path = fetchurl {
2510 name = "commander-2.18.0.tgz";
2511 url = "https://registry.yarnpkg.com/commander/-/commander-2.18.0.tgz";
2512 sha1 = "2bf063ddee7c7891176981a2cc798e5754bc6970";
2513 };
2514 }
2515
2516 {
2517 name = "commander-2.13.0.tgz";
2518 path = fetchurl {
2519 name = "commander-2.13.0.tgz";
2520 url = "https://registry.yarnpkg.com/commander/-/commander-2.13.0.tgz";
2521 sha1 = "6964bca67685df7c1f1430c584f07d7597885b9c";
2522 };
2523 }
2524
2525 {
2526 name = "commander-2.17.1.tgz";
2527 path = fetchurl {
2528 name = "commander-2.17.1.tgz";
2529 url = "https://registry.yarnpkg.com/commander/-/commander-2.17.1.tgz";
2530 sha1 = "bd77ab7de6de94205ceacc72f1716d29f20a77bf";
2531 };
2532 }
2533
2534 {
2535 name = "commondir-1.0.1.tgz";
2536 path = fetchurl {
2537 name = "commondir-1.0.1.tgz";
2538 url = "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz";
2539 sha1 = "ddd800da0c66127393cca5950ea968a3aaf1253b";
2540 };
2541 }
2542
2543 {
2544 name = "component-emitter-1.2.1.tgz";
2545 path = fetchurl {
2546 name = "component-emitter-1.2.1.tgz";
2547 url = "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz";
2548 sha1 = "137918d6d78283f7df7a6b7c5a63e140e69425e6";
2549 };
2550 }
2551
2552 {
2553 name = "compressible-2.0.14.tgz";
2554 path = fetchurl {
2555 name = "compressible-2.0.14.tgz";
2556 url = "https://registry.yarnpkg.com/compressible/-/compressible-2.0.14.tgz";
2557 sha1 = "326c5f507fbb055f54116782b969a81b67a29da7";
2558 };
2559 }
2560
2561 {
2562 name = "compression-webpack-plugin-2.0.0.tgz";
2563 path = fetchurl {
2564 name = "compression-webpack-plugin-2.0.0.tgz";
2565 url = "https://registry.yarnpkg.com/compression-webpack-plugin/-/compression-webpack-plugin-2.0.0.tgz";
2566 sha1 = "46476350c1eb27f783dccc79ac2f709baa2cffbc";
2567 };
2568 }
2569
2570 {
2571 name = "compression-1.7.3.tgz";
2572 path = fetchurl {
2573 name = "compression-1.7.3.tgz";
2574 url = "https://registry.yarnpkg.com/compression/-/compression-1.7.3.tgz";
2575 sha1 = "27e0e176aaf260f7f2c2813c3e440adb9f1993db";
2576 };
2577 }
2578
2579 {
2580 name = "concat-map-0.0.1.tgz";
2581 path = fetchurl {
2582 name = "concat-map-0.0.1.tgz";
2583 url = "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz";
2584 sha1 = "d8a96bd77fd68df7793a73036a3ba0d5405d477b";
2585 };
2586 }
2587
2588 {
2589 name = "concat-stream-1.6.2.tgz";
2590 path = fetchurl {
2591 name = "concat-stream-1.6.2.tgz";
2592 url = "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz";
2593 sha1 = "904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34";
2594 };
2595 }
2596
2597 {
2598 name = "connect-history-api-fallback-1.5.0.tgz";
2599 path = fetchurl {
2600 name = "connect-history-api-fallback-1.5.0.tgz";
2601 url = "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.5.0.tgz";
2602 sha1 = "b06873934bc5e344fef611a196a6faae0aee015a";
2603 };
2604 }
2605
2606 {
2607 name = "console-browserify-1.1.0.tgz";
2608 path = fetchurl {
2609 name = "console-browserify-1.1.0.tgz";
2610 url = "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.1.0.tgz";
2611 sha1 = "f0241c45730a9fc6323b206dbf38edc741d0bb10";
2612 };
2613 }
2614
2615 {
2616 name = "console-control-strings-1.1.0.tgz";
2617 path = fetchurl {
2618 name = "console-control-strings-1.1.0.tgz";
2619 url = "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz";
2620 sha1 = "3d7cf4464db6446ea644bf4b39507f9851008e8e";
2621 };
2622 }
2623
2624 {
2625 name = "constants-browserify-1.0.0.tgz";
2626 path = fetchurl {
2627 name = "constants-browserify-1.0.0.tgz";
2628 url = "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz";
2629 sha1 = "c20b96d8c617748aaf1c16021760cd27fcb8cb75";
2630 };
2631 }
2632
2633 {
2634 name = "contains-path-0.1.0.tgz";
2635 path = fetchurl {
2636 name = "contains-path-0.1.0.tgz";
2637 url = "https://registry.yarnpkg.com/contains-path/-/contains-path-0.1.0.tgz";
2638 sha1 = "fe8cf184ff6670b6baef01a9d4861a5cbec4120a";
2639 };
2640 }
2641
2642 {
2643 name = "content-disposition-0.5.2.tgz";
2644 path = fetchurl {
2645 name = "content-disposition-0.5.2.tgz";
2646 url = "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.2.tgz";
2647 sha1 = "0cf68bb9ddf5f2be7961c3a85178cb85dba78cb4";
2648 };
2649 }
2650
2651 {
2652 name = "content-type-1.0.4.tgz";
2653 path = fetchurl {
2654 name = "content-type-1.0.4.tgz";
2655 url = "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz";
2656 sha1 = "e138cc75e040c727b1966fe5e5f8c9aee256fe3b";
2657 };
2658 }
2659
2660 {
2661 name = "convert-source-map-1.6.0.tgz";
2662 path = fetchurl {
2663 name = "convert-source-map-1.6.0.tgz";
2664 url = "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.6.0.tgz";
2665 sha1 = "51b537a8c43e0f04dec1993bffcdd504e758ac20";
2666 };
2667 }
2668
2669 {
2670 name = "cookie-signature-1.0.6.tgz";
2671 path = fetchurl {
2672 name = "cookie-signature-1.0.6.tgz";
2673 url = "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz";
2674 sha1 = "e303a882b342cc3ee8ca513a79999734dab3ae2c";
2675 };
2676 }
2677
2678 {
2679 name = "cookie-0.3.1.tgz";
2680 path = fetchurl {
2681 name = "cookie-0.3.1.tgz";
2682 url = "https://registry.yarnpkg.com/cookie/-/cookie-0.3.1.tgz";
2683 sha1 = "e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb";
2684 };
2685 }
2686
2687 {
2688 name = "copy-concurrently-1.0.5.tgz";
2689 path = fetchurl {
2690 name = "copy-concurrently-1.0.5.tgz";
2691 url = "https://registry.yarnpkg.com/copy-concurrently/-/copy-concurrently-1.0.5.tgz";
2692 sha1 = "92297398cae34937fcafd6ec8139c18051f0b5e0";
2693 };
2694 }
2695
2696 {
2697 name = "copy-descriptor-0.1.1.tgz";
2698 path = fetchurl {
2699 name = "copy-descriptor-0.1.1.tgz";
2700 url = "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz";
2701 sha1 = "676f6eb3c39997c2ee1ac3a924fd6124748f578d";
2702 };
2703 }
2704
2705 {
2706 name = "core-js-1.2.7.tgz";
2707 path = fetchurl {
2708 name = "core-js-1.2.7.tgz";
2709 url = "https://registry.yarnpkg.com/core-js/-/core-js-1.2.7.tgz";
2710 sha1 = "652294c14651db28fa93bd2d5ff2983a4f08c636";
2711 };
2712 }
2713
2714 {
2715 name = "core-js-2.5.7.tgz";
2716 path = fetchurl {
2717 name = "core-js-2.5.7.tgz";
2718 url = "https://registry.yarnpkg.com/core-js/-/core-js-2.5.7.tgz";
2719 sha1 = "f972608ff0cead68b841a16a932d0b183791814e";
2720 };
2721 }
2722
2723 {
2724 name = "core-util-is-1.0.2.tgz";
2725 path = fetchurl {
2726 name = "core-util-is-1.0.2.tgz";
2727 url = "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz";
2728 sha1 = "b5fd54220aa2bc5ab57aab7140c940754503c1a7";
2729 };
2730 }
2731
2732 {
2733 name = "cosmiconfig-4.0.0.tgz";
2734 path = fetchurl {
2735 name = "cosmiconfig-4.0.0.tgz";
2736 url = "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-4.0.0.tgz";
2737 sha1 = "760391549580bbd2df1e562bc177b13c290972dc";
2738 };
2739 }
2740
2741 {
2742 name = "cosmiconfig-5.0.6.tgz";
2743 path = fetchurl {
2744 name = "cosmiconfig-5.0.6.tgz";
2745 url = "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.0.6.tgz";
2746 sha1 = "dca6cf680a0bd03589aff684700858c81abeeb39";
2747 };
2748 }
2749
2750 {
2751 name = "create-ecdh-4.0.3.tgz";
2752 path = fetchurl {
2753 name = "create-ecdh-4.0.3.tgz";
2754 url = "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.3.tgz";
2755 sha1 = "c9111b6f33045c4697f144787f9254cdc77c45ff";
2756 };
2757 }
2758
2759 {
2760 name = "create-hash-1.2.0.tgz";
2761 path = fetchurl {
2762 name = "create-hash-1.2.0.tgz";
2763 url = "http://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz";
2764 sha1 = "889078af11a63756bcfb59bd221996be3a9ef196";
2765 };
2766 }
2767
2768 {
2769 name = "create-hmac-1.1.7.tgz";
2770 path = fetchurl {
2771 name = "create-hmac-1.1.7.tgz";
2772 url = "http://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz";
2773 sha1 = "69170c78b3ab957147b2b8b04572e47ead2243ff";
2774 };
2775 }
2776
2777 {
2778 name = "create-react-class-15.6.3.tgz";
2779 path = fetchurl {
2780 name = "create-react-class-15.6.3.tgz";
2781 url = "https://registry.yarnpkg.com/create-react-class/-/create-react-class-15.6.3.tgz";
2782 sha1 = "2d73237fb3f970ae6ebe011a9e66f46dbca80036";
2783 };
2784 }
2785
2786 {
2787 name = "cross-env-5.2.0.tgz";
2788 path = fetchurl {
2789 name = "cross-env-5.2.0.tgz";
2790 url = "https://registry.yarnpkg.com/cross-env/-/cross-env-5.2.0.tgz";
2791 sha1 = "6ecd4c015d5773e614039ee529076669b9d126f2";
2792 };
2793 }
2794
2795 {
2796 name = "cross-spawn-3.0.1.tgz";
2797 path = fetchurl {
2798 name = "cross-spawn-3.0.1.tgz";
2799 url = "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-3.0.1.tgz";
2800 sha1 = "1256037ecb9f0c5f79e3d6ef135e30770184b982";
2801 };
2802 }
2803
2804 {
2805 name = "cross-spawn-5.1.0.tgz";
2806 path = fetchurl {
2807 name = "cross-spawn-5.1.0.tgz";
2808 url = "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz";
2809 sha1 = "e8bd0efee58fcff6f8f94510a0a554bbfa235449";
2810 };
2811 }
2812
2813 {
2814 name = "cross-spawn-6.0.5.tgz";
2815 path = fetchurl {
2816 name = "cross-spawn-6.0.5.tgz";
2817 url = "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz";
2818 sha1 = "4a5ec7c64dfae22c3a14124dbacdee846d80cbc4";
2819 };
2820 }
2821
2822 {
2823 name = "cryptiles-2.0.5.tgz";
2824 path = fetchurl {
2825 name = "cryptiles-2.0.5.tgz";
2826 url = "https://registry.yarnpkg.com/cryptiles/-/cryptiles-2.0.5.tgz";
2827 sha1 = "3bdfecdc608147c1c67202fa291e7dca59eaa3b8";
2828 };
2829 }
2830
2831 {
2832 name = "crypto-browserify-3.12.0.tgz";
2833 path = fetchurl {
2834 name = "crypto-browserify-3.12.0.tgz";
2835 url = "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz";
2836 sha1 = "396cf9f3137f03e4b8e532c58f698254e00f80ec";
2837 };
2838 }
2839
2840 {
2841 name = "css-font-size-keywords-1.0.0.tgz";
2842 path = fetchurl {
2843 name = "css-font-size-keywords-1.0.0.tgz";
2844 url = "https://registry.yarnpkg.com/css-font-size-keywords/-/css-font-size-keywords-1.0.0.tgz";
2845 sha1 = "854875ace9aca6a8d2ee0d345a44aae9bb6db6cb";
2846 };
2847 }
2848
2849 {
2850 name = "css-font-stretch-keywords-1.0.1.tgz";
2851 path = fetchurl {
2852 name = "css-font-stretch-keywords-1.0.1.tgz";
2853 url = "https://registry.yarnpkg.com/css-font-stretch-keywords/-/css-font-stretch-keywords-1.0.1.tgz";
2854 sha1 = "50cee9b9ba031fb5c952d4723139f1e107b54b10";
2855 };
2856 }
2857
2858 {
2859 name = "css-font-style-keywords-1.0.1.tgz";
2860 path = fetchurl {
2861 name = "css-font-style-keywords-1.0.1.tgz";
2862 url = "https://registry.yarnpkg.com/css-font-style-keywords/-/css-font-style-keywords-1.0.1.tgz";
2863 sha1 = "5c3532813f63b4a1de954d13cea86ab4333409e4";
2864 };
2865 }
2866
2867 {
2868 name = "css-font-weight-keywords-1.0.0.tgz";
2869 path = fetchurl {
2870 name = "css-font-weight-keywords-1.0.0.tgz";
2871 url = "https://registry.yarnpkg.com/css-font-weight-keywords/-/css-font-weight-keywords-1.0.0.tgz";
2872 sha1 = "9bc04671ac85bc724b574ef5d3ac96b0d604fd97";
2873 };
2874 }
2875
2876 {
2877 name = "css-global-keywords-1.0.1.tgz";
2878 path = fetchurl {
2879 name = "css-global-keywords-1.0.1.tgz";
2880 url = "https://registry.yarnpkg.com/css-global-keywords/-/css-global-keywords-1.0.1.tgz";
2881 sha1 = "72a9aea72796d019b1d2a3252de4e5aaa37e4a69";
2882 };
2883 }
2884
2885 {
2886 name = "css-list-helpers-1.0.1.tgz";
2887 path = fetchurl {
2888 name = "css-list-helpers-1.0.1.tgz";
2889 url = "https://registry.yarnpkg.com/css-list-helpers/-/css-list-helpers-1.0.1.tgz";
2890 sha1 = "fff57192202db83240c41686f919e449a7024f7d";
2891 };
2892 }
2893
2894 {
2895 name = "css-loader-1.0.0.tgz";
2896 path = fetchurl {
2897 name = "css-loader-1.0.0.tgz";
2898 url = "https://registry.yarnpkg.com/css-loader/-/css-loader-1.0.0.tgz";
2899 sha1 = "9f46aaa5ca41dbe31860e3b62b8e23c42916bf56";
2900 };
2901 }
2902
2903 {
2904 name = "css-select-1.2.0.tgz";
2905 path = fetchurl {
2906 name = "css-select-1.2.0.tgz";
2907 url = "https://registry.yarnpkg.com/css-select/-/css-select-1.2.0.tgz";
2908 sha1 = "2b3a110539c5355f1cd8d314623e870b121ec858";
2909 };
2910 }
2911
2912 {
2913 name = "css-selector-tokenizer-0.7.0.tgz";
2914 path = fetchurl {
2915 name = "css-selector-tokenizer-0.7.0.tgz";
2916 url = "https://registry.yarnpkg.com/css-selector-tokenizer/-/css-selector-tokenizer-0.7.0.tgz";
2917 sha1 = "e6988474ae8c953477bf5e7efecfceccd9cf4c86";
2918 };
2919 }
2920
2921 {
2922 name = "css-system-font-keywords-1.0.0.tgz";
2923 path = fetchurl {
2924 name = "css-system-font-keywords-1.0.0.tgz";
2925 url = "https://registry.yarnpkg.com/css-system-font-keywords/-/css-system-font-keywords-1.0.0.tgz";
2926 sha1 = "85c6f086aba4eb32c571a3086affc434b84823ed";
2927 };
2928 }
2929
2930 {
2931 name = "css-what-2.1.0.tgz";
2932 path = fetchurl {
2933 name = "css-what-2.1.0.tgz";
2934 url = "https://registry.yarnpkg.com/css-what/-/css-what-2.1.0.tgz";
2935 sha1 = "9467d032c38cfaefb9f2d79501253062f87fa1bd";
2936 };
2937 }
2938
2939 {
2940 name = "cssdb-1.6.0.tgz";
2941 path = fetchurl {
2942 name = "cssdb-1.6.0.tgz";
2943 url = "http://registry.npmjs.org/cssdb/-/cssdb-1.6.0.tgz";
2944 sha1 = "3360c4163e07cf4d1efe58c1bc15170535f4d393";
2945 };
2946 }
2947
2948 {
2949 name = "cssesc-0.1.0.tgz";
2950 path = fetchurl {
2951 name = "cssesc-0.1.0.tgz";
2952 url = "https://registry.yarnpkg.com/cssesc/-/cssesc-0.1.0.tgz";
2953 sha1 = "c814903e45623371a0477b40109aaafbeeaddbb4";
2954 };
2955 }
2956
2957 {
2958 name = "cssom-0.3.4.tgz";
2959 path = fetchurl {
2960 name = "cssom-0.3.4.tgz";
2961 url = "https://registry.yarnpkg.com/cssom/-/cssom-0.3.4.tgz";
2962 sha1 = "8cd52e8a3acfd68d3aed38ee0a640177d2f9d797";
2963 };
2964 }
2965
2966 {
2967 name = "cssstyle-1.1.1.tgz";
2968 path = fetchurl {
2969 name = "cssstyle-1.1.1.tgz";
2970 url = "https://registry.yarnpkg.com/cssstyle/-/cssstyle-1.1.1.tgz";
2971 sha1 = "18b038a9c44d65f7a8e428a653b9f6fe42faf5fb";
2972 };
2973 }
2974
2975 {
2976 name = "csstype-2.5.6.tgz";
2977 path = fetchurl {
2978 name = "csstype-2.5.6.tgz";
2979 url = "https://registry.yarnpkg.com/csstype/-/csstype-2.5.6.tgz";
2980 sha1 = "2ae1db2319642d8b80a668d2d025c6196071e788";
2981 };
2982 }
2983
2984 {
2985 name = "currently-unhandled-0.4.1.tgz";
2986 path = fetchurl {
2987 name = "currently-unhandled-0.4.1.tgz";
2988 url = "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz";
2989 sha1 = "988df33feab191ef799a61369dd76c17adf957ea";
2990 };
2991 }
2992
2993 {
2994 name = "cyclist-0.2.2.tgz";
2995 path = fetchurl {
2996 name = "cyclist-0.2.2.tgz";
2997 url = "https://registry.yarnpkg.com/cyclist/-/cyclist-0.2.2.tgz";
2998 sha1 = "1b33792e11e914a2fd6d6ed6447464444e5fa640";
2999 };
3000 }
3001
3002 {
3003 name = "d-1.0.0.tgz";
3004 path = fetchurl {
3005 name = "d-1.0.0.tgz";
3006 url = "https://registry.yarnpkg.com/d/-/d-1.0.0.tgz";
3007 sha1 = "754bb5bfe55451da69a58b94d45f4c5b0462d58f";
3008 };
3009 }
3010
3011 {
3012 name = "damerau-levenshtein-1.0.4.tgz";
3013 path = fetchurl {
3014 name = "damerau-levenshtein-1.0.4.tgz";
3015 url = "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.4.tgz";
3016 sha1 = "03191c432cb6eea168bb77f3a55ffdccb8978514";
3017 };
3018 }
3019
3020 {
3021 name = "dashdash-1.14.1.tgz";
3022 path = fetchurl {
3023 name = "dashdash-1.14.1.tgz";
3024 url = "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz";
3025 sha1 = "853cfa0f7cbe2fed5de20326b8dd581035f6e2f0";
3026 };
3027 }
3028
3029 {
3030 name = "data-urls-1.0.1.tgz";
3031 path = fetchurl {
3032 name = "data-urls-1.0.1.tgz";
3033 url = "https://registry.yarnpkg.com/data-urls/-/data-urls-1.0.1.tgz";
3034 sha1 = "d416ac3896918f29ca84d81085bc3705834da579";
3035 };
3036 }
3037
3038 {
3039 name = "date-now-0.1.4.tgz";
3040 path = fetchurl {
3041 name = "date-now-0.1.4.tgz";
3042 url = "https://registry.yarnpkg.com/date-now/-/date-now-0.1.4.tgz";
3043 sha1 = "eaf439fd4d4848ad74e5cc7dbef200672b9e345b";
3044 };
3045 }
3046
3047 {
3048 name = "debug-2.6.9.tgz";
3049 path = fetchurl {
3050 name = "debug-2.6.9.tgz";
3051 url = "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz";
3052 sha1 = "5d128515df134ff327e90a4c93f4e077a536341f";
3053 };
3054 }
3055
3056 {
3057 name = "debug-3.1.0.tgz";
3058 path = fetchurl {
3059 name = "debug-3.1.0.tgz";
3060 url = "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz";
3061 sha1 = "5bb5a0672628b64149566ba16819e61518c67261";
3062 };
3063 }
3064
3065 {
3066 name = "debug-3.2.5.tgz";
3067 path = fetchurl {
3068 name = "debug-3.2.5.tgz";
3069 url = "https://registry.yarnpkg.com/debug/-/debug-3.2.5.tgz";
3070 sha1 = "c2418fbfd7a29f4d4f70ff4cea604d4b64c46407";
3071 };
3072 }
3073
3074 {
3075 name = "decamelize-1.2.0.tgz";
3076 path = fetchurl {
3077 name = "decamelize-1.2.0.tgz";
3078 url = "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz";
3079 sha1 = "f6534d15148269b20352e7bee26f501f9a191290";
3080 };
3081 }
3082
3083 {
3084 name = "decamelize-2.0.0.tgz";
3085 path = fetchurl {
3086 name = "decamelize-2.0.0.tgz";
3087 url = "https://registry.yarnpkg.com/decamelize/-/decamelize-2.0.0.tgz";
3088 sha1 = "656d7bbc8094c4c788ea53c5840908c9c7d063c7";
3089 };
3090 }
3091
3092 {
3093 name = "decode-uri-component-0.2.0.tgz";
3094 path = fetchurl {
3095 name = "decode-uri-component-0.2.0.tgz";
3096 url = "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz";
3097 sha1 = "eb3913333458775cb84cd1a1fae062106bb87545";
3098 };
3099 }
3100
3101 {
3102 name = "deep-equal-1.0.1.tgz";
3103 path = fetchurl {
3104 name = "deep-equal-1.0.1.tgz";
3105 url = "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.0.1.tgz";
3106 sha1 = "f5d260292b660e084eff4cdbc9f08ad3247448b5";
3107 };
3108 }
3109
3110 {
3111 name = "deep-extend-0.5.1.tgz";
3112 path = fetchurl {
3113 name = "deep-extend-0.5.1.tgz";
3114 url = "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.5.1.tgz";
3115 sha1 = "b894a9dd90d3023fbf1c55a394fb858eb2066f1f";
3116 };
3117 }
3118
3119 {
3120 name = "deep-extend-0.6.0.tgz";
3121 path = fetchurl {
3122 name = "deep-extend-0.6.0.tgz";
3123 url = "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz";
3124 sha1 = "c4fa7c95404a17a9c3e8ca7e1537312b736330ac";
3125 };
3126 }
3127
3128 {
3129 name = "deep-is-0.1.3.tgz";
3130 path = fetchurl {
3131 name = "deep-is-0.1.3.tgz";
3132 url = "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz";
3133 sha1 = "b369d6fb5dbc13eecf524f91b070feedc357cf34";
3134 };
3135 }
3136
3137 {
3138 name = "default-gateway-2.7.2.tgz";
3139 path = fetchurl {
3140 name = "default-gateway-2.7.2.tgz";
3141 url = "https://registry.yarnpkg.com/default-gateway/-/default-gateway-2.7.2.tgz";
3142 sha1 = "b7ef339e5e024b045467af403d50348db4642d0f";
3143 };
3144 }
3145
3146 {
3147 name = "default-require-extensions-1.0.0.tgz";
3148 path = fetchurl {
3149 name = "default-require-extensions-1.0.0.tgz";
3150 url = "https://registry.yarnpkg.com/default-require-extensions/-/default-require-extensions-1.0.0.tgz";
3151 sha1 = "f37ea15d3e13ffd9b437d33e1a75b5fb97874cb8";
3152 };
3153 }
3154
3155 {
3156 name = "defaults-1.0.3.tgz";
3157 path = fetchurl {
3158 name = "defaults-1.0.3.tgz";
3159 url = "https://registry.yarnpkg.com/defaults/-/defaults-1.0.3.tgz";
3160 sha1 = "c656051e9817d9ff08ed881477f3fe4019f3ef7d";
3161 };
3162 }
3163
3164 {
3165 name = "define-properties-1.1.3.tgz";
3166 path = fetchurl {
3167 name = "define-properties-1.1.3.tgz";
3168 url = "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz";
3169 sha1 = "cf88da6cbee26fe6db7094f61d870cbd84cee9f1";
3170 };
3171 }
3172
3173 {
3174 name = "define-property-0.2.5.tgz";
3175 path = fetchurl {
3176 name = "define-property-0.2.5.tgz";
3177 url = "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz";
3178 sha1 = "c35b1ef918ec3c990f9a5bc57be04aacec5c8116";
3179 };
3180 }
3181
3182 {
3183 name = "define-property-1.0.0.tgz";
3184 path = fetchurl {
3185 name = "define-property-1.0.0.tgz";
3186 url = "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz";
3187 sha1 = "769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6";
3188 };
3189 }
3190
3191 {
3192 name = "define-property-2.0.2.tgz";
3193 path = fetchurl {
3194 name = "define-property-2.0.2.tgz";
3195 url = "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz";
3196 sha1 = "d459689e8d654ba77e02a817f8710d702cb16e9d";
3197 };
3198 }
3199
3200 {
3201 name = "del-2.2.2.tgz";
3202 path = fetchurl {
3203 name = "del-2.2.2.tgz";
3204 url = "https://registry.yarnpkg.com/del/-/del-2.2.2.tgz";
3205 sha1 = "c12c981d067846c84bcaf862cff930d907ffd1a8";
3206 };
3207 }
3208
3209 {
3210 name = "del-3.0.0.tgz";
3211 path = fetchurl {
3212 name = "del-3.0.0.tgz";
3213 url = "https://registry.yarnpkg.com/del/-/del-3.0.0.tgz";
3214 sha1 = "53ecf699ffcbcb39637691ab13baf160819766e5";
3215 };
3216 }
3217
3218 {
3219 name = "delayed-stream-1.0.0.tgz";
3220 path = fetchurl {
3221 name = "delayed-stream-1.0.0.tgz";
3222 url = "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz";
3223 sha1 = "df3ae199acadfb7d440aaae0b29e2272b24ec619";
3224 };
3225 }
3226
3227 {
3228 name = "delegates-1.0.0.tgz";
3229 path = fetchurl {
3230 name = "delegates-1.0.0.tgz";
3231 url = "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz";
3232 sha1 = "84c6e159b81904fdca59a0ef44cd870d31250f9a";
3233 };
3234 }
3235
3236 {
3237 name = "depd-1.1.1.tgz";
3238 path = fetchurl {
3239 name = "depd-1.1.1.tgz";
3240 url = "https://registry.yarnpkg.com/depd/-/depd-1.1.1.tgz";
3241 sha1 = "5783b4e1c459f06fa5ca27f991f3d06e7a310359";
3242 };
3243 }
3244
3245 {
3246 name = "depd-1.1.2.tgz";
3247 path = fetchurl {
3248 name = "depd-1.1.2.tgz";
3249 url = "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz";
3250 sha1 = "9bcd52e14c097763e749b274c4346ed2e560b5a9";
3251 };
3252 }
3253
3254 {
3255 name = "des.js-1.0.0.tgz";
3256 path = fetchurl {
3257 name = "des.js-1.0.0.tgz";
3258 url = "https://registry.yarnpkg.com/des.js/-/des.js-1.0.0.tgz";
3259 sha1 = "c074d2e2aa6a8a9a07dbd61f9a15c2cd83ec8ecc";
3260 };
3261 }
3262
3263 {
3264 name = "destroy-1.0.4.tgz";
3265 path = fetchurl {
3266 name = "destroy-1.0.4.tgz";
3267 url = "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz";
3268 sha1 = "978857442c44749e4206613e37946205826abd80";
3269 };
3270 }
3271
3272 {
3273 name = "detect-indent-4.0.0.tgz";
3274 path = fetchurl {
3275 name = "detect-indent-4.0.0.tgz";
3276 url = "https://registry.yarnpkg.com/detect-indent/-/detect-indent-4.0.0.tgz";
3277 sha1 = "f76d064352cdf43a1cb6ce619c4ee3a9475de208";
3278 };
3279 }
3280
3281 {
3282 name = "detect-libc-1.0.3.tgz";
3283 path = fetchurl {
3284 name = "detect-libc-1.0.3.tgz";
3285 url = "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz";
3286 sha1 = "fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b";
3287 };
3288 }
3289
3290 {
3291 name = "detect-newline-2.1.0.tgz";
3292 path = fetchurl {
3293 name = "detect-newline-2.1.0.tgz";
3294 url = "https://registry.yarnpkg.com/detect-newline/-/detect-newline-2.1.0.tgz";
3295 sha1 = "f41f1c10be4b00e87b5f13da680759f2c5bfd3e2";
3296 };
3297 }
3298
3299 {
3300 name = "detect-node-2.0.4.tgz";
3301 path = fetchurl {
3302 name = "detect-node-2.0.4.tgz";
3303 url = "https://registry.yarnpkg.com/detect-node/-/detect-node-2.0.4.tgz";
3304 sha1 = "014ee8f8f669c5c58023da64b8179c083a28c46c";
3305 };
3306 }
3307
3308 {
3309 name = "detect-passive-events-1.0.4.tgz";
3310 path = fetchurl {
3311 name = "detect-passive-events-1.0.4.tgz";
3312 url = "https://registry.yarnpkg.com/detect-passive-events/-/detect-passive-events-1.0.4.tgz";
3313 sha1 = "6ed477e6e5bceb79079735dcd357789d37f9a91a";
3314 };
3315 }
3316
3317 {
3318 name = "diff-3.5.0.tgz";
3319 path = fetchurl {
3320 name = "diff-3.5.0.tgz";
3321 url = "https://registry.yarnpkg.com/diff/-/diff-3.5.0.tgz";
3322 sha1 = "800c0dd1e0a8bfbc95835c202ad220fe317e5a12";
3323 };
3324 }
3325
3326 {
3327 name = "diffie-hellman-5.0.3.tgz";
3328 path = fetchurl {
3329 name = "diffie-hellman-5.0.3.tgz";
3330 url = "http://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz";
3331 sha1 = "40e8ee98f55a2149607146921c63e1ae5f3d2875";
3332 };
3333 }
3334
3335 {
3336 name = "discontinuous-range-1.0.0.tgz";
3337 path = fetchurl {
3338 name = "discontinuous-range-1.0.0.tgz";
3339 url = "https://registry.yarnpkg.com/discontinuous-range/-/discontinuous-range-1.0.0.tgz";
3340 sha1 = "e38331f0844bba49b9a9cb71c771585aab1bc65a";
3341 };
3342 }
3343
3344 {
3345 name = "dns-equal-1.0.0.tgz";
3346 path = fetchurl {
3347 name = "dns-equal-1.0.0.tgz";
3348 url = "https://registry.yarnpkg.com/dns-equal/-/dns-equal-1.0.0.tgz";
3349 sha1 = "b39e7f1da6eb0a75ba9c17324b34753c47e0654d";
3350 };
3351 }
3352
3353 {
3354 name = "dns-packet-1.3.1.tgz";
3355 path = fetchurl {
3356 name = "dns-packet-1.3.1.tgz";
3357 url = "https://registry.yarnpkg.com/dns-packet/-/dns-packet-1.3.1.tgz";
3358 sha1 = "12aa426981075be500b910eedcd0b47dd7deda5a";
3359 };
3360 }
3361
3362 {
3363 name = "dns-txt-2.0.2.tgz";
3364 path = fetchurl {
3365 name = "dns-txt-2.0.2.tgz";
3366 url = "https://registry.yarnpkg.com/dns-txt/-/dns-txt-2.0.2.tgz";
3367 sha1 = "b91d806f5d27188e4ab3e7d107d881a1cc4642b6";
3368 };
3369 }
3370
3371 {
3372 name = "doctrine-1.5.0.tgz";
3373 path = fetchurl {
3374 name = "doctrine-1.5.0.tgz";
3375 url = "https://registry.yarnpkg.com/doctrine/-/doctrine-1.5.0.tgz";
3376 sha1 = "379dce730f6166f76cefa4e6707a159b02c5a6fa";
3377 };
3378 }
3379
3380 {
3381 name = "doctrine-2.1.0.tgz";
3382 path = fetchurl {
3383 name = "doctrine-2.1.0.tgz";
3384 url = "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz";
3385 sha1 = "5cd01fc101621b42c4cd7f5d1a66243716d3f39d";
3386 };
3387 }
3388
3389 {
3390 name = "dom-helpers-3.3.1.tgz";
3391 path = fetchurl {
3392 name = "dom-helpers-3.3.1.tgz";
3393 url = "https://registry.yarnpkg.com/dom-helpers/-/dom-helpers-3.3.1.tgz";
3394 sha1 = "fc1a4e15ffdf60ddde03a480a9c0fece821dd4a6";
3395 };
3396 }
3397
3398 {
3399 name = "dom-serializer-0.1.0.tgz";
3400 path = fetchurl {
3401 name = "dom-serializer-0.1.0.tgz";
3402 url = "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.1.0.tgz";
3403 sha1 = "073c697546ce0780ce23be4a28e293e40bc30c82";
3404 };
3405 }
3406
3407 {
3408 name = "domain-browser-1.2.0.tgz";
3409 path = fetchurl {
3410 name = "domain-browser-1.2.0.tgz";
3411 url = "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz";
3412 sha1 = "3d31f50191a6749dd1375a7f522e823d42e54eda";
3413 };
3414 }
3415
3416 {
3417 name = "domelementtype-1.3.0.tgz";
3418 path = fetchurl {
3419 name = "domelementtype-1.3.0.tgz";
3420 url = "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.0.tgz";
3421 sha1 = "b17aed82e8ab59e52dd9c19b1756e0fc187204c2";
3422 };
3423 }
3424
3425 {
3426 name = "domelementtype-1.1.3.tgz";
3427 path = fetchurl {
3428 name = "domelementtype-1.1.3.tgz";
3429 url = "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.1.3.tgz";
3430 sha1 = "bd28773e2642881aec51544924299c5cd822185b";
3431 };
3432 }
3433
3434 {
3435 name = "domexception-1.0.1.tgz";
3436 path = fetchurl {
3437 name = "domexception-1.0.1.tgz";
3438 url = "https://registry.yarnpkg.com/domexception/-/domexception-1.0.1.tgz";
3439 sha1 = "937442644ca6a31261ef36e3ec677fe805582c90";
3440 };
3441 }
3442
3443 {
3444 name = "domhandler-2.4.2.tgz";
3445 path = fetchurl {
3446 name = "domhandler-2.4.2.tgz";
3447 url = "https://registry.yarnpkg.com/domhandler/-/domhandler-2.4.2.tgz";
3448 sha1 = "8805097e933d65e85546f726d60f5eb88b44f803";
3449 };
3450 }
3451
3452 {
3453 name = "domutils-1.5.1.tgz";
3454 path = fetchurl {
3455 name = "domutils-1.5.1.tgz";
3456 url = "https://registry.yarnpkg.com/domutils/-/domutils-1.5.1.tgz";
3457 sha1 = "dcd8488a26f563d61079e48c9f7b7e32373682cf";
3458 };
3459 }
3460
3461 {
3462 name = "domutils-1.7.0.tgz";
3463 path = fetchurl {
3464 name = "domutils-1.7.0.tgz";
3465 url = "https://registry.yarnpkg.com/domutils/-/domutils-1.7.0.tgz";
3466 sha1 = "56ea341e834e06e6748af7a1cb25da67ea9f8c2a";
3467 };
3468 }
3469
3470 {
3471 name = "dot-prop-4.2.0.tgz";
3472 path = fetchurl {
3473 name = "dot-prop-4.2.0.tgz";
3474 url = "https://registry.yarnpkg.com/dot-prop/-/dot-prop-4.2.0.tgz";
3475 sha1 = "1f19e0c2e1aa0e32797c49799f2837ac6af69c57";
3476 };
3477 }
3478
3479 {
3480 name = "dotenv-4.0.0.tgz";
3481 path = fetchurl {
3482 name = "dotenv-4.0.0.tgz";
3483 url = "https://registry.yarnpkg.com/dotenv/-/dotenv-4.0.0.tgz";
3484 sha1 = "864ef1379aced55ce6f95debecdce179f7a0cd1d";
3485 };
3486 }
3487
3488 {
3489 name = "double-ended-queue-2.1.0-0.tgz";
3490 path = fetchurl {
3491 name = "double-ended-queue-2.1.0-0.tgz";
3492 url = "https://registry.yarnpkg.com/double-ended-queue/-/double-ended-queue-2.1.0-0.tgz";
3493 sha1 = "103d3527fd31528f40188130c841efdd78264e5c";
3494 };
3495 }
3496
3497 {
3498 name = "duplexer-0.1.1.tgz";
3499 path = fetchurl {
3500 name = "duplexer-0.1.1.tgz";
3501 url = "http://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz";
3502 sha1 = "ace6ff808c1ce66b57d1ebf97977acb02334cfc1";
3503 };
3504 }
3505
3506 {
3507 name = "duplexify-3.6.0.tgz";
3508 path = fetchurl {
3509 name = "duplexify-3.6.0.tgz";
3510 url = "https://registry.yarnpkg.com/duplexify/-/duplexify-3.6.0.tgz";
3511 sha1 = "592903f5d80b38d037220541264d69a198fb3410";
3512 };
3513 }
3514
3515 {
3516 name = "ecc-jsbn-0.1.2.tgz";
3517 path = fetchurl {
3518 name = "ecc-jsbn-0.1.2.tgz";
3519 url = "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz";
3520 sha1 = "3a83a904e54353287874c564b7549386849a98c9";
3521 };
3522 }
3523
3524 {
3525 name = "ee-first-1.1.1.tgz";
3526 path = fetchurl {
3527 name = "ee-first-1.1.1.tgz";
3528 url = "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz";
3529 sha1 = "590c61156b0ae2f4f0255732a158b266bc56b21d";
3530 };
3531 }
3532
3533 {
3534 name = "ejs-2.6.1.tgz";
3535 path = fetchurl {
3536 name = "ejs-2.6.1.tgz";
3537 url = "https://registry.yarnpkg.com/ejs/-/ejs-2.6.1.tgz";
3538 sha1 = "498ec0d495655abc6f23cd61868d926464071aa0";
3539 };
3540 }
3541
3542 {
3543 name = "electron-to-chromium-1.3.66.tgz";
3544 path = fetchurl {
3545 name = "electron-to-chromium-1.3.66.tgz";
3546 url = "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.66.tgz";
3547 sha1 = "1410d8f8768a14dcd09d96222990f43c969af270";
3548 };
3549 }
3550
3551 {
3552 name = "elliptic-6.4.1.tgz";
3553 path = fetchurl {
3554 name = "elliptic-6.4.1.tgz";
3555 url = "https://registry.yarnpkg.com/elliptic/-/elliptic-6.4.1.tgz";
3556 sha1 = "c2d0b7776911b86722c632c3c06c60f2f819939a";
3557 };
3558 }
3559
3560 {
3561 name = "ff00dc470b5b2d9f145a6d6e977a54de5df2b4c9";
3562 path = fetchurl {
3563 name = "ff00dc470b5b2d9f145a6d6e977a54de5df2b4c9";
3564 url = "https://codeload.github.com/Gargron/emoji-mart/tar.gz/ff00dc470b5b2d9f145a6d6e977a54de5df2b4c9";
3565 sha1 = "4255dc41fa7df9c3a02c1595f058e248bc37b784";
3566 };
3567 }
3568
3569 {
3570 name = "emoji-regex-6.5.1.tgz";
3571 path = fetchurl {
3572 name = "emoji-regex-6.5.1.tgz";
3573 url = "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-6.5.1.tgz";
3574 sha1 = "9baea929b155565c11ea41c6626eaa65cef992c2";
3575 };
3576 }
3577
3578 {
3579 name = "emojis-list-2.1.0.tgz";
3580 path = fetchurl {
3581 name = "emojis-list-2.1.0.tgz";
3582 url = "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz";
3583 sha1 = "4daa4d9db00f9819880c79fa457ae5b09a1fd389";
3584 };
3585 }
3586
3587 {
3588 name = "encodeurl-1.0.2.tgz";
3589 path = fetchurl {
3590 name = "encodeurl-1.0.2.tgz";
3591 url = "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz";
3592 sha1 = "ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59";
3593 };
3594 }
3595
3596 {
3597 name = "encoding-0.1.12.tgz";
3598 path = fetchurl {
3599 name = "encoding-0.1.12.tgz";
3600 url = "https://registry.yarnpkg.com/encoding/-/encoding-0.1.12.tgz";
3601 sha1 = "538b66f3ee62cd1ab51ec323829d1f9480c74beb";
3602 };
3603 }
3604
3605 {
3606 name = "end-of-stream-1.4.1.tgz";
3607 path = fetchurl {
3608 name = "end-of-stream-1.4.1.tgz";
3609 url = "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.1.tgz";
3610 sha1 = "ed29634d19baba463b6ce6b80a37213eab71ec43";
3611 };
3612 }
3613
3614 {
3615 name = "enhanced-resolve-4.1.0.tgz";
3616 path = fetchurl {
3617 name = "enhanced-resolve-4.1.0.tgz";
3618 url = "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.1.0.tgz";
3619 sha1 = "41c7e0bfdfe74ac1ffe1e57ad6a5c6c9f3742a7f";
3620 };
3621 }
3622
3623 {
3624 name = "entities-1.1.1.tgz";
3625 path = fetchurl {
3626 name = "entities-1.1.1.tgz";
3627 url = "https://registry.yarnpkg.com/entities/-/entities-1.1.1.tgz";
3628 sha1 = "6e5c2d0a5621b5dadaecef80b90edfb5cd7772f0";
3629 };
3630 }
3631
3632 {
3633 name = "enzyme-adapter-react-16-1.5.0.tgz";
3634 path = fetchurl {
3635 name = "enzyme-adapter-react-16-1.5.0.tgz";
3636 url = "https://registry.yarnpkg.com/enzyme-adapter-react-16/-/enzyme-adapter-react-16-1.5.0.tgz";
3637 sha1 = "50af8d76a45fe0915de932bd95d34cdca75c0be3";
3638 };
3639 }
3640
3641 {
3642 name = "enzyme-adapter-utils-1.8.0.tgz";
3643 path = fetchurl {
3644 name = "enzyme-adapter-utils-1.8.0.tgz";
3645 url = "https://registry.yarnpkg.com/enzyme-adapter-utils/-/enzyme-adapter-utils-1.8.0.tgz";
3646 sha1 = "ee9f07250663a985f1f2caaf297720787da559f1";
3647 };
3648 }
3649
3650 {
3651 name = "enzyme-3.6.0.tgz";
3652 path = fetchurl {
3653 name = "enzyme-3.6.0.tgz";
3654 url = "https://registry.yarnpkg.com/enzyme/-/enzyme-3.6.0.tgz";
3655 sha1 = "d213f280a258f61e901bc663d4cc2d6fd9a9dec8";
3656 };
3657 }
3658
3659 {
3660 name = "errno-0.1.7.tgz";
3661 path = fetchurl {
3662 name = "errno-0.1.7.tgz";
3663 url = "https://registry.yarnpkg.com/errno/-/errno-0.1.7.tgz";
3664 sha1 = "4684d71779ad39af177e3f007996f7c67c852618";
3665 };
3666 }
3667
3668 {
3669 name = "error-ex-1.3.2.tgz";
3670 path = fetchurl {
3671 name = "error-ex-1.3.2.tgz";
3672 url = "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz";
3673 sha1 = "b4ac40648107fdcdcfae242f428bea8a14d4f1bf";
3674 };
3675 }
3676
3677 {
3678 name = "es-abstract-1.12.0.tgz";
3679 path = fetchurl {
3680 name = "es-abstract-1.12.0.tgz";
3681 url = "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.12.0.tgz";
3682 sha1 = "9dbbdd27c6856f0001421ca18782d786bf8a6165";
3683 };
3684 }
3685
3686 {
3687 name = "es-to-primitive-1.1.1.tgz";
3688 path = fetchurl {
3689 name = "es-to-primitive-1.1.1.tgz";
3690 url = "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.1.1.tgz";
3691 sha1 = "45355248a88979034b6792e19bb81f2b7975dd0d";
3692 };
3693 }
3694
3695 {
3696 name = "es5-ext-0.10.46.tgz";
3697 path = fetchurl {
3698 name = "es5-ext-0.10.46.tgz";
3699 url = "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.46.tgz";
3700 sha1 = "efd99f67c5a7ec789baa3daa7f79870388f7f572";
3701 };
3702 }
3703
3704 {
3705 name = "es6-iterator-2.0.3.tgz";
3706 path = fetchurl {
3707 name = "es6-iterator-2.0.3.tgz";
3708 url = "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz";
3709 sha1 = "a7de889141a05a94b0854403b2d0a0fbfa98f3b7";
3710 };
3711 }
3712
3713 {
3714 name = "es6-symbol-3.1.1.tgz";
3715 path = fetchurl {
3716 name = "es6-symbol-3.1.1.tgz";
3717 url = "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.1.tgz";
3718 sha1 = "bf00ef4fdab6ba1b46ecb7b629b4c7ed5715cc77";
3719 };
3720 }
3721
3722 {
3723 name = "escape-html-1.0.3.tgz";
3724 path = fetchurl {
3725 name = "escape-html-1.0.3.tgz";
3726 url = "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz";
3727 sha1 = "0258eae4d3d0c0974de1c169188ef0051d1d1988";
3728 };
3729 }
3730
3731 {
3732 name = "escape-string-regexp-1.0.5.tgz";
3733 path = fetchurl {
3734 name = "escape-string-regexp-1.0.5.tgz";
3735 url = "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz";
3736 sha1 = "1b61c0562190a8dff6ae3bb2cf0200ca130b86d4";
3737 };
3738 }
3739
3740 {
3741 name = "escodegen-1.11.0.tgz";
3742 path = fetchurl {
3743 name = "escodegen-1.11.0.tgz";
3744 url = "https://registry.yarnpkg.com/escodegen/-/escodegen-1.11.0.tgz";
3745 sha1 = "b27a9389481d5bfd5bec76f7bb1eb3f8f4556589";
3746 };
3747 }
3748
3749 {
3750 name = "eslint-import-resolver-node-0.3.2.tgz";
3751 path = fetchurl {
3752 name = "eslint-import-resolver-node-0.3.2.tgz";
3753 url = "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.2.tgz";
3754 sha1 = "58f15fb839b8d0576ca980413476aab2472db66a";
3755 };
3756 }
3757
3758 {
3759 name = "eslint-module-utils-2.2.0.tgz";
3760 path = fetchurl {
3761 name = "eslint-module-utils-2.2.0.tgz";
3762 url = "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.2.0.tgz";
3763 sha1 = "b270362cd88b1a48ad308976ce7fa54e98411746";
3764 };
3765 }
3766
3767 {
3768 name = "eslint-plugin-import-2.14.0.tgz";
3769 path = fetchurl {
3770 name = "eslint-plugin-import-2.14.0.tgz";
3771 url = "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.14.0.tgz";
3772 sha1 = "6b17626d2e3e6ad52cfce8807a845d15e22111a8";
3773 };
3774 }
3775
3776 {
3777 name = "eslint-plugin-jsx-a11y-6.1.1.tgz";
3778 path = fetchurl {
3779 name = "eslint-plugin-jsx-a11y-6.1.1.tgz";
3780 url = "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.1.1.tgz";
3781 sha1 = "7bf56dbe7d47d811d14dbb3ddff644aa656ce8e1";
3782 };
3783 }
3784
3785 {
3786 name = "eslint-plugin-promise-3.8.0.tgz";
3787 path = fetchurl {
3788 name = "eslint-plugin-promise-3.8.0.tgz";
3789 url = "https://registry.yarnpkg.com/eslint-plugin-promise/-/eslint-plugin-promise-3.8.0.tgz";
3790 sha1 = "65ebf27a845e3c1e9d6f6a5622ddd3801694b621";
3791 };
3792 }
3793
3794 {
3795 name = "eslint-plugin-react-7.11.1.tgz";
3796 path = fetchurl {
3797 name = "eslint-plugin-react-7.11.1.tgz";
3798 url = "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.11.1.tgz";
3799 sha1 = "c01a7af6f17519457d6116aa94fc6d2ccad5443c";
3800 };
3801 }
3802
3803 {
3804 name = "eslint-scope-3.7.1.tgz";
3805 path = fetchurl {
3806 name = "eslint-scope-3.7.1.tgz";
3807 url = "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-3.7.1.tgz";
3808 sha1 = "3d63c3edfda02e06e01a452ad88caacc7cdcb6e8";
3809 };
3810 }
3811
3812 {
3813 name = "eslint-scope-3.7.3.tgz";
3814 path = fetchurl {
3815 name = "eslint-scope-3.7.3.tgz";
3816 url = "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-3.7.3.tgz";
3817 sha1 = "bb507200d3d17f60247636160b4826284b108535";
3818 };
3819 }
3820
3821 {
3822 name = "eslint-scope-4.0.0.tgz";
3823 path = fetchurl {
3824 name = "eslint-scope-4.0.0.tgz";
3825 url = "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.0.tgz";
3826 sha1 = "50bf3071e9338bcdc43331794a0cb533f0136172";
3827 };
3828 }
3829
3830 {
3831 name = "eslint-visitor-keys-1.0.0.tgz";
3832 path = fetchurl {
3833 name = "eslint-visitor-keys-1.0.0.tgz";
3834 url = "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz";
3835 sha1 = "3f3180fb2e291017716acb4c9d6d5b5c34a6a81d";
3836 };
3837 }
3838
3839 {
3840 name = "eslint-4.19.1.tgz";
3841 path = fetchurl {
3842 name = "eslint-4.19.1.tgz";
3843 url = "http://registry.npmjs.org/eslint/-/eslint-4.19.1.tgz";
3844 sha1 = "32d1d653e1d90408854bfb296f076ec7e186a300";
3845 };
3846 }
3847
3848 {
3849 name = "espree-3.5.4.tgz";
3850 path = fetchurl {
3851 name = "espree-3.5.4.tgz";
3852 url = "https://registry.yarnpkg.com/espree/-/espree-3.5.4.tgz";
3853 sha1 = "b0f447187c8a8bed944b815a660bddf5deb5d1a7";
3854 };
3855 }
3856
3857 {
3858 name = "esprima-3.1.3.tgz";
3859 path = fetchurl {
3860 name = "esprima-3.1.3.tgz";
3861 url = "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz";
3862 sha1 = "fdca51cee6133895e3c88d535ce49dbff62a4633";
3863 };
3864 }
3865
3866 {
3867 name = "esprima-4.0.1.tgz";
3868 path = fetchurl {
3869 name = "esprima-4.0.1.tgz";
3870 url = "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz";
3871 sha1 = "13b04cdb3e6c5d19df91ab6987a8695619b0aa71";
3872 };
3873 }
3874
3875 {
3876 name = "esquery-1.0.1.tgz";
3877 path = fetchurl {
3878 name = "esquery-1.0.1.tgz";
3879 url = "https://registry.yarnpkg.com/esquery/-/esquery-1.0.1.tgz";
3880 sha1 = "406c51658b1f5991a5f9b62b1dc25b00e3e5c708";
3881 };
3882 }
3883
3884 {
3885 name = "esrecurse-4.2.1.tgz";
3886 path = fetchurl {
3887 name = "esrecurse-4.2.1.tgz";
3888 url = "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.2.1.tgz";
3889 sha1 = "007a3b9fdbc2b3bb87e4879ea19c92fdbd3942cf";
3890 };
3891 }
3892
3893 {
3894 name = "estraverse-4.2.0.tgz";
3895 path = fetchurl {
3896 name = "estraverse-4.2.0.tgz";
3897 url = "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz";
3898 sha1 = "0dee3fed31fcd469618ce7342099fc1afa0bdb13";
3899 };
3900 }
3901
3902 {
3903 name = "esutils-2.0.2.tgz";
3904 path = fetchurl {
3905 name = "esutils-2.0.2.tgz";
3906 url = "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz";
3907 sha1 = "0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b";
3908 };
3909 }
3910
3911 {
3912 name = "etag-1.8.1.tgz";
3913 path = fetchurl {
3914 name = "etag-1.8.1.tgz";
3915 url = "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz";
3916 sha1 = "41ae2eeb65efa62268aebfea83ac7d79299b0887";
3917 };
3918 }
3919
3920 {
3921 name = "eventemitter3-3.1.0.tgz";
3922 path = fetchurl {
3923 name = "eventemitter3-3.1.0.tgz";
3924 url = "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-3.1.0.tgz";
3925 sha1 = "090b4d6cdbd645ed10bf750d4b5407942d7ba163";
3926 };
3927 }
3928
3929 {
3930 name = "events-1.1.1.tgz";
3931 path = fetchurl {
3932 name = "events-1.1.1.tgz";
3933 url = "https://registry.yarnpkg.com/events/-/events-1.1.1.tgz";
3934 sha1 = "9ebdb7635ad099c70dcc4c2a1f5004288e8bd924";
3935 };
3936 }
3937
3938 {
3939 name = "eventsource-0.1.6.tgz";
3940 path = fetchurl {
3941 name = "eventsource-0.1.6.tgz";
3942 url = "https://registry.yarnpkg.com/eventsource/-/eventsource-0.1.6.tgz";
3943 sha1 = "0acede849ed7dd1ccc32c811bb11b944d4f29232";
3944 };
3945 }
3946
3947 {
3948 name = "evp_bytestokey-1.0.3.tgz";
3949 path = fetchurl {
3950 name = "evp_bytestokey-1.0.3.tgz";
3951 url = "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz";
3952 sha1 = "7fcbdb198dc71959432efe13842684e0525acb02";
3953 };
3954 }
3955
3956 {
3957 name = "exec-sh-0.2.2.tgz";
3958 path = fetchurl {
3959 name = "exec-sh-0.2.2.tgz";
3960 url = "https://registry.yarnpkg.com/exec-sh/-/exec-sh-0.2.2.tgz";
3961 sha1 = "2a5e7ffcbd7d0ba2755bdecb16e5a427dfbdec36";
3962 };
3963 }
3964
3965 {
3966 name = "execa-0.10.0.tgz";
3967 path = fetchurl {
3968 name = "execa-0.10.0.tgz";
3969 url = "https://registry.yarnpkg.com/execa/-/execa-0.10.0.tgz";
3970 sha1 = "ff456a8f53f90f8eccc71a96d11bdfc7f082cb50";
3971 };
3972 }
3973
3974 {
3975 name = "execa-0.7.0.tgz";
3976 path = fetchurl {
3977 name = "execa-0.7.0.tgz";
3978 url = "https://registry.yarnpkg.com/execa/-/execa-0.7.0.tgz";
3979 sha1 = "944becd34cc41ee32a63a9faf27ad5a65fc59777";
3980 };
3981 }
3982
3983 {
3984 name = "exif-js-2.3.0.tgz";
3985 path = fetchurl {
3986 name = "exif-js-2.3.0.tgz";
3987 url = "https://registry.yarnpkg.com/exif-js/-/exif-js-2.3.0.tgz";
3988 sha1 = "9d10819bf571f873813e7640241255ab9ce1a814";
3989 };
3990 }
3991
3992 {
3993 name = "exit-0.1.2.tgz";
3994 path = fetchurl {
3995 name = "exit-0.1.2.tgz";
3996 url = "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz";
3997 sha1 = "0632638f8d877cc82107d30a0fff1a17cba1cd0c";
3998 };
3999 }
4000
4001 {
4002 name = "expand-brackets-0.1.5.tgz";
4003 path = fetchurl {
4004 name = "expand-brackets-0.1.5.tgz";
4005 url = "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz";
4006 sha1 = "df07284e342a807cd733ac5af72411e581d1177b";
4007 };
4008 }
4009
4010 {
4011 name = "expand-brackets-2.1.4.tgz";
4012 path = fetchurl {
4013 name = "expand-brackets-2.1.4.tgz";
4014 url = "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz";
4015 sha1 = "b77735e315ce30f6b6eff0f83b04151a22449622";
4016 };
4017 }
4018
4019 {
4020 name = "expand-range-1.8.2.tgz";
4021 path = fetchurl {
4022 name = "expand-range-1.8.2.tgz";
4023 url = "https://registry.yarnpkg.com/expand-range/-/expand-range-1.8.2.tgz";
4024 sha1 = "a299effd335fe2721ebae8e257ec79644fc85337";
4025 };
4026 }
4027
4028 {
4029 name = "expect-23.6.0.tgz";
4030 path = fetchurl {
4031 name = "expect-23.6.0.tgz";
4032 url = "https://registry.yarnpkg.com/expect/-/expect-23.6.0.tgz";
4033 sha1 = "1e0c8d3ba9a581c87bd71fb9bc8862d443425f98";
4034 };
4035 }
4036
4037 {
4038 name = "express-4.16.3.tgz";
4039 path = fetchurl {
4040 name = "express-4.16.3.tgz";
4041 url = "http://registry.npmjs.org/express/-/express-4.16.3.tgz";
4042 sha1 = "6af8a502350db3246ecc4becf6b5a34d22f7ed53";
4043 };
4044 }
4045
4046 {
4047 name = "extend-shallow-2.0.1.tgz";
4048 path = fetchurl {
4049 name = "extend-shallow-2.0.1.tgz";
4050 url = "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz";
4051 sha1 = "51af7d614ad9a9f610ea1bafbb989d6b1c56890f";
4052 };
4053 }
4054
4055 {
4056 name = "extend-shallow-3.0.2.tgz";
4057 path = fetchurl {
4058 name = "extend-shallow-3.0.2.tgz";
4059 url = "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz";
4060 sha1 = "26a71aaf073b39fb2127172746131c2704028db8";
4061 };
4062 }
4063
4064 {
4065 name = "extend-3.0.2.tgz";
4066 path = fetchurl {
4067 name = "extend-3.0.2.tgz";
4068 url = "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz";
4069 sha1 = "f8b1136b4071fbd8eb140aff858b1019ec2915fa";
4070 };
4071 }
4072
4073 {
4074 name = "external-editor-2.2.0.tgz";
4075 path = fetchurl {
4076 name = "external-editor-2.2.0.tgz";
4077 url = "http://registry.npmjs.org/external-editor/-/external-editor-2.2.0.tgz";
4078 sha1 = "045511cfd8d133f3846673d1047c154e214ad3d5";
4079 };
4080 }
4081
4082 {
4083 name = "external-editor-3.0.3.tgz";
4084 path = fetchurl {
4085 name = "external-editor-3.0.3.tgz";
4086 url = "https://registry.yarnpkg.com/external-editor/-/external-editor-3.0.3.tgz";
4087 sha1 = "5866db29a97826dbe4bf3afd24070ead9ea43a27";
4088 };
4089 }
4090
4091 {
4092 name = "extglob-0.3.2.tgz";
4093 path = fetchurl {
4094 name = "extglob-0.3.2.tgz";
4095 url = "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz";
4096 sha1 = "2e18ff3d2f49ab2765cec9023f011daa8d8349a1";
4097 };
4098 }
4099
4100 {
4101 name = "extglob-2.0.4.tgz";
4102 path = fetchurl {
4103 name = "extglob-2.0.4.tgz";
4104 url = "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz";
4105 sha1 = "ad00fe4dc612a9232e8718711dc5cb5ab0285543";
4106 };
4107 }
4108
4109 {
4110 name = "extsprintf-1.3.0.tgz";
4111 path = fetchurl {
4112 name = "extsprintf-1.3.0.tgz";
4113 url = "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz";
4114 sha1 = "96918440e3041a7a414f8c52e3c574eb3c3e1e05";
4115 };
4116 }
4117
4118 {
4119 name = "extsprintf-1.4.0.tgz";
4120 path = fetchurl {
4121 name = "extsprintf-1.4.0.tgz";
4122 url = "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz";
4123 sha1 = "e2689f8f356fad62cca65a3a91c5df5f9551692f";
4124 };
4125 }
4126
4127 {
4128 name = "fast-deep-equal-1.1.0.tgz";
4129 path = fetchurl {
4130 name = "fast-deep-equal-1.1.0.tgz";
4131 url = "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz";
4132 sha1 = "c053477817c86b51daa853c81e059b733d023614";
4133 };
4134 }
4135
4136 {
4137 name = "fast-deep-equal-2.0.1.tgz";
4138 path = fetchurl {
4139 name = "fast-deep-equal-2.0.1.tgz";
4140 url = "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz";
4141 sha1 = "7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49";
4142 };
4143 }
4144
4145 {
4146 name = "fast-json-stable-stringify-2.0.0.tgz";
4147 path = fetchurl {
4148 name = "fast-json-stable-stringify-2.0.0.tgz";
4149 url = "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz";
4150 sha1 = "d5142c0caee6b1189f87d3a76111064f86c8bbf2";
4151 };
4152 }
4153
4154 {
4155 name = "fast-levenshtein-2.0.6.tgz";
4156 path = fetchurl {
4157 name = "fast-levenshtein-2.0.6.tgz";
4158 url = "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz";
4159 sha1 = "3d8a5c66883a16a30ca8643e851f19baa7797917";
4160 };
4161 }
4162
4163 {
4164 name = "fastparse-1.1.1.tgz";
4165 path = fetchurl {
4166 name = "fastparse-1.1.1.tgz";
4167 url = "https://registry.yarnpkg.com/fastparse/-/fastparse-1.1.1.tgz";
4168 sha1 = "d1e2643b38a94d7583b479060e6c4affc94071f8";
4169 };
4170 }
4171
4172 {
4173 name = "faye-websocket-0.10.0.tgz";
4174 path = fetchurl {
4175 name = "faye-websocket-0.10.0.tgz";
4176 url = "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.10.0.tgz";
4177 sha1 = "4e492f8d04dfb6f89003507f6edbf2d501e7c6f4";
4178 };
4179 }
4180
4181 {
4182 name = "faye-websocket-0.11.1.tgz";
4183 path = fetchurl {
4184 name = "faye-websocket-0.11.1.tgz";
4185 url = "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.1.tgz";
4186 sha1 = "f0efe18c4f56e4f40afc7e06c719fd5ee6188f38";
4187 };
4188 }
4189
4190 {
4191 name = "fb-watchman-2.0.0.tgz";
4192 path = fetchurl {
4193 name = "fb-watchman-2.0.0.tgz";
4194 url = "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.0.tgz";
4195 sha1 = "54e9abf7dfa2f26cd9b1636c588c1afc05de5d58";
4196 };
4197 }
4198
4199 {
4200 name = "fbjs-0.8.17.tgz";
4201 path = fetchurl {
4202 name = "fbjs-0.8.17.tgz";
4203 url = "https://registry.yarnpkg.com/fbjs/-/fbjs-0.8.17.tgz";
4204 sha1 = "c4d598ead6949112653d6588b01a5cdcd9f90fdd";
4205 };
4206 }
4207
4208 {
4209 name = "figgy-pudding-3.5.1.tgz";
4210 path = fetchurl {
4211 name = "figgy-pudding-3.5.1.tgz";
4212 url = "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.1.tgz";
4213 sha1 = "862470112901c727a0e495a80744bd5baa1d6790";
4214 };
4215 }
4216
4217 {
4218 name = "figures-2.0.0.tgz";
4219 path = fetchurl {
4220 name = "figures-2.0.0.tgz";
4221 url = "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz";
4222 sha1 = "3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962";
4223 };
4224 }
4225
4226 {
4227 name = "file-entry-cache-2.0.0.tgz";
4228 path = fetchurl {
4229 name = "file-entry-cache-2.0.0.tgz";
4230 url = "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-2.0.0.tgz";
4231 sha1 = "c392990c3e684783d838b8c84a45d8a048458361";
4232 };
4233 }
4234
4235 {
4236 name = "file-loader-2.0.0.tgz";
4237 path = fetchurl {
4238 name = "file-loader-2.0.0.tgz";
4239 url = "https://registry.yarnpkg.com/file-loader/-/file-loader-2.0.0.tgz";
4240 sha1 = "39749c82f020b9e85901dcff98e8004e6401cfde";
4241 };
4242 }
4243
4244 {
4245 name = "filename-regex-2.0.1.tgz";
4246 path = fetchurl {
4247 name = "filename-regex-2.0.1.tgz";
4248 url = "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.1.tgz";
4249 sha1 = "c1c4b9bee3e09725ddb106b75c1e301fe2f18b26";
4250 };
4251 }
4252
4253 {
4254 name = "fileset-2.0.3.tgz";
4255 path = fetchurl {
4256 name = "fileset-2.0.3.tgz";
4257 url = "https://registry.yarnpkg.com/fileset/-/fileset-2.0.3.tgz";
4258 sha1 = "8e7548a96d3cc2327ee5e674168723a333bba2a0";
4259 };
4260 }
4261
4262 {
4263 name = "filesize-3.6.1.tgz";
4264 path = fetchurl {
4265 name = "filesize-3.6.1.tgz";
4266 url = "https://registry.yarnpkg.com/filesize/-/filesize-3.6.1.tgz";
4267 sha1 = "090bb3ee01b6f801a8a8be99d31710b3422bb317";
4268 };
4269 }
4270
4271 {
4272 name = "fill-range-2.2.4.tgz";
4273 path = fetchurl {
4274 name = "fill-range-2.2.4.tgz";
4275 url = "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.4.tgz";
4276 sha1 = "eb1e773abb056dcd8df2bfdf6af59b8b3a936565";
4277 };
4278 }
4279
4280 {
4281 name = "fill-range-4.0.0.tgz";
4282 path = fetchurl {
4283 name = "fill-range-4.0.0.tgz";
4284 url = "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz";
4285 sha1 = "d544811d428f98eb06a63dc402d2403c328c38f7";
4286 };
4287 }
4288
4289 {
4290 name = "finalhandler-1.1.1.tgz";
4291 path = fetchurl {
4292 name = "finalhandler-1.1.1.tgz";
4293 url = "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.1.tgz";
4294 sha1 = "eebf4ed840079c83f4249038c9d703008301b105";
4295 };
4296 }
4297
4298 {
4299 name = "find-cache-dir-1.0.0.tgz";
4300 path = fetchurl {
4301 name = "find-cache-dir-1.0.0.tgz";
4302 url = "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-1.0.0.tgz";
4303 sha1 = "9288e3e9e3cc3748717d39eade17cf71fc30ee6f";
4304 };
4305 }
4306
4307 {
4308 name = "find-cache-dir-2.0.0.tgz";
4309 path = fetchurl {
4310 name = "find-cache-dir-2.0.0.tgz";
4311 url = "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.0.0.tgz";
4312 sha1 = "4c1faed59f45184530fb9d7fa123a4d04a98472d";
4313 };
4314 }
4315
4316 {
4317 name = "find-up-1.1.2.tgz";
4318 path = fetchurl {
4319 name = "find-up-1.1.2.tgz";
4320 url = "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz";
4321 sha1 = "6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f";
4322 };
4323 }
4324
4325 {
4326 name = "find-up-2.1.0.tgz";
4327 path = fetchurl {
4328 name = "find-up-2.1.0.tgz";
4329 url = "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz";
4330 sha1 = "45d1b7e506c717ddd482775a2b77920a3c0c57a7";
4331 };
4332 }
4333
4334 {
4335 name = "find-up-3.0.0.tgz";
4336 path = fetchurl {
4337 name = "find-up-3.0.0.tgz";
4338 url = "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz";
4339 sha1 = "49169f1d7993430646da61ecc5ae355c21c97b73";
4340 };
4341 }
4342
4343 {
4344 name = "flat-cache-1.3.0.tgz";
4345 path = fetchurl {
4346 name = "flat-cache-1.3.0.tgz";
4347 url = "https://registry.yarnpkg.com/flat-cache/-/flat-cache-1.3.0.tgz";
4348 sha1 = "d3030b32b38154f4e3b7e9c709f490f7ef97c481";
4349 };
4350 }
4351
4352 {
4353 name = "flatten-1.0.2.tgz";
4354 path = fetchurl {
4355 name = "flatten-1.0.2.tgz";
4356 url = "https://registry.yarnpkg.com/flatten/-/flatten-1.0.2.tgz";
4357 sha1 = "dae46a9d78fbe25292258cc1e780a41d95c03782";
4358 };
4359 }
4360
4361 {
4362 name = "flush-write-stream-1.0.3.tgz";
4363 path = fetchurl {
4364 name = "flush-write-stream-1.0.3.tgz";
4365 url = "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.0.3.tgz";
4366 sha1 = "c5d586ef38af6097650b49bc41b55fabb19f35bd";
4367 };
4368 }
4369
4370 {
4371 name = "follow-redirects-1.5.8.tgz";
4372 path = fetchurl {
4373 name = "follow-redirects-1.5.8.tgz";
4374 url = "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.5.8.tgz";
4375 sha1 = "1dbfe13e45ad969f813e86c00e5296f525c885a1";
4376 };
4377 }
4378
4379 {
4380 name = "font-awesome-4.7.0.tgz";
4381 path = fetchurl {
4382 name = "font-awesome-4.7.0.tgz";
4383 url = "https://registry.yarnpkg.com/font-awesome/-/font-awesome-4.7.0.tgz";
4384 sha1 = "8fa8cf0411a1a31afd07b06d2902bb9fc815a133";
4385 };
4386 }
4387
4388 {
4389 name = "for-in-0.1.8.tgz";
4390 path = fetchurl {
4391 name = "for-in-0.1.8.tgz";
4392 url = "https://registry.yarnpkg.com/for-in/-/for-in-0.1.8.tgz";
4393 sha1 = "d8773908e31256109952b1fdb9b3fa867d2775e1";
4394 };
4395 }
4396
4397 {
4398 name = "for-in-1.0.2.tgz";
4399 path = fetchurl {
4400 name = "for-in-1.0.2.tgz";
4401 url = "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz";
4402 sha1 = "81068d295a8142ec0ac726c6e2200c30fb6d5e80";
4403 };
4404 }
4405
4406 {
4407 name = "for-own-0.1.5.tgz";
4408 path = fetchurl {
4409 name = "for-own-0.1.5.tgz";
4410 url = "https://registry.yarnpkg.com/for-own/-/for-own-0.1.5.tgz";
4411 sha1 = "5265c681a4f294dabbf17c9509b6763aa84510ce";
4412 };
4413 }
4414
4415 {
4416 name = "for-own-1.0.0.tgz";
4417 path = fetchurl {
4418 name = "for-own-1.0.0.tgz";
4419 url = "https://registry.yarnpkg.com/for-own/-/for-own-1.0.0.tgz";
4420 sha1 = "c63332f415cedc4b04dbfe70cf836494c53cb44b";
4421 };
4422 }
4423
4424 {
4425 name = "forever-agent-0.6.1.tgz";
4426 path = fetchurl {
4427 name = "forever-agent-0.6.1.tgz";
4428 url = "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz";
4429 sha1 = "fbc71f0c41adeb37f96c577ad1ed42d8fdacca91";
4430 };
4431 }
4432
4433 {
4434 name = "form-data-2.1.4.tgz";
4435 path = fetchurl {
4436 name = "form-data-2.1.4.tgz";
4437 url = "https://registry.yarnpkg.com/form-data/-/form-data-2.1.4.tgz";
4438 sha1 = "33c183acf193276ecaa98143a69e94bfee1750d1";
4439 };
4440 }
4441
4442 {
4443 name = "form-data-2.3.2.tgz";
4444 path = fetchurl {
4445 name = "form-data-2.3.2.tgz";
4446 url = "https://registry.yarnpkg.com/form-data/-/form-data-2.3.2.tgz";
4447 sha1 = "4970498be604c20c005d4f5c23aecd21d6b49099";
4448 };
4449 }
4450
4451 {
4452 name = "forwarded-0.1.2.tgz";
4453 path = fetchurl {
4454 name = "forwarded-0.1.2.tgz";
4455 url = "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz";
4456 sha1 = "98c23dab1175657b8c0573e8ceccd91b0ff18c84";
4457 };
4458 }
4459
4460 {
4461 name = "fragment-cache-0.2.1.tgz";
4462 path = fetchurl {
4463 name = "fragment-cache-0.2.1.tgz";
4464 url = "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz";
4465 sha1 = "4290fad27f13e89be7f33799c6bc5a0abfff0d19";
4466 };
4467 }
4468
4469 {
4470 name = "fresh-0.5.2.tgz";
4471 path = fetchurl {
4472 name = "fresh-0.5.2.tgz";
4473 url = "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz";
4474 sha1 = "3d8cadd90d976569fa835ab1f8e4b23a105605a7";
4475 };
4476 }
4477
4478 {
4479 name = "from2-2.3.0.tgz";
4480 path = fetchurl {
4481 name = "from2-2.3.0.tgz";
4482 url = "https://registry.yarnpkg.com/from2/-/from2-2.3.0.tgz";
4483 sha1 = "8bfb5502bde4a4d36cfdeea007fcca21d7e382af";
4484 };
4485 }
4486
4487 {
4488 name = "fs-extra-7.0.0.tgz";
4489 path = fetchurl {
4490 name = "fs-extra-7.0.0.tgz";
4491 url = "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.0.tgz";
4492 sha1 = "8cc3f47ce07ef7b3593a11b9fb245f7e34c041d6";
4493 };
4494 }
4495
4496 {
4497 name = "fs-minipass-1.2.5.tgz";
4498 path = fetchurl {
4499 name = "fs-minipass-1.2.5.tgz";
4500 url = "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.5.tgz";
4501 sha1 = "06c277218454ec288df77ada54a03b8702aacb9d";
4502 };
4503 }
4504
4505 {
4506 name = "fs-write-stream-atomic-1.0.10.tgz";
4507 path = fetchurl {
4508 name = "fs-write-stream-atomic-1.0.10.tgz";
4509 url = "https://registry.yarnpkg.com/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz";
4510 sha1 = "b47df53493ef911df75731e70a9ded0189db40c9";
4511 };
4512 }
4513
4514 {
4515 name = "fs.realpath-1.0.0.tgz";
4516 path = fetchurl {
4517 name = "fs.realpath-1.0.0.tgz";
4518 url = "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz";
4519 sha1 = "1504ad2523158caa40db4a2787cb01411994ea4f";
4520 };
4521 }
4522
4523 {
4524 name = "fsevents-1.2.4.tgz";
4525 path = fetchurl {
4526 name = "fsevents-1.2.4.tgz";
4527 url = "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.4.tgz";
4528 sha1 = "f41dcb1af2582af3692da36fc55cbd8e1041c426";
4529 };
4530 }
4531
4532 {
4533 name = "fstream-ignore-1.0.5.tgz";
4534 path = fetchurl {
4535 name = "fstream-ignore-1.0.5.tgz";
4536 url = "https://registry.yarnpkg.com/fstream-ignore/-/fstream-ignore-1.0.5.tgz";
4537 sha1 = "9c31dae34767018fe1d249b24dada67d092da105";
4538 };
4539 }
4540
4541 {
4542 name = "fstream-1.0.11.tgz";
4543 path = fetchurl {
4544 name = "fstream-1.0.11.tgz";
4545 url = "https://registry.yarnpkg.com/fstream/-/fstream-1.0.11.tgz";
4546 sha1 = "5c1fb1f117477114f0632a0eb4b71b3cb0fd3171";
4547 };
4548 }
4549
4550 {
4551 name = "function-bind-1.1.1.tgz";
4552 path = fetchurl {
4553 name = "function-bind-1.1.1.tgz";
4554 url = "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz";
4555 sha1 = "a56899d3ea3c9bab874bb9773b7c5ede92f4895d";
4556 };
4557 }
4558
4559 {
4560 name = "function.prototype.name-1.1.0.tgz";
4561 path = fetchurl {
4562 name = "function.prototype.name-1.1.0.tgz";
4563 url = "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.0.tgz";
4564 sha1 = "8bd763cc0af860a859cc5d49384d74b932cd2327";
4565 };
4566 }
4567
4568 {
4569 name = "functional-red-black-tree-1.0.1.tgz";
4570 path = fetchurl {
4571 name = "functional-red-black-tree-1.0.1.tgz";
4572 url = "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz";
4573 sha1 = "1b0ab3bd553b2a0d6399d29c0e3ea0b252078327";
4574 };
4575 }
4576
4577 {
4578 name = "gauge-2.7.4.tgz";
4579 path = fetchurl {
4580 name = "gauge-2.7.4.tgz";
4581 url = "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz";
4582 sha1 = "2c03405c7538c39d7eb37b317022e325fb018bf7";
4583 };
4584 }
4585
4586 {
4587 name = "gaze-1.1.3.tgz";
4588 path = fetchurl {
4589 name = "gaze-1.1.3.tgz";
4590 url = "https://registry.yarnpkg.com/gaze/-/gaze-1.1.3.tgz";
4591 sha1 = "c441733e13b927ac8c0ff0b4c3b033f28812924a";
4592 };
4593 }
4594
4595 {
4596 name = "generic-pool-2.4.3.tgz";
4597 path = fetchurl {
4598 name = "generic-pool-2.4.3.tgz";
4599 url = "https://registry.yarnpkg.com/generic-pool/-/generic-pool-2.4.3.tgz";
4600 sha1 = "780c36f69dfad05a5a045dd37be7adca11a4f6ff";
4601 };
4602 }
4603
4604 {
4605 name = "get-caller-file-1.0.3.tgz";
4606 path = fetchurl {
4607 name = "get-caller-file-1.0.3.tgz";
4608 url = "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz";
4609 sha1 = "f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a";
4610 };
4611 }
4612
4613 {
4614 name = "get-stdin-4.0.1.tgz";
4615 path = fetchurl {
4616 name = "get-stdin-4.0.1.tgz";
4617 url = "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz";
4618 sha1 = "b968c6b0a04384324902e8bf1a5df32579a450fe";
4619 };
4620 }
4621
4622 {
4623 name = "get-stream-3.0.0.tgz";
4624 path = fetchurl {
4625 name = "get-stream-3.0.0.tgz";
4626 url = "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz";
4627 sha1 = "8e943d1358dc37555054ecbe2edb05aa174ede14";
4628 };
4629 }
4630
4631 {
4632 name = "get-value-2.0.6.tgz";
4633 path = fetchurl {
4634 name = "get-value-2.0.6.tgz";
4635 url = "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz";
4636 sha1 = "dc15ca1c672387ca76bd37ac0a395ba2042a2c28";
4637 };
4638 }
4639
4640 {
4641 name = "getpass-0.1.7.tgz";
4642 path = fetchurl {
4643 name = "getpass-0.1.7.tgz";
4644 url = "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz";
4645 sha1 = "5eff8e3e684d569ae4cb2b1282604e8ba62149fa";
4646 };
4647 }
4648
4649 {
4650 name = "glob-base-0.3.0.tgz";
4651 path = fetchurl {
4652 name = "glob-base-0.3.0.tgz";
4653 url = "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz";
4654 sha1 = "dbb164f6221b1c0b1ccf82aea328b497df0ea3c4";
4655 };
4656 }
4657
4658 {
4659 name = "glob-parent-2.0.0.tgz";
4660 path = fetchurl {
4661 name = "glob-parent-2.0.0.tgz";
4662 url = "https://registry.yarnpkg.com/glob-parent/-/glob-parent-2.0.0.tgz";
4663 sha1 = "81383d72db054fcccf5336daa902f182f6edbb28";
4664 };
4665 }
4666
4667 {
4668 name = "glob-parent-3.1.0.tgz";
4669 path = fetchurl {
4670 name = "glob-parent-3.1.0.tgz";
4671 url = "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz";
4672 sha1 = "9e6af6299d8d3bd2bd40430832bd113df906c5ae";
4673 };
4674 }
4675
4676 {
4677 name = "glob-7.1.3.tgz";
4678 path = fetchurl {
4679 name = "glob-7.1.3.tgz";
4680 url = "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz";
4681 sha1 = "3960832d3f1574108342dafd3a67b332c0969df1";
4682 };
4683 }
4684
4685 {
4686 name = "global-modules-path-2.3.0.tgz";
4687 path = fetchurl {
4688 name = "global-modules-path-2.3.0.tgz";
4689 url = "https://registry.yarnpkg.com/global-modules-path/-/global-modules-path-2.3.0.tgz";
4690 sha1 = "b0e2bac6beac39745f7db5c59d26a36a0b94f7dc";
4691 };
4692 }
4693
4694 {
4695 name = "globals-11.7.0.tgz";
4696 path = fetchurl {
4697 name = "globals-11.7.0.tgz";
4698 url = "https://registry.yarnpkg.com/globals/-/globals-11.7.0.tgz";
4699 sha1 = "a583faa43055b1aca771914bf68258e2fc125673";
4700 };
4701 }
4702
4703 {
4704 name = "globals-9.18.0.tgz";
4705 path = fetchurl {
4706 name = "globals-9.18.0.tgz";
4707 url = "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz";
4708 sha1 = "aa3896b3e69b487f17e31ed2143d69a8e30c2d8a";
4709 };
4710 }
4711
4712 {
4713 name = "globby-5.0.0.tgz";
4714 path = fetchurl {
4715 name = "globby-5.0.0.tgz";
4716 url = "https://registry.yarnpkg.com/globby/-/globby-5.0.0.tgz";
4717 sha1 = "ebd84667ca0dbb330b99bcfc68eac2bc54370e0d";
4718 };
4719 }
4720
4721 {
4722 name = "globby-6.1.0.tgz";
4723 path = fetchurl {
4724 name = "globby-6.1.0.tgz";
4725 url = "https://registry.yarnpkg.com/globby/-/globby-6.1.0.tgz";
4726 sha1 = "f5a6d70e8395e21c858fb0489d64df02424d506c";
4727 };
4728 }
4729
4730 {
4731 name = "globule-1.2.1.tgz";
4732 path = fetchurl {
4733 name = "globule-1.2.1.tgz";
4734 url = "https://registry.yarnpkg.com/globule/-/globule-1.2.1.tgz";
4735 sha1 = "5dffb1b191f22d20797a9369b49eab4e9839696d";
4736 };
4737 }
4738
4739 {
4740 name = "gonzales-pe-4.2.3.tgz";
4741 path = fetchurl {
4742 name = "gonzales-pe-4.2.3.tgz";
4743 url = "https://registry.yarnpkg.com/gonzales-pe/-/gonzales-pe-4.2.3.tgz";
4744 sha1 = "41091703625433285e0aee3aa47829fc1fbeb6f2";
4745 };
4746 }
4747
4748 {
4749 name = "graceful-fs-4.1.11.tgz";
4750 path = fetchurl {
4751 name = "graceful-fs-4.1.11.tgz";
4752 url = "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz";
4753 sha1 = "0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658";
4754 };
4755 }
4756
4757 {
4758 name = "growly-1.3.0.tgz";
4759 path = fetchurl {
4760 name = "growly-1.3.0.tgz";
4761 url = "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz";
4762 sha1 = "f10748cbe76af964b7c96c93c6bcc28af120c081";
4763 };
4764 }
4765
4766 {
4767 name = "gzip-size-4.1.0.tgz";
4768 path = fetchurl {
4769 name = "gzip-size-4.1.0.tgz";
4770 url = "https://registry.yarnpkg.com/gzip-size/-/gzip-size-4.1.0.tgz";
4771 sha1 = "8ae096257eabe7d69c45be2b67c448124ffb517c";
4772 };
4773 }
4774
4775 {
4776 name = "handle-thing-1.2.5.tgz";
4777 path = fetchurl {
4778 name = "handle-thing-1.2.5.tgz";
4779 url = "https://registry.yarnpkg.com/handle-thing/-/handle-thing-1.2.5.tgz";
4780 sha1 = "fd7aad726bf1a5fd16dfc29b2f7a6601d27139c4";
4781 };
4782 }
4783
4784 {
4785 name = "handlebars-4.0.12.tgz";
4786 path = fetchurl {
4787 name = "handlebars-4.0.12.tgz";
4788 url = "https://registry.yarnpkg.com/handlebars/-/handlebars-4.0.12.tgz";
4789 sha1 = "2c15c8a96d46da5e266700518ba8cb8d919d5bc5";
4790 };
4791 }
4792
4793 {
4794 name = "har-schema-1.0.5.tgz";
4795 path = fetchurl {
4796 name = "har-schema-1.0.5.tgz";
4797 url = "https://registry.yarnpkg.com/har-schema/-/har-schema-1.0.5.tgz";
4798 sha1 = "d263135f43307c02c602afc8fe95970c0151369e";
4799 };
4800 }
4801
4802 {
4803 name = "har-schema-2.0.0.tgz";
4804 path = fetchurl {
4805 name = "har-schema-2.0.0.tgz";
4806 url = "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz";
4807 sha1 = "a94c2224ebcac04782a0d9035521f24735b7ec92";
4808 };
4809 }
4810
4811 {
4812 name = "har-validator-4.2.1.tgz";
4813 path = fetchurl {
4814 name = "har-validator-4.2.1.tgz";
4815 url = "https://registry.yarnpkg.com/har-validator/-/har-validator-4.2.1.tgz";
4816 sha1 = "33481d0f1bbff600dd203d75812a6a5fba002e2a";
4817 };
4818 }
4819
4820 {
4821 name = "har-validator-5.0.3.tgz";
4822 path = fetchurl {
4823 name = "har-validator-5.0.3.tgz";
4824 url = "https://registry.yarnpkg.com/har-validator/-/har-validator-5.0.3.tgz";
4825 sha1 = "ba402c266194f15956ef15e0fcf242993f6a7dfd";
4826 };
4827 }
4828
4829 {
4830 name = "har-validator-5.1.0.tgz";
4831 path = fetchurl {
4832 name = "har-validator-5.1.0.tgz";
4833 url = "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.0.tgz";
4834 sha1 = "44657f5688a22cfd4b72486e81b3a3fb11742c29";
4835 };
4836 }
4837
4838 {
4839 name = "has-ansi-2.0.0.tgz";
4840 path = fetchurl {
4841 name = "has-ansi-2.0.0.tgz";
4842 url = "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz";
4843 sha1 = "34f5049ce1ecdf2b0649af3ef24e45ed35416d91";
4844 };
4845 }
4846
4847 {
4848 name = "has-flag-1.0.0.tgz";
4849 path = fetchurl {
4850 name = "has-flag-1.0.0.tgz";
4851 url = "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz";
4852 sha1 = "9d9e793165ce017a00f00418c43f942a7b1d11fa";
4853 };
4854 }
4855
4856 {
4857 name = "has-flag-3.0.0.tgz";
4858 path = fetchurl {
4859 name = "has-flag-3.0.0.tgz";
4860 url = "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz";
4861 sha1 = "b5d454dc2199ae225699f3467e5a07f3b955bafd";
4862 };
4863 }
4864
4865 {
4866 name = "has-symbols-1.0.0.tgz";
4867 path = fetchurl {
4868 name = "has-symbols-1.0.0.tgz";
4869 url = "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.0.tgz";
4870 sha1 = "ba1a8f1af2a0fc39650f5c850367704122063b44";
4871 };
4872 }
4873
4874 {
4875 name = "has-unicode-2.0.1.tgz";
4876 path = fetchurl {
4877 name = "has-unicode-2.0.1.tgz";
4878 url = "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz";
4879 sha1 = "e0e6fe6a28cf51138855e086d1691e771de2a8b9";
4880 };
4881 }
4882
4883 {
4884 name = "has-value-0.3.1.tgz";
4885 path = fetchurl {
4886 name = "has-value-0.3.1.tgz";
4887 url = "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz";
4888 sha1 = "7b1f58bada62ca827ec0a2078025654845995e1f";
4889 };
4890 }
4891
4892 {
4893 name = "has-value-1.0.0.tgz";
4894 path = fetchurl {
4895 name = "has-value-1.0.0.tgz";
4896 url = "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz";
4897 sha1 = "18b281da585b1c5c51def24c930ed29a0be6b177";
4898 };
4899 }
4900
4901 {
4902 name = "has-values-0.1.4.tgz";
4903 path = fetchurl {
4904 name = "has-values-0.1.4.tgz";
4905 url = "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz";
4906 sha1 = "6d61de95d91dfca9b9a02089ad384bff8f62b771";
4907 };
4908 }
4909
4910 {
4911 name = "has-values-1.0.0.tgz";
4912 path = fetchurl {
4913 name = "has-values-1.0.0.tgz";
4914 url = "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz";
4915 sha1 = "95b0b63fec2146619a6fe57fe75628d5a39efe4f";
4916 };
4917 }
4918
4919 {
4920 name = "has-1.0.3.tgz";
4921 path = fetchurl {
4922 name = "has-1.0.3.tgz";
4923 url = "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz";
4924 sha1 = "722d7cbfc1f6aa8241f16dd814e011e1f41e8796";
4925 };
4926 }
4927
4928 {
4929 name = "hash-base-3.0.4.tgz";
4930 path = fetchurl {
4931 name = "hash-base-3.0.4.tgz";
4932 url = "https://registry.yarnpkg.com/hash-base/-/hash-base-3.0.4.tgz";
4933 sha1 = "5fc8686847ecd73499403319a6b0a3f3f6ae4918";
4934 };
4935 }
4936
4937 {
4938 name = "hash.js-1.1.5.tgz";
4939 path = fetchurl {
4940 name = "hash.js-1.1.5.tgz";
4941 url = "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.5.tgz";
4942 sha1 = "e38ab4b85dfb1e0c40fe9265c0e9b54854c23812";
4943 };
4944 }
4945
4946 {
4947 name = "hawk-3.1.3.tgz";
4948 path = fetchurl {
4949 name = "hawk-3.1.3.tgz";
4950 url = "https://registry.yarnpkg.com/hawk/-/hawk-3.1.3.tgz";
4951 sha1 = "078444bd7c1640b0fe540d2c9b73d59678e8e1c4";
4952 };
4953 }
4954
4955 {
4956 name = "history-4.7.2.tgz";
4957 path = fetchurl {
4958 name = "history-4.7.2.tgz";
4959 url = "https://registry.yarnpkg.com/history/-/history-4.7.2.tgz";
4960 sha1 = "22b5c7f31633c5b8021c7f4a8a954ac139ee8d5b";
4961 };
4962 }
4963
4964 {
4965 name = "hmac-drbg-1.0.1.tgz";
4966 path = fetchurl {
4967 name = "hmac-drbg-1.0.1.tgz";
4968 url = "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz";
4969 sha1 = "d2745701025a6c775a6c545793ed502fc0c649a1";
4970 };
4971 }
4972
4973 {
4974 name = "hoek-2.16.3.tgz";
4975 path = fetchurl {
4976 name = "hoek-2.16.3.tgz";
4977 url = "https://registry.yarnpkg.com/hoek/-/hoek-2.16.3.tgz";
4978 sha1 = "20bb7403d3cea398e91dc4710a8ff1b8274a25ed";
4979 };
4980 }
4981
4982 {
4983 name = "hoist-non-react-statics-2.5.5.tgz";
4984 path = fetchurl {
4985 name = "hoist-non-react-statics-2.5.5.tgz";
4986 url = "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-2.5.5.tgz";
4987 sha1 = "c5903cf409c0dfd908f388e619d86b9c1174cb47";
4988 };
4989 }
4990
4991 {
4992 name = "home-or-tmp-2.0.0.tgz";
4993 path = fetchurl {
4994 name = "home-or-tmp-2.0.0.tgz";
4995 url = "https://registry.yarnpkg.com/home-or-tmp/-/home-or-tmp-2.0.0.tgz";
4996 sha1 = "e36c3f2d2cae7d746a857e38d18d5f32a7882db8";
4997 };
4998 }
4999
5000 {
5001 name = "hosted-git-info-2.7.1.tgz";
5002 path = fetchurl {
5003 name = "hosted-git-info-2.7.1.tgz";
5004 url = "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.7.1.tgz";
5005 sha1 = "97f236977bd6e125408930ff6de3eec6281ec047";
5006 };
5007 }
5008
5009 {
5010 name = "hpack.js-2.1.6.tgz";
5011 path = fetchurl {
5012 name = "hpack.js-2.1.6.tgz";
5013 url = "https://registry.yarnpkg.com/hpack.js/-/hpack.js-2.1.6.tgz";
5014 sha1 = "87774c0949e513f42e84575b3c45681fade2a0b2";
5015 };
5016 }
5017
5018 {
5019 name = "html-encoding-sniffer-1.0.2.tgz";
5020 path = fetchurl {
5021 name = "html-encoding-sniffer-1.0.2.tgz";
5022 url = "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz";
5023 sha1 = "e70d84b94da53aa375e11fe3a351be6642ca46f8";
5024 };
5025 }
5026
5027 {
5028 name = "html-entities-1.2.1.tgz";
5029 path = fetchurl {
5030 name = "html-entities-1.2.1.tgz";
5031 url = "https://registry.yarnpkg.com/html-entities/-/html-entities-1.2.1.tgz";
5032 sha1 = "0df29351f0721163515dfb9e5543e5f6eed5162f";
5033 };
5034 }
5035
5036 {
5037 name = "htmlparser2-3.9.2.tgz";
5038 path = fetchurl {
5039 name = "htmlparser2-3.9.2.tgz";
5040 url = "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.9.2.tgz";
5041 sha1 = "1bdf87acca0f3f9e53fa4fcceb0f4b4cbb00b338";
5042 };
5043 }
5044
5045 {
5046 name = "http-deceiver-1.2.7.tgz";
5047 path = fetchurl {
5048 name = "http-deceiver-1.2.7.tgz";
5049 url = "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz";
5050 sha1 = "fa7168944ab9a519d337cb0bec7284dc3e723d87";
5051 };
5052 }
5053
5054 {
5055 name = "http-errors-1.6.2.tgz";
5056 path = fetchurl {
5057 name = "http-errors-1.6.2.tgz";
5058 url = "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.2.tgz";
5059 sha1 = "0a002cc85707192a7e7946ceedc11155f60ec736";
5060 };
5061 }
5062
5063 {
5064 name = "http-errors-1.6.3.tgz";
5065 path = fetchurl {
5066 name = "http-errors-1.6.3.tgz";
5067 url = "http://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz";
5068 sha1 = "8b55680bb4be283a0b5bf4ea2e38580be1d9320d";
5069 };
5070 }
5071
5072 {
5073 name = "http-link-header-0.8.0.tgz";
5074 path = fetchurl {
5075 name = "http-link-header-0.8.0.tgz";
5076 url = "https://registry.yarnpkg.com/http-link-header/-/http-link-header-0.8.0.tgz";
5077 sha1 = "a22b41a0c9b1e2d8fac1bf1b697c6bd532d5f5e4";
5078 };
5079 }
5080
5081 {
5082 name = "http-parser-js-0.4.13.tgz";
5083 path = fetchurl {
5084 name = "http-parser-js-0.4.13.tgz";
5085 url = "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.4.13.tgz";
5086 sha1 = "3bd6d6fde6e3172c9334c3b33b6c193d80fe1137";
5087 };
5088 }
5089
5090 {
5091 name = "http-proxy-middleware-0.18.0.tgz";
5092 path = fetchurl {
5093 name = "http-proxy-middleware-0.18.0.tgz";
5094 url = "http://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.18.0.tgz";
5095 sha1 = "0987e6bb5a5606e5a69168d8f967a87f15dd8aab";
5096 };
5097 }
5098
5099 {
5100 name = "http-proxy-1.17.0.tgz";
5101 path = fetchurl {
5102 name = "http-proxy-1.17.0.tgz";
5103 url = "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.17.0.tgz";
5104 sha1 = "7ad38494658f84605e2f6db4436df410f4e5be9a";
5105 };
5106 }
5107
5108 {
5109 name = "http-signature-1.1.1.tgz";
5110 path = fetchurl {
5111 name = "http-signature-1.1.1.tgz";
5112 url = "https://registry.yarnpkg.com/http-signature/-/http-signature-1.1.1.tgz";
5113 sha1 = "df72e267066cd0ac67fb76adf8e134a8fbcf91bf";
5114 };
5115 }
5116
5117 {
5118 name = "http-signature-1.2.0.tgz";
5119 path = fetchurl {
5120 name = "http-signature-1.2.0.tgz";
5121 url = "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz";
5122 sha1 = "9aecd925114772f3d95b65a60abb8f7c18fbace1";
5123 };
5124 }
5125
5126 {
5127 name = "https-browserify-1.0.0.tgz";
5128 path = fetchurl {
5129 name = "https-browserify-1.0.0.tgz";
5130 url = "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz";
5131 sha1 = "ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73";
5132 };
5133 }
5134
5135 {
5136 name = "iconv-lite-0.4.19.tgz";
5137 path = fetchurl {
5138 name = "iconv-lite-0.4.19.tgz";
5139 url = "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.19.tgz";
5140 sha1 = "f7468f60135f5e5dad3399c0a81be9a1603a082b";
5141 };
5142 }
5143
5144 {
5145 name = "iconv-lite-0.4.23.tgz";
5146 path = fetchurl {
5147 name = "iconv-lite-0.4.23.tgz";
5148 url = "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.23.tgz";
5149 sha1 = "297871f63be507adcfbfca715d0cd0eed84e9a63";
5150 };
5151 }
5152
5153 {
5154 name = "iconv-lite-0.4.24.tgz";
5155 path = fetchurl {
5156 name = "iconv-lite-0.4.24.tgz";
5157 url = "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz";
5158 sha1 = "2022b4b25fbddc21d2f524974a474aafe733908b";
5159 };
5160 }
5161
5162 {
5163 name = "icss-replace-symbols-1.1.0.tgz";
5164 path = fetchurl {
5165 name = "icss-replace-symbols-1.1.0.tgz";
5166 url = "https://registry.yarnpkg.com/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz";
5167 sha1 = "06ea6f83679a7749e386cfe1fe812ae5db223ded";
5168 };
5169 }
5170
5171 {
5172 name = "icss-utils-2.1.0.tgz";
5173 path = fetchurl {
5174 name = "icss-utils-2.1.0.tgz";
5175 url = "https://registry.yarnpkg.com/icss-utils/-/icss-utils-2.1.0.tgz";
5176 sha1 = "83f0a0ec378bf3246178b6c2ad9136f135b1c962";
5177 };
5178 }
5179
5180 {
5181 name = "ieee754-1.1.12.tgz";
5182 path = fetchurl {
5183 name = "ieee754-1.1.12.tgz";
5184 url = "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.12.tgz";
5185 sha1 = "50bf24e5b9c8bb98af4964c941cdb0918da7b60b";
5186 };
5187 }
5188
5189 {
5190 name = "iferr-0.1.5.tgz";
5191 path = fetchurl {
5192 name = "iferr-0.1.5.tgz";
5193 url = "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz";
5194 sha1 = "c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501";
5195 };
5196 }
5197
5198 {
5199 name = "ignore-walk-3.0.1.tgz";
5200 path = fetchurl {
5201 name = "ignore-walk-3.0.1.tgz";
5202 url = "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.1.tgz";
5203 sha1 = "a83e62e7d272ac0e3b551aaa82831a19b69f82f8";
5204 };
5205 }
5206
5207 {
5208 name = "ignore-3.3.10.tgz";
5209 path = fetchurl {
5210 name = "ignore-3.3.10.tgz";
5211 url = "https://registry.yarnpkg.com/ignore/-/ignore-3.3.10.tgz";
5212 sha1 = "0a97fb876986e8081c631160f8f9f389157f0043";
5213 };
5214 }
5215
5216 {
5217 name = "immutable-3.8.2.tgz";
5218 path = fetchurl {
5219 name = "immutable-3.8.2.tgz";
5220 url = "https://registry.yarnpkg.com/immutable/-/immutable-3.8.2.tgz";
5221 sha1 = "c2439951455bb39913daf281376f1530e104adf3";
5222 };
5223 }
5224
5225 {
5226 name = "import-cwd-2.1.0.tgz";
5227 path = fetchurl {
5228 name = "import-cwd-2.1.0.tgz";
5229 url = "https://registry.yarnpkg.com/import-cwd/-/import-cwd-2.1.0.tgz";
5230 sha1 = "aa6cf36e722761285cb371ec6519f53e2435b0a9";
5231 };
5232 }
5233
5234 {
5235 name = "import-from-2.1.0.tgz";
5236 path = fetchurl {
5237 name = "import-from-2.1.0.tgz";
5238 url = "https://registry.yarnpkg.com/import-from/-/import-from-2.1.0.tgz";
5239 sha1 = "335db7f2a7affd53aaa471d4b8021dee36b7f3b1";
5240 };
5241 }
5242
5243 {
5244 name = "import-local-1.0.0.tgz";
5245 path = fetchurl {
5246 name = "import-local-1.0.0.tgz";
5247 url = "https://registry.yarnpkg.com/import-local/-/import-local-1.0.0.tgz";
5248 sha1 = "5e4ffdc03f4fe6c009c6729beb29631c2f8227bc";
5249 };
5250 }
5251
5252 {
5253 name = "import-local-2.0.0.tgz";
5254 path = fetchurl {
5255 name = "import-local-2.0.0.tgz";
5256 url = "https://registry.yarnpkg.com/import-local/-/import-local-2.0.0.tgz";
5257 sha1 = "55070be38a5993cf18ef6db7e961f5bee5c5a09d";
5258 };
5259 }
5260
5261 {
5262 name = "imports-loader-0.8.0.tgz";
5263 path = fetchurl {
5264 name = "imports-loader-0.8.0.tgz";
5265 url = "https://registry.yarnpkg.com/imports-loader/-/imports-loader-0.8.0.tgz";
5266 sha1 = "030ea51b8ca05977c40a3abfd9b4088fe0be9a69";
5267 };
5268 }
5269
5270 {
5271 name = "imurmurhash-0.1.4.tgz";
5272 path = fetchurl {
5273 name = "imurmurhash-0.1.4.tgz";
5274 url = "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz";
5275 sha1 = "9218b9b2b928a238b13dc4fb6b6d576f231453ea";
5276 };
5277 }
5278
5279 {
5280 name = "in-publish-2.0.0.tgz";
5281 path = fetchurl {
5282 name = "in-publish-2.0.0.tgz";
5283 url = "https://registry.yarnpkg.com/in-publish/-/in-publish-2.0.0.tgz";
5284 sha1 = "e20ff5e3a2afc2690320b6dc552682a9c7fadf51";
5285 };
5286 }
5287
5288 {
5289 name = "indent-string-2.1.0.tgz";
5290 path = fetchurl {
5291 name = "indent-string-2.1.0.tgz";
5292 url = "https://registry.yarnpkg.com/indent-string/-/indent-string-2.1.0.tgz";
5293 sha1 = "8e2d48348742121b4a8218b7a137e9a52049dc80";
5294 };
5295 }
5296
5297 {
5298 name = "indexes-of-1.0.1.tgz";
5299 path = fetchurl {
5300 name = "indexes-of-1.0.1.tgz";
5301 url = "https://registry.yarnpkg.com/indexes-of/-/indexes-of-1.0.1.tgz";
5302 sha1 = "f30f716c8e2bd346c7b67d3df3915566a7c05607";
5303 };
5304 }
5305
5306 {
5307 name = "indexof-0.0.1.tgz";
5308 path = fetchurl {
5309 name = "indexof-0.0.1.tgz";
5310 url = "https://registry.yarnpkg.com/indexof/-/indexof-0.0.1.tgz";
5311 sha1 = "82dc336d232b9062179d05ab3293a66059fd435d";
5312 };
5313 }
5314
5315 {
5316 name = "inflight-1.0.6.tgz";
5317 path = fetchurl {
5318 name = "inflight-1.0.6.tgz";
5319 url = "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz";
5320 sha1 = "49bd6331d7d02d0c09bc910a1075ba8165b56df9";
5321 };
5322 }
5323
5324 {
5325 name = "inherits-2.0.3.tgz";
5326 path = fetchurl {
5327 name = "inherits-2.0.3.tgz";
5328 url = "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz";
5329 sha1 = "633c2c83e3da42a502f52466022480f4208261de";
5330 };
5331 }
5332
5333 {
5334 name = "inherits-2.0.1.tgz";
5335 path = fetchurl {
5336 name = "inherits-2.0.1.tgz";
5337 url = "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz";
5338 sha1 = "b17d08d326b4423e568eff719f91b0b1cbdf69f1";
5339 };
5340 }
5341
5342 {
5343 name = "ini-1.3.5.tgz";
5344 path = fetchurl {
5345 name = "ini-1.3.5.tgz";
5346 url = "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz";
5347 sha1 = "eee25f56db1c9ec6085e0c22778083f596abf927";
5348 };
5349 }
5350
5351 {
5352 name = "inquirer-3.3.0.tgz";
5353 path = fetchurl {
5354 name = "inquirer-3.3.0.tgz";
5355 url = "https://registry.yarnpkg.com/inquirer/-/inquirer-3.3.0.tgz";
5356 sha1 = "9dd2f2ad765dcab1ff0443b491442a20ba227dc9";
5357 };
5358 }
5359
5360 {
5361 name = "inquirer-6.2.0.tgz";
5362 path = fetchurl {
5363 name = "inquirer-6.2.0.tgz";
5364 url = "https://registry.yarnpkg.com/inquirer/-/inquirer-6.2.0.tgz";
5365 sha1 = "51adcd776f661369dc1e894859c2560a224abdd8";
5366 };
5367 }
5368
5369 {
5370 name = "internal-ip-3.0.1.tgz";
5371 path = fetchurl {
5372 name = "internal-ip-3.0.1.tgz";
5373 url = "https://registry.yarnpkg.com/internal-ip/-/internal-ip-3.0.1.tgz";
5374 sha1 = "df5c99876e1d2eb2ea2d74f520e3f669a00ece27";
5375 };
5376 }
5377
5378 {
5379 name = "interpret-1.1.0.tgz";
5380 path = fetchurl {
5381 name = "interpret-1.1.0.tgz";
5382 url = "https://registry.yarnpkg.com/interpret/-/interpret-1.1.0.tgz";
5383 sha1 = "7ed1b1410c6a0e0f78cf95d3b8440c63f78b8614";
5384 };
5385 }
5386
5387 {
5388 name = "intersection-observer-0.5.0.tgz";
5389 path = fetchurl {
5390 name = "intersection-observer-0.5.0.tgz";
5391 url = "https://registry.yarnpkg.com/intersection-observer/-/intersection-observer-0.5.0.tgz";
5392 sha1 = "9fe8bee3953c755b1485c38efd9633d535775ea6";
5393 };
5394 }
5395
5396 {
5397 name = "intl-format-cache-2.1.0.tgz";
5398 path = fetchurl {
5399 name = "intl-format-cache-2.1.0.tgz";
5400 url = "https://registry.yarnpkg.com/intl-format-cache/-/intl-format-cache-2.1.0.tgz";
5401 sha1 = "04a369fecbfad6da6005bae1f14333332dcf9316";
5402 };
5403 }
5404
5405 {
5406 name = "intl-messageformat-parser-1.4.0.tgz";
5407 path = fetchurl {
5408 name = "intl-messageformat-parser-1.4.0.tgz";
5409 url = "https://registry.yarnpkg.com/intl-messageformat-parser/-/intl-messageformat-parser-1.4.0.tgz";
5410 sha1 = "b43d45a97468cadbe44331d74bb1e8dea44fc075";
5411 };
5412 }
5413
5414 {
5415 name = "intl-messageformat-2.2.0.tgz";
5416 path = fetchurl {
5417 name = "intl-messageformat-2.2.0.tgz";
5418 url = "https://registry.yarnpkg.com/intl-messageformat/-/intl-messageformat-2.2.0.tgz";
5419 sha1 = "345bcd46de630b7683330c2e52177ff5eab484fc";
5420 };
5421 }
5422
5423 {
5424 name = "intl-relativeformat-2.1.0.tgz";
5425 path = fetchurl {
5426 name = "intl-relativeformat-2.1.0.tgz";
5427 url = "https://registry.yarnpkg.com/intl-relativeformat/-/intl-relativeformat-2.1.0.tgz";
5428 sha1 = "010f1105802251f40ac47d0e3e1a201348a255df";
5429 };
5430 }
5431
5432 {
5433 name = "intl-1.2.5.tgz";
5434 path = fetchurl {
5435 name = "intl-1.2.5.tgz";
5436 url = "https://registry.yarnpkg.com/intl/-/intl-1.2.5.tgz";
5437 sha1 = "82244a2190c4e419f8371f5aa34daa3420e2abde";
5438 };
5439 }
5440
5441 {
5442 name = "invariant-2.2.4.tgz";
5443 path = fetchurl {
5444 name = "invariant-2.2.4.tgz";
5445 url = "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz";
5446 sha1 = "610f3c92c9359ce1db616e538008d23ff35158e6";
5447 };
5448 }
5449
5450 {
5451 name = "invert-kv-1.0.0.tgz";
5452 path = fetchurl {
5453 name = "invert-kv-1.0.0.tgz";
5454 url = "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz";
5455 sha1 = "104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6";
5456 };
5457 }
5458
5459 {
5460 name = "invert-kv-2.0.0.tgz";
5461 path = fetchurl {
5462 name = "invert-kv-2.0.0.tgz";
5463 url = "https://registry.yarnpkg.com/invert-kv/-/invert-kv-2.0.0.tgz";
5464 sha1 = "7393f5afa59ec9ff5f67a27620d11c226e3eec02";
5465 };
5466 }
5467
5468 {
5469 name = "ip-regex-2.1.0.tgz";
5470 path = fetchurl {
5471 name = "ip-regex-2.1.0.tgz";
5472 url = "https://registry.yarnpkg.com/ip-regex/-/ip-regex-2.1.0.tgz";
5473 sha1 = "fa78bf5d2e6913c911ce9f819ee5146bb6d844e9";
5474 };
5475 }
5476
5477 {
5478 name = "ip-1.1.5.tgz";
5479 path = fetchurl {
5480 name = "ip-1.1.5.tgz";
5481 url = "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz";
5482 sha1 = "bdded70114290828c0a039e72ef25f5aaec4354a";
5483 };
5484 }
5485
5486 {
5487 name = "ipaddr.js-1.8.0.tgz";
5488 path = fetchurl {
5489 name = "ipaddr.js-1.8.0.tgz";
5490 url = "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.8.0.tgz";
5491 sha1 = "eaa33d6ddd7ace8f7f6fe0c9ca0440e706738b1e";
5492 };
5493 }
5494
5495 {
5496 name = "ipaddr.js-1.8.1.tgz";
5497 path = fetchurl {
5498 name = "ipaddr.js-1.8.1.tgz";
5499 url = "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.8.1.tgz";
5500 sha1 = "fa4b79fa47fd3def5e3b159825161c0a519c9427";
5501 };
5502 }
5503
5504 {
5505 name = "is-accessor-descriptor-0.1.6.tgz";
5506 path = fetchurl {
5507 name = "is-accessor-descriptor-0.1.6.tgz";
5508 url = "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz";
5509 sha1 = "a9e12cb3ae8d876727eeef3843f8a0897b5c98d6";
5510 };
5511 }
5512
5513 {
5514 name = "is-accessor-descriptor-1.0.0.tgz";
5515 path = fetchurl {
5516 name = "is-accessor-descriptor-1.0.0.tgz";
5517 url = "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz";
5518 sha1 = "169c2f6d3df1f992618072365c9b0ea1f6878656";
5519 };
5520 }
5521
5522 {
5523 name = "is-arrayish-0.2.1.tgz";
5524 path = fetchurl {
5525 name = "is-arrayish-0.2.1.tgz";
5526 url = "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz";
5527 sha1 = "77c99840527aa8ecb1a8ba697b80645a7a926a9d";
5528 };
5529 }
5530
5531 {
5532 name = "is-arrayish-0.3.2.tgz";
5533 path = fetchurl {
5534 name = "is-arrayish-0.3.2.tgz";
5535 url = "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz";
5536 sha1 = "4574a2ae56f7ab206896fb431eaeed066fdf8f03";
5537 };
5538 }
5539
5540 {
5541 name = "is-binary-path-1.0.1.tgz";
5542 path = fetchurl {
5543 name = "is-binary-path-1.0.1.tgz";
5544 url = "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz";
5545 sha1 = "75f16642b480f187a711c814161fd3a4a7655898";
5546 };
5547 }
5548
5549 {
5550 name = "is-boolean-object-1.0.0.tgz";
5551 path = fetchurl {
5552 name = "is-boolean-object-1.0.0.tgz";
5553 url = "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.0.0.tgz";
5554 sha1 = "98f8b28030684219a95f375cfbd88ce3405dff93";
5555 };
5556 }
5557
5558 {
5559 name = "is-buffer-1.1.6.tgz";
5560 path = fetchurl {
5561 name = "is-buffer-1.1.6.tgz";
5562 url = "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz";
5563 sha1 = "efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be";
5564 };
5565 }
5566
5567 {
5568 name = "is-builtin-module-1.0.0.tgz";
5569 path = fetchurl {
5570 name = "is-builtin-module-1.0.0.tgz";
5571 url = "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-1.0.0.tgz";
5572 sha1 = "540572d34f7ac3119f8f76c30cbc1b1e037affbe";
5573 };
5574 }
5575
5576 {
5577 name = "is-callable-1.1.4.tgz";
5578 path = fetchurl {
5579 name = "is-callable-1.1.4.tgz";
5580 url = "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.4.tgz";
5581 sha1 = "1e1adf219e1eeb684d691f9d6a05ff0d30a24d75";
5582 };
5583 }
5584
5585 {
5586 name = "is-ci-1.2.1.tgz";
5587 path = fetchurl {
5588 name = "is-ci-1.2.1.tgz";
5589 url = "https://registry.yarnpkg.com/is-ci/-/is-ci-1.2.1.tgz";
5590 sha1 = "e3779c8ee17fccf428488f6e281187f2e632841c";
5591 };
5592 }
5593
5594 {
5595 name = "is-data-descriptor-0.1.4.tgz";
5596 path = fetchurl {
5597 name = "is-data-descriptor-0.1.4.tgz";
5598 url = "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz";
5599 sha1 = "0b5ee648388e2c860282e793f1856fec3f301b56";
5600 };
5601 }
5602
5603 {
5604 name = "is-data-descriptor-1.0.0.tgz";
5605 path = fetchurl {
5606 name = "is-data-descriptor-1.0.0.tgz";
5607 url = "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz";
5608 sha1 = "d84876321d0e7add03990406abbbbd36ba9268c7";
5609 };
5610 }
5611
5612 {
5613 name = "is-date-object-1.0.1.tgz";
5614 path = fetchurl {
5615 name = "is-date-object-1.0.1.tgz";
5616 url = "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.1.tgz";
5617 sha1 = "9aa20eb6aeebbff77fbd33e74ca01b33581d3a16";
5618 };
5619 }
5620
5621 {
5622 name = "is-descriptor-0.1.6.tgz";
5623 path = fetchurl {
5624 name = "is-descriptor-0.1.6.tgz";
5625 url = "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz";
5626 sha1 = "366d8240dde487ca51823b1ab9f07a10a78251ca";
5627 };
5628 }
5629
5630 {
5631 name = "is-descriptor-1.0.2.tgz";
5632 path = fetchurl {
5633 name = "is-descriptor-1.0.2.tgz";
5634 url = "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz";
5635 sha1 = "3b159746a66604b04f8c81524ba365c5f14d86ec";
5636 };
5637 }
5638
5639 {
5640 name = "is-directory-0.3.1.tgz";
5641 path = fetchurl {
5642 name = "is-directory-0.3.1.tgz";
5643 url = "https://registry.yarnpkg.com/is-directory/-/is-directory-0.3.1.tgz";
5644 sha1 = "61339b6f2475fc772fd9c9d83f5c8575dc154ae1";
5645 };
5646 }
5647
5648 {
5649 name = "is-dotfile-1.0.3.tgz";
5650 path = fetchurl {
5651 name = "is-dotfile-1.0.3.tgz";
5652 url = "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.3.tgz";
5653 sha1 = "a6a2f32ffd2dfb04f5ca25ecd0f6b83cf798a1e1";
5654 };
5655 }
5656
5657 {
5658 name = "is-equal-shallow-0.1.3.tgz";
5659 path = fetchurl {
5660 name = "is-equal-shallow-0.1.3.tgz";
5661 url = "https://registry.yarnpkg.com/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz";
5662 sha1 = "2238098fc221de0bcfa5d9eac4c45d638aa1c534";
5663 };
5664 }
5665
5666 {
5667 name = "is-extendable-0.1.1.tgz";
5668 path = fetchurl {
5669 name = "is-extendable-0.1.1.tgz";
5670 url = "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz";
5671 sha1 = "62b110e289a471418e3ec36a617d472e301dfc89";
5672 };
5673 }
5674
5675 {
5676 name = "is-extendable-1.0.1.tgz";
5677 path = fetchurl {
5678 name = "is-extendable-1.0.1.tgz";
5679 url = "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz";
5680 sha1 = "a7470f9e426733d81bd81e1155264e3a3507cab4";
5681 };
5682 }
5683
5684 {
5685 name = "is-extglob-1.0.0.tgz";
5686 path = fetchurl {
5687 name = "is-extglob-1.0.0.tgz";
5688 url = "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz";
5689 sha1 = "ac468177c4943405a092fc8f29760c6ffc6206c0";
5690 };
5691 }
5692
5693 {
5694 name = "is-extglob-2.1.1.tgz";
5695 path = fetchurl {
5696 name = "is-extglob-2.1.1.tgz";
5697 url = "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz";
5698 sha1 = "a88c02535791f02ed37c76a1b9ea9773c833f8c2";
5699 };
5700 }
5701
5702 {
5703 name = "is-finite-1.0.2.tgz";
5704 path = fetchurl {
5705 name = "is-finite-1.0.2.tgz";
5706 url = "https://registry.yarnpkg.com/is-finite/-/is-finite-1.0.2.tgz";
5707 sha1 = "cc6677695602be550ef11e8b4aa6305342b6d0aa";
5708 };
5709 }
5710
5711 {
5712 name = "is-fullwidth-code-point-1.0.0.tgz";
5713 path = fetchurl {
5714 name = "is-fullwidth-code-point-1.0.0.tgz";
5715 url = "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz";
5716 sha1 = "ef9e31386f031a7f0d643af82fde50c457ef00cb";
5717 };
5718 }
5719
5720 {
5721 name = "is-fullwidth-code-point-2.0.0.tgz";
5722 path = fetchurl {
5723 name = "is-fullwidth-code-point-2.0.0.tgz";
5724 url = "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz";
5725 sha1 = "a3b30a5c4f199183167aaab93beefae3ddfb654f";
5726 };
5727 }
5728
5729 {
5730 name = "is-generator-fn-1.0.0.tgz";
5731 path = fetchurl {
5732 name = "is-generator-fn-1.0.0.tgz";
5733 url = "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-1.0.0.tgz";
5734 sha1 = "969d49e1bb3329f6bb7f09089be26578b2ddd46a";
5735 };
5736 }
5737
5738 {
5739 name = "is-glob-2.0.1.tgz";
5740 path = fetchurl {
5741 name = "is-glob-2.0.1.tgz";
5742 url = "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz";
5743 sha1 = "d096f926a3ded5600f3fdfd91198cb0888c2d863";
5744 };
5745 }
5746
5747 {
5748 name = "is-glob-3.1.0.tgz";
5749 path = fetchurl {
5750 name = "is-glob-3.1.0.tgz";
5751 url = "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz";
5752 sha1 = "7ba5ae24217804ac70707b96922567486cc3e84a";
5753 };
5754 }
5755
5756 {
5757 name = "is-glob-4.0.0.tgz";
5758 path = fetchurl {
5759 name = "is-glob-4.0.0.tgz";
5760 url = "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.0.tgz";
5761 sha1 = "9521c76845cc2610a85203ddf080a958c2ffabc0";
5762 };
5763 }
5764
5765 {
5766 name = "is-nan-1.2.1.tgz";
5767 path = fetchurl {
5768 name = "is-nan-1.2.1.tgz";
5769 url = "https://registry.yarnpkg.com/is-nan/-/is-nan-1.2.1.tgz";
5770 sha1 = "9faf65b6fb6db24b7f5c0628475ea71f988401e2";
5771 };
5772 }
5773
5774 {
5775 name = "is-number-object-1.0.3.tgz";
5776 path = fetchurl {
5777 name = "is-number-object-1.0.3.tgz";
5778 url = "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.3.tgz";
5779 sha1 = "f265ab89a9f445034ef6aff15a8f00b00f551799";
5780 };
5781 }
5782
5783 {
5784 name = "is-number-2.1.0.tgz";
5785 path = fetchurl {
5786 name = "is-number-2.1.0.tgz";
5787 url = "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz";
5788 sha1 = "01fcbbb393463a548f2f466cce16dece49db908f";
5789 };
5790 }
5791
5792 {
5793 name = "is-number-3.0.0.tgz";
5794 path = fetchurl {
5795 name = "is-number-3.0.0.tgz";
5796 url = "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz";
5797 sha1 = "24fd6201a4782cf50561c810276afc7d12d71195";
5798 };
5799 }
5800
5801 {
5802 name = "is-number-4.0.0.tgz";
5803 path = fetchurl {
5804 name = "is-number-4.0.0.tgz";
5805 url = "https://registry.yarnpkg.com/is-number/-/is-number-4.0.0.tgz";
5806 sha1 = "0026e37f5454d73e356dfe6564699867c6a7f0ff";
5807 };
5808 }
5809
5810 {
5811 name = "is-obj-1.0.1.tgz";
5812 path = fetchurl {
5813 name = "is-obj-1.0.1.tgz";
5814 url = "http://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz";
5815 sha1 = "3e4729ac1f5fde025cd7d83a896dab9f4f67db0f";
5816 };
5817 }
5818
5819 {
5820 name = "is-path-cwd-1.0.0.tgz";
5821 path = fetchurl {
5822 name = "is-path-cwd-1.0.0.tgz";
5823 url = "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-1.0.0.tgz";
5824 sha1 = "d225ec23132e89edd38fda767472e62e65f1106d";
5825 };
5826 }
5827
5828 {
5829 name = "is-path-in-cwd-1.0.1.tgz";
5830 path = fetchurl {
5831 name = "is-path-in-cwd-1.0.1.tgz";
5832 url = "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz";
5833 sha1 = "5ac48b345ef675339bd6c7a48a912110b241cf52";
5834 };
5835 }
5836
5837 {
5838 name = "is-path-inside-1.0.1.tgz";
5839 path = fetchurl {
5840 name = "is-path-inside-1.0.1.tgz";
5841 url = "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-1.0.1.tgz";
5842 sha1 = "8ef5b7de50437a3fdca6b4e865ef7aa55cb48036";
5843 };
5844 }
5845
5846 {
5847 name = "is-plain-object-2.0.4.tgz";
5848 path = fetchurl {
5849 name = "is-plain-object-2.0.4.tgz";
5850 url = "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz";
5851 sha1 = "2c163b3fafb1b606d9d17928f05c2a1c38e07677";
5852 };
5853 }
5854
5855 {
5856 name = "is-posix-bracket-0.1.1.tgz";
5857 path = fetchurl {
5858 name = "is-posix-bracket-0.1.1.tgz";
5859 url = "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz";
5860 sha1 = "3334dc79774368e92f016e6fbc0a88f5cd6e6bc4";
5861 };
5862 }
5863
5864 {
5865 name = "is-primitive-2.0.0.tgz";
5866 path = fetchurl {
5867 name = "is-primitive-2.0.0.tgz";
5868 url = "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz";
5869 sha1 = "207bab91638499c07b2adf240a41a87210034575";
5870 };
5871 }
5872
5873 {
5874 name = "is-promise-2.1.0.tgz";
5875 path = fetchurl {
5876 name = "is-promise-2.1.0.tgz";
5877 url = "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz";
5878 sha1 = "79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa";
5879 };
5880 }
5881
5882 {
5883 name = "is-regex-1.0.4.tgz";
5884 path = fetchurl {
5885 name = "is-regex-1.0.4.tgz";
5886 url = "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.4.tgz";
5887 sha1 = "5517489b547091b0930e095654ced25ee97e9491";
5888 };
5889 }
5890
5891 {
5892 name = "is-resolvable-1.1.0.tgz";
5893 path = fetchurl {
5894 name = "is-resolvable-1.1.0.tgz";
5895 url = "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.1.0.tgz";
5896 sha1 = "fb18f87ce1feb925169c9a407c19318a3206ed88";
5897 };
5898 }
5899
5900 {
5901 name = "is-stream-1.1.0.tgz";
5902 path = fetchurl {
5903 name = "is-stream-1.1.0.tgz";
5904 url = "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz";
5905 sha1 = "12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44";
5906 };
5907 }
5908
5909 {
5910 name = "is-string-1.0.4.tgz";
5911 path = fetchurl {
5912 name = "is-string-1.0.4.tgz";
5913 url = "https://registry.yarnpkg.com/is-string/-/is-string-1.0.4.tgz";
5914 sha1 = "cc3a9b69857d621e963725a24caeec873b826e64";
5915 };
5916 }
5917
5918 {
5919 name = "is-subset-0.1.1.tgz";
5920 path = fetchurl {
5921 name = "is-subset-0.1.1.tgz";
5922 url = "https://registry.yarnpkg.com/is-subset/-/is-subset-0.1.1.tgz";
5923 sha1 = "8a59117d932de1de00f245fcdd39ce43f1e939a6";
5924 };
5925 }
5926
5927 {
5928 name = "is-symbol-1.0.1.tgz";
5929 path = fetchurl {
5930 name = "is-symbol-1.0.1.tgz";
5931 url = "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.1.tgz";
5932 sha1 = "3cc59f00025194b6ab2e38dbae6689256b660572";
5933 };
5934 }
5935
5936 {
5937 name = "is-typedarray-1.0.0.tgz";
5938 path = fetchurl {
5939 name = "is-typedarray-1.0.0.tgz";
5940 url = "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz";
5941 sha1 = "e479c80858df0c1b11ddda6940f96011fcda4a9a";
5942 };
5943 }
5944
5945 {
5946 name = "is-utf8-0.2.1.tgz";
5947 path = fetchurl {
5948 name = "is-utf8-0.2.1.tgz";
5949 url = "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz";
5950 sha1 = "4b0da1442104d1b336340e80797e865cf39f7d72";
5951 };
5952 }
5953
5954 {
5955 name = "is-windows-1.0.2.tgz";
5956 path = fetchurl {
5957 name = "is-windows-1.0.2.tgz";
5958 url = "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz";
5959 sha1 = "d1850eb9791ecd18e6182ce12a30f396634bb19d";
5960 };
5961 }
5962
5963 {
5964 name = "is-wsl-1.1.0.tgz";
5965 path = fetchurl {
5966 name = "is-wsl-1.1.0.tgz";
5967 url = "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz";
5968 sha1 = "1f16e4aa22b04d1336b66188a66af3c600c3a66d";
5969 };
5970 }
5971
5972 {
5973 name = "isarray-0.0.1.tgz";
5974 path = fetchurl {
5975 name = "isarray-0.0.1.tgz";
5976 url = "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz";
5977 sha1 = "8a18acfca9a8f4177e09abfc6038939b05d1eedf";
5978 };
5979 }
5980
5981 {
5982 name = "isarray-1.0.0.tgz";
5983 path = fetchurl {
5984 name = "isarray-1.0.0.tgz";
5985 url = "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz";
5986 sha1 = "bb935d48582cba168c06834957a54a3e07124f11";
5987 };
5988 }
5989
5990 {
5991 name = "isexe-2.0.0.tgz";
5992 path = fetchurl {
5993 name = "isexe-2.0.0.tgz";
5994 url = "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz";
5995 sha1 = "e8fbf374dc556ff8947a10dcb0572d633f2cfa10";
5996 };
5997 }
5998
5999 {
6000 name = "isobject-2.1.0.tgz";
6001 path = fetchurl {
6002 name = "isobject-2.1.0.tgz";
6003 url = "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz";
6004 sha1 = "f065561096a3f1da2ef46272f815c840d87e0c89";
6005 };
6006 }
6007
6008 {
6009 name = "isobject-3.0.1.tgz";
6010 path = fetchurl {
6011 name = "isobject-3.0.1.tgz";
6012 url = "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz";
6013 sha1 = "4e431e92b11a9731636aa1f9c8d1ccbcfdab78df";
6014 };
6015 }
6016
6017 {
6018 name = "isomorphic-fetch-2.2.1.tgz";
6019 path = fetchurl {
6020 name = "isomorphic-fetch-2.2.1.tgz";
6021 url = "https://registry.yarnpkg.com/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz";
6022 sha1 = "611ae1acf14f5e81f729507472819fe9733558a9";
6023 };
6024 }
6025
6026 {
6027 name = "isstream-0.1.2.tgz";
6028 path = fetchurl {
6029 name = "isstream-0.1.2.tgz";
6030 url = "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz";
6031 sha1 = "47e63f7af55afa6f92e1500e690eb8b8529c099a";
6032 };
6033 }
6034
6035 {
6036 name = "istanbul-api-1.3.7.tgz";
6037 path = fetchurl {
6038 name = "istanbul-api-1.3.7.tgz";
6039 url = "https://registry.yarnpkg.com/istanbul-api/-/istanbul-api-1.3.7.tgz";
6040 sha1 = "a86c770d2b03e11e3f778cd7aedd82d2722092aa";
6041 };
6042 }
6043
6044 {
6045 name = "istanbul-lib-coverage-1.2.1.tgz";
6046 path = fetchurl {
6047 name = "istanbul-lib-coverage-1.2.1.tgz";
6048 url = "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-1.2.1.tgz";
6049 sha1 = "ccf7edcd0a0bb9b8f729feeb0930470f9af664f0";
6050 };
6051 }
6052
6053 {
6054 name = "istanbul-lib-hook-1.2.2.tgz";
6055 path = fetchurl {
6056 name = "istanbul-lib-hook-1.2.2.tgz";
6057 url = "https://registry.yarnpkg.com/istanbul-lib-hook/-/istanbul-lib-hook-1.2.2.tgz";
6058 sha1 = "bc6bf07f12a641fbf1c85391d0daa8f0aea6bf86";
6059 };
6060 }
6061
6062 {
6063 name = "istanbul-lib-instrument-1.10.2.tgz";
6064 path = fetchurl {
6065 name = "istanbul-lib-instrument-1.10.2.tgz";
6066 url = "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-1.10.2.tgz";
6067 sha1 = "1f55ed10ac3c47f2bdddd5307935126754d0a9ca";
6068 };
6069 }
6070
6071 {
6072 name = "istanbul-lib-report-1.1.5.tgz";
6073 path = fetchurl {
6074 name = "istanbul-lib-report-1.1.5.tgz";
6075 url = "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-1.1.5.tgz";
6076 sha1 = "f2a657fc6282f96170aaf281eb30a458f7f4170c";
6077 };
6078 }
6079
6080 {
6081 name = "istanbul-lib-source-maps-1.2.6.tgz";
6082 path = fetchurl {
6083 name = "istanbul-lib-source-maps-1.2.6.tgz";
6084 url = "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.6.tgz";
6085 sha1 = "37b9ff661580f8fca11232752ee42e08c6675d8f";
6086 };
6087 }
6088
6089 {
6090 name = "istanbul-reports-1.5.1.tgz";
6091 path = fetchurl {
6092 name = "istanbul-reports-1.5.1.tgz";
6093 url = "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-1.5.1.tgz";
6094 sha1 = "97e4dbf3b515e8c484caea15d6524eebd3ff4e1a";
6095 };
6096 }
6097
6098 {
6099 name = "jest-changed-files-23.4.2.tgz";
6100 path = fetchurl {
6101 name = "jest-changed-files-23.4.2.tgz";
6102 url = "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-23.4.2.tgz";
6103 sha1 = "1eed688370cd5eebafe4ae93d34bb3b64968fe83";
6104 };
6105 }
6106
6107 {
6108 name = "jest-cli-23.6.0.tgz";
6109 path = fetchurl {
6110 name = "jest-cli-23.6.0.tgz";
6111 url = "https://registry.yarnpkg.com/jest-cli/-/jest-cli-23.6.0.tgz";
6112 sha1 = "61ab917744338f443ef2baa282ddffdd658a5da4";
6113 };
6114 }
6115
6116 {
6117 name = "jest-config-23.6.0.tgz";
6118 path = fetchurl {
6119 name = "jest-config-23.6.0.tgz";
6120 url = "https://registry.yarnpkg.com/jest-config/-/jest-config-23.6.0.tgz";
6121 sha1 = "f82546a90ade2d8c7026fbf6ac5207fc22f8eb1d";
6122 };
6123 }
6124
6125 {
6126 name = "jest-diff-23.6.0.tgz";
6127 path = fetchurl {
6128 name = "jest-diff-23.6.0.tgz";
6129 url = "https://registry.yarnpkg.com/jest-diff/-/jest-diff-23.6.0.tgz";
6130 sha1 = "1500f3f16e850bb3d71233408089be099f610c7d";
6131 };
6132 }
6133
6134 {
6135 name = "jest-docblock-23.2.0.tgz";
6136 path = fetchurl {
6137 name = "jest-docblock-23.2.0.tgz";
6138 url = "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-23.2.0.tgz";
6139 sha1 = "f085e1f18548d99fdd69b20207e6fd55d91383a7";
6140 };
6141 }
6142
6143 {
6144 name = "jest-each-23.6.0.tgz";
6145 path = fetchurl {
6146 name = "jest-each-23.6.0.tgz";
6147 url = "https://registry.yarnpkg.com/jest-each/-/jest-each-23.6.0.tgz";
6148 sha1 = "ba0c3a82a8054387016139c733a05242d3d71575";
6149 };
6150 }
6151
6152 {
6153 name = "jest-environment-jsdom-23.4.0.tgz";
6154 path = fetchurl {
6155 name = "jest-environment-jsdom-23.4.0.tgz";
6156 url = "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-23.4.0.tgz";
6157 sha1 = "056a7952b3fea513ac62a140a2c368c79d9e6023";
6158 };
6159 }
6160
6161 {
6162 name = "jest-environment-node-23.4.0.tgz";
6163 path = fetchurl {
6164 name = "jest-environment-node-23.4.0.tgz";
6165 url = "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-23.4.0.tgz";
6166 sha1 = "57e80ed0841dea303167cce8cd79521debafde10";
6167 };
6168 }
6169
6170 {
6171 name = "jest-get-type-22.4.3.tgz";
6172 path = fetchurl {
6173 name = "jest-get-type-22.4.3.tgz";
6174 url = "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-22.4.3.tgz";
6175 sha1 = "e3a8504d8479342dd4420236b322869f18900ce4";
6176 };
6177 }
6178
6179 {
6180 name = "jest-haste-map-23.6.0.tgz";
6181 path = fetchurl {
6182 name = "jest-haste-map-23.6.0.tgz";
6183 url = "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-23.6.0.tgz";
6184 sha1 = "2e3eb997814ca696d62afdb3f2529f5bbc935e16";
6185 };
6186 }
6187
6188 {
6189 name = "jest-jasmine2-23.6.0.tgz";
6190 path = fetchurl {
6191 name = "jest-jasmine2-23.6.0.tgz";
6192 url = "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-23.6.0.tgz";
6193 sha1 = "840e937f848a6c8638df24360ab869cc718592e0";
6194 };
6195 }
6196
6197 {
6198 name = "jest-leak-detector-23.6.0.tgz";
6199 path = fetchurl {
6200 name = "jest-leak-detector-23.6.0.tgz";
6201 url = "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-23.6.0.tgz";
6202 sha1 = "e4230fd42cf381a1a1971237ad56897de7e171de";
6203 };
6204 }
6205
6206 {
6207 name = "jest-matcher-utils-23.6.0.tgz";
6208 path = fetchurl {
6209 name = "jest-matcher-utils-23.6.0.tgz";
6210 url = "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-23.6.0.tgz";
6211 sha1 = "726bcea0c5294261a7417afb6da3186b4b8cac80";
6212 };
6213 }
6214
6215 {
6216 name = "jest-message-util-23.4.0.tgz";
6217 path = fetchurl {
6218 name = "jest-message-util-23.4.0.tgz";
6219 url = "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-23.4.0.tgz";
6220 sha1 = "17610c50942349508d01a3d1e0bda2c079086a9f";
6221 };
6222 }
6223
6224 {
6225 name = "jest-mock-23.2.0.tgz";
6226 path = fetchurl {
6227 name = "jest-mock-23.2.0.tgz";
6228 url = "https://registry.yarnpkg.com/jest-mock/-/jest-mock-23.2.0.tgz";
6229 sha1 = "ad1c60f29e8719d47c26e1138098b6d18b261134";
6230 };
6231 }
6232
6233 {
6234 name = "jest-regex-util-23.3.0.tgz";
6235 path = fetchurl {
6236 name = "jest-regex-util-23.3.0.tgz";
6237 url = "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-23.3.0.tgz";
6238 sha1 = "5f86729547c2785c4002ceaa8f849fe8ca471bc5";
6239 };
6240 }
6241
6242 {
6243 name = "jest-resolve-dependencies-23.6.0.tgz";
6244 path = fetchurl {
6245 name = "jest-resolve-dependencies-23.6.0.tgz";
6246 url = "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-23.6.0.tgz";
6247 sha1 = "b4526af24c8540d9a3fab102c15081cf509b723d";
6248 };
6249 }
6250
6251 {
6252 name = "jest-resolve-23.6.0.tgz";
6253 path = fetchurl {
6254 name = "jest-resolve-23.6.0.tgz";
6255 url = "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-23.6.0.tgz";
6256 sha1 = "cf1d1a24ce7ee7b23d661c33ba2150f3aebfa0ae";
6257 };
6258 }
6259
6260 {
6261 name = "jest-runner-23.6.0.tgz";
6262 path = fetchurl {
6263 name = "jest-runner-23.6.0.tgz";
6264 url = "https://registry.yarnpkg.com/jest-runner/-/jest-runner-23.6.0.tgz";
6265 sha1 = "3894bd219ffc3f3cb94dc48a4170a2e6f23a5a38";
6266 };
6267 }
6268
6269 {
6270 name = "jest-runtime-23.6.0.tgz";
6271 path = fetchurl {
6272 name = "jest-runtime-23.6.0.tgz";
6273 url = "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-23.6.0.tgz";
6274 sha1 = "059e58c8ab445917cd0e0d84ac2ba68de8f23082";
6275 };
6276 }
6277
6278 {
6279 name = "jest-serializer-23.0.1.tgz";
6280 path = fetchurl {
6281 name = "jest-serializer-23.0.1.tgz";
6282 url = "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-23.0.1.tgz";
6283 sha1 = "a3776aeb311e90fe83fab9e533e85102bd164165";
6284 };
6285 }
6286
6287 {
6288 name = "jest-snapshot-23.6.0.tgz";
6289 path = fetchurl {
6290 name = "jest-snapshot-23.6.0.tgz";
6291 url = "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-23.6.0.tgz";
6292 sha1 = "f9c2625d1b18acda01ec2d2b826c0ce58a5aa17a";
6293 };
6294 }
6295
6296 {
6297 name = "jest-util-23.4.0.tgz";
6298 path = fetchurl {
6299 name = "jest-util-23.4.0.tgz";
6300 url = "https://registry.yarnpkg.com/jest-util/-/jest-util-23.4.0.tgz";
6301 sha1 = "4d063cb927baf0a23831ff61bec2cbbf49793561";
6302 };
6303 }
6304
6305 {
6306 name = "jest-validate-23.6.0.tgz";
6307 path = fetchurl {
6308 name = "jest-validate-23.6.0.tgz";
6309 url = "https://registry.yarnpkg.com/jest-validate/-/jest-validate-23.6.0.tgz";
6310 sha1 = "36761f99d1ed33fcd425b4e4c5595d62b6597474";
6311 };
6312 }
6313
6314 {
6315 name = "jest-watcher-23.4.0.tgz";
6316 path = fetchurl {
6317 name = "jest-watcher-23.4.0.tgz";
6318 url = "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-23.4.0.tgz";
6319 sha1 = "d2e28ce74f8dad6c6afc922b92cabef6ed05c91c";
6320 };
6321 }
6322
6323 {
6324 name = "jest-worker-23.2.0.tgz";
6325 path = fetchurl {
6326 name = "jest-worker-23.2.0.tgz";
6327 url = "https://registry.yarnpkg.com/jest-worker/-/jest-worker-23.2.0.tgz";
6328 sha1 = "faf706a8da36fae60eb26957257fa7b5d8ea02b9";
6329 };
6330 }
6331
6332 {
6333 name = "jest-23.6.0.tgz";
6334 path = fetchurl {
6335 name = "jest-23.6.0.tgz";
6336 url = "https://registry.yarnpkg.com/jest/-/jest-23.6.0.tgz";
6337 sha1 = "ad5835e923ebf6e19e7a1d7529a432edfee7813d";
6338 };
6339 }
6340
6341 {
6342 name = "js-base64-2.4.9.tgz";
6343 path = fetchurl {
6344 name = "js-base64-2.4.9.tgz";
6345 url = "https://registry.yarnpkg.com/js-base64/-/js-base64-2.4.9.tgz";
6346 sha1 = "748911fb04f48a60c4771b375cac45a80df11c03";
6347 };
6348 }
6349
6350 {
6351 name = "js-levenshtein-1.1.3.tgz";
6352 path = fetchurl {
6353 name = "js-levenshtein-1.1.3.tgz";
6354 url = "https://registry.yarnpkg.com/js-levenshtein/-/js-levenshtein-1.1.3.tgz";
6355 sha1 = "3ef627df48ec8cf24bacf05c0f184ff30ef413c5";
6356 };
6357 }
6358
6359 {
6360 name = "js-string-escape-1.0.1.tgz";
6361 path = fetchurl {
6362 name = "js-string-escape-1.0.1.tgz";
6363 url = "https://registry.yarnpkg.com/js-string-escape/-/js-string-escape-1.0.1.tgz";
6364 sha1 = "e2625badbc0d67c7533e9edc1068c587ae4137ef";
6365 };
6366 }
6367
6368 {
6369 name = "js-tokens-4.0.0.tgz";
6370 path = fetchurl {
6371 name = "js-tokens-4.0.0.tgz";
6372 url = "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz";
6373 sha1 = "19203fb59991df98e3a287050d4647cdeaf32499";
6374 };
6375 }
6376
6377 {
6378 name = "js-tokens-3.0.2.tgz";
6379 path = fetchurl {
6380 name = "js-tokens-3.0.2.tgz";
6381 url = "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz";
6382 sha1 = "9866df395102130e38f7f996bceb65443209c25b";
6383 };
6384 }
6385
6386 {
6387 name = "js-yaml-3.12.0.tgz";
6388 path = fetchurl {
6389 name = "js-yaml-3.12.0.tgz";
6390 url = "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.12.0.tgz";
6391 sha1 = "eaed656ec8344f10f527c6bfa1b6e2244de167d1";
6392 };
6393 }
6394
6395 {
6396 name = "jsbn-0.1.1.tgz";
6397 path = fetchurl {
6398 name = "jsbn-0.1.1.tgz";
6399 url = "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz";
6400 sha1 = "a5e654c2e5a2deb5f201d96cefbca80c0ef2f513";
6401 };
6402 }
6403
6404 {
6405 name = "jsdom-11.12.0.tgz";
6406 path = fetchurl {
6407 name = "jsdom-11.12.0.tgz";
6408 url = "https://registry.yarnpkg.com/jsdom/-/jsdom-11.12.0.tgz";
6409 sha1 = "1a80d40ddd378a1de59656e9e6dc5a3ba8657bc8";
6410 };
6411 }
6412
6413 {
6414 name = "jsesc-1.3.0.tgz";
6415 path = fetchurl {
6416 name = "jsesc-1.3.0.tgz";
6417 url = "https://registry.yarnpkg.com/jsesc/-/jsesc-1.3.0.tgz";
6418 sha1 = "46c3fec8c1892b12b0833db9bc7622176dbab34b";
6419 };
6420 }
6421
6422 {
6423 name = "jsesc-2.5.1.tgz";
6424 path = fetchurl {
6425 name = "jsesc-2.5.1.tgz";
6426 url = "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.1.tgz";
6427 sha1 = "e421a2a8e20d6b0819df28908f782526b96dd1fe";
6428 };
6429 }
6430
6431 {
6432 name = "jsesc-0.5.0.tgz";
6433 path = fetchurl {
6434 name = "jsesc-0.5.0.tgz";
6435 url = "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz";
6436 sha1 = "e7dee66e35d6fc16f710fe91d5cf69f70f08911d";
6437 };
6438 }
6439
6440 {
6441 name = "json-parse-better-errors-1.0.2.tgz";
6442 path = fetchurl {
6443 name = "json-parse-better-errors-1.0.2.tgz";
6444 url = "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz";
6445 sha1 = "bb867cfb3450e69107c131d1c514bab3dc8bcaa9";
6446 };
6447 }
6448
6449 {
6450 name = "json-schema-traverse-0.3.1.tgz";
6451 path = fetchurl {
6452 name = "json-schema-traverse-0.3.1.tgz";
6453 url = "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz";
6454 sha1 = "349a6d44c53a51de89b40805c5d5e59b417d3340";
6455 };
6456 }
6457
6458 {
6459 name = "json-schema-traverse-0.4.1.tgz";
6460 path = fetchurl {
6461 name = "json-schema-traverse-0.4.1.tgz";
6462 url = "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz";
6463 sha1 = "69f6a87d9513ab8bb8fe63bdb0979c448e684660";
6464 };
6465 }
6466
6467 {
6468 name = "json-schema-0.2.3.tgz";
6469 path = fetchurl {
6470 name = "json-schema-0.2.3.tgz";
6471 url = "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz";
6472 sha1 = "b480c892e59a2f05954ce727bd3f2a4e882f9e13";
6473 };
6474 }
6475
6476 {
6477 name = "json-stable-stringify-without-jsonify-1.0.1.tgz";
6478 path = fetchurl {
6479 name = "json-stable-stringify-without-jsonify-1.0.1.tgz";
6480 url = "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz";
6481 sha1 = "9db7b59496ad3f3cfef30a75142d2d930ad72651";
6482 };
6483 }
6484
6485 {
6486 name = "json-stable-stringify-1.0.1.tgz";
6487 path = fetchurl {
6488 name = "json-stable-stringify-1.0.1.tgz";
6489 url = "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz";
6490 sha1 = "9a759d39c5f2ff503fd5300646ed445f88c4f9af";
6491 };
6492 }
6493
6494 {
6495 name = "json-stringify-safe-5.0.1.tgz";
6496 path = fetchurl {
6497 name = "json-stringify-safe-5.0.1.tgz";
6498 url = "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz";
6499 sha1 = "1296a2d58fd45f19a0f6ce01d65701e2c735b6eb";
6500 };
6501 }
6502
6503 {
6504 name = "json3-3.3.2.tgz";
6505 path = fetchurl {
6506 name = "json3-3.3.2.tgz";
6507 url = "https://registry.yarnpkg.com/json3/-/json3-3.3.2.tgz";
6508 sha1 = "3c0434743df93e2f5c42aee7b19bcb483575f4e1";
6509 };
6510 }
6511
6512 {
6513 name = "json5-0.5.1.tgz";
6514 path = fetchurl {
6515 name = "json5-0.5.1.tgz";
6516 url = "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz";
6517 sha1 = "1eade7acc012034ad84e2396767ead9fa5495821";
6518 };
6519 }
6520
6521 {
6522 name = "jsonfile-4.0.0.tgz";
6523 path = fetchurl {
6524 name = "jsonfile-4.0.0.tgz";
6525 url = "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz";
6526 sha1 = "8771aae0799b64076b76640fca058f9c10e33ecb";
6527 };
6528 }
6529
6530 {
6531 name = "jsonify-0.0.0.tgz";
6532 path = fetchurl {
6533 name = "jsonify-0.0.0.tgz";
6534 url = "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz";
6535 sha1 = "2c74b6ee41d93ca51b7b5aaee8f503631d252a73";
6536 };
6537 }
6538
6539 {
6540 name = "jsprim-1.4.1.tgz";
6541 path = fetchurl {
6542 name = "jsprim-1.4.1.tgz";
6543 url = "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz";
6544 sha1 = "313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2";
6545 };
6546 }
6547
6548 {
6549 name = "jsx-ast-utils-2.0.1.tgz";
6550 path = fetchurl {
6551 name = "jsx-ast-utils-2.0.1.tgz";
6552 url = "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-2.0.1.tgz";
6553 sha1 = "e801b1b39985e20fffc87b40e3748080e2dcac7f";
6554 };
6555 }
6556
6557 {
6558 name = "keycode-2.2.0.tgz";
6559 path = fetchurl {
6560 name = "keycode-2.2.0.tgz";
6561 url = "https://registry.yarnpkg.com/keycode/-/keycode-2.2.0.tgz";
6562 sha1 = "3d0af56dc7b8b8e5cba8d0a97f107204eec22b04";
6563 };
6564 }
6565
6566 {
6567 name = "killable-1.0.1.tgz";
6568 path = fetchurl {
6569 name = "killable-1.0.1.tgz";
6570 url = "https://registry.yarnpkg.com/killable/-/killable-1.0.1.tgz";
6571 sha1 = "4c8ce441187a061c7474fb87ca08e2a638194892";
6572 };
6573 }
6574
6575 {
6576 name = "kind-of-3.2.2.tgz";
6577 path = fetchurl {
6578 name = "kind-of-3.2.2.tgz";
6579 url = "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz";
6580 sha1 = "31ea21a734bab9bbb0f32466d893aea51e4a3c64";
6581 };
6582 }
6583
6584 {
6585 name = "kind-of-4.0.0.tgz";
6586 path = fetchurl {
6587 name = "kind-of-4.0.0.tgz";
6588 url = "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz";
6589 sha1 = "20813df3d712928b207378691a45066fae72dd57";
6590 };
6591 }
6592
6593 {
6594 name = "kind-of-5.1.0.tgz";
6595 path = fetchurl {
6596 name = "kind-of-5.1.0.tgz";
6597 url = "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz";
6598 sha1 = "729c91e2d857b7a419a1f9aa65685c4c33f5845d";
6599 };
6600 }
6601
6602 {
6603 name = "kind-of-6.0.2.tgz";
6604 path = fetchurl {
6605 name = "kind-of-6.0.2.tgz";
6606 url = "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.2.tgz";
6607 sha1 = "01146b36a6218e64e58f3a8d66de5d7fc6f6d051";
6608 };
6609 }
6610
6611 {
6612 name = "kleur-2.0.2.tgz";
6613 path = fetchurl {
6614 name = "kleur-2.0.2.tgz";
6615 url = "https://registry.yarnpkg.com/kleur/-/kleur-2.0.2.tgz";
6616 sha1 = "b704f4944d95e255d038f0cb05fb8a602c55a300";
6617 };
6618 }
6619
6620 {
6621 name = "lcid-1.0.0.tgz";
6622 path = fetchurl {
6623 name = "lcid-1.0.0.tgz";
6624 url = "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz";
6625 sha1 = "308accafa0bc483a3867b4b6f2b9506251d1b835";
6626 };
6627 }
6628
6629 {
6630 name = "lcid-2.0.0.tgz";
6631 path = fetchurl {
6632 name = "lcid-2.0.0.tgz";
6633 url = "https://registry.yarnpkg.com/lcid/-/lcid-2.0.0.tgz";
6634 sha1 = "6ef5d2df60e52f82eb228a4c373e8d1f397253cf";
6635 };
6636 }
6637
6638 {
6639 name = "left-pad-1.3.0.tgz";
6640 path = fetchurl {
6641 name = "left-pad-1.3.0.tgz";
6642 url = "https://registry.yarnpkg.com/left-pad/-/left-pad-1.3.0.tgz";
6643 sha1 = "5b8a3a7765dfe001261dde915589e782f8c94d1e";
6644 };
6645 }
6646
6647 {
6648 name = "leven-2.1.0.tgz";
6649 path = fetchurl {
6650 name = "leven-2.1.0.tgz";
6651 url = "https://registry.yarnpkg.com/leven/-/leven-2.1.0.tgz";
6652 sha1 = "c2e7a9f772094dee9d34202ae8acce4687875580";
6653 };
6654 }
6655
6656 {
6657 name = "levn-0.3.0.tgz";
6658 path = fetchurl {
6659 name = "levn-0.3.0.tgz";
6660 url = "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz";
6661 sha1 = "3b09924edf9f083c0490fdd4c0bc4421e04764ee";
6662 };
6663 }
6664
6665 {
6666 name = "load-json-file-1.1.0.tgz";
6667 path = fetchurl {
6668 name = "load-json-file-1.1.0.tgz";
6669 url = "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz";
6670 sha1 = "956905708d58b4bab4c2261b04f59f31c99374c0";
6671 };
6672 }
6673
6674 {
6675 name = "load-json-file-2.0.0.tgz";
6676 path = fetchurl {
6677 name = "load-json-file-2.0.0.tgz";
6678 url = "https://registry.yarnpkg.com/load-json-file/-/load-json-file-2.0.0.tgz";
6679 sha1 = "7947e42149af80d696cbf797bcaabcfe1fe29ca8";
6680 };
6681 }
6682
6683 {
6684 name = "loader-runner-2.3.0.tgz";
6685 path = fetchurl {
6686 name = "loader-runner-2.3.0.tgz";
6687 url = "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.3.0.tgz";
6688 sha1 = "f482aea82d543e07921700d5a46ef26fdac6b8a2";
6689 };
6690 }
6691
6692 {
6693 name = "loader-utils-0.2.17.tgz";
6694 path = fetchurl {
6695 name = "loader-utils-0.2.17.tgz";
6696 url = "https://registry.yarnpkg.com/loader-utils/-/loader-utils-0.2.17.tgz";
6697 sha1 = "f86e6374d43205a6e6c60e9196f17c0299bfb348";
6698 };
6699 }
6700
6701 {
6702 name = "loader-utils-1.1.0.tgz";
6703 path = fetchurl {
6704 name = "loader-utils-1.1.0.tgz";
6705 url = "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.1.0.tgz";
6706 sha1 = "c98aef488bcceda2ffb5e2de646d6a754429f5cd";
6707 };
6708 }
6709
6710 {
6711 name = "locate-path-2.0.0.tgz";
6712 path = fetchurl {
6713 name = "locate-path-2.0.0.tgz";
6714 url = "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz";
6715 sha1 = "2b568b265eec944c6d9c0de9c3dbbbca0354cd8e";
6716 };
6717 }
6718
6719 {
6720 name = "locate-path-3.0.0.tgz";
6721 path = fetchurl {
6722 name = "locate-path-3.0.0.tgz";
6723 url = "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz";
6724 sha1 = "dbec3b3ab759758071b58fe59fc41871af21400e";
6725 };
6726 }
6727
6728 {
6729 name = "lodash-es-4.17.10.tgz";
6730 path = fetchurl {
6731 name = "lodash-es-4.17.10.tgz";
6732 url = "https://registry.yarnpkg.com/lodash-es/-/lodash-es-4.17.10.tgz";
6733 sha1 = "62cd7104cdf5dd87f235a837f0ede0e8e5117e05";
6734 };
6735 }
6736
6737 {
6738 name = "lodash._reinterpolate-3.0.0.tgz";
6739 path = fetchurl {
6740 name = "lodash._reinterpolate-3.0.0.tgz";
6741 url = "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz";
6742 sha1 = "0ccf2d89166af03b3663c796538b75ac6e114d9d";
6743 };
6744 }
6745
6746 {
6747 name = "lodash.assign-4.2.0.tgz";
6748 path = fetchurl {
6749 name = "lodash.assign-4.2.0.tgz";
6750 url = "https://registry.yarnpkg.com/lodash.assign/-/lodash.assign-4.2.0.tgz";
6751 sha1 = "0d99f3ccd7a6d261d19bdaeb9245005d285808e7";
6752 };
6753 }
6754
6755 {
6756 name = "lodash.camelcase-4.3.0.tgz";
6757 path = fetchurl {
6758 name = "lodash.camelcase-4.3.0.tgz";
6759 url = "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz";
6760 sha1 = "b28aa6288a2b9fc651035c7711f65ab6190331a6";
6761 };
6762 }
6763
6764 {
6765 name = "lodash.clonedeep-4.5.0.tgz";
6766 path = fetchurl {
6767 name = "lodash.clonedeep-4.5.0.tgz";
6768 url = "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz";
6769 sha1 = "e23f3f9c4f8fbdde872529c1071857a086e5ccef";
6770 };
6771 }
6772
6773 {
6774 name = "lodash.debounce-4.0.8.tgz";
6775 path = fetchurl {
6776 name = "lodash.debounce-4.0.8.tgz";
6777 url = "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz";
6778 sha1 = "82d79bff30a67c4005ffd5e2515300ad9ca4d7af";
6779 };
6780 }
6781
6782 {
6783 name = "lodash.defaults-4.2.0.tgz";
6784 path = fetchurl {
6785 name = "lodash.defaults-4.2.0.tgz";
6786 url = "https://registry.yarnpkg.com/lodash.defaults/-/lodash.defaults-4.2.0.tgz";
6787 sha1 = "d09178716ffea4dde9e5fb7b37f6f0802274580c";
6788 };
6789 }
6790
6791 {
6792 name = "lodash.escape-4.0.1.tgz";
6793 path = fetchurl {
6794 name = "lodash.escape-4.0.1.tgz";
6795 url = "https://registry.yarnpkg.com/lodash.escape/-/lodash.escape-4.0.1.tgz";
6796 sha1 = "c9044690c21e04294beaa517712fded1fa88de98";
6797 };
6798 }
6799
6800 {
6801 name = "lodash.flattendeep-4.4.0.tgz";
6802 path = fetchurl {
6803 name = "lodash.flattendeep-4.4.0.tgz";
6804 url = "https://registry.yarnpkg.com/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz";
6805 sha1 = "fb030917f86a3134e5bc9bec0d69e0013ddfedb2";
6806 };
6807 }
6808
6809 {
6810 name = "lodash.isequal-4.5.0.tgz";
6811 path = fetchurl {
6812 name = "lodash.isequal-4.5.0.tgz";
6813 url = "https://registry.yarnpkg.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz";
6814 sha1 = "415c4478f2bcc30120c22ce10ed3226f7d3e18e0";
6815 };
6816 }
6817
6818 {
6819 name = "lodash.mergewith-4.6.1.tgz";
6820 path = fetchurl {
6821 name = "lodash.mergewith-4.6.1.tgz";
6822 url = "https://registry.yarnpkg.com/lodash.mergewith/-/lodash.mergewith-4.6.1.tgz";
6823 sha1 = "639057e726c3afbdb3e7d42741caa8d6e4335927";
6824 };
6825 }
6826
6827 {
6828 name = "lodash.sortby-4.7.0.tgz";
6829 path = fetchurl {
6830 name = "lodash.sortby-4.7.0.tgz";
6831 url = "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz";
6832 sha1 = "edd14c824e2cc9c1e0b0a1b42bb5210516a42438";
6833 };
6834 }
6835
6836 {
6837 name = "lodash.tail-4.1.1.tgz";
6838 path = fetchurl {
6839 name = "lodash.tail-4.1.1.tgz";
6840 url = "https://registry.yarnpkg.com/lodash.tail/-/lodash.tail-4.1.1.tgz";
6841 sha1 = "d2333a36d9e7717c8ad2f7cacafec7c32b444664";
6842 };
6843 }
6844
6845 {
6846 name = "lodash.template-4.4.0.tgz";
6847 path = fetchurl {
6848 name = "lodash.template-4.4.0.tgz";
6849 url = "https://registry.yarnpkg.com/lodash.template/-/lodash.template-4.4.0.tgz";
6850 sha1 = "e73a0385c8355591746e020b99679c690e68fba0";
6851 };
6852 }
6853
6854 {
6855 name = "lodash.templatesettings-4.1.0.tgz";
6856 path = fetchurl {
6857 name = "lodash.templatesettings-4.1.0.tgz";
6858 url = "https://registry.yarnpkg.com/lodash.templatesettings/-/lodash.templatesettings-4.1.0.tgz";
6859 sha1 = "2b4d4e95ba440d915ff08bc899e4553666713316";
6860 };
6861 }
6862
6863 {
6864 name = "lodash-4.17.10.tgz";
6865 path = fetchurl {
6866 name = "lodash-4.17.10.tgz";
6867 url = "https://registry.yarnpkg.com/lodash/-/lodash-4.17.10.tgz";
6868 sha1 = "1b7793cf7259ea38fb3661d4d38b3260af8ae4e7";
6869 };
6870 }
6871
6872 {
6873 name = "loglevel-1.6.1.tgz";
6874 path = fetchurl {
6875 name = "loglevel-1.6.1.tgz";
6876 url = "https://registry.yarnpkg.com/loglevel/-/loglevel-1.6.1.tgz";
6877 sha1 = "e0fc95133b6ef276cdc8887cdaf24aa6f156f8fa";
6878 };
6879 }
6880
6881 {
6882 name = "loose-envify-1.4.0.tgz";
6883 path = fetchurl {
6884 name = "loose-envify-1.4.0.tgz";
6885 url = "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz";
6886 sha1 = "71ee51fa7be4caec1a63839f7e682d8132d30caf";
6887 };
6888 }
6889
6890 {
6891 name = "loud-rejection-1.6.0.tgz";
6892 path = fetchurl {
6893 name = "loud-rejection-1.6.0.tgz";
6894 url = "https://registry.yarnpkg.com/loud-rejection/-/loud-rejection-1.6.0.tgz";
6895 sha1 = "5b46f80147edee578870f086d04821cf998e551f";
6896 };
6897 }
6898
6899 {
6900 name = "lru-cache-4.1.3.tgz";
6901 path = fetchurl {
6902 name = "lru-cache-4.1.3.tgz";
6903 url = "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.3.tgz";
6904 sha1 = "a1175cf3496dfc8436c156c334b4955992bce69c";
6905 };
6906 }
6907
6908 {
6909 name = "make-dir-1.3.0.tgz";
6910 path = fetchurl {
6911 name = "make-dir-1.3.0.tgz";
6912 url = "https://registry.yarnpkg.com/make-dir/-/make-dir-1.3.0.tgz";
6913 sha1 = "79c1033b80515bd6d24ec9933e860ca75ee27f0c";
6914 };
6915 }
6916
6917 {
6918 name = "makeerror-1.0.11.tgz";
6919 path = fetchurl {
6920 name = "makeerror-1.0.11.tgz";
6921 url = "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.11.tgz";
6922 sha1 = "e01a5c9109f2af79660e4e8b9587790184f5a96c";
6923 };
6924 }
6925
6926 {
6927 name = "mamacro-0.0.3.tgz";
6928 path = fetchurl {
6929 name = "mamacro-0.0.3.tgz";
6930 url = "https://registry.yarnpkg.com/mamacro/-/mamacro-0.0.3.tgz";
6931 sha1 = "ad2c9576197c9f1abf308d0787865bd975a3f3e4";
6932 };
6933 }
6934
6935 {
6936 name = "map-age-cleaner-0.1.2.tgz";
6937 path = fetchurl {
6938 name = "map-age-cleaner-0.1.2.tgz";
6939 url = "https://registry.yarnpkg.com/map-age-cleaner/-/map-age-cleaner-0.1.2.tgz";
6940 sha1 = "098fb15538fd3dbe461f12745b0ca8568d4e3f74";
6941 };
6942 }
6943
6944 {
6945 name = "map-cache-0.2.2.tgz";
6946 path = fetchurl {
6947 name = "map-cache-0.2.2.tgz";
6948 url = "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz";
6949 sha1 = "c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf";
6950 };
6951 }
6952
6953 {
6954 name = "map-obj-1.0.1.tgz";
6955 path = fetchurl {
6956 name = "map-obj-1.0.1.tgz";
6957 url = "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz";
6958 sha1 = "d933ceb9205d82bdcf4886f6742bdc2b4dea146d";
6959 };
6960 }
6961
6962 {
6963 name = "map-visit-1.0.0.tgz";
6964 path = fetchurl {
6965 name = "map-visit-1.0.0.tgz";
6966 url = "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz";
6967 sha1 = "ecdca8f13144e660f1b5bd41f12f3479d98dfb8f";
6968 };
6969 }
6970
6971 {
6972 name = "mark-loader-0.1.6.tgz";
6973 path = fetchurl {
6974 name = "mark-loader-0.1.6.tgz";
6975 url = "https://registry.yarnpkg.com/mark-loader/-/mark-loader-0.1.6.tgz";
6976 sha1 = "0abb477dca7421d70e20128ff6489f5cae8676d5";
6977 };
6978 }
6979
6980 {
6981 name = "marky-1.2.0.tgz";
6982 path = fetchurl {
6983 name = "marky-1.2.0.tgz";
6984 url = "https://registry.yarnpkg.com/marky/-/marky-1.2.0.tgz";
6985 sha1 = "9617ed647bbbea8f45d19526da33dec70606df42";
6986 };
6987 }
6988
6989 {
6990 name = "math-random-1.0.1.tgz";
6991 path = fetchurl {
6992 name = "math-random-1.0.1.tgz";
6993 url = "https://registry.yarnpkg.com/math-random/-/math-random-1.0.1.tgz";
6994 sha1 = "8b3aac588b8a66e4975e3cdea67f7bb329601fac";
6995 };
6996 }
6997
6998 {
6999 name = "md5.js-1.3.4.tgz";
7000 path = fetchurl {
7001 name = "md5.js-1.3.4.tgz";
7002 url = "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.4.tgz";
7003 sha1 = "e9bdbde94a20a5ac18b04340fc5764d5b09d901d";
7004 };
7005 }
7006
7007 {
7008 name = "media-typer-0.3.0.tgz";
7009 path = fetchurl {
7010 name = "media-typer-0.3.0.tgz";
7011 url = "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz";
7012 sha1 = "8710d7af0aa626f8fffa1ce00168545263255748";
7013 };
7014 }
7015
7016 {
7017 name = "mem-1.1.0.tgz";
7018 path = fetchurl {
7019 name = "mem-1.1.0.tgz";
7020 url = "https://registry.yarnpkg.com/mem/-/mem-1.1.0.tgz";
7021 sha1 = "5edd52b485ca1d900fe64895505399a0dfa45f76";
7022 };
7023 }
7024
7025 {
7026 name = "mem-4.0.0.tgz";
7027 path = fetchurl {
7028 name = "mem-4.0.0.tgz";
7029 url = "https://registry.yarnpkg.com/mem/-/mem-4.0.0.tgz";
7030 sha1 = "6437690d9471678f6cc83659c00cbafcd6b0cdaf";
7031 };
7032 }
7033
7034 {
7035 name = "memory-fs-0.4.1.tgz";
7036 path = fetchurl {
7037 name = "memory-fs-0.4.1.tgz";
7038 url = "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz";
7039 sha1 = "3a9a20b8462523e447cfbc7e8bb80ed667bfc552";
7040 };
7041 }
7042
7043 {
7044 name = "meow-3.7.0.tgz";
7045 path = fetchurl {
7046 name = "meow-3.7.0.tgz";
7047 url = "https://registry.yarnpkg.com/meow/-/meow-3.7.0.tgz";
7048 sha1 = "72cb668b425228290abbfa856892587308a801fb";
7049 };
7050 }
7051
7052 {
7053 name = "merge-descriptors-1.0.1.tgz";
7054 path = fetchurl {
7055 name = "merge-descriptors-1.0.1.tgz";
7056 url = "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz";
7057 sha1 = "b00aaa556dd8b44568150ec9d1b953f3f90cbb61";
7058 };
7059 }
7060
7061 {
7062 name = "merge-stream-1.0.1.tgz";
7063 path = fetchurl {
7064 name = "merge-stream-1.0.1.tgz";
7065 url = "https://registry.yarnpkg.com/merge-stream/-/merge-stream-1.0.1.tgz";
7066 sha1 = "4041202d508a342ba00174008df0c251b8c135e1";
7067 };
7068 }
7069
7070 {
7071 name = "merge-1.2.0.tgz";
7072 path = fetchurl {
7073 name = "merge-1.2.0.tgz";
7074 url = "https://registry.yarnpkg.com/merge/-/merge-1.2.0.tgz";
7075 sha1 = "7531e39d4949c281a66b8c5a6e0265e8b05894da";
7076 };
7077 }
7078
7079 {
7080 name = "methods-1.1.2.tgz";
7081 path = fetchurl {
7082 name = "methods-1.1.2.tgz";
7083 url = "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz";
7084 sha1 = "5529a4d67654134edcc5266656835b0f851afcee";
7085 };
7086 }
7087
7088 {
7089 name = "micromatch-2.3.11.tgz";
7090 path = fetchurl {
7091 name = "micromatch-2.3.11.tgz";
7092 url = "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz";
7093 sha1 = "86677c97d1720b363431d04d0d15293bd38c1565";
7094 };
7095 }
7096
7097 {
7098 name = "micromatch-3.1.10.tgz";
7099 path = fetchurl {
7100 name = "micromatch-3.1.10.tgz";
7101 url = "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz";
7102 sha1 = "70859bc95c9840952f359a068a3fc49f9ecfac23";
7103 };
7104 }
7105
7106 {
7107 name = "miller-rabin-4.0.1.tgz";
7108 path = fetchurl {
7109 name = "miller-rabin-4.0.1.tgz";
7110 url = "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz";
7111 sha1 = "f080351c865b0dc562a8462966daa53543c78a4d";
7112 };
7113 }
7114
7115 {
7116 name = "mime-db-1.36.0.tgz";
7117 path = fetchurl {
7118 name = "mime-db-1.36.0.tgz";
7119 url = "https://registry.yarnpkg.com/mime-db/-/mime-db-1.36.0.tgz";
7120 sha1 = "5020478db3c7fe93aad7bbcc4dcf869c43363397";
7121 };
7122 }
7123
7124 {
7125 name = "mime-types-2.1.20.tgz";
7126 path = fetchurl {
7127 name = "mime-types-2.1.20.tgz";
7128 url = "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.20.tgz";
7129 sha1 = "930cb719d571e903738520f8470911548ca2cc19";
7130 };
7131 }
7132
7133 {
7134 name = "mime-1.4.1.tgz";
7135 path = fetchurl {
7136 name = "mime-1.4.1.tgz";
7137 url = "https://registry.yarnpkg.com/mime/-/mime-1.4.1.tgz";
7138 sha1 = "121f9ebc49e3766f311a76e1fa1c8003c4b03aa6";
7139 };
7140 }
7141
7142 {
7143 name = "mime-2.3.1.tgz";
7144 path = fetchurl {
7145 name = "mime-2.3.1.tgz";
7146 url = "https://registry.yarnpkg.com/mime/-/mime-2.3.1.tgz";
7147 sha1 = "b1621c54d63b97c47d3cfe7f7215f7d64517c369";
7148 };
7149 }
7150
7151 {
7152 name = "mimic-fn-1.2.0.tgz";
7153 path = fetchurl {
7154 name = "mimic-fn-1.2.0.tgz";
7155 url = "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz";
7156 sha1 = "820c86a39334640e99516928bd03fca88057d022";
7157 };
7158 }
7159
7160 {
7161 name = "mini-css-extract-plugin-0.4.2.tgz";
7162 path = fetchurl {
7163 name = "mini-css-extract-plugin-0.4.2.tgz";
7164 url = "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-0.4.2.tgz";
7165 sha1 = "b3ecc0d6b1bbe5ff14add42b946a7b200cf78651";
7166 };
7167 }
7168
7169 {
7170 name = "minimalistic-assert-1.0.1.tgz";
7171 path = fetchurl {
7172 name = "minimalistic-assert-1.0.1.tgz";
7173 url = "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz";
7174 sha1 = "2e194de044626d4a10e7f7fbc00ce73e83e4d5c7";
7175 };
7176 }
7177
7178 {
7179 name = "minimalistic-crypto-utils-1.0.1.tgz";
7180 path = fetchurl {
7181 name = "minimalistic-crypto-utils-1.0.1.tgz";
7182 url = "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz";
7183 sha1 = "f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a";
7184 };
7185 }
7186
7187 {
7188 name = "minimatch-3.0.4.tgz";
7189 path = fetchurl {
7190 name = "minimatch-3.0.4.tgz";
7191 url = "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz";
7192 sha1 = "5166e286457f03306064be5497e8dbb0c3d32083";
7193 };
7194 }
7195
7196 {
7197 name = "minimist-0.0.8.tgz";
7198 path = fetchurl {
7199 name = "minimist-0.0.8.tgz";
7200 url = "http://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz";
7201 sha1 = "857fcabfc3397d2625b8228262e86aa7a011b05d";
7202 };
7203 }
7204
7205 {
7206 name = "minimist-1.1.3.tgz";
7207 path = fetchurl {
7208 name = "minimist-1.1.3.tgz";
7209 url = "http://registry.npmjs.org/minimist/-/minimist-1.1.3.tgz";
7210 sha1 = "3bedfd91a92d39016fcfaa1c681e8faa1a1efda8";
7211 };
7212 }
7213
7214 {
7215 name = "minimist-1.2.0.tgz";
7216 path = fetchurl {
7217 name = "minimist-1.2.0.tgz";
7218 url = "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz";
7219 sha1 = "a35008b20f41383eec1fb914f4cd5df79a264284";
7220 };
7221 }
7222
7223 {
7224 name = "minimist-0.0.10.tgz";
7225 path = fetchurl {
7226 name = "minimist-0.0.10.tgz";
7227 url = "http://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz";
7228 sha1 = "de3f98543dbf96082be48ad1a0c7cda836301dcf";
7229 };
7230 }
7231
7232 {
7233 name = "minipass-2.3.4.tgz";
7234 path = fetchurl {
7235 name = "minipass-2.3.4.tgz";
7236 url = "https://registry.yarnpkg.com/minipass/-/minipass-2.3.4.tgz";
7237 sha1 = "4768d7605ed6194d6d576169b9e12ef71e9d9957";
7238 };
7239 }
7240
7241 {
7242 name = "minizlib-1.1.0.tgz";
7243 path = fetchurl {
7244 name = "minizlib-1.1.0.tgz";
7245 url = "https://registry.yarnpkg.com/minizlib/-/minizlib-1.1.0.tgz";
7246 sha1 = "11e13658ce46bc3a70a267aac58359d1e0c29ceb";
7247 };
7248 }
7249
7250 {
7251 name = "mississippi-2.0.0.tgz";
7252 path = fetchurl {
7253 name = "mississippi-2.0.0.tgz";
7254 url = "https://registry.yarnpkg.com/mississippi/-/mississippi-2.0.0.tgz";
7255 sha1 = "3442a508fafc28500486feea99409676e4ee5a6f";
7256 };
7257 }
7258
7259 {
7260 name = "mississippi-3.0.0.tgz";
7261 path = fetchurl {
7262 name = "mississippi-3.0.0.tgz";
7263 url = "https://registry.yarnpkg.com/mississippi/-/mississippi-3.0.0.tgz";
7264 sha1 = "ea0a3291f97e0b5e8776b363d5f0a12d94c67022";
7265 };
7266 }
7267
7268 {
7269 name = "mixin-deep-1.3.1.tgz";
7270 path = fetchurl {
7271 name = "mixin-deep-1.3.1.tgz";
7272 url = "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.1.tgz";
7273 sha1 = "a49e7268dce1a0d9698e45326c5626df3543d0fe";
7274 };
7275 }
7276
7277 {
7278 name = "mixin-object-2.0.1.tgz";
7279 path = fetchurl {
7280 name = "mixin-object-2.0.1.tgz";
7281 url = "https://registry.yarnpkg.com/mixin-object/-/mixin-object-2.0.1.tgz";
7282 sha1 = "4fb949441dab182540f1fe035ba60e1947a5e57e";
7283 };
7284 }
7285
7286 {
7287 name = "mkdirp-0.5.1.tgz";
7288 path = fetchurl {
7289 name = "mkdirp-0.5.1.tgz";
7290 url = "http://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz";
7291 sha1 = "30057438eac6cf7f8c4767f38648d6697d75c903";
7292 };
7293 }
7294
7295 {
7296 name = "moo-0.4.3.tgz";
7297 path = fetchurl {
7298 name = "moo-0.4.3.tgz";
7299 url = "https://registry.yarnpkg.com/moo/-/moo-0.4.3.tgz";
7300 sha1 = "3f847a26f31cf625a956a87f2b10fbc013bfd10e";
7301 };
7302 }
7303
7304 {
7305 name = "mousetrap-1.6.2.tgz";
7306 path = fetchurl {
7307 name = "mousetrap-1.6.2.tgz";
7308 url = "https://registry.yarnpkg.com/mousetrap/-/mousetrap-1.6.2.tgz";
7309 sha1 = "caadd9cf886db0986fb2fee59a82f6bd37527587";
7310 };
7311 }
7312
7313 {
7314 name = "move-concurrently-1.0.1.tgz";
7315 path = fetchurl {
7316 name = "move-concurrently-1.0.1.tgz";
7317 url = "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz";
7318 sha1 = "be2c005fda32e0b29af1f05d7c4b33214c701f92";
7319 };
7320 }
7321
7322 {
7323 name = "ms-2.0.0.tgz";
7324 path = fetchurl {
7325 name = "ms-2.0.0.tgz";
7326 url = "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz";
7327 sha1 = "5608aeadfc00be6c2901df5f9861788de0d597c8";
7328 };
7329 }
7330
7331 {
7332 name = "ms-2.1.1.tgz";
7333 path = fetchurl {
7334 name = "ms-2.1.1.tgz";
7335 url = "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz";
7336 sha1 = "30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a";
7337 };
7338 }
7339
7340 {
7341 name = "multicast-dns-service-types-1.1.0.tgz";
7342 path = fetchurl {
7343 name = "multicast-dns-service-types-1.1.0.tgz";
7344 url = "https://registry.yarnpkg.com/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz";
7345 sha1 = "899f11d9686e5e05cb91b35d5f0e63b773cfc901";
7346 };
7347 }
7348
7349 {
7350 name = "multicast-dns-6.2.3.tgz";
7351 path = fetchurl {
7352 name = "multicast-dns-6.2.3.tgz";
7353 url = "https://registry.yarnpkg.com/multicast-dns/-/multicast-dns-6.2.3.tgz";
7354 sha1 = "a0ec7bd9055c4282f790c3c82f4e28db3b31b229";
7355 };
7356 }
7357
7358 {
7359 name = "mute-stream-0.0.7.tgz";
7360 path = fetchurl {
7361 name = "mute-stream-0.0.7.tgz";
7362 url = "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz";
7363 sha1 = "3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab";
7364 };
7365 }
7366
7367 {
7368 name = "nan-2.11.0.tgz";
7369 path = fetchurl {
7370 name = "nan-2.11.0.tgz";
7371 url = "https://registry.yarnpkg.com/nan/-/nan-2.11.0.tgz";
7372 sha1 = "574e360e4d954ab16966ec102c0c049fd961a099";
7373 };
7374 }
7375
7376 {
7377 name = "nanomatch-1.2.13.tgz";
7378 path = fetchurl {
7379 name = "nanomatch-1.2.13.tgz";
7380 url = "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz";
7381 sha1 = "b87a8aa4fc0de8fe6be88895b38983ff265bd119";
7382 };
7383 }
7384
7385 {
7386 name = "natural-compare-1.4.0.tgz";
7387 path = fetchurl {
7388 name = "natural-compare-1.4.0.tgz";
7389 url = "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz";
7390 sha1 = "4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7";
7391 };
7392 }
7393
7394 {
7395 name = "nearley-2.15.1.tgz";
7396 path = fetchurl {
7397 name = "nearley-2.15.1.tgz";
7398 url = "https://registry.yarnpkg.com/nearley/-/nearley-2.15.1.tgz";
7399 sha1 = "965e4e6ec9ed6b80fc81453e161efbcebb36d247";
7400 };
7401 }
7402
7403 {
7404 name = "needle-2.2.3.tgz";
7405 path = fetchurl {
7406 name = "needle-2.2.3.tgz";
7407 url = "https://registry.yarnpkg.com/needle/-/needle-2.2.3.tgz";
7408 sha1 = "c1b04da378cd634d8befe2de965dc2cfb0fd65ca";
7409 };
7410 }
7411
7412 {
7413 name = "negotiator-0.6.1.tgz";
7414 path = fetchurl {
7415 name = "negotiator-0.6.1.tgz";
7416 url = "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.1.tgz";
7417 sha1 = "2b327184e8992101177b28563fb5e7102acd0ca9";
7418 };
7419 }
7420
7421 {
7422 name = "neo-async-2.5.2.tgz";
7423 path = fetchurl {
7424 name = "neo-async-2.5.2.tgz";
7425 url = "https://registry.yarnpkg.com/neo-async/-/neo-async-2.5.2.tgz";
7426 sha1 = "489105ce7bc54e709d736b195f82135048c50fcc";
7427 };
7428 }
7429
7430 {
7431 name = "next-tick-1.0.0.tgz";
7432 path = fetchurl {
7433 name = "next-tick-1.0.0.tgz";
7434 url = "https://registry.yarnpkg.com/next-tick/-/next-tick-1.0.0.tgz";
7435 sha1 = "ca86d1fe8828169b0120208e3dc8424b9db8342c";
7436 };
7437 }
7438
7439 {
7440 name = "nice-try-1.0.5.tgz";
7441 path = fetchurl {
7442 name = "nice-try-1.0.5.tgz";
7443 url = "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz";
7444 sha1 = "a3378a7696ce7d223e88fc9b764bd7ef1089e366";
7445 };
7446 }
7447
7448 {
7449 name = "node-fetch-1.7.3.tgz";
7450 path = fetchurl {
7451 name = "node-fetch-1.7.3.tgz";
7452 url = "https://registry.yarnpkg.com/node-fetch/-/node-fetch-1.7.3.tgz";
7453 sha1 = "980f6f72d85211a5347c6b2bc18c5b84c3eb47ef";
7454 };
7455 }
7456
7457 {
7458 name = "node-forge-0.7.5.tgz";
7459 path = fetchurl {
7460 name = "node-forge-0.7.5.tgz";
7461 url = "https://registry.yarnpkg.com/node-forge/-/node-forge-0.7.5.tgz";
7462 sha1 = "6c152c345ce11c52f465c2abd957e8639cd674df";
7463 };
7464 }
7465
7466 {
7467 name = "node-gyp-3.8.0.tgz";
7468 path = fetchurl {
7469 name = "node-gyp-3.8.0.tgz";
7470 url = "https://registry.yarnpkg.com/node-gyp/-/node-gyp-3.8.0.tgz";
7471 sha1 = "540304261c330e80d0d5edce253a68cb3964218c";
7472 };
7473 }
7474
7475 {
7476 name = "node-int64-0.4.0.tgz";
7477 path = fetchurl {
7478 name = "node-int64-0.4.0.tgz";
7479 url = "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz";
7480 sha1 = "87a9065cdb355d3182d8f94ce11188b825c68a3b";
7481 };
7482 }
7483
7484 {
7485 name = "node-libs-browser-2.1.0.tgz";
7486 path = fetchurl {
7487 name = "node-libs-browser-2.1.0.tgz";
7488 url = "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.1.0.tgz";
7489 sha1 = "5f94263d404f6e44767d726901fff05478d600df";
7490 };
7491 }
7492
7493 {
7494 name = "node-notifier-5.2.1.tgz";
7495 path = fetchurl {
7496 name = "node-notifier-5.2.1.tgz";
7497 url = "https://registry.yarnpkg.com/node-notifier/-/node-notifier-5.2.1.tgz";
7498 sha1 = "fa313dd08f5517db0e2502e5758d664ac69f9dea";
7499 };
7500 }
7501
7502 {
7503 name = "node-pre-gyp-0.10.3.tgz";
7504 path = fetchurl {
7505 name = "node-pre-gyp-0.10.3.tgz";
7506 url = "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.10.3.tgz";
7507 sha1 = "3070040716afdc778747b61b6887bf78880b80fc";
7508 };
7509 }
7510
7511 {
7512 name = "node-pre-gyp-0.6.39.tgz";
7513 path = fetchurl {
7514 name = "node-pre-gyp-0.6.39.tgz";
7515 url = "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.6.39.tgz";
7516 sha1 = "c00e96860b23c0e1420ac7befc5044e1d78d8649";
7517 };
7518 }
7519
7520 {
7521 name = "node-releases-1.0.0-alpha.11.tgz";
7522 path = fetchurl {
7523 name = "node-releases-1.0.0-alpha.11.tgz";
7524 url = "https://registry.yarnpkg.com/node-releases/-/node-releases-1.0.0-alpha.11.tgz";
7525 sha1 = "73c810acc2e5b741a17ddfbb39dfca9ab9359d8a";
7526 };
7527 }
7528
7529 {
7530 name = "node-sass-4.9.3.tgz";
7531 path = fetchurl {
7532 name = "node-sass-4.9.3.tgz";
7533 url = "https://registry.yarnpkg.com/node-sass/-/node-sass-4.9.3.tgz";
7534 sha1 = "f407cf3d66f78308bb1e346b24fa428703196224";
7535 };
7536 }
7537
7538 {
7539 name = "node-zopfli-2.0.2.tgz";
7540 path = fetchurl {
7541 name = "node-zopfli-2.0.2.tgz";
7542 url = "https://registry.yarnpkg.com/node-zopfli/-/node-zopfli-2.0.2.tgz";
7543 sha1 = "a7a473ae92aaea85d4c68d45bbf2c944c46116b8";
7544 };
7545 }
7546
7547 {
7548 name = "nomnom-1.6.2.tgz";
7549 path = fetchurl {
7550 name = "nomnom-1.6.2.tgz";
7551 url = "https://registry.yarnpkg.com/nomnom/-/nomnom-1.6.2.tgz";
7552 sha1 = "84a66a260174408fc5b77a18f888eccc44fb6971";
7553 };
7554 }
7555
7556 {
7557 name = "nopt-3.0.6.tgz";
7558 path = fetchurl {
7559 name = "nopt-3.0.6.tgz";
7560 url = "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz";
7561 sha1 = "c6465dbf08abcd4db359317f79ac68a646b28ff9";
7562 };
7563 }
7564
7565 {
7566 name = "nopt-4.0.1.tgz";
7567 path = fetchurl {
7568 name = "nopt-4.0.1.tgz";
7569 url = "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz";
7570 sha1 = "d0d4685afd5415193c8c7505602d0d17cd64474d";
7571 };
7572 }
7573
7574 {
7575 name = "normalize-package-data-2.4.0.tgz";
7576 path = fetchurl {
7577 name = "normalize-package-data-2.4.0.tgz";
7578 url = "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.4.0.tgz";
7579 sha1 = "12f95a307d58352075a04907b84ac8be98ac012f";
7580 };
7581 }
7582
7583 {
7584 name = "normalize-path-2.1.1.tgz";
7585 path = fetchurl {
7586 name = "normalize-path-2.1.1.tgz";
7587 url = "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz";
7588 sha1 = "1ab28b556e198363a8c1a6f7e6fa20137fe6aed9";
7589 };
7590 }
7591
7592 {
7593 name = "normalize-range-0.1.2.tgz";
7594 path = fetchurl {
7595 name = "normalize-range-0.1.2.tgz";
7596 url = "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz";
7597 sha1 = "2d10c06bdfd312ea9777695a4d28439456b75942";
7598 };
7599 }
7600
7601 {
7602 name = "npm-bundled-1.0.5.tgz";
7603 path = fetchurl {
7604 name = "npm-bundled-1.0.5.tgz";
7605 url = "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.0.5.tgz";
7606 sha1 = "3c1732b7ba936b3a10325aef616467c0ccbcc979";
7607 };
7608 }
7609
7610 {
7611 name = "npm-packlist-1.1.11.tgz";
7612 path = fetchurl {
7613 name = "npm-packlist-1.1.11.tgz";
7614 url = "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.1.11.tgz";
7615 sha1 = "84e8c683cbe7867d34b1d357d893ce29e28a02de";
7616 };
7617 }
7618
7619 {
7620 name = "npm-run-path-2.0.2.tgz";
7621 path = fetchurl {
7622 name = "npm-run-path-2.0.2.tgz";
7623 url = "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz";
7624 sha1 = "35a9232dfa35d7067b4cb2ddf2357b1871536c5f";
7625 };
7626 }
7627
7628 {
7629 name = "npmlog-4.1.2.tgz";
7630 path = fetchurl {
7631 name = "npmlog-4.1.2.tgz";
7632 url = "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz";
7633 sha1 = "08a7f2a8bf734604779a9efa4ad5cc717abb954b";
7634 };
7635 }
7636
7637 {
7638 name = "nth-check-1.0.1.tgz";
7639 path = fetchurl {
7640 name = "nth-check-1.0.1.tgz";
7641 url = "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.1.tgz";
7642 sha1 = "9929acdf628fc2c41098deab82ac580cf149aae4";
7643 };
7644 }
7645
7646 {
7647 name = "num2fraction-1.2.2.tgz";
7648 path = fetchurl {
7649 name = "num2fraction-1.2.2.tgz";
7650 url = "https://registry.yarnpkg.com/num2fraction/-/num2fraction-1.2.2.tgz";
7651 sha1 = "6f682b6a027a4e9ddfa4564cd2589d1d4e669ede";
7652 };
7653 }
7654
7655 {
7656 name = "number-is-nan-1.0.1.tgz";
7657 path = fetchurl {
7658 name = "number-is-nan-1.0.1.tgz";
7659 url = "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz";
7660 sha1 = "097b602b53422a522c1afb8790318336941a011d";
7661 };
7662 }
7663
7664 {
7665 name = "nwsapi-2.0.9.tgz";
7666 path = fetchurl {
7667 name = "nwsapi-2.0.9.tgz";
7668 url = "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.0.9.tgz";
7669 sha1 = "77ac0cdfdcad52b6a1151a84e73254edc33ed016";
7670 };
7671 }
7672
7673 {
7674 name = "oauth-sign-0.8.2.tgz";
7675 path = fetchurl {
7676 name = "oauth-sign-0.8.2.tgz";
7677 url = "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz";
7678 sha1 = "46a6ab7f0aead8deae9ec0565780b7d4efeb9d43";
7679 };
7680 }
7681
7682 {
7683 name = "oauth-sign-0.9.0.tgz";
7684 path = fetchurl {
7685 name = "oauth-sign-0.9.0.tgz";
7686 url = "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz";
7687 sha1 = "47a7b016baa68b5fa0ecf3dee08a85c679ac6455";
7688 };
7689 }
7690
7691 {
7692 name = "object-assign-4.1.0.tgz";
7693 path = fetchurl {
7694 name = "object-assign-4.1.0.tgz";
7695 url = "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.0.tgz";
7696 sha1 = "7a3b3d0e98063d43f4c03f2e8ae6cd51a86883a0";
7697 };
7698 }
7699
7700 {
7701 name = "object-assign-4.1.1.tgz";
7702 path = fetchurl {
7703 name = "object-assign-4.1.1.tgz";
7704 url = "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz";
7705 sha1 = "2109adc7965887cfc05cbbd442cac8bfbb360863";
7706 };
7707 }
7708
7709 {
7710 name = "object-copy-0.1.0.tgz";
7711 path = fetchurl {
7712 name = "object-copy-0.1.0.tgz";
7713 url = "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz";
7714 sha1 = "7e7d858b781bd7c991a41ba975ed3812754e998c";
7715 };
7716 }
7717
7718 {
7719 name = "object-fit-images-3.2.4.tgz";
7720 path = fetchurl {
7721 name = "object-fit-images-3.2.4.tgz";
7722 url = "https://registry.yarnpkg.com/object-fit-images/-/object-fit-images-3.2.4.tgz";
7723 sha1 = "6c299d38fdf207746e5d2d46c2877f6f25d15b52";
7724 };
7725 }
7726
7727 {
7728 name = "object-inspect-1.6.0.tgz";
7729 path = fetchurl {
7730 name = "object-inspect-1.6.0.tgz";
7731 url = "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.6.0.tgz";
7732 sha1 = "c70b6cbf72f274aab4c34c0c82f5167bf82cf15b";
7733 };
7734 }
7735
7736 {
7737 name = "object-is-1.0.1.tgz";
7738 path = fetchurl {
7739 name = "object-is-1.0.1.tgz";
7740 url = "https://registry.yarnpkg.com/object-is/-/object-is-1.0.1.tgz";
7741 sha1 = "0aa60ec9989a0b3ed795cf4d06f62cf1ad6539b6";
7742 };
7743 }
7744
7745 {
7746 name = "object-keys-1.0.12.tgz";
7747 path = fetchurl {
7748 name = "object-keys-1.0.12.tgz";
7749 url = "https://registry.yarnpkg.com/object-keys/-/object-keys-1.0.12.tgz";
7750 sha1 = "09c53855377575310cca62f55bb334abff7b3ed2";
7751 };
7752 }
7753
7754 {
7755 name = "object-visit-1.0.1.tgz";
7756 path = fetchurl {
7757 name = "object-visit-1.0.1.tgz";
7758 url = "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz";
7759 sha1 = "f79c4493af0c5377b59fe39d395e41042dd045bb";
7760 };
7761 }
7762
7763 {
7764 name = "object.assign-4.1.0.tgz";
7765 path = fetchurl {
7766 name = "object.assign-4.1.0.tgz";
7767 url = "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.0.tgz";
7768 sha1 = "968bf1100d7956bb3ca086f006f846b3bc4008da";
7769 };
7770 }
7771
7772 {
7773 name = "object.entries-1.0.4.tgz";
7774 path = fetchurl {
7775 name = "object.entries-1.0.4.tgz";
7776 url = "https://registry.yarnpkg.com/object.entries/-/object.entries-1.0.4.tgz";
7777 sha1 = "1bf9a4dd2288f5b33f3a993d257661f05d161a5f";
7778 };
7779 }
7780
7781 {
7782 name = "object.getownpropertydescriptors-2.0.3.tgz";
7783 path = fetchurl {
7784 name = "object.getownpropertydescriptors-2.0.3.tgz";
7785 url = "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz";
7786 sha1 = "8758c846f5b407adab0f236e0986f14b051caa16";
7787 };
7788 }
7789
7790 {
7791 name = "object.omit-2.0.1.tgz";
7792 path = fetchurl {
7793 name = "object.omit-2.0.1.tgz";
7794 url = "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz";
7795 sha1 = "1a9c744829f39dbb858c76ca3579ae2a54ebd1fa";
7796 };
7797 }
7798
7799 {
7800 name = "object.pick-1.3.0.tgz";
7801 path = fetchurl {
7802 name = "object.pick-1.3.0.tgz";
7803 url = "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz";
7804 sha1 = "87a10ac4c1694bd2e1cbf53591a66141fb5dd747";
7805 };
7806 }
7807
7808 {
7809 name = "object.values-1.0.4.tgz";
7810 path = fetchurl {
7811 name = "object.values-1.0.4.tgz";
7812 url = "https://registry.yarnpkg.com/object.values/-/object.values-1.0.4.tgz";
7813 sha1 = "e524da09b4f66ff05df457546ec72ac99f13069a";
7814 };
7815 }
7816
7817 {
7818 name = "obuf-1.1.2.tgz";
7819 path = fetchurl {
7820 name = "obuf-1.1.2.tgz";
7821 url = "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz";
7822 sha1 = "09bea3343d41859ebd446292d11c9d4db619084e";
7823 };
7824 }
7825
7826 {
7827 name = "offline-plugin-5.0.5.tgz";
7828 path = fetchurl {
7829 name = "offline-plugin-5.0.5.tgz";
7830 url = "https://registry.yarnpkg.com/offline-plugin/-/offline-plugin-5.0.5.tgz";
7831 sha1 = "e9b16c569d19899af9c923f5bc260705578ffeba";
7832 };
7833 }
7834
7835 {
7836 name = "on-finished-2.3.0.tgz";
7837 path = fetchurl {
7838 name = "on-finished-2.3.0.tgz";
7839 url = "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz";
7840 sha1 = "20f1336481b083cd75337992a16971aa2d906947";
7841 };
7842 }
7843
7844 {
7845 name = "on-headers-1.0.1.tgz";
7846 path = fetchurl {
7847 name = "on-headers-1.0.1.tgz";
7848 url = "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.1.tgz";
7849 sha1 = "928f5d0f470d49342651ea6794b0857c100693f7";
7850 };
7851 }
7852
7853 {
7854 name = "once-1.4.0.tgz";
7855 path = fetchurl {
7856 name = "once-1.4.0.tgz";
7857 url = "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz";
7858 sha1 = "583b1aa775961d4b113ac17d9c50baef9dd76bd1";
7859 };
7860 }
7861
7862 {
7863 name = "onetime-2.0.1.tgz";
7864 path = fetchurl {
7865 name = "onetime-2.0.1.tgz";
7866 url = "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz";
7867 sha1 = "067428230fd67443b2794b22bba528b6867962d4";
7868 };
7869 }
7870
7871 {
7872 name = "opener-1.5.1.tgz";
7873 path = fetchurl {
7874 name = "opener-1.5.1.tgz";
7875 url = "https://registry.yarnpkg.com/opener/-/opener-1.5.1.tgz";
7876 sha1 = "6d2f0e77f1a0af0032aca716c2c1fbb8e7e8abed";
7877 };
7878 }
7879
7880 {
7881 name = "opn-5.3.0.tgz";
7882 path = fetchurl {
7883 name = "opn-5.3.0.tgz";
7884 url = "https://registry.yarnpkg.com/opn/-/opn-5.3.0.tgz";
7885 sha1 = "64871565c863875f052cfdf53d3e3cb5adb53b1c";
7886 };
7887 }
7888
7889 {
7890 name = "optimist-0.6.1.tgz";
7891 path = fetchurl {
7892 name = "optimist-0.6.1.tgz";
7893 url = "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz";
7894 sha1 = "da3ea74686fa21a19a111c326e90eb15a0196686";
7895 };
7896 }
7897
7898 {
7899 name = "optionator-0.8.2.tgz";
7900 path = fetchurl {
7901 name = "optionator-0.8.2.tgz";
7902 url = "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz";
7903 sha1 = "364c5e409d3f4d6301d6c0b4c05bba50180aeb64";
7904 };
7905 }
7906
7907 {
7908 name = "original-1.0.2.tgz";
7909 path = fetchurl {
7910 name = "original-1.0.2.tgz";
7911 url = "https://registry.yarnpkg.com/original/-/original-1.0.2.tgz";
7912 sha1 = "e442a61cffe1c5fd20a65f3261c26663b303f25f";
7913 };
7914 }
7915
7916 {
7917 name = "os-browserify-0.3.0.tgz";
7918 path = fetchurl {
7919 name = "os-browserify-0.3.0.tgz";
7920 url = "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz";
7921 sha1 = "854373c7f5c2315914fc9bfc6bd8238fdda1ec27";
7922 };
7923 }
7924
7925 {
7926 name = "os-homedir-1.0.2.tgz";
7927 path = fetchurl {
7928 name = "os-homedir-1.0.2.tgz";
7929 url = "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz";
7930 sha1 = "ffbc4988336e0e833de0c168c7ef152121aa7fb3";
7931 };
7932 }
7933
7934 {
7935 name = "os-locale-1.4.0.tgz";
7936 path = fetchurl {
7937 name = "os-locale-1.4.0.tgz";
7938 url = "http://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz";
7939 sha1 = "20f9f17ae29ed345e8bde583b13d2009803c14d9";
7940 };
7941 }
7942
7943 {
7944 name = "os-locale-2.1.0.tgz";
7945 path = fetchurl {
7946 name = "os-locale-2.1.0.tgz";
7947 url = "https://registry.yarnpkg.com/os-locale/-/os-locale-2.1.0.tgz";
7948 sha1 = "42bc2900a6b5b8bd17376c8e882b65afccf24bf2";
7949 };
7950 }
7951
7952 {
7953 name = "os-locale-3.0.1.tgz";
7954 path = fetchurl {
7955 name = "os-locale-3.0.1.tgz";
7956 url = "https://registry.yarnpkg.com/os-locale/-/os-locale-3.0.1.tgz";
7957 sha1 = "3b014fbf01d87f60a1e5348d80fe870dc82c4620";
7958 };
7959 }
7960
7961 {
7962 name = "os-tmpdir-1.0.2.tgz";
7963 path = fetchurl {
7964 name = "os-tmpdir-1.0.2.tgz";
7965 url = "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz";
7966 sha1 = "bbe67406c79aa85c5cfec766fe5734555dfa1274";
7967 };
7968 }
7969
7970 {
7971 name = "osenv-0.1.5.tgz";
7972 path = fetchurl {
7973 name = "osenv-0.1.5.tgz";
7974 url = "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz";
7975 sha1 = "85cdfafaeb28e8677f416e287592b5f3f49ea410";
7976 };
7977 }
7978
7979 {
7980 name = "p-defer-1.0.0.tgz";
7981 path = fetchurl {
7982 name = "p-defer-1.0.0.tgz";
7983 url = "https://registry.yarnpkg.com/p-defer/-/p-defer-1.0.0.tgz";
7984 sha1 = "9f6eb182f6c9aa8cd743004a7d4f96b196b0fb0c";
7985 };
7986 }
7987
7988 {
7989 name = "p-finally-1.0.0.tgz";
7990 path = fetchurl {
7991 name = "p-finally-1.0.0.tgz";
7992 url = "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz";
7993 sha1 = "3fbcfb15b899a44123b34b6dcc18b724336a2cae";
7994 };
7995 }
7996
7997 {
7998 name = "p-is-promise-1.1.0.tgz";
7999 path = fetchurl {
8000 name = "p-is-promise-1.1.0.tgz";
8001 url = "https://registry.yarnpkg.com/p-is-promise/-/p-is-promise-1.1.0.tgz";
8002 sha1 = "9c9456989e9f6588017b0434d56097675c3da05e";
8003 };
8004 }
8005
8006 {
8007 name = "p-limit-1.3.0.tgz";
8008 path = fetchurl {
8009 name = "p-limit-1.3.0.tgz";
8010 url = "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz";
8011 sha1 = "b86bd5f0c25690911c7590fcbfc2010d54b3ccb8";
8012 };
8013 }
8014
8015 {
8016 name = "p-limit-2.0.0.tgz";
8017 path = fetchurl {
8018 name = "p-limit-2.0.0.tgz";
8019 url = "https://registry.yarnpkg.com/p-limit/-/p-limit-2.0.0.tgz";
8020 sha1 = "e624ed54ee8c460a778b3c9f3670496ff8a57aec";
8021 };
8022 }
8023
8024 {
8025 name = "p-locate-2.0.0.tgz";
8026 path = fetchurl {
8027 name = "p-locate-2.0.0.tgz";
8028 url = "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz";
8029 sha1 = "20a0103b222a70c8fd39cc2e580680f3dde5ec43";
8030 };
8031 }
8032
8033 {
8034 name = "p-locate-3.0.0.tgz";
8035 path = fetchurl {
8036 name = "p-locate-3.0.0.tgz";
8037 url = "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz";
8038 sha1 = "322d69a05c0264b25997d9f40cd8a891ab0064a4";
8039 };
8040 }
8041
8042 {
8043 name = "p-map-1.2.0.tgz";
8044 path = fetchurl {
8045 name = "p-map-1.2.0.tgz";
8046 url = "https://registry.yarnpkg.com/p-map/-/p-map-1.2.0.tgz";
8047 sha1 = "e4e94f311eabbc8633a1e79908165fca26241b6b";
8048 };
8049 }
8050
8051 {
8052 name = "p-try-1.0.0.tgz";
8053 path = fetchurl {
8054 name = "p-try-1.0.0.tgz";
8055 url = "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz";
8056 sha1 = "cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3";
8057 };
8058 }
8059
8060 {
8061 name = "p-try-2.0.0.tgz";
8062 path = fetchurl {
8063 name = "p-try-2.0.0.tgz";
8064 url = "https://registry.yarnpkg.com/p-try/-/p-try-2.0.0.tgz";
8065 sha1 = "85080bb87c64688fa47996fe8f7dfbe8211760b1";
8066 };
8067 }
8068
8069 {
8070 name = "packet-reader-0.3.1.tgz";
8071 path = fetchurl {
8072 name = "packet-reader-0.3.1.tgz";
8073 url = "https://registry.yarnpkg.com/packet-reader/-/packet-reader-0.3.1.tgz";
8074 sha1 = "cd62e60af8d7fea8a705ec4ff990871c46871f27";
8075 };
8076 }
8077
8078 {
8079 name = "pako-1.0.6.tgz";
8080 path = fetchurl {
8081 name = "pako-1.0.6.tgz";
8082 url = "https://registry.yarnpkg.com/pako/-/pako-1.0.6.tgz";
8083 sha1 = "0101211baa70c4bca4a0f63f2206e97b7dfaf258";
8084 };
8085 }
8086
8087 {
8088 name = "parallel-transform-1.1.0.tgz";
8089 path = fetchurl {
8090 name = "parallel-transform-1.1.0.tgz";
8091 url = "https://registry.yarnpkg.com/parallel-transform/-/parallel-transform-1.1.0.tgz";
8092 sha1 = "d410f065b05da23081fcd10f28854c29bda33b06";
8093 };
8094 }
8095
8096 {
8097 name = "parse-asn1-5.1.1.tgz";
8098 path = fetchurl {
8099 name = "parse-asn1-5.1.1.tgz";
8100 url = "http://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.1.tgz";
8101 sha1 = "f6bf293818332bd0dab54efb16087724745e6ca8";
8102 };
8103 }
8104
8105 {
8106 name = "parse-css-font-2.0.2.tgz";
8107 path = fetchurl {
8108 name = "parse-css-font-2.0.2.tgz";
8109 url = "https://registry.yarnpkg.com/parse-css-font/-/parse-css-font-2.0.2.tgz";
8110 sha1 = "7b60b060705a25a9b90b7f0ed493e5823248a652";
8111 };
8112 }
8113
8114 {
8115 name = "parse-glob-3.0.4.tgz";
8116 path = fetchurl {
8117 name = "parse-glob-3.0.4.tgz";
8118 url = "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz";
8119 sha1 = "b2c376cfb11f35513badd173ef0bb6e3a388391c";
8120 };
8121 }
8122
8123 {
8124 name = "parse-json-2.2.0.tgz";
8125 path = fetchurl {
8126 name = "parse-json-2.2.0.tgz";
8127 url = "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz";
8128 sha1 = "f480f40434ef80741f8469099f8dea18f55a4dc9";
8129 };
8130 }
8131
8132 {
8133 name = "parse-json-4.0.0.tgz";
8134 path = fetchurl {
8135 name = "parse-json-4.0.0.tgz";
8136 url = "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz";
8137 sha1 = "be35f5425be1f7f6c747184f98a788cb99477ee0";
8138 };
8139 }
8140
8141 {
8142 name = "parse5-4.0.0.tgz";
8143 path = fetchurl {
8144 name = "parse5-4.0.0.tgz";
8145 url = "https://registry.yarnpkg.com/parse5/-/parse5-4.0.0.tgz";
8146 sha1 = "6d78656e3da8d78b4ec0b906f7c08ef1dfe3f608";
8147 };
8148 }
8149
8150 {
8151 name = "parse5-3.0.3.tgz";
8152 path = fetchurl {
8153 name = "parse5-3.0.3.tgz";
8154 url = "https://registry.yarnpkg.com/parse5/-/parse5-3.0.3.tgz";
8155 sha1 = "042f792ffdd36851551cf4e9e066b3874ab45b5c";
8156 };
8157 }
8158
8159 {
8160 name = "parseurl-1.3.2.tgz";
8161 path = fetchurl {
8162 name = "parseurl-1.3.2.tgz";
8163 url = "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.2.tgz";
8164 sha1 = "fc289d4ed8993119460c156253262cdc8de65bf3";
8165 };
8166 }
8167
8168 {
8169 name = "pascalcase-0.1.1.tgz";
8170 path = fetchurl {
8171 name = "pascalcase-0.1.1.tgz";
8172 url = "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz";
8173 sha1 = "b363e55e8006ca6fe21784d2db22bd15d7917f14";
8174 };
8175 }
8176
8177 {
8178 name = "path-browserify-0.0.0.tgz";
8179 path = fetchurl {
8180 name = "path-browserify-0.0.0.tgz";
8181 url = "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.0.tgz";
8182 sha1 = "a0b870729aae214005b7d5032ec2cbbb0fb4451a";
8183 };
8184 }
8185
8186 {
8187 name = "path-complete-extname-1.0.0.tgz";
8188 path = fetchurl {
8189 name = "path-complete-extname-1.0.0.tgz";
8190 url = "https://registry.yarnpkg.com/path-complete-extname/-/path-complete-extname-1.0.0.tgz";
8191 sha1 = "f889985dc91000c815515c0bfed06c5acda0752b";
8192 };
8193 }
8194
8195 {
8196 name = "path-dirname-1.0.2.tgz";
8197 path = fetchurl {
8198 name = "path-dirname-1.0.2.tgz";
8199 url = "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz";
8200 sha1 = "cc33d24d525e099a5388c0336c6e32b9160609e0";
8201 };
8202 }
8203
8204 {
8205 name = "path-exists-2.1.0.tgz";
8206 path = fetchurl {
8207 name = "path-exists-2.1.0.tgz";
8208 url = "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz";
8209 sha1 = "0feb6c64f0fc518d9a754dd5efb62c7022761f4b";
8210 };
8211 }
8212
8213 {
8214 name = "path-exists-3.0.0.tgz";
8215 path = fetchurl {
8216 name = "path-exists-3.0.0.tgz";
8217 url = "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz";
8218 sha1 = "ce0ebeaa5f78cb18925ea7d810d7b59b010fd515";
8219 };
8220 }
8221
8222 {
8223 name = "path-is-absolute-1.0.1.tgz";
8224 path = fetchurl {
8225 name = "path-is-absolute-1.0.1.tgz";
8226 url = "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz";
8227 sha1 = "174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f";
8228 };
8229 }
8230
8231 {
8232 name = "path-is-inside-1.0.2.tgz";
8233 path = fetchurl {
8234 name = "path-is-inside-1.0.2.tgz";
8235 url = "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz";
8236 sha1 = "365417dede44430d1c11af61027facf074bdfc53";
8237 };
8238 }
8239
8240 {
8241 name = "path-key-2.0.1.tgz";
8242 path = fetchurl {
8243 name = "path-key-2.0.1.tgz";
8244 url = "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz";
8245 sha1 = "411cadb574c5a140d3a4b1910d40d80cc9f40b40";
8246 };
8247 }
8248
8249 {
8250 name = "path-parse-1.0.6.tgz";
8251 path = fetchurl {
8252 name = "path-parse-1.0.6.tgz";
8253 url = "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz";
8254 sha1 = "d62dbb5679405d72c4737ec58600e9ddcf06d24c";
8255 };
8256 }
8257
8258 {
8259 name = "path-to-regexp-0.1.7.tgz";
8260 path = fetchurl {
8261 name = "path-to-regexp-0.1.7.tgz";
8262 url = "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz";
8263 sha1 = "df604178005f522f15eb4490e7247a1bfaa67f8c";
8264 };
8265 }
8266
8267 {
8268 name = "path-to-regexp-1.7.0.tgz";
8269 path = fetchurl {
8270 name = "path-to-regexp-1.7.0.tgz";
8271 url = "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-1.7.0.tgz";
8272 sha1 = "59fde0f435badacba103a84e9d3bc64e96b9937d";
8273 };
8274 }
8275
8276 {
8277 name = "path-type-1.1.0.tgz";
8278 path = fetchurl {
8279 name = "path-type-1.1.0.tgz";
8280 url = "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz";
8281 sha1 = "59c44f7ee491da704da415da5a4070ba4f8fe441";
8282 };
8283 }
8284
8285 {
8286 name = "path-type-2.0.0.tgz";
8287 path = fetchurl {
8288 name = "path-type-2.0.0.tgz";
8289 url = "https://registry.yarnpkg.com/path-type/-/path-type-2.0.0.tgz";
8290 sha1 = "f012ccb8415b7096fc2daa1054c3d72389594c73";
8291 };
8292 }
8293
8294 {
8295 name = "pbkdf2-3.0.16.tgz";
8296 path = fetchurl {
8297 name = "pbkdf2-3.0.16.tgz";
8298 url = "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.16.tgz";
8299 sha1 = "7404208ec6b01b62d85bf83853a8064f8d9c2a5c";
8300 };
8301 }
8302
8303 {
8304 name = "performance-now-0.2.0.tgz";
8305 path = fetchurl {
8306 name = "performance-now-0.2.0.tgz";
8307 url = "https://registry.yarnpkg.com/performance-now/-/performance-now-0.2.0.tgz";
8308 sha1 = "33ef30c5c77d4ea21c5a53869d91b56d8f2555e5";
8309 };
8310 }
8311
8312 {
8313 name = "performance-now-2.1.0.tgz";
8314 path = fetchurl {
8315 name = "performance-now-2.1.0.tgz";
8316 url = "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz";
8317 sha1 = "6309f4e0e5fa913ec1c69307ae364b4b377c9e7b";
8318 };
8319 }
8320
8321 {
8322 name = "pg-connection-string-0.1.3.tgz";
8323 path = fetchurl {
8324 name = "pg-connection-string-0.1.3.tgz";
8325 url = "https://registry.yarnpkg.com/pg-connection-string/-/pg-connection-string-0.1.3.tgz";
8326 sha1 = "da1847b20940e42ee1492beaf65d49d91b245df7";
8327 };
8328 }
8329
8330 {
8331 name = "pg-int8-1.0.1.tgz";
8332 path = fetchurl {
8333 name = "pg-int8-1.0.1.tgz";
8334 url = "https://registry.yarnpkg.com/pg-int8/-/pg-int8-1.0.1.tgz";
8335 sha1 = "943bd463bf5b71b4170115f80f8efc9a0c0eb78c";
8336 };
8337 }
8338
8339 {
8340 name = "pg-pool-1.8.0.tgz";
8341 path = fetchurl {
8342 name = "pg-pool-1.8.0.tgz";
8343 url = "https://registry.yarnpkg.com/pg-pool/-/pg-pool-1.8.0.tgz";
8344 sha1 = "f7ec73824c37a03f076f51bfdf70e340147c4f37";
8345 };
8346 }
8347
8348 {
8349 name = "pg-types-1.13.0.tgz";
8350 path = fetchurl {
8351 name = "pg-types-1.13.0.tgz";
8352 url = "https://registry.yarnpkg.com/pg-types/-/pg-types-1.13.0.tgz";
8353 sha1 = "75f490b8a8abf75f1386ef5ec4455ecf6b345c63";
8354 };
8355 }
8356
8357 {
8358 name = "pg-6.4.2.tgz";
8359 path = fetchurl {
8360 name = "pg-6.4.2.tgz";
8361 url = "https://registry.yarnpkg.com/pg/-/pg-6.4.2.tgz";
8362 sha1 = "c364011060eac7a507a2ae063eb857ece910e27f";
8363 };
8364 }
8365
8366 {
8367 name = "pgpass-1.0.2.tgz";
8368 path = fetchurl {
8369 name = "pgpass-1.0.2.tgz";
8370 url = "https://registry.yarnpkg.com/pgpass/-/pgpass-1.0.2.tgz";
8371 sha1 = "2a7bb41b6065b67907e91da1b07c1847c877b306";
8372 };
8373 }
8374
8375 {
8376 name = "pify-2.3.0.tgz";
8377 path = fetchurl {
8378 name = "pify-2.3.0.tgz";
8379 url = "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz";
8380 sha1 = "ed141a6ac043a849ea588498e7dca8b15330e90c";
8381 };
8382 }
8383
8384 {
8385 name = "pify-3.0.0.tgz";
8386 path = fetchurl {
8387 name = "pify-3.0.0.tgz";
8388 url = "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz";
8389 sha1 = "e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176";
8390 };
8391 }
8392
8393 {
8394 name = "pinkie-promise-2.0.1.tgz";
8395 path = fetchurl {
8396 name = "pinkie-promise-2.0.1.tgz";
8397 url = "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz";
8398 sha1 = "2135d6dfa7a358c069ac9b178776288228450ffa";
8399 };
8400 }
8401
8402 {
8403 name = "pinkie-2.0.4.tgz";
8404 path = fetchurl {
8405 name = "pinkie-2.0.4.tgz";
8406 url = "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz";
8407 sha1 = "72556b80cfa0d48a974e80e77248e80ed4f7f870";
8408 };
8409 }
8410
8411 {
8412 name = "pkg-dir-1.0.0.tgz";
8413 path = fetchurl {
8414 name = "pkg-dir-1.0.0.tgz";
8415 url = "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-1.0.0.tgz";
8416 sha1 = "7a4b508a8d5bb2d629d447056ff4e9c9314cf3d4";
8417 };
8418 }
8419
8420 {
8421 name = "pkg-dir-2.0.0.tgz";
8422 path = fetchurl {
8423 name = "pkg-dir-2.0.0.tgz";
8424 url = "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-2.0.0.tgz";
8425 sha1 = "f6d5d1109e19d63edf428e0bd57e12777615334b";
8426 };
8427 }
8428
8429 {
8430 name = "pkg-dir-3.0.0.tgz";
8431 path = fetchurl {
8432 name = "pkg-dir-3.0.0.tgz";
8433 url = "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz";
8434 sha1 = "2749020f239ed990881b1f71210d51eb6523bea3";
8435 };
8436 }
8437
8438 {
8439 name = "pluralize-7.0.0.tgz";
8440 path = fetchurl {
8441 name = "pluralize-7.0.0.tgz";
8442 url = "https://registry.yarnpkg.com/pluralize/-/pluralize-7.0.0.tgz";
8443 sha1 = "298b89df8b93b0221dbf421ad2b1b1ea23fc6777";
8444 };
8445 }
8446
8447 {
8448 name = "pn-1.1.0.tgz";
8449 path = fetchurl {
8450 name = "pn-1.1.0.tgz";
8451 url = "https://registry.yarnpkg.com/pn/-/pn-1.1.0.tgz";
8452 sha1 = "e2f4cef0e219f463c179ab37463e4e1ecdccbafb";
8453 };
8454 }
8455
8456 {
8457 name = "portfinder-1.0.17.tgz";
8458 path = fetchurl {
8459 name = "portfinder-1.0.17.tgz";
8460 url = "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.17.tgz";
8461 sha1 = "a8a1691143e46c4735edefcf4fbcccedad26456a";
8462 };
8463 }
8464
8465 {
8466 name = "posix-character-classes-0.1.1.tgz";
8467 path = fetchurl {
8468 name = "posix-character-classes-0.1.1.tgz";
8469 url = "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz";
8470 sha1 = "01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab";
8471 };
8472 }
8473
8474 {
8475 name = "postcss-advanced-variables-2.3.3.tgz";
8476 path = fetchurl {
8477 name = "postcss-advanced-variables-2.3.3.tgz";
8478 url = "https://registry.yarnpkg.com/postcss-advanced-variables/-/postcss-advanced-variables-2.3.3.tgz";
8479 sha1 = "80ac5b05988d02f63352974491e319910f33337e";
8480 };
8481 }
8482
8483 {
8484 name = "postcss-apply-0.9.0.tgz";
8485 path = fetchurl {
8486 name = "postcss-apply-0.9.0.tgz";
8487 url = "https://registry.yarnpkg.com/postcss-apply/-/postcss-apply-0.9.0.tgz";
8488 sha1 = "a152e6e34a6c55d0895751929319c262c5d8c289";
8489 };
8490 }
8491
8492 {
8493 name = "postcss-atroot-0.1.3.tgz";
8494 path = fetchurl {
8495 name = "postcss-atroot-0.1.3.tgz";
8496 url = "https://registry.yarnpkg.com/postcss-atroot/-/postcss-atroot-0.1.3.tgz";
8497 sha1 = "6752c0230c745140549345b2b0e30ebeda01a405";
8498 };
8499 }
8500
8501 {
8502 name = "postcss-attribute-case-insensitive-2.0.0.tgz";
8503 path = fetchurl {
8504 name = "postcss-attribute-case-insensitive-2.0.0.tgz";
8505 url = "https://registry.yarnpkg.com/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-2.0.0.tgz";
8506 sha1 = "94dc422c8f90997f16bd33a3654bbbec084963b4";
8507 };
8508 }
8509
8510 {
8511 name = "postcss-color-hex-alpha-3.0.0.tgz";
8512 path = fetchurl {
8513 name = "postcss-color-hex-alpha-3.0.0.tgz";
8514 url = "https://registry.yarnpkg.com/postcss-color-hex-alpha/-/postcss-color-hex-alpha-3.0.0.tgz";
8515 sha1 = "1e53e6c8acb237955e8fd08b7ecdb1b8b8309f95";
8516 };
8517 }
8518
8519 {
8520 name = "postcss-color-mod-function-2.4.3.tgz";
8521 path = fetchurl {
8522 name = "postcss-color-mod-function-2.4.3.tgz";
8523 url = "https://registry.yarnpkg.com/postcss-color-mod-function/-/postcss-color-mod-function-2.4.3.tgz";
8524 sha1 = "14a97f5b17a5f19396e9dea7ffcb5be732592baf";
8525 };
8526 }
8527
8528 {
8529 name = "postcss-color-rebeccapurple-3.1.0.tgz";
8530 path = fetchurl {
8531 name = "postcss-color-rebeccapurple-3.1.0.tgz";
8532 url = "https://registry.yarnpkg.com/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-3.1.0.tgz";
8533 sha1 = "ce1269ecc2d0d8bf92aab44bd884e633124c33ec";
8534 };
8535 }
8536
8537 {
8538 name = "postcss-color-rgb-2.0.0.tgz";
8539 path = fetchurl {
8540 name = "postcss-color-rgb-2.0.0.tgz";
8541 url = "https://registry.yarnpkg.com/postcss-color-rgb/-/postcss-color-rgb-2.0.0.tgz";
8542 sha1 = "14539c8a7131494b482e0dd1cc265ff6514b5263";
8543 };
8544 }
8545
8546 {
8547 name = "postcss-custom-media-6.0.0.tgz";
8548 path = fetchurl {
8549 name = "postcss-custom-media-6.0.0.tgz";
8550 url = "https://registry.yarnpkg.com/postcss-custom-media/-/postcss-custom-media-6.0.0.tgz";
8551 sha1 = "be532784110ecb295044fb5395a18006eb21a737";
8552 };
8553 }
8554
8555 {
8556 name = "postcss-custom-properties-7.0.0.tgz";
8557 path = fetchurl {
8558 name = "postcss-custom-properties-7.0.0.tgz";
8559 url = "https://registry.yarnpkg.com/postcss-custom-properties/-/postcss-custom-properties-7.0.0.tgz";
8560 sha1 = "24dc4fbe6d6ed550ea4fd3b11204660e9ffa3b33";
8561 };
8562 }
8563
8564 {
8565 name = "postcss-custom-selectors-4.0.1.tgz";
8566 path = fetchurl {
8567 name = "postcss-custom-selectors-4.0.1.tgz";
8568 url = "https://registry.yarnpkg.com/postcss-custom-selectors/-/postcss-custom-selectors-4.0.1.tgz";
8569 sha1 = "781382f94c52e727ef5ca4776ea2adf49a611382";
8570 };
8571 }
8572
8573 {
8574 name = "postcss-dir-pseudo-class-3.0.0.tgz";
8575 path = fetchurl {
8576 name = "postcss-dir-pseudo-class-3.0.0.tgz";
8577 url = "https://registry.yarnpkg.com/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-3.0.0.tgz";
8578 sha1 = "31a18af3b9b1b33be635599b998a9829896c3fed";
8579 };
8580 }
8581
8582 {
8583 name = "postcss-extend-rule-1.1.0.tgz";
8584 path = fetchurl {
8585 name = "postcss-extend-rule-1.1.0.tgz";
8586 url = "https://registry.yarnpkg.com/postcss-extend-rule/-/postcss-extend-rule-1.1.0.tgz";
8587 sha1 = "11e4d590ffe4253b853ef1fc03be7167da607d38";
8588 };
8589 }
8590
8591 {
8592 name = "postcss-focus-visible-2.0.0.tgz";
8593 path = fetchurl {
8594 name = "postcss-focus-visible-2.0.0.tgz";
8595 url = "https://registry.yarnpkg.com/postcss-focus-visible/-/postcss-focus-visible-2.0.0.tgz";
8596 sha1 = "a6b9881f6710f6251790e2f151c94b161e23eeb6";
8597 };
8598 }
8599
8600 {
8601 name = "postcss-font-family-system-ui-3.0.0.tgz";
8602 path = fetchurl {
8603 name = "postcss-font-family-system-ui-3.0.0.tgz";
8604 url = "https://registry.yarnpkg.com/postcss-font-family-system-ui/-/postcss-font-family-system-ui-3.0.0.tgz";
8605 sha1 = "675fe7a9e029669f05f8dba2e44c2225ede80623";
8606 };
8607 }
8608
8609 {
8610 name = "postcss-font-variant-3.0.0.tgz";
8611 path = fetchurl {
8612 name = "postcss-font-variant-3.0.0.tgz";
8613 url = "https://registry.yarnpkg.com/postcss-font-variant/-/postcss-font-variant-3.0.0.tgz";
8614 sha1 = "08ccc88f6050ba82ed8ef2cc76c0c6a6b41f183e";
8615 };
8616 }
8617
8618 {
8619 name = "postcss-initial-2.0.0.tgz";
8620 path = fetchurl {
8621 name = "postcss-initial-2.0.0.tgz";
8622 url = "https://registry.yarnpkg.com/postcss-initial/-/postcss-initial-2.0.0.tgz";
8623 sha1 = "72715f7336e0bb79351d99ee65c4a253a8441ba4";
8624 };
8625 }
8626
8627 {
8628 name = "postcss-load-config-2.0.0.tgz";
8629 path = fetchurl {
8630 name = "postcss-load-config-2.0.0.tgz";
8631 url = "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-2.0.0.tgz";
8632 sha1 = "f1312ddbf5912cd747177083c5ef7a19d62ee484";
8633 };
8634 }
8635
8636 {
8637 name = "postcss-loader-3.0.0.tgz";
8638 path = fetchurl {
8639 name = "postcss-loader-3.0.0.tgz";
8640 url = "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-3.0.0.tgz";
8641 sha1 = "6b97943e47c72d845fa9e03f273773d4e8dd6c2d";
8642 };
8643 }
8644
8645 {
8646 name = "postcss-logical-1.1.1.tgz";
8647 path = fetchurl {
8648 name = "postcss-logical-1.1.1.tgz";
8649 url = "https://registry.yarnpkg.com/postcss-logical/-/postcss-logical-1.1.1.tgz";
8650 sha1 = "bcabf0638d8aa747743b32bc52f9d90d4a3313d2";
8651 };
8652 }
8653
8654 {
8655 name = "postcss-media-minmax-3.0.0.tgz";
8656 path = fetchurl {
8657 name = "postcss-media-minmax-3.0.0.tgz";
8658 url = "https://registry.yarnpkg.com/postcss-media-minmax/-/postcss-media-minmax-3.0.0.tgz";
8659 sha1 = "675256037a43ef40bc4f0760bfd06d4dc69d48d2";
8660 };
8661 }
8662
8663 {
8664 name = "postcss-message-helpers-2.0.0.tgz";
8665 path = fetchurl {
8666 name = "postcss-message-helpers-2.0.0.tgz";
8667 url = "https://registry.yarnpkg.com/postcss-message-helpers/-/postcss-message-helpers-2.0.0.tgz";
8668 sha1 = "a4f2f4fab6e4fe002f0aed000478cdf52f9ba60e";
8669 };
8670 }
8671
8672 {
8673 name = "postcss-modules-extract-imports-1.2.0.tgz";
8674 path = fetchurl {
8675 name = "postcss-modules-extract-imports-1.2.0.tgz";
8676 url = "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.2.0.tgz";
8677 sha1 = "66140ecece38ef06bf0d3e355d69bf59d141ea85";
8678 };
8679 }
8680
8681 {
8682 name = "postcss-modules-local-by-default-1.2.0.tgz";
8683 path = fetchurl {
8684 name = "postcss-modules-local-by-default-1.2.0.tgz";
8685 url = "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-1.2.0.tgz";
8686 sha1 = "f7d80c398c5a393fa7964466bd19500a7d61c069";
8687 };
8688 }
8689
8690 {
8691 name = "postcss-modules-scope-1.1.0.tgz";
8692 path = fetchurl {
8693 name = "postcss-modules-scope-1.1.0.tgz";
8694 url = "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-1.1.0.tgz";
8695 sha1 = "d6ea64994c79f97b62a72b426fbe6056a194bb90";
8696 };
8697 }
8698
8699 {
8700 name = "postcss-modules-values-1.3.0.tgz";
8701 path = fetchurl {
8702 name = "postcss-modules-values-1.3.0.tgz";
8703 url = "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-1.3.0.tgz";
8704 sha1 = "ecffa9d7e192518389f42ad0e83f72aec456ea20";
8705 };
8706 }
8707
8708 {
8709 name = "postcss-nested-3.0.0.tgz";
8710 path = fetchurl {
8711 name = "postcss-nested-3.0.0.tgz";
8712 url = "https://registry.yarnpkg.com/postcss-nested/-/postcss-nested-3.0.0.tgz";
8713 sha1 = "cde40bd07a078565f3df72e2dc2665871c724852";
8714 };
8715 }
8716
8717 {
8718 name = "postcss-nesting-4.2.1.tgz";
8719 path = fetchurl {
8720 name = "postcss-nesting-4.2.1.tgz";
8721 url = "https://registry.yarnpkg.com/postcss-nesting/-/postcss-nesting-4.2.1.tgz";
8722 sha1 = "0483bce338b3f0828ced90ff530b29b98b00300d";
8723 };
8724 }
8725
8726 {
8727 name = "postcss-object-fit-images-1.1.2.tgz";
8728 path = fetchurl {
8729 name = "postcss-object-fit-images-1.1.2.tgz";
8730 url = "https://registry.yarnpkg.com/postcss-object-fit-images/-/postcss-object-fit-images-1.1.2.tgz";
8731 sha1 = "8b773043db14672ef6cd6f2cb1f0d8b26a9f573b";
8732 };
8733 }
8734
8735 {
8736 name = "postcss-page-break-1.0.0.tgz";
8737 path = fetchurl {
8738 name = "postcss-page-break-1.0.0.tgz";
8739 url = "https://registry.yarnpkg.com/postcss-page-break/-/postcss-page-break-1.0.0.tgz";
8740 sha1 = "09a63b6e03db092d38569b33dcba42a343ace60b";
8741 };
8742 }
8743
8744 {
8745 name = "postcss-preset-env-3.5.0.tgz";
8746 path = fetchurl {
8747 name = "postcss-preset-env-3.5.0.tgz";
8748 url = "https://registry.yarnpkg.com/postcss-preset-env/-/postcss-preset-env-3.5.0.tgz";
8749 sha1 = "b3aae2c65e5b3fa61d735b70392fa758a665b785";
8750 };
8751 }
8752
8753 {
8754 name = "postcss-property-lookup-2.0.0.tgz";
8755 path = fetchurl {
8756 name = "postcss-property-lookup-2.0.0.tgz";
8757 url = "https://registry.yarnpkg.com/postcss-property-lookup/-/postcss-property-lookup-2.0.0.tgz";
8758 sha1 = "c995d1df42a75420f2aea834c2cbe296b2c15922";
8759 };
8760 }
8761
8762 {
8763 name = "postcss-pseudo-class-any-link-4.0.0.tgz";
8764 path = fetchurl {
8765 name = "postcss-pseudo-class-any-link-4.0.0.tgz";
8766 url = "https://registry.yarnpkg.com/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-4.0.0.tgz";
8767 sha1 = "9152a0613d3450720513e8892854bae42d0ee68e";
8768 };
8769 }
8770
8771 {
8772 name = "postcss-replace-overflow-wrap-2.0.0.tgz";
8773 path = fetchurl {
8774 name = "postcss-replace-overflow-wrap-2.0.0.tgz";
8775 url = "https://registry.yarnpkg.com/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-2.0.0.tgz";
8776 sha1 = "794db6faa54f8db100854392a93af45768b4e25b";
8777 };
8778 }
8779
8780 {
8781 name = "postcss-sass-0.2.0.tgz";
8782 path = fetchurl {
8783 name = "postcss-sass-0.2.0.tgz";
8784 url = "https://registry.yarnpkg.com/postcss-sass/-/postcss-sass-0.2.0.tgz";
8785 sha1 = "e55516441e9526ba4b380a730d3a02e9eaa78c7a";
8786 };
8787 }
8788
8789 {
8790 name = "postcss-scss-1.0.6.tgz";
8791 path = fetchurl {
8792 name = "postcss-scss-1.0.6.tgz";
8793 url = "https://registry.yarnpkg.com/postcss-scss/-/postcss-scss-1.0.6.tgz";
8794 sha1 = "ab903f3bb20161bc177896462293a53d4bff5f7a";
8795 };
8796 }
8797
8798 {
8799 name = "postcss-selector-matches-3.0.1.tgz";
8800 path = fetchurl {
8801 name = "postcss-selector-matches-3.0.1.tgz";
8802 url = "https://registry.yarnpkg.com/postcss-selector-matches/-/postcss-selector-matches-3.0.1.tgz";
8803 sha1 = "e5634011e13950881861bbdd58c2d0111ffc96ab";
8804 };
8805 }
8806
8807 {
8808 name = "postcss-selector-not-3.0.1.tgz";
8809 path = fetchurl {
8810 name = "postcss-selector-not-3.0.1.tgz";
8811 url = "https://registry.yarnpkg.com/postcss-selector-not/-/postcss-selector-not-3.0.1.tgz";
8812 sha1 = "2e4db2f0965336c01e7cec7db6c60dff767335d9";
8813 };
8814 }
8815
8816 {
8817 name = "postcss-selector-parser-2.2.3.tgz";
8818 path = fetchurl {
8819 name = "postcss-selector-parser-2.2.3.tgz";
8820 url = "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-2.2.3.tgz";
8821 sha1 = "f9437788606c3c9acee16ffe8d8b16297f27bb90";
8822 };
8823 }
8824
8825 {
8826 name = "postcss-selector-parser-3.1.1.tgz";
8827 path = fetchurl {
8828 name = "postcss-selector-parser-3.1.1.tgz";
8829 url = "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-3.1.1.tgz";
8830 sha1 = "4f875f4afb0c96573d5cf4d74011aee250a7e865";
8831 };
8832 }
8833
8834 {
8835 name = "postcss-smart-import-0.7.6.tgz";
8836 path = fetchurl {
8837 name = "postcss-smart-import-0.7.6.tgz";
8838 url = "https://registry.yarnpkg.com/postcss-smart-import/-/postcss-smart-import-0.7.6.tgz";
8839 sha1 = "259deb84aa28f138458218ecc0e9a84c61ada6a4";
8840 };
8841 }
8842
8843 {
8844 name = "postcss-value-parser-3.3.0.tgz";
8845 path = fetchurl {
8846 name = "postcss-value-parser-3.3.0.tgz";
8847 url = "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.0.tgz";
8848 sha1 = "87f38f9f18f774a4ab4c8a232f5c5ce8872a9d15";
8849 };
8850 }
8851
8852 {
8853 name = "postcss-values-parser-1.5.0.tgz";
8854 path = fetchurl {
8855 name = "postcss-values-parser-1.5.0.tgz";
8856 url = "https://registry.yarnpkg.com/postcss-values-parser/-/postcss-values-parser-1.5.0.tgz";
8857 sha1 = "5d9fa63e2bcb0179ce48f3235303765eb89f3047";
8858 };
8859 }
8860
8861 {
8862 name = "postcss-5.2.18.tgz";
8863 path = fetchurl {
8864 name = "postcss-5.2.18.tgz";
8865 url = "https://registry.yarnpkg.com/postcss/-/postcss-5.2.18.tgz";
8866 sha1 = "badfa1497d46244f6390f58b319830d9107853c5";
8867 };
8868 }
8869
8870 {
8871 name = "postcss-6.0.23.tgz";
8872 path = fetchurl {
8873 name = "postcss-6.0.23.tgz";
8874 url = "https://registry.yarnpkg.com/postcss/-/postcss-6.0.23.tgz";
8875 sha1 = "61c82cc328ac60e677645f979054eb98bc0e3324";
8876 };
8877 }
8878
8879 {
8880 name = "postcss-7.0.2.tgz";
8881 path = fetchurl {
8882 name = "postcss-7.0.2.tgz";
8883 url = "https://registry.yarnpkg.com/postcss/-/postcss-7.0.2.tgz";
8884 sha1 = "7b5a109de356804e27f95a960bef0e4d5bc9bb18";
8885 };
8886 }
8887
8888 {
8889 name = "postgres-array-1.0.2.tgz";
8890 path = fetchurl {
8891 name = "postgres-array-1.0.2.tgz";
8892 url = "https://registry.yarnpkg.com/postgres-array/-/postgres-array-1.0.2.tgz";
8893 sha1 = "8e0b32eb03bf77a5c0a7851e0441c169a256a238";
8894 };
8895 }
8896
8897 {
8898 name = "postgres-bytea-1.0.0.tgz";
8899 path = fetchurl {
8900 name = "postgres-bytea-1.0.0.tgz";
8901 url = "https://registry.yarnpkg.com/postgres-bytea/-/postgres-bytea-1.0.0.tgz";
8902 sha1 = "027b533c0aa890e26d172d47cf9ccecc521acd35";
8903 };
8904 }
8905
8906 {
8907 name = "postgres-date-1.0.3.tgz";
8908 path = fetchurl {
8909 name = "postgres-date-1.0.3.tgz";
8910 url = "https://registry.yarnpkg.com/postgres-date/-/postgres-date-1.0.3.tgz";
8911 sha1 = "e2d89702efdb258ff9d9cee0fe91bd06975257a8";
8912 };
8913 }
8914
8915 {
8916 name = "postgres-interval-1.1.2.tgz";
8917 path = fetchurl {
8918 name = "postgres-interval-1.1.2.tgz";
8919 url = "https://registry.yarnpkg.com/postgres-interval/-/postgres-interval-1.1.2.tgz";
8920 sha1 = "bf71ff902635f21cb241a013fc421d81d1db15a9";
8921 };
8922 }
8923
8924 {
8925 name = "precond-0.2.3.tgz";
8926 path = fetchurl {
8927 name = "precond-0.2.3.tgz";
8928 url = "https://registry.yarnpkg.com/precond/-/precond-0.2.3.tgz";
8929 sha1 = "aa9591bcaa24923f1e0f4849d240f47efc1075ac";
8930 };
8931 }
8932
8933 {
8934 name = "precss-3.1.2.tgz";
8935 path = fetchurl {
8936 name = "precss-3.1.2.tgz";
8937 url = "https://registry.yarnpkg.com/precss/-/precss-3.1.2.tgz";
8938 sha1 = "c82c0aa4ca5fe1e879799d697db0fac6d15d23bc";
8939 };
8940 }
8941
8942 {
8943 name = "prelude-ls-1.1.2.tgz";
8944 path = fetchurl {
8945 name = "prelude-ls-1.1.2.tgz";
8946 url = "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz";
8947 sha1 = "21932a549f5e52ffd9a827f570e04be62a97da54";
8948 };
8949 }
8950
8951 {
8952 name = "preserve-0.2.0.tgz";
8953 path = fetchurl {
8954 name = "preserve-0.2.0.tgz";
8955 url = "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz";
8956 sha1 = "815ed1f6ebc65926f865b310c0713bcb3315ce4b";
8957 };
8958 }
8959
8960 {
8961 name = "pretty-format-23.6.0.tgz";
8962 path = fetchurl {
8963 name = "pretty-format-23.6.0.tgz";
8964 url = "https://registry.yarnpkg.com/pretty-format/-/pretty-format-23.6.0.tgz";
8965 sha1 = "5eaac8eeb6b33b987b7fe6097ea6a8a146ab5760";
8966 };
8967 }
8968
8969 {
8970 name = "private-0.1.8.tgz";
8971 path = fetchurl {
8972 name = "private-0.1.8.tgz";
8973 url = "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz";
8974 sha1 = "2381edb3689f7a53d653190060fcf822d2f368ff";
8975 };
8976 }
8977
8978 {
8979 name = "process-nextick-args-2.0.0.tgz";
8980 path = fetchurl {
8981 name = "process-nextick-args-2.0.0.tgz";
8982 url = "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz";
8983 sha1 = "a37d732f4271b4ab1ad070d35508e8290788ffaa";
8984 };
8985 }
8986
8987 {
8988 name = "process-0.11.10.tgz";
8989 path = fetchurl {
8990 name = "process-0.11.10.tgz";
8991 url = "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz";
8992 sha1 = "7332300e840161bda3e69a1d1d91a7d4bc16f182";
8993 };
8994 }
8995
8996 {
8997 name = "progress-2.0.0.tgz";
8998 path = fetchurl {
8999 name = "progress-2.0.0.tgz";
9000 url = "https://registry.yarnpkg.com/progress/-/progress-2.0.0.tgz";
9001 sha1 = "8a1be366bf8fc23db2bd23f10c6fe920b4389d1f";
9002 };
9003 }
9004
9005 {
9006 name = "promise-each-2.2.0.tgz";
9007 path = fetchurl {
9008 name = "promise-each-2.2.0.tgz";
9009 url = "https://registry.yarnpkg.com/promise-each/-/promise-each-2.2.0.tgz";
9010 sha1 = "3353174eff2694481037e04e01f77aa0fb6d1b60";
9011 };
9012 }
9013
9014 {
9015 name = "promise-inflight-1.0.1.tgz";
9016 path = fetchurl {
9017 name = "promise-inflight-1.0.1.tgz";
9018 url = "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz";
9019 sha1 = "98472870bf228132fcbdd868129bad12c3c029e3";
9020 };
9021 }
9022
9023 {
9024 name = "promise-7.3.1.tgz";
9025 path = fetchurl {
9026 name = "promise-7.3.1.tgz";
9027 url = "https://registry.yarnpkg.com/promise/-/promise-7.3.1.tgz";
9028 sha1 = "064b72602b18f90f29192b8b1bc418ffd1ebd3bf";
9029 };
9030 }
9031
9032 {
9033 name = "prompts-0.1.14.tgz";
9034 path = fetchurl {
9035 name = "prompts-0.1.14.tgz";
9036 url = "https://registry.yarnpkg.com/prompts/-/prompts-0.1.14.tgz";
9037 sha1 = "a8e15c612c5c9ec8f8111847df3337c9cbd443b2";
9038 };
9039 }
9040
9041 {
9042 name = "prop-types-extra-1.1.0.tgz";
9043 path = fetchurl {
9044 name = "prop-types-extra-1.1.0.tgz";
9045 url = "https://registry.yarnpkg.com/prop-types-extra/-/prop-types-extra-1.1.0.tgz";
9046 sha1 = "32609910ea2dcf190366bacd3490d5a6412a605f";
9047 };
9048 }
9049
9050 {
9051 name = "prop-types-15.6.2.tgz";
9052 path = fetchurl {
9053 name = "prop-types-15.6.2.tgz";
9054 url = "https://registry.yarnpkg.com/prop-types/-/prop-types-15.6.2.tgz";
9055 sha1 = "05d5ca77b4453e985d60fc7ff8c859094a497102";
9056 };
9057 }
9058
9059 {
9060 name = "proxy-addr-2.0.4.tgz";
9061 path = fetchurl {
9062 name = "proxy-addr-2.0.4.tgz";
9063 url = "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.4.tgz";
9064 sha1 = "ecfc733bf22ff8c6f407fa275327b9ab67e48b93";
9065 };
9066 }
9067
9068 {
9069 name = "prr-1.0.1.tgz";
9070 path = fetchurl {
9071 name = "prr-1.0.1.tgz";
9072 url = "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz";
9073 sha1 = "d3fc114ba06995a45ec6893f484ceb1d78f5f476";
9074 };
9075 }
9076
9077 {
9078 name = "pseudomap-1.0.2.tgz";
9079 path = fetchurl {
9080 name = "pseudomap-1.0.2.tgz";
9081 url = "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz";
9082 sha1 = "f052a28da70e618917ef0a8ac34c1ae5a68286b3";
9083 };
9084 }
9085
9086 {
9087 name = "psl-1.1.29.tgz";
9088 path = fetchurl {
9089 name = "psl-1.1.29.tgz";
9090 url = "https://registry.yarnpkg.com/psl/-/psl-1.1.29.tgz";
9091 sha1 = "60f580d360170bb722a797cc704411e6da850c67";
9092 };
9093 }
9094
9095 {
9096 name = "public-encrypt-4.0.2.tgz";
9097 path = fetchurl {
9098 name = "public-encrypt-4.0.2.tgz";
9099 url = "http://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.2.tgz";
9100 sha1 = "46eb9107206bf73489f8b85b69d91334c6610994";
9101 };
9102 }
9103
9104 {
9105 name = "pump-2.0.1.tgz";
9106 path = fetchurl {
9107 name = "pump-2.0.1.tgz";
9108 url = "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz";
9109 sha1 = "12399add6e4cf7526d973cbc8b5ce2e2908b3909";
9110 };
9111 }
9112
9113 {
9114 name = "pump-3.0.0.tgz";
9115 path = fetchurl {
9116 name = "pump-3.0.0.tgz";
9117 url = "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz";
9118 sha1 = "b4a2116815bde2f4e1ea602354e8c75565107a64";
9119 };
9120 }
9121
9122 {
9123 name = "pumpify-1.5.1.tgz";
9124 path = fetchurl {
9125 name = "pumpify-1.5.1.tgz";
9126 url = "https://registry.yarnpkg.com/pumpify/-/pumpify-1.5.1.tgz";
9127 sha1 = "36513be246ab27570b1a374a5ce278bfd74370ce";
9128 };
9129 }
9130
9131 {
9132 name = "punycode-1.3.2.tgz";
9133 path = fetchurl {
9134 name = "punycode-1.3.2.tgz";
9135 url = "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz";
9136 sha1 = "9653a036fb7c1ee42342f2325cceefea3926c48d";
9137 };
9138 }
9139
9140 {
9141 name = "punycode-1.4.1.tgz";
9142 path = fetchurl {
9143 name = "punycode-1.4.1.tgz";
9144 url = "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz";
9145 sha1 = "c0d5a63b2718800ad8e1eb0fa5269c84dd41845e";
9146 };
9147 }
9148
9149 {
9150 name = "punycode-2.1.1.tgz";
9151 path = fetchurl {
9152 name = "punycode-2.1.1.tgz";
9153 url = "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz";
9154 sha1 = "b58b010ac40c22c5657616c8d2c2c02c7bf479ec";
9155 };
9156 }
9157
9158 {
9159 name = "qs-6.5.1.tgz";
9160 path = fetchurl {
9161 name = "qs-6.5.1.tgz";
9162 url = "https://registry.yarnpkg.com/qs/-/qs-6.5.1.tgz";
9163 sha1 = "349cdf6eef89ec45c12d7d5eb3fc0c870343a6d8";
9164 };
9165 }
9166
9167 {
9168 name = "qs-6.4.0.tgz";
9169 path = fetchurl {
9170 name = "qs-6.4.0.tgz";
9171 url = "https://registry.yarnpkg.com/qs/-/qs-6.4.0.tgz";
9172 sha1 = "13e26d28ad6b0ffaa91312cd3bf708ed351e7233";
9173 };
9174 }
9175
9176 {
9177 name = "qs-6.5.2.tgz";
9178 path = fetchurl {
9179 name = "qs-6.5.2.tgz";
9180 url = "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz";
9181 sha1 = "cb3ae806e8740444584ef154ce8ee98d403f3e36";
9182 };
9183 }
9184
9185 {
9186 name = "querystring-es3-0.2.1.tgz";
9187 path = fetchurl {
9188 name = "querystring-es3-0.2.1.tgz";
9189 url = "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz";
9190 sha1 = "9ec61f79049875707d69414596fd907a4d711e73";
9191 };
9192 }
9193
9194 {
9195 name = "querystring-0.2.0.tgz";
9196 path = fetchurl {
9197 name = "querystring-0.2.0.tgz";
9198 url = "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz";
9199 sha1 = "b209849203bb25df820da756e747005878521620";
9200 };
9201 }
9202
9203 {
9204 name = "querystringify-2.0.0.tgz";
9205 path = fetchurl {
9206 name = "querystringify-2.0.0.tgz";
9207 url = "https://registry.yarnpkg.com/querystringify/-/querystringify-2.0.0.tgz";
9208 sha1 = "fa3ed6e68eb15159457c89b37bc6472833195755";
9209 };
9210 }
9211
9212 {
9213 name = "quote-0.4.0.tgz";
9214 path = fetchurl {
9215 name = "quote-0.4.0.tgz";
9216 url = "https://registry.yarnpkg.com/quote/-/quote-0.4.0.tgz";
9217 sha1 = "10839217f6c1362b89194044d29b233fd7f32f01";
9218 };
9219 }
9220
9221 {
9222 name = "raf-3.4.0.tgz";
9223 path = fetchurl {
9224 name = "raf-3.4.0.tgz";
9225 url = "https://registry.yarnpkg.com/raf/-/raf-3.4.0.tgz";
9226 sha1 = "a28876881b4bc2ca9117d4138163ddb80f781575";
9227 };
9228 }
9229
9230 {
9231 name = "railroad-diagrams-1.0.0.tgz";
9232 path = fetchurl {
9233 name = "railroad-diagrams-1.0.0.tgz";
9234 url = "https://registry.yarnpkg.com/railroad-diagrams/-/railroad-diagrams-1.0.0.tgz";
9235 sha1 = "eb7e6267548ddedfb899c1b90e57374559cddb7e";
9236 };
9237 }
9238
9239 {
9240 name = "rails-ujs-5.2.1.tgz";
9241 path = fetchurl {
9242 name = "rails-ujs-5.2.1.tgz";
9243 url = "https://registry.yarnpkg.com/rails-ujs/-/rails-ujs-5.2.1.tgz";
9244 sha1 = "2869c6d54fdfefac3aaa257f4efe211d8f5a7169";
9245 };
9246 }
9247
9248 {
9249 name = "randexp-0.4.6.tgz";
9250 path = fetchurl {
9251 name = "randexp-0.4.6.tgz";
9252 url = "https://registry.yarnpkg.com/randexp/-/randexp-0.4.6.tgz";
9253 sha1 = "e986ad5e5e31dae13ddd6f7b3019aa7c87f60ca3";
9254 };
9255 }
9256
9257 {
9258 name = "randomatic-3.1.0.tgz";
9259 path = fetchurl {
9260 name = "randomatic-3.1.0.tgz";
9261 url = "https://registry.yarnpkg.com/randomatic/-/randomatic-3.1.0.tgz";
9262 sha1 = "36f2ca708e9e567f5ed2ec01949026d50aa10116";
9263 };
9264 }
9265
9266 {
9267 name = "randombytes-2.0.6.tgz";
9268 path = fetchurl {
9269 name = "randombytes-2.0.6.tgz";
9270 url = "https://registry.yarnpkg.com/randombytes/-/randombytes-2.0.6.tgz";
9271 sha1 = "d302c522948588848a8d300c932b44c24231da80";
9272 };
9273 }
9274
9275 {
9276 name = "randomfill-1.0.4.tgz";
9277 path = fetchurl {
9278 name = "randomfill-1.0.4.tgz";
9279 url = "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.4.tgz";
9280 sha1 = "c92196fc86ab42be983f1bf31778224931d61458";
9281 };
9282 }
9283
9284 {
9285 name = "range-parser-1.2.0.tgz";
9286 path = fetchurl {
9287 name = "range-parser-1.2.0.tgz";
9288 url = "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.0.tgz";
9289 sha1 = "f49be6b487894ddc40dcc94a322f611092e00d5e";
9290 };
9291 }
9292
9293 {
9294 name = "raw-body-2.3.2.tgz";
9295 path = fetchurl {
9296 name = "raw-body-2.3.2.tgz";
9297 url = "https://registry.yarnpkg.com/raw-body/-/raw-body-2.3.2.tgz";
9298 sha1 = "bcd60c77d3eb93cde0050295c3f379389bc88f89";
9299 };
9300 }
9301
9302 {
9303 name = "rc-1.2.8.tgz";
9304 path = fetchurl {
9305 name = "rc-1.2.8.tgz";
9306 url = "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz";
9307 sha1 = "cd924bf5200a075b83c188cd6b9e211b7fc0d3ed";
9308 };
9309 }
9310
9311 {
9312 name = "react-dom-16.5.0.tgz";
9313 path = fetchurl {
9314 name = "react-dom-16.5.0.tgz";
9315 url = "https://registry.yarnpkg.com/react-dom/-/react-dom-16.5.0.tgz";
9316 sha1 = "57704e5718669374b182a17ea79a6d24922cb27d";
9317 };
9318 }
9319
9320 {
9321 name = "react-event-listener-0.6.3.tgz";
9322 path = fetchurl {
9323 name = "react-event-listener-0.6.3.tgz";
9324 url = "https://registry.yarnpkg.com/react-event-listener/-/react-event-listener-0.6.3.tgz";
9325 sha1 = "8eab88129a76e095ed8aa684c29679eded1e843d";
9326 };
9327 }
9328
9329 {
9330 name = "react-hotkeys-0.10.0.tgz";
9331 path = fetchurl {
9332 name = "react-hotkeys-0.10.0.tgz";
9333 url = "https://registry.yarnpkg.com/react-hotkeys/-/react-hotkeys-0.10.0.tgz";
9334 sha1 = "d1e78bd63f16d6db58d550d33c8eb071f35d94fb";
9335 };
9336 }
9337
9338 {
9339 name = "react-immutable-proptypes-2.1.0.tgz";
9340 path = fetchurl {
9341 name = "react-immutable-proptypes-2.1.0.tgz";
9342 url = "https://registry.yarnpkg.com/react-immutable-proptypes/-/react-immutable-proptypes-2.1.0.tgz";
9343 sha1 = "023d6f39bb15c97c071e9e60d00d136eac5fa0b4";
9344 };
9345 }
9346
9347 {
9348 name = "react-immutable-pure-component-1.2.3.tgz";
9349 path = fetchurl {
9350 name = "react-immutable-pure-component-1.2.3.tgz";
9351 url = "https://registry.yarnpkg.com/react-immutable-pure-component/-/react-immutable-pure-component-1.2.3.tgz";
9352 sha1 = "fa33638df68cfe9f73ccbee1d5861c17f3053f86";
9353 };
9354 }
9355
9356 {
9357 name = "react-intl-translations-manager-5.0.3.tgz";
9358 path = fetchurl {
9359 name = "react-intl-translations-manager-5.0.3.tgz";
9360 url = "https://registry.yarnpkg.com/react-intl-translations-manager/-/react-intl-translations-manager-5.0.3.tgz";
9361 sha1 = "aee010ecf35975673e033ca5d7d3f4147894324d";
9362 };
9363 }
9364
9365 {
9366 name = "react-intl-2.4.0.tgz";
9367 path = fetchurl {
9368 name = "react-intl-2.4.0.tgz";
9369 url = "https://registry.yarnpkg.com/react-intl/-/react-intl-2.4.0.tgz";
9370 sha1 = "66c14dc9df9a73b2fbbfbd6021726e80a613eb15";
9371 };
9372 }
9373
9374 {
9375 name = "react-is-16.5.0.tgz";
9376 path = fetchurl {
9377 name = "react-is-16.5.0.tgz";
9378 url = "https://registry.yarnpkg.com/react-is/-/react-is-16.5.0.tgz";
9379 sha1 = "2ec7c192709698591efe13722fab3ef56144ba55";
9380 };
9381 }
9382
9383 {
9384 name = "react-lifecycles-compat-3.0.4.tgz";
9385 path = fetchurl {
9386 name = "react-lifecycles-compat-3.0.4.tgz";
9387 url = "https://registry.yarnpkg.com/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz";
9388 sha1 = "4f1a273afdfc8f3488a8c516bfda78f872352362";
9389 };
9390 }
9391
9392 {
9393 name = "react-motion-0.5.2.tgz";
9394 path = fetchurl {
9395 name = "react-motion-0.5.2.tgz";
9396 url = "https://registry.yarnpkg.com/react-motion/-/react-motion-0.5.2.tgz";
9397 sha1 = "0dd3a69e411316567927917c6626551ba0607316";
9398 };
9399 }
9400
9401 {
9402 name = "react-notification-6.8.4.tgz";
9403 path = fetchurl {
9404 name = "react-notification-6.8.4.tgz";
9405 url = "https://registry.yarnpkg.com/react-notification/-/react-notification-6.8.4.tgz";
9406 sha1 = "c189d23f47b0e1b240932f4cfab2f4082cd420bf";
9407 };
9408 }
9409
9410 {
9411 name = "react-overlays-0.8.3.tgz";
9412 path = fetchurl {
9413 name = "react-overlays-0.8.3.tgz";
9414 url = "https://registry.yarnpkg.com/react-overlays/-/react-overlays-0.8.3.tgz";
9415 sha1 = "fad65eea5b24301cca192a169f5dddb0b20d3ac5";
9416 };
9417 }
9418
9419 {
9420 name = "react-redux-loading-bar-2.9.3.tgz";
9421 path = fetchurl {
9422 name = "react-redux-loading-bar-2.9.3.tgz";
9423 url = "https://registry.yarnpkg.com/react-redux-loading-bar/-/react-redux-loading-bar-2.9.3.tgz";
9424 sha1 = "65865dddcbf597169e787edec15eec7ebfb84149";
9425 };
9426 }
9427
9428 {
9429 name = "react-redux-5.0.7.tgz";
9430 path = fetchurl {
9431 name = "react-redux-5.0.7.tgz";
9432 url = "https://registry.yarnpkg.com/react-redux/-/react-redux-5.0.7.tgz";
9433 sha1 = "0dc1076d9afb4670f993ffaef44b8f8c1155a4c8";
9434 };
9435 }
9436
9437 {
9438 name = "react-router-dom-4.3.1.tgz";
9439 path = fetchurl {
9440 name = "react-router-dom-4.3.1.tgz";
9441 url = "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-4.3.1.tgz";
9442 sha1 = "4c2619fc24c4fa87c9fd18f4fb4a43fe63fbd5c6";
9443 };
9444 }
9445
9446 {
9447 name = "react-router-scroll-4-1.0.0-beta.2.tgz";
9448 path = fetchurl {
9449 name = "react-router-scroll-4-1.0.0-beta.2.tgz";
9450 url = "https://registry.yarnpkg.com/react-router-scroll-4/-/react-router-scroll-4-1.0.0-beta.2.tgz";
9451 sha1 = "d887063ec0f66124aaf450158dd158ff7d3dc279";
9452 };
9453 }
9454
9455 {
9456 name = "react-router-4.3.1.tgz";
9457 path = fetchurl {
9458 name = "react-router-4.3.1.tgz";
9459 url = "https://registry.yarnpkg.com/react-router/-/react-router-4.3.1.tgz";
9460 sha1 = "aada4aef14c809cb2e686b05cee4742234506c4e";
9461 };
9462 }
9463
9464 {
9465 name = "react-sparklines-1.7.0.tgz";
9466 path = fetchurl {
9467 name = "react-sparklines-1.7.0.tgz";
9468 url = "https://registry.yarnpkg.com/react-sparklines/-/react-sparklines-1.7.0.tgz";
9469 sha1 = "9b1d97e8c8610095eeb2ad658d2e1fcf91f91a60";
9470 };
9471 }
9472
9473 {
9474 name = "react-swipeable-views-core-0.12.17.tgz";
9475 path = fetchurl {
9476 name = "react-swipeable-views-core-0.12.17.tgz";
9477 url = "https://registry.yarnpkg.com/react-swipeable-views-core/-/react-swipeable-views-core-0.12.17.tgz";
9478 sha1 = "0998f55fd2f8595bcd01bead1c19516dc561c1cf";
9479 };
9480 }
9481
9482 {
9483 name = "react-swipeable-views-utils-0.12.17.tgz";
9484 path = fetchurl {
9485 name = "react-swipeable-views-utils-0.12.17.tgz";
9486 url = "https://registry.yarnpkg.com/react-swipeable-views-utils/-/react-swipeable-views-utils-0.12.17.tgz";
9487 sha1 = "5219faa766b683d907288cdd7b86c0a14b577b7f";
9488 };
9489 }
9490
9491 {
9492 name = "react-swipeable-views-0.12.17.tgz";
9493 path = fetchurl {
9494 name = "react-swipeable-views-0.12.17.tgz";
9495 url = "https://registry.yarnpkg.com/react-swipeable-views/-/react-swipeable-views-0.12.17.tgz";
9496 sha1 = "4d6a9bf4b667ce7b7aac3112d696598b94a1cf30";
9497 };
9498 }
9499
9500 {
9501 name = "react-test-renderer-16.5.0.tgz";
9502 path = fetchurl {
9503 name = "react-test-renderer-16.5.0.tgz";
9504 url = "https://registry.yarnpkg.com/react-test-renderer/-/react-test-renderer-16.5.0.tgz";
9505 sha1 = "1aeca0edc4f27f63265dcaed80ba82e11e762f56";
9506 };
9507 }
9508
9509 {
9510 name = "react-textarea-autosize-5.2.1.tgz";
9511 path = fetchurl {
9512 name = "react-textarea-autosize-5.2.1.tgz";
9513 url = "https://registry.yarnpkg.com/react-textarea-autosize/-/react-textarea-autosize-5.2.1.tgz";
9514 sha1 = "2b78f9067180f41b08ac59f78f1581abadd61e54";
9515 };
9516 }
9517
9518 {
9519 name = "react-toggle-4.0.2.tgz";
9520 path = fetchurl {
9521 name = "react-toggle-4.0.2.tgz";
9522 url = "https://registry.yarnpkg.com/react-toggle/-/react-toggle-4.0.2.tgz";
9523 sha1 = "77f487860efb87fafd197672a2db8c885be1440f";
9524 };
9525 }
9526
9527 {
9528 name = "react-transition-group-2.4.0.tgz";
9529 path = fetchurl {
9530 name = "react-transition-group-2.4.0.tgz";
9531 url = "https://registry.yarnpkg.com/react-transition-group/-/react-transition-group-2.4.0.tgz";
9532 sha1 = "1d9391fabfd82e016f26fabd1eec329dbd922b5a";
9533 };
9534 }
9535
9536 {
9537 name = "react-16.5.0.tgz";
9538 path = fetchurl {
9539 name = "react-16.5.0.tgz";
9540 url = "https://registry.yarnpkg.com/react/-/react-16.5.0.tgz";
9541 sha1 = "f2c1e754bf9751a549d9c6d9aca41905beb56575";
9542 };
9543 }
9544
9545 {
9546 name = "read-cache-1.0.0.tgz";
9547 path = fetchurl {
9548 name = "read-cache-1.0.0.tgz";
9549 url = "https://registry.yarnpkg.com/read-cache/-/read-cache-1.0.0.tgz";
9550 sha1 = "e664ef31161166c9751cdbe8dbcf86b5fb58f774";
9551 };
9552 }
9553
9554 {
9555 name = "read-pkg-up-1.0.1.tgz";
9556 path = fetchurl {
9557 name = "read-pkg-up-1.0.1.tgz";
9558 url = "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz";
9559 sha1 = "9d63c13276c065918d57f002a57f40a1b643fb02";
9560 };
9561 }
9562
9563 {
9564 name = "read-pkg-up-2.0.0.tgz";
9565 path = fetchurl {
9566 name = "read-pkg-up-2.0.0.tgz";
9567 url = "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-2.0.0.tgz";
9568 sha1 = "6b72a8048984e0c41e79510fd5e9fa99b3b549be";
9569 };
9570 }
9571
9572 {
9573 name = "read-pkg-1.1.0.tgz";
9574 path = fetchurl {
9575 name = "read-pkg-1.1.0.tgz";
9576 url = "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz";
9577 sha1 = "f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28";
9578 };
9579 }
9580
9581 {
9582 name = "read-pkg-2.0.0.tgz";
9583 path = fetchurl {
9584 name = "read-pkg-2.0.0.tgz";
9585 url = "https://registry.yarnpkg.com/read-pkg/-/read-pkg-2.0.0.tgz";
9586 sha1 = "8ef1c0623c6a6db0dc6713c4bfac46332b2368f8";
9587 };
9588 }
9589
9590 {
9591 name = "readable-stream-2.3.6.tgz";
9592 path = fetchurl {
9593 name = "readable-stream-2.3.6.tgz";
9594 url = "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz";
9595 sha1 = "b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf";
9596 };
9597 }
9598
9599 {
9600 name = "readdirp-2.1.0.tgz";
9601 path = fetchurl {
9602 name = "readdirp-2.1.0.tgz";
9603 url = "https://registry.yarnpkg.com/readdirp/-/readdirp-2.1.0.tgz";
9604 sha1 = "4ed0ad060df3073300c48440373f72d1cc642d78";
9605 };
9606 }
9607
9608 {
9609 name = "realpath-native-1.0.2.tgz";
9610 path = fetchurl {
9611 name = "realpath-native-1.0.2.tgz";
9612 url = "https://registry.yarnpkg.com/realpath-native/-/realpath-native-1.0.2.tgz";
9613 sha1 = "cd51ce089b513b45cf9b1516c82989b51ccc6560";
9614 };
9615 }
9616
9617 {
9618 name = "redent-1.0.0.tgz";
9619 path = fetchurl {
9620 name = "redent-1.0.0.tgz";
9621 url = "https://registry.yarnpkg.com/redent/-/redent-1.0.0.tgz";
9622 sha1 = "cf916ab1fd5f1f16dfb20822dd6ec7f730c2afde";
9623 };
9624 }
9625
9626 {
9627 name = "redis-commands-1.3.5.tgz";
9628 path = fetchurl {
9629 name = "redis-commands-1.3.5.tgz";
9630 url = "https://registry.yarnpkg.com/redis-commands/-/redis-commands-1.3.5.tgz";
9631 sha1 = "4495889414f1e886261180b1442e7295602d83a2";
9632 };
9633 }
9634
9635 {
9636 name = "redis-parser-2.6.0.tgz";
9637 path = fetchurl {
9638 name = "redis-parser-2.6.0.tgz";
9639 url = "https://registry.yarnpkg.com/redis-parser/-/redis-parser-2.6.0.tgz";
9640 sha1 = "52ed09dacac108f1a631c07e9b69941e7a19504b";
9641 };
9642 }
9643
9644 {
9645 name = "redis-2.8.0.tgz";
9646 path = fetchurl {
9647 name = "redis-2.8.0.tgz";
9648 url = "https://registry.yarnpkg.com/redis/-/redis-2.8.0.tgz";
9649 sha1 = "202288e3f58c49f6079d97af7a10e1303ae14b02";
9650 };
9651 }
9652
9653 {
9654 name = "redux-immutable-4.0.0.tgz";
9655 path = fetchurl {
9656 name = "redux-immutable-4.0.0.tgz";
9657 url = "https://registry.yarnpkg.com/redux-immutable/-/redux-immutable-4.0.0.tgz";
9658 sha1 = "3a1a32df66366462b63691f0e1dc35e472bbc9f3";
9659 };
9660 }
9661
9662 {
9663 name = "redux-thunk-2.3.0.tgz";
9664 path = fetchurl {
9665 name = "redux-thunk-2.3.0.tgz";
9666 url = "https://registry.yarnpkg.com/redux-thunk/-/redux-thunk-2.3.0.tgz";
9667 sha1 = "51c2c19a185ed5187aaa9a2d08b666d0d6467622";
9668 };
9669 }
9670
9671 {
9672 name = "redux-3.7.2.tgz";
9673 path = fetchurl {
9674 name = "redux-3.7.2.tgz";
9675 url = "https://registry.yarnpkg.com/redux/-/redux-3.7.2.tgz";
9676 sha1 = "06b73123215901d25d065be342eb026bc1c8537b";
9677 };
9678 }
9679
9680 {
9681 name = "regenerate-unicode-properties-7.0.0.tgz";
9682 path = fetchurl {
9683 name = "regenerate-unicode-properties-7.0.0.tgz";
9684 url = "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-7.0.0.tgz";
9685 sha1 = "107405afcc4a190ec5ed450ecaa00ed0cafa7a4c";
9686 };
9687 }
9688
9689 {
9690 name = "regenerate-1.4.0.tgz";
9691 path = fetchurl {
9692 name = "regenerate-1.4.0.tgz";
9693 url = "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.0.tgz";
9694 sha1 = "4a856ec4b56e4077c557589cae85e7a4c8869a11";
9695 };
9696 }
9697
9698 {
9699 name = "regenerator-runtime-0.11.1.tgz";
9700 path = fetchurl {
9701 name = "regenerator-runtime-0.11.1.tgz";
9702 url = "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz";
9703 sha1 = "be05ad7f9bf7d22e056f9726cee5017fbf19e2e9";
9704 };
9705 }
9706
9707 {
9708 name = "regenerator-runtime-0.12.1.tgz";
9709 path = fetchurl {
9710 name = "regenerator-runtime-0.12.1.tgz";
9711 url = "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.12.1.tgz";
9712 sha1 = "fa1a71544764c036f8c49b13a08b2594c9f8a0de";
9713 };
9714 }
9715
9716 {
9717 name = "regenerator-transform-0.13.3.tgz";
9718 path = fetchurl {
9719 name = "regenerator-transform-0.13.3.tgz";
9720 url = "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.13.3.tgz";
9721 sha1 = "264bd9ff38a8ce24b06e0636496b2c856b57bcbb";
9722 };
9723 }
9724
9725 {
9726 name = "regex-cache-0.4.4.tgz";
9727 path = fetchurl {
9728 name = "regex-cache-0.4.4.tgz";
9729 url = "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.4.tgz";
9730 sha1 = "75bdc58a2a1496cec48a12835bc54c8d562336dd";
9731 };
9732 }
9733
9734 {
9735 name = "regex-not-1.0.2.tgz";
9736 path = fetchurl {
9737 name = "regex-not-1.0.2.tgz";
9738 url = "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz";
9739 sha1 = "1f4ece27e00b0b65e0247a6810e6a85d83a5752c";
9740 };
9741 }
9742
9743 {
9744 name = "regexpp-1.1.0.tgz";
9745 path = fetchurl {
9746 name = "regexpp-1.1.0.tgz";
9747 url = "https://registry.yarnpkg.com/regexpp/-/regexpp-1.1.0.tgz";
9748 sha1 = "0e3516dd0b7904f413d2d4193dce4618c3a689ab";
9749 };
9750 }
9751
9752 {
9753 name = "regexpu-core-1.0.0.tgz";
9754 path = fetchurl {
9755 name = "regexpu-core-1.0.0.tgz";
9756 url = "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-1.0.0.tgz";
9757 sha1 = "86a763f58ee4d7c2f6b102e4764050de7ed90c6b";
9758 };
9759 }
9760
9761 {
9762 name = "regexpu-core-4.2.0.tgz";
9763 path = fetchurl {
9764 name = "regexpu-core-4.2.0.tgz";
9765 url = "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.2.0.tgz";
9766 sha1 = "a3744fa03806cffe146dea4421a3e73bdcc47b1d";
9767 };
9768 }
9769
9770 {
9771 name = "regjsgen-0.2.0.tgz";
9772 path = fetchurl {
9773 name = "regjsgen-0.2.0.tgz";
9774 url = "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.2.0.tgz";
9775 sha1 = "6c016adeac554f75823fe37ac05b92d5a4edb1f7";
9776 };
9777 }
9778
9779 {
9780 name = "regjsgen-0.4.0.tgz";
9781 path = fetchurl {
9782 name = "regjsgen-0.4.0.tgz";
9783 url = "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.4.0.tgz";
9784 sha1 = "c1eb4c89a209263f8717c782591523913ede2561";
9785 };
9786 }
9787
9788 {
9789 name = "regjsparser-0.1.5.tgz";
9790 path = fetchurl {
9791 name = "regjsparser-0.1.5.tgz";
9792 url = "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.1.5.tgz";
9793 sha1 = "7ee8f84dc6fa792d3fd0ae228d24bd949ead205c";
9794 };
9795 }
9796
9797 {
9798 name = "regjsparser-0.3.0.tgz";
9799 path = fetchurl {
9800 name = "regjsparser-0.3.0.tgz";
9801 url = "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.3.0.tgz";
9802 sha1 = "3c326da7fcfd69fa0d332575a41c8c0cdf588c96";
9803 };
9804 }
9805
9806 {
9807 name = "rellax-1.6.2.tgz";
9808 path = fetchurl {
9809 name = "rellax-1.6.2.tgz";
9810 url = "https://registry.yarnpkg.com/rellax/-/rellax-1.6.2.tgz";
9811 sha1 = "b22c8715f56324fa8b396465d3dca9953b711f30";
9812 };
9813 }
9814
9815 {
9816 name = "remove-trailing-separator-1.1.0.tgz";
9817 path = fetchurl {
9818 name = "remove-trailing-separator-1.1.0.tgz";
9819 url = "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz";
9820 sha1 = "c24bce2a283adad5bc3f58e0d48249b92379d8ef";
9821 };
9822 }
9823
9824 {
9825 name = "repeat-element-1.1.3.tgz";
9826 path = fetchurl {
9827 name = "repeat-element-1.1.3.tgz";
9828 url = "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz";
9829 sha1 = "782e0d825c0c5a3bb39731f84efee6b742e6b1ce";
9830 };
9831 }
9832
9833 {
9834 name = "repeat-string-1.6.1.tgz";
9835 path = fetchurl {
9836 name = "repeat-string-1.6.1.tgz";
9837 url = "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz";
9838 sha1 = "8dcae470e1c88abc2d600fff4a776286da75e637";
9839 };
9840 }
9841
9842 {
9843 name = "repeating-2.0.1.tgz";
9844 path = fetchurl {
9845 name = "repeating-2.0.1.tgz";
9846 url = "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz";
9847 sha1 = "5214c53a926d3552707527fbab415dbc08d06dda";
9848 };
9849 }
9850
9851 {
9852 name = "request-promise-core-1.1.1.tgz";
9853 path = fetchurl {
9854 name = "request-promise-core-1.1.1.tgz";
9855 url = "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.1.tgz";
9856 sha1 = "3eee00b2c5aa83239cfb04c5700da36f81cd08b6";
9857 };
9858 }
9859
9860 {
9861 name = "request-promise-native-1.0.5.tgz";
9862 path = fetchurl {
9863 name = "request-promise-native-1.0.5.tgz";
9864 url = "https://registry.yarnpkg.com/request-promise-native/-/request-promise-native-1.0.5.tgz";
9865 sha1 = "5281770f68e0c9719e5163fd3fab482215f4fda5";
9866 };
9867 }
9868
9869 {
9870 name = "request-2.81.0.tgz";
9871 path = fetchurl {
9872 name = "request-2.81.0.tgz";
9873 url = "https://registry.yarnpkg.com/request/-/request-2.81.0.tgz";
9874 sha1 = "c6928946a0e06c5f8d6f8a9333469ffda46298a0";
9875 };
9876 }
9877
9878 {
9879 name = "request-2.87.0.tgz";
9880 path = fetchurl {
9881 name = "request-2.87.0.tgz";
9882 url = "https://registry.yarnpkg.com/request/-/request-2.87.0.tgz";
9883 sha1 = "32f00235cd08d482b4d0d68db93a829c0ed5756e";
9884 };
9885 }
9886
9887 {
9888 name = "request-2.88.0.tgz";
9889 path = fetchurl {
9890 name = "request-2.88.0.tgz";
9891 url = "https://registry.yarnpkg.com/request/-/request-2.88.0.tgz";
9892 sha1 = "9c2fca4f7d35b592efe57c7f0a55e81052124fef";
9893 };
9894 }
9895
9896 {
9897 name = "requestidlecallback-0.3.0.tgz";
9898 path = fetchurl {
9899 name = "requestidlecallback-0.3.0.tgz";
9900 url = "http://registry.npmjs.org/requestidlecallback/-/requestidlecallback-0.3.0.tgz";
9901 sha1 = "6fb74e0733f90df3faa4838f9f6a2a5f9b742ac5";
9902 };
9903 }
9904
9905 {
9906 name = "require-directory-2.1.1.tgz";
9907 path = fetchurl {
9908 name = "require-directory-2.1.1.tgz";
9909 url = "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz";
9910 sha1 = "8c64ad5fd30dab1c976e2344ffe7f792a6a6df42";
9911 };
9912 }
9913
9914 {
9915 name = "require-from-string-2.0.2.tgz";
9916 path = fetchurl {
9917 name = "require-from-string-2.0.2.tgz";
9918 url = "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz";
9919 sha1 = "89a7fdd938261267318eafe14f9c32e598c36909";
9920 };
9921 }
9922
9923 {
9924 name = "require-main-filename-1.0.1.tgz";
9925 path = fetchurl {
9926 name = "require-main-filename-1.0.1.tgz";
9927 url = "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz";
9928 sha1 = "97f717b69d48784f5f526a6c5aa8ffdda055a4d1";
9929 };
9930 }
9931
9932 {
9933 name = "require-package-name-2.0.1.tgz";
9934 path = fetchurl {
9935 name = "require-package-name-2.0.1.tgz";
9936 url = "https://registry.yarnpkg.com/require-package-name/-/require-package-name-2.0.1.tgz";
9937 sha1 = "c11e97276b65b8e2923f75dabf5fb2ef0c3841b9";
9938 };
9939 }
9940
9941 {
9942 name = "require-uncached-1.0.3.tgz";
9943 path = fetchurl {
9944 name = "require-uncached-1.0.3.tgz";
9945 url = "https://registry.yarnpkg.com/require-uncached/-/require-uncached-1.0.3.tgz";
9946 sha1 = "4e0d56d6c9662fd31e43011c4b95aa49955421d3";
9947 };
9948 }
9949
9950 {
9951 name = "requires-port-1.0.0.tgz";
9952 path = fetchurl {
9953 name = "requires-port-1.0.0.tgz";
9954 url = "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz";
9955 sha1 = "925d2601d39ac485e091cf0da5c6e694dc3dcaff";
9956 };
9957 }
9958
9959 {
9960 name = "reselect-3.0.1.tgz";
9961 path = fetchurl {
9962 name = "reselect-3.0.1.tgz";
9963 url = "https://registry.yarnpkg.com/reselect/-/reselect-3.0.1.tgz";
9964 sha1 = "efdaa98ea7451324d092b2b2163a6a1d7a9a2147";
9965 };
9966 }
9967
9968 {
9969 name = "resolve-cwd-2.0.0.tgz";
9970 path = fetchurl {
9971 name = "resolve-cwd-2.0.0.tgz";
9972 url = "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-2.0.0.tgz";
9973 sha1 = "00a9f7387556e27038eae232caa372a6a59b665a";
9974 };
9975 }
9976
9977 {
9978 name = "resolve-from-1.0.1.tgz";
9979 path = fetchurl {
9980 name = "resolve-from-1.0.1.tgz";
9981 url = "https://registry.yarnpkg.com/resolve-from/-/resolve-from-1.0.1.tgz";
9982 sha1 = "26cbfe935d1aeeeabb29bc3fe5aeb01e93d44226";
9983 };
9984 }
9985
9986 {
9987 name = "resolve-from-3.0.0.tgz";
9988 path = fetchurl {
9989 name = "resolve-from-3.0.0.tgz";
9990 url = "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz";
9991 sha1 = "b22c7af7d9d6881bc8b6e653335eebcb0a188748";
9992 };
9993 }
9994
9995 {
9996 name = "resolve-pathname-2.2.0.tgz";
9997 path = fetchurl {
9998 name = "resolve-pathname-2.2.0.tgz";
9999 url = "https://registry.yarnpkg.com/resolve-pathname/-/resolve-pathname-2.2.0.tgz";
10000 sha1 = "7e9ae21ed815fd63ab189adeee64dc831eefa879";
10001 };
10002 }
10003
10004 {
10005 name = "resolve-url-0.2.1.tgz";
10006 path = fetchurl {
10007 name = "resolve-url-0.2.1.tgz";
10008 url = "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz";
10009 sha1 = "2c637fe77c893afd2a663fe21aa9080068e2052a";
10010 };
10011 }
10012
10013 {
10014 name = "resolve-1.1.7.tgz";
10015 path = fetchurl {
10016 name = "resolve-1.1.7.tgz";
10017 url = "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz";
10018 sha1 = "203114d82ad2c5ed9e8e0411b3932875e889e97b";
10019 };
10020 }
10021
10022 {
10023 name = "resolve-1.8.1.tgz";
10024 path = fetchurl {
10025 name = "resolve-1.8.1.tgz";
10026 url = "https://registry.yarnpkg.com/resolve/-/resolve-1.8.1.tgz";
10027 sha1 = "82f1ec19a423ac1fbd080b0bab06ba36e84a7a26";
10028 };
10029 }
10030
10031 {
10032 name = "restore-cursor-2.0.0.tgz";
10033 path = fetchurl {
10034 name = "restore-cursor-2.0.0.tgz";
10035 url = "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz";
10036 sha1 = "9f7ee287f82fd326d4fd162923d62129eee0dfaf";
10037 };
10038 }
10039
10040 {
10041 name = "ret-0.1.15.tgz";
10042 path = fetchurl {
10043 name = "ret-0.1.15.tgz";
10044 url = "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz";
10045 sha1 = "b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc";
10046 };
10047 }
10048
10049 {
10050 name = "rimraf-2.6.2.tgz";
10051 path = fetchurl {
10052 name = "rimraf-2.6.2.tgz";
10053 url = "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.2.tgz";
10054 sha1 = "2ed8150d24a16ea8651e6d6ef0f47c4158ce7a36";
10055 };
10056 }
10057
10058 {
10059 name = "ripemd160-2.0.2.tgz";
10060 path = fetchurl {
10061 name = "ripemd160-2.0.2.tgz";
10062 url = "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz";
10063 sha1 = "a1c1a6f624751577ba5d07914cbc92850585890c";
10064 };
10065 }
10066
10067 {
10068 name = "rst-selector-parser-2.2.3.tgz";
10069 path = fetchurl {
10070 name = "rst-selector-parser-2.2.3.tgz";
10071 url = "https://registry.yarnpkg.com/rst-selector-parser/-/rst-selector-parser-2.2.3.tgz";
10072 sha1 = "81b230ea2fcc6066c89e3472de794285d9b03d91";
10073 };
10074 }
10075
10076 {
10077 name = "rsvp-3.6.2.tgz";
10078 path = fetchurl {
10079 name = "rsvp-3.6.2.tgz";
10080 url = "https://registry.yarnpkg.com/rsvp/-/rsvp-3.6.2.tgz";
10081 sha1 = "2e96491599a96cde1b515d5674a8f7a91452926a";
10082 };
10083 }
10084
10085 {
10086 name = "run-async-2.3.0.tgz";
10087 path = fetchurl {
10088 name = "run-async-2.3.0.tgz";
10089 url = "https://registry.yarnpkg.com/run-async/-/run-async-2.3.0.tgz";
10090 sha1 = "0371ab4ae0bdd720d4166d7dfda64ff7a445a6c0";
10091 };
10092 }
10093
10094 {
10095 name = "run-queue-1.0.3.tgz";
10096 path = fetchurl {
10097 name = "run-queue-1.0.3.tgz";
10098 url = "https://registry.yarnpkg.com/run-queue/-/run-queue-1.0.3.tgz";
10099 sha1 = "e848396f057d223f24386924618e25694161ec47";
10100 };
10101 }
10102
10103 {
10104 name = "rx-lite-aggregates-4.0.8.tgz";
10105 path = fetchurl {
10106 name = "rx-lite-aggregates-4.0.8.tgz";
10107 url = "https://registry.yarnpkg.com/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz";
10108 sha1 = "753b87a89a11c95467c4ac1626c4efc4e05c67be";
10109 };
10110 }
10111
10112 {
10113 name = "rx-lite-4.0.8.tgz";
10114 path = fetchurl {
10115 name = "rx-lite-4.0.8.tgz";
10116 url = "https://registry.yarnpkg.com/rx-lite/-/rx-lite-4.0.8.tgz";
10117 sha1 = "0b1e11af8bc44836f04a6407e92da42467b79444";
10118 };
10119 }
10120
10121 {
10122 name = "rxjs-6.3.2.tgz";
10123 path = fetchurl {
10124 name = "rxjs-6.3.2.tgz";
10125 url = "https://registry.yarnpkg.com/rxjs/-/rxjs-6.3.2.tgz";
10126 sha1 = "6a688b16c4e6e980e62ea805ec30648e1c60907f";
10127 };
10128 }
10129
10130 {
10131 name = "safe-buffer-5.1.1.tgz";
10132 path = fetchurl {
10133 name = "safe-buffer-5.1.1.tgz";
10134 url = "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz";
10135 sha1 = "893312af69b2123def71f57889001671eeb2c853";
10136 };
10137 }
10138
10139 {
10140 name = "safe-buffer-5.1.2.tgz";
10141 path = fetchurl {
10142 name = "safe-buffer-5.1.2.tgz";
10143 url = "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz";
10144 sha1 = "991ec69d296e0313747d59bdfd2b745c35f8828d";
10145 };
10146 }
10147
10148 {
10149 name = "safe-regex-1.1.0.tgz";
10150 path = fetchurl {
10151 name = "safe-regex-1.1.0.tgz";
10152 url = "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz";
10153 sha1 = "40a3669f3b077d1e943d44629e157dd48023bf2e";
10154 };
10155 }
10156
10157 {
10158 name = "safer-buffer-2.1.2.tgz";
10159 path = fetchurl {
10160 name = "safer-buffer-2.1.2.tgz";
10161 url = "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz";
10162 sha1 = "44fa161b0187b9549dd84bb91802f9bd8385cd6a";
10163 };
10164 }
10165
10166 {
10167 name = "sane-2.5.2.tgz";
10168 path = fetchurl {
10169 name = "sane-2.5.2.tgz";
10170 url = "https://registry.yarnpkg.com/sane/-/sane-2.5.2.tgz";
10171 sha1 = "b4dc1861c21b427e929507a3e751e2a2cb8ab3fa";
10172 };
10173 }
10174
10175 {
10176 name = "sass-graph-2.2.4.tgz";
10177 path = fetchurl {
10178 name = "sass-graph-2.2.4.tgz";
10179 url = "https://registry.yarnpkg.com/sass-graph/-/sass-graph-2.2.4.tgz";
10180 sha1 = "13fbd63cd1caf0908b9fd93476ad43a51d1e0b49";
10181 };
10182 }
10183
10184 {
10185 name = "sass-loader-7.1.0.tgz";
10186 path = fetchurl {
10187 name = "sass-loader-7.1.0.tgz";
10188 url = "https://registry.yarnpkg.com/sass-loader/-/sass-loader-7.1.0.tgz";
10189 sha1 = "16fd5138cb8b424bf8a759528a1972d72aad069d";
10190 };
10191 }
10192
10193 {
10194 name = "sax-1.2.4.tgz";
10195 path = fetchurl {
10196 name = "sax-1.2.4.tgz";
10197 url = "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz";
10198 sha1 = "2816234e2378bddc4e5354fab5caa895df7100d9";
10199 };
10200 }
10201
10202 {
10203 name = "schedule-0.3.0.tgz";
10204 path = fetchurl {
10205 name = "schedule-0.3.0.tgz";
10206 url = "https://registry.yarnpkg.com/schedule/-/schedule-0.3.0.tgz";
10207 sha1 = "1be2ab2fc2e768536269ce7326efb478d6c045e8";
10208 };
10209 }
10210
10211 {
10212 name = "schema-utils-0.4.7.tgz";
10213 path = fetchurl {
10214 name = "schema-utils-0.4.7.tgz";
10215 url = "https://registry.yarnpkg.com/schema-utils/-/schema-utils-0.4.7.tgz";
10216 sha1 = "ba74f597d2be2ea880131746ee17d0a093c68187";
10217 };
10218 }
10219
10220 {
10221 name = "schema-utils-1.0.0.tgz";
10222 path = fetchurl {
10223 name = "schema-utils-1.0.0.tgz";
10224 url = "https://registry.yarnpkg.com/schema-utils/-/schema-utils-1.0.0.tgz";
10225 sha1 = "0b79a93204d7b600d4b2850d1f66c2a34951c770";
10226 };
10227 }
10228
10229 {
10230 name = "scroll-behavior-0.9.9.tgz";
10231 path = fetchurl {
10232 name = "scroll-behavior-0.9.9.tgz";
10233 url = "https://registry.yarnpkg.com/scroll-behavior/-/scroll-behavior-0.9.9.tgz";
10234 sha1 = "ebfe0658455b82ad885b66195215416674dacce2";
10235 };
10236 }
10237
10238 {
10239 name = "scss-tokenizer-0.2.3.tgz";
10240 path = fetchurl {
10241 name = "scss-tokenizer-0.2.3.tgz";
10242 url = "https://registry.yarnpkg.com/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz";
10243 sha1 = "8eb06db9a9723333824d3f5530641149847ce5d1";
10244 };
10245 }
10246
10247 {
10248 name = "select-hose-2.0.0.tgz";
10249 path = fetchurl {
10250 name = "select-hose-2.0.0.tgz";
10251 url = "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz";
10252 sha1 = "625d8658f865af43ec962bfc376a37359a4994ca";
10253 };
10254 }
10255
10256 {
10257 name = "selfsigned-1.10.3.tgz";
10258 path = fetchurl {
10259 name = "selfsigned-1.10.3.tgz";
10260 url = "https://registry.yarnpkg.com/selfsigned/-/selfsigned-1.10.3.tgz";
10261 sha1 = "d628ecf9e3735f84e8bafba936b3cf85bea43823";
10262 };
10263 }
10264
10265 {
10266 name = "semver-5.5.1.tgz";
10267 path = fetchurl {
10268 name = "semver-5.5.1.tgz";
10269 url = "https://registry.yarnpkg.com/semver/-/semver-5.5.1.tgz";
10270 sha1 = "7dfdd8814bdb7cabc7be0fb1d734cfb66c940477";
10271 };
10272 }
10273
10274 {
10275 name = "semver-4.3.2.tgz";
10276 path = fetchurl {
10277 name = "semver-4.3.2.tgz";
10278 url = "https://registry.yarnpkg.com/semver/-/semver-4.3.2.tgz";
10279 sha1 = "c7a07158a80bedd052355b770d82d6640f803be7";
10280 };
10281 }
10282
10283 {
10284 name = "semver-5.3.0.tgz";
10285 path = fetchurl {
10286 name = "semver-5.3.0.tgz";
10287 url = "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz";
10288 sha1 = "9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f";
10289 };
10290 }
10291
10292 {
10293 name = "send-0.16.2.tgz";
10294 path = fetchurl {
10295 name = "send-0.16.2.tgz";
10296 url = "https://registry.yarnpkg.com/send/-/send-0.16.2.tgz";
10297 sha1 = "6ecca1e0f8c156d141597559848df64730a6bbc1";
10298 };
10299 }
10300
10301 {
10302 name = "serialize-javascript-1.5.0.tgz";
10303 path = fetchurl {
10304 name = "serialize-javascript-1.5.0.tgz";
10305 url = "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-1.5.0.tgz";
10306 sha1 = "1aa336162c88a890ddad5384baebc93a655161fe";
10307 };
10308 }
10309
10310 {
10311 name = "serve-index-1.9.1.tgz";
10312 path = fetchurl {
10313 name = "serve-index-1.9.1.tgz";
10314 url = "https://registry.yarnpkg.com/serve-index/-/serve-index-1.9.1.tgz";
10315 sha1 = "d3768d69b1e7d82e5ce050fff5b453bea12a9239";
10316 };
10317 }
10318
10319 {
10320 name = "serve-static-1.13.2.tgz";
10321 path = fetchurl {
10322 name = "serve-static-1.13.2.tgz";
10323 url = "https://registry.yarnpkg.com/serve-static/-/serve-static-1.13.2.tgz";
10324 sha1 = "095e8472fd5b46237db50ce486a43f4b86c6cec1";
10325 };
10326 }
10327
10328 {
10329 name = "set-blocking-2.0.0.tgz";
10330 path = fetchurl {
10331 name = "set-blocking-2.0.0.tgz";
10332 url = "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz";
10333 sha1 = "045f9782d011ae9a6803ddd382b24392b3d890f7";
10334 };
10335 }
10336
10337 {
10338 name = "set-immediate-shim-1.0.1.tgz";
10339 path = fetchurl {
10340 name = "set-immediate-shim-1.0.1.tgz";
10341 url = "https://registry.yarnpkg.com/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz";
10342 sha1 = "4b2b1b27eb808a9f8dcc481a58e5e56f599f3f61";
10343 };
10344 }
10345
10346 {
10347 name = "set-value-0.4.3.tgz";
10348 path = fetchurl {
10349 name = "set-value-0.4.3.tgz";
10350 url = "https://registry.yarnpkg.com/set-value/-/set-value-0.4.3.tgz";
10351 sha1 = "7db08f9d3d22dc7f78e53af3c3bf4666ecdfccf1";
10352 };
10353 }
10354
10355 {
10356 name = "set-value-2.0.0.tgz";
10357 path = fetchurl {
10358 name = "set-value-2.0.0.tgz";
10359 url = "https://registry.yarnpkg.com/set-value/-/set-value-2.0.0.tgz";
10360 sha1 = "71ae4a88f0feefbbf52d1ea604f3fb315ebb6274";
10361 };
10362 }
10363
10364 {
10365 name = "setimmediate-1.0.5.tgz";
10366 path = fetchurl {
10367 name = "setimmediate-1.0.5.tgz";
10368 url = "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz";
10369 sha1 = "290cbb232e306942d7d7ea9b83732ab7856f8285";
10370 };
10371 }
10372
10373 {
10374 name = "setprototypeof-1.0.3.tgz";
10375 path = fetchurl {
10376 name = "setprototypeof-1.0.3.tgz";
10377 url = "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.0.3.tgz";
10378 sha1 = "66567e37043eeb4f04d91bd658c0cbefb55b8e04";
10379 };
10380 }
10381
10382 {
10383 name = "setprototypeof-1.1.0.tgz";
10384 path = fetchurl {
10385 name = "setprototypeof-1.1.0.tgz";
10386 url = "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz";
10387 sha1 = "d0bd85536887b6fe7c0d818cb962d9d91c54e656";
10388 };
10389 }
10390
10391 {
10392 name = "sha.js-2.4.11.tgz";
10393 path = fetchurl {
10394 name = "sha.js-2.4.11.tgz";
10395 url = "http://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz";
10396 sha1 = "37a5cf0b81ecbc6943de109ba2960d1b26584ae7";
10397 };
10398 }
10399
10400 {
10401 name = "shallow-clone-1.0.0.tgz";
10402 path = fetchurl {
10403 name = "shallow-clone-1.0.0.tgz";
10404 url = "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-1.0.0.tgz";
10405 sha1 = "4480cd06e882ef68b2ad88a3ea54832e2c48b571";
10406 };
10407 }
10408
10409 {
10410 name = "shebang-command-1.2.0.tgz";
10411 path = fetchurl {
10412 name = "shebang-command-1.2.0.tgz";
10413 url = "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz";
10414 sha1 = "44aac65b695b03398968c39f363fee5deafdf1ea";
10415 };
10416 }
10417
10418 {
10419 name = "shebang-regex-1.0.0.tgz";
10420 path = fetchurl {
10421 name = "shebang-regex-1.0.0.tgz";
10422 url = "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz";
10423 sha1 = "da42f49740c0b42db2ca9728571cb190c98efea3";
10424 };
10425 }
10426
10427 {
10428 name = "shellwords-0.1.1.tgz";
10429 path = fetchurl {
10430 name = "shellwords-0.1.1.tgz";
10431 url = "https://registry.yarnpkg.com/shellwords/-/shellwords-0.1.1.tgz";
10432 sha1 = "d6b9181c1a48d397324c84871efbcfc73fc0654b";
10433 };
10434 }
10435
10436 {
10437 name = "signal-exit-3.0.2.tgz";
10438 path = fetchurl {
10439 name = "signal-exit-3.0.2.tgz";
10440 url = "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz";
10441 sha1 = "b5fdc08f1287ea1178628e415e25132b73646c6d";
10442 };
10443 }
10444
10445 {
10446 name = "simple-swizzle-0.2.2.tgz";
10447 path = fetchurl {
10448 name = "simple-swizzle-0.2.2.tgz";
10449 url = "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz";
10450 sha1 = "a4da6b635ffcccca33f70d17cb92592de95e557a";
10451 };
10452 }
10453
10454 {
10455 name = "sisteransi-0.1.1.tgz";
10456 path = fetchurl {
10457 name = "sisteransi-0.1.1.tgz";
10458 url = "https://registry.yarnpkg.com/sisteransi/-/sisteransi-0.1.1.tgz";
10459 sha1 = "5431447d5f7d1675aac667ccd0b865a4994cb3ce";
10460 };
10461 }
10462
10463 {
10464 name = "slash-1.0.0.tgz";
10465 path = fetchurl {
10466 name = "slash-1.0.0.tgz";
10467 url = "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz";
10468 sha1 = "c41f2f6c39fc16d1cd17ad4b5d896114ae470d55";
10469 };
10470 }
10471
10472 {
10473 name = "slice-ansi-1.0.0.tgz";
10474 path = fetchurl {
10475 name = "slice-ansi-1.0.0.tgz";
10476 url = "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-1.0.0.tgz";
10477 sha1 = "044f1a49d8842ff307aad6b505ed178bd950134d";
10478 };
10479 }
10480
10481 {
10482 name = "snapdragon-node-2.1.1.tgz";
10483 path = fetchurl {
10484 name = "snapdragon-node-2.1.1.tgz";
10485 url = "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz";
10486 sha1 = "6c175f86ff14bdb0724563e8f3c1b021a286853b";
10487 };
10488 }
10489
10490 {
10491 name = "snapdragon-util-3.0.1.tgz";
10492 path = fetchurl {
10493 name = "snapdragon-util-3.0.1.tgz";
10494 url = "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz";
10495 sha1 = "f956479486f2acd79700693f6f7b805e45ab56e2";
10496 };
10497 }
10498
10499 {
10500 name = "snapdragon-0.8.2.tgz";
10501 path = fetchurl {
10502 name = "snapdragon-0.8.2.tgz";
10503 url = "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz";
10504 sha1 = "64922e7c565b0e14204ba1aa7d6964278d25182d";
10505 };
10506 }
10507
10508 {
10509 name = "sntp-1.0.9.tgz";
10510 path = fetchurl {
10511 name = "sntp-1.0.9.tgz";
10512 url = "https://registry.yarnpkg.com/sntp/-/sntp-1.0.9.tgz";
10513 sha1 = "6541184cc90aeea6c6e7b35e2659082443c66198";
10514 };
10515 }
10516
10517 {
10518 name = "sockjs-client-1.1.5.tgz";
10519 path = fetchurl {
10520 name = "sockjs-client-1.1.5.tgz";
10521 url = "https://registry.yarnpkg.com/sockjs-client/-/sockjs-client-1.1.5.tgz";
10522 sha1 = "1bb7c0f7222c40f42adf14f4442cbd1269771a83";
10523 };
10524 }
10525
10526 {
10527 name = "sockjs-0.3.19.tgz";
10528 path = fetchurl {
10529 name = "sockjs-0.3.19.tgz";
10530 url = "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.19.tgz";
10531 sha1 = "d976bbe800af7bd20ae08598d582393508993c0d";
10532 };
10533 }
10534
10535 {
10536 name = "source-list-map-2.0.0.tgz";
10537 path = fetchurl {
10538 name = "source-list-map-2.0.0.tgz";
10539 url = "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.0.tgz";
10540 sha1 = "aaa47403f7b245a92fbc97ea08f250d6087ed085";
10541 };
10542 }
10543
10544 {
10545 name = "source-map-resolve-0.5.2.tgz";
10546 path = fetchurl {
10547 name = "source-map-resolve-0.5.2.tgz";
10548 url = "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.2.tgz";
10549 sha1 = "72e2cc34095543e43b2c62b2c4c10d4a9054f259";
10550 };
10551 }
10552
10553 {
10554 name = "source-map-support-0.4.18.tgz";
10555 path = fetchurl {
10556 name = "source-map-support-0.4.18.tgz";
10557 url = "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.18.tgz";
10558 sha1 = "0286a6de8be42641338594e97ccea75f0a2c585f";
10559 };
10560 }
10561
10562 {
10563 name = "source-map-support-0.5.9.tgz";
10564 path = fetchurl {
10565 name = "source-map-support-0.5.9.tgz";
10566 url = "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.9.tgz";
10567 sha1 = "41bc953b2534267ea2d605bccfa7bfa3111ced5f";
10568 };
10569 }
10570
10571 {
10572 name = "source-map-url-0.4.0.tgz";
10573 path = fetchurl {
10574 name = "source-map-url-0.4.0.tgz";
10575 url = "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz";
10576 sha1 = "3e935d7ddd73631b97659956d55128e87b5084a3";
10577 };
10578 }
10579
10580 {
10581 name = "source-map-0.4.4.tgz";
10582 path = fetchurl {
10583 name = "source-map-0.4.4.tgz";
10584 url = "https://registry.yarnpkg.com/source-map/-/source-map-0.4.4.tgz";
10585 sha1 = "eba4f5da9c0dc999de68032d8b4f76173652036b";
10586 };
10587 }
10588
10589 {
10590 name = "source-map-0.5.7.tgz";
10591 path = fetchurl {
10592 name = "source-map-0.5.7.tgz";
10593 url = "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz";
10594 sha1 = "8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc";
10595 };
10596 }
10597
10598 {
10599 name = "source-map-0.6.1.tgz";
10600 path = fetchurl {
10601 name = "source-map-0.6.1.tgz";
10602 url = "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz";
10603 sha1 = "74722af32e9614e9c287a8d0bbde48b5e2f1a263";
10604 };
10605 }
10606
10607 {
10608 name = "spdx-correct-3.0.0.tgz";
10609 path = fetchurl {
10610 name = "spdx-correct-3.0.0.tgz";
10611 url = "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.0.0.tgz";
10612 sha1 = "05a5b4d7153a195bc92c3c425b69f3b2a9524c82";
10613 };
10614 }
10615
10616 {
10617 name = "spdx-exceptions-2.1.0.tgz";
10618 path = fetchurl {
10619 name = "spdx-exceptions-2.1.0.tgz";
10620 url = "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.1.0.tgz";
10621 sha1 = "2c7ae61056c714a5b9b9b2b2af7d311ef5c78fe9";
10622 };
10623 }
10624
10625 {
10626 name = "spdx-expression-parse-3.0.0.tgz";
10627 path = fetchurl {
10628 name = "spdx-expression-parse-3.0.0.tgz";
10629 url = "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz";
10630 sha1 = "99e119b7a5da00e05491c9fa338b7904823b41d0";
10631 };
10632 }
10633
10634 {
10635 name = "spdx-license-ids-3.0.1.tgz";
10636 path = fetchurl {
10637 name = "spdx-license-ids-3.0.1.tgz";
10638 url = "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.1.tgz";
10639 sha1 = "e2a303236cac54b04031fa7a5a79c7e701df852f";
10640 };
10641 }
10642
10643 {
10644 name = "spdy-transport-2.1.0.tgz";
10645 path = fetchurl {
10646 name = "spdy-transport-2.1.0.tgz";
10647 url = "https://registry.yarnpkg.com/spdy-transport/-/spdy-transport-2.1.0.tgz";
10648 sha1 = "4bbb15aaffed0beefdd56ad61dbdc8ba3e2cb7a1";
10649 };
10650 }
10651
10652 {
10653 name = "spdy-3.4.7.tgz";
10654 path = fetchurl {
10655 name = "spdy-3.4.7.tgz";
10656 url = "https://registry.yarnpkg.com/spdy/-/spdy-3.4.7.tgz";
10657 sha1 = "42ff41ece5cc0f99a3a6c28aabb73f5c3b03acbc";
10658 };
10659 }
10660
10661 {
10662 name = "split-string-3.1.0.tgz";
10663 path = fetchurl {
10664 name = "split-string-3.1.0.tgz";
10665 url = "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz";
10666 sha1 = "7cb09dda3a86585705c64b39a6466038682e8fe2";
10667 };
10668 }
10669
10670 {
10671 name = "split-1.0.1.tgz";
10672 path = fetchurl {
10673 name = "split-1.0.1.tgz";
10674 url = "https://registry.yarnpkg.com/split/-/split-1.0.1.tgz";
10675 sha1 = "605bd9be303aa59fb35f9229fbea0ddec9ea07d9";
10676 };
10677 }
10678
10679 {
10680 name = "sprintf-js-1.0.3.tgz";
10681 path = fetchurl {
10682 name = "sprintf-js-1.0.3.tgz";
10683 url = "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz";
10684 sha1 = "04e6926f662895354f3dd015203633b857297e2c";
10685 };
10686 }
10687
10688 {
10689 name = "sshpk-1.14.2.tgz";
10690 path = fetchurl {
10691 name = "sshpk-1.14.2.tgz";
10692 url = "https://registry.yarnpkg.com/sshpk/-/sshpk-1.14.2.tgz";
10693 sha1 = "c6fc61648a3d9c4e764fd3fcdf4ea105e492ba98";
10694 };
10695 }
10696
10697 {
10698 name = "ssri-5.3.0.tgz";
10699 path = fetchurl {
10700 name = "ssri-5.3.0.tgz";
10701 url = "https://registry.yarnpkg.com/ssri/-/ssri-5.3.0.tgz";
10702 sha1 = "ba3872c9c6d33a0704a7d71ff045e5ec48999d06";
10703 };
10704 }
10705
10706 {
10707 name = "ssri-6.0.1.tgz";
10708 path = fetchurl {
10709 name = "ssri-6.0.1.tgz";
10710 url = "https://registry.yarnpkg.com/ssri/-/ssri-6.0.1.tgz";
10711 sha1 = "2a3c41b28dd45b62b63676ecb74001265ae9edd8";
10712 };
10713 }
10714
10715 {
10716 name = "stack-utils-1.0.1.tgz";
10717 path = fetchurl {
10718 name = "stack-utils-1.0.1.tgz";
10719 url = "https://registry.yarnpkg.com/stack-utils/-/stack-utils-1.0.1.tgz";
10720 sha1 = "d4f33ab54e8e38778b0ca5cfd3b3afb12db68620";
10721 };
10722 }
10723
10724 {
10725 name = "static-extend-0.1.2.tgz";
10726 path = fetchurl {
10727 name = "static-extend-0.1.2.tgz";
10728 url = "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz";
10729 sha1 = "60809c39cbff55337226fd5e0b520f341f1fb5c6";
10730 };
10731 }
10732
10733 {
10734 name = "statuses-1.5.0.tgz";
10735 path = fetchurl {
10736 name = "statuses-1.5.0.tgz";
10737 url = "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz";
10738 sha1 = "161c7dac177659fd9811f43771fa99381478628c";
10739 };
10740 }
10741
10742 {
10743 name = "statuses-1.4.0.tgz";
10744 path = fetchurl {
10745 name = "statuses-1.4.0.tgz";
10746 url = "https://registry.yarnpkg.com/statuses/-/statuses-1.4.0.tgz";
10747 sha1 = "bb73d446da2796106efcc1b601a253d6c46bd087";
10748 };
10749 }
10750
10751 {
10752 name = "stdout-stream-1.4.1.tgz";
10753 path = fetchurl {
10754 name = "stdout-stream-1.4.1.tgz";
10755 url = "https://registry.yarnpkg.com/stdout-stream/-/stdout-stream-1.4.1.tgz";
10756 sha1 = "5ac174cdd5cd726104aa0c0b2bd83815d8d535de";
10757 };
10758 }
10759
10760 {
10761 name = "stealthy-require-1.1.1.tgz";
10762 path = fetchurl {
10763 name = "stealthy-require-1.1.1.tgz";
10764 url = "https://registry.yarnpkg.com/stealthy-require/-/stealthy-require-1.1.1.tgz";
10765 sha1 = "35b09875b4ff49f26a777e509b3090a3226bf24b";
10766 };
10767 }
10768
10769 {
10770 name = "stream-browserify-2.0.1.tgz";
10771 path = fetchurl {
10772 name = "stream-browserify-2.0.1.tgz";
10773 url = "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.1.tgz";
10774 sha1 = "66266ee5f9bdb9940a4e4514cafb43bb71e5c9db";
10775 };
10776 }
10777
10778 {
10779 name = "stream-each-1.2.3.tgz";
10780 path = fetchurl {
10781 name = "stream-each-1.2.3.tgz";
10782 url = "https://registry.yarnpkg.com/stream-each/-/stream-each-1.2.3.tgz";
10783 sha1 = "ebe27a0c389b04fbcc233642952e10731afa9bae";
10784 };
10785 }
10786
10787 {
10788 name = "stream-http-2.8.3.tgz";
10789 path = fetchurl {
10790 name = "stream-http-2.8.3.tgz";
10791 url = "https://registry.yarnpkg.com/stream-http/-/stream-http-2.8.3.tgz";
10792 sha1 = "b2d242469288a5a27ec4fe8933acf623de6514fc";
10793 };
10794 }
10795
10796 {
10797 name = "stream-shift-1.0.0.tgz";
10798 path = fetchurl {
10799 name = "stream-shift-1.0.0.tgz";
10800 url = "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.0.tgz";
10801 sha1 = "d5c752825e5367e786f78e18e445ea223a155952";
10802 };
10803 }
10804
10805 {
10806 name = "string-length-2.0.0.tgz";
10807 path = fetchurl {
10808 name = "string-length-2.0.0.tgz";
10809 url = "https://registry.yarnpkg.com/string-length/-/string-length-2.0.0.tgz";
10810 sha1 = "d40dbb686a3ace960c1cffca562bf2c45f8363ed";
10811 };
10812 }
10813
10814 {
10815 name = "string-width-1.0.2.tgz";
10816 path = fetchurl {
10817 name = "string-width-1.0.2.tgz";
10818 url = "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz";
10819 sha1 = "118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3";
10820 };
10821 }
10822
10823 {
10824 name = "string-width-2.1.1.tgz";
10825 path = fetchurl {
10826 name = "string-width-2.1.1.tgz";
10827 url = "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz";
10828 sha1 = "ab93f27a8dc13d28cac815c462143a6d9012ae9e";
10829 };
10830 }
10831
10832 {
10833 name = "string.prototype.trim-1.1.2.tgz";
10834 path = fetchurl {
10835 name = "string.prototype.trim-1.1.2.tgz";
10836 url = "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.1.2.tgz";
10837 sha1 = "d04de2c89e137f4d7d206f086b5ed2fae6be8cea";
10838 };
10839 }
10840
10841 {
10842 name = "string_decoder-1.1.1.tgz";
10843 path = fetchurl {
10844 name = "string_decoder-1.1.1.tgz";
10845 url = "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz";
10846 sha1 = "9cf1611ba62685d7030ae9e4ba34149c3af03fc8";
10847 };
10848 }
10849
10850 {
10851 name = "stringstream-0.0.6.tgz";
10852 path = fetchurl {
10853 name = "stringstream-0.0.6.tgz";
10854 url = "https://registry.yarnpkg.com/stringstream/-/stringstream-0.0.6.tgz";
10855 sha1 = "7880225b0d4ad10e30927d167a1d6f2fd3b33a72";
10856 };
10857 }
10858
10859 {
10860 name = "stringz-0.3.0.tgz";
10861 path = fetchurl {
10862 name = "stringz-0.3.0.tgz";
10863 url = "https://registry.yarnpkg.com/stringz/-/stringz-0.3.0.tgz";
10864 sha1 = "58a311a8c791eee1a68f5f188b3db5e66ff49360";
10865 };
10866 }
10867
10868 {
10869 name = "strip-ansi-3.0.1.tgz";
10870 path = fetchurl {
10871 name = "strip-ansi-3.0.1.tgz";
10872 url = "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz";
10873 sha1 = "6a385fb8853d952d5ff05d0e8aaf94278dc63dcf";
10874 };
10875 }
10876
10877 {
10878 name = "strip-ansi-4.0.0.tgz";
10879 path = fetchurl {
10880 name = "strip-ansi-4.0.0.tgz";
10881 url = "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz";
10882 sha1 = "a8479022eb1ac368a871389b635262c505ee368f";
10883 };
10884 }
10885
10886 {
10887 name = "strip-bom-3.0.0.tgz";
10888 path = fetchurl {
10889 name = "strip-bom-3.0.0.tgz";
10890 url = "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz";
10891 sha1 = "2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3";
10892 };
10893 }
10894
10895 {
10896 name = "strip-bom-2.0.0.tgz";
10897 path = fetchurl {
10898 name = "strip-bom-2.0.0.tgz";
10899 url = "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz";
10900 sha1 = "6219a85616520491f35788bdbf1447a99c7e6b0e";
10901 };
10902 }
10903
10904 {
10905 name = "strip-eof-1.0.0.tgz";
10906 path = fetchurl {
10907 name = "strip-eof-1.0.0.tgz";
10908 url = "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz";
10909 sha1 = "bb43ff5598a6eb05d89b59fcd129c983313606bf";
10910 };
10911 }
10912
10913 {
10914 name = "strip-indent-1.0.1.tgz";
10915 path = fetchurl {
10916 name = "strip-indent-1.0.1.tgz";
10917 url = "https://registry.yarnpkg.com/strip-indent/-/strip-indent-1.0.1.tgz";
10918 sha1 = "0c7962a6adefa7bbd4ac366460a638552ae1a0a2";
10919 };
10920 }
10921
10922 {
10923 name = "strip-json-comments-2.0.1.tgz";
10924 path = fetchurl {
10925 name = "strip-json-comments-2.0.1.tgz";
10926 url = "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz";
10927 sha1 = "3c531942e908c2697c0ec344858c286c7ca0a60a";
10928 };
10929 }
10930
10931 {
10932 name = "style-loader-0.23.0.tgz";
10933 path = fetchurl {
10934 name = "style-loader-0.23.0.tgz";
10935 url = "https://registry.yarnpkg.com/style-loader/-/style-loader-0.23.0.tgz";
10936 sha1 = "8377fefab68416a2e05f1cabd8c3a3acfcce74f1";
10937 };
10938 }
10939
10940 {
10941 name = "substring-trie-1.0.2.tgz";
10942 path = fetchurl {
10943 name = "substring-trie-1.0.2.tgz";
10944 url = "https://registry.yarnpkg.com/substring-trie/-/substring-trie-1.0.2.tgz";
10945 sha1 = "7b42592391628b4f2cb17365c6cce4257c7b7af5";
10946 };
10947 }
10948
10949 {
10950 name = "sugarss-1.0.1.tgz";
10951 path = fetchurl {
10952 name = "sugarss-1.0.1.tgz";
10953 url = "https://registry.yarnpkg.com/sugarss/-/sugarss-1.0.1.tgz";
10954 sha1 = "be826d9003e0f247735f92365dc3fd7f1bae9e44";
10955 };
10956 }
10957
10958 {
10959 name = "supports-color-2.0.0.tgz";
10960 path = fetchurl {
10961 name = "supports-color-2.0.0.tgz";
10962 url = "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz";
10963 sha1 = "535d045ce6b6363fa40117084629995e9df324c7";
10964 };
10965 }
10966
10967 {
10968 name = "supports-color-3.2.3.tgz";
10969 path = fetchurl {
10970 name = "supports-color-3.2.3.tgz";
10971 url = "https://registry.yarnpkg.com/supports-color/-/supports-color-3.2.3.tgz";
10972 sha1 = "65ac0504b3954171d8a64946b2ae3cbb8a5f54f6";
10973 };
10974 }
10975
10976 {
10977 name = "supports-color-5.5.0.tgz";
10978 path = fetchurl {
10979 name = "supports-color-5.5.0.tgz";
10980 url = "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz";
10981 sha1 = "e2e69a44ac8772f78a1ec0b35b689df6530efc8f";
10982 };
10983 }
10984
10985 {
10986 name = "symbol-observable-1.2.0.tgz";
10987 path = fetchurl {
10988 name = "symbol-observable-1.2.0.tgz";
10989 url = "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz";
10990 sha1 = "c22688aed4eab3cdc2dfeacbb561660560a00804";
10991 };
10992 }
10993
10994 {
10995 name = "symbol-tree-3.2.2.tgz";
10996 path = fetchurl {
10997 name = "symbol-tree-3.2.2.tgz";
10998 url = "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.2.tgz";
10999 sha1 = "ae27db38f660a7ae2e1c3b7d1bc290819b8519e6";
11000 };
11001 }
11002
11003 {
11004 name = "table-4.0.2.tgz";
11005 path = fetchurl {
11006 name = "table-4.0.2.tgz";
11007 url = "https://registry.yarnpkg.com/table/-/table-4.0.2.tgz";
11008 sha1 = "a33447375391e766ad34d3486e6e2aedc84d2e36";
11009 };
11010 }
11011
11012 {
11013 name = "tapable-1.1.0.tgz";
11014 path = fetchurl {
11015 name = "tapable-1.1.0.tgz";
11016 url = "https://registry.yarnpkg.com/tapable/-/tapable-1.1.0.tgz";
11017 sha1 = "0d076a172e3d9ba088fd2272b2668fb8d194b78c";
11018 };
11019 }
11020
11021 {
11022 name = "tar-pack-3.4.1.tgz";
11023 path = fetchurl {
11024 name = "tar-pack-3.4.1.tgz";
11025 url = "https://registry.yarnpkg.com/tar-pack/-/tar-pack-3.4.1.tgz";
11026 sha1 = "e1dbc03a9b9d3ba07e896ad027317eb679a10a1f";
11027 };
11028 }
11029
11030 {
11031 name = "tar-2.2.1.tgz";
11032 path = fetchurl {
11033 name = "tar-2.2.1.tgz";
11034 url = "https://registry.yarnpkg.com/tar/-/tar-2.2.1.tgz";
11035 sha1 = "8e4d2a256c0e2185c6b18ad694aec968b83cb1d1";
11036 };
11037 }
11038
11039 {
11040 name = "tar-4.4.6.tgz";
11041 path = fetchurl {
11042 name = "tar-4.4.6.tgz";
11043 url = "https://registry.yarnpkg.com/tar/-/tar-4.4.6.tgz";
11044 sha1 = "63110f09c00b4e60ac8bcfe1bf3c8660235fbc9b";
11045 };
11046 }
11047
11048 {
11049 name = "tcomb-2.7.0.tgz";
11050 path = fetchurl {
11051 name = "tcomb-2.7.0.tgz";
11052 url = "https://registry.yarnpkg.com/tcomb/-/tcomb-2.7.0.tgz";
11053 sha1 = "10d62958041669a5d53567b9a4ee8cde22b1c2b0";
11054 };
11055 }
11056
11057 {
11058 name = "tcomb-3.2.27.tgz";
11059 path = fetchurl {
11060 name = "tcomb-3.2.27.tgz";
11061 url = "https://registry.yarnpkg.com/tcomb/-/tcomb-3.2.27.tgz";
11062 sha1 = "f4928bfc536b959d21a47e5f5f1ca2b2e4b7188a";
11063 };
11064 }
11065
11066 {
11067 name = "test-exclude-4.2.3.tgz";
11068 path = fetchurl {
11069 name = "test-exclude-4.2.3.tgz";
11070 url = "https://registry.yarnpkg.com/test-exclude/-/test-exclude-4.2.3.tgz";
11071 sha1 = "a9a5e64474e4398339245a0a769ad7c2f4a97c20";
11072 };
11073 }
11074
11075 {
11076 name = "text-table-0.2.0.tgz";
11077 path = fetchurl {
11078 name = "text-table-0.2.0.tgz";
11079 url = "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz";
11080 sha1 = "7f5ee823ae805207c00af2df4a84ec3fcfa570b4";
11081 };
11082 }
11083
11084 {
11085 name = "throat-4.1.0.tgz";
11086 path = fetchurl {
11087 name = "throat-4.1.0.tgz";
11088 url = "https://registry.yarnpkg.com/throat/-/throat-4.1.0.tgz";
11089 sha1 = "89037cbc92c56ab18926e6ba4cbb200e15672a6a";
11090 };
11091 }
11092
11093 {
11094 name = "throng-4.0.0.tgz";
11095 path = fetchurl {
11096 name = "throng-4.0.0.tgz";
11097 url = "https://registry.yarnpkg.com/throng/-/throng-4.0.0.tgz";
11098 sha1 = "983c6ba1993b58eae859998aa687ffe88df84c17";
11099 };
11100 }
11101
11102 {
11103 name = "through2-2.0.3.tgz";
11104 path = fetchurl {
11105 name = "through2-2.0.3.tgz";
11106 url = "https://registry.yarnpkg.com/through2/-/through2-2.0.3.tgz";
11107 sha1 = "0004569b37c7c74ba39c43f3ced78d1ad94140be";
11108 };
11109 }
11110
11111 {
11112 name = "through-2.3.8.tgz";
11113 path = fetchurl {
11114 name = "through-2.3.8.tgz";
11115 url = "http://registry.npmjs.org/through/-/through-2.3.8.tgz";
11116 sha1 = "0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5";
11117 };
11118 }
11119
11120 {
11121 name = "thunky-1.0.2.tgz";
11122 path = fetchurl {
11123 name = "thunky-1.0.2.tgz";
11124 url = "https://registry.yarnpkg.com/thunky/-/thunky-1.0.2.tgz";
11125 sha1 = "a862e018e3fb1ea2ec3fce5d55605cf57f247371";
11126 };
11127 }
11128
11129 {
11130 name = "timers-browserify-2.0.10.tgz";
11131 path = fetchurl {
11132 name = "timers-browserify-2.0.10.tgz";
11133 url = "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.10.tgz";
11134 sha1 = "1d28e3d2aadf1d5a5996c4e9f95601cd053480ae";
11135 };
11136 }
11137
11138 {
11139 name = "tiny-queue-0.2.1.tgz";
11140 path = fetchurl {
11141 name = "tiny-queue-0.2.1.tgz";
11142 url = "https://registry.yarnpkg.com/tiny-queue/-/tiny-queue-0.2.1.tgz";
11143 sha1 = "25a67f2c6e253b2ca941977b5ef7442ef97a6046";
11144 };
11145 }
11146
11147 {
11148 name = "tmp-0.0.33.tgz";
11149 path = fetchurl {
11150 name = "tmp-0.0.33.tgz";
11151 url = "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz";
11152 sha1 = "6d34335889768d21b2bcda0aa277ced3b1bfadf9";
11153 };
11154 }
11155
11156 {
11157 name = "tmpl-1.0.4.tgz";
11158 path = fetchurl {
11159 name = "tmpl-1.0.4.tgz";
11160 url = "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.4.tgz";
11161 sha1 = "23640dd7b42d00433911140820e5cf440e521dd1";
11162 };
11163 }
11164
11165 {
11166 name = "to-arraybuffer-1.0.1.tgz";
11167 path = fetchurl {
11168 name = "to-arraybuffer-1.0.1.tgz";
11169 url = "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz";
11170 sha1 = "7d229b1fcc637e466ca081180836a7aabff83f43";
11171 };
11172 }
11173
11174 {
11175 name = "to-fast-properties-1.0.3.tgz";
11176 path = fetchurl {
11177 name = "to-fast-properties-1.0.3.tgz";
11178 url = "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz";
11179 sha1 = "b83571fa4d8c25b82e231b06e3a3055de4ca1a47";
11180 };
11181 }
11182
11183 {
11184 name = "to-fast-properties-2.0.0.tgz";
11185 path = fetchurl {
11186 name = "to-fast-properties-2.0.0.tgz";
11187 url = "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz";
11188 sha1 = "dc5e698cbd079265bc73e0377681a4e4e83f616e";
11189 };
11190 }
11191
11192 {
11193 name = "to-object-path-0.3.0.tgz";
11194 path = fetchurl {
11195 name = "to-object-path-0.3.0.tgz";
11196 url = "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz";
11197 sha1 = "297588b7b0e7e0ac08e04e672f85c1f4999e17af";
11198 };
11199 }
11200
11201 {
11202 name = "to-regex-range-2.1.1.tgz";
11203 path = fetchurl {
11204 name = "to-regex-range-2.1.1.tgz";
11205 url = "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz";
11206 sha1 = "7c80c17b9dfebe599e27367e0d4dd5590141db38";
11207 };
11208 }
11209
11210 {
11211 name = "to-regex-3.0.2.tgz";
11212 path = fetchurl {
11213 name = "to-regex-3.0.2.tgz";
11214 url = "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz";
11215 sha1 = "13cfdd9b336552f30b51f33a8ae1b42a7a7599ce";
11216 };
11217 }
11218
11219 {
11220 name = "tough-cookie-2.4.3.tgz";
11221 path = fetchurl {
11222 name = "tough-cookie-2.4.3.tgz";
11223 url = "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.4.3.tgz";
11224 sha1 = "53f36da3f47783b0925afa06ff9f3b165280f781";
11225 };
11226 }
11227
11228 {
11229 name = "tough-cookie-2.3.4.tgz";
11230 path = fetchurl {
11231 name = "tough-cookie-2.3.4.tgz";
11232 url = "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.4.tgz";
11233 sha1 = "ec60cee38ac675063ffc97a5c18970578ee83655";
11234 };
11235 }
11236
11237 {
11238 name = "tr46-1.0.1.tgz";
11239 path = fetchurl {
11240 name = "tr46-1.0.1.tgz";
11241 url = "https://registry.yarnpkg.com/tr46/-/tr46-1.0.1.tgz";
11242 sha1 = "a8b13fd6bfd2489519674ccde55ba3693b706d09";
11243 };
11244 }
11245
11246 {
11247 name = "trim-newlines-1.0.0.tgz";
11248 path = fetchurl {
11249 name = "trim-newlines-1.0.0.tgz";
11250 url = "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz";
11251 sha1 = "5887966bb582a4503a41eb524f7d35011815a613";
11252 };
11253 }
11254
11255 {
11256 name = "trim-right-1.0.1.tgz";
11257 path = fetchurl {
11258 name = "trim-right-1.0.1.tgz";
11259 url = "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz";
11260 sha1 = "cb2e1203067e0c8de1f614094b9fe45704ea6003";
11261 };
11262 }
11263
11264 {
11265 name = "true-case-path-1.0.3.tgz";
11266 path = fetchurl {
11267 name = "true-case-path-1.0.3.tgz";
11268 url = "https://registry.yarnpkg.com/true-case-path/-/true-case-path-1.0.3.tgz";
11269 sha1 = "f813b5a8c86b40da59606722b144e3225799f47d";
11270 };
11271 }
11272
11273 {
11274 name = "tryer-1.0.1.tgz";
11275 path = fetchurl {
11276 name = "tryer-1.0.1.tgz";
11277 url = "https://registry.yarnpkg.com/tryer/-/tryer-1.0.1.tgz";
11278 sha1 = "f2c85406800b9b0f74c9f7465b81eaad241252f8";
11279 };
11280 }
11281
11282 {
11283 name = "tslib-1.9.3.tgz";
11284 path = fetchurl {
11285 name = "tslib-1.9.3.tgz";
11286 url = "https://registry.yarnpkg.com/tslib/-/tslib-1.9.3.tgz";
11287 sha1 = "d7e4dd79245d85428c4d7e4822a79917954ca286";
11288 };
11289 }
11290
11291 {
11292 name = "tty-browserify-0.0.0.tgz";
11293 path = fetchurl {
11294 name = "tty-browserify-0.0.0.tgz";
11295 url = "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz";
11296 sha1 = "a157ba402da24e9bf957f9aa69d524eed42901a6";
11297 };
11298 }
11299
11300 {
11301 name = "tunnel-agent-0.6.0.tgz";
11302 path = fetchurl {
11303 name = "tunnel-agent-0.6.0.tgz";
11304 url = "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz";
11305 sha1 = "27a5dea06b36b04a0a9966774b290868f0fc40fd";
11306 };
11307 }
11308
11309 {
11310 name = "tweetnacl-0.14.5.tgz";
11311 path = fetchurl {
11312 name = "tweetnacl-0.14.5.tgz";
11313 url = "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz";
11314 sha1 = "5ae68177f192d4456269d108afa93ff8743f4f64";
11315 };
11316 }
11317
11318 {
11319 name = "type-check-0.3.2.tgz";
11320 path = fetchurl {
11321 name = "type-check-0.3.2.tgz";
11322 url = "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz";
11323 sha1 = "5884cab512cf1d355e3fb784f30804b2b520db72";
11324 };
11325 }
11326
11327 {
11328 name = "type-is-1.6.16.tgz";
11329 path = fetchurl {
11330 name = "type-is-1.6.16.tgz";
11331 url = "https://registry.yarnpkg.com/type-is/-/type-is-1.6.16.tgz";
11332 sha1 = "f89ce341541c672b25ee7ae3c73dee3b2be50194";
11333 };
11334 }
11335
11336 {
11337 name = "typedarray-0.0.6.tgz";
11338 path = fetchurl {
11339 name = "typedarray-0.0.6.tgz";
11340 url = "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz";
11341 sha1 = "867ac74e3864187b1d3d47d996a78ec5c8830777";
11342 };
11343 }
11344
11345 {
11346 name = "ua-parser-js-0.7.18.tgz";
11347 path = fetchurl {
11348 name = "ua-parser-js-0.7.18.tgz";
11349 url = "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.18.tgz";
11350 sha1 = "a7bfd92f56edfb117083b69e31d2aa8882d4b1ed";
11351 };
11352 }
11353
11354 {
11355 name = "uglify-es-3.3.9.tgz";
11356 path = fetchurl {
11357 name = "uglify-es-3.3.9.tgz";
11358 url = "https://registry.yarnpkg.com/uglify-es/-/uglify-es-3.3.9.tgz";
11359 sha1 = "0c1c4f0700bed8dbc124cdb304d2592ca203e677";
11360 };
11361 }
11362
11363 {
11364 name = "uglify-js-3.4.9.tgz";
11365 path = fetchurl {
11366 name = "uglify-js-3.4.9.tgz";
11367 url = "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.4.9.tgz";
11368 sha1 = "af02f180c1207d76432e473ed24a28f4a782bae3";
11369 };
11370 }
11371
11372 {
11373 name = "uglifyjs-webpack-plugin-1.3.0.tgz";
11374 path = fetchurl {
11375 name = "uglifyjs-webpack-plugin-1.3.0.tgz";
11376 url = "https://registry.yarnpkg.com/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-1.3.0.tgz";
11377 sha1 = "75f548160858163a08643e086d5fefe18a5d67de";
11378 };
11379 }
11380
11381 {
11382 name = "uid-number-0.0.6.tgz";
11383 path = fetchurl {
11384 name = "uid-number-0.0.6.tgz";
11385 url = "https://registry.yarnpkg.com/uid-number/-/uid-number-0.0.6.tgz";
11386 sha1 = "0ea10e8035e8eb5b8e4449f06da1c730663baa81";
11387 };
11388 }
11389
11390 {
11391 name = "underscore-1.4.4.tgz";
11392 path = fetchurl {
11393 name = "underscore-1.4.4.tgz";
11394 url = "https://registry.yarnpkg.com/underscore/-/underscore-1.4.4.tgz";
11395 sha1 = "61a6a32010622afa07963bf325203cf12239d604";
11396 };
11397 }
11398
11399 {
11400 name = "unicode-canonical-property-names-ecmascript-1.0.4.tgz";
11401 path = fetchurl {
11402 name = "unicode-canonical-property-names-ecmascript-1.0.4.tgz";
11403 url = "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz";
11404 sha1 = "2619800c4c825800efdd8343af7dd9933cbe2818";
11405 };
11406 }
11407
11408 {
11409 name = "unicode-match-property-ecmascript-1.0.4.tgz";
11410 path = fetchurl {
11411 name = "unicode-match-property-ecmascript-1.0.4.tgz";
11412 url = "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz";
11413 sha1 = "8ed2a32569961bce9227d09cd3ffbb8fed5f020c";
11414 };
11415 }
11416
11417 {
11418 name = "unicode-match-property-value-ecmascript-1.0.2.tgz";
11419 path = fetchurl {
11420 name = "unicode-match-property-value-ecmascript-1.0.2.tgz";
11421 url = "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.0.2.tgz";
11422 sha1 = "9f1dc76926d6ccf452310564fd834ace059663d4";
11423 };
11424 }
11425
11426 {
11427 name = "unicode-property-aliases-ecmascript-1.0.4.tgz";
11428 path = fetchurl {
11429 name = "unicode-property-aliases-ecmascript-1.0.4.tgz";
11430 url = "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.0.4.tgz";
11431 sha1 = "5a533f31b4317ea76f17d807fa0d116546111dd0";
11432 };
11433 }
11434
11435 {
11436 name = "union-value-1.0.0.tgz";
11437 path = fetchurl {
11438 name = "union-value-1.0.0.tgz";
11439 url = "https://registry.yarnpkg.com/union-value/-/union-value-1.0.0.tgz";
11440 sha1 = "5c71c34cb5bad5dcebe3ea0cd08207ba5aa1aea4";
11441 };
11442 }
11443
11444 {
11445 name = "uniq-1.0.1.tgz";
11446 path = fetchurl {
11447 name = "uniq-1.0.1.tgz";
11448 url = "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz";
11449 sha1 = "b31c5ae8254844a3a8281541ce2b04b865a734ff";
11450 };
11451 }
11452
11453 {
11454 name = "unique-filename-1.1.0.tgz";
11455 path = fetchurl {
11456 name = "unique-filename-1.1.0.tgz";
11457 url = "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.0.tgz";
11458 sha1 = "d05f2fe4032560871f30e93cbe735eea201514f3";
11459 };
11460 }
11461
11462 {
11463 name = "unique-slug-2.0.0.tgz";
11464 path = fetchurl {
11465 name = "unique-slug-2.0.0.tgz";
11466 url = "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.0.tgz";
11467 sha1 = "db6676e7c7cc0629878ff196097c78855ae9f4ab";
11468 };
11469 }
11470
11471 {
11472 name = "universalify-0.1.2.tgz";
11473 path = fetchurl {
11474 name = "universalify-0.1.2.tgz";
11475 url = "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz";
11476 sha1 = "b646f69be3942dabcecc9d6639c80dc105efaa66";
11477 };
11478 }
11479
11480 {
11481 name = "unpipe-1.0.0.tgz";
11482 path = fetchurl {
11483 name = "unpipe-1.0.0.tgz";
11484 url = "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz";
11485 sha1 = "b2bf4ee8514aae6165b4817829d21b2ef49904ec";
11486 };
11487 }
11488
11489 {
11490 name = "unquote-1.1.1.tgz";
11491 path = fetchurl {
11492 name = "unquote-1.1.1.tgz";
11493 url = "https://registry.yarnpkg.com/unquote/-/unquote-1.1.1.tgz";
11494 sha1 = "8fded7324ec6e88a0ff8b905e7c098cdc086d544";
11495 };
11496 }
11497
11498 {
11499 name = "unset-value-1.0.0.tgz";
11500 path = fetchurl {
11501 name = "unset-value-1.0.0.tgz";
11502 url = "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz";
11503 sha1 = "8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559";
11504 };
11505 }
11506
11507 {
11508 name = "upath-1.1.0.tgz";
11509 path = fetchurl {
11510 name = "upath-1.1.0.tgz";
11511 url = "https://registry.yarnpkg.com/upath/-/upath-1.1.0.tgz";
11512 sha1 = "35256597e46a581db4793d0ce47fa9aebfc9fabd";
11513 };
11514 }
11515
11516 {
11517 name = "uri-js-4.2.2.tgz";
11518 path = fetchurl {
11519 name = "uri-js-4.2.2.tgz";
11520 url = "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz";
11521 sha1 = "94c540e1ff772956e2299507c010aea6c8838eb0";
11522 };
11523 }
11524
11525 {
11526 name = "urix-0.1.0.tgz";
11527 path = fetchurl {
11528 name = "urix-0.1.0.tgz";
11529 url = "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz";
11530 sha1 = "da937f7a62e21fec1fd18d49b35c2935067a6c72";
11531 };
11532 }
11533
11534 {
11535 name = "url-join-4.0.0.tgz";
11536 path = fetchurl {
11537 name = "url-join-4.0.0.tgz";
11538 url = "https://registry.yarnpkg.com/url-join/-/url-join-4.0.0.tgz";
11539 sha1 = "4d3340e807d3773bda9991f8305acdcc2a665d2a";
11540 };
11541 }
11542
11543 {
11544 name = "url-parse-1.4.3.tgz";
11545 path = fetchurl {
11546 name = "url-parse-1.4.3.tgz";
11547 url = "https://registry.yarnpkg.com/url-parse/-/url-parse-1.4.3.tgz";
11548 sha1 = "bfaee455c889023219d757e045fa6a684ec36c15";
11549 };
11550 }
11551
11552 {
11553 name = "url-0.11.0.tgz";
11554 path = fetchurl {
11555 name = "url-0.11.0.tgz";
11556 url = "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz";
11557 sha1 = "3838e97cfc60521eb73c525a8e55bfdd9e2e28f1";
11558 };
11559 }
11560
11561 {
11562 name = "use-3.1.1.tgz";
11563 path = fetchurl {
11564 name = "use-3.1.1.tgz";
11565 url = "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz";
11566 sha1 = "d50c8cac79a19fbc20f2911f56eb973f4e10070f";
11567 };
11568 }
11569
11570 {
11571 name = "util-deprecate-1.0.2.tgz";
11572 path = fetchurl {
11573 name = "util-deprecate-1.0.2.tgz";
11574 url = "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz";
11575 sha1 = "450d4dc9fa70de732762fbd2d4a28981419a0ccf";
11576 };
11577 }
11578
11579 {
11580 name = "util.promisify-1.0.0.tgz";
11581 path = fetchurl {
11582 name = "util.promisify-1.0.0.tgz";
11583 url = "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.0.tgz";
11584 sha1 = "440f7165a459c9a16dc145eb8e72f35687097030";
11585 };
11586 }
11587
11588 {
11589 name = "util-0.10.3.tgz";
11590 path = fetchurl {
11591 name = "util-0.10.3.tgz";
11592 url = "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz";
11593 sha1 = "7afb1afe50805246489e3db7fe0ed379336ac0f9";
11594 };
11595 }
11596
11597 {
11598 name = "util-0.10.4.tgz";
11599 path = fetchurl {
11600 name = "util-0.10.4.tgz";
11601 url = "https://registry.yarnpkg.com/util/-/util-0.10.4.tgz";
11602 sha1 = "3aa0125bfe668a4672de58857d3ace27ecb76901";
11603 };
11604 }
11605
11606 {
11607 name = "utils-merge-1.0.1.tgz";
11608 path = fetchurl {
11609 name = "utils-merge-1.0.1.tgz";
11610 url = "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz";
11611 sha1 = "9f95710f50a267947b2ccc124741c1028427e713";
11612 };
11613 }
11614
11615 {
11616 name = "uuid-3.3.2.tgz";
11617 path = fetchurl {
11618 name = "uuid-3.3.2.tgz";
11619 url = "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz";
11620 sha1 = "1b4af4955eb3077c501c23872fc6513811587131";
11621 };
11622 }
11623
11624 {
11625 name = "uws-10.148.0.tgz";
11626 path = fetchurl {
11627 name = "uws-10.148.0.tgz";
11628 url = "https://registry.yarnpkg.com/uws/-/uws-10.148.0.tgz";
11629 sha1 = "3fcd35f083ca515e091cd33b2d78f0f51a666215";
11630 };
11631 }
11632
11633 {
11634 name = "v8-compile-cache-2.0.2.tgz";
11635 path = fetchurl {
11636 name = "v8-compile-cache-2.0.2.tgz";
11637 url = "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.0.2.tgz";
11638 sha1 = "a428b28bb26790734c4fc8bc9fa106fccebf6a6c";
11639 };
11640 }
11641
11642 {
11643 name = "validate-npm-package-license-3.0.4.tgz";
11644 path = fetchurl {
11645 name = "validate-npm-package-license-3.0.4.tgz";
11646 url = "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz";
11647 sha1 = "fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a";
11648 };
11649 }
11650
11651 {
11652 name = "value-equal-0.4.0.tgz";
11653 path = fetchurl {
11654 name = "value-equal-0.4.0.tgz";
11655 url = "https://registry.yarnpkg.com/value-equal/-/value-equal-0.4.0.tgz";
11656 sha1 = "c5bdd2f54ee093c04839d71ce2e4758a6890abc7";
11657 };
11658 }
11659
11660 {
11661 name = "vary-1.1.2.tgz";
11662 path = fetchurl {
11663 name = "vary-1.1.2.tgz";
11664 url = "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz";
11665 sha1 = "2299f02c6ded30d4a5961b0b9f74524a18f634fc";
11666 };
11667 }
11668
11669 {
11670 name = "verror-1.10.0.tgz";
11671 path = fetchurl {
11672 name = "verror-1.10.0.tgz";
11673 url = "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz";
11674 sha1 = "3a105ca17053af55d6e270c1f8288682e18da400";
11675 };
11676 }
11677
11678 {
11679 name = "vm-browserify-0.0.4.tgz";
11680 path = fetchurl {
11681 name = "vm-browserify-0.0.4.tgz";
11682 url = "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-0.0.4.tgz";
11683 sha1 = "5d7ea45bbef9e4a6ff65f95438e0a87c357d5a73";
11684 };
11685 }
11686
11687 {
11688 name = "w3c-hr-time-1.0.1.tgz";
11689 path = fetchurl {
11690 name = "w3c-hr-time-1.0.1.tgz";
11691 url = "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.1.tgz";
11692 sha1 = "82ac2bff63d950ea9e3189a58a65625fedf19045";
11693 };
11694 }
11695
11696 {
11697 name = "walker-1.0.7.tgz";
11698 path = fetchurl {
11699 name = "walker-1.0.7.tgz";
11700 url = "https://registry.yarnpkg.com/walker/-/walker-1.0.7.tgz";
11701 sha1 = "2f7f9b8fd10d677262b18a884e28d19618e028fb";
11702 };
11703 }
11704
11705 {
11706 name = "warning-3.0.0.tgz";
11707 path = fetchurl {
11708 name = "warning-3.0.0.tgz";
11709 url = "https://registry.yarnpkg.com/warning/-/warning-3.0.0.tgz";
11710 sha1 = "32e5377cb572de4ab04753bdf8821c01ed605b7c";
11711 };
11712 }
11713
11714 {
11715 name = "warning-4.0.2.tgz";
11716 path = fetchurl {
11717 name = "warning-4.0.2.tgz";
11718 url = "https://registry.yarnpkg.com/warning/-/warning-4.0.2.tgz";
11719 sha1 = "aa6876480872116fa3e11d434b0d0d8d91e44607";
11720 };
11721 }
11722
11723 {
11724 name = "watch-0.18.0.tgz";
11725 path = fetchurl {
11726 name = "watch-0.18.0.tgz";
11727 url = "https://registry.yarnpkg.com/watch/-/watch-0.18.0.tgz";
11728 sha1 = "28095476c6df7c90c963138990c0a5423eb4b986";
11729 };
11730 }
11731
11732 {
11733 name = "watchpack-1.6.0.tgz";
11734 path = fetchurl {
11735 name = "watchpack-1.6.0.tgz";
11736 url = "https://registry.yarnpkg.com/watchpack/-/watchpack-1.6.0.tgz";
11737 sha1 = "4bc12c2ebe8aa277a71f1d3f14d685c7b446cd00";
11738 };
11739 }
11740
11741 {
11742 name = "wbuf-1.7.3.tgz";
11743 path = fetchurl {
11744 name = "wbuf-1.7.3.tgz";
11745 url = "https://registry.yarnpkg.com/wbuf/-/wbuf-1.7.3.tgz";
11746 sha1 = "c1d8d149316d3ea852848895cb6a0bfe887b87df";
11747 };
11748 }
11749
11750 {
11751 name = "webidl-conversions-4.0.2.tgz";
11752 path = fetchurl {
11753 name = "webidl-conversions-4.0.2.tgz";
11754 url = "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz";
11755 sha1 = "a855980b1f0b6b359ba1d5d9fb39ae941faa63ad";
11756 };
11757 }
11758
11759 {
11760 name = "webpack-bundle-analyzer-2.13.1.tgz";
11761 path = fetchurl {
11762 name = "webpack-bundle-analyzer-2.13.1.tgz";
11763 url = "https://registry.yarnpkg.com/webpack-bundle-analyzer/-/webpack-bundle-analyzer-2.13.1.tgz";
11764 sha1 = "07d2176c6e86c3cdce4c23e56fae2a7b6b4ad526";
11765 };
11766 }
11767
11768 {
11769 name = "webpack-cli-3.1.0.tgz";
11770 path = fetchurl {
11771 name = "webpack-cli-3.1.0.tgz";
11772 url = "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-3.1.0.tgz";
11773 sha1 = "d71a83687dcfeb758fdceeb0fe042f96bcf62994";
11774 };
11775 }
11776
11777 {
11778 name = "webpack-dev-middleware-3.2.0.tgz";
11779 path = fetchurl {
11780 name = "webpack-dev-middleware-3.2.0.tgz";
11781 url = "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-3.2.0.tgz";
11782 sha1 = "a20ceef194873710052da678f3c6ee0aeed92552";
11783 };
11784 }
11785
11786 {
11787 name = "webpack-dev-server-3.1.8.tgz";
11788 path = fetchurl {
11789 name = "webpack-dev-server-3.1.8.tgz";
11790 url = "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-3.1.8.tgz";
11791 sha1 = "eb7a95945d1108170f902604fb3b939533d9daeb";
11792 };
11793 }
11794
11795 {
11796 name = "webpack-log-2.0.0.tgz";
11797 path = fetchurl {
11798 name = "webpack-log-2.0.0.tgz";
11799 url = "https://registry.yarnpkg.com/webpack-log/-/webpack-log-2.0.0.tgz";
11800 sha1 = "5b7928e0637593f119d32f6227c1e0ac31e1b47f";
11801 };
11802 }
11803
11804 {
11805 name = "webpack-manifest-plugin-2.0.4.tgz";
11806 path = fetchurl {
11807 name = "webpack-manifest-plugin-2.0.4.tgz";
11808 url = "https://registry.yarnpkg.com/webpack-manifest-plugin/-/webpack-manifest-plugin-2.0.4.tgz";
11809 sha1 = "e4ca2999b09557716b8ba4475fb79fab5986f0cd";
11810 };
11811 }
11812
11813 {
11814 name = "webpack-merge-4.1.4.tgz";
11815 path = fetchurl {
11816 name = "webpack-merge-4.1.4.tgz";
11817 url = "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-4.1.4.tgz";
11818 sha1 = "0fde38eabf2d5fd85251c24a5a8c48f8a3f4eb7b";
11819 };
11820 }
11821
11822 {
11823 name = "webpack-sources-1.2.0.tgz";
11824 path = fetchurl {
11825 name = "webpack-sources-1.2.0.tgz";
11826 url = "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.2.0.tgz";
11827 sha1 = "18181e0d013fce096faf6f8e6d41eeffffdceac2";
11828 };
11829 }
11830
11831 {
11832 name = "webpack-4.18.0.tgz";
11833 path = fetchurl {
11834 name = "webpack-4.18.0.tgz";
11835 url = "https://registry.yarnpkg.com/webpack/-/webpack-4.18.0.tgz";
11836 sha1 = "7dafaaf309c12e63080d3960fba7ed94afdcbe84";
11837 };
11838 }
11839
11840 {
11841 name = "websocket-driver-0.7.0.tgz";
11842 path = fetchurl {
11843 name = "websocket-driver-0.7.0.tgz";
11844 url = "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.0.tgz";
11845 sha1 = "0caf9d2d755d93aee049d4bdd0d3fe2cca2a24eb";
11846 };
11847 }
11848
11849 {
11850 name = "websocket-extensions-0.1.3.tgz";
11851 path = fetchurl {
11852 name = "websocket-extensions-0.1.3.tgz";
11853 url = "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.3.tgz";
11854 sha1 = "5d2ff22977003ec687a4b87073dfbbac146ccf29";
11855 };
11856 }
11857
11858 {
11859 name = "websocket.js-0.1.12.tgz";
11860 path = fetchurl {
11861 name = "websocket.js-0.1.12.tgz";
11862 url = "https://registry.yarnpkg.com/websocket.js/-/websocket.js-0.1.12.tgz";
11863 sha1 = "46c980787c57ebc8edcf44a0263e5d639367b85b";
11864 };
11865 }
11866
11867 {
11868 name = "whatwg-encoding-1.0.4.tgz";
11869 path = fetchurl {
11870 name = "whatwg-encoding-1.0.4.tgz";
11871 url = "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.4.tgz";
11872 sha1 = "63fb016b7435b795d9025632c086a5209dbd2621";
11873 };
11874 }
11875
11876 {
11877 name = "whatwg-fetch-3.0.0.tgz";
11878 path = fetchurl {
11879 name = "whatwg-fetch-3.0.0.tgz";
11880 url = "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.0.0.tgz";
11881 sha1 = "fc804e458cc460009b1a2b966bc8817d2578aefb";
11882 };
11883 }
11884
11885 {
11886 name = "whatwg-mimetype-2.1.0.tgz";
11887 path = fetchurl {
11888 name = "whatwg-mimetype-2.1.0.tgz";
11889 url = "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.1.0.tgz";
11890 sha1 = "f0f21d76cbba72362eb609dbed2a30cd17fcc7d4";
11891 };
11892 }
11893
11894 {
11895 name = "whatwg-url-6.5.0.tgz";
11896 path = fetchurl {
11897 name = "whatwg-url-6.5.0.tgz";
11898 url = "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-6.5.0.tgz";
11899 sha1 = "f2df02bff176fd65070df74ad5ccbb5a199965a8";
11900 };
11901 }
11902
11903 {
11904 name = "whatwg-url-7.0.0.tgz";
11905 path = fetchurl {
11906 name = "whatwg-url-7.0.0.tgz";
11907 url = "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-7.0.0.tgz";
11908 sha1 = "fde926fa54a599f3adf82dff25a9f7be02dc6edd";
11909 };
11910 }
11911
11912 {
11913 name = "which-module-1.0.0.tgz";
11914 path = fetchurl {
11915 name = "which-module-1.0.0.tgz";
11916 url = "https://registry.yarnpkg.com/which-module/-/which-module-1.0.0.tgz";
11917 sha1 = "bba63ca861948994ff307736089e3b96026c2a4f";
11918 };
11919 }
11920
11921 {
11922 name = "which-module-2.0.0.tgz";
11923 path = fetchurl {
11924 name = "which-module-2.0.0.tgz";
11925 url = "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz";
11926 sha1 = "d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a";
11927 };
11928 }
11929
11930 {
11931 name = "which-1.3.1.tgz";
11932 path = fetchurl {
11933 name = "which-1.3.1.tgz";
11934 url = "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz";
11935 sha1 = "a45043d54f5805316da8d62f9f50918d3da70b0a";
11936 };
11937 }
11938
11939 {
11940 name = "wide-align-1.1.3.tgz";
11941 path = fetchurl {
11942 name = "wide-align-1.1.3.tgz";
11943 url = "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz";
11944 sha1 = "ae074e6bdc0c14a431e804e624549c633b000457";
11945 };
11946 }
11947
11948 {
11949 name = "wordwrap-0.0.3.tgz";
11950 path = fetchurl {
11951 name = "wordwrap-0.0.3.tgz";
11952 url = "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz";
11953 sha1 = "a3d5da6cd5c0bc0008d37234bbaf1bed63059107";
11954 };
11955 }
11956
11957 {
11958 name = "wordwrap-1.0.0.tgz";
11959 path = fetchurl {
11960 name = "wordwrap-1.0.0.tgz";
11961 url = "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz";
11962 sha1 = "27584810891456a4171c8d0226441ade90cbcaeb";
11963 };
11964 }
11965
11966 {
11967 name = "worker-farm-1.6.0.tgz";
11968 path = fetchurl {
11969 name = "worker-farm-1.6.0.tgz";
11970 url = "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.6.0.tgz";
11971 sha1 = "aecc405976fab5a95526180846f0dba288f3a4a0";
11972 };
11973 }
11974
11975 {
11976 name = "wrap-ansi-2.1.0.tgz";
11977 path = fetchurl {
11978 name = "wrap-ansi-2.1.0.tgz";
11979 url = "http://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz";
11980 sha1 = "d8fc3d284dd05794fe84973caecdd1cf824fdd85";
11981 };
11982 }
11983
11984 {
11985 name = "wrappy-1.0.2.tgz";
11986 path = fetchurl {
11987 name = "wrappy-1.0.2.tgz";
11988 url = "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz";
11989 sha1 = "b5243d8f3ec1aa35f1364605bc0d1036e30ab69f";
11990 };
11991 }
11992
11993 {
11994 name = "write-file-atomic-2.3.0.tgz";
11995 path = fetchurl {
11996 name = "write-file-atomic-2.3.0.tgz";
11997 url = "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.3.0.tgz";
11998 sha1 = "1ff61575c2e2a4e8e510d6fa4e243cce183999ab";
11999 };
12000 }
12001
12002 {
12003 name = "write-0.2.1.tgz";
12004 path = fetchurl {
12005 name = "write-0.2.1.tgz";
12006 url = "https://registry.yarnpkg.com/write/-/write-0.2.1.tgz";
12007 sha1 = "5fc03828e264cea3fe91455476f7a3c566cb0757";
12008 };
12009 }
12010
12011 {
12012 name = "ws-4.1.0.tgz";
12013 path = fetchurl {
12014 name = "ws-4.1.0.tgz";
12015 url = "https://registry.yarnpkg.com/ws/-/ws-4.1.0.tgz";
12016 sha1 = "a979b5d7d4da68bf54efe0408967c324869a7289";
12017 };
12018 }
12019
12020 {
12021 name = "ws-5.2.2.tgz";
12022 path = fetchurl {
12023 name = "ws-5.2.2.tgz";
12024 url = "https://registry.yarnpkg.com/ws/-/ws-5.2.2.tgz";
12025 sha1 = "dffef14866b8e8dc9133582514d1befaf96e980f";
12026 };
12027 }
12028
12029 {
12030 name = "xml-name-validator-3.0.0.tgz";
12031 path = fetchurl {
12032 name = "xml-name-validator-3.0.0.tgz";
12033 url = "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz";
12034 sha1 = "6ae73e06de4d8c6e47f9fb181f78d648ad457c6a";
12035 };
12036 }
12037
12038 {
12039 name = "xregexp-4.0.0.tgz";
12040 path = fetchurl {
12041 name = "xregexp-4.0.0.tgz";
12042 url = "https://registry.yarnpkg.com/xregexp/-/xregexp-4.0.0.tgz";
12043 sha1 = "e698189de49dd2a18cc5687b05e17c8e43943020";
12044 };
12045 }
12046
12047 {
12048 name = "xtend-4.0.1.tgz";
12049 path = fetchurl {
12050 name = "xtend-4.0.1.tgz";
12051 url = "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz";
12052 sha1 = "a5c6d532be656e23db820efb943a1f04998d63af";
12053 };
12054 }
12055
12056 {
12057 name = "y18n-3.2.1.tgz";
12058 path = fetchurl {
12059 name = "y18n-3.2.1.tgz";
12060 url = "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz";
12061 sha1 = "6d15fba884c08679c0d77e88e7759e811e07fa41";
12062 };
12063 }
12064
12065 {
12066 name = "y18n-4.0.0.tgz";
12067 path = fetchurl {
12068 name = "y18n-4.0.0.tgz";
12069 url = "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz";
12070 sha1 = "95ef94f85ecc81d007c264e190a120f0a3c8566b";
12071 };
12072 }
12073
12074 {
12075 name = "yallist-2.1.2.tgz";
12076 path = fetchurl {
12077 name = "yallist-2.1.2.tgz";
12078 url = "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz";
12079 sha1 = "1c11f9218f076089a47dd512f93c6699a6a81d52";
12080 };
12081 }
12082
12083 {
12084 name = "yallist-3.0.2.tgz";
12085 path = fetchurl {
12086 name = "yallist-3.0.2.tgz";
12087 url = "https://registry.yarnpkg.com/yallist/-/yallist-3.0.2.tgz";
12088 sha1 = "8452b4bb7e83c7c188d8041c1a837c773d6d8bb9";
12089 };
12090 }
12091
12092 {
12093 name = "yargs-parser-10.1.0.tgz";
12094 path = fetchurl {
12095 name = "yargs-parser-10.1.0.tgz";
12096 url = "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-10.1.0.tgz";
12097 sha1 = "7202265b89f7e9e9f2e5765e0fe735a905edbaa8";
12098 };
12099 }
12100
12101 {
12102 name = "yargs-parser-5.0.0.tgz";
12103 path = fetchurl {
12104 name = "yargs-parser-5.0.0.tgz";
12105 url = "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-5.0.0.tgz";
12106 sha1 = "275ecf0d7ffe05c77e64e7c86e4cd94bf0e1228a";
12107 };
12108 }
12109
12110 {
12111 name = "yargs-parser-7.0.0.tgz";
12112 path = fetchurl {
12113 name = "yargs-parser-7.0.0.tgz";
12114 url = "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-7.0.0.tgz";
12115 sha1 = "8d0ac42f16ea55debd332caf4c4038b3e3f5dfd9";
12116 };
12117 }
12118
12119 {
12120 name = "yargs-parser-9.0.2.tgz";
12121 path = fetchurl {
12122 name = "yargs-parser-9.0.2.tgz";
12123 url = "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-9.0.2.tgz";
12124 sha1 = "9ccf6a43460fe4ed40a9bb68f48d43b8a68cc077";
12125 };
12126 }
12127
12128 {
12129 name = "yargs-12.0.2.tgz";
12130 path = fetchurl {
12131 name = "yargs-12.0.2.tgz";
12132 url = "https://registry.yarnpkg.com/yargs/-/yargs-12.0.2.tgz";
12133 sha1 = "fe58234369392af33ecbef53819171eff0f5aadc";
12134 };
12135 }
12136
12137 {
12138 name = "yargs-11.1.0.tgz";
12139 path = fetchurl {
12140 name = "yargs-11.1.0.tgz";
12141 url = "http://registry.npmjs.org/yargs/-/yargs-11.1.0.tgz";
12142 sha1 = "90b869934ed6e871115ea2ff58b03f4724ed2d77";
12143 };
12144 }
12145
12146 {
12147 name = "yargs-7.1.0.tgz";
12148 path = fetchurl {
12149 name = "yargs-7.1.0.tgz";
12150 url = "https://registry.yarnpkg.com/yargs/-/yargs-7.1.0.tgz";
12151 sha1 = "6ba318eb16961727f5d284f8ea003e8d6154d0c8";
12152 };
12153 }
12154
12155 {
12156 name = "yargs-8.0.2.tgz";
12157 path = fetchurl {
12158 name = "yargs-8.0.2.tgz";
12159 url = "https://registry.yarnpkg.com/yargs/-/yargs-8.0.2.tgz";
12160 sha1 = "6299a9055b1cefc969ff7e79c1d918dceb22c360";
12161 };
12162 }
12163 ];
12164}
diff --git a/virtual/modules/websites/tools/mediagoblin/bower-packages.nix b/virtual/modules/websites/tools/mediagoblin/bower-packages.nix
deleted file mode 100644
index 03af849..0000000
--- a/virtual/modules/websites/tools/mediagoblin/bower-packages.nix
+++ /dev/null
@@ -1,8 +0,0 @@
1# Generated by bower2nix v3.2.0 (https://github.com/rvl/bower2nix)
2{ fetchbower, buildEnv }:
3buildEnv { name = "bower-env"; ignoreCollisions = true; paths = [
4 (fetchbower "jquery" "2.1.4" "~2.1.3" "1ywrpk2xsr6ghkm3j9gfnl9r3jn6xarfamp99b0bcm57kq9fm2k0")
5 (fetchbower "video.js" "4.11.4" "~4.11.4" "05prdvyk0rxbkh7sdd0d9ns5l5crwvc68wzkyqmrdjw367pcv8sn")
6 (fetchbower "leaflet" "0.7.7" "~0.7.3" "0jim285bljmxxngpm3yx6bnnd10n2whwkgmmhzpcd1rdksnr5nca")
7 (fetchbower "tinymce" "4.1.10" "~4.1.7" "16jyvdb9bq8gjwhs69q8p88vdixalajrz81nsmbrzzxhkih57dyx")
8]; }
diff --git a/virtual/modules/websites/tools/mediagoblin/default.nix b/virtual/modules/websites/tools/mediagoblin/default.nix
deleted file mode 100644
index 5f60503..0000000
--- a/virtual/modules/websites/tools/mediagoblin/default.nix
+++ /dev/null
@@ -1,147 +0,0 @@
1{ lib, pkgs, config, myconfig, mylibs, ... }:
2let
3 mediagoblin = pkgs.callPackage ./mediagoblin.nix {
4 inherit (mylibs) fetchedGit fetchedGithub;
5 env = myconfig.env.tools.mediagoblin;
6 };
7
8 cfg = config.services.myWebsites.tools.mediagoblin;
9in {
10 options.services.myWebsites.tools.mediagoblin = {
11 enable = lib.mkEnableOption "enable mediagoblin's website";
12 };
13
14 config = lib.mkIf cfg.enable {
15 ids.uids.mediagoblin = 397;
16 ids.gids.mediagoblin = 397;
17
18 users.users.mediagoblin = {
19 name = "mediagoblin";
20 uid = config.ids.uids.mediagoblin;
21 group = "mediagoblin";
22 description = "Mediagoblin user";
23 home = mediagoblin.varDir;
24 useDefaultShell = true;
25 };
26
27 users.groups.mediagoblin.gid = config.ids.gids.mediagoblin;
28
29 systemd.services.mediagoblin-web = {
30 description = "Mediagoblin service";
31 wantedBy = [ "multi-user.target" ];
32 after = [ "network.target" ];
33
34 environment.SCRIPT_NAME = "/mediagoblin/";
35
36 script = ''
37 exec ./bin/paster serve \
38 ${mediagoblin.pythonRoot}/paste_local.ini \
39 --pid-file=${mediagoblin.socketsDir}/mediagoblin.pid
40 '';
41
42 preStop = ''
43 exec ./bin/paster serve \
44 --pid-file=${mediagoblin.socketsDir}/mediagoblin.pid \
45 ${mediagoblin.pythonRoot}/paste_local.ini stop
46 '';
47 preStart = ''
48 ./bin/gmg dbupdate
49 '';
50
51 serviceConfig = {
52 User = "mediagoblin";
53 PrivateTmp = true;
54 Restart = "always";
55 TimeoutSec = 15;
56 Type = "simple";
57 WorkingDirectory = mediagoblin.pythonRoot;
58 PIDFile = "${mediagoblin.socketsDir}/mediagoblin.pid";
59 };
60
61 unitConfig.RequiresMountsFor = mediagoblin.varDir;
62 };
63
64 systemd.services.mediagoblin-celeryd = {
65 description = "Mediagoblin service";
66 wantedBy = [ "multi-user.target" ];
67 after = [ "network.target" "mediagoblin-web.service" ];
68
69 environment.MEDIAGOBLIN_CONFIG = "${mediagoblin.pythonRoot}/mediagoblin_local.ini";
70 environment.CELERY_CONFIG_MODULE = "mediagoblin.init.celery.from_celery";
71
72 script = ''
73 exec ./bin/celery worker \
74 --logfile=${mediagoblin.varDir}/celery.log \
75 --loglevel=INFO
76 '';
77
78 serviceConfig = {
79 User = "mediagoblin";
80 PrivateTmp = true;
81 Restart = "always";
82 TimeoutSec = 60;
83 Type = "simple";
84 WorkingDirectory = mediagoblin.pythonRoot;
85 PIDFile = "${mediagoblin.socketsDir}/mediagoblin-celeryd.pid";
86 };
87
88 unitConfig.RequiresMountsFor = mediagoblin.varDir;
89 };
90
91 system.activationScripts.mediagoblin = {
92 deps = [ "users" ];
93 text = ''
94 install -m 0755 -o mediagoblin -g mediagoblin -d ${mediagoblin.socketsDir}
95 install -m 0755 -o mediagoblin -g mediagoblin -d ${mediagoblin.varDir}
96 if [ -d ${mediagoblin.varDir}/plugin_static/ ]; then
97 rm ${mediagoblin.varDir}/plugin_static/coreplugin_basic_auth
98 ln -sf ${mediagoblin.pythonRoot}/mediagoblin/plugins/basic_auth/static ${mediagoblin.varDir}/plugin_static/coreplugin_basic_auth
99 fi
100 '';
101 };
102
103 services.myWebsites.tools.modules = [
104 "proxy" "proxy_http" "proxy_balancer"
105 "lbmethod_byrequests" "lbmethod_bytraffic" "lbmethod_bybusyness" "lbmethod_heartbeat"
106 ];
107 users.users.wwwrun.extraGroups = [ "mediagoblin" ];
108 security.acme.certs."eldiron".extraDomains."mgoblin.immae.eu" = null;
109 services.myWebsites.tools.vhostConfs.mgoblin = {
110 certName = "eldiron";
111 hosts = ["mgoblin.immae.eu" ];
112 root = null;
113 extraConfig = [ ''
114 Alias /mgoblin_media ${mediagoblin.varDir}/media/public
115 <Directory ${mediagoblin.varDir}/media/public>
116 Options -Indexes +FollowSymLinks +MultiViews +Includes
117 Require all granted
118 </Directory>
119
120 Alias /theme_static ${mediagoblin.varDir}/theme_static
121 <Directory ${mediagoblin.varDir}/theme_static>
122 Options -Indexes +FollowSymLinks +MultiViews +Includes
123 Require all granted
124 </Directory>
125
126 Alias /plugin_static ${mediagoblin.varDir}/plugin_static
127 <Directory ${mediagoblin.varDir}/plugin_static>
128 Options -Indexes +FollowSymLinks +MultiViews +Includes
129 Require all granted
130 </Directory>
131
132 ProxyPreserveHost on
133 ProxyVia On
134 ProxyRequests Off
135 ProxyPass /mgoblin_media !
136 ProxyPass /theme_static !
137 ProxyPass /plugin_static !
138 ProxyPassMatch ^/.well-known/acme-challenge !
139 ProxyPass / balancer://paster_server/
140 ProxyPassReverse / balancer://paster_server
141 <Proxy balancer://paster_server>
142 BalancerMember unix://${mediagoblin.socketsDir}/mediagoblin.sock|http://
143 </Proxy>
144 '' ];
145 };
146 };
147}
diff --git a/virtual/modules/websites/tools/mediagoblin/ldap_fix.py b/virtual/modules/websites/tools/mediagoblin/ldap_fix.py
deleted file mode 100644
index 10cc375..0000000
--- a/virtual/modules/websites/tools/mediagoblin/ldap_fix.py
+++ /dev/null
@@ -1,93 +0,0 @@
1# GNU MediaGoblin -- federated, autonomous media hosting
2# Copyright (C) 2011, 2012 MediaGoblin contributors. See AUTHORS.
3#
4# This program is free software: you can redistribute it and/or modify
5# it under the terms of the GNU Affero General Public License as published by
6# the Free Software Foundation, either version 3 of the License, or
7# (at your option) any later version.
8#
9# This program is distributed in the hope that it will be useful,
10# but WITHOUT ANY WARRANTY; without even the implied warranty of
11# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12# GNU Affero General Public License for more details.
13#
14# You should have received a copy of the GNU Affero General Public License
15# along with this program. If not, see <http://www.gnu.org/licenses/>.
16from ldap3 import Server, Connection, SUBTREE
17from ldap3.core.exceptions import LDAPException
18import logging
19
20import six
21
22from mediagoblin.tools import pluginapi
23
24_log = logging.getLogger(__name__)
25
26
27class LDAP(object):
28 def __init__(self):
29 self.ldap_settings = pluginapi.get_config('mediagoblin.plugins.ldap')
30
31 def _connect(self, server):
32 _log.info('Connecting to {0}.'.format(server['LDAP_SERVER_URI']))
33 self.server = Server(server['LDAP_SERVER_URI'])
34
35 if 'LDAP_START_TLS' in server and server['LDAP_START_TLS'] == 'true':
36 _log.info('Initiating TLS')
37 self.server.start_tls()
38
39 def _manager_auth(self, settings, username, password):
40 conn = Connection(self.server,
41 settings['LDAP_BIND_DN'],
42 settings['LDAP_BIND_PW'],
43 auto_bind=True)
44 found = conn.search(
45 search_base=settings['LDAP_SEARCH_BASE'],
46 search_filter=settings['LDAP_SEARCH_FILTER'].format(username=username),
47 search_scope=SUBTREE,
48 attributes=[settings['EMAIL_SEARCH_FIELD']])
49 if (not found) or len(conn.entries) > 1:
50 return False, None
51
52 user = conn.entries[0]
53 user_dn = user.entry_dn
54 try:
55 email = user.entry_attributes_as_dict[settings['EMAIL_SEARCH_FIELD']][0]
56 except KeyError:
57 email = None
58
59 Connection(self.server, user_dn, password, auto_bind=True)
60
61 return username, email
62
63 def _direct_auth(self, settings, username, password):
64 user_dn = settings['LDAP_USER_DN_TEMPLATE'].format(username=username)
65 conn = Connection(self.server, user_dn, password, auto_bind=True)
66 email_found = conn.search(
67 search_base=settings['LDAP_SEARCH_BASE'],
68 search_filter='uid={0}'.format(username),
69 search_scope=SUBTREE,
70 attributes=[settings['EMAIL_SEARCH_FIELD']])
71
72 if email_found:
73 try:
74 email = conn.entries[0].entry_attributes_as_dict[settings['EMAIL_SEARCH_FIELD']][0]
75 except KeyError:
76 email = None
77
78 return username, email
79
80 def login(self, username, password):
81 for k, v in six.iteritems(self.ldap_settings):
82 try:
83 self._connect(v)
84
85 if 'LDAP_BIND_DN' in v:
86 return self._manager_auth(v, username, password)
87 else:
88 return self._direct_auth(v, username, password)
89
90 except LDAPException as e:
91 _log.info(e)
92
93 return False, None
diff --git a/virtual/modules/websites/tools/mediagoblin/mediagoblin-plugin-basicsearch.json b/virtual/modules/websites/tools/mediagoblin/mediagoblin-plugin-basicsearch.json
deleted file mode 100644
index 9abd994..0000000
--- a/virtual/modules/websites/tools/mediagoblin/mediagoblin-plugin-basicsearch.json
+++ /dev/null
@@ -1,15 +0,0 @@
1{
2 "tag": "ba0a154-master",
3 "meta": {
4 "name": "mediagoblin-plugin-basicsearch",
5 "url": "https://github.com/ayleph/mediagoblin-basicsearch",
6 "branch": "master"
7 },
8 "github": {
9 "owner": "ayleph",
10 "repo": "mediagoblin-basicsearch",
11 "rev": "ba0a1547bd24ebaf363227fe17644d38c6ce8a6b",
12 "sha256": "0d4r7xkf4gxmgaxlb264l44xbanis77g49frwfhfzsflxmdwgncy",
13 "fetchSubmodules": true
14 }
15}
diff --git a/virtual/modules/websites/tools/mediagoblin/mediagoblin.json b/virtual/modules/websites/tools/mediagoblin/mediagoblin.json
deleted file mode 100644
index 7ea72d1..0000000
--- a/virtual/modules/websites/tools/mediagoblin/mediagoblin.json
+++ /dev/null
@@ -1,14 +0,0 @@
1{
2 "tag": "cd465eb-stable",
3 "meta": {
4 "name": "mediagoblin",
5 "url": "git://git.savannah.gnu.org/mediagoblin.git",
6 "branch": "stable"
7 },
8 "git": {
9 "url": "git://git.savannah.gnu.org/mediagoblin.git",
10 "rev": "cd465ebfec837a75a44c4ebd727dffe2fff6d850",
11 "sha256": "1yz4i4i97z3rxl534a6psaybyjbyp5nnc52v3nvbpzc4pd2s69mx",
12 "fetchSubmodules": true
13 }
14}
diff --git a/virtual/modules/websites/tools/mediagoblin/mediagoblin.nix b/virtual/modules/websites/tools/mediagoblin/mediagoblin.nix
deleted file mode 100644
index cad6225..0000000
--- a/virtual/modules/websites/tools/mediagoblin/mediagoblin.nix
+++ /dev/null
@@ -1,288 +0,0 @@
1{ env, makeWrapper, stdenv, writeText, fetchurl, buildBowerComponents, fetchedGit, fetchedGithub, which, python3, pkgs, automake, autoconf, nodejs, nodePackages, git, cacert }:
2let
3 plugins = {
4 basicsearch = stdenv.mkDerivation (fetchedGithub ./mediagoblin-plugin-basicsearch.json // rec {
5 phases = "unpackPhase installPhase";
6 installPhase = ''
7 cp -R . $out
8 '';
9 });
10 };
11 overridePython = let
12 packageOverrides = self: super: {
13 celery = super.celery.overridePythonAttrs(old: rec {
14 version = "3.1.26.post2";
15 src = self.fetchPypi {
16 inherit version;
17 inherit (old) pname;
18 sha256 = "5493e172ae817b81ba7d09443ada114886765a8ce02f16a56e6fac68d953a9b2";
19 };
20 patches = [];
21 doCheck = false;
22 });
23 billiard = super.billiard.overridePythonAttrs(old: rec {
24 version = "3.3.0.23";
25 src = self.fetchPypi {
26 inherit version;
27 inherit (old) pname;
28 sha256 = "02wxsc6bhqvzh8j6w758kvgqbnj14l796mvmrcms8fgfamd2lak9";
29 };
30 });
31 amqp = super.amqp.overridePythonAttrs(old: rec {
32 version = "1.4.9";
33 src = self.fetchPypi {
34 inherit version;
35 inherit (old) pname;
36 sha256 = "2dea4d16d073c902c3b89d9b96620fb6729ac0f7a923bbc777cb4ad827c0c61a";
37 };
38 });
39 kombu = super.kombu.overridePythonAttrs(old: rec {
40 version = "3.0.37";
41 src = self.fetchPypi {
42 inherit version;
43 inherit (old) pname;
44 sha256 = "e064a00c66b4d1058cd2b0523fb8d98c82c18450244177b6c0f7913016642650";
45 };
46 propagatedBuildInputs = old.propagatedBuildInputs ++ [ self.anyjson ];
47 doCheck = false;
48 });
49 sqlalchemy = super.sqlalchemy.overridePythonAttrs(old: rec {
50 version = "1.1.18";
51 src = self.fetchPypi {
52 inherit version;
53 inherit (old) pname;
54 sha256 = "8b0ec71af9291191ba83a91c03d157b19ab3e7119e27da97932a4773a3f664a9";
55 };
56 });
57 tempita_5_3_dev = super.buildPythonPackage (fetchedGithub ./tempita.json // rec {
58 buildInputs = with self; [ nose ];
59 disabled = false;
60 });
61 sqlalchemy_migrate = super.sqlalchemy_migrate.overridePythonAttrs(old: rec {
62 propagatedBuildInputs = with self; [ pbr tempita_5_3_dev decorator sqlalchemy six sqlparse ];
63 });
64 pasteScript = super.pasteScript.overridePythonAttrs(old: rec {
65 version = "2.0.2";
66 name = "PasteScript-${version}";
67 src = fetchurl {
68 url = "mirror://pypi/P/PasteScript/${name}.tar.gz";
69 sha256 = "1h3nnhn45kf4pbcv669ik4faw04j58k8vbj1hwrc532k0nc28gy0";
70 };
71 propagatedBuildInputs = with self; [ six paste PasteDeploy argparse ];
72 });
73 };
74 in
75 python3.override { inherit packageOverrides; };
76 pythonEnv = python-pkgs: with python-pkgs; [
77 waitress alembic dateutil wtforms pybcrypt
78 pytest pytest_xdist werkzeug celery
79 kombu jinja2 Babel webtest configobj markdown
80 sqlalchemy itsdangerous pytz sphinx six
81 oauthlib unidecode jsonschema PasteDeploy
82 requests PyLD exifread
83 typing pasteScript
84 # For images plugin
85 pillow
86 # For video plugin
87 gst-python
88 # migrations
89 sqlalchemy_migrate
90 # authentication
91 ldap3
92 redis
93 psycopg2
94 ];
95 python = overridePython.withPackages pythonEnv;
96 gmg = writeText "gmg" ''
97 #!${python}/bin/python
98 __requires__ = 'mediagoblin'
99 import sys
100 from pkg_resources import load_entry_point
101
102 if __name__ == '__main__':
103 sys.exit(
104 load_entry_point('mediagoblin', 'console_scripts', 'gmg')()
105 )
106 '';
107in
108 rec {
109 socketsDir = "/run/mediagoblin";
110 varDir = "/var/lib/mediagoblin";
111 bowerComponents = buildBowerComponents {
112 name = "mediagoblin-bower-components";
113 generated = ./bower-packages.nix;
114 src = (fetchedGit ./mediagoblin.json).src;
115 };
116 mediagoblin = stdenv.mkDerivation (fetchedGit ./mediagoblin.json // rec {
117 preConfigure = ''
118 # ./bootstrap.sh
119 aclocal -I m4 --install
120 autoreconf -fvi
121 # end
122 export GIT_SSL_CAINFO=${cacert}/etc/ssl/certs/ca-bundle.crt
123 export SSL_CERT_FILE=${cacert}/etc/ssl/certs/ca-bundle.crt
124 export HOME=$PWD
125 '';
126 configureFlags = [ "--with-python3" "--without-virtualenv" ];
127 postBuild = ''
128 cp -a ${bowerComponents}/bower_components/* extlib
129 chmod -R u+w extlib
130 make extlib
131 '';
132 installPhase = ''
133 sed -i "s/registry.has_key(current_theme_name)/current_theme_name in registry/" mediagoblin/tools/theme.py
134 sed -i -e "s@\[DEFAULT\]@[DEFAULT]\nhere = $out@" mediagoblin/config_spec.ini
135 cp ${./ldap_fix.py} mediagoblin/plugins/ldap/tools.py
136 ln -s ${plugins.basicsearch}/basicsearch mediagoblin/plugins/basicsearch
137 find . -name '*.pyc' -delete
138 find . -type f -exec sed -i "s|$PWD|$out|g" {} \;
139 python setup.py build
140 cp -a . $out
141 mkdir $out/bin
142 cp ${gmg} $out/bin/gmg
143 chmod a+x $out/bin/gmg
144 '';
145 buildInputs = [ makeWrapper git cacert automake autoconf which nodePackages.bower nodejs python ];
146 propagatedBuildInputs = [ python ];
147 });
148 paste_local = writeText "paste_local.ini" ''
149 [DEFAULT]
150 debug = false
151
152 [pipeline:main]
153 pipeline = mediagoblin
154
155 [app:mediagoblin]
156 use = egg:mediagoblin#app
157 config = %(here)s/mediagoblin_local.ini %(here)s/mediagoblin.ini
158 /mgoblin_static = %(here)s/mediagoblin/static
159
160 [loggers]
161 keys = root
162
163 [handlers]
164 keys = console
165
166 [formatters]
167 keys = generic
168
169 [logger_root]
170 level = INFO
171 handlers = console
172
173 [handler_console]
174 class = StreamHandler
175 args = (sys.stderr,)
176 level = NOTSET
177 formatter = generic
178
179 [formatter_generic]
180 format = %(levelname)-7.7s [%(name)s] %(message)s
181
182 [filter:errors]
183 use = egg:mediagoblin#errors
184 debug = false
185
186 [server:main]
187 use = egg:waitress#main
188 unix_socket = ${socketsDir}/mediagoblin.sock
189 unix_socket_perms = 777
190 url_scheme = https
191 '';
192
193 mediagoblin_local = writeText "mediagoblin_local.ini" ''
194 [DEFAULT]
195 data_basedir = "${varDir}"
196
197 [mediagoblin]
198 direct_remote_path = /mgoblin_static/
199 email_sender_address = "mediagoblin@mail.immae.eu"
200
201 #sql_engine = sqlite:///%(data_basedir)s/mediagoblin.db
202 sql_engine = ${env.psql_url}
203
204 email_debug_mode = false
205 allow_registration = false
206 allow_reporting = true
207
208 theme = airymodified
209
210 user_privilege_scheme = "uploader,commenter,reporter"
211
212 # We need to redefine them here since we override data_basedir
213 # cf /usr/share/webapps/mediagoblin/mediagoblin/config_spec.ini
214 workbench_path = %(data_basedir)s/media/workbench
215 crypto_path = %(data_basedir)s/crypto
216 theme_install_dir = %(data_basedir)s/themes/
217 theme_linked_assets_dir = %(data_basedir)s/theme_static/
218 plugin_linked_assets_dir = %(data_basedir)s/plugin_static/
219
220 [storage:queuestore]
221 base_dir = %(data_basedir)s/media/queue
222
223 [storage:publicstore]
224 base_dir = %(data_basedir)s/media/public
225 base_url = /mgoblin_media/
226
227 [celery]
228 CELERY_RESULT_DBURI = ${env.redis_url}
229 BROKER_URL = ${env.redis_url}
230 CELERYD_CONCURRENCY = 1
231
232 [plugins]
233 [[mediagoblin.plugins.geolocation]]
234 [[mediagoblin.plugins.ldap]]
235 [[[immae.eu]]]
236 LDAP_SERVER_URI = 'ldaps://ldap.immae.eu:636'
237 LDAP_SEARCH_BASE = 'dc=immae,dc=eu'
238 LDAP_BIND_DN = 'cn=mediagoblin,ou=services,dc=immae,dc=eu'
239 LDAP_BIND_PW = '${env.ldap.password}'
240 LDAP_SEARCH_FILTER = '(&(memberOf=cn=users,cn=mediagoblin,ou=services,dc=immae,dc=eu)(uid={username}))'
241 EMAIL_SEARCH_FIELD = 'mail'
242 [[mediagoblin.plugins.basicsearch]]
243 [[mediagoblin.plugins.piwigo]]
244 [[mediagoblin.plugins.processing_info]]
245 [[mediagoblin.media_types.image]]
246 [[mediagoblin.media_types.video]]
247 '';
248 pythonRoot =
249 with pkgs.gst_all_1;
250 stdenv.mkDerivation {
251 name = "mediagoblin_immae";
252 inherit mediagoblin;
253 buildInputs= [ makeWrapper ];
254 propagatedBuildInputs = [ gst-libav gst-plugins-good gst-plugins-bad gst-plugins-ugly gstreamer ];
255 builder = let
256 libpaths = [
257 python
258 gstreamer
259 gst-plugins-base
260 gst-libav
261 gst-plugins-good
262 gst-plugins-bad
263 gst-plugins-ugly
264 ];
265 plugin_paths = builtins.concatStringsSep ":" (map (x: "${x}/lib") libpaths);
266 typelib_paths = "${gstreamer}/lib/girepository-1.0:${gst-plugins-base}/lib/girepository-1.0";
267 in writeText "build_mediagoblin_immae" ''
268 source $stdenv/setup
269 cp -a $mediagoblin $out
270 cd $out
271 chmod -R u+rwX .
272 sed -i -e "/from gi.repository import GstPbutils/s/^/gi.require_version('GstPbutils', '1.0')\n/" mediagoblin/media_types/video/transcoders.py
273 wrapProgram bin/gmg --prefix PYTHONPATH : "$out:$PYTHONPATH" \
274 --prefix GST_PLUGIN_SYSTEM_PATH : ${plugin_paths} \
275 --prefix GI_TYPELIB_PATH : ${typelib_paths}
276 makeWrapper ${python}/bin/paster bin/paster --prefix PYTHONPATH : "$out:$PYTHONPATH" \
277 --prefix GST_PLUGIN_SYSTEM_PATH : ${plugin_paths} \
278 --prefix GI_TYPELIB_PATH : ${typelib_paths}
279 makeWrapper ${python}/bin/celery bin/celery --prefix PYTHONPATH : "$out:$PYTHONPATH" \
280 --prefix GST_PLUGIN_SYSTEM_PATH : ${plugin_paths} \
281 --prefix GI_TYPELIB_PATH : ${typelib_paths}
282 find . -type f -exec sed -i "s|$mediagoblin|$out|g" {} \;
283 ln -s ${paste_local} ./paste_local.ini
284 ln -s ${mediagoblin_local} ./mediagoblin_local.ini
285 ln -sf ../../../../../${varDir} ./user_dev
286 '';
287 };
288 }
diff --git a/virtual/modules/websites/tools/mediagoblin/tempita.json b/virtual/modules/websites/tools/mediagoblin/tempita.json
deleted file mode 100644
index 5371e17..0000000
--- a/virtual/modules/websites/tools/mediagoblin/tempita.json
+++ /dev/null
@@ -1,15 +0,0 @@
1{
2 "tag": "47414a7-master",
3 "meta": {
4 "name": "tempita",
5 "url": "https://github.com/gjhiggins/tempita",
6 "branch": "master"
7 },
8 "github": {
9 "owner": "gjhiggins",
10 "repo": "tempita",
11 "rev": "47414a7c6e46a9a9afe78f0bce2ea299fa84d10d",
12 "sha256": "0f33jjjs5rvp7ar2j6ggyfykcrsrn04jaqcq71qfvycf6b7nw3rn",
13 "fetchSubmodules": true
14 }
15}
diff --git a/virtual/modules/websites/tools/tools/default.nix b/virtual/modules/websites/tools/tools/default.nix
deleted file mode 100644
index 333ffb0..0000000
--- a/virtual/modules/websites/tools/tools/default.nix
+++ /dev/null
@@ -1,91 +0,0 @@
1{ lib, pkgs, config, myconfig, mylibs, ... }:
2let
3 adminer = pkgs.callPackage ../../commons/adminer.nix {};
4 ympd = pkgs.callPackage ./ympd.nix {
5 env = myconfig.env.tools.ympd;
6 };
7 ttrss = pkgs.callPackage ./ttrss.nix {
8 inherit (mylibs) fetchedGithub fetchedGit;
9 env = myconfig.env.tools.ttrss;
10 };
11 roundcubemail = pkgs.callPackage ./roundcubemail.nix { env = myconfig.env.tools.roundcubemail; };
12 wallabag = pkgs.callPackage ./wallabag.nix { env = myconfig.env.tools.wallabag; };
13 yourls = pkgs.callPackage ./yourls.nix {
14 inherit (mylibs) fetchedGithub;
15 env = myconfig.env.tools.yourls;
16 };
17 rompr = pkgs.callPackage ./rompr.nix {
18 inherit (mylibs) fetchedGithub;
19 env = myconfig.env.tools.rompr;
20 };
21
22 cfg = config.services.myWebsites.tools.tools;
23in {
24 options.services.myWebsites.tools.tools = {
25 enable = lib.mkEnableOption "enable tools website";
26 };
27
28 config = lib.mkIf cfg.enable {
29 security.acme.certs."eldiron".extraDomains."tools.immae.eu" = null;
30
31 services.myWebsites.tools.modules =
32 adminer.apache.modules
33 ++ ympd.apache.modules
34 ++ ttrss.apache.modules
35 ++ roundcubemail.apache.modules
36 ++ wallabag.apache.modules
37 ++ yourls.apache.modules
38 ++ rompr.apache.modules;
39
40 services.ympd = ympd.config // { enable = true; };
41
42 services.myWebsites.tools.vhostConfs.tools = {
43 certName = "eldiron";
44 hosts = ["tools.immae.eu" ];
45 root = null;
46 extraConfig = [
47 adminer.apache.vhostConf
48 ympd.apache.vhostConf
49 ttrss.apache.vhostConf
50 roundcubemail.apache.vhostConf
51 wallabag.apache.vhostConf
52 yourls.apache.vhostConf
53 rompr.apache.vhostConf
54 ];
55 };
56
57 services.myPhpfpm.poolConfigs = {
58 adminer = adminer.phpFpm.pool;
59 ttrss = ttrss.phpFpm.pool;
60 roundcubemail = roundcubemail.phpFpm.pool;
61 wallabag = wallabag.phpFpm.pool;
62 yourls = yourls.phpFpm.pool;
63 rompr = rompr.phpFpm.pool;
64 };
65
66 system.activationScripts = {
67 ttrss = ttrss.activationScript;
68 roundcubemail = roundcubemail.activationScript;
69 wallabag = wallabag.activationScript;
70 yourls = yourls.activationScript;
71 rompr = rompr.activationScript;
72 };
73
74 systemd.services.tt-rss = {
75 description = "Tiny Tiny RSS feeds update daemon";
76 serviceConfig = {
77 User = "wwwrun";
78 ExecStart = "${pkgs.php}/bin/php ${ttrss.webRoot}/update.php --daemon";
79 StandardOutput = "syslog";
80 StandardError = "syslog";
81 PermissionsStartOnly = true;
82 };
83
84 wantedBy = [ "multi-user.target" ];
85 requires = ["postgresql.service"];
86 after = ["network.target" "postgresql.service"];
87 };
88
89 };
90}
91
diff --git a/virtual/modules/websites/tools/tools/rompr.json b/virtual/modules/websites/tools/tools/rompr.json
deleted file mode 100644
index 778d915..0000000
--- a/virtual/modules/websites/tools/tools/rompr.json
+++ /dev/null
@@ -1,15 +0,0 @@
1{
2 "tag": "1.24",
3 "meta": {
4 "name": "rompr",
5 "url": "https://github.com/fatg3erman/RompR",
6 "branch": "refs/tags/1.24"
7 },
8 "github": {
9 "owner": "fatg3erman",
10 "repo": "RompR",
11 "rev": "0d8f597027ac71b320963fe3f33f461a136312ad",
12 "sha256": "13p3c4whhmvz1vvh9fva5gdx4xji288k108hjdi8b1yn506lzix2",
13 "fetchSubmodules": true
14 }
15}
diff --git a/virtual/modules/websites/tools/tools/rompr.nix b/virtual/modules/websites/tools/tools/rompr.nix
deleted file mode 100644
index 055334e..0000000
--- a/virtual/modules/websites/tools/tools/rompr.nix
+++ /dev/null
@@ -1,86 +0,0 @@
1{ lib, env, stdenv, fetchedGithub }:
2let
3 rompr = let
4 in rec {
5 varDir = "/var/lib/rompr";
6 activationScript = ''
7 install -m 0755 -o ${apache.user} -g ${apache.group} -d ${varDir} \
8 ${varDir}/prefs ${varDir}/albumart ${varDir}/phpSessions
9 '';
10 webRoot = stdenv.mkDerivation (fetchedGithub ./rompr.json // rec {
11 installPhase = ''
12 cp -a . $out
13 ln -sf ../../../../../../${varDir}/prefs $out/prefs
14 ln -sf ../../../../../../${varDir}/albumart $out/albumart
15 '';
16 });
17 apache = {
18 user = "wwwrun";
19 group = "wwwrun";
20 modules = [ "headers" "mime" "proxy_fcgi" ];
21 vhostConf = ''
22 Alias /rompr ${webRoot}
23
24 <Directory ${webRoot}>
25 Options Indexes FollowSymLinks
26 DirectoryIndex index.php
27 AllowOverride all
28 Require all granted
29 Order allow,deny
30 Allow from all
31 ErrorDocument 404 /rompr/404.php
32 AddType image/x-icon .ico
33
34 <FilesMatch "\.php$">
35 SetHandler "proxy:unix:${phpFpm.socket}|fcgi://localhost"
36 </FilesMatch>
37 </Directory>
38
39 <Directory ${webRoot}/albumart/small>
40 Header Set Cache-Control "max-age=0, no-store"
41 Header Set Cache-Control "no-cache, must-revalidate"
42 </Directory>
43
44 <Directory ${webRoot}/albumart/asdownloaded>
45 Header Set Cache-Control "max-age=0, no-store"
46 Header Set Cache-Control "no-cache, must-revalidate"
47 </Directory>
48
49 <LocationMatch "^/rompr">
50 Use LDAPConnect
51 Require ldap-group cn=users,cn=mpd,ou=services,dc=immae,dc=eu
52 Require local
53 </LocationMatch>
54 '';
55 };
56 phpFpm = rec {
57 basedir = builtins.concatStringsSep ":" [ webRoot varDir ];
58 socket = "/var/run/phpfpm/rompr.sock";
59 pool = ''
60 listen = ${socket}
61 user = ${apache.user}
62 group = ${apache.group}
63 listen.owner = ${apache.user}
64 listen.group = ${apache.group}
65 pm = ondemand
66 pm.max_children = 60
67 pm.process_idle_timeout = 60
68
69 ; Needed to avoid clashes in browser cookies (same domain)
70 php_value[session.name] = RomprPHPSESSID
71 php_admin_value[open_basedir] = "${basedir}:/tmp"
72 php_admin_value[session.save_path] = "${varDir}/phpSessions"
73 php_flag[magic_quotes_gpc] = Off
74 php_flag[track_vars] = On
75 php_flag[register_globals] = Off
76 php_admin_flag[allow_url_fopen] = On
77 php_value[include_path] = ${webRoot}
78 php_admin_value[upload_tmp_dir] = "${varDir}/prefs"
79 php_admin_value[post_max_size] = 32M
80 php_admin_value[upload_max_filesize] = 32M
81 php_admin_value[memory_limit] = 256M
82 '';
83 };
84 };
85in
86 rompr
diff --git a/virtual/modules/websites/tools/tools/roundcubemail.nix b/virtual/modules/websites/tools/tools/roundcubemail.nix
deleted file mode 100644
index 877ea8b..0000000
--- a/virtual/modules/websites/tools/tools/roundcubemail.nix
+++ /dev/null
@@ -1,105 +0,0 @@
1{ lib, env, writeText, stdenv, fetchurl }:
2let
3 roundcubemail = let
4 plugins = {};
5 in rec {
6 varDir = "/var/lib/roundcubemail";
7 activationScript = {
8 deps = [ "wrappers" ];
9 text = ''
10 install -m 0755 -o ${apache.user} -g ${apache.group} -d ${varDir} \
11 ${varDir}/cache
12 install -m 0750 -o ${apache.user} -g ${apache.group} -d ${varDir}/phpSessions
13 '';
14 };
15 config = writeText "config.php" ''
16 <?php
17 $config['db_dsnw'] = '${env.psql_url}';
18 $config['default_host'] = 'ssl://mail.immae.eu';
19 $config['imap_conn_options'] = array("ssl" => array("verify_peer" => false));
20 $config['smtp_server'] = 'tls://mail.immae.eu';
21
22 $config['imap_cache'] = 'db';
23 $config['messages_cache'] = 'db';
24
25 $config['support_url'] = ''';
26
27 $config['des_key'] = '${env.secret}';
28
29 $config['plugins'] = array();
30
31 $config['language'] = 'fr_FR';
32
33 $config['drafts_mbox'] = 'Mail/Drafts';
34 $config['junk_mbox'] = 'Mail/Spam';
35 $config['sent_mbox'] = 'Mail/sent';
36 $config['trash_mbox'] = ''';
37 $config['default_folders'] = array('INBOX', 'Mail/Drafts', 'Mail/sent', 'Mail/Spam', ''');
38 $config['draft_autosave'] = 60;
39 $config['enable_installer'] = false;
40 $config['log_driver'] = 'stdout';
41 $config['temp_dir'] = '${varDir}/cache';
42 $config['debug_level'] = 1;
43 '';
44 webRoot = stdenv.mkDerivation rec {
45 version = "1.3.8";
46 name = "roundcubemail-${version}";
47 src= fetchurl {
48 url = "https://github.com/roundcube/roundcubemail/releases/download/${version}/${name}-complete.tar.gz";
49 sha256 = "018djad7ygfl9c9f2l2j42qkg31ml3hs2f01f0dk361zckwk77n4";
50 };
51 buildPhase = ''
52 sed -i \
53 -e "s|RCUBE_INSTALL_PATH . 'temp.*|'${varDir}/cache';|" \
54 config/defaults.inc.php
55 '';
56 installPhase = ''
57 cp -a . $out
58 ln -s ${config} $out/config/config.inc.php
59 ${builtins.concatStringsSep "\n" (
60 lib.attrsets.mapAttrsToList (name: value: "ln -sf ${value} $out/plugins/${name}") plugins
61 )}
62 '';
63 };
64 apache = {
65 user = "wwwrun";
66 group = "wwwrun";
67 modules = [ "proxy_fcgi" ];
68 vhostConf = ''
69 Alias /roundcube "${webRoot}"
70 <Directory "${webRoot}">
71 DirectoryIndex index.php
72 AllowOverride All
73 Options FollowSymlinks
74 Require all granted
75
76 <FilesMatch "\.php$">
77 SetHandler "proxy:unix:${phpFpm.socket}|fcgi://localhost"
78 </FilesMatch>
79 </Directory>
80 '';
81 };
82 phpFpm = rec {
83 basedir = builtins.concatStringsSep ":" (
84 [ webRoot config varDir ]
85 ++ lib.attrsets.mapAttrsToList (name: value: value) plugins);
86 socket = "/var/run/phpfpm/roundcubemail.sock";
87 pool = ''
88 listen = ${socket}
89 user = ${apache.user}
90 group = ${apache.group}
91 listen.owner = ${apache.user}
92 listen.group = ${apache.group}
93 pm = ondemand
94 pm.max_children = 60
95 pm.process_idle_timeout = 60
96
97 ; Needed to avoid clashes in browser cookies (same domain)
98 php_value[session.name] = RoundcubemailPHPSESSID
99 php_admin_value[open_basedir] = "${basedir}:/tmp"
100 php_admin_value[session.save_path] = "${varDir}/phpSessions"
101 '';
102 };
103 };
104in
105 roundcubemail
diff --git a/virtual/modules/websites/tools/tools/tt-rss.json b/virtual/modules/websites/tools/tools/tt-rss.json
deleted file mode 100644
index e2731b0..0000000
--- a/virtual/modules/websites/tools/tools/tt-rss.json
+++ /dev/null
@@ -1,14 +0,0 @@
1{
2 "tag": "986ca25-master",
3 "meta": {
4 "name": "tt-rss",
5 "url": "https://git.tt-rss.org/fox/tt-rss.git",
6 "branch": "master"
7 },
8 "git": {
9 "url": "https://git.tt-rss.org/fox/tt-rss.git",
10 "rev": "986ca251f995f7754a0470d3e0c44538a545081f",
11 "sha256": "0xkafkh7l9zazm5d6snlq03kdfxfhkb4c8fdsb32wn8b9bhdzf5s",
12 "fetchSubmodules": true
13 }
14}
diff --git a/virtual/modules/websites/tools/tools/ttrss-af-feedmod_type_replace.patch b/virtual/modules/websites/tools/tools/ttrss-af-feedmod_type_replace.patch
deleted file mode 100644
index d622577..0000000
--- a/virtual/modules/websites/tools/tools/ttrss-af-feedmod_type_replace.patch
+++ /dev/null
@@ -1,12 +0,0 @@
1--- a/init.php 2014-06-16 14:21:06.995480038 +0200
2+++ b/init.php 2014-06-16 14:22:00.151027654 +0200
3@@ -147,6 +147,9 @@
4 }
5 }
6 break;
7+ case 'replace':
8+ $article['content'] = preg_replace("/".$config['pattern']."/",$config['replacement'],$article['content']);
9+ break;
10
11 default:
12 // unknown type or invalid config
diff --git a/virtual/modules/websites/tools/tools/ttrss-af_feedmod.json b/virtual/modules/websites/tools/tools/ttrss-af_feedmod.json
deleted file mode 100644
index e57fcce..0000000
--- a/virtual/modules/websites/tools/tools/ttrss-af_feedmod.json
+++ /dev/null
@@ -1,15 +0,0 @@
1{
2 "tag": "0ea2092-master",
3 "meta": {
4 "name": "ttrss-af_feedmod",
5 "url": "https://github.com/mbirth/ttrss_plugin-af_feedmod",
6 "branch": "master"
7 },
8 "github": {
9 "owner": "mbirth",
10 "repo": "ttrss_plugin-af_feedmod",
11 "rev": "0ea2092dd34067ecd898802cfca3570023d1ecfe",
12 "sha256": "02ibf47zcrsc2rr45wsix8gxyyf371davj8n8i0gj1zdq95klvnv",
13 "fetchSubmodules": true
14 }
15}
diff --git a/virtual/modules/websites/tools/tools/ttrss-auth-ldap.json b/virtual/modules/websites/tools/tools/ttrss-auth-ldap.json
deleted file mode 100644
index c8aaab5..0000000
--- a/virtual/modules/websites/tools/tools/ttrss-auth-ldap.json
+++ /dev/null
@@ -1,15 +0,0 @@
1{
2 "tag": "4d751b0-master",
3 "meta": {
4 "name": "ttrss-auth-ldap",
5 "url": "https://github.com/hydrian/TTRSS-Auth-LDAP",
6 "branch": "master"
7 },
8 "github": {
9 "owner": "hydrian",
10 "repo": "TTRSS-Auth-LDAP",
11 "rev": "4d751b095c29a8dbe2dc7bb07777742956136e94",
12 "sha256": "0b9fl86acrzpcv41r7pj3bl8b3n72hpkdywzx9zjyfqv5pskxyim",
13 "fetchSubmodules": true
14 }
15}
diff --git a/virtual/modules/websites/tools/tools/ttrss-feediron.json b/virtual/modules/websites/tools/tools/ttrss-feediron.json
deleted file mode 100644
index 5dbec92..0000000
--- a/virtual/modules/websites/tools/tools/ttrss-feediron.json
+++ /dev/null
@@ -1,15 +0,0 @@
1{
2 "tag": "407168c-master",
3 "meta": {
4 "name": "ttrss-feediron",
5 "url": "https://github.com/m42e/ttrss_plugin-feediron",
6 "branch": "master"
7 },
8 "github": {
9 "owner": "m42e",
10 "repo": "ttrss_plugin-feediron",
11 "rev": "407168c628880b5ced572cc549db6d50e866d3c8",
12 "sha256": "17b95ifpcph6m03hjd1mhi8gi1hw9yd3fnffmw66fqr5c9l3zd9r",
13 "fetchSubmodules": true
14 }
15}
diff --git a/virtual/modules/websites/tools/tools/ttrss-feediron_json_reformat.patch b/virtual/modules/websites/tools/tools/ttrss-feediron_json_reformat.patch
deleted file mode 100644
index e1c44d9..0000000
--- a/virtual/modules/websites/tools/tools/ttrss-feediron_json_reformat.patch
+++ /dev/null
@@ -1,18 +0,0 @@
1diff --git a/init.php b/init.php
2index 3c0f2f9..1aad146 100644
3--- a/init.php
4+++ b/init.php
5@@ -600,10 +600,11 @@ class Feediron extends Plugin implements IHandler
6 return false;
7 }
8
9- $this->host->set($this, 'json_conf', Feediron_Json::format($json_conf));
10+ $new_conf = json_encode(json_decode($json_conf), JSON_PRETTY_PRINT);
11+ $this->host->set($this, 'json_conf', $new_conf);
12 $json_reply['success'] = true;
13 $json_reply['message'] = __('Configuration saved.');
14- $json_reply['json_conf'] = Feediron_Json::format($json_conf);
15+ $json_reply['json_conf'] = $new_conf;
16 echo json_encode($json_reply);
17 }
18
diff --git a/virtual/modules/websites/tools/tools/ttrss-ff_instagram.json b/virtual/modules/websites/tools/tools/ttrss-ff_instagram.json
deleted file mode 100644
index 1f241b9..0000000
--- a/virtual/modules/websites/tools/tools/ttrss-ff_instagram.json
+++ /dev/null
@@ -1,15 +0,0 @@
1{
2 "tag": "0366ffb-master",
3 "meta": {
4 "name": "ttrss-ff_instagram",
5 "url": "https://github.com/wltb/ff_instagram",
6 "branch": "master"
7 },
8 "github": {
9 "owner": "wltb",
10 "repo": "ff_instagram",
11 "rev": "0366ffb18c4d490c8fbfba2f5f3367a5af23cfe8",
12 "sha256": "0vvzl6wi6jmrqknsfddvckjgsgfizz1d923d1nyrpzjfn6bda1vk",
13 "fetchSubmodules": true
14 }
15}
diff --git a/virtual/modules/websites/tools/tools/ttrss-tumblr_gdpr_ua.json b/virtual/modules/websites/tools/tools/ttrss-tumblr_gdpr_ua.json
deleted file mode 100644
index eafbcfe..0000000
--- a/virtual/modules/websites/tools/tools/ttrss-tumblr_gdpr_ua.json
+++ /dev/null
@@ -1,15 +0,0 @@
1{
2 "tag": "287c584-master",
3 "meta": {
4 "name": "ttrss-tumblr_gdpr_ua",
5 "url": "https://github.com/hkockerbeck/ttrss-tumblr-gdpr-ua",
6 "branch": "master"
7 },
8 "github": {
9 "owner": "hkockerbeck",
10 "repo": "ttrss-tumblr-gdpr-ua",
11 "rev": "287c584e68845d524f920156bff0b2eaa6f65117",
12 "sha256": "1fviawgcclqky4k4xv1sqzvpb8i74w9f0pclm09m78s8l85wh9py",
13 "fetchSubmodules": true
14 }
15}
diff --git a/virtual/modules/websites/tools/tools/ttrss.nix b/virtual/modules/websites/tools/tools/ttrss.nix
deleted file mode 100644
index 76105be..0000000
--- a/virtual/modules/websites/tools/tools/ttrss.nix
+++ /dev/null
@@ -1,177 +0,0 @@
1{ lib, php, env, writeText, stdenv, fetchedGit, fetchedGithub }:
2let
3 ttrss = let
4 plugins = {
5 auth_ldap = stdenv.mkDerivation (fetchedGithub ./ttrss-auth-ldap.json // rec {
6 installPhase = ''
7 mkdir $out
8 cp plugins/auth_ldap/init.php $out
9 '';
10 });
11 af_feedmod = stdenv.mkDerivation (fetchedGithub ./ttrss-af_feedmod.json // rec {
12 patches = [ ./ttrss-af-feedmod_type_replace.patch ];
13 installPhase = ''
14 mkdir $out
15 cp init.php $out
16 '';
17 });
18 feediron = stdenv.mkDerivation (fetchedGithub ./ttrss-feediron.json // rec {
19 patches = [ ./ttrss-feediron_json_reformat.patch ];
20 installPhase = ''
21 mkdir $out
22 cp -a . $out
23 '';
24 });
25 ff_instagram = stdenv.mkDerivation (fetchedGithub ./ttrss-ff_instagram.json // rec {
26 installPhase = ''
27 mkdir $out
28 cp -a . $out
29 '';
30 });
31 tumblr_gdpr_ua = stdenv.mkDerivation (fetchedGithub ./ttrss-tumblr_gdpr_ua.json // rec {
32 installPhase = ''
33 mkdir $out
34 cp -a . $out
35 '';
36 });
37 };
38 in rec {
39 varDir = "/var/lib/ttrss";
40 activationScript = {
41 deps = [ "wrappers" ];
42 text = ''
43 install -m 0755 -o ${apache.user} -g ${apache.group} -d ${varDir} \
44 ${varDir}/lock ${varDir}/cache ${varDir}/feed-icons
45 install -m 0755 -o ${apache.user} -g ${apache.group} -d ${varDir}/cache/export/ \
46 ${varDir}/cache/feeds/ \
47 ${varDir}/cache/images/ \
48 ${varDir}/cache/js/ \
49 ${varDir}/cache/simplepie/ \
50 ${varDir}/cache/upload/
51 touch ${varDir}/feed-icons/index.html
52 install -m 0750 -o ${apache.user} -g ${apache.group} -d ${varDir}/phpSessions
53 '';
54 };
55 config = writeText "config.php" ''
56 <?php
57
58 define('PHP_EXECUTABLE', '${php}/bin/php');
59
60 define('LOCK_DIRECTORY', 'lock');
61 define('CACHE_DIR', 'cache');
62 define('ICONS_DIR', 'feed-icons');
63 define('ICONS_URL', 'feed-icons');
64 define('SELF_URL_PATH', 'https://tools.immae.eu/ttrss/');
65
66 define('MYSQL_CHARSET', 'UTF8');
67
68 define('DB_TYPE', 'pgsql');
69 define('DB_HOST', 'db-1.immae.eu');
70 define('DB_USER', 'ttrss');
71 define('DB_NAME', 'ttrss');
72 define('DB_PASS', '${env.postgresql.password}');
73 define('DB_PORT', '5432');
74
75 define('AUTH_AUTO_CREATE', true);
76 define('AUTH_AUTO_LOGIN', true);
77
78 define('SINGLE_USER_MODE', false);
79
80 define('SIMPLE_UPDATE_MODE', false);
81 define('CHECK_FOR_UPDATES', true);
82
83 define('FORCE_ARTICLE_PURGE', 0);
84 define('SESSION_COOKIE_LIFETIME', 60*60*24*120);
85 define('ENABLE_GZIP_OUTPUT', false);
86
87 define('PLUGINS', 'auth_ldap, note, instances');
88
89 define('LOG_DESTINATION', ''');
90 define('CONFIG_VERSION', 26);
91
92
93 define('SPHINX_SERVER', 'localhost:9312');
94 define('SPHINX_INDEX', 'ttrss, delta');
95
96 define('ENABLE_REGISTRATION', false);
97 define('REG_NOTIFY_ADDRESS', 'outils@immae.eu');
98 define('REG_MAX_USERS', 10);
99
100 define('SMTP_SERVER', 'mail.immae.eu:25');
101 define('SMTP_LOGIN', ''');
102 define('SMTP_PASSWORD', ''');
103 define('SMTP_SECURE', 'tls');
104
105 define('SMTP_FROM_NAME', 'Tiny Tiny RSS');
106 define('SMTP_FROM_ADDRESS', 'outils@immae.eu');
107 define('DIGEST_SUBJECT', '[tt-rss] New headlines for last 24 hours');
108
109 define('LDAP_AUTH_SERVER_URI', 'ldap://ldap.immae.eu:389/');
110 define('LDAP_AUTH_USETLS', TRUE);
111 define('LDAP_AUTH_ALLOW_UNTRUSTED_CERT', TRUE);
112 define('LDAP_AUTH_BASEDN', 'dc=immae,dc=eu');
113 define('LDAP_AUTH_ANONYMOUSBEFOREBIND', FALSE);
114 define('LDAP_AUTH_SEARCHFILTER', '(&(memberOf=cn=users,cn=ttrss,ou=services,dc=immae,dc=eu)(|(cn=???)(uid=???)(&(uid:dn:=???)(ou=ttrss))))');
115
116 define('LDAP_AUTH_BINDDN', 'cn=ttrss,ou=services,dc=immae,dc=eu');
117 define('LDAP_AUTH_BINDPW', '${env.ldap.password}');
118 define('LDAP_AUTH_LOGIN_ATTRIB', 'immaeTtrssLogin');
119
120 define('LDAP_AUTH_LOG_ATTEMPTS', FALSE);
121 define('LDAP_AUTH_DEBUG', FALSE);
122 '';
123 webRoot = stdenv.mkDerivation (fetchedGit ./tt-rss.json // rec {
124 buildPhase = ''
125 rm -rf lock feed-icons cache
126 ln -sf ../../../../../${varDir}/{lock,feed-icons,cache} .
127 '';
128 installPhase = ''
129 cp -a . $out
130 ln -s ${config} $out/config.php
131 ${builtins.concatStringsSep "\n" (
132 lib.attrsets.mapAttrsToList (name: value: "ln -sf ${value} $out/plugins/${name}") plugins
133 )}
134 '';
135 });
136 apache = {
137 user = "wwwrun";
138 group = "wwwrun";
139 modules = [ "proxy_fcgi" ];
140 vhostConf = ''
141 Alias /ttrss "${webRoot}"
142 <Directory "${webRoot}">
143 DirectoryIndex index.php
144 <FilesMatch "\.php$">
145 SetHandler "proxy:unix:${phpFpm.socket}|fcgi://localhost"
146 </FilesMatch>
147
148 AllowOverride All
149 Options FollowSymlinks
150 Require all granted
151 </Directory>
152 '';
153 };
154 phpFpm = rec {
155 basedir = builtins.concatStringsSep ":" (
156 [ webRoot config varDir ]
157 ++ lib.attrsets.mapAttrsToList (name: value: value) plugins);
158 socket = "/var/run/phpfpm/ttrss.sock";
159 pool = ''
160 listen = ${socket}
161 user = ${apache.user}
162 group = ${apache.group}
163 listen.owner = ${apache.user}
164 listen.group = ${apache.group}
165 pm = ondemand
166 pm.max_children = 60
167 pm.process_idle_timeout = 60
168
169 ; Needed to avoid clashes in browser cookies (same domain)
170 php_value[session.name] = TtrssPHPSESSID
171 php_admin_value[open_basedir] = "${basedir}:/tmp"
172 php_admin_value[session.save_path] = "${varDir}/phpSessions"
173 '';
174 };
175 };
176in
177 ttrss
diff --git a/virtual/modules/websites/tools/tools/wallabag.nix b/virtual/modules/websites/tools/tools/wallabag.nix
deleted file mode 100644
index 4bda808..0000000
--- a/virtual/modules/websites/tools/tools/wallabag.nix
+++ /dev/null
@@ -1,181 +0,0 @@
1{ stdenv, fetchurl, writeText, env, composerEnv, phpPackages, php, which }:
2let
3 wallabag = rec {
4 varDir = "/var/lib/wallabag";
5 parameters = writeText "parameters.yml" ''
6 # This file is auto-generated during the composer install
7 parameters:
8 database_driver: pdo_pgsql
9 database_driver_class: Wallabag\CoreBundle\Doctrine\DBAL\Driver\CustomPostgreSQLDriver
10 database_host: ${env.postgresql.socket}
11 database_port: ${env.postgresql.port}
12 database_name: ${env.postgresql.database}
13 database_user: ${env.postgresql.user}
14 database_password: ${env.postgresql.password}
15 database_path: null
16 database_table_prefix: wallabag_
17 database_socket: null
18 database_charset: utf8
19 domain_name: https://tools.immae.eu/wallabag
20 mailer_transport: smtp
21 mailer_host: mail.immae.eu
22 mailer_user: null
23 mailer_password: null
24 locale: fr
25 secret: ${env.secret}
26 twofactor_auth: true
27 twofactor_sender: wallabag@immae.eu
28 fosuser_registration: false
29 fosuser_confirmation: true
30 from_email: wallabag@immae.eu
31 rss_limit: 50
32 rabbitmq_host: localhost
33 rabbitmq_port: 5672
34 rabbitmq_user: guest
35 rabbitmq_password: guest
36 rabbitmq_prefetch_count: 10
37 redis_scheme: unix
38 redis_host: null
39 redis_port: null
40 redis_path: ${env.redis.socket}
41 redis_password: null
42 sites_credentials: { }
43 ldap_enabled: true
44 ldap_host: ldap.immae.eu
45 ldap_port: 636
46 ldap_tls: false
47 ldap_ssl: true
48 ldap_bind_requires_dn: true
49 ldap_base: 'dc=immae,dc=eu'
50 ldap_manager_dn: 'cn=wallabag,ou=services,dc=immae,dc=eu'
51 ldap_manager_pw: ${env.ldap.password}
52 ldap_filter: '(&(memberOf=cn=users,cn=wallabag,ou=services,dc=immae,dc=eu))'
53 ldap_admin_filter: '(&(memberOf=cn=admins,cn=wallabag,ou=services,dc=immae,dc=eu)(uid=%s))'
54 ldap_username_attribute: uid
55 ldap_email_attribute: mail
56 ldap_name_attribute: cn
57 ldap_enabled_attribute: null
58 '';
59 webappDir = composerEnv.buildPackage rec {
60 packages = {
61 "fr3d/ldap-bundle" = {
62 targetDir = "";
63 src = composerEnv.buildZipPackage {
64 name = "fr3d-ldap-bundle-5a8927c11af45fa06331b97221c6da1a4a237475";
65 src = fetchurl {
66 url = https://api.github.com/repos/Maks3w/FR3DLdapBundle/zipball/5a8927c11af45fa06331b97221c6da1a4a237475;
67 sha256 = "168zkd82j200wd6h0a3lq81g5s2pifg889rv27q2g429nppsbfxc";
68 };
69 };
70 };
71 "zendframework/zend-ldap" = {
72 targetDir = "";
73 src = composerEnv.buildZipPackage {
74 name = "zendframework-zend-ldap-b63c7884a08d3a6bda60ebcf7d6238cf8ad89f49";
75 src = fetchurl {
76 url = https://api.github.com/repos/zendframework/zend-ldap/zipball/b63c7884a08d3a6bda60ebcf7d6238cf8ad89f49;
77 sha256 = "0mn4yqnb5prqhrbbybmw1i2rx7xf4s4wagbdq9qi55fa0vk3jgw9";
78 };
79 };
80 };
81 };
82 noDev = true;
83 doRemoveVendor = false;
84 # Beware when upgrading, I probably messed up with the migrations table
85 # (due to a psql bug in wallabag)
86 version = "2.3.6";
87 name = "wallabag-${version}";
88 src = fetchurl {
89 url = "https://static.wallabag.org/releases/wallabag-release-${version}.tar.gz";
90 sha256 = "0m0dy3r94ks5pfxyb9vbgrsm0vrwdl3jd5wqwg4f5vd107lq90q1";
91 };
92 unpackPhase = ''
93 unpackFile "$src"
94 sourceRoot=${version}
95 src=$PWD/${version}
96 '';
97 patches = [ ./wallabag_ldap.patch ];
98 preInstall = ''
99 export SYMFONY_ENV="prod"
100 '';
101 postInstall = ''
102 rm -rf web/assets var/{cache,logs,sessions} app/config/parameters.yml data
103 ln -sf ${parameters} app/config/parameters.yml
104 ln -sf ../../../../../../${varDir}/var/{cache,logs,sessions} var
105 ln -sf ../../../../../${varDir}/data data
106 ln -sf ../../../../../../${varDir}/assets web/assets
107 '';
108 };
109 activationScript = ''
110 install -m 0755 -o ${apache.user} -g ${apache.group} -d ${varDir} \
111 ${varDir}/var ${varDir}/data/db ${varDir}/assets/images
112 if [ ! -f "${varDir}/currentWebappDir" -o \
113 "${webappDir}" != "$(cat ${varDir}/currentWebappDir 2>/dev/null)" ]; then
114 pushd ${webappDir} > /dev/null
115 $wrapperDir/sudo -u wwwrun ./bin/console --env=prod cache:clear
116 $wrapperDir/sudo -u wwwrun ./bin/console --env=prod doctrine:migrations:migrate --no-interaction
117 popd > /dev/null
118 echo -n "${webappDir}" > ${varDir}/currentWebappDir
119 fi
120 '';
121 webRoot = "${webappDir}/web";
122 # Domain migration: Table wallabag_entry contains whole
123 # https://tools.immae.eu/wallabag domain name in preview_picture
124 apache = {
125 user = "wwwrun";
126 group = "wwwrun";
127 modules = [ "proxy_fcgi" ];
128 vhostConf = ''
129 Alias /wallabag "${webRoot}"
130 <Directory "${webRoot}">
131 AllowOverride None
132 Require all granted
133 # For OAuth (apps)
134 CGIPassAuth On
135
136 <FilesMatch "\.php$">
137 SetHandler "proxy:unix:${phpFpm.socket}|fcgi://localhost"
138 </FilesMatch>
139
140 <IfModule mod_rewrite.c>
141 Options -MultiViews
142 RewriteEngine On
143 RewriteCond %{REQUEST_FILENAME} !-f
144 RewriteRule ^(.*)$ app.php [QSA,L]
145 </IfModule>
146 </Directory>
147 <Directory "${webRoot}/bundles">
148 <IfModule mod_rewrite.c>
149 RewriteEngine Off
150 </IfModule>
151 </Directory>
152 <Directory "${varDir}/assets">
153 AllowOverride None
154 Require all granted
155 </Directory>
156 '';
157 };
158 phpFpm = rec {
159 basedir = builtins.concatStringsSep ":" [ webappDir parameters varDir ];
160 socket = "/var/run/phpfpm/wallabag.sock";
161 pool = ''
162 listen = ${socket}
163 user = ${apache.user}
164 group = ${apache.group}
165 listen.owner = ${apache.user}
166 listen.group = ${apache.group}
167 pm = dynamic
168 pm.max_children = 60
169 pm.start_servers = 2
170 pm.min_spare_servers = 1
171 pm.max_spare_servers = 10
172
173 ; Needed to avoid clashes in browser cookies (same domain)
174 php_value[session.name] = WallabagPHPSESSID
175 php_admin_value[open_basedir] = "${basedir}:/tmp"
176 php_value[max_execution_time] = 300
177 '';
178 };
179 };
180in
181 wallabag
diff --git a/virtual/modules/websites/tools/tools/wallabag_ldap.patch b/virtual/modules/websites/tools/tools/wallabag_ldap.patch
deleted file mode 100644
index 9caf7da..0000000
--- a/virtual/modules/websites/tools/tools/wallabag_ldap.patch
+++ /dev/null
@@ -1,698 +0,0 @@
1diff --git a/.travis.yml b/.travis.yml
2index 04cea258..56b1f576 100644
3--- a/.travis.yml
4+++ b/.travis.yml
5@@ -58,6 +58,7 @@ install:
6
7 before_script:
8 - PHP=$TRAVIS_PHP_VERSION
9+ - echo "extension=ldap.so" >> ~/.phpenv/versions/$(phpenv version-name)/etc/conf.d/travis.ini
10 - if [[ ! $PHP = hhvm* ]]; then echo "memory_limit=-1" >> ~/.phpenv/versions/$(phpenv version-name)/etc/conf.d/travis.ini; fi;
11 # xdebug isn't enable for PHP 7.1
12 - if [[ ! $PHP = hhvm* ]]; then phpenv config-rm xdebug.ini || echo "xdebug not available"; fi
13diff --git a/app/AppKernel.php b/app/AppKernel.php
14index 40726f05..c4f465dc 100644
15--- a/app/AppKernel.php
16+++ b/app/AppKernel.php
17@@ -42,6 +42,10 @@ class AppKernel extends Kernel
18 new OldSound\RabbitMqBundle\OldSoundRabbitMqBundle(),
19 ];
20
21+ if (class_exists('FR3D\\LdapBundle\\FR3DLdapBundle')) {
22+ $bundles[] = new FR3D\LdapBundle\FR3DLdapBundle();
23+ }
24+
25 if (in_array($this->getEnvironment(), ['dev', 'test'], true)) {
26 $bundles[] = new Symfony\Bundle\DebugBundle\DebugBundle();
27 $bundles[] = new Symfony\Bundle\WebProfilerBundle\WebProfilerBundle();
28diff --git a/app/DoctrineMigrations/Version20170710113900.php b/app/DoctrineMigrations/Version20170710113900.php
29new file mode 100644
30index 00000000..7be83110
31--- /dev/null
32+++ b/app/DoctrineMigrations/Version20170710113900.php
33@@ -0,0 +1,54 @@
34+<?php
35+
36+namespace Application\Migrations;
37+
38+use Doctrine\DBAL\Migrations\AbstractMigration;
39+use Doctrine\DBAL\Schema\Schema;
40+use Symfony\Component\DependencyInjection\ContainerAwareInterface;
41+use Symfony\Component\DependencyInjection\ContainerInterface;
42+
43+/**
44+ * Added dn field on wallabag_users
45+ */
46+class Version20170710113900 extends AbstractMigration implements ContainerAwareInterface
47+{
48+ /**
49+ * @var ContainerInterface
50+ */
51+ private $container;
52+
53+ public function setContainer(ContainerInterface $container = null)
54+ {
55+ $this->container = $container;
56+ }
57+
58+ private function getTable($tableName)
59+ {
60+ return $this->container->getParameter('database_table_prefix').$tableName;
61+ }
62+
63+ /**
64+ * @param Schema $schema
65+ */
66+ public function up(Schema $schema)
67+ {
68+ $usersTable = $schema->getTable($this->getTable('user'));
69+
70+ $this->skipIf($usersTable->hasColumn('dn'), 'It seems that you already played this migration.');
71+
72+ $usersTable->addColumn('dn', 'text', [
73+ 'default' => null,
74+ 'notnull' => false,
75+ ]);
76+ }
77+
78+ /**
79+ * @param Schema $schema
80+ */
81+ public function down(Schema $schema)
82+ {
83+ $usersTable = $schema->getTable($this->getTable('user'));
84+ $usersTable->dropColumn('dn');
85+ }
86+}
87+
88diff --git a/app/config/parameters.yml.dist b/app/config/parameters.yml.dist
89index 6b0cb8e8..cfd41b69 100644
90--- a/app/config/parameters.yml.dist
91+++ b/app/config/parameters.yml.dist
92@@ -62,3 +62,23 @@ parameters:
93 redis_port: 6379
94 redis_path: null
95 redis_password: null
96+
97+ # ldap configuration
98+ # To enable, you need to require fr3d/ldap-bundle
99+ ldap_enabled: false
100+ ldap_host: localhost
101+ ldap_port: 389
102+ ldap_tls: false
103+ ldap_ssl: false
104+ ldap_bind_requires_dn: true
105+ ldap_base: dc=example,dc=com
106+ ldap_manager_dn: ou=Manager,dc=example,dc=com
107+ ldap_manager_pw: password
108+ ldap_filter: (&(ObjectClass=Person))
109+ # optional (if null: no ldap user is admin)
110+ ldap_admin_filter: (&(memberOf=ou=admins,dc=example,dc=com)(uid=%s))
111+ ldap_username_attribute: uid
112+ ldap_email_attribute: mail
113+ ldap_name_attribute: cn
114+ # optional (default sets user as enabled unconditionally)
115+ ldap_enabled_attribute: ~
116diff --git a/app/config/security.yml b/app/config/security.yml
117index 02afc9ea..48fbb553 100644
118--- a/app/config/security.yml
119+++ b/app/config/security.yml
120@@ -6,6 +6,7 @@ security:
121 ROLE_ADMIN: ROLE_USER
122 ROLE_SUPER_ADMIN: [ ROLE_USER, ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH ]
123
124+ # /!\ This list is modified in WallabagUserBundle when LDAP is enabled
125 providers:
126 administrators:
127 entity:
128@@ -36,6 +37,7 @@ security:
129 pattern: ^/login$
130 anonymous: ~
131
132+ # /!\ This section is modified in WallabagUserBundle when LDAP is enabled
133 secured_area:
134 pattern: ^/
135 form_login:
136diff --git a/composer.json b/composer.json
137index 68cfad05..32a3d1a4 100644
138--- a/composer.json
139+++ b/composer.json
140@@ -85,7 +85,11 @@
141 "friendsofsymfony/jsrouting-bundle": "^1.6.3",
142 "bdunogier/guzzle-site-authenticator": "^1.0.0",
143 "defuse/php-encryption": "^2.1",
144- "html2text/html2text": "^4.1"
145+ "html2text/html2text": "^4.1",
146+ "fr3d/ldap-bundle": "^3.0"
147+ },
148+ "suggest": {
149+ "fr3d/ldap-bundle": "If you want to authenticate via LDAP"
150 },
151 "require-dev": {
152 "doctrine/doctrine-fixtures-bundle": "~2.2",
153diff --git a/composer.lock b/composer.lock
154index 251ee081..37795e0b 100644
155--- a/composer.lock
156+++ b/composer.lock
157@@ -4,7 +4,7 @@
158 "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
159 "This file is @generated automatically"
160 ],
161- "content-hash": "d2a0bd8408dccdeb7a7455996519829b",
162+ "content-hash": "4699d166d03a8e5f70d802d0bc3e6a20",
163 "packages": [
164 {
165 "name": "bdunogier/guzzle-site-authenticator",
166@@ -1346,6 +1346,65 @@
167 ],
168 "time": "2018-12-14T19:44:53+00:00"
169 },
170+ {
171+ "name": "fr3d/ldap-bundle",
172+ "version": "v3.0.0",
173+ "source": {
174+ "type": "git",
175+ "url": "https://github.com/Maks3w/FR3DLdapBundle.git",
176+ "reference": "5a8927c11af45fa06331b97221c6da1a4a237475"
177+ },
178+ "dist": {
179+ "type": "zip",
180+ "url": "https://api.github.com/repos/Maks3w/FR3DLdapBundle/zipball/5a8927c11af45fa06331b97221c6da1a4a237475",
181+ "reference": "5a8927c11af45fa06331b97221c6da1a4a237475",
182+ "shasum": ""
183+ },
184+ "require": {
185+ "php": ">=5.5",
186+ "psr/log": "~1.0",
187+ "symfony/config": "2.3 - 3",
188+ "symfony/dependency-injection": "2.3 - 3",
189+ "symfony/polyfill-php56": "^1.1",
190+ "symfony/security": "2.3 - 3",
191+ "symfony/security-bundle": "2.3 - 3",
192+ "zendframework/zend-ldap": "2.5 - 3"
193+ },
194+ "require-dev": {
195+ "fabpot/php-cs-fixer": "1.11.*",
196+ "fr3d/psr3-message-assertions": "0.1.*",
197+ "friendsofsymfony/user-bundle": "~1.3",
198+ "maks3w/phpunit-methods-trait": "^4.6",
199+ "phpunit/phpunit": "^4.6",
200+ "symfony/validator": "2.3 - 3"
201+ },
202+ "suggest": {
203+ "friendsofsymfony/user-bundle": "Integrate authentication and management for DB users, useful for unmanned LDAP servers",
204+ "symfony/validator": "Allow pre-validate for existing users before register new ones"
205+ },
206+ "type": "symfony-bundle",
207+ "autoload": {
208+ "psr-4": {
209+ "FR3D\\LdapBundle\\": ""
210+ }
211+ },
212+ "notification-url": "https://packagist.org/downloads/",
213+ "license": [
214+ "MIT"
215+ ],
216+ "authors": [
217+ {
218+ "name": "Maks3w"
219+ }
220+ ],
221+ "description": "This package provide users and authentication services based on LDAP directories for Symfony2 framework",
222+ "homepage": "https://github.com/Maks3w/FR3DLdapBundle",
223+ "keywords": [
224+ "Authentication",
225+ "ldap"
226+ ],
227+ "time": "2016-02-12T17:45:14+00:00"
228+ },
229 {
230 "name": "friendsofsymfony/jsrouting-bundle",
231 "version": "1.6.3",
232@@ -7027,6 +7086,59 @@
233 "zf2"
234 ],
235 "time": "2018-04-25T15:33:34+00:00"
236+ },
237+ {
238+ "name": "zendframework/zend-ldap",
239+ "version": "2.10.0",
240+ "source": {
241+ "type": "git",
242+ "url": "https://github.com/zendframework/zend-ldap.git",
243+ "reference": "b63c7884a08d3a6bda60ebcf7d6238cf8ad89f49"
244+ },
245+ "dist": {
246+ "type": "zip",
247+ "url": "https://api.github.com/repos/zendframework/zend-ldap/zipball/b63c7884a08d3a6bda60ebcf7d6238cf8ad89f49",
248+ "reference": "b63c7884a08d3a6bda60ebcf7d6238cf8ad89f49",
249+ "shasum": ""
250+ },
251+ "require": {
252+ "ext-ldap": "*",
253+ "php": "^5.6 || ^7.0"
254+ },
255+ "require-dev": {
256+ "php-mock/php-mock-phpunit": "^1.1.2 || ^2.1.1",
257+ "phpunit/phpunit": "^5.7.27 || ^6.5.8 || ^7.1.2",
258+ "zendframework/zend-coding-standard": "~1.0.0",
259+ "zendframework/zend-config": "^2.5",
260+ "zendframework/zend-eventmanager": "^2.6.3 || ^3.0.1",
261+ "zendframework/zend-stdlib": "^2.7 || ^3.0"
262+ },
263+ "suggest": {
264+ "zendframework/zend-eventmanager": "Zend\\EventManager component"
265+ },
266+ "type": "library",
267+ "extra": {
268+ "branch-alias": {
269+ "dev-master": "2.10.x-dev",
270+ "dev-develop": "2.11.x-dev"
271+ }
272+ },
273+ "autoload": {
274+ "psr-4": {
275+ "Zend\\Ldap\\": "src/"
276+ }
277+ },
278+ "notification-url": "https://packagist.org/downloads/",
279+ "license": [
280+ "BSD-3-Clause"
281+ ],
282+ "description": "Provides support for LDAP operations including but not limited to binding, searching and modifying entries in an LDAP directory",
283+ "keywords": [
284+ "ZendFramework",
285+ "ldap",
286+ "zf"
287+ ],
288+ "time": "2018-07-05T05:05:12+00:00"
289 }
290 ],
291 "packages-dev": [
292@@ -7561,12 +7673,12 @@
293 "source": {
294 "type": "git",
295 "url": "https://github.com/symfony/phpunit-bridge.git",
296- "reference": "5dab0d4b2ac99ab22b447b615fdfdc10ec4af3d5"
297+ "reference": "d61ec438634e0f234c6bda1c6ee97016bbb0e7a1"
298 },
299 "dist": {
300 "type": "zip",
301- "url": "https://api.github.com/repos/symfony/phpunit-bridge/zipball/5dab0d4b2ac99ab22b447b615fdfdc10ec4af3d5",
302- "reference": "5dab0d4b2ac99ab22b447b615fdfdc10ec4af3d5",
303+ "url": "https://api.github.com/repos/symfony/phpunit-bridge/zipball/d61ec438634e0f234c6bda1c6ee97016bbb0e7a1",
304+ "reference": "d61ec438634e0f234c6bda1c6ee97016bbb0e7a1",
305 "shasum": ""
306 },
307 "require": {
308@@ -7619,7 +7731,7 @@
309 ],
310 "description": "Symfony PHPUnit Bridge",
311 "homepage": "https://symfony.com",
312- "time": "2019-01-01T13:45:19+00:00"
313+ "time": "2019-01-16T13:27:11+00:00"
314 },
315 {
316 "name": "symfony/polyfill-php72",
317diff --git a/scripts/install.sh b/scripts/install.sh
318index 8b7ea03f..3a4a33ab 100755
319--- a/scripts/install.sh
320+++ b/scripts/install.sh
321@@ -26,5 +26,8 @@ ENV=$1
322 TAG=$(git describe --tags $(git rev-list --tags --max-count=1))
323
324 git checkout $TAG
325+if [ -n "$LDAP_ENABLED" ]; then
326+ SYMFONY_ENV=$ENV $COMPOSER_COMMAND require --no-update fr3d/ldap-bundle
327+fi
328 SYMFONY_ENV=$ENV $COMPOSER_COMMAND install --no-dev -o --prefer-dist
329 php bin/console wallabag:install --env=$ENV
330diff --git a/scripts/update.sh b/scripts/update.sh
331index c62d104a..6259a431 100755
332--- a/scripts/update.sh
333+++ b/scripts/update.sh
334@@ -32,6 +32,9 @@ git fetch origin
335 git fetch --tags
336 TAG=$(git describe --tags $(git rev-list --tags --max-count=1))
337 git checkout $TAG --force
338+if [ -n "$LDAP_ENABLED" ]; then
339+ SYMFONY_ENV=$ENV $COMPOSER_COMMAND require --no-update fr3d/ldap-bundle
340+fi
341 SYMFONY_ENV=$ENV $COMPOSER_COMMAND install --no-dev -o --prefer-dist
342 php bin/console doctrine:migrations:migrate --no-interaction --env=$ENV
343 php bin/console cache:clear --env=$ENV
344diff --git a/src/Wallabag/UserBundle/DependencyInjection/WallabagUserExtension.php b/src/Wallabag/UserBundle/DependencyInjection/WallabagUserExtension.php
345index 5ca3482e..904a6af1 100644
346--- a/src/Wallabag/UserBundle/DependencyInjection/WallabagUserExtension.php
347+++ b/src/Wallabag/UserBundle/DependencyInjection/WallabagUserExtension.php
348@@ -6,9 +6,34 @@ use Symfony\Component\Config\FileLocator;
349 use Symfony\Component\DependencyInjection\ContainerBuilder;
350 use Symfony\Component\DependencyInjection\Loader;
351 use Symfony\Component\HttpKernel\DependencyInjection\Extension;
352+use Symfony\Component\DependencyInjection\Extension\PrependExtensionInterface;
353
354-class WallabagUserExtension extends Extension
355+class WallabagUserExtension extends Extension implements PrependExtensionInterface
356 {
357+ public function prepend(ContainerBuilder $container)
358+ {
359+ $ldap = $container->getParameter('ldap_enabled');
360+
361+ if ($ldap) {
362+ $container->prependExtensionConfig('security', array(
363+ 'providers' => array(
364+ 'chain_provider' => array(),
365+ ),
366+ ));
367+ $loader = new Loader\YamlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config'));
368+ $loader->load('ldap.yml');
369+ } elseif ($container->hasExtension('fr3d_ldap')) {
370+ $container->prependExtensionConfig('fr3_d_ldap', array(
371+ 'driver' => array(
372+ 'host' => 'localhost',
373+ ),
374+ 'user' => array(
375+ 'baseDn' => 'dc=example,dc=com',
376+ ),
377+ ));
378+ }
379+ }
380+
381 public function load(array $configs, ContainerBuilder $container)
382 {
383 $configuration = new Configuration();
384@@ -16,6 +41,9 @@ class WallabagUserExtension extends Extension
385
386 $loader = new Loader\YamlFileLoader($container, new FileLocator(__DIR__ . '/../Resources/config'));
387 $loader->load('services.yml');
388+ if ($container->getParameter('ldap_enabled')) {
389+ $loader->load('ldap_services.yml');
390+ }
391 $container->setParameter('wallabag_user.registration_enabled', $config['registration_enabled']);
392 }
393
394diff --git a/src/Wallabag/UserBundle/Entity/User.php b/src/Wallabag/UserBundle/Entity/User.php
395index 48446e3c..f93c59c7 100644
396--- a/src/Wallabag/UserBundle/Entity/User.php
397+++ b/src/Wallabag/UserBundle/Entity/User.php
398@@ -1,5 +1,15 @@
399 <?php
400
401+// This permits to have the LdapUserInterface even when fr3d/ldap-bundle is not
402+// in the packages
403+namespace FR3D\LdapBundle\Model;
404+
405+interface LdapUserInterface
406+{
407+ public function setDn($dn);
408+ public function getDn();
409+}
410+
411 namespace Wallabag\UserBundle\Entity;
412
413 use Doctrine\Common\Collections\ArrayCollection;
414@@ -16,6 +26,7 @@ use Wallabag\ApiBundle\Entity\Client;
415 use Wallabag\CoreBundle\Entity\Config;
416 use Wallabag\CoreBundle\Entity\Entry;
417 use Wallabag\CoreBundle\Helper\EntityTimestampsTrait;
418+use FR3D\LdapBundle\Model\LdapUserInterface;
419
420 /**
421 * User.
422@@ -28,7 +39,7 @@ use Wallabag\CoreBundle\Helper\EntityTimestampsTrait;
423 * @UniqueEntity("email")
424 * @UniqueEntity("username")
425 */
426-class User extends BaseUser implements TwoFactorInterface, TrustedComputerInterface
427+class User extends BaseUser implements TwoFactorInterface, TrustedComputerInterface, LdapUserInterface
428 {
429 use EntityTimestampsTrait;
430
431@@ -67,6 +78,13 @@ class User extends BaseUser implements TwoFactorInterface, TrustedComputerInterf
432 */
433 protected $email;
434
435+ /**
436+ * @var string
437+ *
438+ * @ORM\Column(name="dn", type="text", nullable=true)
439+ */
440+ protected $dn;
441+
442 /**
443 * @var \DateTime
444 *
445@@ -309,4 +327,33 @@ class User extends BaseUser implements TwoFactorInterface, TrustedComputerInterf
446 return $this->clients->first();
447 }
448 }
449+
450+ /**
451+ * Set dn.
452+ *
453+ * @param string $dn
454+ *
455+ * @return User
456+ */
457+ public function setDn($dn)
458+ {
459+ $this->dn = $dn;
460+
461+ return $this;
462+ }
463+
464+ /**
465+ * Get dn.
466+ *
467+ * @return string
468+ */
469+ public function getDn()
470+ {
471+ return $this->dn;
472+ }
473+
474+ public function isLdapUser()
475+ {
476+ return $this->dn !== null;
477+ }
478 }
479diff --git a/src/Wallabag/UserBundle/LdapHydrator.php b/src/Wallabag/UserBundle/LdapHydrator.php
480new file mode 100644
481index 00000000..cea2450f
482--- /dev/null
483+++ b/src/Wallabag/UserBundle/LdapHydrator.php
484@@ -0,0 +1,103 @@
485+<?php
486+
487+namespace Wallabag\UserBundle;
488+
489+use FR3D\LdapBundle\Hydrator\HydratorInterface;
490+use FOS\UserBundle\FOSUserEvents;
491+use FOS\UserBundle\Event\UserEvent;
492+
493+class LdapHydrator implements HydratorInterface
494+{
495+ private $userManager;
496+ private $eventDispatcher;
497+ private $attributesMap;
498+ private $enabledAttribute;
499+ private $ldapBaseDn;
500+ private $ldapAdminFilter;
501+ private $ldapDriver;
502+
503+ public function __construct(
504+ $user_manager,
505+ $event_dispatcher,
506+ array $attributes_map,
507+ $ldap_base_dn,
508+ $ldap_admin_filter,
509+ $ldap_driver
510+ ) {
511+ $this->userManager = $user_manager;
512+ $this->eventDispatcher = $event_dispatcher;
513+
514+ $this->attributesMap = array(
515+ 'setUsername' => $attributes_map[0],
516+ 'setEmail' => $attributes_map[1],
517+ 'setName' => $attributes_map[2],
518+ );
519+ $this->enabledAttribute = $attributes_map[3];
520+
521+ $this->ldapBaseDn = $ldap_base_dn;
522+ $this->ldapAdminFilter = $ldap_admin_filter;
523+ $this->ldapDriver = $ldap_driver;
524+ }
525+
526+ public function hydrate(array $ldapEntry)
527+ {
528+ $user = $this->userManager->findUserBy(array('dn' => $ldapEntry['dn']));
529+
530+ if (!$user) {
531+ $user = $this->userManager->createUser();
532+ $user->setDn($ldapEntry['dn']);
533+ $user->setPassword('');
534+ $user->setSalt('');
535+ $this->updateUserFields($user, $ldapEntry);
536+
537+ $event = new UserEvent($user);
538+ $this->eventDispatcher->dispatch(FOSUserEvents::USER_CREATED, $event);
539+
540+ $this->userManager->reloadUser($user);
541+ } else {
542+ $this->updateUserFields($user, $ldapEntry);
543+ }
544+
545+ return $user;
546+ }
547+
548+ private function updateUserFields($user, $ldapEntry)
549+ {
550+ foreach ($this->attributesMap as $key => $value) {
551+ if (is_array($ldapEntry[$value])) {
552+ $ldap_value = $ldapEntry[$value][0];
553+ } else {
554+ $ldap_value = $ldapEntry[$value];
555+ }
556+
557+ call_user_func([$user, $key], $ldap_value);
558+ }
559+
560+ if ($this->enabledAttribute !== null) {
561+ $user->setEnabled($ldapEntry[$this->enabledAttribute]);
562+ } else {
563+ $user->setEnabled(true);
564+ }
565+
566+ if ($this->isAdmin($user)) {
567+ $user->addRole('ROLE_SUPER_ADMIN');
568+ } else {
569+ $user->removeRole('ROLE_SUPER_ADMIN');
570+ }
571+
572+ $this->userManager->updateUser($user, true);
573+ }
574+
575+ private function isAdmin($user)
576+ {
577+ if ($this->ldapAdminFilter === null) {
578+ return false;
579+ }
580+
581+ $escaped_username = ldap_escape($user->getUsername(), '', LDAP_ESCAPE_FILTER);
582+ $filter = sprintf($this->ldapAdminFilter, $escaped_username);
583+ $entries = $this->ldapDriver->search($this->ldapBaseDn, $filter);
584+
585+ return $entries['count'] == 1;
586+ }
587+}
588diff --git a/src/Wallabag/UserBundle/OAuthStorageLdapWrapper.php b/src/Wallabag/UserBundle/OAuthStorageLdapWrapper.php
589new file mode 100644
590index 00000000..8a851f12
591--- /dev/null
592+++ b/src/Wallabag/UserBundle/OAuthStorageLdapWrapper.php
593@@ -0,0 +1,43 @@
594+<?php
595+
596+namespace Wallabag\UserBundle;
597+
598+use FOS\OAuthServerBundle\Storage\OAuthStorage;
599+use OAuth2\Model\IOAuth2Client;
600+use Symfony\Component\Security\Core\Exception\AuthenticationException;
601+
602+class OAuthStorageLdapWrapper extends OAuthStorage
603+{
604+ private $ldapManager;
605+
606+ public function setLdapManager($ldap_manager)
607+ {
608+ $this->ldapManager = $ldap_manager;
609+ }
610+
611+ public function checkUserCredentials(IOAuth2Client $client, $username, $password)
612+ {
613+ try {
614+ $user = $this->userProvider->loadUserByUsername($username);
615+ } catch (AuthenticationException $e) {
616+ return false;
617+ }
618+
619+ if ($user->isLdapUser()) {
620+ return $this->checkLdapUserCredentials($user, $password);
621+ } else {
622+ return parent::checkUserCredentials($client, $username, $password);
623+ }
624+ }
625+
626+ private function checkLdapUserCredentials($user, $password)
627+ {
628+ if ($this->ldapManager->bind($user, $password)) {
629+ return array(
630+ 'data' => $user,
631+ );
632+ } else {
633+ return false;
634+ }
635+ }
636+}
637diff --git a/src/Wallabag/UserBundle/Resources/config/ldap.yml b/src/Wallabag/UserBundle/Resources/config/ldap.yml
638new file mode 100644
639index 00000000..5ec16088
640--- /dev/null
641+++ b/src/Wallabag/UserBundle/Resources/config/ldap.yml
642@@ -0,0 +1,28 @@
643+fr3d_ldap:
644+ service:
645+ user_hydrator: ldap_user_hydrator
646+ driver:
647+ host: "%ldap_host%"
648+ port: "%ldap_port%"
649+ useSsl: "%ldap_ssl%"
650+ useStartTls: "%ldap_tls%"
651+ bindRequiresDn: "%ldap_bind_requires_dn%"
652+ username: "%ldap_manager_dn%"
653+ password: "%ldap_manager_pw%"
654+ user:
655+ baseDn: "%ldap_base%"
656+ filter: "%ldap_filter%"
657+ usernameAttribute: "%ldap_username_attribute%"
658+security:
659+ providers:
660+ chain_provider:
661+ chain:
662+ providers: [ fr3d_ldapbundle, fos_userbundle ]
663+ fr3d_ldapbundle:
664+ id: fr3d_ldap.security.user.provider
665+ firewalls:
666+ secured_area:
667+ fr3d_ldap: ~
668+ form_login:
669+ provider: chain_provider
670+
671diff --git a/src/Wallabag/UserBundle/Resources/config/ldap_services.yml b/src/Wallabag/UserBundle/Resources/config/ldap_services.yml
672new file mode 100644
673index 00000000..b3e3fd8a
674--- /dev/null
675+++ b/src/Wallabag/UserBundle/Resources/config/ldap_services.yml
676@@ -0,0 +1,22 @@
677+services:
678+ fos_oauth_server.server:
679+ class: OAuth2\OAuth2
680+ arguments:
681+ - "@oauth_storage_ldap_wrapper"
682+ - "%fos_oauth_server.server.options%"
683+ oauth_storage_ldap_wrapper:
684+ class: Wallabag\UserBundle\OAuthStorageLdapWrapper
685+ parent: fos_oauth_server.storage
686+ calls:
687+ - [setLdapManager, ["@fr3d_ldap.ldap_manager"]]
688+
689+ ldap_user_hydrator:
690+ class: Wallabag\UserBundle\LdapHydrator
691+ arguments:
692+ - "@fos_user.user_manager"
693+ - "@event_dispatcher"
694+ - [ "%ldap_username_attribute%", "%ldap_email_attribute%", "%ldap_name_attribute%", "%ldap_enabled_attribute%" ]
695+ - "%ldap_base%"
696+ - "%ldap_admin_filter%"
697+ - "@fr3d_ldap.ldap_driver"
698+
diff --git a/virtual/modules/websites/tools/tools/ympd.nix b/virtual/modules/websites/tools/tools/ympd.nix
deleted file mode 100644
index 5744360..0000000
--- a/virtual/modules/websites/tools/tools/ympd.nix
+++ /dev/null
@@ -1,32 +0,0 @@
1{ env }:
2let
3 ympd = rec {
4 config = {
5 webPort = "localhost:${env.listenPort}";
6 mpd = env.mpd;
7 };
8 apache = {
9 modules = [
10 "proxy_wstunnel"
11 ];
12 vhostConf = ''
13 <LocationMatch "^/mpd">
14 Use LDAPConnect
15 Require ldap-group cn=users,cn=mpd,ou=services,dc=immae,dc=eu
16 Require local
17 </LocationMatch>
18
19 RedirectMatch permanent "^/mpd$" "/mpd/"
20 <Location "/mpd/">
21 ProxyPass http://${config.webPort}/
22 ProxyPassReverse http://${config.webPort}/
23 ProxyPreserveHost on
24 </Location>
25 <Location "/mpd/ws">
26 ProxyPass ws://${config.webPort}/ws
27 </Location>
28 '';
29 };
30 };
31in
32 ympd
diff --git a/virtual/modules/websites/tools/tools/yourls-ldap-plugin.json b/virtual/modules/websites/tools/tools/yourls-ldap-plugin.json
deleted file mode 100644
index 9411e4a..0000000
--- a/virtual/modules/websites/tools/tools/yourls-ldap-plugin.json
+++ /dev/null
@@ -1,15 +0,0 @@
1{
2 "tag": "2a3cb03-master",
3 "meta": {
4 "name": "yourls-ldap-plugin",
5 "url": "https://github.com/k3a/yourls-ldap-plugin",
6 "branch": "master"
7 },
8 "github": {
9 "owner": "k3a",
10 "repo": "yourls-ldap-plugin",
11 "rev": "2a3cb0334b8a6b81b284a7196e614bbd2b2b1615",
12 "sha256": "0cchbnli77d295lzf7kjmn4dcxj2bmdqa9qc3f8l8qgmp4n5n0gh",
13 "fetchSubmodules": true
14 }
15}
diff --git a/virtual/modules/websites/tools/tools/yourls.json b/virtual/modules/websites/tools/tools/yourls.json
deleted file mode 100644
index 0a79b18..0000000
--- a/virtual/modules/websites/tools/tools/yourls.json
+++ /dev/null
@@ -1,15 +0,0 @@
1{
2 "tag": "1.7.3",
3 "meta": {
4 "name": "yourls",
5 "url": "https://github.com/YOURLS/YOURLS",
6 "branch": "refs/tags/1.7.3"
7 },
8 "github": {
9 "owner": "YOURLS",
10 "repo": "YOURLS",
11 "rev": "077018822d3594229daa8343310d0b40804b9ddc",
12 "sha256": "1av6h619rwqn0yn0kjn2s2h3gmrhmxaaa9hd5ns4ralxgg731imd",
13 "fetchSubmodules": true
14 }
15}
diff --git a/virtual/modules/websites/tools/tools/yourls.nix b/virtual/modules/websites/tools/tools/yourls.nix
deleted file mode 100644
index b97dac9..0000000
--- a/virtual/modules/websites/tools/tools/yourls.nix
+++ /dev/null
@@ -1,102 +0,0 @@
1{ lib, env, writeText, stdenv, fetchedGithub }:
2let
3 yourls = let
4 plugins = {
5 ldap = stdenv.mkDerivation (fetchedGithub ./yourls-ldap-plugin.json // rec {
6 installPhase = ''
7 mkdir -p $out
8 cp plugin.php $out/
9 '';
10 });
11 };
12 in rec {
13 activationScript = ''
14 install -m 0755 -o ${apache.user} -g ${apache.group} -d /var/lib/php/sessions/yourls
15 '';
16 config = writeText "config.php" ''
17 <?php
18 define( 'YOURLS_DB_USER', '${env.mysql.user}' );
19 define( 'YOURLS_DB_PASS', '${env.mysql.password}' );
20 define( 'YOURLS_DB_NAME', '${env.mysql.database}' );
21 define( 'YOURLS_DB_HOST', 'db-1.immae.eu' );
22 define( 'YOURLS_DB_PREFIX', 'yourls_' );
23 define( 'YOURLS_SITE', 'http://tools.immae.eu/url' );
24 define( 'YOURLS_HOURS_OFFSET', 0 );
25 define( 'YOURLS_LANG', ''' );
26 define( 'YOURLS_UNIQUE_URLS', true );
27 define( 'YOURLS_PRIVATE', true );
28 define( 'YOURLS_COOKIEKEY', '${env.cookieKey}' );
29 $yourls_user_passwords = array();
30 define( 'YOURLS_DEBUG', false );
31 define( 'YOURLS_URL_CONVERT', 36 );
32 $yourls_reserved_URL = array();
33 define( 'LDAPAUTH_HOST', 'ldaps://ldap.immae.eu' );
34 define( 'LDAPAUTH_PORT', '636' );
35 define( 'LDAPAUTH_BASE', 'dc=immae,dc=eu' );
36 define( 'LDAPAUTH_SEARCH_USER', 'cn=yourls,ou=services,dc=immae,dc=eu' );
37 define( 'LDAPAUTH_SEARCH_PASS', '${env.ldap.password}' );
38
39 define( 'LDAPAUTH_GROUP_ATTR', 'memberof' );
40 define( 'LDAPAUTH_GROUP_REQ', 'cn=admin,cn=yourls,ou=services,dc=immae,dc=eu');
41
42 define( 'LDAPAUTH_USERCACHE_TYPE', 0);
43 '';
44 webRoot = stdenv.mkDerivation (fetchedGithub ./yourls.json // rec {
45 installPhase = ''
46 mkdir -p $out
47 cp -a */ *.php $out/
48 cp sample-robots.txt $out/robots.txt
49 ln -sf ${config} $out/includes/config.php
50 ${builtins.concatStringsSep "\n" (
51 lib.attrsets.mapAttrsToList (name: value: "ln -sf ${value} $out/user/plugins/${name}") plugins
52 )}
53 '';
54 });
55 apache = {
56 user = "wwwrun";
57 group = "wwwrun";
58 modules = [ "proxy_fcgi" ];
59 vhostConf = ''
60 Alias /url "${webRoot}"
61 <Directory "${webRoot}">
62 <FilesMatch "\.php$">
63 SetHandler "proxy:unix:${phpFpm.socket}|fcgi://localhost"
64 </FilesMatch>
65
66 AllowOverride None
67 Require all granted
68 <IfModule mod_rewrite.c>
69 RewriteEngine On
70 RewriteBase /url/
71 RewriteCond %{REQUEST_FILENAME} !-f
72 RewriteCond %{REQUEST_FILENAME} !-d
73 RewriteRule ^.*$ /url/yourls-loader.php [L]
74 </IfModule>
75 DirectoryIndex index.php
76 </Directory>
77 '';
78 };
79 phpFpm = rec {
80 basedir = builtins.concatStringsSep ":" (
81 [ webRoot config ]
82 ++ lib.attrsets.mapAttrsToList (name: value: value) plugins);
83 socket = "/var/run/phpfpm/yourls.sock";
84 pool = ''
85 listen = ${socket}
86 user = ${apache.user}
87 group = ${apache.group}
88 listen.owner = ${apache.user}
89 listen.group = ${apache.group}
90 pm = ondemand
91 pm.max_children = 60
92 pm.process_idle_timeout = 60
93
94 ; Needed to avoid clashes in browser cookies (same domain)
95 php_value[session.name] = YourlsPHPSESSID
96 php_admin_value[open_basedir] = "${basedir}:/tmp"
97 php_admin_value[session.save_path] = "/var/lib/php/sessions/yourls"
98 '';
99 };
100 };
101in
102 yourls