From 5e871d2ecfeaff2dbe523296b3bd9802ff46e5f9 Mon Sep 17 00:00:00 2001 From: Oliverio Sousa <47525443+oliveriosousa@users.noreply.github.com> Date: Wed, 11 Aug 2021 11:34:10 +0100 Subject: [PATCH 01/21] fix: remove main field --- examples/browser-add-readable-stream/package.json | 1 - examples/browser-browserify/package.json | 1 - examples/browser-exchange-files/package.json | 1 - examples/browser-ipns-publish/package.json | 1 - examples/browser-mfs/package.json | 1 - examples/browser-parceljs/package.json | 1 - examples/browser-readablestream/package.json | 1 - examples/browser-script-tag/package.json | 1 - examples/browser-sharing-node-across-tabs/package.json | 1 - examples/browser-video-streaming/package.json | 1 - examples/circuit-relaying/package.json | 1 - examples/http-client-browser-pubsub/package.json | 1 - examples/http-client-name-api/package.json | 1 - examples/http-client-upload-file/package.json | 1 - examples/ipfs-client-add-files/package.json | 1 - package.json | 3 ++- 16 files changed, 2 insertions(+), 16 deletions(-) diff --git a/examples/browser-add-readable-stream/package.json b/examples/browser-add-readable-stream/package.json index 058d5577..ca5c80f7 100644 --- a/examples/browser-add-readable-stream/package.json +++ b/examples/browser-add-readable-stream/package.json @@ -5,7 +5,6 @@ "description": "How to add readable streams in the browser", "keywords": [], "license": "MIT", - "main": "dist/index.html", "scripts": { "clean": "rimraf ./dist ./.cache ./.parcel-cache", "build": "parcel build index.html --no-scope-hoist", diff --git a/examples/browser-browserify/package.json b/examples/browser-browserify/package.json index a0683a1c..d746e8ea 100644 --- a/examples/browser-browserify/package.json +++ b/examples/browser-browserify/package.json @@ -5,7 +5,6 @@ "description": "Bundle js-ipfs with Browserify", "keywords": [], "license": "MIT", - "main": "dist/index.html", "scripts": { "clean": "rimraf ./dist", "build": "copyfiles -u 1 -a './public/**/*' './dist' && browserify ./src/index.js > ./dist/bundle.js", diff --git a/examples/browser-exchange-files/package.json b/examples/browser-exchange-files/package.json index 713b7aec..ba41531c 100644 --- a/examples/browser-exchange-files/package.json +++ b/examples/browser-exchange-files/package.json @@ -3,7 +3,6 @@ "version": "1.0.0", "private": true, "license": "MIT", - "main": "dist/index.html", "scripts": { "clean": "rimraf ./dist ./.cache ./.parcel-cache", "build": "parcel build index.html --no-scope-hoist", diff --git a/examples/browser-ipns-publish/package.json b/examples/browser-ipns-publish/package.json index d3cfbf04..998651d4 100644 --- a/examples/browser-ipns-publish/package.json +++ b/examples/browser-ipns-publish/package.json @@ -13,7 +13,6 @@ }, "license": "MIT", "author": "Doug Anderson", - "main": "dist/index.html", "scripts": { "clean": "rimraf ./dist ./.cache ./.parcel-cache", "build": "parcel build index.html --no-scope-hoist", diff --git a/examples/browser-mfs/package.json b/examples/browser-mfs/package.json index 4350f5e0..e71fc6e7 100644 --- a/examples/browser-mfs/package.json +++ b/examples/browser-mfs/package.json @@ -5,7 +5,6 @@ "description": "How to use ipfs MFS in the browser", "license": "ISC", "author": "", - "main": "dist/index.html", "scripts": { "clean": "rimraf ./dist ./.cache ./.parcel-cache", "build": "parcel build index.html --no-scope-hoist", diff --git a/examples/browser-parceljs/package.json b/examples/browser-parceljs/package.json index 92646108..50cfbbe5 100644 --- a/examples/browser-parceljs/package.json +++ b/examples/browser-parceljs/package.json @@ -6,7 +6,6 @@ "keywords": [], "license": "ISC", "author": "", - "main": "dist/index.html", "scripts": { "clean": "rimraf ./dist ./.cache ./.parcel-cache", "build": "parcel build index.html --no-scope-hoist", diff --git a/examples/browser-readablestream/package.json b/examples/browser-readablestream/package.json index 64c3baab..4115b2cf 100644 --- a/examples/browser-readablestream/package.json +++ b/examples/browser-readablestream/package.json @@ -5,7 +5,6 @@ "description": "An example of how to play a video in a browser using a readable stream", "license": "ISC", "author": "", - "main": "dist/index.html", "scripts": { "clean": "rimraf ./dist ./.cache ./.parcel-cache", "build": "parcel build index.html --no-scope-hoist", diff --git a/examples/browser-script-tag/package.json b/examples/browser-script-tag/package.json index a56dccd9..868d49bf 100644 --- a/examples/browser-script-tag/package.json +++ b/examples/browser-script-tag/package.json @@ -5,7 +5,6 @@ "description": "Using IPFS in the browser via a script tag", "keywords": [], "license": "MIT", - "main": "dist/index.html", "scripts": { "clean": "rimraf ./dist ./.cache ./.parcel-cache", "build": "parcel build index.html --no-scope-hoist", diff --git a/examples/browser-sharing-node-across-tabs/package.json b/examples/browser-sharing-node-across-tabs/package.json index b47d567b..7928e275 100644 --- a/examples/browser-sharing-node-across-tabs/package.json +++ b/examples/browser-sharing-node-across-tabs/package.json @@ -5,7 +5,6 @@ "description": "Sharing IPFS node across browsing contexts", "keywords": [], "license": "MIT", - "main": "dist/index.html", "scripts": { "clean": "rimraf ./dist ./.cache ./.parcel-cache", "build": "parcel build index.html --no-scope-hoist", diff --git a/examples/browser-video-streaming/package.json b/examples/browser-video-streaming/package.json index 286d7518..a2230f30 100644 --- a/examples/browser-video-streaming/package.json +++ b/examples/browser-video-streaming/package.json @@ -5,7 +5,6 @@ "description": "IPFS browser video streaming example", "keywords": [], "license": "MIT", - "main": "dist/index.html", "scripts": { "clean": "rimraf ./dist ./.cache ./.parcel-cache", "build": "parcel build index.html --no-scope-hoist", diff --git a/examples/circuit-relaying/package.json b/examples/circuit-relaying/package.json index 3296874e..d661f661 100644 --- a/examples/circuit-relaying/package.json +++ b/examples/circuit-relaying/package.json @@ -5,7 +5,6 @@ "description": "IPFS quick msg", "license": "MIT", "author": "Dmitriy Ryajov ", - "main": "dist/index.html", "scripts": { "clean": "rimraf ./dist ./.cache ./.parcel-cache", "deploy": "ipfs add -r --quieter dist", diff --git a/examples/http-client-browser-pubsub/package.json b/examples/http-client-browser-pubsub/package.json index e58bea42..674bcc96 100644 --- a/examples/http-client-browser-pubsub/package.json +++ b/examples/http-client-browser-pubsub/package.json @@ -5,7 +5,6 @@ "description": "An example demonstrating pubsub in the browser", "license": "MIT", "author": "Alan Shaw", - "main": "dist/index.html", "scripts": { "clean": "rimraf ./dist ./.cache ./.parcel-cache", "build": "parcel build index.html --no-scope-hoist", diff --git a/examples/http-client-name-api/package.json b/examples/http-client-name-api/package.json index 57bd9982..692894bb 100644 --- a/examples/http-client-name-api/package.json +++ b/examples/http-client-name-api/package.json @@ -5,7 +5,6 @@ "description": "", "license": "MIT", "author": "Tara Vancil ", - "main": "dist/index.html", "scripts": { "clean": "rimraf ./dist ./.cache ./.parcel-cache", "build": "parcel build index.html --no-scope-hoist", diff --git a/examples/http-client-upload-file/package.json b/examples/http-client-upload-file/package.json index 13d86bae..7da54ece 100644 --- a/examples/http-client-upload-file/package.json +++ b/examples/http-client-upload-file/package.json @@ -8,7 +8,6 @@ "contributors": [ "Victor Bjelkholm " ], - "main": "dist/index.html", "scripts": { "clean": "rimraf ./dist ./.cache ./.parcel-cache", "build": "parcel build index.html --no-scope-hoist", diff --git a/examples/ipfs-client-add-files/package.json b/examples/ipfs-client-add-files/package.json index 0daa1a3b..93a1240f 100644 --- a/examples/ipfs-client-add-files/package.json +++ b/examples/ipfs-client-add-files/package.json @@ -3,7 +3,6 @@ "version": "1.0.0", "private": true, "description": "", - "main": "dist/index.html", "scripts": { "clean": "rimraf ./dist ./.cache ./.parcel-cache", "build": "parcel build index.html --no-scope-hoist", diff --git a/package.json b/package.json index 2c2aa140..e1b68424 100644 --- a/package.json +++ b/package.json @@ -25,7 +25,8 @@ "clean:npm": "rimraf ./**/package-lock.json ./**/node_modules", "clean:yarn": "rimraf ./**/yarn.lock", "clean:build": "rimraf ./**/.parcel-cache", - "test:examples": "yarn workspaces run test:example" + "test:examples": "yarn workspaces run test:example", + "test": "npm run test:examples" }, "devDependencies": { "rimraf": "^3.0.2" From 9a1ed0f0bbc107a3b9d834299260d79dc665b510 Mon Sep 17 00:00:00 2001 From: Oliverio Sousa <47525443+oliveriosousa@users.noreply.github.com> Date: Wed, 11 Aug 2021 11:34:36 +0100 Subject: [PATCH 02/21] fix: convert imports/exports from esm to commonjs --- examples/browser-add-readable-stream/index.html | 2 +- examples/browser-mfs/src/filetree.js | 2 +- examples/browser-mfs/src/forms.js | 2 +- examples/browser-mfs/src/index.js | 16 ++++++++-------- examples/browser-mfs/src/utils.js | 2 +- examples/browser-readablestream/src/index.js | 10 +++++----- examples/browser-readablestream/src/utils.js | 2 +- examples/browser-service-worker/src/worker.js | 8 ++++---- .../src/worker.js | 4 ++-- 9 files changed, 24 insertions(+), 24 deletions(-) diff --git a/examples/browser-add-readable-stream/index.html b/examples/browser-add-readable-stream/index.html index fe6ba019..e6f46675 100644 --- a/examples/browser-add-readable-stream/index.html +++ b/examples/browser-add-readable-stream/index.html @@ -14,7 +14,7 @@ - + diff --git a/examples/browser-mfs/src/filetree.js b/examples/browser-mfs/src/filetree.js index 5efb07be..e0ac2930 100644 --- a/examples/browser-mfs/src/filetree.js +++ b/examples/browser-mfs/src/filetree.js @@ -68,7 +68,7 @@ const updateTree = async (ipfs) => { listFiles(container, files, '') } -export { +module.exports = { getSelected, updateTree } diff --git a/examples/browser-mfs/src/forms.js b/examples/browser-mfs/src/forms.js index a35432f3..1af7552d 100644 --- a/examples/browser-mfs/src/forms.js +++ b/examples/browser-mfs/src/forms.js @@ -167,7 +167,7 @@ const readForm = (onRead) => { button.disabled = false } -export { +module.exports = { mkdirForm, mvForm, rmForm, diff --git a/examples/browser-mfs/src/index.js b/examples/browser-mfs/src/index.js index 7853ee3c..e83c8ea2 100644 --- a/examples/browser-mfs/src/index.js +++ b/examples/browser-mfs/src/index.js @@ -2,15 +2,15 @@ /* eslint-env browser */ -import { +const { dragDrop, log, bufferToArrayBuffer -} from './utils' -import { +} = require('./utils') +const { updateTree -} from './filetree' -import { +} = require('./filetree') +const { mvForm, mkdirForm, rmForm, @@ -18,11 +18,11 @@ import { statForm, readForm, hideForms -} from './forms' -import mime from 'mime-sniffer' +} = require('./forms') +const mime = require('mime-sniffer') /** @type {import('ipfs-core-types/src/index').IPFS} IPFS */ -import IPFS from 'ipfs'; +const IPFS = require('ipfs'); document.addEventListener('DOMContentLoaded', async () => { const ipfs = await IPFS.create({ diff --git a/examples/browser-mfs/src/utils.js b/examples/browser-mfs/src/utils.js index 5cdb66a1..5499a067 100644 --- a/examples/browser-mfs/src/utils.js +++ b/examples/browser-mfs/src/utils.js @@ -84,7 +84,7 @@ const bufferToArrayBuffer = (buffer) => { return ab } -export { +module.exports = { log, dragDrop, createNode, diff --git a/examples/browser-readablestream/src/index.js b/examples/browser-readablestream/src/index.js index 8eea177b..584ac7d1 100644 --- a/examples/browser-readablestream/src/index.js +++ b/examples/browser-readablestream/src/index.js @@ -1,12 +1,12 @@ -import Ipfs from 'ipfs' -import VideoStream from 'videostream' -import toStream from 'it-to-stream' -import { +const Ipfs = require('ipfs') +const VideoStream = require('videostream') +const toStream = require('it-to-stream') +const { dragDrop, statusMessages, createVideoElement, log -} from './utils' +} = require('./utils') const App = async () => { // DOM diff --git a/examples/browser-readablestream/src/utils.js b/examples/browser-readablestream/src/utils.js index 4e80b9fe..049aec5a 100644 --- a/examples/browser-readablestream/src/utils.js +++ b/examples/browser-readablestream/src/utils.js @@ -134,7 +134,7 @@ const createVideoElement = () => { return videoElement } -export { +module.exports = { log, dragDrop, createVideoElement, diff --git a/examples/browser-service-worker/src/worker.js b/examples/browser-service-worker/src/worker.js index 2b35fe6f..891c1660 100644 --- a/examples/browser-service-worker/src/worker.js +++ b/examples/browser-service-worker/src/worker.js @@ -1,7 +1,7 @@ 'use strict' -import IPFS from 'ipfs' -import { Server, IPFSService } from 'ipfs-message-port-server' +const IPFS = require('ipfs') +const { Server, IPFSService } = require('ipfs-message-port-server') const main = async () => { // start listening to all incoming connections - they will be from browsing @@ -15,7 +15,7 @@ const main = async () => { const ipfs = await IPFS.create() // And add hello world for tests await ipfs.add({ content: 'hello world' }) - + // @ts-ignore const service = new IPFSService(ipfs) const server = new Server(service) @@ -36,7 +36,7 @@ const main = async () => { * the given event `type`. It is like `target.addEventListener(type, listener, options)` * but instead of passing listener you get `AsyncIterable` instead. * @param {EventTarget} target - * @param {string} type + * @param {string} type * @param {AddEventListenerOptions} [options] */ const listen = function (target, type, options) { diff --git a/examples/browser-sharing-node-across-tabs/src/worker.js b/examples/browser-sharing-node-across-tabs/src/worker.js index 1a346cb9..32c84d80 100644 --- a/examples/browser-sharing-node-across-tabs/src/worker.js +++ b/examples/browser-sharing-node-across-tabs/src/worker.js @@ -1,7 +1,7 @@ 'use strict' -import IPFS from 'ipfs' -import { Server, IPFSService } from 'ipfs-message-port-server' +const IPFS = require('ipfs') +const { Server, IPFSService } = require('ipfs-message-port-server') const main = async () => { console.info('Running SharedWorker...') From fbe877517c505a3558eedd25c3d1a5d275815d95 Mon Sep 17 00:00:00 2001 From: Oliverio Sousa <47525443+oliveriosousa@users.noreply.github.com> Date: Thu, 12 Aug 2021 11:39:42 +0100 Subject: [PATCH 03/21] fix: force use of yarn --- .npmrc | 1 + package.json | 9 ++++++--- yarn.lock | 0 3 files changed, 7 insertions(+), 3 deletions(-) create mode 100644 .npmrc create mode 100644 yarn.lock diff --git a/.npmrc b/.npmrc new file mode 100644 index 00000000..b6f27f13 --- /dev/null +++ b/.npmrc @@ -0,0 +1 @@ +engine-strict=true diff --git a/package.json b/package.json index e1b68424..4bec80aa 100644 --- a/package.json +++ b/package.json @@ -19,14 +19,17 @@ "workspaces": [ "./examples/*" ], + "engines": { + "npm": "please-use-yarn", + "yarn": ">= 1.22.11" + }, "scripts": { - "init": "yarn install", - "clean": "yarn workspaces run clean && npm run clean:yarn && npm run clean:build && npm run clean:npm", + "clean": "yarn workspaces run clean && yarn run clean:yarn && yarn run clean:build && yarn run clean:npm", "clean:npm": "rimraf ./**/package-lock.json ./**/node_modules", "clean:yarn": "rimraf ./**/yarn.lock", "clean:build": "rimraf ./**/.parcel-cache", "test:examples": "yarn workspaces run test:example", - "test": "npm run test:examples" + "test": "yarn run test:examples" }, "devDependencies": { "rimraf": "^3.0.2" diff --git a/yarn.lock b/yarn.lock new file mode 100644 index 00000000..e69de29b From 57451c970ea695d0161439d486605b10a160b80f Mon Sep 17 00:00:00 2001 From: Oliverio Sousa <47525443+oliveriosousa@users.noreply.github.com> Date: Thu, 12 Aug 2021 12:31:38 +0100 Subject: [PATCH 04/21] fix: change typescript target to support big integer literals --- examples/browser-angular/tsconfig.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/examples/browser-angular/tsconfig.json b/examples/browser-angular/tsconfig.json index dc6c11c6..5a87c399 100644 --- a/examples/browser-angular/tsconfig.json +++ b/examples/browser-angular/tsconfig.json @@ -14,9 +14,9 @@ "experimentalDecorators": true, "moduleResolution": "node", "importHelpers": true, - "target": "es2017", + "target": "esnext", "module": "es2020", - "lib": ["es2018", "dom"], + "lib": ["esnext", "dom", "es2020"], "allowSyntheticDefaultImports": true, "skipLibCheck": true }, From 4451f537e4f0520c394564c5dbe36ab94353b970 Mon Sep 17 00:00:00 2001 From: Oliverio Sousa <47525443+oliveriosousa@users.noreply.github.com> Date: Mon, 16 Aug 2021 10:16:59 +0100 Subject: [PATCH 05/21] fix: improve and fix tests solutions --- .../browser-add-readable-stream/index.html | 21 +- .../browser-add-readable-stream/package.json | 2 +- examples/browser-angular/package.json | 2 +- examples/browser-browserify/package.json | 2 +- examples/browser-browserify/public/index.html | 21 +- .../browser-create-react-app/package.json | 2 +- examples/browser-exchange-files/index.html | 2 +- examples/browser-exchange-files/package.json | 2 +- examples/browser-exchange-files/tests/test.js | 21 +- examples/browser-ipns-publish/index.html | 70 +- examples/browser-ipns-publish/package.json | 3 +- .../browser-ipns-publish/public/ipfs-logo.svg | 1 + examples/browser-ipns-publish/src/index.js | 5 +- examples/browser-ipns-publish/tests/test.js | 194 ++--- examples/browser-mfs/index.html | 2 +- examples/browser-mfs/package.json | 2 +- examples/browser-mfs/src/filetree.js | 2 +- examples/browser-mfs/src/forms.js | 2 +- examples/browser-mfs/src/index.js | 16 +- examples/browser-mfs/src/utils.js | 2 +- examples/browser-nextjs/package.json | 2 +- examples/browser-parceljs/index.html | 23 +- examples/browser-parceljs/package.json | 2 +- examples/browser-parceljs/src/index.js | 2 +- examples/browser-readablestream/index.html | 3 +- examples/browser-readablestream/package.json | 2 +- examples/browser-readablestream/src/index.js | 10 +- examples/browser-readablestream/src/utils.js | 2 +- examples/browser-readablestream/tests/test.js | 768 +----------------- .../browser-readablestream/tests/test.mp4 | Bin 0 -> 117897 bytes examples/browser-script-tag/package.json | 2 +- examples/browser-service-worker/package.json | 3 +- .../index.html | 2 +- .../package.json | 2 +- .../src/main.js | 2 +- .../src/worker.js | 4 +- examples/browser-video-streaming/index.html | 2 +- examples/browser-video-streaming/package.json | 2 +- examples/browser-video-streaming/src/index.js | 2 +- examples/browser-vue/package.json | 7 +- examples/browser-vue/tests/test.js | 2 +- examples/browser-webpack/package.json | 2 +- examples/circuit-relaying/index.html | 4 +- examples/circuit-relaying/package.json | 2 +- examples/circuit-relaying/src/app.js | 8 +- .../http-client-browser-pubsub/index.html | 29 +- .../http-client-browser-pubsub/package.json | 2 +- .../http-client-browser-pubsub/src/index.js | 6 +- .../http-client-browser-pubsub/src/util.js | 15 +- .../http-client-bundle-webpack/package.json | 2 +- examples/http-client-name-api/index.html | 67 +- examples/http-client-name-api/package.json | 2 +- examples/http-client-name-api/src/index.js | 2 +- examples/http-client-upload-file/index.html | 9 +- examples/http-client-upload-file/package.json | 2 +- examples/ipfs-client-add-files/index.html | 24 +- examples/ipfs-client-add-files/package.json | 2 +- examples/ipfs-client-add-files/src/app.js | 2 +- examples/types-use-ipfs-from-ts/package.json | 3 +- .../types-use-ipfs-from-typed-js/package.json | 3 +- 60 files changed, 406 insertions(+), 998 deletions(-) create mode 100644 examples/browser-ipns-publish/public/ipfs-logo.svg create mode 100644 examples/browser-readablestream/tests/test.mp4 diff --git a/examples/browser-add-readable-stream/index.html b/examples/browser-add-readable-stream/index.html index e6f46675..871b66c8 100644 --- a/examples/browser-add-readable-stream/index.html +++ b/examples/browser-add-readable-stream/index.html @@ -9,8 +9,13 @@ + - @@ -23,7 +28,7 @@ IPFS logo @@ -73,7 +78,17 @@

Add file

/>
For connecting to a local go-ipfs node, you can check its listening address similar to: @@ -167,11 +155,9 @@

-
- 3. Choose a key: -
+
3. Choose a key:
-
    +
Server Console
diff --git a/examples/browser-ipns-publish/package.json b/examples/browser-ipns-publish/package.json index 998651d4..d21f6aae 100644 --- a/examples/browser-ipns-publish/package.json +++ b/examples/browser-ipns-publish/package.json @@ -18,7 +18,7 @@ "build": "parcel build index.html --no-scope-hoist", "serve": "parcel serve index.html --open -p 8888", "start": "npm run serve", - "test:example": "npm run build && playwright test tests" + "test:example": "npm run build && playwright test tests --retries=3" }, "browserslist": "last 1 Chrome version", "dependencies": { @@ -28,6 +28,7 @@ "ipfs-utils": "^8.1.4", "ipns": "^0.13.3", "it-last": "^1.0.4", + "multihashes": "^4.0.2", "p-retry": "^4.2.0", "uint8arrays": "^2.1.6" }, diff --git a/examples/browser-ipns-publish/public/ipfs-logo.svg b/examples/browser-ipns-publish/public/ipfs-logo.svg new file mode 100644 index 00000000..f8633f62 --- /dev/null +++ b/examples/browser-ipns-publish/public/ipfs-logo.svg @@ -0,0 +1 @@ + diff --git a/examples/browser-ipns-publish/src/index.js b/examples/browser-ipns-publish/src/index.js index 8c50f26a..6d551fec 100644 --- a/examples/browser-ipns-publish/src/index.js +++ b/examples/browser-ipns-publish/src/index.js @@ -12,6 +12,7 @@ const { sha256 } = require('multiformats/hashes/sha2') const WS = require('libp2p-websockets') const transportKey = WS.prototype[Symbol.toStringTag] const filters = require('libp2p-websockets/src/filters') +const mh = require('multihashes') const { sleep, Logger, onEnterPress, catchAndLog } = require("./util"); @@ -204,9 +205,9 @@ async function main() { last(ipfsAPI.name.resolve(keys.id, { stream: false })); // save the pubsub topic to the server to make them listen // set up the topic from ipns key - let b58 = await IPFS.multihash.fromB58String(keys.id); + let b58 = await mh.fromB58String(keys.id); const ipnsKeys = ipns.getIdKeys(b58); - const topic = `${namespace}${uint8ArrayToString(ipnsKeys.routingKey, 'base64url')}`; + const topic = `${namespace}${uint8ArrayToString(ipnsKeys.routingKey._buf, 'base64url')}`; // subscribe and log on both nodes await subs(ipfsBrowser, topic, log); // browserLog diff --git a/examples/browser-ipns-publish/tests/test.js b/examples/browser-ipns-publish/tests/test.js index 1b5e2d4d..88fcddb5 100644 --- a/examples/browser-ipns-publish/tests/test.js +++ b/examples/browser-ipns-publish/tests/test.js @@ -1,138 +1,94 @@ -"use strict"; +'use strict' -const path = require("path"); -const execa = require("execa"); -const { createFactory } = require("ipfsd-ctl"); -const df = createFactory({ - ipfsHttpModule: require("ipfs-http-client"), - ipfsBin: require("go-ipfs").path(), - args: [ - "--enable-pubsub-experiment", - '--enable-namesys-pubsub' - ], - test: true -}); -const { startServer } = require("test-ipfs-example/utils"); -const pkg = require("../package.json"); +const { test, expect } = require('@playwright/test'); +const { playwright } = require('test-util-ipfs-example'); -async function testUI(url, apiAddr, peerAddr, topic) { - const proc = execa( - require.resolve("test-ipfs-example/node_modules/.bin/nightwatch"), - [ - "--config", - require.resolve("test-ipfs-example/nightwatch.conf.js"), - path.join(__dirname, "test.js"), - ], +// Setup +const play = test.extend({ + ...playwright.servers(), + ...playwright.daemons( { - cwd: path.resolve(__dirname, "../"), - env: { - ...process.env, - CI: true, - IPFS_EXAMPLE_TEST_URL: url, - IPFS_API_ADDRESS: apiAddr, - IPFS_PEER_ADDRESS: peerAddr, - IPFS_TOPIC: topic, - }, - all: true, - } - ); - proc.all.on("data", (data) => { - process.stdout.write(data); - }); - - await proc; -} - -async function runTest() { - const app = await startServer(__dirname); - const go = await df.spawn({ - ipfsOptions: { - config: { - Addresses: { - API: "/ip4/127.0.0.1/tcp/0", - Swarm: [ - "/ip4/127.0.0.1/tcp/0/ws" - ] - }, - API: { - HTTPHeaders: { - "Access-Control-Allow-Origin": [app.url], + ipfsHttpModule: require("ipfs-http-client"), + ipfsBin: require("go-ipfs").path(), + args: [ + "--enable-pubsub-experiment", + '--enable-namesys-pubsub' + ], + test: true + }, + {}, + [ + { + ipfsOptions: { + config: { + Addresses: { + API: "/ip4/127.0.0.1/tcp/0", + Swarm: [ + "/ip4/127.0.0.1/tcp/0/ws" + ] + }, + API: { + HTTPHeaders: { + "Access-Control-Allow-Origin": ["*"], + }, + }, }, }, }, - }, - }); + {} + ] + ) +}); - const go2 = await df.spawn(); - await go.api.swarm.connect(go2.api.peerId.addresses[0]); +play.describe('http ipns publish:', () => { + // DOM + const apiSelector = "#api-url:enabled"; + const nodeConnect = "#node-connect"; - const { cid } = await go.api.add(`Some data ${Date.now()}`) - const topic = `/ipfs/${cid}`; + const consoleDOM = "#console" + const peerAddrEnabled = "#peer-addr:enabled" - const peerAddr = go.api.peerId.addresses - .map(addr => addr.toString()) - .filter(addr => addr.includes("/ws/p2p/")) - .pop() + const peerConnect = "#peer-connect" + const topicEnabled = "#topic:enabled" - try { - await testUI( - app.url, - go.apiAddr, - peerAddr, - topic - ); - } finally { - await app.stop(); - await df.clean(); - } -} + const publish = "#publish" -module.exports = runTest; + play.beforeEach(async ({servers, page, daemons}) => { + await daemons[0].api.swarm.connect(await daemons[1].api.peerId.addresses[0]) -module.exports[pkg.name] = function (browser) { - const apiSelector = "#api-url:enabled"; + await page.goto(`http://localhost:${servers[0].port}/`); + }) - // connect to the API - browser - .url(process.env.IPFS_EXAMPLE_TEST_URL) - .waitForElementVisible(apiSelector) - .clearValue(apiSelector) - .setValue(apiSelector, process.env.IPFS_API_ADDRESS) - .pause(1000) - .click("#node-connect"); + play('should connect to IPFS node and publish a file via ipns', async ({ page, daemons}) => { + const goNode = daemons[0]; + const apiAddress = goNode.apiAddr.toString(); - browser.expect - .element("#console") - .text.to.contain(`Connecting to ${process.env.IPFS_API_ADDRESS}\nSuccess!`); + const { cid } = await goNode.api.add(`Some data ${Date.now()}`) + const topic = `/ipfs/${cid}`; - // connect via websocket - const peerAddrSelector = "#peer-addr:enabled"; - browser - .waitForElementVisible(peerAddrSelector) - .clearValue(peerAddrSelector) - .setValue(peerAddrSelector, process.env.IPFS_PEER_ADDRESS) - .pause(1000) - .click("#peer-connect"); + const peerAddr = goNode.api.peerId.addresses + .map(addr => addr.toString()) + .filter(addr => addr.includes("/ws/p2p/")) + .pop() - browser.expect - .element("#console") - .text.to.contain( - `Connecting to peer ${process.env.IPFS_PEER_ADDRESS}\nSuccess!` - ); + await page.waitForSelector(apiSelector); + await page.fill(apiSelector, apiAddress); + await page.click(nodeConnect); + await page.waitForSelector(`${consoleDOM}:has-text('Connecting to ${apiAddress}')`); - // publish to IPNS - const publishSelector = "#topic:enabled"; - browser - .waitForElementVisible(publishSelector) - .clearValue(publishSelector) - .setValue(publishSelector, process.env.IPFS_TOPIC) - .pause(1000) - .click("#publish"); + await page.waitForSelector(peerAddrEnabled); + await page.fill(peerAddrEnabled, peerAddr); + await page.click(peerConnect); + await page.waitForSelector(`${consoleDOM}:has-text('Connecting to peer ${peerAddr}')`); - browser.expect.element("#console").text.to.contain('Publish to IPNS'); - browser.expect.element("#console").text.to.contain('Initial Resolve'); - browser.expect.element("#console").text.to.contain('Published'); - browser.expect.element("#console").text.to.contain(`IPNS Publish Success!`); + await page.waitForSelector(topicEnabled); + await page.fill(topicEnabled, topic); + await page.click(publish); + await page.waitForSelector(`${consoleDOM}:has-text('IPNS Publish Success!')`); - browser.end(); -}; + const consoleContent = await page.textContent(consoleDOM) + expect(consoleContent).toContain('Publish to IPNS') + expect(consoleContent).toContain('Initial Resolve') + expect(consoleContent).toContain('Published') + }); +}); diff --git a/examples/browser-mfs/index.html b/examples/browser-mfs/index.html index 79c79e2b..02696334 100644 --- a/examples/browser-mfs/index.html +++ b/examples/browser-mfs/index.html @@ -9,7 +9,7 @@ - +
{ listFiles(container, files, '') } -module.exports = { +export { getSelected, updateTree } diff --git a/examples/browser-mfs/src/forms.js b/examples/browser-mfs/src/forms.js index 1af7552d..a35432f3 100644 --- a/examples/browser-mfs/src/forms.js +++ b/examples/browser-mfs/src/forms.js @@ -167,7 +167,7 @@ const readForm = (onRead) => { button.disabled = false } -module.exports = { +export { mkdirForm, mvForm, rmForm, diff --git a/examples/browser-mfs/src/index.js b/examples/browser-mfs/src/index.js index e83c8ea2..6e3a7cc1 100644 --- a/examples/browser-mfs/src/index.js +++ b/examples/browser-mfs/src/index.js @@ -2,15 +2,15 @@ /* eslint-env browser */ -const { +import { dragDrop, log, bufferToArrayBuffer -} = require('./utils') -const { +} from './utils' +import { updateTree -} = require('./filetree') -const { +} from './filetree' +import { mvForm, mkdirForm, rmForm, @@ -18,11 +18,11 @@ const { statForm, readForm, hideForms -} = require('./forms') -const mime = require('mime-sniffer') +} from './forms' +import mime from 'mime-sniffer' /** @type {import('ipfs-core-types/src/index').IPFS} IPFS */ -const IPFS = require('ipfs'); +import IPFS from 'ipfs' document.addEventListener('DOMContentLoaded', async () => { const ipfs = await IPFS.create({ diff --git a/examples/browser-mfs/src/utils.js b/examples/browser-mfs/src/utils.js index 5499a067..5cdb66a1 100644 --- a/examples/browser-mfs/src/utils.js +++ b/examples/browser-mfs/src/utils.js @@ -84,7 +84,7 @@ const bufferToArrayBuffer = (buffer) => { return ab } -module.exports = { +export { log, dragDrop, createNode, diff --git a/examples/browser-nextjs/package.json b/examples/browser-nextjs/package.json index a5f34e32..18267949 100644 --- a/examples/browser-nextjs/package.json +++ b/examples/browser-nextjs/package.json @@ -9,7 +9,7 @@ "serve": "npm run dev", "start": "next start", "lint": "next lint", - "test:example": "npm run build && playwright test tests" + "test:example": "npm run build && playwright test tests --retries=3" }, "dependencies": { "ipfs": "^0.57.0", diff --git a/examples/browser-parceljs/index.html b/examples/browser-parceljs/index.html index 794d137c..b936bd5e 100644 --- a/examples/browser-parceljs/index.html +++ b/examples/browser-parceljs/index.html @@ -9,12 +9,17 @@ + - - +
@@ -22,7 +27,7 @@ IPFS logo @@ -53,7 +58,17 @@

Add data to IPFS from the browser

/> diff --git a/examples/browser-readablestream/package.json b/examples/browser-readablestream/package.json index 4115b2cf..8f23c7f8 100644 --- a/examples/browser-readablestream/package.json +++ b/examples/browser-readablestream/package.json @@ -10,7 +10,7 @@ "build": "parcel build index.html --no-scope-hoist", "serve": "parcel serve index.html --open -p 8888", "start": "npm run serve", - "test:example": "npm run build && playwright test tests" + "test:example": "npm run build && playwright test tests --retries=3" }, "browserslist": "last 1 Chrome version", "dependencies": { diff --git a/examples/browser-readablestream/src/index.js b/examples/browser-readablestream/src/index.js index 584ac7d1..8eea177b 100644 --- a/examples/browser-readablestream/src/index.js +++ b/examples/browser-readablestream/src/index.js @@ -1,12 +1,12 @@ -const Ipfs = require('ipfs') -const VideoStream = require('videostream') -const toStream = require('it-to-stream') -const { +import Ipfs from 'ipfs' +import VideoStream from 'videostream' +import toStream from 'it-to-stream' +import { dragDrop, statusMessages, createVideoElement, log -} = require('./utils') +} from './utils' const App = async () => { // DOM diff --git a/examples/browser-readablestream/src/utils.js b/examples/browser-readablestream/src/utils.js index 049aec5a..4e80b9fe 100644 --- a/examples/browser-readablestream/src/utils.js +++ b/examples/browser-readablestream/src/utils.js @@ -134,7 +134,7 @@ const createVideoElement = () => { return videoElement } -module.exports = { +export { log, dragDrop, createVideoElement, diff --git a/examples/browser-readablestream/tests/test.js b/examples/browser-readablestream/tests/test.js index ae39aa22..ea8c1ff4 100644 --- a/examples/browser-readablestream/tests/test.js +++ b/examples/browser-readablestream/tests/test.js @@ -2,6 +2,7 @@ const { test, expect } = require('@playwright/test'); const { playwright } = require('test-util-ipfs-example'); +const fs = require('fs'); // Setup const play = test.extend({ @@ -12,6 +13,8 @@ play.describe('video readable stream:', () => { // DOM const output = "#output" const container = "#container" + const cid = "#cid" + const goBtn = "#gobutton" play.beforeEach(async ({servers, page}) => { await page.goto(`http://localhost:${servers[0].port}/`); @@ -19,11 +22,21 @@ play.describe('video readable stream:', () => { play('should properly initialized a IPFS node and play an uploaded .mp4', async ({ page }) => { await page.textContent('#output:has-text("IPFS: Ready")') + await page.waitForSelector(container); + const buffer = fs.readFileSync(`${__dirname}/test.mp4`) - await page.waitForSelector(container) + await page.evaluateHandle(([el, buffer]) => { + function toArrayBuffer(buf) { + var ab = new ArrayBuffer(buf.length); + var view = new Uint8Array(ab); + for (var i = 0; i < buf.length; ++i) { + view[i] = buf[i]; + } + return view; + } - await page.evaluateHandle((el) => { const container = document.querySelector(el) + const contentFile = toArrayBuffer(buffer) // fake dropping a file container.ondrop({ @@ -31,754 +44,23 @@ play.describe('video readable stream:', () => { dataTransfer: { items: [{ kind: 'file', + type: "video/mp4", getAsFile: () => { - // actually an .mp4 file, believe it or not - return [ - 0x00, 0x00, 0x00, 0x20, 0x66, 0x74, 0x79, 0x70, - 0x69, 0x73, 0x6f, 0x6d, 0x00, 0x00, 0x02, 0x00, - 0x69, 0x73, 0x6f, 0x6d, 0x69, 0x73, 0x6f, 0x32, - 0x61, 0x76, 0x63, 0x31, 0x6d, 0x70, 0x34, 0x31, - 0x00, 0x00, 0x00, 0x08, 0x66, 0x72, 0x65, 0x65, - 0x00, 0x00, 0x0c, 0x0e, 0x6d, 0x64, 0x61, 0x74, - 0x00, 0x00, 0x02, 0xae, 0x06, 0x05, 0xff, 0xff, - 0xaa, 0xdc, 0x45, 0xe9, 0xbd, 0xe6, 0xd9, 0x48, - 0xb7, 0x96, 0x2c, 0xd8, 0x20, 0xd9, 0x23, 0xee, - 0xef, 0x78, 0x32, 0x36, 0x34, 0x20, 0x2d, 0x20, - 0x63, 0x6f, 0x72, 0x65, 0x20, 0x31, 0x35, 0x35, - 0x20, 0x72, 0x32, 0x39, 0x31, 0x37, 0x20, 0x30, - 0x61, 0x38, 0x34, 0x64, 0x39, 0x38, 0x20, 0x2d, - 0x20, 0x48, 0x2e, 0x32, 0x36, 0x34, 0x2f, 0x4d, - 0x50, 0x45, 0x47, 0x2d, 0x34, 0x20, 0x41, 0x56, - 0x43, 0x20, 0x63, 0x6f, 0x64, 0x65, 0x63, 0x20, - 0x2d, 0x20, 0x43, 0x6f, 0x70, 0x79, 0x6c, 0x65, - 0x66, 0x74, 0x20, 0x32, 0x30, 0x30, 0x33, 0x2d, - 0x32, 0x30, 0x31, 0x38, 0x20, 0x2d, 0x20, 0x68, - 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, - 0x77, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x6c, - 0x61, 0x6e, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x78, - 0x32, 0x36, 0x34, 0x2e, 0x68, 0x74, 0x6d, 0x6c, - 0x20, 0x2d, 0x20, 0x6f, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x3a, 0x20, 0x63, 0x61, 0x62, 0x61, - 0x63, 0x3d, 0x31, 0x20, 0x72, 0x65, 0x66, 0x3d, - 0x33, 0x20, 0x64, 0x65, 0x62, 0x6c, 0x6f, 0x63, - 0x6b, 0x3d, 0x31, 0x3a, 0x30, 0x3a, 0x30, 0x20, - 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x65, 0x3d, - 0x30, 0x78, 0x33, 0x3a, 0x30, 0x78, 0x31, 0x31, - 0x33, 0x20, 0x6d, 0x65, 0x3d, 0x68, 0x65, 0x78, - 0x20, 0x73, 0x75, 0x62, 0x6d, 0x65, 0x3d, 0x37, - 0x20, 0x70, 0x73, 0x79, 0x3d, 0x31, 0x20, 0x70, - 0x73, 0x79, 0x5f, 0x72, 0x64, 0x3d, 0x31, 0x2e, - 0x30, 0x30, 0x3a, 0x30, 0x2e, 0x30, 0x30, 0x20, - 0x6d, 0x69, 0x78, 0x65, 0x64, 0x5f, 0x72, 0x65, - 0x66, 0x3d, 0x31, 0x20, 0x6d, 0x65, 0x5f, 0x72, - 0x61, 0x6e, 0x67, 0x65, 0x3d, 0x31, 0x36, 0x20, - 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x61, 0x5f, 0x6d, - 0x65, 0x3d, 0x31, 0x20, 0x74, 0x72, 0x65, 0x6c, - 0x6c, 0x69, 0x73, 0x3d, 0x31, 0x20, 0x38, 0x78, - 0x38, 0x64, 0x63, 0x74, 0x3d, 0x31, 0x20, 0x63, - 0x71, 0x6d, 0x3d, 0x30, 0x20, 0x64, 0x65, 0x61, - 0x64, 0x7a, 0x6f, 0x6e, 0x65, 0x3d, 0x32, 0x31, - 0x2c, 0x31, 0x31, 0x20, 0x66, 0x61, 0x73, 0x74, - 0x5f, 0x70, 0x73, 0x6b, 0x69, 0x70, 0x3d, 0x31, - 0x20, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x61, 0x5f, - 0x71, 0x70, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, - 0x74, 0x3d, 0x2d, 0x32, 0x20, 0x74, 0x68, 0x72, - 0x65, 0x61, 0x64, 0x73, 0x3d, 0x31, 0x20, 0x6c, - 0x6f, 0x6f, 0x6b, 0x61, 0x68, 0x65, 0x61, 0x64, - 0x5f, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x73, - 0x3d, 0x31, 0x20, 0x73, 0x6c, 0x69, 0x63, 0x65, - 0x64, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, - 0x73, 0x3d, 0x30, 0x20, 0x6e, 0x72, 0x3d, 0x30, - 0x20, 0x64, 0x65, 0x63, 0x69, 0x6d, 0x61, 0x74, - 0x65, 0x3d, 0x31, 0x20, 0x69, 0x6e, 0x74, 0x65, - 0x72, 0x6c, 0x61, 0x63, 0x65, 0x64, 0x3d, 0x30, - 0x20, 0x62, 0x6c, 0x75, 0x72, 0x61, 0x79, 0x5f, - 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x74, 0x3d, 0x30, - 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x61, - 0x69, 0x6e, 0x65, 0x64, 0x5f, 0x69, 0x6e, 0x74, - 0x72, 0x61, 0x3d, 0x30, 0x20, 0x62, 0x66, 0x72, - 0x61, 0x6d, 0x65, 0x73, 0x3d, 0x33, 0x20, 0x62, - 0x5f, 0x70, 0x79, 0x72, 0x61, 0x6d, 0x69, 0x64, - 0x3d, 0x32, 0x20, 0x62, 0x5f, 0x61, 0x64, 0x61, - 0x70, 0x74, 0x3d, 0x31, 0x20, 0x62, 0x5f, 0x62, - 0x69, 0x61, 0x73, 0x3d, 0x30, 0x20, 0x64, 0x69, - 0x72, 0x65, 0x63, 0x74, 0x3d, 0x31, 0x20, 0x77, - 0x65, 0x69, 0x67, 0x68, 0x74, 0x62, 0x3d, 0x31, - 0x20, 0x6f, 0x70, 0x65, 0x6e, 0x5f, 0x67, 0x6f, - 0x70, 0x3d, 0x30, 0x20, 0x77, 0x65, 0x69, 0x67, - 0x68, 0x74, 0x70, 0x3d, 0x32, 0x20, 0x6b, 0x65, - 0x79, 0x69, 0x6e, 0x74, 0x3d, 0x32, 0x35, 0x30, - 0x20, 0x6b, 0x65, 0x79, 0x69, 0x6e, 0x74, 0x5f, - 0x6d, 0x69, 0x6e, 0x3d, 0x32, 0x35, 0x20, 0x73, - 0x63, 0x65, 0x6e, 0x65, 0x63, 0x75, 0x74, 0x3d, - 0x34, 0x30, 0x20, 0x69, 0x6e, 0x74, 0x72, 0x61, - 0x5f, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, - 0x3d, 0x30, 0x20, 0x72, 0x63, 0x5f, 0x6c, 0x6f, - 0x6f, 0x6b, 0x61, 0x68, 0x65, 0x61, 0x64, 0x3d, - 0x34, 0x30, 0x20, 0x72, 0x63, 0x3d, 0x63, 0x72, - 0x66, 0x20, 0x6d, 0x62, 0x74, 0x72, 0x65, 0x65, - 0x3d, 0x31, 0x20, 0x63, 0x72, 0x66, 0x3d, 0x32, - 0x33, 0x2e, 0x30, 0x20, 0x71, 0x63, 0x6f, 0x6d, - 0x70, 0x3d, 0x30, 0x2e, 0x36, 0x30, 0x20, 0x71, - 0x70, 0x6d, 0x69, 0x6e, 0x3d, 0x30, 0x20, 0x71, - 0x70, 0x6d, 0x61, 0x78, 0x3d, 0x36, 0x39, 0x20, - 0x71, 0x70, 0x73, 0x74, 0x65, 0x70, 0x3d, 0x34, - 0x20, 0x69, 0x70, 0x5f, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x3d, 0x31, 0x2e, 0x34, 0x30, 0x20, 0x61, - 0x71, 0x3d, 0x31, 0x3a, 0x31, 0x2e, 0x30, 0x30, - 0x00, 0x80, 0x00, 0x00, 0x00, 0x20, 0x65, 0x88, - 0x84, 0x00, 0xff, 0x70, 0x23, 0x86, 0xe6, 0xd5, - 0xc6, 0x98, 0xae, 0xff, 0x28, 0x19, 0xe0, 0x00, - 0x17, 0x73, 0xa5, 0x8f, 0x1b, 0x73, 0x2a, 0xd3, - 0xef, 0x38, 0x69, 0x38, 0xb7, 0x19, 0x00, 0x00, - 0x00, 0x08, 0x41, 0x9a, 0x24, 0x6c, 0x4f, 0xff, - 0xfe, 0xc0, 0x00, 0x00, 0x00, 0x08, 0x41, 0x9e, - 0x42, 0x78, 0x8a, 0xff, 0xe6, 0x81, 0x00, 0x00, - 0x00, 0x08, 0x01, 0x9e, 0x61, 0x74, 0x47, 0x7f, - 0xe8, 0x80, 0x00, 0x00, 0x00, 0x08, 0x01, 0x9e, - 0x63, 0x6a, 0x47, 0x7f, 0xe8, 0x81, 0x00, 0x00, - 0x00, 0x0d, 0x41, 0x9a, 0x68, 0x49, 0xa8, 0x41, - 0x68, 0x99, 0x4c, 0x09, 0xff, 0xfe, 0xc1, 0x00, - 0x00, 0x00, 0x09, 0x41, 0x9e, 0x86, 0x45, 0x11, - 0x2c, 0x57, 0xe6, 0x81, 0x00, 0x00, 0x00, 0x08, - 0x01, 0x9e, 0xa5, 0x74, 0x47, 0x7f, 0xe8, 0x81, - 0x00, 0x00, 0x00, 0x08, 0x01, 0x9e, 0xa7, 0x6a, - 0x47, 0x7f, 0xe8, 0x80, 0x00, 0x00, 0x00, 0x0d, - 0x41, 0x9a, 0xac, 0x49, 0xa8, 0x41, 0x6c, 0x99, - 0x4c, 0x09, 0xff, 0xfe, 0xc0, 0x00, 0x00, 0x00, - 0x09, 0x41, 0x9e, 0xca, 0x45, 0x15, 0x2c, 0x57, - 0xe6, 0x81, 0x00, 0x00, 0x00, 0x08, 0x01, 0x9e, - 0xe9, 0x74, 0x47, 0x7f, 0xe8, 0x80, 0x00, 0x00, - 0x00, 0x08, 0x01, 0x9e, 0xeb, 0x6a, 0x47, 0x7f, - 0xe8, 0x80, 0x00, 0x00, 0x00, 0x0d, 0x41, 0x9a, - 0xf0, 0x49, 0xa8, 0x41, 0x6c, 0x99, 0x4c, 0x09, - 0xff, 0xfe, 0xc1, 0x00, 0x00, 0x00, 0x09, 0x41, - 0x9f, 0x0e, 0x45, 0x15, 0x2c, 0x57, 0xe6, 0x81, - 0x00, 0x00, 0x00, 0x08, 0x01, 0x9f, 0x2d, 0x74, - 0x47, 0x7f, 0xe8, 0x81, 0x00, 0x00, 0x00, 0x08, - 0x01, 0x9f, 0x2f, 0x6a, 0x47, 0x7f, 0xe8, 0x80, - 0x00, 0x00, 0x00, 0x0d, 0x41, 0x9b, 0x34, 0x49, - 0xa8, 0x41, 0x6c, 0x99, 0x4c, 0x09, 0xff, 0xfe, - 0xc0, 0x00, 0x00, 0x00, 0x09, 0x41, 0x9f, 0x52, - 0x45, 0x15, 0x2c, 0x57, 0xe6, 0x81, 0x00, 0x00, - 0x00, 0x08, 0x01, 0x9f, 0x71, 0x74, 0x47, 0x7f, - 0xe8, 0x80, 0x00, 0x00, 0x00, 0x08, 0x01, 0x9f, - 0x73, 0x6a, 0x47, 0x7f, 0xe8, 0x80, 0x00, 0x00, - 0x00, 0x0d, 0x41, 0x9b, 0x78, 0x49, 0xa8, 0x41, - 0x6c, 0x99, 0x4c, 0x09, 0xff, 0xfe, 0xc1, 0x00, - 0x00, 0x00, 0x09, 0x41, 0x9f, 0x96, 0x45, 0x15, - 0x2c, 0x57, 0xe6, 0x80, 0x00, 0x00, 0x00, 0x08, - 0x01, 0x9f, 0xb5, 0x74, 0x47, 0x7f, 0xe8, 0x81, - 0x00, 0x00, 0x00, 0x08, 0x01, 0x9f, 0xb7, 0x6a, - 0x47, 0x7f, 0xe8, 0x81, 0x00, 0x00, 0x00, 0x0d, - 0x41, 0x9b, 0xbc, 0x49, 0xa8, 0x41, 0x6c, 0x99, - 0x4c, 0x09, 0xff, 0xfe, 0xc0, 0x00, 0x00, 0x00, - 0x09, 0x41, 0x9f, 0xda, 0x45, 0x15, 0x2c, 0x57, - 0xe6, 0x81, 0x00, 0x00, 0x00, 0x08, 0x01, 0x9f, - 0xf9, 0x74, 0x47, 0x7f, 0xe8, 0x80, 0x00, 0x00, - 0x00, 0x08, 0x01, 0x9f, 0xfb, 0x6a, 0x47, 0x7f, - 0xe8, 0x81, 0x00, 0x00, 0x00, 0x0d, 0x41, 0x9b, - 0xe0, 0x49, 0xa8, 0x41, 0x6c, 0x99, 0x4c, 0x09, - 0x7f, 0xfe, 0xc1, 0x00, 0x00, 0x00, 0x09, 0x41, - 0x9e, 0x1e, 0x45, 0x15, 0x2c, 0x57, 0xe6, 0x80, - 0x00, 0x00, 0x00, 0x08, 0x01, 0x9e, 0x3d, 0x74, - 0x47, 0x7f, 0xe8, 0x80, 0x00, 0x00, 0x00, 0x08, - 0x01, 0x9e, 0x3f, 0x6a, 0x47, 0x7f, 0xe8, 0x81, - 0x00, 0x00, 0x00, 0x0d, 0x41, 0x9a, 0x24, 0x49, - 0xa8, 0x41, 0x6c, 0x99, 0x4c, 0x09, 0x7f, 0xfe, - 0xc0, 0x00, 0x00, 0x00, 0x09, 0x41, 0x9e, 0x42, - 0x45, 0x15, 0x2c, 0x57, 0xe6, 0x81, 0x00, 0x00, - 0x00, 0x08, 0x01, 0x9e, 0x61, 0x74, 0x47, 0x7f, - 0xe8, 0x80, 0x00, 0x00, 0x00, 0x08, 0x01, 0x9e, - 0x63, 0x6a, 0x47, 0x7f, 0xe8, 0x81, 0x00, 0x00, - 0x00, 0x10, 0x41, 0x9a, 0x68, 0x49, 0xa8, 0x41, - 0x6c, 0x99, 0x4c, 0x09, 0x7f, 0x51, 0x88, 0xd2, - 0xf3, 0xc1, 0x00, 0x00, 0x00, 0x09, 0x41, 0x9e, - 0x86, 0x45, 0x15, 0x2c, 0x67, 0xe7, 0x81, 0x00, - 0x00, 0x00, 0x08, 0x01, 0x9e, 0xa5, 0x74, 0x47, - 0x7f, 0xe8, 0x81, 0x00, 0x00, 0x00, 0x09, 0x01, - 0x9e, 0xa7, 0x6a, 0x47, 0x7f, 0xec, 0x0d, 0xc0, - 0x00, 0x00, 0x00, 0x10, 0x41, 0x9a, 0xac, 0x49, - 0xa8, 0x41, 0x6c, 0x99, 0x4c, 0x09, 0x7f, 0x55, - 0xea, 0xc9, 0x7c, 0xf8, 0x00, 0x00, 0x00, 0x09, - 0x41, 0x9e, 0xca, 0x45, 0x15, 0x2c, 0x67, 0xe7, - 0x81, 0x00, 0x00, 0x00, 0x08, 0x01, 0x9e, 0xe9, - 0x74, 0x47, 0x7f, 0xe8, 0x80, 0x00, 0x00, 0x00, - 0x09, 0x01, 0x9e, 0xeb, 0x6a, 0x47, 0x7f, 0xec, - 0x0d, 0xc0, 0x00, 0x00, 0x00, 0x0e, 0x41, 0x9a, - 0xef, 0x49, 0xa8, 0x41, 0x6c, 0x99, 0x4c, 0x0b, - 0xff, 0xd6, 0xaf, 0x39, 0x00, 0x00, 0x00, 0x09, - 0x41, 0x9f, 0x0d, 0x45, 0x15, 0x2c, 0x67, 0xe7, - 0x81, 0x00, 0x00, 0x00, 0x08, 0x01, 0x9f, 0x2e, - 0x6a, 0x47, 0x7f, 0xe8, 0x81, 0x00, 0x00, 0x00, - 0x0d, 0x41, 0x9b, 0x30, 0x49, 0xa8, 0x41, 0x6c, - 0x99, 0x4c, 0x09, 0x7f, 0xfe, 0xc0, 0x00, 0x00, - 0x00, 0x16, 0x41, 0x9b, 0x52, 0x49, 0xe1, 0x0a, - 0x52, 0x65, 0x30, 0x51, 0x52, 0xcb, 0xff, 0x55, - 0xdd, 0xad, 0xfa, 0x0e, 0x9c, 0xf9, 0xad, 0x70, - 0x00, 0x00, 0x00, 0x08, 0x01, 0x9f, 0x71, 0x6a, - 0x47, 0x7f, 0xe8, 0x81, 0x00, 0x00, 0x00, 0x10, - 0x41, 0x9b, 0x73, 0x49, 0xe1, 0x0e, 0x89, 0x94, - 0xc0, 0x97, 0xff, 0x56, 0x3a, 0xe0, 0xee, 0x60, - 0x00, 0x00, 0x00, 0x0c, 0x41, 0x9b, 0x94, 0x49, - 0xe1, 0x0f, 0x26, 0x53, 0x02, 0x5f, 0xfe, 0xc0, - 0x00, 0x00, 0x00, 0x15, 0x41, 0x9b, 0xb5, 0x49, - 0xe1, 0x0f, 0x26, 0x53, 0x02, 0x5f, 0x51, 0x77, - 0xfc, 0x36, 0xb3, 0xf2, 0xdb, 0x92, 0x30, 0x53, - 0x39, 0x00, 0x00, 0x00, 0x0f, 0x41, 0x9b, 0xd9, - 0x49, 0xe1, 0x0f, 0x26, 0x53, 0x02, 0x5f, 0x56, - 0x1f, 0x73, 0xea, 0x80, 0x00, 0x00, 0x00, 0x09, - 0x41, 0x9f, 0xf7, 0x45, 0x11, 0x3c, 0x57, 0xe6, - 0x81, 0x00, 0x00, 0x00, 0x08, 0x01, 0x9e, 0x16, - 0x74, 0x47, 0x7f, 0xe8, 0x81, 0x00, 0x00, 0x00, - 0x08, 0x01, 0x9e, 0x18, 0x6a, 0x47, 0x7f, 0xe8, - 0x80, 0x00, 0x00, 0x00, 0x0e, 0x41, 0x9a, 0x1a, - 0x49, 0xa8, 0x41, 0x68, 0x99, 0x4c, 0x09, 0x7f, - 0x5b, 0x6f, 0x6d, 0x00, 0x00, 0x00, 0x0d, 0x41, - 0x9a, 0x3b, 0x49, 0xe1, 0x0a, 0x52, 0x65, 0x30, - 0x25, 0xff, 0xfe, 0xc0, 0x00, 0x00, 0x00, 0x17, - 0x41, 0x9a, 0x5d, 0x4b, 0xe1, 0x08, 0x43, 0xa2, - 0x1b, 0x02, 0x15, 0x02, 0x13, 0x01, 0x4d, 0x13, - 0x2f, 0x75, 0x56, 0x14, 0x5b, 0x6b, 0x19, 0x00, - 0x00, 0x00, 0x08, 0x01, 0x9e, 0x7c, 0x6a, 0x47, - 0x7f, 0xe8, 0x81, 0x00, 0x00, 0x00, 0x0e, 0x41, - 0x9a, 0x61, 0x49, 0xe1, 0x0f, 0x26, 0x53, 0x02, - 0x5f, 0x4a, 0x84, 0x28, 0xe0, 0x00, 0x00, 0x00, - 0x09, 0x41, 0x9e, 0x9f, 0x45, 0x11, 0x3c, 0x57, - 0xe6, 0x80, 0x00, 0x00, 0x00, 0x08, 0x01, 0x9e, - 0xbe, 0x74, 0x47, 0x7f, 0xe8, 0x81, 0x00, 0x00, - 0x00, 0x08, 0x01, 0x9e, 0xa0, 0x6a, 0x47, 0x7f, - 0xe8, 0x80, 0x00, 0x00, 0x00, 0x0d, 0x41, 0x9a, - 0xa5, 0x49, 0xa8, 0x41, 0x68, 0x99, 0x4c, 0x09, - 0x7f, 0xfe, 0xc1, 0x00, 0x00, 0x00, 0x09, 0x41, - 0x9e, 0xc3, 0x45, 0x11, 0x2c, 0x67, 0xe7, 0x80, - 0x00, 0x00, 0x00, 0x08, 0x01, 0x9e, 0xe2, 0x74, - 0x47, 0x7f, 0xe8, 0x81, 0x00, 0x00, 0x00, 0x08, - 0x01, 0x9e, 0xe4, 0x6a, 0x47, 0x7f, 0xe8, 0x81, - 0x00, 0x00, 0x00, 0x0d, 0x41, 0x9a, 0xe9, 0x49, - 0xa8, 0x41, 0x6c, 0x99, 0x4c, 0x0b, 0xff, 0x86, - 0x81, 0x00, 0x00, 0x00, 0x09, 0x41, 0x9f, 0x07, - 0x45, 0x15, 0x2c, 0x67, 0xe7, 0x81, 0x00, 0x00, - 0x00, 0x08, 0x01, 0x9f, 0x26, 0x74, 0x47, 0x7f, - 0xe8, 0x80, 0x00, 0x00, 0x00, 0x08, 0x01, 0x9f, - 0x28, 0x6a, 0x47, 0x7f, 0xe8, 0x80, 0x00, 0x00, - 0x00, 0x14, 0x41, 0x9b, 0x2d, 0x4b, 0xa8, 0x42, - 0x10, 0x5b, 0x21, 0xf0, 0x3f, 0x50, 0x3f, 0x30, - 0x09, 0x7f, 0x3d, 0x19, 0x01, 0xd9, 0x00, 0x00, - 0x00, 0x0a, 0x41, 0x9f, 0x4b, 0x45, 0x15, 0x2c, - 0x57, 0xf3, 0xc3, 0xa0, 0x00, 0x00, 0x00, 0x08, - 0x01, 0x9f, 0x6a, 0x74, 0x47, 0x7f, 0xe8, 0x80, - 0x00, 0x00, 0x00, 0x08, 0x01, 0x9f, 0x6c, 0x6a, - 0x47, 0x7f, 0xe8, 0x81, 0x00, 0x00, 0x00, 0x1f, - 0x41, 0x9b, 0x6f, 0x4b, 0xa8, 0x42, 0x10, 0x5b, - 0x21, 0xf0, 0x3f, 0x34, 0x0f, 0xc5, 0x01, 0x44, - 0xcb, 0xff, 0x51, 0x74, 0x3f, 0xe6, 0xc8, 0xfd, - 0xa4, 0x73, 0x32, 0x04, 0xa6, 0xd4, 0x61, 0x00, - 0x00, 0x00, 0x08, 0x01, 0x9f, 0x8e, 0x6a, 0x47, - 0x7f, 0xe8, 0x81, 0x00, 0x00, 0x00, 0x11, 0x41, - 0x9b, 0x92, 0x49, 0xe1, 0x0a, 0x52, 0x65, 0x30, - 0x25, 0xff, 0x4a, 0xfd, 0xaa, 0xeb, 0x40, 0xc0, - 0x00, 0x00, 0x00, 0x09, 0x41, 0x9f, 0xb0, 0x45, - 0x34, 0x4c, 0x57, 0xe6, 0x80, 0x00, 0x00, 0x00, - 0x08, 0x01, 0x9f, 0xd1, 0x6a, 0x47, 0x7f, 0xe8, - 0x81, 0x00, 0x00, 0x00, 0x1b, 0x41, 0x9b, 0xd6, - 0x4b, 0xa8, 0x42, 0x10, 0x5a, 0x21, 0xf0, 0x10, - 0x44, 0x40, 0x41, 0x20, 0x09, 0xff, 0x49, 0xa3, - 0x49, 0x50, 0xd7, 0x64, 0xce, 0x71, 0x65, 0x80, - 0x00, 0x00, 0x00, 0x09, 0x41, 0x9f, 0xf4, 0x45, - 0x11, 0x2c, 0x57, 0xe6, 0x80, 0x00, 0x00, 0x00, - 0x08, 0x01, 0x9e, 0x13, 0x74, 0x47, 0x7f, 0xe8, - 0x81, 0x00, 0x00, 0x00, 0x08, 0x01, 0x9e, 0x15, - 0x6a, 0x47, 0x7f, 0xe8, 0x80, 0x00, 0x00, 0x00, - 0x13, 0x41, 0x9a, 0x19, 0x49, 0xa8, 0x41, 0x6c, - 0x99, 0x4c, 0x09, 0xff, 0x57, 0x90, 0x88, 0x48, - 0xec, 0x93, 0x77, 0x81, 0x00, 0x00, 0x00, 0x09, - 0x41, 0x9e, 0x37, 0x45, 0x15, 0x2c, 0x67, 0xe7, - 0x81, 0x00, 0x00, 0x00, 0x08, 0x01, 0x9e, 0x58, - 0x6a, 0x47, 0x7f, 0xe8, 0x80, 0x00, 0x00, 0x00, - 0x0f, 0x41, 0x9a, 0x5d, 0x49, 0xa8, 0x41, 0x6c, - 0x99, 0x4c, 0x09, 0xff, 0x59, 0x78, 0xfd, 0x91, - 0x00, 0x00, 0x00, 0x09, 0x41, 0x9e, 0x7b, 0x45, - 0x15, 0x2c, 0x57, 0xe6, 0x80, 0x00, 0x00, 0x00, - 0x08, 0x01, 0x9e, 0x9a, 0x74, 0x47, 0x7f, 0xe8, - 0x81, 0x00, 0x00, 0x00, 0x08, 0x01, 0x9e, 0x9c, - 0x6a, 0x47, 0x7f, 0xe8, 0x81, 0x00, 0x00, 0x00, - 0x0d, 0x41, 0x9a, 0x80, 0x49, 0xa8, 0x41, 0x6c, - 0x99, 0x4c, 0x09, 0xff, 0xfe, 0xc0, 0x00, 0x00, - 0x00, 0x09, 0x41, 0x9e, 0xbe, 0x45, 0x15, 0x2c, - 0x67, 0xe7, 0x80, 0x00, 0x00, 0x00, 0x08, 0x01, - 0x9e, 0xdf, 0x6a, 0x47, 0x7f, 0xe8, 0x81, 0x00, - 0x00, 0x00, 0x0d, 0x41, 0x9a, 0xc4, 0x49, 0xa8, - 0x41, 0x6c, 0x99, 0x4c, 0x09, 0xff, 0xfe, 0xc0, - 0x00, 0x00, 0x00, 0x09, 0x41, 0x9e, 0xe2, 0x45, - 0x15, 0x2c, 0x57, 0xe6, 0x81, 0x00, 0x00, 0x00, - 0x08, 0x01, 0x9f, 0x01, 0x74, 0x47, 0x7f, 0xe8, - 0x80, 0x00, 0x00, 0x00, 0x08, 0x01, 0x9f, 0x03, - 0x6a, 0x47, 0x7f, 0xe8, 0x81, 0x00, 0x00, 0x00, - 0x0d, 0x41, 0x9b, 0x08, 0x49, 0xa8, 0x41, 0x6c, - 0x99, 0x4c, 0x09, 0xff, 0xfe, 0xc1, 0x00, 0x00, - 0x00, 0x09, 0x41, 0x9f, 0x26, 0x45, 0x15, 0x2c, - 0x57, 0xe6, 0x81, 0x00, 0x00, 0x00, 0x08, 0x01, - 0x9f, 0x45, 0x74, 0x47, 0x7f, 0xe8, 0x81, 0x00, - 0x00, 0x00, 0x08, 0x01, 0x9f, 0x47, 0x6a, 0x47, - 0x7f, 0xe8, 0x80, 0x00, 0x00, 0x00, 0x0d, 0x41, - 0x9b, 0x4c, 0x49, 0xa8, 0x41, 0x6c, 0x99, 0x4c, - 0x09, 0xff, 0xfe, 0xc0, 0x00, 0x00, 0x00, 0x09, - 0x41, 0x9f, 0x6a, 0x45, 0x15, 0x2c, 0x57, 0xe6, - 0x81, 0x00, 0x00, 0x00, 0x08, 0x01, 0x9f, 0x89, - 0x74, 0x47, 0x7f, 0xe8, 0x80, 0x00, 0x00, 0x00, - 0x08, 0x01, 0x9f, 0x8b, 0x6a, 0x47, 0x7f, 0xe8, - 0x80, 0x00, 0x00, 0x00, 0x0d, 0x41, 0x9b, 0x90, - 0x49, 0xa8, 0x41, 0x6c, 0x99, 0x4c, 0x09, 0xff, - 0xfe, 0xc1, 0x00, 0x00, 0x00, 0x09, 0x41, 0x9f, - 0xae, 0x45, 0x15, 0x2c, 0x57, 0xe6, 0x81, 0x00, - 0x00, 0x00, 0x08, 0x01, 0x9f, 0xcd, 0x74, 0x47, - 0x7f, 0xe8, 0x81, 0x00, 0x00, 0x00, 0x08, 0x01, - 0x9f, 0xcf, 0x6a, 0x47, 0x7f, 0xe8, 0x80, 0x00, - 0x00, 0x00, 0x0d, 0x41, 0x9b, 0xd4, 0x49, 0xa8, - 0x41, 0x6c, 0x99, 0x4c, 0x09, 0xff, 0xfe, 0xc0, - 0x00, 0x00, 0x00, 0x09, 0x41, 0x9f, 0xf2, 0x45, - 0x15, 0x2c, 0x67, 0xe7, 0x81, 0x00, 0x00, 0x00, - 0x08, 0x01, 0x9e, 0x11, 0x74, 0x47, 0x7f, 0xe8, - 0x80, 0x00, 0x00, 0x00, 0x08, 0x01, 0x9e, 0x13, - 0x6a, 0x47, 0x7f, 0xe8, 0x80, 0x00, 0x00, 0x00, - 0x0d, 0x41, 0x9a, 0x18, 0x49, 0xa8, 0x41, 0x6c, - 0x99, 0x4c, 0x09, 0xff, 0xfe, 0xc1, 0x00, 0x00, - 0x00, 0x09, 0x41, 0x9e, 0x36, 0x45, 0x15, 0x2c, - 0x57, 0xe6, 0x80, 0x00, 0x00, 0x00, 0x08, 0x01, - 0x9e, 0x55, 0x74, 0x47, 0x7f, 0xe8, 0x81, 0x00, - 0x00, 0x00, 0x08, 0x01, 0x9e, 0x57, 0x6a, 0x47, - 0x7f, 0xe8, 0x81, 0x00, 0x00, 0x00, 0x0d, 0x41, - 0x9a, 0x5c, 0x49, 0xa8, 0x41, 0x6c, 0x99, 0x4c, - 0x09, 0xff, 0xfe, 0xc0, 0x00, 0x00, 0x00, 0x09, - 0x41, 0x9e, 0x7a, 0x45, 0x15, 0x2c, 0x57, 0xe6, - 0x81, 0x00, 0x00, 0x00, 0x08, 0x01, 0x9e, 0x99, - 0x74, 0x47, 0x7f, 0xe8, 0x80, 0x00, 0x00, 0x00, - 0x08, 0x01, 0x9e, 0x9b, 0x6a, 0x47, 0x7f, 0xe8, - 0x81, 0x00, 0x00, 0x00, 0x0d, 0x41, 0x9a, 0x80, - 0x49, 0xa8, 0x41, 0x6c, 0x99, 0x4c, 0x09, 0xff, - 0xfe, 0xc1, 0x00, 0x00, 0x00, 0x09, 0x41, 0x9e, - 0xbe, 0x45, 0x15, 0x2c, 0x57, 0xe6, 0x80, 0x00, - 0x00, 0x00, 0x08, 0x01, 0x9e, 0xdd, 0x74, 0x47, - 0x7f, 0xe8, 0x80, 0x00, 0x00, 0x00, 0x08, 0x01, - 0x9e, 0xdf, 0x6a, 0x47, 0x7f, 0xe8, 0x81, 0x00, - 0x00, 0x00, 0x0d, 0x41, 0x9a, 0xc4, 0x49, 0xa8, - 0x41, 0x6c, 0x99, 0x4c, 0x09, 0xff, 0xfe, 0xc0, - 0x00, 0x00, 0x00, 0x09, 0x41, 0x9e, 0xe2, 0x45, - 0x15, 0x2c, 0x67, 0xe7, 0x81, 0x00, 0x00, 0x00, - 0x08, 0x01, 0x9f, 0x01, 0x74, 0x47, 0x7f, 0xe8, - 0x80, 0x00, 0x00, 0x00, 0x08, 0x01, 0x9f, 0x03, - 0x6a, 0x47, 0x7f, 0xe8, 0x81, 0x00, 0x00, 0x00, - 0x0d, 0x41, 0x9b, 0x08, 0x49, 0xa8, 0x41, 0x6c, - 0x99, 0x4c, 0x09, 0xff, 0xfe, 0xc1, 0x00, 0x00, - 0x00, 0x09, 0x41, 0x9f, 0x26, 0x45, 0x15, 0x2c, - 0x57, 0xe6, 0x81, 0x00, 0x00, 0x00, 0x08, 0x01, - 0x9f, 0x45, 0x74, 0x47, 0x7f, 0xe8, 0x81, 0x00, - 0x00, 0x00, 0x08, 0x01, 0x9f, 0x47, 0x6a, 0x47, - 0x7f, 0xe8, 0x80, 0x00, 0x00, 0x00, 0x0d, 0x41, - 0x9b, 0x4c, 0x49, 0xa8, 0x41, 0x6c, 0x99, 0x4c, - 0x09, 0x7f, 0xfe, 0xc0, 0x00, 0x00, 0x00, 0x09, - 0x41, 0x9f, 0x6a, 0x45, 0x15, 0x2c, 0x57, 0xe6, - 0x81, 0x00, 0x00, 0x00, 0x08, 0x01, 0x9f, 0x89, - 0x74, 0x47, 0x7f, 0xe8, 0x80, 0x00, 0x00, 0x00, - 0x08, 0x01, 0x9f, 0x8b, 0x6a, 0x47, 0x7f, 0xe8, - 0x80, 0x00, 0x00, 0x00, 0x0d, 0x41, 0x9b, 0x90, - 0x49, 0xa8, 0x41, 0x6c, 0x99, 0x4c, 0x09, 0x7f, - 0xfe, 0xc1, 0x00, 0x00, 0x00, 0x09, 0x41, 0x9f, - 0xae, 0x45, 0x15, 0x2c, 0x57, 0xe6, 0x81, 0x00, - 0x00, 0x00, 0x08, 0x01, 0x9f, 0xcd, 0x74, 0x47, - 0x7f, 0xe8, 0x81, 0x00, 0x00, 0x00, 0x08, 0x01, - 0x9f, 0xcf, 0x6a, 0x47, 0x7f, 0xe8, 0x80, 0x00, - 0x00, 0x00, 0x0d, 0x41, 0x9b, 0xd4, 0x49, 0xa8, - 0x41, 0x6c, 0x99, 0x4c, 0x0b, 0xff, 0x86, 0x80, - 0x00, 0x00, 0x00, 0x09, 0x41, 0x9f, 0xf2, 0x45, - 0x15, 0x2c, 0x57, 0xe6, 0x81, 0x00, 0x00, 0x00, - 0x08, 0x01, 0x9e, 0x11, 0x74, 0x47, 0x7f, 0xe8, - 0x80, 0x00, 0x00, 0x00, 0x08, 0x01, 0x9e, 0x13, - 0x6a, 0x47, 0x7f, 0xe8, 0x80, 0x00, 0x00, 0x00, - 0x0d, 0x41, 0x9a, 0x18, 0x49, 0xa8, 0x41, 0x6c, - 0x99, 0x4c, 0x0f, 0xff, 0x92, 0x81, 0x00, 0x00, - 0x00, 0x09, 0x41, 0x9e, 0x36, 0x45, 0x15, 0x2c, - 0x57, 0xe6, 0x80, 0x00, 0x00, 0x00, 0x08, 0x01, - 0x9e, 0x55, 0x74, 0x47, 0x7f, 0xe8, 0x81, 0x00, - 0x00, 0x00, 0x08, 0x01, 0x9e, 0x57, 0x6a, 0x47, - 0x7f, 0xe8, 0x81, 0x00, 0x00, 0x00, 0x0d, 0x41, - 0x9a, 0x5c, 0x49, 0xa8, 0x41, 0x6c, 0x99, 0x4c, - 0x0a, 0xff, 0x97, 0x80, 0x00, 0x00, 0x00, 0x09, - 0x41, 0x9e, 0x7a, 0x45, 0x15, 0x2c, 0x57, 0xe6, - 0x81, 0x00, 0x00, 0x00, 0x08, 0x01, 0x9e, 0x99, - 0x74, 0x47, 0x7f, 0xe8, 0x80, 0x00, 0x00, 0x00, - 0x08, 0x01, 0x9e, 0x9b, 0x6a, 0x47, 0x7f, 0xe8, - 0x81, 0x00, 0x00, 0x00, 0x0d, 0x41, 0x9a, 0x80, - 0x49, 0xa8, 0x41, 0x6c, 0x99, 0x4c, 0x09, 0x3f, - 0x9c, 0x81, 0x00, 0x00, 0x00, 0x09, 0x41, 0x9e, - 0xbe, 0x45, 0x15, 0x2c, 0x57, 0xe6, 0x80, 0x00, - 0x00, 0x00, 0x08, 0x01, 0x9e, 0xdd, 0x74, 0x47, - 0x7f, 0xe8, 0x80, 0x00, 0x00, 0x00, 0x08, 0x01, - 0x9e, 0xdf, 0x6a, 0x47, 0x7f, 0xe8, 0x81, 0x00, - 0x00, 0x00, 0x0d, 0x41, 0x9a, 0xc4, 0x49, 0xa8, - 0x41, 0x6c, 0x99, 0x4c, 0x08, 0xaf, 0xb3, 0x80, - 0x00, 0x00, 0x00, 0x09, 0x41, 0x9e, 0xe2, 0x45, - 0x15, 0x2c, 0x57, 0xe6, 0x81, 0x00, 0x00, 0x00, - 0x08, 0x01, 0x9f, 0x01, 0x74, 0x47, 0x7f, 0xe8, - 0x80, 0x00, 0x00, 0x00, 0x08, 0x01, 0x9f, 0x03, - 0x6a, 0x47, 0x7f, 0xe8, 0x81, 0x00, 0x00, 0x00, - 0x0d, 0x41, 0x9b, 0x05, 0x49, 0xa8, 0x41, 0x6c, - 0x99, 0x4c, 0x08, 0xef, 0xbe, 0x81, 0x00, 0x00, - 0x0a, 0xa6, 0x6d, 0x6f, 0x6f, 0x76, 0x00, 0x00, - 0x00, 0x6c, 0x6d, 0x76, 0x68, 0x64, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x03, 0xe8, 0x00, 0x00, - 0x15, 0x9e, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x09, 0xd0, 0x74, 0x72, - 0x61, 0x6b, 0x00, 0x00, 0x00, 0x5c, 0x74, 0x6b, - 0x68, 0x64, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x15, 0x9e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x04, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x24, 0x65, 0x64, 0x74, 0x73, 0x00, 0x00, - 0x00, 0x1c, 0x65, 0x6c, 0x73, 0x74, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, - 0x15, 0x9e, 0x00, 0x00, 0x04, 0x00, 0x00, 0x01, - 0x00, 0x00, 0x00, 0x00, 0x09, 0x48, 0x6d, 0x64, - 0x69, 0x61, 0x00, 0x00, 0x00, 0x20, 0x6d, 0x64, - 0x68, 0x64, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x00, 0x01, 0x4c, 0x00, 0x55, 0xc4, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0x68, 0x64, - 0x6c, 0x72, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x76, 0x69, 0x64, 0x65, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x43, 0x6f, 0x72, 0x65, 0x20, 0x4d, - 0x65, 0x64, 0x69, 0x61, 0x20, 0x56, 0x69, 0x64, - 0x65, 0x6f, 0x00, 0x00, 0x00, 0x08, 0xef, 0x6d, - 0x69, 0x6e, 0x66, 0x00, 0x00, 0x00, 0x14, 0x76, - 0x6d, 0x68, 0x64, 0x00, 0x00, 0x00, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x24, 0x64, 0x69, 0x6e, 0x66, 0x00, - 0x00, 0x00, 0x1c, 0x64, 0x72, 0x65, 0x66, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, - 0x00, 0x00, 0x0c, 0x75, 0x72, 0x6c, 0x20, 0x00, - 0x00, 0x00, 0x01, 0x00, 0x00, 0x08, 0xaf, 0x73, - 0x74, 0x62, 0x6c, 0x00, 0x00, 0x00, 0x97, 0x73, - 0x74, 0x73, 0x64, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x87, 0x61, - 0x76, 0x63, 0x31, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x02, 0x00, - 0x48, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xff, - 0xff, 0x00, 0x00, 0x00, 0x31, 0x61, 0x76, 0x63, - 0x43, 0x01, 0x64, 0x00, 0x0a, 0xff, 0xe1, 0x00, - 0x18, 0x67, 0x64, 0x00, 0x0a, 0xac, 0xd9, 0x5f, - 0x9e, 0x22, 0x10, 0x00, 0x00, 0x03, 0x00, 0x10, - 0x00, 0x00, 0x03, 0x03, 0xc0, 0xf1, 0x22, 0x59, - 0x60, 0x01, 0x00, 0x06, 0x68, 0xeb, 0xe3, 0xcb, - 0x22, 0xc0, 0x00, 0x00, 0x00, 0x18, 0x73, 0x74, - 0x74, 0x73, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x00, 0xa6, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x14, 0x73, 0x74, - 0x73, 0x73, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, - 0x05, 0x08, 0x63, 0x74, 0x74, 0x73, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x9f, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x03, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, - 0x00, 0x1c, 0x73, 0x74, 0x73, 0x63, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x00, 0xa6, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x02, 0xac, 0x73, 0x74, - 0x73, 0x7a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0xa6, 0x00, 0x00, - 0x02, 0xd6, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, - 0x00, 0x0c, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, - 0x00, 0x0c, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, - 0x00, 0x0d, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, - 0x00, 0x0c, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, - 0x00, 0x0d, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, - 0x00, 0x0c, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, - 0x00, 0x0d, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, - 0x00, 0x0c, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, - 0x00, 0x0d, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, - 0x00, 0x0c, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, - 0x00, 0x0d, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, - 0x00, 0x0c, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, - 0x00, 0x0d, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, - 0x00, 0x0c, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, - 0x00, 0x0d, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, - 0x00, 0x0c, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, - 0x00, 0x0d, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, - 0x00, 0x0c, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, - 0x00, 0x0d, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, - 0x00, 0x0d, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, - 0x00, 0x0d, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, - 0x00, 0x0d, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, - 0x00, 0x0d, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, - 0x00, 0x11, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, - 0x00, 0x0c, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, - 0x00, 0x10, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, - 0x00, 0x13, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, - 0x00, 0x0c, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, - 0x00, 0x12, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, - 0x00, 0x1b, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, - 0x00, 0x12, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, - 0x00, 0x0c, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, - 0x00, 0x11, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, - 0x00, 0x0c, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, - 0x00, 0x11, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, - 0x00, 0x0c, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, - 0x00, 0x18, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, - 0x00, 0x0c, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, - 0x00, 0x23, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, - 0x00, 0x15, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, - 0x00, 0x0c, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, - 0x00, 0x0d, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, - 0x00, 0x0c, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, - 0x00, 0x0d, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, - 0x00, 0x13, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, - 0x00, 0x0c, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, - 0x00, 0x11, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, - 0x00, 0x0c, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, - 0x00, 0x0d, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, - 0x00, 0x0c, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, - 0x00, 0x0d, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, - 0x00, 0x0c, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, - 0x00, 0x0d, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, - 0x00, 0x0c, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, - 0x00, 0x0d, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, - 0x00, 0x0c, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, - 0x00, 0x0d, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, - 0x00, 0x0c, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, - 0x00, 0x0d, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, - 0x00, 0x0c, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, - 0x00, 0x0d, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, - 0x00, 0x0c, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, - 0x00, 0x0d, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, - 0x00, 0x0c, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, - 0x00, 0x0d, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, - 0x00, 0x0c, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, - 0x00, 0x0d, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, - 0x00, 0x0c, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, - 0x00, 0x0d, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, - 0x00, 0x0c, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, - 0x00, 0x0d, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, - 0x00, 0x0c, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, - 0x00, 0x0d, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, - 0x00, 0x0c, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, - 0x00, 0x0d, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, - 0x00, 0x0c, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, - 0x00, 0x0d, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, - 0x00, 0x0c, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, - 0x00, 0x0d, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, - 0x00, 0x0c, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, - 0x00, 0x0d, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, - 0x00, 0x0c, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, - 0x00, 0x14, 0x73, 0x74, 0x63, 0x6f, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, - 0x00, 0x30, 0x00, 0x00, 0x00, 0x62, 0x75, 0x64, - 0x74, 0x61, 0x00, 0x00, 0x00, 0x5a, 0x6d, 0x65, - 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x21, 0x68, 0x64, 0x6c, 0x72, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6d, 0x64, - 0x69, 0x72, 0x61, 0x70, 0x70, 0x6c, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x2d, 0x69, 0x6c, 0x73, 0x74, 0x00, - 0x00, 0x00, 0x25, 0xa9, 0x74, 0x6f, 0x6f, 0x00, - 0x00, 0x00, 0x1d, 0x64, 0x61, 0x74, 0x61, 0x00, - 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4c, - 0x61, 0x76, 0x66, 0x35, 0x38, 0x2e, 0x32, 0x30, - 0x2e, 0x31, 0x30, 0x30 - ] + return new File ([contentFile], 'test.mp4', { + type: "video/mp4" + }) } }] } }) - }, container) + }, [container, [...buffer]]) - const cidValue = "QmPp6XSq2XyLAmZgMvbwhRuwsVdM6mLYpoLzdydyBkakHR" - await page.textContent(container, `#output:has-text(${cidValue})`) + const cidValue = "QmNWXpwJ7mdDeGoDuWo9Axhi2cbhxLm3ateiCY1fvPjaiz" + await page.waitForSelector(`${output}:has-text('${cidValue}')`) - expect(await page.$eval("#cid", el => el.value)).toBe(cidValue) - await page.click("#gobutton") + expect(await page.$eval(cid, el => el.value)).toBe(cidValue) + await page.click(goBtn) - await page.textContent(container, `#output:has-text(Video: canplay)`) + await page.waitForSelector(`${output}:has-text('Playing ${cidValue}')`) }); }); diff --git a/examples/browser-readablestream/tests/test.mp4 b/examples/browser-readablestream/tests/test.mp4 new file mode 100644 index 0000000000000000000000000000000000000000..5f3a45d8b26d6c6b4330ee8ad80c57ffd73767d1 GIT binary patch literal 117897 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 R2_asttoMKK#s7Q#{{ZQ1kvRYW literal 0 HcmV?d00001 diff --git a/examples/browser-script-tag/package.json b/examples/browser-script-tag/package.json index 868d49bf..4c8713e2 100644 --- a/examples/browser-script-tag/package.json +++ b/examples/browser-script-tag/package.json @@ -10,7 +10,7 @@ "build": "parcel build index.html --no-scope-hoist", "serve": "parcel serve index.html --open -p 8888", "start": "npm run serve", - "test:example": "npm run build && playwright test tests" + "test:example": "npm run build && playwright test tests --retries=3" }, "browserslist": "last 1 Chrome version", "devDependencies": { diff --git a/examples/browser-service-worker/package.json b/examples/browser-service-worker/package.json index 591fa430..ab140cac 100644 --- a/examples/browser-service-worker/package.json +++ b/examples/browser-service-worker/package.json @@ -9,7 +9,8 @@ "clean": "rm -rf ./dist", "build": "webpack", "start": "webpack-dev-server", - "test": "test-ipfs-example" + "test": "test-ipfs-example", + "test:example": "test-ipfs-example" }, "dependencies": { "ipfs": "^0.57.0", diff --git a/examples/browser-sharing-node-across-tabs/index.html b/examples/browser-sharing-node-across-tabs/index.html index 16322acc..1e90ea6b 100644 --- a/examples/browser-sharing-node-across-tabs/index.html +++ b/examples/browser-sharing-node-across-tabs/index.html @@ -7,7 +7,7 @@ Share IPFS across nodes - +
diff --git a/examples/browser-sharing-node-across-tabs/package.json b/examples/browser-sharing-node-across-tabs/package.json index 7928e275..af71ffc4 100644 --- a/examples/browser-sharing-node-across-tabs/package.json +++ b/examples/browser-sharing-node-across-tabs/package.json @@ -10,7 +10,7 @@ "build": "parcel build index.html --no-scope-hoist", "serve": "parcel serve index.html --open -p 8888", "start": "npm run serve", - "test:example": "npm run build && playwright test tests" + "test:example": "npm run build && playwright test tests --retries=3" }, "browserslist": "last 1 Chrome version", "dependencies": { diff --git a/examples/browser-sharing-node-across-tabs/src/main.js b/examples/browser-sharing-node-across-tabs/src/main.js index 7840ba7d..48be9cd2 100644 --- a/examples/browser-sharing-node-across-tabs/src/main.js +++ b/examples/browser-sharing-node-across-tabs/src/main.js @@ -32,7 +32,7 @@ window.addEventListener('load', (event) => { const main = async () => { // connect / spawn shared ipfs worker & create a client. - const worker = new SharedWorker(new URL('./worker.js', import.meta.url)) + const worker = new SharedWorker(new URL('./worker.js', import.meta.url), {type: 'module'}) const ipfs = IPFSClient.from(worker.port) const path = location.hash.slice(1) diff --git a/examples/browser-sharing-node-across-tabs/src/worker.js b/examples/browser-sharing-node-across-tabs/src/worker.js index 32c84d80..1a346cb9 100644 --- a/examples/browser-sharing-node-across-tabs/src/worker.js +++ b/examples/browser-sharing-node-across-tabs/src/worker.js @@ -1,7 +1,7 @@ 'use strict' -const IPFS = require('ipfs') -const { Server, IPFSService } = require('ipfs-message-port-server') +import IPFS from 'ipfs' +import { Server, IPFSService } from 'ipfs-message-port-server' const main = async () => { console.info('Running SharedWorker...') diff --git a/examples/browser-video-streaming/index.html b/examples/browser-video-streaming/index.html index e25f8f1d..b8c71e9a 100644 --- a/examples/browser-video-streaming/index.html +++ b/examples/browser-video-streaming/index.html @@ -14,7 +14,7 @@ > - + diff --git a/examples/browser-video-streaming/package.json b/examples/browser-video-streaming/package.json index a2230f30..b57ade23 100644 --- a/examples/browser-video-streaming/package.json +++ b/examples/browser-video-streaming/package.json @@ -10,7 +10,7 @@ "build": "parcel build index.html --no-scope-hoist", "serve": "parcel serve index.html --open -p 8888", "start": "npm run serve", - "test:example": "npm run build && playwright test tests --browser=webkit" + "test:example": "npm run build && playwright test tests --browser=webkit --retries=3" }, "browserslist": "last 1 Chrome version", "dependencies": { diff --git a/examples/browser-video-streaming/src/index.js b/examples/browser-video-streaming/src/index.js index 720f98f0..cc968a8c 100644 --- a/examples/browser-video-streaming/src/index.js +++ b/examples/browser-video-streaming/src/index.js @@ -1,6 +1,6 @@ 'use strict' -const Ipfs = require('ipfs') +import Ipfs from 'ipfs' /* global Hls Ipfs HlsjsIpfsLoader */ /* eslint-env browser */ diff --git a/examples/browser-vue/package.json b/examples/browser-vue/package.json index 1728f48a..49c3497b 100644 --- a/examples/browser-vue/package.json +++ b/examples/browser-vue/package.json @@ -9,7 +9,7 @@ "build": "vue-cli-service build", "start": "npm run serve", "lint": "vue-cli-service lint", - "test:example": "npm run build && playwright test tests" + "test:example": "npm run build && playwright test tests --retries=3" }, "browserslist": [ "> 1%", @@ -47,5 +47,10 @@ "playwright": "^1.12.3", "rimraf": "^3.0.2", "test-util-ipfs-example": "^1.0.2" + }, + "workspaces": { + "nohoist": [ + "@vue/**" + ] } } diff --git a/examples/browser-vue/tests/test.js b/examples/browser-vue/tests/test.js index d22a6849..d6f9564f 100644 --- a/examples/browser-vue/tests/test.js +++ b/examples/browser-vue/tests/test.js @@ -21,7 +21,7 @@ play.describe('integrate ipfs with vue:', () => { play('should properly initialized a IPFS node and print some information about the node', async ({ page }) => { await page.waitForSelector(info) - expect(await page.textContent(id)).toContain("Qm"); + expect(await page.textContent(id)).not.toBe("") expect(await page.textContent(agent)).toContain("js-ipfs/"); }); }); diff --git a/examples/browser-webpack/package.json b/examples/browser-webpack/package.json index 3f9d7e04..360da876 100644 --- a/examples/browser-webpack/package.json +++ b/examples/browser-webpack/package.json @@ -10,7 +10,7 @@ "build": "webpack --env production", "serve": "webpack serve --hot-only --mode=development", "start": "npm run serve", - "test:example": "npm run build && playwright test tests" + "test:example": "npm run build && playwright test tests --retries=3" }, "browserslist": [ "last 1 Chrome version" diff --git a/examples/circuit-relaying/index.html b/examples/circuit-relaying/index.html index 2b017b62..2114a65e 100644 --- a/examples/circuit-relaying/index.html +++ b/examples/circuit-relaying/index.html @@ -10,7 +10,7 @@ content="width=device-width, initial-scale=1, shrink-to-fit=no" /> - +
@@ -51,7 +51,7 @@

IPFS Simple Messaging

- +
diff --git a/examples/circuit-relaying/package.json b/examples/circuit-relaying/package.json index d661f661..e76c6f32 100644 --- a/examples/circuit-relaying/package.json +++ b/examples/circuit-relaying/package.json @@ -11,7 +11,7 @@ "build": "parcel build index.html --no-scope-hoist", "serve": "parcel serve index.html --open -p 8888", "start": "npm run serve", - "test:example": "npm run build && playwright test tests" + "test:example": "npm run build && playwright test tests --retries=3" }, "browserslist": "last 1 Chrome version", "dependencies": { diff --git a/examples/circuit-relaying/src/app.js b/examples/circuit-relaying/src/app.js index ea8963b3..079bb89c 100644 --- a/examples/circuit-relaying/src/app.js +++ b/examples/circuit-relaying/src/app.js @@ -1,11 +1,11 @@ /* eslint-disable no-console */ 'use strict' -const IPFS = require('ipfs') -const WS = require('libp2p-websockets') -const filters = require('libp2p-websockets/src/filters') +import IPFS from 'ipfs' +import WS from 'libp2p-websockets' +import filters from 'libp2p-websockets/src/filters' +import Helpers from './helpers' const transportKey = WS.prototype[Symbol.toStringTag] -const Helpers = require('./helpers') document.addEventListener('DOMContentLoaded', async () => { const $peerId = document.querySelector('#peer-id') diff --git a/examples/http-client-browser-pubsub/index.html b/examples/http-client-browser-pubsub/index.html index 85ea0e63..c7f7dc00 100644 --- a/examples/http-client-browser-pubsub/index.html +++ b/examples/http-client-browser-pubsub/index.html @@ -10,10 +10,15 @@ + - - +
@@ -21,7 +26,7 @@

@@ -58,9 +63,7 @@

-
- Subscribe to pubsub topic -
+
Subscribe to pubsub topic
Console
diff --git a/examples/http-client-browser-pubsub/package.json b/examples/http-client-browser-pubsub/package.json index 674bcc96..9641de97 100644 --- a/examples/http-client-browser-pubsub/package.json +++ b/examples/http-client-browser-pubsub/package.json @@ -10,7 +10,7 @@ "build": "parcel build index.html --no-scope-hoist", "serve": "parcel serve index.html --open -p 8888", "start": "npm run serve", - "test:example": "npm run build && playwright test tests" + "test:example": "npm run build && playwright test tests --retries=3" }, "browserslist": "last 1 Chrome version", "dependencies": { diff --git a/examples/http-client-browser-pubsub/src/index.js b/examples/http-client-browser-pubsub/src/index.js index 64867e72..b671e9cf 100644 --- a/examples/http-client-browser-pubsub/src/index.js +++ b/examples/http-client-browser-pubsub/src/index.js @@ -1,8 +1,8 @@ 'use strict' -const { create: IpfsHttpClient } = require('ipfs-http-client') -const { sleep, Logger, onEnterPress, catchAndLog } = require('./util') -const uint8ArrayToString = require('uint8arrays/to-string') +import { create as IpfsHttpClient } from 'ipfs-http-client' +import { sleep, Logger, onEnterPress, catchAndLog } from './util' +import uint8ArrayToString from 'uint8arrays/to-string' async function main () { const apiUrlInput = document.getElementById('api-url') diff --git a/examples/http-client-browser-pubsub/src/util.js b/examples/http-client-browser-pubsub/src/util.js index e6aada61..c9f6ecbf 100644 --- a/examples/http-client-browser-pubsub/src/util.js +++ b/examples/http-client-browser-pubsub/src/util.js @@ -1,6 +1,6 @@ -exports.sleep = (ms = 1000) => new Promise(resolve => setTimeout(resolve, ms)) +const sleep = (ms = 1000) => new Promise(resolve => setTimeout(resolve, ms)) -exports.Logger = outEl => { +const Logger = outEl => { outEl.innerHTML = '' return message => { const container = document.createElement('div') @@ -10,7 +10,7 @@ exports.Logger = outEl => { } } -exports.onEnterPress = fn => { +const onEnterPress = fn => { return e => { if (event.which == 13 || event.keyCode == 13) { e.preventDefault() @@ -19,7 +19,7 @@ exports.onEnterPress = fn => { } } -exports.catchAndLog = (fn, log) => { +const catchAndLog = (fn, log) => { return async (...args) => { try { await fn(...args) @@ -29,3 +29,10 @@ exports.catchAndLog = (fn, log) => { } } } + +export { + sleep, + Logger, + onEnterPress, + catchAndLog +} diff --git a/examples/http-client-bundle-webpack/package.json b/examples/http-client-bundle-webpack/package.json index 2452221c..4a76140b 100644 --- a/examples/http-client-bundle-webpack/package.json +++ b/examples/http-client-bundle-webpack/package.json @@ -11,7 +11,7 @@ "build": "webpack --env production", "serve": "webpack serve --hot-only --mode=development", "start": "npm run serve", - "test:example": "npm run build && playwright test tests" + "test:example": "npm run build && playwright test tests --retries=3" }, "browserslist": [ "last 1 Chrome version" diff --git a/examples/http-client-name-api/index.html b/examples/http-client-name-api/index.html index 159afaa3..fda54ebe 100644 --- a/examples/http-client-name-api/index.html +++ b/examples/http-client-name-api/index.html @@ -9,11 +9,16 @@ + - - +