@opensumi/ide-core-browser 2.15.6 → 2.15.7

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.
package/lib/index.d.ts CHANGED
@@ -25,4 +25,5 @@ export * from './window';
25
25
  export * from './opener';
26
26
  export * from './services';
27
27
  export * from './encoding-registry';
28
+ export * from './markdown';
28
29
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,2BAA2B,CAAC;AAG1C,cAAc,eAAe,CAAC;AAC9B,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AACzB,cAAc,MAAM,CAAC;AACrB,cAAc,QAAQ,CAAC;AACvB,cAAc,WAAW,CAAC;AAG1B,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AAExB,cAAc,eAAe,CAAC;AAE9B,cAAc,UAAU,CAAC;AAEzB,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAE3B,cAAc,OAAO,CAAC;AAEtB,cAAc,oBAAoB,CAAC;AAEnC,cAAc,mBAAmB,CAAC;AAElC,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,2BAA2B,CAAC;AAG1C,cAAc,eAAe,CAAC;AAC9B,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AACzB,cAAc,MAAM,CAAC;AACrB,cAAc,QAAQ,CAAC;AACvB,cAAc,WAAW,CAAC;AAG1B,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AAExB,cAAc,eAAe,CAAC;AAE9B,cAAc,UAAU,CAAC;AAEzB,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAE3B,cAAc,OAAO,CAAC;AAEtB,cAAc,oBAAoB,CAAC;AAEnC,cAAc,mBAAmB,CAAC;AAElC,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,qBAAqB,CAAC;AACpC,cAAc,YAAY,CAAC"}
package/lib/index.js CHANGED
@@ -31,4 +31,5 @@ tslib_1.__exportStar(require("./window"), exports);
31
31
  tslib_1.__exportStar(require("./opener"), exports);
32
32
  tslib_1.__exportStar(require("./services"), exports);
33
33
  tslib_1.__exportStar(require("./encoding-registry"), exports);
