nadesiko3 3.3.75 → 3.3.77

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.
Files changed (43) hide show
  1. package/batch/command.txt +6 -0
  2. package/batch/command_nakopad.txt +4 -0
  3. package/batch/pickup_command.nako3 +1 -0
  4. package/core/package.json +3 -3
  5. package/core/src/nako3.mjs +6 -6
  6. package/core/src/nako3.mts +6 -6
  7. package/core/src/nako_core_version.mjs +2 -2
  8. package/core/src/nako_core_version.mts +2 -2
  9. package/core/src/nako_gen.mjs +11 -1
  10. package/core/src/nako_gen.mts +7 -1
  11. package/core/src/nako_lexer.mjs +2 -1
  12. package/core/src/nako_lexer.mts +2 -1
  13. package/core/src/plugin_system.mjs +19 -2
  14. package/core/src/plugin_system.mts +20 -3
  15. package/core/test/array_test.mjs +3 -0
  16. package/core/test/inline_indent_test.mjs +7 -0
  17. package/package.json +1 -1
  18. package/release/_hash.txt +24 -24
  19. package/release/_script-tags.txt +14 -14
  20. package/release/command.json +1 -1
  21. package/release/command.json.js +1 -1
  22. package/release/command_cnako3.json +1 -1
  23. package/release/command_list.json +1 -1
  24. package/release/editor.js +1 -1
  25. package/release/editor.js.LICENSE.txt +475 -29
  26. package/release/nako_gen_async.js +2 -1
  27. package/release/plugin_caniuse.js +2 -1
  28. package/release/plugin_datetime.js +2 -1
  29. package/release/plugin_kansuji.js +2 -1
  30. package/release/plugin_markup.js +2 -1
  31. package/release/plugin_turtle.js +2 -1
  32. package/release/plugin_webworker.js +2 -1
  33. package/release/plugin_weykturtle3d.js +2 -1
  34. package/release/stats.json +1 -1
  35. package/release/version.js +1 -1
  36. package/release/version.js.LICENSE.txt +363 -29
  37. package/release/wnako3.js +1 -1
  38. package/release/wnako3.js.LICENSE.txt +219 -1
  39. package/release/wnako3webworker.js +2 -1
  40. package/src/nako_version.mjs +2 -2
  41. package/src/nako_version.mts +2 -2
  42. package/test/node/plugin_test.mjs +1 -2
  43. package/test/selenium/requirements.txt +2 -2
package/batch/command.txt CHANGED
@@ -986,6 +986,12 @@
986
986
  | 関数 | MECABヨミガナ取得 | Sの/Sを/Sから | Sについてヨミガナを取得する | MECABよみがなしゅとく | https://github.com/kujirahand/nadesiko3-mecab/blob/master/nadesiko3-mecab.js#L64
987
987
 
988
988
 
989
+ ■nadesiko3-smtp(拡張プラグイン,cnako)
990
+ ●SMTP
991
+ | 関数 | メール送信 | DATAの/DATAで | 辞書型のデータ{host:'xxx',port:xxx,secure:true,auth:{user:'xxx',pass:'xxx'},from:'xxx',to:'xxx',subject:'xxx',text:'xxx',html:'xxx'}を指定してメールを送信して情報を返す | めーるそうしん | https://github.com/kujirahand/nadesiko3-smtp/blob/master/nadesiko3-smtp.js#L22
992
+ | 関数 | GMAIL送信 | DATAの/DATAで | 辞書型のデータ{user:'xxx',pass:'xxx',宛先:'xxx',件名:'xxx',本文:'xxx',html:'xxx',添付:[{filename:'xxx', path:'xxx'}]}を指定してGMAILからメール送信して情報を返す | GMAILそうしん | https://github.com/kujirahand/nadesiko3-smtp/blob/master/nadesiko3-smtp.js#L43
993
+
994
+
989
995
  ■nadesiko3-office(拡張プラグイン,cnako)
990
996
  ●OFFICE定数
991
997
  | 定数 | OFFICEバージョン | | '?' | OFFICEばーじょん | https://github.com/kujirahand/nadesiko3-office/blob/master/nadesiko3-office.js#L26
@@ -944,6 +944,10 @@
944
944
  - �`�ԑf���(MECAB)
945
945
  |MECAB,"S��|S��","S�ɂ‚��Č`�ԑf��͂��s���Č��ʂ�񎟌��z��ŕԂ�",0,,����,MECAB
946
946
  |MECAB���~�K�i�擾,"S��|S��|S����","S�ɂ‚��ă��~�K�i���擾����",0,,����,MECAB��݂��Ȃ���Ƃ�
947
+ + nadesiko3-smtp(�g���v���O�C��,cnako)
948
+ - SMTP
949
+ |���[�����M,"DATA��|DATA��","�����^�̃f�[�^{host:'xxx',port:xxx,secure:true,auth:{user:'xxx',pass:'xxx'},from:'xxx',to:'xxx',subject:'xxx',text:'xxx',html:'xxx'}���w�肵�ă��[���𑗐M���ď���Ԃ�",0,,����,�߁[�邻������
950
+ |GMAIL���M,"DATA��|DATA��","�����^�̃f�[�^{user:'xxx',pass:'xxx',����:'xxx',����:'xxx',�{��:'xxx',html:'xxx',�Y�t:[{filename:'xxx', path:'xxx'}]}���w�肵��GMAIL���烁�[�����M���ď���Ԃ�",0,,����,GMAIL��������
947
951
  + nadesiko3-office(�g���v���O�C��,cnako)
948
952
  - OFFICE�萔
949
953
  |OFFICE�o�[�W����,"","'?'",0,,�ϐ�,OFFICE�΁[�����
@@ -38,6 +38,7 @@ CORE="core/src"
38
38
  ['nadesiko3-websocket/nadesiko3-websocket.js', 'cnako'],
39
39
  ['nadesiko3-ml/nadesiko3-ml.js', 'cnako'],
40
40
  ['nadesiko3-mecab/nadesiko3-mecab.js', 'cnako'],
41
+ ['nadesiko3-smtp/nadesiko3-smtp.js', 'cnako'],
41
42
  ['nadesiko3-office/nadesiko3-office.js', 'cnako'],
42
43
  ['nadesiko3-odbc/src/plugin_odbc.js', 'cnako'],
43
44
  ['nadesiko3-mssql/src/plugin_mssql.js', 'cnako'],
package/core/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nadesiko3core",
3
- "version": "3.3.74",
3
+ "version": "3.3.77",
4
4
  "description": "Japanese Programming Language Nadesiko v3 core",
5
5
  "main": "index.mjs",
6
6
  "type": "module",
@@ -36,8 +36,8 @@
36
36
  "sample"
37
37
  ],
38
38
  "devDependencies": {
39
- "@types/mocha": "^9.1.1",
40
- "@types/node": "^17.0.35",
39
+ "@types/mocha": "^10.0.0",
40
+ "@types/node": "^18.11.7",
41
41
  "chai": "^4.3.6",
42
42
  "eslint": "^8.23.1",
43
43
  "eslint-plugin-import": "^2.26.0",
@@ -159,7 +159,6 @@ export class NakoCompiler {
159
159
  _loadDependencies(code, filename, preCode, tools) {
160
160
  const dependencies = {};
161
161
  const compiler = new NakoCompiler({ useBasicPlugin: true });
162
- const defaultNamespace = NakoLexer.filenameToModName(this.filename);
163
162
  /**
164
163
  * @param {any} item
165
164
  * @param {any} tasks
@@ -182,8 +181,7 @@ export class NakoCompiler {
182
181
  // preDefineFuncはトークン列に変更を加えるため、事前にクローンしておく。
183
182
  // 「プラグイン名設定」を行う (#956)
184
183
  const modName = NakoLexer.filenameToModName(item.filePath);
185
- code = `『${modName}』にプラグイン名設定;『${modName}』に名前空間設定;` + code +
186
- `『メイン』にプラグイン名設定;『${defaultNamespace}』に名前空間設定。`;
184
+ code = `『${modName}』に名前空間設定;『${modName}』にプラグイン名設定;` + code + ';名前空間ポップ;';
187
185
  const tokens = this.rawtokenize(code, 0, item.filePath);
188
186
  dependencies[item.filePath].tokens = tokens;
189
187
  const funclist = {};
@@ -685,7 +683,7 @@ export class NakoCompiler {
685
683
  options = newCompilerOptions(options);
686
684
  const out = this.compileFromCode(code, filename, options);
687
685
  // 実行前に環境を生成
688
- const nakoGlobal = this.getNakoGlobal(options, out.gen);
686
+ const nakoGlobal = this.getNakoGlobal(options, out.gen, filename);
689
687
  // 実行
690
688
  this.evalJS(out.runtimeEnv, nakoGlobal);
691
689
  return nakoGlobal;
@@ -702,12 +700,12 @@ export class NakoCompiler {
702
700
  options = newCompilerOptions(options);
703
701
  const out = this.compileFromCode(code, filename, options);
704
702
  // 実行前に環境を生成
705
- const nakoGlobal = this.getNakoGlobal(options, out.gen);
703
+ const nakoGlobal = this.getNakoGlobal(options, out.gen, filename);
706
704
  // 実行
707
705
  this.evalJS(out.runtimeEnv, nakoGlobal);
708
706
  return nakoGlobal;
709
707
  }
710
- getNakoGlobal(options, gen) {
708
+ getNakoGlobal(options, gen, filename) {
711
709
  // オプションを参照
712
710
  let g = options.nakoGlobal;
713
711
  if (!g) {
@@ -718,6 +716,8 @@ export class NakoCompiler {
718
716
  else {
719
717
  g = new NakoGlobal(this, gen, (this.__globals.length + 1));
720
718
  }
719
+ // 名前空間を設定
720
+ g.__varslist[0]['名前空間'] = NakoLexer.filenameToModName(filename);
721
721
  }
722
722
  if (this.__globals.indexOf(g) < 0) {
723
723
  this.__globals.push(g);
@@ -239,7 +239,6 @@ export class NakoCompiler {
239
239
  _loadDependencies (code: string, filename: string, preCode: string, tools: LoaderTool) {
240
240
  const dependencies: Dependencies = {}
241
241
  const compiler = new NakoCompiler({ useBasicPlugin: true })
242
- const defaultNamespace: string = NakoLexer.filenameToModName(this.filename)
243
242
  /**
244
243
  * @param {any} item
245
244
  * @param {any} tasks
@@ -262,8 +261,7 @@ export class NakoCompiler {
262
261
  // preDefineFuncはトークン列に変更を加えるため、事前にクローンしておく。
263
262
  // 「プラグイン名設定」を行う (#956)
264
263
  const modName = NakoLexer.filenameToModName(item.filePath)
265
- code = `『${modName}』にプラグイン名設定;『${modName}』に名前空間設定;` + code +
266
- `『メイン』にプラグイン名設定;『${defaultNamespace}』に名前空間設定。`
264
+ code = `『${modName}』に名前空間設定;『${modName}』にプラグイン名設定;` + code + ';名前空間ポップ;'
267
265
  const tokens = this.rawtokenize(code, 0, item.filePath)
268
266
  dependencies[item.filePath].tokens = tokens
269
267
  const funclist = {}
@@ -794,7 +792,7 @@ export class NakoCompiler {
794
792
  options = newCompilerOptions(options)
795
793
  const out = this.compileFromCode(code, filename, options)
796
794
  // 実行前に環境を生成
797
- const nakoGlobal = this.getNakoGlobal(options, out.gen)
795
+ const nakoGlobal = this.getNakoGlobal(options, out.gen, filename)
798
796
  // 実行
799
797
  this.evalJS(out.runtimeEnv, nakoGlobal)
800
798
  return nakoGlobal
@@ -812,13 +810,13 @@ export class NakoCompiler {
812
810
  options = newCompilerOptions(options)
813
811
  const out = this.compileFromCode(code, filename, options)
814
812
  // 実行前に環境を生成
815
- const nakoGlobal = this.getNakoGlobal(options, out.gen)
813
+ const nakoGlobal = this.getNakoGlobal(options, out.gen, filename)
816
814
  // 実行
817
815
  this.evalJS(out.runtimeEnv, nakoGlobal)
818
816
  return nakoGlobal
819
817
  }
820
818
 
821
- private getNakoGlobal (options: CompilerOptions, gen: NakoGen): NakoGlobal {
819
+ private getNakoGlobal (options: CompilerOptions, gen: NakoGen, filename: string): NakoGlobal {
822
820
  // オプションを参照
823
821
  let g: NakoGlobal|null = options.nakoGlobal
824
822
  if (!g) {
@@ -828,6 +826,8 @@ export class NakoCompiler {
828
826
  } else {
829
827
  g = new NakoGlobal(this, gen, (this.__globals.length + 1))
830
828
  }
829
+ // 名前空間を設定
830
+ g.__varslist[0]['名前空間'] = NakoLexer.filenameToModName(filename)
831
831
  }
832
832
  if (this.__globals.indexOf(g) < 0) { this.__globals.push(g) }
833
833
  return g
@@ -1,8 +1,8 @@
1
1
  // 実際のバージョン定義 (自動生成されるので以下を編集しない)
2
2
  const coreVersion = {
3
- version: '3.3.74',
3
+ version: '3.3.77',
4
4
  major: 3,
5
5
  minor: 3,
6
- patch: 74
6
+ patch: 77
7
7
  };
8
8
  export default coreVersion;
@@ -11,9 +11,9 @@ export interface NakoCoreVersion {
11
11
  }
12
12
  // 実際のバージョン定義 (自動生成されるので以下を編集しない)
13
13
  const coreVersion: NakoCoreVersion = {
14
- version: '3.3.74',
14
+ version: '3.3.77',
15
15
  major: 3,
16
16
  minor: 3,
17
- patch: 74
17
+ patch: 77
18
18
  }
19
19
  export default coreVersion
@@ -857,7 +857,17 @@ export class NakoGen {
857
857
  const idx = this._convGen(list[i], true);
858
858
  code += '[' + idx + ']';
859
859
  }
860
- const value = this._convGen(node.value, true);
860
+ // value
861
+ let value = null;
862
+ if (this.speedMode.invalidSore === 0) {
863
+ value = this.varname('それ');
864
+ }
865
+ if (node.value) {
866
+ value = this._convGen(node.value, true);
867
+ }
868
+ if (value == null) {
869
+ throw NakoSyntaxError.fromNode('代入する先の変数名がありません。', node);
870
+ }
861
871
  code += ' = ' + value + ';\n';
862
872
  // generate code
863
873
  const src = this.convLineno(node, false) + codeInit + code;
@@ -922,7 +922,13 @@ export class NakoGen {
922
922
  const idx = this._convGen(list[i], true)
923
923
  code += '[' + idx + ']'
924
924
  }
925
- const value = this._convGen(node.value, true)
925
+ // value
926
+ let value = null
927
+ if (this.speedMode.invalidSore === 0) { value = this.varname('それ') }
928
+ if (node.value) { value = this._convGen(node.value, true) }
929
+ if (value == null) {
930
+ throw NakoSyntaxError.fromNode('代入する先の変数名がありません。', node)
931
+ }
926
932
  code += ' = ' + value + ';\n'
927
933
  // generate code
928
934
  const src = this.convLineno(node, false) + codeInit + code
@@ -606,7 +606,8 @@ export class NakoLexer {
606
606
  preprocessedCodeOffset: srcOffset,
607
607
  preprocessedCodeLength: (srcLength - src.length) - srcOffset
608
608
  });
609
- if (rule.name === 'eol') { // 改行のとき次の行のインデントを調べる
609
+ // 改行のとき次の行のインデントを調べる。なお、改行の後は必ずcolumnが1になる。インデント構文のため、一行に2つ以上の文を含むときを考慮する。(core #66)
610
+ if (rule.name === 'eol' && column === 1) {
610
611
  const ia = this.countIndent(src);
611
612
  indent = ia[0];
612
613
  column += ia[1];
@@ -605,7 +605,8 @@ export class NakoLexer {
605
605
  preprocessedCodeOffset: srcOffset,
606
606
  preprocessedCodeLength: (srcLength - src.length) - srcOffset
607
607
  })
608
- if (rule.name === 'eol') { // 改行のとき次の行のインデントを調べる
608
+ // 改行のとき次の行のインデントを調べる。なお、改行の後は必ずcolumnが1になる。インデント構文のため、一行に2つ以上の文を含むときを考慮する。(core #66)
609
+ if (rule.name === 'eol' && column === 1) {
609
610
  const ia = this.countIndent(src)
610
611
  indent = ia[0]
611
612
  column += ia[1]
@@ -17,7 +17,7 @@ export default {
17
17
  // 言語バージョンを設定
18
18
  sys.__v0['ナデシコバージョン'] = sys.version;
19
19
  sys.__v0['ナデシコ言語バージョン'] = sys.coreVersion;
20
- sys.__namespace = '*';
20
+ sys.__namespaceList = [];
21
21
  // なでしこの関数や変数を探して返す
22
22
  sys.__findVar = function (nameStr, def) {
23
23
  if (typeof nameStr === 'function') {
@@ -2820,12 +2820,29 @@ export default {
2820
2820
  },
2821
2821
  return_none: true
2822
2822
  },
2823
+ '名前空間': { type: 'const', value: '' },
2823
2824
  '名前空間設定': {
2824
2825
  type: 'func',
2825
2826
  josi: [['に', 'へ']],
2826
2827
  pure: true,
2827
2828
  fn: function (s, sys) {
2828
- sys.__namespace = s;
2829
+ // push namespace
2830
+ sys.__namespaceList.push([sys.__v0['名前空間'], sys.__v0['プラグイン名']]);
2831
+ sys.__v0['名前空間'] = s;
2832
+ },
2833
+ return_none: true
2834
+ },
2835
+ '名前空間ポップ': {
2836
+ type: 'func',
2837
+ josi: [],
2838
+ pure: true,
2839
+ fn: function (sys) {
2840
+ // pop namespace
2841
+ const a = sys.__namespaceList.pop();
2842
+ if (a) {
2843
+ sys.__v0['名前空間'] = a[0];
2844
+ sys.__v0['プラグイン名'] = a[1];
2845
+ }
2829
2846
  },
2830
2847
  return_none: true
2831
2848
  },
@@ -18,7 +18,7 @@ export default {
18
18
  // 言語バージョンを設定
19
19
  sys.__v0['ナデシコバージョン'] = sys.version
20
20
  sys.__v0['ナデシコ言語バージョン'] = sys.coreVersion
21
- sys.__namespace = '*'
21
+ sys.__namespaceList = []
22
22
  // なでしこの関数や変数を探して返す
23
23
  sys.__findVar = function (nameStr: any, def: any): any {
24
24
  if (typeof nameStr === 'function') { return nameStr }
@@ -2671,12 +2671,29 @@ export default {
2671
2671
  },
2672
2672
  return_none: true
2673
2673
  },
2674
- '名前空間設定': { // @名前空間が変更される // @なまえくうかんせってい
2674
+ '名前空間': { type: 'const', value: '' }, // @なまえくうかん
2675
+ '名前空間設定': { // @名前空間をSに設定する(システムにより自動的に変更される。ファイル名から拡張子を削ったもの) // @なまえくうかんせってい
2675
2676
  type: 'func',
2676
2677
  josi: [['に', 'へ']],
2677
2678
  pure: true,
2678
2679
  fn: function (s: string, sys: any) {
2679
- sys.__namespace = s
2680
+ // push namespace
2681
+ sys.__namespaceList.push([sys.__v0['名前空間'], sys.__v0['プラグイン名']])
2682
+ sys.__v0['名前空間'] = s
2683
+ },
2684
+ return_none: true
2685
+ },
2686
+ '名前空間ポップ': { // @システム利用のため呼ぶべからず。(名前空間を一つ前の値に戻す) // @なまえくうかんぽっぷ
2687
+ type: 'func',
2688
+ josi: [],
2689
+ pure: true,
2690
+ fn: function (sys: any) {
2691
+ // pop namespace
2692
+ const a = sys.__namespaceList.pop()
2693
+ if (a) {
2694
+ sys.__v0['名前空間'] = a[0]
2695
+ sys.__v0['プラグイン名'] = a[1]
2696
+ }
2680
2697
  },
2681
2698
  return_none: true
2682
2699
  },
@@ -32,4 +32,7 @@ describe('array_test', async () => {
32
32
  it('要素から配列を記述する際に明示的な()が必要になる不具合 #1000', async () => {
33
33
  await cmp('Aは[0,1,2];Bは[A[1], A[1], A[2]];B[1]を表示', '1')
34
34
  })
35
+ it('配列を「代入」文するとエラーが出る問題 (nadesiko3 #1354)(core #75)', async () => {
36
+ await cmp('Aは[];1に2を足して、A[0]に代入。A[0]を表示。', '3')
37
+ })
35
38
  })
@@ -168,4 +168,11 @@ describe('inline_indent_test', async () => {
168
168
  '| └─「2」と表示。\n' +
169
169
  '', '1\n2\n1\n2\n1\n2')
170
170
  })
171
+ it('一行に2つの文を書いたときのインデントがおかしい。 #1333(core #66)', async () => {
172
+ await cmp('' +
173
+ 'B=0;\n' +
174
+ '●hogeとは:\n' +
175
+ '  A=3;B=3;\n' +
176
+ 'Bを表示。', '0')
177
+ })
171
178
  })
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nadesiko3",
3
- "version": "3.3.75",
3
+ "version": "3.3.77",
4
4
  "description": "Japanese Programming Language",
5
5
  "type": "module",
6
6
  "main": "src/index.mjs",
package/release/_hash.txt CHANGED
@@ -1,18 +1,18 @@
1
1
  command.json.js:
2
- md5(hex): 784a1d5f8e1a53a4394b9b5ac298b298
3
- sha256(hex): 4438df1ef3f959b986e7e4f8d78d5438283da6c369cf0213671975e5190805da
4
- sha256(base64): RDjfHvP5WbmG5+T4141UOCg9psNpzwITZxl15RkIBdo=
5
- sha512(base64): j0MPTnrMFO2ME0LvqSNTZOHCwesoWzACeVa6Ip+zyvPZHY0on+JQ11dPLOY1lm4w287LhEYnanfsKeZlk8c7wA==
2
+ md5(hex): a1196ca630750603e78448894f982c15
3
+ sha256(hex): 0021d821abdc81087849105b174016d4f6d349f6d5b6463d722042f616c8d16d
4
+ sha256(base64): ACHYIavcgQh4SRBbF0AW1PbTSfbVtkY9ciBC9hbI0W0=
5
+ sha512(base64): vIV8kPMEosj8vnooWxLYSGWiye3Qp19nVK+kRUSr8zEFaFLxqpksI/lM6Z1o4fxN0oCWyPeEH7/S9Rc4/7jMUg==
6
6
  editor.js:
7
- md5(hex): edbaaa9accd9137285da3f5d551e3a42
8
- sha256(hex): 14775d8687a4e73c53a057d5c34a1a4aa69ffae34a95b27359cba36e3cba8a7c
9
- sha256(base64): FHddhoek5zxToFfVw0oaSqaf+uNKlbJzWcujbjy6inw=
10
- sha512(base64): ISWxWKTBgEHTvM3GivcqrfP6bCbBvkbdSXy2zxiom36uE5o+gFqc0n01wtjN0eVWfPIqZFJ95IdNllIaeLK5Kw==
7
+ md5(hex): c5caffbf70afca358f5d42d3c15c479c
8
+ sha256(hex): 2bf2f99c965515bc449fb4e5f578bee74b0d6d5899488274f4cfd55599043995
9
+ sha256(base64): K/L5nJZVFbxEn7Tl9Xi+50sNbViZSIJ09M/VVZkEOZU=
10
+ sha512(base64): bZMZ6cCFxqZr0pTBZbYuboftNTfGInCs0sKLtZmJxcoZTjXZaAtRhnAG9oW9fRL1fOwvvRDVApknZiAnYEjZnw==
11
11
  nako_gen_async.js:
12
- md5(hex): 7df729d549cc7b8914da553ca673089b
13
- sha256(hex): 731cf3d454d7ef6847226d87eb13c55a0feea2f2817e871822a3d2f363c94b28
14
- sha256(base64): cxzz1FTX72hHIm2H6xPFWg/uovKBfocYIqPS82PJSyg=
15
- sha512(base64): m3c7TM5gCnEVoR/bg+3zXoBJqnKidBRuQGym/hJm73ul2tIENMGqDKOEupYIImMcSl/x4DKsBmiNmOk2d42+Zw==
12
+ md5(hex): 91eac9c1b76a4abfa4b34d8a7f2d20ed
13
+ sha256(hex): 3d561c32993276df5d8ce98be3929f0a7dce86c5aab1a75a0b78a8eae67fc328
14
+ sha256(base64): PVYcMpkydt9djOmL45KfCn3OhsWqsadaC3io6uZ/wyg=
15
+ sha512(base64): VflnUiD2mcubUPjGl4VniefJTOVdkNL1N7NB1tViHiX/B3ikOhuHjPnxP/3C/1FHfCcy/HooaC+kv1VZAX4eQA==
16
16
  plugin_caniuse.js:
17
17
  md5(hex): 95a7a5c98a92a46b6435e577daba3241
18
18
  sha256(hex): 57638b3979be70b45ab8085861f6b2ece43200bd6aa92765d73caf76b9e6fea9
@@ -54,17 +54,17 @@ plugin_weykturtle3d.js:
54
54
  sha256(base64): ND/1JqYrFVGTIPYsbBk+tScnF8RVzgYPM0/E2aE8GRw=
55
55
  sha512(base64): T4B8Cvhn9j5YdMGk4rwPInfqmcXtGEjD2g6X6wSqXvYyIXuSy+t1RVf1viZ2zljHlk3wN6pwKvvg/NIJvfMAzw==
56
56
  version.js:
57
- md5(hex): 743be5ac8c04403967f35b5072fb7469
58
- sha256(hex): 7fa722db0e4137e8ea06d229e9426c8a2574aad32f9effc4fc87d71bedcfadff
59
- sha256(base64): f6ci2w5BN+jqBtIp6UJsiiV0qtMvnv/E/IfXG+3Prf8=
60
- sha512(base64): etEbJqV2mj8G91P/NJ9YwEg6zp++qf1R6/E8FqTLScaUM9dLpW29BW5N1YzLOlcLpoZtamS3ul7BaI3AgymBHQ==
57
+ md5(hex): ca0c8bb437523d6d3d6f12c8dff0792b
58
+ sha256(hex): aec7fc3a0751588fb3cada644ef54e15974f94af80e00cffbb1f338879a94ed1
59
+ sha256(base64): rsf8OgdRWI+zytpkTvVOFZdPlK+A4Az/ux8ziHmpTtE=
60
+ sha512(base64): X0HA8my6Bx+TdfT5X4N49/ZNanL/LEhwYRhIUc+QDSCFUdLbO/2Q8WpZPvsJbK++rq7w8sQF1E9C5n6Dyffxuw==
61
61
  wnako3.js:
62
- md5(hex): 34872b80d4189953775dbb559c1c3509
63
- sha256(hex): bd095d5dce7d992c72c87a8a686be61814cb061d3a5600a93f2599efeb6531f8
64
- sha256(base64): vQldXc59mSxyyHqKaGvmGBTLBh06VgCpPyWZ7+tlMfg=
65
- sha512(base64): lDidFN6BGziC4zc/0yfrEeWjNSAXEiv81EBWC801at2ke4Es74TjC48f3BnhEu74otu7aSNRB2qGBP73Xv+trQ==
62
+ md5(hex): 1b9fd37cdacadd98d7b643768a60a3e1
63
+ sha256(hex): 30f5f0277787b28f77cff36d5529895180caefcfb4d849000188c23ce677a4c7
64
+ sha256(base64): MPXwJ3eHso93z/NtVSmJUYDK78+02EkAAYjCPOZ3pMc=
65
+ sha512(base64): L4MqH0aiLaiVqQpO7c3U5UrCeGjTBFwFc2Vv+W0YB6/HsFtQbzaB8zRmy5aHLVe99Sw5htU30jm9zhb+vcURUA==
66
66
  wnako3webworker.js:
67
- md5(hex): 0a7cd5c0521519c5464807b827797460
68
- sha256(hex): a64462807d0efa1fb83e85d2e602bc873892cd84d9c7603a9bb321a040f655c2
69
- sha256(base64): pkRigH0O+h+4PoXS5gK8hziSzYTZx2A6m7MhoED2VcI=
70
- sha512(base64): l3fLnaRN0BeYzMEbTuDtWiGxnd6B3esC7EUKAFnWN3oqcaejjkLdA4Dz78d/jl+9LheoQWyNkVkwBZAyI1iDeA==
67
+ md5(hex): e69bbc0d9d5ccc6d2d64a2eb238106a8
68
+ sha256(hex): e17c9ea388e449a1445978fb7d3551c81cab69748b2b77843a3c1be786f5fb69
69
+ sha256(base64): 4Xyeo4jkSaFEWXj7fTVRyByraXSLK3eEOjwb54b1+2k=
70
+ sha512(base64): /y1r/EWdtvbAYtiozTy1W0oc0GsoctXn5H0hAYmGUbjw1FLnUD/Gy1VeYmbiL9Jst8daOTN+KarHYYnedamOzg==
@@ -1,14 +1,14 @@
1
- <script defer src="https://nadesi.com/v3/cdn.php?v=3.3.75&f=release/command.json.js" integrity="sha512-j0MPTnrMFO2ME0LvqSNTZOHCwesoWzACeVa6Ip+zyvPZHY0on+JQ11dPLOY1lm4w287LhEYnanfsKeZlk8c7wA==" crossorigin="anonymous"></script>
2
- <script defer src="https://nadesi.com/v3/cdn.php?v=3.3.75&f=release/editor.js" integrity="sha512-ISWxWKTBgEHTvM3GivcqrfP6bCbBvkbdSXy2zxiom36uE5o+gFqc0n01wtjN0eVWfPIqZFJ95IdNllIaeLK5Kw==" crossorigin="anonymous"></script>
3
- <script defer src="https://nadesi.com/v3/cdn.php?v=3.3.75&f=release/nako_gen_async.js" integrity="sha512-m3c7TM5gCnEVoR/bg+3zXoBJqnKidBRuQGym/hJm73ul2tIENMGqDKOEupYIImMcSl/x4DKsBmiNmOk2d42+Zw==" crossorigin="anonymous"></script>
4
- <script defer src="https://nadesi.com/v3/cdn.php?v=3.3.75&f=release/plugin_caniuse.js" integrity="sha512-NbX6BKUNq1J8xwtv5CThQC54Lb/KxaPlimRpsF745nxqjYeuGD7S70j4yOgNm4Uwd7AN5FgezS6NDyhlvoJF2w==" crossorigin="anonymous"></script>
5
- <script defer src="https://nadesi.com/v3/cdn.php?v=3.3.75&f=release/plugin_csv.js" integrity="sha512-mQvmj25L2Nc2L7gN1rTjayHVMMPhc7TCSiBsuKS4JKOQqN+91uj9qpLAOejzR1ib5jIOBdtrhN+secNTU9BJtw==" crossorigin="anonymous"></script>
6
- <script defer src="https://nadesi.com/v3/cdn.php?v=3.3.75&f=release/plugin_datetime.js" integrity="sha512-1ADTZFkcfU6vpEEJZEYmIbqS6G2XViooDFD4198P61n7VKZ0PhEVj9l8ULFGrW7woSbDqfSPZmkZ7yvcRqPKYA==" crossorigin="anonymous"></script>
7
- <script defer src="https://nadesi.com/v3/cdn.php?v=3.3.75&f=release/plugin_kansuji.js" integrity="sha512-tXC9Q6LejwYG+HUbXcwBHFmhwTsqiMHOBohLNcSx8b02hxk3waPUEQRWeNP7QxAFMv5BOAY+Grruf+XKmmU26g==" crossorigin="anonymous"></script>
8
- <script defer src="https://nadesi.com/v3/cdn.php?v=3.3.75&f=release/plugin_markup.js" integrity="sha512-MfyP8ktqZKVTD1j70QZ1qO7W8Zh8eI6113ivwJGXwkks2rTkLR9XTIj0VX3UGa4tilLHlEuROGwwamAdbkxM7A==" crossorigin="anonymous"></script>
9
- <script defer src="https://nadesi.com/v3/cdn.php?v=3.3.75&f=release/plugin_turtle.js" integrity="sha512-3/BlAe3uVDBgJrgFWzLJa3bvNQVhAQuL343Icict5hI3LndcPjV6mAD8KoWRlxmF8A8S6n8eKnmrh6NFWTjyEw==" crossorigin="anonymous"></script>
10
- <script defer src="https://nadesi.com/v3/cdn.php?v=3.3.75&f=release/plugin_webworker.js" integrity="sha512-JLlIg9cW9UgM2AT+qMgEuKvea3t8R+1jihhlN/QGDQe7iCaGEfXfKG5gpvRb0IUyisNfzncUN8AfLn9wyxGGiw==" crossorigin="anonymous"></script>
11
- <script defer src="https://nadesi.com/v3/cdn.php?v=3.3.75&f=release/plugin_weykturtle3d.js" integrity="sha512-T4B8Cvhn9j5YdMGk4rwPInfqmcXtGEjD2g6X6wSqXvYyIXuSy+t1RVf1viZ2zljHlk3wN6pwKvvg/NIJvfMAzw==" crossorigin="anonymous"></script>
12
- <script defer src="https://nadesi.com/v3/cdn.php?v=3.3.75&f=release/version.js" integrity="sha512-etEbJqV2mj8G91P/NJ9YwEg6zp++qf1R6/E8FqTLScaUM9dLpW29BW5N1YzLOlcLpoZtamS3ul7BaI3AgymBHQ==" crossorigin="anonymous"></script>
13
- <script defer src="https://nadesi.com/v3/cdn.php?v=3.3.75&f=release/wnako3.js" integrity="sha512-lDidFN6BGziC4zc/0yfrEeWjNSAXEiv81EBWC801at2ke4Es74TjC48f3BnhEu74otu7aSNRB2qGBP73Xv+trQ==" crossorigin="anonymous"></script>
14
- <script defer src="https://nadesi.com/v3/cdn.php?v=3.3.75&f=release/wnako3webworker.js" integrity="sha512-l3fLnaRN0BeYzMEbTuDtWiGxnd6B3esC7EUKAFnWN3oqcaejjkLdA4Dz78d/jl+9LheoQWyNkVkwBZAyI1iDeA==" crossorigin="anonymous"></script>
1
+ <script defer src="https://nadesi.com/v3/cdn.php?v=3.3.76&f=release/command.json.js" integrity="sha512-vIV8kPMEosj8vnooWxLYSGWiye3Qp19nVK+kRUSr8zEFaFLxqpksI/lM6Z1o4fxN0oCWyPeEH7/S9Rc4/7jMUg==" crossorigin="anonymous"></script>
2
+ <script defer src="https://nadesi.com/v3/cdn.php?v=3.3.76&f=release/editor.js" integrity="sha512-bZMZ6cCFxqZr0pTBZbYuboftNTfGInCs0sKLtZmJxcoZTjXZaAtRhnAG9oW9fRL1fOwvvRDVApknZiAnYEjZnw==" crossorigin="anonymous"></script>
3
+ <script defer src="https://nadesi.com/v3/cdn.php?v=3.3.76&f=release/nako_gen_async.js" integrity="sha512-VflnUiD2mcubUPjGl4VniefJTOVdkNL1N7NB1tViHiX/B3ikOhuHjPnxP/3C/1FHfCcy/HooaC+kv1VZAX4eQA==" crossorigin="anonymous"></script>
4
+ <script defer src="https://nadesi.com/v3/cdn.php?v=3.3.76&f=release/plugin_caniuse.js" integrity="sha512-NbX6BKUNq1J8xwtv5CThQC54Lb/KxaPlimRpsF745nxqjYeuGD7S70j4yOgNm4Uwd7AN5FgezS6NDyhlvoJF2w==" crossorigin="anonymous"></script>
5
+ <script defer src="https://nadesi.com/v3/cdn.php?v=3.3.76&f=release/plugin_csv.js" integrity="sha512-mQvmj25L2Nc2L7gN1rTjayHVMMPhc7TCSiBsuKS4JKOQqN+91uj9qpLAOejzR1ib5jIOBdtrhN+secNTU9BJtw==" crossorigin="anonymous"></script>
6
+ <script defer src="https://nadesi.com/v3/cdn.php?v=3.3.76&f=release/plugin_datetime.js" integrity="sha512-1ADTZFkcfU6vpEEJZEYmIbqS6G2XViooDFD4198P61n7VKZ0PhEVj9l8ULFGrW7woSbDqfSPZmkZ7yvcRqPKYA==" crossorigin="anonymous"></script>
7
+ <script defer src="https://nadesi.com/v3/cdn.php?v=3.3.76&f=release/plugin_kansuji.js" integrity="sha512-tXC9Q6LejwYG+HUbXcwBHFmhwTsqiMHOBohLNcSx8b02hxk3waPUEQRWeNP7QxAFMv5BOAY+Grruf+XKmmU26g==" crossorigin="anonymous"></script>
8
+ <script defer src="https://nadesi.com/v3/cdn.php?v=3.3.76&f=release/plugin_markup.js" integrity="sha512-MfyP8ktqZKVTD1j70QZ1qO7W8Zh8eI6113ivwJGXwkks2rTkLR9XTIj0VX3UGa4tilLHlEuROGwwamAdbkxM7A==" crossorigin="anonymous"></script>
9
+ <script defer src="https://nadesi.com/v3/cdn.php?v=3.3.76&f=release/plugin_turtle.js" integrity="sha512-3/BlAe3uVDBgJrgFWzLJa3bvNQVhAQuL343Icict5hI3LndcPjV6mAD8KoWRlxmF8A8S6n8eKnmrh6NFWTjyEw==" crossorigin="anonymous"></script>
10
+ <script defer src="https://nadesi.com/v3/cdn.php?v=3.3.76&f=release/plugin_webworker.js" integrity="sha512-JLlIg9cW9UgM2AT+qMgEuKvea3t8R+1jihhlN/QGDQe7iCaGEfXfKG5gpvRb0IUyisNfzncUN8AfLn9wyxGGiw==" crossorigin="anonymous"></script>
11
+ <script defer src="https://nadesi.com/v3/cdn.php?v=3.3.76&f=release/plugin_weykturtle3d.js" integrity="sha512-T4B8Cvhn9j5YdMGk4rwPInfqmcXtGEjD2g6X6wSqXvYyIXuSy+t1RVf1viZ2zljHlk3wN6pwKvvg/NIJvfMAzw==" crossorigin="anonymous"></script>
12
+ <script defer src="https://nadesi.com/v3/cdn.php?v=3.3.76&f=release/version.js" integrity="sha512-X0HA8my6Bx+TdfT5X4N49/ZNanL/LEhwYRhIUc+QDSCFUdLbO/2Q8WpZPvsJbK++rq7w8sQF1E9C5n6Dyffxuw==" crossorigin="anonymous"></script>
13
+ <script defer src="https://nadesi.com/v3/cdn.php?v=3.3.76&f=release/wnako3.js" integrity="sha512-L4MqH0aiLaiVqQpO7c3U5UrCeGjTBFwFc2Vv+W0YB6/HsFtQbzaB8zRmy5aHLVe99Sw5htU30jm9zhb+vcURUA==" crossorigin="anonymous"></script>
14
+ <script defer src="https://nadesi.com/v3/cdn.php?v=3.3.76&f=release/wnako3webworker.js" integrity="sha512-/y1r/EWdtvbAYtiozTy1W0oc0GsoctXn5H0hAYmGUbjw1FLnUD/Gy1VeYmbiL9Jst8daOTN+KarHYYnedamOzg==" crossorigin="anonymous"></script>