From b97539a51fb5b75d07f940073410b1a4274401ff Mon Sep 17 00:00:00 2001 From: Akshay Date: Sat, 7 Aug 2021 17:14:31 +0200 Subject: [PATCH 01/37] Feature: Render example JSON response --- data/sidebars/references.yml | 5 -- gatsby-node.js | 2 - package-lock.json | 129 ++++++++++++++++++++++++++++++++ package.json | 1 + src/templates/Swagger/Paths.jsx | 32 ++++++-- 5 files changed, 157 insertions(+), 12 deletions(-) diff --git a/data/sidebars/references.yml b/data/sidebars/references.yml index e3844b98..0a84e9a1 100644 --- a/data/sidebars/references.yml +++ b/data/sidebars/references.yml @@ -13,11 +13,6 @@ - title: API Reference link: /references/aquarius/ -- group: Aquarius Py Module - items: - - title: API Reference - link: /references/read-the-docs/aquarius/ - - group: provider REST API items: - title: API Reference diff --git a/gatsby-node.js b/gatsby-node.js index 1a765c90..345d51f1 100755 --- a/gatsby-node.js +++ b/gatsby-node.js @@ -161,12 +161,10 @@ exports.createPages = ({ graphql, actions }) => { const markdowns = result.data.allRepoMarkdown.edges const oceanPyList = filterMarkdownList(markdowns, 'ocean.py') - const aquariusList = filterMarkdownList(markdowns, 'aquarius') const providerList = filterMarkdownList(markdowns, 'provider') const subgraphList = filterMarkdownList(markdowns, 'ocean-subgraph') await createReadTheDocsPage(createPage, 'ocean-py', oceanPyList) - await createReadTheDocsPage(createPage, 'aquarius', aquariusList) await createReadTheDocsPage(createPage, 'provider', providerList) await createReadTheDocsPage(createPage, 'ocean-subgraph', subgraphList) diff --git a/package-lock.json b/package-lock.json index db5b78e2..f234651e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -6124,6 +6124,11 @@ } } }, + "base16": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/base16/-/base16-1.0.0.tgz", + "integrity": "sha1-4pf2DX7BAUp6lxo568ipjAtoHnA=" + }, "base64-arraybuffer": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.4.tgz", @@ -11128,6 +11133,33 @@ "websocket-driver": ">=0.5.1" } }, + "fbemitter": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/fbemitter/-/fbemitter-3.0.0.tgz", + "integrity": "sha512-KWKaceCwKQU0+HPoop6gn4eOHk50bBv/VxjJtGMfwmJt3D29JpN4H4eisCtIPA+a8GVBam+ldMMpMjJUvpDyHw==", + "requires": { + "fbjs": "^3.0.0" + } + }, + "fbjs": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-3.0.0.tgz", + "integrity": "sha512-dJd4PiDOFuhe7vk4F80Mba83Vr2QuK86FoxtgPmzBqEJahncp+13YCmfoa53KHCo6OnlXLG7eeMWPfB5CrpVKg==", + "requires": { + "cross-fetch": "^3.0.4", + "fbjs-css-vars": "^1.0.0", + "loose-envify": "^1.0.0", + "object-assign": "^4.1.0", + "promise": "^7.1.1", + "setimmediate": "^1.0.5", + "ua-parser-js": "^0.7.18" + } + }, + "fbjs-css-vars": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/fbjs-css-vars/-/fbjs-css-vars-1.0.2.tgz", + "integrity": "sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ==" + }, "fd": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/fd/-/fd-0.0.3.tgz", @@ -11336,6 +11368,15 @@ "readable-stream": "^2.3.6" } }, + "flux": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/flux/-/flux-4.0.1.tgz", + "integrity": "sha512-emk4RCvJ8RzNP2lNpphKnG7r18q8elDYNAPx7xn+bDeOIo9FFfxEfIQ2y6YbQNmnsGD3nH1noxtLE64Puz1bRQ==", + "requires": { + "fbemitter": "^3.0.0", + "fbjs": "^3.0.0" + } + }, "follow-redirects": { "version": "1.13.1", "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.13.1.tgz", @@ -17051,6 +17092,11 @@ "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=" }, + "lodash.curry": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.curry/-/lodash.curry-4.1.1.tgz", + "integrity": "sha1-JI42By7ekGUB11lmIAqG2riyMXA=" + }, "lodash.debounce": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", @@ -17082,6 +17128,11 @@ "resolved": "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz", "integrity": "sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI=" }, + "lodash.flow": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/lodash.flow/-/lodash.flow-3.5.0.tgz", + "integrity": "sha1-h79AKSuM+D5OjOGjrkIJ4gBxZ1o=" + }, "lodash.foreach": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.foreach/-/lodash.foreach-4.5.0.tgz", @@ -20810,6 +20861,11 @@ "escape-goat": "^2.0.0" } }, + "pure-color": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/pure-color/-/pure-color-1.3.0.tgz", + "integrity": "sha1-H+Bk+wrIUfDeYTIKi/eWg2Qi8z4=" + }, "q": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", @@ -20923,6 +20979,17 @@ "object-assign": "^4.1.1" } }, + "react-base16-styling": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/react-base16-styling/-/react-base16-styling-0.6.0.tgz", + "integrity": "sha1-7yFW1mz0E5aVyKFniGy2nqZgeSw=", + "requires": { + "base16": "^1.0.0", + "lodash.curry": "^4.0.1", + "lodash.flow": "^3.3.0", + "pure-color": "^1.2.0" + } + }, "react-dev-utils": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/react-dev-utils/-/react-dev-utils-4.2.3.tgz", @@ -21207,6 +21274,17 @@ "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.0.tgz", "integrity": "sha512-GFMtL0vHkiBv9HluwNZTggSn/sCyEt9n02aM0dSAjGGyqyNlAyftYm4phPxdvCigG15JreC5biwxCgTAJZ7yAA==" }, + "react-json-view": { + "version": "1.21.3", + "resolved": "https://registry.npmjs.org/react-json-view/-/react-json-view-1.21.3.tgz", + "integrity": "sha512-13p8IREj9/x/Ye4WI/JpjhoIwuzEgUAtgJZNBJckfzJt1qyh24BdTm6UQNGnyTq9dapQdrqvquZTo3dz1X6Cjw==", + "requires": { + "flux": "^4.0.1", + "react-base16-styling": "^0.6.0", + "react-lifecycles-compat": "^3.0.4", + "react-textarea-autosize": "^8.3.2" + } + }, "react-lifecycles-compat": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz", @@ -21232,6 +21310,26 @@ "resolved": "https://registry.npmjs.org/react-side-effect/-/react-side-effect-2.1.0.tgz", "integrity": "sha512-IgmcegOSi5SNX+2Snh1vqmF0Vg/CbkycU9XZbOHJlZ6kMzTmi3yc254oB1WCkgA7OQtIAoLmcSFuHTc/tlcqXg==" }, + "react-textarea-autosize": { + "version": "8.3.3", + "resolved": "https://registry.npmjs.org/react-textarea-autosize/-/react-textarea-autosize-8.3.3.tgz", + "integrity": "sha512-2XlHXK2TDxS6vbQaoPbMOfQ8GK7+irc2fVK6QFIcC8GOnH3zI/v481n+j1L0WaPVvKxwesnY93fEfH++sus2rQ==", + "requires": { + "@babel/runtime": "^7.10.2", + "use-composed-ref": "^1.0.0", + "use-latest": "^1.0.0" + }, + "dependencies": { + "@babel/runtime": { + "version": "7.14.8", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.8.tgz", + "integrity": "sha512-twj3L8Og5SaCRCErB4x4ajbvBIVV77CGeFglHpeg5WC5FF8TZzBWXtTJ4MqaD9QszLYTtr+IsaAL2rEUevb+eg==", + "requires": { + "regenerator-runtime": "^0.13.4" + } + } + } + }, "read": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/read/-/read-1.0.7.tgz", @@ -24165,6 +24263,11 @@ "resolved": "https://registry.npmjs.org/true-case-path/-/true-case-path-2.2.1.tgz", "integrity": "sha512-0z3j8R7MCjy10kc/g+qg7Ln3alJTodw9aDuVWZa3uiWqfuBMKeAeP2ocWcxoyM3D73yz3Jt/Pu4qPr4wHSdB/Q==" }, + "ts-essentials": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/ts-essentials/-/ts-essentials-2.0.12.tgz", + "integrity": "sha512-3IVX4nI6B5cc31/GFFE+i8ey/N2eA0CZDbo6n0yrz0zDX8ZJ8djmU1p+XRz7G3is0F3bB3pu2pAroFdAWQKU3w==" + }, "ts-invariant": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/ts-invariant/-/ts-invariant-0.6.0.tgz", @@ -24292,6 +24395,11 @@ "is-typedarray": "^1.0.0" } }, + "ua-parser-js": { + "version": "0.7.28", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.28.tgz", + "integrity": "sha512-6Gurc1n//gjp9eQNXjD9O3M/sMwVtN5S8Lv9bvOYBfKfDNiIIhqiyi01vMBO45u4zkDE420w/e0se7Vs+sIg+g==" + }, "uc.micro": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz", @@ -24856,6 +24964,27 @@ "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==" }, + "use-composed-ref": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/use-composed-ref/-/use-composed-ref-1.1.0.tgz", + "integrity": "sha512-my1lNHGWsSDAhhVAT4MKs6IjBUtG6ZG11uUqexPH9PptiIZDQOzaF4f5tEbJ2+7qvNbtXNBbU3SfmN+fXlWDhg==", + "requires": { + "ts-essentials": "^2.0.3" + } + }, + "use-isomorphic-layout-effect": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.1.1.tgz", + "integrity": "sha512-L7Evj8FGcwo/wpbv/qvSfrkHFtOpCzvM5yl2KVyDJoylVuSvzphiiasmjgQPttIGBAy2WKiBNR98q8w7PiNgKQ==" + }, + "use-latest": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/use-latest/-/use-latest-1.2.0.tgz", + "integrity": "sha512-d2TEuG6nSLKQLAfW3By8mKr8HurOlTkul0sOpxbClIv4SQ4iOd7BYr7VIzdbktUCnv7dua/60xzd8igMU6jmyw==", + "requires": { + "use-isomorphic-layout-effect": "^1.0.0" + } + }, "username-sync": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/username-sync/-/username-sync-1.0.2.tgz", diff --git a/package.json b/package.json index a10b042a..fe07ead0 100644 --- a/package.json +++ b/package.json @@ -51,6 +51,7 @@ "react": "^17.0.2", "react-dom": "^17.0.2", "react-helmet": "^6.1.0", + "react-json-view": "^1.21.3", "react-scrollspy": "^3.4.3", "rehype-react": "^6.2.0", "remark": "^13.0.0", diff --git a/src/templates/Swagger/Paths.jsx b/src/templates/Swagger/Paths.jsx index c92db2cd..510dd0b1 100644 --- a/src/templates/Swagger/Paths.jsx +++ b/src/templates/Swagger/Paths.jsx @@ -4,6 +4,7 @@ import slugify from 'slugify' import { cleanPathKey } from './utils' import styles from './Paths.module.scss' import stylesDoc from '../Doc.module.scss' +import ReactJson from 'react-json-view' const ParameterExample = ({ properties }) => ( // @@ -34,10 +35,10 @@ const ParameterExample = ({ properties }) => ( )} {(properties[key].type === 'integer' || properties[key].type === 'number') && ( - - {`${properties[key].example}`} - - )} + + {`${properties[key].example}`} + + )} {(properties[key].type === 'array' || properties[key].type === 'object') && JSON.stringify(properties[key].example, null, 2)} @@ -94,6 +95,8 @@ const Responses = ({ responses }) => ( {Object.keys(responses).map((key) => (
{key} {responses[key].description} +
+
))} @@ -103,9 +106,28 @@ Responses.propTypes = { responses: PropTypes.object.isRequired } +const ResponseExample = (({ examples }) => { + + if (!examples) return null + const jsonExample = examples["application/json"] + if (jsonExample) { + return ( +
+ Example +
+ +
+ ) + } +}) + +ResponseExample.propTypes = { + example: PropTypes.object +} + + const Method = ({ keyName, value }) => { const { summary, description, parameters, responses } = value - return (

From acc3ac20ae3995b9885657aade0e529797c6dcae Mon Sep 17 00:00:00 2001 From: Akshay Date: Sat, 7 Aug 2021 17:22:28 +0200 Subject: [PATCH 02/37] Fix: Lint issues --- src/templates/Swagger/Paths.jsx | 26 ++++++++++++++++---------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/src/templates/Swagger/Paths.jsx b/src/templates/Swagger/Paths.jsx index 510dd0b1..38cbcc14 100644 --- a/src/templates/Swagger/Paths.jsx +++ b/src/templates/Swagger/Paths.jsx @@ -35,10 +35,10 @@ const ParameterExample = ({ properties }) => ( )} {(properties[key].type === 'integer' || properties[key].type === 'number') && ( - - {`${properties[key].example}`} - - )} + + {`${properties[key].example}`} + + )} {(properties[key].type === 'array' || properties[key].type === 'object') && JSON.stringify(properties[key].example, null, 2)} @@ -106,26 +106,32 @@ Responses.propTypes = { responses: PropTypes.object.isRequired } -const ResponseExample = (({ examples }) => { - +const ResponseExample = ({ examples }) => { if (!examples) return null - const jsonExample = examples["application/json"] + const jsonExample = examples['application/json'] if (jsonExample) { return (
Example
- + + {' '} + +
) } -}) +} ResponseExample.propTypes = { example: PropTypes.object } - const Method = ({ keyName, value }) => { const { summary, description, parameters, responses } = value return ( From 3d14f33d7dc3eb846faa48dd002d975603be4638 Mon Sep 17 00:00:00 2001 From: Akshay Date: Sun, 8 Aug 2021 18:22:26 +0200 Subject: [PATCH 03/37] Feature: Add sample api responses --- src/templates/Swagger/Paths.jsx | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/src/templates/Swagger/Paths.jsx b/src/templates/Swagger/Paths.jsx index 38cbcc14..0fe25b81 100644 --- a/src/templates/Swagger/Paths.jsx +++ b/src/templates/Swagger/Paths.jsx @@ -35,10 +35,10 @@ const ParameterExample = ({ properties }) => ( )} {(properties[key].type === 'integer' || properties[key].type === 'number') && ( - - {`${properties[key].example}`} - - )} + + {`${properties[key].example}`} + + )} {(properties[key].type === 'array' || properties[key].type === 'object') && JSON.stringify(properties[key].example, null, 2)} @@ -109,23 +109,28 @@ Responses.propTypes = { const ResponseExample = ({ examples }) => { if (!examples) return null const jsonExample = examples['application/json'] + const plainText = examples['text/plain'] + if (jsonExample) { return (
Example
- {' '} - {JSON.stringify(jsonExample)} : + />}
) + } else if (plainText) { + return
Example{plainText}
} + + return null } ResponseExample.propTypes = { @@ -134,6 +139,7 @@ ResponseExample.propTypes = { const Method = ({ keyName, value }) => { const { summary, description, parameters, responses } = value + console.log("---", summary, responses) return (

From 44d1c18136f95b3f1985ab67e7b11aa0247b7fd1 Mon Sep 17 00:00:00 2001 From: Akshay Date: Sun, 8 Aug 2021 18:27:25 +0200 Subject: [PATCH 04/37] Feature: Add sample api responses --- src/templates/Swagger/Paths.jsx | 35 +++++++++++++++++++++------------ 1 file changed, 22 insertions(+), 13 deletions(-) diff --git a/src/templates/Swagger/Paths.jsx b/src/templates/Swagger/Paths.jsx index 0fe25b81..f1675478 100644 --- a/src/templates/Swagger/Paths.jsx +++ b/src/templates/Swagger/Paths.jsx @@ -35,10 +35,10 @@ const ParameterExample = ({ properties }) => ( )} {(properties[key].type === 'integer' || properties[key].type === 'number') && ( - - {`${properties[key].example}`} - - )} + + {`${properties[key].example}`} + + )} {(properties[key].type === 'array' || properties[key].type === 'object') && JSON.stringify(properties[key].example, null, 2)} @@ -117,29 +117,38 @@ const ResponseExample = ({ examples }) => { Example
- {typeof jsonExample == "boolean" ? {JSON.stringify(jsonExample)} : } + {typeof jsonExample === 'boolean' ? ( + {JSON.stringify(jsonExample)} + ) : ( + + )}

) } else if (plainText) { - return
Example{plainText}
+ return ( +
+ Example + {plainText} +
+ ) } return null } ResponseExample.propTypes = { - example: PropTypes.object + examples: PropTypes.object } const Method = ({ keyName, value }) => { const { summary, description, parameters, responses } = value - console.log("---", summary, responses) + console.log('---', summary, responses) return (

From cda2edcc0146096711574fcd26c2771cd352b9ce Mon Sep 17 00:00:00 2001 From: Akshay Date: Sun, 8 Aug 2021 19:26:33 +0200 Subject: [PATCH 05/37] Fix build issue --- gatsby-node.js | 4 +- src/templates/Swagger/Paths.jsx | 71 +++++++---------------- src/templates/Swagger/ResponseExample.jsx | 48 +++++++++++++++ 3 files changed, 69 insertions(+), 54 deletions(-) create mode 100644 src/templates/Swagger/ResponseExample.jsx diff --git a/gatsby-node.js b/gatsby-node.js index 345d51f1..0b460e52 100755 --- a/gatsby-node.js +++ b/gatsby-node.js @@ -202,9 +202,7 @@ const createTypeDocPage = async (createPage, name, downloadUrl) => { // https://github.com/swagger-api/swagger-js const fetchSwaggerSpec = async (component) => { try { - const client = await Swagger( - `https://${component}.mainnet.oceanprotocol.com/spec` - ) + const client = await Swagger(`http://localhost:5000/spec`) return client.spec // The resolved spec // client.originalSpec // In case you need it diff --git a/src/templates/Swagger/Paths.jsx b/src/templates/Swagger/Paths.jsx index f1675478..0f1d311e 100644 --- a/src/templates/Swagger/Paths.jsx +++ b/src/templates/Swagger/Paths.jsx @@ -4,8 +4,9 @@ import slugify from 'slugify' import { cleanPathKey } from './utils' import styles from './Paths.module.scss' import stylesDoc from '../Doc.module.scss' -import ReactJson from 'react-json-view' - +const ResponseExample = React.lazy(() => + import("./ResponseExample") +) const ParameterExample = ({ properties }) => ( // // HEADS UP! @@ -35,10 +36,10 @@ const ParameterExample = ({ properties }) => ( )} {(properties[key].type === 'integer' || properties[key].type === 'number') && ( - - {`${properties[key].example}`} - - )} + + {`${properties[key].example}`} + + )} {(properties[key].type === 'array' || properties[key].type === 'object') && JSON.stringify(properties[key].example, null, 2)} @@ -89,63 +90,31 @@ Parameters.propTypes = { parameters: PropTypes.array.isRequired } -const Responses = ({ responses }) => ( - <> +const Responses = ({ responses }) => { + const isSSR = typeof window === "undefined" + + return (<>

Responses

{Object.keys(responses).map((key) => (
{key} {responses[key].description}
- + <> + {!isSSR && ( + }> + + + )} +
))} - -) + ) +} Responses.propTypes = { responses: PropTypes.object.isRequired } -const ResponseExample = ({ examples }) => { - if (!examples) return null - const jsonExample = examples['application/json'] - const plainText = examples['text/plain'] - - if (jsonExample) { - return ( -
- Example -
- - {typeof jsonExample === 'boolean' ? ( - {JSON.stringify(jsonExample)} - ) : ( - - )} - -
- ) - } else if (plainText) { - return ( -
- Example - {plainText} -
- ) - } - - return null -} - -ResponseExample.propTypes = { - examples: PropTypes.object -} - const Method = ({ keyName, value }) => { const { summary, description, parameters, responses } = value console.log('---', summary, responses) diff --git a/src/templates/Swagger/ResponseExample.jsx b/src/templates/Swagger/ResponseExample.jsx new file mode 100644 index 00000000..974b1452 --- /dev/null +++ b/src/templates/Swagger/ResponseExample.jsx @@ -0,0 +1,48 @@ +import React from "react" +import PropTypes from "prop-types" +import ReactJson from 'react-json-view' + + +const ResponseExample = ({ examples }) => { + + if (!examples) return null + const jsonExample = examples['application/json'] + const plainText = examples['text/plain'] + + if (typeof document !== `undefined`) { + if (jsonExample) { + return ( +
+ Example +
+ + {typeof jsonExample === 'boolean' ? ( + {JSON.stringify(jsonExample)} + ) : ( + + )} + +
+ ) + } else if (plainText) { + return ( +
+ Example + {plainText} +
+ ) + } + } + return null +} + +ResponseExample.propTypes = { + examples: PropTypes.object +} + +export default ResponseExample \ No newline at end of file From 0e658d725774a99173ab3883efca95de8082136e Mon Sep 17 00:00:00 2001 From: Akshay Date: Sun, 8 Aug 2021 19:32:29 +0200 Subject: [PATCH 06/37] Fix build issue --- gatsby-node.js | 4 +- src/templates/Swagger/Paths.jsx | 48 +++++++-------- src/templates/Swagger/ResponseExample.jsx | 74 +++++++++++------------ 3 files changed, 63 insertions(+), 63 deletions(-) diff --git a/gatsby-node.js b/gatsby-node.js index 0b460e52..345d51f1 100755 --- a/gatsby-node.js +++ b/gatsby-node.js @@ -202,7 +202,9 @@ const createTypeDocPage = async (createPage, name, downloadUrl) => { // https://github.com/swagger-api/swagger-js const fetchSwaggerSpec = async (component) => { try { - const client = await Swagger(`http://localhost:5000/spec`) + const client = await Swagger( + `https://${component}.mainnet.oceanprotocol.com/spec` + ) return client.spec // The resolved spec // client.originalSpec // In case you need it diff --git a/src/templates/Swagger/Paths.jsx b/src/templates/Swagger/Paths.jsx index 0f1d311e..56e01daf 100644 --- a/src/templates/Swagger/Paths.jsx +++ b/src/templates/Swagger/Paths.jsx @@ -4,9 +4,7 @@ import slugify from 'slugify' import { cleanPathKey } from './utils' import styles from './Paths.module.scss' import stylesDoc from '../Doc.module.scss' -const ResponseExample = React.lazy(() => - import("./ResponseExample") -) +const ResponseExample = React.lazy(() => import('./ResponseExample')) const ParameterExample = ({ properties }) => ( // // HEADS UP! @@ -36,10 +34,10 @@ const ParameterExample = ({ properties }) => ( )} {(properties[key].type === 'integer' || properties[key].type === 'number') && ( - - {`${properties[key].example}`} - - )} + + {`${properties[key].example}`} + + )} {(properties[key].type === 'array' || properties[key].type === 'object') && JSON.stringify(properties[key].example, null, 2)} @@ -91,24 +89,26 @@ Parameters.propTypes = { } const Responses = ({ responses }) => { - const isSSR = typeof window === "undefined" + const isSSR = typeof window === 'undefined' - return (<> -

Responses

- {Object.keys(responses).map((key) => ( -
- {key} {responses[key].description} -
- <> - {!isSSR && ( - }> - - - )} - -
- ))} - ) + return ( + <> +

Responses

+ {Object.keys(responses).map((key) => ( +
+ {key} {responses[key].description} +
+ <> + {!isSSR && ( + }> + + + )} + +
+ ))} + + ) } Responses.propTypes = { diff --git a/src/templates/Swagger/ResponseExample.jsx b/src/templates/Swagger/ResponseExample.jsx index 974b1452..579a2cf8 100644 --- a/src/templates/Swagger/ResponseExample.jsx +++ b/src/templates/Swagger/ResponseExample.jsx @@ -1,48 +1,46 @@ -import React from "react" -import PropTypes from "prop-types" +import React from 'react' +import PropTypes from 'prop-types' import ReactJson from 'react-json-view' - const ResponseExample = ({ examples }) => { + if (!examples) return null + const jsonExample = examples['application/json'] + const plainText = examples['text/plain'] - if (!examples) return null - const jsonExample = examples['application/json'] - const plainText = examples['text/plain'] - - if (typeof document !== `undefined`) { - if (jsonExample) { - return ( -
- Example -
- - {typeof jsonExample === 'boolean' ? ( - {JSON.stringify(jsonExample)} - ) : ( - - )} - -
- ) - } else if (plainText) { - return ( -
- Example - {plainText} -
- ) - } + if (typeof document !== `undefined`) { + if (jsonExample) { + return ( +
+ Example +
+ + {typeof jsonExample === 'boolean' ? ( + {JSON.stringify(jsonExample)} + ) : ( + + )} + +
+ ) + } else if (plainText) { + return ( +
+ Example + {plainText} +
+ ) } - return null + } + return null } ResponseExample.propTypes = { - examples: PropTypes.object + examples: PropTypes.object } -export default ResponseExample \ No newline at end of file +export default ResponseExample From 8d565a7ec7c252413720477bd533c6fd4f2714bb Mon Sep 17 00:00:00 2001 From: Akshay Date: Sun, 8 Aug 2021 19:54:32 +0200 Subject: [PATCH 07/37] Fix build issue --- src/templates/Swagger/ResponseExample.jsx | 55 +++++++++++------------ 1 file changed, 27 insertions(+), 28 deletions(-) diff --git a/src/templates/Swagger/ResponseExample.jsx b/src/templates/Swagger/ResponseExample.jsx index 579a2cf8..1ac5a876 100644 --- a/src/templates/Swagger/ResponseExample.jsx +++ b/src/templates/Swagger/ResponseExample.jsx @@ -7,35 +7,34 @@ const ResponseExample = ({ examples }) => { const jsonExample = examples['application/json'] const plainText = examples['text/plain'] - if (typeof document !== `undefined`) { - if (jsonExample) { - return ( -
- Example -
- - {typeof jsonExample === 'boolean' ? ( - {JSON.stringify(jsonExample)} - ) : ( - - )} - -
- ) - } else if (plainText) { - return ( -
- Example - {plainText} -
- ) - } + if (jsonExample) { + return ( +
+ Example +
+ + {typeof jsonExample === 'boolean' ? ( + {JSON.stringify(jsonExample)} + ) : ( + + )} + +
+ ) + } else if (plainText) { + return ( +
+ Example + {plainText} +
+ ) } + return null } From 26ceeb29d78cd4ce338c5c64bfb16ef8e94b9701 Mon Sep 17 00:00:00 2001 From: Akshay Date: Sun, 8 Aug 2021 20:12:36 +0200 Subject: [PATCH 08/37] Remove console log --- src/templates/Swagger/Paths.jsx | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/templates/Swagger/Paths.jsx b/src/templates/Swagger/Paths.jsx index 56e01daf..9f6856d8 100644 --- a/src/templates/Swagger/Paths.jsx +++ b/src/templates/Swagger/Paths.jsx @@ -34,10 +34,10 @@ const ParameterExample = ({ properties }) => ( )} {(properties[key].type === 'integer' || properties[key].type === 'number') && ( - - {`${properties[key].example}`} - - )} + + {`${properties[key].example}`} + + )} {(properties[key].type === 'array' || properties[key].type === 'object') && JSON.stringify(properties[key].example, null, 2)} @@ -117,7 +117,6 @@ Responses.propTypes = { const Method = ({ keyName, value }) => { const { summary, description, parameters, responses } = value - console.log('---', summary, responses) return (

From 8fe69308c049de4e26926f07aa2a61bdf4457ffb Mon Sep 17 00:00:00 2001 From: Akshay Date: Sun, 8 Aug 2021 20:32:00 +0200 Subject: [PATCH 09/37] Fix lint issue --- src/templates/Swagger/Paths.jsx | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/templates/Swagger/Paths.jsx b/src/templates/Swagger/Paths.jsx index 9f6856d8..08032a01 100644 --- a/src/templates/Swagger/Paths.jsx +++ b/src/templates/Swagger/Paths.jsx @@ -34,10 +34,10 @@ const ParameterExample = ({ properties }) => ( )} {(properties[key].type === 'integer' || properties[key].type === 'number') && ( - - {`${properties[key].example}`} - - )} + + {`${properties[key].example}`} + + )} {(properties[key].type === 'array' || properties[key].type === 'object') && JSON.stringify(properties[key].example, null, 2)} From e98f5ce05bfbf0a3b179b5007557906e2aac7679 Mon Sep 17 00:00:00 2001 From: Akshay Date: Tue, 17 Aug 2021 10:45:39 +0200 Subject: [PATCH 10/37] Trigger rebuild From 5ac87f7de2746dfb6f6cb1a0c1d23f525cea7663 Mon Sep 17 00:00:00 2001 From: David Hunt-Mateo Date: Mon, 27 Sep 2021 17:09:32 -0400 Subject: [PATCH 11/37] Trigger rebuild From 3c69e432748bfcc72517d5fd34a5d1dac82e2244 Mon Sep 17 00:00:00 2001 From: trentmc <5305452+trentmc@users.noreply.github.com> Date: Wed, 29 Sep 2021 14:52:44 +0200 Subject: [PATCH 12/37] For #700. Make projects-using-ocean easy to maintain --- content/concepts/projects-using-ocean.md | 65 +++--------------------- 1 file changed, 8 insertions(+), 57 deletions(-) diff --git a/content/concepts/projects-using-ocean.md b/content/concepts/projects-using-ocean.md index 24392fc5..8d8e2ed4 100644 --- a/content/concepts/projects-using-ocean.md +++ b/content/concepts/projects-using-ocean.md @@ -1,70 +1,21 @@ --- title: Projects using Ocean Protocol -description: These are live projects that leverage core functionality of Ocean, use Ocean Market, or use OCEAN with staking and the like. +description: This page helps you to find projects in the Ocean ecosystem. --- -> You can add to this list by submitting a Pull Request via the _Edit_ link at the bottom of this document, following our [outlined contribution workflow](https://github.com/oceanprotocol/docs/blob/main/docs/content.md#editing-docs). -> -> A project being listed on this page should not be seen as a "stamp of approval" by Ocean Protocol Foundation. - -Projects we directly work with can be found on our [Collaborators page](https://oceanprotocol.com/collaborators). - -## Using the Ocean Protocol stack - -These are live projects that leverage core functionality of Ocean, such as reading or writing on Ocean datatokens or data pools. They don't rely on Ocean Market for an interface, by either having their own GUI or CLI, or using another app. - -| Name | Description | Link | -| --------------------------------------------- | ------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | -| Ocean Market (from Ocean core team) | A marketplace to find, publish and trade data sets in the Ocean Network | [market.oceanprotocol.com](https://market.oceanprotocol.com) | -| deltaDAO | Ocean Protocol consulting, engineering and integration company for GDPR-compliant data monetization | [delta-dao.com](https://delta-dao.com) | -| [Parsiq](https://parsiq.net/) | User notifications for dataset publishes, metadata actions, more | [parsiq.net](https://parsiq.net/) | -| [Data Market Cap](https://datamarketcap.xyz/) | A platform that provides an analysis of the datatokens market | [datamarketcap.xyz](https://datamarketcap.xyz/) | -| [Datapolis](https://datapolis.net/) | A data-marketplace for buying, selling datasets and earning interests through staking | [datapolis.net](https://datapolis.net/) | -| [rugpullindex.com](https://rugpullindex.com/) | Ranks Ocean dataset pools based on risk of investment | [rugpullindex.com](https://rugpullindex.com/) | -| Data index fund | Demo. Has 8 datatoken assets in a Balancer pool. Auto-balanced. | [Tweet announcement](https://twitter.com/trentmc0/status/1339534813330628612) | -| [Data Union](https://dataunion.app/) | Data union for annotating images. | [dataunion.app](https://dataunion.app/). | -| [Data Dao](https://datadao.co/) | A marketplace for collaborative datasets curation. | [datadao.co](https://datadao.co/) | -| [Video Wiki](https://videowiki.pt/) | A collaborative content editing platform that enables rapid creation, modification, protection and monetization of immersive content. | [videowiki.pt](https://videowiki.pt/) | -| [Moonjelly](https://devpost.com/software/moonjelly) | An open-source chrome extension for easy curation & minting to the ocean market. |[moonjelly repo](https://github.com/jboetticher/moon-jelly). | -| [Ocean caller](https://devpost.com/software/oceancaller) | An andriod app to share contacts in a decentralised way. |[Ocean Caller repo](https://github.com/BakaOtaku/oceancaller). | -| [Price Your Pool](https://priceyourpool.xyz/) | Dapp to re-price datatoken to lower value without diluting LP pool shares in data pool. |[Price Your Pool](https://priceyourpool.xyz/). | -| [Poseidon](https://poseidon.world/) | Dapp to create and manage your datatokens. |[Poseidon](https://poseidon.world/). | -| [Swash app](https://swashapp.io/) | A cross-browser plugin to allowing users to monetise from their browsing data. |[Swash app](https://swashapp.io/). | -| [Oort Digital](https://oortdigital.tech/) | A marketplace to lend and borrow your NFTs. |[Oort Digital website](https://oortdigital.tech/). | -| [Oyster Shell](https://oystershell.io/) | A platform that provides an analysis of the datatokens market. |[Oyster Shell dapp](https://oystershell.io/). | - - +## OceanDAO projects +[Ocean Pearl](https://oceanpearl.io/projects) is a great way to browse 80+ Ocean projects that came through [OceanDAO](https://oceanprotocol.com/dao). These projects may be building on the Ocean stack, doing outreach, unlocking data, or more. ## Using Ocean Market -[Ocean Market](https://market.oceanprotocol.com) has many teams that are selling data, often as their core approach to monetization. Below are some projects. For a more thorough and up-to-date list, please go to [the Ocean Market app itself](https://market.oceanprotocol.com). +[Ocean Market](https://market.oceanprotocol.com) is the best place to find projects that publish datasets. Simply go there and browse the datasets:) -| Name | Description | Example Dataset | -| -------------------------------------------- | -------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------ | -| [Transport Genie](https://transportgenie.ca) | Agricultural transport data | [Swine Micro-Climate Conditions](https://market.oceanprotocol.com/asset/did:op:Ac3a39F843316c83Db11a9E6D703a7473c26aCe0) | -| [DataUnion.App](https://dataunion.app) | Data union for annotating images | [Image & Annotation Vault](https://market.oceanprotocol.com/asset/did:op:7Bce67697eD2858d0683c631DdE7Af823b7eea38) | -| [Swash](https://swashapp.io) | Data union of browser data | [Consumer Browsing Data](https://market.oceanprotocol.com/asset/did:op:b07a8bb80242752ce164560ABCb6517DA90a4F65) | -| [Tapmydata](https://tapmydata.com) | Datasets of who's trying to access your data | [TAP subject access requests](https://market.oceanprotocol.com/asset/did:op:ED6FB9010Fd283aF2f2700f13A7f24E027f1CEf3) | -| [Evotegra](https://www.evotegra.de/) | Artificial Intelligence for automotive and industry applications | [German Traffic Dataset](https://market.oceanprotocol.com/asset/did:op:2a76F680279CE629a9F5E601BDa7246e06F226f0) | +## Learning about Ocean -## Using OCEAN +The [Ocean Academy](https://oceanacademy.io/) project is a great way to learn more about Ocean beyond [oceanprotocol.com](https://www.oceanprotocol.com) and [docs.oceanprotocol.com](https://docs.oceanprotocol.com). -These projects use just OCEAN, but do more than just exchanging it. This includes staking, and liquidity mining opportunities. +## Trading OCEAN -| Name | Description | Launch Date | Link | -| -------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------- | ----------- | --------------------------------------------------------------------------------------------------------------------- | -| [Secret Network](https://scrt.network) | Stake OCEAN on bridge between Eth mainnet <> Secret network | Jan 2021 | [bridge.scrt.network](https://bridge.scrt.network/) | -| [AllianceBlock](https://allianceblock.io) | Stake OCEAN in AllianceBlock liquidity mining program | Jan 2021 | [lm.allianceblock.io](https://lm.allianceblock.io) | -| [Balancer DEX](https://www.balancer.finance) | Stake OCEAN as a liquidity provider in any OCEAN-\* pair, get Balancer Liquidity Mining rewards. Create/use datatoken pools too. | Spring 2020 | [pools.balancer.exchange](https://pools.balancer.exchange/#/explore?token=0x967da4048cD07aB37855c090aAF366e4ce1b9F48) | -| [Bancor DEX](https://bancor.network) | Stake OCEAN as a liquidity provider in any OCEAN-\* pair, get Bancor Liquidity Mining rewards. Create/use datatoken pools too. | Fall 2020 | [app.bancor.network](https://app.bancor.network/eth/data) | -| [Uniswap DEX](https://www.uniswap.io) | Stake OCEAN as a liquidity provider in any OCEAN-\* pair. Create/use datatoken pools too. | Summer 2020 | [app.uniswap.org](https://app.uniswap.org/#/add/) | -| [Sushiswap DEX](https://www.uniswap.io) | Stake OCEAN as a liquidity provider in any OCEAN-\* pair. Create/use datatoken pools too. | Jan 2021 | [app.sushiswap.fi](https://app.sushiswap.fi/pair/0xee35e548c7457fcdd51ae95ed09108be660ea374) | +The [Coingecko OCEAN markets page](https://www.coingecko.com/en/coins/ocean-protocol#markets) lists forums to exchange OCEAN. Many of them offer liquidity mining and other yield opportunities. -## Other Projects - -These projects relate to Ocean in some way but do not fit neatly into the other categories. They may be for Ocean education, Ocean swag, or otherwise. - -| Name | Description | Date | App | -| ------------- | ---------------------------------------------------------------------------------------------------------- | --------- | ------------------------------------------- | -| Ocean Academy | A community initiative providing a simple and practical introduction to Ocean Protocol starting from zero. | Fall 2020 | [oceanacademy.io](https://oceanacademy.io/) | From 853e1209a34fa865e0e4782707d39a79f84729cb Mon Sep 17 00:00:00 2001 From: Akshay Date: Wed, 29 Sep 2021 20:54:16 +0200 Subject: [PATCH 13/37] Trigger rebuild From e346cf95bfd00a1d7738744ec5d4517c5d2bbe90 Mon Sep 17 00:00:00 2001 From: trentmc <5305452+trentmc@users.noreply.github.com> Date: Sat, 2 Oct 2021 11:53:10 +0200 Subject: [PATCH 14/37] Fix #786 --- data/repositories.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/data/repositories.yml b/data/repositories.yml index 1c6f2ece..fd54f161 100644 --- a/data/repositories.yml +++ b/data/repositories.yml @@ -5,7 +5,6 @@ - name: Reference url: /references/ocean.js/ - name: ocean.py - - name: react - group: Core items: From f033454dba71232f7dfd2aeec7a25b660183ffe8 Mon Sep 17 00:00:00 2001 From: Alex Coseru Date: Wed, 6 Oct 2021 12:27:20 +0300 Subject: [PATCH 15/37] add moonriver (#790) --- content/concepts/networks.md | 38 ++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/content/concepts/networks.md b/content/concepts/networks.md index 6a9c2297..40d44ae8 100644 --- a/content/concepts/networks.md +++ b/content/concepts/networks.md @@ -69,6 +69,44 @@ If you don't find Polygon as a predefined network in your wallet, you can connec Check our [Polygon Bridge guide](/tutorials/polygon-bridge/) to learn how you can deposit, withdraw and send tokens. + +## Moonriver + +Ocean is deployed to [Moonriver](https://moonbeam.network/networks/moonriver/), another production network. Moonriver's native token is MOVR. + +If you don't find Moonriver as a predefined network in your wallet, you can connect to it manually via [Ocean's guide](/tutorials/metamask-setup/#set-up-custom-network) and the parameters below. + +| What | Value | +| ------------------ | ----------------------------------- | +| Network Name | `Moonriver` | +| RPC | `https://moonriver.api.onfinality.io/public` | +| Chain Id | `1285` | +| Currency Symbol | `MOVR` | +| Block Explorer URL | `https://blockscout.moonriver.moonbeam.network` | + +**Tokens** + +- Moonriver MOVR: + - Native token to pay transaction fees + - Exchanges to purchase: [List](https://coinmarketcap.com/currencies/moonriver/markets/) +- Moonriver OCEAN: + - Address: [0x99C409E5f62E4bd2AC142f17caFb6810B8F0BAAE](https://blockscout.moonriver.moonbeam.network/address/0x99C409E5f62E4bd2AC142f17caFb6810B8F0BAAE/) + - [Exchanges to purchase](https://oceanprotocol.com/token#get) + +**Additional Components** + +| What | URL | +| ------------ | ---------------------------------------------------------------- | +| Explorer | https://blockscout.moonriver.moonbeam.network/ | +| Ocean Market | Point wallet to Moonriver network, at https://market.oceanprotocol.com | +| Provider | `https://provider.moonriver.oceanprotocol.com` | +| Subgraph | `https://subgraph.moonriver.oceanprotocol.com` | + +**Bridge** + +Use [Anyswap](https://anyswap.exchange/#/bridge) to bridge between ETH Mainnet and Moonriver + + ## Binance Smart Chain Ocean is deployed to [Binance Smart Chain (BSC)](https://academy.binance.com/en/articles/how-to-get-started-with-binance-smart-chain-bsc), another production network. BSC's native token is BNB - the Binance token. From 3ffb3b61e84a9f8b10d5b9376ebdbedc84b5c063 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 6 Oct 2021 11:27:39 +0200 Subject: [PATCH 16/37] Bump axios from 0.21.4 to 0.22.0 (#789) Bumps [axios](https://github.com/axios/axios) from 0.21.4 to 0.22.0. - [Release notes](https://github.com/axios/axios/releases) - [Changelog](https://github.com/axios/axios/blob/master/CHANGELOG.md) - [Commits](https://github.com/axios/axios/compare/v0.21.4...v0.22.0) --- updated-dependencies: - dependency-name: axios dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 55 +++++++++++++++++++++++++++++++++++++++++------ package.json | 2 +- 2 files changed, 49 insertions(+), 8 deletions(-) diff --git a/package-lock.json b/package-lock.json index 222f4506..4c180090 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5913,17 +5913,17 @@ "integrity": "sha512-1uIESzroqpaTzt9uX48HO+6gfnKu3RwvWdCcWSrX4csMInJfCo1yvKPNXCwXFRpJqRW25tiASb6No0YH57PXqg==" }, "axios": { - "version": "0.21.4", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", - "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", + "version": "0.22.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.22.0.tgz", + "integrity": "sha512-Z0U3uhqQeg1oNcihswf4ZD57O3NrR1+ZXhxaROaWpDmsDTx7T2HNBV2ulBtie2hwJptu8UvgnJoK+BIqdzh/1w==", "requires": { - "follow-redirects": "^1.14.0" + "follow-redirects": "^1.14.4" }, "dependencies": { "follow-redirects": { - "version": "1.14.3", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.3.tgz", - "integrity": "sha512-3MkHxknWMUtb23apkgz/83fDoe+y+qr0TdgacGIA7bew+QLBo3vdgEN2xEsuXNivpFy4CyDhBBZnNZOtalmenw==" + "version": "1.14.4", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.4.tgz", + "integrity": "sha512-zwGkiSXC1MUJG/qmeIFH2HBJx9u0V46QGUe3YR1fXG8bXQxq7fLj0RjLZQ5nubr9qNJUZrH+xUcwXEoXNpfS+g==" } } }, @@ -7810,6 +7810,19 @@ "type-fest": "1.0.2" }, "dependencies": { + "axios": { + "version": "0.21.4", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", + "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", + "requires": { + "follow-redirects": "^1.14.0" + } + }, + "follow-redirects": { + "version": "1.14.4", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.4.tgz", + "integrity": "sha512-zwGkiSXC1MUJG/qmeIFH2HBJx9u0V46QGUe3YR1fXG8bXQxq7fLj0RjLZQ5nubr9qNJUZrH+xUcwXEoXNpfS+g==" + }, "type-fest": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.0.2.tgz", @@ -11835,6 +11848,14 @@ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" }, + "axios": { + "version": "0.21.4", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", + "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", + "requires": { + "follow-redirects": "^1.14.0" + } + }, "camelcase": { "version": "5.3.1", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", @@ -12199,6 +12220,11 @@ "locate-path": "^2.0.0" } }, + "follow-redirects": { + "version": "1.14.4", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.4.tgz", + "integrity": "sha512-zwGkiSXC1MUJG/qmeIFH2HBJx9u0V46QGUe3YR1fXG8bXQxq7fLj0RjLZQ5nubr9qNJUZrH+xUcwXEoXNpfS+g==" + }, "gatsby-cli": { "version": "2.19.3", "resolved": "https://registry.npmjs.org/gatsby-cli/-/gatsby-cli-2.19.3.tgz", @@ -23163,6 +23189,21 @@ "minimatch": "^3.0.4", "pretty-bytes": "^5.3.0", "util.promisify": "^1.0.0" + }, + "dependencies": { + "axios": { + "version": "0.21.4", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", + "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", + "requires": { + "follow-redirects": "^1.14.0" + } + }, + "follow-redirects": { + "version": "1.14.4", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.4.tgz", + "integrity": "sha512-zwGkiSXC1MUJG/qmeIFH2HBJx9u0V46QGUe3YR1fXG8bXQxq7fLj0RjLZQ5nubr9qNJUZrH+xUcwXEoXNpfS+g==" + } } }, "slash": { diff --git a/package.json b/package.json index 9c144d3a..4b0e2a21 100644 --- a/package.json +++ b/package.json @@ -20,7 +20,7 @@ "@material-ui/icons": "^4.11.2", "@material-ui/lab": "^4.0.0-alpha.60", "@oceanprotocol/art": "^3.2.0", - "axios": "^0.21.4", + "axios": "^0.22.0", "classnames": "^2.3.1", "gatsby": "^2.32.13", "gatsby-image": "^3.11.0", From a42a723849ad1f9edfde773a4586c5dae270045e Mon Sep 17 00:00:00 2001 From: Alex Coseru Date: Fri, 8 Oct 2021 12:24:28 +0300 Subject: [PATCH 17/37] add energyweb (#791) * add energyweb * add missing moonriver --- content/concepts/networks.md | 39 +++++++++++++++++++++++++++++++++++- 1 file changed, 38 insertions(+), 1 deletion(-) diff --git a/content/concepts/networks.md b/content/concepts/networks.md index 40d44ae8..b51ed856 100644 --- a/content/concepts/networks.md +++ b/content/concepts/networks.md @@ -69,7 +69,6 @@ If you don't find Polygon as a predefined network in your wallet, you can connec Check our [Polygon Bridge guide](/tutorials/polygon-bridge/) to learn how you can deposit, withdraw and send tokens. - ## Moonriver Ocean is deployed to [Moonriver](https://moonbeam.network/networks/moonriver/), another production network. Moonriver's native token is MOVR. @@ -107,6 +106,44 @@ If you don't find Moonriver as a predefined network in your wallet, you can conn Use [Anyswap](https://anyswap.exchange/#/bridge) to bridge between ETH Mainnet and Moonriver +## Energy Web Chain + +Ocean is deployed to [Energy Web Chain](https://www.energyweb.org/technology/energy-web-chain/), another production network. Energy Web's native token is EWT. + +If you don't find Energy Web Chain as a predefined network in your wallet, you can connect to it manually via [Ocean's guide](/tutorials/metamask-setup/#set-up-custom-network) and the parameters below. + +| What | Value | +| ------------------ | ----------------------------------- | +| Network Name | `Energy Web Chain` | +| RPC | `https://rpc.energyweb.org` | +| Chain Id | `246` | +| Currency Symbol | `EWT` | +| Block Explorer URL | `https://explorer.energyweb.org/` | + +**Tokens** + +- Energy Web Chain EWT: + - Native token to pay transaction fees + - Exchanges to purchase: [List](https://coinmarketcap.com/currencies/energy-web-token/markets/) +- Energy Web Chain OCEAN: + - Address: [0x593122aae80a6fc3183b2ac0c4ab3336debee528](https://explorer.energyweb.org/tokens/0x593122AAE80A6Fc3183b2AC0c4ab3336dEbeE528) + - [Exchanges to purchase](https://oceanprotocol.com/token#get) + +**Additional Components** + +| What | URL | +| ------------ | ---------------------------------------------------------------- | +| Explorer | https://explorer.energyweb.org/ | +| Ocean Market | Point wallet to Energy Web Chain network, at https://market.oceanprotocol.com | +| Provider | `https://provider.energyweb.oceanprotocol.com` | +| Subgraph | `https://subgraph.energyweb.oceanprotocol.com` | + +**Bridge** + +Use [Carbonswap bridge](https://bridge.carbonswap.exchange/bridge) to bridge between ETH Mainnet and Energy Web Chain + + + ## Binance Smart Chain Ocean is deployed to [Binance Smart Chain (BSC)](https://academy.binance.com/en/articles/how-to-get-started-with-binance-smart-chain-bsc), another production network. BSC's native token is BNB - the Binance token. From 5292f0de8f4a21f201a7a6d41100ffeb4202ae5e Mon Sep 17 00:00:00 2001 From: md00ux <54084524+md00ux@users.noreply.github.com> Date: Fri, 8 Oct 2021 12:24:59 +0300 Subject: [PATCH 18/37] Change moonriver RPC (#792) * Update networks.md * retrigger build Co-authored-by: Alex Coseru --- content/concepts/networks.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/concepts/networks.md b/content/concepts/networks.md index b51ed856..fba1e892 100644 --- a/content/concepts/networks.md +++ b/content/concepts/networks.md @@ -78,7 +78,7 @@ If you don't find Moonriver as a predefined network in your wallet, you can conn | What | Value | | ------------------ | ----------------------------------- | | Network Name | `Moonriver` | -| RPC | `https://moonriver.api.onfinality.io/public` | +| RPC | `https://rpc.moonriver.moonbeam.network`| | Chain Id | `1285` | | Currency Symbol | `MOVR` | | Block Explorer URL | `https://blockscout.moonriver.moonbeam.network` | From 56bc93f91bc9faa9a8d84ef0a4af544c4267e392 Mon Sep 17 00:00:00 2001 From: Akshay Date: Fri, 8 Oct 2021 16:55:33 +0200 Subject: [PATCH 19/37] Issue-#787: Add Celo network support --- content/concepts/networks.md | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/content/concepts/networks.md b/content/concepts/networks.md index fba1e892..c007709e 100644 --- a/content/concepts/networks.md +++ b/content/concepts/networks.md @@ -252,6 +252,30 @@ If you don't find Mumbai as a predefined network in your wallet, you can connect | Provider | `https://provider.mumbai.oceanprotocol.com` | | Subgraph | `https://subgraph.mumbai.oceanprotocol.com` | +## Celo Alfajores + +Alfajores is a Celo test network for developers building on the Celo platform. + +Celo docs: https://docs.celo.org/. + +Wallet setup: https://celo.org/developers/wallet + +**Tokens** + +- Alfajores CELO: + - Native token to pay transaction fees + - [Faucet](https://celo.org/developers/faucet). +- Alfajores OCEAN: + - Address: [0xd8992Ed72C445c35Cb4A2be468568Ed1079357c8](https://alfajores-blockscout.celo-testnet.org/address/0xd8992Ed72C445c35Cb4A2be468568Ed1079357c8/) + + +**Additional Components** + +| What | URL | +| ------------ | ------------------------------------------------------------------- | +| Explorer | https://alfajores-blockscout.celo-testnet.org/ | + + ## Local / Ganache The most straightforward way for local-only development is to use [Barge](https://www.github.com/oceanprotocol/barge), which runs [Ganache](https://www.trufflesuite.com/ganache), Aquarius, and Provider. It is used extensively by the Ocean core devs (with Ganache or Rinkeby) and for automated integration testing. From 248cd181dc8a62530c999a33f51e99f1a6265393 Mon Sep 17 00:00:00 2001 From: Akshay Date: Tue, 26 Oct 2021 11:37:56 +0200 Subject: [PATCH 20/37] Issue-#803: Fix spelling mistakes --- content/tutorials/marketplace-publish-data-asset.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/tutorials/marketplace-publish-data-asset.md b/content/tutorials/marketplace-publish-data-asset.md index 7e9a1ada..ee6edf8f 100644 --- a/content/tutorials/marketplace-publish-data-asset.md +++ b/content/tutorials/marketplace-publish-data-asset.md @@ -43,7 +43,7 @@ Once the data asset is published, the user(s) can choose the pricing option as p There are 2 options for settings the price of an asset on Ocean Marketplace. 1. Fixed pricing -2. Dynamic pricing (using Banalcer pools) +2. Dynamic pricing (using Balancer pools) #### Create fixed pricing for a data set From 0f3535e76e97cdd7f672e988760188e4d6ef585b Mon Sep 17 00:00:00 2001 From: Akshay Date: Tue, 9 Nov 2021 09:56:59 +0100 Subject: [PATCH 21/37] Issue-#805: Fix spelling mistake (#809) --- content/concepts/did-ddo.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/concepts/did-ddo.md b/content/concepts/did-ddo.md index 5ceccff8..ead82a63 100644 --- a/content/concepts/did-ddo.md +++ b/content/concepts/did-ddo.md @@ -78,7 +78,7 @@ Each service has an `attributes` section holding the information related to the A part of the `attributes.main` sub-section, other optional sub-sections like `attributes.extra` can be added. These depend on the service type. -Each service has a `timeout` (in seconds) section describing how long the sevice can be used after consumption is initiated. A timeout of 0 represents no time limit. +Each service has a `timeout` (in seconds) section describing how long the service can be used after consumption is initiated. A timeout of 0 represents no time limit. The `cost` attribute is obsolete, as of Ocean V3. As of V3, to consume an asset, one sends exactly 1.0 datatokens of the asset, so a `cost` is not needed. From a42f4a69bd97419614943a181772bb3c9874c30b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 9 Nov 2021 08:57:15 +0000 Subject: [PATCH 22/37] Bump slugify from 1.6.0 to 1.6.2 (#810) Bumps [slugify](https://github.com/simov/slugify) from 1.6.0 to 1.6.2. - [Release notes](https://github.com/simov/slugify/releases) - [Commits](https://github.com/simov/slugify/compare/v1.6.0...v1.6.2) --- updated-dependencies: - dependency-name: slugify dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- package.json | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/package-lock.json b/package-lock.json index 355c7ca6..9b04c5fc 100644 --- a/package-lock.json +++ b/package-lock.json @@ -23320,9 +23320,9 @@ } }, "slugify": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/slugify/-/slugify-1.6.0.tgz", - "integrity": "sha512-FkMq+MQc5hzYgM86nLuHI98Acwi3p4wX+a5BO9Hhw4JdK4L7WueIiZ4tXEobImPqBz2sVcV0+Mu3GRB30IGang==" + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/slugify/-/slugify-1.6.2.tgz", + "integrity": "sha512-XMtI8qD84LwCpthLMBHlIhcrj10cgA+U/Ot8G6FD6uFuWZtMfKK75JO7l81nzpFJsPlsW6LT+VKqWQJW3+6New==" }, "smoothscroll-polyfill": { "version": "0.4.4", diff --git a/package.json b/package.json index fe2a7e5b..35c9b7cc 100644 --- a/package.json +++ b/package.json @@ -63,7 +63,7 @@ "remark-github-plugin": "^1.4.0", "remark-react": "^8.0.0", "shortid": "^2.2.16", - "slugify": "^1.6.0", + "slugify": "^1.6.2", "smoothscroll-polyfill": "^0.4.4", "swagger-client": "^3.16.1" }, From 342a0628ab9ec48f97f49a9e6dc779ff66f21c37 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 9 Nov 2021 08:57:31 +0000 Subject: [PATCH 23/37] Bump axios from 0.22.0 to 0.24.0 (#806) Bumps [axios](https://github.com/axios/axios) from 0.22.0 to 0.24.0. - [Release notes](https://github.com/axios/axios/releases) - [Changelog](https://github.com/axios/axios/blob/master/CHANGELOG.md) - [Commits](https://github.com/axios/axios/compare/v0.22.0...v0.24.0) --- updated-dependencies: - dependency-name: axios dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 12 ++++++------ package.json | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/package-lock.json b/package-lock.json index 9b04c5fc..69b1db49 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5913,17 +5913,17 @@ "integrity": "sha512-1uIESzroqpaTzt9uX48HO+6gfnKu3RwvWdCcWSrX4csMInJfCo1yvKPNXCwXFRpJqRW25tiASb6No0YH57PXqg==" }, "axios": { - "version": "0.22.0", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.22.0.tgz", - "integrity": "sha512-Z0U3uhqQeg1oNcihswf4ZD57O3NrR1+ZXhxaROaWpDmsDTx7T2HNBV2ulBtie2hwJptu8UvgnJoK+BIqdzh/1w==", + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.24.0.tgz", + "integrity": "sha512-Q6cWsys88HoPgAaFAVUb0WpPk0O8iTeisR9IMqy9G8AbO4NlpVknrnQS03zzF9PGAWgO3cgletO3VjV/P7VztA==", "requires": { "follow-redirects": "^1.14.4" }, "dependencies": { "follow-redirects": { - "version": "1.14.4", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.4.tgz", - "integrity": "sha512-zwGkiSXC1MUJG/qmeIFH2HBJx9u0V46QGUe3YR1fXG8bXQxq7fLj0RjLZQ5nubr9qNJUZrH+xUcwXEoXNpfS+g==" + "version": "1.14.5", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.5.tgz", + "integrity": "sha512-wtphSXy7d4/OR+MvIFbCVBDzZ5520qV8XfPklSN5QtxuMUJZ+b0Wnst1e1lCDocfzuCkHqj8k0FpZqO+UIaKNA==" } } }, diff --git a/package.json b/package.json index 35c9b7cc..3b51d762 100644 --- a/package.json +++ b/package.json @@ -20,7 +20,7 @@ "@material-ui/icons": "^4.11.2", "@material-ui/lab": "^4.0.0-alpha.60", "@oceanprotocol/art": "^3.2.0", - "axios": "^0.22.0", + "axios": "^0.24.0", "classnames": "^2.3.1", "gatsby": "^2.32.13", "gatsby-image": "^3.11.0", From 295d94760650f7d050424521d29bbc3bdb4a4fb2 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 9 Nov 2021 08:57:48 +0000 Subject: [PATCH 24/37] Bump markdownlint-cli from 0.28.1 to 0.29.0 (#796) Bumps [markdownlint-cli](https://github.com/igorshubovych/markdownlint-cli) from 0.28.1 to 0.29.0. - [Release notes](https://github.com/igorshubovych/markdownlint-cli/releases) - [Commits](https://github.com/igorshubovych/markdownlint-cli/compare/v0.28.1...v0.29.0) --- updated-dependencies: - dependency-name: markdownlint-cli dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 52 +++++++++++++++++++++++------------------------ package.json | 2 +- 2 files changed, 27 insertions(+), 27 deletions(-) diff --git a/package-lock.json b/package-lock.json index 69b1db49..00b7d29a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -17230,9 +17230,9 @@ "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=" }, "linkify-it": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-3.0.2.tgz", - "integrity": "sha512-gDBO4aHNZS6coiZCKVhSNh43F9ioIL4JwRjLZPkoLIY4yZFwg264Y5lu2x6rb1Js42Gh6Yqm2f6L2AJcnkzinQ==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-3.0.3.tgz", + "integrity": "sha512-ynTsyrFSdE5oZ/O9GEf00kPngmOfVwazR5GKDq6EYfhlpFug3J2zybX56a2PRRpc9P+FuSoGNAwjlbDs9jJBPQ==", "dev": true, "requires": { "uc.micro": "^1.0.1" @@ -17641,9 +17641,9 @@ "integrity": "sha512-8z4efJYk43E0upd0NbVXwgSTQs6cT3T06etieCMEg7dRbzCbxUCK/GHlX8mhHRDcp+OLlHkPKsvqQTCvsRl2cg==" }, "markdown-it": { - "version": "12.0.4", - "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-12.0.4.tgz", - "integrity": "sha512-34RwOXZT8kyuOJy25oJNJoulO8L0bTHYWXcdZBYZqFnjIy3NgjeoM3FmPXIOFQ26/lSHYMr8oc62B6adxXcb3Q==", + "version": "12.2.0", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-12.2.0.tgz", + "integrity": "sha512-Wjws+uCrVQRqOoJvze4HCqkKl1AsSh95iFAeQDwnyfxM09divCBSXlDR1uTvyUP3Grzpn4Ru8GeCxYPM8vkCQg==", "dev": true, "requires": { "argparse": "^2.0.1", @@ -17676,31 +17676,31 @@ } }, "markdownlint": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/markdownlint/-/markdownlint-0.23.1.tgz", - "integrity": "sha512-iOEwhDfNmq2IJlaA8mzEkHYUi/Hwoa6Ss+HO5jkwUR6wQ4quFr0WzSx+Z9rsWZKUaPbyirIdL1zGmJRkWawr4Q==", + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/markdownlint/-/markdownlint-0.24.0.tgz", + "integrity": "sha512-OJIGsGFV/rC9irI5E1FMy6v9hdACSwaa+EN3224Y5KG8zj2EYzdHOw0pOJovIYmjNfEZ9BtxUY4P7uYHTSNnbQ==", "dev": true, "requires": { - "markdown-it": "12.0.4" + "markdown-it": "12.2.0" } }, "markdownlint-cli": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/markdownlint-cli/-/markdownlint-cli-0.28.1.tgz", - "integrity": "sha512-RBKtRRBzcuAF/H5wMSzb4zvEtbUkyYNEeaDtlQkyH9SoHWPL01emJ2Wrx6NEOa1ZDGwB+seBGvE157Qzc/t/vA==", + "version": "0.29.0", + "resolved": "https://registry.npmjs.org/markdownlint-cli/-/markdownlint-cli-0.29.0.tgz", + "integrity": "sha512-SEXRUT1ri9sXV8xQK88vjGAgmz2X9rxEG2tXdDZMljzW8e++LNTO9zzBBStx3JQWrTDoGTPHNrcurbuiyF97gw==", "dev": true, "requires": { - "commander": "~8.0.0", + "commander": "~8.2.0", "deep-extend": "~0.6.0", "get-stdin": "~8.0.0", - "glob": "~7.1.7", + "glob": "~7.2.0", "ignore": "~5.1.8", "js-yaml": "^4.1.0", "jsonc-parser": "~3.0.0", "lodash.differencewith": "~4.5.0", "lodash.flatten": "~4.4.0", - "markdownlint": "~0.23.1", - "markdownlint-rule-helpers": "~0.14.0", + "markdownlint": "~0.24.0", + "markdownlint-rule-helpers": "~0.15.0", "minimatch": "~3.0.4", "minimist": "~1.2.5", "run-con": "~1.2.10" @@ -17713,9 +17713,9 @@ "dev": true }, "commander": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-8.0.0.tgz", - "integrity": "sha512-Xvf85aAtu6v22+E5hfVoLHqyul/jyxh91zvqk/ioJTQuJR7Z78n7H558vMPKanPSRgIEeZemT92I2g9Y8LPbSQ==", + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.2.0.tgz", + "integrity": "sha512-LLKxDvHeL91/8MIyTAD5BFMNtoIwztGPMiM/7Bl8rIPmHCZXRxmSWr91h57dpOpnQ6jIUqEWdXE/uBYMfiVZDA==", "dev": true }, "get-stdin": { @@ -17725,9 +17725,9 @@ "dev": true }, "glob": { - "version": "7.1.7", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", - "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", "dev": true, "requires": { "fs.realpath": "^1.0.0", @@ -17756,9 +17756,9 @@ } }, "markdownlint-rule-helpers": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/markdownlint-rule-helpers/-/markdownlint-rule-helpers-0.14.0.tgz", - "integrity": "sha512-vRTPqSU4JK8vVXmjICHSBhwXUvbfh/VJo+j7hvxqe15tLJyomv3FLgFdFgb8kpj0Fe8SsJa/TZUAXv7/sN+N7A==", + "version": "0.15.0", + "resolved": "https://registry.npmjs.org/markdownlint-rule-helpers/-/markdownlint-rule-helpers-0.15.0.tgz", + "integrity": "sha512-A+9mswc3m/kkqpJCqntmte/1VKhDJ+tjZsERLz5L4h/Qr7ht2/BkGkgY5E7/wsxIhcpl+ctIfz+oS3PQrMOB2w==", "dev": true }, "md5-file": { diff --git a/package.json b/package.json index 3b51d762..4af71466 100644 --- a/package.json +++ b/package.json @@ -76,7 +76,7 @@ "eslint-plugin-prettier": "^4.0.0", "git-format-staged": "^2.1.2", "husky": "^7.0.2", - "markdownlint-cli": "^0.28.1", + "markdownlint-cli": "^0.29.0", "node-sass": "^5.0.0", "npm-run-all": "^4.1.5", "prettier": "^2.4.1" From 8987198894c9a77cb72cf9598e5f0f9edf1206fd Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 9 Nov 2021 08:58:24 +0000 Subject: [PATCH 25/37] Bump swagger-client from 3.16.1 to 3.17.0 (#801) Bumps [swagger-client](https://github.com/swagger-api/swagger-js) from 3.16.1 to 3.17.0. - [Release notes](https://github.com/swagger-api/swagger-js/releases) - [Changelog](https://github.com/swagger-api/swagger-js/blob/master/.releaserc) - [Commits](https://github.com/swagger-api/swagger-js/compare/v3.16.1...v3.17.0) --- updated-dependencies: - dependency-name: swagger-client dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 40 ++++++++++++---------------------------- package.json | 2 +- 2 files changed, 13 insertions(+), 29 deletions(-) diff --git a/package-lock.json b/package-lock.json index 00b7d29a..8803a669 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11571,14 +11571,14 @@ } }, "form-data-encoder": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-1.5.3.tgz", - "integrity": "sha512-TBXL4jWdTERP1oNLXCXEJYgBfA5dBbhGVvS6E9bvAl48gu4L1q+JQYnPfixEyemGewRUeCRRXLUOEdtRfE2FKQ==" + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-1.6.0.tgz", + "integrity": "sha512-P97AVaOB8hZaniiKK3f46zxQcchQXI8EgBnX+2+719gLv5ZbDSf3J1XtIuAQ8xbGLU4vZYhy7xwhFtK8U5u9Nw==" }, "formdata-node": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/formdata-node/-/formdata-node-4.2.1.tgz", - "integrity": "sha512-mYFfryf+E+r/zaYFWuouQEBbtjyJQql4hTDEVvUt9RexwCEzjj23pkVxAcwQDuFMftpf3MQhcbqp6FysWwN/tQ==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/formdata-node/-/formdata-node-4.3.0.tgz", + "integrity": "sha512-TwqhWUZd2jB5l0kUhhcy1XYNsXq46NH6k60zmiu7xsxMztul+cCMuPSAQrSDV62zznhBKJdA9O+zeWj5i5Pbfg==", "requires": { "node-domexception": "1.0.0", "web-streams-polyfill": "4.0.0-beta.1" @@ -21211,11 +21211,6 @@ "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=" }, - "querystring-browser": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/querystring-browser/-/querystring-browser-1.0.4.tgz", - "integrity": "sha1-8uNYgYQKgZvHsb9Zf68JeeZiLcY=" - }, "querystring-es3": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", @@ -24272,13 +24267,12 @@ } }, "swagger-client": { - "version": "3.16.1", - "resolved": "https://registry.npmjs.org/swagger-client/-/swagger-client-3.16.1.tgz", - "integrity": "sha512-BcNRQzXHRGuXfhN0f80ptlr+bSaPvXwo8+gWbpmTnbKdAjcWOKAWwUx7rgGHjTKZh0qROr/GX9xOZIY8LrBuTg==", + "version": "3.17.0", + "resolved": "https://registry.npmjs.org/swagger-client/-/swagger-client-3.17.0.tgz", + "integrity": "sha512-d8DOEME49wTXm+uT+lBAjJ5D6IDjEHdbkqa7MbcslR2c+oHIhi13ObwleVWGfr89MPkWgBl6RBq9VUHmrBJRbg==", "requires": { "@babel/runtime-corejs3": "^7.11.2", "btoa": "^1.2.1", - "buffer": "^6.0.3", "cookie": "~0.4.1", "cross-fetch": "^3.1.4", "deep-extend": "~0.6.0", @@ -24288,7 +24282,6 @@ "js-yaml": "^4.1.0", "lodash": "^4.17.21", "qs": "^6.9.4", - "querystring-browser": "^1.0.4", "traverse": "~0.6.6", "url": "~0.11.0" }, @@ -24307,24 +24300,15 @@ "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" }, - "buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", - "requires": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" - } - }, "cookie": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.1.tgz", "integrity": "sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA==" }, "core-js-pure": { - "version": "3.17.3", - "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.17.3.tgz", - "integrity": "sha512-YusrqwiOTTn8058JDa0cv9unbXdIiIgcgI9gXso0ey4WgkFLd3lYlV9rp9n7nDCsYxXsMDTjA4m1h3T348mdlQ==" + "version": "3.18.3", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.18.3.tgz", + "integrity": "sha512-qfskyO/KjtbYn09bn1IPkuhHl5PlJ6IzJ9s9sraJ1EqcuGyLGKzhSM1cY0zgyL9hx42eulQLZ6WaeK5ycJCkqw==" }, "cross-fetch": { "version": "3.1.4", diff --git a/package.json b/package.json index 4af71466..730486ac 100644 --- a/package.json +++ b/package.json @@ -65,7 +65,7 @@ "shortid": "^2.2.16", "slugify": "^1.6.2", "smoothscroll-polyfill": "^0.4.4", - "swagger-client": "^3.16.1" + "swagger-client": "^3.17.0" }, "devDependencies": { "@svgr/webpack": "^5.5.0", From 94df61ccef571126004333a32fed02983feff4b7 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 9 Nov 2021 08:58:57 +0000 Subject: [PATCH 26/37] Bump rehype-react from 7.0.2 to 7.0.3 (#794) Bumps [rehype-react](https://github.com/rehypejs/rehype-react) from 7.0.2 to 7.0.3. - [Release notes](https://github.com/rehypejs/rehype-react/releases) - [Commits](https://github.com/rehypejs/rehype-react/compare/7.0.2...7.0.3) --- updated-dependencies: - dependency-name: rehype-react dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 12 ++++++------ package.json | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/package-lock.json b/package-lock.json index 8803a669..85f952fa 100644 --- a/package-lock.json +++ b/package-lock.json @@ -21923,9 +21923,9 @@ } }, "rehype-react": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/rehype-react/-/rehype-react-7.0.2.tgz", - "integrity": "sha512-jVndWMaGFrBOI8Z5B9B4sAJZFRaSt9IXrSC3m1QfJrxznud3834HxCgO0TmHi/8oFp0vgHw7aTZsYQ73+VI0kQ==", + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/rehype-react/-/rehype-react-7.0.3.tgz", + "integrity": "sha512-nrn2fAYAPv/XD3mFe9Z2cfra1UY0a9TutNYdb5dAHsfz4HAzSVxf1LbyGins/1UtvKBzvNS/0FQJknjp/d+iEg==", "requires": { "@mapbox/hast-util-table-cell-style": "^0.2.0", "@types/hast": "^2.0.0", @@ -22025,9 +22025,9 @@ } }, "vfile": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/vfile/-/vfile-5.1.0.tgz", - "integrity": "sha512-4o7/DJjEaFPYSh0ckv5kcYkJTHQgCKdL8ozMM1jLAxO9ox95IzveDPXCZp08HamdWq8JXTkClDvfAKaeLQeKtg==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-5.2.0.tgz", + "integrity": "sha512-ftCpb6pU8Jrzcqku8zE6N3Gi4/RkDhRwEXSWudzZzA2eEOn/cBpsfk9aulCUR+j1raRSAykYQap9u6j6rhUaCA==", "requires": { "@types/unist": "^2.0.0", "is-buffer": "^2.0.0", diff --git a/package.json b/package.json index 730486ac..f5935794 100644 --- a/package.json +++ b/package.json @@ -58,7 +58,7 @@ "react-helmet": "^6.1.0", "react-json-view": "^1.21.3", "react-scrollspy": "^3.4.3", - "rehype-react": "^7.0.2", + "rehype-react": "^7.0.3", "remark": "^13.0.0", "remark-github-plugin": "^1.4.0", "remark-react": "^8.0.0", From ec4167c67fe3443cf190feb37e69ff11a5d22502 Mon Sep 17 00:00:00 2001 From: Akshay Date: Tue, 9 Nov 2021 10:00:09 +0100 Subject: [PATCH 27/37] Issue 763 remove library (#774) * Issue-#763: Add search icon * Issue-#763: Remove material-ui icon library * Issue-#763: Remove @material-ui/lab library * Issue-#763: Add custom search box * Issue-#763: Remove Mui list * Issue-#763: Remove Mui usage from SearchClient * Issue-#763: Remove Mui components from SearchResultElement * Issue-#763: Remove material-ui dependency from package.json * Issue-#763: Remove double scroll bar * Issue-#763: Refactor css * Issue-#763: Rename file * Issue-#763: Refactor searchButton style in HeaderHome * Issue-#763: Use simplified search logo * Issue-#763: Refactor search result element * Issue-#763: Refactor box style * Issue-#763: Refactor SerachClient * Issue-#763: Refactor SerachClient and SearchComponent styles * Issue-#763: Refactor SearchComponent.module.scss * Trigger rebuild --- package-lock.json | 236 ------------------ package.json | 3 - src/components/Header.jsx | 4 +- src/components/HeaderHome.jsx | 8 +- src/components/HeaderHome.module.scss | 4 + src/components/Search/SearchButton.jsx | 13 +- src/components/Search/SearchClient.jsx | 102 ++------ src/components/Search/SearchComponent.jsx | 15 +- .../Search/SearchComponent.module.scss | 69 ++++- src/components/Search/SearchResultElement.jsx | 51 +--- src/images/search.svg | 3 + src/styles/_variables.scss | 4 + src/styles/box.module.scss | 23 ++ 13 files changed, 151 insertions(+), 384 deletions(-) create mode 100644 src/images/search.svg create mode 100644 src/styles/box.module.scss diff --git a/package-lock.json b/package-lock.json index 85f952fa..12f6d57d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -3142,11 +3142,6 @@ "to-fast-properties": "^2.0.0" } }, - "@emotion/hash": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.8.0.tgz", - "integrity": "sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow==" - }, "@endemolshinegroup/cosmiconfig-typescript-loader": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/@endemolshinegroup/cosmiconfig-typescript-loader/-/cosmiconfig-typescript-loader-3.0.2.tgz", @@ -4137,108 +4132,6 @@ "unist-util-visit": "^1.3.0" } }, - "@material-ui/core": { - "version": "4.12.3", - "resolved": "https://registry.npmjs.org/@material-ui/core/-/core-4.12.3.tgz", - "integrity": "sha512-sdpgI/PL56QVsEJldwEe4FFaFTLUqN+rd7sSZiRCdx2E/C7z5yK0y/khAWVBH24tXwto7I1hCzNWfJGZIYJKnw==", - "requires": { - "@babel/runtime": "^7.4.4", - "@material-ui/styles": "^4.11.4", - "@material-ui/system": "^4.12.1", - "@material-ui/types": "5.1.0", - "@material-ui/utils": "^4.11.2", - "@types/react-transition-group": "^4.2.0", - "clsx": "^1.0.4", - "hoist-non-react-statics": "^3.3.2", - "popper.js": "1.16.1-lts", - "prop-types": "^15.7.2", - "react-is": "^16.8.0 || ^17.0.0", - "react-transition-group": "^4.4.0" - } - }, - "@material-ui/icons": { - "version": "4.11.2", - "resolved": "https://registry.npmjs.org/@material-ui/icons/-/icons-4.11.2.tgz", - "integrity": "sha512-fQNsKX2TxBmqIGJCSi3tGTO/gZ+eJgWmMJkgDiOfyNaunNaxcklJQFaFogYcFl0qFuaEz1qaXYXboa/bUXVSOQ==", - "requires": { - "@babel/runtime": "^7.4.4" - } - }, - "@material-ui/lab": { - "version": "4.0.0-alpha.60", - "resolved": "https://registry.npmjs.org/@material-ui/lab/-/lab-4.0.0-alpha.60.tgz", - "integrity": "sha512-fadlYsPJF+0fx2lRuyqAuJj7hAS1tLDdIEEdov5jlrpb5pp4b+mRDUqQTUxi4inRZHS1bEXpU8QWUhO6xX88aA==", - "requires": { - "@babel/runtime": "^7.4.4", - "@material-ui/utils": "^4.11.2", - "clsx": "^1.0.4", - "prop-types": "^15.7.2", - "react-is": "^16.8.0 || ^17.0.0" - } - }, - "@material-ui/styles": { - "version": "4.11.4", - "resolved": "https://registry.npmjs.org/@material-ui/styles/-/styles-4.11.4.tgz", - "integrity": "sha512-KNTIZcnj/zprG5LW0Sao7zw+yG3O35pviHzejMdcSGCdWbiO8qzRgOYL8JAxAsWBKOKYwVZxXtHWaB5T2Kvxew==", - "requires": { - "@babel/runtime": "^7.4.4", - "@emotion/hash": "^0.8.0", - "@material-ui/types": "5.1.0", - "@material-ui/utils": "^4.11.2", - "clsx": "^1.0.4", - "csstype": "^2.5.2", - "hoist-non-react-statics": "^3.3.2", - "jss": "^10.5.1", - "jss-plugin-camel-case": "^10.5.1", - "jss-plugin-default-unit": "^10.5.1", - "jss-plugin-global": "^10.5.1", - "jss-plugin-nested": "^10.5.1", - "jss-plugin-props-sort": "^10.5.1", - "jss-plugin-rule-value-function": "^10.5.1", - "jss-plugin-vendor-prefixer": "^10.5.1", - "prop-types": "^15.7.2" - }, - "dependencies": { - "csstype": { - "version": "2.6.17", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.17.tgz", - "integrity": "sha512-u1wmTI1jJGzCJzWndZo8mk4wnPTZd1eOIYTYvuEyOQGfmDl3TrabCCfKnOC86FZwW/9djqTl933UF/cS425i9A==" - } - } - }, - "@material-ui/system": { - "version": "4.12.1", - "resolved": "https://registry.npmjs.org/@material-ui/system/-/system-4.12.1.tgz", - "integrity": "sha512-lUdzs4q9kEXZGhbN7BptyiS1rLNHe6kG9o8Y307HCvF4sQxbCgpL2qi+gUk+yI8a2DNk48gISEQxoxpgph0xIw==", - "requires": { - "@babel/runtime": "^7.4.4", - "@material-ui/utils": "^4.11.2", - "csstype": "^2.5.2", - "prop-types": "^15.7.2" - }, - "dependencies": { - "csstype": { - "version": "2.6.17", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.17.tgz", - "integrity": "sha512-u1wmTI1jJGzCJzWndZo8mk4wnPTZd1eOIYTYvuEyOQGfmDl3TrabCCfKnOC86FZwW/9djqTl933UF/cS425i9A==" - } - } - }, - "@material-ui/types": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/@material-ui/types/-/types-5.1.0.tgz", - "integrity": "sha512-7cqRjrY50b8QzRSYyhSpx4WRw2YuO0KKIGQEVk5J8uoz2BanawykgZGoWEqKm7pVIbzFDN0SpPcVV4IhOFkl8A==" - }, - "@material-ui/utils": { - "version": "4.11.2", - "resolved": "https://registry.npmjs.org/@material-ui/utils/-/utils-4.11.2.tgz", - "integrity": "sha512-Uul8w38u+PICe2Fg2pDKCaIG7kOyhowZ9vjiC1FsVwPABTW8vPPKfF6OvxRq3IiBaI1faOJmgdvMG7rMJARBhA==", - "requires": { - "@babel/runtime": "^7.4.4", - "prop-types": "^15.7.2", - "react-is": "^16.8.0 || ^17.0.0" - } - }, "@mdx-js/util": { "version": "2.0.0-next.8", "resolved": "https://registry.npmjs.org/@mdx-js/util/-/util-2.0.0-next.8.tgz", @@ -4838,14 +4731,6 @@ "csstype": "^3.0.2" } }, - "@types/react-transition-group": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.2.tgz", - "integrity": "sha512-KibDWL6nshuOJ0fu8ll7QnV/LVTo3PzQ9aCPnRUYPfX7eZohHwLIdNHj7pftanREzHNP4/nJa8oeM73uSiavMQ==", - "requires": { - "@types/react": "*" - } - }, "@types/readable-stream": { "version": "2.3.9", "resolved": "https://registry.npmjs.org/@types/readable-stream/-/readable-stream-2.3.9.tgz", @@ -7571,11 +7456,6 @@ "mimic-response": "^1.0.0" } }, - "clsx": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/clsx/-/clsx-1.1.1.tgz", - "integrity": "sha512-6/bPho624p3S2pMyvP5kKBPXnI3ufHLObBFCfgx+LkeR5lg2XYy2hqZqUf45ypD8COn2bhgGJSUE+l5dhNBieA==" - }, "coa": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/coa/-/coa-2.0.2.tgz", @@ -8339,15 +8219,6 @@ } } }, - "css-vendor": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/css-vendor/-/css-vendor-2.0.8.tgz", - "integrity": "sha512-x9Aq0XTInxrkuFeHKbYC7zWY8ai7qJ04Kxd9MnvbC1uO5DagxoHQjm4JvG+vCdXOoFtCjbL2XSZfxmoYa9uQVQ==", - "requires": { - "@babel/runtime": "^7.8.3", - "is-in-browser": "^1.0.2" - } - }, "css-what": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.2.1.tgz", @@ -9089,15 +8960,6 @@ "utila": "~0.4" } }, - "dom-helpers": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz", - "integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==", - "requires": { - "@babel/runtime": "^7.8.7", - "csstype": "^3.0.2" - } - }, "dom-serializer": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", @@ -15840,11 +15702,6 @@ "integrity": "sha512-8yKEWNX4z2YsofXAMT7KvA1g8p+GxtB1ffV8XtpAEGuXNAbCV5wdNKH+qTpw8SM9fh4aMPDR+yQuKfgnreyZlg==", "dev": true }, - "hyphenate-style-name": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/hyphenate-style-name/-/hyphenate-style-name-1.0.4.tgz", - "integrity": "sha512-ygGZLjmXfPHj+ZWh6LwbC37l43MhfztxetbFCoYTM2VjkIUpeHgSNn7QIyVFj7YQ1Wl9Cbw5sholVJPzWvC2MQ==" - }, "iconv-lite": { "version": "0.4.24", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", @@ -16489,11 +16346,6 @@ "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz", "integrity": "sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==" }, - "is-in-browser": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/is-in-browser/-/is-in-browser-1.1.3.tgz", - "integrity": "sha1-Vv9NtoOgeMYILrldrX3GLh0E+DU=" - }, "is-installed-globally": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz", @@ -17063,84 +16915,6 @@ "verror": "1.10.0" } }, - "jss": { - "version": "10.7.1", - "resolved": "https://registry.npmjs.org/jss/-/jss-10.7.1.tgz", - "integrity": "sha512-5QN8JSVZR6cxpZNeGfzIjqPEP+ZJwJJfZbXmeABNdxiExyO+eJJDy6WDtqTf8SDKnbL5kZllEpAP71E/Lt7PXg==", - "requires": { - "@babel/runtime": "^7.3.1", - "csstype": "^3.0.2", - "is-in-browser": "^1.1.3", - "tiny-warning": "^1.0.2" - } - }, - "jss-plugin-camel-case": { - "version": "10.7.1", - "resolved": "https://registry.npmjs.org/jss-plugin-camel-case/-/jss-plugin-camel-case-10.7.1.tgz", - "integrity": "sha512-+ioIyWvmAfgDCWXsQcW1NMnLBvRinOVFkSYJUgewQ6TynOcSj5F1bSU23B7z0p1iqK0PPHIU62xY1iNJD33WGA==", - "requires": { - "@babel/runtime": "^7.3.1", - "hyphenate-style-name": "^1.0.3", - "jss": "10.7.1" - } - }, - "jss-plugin-default-unit": { - "version": "10.7.1", - "resolved": "https://registry.npmjs.org/jss-plugin-default-unit/-/jss-plugin-default-unit-10.7.1.tgz", - "integrity": "sha512-tW+dfYVNARBQb/ONzBwd8uyImigyzMiAEDai+AbH5rcHg5h3TtqhAkxx06iuZiT/dZUiFdSKlbe3q9jZGAPIwA==", - "requires": { - "@babel/runtime": "^7.3.1", - "jss": "10.7.1" - } - }, - "jss-plugin-global": { - "version": "10.7.1", - "resolved": "https://registry.npmjs.org/jss-plugin-global/-/jss-plugin-global-10.7.1.tgz", - "integrity": "sha512-FbxCnu44IkK/bw8X3CwZKmcAnJqjAb9LujlAc/aP0bMSdVa3/MugKQRyeQSu00uGL44feJJDoeXXiHOakBr/Zw==", - "requires": { - "@babel/runtime": "^7.3.1", - "jss": "10.7.1" - } - }, - "jss-plugin-nested": { - "version": "10.7.1", - "resolved": "https://registry.npmjs.org/jss-plugin-nested/-/jss-plugin-nested-10.7.1.tgz", - "integrity": "sha512-RNbICk7FlYKaJyv9tkMl7s6FFfeLA3ubNIFKvPqaWtADK0KUaPsPXVYBkAu4x1ItgsWx67xvReMrkcKA0jSXfA==", - "requires": { - "@babel/runtime": "^7.3.1", - "jss": "10.7.1", - "tiny-warning": "^1.0.2" - } - }, - "jss-plugin-props-sort": { - "version": "10.7.1", - "resolved": "https://registry.npmjs.org/jss-plugin-props-sort/-/jss-plugin-props-sort-10.7.1.tgz", - "integrity": "sha512-eyd5FhA+J0QrpqXxO7YNF/HMSXXl4pB0EmUdY4vSJI4QG22F59vQ6AHtP6fSwhmBdQ98Qd9gjfO+RMxcE39P1A==", - "requires": { - "@babel/runtime": "^7.3.1", - "jss": "10.7.1" - } - }, - "jss-plugin-rule-value-function": { - "version": "10.7.1", - "resolved": "https://registry.npmjs.org/jss-plugin-rule-value-function/-/jss-plugin-rule-value-function-10.7.1.tgz", - "integrity": "sha512-fGAAImlbaHD3fXAHI3ooX6aRESOl5iBt3LjpVjxs9II5u9tzam7pqFUmgTcrip9VpRqYHn8J3gA7kCtm8xKwHg==", - "requires": { - "@babel/runtime": "^7.3.1", - "jss": "10.7.1", - "tiny-warning": "^1.0.2" - } - }, - "jss-plugin-vendor-prefixer": { - "version": "10.7.1", - "resolved": "https://registry.npmjs.org/jss-plugin-vendor-prefixer/-/jss-plugin-vendor-prefixer-10.7.1.tgz", - "integrity": "sha512-1UHFmBn7hZNsHXTkLLOL8abRl8vi+D1EVzWD4WmLFj55vawHZfnH1oEz6TUf5Y61XHv0smdHabdXds6BgOXe3A==", - "requires": { - "@babel/runtime": "^7.3.1", - "css-vendor": "^2.0.8", - "jss": "10.7.1" - } - }, "jsx-ast-utils": { "version": "2.2.3", "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-2.2.3.tgz", @@ -20155,11 +19929,6 @@ "ts-pnp": "^1.1.6" } }, - "popper.js": { - "version": "1.16.1-lts", - "resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.16.1-lts.tgz", - "integrity": "sha512-Kjw8nKRl1m+VrSFCoVGPph93W/qrSO7ZkqPpTf7F4bk/sqcfWK019dWBUpE/fBOsOQY1dks/Bmcbfn1heM/IsA==" - }, "portfinder": { "version": "1.0.28", "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.28.tgz", @@ -24617,11 +24386,6 @@ "resolved": "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz", "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=" }, - "tiny-warning": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz", - "integrity": "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==" - }, "tinycolor2": { "version": "1.4.2", "resolved": "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.4.2.tgz", diff --git a/package.json b/package.json index f5935794..f9482986 100644 --- a/package.json +++ b/package.json @@ -16,9 +16,6 @@ "test": "npm run lint" }, "dependencies": { - "@material-ui/core": "^4.12.3", - "@material-ui/icons": "^4.11.2", - "@material-ui/lab": "^4.0.0-alpha.60", "@oceanprotocol/art": "^3.2.0", "axios": "^0.24.0", "classnames": "^2.3.1", diff --git a/src/components/Header.jsx b/src/components/Header.jsx index c1e86e2a..16d0bf66 100755 --- a/src/components/Header.jsx +++ b/src/components/Header.jsx @@ -48,7 +48,9 @@ const Header = () => ( {node.title} ))} - +
+ +

