Initial commit
This commit is contained in:
5
dist/constants.js
vendored
Normal file
5
dist/constants.js
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.BambuddyAddress = void 0;
|
||||
exports.BambuddyAddress = 'https://print.morphix.nl';
|
||||
//# sourceMappingURL=constants.js.map
|
||||
1
dist/constants.js.map
vendored
Normal file
1
dist/constants.js.map
vendored
Normal file
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../ts/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,eAAe,GAAG,0BAA0B,CAAC"}
|
||||
71
dist/login.js
vendored
Normal file
71
dist/login.js
vendored
Normal file
@@ -0,0 +1,71 @@
|
||||
"use strict";
|
||||
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
||||
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
||||
return new (P || (P = Promise))(function (resolve, reject) {
|
||||
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
||||
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
||||
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
||||
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
||||
});
|
||||
};
|
||||
var __generator = (this && this.__generator) || function (thisArg, body) {
|
||||
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
||||
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
||||
function verb(n) { return function (v) { return step([n, v]); }; }
|
||||
function step(op) {
|
||||
if (f) throw new TypeError("Generator is already executing.");
|
||||
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
||||
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
||||
if (y = 0, t) op = [op[0] & 2, t.value];
|
||||
switch (op[0]) {
|
||||
case 0: case 1: t = op; break;
|
||||
case 4: _.label++; return { value: op[1], done: false };
|
||||
case 5: _.label++; y = op[1]; op = [0]; continue;
|
||||
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
||||
default:
|
||||
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
||||
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
||||
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
||||
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
||||
if (t[2]) _.ops.pop();
|
||||
_.trys.pop(); continue;
|
||||
}
|
||||
op = body.call(thisArg, _);
|
||||
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
||||
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
||||
}
|
||||
};
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.login = void 0;
|
||||
var constants_1 = require("./constants");
|
||||
function login(username, password) {
|
||||
return __awaiter(this, void 0, void 0, function () {
|
||||
var request, response;
|
||||
return __generator(this, function (_a) {
|
||||
switch (_a.label) {
|
||||
case 0: return [4 /*yield*/, fetch("".concat(constants_1.BambuddyAddress, "/api/v1/auth/login"), {
|
||||
headers: {
|
||||
'Content-Type': 'application/json',
|
||||
},
|
||||
body: JSON.stringify({
|
||||
username: username,
|
||||
password: password,
|
||||
}),
|
||||
method: 'POST',
|
||||
})];
|
||||
case 1:
|
||||
request = _a.sent();
|
||||
return [4 /*yield*/, request.json()];
|
||||
case 2:
|
||||
response = _a.sent();
|
||||
if ((response === null || response === void 0 ? void 0 : response.detail) != null) {
|
||||
console.error("Login failed: ".concat(response.detail));
|
||||
return [2 /*return*/, null];
|
||||
}
|
||||
return [2 /*return*/, response];
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
exports.login = login;
|
||||
//# sourceMappingURL=login.js.map
|
||||
1
dist/login.js.map
vendored
Normal file
1
dist/login.js.map
vendored
Normal file
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"login.js","sourceRoot":"","sources":["../ts/login.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,yCAA8C;AAE9C,SAAsB,KAAK,CAC1B,QAAgB,EAChB,QAAgB;;;;;wBAEA,qBAAM,KAAK,CAAC,UAAG,2BAAe,uBAAoB,EAAE;wBACnE,OAAO,EAAE;4BACR,cAAc,EAAE,kBAAkB;yBAClC;wBACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;4BACpB,QAAQ,EAAE,QAAQ;4BAClB,QAAQ,EAAE,QAAQ;yBAClB,CAAC;wBACF,MAAM,EAAE,MAAM;qBACd,CAAC,EAAA;;oBATI,OAAO,GAAG,SASd;oBAEe,qBAAM,OAAO,CAAC,IAAI,EAAE,EAAA;;oBAA/B,QAAQ,GAAG,SAAoB;oBAErC,IAAI,CAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,MAAM,KAAI,IAAI,EAAE,CAAC;wBAC9B,OAAO,CAAC,KAAK,CAAC,wBAAiB,QAAQ,CAAC,MAAM,CAAE,CAAC,CAAC;wBAClD,sBAAO,IAAI,EAAC;oBACb,CAAC;oBAED,sBAAO,QAAyB,EAAC;;;;CACjC;AAvBD,sBAuBC"}
|
||||
82
dist/main.js
vendored
Normal file
82
dist/main.js
vendored
Normal file
@@ -0,0 +1,82 @@
|
||||
"use strict";
|
||||
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
||||
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
||||
return new (P || (P = Promise))(function (resolve, reject) {
|
||||
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
||||
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
||||
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
||||
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
||||
});
|
||||
};
|
||||
var __generator = (this && this.__generator) || function (thisArg, body) {
|
||||
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
||||
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
||||
function verb(n) { return function (v) { return step([n, v]); }; }
|
||||
function step(op) {
|
||||
if (f) throw new TypeError("Generator is already executing.");
|
||||
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
||||
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
||||
if (y = 0, t) op = [op[0] & 2, t.value];
|
||||
switch (op[0]) {
|
||||
case 0: case 1: t = op; break;
|
||||
case 4: _.label++; return { value: op[1], done: false };
|
||||
case 5: _.label++; y = op[1]; op = [0]; continue;
|
||||
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
||||
default:
|
||||
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
||||
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
||||
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
||||
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
||||
if (t[2]) _.ops.pop();
|
||||
_.trys.pop(); continue;
|
||||
}
|
||||
op = body.call(thisArg, _);
|
||||
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
||||
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
||||
}
|
||||
};
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
var constants_1 = require("./constants");
|
||||
var login_1 = require("./login");
|
||||
var streamToken_1 = require("./streamToken");
|
||||
var express = require("express");
|
||||
function getToken() {
|
||||
return __awaiter(this, void 0, void 0, function () {
|
||||
var loginResponse, streamToken;
|
||||
return __generator(this, function (_a) {
|
||||
switch (_a.label) {
|
||||
case 0: return [4 /*yield*/, (0, login_1.login)('screen', 'e8$o$u@F8XtHt#')];
|
||||
case 1:
|
||||
loginResponse = _a.sent();
|
||||
console.log('Login response:', loginResponse);
|
||||
return [4 /*yield*/, (0, streamToken_1.getStreamToken)(loginResponse === null || loginResponse === void 0 ? void 0 : loginResponse.access_token)];
|
||||
case 2:
|
||||
streamToken = _a.sent();
|
||||
return [2 /*return*/, streamToken === null || streamToken === void 0 ? void 0 : streamToken.token];
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
var app = express();
|
||||
app.get('/', function (req, res) { return __awaiter(void 0, void 0, void 0, function () {
|
||||
return __generator(this, function (_a) {
|
||||
res.send('Bambuddy Camera Bridge is running. Use /:printerId to access the camera stream.');
|
||||
return [2 /*return*/];
|
||||
});
|
||||
}); });
|
||||
app.get('/:printerId', function (req, res) { return __awaiter(void 0, void 0, void 0, function () {
|
||||
var token;
|
||||
return __generator(this, function (_a) {
|
||||
switch (_a.label) {
|
||||
case 0: return [4 /*yield*/, getToken()];
|
||||
case 1:
|
||||
token = _a.sent();
|
||||
res.redirect("".concat(constants_1.BambuddyAddress, "/api/v1/printers/").concat(req.params.printerId, "/camera/stream?fps=15&t=").concat(Date.now(), "&token=").concat(token));
|
||||
return [2 /*return*/];
|
||||
}
|
||||
});
|
||||
}); });
|
||||
app.listen(3838, function () {
|
||||
console.log('Server is running on port 3838');
|
||||
});
|
||||
//# sourceMappingURL=main.js.map
|
||||
1
dist/main.js.map
vendored
Normal file
1
dist/main.js.map
vendored
Normal file
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"main.js","sourceRoot":"","sources":["../ts/main.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,yCAA8C;AAC9C,iCAAgC;AAEhC,6CAA+C;AAC/C,iCAAmC;AAGnC,SAAe,QAAQ;;;;;wBACA,qBAAM,IAAA,aAAK,EAAC,QAAQ,EAAE,gBAAgB,CAAC,EAAA;;oBAAvD,aAAa,GAAG,SAAuC;oBAE7D,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,aAAa,CAAC,CAAC;oBAE1B,qBAAM,IAAA,4BAAc,EACvC,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,YAAsB,CACrC,EAAA;;oBAFK,WAAW,GAAG,SAEnB;oBAED,sBAAO,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,KAAK,EAAC;;;;CAC1B;AAED,IAAM,GAAG,GAAG,OAAO,EAAE,CAAC;AAEtB,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,UAAO,GAAY,EAAE,GAAa;;QAC9C,GAAG,CAAC,IAAI,CACP,iFAAiF,CACjF,CAAC;;;KACF,CAAC,CAAC;AAEH,GAAG,CAAC,GAAG,CAAC,aAAa,EAAE,UAAO,GAAY,EAAE,GAAa;;;;oBAC1C,qBAAM,QAAQ,EAAE,EAAA;;gBAAxB,KAAK,GAAG,SAAgB;gBAE9B,GAAG,CAAC,QAAQ,CACX,UAAG,2BAAe,8BAAoB,GAAG,CAAC,MAAM,CAAC,SAAS,qCAA2B,IAAI,CAAC,GAAG,EAAE,oBAAU,KAAK,CAAE,CAChH,CAAC;;;;KACF,CAAC,CAAC;AAEH,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE;IAChB,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;AAC/C,CAAC,CAAC,CAAC"}
|
||||
64
dist/printer.js
vendored
Normal file
64
dist/printer.js
vendored
Normal file
@@ -0,0 +1,64 @@
|
||||
"use strict";
|
||||
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
||||
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
||||
return new (P || (P = Promise))(function (resolve, reject) {
|
||||
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
||||
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
||||
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
||||
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
||||
});
|
||||
};
|
||||
var __generator = (this && this.__generator) || function (thisArg, body) {
|
||||
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
||||
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
||||
function verb(n) { return function (v) { return step([n, v]); }; }
|
||||
function step(op) {
|
||||
if (f) throw new TypeError("Generator is already executing.");
|
||||
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
||||
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
||||
if (y = 0, t) op = [op[0] & 2, t.value];
|
||||
switch (op[0]) {
|
||||
case 0: case 1: t = op; break;
|
||||
case 4: _.label++; return { value: op[1], done: false };
|
||||
case 5: _.label++; y = op[1]; op = [0]; continue;
|
||||
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
||||
default:
|
||||
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
||||
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
||||
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
||||
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
||||
if (t[2]) _.ops.pop();
|
||||
_.trys.pop(); continue;
|
||||
}
|
||||
op = body.call(thisArg, _);
|
||||
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
||||
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
||||
}
|
||||
};
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.getPrinterDetails = void 0;
|
||||
var constants_1 = require("./constants");
|
||||
function getPrinterDetails(bearerToken, printerId) {
|
||||
return __awaiter(this, void 0, void 0, function () {
|
||||
var request, response;
|
||||
return __generator(this, function (_a) {
|
||||
switch (_a.label) {
|
||||
case 0: return [4 /*yield*/, fetch("".concat(constants_1.BambuddyAddress, "/api/v1/printers/").concat(printerId), {
|
||||
headers: {
|
||||
'Content-Type': 'application/json',
|
||||
Authorization: "Bearer ".concat(bearerToken),
|
||||
},
|
||||
method: 'GET',
|
||||
})];
|
||||
case 1:
|
||||
request = _a.sent();
|
||||
return [4 /*yield*/, request.json()];
|
||||
case 2:
|
||||
response = _a.sent();
|
||||
return [2 /*return*/, response];
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
exports.getPrinterDetails = getPrinterDetails;
|
||||
//# sourceMappingURL=printer.js.map
|
||||
1
dist/printer.js.map
vendored
Normal file
1
dist/printer.js.map
vendored
Normal file
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"printer.js","sourceRoot":"","sources":["../ts/printer.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,yCAA8C;AAE9C,SAAsB,iBAAiB,CACtC,WAAmB,EACnB,SAAiB;;;;;wBAED,qBAAM,KAAK,CAC1B,UAAG,2BAAe,8BAAoB,SAAS,CAAE,EACjD;wBACC,OAAO,EAAE;4BACR,cAAc,EAAE,kBAAkB;4BAClC,aAAa,EAAE,iBAAU,WAAW,CAAE;yBACtC;wBACD,MAAM,EAAE,KAAK;qBACb,CACD,EAAA;;oBATK,OAAO,GAAG,SASf;oBAEgB,qBAAM,OAAO,CAAC,IAAI,EAAE,EAAA;;oBAA/B,QAAQ,GAAG,SAAoB;oBAErC,sBAAO,QAA0B,EAAC;;;;CAClC;AAlBD,8CAkBC"}
|
||||
64
dist/streamToken.js
vendored
Normal file
64
dist/streamToken.js
vendored
Normal file
@@ -0,0 +1,64 @@
|
||||
"use strict";
|
||||
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
||||
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
||||
return new (P || (P = Promise))(function (resolve, reject) {
|
||||
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
||||
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
||||
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
||||
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
||||
});
|
||||
};
|
||||
var __generator = (this && this.__generator) || function (thisArg, body) {
|
||||
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
||||
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
||||
function verb(n) { return function (v) { return step([n, v]); }; }
|
||||
function step(op) {
|
||||
if (f) throw new TypeError("Generator is already executing.");
|
||||
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
||||
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
||||
if (y = 0, t) op = [op[0] & 2, t.value];
|
||||
switch (op[0]) {
|
||||
case 0: case 1: t = op; break;
|
||||
case 4: _.label++; return { value: op[1], done: false };
|
||||
case 5: _.label++; y = op[1]; op = [0]; continue;
|
||||
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
||||
default:
|
||||
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
||||
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
||||
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
||||
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
||||
if (t[2]) _.ops.pop();
|
||||
_.trys.pop(); continue;
|
||||
}
|
||||
op = body.call(thisArg, _);
|
||||
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
||||
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
||||
}
|
||||
};
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.getStreamToken = void 0;
|
||||
var constants_1 = require("./constants");
|
||||
function getStreamToken(bearerToken) {
|
||||
return __awaiter(this, void 0, void 0, function () {
|
||||
var request, response;
|
||||
return __generator(this, function (_a) {
|
||||
switch (_a.label) {
|
||||
case 0: return [4 /*yield*/, fetch("".concat(constants_1.BambuddyAddress, "/api/v1/printers/camera/stream-token"), {
|
||||
headers: {
|
||||
'Content-Type': 'application/json',
|
||||
Authorization: "Bearer ".concat(bearerToken),
|
||||
},
|
||||
method: 'POST',
|
||||
})];
|
||||
case 1:
|
||||
request = _a.sent();
|
||||
return [4 /*yield*/, request.json()];
|
||||
case 2:
|
||||
response = _a.sent();
|
||||
return [2 /*return*/, response];
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
exports.getStreamToken = getStreamToken;
|
||||
//# sourceMappingURL=streamToken.js.map
|
||||
1
dist/streamToken.js.map
vendored
Normal file
1
dist/streamToken.js.map
vendored
Normal file
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"streamToken.js","sourceRoot":"","sources":["../ts/streamToken.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,yCAA8C;AAE9C,SAAsB,cAAc,CACnC,WAAmB;;;;;wBAEH,qBAAM,KAAK,CAC1B,UAAG,2BAAe,yCAAsC,EACxD;wBACC,OAAO,EAAE;4BACR,cAAc,EAAE,kBAAkB;4BAClC,aAAa,EAAE,iBAAU,WAAW,CAAE;yBACtC;wBACD,MAAM,EAAE,MAAM;qBACd,CACD,EAAA;;oBATK,OAAO,GAAG,SASf;oBAEgB,qBAAM,OAAO,CAAC,IAAI,EAAE,EAAA;;oBAA/B,QAAQ,GAAG,SAAoB;oBAErC,sBAAO,QAA0B,EAAC;;;;CAClC;AAjBD,wCAiBC"}
|
||||
Reference in New Issue
Block a user