brave-real-launcher 1.2.31 → 1.2.33

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -40,6 +40,9 @@ const flags_js_1 = require("./flags.js");
40
40
  const utils_js_1 = require("./utils.js");
41
41
  const child_process_1 = require("child_process");
42
42
  const logger_js_1 = __importDefault(require("./logger.js"));
43
+ const extension_manager_js_1 = require("./extension-manager.js");
44
+ const brave_installer_js_1 = require("./brave-installer.js");
45
+ const stealth_utils_js_1 = require("./stealth-utils.js");
43
46
  const isWsl = (0, utils_js_1.getPlatform)() === 'wsl';
44
47
  const isWindows = (0, utils_js_1.getPlatform)() === 'win32';
45
48
  const _SIGINT = 'SIGINT';
@@ -72,6 +75,7 @@ async function launch(opts = {}) {
72
75
  process: instance.braveProcess,
73
76
  remoteDebuggingPipes: instance.remoteDebuggingPipes,
74
77
  xvfbManager: instance.xvfbManager,
78
+ extensions: instance.loadedExtensions,
75
79
  kill,
76
80
  };
77
81
  }
@@ -105,6 +109,7 @@ class Launcher {
105
109
  constructor(opts = {}, moduleOverrides = {}) {
106
110
  this.opts = opts;
107
111
  this.tmpDirandPidFileReady = false;
112
+ this.loadedExtensions = [];
108
113
  this.remoteDebuggingPipes = null;
109
114
  this.fs = moduleOverrides.fs || fs;
110
115
  this.spawn = moduleOverrides.spawn || child_process_1.spawn;
@@ -123,6 +128,12 @@ class Launcher {
123
128
  this.launchMode = (0, utils_js_1.defaults)(this.opts.launchMode, 'auto');
124
129
  this.enableXvfb = (0, utils_js_1.defaults)(this.opts.enableXvfb, false);
125
130
  this.xvfbOptions = (0, utils_js_1.defaults)(this.opts.xvfbOptions, {});
131
+ // New features initialization
132
+ this.extensions = (0, utils_js_1.defaults)(this.opts.extensions, []);
133
+ this.autoLoadUBlock = (0, utils_js_1.defaults)(this.opts.autoLoadUBlock, false);
134
+ this.autoInstall = (0, utils_js_1.defaults)(this.opts.autoInstall, false);
135
+ this.enableStealth = (0, utils_js_1.defaults)(this.opts.enableStealth, false);
136
+ this.userAgent = this.opts.userAgent;
126
137
  if (typeof this.opts.userDataDir === 'boolean') {
127
138
  if (!this.opts.userDataDir) {
128
139
  this.useDefaultProfile = true;
@@ -159,10 +170,39 @@ class Launcher {
159
170
  if (effectiveLaunchMode === 'headless') {
160
171
  flags.push('--headless');
161
172
  }
173
+ // Add stealth mode flags
174
+ if (this.enableStealth) {
175
+ flags.push(...(0, stealth_utils_js_1.getStealthFlags)(this.userAgent));
176
+ logger_js_1.default.verbose('BraveLauncher', 'Stealth mode enabled');
177
+ }
178
+ else if (this.userAgent) {
179
+ flags.push(`--user-agent=${this.userAgent}`);
180
+ }
181
+ // Add extension flags
182
+ const extensionPaths = this.getExtensionPaths();
183
+ if (extensionPaths.length > 0) {
184
+ flags.push(`--load-extension=${extensionPaths.join(',')}`);
185
+ // Enable extensions when loading custom extensions
186
+ const disableExtIndex = flags.indexOf('--disable-extensions');
187
+ if (disableExtIndex > -1) {
188
+ flags.splice(disableExtIndex, 1);
189
+ }
190
+ logger_js_1.default.verbose('BraveLauncher', `Loading ${extensionPaths.length} extension(s)`);
191
+ }
162
192
  flags.push(...this.braveFlags);
163
193
  flags.push(this.startingUrl);
164
194
  return flags;
165
195
  }
196
+ getExtensionPaths() {
197
+ const paths = [...this.extensions];
198
+ // Add loaded extension paths
199
+ for (const ext of this.loadedExtensions) {
200
+ if (ext.path && !paths.includes(ext.path)) {
201
+ paths.push(ext.path);
202
+ }
203
+ }
204
+ return paths;
205
+ }
166
206
  determineEffectiveLaunchMode() {
167
207
  if (this.launchMode === 'headless') {
168
208
  return 'headless';
@@ -213,6 +253,29 @@ class Launcher {
213
253
  logger_js_1.default.verbose('BraveLauncher', 'Xvfb setup completed');
214
254
  }
215
255
  }
256
+ /**
257
+ * Load uBlock Origin extension
258
+ */
259
+ async loadUBlockOrigin() {
260
+ try {
261
+ logger_js_1.default.verbose('BraveLauncher', 'Loading uBlock Origin extension...');
262
+ this.extensionManager = new extension_manager_js_1.ExtensionManager({
263
+ autoUpdate: true,
264
+ silent: this.opts.logLevel === 'silent'
265
+ });
266
+ const ublock = await this.extensionManager.getUBlockOrigin();
267
+ if (ublock) {
268
+ this.loadedExtensions.push(ublock);
269
+ logger_js_1.default.log('BraveLauncher', `uBlock Origin v${ublock.version} loaded from ${ublock.path}`);
270
+ }
271
+ else {
272
+ logger_js_1.default.warn('BraveLauncher', 'Failed to load uBlock Origin');
273
+ }
274
+ }
275
+ catch (error) {
276
+ logger_js_1.default.error('BraveLauncher', `Error loading uBlock Origin: ${error.message}`);
277
+ }
278
+ }
216
279
  prepare() {
217
280
  const platform = (0, utils_js_1.getPlatform)();
218
281
  if (!_SUPPORTED_PLATFORMS.has(platform)) {
@@ -229,34 +292,112 @@ class Launcher {
229
292
  this.tmpDirandPidFileReady = true;
230
293
  }
231
294
  setBrowserPrefs() {
232
- // don't set prefs if not defined
233
- if (Object.keys(this.prefs).length === 0) {
234
- return;
235
- }
236
295
  const profileDir = `${this.userDataDir}/Default`;
237
296
  if (!this.fs.existsSync(profileDir)) {
238
297
  this.fs.mkdirSync(profileDir, { recursive: true });
239
298
  }
299
+ // Set Brave-specific preferences to disable P3A analytics banner
300
+ const braveDefaultPrefs = {
301
+ "brave": {
302
+ "p3a": {
303
+ "enabled": false,
304
+ "notice_acknowledged": true
305
+ },
306
+ "stats": {
307
+ "reporting_enabled": false
308
+ },
309
+ "shields": {
310
+ "stats_badge_visible": false
311
+ }
312
+ }
313
+ };
314
+ // Merge with user-provided prefs
315
+ const mergedPrefs = this.deepMerge(braveDefaultPrefs, this.prefs);
240
316
  const preferenceFile = `${profileDir}/Preferences`;
241
317
  try {
242
318
  if (this.fs.existsSync(preferenceFile)) {
243
319
  // overwrite existing file
244
320
  const file = this.fs.readFileSync(preferenceFile, 'utf-8');
245
321
  const content = JSON.parse(file);
246
- this.fs.writeFileSync(preferenceFile, JSON.stringify({ ...content, ...this.prefs }), 'utf-8');
322
+ this.fs.writeFileSync(preferenceFile, JSON.stringify(this.deepMerge(content, mergedPrefs)), 'utf-8');
247
323
  }
248
324
  else {
249
325
  // create new Preference file
250
- this.fs.writeFileSync(preferenceFile, JSON.stringify({ ...this.prefs }), 'utf-8');
326
+ this.fs.writeFileSync(preferenceFile, JSON.stringify(mergedPrefs), 'utf-8');
251
327
  }
252
328
  }
253
329
  catch (err) {
254
330
  logger_js_1.default.log('BraveLauncher', `Failed to set browser prefs: ${err.message}`);
255
331
  }
332
+ // Also set Local State preferences for P3A
333
+ this.setLocalStatePrefs();
334
+ }
335
+ setLocalStatePrefs() {
336
+ const localStateFile = `${this.userDataDir}/Local State`;
337
+ // Comprehensive P3A and analytics disable settings
338
+ const localStatePrefs = {
339
+ "user_experience_metrics": {
340
+ "reporting_enabled": false,
341
+ "consent_given": false
342
+ },
343
+ "brave": {
344
+ "p3a": {
345
+ "enabled": false,
346
+ "notice_acknowledged": true,
347
+ "consent_given": false
348
+ },
349
+ "p3a_notice_acknowledged": true,
350
+ "stats": {
351
+ "reporting_enabled": false,
352
+ "usage_ping_enabled": false
353
+ },
354
+ "weekly_storage": false,
355
+ "referral": {
356
+ "checked_for_promo_code_file": true,
357
+ "initialized": true
358
+ }
359
+ },
360
+ "browser": {
361
+ "has_seen_welcome_page": true
362
+ },
363
+ "ntp": {
364
+ "shortcutsInitialized": true
365
+ }
366
+ };
367
+ try {
368
+ if (this.fs.existsSync(localStateFile)) {
369
+ const file = this.fs.readFileSync(localStateFile, 'utf-8');
370
+ const content = JSON.parse(file);
371
+ this.fs.writeFileSync(localStateFile, JSON.stringify(this.deepMerge(content, localStatePrefs)), 'utf-8');
372
+ }
373
+ else {
374
+ this.fs.writeFileSync(localStateFile, JSON.stringify(localStatePrefs), 'utf-8');
375
+ }
376
+ logger_js_1.default.verbose('BraveLauncher', 'Local State preferences set for P3A disabled');
377
+ }
378
+ catch (err) {
379
+ logger_js_1.default.verbose('BraveLauncher', `Failed to set Local State prefs: ${err.message}`);
380
+ }
381
+ }
382
+ deepMerge(target, source) {
383
+ const result = { ...target };
384
+ for (const key of Object.keys(source)) {
385
+ if (source[key] instanceof Object && key in target && target[key] instanceof Object) {
386
+ result[key] = this.deepMerge(target[key], source[key]);
387
+ }
388
+ else {
389
+ result[key] = source[key];
390
+ }
391
+ }
392
+ return result;
256
393
  }
257
394
  async launch() {
258
395
  // Setup Xvfb first if needed
259
396
  await this.setupXvfb();
397
+ // Load uBlock Origin if requested
398
+ if (this.autoLoadUBlock) {
399
+ await this.loadUBlockOrigin();
400
+ }
260
401
  if (this.requestedPort !== 0) {
261
402
  this.port = this.requestedPort;
262
403
  // If an explict port is passed first look for an open connection...
@@ -275,9 +416,26 @@ class Launcher {
275
416
  if (this.bravePath === undefined) {
276
417
  const installation = Launcher.getFirstInstallation();
277
418
  if (!installation) {
278
- throw new utils_js_1.BraveNotInstalledError();
419
+ // Try auto-install if enabled
420
+ if (this.autoInstall) {
421
+ logger_js_1.default.log('BraveLauncher', 'Brave not found, attempting auto-install...');
422
+ const installer = new brave_installer_js_1.BraveInstaller({ silent: false });
423
+ const result = await installer.install();
424
+ if (result.success && result.bravePath) {
425
+ this.bravePath = result.bravePath;
426
+ logger_js_1.default.log('BraveLauncher', `Brave installed successfully at ${this.bravePath}`);
427
+ }
428
+ else {
429
+ throw new utils_js_1.BraveNotInstalledError();
430
+ }
431
+ }
432
+ else {
433
+ throw new utils_js_1.BraveNotInstalledError();
434
+ }
435
+ }
436
+ else {
437
+ this.bravePath = installation;
279
438
  }
280
- this.bravePath = installation;
281
439
  }
282
440
  if (!this.tmpDirandPidFileReady) {
283
441
  this.prepare();
@@ -427,7 +585,12 @@ class Launcher {
427
585
  }
428
586
  destroyTmp() {
429
587
  if (this.outFile) {
430
- this.fs.closeSync(this.outFile);
588
+ try {
589
+ this.fs.closeSync(this.outFile);
590
+ }
591
+ catch (err) {
592
+ logger_js_1.default.verbose('BraveLauncher', `Could not close outFile: ${err.message}`);
593
+ }
431
594
  delete this.outFile;
432
595
  }
433
596
  // Only clean up the tmp dir if we created it.
@@ -435,13 +598,42 @@ class Launcher {
435
598
  return;
436
599
  }
437
600
  if (this.errFile) {
438
- this.fs.closeSync(this.errFile);
601
+ try {
602
+ this.fs.closeSync(this.errFile);
603
+ }
604
+ catch (err) {
605
+ logger_js_1.default.verbose('BraveLauncher', `Could not close errFile: ${err.message}`);
606
+ }
439
607
  delete this.errFile;
440
608
  }
441
- // backwards support for node v12 + v14.14+
442
- // https://nodejs.org/api/deprecations.html#DEP0147
443
- const rmSync = this.fs.rmSync || this.fs.rmdirSync;
444
- rmSync(this.userDataDir, { recursive: true, force: true, maxRetries: 10 });
609
+ // Windows-specific: Add delay and retry logic for temp cleanup
610
+ // Browser process may still be releasing file locks
611
+ const cleanupWithRetry = (retries = 5, delayMs = 500) => {
612
+ try {
613
+ // backwards support for node v12 + v14.14+
614
+ // https://nodejs.org/api/deprecations.html#DEP0147
615
+ const rmSync = this.fs.rmSync || this.fs.rmdirSync;
616
+ rmSync(this.userDataDir, { recursive: true, force: true, maxRetries: 10 });
617
+ logger_js_1.default.verbose('BraveLauncher', `Successfully cleaned up ${this.userDataDir}`);
618
+ }
619
+ catch (err) {
620
+ if (retries > 0 && (err.code === 'EPERM' || err.code === 'EBUSY' || err.code === 'ENOTEMPTY')) {
621
+ logger_js_1.default.verbose('BraveLauncher', `Cleanup retry ${6 - retries}/5 - waiting for file locks to release...`);
622
+ // Use setTimeout for async cleanup, don't block
623
+ setTimeout(() => cleanupWithRetry(retries - 1, delayMs * 1.5), delayMs);
624
+ }
625
+ else if (err.code === 'ENOENT') {
626
+ // Directory already deleted, ignore
627
+ logger_js_1.default.verbose('BraveLauncher', `Temp directory already cleaned up`);
628
+ }
629
+ else {
630
+ // Log but don't throw - cleanup failure shouldn't crash the app
631
+ logger_js_1.default.warn('BraveLauncher', `Could not clean up temp directory: ${err.message}`);
632
+ }
633
+ }
634
+ };
635
+ // Start cleanup with retry logic
636
+ cleanupWithRetry();
445
637
  }
446
638
  }
447
639
  exports.Launcher = Launcher;
@@ -456,4 +648,4 @@ function findBrave() {
456
648
  return Launcher.getFirstInstallation();
457
649
  }
458
650
  exports.findBrave = findBrave;
459
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJhdmUtbGF1bmNoZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvYnJhdmUtbGF1bmNoZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7R0FJRztBQUNILFlBQVksQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFHYix1Q0FBeUI7QUFDekIseUNBQTJCO0FBQzNCLCtEQUFpRDtBQUNqRCxxREFBK0M7QUFDL0MseUNBQXlDO0FBQ3pDLHlDQUFzTjtBQUV0TixpREFBK0M7QUFDL0MsNERBQThCO0FBRTlCLE1BQU0sS0FBSyxHQUFHLElBQUEsc0JBQVcsR0FBRSxLQUFLLEtBQUssQ0FBQztBQUN0QyxNQUFNLFNBQVMsR0FBRyxJQUFBLHNCQUFXLEdBQUUsS0FBSyxPQUFPLENBQUM7QUFDNUMsTUFBTSxPQUFPLEdBQUcsUUFBUSxDQUFDO0FBQ3pCLE1BQU0saUJBQWlCLEdBQUcsR0FBRyxDQUFDO0FBQzlCLE1BQU0sb0JBQW9CLEdBQUcsSUFBSSxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO0FBSTFFLE1BQU0sU0FBUyxHQUFHLElBQUksR0FBRyxFQUFZLENBQUM7QUEwQ3RDLE1BQU0sY0FBYyxHQUFHLEdBQUcsRUFBRTtJQUMxQixPQUFPLEVBQUUsQ0FBQztJQUNWLE9BQU8sQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQztBQUNsQyxDQUFDLENBQUM7QUFFRixLQUFLLFVBQVUsTUFBTSxDQUFDLE9BQWdCLEVBQUU7SUFDdEMsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFBLG1CQUFRLEVBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsQ0FBQztJQUV0RCxNQUFNLFFBQVEsR0FBRyxJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUVwQyxnREFBZ0Q7SUFDaEQsSUFBSSxJQUFJLENBQUMsWUFBWSxJQUFJLFNBQVMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxFQUFFO1FBQzdDLE9BQU8sQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLGNBQWMsQ0FBQyxDQUFDO0tBQ3JDO0lBQ0QsU0FBUyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUV4QixNQUFNLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUV4QixNQUFNLElBQUksR0FBRyxHQUFHLEVBQUU7UUFDaEIsU0FBUyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUMzQixJQUFJLFNBQVMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxFQUFFO1lBQ3hCLE9BQU8sQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLGNBQWMsQ0FBQyxDQUFDO1NBQ2pEO1FBQ0QsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ2xCLENBQUMsQ0FBQztJQUVGLE9BQU87UUFDTCxHQUFHLEVBQUUsUUFBUSxDQUFDLEdBQUk7UUFDbEIsSUFBSSxFQUFFLFFBQVEsQ0FBQyxJQUFLO1FBQ3BCLE9BQU8sRUFBRSxRQUFRLENBQUMsWUFBYTtRQUMvQixvQkFBb0IsRUFBRSxRQUFRLENBQUMsb0JBQW9CO1FBQ25ELFdBQVcsRUFBRSxRQUFRLENBQUMsV0FBVztRQUNqQyxJQUFJO0tBQ0wsQ0FBQztBQUNKLENBQUM7QUEwY2lCLHdCQUFNO0FBeGN4QixrRkFBa0Y7QUFDbEYsU0FBUyxZQUFZO0lBQ25CLE1BQU0sWUFBWSxHQUFHLFFBQVEsQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO0lBQ3JELElBQUksQ0FBQyxZQUFZLEVBQUU7UUFDakIsTUFBTSxJQUFJLGlDQUFzQixFQUFFLENBQUM7S0FDcEM7SUFDRCxPQUFPLFlBQVksQ0FBQztBQUN0QixDQUFDO0FBaWNrQyxvQ0FBWTtBQS9iL0MsU0FBUyxPQUFPO0lBQ2QsSUFBSSxNQUFNLEdBQUcsRUFBRSxDQUFDO0lBQ2hCLEtBQUssTUFBTSxRQUFRLElBQUksU0FBUyxFQUFFO1FBQ2hDLElBQUk7WUFDRixRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDaEIsb0NBQW9DO1lBQ3BDLGtEQUFrRDtZQUNsRCxTQUFTLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1NBQzVCO1FBQUMsT0FBTyxHQUFHLEVBQUU7WUFDWixNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ2xCO0tBQ0Y7SUFDRCxPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDO0FBa2J5QiwwQkFBTztBQWhiakMsTUFBTSxRQUFRO0lBOEJaLFlBQW9CLE9BQWdCLEVBQUUsRUFBRSxrQkFBbUMsRUFBRTtRQUF6RCxTQUFJLEdBQUosSUFBSSxDQUFjO1FBN0I5QiwwQkFBcUIsR0FBRyxLQUFLLENBQUM7UUF5QnRDLHlCQUFvQixHQUE4QixJQUFJLENBQUM7UUFLckQsSUFBSSxDQUFDLEVBQUUsR0FBRyxlQUFlLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQztRQUNuQyxJQUFJLENBQUMsS0FBSyxHQUFHLGVBQWUsQ0FBQyxLQUFLLElBQUkscUJBQUssQ0FBQztRQUU1QyxtQkFBRyxDQUFDLFFBQVEsQ0FBQyxJQUFBLG1CQUFRLEVBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQztRQUVyRCxpQ0FBaUM7UUFDakMsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFBLG1CQUFRLEVBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsYUFBYSxDQUFDLENBQUM7UUFDbEUsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFBLG1CQUFRLEVBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDckQsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFBLG1CQUFRLEVBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDM0MsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFBLG1CQUFRLEVBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDakQsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDO1FBQzFDLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUM7UUFDckMsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUEsbUJBQVEsRUFBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGtCQUFrQixFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ3hFLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxJQUFBLG1CQUFRLEVBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUM5RSxJQUFJLENBQUMsb0JBQW9CLEdBQUcsSUFBQSxtQkFBUSxFQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDekUsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFBLG1CQUFRLEVBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUN0RSxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUEsbUJBQVEsRUFBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUN6RCxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUEsbUJBQVEsRUFBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUN4RCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUEsbUJBQVEsRUFBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUV2RCxJQUFJLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEtBQUssU0FBUyxFQUFFO1lBQzlDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRTtnQkFDMUIsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQztnQkFDOUIsSUFBSSxDQUFDLFdBQVcsR0FBRyxTQUFTLENBQUM7YUFDOUI7aUJBQU07Z0JBQ0wsTUFBTSxJQUFJLHdDQUE2QixFQUFFLENBQUM7YUFDM0M7U0FDRjthQUFNO1lBQ0wsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEtBQUssQ0FBQztZQUMvQixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDO1NBQzFDO1FBRUQseUVBQXlFO1FBQ3pFLElBQUksQ0FBQyxzQkFBc0I7WUFDdkIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLHlCQUF5QixDQUFDLENBQUMsQ0FBQztJQUN6RSxDQUFDO0lBRUQsSUFBWSxLQUFLO1FBQ2YsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLHdCQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7UUFFbkUsZ0VBQWdFO1FBQ2hFLElBQUksSUFBSSxDQUFDLElBQUksRUFBRTtZQUNiLEtBQUssQ0FBQyxJQUFJLENBQUMsMkJBQTJCLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1NBQ3BEO1FBRUQsSUFBSSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsSUFBSSxJQUFBLHNCQUFXLEdBQUUsS0FBSyxPQUFPLEVBQUU7WUFDekQsS0FBSyxDQUFDLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO1NBQ3hDO1FBRUQsSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRTtZQUMzQiw4REFBOEQ7WUFDOUQsK0NBQStDO1lBQy9DLEtBQUssQ0FBQyxJQUFJLENBQUMsbUJBQW1CLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBQSxzQkFBVyxFQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7U0FDM0Y7UUFFRCxxQkFBcUI7UUFDckIsTUFBTSxtQkFBbUIsR0FBRyxJQUFJLENBQUMsNEJBQTRCLEVBQUUsQ0FBQztRQUNoRSxJQUFJLG1CQUFtQixLQUFLLFVBQVUsRUFBRTtZQUN0QyxLQUFLLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1NBQzFCO1FBRUQsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUMvQixLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUU3QixPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFTyw0QkFBNEI7UUFDbEMsSUFBSSxJQUFJLENBQUMsVUFBVSxLQUFLLFVBQVUsRUFBRTtZQUNsQyxPQUFPLFVBQVUsQ0FBQztTQUNuQjtRQUVELElBQUksSUFBSSxDQUFDLFVBQVUsS0FBSyxLQUFLLEVBQUU7WUFDN0IsT0FBTyxLQUFLLENBQUM7U0FDZDtRQUVELGlCQUFpQjtRQUNqQixJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFO1lBQ3hCLE9BQU8sVUFBVSxDQUFDO1NBQ25CO1FBRUQsTUFBTSxXQUFXLEdBQUcsSUFBQSxtQ0FBd0IsR0FBRSxDQUFDO1FBQy9DLG1CQUFHLENBQUMsT0FBTyxDQUFDLGVBQWUsRUFBRSx5QkFBeUIsV0FBVyxFQUFFLENBQUMsQ0FBQztRQUVyRSxPQUFPLFdBQVcsQ0FBQztJQUNyQixDQUFDO0lBRUQsTUFBTSxDQUFDLFlBQVk7UUFDakIsT0FBTyx3QkFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQy9CLENBQUM7SUFFRCx1REFBdUQ7SUFDdkQsTUFBTSxDQUFDLG9CQUFvQjtRQUN6QixJQUFJLElBQUEsc0JBQVcsR0FBRSxLQUFLLFFBQVE7WUFBRSxPQUFPLFdBQVcsQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNoRSxPQUFPLFdBQVcsQ0FBQyxJQUFBLHNCQUFXLEdBQXdCLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQy9ELENBQUM7SUFFRCw4RUFBOEU7SUFDOUUsTUFBTSxDQUFDLGdCQUFnQjtRQUNyQixPQUFPLFdBQVcsQ0FBQyxJQUFBLHNCQUFXLEdBQXdCLENBQUMsRUFBRSxDQUFDO0lBQzVELENBQUM7SUFFRCwyQ0FBMkM7SUFDM0MsVUFBVTtRQUNSLE9BQU8sSUFBQSxxQkFBVSxHQUFFLENBQUM7SUFDdEIsQ0FBQztJQUVPLEtBQUssQ0FBQyxTQUFTO1FBQ3JCLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyw0QkFBNEIsRUFBRSxLQUFLLFVBQVUsRUFBRTtZQUMxRSxPQUFPO1NBQ1I7UUFFRCxJQUFJLElBQUEsc0JBQVcsR0FBRSxLQUFLLE9BQU8sRUFBRTtZQUM3QixJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUU7Z0JBQ25CLG1CQUFHLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSw2REFBNkQsQ0FBQyxDQUFDO2FBQzFGO1lBQ0QsT0FBTztTQUNSO1FBRUQsc0VBQXNFO1FBQ3RFLE1BQU0sV0FBVyxHQUFHLElBQUEsbUNBQXdCLEdBQUUsQ0FBQztRQUMvQyxJQUFJLFdBQVcsS0FBSyxVQUFVLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUNqRCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksc0JBQVcsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDckQsTUFBTSxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQy9CLG1CQUFHLENBQUMsT0FBTyxDQUFDLGVBQWUsRUFBRSxzQkFBc0IsQ0FBQyxDQUFDO1NBQ3REO0lBQ0gsQ0FBQztJQUVELE9BQU87UUFDTCxNQUFNLFFBQVEsR0FBRyxJQUFBLHNCQUFXLEdBQXdCLENBQUM7UUFDckQsSUFBSSxDQUFDLG9CQUFvQixDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUN2QyxNQUFNLElBQUksbUNBQXdCLEVBQUUsQ0FBQztTQUN0QztRQUVELElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFdBQVcsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDekQsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxHQUFHLElBQUksQ0FBQyxXQUFXLGdCQUFnQixFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQzFFLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsR0FBRyxJQUFJLENBQUMsV0FBVyxnQkFBZ0IsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUUxRSxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7UUFFdkIsZ0JBQWdCO1FBQ2hCLDBDQUEwQztRQUMxQyxJQUFJLENBQUMsT0FBTyxHQUFHLEdBQUcsSUFBSSxDQUFDLFdBQVcsWUFBWSxDQUFDO1FBRS9DLG1CQUFHLENBQUMsT0FBTyxDQUFDLGVBQWUsRUFBRSxXQUFXLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO1FBRTVELElBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLENBQUM7SUFDcEMsQ0FBQztJQUVPLGVBQWU7UUFDckIsaUNBQWlDO1FBQ2pDLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtZQUN4QyxPQUFPO1NBQ1I7UUFFRCxNQUFNLFVBQVUsR0FBRyxHQUFHLElBQUksQ0FBQyxXQUFXLFVBQVUsQ0FBQztRQUNqRCxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLEVBQUU7WUFDbkMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsVUFBVSxFQUFFLEVBQUMsU0FBUyxFQUFFLElBQUksRUFBQyxDQUFDLENBQUM7U0FDbEQ7UUFFRCxNQUFNLGNBQWMsR0FBRyxHQUFHLFVBQVUsY0FBYyxDQUFDO1FBQ25ELElBQUk7WUFDRixJQUFJLElBQUksQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLGNBQWMsQ0FBQyxFQUFFO2dCQUN0QywwQkFBMEI7Z0JBQzFCLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLGNBQWMsRUFBRSxPQUFPLENBQUMsQ0FBQztnQkFDM0QsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDakMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsY0FBYyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBQyxHQUFHLE9BQU8sRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDO2FBQzdGO2lCQUFNO2dCQUNMLDZCQUE2QjtnQkFDN0IsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsY0FBYyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBQyxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDO2FBQ2pGO1NBQ0Y7UUFBQyxPQUFPLEdBQUcsRUFBRTtZQUNaLG1CQUFHLENBQUMsR0FBRyxDQUFDLGVBQWUsRUFBRSxnQ0FBZ0MsR0FBRyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7U0FDekU7SUFDSCxDQUFDO0lBRUQsS0FBSyxDQUFDLE1BQU07UUFDViw2QkFBNkI7UUFDN0IsTUFBTSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7UUFFdkIsSUFBSSxJQUFJLENBQUMsYUFBYSxLQUFLLENBQUMsRUFBRTtZQUM1QixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUM7WUFFL0Isb0VBQW9FO1lBQ3BFLElBQUk7Z0JBQ0YsTUFBTSxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7Z0JBQzdCLG1CQUFHLENBQUMsR0FBRyxDQUNILGVBQWUsRUFDZixtREFBbUQsSUFBSSxDQUFDLElBQUksZUFBZSxDQUFDLENBQUM7Z0JBQ2pGLE9BQU87YUFDUjtZQUFDLE9BQU8sR0FBRyxFQUFFO2dCQUNaLElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRTtvQkFDdkIsTUFBTSxJQUFJLEtBQUssQ0FBQywwQkFBMEIsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUM7aUJBQ2pFO2dCQUVELG1CQUFHLENBQUMsR0FBRyxDQUNILGVBQWUsRUFDZixtQ0FBbUMsSUFBSSxDQUFDLElBQUksMEJBQTBCLENBQUMsQ0FBQzthQUM3RTtTQUNGO1FBQ0QsSUFBSSxJQUFJLENBQUMsU0FBUyxLQUFLLFNBQVMsRUFBRTtZQUNoQyxNQUFNLFlBQVksR0FBRyxRQUFRLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztZQUNyRCxJQUFJLENBQUMsWUFBWSxFQUFFO2dCQUNqQixNQUFNLElBQUksaUNBQXNCLEVBQUUsQ0FBQzthQUNwQztZQUVELElBQUksQ0FBQyxTQUFTLEdBQUcsWUFBWSxDQUFDO1NBQy9CO1FBRUQsSUFBSSxDQUFDLElBQUksQ0FBQyxxQkFBcUIsRUFBRTtZQUMvQixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7U0FDaEI7UUFFRCxJQUFJLENBQUMsR0FBRyxHQUFHLE1BQU0sSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDbkQsT0FBTyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVPLEtBQUssQ0FBQyxZQUFZLENBQUMsUUFBZ0I7UUFDekMsTUFBTSxZQUFZLEdBQUcsQ0FBQyxLQUFLLElBQUksRUFBRTtZQUMvQixJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUU7Z0JBQ3JCLG1CQUFHLENBQUMsR0FBRyxDQUFDLGVBQWUsRUFBRSxrQ0FBa0MsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDO2dCQUNyRixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDO2FBQzlCO1lBR0QscURBQXFEO1lBQ3JELGlEQUFpRDtZQUNqRCxzREFBc0Q7WUFDdEQseUJBQXlCO1lBQ3pCLElBQUksSUFBSSxDQUFDLGFBQWEsS0FBSyxDQUFDLEVBQUU7Z0JBQzVCLElBQUksSUFBSSxDQUFDLHNCQUFzQixFQUFFO29CQUMvQixnRUFBZ0U7b0JBQ2hFLElBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDO2lCQUNmO3FCQUFNO29CQUNMLElBQUksQ0FBQyxJQUFJLEdBQUcsTUFBTSxJQUFBLDhCQUFhLEdBQUUsQ0FBQztpQkFDbkM7YUFDRjtZQUVELG1CQUFHLENBQUMsT0FBTyxDQUNQLGVBQWUsRUFBRSw2QkFBNkIsUUFBUSxLQUFLLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUN2RixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUU7Z0JBQ25ELG1GQUFtRjtnQkFDbkYsMkZBQTJGO2dCQUMzRixnRkFBZ0Y7Z0JBQ2hGLFFBQVEsRUFBRSxPQUFPLENBQUMsUUFBUSxLQUFLLE9BQU87Z0JBQ3RDLEtBQUssRUFBRSxJQUFJLENBQUMsc0JBQXNCLENBQUMsQ0FBQztvQkFDaEMsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDO29CQUN4RCxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUM7Z0JBQzFDLEdBQUcsRUFBRSxJQUFJLENBQUMsT0FBTzthQUNsQixDQUFDLENBQUM7WUFFSCxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxFQUFFO2dCQUN6QixJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7YUFDdkU7WUFDRCxJQUFJLElBQUksQ0FBQyxzQkFBc0IsRUFBRTtnQkFDL0IsSUFBSSxDQUFDLG9CQUFvQixHQUFHO29CQUMxQixRQUFRLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUEwQjtvQkFDN0QsUUFBUSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBMEI7aUJBQzlELENBQUM7YUFDSDtZQUVELG1CQUFHLENBQUMsT0FBTyxDQUNQLGVBQWUsRUFDZiwwQkFBMEIsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLFlBQVksSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLENBQUM7WUFDN0UsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQztRQUMvQixDQUFDLENBQUMsRUFBRSxDQUFDO1FBRUwsTUFBTSxHQUFHLEdBQUcsTUFBTSxZQUFZLENBQUM7UUFDL0IsZ0VBQWdFO1FBQ2hFLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxDQUFDLEVBQUU7WUFDbkIsTUFBTSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7U0FDN0I7UUFDRCxPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7SUFFTyxPQUFPLENBQUMsTUFBbUI7UUFDakMsSUFBSSxNQUFNLEVBQUU7WUFDVixNQUFNLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztZQUM1QixNQUFNLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDYixNQUFNLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDakIsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDO1NBQ2hCO0lBQ0gsQ0FBQztJQUVELHVDQUF1QztJQUMvQixlQUFlO1FBQ3JCLE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUU7WUFDckMsK0NBQStDO1lBQy9DLHdFQUF3RTtZQUN4RSx1RUFBdUU7WUFDdkUsZ0RBQWdEO1lBQ2hELE1BQU0sTUFBTSxHQUFHLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsSUFBSyxFQUFFLFdBQVcsQ0FBQyxDQUFDO1lBQzdELE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxFQUFFO2dCQUN6QixJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUNyQixNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDZCxDQUFDLENBQUMsQ0FBQztZQUNILE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLEdBQUcsRUFBRTtnQkFDMUIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDckIsT0FBTyxFQUFFLENBQUM7WUFDWixDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELDBEQUEwRDtJQUMxRCxjQUFjO1FBQ1osTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDO1FBRXRCLE9BQU8sSUFBSSxPQUFPLENBQU8sQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUU7WUFDM0MsSUFBSSxPQUFPLEdBQUcsQ0FBQyxDQUFDO1lBQ2hCLElBQUksVUFBVSxHQUFHLHNCQUFzQixDQUFDO1lBRXhDLE1BQU0sSUFBSSxHQUFHLEdBQUcsRUFBRTtnQkFDaEIsSUFBSSxPQUFPLEtBQUssQ0FBQyxFQUFFO29CQUNqQixtQkFBRyxDQUFDLEdBQUcsQ0FBQyxlQUFlLEVBQUUsVUFBVSxDQUFDLENBQUM7aUJBQ3RDO2dCQUNELE9BQU8sRUFBRSxDQUFDO2dCQUNWLFVBQVUsSUFBSSxJQUFJLENBQUM7Z0JBQ25CLG1CQUFHLENBQUMsR0FBRyxDQUFDLGVBQWUsRUFBRSxVQUFVLENBQUMsQ0FBQztnQkFFckMsUUFBUSxDQUFDLGVBQWUsRUFBRTtxQkFDckIsSUFBSSxDQUFDLEdBQUcsRUFBRTtvQkFDVCxtQkFBRyxDQUFDLEdBQUcsQ0FBQyxlQUFlLEVBQUUsVUFBVSxHQUFHLEdBQUcsbUJBQUcsQ0FBQyxRQUFRLENBQUMsbUJBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7b0JBQ25FLE9BQU8sRUFBRSxDQUFDO2dCQUNaLENBQUMsQ0FBQztxQkFDRCxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUU7b0JBQ1gsSUFBSSxPQUFPLEdBQUcsUUFBUSxDQUFDLG9CQUFvQixFQUFFO3dCQUMzQyxtQkFBRyxDQUFDLEtBQUssQ0FBQyxlQUFlLEVBQUUsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO3dCQUN4QyxNQUFNLE1BQU0sR0FDUixJQUFJLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxHQUFHLElBQUksQ0FBQyxXQUFXLGdCQUFnQixFQUFFLEVBQUMsUUFBUSxFQUFFLE9BQU8sRUFBQyxDQUFDLENBQUM7d0JBQ25GLG1CQUFHLENBQUMsS0FBSyxDQUNMLGVBQWUsRUFBRSx1QkFBdUIsSUFBSSxDQUFDLFdBQVcsZ0JBQWdCLENBQUMsQ0FBQzt3QkFDOUUsbUJBQUcsQ0FBQyxLQUFLLENBQUMsZUFBZSxFQUFFLE1BQU0sQ0FBQyxDQUFDO3dCQUNuQyxPQUFPLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztxQkFDcEI7b0JBQ0QsSUFBQSxnQkFBSyxFQUFDLFFBQVEsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDcEQsQ0FBQyxDQUFDLENBQUM7WUFDVCxDQUFDLENBQUM7WUFDRixJQUFJLEVBQUUsQ0FBQztRQUNULENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELElBQUk7UUFDRixrQkFBa0I7UUFDbEIsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQ3BCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLENBQUM7U0FDekI7UUFFRCxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRTtZQUN0QixPQUFPO1NBQ1I7UUFFRCxJQUFJLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxPQUFPLEVBQUUsR0FBRyxFQUFFO1lBQ2pDLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztZQUN6QixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDcEIsQ0FBQyxDQUFDLENBQUM7UUFFSCxtQkFBRyxDQUFDLEdBQUcsQ0FBQyxlQUFlLEVBQUUsMEJBQTBCLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztRQUM1RSxJQUFJO1lBQ0YsSUFBSSxTQUFTLEVBQUU7Z0JBQ2IsNkRBQTZEO2dCQUM3RCxNQUFNLFlBQVksR0FBRyxJQUFBLHlCQUFTLEVBQzFCLGlCQUFpQixJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsUUFBUSxFQUFFLEVBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFDLENBQUMsQ0FBQztnQkFFdEYsTUFBTSxFQUFDLE1BQU0sRUFBQyxHQUFHLFlBQVksQ0FBQztnQkFDOUIsSUFBSSxNQUFNO29CQUFFLG1CQUFHLENBQUMsS0FBSyxDQUFDLGVBQWUsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLENBQUMsQ0FBQzthQUNuRTtpQkFBTTtnQkFDTCxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxFQUFFO29CQUN6QixPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLEVBQUUsU0FBUyxDQUFDLENBQUM7aUJBQ2pEO2FBQ0Y7U0FDRjtRQUFDLE9BQU8sR0FBRyxFQUFFO1lBQ1osTUFBTSxPQUFPLEdBQUcsNkJBQTZCLEdBQUcsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUMzRCxtQkFBRyxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsT0FBTyxDQUFDLENBQUM7U0FDcEM7UUFDRCxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDcEIsQ0FBQztJQUVELFVBQVU7UUFDUixJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDaEIsSUFBSSxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ2hDLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztTQUNyQjtRQUVELDhDQUE4QztRQUM5QyxJQUFJLElBQUksQ0FBQyxXQUFXLEtBQUssU0FBUyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxLQUFLLFNBQVMsRUFBRTtZQUN6RSxPQUFPO1NBQ1I7UUFFRCxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDaEIsSUFBSSxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ2hDLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztTQUNyQjtRQUVELDJDQUEyQztRQUMzQyxtREFBbUQ7UUFDbkQsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUM7UUFDbkQsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsRUFBQyxTQUFTLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLEVBQUUsRUFBQyxDQUFDLENBQUM7SUFDM0UsQ0FBQztDQUNGO0FBR08sNEJBQVE7QUFIZixDQUFDO0FBRUYsa0JBQWUsUUFBUSxDQUFDO0FBR3hCLDhDQUE4QztBQUM5QyxTQUFnQixnQkFBZ0I7SUFDOUIsT0FBTyxRQUFRLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztBQUNyQyxDQUFDO0FBRkQsNENBRUM7QUFFRCxTQUFnQixTQUFTO0lBQ3ZCLE9BQU8sUUFBUSxDQUFDLG9CQUFvQixFQUFFLENBQUM7QUFDekMsQ0FBQztBQUZELDhCQUVDIn0=
651
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJhdmUtbGF1bmNoZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvYnJhdmUtbGF1bmNoZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7R0FJRztBQUNILFlBQVksQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFHYix1Q0FBeUI7QUFDekIseUNBQTJCO0FBQzNCLCtEQUFpRDtBQUNqRCxxREFBaUQ7QUFDakQseUNBQTJDO0FBQzNDLHlDQUF3TjtBQUV4TixpREFBaUQ7QUFDakQsNERBQThCO0FBQzlCLGlFQUF5RTtBQUN6RSw2REFBc0Q7QUFDdEQseURBQW9FO0FBRXBFLE1BQU0sS0FBSyxHQUFHLElBQUEsc0JBQVcsR0FBRSxLQUFLLEtBQUssQ0FBQztBQUN0QyxNQUFNLFNBQVMsR0FBRyxJQUFBLHNCQUFXLEdBQUUsS0FBSyxPQUFPLENBQUM7QUFDNUMsTUFBTSxPQUFPLEdBQUcsUUFBUSxDQUFDO0FBQ3pCLE1BQU0saUJBQWlCLEdBQUcsR0FBRyxDQUFDO0FBQzlCLE1BQU0sb0JBQW9CLEdBQUcsSUFBSSxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO0FBSTFFLE1BQU0sU0FBUyxHQUFHLElBQUksR0FBRyxFQUFZLENBQUM7QUFtRHRDLE1BQU0sY0FBYyxHQUFHLEdBQUcsRUFBRTtJQUMxQixPQUFPLEVBQUUsQ0FBQztJQUNWLE9BQU8sQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQztBQUNsQyxDQUFDLENBQUM7QUFFRixLQUFLLFVBQVUsTUFBTSxDQUFDLE9BQWdCLEVBQUU7SUFDdEMsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFBLG1CQUFRLEVBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsQ0FBQztJQUV0RCxNQUFNLFFBQVEsR0FBRyxJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUVwQyxn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