34
+ tslib_1.__exportStar(require("./markdown"), exports);
34
35
  //# sourceMappingURL=index.js.map
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,sBAAsB;AACtB,oEAA0C;AAE1C,qBAAqB;AACrB,wDAA8B;AAC9B,4DAAkC;AAClC,2DAAiC;AACjC,sDAA4B;AAC5B,wDAA8B;AAC9B,uDAA6B;AAC7B,qDAA2B;AAC3B,wDAA8B;AAC9B,mDAAyB;AACzB,+CAAqB;AACrB,iDAAuB;AACvB,oDAA0B;AAE1B,SAAS;AACT,mDAAyB;AACzB,kDAAwB;AAExB,wDAA8B;AAE9B,mDAAyB;AAEzB,mDAAyB;AACzB,uDAA6B;AAC7B,qDAA2B;AAE3B,gDAAsB;AAEtB,6DAAmC;AAEnC,4DAAkC;AAElC,mDAAyB;AACzB,mDAAyB;AACzB,qDAA2B;AAC3B,8DAAoC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,sBAAsB;AACtB,oEAA0C;AAE1C,qBAAqB;AACrB,wDAA8B;AAC9B,4DAAkC;AAClC,2DAAiC;AACjC,sDAA4B;AAC5B,wDAA8B;AAC9B,uDAA6B;AAC7B,qDAA2B;AAC3B,wDAA8B;AAC9B,mDAAyB;AACzB,+CAAqB;AACrB,iDAAuB;AACvB,oDAA0B;AAE1B,SAAS;AACT,mDAAyB;AACzB,kDAAwB;AAExB,wDAA8B;AAE9B,mDAAyB;AAEzB,mDAAyB;AACzB,uDAA6B;AAC7B,qDAA2B;AAE3B,gDAAsB;AAEtB,6DAAmC;AAEnC,4DAAkC;AAElC,mDAAyB;AACzB,mDAAyB;AACzB,qDAA2B;AAC3B,8DAAoC;AACpC,qDAA2B"}
@@ -0,0 +1,4 @@
1
+ import React from 'react';
2
+ import { IOpenerService } from '../opener';
3
+ export declare const toMarkdown: (message: string | React.ReactNode, opener: IOpenerService) => React.ReactNode;
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/markdown/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAuC,MAAM,OAAO,CAAC;AAE5D,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAmC3C,eAAO,MAAM,UAAU,YAAa,MAAM,GAAG,MAAM,SAAS,UAAU,cAAc,KAAG,MAAM,SA2B5F,CAAC"}
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.toMarkdown = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const marked_1 = require("marked");
6
+ const react_1 = tslib_1.__importStar(require("react"));
7
+ const DATA_SET_COMMAND = 'data-command';
8
+ const RenderWrapper = (props) => {
9
+ const ref = (0, react_1.useRef)();
10
+ const { html, opener } = props;
11
+ (0, react_1.useEffect)(() => {
12
+ if (ref && ref.current) {
13
+ html.addEventListener('click', listenClick);
14
+ ref.current.appendChild(html);
15
+ }
16
+ return () => {
17
+ var _a;
18
+ (_a = ref.current) === null || _a === void 0 ? void 0 : _a.removeChild(html);
19
+ html.removeEventListener('click', listenClick);
20
+ };
21
+ }, []);
22
+ /**
23
+ * 拦截 a 标签的点击事件,触发 commands
24
+ */
25
+ const listenClick = (event) => {
26
+ const target = event.target;
27
+ if (target.tagName === 'a' && target.hasAttribute(DATA_SET_COMMAND)) {
28
+ const dataCommand = target.getAttribute(DATA_SET_COMMAND);
29
+ if (dataCommand && opener) {
30
+ opener.open(dataCommand);
31
+ }
32
+ }
33
+ };
34
+ return react_1.default.createElement("div", { ref: ref });
35
+ };
36
+ const toMarkdown = (message, opener) => {
37
+ const renderer = new marked_1.marked.Renderer();
38
+ renderer.link = (href, title, text) => `<a rel="noopener" ${DATA_SET_COMMAND}="${href}" href="javascript:void(0)" title="${title}">${text}</a>`;
39
+ return typeof message === 'string' ? (react_1.default.createElement(RenderWrapper, { opener: opener, html: new DOMParser().parseFromString((0, marked_1.marked)(message, {
40
+ gfm: true,
41
+ breaks: false,
42
+ pedantic: false,
43
+ sanitize: true,
44
+ smartLists: true,
45
+ smartypants: false,
46
+ renderer,
47
+ }), 'text/xml').documentElement })) : (message);
48
+ };
49
+ exports.toMarkdown = toMarkdown;
50
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/markdown/index.tsx"],"names":[],"mappings":";;;;AAAA,mCAAgC;AAChC,uDAA4D;AAI5D,MAAM,gBAAgB,GAAG,cAAc,CAAC;AAExC,MAAM,aAAa,GAAG,CAAC,KAAqD,EAAE,EAAE;IAC9E,MAAM,GAAG,GAAG,IAAA,cAAM,GAA8B,CAAC;IACjD,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC;IAE/B,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,IAAI,GAAG,IAAI,GAAG,CAAC,OAAO,EAAE;YACtB,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;YAC5C,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;SAC/B;QACD,OAAO,GAAG,EAAE;;YACV,MAAA,GAAG,CAAC,OAAO,0CAAE,WAAW,CAAC,IAAI,CAAC,CAAC;YAC/B,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;QACjD,CAAC,CAAC;IACJ,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP;;OAEG;IACH,MAAM,WAAW,GAAG,CAAC,KAAmB,EAAE,EAAE;QAC1C,MAAM,MAAM,GAAG,KAAK,CAAC,MAAqB,CAAC;QAC3C,IAAI,MAAM,CAAC,OAAO,KAAK,GAAG,IAAI,MAAM,CAAC,YAAY,CAAC,gBAAgB,CAAC,EAAE;YACnE,MAAM,WAAW,GAAG,MAAM,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAC;YAC1D,IAAI,WAAW,IAAI,MAAM,EAAE;gBACzB,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;aAC1B;SACF;IACH,CAAC,CAAC;IAEF,OAAO,uCAAK,GAAG,EAAE,GAA2C,GAAQ,CAAC;AACvE,CAAC,CAAC;AAEK,MAAM,UAAU,GAAG,CAAC,OAAiC,EAAE,MAAsB,EAAmB,EAAE;IACvG,MAAM,QAAQ,GAAG,IAAI,eAAM,CAAC,QAAQ,EAAE,CAAC;IAEvC,QAAQ,CAAC,IAAI,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CACpC,qBAAqB,gBAAgB,KAAK,IAAI,sCAAsC,KAAK,KAAK,IAAI,MAAM,CAAC;IAE3G,OAAO,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,CACnC,8BAAC,aAAa,IACZ,MAAM,EAAE,MAAM,EACd,IAAI,EACF,IAAI,SAAS,EAAE,CAAC,eAAe,CAC7B,IAAA,eAAM,EAAC,OAAO,EAAE;YACd,GAAG,EAAE,IAAI;YACT,MAAM,EAAE,KAAK;YACb,QAAQ,EAAE,KAAK;YACf,QAAQ,EAAE,IAAI;YACd,UAAU,EAAE,IAAI;YAChB,WAAW,EAAE,KAAK;YAClB,QAAQ;SACT,CAAC,EACF,UAAU,CACX,CAAC,eAAe,GAEJ,CAClB,CAAC,CAAC,CAAC,CACF,OAAO,CACR,CAAC;AACJ,CAAC,CAAC;AA3BW,QAAA,UAAU,cA2BrB"}
@@ -1,4 +1,4 @@
1
- import { IDisposable, IThemeColor, StatusBarHoverCommand } from '@opensumi/ide-core-common';
1
+ import { IDisposable, IMarkdownString, IThemeColor, StatusBarHoverCommand } from '@opensumi/ide-core-common';
2
2
  import { IMenu } from '../menu/next';
