mirror of
https://github.com/hydra-synth/hydra.git
synced 2025-12-18 12:50:06 +01:00
updated readme
This commit is contained in:
3
.gitmodules
vendored
Normal file
3
.gitmodules
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
[submodule "frontend/hydra-functions"]
|
||||
path = frontend/hydra-functions
|
||||
url = git@github.com:micuat/hydra-functions.git
|
||||
@@ -1,4 +1,13 @@
|
||||
# Changelog
|
||||
## [1.2.15] - 2022-02-09
|
||||
### Added
|
||||
- added api as submodule in folder hydra-functions
|
||||
- server enpoint for '/api' referring to function documentation
|
||||
- added instructions for cloning submodules
|
||||
|
||||
### Changed
|
||||
- subfolders for different frontend endpoints in 'frontend'
|
||||
|
||||
## [1.2.14] - 2022-01-25
|
||||
### Changed
|
||||
- Editor easier to scroll
|
||||
|
||||
@@ -230,6 +230,11 @@ synth.triggerAttackRelease("C4", "8n");
|
||||
## Running locally
|
||||
To run locally, you must have nodejs, yarn and npm installed. Install node and npm from: https://nodejs.org/en/
|
||||
|
||||
To clone the repo, you must also clone the repos added as submodules, i.e.:
|
||||
```
|
||||
git clone --recurse-submodules git@github.com:ojack/hydra.git
|
||||
```
|
||||
|
||||
Install yarn from the command line
|
||||
```
|
||||
npm install --global yarn
|
||||
|
||||
@@ -1,52 +0,0 @@
|
||||
const PatchBay = require('./src/pb-live.js')
|
||||
const getUserMedia = require('getusermedia')
|
||||
const enumerateDevices = require('enumerate-devices')
|
||||
|
||||
|
||||
var vidInput
|
||||
var vidDropdown
|
||||
|
||||
window.onload = function(){
|
||||
console.log("loaded")
|
||||
vidDropdown = document.getElementById("deviceSelect")
|
||||
var pb = new PatchBay()
|
||||
enumerateDevices(function(err, devices) {
|
||||
if(err) {
|
||||
console.log(err.message); //device enumeration not supported
|
||||
} else {
|
||||
console.log(devices);
|
||||
vidInput = devices.filter(device => device.kind == "videoinput")
|
||||
vidInput.forEach((device)=>{
|
||||
console.log("device", device)
|
||||
var option = document.createElement("option");
|
||||
option.text = device.label == null ? device.id : device.label;
|
||||
option.value = device.deviceId
|
||||
vidDropdown.add(option)
|
||||
})
|
||||
|
||||
document.getElementById("init").onmousedown = function() {
|
||||
var deviceId = vidDropdown.value
|
||||
console.log(deviceId)
|
||||
getUserMedia({
|
||||
audio: false,
|
||||
video: {deviceId:deviceId}
|
||||
}, function(err, stream){
|
||||
if(err) alert(err)
|
||||
document.getElementById("vid").srcObject = stream
|
||||
console.log("got stream", stream)
|
||||
pb.init(stream,{
|
||||
server: window.location.origin,
|
||||
room: "iclc"
|
||||
})
|
||||
var name = document.getElementById("sourceName").value
|
||||
console.log(pb, name)
|
||||
pb.setName(name)
|
||||
|
||||
|
||||
// pb.init(stream)
|
||||
})
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
@@ -1,103 +0,0 @@
|
||||
const PatchBay = require('./src/pb-live.js')
|
||||
const HydraSynth = require('hydra-synth')
|
||||
const Editor = require('./src/editor.js')
|
||||
const loop = require('raf-loop')
|
||||
const P5 = require('./src/p5-wrapper.js')
|
||||
const Gallery = require('./src/gallery.js')
|
||||
const Menu = require('./src/menu.js')
|
||||
const keymaps = require('./keymaps.js')
|
||||
const log = require('./src/log.js')
|
||||
const repl = require('./src/repl.js')
|
||||
|
||||
function init () {
|
||||
window.pb = pb
|
||||
window.P5 = P5
|
||||
|
||||
|
||||
var canvas = document.getElementById('hydra-canvas')
|
||||
// canvas.width = window.innerWidth * window.devicePixelRatio
|
||||
// canvas.height = window.innerHeight * window.devicePixelRatio
|
||||
canvas.width = window.innerWidth
|
||||
canvas.height = window.innerHeight
|
||||
canvas.style.width = '100%'
|
||||
canvas.style.height = '100%'
|
||||
canvas.style.imageRendering = 'pixelated'
|
||||
|
||||
let isIOS =
|
||||
(/iPad|iPhone|iPod/.test(navigator.platform) ||
|
||||
(navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1)) &&
|
||||
!window.MSStream;
|
||||
|
||||
let precisionValue = isIOS ? 'highp' : 'mediump'
|
||||
|
||||
var pb = new PatchBay()
|
||||
var hydra = new HydraSynth({ pb: pb, canvas: canvas, autoLoop: false, precision: precisionValue})
|
||||
var editor = new Editor()
|
||||
var menu = new Menu({ editor: editor, hydra: hydra})
|
||||
log.init()
|
||||
|
||||
// add extra functions to the web editor
|
||||
// hush clears what you see on the screen
|
||||
window.hush = () => {
|
||||
solid().out()
|
||||
solid().out(o1)
|
||||
solid().out(o2)
|
||||
solid().out(o3)
|
||||
render(o0)
|
||||
}
|
||||
|
||||
window.loadScript = (url = "") => {
|
||||
const p = new Promise((res, rej) => {
|
||||
var script = document.createElement("script");
|
||||
script.onload = function () {
|
||||
log.log(`loaded script ${url}`);
|
||||
res();
|
||||
};
|
||||
script.onerror = (err) => {
|
||||
log.log(`error loading script ${url}`, "log-error");
|
||||
res()
|
||||
};
|
||||
script.src = url;
|
||||
document.head.appendChild(script);
|
||||
});
|
||||
return p;
|
||||
};
|
||||
|
||||
// get initial code to fill gallery
|
||||
var sketches = new Gallery(function(code, sketchFromURL) {
|
||||
editor.setValue(code)
|
||||
repl.eval(code)
|
||||
|
||||
// if a sketch was found based on the URL parameters, dont show intro window
|
||||
if(sketchFromURL) {
|
||||
menu.closeModal()
|
||||
} else {
|
||||
menu.openModal()
|
||||
}
|
||||
})
|
||||
menu.sketches = sketches
|
||||
|
||||
keymaps.init ({
|
||||
editor: editor,
|
||||
gallery: sketches,
|
||||
menu: menu,
|
||||
repl: repl,
|
||||
log: log
|
||||
})
|
||||
|
||||
// define extra functions (eventually should be added to hydra-synth?)
|
||||
|
||||
|
||||
|
||||
pb.init(hydra.captureStream, {
|
||||
server: window.location.origin,
|
||||
room: 'iclc'
|
||||
})
|
||||
|
||||
var engine = loop(function(dt) {
|
||||
hydra.tick(dt)
|
||||
}).start()
|
||||
|
||||
}
|
||||
|
||||
window.onload = init
|
||||
@@ -1,91 +0,0 @@
|
||||
module.exports = {
|
||||
init: ({ editor, gallery, menu, repl, log }) => {
|
||||
window.onkeydown = (e) => {
|
||||
if (e.ctrlKey === true) {
|
||||
if (e.shiftKey === true) {
|
||||
// shift - ctrl - enter: evalAll
|
||||
if (e.keyCode === 13) {
|
||||
e.preventDefault()
|
||||
menu.runAll()
|
||||
}
|
||||
|
||||
// shift - ctrl - G: share sketch
|
||||
if (e.keyCode === 71) {
|
||||
e.preventDefault()
|
||||
menu.shareSketch()
|
||||
}
|
||||
|
||||
// shift - ctrl - F: format code
|
||||
if (e.keyCode === 70) {
|
||||
e.preventDefault()
|
||||
menu.formatCode()
|
||||
}
|
||||
|
||||
// shift - ctrl - l: save to url
|
||||
if (e.keyCode === 76) {
|
||||
e.preventDefault()
|
||||
gallery.saveLocally(editor.getValue())
|
||||
}
|
||||
|
||||
// shift - ctrl - h: toggle editor
|
||||
if (e.keyCode === 72) {
|
||||
e.preventDefault()
|
||||
editor.toggle()
|
||||
log.toggle()
|
||||
}
|
||||
|
||||
// shift - ctrl - s: screencap
|
||||
if (e.keyCode === 83) {
|
||||
e.preventDefault()
|
||||
screencap()
|
||||
}
|
||||
|
||||
// Point Mutation Glitcher Key Commands and history commands (left and right arrows)
|
||||
// disabled as causing confusion with editor commands
|
||||
// // right arrow key
|
||||
// if (e.keyCode === 39) {
|
||||
// e.preventDefault()
|
||||
// window.history.forward()
|
||||
// }
|
||||
// // left arrow
|
||||
// if (e.keyCode === 37) {
|
||||
// e.preventDefault()
|
||||
// window.history.back()
|
||||
// }
|
||||
// // up arrow
|
||||
// if (e.keyCode === 38) {
|
||||
// e.preventDefault()
|
||||
// editor.mutator.doRedo()
|
||||
// }
|
||||
// // down arrow
|
||||
// if (e.keyCode === 40) {
|
||||
// editor.mutator.mutate({ reroll: true, event: e })
|
||||
// menu.formatCode()
|
||||
// gallery.saveLocally(editor.getValue())
|
||||
// }
|
||||
} else {
|
||||
// ctrl-enter: evalLine
|
||||
if (e.keyCode === 13) {
|
||||
e.preventDefault()
|
||||
// console.log('eval line')
|
||||
repl.eval(editor.getLine())
|
||||
}
|
||||
|
||||
// ctrl - /: toggle comment
|
||||
if (e.keyCode === 191) {
|
||||
e.preventDefault()
|
||||
editor.cm.toggleComment()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (e.altKey === true) {
|
||||
// alt - enter: evalBlock
|
||||
if (e.keyCode === 13) {
|
||||
e.preventDefault()
|
||||
repl.eval(editor.getCurrentBlock().text)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,261 +0,0 @@
|
||||
const {Parser} = require("acorn");
|
||||
const {generate} = require('astring');
|
||||
const { defaultTraveler, attachComments, makeTraveler } = require('astravel');
|
||||
const {UndoStack} = require('./UndoStack.js');
|
||||
const repl = require('./repl.js')
|
||||
const glslTransforms = require('hydra-synth/src/glsl/glsl-functions.js')()
|
||||
|
||||
class Mutator {
|
||||
|
||||
constructor(editor) {
|
||||
this.editor = editor;
|
||||
this.undoStack = new UndoStack();
|
||||
|
||||
this.initialVector = [];
|
||||
|
||||
this.funcTab = {};
|
||||
this.transMap = {};
|
||||
this.scanFuncs();
|
||||
this.dumpDict();
|
||||
}
|
||||
|
||||
dumpList() {
|
||||
let gslTab = glslTransforms;
|
||||
gslTab.forEach (v => {
|
||||
var argList = "";
|
||||
v.inputs.forEach((a) => {
|
||||
if (argList != "") argList += ", ";
|
||||
let argL = a.name + ": " + a.type + " {" + a.default + "}";
|
||||
argList = argList + argL;
|
||||
});
|
||||
// console.log(v.name + " [" + v.type + "] ("+ argList + ")");
|
||||
});
|
||||
}
|
||||
|
||||
scanFuncs() {
|
||||
let gslTab = glslTransforms;
|
||||
gslTab.forEach (f => {
|
||||
this.transMap[f.name] = f;
|
||||
if (this.funcTab[f.type] === undefined) {this.funcTab[f.type] = []}
|
||||
this.funcTab[f.type].push(f);
|
||||
});
|
||||
}
|
||||
|
||||
dumpDict() {
|
||||
for(let tn in this.funcTab)
|
||||
{
|
||||
this.funcTab[tn].forEach(f => {
|
||||
var argList = "";
|
||||
f.inputs.forEach((a) => {
|
||||
if (argList != "") argList += ", ";
|
||||
let argL = a.name + ": " + a.type + " {" + a.default + "}";
|
||||
argList = argList + argL;
|
||||
});
|
||||
//console.log(f.name + " [" + f.type + "] ("+ argList + ")");
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
mutate(options) {
|
||||
// Get text from CodeMirror.
|
||||
let text = this.editor.cm.getValue();
|
||||
this.undoStack.push({text, lastLitX: this.lastLitX});
|
||||
let needToRun = true;
|
||||
let tryCounter = 5;
|
||||
while (needToRun && tryCounter-- >= 0) {
|
||||
// Parse to AST
|
||||
var comments = [];
|
||||
let ast = Parser.parse(text, {
|
||||
locations: true,
|
||||
onComment: comments}
|
||||
);
|
||||
|
||||
// Modify the AST.
|
||||
this.transform(ast, options);
|
||||
|
||||
// Put the comments back.
|
||||
attachComments(ast, comments);
|
||||
|
||||
// Generate JS from AST and set back into CodeMirror editor.
|
||||
let regen = generate(ast, {comments: true});
|
||||
|
||||
this.editor.cm.setValue(regen);
|
||||
try {
|
||||
// Evaluate the updated expression.
|
||||
repl.eval(regen, (code, error) => {
|
||||
// If we got an error, keep trying something else.
|
||||
if (error) {
|
||||
console.log("Eval error: " + regen);
|
||||
}
|
||||
needToRun = error;
|
||||
});
|
||||
} catch (err) {
|
||||
console.log("Exception caught: " + err);
|
||||
needToRun = err;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
doUndo() {
|
||||
// If the current text is unsaved, save it so we can redo if need be.
|
||||
if (this.undoStack.atTop()) {
|
||||
let text = this.editor.cm.getValue();
|
||||
this.undoStack.push({text, lastLitX: this.lastLitX});
|
||||
}
|
||||
// Then pop-off the info to restore.
|
||||
if (this.undoStack.canUndo()) {
|
||||
let {text, lastLitX} = this.undoStack.undo();
|
||||
this.setText(text);
|
||||
this.lastLitX = lastLitX;
|
||||
}
|
||||
}
|
||||
|
||||
doRedo() {
|
||||
if(this.undoStack.canRedo()) {
|
||||
let {text, lastLitX} = this.undoStack.redo();
|
||||
this.setText(text);
|
||||
this.lastLitX = lastLitX;
|
||||
}
|
||||
}
|
||||
|
||||
setText(text) {
|
||||
this.editor.cm.setValue(text);
|
||||
repl.eval(text, (code, error) => {
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
// The options object contains a flag that controls how the
|
||||
// Literal to mutate is determined. If reroll is false, we
|
||||
// pick one at random. If reroll is true, we use the same field
|
||||
// we did last time.
|
||||
transform(ast, options) {
|
||||
// An AST traveler that accumulates a list of Literal nodes.
|
||||
let traveler = makeTraveler({
|
||||
go: function(node, state) {
|
||||
if (node.type === 'Literal') {
|
||||
state.literalTab.push(node);
|
||||
} else if (node.type === 'MemberExpression') {
|
||||
if (node.property && node.property.type === 'Literal') {
|
||||
// numeric array subscripts are ineligable
|
||||
return;
|
||||
}
|
||||
} else if (node.type === 'CallExpression') {
|
||||
if (node.callee && node.callee.property && node.callee.property.name && node.callee.property.name !== 'out') {
|
||||
state.functionTab.push(node);
|
||||
}
|
||||
}
|
||||
// Call the parent's `go` method
|
||||
this.super.go.call(this, node, state);
|
||||
}
|
||||
});
|
||||
|
||||
let state = {};
|
||||
state.literalTab = [];
|
||||
state.functionTab = [];
|
||||
|
||||
traveler.go(ast, state);
|
||||
|
||||
this.litCount = state.literalTab.length;
|
||||
this.funCount = state.functionTab.length;
|
||||
if (this.litCount !== this.initialVector.length) {
|
||||
let nextVect = [];
|
||||
for(let i = 0; i < this.litCount; ++i) {
|
||||
nextVect.push(state.literalTab[i].value);
|
||||
}
|
||||
this.initialVector = nextVect;
|
||||
}
|
||||
if (options.changeTransform) {
|
||||
this.glitchTrans(state, options);
|
||||
}
|
||||
else this.glitchLiteral(state, options);
|
||||
|
||||
}
|
||||
|
||||
glitchLiteral(state, options)
|
||||
{
|
||||
let litx = 0;
|
||||
if (options.reroll) {
|
||||
if (this.lastLitX !== undefined) {
|
||||
litx = this.lastLitX;
|
||||
}
|
||||
} else {
|
||||
litx = Math.floor(Math.random() * this.litCount);
|
||||
this.lastLitX = litx;
|
||||
}
|
||||
|
||||
let modLit = state.literalTab[litx];
|
||||
if (modLit) {
|
||||
// let glitched = this.glitchNumber(modLit.value);
|
||||
let glitched = this.glitchRelToInit(modLit.value, this.initialVector[litx]);
|
||||
let was = modLit.raw;
|
||||
modLit.value = glitched;
|
||||
modLit.raw = "" + glitched;
|
||||
console.log("Literal: " + litx + " changed from: " + was + " to: " + glitched);
|
||||
}
|
||||
}
|
||||
|
||||
glitchNumber(num) {
|
||||
if (num === 0) {
|
||||
num = 1;
|
||||
}
|
||||
let range = num * 2;
|
||||
let rndVal = Math.round(Math.random() * range * 1000) / 1000;
|
||||
return rndVal;
|
||||
}
|
||||
|
||||
glitchRelToInit(num, initVal) {
|
||||
if (initVal === undefined) {
|
||||
return glitchNumber(num);
|
||||
} if (initVal === 0) {
|
||||
initVal = 0.5;
|
||||
}
|
||||
|
||||
let rndVal = Math.round(Math.random() * initVal * 2 * 1000) / 1000;
|
||||
return rndVal;
|
||||
}
|
||||
glitchTrans(state, options)
|
||||
{
|
||||
/*
|
||||
state.functionTab.forEach((f)=>{
|
||||
console.log(f.callee.property.name);
|
||||
});
|
||||
*/
|
||||
let funx = Math.floor(Math.random() * this.funCount);
|
||||
if (state.functionTab[funx] === undefined || state.functionTab[funx].callee === undefined || state.functionTab[funx].callee.property === undefined) {
|
||||
console.log("No valid functionTab for index: " + funx);
|
||||
return;
|
||||
}
|
||||
let oldName = state.functionTab[funx].callee.property.name;
|
||||
|
||||
if (oldName == undefined) {
|
||||
console.log("No name for callee");
|
||||
return;
|
||||
}
|
||||
let ftype = this.transMap[oldName].type;
|
||||
if (ftype == undefined) {
|
||||
console.log("ftype undefined for: " + oldName);
|
||||
return;
|
||||
}
|
||||
let others = this.funcTab[ftype];
|
||||
if (others == undefined) {
|
||||
console.log("no funcTab entry for: " + ftype);
|
||||
return;
|
||||
}
|
||||
let changeX = Math.floor(Math.random() * others.length);
|
||||
let become = others[changeX].name;
|
||||
|
||||
// check blacklisted combinations.
|
||||
if (oldName === "modulate" && become === "modulateScrollX")
|
||||
{
|
||||
console.log("Function: " + funx + " changing from: " + oldName + " can't change to: " + become);
|
||||
return;
|
||||
}
|
||||
|
||||
state.functionTab[funx].callee.property.name = become;
|
||||
console.log("Function: " + funx + " changed from: " + oldName + " to: " + become);
|
||||
}
|
||||
|
||||
} // End of class Mutator.
|
||||
|
||||
module.exports = Mutator
|
||||
@@ -1,54 +0,0 @@
|
||||
// A generalized 'Undo stack' which can keep N levels of revertable state.
|
||||
class UndoStack {
|
||||
constructor(limit) {
|
||||
this.stack = [];
|
||||
this.index = -1;
|
||||
this.limit = limit;
|
||||
}
|
||||
|
||||
atTop() {
|
||||
return this.index === -1;
|
||||
}
|
||||
|
||||
canUndo() {
|
||||
if(this.stack.length === 0) return false;
|
||||
return this.index === -1 || this.index > 0;
|
||||
}
|
||||
|
||||
canRedo() {
|
||||
if(this.stack.length === 0 || this.index === -1) return false;
|
||||
return this.index < this.stack.length - 1;
|
||||
}
|
||||
|
||||
push(item) {
|
||||
if (this.index >= 0) {
|
||||
while (this.index < this.stack.length) this.stack.pop();
|
||||
this.index = -1;
|
||||
}
|
||||
if (this.limit && this.stack.length > this.limit) {
|
||||
this.stack.shift();
|
||||
}
|
||||
this.stack.push(item);
|
||||
}
|
||||
|
||||
undo() {
|
||||
if (this.stack.length === 0) return undefined;
|
||||
if (this.index === -1) { // start one behind the redo buffer
|
||||
this.index = this.stack.length - 1;
|
||||
}
|
||||
if (this.index > 0) this.index--;
|
||||
let v = this.stack[this.index];
|
||||
return v;
|
||||
}
|
||||
|
||||
redo() {
|
||||
if (this.stack.length === 0 || this.index === -1) return undefined;
|
||||
let nextX = this.index + 1;
|
||||
if (nextX >= this.stack.length) return undefined;
|
||||
this.index = nextX;
|
||||
return this.stack[this.index];
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
module.exports = {UndoStack}
|
||||
@@ -1,143 +0,0 @@
|
||||
/* eslint-disable no-eval */
|
||||
var CodeMirror = require('codemirror-minified/lib/codemirror')
|
||||
require('codemirror-minified/mode/javascript/javascript')
|
||||
require('codemirror-minified/addon/hint/javascript-hint')
|
||||
require('codemirror-minified/addon/hint/show-hint')
|
||||
require('codemirror-minified/addon/selection/mark-selection')
|
||||
require('codemirror-minified/addon/comment/comment')
|
||||
|
||||
var Mutator = require('./Mutator.js');
|
||||
|
||||
|
||||
var isShowing = true
|
||||
|
||||
var EditorClass = function () {
|
||||
console.log("*** Editor class created");
|
||||
var self = this
|
||||
|
||||
var container = document.createElement('div')
|
||||
container.setAttribute('id','editor-container')
|
||||
var el = document.createElement('TEXTAREA')
|
||||
document.body.appendChild(container)
|
||||
container.appendChild(el)
|
||||
|
||||
this.mutator = new Mutator(this);
|
||||
this.cm = CodeMirror.fromTextArea(el, {
|
||||
theme: 'tomorrow-night-eighties',
|
||||
value: 'hello',
|
||||
mode: {name: 'javascript', globalVars: true},
|
||||
lineWrapping: true,
|
||||
styleSelectedText: true
|
||||
})
|
||||
|
||||
// console.log('code mirror', this.cm)
|
||||
//this.cm.removeKeyMap()
|
||||
|
||||
this.cm.refresh()
|
||||
|
||||
this.show()
|
||||
// TO DO: add show code param
|
||||
let searchParams = new URLSearchParams(window.location.search)
|
||||
let showCode = searchParams.get('show-code')
|
||||
|
||||
if(showCode == "false") {
|
||||
// console.log("not showing code")
|
||||
var l = document.getElementsByClassName('CodeMirror-scroll')[0]
|
||||
l.style.display = 'none'
|
||||
// self.logElement.style.display = 'none'
|
||||
isShowing = false
|
||||
}
|
||||
//}
|
||||
}
|
||||
|
||||
EditorClass.prototype.clear = function () {
|
||||
this.cm.setValue('\n \n // Type some code on a new line (such as "osc().out()"), and press CTRL+shift+enter')
|
||||
}
|
||||
|
||||
EditorClass.prototype.setValue = function (val) {
|
||||
this.cm.setValue(val)
|
||||
}
|
||||
|
||||
EditorClass.prototype.getValue = function () {
|
||||
return this.cm.getValue()
|
||||
}
|
||||
|
||||
EditorClass.prototype.hide = function () {
|
||||
var l = document.getElementsByClassName('CodeMirror-scroll')[0]
|
||||
var m = document.getElementById('modal-header')
|
||||
// l.style.opacity = 0
|
||||
// // this.logElement.style.opacity = 0
|
||||
// m.style.opacity = 0
|
||||
l.style.display = 'none'
|
||||
m.style.display = 'none'
|
||||
this.isShowing = false
|
||||
}
|
||||
|
||||
EditorClass.prototype.show = function () {
|
||||
var l = document.getElementsByClassName('CodeMirror-scroll')[0]
|
||||
var m = document.getElementById('modal-header')
|
||||
// l.style.opacity= 1
|
||||
// m.style.opacity = 1
|
||||
l.style.display = 'block'
|
||||
m.style.display = 'flex'
|
||||
// this.logElement.style.opacity = 1
|
||||
this.isShowing = true
|
||||
}
|
||||
|
||||
EditorClass.prototype.toggle = function () {
|
||||
if (this.isShowing) {
|
||||
this.hide()
|
||||
} else {
|
||||
this.show()
|
||||
}
|
||||
}
|
||||
|
||||
EditorClass.prototype.getLine = function () {
|
||||
var c = this.cm.getCursor()
|
||||
var s = this.cm.getLine(c.line)
|
||||
// this.cm.markText({line: c.line, ch:0}, {line: c.line+1, ch:0}, {className: 'styled-background'})
|
||||
this.flashCode({line: c.line, ch:0}, {line: c.line+1, ch:0})
|
||||
return s
|
||||
}
|
||||
|
||||
EditorClass.prototype.flashCode = function (start, end) {
|
||||
if(!start) start = {line: this.cm.firstLine(), ch:0}
|
||||
if(!end) end = {line: this.cm.lastLine() + 1, ch:0}
|
||||
var marker = this.cm.markText(start, end, {className: 'styled-background'})
|
||||
setTimeout(() => marker.clear(), 300)
|
||||
}
|
||||
|
||||
|
||||
EditorClass.prototype.getCurrentBlock = function () { // thanks to graham wakefield + gibber
|
||||
var editor = this.cm
|
||||
var pos = editor.getCursor()
|
||||
var startline = pos.line
|
||||
var endline = pos.line
|
||||
while (startline > 0 && editor.getLine(startline) !== '') {
|
||||
startline--
|
||||
}
|
||||
while (endline < editor.lineCount() && editor.getLine(endline) !== '') {
|
||||
endline++
|
||||
}
|
||||
var pos1 = {
|
||||
line: startline,
|
||||
ch: 0
|
||||
}
|
||||
var pos2 = {
|
||||
line: endline,
|
||||
ch: 0
|
||||
}
|
||||
var str = editor.getRange(pos1, pos2)
|
||||
|
||||
this.flashCode(pos1, pos2)
|
||||
|
||||
return {
|
||||
start: pos1,
|
||||
end: pos2,
|
||||
text: str
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
module.exports = EditorClass
|
||||
@@ -1,227 +0,0 @@
|
||||
[
|
||||
{
|
||||
"sketch_id": "example_0",
|
||||
"code": "JTJGJTJGRmxvciUyMGRlJTIwRnVlZ28lMEElMEFzaGFwZSgyMDAlMkMwLjUlMkMxLjUpJTBBLnNjYWxlKDAuNSUyQzAuNSklMEEuY29sb3IoJTVCMC41JTJDMiU1RC5zbW9vdGgoMSklMkMwLjMlMkMwKSUwQS5yZXBlYXQoMiUyQzIpJTBBLm1vZHVsYXRlU2NhbGUob3NjKDMlMkMwLjUpJTJDLTAuNiklMEEuYWRkKG8wJTJDMC41KSUwQS5zY2FsZSgwLjkpJTBBLm91dCgp"
|
||||
},{
|
||||
"sketch_id": "example_3",
|
||||
"code":"JTJGJTJGJTIwYnklMjBPbGl2aWElMjBKYWNrJTBBJTBBb3NjKDIwJTJDJTIwMC4wMyUyQyUyMDEuNykua2FsZWlkKCkubXVsdChvc2MoMjAlMkMlMjAwLjAwMSUyQyUyMDApLnJvdGF0ZSgxLjU4KSkuYmxlbmQobzAlMkMlMjAwLjk0KS5tb2R1bGF0ZVNjYWxlKG9zYygxMCUyQyUyMDApJTJDLTAuMDMpLnNjYWxlKDAuOCUyQyUyMCgpJTIwJTNEJTNFJTIwKDEuMDUlMjAlMkIlMjAwLjElMjAqJTIwTWF0aC5zaW4oMC4wNSp0aW1lKSkpLm91dChvMCk="
|
||||
},{
|
||||
"sketch_id": "example_4",
|
||||
"code":"JTJGJTJGJTIwYnklMjBOZWxzb24lMjBWZXJhJTBBJTJGJTJGJTIwdHdpdHRlciUzQSUyMCU0MG5lbF9zb25vbG9naWElMEElMEFvc2MoOCUyQy0wLjUlMkMlMjAxKS5jb2xvcigtMS41JTJDJTIwLTEuNSUyQyUyMC0xLjUpLmJsZW5kKG8wKS5yb3RhdGUoLTAuNSUyQyUyMC0wLjUpLm1vZHVsYXRlKHNoYXBlKDQpLnJvdGF0ZSgwLjUlMkMlMjAwLjUpLnNjYWxlKDIpLnJlcGVhdFgoMiUyQyUyMDIpLm1vZHVsYXRlKG8wJTJDJTIwKCklMjAlM0QlM0UlMjBtb3VzZS54JTIwKiUyMDAuMDAwNSkucmVwZWF0WSgyJTJDJTIwMikpLm91dChvMCklMEElMEElMEElMEElMEElMEE="
|
||||
},{
|
||||
"sketch_id": "example_6",
|
||||
"code":"JTJGJTJGJTIwYnklMjBEJUMzJUE5Ym9yYSUyMEZhbGxlaXJvcyUyMEdvbnphbGVzJTBBJTJGJTJGJTIwaHR0cHMlM0ElMkYlMkZ3d3cuZ29uemFsZXNkZWJvcmEuY29tJTJGJTBBJTBBb3NjKDUpLmFkZChub2lzZSg1JTJDJTIwMikpLmNvbG9yKDAlMkMlMjAwJTJDJTIwMykuY29sb3JhbWEoMC40KS5vdXQoKSUwQSUwQSUwQSUwQQ=="
|
||||
},{
|
||||
"sketch_id": "example_8",
|
||||
"code":"JTJGJTJGJTIwYnklMjBSb2RyaWdvJTIwVmVsYXNjbyUwQSUyRiUyRiUyMGh0dHBzJTNBJTJGJTJGeWVjdG8uZ2l0aHViLmlvJTJGJTBBJTBBb3NjKDEwNyUyQyUyMDAlMkMlMjAwLjcpLmNvbG9yKDElMkMlMjAwJTJDJTIwMSkucm90YXRlKDAlMkMlMjAtMC4wOCkubW9kdWxhdGVSb3RhdGUobzElMkMlMjAwLjQpLm91dChvMCklMEFvc2MoMzMpLnJvdGF0ZSgyJTJDJTIwMC44KS5tb2R1bGF0ZVJvdGF0ZShvMCUyQyUyMCgpJTIwJTNEJTNFJTIwKGEuZmZ0JTVCMCU1RCoyKSkub3V0KG8xKSUwQQ=="
|
||||
},{
|
||||
"sketch_id": "example_9",
|
||||
"code":"JTJGJTJGJTIwYnklMjBSb2RyaWdvJTIwVmVsYXNjbyUwQSUyRiUyRiUyMGh0dHBzJTNBJTJGJTJGeWVjdG8uZ2l0aHViLmlvJTJGJTBBJTBBb3NjKDE4JTJDJTIwMC4xJTJDJTIwMCkuY29sb3IoMiUyQyUyMDAuMSUyQyUyMDIpJTBBLm11bHQob3NjKDIwJTJDJTIwMC4wMSUyQyUyMDApKS5yZXBlYXQoMiUyQyUyMDIwKS5yb3RhdGUoMC41KS5tb2R1bGF0ZShvMSklMEEuc2NhbGUoMSUyQyUyMCgpJTIwJTNEJTNFJTIwJTIwKGEuZmZ0JTVCMCU1RCowLjklMjAlMkIlMjAyKSkuZGlmZihvMSkub3V0KG8wKSUwQW9zYygyMCUyQyUyMDAuMiUyQyUyMDApLmNvbG9yKDIlMkMlMjAwLjclMkMlMjAwLjEpLm11bHQob3NjKDQwKSkubW9kdWxhdGVSb3RhdGUobzAlMkMlMjAwLjIpJTBBLnJvdGF0ZSgwLjIpLm91dChvMSk="
|
||||
},{
|
||||
"sketch_id": "example_10",
|
||||
"code":"JTJGJTJGJTIwYnklMjBaYWNoJTIwS3JhbGwlMEElMkYlMkYlMjBodHRwJTNBJTJGJTJGemFjaGtyYWxsLm9ubGluZSUyRiUwQSUwQW9zYyglMjAyMTUlMkMlMjAwLjElMkMlMjAyJTIwKSUwQS5tb2R1bGF0ZSglMEElMjAlMjBvc2MoJTIwMiUyQyUyMC0wLjMlMkMlMjAxMDAlMjApJTBBJTIwJTIwLnJvdGF0ZSgxNSklMEEpJTBBLm11bHQoJTBBJTIwJTIwb3NjKCUyMDIxNSUyQyUyMC0wLjElMkMlMjAyKSUwQSUyMCUyMC5waXhlbGF0ZSglMjA1MCUyQyUyMDUwJTIwKSUwQSklMEEuY29sb3IoJTIwMC45JTJDJTIwMC4wJTJDJTIwMC45JTIwKSUwQS5tb2R1bGF0ZSglMEElMjAlMjBvc2MoJTIwNiUyQyUyMC0wLjElMjApJTBBJTIwJTIwLnJvdGF0ZSglMjA5JTIwKSUwQSklMEEuYWRkKCUwQSUyMCUyMG9zYyglMjAxMCUyQyUyMC0wLjklMkMlMjA5MDAlMjApJTBBJTIwJTIwLmNvbG9yKDElMkMwJTJDMSklMEEpJTBBLm11bHQoJTBBJTIwJTIwc2hhcGUoOTAwJTJDJTIwMC4yJTJDJTIwMSklMEElMjAlMjAubHVtYSgpJTBBJTIwJTIwLnJlcGVhdFgoMiklMEElMjAlMjAucmVwZWF0WSgyKSUwQSUyMCUyMC5jb2xvcmFtYSgxMCklMEEpJTBBLm1vZHVsYXRlKCUwQSUyMCUyMG9zYyglMjA5JTJDJTIwLTAuMyUyQyUyMDkwMCUyMCklMEElMjAlMjAucm90YXRlKCUyMDYlMjApJTBBKSUwQS5hZGQoJTBBJTIwJTIwb3NjKDQlMkMlMjAxJTJDJTIwOTApJTBBJTIwJTIwLmNvbG9yKDAuMiUyQzAlMkMxKSUwQSklMEEub3V0KCklMEE="
|
||||
},{
|
||||
"sketch_id": "example_11",
|
||||
"code": "JTJGJTJGJTIwYnklMjBaYWNoJTIwS3JhbGwlMEElMkYlMkYlMjBodHRwJTNBJTJGJTJGemFjaGtyYWxsLm9ubGluZSUyRiUwQSUwQW9zYygxMCUyQyUyMDAuOSUyQyUyMDMwMCklMEEuY29sb3IoMC45JTJDJTIwMC43JTJDJTIwMC44KSUwQS5kaWZmKCUwQSUyMCUyMG9zYyg0NSUyQyUyMDAuMyUyQyUyMDEwMCklMEElMjAlMjAuY29sb3IoMC45JTJDJTIwMC45JTJDJTIwMC45KSUwQSUyMCUyMC5yb3RhdGUoMC4xOCklMEElMjAlMjAucGl4ZWxhdGUoMTIpJTBBJTIwJTIwLmthbGVpZCgpJTBBKSUwQS5zY3JvbGxYKDEwKSUwQS5jb2xvcmFtYSgpJTBBLmx1bWEoKSUwQS5yZXBlYXRYKDQpJTBBLnJlcGVhdFkoNCklMEEubW9kdWxhdGUoJTBBJTIwJTIwb3NjKDElMkMlMjAtMC45JTJDJTIwMzAwKSUwQSklMEEuc2NhbGUoMiklMEEub3V0KCklMEE="
|
||||
},{
|
||||
"sketch_id": "example_13",
|
||||
"code":"JTJGJTJGJTIwYWNpZCUyMGJ1cyUyMHNlYXQlMEElMkYlMkYlMjBieSUyMFdpbGwlMjBIdW1waHJleXMlMEElMkYlMkYlMjBodHRwcyUzQSUyRiUyRmdpdGh1Yi5jb20lMkZUaGVXaXNweSUwQSUwQW9zYygxMDUpLmNvbG9yKDAuNSUyQzAuMSUyQzAuOCkucm90YXRlKDAuMTElMkMlMjAwLjEpLm1vZHVsYXRlKG9zYygxMCkucm90YXRlKDAuMykuYWRkKG8wJTJDJTIwMC4xKSkuYWRkKG9zYygyMCUyQzAuMDElMkMxKS5jb2xvcigwJTJDMC44JTJDMSkpLm91dChvMCklMEFvc2MoNTAlMkMwLjA1JTJDJTIwMC43KS5jb2xvcigxJTJDMC43JTJDMC41KS5kaWZmKG8wKS5tb2R1bGF0ZShvMSUyQzAuMDUpLm91dChvMSklMEFyZW5kZXIobzEp"
|
||||
},
|
||||
{
|
||||
"sketch_id": "example_14",
|
||||
"code": "JTJGJTJGJTIwYnklMjBPbGl2aWElMjBKYWNrJTBBJTJGJTJGJTIwJTQwX29qYWNrXyUwQSUwQW9zYygyMCUyQyUyMDAuMDElMkMlMjAxLjEpJTBBJTA5LmthbGVpZCg1KSUwQSUwOS5jb2xvcigyLjgzJTJDMC45MSUyQzAuMzkpJTBBJTA5LnJvdGF0ZSgwJTJDJTIwMC4xKSUwQSUwOS5tb2R1bGF0ZShvMCUyQyUyMCgpJTIwJTNEJTNFJTIwbW91c2UueCUyMColMjAwLjAwMDMpJTBBJTA5LnNjYWxlKDEuMDEpJTBBJTIwJTIwJTA5Lm91dChvMCk="
|
||||
},
|
||||
{
|
||||
"sketch_id": "example_15",
|
||||
"code": "JTJGJTJGJTIwYnklMjBPbGl2aWElMjBKYWNrJTBBJTJGJTJGJTIwaHR0cHMlM0ElMkYlMkZvamFjay5naXRodWIuaW8lMEElMEFvc2MoMTAwJTJDJTIwMC4wMSUyQyUyMDEuNCklMEElMDkucm90YXRlKDAlMkMlMjAwLjEpJTBBJTA5Lm11bHQob3NjKDEwJTJDJTIwMC4xKS5tb2R1bGF0ZShvc2MoMTApLnJvdGF0ZSgwJTJDJTIwLTAuMSklMkMlMjAxKSklMEElMDkuY29sb3IoMi44MyUyQzAuOTElMkMwLjM5KSUwQSUyMCUyMC5vdXQobzAp"
|
||||
},
|
||||
{
|
||||
"sketch_id": "example_16",
|
||||
"code": "JTJGJTJGJTIwYnklMjBPbGl2aWElMjBKYWNrJTBBJTJGJTJGJTIwaHR0cHMlM0ElMkYlMkZvamFjay5naXRodWIuaW8lMEElMEFvc2MoNCUyQyUyMDAuMSUyQyUyMDAuOCkuY29sb3IoMS4wNCUyQzAlMkMlMjAtMS4xKS5yb3RhdGUoMC4zMCUyQyUyMDAuMSkucGl4ZWxhdGUoMiUyQyUyMDIwKS5tb2R1bGF0ZShub2lzZSgyLjUpJTJDJTIwKCklMjAlM0QlM0UlMjAxLjUlMjAqJTIwTWF0aC5zaW4oMC4wOCUyMColMjB0aW1lKSkub3V0KG8wKQ=="
|
||||
},
|
||||
{
|
||||
"sketch_id": "example_17",
|
||||
"code": "JTJGJTJGJTIwbW9pcmUlMEElMkYlMkYlMjBieSUyME9saXZpYSUyMEphY2slMEElMkYlMkYlMjB0d2l0dGVyJTNBJTIwJTQwX29qYWNrXyUwQSUwQXBhdHRlcm4lMjAlM0QlMjAoKSUyMCUzRCUzRSUyMG9zYygyMDAlMkMlMjAwKS5rYWxlaWQoMjAwKS5zY2FsZSgxJTJDJTIwMC40KSUwQSUyRiUyRiUwQXBhdHRlcm4oKSUwQSUyMCUyMC5zY3JvbGxYKDAuMSUyQyUyMDAuMDEpJTBBJTIwJTIwLm11bHQocGF0dGVybigpKSUwQSUyMCUyMC5vdXQoKQ=="
|
||||
},
|
||||
{
|
||||
"sketch_id": "example_18",
|
||||
"code": "JTJGJTJGJTIwYnklMjBPbGl2aWElMjBKYWNrJTBBJTJGJTJGJTIwaHR0cHMlM0ElMkYlMkZvamFjay5naXRodWIuaW8lMEElMEFvc2MoNiUyQyUyMDAlMkMlMjAwLjgpJTBBJTIwJTIwLmNvbG9yKDEuMTQlMkMlMjAwLjYlMkMuODApJTBBJTIwJTIwLnJvdGF0ZSgwLjkyJTJDJTIwMC4zKSUwQSUyMCUyMC5waXhlbGF0ZSgyMCUyQyUyMDEwKSUwQSUyMCUyMC5tdWx0KG9zYyg0MCUyQyUyMDAuMDMpLnRocmVzaCgwLjQpLnJvdGF0ZSgwJTJDJTIwLTAuMDIpKSUwQSUyMCUyMC5tb2R1bGF0ZVJvdGF0ZShvc2MoMjAlMkMlMjAwKS50aHJlc2goMC4zJTJDJTIwMC42KSUyQyUyMCgpJTIwJTNEJTNFJTIwMC4xJTIwJTJCJTIwbW91c2UueCUyMColMjAwLjAwMiklMEElMjAlMjAub3V0KG8wKQ=="
|
||||
},
|
||||
{
|
||||
"sketch_id": "rangga_0",
|
||||
"code": "JTJGJTJGJTIwRHJlYW15JTIwRGlhbW9uZCUwQSUyRiUyRiUyMGJ5JTIwUmFuZ2dhJTIwUHVybmFtYSUyMEFqaSUwQSUyRiUyRiUyMGh0dHBzJTNBJTJGJTJGcmFuZ2dhcHVybmFtYWFqaTEud2l4c2l0ZS5jb20lMkZwb3J0Zm9saW8lMEElMEFvc2MoNyUyQy0wLjEyNSkubW9kdWxhdGUodm9yb25vaSgxKSkuZGlmZih2b3Jvbm9pKDEpLm11bHQoZ3JhZGllbnQoLTEpLmx1bWEoMC4xMjUpKSklMEElMjAlMjAubHVtYSgwLjEyNSklMEElMjAlMjAuYWRkKHNoYXBlKDclMkMlMjAwLjUpJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwLm11bHQodm9yb25vaSgxMCUyQzIpLmJsZW5kKG8wKS5kaWZmKGdyYWRpZW50KDEpKS5tb2R1bGF0ZSh2b3Jvbm9pKCkpKSklMEElMjAlMjAuc2Nyb2xsWSgtMC4xKSUwQSUyMCUyMC5zY3JvbGxYKDAuMTI1KSUwQSUyMCUyMC5ibGVuZChvMCklMEElMjAlMjAuYmxlbmQobzApJTBBJTIwJTIwLm91dCgpJTBB"
|
||||
},
|
||||
{
|
||||
"sketch_id": "rangga_1",
|
||||
"code": "JTJGJTJGJTIwVGFnJTIwJTI2JTIwU3dlZXAlMEElMkYlMkYlMjBieSUyMFJhbmdnYSUyMFB1cm5hbWElMjBBamklMEElMkYlMkYlMjBodHRwcyUzQSUyRiUyRnJhbmdnYXB1cm5hbWFhamkxLndpeHNpdGUuY29tJTJGcG9ydGZvbGlvJTBBJTBBb3NjKDUlMkMwLjEyNSkuY29sb3JhbWEoMSklMEElMjAlMjAubHVtYSgwLjEyNSkuYWRkKHNoYXBlKDElMkMwLjUpLmx1bWEoMikuZGlmZihncmFkaWVudCgxKSkpJTBBJTIwJTIwLmRpZmYob3NjKC0xJTJDLTAuMjUpKS5ibGVuZChvMCkuY29sb3IoMCUyQzIuNSUyQzEuNzUpJTBBJTIwJTIwLm91dCgp"
|
||||
},
|
||||
{
|
||||
"sketch_id": "rangga_2",
|
||||
"code": "JTJGJTJGJTIwTW9ub2Nocm9tZSUyME1lbW9hciUwQSUyRiUyRiUyMGJ5JTIwUmFuZ2dhJTIwUHVybmFtYSUyMEFqaSUwQSUyRiUyRiUyMGh0dHBzJTNBJTJGJTJGcmFuZ2dhcHVybmFtYWFqaTEud2l4c2l0ZS5jb20lMkZwb3J0Zm9saW8lMEElMEF2b3Jvbm9pKDUwJTJDMSklMEElMjAlMjAubHVtYSgwLjUpLmFkZChzaGFwZSgxJTJDMSkubHVtYSgxKSklMEElMjAlMjAubW9kdWxhdGUob3NjKC0xMDAwJTJDLTEpJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwLm1vZHVsYXRlKG9zYygpLmx1bWEoKSkpJTBBJTIwJTIwLmJsZW5kKG8wKSUwQSUyMCUyMC5ibGVuZChvMCklMEElMjAlMjAuYmxlbmQobzApJTBBJTIwJTIwLmJsZW5kKG8wKSUwQSUyMCUyMC5vdXQoKQ=="
|
||||
},
|
||||
{
|
||||
"sketch_id": "rangga_3",
|
||||
"code": "JTJGJTJGJTIwR2FsYXh5JTIwVHJpcCUwQSUyRiUyRiUyMGJ5JTIwUmFuZ2dhJTIwUHVybmFtYSUyMEFqaSUwQSUyRiUyRiUyMGh0dHBzJTNBJTJGJTJGcmFuZ2dhcHVybmFtYWFqaTEud2l4c2l0ZS5jb20lMkZwb3J0Zm9saW8lMEElMEFzaGFwZSgxJTJDMSklMEElMjAlMjAubXVsdCh2b3Jvbm9pKDEwMDAlMkMyKSUwQSUyMCUyMC5ibGVuZChvMCkubHVtYSgpKSUwQSUyMCUyMC5hZGQoc2hhcGUoMyUyQzAuMTI1KSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMC5yb3RhdGUoMSUyQzEpLm11bHQodm9yb25vaSgxMDAwJTJDMSkubHVtYSgpKSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMC5yb3RhdGUoMS41KSkuc2Nyb2xsWCglNUIwLjElMkMtMC4wNjI1JTJDMC4wMDUlMkMwLjAwMDAxJTVEJTJDMCklMEElMjAlMjAuc2Nyb2xsWSglNUIwLjElMkMtMC4wNjI1JTJDMC4wMDUlMkMwLjAwMDAxJTVEJTJDMCklMEElMjAlMjAub3V0KCk="
|
||||
},
|
||||
{
|
||||
"sketch_id": "rangga_4",
|
||||
"code": "JTJGJTJGJTIwU3VtZXQlMEElMkYlMkYlMjBieSUyMFJhbmdnYSUyMFB1cm5hbWElMjBBamklMEElMkYlMkYlMjBodHRwcyUzQSUyRiUyRnJhbmdnYXB1cm5hbWFhamkxLndpeHNpdGUuY29tJTJGcG9ydGZvbGlvJTBBJTBBb3NjKDAuNSUyQzEuMjUpLm11bHQoc2hhcGUoMSUyQzAuMDkpLnJvdGF0ZSgxLjUpKSUwQSUyMCUyMC5kaWZmKGdyYWRpZW50KCkpJTBBJTIwJTIwLmFkZChzaGFwZSgyJTJDMikuYmxlbmQoZ3JhZGllbnQoMSkpKSUwQSUyMCUyMC5tb2R1bGF0ZShub2lzZSgpJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwLm1vZHVsYXRlKG5vaXNlKCkuc2Nyb2xsWSgxJTJDMC4wNjI1KSkpJTBBJTIwJTIwLmJsZW5kKG8wKSUwQSUyMCUyMC5jb2xvcigxJTJDLTAuNSUyQy0wLjc1KSUwQSUyMCUyMC5vdXQoKQ=="
|
||||
},
|
||||
{
|
||||
"sketch_id": "marianne_0",
|
||||
"code": "JTJGJTJGcG9ydCUwQSUyRiUyRmJ5JTIwTWFyaWFubmUlMjBUZWl4aWRvJTBBJTJGJTJGaHR0cHMlM0ElMkYlMkZtYXJpYW5uZXRlaXhpZG8uZ2l0aHViLmlvJTJGJTBBJTBBb3NjKDUlMkMlMjAwLjklMkMlMjAwLjAwMSklMEElMjAlMjAlMjAlMjAua2FsZWlkKCU1QjMlMkM0JTJDNSUyQzclMkM4JTJDOSUyQzEwJTVELmZhc3QoMC4xKSklMEElMjAlMjAlMjAlMjAuY29sb3IoMC41JTJDJTIwMC4zKSUwQSUyMCUyMCUyMCUyMC5jb2xvcmFtYSgwLjQpJTBBJTIwJTIwJTIwJTIwLnJvdGF0ZSgwLjAwOSUyQygpJTNEJTNFTWF0aC5zaW4odGltZSkqJTIwLTAuMDAxJTIwKSUwQSUyMCUyMCUyMCUyMC5tb2R1bGF0ZVJvdGF0ZShvMCUyQygpJTNEJTNFTWF0aC5zaW4odGltZSklMjAqJTIwMC4wMDMpJTBBJTIwJTIwJTIwJTIwLm1vZHVsYXRlKG8wJTJDJTIwMC45KSUwQSUyMCUyMCUyMCUyMC5zY2FsZSgwLjkpJTBBJTIwJTIwJTIwJTIwLm91dChvMCklMEElMEE="
|
||||
},
|
||||
{
|
||||
"sketch_id": "marianne_1",
|
||||
"code": "JTJGJTJGUGl4ZWxzY2FwZSUwQSUyRiUyRk1hcmlhbm5lJTIwVGVpeGlkbyUwQSUyRiUyRmh0dHBzJTNBJTJGJTJGZ2l0aHViLmNvbSUyRk1hcmlhbm5lVGVpeGlkbyUwQSUwQXNyYyhvMCklMEElMjAuc2F0dXJhdGUoMS4wMSklMEElMjAuc2NhbGUoLjk5OSklMEElMjAuY29sb3IoMS4wMSUyQzEuMDElMkMxLjAxKSUwQSUyMC5odWUoLjAxKSUwQSUyMC5tb2R1bGF0ZUh1ZShzcmMobzEpLmh1ZSguMykucG9zdGVyaXplKC0xKS5jb250cmFzdCguNyklMkMyKSUwQSUyMCUyMC5sYXllcihzcmMobzEpJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwLmx1bWEoKSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMC5tdWx0KGdyYWRpZW50KDEpJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwLnNhdHVyYXRlKC45KSkpJTBBJTIwJTIwLm91dChvMCklMEElMEFub2lzZSgxJTJDJTIwLjIpJTBBJTIwJTIwLnJvdGF0ZSgyJTJDLjUpJTBBJTIwJTIwLmxheWVyKHNyYyhvMCklMEElMjAlMjAuc2Nyb2xsWCguMikpJTBBJTIwJTIwLm91dChvMSklMEElMEFyZW5kZXIobzAp"
|
||||
|
||||
},
|
||||
{
|
||||
"sketch_id": "naoto_0",
|
||||
"code": "JTJGJTJGJTIwJTQwbmFvdG9faGllZGElMEFvc2MoMjAlMkMlMjAwLjElMkMlMjAwKS5jb2xvcigwJTJDJTIwMSUyQyUyMDIpLnJvdGF0ZSgxLjU3JTJGMikub3V0KG8xKSUwQW9zYygzMCUyQyUyMDAuMDElMkMlMjAwKS5jb2xvcigyJTJDJTIwMC43JTJDJTIwMSkubW9kdWxhdGUobzElMkMlMjAwKS5hZGQobzElMkMxKS5tb2R1bGF0ZVBpeGVsYXRlKG8xJTJDMSUyQzEwKS5vdXQobzAp"
|
||||
},
|
||||
{
|
||||
"sketch_id": "naoto_1",
|
||||
"code": "JTJGJTJGJTIwJTQwbmFvdG9faGllZGElMEFzb2xpZCgwLjIlMkMwLjYlMkMwLjkpLmxheWVyKG9zYygzMS40JTJDMCkudGhyZXNoKDAuNykubHVtYSgpLm1vZHVsYXRlKG9zYyg0JTJDMSkucm90YXRlKDEpJTJDMC4wNSkuY29sb3IoMCUyQzAlMkMwKSkubGF5ZXIob3NjKDMxLjQlMkMwKS50aHJlc2goMC43KS5sdW1hKCkubW9kdWxhdGUob3NjKDQlMkMxKS5yb3RhdGUoMSklMkMwLjEpKS5vdXQoKQ=="
|
||||
},
|
||||
{
|
||||
"sketch_id": "ritchse_0",
|
||||
"code": "JTJGJTJGcmFuZG9tJTIwdHJ5cG9waG9iaWElMjAtJTIwY2hhbmdlcyUyMGV2ZXJ5dGltZSUyMHlvdSUyMGxvYWQlMjBpdCElMEElMkYlMkZieSUyMFJpdGNoc2UlMEElMkYlMkZpbnN0YWdyYW0uY29tJTJGcml0Y2hzZSUwQSUyMCUwQWZ1bmN0aW9uJTIwcihtaW4lM0QwJTJDbWF4JTNEMSklMjAlN0IlMjByZXR1cm4lMjBNYXRoLnJhbmRvbSgpKihtYXgtbWluKSUyQm1pbiUzQiUyMCU3RCUwQSUyMCUwQXNvbGlkKDElMkMxJTJDMSklMEElMjAlMjAlMDkuZGlmZihzaGFwZSglNUI0JTJDNCUyQzQlMkMyNCU1RC5zbW9vdGgoKS5mYXN0KC41KSUyQ3IoMC42JTJDMC45MyklMkMuMDkpLnJlcGVhdCgyMCUyQzEwKSklMEElMDkubW9kdWxhdGVTY2FsZShvc2MoOCkucm90YXRlKHIoLS41JTJDLjUpKSUyQy41MiklMEElMDkuYWRkKCUwQSUyMCUyMCUwOSUwOXNyYyhvMCkuc2NhbGUoMC45NjUpLnJvdGF0ZSguMDEyKihNYXRoLnJvdW5kKHIoLTIlMkMxKSkpKSUwQSUyMCUyMCUwOSUwOS5jb2xvcihyKCklMkNyKCklMkNyKCkpJTBBJTIwJTIwJTIwJTIwJTA5Lm1vZHVsYXRlUm90YXRlKG8wJTJDcigwJTJDMC41KSklMEElMjAlMjAlMDklMDkuYnJpZ2h0bmVzcyguMTUpJTBBJTIwJTIwJTA5JTA5JTJDLjcpJTBBJTA5Lm91dCgp"
|
||||
},
|
||||
{
|
||||
"sketch_id": "ritchse_1",
|
||||
"code": "JTJGJTJGY29ycnVwdGVkJTIwc2NyZWVuc2F2ZXIlMEElMkYlMkZieSUyMFJpdGNoc2UlMEElMkYlMkZpbnN0YWdyYW0uY29tJTJGcml0Y2hzZSUwQSUyMCUwQXZvcm9ub2koMzUwJTJDMC4xNSklMEElMjAlMjAlMDkubW9kdWxhdGVTY2FsZShvc2MoOCkucm90YXRlKE1hdGguc2luKHRpbWUpKSUyQy41KSUwQSUyMCUyMCUwOS50aHJlc2goLjgpJTBBJTA5Lm1vZHVsYXRlUm90YXRlKG9zYyg3KSUyQy40KSUwQSUwOS50aHJlc2goLjcpJTBBJTIwJTIwJTA5LmRpZmYoc3JjKG8wKS5zY2FsZSgxLjgpKSUwQSUwOS5tb2R1bGF0ZVNjYWxlKG9zYygyKS5tb2R1bGF0ZVJvdGF0ZShvMCUyQy43NCkpJTBBJTA5LmRpZmYoc3JjKG8wKS5yb3RhdGUoJTVCLS4wMTIlMkMuMDElMkMtLjAwMiUyQzAlNUQpLnNjcm9sbFkoMCUyQyU1Qi0xJTJGMTk5ODAwJTJDMCU1RC5mYXN0KDAuNykpKSUwQSUwOS5icmlnaHRuZXNzKCU1Qi0uMDIlMkMtLjE3JTVELnNtb290aCgpLmZhc3QoLjUpKSUwQSUwOS5vdXQoKQ=="
|
||||
},
|
||||
{
|
||||
"sketch_id": "ritchse_2",
|
||||
"code": "JTJGJTJGdHJvcGljYWwlMjBqdWljZSUwQSUyRiUyRmJ5JTIwUml0Y2hzZSUwQSUyRiUyRmluc3RhZ3JhbS5jb20lMkZyaXRjaHNlJTBBJTIwJTBBdm9yb25vaSgyJTJDMC4zJTJDMC4yKS5zaGlmdCgwLjUpJTBBLm1vZHVsYXRlUGl4ZWxhdGUodm9yb25vaSg0JTJDMC4yKSUyQzMyJTJDMiklMEEuc2NhbGUoKCklM0QlM0UxJTJCKE1hdGguc2luKHRpbWUqMi41KSowLjA1KSklMEEuZGlmZih2b3Jvbm9pKDMpLnNoaWZ0KDAuNikpJTBBLmRpZmYob3NjKDIlMkMwLjE1JTJDMS4xKS5yb3RhdGUoKSklMEEuYnJpZ2h0bmVzcygwLjEpLmNvbnRyYXN0KDEuMikuc2F0dXJhdGUoMS4yKSUwQSUwOS5vdXQoKSUwQXNwZWVkJTIwJTNEJTIwMC44"
|
||||
},
|
||||
{
|
||||
"sketch_id": "ritchse_3",
|
||||
"code": "JTJGJTJGdHJ5aW5nJTIwdG8lMjBnZXQlMjBjbG9zZXIlMEElMkYlMkZieSUyMFJpdGNoc2UlMEElMkYlMkZpbnN0YWdyYW0uY29tJTJGcml0Y2hzZSUwQSUyMCUwQW9zYyg2MCUyQy0wLjAxNSUyQzAuMykuZGlmZihvc2MoNjAlMkMwLjA4KS5yb3RhdGUoTWF0aC5QSSUyRjIpKSUwQSUwOS5tb2R1bGF0ZVNjYWxlKG5vaXNlKDMuNSUyQzAuMjUpLm1vZHVsYXRlU2NhbGUob3NjKDE1KS5yb3RhdGUoKCklM0QlM0VNYXRoLnNpbih0aW1lJTJGMikpKSUyQzAuNiklMEElMDkuY29sb3IoMSUyQzAuNSUyQzAuNCkuY29udHJhc3QoMS40KSUwQSUwOS5hZGQoc3JjKG8wKS5tb2R1bGF0ZShvMCUyQy4wNCklMkMuNiklMEElMDkuaW52ZXJ0KCkuYnJpZ2h0bmVzcygwLjEpLmNvbnRyYXN0KDEuMiklMEElMDkubW9kdWxhdGVTY2FsZShvc2MoMiklMkMtMC4yKSUwQSUyMCUyMC5vdXQoKQ=="
|
||||
},
|
||||
{
|
||||
"sketch_id": "ritchse_4",
|
||||
"code": "JTJGJTJGJTIwZGlzaW50ZWdyYXRpb24lMEElMkYlMkYlMjBieSUyMFJpdGNoc2UlMEElMkYlMkYlMjBpbnN0YWdyYW0uY29tJTJGcml0Y2hzZSUwQSUyMCUwQW9zYyg1JTJDLjEpLm1vZHVsYXRlKG5vaXNlKDYpJTJDLjIyKS5kaWZmKG8wKSUwQSUyMCUyMCUwOS5tb2R1bGF0ZVNjcm9sbFkob3NjKDIpLm1vZHVsYXRlKG9zYygpLnJvdGF0ZSgpJTJDLjExKSklMEElMDkuc2NhbGUoLjcyKS5jb2xvcigwLjk5JTJDMS4wMTQlMkMxKSUwQSUyMCUyMCUwOS5vdXQoKQ== "
|
||||
},
|
||||
{
|
||||
"sketch_id": "flor_0",
|
||||
"code": "JTJGJTJGRmxvciUyMGRlJTIwRnVlZ28lMEElMkYlMkZodHRwcyUzQSUyRiUyRmZsb3JkZWZ1ZWdvLmdpdGh1Yi5pbyUyRiUwQW9zYygzMCUyQzAuMDElMkMxKSUwQS5tdWx0KG9zYygyMCUyQy0wLjElMkMxKS5tb2R1bGF0ZShub2lzZSgzJTJDMSkpLnJvdGF0ZSgwLjcpKSUwQS5wb3N0ZXJpemUoJTVCMyUyQzEwJTJDMiU1RC5mYXN0KDAuNSkuc21vb3RoKDEpKSUwQS5tb2R1bGF0ZVJvdGF0ZShvMCUyQygpJTNEJTNFbW91c2UueCowLjAwMyklMEEub3V0KCk= "
|
||||
},
|
||||
{
|
||||
"sketch_id": "mahalia_0",
|
||||
"code": "JTJGJTJGJTIwTWFoYWxpYSUyMEgtUiUwQSUyRiUyRiUyMElHJTNBJTIwJTQwbW1faHJfJTBBJTBBc2hhcGUoMjAlMkMwLjElMkMwLjAxKSUwQSUyMCUyMC5zY2FsZSgoKSUyMCUzRCUzRSUyME1hdGguc2luKHRpbWUpKjMpJTBBJTIwJTIwLnJlcGVhdCgoKSUyMCUzRCUzRSUyME1hdGguc2luKHRpbWUpKjEwKSUwQSUyMCUyMC5tb2R1bGF0ZVJvdGF0ZShvMCklMEElMjAlMjAuc2NhbGUoKCklMjAlM0QlM0UlMjBNYXRoLnNpbih0aW1lKSoyKSUwQSUyMCUyMC5tb2R1bGF0ZShub2lzZSgyJTJDMCkpJTBBJTIwJTIwLnJvdGF0ZSgwLjElMkMlMjAwLjkpJTBBLm91dChvMCklMEElMEFzcmMobzApJTBBLm1vZHVsYXRlKG9zYyg1MDAlMkMwJTJDMCkpJTBBLm91dChvMSklMEElMEFzcmMobzEpJTBBLm1vZHVsYXRlS2FsZWlkKHZvcm9ub2koKCklMjAlM0QlM0UlMjBNYXRoLnNpbih0aW1lKSozJTJDMC4xJTJDMC4wMSklMkMoKSUyMCUzRCUzRSUyME1hdGguc2luKHRpbWUpKjMpJTBBLnNjYWxlKCgpJTIwJTNEJTNFJTIwTWF0aC5zaW4odGltZSkqMyklMEEub3V0KG8yKSUwQSUwQXJlbmRlcihvMik="
|
||||
},
|
||||
{
|
||||
"sketch_id": "mahalia_1",
|
||||
"code": "JTJGJTJGJTIwTWFoYWxpYSUyMEgtUiUwQSUyRiUyRiUyMElHJTNBJTIwJTQwbW1faHJfJTBBJTBBc2hhcGUoKCklMjAlM0QlM0UlMjBNYXRoLnNpbih0aW1lKSUyQjEqMiklMEEucm90YXRlKCgpJTIwJTNEJTNFJTIwTWF0aC5QSSUyMColMjBtb3VzZS54JTIwJTJGMTgwKSUwQS5yZXBlYXRYKDMpJTBBLnJlcGVhdFkoKCklM0QlM0VNYXRoLnNpbih0aW1lKSo1KSUwQS5zY2FsZSgoKSUyMCUzRCUzRSUyME1hdGguUEklMkY0KSUwQS5ibGVuZChzcmMobzApLmNvbG9yKDElMkMwJTJDMCkpJTBBLm1vZHVsYXRlKG9zYygyMCUyQyUyMDAlMkMuNCkpJTBBLmthbGVpZCgyKSUwQSUyMC5vdXQobzApJTBBJTBBcmVuZGVyKG8wKQ=="
|
||||
},
|
||||
{
|
||||
"sketch_id": "mahalia_2",
|
||||
"code": "JTJGJTJGJTIwVmVsdmV0JTIwUG9vbCUwQSUyRiUyRiUyMGJ5JTIwTWFoYWxpYSUyMEgtUiUwQSUyRiUyRiUyMElHJTNBJTIwbW1faHJfJTBBJTBBJTBBbm9pc2UoKSUwQS5jb2xvcigoKSUyMCUzRCUzRSUyMGEuZmZ0JTVCMiU1RCoyJTJDMCUyQy42KSUwQS5tb2R1bGF0ZShub2lzZSgoKSUyMCUzRCUzRSUyMGEuZmZ0JTVCMCU1RCoxMCkpJTBBLnNjYWxlKCgpJTNEJTNFJTIwYS5mZnQlNUIyJTVEKjUpJTBBLmxheWVyKCUwQSUyMCUyMHNyYyhvMCklMEElMjAlMjAubWFzayhvc2MoMTApLm1vZHVsYXRlUm90YXRlKG9zYygpJTJDOTAlMkMwKSklMEElMjAlMjAuc2NhbGUoKCklMjAlM0QlM0UlMjBhLmZmdCU1QjAlNUQqMiklMEElMjAlMjAubHVtYSgwLjIlMkMwLjMpJTBBKSUwQS5ibGVuZChvMCklMEEub3V0KG8wKSUwQSUwQW9zYygpJTBBLm1vZHVsYXRlKG5vaXNlKCgpJTIwJTNEJTNFJTIwYS5mZnQlNUIxJTVEJTJCNSkpJTBBLmNvbG9yKDElMkMwJTJDMCklMEEub3V0KG8xKSUwQSUwQXNyYyhvMCklMEEubW9kdWxhdGUobzEpJTBBLmxheWVyKCUwQSUyMCUyMHNyYyhvMSklMEElMjAlMjAubWFzayhvMSklMEElMjAlMjAuc2F0dXJhdGUoNyklMEEpJTBBLm1vZHVsYXRlUm90YXRlKG8xKSUwQS5yb3RhdGUoKCU3QnRpbWUlN0QpJTIwJTNEJTNFJTIwdGltZSUyNTM2MCowLjA1KSUwQS5vdXQobzIpJTBBJTBBcmVuZGVyKG8yKQ=="
|
||||
},
|
||||
{
|
||||
"sketch_id": "mahalia_3",
|
||||
"code": "JTJGJTJGJTIwYnklMjBNYWhhbGlhJTIwSC1SJTBBJTJGJTJGJTIwSUclM0ElMjBtbV9ocl8lMEElMEFzaGFwZSgoKSUzRCUzRU1hdGguc2luKHRpbWUpJTJCMSozJTJDJTIwLjUlMkMuMDEpJTBBLnJlcGVhdCg1JTJDMyUyQyUyMCgpJTNEJTNFYS5mZnQlNUIwJTVEKjIlMkMlMjAoKSUzRCUzRWEuZmZ0JTVCMSU1RCoyKSUwQS5zY3JvbGxZKC41JTJDMC4xKSUwQS5sYXllciglMEElMjAlMjBzcmMobzEpJTBBJTIwJTIwLm1hc2sobzApJTBBJTIwJTIwLmx1bWEoLjAxJTJDJTIwLjEpJTBBJTIwJTIwLmludmVydCguMiklMEEpJTBBLm1vZHVsYXRlKG8xJTJDLjAyKSUwQS5vdXQobzApJTBBJTBBb3NjKDQwJTJDJTIwMC4wOSUyQyUyMDAuOSklMEEuY29sb3IoLjklMkMwJTJDNSklMEEubW9kdWxhdGUob3NjKDEwKS5yb3RhdGUoMSUyQyUyMDAuNSkpJTBBLnJvdGF0ZSgxJTJDJTIwMC4yKSUwQS5vdXQobzEpJTBBJTBBcmVuZGVyKG8wKSUwQSUwQQ=="
|
||||
},
|
||||
{
|
||||
"sketch_id": "mahalia_4",
|
||||
"code": "JTJGJTJGJTIwQ2VsbHVsYXIlMjAlMjYlMjBCbG9idWxhciUwQSUyRiUyRiUyMGJ5JTIwTWFoYWxpYSUyMEgtUiUwQSUyRiUyRiUyMElHJTNBJTIwbW1faHJfJTBBJTBBc3BlZWQlMjAlM0QlMjAwLjMlMEElMEFzaGFwZSgyMCUyQzAuMiUyQzAuMyklMEEuY29sb3IoMC41JTJDMC44JTJDNTApJTBBJTIwJTIwLnNjYWxlKCgpJTIwJTNEJTNFJTIwTWF0aC5zaW4odGltZSklMkIxKjIpJTBBJTIwJTIwLnJlcGVhdCgoKSUyMCUzRCUzRSUyME1hdGguc2luKHRpbWUpKjEwKSUwQSUyMCUyMC5tb2R1bGF0ZVJvdGF0ZShvMCklMEElMjAlMjAuc2NhbGUoKCklMjAlM0QlM0UlMjBNYXRoLnNpbih0aW1lKSUyQjElMjAqMS41KSUwQSUyMCUyMC5tb2R1bGF0ZShub2lzZSgyJTJDMikpJTBBJTIwJTIwLnJvdGF0ZSgxJTJDJTIwLjIpJTBBJTIwJTIwJTJGJTJGJTIwLmludmVydCgyLjQpJTBBLm91dChvMCklMEE="
|
||||
},
|
||||
{
|
||||
"sketch_id": "andromeda_0",
|
||||
"code": "JTJGJTJGJTIwMy4wJTBBJTJGJTJGJTIwYnklMjAlQ0UlOTRORFIwTTNEJUNFJTk0JTBBJTJGJTJGJTIwaHR0cHMlM0ElMkYlMkZ3d3cuaW5zdGFncmFtLmNvbSUyRmFuZHJvbTNfZGElMkYlMEElMEElMEFub2lzZSgzJTJDMC4zJTJDMykudGhyZXNoKDAuMyUyQzAuMDMpLmRpZmYobzMlMkMwLjMpLm91dChvMSklMEFncmFkaWVudCglNUIwLjMlMkMwLjMlMkMzJTVEKS5kaWZmKG8wKS5ibGVuZChvMSkub3V0KG8zKSUwQXZvcm9ub2koMzMlMkMzJTJDMzApLnJvdGF0ZSgzJTJDMC4zJTJDMCkubW9kdWxhdGVTY2FsZShvMiUyQzAuMykuY29sb3IoLTMlMkMzJTJDMCkuYnJpZ2h0bmVzcygzKS5vdXQobzApJTBBc2hhcGUoMzAlMkMwLjMlMkMxKS5pbnZlcnQoKCU3QnRpbWUlN0QpJTNEJTNFTWF0aC5zaW4odGltZSkqMykub3V0KG8yKSUwQSUwQXJlbmRlcihvMyklMEE="
|
||||
},
|
||||
{
|
||||
"sketch_id": "andromeda_1",
|
||||
"code": "JTJGJTJGJTIwMy4zJTBBJTJGJTJGJTIwYnklMjAlQ0UlOTRORFIwTTNEJUNFJTk0JTBBJTJGJTJGJTIwaHR0cHMlM0ElMkYlMkZ3d3cuaW5zdGFncmFtLmNvbSUyRmFuZHJvbTNfZGElMkYlMEElMEFvc2MoKS5tb2R1bGF0ZVJvdGF0ZShvMCUyQzAuMykub3V0KCklMEFvc2MoMzMlMkMwLjMlMkMwLjMpLmRpZmYobzMlMkMzKS5vdXQobzEpJTBBb3NjKDMlMkMwLjMlMkMzMykubW9kdWxhdGVLYWxlaWQobzMlMkMzKS5kaWZmKG8wKS5vdXQobzIpJTBBc3JjKG8wJTJDMykubXVsdChvMSUyQzMpLmthbGVpZCgzKS5vdXQobzMpJTBBcmVuZGVyKG8yKQ=="
|
||||
},
|
||||
{
|
||||
"sketch_id": "asdrubal_0",
|
||||
"code": "JTJGJTJGQXNkciVDMyVCQWJhbCUyMEdvbWV6JTBBJTBBbm9pc2UoMyUyQzAuMSUyQzcpJTBBLnJvdGF0ZSgxJTJDLTElMkMtMikubWFzayhzaGFwZSgyMCkpJTBBLmNvbG9yYW1hKDAuNSklMEEubW9kdWxhdGVTY2FsZShvMCklMEEubW9kdWxhdGVTY2FsZShvMCUyQzElMkMpJTBBLmJsZW5kKG8wKSUwQS5ibGVuZChvMCklMEEuYmxlbmQobzApJTBBLmJsZW5kKG8wKSUwQS5vdXQobzApJTBB"
|
||||
},
|
||||
{
|
||||
"sketch_id": "flor_1",
|
||||
"code": "JTJGJTJGSHlkcmElMjBHbGl0Y2h5JTIwU2xpdCUyMFNjYW4lMEElMkYlMkZGbG9yJTIwZGUlMjBGdWVnbyUwQSUyRiUyRmh0dHBzJTNBJTJGJTJGZmxvcmRlZnVlZ28uZ2l0aHViLmlvJTJGJTIwJTBBczAuaW5pdENhbSgpJTBBc3JjKHMwKS5zYXR1cmF0ZSgyKS5jb250cmFzdCgxLjMpLmxheWVyKHNyYyhvMCkubWFzayhzaGFwZSg0JTJDMikuc2NhbGUoMC41JTJDMC43KS5zY3JvbGxYKDAuMjUpKS5zY3JvbGxYKDAuMDAxKSkubW9kdWxhdGUobzAlMkMwLjAwMSkub3V0KG8wKSUwQSUwQQ=="
|
||||
},
|
||||
{
|
||||
"sketch_id": "flor_2",
|
||||
"code": "JTJGJTJGR2xpdGNoJTIwUml2ZXIlMEElMkYlMkZGbG9yJTIwZGUlMjBGdWVnbyUwQSUyRiUyRmh0dHBzJTNBJTJGJTJGZmxvcmRlZnVlZ28uZ2l0aHViLmlvJTJGJTBBdm9yb25vaSg4JTJDMSklMEEubXVsdChvc2MoMTAlMkMwLjElMkMoKSUzRCUzRU1hdGguc2luKHRpbWUpKjMpLnNhdHVyYXRlKDMpLmthbGVpZCgyMDApKSUwQS5tb2R1bGF0ZShvMCUyQzAuNSklMEEuYWRkKG8wJTJDMC44KSUwQS5zY3JvbGxZKC0wLjAxKSUwQS5zY2FsZSgwLjk5KSUwQS5tb2R1bGF0ZSh2b3Jvbm9pKDglMkMxKSUyQzAuMDA4KSUwQS5sdW1hKDAuMyklMEEub3V0KCklMEElMEElMEFzcGVlZCUyMCUzRCUyMDAuMSUwQSUwQSUwQSUwQQ=="
|
||||
},
|
||||
|
||||
{
|
||||
"sketch_id": "nesso_0",
|
||||
"code": "JTBBJTJGJTJGY2xvdWRzJTIwb2YlMjBwYXNzYWdlJTBBJTJGJTJGYnklMjBOZXNzbyUwQSUyRiUyRnd3dy5uZXNzby54eXolMEElMEFzaGFwZSglNUI0JTJDNSUyQzYlNUQuZmFzdCgwLjEpLnNtb290aCgxKSUyQzAuMDAwMDAxJTJDJTVCMC4yJTJDMC43JTVELnNtb290aCgxKSklMEEuY29sb3IoMC4yJTJDMC40JTJDMC4zKSUwQS5zY3JvbGxYKCgpJTNEJTNFTWF0aC5zaW4odGltZSowLjI3KSklMEEuYWRkKCUwQSUyMCUyMHNoYXBlKCU1QjQlMkM1JTJDNiU1RC5mYXN0KDAuMSkuc21vb3RoKDEpJTJDMC4wMDAwMDElMkMlNUIwLjIlMkMwLjclMkMwLjUlMkMwLjMlNUQuc21vb3RoKDEpKSUwQSUyMCUyMC5jb2xvcigwLjYlMkMwLjIlMkMwLjUpJTBBJTIwJTIwLnNjcm9sbFkoMC4zNSklMEElMjAlMjAuc2Nyb2xsWCgoKSUzRCUzRU1hdGguc2luKHRpbWUqMC4zMykpKSUwQS5hZGQoJTBBJTIwJTIwc2hhcGUoJTVCNCUyQzUlMkM2JTVELmZhc3QoMC4xKS5zbW9vdGgoMSklMkMwLjAwMDAwMSUyQyU1QjAuMiUyQzAuNyUyQzAuMyU1RC5zbW9vdGgoMSkpJTBBJTIwJTIwLmNvbG9yKDAuMiUyQzAuNCUyQzAuNiklMEElMjAlMjAuc2Nyb2xsWSgtMC4zNSklMEElMjAlMjAuc2Nyb2xsWCgoKSUzRCUzRU1hdGguc2luKHRpbWUqMC40MSkqLTEpKSUwQS5hZGQoJTBBJTIwJTIwJTIwJTIwJTIwJTIwc3JjKG8wKS5zaGlmdCgwLjAwMSUyQzAuMDElMkMwLjAwMSklMEElMjAlMjAlMjAlMjAlMjAlMjAuc2Nyb2xsWCglNUIwLjA1JTJDLTAuMDUlNUQuZmFzdCgwLjEpLnNtb290aCgxKSklMEElMjAlMjAlMjAlMjAlMjAlMjAuc2NhbGUoJTVCMS4wNSUyQzAuOSU1RC5mYXN0KDAuMykuc21vb3RoKDEpJTJDJTVCMS4wNSUyQzAuOSUyQzElNUQuZmFzdCgwLjI5KS5zbW9vdGgoMSkpJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTJDMC44NSklMEEubW9kdWxhdGUodm9yb25vaSgxMCUyQzIlMkMyKSklMEEub3V0KCk="
|
||||
},
|
||||
{
|
||||
"sketch_id": "malitzin_0",
|
||||
"code": "JTJGJTJGQ05EU0QlMEElMkYlMkZodHRwJTNBJTJGJTJGbWFsaXR6aW5jb3J0ZXMubmV0JTJGJTBBJTJGJTJGJTIwc2FuZCUyMHNwaXJhbHMlMEElMEFvc2MoMyUyQyUyMDAuMDElMkMlMjAwLjQpJTBBLmNvbG9yKDEuMiUyQzEuMiUyQzEuMyklMEEuc2F0dXJhdGUoMC40KSUwQS5tb2R1bGF0ZVJlcGVhdChvc2MoMiklMkMxJTJDJTIwMiUyQyUyMDQlMkMlMjAzKSUwQS5tb2R1bGF0ZUthbGVpZChvc2MoMTIlMkMwLjA1JTJDMCklMkMxKSUwQS5sdW1hJTIwKDAuNCklMEEucm90YXRlKDQlMkMlMjAwLjElMkMwKSUwQS5tb2R1bGF0ZShvMCUyQyUyMCgpJTIwJTNEJTNFJTIwbW91c2UueSUyMCowLjAwMDIlMjApJTBBLnNjYWxlKDEpLmRpZmYobzEpJTBBLm91dChvMCk="
|
||||
},
|
||||
{
|
||||
"sketch_id": "malitzin_1",
|
||||
"code": "JTJGJTJGQ05EU0QlMEElMkYlMkZodHRwJTNBJTJGJTJGbWFsaXR6aW5jb3J0ZXMubmV0JTJGJTBBJTJGJTJGYW1lYmElMEElMEFvc2MoMTUlMkMlMjAwLjAxJTJDJTIwMC4xKS5tdWx0KG9zYygxJTJDJTIwLTAuMSkubW9kdWxhdGUob3NjKDIpLnJvdGF0ZSg0JTJDMSklMkMlMjAyMCkpJTBBLmNvbG9yKDAlMkMyLjQlMkM1KSUwQS5zYXR1cmF0ZSgwLjQpJTBBLmx1bWEoMSUyQzAuMSUyQyUyMCg2JTJDJTIwKCklM0QlM0UlMjAxJTIwJTJCJTIwYS5mZnQlNUIzJTVEKSklMEEuc2NhbGUoMC43JTJDJTIwKCklM0QlM0UlMjAwLjclMjAlMkIlMjBhLmZmdCU1QjMlNUQpJTBBLmRpZmYobzApJTJGJTJGJTIwbzAlMEEub3V0KG8wKSUyRiUyRiUyMG8x"
|
||||
},
|
||||
{
|
||||
"sketch_id": "malitzin_2",
|
||||
"code": "JTJGJTJGQ05EU0QlMEElMkYlMkZodHRwJTNBJTJGJTJGbWFsaXR6aW5jb3J0ZXMubmV0JTJGJTBBJTJGJTJGY3JhenklMjBzcXVhcmVzJTBBJTBBc2hhcGUoNCUyQyUyMCgwLjAxJTJDJTIwKCklM0QlM0UlMjAwLjIlMjAlMkIlMjBhLmZmdCU1QjIlNUQpJTJDMSklMEEubXVsdChvc2MoMSUyQyUyMDEpLm1vZHVsYXRlKG9zYyg1KS5yb3RhdGUoMS40JTJDMSklMkMzKSklMEEuY29sb3IoMSUyQzIlMkM0KSUwQS5zYXR1cmF0ZSgwLjIpJTBBLmx1bWEoMS4yJTJDMC4wNSUyQyUyMCg1JTJDJTIwKCklM0QlM0UlMjAyJTIwJTJCJTIwYS5mZnQlNUIzJTVEKSklMEEuc2NhbGUoMC42JTJDJTIwKCklM0QlM0UlMjAwLjklMjAlMkIlMjBhLmZmdCU1QjMlNUQpJTBBLmRpZmYobzApJTJGJTJGJTIwbzAlMEEub3V0KG8wKSUyRiUyRiUyMG8x"
|
||||
},
|
||||
{
|
||||
"sketch_id": "khoparzi_0",
|
||||
"code": "JTJGJTJGJTIwSGFwcHklMjBNYW5kYWxhJTBBJTJGJTJGJTIwQnklMjBBYmhpbmF5JTIwS2hvcGFyemklMEElMkYlMkYlMjB0d2l0dGVyJTJGZ2l0aHViJTJGaW5zdGFncmFtJTNBJTIwJTQwa2hvcGFyemklMEF2b3Jvbm9pKDUlMkMtMC4xJTJDNSklMEEuYWRkKG9zYygxJTJDMCUyQzEpKS5rYWxlaWQoMjEpJTBBLnNjYWxlKDElMkMxJTJDMikuY29sb3JhbWEoKS5vdXQobzEpJTBBc3JjKG8xKS5tdWx0KHNyYyhzMCkubW9kdWxhdGVSb3RhdGUobzElMkMxMDApJTJDJTIwLTAuNSklMEElMjAlMjAub3V0KG8wKSUwQSUwQQ=="
|
||||
},
|
||||
{
|
||||
"sketch_id": "khoparzi_1",
|
||||
"code": "JTJGJTJGJTIwUGVycGV0dWFsJTIwZWxldmF0b3IlMjBidXR0b25zJTBBJTJGJTJGJTIwQnklMjBLaG9wYXJ6aSUwQSUyRiUyRiUyMGh0dHAlM0ElMkYlMkZraG9wYXJ6aS5jb20lMEElMEFzaGFwZSgzKS5hZGQob3NjKDElMkMwLjUlMkMxKSUyQyUyMDEpJTBBJTA5LmFkZChvMSUyQyUyMCgpJTIwJTNEJTNFJTIwKE1hdGguc2luKHRpbWUlMkY0KSUyMColMjAwLjclMjAlMkIlMjAwLjEpKSUwQSUwOSUyRiUyRi5yZXBlYXQoNSklMEElMjAlMjAlMDkuc2NhbGUoKCklM0QlM0VNYXRoLnNpbih0aW1lJTIwJTJGJTIwMTYpKS5yb3RhdGUoMCUyQyUyMC0wLjEpJTBBJTA5Lm91dChvMSklMEElMEFzcmMobzEpJTBBJTIwJTIwLnJvdGF0ZSgwJTJDMC4xKSUwQSUyMCUyMC5vdXQoKQ=="
|
||||
},
|
||||
{
|
||||
"sketch_id": "khoparzi_2",
|
||||
"code": "JTJGJTJGJTIwUmVhbGx5JTIwTG92ZSUwQSUyRiUyRiUyMGJ5JTIwQWJoaW5heSUyMEtob3BhcnppJTBBJTJGJTJGJTIwaHR0cCUzQSUyRiUyRmtob3BhcnppLmNvbSUwQW9zYygxMDAlMkMtMC4wMTI0NSUyQzEpLnBpeGVsYXRlKDUwKS5rYWxlaWQoKCklM0QlM0UoTWF0aC5zaW4odGltZSUyRjgpKjklMkIzKSkucm90YXRlKDAlMkMwLjEyNSklMEEubW9kdWxhdGVSb3RhdGUoc2hhcGUoMykuc2NhbGUoKCklM0QlM0UoTWF0aC5jb3ModGltZSkqMikpLnJvdGF0ZSgwJTJDLTAuMjUpKS5kaWZmKHNyYyhvMCkuYnJpZ2h0bmVzcygwLjMpKSUwQSUyMCUyMC5vdXQoKQ=="
|
||||
},
|
||||
{
|
||||
"sketch_id": "khoparzi_3",
|
||||
"code": "JTJGJTJGJTIwQXFhdXRpYyUyMGJsdWJzJTBBJTJGJTJGJTIwQnklMjBLaG9wYXJ6aSUwQSUyRiUyRiUyMGh0dHBzJTNBJTJGJTJGa2hvcGFyemkuY29tJTBBJTBBZ3JhZGllbnQoMC4yNSklMEEuYWRkKG5vaXNlKCklMkMlMjAoKSUzRCUzRU1hdGguY29zKHRpbWUpKSUwQS5tb2R1bGF0ZVJvdGF0ZShzcmMobzApLnJvdGF0ZSgwJTJDJTIwLTAuNTIpJTJDJTIwMC4yKS5tdWx0KHNoYXBlKDM2MCklMkMlMjAwLjgpJTBBLnJlcGVhdCgxMCUyQzUpLm11bHQoc2hhcGUoMzYwKS5zY2FsZSgoKSUzRCUzRU1hdGguc2luKHRpbWUpKSUyQyUyMDAuOCkucm90YXRlKDAlMkMlMjAwLjIpJTBBLmRpZmYoc3JjKG8wKS5yb3RhdGUoMCUyQyUyMC0wLjIpJTJDJTIwMC4yKSUwQS5vdXQoKQ=="
|
||||
},
|
||||
{
|
||||
"sketch_id": "celeste_0",
|
||||
"code": "JTBBJTIwJTJGJTJGJTIwUHVlcnRhcyUyMElJJTBBJTJGJTJGJTIwcG9yJTIwQ2VsZXN0ZSUyMEJldGFuY3VyJTBBJTJGJTJGJTIwaHR0cHMlM0ElMkYlMkZnaXRodWIuY29tJTJGZXNzdGViYW4lMEElMEFvc2MoMTMlMkMwJTJDMSklMEElMjAlMjAua2FsZWlkKCklMEElMjAlMjAubWFzayhzaGFwZSg0JTJDMC4zJTJDMSkpJTBBJTIwJTIwLm1vZHVsYXRlUm90YXRlKHNoYXBlKDQlMkMwLjElMkMxKSklMEElMjAlMjAubW9kdWxhdGVSb3RhdGUoc2hhcGUoNCUyQzAuMSUyQzAuOSkpJTBBJTIwJTIwLm1vZHVsYXRlUm90YXRlKHNoYXBlKDQlMkMwLjElMkMwLjgpKSUwQSUyMCUyMC5zY2FsZSgwLjMpJTBBJTIwJTIwLmFkZChzaGFwZSg0JTJDMC4yJTJDMSkuY29sb3IoMC4zJTJDMSUyQzElMkMwLjUpKSUwQSUyMCUyMC5yb3RhdGUoKCklM0QlM0V0aW1lKSUwQSUyMCUyMC5vdXQoKQ=="
|
||||
},
|
||||
{
|
||||
"sketch_id": "celeste_1",
|
||||
"code": "JTJGJTJGJTIwUHVlcnRhcyUyMElJSSUwQSUyRiUyRiUyMHBvciUyMENlbGVzdGUlMjBCZXRhbmN1ciUwQSUyRiUyRiUyMGh0dHBzJTNBJTJGJTJGZ2l0aHViLmNvbSUyRmVzc3RlYmFuJTBBJTIwJTBBb3NjKDQwJTJDMC4yJTJDMSklMEElMjAlMjAubW9kdWxhdGVTY2FsZShvc2MoNDAlMkMwJTJDMSkua2FsZWlkKDgpKSUwQSUyMCUyMC5yZXBlYXQoMiUyQzQpJTBBJTIwJTIwLm1vZHVsYXRlKG8wJTJDMC4wNSklMEElMjAlMjAubW9kdWxhdGVLYWxlaWQoc2hhcGUoNCUyQzAuMSUyQzEpKSUwQSUyMCUyMC5vdXQobzAp"
|
||||
},
|
||||
{
|
||||
"sketch_id": "celeste_2",
|
||||
"code": "JTBBJTIwJTJGJTJGJTIwUHVlcnRhcyUwQSUyRiUyRiUyMHBvciUyMENlbGVzdGUlMjBCZXRhbmN1ciUwQSUyRiUyRiUyMGh0dHBzJTNBJTJGJTJGZ2l0aHViLmNvbSUyRmVzc3RlYmFuJTBBJTBBb3NjKDEzJTJDMCUyQzEpJTBBJTIwJTIwLm1vZHVsYXRlKG9zYygyMSUyQzAuMjUlMkMwKSklMEElMjAlMjAubW9kdWxhdGVTY2FsZShvc2MoMzQpKSUwQSUyMCUyMC5tb2R1bGF0ZUthbGVpZChvc2MoNTUpJTJDMC4xJTJDMSklMEElMjAlMjAub3V0KCk="
|
||||
},
|
||||
{
|
||||
"sketch_id": "alexandre_0",
|
||||
"code": "JTJGJTJGJTIwJTIydGhlLXdhbGwlMjIlMEElMkYlMkYlMjBBbGV4YW5kcmUlMjBSYW5nZWwlMEElMkYlMkYlMjB3d3cuYWxleGFuZHJlcmFuZ2VsLmFydC5iciUyRmh5ZHJhLmh0bWwlMEElMEFzcGVlZCUzRC4wMjIyJTBBb3NjKDQ4JTJDLS4xJTJDMCkudGhyZXNoKCU1Qi4zJTJDLjclNUQuZmFzdCguNzUpJTJDMCkuY29sb3IoMCUyQzAlMkMxKSUwQSUwQS5hZGQoJTBBJTIwJTIwJTIwJTIwb3NjKDI4JTJDLjElMkMwKS50aHJlc2goJTVCLjMlMkMuNyU1RC5mYXN0KC43NSklMkMwKS5yb3RhdGUoMy4xNCUyRjQpJTBBJTIwJTIwJTIwJTIwLmNvbG9yKDElMkMwJTJDMCklMEElMjAlMjAlMjAlMjAubW9kdWxhdGVTY2FsZSglMjBvc2MoNjQlMkMtLjAxJTJDMCkudGhyZXNoKCU1Qi4zJTJDLjclNUQuZmFzdCguNzUpJTJDMCklMjApJTBBKSUwQS5kaWZmKCUwQSUyMCUyMCUyMCUyMG9zYygyOCUyQy4xJTJDMCkudGhyZXNoKCU1Qi4zJTJDLjclNUQuZmFzdCguNSklMkMwKS5yb3RhdGUoMy4xNCUyRjIpJTBBJTIwJTIwJTIwJTIwLmNvbG9yKDElMkMwJTJDMSklMEElMjAlMjAlMjAlMjAubW9kdWxhdGVTY2FsZSglMjBvc2MoNjQlMkMtLjAxNSUyQzApLnRocmVzaCglNUIuMyUyQy43JTVELmZhc3QoLjUpJTJDMCklMjApJTBBKSUwQS5tb2R1bGF0ZVJvdGF0ZSglMjBvc2MoNTQlMkMtLjAwNSUyQzApLnRocmVzaCglNUIuMyUyQy43JTVELmZhc3QoLjI1KSUyQzApJTIwKSUwQS5tb2R1bGF0ZVNjYWxlKCUyMG9zYyg0NCUyQy0uMDIwJTJDMCkudGhyZXNoKCU1Qi4zJTJDLjclNUQuZmFzdCguMjUpJTJDMCklMjApJTBBLmNvbG9yYW1hKCUyMCgpJTNEJTNFTWF0aC5zaW4odGltZSUyRjI3KSouMDEyMjIlMkI5Ljg5KSUwQS5zY2FsZSgyLjEyMiklMEElMEEub3V0KCk="
|
||||
},
|
||||
{
|
||||
"sketch_id": "alexandre_1",
|
||||
"code": "JTBBJTIwJTJGJTJGJTIwJTIyZXllJTIwb2YlMjB0aGUlMjBiZWhvbGRlciUyMiUwQSUyRiUyRiUyMEFsZXhhbmRyZSUyMFJhbmdlbCUwQSUyRiUyRiUyMHd3dy5hbGV4YW5kcmVyYW5nZWwuYXJ0LmJyJTJGaHlkcmEuaHRtbCUwQSUwQW5vaXNlKDYlMkMuMDUpJTBBLm11bHQoJTIwb3NjKDklMkMwJTJDJTIwKCklM0QlM0VNYXRoLnNpbih0aW1lJTJGMS41KSUyQjIlMjApJTIwKSUwQS5tdWx0KCUwQSUyMCUyMCUyMCUyMG5vaXNlKDklMkMuMDMpLmJyaWdodG5lc3MoMS4yKS5jb250cmFzdCgyKSUwQSUyMCUyMCUyMCUyMC5tdWx0KCUyMG9zYyg5JTJDMCUyQyUyMCgpJTNEJTNFTWF0aC5zaW4odGltZSUyRjMpJTJCMTMlMjApJTIwKSUwQSklMEEuZGlmZiglMEElMjAlMjAlMjAlMjBub2lzZSgxNSUyQy4wNCkuYnJpZ2h0bmVzcyguMikuY29udHJhc3QoMS4zKSUwQSUyMCUyMCUyMCUyMC5tdWx0KCUyMG9zYyg5JTJDMCUyQyUyMCgpJTNEJTNFTWF0aC5zaW4odGltZSUyRjUpJTJCMTMlMjApJTIwKSUwQSUyMCUyMCUyMCUyMC5yb3RhdGUoJTIwKCklM0QlM0V0aW1lJTJGMzMlMjApJTBBKSUwQS5zY2FsZSglMjAoKSUzRCUzRU1hdGguc2luKHRpbWUlMkY2LjIpKi4xMiUyQi4xNSUyMCklMEEubW9kdWxhdGVTY2FsZSglMEElMjAlMjAlMjAlMjBvc2MoMyUyQzAlMkMwKS5tdWx0KCUyMG9zYygzJTJDMCUyQzApLnJvdGF0ZSgzLjE0JTJGMiklMjApJTBBJTIwJTIwJTIwJTIwLnJvdGF0ZSglMjAoKSUzRCUzRXRpbWUlMkYyNSUyMCkuc2NhbGUoLjM5KS5zY2FsZSgxJTJDLjYlMkMxKS5pbnZlcnQoKSUwQSUyMCUyMCUyMCUyMCUyQyUyMCgpJTNEJTNFTWF0aC5zaW4odGltZSUyRjUuMykqMS41JTJCMyUyMCUyMCklMEEucm90YXRlKCUyMCgpJTNEJTNFdGltZSUyRjIyJTIwKSUwQS5tdWx0KCUyMHNoYXBlKDEwMCUyQy45JTJDLjAxKS5zY2FsZSgxJTJDLjYlMkMxKSUyMCklMEEub3V0KCk="
|
||||
},
|
||||
{
|
||||
"sketch_id": "alexandre_2",
|
||||
"code": "JTJGJTJGJTIwJTIyZWdnJTIwb2YlMjB0aGUlMjBwaG9lbml4JTIyJTBBJTJGJTJGJTIwQWxleGFuZHJlJTIwUmFuZ2VsJTBBJTJGJTJGJTIwd3d3LmFsZXhhbmRyZXJhbmdlbC5hcnQuYnIlMkZoeWRyYS5odG1sJTBBJTBBc3BlZWQlM0QxLjIlMEFzaGFwZSg5OSUyQy4xNSUyQy41KS5jb2xvcigwJTJDMSUyQzIpJTBBJTBBLmRpZmYoJTIwc2hhcGUoMjQwJTJDLjUlMkMwKS5zY3JvbGxYKC4wNSkucm90YXRlKCUyMCgpJTNEJTNFdGltZSUyRjEwJTIwKS5jb2xvcigxJTJDMCUyQy43NSklMjApJTBBLmRpZmYoJTIwc2hhcGUoOTklMkMuNCUyQy4wMDIpLnNjcm9sbFgoLjEwKS5yb3RhdGUoJTIwKCklM0QlM0V0aW1lJTJGMjAlMjApLmNvbG9yKDElMkMwJTJDLjc1KSUyMCklMEEuZGlmZiglMjBzaGFwZSg5OSUyQy4zJTJDLjAwMikuc2Nyb2xsWCguMTUpLnJvdGF0ZSglMjAoKSUzRCUzRXRpbWUlMkYzMCUyMCkuY29sb3IoMSUyQzAlMkMuNzUpJTIwKSUwQS5kaWZmKCUyMHNoYXBlKDk5JTJDLjIlMkMuMDAyKS5zY3JvbGxYKC4yMCkucm90YXRlKCUyMCgpJTNEJTNFdGltZSUyRjQwJTIwKS5jb2xvcigxJTJDMCUyQy43NSklMjApJTBBLmRpZmYoJTIwc2hhcGUoOTklMkMuMSUyQy4wMDIpLnNjcm9sbFgoLjI1KS5yb3RhdGUoJTIwKCklM0QlM0V0aW1lJTJGNTAlMjApLmNvbG9yKDElMkMwJTJDLjc1KSUyMCklMEElMEEubW9kdWxhdGVTY2FsZSglMEElMjAlMjBzaGFwZSgyNDAlMkMuNSUyQzApLnNjcm9sbFgoLjA1KS5yb3RhdGUoJTIwKCklM0QlM0V0aW1lJTJGMTAlMjApJTBBJTIwJTIwJTJDJTIwKCklM0QlM0UoTWF0aC5zaW4odGltZSUyRjMpKi4yKSUyQi4yJTIwKSUwQSUwQS5zY2FsZSgxLjYlMkMuNiUyQzEpJTBBLm91dCgp"
|
||||
},{
|
||||
"sketch_id": "afalfl_0",
|
||||
"code": "JTJGJTJGZmlsZXQlMjBtaWdub24lMEElMkYlMkYlMjBBRkFMRkwlMEElMkYlMkYlMjBpbnN0YWdyYW0lMkZhX2ZfYWxmbCUyMCUwQSUwQW9zYygxMDAlMkMtMC4wMDE4JTJDMC4xNykuZGlmZihvc2MoMjAlMkMwLjAwMDA4KS5yb3RhdGUoTWF0aC5QSSUyRjAuMDAwMDMpKSUwQS5tb2R1bGF0ZVNjYWxlKG5vaXNlKDEuNSUyQzAuMTgpLm1vZHVsYXRlU2NhbGUob3NjKDEzKS5yb3RhdGUoKCklM0QlM0VNYXRoLnNpbih0aW1lJTJGMjIpKSklMkMzKSUwQS5jb2xvcigxMSUyQzAuNSUyQzAuNCUyQyUyMDAuOSUyQyUyMDAuMiUyQyUyMDAuMDExJTJDJTIwNSUyQyUyMDIyJTJDJTIwJTIwMC41JTJDJTIwLTEpLmNvbnRyYXN0KDEuNCklMEEuYWRkKHNyYyhvMCkubW9kdWxhdGUobzAlMkMuMDQpJTJDLjYlMkMlMjAuOSklMEElMjAlMjAlMkYlMkYucGl4ZWxhdGUoMC40JTJDJTIwMC4yJTJDJTIwMC4xKSUwQS5pbnZlcnQoKS5icmlnaHRuZXNzKDAuMDAwMyUyQyUyMDIpLmNvbnRyYXN0KCUyMDAuNSUyQyUyMDIlMkMlMjAwLjElMkMlMjAyKS5jb2xvcig0JTJDJTIwLTIlMkMlMjAwLjEpJTBBLm1vZHVsYXRlU2NhbGUob3NjKDIpJTJDLTAuMiUyQyUyMDIlMkMlMjAxJTJDJTIwMC4zKSUwQSUyMC5wb3N0ZXJpemUoMjAwKSUyMC5yb3RhdGUoMSUyQyUyMDAuMiUyQyUyMDAuMDElMkMlMjAwLjAwMSklMEElMjAuY29sb3IoMjIlMkMlMjAtMiUyQyUyMDAuNSUyQyUyMDAuNSUyQyUyMDAuMDAwMSUyQyUyMCUyMDAuMSUyQyUyMDAuMiUyQyUyMDgpLmNvbnRyYXN0KDAuMTglMkMlMjAwLjMlMkMlMjAwLjElMkMlMjAwLjIlMkMlMjAwLjAzJTJDJTIwMSklMjAuJTIwYnJpZ2h0bmVzcygwLjAwMDElMkMlMjAtMSUyQyUyMDEwKSUwQSUwOS5vdXQoKQ=="
|
||||
},
|
||||
{
|
||||
"sketch_id": "eerie_ear_0",
|
||||
"code": "JTJGJTJGJTIwZWVfMiUyMC4lMjBNVUxUSVZFUlNFJTIwLiUyMHRpbWUlMjBhbmQlMjBmZWVkYmFjayUwQSUyRiUyRiUyMGVfZSUyMCUyRiUyRiUyMCU0MGVlcmllX2VhciUwQXBhdCUyMCUzRCUyMCgpJTNEJTNFJTBBc29saWQoKSUwQS5sYXllcihzb2xpZCgpLmRpZmYoJTBBJTIwJTIwb3NjKCh0aW1lJTJGMTYpJTIwKiUyMDElMkMlMjAodGltZSUyRjEwMDApJTIwKiUyMDAuMiUyMCUyMCklMEElMjAlMjAlMjAlMjAubXVsdChvc2MoKHRpbWUlMkY4KSUyMColMjAxJTJDJTIwKHRpbWUlMkYxMDA2KSUyMColMjAwLjIlMjAlMjApLnJvdGF0ZSgxLjU3KSklMEElMjAlMjAlMjAlMjAubW9kdWxhdGUoKHNoYXBlKDEwNiUyQzElMkMwLjA1KSkpJTBBJTIwJTIwJTIwJTIwLm11bHQoc2hhcGUoMTA2JTJDMSUyQzAuMDUpKSUwQSUyMCUyMCkpJTBBJTIwJTIwLm1vZHVsYXRlU2NhbGUob3NjKDIlMkMwLjEyNSklMkMwLjEyNSklMEElMkYlMkYlMEFzb2xpZCgpJTBBLmxheWVyKHNvbGlkKDElMkMxJTJDMSklMEElMjAlMjAubXVsdChwYXQoKSUwQSUyMCUyMC5kaWZmKHNyYyhvMCkuc2NhbGUoMC4yKS5tdWx0KHNvbGlkKCklMkMlNUIwLjclMkMwLjYlMkMwLjQlMkMwLjYlNUQpLmthbGVpZCgxLjAxKS5zYXR1cmF0ZSgwLjMpKSUwQSklMEEubGF5ZXIoc29saWQoMSUyQzElMkMxKSUwQSUyMCUyMCUyMCUyMC5tYXNrKCUwQSUyMCUyMCUyMCUyMCUyMCUyMG5vaXNlKDIlMkMwLjA1KSUwQSUyMCUyMCUyMCUyMCUyMCUyMC5pbnZlcnQoKS5jb2xvcmFtYSgyKS5wb3N0ZXJpemUoOCUyQzQpLmx1bWEoMC4yNSkudGhyZXNoKDAuNSklMEElMjAlMjAlMjAlMjAlMjAlMjAubW9kdWxhdGVSb3RhdGUob3NjKDElMkMwLjUpKSUwQSUyMCUyMCUyMCUyMCklMEElMjAlMjAlMjAlMjAubXVsdChncmFkaWVudCgwLjUpLmthbGVpZCgxKS5jb2xvcmFtYSgyKS5zYXR1cmF0ZSgxLjEpLmNvbnRyYXN0KDEuNikubXVsdChzb2xpZCgpJTJDMC40NSkpJTBBJTIwJTIwKSklMEElMjAlMjAub3V0KCklMEElMkYlMkYlMEFzcGVlZCUzRCUyMDAuNSUwQQ=="
|
||||
},
|
||||
{
|
||||
"sketch_id": "eerie_ear_1",
|
||||
"code": "JTJGJTJGJTIwZWVfMyUyMCUyRiUyRkxJTkVTJTBBJTJGJTJGJTIwZV9lJTIwJTJGJTJGJTIwJTQwZWVyaWVfZWFyJTBBJTJGJTJGJTBBJTJGJTJGYmFzZWQlMjBvbiUwQSUyRiUyRiU0MG5hb3RvX2hpZWRhJTBBJTJGJTJGaHR0cHMlM0ElMkYlMkZuYW90b2hpZWRhLmNvbSUyRmJsb2clMkZoeWRyYS1ib29rJTJGJTBBJTJGJTJGJTBBbiUyMCUzRCUyMDglMEFhJTIwJTNEJTIwKCklMjAlM0QlM0UlMjBzaGFwZSg0JTJDMC4yNSUyQzAuMDA5KS5yb3RhdGUoKCklM0QlM0V0aW1lJTJGLTQwKS5yZXBlYXQobiUyQ24pJTBBYSgpLmFkZChhKCkuc2Nyb2xsWCgwLjUlMkZuKS5zY3JvbGxZKDAuNSUyRm4pJTJDMSkubW9kdWxhdGUobzElMkMwLjEpLm1vZHVsYXRlKHNyYyhvMSkuY29sb3IoMTAlMkMxMCkuYWRkKHNvbGlkKC0xNCUyQy0xNCkpLnJvdGF0ZSgoKSUzRCUzRXRpbWUlMkY0MCklMkMwLjAwNSkuYWRkKHNyYyhvMSkuc2Nyb2xsWSgwLjAxMiUyQzAuMDIpJTJDMC41KS5vdXQobzEpJTBBc3JjKG8xKS5jb2xvcmFtYSgxLjIpLnBvc3Rlcml6ZSg0KS5zYXR1cmF0ZSgwLjcpLmNvbnRyYXN0KDYpLm11bHQoc29saWQoKSUyQzAuMTUpLm91dChvMCklMEElMEElMEE="
|
||||
},
|
||||
{
|
||||
"sketch_id": "eerie_ear_2",
|
||||
"code": "JTJGJTJGZWVfNSUyMC4lMjBGVUdJVElWRSUyMEdFT01FVFJZJTIwVkhTJTIwLiUyMGF1ZGlvcmVhY3RpdmUlMjBzaGFwZXMlMjBhbmQlMjBncmFkaWVudHMlMEElMkYlMkYlMjBlX2UlMjAlMkYlMkYlMjAlNDBlZXJpZV9lYXIlMEElMkYlMkYlMEFzJTNEJTIwKCklM0QlM0UlMEElMjAlMjBzaGFwZSg0KSUwQS5zY3JvbGxYKCU1Qi0wLjUlMkMtMC4yJTJDMC4zJTJDLTAuMSUyQy0wLjElNUQuc21vb3RoKDAuMSkuZmFzdCgwLjMpKSUwQS5zY3JvbGxZKCU1QjAuMjUlMkMtMC4yJTJDMC4zJTJDLTAuMSUyQzAuMiU1RC5zbW9vdGgoMC45KS5mYXN0KDAuMTUpKSUwQSUyRiUyRiUwQXNvbGlkKCklMEEuYWRkKGdyYWRpZW50KDMlMkMwLjA1KS5yb3RhdGUoMC4wNSUyQy0wLjIpLnBvc3Rlcml6ZSgyKS5jb250cmFzdCgwLjYpJTJDJTVCMSUyQzAlMkMxJTJDMC41JTJDMCUyQzAuNiU1RC5zbW9vdGgoMC45KSklMEEuYWRkKHMoKSklMEEubXVsdChzKCkuc2NhbGUoMC44KS5zY3JvbGxYKDAuMDEpLnNjcm9sbFkoLTAuMDEpLnJvdGF0ZSgwLjIlMkMwLjA2KS5hZGQoZ3JhZGllbnQoMykuY29udHJhc3QoMC42KSUyQyU1QjElMkMwJTJDMSUyQzAuNSU1RC5zbW9vdGgoMC45KSUyQzAuNSkubXVsdChzcmMobzApLnNjYWxlKDAuOTgpJTJDKCklM0QlM0VhLmZmdCU1QjAlNUQqOSklMEElMjAlMjAlMjAlMjAlMjApJTBBLmRpZmYocygpLm1vZHVsYXRlKHNoYXBlKDUwMCkpLnNjYWxlKCU1QjEuNyUyQzEuMiU1RC5zbW9vdGgoMC45KS5mYXN0KDAuMDUpKSklMEEuYWRkKGdyYWRpZW50KDIpLmludmVydCgpJTJDKCklM0QlM0VhLmZmdCU1QjIlNUQpJTBBLm11bHQoZ3JhZGllbnQoKCklM0QlM0VhLmZmdCU1QjMlNUQqOCkpJTBBLmJsZW5kKHNyYygobzApJTJDKCklM0QlM0VhLmZmdCU1QjElNUQqNDApKSUwQS5hZGQodm9yb25vaSgoKSUzRCUzRWEuZmZ0JTVCMSU1RCUyQygpJTNEJTNFYS5mZnQlNUIzJTVEJTJDKCklM0QlM0VhLmZmdCU1QjAlNUQpLnRocmVzaCgwLjcpLnBvc3Rlcml6ZSgyJTJDNCkubHVtYSgwLjkpLnNjcm9sbFkoMSUyQygpJTNEJTNFYS5mZnQlNUIwJTVEJTJGMzApLmNvbG9yYW1hKDMpLnRocmVzaCgoKSUzRCUzRWEuZmZ0JTVCMSU1RCkuc2NhbGUoKCklM0QlM0VhLmZmdCU1QjMlNUQqMiklMkMoKSUzRCUzRWEuZmZ0JTVCMCU1RCUyRjIpJTBBJTIwJTIwLm91dCgpJTBBJTJGJTJGJTBBc3BlZWQlM0QlMjAxJTBBJTBBYS5zZXRTbW9vdGgoMC45Nik="
|
||||
},
|
||||
{
|
||||
"sketch_id": "eerie_ear_3",
|
||||
"code": "JTJGJTJGJTIwZWVfMSUyMC4lMjBFWUUlMjBJTiUyMFRIRSUyMFNLWSUwQSUyRiUyRmV4YW1wbGUlMjBvZiUyMG1hc2slMjBhbmQlMjBmdW5jdGlvbiUyMG1vZHVsYXRpb24lMEElMkYlMkYlMjBlX2UlMjAlMkYlMkYlMjAlNDBlZXJpZV9lYXIlMEFub2lzZSgxOCklMEElMjAlMjAuY29sb3JhbWEoMSklMEElMjAlMjAucG9zdGVyaXplKDIpJTBBJTIwJTIwLmthbGVpZCg1MCklMEElMjAlMjAubWFzayglMEElMjAlMjAlMjAlMjBzaGFwZSgyNSUyQyUyMDAuMjUpLm1vZHVsYXRlU2NhbGUoJTBBJTIwJTIwJTIwJTIwJTIwJTIwbm9pc2UoNDAwLjUlMkMlMjAwLjUpJTBBJTIwJTIwJTIwJTIwKSUwQSUyMCUyMCklMEElMjAlMjAubWFzayhzaGFwZSg0MDAlMkMlMjAxJTJDJTIwMi4xMjUpKSUwQSUyMCUyMC5tb2R1bGF0ZVNjYWxlKG9zYyg2JTJDJTIwMC4xMjUlMkMlMjAwLjA1KS5rYWxlaWQoNTApKSUwQSUyMCUyMC5tdWx0KG9zYygyMCUyQyUyMDAuMDUlMkMlMjAyLjQpLmthbGVpZCg1MCklMkMlMjAwLjI1KSUwQSUyMCUyMC5zY2FsZSgxLjc1JTJDJTIwMC42NSUyQyUyMDAuNSklMEElMjAlMjAubW9kdWxhdGUobm9pc2UoMC41KSklMEElMjAlMjAuc2F0dXJhdGUoNiklMEElMjAlMjAucG9zdGVyaXplKDQlMkMlMjAwLjIpJTBBJTIwJTIwLnNjYWxlKDEuNSklMEElMjAlMjAub3V0KCklM0IlMEE="
|
||||
}
|
||||
]
|
||||
@@ -1,286 +0,0 @@
|
||||
const request = require('superagent')
|
||||
const examples = require('./examples.json')
|
||||
const sketches = []
|
||||
|
||||
|
||||
class Gallery {
|
||||
constructor (callback) {
|
||||
this.sketches = []
|
||||
this.examples = []
|
||||
this.current = null
|
||||
this.code = null
|
||||
this.exampleIndex = null
|
||||
|
||||
// request.get('/sketches').end((err, res) => {
|
||||
// console.log('got sketches', res.text, err)
|
||||
// if(err) {
|
||||
// console.log('err getting sketches', err)
|
||||
// } else {
|
||||
// this.sketches = JSON.parse(res.text)
|
||||
// }
|
||||
|
||||
this.examples = examples
|
||||
this.setSketchFromURL(callback)
|
||||
// callback(this.code, this.foundSketch)
|
||||
// })
|
||||
window.addEventListener('popstate', (event) => {
|
||||
this.setSketchFromURL(callback)
|
||||
// console.log("location: " + document.location + ", state: " + JSON.stringify(event.state));
|
||||
});
|
||||
this.setRandomSketch = this.setRandomSketch.bind(this)
|
||||
}
|
||||
|
||||
clear() {
|
||||
this.current = null
|
||||
this.code = null
|
||||
//this.exampleIndex = null
|
||||
let newurl = window.location.protocol + '//' + window.location.host + window.location.pathname
|
||||
window.history.pushState({ path: newurl }, '', newurl)
|
||||
this.url = newurl
|
||||
}
|
||||
|
||||
setSketchFromURL(callback) {
|
||||
hush()
|
||||
render(o0)
|
||||
let searchParams = new URLSearchParams(window.location.search)
|
||||
let base64Code = searchParams.get('code')
|
||||
// if(!base64Code) base64Code = searchParams.get('id') // backwards compatibility with earlier form of naming. id is now called code
|
||||
let sketch_id = searchParams.get('sketch_id')
|
||||
let code = ''
|
||||
//console.log("id", sketch_id, "code", base64Code)
|
||||
|
||||
// boolean to determine whether a sketch was found based on the URL, either through looking through the database or rendering the code
|
||||
this.foundSketch = false
|
||||
// if contains a sketch id, set sketch from id
|
||||
if(sketch_id) {
|
||||
var sketch = this.getExampleById(sketch_id)
|
||||
if(sketch) {
|
||||
// console.log('found', sketch)
|
||||
this.setSketch(sketch)
|
||||
callback(this.code, false)
|
||||
} else {
|
||||
request
|
||||
.get('/sketchById')
|
||||
.query({sketch_id: sketch_id})
|
||||
.end((err, res) => {
|
||||
// console.log('got sketches', res.text, err)
|
||||
if(err) {
|
||||
console.log('err getting sketches', err)
|
||||
this.setSketchFromCode(base64Code, callback)
|
||||
} else {
|
||||
this.sketches = JSON.parse(res.text)
|
||||
if(this.sketches.length > 0) {
|
||||
this.setSketch(this.sketches[0])
|
||||
//this.code = this.decodeBase64(this.sketches[0].code)
|
||||
this.foundSketch = true
|
||||
callback(this.code, this.foundSketch)
|
||||
} else {
|
||||
this.setSketchFromCode(base64Code, callback)
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
} else {
|
||||
this.setSketchFromCode(base64Code, callback)
|
||||
}
|
||||
//
|
||||
// // console.log('found ', sketch)
|
||||
// // if(sketch) {
|
||||
// // this.setSketch(sketch)
|
||||
// // this. = true0
|
||||
// // } else if (base64Code){
|
||||
// // this.code = this.decodeBase64(base64Code)
|
||||
// // this.foundSketch = true
|
||||
// // } else {
|
||||
// // console.log('id not found', sketch_id)
|
||||
// // this.setRandomSketch()
|
||||
// // }
|
||||
//
|
||||
// // // backwards combaitbility with earlier shareable URLS
|
||||
// } else {
|
||||
//
|
||||
// if (base64Code) {
|
||||
// this.code = this.decodeBase64(base64Code)
|
||||
// this.foundSketch = true
|
||||
// } else {
|
||||
// this.setRandomSketch()
|
||||
// }
|
||||
// }
|
||||
}
|
||||
|
||||
setSketchFromCode(base64Code, callback){
|
||||
if (base64Code) {
|
||||
this.code = this.decodeBase64(base64Code)
|
||||
this.foundSketch = true
|
||||
} else {
|
||||
this.setRandomSketch()
|
||||
}
|
||||
callback(this.code, this.foundSketch)
|
||||
}
|
||||
|
||||
saveImage() {
|
||||
|
||||
}
|
||||
|
||||
setToURL(params){
|
||||
// console.log(base64)
|
||||
// console.log('params', params)
|
||||
// keep code in url for backwards compatibility / compatibility between local and public versions
|
||||
var url_params
|
||||
if(params.sketch_id) {
|
||||
url_params = `sketch_id=${params.sketch_id}`
|
||||
} else {
|
||||
url_params = `sketch_id=${params.sketch_id}&code=${params.code}`
|
||||
}
|
||||
// } else {
|
||||
// url_params = params.map( (param, index) => `${param.label}=${param.value}`).join('&')
|
||||
// }
|
||||
// console.log('url params', url_params)
|
||||
let newurl = window.location.protocol + '//' +
|
||||
window.location.host + window.location.pathname + '?' + url_params
|
||||
// window.location.href = newurl
|
||||
|
||||
window.history.replaceState({ path: newurl }, '', newurl)
|
||||
this.url = newurl
|
||||
}
|
||||
|
||||
encodeBase64(text) {
|
||||
return btoa(encodeURIComponent(text))
|
||||
}
|
||||
decodeBase64(base64Code) {
|
||||
return decodeURIComponent(atob(base64Code))
|
||||
}
|
||||
|
||||
setSketch(sketch) {
|
||||
this.code = this.decodeBase64(sketch.code)
|
||||
this.current = sketch
|
||||
// this.setToURL('sketch_id', sketch._id)
|
||||
// let params = Object.keys(sketch).map( (key) => {
|
||||
// return {label: key, value: sketch[key]}
|
||||
// })
|
||||
this.setToURL(sketch)
|
||||
}
|
||||
|
||||
setRandomSketch() {
|
||||
// if there are sketches, set code from sketch, otherwise generate random
|
||||
//console.log("examples length", this.examples, this.exampleIndex)
|
||||
if(this.examples.length > 0) {
|
||||
let index
|
||||
// if(this.exampleIndex === null) {
|
||||
index = Math.floor(Math.random() * this.examples.length)
|
||||
while (index === this.exampleIndex) {
|
||||
index = Math.floor(Math.random() * this.examples.length)
|
||||
}
|
||||
// } else {
|
||||
// index = this.exampleIndex +1
|
||||
// if(index >= this.examples.length) index = 0
|
||||
// }
|
||||
this.exampleIndex = index
|
||||
// console.log('example is', this.examples[rand])
|
||||
this.setSketch(this.examples[index])
|
||||
} else {
|
||||
var startString = 'osc(' + 2 + Math.floor(Math.pow(10, Math.random() * 2)) + ')'
|
||||
startString += '.color(' + Math.random().toFixed(2) + ',' + Math.random().toFixed(2) + ',' + Math.random().toFixed(2)+ ')'
|
||||
startString += '.rotate(' + Math.random().toFixed(2) + ')'
|
||||
startString += '.out(o0)'
|
||||
this.code = startString
|
||||
}
|
||||
}
|
||||
|
||||
// shares via twitter
|
||||
shareSketch(code, hydra, name) {
|
||||
this.saveSketch(code, () => {
|
||||
console.log("URL is", this.url, 'sketch is', this.current)
|
||||
hydra.getScreenImage((img) => {
|
||||
request
|
||||
.post('/image')
|
||||
.attach('previewImage', img)
|
||||
.query({
|
||||
url: this.url,
|
||||
sketch_id: this.current.sketch_id,
|
||||
name: name
|
||||
})
|
||||
// .send({
|
||||
// code: base64
|
||||
// })
|
||||
// .query(query)
|
||||
.end((err, res) => {
|
||||
if(err) {
|
||||
console.log('error postingimage', err)
|
||||
} else {
|
||||
console.log('image response', res.text)
|
||||
// self.setToURL([ { label: 'sketch_id', value: res.text}, {label: 'code', value: base64} ])
|
||||
|
||||
}
|
||||
})
|
||||
// var oReq = new XMLHttpRequest();
|
||||
// oReq.open("POST", "https://localhost:8000/image", true);
|
||||
// oReq.onload = function (oEvent) {
|
||||
// // Uploaded.
|
||||
// console.log("uploaded", oEvent)
|
||||
// };
|
||||
// oReq.send(img);
|
||||
// console.log('got image', img)
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
saveSketch(code, callback) {
|
||||
let self = this
|
||||
//console.log('saving in gallery', code)
|
||||
let base64 = this.encodeBase64(code)
|
||||
// console.log('code is', base64)
|
||||
|
||||
let query = {
|
||||
code: base64,
|
||||
parent: this.current ? this.current.sketch_id : null
|
||||
}
|
||||
|
||||
console.log('saving in gallery', query)
|
||||
request
|
||||
.post('/sketch')
|
||||
// .send({
|
||||
// code: base64
|
||||
// })
|
||||
.query(query)
|
||||
.end((err, res) => {
|
||||
if(err) {
|
||||
console.log('error posting sketch', err)
|
||||
if(callback) callback(err)
|
||||
} else {
|
||||
console.log('response', res.text)
|
||||
// self.setToURL([ { label: 'sketch_id', value: res.text}, {label: 'code', value: base64} ])
|
||||
self.setSketch({
|
||||
sketch_id: res.text,
|
||||
code: base64
|
||||
})
|
||||
if(callback) callback(null)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
saveLocally(code) {
|
||||
let base64 = this.encodeBase64(code)
|
||||
|
||||
// keep code in url for backwards compatibility / compatibility between local and public versions
|
||||
var url_params = `code=${base64}`
|
||||
// } else {
|
||||
// url_params = params.map( (param, index) => `${param.label}=${param.value}`).join('&')
|
||||
// }
|
||||
//console.log('url params', url_params)
|
||||
let newurl = window.location.protocol + '//' +
|
||||
window.location.host + window.location.pathname + '?' + url_params
|
||||
window.history.pushState({ path: newurl }, '', newurl)
|
||||
this.url = newurl
|
||||
}
|
||||
|
||||
getExampleById(id) {
|
||||
//console.log('looking for', id, this.examples, this.sketches)
|
||||
var sketches = this.examples.filter((sketch) => sketch.sketch_id === id)
|
||||
if(sketches.length <= 0) sketches = this.sketches.filter((sketch) => sketch.sketch_id === id)
|
||||
return sketches[0]
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = Gallery
|
||||
@@ -1,25 +0,0 @@
|
||||
var logElement
|
||||
|
||||
module.exports = {
|
||||
init: () => {
|
||||
logElement = document.createElement('div')
|
||||
logElement.className = "console cm-s-tomorrow-night-eighties"
|
||||
document.body.appendChild(logElement)
|
||||
},
|
||||
log: (msg, className = "") => {
|
||||
if(logElement) logElement.innerHTML =` >> <span class=${className}> ${msg} </span> `
|
||||
},
|
||||
hide: () => {
|
||||
if(logElement) logElement.style.display = 'none'
|
||||
},
|
||||
show: () => {
|
||||
if(logElement) logElement.style.display = 'block'
|
||||
},
|
||||
toggle: () => {
|
||||
if(logElement.style.display == 'none') {
|
||||
logElement.style.display = 'block'
|
||||
} else {
|
||||
logElement.style.display = 'none'
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,135 +0,0 @@
|
||||
const repl = require('./repl.js')
|
||||
const beautify_js = require('js-beautify').js_beautify
|
||||
|
||||
// const prettier = require("prettier/standalone")
|
||||
// const parserBabel = require("prettier/parser-babel");
|
||||
|
||||
class Menu {
|
||||
constructor (obj) {
|
||||
this.sketches = obj.sketches
|
||||
this.editor = obj.editor
|
||||
this.hydra = obj.hydra
|
||||
|
||||
// variables related to popup window
|
||||
this.closeButton = document.getElementById("close-icon")
|
||||
this.clearButton = document.getElementById("clear-icon")
|
||||
this.shareButton = document.getElementById("share-icon")
|
||||
this.shuffleButton = document.getElementById("shuffle-icon")
|
||||
this.mutatorButton = document.getElementById("mutator-icon")
|
||||
this.runButton = document.getElementById("run-icon")
|
||||
this.editorText = document.getElementsByClassName('CodeMirror-scroll')[0]
|
||||
|
||||
this.runButton.onclick = this.runAll.bind(this)
|
||||
this.shuffleButton.onclick = this.shuffleSketches.bind(this)
|
||||
this.shareButton.onclick = this.shareSketch.bind(this)
|
||||
this.clearButton.onclick = this.clearAll.bind(this)
|
||||
this.closeButton.onclick = () => {
|
||||
if(!this.isClosed) {
|
||||
this.closeModal()
|
||||
} else {
|
||||
this.openModal()
|
||||
}
|
||||
}
|
||||
|
||||
this.mutatorButton.onclick = this.mutateSketch.bind(this);
|
||||
this.isClosed = false
|
||||
this.closeModal()
|
||||
}
|
||||
|
||||
runAll() {
|
||||
repl.eval(this.editor.getValue(), (string, err) => {
|
||||
// console.log('eval', err)
|
||||
this.editor.flashCode()
|
||||
if(!err) this.sketches.saveLocally(this.editor.getValue())
|
||||
})
|
||||
}
|
||||
|
||||
shuffleSketches() {
|
||||
this.clearAll()
|
||||
this.sketches.setRandomSketch()
|
||||
this.editor.setValue(this.sketches.code)
|
||||
repl.eval(this.editor.getValue())
|
||||
}
|
||||
|
||||
formatCode() {
|
||||
// this.editor.setValue(prettier.format(this.editor.getValue(), {
|
||||
// parser: "babel",
|
||||
// plugins: [parserBabel],
|
||||
// printWidth: 85,
|
||||
// semi: false,
|
||||
// useTabs: true,
|
||||
// arrowParens: "avoid"
|
||||
// }))
|
||||
const formatted = beautify_js(this.editor.getValue(), { indent_size: 2, "break_chained_methods": true, "indent_with_tabs": true})
|
||||
this.editor.setValue(formatted)
|
||||
}
|
||||
|
||||
shareSketch() {
|
||||
repl.eval(this.editor.getValue(), (code, error) => {
|
||||
// console.log('evaluated', code, error)
|
||||
if(!error){
|
||||
this.showConfirmation( (name) => {
|
||||
this.sketches.shareSketch(code, this.hydra, name)
|
||||
}, () => this.hideConfirmation() )
|
||||
} else {
|
||||
console.warn(error)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
showConfirmation(successCallback, terminateCallback) {
|
||||
var c = prompt("Pressing OK will share this sketch to \nhttps://twitter.com/hydra_patterns.\n\nInclude your name or twitter handle (optional):")
|
||||
// console.log('confirm value', c)
|
||||
if (c !== null) {
|
||||
successCallback(c)
|
||||
} else {
|
||||
terminateCallback()
|
||||
}
|
||||
}
|
||||
|
||||
hideConfirmation() {
|
||||
|
||||
}
|
||||
|
||||
clearAll() {
|
||||
hush()
|
||||
speed = 1
|
||||
this.sketches.clear()
|
||||
this.editor.clear()
|
||||
//@todo: add clear/reset function to hydra
|
||||
}
|
||||
|
||||
closeModal () {
|
||||
document.getElementById("info-container").className = "hidden"
|
||||
this.closeButton.className = "fas fa-question-circle icon"
|
||||
this.shareButton.classList.remove('hidden')
|
||||
this.clearButton.classList.remove('hidden')
|
||||
this.mutatorButton.classList.remove('hidden');
|
||||
this.runButton.classList.remove('hidden');
|
||||
this.editorText.style.opacity = 1
|
||||
this.isClosed = true
|
||||
}
|
||||
|
||||
openModal () {
|
||||
document.getElementById("info-container").className = ""
|
||||
this.closeButton.className = "fas fa-times icon"
|
||||
this.shareButton.classList.add('hidden')
|
||||
this.clearButton.classList.add('hidden')
|
||||
this.mutatorButton.classList.add('hidden');
|
||||
this.runButton.classList.add('hidden');
|
||||
this.editorText.style.opacity = 0.0
|
||||
this.isClosed = false
|
||||
}
|
||||
|
||||
mutateSketch(evt) {
|
||||
if (evt.shiftKey) {
|
||||
this.editor.mutator.doUndo();
|
||||
} else {
|
||||
this.editor.mutator.mutate({reroll: false, changeTransform: evt.metaKey});
|
||||
this.formatCode();
|
||||
this.sketches.saveLocally(this.editor.getValue())
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = Menu
|
||||
@@ -1,42 +0,0 @@
|
||||
//'use babel'
|
||||
|
||||
// const p5lib = require('p5')
|
||||
|
||||
class P5 extends p5{
|
||||
constructor ({
|
||||
width = window.innerWidth,
|
||||
height = window.innerHeight,
|
||||
mode = 'P2D'
|
||||
} = {}) {
|
||||
//console.log('createing canvas', width, height, window.innerWidth, window.innerHeight)
|
||||
super(( p ) => {
|
||||
p.setup = () => { p.createCanvas(width, height, p[mode]) }
|
||||
// p.setup = () => { p.createCanvas() }
|
||||
p.draw = () => { }
|
||||
}, 'hydra-ui')
|
||||
this.width = width
|
||||
this.height = height
|
||||
this.mode = mode
|
||||
this.canvas.style.position = "absolute"
|
||||
this.canvas.style.top = "0px"
|
||||
this.canvas.style.left = "0px"
|
||||
this.canvas.style.zIndex = -1
|
||||
// console.log('p5', this)
|
||||
// return this.p5
|
||||
}
|
||||
|
||||
show() {
|
||||
this.canvas.style.visibility = "visible"
|
||||
}
|
||||
|
||||
hide() {
|
||||
this.canvas.style.visibility = "hidden"
|
||||
}
|
||||
|
||||
// p5 clear function not covering canvas
|
||||
clear() {
|
||||
this.drawingContext.clearRect(0, 0, this.canvas.width, this.canvas.height)
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = P5
|
||||
@@ -1,138 +0,0 @@
|
||||
/* globals sessionStorage */
|
||||
// Extends rtc-patch-bay to include support for nicknames and persistent session storage
|
||||
|
||||
var PatchBay = require('./rtc-patch-bay.js')
|
||||
//var PatchBay = require('./../../../../rtc-patch-bay')
|
||||
var inherits = require('inherits')
|
||||
|
||||
var PBLive = function () {
|
||||
this.session = {}
|
||||
|
||||
// lookup tables for converting id to nickname
|
||||
this.nickFromId = {}
|
||||
this.idFromNick = {}
|
||||
|
||||
this.loadFromStorage()
|
||||
}
|
||||
// inherits from PatchBay module
|
||||
inherits(PBLive, PatchBay)
|
||||
|
||||
PBLive.prototype.init = function (stream, opts) {
|
||||
this.settings = {
|
||||
server: opts.server || 'https://patch-bay.glitch.me/',
|
||||
room: opts.room || 'patch-bay',
|
||||
stream: stream
|
||||
}
|
||||
|
||||
this.makeGlobal = opts.makeGlobal || true
|
||||
this.setPageTitle = opts.setTitle || true
|
||||
|
||||
if (this.session.id) this.settings.id = this.session.id
|
||||
|
||||
PatchBay.call(this, this.settings)
|
||||
|
||||
if (this.makeGlobal) window.pb = this
|
||||
|
||||
this.on('ready', () => {
|
||||
if (!this.nick) {
|
||||
if (this.session.nick) {
|
||||
this.setName(this.session.nick)
|
||||
} else {
|
||||
this.session.id = this.id
|
||||
this.setName(this.session.id)
|
||||
}
|
||||
}
|
||||
console.log('connected to server ' + this.settings.server + ' with name ' + this.settings.id)
|
||||
})
|
||||
// received a broadcast
|
||||
this.on('broadcast', this._processBroadcast.bind(this))
|
||||
this.on('new peer', this.handleNewPeer.bind(this))
|
||||
|
||||
window.onbeforeunload = () => {
|
||||
this.session.id = window.pb.id
|
||||
this.session.nick = this.nick
|
||||
sessionStorage.setItem('pb', JSON.stringify(this.session))
|
||||
}
|
||||
|
||||
var self = this
|
||||
this.on('stream', function (id, stream) {
|
||||
console.log('got stream!', id, stream)
|
||||
const video = document.createElement('video')
|
||||
if ('srcObject' in video) {
|
||||
video.srcObject = stream
|
||||
} else {
|
||||
// Avoid using this in new browsers, as it is going away.
|
||||
video.src = window.URL.createObjectURL(stream)
|
||||
}
|
||||
// video.src = window.URL.createObjectURL(stream)
|
||||
video.addEventListener('loadedmetadata', () => {
|
||||
// console.log("loaded meta22")
|
||||
video.play()
|
||||
self.video = video
|
||||
self.emit('got video', self.nickFromId[id], video)
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
PBLive.prototype.loadFromStorage = function () {
|
||||
if (sessionStorage.getItem('pb') !== null) {
|
||||
this.session = JSON.parse(sessionStorage.getItem('pb'))
|
||||
}
|
||||
}
|
||||
|
||||
PBLive.prototype.initSource = function (nick, callback) {
|
||||
this.initConnectionFromId(this.idFromNick[nick], callback)
|
||||
// this.peers[this.idFromNick[nick]].streamCallback = callback
|
||||
}
|
||||
|
||||
// default nickname is just peer id.
|
||||
// to do: save nickname information between sessions
|
||||
PBLive.prototype.handleNewPeer = function (peer) {
|
||||
// console.log("new peer", peer)
|
||||
this.nickFromId[peer] = peer
|
||||
this.idFromNick[peer] = peer
|
||||
// console.log("THIS IS THE PEER", peer)
|
||||
// to do: only send to new peer, not to all
|
||||
if (this.nick) {
|
||||
this.broadcast({
|
||||
type: 'update-nick',
|
||||
id: this.id,
|
||||
nick: this.nick
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
PBLive.prototype.list = function () {
|
||||
var l = Object.keys(this.idFromNick)
|
||||
//console.log(l)
|
||||
return Object.keys(this.idFromNick)
|
||||
}
|
||||
|
||||
// choose an identifying name
|
||||
PBLive.prototype.setName = function (nick) {
|
||||
this.broadcast({
|
||||
type: 'update-nick',
|
||||
id: this.id,
|
||||
nick: nick,
|
||||
previous: this.nick
|
||||
})
|
||||
this.nick = nick
|
||||
if (this.setPageTitle) document.title = nick
|
||||
}
|
||||
|
||||
PBLive.prototype._processBroadcast = function (data) {
|
||||
if (data.type === 'update-nick') {
|
||||
if (data.previous !== data.nick) {
|
||||
delete this.idFromNick[this.nickFromId[data.id]]
|
||||
this.nickFromId[data.id] = data.nick
|
||||
this.idFromNick[data.nick] = data.id
|
||||
if (data.previous) {
|
||||
//console.log(data.previous + ' changed to ' + data.nick)
|
||||
} else {
|
||||
//console.log('connected to ' + data.nick)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
// PBExtended.prototype.
|
||||
module.exports = PBLive
|
||||
@@ -1,27 +0,0 @@
|
||||
const log = require('./log.js').log
|
||||
|
||||
module.exports = {
|
||||
eval: (arg, callback) => {
|
||||
var self = this
|
||||
|
||||
// wrap everything in an async function
|
||||
var jsString = `(async() => {
|
||||
${arg}
|
||||
})().catch(${(err) => log(err.message, "log-error")})`
|
||||
var isError = false
|
||||
try {
|
||||
eval(jsString)
|
||||
// log(jsString)
|
||||
log('')
|
||||
} catch (e) {
|
||||
isError = true
|
||||
console.log("logging", e)
|
||||
// var err = e.constructor('Error in Evaled Script: ' + e.message);
|
||||
// console.log(err.lineNumber)
|
||||
log(e.message, "log-error")
|
||||
//console.log('ERROR', JSON.stringify(e))
|
||||
}
|
||||
// console.log('callback is', callback)
|
||||
if(callback) callback(jsString, isError)
|
||||
}
|
||||
}
|
||||
@@ -1,251 +0,0 @@
|
||||
// Module for handling connections to multiple peers.
|
||||
|
||||
|
||||
var io = require('socket.io-client')
|
||||
var SimplePeer = require('simple-peer')
|
||||
var extend = Object.assign
|
||||
var events = require('events').EventEmitter
|
||||
var inherits = require('inherits')
|
||||
const shortid = require('shortid')
|
||||
|
||||
var PatchBay = function (options) {
|
||||
// connect to websocket signalling server. To DO: error validation
|
||||
this.signaller = io(options.server)
|
||||
|
||||
//assign unique id to this peer, or use id passed in
|
||||
|
||||
this.id = options.id || shortid.generate()
|
||||
|
||||
this.stream = options.stream || null
|
||||
|
||||
//options to be sent to simple peer
|
||||
this._peerOptions = options.peerOptions || {}
|
||||
this._room = options.room
|
||||
|
||||
|
||||
this.settings['shareMediaWhenRequested'] = true
|
||||
this.settings['shareMediaWhenInitiating'] = false
|
||||
this.settings['requestMediaWhenInitiating'] = true
|
||||
this.settings['autoconnect'] = false
|
||||
|
||||
//object containing ALL peers in room
|
||||
this.peers = {}
|
||||
|
||||
//object containing peers connected via webrtc
|
||||
this.rtcPeers = {}
|
||||
|
||||
// Handle events from signalling server
|
||||
this.signaller.on('ready', this._readyForSignalling.bind(this))
|
||||
// this.signaller.on('peers', )
|
||||
// this.signaller.on('signal', this._handleSignal.bind(this))
|
||||
this.signaller.on('message', this._handleMessage.bind(this))
|
||||
// Received message via websockets to all peers in room
|
||||
this.signaller.on('broadcast', this._receivedBroadcast.bind(this))
|
||||
|
||||
// emit 'join' event to signalling server
|
||||
this.signaller.emit('join', this._room, {uuid: this.id})
|
||||
|
||||
this.signaller.on('new peer', this._newPeer.bind(this))
|
||||
}
|
||||
// inherits from events module in order to trigger events
|
||||
inherits(PatchBay, events)
|
||||
|
||||
// send data to all connected peers via data channels
|
||||
PatchBay.prototype.sendToAll = function (data) {
|
||||
Object.keys(this.rtcPeers).forEach(function (id) {
|
||||
this.rtcPeers[id].send(data)
|
||||
}, this)
|
||||
}
|
||||
|
||||
// sends to peer specified b
|
||||
PatchBay.prototype.sendToPeer = function (peerId, data) {
|
||||
if (peerId in this.rtcPeers) {
|
||||
this.rtcPeers[peerId].send(data)
|
||||
}
|
||||
}
|
||||
|
||||
PatchBay.prototype.reinitAll = function(){
|
||||
Object.keys(this.rtcPeers).forEach(function (id) {
|
||||
this.reinitPeer(id)
|
||||
}.bind(this))
|
||||
// this._connectToPeers.bind(this)
|
||||
}
|
||||
|
||||
PatchBay.prototype.initRtcPeer = function(id, opts) {
|
||||
this.emit('new peer', {id: id})
|
||||
var newOptions = opts
|
||||
// console.log()
|
||||
if(this.iceServers) {
|
||||
opts['config'] = {
|
||||
iceServers: this.iceServers
|
||||
}
|
||||
}
|
||||
|
||||
if(opts.initiator === true) {
|
||||
if (this.stream != null) {
|
||||
if(this.settings.shareMediaWhenInitiating === true){
|
||||
newOptions.stream = this.stream
|
||||
}
|
||||
}
|
||||
if(this.settings.requestMediaWhenInitiating === true){
|
||||
newOptions.offerConstraints = {
|
||||
offerToReceiveVideo: true,
|
||||
offerToReceiveAudio: true
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if(this.settings.shareMediaWhenRequested === true){
|
||||
if (this.stream != null) {
|
||||
newOptions.stream = this.stream
|
||||
}
|
||||
}
|
||||
}
|
||||
var options = extend(this._peerOptions, newOptions)
|
||||
//console.log("OPTIONS", options)
|
||||
this.rtcPeers[id] = new SimplePeer(options)
|
||||
this._attachPeerEvents(this.rtcPeers[id], id)
|
||||
}
|
||||
|
||||
PatchBay.prototype.reinitRtcConnection = function(id, opts){
|
||||
// Because renegotiation is not implemeneted in SimplePeer, reinitiate connection when configuration has changed
|
||||
this.rtcPeers[id]._destroy(null, function(e){
|
||||
this.initRtcPeer(id, {
|
||||
stream: this.stream,
|
||||
initiator: true
|
||||
})
|
||||
}.bind(this))
|
||||
}
|
||||
// //new peer connected to signalling server
|
||||
PatchBay.prototype._newPeer = function (peer){
|
||||
// this.connectedIds.push(peer)
|
||||
|
||||
|
||||
// Configuration for specified peer.
|
||||
// Individual configuration controls whether will receive media from
|
||||
// and/or send media to a specific peer.
|
||||
|
||||
this.peers[peer] = {
|
||||
rtcPeer: null
|
||||
}
|
||||
|
||||
this.emit('new peer', peer)
|
||||
// this.emit('updated peer list', this.connectedIds)
|
||||
}
|
||||
// // Once the new peer receives a list of connected peers from the server,
|
||||
// // creates new simple peer object for each connected peer.
|
||||
PatchBay.prototype._readyForSignalling = function ({ peers, servers }) {
|
||||
// console.log("received peer list", _t, this.peers)
|
||||
|
||||
peers.forEach((peer) => {
|
||||
this._newPeer(peer)
|
||||
})
|
||||
|
||||
// if received ice and turn server information from signalling server, use in establishing
|
||||
if(servers) {
|
||||
this.iceServers = servers
|
||||
}
|
||||
// this.peers = peers
|
||||
this.emit('ready')
|
||||
}
|
||||
|
||||
// Init connection to RECEIVE video
|
||||
PatchBay.prototype.initConnectionFromId = function(id, callback){
|
||||
// console.log("initianing connection")
|
||||
if(id in this.rtcPeers){
|
||||
console.log("Already connected to..", id, this.rtcPeers)
|
||||
//if this peer was originally only sending a stream (not receiving), recreate connecting but this time two-way
|
||||
if(this.rtcPeers[id].initiator===false){
|
||||
this.reinitRtcConnection(id)
|
||||
} else {
|
||||
//already connected, do nothing
|
||||
|
||||
}
|
||||
} else {
|
||||
this.initRtcPeer(id, {
|
||||
initiator: true
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// receive signal from signalling server, forward to simple-peer
|
||||
PatchBay.prototype._handleMessage = function (data) {
|
||||
// if there is currently no peer object for a peer id, that peer is initiating a new connection.
|
||||
|
||||
if (data.type === 'signal'){
|
||||
this._handleSignal(data)
|
||||
} else {
|
||||
this.emit('message', data)
|
||||
}
|
||||
}
|
||||
// receive signal from signalling server, forward to simple-peer
|
||||
PatchBay.prototype._handleSignal = function (data) {
|
||||
// if there is currently no peer object for a peer id, that peer is initiating a new connection.
|
||||
if (!this.rtcPeers[data.id]) {
|
||||
// this.emit('new peer', data)
|
||||
// var options = extend({stream: this.stream}, this._peerOptions)
|
||||
// this.rtcPeers[data.id] = new SimplePeer(options)
|
||||
// this._attachPeerEvents(this.rtcPeers[data.id], data.id)
|
||||
|
||||
this.initRtcPeer(data.id, {initiator: false})
|
||||
}
|
||||
this.rtcPeers[data.id].signal(data.message)
|
||||
}
|
||||
// sendToAll send through rtc connections, whereas broadcast
|
||||
// send through the signalling server. Useful in cases where
|
||||
// not all peers are connected via webrtc with other peers
|
||||
PatchBay.prototype._receivedBroadcast = function(data) {
|
||||
//console.log("RECEIVED BROADCAST", data)
|
||||
this.emit('broadcast', data)
|
||||
}
|
||||
|
||||
//sends via signalling server
|
||||
PatchBay.prototype.broadcast = function (data) {
|
||||
this.signaller.emit('broadcast', data)
|
||||
}
|
||||
// handle events for each connected peer
|
||||
PatchBay.prototype._attachPeerEvents = function (p, _id) {
|
||||
p.on('signal', function (id, signal) {
|
||||
// console.log('signal', id, signal)
|
||||
// console.log("peer signal sending over sockets", id, signal)
|
||||
// this.signaller.emit('signal', {id: id, signal: signal})
|
||||
this.signaller.emit('message', {id: id, message: signal, type: 'signal'})
|
||||
}.bind(this, _id))
|
||||
|
||||
p.on('stream', function (id, stream) {
|
||||
this.rtcPeers[id].stream = stream
|
||||
// console.log('E: stream', id, stream)
|
||||
// console.log("received a stream", stream)
|
||||
this.emit('stream', id, stream)
|
||||
}.bind(this, _id))
|
||||
|
||||
p.on('connect', function (id) {
|
||||
// console.log("connected to ", id)
|
||||
this.emit('connect', id)
|
||||
}.bind(this, _id))
|
||||
|
||||
p.on('data', function (id, data) {
|
||||
// console.log('data', id)
|
||||
this.emit('data', {id: id, data: JSON.parse(data)})
|
||||
}.bind(this, _id))
|
||||
|
||||
p.on('close', function (id) {
|
||||
//console.log('CLOSED')
|
||||
delete (this.rtcPeers[id])
|
||||
this.emit('close', id)
|
||||
}.bind(this, _id))
|
||||
|
||||
p.on('error', function(e){
|
||||
console.warn("simple peer error", e)
|
||||
})
|
||||
}
|
||||
|
||||
PatchBay.prototype._destroy = function () {
|
||||
Object.values(this.rtcPeers).forEach( function (peer) {
|
||||
peer.destroy()
|
||||
})
|
||||
this.signaller.close()
|
||||
}
|
||||
|
||||
|
||||
module.exports = PatchBay
|
||||
@@ -119,4 +119,6 @@ io.on('connection', function (socket) {
|
||||
// TO DO: on disconnect, remove from label dictionary
|
||||
})
|
||||
|
||||
app.use('/api', express.static(path.join(__dirname, '../frontend/hydra-functions/docs')))
|
||||
|
||||
app.use(express.static(path.join(__dirname, '../frontend/web-editor/public')))
|
||||
|
||||
1
frontend/hydra-functions
Submodule
1
frontend/hydra-functions
Submodule
Submodule frontend/hydra-functions added at 764f247bd0
@@ -1,12 +1,13 @@
|
||||
{
|
||||
"name": "hydra",
|
||||
"version": "1.2.14",
|
||||
"version": "1.2.15",
|
||||
"description": "",
|
||||
"main": "server.js",
|
||||
"scripts": {
|
||||
"serve": "yarn --cwd backend start",
|
||||
"build": "yarn --cwd frontend/web-editor build",
|
||||
"watch": "yarn --cwd frontend/web-editor watch",
|
||||
"build:editor": "yarn --cwd frontend/web-editor build",
|
||||
"watch:editor": "yarn --cwd frontend/web-editor watch",
|
||||
"build:api": "yarn --cwd frontend/hydra-functions build",
|
||||
"dev": "yarn watch & yarn serve",
|
||||
"test": "echo \"Error: no test specified\" && exit 1"
|
||||
},
|
||||
|
||||
599
yarn.lock
599
yarn.lock
@@ -2,6 +2,170 @@
|
||||
# yarn lockfile v1
|
||||
|
||||
|
||||
"@babel/runtime@^7.12.0", "@babel/runtime@^7.14.6":
|
||||
version "7.17.2"
|
||||
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.17.2.tgz#66f68591605e59da47523c631416b18508779941"
|
||||
integrity sha512-hzeyJyMA1YGdJTuWU0e/j4wKXrU4OMFvY2MSlaI9B7VQb0r5cxTE3EAIS2Q7Tn2RIcDkRvTA/v2JsAEhxe99uw==
|
||||
dependencies:
|
||||
regenerator-runtime "^0.13.4"
|
||||
|
||||
"@codemirror/autocomplete@^0.19.0":
|
||||
version "0.19.12"
|
||||
resolved "https://registry.yarnpkg.com/@codemirror/autocomplete/-/autocomplete-0.19.12.tgz#4c9e4487b45e6877807e4f16c1fffd5e7639ae52"
|
||||
integrity sha512-zUQYo5gMdv7vhxlKoAY/vnNCGzlE9AU7+P649v3ovpQpoFdo3U1Nt01EJqFb4Sfaw6l1U/Elc9Iksd1lDy+MVw==
|
||||
dependencies:
|
||||
"@codemirror/language" "^0.19.0"
|
||||
"@codemirror/state" "^0.19.4"
|
||||
"@codemirror/text" "^0.19.2"
|
||||
"@codemirror/tooltip" "^0.19.12"
|
||||
"@codemirror/view" "^0.19.0"
|
||||
"@lezer/common" "^0.15.0"
|
||||
|
||||
"@codemirror/commands@^0.19.7":
|
||||
version "0.19.8"
|
||||
resolved "https://registry.yarnpkg.com/@codemirror/commands/-/commands-0.19.8.tgz#1f99c1a8bf200d17c4d6997379099459f3678107"
|
||||
integrity sha512-65LIMSGUGGpY3oH6mzV46YWRrgao6NmfJ+AuC7jNz3K5NPnH6GCV1H5I6SwOFyVbkiygGyd0EFwrWqywTBD1aw==
|
||||
dependencies:
|
||||
"@codemirror/language" "^0.19.0"
|
||||
"@codemirror/matchbrackets" "^0.19.0"
|
||||
"@codemirror/state" "^0.19.2"
|
||||
"@codemirror/text" "^0.19.6"
|
||||
"@codemirror/view" "^0.19.22"
|
||||
"@lezer/common" "^0.15.0"
|
||||
|
||||
"@codemirror/gutter@^0.19.4":
|
||||
version "0.19.9"
|
||||
resolved "https://registry.yarnpkg.com/@codemirror/gutter/-/gutter-0.19.9.tgz#bbb69f4d49570d9c1b3f3df5d134980c516cd42b"
|
||||
integrity sha512-PFrtmilahin1g6uL27aG5tM/rqR9DZzZYZsIrCXA5Uc2OFTFqx4owuhoU9hqfYxHp5ovfvBwQ+txFzqS4vog6Q==
|
||||
dependencies:
|
||||
"@codemirror/rangeset" "^0.19.0"
|
||||
"@codemirror/state" "^0.19.0"
|
||||
"@codemirror/view" "^0.19.23"
|
||||
|
||||
"@codemirror/highlight@^0.19.7":
|
||||
version "0.19.7"
|
||||
resolved "https://registry.yarnpkg.com/@codemirror/highlight/-/highlight-0.19.7.tgz#91a0c9994c759f5f153861e3aae74ff9e7c7c35b"
|
||||
integrity sha512-3W32hBCY0pbbv/xidismw+RDMKuIag+fo4kZIbD7WoRj+Ttcaxjf+vP6RttRHXLaaqbWh031lTeON8kMlDhMYw==
|
||||
dependencies:
|
||||
"@codemirror/language" "^0.19.0"
|
||||
"@codemirror/rangeset" "^0.19.0"
|
||||
"@codemirror/state" "^0.19.3"
|
||||
"@codemirror/view" "^0.19.0"
|
||||
"@lezer/common" "^0.15.0"
|
||||
style-mod "^4.0.0"
|
||||
|
||||
"@codemirror/lang-javascript@^0.19.6":
|
||||
version "0.19.7"
|
||||
resolved "https://registry.yarnpkg.com/@codemirror/lang-javascript/-/lang-javascript-0.19.7.tgz#84581ef6abf2a16d78f017ffc96c2d6227de5eb5"
|
||||
integrity sha512-DL9f3JLqOEHH9cIwEqqjnP5bkjdVXeECksLtV+/MbPm+l4H+AG+PkwZaJQ2oR1GfPZKh8MVSIE94aGWNkJP8WQ==
|
||||
dependencies:
|
||||
"@codemirror/autocomplete" "^0.19.0"
|
||||
"@codemirror/highlight" "^0.19.7"
|
||||
"@codemirror/language" "^0.19.0"
|
||||
"@codemirror/lint" "^0.19.0"
|
||||
"@codemirror/state" "^0.19.0"
|
||||
"@codemirror/view" "^0.19.0"
|
||||
"@lezer/javascript" "^0.15.1"
|
||||
|
||||
"@codemirror/language@^0.19.0":
|
||||
version "0.19.7"
|
||||
resolved "https://registry.yarnpkg.com/@codemirror/language/-/language-0.19.7.tgz#9eef8e827692d93a701b18db9d46a42be34ecca6"
|
||||
integrity sha512-pNNUtYWMIMG0lUSKyUXJr8U0rFiCKsKFXbA2Oj17PC+S1FY99hV0z1vcntW67ekAIZw9DMEUQnLsKBuIbAUX7Q==
|
||||
dependencies:
|
||||
"@codemirror/state" "^0.19.0"
|
||||
"@codemirror/text" "^0.19.0"
|
||||
"@codemirror/view" "^0.19.0"
|
||||
"@lezer/common" "^0.15.5"
|
||||
"@lezer/lr" "^0.15.0"
|
||||
|
||||
"@codemirror/lint@^0.19.0":
|
||||
version "0.19.3"
|
||||
resolved "https://registry.yarnpkg.com/@codemirror/lint/-/lint-0.19.3.tgz#84101d0967fea8df114a8f0f79965c22ccd3b3cc"
|
||||
integrity sha512-+c39s05ybD2NjghxkPFsUbH/qBL0cdzKmtHbzUm0RVspeL2OiP7uHYJ6J5+Qr9RjMIPWzcqSauRqxfmCrctUfg==
|
||||
dependencies:
|
||||
"@codemirror/gutter" "^0.19.4"
|
||||
"@codemirror/panel" "^0.19.0"
|
||||
"@codemirror/rangeset" "^0.19.1"
|
||||
"@codemirror/state" "^0.19.4"
|
||||
"@codemirror/tooltip" "^0.19.5"
|
||||
"@codemirror/view" "^0.19.0"
|
||||
crelt "^1.0.5"
|
||||
|
||||
"@codemirror/matchbrackets@^0.19.0":
|
||||
version "0.19.4"
|
||||
resolved "https://registry.yarnpkg.com/@codemirror/matchbrackets/-/matchbrackets-0.19.4.tgz#50b5188eb2d53f32598dca906bf5fd66626a9ebc"
|
||||
integrity sha512-VFkaOKPNudAA5sGP1zikRHCEKU0hjYmkKpr04pybUpQvfTvNJXlReCyP0rvH/1iEwAGPL990ZTT+QrLdu4MeEA==
|
||||
dependencies:
|
||||
"@codemirror/language" "^0.19.0"
|
||||
"@codemirror/state" "^0.19.0"
|
||||
"@codemirror/view" "^0.19.0"
|
||||
"@lezer/common" "^0.15.0"
|
||||
|
||||
"@codemirror/panel@^0.19.0":
|
||||
version "0.19.1"
|
||||
resolved "https://registry.yarnpkg.com/@codemirror/panel/-/panel-0.19.1.tgz#bf77d27b962cf16357139e50864d0eb69d634441"
|
||||
integrity sha512-sYeOCMA3KRYxZYJYn5PNlt9yNsjy3zTNTrbYSfVgjgL9QomIVgOJWPO5hZ2sTN8lufO6lw0vTBsIPL9MSidmBg==
|
||||
dependencies:
|
||||
"@codemirror/state" "^0.19.0"
|
||||
"@codemirror/view" "^0.19.0"
|
||||
|
||||
"@codemirror/rangeset@^0.19.0", "@codemirror/rangeset@^0.19.1", "@codemirror/rangeset@^0.19.5":
|
||||
version "0.19.6"
|
||||
resolved "https://registry.yarnpkg.com/@codemirror/rangeset/-/rangeset-0.19.6.tgz#2562850cb4ce7dd30088f4d13a13860b67e7d384"
|
||||
integrity sha512-wYtgGnW2Jtrh2nj7vpcBoEZib+jfyilrLN6w7YMTzzSRN8xXhYRorOUg4VQIa1JwFcMQrjSCkIdqXsDqOX1cYg==
|
||||
dependencies:
|
||||
"@codemirror/state" "^0.19.0"
|
||||
|
||||
"@codemirror/state@^0.19.0", "@codemirror/state@^0.19.2", "@codemirror/state@^0.19.3", "@codemirror/state@^0.19.4", "@codemirror/state@^0.19.6":
|
||||
version "0.19.6"
|
||||
resolved "https://registry.yarnpkg.com/@codemirror/state/-/state-0.19.6.tgz#d631f041d39ce41b7891b099fca26cb1fdb9763e"
|
||||
integrity sha512-sqIQZE9VqwQj7D4c2oz9mfLhlT1ElAzGB5lO1lE33BPyrdNy1cJyCIOecT4cn4VeJOFrnjOeu+IftZ3zqdFETw==
|
||||
dependencies:
|
||||
"@codemirror/text" "^0.19.0"
|
||||
|
||||
"@codemirror/text@^0.19.0", "@codemirror/text@^0.19.2", "@codemirror/text@^0.19.6":
|
||||
version "0.19.6"
|
||||
resolved "https://registry.yarnpkg.com/@codemirror/text/-/text-0.19.6.tgz#9adcbd8137f69b75518eacd30ddb16fd67bbac45"
|
||||
integrity sha512-T9jnREMIygx+TPC1bOuepz18maGq/92q2a+n4qTqObKwvNMg+8cMTslb8yxeEDEq7S3kpgGWxgO1UWbQRij0dA==
|
||||
|
||||
"@codemirror/tooltip@^0.19.12", "@codemirror/tooltip@^0.19.5":
|
||||
version "0.19.13"
|
||||
resolved "https://registry.yarnpkg.com/@codemirror/tooltip/-/tooltip-0.19.13.tgz#4af381aead14d9d7091258bdd6a5de7dc5f56915"
|
||||
integrity sha512-7vgvjQjwFQ9hPejw2s+w3UR1XAYjQ5M0F9HRwutXkZHP1tBFV7LnNJ3xBD7F9SR9kAh8WgdL3BpUsEwX1aqoQg==
|
||||
dependencies:
|
||||
"@codemirror/state" "^0.19.0"
|
||||
"@codemirror/view" "^0.19.0"
|
||||
|
||||
"@codemirror/view@^0.19.0", "@codemirror/view@^0.19.22", "@codemirror/view@^0.19.23", "@codemirror/view@^0.19.39":
|
||||
version "0.19.42"
|
||||
resolved "https://registry.yarnpkg.com/@codemirror/view/-/view-0.19.42.tgz#5170a2f81bb781a1fe9e33f3ab13954ca25a7b18"
|
||||
integrity sha512-sGpuHYesqNThkAdJHTf4BO0hBeYnAHwamnCGkM6a2G/W5svRJGsFb5Vk/LQPQurDKK9V5fBTRqXH8nKGrIszng==
|
||||
dependencies:
|
||||
"@codemirror/rangeset" "^0.19.5"
|
||||
"@codemirror/state" "^0.19.3"
|
||||
"@codemirror/text" "^0.19.0"
|
||||
style-mod "^4.0.0"
|
||||
w3c-keyname "^2.2.4"
|
||||
|
||||
"@lezer/common@^0.15.0", "@lezer/common@^0.15.5":
|
||||
version "0.15.11"
|
||||
resolved "https://registry.yarnpkg.com/@lezer/common/-/common-0.15.11.tgz#965b5067036305f12e8a3efc344076850be1d3a8"
|
||||
integrity sha512-vv0nSdIaVCRcJ8rPuDdsrNVfBOYe/4Szr/LhF929XyDmBndLDuWiCCHooGlGlJfzELyO608AyDhVsuX/ZG36NA==
|
||||
|
||||
"@lezer/javascript@^0.15.1":
|
||||
version "0.15.3"
|
||||
resolved "https://registry.yarnpkg.com/@lezer/javascript/-/javascript-0.15.3.tgz#833a4c5650bae07805b9af88de6706368844dc55"
|
||||
integrity sha512-8jA2NpOfpWwSPZxRhd9BxK2ZPvGd7nLE3LFTJ5AbMhXAzMHeMjneV6GEVd7dAIee85dtap0jdb6bgOSO0+lfwA==
|
||||
dependencies:
|
||||
"@lezer/lr" "^0.15.0"
|
||||
|
||||
"@lezer/lr@^0.15.0":
|
||||
version "0.15.8"
|
||||
resolved "https://registry.yarnpkg.com/@lezer/lr/-/lr-0.15.8.tgz#1564a911e62b0a0f75ca63794a6aa8c5dc63db21"
|
||||
integrity sha512-bM6oE6VQZ6hIFxDNKk8bKPa14hqFrV07J/vHGOeiAbJReIaQXmkVb6xQu4MR+JBTLa5arGRyAAjJe1qaQt3Uvg==
|
||||
dependencies:
|
||||
"@lezer/common" "^0.15.0"
|
||||
|
||||
"@socket.io/component-emitter@~3.0.0":
|
||||
version "3.0.0"
|
||||
resolved "https://registry.yarnpkg.com/@socket.io/component-emitter/-/component-emitter-3.0.0.tgz#8863915676f837d9dad7b76f50cb500c1e9422e9"
|
||||
@@ -28,7 +192,7 @@ accepts@~1.3.4, accepts@~1.3.7:
|
||||
mime-types "~2.1.24"
|
||||
negotiator "0.6.2"
|
||||
|
||||
acorn-node@^1.2.0, acorn-node@^1.3.0, acorn-node@^1.5.2, acorn-node@^1.6.1:
|
||||
acorn-node@^1.2.0, acorn-node@^1.3.0, acorn-node@^1.5.2, acorn-node@^1.6.1, acorn-node@^1.8.2:
|
||||
version "1.8.2"
|
||||
resolved "https://registry.yarnpkg.com/acorn-node/-/acorn-node-1.8.2.tgz#114c95d64539e53dede23de8b9d96df7c7ae2af8"
|
||||
integrity sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==
|
||||
@@ -74,11 +238,21 @@ ajv@^6.12.3:
|
||||
json-schema-traverse "^0.4.1"
|
||||
uri-js "^4.2.2"
|
||||
|
||||
ansi-regex@^2.0.0:
|
||||
version "2.1.1"
|
||||
resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df"
|
||||
integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8=
|
||||
|
||||
ansi-regex@^5.0.1:
|
||||
version "5.0.1"
|
||||
resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304"
|
||||
integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==
|
||||
|
||||
ansi-styles@^2.2.1:
|
||||
version "2.2.1"
|
||||
resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe"
|
||||
integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=
|
||||
|
||||
ansi-styles@^3.2.1:
|
||||
version "3.2.1"
|
||||
resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d"
|
||||
@@ -328,6 +502,11 @@ browser-pack@^6.0.1:
|
||||
through2 "^2.0.0"
|
||||
umd "^3.0.0"
|
||||
|
||||
browser-process-hrtime@^0.1.2:
|
||||
version "0.1.3"
|
||||
resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-0.1.3.tgz#616f00faef1df7ec1b5bf9cfe2bdc3170f26c7b4"
|
||||
integrity sha512-bRFnI4NnjO6cnyLmOV/7PVoDEMJChlcfN0z4s1YMBY989/SvlfMI1lgCnkFUs53e9gQF+w7qu7XdllSTiSl8Aw==
|
||||
|
||||
browser-resolve@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/browser-resolve/-/browser-resolve-2.0.0.tgz#99b7304cb392f8d73dba741bb2d7da28c6d7842b"
|
||||
@@ -535,11 +714,30 @@ call-bind@^1.0.0, call-bind@^1.0.2:
|
||||
function-bind "^1.1.1"
|
||||
get-intrinsic "^1.0.2"
|
||||
|
||||
camel-case@^3.0.0:
|
||||
version "3.0.0"
|
||||
resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-3.0.0.tgz#ca3c3688a4e9cf3a4cda777dc4dcbc713249cf73"
|
||||
integrity sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M=
|
||||
dependencies:
|
||||
no-case "^2.2.0"
|
||||
upper-case "^1.1.1"
|
||||
|
||||
caseless@~0.12.0:
|
||||
version "0.12.0"
|
||||
resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc"
|
||||
integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=
|
||||
|
||||
chalk@^1.1.3:
|
||||
version "1.1.3"
|
||||
resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98"
|
||||
integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=
|
||||
dependencies:
|
||||
ansi-styles "^2.2.1"
|
||||
escape-string-regexp "^1.0.2"
|
||||
has-ansi "^2.0.0"
|
||||
strip-ansi "^3.0.0"
|
||||
supports-color "^2.0.0"
|
||||
|
||||
chalk@^2.4.2:
|
||||
version "2.4.2"
|
||||
resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424"
|
||||
@@ -572,6 +770,50 @@ chokidar@^3.4.0:
|
||||
optionalDependencies:
|
||||
fsevents "~2.3.2"
|
||||
|
||||
choo-devtools@^3.0.4:
|
||||
version "3.0.4"
|
||||
resolved "https://registry.yarnpkg.com/choo-devtools/-/choo-devtools-3.0.4.tgz#f3432d1818259b8a8291a4571b8fd3b987de9836"
|
||||
integrity sha512-hk4eInNHLZbEDHbBScWi1jMi9KeqHJsHgMBAgubb/OAP8Y46q5xM/7awaXi4HSJuDfjTZ9ON8ZHWGsaQRpJqEQ==
|
||||
dependencies:
|
||||
choo-hooks "^1.0.0"
|
||||
clone "^2.1.2"
|
||||
nanologger "^2.0.0"
|
||||
nanoscheduler "^1.0.0"
|
||||
object-change-callsite "^1.0.2"
|
||||
on-performance "^1.2.1"
|
||||
plucker "0.0.0"
|
||||
prettier-bytes "^1.0.4"
|
||||
remove-array-items "^2.0.0"
|
||||
state-copy "^1.0.5"
|
||||
wayfarer "^7.0.0"
|
||||
|
||||
choo-hooks@^1.0.0:
|
||||
version "1.1.3"
|
||||
resolved "https://registry.yarnpkg.com/choo-hooks/-/choo-hooks-1.1.3.tgz#a55782aec3e8486dbbfbe54e63db8656c070a185"
|
||||
integrity sha512-Ld6mlF+Ogm7HYZL/wlJ26N1KOLJDa+5nigXfinL277PjZ3wR12/iBGK63UizoL784ZmsGO7af4cvzvmPjvmgfQ==
|
||||
dependencies:
|
||||
nanoscheduler "^1.0.0"
|
||||
on-performance "^1.0.1"
|
||||
|
||||
choo@^7.1.0:
|
||||
version "7.1.0"
|
||||
resolved "https://registry.yarnpkg.com/choo/-/choo-7.1.0.tgz#67eb2e61a496d574770e1cc659ea0f703f340fb6"
|
||||
integrity sha512-E4Gcpw1W0vACY3jkuwsVQUTQcriaIsLgS8DZJXzZ3iuJez8ZY3yoAdYwJlbLFL9OMglNhfrb/E/1HBcUeRuisA==
|
||||
dependencies:
|
||||
document-ready "^2.0.1"
|
||||
nanoassert "^1.1.0"
|
||||
nanobus "^4.4.0"
|
||||
nanocomponent "^6.5.0"
|
||||
nanohref "^3.0.0"
|
||||
nanohtml "^1.1.0"
|
||||
nanolru "^1.0.0"
|
||||
nanomorph "^5.1.2"
|
||||
nanoquery "^1.1.0"
|
||||
nanoraf "^3.0.0"
|
||||
nanorouter "^4.0.0"
|
||||
nanotiming "^7.0.0"
|
||||
scroll-to-anchor "^1.0.0"
|
||||
|
||||
cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3:
|
||||
version "1.0.4"
|
||||
resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de"
|
||||
@@ -580,6 +822,11 @@ cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3:
|
||||
inherits "^2.0.1"
|
||||
safe-buffer "^5.0.1"
|
||||
|
||||
clipboard-copy@^3.1.0:
|
||||
version "3.2.0"
|
||||
resolved "https://registry.yarnpkg.com/clipboard-copy/-/clipboard-copy-3.2.0.tgz#3c5b8651d3512dcfad295d77a9eb09e7fac8d5fb"
|
||||
integrity sha512-vooFaGFL6ulEP1liiaWFBmmfuPm3cY3y7T9eB83ZTnYc/oFeAKsq3NcDrOkBC8XaauEE8zHQwI7k0+JSYiVQSQ==
|
||||
|
||||
cliui@^7.0.2:
|
||||
version "7.0.4"
|
||||
resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f"
|
||||
@@ -589,6 +836,11 @@ cliui@^7.0.2:
|
||||
strip-ansi "^6.0.0"
|
||||
wrap-ansi "^7.0.0"
|
||||
|
||||
clone@^2.1.2:
|
||||
version "2.1.2"
|
||||
resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f"
|
||||
integrity sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=
|
||||
|
||||
codemirror-minified@^5.65.0:
|
||||
version "5.65.0"
|
||||
resolved "https://registry.yarnpkg.com/codemirror-minified/-/codemirror-minified-5.65.0.tgz#283f21655d6fc3477e64532c86a657bbc2063c19"
|
||||
@@ -705,7 +957,7 @@ content-type@~1.0.4:
|
||||
resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b"
|
||||
integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==
|
||||
|
||||
convert-source-map@^1.7.0:
|
||||
convert-source-map@^1.5.1, convert-source-map@^1.7.0:
|
||||
version "1.8.0"
|
||||
resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.8.0.tgz#f3373c32d21b4d780dd8004514684fb791ca4369"
|
||||
integrity sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==
|
||||
@@ -773,6 +1025,11 @@ create-hmac@^1.1.0, create-hmac@^1.1.4, create-hmac@^1.1.7:
|
||||
safe-buffer "^5.0.1"
|
||||
sha.js "^2.4.8"
|
||||
|
||||
crelt@^1.0.5:
|
||||
version "1.0.5"
|
||||
resolved "https://registry.yarnpkg.com/crelt/-/crelt-1.0.5.tgz#57c0d52af8c859e354bace1883eb2e1eb182bb94"
|
||||
integrity sha512-+BO9wPPi+DWTDcNYhr/W90myha8ptzftZT+LwcmUbbok0rcP/fequmFYCw8NMoH7pkAZQzU78b3kYrlua5a9eA==
|
||||
|
||||
crypto-browserify@^3.0.0:
|
||||
version "3.12.0"
|
||||
resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec"
|
||||
@@ -919,6 +1176,16 @@ diffie-hellman@^5.0.0:
|
||||
miller-rabin "^4.0.0"
|
||||
randombytes "^2.0.0"
|
||||
|
||||
document-ready@^2.0.1:
|
||||
version "2.0.2"
|
||||
resolved "https://registry.yarnpkg.com/document-ready/-/document-ready-2.0.2.tgz#a0218aca9021decb38aaf2b5355d61c158e09e62"
|
||||
integrity sha512-C0ht1cPSVzL5ALWnLiXDGfQXbzmNMJrLQ7wzc2fwz5x/wlZun+uzTGJGdKgfygZQ9i7RNRxI+OV909zXKFPycA==
|
||||
|
||||
dom-walk@^0.1.0:
|
||||
version "0.1.2"
|
||||
resolved "https://registry.yarnpkg.com/dom-walk/-/dom-walk-0.1.2.tgz#0c548bef048f4d1f2a97249002236060daa3fd84"
|
||||
integrity sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==
|
||||
|
||||
domain-browser@^1.2.0:
|
||||
version "1.2.0"
|
||||
resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda"
|
||||
@@ -1113,11 +1380,16 @@ escape-html@^1.0.3, escape-html@~1.0.3:
|
||||
resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988"
|
||||
integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=
|
||||
|
||||
escape-string-regexp@^1.0.5:
|
||||
escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5:
|
||||
version "1.0.5"
|
||||
resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
|
||||
integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=
|
||||
|
||||
estree-is-member-expression@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/estree-is-member-expression/-/estree-is-member-expression-1.0.0.tgz#e724721e0a14949d363915fd71448eaa6312f590"
|
||||
integrity sha512-Ec+X44CapIGExvSZN+pGkmr5p7HwUVQoPQSd458Lqwvaf4/61k/invHSh4BYK8OXnCkfEhWuIoG5hayKLQStIg==
|
||||
|
||||
etag@~1.8.1:
|
||||
version "1.8.1"
|
||||
resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887"
|
||||
@@ -1367,6 +1639,14 @@ glob@^7.1.0, glob@^7.1.3, glob@^7.1.6:
|
||||
once "^1.3.0"
|
||||
path-is-absolute "^1.0.0"
|
||||
|
||||
global@^4.3.1, global@^4.3.2:
|
||||
version "4.4.0"
|
||||
resolved "https://registry.yarnpkg.com/global/-/global-4.4.0.tgz#3e7b105179006a323ed71aafca3e9c57a5cc6406"
|
||||
integrity sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==
|
||||
dependencies:
|
||||
min-document "^2.19.0"
|
||||
process "^0.11.10"
|
||||
|
||||
gzip-size@^6.0.0:
|
||||
version "6.0.0"
|
||||
resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-6.0.0.tgz#065367fd50c239c0671cbcbad5be3e2eeb10e462"
|
||||
@@ -1387,6 +1667,13 @@ har-validator@~5.1.3:
|
||||
ajv "^6.12.3"
|
||||
har-schema "^2.0.0"
|
||||
|
||||
has-ansi@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91"
|
||||
integrity sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=
|
||||
dependencies:
|
||||
ansi-regex "^2.0.0"
|
||||
|
||||
has-bigints@^1.0.1:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.1.tgz#64fe6acb020673e3b78db035a5af69aa9d07b113"
|
||||
@@ -1512,7 +1799,7 @@ hydra-synth@^1.3.11:
|
||||
regl "^1.3.9"
|
||||
web-audio-analyser "^2.0.1"
|
||||
|
||||
hydra-synth@^1.3.16:
|
||||
hydra-synth@^1.3.15, hydra-synth@^1.3.16:
|
||||
version "1.3.16"
|
||||
resolved "https://registry.yarnpkg.com/hydra-synth/-/hydra-synth-1.3.16.tgz#927c734d1532f2c9d4b53e65ea8c962b4d1a2595"
|
||||
integrity sha512-v7YsTV2GrFTtD2UZUaE2bogzQmQBl8QN2exb+5396JJGWVGsojqn+q/tjFHlY2ErYjxssv+EVEXM23BNN0b4tw==
|
||||
@@ -1522,6 +1809,32 @@ hydra-synth@^1.3.16:
|
||||
regl "^1.3.9"
|
||||
web-audio-analyser "^2.0.1"
|
||||
|
||||
hyperscript-attribute-to-property@^1.0.0:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/hyperscript-attribute-to-property/-/hyperscript-attribute-to-property-1.0.2.tgz#66ad4164f88beefacf46ec884bd3d1173c1c382a"
|
||||
integrity sha512-oerMul16jZCmrbNsUw8QgrtDzF8lKgFri1bKQjReLw1IhiiNkI59CWuzZjJDGT79UQ1YiWqXhJMv/tRMVqgtkA==
|
||||
|
||||
hyperx@^2.5.0:
|
||||
version "2.5.4"
|
||||
resolved "https://registry.yarnpkg.com/hyperx/-/hyperx-2.5.4.tgz#72b4c3ed4111f64838221a9d0409e6bfc3f78d9e"
|
||||
integrity sha512-iOkSh7Yse7lsN/B9y7OsevLWjeXPqGuHQ5SbwaiJM5xAhWFqhoN6erpK1dQsS12OFU36lyai1pnx1mmzWLQqcA==
|
||||
dependencies:
|
||||
hyperscript-attribute-to-property "^1.0.0"
|
||||
|
||||
i18next-browser-languagedetector@^6.1.2:
|
||||
version "6.1.3"
|
||||
resolved "https://registry.yarnpkg.com/i18next-browser-languagedetector/-/i18next-browser-languagedetector-6.1.3.tgz#9bc47fb4a5db86d567318895df343d2d1b9692f3"
|
||||
integrity sha512-T+oGXHXtrur14CGnZZ7qQ07X38XJQEI00b/4ILrtO6xPbwTlQ1wtMZC2H+tBULixHuVUXv8LKbxfjyITJkezUg==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.14.6"
|
||||
|
||||
i18next@^21.6.6:
|
||||
version "21.6.11"
|
||||
resolved "https://registry.yarnpkg.com/i18next/-/i18next-21.6.11.tgz#de6d649221e02474cc701d152606bf3e61e37bcd"
|
||||
integrity sha512-tJ2+o0lVO+fhi8bPkCpBAeY1SgkqmQm5NzgPWCQssBrywJw98/o+Kombhty5nxQOpHtvMmsxcOopczUiH6bJxQ==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.12.0"
|
||||
|
||||
iconv-lite@0.4.24:
|
||||
version "0.4.24"
|
||||
resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b"
|
||||
@@ -1626,6 +1939,11 @@ is-binary-path@~2.1.0:
|
||||
dependencies:
|
||||
binary-extensions "^2.0.0"
|
||||
|
||||
is-boolean-attribute@0.0.1:
|
||||
version "0.0.1"
|
||||
resolved "https://registry.yarnpkg.com/is-boolean-attribute/-/is-boolean-attribute-0.0.1.tgz#24ab59b7dcb9da3612c773e60c656565e5a0980c"
|
||||
integrity sha1-JKtZt9y52jYSx3PmDGVlZeWgmAw=
|
||||
|
||||
is-boolean-object@^1.1.0:
|
||||
version "1.1.2"
|
||||
resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.2.tgz#5c6dc200246dd9321ae4b885a114bb1f75f63719"
|
||||
@@ -1639,6 +1957,11 @@ is-buffer@^1.1.0:
|
||||
resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be"
|
||||
integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==
|
||||
|
||||
is-buffer@^2.0.0:
|
||||
version "2.0.5"
|
||||
resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.5.tgz#ebc252e400d22ff8d77fa09888821a24a658c191"
|
||||
integrity sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==
|
||||
|
||||
is-callable@^1.1.4, is-callable@^1.2.4:
|
||||
version "1.2.4"
|
||||
resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.4.tgz#47301d58dd0259407865547853df6d61fe471945"
|
||||
@@ -1936,6 +2259,11 @@ lodash@^4.17.20, lodash@^4.17.21:
|
||||
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c"
|
||||
integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==
|
||||
|
||||
lower-case@^1.1.1:
|
||||
version "1.1.4"
|
||||
resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-1.1.4.tgz#9a2cabd1b9e8e0ae993a4bf7d5875c39c42e8eac"
|
||||
integrity sha1-miyr0bno4K6ZOkv31YdcOcQujqw=
|
||||
|
||||
lru-cache@^4.1.5:
|
||||
version "4.1.5"
|
||||
resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd"
|
||||
@@ -1951,6 +2279,13 @@ lru-cache@^6.0.0:
|
||||
dependencies:
|
||||
yallist "^4.0.0"
|
||||
|
||||
magic-string@^0.23.2:
|
||||
version "0.23.2"
|
||||
resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.23.2.tgz#204d7c3ea36c7d940209fcc54c39b9f243f13369"
|
||||
integrity sha512-oIUZaAxbcxYIp4AyLafV6OVKoB3YouZs0UTCJ8mOKBHNyJgGDaMJ4TgA+VylJh6fx7EQCC52XkbURxxG9IoJXA==
|
||||
dependencies:
|
||||
sourcemap-codec "^1.4.1"
|
||||
|
||||
md5.js@^1.3.4:
|
||||
version "1.3.5"
|
||||
resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f"
|
||||
@@ -1970,6 +2305,13 @@ merge-descriptors@1.0.1:
|
||||
resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61"
|
||||
integrity sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=
|
||||
|
||||
merge-source-map@1.0.4:
|
||||
version "1.0.4"
|
||||
resolved "https://registry.yarnpkg.com/merge-source-map/-/merge-source-map-1.0.4.tgz#a5de46538dae84d4114cc5ea02b4772a6346701f"
|
||||
integrity sha1-pd5GU42uhNQRTMXqArR3KmNGcB8=
|
||||
dependencies:
|
||||
source-map "^0.5.6"
|
||||
|
||||
methods@^1.1.2, methods@~1.1.2:
|
||||
version "1.1.2"
|
||||
resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee"
|
||||
@@ -2015,6 +2357,13 @@ mime@^2.5.0:
|
||||
resolved "https://registry.yarnpkg.com/mime/-/mime-2.6.0.tgz#a2a682a95cd4d0cb1d6257e28f83da7e35800367"
|
||||
integrity sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==
|
||||
|
||||
min-document@^2.19.0:
|
||||
version "2.19.0"
|
||||
resolved "https://registry.yarnpkg.com/min-document/-/min-document-2.19.0.tgz#7bd282e3f5842ed295bb748cdd9f1ffa2c824685"
|
||||
integrity sha1-e9KC4/WELtKVu3SM3Z8f+iyCRoU=
|
||||
dependencies:
|
||||
dom-walk "^0.1.0"
|
||||
|
||||
minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7"
|
||||
@@ -2099,12 +2448,34 @@ multer@^1.4.4:
|
||||
type-is "^1.6.4"
|
||||
xtend "^4.0.0"
|
||||
|
||||
mutexify@^1.1.0:
|
||||
version "1.4.0"
|
||||
resolved "https://registry.yarnpkg.com/mutexify/-/mutexify-1.4.0.tgz#b7f4ac0273c81824b840887c6a6e0bfab14bbe94"
|
||||
integrity sha512-pbYSsOrSB/AKN5h/WzzLRMFgZhClWccf2XIB4RSMC8JbquiB0e0/SH5AIfdQMdyHmYtv4seU7yV/TvAwPLJ1Yg==
|
||||
dependencies:
|
||||
queue-tick "^1.0.0"
|
||||
|
||||
nanoassert@^1.1.0:
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/nanoassert/-/nanoassert-1.1.0.tgz#4f3152e09540fde28c76f44b19bbcd1d5a42478d"
|
||||
integrity sha1-TzFS4JVA/eKMdvRLGbvNHVpCR40=
|
||||
|
||||
nanobus@^4.5.0:
|
||||
nanoassert@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/nanoassert/-/nanoassert-2.0.0.tgz#a05f86de6c7a51618038a620f88878ed1e490c09"
|
||||
integrity sha512-7vO7n28+aYO4J+8w96AzhmU8G+Y/xpPDJz/se19ICsqj/momRbb9mh9ZUtkoJ5X3nTnPdhEJyc0qnM6yAsHBaA==
|
||||
|
||||
nanobench@^2.1.0, nanobench@^2.1.1:
|
||||
version "2.1.1"
|
||||
resolved "https://registry.yarnpkg.com/nanobench/-/nanobench-2.1.1.tgz#c2f23fcce116d50b4998b1954ba114674c137269"
|
||||
integrity sha512-z+Vv7zElcjN+OpzAxAquUayFLGK3JI/ubCl0Oh64YQqsTGG09CGqieJVQw4ui8huDnnAgrvTv93qi5UaOoNj8A==
|
||||
dependencies:
|
||||
browser-process-hrtime "^0.1.2"
|
||||
chalk "^1.1.3"
|
||||
mutexify "^1.1.0"
|
||||
pretty-hrtime "^1.0.2"
|
||||
|
||||
nanobus@^4.4.0, nanobus@^4.5.0:
|
||||
version "4.5.0"
|
||||
resolved "https://registry.yarnpkg.com/nanobus/-/nanobus-4.5.0.tgz#7a6b3ff358ed0a075374697a7a2c18e0f5a439d2"
|
||||
integrity sha512-7sBZo9wthqNJ7QXnfVXZL7fkKJLN55GLOdX+RyZT34UOvxxnFtJe/c7K0ZRLAKOvaY1xJThFFn0Usw2H9R6Frg==
|
||||
@@ -2113,19 +2484,93 @@ nanobus@^4.5.0:
|
||||
nanotiming "^7.2.0"
|
||||
remove-array-items "^1.0.0"
|
||||
|
||||
nanocomponent@^6.5.0:
|
||||
version "6.6.0"
|
||||
resolved "https://registry.yarnpkg.com/nanocomponent/-/nanocomponent-6.6.0.tgz#9b58b9baa476f88897eaf6c6950ded131f65ea3f"
|
||||
integrity sha512-9vTL0XzIUcdbBbWRebSkaj8xmhiXq7sDrMvu0Yz7nUc0U30QJLYL+t5eaLDsX1f0GkFzw3v2vV0cPz8LjM33nA==
|
||||
dependencies:
|
||||
global "^4.3.1"
|
||||
nanoassert "^2.0.0"
|
||||
nanomorph "^5.1.2"
|
||||
nanotiming "^7.2.0"
|
||||
on-load "^4.0.2"
|
||||
|
||||
nanohref@^3.0.0:
|
||||
version "3.1.0"
|
||||
resolved "https://registry.yarnpkg.com/nanohref/-/nanohref-3.1.0.tgz#5ff6c0e5ae1fff6dd95611408031ce98eb16cf46"
|
||||
integrity sha512-2DyDzc8B/29xRCDprTt8UscdsF3E/axcHQMIBFR+WM1cj1ku7hqxQWwMYDOajfEuv5fZdVTh+NBuFronappMQQ==
|
||||
dependencies:
|
||||
nanoassert "^1.1.0"
|
||||
|
||||
nanohtml@^1.1.0:
|
||||
version "1.9.1"
|
||||
resolved "https://registry.yarnpkg.com/nanohtml/-/nanohtml-1.9.1.tgz#1d96c4eb9e8fcbea041e1f35f935c225f212e656"
|
||||
integrity sha512-4snfp20yKdA6+dT1vv0F4l1oYmnFXPNHk3ZFTfOldD9LamFxQZ9gWk4gJz7wflq3XROLzrGQHfo0HT4V4kSkhQ==
|
||||
dependencies:
|
||||
acorn-node "^1.8.2"
|
||||
camel-case "^3.0.0"
|
||||
convert-source-map "^1.5.1"
|
||||
estree-is-member-expression "^1.0.0"
|
||||
hyperx "^2.5.0"
|
||||
is-boolean-attribute "0.0.1"
|
||||
nanoassert "^1.1.0"
|
||||
nanobench "^2.1.0"
|
||||
normalize-html-whitespace "^0.2.0"
|
||||
through2 "^2.0.3"
|
||||
transform-ast "^2.4.0"
|
||||
|
||||
nanoid@^2.1.0:
|
||||
version "2.1.11"
|
||||
resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-2.1.11.tgz#ec24b8a758d591561531b4176a01e3ab4f0f0280"
|
||||
integrity sha512-s/snB+WGm6uwi0WjsZdaVcuf3KJXlfGl2LcxgwkEwJF0D/BWzVWAZW/XY4bFaiR7s0Jk3FPvlnepg1H1b1UwlA==
|
||||
|
||||
nanoscheduler@^1.0.2:
|
||||
nanologger@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/nanologger/-/nanologger-2.0.0.tgz#c8a0c9d1141ea53a5ce8dbaa98210928a3365da1"
|
||||
integrity sha512-rhP8tksOhv/lGXcioA0IMuRejkzTuMvqFqU3ATKZ22mu2fJ2A7ZKHYILjcyzmSThQzB1GCu3I7ZJ38Cj/WqyrA==
|
||||
|
||||
nanolru@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/nanolru/-/nanolru-1.0.0.tgz#0a5679cd4e4578c4ca3741e610b71c4c9b5afaf8"
|
||||
integrity sha512-GyQkE8M32pULhQk7Sko5raoIbPalAk90ICG+An4fq6fCsFHsP6fB2K46WGXVdoJpy4SGMnZ/EKbo123fZJomWg==
|
||||
|
||||
nanomorph@^5.1.2:
|
||||
version "5.4.3"
|
||||
resolved "https://registry.yarnpkg.com/nanomorph/-/nanomorph-5.4.3.tgz#ac518e9dc69a3dd69ceab4994388cc03bf867763"
|
||||
integrity sha512-uPP5y0x21KISffZCKHh1A0QW0RHZFQS0BR7LetlHBlay6UWAbjwhjiJTxOO6JeMHko5Cigl617zFoGrYFJ8ZLg==
|
||||
dependencies:
|
||||
nanoassert "^1.1.0"
|
||||
|
||||
nanoquery@^1.1.0:
|
||||
version "1.3.0"
|
||||
resolved "https://registry.yarnpkg.com/nanoquery/-/nanoquery-1.3.0.tgz#412d894ffd1c3f8130890ef9aeb31f4af81a8ed0"
|
||||
integrity sha512-eZv8Ct2PZn/CdOmD2BgLNwjhhPmxg4tXhygp0roaRer5RqBFB0gm0wHIb5VZcL0CS0r+yWQ1kBVYG7S1jUyG0A==
|
||||
dependencies:
|
||||
nanoassert "^1.1.0"
|
||||
|
||||
nanoraf@^3.0.0:
|
||||
version "3.1.0"
|
||||
resolved "https://registry.yarnpkg.com/nanoraf/-/nanoraf-3.1.0.tgz#97a892f1009146b95c8774b521d92e45dcdd229b"
|
||||
integrity sha512-7Emv5Pv/fvgVK6yrud93WsdO4d3AUqLoP38Cpn0chYe+tT/wu25Yl2guxBjE3ngRrI5Yd9DxaTCgCFi1uq7hgQ==
|
||||
dependencies:
|
||||
nanoassert "^1.1.0"
|
||||
|
||||
nanorouter@^4.0.0:
|
||||
version "4.0.0"
|
||||
resolved "https://registry.yarnpkg.com/nanorouter/-/nanorouter-4.0.0.tgz#1452bc888937684f5c1d9ac43c290c184f035b56"
|
||||
integrity sha512-HQ6VeNpFhIx/vKjqQiVUodeu0SvRb6ekkmkzf4pXMjkAZy0RS2jsIWZmzob9s6ORW0dfhYHpL7+w7T+bE5kNCQ==
|
||||
dependencies:
|
||||
nanoassert "^1.1.0"
|
||||
wayfarer "^7.0.0"
|
||||
|
||||
nanoscheduler@^1.0.0, nanoscheduler@^1.0.2:
|
||||
version "1.0.3"
|
||||
resolved "https://registry.yarnpkg.com/nanoscheduler/-/nanoscheduler-1.0.3.tgz#6ca027941bf3e04139ea4bab6227ea6ad803692f"
|
||||
integrity sha512-jBbrF3qdU9321r8n9X7yu18DjP31Do2ItJm3mWrt90wJTrnDO+HXpoV7ftaUglAtjgj9s+OaCxGufbvx6pvbEQ==
|
||||
dependencies:
|
||||
nanoassert "^1.1.0"
|
||||
|
||||
nanotiming@^7.2.0:
|
||||
nanotiming@^7.0.0, nanotiming@^7.2.0:
|
||||
version "7.3.1"
|
||||
resolved "https://registry.yarnpkg.com/nanotiming/-/nanotiming-7.3.1.tgz#dc5cf8d9d8ad401a4394d1a9b7a16714bccfefda"
|
||||
integrity sha512-l3lC7v/PfOuRWQa8vV29Jo6TG10wHtnthLElFXs4Te4Aas57Fo4n1Q8LH9n+NDh9riOzTVvb2QNBhTS4JUKNjw==
|
||||
@@ -2149,6 +2594,13 @@ negotiator@0.6.2:
|
||||
resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb"
|
||||
integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==
|
||||
|
||||
no-case@^2.2.0:
|
||||
version "2.3.2"
|
||||
resolved "https://registry.yarnpkg.com/no-case/-/no-case-2.3.2.tgz#60b813396be39b3f1288a4c1ed5d1e7d28b464ac"
|
||||
integrity sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==
|
||||
dependencies:
|
||||
lower-case "^1.1.1"
|
||||
|
||||
node-getopt@^0.2.3:
|
||||
version "0.2.4"
|
||||
resolved "https://registry.yarnpkg.com/node-getopt/-/node-getopt-0.2.4.tgz#3afb554717e5479f4bb10eb7327504650811c7a2"
|
||||
@@ -2161,6 +2613,11 @@ nopt@^5.0.0:
|
||||
dependencies:
|
||||
abbrev "1"
|
||||
|
||||
normalize-html-whitespace@^0.2.0:
|
||||
version "0.2.0"
|
||||
resolved "https://registry.yarnpkg.com/normalize-html-whitespace/-/normalize-html-whitespace-0.2.0.tgz#101722f6423551c75cdb8f9d104ff850daf1e10e"
|
||||
integrity sha1-EBci9kI1Ucdc24+dEE/4UNrx4Q4=
|
||||
|
||||
normalize-path@^3.0.0, normalize-path@~3.0.0:
|
||||
version "3.0.0"
|
||||
resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65"
|
||||
@@ -2176,6 +2633,11 @@ object-assign@^4.1.1:
|
||||
resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
|
||||
integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=
|
||||
|
||||
object-change-callsite@^1.0.2:
|
||||
version "1.0.5"
|
||||
resolved "https://registry.yarnpkg.com/object-change-callsite/-/object-change-callsite-1.0.5.tgz#c70a2d086dc0c6a1612ea8416ef7320ac3f5b358"
|
||||
integrity sha512-S3ZCLeAq7p4pVhfWYNH3fIl1sJ8DOexJBQ0EKFQ4hLg33JULbcn4EykgkZGesDbkUZgN0LToivBuiB4tWF76mw==
|
||||
|
||||
object-inspect@^1.11.0, object-inspect@^1.9.0:
|
||||
version "1.12.0"
|
||||
resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.0.tgz#6e2c120e868fd1fd18cb4f18c31741d0d6e776f0"
|
||||
@@ -2203,6 +2665,22 @@ on-finished@^2.3.0, on-finished@~2.3.0:
|
||||
dependencies:
|
||||
ee-first "1.1.1"
|
||||
|
||||
on-load@^4.0.2:
|
||||
version "4.0.2"
|
||||
resolved "https://registry.yarnpkg.com/on-load/-/on-load-4.0.2.tgz#e1bdbf435ac1002e81e68a62fc325167f38f874d"
|
||||
integrity sha512-ZBikjS30x2cPal7Ov0dwssra2mC+agK0aDv+0SxR0CzWTzyOOWetG75yEH3Z2vww7F6/mI9VXjkTFjDcVOUEKw==
|
||||
dependencies:
|
||||
global "^4.3.2"
|
||||
nanoassert "^1.1.0"
|
||||
|
||||
on-performance@^1.0.1, on-performance@^1.2.1:
|
||||
version "1.2.2"
|
||||
resolved "https://registry.yarnpkg.com/on-performance/-/on-performance-1.2.2.tgz#47a1a1cf6b1e1933baaf2e62be3347ed3aa7f641"
|
||||
integrity sha512-Nfa/PYKAy/LuppG2PI7yOIByESfysPOb5e2OARBvVD85CdesiHcKLc3a43G6gjTgTgb88i1PGtW9OxP9BAgJDg==
|
||||
dependencies:
|
||||
nanoassert "^1.1.0"
|
||||
nanoscheduler "^1.0.0"
|
||||
|
||||
once@1.4.0, once@^1.3.0:
|
||||
version "1.4.0"
|
||||
resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
|
||||
@@ -2314,17 +2792,32 @@ picomatch@^2.0.4, picomatch@^2.2.1:
|
||||
resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42"
|
||||
integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==
|
||||
|
||||
plucker@0.0.0:
|
||||
version "0.0.0"
|
||||
resolved "https://registry.yarnpkg.com/plucker/-/plucker-0.0.0.tgz#2ffa24e03ab2cffa4e75adc1df70f25623c45d09"
|
||||
integrity sha1-L/ok4Dqyz/pOda3B33DyViPEXQk=
|
||||
|
||||
pop-iterate@^1.0.1:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/pop-iterate/-/pop-iterate-1.0.1.tgz#ceacfdab4abf353d7a0f2aaa2c1fc7b3f9413ba3"
|
||||
integrity sha1-zqz9q0q/NT16DyqqLB/Hs/lBO6M=
|
||||
|
||||
prettier-bytes@^1.0.4:
|
||||
version "1.0.4"
|
||||
resolved "https://registry.yarnpkg.com/prettier-bytes/-/prettier-bytes-1.0.4.tgz#994b02aa46f699c50b6257b5faaa7fe2557e62d6"
|
||||
integrity sha1-mUsCqkb2mcULYle1+qp/4lV+YtY=
|
||||
|
||||
pretty-hrtime@^1.0.2:
|
||||
version "1.0.3"
|
||||
resolved "https://registry.yarnpkg.com/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz#b7e3ea42435a4c9b2759d99e0f201eb195802ee1"
|
||||
integrity sha1-t+PqQkNaTJsnWdmeDyAesZWALuE=
|
||||
|
||||
process-nextick-args@~2.0.0:
|
||||
version "2.0.1"
|
||||
resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2"
|
||||
integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==
|
||||
|
||||
process@~0.11.0:
|
||||
process@^0.11.10, process@~0.11.0:
|
||||
version "0.11.10"
|
||||
resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182"
|
||||
integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI=
|
||||
@@ -2430,6 +2923,11 @@ queue-microtask@^1.2.3:
|
||||
resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243"
|
||||
integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==
|
||||
|
||||
queue-tick@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/queue-tick/-/queue-tick-1.0.0.tgz#011104793a3309ae86bfeddd54e251dc94a36725"
|
||||
integrity sha512-ULWhjjE8BmiICGn3G8+1L9wFpERNxkf8ysxkAer4+TFdRefDaXOCV5m92aMB9FtBVmn/8sETXLXY6BfW7hyaWQ==
|
||||
|
||||
raf-loop@^1.1.3:
|
||||
version "1.1.3"
|
||||
resolved "https://registry.yarnpkg.com/raf-loop/-/raf-loop-1.1.3.tgz#8747a69a29615197206954bce477d3e65e659299"
|
||||
@@ -2523,6 +3021,11 @@ readdirp@~3.6.0:
|
||||
dependencies:
|
||||
picomatch "^2.2.1"
|
||||
|
||||
regenerator-runtime@^0.13.4:
|
||||
version "0.13.9"
|
||||
resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz#8925742a98ffd90814988d7566ad30ca3b263b52"
|
||||
integrity sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==
|
||||
|
||||
regl@^1.3.9:
|
||||
version "1.7.0"
|
||||
resolved "https://registry.yarnpkg.com/regl/-/regl-1.7.0.tgz#0d185431044a356bf80e9b775b11b935ef2746d3"
|
||||
@@ -2533,6 +3036,11 @@ remove-array-items@^1.0.0:
|
||||
resolved "https://registry.yarnpkg.com/remove-array-items/-/remove-array-items-1.1.1.tgz#fd745ff73d0822e561ea910bf1b401fc7843e693"
|
||||
integrity sha512-MXW/jtHyl5F1PZI7NbpS8SOtympdLuF20aoWJT5lELR1p/HJDd5nqW8Eu9uLh/hCRY3FgvrIT5AwDCgBODklcA==
|
||||
|
||||
remove-array-items@^2.0.0:
|
||||
version "2.0.1"
|
||||
resolved "https://registry.yarnpkg.com/remove-array-items/-/remove-array-items-2.0.1.tgz#75159e58f66182bafa1689b16516baebcf8e0fa4"
|
||||
integrity sha512-bKcElpSYGPTaCOcSEokep7srN48zqPOrayvBc/i7/BrJq2iYyNSuuPE8I5ViroVNr6P5Z7Q+v8P/Pt+H1R5gvg==
|
||||
|
||||
request@^2.68.0:
|
||||
version "2.88.2"
|
||||
resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3"
|
||||
@@ -2623,6 +3131,11 @@ scmp@^2.1.0:
|
||||
resolved "https://registry.yarnpkg.com/scmp/-/scmp-2.1.0.tgz#37b8e197c425bdeb570ab91cc356b311a11f9c9a"
|
||||
integrity sha512-o/mRQGk9Rcer/jEEw/yw4mwo3EU/NvYvp577/Btqrym9Qy5/MdWGBqipbALgd2lrdWTJ5/gqDusxfnQBxOxT2Q==
|
||||
|
||||
scroll-to-anchor@^1.0.0:
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/scroll-to-anchor/-/scroll-to-anchor-1.1.0.tgz#c99b8d2e5d95056752787ca78095ab75b520b3fd"
|
||||
integrity sha1-yZuNLl2VBWdSeHyngJWrdbUgs/0=
|
||||
|
||||
semver@^5.6.0:
|
||||
version "5.7.1"
|
||||
resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7"
|
||||
@@ -2826,6 +3339,11 @@ source-map-support@~0.5.20:
|
||||
buffer-from "^1.0.0"
|
||||
source-map "^0.6.0"
|
||||
|
||||
source-map@^0.5.6, source-map@~0.5.3:
|
||||
version "0.5.7"
|
||||
resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc"
|
||||
integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=
|
||||
|
||||
source-map@^0.6.0:
|
||||
version "0.6.1"
|
||||
resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
|
||||
@@ -2836,10 +3354,10 @@ source-map@^0.7.3, source-map@~0.7.2:
|
||||
resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383"
|
||||
integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==
|
||||
|
||||
source-map@~0.5.3:
|
||||
version "0.5.7"
|
||||
resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc"
|
||||
integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=
|
||||
sourcemap-codec@^1.4.1:
|
||||
version "1.4.8"
|
||||
resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4"
|
||||
integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==
|
||||
|
||||
sshpk@^1.7.0:
|
||||
version "1.17.0"
|
||||
@@ -2856,6 +3374,14 @@ sshpk@^1.7.0:
|
||||
safer-buffer "^2.0.2"
|
||||
tweetnacl "~0.14.0"
|
||||
|
||||
state-copy@^1.0.5:
|
||||
version "1.0.5"
|
||||
resolved "https://registry.yarnpkg.com/state-copy/-/state-copy-1.0.5.tgz#5d5afac87f0f49dc12e2852425872a0b28ce5b81"
|
||||
integrity sha512-bQ5mA+u+TTIGJWtd/jBbFRUJ+vhNXjzHvtVDMG2upRUIqbe7BwcB9rfKEHeCkKVke3gQoawv+adazI42AMbchQ==
|
||||
dependencies:
|
||||
clipboard-copy "^3.1.0"
|
||||
fast-safe-stringify "^2.0.7"
|
||||
|
||||
"statuses@>= 1.5.0 < 2", statuses@~1.5.0:
|
||||
version "1.5.0"
|
||||
resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c"
|
||||
@@ -2951,6 +3477,13 @@ string_decoder@~1.1.1:
|
||||
dependencies:
|
||||
safe-buffer "~5.1.0"
|
||||
|
||||
strip-ansi@^3.0.0:
|
||||
version "3.0.1"
|
||||
resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf"
|
||||
integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=
|
||||
dependencies:
|
||||
ansi-regex "^2.0.0"
|
||||
|
||||
strip-ansi@^6.0.0, strip-ansi@^6.0.1:
|
||||
version "6.0.1"
|
||||
resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9"
|
||||
@@ -2958,6 +3491,11 @@ strip-ansi@^6.0.0, strip-ansi@^6.0.1:
|
||||
dependencies:
|
||||
ansi-regex "^5.0.1"
|
||||
|
||||
style-mod@^4.0.0:
|
||||
version "4.0.0"
|
||||
resolved "https://registry.yarnpkg.com/style-mod/-/style-mod-4.0.0.tgz#97e7c2d68b592975f2ca7a63d0dd6fcacfe35a01"
|
||||
integrity sha512-OPhtyEjyyN9x3nhPsu76f52yUGXiZcgvsrFVtvTkyGRQJ0XK+GPc6ov1z+lRpbeabka+MYEQxOYRnt5nF30aMw==
|
||||
|
||||
subarg@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/subarg/-/subarg-1.0.0.tgz#f62cf17581e996b48fc965699f54c06ae268b8d2"
|
||||
@@ -2982,6 +3520,11 @@ superagent@^7.0.1:
|
||||
readable-stream "^3.6.0"
|
||||
semver "^7.3.5"
|
||||
|
||||
supports-color@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7"
|
||||
integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=
|
||||
|
||||
supports-color@^5.3.0:
|
||||
version "5.5.0"
|
||||
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f"
|
||||
@@ -3025,7 +3568,7 @@ terser@^5.10.0:
|
||||
source-map "~0.7.2"
|
||||
source-map-support "~0.5.20"
|
||||
|
||||
through2@^2.0.0:
|
||||
through2@^2.0.0, through2@^2.0.3:
|
||||
version "2.0.5"
|
||||
resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd"
|
||||
integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==
|
||||
@@ -3077,6 +3620,19 @@ tough-cookie@~2.5.0:
|
||||
psl "^1.1.28"
|
||||
punycode "^2.1.1"
|
||||
|
||||
transform-ast@^2.4.0:
|
||||
version "2.4.4"
|
||||
resolved "https://registry.yarnpkg.com/transform-ast/-/transform-ast-2.4.4.tgz#bebf494e2e73f024746f76348bc86a5992851d00"
|
||||
integrity sha512-AxjeZAcIOUO2lev2GDe3/xZ1Q0cVGjIMk5IsriTy8zbWlsEnjeB025AhkhBJHoy997mXpLd4R+kRbvnnQVuQHQ==
|
||||
dependencies:
|
||||
acorn-node "^1.3.0"
|
||||
convert-source-map "^1.5.1"
|
||||
dash-ast "^1.0.0"
|
||||
is-buffer "^2.0.0"
|
||||
magic-string "^0.23.2"
|
||||
merge-source-map "1.0.4"
|
||||
nanobench "^2.1.1"
|
||||
|
||||
tty-browserify@0.0.1:
|
||||
version "0.0.1"
|
||||
resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.1.tgz#3f05251ee17904dfd0677546670db9651682b811"
|
||||
@@ -3169,6 +3725,11 @@ unpipe@1.0.0, unpipe@~1.0.0:
|
||||
resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec"
|
||||
integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=
|
||||
|
||||
upper-case@^1.1.1:
|
||||
version "1.1.3"
|
||||
resolved "https://registry.yarnpkg.com/upper-case/-/upper-case-1.1.3.tgz#f6b4501c2ec4cdd26ba78be7222961de77621598"
|
||||
integrity sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg=
|
||||
|
||||
uri-js@^4.2.2:
|
||||
version "4.4.1"
|
||||
resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e"
|
||||
@@ -3250,6 +3811,11 @@ vm-browserify@^1.0.0:
|
||||
resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.2.tgz#78641c488b8e6ca91a75f511e7a3b32a86e5dda0"
|
||||
integrity sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==
|
||||
|
||||
w3c-keyname@^2.2.4:
|
||||
version "2.2.4"
|
||||
resolved "https://registry.yarnpkg.com/w3c-keyname/-/w3c-keyname-2.2.4.tgz#4ade6916f6290224cdbd1db8ac49eab03d0eef6b"
|
||||
integrity sha512-tOhfEwEzFLJzf6d1ZPkYfGj+FWhIpBux9ppoP3rlclw3Z0BZv3N7b7030Z1kYth+6rDuAsXUFr+d0VE6Ed1ikw==
|
||||
|
||||
watchify@^4.0.0:
|
||||
version "4.0.0"
|
||||
resolved "https://registry.yarnpkg.com/watchify/-/watchify-4.0.0.tgz#53b002d51e7b0eb640b851bb4de517a689973392"
|
||||
@@ -3274,6 +3840,13 @@ wav@^1.0.0:
|
||||
readable-stream "^1.1.14"
|
||||
stream-parser "^0.3.1"
|
||||
|
||||
wayfarer@^7.0.0:
|
||||
version "7.0.1"
|
||||
resolved "https://registry.yarnpkg.com/wayfarer/-/wayfarer-7.0.1.tgz#17a64d351d49f9d3d6c508155867df7658184ce3"
|
||||
integrity sha512-yf+kAlOYnJRjLxflLy+1+xEclb6222EAVvAjSY+Yz2qAIDrXeN5wLl/G302Mwv3E0KMg1HT/WDGsvSymX0U7Rw==
|
||||
dependencies:
|
||||
nanoassert "^1.1.0"
|
||||
|
||||
weak-map@^1.0.5:
|
||||
version "1.0.5"
|
||||
resolved "https://registry.yarnpkg.com/weak-map/-/weak-map-1.0.5.tgz#79691584d98607f5070bd3b70a40e6bb22e401eb"
|
||||
|
||||
Reference in New Issue
Block a user