crx-monkey-next 0.3.0 → 0.4.0

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.
@@ -1,12 +1,9 @@
1
1
  import esbuild from 'esbuild';
2
2
  import typescript, { readConfigFile, sys, parseJsonConfigFileContent } from 'typescript';
3
3
  import chalk from 'chalk';
4
- import { watch } from 'fs';
4
+ import { watch, readFile } from 'fs';
5
5
  import { compile } from 'sass';
6
- import { basename, resolve, dirname } from 'path';
7
- import { parse } from 'node-html-parser';
8
6
  import fse from 'fs-extra';
9
- import MurmurHash3 from 'murmurhash3js';
10
7
 
11
8
  function esbuildTypecheckPlugin(options = { exit: false }) {
12
9
  const tsPlugin = {
@@ -213,351 +210,61 @@ function sassBundlerWatch(options = { sass: {} }) {
213
210
  };
214
211
  }
215
212
 
216
- class HTMLTools {
217
- popupPath;
218
- distPath;
219
- plugins;
220
- bundler;
221
- htmlParserRoot;
222
- stackInterval = null;
223
- watcher = null;
224
- parseResult = {
225
- requestLocalScripts: {},
226
- requestLocalHrefFiles: {},
227
- requestLocalSrcFiles: {},
228
- };
229
- constructor(popupPath, distPath, plugins, bundler) {
230
- this.popupPath = popupPath;
231
- this.distPath = distPath;
232
- this.plugins = plugins;
233
- this.bundler = bundler;
234
- this.htmlParserRoot = this.getParser(popupPath);
235
- }
236
- async buildForUserjs() {
237
- const htmlParserRoot = this.getParser(this.popupPath);
238
- const parseResult = this.parse();
239
- const diff = this.getParseResultDiff(parseResult);
240
- const decorder = new TextDecoder();
241
- diff.localScripts.add.forEach((scriptPath) => {
242
- const result = this.bundler.getBuildResultFromPath(scriptPath);
243
- if (result !== undefined) {
244
- const targetElement = parseResult.requestLocalSrcFiles[scriptPath];
245
- const resultStr = decorder.decode(result);
246
- targetElement.innerHTML = resultStr;
247
- }
248
- });
249
- return htmlParserRoot.toString();
250
- }
251
- async build() {
252
- this.htmlParserRoot = this.getParser(this.popupPath);
253
- const result = this.parse();
254
- const diff = this.getParseResultDiff(result);
255
- this.parseResult = result;
256
- const hashs = this.registerDiffToBundler(diff);
257
- this.syncAssets(diff);
258
- return hashs;
259
- }
260
- async watchHTML() {
261
- const stack = [];
262
- // When html updated
263
- const onUpdate = async () => {
264
- this.htmlParserRoot = this.getParser(this.popupPath);
265
- const result = this.parse();
266
- const diff = this.getParseResultDiff(result);
267
- this.parseResult = result;
268
- this.registerDiffToBundler(diff);
269
- this.syncAssets(diff);
270
- await this.bundler.stopWatch();
271
- await this.bundler.watch();
272
- };
273
- await onUpdate();
274
- this.watcher = watch(this.popupPath);
275
- this.watcher.addListener('change', () => {
276
- stack.push(onUpdate);
277
- });
278
- this.stackInterval = setInterval(async () => {
279
- if (stack[0] !== undefined) {
280
- await stack[0]();
281
- stack.splice(0, 1);
282
- }
283
- }, 1000);
284
- }
285
- stopWatch() {
286
- if (this.stackInterval !== null) {
287
- clearInterval(this.stackInterval);
288
- }
289
- if (this.watcher !== null) {
290
- this.watcher.close();
291
- }
292
- }
293
- resolveScript(entry, target) {
294
- const targetElement = this.parseResult.requestLocalScripts[this.resolveFilePath(entry)];
295
- targetElement.setAttribute('src', target);
296
- }
297
- resolveHref(entry, target) {
298
- const targetElement = this.parseResult.requestLocalHrefFiles[this.resolveFilePath(entry)];
299
- targetElement.setAttribute('href', target);
300
- }
301
- resolveSrc(entry, target) {
302
- const targetElement = this.parseResult.requestLocalSrcFiles[this.resolveFilePath(entry)];
303
- targetElement.setAttribute('src', target);
304
- }
305
- outputHtmlResolved() {
306
- return this.htmlParserRoot.toString();
307
- }
308
- syncAssets(diff) {
309
- diff.localSrcFiles.add.forEach((filePath) => {
310
- const baseFileName = basename(filePath);
311
- const newFilePath = '/assets/' + baseFileName;
312
- fse.copySync(filePath, resolve(this.distPath, 'assets', baseFileName));
313
- this.resolveSrc(filePath, newFilePath);
314
- });
315
- diff.localSrcFiles.delete.forEach((filePath) => {
316
- const baseFileName = basename(filePath);
317
- const newFilePath = '/assets/' + baseFileName;
318
- fse.removeSync(newFilePath);
319
- });
320
- }
321
- registerDiffToBundler(diff) {
322
- const hashs = [];
323
- const targetGroups = [
324
- ['html_script', diff.localScripts.add],
325
- ['html_href', diff.localHrefFiles.add],
326
- ];
327
- for (const [type, paths] of targetGroups) {
328
- for (const path of paths) {
329
- if (type === 'html_script' || type === 'html_href') {
330
- const buildPlugin = this.getAppropriateBuildPlugin(path);
331
- const watchPlugin = this.getAppropriateWatchPlugin(path);
332
- if (!buildPlugin) {
333
- console.error(`Could not find the appropriate plugin for building "${path}"`);
334
- continue;
213
+ /**
214
+ * What is this?
215
+ * Currently, this HTML bundler plugin functions merely as a file loader.
216
+ * Previously, it parsed the popup HTML and passed the scripts to tsBundler for transpilation.
217
+ * However, due to design changes to support UserJS popups, the plugin no longer handles transpilation.
218
+ * Instead, the HTML is now processed internally via popup/Popup.ts.
219
+ */
220
+ function htmlBundler() {
221
+ return {
222
+ name: 'HTML File loader',
223
+ plugin: async (filePath) => {
224
+ return new Promise((resolve, reject) => {
225
+ readFile(filePath, (err, data) => {
226
+ if (err !== null) {
227
+ reject(err);
335
228
  }
336
- if (!watchPlugin) {
337
- console.error(`Could not find the appropriate plugin for watching "${path}"`);
338
- continue;
229
+ else {
230
+ resolve(data);
339
231
  }
340
- const hash = this.bundler.addTarget(path, { build: buildPlugin, watch: watchPlugin }, type);
341
- hashs.push(hash);
342
- }
343
- }
344
- }
345
- [...diff.localScripts.delete, ...diff.localHrefFiles.delete].forEach((path) => {
346
- this.bundler.removeTarget(path);
347
- });
348
- return hashs;
349
- }
350
- /**
351
- * Get diff that loaded resources in html what with added or deleted.
352
- * @returns
353
- */
354
- getParseResultDiff(newResult) {
355
- const result = {
356
- localScripts: {
357
- add: [],
358
- delete: [],
359
- },
360
- localHrefFiles: {
361
- add: [],
362
- delete: [],
363
- },
364
- localSrcFiles: {
365
- add: [],
366
- delete: [],
367
- },
368
- };
369
- const setDiff = (key, elements, original) => {
370
- Object.keys(elements).forEach((requestURL) => {
371
- if (original[requestURL] === undefined) {
372
- result[key].add.push(requestURL);
373
- }
232
+ });
374
233
  });
375
- Object.keys(original).forEach((requestURL) => {
376
- if (elements[requestURL] === undefined) {
377
- result[key].delete.push(requestURL);
234
+ },
235
+ };
236
+ }
237
+ function htmlBundlerWatch() {
238
+ return {
239
+ name: 'HTML File loader watch',
240
+ plugin: async (filePath, sendResult) => {
241
+ const watcher = watch(filePath);
242
+ readFile(filePath, (err, data) => {
243
+ if (err !== null) {
244
+ throw err;
245
+ }
246
+ else {
247
+ sendResult(data);
378
248
  }
379
249
  });
380
- };
381
- setDiff('localScripts', newResult.requestLocalScripts, this.parseResult.requestLocalScripts);
382
- setDiff('localHrefFiles', newResult.requestLocalHrefFiles, this.parseResult.requestLocalHrefFiles);
383
- setDiff('localSrcFiles', newResult.requestLocalSrcFiles, this.parseResult.requestLocalSrcFiles);
384
- return result;
385
- }
386
- /**
387
- * Parse popup html
388
- * @param filePath
389
- * @returns
390
- */
391
- parse() {
392
- return {
393
- requestLocalScripts: this.getResourceElement(this.htmlParserRoot, 'script', 'src'),
394
- requestLocalHrefFiles: this.getResourceElement(this.htmlParserRoot, 'link', 'href'),
395
- requestLocalSrcFiles: this.getResourceElement(this.htmlParserRoot, 'video, img, iframe', 'src'),
396
- };
397
- }
398
- /**
399
- * Get elements for loading any resource. for example, script or img link anymore..
400
- * @param root
401
- * @param selector
402
- * @param resourceURLAttr
403
- * @returns
404
- */
405
- getResourceElement(root, selector, resourceURLAttr) {
406
- const elems = root.querySelectorAll(selector);
407
- const ResultElems = {};
408
- elems.forEach((elem) => {
409
- const noBundleAttr = elem.getAttribute('no-bundle');
410
- if (noBundleAttr !== '' && noBundleAttr !== 'true') {
411
- const src = elem.getAttribute(resourceURLAttr);
412
- if (src !== undefined && src !== null) {
413
- // Except the script href that start http.
414
- if (src.match('^http.*') === null) {
415
- const resolvedPath = this.resolveFilePath(src);
416
- ResultElems[resolvedPath] = elem;
250
+ watcher.addListener('change', async () => {
251
+ readFile(filePath, (err, data) => {
252
+ if (err !== null) {
253
+ throw err;
417
254
  }
418
- }
419
- }
420
- });
421
- return ResultElems;
422
- }
423
- /**
424
- * Resolve path
425
- */
426
- resolveFilePath(contentPath) {
427
- return resolve(dirname(this.popupPath), contentPath);
428
- }
429
- /**
430
- * Get Html parser instance.
431
- * @param htmlPath
432
- * @returns
433
- */
434
- getParser(htmlPath) {
435
- const content = fse.readFileSync(htmlPath).toString();
436
- const root = parse(content);
437
- return root;
438
- }
439
- /**
440
- * Get build plugin
441
- * @param filePath
442
- * @returns
443
- */
444
- getAppropriateBuildPlugin(filePath) {
445
- for (const [pattern, plugin] of Object.entries(this.plugins.build)) {
446
- const regex = new RegExp(pattern);
447
- if (regex.test(filePath)) {
448
- return plugin;
449
- }
450
- }
451
- return null;
452
- }
453
- /**
454
- * Get watch plugin
455
- * @param filePath
456
- * @returns
457
- */
458
- getAppropriateWatchPlugin(filePath) {
459
- for (const [pattern, plugin] of Object.entries(this.plugins.watch)) {
460
- const regex = new RegExp(pattern);
461
- if (regex.test(filePath)) {
462
- return plugin;
463
- }
464
- }
465
- return null;
466
- }
467
- }
468
-
469
- let htmlTools = null;
470
- let listenerAdded = false;
471
- function htmlBundlerWatch(options) {
472
- return {
473
- name: 'Crxm Watch HTML Plugin',
474
- plugin: async (filePath, sendResult, bundler) => {
475
- const distPath = resolve(options.output);
476
- if (htmlTools === null) {
477
- htmlTools = new HTMLTools(filePath, options.output, options.plugins, bundler);
478
- await htmlTools.watchHTML();
479
- }
480
- if (!listenerAdded) {
481
- bundler.addListener((target) => {
482
- if (htmlTools !== null) {
483
- if (target.flag === 'html_script' || target.flag === 'html_href') {
484
- const result = bundler.compileResults[target.hash];
485
- if (target.flag === 'html_script') {
486
- const extChanged = changeExt(target.entryPoint, 'js');
487
- const endemicHash = MurmurHash3.x86.hash32(target.entryPoint).toString();
488
- const fileName = endemicHash + '_' + extChanged;
489
- const outputPath = resolve(distPath, fileName);
490
- fse.outputFileSync(outputPath, result);
491
- htmlTools.resolveScript(target.entryPoint, fileName);
492
- }
493
- if (target.flag === 'html_href') {
494
- const extChanged = changeExt(target.entryPoint, 'css');
495
- const endemicHash = MurmurHash3.x86.hash32(target.entryPoint).toString();
496
- const fileName = endemicHash + '_' + extChanged;
497
- const outputPath = resolve(distPath, fileName);
498
- fse.outputFileSync(outputPath, result);
499
- htmlTools.resolveHref(target.entryPoint, fileName);
500
- }
501
- const html = htmlTools.outputHtmlResolved();
502
- const encoder = new TextEncoder();
503
- const encoded = encoder.encode(html);
504
- sendResult(encoded);
505
- }
255
+ else {
256
+ sendResult(data);
506
257
  }
507
258
  });
508
- listenerAdded = true;
509
- }
259
+ });
510
260
  return {
511
261
  stop: async () => {
512
- if (htmlTools !== null) {
513
- htmlTools.stopWatch();
514
- htmlTools = null;
515
- }
262
+ watcher.close();
516
263
  },
517
264
  };
518
265
  },
519
266
  };
520
267
  }
521
- function htmlBundler(options) {
522
- return {
523
- name: 'Crxm HTML Plugin',
524
- plugin: async (filePath, bundler) => {
525
- const distPath = resolve(options.output);
526
- const htmlTools = new HTMLTools(filePath, options.output, options.plugins, bundler);
527
- const hashs = await htmlTools.build();
528
- await Promise.all(hashs.map(async (hash) => {
529
- const target = await bundler.compileForce(hash);
530
- const result = bundler.compileResults[target.hash];
531
- if (target.flag === 'html_script') {
532
- const extChanged = changeExt(target.entryPoint, 'js');
533
- const endemicHash = MurmurHash3.x86.hash32(target.entryPoint).toString();
534
- const fileName = endemicHash + '_' + extChanged;
535
- const outputPath = resolve(distPath, fileName);
536
- fse.outputFileSync(outputPath, result);
537
- htmlTools.resolveScript(target.entryPoint, fileName);
538
- }
539
- if (target.flag === 'html_href') {
540
- const extChanged = changeExt(target.entryPoint, 'css');
541
- const endemicHash = MurmurHash3.x86.hash32(target.entryPoint).toString();
542
- const fileName = endemicHash + '_' + extChanged;
543
- const outputPath = resolve(distPath, fileName);
544
- fse.outputFileSync(outputPath, result);
545
- htmlTools.resolveHref(target.entryPoint, fileName);
546
- }
547
- }));
548
- const html = htmlTools.outputHtmlResolved();
549
- const encoder = new TextEncoder();
550
- const encoded = encoder.encode(html);
551
- return encoded;
552
- },
553
- };
554
- }
555
- function changeExt(filePath, newExt) {
556
- const rawFileNameSplited = basename(filePath).split('.');
557
- rawFileNameSplited[rawFileNameSplited.length - 1] = newExt;
558
- const newFilename = rawFileNameSplited.join('.');
559
- return newFilename;
560
- }
561
268
 
562
269
  async function developmentReact(websocketAddress, entryPoint, cacheFileName) {
563
270
  const ws = new WebSocket(websocketAddress);
@@ -569,25 +276,57 @@ async function developmentReact(websocketAddress, entryPoint, cacheFileName) {
569
276
  });
570
277
  ws.addEventListener('message', async ({ data }) => {
571
278
  const response = JSON.parse(data);
279
+ if (response.type === 'connected') {
280
+ if (typeof chrome.runtime === 'undefined') {
281
+ const data = {
282
+ type: 'request_result',
283
+ content: {
284
+ entryPoint,
285
+ },
286
+ };
287
+ ws.send(JSON.stringify(data));
288
+ }
289
+ }
290
+ if (response.type === 'request_result_response') {
291
+ console.log('[crxm] hmr initial loading...');
292
+ const { content: { js }, } = response;
293
+ if (typeof chrome.runtime === 'undefined') {
294
+ // userjs
295
+ await loadByString(js);
296
+ }
297
+ }
572
298
  if (response.type === 'reload') {
573
- if (response.content.reloadType === 'HMR_' + entryPoint) {
574
- const { content: { data: { js }, }, } = response;
299
+ const data = response;
300
+ if (data.content.reloadType === 'HMR_' + entryPoint) {
301
+ const { content: { data: { js, fileName }, }, } = response;
575
302
  console.log('[crxm] hmr loading...');
576
- await load(js);
303
+ if (typeof chrome.runtime === 'undefined') {
304
+ // userjs
305
+ await loadByString(js);
306
+ }
307
+ else {
308
+ await loadFile(fileName);
309
+ }
577
310
  }
578
311
  }
579
312
  });
580
- async function load(jsFileName) {
313
+ async function loadFile(jsFileName) {
581
314
  await import(`./${jsFileName}?time=${Date.now()}`);
582
315
  }
583
- await load(cacheFileName);
316
+ async function loadByString(js) {
317
+ const s = document.createElement('script');
318
+ s.innerHTML = js;
319
+ document.body.appendChild(s);
320
+ }
321
+ if (typeof chrome.runtime !== 'undefined') {
322
+ await loadFile(cacheFileName);
323
+ }
584
324
  }
585
325
 
586
326
  function reactWatch(options = { esbuild: {} }) {
587
327
  return {
588
328
  name: 'React watch plugin',
589
329
  plugin: async (filePath, sendResult, bundler) => {
590
- bundler.hmr.enable();
591
330
  /**
592
331
  * Watch and send
593
332
  */
@@ -659,6 +398,23 @@ function stringifyFunction(target, args) {
659
398
  return code;
660
399
  }
661
400
 
401
+ /**
402
+ * CSS
403
+ */
404
+ function esbuildCSSPlugin() {
405
+ return {
406
+ name: 'esbuild css plugin by crxm',
407
+ setup: (build) => {
408
+ build.onLoad({ filter: /\.css$/ }, async (args) => {
409
+ const css = await fse.readFile(args.path, { encoding: 'utf-8' });
410
+ return {
411
+ contents: `const s = document.createElement('style');\ns.appendChild(document.createTextNode(${JSON.stringify(css)}));\ndocument.head.appendChild(s);\n`,
412
+ };
413
+ });
414
+ },
415
+ };
416
+ }
417
+
662
418
  /**
663
419
  * Define config for crx monkey.
664
420
  * @param userConfig
@@ -681,16 +437,7 @@ function defineConfig(userConfig) {
681
437
  build: {
682
438
  '^.*.(ts|js|tsx|jsx)$': tsBundler({}),
683
439
  '^.*.(css|sass|scss)$': sassBundler(),
684
- '^.*.(html|htm)$': htmlBundler({
685
- output: 'dist/chrome',
686
- plugins: {
687
- build: { '^.*.(ts|js|tsx|jsx)$': tsBundler(), '^.*.(css|sass|scss)$': sassBundler() },
688
- watch: {
689
- '^.*.(ts|js|tsx|jsx)$': tsBundlerWatch(),
690
- '^.*.(css|sass|scss)$': sassBundlerWatch(),
691
- },
692
- },
693
- }),
440
+ '^.*.(html|htm)$': htmlBundler(),
694
441
  },
695
442
  watch: {
696
443
  '^.*.(ts|js|tsx|jsx)$': tsBundlerWatch({
@@ -699,16 +446,7 @@ function defineConfig(userConfig) {
699
446
  },
700
447
  }),
701
448
  '^.*.(css|sass|scss)$': sassBundlerWatch(),
702
- '^.*.(html|htm)$': htmlBundlerWatch({
703
- output: 'dist/chrome',
704
- plugins: {
705
- build: { '^.*.(ts|js|tsx|jsx)$': tsBundler(), '^.*.(css|sass|scss)$': sassBundler() },
706
- watch: {
707
- '^.*.(ts|js|tsx|jsx)$': tsBundlerWatch(),
708
- '^.*.(css|sass|scss)$': sassBundlerWatch(),
709
- },
710
- },
711
- }),
449
+ '^.*.(html|htm)$': htmlBundlerWatch(),
712
450
  },
713
451
  logLevel: 'error',
714
452
  public: false,
@@ -774,5 +512,5 @@ function makeDefineFunc(defaultConfig, userConfig) {
774
512
  return mergedConfig;
775
513
  }
776
514
 
777
- export { defineConfig, defineManifest, reactWatch, sassBundler, sassBundlerWatch, tsBundler, tsBundlerWatch };
778
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwb3J0cy5qcyIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL25vZGUvcGx1Z2lucy90c0J1bmRsZXIudHMiLCIuLi8uLi9zcmMvbm9kZS9wbHVnaW5zL3Nhc3NCdW5kbGVyLnRzIiwiLi4vLi4vc3JjL25vZGUvcGx1Z2lucy9odG1sQnVuZGxlci9IVE1MVG9vbHMudHMiLCIuLi8uLi9zcmMvbm9kZS9wbHVnaW5zL2h0bWxCdW5kbGVyL21haW4udHMiLCIuLi8uLi9zcmMvbm9kZS9wbHVnaW5zL3JlYWN0L2RldmVsb3BtZW50LnRzIiwiLi4vLi4vc3JjL25vZGUvcGx1Z2lucy9yZWFjdC9yZWFjdC50cyIsIi4uLy4uL3NyYy9ub2RlL2V4cG9ydHMudHMiXSwic291cmNlc0NvbnRlbnQiOltudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQThCQSxTQUFTLHNCQUFzQixDQUFDLE9BQUEsR0FBc0MsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUE7QUFDbkYsSUFBQSxNQUFNLFFBQVEsR0FBVztBQUN2QixRQUFBLElBQUksRUFBRSwwQkFBMEI7QUFDaEMsUUFBQSxLQUFLLEVBQUUsQ0FBQyxLQUFrQixLQUFJO1lBQzVCLEtBQUssQ0FBQyxNQUFNLENBQ1Y7QUFDRSxnQkFBQSxNQUFNLEVBQUUsSUFBSSxNQUFNLENBQUMsZUFBZSxDQUFDO2FBQ3BDLEVBQ0QsQ0FBQyxJQUFJLEtBQUk7QUFDUCxnQkFBQSxNQUFNLEVBQUUsSUFBSSxFQUFFLEdBQUcsSUFBSTtBQUVyQixnQkFBQSxNQUFNLGVBQWUsR0FDbkIsT0FBTyxDQUFDLGVBQWUsS0FBSztzQkFDeEIsT0FBTyxDQUFDO3NCQUNSLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO0FBRXBDLGdCQUFBLE1BQU0sT0FBTyxHQUFHLFVBQVUsQ0FBQyxhQUFhLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxlQUFl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
515
+ export { defineConfig, defineManifest, esbuildCSSPlugin, reactWatch, sassBundler, sassBundlerWatch, tsBundler, tsBundlerWatch };
516
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwb3J0cy5qcyIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL25vZGUvcGx1Z2lucy90c0J1bmRsZXIudHMiLCIuLi8uLi9zcmMvbm9kZS9wbHVnaW5zL3Nhc3NCdW5kbGVyLnRzIiwiLi4vLi4vc3JjL25vZGUvcGx1Z2lucy9odG1sQnVuZGxlci50cyIsIi4uLy4uL3NyYy9ub2RlL3BsdWdpbnMvcmVhY3QvZGV2ZWxvcG1lbnQudHMiLCIuLi8uLi9zcmMvbm9kZS9wbHVnaW5zL3JlYWN0L3JlYWN0LnRzIiwiLi4vLi4vc3JjL25vZGUvcGx1Z2lucy9lc2J1aWxkQ1NTUGx1Z2luLnRzIiwiLi4vLi4vc3JjL25vZGUvZXhwb3J0cy50cyJdLCJzb3VyY2VzQ29udGVudCI6W251bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGxdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBOEJBLFNBQVMsc0JBQXNCLENBQUMsT0FBQSxHQUFzQyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBQTtBQUNuRixJQUFBLE1BQU0sUUFBUSxHQUFXO0FBQ3ZCLFFBQUEsSUFBSSxFQUFFLDBCQUEwQjtBQUNoQyxRQUFBLEtBQUssRUFBRSxDQUFDLEtBQWtCLEtBQUk7WUFDNUIsS0FBSyxDQUFDLE1BQU0sQ0FDVjtBQUNFLGdCQUFBLE1BQU0sRUFBRSxJQUFJLE1BQU0sQ0FBQyxlQUFlLENBQUM7YUFDcEMsRUFDRCxDQUFDLElBQUksS0FBSTtBQUNQLGdCQUFBLE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxJQUFJO0FBRXJCLGdCQUFBLE1BQU0sZUFBZSxHQUNuQixPQUFPLENBQUMsZUFBZSxLQUFLO3NCQUN4QixPQUFPLENBQUM7c0JBQ1IsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7QUFFcEMsZ0JBQUEsTUFBTSxPQUFPLEdBQUcsVUFBVSxDQUFDLGFBQWEsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLGVBQWUsQ0FBQztnQkFFakUs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