3
3
  export declare const IStatusBarService: unique symbol;
4
4
  export interface IStatusBarService {
@@ -48,7 +48,7 @@ export interface StatusBarEntry {
48
48
  color?: IThemeColor | string;
49
49
  backgroundColor?: IThemeColor | string;
50
50
  className?: string;
51
- tooltip?: string;
51
+ tooltip?: string | IMarkdownString;
52
52
  command?: string;
53
53
  arguments?: any[];
54
54
  priority?: number;
@@ -1 +1 @@
1
- {"version":3,"file":"status-bar-service.d.ts","sourceRoot":"","sources":["../../src/services/status-bar-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAC5F,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAErC,eAAO,MAAM,iBAAiB,eAA8B,CAAC;AAE7D,MAAM,WAAW,iBAAiB;IAChC,kBAAkB,IAAI,MAAM,GAAG,SAAS,CAAC;IACzC,kBAAkB,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,cAAc,GAAG,sBAAsB,CAAC;IAC3E,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAClD,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC;;;OAGG;IACH,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,WAAW,EAAE,KAAK,CAAC;IACnB,WAAW,EAAE,cAAc,EAAE,CAAC;IAC9B,YAAY,EAAE,cAAc,EAAE,CAAC;CAChC;AAED,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,qBAAqB,CAAC;CACjC;AAED,MAAM,WAAW,cAAc;IAC7B;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;OAIG;IACH,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,kBAAkB,CAAC;IAC9B,KAAK,CAAC,EAAE,WAAW,GAAG,MAAM,CAAC;IAC7B,eAAe,CAAC,EAAE,WAAW,GAAG,MAAM,CAAC;IACvC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,GAAG,EAAE,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;;OAEG;IACH,aAAa,CAAC,EAAE,qBAAqB,EAAE,CAAC;IACxC,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,KAAK,IAAI,CAAC;CAC5B;AAED,MAAM,WAAW,sBAAuB,SAAQ,WAAW;IACzD;;OAEG;IACH,MAAM,CAAC,UAAU,EAAE,cAAc,GAAG,IAAI,CAAC;CAC1C;AAED,oBAAY,kBAAkB;IAC5B,IAAI,IAAA;IACJ,KAAK,IAAA;CACN;AAED,yBAAiB,gBAAgB,CAAC;IACzB,MAAM,WAAW;;KAEvB,CAAC;IAEK,MAAM,qBAAqB;;KAEjC,CAAC;IAEK,MAAM,UAAU;;KAEtB,CAAC;IAEK,MAAM,aAAa;;KAEzB,CAAC;CACH;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,OAAO,CAAC;CACjB"}
1
+ {"version":3,"file":"status-bar-service.d.ts","sourceRoot":"","sources":["../../src/services/status-bar-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAC7G,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAErC,eAAO,MAAM,iBAAiB,eAA8B,CAAC;AAE7D,MAAM,WAAW,iBAAiB;IAChC,kBAAkB,IAAI,MAAM,GAAG,SAAS,CAAC;IACzC,kBAAkB,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,cAAc,GAAG,sBAAsB,CAAC;IAC3E,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAClD,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC;;;OAGG;IACH,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,WAAW,EAAE,KAAK,CAAC;IACnB,WAAW,EAAE,cAAc,EAAE,CAAC;IAC9B,YAAY,EAAE,cAAc,EAAE,CAAC;CAChC;AAED,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,qBAAqB,CAAC;CACjC;AAED,MAAM,WAAW,cAAc;IAC7B;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;OAIG;IACH,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,kBAAkB,CAAC;IAC9B,KAAK,CAAC,EAAE,WAAW,GAAG,MAAM,CAAC;IAC7B,eAAe,CAAC,EAAE,WAAW,GAAG,MAAM,CAAC;IACvC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,GAAG,eAAe,CAAC;IACnC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,GAAG,EAAE,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;;OAEG;IACH,aAAa,CAAC,EAAE,qBAAqB,EAAE,CAAC;IACxC,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,KAAK,IAAI,CAAC;CAC5B;AAED,MAAM,WAAW,sBAAuB,SAAQ,WAAW;IACzD;;OAEG;IACH,MAAM,CAAC,UAAU,EAAE,cAAc,GAAG,IAAI,CAAC;CAC1C;AAED,oBAAY,kBAAkB;IAC5B,IAAI,IAAA;IACJ,KAAK,IAAA;CACN;AAED,yBAAiB,gBAAgB,CAAC;IACzB,MAAM,WAAW;;KAEvB,CAAC;IAEK,MAAM,qBAAqB;;KAEjC,CAAC;IAEK,MAAM,UAAU;;KAEtB,CAAC;IAEK,MAAM,aAAa;;KAEzB,CAAC;CACH;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,OAAO,CAAC;CACjB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@opensumi/ide-core-browser",
3
- "version": "2.15.6",
3
+ "version": "2.15.7",
4
4
  "description": "@opensumi/ide-core-browser",
5
5
  "files": [
6
6
  "lib"
@@ -17,9 +17,9 @@
17
17
  "build": "tsc --build ../../configs/ts/references/tsconfig.core-browser.json"
18
18
  },
19
19
  "dependencies": {
20
- "@opensumi/ide-components": "2.15.6",
21
- "@opensumi/ide-connection": "2.15.6",
22
- "@opensumi/ide-core-common": "2.15.6",
20
+ "@opensumi/ide-components": "2.15.7",
21
+ "@opensumi/ide-connection": "2.15.7",
22
+ "@opensumi/ide-core-common": "2.15.7",
23
23
  "@opensumi/vscode-debugprotocol": "1.49.0-beta.1",
24
24
  "@vscode/codicons": "0.0.27",
25
25
  "ajv": "^6.10.0",
@@ -34,6 +34,7 @@
34
34
  "lodash.throttle": "^4.1.1",
35
35
  "lodash.uniqby": "^4.1.1",
36
36
  "lzutf8": "^0.5.5",
37
+ "marked": "4.0.10",
37
38
  "mobx": "^5.9.4",
38
39
  "mobx-react-lite": "^1.3.1",
39
40
  "onigasm": "2.2.2",
@@ -52,5 +53,5 @@
52
53
  "vscode-languageserver-protocol": "^3.14.1",
53
54
  "vscode-textmate": "5.4.0"
54
55
  },
55
- "gitHead": "a0fcde4b501535478e2f5dbe6817de99c08d9c8f"
56
+ "gitHead": "0f6daa848f25f4ad9acee989d1c6c29c66b6dba8"
56
57
  }