stephenz007 commited on
Commit
ae8c95b
1 Parent(s): c044297

initial commit

Browse files
This view is limited to 50 files because it contains too many changes.   See raw diff
Files changed (50) hide show
  1. Dockerfile +39 -0
  2. README.md +1 -0
  3. autoload.php +8 -0
  4. class_signatures.txt +41 -0
  5. classes/AppConfig.php +41 -0
  6. classes/ElevenLabsApi.php +332 -0
  7. classes/MeltProject.php +282 -0
  8. classes/OpenAI.php +196 -0
  9. classes/VoiceGenerator.php +63 -0
  10. composer.json +28 -0
  11. composer.lock +0 -0
  12. config/config.json +4 -0
  13. generateScript('you +0 -0
  14. generate_scene.php +126 -0
  15. logs/scene.log +252 -0
  16. php +0 -0
  17. public/assets/css/fontawesome-all.min.css +101 -0
  18. public/assets/css/images/overlay1.png +0 -0
  19. public/assets/css/images/overlay2.png +0 -0
  20. public/assets/css/images/overlay3.svg +22 -0
  21. public/assets/css/images/overlay4.svg +22 -0
  22. public/assets/css/main.css +3512 -0
  23. public/assets/css/noscript.css +27 -0
  24. public/assets/js/breakpoints.min.js +2 -0
  25. public/assets/js/browser.min.js +2 -0
  26. public/assets/js/jquery.min.js +2 -0
  27. public/assets/js/jquery.scrolly.min.js +2 -0
  28. public/assets/js/main.js +32 -0
  29. public/assets/js/util.js +587 -0
  30. public/assets/sass/libs/_breakpoints.scss +223 -0
  31. public/assets/sass/libs/_functions.scss +90 -0
  32. public/assets/sass/libs/_html-grid.scss +149 -0
  33. public/assets/sass/libs/_mixins.scss +78 -0
  34. public/assets/sass/libs/_vars.scss +60 -0
  35. public/assets/sass/libs/_vendor.scss +376 -0
  36. public/assets/sass/main.scss +1546 -0
  37. public/assets/sass/noscript.scss +32 -0
  38. public/assets/webfonts/fa-brands-400.eot +0 -0
  39. public/assets/webfonts/fa-brands-400.svg +0 -0
  40. public/assets/webfonts/fa-brands-400.ttf +0 -0
  41. public/assets/webfonts/fa-brands-400.woff +0 -0
  42. public/assets/webfonts/fa-brands-400.woff2 +0 -0
  43. public/assets/webfonts/fa-regular-400.eot +0 -0
  44. public/assets/webfonts/fa-regular-400.svg +0 -0
  45. public/assets/webfonts/fa-regular-400.ttf +0 -0
  46. public/assets/webfonts/fa-regular-400.woff +0 -0
  47. public/assets/webfonts/fa-regular-400.woff2 +0 -0
  48. public/assets/webfonts/fa-solid-900.eot +0 -0
  49. public/assets/webfonts/fa-solid-900.svg +0 -0
  50. public/assets/webfonts/fa-solid-900.ttf +0 -0
Dockerfile ADDED
@@ -0,0 +1,39 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ FROM php:8.1-apache
2
+
3
+ # Install required PHP extensions
4
+ RUN docker-php-ext-install pdo pdo_mysql
5
+
6
+ # Enable Apache modules
7
+ RUN a2enmod rewrite
8
+
9
+ RUN apt-get update && \
10
+ apt-get install -y ffmpeg
11
+
12
+ # Copy the Symfony application to the container
13
+ COPY . /var/www/html
14
+
15
+ RUN mkdir -p var/cache var/log && \
16
+ chown -R www-data:www-data var/cache var/log && \
17
+ chmod -R a+rwx var/cache var/log && \
18
+ chown -R www-data:www-data public/logs
19
+
20
+ # Set environment variable for Apache listen port
21
+ ENV APACHE_LISTEN_PORT=8080
22
+
23
+ # Update Apache configuration to use new listen port
24
+ RUN sed -i -e "s/80/${APACHE_LISTEN_PORT}/g" /etc/apache2/ports.conf /etc/apache2/sites-available/000-default.conf
25
+
26
+ # Install composer
27
+ RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
28
+
29
+ # Install dependencies using composer
30
+ RUN composer install --no-dev --no-scripts --prefer-dist --no-progress --optimize-autoloader
31
+
32
+ # Set permissions for the cache and logs directories
33
+ RUN chown -R www-data:www-data var/cache var/log
34
+
35
+ # Expose the new listen port
36
+ EXPOSE ${APACHE_LISTEN_PORT}
37
+
38
+ # Start Apache
39
+ CMD ["/usr/sbin/apache2ctl", "-D", "FOREGROUND"]
README.md CHANGED
@@ -5,6 +5,7 @@ colorFrom: indigo
5
  colorTo: purple
6
  sdk: docker
7
  pinned: false
 
8
  ---
9
 
10
  Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
 
5
  colorTo: purple
6
  sdk: docker
7
  pinned: false
8
+ app_port: 8080
9
  ---
10
 
11
  Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
autoload.php ADDED
@@ -0,0 +1,8 @@
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ spl_autoload_register(function ($class) {
4
+ $classPath = __DIR__ . '/classes/' . $class . '.php';
5
+ if (file_exists($classPath)) {
6
+ require_once $classPath;
7
+ }
8
+ });
class_signatures.txt ADDED
@@ -0,0 +1,41 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ Class: ElevenLabsApi
2
+ __construct(string $apiKey, ?GuzzleHttp\Client $client)
3
+ getHistory(): GuzzleHttp\Psr7\Response
4
+ getAudioFromHistoryItem(string $historyItemId): GuzzleHttp\Psr7\Response
5
+ deleteHistoryItems(array $historyItemIds): GuzzleHttp\Psr7\Response
6
+ deleteHistoryItem(string $historyItemId): GuzzleHttp\Psr7\Response
7
+ downloadHistoryItems(array $historyItemIds): GuzzleHttp\Psr7\Response
8
+ textToSpeech(string $voiceId, array $data): GuzzleHttp\Psr7\Response
9
+ textToSpeechWithVoiceId(string $voiceId, array $data): GuzzleHttp\Psr7\Response
10
+ deleteSample(string $voiceId, string $sampleId): GuzzleHttp\Psr7\Response
11
+ getAudioFromSample(string $voiceId, string $sampleId): GuzzleHttp\Psr7\Response
12
+ deleteHistoryItemById(string $historyItemId): GuzzleHttp\Psr7\Response
13
+ downloadHistoryItemsByIds(array $historyItemIds): GuzzleHttp\Psr7\Response
14
+ getGeneratedItems(): GuzzleHttp\Psr7\Response
15
+ getAudioFromHistoryItemById(string $historyItemId): GuzzleHttp\Psr7\Response
16
+ deleteHistoryItemsByIds(array $historyItemIds): GuzzleHttp\Psr7\Response
17
+
18
+ Class: AppConfig
19
+ __construct(Psr\Log\LoggerInterface $logger)
20
+ getApiKey(string $className): string
21
+
22
+ Class: MeltProject
23
+ __construct(Monolog\Logger $log, int $width, int $height, int $frameRateNum, int $frameRateDen, string $outputFile)
24
+ __toString(): string
25
+ addImage(string $path, int $in, int $out): void
26
+ setVoiceover(string $path): void
27
+ generateXml(): DOMDocument
28
+ createTractorElement(DOMDocument $xml, string $id): DOMElement
29
+ createTrackElement(DOMDocument $xml, string $producerId): DOMElement
30
+ save(DOMDocument $xml, string $path): bool
31
+
32
+ Class: VoiceGenerator
33
+ __construct(ElevenLabsApi $elevenLabsApi)
34
+ generate_and_download(string $voiceId, string $message): string
35
+
36
+ Class: OpenAI
37
+ __construct(string $api_key, ?GuzzleHttp\Client $client, ?Psr\Log\LoggerInterface $log)
38
+ generateImage(string $prompt, string $localDirectory, string $size, int $n): ?array
39
+ generateScript(string $role, string $prompt, int $maxTokens, float $temperature): ?string
40
+ generateImageVariations(string $imagePath, string $localDirectory, int $n, string $size): ?array
41
+
classes/AppConfig.php ADDED
@@ -0,0 +1,41 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ declare(strict_types=1);
4
+ use Psr\Log\LoggerInterface;
5
+
6
+ class AppConfig
7
+ {
8
+ private LoggerInterface $logger;
9
+ private array $config;
10
+
11
+ public function __construct(LoggerInterface $logger)
12
+ {
13
+ $this->logger = $logger;
14
+ $this->loadConfig();
15
+ }
16
+
17
+ private function loadConfig(): void
18
+ {
19
+ try {
20
+ $configFile = new SplFileObject(__DIR__ . '/../config/config.json', 'r');
21
+ $configContents = $configFile->fread($configFile->getSize());
22
+ $this->config = json_decode($configContents, true);
23
+ } catch (\Exception $exception) {
24
+ $this->logger->error('Failed to load the configuration file.', [
25
+ 'exception' => $exception
26
+ ]);
27
+ throw $exception;
28
+ }
29
+ }
30
+
31
+ public function getApiKey(string $className): string
32
+ {
33
+ if (!isset($this->config[$className])) {
34
+ $errorMessage = "API key not found for class {$className}.";
35
+ $this->logger->error($errorMessage);
36
+ throw new \InvalidArgumentException($errorMessage);
37
+ }
38
+
39
+ return $this->config[$className];
40
+ }
41
+ }
classes/ElevenLabsApi.php ADDED
@@ -0,0 +1,332 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ declare(strict_types=1);
4
+
5
+ use GuzzleHttp\Client;
6
+ use GuzzleHttp\Psr7\Response;
7
+
8
+ class ElevenLabsApi {
9
+ private const BASE_URL = 'https://api.elevenlabs.io';
10
+
11
+ private string $apiKey;
12
+ private Client $client;
13
+
14
+ /**
15
+ * ElevenLabsApi constructor.
16
+ *
17
+ * @param string $apiKey
18
+ * @param Client|null $client
19
+ */
20
+ public function __construct(string $apiKey, Client $client = null) {
21
+ $this->apiKey = $apiKey;
22
+ $this->client = $client ?? new Client();
23
+ }
24
+
25
+ /**
26
+ * Returns metadata about all your generated audio.
27
+ *
28
+ * @return Response
29
+ *
30
+ * Example of a successful response (200 OK):
31
+ * {
32
+ * "items": [
33
+ * {
34
+ * "id": "VW7YKqPnjY4h39yTbx2L",
35
+ * "title": "Generated Audio 1",
36
+ * "duration": 120,
37
+ * "created_at": "2023-03-16T08:00:00Z",
38
+ * "url": "https://download-link.example.com/your_history_item_audio.mp3"
39
+ * },
40
+ * {
41
+ * "id": "AbCDeFgH1I2jK3LmN4O5",
42
+ * "title": "Generated Audio 2",
43
+ * "duration": 90,
44
+ * "created_at": "2023-03-15T08:00:00Z",
45
+ * "url": "https://download-link.example.com/your_history_item_audio2.mp3"
46
+ * }
47
+ * ]
48
+ * }
49
+ */
50
+ public function getHistory(): Response {
51
+ $url = self::BASE_URL . '/v1/history';
52
+
53
+ return $this->makeRequest('GET', $url);
54
+ }
55
+
56
+ /**
57
+ * Returns the audio of a history item.
58
+ *
59
+ * @param string $history_item_id The history item ID to get audio from.
60
+ *
61
+ * @return Response
62
+ *
63
+ * Example of a successful response (200 OK):
64
+ * {
65
+ * "url": "https://download-link.example.com/your_history_item_audio.mp3"
66
+ * }
67
+ */
68
+ public function getAudioFromHistoryItem(string $historyItemId): Response {
69
+ $url = self::BASE_URL . "/v1/history/{$historyItemId}";
70
+
71
+ return $this->makeRequest('GET', $url);
72
+ }
73
+
74
+ /**
75
+ * Delete a number of history items by their IDs.
76
+ *
77
+ * @param array $history_item_ids An array of history item IDs to delete.
78
+ *
79
+ * @return Response
80
+ *
81
+ * Example of a successful response (200 OK):
82
+ * {
83
+ * "status": "success",
84
+ * "message": "Selected history items deleted successfully."
85
+ * }
86
+ */
87
+ public function deleteHistoryItems(array $historyItemIds): Response {
88
+ $url = self::BASE_URL . '/v1/history/delete';
89
+ $body = json_encode(['history_item_ids' => $historyItemIds]);
90
+
91
+ return $this->makeRequest('POST', $url, $body);
92
+ }
93
+
94
+ /**
95
+ * Delete a history item by its ID
96
+ *
97
+ * @param string $history_item_id The ID of the history item to be deleted
98
+ * @return Response
99
+ *
100
+ * Example of a successful response (200 OK):
101
+ * {
102
+ * "message": "History item deleted successfully"
103
+ * }
104
+ */
105
+ public function deleteHistoryItem(string $historyItemId): Response {
106
+ $url = self::BASE_URL . "/v1/history/{$historyItemId}";
107
+
108
+ return $this->makeRequest('DELETE', $url);
109
+ }
110
+
111
+ /**
112
+ * Download one or more history items.
113
+ *
114
+ * @param array $history_item_ids An array of history item IDs to download.
115
+ *
116
+ * @return Response
117
+ *
118
+ * Example of a successful response (200 OK):
119
+ * {
120
+ * "url": "https://download-link.example.com/your_downloaded_audio.zip"
121
+ * }
122
+ */
123
+ public function downloadHistoryItems(array $historyItemIds): Response {
124
+ $url = self::BASE_URL . '/v1/history/download';
125
+ $body = json_encode(['history_item_ids' => $historyItemIds]);
126
+
127
+ return $this->makeRequest('POST', $url, $body);
128
+ }
129
+
130
+ /**
131
+ * Convert text to speech
132
+ *
133
+ * @param string $text The text to be converted into speech
134
+ * @param array $options Optional parameters for the TTS conversion
135
+ * @return Response
136
+ *
137
+ * Example of a successful response (200 OK):
138
+ * {
139
+ * "history_item_id": "VW7YKqPnjY4h39yTbx2L",
140
+ * "text": "Hello, world!",
141
+ * "options": {
142
+ * "voice": "Joanna",
143
+ * "language": "en-US",
144
+ * "output_format": "mp3"
145
+ * },
146
+ * "audio_url": "https://api.elevenlabs.io/v1/history/VW7YKqPnjY4h39yTbx2L/audio"
147
+ * }
148
+ */
149
+ public function textToSpeech(string $voiceId, array $data): Response {
150
+ $url = self::BASE_URL . "/v1/text-to-speech/{$voiceId}/stream";
151
+ $body = json_encode($data);
152
+
153
+ return $this->makeRequest('POST', $url, $body);
154
+ }
155
+ /**
156
+ * Convert text to speech with a specific Voice ID
157
+ *
158
+ * @param string $text The text to be converted into speech
159
+ * @param string $voiceId The ID of the voice to be used for TTS conversion
160
+ * @param array $options Optional parameters for the TTS conversion
161
+ * @return Response
162
+ *
163
+ * Example of a successful response (200 OK):
164
+ * {
165
+ * "history_item_id": "VW7YKqPnjY4h39yTbx2L",
166
+ * "text": "Hello, world!",
167
+ * "options": {
168
+ * "voice_id": "Joanna",
169
+ * "language": "en-US",
170
+ * "output_format": "mp3"
171
+ * },
172
+ * "audio_url": "https://api.elevenlabs.io/v1/history/VW7YKqPnjY4h39yTbx2L/audio"
173
+ * }
174
+ */
175
+ public function textToSpeechWithVoiceId(string $voiceId, array $data): Response {
176
+ $url = self::BASE_URL . "/v1/text-to-speech/{$voiceId}";
177
+ $body = json_encode($data);
178
+
179
+ return $this->makeRequest('POST', $url, $body);
180
+ }
181
+
182
+ /**
183
+ * Make a request to the ElevenLabs API.
184
+ *
185
+ * @param string $method
186
+ * @param string $url
187
+ * @param string|null $body
188
+ * @return Response
189
+ */
190
+ private function makeRequest(string $method, string $url, string $body = null): Response {
191
+ $options = [
192
+ 'headers' => [
193
+ 'Xi-Api-Key' => $this->apiKey,
194
+ 'Content-Type' => 'application/json',
195
+ ],
196
+ ];
197
+
198
+ if ($body !== null) {
199
+ $options['body'] = $body;
200
+ }
201
+
202
+ return $this->client->request($method, $url, $options);
203
+ }
204
+
205
+ /**
206
+ * Delete a history item by its ID.
207
+ *
208
+ * @param string $history_item_id The history item ID to delete.
209
+ *
210
+ * @return Response
211
+ *
212
+ * Example of a successful response (200 OK):
213
+ * {
214
+ * "status": "success",
215
+ * "message": "History item deleted successfully."
216
+ * }
217
+ */
218
+ public function deleteSample(string $voiceId, string $sampleId): Response {
219
+ $url = self::BASE_URL . "/v1/voices/{$voiceId}/samples/{$sampleId}";
220
+
221
+ return $this->makeRequest('DELETE', $url);
222
+ }
223
+
224
+ /**
225
+ * Returns the audio corresponding to a sample attached to a voice.
226
+ *
227
+ * @param string $voiceId
228
+ * @param string $sampleId
229
+ * @return Response
230
+ * Example of a successful response (200 OK):
231
+ * Content-Type: audio/mpeg
232
+ * (Binary audio content)
233
+ */
234
+ public function getAudioFromSample(string $voiceId, string $sampleId): Response {
235
+ $url = self::BASE_URL . "/v1/voices/{$voiceId}/samples/{$sampleId}/audio";
236
+
237
+ return $this->makeRequest('GET', $url);
238
+ }
239
+
240
+ /**
241
+ * Delete a history item by its ID.
242
+ *
243
+ * @param string $historyItemId
244
+ * @return Response
245
+ */
246
+ public function deleteHistoryItemById(string $historyItemId): Response {
247
+ $url = self::BASE_URL . "/v1/history/{$historyItemId}";
248
+
249
+ return $this->makeRequest('DELETE', $url);
250
+ }
251
+
252
+ /**
253
+ * Download one or more history items.
254
+ *
255
+ * @param array $historyItemIds
256
+ * @return Response
257
+ */
258
+ public function downloadHistoryItemsByIds(array $historyItemIds): Response {
259
+ $url = self::BASE_URL . '/v1/history/download';
260
+ $body = json_encode(['history_item_ids' => $historyItemIds]);
261
+
262
+ return $this->makeRequest('POST', $url, $body);
263
+ }
264
+
265
+ /**
266
+ * Get metadata about all your generated audio.
267
+ *
268
+ * @return Response
269
+ *
270
+ * Example of a successful response (200 OK):
271
+ * {
272
+ * "items": [
273
+ * {
274
+ * "id": "VW7YKqPnjY4h39yTbx2L",
275
+ * "created_at": "2023-03-16T12:30:00Z",
276
+ * "request": {
277
+ * "text": "Hello, world!",
278
+ * "voice": "en-US-Wavenet-A",
279
+ * "language_code": "en-US",
280
+ * "speed": 1,
281
+ * "pitch": 0,
282
+ * "volume_gain_db": 0
283
+ * },
284
+ * "duration_seconds": 2.16
285
+ * },
286
+ * {
287
+ * "id": "yv9dA7SxQx2zG8f4Zv1m",
288
+ * "created_at": "2023-03-15T14:45:00Z",
289
+ * "request": {
290
+ * "text": "Good morning!",
291
+ * "voice": "en-US-Wavenet-B",
292
+ * "language_code": "en-US",
293
+ * "speed": 1,
294
+ * "pitch": 0,
295
+ * "volume_gain_db": 0
296
+ * },
297
+ * "duration_seconds": 1.8
298
+ * }
299
+ * ]
300
+ * }
301
+ */
302
+ public function getGeneratedItems(): Response {
303
+ $url = self::BASE_URL . '/v1/history';
304
+
305
+ return $this->makeRequest('GET', $url);
306
+ }
307
+
308
+ /**
309
+ * Get the audio of a history item by its ID.
310
+ *
311
+ * @param string $historyItemId
312
+ * @return Response
313
+ */
314
+ public function getAudioFromHistoryItemById(string $historyItemId): Response {
315
+ $url = self::BASE_URL . "/v1/history/{$historyItemId}/audio";
316
+
317
+ return $this->makeRequest('GET', $url);
318
+ }
319
+
320
+ /**
321
+ * Delete a number of history items by their IDs.
322
+ *
323
+ * @param array $historyItemIds
324
+ * @return Response
325
+ */
326
+ public function deleteHistoryItemsByIds(array $historyItemIds): Response {
327
+ $url = self::BASE_URL . '/v1/history/delete';
328
+ $body = json_encode(['history_item_ids' => $historyItemIds]);
329
+
330
+ return $this->makeRequest('POST', $url, $body);
331
+ }
332
+ }
classes/MeltProject.php ADDED
@@ -0,0 +1,282 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ use Monolog\Logger;
4
+
5
+ class MeltProject
6
+ {
7
+ private int $width;
8
+ private int $height;
9
+ private int $frameRateNum;
10
+ private int $frameRateDen;
11
+ private ?string $audioFile = null;
12
+ private string $outputFile;
13
+ private array $images;
14
+ private Logger $log;
15
+
16
+ public function __construct(Logger $log, int $width = 1920, int $height = 1080, int $frameRateNum = 25, int $frameRateDen = 1, string $outputFile = './scene.mp4')
17
+ {
18
+ $this->log = $log;
19
+ $this->width = $width;
20
+ $this->height = $height;
21
+ $this->frameRateNum = $frameRateNum;
22
+ $this->frameRateDen = $frameRateDen;
23
+ $this->outputFile = $outputFile;
24
+ $this->images = [];
25
+ $this->log->info('Initialized MeltProject ' . $this);
26
+ }
27
+
28
+ public function __toString() {
29
+ return 'width:'.$this->width.' height:'.$this->height . ' framerate:'. $this->frameRateNum . ' outputFile ' . $this->outputFile;
30
+ }
31
+
32
+ public function addImage(string $path, int $in, int $out): void
33
+ {
34
+ $this->images[] = [
35
+ 'path' => $path,
36
+ 'in' => $in,
37
+ 'out' => $out
38
+ ];
39
+ $this->log->info('Adding image', end($this->images));
40
+ }
41
+ /**
42
+ * Set the voiceover audio track.
43
+ *
44
+ * @param string $path
45
+ */
46
+ public function setVoiceover(string $path): void
47
+ {
48
+ $this->audioFile = $path;
49
+ $this->log->info('Adding audio track: ' . $path);
50
+ }
51
+
52
+ /**
53
+ * Generate the XML document.
54
+ *
55
+ * @return DOMDocument The generated XML object.
56
+ */
57
+ public function generateXml(): DOMDocument
58
+ {
59
+ $xml = new DOMDocument('1.0', 'utf-8');
60
+ $xml->formatOutput = true;
61
+
62
+ $mlt = $this->createMltElement($xml);
63
+ $xml->appendChild($mlt);
64
+
65
+ $profile = $this->createProfileElement($xml);
66
+ $mlt->appendChild($profile);
67
+
68
+ $count = 0;
69
+ $playlist = $this->createPlaylistElement($xml);
70
+ foreach ($this->images as $image) {
71
+ $producer = $this->createProducerElement($xml, $image, $count);
72
+ $mlt->appendChild($producer);
73
+
74
+ $entry = $this->createEntryElement($xml, $image, $count);
75
+ $playlist->appendChild($entry);
76
+
77
+ $count++;
78
+ }
79
+ $mlt->appendChild($playlist);
80
+
81
+ $tractor0 = $this->createTractorElement($xml, 'tractor0');
82
+ $mlt->appendChild($tractor0);
83
+
84
+ $multitrack0 = $this->createMultitrackElement($xml);
85
+ $tractor0->appendChild($multitrack0);
86
+
87
+ $imageTrack = $this->createImageTrackElement($xml);
88
+ $multitrack0->appendChild($imageTrack);
89
+
90
+ if ($this->audioFile !== null) {
91
+ $voiceoverProducer = $this->createVoiceoverProducerElement($xml, $this->audioFile);
92
+ $mlt->appendChild($voiceoverProducer);
93
+
94
+ $voiceoverPlaylist = $this->createVoiceoverPlaylistElement($xml);
95
+ $mlt->appendChild($voiceoverPlaylist);
96
+
97
+ $voiceoverEntry = $this->createVoiceoverEntryElement($xml);
98
+ $voiceoverPlaylist->appendChild($voiceoverEntry);
99
+
100
+ $tractor1 = $this->createTractorElement($xml, 'tractor1');
101
+ $mlt->appendChild($tractor1);
102
+
103
+ $multitrack1 = $this->createMultitrackElement($xml);
104
+ $tractor1->appendChild($multitrack1);
105
+
106
+ $trackForTractor0 = $this->createTrackElement($xml, 'tractor0');
107
+ $multitrack1->appendChild($trackForTractor0);
108
+
109
+ $trackForVoiceoverPlaylist = $this->createTrackElement($xml, 'voiceover_playlist');
110
+ $multitrack1->appendChild($trackForVoiceoverPlaylist);
111
+ }
112
+
113
+ return $xml;
114
+ }
115
+
116
+ private function createMltElement(DOMDocument $xml): DOMElement
117
+ {
118
+ $mlt = $xml->createElement('mlt');
119
+ $mlt->setAttribute('LC_NUMERIC', 'C');
120
+ $mlt->setAttribute('producer', 'main_bin');
121
+ $mlt->setAttribute('version', '7.12.0');
122
+ $mlt->setAttribute('root', '/home/kash');
123
+ return $mlt;
124
+ }
125
+
126
+ private function createProfileElement(DOMDocument $xml): DOMElement
127
+ {
128
+ $profile = $xml->createElement('profile');
129
+ $profile->setAttribute('description', 'HD 1080p 25 fps');
130
+ $profile->setAttribute('width', $this->width);
131
+ $profile->setAttribute('height', $this->height);
132
+ $profile->setAttribute('progressive', '1');
133
+ $profile->setAttribute('sample_aspect_num', '1');
134
+ $profile->setAttribute('sample_aspect_den', '1');
135
+ $profile->setAttribute('display_aspect_num', '16');
136
+ $profile->setAttribute('display_aspect_den', '9');
137
+ $profile->setAttribute('frame_rate_num', $this->frameRateNum);
138
+ $profile->setAttribute('frame_rate_den', $this->frameRateDen);
139
+ $profile->setAttribute('colorspace', '709');
140
+ return $profile;
141
+ }
142
+
143
+ private function createPlaylistElement(DOMDocument $xml): DOMElement
144
+ {
145
+ $playlist = $xml->createElement('playlist');
146
+ $playlist->setAttribute('id', 'playlist0');
147
+ return $playlist;
148
+ }
149
+
150
+ private function createProducerElement(DOMDocument $xml, array $image, int $count): DOMElement
151
+ {
152
+ $producer = $xml->createElement('producer');
153
+ $producer->setAttribute('id', 'producer' . $count);
154
+ $producer->setAttribute('in', $image['in']);
155
+ $producer->setAttribute('out', $image['out']);
156
+
157
+ $resource = $xml->createElement('property', $image['path']);
158
+ $resource->setAttribute('name', 'resource');
159
+ $producer->appendChild($resource);
160
+
161
+ $length = $xml->createElement('property', $image['out'] + 1);
162
+ $length->setAttribute('name', 'length');
163
+ $producer->appendChild($length);
164
+
165
+ return $producer;
166
+ }
167
+
168
+ private function createEntryElement(DOMDocument $xml, array $image, int $count): DOMElement
169
+ {
170
+ $entry = $xml->createElement('entry');
171
+ $entry->setAttribute('producer', 'producer' . $count);
172
+ $entry->setAttribute('in', $image['in']);
173
+ $entry->setAttribute('out', $image['out']);
174
+
175
+ return $entry;
176
+ }
177
+
178
+ public function createTractorElement(DOMDocument $xml, string $id): DOMElement
179
+ {
180
+ $tractor = $xml->createElement('tractor');
181
+ $tractor->setAttribute('id', $id);
182
+
183
+ return $tractor;
184
+ }
185
+
186
+
187
+ public function createTrackElement(DOMDocument $xml, string $producerId): DOMElement
188
+ {
189
+ $track = $xml->createElement('track');
190
+ $track->setAttribute('producer', $producerId);
191
+
192
+ return $track;
193
+ }
194
+
195
+
196
+ private function createTransitionElement(DOMDocument $xml): DOMElement
197
+ {
198
+ $transition = $xml->createElement('transition');
199
+ $transition->setAttribute('in', '0');
200
+ $transition->setAttribute('out', $this->images[0]['out']);
201
+ $transition->setAttribute('a_track', '0');
202
+ $transition->setAttribute('b_track', '1');
203
+ return $transition;
204
+ }
205
+
206
+ private function createTransitionProperties(): array
207
+ {
208
+ return [
209
+ ['mlt_service', 'mix'],
210
+ ['start', '0'],
211
+ ['end', $this->images[0]['out']],
212
+ ['a_track', '0'],
213
+ ['b_track', '1'],
214
+ ];
215
+ }
216
+
217
+ private function createPropertyElement(DOMDocument $xml, array $property): DOMElement
218
+ {
219
+ $prop = $xml->createElement('property', $property[1]);
220
+ $prop->setAttribute('name', $property[0]);
221
+ return $prop;
222
+ }
223
+ private function createVoiceoverProducerElement(DOMDocument $xml, string $path): DOMElement
224
+ {
225
+ $producer = $xml->createElement('producer');
226
+ $producer->setAttribute('id', 'voiceover');
227
+
228
+ $resource = $xml->createElement('property', $path);
229
+ $resource->setAttribute('name', 'resource');
230
+ $producer->appendChild($resource);
231
+
232
+ return $producer;
233
+ }
234
+
235
+ private function createVoiceoverPlaylistElement(DOMDocument $xml): DOMElement
236
+ {
237
+ $playlist = $xml->createElement('playlist');
238
+ $playlist->setAttribute('id', 'voiceover_playlist');
239
+
240
+ return $playlist;
241
+ }
242
+
243
+ private function createVoiceoverEntryElement(DOMDocument $xml): DOMElement
244
+ {
245
+ $entry = $xml->createElement('entry');
246
+ $entry->setAttribute('producer', 'voiceover');
247
+
248
+ return $entry;
249
+ }
250
+
251
+ private function createMultitrackElement(DOMDocument $xml): DOMElement
252
+ {
253
+ $multitrack = $xml->createElement('multitrack');
254
+
255
+ return $multitrack;
256
+ }
257
+
258
+ private function createVoiceoverTrackElement(DOMDocument $xml): DOMElement
259
+ {
260
+ $track = $xml->createElement('track');
261
+ $track->setAttribute('producer', 'voiceover_playlist');
262
+
263
+ return $track;
264
+ }
265
+
266
+ private function createImageTrackElement(DOMDocument $xml): DOMElement
267
+ {
268
+ $track = $xml->createElement('track');
269
+ $track->setAttribute('producer', 'playlist0');
270
+
271
+ return $track;
272
+ }
273
+ /**
274
+ * Save the MLT project to a file.
275
+ *
276
+ * @param string $path
277
+ * @return bool
278
+ */
279
+ public function save(DOMDocument $xml, string $path): bool {
280
+ return $xml->save($path) !== false;
281
+ }
282
+ }
classes/OpenAI.php ADDED
@@ -0,0 +1,196 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ declare(strict_types=1);
4
+
5
+ use GuzzleHttp\Client;
6
+ use GuzzleHttp\Exception\RequestException;
7
+ use Psr\Log\LoggerInterface;
8
+ use Psr\Log\NullLogger;
9
+
10
+ /**
11
+ * Class OpenAI
12
+ */
13
+ class OpenAI {
14
+ /**
15
+ * @var string
16
+ */
17
+ private $api_key;
18
+
19
+ /**
20
+ * @var Client
21
+ */
22
+ private $client;
23
+
24
+ /**
25
+ * @var LoggerInterface
26
+ */
27
+ private $log;
28
+
29
+ /**
30
+ * OpenAI constructor.
31
+ *
32
+ * @param string $api_key
33
+ * @param Client|null $client
34
+ * @param LoggerInterface|null $log
35
+ */
36
+ public function __construct(string $api_key, Client $client = null, LoggerInterface $log = null) {
37
+ $this->api_key = $api_key;
38
+ $this->client = $client ?: new Client([
39
+ 'base_uri' => 'https://api.openai.com/v1/',
40
+ 'headers' => [
41
+ 'Content-Type' => 'application/json',
42
+ 'Authorization' => 'Bearer ' . $this->api_key
43
+ ]
44
+ ]);
45
+ $this->log = $log ?: new NullLogger();
46
+ if (empty($api_key)) {
47
+ throw new RuntimeException('No valid API key was provided.');
48
+ }
49
+ }
50
+
51
+ /**
52
+ * Generate an image using DALL-E API and save it locally.
53
+ *
54
+ * @param string $prompt
55
+ * @param string $localDirectory
56
+ * @param string $size
57
+ * @param int $n
58
+ * @return array|null
59
+ */
60
+ public function generateImage(string $prompt, string $localDirectory, string $size = '1024x1024', int $n = 4): ?array {
61
+ $data = [
62
+ 'prompt' => $prompt,
63
+ 'n' => $n,
64
+ 'size' => $size
65
+ ];
66
+
67
+ try {
68
+ $response = $this->client->post('images/generations', ['json' => $data]);
69
+ $json = json_decode((string) $response->getBody(), true);
70
+
71
+ if (json_last_error() === JSON_ERROR_NONE) {
72
+ $savedImages = [];
73
+ foreach ($json['data'] as $imageData) {
74
+ $imageUrl = $imageData['url'];
75
+ $localFilePath = $this->saveImage($imageUrl, $localDirectory);
76
+ $savedImages[] = $localFilePath;
77
+ }
78
+
79
+ return $savedImages;
80
+ } else {
81
+ $this->log->error('Failed to decode JSON response', ['json_error' => json_last_error_msg()]);
82
+
83
+ return null;
84
+ }
85
+ } catch (RequestException $e) {
86
+ $this->log->error('RequestException encountered', ['message' => $e->getMessage()]);
87
+
88
+ return null;
89
+ }
90
+ }
91
+
92
+ /**
93
+ * Save an image from a URL to a local file path.
94
+ *
95
+ * @param string $imageUrl
96
+ * @param string $localDirectory
97
+ * @return string
98
+ */
99
+ private function saveImage(string $imageUrl, string $localDirectory): string {
100
+ $imageFileName = basename(parse_url($imageUrl, PHP_URL_PATH));
101
+ $localFilePath = $localDirectory . '/' . $imageFileName;
102
+
103
+ $client = new Client();
104
+ $response = $client->get($imageUrl, ['sink' => $localFilePath]);
105
+
106
+ if ($response->getStatusCode() == 200) {
107
+ $this->log->info('Image saved successfully', ['path' => $localFilePath]);
108
+
109
+ return $localFilePath;
110
+ } else {
111
+ $this->log->error('Failed to save the image', ['status_code' => $response->getStatusCode()]);
112
+
113
+ throw new RuntimeException('Failed to save the image: ' . $response->getStatusCode());
114
+ }
115
+ }
116
+
117
+ /**
118
+ * Generate a script using the OpenAI GPT-3.5 Turbo model.
119
+ *
120
+ * @param string $role
121
+ * @param string $prompt
122
+ * @param int $maxTokens
123
+ * @param float $temperature
124
+ * @return string|null
125
+ */
126
+ public function generateScript(string $role, string $prompt, int $maxTokens = 3600, float $temperature = 1.0): ?string {
127
+ $data = [
128
+ 'model' => 'gpt-3.5-turbo',
129
+ 'messages' => [
130
+ ['role' => 'system', 'content' => $role],
131
+ ['role' => 'user', 'content' => $prompt],
132
+ ],
133
+ 'max_tokens' => $maxTokens,
134
+ 'temperature' => $temperature
135
+ ];
136
+
137
+ try {
138
+ $response = $this->client->post('chat/completions', ['json' => $data]);
139
+ $json = json_decode((string) $response->getBody(), true);
140
+
141
+ if (json_last_error() === JSON_ERROR_NONE) {
142
+ $assistantResponse = $json['choices'][0]['message']['content'];
143
+
144
+ return $assistantResponse;
145
+ } else {
146
+ $this->log->error('Failed to decode JSON response', ['json_error' => json_last_error_msg()]);
147
+
148
+ return null;
149
+ }
150
+ } catch (RequestException $e) {
151
+ $this->log->error('RequestException encountered', ['message' => $e->getMessage()]);
152
+
153
+ return null;
154
+ }
155
+ }
156
+ /**
157
+ * Generate image variations using DALL-E API and save them locally.
158
+ *
159
+ * @param string $imagePath
160
+ * @param string $localDirectory
161
+ * @param int $n
162
+ * @param string $size
163
+ * @return array|null
164
+ */
165
+ public function generateImageVariations(string $imagePath, string $localDirectory, int $n = 4, string $size = '1024x1024'): ?array {
166
+ $data = [
167
+ 'n' => $n,
168
+ 'size' => $size,
169
+ 'image' => curl_file_create($imagePath)
170
+ ];
171
+
172
+ try {
173
+ $response = $this->client->post('images/variations', ['multipart' => $data]);
174
+ $json = json_decode((string) $response->getBody(), true);
175
+
176
+ if (json_last_error() === JSON_ERROR_NONE) {
177
+ $savedImages = [];
178
+ foreach ($json['data'] as $imageData) {
179
+ $imageUrl = $imageData['url'];
180
+ $localFilePath = $this->saveImage($imageUrl, $localDirectory);
181
+ $savedImages[] = $localFilePath;
182
+ }
183
+
184
+ return $savedImages;
185
+ } else {
186
+ $this->log->error('Failed to decode JSON response', ['json_error' => json_last_error_msg()]);
187
+
188
+ return null;
189
+ }
190
+ } catch (RequestException $e) {
191
+ $this->log->error('RequestException encountered', ['message' => $e->getMessage()]);
192
+
193
+ return null;
194
+ }
195
+ }
196
+ }
classes/VoiceGenerator.php ADDED
@@ -0,0 +1,63 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ declare(strict_types=1);
4
+
5
+ use GuzzleHttp\Psr7\Response;
6
+
7
+ class VoiceGenerator {
8
+ private ElevenLabsApi $elevenLabsApi;
9
+
10
+ /**
11
+ * VoiceGenerator constructor.
12
+ *
13
+ * @param ElevenLabsApi $elevenLabsApi
14
+ */
15
+ public function __construct(ElevenLabsApi $elevenLabsApi) {
16
+ $this->elevenLabsApi = $elevenLabsApi;
17
+ }
18
+
19
+ /**
20
+ * Generate voice audio for the given message and voice ID.
21
+ *
22
+ * @param string $voiceId
23
+ * @param string $message
24
+ * @return string The local file path of the downloaded audio file
25
+ * @throws Exception
26
+ */
27
+ public function generate_and_download(string $voiceId, string $message): string {
28
+ $data = ['text' => $message];
29
+ $response = $this->elevenLabsApi->textToSpeechWithVoiceId($voiceId, $data);
30
+
31
+ if ($response->getStatusCode() === 200) {
32
+ $result = json_decode((string)$response->getBody(), true);
33
+ $audioUrl = $result['audio_url'];
34
+ return $this->downloadAudio($audioUrl);
35
+ } else {
36
+ throw new Exception('Error generating audio: ' . $response->getReasonPhrase());
37
+ }
38
+ }
39
+
40
+ /**
41
+ * Download audio file from the given URL and save it to the voices subfolder.
42
+ *
43
+ * @param string $audioUrl
44
+ * @return string The local file path of the downloaded audio file
45
+ */
46
+ private function downloadAudio(string $audioUrl): string {
47
+ $voicesDirectory = 'voices';
48
+ if (!file_exists($voicesDirectory) && !mkdir($voicesDirectory) && !is_dir($voicesDirectory)) {
49
+ throw new RuntimeException(sprintf('Directory "%s" was not created', $voicesDirectory));
50
+ }
51
+
52
+ $localFilePath = $voicesDirectory . '/' . uniqid() . '.mp3';
53
+
54
+ $client = new GuzzleHttp\Client();
55
+ $response = $client->get($audioUrl, ['sink' => $localFilePath]);
56
+
57
+ if ($response->getStatusCode() === 200) {
58
+ return $localFilePath;
59
+ } else {
60
+ throw new Exception('Error downloading audio: ' . $response->getReasonPhrase());
61
+ }
62
+ }
63
+ }
composer.json ADDED
@@ -0,0 +1,28 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "name": "bghira/chatgpt-video-generator",
3
+ "description": "Generating simple video files using ChatGPT",
4
+ "type": "project",
5
+ "require": {
6
+ "guzzlehttp/guzzle": "^7.0",
7
+ "psr/log": "^1.1",
8
+ "monolog/monolog": "^2.3",
9
+ "james-heinrich/getid3": "^1.9",
10
+ "php-ffmpeg/php-ffmpeg": "^1.1"
11
+ },
12
+ "autoload": {
13
+ "psr-4": {
14
+ "bghira\\": "classes/"
15
+ }
16
+ },
17
+ "require-dev": {
18
+ "phpunit/phpunit": "^9.5"
19
+ },
20
+ "authors": [
21
+ {
22
+ "name": "bghira",
23
+ "email": "nunya@bizness.nat"
24
+ }
25
+ ],
26
+ "minimum-stability": "stable",
27
+ "license": "SUL-1.0"
28
+ }
composer.lock ADDED
The diff for this file is too large to render. See raw diff
 
config/config.json ADDED
@@ -0,0 +1,4 @@
 
 
 
 
 
1
+ {
2
+ "ElevenLabsApi": "c3b8b4c43507097c8a48fef5c43c5adf",
3
+ "OpenAI": "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"
4
+ }
generateScript('you ADDED
File without changes
generate_scene.php ADDED
@@ -0,0 +1,126 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ require_once __DIR__ . '/vendor/autoload.php';
4
+ require_once __DIR__ . '/autoload.php';
5
+
6
+ use Monolog\Handler\StreamHandler;
7
+ use Monolog\Logger;
8
+
9
+ // Check if prompt was submitted
10
+ if (!isset($_POST['prompt'])) {
11
+ die('Please enter a prompt.');
12
+ }
13
+
14
+ $prompt = $_POST['prompt'];
15
+
16
+ // Initialize the logger
17
+ $log = new Logger('scene');
18
+ $log->pushHandler(new StreamHandler('logs/scene.log', Logger::DEBUG));
19
+ $log->pushHandler(new StreamHandler('php://stdout', Logger::DEBUG));
20
+
21
+ // Initialize AppConfig
22
+ $appConfig = new AppConfig($log);
23
+
24
+ // Retrieve API keys from AppConfig
25
+ $openaiApiKey = $appConfig->getApiKey('OpenAI');
26
+ $elevenLabsApiKey = $appConfig->getApiKey('ElevenLabsApi');
27
+
28
+ // Initialize OpenAI and ElevenLabsApi objects with the API keys and logger
29
+ $openai = new OpenAI($openaiApiKey, null, $log);
30
+ $elevenLabsApi = new ElevenLabsApi($elevenLabsApiKey, null, $log);
31
+
32
+ $log_data = [];
33
+
34
+ // Generate script if it does not exist
35
+ $script_file = __DIR__ . '/scripts/' . md5($prompt) . '.txt';
36
+ if (!file_exists($script_file)) {
37
+ $log->info('Generating script...');
38
+ $role = 'you are a scriptwriter from William S Burroughs era. respond as he would.';
39
+ $script = $openai->generateScript($role, $prompt);
40
+ file_put_contents($script_file, $script);
41
+ } else {
42
+ $log_data['txtprompt_search'] = true;
43
+ $script = file_get_contents($script_file);
44
+ }
45
+ $log->info('Script: ' . $script);
46
+
47
+ // Generate image prompt if it does not exist
48
+ $image_prompt_file = __DIR__ . '/image_prompts/' . md5($prompt) . '.txt';
49
+ if (!file_exists($image_prompt_file)) {
50
+ $log->info('Generating image prompt...');
51
+ $role = 'you are a brilliant AI prompt writer. create an image prompt based on this script.';
52
+ $image_prompt = $openai->generateScript($role, $script);
53
+ file_put_contents($image_prompt_file, $image_prompt);
54
+ } else {
55
+ $image_prompt = file_get_contents($image_prompt_file);
56
+ $log_data['imgprompt_search'] = true;
57
+ }
58
+ $log->info('Image Prompt: ' . $image_prompt);
59
+
60
+ $audio_file = __DIR__ . '/voices/' . md5($prompt) . '.mp3';
61
+ if (!file_exists($audio_file)) {
62
+ $log->info('Generating audio...');
63
+ $audio_data = [
64
+ 'text' => $script,
65
+ 'voiceId' => '21m00Tcm4TlvDq8ikWAM'
66
+ ];
67
+ $audio_response = $elevenLabsApi->textToSpeechWithVoiceId($audio_data['voiceId'], $audio_data); file_put_contents($audio_file, $audio_response->getBody());
68
+ } else {
69
+ $log_data['audio_cache'] = true;
70
+ }
71
+
72
+ // Calculate the duration of the audio file
73
+ $log->info('Calculating audio duration...');
74
+ $getID3 = new getID3;
75
+ $file_info = $getID3->analyze($audio_file);
76
+ $audio_duration = $file_info['playtime_seconds'];
77
+
78
+ $seconds_per_image = 6;
79
+ $frames_per_second = 25;
80
+ $frames_per_image = $seconds_per_image * $frames_per_second;
81
+ $number_of_images = intval($audio_duration / $seconds_per_image);
82
+
83
+ $log->info('Creating ' . $number_of_images . ' images for a ' . $audio_duration . ' second audio clip!');
84
+
85
+ // Generate images if they do not exist
86
+ $images_dir = __DIR__ . '/images/' . md5($prompt);
87
+ if (!file_exists($images_dir)) {
88
+ $log->info('Generating images...');
89
+ mkdir($images_dir);
90
+ $images = $openai->generateImage($image_prompt, __DIR__ . DIRECTORY_SEPARATOR . 'images/' . md5($prompt), '1024x1024', $number_of_images);
91
+ $log_data['images'] = $images;
92
+ } else {
93
+ $images = [];
94
+ $imagesPath = $images_dir;
95
+ $log->info('Checking imagesPath ' . $imagesPath);
96
+ foreach (glob($imagesPath . '/*.png') as $image) {
97
+ $images[] = $image;
98
+ }
99
+ $log_data['image_search'] = true;
100
+ }
101
+
102
+ // Create MeltProject
103
+ $log->info('Begin the melty.');
104
+ $project = new MeltProject($log, 1920, 1080, $frames_per_second);
105
+
106
+ // Add images to project
107
+ $log->info('Adding images to project...');
108
+ foreach ($images as $image) {
109
+ $log->info('Adding image ' . $image);
110
+ $project->addImage($image, 0, $frames_per_image);
111
+ }
112
+
113
+ // Add audio to project
114
+ $log->info('Adding audio to project...');
115
+ $project->setVoiceover($audio_file);
116
+ $xml = $project->generateXml();
117
+
118
+ // Save project
119
+ $log->info('Saving project to scene.xml...');
120
+ $xml->save('scene.xml');
121
+ $log->info('End the melt.');
122
+
123
+ // Log data
124
+ $log->info('Data:', $log_data);
125
+ $logHandler = new \Monolog\Handler\StreamHandler('php://output', \Monolog\Logger::DEBUG);
126
+ $log->pushHandler($logHandler);
logs/scene.log ADDED
@@ -0,0 +1,252 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ [2023-04-20T06:24:05.493441+02:00] scene.ERROR: Failed to load the configuration file. {"exception":"[object] (RuntimeException(code: 0): SplFileObject::__construct(C:\\xampp\\htdocs\\proj\\chatgpt-video-generator\\classes/../config/config.json): Failed to open stream: No such file or directory at C:\\xampp\\htdocs\\proj\\chatgpt-video-generator\\classes\\AppConfig.php:20)"} []
2
+ [2023-04-20T06:26:16.420042+02:00] scene.INFO: Generating script... [] []
3
+ [2023-04-20T06:26:16.911456+02:00] scene.ERROR: RequestException encountered {"message":"Client error: `POST https://api.openai.com/v1/chat/completions` resulted in a `401 Unauthorized` response:\n{\n \"error\": {\n \"message\": \"Incorrect API key provided: your_ope***_key. You can find your API key at https://p (truncated...)\n"} []
4
+ [2023-04-20T06:26:16.912023+02:00] scene.INFO: Script: [] []
5
+ [2023-04-20T06:26:16.912114+02:00] scene.INFO: Generating image prompt... [] []
6
+ [2023-04-20T06:29:22.732543+02:00] scene.ERROR: API key not found for class OpenAI. [] []
7
+ [2023-04-20T06:33:19.207749+02:00] scene.ERROR: API key not found for class OpenAI. [] []
8
+ [2023-04-20T06:34:40.862677+02:00] scene.INFO: Generating script... [] []
9
+ [2023-04-20T06:34:41.505888+02:00] scene.ERROR: RequestException encountered {"message":"Client error: `POST https://api.openai.com/v1/chat/completions` resulted in a `429 Too Many Requests` response:\n{\n \"error\": {\n \"message\": \"You exceeded your current quota, please check your plan and billing details.\",\n (truncated...)\n"} []
10
+ [2023-04-20T06:34:41.506274+02:00] scene.INFO: Script: [] []
11
+ [2023-04-20T06:34:41.506340+02:00] scene.INFO: Generating image prompt... [] []
12
+ [2023-04-20T06:35:58.959277+02:00] scene.INFO: Generating script... [] []
13
+ [2023-04-20T06:35:59.426428+02:00] scene.ERROR: RequestException encountered {"message":"Client error: `POST https://api.openai.com/v1/chat/completions` resulted in a `429 Too Many Requests` response:\n{\n \"error\": {\n \"message\": \"You exceeded your current quota, please check your plan and billing details.\",\n (truncated...)\n"} []
14
+ [2023-04-20T06:35:59.429363+02:00] scene.INFO: Script: [] []
15
+ [2023-04-20T06:35:59.429816+02:00] scene.INFO: Generating image prompt... [] []
16
+ [2023-04-20T06:39:45.120597+02:00] scene.INFO: Generating script... [] []
17
+ [2023-04-20T06:39:45.590069+02:00] scene.ERROR: RequestException encountered {"message":"Client error: `POST https://api.openai.com/v1/chat/completions` resulted in a `429 Too Many Requests` response:\n{\n \"error\": {\n \"message\": \"You exceeded your current quota, please check your plan and billing details.\",\n (truncated...)\n"} []
18
+ [2023-04-20T06:39:45.590654+02:00] scene.INFO: Script: [] []
19
+ [2023-04-20T06:39:45.590765+02:00] scene.INFO: Generating image prompt... [] []
20
+ [2023-04-20T06:50:19.552641+02:00] scene.INFO: Generating script... [] []
21
+ [2023-04-20T06:50:20.131157+02:00] scene.ERROR: RequestException encountered {"message":"Client error: `POST https://api.openai.com/v1/chat/completions` resulted in a `429 Too Many Requests` response:\n{\n \"error\": {\n \"message\": \"You exceeded your current quota, please check your plan and billing details.\",\n (truncated...)\n"} []
22
+ [2023-04-20T06:50:20.132123+02:00] scene.INFO: Script: [] []
23
+ [2023-04-20T06:50:20.132241+02:00] scene.INFO: Generating image prompt... [] []
24
+ [2023-04-20T14:23:17.581472+02:00] scene.INFO: Generating script... [] []
25
+ [2023-04-20T14:23:18.910605+02:00] scene.ERROR: RequestException encountered {"message":"Client error: `POST https://api.openai.com/v1/chat/completions` resulted in a `429 Too Many Requests` response:\n{\n \"error\": {\n \"message\": \"You exceeded your current quota, please check your plan and billing details.\",\n (truncated...)\n"} []
26
+ [2023-04-20T14:23:18.912002+02:00] scene.INFO: Script: [] []
27
+ [2023-04-20T14:23:18.912318+02:00] scene.INFO: Generating image prompt... [] []
28
+ [2023-04-24T12:41:47.697808+02:00] scene.INFO: Generating script... [] []
29
+ [2023-04-24T12:41:51.835504+02:00] scene.INFO: Script: "Interfacing the human brain with technology? In my day we called that telepathy. But if that's what it takes to blow people's socks off, I suppose I'll have to give it a try." [] []
30
+ [2023-04-24T12:41:51.836233+02:00] scene.INFO: Generating image prompt... [] []
31
+ [2023-04-24T12:41:56.205097+02:00] scene.INFO: Image Prompt: An image of a person sitting in a futuristic laboratory with wires and electrodes attached to their head, as they concentrate on a screen displaying their brain activity. Around them, scientists in lab coats and computer screens monitor the progress of the experiment. The room is filled with bright, neon lights and high-tech gadgets, giving the impression of an otherworldly laboratory. [] []
32
+ [2023-04-24T12:41:56.205722+02:00] scene.INFO: Generating audio... [] []
33
+ [2023-04-24T12:44:06.309224+02:00] scene.INFO: Generating script... [] []
34
+ [2023-04-24T12:44:14.432117+02:00] scene.INFO: Script: There's a new player in town, folks, and its name is Neuralink. The brainchild of none other than Elon Musk himself, this cutting-edge technology promises to take us on a journey to the very depths of the human mind. Imagine being able to control your thoughts and actions with a simple click of a button? The possibilities are endless. From unlocking the secrets of our potential to enhancing our daily lives, the future is looking brighter than ever before. So get ready to strap on your thinking caps, folks, because Neuralink is about to blow our minds! [] []
35
+ [2023-04-24T12:44:14.433116+02:00] scene.INFO: Generating image prompt... [] []
36
+ [2023-04-24T12:44:19.643672+02:00] scene.INFO: Image Prompt: Image prompt: A person sitting on a chair with a device attached to their head while wires and circuits are connected to their brain. The device flashes neon lights as the person's face is filled with amazement, signifying the new era of human enhancement through technology. Behind them, a futuristic cityscape can be seen with towering skyscrapers and flying cars, hinting at the endless possibilities for humanity with the help of Neuralink. [] []
37
+ [2023-04-24T12:44:19.644860+02:00] scene.INFO: Generating audio... [] []
38
+ [2023-04-24T12:46:47.466197+02:00] scene.INFO: Script: There's a new player in town, folks, and its name is Neuralink. The brainchild of none other than Elon Musk himself, this cutting-edge technology promises to take us on a journey to the very depths of the human mind. Imagine being able to control your thoughts and actions with a simple click of a button? The possibilities are endless. From unlocking the secrets of our potential to enhancing our daily lives, the future is looking brighter than ever before. So get ready to strap on your thinking caps, folks, because Neuralink is about to blow our minds! [] []
39
+ [2023-04-24T12:46:47.470300+02:00] scene.INFO: Generating image prompt... [] []
40
+ [2023-04-24T12:46:54.755538+02:00] scene.INFO: Image Prompt: An image prompt based on this script could be a futuristic city skyline, with the Neuralink logo hovering in the sky above it. Perhaps there are people on the streets below, each with a small device implanted in their head, allowing them to control their thoughts and actions. The sky could be filled with drones, medical transports, and other advanced technologies, hinting at the incredible advancements that Neuralink has brought to this society. The overall image would convey a sense of excitement, innovation, and possible caution about what lies ahead as humanity delves deeper into the mysteries of the mind. [] []
41
+ [2023-04-24T12:46:54.756807+02:00] scene.INFO: Generating audio... [] []
42
+ [2023-04-24T12:49:12.909514+02:00] scene.INFO: Script: There's a new player in town, folks, and its name is Neuralink. The brainchild of none other than Elon Musk himself, this cutting-edge technology promises to take us on a journey to the very depths of the human mind. Imagine being able to control your thoughts and actions with a simple click of a button? The possibilities are endless. From unlocking the secrets of our potential to enhancing our daily lives, the future is looking brighter than ever before. So get ready to strap on your thinking caps, folks, because Neuralink is about to blow our minds! [] []
43
+ [2023-04-24T12:49:12.915933+02:00] scene.INFO: Image Prompt: An image prompt based on this script could be a futuristic city skyline, with the Neuralink logo hovering in the sky above it. Perhaps there are people on the streets below, each with a small device implanted in their head, allowing them to control their thoughts and actions. The sky could be filled with drones, medical transports, and other advanced technologies, hinting at the incredible advancements that Neuralink has brought to this society. The overall image would convey a sense of excitement, innovation, and possible caution about what lies ahead as humanity delves deeper into the mysteries of the mind. [] []
44
+ [2023-04-24T12:49:12.916855+02:00] scene.INFO: Generating audio... [] []
45
+ [2023-04-24T12:58:19.894060+02:00] scene.INFO: Script: There's a new player in town, folks, and its name is Neuralink. The brainchild of none other than Elon Musk himself, this cutting-edge technology promises to take us on a journey to the very depths of the human mind. Imagine being able to control your thoughts and actions with a simple click of a button? The possibilities are endless. From unlocking the secrets of our potential to enhancing our daily lives, the future is looking brighter than ever before. So get ready to strap on your thinking caps, folks, because Neuralink is about to blow our minds! [] []
46
+ [2023-04-24T12:58:19.902323+02:00] scene.INFO: Image Prompt: An image prompt based on this script could be a futuristic city skyline, with the Neuralink logo hovering in the sky above it. Perhaps there are people on the streets below, each with a small device implanted in their head, allowing them to control their thoughts and actions. The sky could be filled with drones, medical transports, and other advanced technologies, hinting at the incredible advancements that Neuralink has brought to this society. The overall image would convey a sense of excitement, innovation, and possible caution about what lies ahead as humanity delves deeper into the mysteries of the mind. [] []
47
+ [2023-04-24T12:58:19.903195+02:00] scene.INFO: Generating audio... [] []
48
+ [2023-04-24T20:11:57.761198+02:00] scene.INFO: Script: There's a new player in town, folks, and its name is Neuralink. The brainchild of none other than Elon Musk himself, this cutting-edge technology promises to take us on a journey to the very depths of the human mind. Imagine being able to control your thoughts and actions with a simple click of a button? The possibilities are endless. From unlocking the secrets of our potential to enhancing our daily lives, the future is looking brighter than ever before. So get ready to strap on your thinking caps, folks, because Neuralink is about to blow our minds! [] []
49
+ [2023-04-24T20:11:57.771573+02:00] scene.INFO: Image Prompt: An image prompt based on this script could be a futuristic city skyline, with the Neuralink logo hovering in the sky above it. Perhaps there are people on the streets below, each with a small device implanted in their head, allowing them to control their thoughts and actions. The sky could be filled with drones, medical transports, and other advanced technologies, hinting at the incredible advancements that Neuralink has brought to this society. The overall image would convey a sense of excitement, innovation, and possible caution about what lies ahead as humanity delves deeper into the mysteries of the mind. [] []
50
+ [2023-04-24T20:11:57.772555+02:00] scene.INFO: Generating audio... [] []
51
+ [2023-04-25T06:44:52.313524+02:00] scene.INFO: Script: There's a new player in town, folks, and its name is Neuralink. The brainchild of none other than Elon Musk himself, this cutting-edge technology promises to take us on a journey to the very depths of the human mind. Imagine being able to control your thoughts and actions with a simple click of a button? The possibilities are endless. From unlocking the secrets of our potential to enhancing our daily lives, the future is looking brighter than ever before. So get ready to strap on your thinking caps, folks, because Neuralink is about to blow our minds! [] []
52
+ [2023-04-25T06:44:52.323036+02:00] scene.INFO: Image Prompt: An image prompt based on this script could be a futuristic city skyline, with the Neuralink logo hovering in the sky above it. Perhaps there are people on the streets below, each with a small device implanted in their head, allowing them to control their thoughts and actions. The sky could be filled with drones, medical transports, and other advanced technologies, hinting at the incredible advancements that Neuralink has brought to this society. The overall image would convey a sense of excitement, innovation, and possible caution about what lies ahead as humanity delves deeper into the mysteries of the mind. [] []
53
+ [2023-04-25T06:44:52.323929+02:00] scene.INFO: Generating audio... [] []
54
+ [2023-04-25T06:45:00.997736+02:00] scene.INFO: Calculating audio duration... [] []
55
+ [2023-04-25T06:45:01.609843+02:00] scene.INFO: Creating 5 images for a 30.171375 second audio clip! [] []
56
+ [2023-04-25T06:45:01.610535+02:00] scene.INFO: Generating images... [] []
57
+ [2023-04-25T06:45:15.036981+02:00] scene.INFO: Image saved successfully {"path":"C:\\xampp\\htdocs\\proj\\chatgpt-video-generator\\images/0a01de519f4be0d2a03d9d7ec06e2f02/img-IF54qgZfFW2ykjafKXeghPKw.png"} []
58
+ [2023-04-25T06:45:18.742070+02:00] scene.INFO: Image saved successfully {"path":"C:\\xampp\\htdocs\\proj\\chatgpt-video-generator\\images/0a01de519f4be0d2a03d9d7ec06e2f02/img-qFl515bT7B2GX1x0yFNFsI7V.png"} []
59
+ [2023-04-25T06:45:22.748175+02:00] scene.INFO: Image saved successfully {"path":"C:\\xampp\\htdocs\\proj\\chatgpt-video-generator\\images/0a01de519f4be0d2a03d9d7ec06e2f02/img-hryL56kGMxW24K8EgsAJs03e.png"} []
60
+ [2023-04-25T06:45:26.722748+02:00] scene.INFO: Image saved successfully {"path":"C:\\xampp\\htdocs\\proj\\chatgpt-video-generator\\images/0a01de519f4be0d2a03d9d7ec06e2f02/img-Z2jDI9M4QGCDgmjkomAVdkgY.png"} []
61
+ [2023-04-25T06:45:30.527974+02:00] scene.INFO: Image saved successfully {"path":"C:\\xampp\\htdocs\\proj\\chatgpt-video-generator\\images/0a01de519f4be0d2a03d9d7ec06e2f02/img-xcfrkhbtGHTgDGql76UlAKYN.png"} []
62
+ [2023-04-25T06:45:30.531223+02:00] scene.INFO: Begin the melty. [] []
63
+ [2023-04-25T06:45:30.533798+02:00] scene.INFO: Initialized MeltProject width:1920 height:1080 framerate:25 outputFile ./scene.mp4 [] []
64
+ [2023-04-25T06:45:30.534247+02:00] scene.INFO: Adding images to project... [] []
65
+ [2023-04-25T06:45:30.534553+02:00] scene.INFO: Adding image C:\xampp\htdocs\proj\chatgpt-video-generator\images/0a01de519f4be0d2a03d9d7ec06e2f02/img-IF54qgZfFW2ykjafKXeghPKw.png [] []
66
+ [2023-04-25T06:45:30.535292+02:00] scene.INFO: Adding image {"path":"C:\\xampp\\htdocs\\proj\\chatgpt-video-generator\\images/0a01de519f4be0d2a03d9d7ec06e2f02/img-IF54qgZfFW2ykjafKXeghPKw.png","in":0,"out":150} []
67
+ [2023-04-25T06:45:30.536473+02:00] scene.INFO: Adding image C:\xampp\htdocs\proj\chatgpt-video-generator\images/0a01de519f4be0d2a03d9d7ec06e2f02/img-qFl515bT7B2GX1x0yFNFsI7V.png [] []
68
+ [2023-04-25T06:45:30.537614+02:00] scene.INFO: Adding image {"path":"C:\\xampp\\htdocs\\proj\\chatgpt-video-generator\\images/0a01de519f4be0d2a03d9d7ec06e2f02/img-qFl515bT7B2GX1x0yFNFsI7V.png","in":0,"out":150} []
69
+ [2023-04-25T06:45:30.541723+02:00] scene.INFO: Adding image C:\xampp\htdocs\proj\chatgpt-video-generator\images/0a01de519f4be0d2a03d9d7ec06e2f02/img-hryL56kGMxW24K8EgsAJs03e.png [] []
70
+ [2023-04-25T06:45:30.542888+02:00] scene.INFO: Adding image {"path":"C:\\xampp\\htdocs\\proj\\chatgpt-video-generator\\images/0a01de519f4be0d2a03d9d7ec06e2f02/img-hryL56kGMxW24K8EgsAJs03e.png","in":0,"out":150} []
71
+ [2023-04-25T06:45:30.543907+02:00] scene.INFO: Adding image C:\xampp\htdocs\proj\chatgpt-video-generator\images/0a01de519f4be0d2a03d9d7ec06e2f02/img-Z2jDI9M4QGCDgmjkomAVdkgY.png [] []
72
+ [2023-04-25T06:45:30.545112+02:00] scene.INFO: Adding image {"path":"C:\\xampp\\htdocs\\proj\\chatgpt-video-generator\\images/0a01de519f4be0d2a03d9d7ec06e2f02/img-Z2jDI9M4QGCDgmjkomAVdkgY.png","in":0,"out":150} []
73
+ [2023-04-25T06:45:30.546293+02:00] scene.INFO: Adding image C:\xampp\htdocs\proj\chatgpt-video-generator\images/0a01de519f4be0d2a03d9d7ec06e2f02/img-xcfrkhbtGHTgDGql76UlAKYN.png [] []
74
+ [2023-04-25T06:45:30.547237+02:00] scene.INFO: Adding image {"path":"C:\\xampp\\htdocs\\proj\\chatgpt-video-generator\\images/0a01de519f4be0d2a03d9d7ec06e2f02/img-xcfrkhbtGHTgDGql76UlAKYN.png","in":0,"out":150} []
75
+ [2023-04-25T06:45:30.548261+02:00] scene.INFO: Adding audio to project... [] []
76
+ [2023-04-25T06:45:30.551586+02:00] scene.INFO: Adding audio track: C:\xampp\htdocs\proj\chatgpt-video-generator/voices/0a01de519f4be0d2a03d9d7ec06e2f02.mp3 [] []
77
+ [2023-04-25T06:45:30.555993+02:00] scene.INFO: Saving project to scene.xml... [] []
78
+ [2023-04-25T06:45:30.559563+02:00] scene.INFO: End the melt. [] []
79
+ [2023-04-25T06:45:30.560610+02:00] scene.INFO: Data: {"txtprompt_search":true,"imgprompt_search":true,"images":["C:\\xampp\\htdocs\\proj\\chatgpt-video-generator\\images/0a01de519f4be0d2a03d9d7ec06e2f02/img-IF54qgZfFW2ykjafKXeghPKw.png","C:\\xampp\\htdocs\\proj\\chatgpt-video-generator\\images/0a01de519f4be0d2a03d9d7ec06e2f02/img-qFl515bT7B2GX1x0yFNFsI7V.png","C:\\xampp\\htdocs\\proj\\chatgpt-video-generator\\images/0a01de519f4be0d2a03d9d7ec06e2f02/img-hryL56kGMxW24K8EgsAJs03e.png","C:\\xampp\\htdocs\\proj\\chatgpt-video-generator\\images/0a01de519f4be0d2a03d9d7ec06e2f02/img-Z2jDI9M4QGCDgmjkomAVdkgY.png","C:\\xampp\\htdocs\\proj\\chatgpt-video-generator\\images/0a01de519f4be0d2a03d9d7ec06e2f02/img-xcfrkhbtGHTgDGql76UlAKYN.png"]} []
80
+ [2023-04-25T06:53:09.716405+02:00] scene.INFO: Script: There's a new player in town, folks, and its name is Neuralink. The brainchild of none other than Elon Musk himself, this cutting-edge technology promises to take us on a journey to the very depths of the human mind. Imagine being able to control your thoughts and actions with a simple click of a button? The possibilities are endless. From unlocking the secrets of our potential to enhancing our daily lives, the future is looking brighter than ever before. So get ready to strap on your thinking caps, folks, because Neuralink is about to blow our minds! [] []
81
+ [2023-04-25T06:53:09.724802+02:00] scene.INFO: Image Prompt: An image prompt based on this script could be a futuristic city skyline, with the Neuralink logo hovering in the sky above it. Perhaps there are people on the streets below, each with a small device implanted in their head, allowing them to control their thoughts and actions. The sky could be filled with drones, medical transports, and other advanced technologies, hinting at the incredible advancements that Neuralink has brought to this society. The overall image would convey a sense of excitement, innovation, and possible caution about what lies ahead as humanity delves deeper into the mysteries of the mind. [] []
82
+ [2023-04-25T06:53:09.725906+02:00] scene.INFO: Calculating audio duration... [] []
83
+ [2023-04-25T06:53:09.767961+02:00] scene.INFO: Creating 5 images for a 30.171375 second audio clip! [] []
84
+ [2023-04-25T06:53:09.768772+02:00] scene.INFO: Checking imagesPath C:\xampp\htdocs\proj\chatgpt-video-generator/images/0a01de519f4be0d2a03d9d7ec06e2f02 [] []
85
+ [2023-04-25T06:53:09.769965+02:00] scene.INFO: Begin the melty. [] []
86
+ [2023-04-25T06:53:09.772176+02:00] scene.INFO: Initialized MeltProject width:1920 height:1080 framerate:25 outputFile ./scene.mp4 [] []
87
+ [2023-04-25T06:53:09.772787+02:00] scene.INFO: Adding images to project... [] []
88
+ [2023-04-25T06:53:09.773148+02:00] scene.INFO: Adding image C:\xampp\htdocs\proj\chatgpt-video-generator/images/0a01de519f4be0d2a03d9d7ec06e2f02/img-IF54qgZfFW2ykjafKXeghPKw.png [] []
89
+ [2023-04-25T06:53:09.773970+02:00] scene.INFO: Adding image {"path":"C:\\xampp\\htdocs\\proj\\chatgpt-video-generator/images/0a01de519f4be0d2a03d9d7ec06e2f02/img-IF54qgZfFW2ykjafKXeghPKw.png","in":0,"out":150} []
90
+ [2023-04-25T06:53:09.774450+02:00] scene.INFO: Adding image C:\xampp\htdocs\proj\chatgpt-video-generator/images/0a01de519f4be0d2a03d9d7ec06e2f02/img-Z2jDI9M4QGCDgmjkomAVdkgY.png [] []
91
+ [2023-04-25T06:53:09.775038+02:00] scene.INFO: Adding image {"path":"C:\\xampp\\htdocs\\proj\\chatgpt-video-generator/images/0a01de519f4be0d2a03d9d7ec06e2f02/img-Z2jDI9M4QGCDgmjkomAVdkgY.png","in":0,"out":150} []
92
+ [2023-04-25T06:53:09.776700+02:00] scene.INFO: Adding image C:\xampp\htdocs\proj\chatgpt-video-generator/images/0a01de519f4be0d2a03d9d7ec06e2f02/img-hryL56kGMxW24K8EgsAJs03e.png [] []
93
+ [2023-04-25T06:53:09.777499+02:00] scene.INFO: Adding image {"path":"C:\\xampp\\htdocs\\proj\\chatgpt-video-generator/images/0a01de519f4be0d2a03d9d7ec06e2f02/img-hryL56kGMxW24K8EgsAJs03e.png","in":0,"out":150} []
94
+ [2023-04-25T06:53:09.778618+02:00] scene.INFO: Adding image C:\xampp\htdocs\proj\chatgpt-video-generator/images/0a01de519f4be0d2a03d9d7ec06e2f02/img-qFl515bT7B2GX1x0yFNFsI7V.png [] []
95
+ [2023-04-25T06:53:09.782235+02:00] scene.INFO: Adding image {"path":"C:\\xampp\\htdocs\\proj\\chatgpt-video-generator/images/0a01de519f4be0d2a03d9d7ec06e2f02/img-qFl515bT7B2GX1x0yFNFsI7V.png","in":0,"out":150} []
96
+ [2023-04-25T06:53:09.783913+02:00] scene.INFO: Adding image C:\xampp\htdocs\proj\chatgpt-video-generator/images/0a01de519f4be0d2a03d9d7ec06e2f02/img-xcfrkhbtGHTgDGql76UlAKYN.png [] []
97
+ [2023-04-25T06:53:09.784959+02:00] scene.INFO: Adding image {"path":"C:\\xampp\\htdocs\\proj\\chatgpt-video-generator/images/0a01de519f4be0d2a03d9d7ec06e2f02/img-xcfrkhbtGHTgDGql76UlAKYN.png","in":0,"out":150} []
98
+ [2023-04-25T06:53:09.786239+02:00] scene.INFO: Adding audio to project... [] []
99
+ [2023-04-25T06:53:09.787526+02:00] scene.INFO: Adding audio track: C:\xampp\htdocs\proj\chatgpt-video-generator/voices/0a01de519f4be0d2a03d9d7ec06e2f02.mp3 [] []
100
+ [2023-04-25T06:53:09.791796+02:00] scene.INFO: Saving project to scene.xml... [] []
101
+ [2023-04-25T06:53:09.795752+02:00] scene.INFO: End the melt. [] []
102
+ [2023-04-25T06:53:09.796354+02:00] scene.INFO: Data: {"txtprompt_search":true,"imgprompt_search":true,"audio_cache":true,"image_search":true} []
103
+ [2023-04-25T07:27:53.597007+02:00] scene.INFO: Generating script... [] []
104
+ [2023-04-25T07:28:03.391616+02:00] scene.INFO: Script: I'm sorry, but Mr. Burroughs was not known to write about heart surgeons in a short and gentle manner. His writing style was characterized by experimentation with language, avant-garde techniques, and a dark, often dystopian worldview. He was more likely to write something along the lines of: The heart surgeon, with his precision tools and sterile environment, is a cold and calculating figure. He slices through flesh and bone, manipulating the inner workings of the human machine. But what happens when he becomes the machine? When his own heart is replaced with a mechanical pump, and he loses touch with his own humanity? The result is a grotesque fusion of man and machine, a cyborg devoid of feeling and empathy. This is the world we are heading towards, a world where the surgeon's scalpel is replaced by the technician's soldering iron, and our very souls are up for grabs. [] []
105
+ [2023-04-25T07:28:03.392907+02:00] scene.INFO: Generating image prompt... [] []
106
+ [2023-04-25T07:28:08.818211+02:00] scene.INFO: Image Prompt: The image prompt based on this script could be a digital art piece depicting a heart surgeon with a metallic heart, sitting in a clinical and sterile environment. His body, from the waist up, is overtaken by wires, tubes, and metallic components, and his face is emotionless, as if he has lost his humanity. The backdrop could be dark and dystopian, with symbols of machinery and technology looming in the background. This image could be a visual representation of the danger of humans becoming too dependent on technology and losing touch with their own emotions and compassion. [] []
107
+ [2023-04-25T07:28:08.819179+02:00] scene.INFO: Generating audio... [] []
108
+ [2023-04-25T07:28:22.940309+02:00] scene.INFO: Calculating audio duration... [] []
109
+ [2023-04-25T07:28:23.368511+02:00] scene.INFO: Creating 8 images for a 51.226 second audio clip! [] []
110
+ [2023-04-25T07:28:23.369197+02:00] scene.INFO: Generating images... [] []
111
+ [2023-04-25T07:28:24.020482+02:00] scene.ERROR: RequestException encountered {"message":"Client error: `POST https://api.openai.com/v1/images/generations` resulted in a `429 Too Many Requests` response:\n{\n \"error\": {\n \"code\": \"rate_limit_exceeded\",\n \"message\": \"Rate limit exceeded for images per minute in organizat (truncated...)\n"} []
112
+ [2023-04-25T07:28:24.021194+02:00] scene.INFO: Begin the melty. [] []
113
+ [2023-04-25T07:28:24.023048+02:00] scene.INFO: Initialized MeltProject width:1920 height:1080 framerate:25 outputFile ./scene.mp4 [] []
114
+ [2023-04-25T07:28:24.023363+02:00] scene.INFO: Adding images to project... [] []
115
+ [2023-04-25T07:28:24.024503+02:00] scene.INFO: Adding audio to project... [] []
116
+ [2023-04-25T07:28:24.024860+02:00] scene.INFO: Adding audio track: C:\xampp\htdocs\proj\chatgpt-video-generator/voices/5b1642a5c888484b14c70f29fd488154.mp3 [] []
117
+ [2023-04-25T07:28:24.027877+02:00] scene.INFO: Saving project to scene.xml... [] []
118
+ [2023-04-25T07:28:24.030800+02:00] scene.INFO: End the melt. [] []
119
+ [2023-04-25T07:28:24.032610+02:00] scene.INFO: Data: {"images":null} []
120
+ [2023-05-02T07:27:17.746459+02:00] scene.INFO: Script: I'm sorry, but Mr. Burroughs was not known to write about heart surgeons in a short and gentle manner. His writing style was characterized by experimentation with language, avant-garde techniques, and a dark, often dystopian worldview. He was more likely to write something along the lines of: The heart surgeon, with his precision tools and sterile environment, is a cold and calculating figure. He slices through flesh and bone, manipulating the inner workings of the human machine. But what happens when he becomes the machine? When his own heart is replaced with a mechanical pump, and he loses touch with his own humanity? The result is a grotesque fusion of man and machine, a cyborg devoid of feeling and empathy. This is the world we are heading towards, a world where the surgeon's scalpel is replaced by the technician's soldering iron, and our very souls are up for grabs. [] []
121
+ [2023-05-02T07:27:17.820849+02:00] scene.INFO: Image Prompt: The image prompt based on this script could be a digital art piece depicting a heart surgeon with a metallic heart, sitting in a clinical and sterile environment. His body, from the waist up, is overtaken by wires, tubes, and metallic components, and his face is emotionless, as if he has lost his humanity. The backdrop could be dark and dystopian, with symbols of machinery and technology looming in the background. This image could be a visual representation of the danger of humans becoming too dependent on technology and losing touch with their own emotions and compassion. [] []
122
+ [2023-05-02T07:27:17.822922+02:00] scene.INFO: Calculating audio duration... [] []
123
+ [2023-05-02T07:27:18.237276+02:00] scene.INFO: Creating 8 images for a 51.226 second audio clip! [] []
124
+ [2023-05-02T07:27:18.240165+02:00] scene.INFO: Checking imagesPath C:\xampp\htdocs\proj\chatgpt-video-generator/images/5b1642a5c888484b14c70f29fd488154 [] []
125
+ [2023-05-02T07:27:18.240825+02:00] scene.INFO: Begin the melty. [] []
126
+ [2023-05-02T07:27:18.281682+02:00] scene.INFO: Initialized MeltProject width:1920 height:1080 framerate:25 outputFile ./scene.mp4 [] []
127
+ [2023-05-02T07:27:18.282284+02:00] scene.INFO: Adding images to project... [] []
128
+ [2023-05-02T07:27:18.283304+02:00] scene.INFO: Adding audio to project... [] []
129
+ [2023-05-02T07:27:18.283520+02:00] scene.INFO: Adding audio track: C:\xampp\htdocs\proj\chatgpt-video-generator/voices/5b1642a5c888484b14c70f29fd488154.mp3 [] []
130
+ [2023-05-02T07:27:18.286120+02:00] scene.INFO: Saving project to scene.xml... [] []
131
+ [2023-05-02T07:27:18.289000+02:00] scene.INFO: End the melt. [] []
132
+ [2023-05-02T07:27:18.289396+02:00] scene.INFO: Data: {"txtprompt_search":true,"imgprompt_search":true,"audio_cache":true,"image_search":true} []
133
+ [2023-05-02T07:32:05.228775+02:00] scene.INFO: Generating script... [] []
134
+ [2023-05-02T07:32:08.754887+02:00] scene.INFO: Script: India, the land of ancient wisdom and kaleidoscopic colors. Sights and sounds that agitate the senses and stir the soul. A place where chaos and harmony coexist like longtime lovers in a dance that never ends. The aroma of exotic spices and the flavors that define a culture. If the road is all about the journey and not the destination, then India is a journey of a lifetime, my friend. [] []
135
+ [2023-05-02T07:32:08.755926+02:00] scene.INFO: Generating image prompt... [] []
136
+ [2023-05-02T07:32:11.615002+02:00] scene.INFO: Image Prompt: Image Prompt: A bustling market in India, with vendors selling vibrant spices, textiles, and fresh fruits. The air is heavy with the fragrant scent of cardamom and cumin. Colorful saris and scarves flutter in the wind like a sea of fabric waves. A cacophony of honking auto-rickshaws and bellowing market vendors fills the air, while a lone cow leisurely strolls through the chaos. In the distance, a towering temple spire rises above the chaotic scene, a symbol of faith and devotion amidst the hustle and bustle of daily life. [] []
137
+ [2023-05-02T07:32:11.616375+02:00] scene.INFO: Generating audio... [] []
138
+ [2023-05-02T07:32:18.038460+02:00] scene.INFO: Calculating audio duration... [] []
139
+ [2023-05-02T07:32:18.088005+02:00] scene.INFO: Creating 3 images for a 22.700375 second audio clip! [] []
140
+ [2023-05-02T07:32:18.089039+02:00] scene.INFO: Generating images... [] []
141
+ [2023-05-02T07:32:28.721426+02:00] scene.INFO: Image saved successfully {"path":"C:\\xampp\\htdocs\\proj\\chatgpt-video-generator\\images/e9b61e8d32782ab8777c8a8a61757618/img-R7WSQjz8S4Q9wdkp5YWLS4xM.png"} []
142
+ [2023-05-02T07:32:32.549396+02:00] scene.INFO: Image saved successfully {"path":"C:\\xampp\\htdocs\\proj\\chatgpt-video-generator\\images/e9b61e8d32782ab8777c8a8a61757618/img-r9D0vbzQVkI9WrqaLoD5BWlo.png"} []
143
+ [2023-05-02T07:32:36.167339+02:00] scene.INFO: Image saved successfully {"path":"C:\\xampp\\htdocs\\proj\\chatgpt-video-generator\\images/e9b61e8d32782ab8777c8a8a61757618/img-9U9k2GmkfG7xMgZuKGgBwPKT.png"} []
144
+ [2023-05-02T07:32:36.171387+02:00] scene.INFO: Begin the melty. [] []
145
+ [2023-05-02T07:32:36.173572+02:00] scene.INFO: Initialized MeltProject width:1920 height:1080 framerate:25 outputFile ./scene.mp4 [] []
146
+ [2023-05-02T07:32:36.174009+02:00] scene.INFO: Adding images to project... [] []
147
+ [2023-05-02T07:32:36.174339+02:00] scene.INFO: Adding image C:\xampp\htdocs\proj\chatgpt-video-generator\images/e9b61e8d32782ab8777c8a8a61757618/img-R7WSQjz8S4Q9wdkp5YWLS4xM.png [] []
148
+ [2023-05-02T07:32:36.175022+02:00] scene.INFO: Adding image {"path":"C:\\xampp\\htdocs\\proj\\chatgpt-video-generator\\images/e9b61e8d32782ab8777c8a8a61757618/img-R7WSQjz8S4Q9wdkp5YWLS4xM.png","in":0,"out":150} []
149
+ [2023-05-02T07:32:36.176589+02:00] scene.INFO: Adding image C:\xampp\htdocs\proj\chatgpt-video-generator\images/e9b61e8d32782ab8777c8a8a61757618/img-r9D0vbzQVkI9WrqaLoD5BWlo.png [] []
150
+ [2023-05-02T07:32:36.180386+02:00] scene.INFO: Adding image {"path":"C:\\xampp\\htdocs\\proj\\chatgpt-video-generator\\images/e9b61e8d32782ab8777c8a8a61757618/img-r9D0vbzQVkI9WrqaLoD5BWlo.png","in":0,"out":150} []
151
+ [2023-05-02T07:32:36.184565+02:00] scene.INFO: Adding image C:\xampp\htdocs\proj\chatgpt-video-generator\images/e9b61e8d32782ab8777c8a8a61757618/img-9U9k2GmkfG7xMgZuKGgBwPKT.png [] []
152
+ [2023-05-02T07:32:36.199719+02:00] scene.INFO: Adding image {"path":"C:\\xampp\\htdocs\\proj\\chatgpt-video-generator\\images/e9b61e8d32782ab8777c8a8a61757618/img-9U9k2GmkfG7xMgZuKGgBwPKT.png","in":0,"out":150} []
153
+ [2023-05-02T07:32:36.202426+02:00] scene.INFO: Adding audio to project... [] []
154
+ [2023-05-02T07:32:36.204127+02:00] scene.INFO: Adding audio track: C:\xampp\htdocs\proj\chatgpt-video-generator/voices/e9b61e8d32782ab8777c8a8a61757618.mp3 [] []
155
+ [2023-05-02T07:32:36.208608+02:00] scene.INFO: Saving project to scene.xml... [] []
156
+ [2023-05-02T07:32:36.212730+02:00] scene.INFO: End the melt. [] []
157
+ [2023-05-02T07:32:36.213244+02:00] scene.INFO: Data: {"images":["C:\\xampp\\htdocs\\proj\\chatgpt-video-generator\\images/e9b61e8d32782ab8777c8a8a61757618/img-R7WSQjz8S4Q9wdkp5YWLS4xM.png","C:\\xampp\\htdocs\\proj\\chatgpt-video-generator\\images/e9b61e8d32782ab8777c8a8a61757618/img-r9D0vbzQVkI9WrqaLoD5BWlo.png","C:\\xampp\\htdocs\\proj\\chatgpt-video-generator\\images/e9b61e8d32782ab8777c8a8a61757618/img-9U9k2GmkfG7xMgZuKGgBwPKT.png"]} []
158
+ [2023-05-02T09:25:57.030433+02:00] scene.INFO: Generating script... [] []
159
+ [2023-05-02T09:26:00.921588+02:00] scene.INFO: Script: In response to the mention of Gandhi, I would say that he was a figure that both intrigued and confounded me. His philosophy of non-violence and civil disobedience held a certain appeal, yet I also recognized the potential danger of pacifism in the face of brutal oppression. Nonetheless, Gandhi's actions and beliefs were emblematic of the power of individual action and protest. While I may not have agreed with all of his methods, I respected his commitment to his principles and his unwavering dedication to the pursuit of justice. [] []
160
+ [2023-05-02T09:26:00.921712+02:00] scene.INFO: Generating image prompt... [] []
161
+ [2023-05-02T09:26:04.317761+02:00] scene.INFO: Image Prompt: Image prompt: A black and white photograph of a protester standing alone, holding a sign that reads "Injustice anywhere is a threat to justice everywhere" - a quote by Martin Luther King Jr. The protester's back is towards the camera, so it's impossible to see their face and identity. The person appears to be standing in front of a large government building or courthouse. The surrounding area seems to be empty except for the protester, highlighting the bravery of standing up for one's beliefs regardless of the circumstances. The image evokes the spirit of civil disobedience and the struggle for justice, much like that of Gandhi. [] []
162
+ [2023-05-02T09:26:04.317971+02:00] scene.INFO: Generating audio... [] []
163
+ [2023-05-02T09:26:13.905443+02:00] scene.INFO: Calculating audio duration... [] []
164
+ [2023-05-02T09:26:14.075691+02:00] scene.INFO: Creating 5 images for a 31.346875 second audio clip! [] []
165
+ [2023-05-02T09:26:14.075844+02:00] scene.INFO: Generating images... [] []
166
+ [2023-05-02T09:26:23.279967+02:00] scene.INFO: Image saved successfully {"path":"C:\\xampp\\htdocs\\proj\\chatgpt-video-generator\\images/f18ed7847686171c3f3f8670cdb0291e/img-Ngrs9D53bphQlBaIhDoKvetu.png"} []
167
+ [2023-05-02T09:26:24.381721+02:00] scene.INFO: Image saved successfully {"path":"C:\\xampp\\htdocs\\proj\\chatgpt-video-generator\\images/f18ed7847686171c3f3f8670cdb0291e/img-6DUrZOEgJoHKofjmT9BO4ZyA.png"} []
168
+ [2023-05-02T09:26:25.490767+02:00] scene.INFO: Image saved successfully {"path":"C:\\xampp\\htdocs\\proj\\chatgpt-video-generator\\images/f18ed7847686171c3f3f8670cdb0291e/img-IvI5dHbGGHy8omPCz8eVQgiS.png"} []
169
+ [2023-05-02T09:26:26.580821+02:00] scene.INFO: Image saved successfully {"path":"C:\\xampp\\htdocs\\proj\\chatgpt-video-generator\\images/f18ed7847686171c3f3f8670cdb0291e/img-VxezLCw5FXoghHyxyLOIT6u3.png"} []
170
+ [2023-05-02T09:26:27.688771+02:00] scene.INFO: Image saved successfully {"path":"C:\\xampp\\htdocs\\proj\\chatgpt-video-generator\\images/f18ed7847686171c3f3f8670cdb0291e/img-PTEATTUjdDam9PcCYQCGILwi.png"} []
171
+ [2023-05-02T09:26:27.690116+02:00] scene.INFO: Begin the melty. [] []
172
+ [2023-05-02T09:26:27.702315+02:00] scene.INFO: Initialized MeltProject width:1920 height:1080 framerate:25 outputFile ./scene.mp4 [] []
173
+ [2023-05-02T09:26:27.702389+02:00] scene.INFO: Adding images to project... [] []
174
+ [2023-05-02T09:26:27.702421+02:00] scene.INFO: Adding image C:\xampp\htdocs\proj\chatgpt-video-generator\images/f18ed7847686171c3f3f8670cdb0291e/img-Ngrs9D53bphQlBaIhDoKvetu.png [] []
175
+ [2023-05-02T09:26:27.702461+02:00] scene.INFO: Adding image {"path":"C:\\xampp\\htdocs\\proj\\chatgpt-video-generator\\images/f18ed7847686171c3f3f8670cdb0291e/img-Ngrs9D53bphQlBaIhDoKvetu.png","in":0,"out":150} []
176
+ [2023-05-02T09:26:27.702497+02:00] scene.INFO: Adding image C:\xampp\htdocs\proj\chatgpt-video-generator\images/f18ed7847686171c3f3f8670cdb0291e/img-6DUrZOEgJoHKofjmT9BO4ZyA.png [] []
177
+ [2023-05-02T09:26:27.702529+02:00] scene.INFO: Adding image {"path":"C:\\xampp\\htdocs\\proj\\chatgpt-video-generator\\images/f18ed7847686171c3f3f8670cdb0291e/img-6DUrZOEgJoHKofjmT9BO4ZyA.png","in":0,"out":150} []
178
+ [2023-05-02T09:26:27.702569+02:00] scene.INFO: Adding image C:\xampp\htdocs\proj\chatgpt-video-generator\images/f18ed7847686171c3f3f8670cdb0291e/img-IvI5dHbGGHy8omPCz8eVQgiS.png [] []
179
+ [2023-05-02T09:26:27.702640+02:00] scene.INFO: Adding image {"path":"C:\\xampp\\htdocs\\proj\\chatgpt-video-generator\\images/f18ed7847686171c3f3f8670cdb0291e/img-IvI5dHbGGHy8omPCz8eVQgiS.png","in":0,"out":150} []
180
+ [2023-05-02T09:26:27.702674+02:00] scene.INFO: Adding image C:\xampp\htdocs\proj\chatgpt-video-generator\images/f18ed7847686171c3f3f8670cdb0291e/img-VxezLCw5FXoghHyxyLOIT6u3.png [] []
181
+ [2023-05-02T09:26:27.702700+02:00] scene.INFO: Adding image {"path":"C:\\xampp\\htdocs\\proj\\chatgpt-video-generator\\images/f18ed7847686171c3f3f8670cdb0291e/img-VxezLCw5FXoghHyxyLOIT6u3.png","in":0,"out":150} []
182
+ [2023-05-02T09:26:27.702730+02:00] scene.INFO: Adding image C:\xampp\htdocs\proj\chatgpt-video-generator\images/f18ed7847686171c3f3f8670cdb0291e/img-PTEATTUjdDam9PcCYQCGILwi.png [] []
183
+ [2023-05-02T09:26:27.702753+02:00] scene.INFO: Adding image {"path":"C:\\xampp\\htdocs\\proj\\chatgpt-video-generator\\images/f18ed7847686171c3f3f8670cdb0291e/img-PTEATTUjdDam9PcCYQCGILwi.png","in":0,"out":150} []
184
+ [2023-05-02T09:26:27.702776+02:00] scene.INFO: Adding audio to project... [] []
185
+ [2023-05-02T09:26:27.702796+02:00] scene.INFO: Adding audio track: C:\xampp\htdocs\proj\chatgpt-video-generator/voices/f18ed7847686171c3f3f8670cdb0291e.mp3 [] []
186
+ [2023-05-02T09:26:27.715657+02:00] scene.INFO: Saving project to scene.xml... [] []
187
+ [2023-05-02T09:26:27.717084+02:00] scene.INFO: End the melt. [] []
188
+ [2023-05-02T09:26:27.717125+02:00] scene.INFO: Data: {"images":["C:\\xampp\\htdocs\\proj\\chatgpt-video-generator\\images/f18ed7847686171c3f3f8670cdb0291e/img-Ngrs9D53bphQlBaIhDoKvetu.png","C:\\xampp\\htdocs\\proj\\chatgpt-video-generator\\images/f18ed7847686171c3f3f8670cdb0291e/img-6DUrZOEgJoHKofjmT9BO4ZyA.png","C:\\xampp\\htdocs\\proj\\chatgpt-video-generator\\images/f18ed7847686171c3f3f8670cdb0291e/img-IvI5dHbGGHy8omPCz8eVQgiS.png","C:\\xampp\\htdocs\\proj\\chatgpt-video-generator\\images/f18ed7847686171c3f3f8670cdb0291e/img-VxezLCw5FXoghHyxyLOIT6u3.png","C:\\xampp\\htdocs\\proj\\chatgpt-video-generator\\images/f18ed7847686171c3f3f8670cdb0291e/img-PTEATTUjdDam9PcCYQCGILwi.png"]} []
189
+ [2023-05-02T09:29:09.264057+02:00] scene.INFO: Script: In response to the mention of Gandhi, I would say that he was a figure that both intrigued and confounded me. His philosophy of non-violence and civil disobedience held a certain appeal, yet I also recognized the potential danger of pacifism in the face of brutal oppression. Nonetheless, Gandhi's actions and beliefs were emblematic of the power of individual action and protest. While I may not have agreed with all of his methods, I respected his commitment to his principles and his unwavering dedication to the pursuit of justice. [] []
190
+ [2023-05-02T09:29:09.265242+02:00] scene.INFO: Image Prompt: Image prompt: A black and white photograph of a protester standing alone, holding a sign that reads "Injustice anywhere is a threat to justice everywhere" - a quote by Martin Luther King Jr. The protester's back is towards the camera, so it's impossible to see their face and identity. The person appears to be standing in front of a large government building or courthouse. The surrounding area seems to be empty except for the protester, highlighting the bravery of standing up for one's beliefs regardless of the circumstances. The image evokes the spirit of civil disobedience and the struggle for justice, much like that of Gandhi. [] []
191
+ [2023-05-02T09:29:09.265374+02:00] scene.INFO: Calculating audio duration... [] []
192
+ [2023-05-02T09:29:09.274966+02:00] scene.INFO: Creating 5 images for a 31.346875 second audio clip! [] []
193
+ [2023-05-02T09:29:09.275145+02:00] scene.INFO: Checking imagesPath C:\xampp\htdocs\proj\chatgpt-video-generator/images/f18ed7847686171c3f3f8670cdb0291e [] []
194
+ [2023-05-02T09:29:09.275679+02:00] scene.INFO: Begin the melty. [] []
195
+ [2023-05-02T09:29:09.276226+02:00] scene.INFO: Initialized MeltProject width:1920 height:1080 framerate:25 outputFile ./scene.mp4 [] []
196
+ [2023-05-02T09:29:09.276276+02:00] scene.INFO: Adding images to project... [] []
197
+ [2023-05-02T09:29:09.276353+02:00] scene.INFO: Adding image C:\xampp\htdocs\proj\chatgpt-video-generator/images/f18ed7847686171c3f3f8670cdb0291e/img-6DUrZOEgJoHKofjmT9BO4ZyA.png [] []
198
+ [2023-05-02T09:29:09.276388+02:00] scene.INFO: Adding image {"path":"C:\\xampp\\htdocs\\proj\\chatgpt-video-generator/images/f18ed7847686171c3f3f8670cdb0291e/img-6DUrZOEgJoHKofjmT9BO4ZyA.png","in":0,"out":150} []
199
+ [2023-05-02T09:29:09.276423+02:00] scene.INFO: Adding image C:\xampp\htdocs\proj\chatgpt-video-generator/images/f18ed7847686171c3f3f8670cdb0291e/img-IvI5dHbGGHy8omPCz8eVQgiS.png [] []
200
+ [2023-05-02T09:29:09.276449+02:00] scene.INFO: Adding image {"path":"C:\\xampp\\htdocs\\proj\\chatgpt-video-generator/images/f18ed7847686171c3f3f8670cdb0291e/img-IvI5dHbGGHy8omPCz8eVQgiS.png","in":0,"out":150} []
201
+ [2023-05-02T09:29:09.276478+02:00] scene.INFO: Adding image C:\xampp\htdocs\proj\chatgpt-video-generator/images/f18ed7847686171c3f3f8670cdb0291e/img-Ngrs9D53bphQlBaIhDoKvetu.png [] []
202
+ [2023-05-02T09:29:09.276502+02:00] scene.INFO: Adding image {"path":"C:\\xampp\\htdocs\\proj\\chatgpt-video-generator/images/f18ed7847686171c3f3f8670cdb0291e/img-Ngrs9D53bphQlBaIhDoKvetu.png","in":0,"out":150} []
203
+ [2023-05-02T09:29:09.276529+02:00] scene.INFO: Adding image C:\xampp\htdocs\proj\chatgpt-video-generator/images/f18ed7847686171c3f3f8670cdb0291e/img-PTEATTUjdDam9PcCYQCGILwi.png [] []
204
+ [2023-05-02T09:29:09.276558+02:00] scene.INFO: Adding image {"path":"C:\\xampp\\htdocs\\proj\\chatgpt-video-generator/images/f18ed7847686171c3f3f8670cdb0291e/img-PTEATTUjdDam9PcCYQCGILwi.png","in":0,"out":150} []
205
+ [2023-05-02T09:29:09.276586+02:00] scene.INFO: Adding image C:\xampp\htdocs\proj\chatgpt-video-generator/images/f18ed7847686171c3f3f8670cdb0291e/img-VxezLCw5FXoghHyxyLOIT6u3.png [] []
206
+ [2023-05-02T09:29:09.276610+02:00] scene.INFO: Adding image {"path":"C:\\xampp\\htdocs\\proj\\chatgpt-video-generator/images/f18ed7847686171c3f3f8670cdb0291e/img-VxezLCw5FXoghHyxyLOIT6u3.png","in":0,"out":150} []
207
+ [2023-05-02T09:29:09.276637+02:00] scene.INFO: Adding audio to project... [] []
208
+ [2023-05-02T09:29:09.276662+02:00] scene.INFO: Adding audio track: C:\xampp\htdocs\proj\chatgpt-video-generator/voices/f18ed7847686171c3f3f8670cdb0291e.mp3 [] []
209
+ [2023-05-02T09:29:09.276764+02:00] scene.INFO: Saving project to scene.xml... [] []
210
+ [2023-05-02T09:29:09.277161+02:00] scene.INFO: End the melt. [] []
211
+ [2023-05-02T09:29:09.277199+02:00] scene.INFO: Data: {"txtprompt_search":true,"imgprompt_search":true,"audio_cache":true,"image_search":true} []
212
+ [2023-05-02T09:29:13.365146+02:00] scene.INFO: Script: In response to the mention of Gandhi, I would say that he was a figure that both intrigued and confounded me. His philosophy of non-violence and civil disobedience held a certain appeal, yet I also recognized the potential danger of pacifism in the face of brutal oppression. Nonetheless, Gandhi's actions and beliefs were emblematic of the power of individual action and protest. While I may not have agreed with all of his methods, I respected his commitment to his principles and his unwavering dedication to the pursuit of justice. [] []
213
+ [2023-05-02T09:29:13.366064+02:00] scene.INFO: Image Prompt: Image prompt: A black and white photograph of a protester standing alone, holding a sign that reads "Injustice anywhere is a threat to justice everywhere" - a quote by Martin Luther King Jr. The protester's back is towards the camera, so it's impossible to see their face and identity. The person appears to be standing in front of a large government building or courthouse. The surrounding area seems to be empty except for the protester, highlighting the bravery of standing up for one's beliefs regardless of the circumstances. The image evokes the spirit of civil disobedience and the struggle for justice, much like that of Gandhi. [] []
214
+ [2023-05-02T09:29:13.366133+02:00] scene.INFO: Calculating audio duration... [] []
215
+ [2023-05-02T09:29:13.375141+02:00] scene.INFO: Creating 5 images for a 31.346875 second audio clip! [] []
216
+ [2023-05-02T09:29:13.375231+02:00] scene.INFO: Checking imagesPath C:\xampp\htdocs\proj\chatgpt-video-generator/images/f18ed7847686171c3f3f8670cdb0291e [] []
217
+ [2023-05-02T09:29:13.375504+02:00] scene.INFO: Begin the melty. [] []
218
+ [2023-05-02T09:29:13.375882+02:00] scene.INFO: Initialized MeltProject width:1920 height:1080 framerate:25 outputFile ./scene.mp4 [] []
219
+ [2023-05-02T09:29:13.375921+02:00] scene.INFO: Adding images to project... [] []
220
+ [2023-05-02T09:29:13.375945+02:00] scene.INFO: Adding image C:\xampp\htdocs\proj\chatgpt-video-generator/images/f18ed7847686171c3f3f8670cdb0291e/img-6DUrZOEgJoHKofjmT9BO4ZyA.png [] []
221
+ [2023-05-02T09:29:13.375968+02:00] scene.INFO: Adding image {"path":"C:\\xampp\\htdocs\\proj\\chatgpt-video-generator/images/f18ed7847686171c3f3f8670cdb0291e/img-6DUrZOEgJoHKofjmT9BO4ZyA.png","in":0,"out":150} []
222
+ [2023-05-02T09:29:13.375995+02:00] scene.INFO: Adding image C:\xampp\htdocs\proj\chatgpt-video-generator/images/f18ed7847686171c3f3f8670cdb0291e/img-IvI5dHbGGHy8omPCz8eVQgiS.png [] []
223
+ [2023-05-02T09:29:13.376016+02:00] scene.INFO: Adding image {"path":"C:\\xampp\\htdocs\\proj\\chatgpt-video-generator/images/f18ed7847686171c3f3f8670cdb0291e/img-IvI5dHbGGHy8omPCz8eVQgiS.png","in":0,"out":150} []
224
+ [2023-05-02T09:29:13.376039+02:00] scene.INFO: Adding image C:\xampp\htdocs\proj\chatgpt-video-generator/images/f18ed7847686171c3f3f8670cdb0291e/img-Ngrs9D53bphQlBaIhDoKvetu.png [] []
225
+ [2023-05-02T09:29:13.376058+02:00] scene.INFO: Adding image {"path":"C:\\xampp\\htdocs\\proj\\chatgpt-video-generator/images/f18ed7847686171c3f3f8670cdb0291e/img-Ngrs9D53bphQlBaIhDoKvetu.png","in":0,"out":150} []
226
+ [2023-05-02T09:29:13.376080+02:00] scene.INFO: Adding image C:\xampp\htdocs\proj\chatgpt-video-generator/images/f18ed7847686171c3f3f8670cdb0291e/img-PTEATTUjdDam9PcCYQCGILwi.png [] []
227
+ [2023-05-02T09:29:13.376100+02:00] scene.INFO: Adding image {"path":"C:\\xampp\\htdocs\\proj\\chatgpt-video-generator/images/f18ed7847686171c3f3f8670cdb0291e/img-PTEATTUjdDam9PcCYQCGILwi.png","in":0,"out":150} []
228
+ [2023-05-02T09:29:13.376122+02:00] scene.INFO: Adding image C:\xampp\htdocs\proj\chatgpt-video-generator/images/f18ed7847686171c3f3f8670cdb0291e/img-VxezLCw5FXoghHyxyLOIT6u3.png [] []
229
+ [2023-05-02T09:29:13.376141+02:00] scene.INFO: Adding image {"path":"C:\\xampp\\htdocs\\proj\\chatgpt-video-generator/images/f18ed7847686171c3f3f8670cdb0291e/img-VxezLCw5FXoghHyxyLOIT6u3.png","in":0,"out":150} []
230
+ [2023-05-02T09:29:13.376163+02:00] scene.INFO: Adding audio to project... [] []
231
+ [2023-05-02T09:29:13.376182+02:00] scene.INFO: Adding audio track: C:\xampp\htdocs\proj\chatgpt-video-generator/voices/f18ed7847686171c3f3f8670cdb0291e.mp3 [] []
232
+ [2023-05-02T09:29:13.376271+02:00] scene.INFO: Saving project to scene.xml... [] []
233
+ [2023-05-02T09:29:13.376588+02:00] scene.INFO: End the melt. [] []
234
+ [2023-05-02T09:29:13.376626+02:00] scene.INFO: Data: {"txtprompt_search":true,"imgprompt_search":true,"audio_cache":true,"image_search":true} []
235
+ [2023-05-02T10:25:55.367725+02:00] scene.INFO: Script: India, the land of ancient wisdom and kaleidoscopic colors. Sights and sounds that agitate the senses and stir the soul. A place where chaos and harmony coexist like longtime lovers in a dance that never ends. The aroma of exotic spices and the flavors that define a culture. If the road is all about the journey and not the destination, then India is a journey of a lifetime, my friend. [] []
236
+ [2023-05-02T10:25:55.392367+02:00] scene.INFO: Image Prompt: Image Prompt: A bustling market in India, with vendors selling vibrant spices, textiles, and fresh fruits. The air is heavy with the fragrant scent of cardamom and cumin. Colorful saris and scarves flutter in the wind like a sea of fabric waves. A cacophony of honking auto-rickshaws and bellowing market vendors fills the air, while a lone cow leisurely strolls through the chaos. In the distance, a towering temple spire rises above the chaotic scene, a symbol of faith and devotion amidst the hustle and bustle of daily life. [] []
237
+ [2023-05-02T10:25:55.393589+02:00] scene.INFO: Calculating audio duration... [] []
238
+ [2023-05-02T10:25:55.431689+02:00] scene.INFO: Creating 3 images for a 22.700375 second audio clip! [] []
239
+ [2023-05-02T10:25:55.433128+02:00] scene.INFO: Checking imagesPath C:\xampp\htdocs\proj\chatgpt-video-generator/images/e9b61e8d32782ab8777c8a8a61757618 [] []
240
+ [2023-05-02T10:25:55.434114+02:00] scene.INFO: Begin the melty. [] []
241
+ [2023-05-02T10:25:55.435606+02:00] scene.INFO: Initialized MeltProject width:1920 height:1080 framerate:25 outputFile ./scene.mp4 [] []
242
+ [2023-05-02T10:25:55.436031+02:00] scene.INFO: Adding images to project... [] []
243
+ [2023-05-02T10:25:55.436438+02:00] scene.INFO: Adding image C:\xampp\htdocs\proj\chatgpt-video-generator/images/e9b61e8d32782ab8777c8a8a61757618/img-9U9k2GmkfG7xMgZuKGgBwPKT.png [] []
244
+ [2023-05-02T10:25:55.437736+02:00] scene.INFO: Adding image {"path":"C:\\xampp\\htdocs\\proj\\chatgpt-video-generator/images/e9b61e8d32782ab8777c8a8a61757618/img-9U9k2GmkfG7xMgZuKGgBwPKT.png","in":0,"out":150} []
245
+ [2023-05-02T10:25:55.439021+02:00] scene.INFO: Adding image C:\xampp\htdocs\proj\chatgpt-video-generator/images/e9b61e8d32782ab8777c8a8a61757618/img-R7WSQjz8S4Q9wdkp5YWLS4xM.png [] []
246
+ [2023-05-02T10:25:55.440193+02:00] scene.INFO: Adding image {"path":"C:\\xampp\\htdocs\\proj\\chatgpt-video-generator/images/e9b61e8d32782ab8777c8a8a61757618/img-R7WSQjz8S4Q9wdkp5YWLS4xM.png","in":0,"out":150} []
247
+ [2023-05-02T10:25:55.441502+02:00] scene.INFO: Adding image C:\xampp\htdocs\proj\chatgpt-video-generator/images/e9b61e8d32782ab8777c8a8a61757618/img-r9D0vbzQVkI9WrqaLoD5BWlo.png [] []
248
+ [2023-05-02T10:25:55.442753+02:00] scene.INFO: Adding image {"path":"C:\\xampp\\htdocs\\proj\\chatgpt-video-generator/images/e9b61e8d32782ab8777c8a8a61757618/img-r9D0vbzQVkI9WrqaLoD5BWlo.png","in":0,"out":150} []
249
+ [2023-05-02T10:25:55.444146+02:00] scene.INFO: Adding audio to project... [] []
250
+ [2023-05-02T10:25:55.444927+02:00] scene.INFO: Adding audio track: C:\xampp\htdocs\proj\chatgpt-video-generator/voices/e9b61e8d32782ab8777c8a8a61757618.mp3 [] []
251
+ [2023-05-02T10:25:55.446267+02:00] scene.INFO: Saving project to scene.xml... [] []
252
+ [2023-05-02T10:25:55.448502+02:00] scene.INFO: Creating video using Melt... [] []
php ADDED
File without changes
public/assets/css/fontawesome-all.min.css ADDED
@@ -0,0 +1,101 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*!
2
+ * Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com
3
+ * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
4
+ */
5
+
6
+
7
+
8
+
9
+
10
+
11
+
12
+
13
+
14
+
15
+
16
+
17
+
18
+
19
+
20
+
21
+
22
+
23
+
24
+
25
+
26
+
27
+
28
+
29
+
30
+
31
+
32
+
33
+
34
+
35
+
36
+
37
+
38
+
39
+
40
+
41
+
42
+
43
+
44
+
45
+
46
+
47
+
48
+
49
+
50
+
51
+
52
+
53
+
54
+
55
+
56
+
57
+
58
+
59
+
60
+
61
+
62
+
63
+
64
+
65
+
66
+
67
+
68
+
69
+
70
+
71
+
72
+
73
+
74
+
75
+
76
+
77
+
78
+
79
+
80
+
81
+
82
+
83
+
84
+
85
+
86
+
87
+
88
+
89
+
90
+
91
+
92
+
93
+
94
+
95
+
96
+
97
+
98
+
99
+
100
+
101
+ .fa,.fab,.fad,.fal,.far,.fas{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:inline-block;font-style:normal;font-variant:normal;text-rendering:auto;line-height:1}.fa-lg{font-size:1.33333em;line-height:.75em;vertical-align:-.0667em}.fa-xs{font-size:.75em}.fa-sm{font-size:.875em}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-fw{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-left:2.5em;padding-left:0}.fa-ul>li{position:relative}.fa-li{left:-2em;position:absolute;text-align:center;width:2em;line-height:inherit}.fa-border{border:.08em solid #eee;border-radius:.1em;padding:.2em .25em .15em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left,.fab.fa-pull-left,.fal.fa-pull-left,.far.fa-pull-left,.fas.fa-pull-left{margin-right:.3em}.fa.fa-pull-right,.fab.fa-pull-right,.fal.fa-pull-right,.far.fa-pull-right,.fas.fa-pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s linear infinite;animation:fa-spin 2s linear infinite}.fa-pulse{-webkit-animation:fa-spin 1s steps(8) infinite;animation:fa-spin 1s steps(8) infinite}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scaleX(-1);transform:scaleX(-1)}.fa-flip-vertical{-webkit-transform:scaleY(-1);transform:scaleY(-1)}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical,.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical{-webkit-transform:scale(-1);transform:scale(-1)}:root .fa-flip-both,:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270{-webkit-filter:none;filter:none}.fa-stack{display:inline-block;height:2em;line-height:2em;position:relative;vertical-align:middle;width:2.5em}.fa-stack-1x,.fa-stack-2x{left:0;position:absolute;text-align:center;width:100%}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-500px:before{content:"\f26e"}.fa-accessible-icon:before{content:"\f368"}.fa-accusoft:before{content:"\f369"}.fa-acquisitions-incorporated:before{content:"\f6af"}.fa-ad:before{content:"\f641"}.fa-address-book:before{content:"\f2b9"}.fa-address-card:before{content:"\f2bb"}.fa-adjust:before{content:"\f042"}.fa-adn:before{content:"\f170"}.fa-adversal:before{content:"\f36a"}.fa-affiliatetheme:before{content:"\f36b"}.fa-air-freshener:before{content:"\f5d0"}.fa-airbnb:before{content:"\f834"}.fa-algolia:before{content:"\f36c"}.fa-align-center:before{content:"\f037"}.fa-align-justify:before{content:"\f039"}.fa-align-left:before{content:"\f036"}.fa-align-right:before{content:"\f038"}.fa-alipay:before{content:"\f642"}.fa-allergies:before{content:"\f461"}.fa-amazon:before{content:"\f270"}.fa-amazon-pay:before{content:"\f42c"}.fa-ambulance:before{content:"\f0f9"}.fa-american-sign-language-interpreting:before{content:"\f2a3"}.fa-amilia:before{content:"\f36d"}.fa-anchor:before{content:"\f13d"}.fa-android:before{content:"\f17b"}.fa-angellist:before{content:"\f209"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-down:before{content:"\f107"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angry:before{content:"\f556"}.fa-angrycreative:before{content:"\f36e"}.fa-angular:before{content:"\f420"}.fa-ankh:before{content:"\f644"}.fa-app-store:before{content:"\f36f"}.fa-app-store-ios:before{content:"\f370"}.fa-apper:before{content:"\f371"}.fa-apple:before{content:"\f179"}.fa-apple-alt:before{content:"\f5d1"}.fa-apple-pay:before{content:"\f415"}.fa-archive:before{content:"\f187"}.fa-archway:before{content:"\f557"}.fa-arrow-alt-circle-down:before{content:"\f358"}.fa-arrow-alt-circle-left:before{content:"\f359"}.fa-arrow-alt-circle-right:before{content:"\f35a"}.fa-arrow-alt-circle-up:before{content:"\f35b"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-down:before{content:"\f063"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrows-alt:before{content:"\f0b2"}.fa-arrows-alt-h:before{content:"\f337"}.fa-arrows-alt-v:before{content:"\f338"}.fa-artstation:before{content:"\f77a"}.fa-assistive-listening-systems:before{content:"\f2a2"}.fa-asterisk:before{content:"\f069"}.fa-asymmetrik:before{content:"\f372"}.fa-at:before{content:"\f1fa"}.fa-atlas:before{content:"\f558"}.fa-atlassian:before{content:"\f77b"}.fa-atom:before{content:"\f5d2"}.fa-audible:before{content:"\f373"}.fa-audio-description:before{content:"\f29e"}.fa-autoprefixer:before{content:"\f41c"}.fa-avianex:before{content:"\f374"}.fa-aviato:before{content:"\f421"}.fa-award:before{content:"\f559"}.fa-aws:before{content:"\f375"}.fa-baby:before{content:"\f77c"}.fa-baby-carriage:before{content:"\f77d"}.fa-backspace:before{content:"\f55a"}.fa-backward:before{content:"\f04a"}.fa-bacon:before{content:"\f7e5"}.fa-bacteria:before{content:"\e059"}.fa-bacterium:before{content:"\e05a"}.fa-bahai:before{content:"\f666"}.fa-balance-scale:before{content:"\f24e"}.fa-balance-scale-left:before{content:"\f515"}.fa-balance-scale-right:before{content:"\f516"}.fa-ban:before{content:"\f05e"}.fa-band-aid:before{content:"\f462"}.fa-bandcamp:before{content:"\f2d5"}.fa-barcode:before{content:"\f02a"}.fa-bars:before{content:"\f0c9"}.fa-baseball-ball:before{content:"\f433"}.fa-basketball-ball:before{content:"\f434"}.fa-bath:before{content:"\f2cd"}.fa-battery-empty:before{content:"\f244"}.fa-battery-full:before{content:"\f240"}.fa-battery-half:before{content:"\f242"}.fa-battery-quarter:before{content:"\f243"}.fa-battery-three-quarters:before{content:"\f241"}.fa-battle-net:before{content:"\f835"}.fa-bed:before{content:"\f236"}.fa-beer:before{content:"\f0fc"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-bell:before{content:"\f0f3"}.fa-bell-slash:before{content:"\f1f6"}.fa-bezier-curve:before{content:"\f55b"}.fa-bible:before{content:"\f647"}.fa-bicycle:before{content:"\f206"}.fa-biking:before{content:"\f84a"}.fa-bimobject:before{content:"\f378"}.fa-binoculars:before{content:"\f1e5"}.fa-biohazard:before{content:"\f780"}.fa-birthday-cake:before{content:"\f1fd"}.fa-bitbucket:before{content:"\f171"}.fa-bitcoin:before{content:"\f379"}.fa-bity:before{content:"\f37a"}.fa-black-tie:before{content:"\f27e"}.fa-blackberry:before{content:"\f37b"}.fa-blender:before{content:"\f517"}.fa-blender-phone:before{content:"\f6b6"}.fa-blind:before{content:"\f29d"}.fa-blog:before{content:"\f781"}.fa-blogger:before{content:"\f37c"}.fa-blogger-b:before{content:"\f37d"}.fa-bluetooth:before{content:"\f293"}.fa-bluetooth-b:before{content:"\f294"}.fa-bold:before{content:"\f032"}.fa-bolt:before{content:"\f0e7"}.fa-bomb:before{content:"\f1e2"}.fa-bone:before{content:"\f5d7"}.fa-bong:before{content:"\f55c"}.fa-book:before{content:"\f02d"}.fa-book-dead:before{content:"\f6b7"}.fa-book-medical:before{content:"\f7e6"}.fa-book-open:before{content:"\f518"}.fa-book-reader:before{content:"\f5da"}.fa-bookmark:before{content:"\f02e"}.fa-bootstrap:before{content:"\f836"}.fa-border-all:before{content:"\f84c"}.fa-border-none:before{content:"\f850"}.fa-border-style:before{content:"\f853"}.fa-bowling-ball:before{content:"\f436"}.fa-box:before{content:"\f466"}.fa-box-open:before{content:"\f49e"}.fa-box-tissue:before{content:"\e05b"}.fa-boxes:before{content:"\f468"}.fa-braille:before{content:"\f2a1"}.fa-brain:before{content:"\f5dc"}.fa-bread-slice:before{content:"\f7ec"}.fa-briefcase:before{content:"\f0b1"}.fa-briefcase-medical:before{content:"\f469"}.fa-broadcast-tower:before{content:"\f519"}.fa-broom:before{content:"\f51a"}.fa-brush:before{content:"\f55d"}.fa-btc:before{content:"\f15a"}.fa-buffer:before{content:"\f837"}.fa-bug:before{content:"\f188"}.fa-building:before{content:"\f1ad"}.fa-bullhorn:before{content:"\f0a1"}.fa-bullseye:before{content:"\f140"}.fa-burn:before{content:"\f46a"}.fa-buromobelexperte:before{content:"\f37f"}.fa-bus:before{content:"\f207"}.fa-bus-alt:before{content:"\f55e"}.fa-business-time:before{content:"\f64a"}.fa-buy-n-large:before{content:"\f8a6"}.fa-buysellads:before{content:"\f20d"}.fa-calculator:before{content:"\f1ec"}.fa-calendar:before{content:"\f133"}.fa-calendar-alt:before{content:"\f073"}.fa-calendar-check:before{content:"\f274"}.fa-calendar-day:before{content:"\f783"}.fa-calendar-minus:before{content:"\f272"}.fa-calendar-plus:before{content:"\f271"}.fa-calendar-times:before{content:"\f273"}.fa-calendar-week:before{content:"\f784"}.fa-camera:before{content:"\f030"}.fa-camera-retro:before{content:"\f083"}.fa-campground:before{content:"\f6bb"}.fa-canadian-maple-leaf:before{content:"\f785"}.fa-candy-cane:before{content:"\f786"}.fa-cannabis:before{content:"\f55f"}.fa-capsules:before{content:"\f46b"}.fa-car:before{content:"\f1b9"}.fa-car-alt:before{content:"\f5de"}.fa-car-battery:before{content:"\f5df"}.fa-car-crash:before{content:"\f5e1"}.fa-car-side:before{content:"\f5e4"}.fa-caravan:before{content:"\f8ff"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-caret-square-down:before{content:"\f150"}.fa-caret-square-left:before{content:"\f191"}.fa-caret-square-right:before{content:"\f152"}.fa-caret-square-up:before{content:"\f151"}.fa-caret-up:before{content:"\f0d8"}.fa-carrot:before{content:"\f787"}.fa-cart-arrow-down:before{content:"\f218"}.fa-cart-plus:before{content:"\f217"}.fa-cash-register:before{content:"\f788"}.fa-cat:before{content:"\f6be"}.fa-cc-amazon-pay:before{content:"\f42d"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-apple-pay:before{content:"\f416"}.fa-cc-diners-club:before{content:"\f24c"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-jcb:before{content:"\f24b"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-cc-visa:before{content:"\f1f0"}.fa-centercode:before{content:"\f380"}.fa-centos:before{content:"\f789"}.fa-certificate:before{content:"\f0a3"}.fa-chair:before{content:"\f6c0"}.fa-chalkboard:before{content:"\f51b"}.fa-chalkboard-teacher:before{content:"\f51c"}.fa-charging-station:before{content:"\f5e7"}.fa-chart-area:before{content:"\f1fe"}.fa-chart-bar:before{content:"\f080"}.fa-chart-line:before{content:"\f201"}.fa-chart-pie:before{content:"\f200"}.fa-check:before{content:"\f00c"}.fa-check-circle:before{content:"\f058"}.fa-check-double:before{content:"\f560"}.fa-check-square:before{content:"\f14a"}.fa-cheese:before{content:"\f7ef"}.fa-chess:before{content:"\f439"}.fa-chess-bishop:before{content:"\f43a"}.fa-chess-board:before{content:"\f43c"}.fa-chess-king:before{content:"\f43f"}.fa-chess-knight:before{content:"\f441"}.fa-chess-pawn:before{content:"\f443"}.fa-chess-queen:before{content:"\f445"}.fa-chess-rook:before{content:"\f447"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-down:before{content:"\f078"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-chevron-up:before{content:"\f077"}.fa-child:before{content:"\f1ae"}.fa-chrome:before{content:"\f268"}.fa-chromecast:before{content:"\f838"}.fa-church:before{content:"\f51d"}.fa-circle:before{content:"\f111"}.fa-circle-notch:before{content:"\f1ce"}.fa-city:before{content:"\f64f"}.fa-clinic-medical:before{content:"\f7f2"}.fa-clipboard:before{content:"\f328"}.fa-clipboard-check:before{content:"\f46c"}.fa-clipboard-list:before{content:"\f46d"}.fa-clock:before{content:"\f017"}.fa-clone:before{content:"\f24d"}.fa-closed-captioning:before{content:"\f20a"}.fa-cloud:before{content:"\f0c2"}.fa-cloud-download-alt:before{content:"\f381"}.fa-cloud-meatball:before{content:"\f73b"}.fa-cloud-moon:before{content:"\f6c3"}.fa-cloud-moon-rain:before{content:"\f73c"}.fa-cloud-rain:before{content:"\f73d"}.fa-cloud-showers-heavy:before{content:"\f740"}.fa-cloud-sun:before{content:"\f6c4"}.fa-cloud-sun-rain:before{content:"\f743"}.fa-cloud-upload-alt:before{content:"\f382"}.fa-cloudflare:before{content:"\e07d"}.fa-cloudscale:before{content:"\f383"}.fa-cloudsmith:before{content:"\f384"}.fa-cloudversify:before{content:"\f385"}.fa-cocktail:before{content:"\f561"}.fa-code:before{content:"\f121"}.fa-code-branch:before{content:"\f126"}.fa-codepen:before{content:"\f1cb"}.fa-codiepie:before{content:"\f284"}.fa-coffee:before{content:"\f0f4"}.fa-cog:before{content:"\f013"}.fa-cogs:before{content:"\f085"}.fa-coins:before{content:"\f51e"}.fa-columns:before{content:"\f0db"}.fa-comment:before{content:"\f075"}.fa-comment-alt:before{content:"\f27a"}.fa-comment-dollar:before{content:"\f651"}.fa-comment-dots:before{content:"\f4ad"}.fa-comment-medical:before{content:"\f7f5"}.fa-comment-slash:before{content:"\f4b3"}.fa-comments:before{content:"\f086"}.fa-comments-dollar:before{content:"\f653"}.fa-compact-disc:before{content:"\f51f"}.fa-compass:before{content:"\f14e"}.fa-compress:before{content:"\f066"}.fa-compress-alt:before{content:"\f422"}.fa-compress-arrows-alt:before{content:"\f78c"}.fa-concierge-bell:before{content:"\f562"}.fa-confluence:before{content:"\f78d"}.fa-connectdevelop:before{content:"\f20e"}.fa-contao:before{content:"\f26d"}.fa-cookie:before{content:"\f563"}.fa-cookie-bite:before{content:"\f564"}.fa-copy:before{content:"\f0c5"}.fa-copyright:before{content:"\f1f9"}.fa-cotton-bureau:before{content:"\f89e"}.fa-couch:before{content:"\f4b8"}.fa-cpanel:before{content:"\f388"}.fa-creative-commons:before{content:"\f25e"}.fa-creative-commons-by:before{content:"\f4e7"}.fa-creative-commons-nc:before{content:"\f4e8"}.fa-creative-commons-nc-eu:before{content:"\f4e9"}.fa-creative-commons-nc-jp:before{content:"\f4ea"}.fa-creative-commons-nd:before{content:"\f4eb"}.fa-creative-commons-pd:before{content:"\f4ec"}.fa-creative-commons-pd-alt:before{content:"\f4ed"}.fa-creative-commons-remix:before{content:"\f4ee"}.fa-creative-commons-sa:before{content:"\f4ef"}.fa-creative-commons-sampling:before{content:"\f4f0"}.fa-creative-commons-sampling-plus:before{content:"\f4f1"}.fa-creative-commons-share:before{content:"\f4f2"}.fa-creative-commons-zero:before{content:"\f4f3"}.fa-credit-card:before{content:"\f09d"}.fa-critical-role:before{content:"\f6c9"}.fa-crop:before{content:"\f125"}.fa-crop-alt:before{content:"\f565"}.fa-cross:before{content:"\f654"}.fa-crosshairs:before{content:"\f05b"}.fa-crow:before{content:"\f520"}.fa-crown:before{content:"\f521"}.fa-crutch:before{content:"\f7f7"}.fa-css3:before{content:"\f13c"}.fa-css3-alt:before{content:"\f38b"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-cut:before{content:"\f0c4"}.fa-cuttlefish:before{content:"\f38c"}.fa-d-and-d:before{content:"\f38d"}.fa-d-and-d-beyond:before{content:"\f6ca"}.fa-dailymotion:before{content:"\e052"}.fa-dashcube:before{content:"\f210"}.fa-database:before{content:"\f1c0"}.fa-deaf:before{content:"\f2a4"}.fa-deezer:before{content:"\e077"}.fa-delicious:before{content:"\f1a5"}.fa-democrat:before{content:"\f747"}.fa-deploydog:before{content:"\f38e"}.fa-deskpro:before{content:"\f38f"}.fa-desktop:before{content:"\f108"}.fa-dev:before{content:"\f6cc"}.fa-deviantart:before{content:"\f1bd"}.fa-dharmachakra:before{content:"\f655"}.fa-dhl:before{content:"\f790"}.fa-diagnoses:before{content:"\f470"}.fa-diaspora:before{content:"\f791"}.fa-dice:before{content:"\f522"}.fa-dice-d20:before{content:"\f6cf"}.fa-dice-d6:before{content:"\f6d1"}.fa-dice-five:before{content:"\f523"}.fa-dice-four:before{content:"\f524"}.fa-dice-one:before{content:"\f525"}.fa-dice-six:before{content:"\f526"}.fa-dice-three:before{content:"\f527"}.fa-dice-two:before{content:"\f528"}.fa-digg:before{content:"\f1a6"}.fa-digital-ocean:before{content:"\f391"}.fa-digital-tachograph:before{content:"\f566"}.fa-directions:before{content:"\f5eb"}.fa-discord:before{content:"\f392"}.fa-discourse:before{content:"\f393"}.fa-disease:before{content:"\f7fa"}.fa-divide:before{content:"\f529"}.fa-dizzy:before{content:"\f567"}.fa-dna:before{content:"\f471"}.fa-dochub:before{content:"\f394"}.fa-docker:before{content:"\f395"}.fa-dog:before{content:"\f6d3"}.fa-dollar-sign:before{content:"\f155"}.fa-dolly:before{content:"\f472"}.fa-dolly-flatbed:before{content:"\f474"}.fa-donate:before{content:"\f4b9"}.fa-door-closed:before{content:"\f52a"}.fa-door-open:before{content:"\f52b"}.fa-dot-circle:before{content:"\f192"}.fa-dove:before{content:"\f4ba"}.fa-download:before{content:"\f019"}.fa-draft2digital:before{content:"\f396"}.fa-drafting-compass:before{content:"\f568"}.fa-dragon:before{content:"\f6d5"}.fa-draw-polygon:before{content:"\f5ee"}.fa-dribbble:before{content:"\f17d"}.fa-dribbble-square:before{content:"\f397"}.fa-dropbox:before{content:"\f16b"}.fa-drum:before{content:"\f569"}.fa-drum-steelpan:before{content:"\f56a"}.fa-drumstick-bite:before{content:"\f6d7"}.fa-drupal:before{content:"\f1a9"}.fa-dumbbell:before{content:"\f44b"}.fa-dumpster:before{content:"\f793"}.fa-dumpster-fire:before{content:"\f794"}.fa-dungeon:before{content:"\f6d9"}.fa-dyalog:before{content:"\f399"}.fa-earlybirds:before{content:"\f39a"}.fa-ebay:before{content:"\f4f4"}.fa-edge:before{content:"\f282"}.fa-edge-legacy:before{content:"\e078"}.fa-edit:before{content:"\f044"}.fa-egg:before{content:"\f7fb"}.fa-eject:before{content:"\f052"}.fa-elementor:before{content:"\f430"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-ello:before{content:"\f5f1"}.fa-ember:before{content:"\f423"}.fa-empire:before{content:"\f1d1"}.fa-envelope:before{content:"\f0e0"}.fa-envelope-open:before{content:"\f2b6"}.fa-envelope-open-text:before{content:"\f658"}.fa-envelope-square:before{content:"\f199"}.fa-envira:before{content:"\f299"}.fa-equals:before{content:"\f52c"}.fa-eraser:before{content:"\f12d"}.fa-erlang:before{content:"\f39d"}.fa-ethereum:before{content:"\f42e"}.fa-ethernet:before{content:"\f796"}.fa-etsy:before{content:"\f2d7"}.fa-euro-sign:before{content:"\f153"}.fa-evernote:before{content:"\f839"}.fa-exchange-alt:before{content:"\f362"}.fa-exclamation:before{content:"\f12a"}.fa-exclamation-circle:before{content:"\f06a"}.fa-exclamation-triangle:before{content:"\f071"}.fa-expand:before{content:"\f065"}.fa-expand-alt:before{content:"\f424"}.fa-expand-arrows-alt:before{content:"\f31e"}.fa-expeditedssl:before{content:"\f23e"}.fa-external-link-alt:before{content:"\f35d"}.fa-external-link-square-alt:before{content:"\f360"}.fa-eye:before{content:"\f06e"}.fa-eye-dropper:before{content:"\f1fb"}.fa-eye-slash:before{content:"\f070"}.fa-facebook:before{content:"\f09a"}.fa-facebook-f:before{content:"\f39e"}.fa-facebook-messenger:before{content:"\f39f"}.fa-facebook-square:before{content:"\f082"}.fa-fan:before{content:"\f863"}.fa-fantasy-flight-games:before{content:"\f6dc"}.fa-fast-backward:before{content:"\f049"}.fa-fast-forward:before{content:"\f050"}.fa-faucet:before{content:"\e005"}.fa-fax:before{content:"\f1ac"}.fa-feather:before{content:"\f52d"}.fa-feather-alt:before{content:"\f56b"}.fa-fedex:before{content:"\f797"}.fa-fedora:before{content:"\f798"}.fa-female:before{content:"\f182"}.fa-fighter-jet:before{content:"\f0fb"}.fa-figma:before{content:"\f799"}.fa-file:before{content:"\f15b"}.fa-file-alt:before{content:"\f15c"}.fa-file-archive:before{content:"\f1c6"}.fa-file-audio:before{content:"\f1c7"}.fa-file-code:before{content:"\f1c9"}.fa-file-contract:before{content:"\f56c"}.fa-file-csv:before{content:"\f6dd"}.fa-file-download:before{content:"\f56d"}.fa-file-excel:before{content:"\f1c3"}.fa-file-export:before{content:"\f56e"}.fa-file-image:before{content:"\f1c5"}.fa-file-import:before{content:"\f56f"}.fa-file-invoice:before{content:"\f570"}.fa-file-invoice-dollar:before{content:"\f571"}.fa-file-medical:before{content:"\f477"}.fa-file-medical-alt:before{content:"\f478"}.fa-file-pdf:before{content:"\f1c1"}.fa-file-powerpoint:before{content:"\f1c4"}.fa-file-prescription:before{content:"\f572"}.fa-file-signature:before{content:"\f573"}.fa-file-upload:before{content:"\f574"}.fa-file-video:before{content:"\f1c8"}.fa-file-word:before{content:"\f1c2"}.fa-fill:before{content:"\f575"}.fa-fill-drip:before{content:"\f576"}.fa-film:before{content:"\f008"}.fa-filter:before{content:"\f0b0"}.fa-fingerprint:before{content:"\f577"}.fa-fire:before{content:"\f06d"}.fa-fire-alt:before{content:"\f7e4"}.fa-fire-extinguisher:before{content:"\f134"}.fa-firefox:before{content:"\f269"}.fa-firefox-browser:before{content:"\e007"}.fa-first-aid:before{content:"\f479"}.fa-first-order:before{content:"\f2b0"}.fa-first-order-alt:before{content:"\f50a"}.fa-firstdraft:before{content:"\f3a1"}.fa-fish:before{content:"\f578"}.fa-fist-raised:before{content:"\f6de"}.fa-flag:before{content:"\f024"}.fa-flag-checkered:before{content:"\f11e"}.fa-flag-usa:before{content:"\f74d"}.fa-flask:before{content:"\f0c3"}.fa-flickr:before{content:"\f16e"}.fa-flipboard:before{content:"\f44d"}.fa-flushed:before{content:"\f579"}.fa-fly:before{content:"\f417"}.fa-folder:before{content:"\f07b"}.fa-folder-minus:before{content:"\f65d"}.fa-folder-open:before{content:"\f07c"}.fa-folder-plus:before{content:"\f65e"}.fa-font:before{content:"\f031"}.fa-font-awesome:before{content:"\f2b4"}.fa-font-awesome-alt:before{content:"\f35c"}.fa-font-awesome-flag:before{content:"\f425"}.fa-font-awesome-logo-full:before{content:"\f4e6"}.fa-fonticons:before{content:"\f280"}.fa-fonticons-fi:before{content:"\f3a2"}.fa-football-ball:before{content:"\f44e"}.fa-fort-awesome:before{content:"\f286"}.fa-fort-awesome-alt:before{content:"\f3a3"}.fa-forumbee:before{content:"\f211"}.fa-forward:before{content:"\f04e"}.fa-foursquare:before{content:"\f180"}.fa-free-code-camp:before{content:"\f2c5"}.fa-freebsd:before{content:"\f3a4"}.fa-frog:before{content:"\f52e"}.fa-frown:before{content:"\f119"}.fa-frown-open:before{content:"\f57a"}.fa-fulcrum:before{content:"\f50b"}.fa-funnel-dollar:before{content:"\f662"}.fa-futbol:before{content:"\f1e3"}.fa-galactic-republic:before{content:"\f50c"}.fa-galactic-senate:before{content:"\f50d"}.fa-gamepad:before{content:"\f11b"}.fa-gas-pump:before{content:"\f52f"}.fa-gavel:before{content:"\f0e3"}.fa-gem:before{content:"\f3a5"}.fa-genderless:before{content:"\f22d"}.fa-get-pocket:before{content:"\f265"}.fa-gg:before{content:"\f260"}.fa-gg-circle:before{content:"\f261"}.fa-ghost:before{content:"\f6e2"}.fa-gift:before{content:"\f06b"}.fa-gifts:before{content:"\f79c"}.fa-git:before{content:"\f1d3"}.fa-git-alt:before{content:"\f841"}.fa-git-square:before{content:"\f1d2"}.fa-github:before{content:"\f09b"}.fa-github-alt:before{content:"\f113"}.fa-github-square:before{content:"\f092"}.fa-gitkraken:before{content:"\f3a6"}.fa-gitlab:before{content:"\f296"}.fa-gitter:before{content:"\f426"}.fa-glass-cheers:before{content:"\f79f"}.fa-glass-martini:before{content:"\f000"}.fa-glass-martini-alt:before{content:"\f57b"}.fa-glass-whiskey:before{content:"\f7a0"}.fa-glasses:before{content:"\f530"}.fa-glide:before{content:"\f2a5"}.fa-glide-g:before{content:"\f2a6"}.fa-globe:before{content:"\f0ac"}.fa-globe-africa:before{content:"\f57c"}.fa-globe-americas:before{content:"\f57d"}.fa-globe-asia:before{content:"\f57e"}.fa-globe-europe:before{content:"\f7a2"}.fa-gofore:before{content:"\f3a7"}.fa-golf-ball:before{content:"\f450"}.fa-goodreads:before{content:"\f3a8"}.fa-goodreads-g:before{content:"\f3a9"}.fa-google:before{content:"\f1a0"}.fa-google-drive:before{content:"\f3aa"}.fa-google-pay:before{content:"\e079"}.fa-google-play:before{content:"\f3ab"}.fa-google-plus:before{content:"\f2b3"}.fa-google-plus-g:before{content:"\f0d5"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-wallet:before{content:"\f1ee"}.fa-gopuram:before{content:"\f664"}.fa-graduation-cap:before{content:"\f19d"}.fa-gratipay:before{content:"\f184"}.fa-grav:before{content:"\f2d6"}.fa-greater-than:before{content:"\f531"}.fa-greater-than-equal:before{content:"\f532"}.fa-grimace:before{content:"\f57f"}.fa-grin:before{content:"\f580"}.fa-grin-alt:before{content:"\f581"}.fa-grin-beam:before{content:"\f582"}.fa-grin-beam-sweat:before{content:"\f583"}.fa-grin-hearts:before{content:"\f584"}.fa-grin-squint:before{content:"\f585"}.fa-grin-squint-tears:before{content:"\f586"}.fa-grin-stars:before{content:"\f587"}.fa-grin-tears:before{content:"\f588"}.fa-grin-tongue:before{content:"\f589"}.fa-grin-tongue-squint:before{content:"\f58a"}.fa-grin-tongue-wink:before{content:"\f58b"}.fa-grin-wink:before{content:"\f58c"}.fa-grip-horizontal:before{content:"\f58d"}.fa-grip-lines:before{content:"\f7a4"}.fa-grip-lines-vertical:before{content:"\f7a5"}.fa-grip-vertical:before{content:"\f58e"}.fa-gripfire:before{content:"\f3ac"}.fa-grunt:before{content:"\f3ad"}.fa-guilded:before{content:"\e07e"}.fa-guitar:before{content:"\f7a6"}.fa-gulp:before{content:"\f3ae"}.fa-h-square:before{content:"\f0fd"}.fa-hacker-news:before{content:"\f1d4"}.fa-hacker-news-square:before{content:"\f3af"}.fa-hackerrank:before{content:"\f5f7"}.fa-hamburger:before{content:"\f805"}.fa-hammer:before{content:"\f6e3"}.fa-hamsa:before{content:"\f665"}.fa-hand-holding:before{content:"\f4bd"}.fa-hand-holding-heart:before{content:"\f4be"}.fa-hand-holding-medical:before{content:"\e05c"}.fa-hand-holding-usd:before{content:"\f4c0"}.fa-hand-holding-water:before{content:"\f4c1"}.fa-hand-lizard:before{content:"\f258"}.fa-hand-middle-finger:before{content:"\f806"}.fa-hand-paper:before{content:"\f256"}.fa-hand-peace:before{content:"\f25b"}.fa-hand-point-down:before{content:"\f0a7"}.fa-hand-point-left:before{content:"\f0a5"}.fa-hand-point-right:before{content:"\f0a4"}.fa-hand-point-up:before{content:"\f0a6"}.fa-hand-pointer:before{content:"\f25a"}.fa-hand-rock:before{content:"\f255"}.fa-hand-scissors:before{content:"\f257"}.fa-hand-sparkles:before{content:"\e05d"}.fa-hand-spock:before{content:"\f259"}.fa-hands:before{content:"\f4c2"}.fa-hands-helping:before{content:"\f4c4"}.fa-hands-wash:before{content:"\e05e"}.fa-handshake:before{content:"\f2b5"}.fa-handshake-alt-slash:before{content:"\e05f"}.fa-handshake-slash:before{content:"\e060"}.fa-hanukiah:before{content:"\f6e6"}.fa-hard-hat:before{content:"\f807"}.fa-hashtag:before{content:"\f292"}.fa-hat-cowboy:before{content:"\f8c0"}.fa-hat-cowboy-side:before{content:"\f8c1"}.fa-hat-wizard:before{content:"\f6e8"}.fa-hdd:before{content:"\f0a0"}.fa-head-side-cough:before{content:"\e061"}.fa-head-side-cough-slash:before{content:"\e062"}.fa-head-side-mask:before{content:"\e063"}.fa-head-side-virus:before{content:"\e064"}.fa-heading:before{content:"\f1dc"}.fa-headphones:before{content:"\f025"}.fa-headphones-alt:before{content:"\f58f"}.fa-headset:before{content:"\f590"}.fa-heart:before{content:"\f004"}.fa-heart-broken:before{content:"\f7a9"}.fa-heartbeat:before{content:"\f21e"}.fa-helicopter:before{content:"\f533"}.fa-highlighter:before{content:"\f591"}.fa-hiking:before{content:"\f6ec"}.fa-hippo:before{content:"\f6ed"}.fa-hips:before{content:"\f452"}.fa-hire-a-helper:before{content:"\f3b0"}.fa-history:before{content:"\f1da"}.fa-hive:before{content:"\e07f"}.fa-hockey-puck:before{content:"\f453"}.fa-holly-berry:before{content:"\f7aa"}.fa-home:before{content:"\f015"}.fa-hooli:before{content:"\f427"}.fa-hornbill:before{content:"\f592"}.fa-horse:before{content:"\f6f0"}.fa-horse-head:before{content:"\f7ab"}.fa-hospital:before{content:"\f0f8"}.fa-hospital-alt:before{content:"\f47d"}.fa-hospital-symbol:before{content:"\f47e"}.fa-hospital-user:before{content:"\f80d"}.fa-hot-tub:before{content:"\f593"}.fa-hotdog:before{content:"\f80f"}.fa-hotel:before{content:"\f594"}.fa-hotjar:before{content:"\f3b1"}.fa-hourglass:before{content:"\f254"}.fa-hourglass-end:before{content:"\f253"}.fa-hourglass-half:before{content:"\f252"}.fa-hourglass-start:before{content:"\f251"}.fa-house-damage:before{content:"\f6f1"}.fa-house-user:before{content:"\e065"}.fa-houzz:before{content:"\f27c"}.fa-hryvnia:before{content:"\f6f2"}.fa-html5:before{content:"\f13b"}.fa-hubspot:before{content:"\f3b2"}.fa-i-cursor:before{content:"\f246"}.fa-ice-cream:before{content:"\f810"}.fa-icicles:before{content:"\f7ad"}.fa-icons:before{content:"\f86d"}.fa-id-badge:before{content:"\f2c1"}.fa-id-card:before{content:"\f2c2"}.fa-id-card-alt:before{content:"\f47f"}.fa-ideal:before{content:"\e013"}.fa-igloo:before{content:"\f7ae"}.fa-image:before{content:"\f03e"}.fa-images:before{content:"\f302"}.fa-imdb:before{content:"\f2d8"}.fa-inbox:before{content:"\f01c"}.fa-indent:before{content:"\f03c"}.fa-industry:before{content:"\f275"}.fa-infinity:before{content:"\f534"}.fa-info:before{content:"\f129"}.fa-info-circle:before{content:"\f05a"}.fa-innosoft:before{content:"\e080"}.fa-instagram:before{content:"\f16d"}.fa-instagram-square:before{content:"\e055"}.fa-instalod:before{content:"\e081"}.fa-intercom:before{content:"\f7af"}.fa-internet-explorer:before{content:"\f26b"}.fa-invision:before{content:"\f7b0"}.fa-ioxhost:before{content:"\f208"}.fa-italic:before{content:"\f033"}.fa-itch-io:before{content:"\f83a"}.fa-itunes:before{content:"\f3b4"}.fa-itunes-note:before{content:"\f3b5"}.fa-java:before{content:"\f4e4"}.fa-jedi:before{content:"\f669"}.fa-jedi-order:before{content:"\f50e"}.fa-jenkins:before{content:"\f3b6"}.fa-jira:before{content:"\f7b1"}.fa-joget:before{content:"\f3b7"}.fa-joint:before{content:"\f595"}.fa-joomla:before{content:"\f1aa"}.fa-journal-whills:before{content:"\f66a"}.fa-js:before{content:"\f3b8"}.fa-js-square:before{content:"\f3b9"}.fa-jsfiddle:before{content:"\f1cc"}.fa-kaaba:before{content:"\f66b"}.fa-kaggle:before{content:"\f5fa"}.fa-key:before{content:"\f084"}.fa-keybase:before{content:"\f4f5"}.fa-keyboard:before{content:"\f11c"}.fa-keycdn:before{content:"\f3ba"}.fa-khanda:before{content:"\f66d"}.fa-kickstarter:before{content:"\f3bb"}.fa-kickstarter-k:before{content:"\f3bc"}.fa-kiss:before{content:"\f596"}.fa-kiss-beam:before{content:"\f597"}.fa-kiss-wink-heart:before{content:"\f598"}.fa-kiwi-bird:before{content:"\f535"}.fa-korvue:before{content:"\f42f"}.fa-landmark:before{content:"\f66f"}.fa-language:before{content:"\f1ab"}.fa-laptop:before{content:"\f109"}.fa-laptop-code:before{content:"\f5fc"}.fa-laptop-house:before{content:"\e066"}.fa-laptop-medical:before{content:"\f812"}.fa-laravel:before{content:"\f3bd"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-laugh:before{content:"\f599"}.fa-laugh-beam:before{content:"\f59a"}.fa-laugh-squint:before{content:"\f59b"}.fa-laugh-wink:before{content:"\f59c"}.fa-layer-group:before{content:"\f5fd"}.fa-leaf:before{content:"\f06c"}.fa-leanpub:before{content:"\f212"}.fa-lemon:before{content:"\f094"}.fa-less:before{content:"\f41d"}.fa-less-than:before{content:"\f536"}.fa-less-than-equal:before{content:"\f537"}.fa-level-down-alt:before{content:"\f3be"}.fa-level-up-alt:before{content:"\f3bf"}.fa-life-ring:before{content:"\f1cd"}.fa-lightbulb:before{content:"\f0eb"}.fa-line:before{content:"\f3c0"}.fa-link:before{content:"\f0c1"}.fa-linkedin:before{content:"\f08c"}.fa-linkedin-in:before{content:"\f0e1"}.fa-linode:before{content:"\f2b8"}.fa-linux:before{content:"\f17c"}.fa-lira-sign:before{content:"\f195"}.fa-list:before{content:"\f03a"}.fa-list-alt:before{content:"\f022"}.fa-list-ol:before{content:"\f0cb"}.fa-list-ul:before{content:"\f0ca"}.fa-location-arrow:before{content:"\f124"}.fa-lock:before{content:"\f023"}.fa-lock-open:before{content:"\f3c1"}.fa-long-arrow-alt-down:before{content:"\f309"}.fa-long-arrow-alt-left:before{content:"\f30a"}.fa-long-arrow-alt-right:before{content:"\f30b"}.fa-long-arrow-alt-up:before{content:"\f30c"}.fa-low-vision:before{content:"\f2a8"}.fa-luggage-cart:before{content:"\f59d"}.fa-lungs:before{content:"\f604"}.fa-lungs-virus:before{content:"\e067"}.fa-lyft:before{content:"\f3c3"}.fa-magento:before{content:"\f3c4"}.fa-magic:before{content:"\f0d0"}.fa-magnet:before{content:"\f076"}.fa-mail-bulk:before{content:"\f674"}.fa-mailchimp:before{content:"\f59e"}.fa-male:before{content:"\f183"}.fa-mandalorian:before{content:"\f50f"}.fa-map:before{content:"\f279"}.fa-map-marked:before{content:"\f59f"}.fa-map-marked-alt:before{content:"\f5a0"}.fa-map-marker:before{content:"\f041"}.fa-map-marker-alt:before{content:"\f3c5"}.fa-map-pin:before{content:"\f276"}.fa-map-signs:before{content:"\f277"}.fa-markdown:before{content:"\f60f"}.fa-marker:before{content:"\f5a1"}.fa-mars:before{content:"\f222"}.fa-mars-double:before{content:"\f227"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mask:before{content:"\f6fa"}.fa-mastodon:before{content:"\f4f6"}.fa-maxcdn:before{content:"\f136"}.fa-mdb:before{content:"\f8ca"}.fa-medal:before{content:"\f5a2"}.fa-medapps:before{content:"\f3c6"}.fa-medium:before{content:"\f23a"}.fa-medium-m:before{content:"\f3c7"}.fa-medkit:before{content:"\f0fa"}.fa-medrt:before{content:"\f3c8"}.fa-meetup:before{content:"\f2e0"}.fa-megaport:before{content:"\f5a3"}.fa-meh:before{content:"\f11a"}.fa-meh-blank:before{content:"\f5a4"}.fa-meh-rolling-eyes:before{content:"\f5a5"}.fa-memory:before{content:"\f538"}.fa-mendeley:before{content:"\f7b3"}.fa-menorah:before{content:"\f676"}.fa-mercury:before{content:"\f223"}.fa-meteor:before{content:"\f753"}.fa-microblog:before{content:"\e01a"}.fa-microchip:before{content:"\f2db"}.fa-microphone:before{content:"\f130"}.fa-microphone-alt:before{content:"\f3c9"}.fa-microphone-alt-slash:before{content:"\f539"}.fa-microphone-slash:before{content:"\f131"}.fa-microscope:before{content:"\f610"}.fa-microsoft:before{content:"\f3ca"}.fa-minus:before{content:"\f068"}.fa-minus-circle:before{content:"\f056"}.fa-minus-square:before{content:"\f146"}.fa-mitten:before{content:"\f7b5"}.fa-mix:before{content:"\f3cb"}.fa-mixcloud:before{content:"\f289"}.fa-mixer:before{content:"\e056"}.fa-mizuni:before{content:"\f3cc"}.fa-mobile:before{content:"\f10b"}.fa-mobile-alt:before{content:"\f3cd"}.fa-modx:before{content:"\f285"}.fa-monero:before{content:"\f3d0"}.fa-money-bill:before{content:"\f0d6"}.fa-money-bill-alt:before{content:"\f3d1"}.fa-money-bill-wave:before{content:"\f53a"}.fa-money-bill-wave-alt:before{content:"\f53b"}.fa-money-check:before{content:"\f53c"}.fa-money-check-alt:before{content:"\f53d"}.fa-monument:before{content:"\f5a6"}.fa-moon:before{content:"\f186"}.fa-mortar-pestle:before{content:"\f5a7"}.fa-mosque:before{content:"\f678"}.fa-motorcycle:before{content:"\f21c"}.fa-mountain:before{content:"\f6fc"}.fa-mouse:before{content:"\f8cc"}.fa-mouse-pointer:before{content:"\f245"}.fa-mug-hot:before{content:"\f7b6"}.fa-music:before{content:"\f001"}.fa-napster:before{content:"\f3d2"}.fa-neos:before{content:"\f612"}.fa-network-wired:before{content:"\f6ff"}.fa-neuter:before{content:"\f22c"}.fa-newspaper:before{content:"\f1ea"}.fa-nimblr:before{content:"\f5a8"}.fa-node:before{content:"\f419"}.fa-node-js:before{content:"\f3d3"}.fa-not-equal:before{content:"\f53e"}.fa-notes-medical:before{content:"\f481"}.fa-npm:before{content:"\f3d4"}.fa-ns8:before{content:"\f3d5"}.fa-nutritionix:before{content:"\f3d6"}.fa-object-group:before{content:"\f247"}.fa-object-ungroup:before{content:"\f248"}.fa-octopus-deploy:before{content:"\e082"}.fa-odnoklassniki:before{content:"\f263"}.fa-odnoklassniki-square:before{content:"\f264"}.fa-oil-can:before{content:"\f613"}.fa-old-republic:before{content:"\f510"}.fa-om:before{content:"\f679"}.fa-opencart:before{content:"\f23d"}.fa-openid:before{content:"\f19b"}.fa-opera:before{content:"\f26a"}.fa-optin-monster:before{content:"\f23c"}.fa-orcid:before{content:"\f8d2"}.fa-osi:before{content:"\f41a"}.fa-otter:before{content:"\f700"}.fa-outdent:before{content:"\f03b"}.fa-page4:before{content:"\f3d7"}.fa-pagelines:before{content:"\f18c"}.fa-pager:before{content:"\f815"}.fa-paint-brush:before{content:"\f1fc"}.fa-paint-roller:before{content:"\f5aa"}.fa-palette:before{content:"\f53f"}.fa-palfed:before{content:"\f3d8"}.fa-pallet:before{content:"\f482"}.fa-paper-plane:before{content:"\f1d8"}.fa-paperclip:before{content:"\f0c6"}.fa-parachute-box:before{content:"\f4cd"}.fa-paragraph:before{content:"\f1dd"}.fa-parking:before{content:"\f540"}.fa-passport:before{content:"\f5ab"}.fa-pastafarianism:before{content:"\f67b"}.fa-paste:before{content:"\f0ea"}.fa-patreon:before{content:"\f3d9"}.fa-pause:before{content:"\f04c"}.fa-pause-circle:before{content:"\f28b"}.fa-paw:before{content:"\f1b0"}.fa-paypal:before{content:"\f1ed"}.fa-peace:before{content:"\f67c"}.fa-pen:before{content:"\f304"}.fa-pen-alt:before{content:"\f305"}.fa-pen-fancy:before{content:"\f5ac"}.fa-pen-nib:before{content:"\f5ad"}.fa-pen-square:before{content:"\f14b"}.fa-pencil-alt:before{content:"\f303"}.fa-pencil-ruler:before{content:"\f5ae"}.fa-penny-arcade:before{content:"\f704"}.fa-people-arrows:before{content:"\e068"}.fa-people-carry:before{content:"\f4ce"}.fa-pepper-hot:before{content:"\f816"}.fa-perbyte:before{content:"\e083"}.fa-percent:before{content:"\f295"}.fa-percentage:before{content:"\f541"}.fa-periscope:before{content:"\f3da"}.fa-person-booth:before{content:"\f756"}.fa-phabricator:before{content:"\f3db"}.fa-phoenix-framework:before{content:"\f3dc"}.fa-phoenix-squadron:before{content:"\f511"}.fa-phone:before{content:"\f095"}.fa-phone-alt:before{content:"\f879"}.fa-phone-slash:before{content:"\f3dd"}.fa-phone-square:before{content:"\f098"}.fa-phone-square-alt:before{content:"\f87b"}.fa-phone-volume:before{content:"\f2a0"}.fa-photo-video:before{content:"\f87c"}.fa-php:before{content:"\f457"}.fa-pied-piper:before{content:"\f2ae"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-pied-piper-hat:before{content:"\f4e5"}.fa-pied-piper-pp:before{content:"\f1a7"}.fa-pied-piper-square:before{content:"\e01e"}.fa-piggy-bank:before{content:"\f4d3"}.fa-pills:before{content:"\f484"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-p:before{content:"\f231"}.fa-pinterest-square:before{content:"\f0d3"}.fa-pizza-slice:before{content:"\f818"}.fa-place-of-worship:before{content:"\f67f"}.fa-plane:before{content:"\f072"}.fa-plane-arrival:before{content:"\f5af"}.fa-plane-departure:before{content:"\f5b0"}.fa-plane-slash:before{content:"\e069"}.fa-play:before{content:"\f04b"}.fa-play-circle:before{content:"\f144"}.fa-playstation:before{content:"\f3df"}.fa-plug:before{content:"\f1e6"}.fa-plus:before{content:"\f067"}.fa-plus-circle:before{content:"\f055"}.fa-plus-square:before{content:"\f0fe"}.fa-podcast:before{content:"\f2ce"}.fa-poll:before{content:"\f681"}.fa-poll-h:before{content:"\f682"}.fa-poo:before{content:"\f2fe"}.fa-poo-storm:before{content:"\f75a"}.fa-poop:before{content:"\f619"}.fa-portrait:before{content:"\f3e0"}.fa-pound-sign:before{content:"\f154"}.fa-power-off:before{content:"\f011"}.fa-pray:before{content:"\f683"}.fa-praying-hands:before{content:"\f684"}.fa-prescription:before{content:"\f5b1"}.fa-prescription-bottle:before{content:"\f485"}.fa-prescription-bottle-alt:before{content:"\f486"}.fa-print:before{content:"\f02f"}.fa-procedures:before{content:"\f487"}.fa-product-hunt:before{content:"\f288"}.fa-project-diagram:before{content:"\f542"}.fa-pump-medical:before{content:"\e06a"}.fa-pump-soap:before{content:"\e06b"}.fa-pushed:before{content:"\f3e1"}.fa-puzzle-piece:before{content:"\f12e"}.fa-python:before{content:"\f3e2"}.fa-qq:before{content:"\f1d6"}.fa-qrcode:before{content:"\f029"}.fa-question:before{content:"\f128"}.fa-question-circle:before{content:"\f059"}.fa-quidditch:before{content:"\f458"}.fa-quinscape:before{content:"\f459"}.fa-quora:before{content:"\f2c4"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-quran:before{content:"\f687"}.fa-r-project:before{content:"\f4f7"}.fa-radiation:before{content:"\f7b9"}.fa-radiation-alt:before{content:"\f7ba"}.fa-rainbow:before{content:"\f75b"}.fa-random:before{content:"\f074"}.fa-raspberry-pi:before{content:"\f7bb"}.fa-ravelry:before{content:"\f2d9"}.fa-react:before{content:"\f41b"}.fa-reacteurope:before{content:"\f75d"}.fa-readme:before{content:"\f4d5"}.fa-rebel:before{content:"\f1d0"}.fa-receipt:before{content:"\f543"}.fa-record-vinyl:before{content:"\f8d9"}.fa-recycle:before{content:"\f1b8"}.fa-red-river:before{content:"\f3e3"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-alien:before{content:"\f281"}.fa-reddit-square:before{content:"\f1a2"}.fa-redhat:before{content:"\f7bc"}.fa-redo:before{content:"\f01e"}.fa-redo-alt:before{content:"\f2f9"}.fa-registered:before{content:"\f25d"}.fa-remove-format:before{content:"\f87d"}.fa-renren:before{content:"\f18b"}.fa-reply:before{content:"\f3e5"}.fa-reply-all:before{content:"\f122"}.fa-replyd:before{content:"\f3e6"}.fa-republican:before{content:"\f75e"}.fa-researchgate:before{content:"\f4f8"}.fa-resolving:before{content:"\f3e7"}.fa-restroom:before{content:"\f7bd"}.fa-retweet:before{content:"\f079"}.fa-rev:before{content:"\f5b2"}.fa-ribbon:before{content:"\f4d6"}.fa-ring:before{content:"\f70b"}.fa-road:before{content:"\f018"}.fa-robot:before{content:"\f544"}.fa-rocket:before{content:"\f135"}.fa-rocketchat:before{content:"\f3e8"}.fa-rockrms:before{content:"\f3e9"}.fa-route:before{content:"\f4d7"}.fa-rss:before{content:"\f09e"}.fa-rss-square:before{content:"\f143"}.fa-ruble-sign:before{content:"\f158"}.fa-ruler:before{content:"\f545"}.fa-ruler-combined:before{content:"\f546"}.fa-ruler-horizontal:before{content:"\f547"}.fa-ruler-vertical:before{content:"\f548"}.fa-running:before{content:"\f70c"}.fa-rupee-sign:before{content:"\f156"}.fa-rust:before{content:"\e07a"}.fa-sad-cry:before{content:"\f5b3"}.fa-sad-tear:before{content:"\f5b4"}.fa-safari:before{content:"\f267"}.fa-salesforce:before{content:"\f83b"}.fa-sass:before{content:"\f41e"}.fa-satellite:before{content:"\f7bf"}.fa-satellite-dish:before{content:"\f7c0"}.fa-save:before{content:"\f0c7"}.fa-schlix:before{content:"\f3ea"}.fa-school:before{content:"\f549"}.fa-screwdriver:before{content:"\f54a"}.fa-scribd:before{content:"\f28a"}.fa-scroll:before{content:"\f70e"}.fa-sd-card:before{content:"\f7c2"}.fa-search:before{content:"\f002"}.fa-search-dollar:before{content:"\f688"}.fa-search-location:before{content:"\f689"}.fa-search-minus:before{content:"\f010"}.fa-search-plus:before{content:"\f00e"}.fa-searchengin:before{content:"\f3eb"}.fa-seedling:before{content:"\f4d8"}.fa-sellcast:before{content:"\f2da"}.fa-sellsy:before{content:"\f213"}.fa-server:before{content:"\f233"}.fa-servicestack:before{content:"\f3ec"}.fa-shapes:before{content:"\f61f"}.fa-share:before{content:"\f064"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-share-square:before{content:"\f14d"}.fa-shekel-sign:before{content:"\f20b"}.fa-shield-alt:before{content:"\f3ed"}.fa-shield-virus:before{content:"\e06c"}.fa-ship:before{content:"\f21a"}.fa-shipping-fast:before{content:"\f48b"}.fa-shirtsinbulk:before{content:"\f214"}.fa-shoe-prints:before{content:"\f54b"}.fa-shopify:before{content:"\e057"}.fa-shopping-bag:before{content:"\f290"}.fa-shopping-basket:before{content:"\f291"}.fa-shopping-cart:before{content:"\f07a"}.fa-shopware:before{content:"\f5b5"}.fa-shower:before{content:"\f2cc"}.fa-shuttle-van:before{content:"\f5b6"}.fa-sign:before{content:"\f4d9"}.fa-sign-in-alt:before{content:"\f2f6"}.fa-sign-language:before{content:"\f2a7"}.fa-sign-out-alt:before{content:"\f2f5"}.fa-signal:before{content:"\f012"}.fa-signature:before{content:"\f5b7"}.fa-sim-card:before{content:"\f7c4"}.fa-simplybuilt:before{content:"\f215"}.fa-sink:before{content:"\e06d"}.fa-sistrix:before{content:"\f3ee"}.fa-sitemap:before{content:"\f0e8"}.fa-sith:before{content:"\f512"}.fa-skating:before{content:"\f7c5"}.fa-sketch:before{content:"\f7c6"}.fa-skiing:before{content:"\f7c9"}.fa-skiing-nordic:before{content:"\f7ca"}.fa-skull:before{content:"\f54c"}.fa-skull-crossbones:before{content:"\f714"}.fa-skyatlas:before{content:"\f216"}.fa-skype:before{content:"\f17e"}.fa-slack:before{content:"\f198"}.fa-slack-hash:before{content:"\f3ef"}.fa-slash:before{content:"\f715"}.fa-sleigh:before{content:"\f7cc"}.fa-sliders-h:before{content:"\f1de"}.fa-slideshare:before{content:"\f1e7"}.fa-smile:before{content:"\f118"}.fa-smile-beam:before{content:"\f5b8"}.fa-smile-wink:before{content:"\f4da"}.fa-smog:before{content:"\f75f"}.fa-smoking:before{content:"\f48d"}.fa-smoking-ban:before{content:"\f54d"}.fa-sms:before{content:"\f7cd"}.fa-snapchat:before{content:"\f2ab"}.fa-snapchat-ghost:before{content:"\f2ac"}.fa-snapchat-square:before{content:"\f2ad"}.fa-snowboarding:before{content:"\f7ce"}.fa-snowflake:before{content:"\f2dc"}.fa-snowman:before{content:"\f7d0"}.fa-snowplow:before{content:"\f7d2"}.fa-soap:before{content:"\e06e"}.fa-socks:before{content:"\f696"}.fa-solar-panel:before{content:"\f5ba"}.fa-sort:before{content:"\f0dc"}.fa-sort-alpha-down:before{content:"\f15d"}.fa-sort-alpha-down-alt:before{content:"\f881"}.fa-sort-alpha-up:before{content:"\f15e"}.fa-sort-alpha-up-alt:before{content:"\f882"}.fa-sort-amount-down:before{content:"\f160"}.fa-sort-amount-down-alt:before{content:"\f884"}.fa-sort-amount-up:before{content:"\f161"}.fa-sort-amount-up-alt:before{content:"\f885"}.fa-sort-down:before{content:"\f0dd"}.fa-sort-numeric-down:before{content:"\f162"}.fa-sort-numeric-down-alt:before{content:"\f886"}.fa-sort-numeric-up:before{content:"\f163"}.fa-sort-numeric-up-alt:before{content:"\f887"}.fa-sort-up:before{content:"\f0de"}.fa-soundcloud:before{content:"\f1be"}.fa-sourcetree:before{content:"\f7d3"}.fa-spa:before{content:"\f5bb"}.fa-space-shuttle:before{content:"\f197"}.fa-speakap:before{content:"\f3f3"}.fa-speaker-deck:before{content:"\f83c"}.fa-spell-check:before{content:"\f891"}.fa-spider:before{content:"\f717"}.fa-spinner:before{content:"\f110"}.fa-splotch:before{content:"\f5bc"}.fa-spotify:before{content:"\f1bc"}.fa-spray-can:before{content:"\f5bd"}.fa-square:before{content:"\f0c8"}.fa-square-full:before{content:"\f45c"}.fa-square-root-alt:before{content:"\f698"}.fa-squarespace:before{content:"\f5be"}.fa-stack-exchange:before{content:"\f18d"}.fa-stack-overflow:before{content:"\f16c"}.fa-stackpath:before{content:"\f842"}.fa-stamp:before{content:"\f5bf"}.fa-star:before{content:"\f005"}.fa-star-and-crescent:before{content:"\f699"}.fa-star-half:before{content:"\f089"}.fa-star-half-alt:before{content:"\f5c0"}.fa-star-of-david:before{content:"\f69a"}.fa-star-of-life:before{content:"\f621"}.fa-staylinked:before{content:"\f3f5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-steam-symbol:before{content:"\f3f6"}.fa-step-backward:before{content:"\f048"}.fa-step-forward:before{content:"\f051"}.fa-stethoscope:before{content:"\f0f1"}.fa-sticker-mule:before{content:"\f3f7"}.fa-sticky-note:before{content:"\f249"}.fa-stop:before{content:"\f04d"}.fa-stop-circle:before{content:"\f28d"}.fa-stopwatch:before{content:"\f2f2"}.fa-stopwatch-20:before{content:"\e06f"}.fa-store:before{content:"\f54e"}.fa-store-alt:before{content:"\f54f"}.fa-store-alt-slash:before{content:"\e070"}.fa-store-slash:before{content:"\e071"}.fa-strava:before{content:"\f428"}.fa-stream:before{content:"\f550"}.fa-street-view:before{content:"\f21d"}.fa-strikethrough:before{content:"\f0cc"}.fa-stripe:before{content:"\f429"}.fa-stripe-s:before{content:"\f42a"}.fa-stroopwafel:before{content:"\f551"}.fa-studiovinari:before{content:"\f3f8"}.fa-stumbleupon:before{content:"\f1a4"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-subscript:before{content:"\f12c"}.fa-subway:before{content:"\f239"}.fa-suitcase:before{content:"\f0f2"}.fa-suitcase-rolling:before{content:"\f5c1"}.fa-sun:before{content:"\f185"}.fa-superpowers:before{content:"\f2dd"}.fa-superscript:before{content:"\f12b"}.fa-supple:before{content:"\f3f9"}.fa-surprise:before{content:"\f5c2"}.fa-suse:before{content:"\f7d6"}.fa-swatchbook:before{content:"\f5c3"}.fa-swift:before{content:"\f8e1"}.fa-swimmer:before{content:"\f5c4"}.fa-swimming-pool:before{content:"\f5c5"}.fa-symfony:before{content:"\f83d"}.fa-synagogue:before{content:"\f69b"}.fa-sync:before{content:"\f021"}.fa-sync-alt:before{content:"\f2f1"}.fa-syringe:before{content:"\f48e"}.fa-table:before{content:"\f0ce"}.fa-table-tennis:before{content:"\f45d"}.fa-tablet:before{content:"\f10a"}.fa-tablet-alt:before{content:"\f3fa"}.fa-tablets:before{content:"\f490"}.fa-tachometer-alt:before{content:"\f3fd"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-tape:before{content:"\f4db"}.fa-tasks:before{content:"\f0ae"}.fa-taxi:before{content:"\f1ba"}.fa-teamspeak:before{content:"\f4f9"}.fa-teeth:before{content:"\f62e"}.fa-teeth-open:before{content:"\f62f"}.fa-telegram:before{content:"\f2c6"}.fa-telegram-plane:before{content:"\f3fe"}.fa-temperature-high:before{content:"\f769"}.fa-temperature-low:before{content:"\f76b"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-tenge:before{content:"\f7d7"}.fa-terminal:before{content:"\f120"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-th:before{content:"\f00a"}.fa-th-large:before{content:"\f009"}.fa-th-list:before{content:"\f00b"}.fa-the-red-yeti:before{content:"\f69d"}.fa-theater-masks:before{content:"\f630"}.fa-themeco:before{content:"\f5c6"}.fa-themeisle:before{content:"\f2b2"}.fa-thermometer:before{content:"\f491"}.fa-thermometer-empty:before{content:"\f2cb"}.fa-thermometer-full:before{content:"\f2c7"}.fa-thermometer-half:before{content:"\f2c9"}.fa-thermometer-quarter:before{content:"\f2ca"}.fa-thermometer-three-quarters:before{content:"\f2c8"}.fa-think-peaks:before{content:"\f731"}.fa-thumbs-down:before{content:"\f165"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbtack:before{content:"\f08d"}.fa-ticket-alt:before{content:"\f3ff"}.fa-tiktok:before{content:"\e07b"}.fa-times:before{content:"\f00d"}.fa-times-circle:before{content:"\f057"}.fa-tint:before{content:"\f043"}.fa-tint-slash:before{content:"\f5c7"}.fa-tired:before{content:"\f5c8"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-toilet:before{content:"\f7d8"}.fa-toilet-paper:before{content:"\f71e"}.fa-toilet-paper-slash:before{content:"\e072"}.fa-toolbox:before{content:"\f552"}.fa-tools:before{content:"\f7d9"}.fa-tooth:before{content:"\f5c9"}.fa-torah:before{content:"\f6a0"}.fa-torii-gate:before{content:"\f6a1"}.fa-tractor:before{content:"\f722"}.fa-trade-federation:before{content:"\f513"}.fa-trademark:before{content:"\f25c"}.fa-traffic-light:before{content:"\f637"}.fa-trailer:before{content:"\e041"}.fa-train:before{content:"\f238"}.fa-tram:before{content:"\f7da"}.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-trash:before{content:"\f1f8"}.fa-trash-alt:before{content:"\f2ed"}.fa-trash-restore:before{content:"\f829"}.fa-trash-restore-alt:before{content:"\f82a"}.fa-tree:before{content:"\f1bb"}.fa-trello:before{content:"\f181"}.fa-trophy:before{content:"\f091"}.fa-truck:before{content:"\f0d1"}.fa-truck-loading:before{content:"\f4de"}.fa-truck-monster:before{content:"\f63b"}.fa-truck-moving:before{content:"\f4df"}.fa-truck-pickup:before{content:"\f63c"}.fa-tshirt:before{content:"\f553"}.fa-tty:before{content:"\f1e4"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-tv:before{content:"\f26c"}.fa-twitch:before{content:"\f1e8"}.fa-twitter:before{content:"\f099"}.fa-twitter-square:before{content:"\f081"}.fa-typo3:before{content:"\f42b"}.fa-uber:before{content:"\f402"}.fa-ubuntu:before{content:"\f7df"}.fa-uikit:before{content:"\f403"}.fa-umbraco:before{content:"\f8e8"}.fa-umbrella:before{content:"\f0e9"}.fa-umbrella-beach:before{content:"\f5ca"}.fa-uncharted:before{content:"\e084"}.fa-underline:before{content:"\f0cd"}.fa-undo:before{content:"\f0e2"}.fa-undo-alt:before{content:"\f2ea"}.fa-uniregistry:before{content:"\f404"}.fa-unity:before{content:"\e049"}.fa-universal-access:before{content:"\f29a"}.fa-university:before{content:"\f19c"}.fa-unlink:before{content:"\f127"}.fa-unlock:before{content:"\f09c"}.fa-unlock-alt:before{content:"\f13e"}.fa-unsplash:before{content:"\e07c"}.fa-untappd:before{content:"\f405"}.fa-upload:before{content:"\f093"}.fa-ups:before{content:"\f7e0"}.fa-usb:before{content:"\f287"}.fa-user:before{content:"\f007"}.fa-user-alt:before{content:"\f406"}.fa-user-alt-slash:before{content:"\f4fa"}.fa-user-astronaut:before{content:"\f4fb"}.fa-user-check:before{content:"\f4fc"}.fa-user-circle:before{content:"\f2bd"}.fa-user-clock:before{content:"\f4fd"}.fa-user-cog:before{content:"\f4fe"}.fa-user-edit:before{content:"\f4ff"}.fa-user-friends:before{content:"\f500"}.fa-user-graduate:before{content:"\f501"}.fa-user-injured:before{content:"\f728"}.fa-user-lock:before{content:"\f502"}.fa-user-md:before{content:"\f0f0"}.fa-user-minus:before{content:"\f503"}.fa-user-ninja:before{content:"\f504"}.fa-user-nurse:before{content:"\f82f"}.fa-user-plus:before{content:"\f234"}.fa-user-secret:before{content:"\f21b"}.fa-user-shield:before{content:"\f505"}.fa-user-slash:before{content:"\f506"}.fa-user-tag:before{content:"\f507"}.fa-user-tie:before{content:"\f508"}.fa-user-times:before{content:"\f235"}.fa-users:before{content:"\f0c0"}.fa-users-cog:before{content:"\f509"}.fa-users-slash:before{content:"\e073"}.fa-usps:before{content:"\f7e1"}.fa-ussunnah:before{content:"\f407"}.fa-utensil-spoon:before{content:"\f2e5"}.fa-utensils:before{content:"\f2e7"}.fa-vaadin:before{content:"\f408"}.fa-vector-square:before{content:"\f5cb"}.fa-venus:before{content:"\f221"}.fa-venus-double:before{content:"\f226"}.fa-venus-mars:before{content:"\f228"}.fa-vest:before{content:"\e085"}.fa-vest-patches:before{content:"\e086"}.fa-viacoin:before{content:"\f237"}.fa-viadeo:before{content:"\f2a9"}.fa-viadeo-square:before{content:"\f2aa"}.fa-vial:before{content:"\f492"}.fa-vials:before{content:"\f493"}.fa-viber:before{content:"\f409"}.fa-video:before{content:"\f03d"}.fa-video-slash:before{content:"\f4e2"}.fa-vihara:before{content:"\f6a7"}.fa-vimeo:before{content:"\f40a"}.fa-vimeo-square:before{content:"\f194"}.fa-vimeo-v:before{content:"\f27d"}.fa-vine:before{content:"\f1ca"}.fa-virus:before{content:"\e074"}.fa-virus-slash:before{content:"\e075"}.fa-viruses:before{content:"\e076"}.fa-vk:before{content:"\f189"}.fa-vnv:before{content:"\f40b"}.fa-voicemail:before{content:"\f897"}.fa-volleyball-ball:before{content:"\f45f"}.fa-volume-down:before{content:"\f027"}.fa-volume-mute:before{content:"\f6a9"}.fa-volume-off:before{content:"\f026"}.fa-volume-up:before{content:"\f028"}.fa-vote-yea:before{content:"\f772"}.fa-vr-cardboard:before{content:"\f729"}.fa-vuejs:before{content:"\f41f"}.fa-walking:before{content:"\f554"}.fa-wallet:before{content:"\f555"}.fa-warehouse:before{content:"\f494"}.fa-watchman-monitoring:before{content:"\e087"}.fa-water:before{content:"\f773"}.fa-wave-square:before{content:"\f83e"}.fa-waze:before{content:"\f83f"}.fa-weebly:before{content:"\f5cc"}.fa-weibo:before{content:"\f18a"}.fa-weight:before{content:"\f496"}.fa-weight-hanging:before{content:"\f5cd"}.fa-weixin:before{content:"\f1d7"}.fa-whatsapp:before{content:"\f232"}.fa-whatsapp-square:before{content:"\f40c"}.fa-wheelchair:before{content:"\f193"}.fa-whmcs:before{content:"\f40d"}.fa-wifi:before{content:"\f1eb"}.fa-wikipedia-w:before{content:"\f266"}.fa-wind:before{content:"\f72e"}.fa-window-close:before{content:"\f410"}.fa-window-maximize:before{content:"\f2d0"}.fa-window-minimize:before{content:"\f2d1"}.fa-window-restore:before{content:"\f2d2"}.fa-windows:before{content:"\f17a"}.fa-wine-bottle:before{content:"\f72f"}.fa-wine-glass:before{content:"\f4e3"}.fa-wine-glass-alt:before{content:"\f5ce"}.fa-wix:before{content:"\f5cf"}.fa-wizards-of-the-coast:before{content:"\f730"}.fa-wodu:before{content:"\e088"}.fa-wolf-pack-battalion:before{content:"\f514"}.fa-won-sign:before{content:"\f159"}.fa-wordpress:before{content:"\f19a"}.fa-wordpress-simple:before{content:"\f411"}.fa-wpbeginner:before{content:"\f297"}.fa-wpexplorer:before{content:"\f2de"}.fa-wpforms:before{content:"\f298"}.fa-wpressr:before{content:"\f3e4"}.fa-wrench:before{content:"\f0ad"}.fa-x-ray:before{content:"\f497"}.fa-xbox:before{content:"\f412"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-y-combinator:before{content:"\f23b"}.fa-yahoo:before{content:"\f19e"}.fa-yammer:before{content:"\f840"}.fa-yandex:before{content:"\f413"}.fa-yandex-international:before{content:"\f414"}.fa-yarn:before{content:"\f7e3"}.fa-yelp:before{content:"\f1e9"}.fa-yen-sign:before{content:"\f157"}.fa-yin-yang:before{content:"\f6ad"}.fa-yoast:before{content:"\f2b1"}.fa-youtube:before{content:"\f167"}.fa-youtube-square:before{content:"\f431"}.fa-zhihu:before{content:"\f63f"}.sr-only{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.sr-only-focusable:active,.sr-only-focusable:focus{clip:auto;height:auto;margin:0;overflow:visible;position:static;width:auto}@font-face{font-family:"Font Awesome 5 Brands";font-style:normal;font-weight:400;font-display:block;src:url(../webfonts/fa-brands-400.eot);src:url(../webfonts/fa-brands-400.eot?#iefix) format("embedded-opentype"),url(../webfonts/fa-brands-400.woff2) format("woff2"),url(../webfonts/fa-brands-400.woff) format("woff"),url(../webfonts/fa-brands-400.ttf) format("truetype"),url(../webfonts/fa-brands-400.svg#fontawesome) format("svg")}.fab{font-family:"Font Awesome 5 Brands"}@font-face{font-family:"Font Awesome 5 Free";font-style:normal;font-weight:400;font-display:block;src:url(../webfonts/fa-regular-400.eot);src:url(../webfonts/fa-regular-400.eot?#iefix) format("embedded-opentype"),url(../webfonts/fa-regular-400.woff2) format("woff2"),url(../webfonts/fa-regular-400.woff) format("woff"),url(../webfonts/fa-regular-400.ttf) format("truetype"),url(../webfonts/fa-regular-400.svg#fontawesome) format("svg")}.fab,.far{font-weight:400}@font-face{font-family:"Font Awesome 5 Free";font-style:normal;font-weight:900;font-display:block;src:url(../webfonts/fa-solid-900.eot);src:url(../webfonts/fa-solid-900.eot?#iefix) format("embedded-opentype"),url(../webfonts/fa-solid-900.woff2) format("woff2"),url(../webfonts/fa-solid-900.woff) format("woff"),url(../webfonts/fa-solid-900.ttf) format("truetype"),url(../webfonts/fa-solid-900.svg#fontawesome) format("svg")}.fa,.far,.fas{font-family:"Font Awesome 5 Free"}.fa,.fas{font-weight:900}
public/assets/css/images/overlay1.png ADDED
public/assets/css/images/overlay2.png ADDED
public/assets/css/images/overlay3.svg ADDED
public/assets/css/images/overlay4.svg ADDED
public/assets/css/main.css ADDED
@@ -0,0 +1,3512 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ @import url("fontawesome-all.min.css");
2
+ @import url("https://fonts.googleapis.com/css?family=Source+Sans+Pro:300,300italic,400,400italic");
3
+
4
+ /*
5
+ Photon by HTML5 UP
6
+ html5up.net | @ajlkn
7
+ Free for personal and commercial use under the CCA 3.0 license (html5up.net/license)
8
+ */
9
+
10
+ html, body, div, span, applet, object,
11
+ iframe, h1, h2, h3, h4, h5, h6, p, blockquote,
12
+ pre, a, abbr, acronym, address, big, cite,
13
+ code, del, dfn, em, img, ins, kbd, q, s, samp,
14
+ small, strike, strong, sub, sup, tt, var, b,
15
+ u, i, center, dl, dt, dd, ol, ul, li, fieldset,
16
+ form, label, legend, table, caption, tbody,
17
+ tfoot, thead, tr, th, td, article, aside,
18
+ canvas, details, embed, figure, figcaption,
19
+ footer, header, hgroup, menu, nav, output, ruby,
20
+ section, summary, time, mark, audio, video {
21
+ margin: 0;
22
+ padding: 0;
23
+ border: 0;
24
+ font-size: 100%;
25
+ font: inherit;
26
+ vertical-align: baseline;}
27
+
28
+ article, aside, details, figcaption, figure,
29
+ footer, header, hgroup, menu, nav, section {
30
+ display: block;}
31
+
32
+ body {
33
+ line-height: 1;
34
+ }
35
+
36
+ ol, ul {
37
+ list-style: none;
38
+ }
39
+
40
+ blockquote, q {
41
+ quotes: none;
42
+ }
43
+
44
+ blockquote:before, blockquote:after, q:before, q:after {
45
+ content: '';
46
+ content: none;
47
+ }
48
+
49
+ table {
50
+ border-collapse: collapse;
51
+ border-spacing: 0;
52
+ }
53
+
54
+ body {
55
+ -webkit-text-size-adjust: none;
56
+ }
57
+
58
+ mark {
59
+ background-color: transparent;
60
+ color: inherit;
61
+ }
62
+
63
+ input::-moz-focus-inner {
64
+ border: 0;
65
+ padding: 0;
66
+ }
67
+
68
+ input, select, textarea {
69
+ -moz-appearance: none;
70
+ -webkit-appearance: none;
71
+ -ms-appearance: none;
72
+ appearance: none;
73
+ }
74
+
75
+ /* Basic */
76
+
77
+ html {
78
+ box-sizing: border-box;
79
+ }
80
+
81
+ *, *:before, *:after {
82
+ box-sizing: inherit;
83
+ }
84
+
85
+ body {
86
+ background: #fff;
87
+ }
88
+
89
+ body.is-preload *, body.is-preload *:before, body.is-preload *:after {
90
+ -moz-animation: none !important;
91
+ -webkit-animation: none !important;
92
+ -ms-animation: none !important;
93
+ animation: none !important;
94
+ -moz-transition: none !important;
95
+ -webkit-transition: none !important;
96
+ -ms-transition: none !important;
97
+ transition: none !important;
98
+ }
99
+
100
+ body, input, select, textarea {
101
+ color: #666;
102
+ font-family: "Source Sans Pro", Helvetica, sans-serif;
103
+ font-size: 16pt;
104
+ font-weight: 300;
105
+ line-height: 1.65em;
106
+ }
107
+
108
+ a {
109
+ -moz-transition: color 0.2s ease-in-out, border-color 0.2s ease-in-out;
110
+ -webkit-transition: color 0.2s ease-in-out, border-color 0.2s ease-in-out;
111
+ -ms-transition: color 0.2s ease-in-out, border-color 0.2s ease-in-out;
112
+ transition: color 0.2s ease-in-out, border-color 0.2s ease-in-out;
113
+ border-bottom: dotted 1px #666;
114
+ color: inherit;
115
+ text-decoration: none;
116
+ }
117
+
118
+ a:hover {
119
+ border-bottom-color: transparent !important;
120
+ color: #6bd4c8;
121
+ }
122
+
123
+ strong, b {
124
+ color: #555;
125
+ font-weight: 400;
126
+ }
127
+
128
+ em, i {
129
+ font-style: italic;
130
+ }
131
+
132
+ p {
133
+ margin: 0 0 2em 0;
134
+ }
135
+
136
+ h1, h2, h3, h4, h5, h6 {
137
+ color: #555;
138
+ line-height: 1em;
139
+ margin: 0 0 1em 0;
140
+ }
141
+
142
+ h1 a, h2 a, h3 a, h4 a, h5 a, h6 a {
143
+ color: inherit;
144
+ text-decoration: none;
145
+ }
146
+
147
+ h1 {
148
+ font-size: 2.25em;
149
+ line-height: 1.35em;
150
+ }
151
+
152
+ h2 {
153
+ font-size: 2em;
154
+ line-height: 1.35em;
155
+ }
156
+
157
+ h3 {
158
+ font-size: 1.35em;
159
+ line-height: 1.5em;
160
+ }
161
+
162
+ h4 {
163
+ font-size: 1.25em;
164
+ line-height: 1.5em;
165
+ }
166
+
167
+ h5 {
168
+ font-size: 0.9em;
169
+ line-height: 1.5em;
170
+ }
171
+
172
+ h6 {
173
+ font-size: 0.7em;
174
+ line-height: 1.5em;
175
+ }
176
+
177
+ sub {
178
+ font-size: 0.8em;
179
+ position: relative;
180
+ top: 0.5em;
181
+ }
182
+
183
+ sup {
184
+ font-size: 0.8em;
185
+ position: relative;
186
+ top: -0.5em;
187
+ }
188
+
189
+ hr {
190
+ border: 0;
191
+ border-bottom: solid 1px rgba(144, 144, 144, 0.5);
192
+ margin: 2em 0;
193
+ }
194
+
195
+ hr.major {
196
+ margin: 3em 0;
197
+ }
198
+
199
+ blockquote {
200
+ border-left: solid 4px rgba(144, 144, 144, 0.5);
201
+ font-style: italic;
202
+ margin: 0 0 2em 0;
203
+ padding: 0.5em 0 0.5em 2em;
204
+ }
205
+
206
+ code {
207
+ background: rgba(144, 144, 144, 0.075);
208
+ border-radius: 4px;
209
+ border: solid 1px rgba(144, 144, 144, 0.5);
210
+ font-family: "Courier New", monospace;
211
+ font-size: 0.9em;
212
+ margin: 0 0.25em;
213
+ padding: 0.25em 0.65em;
214
+ }
215
+
216
+ pre {
217
+ -webkit-overflow-scrolling: touch;
218
+ font-family: "Courier New", monospace;
219
+ font-size: 0.9em;
220
+ margin: 0 0 2em 0;
221
+ }
222
+
223
+ pre code {
224
+ display: block;
225
+ line-height: 1.75em;
226
+ padding: 1em 1.5em;
227
+ overflow-x: auto;
228
+ }
229
+
230
+ .align-left {
231
+ text-align: left;
232
+ }
233
+
234
+ .align-center {
235
+ text-align: center;
236
+ }
237
+
238
+ .align-right {
239
+ text-align: right;
240
+ }
241
+
242
+ /* Container */
243
+
244
+ .container {
245
+ margin: 0 auto;
246
+ max-width: calc(100% - 4em);
247
+ width: 60em;
248
+ }
249
+
250
+ .container.xsmall {
251
+ width: 15em;
252
+ }
253
+
254
+ .container.small {
255
+ width: 30em;
256
+ }
257
+
258
+ .container.medium {
259
+ width: 45em;
260
+ }
261
+
262
+ .container.large {
263
+ width: 75em;
264
+ }
265
+
266
+ .container.xlarge {
267
+ width: 90em;
268
+ }
269
+
270
+ .container.max {
271
+ width: 100%;
272
+ }
273
+
274
+ @media screen and (max-width: 980px) {
275
+
276
+ .container {
277
+ max-width: 100% !important;
278
+ width: 100% !important;
279
+ }
280
+
281
+ }
282
+
283
+ @media screen and (max-width: 480px) {
284
+
285
+ .container {
286
+ max-width: calc(100% - 3em);
287
+ }
288
+
289
+ }
290
+
291
+ /* Row */
292
+
293
+ .row {
294
+ display: flex;
295
+ flex-wrap: wrap;
296
+ box-sizing: border-box;
297
+ align-items: stretch;
298
+ }
299
+
300
+ .row > * {
301
+ box-sizing: border-box;
302
+ }
303
+
304
+ .row.gtr-uniform > * > :last-child {
305
+ margin-bottom: 0;
306
+ }
307
+
308
+ .row.aln-left {
309
+ justify-content: flex-start;
310
+ }
311
+
312
+ .row.aln-center {
313
+ justify-content: center;
314
+ }
315
+
316
+ .row.aln-right {
317
+ justify-content: flex-end;
318
+ }
319
+
320
+ .row.aln-top {
321
+ align-items: flex-start;
322
+ }
323
+
324
+ .row.aln-middle {
325
+ align-items: center;
326
+ }
327
+
328
+ .row.aln-bottom {
329
+ align-items: flex-end;
330
+ }
331
+
332
+ .row > .imp {
333
+ order: -1;
334
+ }
335
+
336
+ .row > .col-1 {
337
+ width: 8.33333%;
338
+ }
339
+
340
+ .row > .off-1 {
341
+ margin-left: 8.33333%;
342
+ }
343
+
344
+ .row > .col-2 {
345
+ width: 16.66667%;
346
+ }
347
+
348
+ .row > .off-2 {
349
+ margin-left: 16.66667%;
350
+ }
351
+
352
+ .row > .col-3 {
353
+ width: 25%;
354
+ }
355
+
356
+ .row > .off-3 {
357
+ margin-left: 25%;
358
+ }
359
+
360
+ .row > .col-4 {
361
+ width: 33.33333%;
362
+ }
363
+
364
+ .row > .off-4 {
365
+ margin-left: 33.33333%;
366
+ }
367
+
368
+ .row > .col-5 {
369
+ width: 41.66667%;
370
+ }
371
+
372
+ .row > .off-5 {
373
+ margin-left: 41.66667%;
374
+ }
375
+
376
+ .row > .col-6 {
377
+ width: 50%;
378
+ }
379
+
380
+ .row > .off-6 {
381
+ margin-left: 50%;
382
+ }
383
+
384
+ .row > .col-7 {
385
+ width: 58.33333%;
386
+ }
387
+
388
+ .row > .off-7 {
389
+ margin-left: 58.33333%;
390
+ }
391
+
392
+ .row > .col-8 {
393
+ width: 66.66667%;
394
+ }
395
+
396
+ .row > .off-8 {
397
+ margin-left: 66.66667%;
398
+ }
399
+
400
+ .row > .col-9 {
401
+ width: 75%;
402
+ }
403
+
404
+ .row > .off-9 {
405
+ margin-left: 75%;
406
+ }
407
+
408
+ .row > .col-10 {
409
+ width: 83.33333%;
410
+ }
411
+
412
+ .row > .off-10 {
413
+ margin-left: 83.33333%;
414
+ }
415
+
416
+ .row > .col-11 {
417
+ width: 91.66667%;
418
+ }
419
+
420
+ .row > .off-11 {
421
+ margin-left: 91.66667%;
422
+ }
423
+
424
+ .row > .col-12 {
425
+ width: 100%;
426
+ }
427
+
428
+ .row > .off-12 {
429
+ margin-left: 100%;
430
+ }
431
+
432
+ .row.gtr-0 {
433
+ margin-top: 0;
434
+ margin-left: 0em;
435
+ }
436
+
437
+ .row.gtr-0 > * {
438
+ padding: 0 0 0 0em;
439
+ }
440
+
441
+ .row.gtr-0.gtr-uniform {
442
+ margin-top: 0em;
443
+ }
444
+
445
+ .row.gtr-0.gtr-uniform > * {
446
+ padding-top: 0em;
447
+ }
448
+
449
+ .row.gtr-25 {
450
+ margin-top: 0;
451
+ margin-left: -0.5em;
452
+ }
453
+
454
+ .row.gtr-25 > * {
455
+ padding: 0 0 0 0.5em;
456
+ }
457
+
458
+ .row.gtr-25.gtr-uniform {
459
+ margin-top: -0.5em;
460
+ }
461
+
462
+ .row.gtr-25.gtr-uniform > * {
463
+ padding-top: 0.5em;
464
+ }
465
+
466
+ .row.gtr-50 {
467
+ margin-top: 0;
468
+ margin-left: -1em;
469
+ }
470
+
471
+ .row.gtr-50 > * {
472
+ padding: 0 0 0 1em;
473
+ }
474
+
475
+ .row.gtr-50.gtr-uniform {
476
+ margin-top: -1em;
477
+ }
478
+
479
+ .row.gtr-50.gtr-uniform > * {
480
+ padding-top: 1em;
481
+ }
482
+
483
+ .row {
484
+ margin-top: 0;
485
+ margin-left: -2em;
486
+ }
487
+
488
+ .row > * {
489
+ padding: 0 0 0 2em;
490
+ }
491
+
492
+ .row.gtr-uniform {
493
+ margin-top: -2em;
494
+ }
495
+
496
+ .row.gtr-uniform > * {
497
+ padding-top: 2em;
498
+ }
499
+
500
+ .row.gtr-150 {
501
+ margin-top: 0;
502
+ margin-left: -3em;
503
+ }
504
+
505
+ .row.gtr-150 > * {
506
+ padding: 0 0 0 3em;
507
+ }
508
+
509
+ .row.gtr-150.gtr-uniform {
510
+ margin-top: -3em;
511
+ }
512
+
513
+ .row.gtr-150.gtr-uniform > * {
514
+ padding-top: 3em;
515
+ }
516
+
517
+ .row.gtr-200 {
518
+ margin-top: 0;
519
+ margin-left: -4em;
520
+ }
521
+
522
+ .row.gtr-200 > * {
523
+ padding: 0 0 0 4em;
524
+ }
525
+
526
+ .row.gtr-200.gtr-uniform {
527
+ margin-top: -4em;
528
+ }
529
+
530
+ .row.gtr-200.gtr-uniform > * {
531
+ padding-top: 4em;
532
+ }
533
+
534
+ @media screen and (max-width: 1680px) {
535
+
536
+ .row {
537
+ display: flex;
538
+ flex-wrap: wrap;
539
+ box-sizing: border-box;
540
+ align-items: stretch;
541
+ }
542
+
543
+ .row > * {
544
+ box-sizing: border-box;
545
+ }
546
+
547
+ .row.gtr-uniform > * > :last-child {
548
+ margin-bottom: 0;
549
+ }
550
+
551
+ .row.aln-left {
552
+ justify-content: flex-start;
553
+ }
554
+
555
+ .row.aln-center {
556
+ justify-content: center;
557
+ }
558
+
559
+ .row.aln-right {
560
+ justify-content: flex-end;
561
+ }
562
+
563
+ .row.aln-top {
564
+ align-items: flex-start;
565
+ }
566
+
567
+ .row.aln-middle {
568
+ align-items: center;
569
+ }
570
+
571
+ .row.aln-bottom {
572
+ align-items: flex-end;
573
+ }
574
+
575
+ .row > .imp-xlarge {
576
+ order: -1;
577
+ }
578
+
579
+ .row > .col-1-xlarge {
580
+ width: 8.33333%;
581
+ }
582
+
583
+ .row > .off-1-xlarge {
584
+ margin-left: 8.33333%;
585
+ }
586
+
587
+ .row > .col-2-xlarge {
588
+ width: 16.66667%;
589
+ }
590
+
591
+ .row > .off-2-xlarge {
592
+ margin-left: 16.66667%;
593
+ }
594
+
595
+ .row > .col-3-xlarge {
596
+ width: 25%;
597
+ }
598
+
599
+ .row > .off-3-xlarge {
600
+ margin-left: 25%;
601
+ }
602
+
603
+ .row > .col-4-xlarge {
604
+ width: 33.33333%;
605
+ }
606
+
607
+ .row > .off-4-xlarge {
608
+ margin-left: 33.33333%;
609
+ }
610
+
611
+ .row > .col-5-xlarge {
612
+ width: 41.66667%;
613
+ }
614
+
615
+ .row > .off-5-xlarge {
616
+ margin-left: 41.66667%;
617
+ }
618
+
619
+ .row > .col-6-xlarge {
620
+ width: 50%;
621
+ }
622
+
623
+ .row > .off-6-xlarge {
624
+ margin-left: 50%;
625
+ }
626
+
627
+ .row > .col-7-xlarge {
628
+ width: 58.33333%;
629
+ }
630
+
631
+ .row > .off-7-xlarge {
632
+ margin-left: 58.33333%;
633
+ }
634
+
635
+ .row > .col-8-xlarge {
636
+ width: 66.66667%;
637
+ }
638
+
639
+ .row > .off-8-xlarge {
640
+ margin-left: 66.66667%;
641
+ }
642
+
643
+ .row > .col-9-xlarge {
644
+ width: 75%;
645
+ }
646
+
647
+ .row > .off-9-xlarge {
648
+ margin-left: 75%;
649
+ }
650
+
651
+ .row > .col-10-xlarge {
652
+ width: 83.33333%;
653
+ }
654
+
655
+ .row > .off-10-xlarge {
656
+ margin-left: 83.33333%;
657
+ }
658
+
659
+ .row > .col-11-xlarge {
660
+ width: 91.66667%;
661
+ }
662
+
663
+ .row > .off-11-xlarge {
664
+ margin-left: 91.66667%;
665
+ }
666
+
667
+ .row > .col-12-xlarge {
668
+ width: 100%;
669
+ }
670
+
671
+ .row > .off-12-xlarge {
672
+ margin-left: 100%;
673
+ }
674
+
675
+ .row.gtr-0 {
676
+ margin-top: 0;
677
+ margin-left: 0em;
678
+ }
679
+
680
+ .row.gtr-0 > * {
681
+ padding: 0 0 0 0em;
682
+ }
683
+
684
+ .row.gtr-0.gtr-uniform {
685
+ margin-top: 0em;
686
+ }
687
+
688
+ .row.gtr-0.gtr-uniform > * {
689
+ padding-top: 0em;
690
+ }
691
+
692
+ .row.gtr-25 {
693
+ margin-top: 0;
694
+ margin-left: -0.5em;
695
+ }
696
+
697
+ .row.gtr-25 > * {
698
+ padding: 0 0 0 0.5em;
699
+ }
700
+
701
+ .row.gtr-25.gtr-uniform {
702
+ margin-top: -0.5em;
703
+ }
704
+
705
+ .row.gtr-25.gtr-uniform > * {
706
+ padding-top: 0.5em;
707
+ }
708
+
709
+ .row.gtr-50 {
710
+ margin-top: 0;
711
+ margin-left: -1em;
712
+ }
713
+
714
+ .row.gtr-50 > * {
715
+ padding: 0 0 0 1em;
716
+ }
717
+
718
+ .row.gtr-50.gtr-uniform {
719
+ margin-top: -1em;
720
+ }
721
+
722
+ .row.gtr-50.gtr-uniform > * {
723
+ padding-top: 1em;
724
+ }
725
+
726
+ .row {
727
+ margin-top: 0;
728
+ margin-left: -2em;
729
+ }
730
+
731
+ .row > * {
732
+ padding: 0 0 0 2em;
733
+ }
734
+
735
+ .row.gtr-uniform {
736
+ margin-top: -2em;
737
+ }
738
+
739
+ .row.gtr-uniform > * {
740
+ padding-top: 2em;
741
+ }
742
+
743
+ .row.gtr-150 {
744
+ margin-top: 0;
745
+ margin-left: -3em;
746
+ }
747
+
748
+ .row.gtr-150 > * {
749
+ padding: 0 0 0 3em;
750
+ }
751
+
752
+ .row.gtr-150.gtr-uniform {
753
+ margin-top: -3em;
754
+ }
755
+
756
+ .row.gtr-150.gtr-uniform > * {
757
+ padding-top: 3em;
758
+ }
759
+
760
+ .row.gtr-200 {
761
+ margin-top: 0;
762
+ margin-left: -4em;
763
+ }
764
+
765
+ .row.gtr-200 > * {
766
+ padding: 0 0 0 4em;
767
+ }
768
+
769
+ .row.gtr-200.gtr-uniform {
770
+ margin-top: -4em;
771
+ }
772
+
773
+ .row.gtr-200.gtr-uniform > * {
774
+ padding-top: 4em;
775
+ }
776
+
777
+ }
778
+
779
+ @media screen and (max-width: 1140px) {
780
+
781
+ .row {
782
+ display: flex;
783
+ flex-wrap: wrap;
784
+ box-sizing: border-box;
785
+ align-items: stretch;
786
+ }
787
+
788
+ .row > * {
789
+ box-sizing: border-box;
790
+ }
791
+
792
+ .row.gtr-uniform > * > :last-child {
793
+ margin-bottom: 0;
794
+ }
795
+
796
+ .row.aln-left {
797
+ justify-content: flex-start;
798
+ }
799
+
800
+ .row.aln-center {
801
+ justify-content: center;
802
+ }
803
+
804
+ .row.aln-right {
805
+ justify-content: flex-end;
806
+ }
807
+
808
+ .row.aln-top {
809
+ align-items: flex-start;
810
+ }
811
+
812
+ .row.aln-middle {
813
+ align-items: center;
814
+ }
815
+
816
+ .row.aln-bottom {
817
+ align-items: flex-end;
818
+ }
819
+
820
+ .row > .imp-large {
821
+ order: -1;
822
+ }
823
+
824
+ .row > .col-1-large {
825
+ width: 8.33333%;
826
+ }
827
+
828
+ .row > .off-1-large {
829
+ margin-left: 8.33333%;
830
+ }
831
+
832
+ .row > .col-2-large {
833
+ width: 16.66667%;
834
+ }
835
+
836
+ .row > .off-2-large {
837
+ margin-left: 16.66667%;
838
+ }
839
+
840
+ .row > .col-3-large {
841
+ width: 25%;
842
+ }
843
+
844
+ .row > .off-3-large {
845
+ margin-left: 25%;
846
+ }
847
+
848
+ .row > .col-4-large {
849
+ width: 33.33333%;
850
+ }
851
+
852
+ .row > .off-4-large {
853
+ margin-left: 33.33333%;
854
+ }
855
+
856
+ .row > .col-5-large {
857
+ width: 41.66667%;
858
+ }
859
+
860
+ .row > .off-5-large {
861
+ margin-left: 41.66667%;
862
+ }
863
+
864
+ .row > .col-6-large {
865
+ width: 50%;
866
+ }
867
+
868
+ .row > .off-6-large {
869
+ margin-left: 50%;
870
+ }
871
+
872
+ .row > .col-7-large {
873
+ width: 58.33333%;
874
+ }
875
+
876
+ .row > .off-7-large {
877
+ margin-left: 58.33333%;
878
+ }
879
+
880
+ .row > .col-8-large {
881
+ width: 66.66667%;
882
+ }
883
+
884
+ .row > .off-8-large {
885
+ margin-left: 66.66667%;
886
+ }
887
+
888
+ .row > .col-9-large {
889
+ width: 75%;
890
+ }
891
+
892
+ .row > .off-9-large {
893
+ margin-left: 75%;
894
+ }
895
+
896
+ .row > .col-10-large {
897
+ width: 83.33333%;
898
+ }
899
+
900
+ .row > .off-10-large {
901
+ margin-left: 83.33333%;
902
+ }
903
+
904
+ .row > .col-11-large {
905
+ width: 91.66667%;
906
+ }
907
+
908
+ .row > .off-11-large {
909
+ margin-left: 91.66667%;
910
+ }
911
+
912
+ .row > .col-12-large {
913
+ width: 100%;
914
+ }
915
+
916
+ .row > .off-12-large {
917
+ margin-left: 100%;
918
+ }
919
+
920
+ .row.gtr-0 {
921
+ margin-top: 0;
922
+ margin-left: 0em;
923
+ }
924
+
925
+ .row.gtr-0 > * {
926
+ padding: 0 0 0 0em;
927
+ }
928
+
929
+ .row.gtr-0.gtr-uniform {
930
+ margin-top: 0em;
931
+ }
932
+
933
+ .row.gtr-0.gtr-uniform > * {
934
+ padding-top: 0em;
935
+ }
936
+
937
+ .row.gtr-25 {
938
+ margin-top: 0;
939
+ margin-left: -0.5em;
940
+ }
941
+
942
+ .row.gtr-25 > * {
943
+ padding: 0 0 0 0.5em;
944
+ }
945
+
946
+ .row.gtr-25.gtr-uniform {
947
+ margin-top: -0.5em;
948
+ }
949
+
950
+ .row.gtr-25.gtr-uniform > * {
951
+ padding-top: 0.5em;
952
+ }
953
+
954
+ .row.gtr-50 {
955
+ margin-top: 0;
956
+ margin-left: -1em;
957
+ }
958
+
959
+ .row.gtr-50 > * {
960
+ padding: 0 0 0 1em;
961
+ }
962
+
963
+ .row.gtr-50.gtr-uniform {
964
+ margin-top: -1em;
965
+ }
966
+
967
+ .row.gtr-50.gtr-uniform > * {
968
+ padding-top: 1em;
969
+ }
970
+
971
+ .row {
972
+ margin-top: 0;
973
+ margin-left: -2em;
974
+ }
975
+
976
+ .row > * {
977
+ padding: 0 0 0 2em;
978
+ }
979
+
980
+ .row.gtr-uniform {
981
+ margin-top: -2em;
982
+ }
983
+
984
+ .row.gtr-uniform > * {
985
+ padding-top: 2em;
986
+ }
987
+
988
+ .row.gtr-150 {
989
+ margin-top: 0;
990
+ margin-left: -3em;
991
+ }
992
+
993
+ .row.gtr-150 > * {
994
+ padding: 0 0 0 3em;
995
+ }
996
+
997
+ .row.gtr-150.gtr-uniform {
998
+ margin-top: -3em;
999
+ }
1000
+
1001
+ .row.gtr-150.gtr-uniform > * {
1002
+ padding-top: 3em;
1003
+ }
1004
+
1005
+ .row.gtr-200 {
1006
+ margin-top: 0;
1007
+ margin-left: -4em;
1008
+ }
1009
+
1010
+ .row.gtr-200 > * {
1011
+ padding: 0 0 0 4em;
1012
+ }
1013
+
1014
+ .row.gtr-200.gtr-uniform {
1015
+ margin-top: -4em;
1016
+ }
1017
+
1018
+ .row.gtr-200.gtr-uniform > * {
1019
+ padding-top: 4em;
1020
+ }
1021
+
1022
+ }
1023
+
1024
+ @media screen and (max-width: 980px) {
1025
+
1026
+ .row {
1027
+ display: flex;
1028
+ flex-wrap: wrap;
1029
+ box-sizing: border-box;
1030
+ align-items: stretch;
1031
+ }
1032
+
1033
+ .row > * {
1034
+ box-sizing: border-box;
1035
+ }
1036
+
1037
+ .row.gtr-uniform > * > :last-child {
1038
+ margin-bottom: 0;
1039
+ }
1040
+
1041
+ .row.aln-left {
1042
+ justify-content: flex-start;
1043
+ }
1044
+
1045
+ .row.aln-center {
1046
+ justify-content: center;
1047
+ }
1048
+
1049
+ .row.aln-right {
1050
+ justify-content: flex-end;
1051
+ }
1052
+
1053
+ .row.aln-top {
1054
+ align-items: flex-start;
1055
+ }
1056
+
1057
+ .row.aln-middle {
1058
+ align-items: center;
1059
+ }
1060
+
1061
+ .row.aln-bottom {
1062
+ align-items: flex-end;
1063
+ }
1064
+
1065
+ .row > .imp-medium {
1066
+ order: -1;
1067
+ }
1068
+
1069
+ .row > .col-1-medium {
1070
+ width: 8.33333%;
1071
+ }
1072
+
1073
+ .row > .off-1-medium {
1074
+ margin-left: 8.33333%;
1075
+ }
1076
+
1077
+ .row > .col-2-medium {
1078
+ width: 16.66667%;
1079
+ }
1080
+
1081
+ .row > .off-2-medium {
1082
+ margin-left: 16.66667%;
1083
+ }
1084
+
1085
+ .row > .col-3-medium {
1086
+ width: 25%;
1087
+ }
1088
+
1089
+ .row > .off-3-medium {
1090
+ margin-left: 25%;
1091
+ }
1092
+
1093
+ .row > .col-4-medium {
1094
+ width: 33.33333%;
1095
+ }
1096
+
1097
+ .row > .off-4-medium {
1098
+ margin-left: 33.33333%;
1099
+ }
1100
+
1101
+ .row > .col-5-medium {
1102
+ width: 41.66667%;
1103
+ }
1104
+
1105
+ .row > .off-5-medium {
1106
+ margin-left: 41.66667%;
1107
+ }
1108
+
1109
+ .row > .col-6-medium {
1110
+ width: 50%;
1111
+ }
1112
+
1113
+ .row > .off-6-medium {
1114
+ margin-left: 50%;
1115
+ }
1116
+
1117
+ .row > .col-7-medium {
1118
+ width: 58.33333%;
1119
+ }
1120
+
1121
+ .row > .off-7-medium {
1122
+ margin-left: 58.33333%;
1123
+ }
1124
+
1125
+ .row > .col-8-medium {
1126
+ width: 66.66667%;
1127
+ }
1128
+
1129
+ .row > .off-8-medium {
1130
+ margin-left: 66.66667%;
1131
+ }
1132
+
1133
+ .row > .col-9-medium {
1134
+ width: 75%;
1135
+ }
1136
+
1137
+ .row > .off-9-medium {
1138
+ margin-left: 75%;
1139
+ }
1140
+
1141
+ .row > .col-10-medium {
1142
+ width: 83.33333%;
1143
+ }
1144
+
1145
+ .row > .off-10-medium {
1146
+ margin-left: 83.33333%;
1147
+ }
1148
+
1149
+ .row > .col-11-medium {
1150
+ width: 91.66667%;
1151
+ }
1152
+
1153
+ .row > .off-11-medium {
1154
+ margin-left: 91.66667%;
1155
+ }
1156
+
1157
+ .row > .col-12-medium {
1158
+ width: 100%;
1159
+ }
1160
+
1161
+ .row > .off-12-medium {
1162
+ margin-left: 100%;
1163
+ }
1164
+
1165
+ .row.gtr-0 {
1166
+ margin-top: 0;
1167
+ margin-left: 0em;
1168
+ }
1169
+
1170
+ .row.gtr-0 > * {
1171
+ padding: 0 0 0 0em;
1172
+ }
1173
+
1174
+ .row.gtr-0.gtr-uniform {
1175
+ margin-top: 0em;
1176
+ }
1177
+
1178
+ .row.gtr-0.gtr-uniform > * {
1179
+ padding-top: 0em;
1180
+ }
1181
+
1182
+ .row.gtr-25 {
1183
+ margin-top: 0;
1184
+ margin-left: -0.5em;
1185
+ }
1186
+
1187
+ .row.gtr-25 > * {
1188
+ padding: 0 0 0 0.5em;
1189
+ }
1190
+
1191
+ .row.gtr-25.gtr-uniform {
1192
+ margin-top: -0.5em;
1193
+ }
1194
+
1195
+ .row.gtr-25.gtr-uniform > * {
1196
+ padding-top: 0.5em;
1197
+ }
1198
+
1199
+ .row.gtr-50 {
1200
+ margin-top: 0;
1201
+ margin-left: -1em;
1202
+ }
1203
+
1204
+ .row.gtr-50 > * {
1205
+ padding: 0 0 0 1em;
1206
+ }
1207
+
1208
+ .row.gtr-50.gtr-uniform {
1209
+ margin-top: -1em;
1210
+ }
1211
+
1212
+ .row.gtr-50.gtr-uniform > * {
1213
+ padding-top: 1em;
1214
+ }
1215
+
1216
+ .row {
1217
+ margin-top: 0;
1218
+ margin-left: -2em;
1219
+ }
1220
+
1221
+ .row > * {
1222
+ padding: 0 0 0 2em;
1223
+ }
1224
+
1225
+ .row.gtr-uniform {
1226
+ margin-top: -2em;
1227
+ }
1228
+
1229
+ .row.gtr-uniform > * {
1230
+ padding-top: 2em;
1231
+ }
1232
+
1233
+ .row.gtr-150 {
1234
+ margin-top: 0;
1235
+ margin-left: -3em;
1236
+ }
1237
+
1238
+ .row.gtr-150 > * {
1239
+ padding: 0 0 0 3em;
1240
+ }
1241
+
1242
+ .row.gtr-150.gtr-uniform {
1243
+ margin-top: -3em;
1244
+ }
1245
+
1246
+ .row.gtr-150.gtr-uniform > * {
1247
+ padding-top: 3em;
1248
+ }
1249
+
1250
+ .row.gtr-200 {
1251
+ margin-top: 0;
1252
+ margin-left: -4em;
1253
+ }
1254
+
1255
+ .row.gtr-200 > * {
1256
+ padding: 0 0 0 4em;
1257
+ }
1258
+
1259
+ .row.gtr-200.gtr-uniform {
1260
+ margin-top: -4em;
1261
+ }
1262
+
1263
+ .row.gtr-200.gtr-uniform > * {
1264
+ padding-top: 4em;
1265
+ }
1266
+
1267
+ }
1268
+
1269
+ @media screen and (max-width: 736px) {
1270
+
1271
+ .row {
1272
+ display: flex;
1273
+ flex-wrap: wrap;
1274
+ box-sizing: border-box;
1275
+ align-items: stretch;
1276
+ }
1277
+
1278
+ .row > * {
1279
+ box-sizing: border-box;
1280
+ }
1281
+
1282
+ .row.gtr-uniform > * > :last-child {
1283
+ margin-bottom: 0;
1284
+ }
1285
+
1286
+ .row.aln-left {
1287
+ justify-content: flex-start;
1288
+ }
1289
+
1290
+ .row.aln-center {
1291
+ justify-content: center;
1292
+ }
1293
+
1294
+ .row.aln-right {
1295
+ justify-content: flex-end;
1296
+ }
1297
+
1298
+ .row.aln-top {
1299
+ align-items: flex-start;
1300
+ }
1301
+
1302
+ .row.aln-middle {
1303
+ align-items: center;
1304
+ }
1305
+
1306
+ .row.aln-bottom {
1307
+ align-items: flex-end;
1308
+ }
1309
+
1310
+ .row > .imp-small {
1311
+ order: -1;
1312
+ }
1313
+
1314
+ .row > .col-1-small {
1315
+ width: 8.33333%;
1316
+ }
1317
+
1318
+ .row > .off-1-small {
1319
+ margin-left: 8.33333%;
1320
+ }
1321
+
1322
+ .row > .col-2-small {
1323
+ width: 16.66667%;
1324
+ }
1325
+
1326
+ .row > .off-2-small {
1327
+ margin-left: 16.66667%;
1328
+ }
1329
+
1330
+ .row > .col-3-small {
1331
+ width: 25%;
1332
+ }
1333
+
1334
+ .row > .off-3-small {
1335
+ margin-left: 25%;
1336
+ }
1337
+
1338
+ .row > .col-4-small {
1339
+ width: 33.33333%;
1340
+ }
1341
+
1342
+ .row > .off-4-small {
1343
+ margin-left: 33.33333%;
1344
+ }
1345
+
1346
+ .row > .col-5-small {
1347
+ width: 41.66667%;
1348
+ }
1349
+
1350
+ .row > .off-5-small {
1351
+ margin-left: 41.66667%;
1352
+ }
1353
+
1354
+ .row > .col-6-small {
1355
+ width: 50%;
1356
+ }
1357
+
1358
+ .row > .off-6-small {
1359
+ margin-left: 50%;
1360
+ }
1361
+
1362
+ .row > .col-7-small {
1363
+ width: 58.33333%;
1364
+ }
1365
+
1366
+ .row > .off-7-small {
1367
+ margin-left: 58.33333%;
1368
+ }
1369
+
1370
+ .row > .col-8-small {
1371
+ width: 66.66667%;
1372
+ }
1373
+
1374
+ .row > .off-8-small {
1375
+ margin-left: 66.66667%;
1376
+ }
1377
+
1378
+ .row > .col-9-small {
1379
+ width: 75%;
1380
+ }
1381
+
1382
+ .row > .off-9-small {
1383
+ margin-left: 75%;
1384
+ }
1385
+
1386
+ .row > .col-10-small {
1387
+ width: 83.33333%;
1388
+ }
1389
+
1390
+ .row > .off-10-small {
1391
+ margin-left: 83.33333%;
1392
+ }
1393
+
1394
+ .row > .col-11-small {
1395
+ width: 91.66667%;
1396
+ }
1397
+
1398
+ .row > .off-11-small {
1399
+ margin-left: 91.66667%;
1400
+ }
1401
+
1402
+ .row > .col-12-small {
1403
+ width: 100%;
1404
+ }
1405
+
1406
+ .row > .off-12-small {
1407
+ margin-left: 100%;
1408
+ }
1409
+
1410
+ .row.gtr-0 {
1411
+ margin-top: 0;
1412
+ margin-left: 0em;
1413
+ }
1414
+
1415
+ .row.gtr-0 > * {
1416
+ padding: 0 0 0 0em;
1417
+ }
1418
+
1419
+ .row.gtr-0.gtr-uniform {
1420
+ margin-top: 0em;
1421
+ }
1422
+
1423
+ .row.gtr-0.gtr-uniform > * {
1424
+ padding-top: 0em;
1425
+ }
1426
+
1427
+ .row.gtr-25 {
1428
+ margin-top: 0;
1429
+ margin-left: -0.5em;
1430
+ }
1431
+
1432
+ .row.gtr-25 > * {
1433
+ padding: 0 0 0 0.5em;
1434
+ }
1435
+
1436
+ .row.gtr-25.gtr-uniform {
1437
+ margin-top: -0.5em;
1438
+ }
1439
+
1440
+ .row.gtr-25.gtr-uniform > * {
1441
+ padding-top: 0.5em;
1442
+ }
1443
+
1444
+ .row.gtr-50 {
1445
+ margin-top: 0;
1446
+ margin-left: -1em;
1447
+ }
1448
+
1449
+ .row.gtr-50 > * {
1450
+ padding: 0 0 0 1em;
1451
+ }
1452
+
1453
+ .row.gtr-50.gtr-uniform {
1454
+ margin-top: -1em;
1455
+ }
1456
+
1457
+ .row.gtr-50.gtr-uniform > * {
1458
+ padding-top: 1em;
1459
+ }
1460
+
1461
+ .row {
1462
+ margin-top: 0;
1463
+ margin-left: -2em;
1464
+ }
1465
+
1466
+ .row > * {
1467
+ padding: 0 0 0 2em;
1468
+ }
1469
+
1470
+ .row.gtr-uniform {
1471
+ margin-top: -2em;
1472
+ }
1473
+
1474
+ .row.gtr-uniform > * {
1475
+ padding-top: 2em;
1476
+ }
1477
+
1478
+ .row.gtr-150 {
1479
+ margin-top: 0;
1480
+ margin-left: -3em;
1481
+ }
1482
+
1483
+ .row.gtr-150 > * {
1484
+ padding: 0 0 0 3em;
1485
+ }
1486
+
1487
+ .row.gtr-150.gtr-uniform {
1488
+ margin-top: -3em;
1489
+ }
1490
+
1491
+ .row.gtr-150.gtr-uniform > * {
1492
+ padding-top: 3em;
1493
+ }
1494
+
1495
+ .row.gtr-200 {
1496
+ margin-top: 0;
1497
+ margin-left: -4em;
1498
+ }
1499
+
1500
+ .row.gtr-200 > * {
1501
+ padding: 0 0 0 4em;
1502
+ }
1503
+
1504
+ .row.gtr-200.gtr-uniform {
1505
+ margin-top: -4em;
1506
+ }
1507
+
1508
+ .row.gtr-200.gtr-uniform > * {
1509
+ padding-top: 4em;
1510
+ }
1511
+
1512
+ }
1513
+
1514
+ @media screen and (max-width: 480px) {
1515
+
1516
+ .row {
1517
+ display: flex;
1518
+ flex-wrap: wrap;
1519
+ box-sizing: border-box;
1520
+ align-items: stretch;
1521
+ }
1522
+
1523
+ .row > * {
1524
+ box-sizing: border-box;
1525
+ }
1526
+
1527
+ .row.gtr-uniform > * > :last-child {
1528
+ margin-bottom: 0;
1529
+ }
1530
+
1531
+ .row.aln-left {
1532
+ justify-content: flex-start;
1533
+ }
1534
+
1535
+ .row.aln-center {
1536
+ justify-content: center;
1537
+ }
1538
+
1539
+ .row.aln-right {
1540
+ justify-content: flex-end;
1541
+ }
1542
+
1543
+ .row.aln-top {
1544
+ align-items: flex-start;
1545
+ }
1546
+
1547
+ .row.aln-middle {
1548
+ align-items: center;
1549
+ }
1550
+
1551
+ .row.aln-bottom {
1552
+ align-items: flex-end;
1553
+ }
1554
+
1555
+ .row > .imp-xsmall {
1556
+ order: -1;
1557
+ }
1558
+
1559
+ .row > .col-1-xsmall {
1560
+ width: 8.33333%;
1561
+ }
1562
+
1563
+ .row > .off-1-xsmall {
1564
+ margin-left: 8.33333%;
1565
+ }
1566
+
1567
+ .row > .col-2-xsmall {
1568
+ width: 16.66667%;
1569
+ }
1570
+
1571
+ .row > .off-2-xsmall {
1572
+ margin-left: 16.66667%;
1573
+ }
1574
+
1575
+ .row > .col-3-xsmall {
1576
+ width: 25%;
1577
+ }
1578
+
1579
+ .row > .off-3-xsmall {
1580
+ margin-left: 25%;
1581
+ }
1582
+
1583
+ .row > .col-4-xsmall {
1584
+ width: 33.33333%;
1585
+ }
1586
+
1587
+ .row > .off-4-xsmall {
1588
+ margin-left: 33.33333%;
1589
+ }
1590
+
1591
+ .row > .col-5-xsmall {
1592
+ width: 41.66667%;
1593
+ }
1594
+
1595
+ .row > .off-5-xsmall {
1596
+ margin-left: 41.66667%;
1597
+ }
1598
+
1599
+ .row > .col-6-xsmall {
1600
+ width: 50%;
1601
+ }
1602
+
1603
+ .row > .off-6-xsmall {
1604
+ margin-left: 50%;
1605
+ }
1606
+
1607
+ .row > .col-7-xsmall {
1608
+ width: 58.33333%;
1609
+ }
1610
+
1611
+ .row > .off-7-xsmall {
1612
+ margin-left: 58.33333%;
1613
+ }
1614
+
1615
+ .row > .col-8-xsmall {
1616
+ width: 66.66667%;
1617
+ }
1618
+
1619
+ .row > .off-8-xsmall {
1620
+ margin-left: 66.66667%;
1621
+ }
1622
+
1623
+ .row > .col-9-xsmall {
1624
+ width: 75%;
1625
+ }
1626
+
1627
+ .row > .off-9-xsmall {
1628
+ margin-left: 75%;
1629
+ }
1630
+
1631
+ .row > .col-10-xsmall {
1632
+ width: 83.33333%;
1633
+ }
1634
+
1635
+ .row > .off-10-xsmall {
1636
+ margin-left: 83.33333%;
1637
+ }
1638
+
1639
+ .row > .col-11-xsmall {
1640
+ width: 91.66667%;
1641
+ }
1642
+
1643
+ .row > .off-11-xsmall {
1644
+ margin-left: 91.66667%;
1645
+ }
1646
+
1647
+ .row > .col-12-xsmall {
1648
+ width: 100%;
1649
+ }
1650
+
1651
+ .row > .off-12-xsmall {
1652
+ margin-left: 100%;
1653
+ }
1654
+
1655
+ .row.gtr-0 {
1656
+ margin-top: 0;
1657
+ margin-left: 0em;
1658
+ }
1659
+
1660
+ .row.gtr-0 > * {
1661
+ padding: 0 0 0 0em;
1662
+ }
1663
+
1664
+ .row.gtr-0.gtr-uniform {
1665
+ margin-top: 0em;
1666
+ }
1667
+
1668
+ .row.gtr-0.gtr-uniform > * {
1669
+ padding-top: 0em;
1670
+ }
1671
+
1672
+ .row.gtr-25 {
1673
+ margin-top: 0;
1674
+ margin-left: -0.5em;
1675
+ }
1676
+
1677
+ .row.gtr-25 > * {
1678
+ padding: 0 0 0 0.5em;
1679
+ }
1680
+
1681
+ .row.gtr-25.gtr-uniform {
1682
+ margin-top: -0.5em;
1683
+ }
1684
+
1685
+ .row.gtr-25.gtr-uniform > * {
1686
+ padding-top: 0.5em;
1687
+ }
1688
+
1689
+ .row.gtr-50 {
1690
+ margin-top: 0;
1691
+ margin-left: -1em;
1692
+ }
1693
+
1694
+ .row.gtr-50 > * {
1695
+ padding: 0 0 0 1em;
1696
+ }
1697
+
1698
+ .row.gtr-50.gtr-uniform {
1699
+ margin-top: -1em;
1700
+ }
1701
+
1702
+ .row.gtr-50.gtr-uniform > * {
1703
+ padding-top: 1em;
1704
+ }
1705
+
1706
+ .row {
1707
+ margin-top: 0;
1708
+ margin-left: -2em;
1709
+ }
1710
+
1711
+ .row > * {
1712
+ padding: 0 0 0 2em;
1713
+ }
1714
+
1715
+ .row.gtr-uniform {
1716
+ margin-top: -2em;
1717
+ }
1718
+
1719
+ .row.gtr-uniform > * {
1720
+ padding-top: 2em;
1721
+ }
1722
+
1723
+ .row.gtr-150 {
1724
+ margin-top: 0;
1725
+ margin-left: -3em;
1726
+ }
1727
+
1728
+ .row.gtr-150 > * {
1729
+ padding: 0 0 0 3em;
1730
+ }
1731
+
1732
+ .row.gtr-150.gtr-uniform {
1733
+ margin-top: -3em;
1734
+ }
1735
+
1736
+ .row.gtr-150.gtr-uniform > * {
1737
+ padding-top: 3em;
1738
+ }
1739
+
1740
+ .row.gtr-200 {
1741
+ margin-top: 0;
1742
+ margin-left: -4em;
1743
+ }
1744
+
1745
+ .row.gtr-200 > * {
1746
+ padding: 0 0 0 4em;
1747
+ }
1748
+
1749
+ .row.gtr-200.gtr-uniform {
1750
+ margin-top: -4em;
1751
+ }
1752
+
1753
+ .row.gtr-200.gtr-uniform > * {
1754
+ padding-top: 4em;
1755
+ }
1756
+
1757
+ }
1758
+
1759
+ @media screen and (max-width: 320px) {
1760
+
1761
+ .row {
1762
+ display: flex;
1763
+ flex-wrap: wrap;
1764
+ box-sizing: border-box;
1765
+ align-items: stretch;
1766
+ }
1767
+
1768
+ .row > * {
1769
+ box-sizing: border-box;
1770
+ }
1771
+
1772
+ .row.gtr-uniform > * > :last-child {
1773
+ margin-bottom: 0;
1774
+ }
1775
+
1776
+ .row.aln-left {
1777
+ justify-content: flex-start;
1778
+ }
1779
+
1780
+ .row.aln-center {
1781
+ justify-content: center;
1782
+ }
1783
+
1784
+ .row.aln-right {
1785
+ justify-content: flex-end;
1786
+ }
1787
+
1788
+ .row.aln-top {
1789
+ align-items: flex-start;
1790
+ }
1791
+
1792
+ .row.aln-middle {
1793
+ align-items: center;
1794
+ }
1795
+
1796
+ .row.aln-bottom {
1797
+ align-items: flex-end;
1798
+ }
1799
+
1800
+ .row > .imp-xxsmall {
1801
+ order: -1;
1802
+ }
1803
+
1804
+ .row > .col-1-xxsmall {
1805
+ width: 8.33333%;
1806
+ }
1807
+
1808
+ .row > .off-1-xxsmall {
1809
+ margin-left: 8.33333%;
1810
+ }
1811
+
1812
+ .row > .col-2-xxsmall {
1813
+ width: 16.66667%;
1814
+ }
1815
+
1816
+ .row > .off-2-xxsmall {
1817
+ margin-left: 16.66667%;
1818
+ }
1819
+
1820
+ .row > .col-3-xxsmall {
1821
+ width: 25%;
1822
+ }
1823
+
1824
+ .row > .off-3-xxsmall {
1825
+ margin-left: 25%;
1826
+ }
1827
+
1828
+ .row > .col-4-xxsmall {
1829
+ width: 33.33333%;
1830
+ }
1831
+
1832
+ .row > .off-4-xxsmall {
1833
+ margin-left: 33.33333%;
1834
+ }
1835
+
1836
+ .row > .col-5-xxsmall {
1837
+ width: 41.66667%;
1838
+ }
1839
+
1840
+ .row > .off-5-xxsmall {
1841
+ margin-left: 41.66667%;
1842
+ }
1843
+
1844
+ .row > .col-6-xxsmall {
1845
+ width: 50%;
1846
+ }
1847
+
1848
+ .row > .off-6-xxsmall {
1849
+ margin-left: 50%;
1850
+ }
1851
+
1852
+ .row > .col-7-xxsmall {
1853
+ width: 58.33333%;
1854
+ }
1855
+
1856
+ .row > .off-7-xxsmall {
1857
+ margin-left: 58.33333%;
1858
+ }
1859
+
1860
+ .row > .col-8-xxsmall {
1861
+ width: 66.66667%;
1862
+ }
1863
+
1864
+ .row > .off-8-xxsmall {
1865
+ margin-left: 66.66667%;
1866
+ }
1867
+
1868
+ .row > .col-9-xxsmall {
1869
+ width: 75%;
1870
+ }
1871
+
1872
+ .row > .off-9-xxsmall {
1873
+ margin-left: 75%;
1874
+ }
1875
+
1876
+ .row > .col-10-xxsmall {
1877
+ width: 83.33333%;
1878
+ }
1879
+
1880
+ .row > .off-10-xxsmall {
1881
+ margin-left: 83.33333%;
1882
+ }
1883
+
1884
+ .row > .col-11-xxsmall {
1885
+ width: 91.66667%;
1886
+ }
1887
+
1888
+ .row > .off-11-xxsmall {
1889
+ margin-left: 91.66667%;
1890
+ }
1891
+
1892
+ .row > .col-12-xxsmall {
1893
+ width: 100%;
1894
+ }
1895
+
1896
+ .row > .off-12-xxsmall {
1897
+ margin-left: 100%;
1898
+ }
1899
+
1900
+ .row.gtr-0 {
1901
+ margin-top: 0;
1902
+ margin-left: 0em;
1903
+ }
1904
+
1905
+ .row.gtr-0 > * {
1906
+ padding: 0 0 0 0em;
1907
+ }
1908
+
1909
+ .row.gtr-0.gtr-uniform {
1910
+ margin-top: 0em;
1911
+ }
1912
+
1913
+ .row.gtr-0.gtr-uniform > * {
1914
+ padding-top: 0em;
1915
+ }
1916
+
1917
+ .row.gtr-25 {
1918
+ margin-top: 0;
1919
+ margin-left: -0.5em;
1920
+ }
1921
+
1922
+ .row.gtr-25 > * {
1923
+ padding: 0 0 0 0.5em;
1924
+ }
1925
+
1926
+ .row.gtr-25.gtr-uniform {
1927
+ margin-top: -0.5em;
1928
+ }
1929
+
1930
+ .row.gtr-25.gtr-uniform > * {
1931
+ padding-top: 0.5em;
1932
+ }
1933
+
1934
+ .row.gtr-50 {
1935
+ margin-top: 0;
1936
+ margin-left: -1em;
1937
+ }
1938
+
1939
+ .row.gtr-50 > * {
1940
+ padding: 0 0 0 1em;
1941
+ }
1942
+
1943
+ .row.gtr-50.gtr-uniform {
1944
+ margin-top: -1em;
1945
+ }
1946
+
1947
+ .row.gtr-50.gtr-uniform > * {
1948
+ padding-top: 1em;
1949
+ }
1950
+
1951
+ .row {
1952
+ margin-top: 0;
1953
+ margin-left: -2em;
1954
+ }
1955
+
1956
+ .row > * {
1957
+ padding: 0 0 0 2em;
1958
+ }
1959
+
1960
+ .row.gtr-uniform {
1961
+ margin-top: -2em;
1962
+ }
1963
+
1964
+ .row.gtr-uniform > * {
1965
+ padding-top: 2em;
1966
+ }
1967
+
1968
+ .row.gtr-150 {
1969
+ margin-top: 0;
1970
+ margin-left: -3em;
1971
+ }
1972
+
1973
+ .row.gtr-150 > * {
1974
+ padding: 0 0 0 3em;
1975
+ }
1976
+
1977
+ .row.gtr-150.gtr-uniform {
1978
+ margin-top: -3em;
1979
+ }
1980
+
1981
+ .row.gtr-150.gtr-uniform > * {
1982
+ padding-top: 3em;
1983
+ }
1984
+
1985
+ .row.gtr-200 {
1986
+ margin-top: 0;
1987
+ margin-left: -4em;
1988
+ }
1989
+
1990
+ .row.gtr-200 > * {
1991
+ padding: 0 0 0 4em;
1992
+ }
1993
+
1994
+ .row.gtr-200.gtr-uniform {
1995
+ margin-top: -4em;
1996
+ }
1997
+
1998
+ .row.gtr-200.gtr-uniform > * {
1999
+ padding-top: 4em;
2000
+ }
2001
+
2002
+ }
2003
+
2004
+ /* Section/Article */
2005
+
2006
+ section.special, article.special {
2007
+ text-align: center;
2008
+ }
2009
+
2010
+ header p {
2011
+ color: #999;
2012
+ margin: 0 0 1.5em 0;
2013
+ position: relative;
2014
+ }
2015
+
2016
+ header h2 + p {
2017
+ font-size: 1.25em;
2018
+ line-height: 1.5em;
2019
+ margin-top: -1em;
2020
+ }
2021
+
2022
+ header h3 + p {
2023
+ font-size: 1.1em;
2024
+ line-height: 1.5em;
2025
+ margin-top: -0.8em;
2026
+ }
2027
+
2028
+ header h4 + p,
2029
+ header h5 + p,
2030
+ header h6 + p {
2031
+ font-size: 0.9em;
2032
+ line-height: 1.5em;
2033
+ margin-top: -0.6em;
2034
+ }
2035
+
2036
+ header.major {
2037
+ margin: 0 0 1em 0;
2038
+ }
2039
+
2040
+ header.major:after {
2041
+ background: rgba(144, 144, 144, 0.5);
2042
+ content: '';
2043
+ display: inline-block;
2044
+ height: 1px;
2045
+ margin-top: 1.5em;
2046
+ width: 6em;
2047
+ }
2048
+
2049
+ header.major h2, header.major h3, header.major h4, header.major h5, header.major h6 {
2050
+ margin: 0;
2051
+ }
2052
+
2053
+ header.major p {
2054
+ margin: 0.7em 0 0 0;
2055
+ }
2056
+
2057
+ header.special {
2058
+ text-align: center;
2059
+ }
2060
+
2061
+ /* Form */
2062
+
2063
+ form {
2064
+ margin: 0 0 2em 0;
2065
+ }
2066
+
2067
+ label {
2068
+ color: #555;
2069
+ display: block;
2070
+ font-size: 0.9em;
2071
+ font-weight: 400;
2072
+ margin: 0 0 1em 0;
2073
+ }
2074
+
2075
+ input[type="text"],
2076
+ input[type="password"],
2077
+ input[type="email"],
2078
+ select,
2079
+ textarea {
2080
+ -moz-appearance: none;
2081
+ -webkit-appearance: none;
2082
+ -ms-appearance: none;
2083
+ appearance: none;
2084
+ background: rgba(144, 144, 144, 0.075);
2085
+ border-radius: 4px;
2086
+ border: none;
2087
+ border: solid 1px rgba(144, 144, 144, 0.5);
2088
+ color: inherit;
2089
+ display: block;
2090
+ outline: 0;
2091
+ padding: 0 1em;
2092
+ text-decoration: none;
2093
+ width: 100%;
2094
+ }
2095
+
2096
+ input[type="text"]:invalid,
2097
+ input[type="password"]:invalid,
2098
+ input[type="email"]:invalid,
2099
+ select:invalid,
2100
+ textarea:invalid {
2101
+ box-shadow: none;
2102
+ }
2103
+
2104
+ input[type="text"]:focus,
2105
+ input[type="password"]:focus,
2106
+ input[type="email"]:focus,
2107
+ select:focus,
2108
+ textarea:focus {
2109
+ border-color: #6bd4c8;
2110
+ }
2111
+
2112
+ select {
2113
+ background-image: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='40' height='40' preserveAspectRatio='none' viewBox='0 0 40 40'%3E%3Cpath d='M9.4,12.3l10.4,10.4l10.4-10.4c0.2-0.2,0.5-0.4,0.9-0.4c0.3,0,0.6,0.1,0.9,0.4l3.3,3.3c0.2,0.2,0.4,0.5,0.4,0.9 c0,0.4-0.1,0.6-0.4,0.9L20.7,31.9c-0.2,0.2-0.5,0.4-0.9,0.4c-0.3,0-0.6-0.1-0.9-0.4L4.3,17.3c-0.2-0.2-0.4-0.5-0.4-0.9 c0-0.4,0.1-0.6,0.4-0.9l3.3-3.3c0.2-0.2,0.5-0.4,0.9-0.4S9.1,12.1,9.4,12.3z' fill='rgba(144, 144, 144, 0.5)' /%3E%3C/svg%3E");
2114
+ background-size: 1.25rem;
2115
+ background-repeat: no-repeat;
2116
+ background-position: calc(100% - 1rem) center;
2117
+ height: 2.75em;
2118
+ padding-right: 2.75em;
2119
+ text-overflow: ellipsis;
2120
+ }
2121
+
2122
+ select option {
2123
+ color: #555;
2124
+ background: #fff;
2125
+ }
2126
+
2127
+ select:focus::-ms-value {
2128
+ background-color: transparent;
2129
+ }
2130
+
2131
+ select::-ms-expand {
2132
+ display: none;
2133
+ }
2134
+
2135
+ input[type="text"],
2136
+ input[type="password"],
2137
+ input[type="email"],
2138
+ select {
2139
+ height: 2.75em;
2140
+ }
2141
+
2142
+ textarea {
2143
+ padding: 0.75em 1em;
2144
+ }
2145
+
2146
+ input[type="checkbox"],
2147
+ input[type="radio"] {
2148
+ -moz-appearance: none;
2149
+ -webkit-appearance: none;
2150
+ -ms-appearance: none;
2151
+ appearance: none;
2152
+ display: block;
2153
+ float: left;
2154
+ margin-right: -2em;
2155
+ opacity: 0;
2156
+ width: 1em;
2157
+ z-index: -1;
2158
+ }
2159
+
2160
+ input[type="checkbox"] + label,
2161
+ input[type="radio"] + label {
2162
+ text-decoration: none;
2163
+ color: #666;
2164
+ cursor: pointer;
2165
+ display: inline-block;
2166
+ font-size: 1em;
2167
+ font-weight: 300;
2168
+ padding-left: 2.4em;
2169
+ padding-right: 0.75em;
2170
+ position: relative;
2171
+ }
2172
+
2173
+ input[type="checkbox"] + label:before,
2174
+ input[type="radio"] + label:before {
2175
+ -moz-osx-font-smoothing: grayscale;
2176
+ -webkit-font-smoothing: antialiased;
2177
+ display: inline-block;
2178
+ font-style: normal;
2179
+ font-variant: normal;
2180
+ text-rendering: auto;
2181
+ line-height: 1;
2182
+ text-transform: none !important;
2183
+ font-family: 'Font Awesome 5 Free';
2184
+ font-weight: 900;
2185
+ }
2186
+
2187
+ input[type="checkbox"] + label:before,
2188
+ input[type="radio"] + label:before {
2189
+ background: rgba(144, 144, 144, 0.075);
2190
+ border-radius: 4px;
2191
+ border: solid 1px rgba(144, 144, 144, 0.5);
2192
+ content: '';
2193
+ display: inline-block;
2194
+ font-size: 0.8em;
2195
+ height: 2.0625em;
2196
+ left: 0;
2197
+ line-height: 2.0625em;
2198
+ position: absolute;
2199
+ text-align: center;
2200
+ top: 0;
2201
+ width: 2.0625em;
2202
+ }
2203
+
2204
+ input[type="checkbox"]:checked + label:before,
2205
+ input[type="radio"]:checked + label:before {
2206
+ background: #666666;
2207
+ border-color: #666666;
2208
+ color: #ffffff;
2209
+ content: '\f00c';
2210
+ }
2211
+
2212
+ input[type="checkbox"]:focus + label:before,
2213
+ input[type="radio"]:focus + label:before {
2214
+ border-color: #6bd4c8;
2215
+ }
2216
+
2217
+ input[type="checkbox"] + label:before {
2218
+ border-radius: 4px;
2219
+ }
2220
+
2221
+ input[type="radio"] + label:before {
2222
+ border-radius: 100%;
2223
+ }
2224
+
2225
+ ::-webkit-input-placeholder {
2226
+ color: #999 !important;
2227
+ opacity: 1.0;
2228
+ }
2229
+
2230
+ :-moz-placeholder {
2231
+ color: #999 !important;
2232
+ opacity: 1.0;
2233
+ }
2234
+
2235
+ ::-moz-placeholder {
2236
+ color: #999 !important;
2237
+ opacity: 1.0;
2238
+ }
2239
+
2240
+ :-ms-input-placeholder {
2241
+ color: #999 !important;
2242
+ opacity: 1.0;
2243
+ }
2244
+
2245
+ /* Box */
2246
+
2247
+ .box {
2248
+ border-radius: 4px;
2249
+ border: solid 1px rgba(144, 144, 144, 0.5);
2250
+ margin-bottom: 2em;
2251
+ padding: 1.5em;
2252
+ }
2253
+
2254
+ .box > :last-child,
2255
+ .box > :last-child > :last-child,
2256
+ .box > :last-child > :last-child > :last-child {
2257
+ margin-bottom: 0;
2258
+ }
2259
+
2260
+ .box.alt {
2261
+ border: 0;
2262
+ border-radius: 0;
2263
+ padding: 0;
2264
+ }
2265
+
2266
+ /* Icon */
2267
+
2268
+ .icon {
2269
+ text-decoration: none;
2270
+ border-bottom: none;
2271
+ position: relative;
2272
+ }
2273
+
2274
+ .icon:before {
2275
+ -moz-osx-font-smoothing: grayscale;
2276
+ -webkit-font-smoothing: antialiased;
2277
+ display: inline-block;
2278
+ font-style: normal;
2279
+ font-variant: normal;
2280
+ text-rendering: auto;
2281
+ line-height: 1;
2282
+ text-transform: none !important;
2283
+ font-family: 'Font Awesome 5 Free';
2284
+ font-weight: 400;
2285
+ }
2286
+
2287
+ .icon > .label {
2288
+ display: none;
2289
+ }
2290
+
2291
+ .icon:before {
2292
+ line-height: inherit;
2293
+ }
2294
+
2295
+ .icon.solid:before {
2296
+ font-weight: 900 !important;
2297
+ }
2298
+
2299
+ .icon.brands:before {
2300
+ font-family: 'Font Awesome 5 Brands';
2301
+ }
2302
+
2303
+ .icon.style1:before {
2304
+ color: #c3e895;
2305
+ }
2306
+
2307
+ .icon.style2:before {
2308
+ color: #8addaa;
2309
+ }
2310
+
2311
+ .icon.style3:before {
2312
+ color: #6bd4c8;
2313
+ }
2314
+
2315
+ .icon.style4:before {
2316
+ color: #57aed3;
2317
+ }
2318
+
2319
+ .icon.style5:before {
2320
+ color: #4a87d3;
2321
+ }
2322
+
2323
+ .icon.style6:before {
2324
+ color: #6b88e6;
2325
+ }
2326
+
2327
+ .icon.major {
2328
+ text-decoration: none;
2329
+ color: #555;
2330
+ cursor: default;
2331
+ display: inline-block;
2332
+ margin: 0 0 1.5em 0;
2333
+ }
2334
+
2335
+ .icon.major:before {
2336
+ -moz-osx-font-smoothing: grayscale;
2337
+ -webkit-font-smoothing: antialiased;
2338
+ display: inline-block;
2339
+ font-style: normal;
2340
+ font-variant: normal;
2341
+ text-rendering: auto;
2342
+ line-height: 1;
2343
+ text-transform: none !important;
2344
+ font-family: 'Font Awesome 5 Free';
2345
+ font-weight: 400;
2346
+ }
2347
+
2348
+ .icon.major:before {
2349
+ font-size: 4em;
2350
+ line-height: 1em;
2351
+ }
2352
+
2353
+ /* Image */
2354
+
2355
+ .image {
2356
+ border-radius: 4px;
2357
+ border: 0;
2358
+ display: inline-block;
2359
+ position: relative;
2360
+ }
2361
+
2362
+ .image img {
2363
+ border-radius: 4px;
2364
+ display: block;
2365
+ }
2366
+
2367
+ .image.left {
2368
+ float: left;
2369
+ padding: 0 1.5em 1em 0;
2370
+ top: 0.25em;
2371
+ }
2372
+
2373
+ .image.right {
2374
+ float: right;
2375
+ padding: 0 0 1em 1.5em;
2376
+ top: 0.25em;
2377
+ }
2378
+
2379
+ .image.left, .image.right {
2380
+ max-width: 40%;
2381
+ }
2382
+
2383
+ .image.left img, .image.right img {
2384
+ width: 100%;
2385
+ }
2386
+
2387
+ .image.fit {
2388
+ display: block;
2389
+ margin: 0 0 2em 0;
2390
+ width: 100%;
2391
+ }
2392
+
2393
+ .image.fit img {
2394
+ width: 100%;
2395
+ }
2396
+
2397
+ /* List */
2398
+
2399
+ ol {
2400
+ list-style: decimal;
2401
+ margin: 0 0 2em 0;
2402
+ padding-left: 1.25em;
2403
+ }
2404
+
2405
+ ol li {
2406
+ padding-left: 0.25em;
2407
+ }
2408
+
2409
+ ul {
2410
+ list-style: disc;
2411
+ margin: 0 0 2em 0;
2412
+ padding-left: 1em;
2413
+ }
2414
+
2415
+ ul li {
2416
+ padding-left: 0.5em;
2417
+ }
2418
+
2419
+ ul.alt {
2420
+ list-style: none;
2421
+ padding-left: 0;
2422
+ }
2423
+
2424
+ ul.alt li {
2425
+ border-top: solid 1px rgba(144, 144, 144, 0.5);
2426
+ padding: 0.5em 0;
2427
+ }
2428
+
2429
+ ul.alt li:first-child {
2430
+ border-top: 0;
2431
+ padding-top: 0;
2432
+ }
2433
+
2434
+ dl {
2435
+ margin: 0 0 2em 0;
2436
+ }
2437
+
2438
+ /* Actions */
2439
+
2440
+ ul.actions {
2441
+ display: -moz-flex;
2442
+ display: -webkit-flex;
2443
+ display: -ms-flex;
2444
+ display: flex;
2445
+ cursor: default;
2446
+ list-style: none;
2447
+ margin-left: -1em;
2448
+ padding-left: 0;
2449
+ }
2450
+
2451
+ ul.actions li {
2452
+ padding: 0 0 0 1em;
2453
+ vertical-align: middle;
2454
+ }
2455
+
2456
+ ul.actions.special {
2457
+ -moz-justify-content: center;
2458
+ -webkit-justify-content: center;
2459
+ -ms-justify-content: center;
2460
+ justify-content: center;
2461
+ width: 100%;
2462
+ margin-left: 0;
2463
+ }
2464
+
2465
+ ul.actions.special li:first-child {
2466
+ padding-left: 0;
2467
+ }
2468
+
2469
+ ul.actions.stacked {
2470
+ -moz-flex-direction: column;
2471
+ -webkit-flex-direction: column;
2472
+ -ms-flex-direction: column;
2473
+ flex-direction: column;
2474
+ margin-left: 0;
2475
+ }
2476
+
2477
+ ul.actions.stacked li {
2478
+ padding: 1.3em 0 0 0;
2479
+ }
2480
+
2481
+ ul.actions.stacked li:first-child {
2482
+ padding-top: 0;
2483
+ }
2484
+
2485
+ ul.actions.fit {
2486
+ width: calc(100% + 1em);
2487
+ }
2488
+
2489
+ ul.actions.fit li {
2490
+ -moz-flex-grow: 1;
2491
+ -webkit-flex-grow: 1;
2492
+ -ms-flex-grow: 1;
2493
+ flex-grow: 1;
2494
+ -moz-flex-shrink: 1;
2495
+ -webkit-flex-shrink: 1;
2496
+ -ms-flex-shrink: 1;
2497
+ flex-shrink: 1;
2498
+ width: 100%;
2499
+ }
2500
+
2501
+ ul.actions.fit li > * {
2502
+ width: 100%;
2503
+ }
2504
+
2505
+ ul.actions.fit.stacked {
2506
+ width: 100%;
2507
+ }
2508
+
2509
+ @media screen and (max-width: 480px) {
2510
+
2511
+ ul.actions:not(.fixed) {
2512
+ -moz-flex-direction: column;
2513
+ -webkit-flex-direction: column;
2514
+ -ms-flex-direction: column;
2515
+ flex-direction: column;
2516
+ margin-left: 0;
2517
+ width: 100% !important;
2518
+ }
2519
+
2520
+ ul.actions:not(.fixed) li {
2521
+ -moz-flex-grow: 1;
2522
+ -webkit-flex-grow: 1;
2523
+ -ms-flex-grow: 1;
2524
+ flex-grow: 1;
2525
+ -moz-flex-shrink: 1;
2526
+ -webkit-flex-shrink: 1;
2527
+ -ms-flex-shrink: 1;
2528
+ flex-shrink: 1;
2529
+ padding: 1em 0 0 0;
2530
+ text-align: center;
2531
+ width: 100%;
2532
+ }
2533
+
2534
+ ul.actions:not(.fixed) li > * {
2535
+ width: 100%;
2536
+ }
2537
+
2538
+ ul.actions:not(.fixed) li:first-child {
2539
+ padding-top: 0;
2540
+ }
2541
+
2542
+ ul.actions:not(.fixed) li input[type="submit"],
2543
+ ul.actions:not(.fixed) li input[type="reset"],
2544
+ ul.actions:not(.fixed) li input[type="button"],
2545
+ ul.actions:not(.fixed) li button,
2546
+ ul.actions:not(.fixed) li .button {
2547
+ width: 100%;
2548
+ }
2549
+
2550
+ ul.actions:not(.fixed) li input[type="submit"].icon:before,
2551
+ ul.actions:not(.fixed) li input[type="reset"].icon:before,
2552
+ ul.actions:not(.fixed) li input[type="button"].icon:before,
2553
+ ul.actions:not(.fixed) li button.icon:before,
2554
+ ul.actions:not(.fixed) li .button.icon:before {
2555
+ margin-left: -0.5em;
2556
+ }
2557
+
2558
+ }
2559
+
2560
+ /* Icons */
2561
+
2562
+ ul.icons {
2563
+ cursor: default;
2564
+ list-style: none;
2565
+ padding-left: 0;
2566
+ }
2567
+
2568
+ ul.icons li {
2569
+ display: inline-block;
2570
+ padding: 0 1.25em 0 0;
2571
+ }
2572
+
2573
+ ul.icons li:last-child {
2574
+ padding-right: 0;
2575
+ }
2576
+
2577
+ ul.icons li .icon:before {
2578
+ font-size: 1.5em;
2579
+ }
2580
+
2581
+ /* Major Icons */
2582
+
2583
+ ul.major-icons {
2584
+ list-style: none;
2585
+ padding-left: 0;
2586
+ }
2587
+
2588
+ ul.major-icons li {
2589
+ display: inline-block;
2590
+ padding: 2.5em;
2591
+ text-align: center;
2592
+ }
2593
+
2594
+ ul.major-icons li .icon {
2595
+ -moz-transform: rotate(45deg);
2596
+ -webkit-transform: rotate(45deg);
2597
+ -ms-transform: rotate(45deg);
2598
+ transform: rotate(45deg);
2599
+ border-radius: 4px;
2600
+ border: solid 1px rgba(144, 144, 144, 0.5);
2601
+ display: inline-block;
2602
+ height: 8em;
2603
+ line-height: 8em;
2604
+ margin: 0;
2605
+ text-align: center;
2606
+ width: 8em;
2607
+ }
2608
+
2609
+ ul.major-icons li .icon:before {
2610
+ -moz-transform: rotate(-45deg);
2611
+ -webkit-transform: rotate(-45deg);
2612
+ -ms-transform: rotate(-45deg);
2613
+ transform: rotate(-45deg);
2614
+ display: inline-block;
2615
+ line-height: inherit;
2616
+ }
2617
+
2618
+ /* Table */
2619
+
2620
+ .table-wrapper {
2621
+ -webkit-overflow-scrolling: touch;
2622
+ overflow-x: auto;
2623
+ }
2624
+
2625
+ table {
2626
+ margin: 0 0 2em 0;
2627
+ width: 100%;
2628
+ }
2629
+
2630
+ table tbody tr {
2631
+ border-left: 0;
2632
+ border-right: 0;
2633
+ }
2634
+
2635
+ table tbody tr:nth-child(2n + 1) {
2636
+ background-color: rgba(144, 144, 144, 0.075);
2637
+ }
2638
+
2639
+ table td {
2640
+ padding: 0.75em 0.75em;
2641
+ }
2642
+
2643
+ table th {
2644
+ color: #555;
2645
+ font-size: 0.9em;
2646
+ font-weight: 400;
2647
+ padding: 0 0.75em 0.75em 0.75em;
2648
+ text-align: left;
2649
+ }
2650
+
2651
+ table thead {
2652
+ border-bottom: solid 1px rgba(144, 144, 144, 0.5);
2653
+ }
2654
+
2655
+ table tfoot {
2656
+ border-top: solid 1px rgba(144, 144, 144, 0.5);
2657
+ }
2658
+
2659
+ table.alt {
2660
+ border-collapse: separate;
2661
+ }
2662
+
2663
+ table.alt tbody tr td {
2664
+ border: solid 1px rgba(144, 144, 144, 0.5);
2665
+ border-left-width: 0;
2666
+ border-top-width: 0;
2667
+ }
2668
+
2669
+ table.alt tbody tr td:first-child {
2670
+ border-left-width: 1px;
2671
+ }
2672
+
2673
+ table.alt tbody tr:first-child td {
2674
+ border-top-width: 1px;
2675
+ }
2676
+
2677
+ table.alt thead {
2678
+ border-bottom: 0;
2679
+ }
2680
+
2681
+ table.alt tfoot {
2682
+ border-top: 0;
2683
+ }
2684
+
2685
+ /* Button */
2686
+
2687
+ input[type="submit"],
2688
+ input[type="reset"],
2689
+ input[type="button"],
2690
+ button,
2691
+ .button {
2692
+ -moz-appearance: none;
2693
+ -webkit-appearance: none;
2694
+ -ms-appearance: none;
2695
+ appearance: none;
2696
+ -moz-transition: background-color 0.2s ease-in-out, color 0.2s ease-in-out;
2697
+ -webkit-transition: background-color 0.2s ease-in-out, color 0.2s ease-in-out;
2698
+ -ms-transition: background-color 0.2s ease-in-out, color 0.2s ease-in-out;
2699
+ transition: background-color 0.2s ease-in-out, color 0.2s ease-in-out;
2700
+ background-color: transparent;
2701
+ border-radius: 4px;
2702
+ border: 0;
2703
+ box-shadow: inset 0 0 0 1px rgba(144, 144, 144, 0.5);
2704
+ color: #555 !important;
2705
+ cursor: pointer;
2706
+ display: inline-block;
2707
+ font-size: 0.9em;
2708
+ font-weight: 400;
2709
+ height: 2.75em;
2710
+ letter-spacing: 0.125em;
2711
+ line-height: 2.75em;
2712
+ padding: 0 2em;
2713
+ text-align: center;
2714
+ text-decoration: none;
2715
+ text-indent: 0.125em;
2716
+ text-transform: uppercase;
2717
+ white-space: nowrap;
2718
+ }
2719
+
2720
+ input[type="submit"]:hover,
2721
+ input[type="reset"]:hover,
2722
+ input[type="button"]:hover,
2723
+ button:hover,
2724
+ .button:hover {
2725
+ background-color: rgba(144, 144, 144, 0.075);
2726
+ }
2727
+
2728
+ input[type="submit"]:active,
2729
+ input[type="reset"]:active,
2730
+ input[type="button"]:active,
2731
+ button:active,
2732
+ .button:active {
2733
+ background-color: rgba(144, 144, 144, 0.2);
2734
+ }
2735
+
2736
+ input[type="submit"].icon:before,
2737
+ input[type="reset"].icon:before,
2738
+ input[type="button"].icon:before,
2739
+ button.icon:before,
2740
+ .button.icon:before {
2741
+ margin-right: 0.5em;
2742
+ }
2743
+
2744
+ input[type="submit"].fit,
2745
+ input[type="reset"].fit,
2746
+ input[type="button"].fit,
2747
+ button.fit,
2748
+ .button.fit {
2749
+ width: 100%;
2750
+ }
2751
+
2752
+ input[type="submit"].small,
2753
+ input[type="reset"].small,
2754
+ input[type="button"].small,
2755
+ button.small,
2756
+ .button.small {
2757
+ font-size: 0.7em;
2758
+ }
2759
+
2760
+ input[type="submit"].large,
2761
+ input[type="reset"].large,
2762
+ input[type="button"].large,
2763
+ button.large,
2764
+ .button.large {
2765
+ font-size: 1.25em;
2766
+ }
2767
+
2768
+ input[type="submit"].wide,
2769
+ input[type="reset"].wide,
2770
+ input[type="button"].wide,
2771
+ button.wide,
2772
+ .button.wide {
2773
+ min-width: 12em;
2774
+ }
2775
+
2776
+ input[type="submit"].primary,
2777
+ input[type="reset"].primary,
2778
+ input[type="button"].primary,
2779
+ button.primary,
2780
+ .button.primary {
2781
+ background-color: #555;
2782
+ box-shadow: none !important;
2783
+ color: #fff !important;
2784
+ }
2785
+
2786
+ input[type="submit"].primary:hover,
2787
+ input[type="reset"].primary:hover,
2788
+ input[type="button"].primary:hover,
2789
+ button.primary:hover,
2790
+ .button.primary:hover {
2791
+ background-color: #626262;
2792
+ }
2793
+
2794
+ input[type="submit"].primary:active,
2795
+ input[type="reset"].primary:active,
2796
+ input[type="button"].primary:active,
2797
+ button.primary:active,
2798
+ .button.primary:active {
2799
+ background-color: #484848;
2800
+ }
2801
+
2802
+ input[type="submit"].disabled, input[type="submit"]:disabled,
2803
+ input[type="reset"].disabled,
2804
+ input[type="reset"]:disabled,
2805
+ input[type="button"].disabled,
2806
+ input[type="button"]:disabled,
2807
+ button.disabled,
2808
+ button:disabled,
2809
+ .button.disabled,
2810
+ .button:disabled {
2811
+ cursor: default;
2812
+ opacity: 0.25;
2813
+ }
2814
+
2815
+ /* Main */
2816
+
2817
+ .main {
2818
+ padding: 6em 0 4em 0 ;
2819
+ }
2820
+
2821
+ .main.style1 {
2822
+ background: #fff;
2823
+ }
2824
+
2825
+ .main.style2 {
2826
+ background-color: #333;
2827
+ color: rgba(255, 255, 255, 0.75);
2828
+ background-attachment: fixed, fixed;
2829
+ background-image: url("images/overlay1.png"), url("../../images/header.jpg");
2830
+ background-size: auto, cover;
2831
+ }
2832
+
2833
+ .main.style2 a {
2834
+ border-bottom-color: rgba(255, 255, 255, 0.5);
2835
+ }
2836
+
2837
+ .main.style2 a:hover {
2838
+ color: #ffffff;
2839
+ }
2840
+
2841
+ .main.style2 h1, .main.style2 h2, .main.style2 h3, .main.style2 h4, .main.style2 h5, .main.style2 h6, .main.style2 strong, .main.style2 b {
2842
+ color: #ffffff;
2843
+ }
2844
+
2845
+ .main.style2 header p {
2846
+ color: #ffffff;
2847
+ }
2848
+
2849
+ .main.style2 header.major:after {
2850
+ background: #ffffff;
2851
+ }
2852
+
2853
+ .main.style2 input[type="submit"],
2854
+ .main.style2 input[type="reset"],
2855
+ .main.style2 input[type="button"],
2856
+ .main.style2 button,
2857
+ .main.style2 .button {
2858
+ box-shadow: inset 0 0 0 1px #ffffff;
2859
+ color: #ffffff !important;
2860
+ }
2861
+
2862
+ .main.style2 input[type="submit"]:hover,
2863
+ .main.style2 input[type="reset"]:hover,
2864
+ .main.style2 input[type="button"]:hover,
2865
+ .main.style2 button:hover,
2866
+ .main.style2 .button:hover {
2867
+ background-color: rgba(255, 255, 255, 0.125);
2868
+ }
2869
+
2870
+ .main.style2 input[type="submit"]:active,
2871
+ .main.style2 input[type="reset"]:active,
2872
+ .main.style2 input[type="button"]:active,
2873
+ .main.style2 button:active,
2874
+ .main.style2 .button:active {
2875
+ background-color: rgba(255, 255, 255, 0.25);
2876
+ }
2877
+
2878
+ .main.style2 input[type="submit"].primary,
2879
+ .main.style2 input[type="reset"].primary,
2880
+ .main.style2 input[type="button"].primary,
2881
+ .main.style2 button.primary,
2882
+ .main.style2 .button.primary {
2883
+ background-color: #ffffff;
2884
+ box-shadow: inset 0 0 0 1px #ffffff !important;
2885
+ color: #333 !important;
2886
+ }
2887
+
2888
+ .main.style2 input[type="submit"].primary:hover,
2889
+ .main.style2 input[type="reset"].primary:hover,
2890
+ .main.style2 input[type="button"].primary:hover,
2891
+ .main.style2 button.primary:hover,
2892
+ .main.style2 .button.primary:hover {
2893
+ background-color: rgba(255, 255, 255, 0.125) !important;
2894
+ color: #ffffff !important;
2895
+ }
2896
+
2897
+ .main.style2 input[type="submit"].primary:active,
2898
+ .main.style2 input[type="reset"].primary:active,
2899
+ .main.style2 input[type="button"].primary:active,
2900
+ .main.style2 button.primary:active,
2901
+ .main.style2 .button.primary:active {
2902
+ background-color: rgba(255, 255, 255, 0.25) !important;
2903
+ }
2904
+
2905
+ .main.style2 ul.major-icons li .icon {
2906
+ border-color: #ffffff;
2907
+ }
2908
+
2909
+ .main.style2 .icon.major {
2910
+ color: #ffffff;
2911
+ }
2912
+
2913
+ /* Header */
2914
+
2915
+ #header {
2916
+ padding: 9em 0 9em 0 ;
2917
+ background-color: #4686a0;
2918
+ color: rgba(255, 255, 255, 0.75);
2919
+ background-attachment: fixed, fixed, fixed;
2920
+ background-image: url("images/overlay2.png"), url("images/overlay3.svg"), linear-gradient(45deg, #9dc66b 5%, #4fa49a 30%, #4361c2);
2921
+ background-position: top left, center center, center center;
2922
+ background-size: auto, cover, cover;
2923
+ overflow: hidden;
2924
+ position: relative;
2925
+ text-align: center;
2926
+ }
2927
+
2928
+ #header a {
2929
+ border-bottom-color: rgba(255, 255, 255, 0.5);
2930
+ }
2931
+
2932
+ #header a:hover {
2933
+ color: #ffffff;
2934
+ }
2935
+
2936
+ #header h1, #header h2, #header h3, #header h4, #header h5, #header h6, #header strong, #header b {
2937
+ color: #ffffff;
2938
+ }
2939
+
2940
+ #header header p {
2941
+ color: #ffffff;
2942
+ }
2943
+
2944
+ #header header.major:after {
2945
+ background: #ffffff;
2946
+ }
2947
+
2948
+ #header input[type="submit"],
2949
+ #header input[type="reset"],
2950
+ #header input[type="button"],
2951
+ #header button,
2952
+ #header .button {
2953
+ box-shadow: inset 0 0 0 1px #ffffff;
2954
+ color: #ffffff !important;
2955
+ }
2956
+
2957
+ #header input[type="submit"]:hover,
2958
+ #header input[type="reset"]:hover,
2959
+ #header input[type="button"]:hover,
2960
+ #header button:hover,
2961
+ #header .button:hover {
2962
+ background-color: rgba(255, 255, 255, 0.125);
2963
+ }
2964
+
2965
+ #header input[type="submit"]:active,
2966
+ #header input[type="reset"]:active,
2967
+ #header input[type="button"]:active,
2968
+ #header button:active,
2969
+ #header .button:active {
2970
+ background-color: rgba(255, 255, 255, 0.25);
2971
+ }
2972
+
2973
+ #header input[type="submit"].primary,
2974
+ #header input[type="reset"].primary,
2975
+ #header input[type="button"].primary,
2976
+ #header button.primary,
2977
+ #header .button.primary {
2978
+ background-color: #ffffff;
2979
+ box-shadow: inset 0 0 0 1px #ffffff !important;
2980
+ color: #4686a0 !important;
2981
+ }
2982
+
2983
+ #header input[type="submit"].primary:hover,
2984
+ #header input[type="reset"].primary:hover,
2985
+ #header input[type="button"].primary:hover,
2986
+ #header button.primary:hover,
2987
+ #header .button.primary:hover {
2988
+ background-color: rgba(255, 255, 255, 0.125) !important;
2989
+ color: #ffffff !important;
2990
+ }
2991
+
2992
+ #header input[type="submit"].primary:active,
2993
+ #header input[type="reset"].primary:active,
2994
+ #header input[type="button"].primary:active,
2995
+ #header button.primary:active,
2996
+ #header .button.primary:active {
2997
+ background-color: rgba(255, 255, 255, 0.25) !important;
2998
+ }
2999
+
3000
+ #header ul.major-icons li .icon {
3001
+ border-color: #ffffff;
3002
+ }
3003
+
3004
+ #header .icon.major {
3005
+ color: #ffffff;
3006
+ }
3007
+
3008
+ #header h1 {
3009
+ margin: 0;
3010
+ }
3011
+
3012
+ #header p {
3013
+ margin: 1em 0 0 0;
3014
+ }
3015
+
3016
+ #header .actions {
3017
+ -moz-justify-content: center;
3018
+ -webkit-justify-content: center;
3019
+ -ms-justify-content: center;
3020
+ justify-content: center;
3021
+ margin-top: 2.5em;
3022
+ margin-left: 0;
3023
+ position: relative;
3024
+ }
3025
+
3026
+ #header .actions li:first-child {
3027
+ padding-left: 0;
3028
+ }
3029
+
3030
+ #header .actions:after {
3031
+ background: #ffffff;
3032
+ content: '';
3033
+ height: 100vh;
3034
+ left: 50%;
3035
+ position: absolute;
3036
+ top: 100%;
3037
+ width: 1px;
3038
+ }
3039
+
3040
+ #header .inner {
3041
+ -moz-transition: -moz-transform 1.5s ease, opacity 2s ease;
3042
+ -webkit-transition: -webkit-transform 1.5s ease, opacity 2s ease;
3043
+ -ms-transition: -ms-transform 1.5s ease, opacity 2s ease;
3044
+ transition: transform 1.5s ease, opacity 2s ease;
3045
+ -moz-transition-delay: 0.25s;
3046
+ -webkit-transition-delay: 0.25s;
3047
+ -ms-transition-delay: 0.25s;
3048
+ transition-delay: 0.25s;
3049
+ -moz-transform: scale(1);
3050
+ -webkit-transform: scale(1);
3051
+ -ms-transform: scale(1);
3052
+ transform: scale(1);
3053
+ opacity: 1;
3054
+ position: relative;
3055
+ z-index: 1;
3056
+ }
3057
+
3058
+ #header .inner .actions {
3059
+ -moz-transition: -moz-transform 1.25s ease;
3060
+ -webkit-transition: -webkit-transform 1.25s ease;
3061
+ -ms-transition: -ms-transform 1.25s ease;
3062
+ transition: transform 1.25s ease;
3063
+ -moz-transition-delay: 1s;
3064
+ -webkit-transition-delay: 1s;
3065
+ -ms-transition-delay: 1s;
3066
+ transition-delay: 1s;
3067
+ -moz-transform: translateY(0);
3068
+ -webkit-transform: translateY(0);
3069
+ -ms-transform: translateY(0);
3070
+ transform: translateY(0);
3071
+ opacity: 1;
3072
+ }
3073
+
3074
+ #header:after {
3075
+ -moz-transition: opacity 1s ease;
3076
+ -webkit-transition: opacity 1s ease;
3077
+ -ms-transition: opacity 1s ease;
3078
+ transition: opacity 1s ease;
3079
+ background-image: linear-gradient(45deg, #4fa49a, #4361c2);
3080
+ content: '';
3081
+ height: 100%;
3082
+ left: 0;
3083
+ opacity: 0;
3084
+ position: absolute;
3085
+ top: 0;
3086
+ width: 100%;
3087
+ }
3088
+
3089
+ body.is-preload #header .inner {
3090
+ -moz-transform: scale(1.05);
3091
+ -webkit-transform: scale(1.05);
3092
+ -ms-transform: scale(1.05);
3093
+ transform: scale(1.05);
3094
+ opacity: 0;
3095
+ }
3096
+
3097
+ body.is-preload #header .inner .actions {
3098
+ -moz-transform: translateY(30em);
3099
+ -webkit-transform: translateY(30em);
3100
+ -ms-transform: translateY(30em);
3101
+ transform: translateY(30em);
3102
+ opacity: 0;
3103
+ }
3104
+
3105
+ body.is-preload #header:after {
3106
+ opacity: 1;
3107
+ }
3108
+
3109
+ /* Footer */
3110
+
3111
+ #footer {
3112
+ padding: 6em 0 6em 0 ;
3113
+ background-color: #4686a0;
3114
+ color: rgba(255, 255, 255, 0.75);
3115
+ background-attachment: fixed, fixed, fixed;
3116
+ background-image: url("images/overlay2.png"), url("images/overlay4.svg"), linear-gradient(45deg, #4361c2, #4fa49a 50%, #9dc66b 95%);
3117
+ background-position: top left, center center, center center;
3118
+ background-size: auto, cover, cover;
3119
+ text-align: center;
3120
+ }
3121
+
3122
+ #footer a {
3123
+ border-bottom-color: rgba(255, 255, 255, 0.5);
3124
+ }
3125
+
3126
+ #footer a:hover {
3127
+ color: #ffffff;
3128
+ }
3129
+
3130
+ #footer h1, #footer h2, #footer h3, #footer h4, #footer h5, #footer h6, #footer strong, #footer b {
3131
+ color: #ffffff;
3132
+ }
3133
+
3134
+ #footer header p {
3135
+ color: #ffffff;
3136
+ }
3137
+
3138
+ #footer header.major:after {
3139
+ background: #ffffff;
3140
+ }
3141
+
3142
+ #footer input[type="submit"],
3143
+ #footer input[type="reset"],
3144
+ #footer input[type="button"],
3145
+ #footer button,
3146
+ #footer .button {
3147
+ box-shadow: inset 0 0 0 1px #ffffff;
3148
+ color: #ffffff !important;
3149
+ }
3150
+
3151
+ #footer input[type="submit"]:hover,
3152
+ #footer input[type="reset"]:hover,
3153
+ #footer input[type="button"]:hover,
3154
+ #footer button:hover,
3155
+ #footer .button:hover {
3156
+ background-color: rgba(255, 255, 255, 0.125);
3157
+ }
3158
+
3159
+ #footer input[type="submit"]:active,
3160
+ #footer input[type="reset"]:active,
3161
+ #footer input[type="button"]:active,
3162
+ #footer button:active,
3163
+ #footer .button:active {
3164
+ background-color: rgba(255, 255, 255, 0.25);
3165
+ }
3166
+
3167
+ #footer input[type="submit"].primary,
3168
+ #footer input[type="reset"].primary,
3169
+ #footer input[type="button"].primary,
3170
+ #footer button.primary,
3171
+ #footer .button.primary {
3172
+ background-color: #ffffff;
3173
+ box-shadow: inset 0 0 0 1px #ffffff !important;
3174
+ color: #4686a0 !important;
3175
+ }
3176
+
3177
+ #footer input[type="submit"].primary:hover,
3178
+ #footer input[type="reset"].primary:hover,
3179
+ #footer input[type="button"].primary:hover,
3180
+ #footer button.primary:hover,
3181
+ #footer .button.primary:hover {
3182
+ background-color: rgba(255, 255, 255, 0.125) !important;
3183
+ color: #ffffff !important;
3184
+ }
3185
+
3186
+ #footer input[type="submit"].primary:active,
3187
+ #footer input[type="reset"].primary:active,
3188
+ #footer input[type="button"].primary:active,
3189
+ #footer button.primary:active,
3190
+ #footer .button.primary:active {
3191
+ background-color: rgba(255, 255, 255, 0.25) !important;
3192
+ }
3193
+
3194
+ #footer ul.major-icons li .icon {
3195
+ border-color: #ffffff;
3196
+ }
3197
+
3198
+ #footer .icon.major {
3199
+ color: #ffffff;
3200
+ }
3201
+
3202
+ #footer .icons {
3203
+ margin: 0;
3204
+ }
3205
+
3206
+ #footer .copyright {
3207
+ font-size: 0.8em;
3208
+ list-style: none;
3209
+ margin: 2em 0 0 0;
3210
+ padding: 0;
3211
+ }
3212
+
3213
+ #footer .copyright li {
3214
+ border-left: solid 1px;
3215
+ display: inline-block;
3216
+ line-height: 1em;
3217
+ margin-left: 1em;
3218
+ padding: 0 0 0 1em;
3219
+ }
3220
+
3221
+ #footer .copyright li:first-child {
3222
+ border-left: 0;
3223
+ margin-left: 0;
3224
+ padding: 0;
3225
+ }
3226
+
3227
+ /* XLarge */
3228
+
3229
+ @media screen and (max-width: 1680px) {
3230
+
3231
+ /* Basic */
3232
+
3233
+ body, input, select, textarea {
3234
+ font-size: 14pt;
3235
+ }
3236
+
3237
+ /* Header */
3238
+
3239
+ #header {
3240
+ padding: 6em 0 6em 0 ;
3241
+ }
3242
+
3243
+ }
3244
+
3245
+ /* Large */
3246
+
3247
+ @media screen and (max-width: 1140px) {
3248
+
3249
+ /* Basic */
3250
+
3251
+ body, input, select, textarea {
3252
+ font-size: 13pt;
3253
+ }
3254
+
3255
+ h1 br, h2 br, h3 br, h4 br, h5 br, h6 br {
3256
+ display: none;
3257
+ }
3258
+
3259
+ /* List */
3260
+
3261
+ ul.major-icons li {
3262
+ padding: 2em;
3263
+ }
3264
+
3265
+ ul.major-icons li .icon {
3266
+ height: 8em;
3267
+ line-height: 8em;
3268
+ width: 8em;
3269
+ }
3270
+
3271
+ /* Main */
3272
+
3273
+ .main {
3274
+ padding: 4em 0 2em 0 ;
3275
+ }
3276
+
3277
+ .main.style2 {
3278
+ background-attachment: scroll;
3279
+ }
3280
+
3281
+ /* Header */
3282
+
3283
+ #header {
3284
+ padding: 5em 0 5em 0 ;
3285
+ background-attachment: scroll;
3286
+ }
3287
+
3288
+ #header br {
3289
+ display: inline;
3290
+ }
3291
+
3292
+ /* Footer */
3293
+
3294
+ #footer {
3295
+ padding: 4em 0 4em 0 ;
3296
+ background-attachment: scroll;
3297
+ }
3298
+
3299
+ }
3300
+
3301
+ /* Medium */
3302
+
3303
+ @media screen and (max-width: 980px) {
3304
+
3305
+ /* List */
3306
+
3307
+ ul.major-icons li {
3308
+ padding: 2em;
3309
+ }
3310
+
3311
+ ul.major-icons li .icon {
3312
+ height: 7em;
3313
+ line-height: 7em;
3314
+ width: 7em;
3315
+ }
3316
+
3317
+ /* Main */
3318
+
3319
+ .main {
3320
+ padding: 5em 3em 3em 3em ;
3321
+ }
3322
+
3323
+ /* Header */
3324
+
3325
+ #header {
3326
+ padding: 8em 3em 8em 3em ;
3327
+ }
3328
+
3329
+ /* Footer */
3330
+
3331
+ #footer {
3332
+ padding: 5em 3em 5em 3em ;
3333
+ }
3334
+
3335
+ /* One */
3336
+
3337
+ #one {
3338
+ text-align: center;
3339
+ }
3340
+
3341
+ /* Two */
3342
+
3343
+ #two {
3344
+ text-align: center;
3345
+ }
3346
+
3347
+ }
3348
+
3349
+ /* Small */
3350
+
3351
+ @media screen and (max-width: 736px) {
3352
+
3353
+ /* Basic */
3354
+
3355
+ body, input, select, textarea {
3356
+ font-size: 12pt;
3357
+ }
3358
+
3359
+ h1 {
3360
+ font-size: 1.75em;
3361
+ }
3362
+
3363
+ h2 {
3364
+ font-size: 1.5em;
3365
+ }
3366
+
3367
+ h3 {
3368
+ font-size: 1.1em;
3369
+ }
3370
+
3371
+ h4 {
3372
+ font-size: 1em;
3373
+ }
3374
+
3375
+ /* List */
3376
+
3377
+ ul.major-icons li {
3378
+ padding: 1.5em;
3379
+ }
3380
+
3381
+ ul.major-icons li .icon {
3382
+ height: 5em;
3383
+ line-height: 5em;
3384
+ width: 5em;
3385
+ }
3386
+
3387
+ ul.major-icons li .icon:before {
3388
+ font-size: 42px;
3389
+ }
3390
+
3391
+ /* Icon */
3392
+
3393
+ .icon.major {
3394
+ margin: 0 0 1em 0;
3395
+ }
3396
+
3397
+ /* Button */
3398
+
3399
+ input[type="submit"],
3400
+ input[type="reset"],
3401
+ input[type="button"],
3402
+ button,
3403
+ .button {
3404
+ height: 3em;
3405
+ line-height: 3em;
3406
+ }
3407
+
3408
+ /* Main */
3409
+
3410
+ .main {
3411
+ padding: 3em 1.5em 1em 1.5em ;
3412
+ }
3413
+
3414
+ /* Header */
3415
+
3416
+ #header {
3417
+ padding: 4em 3em 4em 3em ;
3418
+ }
3419
+
3420
+ #header .actions {
3421
+ margin: 2em 0 0 0;
3422
+ }
3423
+
3424
+ /* Footer */
3425
+
3426
+ #footer {
3427
+ padding: 3em 1.5em 3em 1.5em ;
3428
+ }
3429
+
3430
+ }
3431
+
3432
+ /* XSmall */
3433
+
3434
+ @media screen and (max-width: 480px) {
3435
+
3436
+ /* Button */
3437
+
3438
+ input[type="submit"],
3439
+ input[type="reset"],
3440
+ input[type="button"],
3441
+ .button {
3442
+ padding: 0;
3443
+ }
3444
+
3445
+ /* Main */
3446
+
3447
+ .main {
3448
+ padding: 2em 1.5em 0.1em 1.5em ;
3449
+ }
3450
+
3451
+ /* Header */
3452
+
3453
+ #header {
3454
+ padding: 4em 2em 4em 2em ;
3455
+ }
3456
+
3457
+ #header br {
3458
+ display: none;
3459
+ }
3460
+
3461
+ /* Footer */
3462
+
3463
+ #footer {
3464
+ padding: 2em 1.5em 2em 1.5em ;
3465
+ }
3466
+
3467
+ #footer .copyright {
3468
+ margin: 1.5em 0 0 0;
3469
+ }
3470
+
3471
+ #footer .copyright li {
3472
+ border: 0;
3473
+ display: block;
3474
+ margin: 1em 0 0 0;
3475
+ padding: 0;
3476
+ }
3477
+
3478
+ #footer .copyright li:first-child {
3479
+ margin-top: 0;
3480
+ }
3481
+
3482
+ }
3483
+
3484
+ /* XXSmall */
3485
+
3486
+ @media screen and (max-width: 320px) {
3487
+
3488
+ /* Basic */
3489
+
3490
+ html, body {
3491
+ min-width: 320px;
3492
+ }
3493
+
3494
+ /* Main */
3495
+
3496
+ .main {
3497
+ padding: 2em 1em 0.1em 1em ;
3498
+ }
3499
+
3500
+ /* Header */
3501
+
3502
+ #header {
3503
+ padding: 3em 1em 3em 1em ;
3504
+ }
3505
+
3506
+ /* Footer */
3507
+
3508
+ #footer {
3509
+ padding: 2em 1em 2em 1em ;
3510
+ }
3511
+
3512
+ }
public/assets/css/noscript.css ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*
2
+ Photon by HTML5 UP
3
+ html5up.net | @ajlkn
4
+ Free for personal and commercial use under the CCA 3.0 license (html5up.net/license)
5
+ */
6
+
7
+ /* Header */
8
+
9
+ body.is-preload #header .inner {
10
+ -moz-transform: none;
11
+ -webkit-transform: none;
12
+ -ms-transform: none;
13
+ transform: none;
14
+ opacity: 1;
15
+ }
16
+
17
+ body.is-preload #header .inner .actions {
18
+ -moz-transform: none;
19
+ -webkit-transform: none;
20
+ -ms-transform: none;
21
+ transform: none;
22
+ opacity: 1;
23
+ }
24
+
25
+ body.is-preload #header:after {
26
+ opacity: 0;
27
+ }
public/assets/js/breakpoints.min.js ADDED
@@ -0,0 +1,2 @@
 
 
 
1
+ /* breakpoints.js v1.0 | @ajlkn | MIT licensed */
2
+ var breakpoints=function(){"use strict";function e(e){t.init(e)}var t={list:null,media:{},events:[],init:function(e){t.list=e,window.addEventListener("resize",t.poll),window.addEventListener("orientationchange",t.poll),window.addEventListener("load",t.poll),window.addEventListener("fullscreenchange",t.poll)},active:function(e){var n,a,s,i,r,d,c;if(!(e in t.media)){if(">="==e.substr(0,2)?(a="gte",n=e.substr(2)):"<="==e.substr(0,2)?(a="lte",n=e.substr(2)):">"==e.substr(0,1)?(a="gt",n=e.substr(1)):"<"==e.substr(0,1)?(a="lt",n=e.substr(1)):"!"==e.substr(0,1)?(a="not",n=e.substr(1)):(a="eq",n=e),n&&n in t.list)if(i=t.list[n],Array.isArray(i)){if(r=parseInt(i[0]),d=parseInt(i[1]),isNaN(r)){if(isNaN(d))return;c=i[1].substr(String(d).length)}else c=i[0].substr(String(r).length);if(isNaN(r))switch(a){case"gte":s="screen";break;case"lte":s="screen and (max-width: "+d+c+")";break;case"gt":s="screen and (min-width: "+(d+1)+c+")";break;case"lt":s="screen and (max-width: -1px)";break;case"not":s="screen and (min-width: "+(d+1)+c+")";break;default:s="screen and (max-width: "+d+c+")"}else if(isNaN(d))switch(a){case"gte":s="screen and (min-width: "+r+c+")";break;case"lte":s="screen";break;case"gt":s="screen and (max-width: -1px)";break;case"lt":s="screen and (max-width: "+(r-1)+c+")";break;case"not":s="screen and (max-width: "+(r-1)+c+")";break;default:s="screen and (min-width: "+r+c+")"}else switch(a){case"gte":s="screen and (min-width: "+r+c+")";break;case"lte":s="screen and (max-width: "+d+c+")";break;case"gt":s="screen and (min-width: "+(d+1)+c+")";break;case"lt":s="screen and (max-width: "+(r-1)+c+")";break;case"not":s="screen and (max-width: "+(r-1)+c+"), screen and (min-width: "+(d+1)+c+")";break;default:s="screen and (min-width: "+r+c+") and (max-width: "+d+c+")"}}else s="("==i.charAt(0)?"screen and "+i:i;t.media[e]=!!s&&s}return t.media[e]!==!1&&window.matchMedia(t.media[e]).matches},on:function(e,n){t.events.push({query:e,handler:n,state:!1}),t.active(e)&&n()},poll:function(){var e,n;for(e=0;e<t.events.length;e++)n=t.events[e],t.active(n.query)?n.state||(n.state=!0,n.handler()):n.state&&(n.state=!1)}};return e._=t,e.on=function(e,n){t.on(e,n)},e.active=function(e){return t.active(e)},e}();!function(e,t){"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?module.exports=t():e.breakpoints=t()}(this,function(){return breakpoints});
public/assets/js/browser.min.js ADDED
@@ -0,0 +1,2 @@
 
 
 
1
+ /* browser.js v1.0.1 | @ajlkn | MIT licensed */
2
+ var browser=function(){"use strict";var t={name:null,version:null,os:null,osVersion:null,touch:null,mobile:null,_canUse:null,canUse:function(e){t._canUse||(t._canUse=document.createElement("div"));var n=t._canUse.style,r=e.charAt(0).toUpperCase()+e.slice(1);return e in n||"Moz"+r in n||"Webkit"+r in n||"O"+r in n||"ms"+r in n},init:function(){for(var e=navigator.userAgent,n="other",r=0,i=[["firefox",/Firefox\/([0-9\.]+)/],["bb",/BlackBerry.+Version\/([0-9\.]+)/],["bb",/BB[0-9]+.+Version\/([0-9\.]+)/],["opera",/OPR\/([0-9\.]+)/],["opera",/Opera\/([0-9\.]+)/],["edge",/Edge\/([0-9\.]+)/],["safari",/Version\/([0-9\.]+).+Safari/],["chrome",/Chrome\/([0-9\.]+)/],["ie",/MSIE ([0-9]+)/],["ie",/Trident\/.+rv:([0-9]+)/]],o=0;o<i.length;o++)if(e.match(i[o][1])){n=i[o][0],r=parseFloat(RegExp.$1);break}for(t.name=n,t.version=r,n="other",i=[["ios",/([0-9_]+) like Mac OS X/,function(e){return e.replace("_",".").replace("_","")}],["ios",/CPU like Mac OS X/,function(e){return 0}],["wp",/Windows Phone ([0-9\.]+)/,null],["android",/Android ([0-9\.]+)/,null],["mac",/Macintosh.+Mac OS X ([0-9_]+)/,function(e){return e.replace("_",".").replace("_","")}],["windows",/Windows NT ([0-9\.]+)/,null],["bb",/BlackBerry.+Version\/([0-9\.]+)/,null],["bb",/BB[0-9]+.+Version\/([0-9\.]+)/,null],["linux",/Linux/,null],["bsd",/BSD/,null],["unix",/X11/,null]],o=r=0;o<i.length;o++)if(e.match(i[o][1])){n=i[o][0],r=parseFloat(i[o][2]?i[o][2](RegExp.$1):RegExp.$1);break}"mac"==n&&"ontouchstart"in window&&(1024==screen.width&&1366==screen.height||834==screen.width&&1112==screen.height||810==screen.width&&1080==screen.height||768==screen.width&&1024==screen.height)&&(n="ios"),t.os=n,t.osVersion=r,t.touch="wp"==t.os?0<navigator.msMaxTouchPoints:!!("ontouchstart"in window),t.mobile="wp"==t.os||"android"==t.os||"ios"==t.os||"bb"==t.os}};return t.init(),t}();!function(e,n){"function"==typeof define&&define.amd?define([],n):"object"==typeof exports?module.exports=n():e.browser=n()}(this,function(){return browser});
public/assets/js/jquery.min.js ADDED
@@ -0,0 +1,2 @@
 
 
 
1
+ /*! jQuery v3.6.0 | (c) OpenJS Foundation and other contributors | jquery.org/license */
2
+ !function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.6.0",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0<t&&t-1 in e)}S.fn=S.prototype={jquery:f,constructor:S,length:0,toArray:function(){return s.call(this)},get:function(e){return null==e?s.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=S.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return S.each(this,e)},map:function(n){return this.pushStack(S.map(this,function(e,t){return n.call(e,t,e)}))},slice:function(){return this.pushStack(s.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},even:function(){return this.pushStack(S.grep(this,function(e,t){return(t+1)%2}))},odd:function(){return this.pushStack(S.grep(this,function(e,t){return t%2}))},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(0<=n&&n<t?[this[n]]:[])},end:function(){return this.prevObject||this.constructor()},push:u,sort:t.sort,splice:t.splice},S.extend=S.fn.extend=function(){var e,t,n,r,i,o,a=arguments[0]||{},s=1,u=arguments.length,l=!1;for("boolean"==typeof a&&(l=a,a=arguments[s]||{},s++),"object"==typeof a||m(a)||(a={}),s===u&&(a=this,s--);s<u;s++)if(null!=(e=arguments[s]))for(t in e)r=e[t],"__proto__"!==t&&a!==r&&(l&&r&&(S.isPlainObject(r)||(i=Array.isArray(r)))?(n=a[t],o=i&&!Array.isArray(n)?[]:i||S.isPlainObject(n)?n:{},i=!1,a[t]=S.extend(l,o,r)):void 0!==r&&(a[t]=r));return a},S.extend({expando:"jQuery"+(f+Math.random()).replace(/\D/g,""),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isPlainObject:function(e){var t,n;return!(!e||"[object Object]"!==o.call(e))&&(!(t=r(e))||"function"==typeof(n=v.call(t,"constructor")&&t.constructor)&&a.call(n)===l)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},globalEval:function(e,t,n){b(e,{nonce:t&&t.nonce},n)},each:function(e,t){var n,r=0;if(p(e)){for(n=e.length;r<n;r++)if(!1===t.call(e[r],r,e[r]))break}else for(r in e)if(!1===t.call(e[r],r,e[r]))break;return e},makeArray:function(e,t){var n=t||[];return null!=e&&(p(Object(e))?S.merge(n,"string"==typeof e?[e]:e):u.call(n,e)),n},inArray:function(e,t,n){return null==t?-1:i.call(t,e,n)},merge:function(e,t){for(var n=+t.length,r=0,i=e.length;r<n;r++)e[i++]=t[r];return e.length=i,e},grep:function(e,t,n){for(var r=[],i=0,o=e.length,a=!n;i<o;i++)!t(e[i],i)!==a&&r.push(e[i]);return r},map:function(e,t,n){var r,i,o=0,a=[];if(p(e))for(r=e.length;o<r;o++)null!=(i=t(e[o],o,n))&&a.push(i);else for(o in e)null!=(i=t(e[o],o,n))&&a.push(i);return g(a)},guid:1,support:y}),"function"==typeof Symbol&&(S.fn[Symbol.iterator]=t[Symbol.iterator]),S.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(e,t){n["[object "+t+"]"]=t.toLowerCase()});var d=function(n){var e,d,b,o,i,h,f,g,w,u,l,T,C,a,E,v,s,c,y,S="sizzle"+1*new Date,p=n.document,k=0,r=0,m=ue(),x=ue(),A=ue(),N=ue(),j=function(e,t){return e===t&&(l=!0),0},D={}.hasOwnProperty,t=[],q=t.pop,L=t.push,H=t.push,O=t.slice,P=function(e,t){for(var n=0,r=e.length;n<r;n++)if(e[n]===t)return n;return-1},R="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",M="[\\x20\\t\\r\\n\\f]",I="(?:\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\[^\\r\\n\\f]|[\\w-]|[^\0-\\x7f])+",W="\\["+M+"*("+I+")(?:"+M+"*([*^$|!~]?=)"+M+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+I+"))|)"+M+"*\\]",F=":("+I+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+W+")*)|.*)\\)|)",B=new RegExp(M+"+","g"),$=new RegExp("^"+M+"+|((?:^|[^\\\\])(?:\\\\.)*)"+M+"+$","g"),_=new RegExp("^"+M+"*,"+M+"*"),z=new RegExp("^"+M+"*([>+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="<a id='"+S+"'></a><select id='"+S+"-\r\\' msallowcapture=''><option selected=''></option></select>",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0<se(t,C,null,[e]).length},se.contains=function(e,t){return(e.ownerDocument||e)!=C&&T(e),y(e,t)},se.attr=function(e,t){(e.ownerDocument||e)!=C&&T(e);var n=b.attrHandle[t.toLowerCase()],r=n&&D.call(b.attrHandle,t.toLowerCase())?n(e,t,!E):void 0;return void 0!==r?r:d.attributes||!E?e.getAttribute(t):(r=e.getAttributeNode(t))&&r.specified?r.value:null},se.escape=function(e){return(e+"").replace(re,ie)},se.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},se.uniqueSort=function(e){var t,n=[],r=0,i=0;if(l=!d.detectDuplicates,u=!d.sortStable&&e.slice(0),e.sort(j),l){while(t=e[i++])t===e[i]&&(r=n.push(i));while(r--)e.splice(n[r],1)}return u=null,e},o=se.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=o(e)}else if(3===i||4===i)return e.nodeValue}else while(t=e[r++])n+=o(t);return n},(b=se.selectors={cacheLength:50,createPseudo:le,match:G,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1<t.indexOf(i):"$="===r?i&&t.slice(-i.length)===i:"~="===r?-1<(" "+t.replace(B," ")+" ").indexOf(i):"|="===r&&(t===i||t.slice(0,i.length+1)===i+"-"))}},CHILD:function(h,e,t,g,v){var y="nth"!==h.slice(0,3),m="last"!==h.slice(-4),x="of-type"===e;return 1===g&&0===v?function(e){return!!e.parentNode}:function(e,t,n){var r,i,o,a,s,u,l=y!==m?"nextSibling":"previousSibling",c=e.parentNode,f=x&&e.nodeName.toLowerCase(),p=!n&&!x,d=!1;if(c){if(y){while(l){a=e;while(a=a[l])if(x?a.nodeName.toLowerCase()===f:1===a.nodeType)return!1;u=l="only"===h&&!u&&"nextSibling"}return!0}if(u=[m?c.firstChild:c.lastChild],m&&p){d=(s=(r=(i=(o=(a=c)[S]||(a[S]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]||[])[0]===k&&r[1])&&r[2],a=s&&c.childNodes[s];while(a=++s&&a&&a[l]||(d=s=0)||u.pop())if(1===a.nodeType&&++d&&a===e){i[h]=[k,s,d];break}}else if(p&&(d=s=(r=(i=(o=(a=e)[S]||(a[S]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]||[])[0]===k&&r[1]),!1===d)while(a=++s&&a&&a[l]||(d=s=0)||u.pop())if((x?a.nodeName.toLowerCase()===f:1===a.nodeType)&&++d&&(p&&((i=(o=a[S]||(a[S]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]=[k,d]),a===e))break;return(d-=v)===g||d%g==0&&0<=d/g}}},PSEUDO:function(e,o){var t,a=b.pseudos[e]||b.setFilters[e.toLowerCase()]||se.error("unsupported pseudo: "+e);return a[S]?a(o):1<a.length?(t=[e,e,"",o],b.setFilters.hasOwnProperty(e.toLowerCase())?le(function(e,t){var n,r=a(e,o),i=r.length;while(i--)e[n=P(e,r[i])]=!(t[n]=r[i])}):function(e){return a(e,0,t)}):a}},pseudos:{not:le(function(e){var r=[],i=[],s=f(e.replace($,"$1"));return s[S]?le(function(e,t,n,r){var i,o=s(e,null,r,[]),a=e.length;while(a--)(i=o[a])&&(e[a]=!(t[a]=i))}):function(e,t,n){return r[0]=e,s(r,null,n,i),r[0]=null,!i.pop()}}),has:le(function(t){return function(e){return 0<se(t,e).length}}),contains:le(function(t){return t=t.replace(te,ne),function(e){return-1<(e.textContent||o(e)).indexOf(t)}}),lang:le(function(n){return V.test(n||"")||se.error("unsupported lang: "+n),n=n.replace(te,ne).toLowerCase(),function(e){var t;do{if(t=E?e.lang:e.getAttribute("xml:lang")||e.getAttribute("lang"))return(t=t.toLowerCase())===n||0===t.indexOf(n+"-")}while((e=e.parentNode)&&1===e.nodeType);return!1}}),target:function(e){var t=n.location&&n.location.hash;return t&&t.slice(1)===e.id},root:function(e){return e===a},focus:function(e){return e===C.activeElement&&(!C.hasFocus||C.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:ge(!1),disabled:ge(!0),checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!b.pseudos.empty(e)},header:function(e){return J.test(e.nodeName)},input:function(e){return Q.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:ve(function(){return[0]}),last:ve(function(e,t){return[t-1]}),eq:ve(function(e,t,n){return[n<0?n+t:n]}),even:ve(function(e,t){for(var n=0;n<t;n+=2)e.push(n);return e}),odd:ve(function(e,t){for(var n=1;n<t;n+=2)e.push(n);return e}),lt:ve(function(e,t,n){for(var r=n<0?n+t:t<n?t:n;0<=--r;)e.push(r);return e}),gt:ve(function(e,t,n){for(var r=n<0?n+t:n;++r<t;)e.push(r);return e})}}).pseudos.nth=b.pseudos.eq,{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})b.pseudos[e]=de(e);for(e in{submit:!0,reset:!0})b.pseudos[e]=he(e);function me(){}function xe(e){for(var t=0,n=e.length,r="";t<n;t++)r+=e[t].value;return r}function be(s,e,t){var u=e.dir,l=e.next,c=l||u,f=t&&"parentNode"===c,p=r++;return e.first?function(e,t,n){while(e=e[u])if(1===e.nodeType||f)return s(e,t,n);return!1}:function(e,t,n){var r,i,o,a=[k,p];if(n){while(e=e[u])if((1===e.nodeType||f)&&s(e,t,n))return!0}else while(e=e[u])if(1===e.nodeType||f)if(i=(o=e[S]||(e[S]={}))[e.uniqueID]||(o[e.uniqueID]={}),l&&l===e.nodeName.toLowerCase())e=e[u]||e;else{if((r=i[c])&&r[0]===k&&r[1]===p)return a[2]=r[2];if((i[c]=a)[2]=s(e,t,n))return!0}return!1}}function we(i){return 1<i.length?function(e,t,n){var r=i.length;while(r--)if(!i[r](e,t,n))return!1;return!0}:i[0]}function Te(e,t,n,r,i){for(var o,a=[],s=0,u=e.length,l=null!=t;s<u;s++)(o=e[s])&&(n&&!n(o,r,i)||(a.push(o),l&&t.push(s)));return a}function Ce(d,h,g,v,y,e){return v&&!v[S]&&(v=Ce(v)),y&&!y[S]&&(y=Ce(y,e)),le(function(e,t,n,r){var i,o,a,s=[],u=[],l=t.length,c=e||function(e,t,n){for(var r=0,i=t.length;r<i;r++)se(e,t[r],n);return n}(h||"*",n.nodeType?[n]:n,[]),f=!d||!e&&h?c:Te(c,s,d,n,r),p=g?y||(e?d:l||v)?[]:t:f;if(g&&g(f,p,n,r),v){i=Te(p,u),v(i,[],n,r),o=i.length;while(o--)(a=i[o])&&(p[u[o]]=!(f[u[o]]=a))}if(e){if(y||d){if(y){i=[],o=p.length;while(o--)(a=p[o])&&i.push(f[o]=a);y(null,p=[],i,r)}o=p.length;while(o--)(a=p[o])&&-1<(i=y?P(e,a):s[o])&&(e[i]=!(t[i]=a))}}else p=Te(p===t?p.splice(l,p.length):p),y?y(null,t,p,r):H.apply(t,p)})}function Ee(e){for(var i,t,n,r=e.length,o=b.relative[e[0].type],a=o||b.relative[" "],s=o?1:0,u=be(function(e){return e===i},a,!0),l=be(function(e){return-1<P(i,e)},a,!0),c=[function(e,t,n){var r=!o&&(n||t!==w)||((i=t).nodeType?u(e,t,n):l(e,t,n));return i=null,r}];s<r;s++)if(t=b.relative[e[s].type])c=[be(we(c),t)];else{if((t=b.filter[e[s].type].apply(null,e[s].matches))[S]){for(n=++s;n<r;n++)if(b.relative[e[n].type])break;return Ce(1<s&&we(c),1<s&&xe(e.slice(0,s-1).concat({value:" "===e[s-2].type?"*":""})).replace($,"$1"),t,s<n&&Ee(e.slice(s,n)),n<r&&Ee(e=e.slice(n)),n<r&&xe(e))}c.push(t)}return we(c)}return me.prototype=b.filters=b.pseudos,b.setFilters=new me,h=se.tokenize=function(e,t){var n,r,i,o,a,s,u,l=x[e+" "];if(l)return t?0:l.slice(0);a=e,s=[],u=b.preFilter;while(a){for(o in n&&!(r=_.exec(a))||(r&&(a=a.slice(r[0].length)||a),s.push(i=[])),n=!1,(r=z.exec(a))&&(n=r.shift(),i.push({value:n,type:r[0].replace($," ")}),a=a.slice(n.length)),b.filter)!(r=G[o].exec(a))||u[o]&&!(r=u[o](r))||(n=r.shift(),i.push({value:n,type:o,matches:r}),a=a.slice(n.length));if(!n)break}return t?a.length:a?se.error(e):x(e,s).slice(0)},f=se.compile=function(e,t){var n,v,y,m,x,r,i=[],o=[],a=A[e+" "];if(!a){t||(t=h(e)),n=t.length;while(n--)(a=Ee(t[n]))[S]?i.push(a):o.push(a);(a=A(e,(v=o,m=0<(y=i).length,x=0<v.length,r=function(e,t,n,r,i){var o,a,s,u=0,l="0",c=e&&[],f=[],p=w,d=e||x&&b.find.TAG("*",i),h=k+=null==p?1:Math.random()||.1,g=d.length;for(i&&(w=t==C||t||i);l!==g&&null!=(o=d[l]);l++){if(x&&o){a=0,t||o.ownerDocument==C||(T(o),n=!E);while(s=v[a++])if(s(o,t||C,n)){r.push(o);break}i&&(k=h)}m&&((o=!s&&o)&&u--,e&&c.push(o))}if(u+=l,m&&l!==u){a=0;while(s=y[a++])s(c,f,t,n);if(e){if(0<u)while(l--)c[l]||f[l]||(f[l]=q.call(r));f=Te(f)}H.apply(r,f),i&&!e&&0<f.length&&1<u+y.length&&se.uniqueSort(r)}return i&&(k=h,w=p),c},m?le(r):r))).selector=e}return a},g=se.select=function(e,t,n,r){var i,o,a,s,u,l="function"==typeof e&&e,c=!r&&h(e=l.selector||e);if(n=n||[],1===c.length){if(2<(o=c[0]=c[0].slice(0)).length&&"ID"===(a=o[0]).type&&9===t.nodeType&&E&&b.relative[o[1].type]){if(!(t=(b.find.ID(a.matches[0].replace(te,ne),t)||[])[0]))return n;l&&(t=t.parentNode),e=e.slice(o.shift().value.length)}i=G.needsContext.test(e)?0:o.length;while(i--){if(a=o[i],b.relative[s=a.type])break;if((u=b.find[s])&&(r=u(a.matches[0].replace(te,ne),ee.test(o[0].type)&&ye(t.parentNode)||t))){if(o.splice(i,1),!(e=r.length&&xe(o)))return H.apply(n,r),n;break}}}return(l||f(e,c))(r,t,!E,n,!t||ee.test(e)&&ye(t.parentNode)||t),n},d.sortStable=S.split("").sort(j).join("")===S,d.detectDuplicates=!!l,T(),d.sortDetached=ce(function(e){return 1&e.compareDocumentPosition(C.createElement("fieldset"))}),ce(function(e){return e.innerHTML="<a href='#'></a>","#"===e.firstChild.getAttribute("href")})||fe("type|href|height|width",function(e,t,n){if(!n)return e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),d.attributes&&ce(function(e){return e.innerHTML="<input/>",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||fe("value",function(e,t,n){if(!n&&"input"===e.nodeName.toLowerCase())return e.defaultValue}),ce(function(e){return null==e.getAttribute("disabled")})||fe(R,function(e,t,n){var r;if(!n)return!0===e[t]?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),se}(C);S.find=d,S.expr=d.selectors,S.expr[":"]=S.expr.pseudos,S.uniqueSort=S.unique=d.uniqueSort,S.text=d.getText,S.isXMLDoc=d.isXML,S.contains=d.contains,S.escapeSelector=d.escape;var h=function(e,t,n){var r=[],i=void 0!==n;while((e=e[t])&&9!==e.nodeType)if(1===e.nodeType){if(i&&S(e).is(n))break;r.push(e)}return r},T=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},k=S.expr.match.needsContext;function A(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}var N=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1<i.call(n,e)!==r}):S.filter(n,e,r)}S.filter=function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?S.find.matchesSelector(r,e)?[r]:[]:S.find.matches(e,S.grep(t,function(e){return 1===e.nodeType}))},S.fn.extend({find:function(e){var t,n,r=this.length,i=this;if("string"!=typeof e)return this.pushStack(S(e).filter(function(){for(t=0;t<r;t++)if(S.contains(i[t],this))return!0}));for(n=this.pushStack([]),t=0;t<r;t++)S.find(e,i[t],n);return 1<r?S.uniqueSort(n):n},filter:function(e){return this.pushStack(j(this,e||[],!1))},not:function(e){return this.pushStack(j(this,e||[],!0))},is:function(e){return!!j(this,"string"==typeof e&&k.test(e)?S(e):e||[],!1).length}});var D,q=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e<n;e++)if(S.contains(this,t[e]))return!0})},closest:function(e,t){var n,r=0,i=this.length,o=[],a="string"!=typeof e&&S(e);if(!k.test(e))for(;r<i;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(n.nodeType<11&&(a?-1<a.index(n):1===n.nodeType&&S.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(1<o.length?S.uniqueSort(o):o)},index:function(e){return e?"string"==typeof e?i.call(S(e),this[0]):i.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(S.uniqueSort(S.merge(this.get(),S(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),S.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return h(e,"parentNode")},parentsUntil:function(e,t,n){return h(e,"parentNode",n)},next:function(e){return O(e,"nextSibling")},prev:function(e){return O(e,"previousSibling")},nextAll:function(e){return h(e,"nextSibling")},prevAll:function(e){return h(e,"previousSibling")},nextUntil:function(e,t,n){return h(e,"nextSibling",n)},prevUntil:function(e,t,n){return h(e,"previousSibling",n)},siblings:function(e){return T((e.parentNode||{}).firstChild,e)},children:function(e){return T(e.firstChild)},contents:function(e){return null!=e.contentDocument&&r(e.contentDocument)?e.contentDocument:(A(e,"template")&&(e=e.content||e),S.merge([],e.childNodes))}},function(r,i){S.fn[r]=function(e,t){var n=S.map(this,i,e);return"Until"!==r.slice(-5)&&(t=e),t&&"string"==typeof t&&(n=S.filter(t,n)),1<this.length&&(H[r]||S.uniqueSort(n),L.test(r)&&n.reverse()),this.pushStack(n)}});var P=/[^\x20\t\r\n\f]+/g;function R(e){return e}function M(e){throw e}function I(e,t,n,r){var i;try{e&&m(i=e.promise)?i.call(e).done(t).fail(n):e&&m(i=e.then)?i.call(e,t,n):t.apply(void 0,[e].slice(r))}catch(e){n.apply(void 0,[e])}}S.Callbacks=function(r){var e,n;r="string"==typeof r?(e=r,n={},S.each(e.match(P)||[],function(e,t){n[t]=!0}),n):S.extend({},r);var i,t,o,a,s=[],u=[],l=-1,c=function(){for(a=a||r.once,o=i=!0;u.length;l=-1){t=u.shift();while(++l<s.length)!1===s[l].apply(t[0],t[1])&&r.stopOnFalse&&(l=s.length,t=!1)}r.memory||(t=!1),i=!1,a&&(s=t?[]:"")},f={add:function(){return s&&(t&&!i&&(l=s.length-1,u.push(t)),function n(e){S.each(e,function(e,t){m(t)?r.unique&&f.has(t)||s.push(t):t&&t.length&&"string"!==w(t)&&n(t)})}(arguments),t&&!i&&c()),this},remove:function(){return S.each(arguments,function(e,t){var n;while(-1<(n=S.inArray(t,s,n)))s.splice(n,1),n<=l&&l--}),this},has:function(e){return e?-1<S.inArray(e,s):0<s.length},empty:function(){return s&&(s=[]),this},disable:function(){return a=u=[],s=t="",this},disabled:function(){return!s},lock:function(){return a=u=[],t||i||(s=t=""),this},locked:function(){return!!a},fireWith:function(e,t){return a||(t=[e,(t=t||[]).slice?t.slice():t],u.push(t),i||c()),this},fire:function(){return f.fireWith(this,arguments),this},fired:function(){return!!o}};return f},S.extend({Deferred:function(e){var o=[["notify","progress",S.Callbacks("memory"),S.Callbacks("memory"),2],["resolve","done",S.Callbacks("once memory"),S.Callbacks("once memory"),0,"resolved"],["reject","fail",S.Callbacks("once memory"),S.Callbacks("once memory"),1,"rejected"]],i="pending",a={state:function(){return i},always:function(){return s.done(arguments).fail(arguments),this},"catch":function(e){return a.then(null,e)},pipe:function(){var i=arguments;return S.Deferred(function(r){S.each(o,function(e,t){var n=m(i[t[4]])&&i[t[4]];s[t[1]](function(){var e=n&&n.apply(this,arguments);e&&m(e.promise)?e.promise().progress(r.notify).done(r.resolve).fail(r.reject):r[t[0]+"With"](this,n?[e]:arguments)})}),i=null}).promise()},then:function(t,n,r){var u=0;function l(i,o,a,s){return function(){var n=this,r=arguments,e=function(){var e,t;if(!(i<u)){if((e=a.apply(n,r))===o.promise())throw new TypeError("Thenable self-resolution");t=e&&("object"==typeof e||"function"==typeof e)&&e.then,m(t)?s?t.call(e,l(u,o,R,s),l(u,o,M,s)):(u++,t.call(e,l(u,o,R,s),l(u,o,M,s),l(u,o,R,o.notifyWith))):(a!==R&&(n=void 0,r=[e]),(s||o.resolveWith)(n,r))}},t=s?e:function(){try{e()}catch(e){S.Deferred.exceptionHook&&S.Deferred.exceptionHook(e,t.stackTrace),u<=i+1&&(a!==M&&(n=void 0,r=[e]),o.rejectWith(n,r))}};i?t():(S.Deferred.getStackHook&&(t.stackTrace=S.Deferred.getStackHook()),C.setTimeout(t))}}return S.Deferred(function(e){o[0][3].add(l(0,e,m(r)?r:R,e.notifyWith)),o[1][3].add(l(0,e,m(t)?t:R)),o[2][3].add(l(0,e,m(n)?n:M))}).promise()},promise:function(e){return null!=e?S.extend(e,a):a}},s={};return S.each(o,function(e,t){var n=t[2],r=t[5];a[t[1]]=n.add,r&&n.add(function(){i=r},o[3-e][2].disable,o[3-e][3].disable,o[0][2].lock,o[0][3].lock),n.add(t[3].fire),s[t[0]]=function(){return s[t[0]+"With"](this===s?void 0:this,arguments),this},s[t[0]+"With"]=n.fireWith}),a.promise(s),e&&e.call(s,s),s},when:function(e){var n=arguments.length,t=n,r=Array(t),i=s.call(arguments),o=S.Deferred(),a=function(t){return function(e){r[t]=this,i[t]=1<arguments.length?s.call(arguments):e,--n||o.resolveWith(r,i)}};if(n<=1&&(I(e,o.done(a(t)).resolve,o.reject,!n),"pending"===o.state()||m(i[t]&&i[t].then)))return o.then();while(t--)I(i[t],a(t),o.reject);return o.promise()}});var W=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;S.Deferred.exceptionHook=function(e,t){C.console&&C.console.warn&&e&&W.test(e.name)&&C.console.warn("jQuery.Deferred exception: "+e.message,e.stack,t)},S.readyException=function(e){C.setTimeout(function(){throw e})};var F=S.Deferred();function B(){E.removeEventListener("DOMContentLoaded",B),C.removeEventListener("load",B),S.ready()}S.fn.ready=function(e){return F.then(e)["catch"](function(e){S.readyException(e)}),this},S.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--S.readyWait:S.isReady)||(S.isReady=!0)!==e&&0<--S.readyWait||F.resolveWith(E,[S])}}),S.ready.then=F.then,"complete"===E.readyState||"loading"!==E.readyState&&!E.documentElement.doScroll?C.setTimeout(S.ready):(E.addEventListener("DOMContentLoaded",B),C.addEventListener("load",B));var $=function(e,t,n,r,i,o,a){var s=0,u=e.length,l=null==n;if("object"===w(n))for(s in i=!0,n)$(e,t,s,n[s],!0,o,a);else if(void 0!==r&&(i=!0,m(r)||(a=!0),l&&(a?(t.call(e,r),t=null):(l=t,t=function(e,t,n){return l.call(S(e),n)})),t))for(;s<u;s++)t(e[s],n,a?r:r.call(e[s],s,t(e[s],n)));return i?e:l?t.call(e):u?t(e[0],n):o},_=/^-ms-/,z=/-([a-z])/g;function U(e,t){return t.toUpperCase()}function X(e){return e.replace(_,"ms-").replace(z,U)}var V=function(e){return 1===e.nodeType||9===e.nodeType||!+e.nodeType};function G(){this.expando=S.expando+G.uid++}G.uid=1,G.prototype={cache:function(e){var t=e[this.expando];return t||(t={},V(e)&&(e.nodeType?e[this.expando]=t:Object.defineProperty(e,this.expando,{value:t,configurable:!0}))),t},set:function(e,t,n){var r,i=this.cache(e);if("string"==typeof t)i[X(t)]=n;else for(r in t)i[X(r)]=t[r];return i},get:function(e,t){return void 0===t?this.cache(e):e[this.expando]&&e[this.expando][X(t)]},access:function(e,t,n){return void 0===t||t&&"string"==typeof t&&void 0===n?this.get(e,t):(this.set(e,t,n),void 0!==n?n:t)},remove:function(e,t){var n,r=e[this.expando];if(void 0!==r){if(void 0!==t){n=(t=Array.isArray(t)?t.map(X):(t=X(t))in r?[t]:t.match(P)||[]).length;while(n--)delete r[t[n]]}(void 0===t||S.isEmptyObject(r))&&(e.nodeType?e[this.expando]=void 0:delete e[this.expando])}},hasData:function(e){var t=e[this.expando];return void 0!==t&&!S.isEmptyObject(t)}};var Y=new G,Q=new G,J=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,K=/[A-Z]/g;function Z(e,t,n){var r,i;if(void 0===n&&1===e.nodeType)if(r="data-"+t.replace(K,"-$&").toLowerCase(),"string"==typeof(n=e.getAttribute(r))){try{n="true"===(i=n)||"false"!==i&&("null"===i?null:i===+i+""?+i:J.test(i)?JSON.parse(i):i)}catch(e){}Q.set(e,t,n)}else n=void 0;return n}S.extend({hasData:function(e){return Q.hasData(e)||Y.hasData(e)},data:function(e,t,n){return Q.access(e,t,n)},removeData:function(e,t){Q.remove(e,t)},_data:function(e,t,n){return Y.access(e,t,n)},_removeData:function(e,t){Y.remove(e,t)}}),S.fn.extend({data:function(n,e){var t,r,i,o=this[0],a=o&&o.attributes;if(void 0===n){if(this.length&&(i=Q.get(o),1===o.nodeType&&!Y.get(o,"hasDataAttrs"))){t=a.length;while(t--)a[t]&&0===(r=a[t].name).indexOf("data-")&&(r=X(r.slice(5)),Z(o,r,i[r]));Y.set(o,"hasDataAttrs",!0)}return i}return"object"==typeof n?this.each(function(){Q.set(this,n)}):$(this,function(e){var t;if(o&&void 0===e)return void 0!==(t=Q.get(o,n))?t:void 0!==(t=Z(o,n))?t:void 0;this.each(function(){Q.set(this,n,e)})},null,e,1<arguments.length,null,!0)},removeData:function(e){return this.each(function(){Q.remove(this,e)})}}),S.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=Y.get(e,t),n&&(!r||Array.isArray(n)?r=Y.access(e,t,S.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=S.queue(e,t),r=n.length,i=n.shift(),o=S._queueHooks(e,t);"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,function(){S.dequeue(e,t)},o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return Y.get(e,n)||Y.access(e,n,{empty:S.Callbacks("once memory").add(function(){Y.remove(e,[t+"queue",n])})})}}),S.fn.extend({queue:function(t,n){var e=2;return"string"!=typeof t&&(n=t,t="fx",e--),arguments.length<e?S.queue(this[0],t):void 0===n?this:this.each(function(){var e=S.queue(this,t,n);S._queueHooks(this,t),"fx"===t&&"inprogress"!==e[0]&&S.dequeue(this,t)})},dequeue:function(e){return this.each(function(){S.dequeue(this,e)})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,t){var n,r=1,i=S.Deferred(),o=this,a=this.length,s=function(){--r||i.resolveWith(o,[o])};"string"!=typeof e&&(t=e,e=void 0),e=e||"fx";while(a--)(n=Y.get(o[a],e+"queueHooks"))&&n.empty&&(r++,n.empty.add(s));return s(),i.promise(t)}});var ee=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,te=new RegExp("^(?:([+-])=|)("+ee+")([a-z%]*)$","i"),ne=["Top","Right","Bottom","Left"],re=E.documentElement,ie=function(e){return S.contains(e.ownerDocument,e)},oe={composed:!0};re.getRootNode&&(ie=function(e){return S.contains(e.ownerDocument,e)||e.getRootNode(oe)===e.ownerDocument});var ae=function(e,t){return"none"===(e=t||e).style.display||""===e.style.display&&ie(e)&&"none"===S.css(e,"display")};function se(e,t,n,r){var i,o,a=20,s=r?function(){return r.cur()}:function(){return S.css(e,t,"")},u=s(),l=n&&n[3]||(S.cssNumber[t]?"":"px"),c=e.nodeType&&(S.cssNumber[t]||"px"!==l&&+u)&&te.exec(S.css(e,t));if(c&&c[3]!==l){u/=2,l=l||c[3],c=+u||1;while(a--)S.style(e,t,c+l),(1-o)*(1-(o=s()/u||.5))<=0&&(a=0),c/=o;c*=2,S.style(e,t,c+l),n=n||[]}return n&&(c=+c||+u||0,i=n[1]?c+(n[1]+1)*n[2]:+n[2],r&&(r.unit=l,r.start=c,r.end=i)),i}var ue={};function le(e,t){for(var n,r,i,o,a,s,u,l=[],c=0,f=e.length;c<f;c++)(r=e[c]).style&&(n=r.style.display,t?("none"===n&&(l[c]=Y.get(r,"display")||null,l[c]||(r.style.display="")),""===r.style.display&&ae(r)&&(l[c]=(u=a=o=void 0,a=(i=r).ownerDocument,s=i.nodeName,(u=ue[s])||(o=a.body.appendChild(a.createElement(s)),u=S.css(o,"display"),o.parentNode.removeChild(o),"none"===u&&(u="block"),ue[s]=u)))):"none"!==n&&(l[c]="none",Y.set(r,"display",n)));for(c=0;c<f;c++)null!=l[c]&&(e[c].style.display=l[c]);return e}S.fn.extend({show:function(){return le(this,!0)},hide:function(){return le(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){ae(this)?S(this).show():S(this).hide()})}});var ce,fe,pe=/^(?:checkbox|radio)$/i,de=/<([a-z][^\/\0>\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="<textarea>x</textarea>",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="<option></option>",y.option=!!ce.lastChild;var ge={thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n<r;n++)Y.set(e[n],"globalEval",!t||Y.get(t[n],"globalEval"))}ge.tbody=ge.tfoot=ge.colgroup=ge.caption=ge.thead,ge.th=ge.td,y.option||(ge.optgroup=ge.option=[1,"<select multiple='multiple'>","</select>"]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d<h;d++)if((o=e[d])||0===o)if("object"===w(o))S.merge(p,o.nodeType?[o]:o);else if(me.test(o)){a=a||f.appendChild(t.createElement("div")),s=(de.exec(o)||["",""])[1].toLowerCase(),u=ge[s]||ge._default,a.innerHTML=u[1]+S.htmlPrefilter(o)+u[2],c=u[0];while(c--)a=a.lastChild;S.merge(p,a.childNodes),(a=f.firstChild).textContent=""}else p.push(t.createTextNode(o));f.textContent="",d=0;while(o=p[d++])if(r&&-1<S.inArray(o,r))i&&i.push(o);else if(l=ie(o),a=ve(f.appendChild(o),"script"),l&&ye(a),n){c=0;while(o=a[c++])he.test(o.type||"")&&n.push(o)}return f}var be=/^([^.]*)(?:\.(.+)|)/;function we(){return!0}function Te(){return!1}function Ce(e,t){return e===function(){try{return E.activeElement}catch(e){}}()==("focus"===t)}function Ee(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)Ee(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Te;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return S().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=S.guid++)),e.each(function(){S.event.add(this,t,i,r,n)})}function Se(e,i,o){o?(Y.set(e,i,!1),S.event.add(e,i,{namespace:!1,handler:function(e){var t,n,r=Y.get(this,i);if(1&e.isTrigger&&this[i]){if(r.length)(S.event.special[i]||{}).delegateType&&e.stopPropagation();else if(r=s.call(arguments),Y.set(this,i,r),t=o(this,i),this[i](),r!==(n=Y.get(this,i))||t?Y.set(this,i,!1):n={},r!==n)return e.stopImmediatePropagation(),e.preventDefault(),n&&n.value}else r.length&&(Y.set(this,i,{value:S.event.trigger(S.extend(r[0],S.Event.prototype),r.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===Y.get(e,i)&&S.event.add(e,i,we)}S.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Y.get(t);if(V(t)){n.handler&&(n=(o=n).handler,i=o.selector),i&&S.find.matchesSelector(re,i),n.guid||(n.guid=S.guid++),(u=v.events)||(u=v.events=Object.create(null)),(a=v.handle)||(a=v.handle=function(e){return"undefined"!=typeof S&&S.event.triggered!==e.type?S.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(P)||[""]).length;while(l--)d=g=(s=be.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=S.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=S.event.special[d]||{},c=S.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&S.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(d,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),S.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Y.hasData(e)&&Y.get(e);if(v&&(u=v.events)){l=(t=(t||"").match(P)||[""]).length;while(l--)if(d=g=(s=be.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d){f=S.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||S.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)S.event.remove(e,d+t[l],n,r,!0);S.isEmptyObject(u)&&Y.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=new Array(arguments.length),u=S.event.fix(e),l=(Y.get(this,"events")||Object.create(null))[u.type]||[],c=S.event.special[u.type]||{};for(s[0]=u,t=1;t<arguments.length;t++)s[t]=arguments[t];if(u.delegateTarget=this,!c.preDispatch||!1!==c.preDispatch.call(this,u)){a=S.event.handlers.call(this,u,l),t=0;while((i=a[t++])&&!u.isPropagationStopped()){u.currentTarget=i.elem,n=0;while((o=i.handlers[n++])&&!u.isImmediatePropagationStopped())u.rnamespace&&!1!==o.namespace&&!u.rnamespace.test(o.namespace)||(u.handleObj=o,u.data=o.data,void 0!==(r=((S.event.special[o.origType]||{}).handle||o.handler).apply(i.elem,s))&&!1===(u.result=r)&&(u.preventDefault(),u.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,u),u.result}},handlers:function(e,t){var n,r,i,o,a,s=[],u=t.delegateCount,l=e.target;if(u&&l.nodeType&&!("click"===e.type&&1<=e.button))for(;l!==this;l=l.parentNode||this)if(1===l.nodeType&&("click"!==e.type||!0!==l.disabled)){for(o=[],a={},n=0;n<u;n++)void 0===a[i=(r=t[n]).selector+" "]&&(a[i]=r.needsContext?-1<S(i,this).index(l):S.find(i,this,null,[l]).length),a[i]&&o.push(r);o.length&&s.push({elem:l,handlers:o})}return l=this,u<t.length&&s.push({elem:l,handlers:t.slice(u)}),s},addProp:function(t,e){Object.defineProperty(S.Event.prototype,t,{enumerable:!0,configurable:!0,get:m(e)?function(){if(this.originalEvent)return e(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[t]},set:function(e){Object.defineProperty(this,t,{enumerable:!0,configurable:!0,writable:!0,value:e})}})},fix:function(e){return e[S.expando]?e:new S.Event(e)},special:{load:{noBubble:!0},click:{setup:function(e){var t=this||e;return pe.test(t.type)&&t.click&&A(t,"input")&&Se(t,"click",we),!1},trigger:function(e){var t=this||e;return pe.test(t.type)&&t.click&&A(t,"input")&&Se(t,"click"),!0},_default:function(e){var t=e.target;return pe.test(t.type)&&t.click&&A(t,"input")&&Y.get(t,"click")||A(t,"a")}},beforeunload:{postDispatch:function(e){void 0!==e.result&&e.originalEvent&&(e.originalEvent.returnValue=e.result)}}}},S.removeEvent=function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n)},S.Event=function(e,t){if(!(this instanceof S.Event))return new S.Event(e,t);e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||void 0===e.defaultPrevented&&!1===e.returnValue?we:Te,this.target=e.target&&3===e.target.nodeType?e.target.parentNode:e.target,this.currentTarget=e.currentTarget,this.relatedTarget=e.relatedTarget):this.type=e,t&&S.extend(this,t),this.timeStamp=e&&e.timeStamp||Date.now(),this[S.expando]=!0},S.Event.prototype={constructor:S.Event,isDefaultPrevented:Te,isPropagationStopped:Te,isImmediatePropagationStopped:Te,isSimulated:!1,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=we,e&&!this.isSimulated&&e.preventDefault()},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=we,e&&!this.isSimulated&&e.stopPropagation()},stopImmediatePropagation:function(){var e=this.originalEvent;this.isImmediatePropagationStopped=we,e&&!this.isSimulated&&e.stopImmediatePropagation(),this.stopPropagation()}},S.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,"char":!0,code:!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:!0},S.event.addProp),S.each({focus:"focusin",blur:"focusout"},function(e,t){S.event.special[e]={setup:function(){return Se(this,e,Ce),!1},trigger:function(){return Se(this,e),!0},_default:function(){return!0},delegateType:t}}),S.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(e,i){S.event.special[e]={delegateType:i,bindType:i,handle:function(e){var t,n=e.relatedTarget,r=e.handleObj;return n&&(n===this||S.contains(this,n))||(e.type=r.origType,t=r.handler.apply(this,arguments),e.type=i),t}}}),S.fn.extend({on:function(e,t,n,r){return Ee(this,e,t,n,r)},one:function(e,t,n,r){return Ee(this,e,t,n,r,1)},off:function(e,t,n){var r,i;if(e&&e.preventDefault&&e.handleObj)return r=e.handleObj,S(e.delegateTarget).off(r.namespace?r.origType+"."+r.namespace:r.origType,r.selector,r.handler),this;if("object"==typeof e){for(i in e)this.off(i,t,e[i]);return this}return!1!==t&&"function"!=typeof t||(n=t,t=void 0),!1===n&&(n=Te),this.each(function(){S.event.remove(this,e,n,t)})}});var ke=/<script|<style|<link/i,Ae=/checked\s*(?:[^=]|=\s*.checked.)/i,Ne=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n<r;n++)S.event.add(t,i,s[i][n]);Q.hasData(e)&&(o=Q.access(e),a=S.extend({},o),Q.set(t,a))}}function He(n,r,i,o){r=g(r);var e,t,a,s,u,l,c=0,f=n.length,p=f-1,d=r[0],h=m(d);if(h||1<f&&"string"==typeof d&&!y.checkClone&&Ae.test(d))return n.each(function(e){var t=n.eq(e);h&&(r[0]=d.call(this,e,t.html())),He(t,r,i,o)});if(f&&(t=(e=xe(r,n[0].ownerDocument,!1,n,o)).firstChild,1===e.childNodes.length&&(e=t),t||o)){for(s=(a=S.map(ve(e,"script"),De)).length;c<f;c++)u=e,c!==p&&(u=S.clone(u,!0,!0),s&&S.merge(a,ve(u,"script"))),i.call(n[c],u,c);if(s)for(l=a[a.length-1].ownerDocument,S.map(a,qe),c=0;c<s;c++)u=a[c],he.test(u.type||"")&&!Y.access(u,"globalEval")&&S.contains(l,u)&&(u.src&&"module"!==(u.type||"").toLowerCase()?S._evalUrl&&!u.noModule&&S._evalUrl(u.src,{nonce:u.nonce||u.getAttribute("nonce")},l):b(u.textContent.replace(Ne,""),u,l))}return n}function Oe(e,t,n){for(var r,i=t?S.filter(t,e):e,o=0;null!=(r=i[o]);o++)n||1!==r.nodeType||S.cleanData(ve(r)),r.parentNode&&(n&&ie(r)&&ye(ve(r,"script")),r.parentNode.removeChild(r));return e}S.extend({htmlPrefilter:function(e){return e},clone:function(e,t,n){var r,i,o,a,s,u,l,c=e.cloneNode(!0),f=ie(e);if(!(y.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||S.isXMLDoc(e)))for(a=ve(c),r=0,i=(o=ve(e)).length;r<i;r++)s=o[r],u=a[r],void 0,"input"===(l=u.nodeName.toLowerCase())&&pe.test(s.type)?u.checked=s.checked:"input"!==l&&"textarea"!==l||(u.defaultValue=s.defaultValue);if(t)if(n)for(o=o||ve(e),a=a||ve(c),r=0,i=o.length;r<i;r++)Le(o[r],a[r]);else Le(e,c);return 0<(a=ve(c,"script")).length&&ye(a,!f&&ve(e,"script")),c},cleanData:function(e){for(var t,n,r,i=S.event.special,o=0;void 0!==(n=e[o]);o++)if(V(n)){if(t=n[Y.expando]){if(t.events)for(r in t.events)i[r]?S.event.remove(n,r):S.removeEvent(n,r,t.handle);n[Y.expando]=void 0}n[Q.expando]&&(n[Q.expando]=void 0)}}}),S.fn.extend({detach:function(e){return Oe(this,e,!0)},remove:function(e){return Oe(this,e)},text:function(e){return $(this,function(e){return void 0===e?S.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)})},null,e,arguments.length)},append:function(){return He(this,arguments,function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||je(this,e).appendChild(e)})},prepend:function(){return He(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=je(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return He(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return He(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(S.cleanData(ve(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return S.clone(this,e,t)})},html:function(e){return $(this,function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!ke.test(e)&&!ge[(de.exec(e)||["",""])[1].toLowerCase()]){e=S.htmlPrefilter(e);try{for(;n<r;n++)1===(t=this[n]||{}).nodeType&&(S.cleanData(ve(t,!1)),t.innerHTML=e);t=0}catch(e){}}t&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var n=[];return He(this,arguments,function(e){var t=this.parentNode;S.inArray(this,n)<0&&(S.cleanData(ve(this)),t&&t.replaceChild(e,this))},n)}}),S.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,a){S.fn[e]=function(e){for(var t,n=[],r=S(e),i=r.length-1,o=0;o<=i;o++)t=o===i?this:this.clone(!0),S(r[o])[a](t),u.apply(n,t.get());return this.pushStack(n)}});var Pe=new RegExp("^("+ee+")(?!px)[a-z%]+$","i"),Re=function(e){var t=e.ownerDocument.defaultView;return t&&t.opener||(t=C),t.getComputedStyle(e)},Me=function(e,t,n){var r,i,o={};for(i in t)o[i]=e.style[i],e.style[i]=t[i];for(i in r=n.call(e),t)e.style[i]=o[i];return r},Ie=new RegExp(ne.join("|"),"i");function We(e,t,n){var r,i,o,a,s=e.style;return(n=n||Re(e))&&(""!==(a=n.getPropertyValue(t)||n[t])||ie(e)||(a=S.style(e,t)),!y.pixelBoxStyles()&&Pe.test(a)&&Ie.test(t)&&(r=s.width,i=s.minWidth,o=s.maxWidth,s.minWidth=s.maxWidth=s.width=a,a=n.width,s.width=r,s.minWidth=i,s.maxWidth=o)),void 0!==a?a+"":a}function Fe(e,t){return{get:function(){if(!e())return(this.get=t).apply(this,arguments);delete this.get}}}!function(){function e(){if(l){u.style.cssText="position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0",l.style.cssText="position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%",re.appendChild(u).appendChild(l);var e=C.getComputedStyle(l);n="1%"!==e.top,s=12===t(e.marginLeft),l.style.right="60%",o=36===t(e.right),r=36===t(e.width),l.style.position="absolute",i=12===t(l.offsetWidth/3),re.removeChild(u),l=null}}function t(e){return Math.round(parseFloat(e))}var n,r,i,o,a,s,u=E.createElement("div"),l=E.createElement("div");l.style&&(l.style.backgroundClip="content-box",l.cloneNode(!0).style.backgroundClip="",y.clearCloneStyle="content-box"===l.style.backgroundClip,S.extend(y,{boxSizingReliable:function(){return e(),r},pixelBoxStyles:function(){return e(),o},pixelPosition:function(){return e(),n},reliableMarginLeft:function(){return e(),s},scrollboxSize:function(){return e(),i},reliableTrDimensions:function(){var e,t,n,r;return null==a&&(e=E.createElement("table"),t=E.createElement("tr"),n=E.createElement("div"),e.style.cssText="position:absolute;left:-11111px;border-collapse:separate",t.style.cssText="border:1px solid",t.style.height="1px",n.style.height="9px",n.style.display="block",re.appendChild(e).appendChild(t).appendChild(n),r=C.getComputedStyle(t),a=parseInt(r.height,10)+parseInt(r.borderTopWidth,10)+parseInt(r.borderBottomWidth,10)===t.offsetHeight,re.removeChild(e)),a}}))}();var Be=["Webkit","Moz","ms"],$e=E.createElement("div").style,_e={};function ze(e){var t=S.cssProps[e]||_e[e];return t||(e in $e?e:_e[e]=function(e){var t=e[0].toUpperCase()+e.slice(1),n=Be.length;while(n--)if((e=Be[n]+t)in $e)return e}(e)||e)}var Ue=/^(none|table(?!-c[ea]).+)/,Xe=/^--/,Ve={position:"absolute",visibility:"hidden",display:"block"},Ge={letterSpacing:"0",fontWeight:"400"};function Ye(e,t,n){var r=te.exec(t);return r?Math.max(0,r[2]-(n||0))+(r[3]||"px"):t}function Qe(e,t,n,r,i,o){var a="width"===t?1:0,s=0,u=0;if(n===(r?"border":"content"))return 0;for(;a<4;a+=2)"margin"===n&&(u+=S.css(e,n+ne[a],!0,i)),r?("content"===n&&(u-=S.css(e,"padding"+ne[a],!0,i)),"margin"!==n&&(u-=S.css(e,"border"+ne[a]+"Width",!0,i))):(u+=S.css(e,"padding"+ne[a],!0,i),"padding"!==n?u+=S.css(e,"border"+ne[a]+"Width",!0,i):s+=S.css(e,"border"+ne[a]+"Width",!0,i));return!r&&0<=o&&(u+=Math.max(0,Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-o-u-s-.5))||0),u}function Je(e,t,n){var r=Re(e),i=(!y.boxSizingReliable()||n)&&"border-box"===S.css(e,"boxSizing",!1,r),o=i,a=We(e,t,r),s="offset"+t[0].toUpperCase()+t.slice(1);if(Pe.test(a)){if(!n)return a;a="auto"}return(!y.boxSizingReliable()&&i||!y.reliableTrDimensions()&&A(e,"tr")||"auto"===a||!parseFloat(a)&&"inline"===S.css(e,"display",!1,r))&&e.getClientRects().length&&(i="border-box"===S.css(e,"boxSizing",!1,r),(o=s in e)&&(a=e[s])),(a=parseFloat(a)||0)+Qe(e,t,n||(i?"border":"content"),o,r,a)+"px"}function Ke(e,t,n,r,i){return new Ke.prototype.init(e,t,n,r,i)}S.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=We(e,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,gridArea:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnStart:!0,gridRow:!0,gridRowEnd:!0,gridRowStart:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,a,s=X(t),u=Xe.test(t),l=e.style;if(u||(t=ze(s)),a=S.cssHooks[t]||S.cssHooks[s],void 0===n)return a&&"get"in a&&void 0!==(i=a.get(e,!1,r))?i:l[t];"string"===(o=typeof n)&&(i=te.exec(n))&&i[1]&&(n=se(e,t,i),o="number"),null!=n&&n==n&&("number"!==o||u||(n+=i&&i[3]||(S.cssNumber[s]?"":"px")),y.clearCloneStyle||""!==n||0!==t.indexOf("background")||(l[t]="inherit"),a&&"set"in a&&void 0===(n=a.set(e,n,r))||(u?l.setProperty(t,n):l[t]=n))}},css:function(e,t,n,r){var i,o,a,s=X(t);return Xe.test(t)||(t=ze(s)),(a=S.cssHooks[t]||S.cssHooks[s])&&"get"in a&&(i=a.get(e,!0,n)),void 0===i&&(i=We(e,t,r)),"normal"===i&&t in Ge&&(i=Ge[t]),""===n||n?(o=parseFloat(i),!0===n||isFinite(o)?o||0:i):i}}),S.each(["height","width"],function(e,u){S.cssHooks[u]={get:function(e,t,n){if(t)return!Ue.test(S.css(e,"display"))||e.getClientRects().length&&e.getBoundingClientRect().width?Je(e,u,n):Me(e,Ve,function(){return Je(e,u,n)})},set:function(e,t,n){var r,i=Re(e),o=!y.scrollboxSize()&&"absolute"===i.position,a=(o||n)&&"border-box"===S.css(e,"boxSizing",!1,i),s=n?Qe(e,u,n,a,i):0;return a&&o&&(s-=Math.ceil(e["offset"+u[0].toUpperCase()+u.slice(1)]-parseFloat(i[u])-Qe(e,u,"border",!1,i)-.5)),s&&(r=te.exec(t))&&"px"!==(r[3]||"px")&&(e.style[u]=t,t=S.css(e,u)),Ye(0,t,s)}}}),S.cssHooks.marginLeft=Fe(y.reliableMarginLeft,function(e,t){if(t)return(parseFloat(We(e,"marginLeft"))||e.getBoundingClientRect().left-Me(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}))+"px"}),S.each({margin:"",padding:"",border:"Width"},function(i,o){S.cssHooks[i+o]={expand:function(e){for(var t=0,n={},r="string"==typeof e?e.split(" "):[e];t<4;t++)n[i+ne[t]+o]=r[t]||r[t-2]||r[0];return n}},"margin"!==i&&(S.cssHooks[i+o].set=Ye)}),S.fn.extend({css:function(e,t){return $(this,function(e,t,n){var r,i,o={},a=0;if(Array.isArray(t)){for(r=Re(e),i=t.length;a<i;a++)o[t[a]]=S.css(e,t[a],!1,r);return o}return void 0!==n?S.style(e,t,n):S.css(e,t)},e,t,1<arguments.length)}}),((S.Tween=Ke).prototype={constructor:Ke,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||S.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(S.cssNumber[n]?"":"px")},cur:function(){var e=Ke.propHooks[this.prop];return e&&e.get?e.get(this):Ke.propHooks._default.get(this)},run:function(e){var t,n=Ke.propHooks[this.prop];return this.options.duration?this.pos=t=S.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):Ke.propHooks._default.set(this),this}}).init.prototype=Ke.prototype,(Ke.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=S.css(e.elem,e.prop,""))&&"auto"!==t?t:0},set:function(e){S.fx.step[e.prop]?S.fx.step[e.prop](e):1!==e.elem.nodeType||!S.cssHooks[e.prop]&&null==e.elem.style[ze(e.prop)]?e.elem[e.prop]=e.now:S.style(e.elem,e.prop,e.now+e.unit)}}}).scrollTop=Ke.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},S.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},S.fx=Ke.prototype.init,S.fx.step={};var Ze,et,tt,nt,rt=/^(?:toggle|show|hide)$/,it=/queueHooks$/;function ot(){et&&(!1===E.hidden&&C.requestAnimationFrame?C.requestAnimationFrame(ot):C.setTimeout(ot,S.fx.interval),S.fx.tick())}function at(){return C.setTimeout(function(){Ze=void 0}),Ze=Date.now()}function st(e,t){var n,r=0,i={height:e};for(t=t?1:0;r<4;r+=2-t)i["margin"+(n=ne[r])]=i["padding"+n]=e;return t&&(i.opacity=i.width=e),i}function ut(e,t,n){for(var r,i=(lt.tweeners[t]||[]).concat(lt.tweeners["*"]),o=0,a=i.length;o<a;o++)if(r=i[o].call(n,t,e))return r}function lt(o,e,t){var n,a,r=0,i=lt.prefilters.length,s=S.Deferred().always(function(){delete u.elem}),u=function(){if(a)return!1;for(var e=Ze||at(),t=Math.max(0,l.startTime+l.duration-e),n=1-(t/l.duration||0),r=0,i=l.tweens.length;r<i;r++)l.tweens[r].run(n);return s.notifyWith(o,[l,n,t]),n<1&&i?t:(i||s.notifyWith(o,[l,1,0]),s.resolveWith(o,[l]),!1)},l=s.promise({elem:o,props:S.extend({},e),opts:S.extend(!0,{specialEasing:{},easing:S.easing._default},t),originalProperties:e,originalOptions:t,startTime:Ze||at(),duration:t.duration,tweens:[],createTween:function(e,t){var n=S.Tween(o,l.opts,e,t,l.opts.specialEasing[e]||l.opts.easing);return l.tweens.push(n),n},stop:function(e){var t=0,n=e?l.tweens.length:0;if(a)return this;for(a=!0;t<n;t++)l.tweens[t].run(1);return e?(s.notifyWith(o,[l,1,0]),s.resolveWith(o,[l,e])):s.rejectWith(o,[l,e]),this}}),c=l.props;for(!function(e,t){var n,r,i,o,a;for(n in e)if(i=t[r=X(n)],o=e[n],Array.isArray(o)&&(i=o[1],o=e[n]=o[0]),n!==r&&(e[r]=o,delete e[n]),(a=S.cssHooks[r])&&"expand"in a)for(n in o=a.expand(o),delete e[r],o)n in e||(e[n]=o[n],t[n]=i);else t[r]=i}(c,l.opts.specialEasing);r<i;r++)if(n=lt.prefilters[r].call(l,o,c,l.opts))return m(n.stop)&&(S._queueHooks(l.elem,l.opts.queue).stop=n.stop.bind(n)),n;return S.map(c,ut,l),m(l.opts.start)&&l.opts.start.call(o,l),l.progress(l.opts.progress).done(l.opts.done,l.opts.complete).fail(l.opts.fail).always(l.opts.always),S.fx.timer(S.extend(u,{elem:o,anim:l,queue:l.opts.queue})),l}S.Animation=S.extend(lt,{tweeners:{"*":[function(e,t){var n=this.createTween(e,t);return se(n.elem,e,te.exec(t),n),n}]},tweener:function(e,t){m(e)?(t=e,e=["*"]):e=e.match(P);for(var n,r=0,i=e.length;r<i;r++)n=e[r],lt.tweeners[n]=lt.tweeners[n]||[],lt.tweeners[n].unshift(t)},prefilters:[function(e,t,n){var r,i,o,a,s,u,l,c,f="width"in t||"height"in t,p=this,d={},h=e.style,g=e.nodeType&&ae(e),v=Y.get(e,"fxshow");for(r in n.queue||(null==(a=S._queueHooks(e,"fx")).unqueued&&(a.unqueued=0,s=a.empty.fire,a.empty.fire=function(){a.unqueued||s()}),a.unqueued++,p.always(function(){p.always(function(){a.unqueued--,S.queue(e,"fx").length||a.empty.fire()})})),t)if(i=t[r],rt.test(i)){if(delete t[r],o=o||"toggle"===i,i===(g?"hide":"show")){if("show"!==i||!v||void 0===v[r])continue;g=!0}d[r]=v&&v[r]||S.style(e,r)}if((u=!S.isEmptyObject(t))||!S.isEmptyObject(d))for(r in f&&1===e.nodeType&&(n.overflow=[h.overflow,h.overflowX,h.overflowY],null==(l=v&&v.display)&&(l=Y.get(e,"display")),"none"===(c=S.css(e,"display"))&&(l?c=l:(le([e],!0),l=e.style.display||l,c=S.css(e,"display"),le([e]))),("inline"===c||"inline-block"===c&&null!=l)&&"none"===S.css(e,"float")&&(u||(p.done(function(){h.display=l}),null==l&&(c=h.display,l="none"===c?"":c)),h.display="inline-block")),n.overflow&&(h.overflow="hidden",p.always(function(){h.overflow=n.overflow[0],h.overflowX=n.overflow[1],h.overflowY=n.overflow[2]})),u=!1,d)u||(v?"hidden"in v&&(g=v.hidden):v=Y.access(e,"fxshow",{display:l}),o&&(v.hidden=!g),g&&le([e],!0),p.done(function(){for(r in g||le([e]),Y.remove(e,"fxshow"),d)S.style(e,r,d[r])})),u=ut(g?v[r]:0,r,p),r in v||(v[r]=u.start,g&&(u.end=u.start,u.start=0))}],prefilter:function(e,t){t?lt.prefilters.unshift(e):lt.prefilters.push(e)}}),S.speed=function(e,t,n){var r=e&&"object"==typeof e?S.extend({},e):{complete:n||!n&&t||m(e)&&e,duration:e,easing:n&&t||t&&!m(t)&&t};return S.fx.off?r.duration=0:"number"!=typeof r.duration&&(r.duration in S.fx.speeds?r.duration=S.fx.speeds[r.duration]:r.duration=S.fx.speeds._default),null!=r.queue&&!0!==r.queue||(r.queue="fx"),r.old=r.complete,r.complete=function(){m(r.old)&&r.old.call(this),r.queue&&S.dequeue(this,r.queue)},r},S.fn.extend({fadeTo:function(e,t,n,r){return this.filter(ae).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(t,e,n,r){var i=S.isEmptyObject(t),o=S.speed(e,n,r),a=function(){var e=lt(this,S.extend({},t),o);(i||Y.get(this,"finish"))&&e.stop(!0)};return a.finish=a,i||!1===o.queue?this.each(a):this.queue(o.queue,a)},stop:function(i,e,o){var a=function(e){var t=e.stop;delete e.stop,t(o)};return"string"!=typeof i&&(o=e,e=i,i=void 0),e&&this.queue(i||"fx",[]),this.each(function(){var e=!0,t=null!=i&&i+"queueHooks",n=S.timers,r=Y.get(this);if(t)r[t]&&r[t].stop&&a(r[t]);else for(t in r)r[t]&&r[t].stop&&it.test(t)&&a(r[t]);for(t=n.length;t--;)n[t].elem!==this||null!=i&&n[t].queue!==i||(n[t].anim.stop(o),e=!1,n.splice(t,1));!e&&o||S.dequeue(this,i)})},finish:function(a){return!1!==a&&(a=a||"fx"),this.each(function(){var e,t=Y.get(this),n=t[a+"queue"],r=t[a+"queueHooks"],i=S.timers,o=n?n.length:0;for(t.finish=!0,S.queue(this,a,[]),r&&r.stop&&r.stop.call(this,!0),e=i.length;e--;)i[e].elem===this&&i[e].queue===a&&(i[e].anim.stop(!0),i.splice(e,1));for(e=0;e<o;e++)n[e]&&n[e].finish&&n[e].finish.call(this);delete t.finish})}}),S.each(["toggle","show","hide"],function(e,r){var i=S.fn[r];S.fn[r]=function(e,t,n){return null==e||"boolean"==typeof e?i.apply(this,arguments):this.animate(st(r,!0),e,t,n)}}),S.each({slideDown:st("show"),slideUp:st("hide"),slideToggle:st("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,r){S.fn[e]=function(e,t,n){return this.animate(r,e,t,n)}}),S.timers=[],S.fx.tick=function(){var e,t=0,n=S.timers;for(Ze=Date.now();t<n.length;t++)(e=n[t])()||n[t]!==e||n.splice(t--,1);n.length||S.fx.stop(),Ze=void 0},S.fx.timer=function(e){S.timers.push(e),S.fx.start()},S.fx.interval=13,S.fx.start=function(){et||(et=!0,ot())},S.fx.stop=function(){et=null},S.fx.speeds={slow:600,fast:200,_default:400},S.fn.delay=function(r,e){return r=S.fx&&S.fx.speeds[r]||r,e=e||"fx",this.queue(e,function(e,t){var n=C.setTimeout(e,r);t.stop=function(){C.clearTimeout(n)}})},tt=E.createElement("input"),nt=E.createElement("select").appendChild(E.createElement("option")),tt.type="checkbox",y.checkOn=""!==tt.value,y.optSelected=nt.selected,(tt=E.createElement("input")).value="t",tt.type="radio",y.radioValue="t"===tt.value;var ct,ft=S.expr.attrHandle;S.fn.extend({attr:function(e,t){return $(this,S.attr,e,t,1<arguments.length)},removeAttr:function(e){return this.each(function(){S.removeAttr(this,e)})}}),S.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return"undefined"==typeof e.getAttribute?S.prop(e,t,n):(1===o&&S.isXMLDoc(e)||(i=S.attrHooks[t.toLowerCase()]||(S.expr.match.bool.test(t)?ct:void 0)),void 0!==n?null===n?void S.removeAttr(e,t):i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:(e.setAttribute(t,n+""),n):i&&"get"in i&&null!==(r=i.get(e,t))?r:null==(r=S.find.attr(e,t))?void 0:r)},attrHooks:{type:{set:function(e,t){if(!y.radioValue&&"radio"===t&&A(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r=0,i=t&&t.match(P);if(i&&1===e.nodeType)while(n=i[r++])e.removeAttribute(n)}}),ct={set:function(e,t,n){return!1===t?S.removeAttr(e,n):e.setAttribute(n,n),n}},S.each(S.expr.match.bool.source.match(/\w+/g),function(e,t){var a=ft[t]||S.find.attr;ft[t]=function(e,t,n){var r,i,o=t.toLowerCase();return n||(i=ft[o],ft[o]=r,r=null!=a(e,t,n)?o:null,ft[o]=i),r}});var pt=/^(?:input|select|textarea|button)$/i,dt=/^(?:a|area)$/i;function ht(e){return(e.match(P)||[]).join(" ")}function gt(e){return e.getAttribute&&e.getAttribute("class")||""}function vt(e){return Array.isArray(e)?e:"string"==typeof e&&e.match(P)||[]}S.fn.extend({prop:function(e,t){return $(this,S.prop,e,t,1<arguments.length)},removeProp:function(e){return this.each(function(){delete this[S.propFix[e]||e]})}}),S.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&S.isXMLDoc(e)||(t=S.propFix[t]||t,i=S.propHooks[t]),void 0!==n?i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:e[t]=n:i&&"get"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=S.find.attr(e,"tabindex");return t?parseInt(t,10):pt.test(e.nodeName)||dt.test(e.nodeName)&&e.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),y.optSelected||(S.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),S.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){S.propFix[this.toLowerCase()]=this}),S.fn.extend({addClass:function(t){var e,n,r,i,o,a,s,u=0;if(m(t))return this.each(function(e){S(this).addClass(t.call(this,e,gt(this)))});if((e=vt(t)).length)while(n=this[u++])if(i=gt(n),r=1===n.nodeType&&" "+ht(i)+" "){a=0;while(o=e[a++])r.indexOf(" "+o+" ")<0&&(r+=o+" ");i!==(s=ht(r))&&n.setAttribute("class",s)}return this},removeClass:function(t){var e,n,r,i,o,a,s,u=0;if(m(t))return this.each(function(e){S(this).removeClass(t.call(this,e,gt(this)))});if(!arguments.length)return this.attr("class","");if((e=vt(t)).length)while(n=this[u++])if(i=gt(n),r=1===n.nodeType&&" "+ht(i)+" "){a=0;while(o=e[a++])while(-1<r.indexOf(" "+o+" "))r=r.replace(" "+o+" "," ");i!==(s=ht(r))&&n.setAttribute("class",s)}return this},toggleClass:function(i,t){var o=typeof i,a="string"===o||Array.isArray(i);return"boolean"==typeof t&&a?t?this.addClass(i):this.removeClass(i):m(i)?this.each(function(e){S(this).toggleClass(i.call(this,e,gt(this),t),t)}):this.each(function(){var e,t,n,r;if(a){t=0,n=S(this),r=vt(i);while(e=r[t++])n.hasClass(e)?n.removeClass(e):n.addClass(e)}else void 0!==i&&"boolean"!==o||((e=gt(this))&&Y.set(this,"__className__",e),this.setAttribute&&this.setAttribute("class",e||!1===i?"":Y.get(this,"__className__")||""))})},hasClass:function(e){var t,n,r=0;t=" "+e+" ";while(n=this[r++])if(1===n.nodeType&&-1<(" "+ht(gt(n))+" ").indexOf(t))return!0;return!1}});var yt=/\r/g;S.fn.extend({val:function(n){var r,e,i,t=this[0];return arguments.length?(i=m(n),this.each(function(e){var t;1===this.nodeType&&(null==(t=i?n.call(this,e,S(this).val()):n)?t="":"number"==typeof t?t+="":Array.isArray(t)&&(t=S.map(t,function(e){return null==e?"":e+""})),(r=S.valHooks[this.type]||S.valHooks[this.nodeName.toLowerCase()])&&"set"in r&&void 0!==r.set(this,t,"value")||(this.value=t))})):t?(r=S.valHooks[t.type]||S.valHooks[t.nodeName.toLowerCase()])&&"get"in r&&void 0!==(e=r.get(t,"value"))?e:"string"==typeof(e=t.value)?e.replace(yt,""):null==e?"":e:void 0}}),S.extend({valHooks:{option:{get:function(e){var t=S.find.attr(e,"value");return null!=t?t:ht(S.text(e))}},select:{get:function(e){var t,n,r,i=e.options,o=e.selectedIndex,a="select-one"===e.type,s=a?null:[],u=a?o+1:i.length;for(r=o<0?u:a?o:0;r<u;r++)if(((n=i[r]).selected||r===o)&&!n.disabled&&(!n.parentNode.disabled||!A(n.parentNode,"optgroup"))){if(t=S(n).val(),a)return t;s.push(t)}return s},set:function(e,t){var n,r,i=e.options,o=S.makeArray(t),a=i.length;while(a--)((r=i[a]).selected=-1<S.inArray(S.valHooks.option.get(r),o))&&(n=!0);return n||(e.selectedIndex=-1),o}}}}),S.each(["radio","checkbox"],function(){S.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=-1<S.inArray(S(e).val(),t)}},y.checkOn||(S.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})}),y.focusin="onfocusin"in C;var mt=/^(?:focusinfocus|focusoutblur)$/,xt=function(e){e.stopPropagation()};S.extend(S.event,{trigger:function(e,t,n,r){var i,o,a,s,u,l,c,f,p=[n||E],d=v.call(e,"type")?e.type:e,h=v.call(e,"namespace")?e.namespace.split("."):[];if(o=f=a=n=n||E,3!==n.nodeType&&8!==n.nodeType&&!mt.test(d+S.event.triggered)&&(-1<d.indexOf(".")&&(d=(h=d.split(".")).shift(),h.sort()),u=d.indexOf(":")<0&&"on"+d,(e=e[S.expando]?e:new S.Event(d,"object"==typeof e&&e)).isTrigger=r?2:3,e.namespace=h.join("."),e.rnamespace=e.namespace?new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,e.result=void 0,e.target||(e.target=n),t=null==t?[e]:S.makeArray(t,[e]),c=S.event.special[d]||{},r||!c.trigger||!1!==c.trigger.apply(n,t))){if(!r&&!c.noBubble&&!x(n)){for(s=c.delegateType||d,mt.test(s+d)||(o=o.parentNode);o;o=o.parentNode)p.push(o),a=o;a===(n.ownerDocument||E)&&p.push(a.defaultView||a.parentWindow||C)}i=0;while((o=p[i++])&&!e.isPropagationStopped())f=o,e.type=1<i?s:c.bindType||d,(l=(Y.get(o,"events")||Object.create(null))[e.type]&&Y.get(o,"handle"))&&l.apply(o,t),(l=u&&o[u])&&l.apply&&V(o)&&(e.result=l.apply(o,t),!1===e.result&&e.preventDefault());return e.type=d,r||e.isDefaultPrevented()||c._default&&!1!==c._default.apply(p.pop(),t)||!V(n)||u&&m(n[d])&&!x(n)&&((a=n[u])&&(n[u]=null),S.event.triggered=d,e.isPropagationStopped()&&f.addEventListener(d,xt),n[d](),e.isPropagationStopped()&&f.removeEventListener(d,xt),S.event.triggered=void 0,a&&(n[u]=a)),e.result}},simulate:function(e,t,n){var r=S.extend(new S.Event,n,{type:e,isSimulated:!0});S.event.trigger(r,null,t)}}),S.fn.extend({trigger:function(e,t){return this.each(function(){S.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];if(n)return S.event.trigger(e,t,n,!0)}}),y.focusin||S.each({focus:"focusin",blur:"focusout"},function(n,r){var i=function(e){S.event.simulate(r,e.target,S.event.fix(e))};S.event.special[r]={setup:function(){var e=this.ownerDocument||this.document||this,t=Y.access(e,r);t||e.addEventListener(n,i,!0),Y.access(e,r,(t||0)+1)},teardown:function(){var e=this.ownerDocument||this.document||this,t=Y.access(e,r)-1;t?Y.access(e,r,t):(e.removeEventListener(n,i,!0),Y.remove(e,r))}}});var bt=C.location,wt={guid:Date.now()},Tt=/\?/;S.parseXML=function(e){var t,n;if(!e||"string"!=typeof e)return null;try{t=(new C.DOMParser).parseFromString(e,"text/xml")}catch(e){}return n=t&&t.getElementsByTagName("parsererror")[0],t&&!n||S.error("Invalid XML: "+(n?S.map(n.childNodes,function(e){return e.textContent}).join("\n"):e)),t};var Ct=/\[\]$/,Et=/\r?\n/g,St=/^(?:submit|button|image|reset|file)$/i,kt=/^(?:input|select|textarea|keygen)/i;function At(n,e,r,i){var t;if(Array.isArray(e))S.each(e,function(e,t){r||Ct.test(n)?i(n,t):At(n+"["+("object"==typeof t&&null!=t?e:"")+"]",t,r,i)});else if(r||"object"!==w(e))i(n,e);else for(t in e)At(n+"["+t+"]",e[t],r,i)}S.param=function(e,t){var n,r=[],i=function(e,t){var n=m(t)?t():t;r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(null==n?"":n)};if(null==e)return"";if(Array.isArray(e)||e.jquery&&!S.isPlainObject(e))S.each(e,function(){i(this.name,this.value)});else for(n in e)At(n,e[n],t,i);return r.join("&")},S.fn.extend({serialize:function(){return S.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=S.prop(this,"elements");return e?S.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!S(this).is(":disabled")&&kt.test(this.nodeName)&&!St.test(e)&&(this.checked||!pe.test(e))}).map(function(e,t){var n=S(this).val();return null==n?null:Array.isArray(n)?S.map(n,function(e){return{name:t.name,value:e.replace(Et,"\r\n")}}):{name:t.name,value:n.replace(Et,"\r\n")}}).get()}});var Nt=/%20/g,jt=/#.*$/,Dt=/([?&])_=[^&]*/,qt=/^(.*?):[ \t]*([^\r\n]*)$/gm,Lt=/^(?:GET|HEAD)$/,Ht=/^\/\//,Ot={},Pt={},Rt="*/".concat("*"),Mt=E.createElement("a");function It(o){return function(e,t){"string"!=typeof e&&(t=e,e="*");var n,r=0,i=e.toLowerCase().match(P)||[];if(m(t))while(n=i[r++])"+"===n[0]?(n=n.slice(1)||"*",(o[n]=o[n]||[]).unshift(t)):(o[n]=o[n]||[]).push(t)}}function Wt(t,i,o,a){var s={},u=t===Pt;function l(e){var r;return s[e]=!0,S.each(t[e]||[],function(e,t){var n=t(i,o,a);return"string"!=typeof n||u||s[n]?u?!(r=n):void 0:(i.dataTypes.unshift(n),l(n),!1)}),r}return l(i.dataTypes[0])||!s["*"]&&l("*")}function Ft(e,t){var n,r,i=S.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((i[n]?e:r||(r={}))[n]=t[n]);return r&&S.extend(!0,e,r),e}Mt.href=bt.href,S.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:bt.href,type:"GET",isLocal:/^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(bt.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Rt,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":S.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?Ft(Ft(e,S.ajaxSettings),t):Ft(S.ajaxSettings,e)},ajaxPrefilter:It(Ot),ajaxTransport:It(Pt),ajax:function(e,t){"object"==typeof e&&(t=e,e=void 0),t=t||{};var c,f,p,n,d,r,h,g,i,o,v=S.ajaxSetup({},t),y=v.context||v,m=v.context&&(y.nodeType||y.jquery)?S(y):S.event,x=S.Deferred(),b=S.Callbacks("once memory"),w=v.statusCode||{},a={},s={},u="canceled",T={readyState:0,getResponseHeader:function(e){var t;if(h){if(!n){n={};while(t=qt.exec(p))n[t[1].toLowerCase()+" "]=(n[t[1].toLowerCase()+" "]||[]).concat(t[2])}t=n[e.toLowerCase()+" "]}return null==t?null:t.join(", ")},getAllResponseHeaders:function(){return h?p:null},setRequestHeader:function(e,t){return null==h&&(e=s[e.toLowerCase()]=s[e.toLowerCase()]||e,a[e]=t),this},overrideMimeType:function(e){return null==h&&(v.mimeType=e),this},statusCode:function(e){var t;if(e)if(h)T.always(e[T.status]);else for(t in e)w[t]=[w[t],e[t]];return this},abort:function(e){var t=e||u;return c&&c.abort(t),l(0,t),this}};if(x.promise(T),v.url=((e||v.url||bt.href)+"").replace(Ht,bt.protocol+"//"),v.type=t.method||t.type||v.method||v.type,v.dataTypes=(v.dataType||"*").toLowerCase().match(P)||[""],null==v.crossDomain){r=E.createElement("a");try{r.href=v.url,r.href=r.href,v.crossDomain=Mt.protocol+"//"+Mt.host!=r.protocol+"//"+r.host}catch(e){v.crossDomain=!0}}if(v.data&&v.processData&&"string"!=typeof v.data&&(v.data=S.param(v.data,v.traditional)),Wt(Ot,v,t,T),h)return T;for(i in(g=S.event&&v.global)&&0==S.active++&&S.event.trigger("ajaxStart"),v.type=v.type.toUpperCase(),v.hasContent=!Lt.test(v.type),f=v.url.replace(jt,""),v.hasContent?v.data&&v.processData&&0===(v.contentType||"").indexOf("application/x-www-form-urlencoded")&&(v.data=v.data.replace(Nt,"+")):(o=v.url.slice(f.length),v.data&&(v.processData||"string"==typeof v.data)&&(f+=(Tt.test(f)?"&":"?")+v.data,delete v.data),!1===v.cache&&(f=f.replace(Dt,"$1"),o=(Tt.test(f)?"&":"?")+"_="+wt.guid+++o),v.url=f+o),v.ifModified&&(S.lastModified[f]&&T.setRequestHeader("If-Modified-Since",S.lastModified[f]),S.etag[f]&&T.setRequestHeader("If-None-Match",S.etag[f])),(v.data&&v.hasContent&&!1!==v.contentType||t.contentType)&&T.setRequestHeader("Content-Type",v.contentType),T.setRequestHeader("Accept",v.dataTypes[0]&&v.accepts[v.dataTypes[0]]?v.accepts[v.dataTypes[0]]+("*"!==v.dataTypes[0]?", "+Rt+"; q=0.01":""):v.accepts["*"]),v.headers)T.setRequestHeader(i,v.headers[i]);if(v.beforeSend&&(!1===v.beforeSend.call(y,T,v)||h))return T.abort();if(u="abort",b.add(v.complete),T.done(v.success),T.fail(v.error),c=Wt(Pt,v,t,T)){if(T.readyState=1,g&&m.trigger("ajaxSend",[T,v]),h)return T;v.async&&0<v.timeout&&(d=C.setTimeout(function(){T.abort("timeout")},v.timeout));try{h=!1,c.send(a,l)}catch(e){if(h)throw e;l(-1,e)}}else l(-1,"No Transport");function l(e,t,n,r){var i,o,a,s,u,l=t;h||(h=!0,d&&C.clearTimeout(d),c=void 0,p=r||"",T.readyState=0<e?4:0,i=200<=e&&e<300||304===e,n&&(s=function(e,t,n){var r,i,o,a,s=e.contents,u=e.dataTypes;while("*"===u[0])u.shift(),void 0===r&&(r=e.mimeType||t.getResponseHeader("Content-Type"));if(r)for(i in s)if(s[i]&&s[i].test(r)){u.unshift(i);break}if(u[0]in n)o=u[0];else{for(i in n){if(!u[0]||e.converters[i+" "+u[0]]){o=i;break}a||(a=i)}o=o||a}if(o)return o!==u[0]&&u.unshift(o),n[o]}(v,T,n)),!i&&-1<S.inArray("script",v.dataTypes)&&S.inArray("json",v.dataTypes)<0&&(v.converters["text script"]=function(){}),s=function(e,t,n,r){var i,o,a,s,u,l={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)l[a.toLowerCase()]=e.converters[a];o=c.shift();while(o)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!u&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u=o,o=c.shift())if("*"===o)o=u;else if("*"!==u&&u!==o){if(!(a=l[u+" "+o]||l["* "+o]))for(i in l)if((s=i.split(" "))[1]===o&&(a=l[u+" "+s[0]]||l["* "+s[0]])){!0===a?a=l[i]:!0!==l[i]&&(o=s[0],c.unshift(s[1]));break}if(!0!==a)if(a&&e["throws"])t=a(t);else try{t=a(t)}catch(e){return{state:"parsererror",error:a?e:"No conversion from "+u+" to "+o}}}return{state:"success",data:t}}(v,s,T,i),i?(v.ifModified&&((u=T.getResponseHeader("Last-Modified"))&&(S.lastModified[f]=u),(u=T.getResponseHeader("etag"))&&(S.etag[f]=u)),204===e||"HEAD"===v.type?l="nocontent":304===e?l="notmodified":(l=s.state,o=s.data,i=!(a=s.error))):(a=l,!e&&l||(l="error",e<0&&(e=0))),T.status=e,T.statusText=(t||l)+"",i?x.resolveWith(y,[o,l,T]):x.rejectWith(y,[T,l,a]),T.statusCode(w),w=void 0,g&&m.trigger(i?"ajaxSuccess":"ajaxError",[T,v,i?o:a]),b.fireWith(y,[T,l]),g&&(m.trigger("ajaxComplete",[T,v]),--S.active||S.event.trigger("ajaxStop")))}return T},getJSON:function(e,t,n){return S.get(e,t,n,"json")},getScript:function(e,t){return S.get(e,void 0,t,"script")}}),S.each(["get","post"],function(e,i){S[i]=function(e,t,n,r){return m(t)&&(r=r||n,n=t,t=void 0),S.ajax(S.extend({url:e,type:i,dataType:r,data:t,success:n},S.isPlainObject(e)&&e))}}),S.ajaxPrefilter(function(e){var t;for(t in e.headers)"content-type"===t.toLowerCase()&&(e.contentType=e.headers[t]||"")}),S._evalUrl=function(e,t,n){return S.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,converters:{"text script":function(){}},dataFilter:function(e){S.globalEval(e,t,n)}})},S.fn.extend({wrapAll:function(e){var t;return this[0]&&(m(e)&&(e=e.call(this[0])),t=S(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstElementChild)e=e.firstElementChild;return e}).append(this)),this},wrapInner:function(n){return m(n)?this.each(function(e){S(this).wrapInner(n.call(this,e))}):this.each(function(){var e=S(this),t=e.contents();t.length?t.wrapAll(n):e.append(n)})},wrap:function(t){var n=m(t);return this.each(function(e){S(this).wrapAll(n?t.call(this,e):t)})},unwrap:function(e){return this.parent(e).not("body").each(function(){S(this).replaceWith(this.childNodes)}),this}}),S.expr.pseudos.hidden=function(e){return!S.expr.pseudos.visible(e)},S.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},S.ajaxSettings.xhr=function(){try{return new C.XMLHttpRequest}catch(e){}};var Bt={0:200,1223:204},$t=S.ajaxSettings.xhr();y.cors=!!$t&&"withCredentials"in $t,y.ajax=$t=!!$t,S.ajaxTransport(function(i){var o,a;if(y.cors||$t&&!i.crossDomain)return{send:function(e,t){var n,r=i.xhr();if(r.open(i.type,i.url,i.async,i.username,i.password),i.xhrFields)for(n in i.xhrFields)r[n]=i.xhrFields[n];for(n in i.mimeType&&r.overrideMimeType&&r.overrideMimeType(i.mimeType),i.crossDomain||e["X-Requested-With"]||(e["X-Requested-With"]="XMLHttpRequest"),e)r.setRequestHeader(n,e[n]);o=function(e){return function(){o&&(o=a=r.onload=r.onerror=r.onabort=r.ontimeout=r.onreadystatechange=null,"abort"===e?r.abort():"error"===e?"number"!=typeof r.status?t(0,"error"):t(r.status,r.statusText):t(Bt[r.status]||r.status,r.statusText,"text"!==(r.responseType||"text")||"string"!=typeof r.responseText?{binary:r.response}:{text:r.responseText},r.getAllResponseHeaders()))}},r.onload=o(),a=r.onerror=r.ontimeout=o("error"),void 0!==r.onabort?r.onabort=a:r.onreadystatechange=function(){4===r.readyState&&C.setTimeout(function(){o&&a()})},o=o("abort");try{r.send(i.hasContent&&i.data||null)}catch(e){if(o)throw e}},abort:function(){o&&o()}}}),S.ajaxPrefilter(function(e){e.crossDomain&&(e.contents.script=!1)}),S.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(e){return S.globalEval(e),e}}}),S.ajaxPrefilter("script",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET")}),S.ajaxTransport("script",function(n){var r,i;if(n.crossDomain||n.scriptAttrs)return{send:function(e,t){r=S("<script>").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var _t,zt=[],Ut=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=zt.pop()||S.expando+"_"+wt.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Ut.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Ut.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Ut,"$1"+r):!1!==e.jsonp&&(e.url+=(Tt.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,zt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((_t=E.implementation.createHTMLDocument("").body).innerHTML="<form></form><form></form>",2===_t.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1<s&&(r=ht(e.slice(s)),e=e.slice(0,s)),m(t)?(n=t,t=void 0):t&&"object"==typeof t&&(i="POST"),0<a.length&&S.ajax({url:e,type:i||"GET",dataType:"html",data:t}).done(function(e){o=arguments,a.html(r?S("<div>").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=Fe(y.pixelPosition,function(e,t){if(t)return t=We(e,n),Pe.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0<arguments.length?this.on(n,null,e,t):this.trigger(n)}});var Xt=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;S.proxy=function(e,t){var n,r,i;if("string"==typeof t&&(n=e[t],t=e,e=n),m(e))return r=s.call(arguments,2),(i=function(){return e.apply(t||this,r.concat(s.call(arguments)))}).guid=e.guid=e.guid||S.guid++,i},S.holdReady=function(e){e?S.readyWait++:S.ready(!0)},S.isArray=Array.isArray,S.parseJSON=JSON.parse,S.nodeName=A,S.isFunction=m,S.isWindow=x,S.camelCase=X,S.type=w,S.now=Date.now,S.isNumeric=function(e){var t=S.type(e);return("number"===t||"string"===t)&&!isNaN(e-parseFloat(e))},S.trim=function(e){return null==e?"":(e+"").replace(Xt,"")},"function"==typeof define&&define.amd&&define("jquery",[],function(){return S});var Vt=C.jQuery,Gt=C.$;return S.noConflict=function(e){return C.$===S&&(C.$=Gt),e&&C.jQuery===S&&(C.jQuery=Vt),S},"undefined"==typeof e&&(C.jQuery=C.$=S),S});
public/assets/js/jquery.scrolly.min.js ADDED
@@ -0,0 +1,2 @@
 
 
 
1
+ /* jquery.scrolly v1.0.0-dev | (c) @ajlkn | MIT licensed */
2
+ (function(e){function u(s,o){var u,a,f;if((u=e(s))[t]==0)return n;a=u[i]()[r];switch(o.anchor){case"middle":f=a-(e(window).height()-u.outerHeight())/2;break;default:case r:f=Math.max(a,0)}return typeof o[i]=="function"?f-=o[i]():f-=o[i],f}var t="length",n=null,r="top",i="offset",s="click.scrolly",o=e(window);e.fn.scrolly=function(i){var o,a,f,l,c=e(this);if(this[t]==0)return c;if(this[t]>1){for(o=0;o<this[t];o++)e(this[o]).scrolly(i);return c}l=n,f=c.attr("href");if(f.charAt(0)!="#"||f[t]<2)return c;a=jQuery.extend({anchor:r,easing:"swing",offset:0,parent:e("body,html"),pollOnce:!1,speed:1e3},i),a.pollOnce&&(l=u(f,a)),c.off(s).on(s,function(e){var t=l!==n?l:u(f,a);t!==n&&(e.preventDefault(),a.parent.stop().animate({scrollTop:t},a.speed,a.easing))})}})(jQuery);
public/assets/js/main.js ADDED
@@ -0,0 +1,32 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*
2
+ Photon by HTML5 UP
3
+ html5up.net | @ajlkn
4
+ Free for personal and commercial use under the CCA 3.0 license (html5up.net/license)
5
+ */
6
+
7
+ (function($) {
8
+
9
+ var $window = $(window),
10
+ $body = $('body');
11
+
12
+ // Breakpoints.
13
+ breakpoints({
14
+ xlarge: [ '1141px', '1680px' ],
15
+ large: [ '981px', '1140px' ],
16
+ medium: [ '737px', '980px' ],
17
+ small: [ '481px', '736px' ],
18
+ xsmall: [ '321px', '480px' ],
19
+ xxsmall: [ null, '320px' ]
20
+ });
21
+
22
+ // Play initial animations on page load.
23
+ $window.on('load', function() {
24
+ window.setTimeout(function() {
25
+ $body.removeClass('is-preload');
26
+ }, 100);
27
+ });
28
+
29
+ // Scrolly.
30
+ $('.scrolly').scrolly();
31
+
32
+ })(jQuery);
public/assets/js/util.js ADDED
@@ -0,0 +1,587 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ (function($) {
2
+
3
+ /**
4
+ * Generate an indented list of links from a nav. Meant for use with panel().
5
+ * @return {jQuery} jQuery object.
6
+ */
7
+ $.fn.navList = function() {
8
+
9
+ var $this = $(this);
10
+ $a = $this.find('a'),
11
+ b = [];
12
+
13
+ $a.each(function() {
14
+
15
+ var $this = $(this),
16
+ indent = Math.max(0, $this.parents('li').length - 1),
17
+ href = $this.attr('href'),
18
+ target = $this.attr('target');
19
+
20
+ b.push(
21
+ '<a ' +
22
+ 'class="link depth-' + indent + '"' +
23
+ ( (typeof target !== 'undefined' && target != '') ? ' target="' + target + '"' : '') +
24
+ ( (typeof href !== 'undefined' && href != '') ? ' href="' + href + '"' : '') +
25
+ '>' +
26
+ '<span class="indent-' + indent + '"></span>' +
27
+ $this.text() +
28
+ '</a>'
29
+ );
30
+
31
+ });
32
+
33
+ return b.join('');
34
+
35
+ };
36
+
37
+ /**
38
+ * Panel-ify an element.
39
+ * @param {object} userConfig User config.
40
+ * @return {jQuery} jQuery object.
41
+ */
42
+ $.fn.panel = function(userConfig) {
43
+
44
+ // No elements?
45
+ if (this.length == 0)
46
+ return $this;
47
+
48
+ // Multiple elements?
49
+ if (this.length > 1) {
50
+
51
+ for (var i=0; i < this.length; i++)
52
+ $(this[i]).panel(userConfig);
53
+
54
+ return $this;
55
+
56
+ }
57
+
58
+ // Vars.
59
+ var $this = $(this),
60
+ $body = $('body'),
61
+ $window = $(window),
62
+ id = $this.attr('id'),
63
+ config;
64
+
65
+ // Config.
66
+ config = $.extend({
67
+
68
+ // Delay.
69
+ delay: 0,
70
+
71
+ // Hide panel on link click.
72
+ hideOnClick: false,
73
+
74
+ // Hide panel on escape keypress.
75
+ hideOnEscape: false,
76
+
77
+ // Hide panel on swipe.
78
+ hideOnSwipe: false,
79
+
80
+ // Reset scroll position on hide.
81
+ resetScroll: false,
82
+
83
+ // Reset forms on hide.
84
+ resetForms: false,
85
+
86
+ // Side of viewport the panel will appear.
87
+ side: null,
88
+
89
+ // Target element for "class".
90
+ target: $this,
91
+
92
+ // Class to toggle.
93
+ visibleClass: 'visible'
94
+
95
+ }, userConfig);
96
+
97
+ // Expand "target" if it's not a jQuery object already.
98
+ if (typeof config.target != 'jQuery')
99
+ config.target = $(config.target);
100
+
101
+ // Panel.
102
+
103
+ // Methods.
104
+ $this._hide = function(event) {
105
+
106
+ // Already hidden? Bail.
107
+ if (!config.target.hasClass(config.visibleClass))
108
+ return;
109
+
110
+ // If an event was provided, cancel it.
111
+ if (event) {
112
+
113
+ event.preventDefault();
114
+ event.stopPropagation();
115
+
116
+ }
117
+
118
+ // Hide.
119
+ config.target.removeClass(config.visibleClass);
120
+
121
+ // Post-hide stuff.
122
+ window.setTimeout(function() {
123
+
124
+ // Reset scroll position.
125
+ if (config.resetScroll)
126
+ $this.scrollTop(0);
127
+
128
+ // Reset forms.
129
+ if (config.resetForms)
130
+ $this.find('form').each(function() {
131
+ this.reset();
132
+ });
133
+
134
+ }, config.delay);
135
+
136
+ };
137
+
138
+ // Vendor fixes.
139
+ $this
140
+ .css('-ms-overflow-style', '-ms-autohiding-scrollbar')
141
+ .css('-webkit-overflow-scrolling', 'touch');
142
+
143
+ // Hide on click.
144
+ if (config.hideOnClick) {
145
+
146
+ $this.find('a')
147
+ .css('-webkit-tap-highlight-color', 'rgba(0,0,0,0)');
148
+
149
+ $this
150
+ .on('click', 'a', function(event) {
151
+
152
+ var $a = $(this),
153
+ href = $a.attr('href'),
154
+ target = $a.attr('target');
155
+
156
+ if (!href || href == '#' || href == '' || href == '#' + id)
157
+ return;
158
+
159
+ // Cancel original event.
160
+ event.preventDefault();
161
+ event.stopPropagation();
162
+
163
+ // Hide panel.
164
+ $this._hide();
165
+
166
+ // Redirect to href.
167
+ window.setTimeout(function() {
168
+
169
+ if (target == '_blank')
170
+ window.open(href);
171
+ else
172
+ window.location.href = href;
173
+
174
+ }, config.delay + 10);
175
+
176
+ });
177
+
178
+ }
179
+
180
+ // Event: Touch stuff.
181
+ $this.on('touchstart', function(event) {
182
+
183
+ $this.touchPosX = event.originalEvent.touches[0].pageX;
184
+ $this.touchPosY = event.originalEvent.touches[0].pageY;
185
+
186
+ })
187
+
188
+ $this.on('touchmove', function(event) {
189
+
190
+ if ($this.touchPosX === null
191
+ || $this.touchPosY === null)
192
+ return;
193
+
194
+ var diffX = $this.touchPosX - event.originalEvent.touches[0].pageX,
195
+ diffY = $this.touchPosY - event.originalEvent.touches[0].pageY,
196
+ th = $this.outerHeight(),
197
+ ts = ($this.get(0).scrollHeight - $this.scrollTop());
198
+
199
+ // Hide on swipe?
200
+ if (config.hideOnSwipe) {
201
+
202
+ var result = false,
203
+ boundary = 20,
204
+ delta = 50;
205
+
206
+ switch (config.side) {
207
+
208
+ case 'left':
209
+ result = (diffY < boundary && diffY > (-1 * boundary)) && (diffX > delta);
210
+ break;
211
+
212
+ case 'right':
213
+ result = (diffY < boundary && diffY > (-1 * boundary)) && (diffX < (-1 * delta));
214
+ break;
215
+
216
+ case 'top':
217
+ result = (diffX < boundary && diffX > (-1 * boundary)) && (diffY > delta);
218
+ break;
219
+
220
+ case 'bottom':
221
+ result = (diffX < boundary && diffX > (-1 * boundary)) && (diffY < (-1 * delta));
222
+ break;
223
+
224
+ default:
225
+ break;
226
+
227
+ }
228
+
229
+ if (result) {
230
+
231
+ $this.touchPosX = null;
232
+ $this.touchPosY = null;
233
+ $this._hide();
234
+
235
+ return false;
236
+
237
+ }
238
+
239
+ }
240
+
241
+ // Prevent vertical scrolling past the top or bottom.
242
+ if (($this.scrollTop() < 0 && diffY < 0)
243
+ || (ts > (th - 2) && ts < (th + 2) && diffY > 0)) {
244
+
245
+ event.preventDefault();
246
+ event.stopPropagation();
247
+
248
+ }
249
+
250
+ });
251
+
252
+ // Event: Prevent certain events inside the panel from bubbling.
253
+ $this.on('click touchend touchstart touchmove', function(event) {
254
+ event.stopPropagation();
255
+ });
256
+
257
+ // Event: Hide panel if a child anchor tag pointing to its ID is clicked.
258
+ $this.on('click', 'a[href="#' + id + '"]', function(event) {
259
+
260
+ event.preventDefault();
261
+ event.stopPropagation();
262
+
263
+ config.target.removeClass(config.visibleClass);
264
+
265
+ });
266
+
267
+ // Body.
268
+
269
+ // Event: Hide panel on body click/tap.
270
+ $body.on('click touchend', function(event) {
271
+ $this._hide(event);
272
+ });
273
+
274
+ // Event: Toggle.
275
+ $body.on('click', 'a[href="#' + id + '"]', function(event) {
276
+
277
+ event.preventDefault();
278
+ event.stopPropagation();
279
+
280
+ config.target.toggleClass(config.visibleClass);
281
+
282
+ });
283
+
284
+ // Window.
285
+
286
+ // Event: Hide on ESC.
287
+ if (config.hideOnEscape)
288
+ $window.on('keydown', function(event) {
289
+
290
+ if (event.keyCode == 27)
291
+ $this._hide(event);
292
+
293
+ });
294
+
295
+ return $this;
296
+
297
+ };
298
+
299
+ /**
300
+ * Apply "placeholder" attribute polyfill to one or more forms.
301
+ * @return {jQuery} jQuery object.
302
+ */
303
+ $.fn.placeholder = function() {
304
+
305
+ // Browser natively supports placeholders? Bail.
306
+ if (typeof (document.createElement('input')).placeholder != 'undefined')
307
+ return $(this);
308
+
309
+ // No elements?
310
+ if (this.length == 0)
311
+ return $this;
312
+
313
+ // Multiple elements?
314
+ if (this.length > 1) {
315
+
316
+ for (var i=0; i < this.length; i++)
317
+ $(this[i]).placeholder();
318
+
319
+ return $this;
320
+
321
+ }
322
+
323
+ // Vars.
324
+ var $this = $(this);
325
+
326
+ // Text, TextArea.
327
+ $this.find('input[type=text],textarea')
328
+ .each(function() {
329
+
330
+ var i = $(this);
331
+
332
+ if (i.val() == ''
333
+ || i.val() == i.attr('placeholder'))
334
+ i
335
+ .addClass('polyfill-placeholder')
336
+ .val(i.attr('placeholder'));
337
+
338
+ })
339
+ .on('blur', function() {
340
+
341
+ var i = $(this);
342
+
343
+ if (i.attr('name').match(/-polyfill-field$/))
344
+ return;
345
+
346
+ if (i.val() == '')
347
+ i
348
+ .addClass('polyfill-placeholder')
349
+ .val(i.attr('placeholder'));
350
+
351
+ })
352
+ .on('focus', function() {
353
+
354
+ var i = $(this);
355
+
356
+ if (i.attr('name').match(/-polyfill-field$/))
357
+ return;
358
+
359
+ if (i.val() == i.attr('placeholder'))
360
+ i
361
+ .removeClass('polyfill-placeholder')
362
+ .val('');
363
+
364
+ });
365
+
366
+ // Password.
367
+ $this.find('input[type=password]')
368
+ .each(function() {
369
+
370
+ var i = $(this);
371
+ var x = $(
372
+ $('<div>')
373
+ .append(i.clone())
374
+ .remove()
375
+ .html()
376
+ .replace(/type="password"/i, 'type="text"')
377
+ .replace(/type=password/i, 'type=text')
378
+ );
379
+
380
+ if (i.attr('id') != '')
381
+ x.attr('id', i.attr('id') + '-polyfill-field');
382
+
383
+ if (i.attr('name') != '')
384
+ x.attr('name', i.attr('name') + '-polyfill-field');
385
+
386
+ x.addClass('polyfill-placeholder')
387
+ .val(x.attr('placeholder')).insertAfter(i);
388
+
389
+ if (i.val() == '')
390
+ i.hide();
391
+ else
392
+ x.hide();
393
+
394
+ i
395
+ .on('blur', function(event) {
396
+
397
+ event.preventDefault();
398
+
399
+ var x = i.parent().find('input[name=' + i.attr('name') + '-polyfill-field]');
400
+
401
+ if (i.val() == '') {
402
+
403
+ i.hide();
404
+ x.show();
405
+
406
+ }
407
+
408
+ });
409
+
410
+ x
411
+ .on('focus', function(event) {
412
+
413
+ event.preventDefault();
414
+
415
+ var i = x.parent().find('input[name=' + x.attr('name').replace('-polyfill-field', '') + ']');
416
+
417
+ x.hide();
418
+
419
+ i
420
+ .show()
421
+ .focus();
422
+
423
+ })
424
+ .on('keypress', function(event) {
425
+
426
+ event.preventDefault();
427
+ x.val('');
428
+
429
+ });
430
+
431
+ });
432
+
433
+ // Events.
434
+ $this
435
+ .on('submit', function() {
436
+
437
+ $this.find('input[type=text],input[type=password],textarea')
438
+ .each(function(event) {
439
+
440
+ var i = $(this);
441
+
442
+ if (i.attr('name').match(/-polyfill-field$/))
443
+ i.attr('name', '');
444
+
445
+ if (i.val() == i.attr('placeholder')) {
446
+
447
+ i.removeClass('polyfill-placeholder');
448
+ i.val('');
449
+
450
+ }
451
+
452
+ });
453
+
454
+ })
455
+ .on('reset', function(event) {
456
+
457
+ event.preventDefault();
458
+
459
+ $this.find('select')
460
+ .val($('option:first').val());
461
+
462
+ $this.find('input,textarea')
463
+ .each(function() {
464
+
465
+ var i = $(this),
466
+ x;
467
+
468
+ i.removeClass('polyfill-placeholder');
469
+
470
+ switch (this.type) {
471
+
472
+ case 'submit':
473
+ case 'reset':
474
+ break;
475
+
476
+ case 'password':
477
+ i.val(i.attr('defaultValue'));
478
+
479
+ x = i.parent().find('input[name=' + i.attr('name') + '-polyfill-field]');
480
+
481
+ if (i.val() == '') {
482
+ i.hide();
483
+ x.show();
484
+ }
485
+ else {
486
+ i.show();
487
+ x.hide();
488
+ }
489
+
490
+ break;
491
+
492
+ case 'checkbox':
493
+ case 'radio':
494
+ i.attr('checked', i.attr('defaultValue'));
495
+ break;
496
+
497
+ case 'text':
498
+ case 'textarea':
499
+ i.val(i.attr('defaultValue'));
500
+
501
+ if (i.val() == '') {
502
+ i.addClass('polyfill-placeholder');
503
+ i.val(i.attr('placeholder'));
504
+ }
505
+
506
+ break;
507
+
508
+ default:
509
+ i.val(i.attr('defaultValue'));
510
+ break;
511
+
512
+ }
513
+ });
514
+
515
+ });
516
+
517
+ return $this;
518
+
519
+ };
520
+
521
+ /**
522
+ * Moves elements to/from the first positions of their respective parents.
523
+ * @param {jQuery} $elements Elements (or selector) to move.
524
+ * @param {bool} condition If true, moves elements to the top. Otherwise, moves elements back to their original locations.
525
+ */
526
+ $.prioritize = function($elements, condition) {
527
+
528
+ var key = '__prioritize';
529
+
530
+ // Expand $elements if it's not already a jQuery object.
531
+ if (typeof $elements != 'jQuery')
532
+ $elements = $($elements);
533
+
534
+ // Step through elements.
535
+ $elements.each(function() {
536
+
537
+ var $e = $(this), $p,
538
+ $parent = $e.parent();
539
+
540
+ // No parent? Bail.
541
+ if ($parent.length == 0)
542
+ return;
543
+
544
+ // Not moved? Move it.
545
+ if (!$e.data(key)) {
546
+
547
+ // Condition is false? Bail.
548
+ if (!condition)
549
+ return;
550
+
551
+ // Get placeholder (which will serve as our point of reference for when this element needs to move back).
552
+ $p = $e.prev();
553
+
554
+ // Couldn't find anything? Means this element's already at the top, so bail.
555
+ if ($p.length == 0)
556
+ return;
557
+
558
+ // Move element to top of parent.
559
+ $e.prependTo($parent);
560
+
561
+ // Mark element as moved.
562
+ $e.data(key, $p);
563
+
564
+ }
565
+
566
+ // Moved already?
567
+ else {
568
+
569
+ // Condition is true? Bail.
570
+ if (condition)
571
+ return;
572
+
573
+ $p = $e.data(key);
574
+
575
+ // Move element back to its original location (using our placeholder).
576
+ $e.insertAfter($p);
577
+
578
+ // Unmark element as moved.
579
+ $e.removeData(key);
580
+
581
+ }
582
+
583
+ });
584
+
585
+ };
586
+
587
+ })(jQuery);
public/assets/sass/libs/_breakpoints.scss ADDED
@@ -0,0 +1,223 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // breakpoints.scss v1.0 | @ajlkn | MIT licensed */
2
+
3
+ // Vars.
4
+
5
+ /// Breakpoints.
6
+ /// @var {list}
7
+ $breakpoints: () !global;
8
+
9
+ // Mixins.
10
+
11
+ /// Sets breakpoints.
12
+ /// @param {map} $x Breakpoints.
13
+ @mixin breakpoints($x: ()) {
14
+ $breakpoints: $x !global;
15
+ }
16
+
17
+ /// Wraps @content in a @media block targeting a specific orientation.
18
+ /// @param {string} $orientation Orientation.
19
+ @mixin orientation($orientation) {
20
+ @media screen and (orientation: #{$orientation}) {
21
+ @content;
22
+ }
23
+ }
24
+
25
+ /// Wraps @content in a @media block using a given query.
26
+ /// @param {string} $query Query.
27
+ @mixin breakpoint($query: null) {
28
+
29
+ $breakpoint: null;
30
+ $op: null;
31
+ $media: null;
32
+
33
+ // Determine operator, breakpoint.
34
+
35
+ // Greater than or equal.
36
+ @if (str-slice($query, 0, 2) == '>=') {
37
+
38
+ $op: 'gte';
39
+ $breakpoint: str-slice($query, 3);
40
+
41
+ }
42
+
43
+ // Less than or equal.
44
+ @elseif (str-slice($query, 0, 2) == '<=') {
45
+
46
+ $op: 'lte';
47
+ $breakpoint: str-slice($query, 3);
48
+
49
+ }
50
+
51
+ // Greater than.
52
+ @elseif (str-slice($query, 0, 1) == '>') {
53
+
54
+ $op: 'gt';
55
+ $breakpoint: str-slice($query, 2);
56
+
57
+ }
58
+
59
+ // Less than.
60
+ @elseif (str-slice($query, 0, 1) == '<') {
61
+
62
+ $op: 'lt';
63
+ $breakpoint: str-slice($query, 2);
64
+
65
+ }
66
+
67
+ // Not.
68
+ @elseif (str-slice($query, 0, 1) == '!') {
69
+
70
+ $op: 'not';
71
+ $breakpoint: str-slice($query, 2);
72
+
73
+ }
74
+
75
+ // Equal.
76
+ @else {
77
+
78
+ $op: 'eq';
79
+ $breakpoint: $query;
80
+
81
+ }
82
+
83
+ // Build media.
84
+ @if ($breakpoint and map-has-key($breakpoints, $breakpoint)) {
85
+
86
+ $a: map-get($breakpoints, $breakpoint);
87
+
88
+ // Range.
89
+ @if (type-of($a) == 'list') {
90
+
91
+ $x: nth($a, 1);
92
+ $y: nth($a, 2);
93
+
94
+ // Max only.
95
+ @if ($x == null) {
96
+
97
+ // Greater than or equal (>= 0 / anything)
98
+ @if ($op == 'gte') {
99
+ $media: 'screen';
100
+ }
101
+
102
+ // Less than or equal (<= y)
103
+ @elseif ($op == 'lte') {
104
+ $media: 'screen and (max-width: ' + $y + ')';
105
+ }
106
+
107
+ // Greater than (> y)
108
+ @elseif ($op == 'gt') {
109
+ $media: 'screen and (min-width: ' + ($y + 1) + ')';
110
+ }
111
+
112
+ // Less than (< 0 / invalid)
113
+ @elseif ($op == 'lt') {
114
+ $media: 'screen and (max-width: -1px)';
115
+ }
116
+
117
+ // Not (> y)
118
+ @elseif ($op == 'not') {
119
+ $media: 'screen and (min-width: ' + ($y + 1) + ')';
120
+ }
121
+
122
+ // Equal (<= y)
123
+ @else {
124
+ $media: 'screen and (max-width: ' + $y + ')';
125
+ }
126
+
127
+ }
128
+
129
+ // Min only.
130
+ @else if ($y == null) {
131
+
132
+ // Greater than or equal (>= x)
133
+ @if ($op == 'gte') {
134
+ $media: 'screen and (min-width: ' + $x + ')';
135
+ }
136
+
137
+ // Less than or equal (<= inf / anything)
138
+ @elseif ($op == 'lte') {
139
+ $media: 'screen';
140
+ }
141
+
142
+ // Greater than (> inf / invalid)
143
+ @elseif ($op == 'gt') {
144
+ $media: 'screen and (max-width: -1px)';
145
+ }
146
+
147
+ // Less than (< x)
148
+ @elseif ($op == 'lt') {
149
+ $media: 'screen and (max-width: ' + ($x - 1) + ')';
150
+ }
151
+
152
+ // Not (< x)
153
+ @elseif ($op == 'not') {
154
+ $media: 'screen and (max-width: ' + ($x - 1) + ')';
155
+ }
156
+
157
+ // Equal (>= x)
158
+ @else {
159
+ $media: 'screen and (min-width: ' + $x + ')';
160
+ }
161
+
162
+ }
163
+
164
+ // Min and max.
165
+ @else {
166
+
167
+ // Greater than or equal (>= x)
168
+ @if ($op == 'gte') {
169
+ $media: 'screen and (min-width: ' + $x + ')';
170
+ }
171
+
172
+ // Less than or equal (<= y)
173
+ @elseif ($op == 'lte') {
174
+ $media: 'screen and (max-width: ' + $y + ')';
175
+ }
176
+
177
+ // Greater than (> y)
178
+ @elseif ($op == 'gt') {
179
+ $media: 'screen and (min-width: ' + ($y + 1) + ')';
180
+ }
181
+
182
+ // Less than (< x)
183
+ @elseif ($op == 'lt') {
184
+ $media: 'screen and (max-width: ' + ($x - 1) + ')';
185
+ }
186
+
187
+ // Not (< x and > y)
188
+ @elseif ($op == 'not') {
189
+ $media: 'screen and (max-width: ' + ($x - 1) + '), screen and (min-width: ' + ($y + 1) + ')';
190
+ }
191
+
192
+ // Equal (>= x and <= y)
193
+ @else {
194
+ $media: 'screen and (min-width: ' + $x + ') and (max-width: ' + $y + ')';
195
+ }
196
+
197
+ }
198
+
199
+ }
200
+
201
+ // String.
202
+ @else {
203
+
204
+ // Missing a media type? Prefix with "screen".
205
+ @if (str-slice($a, 0, 1) == '(') {
206
+ $media: 'screen and ' + $a;
207
+ }
208
+
209
+ // Otherwise, use as-is.
210
+ @else {
211
+ $media: $a;
212
+ }
213
+
214
+ }
215
+
216
+ }
217
+
218
+ // Output.
219
+ @media #{$media} {
220
+ @content;
221
+ }
222
+
223
+ }
public/assets/sass/libs/_functions.scss ADDED
@@ -0,0 +1,90 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /// Removes a specific item from a list.
2
+ /// @author Hugo Giraudel
3
+ /// @param {list} $list List.
4
+ /// @param {integer} $index Index.
5
+ /// @return {list} Updated list.
6
+ @function remove-nth($list, $index) {
7
+
8
+ $result: null;
9
+
10
+ @if type-of($index) != number {
11
+ @warn "$index: #{quote($index)} is not a number for `remove-nth`.";
12
+ }
13
+ @else if $index == 0 {
14
+ @warn "List index 0 must be a non-zero integer for `remove-nth`.";
15
+ }
16
+ @else if abs($index) > length($list) {
17
+ @warn "List index is #{$index} but list is only #{length($list)} item long for `remove-nth`.";
18
+ }
19
+ @else {
20
+
21
+ $result: ();
22
+ $index: if($index < 0, length($list) + $index + 1, $index);
23
+
24
+ @for $i from 1 through length($list) {
25
+
26
+ @if $i != $index {
27
+ $result: append($result, nth($list, $i));
28
+ }
29
+
30
+ }
31
+
32
+ }
33
+
34
+ @return $result;
35
+
36
+ }
37
+
38
+ /// Gets a value from a map.
39
+ /// @author Hugo Giraudel
40
+ /// @param {map} $map Map.
41
+ /// @param {string} $keys Key(s).
42
+ /// @return {string} Value.
43
+ @function val($map, $keys...) {
44
+
45
+ @if nth($keys, 1) == null {
46
+ $keys: remove-nth($keys, 1);
47
+ }
48
+
49
+ @each $key in $keys {
50
+ $map: map-get($map, $key);
51
+ }
52
+
53
+ @return $map;
54
+
55
+ }
56
+
57
+ /// Gets a duration value.
58
+ /// @param {string} $keys Key(s).
59
+ /// @return {string} Value.
60
+ @function _duration($keys...) {
61
+ @return val($duration, $keys...);
62
+ }
63
+
64
+ /// Gets a font value.
65
+ /// @param {string} $keys Key(s).
66
+ /// @return {string} Value.
67
+ @function _font($keys...) {
68
+ @return val($font, $keys...);
69
+ }
70
+
71
+ /// Gets a misc value.
72
+ /// @param {string} $keys Key(s).
73
+ /// @return {string} Value.
74
+ @function _misc($keys...) {
75
+ @return val($misc, $keys...);
76
+ }
77
+
78
+ /// Gets a palette value.
79
+ /// @param {string} $keys Key(s).
80
+ /// @return {string} Value.
81
+ @function _palette($keys...) {
82
+ @return val($palette, $keys...);
83
+ }
84
+
85
+ /// Gets a size value.
86
+ /// @param {string} $keys Key(s).
87
+ /// @return {string} Value.
88
+ @function _size($keys...) {
89
+ @return val($size, $keys...);
90
+ }
public/assets/sass/libs/_html-grid.scss ADDED
@@ -0,0 +1,149 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // html-grid.scss v1.0 | @ajlkn | MIT licensed */
2
+
3
+ // Mixins.
4
+
5
+ /// Initializes the current element as an HTML grid.
6
+ /// @param {mixed} $gutters Gutters (either a single number to set both column/row gutters, or a list to set them individually).
7
+ /// @param {mixed} $suffix Column class suffix (optional; either a single suffix or a list).
8
+ @mixin html-grid($gutters: 1.5em, $suffix: '') {
9
+
10
+ // Initialize.
11
+ $cols: 12;
12
+ $multipliers: 0, 0.25, 0.5, 1, 1.50, 2.00;
13
+ $unit: 100% / $cols;
14
+
15
+ // Suffixes.
16
+ $suffixes: null;
17
+
18
+ @if (type-of($suffix) == 'list') {
19
+ $suffixes: $suffix;
20
+ }
21
+ @else {
22
+ $suffixes: ($suffix);
23
+ }
24
+
25
+ // Gutters.
26
+ $guttersCols: null;
27
+ $guttersRows: null;
28
+
29
+ @if (type-of($gutters) == 'list') {
30
+
31
+ $guttersCols: nth($gutters, 1);
32
+ $guttersRows: nth($gutters, 2);
33
+
34
+ }
35
+ @else {
36
+
37
+ $guttersCols: $gutters;
38
+ $guttersRows: 0;
39
+
40
+ }
41
+
42
+ // Row.
43
+ display: flex;
44
+ flex-wrap: wrap;
45
+ box-sizing: border-box;
46
+ align-items: stretch;
47
+
48
+ // Columns.
49
+ > * {
50
+ box-sizing: border-box;
51
+ }
52
+
53
+ // Gutters.
54
+ &.gtr-uniform {
55
+ > * {
56
+ > :last-child {
57
+ margin-bottom: 0;
58
+ }
59
+ }
60
+ }
61
+
62
+ // Alignment.
63
+ &.aln-left {
64
+ justify-content: flex-start;
65
+ }
66
+
67
+ &.aln-center {
68
+ justify-content: center;
69
+ }
70
+
71
+ &.aln-right {
72
+ justify-content: flex-end;
73
+ }
74
+
75
+ &.aln-top {
76
+ align-items: flex-start;
77
+ }
78
+
79
+ &.aln-middle {
80
+ align-items: center;
81
+ }
82
+
83
+ &.aln-bottom {
84
+ align-items: flex-end;
85
+ }
86
+
87
+ // Step through suffixes.
88
+ @each $suffix in $suffixes {
89
+
90
+ // Suffix.
91
+ @if ($suffix != '') {
92
+ $suffix: '-' + $suffix;
93
+ }
94
+ @else {
95
+ $suffix: '';
96
+ }
97
+
98
+ // Row.
99
+
100
+ // Important.
101
+ > .imp#{$suffix} {
102
+ order: -1;
103
+ }
104
+
105
+ // Columns, offsets.
106
+ @for $i from 1 through $cols {
107
+ > .col-#{$i}#{$suffix} {
108
+ width: $unit * $i;
109
+ }
110
+
111
+ > .off-#{$i}#{$suffix} {
112
+ margin-left: $unit * $i;
113
+ }
114
+ }
115
+
116
+ // Step through multipliers.
117
+ @each $multiplier in $multipliers {
118
+
119
+ // Gutters.
120
+ $class: null;
121
+
122
+ @if ($multiplier != 1) {
123
+ $class: '.gtr-' + ($multiplier * 100);
124
+ }
125
+
126
+ &#{$class} {
127
+ margin-top: ($guttersRows * $multiplier * -1);
128
+ margin-left: ($guttersCols * $multiplier * -1);
129
+
130
+ > * {
131
+ padding: ($guttersRows * $multiplier) 0 0 ($guttersCols * $multiplier);
132
+ }
133
+
134
+ // Uniform.
135
+ &.gtr-uniform {
136
+ margin-top: $guttersCols * $multiplier * -1;
137
+
138
+ > * {
139
+ padding-top: $guttersCols * $multiplier;
140
+ }
141
+ }
142
+
143
+ }
144
+
145
+ }
146
+
147
+ }
148
+
149
+ }
public/assets/sass/libs/_mixins.scss ADDED
@@ -0,0 +1,78 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /// Makes an element's :before pseudoelement a FontAwesome icon.
2
+ /// @param {string} $content Optional content value to use.
3
+ /// @param {string} $category Optional category to use.
4
+ /// @param {string} $where Optional pseudoelement to target (before or after).
5
+ @mixin icon($content: false, $category: regular, $where: before) {
6
+
7
+ text-decoration: none;
8
+
9
+ &:#{$where} {
10
+
11
+ @if $content {
12
+ content: $content;
13
+ }
14
+
15
+ -moz-osx-font-smoothing: grayscale;
16
+ -webkit-font-smoothing: antialiased;
17
+ display: inline-block;
18
+ font-style: normal;
19
+ font-variant: normal;
20
+ text-rendering: auto;
21
+ line-height: 1;
22
+ text-transform: none !important;
23
+
24
+ @if ($category == brands) {
25
+ font-family: 'Font Awesome 5 Brands';
26
+ }
27
+ @elseif ($category == solid) {
28
+ font-family: 'Font Awesome 5 Free';
29
+ font-weight: 900;
30
+ }
31
+ @else {
32
+ font-family: 'Font Awesome 5 Free';
33
+ font-weight: 400;
34
+ }
35
+
36
+ }
37
+
38
+ }
39
+
40
+ /// Applies padding to an element, taking the current element-margin value into account.
41
+ /// @param {mixed} $tb Top/bottom padding.
42
+ /// @param {mixed} $lr Left/right padding.
43
+ /// @param {list} $pad Optional extra padding (in the following order top, right, bottom, left)
44
+ /// @param {bool} $important If true, adds !important.
45
+ @mixin padding($tb, $lr, $pad: (0,0,0,0), $important: null) {
46
+
47
+ @if $important {
48
+ $important: '!important';
49
+ }
50
+
51
+ $x: 0.1em;
52
+
53
+ @if unit(_size(element-margin)) == 'rem' {
54
+ $x: 0.1rem;
55
+ }
56
+
57
+ padding: ($tb + nth($pad,1)) ($lr + nth($pad,2)) max($x, $tb - _size(element-margin) + nth($pad,3)) ($lr + nth($pad,4)) #{$important};
58
+
59
+ }
60
+
61
+ /// Encodes a SVG data URL so IE doesn't choke (via codepen.io/jakob-e/pen/YXXBrp).
62
+ /// @param {string} $svg SVG data URL.
63
+ /// @return {string} Encoded SVG data URL.
64
+ @function svg-url($svg) {
65
+
66
+ $svg: str-replace($svg, '"', '\'');
67
+ $svg: str-replace($svg, '%', '%25');
68
+ $svg: str-replace($svg, '<', '%3C');
69
+ $svg: str-replace($svg, '>', '%3E');
70
+ $svg: str-replace($svg, '&', '%26');
71
+ $svg: str-replace($svg, '#', '%23');
72
+ $svg: str-replace($svg, '{', '%7B');
73
+ $svg: str-replace($svg, '}', '%7D');
74
+ $svg: str-replace($svg, ';', '%3B');
75
+
76
+ @return url("data:image/svg+xml;charset=utf8,#{$svg}");
77
+
78
+ }
public/assets/sass/libs/_vars.scss ADDED
@@ -0,0 +1,60 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // Misc.
2
+ $misc: (
3
+ z-index-base: 10000
4
+ );
5
+
6
+ // Duration.
7
+ $duration: (
8
+ transition: 0.2s
9
+ );
10
+
11
+ // Size.
12
+ $size: (
13
+ border-radius: 4px,
14
+ element-height: 2.75em,
15
+ element-margin: 2em,
16
+ container-width: 60em
17
+ );
18
+
19
+ // Font.
20
+ $font: (
21
+ family: ('Source Sans Pro', Helvetica, sans-serif),
22
+ family-fixed: ('Courier New', monospace),
23
+ weight: 300,
24
+ weight-bold: 400
25
+ );
26
+
27
+ // Palette.
28
+ $palette: (
29
+ bg: #fff,
30
+ fg: #666,
31
+ fg-bold: #555,
32
+ fg-light: #999,
33
+ border: rgba(144,144,144,0.5),
34
+ border-bg: rgba(144,144,144,0.075),
35
+ border2: rgba(144,144,144,0.75),
36
+ border2-bg: rgba(144,144,144,0.2),
37
+ accent1: #c3e895,
38
+ accent2: #8addaa,
39
+ accent3: #6bd4c8,
40
+ accent4: #57aed3,
41
+ accent5: #4a87d3,
42
+ accent6: #6b88e6,
43
+ accent1-alt: desaturate(darken(#c3e895, 15), 20),
44
+ accent2-alt: desaturate(darken(#8addaa, 15), 20),
45
+ accent3-alt: desaturate(darken(#6bd4c8, 15), 20),
46
+ accent4-alt: desaturate(darken(#57aed3, 15), 20),
47
+ accent5-alt: desaturate(darken(#4a87d3, 15), 20),
48
+ accent6-alt: desaturate(darken(#6b88e6, 15), 20),
49
+
50
+ dark: (
51
+ bg: #666666,
52
+ fg-bold: #ffffff,
53
+ fg: rgba(255,255,255,0.75),
54
+ fg-light: rgba(255,255,255,0.5),
55
+ border: #ffffff,
56
+ border-bg: rgba(255,255,255,0.125),
57
+ border2: rgba(255,255,255,0.75),
58
+ border2-bg: rgba(255,255,255,0.25)
59
+ )
60
+ );
public/assets/sass/libs/_vendor.scss ADDED
@@ -0,0 +1,376 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // vendor.scss v1.0 | @ajlkn | MIT licensed */
2
+
3
+ // Vars.
4
+
5
+ /// Vendor prefixes.
6
+ /// @var {list}
7
+ $vendor-prefixes: (
8
+ '-moz-',
9
+ '-webkit-',
10
+ '-ms-',
11
+ ''
12
+ );
13
+
14
+ /// Properties that should be vendorized.
15
+ /// Data via caniuse.com, github.com/postcss/autoprefixer, and developer.mozilla.org
16
+ /// @var {list}
17
+ $vendor-properties: (
18
+
19
+ // Animation.
20
+ 'animation',
21
+ 'animation-delay',
22
+ 'animation-direction',
23
+ 'animation-duration',
24
+ 'animation-fill-mode',
25
+ 'animation-iteration-count',
26
+ 'animation-name',
27
+ 'animation-play-state',
28
+ 'animation-timing-function',
29
+
30
+ // Appearance.
31
+ 'appearance',
32
+
33
+ // Backdrop filter.
34
+ 'backdrop-filter',
35
+
36
+ // Background image options.
37
+ 'background-clip',
38
+ 'background-origin',
39
+ 'background-size',
40
+
41
+ // Box sizing.
42
+ 'box-sizing',
43
+
44
+ // Clip path.
45
+ 'clip-path',
46
+
47
+ // Filter effects.
48
+ 'filter',
49
+
50
+ // Flexbox.
51
+ 'align-content',
52
+ 'align-items',
53
+ 'align-self',
54
+ 'flex',
55
+ 'flex-basis',
56
+ 'flex-direction',
57
+ 'flex-flow',
58
+ 'flex-grow',
59
+ 'flex-shrink',
60
+ 'flex-wrap',
61
+ 'justify-content',
62
+ 'order',
63
+
64
+ // Font feature.
65
+ 'font-feature-settings',
66
+ 'font-language-override',
67
+ 'font-variant-ligatures',
68
+
69
+ // Font kerning.
70
+ 'font-kerning',
71
+
72
+ // Fragmented borders and backgrounds.
73
+ 'box-decoration-break',
74
+
75
+ // Grid layout.
76
+ 'grid-column',
77
+ 'grid-column-align',
78
+ 'grid-column-end',
79
+ 'grid-column-start',
80
+ 'grid-row',
81
+ 'grid-row-align',
82
+ 'grid-row-end',
83
+ 'grid-row-start',
84
+ 'grid-template-columns',
85
+ 'grid-template-rows',
86
+
87
+ // Hyphens.
88
+ 'hyphens',
89
+ 'word-break',
90
+
91
+ // Masks.
92
+ 'mask',
93
+ 'mask-border',
94
+ 'mask-border-outset',
95
+ 'mask-border-repeat',
96
+ 'mask-border-slice',
97
+ 'mask-border-source',
98
+ 'mask-border-width',
99
+ 'mask-clip',
100
+ 'mask-composite',
101
+ 'mask-image',
102
+ 'mask-origin',
103
+ 'mask-position',
104
+ 'mask-repeat',
105
+ 'mask-size',
106
+
107
+ // Multicolumn.
108
+ 'break-after',
109
+ 'break-before',
110
+ 'break-inside',
111
+ 'column-count',
112
+ 'column-fill',
113
+ 'column-gap',
114
+ 'column-rule',
115
+ 'column-rule-color',
116
+ 'column-rule-style',
117
+ 'column-rule-width',
118
+ 'column-span',
119
+ 'column-width',
120
+ 'columns',
121
+
122
+ // Object fit.
123
+ 'object-fit',
124
+ 'object-position',
125
+
126
+ // Regions.
127
+ 'flow-from',
128
+ 'flow-into',
129
+ 'region-fragment',
130
+
131
+ // Scroll snap points.
132
+ 'scroll-snap-coordinate',
133
+ 'scroll-snap-destination',
134
+ 'scroll-snap-points-x',
135
+ 'scroll-snap-points-y',
136
+ 'scroll-snap-type',
137
+
138
+ // Shapes.
139
+ 'shape-image-threshold',
140
+ 'shape-margin',
141
+ 'shape-outside',
142
+
143
+ // Tab size.
144
+ 'tab-size',
145
+
146
+ // Text align last.
147
+ 'text-align-last',
148
+
149
+ // Text decoration.
150
+ 'text-decoration-color',
151
+ 'text-decoration-line',
152
+ 'text-decoration-skip',
153
+ 'text-decoration-style',
154
+
155
+ // Text emphasis.
156
+ 'text-emphasis',
157
+ 'text-emphasis-color',
158
+ 'text-emphasis-position',
159
+ 'text-emphasis-style',
160
+
161
+ // Text size adjust.
162
+ 'text-size-adjust',
163
+
164
+ // Text spacing.
165
+ 'text-spacing',
166
+
167
+ // Transform.
168
+ 'transform',
169
+ 'transform-origin',
170
+
171
+ // Transform 3D.
172
+ 'backface-visibility',
173
+ 'perspective',
174
+ 'perspective-origin',
175
+ 'transform-style',
176
+
177
+ // Transition.
178
+ 'transition',
179
+ 'transition-delay',
180
+ 'transition-duration',
181
+ 'transition-property',
182
+ 'transition-timing-function',
183
+
184
+ // Unicode bidi.
185
+ 'unicode-bidi',
186
+
187
+ // User select.
188
+ 'user-select',
189
+
190
+ // Writing mode.
191
+ 'writing-mode',
192
+
193
+ );
194
+
195
+ /// Values that should be vendorized.
196
+ /// Data via caniuse.com, github.com/postcss/autoprefixer, and developer.mozilla.org
197
+ /// @var {list}
198
+ $vendor-values: (
199
+
200
+ // Cross fade.
201
+ 'cross-fade',
202
+
203
+ // Element function.
204
+ 'element',
205
+
206
+ // Filter function.
207
+ 'filter',
208
+
209
+ // Flexbox.
210
+ 'flex',
211
+ 'inline-flex',
212
+
213
+ // Grab cursors.
214
+ 'grab',
215
+ 'grabbing',
216
+
217
+ // Gradients.
218
+ 'linear-gradient',
219
+ 'repeating-linear-gradient',
220
+ 'radial-gradient',
221
+ 'repeating-radial-gradient',
222
+
223
+ // Grid layout.
224
+ 'grid',
225
+ 'inline-grid',
226
+
227
+ // Image set.
228
+ 'image-set',
229
+
230
+ // Intrinsic width.
231
+ 'max-content',
232
+ 'min-content',
233
+ 'fit-content',
234
+ 'fill',
235
+ 'fill-available',
236
+ 'stretch',
237
+
238
+ // Sticky position.
239
+ 'sticky',
240
+
241
+ // Transform.
242
+ 'transform',
243
+
244
+ // Zoom cursors.
245
+ 'zoom-in',
246
+ 'zoom-out',
247
+
248
+ );
249
+
250
+ // Functions.
251
+
252
+ /// Removes a specific item from a list.
253
+ /// @author Hugo Giraudel
254
+ /// @param {list} $list List.
255
+ /// @param {integer} $index Index.
256
+ /// @return {list} Updated list.
257
+ @function remove-nth($list, $index) {
258
+
259
+ $result: null;
260
+
261
+ @if type-of($index) != number {
262
+ @warn "$index: #{quote($index)} is not a number for `remove-nth`.";
263
+ }
264
+ @else if $index == 0 {
265
+ @warn "List index 0 must be a non-zero integer for `remove-nth`.";
266
+ }
267
+ @else if abs($index) > length($list) {
268
+ @warn "List index is #{$index} but list is only #{length($list)} item long for `remove-nth`.";
269
+ }
270
+ @else {
271
+
272
+ $result: ();
273
+ $index: if($index < 0, length($list) + $index + 1, $index);
274
+
275
+ @for $i from 1 through length($list) {
276
+
277
+ @if $i != $index {
278
+ $result: append($result, nth($list, $i));
279
+ }
280
+
281
+ }
282
+
283
+ }
284
+
285
+ @return $result;
286
+
287
+ }
288
+
289
+ /// Replaces a substring within another string.
290
+ /// @author Hugo Giraudel
291
+ /// @param {string} $string String.
292
+ /// @param {string} $search Substring.
293
+ /// @param {string} $replace Replacement.
294
+ /// @return {string} Updated string.
295
+ @function str-replace($string, $search, $replace: '') {
296
+
297
+ $index: str-index($string, $search);
298
+
299
+ @if $index {
300
+ @return str-slice($string, 1, $index - 1) + $replace + str-replace(str-slice($string, $index + str-length($search)), $search, $replace);
301
+ }
302
+
303
+ @return $string;
304
+
305
+ }
306
+
307
+ /// Replaces a substring within each string in a list.
308
+ /// @param {list} $strings List of strings.
309
+ /// @param {string} $search Substring.
310
+ /// @param {string} $replace Replacement.
311
+ /// @return {list} Updated list of strings.
312
+ @function str-replace-all($strings, $search, $replace: '') {
313
+
314
+ @each $string in $strings {
315
+ $strings: set-nth($strings, index($strings, $string), str-replace($string, $search, $replace));
316
+ }
317
+
318
+ @return $strings;
319
+
320
+ }
321
+
322
+ // Mixins.
323
+
324
+ /// Wraps @content in vendorized keyframe blocks.
325
+ /// @param {string} $name Name.
326
+ @mixin keyframes($name) {
327
+
328
+ @-moz-keyframes #{$name} { @content; }
329
+ @-webkit-keyframes #{$name} { @content; }
330
+ @-ms-keyframes #{$name} { @content; }
331
+ @keyframes #{$name} { @content; }
332
+
333
+ }
334
+
335
+ /// Vendorizes a declaration's property and/or value(s).
336
+ /// @param {string} $property Property.
337
+ /// @param {mixed} $value String/list of value(s).
338
+ @mixin vendor($property, $value) {
339
+
340
+ // Determine if property should expand.
341
+ $expandProperty: index($vendor-properties, $property);
342
+
343
+ // Determine if value should expand (and if so, add '-prefix-' placeholder).
344
+ $expandValue: false;
345
+
346
+ @each $x in $value {
347
+ @each $y in $vendor-values {
348
+ @if $y == str-slice($x, 1, str-length($y)) {
349
+
350
+ $value: set-nth($value, index($value, $x), '-prefix-' + $x);
351
+ $expandValue: true;
352
+
353
+ }
354
+ }
355
+ }
356
+
357
+ // Expand property?
358
+ @if $expandProperty {
359
+ @each $vendor in $vendor-prefixes {
360
+ #{$vendor}#{$property}: #{str-replace-all($value, '-prefix-', $vendor)};
361
+ }
362
+ }
363
+
364
+ // Expand just the value?
365
+ @elseif $expandValue {
366
+ @each $vendor in $vendor-prefixes {
367
+ #{$property}: #{str-replace-all($value, '-prefix-', $vendor)};
368
+ }
369
+ }
370
+
371
+ // Neither? Treat them as a normal declaration.
372
+ @else {
373
+ #{$property}: #{$value};
374
+ }
375
+
376
+ }
public/assets/sass/main.scss ADDED
@@ -0,0 +1,1546 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ @import 'libs/vars';
2
+ @import 'libs/functions';
3
+ @import 'libs/mixins';
4
+ @import 'libs/vendor';
5
+ @import 'libs/breakpoints';
6
+ @import 'libs/html-grid';
7
+ @import url('fontawesome-all.min.css');
8
+ @import url("https://fonts.googleapis.com/css?family=Source+Sans+Pro:300,300italic,400,400italic");
9
+
10
+ /*
11
+ Photon by HTML5 UP
12
+ html5up.net | @ajlkn
13
+ Free for personal and commercial use under the CCA 3.0 license (html5up.net/license)
14
+ */
15
+
16
+ // Breakpoints.
17
+
18
+ @include breakpoints((
19
+ xlarge: ( 1141px, 1680px ),
20
+ large: ( 981px, 1140px ),
21
+ medium: ( 737px, 980px ),
22
+ small: ( 481px, 736px ),
23
+ xsmall: ( 321px, 480px ),
24
+ xxsmall: ( null, 320px )
25
+ ));
26
+
27
+ // Reset.
28
+ // Based on meyerweb.com/eric/tools/css/reset (v2.0 | 20110126 | License: public domain)
29
+
30
+ html, body, div, span, applet, object,
31
+ iframe, h1, h2, h3, h4, h5, h6, p, blockquote,
32
+ pre, a, abbr, acronym, address, big, cite,
33
+ code, del, dfn, em, img, ins, kbd, q, s, samp,
34
+ small, strike, strong, sub, sup, tt, var, b,
35
+ u, i, center, dl, dt, dd, ol, ul, li, fieldset,
36
+ form, label, legend, table, caption, tbody,
37
+ tfoot, thead, tr, th, td, article, aside,
38
+ canvas, details, embed, figure, figcaption,
39
+ footer, header, hgroup, menu, nav, output, ruby,
40
+ section, summary, time, mark, audio, video {
41
+ margin: 0;
42
+ padding: 0;
43
+ border: 0;
44
+ font-size: 100%;
45
+ font: inherit;
46
+ vertical-align: baseline;
47
+ }
48
+
49
+ article, aside, details, figcaption, figure,
50
+ footer, header, hgroup, menu, nav, section {
51
+ display: block;
52
+ }
53
+
54
+ body {
55
+ line-height: 1;
56
+ }
57
+
58
+ ol, ul {
59
+ list-style:none;
60
+ }
61
+
62
+ blockquote, q {
63
+ quotes: none;
64
+
65
+ &:before,
66
+ &:after {
67
+ content: '';
68
+ content: none;
69
+ }
70
+ }
71
+
72
+ table {
73
+ border-collapse: collapse;
74
+ border-spacing: 0;
75
+ }
76
+
77
+ body {
78
+ -webkit-text-size-adjust: none;
79
+ }
80
+
81
+ mark {
82
+ background-color: transparent;
83
+ color: inherit;
84
+ }
85
+
86
+ input::-moz-focus-inner {
87
+ border: 0;
88
+ padding: 0;
89
+ }
90
+
91
+ input, select, textarea {
92
+ -moz-appearance: none;
93
+ -webkit-appearance: none;
94
+ -ms-appearance: none;
95
+ appearance: none;
96
+ }
97
+
98
+ /* Basic */
99
+
100
+ // Set box model to border-box.
101
+ // Based on css-tricks.com/inheriting-box-sizing-probably-slightly-better-best-practice
102
+ html {
103
+ box-sizing: border-box;
104
+ }
105
+
106
+ *, *:before, *:after {
107
+ box-sizing: inherit;
108
+ }
109
+
110
+ body {
111
+ background: _palette(bg);
112
+
113
+ // Stops initial animations until page loads.
114
+ &.is-preload {
115
+ *, *:before, *:after {
116
+ @include vendor('animation', 'none !important');
117
+ @include vendor('transition', 'none !important');
118
+ }
119
+ }
120
+
121
+ }
122
+
123
+ body, input, select, textarea {
124
+ color: _palette(fg);
125
+ font-family: _font(family);
126
+ font-size: 16pt;
127
+ font-weight: _font(weight);
128
+ line-height: 1.65em;
129
+ }
130
+
131
+ a {
132
+ @include vendor('transition', ('color #{_duration(transition)} ease-in-out', 'border-color #{_duration(transition)} ease-in-out'));
133
+ border-bottom: dotted 1px _palette(fg);
134
+ color: inherit;
135
+ text-decoration: none;
136
+
137
+ &:hover {
138
+ border-bottom-color: transparent !important;
139
+ color: _palette(accent3);
140
+ }
141
+ }
142
+
143
+ strong, b {
144
+ color: _palette(fg-bold);
145
+ font-weight: _font(weight-bold);
146
+ }
147
+
148
+ em, i {
149
+ font-style: italic;
150
+ }
151
+
152
+ p {
153
+ margin: 0 0 _size(element-margin) 0;
154
+ }
155
+
156
+ h1, h2, h3, h4, h5, h6 {
157
+ color: _palette(fg-bold);
158
+ line-height: 1em;
159
+ margin: 0 0 (_size(element-margin) * 0.5) 0;
160
+
161
+ a {
162
+ color: inherit;
163
+ text-decoration: none;
164
+ }
165
+ }
166
+
167
+ h1 {
168
+ font-size: 2.25em;
169
+ line-height: 1.35em;
170
+ }
171
+
172
+ h2 {
173
+ font-size: 2em;
174
+ line-height: 1.35em;
175
+ }
176
+
177
+ h3 {
178
+ font-size: 1.35em;
179
+ line-height: 1.5em;
180
+ }
181
+
182
+ h4 {
183
+ font-size: 1.25em;
184
+ line-height: 1.5em;
185
+ }
186
+
187
+ h5 {
188
+ font-size: 0.9em;
189
+ line-height: 1.5em;
190
+ }
191
+
192
+ h6 {
193
+ font-size: 0.7em;
194
+ line-height: 1.5em;
195
+ }
196
+
197
+ sub {
198
+ font-size: 0.8em;
199
+ position: relative;
200
+ top: 0.5em;
201
+ }
202
+
203
+ sup {
204
+ font-size: 0.8em;
205
+ position: relative;
206
+ top: -0.5em;
207
+ }
208
+
209
+ hr {
210
+ border: 0;
211
+ border-bottom: solid 1px _palette(border);
212
+
213
+ // This is the *only* instance where we need to rely on margin collapse.
214
+ margin: _size(element-margin) 0;
215
+
216
+ &.major {
217
+ margin: (_size(element-margin) * 1.5) 0;
218
+ }
219
+ }
220
+
221
+ blockquote {
222
+ border-left: solid 4px _palette(border);
223
+ font-style: italic;
224
+ margin: 0 0 _size(element-margin) 0;
225
+ padding: 0.5em 0 0.5em 2em;
226
+ }
227
+
228
+ code {
229
+ background: _palette(border-bg);
230
+ border-radius: _size(border-radius);
231
+ border: solid 1px _palette(border);
232
+ font-family: _font(family-fixed);
233
+ font-size: 0.9em;
234
+ margin: 0 0.25em;
235
+ padding: 0.25em 0.65em;
236
+ }
237
+
238
+ pre {
239
+ -webkit-overflow-scrolling: touch;
240
+ font-family: _font(family-fixed);
241
+ font-size: 0.9em;
242
+ margin: 0 0 _size(element-margin) 0;
243
+
244
+ code {
245
+ display: block;
246
+ line-height: 1.75em;
247
+ padding: 1em 1.5em;
248
+ overflow-x: auto;
249
+ }
250
+ }
251
+
252
+ .align-left {
253
+ text-align: left;
254
+ }
255
+
256
+ .align-center {
257
+ text-align: center;
258
+ }
259
+
260
+ .align-right {
261
+ text-align: right;
262
+ }
263
+
264
+ /* Container */
265
+
266
+ .container {
267
+ margin: 0 auto;
268
+ max-width: calc(100% - #{_size(element-margin) * 2});
269
+ width: _size(container-width);
270
+
271
+ &.xsmall {
272
+ width: (_size(container-width) * 0.25);
273
+ }
274
+
275
+ &.small {
276
+ width: (_size(container-width) * 0.5);
277
+ }
278
+
279
+ &.medium {
280
+ width: (_size(container-width) * 0.75);
281
+ }
282
+
283
+ &.large {
284
+ width: (_size(container-width) * 1.25);
285
+ }
286
+
287
+ &.xlarge {
288
+ width: (_size(container-width) * 1.5);
289
+ }
290
+
291
+ &.max {
292
+ width: 100%;
293
+ }
294
+
295
+ @include breakpoint('<=medium') {
296
+ max-width: 100% !important;
297
+ width: 100% !important;
298
+ }
299
+
300
+ @include breakpoint('<=xsmall') {
301
+ max-width: calc(100% - #{_size(element-margin) * 1.5});
302
+ }
303
+ }
304
+
305
+ /* Row */
306
+
307
+ .row {
308
+ @include html-grid(2em);
309
+
310
+ @include breakpoint('<=xlarge') {
311
+ @include html-grid(2em, 'xlarge');
312
+ }
313
+
314
+ @include breakpoint('<=large') {
315
+ @include html-grid(2em, 'large');
316
+ }
317
+
318
+ @include breakpoint('<=medium') {
319
+ @include html-grid(2em, 'medium');
320
+ }
321
+
322
+ @include breakpoint('<=small') {
323
+ @include html-grid(2em, 'small');
324
+ }
325
+
326
+ @include breakpoint('<=xsmall') {
327
+ @include html-grid(2em, 'xsmall');
328
+ }
329
+
330
+ @include breakpoint('<=xxsmall') {
331
+ @include html-grid(2em, 'xxsmall');
332
+ }
333
+ }
334
+
335
+ /* Section/Article */
336
+
337
+ section, article {
338
+ &.special {
339
+ text-align: center;
340
+ }
341
+ }
342
+
343
+ header {
344
+ p {
345
+ color: _palette(fg-light);
346
+ margin: 0 0 (_size(element-margin) * 0.75) 0;
347
+ position: relative;
348
+ }
349
+
350
+ h2 + p {
351
+ font-size: 1.25em;
352
+ line-height: 1.5em;
353
+ margin-top: (_size(element-margin) * -0.5);
354
+ }
355
+
356
+ h3 + p {
357
+ font-size: 1.1em;
358
+ line-height: 1.5em;
359
+ margin-top: (_size(element-margin) * -0.4);
360
+ }
361
+
362
+ h4 + p,
363
+ h5 + p,
364
+ h6 + p {
365
+ font-size: 0.9em;
366
+ line-height: 1.5em;
367
+ margin-top: (_size(element-margin) * -0.3);
368
+ }
369
+
370
+ &.major {
371
+ margin: 0 0 (_size(element-margin) * 0.5) 0;
372
+
373
+ &:after {
374
+ background: _palette(border);
375
+ content: '';
376
+ display: inline-block;
377
+ height: 1px;
378
+ margin-top: (_size(element-margin) * 0.75);
379
+ width: 6em;
380
+ }
381
+
382
+ h2, h3, h4, h5, h6 {
383
+ margin: 0;
384
+ }
385
+
386
+ p {
387
+ margin: (_size(element-margin) * 0.35) 0 0 0;
388
+ }
389
+ }
390
+
391
+ &.special {
392
+ text-align: center;
393
+ }
394
+ }
395
+
396
+ /* Form */
397
+
398
+ form {
399
+ margin: 0 0 _size(element-margin) 0;
400
+ }
401
+
402
+ label {
403
+ color: _palette(fg-bold);
404
+ display: block;
405
+ font-size: 0.9em;
406
+ font-weight: _font(weight-bold);
407
+ margin: 0 0 (_size(element-margin) * 0.5) 0;
408
+ }
409
+
410
+ input[type="text"],
411
+ input[type="password"],
412
+ input[type="email"],
413
+ select,
414
+ textarea {
415
+ @include vendor('appearance', 'none');
416
+ background: _palette(border-bg);
417
+ border-radius: _size(border-radius);
418
+ border: none;
419
+ border: solid 1px _palette(border);
420
+ color: inherit;
421
+ display: block;
422
+ outline: 0;
423
+ padding: 0 1em;
424
+ text-decoration: none;
425
+ width: 100%;
426
+
427
+ &:invalid {
428
+ box-shadow: none;
429
+ }
430
+
431
+ &:focus {
432
+ border-color: _palette(accent3);
433
+ }
434
+ }
435
+
436
+ select {
437
+ background-image: svg-url("<svg xmlns='http://www.w3.org/2000/svg' width='40' height='40' preserveAspectRatio='none' viewBox='0 0 40 40'><path d='M9.4,12.3l10.4,10.4l10.4-10.4c0.2-0.2,0.5-0.4,0.9-0.4c0.3,0,0.6,0.1,0.9,0.4l3.3,3.3c0.2,0.2,0.4,0.5,0.4,0.9 c0,0.4-0.1,0.6-0.4,0.9L20.7,31.9c-0.2,0.2-0.5,0.4-0.9,0.4c-0.3,0-0.6-0.1-0.9-0.4L4.3,17.3c-0.2-0.2-0.4-0.5-0.4-0.9 c0-0.4,0.1-0.6,0.4-0.9l3.3-3.3c0.2-0.2,0.5-0.4,0.9-0.4S9.1,12.1,9.4,12.3z' fill='#{_palette(border)}' /></svg>");
438
+ background-size: 1.25rem;
439
+ background-repeat: no-repeat;
440
+ background-position: calc(100% - 1rem) center;
441
+ height: _size(element-height);
442
+ padding-right: _size(element-height);
443
+ text-overflow: ellipsis;
444
+
445
+ option {
446
+ color: _palette(fg-bold);
447
+ background: _palette(bg);
448
+ }
449
+
450
+ &:focus {
451
+ &::-ms-value {
452
+ background-color: transparent;
453
+ }
454
+ }
455
+
456
+ &::-ms-expand {
457
+ display: none;
458
+ }
459
+ }
460
+
461
+ input[type="text"],
462
+ input[type="password"],
463
+ input[type="email"],
464
+ select {
465
+ height: _size(element-height);
466
+ }
467
+
468
+ textarea {
469
+ padding: 0.75em 1em;
470
+ }
471
+
472
+ input[type="checkbox"],
473
+ input[type="radio"], {
474
+ @include vendor('appearance', 'none');
475
+ display: block;
476
+ float: left;
477
+ margin-right: -2em;
478
+ opacity: 0;
479
+ width: 1em;
480
+ z-index: -1;
481
+
482
+ & + label {
483
+ @include icon(false, solid);
484
+ color: _palette(fg);
485
+ cursor: pointer;
486
+ display: inline-block;
487
+ font-size: 1em;
488
+ font-weight: _font(weight);
489
+ padding-left: (_size(element-height) * 0.6) + 0.75em;
490
+ padding-right: 0.75em;
491
+ position: relative;
492
+
493
+ &:before {
494
+ background: _palette(border-bg);
495
+ border-radius: _size(border-radius);
496
+ border: solid 1px _palette(border);
497
+ content: '';
498
+ display: inline-block;
499
+ font-size: 0.8em;
500
+ height: (_size(element-height) * 0.75);
501
+ left: 0;
502
+ line-height: (_size(element-height) * 0.75);
503
+ position: absolute;
504
+ text-align: center;
505
+ top: 0;
506
+ width: (_size(element-height) * 0.75);
507
+ }
508
+ }
509
+
510
+ &:checked + label {
511
+ &:before {
512
+ background: _palette(dark, bg);
513
+ border-color: _palette(dark, bg);
514
+ color: _palette(dark, fg-bold);
515
+ content: '\f00c';
516
+ }
517
+ }
518
+
519
+ &:focus + label {
520
+ &:before {
521
+ border-color: _palette(accent3);
522
+ }
523
+ }
524
+ }
525
+
526
+ input[type="checkbox"] {
527
+ & + label {
528
+ &:before {
529
+ border-radius: _size(border-radius);
530
+ }
531
+ }
532
+ }
533
+
534
+ input[type="radio"] {
535
+ & + label {
536
+ &:before {
537
+ border-radius: 100%;
538
+ }
539
+ }
540
+ }
541
+
542
+ ::-webkit-input-placeholder {
543
+ color: _palette(fg-light) !important;
544
+ opacity: 1.0;
545
+ }
546
+
547
+ :-moz-placeholder {
548
+ color: _palette(fg-light) !important;
549
+ opacity: 1.0;
550
+ }
551
+
552
+ ::-moz-placeholder {
553
+ color: _palette(fg-light) !important;
554
+ opacity: 1.0;
555
+ }
556
+
557
+ :-ms-input-placeholder {
558
+ color: _palette(fg-light) !important;
559
+ opacity: 1.0;
560
+ }
561
+
562
+ /* Box */
563
+
564
+ .box {
565
+ border-radius: _size(border-radius);
566
+ border: solid 1px _palette(border);
567
+ margin-bottom: _size(element-margin);
568
+ padding: 1.5em;
569
+
570
+ > :last-child,
571
+ > :last-child > :last-child,
572
+ > :last-child > :last-child > :last-child {
573
+ margin-bottom: 0;
574
+ }
575
+
576
+ &.alt {
577
+ border: 0;
578
+ border-radius: 0;
579
+ padding: 0;
580
+ }
581
+ }
582
+
583
+ /* Icon */
584
+
585
+ .icon {
586
+ @include icon;
587
+ border-bottom: none;
588
+ position: relative;
589
+
590
+ > .label {
591
+ display: none;
592
+ }
593
+
594
+ &:before {
595
+ line-height: inherit;
596
+ }
597
+
598
+ &.solid {
599
+ &:before {
600
+ font-weight: 900 !important;
601
+ }
602
+ }
603
+
604
+ &.brands {
605
+ &:before {
606
+ font-family: 'Font Awesome 5 Brands';
607
+ }
608
+ }
609
+
610
+ &.style1 { &:before { color: _palette(accent1); } }
611
+ &.style2 { &:before { color: _palette(accent2); } }
612
+ &.style3 { &:before { color: _palette(accent3); } }
613
+ &.style4 { &:before { color: _palette(accent4); } }
614
+ &.style5 { &:before { color: _palette(accent5); } }
615
+ &.style6 { &:before { color: _palette(accent6); } }
616
+
617
+ &.major {
618
+ @include icon;
619
+ color: _palette(fg-bold);
620
+ cursor: default;
621
+ display: inline-block;
622
+ margin: 0 0 (_size(element-margin) * 0.75) 0;
623
+
624
+ &:before {
625
+ font-size: 4em;
626
+ line-height: 1em;
627
+ }
628
+ }
629
+ }
630
+
631
+ /* Image */
632
+
633
+ .image {
634
+ border-radius: _size(border-radius);
635
+ border: 0;
636
+ display: inline-block;
637
+ position: relative;
638
+
639
+ img {
640
+ border-radius: _size(border-radius);
641
+ display: block;
642
+ }
643
+
644
+ &.left {
645
+ float: left;
646
+ padding: 0 1.5em 1em 0;
647
+ top: 0.25em;
648
+ }
649
+
650
+ &.right {
651
+ float: right;
652
+ padding: 0 0 1em 1.5em;
653
+ top: 0.25em;
654
+ }
655
+
656
+ &.left,
657
+ &.right {
658
+ max-width: 40%;
659
+
660
+ img {
661
+ width: 100%;
662
+ }
663
+ }
664
+
665
+ &.fit {
666
+ display: block;
667
+ margin: 0 0 _size(element-margin) 0;
668
+ width: 100%;
669
+
670
+ img {
671
+ width: 100%;
672
+ }
673
+ }
674
+ }
675
+
676
+ /* List */
677
+
678
+ ol {
679
+ list-style: decimal;
680
+ margin: 0 0 _size(element-margin) 0;
681
+ padding-left: 1.25em;
682
+
683
+ li {
684
+ padding-left: 0.25em;
685
+ }
686
+ }
687
+
688
+ ul {
689
+ list-style: disc;
690
+ margin: 0 0 _size(element-margin) 0;
691
+ padding-left: 1em;
692
+
693
+ li {
694
+ padding-left: 0.5em;
695
+ }
696
+
697
+ &.alt {
698
+ list-style: none;
699
+ padding-left: 0;
700
+
701
+ li {
702
+ border-top: solid 1px _palette(border);
703
+ padding: 0.5em 0;
704
+
705
+ &:first-child {
706
+ border-top: 0;
707
+ padding-top: 0;
708
+ }
709
+ }
710
+ }
711
+ }
712
+
713
+ dl {
714
+ margin: 0 0 _size(element-margin) 0;
715
+ }
716
+
717
+ /* Actions */
718
+
719
+ ul.actions {
720
+ @include vendor('display', 'flex');
721
+ cursor: default;
722
+ list-style: none;
723
+ margin-left: (_size(element-margin) * -0.5);
724
+ padding-left: 0;
725
+
726
+ li {
727
+ padding: 0 0 0 (_size(element-margin) * 0.5);
728
+ vertical-align: middle;
729
+ }
730
+
731
+ &.special {
732
+ @include vendor('justify-content', 'center');
733
+ width: 100%;
734
+ margin-left: 0;
735
+
736
+ li {
737
+ &:first-child {
738
+ padding-left: 0;
739
+ }
740
+ }
741
+ }
742
+
743
+ &.stacked {
744
+ @include vendor('flex-direction', 'column');
745
+ margin-left: 0;
746
+
747
+ li {
748
+ padding: (_size(element-margin) * 0.65) 0 0 0;
749
+
750
+ &:first-child {
751
+ padding-top: 0;
752
+ }
753
+ }
754
+ }
755
+
756
+ &.fit {
757
+ width: calc(100% + #{_size(element-margin) * 0.5});
758
+
759
+ li {
760
+ @include vendor('flex-grow', '1');
761
+ @include vendor('flex-shrink', '1');
762
+ width: 100%;
763
+
764
+ > * {
765
+ width: 100%;
766
+ }
767
+ }
768
+
769
+ &.stacked {
770
+ width: 100%;
771
+ }
772
+ }
773
+
774
+ @include breakpoint('<=xsmall') {
775
+ &:not(.fixed) {
776
+ @include vendor('flex-direction', 'column');
777
+ margin-left: 0;
778
+ width: 100% !important;
779
+
780
+ li {
781
+ @include vendor('flex-grow', '1');
782
+ @include vendor('flex-shrink', '1');
783
+ padding: (_size(element-margin) * 0.5) 0 0 0;
784
+ text-align: center;
785
+ width: 100%;
786
+
787
+ > * {
788
+ width: 100%;
789
+ }
790
+
791
+ &:first-child {
792
+ padding-top: 0;
793
+ }
794
+
795
+ input[type="submit"],
796
+ input[type="reset"],
797
+ input[type="button"],
798
+ button,
799
+ .button {
800
+ width: 100%;
801
+
802
+ &.icon {
803
+ &:before {
804
+ margin-left: -0.5em;
805
+ }
806
+ }
807
+ }
808
+ }
809
+ }
810
+ }
811
+ }
812
+
813
+ /* Icons */
814
+
815
+ ul.icons {
816
+ cursor: default;
817
+ list-style: none;
818
+ padding-left: 0;
819
+
820
+ li {
821
+ display: inline-block;
822
+ padding: 0 1.25em 0 0;
823
+
824
+ &:last-child {
825
+ padding-right: 0;
826
+ }
827
+
828
+ .icon {
829
+ &:before {
830
+ font-size: 1.5em;
831
+ }
832
+ }
833
+ }
834
+ }
835
+
836
+ /* Major Icons */
837
+
838
+ ul.major-icons {
839
+ list-style: none;
840
+ padding-left: 0;
841
+
842
+ li {
843
+ display: inline-block;
844
+ padding: 2.5em;
845
+ text-align: center;
846
+
847
+ .icon {
848
+ @include vendor('transform', 'rotate(45deg)');
849
+ border-radius: _size(border-radius);
850
+ border: solid 1px _palette(border);
851
+ display: inline-block;
852
+ height: 8em;
853
+ line-height: 8em;
854
+ margin: 0;
855
+ text-align: center;
856
+ width: 8em;
857
+
858
+ &:before {
859
+ @include vendor('transform', 'rotate(-45deg)');
860
+ display: inline-block;
861
+ line-height: inherit;
862
+ }
863
+ }
864
+ }
865
+ }
866
+
867
+ /* Table */
868
+
869
+ .table-wrapper {
870
+ -webkit-overflow-scrolling: touch;
871
+ overflow-x: auto;
872
+ }
873
+
874
+ table {
875
+ margin: 0 0 _size(element-margin) 0;
876
+ width: 100%;
877
+
878
+ tbody {
879
+ tr {
880
+ border-left: 0;
881
+ border-right: 0;
882
+
883
+ &:nth-child(2n + 1) {
884
+ background-color: _palette(border-bg);
885
+ }
886
+ }
887
+ }
888
+
889
+ td {
890
+ padding: 0.75em 0.75em;
891
+ }
892
+
893
+ th {
894
+ color: _palette(fg-bold);
895
+ font-size: 0.9em;
896
+ font-weight: _font(weight-bold);
897
+ padding: 0 0.75em 0.75em 0.75em;
898
+ text-align: left;
899
+ }
900
+
901
+ thead {
902
+ border-bottom: solid 1px _palette(border);
903
+ }
904
+
905
+ tfoot {
906
+ border-top: solid 1px _palette(border);
907
+ }
908
+
909
+ &.alt {
910
+ border-collapse: separate;
911
+
912
+ tbody {
913
+ tr {
914
+ td {
915
+ border: solid 1px _palette(border);
916
+ border-left-width: 0;
917
+ border-top-width: 0;
918
+
919
+ &:first-child {
920
+ border-left-width: 1px;
921
+ }
922
+ }
923
+
924
+ &:first-child {
925
+ td {
926
+ border-top-width: 1px;
927
+ }
928
+ }
929
+ }
930
+ }
931
+
932
+ thead {
933
+ border-bottom: 0;
934
+ }
935
+
936
+ tfoot {
937
+ border-top: 0;
938
+ }
939
+ }
940
+ }
941
+
942
+ /* Button */
943
+
944
+ input[type="submit"],
945
+ input[type="reset"],
946
+ input[type="button"],
947
+ button,
948
+ .button {
949
+ @include vendor('appearance', 'none');
950
+ @include vendor('transition', ('background-color #{_duration(transition)} ease-in-out', 'color #{_duration(transition)} ease-in-out'));
951
+ background-color: transparent;
952
+ border-radius: _size(border-radius);
953
+ border: 0;
954
+ box-shadow: inset 0 0 0 1px _palette(border);
955
+ color: _palette(fg-bold) !important;
956
+ cursor: pointer;
957
+ display: inline-block;
958
+ font-size: 0.9em;
959
+ font-weight: _font(weight-bold);
960
+ height: 2.75em;
961
+ letter-spacing: 0.125em;
962
+ line-height: 2.75em;
963
+ padding: 0 2em;
964
+ text-align: center;
965
+ text-decoration: none;
966
+ text-indent: 0.125em;
967
+ text-transform: uppercase;
968
+ white-space: nowrap;
969
+
970
+ &:hover {
971
+ background-color: _palette(border-bg);
972
+ }
973
+
974
+ &:active {
975
+ background-color: _palette(border2-bg);
976
+ }
977
+
978
+ &.icon {
979
+ &:before {
980
+ margin-right: 0.5em;
981
+ }
982
+ }
983
+
984
+ &.fit {
985
+ width: 100%;
986
+ }
987
+
988
+ &.small {
989
+ font-size: 0.7em;
990
+ }
991
+
992
+ &.large {
993
+ font-size: 1.25em;
994
+ }
995
+
996
+ &.wide {
997
+ min-width: 12em;
998
+ }
999
+
1000
+ &.primary {
1001
+ background-color: _palette(fg-bold);
1002
+ box-shadow: none !important;
1003
+ color: _palette(bg) !important;
1004
+
1005
+ &:hover {
1006
+ background-color: lighten(_palette(fg-bold), 5);
1007
+ }
1008
+
1009
+ &:active {
1010
+ background-color: darken(_palette(fg-bold), 5);
1011
+ }
1012
+ }
1013
+
1014
+ &.disabled,
1015
+ &:disabled {
1016
+ cursor: default;
1017
+ opacity: 0.25;
1018
+ }
1019
+ }
1020
+
1021
+ // Dark (mixin)
1022
+
1023
+ @mixin dark($color-this-bg: _palette(dark, bg)) {
1024
+ background-color: $color-this-bg;
1025
+ color: _palette(dark, fg);
1026
+
1027
+ a {
1028
+ border-bottom-color: transparentize(_palette(dark, fg), 0.25);
1029
+
1030
+ &:hover {
1031
+ color: _palette(dark, fg-bold);
1032
+ }
1033
+ }
1034
+
1035
+ h1, h2, h3, h4, h5, h6, strong, b {
1036
+ color: _palette(dark, fg-bold);
1037
+ }
1038
+
1039
+ header {
1040
+ p {
1041
+ color: _palette(dark, fg-bold);
1042
+ }
1043
+
1044
+ &.major {
1045
+ &:after {
1046
+ background: _palette(dark, border);
1047
+ }
1048
+ }
1049
+ }
1050
+
1051
+ input[type="submit"],
1052
+ input[type="reset"],
1053
+ input[type="button"],
1054
+ button,
1055
+ .button {
1056
+ box-shadow: inset 0 0 0 1px _palette(dark, border);
1057
+ color: _palette(dark, fg-bold) !important;
1058
+
1059
+ &:hover {
1060
+ background-color: _palette(dark, border-bg);
1061
+ }
1062
+
1063
+ &:active {
1064
+ background-color: _palette(dark, border2-bg);
1065
+ }
1066
+
1067
+ &.primary {
1068
+ background-color: _palette(dark, fg-bold);
1069
+ box-shadow: inset 0 0 0 1px _palette(dark, border) !important;
1070
+ color: $color-this-bg !important;
1071
+
1072
+ &:hover {
1073
+ background-color: _palette(dark, border-bg) !important;
1074
+ color: _palette(dark, fg-bold) !important;
1075
+ }
1076
+
1077
+ &:active {
1078
+ background-color: _palette(dark, border2-bg) !important;
1079
+ }
1080
+ }
1081
+ }
1082
+
1083
+ ul {
1084
+ &.major-icons {
1085
+ li {
1086
+ .icon {
1087
+ border-color: _palette(dark, border);
1088
+ }
1089
+ }
1090
+ }
1091
+ }
1092
+
1093
+ .icon {
1094
+ &.major {
1095
+ color: _palette(dark, fg-bold);
1096
+ }
1097
+ }
1098
+ }
1099
+
1100
+ /* Main */
1101
+
1102
+ .main {
1103
+ @include padding(6em, 0);
1104
+
1105
+ &.style1 {
1106
+ background: _palette(bg);
1107
+ }
1108
+
1109
+ &.style2 {
1110
+ @include dark(#333);
1111
+ background-attachment: fixed, fixed;
1112
+ background-image: url('images/overlay1.png'), url('../../images/header.jpg');
1113
+ background-size: auto, cover;
1114
+ }
1115
+ }
1116
+
1117
+ /* Header */
1118
+
1119
+ #header {
1120
+ @include padding(9em, 0, (0,0,_size(element-margin),0));
1121
+ @include dark(#4686a0);
1122
+ background-attachment: fixed, fixed, fixed;
1123
+ background-image: url('images/overlay2.png'), url('images/overlay3.svg'), linear-gradient(45deg, _palette(accent1-alt) 5%, _palette(accent3-alt) 30%, _palette(accent6-alt));
1124
+ background-position: top left, center center, center center;
1125
+ background-size: auto, cover, cover;
1126
+ overflow: hidden;
1127
+ position: relative;
1128
+ text-align: center;
1129
+
1130
+ h1 {
1131
+ margin: 0;
1132
+ }
1133
+
1134
+ p {
1135
+ margin: (_size(element-margin) * 0.5) 0 0 0;
1136
+ }
1137
+
1138
+ .actions {
1139
+ @include vendor('justify-content', 'center');
1140
+ margin-top: (_size(element-margin) * 1.25);
1141
+ margin-left: 0;
1142
+ position: relative;
1143
+
1144
+ li {
1145
+ &:first-child {
1146
+ padding-left: 0;
1147
+ }
1148
+ }
1149
+
1150
+ &:after {
1151
+ background: _palette(dark, border);
1152
+ content: '';
1153
+ height: 100vh;
1154
+ left: 50%;
1155
+ position: absolute;
1156
+ top: 100%;
1157
+ width: 1px;
1158
+ }
1159
+ }
1160
+
1161
+ .inner {
1162
+ @include vendor('transition', ('transform 1.5s ease', 'opacity 2s ease'));
1163
+ @include vendor('transition-delay', '0.25s');
1164
+ @include vendor('transform', 'scale(1)');
1165
+ opacity: 1;
1166
+ position: relative;
1167
+ z-index: 1;
1168
+
1169
+ .actions {
1170
+ @include vendor('transition', 'transform 1.25s ease');
1171
+ @include vendor('transition-delay', '1s');
1172
+ @include vendor('transform', 'translateY(0)');
1173
+ opacity: 1;
1174
+ }
1175
+ }
1176
+
1177
+ &:after {
1178
+ @include vendor('transition', 'opacity 1s ease');
1179
+ background-image: linear-gradient(45deg, _palette(accent3-alt), _palette(accent6-alt));
1180
+ content: '';
1181
+ height: 100%;
1182
+ left: 0;
1183
+ opacity: 0;
1184
+ position: absolute;
1185
+ top: 0;
1186
+ width: 100%;
1187
+ }
1188
+ }
1189
+
1190
+ body.is-preload {
1191
+ #header {
1192
+ .inner {
1193
+ @include vendor('transform', 'scale(1.05)');
1194
+ opacity: 0;
1195
+
1196
+ .actions {
1197
+ @include vendor('transform', 'translateY(30em)');
1198
+ opacity: 0;
1199
+ }
1200
+ }
1201
+
1202
+ &:after {
1203
+ opacity: 1;
1204
+ }
1205
+ }
1206
+ }
1207
+
1208
+ /* Footer */
1209
+
1210
+ #footer {
1211
+ @include padding(6em, 0, (0,0,_size(element-margin),0));
1212
+ @include dark(#4686a0);
1213
+ background-attachment: fixed, fixed, fixed;
1214
+ background-image: url('images/overlay2.png'), url('images/overlay4.svg'), linear-gradient(45deg, _palette(accent6-alt), _palette(accent3-alt) 50%, _palette(accent1-alt) 95%);
1215
+ background-position: top left, center center, center center;
1216
+ background-size: auto, cover, cover;
1217
+ text-align: center;
1218
+
1219
+ .icons {
1220
+ margin: 0;
1221
+ }
1222
+
1223
+ .copyright {
1224
+ font-size: 0.8em;
1225
+ list-style: none;
1226
+ margin: _size(element-margin) 0 0 0;
1227
+ padding: 0;
1228
+
1229
+ li {
1230
+ border-left: solid 1px;
1231
+ display: inline-block;
1232
+ line-height: 1em;
1233
+ margin-left: 1em;
1234
+ padding: 0 0 0 1em;
1235
+
1236
+ &:first-child {
1237
+ border-left: 0;
1238
+ margin-left: 0;
1239
+ padding: 0;
1240
+ }
1241
+ }
1242
+ }
1243
+ }
1244
+
1245
+ /* XLarge */
1246
+
1247
+ @include breakpoint('<=xlarge') {
1248
+
1249
+ /* Basic */
1250
+
1251
+ body, input, select, textarea {
1252
+ font-size: 14pt;
1253
+ }
1254
+
1255
+ /* Header */
1256
+
1257
+ #header {
1258
+ @include padding(6em, 0, (0,0,_size(element-margin),0));
1259
+ }
1260
+
1261
+ }
1262
+
1263
+ /* Large */
1264
+
1265
+ @include breakpoint('<=large') {
1266
+
1267
+ /* Basic */
1268
+
1269
+ body, input, select, textarea {
1270
+ font-size: 13pt;
1271
+ }
1272
+
1273
+ h1, h2, h3, h4, h5, h6 {
1274
+ br {
1275
+ display: none;
1276
+ }
1277
+ }
1278
+
1279
+ /* List */
1280
+
1281
+ ul {
1282
+ &.major-icons {
1283
+ li {
1284
+ padding: 2em;
1285
+
1286
+ .icon {
1287
+ height: 8em;
1288
+ line-height: 8em;
1289
+ width: 8em;
1290
+ }
1291
+ }
1292
+ }
1293
+ }
1294
+
1295
+ /* Main */
1296
+
1297
+ .main {
1298
+ @include padding(4em, 0);
1299
+
1300
+ &.style2 {
1301
+ background-attachment: scroll;
1302
+ }
1303
+ }
1304
+
1305
+ /* Header */
1306
+
1307
+ #header {
1308
+ @include padding(5em, 0, (0,0,_size(element-margin),0));
1309
+ background-attachment: scroll;
1310
+
1311
+ br {
1312
+ display: inline;
1313
+ }
1314
+ }
1315
+
1316
+ /* Footer */
1317
+
1318
+ #footer {
1319
+ @include padding(4em, 0, (0,0,_size(element-margin),0));
1320
+ background-attachment: scroll;
1321
+ }
1322
+
1323
+ }
1324
+
1325
+ /* Medium */
1326
+
1327
+ @include breakpoint('<=medium') {
1328
+
1329
+ /* List */
1330
+
1331
+ ul {
1332
+ &.major-icons {
1333
+ li {
1334
+ padding: 2em;
1335
+
1336
+ .icon {
1337
+ height: 7em;
1338
+ line-height: 7em;
1339
+ width: 7em;
1340
+ }
1341
+ }
1342
+ }
1343
+ }
1344
+
1345
+ /* Main */
1346
+
1347
+ .main {
1348
+ @include padding(5em, 3em);
1349
+ }
1350
+
1351
+ /* Header */
1352
+
1353
+ #header {
1354
+ @include padding(8em, 3em, (0,0,_size(element-margin),0));
1355
+ }
1356
+
1357
+ /* Footer */
1358
+
1359
+ #footer {
1360
+ @include padding(5em, 3em, (0,0,_size(element-margin),0));
1361
+ }
1362
+
1363
+ /* One */
1364
+
1365
+ #one {
1366
+ text-align: center;
1367
+ }
1368
+
1369
+ /* Two */
1370
+
1371
+ #two {
1372
+ text-align: center;
1373
+ }
1374
+
1375
+ }
1376
+
1377
+ /* Small */
1378
+
1379
+ @include breakpoint('<=small') {
1380
+
1381
+ /* Basic */
1382
+
1383
+ body, input, select, textarea {
1384
+ font-size: 12pt;
1385
+ }
1386
+
1387
+ h1 {
1388
+ font-size: 1.75em;
1389
+ }
1390
+
1391
+ h2 {
1392
+ font-size: 1.5em;
1393
+ }
1394
+
1395
+ h3 {
1396
+ font-size: 1.1em;
1397
+ }
1398
+
1399
+ h4 {
1400
+ font-size: 1em;
1401
+ }
1402
+
1403
+ /* List */
1404
+
1405
+ ul {
1406
+ &.major-icons {
1407
+ li {
1408
+ padding: 1.5em;
1409
+
1410
+ .icon {
1411
+ height: 5em;
1412
+ line-height: 5em;
1413
+ width: 5em;
1414
+
1415
+ &:before {
1416
+ font-size: 42px;
1417
+ }
1418
+ }
1419
+ }
1420
+ }
1421
+ }
1422
+
1423
+ /* Icon */
1424
+
1425
+ .icon {
1426
+ &.major {
1427
+ margin: 0 0 (_size(element-margin) * 0.5) 0;
1428
+ }
1429
+ }
1430
+
1431
+ /* Button */
1432
+
1433
+ input[type="submit"],
1434
+ input[type="reset"],
1435
+ input[type="button"],
1436
+ button,
1437
+ .button {
1438
+ height: 3em;
1439
+ line-height: 3em;
1440
+ }
1441
+
1442
+ /* Main */
1443
+
1444
+ .main {
1445
+ @include padding(3em, 1.5em);
1446
+ }
1447
+
1448
+ /* Header */
1449
+
1450
+ #header {
1451
+ @include padding(4em, 3em, (0,0,_size(element-margin),0));
1452
+
1453
+ .actions {
1454
+ margin: _size(element-margin) 0 0 0;
1455
+ }
1456
+ }
1457
+
1458
+ /* Footer */
1459
+
1460
+ #footer {
1461
+ @include padding(3em, 1.5em, (0,0,_size(element-margin),0));
1462
+ }
1463
+
1464
+ }
1465
+
1466
+ /* XSmall */
1467
+
1468
+ @include breakpoint('<=xsmall') {
1469
+
1470
+ /* Button */
1471
+
1472
+ input[type="submit"],
1473
+ input[type="reset"],
1474
+ input[type="button"],
1475
+ .button {
1476
+ padding: 0;
1477
+ }
1478
+
1479
+ /* Main */
1480
+
1481
+ .main {
1482
+ @include padding(2em, 1.5em);
1483
+ }
1484
+
1485
+ /* Header */
1486
+
1487
+ #header {
1488
+ @include padding(4em, 2em, (0,0,_size(element-margin),0));
1489
+
1490
+ br {
1491
+ display: none;
1492
+ }
1493
+ }
1494
+
1495
+ /* Footer */
1496
+
1497
+ #footer {
1498
+ @include padding(2em, 1.5em, (0,0,_size(element-margin),0));
1499
+
1500
+ .copyright {
1501
+ margin: (_size(element-margin) * 0.75) 0 0 0;
1502
+
1503
+ li {
1504
+ border: 0;
1505
+ display: block;
1506
+ margin: 1em 0 0 0;
1507
+ padding: 0;
1508
+
1509
+ &:first-child {
1510
+ margin-top: 0;
1511
+ }
1512
+ }
1513
+ }
1514
+ }
1515
+
1516
+ }
1517
+
1518
+ /* XXSmall */
1519
+
1520
+ @include breakpoint('<=xxsmall') {
1521
+
1522
+ /* Basic */
1523
+
1524
+ html, body {
1525
+ min-width: 320px;
1526
+ }
1527
+
1528
+ /* Main */
1529
+
1530
+ .main {
1531
+ @include padding(2em, 1em);
1532
+ }
1533
+
1534
+ /* Header */
1535
+
1536
+ #header {
1537
+ @include padding(3em, 1em, (0,0,_size(element-margin),0));
1538
+ }
1539
+
1540
+ /* Footer */
1541
+
1542
+ #footer {
1543
+ @include padding(2em, 1em, (0,0,_size(element-margin),0));
1544
+ }
1545
+
1546
+ }
public/assets/sass/noscript.scss ADDED
@@ -0,0 +1,32 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ @import 'libs/vars';
2
+ @import 'libs/functions';
3
+ @import 'libs/mixins';
4
+ @import 'libs/vendor';
5
+ @import 'libs/breakpoints';
6
+ @import 'libs/html-grid';
7
+
8
+ /*
9
+ Photon by HTML5 UP
10
+ html5up.net | @ajlkn
11
+ Free for personal and commercial use under the CCA 3.0 license (html5up.net/license)
12
+ */
13
+
14
+ /* Header */
15
+
16
+ body.is-preload {
17
+ #header {
18
+ .inner {
19
+ @include vendor('transform', 'none');
20
+ opacity: 1;
21
+
22
+ .actions {
23
+ @include vendor('transform', 'none');
24
+ opacity: 1;
25
+ }
26
+ }
27
+
28
+ &:after {
29
+ opacity: 0;
30
+ }
31
+ }
32
+ }
public/assets/webfonts/fa-brands-400.eot ADDED
Binary file (134 kB). View file
 
public/assets/webfonts/fa-brands-400.svg ADDED
public/assets/webfonts/fa-brands-400.ttf ADDED
Binary file (134 kB). View file
 
public/assets/webfonts/fa-brands-400.woff ADDED
Binary file (90 kB). View file
 
public/assets/webfonts/fa-brands-400.woff2 ADDED
Binary file (76.7 kB). View file
 
public/assets/webfonts/fa-regular-400.eot ADDED
Binary file (34 kB). View file
 
public/assets/webfonts/fa-regular-400.svg ADDED
public/assets/webfonts/fa-regular-400.ttf ADDED
Binary file (33.7 kB). View file
 
public/assets/webfonts/fa-regular-400.woff ADDED
Binary file (16.3 kB). View file
 
public/assets/webfonts/fa-regular-400.woff2 ADDED
Binary file (13.2 kB). View file
 
public/assets/webfonts/fa-solid-900.eot ADDED
Binary file (203 kB). View file
 
public/assets/webfonts/fa-solid-900.svg ADDED
public/assets/webfonts/fa-solid-900.ttf ADDED
Binary file (203 kB). View file