diff --git a/src/components/HeaderHome.jsx b/src/components/HeaderHome.jsx index d52f08e9..8f186867 100644 --- a/src/components/HeaderHome.jsx +++ b/src/components/HeaderHome.jsx @@ -26,11 +26,9 @@ const HeaderHome = () => (

{siteTitle}

-

- {siteDescription} -
- -
+ {siteDescription} +
+

diff --git a/src/components/HeaderHome.module.scss b/src/components/HeaderHome.module.scss index e5e12d37..44168b33 100644 --- a/src/components/HeaderHome.module.scss +++ b/src/components/HeaderHome.module.scss @@ -46,3 +46,7 @@ font-size: $font-size-large; } } + +.searchButtonContainer { + margin-top: $spacer * 0.5 ; +} diff --git a/src/components/Search/SearchButton.jsx b/src/components/Search/SearchButton.jsx index b7c41e6a..ba145c3a 100644 --- a/src/components/Search/SearchButton.jsx +++ b/src/components/Search/SearchButton.jsx @@ -1,13 +1,16 @@ import React from 'react' import { navigate } from 'gatsby' +import styles from './SearchComponent.module.scss' +import { ReactComponent as SearchIcon } from '../../images/search.svg' -import { IconButton } from '@material-ui/core' -import SearchIcon from '@material-ui/icons/Search' const SearchButton = () => { return ( - navigate('/search')}> - - +
+ navigate('/search')} + /> +
) } export default SearchButton diff --git a/src/components/Search/SearchClient.jsx b/src/components/Search/SearchClient.jsx index 4addc346..f6d330c7 100644 --- a/src/components/Search/SearchClient.jsx +++ b/src/components/Search/SearchClient.jsx @@ -1,33 +1,9 @@ import React, { useState, useEffect } from 'react' import * as JsSearch from 'js-search' import PropTypes from 'prop-types' -import { makeStyles } from '@material-ui/core/styles' -import List from '@material-ui/core/List' -import ListItem from '@material-ui/core/ListItem' -import TextField from '@material-ui/core/TextField' -import InputAdornment from '@material-ui/core/InputAdornment' -import SearchIcon from '@material-ui/icons/Search' import SearchResultElement from './SearchResultElement' - -const useStyles = makeStyles((theme) => ({ - parent: { - overflow: 'hidden', - position: 'relative', - width: '100%' - }, - child: { - background: 'green', - height: '100%', - width: '50%', - position: 'absolute', - right: 0, - top: 0 - }, - root: { - margin: 'auto', - width: '50%' - } -})) +import { ReactComponent as SearchIcon } from '../../images/search.svg' +import styles from './SearchComponent.module.scss' const SearchClient = ({ searchableData }) => { const [searchState, setSearchState] = useState({ @@ -43,19 +19,11 @@ const SearchClient = ({ searchableData }) => { touched: false }) - const classes = useStyles() - useEffect(() => { rebuildIndex(searchableData) }, []) const rebuildIndex = (searchableData) => { - // const { - // removeStopWords, - // selectedStrategy, - // selectedSanitizer, - // termFrequency - // } = searchState const dataToSearch = new JsSearch.Search('title') dataToSearch.addIndex('title') dataToSearch.addIndex('description') @@ -84,39 +52,24 @@ const SearchClient = ({ searchableData }) => { } return ( -
+
- - - - ) - }} - /> +
+ + +
-
- {searchState.touched ? ( -
- -
- ) : null} -
+ {searchState.touched ? ( + + ) : null}
) } @@ -127,18 +80,15 @@ SearchClient.propTypes = { const ResultList = ({ searchResults }) => { return ( -
-
Total results found: {searchResults.length}
- -
- - {searchResults.map((element) => ( - - - - ))} - -
+
+

Total results found: {searchResults.length}

+
    + {searchResults.map((element) => ( +
  • + +
  • + ))} +
) } diff --git a/src/components/Search/SearchComponent.jsx b/src/components/Search/SearchComponent.jsx index 696fbce3..fd4d7f5e 100644 --- a/src/components/Search/SearchComponent.jsx +++ b/src/components/Search/SearchComponent.jsx @@ -6,6 +6,7 @@ import SearchClient from './SearchClient' import Layout from '../../components/Layout' import HeaderSection from '../../components/HeaderSection' import PropTypes from 'prop-types' +import styles from './SearchComponent.module.scss' const SearchComponent = ({ location }) => { const data = useStaticQuery(graphql` @@ -64,18 +65,8 @@ const SearchComponent = ({ location }) => {
-
-
- -
+
+
diff --git a/src/components/Search/SearchComponent.module.scss b/src/components/Search/SearchComponent.module.scss index d627429d..3c4a0cc7 100644 --- a/src/components/Search/SearchComponent.module.scss +++ b/src/components/Search/SearchComponent.module.scss @@ -1,10 +1,65 @@ @import 'variables'; -.searchform input[type='text'] { - float: right; - padding: 6px; - border: none; - margin-top: 8px; - margin-right: 16px; - font-size: 17px; +.searchButtonWrapper { + display: 'flex'; + align-items: 'center'; +} + +.searchButton { + cursor: pointer; +} + +.searchPage { + min-height: $spacer * 50; + width: 50%; + margin: auto; +} + +.searchTextboxContainer { + display: flex; + border: $brand-border-width solid; + width: 100%; + margin-bottom: $spacer * 0.5; + border-radius: $border-radius; +} + +.searchTextInput { + width: 100%; + padding: $spacer * 0.1; + border: none; + outline: none; + font-size: medium; +} + +.searchBoxImg { + padding: 0.75rem; + min-width: $spacer * 1.25; + text-align: center; +} + +.resultListElement { + &:before { + content: ''; + } +} + +.resultBox { + composes: box from '../../styles/box.module.scss'; + + .section { + margin: 0; + font-size: $font-size-small; + color: $brand-grey-dark; + } + + .title { + font-size: $font-size-large; + margin: 0; + } + + .content { + font-size: $font-size-small; + margin: 0; + color: $brand-grey-dark; + } } diff --git a/src/components/Search/SearchResultElement.jsx b/src/components/Search/SearchResultElement.jsx index 466b2ae6..a9718f11 100644 --- a/src/components/Search/SearchResultElement.jsx +++ b/src/components/Search/SearchResultElement.jsx @@ -1,49 +1,22 @@ import React from 'react' import { Link } from 'gatsby' import PropTypes from 'prop-types' -import Card from '@material-ui/core/Card' -import CardContent from '@material-ui/core/CardContent' -import Typography from '@material-ui/core/Typography' -import { makeStyles } from '@material-ui/core/styles' - -const useStyles = makeStyles({ - root: { - minWidth: 275 - }, - bullet: { - display: 'inline-block', - margin: '0 2px', - transform: 'scale(0.8)' - }, - title: { - fontSize: 14 - }, - pos: { - marginBottom: 12 - } -}) +import styles from './SearchComponent.module.scss' const SearchResultElement = ({ element }) => { - const classes = useStyles() const { slug, title, section, description } = element return ( - - - - {section} - - - {title} - - - {description ? description.substring(0, 100) + '...' : null} - - - + +
+
+
{section}
+

{title}

+
+ {description && ( +
{description.substring(0, 100)}
+ )} +
+ ) } diff --git a/src/images/search.svg b/src/images/search.svg new file mode 100644 index 00000000..5daf1b33 --- /dev/null +++ b/src/images/search.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/styles/_variables.scss b/src/styles/_variables.scss index d77f70d0..385a08d5 100644 --- a/src/styles/_variables.scss +++ b/src/styles/_variables.scss @@ -65,3 +65,7 @@ $brand-border-width: 1px; $border-radius: 0.2rem; $narrowWidth: 35rem; + +$box-shadow-color: rgba(0, 0, 0, 0.2); +$border-color: #e2e2e2; +$background-content: #fff; \ No newline at end of file diff --git a/src/styles/box.module.scss b/src/styles/box.module.scss new file mode 100644 index 00000000..5a53046a --- /dev/null +++ b/src/styles/box.module.scss @@ -0,0 +1,23 @@ +@import 'variables'; + +.box { + display: block; + background: $background-content; + border-radius: $border-radius; + border: 1px solid $border-color; + box-shadow: 0 6px 17px 0 $box-shadow-color; + padding: $spacer * 0.5; + } + + @media (min-width: 40rem) { + .box { + padding: var($spacer); + } + } + + a.box:hover, + a.box:focus { + outline: 0; + transform: translate3d(0, -0.1rem, 0); + box-shadow: 0 10px 25px 0 $box-shadow-color; + } From 8352cafa7c2fe056c4e4d21f7ac22ad0a1f9480c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 9 Nov 2021 09:08:04 +0000 Subject: [PATCH 28/37] Bump path-parse from 1.0.6 to 1.0.7 (#811) Bumps [path-parse](https://github.com/jbgutierrez/path-parse) from 1.0.6 to 1.0.7. - [Release notes](https://github.com/jbgutierrez/path-parse/releases) - [Commits](https://github.com/jbgutierrez/path-parse/commits/v1.0.7) --- updated-dependencies: - dependency-name: path-parse dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 12f6d57d..a398d305 100644 --- a/package-lock.json +++ b/package-lock.json @@ -19787,9 +19787,9 @@ "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=" }, "path-parse": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", - "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==" + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" }, "path-to-regexp": { "version": "0.1.7", From 3969631d86e848e12c4e4357b3e734f8bcb31e76 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 9 Nov 2021 09:08:20 +0000 Subject: [PATCH 29/37] Bump tar from 6.1.0 to 6.1.11 (#812) Bumps [tar](https://github.com/npm/node-tar) from 6.1.0 to 6.1.11. - [Release notes](https://github.com/npm/node-tar/releases) - [Changelog](https://github.com/npm/node-tar/blob/main/CHANGELOG.md) - [Commits](https://github.com/npm/node-tar/compare/v6.1.0...v6.1.11) --- updated-dependencies: - dependency-name: tar dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index a398d305..df94b4ab 100644 --- a/package-lock.json +++ b/package-lock.json @@ -24176,9 +24176,9 @@ "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==" }, "tar": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.0.tgz", - "integrity": "sha512-DUCttfhsnLCjwoDoFcI+B2iJgYa93vBnDUATYEeRx6sntCTdN01VnqsIuTlALXla/LWooNg0yEGeB+Y8WdFxGA==", + "version": "6.1.11", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.11.tgz", + "integrity": "sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==", "dev": true, "requires": { "chownr": "^2.0.0", From 5328e0b1eb3baf691961a60d5c169867d799be67 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 9 Nov 2021 09:15:03 +0000 Subject: [PATCH 30/37] Bump object-path from 0.11.5 to 0.11.8 (#813) Bumps [object-path](https://github.com/mariocasciaro/object-path) from 0.11.5 to 0.11.8. - [Release notes](https://github.com/mariocasciaro/object-path/releases) - [Commits](https://github.com/mariocasciaro/object-path/commits/v0.11.8) --- updated-dependencies: - dependency-name: object-path dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index df94b4ab..ae61ac8b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -19189,9 +19189,9 @@ "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" }, "object-path": { - "version": "0.11.5", - "resolved": "https://registry.npmjs.org/object-path/-/object-path-0.11.5.tgz", - "integrity": "sha512-jgSbThcoR/s+XumvGMTMf81QVBmah+/Q7K7YduKeKVWL7N111unR2d6pZZarSk6kY/caeNxUDyxOvMWyzoU2eg==" + "version": "0.11.8", + "resolved": "https://registry.npmjs.org/object-path/-/object-path-0.11.8.tgz", + "integrity": "sha512-YJjNZrlXJFM42wTBn6zgOJVar9KFJvzx6sTWDte8sWZF//cnjl0BxHNpfZx+ZffXX63A9q0b1zsFiBX4g4X5KA==" }, "object-visit": { "version": "1.0.1", From ba402cee5fb44e1ab971de9e38397e8561833ddb Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 9 Nov 2021 09:24:47 +0000 Subject: [PATCH 31/37] Bump husky from 7.0.2 to 7.0.4 (#814) Bumps [husky](https://github.com/typicode/husky) from 7.0.2 to 7.0.4. - [Release notes](https://github.com/typicode/husky/releases) - [Commits](https://github.com/typicode/husky/compare/v7.0.2...v7.0.4) --- updated-dependencies: - dependency-name: husky dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 17 +++-------------- package.json | 2 +- 2 files changed, 4 insertions(+), 15 deletions(-) diff --git a/package-lock.json b/package-lock.json index ae61ac8b..da961d07 100644 --- a/package-lock.json +++ b/package-lock.json @@ -15697,9 +15697,9 @@ "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==" }, "husky": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/husky/-/husky-7.0.2.tgz", - "integrity": "sha512-8yKEWNX4z2YsofXAMT7KvA1g8p+GxtB1ffV8XtpAEGuXNAbCV5wdNKH+qTpw8SM9fh4aMPDR+yQuKfgnreyZlg==", + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/husky/-/husky-7.0.4.tgz", + "integrity": "sha512-vbaCKN2QLtP/vD4yvs6iz6hBEo6wkSzs8HpRah1Z6aGmF2KW5PdYuAd7uX5a+OyBZHBhd+TFLqgjUgytQr4RvQ==", "dev": true }, "iconv-lite": { @@ -21406,17 +21406,6 @@ } } }, - "react-transition-group": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.2.tgz", - "integrity": "sha512-/RNYfRAMlZwDSr6z4zNKV6xu53/e2BuaBbGhbyYIXTrmgu/bGHzmqOs7mJSJBHy9Ud+ApHx3QjrkKSp1pxvlFg==", - "requires": { - "@babel/runtime": "^7.5.5", - "dom-helpers": "^5.0.1", - "loose-envify": "^1.4.0", - "prop-types": "^15.6.2" - } - }, "read": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/read/-/read-1.0.7.tgz", diff --git a/package.json b/package.json index f9482986..7a670bc6 100644 --- a/package.json +++ b/package.json @@ -72,7 +72,7 @@ "eslint-config-prettier": "^8.3.0", "eslint-plugin-prettier": "^4.0.0", "git-format-staged": "^2.1.2", - "husky": "^7.0.2", + "husky": "^7.0.4", "markdownlint-cli": "^0.29.0", "node-sass": "^5.0.0", "npm-run-all": "^4.1.5", From 4eb5920456f61b242f40d75c431635bb20a64d2a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 9 Nov 2021 09:25:02 +0000 Subject: [PATCH 32/37] Bump url-parse from 1.5.1 to 1.5.3 (#815) Bumps [url-parse](https://github.com/unshiftio/url-parse) from 1.5.1 to 1.5.3. - [Release notes](https://github.com/unshiftio/url-parse/releases) - [Commits](https://github.com/unshiftio/url-parse/compare/1.5.1...1.5.3) --- updated-dependencies: - dependency-name: url-parse dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index da961d07..46015ea0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -25187,9 +25187,9 @@ } }, "url-parse": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.1.tgz", - "integrity": "sha512-HOfCOUJt7iSYzEx/UqgtwKRMC6EU91NFhsCHMv9oM03VJcVo2Qrp8T8kI9D7amFf1cu+/3CEhgb3rF9zL7k85Q==", + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.3.tgz", + "integrity": "sha512-IIORyIQD9rvj0A4CLWsHkBBJuNqWpFQe224b6j9t/ABmquIS0qDU2pY6kl6AuOrL5OkCXHMCFNe1jBcuAggjvQ==", "requires": { "querystringify": "^2.1.1", "requires-port": "^1.0.0" From c759b817dee86fd8d7377b6fc778086f65cfee89 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 9 Nov 2021 09:25:19 +0000 Subject: [PATCH 33/37] Bump color-string from 1.5.4 to 1.6.0 (#816) Bumps [color-string](https://github.com/Qix-/color-string) from 1.5.4 to 1.6.0. - [Release notes](https://github.com/Qix-/color-string/releases) - [Changelog](https://github.com/Qix-/color-string/blob/master/CHANGELOG.md) - [Commits](https://github.com/Qix-/color-string/compare/1.5.4...1.6.0) --- updated-dependencies: - dependency-name: color-string dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 46015ea0..bbfce216 100644 --- a/package-lock.json +++ b/package-lock.json @@ -7508,9 +7508,9 @@ "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" }, "color-string": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.5.4.tgz", - "integrity": "sha512-57yF5yt8Xa3czSEW1jfQDE79Idk0+AkN/4KWad6tbdxUmAs3MvjxlWSWD4deYytcRfoZ9nhKyFl1kj5tBvidbw==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.6.0.tgz", + "integrity": "sha512-c/hGS+kRWJutUBEngKKmk4iH3sD59MBkoxVapS/0wgpCz2u7XsNloxknyvBhzwEs1IbV36D9PwqLPJ2DTu3vMA==", "requires": { "color-name": "^1.0.0", "simple-swizzle": "^0.2.2" From 37125600a511c2b41893e8a16da920a0eb4fc9b6 Mon Sep 17 00:00:00 2001 From: Matthias Kretschmann Date: Tue, 9 Nov 2021 09:41:05 +0000 Subject: [PATCH 34/37] consolidate & rewrite NFT docs --- content/concepts/nft.md | 37 +++++++++++++++++++++++-------------- content/concepts/roles.md | 25 ------------------------- data/sidebars/concepts.yml | 4 +--- 3 files changed, 24 insertions(+), 42 deletions(-) delete mode 100644 content/concepts/roles.md diff --git a/content/concepts/nft.md b/content/concepts/nft.md index 56afa38a..0cea874a 100644 --- a/content/concepts/nft.md +++ b/content/concepts/nft.md @@ -1,40 +1,49 @@ --- -title: v4 NFT introduction -description: The page describes NFT, IP and sub-licensing using Ocean Protocol's contracts, and use case. +title: Data NFTs +description: Ocean Protocol uses ERC721 NFTs to represent the intellectual property (IP) of published datasets or algorithms, and to further sub-license access to it with user roles or ERC20 data tokens. --- -## NFTS - -A non-fungible token stored on the blockchain represents a unique asset. NFTs can represent images, videos, digital art, or any piece of information. NFTs can be traded and allow transfer of ownership and copyright. [EIP-721](https://eips.ethereum.org/EIPS/eip-721) defines an interface for handling NFTs on Ethereum blockchain. The creator of the NFT can deploy a new contract on Ethereum or any Blockchain supporting NFT related interface and also, transfer the ownership through the transaction(s). +A non-fungible token stored on the blockchain represents a unique asset. NFTs can represent images, videos, digital art, or any piece of information. NFTs can be traded and allow transfer of ownership and copyright. [EIP-721](https://eips.ethereum.org/EIPS/eip-721) defines an interface for handling NFTs on Ethereum blockchain. The creator of the NFT can deploy a new contract on Ethereum or any Blockchain supporting NFT related interface and also, transfer the ownership through transfer transactions. ## Terminology - **Base IP** means the artifact being copyrighted. Represented by the {ERC721 address, tokenId} from the publish transactions. - - **Base IP holder** means the holder of the Base IP. Represented as the the actor that did the initial "publish" action. - - **Sub-licensee** is the holder of the sub-license. Represented as the entity that controls address ERC721.\_owners[tokenId=x]. - - **To Publish**: Claim copyright or exclusive base license - - **To Sub-license**:Transfer one (of many) sub-licenses to new licensee: ERC20.transfer(to=licensee, value=1.0) -## Supporting NFT using Ocean Protocol +## Supporting NFTs using Ocean Protocol -Ocean Protocol defines [ERC721Factory](https://github.com/oceanprotocol/contracts/blob/v4main/contracts/ERC721Factory.sol) contract, allowing **Base IP holders** to create their ERC721 contract instances on any supported networks. The deployed contract stores Metadata, ownership, sub-license information, permissions. The creator of the contract can also create and mint ERC20 token instances for sub-licensing the **Base IP**. +Ocean Protocol defines the [ERC721Factory](https://github.com/oceanprotocol/contracts/blob/v4main/contracts/ERC721Factory.sol) contract, allowing **Base IP holders** to create their ERC721 contract instances on any supported networks. The deployed contract stores Metadata, ownership, sub-license information, permissions. The creator of the contract can also create and mint ERC20 token instances for sub-licensing the **Base IP**. -## Sub licensing the Base IP +## Sub-licensing the Base IP ERC721 tokens are non-fungible, thus cannot be used for automatic price discovery like ERC20 tokens. ERC721 and ERC20 combined together can be used for sub-licensing. Ocean Protocol's [ERC721Template](https://github.com/oceanprotocol/contracts/blob/v4main/contracts/templates/ERC721Template.sol) solves this problem by using ERC721 for tokenizing the **Base IP** and tokenizing sub-licenses by using ERC20. Thus, sub-licenses can be traded on any AMM as the underlying contract is ERC20 compliant. +## Roles + +[ERC721Template](https://github.com/oceanprotocol/contracts/blob/v4Hardhat/contracts/templates/ERC721Template.sol) contract defines following roles: + +### NFT Owner + +- NFT Owner is the publisher. I.e. Owner is a public address which transacted with `ERC721Factory` contract and deployed a new `ERC721` contract. +- NFT Owner can assign managers while deploying the contract. +- NFT Owner is also added to the Managers. +- NFT Owner can add/remove Managers. +- Clean all permissions + +### Manager + +- A public address with a `Magner` role can update the metadata +- Can deploy new ERC20 contract which is associtated with the `ERC721` contract. ## Use case 1 - + Alice is the creator of a painting and wants to make sure that the ownership of her artwork is uniquely determined. She performs the **Publish** action. She creates an ERC721 token which represents the ownership of the physical asset. Here, **Base IP** is Alice's artwork. **Base IP holder** is Alice. Now, Alice wants to transfer the ownership of her Artwork to Bob. So, Alice makes Bob's address as owner of the token in the discussion by sending a Blockchain transaction. ![Image 1](images/use-case-1.PNG) - ## Use case 2 Alice is the author of a book. Alice wants to hold the copyright of her work but, allows others to read her book. So, She creates 2 versions of her book namely: digital copy, physical copy. She assigns Bob as one of the holder of digital edition of the book. Here, **Base IP** is the book. **Base IP holder** is Alice and Bob is **Sub-licensee** for a digital edition of the book. Alice tokenizes her work by performing **Publish** action i.e _ERC721.safeMint(to=aliceWalletAddress, tokenid=1)_. Alice also creates sub-licenses of her book by creating two ERC20 tokens and transfers the digital copy token to Bob's wallet. diff --git a/content/concepts/roles.md b/content/concepts/roles.md deleted file mode 100644 index dfe547cb..00000000 --- a/content/concepts/roles.md +++ /dev/null @@ -1,25 +0,0 @@ ---- -title: v4 roles and permissions -description: The page describes the roles and permissions present in ERC721Template contract. ---- - -## Roles - -[ERC721Template](https://github.com/oceanprotocol/contracts/blob/v4Hardhat/contracts/templates/ERC721Template.sol) contract defines following roles: - -- NFT Owner -- Manager - -## NFT Owner - -- NFT Owner is the publisher. I.e. Owner is a public address which transacted with `ERC721Factory` contract and deployed a new `ERC721` contract. - -- NFT Owner can assign managers while deploying the contract. -- NFT Owner is also added to the Managers. -- NFT Owner can add/remove Managers. -- Clean all permissions - -## Manager - -- A public address with a `Magner` role can update the metadata -- Can deploy new ERC20 contract which is associtated with the `ERC721` contract. diff --git a/data/sidebars/concepts.yml b/data/sidebars/concepts.yml index 0edff29b..c90edef4 100644 --- a/data/sidebars/concepts.yml +++ b/data/sidebars/concepts.yml @@ -6,10 +6,8 @@ link: /concepts/quickstart/ - title: Architecture Overview link: /concepts/architecture/ - - title: NFTs + - title: Data NFTs link: /concepts/nft/ - - title: Roles - link: /concepts/roles/ - title: Supported Networks link: /concepts/networks/ - title: Deployments From 7ee29c8421b84e9dde5b75ff1f6423ab7865ad3c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 9 Nov 2021 09:41:50 +0000 Subject: [PATCH 35/37] Bump ws from 5.2.2 to 5.2.3 (#817) Bumps [ws](https://github.com/websockets/ws) from 5.2.2 to 5.2.3. - [Release notes](https://github.com/websockets/ws/releases) - [Commits](https://github.com/websockets/ws/compare/5.2.2...5.2.3) --- updated-dependencies: - dependency-name: ws dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index bbfce216..c97ae874 100644 --- a/package-lock.json +++ b/package-lock.json @@ -23976,9 +23976,9 @@ }, "dependencies": { "ws": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/ws/-/ws-5.2.2.tgz", - "integrity": "sha512-jaHFD6PFv6UgoIVda6qZllptQsMlDEJkTQcybzzXDYM1XO9Y8em691FGMPmM46WGyLU4z9KMgQN+qrux/nhlHA==", + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-5.2.3.tgz", + "integrity": "sha512-jZArVERrMsKUatIdnLzqvcfydI85dvd/Fp1u/VOpfdDWQ4c9qWXe+VIeAbQ5FrDwciAkr+lzofXLz3Kuf26AOA==", "requires": { "async-limiter": "~1.0.0" } @@ -26302,9 +26302,9 @@ } }, "ws": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz", - "integrity": "sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==", + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.2.tgz", + "integrity": "sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw==", "requires": { "async-limiter": "~1.0.0" } From 2edd9a6b061f537f2eb290aaf4269467eee0f4b6 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 9 Nov 2021 09:41:59 +0000 Subject: [PATCH 36/37] Bump dns-packet from 1.3.1 to 1.3.4 (#818) Bumps [dns-packet](https://github.com/mafintosh/dns-packet) from 1.3.1 to 1.3.4. - [Release notes](https://github.com/mafintosh/dns-packet/releases) - [Changelog](https://github.com/mafintosh/dns-packet/blob/master/CHANGELOG.md) - [Commits](https://github.com/mafintosh/dns-packet/compare/v1.3.1...v1.3.4) --- updated-dependencies: - dependency-name: dns-packet dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index c97ae874..cab806a6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8928,9 +8928,9 @@ "integrity": "sha1-s55/HabrCnW6nBcySzR1PEfgZU0=" }, "dns-packet": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.1.tgz", - "integrity": "sha512-0UxfQkMhYAUaZI+xrNZOz/as5KgDU0M/fQ9b6SpkyLbk3GEswDi6PADJVaYJradtRVsRIlF1zLyOodbcTCDzUg==", + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.4.tgz", + "integrity": "sha512-BQ6F4vycLXBvdrJZ6S3gZewt6rcrks9KBgM9vrhW+knGRqc8uEdT7fuCwloc7nny5xNoMJ17HGH0R/6fpo8ECA==", "requires": { "ip": "^1.1.0", "safe-buffer": "^5.0.1" From 8ca8ead4307a3ccbadd03fbd7cacb042c68c6a38 Mon Sep 17 00:00:00 2001 From: Matthias Kretschmann Date: Tue, 9 Nov 2021 09:47:13 +0000 Subject: [PATCH 37/37] update architecture image --- content/concepts/images/architecture.png | Bin 132456 -> 24047 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/content/concepts/images/architecture.png b/content/concepts/images/architecture.png index f479632ee22048899aa64d2f758baef49eef0f9f..d5a5d0850935778eb6de7adef13d335e3bb847d4 100644 GIT binary patch literal 24047 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
o_FW?X?eaW6+6;$LW>xsCKI$W0O zf@cg9TN~R-efi<8S+fXMqLBAKuh0GWgY{;4MSCGgD3effI947f6RCz;OglHOo7 zw+PqFUe0$D{Z6xEf05fNb`B4yDS-&Gogc%|*D62xU8@Mxp76Go6pLx;cJ}-8YK)n3 zn@(|SF&U-S&O6@8pb(8>ZlZ0oARm81tzrL(Yl`PG3;|BflEV;ggn1{%756oyGIETJ z@qgI1U4f{>&X%g9LqmJ_e1%FatgZ3s|L{vne)s2p#=Jzx$)>u^wteVo>ZLy~|0Jki zdwJ=KwB+JV9QmoCK6o2J(^CpiYz{5v`hBDC8Kg+z0 zTyC^iR#bpPKzvTa-i5o?7U^YO-cL3I-}Fzq-|FY`d@aAi6F(9s-+VF% zZKAk#R_PAk!xcDl%`h7|yI8(BB;U1=fBe|l+e1apf$>6f)Eo;NcLx`+R&jUs4#yLC zIY0bY_q|FyKp!hi9Ih^&F}z#>UPz&!v9_t8qpbD0)4y#s%$shlTi9swVc{ULk%jOI z8=~eXEdu&Hq669UZ_d1$cw#(NA<$VnTzYg~iu4E#4eeg25mp%Uf=aT={0K69?00HO zNe%5EVPhJR&LFzFg$Ef%jxhZczYTR&g;5ihL=|P&LI;t+)qiz$tXVK05;t!F0Rd43 zjBGaR&mZ6Z1qKG*-Q6VucN4F_V0;{c+TK-1^o_|k;qcg+qv*a?Ayw}EJ|EeSk$Cct z<&OOFe6LA;EJ5&1*PdiAo}0&4;2E?7Y0aEiEj3kg6`%TbXESWn0aBU15-rqNAg)p5ZY!IsQ%89z~S)>Rwh6Z2E*u zi^>t6p6#A;+TTpE!iGt-rYFItw!h&()kH^6BcAUatZ#T9ruBoH4{vbXvOdcD(zzyI z5{$cwebq%x7a!I3dwFtkaXk?-Ug|q=RP#EfM6a!ww(<|@Fj&V7=P(#s{~PMS+~oBp zG+rp$;9{^C7%`tKdVYOeL;rw>*zSL@=J9;M;hEp^>?sI<>OET)^6Biz(9wpDPR-O@ zuV`?g5P8ZlLPqL0FdwgZW)%_qQUy8U>r42$!0L8%!%CyK!3%#PnvV;opXw`b{g;(#DmH{3E zdYn(S73ctIszh;P2kdS#gB7TxV9)afbypq+Eg~?$-?Z<2i`E0bp+Q^#vye5KUE~Ie zHiKoP)B~arAU5tDaVjL8di;M)&h+}+9%&=ylyY*^rilqAiOl}`` zrgQCVa$b!)$4tW<4t^wcLus0woAFm0+=jo#wQ%YbnxF31mZr+*yI|H_MDr?k^C3y! zG2O_5L7oxu=i@`H?gqUyWhuqZw8FP*ND{E>`+iWtPR|jHB-VEElomVtpAurFrS(y7 zkD0%{pC5jZ=u$J)M#(yAF^lu8?)t|y0$s%8LJtdn0sJ(DE9eXFFZ$FU(9gkD>Sb@< zEh3gGs*={}sinHk#+A9b#@?@U22o=vI|Qj$goR|C=1R3r_44i+DX+T^mgAp+G7a;| zR;vfOL#ws!{pEcY{wZq;PKbrL6Dd3!bAxSN+t$2DjBG~A3r#5uk#M?O=E#41v2}rA zBH)N2KaoRgyNx(uYX6eQjee~sW8A$c8Y_%{A#vB&4~kR%r4)dbl<)HuM1w#k+U4qC zAtvd{y#8bi#YYVO0|47^Usu8}CHjGOA-?v}&jdpS4LE3MoL^ch*YFgxf?pu%*9{!v zKS(8?UN?LsVDQa&dmBI6MNJ2PhXxb4n3(lBljE*?#Qs;E&JgPNrhO71sC+_U1{@*s zYhq_)xU}f% z8@r4lIk}FrKibx`Z4N=8k-=7AsQ_ccnSM1**9%2$vnyeCSD+=+ZaAqEpRJa@l)HtC z{!^?#zSlW!5I5E-nnv#P)_hYmHhSDPmJh^hc`5R_wkKnWFW4R{S+}#<1`y5Vd8#Bl z*)ZBl<92_0HM|<`(_-!Se)BDKN_m&bBrf%D+hlom@e#n#&)`HCON&wrXyo!D}HvTx8Hm0FFt{4xm)Sf zvODj%5dP&A?bdjUy=2N`{%EvXM$sHWQ7Pj4+XnIg0aU1WkSL@!@6fJMTAp|B-m}>< zd`20o=|_ZNzUV*XVNI8kVi;AEsmKy;c5jE{hJ3I4vZK{i!;V`u8S3j9HTq~%z<(X+ zbl6uG&TamoxV`^8iO`HfvHhygTV}&mCuh@!@j9}S%E7T&?L^nR;r^53tL;(FlIah| zzgV}~>5R{J@tWfwsK*xj(Ae#iFU~G%qHeQ+KKpuOp+}glqLsgCnw*c-Q;LoF;0Q2M zA++^W5|e}AsjJnJ$4GsdzmOmFo(~wk;bLns)>Ve2D%iZ1jIlhjMn6%L!-b2K#!ZBYbd!XX; zTS-gKGDQQdRe6PLvK?m|4IQz}A20zeG>xIQn}>-D#9N`W>dw8zZHG-64Fv@e+_muL zRkS{LthGslXJ(}64vtKUpfU_4`B}d|0HJ~vj_lL2u}yN*+h5|){`s zKh=kqVYcm#s(3{0jJ`u!d7B>YL*b-a0!Y~HUh)%izJYD?x``T;`J#$}x+0qvl~Gwz z06m?7sy@ejwJLvc7#q*ZsTZ6k0ocB`s$`#DX#2hx~`6h^1`CLKb3`sG}QziVeA>MMOisG5e&pL zLwM6YE>m@>Oi5K`aks4$ z1`z*gHB`5K&C);z4i^qWD+U=|I0o^A)MaJUaq8^{+HAS*mZ!+K!#AYym3l{$EGE-K zw&~Q=5W&xpXbOsn0W=d;k9AjfVwmQs{&i6NIp{bX$$HLWdS~`_T)#Ffr-$xhrlMeS zTl+TsXsd~={NS*j;2u?#{C%3PQ`fA^{w^tji(J);!^3ENA}?beUNkbV4;|J%RFJYr zak9I{()S3$bLllX0*8^&{r>r2x)-mKka690=&zb8S1X1&V!YVONQ{UBh4sU{$0`-IpKvog!9kF(DH^Ih?z zYQ@{q<8;iMT1Z!MeF?G&Be^S!`=a?WUM;$QuC2v)au+|$dakXj!;?pE3{Int>frS= z)v;M5L#Nj-KGKIK;pmHV)_8rrZ_kn>`{==i%}eWnUPM$;`+b~S3XUhkjSZuWVxr}V zBDmD}cO0dqAvt9baJ2BAn5^Qtym>VE)ZE;C^YfxHWuQK#WWM9Olo%VPr_y)uT|+`e zmPpCCY*i9%KEmj_ds8{3yK}83NBSiJ7(w}@FA6GAqT*Ih_q0=s1XEHnj2N%Z3kjGK zDi8c*GP9*29YqbS2l_C&!WMUrlrzgu?=!QeC>1$5^9w|a(Hn))*2Jnx%_1X{*SF`9 z&0nI)vu!OJ5a6C(M^R~o?Z7k_+pi{Nv|f7=7ey~8hp5s}n@VAz zkZOs#dC7Kdbp9*tG6&_%%VBL~`t$(DGL~t#_6C)iPYq#b$F_#}2&XqK$D{rEa-t{n ztIzV{&G})f+PHK^g&Q_3Qfg5acafro&SL{IhrLxdhAzGJty5gnH{8TQF&_L55~qle z({%|5mdTHM1e)MS7Xd(z@q({)x_A4!nbKb^5!v+y>~IZHL??|wvYbw1!;$of`G0k% z$HTKemmM*mKl$4+L{~E+FeR)*Xwoy5~X$t4m`Q4 zblGip+kRRvd~+U+&qvU$i{>5UEH*s zl*?!?!`^i-SJbU#&C6Hr>D#hT7tunqqq&tzO_H!3{))_byXt;%fG1?^n8?{LIwn_cZqc`BC5jVUPPV$E{(Iej<}WEfc=1bc(~D9 z+KdSE@x-N{ zisa*S9{lW?!ZAkHy zNdqqPaIK`W&ge7^m1zR?81TCzi!&6kv^@Xgbi@W>IIHtRD-R}x)4ObXKmUEp1DuGb z!^Wgknq~K&ItDNS#g)7gt9nEhW}0~4DDm%Ea(MuRUD;yI51|U_MkjFa&-He-2r#Ji z-Y+#l#rM~Lb7RhTYv{@wh&&EW;b-tTp>7U7!(l(=xS-wmxa>HKb5H;U+)O6t&x45m z8yu8!{g-_B>vz^NG}7KfO;)7>3ROs{$@}|rjfsuIB=3%s>*}>t#hn7js~S)3QzcBS;H`%dp|lNpBMecKY;A0dpKjpL3-%W_UW%n4Hms(u zv>onCE9#36vZ<%=WlH}>UsHnkw|y^4?yHw>B8g&IS?q z6Tmjpks5=birlBG&bw$fc}+_cL#fdn;FSorIt5MkXEsEt>2D6(AQVhjU4hPrs3cKV z7}(A$jO|F0f5?|Uy3PhZ_<~oPE*T4@vfCD(A`Io zl&I+OV$>sA$Cp;_%v>Mk5IZqd^umZsmize3KK6Ugp~XC8TU#g(D_BeGx~{5$+D}2bs47& zzm25HgXGUO*uAb6j)-|YmI>E6?w+tkseq8*a9IuAkxW1S&9@5}J|SMd(K>ZXQ(Z70 zK5b@pFr*$o$6?Ptp$2LnmpAEU)E{|4<01$soNhe#Ek)C1NRbn+)+#58N_OG5Sq%HT zv{S5ptcfLn8!MSMlwRgz6UH0bA0NP=%)mTnAcS~t<+NPb%$qzQMyi&|!Eb*`*_ zp8xcg{Wz?^+K{EBCHTkV4-oG?3lf~SS{N|rCi8i+uMiBKQ($L&kyV6G+a}y87NJ|i z()_JZP^C9($=^NYl13O*l!YDnNLH_2VmwgA6Zf_|)$gQ;`?D2XKewP61wo*c0{B~n z0t`0S9!uOh=3g3lf9qKUPsgI`<;GUmyK8ORTWuij86TVQML1zVj#<6M6>6%q!QvVs zuF{wSPFZnf<)APak&jmGyl#lfQ>8K)KXzlR%?~m$1VCQf{X<_WTp4y7O-9BD^Wm^2 zhOeE+)#6=r<+%>N^?eGOgZELrHdV1=igOq?CN(ULg<_@|$!{`^2GKd4>0{K`l2Eqv6Fq)&GJ@5M47d(Yfsd=|-$OUl2p zz|N>J`#;lz9~j+KIA;}+_-pPy=fS9*8~4VAT}UM4B){G-Z#p@3$Y{Sh*?LF=OdHSm zu3Ls@WeM_;0rHHqj@LmqpGoiY>BF`M)m$xp!@pWn9gC{9xhjT5gasbq@OZr|?{AL#XzRDV6u$-=YLv(pp!TguabT13i_fTPyTIUIF?T1^O1ETl{UM1BpL+XLlf^~|l}QxmYg0KfNnEPG2+ z4P$cxwPC@KZ!m(BGga-x$cNmj2kJNTTdeZZwD_KPvlR@GL^Qu6zyN4enZwT8Gk}=* z5i}}97$`Mdns#n)11tdwM?KyJs}r@oUw`iAEpRCc*q`i;0+=+GVuVS+h$f@Ph6-+mk(E<1a4px` z%a!GoWyLBURKNu6oGLt>8lzV08<B6(-mOMD)fM_GOka5|RC)8>_QW$SsL-TVS))Lr9l$YAR0` zyd6vl`to5P;#k@;5Y8qy=~U=4hWO4VAJxZc7(Y3et=5}-pXw-asL#B9PT+L#S#x2mOx zLt4(=iC5J8Yk$U~EYIWZ>PR4RT~Oi|eEiR_v3{;;#B~pkmTC=!+s?*ai-Mvn5_yJT z2*+lO)TL?+RfNSO`798M(79Qugecgy)A7G{p5eCX7Gp5$sgsozY6-SXZ?3g7JH>oD z0-u!GwdoV;)R1>9s=91=LXK1C(%tPuayf#n+J!vd82az}%O}?j!WyPuT9CBkKABEC zE&+~o@dGG_6!VFf|~^q zz^@K!1&(jFS?Os02?1}2gEf-)JwSGjWq}O9KVrm_1r;a_4#*{f=|Sf>5xnymY6KIF zu*QRvD;`r&jkej${o%TifEF8;UjO6Gz(GP+`!JwYf(5l|@U&9PK+mkns4q?tUAdWz zA}h&1v21k-9D}kjz{@z1SFZ68Y-#7@)a&=<-&NplmJW0Ub|+);@{y|cOJ69W9rKN= za_gagevuW{76Eb&GoMgUS@9Mhr{QoW&svf?&M6;UdOI_myfXV~VgO^TV7dUtA&-_P zm4zlXN9-G>?#Ry`G234-G=|xoVlI_98&5q8v`ikY zC29779u*l|)A)cq3NDQ?dZNEb>9N!aq$=Rpe-sMP3xQUwZyV=`B!}mVmC1LD9}MFY z{70v+D{?Ral4>HP;u?+fF_k1#KCPGA2Z$!xXD*#`=Los+e!}t@3M7^hl9~Opr}Rb> zQP@1l0VQtnIua#0e>+T+18$dtje!S{`htIM|LqF$K*s(Z;3=+1p$`%F#%6JUzfH1U zbFNzoiUuSY@Qsv@Gum<3@2sz+%W*?MH*PbW$tnB$ZTh=Us#Y~ojkIm)^qkct?!@+}&f`@v1{Awcy z1UjNPr3{-Q<0LTCIoqssn24~alX-Pz$SkNRH8valC)Zcro=}Q4R$GyP6r8F%Fh>86k(Dm1`{BEeC8pd-2DAAw|9A9nRu|~R z(e+xPW9c+O2|_MUY*g@-aOsAd=r#PrjZvU-XoZK#WHbWG%V|qRPc3YMoY9lYl71 zbaa43C8eFGi4{&6c0zV1hIvRtX%ME%F=(PrD|wL%5XrI2gF|Ce`zdGiuwm33(sg!ODTD2scMUw zdLr5?+KQU5weUm>Q}ZUcTyLj)xo=3Z)~o6krSBszrIGp0kU5rL+jHHOTay$^rsC0` zt=(UQxm9SK*r*4_rWl=GPPft#{}wS+*a$aA?H+C)1Tr)7=?MF^;0qN#3&nua`8$&K zva%kJb0dbBgmsxZe5rJDMf6yBmF`l9@ELXU)d!;>%Dzag26ZV0U5JE>6?|61H+@tU zP6U0uPVCV$0~&Ob3Y~Uid9mT)o#72ABvubS9ZF>!GRyT)`b1tU$h zVijWQV3((`b`QZnn@g4T?T@puzE-P8#`)gV=ky!a^JC^ikrz-TI)TBN8Fdz1Y6g9S zvgcd4^p?dM)Hahj;fzMd+xFvXXZk`3EB0#nb(zJ)-$G;Kn>I4pZHNk~LUL{Ylnnmg zr8845g`9NxdAI(t1^o8mwjW$(CZpA4?PT1_|2x0F6GgCg0eK6+g9*2 z9EgJlcGHkf>*kUSl{F9x6cqr_OssT4&nO7^S?u?dd^JH0h627RnCeYvSrIaqk>#jj zlOtF!ct#ywxl}mS3hJS!6z*M;SO+++B0&8NI-p|p>F=Y1Byx(vS?e$NO;rvpv9zEP z_6q1DWf;Ll(xt^5UC@ZgDIMoRqNz^OKRv~9qWTVCI5`GOsQeCC^*j~L{{92I(21bF zr(F*y|J$(Kq6SNufBWs}TxF-jyGG?+=SjCl1?b4_>!w#~c=a{ByA`eHyQ%-IOwOa) z`KR^yqP}>N6Y{0eC2t=&f01)ss|O6VO% z<&@I!7#*(<`aG)p$9-*T`!u=Ia--EMqpvOSo(qH~0ASjucX(JXv$bSGJKTY8*JnD_Qgh9l zS0KTd-d6eu;m)+#axV@CQ-LG~1=8lv+2Cr8*PsV~JSIkWtT&8=^v+ZktJz~%>$l9+ z1X8g=bl(PNU{%+fKb#oX>Y4lM*%RR+jorj6%dn07&RNQIOBD=6v8>qBEv;U(G-dwu zrbkO*CTzeNq54$kkIWL=gASV`|F`JyeLqfzO{lZA9R-QeOK%^zds`Wl1Ej2(5Dh~` z@AfJ0#>P|fwYD?$`S*(-O${xZi>=>043k=}?U;SACZUC7}T|PWmIQ zBMFkR9Px$=)mmpubXkp;U!H!pQjo}(VEG9qZBs=`YK(L|Ua>|NSG5n@o8%l0;4!Zs zO{>RK4J8XwBu^NJ~SzFoo4<{Ho%9a2Vt59%76% zX=|D6pKr{xdfi!yqUm+7eqwM;g0y&CMlGzU3y+tMX8FB9%cljI&SslBhMA*PoQUNq z#+C;Pf*I%LtB*O&bl73Ct=W^g0>7Oe;uyI-XhX?T<=`E+53@CP+UR!I7ZKT&5dQU+ zUGx3M<9%&#wZo!;kWAi}UknGE2P1J790J<`b?@bvvU=UP54)e81rv1{$u}#c3oPBr zzqGqk$1#_n{;5iq?-6eC`n(T(EdL4x|7rJ|_)x$?fK(QF!5F(a-yji70J(0toDGhu zuyIs0C>x2(m8HCfFk}!yl!buvP2jeWH&z>l}S?)Zu z3IF?Q?DPNX^vh0p%x`(l4qc4?O5Xm6sSbh&(Pe-sC~c<|r-%&xoLrN#zdO<7!YU7~ z@kjPM-^G+adu3^G0lmFFvjUwjIIIvpda?u_P-ff+-2%_oTl={}7{KMz!pe)g%a7jt z3HUR#no2(^^7Id@^;P4s7Ii);WK!(&{l8EMUH^VJX*5ni*Zu1Do^R}Q`!w&@RmdD)P^4Jb`vxE9$!Ah& zw{i8R`LD9Zbcp!()(Nli#+d5lo8&Hy5zNb_VTGwrf=a@dvC5Dh%mieZeZA(X5zMz* z-(x*K&O66quX~>7CW5BVrEICEbZ~<_Dove_Ri;tBv;OXP9UZ9aqo<$WmDi6VFN1o_ z4P>hC^6xP4HPzU{{P=Uw0{MwzuAr3qJw5^kzZiai%fCuzZ52QMoY$9eX9l+hyo~mw zmLS7G-nJ6F))NwgMv@FLkl_COM936_M4*rV4ZqOY)!^r4w|N{7Bch@ZnZH4To8u@e zD^ny&nn8oUQ9IOIqu-y!?XIY-3@HQV&z}Yl0gWg;YrCqhL4%+e$}Fr% z;DT(;Zk2aGWU(~_iBPx2E;la^TodBI>BwvKqbI}=(hN4){KiV-0DUu z#QJ|%sLP{)s*#u(82pR;=8HjMU-}?|#G3?TS35rvLWX1phg|&rpCpR#{}TW-EL2zW zCxU_Rx5N8tCO{NaPVzN7Bjn+F@pyB|Xg4@3U#|-x$Qsi3rw+&&*}c6zv+;VkD$T}egjLIA2RurF3>-_9xfbu`&uT?jD}6<$Y0 zMx__FlC9Ufyx(HIwWLeqj*IDF^mR>rtGf(?JzJVme7A$O)f>!5(XNtc@HV)IrghWR zXiG;t&aX}z_Qo6m{EzYUm~V^8*@wx+Jm(9QUkfQ-+PdCudmW3kG~8aE8SQUz%Jt*a z{t~q3S{G+Ki+wBJ=NU3U@KnWjlaAseKmEPV^-P~NC$JFDUO}RmFK9Fo8EI+I;?JQ> zgW@KTQ&VeBMZ>7dvEqkEK)70O6(WoOTA;mC*H(sV0j>*=ROa?oD^!6&p597sg0K~>(nc4J~I!mMBTq!^94(aqP z4_fqFD#hhriCE41+wiSBS959}K{odb+R$)MDw(!7hCn9xU_5z`U6w397cKCeyhOPy zDr&0xgM~P8M8e`X*+u1V_q8@63SgfyMYvJiZ98VZrfWJLw--^2D?YtaS#^G!x%V#( zp`{hYY&fi;w6XfwS*5nft(qr(ZRv?D9dgBIK^*}O)w{*$f!cTLLo`#D*)ARGAn;jo zHI={AWRT8+fIp=cF9@le&N*}f9mFu(_%o(%@^lF$>YnFe-XZ>u#Zd-v*KtS9Ng=@G zpa=ry7RzpQH9g~~7B{A`<|R%c*0e8Lo_+U;J*okl*}RpiSE`)t(HxPdACT@C&bdKl z2Zu(bQ$rW<3s)JfGz2Dc+bJr^{)SKw0acoyo#iWlNSx`UDIL}fVX~m6X7{tLd8lVV z(Bo0VK{YiupBBJRLNOvSt;&Wool9x_JwV!BOKem*7$+GXKpRVCEcp3Ajfq7uOZBIu zwpBr8bliXAO|_&=hG1h-cQ5E~Ko>4eSy@dg8bCbTn@dJzmfPW_s2nVO?9YwcDl;Q& zH2~7TtnU5?3cx}7SFg(Em=GiYB~`Q+JqU$d6B>R-3&Z31+MnEgf5ZFzjQsBo7Jtcp zTDVdPd;k$ZaO4*w5$bv;#%D%Unw!fFJoUm_|JXP1HNvqWtvPG0EPYfGR79U2)H%e^t)Gj-jDUH(8yHQ)xH@cSW zTy=I=$_=*oujc-EGr5+wV9y88sEqD2k3P$pc7G&P*czGW5526hvGC=Wyh652 z@OU1)Ut}ds{EOd_)8=|F5+P@b%n0b-G#={+;UmXhPtB+k7F`{+a?+B1!CDP@Y)5;>!~X zLg2U^5|6XRT3{rY7r)a;GN;g#)AAx4wY`lPhSBCTEyW)7)%ALSQd+Fq#>IpiH9a+- z1jPjL;+INXgf;hlCXd#dhpRKgCWqz3PbnUTK-D-k64m!56k-5Ax2Ln!Vo)grXQ-Vd z+;q<*F={FWI3WM1#~)XA`ujP4fxz3yn#l#~{n}q#+~f$J2GPk*;J0uJC`g+lKC8u= zwe%t+ZL)qR>2p=AR?X7>(I$}n-uj95{qFX*MH@s)%G)4n2t9mrer{E&Y@x3&P^g&h zvTK=vaz%pbwR?f6KDLX(u=K*M>8|> zATYS;PzFCD{@>fCMn++1Ju}OK(Z#{@n{<$|FwfOWa|}4ceSHD_1sy6r|4!%U=PkaC zf?%hM%fJB&I=UHgv6V%ZLr{Gaf}!!@-p;e-_aue!@eug2-O^rRW$9};cbnnDg7PVE zRLuj6qd=jroLN{P^Ue!gQ&K6gR(0|fOqdegxS&{>@`QC!6%Xp*f|!3qL}fZo34sRR zX-gMpB(K@j%{!-_MEvLLlu>3KmCf=SAohSpy~ zDT|lf9Cr=ttj7cfP~&>FnU|MGDwV{q#80%<*XjA>@pQ@Kaes_}%gS%b?6U9R{^!ph zQBhHly?0a>gY7gxfC&{=R8o3d3NN?(Fq4i7&JQ0d76bcZ$DE;Q;pIek^4pWV`4zTi z-g$k&GBL8LNno-X{=5O+qPvi*&CT0EAgapVQfE)DULd!AJf4pY zO-;cd_oTBpJ3G6zl_OHr67c}2SOHdBUmyPWFHx+xoi_`}Q)0%06j)wf4hjzL+jvZe zq6nkaY$$mN+67&zPmLPb`#S=9Fa3X&RCTiGh~^c3%6m3r!(#miqdF1O#Bgk1!AS(QX#phR8h9enBQ2 znru^Xo4eZp(HQD$w&_d!h=R}uPgZQre#F*c zzo+#lSW*n)AhV`#RO|6^akU4FXXF+Q7a4uFKACj`Y^9X?AAcr0@dJ9$+gX3J9yhuf zcxnNOOf|ns(+RXGyY21PYl9ZkoLY0r(hR#zm%ck|EKb-cDX(D@wcN_+9?T!Cc{J5Z zdwU%|@gbJoGyn@l9`T2NXRq)b_8l6N-%ZFU<7vKddnKmDQ+2G(S{jKRt-?EDHI05- zAbv|VPqX{xF3~NMr8GF(Q$D`DnCViH@p=C55*>u%VQHCwndpSYYx}zGlI%Lg6JJ`^ zPx=g8L7PL&)jFi!8jwk^g;!fhO2WAAfU?q|KOO4QsGcjce&VgXq{P&#FUYl z{04`?&c!99#EcM(fJ=toF>|2S9D3 zJH4(>wl_$K=xD#okOAo)>N`5zCwkj&c&uhrs9hs;Kh*r-kNi;Ot)`jM$ADJiK;rm|_w<|8r02(ev?rOa$>#qtz0)QiiR6pt+L$&VPf zXZ*SHL(zm=USn{D%hB6<&2V{r$q?<(>oT;A_GjL2hxSa3Na-6A<F}mPQACtJ0iP-~s+eRL23y;CA*tV5N;X=_4OQpd!j#5wyE< z06jnbtUo^Vg_hPVP%#%?sW3KyQ2;i(a4a|ZvocgU@BF0vX{r|zmH|nXCd7nFJ~_%luN>%H6xzxO%CLa& zp_!SPyV?=U&+126=JAy&&~|oqE>;_rs-3F@iIBx1Ak^eP`#z8X-07_O9?#~McWsFH z2S$0{Pia&dZZ7*JTe;02PycGgvQ=fIcbjRY6ZhhM->JxVf0I_1);_QG4hci6TO}aB z?CU~Zy5#L}anKXqd?v7l!Bb8guwAuhrlqy$f5pEHd^^6K7<$#LQm^IUygWI{Jlhp_ z@sWjkVC585he}wgHgu3G<4snwsIL9!bFJunV1FDN?eyL7GBMkmT|=u_Zs233rFHr^ zmApfg70tGnE98TL%fh*(DvlT}h;8L8qhf}Dd(%pu;)@FB@_y!*+~Je{L1dW%{c35w z-onMeaWGWc8IN&}OvR@;p6c>6KjB_(%w8cG3011>@p5}WE|)cbSr& zv9Ym6j4x9Cmhk;i_*{$SYIH1((=Cq3{5c>N?W~VrL_&@{U%&6)zz91eA%Ud?%Z>4M z+!v>X<)beFyuFS?_qW0lzoeE_#{!DgY=@hV@#g;p86I6~q&{w=FDy#Fy!t4<+>4BB zYTYEn#ZedQxm;e@oj3$}hwLapyB5UBi(NgI#ZA;>R{w2b^$nU}RW1zwW^9BYB?bop zK&C;RYY=0rH-9Bih4S?^bHkXL8cL`)ojMq0Nuo`)%qu+IS<;Qe_1syt4hBx&w(c#Q zpy|64FU@aA>fvv@=~Hf1g0eCB;RLPk6NA?cf+zdmh;52agIQ@B3pq@ywwPScPIvz- z_pQhz{zCnU=V}U#lKY#o#O~U>a_W~9q;X4HYjI(0yPT)R!5I@~^>+%WaLh@@*>|%x zIcEu7lhnTPIRxvVE9%|7z4G#MZ*T8(mACY)tj&C}==JsWEFMoq3O>_%PR>l)|*ZUm^uv=P2CYJ?=i!s#-l+>D?osEi$;wz_oHeaoWjfsm3Ac6_Y z)7RJM<6&B=)`JFAXw)A{k&729>gjDwO#C0N-Z{FiHfs0YNz=n44tm(k^Pp#n%vfpTPzc6RivtaQ}W zmT^bE9fqSt!ss28T6mMy0CJxs3x}P|7C@*yK<5fmM z@6$wld2p2Ybj@=!b0CQR)Bx^To$llvT)AH-F*X*(m(ZDegNvRg6akwNLLfTpRXO+L zRo0hKyTctD8JR(^4;mgGp8dyLQvdus3pe-L$_h?uE)0Kxe53g?ILMgHCOrqujQ{TL z4mhkIW-(Q`obYS!j#vQ<2N&gPQY|yrv4$$jHdc z%gcGub9s>~kfm#!CN&)G_WIg{7r4`({kpPS4VZL^`os10`PrkWva+(enjvYlqOww1 zN$K67mecM)l8vpg!D6)ssz|P``ifQH|Kz{vN2*rv+M;oa6;FVf0C-A;2)`KcU_<*R z&&hsfD^eB6QjGs4um-NtQ~!M>Xz5(2bz;r)or70;cTIOb?7M+oq@FJC1E zW)NMHMp+k547m`XE&2PGYqzV@VDzp6RjWW2y8uXp>$KRL0GqCmL`+@sApK0(XIVDt zE&Zm~+b48_6Lct3rEuF*NUX4WET`!;mCqYN4L^m!s!C+kIK~@6MrHn+@)J+Y4HGe9 zTs(aWLAsJpx9dkmi!#|N5XS<|(ScN}SrjuTvT~R#1yJYO?D@{Q=6sg415~;KQD0E$mtC5G%9j1vU~(MCKzdY^BXu%-OWI^bc|*zgcq4tI@<{6bsEf^dv-2cm z7p9l%-m=Bq*SkBx0wo#!yj$u7gbCV;@VZmS6DSC|^p73oJ)VvQ7CUV#JPgWrgPzek zcRV{N6{s>9J-Ti2MZ{oaYB%D|uvF`8on&*m2Tz!a%gU@)>Ow~M0rPB@4f(kNaZb;-CRG~4YSpWT z56-LSH?zgc2ppD?@o{({7V*`65p1$MZ6A=RJ-hs3qe*UmXp&TKw%9l92uC{LA>gs?>z1$q zA*mo#bY{q9zTVv&O?Ut5y)^p43xm%=%-eX1n;RS0IM%5=D1GfZg`5Nu7ww zorBIFyyTM`y(~o14k?>}vWktFR-yh1vBj zyp8I3_a9!IQH4iFhTZL50|S$a;!tq9f3Sc)*_#9HiPBs`&X>T-wH9(7CcFD`F4curV=JRM>!9>h-mat?f&U#-W#!sfRNsC#RvIAweBiB(U32 zCx|=GdJ+5h_#7V}<8e9q7aD{AQ!NM1r7TW|(iDiGfZj()VJWE!g(7MA+NM-z_Xomp zx1*Q-USv(knwdUOFs#m5N2V?NS#ANDmO92#-fa9Ca#4DHzYNne4rMi6M+Qn}KUF@0 z6AA>A-}x1J;}F?KSkhP?iS2foz;#G~BdsY)qEh9mW8O-!xZ4fnLZiJR&DsKZD!N$d{zgxLYU!-0zU1K z4Tj^H6Gn*utE;TXp3q%W_h?%;ea2v1OqW={dlUAhsMn$nyXMA{hYOOAU^=d7s0vLN zy5}crHa?G?*Yq@XML356CEcW}1q7)0D4BkyN;W3R)n)0FTfoUmhe@F#rx)@z zS#Yzvv(a={I#xpKuE0yvCBN^r=XuSx*?lHoOioU&(Q=)UjqTHbt@MeGl#C1k&^Ccx zpUG&#U$@^2V+uWqx{s6alPf1ROT3 zU_1vELSS*O9&-N~-PyZyw;4)?_C}u*@w<(am+{RvsF>9D0#;gdazz@rBNjUc#bNum z_jvLG$>geHMus^E;5kBTNp?*v!Nvz^ce_6_zAwm@?D@_Kk9K9>|&qxW;zgrlGG}=N}{4TpZ*9==Ql8ZFfi&J~w!gkpKOC$uS$`XG-<_%>bkQFkk2Nplpbf7TB3?r;HOV`c`h42nz zPJEd_(oNW`&kM9epjKL>#v%S#sVrUk9OwB=M|;qR>9h^!IW@ZPz)YU?E$j#nyeb5l zxH~1w{fx)k;sXhyNGqGw+^iy3hpjwrWZ5Ye16qudUihGJm>m<9DR{!JcmOUGGwgHw zUH%bAZ60GS%$7IO4$n6s$yfMlxw0|(%DUOP?tS0%G54g*)U92UyP?6f-CgJ7v|RB& zU9m|?ZH2O;B{Sc|l7-1UsPBZ8e5u-`Bak7sN>9~W9k^`VIp9HZV$!x9idvf|Jqf{1 zMHIpyLI{C>O`OTX@>J2qCJcYk3#wq|eOw_uoV4AF2)-`kM&$M|#^k{MQdLi$R3Qxh z`x;*D+t6vDc~n)Ii#1)i7&L~`m)3Wx&=5ed)ZRPbpXA{7m|knOL1j=N7y?EWaYJNG z5jnbV3mXv#%8nlW{g(>cLVorOv~TqAUx%JB!r*HCK}aYlwv)w}&ET*wiNAmILqo;a zv&-nxIm}A|kpW;tQJXcTksv~I;jbpZO}LDELau9*Dy!xMN+UPjakdatUnX|n#xcgy zHaqII#OG*tFZ}TCRhj#`<)7cU5B?6!9&H)^G~Vsy3d8M8{3&HIk>73inXI!`kwL+B z{bSt5RpT^vl@nHXXZ-tO@JQ}=#8{V&4CZpzJ7WjuiS!>9xb>D9T$QApUqG2!%Z!J- z!K!>^bZ?G_({^;y8ug+v5~zpVV@c?Fu+D2uxu-5#FUJcp8zEy5X zG2`y=oTz(rcUnZ0lSM*Ni!%cfyEdaGLge-hTI^n)zYt#+ryK9VAvv)BZT|8hrZDfd z=>=D&OI&*2k$KGvZ ze5WtjIpSg~gZ};lEK_Tv{>GR4Z0d}2o|?{?*M6ux0@E`2-;Xfg)@4a{_Lbgp%I1Jd zz#igeZx}dwtee-=(PwCUpE?fXqCWwX6~MUW=IYA(lG^L98*olx!->|GI!mGB4vG*X z`x4&&VwYNOMnOTDi67}bymh)*3nBas=qW(L6p&Qtv|5<0Hn@R6>^}h|(_0s4Y&Qt> zw<{AzwI4^goSJH5P(YVFhPuNM!c!|PW3Xv8C39{DK zn@*1`4yZ~LtR7tIL3#u zGP^BErOe5$8QQnRaH)H3 zQ->Vv)42 z54_bD^<=ew948fL5&rZ35pfFq{N6a~wDGwaP>_#Sm!S)YqGE!0xSBRO{F7q?jUL_= zm9U+;EA{$QPu*Z}wi!$aL`bm#wMn%lt||OGn`YLpiPDLV7?vFw_9mgG;U}vVURhnr zr7MuG>NpqD2)VE^8NXh6JuT7QI|6fhgXKtQUAPs#=|g^%h}vyDT_~+25Jifw$k8{m zk{~C6L$54I@MC>7v%2`dvGn)RJf~bpCnqNfiBZFius>K0di|lxwMK40GpXa{Aa^Ir z^%fS>ISLJpRhfs~0A^7L@a~})lFN;Dpyk>U&BiNR_0<6-B_%Xay@G>*@i5C&3xGF3 zLpFT;j{?+u`I4$CD?`JBPBFZ}Psgn|lBZu#eC}b3czxHM??+6>?yLJSxpxkCAE?Nx z?^Yj~!}MBZ8!7j^%H!5%UQ7X>av?y@t3$KWYiJL1=3_;z06WSNw>iRVT>Ue;2MG8Q zX*Cvt@!Ml#W1E`T0|W(_-2eh7fm#I;4y)_%HiyL%OQlM?zP7g2uDd&jC9xW{c7q8m$8IpNB)S1eaOQ+p8~w(UU*I-_l0EbS*UE{T(Bm z|2()%d7G){g(XsXj9KgHjKBzc`Tq~kJOd-|bvEYFiU+t@+|qM;qK5SY8HdcwOb4@t zI#X{MkMo@>VExotZDxuWEU@9E^DJZo@+1)}YochLfC4iZAjU~&@xCkP0nsYqCvrW` z$8}w4DHU(lrXp-bwEN9{A!JSN&x`?r$8#lssx^3}kUa-FpZYt%G;V5!LecL@MiHv6s!F3)1JN)MEdz*Q zd7=?71{%Wv{DX#uhJ}OkQKQ@DMHw0zdN7e8kvGlF!(*1j0=&VYpzGD72QjOBKuTFz zSpf&V+@Buq?&g)04F6?RQdB&$=WK?=i7?dHzYTlhJ|%<)B~ytM=8Dwo$sTSG%bSs8WRiBor9U%uPp1rSsGmlmQ*I5|8tGBjL}^bH}B za*%wW9wQsD!R`HtCbIoa92!EN0InBU)e#X9X-Z?eftI&6xa2XvWmi~JT0`2P{tx)a z++9r!$g3jW8$c6p@aJv6KgIvC4)J>bD}@5LDg#(pSVktMA1E;Y1GOVKFhWkdP4I-2e$vbe7=$ofRuJnuQQla(3Ja z#Gw%2i>s>W;bgu6cpQ90W8>pU0`>j+PIq>N{_6JLuix1P%@IL|&9!fI?_R>7Bu*9YR0;plXJ&^Jx#DarN z8#iQ3frIpuE>b9&TR~N&SwQ^8zbyGs_#a-Gb*AXe3AdpJtQWjJTMhvviqMPI#>vr9 zfMc91tzP*#@PA+3J2ajJ5d4{%!dm?Vo*(#Q9c=cX5-=BFSpsR8CwJce^F{%+T3A%H zQlpWMi3wFb4+e-Pn}Hc%cR2AMi&llph@@P zd&~o5?I@sqkJekA){UCFpnw4ab3j1S)EmeRO�Q(^nlRXg~SZfTaaadItUv8TtP} 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