@blinkk/root-cms 1.0.0-beta.49 → 1.0.0-beta.50
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/plugin.js +7 -3
- package/dist/ui/ui.css +13 -8
- package/dist/ui/ui.js +113 -108
- package/package.json +3 -3
package/dist/plugin.js
CHANGED
|
@@ -35,9 +35,13 @@ function csvToArray(csvString) {
|
|
|
35
35
|
}
|
|
36
36
|
|
|
37
37
|
// core/api.ts
|
|
38
|
-
var memoryStorage = multer.memoryStorage();
|
|
39
|
-
var upload = multer({ storage: memoryStorage });
|
|
40
38
|
function api(server) {
|
|
39
|
+
const upload = multer({
|
|
40
|
+
storage: multer.memoryStorage(),
|
|
41
|
+
limits: {
|
|
42
|
+
fileSize: 10 * 1024 * 1024
|
|
43
|
+
}
|
|
44
|
+
});
|
|
41
45
|
server.use("/cms/api/csv.download", (req, res) => {
|
|
42
46
|
if (req.method !== "POST" || !String(req.get("content-type")).startsWith("application/json")) {
|
|
43
47
|
res.status(400).json({ success: false, error: "BAD_REQUEST" });
|
|
@@ -316,4 +320,4 @@ function fileExists(filepath) {
|
|
|
316
320
|
export {
|
|
317
321
|
cmsPlugin
|
|
318
322
|
};
|
|
319
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vY29yZS9wbHVnaW4udHMiLCAiLi4vY29yZS9hcGkudHMiLCAiLi4vY29yZS9jc3YudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImltcG9ydCB7cHJvbWlzZXMgYXMgZnN9IGZyb20gJ25vZGU6ZnMnO1xuaW1wb3J0IHBhdGggZnJvbSAnbm9kZTpwYXRoJztcbmltcG9ydCB7ZmlsZVVSTFRvUGF0aH0gZnJvbSAnbm9kZTp1cmwnO1xuXG5pbXBvcnQge1xuICBDb25maWd1cmVTZXJ2ZXJPcHRpb25zLFxuICBOZXh0RnVuY3Rpb24sXG4gIFBsdWdpbixcbiAgUmVxdWVzdCxcbiAgUmVzcG9uc2UsXG4gIFNlcnZlcixcbn0gZnJvbSAnQGJsaW5ray9yb290JztcbmltcG9ydCBib2R5UGFyc2VyIGZyb20gJ2JvZHktcGFyc2VyJztcbmltcG9ydCBjb29raWVQYXJzZXIgZnJvbSAnY29va2llLXBhcnNlcic7XG5pbXBvcnQge1xuICBBcHAsXG4gIGFwcGxpY2F0aW9uRGVmYXVsdCxcbiAgZ2V0QXBwLFxuICBpbml0aWFsaXplQXBwLFxufSBmcm9tICdmaXJlYmFzZS1hZG1pbi9hcHAnO1xuaW1wb3J0IHtnZXRBdXRoLCBEZWNvZGVkSWRUb2tlbn0gZnJvbSAnZmlyZWJhc2UtYWRtaW4vYXV0aCc7XG5pbXBvcnQgc2lydiBmcm9tICdzaXJ2JztcbmltcG9ydCB7YXBpfSBmcm9tICcuL2FwaS5qcyc7XG5cbmNvbnN0IF9fZGlybmFtZSA9IHBhdGguZGlybmFtZShmaWxlVVJMVG9QYXRoKGltcG9ydC5tZXRhLnVybCkpO1xuXG50eXBlIEFwcE1vZHVsZSA9IHR5cGVvZiBpbXBvcnQoJy4vYXBwLmpzJyk7XG5cbi8vIFRoZSBzZXNzaW9uIGNvb2tpZSBuYW1lIG5lZWRzIHRvIG1hdGNoIHdoYXQncyBhbGxvd2VkIGJ5IEZpcmViYXNlIEhvc3RpbmcuXG4vLyBodHRwczovL2ZpcmViYXNlLmdvb2dsZS5jb20vZG9jcy9ob3N0aW5nL21hbmFnZS1jYWNoZSN1c2luZ19jb29raWVzXG5jb25zdCBTRVNTSU9OX0NPT0tJRSA9ICdfX3Nlc3Npb24nO1xuXG5leHBvcnQgdHlwZSBDTVNVc2VyID0gRGVjb2RlZElkVG9rZW47XG5cbmV4cG9ydCB0eXBlIENNU1BsdWdpbk9wdGlvbnMgPSB7XG4gIC8qKlxuICAgKiBUaGUgSUQgb2YgdGhlIHByb2plY3QuIERhdGEgd2lsbCBiZSBzdG9yZWQgdW5kZXIgdGhlIG5hbWVzcGFjZVxuICAgKiBgUHJvamVjdHMvJHtpZH1gIGluIGZpcmVzdG9yZS5cbiAgICovXG4gIGlkPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgcHJvamVjdC4gVXNlZCBpbiB0aGUgaGVhZGVyIG9mIHRoZSBDTVMgdG8gaGVscCBpZGVudGlmeVxuICAgKiB0aGUgcHJvamVjdC5cbiAgICovXG4gIG5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEZpcmViYXNlIGNvbmZpZyBvYmplY3QsIHdoaWNoIGNhbiBiZSBvYnRhaW5lZCBpbiB0aGUgRmlyZWJhc2UgQ29uc29sZSBieVxuICAgKiBnb2luZyB0byBcIlByb2plY3QgU2V0dGluZ3NcIi5cbiAgICovXG4gIGZpcmViYXNlQ29uZmlnOiB7XG4gICAgW2tleTogc3RyaW5nXTogc3RyaW5nO1xuICAgIGFwaUtleTogc3RyaW5nO1xuICAgIGF1dGhEb21haW46IHN0cmluZztcbiAgICBwcm9qZWN0SWQ6IHN0cmluZztcbiAgICBzdG9yYWdlQnVja2V0OiBzdHJpbmc7XG4gICAgbWVzc2FnaW5nU2VuZGVySWQ6IHN0cmluZztcbiAgICBhcHBJZDogc3RyaW5nO1xuICB9O1xuXG4gIC8qKiBTZWNyZXQgdmFsdWUocykgdXNlZCBmb3Igc2lnbmluZyB0aGUgdXNlciBhdXRoZW50aWNhdGlvbiBjb29raWUuICovXG4gIGNvb2tpZVNlY3JldD86IHN0cmluZyB8IHN0cmluZ1tdO1xuXG4gIC8qKiBGdW5jdGlvbiBjYWxsZWQgdG8gY2hlY2sgaWYgYSB1c2VyIHNob3VsZCBoYXZlIGFjY2VzcyB0byB0aGUgQ01TLiAqL1xuICBpc1VzZXJBdXRob3JpemVkPzogKFxuICAgIHJlcTogUmVxdWVzdCxcbiAgICB1c2VyOiBDTVNVc2VyXG4gICkgPT4gYm9vbGVhbiB8IFByb21pc2U8Ym9vbGVhbj47XG5cbiAgLyoqXG4gICAqIFVSTCB0byBHQ0kgc2VydmljZSBmb3IgdHJhbnNmb3JtaW5nIHVwbG9hZGVkIEdDUyBpbWFnZXMgdG8gYSBHb29nbGUgQXBwXG4gICAqIEVuZ2luZSBJbWFnZXMgQVBJIHNlcnZpbmcgVVJMLlxuICAgKlxuICAgKiBTZXR0aW5nIHRoaXMgdG8gYHRydWVgIHVzZXMgdGhlIGRlZmF1bHQgaG9zdGVkIHNlcnZpY2UgYXRcbiAgICogaHR0cHM6Ly9nY2kucm9vdGpzLmRldi5cbiAgICpcbiAgICogVG8gc2V0IHVwIEdDSTpcbiAgICpcbiAgICogLSBDcmVhdGUgYSBHQ1MgYnVja2V0IHdpdGggZmluZS1ncmFpbmVkIHBlcm1pc3Npb25zXG4gICAqIC0gU2hhcmUgb3duZXIgYWNjZXNzIHRvIHRoZSBidWNrZXQgd2l0aCB0aGUgc2VydmljZSBhY2NvdW50IHJldHVybmVkIGluXG4gICAqICAgaHR0cHM6Ly9nY2kucm9vdGpzLmRldi9fL3NlcnZpY2VfYWNjb3VudFxuICAgKlxuICAgKiBUbyBkaXNhYmxlIEdDSSwgbGVhdmUgdGhpcyB2YWx1ZSBlbXB0eSBvciBzZXQgdG8gYGZhbHNlYCwgd2hpY2ggd2hpY2ggd2lsbFxuICAgKiBzZXJ2ZSBpbWFnZXMgZGlyZWN0bHkgZnJvbSBHQ1MgaW5zdGVhZC5cbiAgICovXG4gIGdjaT86IHN0cmluZyB8IGJvb2xlYW47XG59O1xuXG5leHBvcnQgdHlwZSBDTVNQbHVnaW4gPSBQbHVnaW4gJiB7XG4gIG5hbWU6ICdyb290LWNtcyc7XG4gIGdldENvbmZpZzogKCkgPT4gQ01TUGx1Z2luT3B0aW9ucztcbiAgZ2V0RmlyZWJhc2VBcHA6ICgpID0+IEFwcDtcbn07XG5cbmZ1bmN0aW9uIGdlbmVyYXRlU2VjcmV0KCk6IHN0cmluZyB7XG4gIGNvbnN0IHJlc3VsdCA9IFtdO1xuICBjb25zdCBjaGFycyA9XG4gICAgJ0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5JztcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCAzNjsgaSsrKSB7XG4gICAgY29uc3QgcmFuZCA9IE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIGNoYXJzLmxlbmd0aCk7XG4gICAgcmVzdWx0LnB1c2goY2hhcnMuY2hhckF0KHJhbmQpKTtcbiAgfVxuICByZXR1cm4gcmVzdWx0LmpvaW4oJycpO1xufVxuXG5mdW5jdGlvbiBpc0V4cGlyZWQoZGVjb2RlZElkVG9rZW46IERlY29kZWRJZFRva2VuKSB7XG4gIGNvbnN0IHRzID0gTWF0aC5mbG9vcihuZXcgRGF0ZSgpLmdldFRpbWUoKSAvIDEwMDApO1xuICByZXR1cm4gdHMgPj0gZGVjb2RlZElkVG9rZW4uZXhwO1xufVxuXG5mdW5jdGlvbiBnZXRGaXJlYmFzZUFwcChnY3BQcm9qZWN0SWQ6IHN0cmluZyk6IEFwcCB7XG4gIGNvbnN0IGFwcE5hbWUgPSAncm9vdC1jbXMnO1xuICB0cnkge1xuICAgIHJldHVybiBnZXRBcHAoYXBwTmFtZSk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGlmIChlcnIgJiYgZXJyLmNvZGUgPT09ICdhcHAvbm8tYXBwJykge1xuICAgICAgcmV0dXJuIGluaXRpYWxpemVBcHAoXG4gICAgICAgIHtcbiAgICAgICAgICBwcm9qZWN0SWQ6IGdjcFByb2plY3RJZCxcbiAgICAgICAgICBjcmVkZW50aWFsOiBhcHBsaWNhdGlvbkRlZmF1bHQoKSxcbiAgICAgICAgfSxcbiAgICAgICAgYXBwTmFtZVxuICAgICAgKTtcbiAgICB9XG4gICAgdGhyb3cgZXJyO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjbXNQbHVnaW4ob3B0aW9uczogQ01TUGx1Z2luT3B0aW9ucyk6IENNU1BsdWdpbiB7XG4gIGNvbnN0IGZpcmViYXNlQ29uZmlnID0gb3B0aW9ucy5maXJlYmFzZUNvbmZpZztcbiAgY29uc3QgY29va2llU2VjcmV0ID0gb3B0aW9ucy5jb29raWVTZWNyZXQgfHwgZ2VuZXJhdGVTZWNyZXQoKTtcbiAgY29uc3QgYXBwID0gZ2V0RmlyZWJhc2VBcHAoZmlyZWJhc2VDb25maWcucHJvamVjdElkKTtcbiAgY29uc3QgYXV0aCA9IGdldEF1dGgoYXBwKTtcblxuICAvKipcbiAgICogQ2hlY2tzIGlmIGxvZ2luIGlzIHJlcXVpcmVkIGZvciB0aGUgcmVxdWVzdC4gQ3VycmVudGx5IHJldHVybnMgYHRydWVgIGlmXG4gICAqIHRoZSBVUkwgcGF0aCBzdGFydHMgd2l0aCAvY21zIG9yIGlmID9wcmV2aWV3PXRydWUgaXMgaW4gdGhlIFVSTC5cbiAgICovXG4gIGZ1bmN0aW9uIGxvZ2luUmVxdWlyZWQocmVxOiBSZXF1ZXN0KTogYm9vbGVhbiB7XG4gICAgaWYgKHJlcS5vcmlnaW5hbFVybC5zdGFydHNXaXRoKCcvY21zJykpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBpZiAoU3RyaW5nKHJlcS5xdWVyeS5wcmV2aWV3KSA9PT0gJ3RydWUnKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqIFZlcmlmaWVzIGEgbmV3IGxvZ2luIHJlcXVlc3QgZm9yIGEgdXNlci4gVGhlIHJlcXVlc3QgYm9keSBzaG91bGQgY29udGFpblxuICAgKiBhbiBpZFRva2VuLCB3aGljaCBpcyB2ZXJpZmllZCBvbiBwcm9kIHVzaW5nIEZpcmViYXNlIEFkbWluIGFuZCBJZGVudGl0eVxuICAgKiBUb29sa2l0LiBJZiBhIGBpc1VzZXJBdXRob3JpemVkKClgIGNvbmZpZyBpcyBzZXQsIHRoaXMgZnVuY3Rpb24gd2lsbCBhbHNvXG4gICAqIHZlcmlmeSB2aWEgdGhhdCBmdW5jdGlvbi4gUmV0dXJucyB0cnVlIGlmIHRoZSBsb2dpbiB2ZXJpZmljYXRpb24gc3VjY2VlZHMuXG4gICAqL1xuICBhc3luYyBmdW5jdGlvbiB2ZXJpZnlVc2VyTG9naW4ocmVxOiBSZXF1ZXN0KTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgY29uc3QgaWRUb2tlbiA9IHJlcS5ib2R5Py5pZFRva2VuO1xuICAgIGlmICghaWRUb2tlbikge1xuICAgICAgY29uc29sZS5sb2coJ2xvZ2luIGZhaWxlZDogbm8gaWQgdG9rZW4nKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyBPbiBsb2NhbCBkZXYsIHNpbXBseSB2ZXJpZnkgdGhhdCBhbiBpZFRva2VuIGlzIHNldC4gVGhlIGlkZW50aXR5IHRvb2xraXRcbiAgICAvLyB0aGF0IHZlcmlmaWVzIGlkIHRva2VucyByZXF1aXJlcyBhIHNlcnZpY2UgYWNjb3VudCwgd2hpY2ggd2Ugd2FudCB0b1xuICAgIC8vIGF2b2lkIGhhdmluZyB0byBzZXQgdXAgd2hlbiB1c2VycyBhcmUgZG9pbmcgbG9jYWwgZGV2ZWxvcG1lbnQuXG4gICAgLy8gQXV0aGVudGljYXRpb24gaXMgc3RpbGwgcmVxdWlyZWQgYnkgdGhlIGZyb250ZW5kIHVzaW5nIEZpcmViYXNlIEF1dGgsXG4gICAgLy8gdGhpcyBqdXN0IGJ5cGFzc2VzIHRoZSBpbml0aWFsIHNlcnZlciBjaGVjayBiZWZvcmUgdGhlIHVpIGlzIHJlbmRlcmVkLlxuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ2RldmVsb3BtZW50Jykge1xuICAgICAgcmV0dXJuIEJvb2xlYW4oaWRUb2tlbik7XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGp3dCA9IGF3YWl0IGF1dGgudmVyaWZ5SWRUb2tlbihpZFRva2VuLCB0cnVlKTtcbiAgICAgIGlmIChpc0V4cGlyZWQoand0KSkge1xuICAgICAgICBjb25zb2xlLmxvZygnbG9naW4gZmFpbGVkOiBpZCB0b2tlbiBpcyBleHBpcmVkJyk7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIGlmICghand0LmVtYWlsIHx8ICFqd3QuZW1haWxfdmVyaWZpZWQpIHtcbiAgICAgICAgY29uc29sZS5sb2coJ2xvZ2luIGZhaWxlZDogZW1haWwgdW52ZXJpZmllZCcpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICBpZiAob3B0aW9ucy5pc1VzZXJBdXRob3JpemVkKSB7XG4gICAgICAgIGNvbnN0IGF1dGhvcml6ZWQgPSBhd2FpdCBvcHRpb25zLmlzVXNlckF1dGhvcml6ZWQocmVxLCBqd3QpO1xuICAgICAgICBpZiAoIWF1dGhvcml6ZWQpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZygnbG9naW4gZmFpbGVkOiB1c2VyIGlzIG5vdCBhdXRob3JpemVkJyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGF1dGhvcml6ZWQ7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdmYWlsZWQgdG8gdmVyaWZ5IGp3dCB0b2tlbicpO1xuICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICAvLyBUT0RPKHN0ZXZlbmxlKTogZGVjaWRlIHdoZXRoZXIgd2Ugd2FudCB0byBlbmZvcmNlIGBpc1VzZXJBdXRob3JpemVkKClgLlxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLyoqXG4gICAqIFZlcmlmaWVzIHdoZXRoZXIgdGhlIGN1cnJlbnQgdXNlciBzZXNzaW9uIHNob3VsZCBiZSBhbGxvd2VkIHRvIGFjY2VzcyB0aGVcbiAgICogQ01TLiBSZXR1cm5zIHRydWUgaWYgYWNjZXNzIGlzIGdyYW50ZWQuXG4gICAqL1xuICBhc3luYyBmdW5jdGlvbiB2ZXJpZnlVc2VyU2Vzc2lvbihyZXE6IFJlcXVlc3QpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBjb25zdCBzZXNzaW9uQ29va2llID0gU3RyaW5nKHJlcS5zaWduZWRDb29raWVzW1NFU1NJT05fQ09PS0lFXSB8fCAnJyk7XG4gICAgaWYgKCFzZXNzaW9uQ29va2llKSB7XG4gICAgICBjb25zb2xlLmxvZygnc2Vzc2lvbiBmYWlsZWQ6IG5vIHNlc3Npb24gY29va2llJyk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgLy8gT24gbG9jYWwgZGV2LCBzaW1wbHkgdmVyaWZ5IHRoYXQgYW4gc2Vzc2lvbiBjb29raWUgaXMgc2V0LiBTZWUgbm90ZVxuICAgIC8vIGFib3ZlIGluIGB2ZXJpZnlVc2VyTG9naW4oKWAgZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAnZGV2ZWxvcG1lbnQnKSB7XG4gICAgICByZXR1cm4gQm9vbGVhbihzZXNzaW9uQ29va2llKTtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgY29uc3Qgand0ID0gYXdhaXQgYXV0aC52ZXJpZnlTZXNzaW9uQ29va2llKHNlc3Npb25Db29raWUsIHRydWUpO1xuICAgICAgaWYgKGlzRXhwaXJlZChqd3QpKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKCdzZXNzaW9uIGZhaWxlZDogdG9rZW4gaXMgZXhwaXJlZCcpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICBpZiAoIWp3dC5lbWFpbCB8fCAhand0LmVtYWlsX3ZlcmlmaWVkKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKCdzZXNzaW9uIGZhaWxlZDogZW1haWwgbm90IHZlcmlmaWVkJyk7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIGlmIChvcHRpb25zLmlzVXNlckF1dGhvcml6ZWQpIHtcbiAgICAgICAgY29uc3QgYXV0aG9yaXplZCA9IGF3YWl0IG9wdGlvbnMuaXNVc2VyQXV0aG9yaXplZChyZXEsIGp3dCk7XG4gICAgICAgIGlmICghYXV0aG9yaXplZCkge1xuICAgICAgICAgIGNvbnNvbGUubG9nKCdzZXNzaW9uIGZhaWxlZDogbm90IGF1dGhvcml6ZWQnKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYXV0aG9yaXplZDtcbiAgICAgIH1cbiAgICAgIC8vIFRPRE8oc3RldmVubGUpOiBkZWNpZGUgd2hldGhlciB3ZSB3YW50IHRvIGVuZm9yY2UgYGlzVXNlckF1dGhvcml6ZWQoKWAuXG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ2ZhaWxlZCB0byB2ZXJpZnkgand0IHRva2VuJyk7XG4gICAgICBjb25zb2xlLmVycm9yKGVycik7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBuYW1lOiAncm9vdC1jbXMnLFxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgY29uZmlnIG9wdGlvbnMgcGFzc2VkIHRvIHRoZSBwbHVnaW4uXG4gICAgICovXG4gICAgZ2V0Q29uZmlnOiAoKSA9PiB7XG4gICAgICByZXR1cm4gb3B0aW9ucztcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgRmlyZWJhc2UgQXBwIGluc3RhbmNlIHVzZWQgYnkgdGhlIHBsdWdpbi5cbiAgICAgKi9cbiAgICBnZXRGaXJlYmFzZUFwcDogKCkgPT4ge1xuICAgICAgcmV0dXJuIGFwcDtcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogQSBtYXAgb2Ygc3NyIGZpbGVzIHRvIGluY2x1ZGUgd2hlbiBydW5uaW5nIGByb290IGJ1aWxkYC5cbiAgICAgKi9cbiAgICBzc3JJbnB1dDogKCkgPT4gKHtcbiAgICAgIGNtczogcGF0aC5yZXNvbHZlKF9fZGlybmFtZSwgJy4vYXBwLmpzJyksXG4gICAgfSksXG5cbiAgICAvKipcbiAgICAgKiBBdHRhY2hlcyBDTVMtc3BlY2lmaWMgbWlkZGxld2FyZSB0byB0aGUgUm9vdC5qcyBzZXJ2ZXIuXG4gICAgICovXG4gICAgY29uZmlndXJlU2VydmVyOiBhc3luYyAoXG4gICAgICBzZXJ2ZXI6IFNlcnZlcixcbiAgICAgIHNlcnZlck9wdGlvbnM6IENvbmZpZ3VyZVNlcnZlck9wdGlvbnNcbiAgICApID0+IHtcbiAgICAgIHNlcnZlci51c2UoY29va2llUGFyc2VyKGNvb2tpZVNlY3JldCkpO1xuICAgICAgc2VydmVyLnVzZShib2R5UGFyc2VyLmpzb24oKSk7XG5cbiAgICAgIGFzeW5jIGZ1bmN0aW9uIGdldFJlbmRlcmVyKHJlcTogUmVxdWVzdCk6IFByb21pc2U8QXBwTW9kdWxlPiB7XG4gICAgICAgIGlmIChzZXJ2ZXJPcHRpb25zLnR5cGUgPT09ICdkZXYnKSB7XG4gICAgICAgICAgY29uc3QgYXBwRmlsZVBhdGggPSBwYXRoLnJlc29sdmUoX19kaXJuYW1lLCAnLi9hcHAuanMnKTtcbiAgICAgICAgICBjb25zdCBhcHAgPSAoYXdhaXQgcmVxLnZpdGVTZXJ2ZXIhLnNzckxvYWRNb2R1bGUoXG4gICAgICAgICAgICBhcHBGaWxlUGF0aFxuICAgICAgICAgICkpIGFzIEFwcE1vZHVsZTtcbiAgICAgICAgICByZXR1cm4gYXBwO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgYXBwSW1wb3J0UGF0aCA9IHBhdGgucmVzb2x2ZShcbiAgICAgICAgICByZXEucm9vdENvbmZpZyEucm9vdERpcixcbiAgICAgICAgICAnZGlzdC9zZXJ2ZXIvY21zLmpzJ1xuICAgICAgICApO1xuICAgICAgICBpZiAoIShhd2FpdCBmaWxlRXhpc3RzKGFwcEltcG9ydFBhdGgpKSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgICdkaXN0L3NlcnZlci9jbXMuanMgbm90IGZvdW5kLiBydW4gYHJvb3QgYnVpbGRgIHRvIGNyZWF0ZSBpdC4nXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBhcHAgPSAoYXdhaXQgaW1wb3J0KGFwcEltcG9ydFBhdGgpKSBhcyBBcHBNb2R1bGU7XG4gICAgICAgIHJldHVybiBhcHA7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHN0YXRpY0RpciA9IHBhdGgucmVzb2x2ZShfX2Rpcm5hbWUsICd1aScpO1xuICAgICAgc2VydmVyLnVzZSgnL2Ntcy9zdGF0aWMnLCBzaXJ2KHN0YXRpY0Rpciwge2RldjogZmFsc2V9KSk7XG5cbiAgICAgIC8vIExvZ2luIGhhbmRsZXIuXG4gICAgICBzZXJ2ZXIudXNlKCcvY21zL2xvZ2luJywgYXN5bmMgKHJlcTogUmVxdWVzdCwgcmVzOiBSZXNwb25zZSkgPT4ge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgcmVxLm1ldGhvZCA9PT0gJ1BVVCcgJiZcbiAgICAgICAgICByZXEuaGVhZGVyc1snY29udGVudC10eXBlJ10gPT09ICdhcHBsaWNhdGlvbi9qc29uJ1xuICAgICAgICApIHtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgaXNBdXRob3JpemVkID0gYXdhaXQgdmVyaWZ5VXNlckxvZ2luKHJlcSk7XG4gICAgICAgICAgICBpZiAoIWlzQXV0aG9yaXplZCkge1xuICAgICAgICAgICAgICByZXMuc3RhdHVzKDQwMSkuanNvbih7c3VjY2VzczogZmFsc2UsIGVycm9yOiAnTk9UX0FVVEhPUklaRUQnfSk7XG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gU2V0IHNlc3Npb24gZXhwaXJhdGlvbiB0byA1IGRheXMuXG4gICAgICAgICAgICBjb25zdCBleHBpcmVzSW4gPSA2MCAqIDYwICogMjQgKiA1ICogMTAwMDtcbiAgICAgICAgICAgIGNvbnN0IGlkVG9rZW4gPSByZXEuYm9keS5pZFRva2VuITtcblxuICAgICAgICAgICAgbGV0IHNlc3Npb25Db29raWU6IHN0cmluZztcbiAgICAgICAgICAgIGxldCBzZWN1cmVDb29raWUgPSB0cnVlO1xuICAgICAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAnZGV2ZWxvcG1lbnQnKSB7XG4gICAgICAgICAgICAgIHNlc3Npb25Db29raWUgPSBpZFRva2VuO1xuICAgICAgICAgICAgICBzZWN1cmVDb29raWUgPSBmYWxzZTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHNlc3Npb25Db29raWUgPSBhd2FpdCBhdXRoLmNyZWF0ZVNlc3Npb25Db29raWUoaWRUb2tlbiwge1xuICAgICAgICAgICAgICAgIGV4cGlyZXNJbixcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXMuY29va2llKFNFU1NJT05fQ09PS0lFLCBzZXNzaW9uQ29va2llLCB7XG4gICAgICAgICAgICAgIG1heEFnZTogZXhwaXJlc0luLFxuICAgICAgICAgICAgICBodHRwT25seTogdHJ1ZSxcbiAgICAgICAgICAgICAgc2VjdXJlOiBzZWN1cmVDb29raWUsXG4gICAgICAgICAgICAgIHNpZ25lZDogdHJ1ZSxcbiAgICAgICAgICAgICAgc2FtZVNpdGU6ICdzdHJpY3QnLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXMuanNvbih7c3VjY2VzczogdHJ1ZX0pO1xuICAgICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xuICAgICAgICAgICAgaWYgKGVyci5zdGFjaykge1xuICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGVyci5zdGFjayk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXNcbiAgICAgICAgICAgICAgLnN0YXR1cyg1MDApXG4gICAgICAgICAgICAgIC5qc29uKHtzdWNjZXNzOiBmYWxzZSwgZXJyb3I6ICdVTktOT1dOX1NFUlZFUl9FUlJPUid9KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCBhcHAgPSBhd2FpdCBnZXRSZW5kZXJlcihyZXEpO1xuICAgICAgICAgIGFwcC5yZW5kZXJTaWduSW4ocmVxLCByZXMsIG9wdGlvbnMpO1xuICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKGVycik7XG4gICAgICAgICAgaWYgKGVyci5zdGFjaykge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnIuc3RhY2spO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXMuc3RhdHVzKDUwMCkuc2VuZCgnVU5LTk9XTiBTRVJWRVIgRVJST1InKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIC8vIExvZ291dCBoYW5kbGVyLlxuICAgICAgc2VydmVyLnVzZSgnL2Ntcy9sb2dvdXQnLCBhc3luYyAocmVxOiBSZXF1ZXN0LCByZXM6IFJlc3BvbnNlKSA9PiB7XG4gICAgICAgIHJlcy5jbGVhckNvb2tpZShTRVNTSU9OX0NPT0tJRSk7XG4gICAgICAgIHJlcy5yZWRpcmVjdCgnL2Ntcy9sb2dpbicpO1xuICAgICAgfSk7XG5cbiAgICAgIC8vIFNhZmVndWFyZCB0byB2ZXJpZnkgdXNlciBsb2dpbiBiZWZvcmUgcmVuZGVyaW5nIGFueSBDTVMgcGFnZS5cbiAgICAgIHNlcnZlci51c2UoYXN5bmMgKHJlcTogUmVxdWVzdCwgcmVzOiBSZXNwb25zZSwgbmV4dDogTmV4dEZ1bmN0aW9uKSA9PiB7XG4gICAgICAgIGlmICghbG9naW5SZXF1aXJlZChyZXEpKSB7XG4gICAgICAgICAgbmV4dCgpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB1c2VySXNMb2dnZWRJbiA9IGF3YWl0IHZlcmlmeVVzZXJTZXNzaW9uKHJlcSk7XG4gICAgICAgIGlmICh1c2VySXNMb2dnZWRJbikge1xuICAgICAgICAgIG5leHQoKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHJlcS5vcmlnaW5hbFVybC5zdGFydHNXaXRoKCcvY21zL2FwaScpKSB7XG4gICAgICAgICAgcmVzLnN0YXR1cyg0MDEpLmpzb24oe3N1Y2Nlc3M6IGZhbHNlLCBlcnJvcjogJ05PVF9BVVRIT1JJWkVEJ30pO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zb2xlLmxvZygncmVkaXJlY3RpbmcgdG8gbG9naW4gcGFnZScpO1xuICAgICAgICBjb25zdCBwYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKHtcbiAgICAgICAgICBjb250aW51ZTogcmVxLm9yaWdpbmFsVXJsLFxuICAgICAgICB9KTtcbiAgICAgICAgcmVzLnJlZGlyZWN0KGAvY21zL2xvZ2luPyR7cGFyYW1zLnRvU3RyaW5nKCl9YCk7XG4gICAgICB9KTtcblxuICAgICAgLy8gUmVnaXN0ZXIgQVBJIGhhbmRsZXJzLlxuICAgICAgYXBpKHNlcnZlcik7XG5cbiAgICAgIC8vIFJlbmRlciB0aGUgQ01TIFNQQS5cbiAgICAgIHNlcnZlci51c2UoJy9jbXMnLCBhc3luYyAocmVxOiBSZXF1ZXN0LCByZXM6IFJlc3BvbnNlKSA9PiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY29uc3QgYXBwID0gYXdhaXQgZ2V0UmVuZGVyZXIocmVxKTtcbiAgICAgICAgICBhd2FpdCBhcHAucmVuZGVyQXBwKHJlcSwgcmVzLCB7XG4gICAgICAgICAgICByb290Q29uZmlnOiByZXEucm9vdENvbmZpZyxcbiAgICAgICAgICAgIGNtc0NvbmZpZzogb3B0aW9ucyxcbiAgICAgICAgICAgIGZpcmViYXNlQ29uZmlnOiBvcHRpb25zLmZpcmViYXNlQ29uZmlnLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAvLyBUT0RPKHN0ZXZlbmxlKTogcmVuZGVyIGEgY3VzdG9tIGVycm9yIHBhZ2UuXG4gICAgICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xuICAgICAgICAgIHJlcy5zdGF0dXMoNTAwKS5zZW5kKCdVTktOT1dOIFNFUlZFUiBFUlJPUicpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9LFxuICB9O1xufVxuXG5mdW5jdGlvbiBmaWxlRXhpc3RzKGZpbGVwYXRoOiBzdHJpbmcpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgcmV0dXJuIGZzXG4gICAgLmFjY2VzcyhmaWxlcGF0aClcbiAgICAudGhlbigoKSA9PiB0cnVlKVxuICAgIC5jYXRjaCgoKSA9PiBmYWxzZSk7XG59XG4iLCAiaW1wb3J0IHtTZXJ2ZXJ9IGZyb20gJ0BibGlua2svcm9vdCc7XG5pbXBvcnQgbXVsdGVyIGZyb20gJ211bHRlcic7XG5pbXBvcnQge2FycmF5VG9Dc3YsIGNzdlRvQXJyYXl9IGZyb20gJy4vY3N2LmpzJztcblxuY29uc3QgbWVtb3J5U3RvcmFnZSA9IG11bHRlci5tZW1vcnlTdG9yYWdlKCk7XG5jb25zdCB1cGxvYWQgPSBtdWx0ZXIoe3N0b3JhZ2U6IG1lbW9yeVN0b3JhZ2V9KTtcblxuLyoqXG4gKiBSZWdpc3RlcnMgQVBJIG1pZGRsZXdhcmUgaGFuZGxlcnMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhcGkoc2VydmVyOiBTZXJ2ZXIpIHtcbiAgLyoqXG4gICAqIEFjY2VwdHMgYSBKU09OIG9iamVjdCBjb250YWluaW5nIHtoZWFkZXJzOiBbLi4uXSwgcm93czogWy4uLl19IGFuZCBzZW5kc1xuICAgKiBhbiBIVFRQIHJlc3BvbnNlIHdpdGggYSBjb3JyZXNwb25kaW5nIENTViBmaWxlIGFzIGFuIGF0dGFjaG1lbnQuXG4gICAqXG4gICAqIFNhbXBsZSByZXF1ZXN0OlxuICAgKlxuICAgKiBgYGBqc29uXG4gICAqIHtcbiAgICogICBcImhlYWRlcnNcIjogW1wiZm9vXCJdLFxuICAgKiAgIFwicm93c1wiOiBbXG4gICAqICAgICB7XCJmb29cIjogXCJiYXJcIn0sXG4gICAqICAgICB7XCJmb29cIjogXCJiYXpcIn0sXG4gICAqICAgXVxuICAgKiB9XG4gICAqIGBgYFxuICAgKi9cbiAgc2VydmVyLnVzZSgnL2Ntcy9hcGkvY3N2LmRvd25sb2FkJywgKHJlcSwgcmVzKSA9PiB7XG4gICAgaWYgKFxuICAgICAgcmVxLm1ldGhvZCAhPT0gJ1BPU1QnIHx8XG4gICAgICAhU3RyaW5nKHJlcS5nZXQoJ2NvbnRlbnQtdHlwZScpKS5zdGFydHNXaXRoKCdhcHBsaWNhdGlvbi9qc29uJylcbiAgICApIHtcbiAgICAgIHJlcy5zdGF0dXMoNDAwKS5qc29uKHtzdWNjZXNzOiBmYWxzZSwgZXJyb3I6ICdCQURfUkVRVUVTVCd9KTtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgYm9keSA9IHJlcS5ib2R5IHx8IHt9O1xuICAgICAgY29uc3QgaGVhZGVycyA9IGJvZHkuaGVhZGVycyB8fCBbXTtcbiAgICAgIGNvbnN0IHJvd3MgPSBib2R5LnJvd3MgfHwgW107XG4gICAgICBjb25zdCBjc3YgPSBhcnJheVRvQ3N2KHtoZWFkZXJzLCByb3dzfSk7XG4gICAgICByZXMuc2V0SGVhZGVyKCdDb250ZW50LVR5cGUnLCAndGV4dC9jc3YnKTtcbiAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtRGlzcG9zaXRpb24nLCAnYXR0YWNobWVudDsgZmlsZW5hbWU9XCJkYXRhLmNzdlwiJyk7XG4gICAgICByZXMuc3RhdHVzKDIwMCkuZW5kKGNzdik7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBjb25zb2xlLmVycm9yKGVyci5zdGFjayB8fCBlcnIpO1xuICAgICAgcmVzLnN0YXR1cyg1MDApLmpzb24oe3N1Y2Nlc3M6IGZhbHNlLCBlcnJvcjogJ1VOS05PV04nfSk7XG4gICAgfVxuICB9KTtcblxuICAvKipcbiAgICogSW1wb3J0cyBhIENTViBmaWxlIGFuZCByZXR1cm5zIGEgSlNPTiBhcnJheSBvZiBvYmplY3RzIHJlcHJlc2VudGluZyB0aGVcbiAgICogQ1NWLlxuICAgKlxuICAgKiBTYW1wbGUgcmVzcG9uc2U6XG4gICAqXG4gICAqIGBgYGpzb25cbiAgICoge1xuICAgKiAgIFwic3VjY2Vzc1wiOiB0cnVlLFxuICAgKiAgIFwiZGF0YVwiOiBbXG4gICAqICAgICB7XCJmb29cIjogXCJiYXJcIn0sXG4gICAqICAgICB7XCJmb29cIjogXCJiYXpcIn0sXG4gICAqICAgXVxuICAgKiB9XG4gICAqIGBgYFxuICAgKi9cbiAgc2VydmVyLnVzZSgnL2Ntcy9hcGkvY3N2LmltcG9ydCcsIHVwbG9hZC5zaW5nbGUoJ2ZpbGUnKSwgKHJlcSwgcmVzKSA9PiB7XG4gICAgaWYgKHJlcS5tZXRob2QgIT09ICdQT1NUJyB8fCAhcmVxLmZpbGUpIHtcbiAgICAgIHJlcy5zdGF0dXMoNDAwKS5qc29uKHtzdWNjZXNzOiBmYWxzZSwgZXJyb3I6ICdCQURfUkVRVUVTVCd9KTtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgZmlsZSA9IHJlcS5maWxlITtcbiAgICAgIGNvbnN0IGNzdlN0cmluZyA9IGZpbGUuYnVmZmVyLnRvU3RyaW5nKCd1dGY4Jyk7XG4gICAgICBjb25zdCByb3dzID0gY3N2VG9BcnJheShjc3ZTdHJpbmcpO1xuICAgICAgcmVzLnN0YXR1cygyMDApLmpzb24oe3N1Y2Nlc3M6IHRydWUsIGRhdGE6IHJvd3N9KTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoZXJyLnN0YWNrIHx8IGVycik7XG4gICAgICByZXMuc3RhdHVzKDUwMCkuanNvbih7c3VjY2VzczogZmFsc2UsIGVycm9yOiAnVU5LTk9XTid9KTtcbiAgICB9XG4gIH0pO1xufVxuIiwgImltcG9ydCB7cGFyc2UgYXMgY3N2UGFyc2V9IGZyb20gJ2Nzdi1wYXJzZS9zeW5jJztcbmltcG9ydCB7c3RyaW5naWZ5IGFzIGNzdlN0cmluZ2lmeX0gZnJvbSAnY3N2LXN0cmluZ2lmeS9zeW5jJztcblxuZXhwb3J0IGZ1bmN0aW9uIGFycmF5VG9Dc3YocmVxOiB7XG4gIGhlYWRlcnM6IHN0cmluZ1tdO1xuICByb3dzOiBBcnJheTxSZWNvcmQ8c3RyaW5nLCBhbnk+Pjtcbn0pOiBzdHJpbmcge1xuICBjb25zdCBoZWFkZXJzID0gcmVxLmhlYWRlcnMgfHwgW107XG4gIGNvbnN0IHJvd3MgPSByZXEucm93cyB8fCBbXTtcbiAgcmV0dXJuIGNzdlN0cmluZ2lmeShyb3dzLCB7XG4gICAgaGVhZGVyOiB0cnVlLFxuICAgIGNvbHVtbnM6IGhlYWRlcnMsXG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3N2VG9BcnJheShjc3ZTdHJpbmc6IHN0cmluZykge1xuICBjb25zdCByb3dzID0gY3N2UGFyc2UoY3N2U3RyaW5nLCB7XG4gICAgY29sdW1uczogdHJ1ZSxcbiAgICBza2lwX2VtcHR5X2xpbmVzOiB0cnVlLFxuICB9KTtcbiAgcmV0dXJuIHJvd3M7XG59XG4iXSwKICAibWFwcGluZ3MiOiAiO0FBQUEsU0FBUSxZQUFZLFVBQVM7QUFDN0IsT0FBTyxVQUFVO0FBQ2pCLFNBQVEscUJBQW9CO0FBVTVCLE9BQU8sZ0JBQWdCO0FBQ3ZCLE9BQU8sa0JBQWtCO0FBQ3pCO0FBQUEsRUFFRTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsT0FDSztBQUNQLFNBQVEsZUFBOEI7QUFDdEMsT0FBTyxVQUFVOzs7QUNwQmpCLE9BQU8sWUFBWTs7O0FDRG5CLFNBQVEsU0FBUyxnQkFBZTtBQUNoQyxTQUFRLGFBQWEsb0JBQW1CO0FBRWpDLFNBQVMsV0FBVyxLQUdoQjtBQUNULFFBQU0sVUFBVSxJQUFJLFdBQVcsQ0FBQztBQUNoQyxRQUFNLE9BQU8sSUFBSSxRQUFRLENBQUM7QUFDMUIsU0FBTyxhQUFhLE1BQU07QUFBQSxJQUN4QixRQUFRO0FBQUEsSUFDUixTQUFTO0FBQUEsRUFDWCxDQUFDO0FBQ0g7QUFFTyxTQUFTLFdBQVcsV0FBbUI7QUFDNUMsUUFBTSxPQUFPLFNBQVMsV0FBVztBQUFBLElBQy9CLFNBQVM7QUFBQSxJQUNULGtCQUFrQjtBQUFBLEVBQ3BCLENBQUM7QUFDRCxTQUFPO0FBQ1Q7OztBRGpCQSxJQUFNLGdCQUFnQixPQUFPLGNBQWM7QUFDM0MsSUFBTSxTQUFTLE9BQU8sRUFBQyxTQUFTLGNBQWEsQ0FBQztBQUt2QyxTQUFTLElBQUksUUFBZ0I7QUFpQmxDLFNBQU8sSUFBSSx5QkFBeUIsQ0FBQyxLQUFLLFFBQVE7QUFDaEQsUUFDRSxJQUFJLFdBQVcsVUFDZixDQUFDLE9BQU8sSUFBSSxJQUFJLGNBQWMsQ0FBQyxFQUFFLFdBQVcsa0JBQWtCLEdBQzlE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
|
|
323
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vY29yZS9wbHVnaW4udHMiLCAiLi4vY29yZS9hcGkudHMiLCAiLi4vY29yZS9jc3YudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImltcG9ydCB7cHJvbWlzZXMgYXMgZnN9IGZyb20gJ25vZGU6ZnMnO1xuaW1wb3J0IHBhdGggZnJvbSAnbm9kZTpwYXRoJztcbmltcG9ydCB7ZmlsZVVSTFRvUGF0aH0gZnJvbSAnbm9kZTp1cmwnO1xuXG5pbXBvcnQge1xuICBDb25maWd1cmVTZXJ2ZXJPcHRpb25zLFxuICBOZXh0RnVuY3Rpb24sXG4gIFBsdWdpbixcbiAgUmVxdWVzdCxcbiAgUmVzcG9uc2UsXG4gIFNlcnZlcixcbn0gZnJvbSAnQGJsaW5ray9yb290JztcbmltcG9ydCBib2R5UGFyc2VyIGZyb20gJ2JvZHktcGFyc2VyJztcbmltcG9ydCBjb29raWVQYXJzZXIgZnJvbSAnY29va2llLXBhcnNlcic7XG5pbXBvcnQge1xuICBBcHAsXG4gIGFwcGxpY2F0aW9uRGVmYXVsdCxcbiAgZ2V0QXBwLFxuICBpbml0aWFsaXplQXBwLFxufSBmcm9tICdmaXJlYmFzZS1hZG1pbi9hcHAnO1xuaW1wb3J0IHtnZXRBdXRoLCBEZWNvZGVkSWRUb2tlbn0gZnJvbSAnZmlyZWJhc2UtYWRtaW4vYXV0aCc7XG5pbXBvcnQgc2lydiBmcm9tICdzaXJ2JztcbmltcG9ydCB7YXBpfSBmcm9tICcuL2FwaS5qcyc7XG5cbmNvbnN0IF9fZGlybmFtZSA9IHBhdGguZGlybmFtZShmaWxlVVJMVG9QYXRoKGltcG9ydC5tZXRhLnVybCkpO1xuXG50eXBlIEFwcE1vZHVsZSA9IHR5cGVvZiBpbXBvcnQoJy4vYXBwLmpzJyk7XG5cbi8vIFRoZSBzZXNzaW9uIGNvb2tpZSBuYW1lIG5lZWRzIHRvIG1hdGNoIHdoYXQncyBhbGxvd2VkIGJ5IEZpcmViYXNlIEhvc3RpbmcuXG4vLyBodHRwczovL2ZpcmViYXNlLmdvb2dsZS5jb20vZG9jcy9ob3N0aW5nL21hbmFnZS1jYWNoZSN1c2luZ19jb29raWVzXG5jb25zdCBTRVNTSU9OX0NPT0tJRSA9ICdfX3Nlc3Npb24nO1xuXG5leHBvcnQgdHlwZSBDTVNVc2VyID0gRGVjb2RlZElkVG9rZW47XG5cbmV4cG9ydCB0eXBlIENNU1BsdWdpbk9wdGlvbnMgPSB7XG4gIC8qKlxuICAgKiBUaGUgSUQgb2YgdGhlIHByb2plY3QuIERhdGEgd2lsbCBiZSBzdG9yZWQgdW5kZXIgdGhlIG5hbWVzcGFjZVxuICAgKiBgUHJvamVjdHMvJHtpZH1gIGluIGZpcmVzdG9yZS5cbiAgICovXG4gIGlkPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgcHJvamVjdC4gVXNlZCBpbiB0aGUgaGVhZGVyIG9mIHRoZSBDTVMgdG8gaGVscCBpZGVudGlmeVxuICAgKiB0aGUgcHJvamVjdC5cbiAgICovXG4gIG5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEZpcmViYXNlIGNvbmZpZyBvYmplY3QsIHdoaWNoIGNhbiBiZSBvYnRhaW5lZCBpbiB0aGUgRmlyZWJhc2UgQ29uc29sZSBieVxuICAgKiBnb2luZyB0byBcIlByb2plY3QgU2V0dGluZ3NcIi5cbiAgICovXG4gIGZpcmViYXNlQ29uZmlnOiB7XG4gICAgW2tleTogc3RyaW5nXTogc3RyaW5nO1xuICAgIGFwaUtleTogc3RyaW5nO1xuICAgIGF1dGhEb21haW46IHN0cmluZztcbiAgICBwcm9qZWN0SWQ6IHN0cmluZztcbiAgICBzdG9yYWdlQnVja2V0OiBzdHJpbmc7XG4gICAgbWVzc2FnaW5nU2VuZGVySWQ6IHN0cmluZztcbiAgICBhcHBJZDogc3RyaW5nO1xuICB9O1xuXG4gIC8qKiBTZWNyZXQgdmFsdWUocykgdXNlZCBmb3Igc2lnbmluZyB0aGUgdXNlciBhdXRoZW50aWNhdGlvbiBjb29raWUuICovXG4gIGNvb2tpZVNlY3JldD86IHN0cmluZyB8IHN0cmluZ1tdO1xuXG4gIC8qKiBGdW5jdGlvbiBjYWxsZWQgdG8gY2hlY2sgaWYgYSB1c2VyIHNob3VsZCBoYXZlIGFjY2VzcyB0byB0aGUgQ01TLiAqL1xuICBpc1VzZXJBdXRob3JpemVkPzogKFxuICAgIHJlcTogUmVxdWVzdCxcbiAgICB1c2VyOiBDTVNVc2VyXG4gICkgPT4gYm9vbGVhbiB8IFByb21pc2U8Ym9vbGVhbj47XG5cbiAgLyoqXG4gICAqIFVSTCB0byBHQ0kgc2VydmljZSBmb3IgdHJhbnNmb3JtaW5nIHVwbG9hZGVkIEdDUyBpbWFnZXMgdG8gYSBHb29nbGUgQXBwXG4gICAqIEVuZ2luZSBJbWFnZXMgQVBJIHNlcnZpbmcgVVJMLlxuICAgKlxuICAgKiBTZXR0aW5nIHRoaXMgdG8gYHRydWVgIHVzZXMgdGhlIGRlZmF1bHQgaG9zdGVkIHNlcnZpY2UgYXRcbiAgICogaHR0cHM6Ly9nY2kucm9vdGpzLmRldi5cbiAgICpcbiAgICogVG8gc2V0IHVwIEdDSTpcbiAgICpcbiAgICogLSBDcmVhdGUgYSBHQ1MgYnVja2V0IHdpdGggZmluZS1ncmFpbmVkIHBlcm1pc3Npb25zXG4gICAqIC0gU2hhcmUgb3duZXIgYWNjZXNzIHRvIHRoZSBidWNrZXQgd2l0aCB0aGUgc2VydmljZSBhY2NvdW50IHJldHVybmVkIGluXG4gICAqICAgaHR0cHM6Ly9nY2kucm9vdGpzLmRldi9fL3NlcnZpY2VfYWNjb3VudFxuICAgKlxuICAgKiBUbyBkaXNhYmxlIEdDSSwgbGVhdmUgdGhpcyB2YWx1ZSBlbXB0eSBvciBzZXQgdG8gYGZhbHNlYCwgd2hpY2ggd2hpY2ggd2lsbFxuICAgKiBzZXJ2ZSBpbWFnZXMgZGlyZWN0bHkgZnJvbSBHQ1MgaW5zdGVhZC5cbiAgICovXG4gIGdjaT86IHN0cmluZyB8IGJvb2xlYW47XG59O1xuXG5leHBvcnQgdHlwZSBDTVNQbHVnaW4gPSBQbHVnaW4gJiB7XG4gIG5hbWU6ICdyb290LWNtcyc7XG4gIGdldENvbmZpZzogKCkgPT4gQ01TUGx1Z2luT3B0aW9ucztcbiAgZ2V0RmlyZWJhc2VBcHA6ICgpID0+IEFwcDtcbn07XG5cbmZ1bmN0aW9uIGdlbmVyYXRlU2VjcmV0KCk6IHN0cmluZyB7XG4gIGNvbnN0IHJlc3VsdCA9IFtdO1xuICBjb25zdCBjaGFycyA9XG4gICAgJ0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5JztcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCAzNjsgaSsrKSB7XG4gICAgY29uc3QgcmFuZCA9IE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIGNoYXJzLmxlbmd0aCk7XG4gICAgcmVzdWx0LnB1c2goY2hhcnMuY2hhckF0KHJhbmQpKTtcbiAgfVxuICByZXR1cm4gcmVzdWx0LmpvaW4oJycpO1xufVxuXG5mdW5jdGlvbiBpc0V4cGlyZWQoZGVjb2RlZElkVG9rZW46IERlY29kZWRJZFRva2VuKSB7XG4gIGNvbnN0IHRzID0gTWF0aC5mbG9vcihuZXcgRGF0ZSgpLmdldFRpbWUoKSAvIDEwMDApO1xuICByZXR1cm4gdHMgPj0gZGVjb2RlZElkVG9rZW4uZXhwO1xufVxuXG5mdW5jdGlvbiBnZXRGaXJlYmFzZUFwcChnY3BQcm9qZWN0SWQ6IHN0cmluZyk6IEFwcCB7XG4gIGNvbnN0IGFwcE5hbWUgPSAncm9vdC1jbXMnO1xuICB0cnkge1xuICAgIHJldHVybiBnZXRBcHAoYXBwTmFtZSk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGlmIChlcnIgJiYgZXJyLmNvZGUgPT09ICdhcHAvbm8tYXBwJykge1xuICAgICAgcmV0dXJuIGluaXRpYWxpemVBcHAoXG4gICAgICAgIHtcbiAgICAgICAgICBwcm9qZWN0SWQ6IGdjcFByb2plY3RJZCxcbiAgICAgICAgICBjcmVkZW50aWFsOiBhcHBsaWNhdGlvbkRlZmF1bHQoKSxcbiAgICAgICAgfSxcbiAgICAgICAgYXBwTmFtZVxuICAgICAgKTtcbiAgICB9XG4gICAgdGhyb3cgZXJyO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjbXNQbHVnaW4ob3B0aW9uczogQ01TUGx1Z2luT3B0aW9ucyk6IENNU1BsdWdpbiB7XG4gIGNvbnN0IGZpcmViYXNlQ29uZmlnID0gb3B0aW9ucy5maXJlYmFzZUNvbmZpZztcbiAgY29uc3QgY29va2llU2VjcmV0ID0gb3B0aW9ucy5jb29raWVTZWNyZXQgfHwgZ2VuZXJhdGVTZWNyZXQoKTtcbiAgY29uc3QgYXBwID0gZ2V0RmlyZWJhc2VBcHAoZmlyZWJhc2VDb25maWcucHJvamVjdElkKTtcbiAgY29uc3QgYXV0aCA9IGdldEF1dGgoYXBwKTtcblxuICAvKipcbiAgICogQ2hlY2tzIGlmIGxvZ2luIGlzIHJlcXVpcmVkIGZvciB0aGUgcmVxdWVzdC4gQ3VycmVudGx5IHJldHVybnMgYHRydWVgIGlmXG4gICAqIHRoZSBVUkwgcGF0aCBzdGFydHMgd2l0aCAvY21zIG9yIGlmID9wcmV2aWV3PXRydWUgaXMgaW4gdGhlIFVSTC5cbiAgICovXG4gIGZ1bmN0aW9uIGxvZ2luUmVxdWlyZWQocmVxOiBSZXF1ZXN0KTogYm9vbGVhbiB7XG4gICAgaWYgKHJlcS5vcmlnaW5hbFVybC5zdGFydHNXaXRoKCcvY21zJykpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBpZiAoU3RyaW5nKHJlcS5xdWVyeS5wcmV2aWV3KSA9PT0gJ3RydWUnKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqIFZlcmlmaWVzIGEgbmV3IGxvZ2luIHJlcXVlc3QgZm9yIGEgdXNlci4gVGhlIHJlcXVlc3QgYm9keSBzaG91bGQgY29udGFpblxuICAgKiBhbiBpZFRva2VuLCB3aGljaCBpcyB2ZXJpZmllZCBvbiBwcm9kIHVzaW5nIEZpcmViYXNlIEFkbWluIGFuZCBJZGVudGl0eVxuICAgKiBUb29sa2l0LiBJZiBhIGBpc1VzZXJBdXRob3JpemVkKClgIGNvbmZpZyBpcyBzZXQsIHRoaXMgZnVuY3Rpb24gd2lsbCBhbHNvXG4gICAqIHZlcmlmeSB2aWEgdGhhdCBmdW5jdGlvbi4gUmV0dXJucyB0cnVlIGlmIHRoZSBsb2dpbiB2ZXJpZmljYXRpb24gc3VjY2VlZHMuXG4gICAqL1xuICBhc3luYyBmdW5jdGlvbiB2ZXJpZnlVc2VyTG9naW4ocmVxOiBSZXF1ZXN0KTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgY29uc3QgaWRUb2tlbiA9IHJlcS5ib2R5Py5pZFRva2VuO1xuICAgIGlmICghaWRUb2tlbikge1xuICAgICAgY29uc29sZS5sb2coJ2xvZ2luIGZhaWxlZDogbm8gaWQgdG9rZW4nKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyBPbiBsb2NhbCBkZXYsIHNpbXBseSB2ZXJpZnkgdGhhdCBhbiBpZFRva2VuIGlzIHNldC4gVGhlIGlkZW50aXR5IHRvb2xraXRcbiAgICAvLyB0aGF0IHZlcmlmaWVzIGlkIHRva2VucyByZXF1aXJlcyBhIHNlcnZpY2UgYWNjb3VudCwgd2hpY2ggd2Ugd2FudCB0b1xuICAgIC8vIGF2b2lkIGhhdmluZyB0byBzZXQgdXAgd2hlbiB1c2VycyBhcmUgZG9pbmcgbG9jYWwgZGV2ZWxvcG1lbnQuXG4gICAgLy8gQXV0aGVudGljYXRpb24gaXMgc3RpbGwgcmVxdWlyZWQgYnkgdGhlIGZyb250ZW5kIHVzaW5nIEZpcmViYXNlIEF1dGgsXG4gICAgLy8gdGhpcyBqdXN0IGJ5cGFzc2VzIHRoZSBpbml0aWFsIHNlcnZlciBjaGVjayBiZWZvcmUgdGhlIHVpIGlzIHJlbmRlcmVkLlxuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ2RldmVsb3BtZW50Jykge1xuICAgICAgcmV0dXJuIEJvb2xlYW4oaWRUb2tlbik7XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGp3dCA9IGF3YWl0IGF1dGgudmVyaWZ5SWRUb2tlbihpZFRva2VuLCB0cnVlKTtcbiAgICAgIGlmIChpc0V4cGlyZWQoand0KSkge1xuICAgICAgICBjb25zb2xlLmxvZygnbG9naW4gZmFpbGVkOiBpZCB0b2tlbiBpcyBleHBpcmVkJyk7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIGlmICghand0LmVtYWlsIHx8ICFqd3QuZW1haWxfdmVyaWZpZWQpIHtcbiAgICAgICAgY29uc29sZS5sb2coJ2xvZ2luIGZhaWxlZDogZW1haWwgdW52ZXJpZmllZCcpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICBpZiAob3B0aW9ucy5pc1VzZXJBdXRob3JpemVkKSB7XG4gICAgICAgIGNvbnN0IGF1dGhvcml6ZWQgPSBhd2FpdCBvcHRpb25zLmlzVXNlckF1dGhvcml6ZWQocmVxLCBqd3QpO1xuICAgICAgICBpZiAoIWF1dGhvcml6ZWQpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZygnbG9naW4gZmFpbGVkOiB1c2VyIGlzIG5vdCBhdXRob3JpemVkJyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGF1dGhvcml6ZWQ7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdmYWlsZWQgdG8gdmVyaWZ5IGp3dCB0b2tlbicpO1xuICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICAvLyBUT0RPKHN0ZXZlbmxlKTogZGVjaWRlIHdoZXRoZXIgd2Ugd2FudCB0byBlbmZvcmNlIGBpc1VzZXJBdXRob3JpemVkKClgLlxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLyoqXG4gICAqIFZlcmlmaWVzIHdoZXRoZXIgdGhlIGN1cnJlbnQgdXNlciBzZXNzaW9uIHNob3VsZCBiZSBhbGxvd2VkIHRvIGFjY2VzcyB0aGVcbiAgICogQ01TLiBSZXR1cm5zIHRydWUgaWYgYWNjZXNzIGlzIGdyYW50ZWQuXG4gICAqL1xuICBhc3luYyBmdW5jdGlvbiB2ZXJpZnlVc2VyU2Vzc2lvbihyZXE6IFJlcXVlc3QpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBjb25zdCBzZXNzaW9uQ29va2llID0gU3RyaW5nKHJlcS5zaWduZWRDb29raWVzW1NFU1NJT05fQ09PS0lFXSB8fCAnJyk7XG4gICAgaWYgKCFzZXNzaW9uQ29va2llKSB7XG4gICAgICBjb25zb2xlLmxvZygnc2Vzc2lvbiBmYWlsZWQ6IG5vIHNlc3Npb24gY29va2llJyk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgLy8gT24gbG9jYWwgZGV2LCBzaW1wbHkgdmVyaWZ5IHRoYXQgYW4gc2Vzc2lvbiBjb29raWUgaXMgc2V0LiBTZWUgbm90ZVxuICAgIC8vIGFib3ZlIGluIGB2ZXJpZnlVc2VyTG9naW4oKWAgZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAnZGV2ZWxvcG1lbnQnKSB7XG4gICAgICByZXR1cm4gQm9vbGVhbihzZXNzaW9uQ29va2llKTtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgY29uc3Qgand0ID0gYXdhaXQgYXV0aC52ZXJpZnlTZXNzaW9uQ29va2llKHNlc3Npb25Db29raWUsIHRydWUpO1xuICAgICAgaWYgKGlzRXhwaXJlZChqd3QpKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKCdzZXNzaW9uIGZhaWxlZDogdG9rZW4gaXMgZXhwaXJlZCcpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICBpZiAoIWp3dC5lbWFpbCB8fCAhand0LmVtYWlsX3ZlcmlmaWVkKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKCdzZXNzaW9uIGZhaWxlZDogZW1haWwgbm90IHZlcmlmaWVkJyk7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIGlmIChvcHRpb25zLmlzVXNlckF1dGhvcml6ZWQpIHtcbiAgICAgICAgY29uc3QgYXV0aG9yaXplZCA9IGF3YWl0IG9wdGlvbnMuaXNVc2VyQXV0aG9yaXplZChyZXEsIGp3dCk7XG4gICAgICAgIGlmICghYXV0aG9yaXplZCkge1xuICAgICAgICAgIGNvbnNvbGUubG9nKCdzZXNzaW9uIGZhaWxlZDogbm90IGF1dGhvcml6ZWQnKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYXV0aG9yaXplZDtcbiAgICAgIH1cbiAgICAgIC8vIFRPRE8oc3RldmVubGUpOiBkZWNpZGUgd2hldGhlciB3ZSB3YW50IHRvIGVuZm9yY2UgYGlzVXNlckF1dGhvcml6ZWQoKWAuXG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ2ZhaWxlZCB0byB2ZXJpZnkgand0IHRva2VuJyk7XG4gICAgICBjb25zb2xlLmVycm9yKGVycik7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBuYW1lOiAncm9vdC1jbXMnLFxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgY29uZmlnIG9wdGlvbnMgcGFzc2VkIHRvIHRoZSBwbHVnaW4uXG4gICAgICovXG4gICAgZ2V0Q29uZmlnOiAoKSA9PiB7XG4gICAgICByZXR1cm4gb3B0aW9ucztcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgRmlyZWJhc2UgQXBwIGluc3RhbmNlIHVzZWQgYnkgdGhlIHBsdWdpbi5cbiAgICAgKi9cbiAgICBnZXRGaXJlYmFzZUFwcDogKCkgPT4ge1xuICAgICAgcmV0dXJuIGFwcDtcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogQSBtYXAgb2Ygc3NyIGZpbGVzIHRvIGluY2x1ZGUgd2hlbiBydW5uaW5nIGByb290IGJ1aWxkYC5cbiAgICAgKi9cbiAgICBzc3JJbnB1dDogKCkgPT4gKHtcbiAgICAgIGNtczogcGF0aC5yZXNvbHZlKF9fZGlybmFtZSwgJy4vYXBwLmpzJyksXG4gICAgfSksXG5cbiAgICAvKipcbiAgICAgKiBBdHRhY2hlcyBDTVMtc3BlY2lmaWMgbWlkZGxld2FyZSB0byB0aGUgUm9vdC5qcyBzZXJ2ZXIuXG4gICAgICovXG4gICAgY29uZmlndXJlU2VydmVyOiBhc3luYyAoXG4gICAgICBzZXJ2ZXI6IFNlcnZlcixcbiAgICAgIHNlcnZlck9wdGlvbnM6IENvbmZpZ3VyZVNlcnZlck9wdGlvbnNcbiAgICApID0+IHtcbiAgICAgIHNlcnZlci51c2UoY29va2llUGFyc2VyKGNvb2tpZVNlY3JldCkpO1xuICAgICAgc2VydmVyLnVzZShib2R5UGFyc2VyLmpzb24oKSk7XG5cbiAgICAgIGFzeW5jIGZ1bmN0aW9uIGdldFJlbmRlcmVyKHJlcTogUmVxdWVzdCk6IFByb21pc2U8QXBwTW9kdWxlPiB7XG4gICAgICAgIGlmIChzZXJ2ZXJPcHRpb25zLnR5cGUgPT09ICdkZXYnKSB7XG4gICAgICAgICAgY29uc3QgYXBwRmlsZVBhdGggPSBwYXRoLnJlc29sdmUoX19kaXJuYW1lLCAnLi9hcHAuanMnKTtcbiAgICAgICAgICBjb25zdCBhcHAgPSAoYXdhaXQgcmVxLnZpdGVTZXJ2ZXIhLnNzckxvYWRNb2R1bGUoXG4gICAgICAgICAgICBhcHBGaWxlUGF0aFxuICAgICAgICAgICkpIGFzIEFwcE1vZHVsZTtcbiAgICAgICAgICByZXR1cm4gYXBwO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgYXBwSW1wb3J0UGF0aCA9IHBhdGgucmVzb2x2ZShcbiAgICAgICAgICByZXEucm9vdENvbmZpZyEucm9vdERpcixcbiAgICAgICAgICAnZGlzdC9zZXJ2ZXIvY21zLmpzJ1xuICAgICAgICApO1xuICAgICAgICBpZiAoIShhd2FpdCBmaWxlRXhpc3RzKGFwcEltcG9ydFBhdGgpKSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgICdkaXN0L3NlcnZlci9jbXMuanMgbm90IGZvdW5kLiBydW4gYHJvb3QgYnVpbGRgIHRvIGNyZWF0ZSBpdC4nXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBhcHAgPSAoYXdhaXQgaW1wb3J0KGFwcEltcG9ydFBhdGgpKSBhcyBBcHBNb2R1bGU7XG4gICAgICAgIHJldHVybiBhcHA7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHN0YXRpY0RpciA9IHBhdGgucmVzb2x2ZShfX2Rpcm5hbWUsICd1aScpO1xuICAgICAgc2VydmVyLnVzZSgnL2Ntcy9zdGF0aWMnLCBzaXJ2KHN0YXRpY0Rpciwge2RldjogZmFsc2V9KSk7XG5cbiAgICAgIC8vIExvZ2luIGhhbmRsZXIuXG4gICAgICBzZXJ2ZXIudXNlKCcvY21zL2xvZ2luJywgYXN5bmMgKHJlcTogUmVxdWVzdCwgcmVzOiBSZXNwb25zZSkgPT4ge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgcmVxLm1ldGhvZCA9PT0gJ1BVVCcgJiZcbiAgICAgICAgICByZXEuaGVhZGVyc1snY29udGVudC10eXBlJ10gPT09ICdhcHBsaWNhdGlvbi9qc29uJ1xuICAgICAgICApIHtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgaXNBdXRob3JpemVkID0gYXdhaXQgdmVyaWZ5VXNlckxvZ2luKHJlcSk7XG4gICAgICAgICAgICBpZiAoIWlzQXV0aG9yaXplZCkge1xuICAgICAgICAgICAgICByZXMuc3RhdHVzKDQwMSkuanNvbih7c3VjY2VzczogZmFsc2UsIGVycm9yOiAnTk9UX0FVVEhPUklaRUQnfSk7XG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gU2V0IHNlc3Npb24gZXhwaXJhdGlvbiB0byA1IGRheXMuXG4gICAgICAgICAgICBjb25zdCBleHBpcmVzSW4gPSA2MCAqIDYwICogMjQgKiA1ICogMTAwMDtcbiAgICAgICAgICAgIGNvbnN0IGlkVG9rZW4gPSByZXEuYm9keS5pZFRva2VuITtcblxuICAgICAgICAgICAgbGV0IHNlc3Npb25Db29raWU6IHN0cmluZztcbiAgICAgICAgICAgIGxldCBzZWN1cmVDb29raWUgPSB0cnVlO1xuICAgICAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAnZGV2ZWxvcG1lbnQnKSB7XG4gICAgICAgICAgICAgIHNlc3Npb25Db29raWUgPSBpZFRva2VuO1xuICAgICAgICAgICAgICBzZWN1cmVDb29raWUgPSBmYWxzZTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHNlc3Npb25Db29raWUgPSBhd2FpdCBhdXRoLmNyZWF0ZVNlc3Npb25Db29raWUoaWRUb2tlbiwge1xuICAgICAgICAgICAgICAgIGV4cGlyZXNJbixcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXMuY29va2llKFNFU1NJT05fQ09PS0lFLCBzZXNzaW9uQ29va2llLCB7XG4gICAgICAgICAgICAgIG1heEFnZTogZXhwaXJlc0luLFxuICAgICAgICAgICAgICBodHRwT25seTogdHJ1ZSxcbiAgICAgICAgICAgICAgc2VjdXJlOiBzZWN1cmVDb29raWUsXG4gICAgICAgICAgICAgIHNpZ25lZDogdHJ1ZSxcbiAgICAgICAgICAgICAgc2FtZVNpdGU6ICdzdHJpY3QnLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXMuanNvbih7c3VjY2VzczogdHJ1ZX0pO1xuICAgICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xuICAgICAgICAgICAgaWYgKGVyci5zdGFjaykge1xuICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGVyci5zdGFjayk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXNcbiAgICAgICAgICAgICAgLnN0YXR1cyg1MDApXG4gICAgICAgICAgICAgIC5qc29uKHtzdWNjZXNzOiBmYWxzZSwgZXJyb3I6ICdVTktOT1dOX1NFUlZFUl9FUlJPUid9KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCBhcHAgPSBhd2FpdCBnZXRSZW5kZXJlcihyZXEpO1xuICAgICAgICAgIGFwcC5yZW5kZXJTaWduSW4ocmVxLCByZXMsIG9wdGlvbnMpO1xuICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKGVycik7XG4gICAgICAgICAgaWYgKGVyci5zdGFjaykge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnIuc3RhY2spO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXMuc3RhdHVzKDUwMCkuc2VuZCgnVU5LTk9XTiBTRVJWRVIgRVJST1InKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIC8vIExvZ291dCBoYW5kbGVyLlxuICAgICAgc2VydmVyLnVzZSgnL2Ntcy9sb2dvdXQnLCBhc3luYyAocmVxOiBSZXF1ZXN0LCByZXM6IFJlc3BvbnNlKSA9PiB7XG4gICAgICAgIHJlcy5jbGVhckNvb2tpZShTRVNTSU9OX0NPT0tJRSk7XG4gICAgICAgIHJlcy5yZWRpcmVjdCgnL2Ntcy9sb2dpbicpO1xuICAgICAgfSk7XG5cbiAgICAgIC8vIFNhZmVndWFyZCB0byB2ZXJpZnkgdXNlciBsb2dpbiBiZWZvcmUgcmVuZGVyaW5nIGFueSBDTVMgcGFnZS5cbiAgICAgIHNlcnZlci51c2UoYXN5bmMgKHJlcTogUmVxdWVzdCwgcmVzOiBSZXNwb25zZSwgbmV4dDogTmV4dEZ1bmN0aW9uKSA9PiB7XG4gICAgICAgIGlmICghbG9naW5SZXF1aXJlZChyZXEpKSB7XG4gICAgICAgICAgbmV4dCgpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB1c2VySXNMb2dnZWRJbiA9IGF3YWl0IHZlcmlmeVVzZXJTZXNzaW9uKHJlcSk7XG4gICAgICAgIGlmICh1c2VySXNMb2dnZWRJbikge1xuICAgICAgICAgIG5leHQoKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHJlcS5vcmlnaW5hbFVybC5zdGFydHNXaXRoKCcvY21zL2FwaScpKSB7XG4gICAgICAgICAgcmVzLnN0YXR1cyg0MDEpLmpzb24oe3N1Y2Nlc3M6IGZhbHNlLCBlcnJvcjogJ05PVF9BVVRIT1JJWkVEJ30pO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zb2xlLmxvZygncmVkaXJlY3RpbmcgdG8gbG9naW4gcGFnZScpO1xuICAgICAgICBjb25zdCBwYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKHtcbiAgICAgICAgICBjb250aW51ZTogcmVxLm9yaWdpbmFsVXJsLFxuICAgICAgICB9KTtcbiAgICAgICAgcmVzLnJlZGlyZWN0KGAvY21zL2xvZ2luPyR7cGFyYW1zLnRvU3RyaW5nKCl9YCk7XG4gICAgICB9KTtcblxuICAgICAgLy8gUmVnaXN0ZXIgQVBJIGhhbmRsZXJzLlxuICAgICAgYXBpKHNlcnZlcik7XG5cbiAgICAgIC8vIFJlbmRlciB0aGUgQ01TIFNQQS5cbiAgICAgIHNlcnZlci51c2UoJy9jbXMnLCBhc3luYyAocmVxOiBSZXF1ZXN0LCByZXM6IFJlc3BvbnNlKSA9PiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY29uc3QgYXBwID0gYXdhaXQgZ2V0UmVuZGVyZXIocmVxKTtcbiAgICAgICAgICBhd2FpdCBhcHAucmVuZGVyQXBwKHJlcSwgcmVzLCB7XG4gICAgICAgICAgICByb290Q29uZmlnOiByZXEucm9vdENvbmZpZyxcbiAgICAgICAgICAgIGNtc0NvbmZpZzogb3B0aW9ucyxcbiAgICAgICAgICAgIGZpcmViYXNlQ29uZmlnOiBvcHRpb25zLmZpcmViYXNlQ29uZmlnLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAvLyBUT0RPKHN0ZXZlbmxlKTogcmVuZGVyIGEgY3VzdG9tIGVycm9yIHBhZ2UuXG4gICAgICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xuICAgICAgICAgIHJlcy5zdGF0dXMoNTAwKS5zZW5kKCdVTktOT1dOIFNFUlZFUiBFUlJPUicpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9LFxuICB9O1xufVxuXG5mdW5jdGlvbiBmaWxlRXhpc3RzKGZpbGVwYXRoOiBzdHJpbmcpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgcmV0dXJuIGZzXG4gICAgLmFjY2VzcyhmaWxlcGF0aClcbiAgICAudGhlbigoKSA9PiB0cnVlKVxuICAgIC5jYXRjaCgoKSA9PiBmYWxzZSk7XG59XG4iLCAiaW1wb3J0IHtTZXJ2ZXJ9IGZyb20gJ0BibGlua2svcm9vdCc7XG5pbXBvcnQgbXVsdGVyIGZyb20gJ211bHRlcic7XG5pbXBvcnQge2FycmF5VG9Dc3YsIGNzdlRvQXJyYXl9IGZyb20gJy4vY3N2LmpzJztcblxuLyoqXG4gKiBSZWdpc3RlcnMgQVBJIG1pZGRsZXdhcmUgaGFuZGxlcnMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhcGkoc2VydmVyOiBTZXJ2ZXIpIHtcbiAgY29uc3QgdXBsb2FkID0gbXVsdGVyKHtcbiAgICBzdG9yYWdlOiBtdWx0ZXIubWVtb3J5U3RvcmFnZSgpLFxuICAgIGxpbWl0czoge1xuICAgICAgZmlsZVNpemU6IDEwICogMTAyNCAqIDEwMjQsIC8vIDEwIE1CLlxuICAgIH0sXG4gIH0pO1xuXG4gIC8qKlxuICAgKiBBY2NlcHRzIGEgSlNPTiBvYmplY3QgY29udGFpbmluZyB7aGVhZGVyczogWy4uLl0sIHJvd3M6IFsuLi5dfSBhbmQgc2VuZHNcbiAgICogYW4gSFRUUCByZXNwb25zZSB3aXRoIGEgY29ycmVzcG9uZGluZyBDU1YgZmlsZSBhcyBhbiBhdHRhY2htZW50LlxuICAgKlxuICAgKiBTYW1wbGUgcmVxdWVzdDpcbiAgICpcbiAgICogYGBganNvblxuICAgKiB7XG4gICAqICAgXCJoZWFkZXJzXCI6IFtcImZvb1wiXSxcbiAgICogICBcInJvd3NcIjogW1xuICAgKiAgICAge1wiZm9vXCI6IFwiYmFyXCJ9LFxuICAgKiAgICAge1wiZm9vXCI6IFwiYmF6XCJ9LFxuICAgKiAgIF1cbiAgICogfVxuICAgKiBgYGBcbiAgICovXG4gIHNlcnZlci51c2UoJy9jbXMvYXBpL2Nzdi5kb3dubG9hZCcsIChyZXEsIHJlcykgPT4ge1xuICAgIGlmIChcbiAgICAgIHJlcS5tZXRob2QgIT09ICdQT1NUJyB8fFxuICAgICAgIVN0cmluZyhyZXEuZ2V0KCdjb250ZW50LXR5cGUnKSkuc3RhcnRzV2l0aCgnYXBwbGljYXRpb24vanNvbicpXG4gICAgKSB7XG4gICAgICByZXMuc3RhdHVzKDQwMCkuanNvbih7c3VjY2VzczogZmFsc2UsIGVycm9yOiAnQkFEX1JFUVVFU1QnfSk7XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGJvZHkgPSByZXEuYm9keSB8fCB7fTtcbiAgICAgIGNvbnN0IGhlYWRlcnMgPSBib2R5LmhlYWRlcnMgfHwgW107XG4gICAgICBjb25zdCByb3dzID0gYm9keS5yb3dzIHx8IFtdO1xuICAgICAgY29uc3QgY3N2ID0gYXJyYXlUb0Nzdih7aGVhZGVycywgcm93c30pO1xuICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ3RleHQvY3N2Jyk7XG4gICAgICByZXMuc2V0SGVhZGVyKCdDb250ZW50LURpc3Bvc2l0aW9uJywgJ2F0dGFjaG1lbnQ7IGZpbGVuYW1lPVwiZGF0YS5jc3ZcIicpO1xuICAgICAgcmVzLnN0YXR1cygyMDApLmVuZChjc3YpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgY29uc29sZS5lcnJvcihlcnIuc3RhY2sgfHwgZXJyKTtcbiAgICAgIHJlcy5zdGF0dXMoNTAwKS5qc29uKHtzdWNjZXNzOiBmYWxzZSwgZXJyb3I6ICdVTktOT1dOJ30pO1xuICAgIH1cbiAgfSk7XG5cbiAgLyoqXG4gICAqIEltcG9ydHMgYSBDU1YgZmlsZSBhbmQgcmV0dXJucyBhIEpTT04gYXJyYXkgb2Ygb2JqZWN0cyByZXByZXNlbnRpbmcgdGhlXG4gICAqIENTVi5cbiAgICpcbiAgICogU2FtcGxlIHJlc3BvbnNlOlxuICAgKlxuICAgKiBgYGBqc29uXG4gICAqIHtcbiAgICogICBcInN1Y2Nlc3NcIjogdHJ1ZSxcbiAgICogICBcImRhdGFcIjogW1xuICAgKiAgICAge1wiZm9vXCI6IFwiYmFyXCJ9LFxuICAgKiAgICAge1wiZm9vXCI6IFwiYmF6XCJ9LFxuICAgKiAgIF1cbiAgICogfVxuICAgKiBgYGBcbiAgICovXG4gIHNlcnZlci51c2UoJy9jbXMvYXBpL2Nzdi5pbXBvcnQnLCB1cGxvYWQuc2luZ2xlKCdmaWxlJyksIChyZXEsIHJlcykgPT4ge1xuICAgIGlmIChyZXEubWV0aG9kICE9PSAnUE9TVCcgfHwgIXJlcS5maWxlKSB7XG4gICAgICByZXMuc3RhdHVzKDQwMCkuanNvbih7c3VjY2VzczogZmFsc2UsIGVycm9yOiAnQkFEX1JFUVVFU1QnfSk7XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGZpbGUgPSByZXEuZmlsZSE7XG4gICAgICBjb25zdCBjc3ZTdHJpbmcgPSBmaWxlLmJ1ZmZlci50b1N0cmluZygndXRmOCcpO1xuICAgICAgY29uc3Qgcm93cyA9IGNzdlRvQXJyYXkoY3N2U3RyaW5nKTtcbiAgICAgIHJlcy5zdGF0dXMoMjAwKS5qc29uKHtzdWNjZXNzOiB0cnVlLCBkYXRhOiByb3dzfSk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBjb25zb2xlLmVycm9yKGVyci5zdGFjayB8fCBlcnIpO1xuICAgICAgcmVzLnN0YXR1cyg1MDApLmpzb24oe3N1Y2Nlc3M6IGZhbHNlLCBlcnJvcjogJ1VOS05PV04nfSk7XG4gICAgfVxuICB9KTtcbn1cbiIsICJpbXBvcnQge3BhcnNlIGFzIGNzdlBhcnNlfSBmcm9tICdjc3YtcGFyc2Uvc3luYyc7XG5pbXBvcnQge3N0cmluZ2lmeSBhcyBjc3ZTdHJpbmdpZnl9IGZyb20gJ2Nzdi1zdHJpbmdpZnkvc3luYyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBhcnJheVRvQ3N2KHJlcToge1xuICBoZWFkZXJzOiBzdHJpbmdbXTtcbiAgcm93czogQXJyYXk8UmVjb3JkPHN0cmluZywgYW55Pj47XG59KTogc3RyaW5nIHtcbiAgY29uc3QgaGVhZGVycyA9IHJlcS5oZWFkZXJzIHx8IFtdO1xuICBjb25zdCByb3dzID0gcmVxLnJvd3MgfHwgW107XG4gIHJldHVybiBjc3ZTdHJpbmdpZnkocm93cywge1xuICAgIGhlYWRlcjogdHJ1ZSxcbiAgICBjb2x1bW5zOiBoZWFkZXJzLFxuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNzdlRvQXJyYXkoY3N2U3RyaW5nOiBzdHJpbmcpIHtcbiAgY29uc3Qgcm93cyA9IGNzdlBhcnNlKGNzdlN0cmluZywge1xuICAgIGNvbHVtbnM6IHRydWUsXG4gICAgc2tpcF9lbXB0eV9saW5lczogdHJ1ZSxcbiAgfSk7XG4gIHJldHVybiByb3dzO1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIjtBQUFBLFNBQVEsWUFBWSxVQUFTO0FBQzdCLE9BQU8sVUFBVTtBQUNqQixTQUFRLHFCQUFvQjtBQVU1QixPQUFPLGdCQUFnQjtBQUN2QixPQUFPLGtCQUFrQjtBQUN6QjtBQUFBLEVBRUU7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFDUCxTQUFRLGVBQThCO0FBQ3RDLE9BQU8sVUFBVTs7O0FDcEJqQixPQUFPLFlBQVk7OztBQ0RuQixTQUFRLFNBQVMsZ0JBQWU7QUFDaEMsU0FBUSxhQUFhLG9CQUFtQjtBQUVqQyxTQUFTLFdBQVcsS0FHaEI7QUFDVCxRQUFNLFVBQVUsSUFBSSxXQUFXLENBQUM7QUFDaEMsUUFBTSxPQUFPLElBQUksUUFBUSxDQUFDO0FBQzFCLFNBQU8sYUFBYSxNQUFNO0FBQUEsSUFDeEIsUUFBUTtBQUFBLElBQ1IsU0FBUztBQUFBLEVBQ1gsQ0FBQztBQUNIO0FBRU8sU0FBUyxXQUFXLFdBQW1CO0FBQzVDLFFBQU0sT0FBTyxTQUFTLFdBQVc7QUFBQSxJQUMvQixTQUFTO0FBQUEsSUFDVCxrQkFBa0I7QUFBQSxFQUNwQixDQUFDO0FBQ0QsU0FBTztBQUNUOzs7QURkTyxTQUFTLElBQUksUUFBZ0I7QUFDbEMsUUFBTSxTQUFTLE9BQU87QUFBQSxJQUNwQixTQUFTLE9BQU8sY0FBYztBQUFBLElBQzlCLFFBQVE7QUFBQSxNQUNOLFVBQVUsS0FBSyxPQUFPO0FBQUEsSUFDeEI7QUFBQSxFQUNGLENBQUM7QUFrQkQsU0FBTyxJQUFJLHlCQUF5QixDQUFDLEtB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
|
package/dist/ui/ui.css
CHANGED
|
@@ -80,6 +80,14 @@
|
|
|
80
80
|
gap: 12px;
|
|
81
81
|
}
|
|
82
82
|
|
|
83
|
+
/* ui/components/EditJsonModal/EditJsonModal.css */
|
|
84
|
+
.EditJsonModal__buttons {
|
|
85
|
+
margin-top: 24px;
|
|
86
|
+
display: flex;
|
|
87
|
+
justify-content: flex-end;
|
|
88
|
+
gap: 12px;
|
|
89
|
+
}
|
|
90
|
+
|
|
83
91
|
/* ui/components/Heading/Heading.css */
|
|
84
92
|
.heading {
|
|
85
93
|
font-size: 18px;
|
|
@@ -517,6 +525,11 @@
|
|
|
517
525
|
font-size: 14px;
|
|
518
526
|
font-weight: 500;
|
|
519
527
|
}
|
|
528
|
+
.CollectionPage__collection {
|
|
529
|
+
height: 100%;
|
|
530
|
+
max-height: calc(100% - 48px);
|
|
531
|
+
overflow: auto;
|
|
532
|
+
}
|
|
520
533
|
.CollectionPage__collection__header {
|
|
521
534
|
padding: 12px;
|
|
522
535
|
display: none;
|
|
@@ -912,14 +925,6 @@
|
|
|
912
925
|
margin-right: 10px;
|
|
913
926
|
}
|
|
914
927
|
|
|
915
|
-
/* ui/components/EditJsonModal/EditJsonModal.css */
|
|
916
|
-
.EditJsonModal__buttons {
|
|
917
|
-
margin-top: 24px;
|
|
918
|
-
display: flex;
|
|
919
|
-
justify-content: flex-end;
|
|
920
|
-
gap: 12px;
|
|
921
|
-
}
|
|
922
|
-
|
|
923
928
|
/* ui/pages/DocumentPage/DocumentPage.css */
|
|
924
929
|
.DocumentPage {
|
|
925
930
|
--top-bar-height: 36px;
|
package/dist/ui/ui.js
CHANGED
|
@@ -38999,6 +38999,103 @@ ${this.customData.serverResponse}`;
|
|
|
38999
38999
|
["path", { d: "M12.5 3a17 17 0 0 1 0 18", key: "svg-4" }]
|
|
39000
39000
|
]);
|
|
39001
39001
|
|
|
39002
|
+
// ui/components/EditJsonModal/EditJsonModal.tsx
|
|
39003
|
+
var MODAL_ID2 = "EditJsonModal";
|
|
39004
|
+
function useEditJsonModal() {
|
|
39005
|
+
const modals = useModals();
|
|
39006
|
+
const modalTheme = useModalTheme();
|
|
39007
|
+
return {
|
|
39008
|
+
open: (props) => {
|
|
39009
|
+
modals.openContextModal(MODAL_ID2, {
|
|
39010
|
+
...modalTheme,
|
|
39011
|
+
innerProps: props,
|
|
39012
|
+
size: "680px"
|
|
39013
|
+
});
|
|
39014
|
+
},
|
|
39015
|
+
close: () => {
|
|
39016
|
+
modals.closeModal(MODAL_ID2);
|
|
39017
|
+
}
|
|
39018
|
+
};
|
|
39019
|
+
}
|
|
39020
|
+
function EditJsonModal(modalProps) {
|
|
39021
|
+
const { innerProps: props, context, id: id2 } = modalProps;
|
|
39022
|
+
const [value, setValue] = y2(JSON.stringify(props.data || {}, null, 2));
|
|
39023
|
+
const [valid, setValid] = y2(true);
|
|
39024
|
+
const [copied, setCopied] = y2(false);
|
|
39025
|
+
function onChange(s4) {
|
|
39026
|
+
setValue(s4);
|
|
39027
|
+
setCopied(false);
|
|
39028
|
+
try {
|
|
39029
|
+
JSON.parse(s4);
|
|
39030
|
+
setValid(true);
|
|
39031
|
+
} catch (e3) {
|
|
39032
|
+
setValid(false);
|
|
39033
|
+
}
|
|
39034
|
+
}
|
|
39035
|
+
function copyToClipboard() {
|
|
39036
|
+
navigator.clipboard.writeText(value).then(() => setCopied(true));
|
|
39037
|
+
}
|
|
39038
|
+
function onSave() {
|
|
39039
|
+
const data = JSON.parse(value);
|
|
39040
|
+
if (props.onSave) {
|
|
39041
|
+
props.onSave(data);
|
|
39042
|
+
}
|
|
39043
|
+
}
|
|
39044
|
+
return /* @__PURE__ */ o4("div", { className: "EditJsonModal", children: [
|
|
39045
|
+
/* @__PURE__ */ o4("h3", { children: "EditJsonModal" }),
|
|
39046
|
+
/* @__PURE__ */ o4(
|
|
39047
|
+
JsonInput,
|
|
39048
|
+
{
|
|
39049
|
+
value,
|
|
39050
|
+
onChange,
|
|
39051
|
+
formatOnBlur: true,
|
|
39052
|
+
autosize: true,
|
|
39053
|
+
minRows: 4,
|
|
39054
|
+
maxRows: 25
|
|
39055
|
+
}
|
|
39056
|
+
),
|
|
39057
|
+
/* @__PURE__ */ o4("div", { className: "EditJsonModal__buttons", children: [
|
|
39058
|
+
/* @__PURE__ */ o4(
|
|
39059
|
+
Button,
|
|
39060
|
+
{
|
|
39061
|
+
variant: "default",
|
|
39062
|
+
size: "xs",
|
|
39063
|
+
color: "dark",
|
|
39064
|
+
type: "button",
|
|
39065
|
+
onClick: () => context.closeModal(id2),
|
|
39066
|
+
children: "Cancel"
|
|
39067
|
+
}
|
|
39068
|
+
),
|
|
39069
|
+
/* @__PURE__ */ o4(
|
|
39070
|
+
Button,
|
|
39071
|
+
{
|
|
39072
|
+
leftIcon: /* @__PURE__ */ o4(IconClipboard, { size: 16 }),
|
|
39073
|
+
variant: "filled",
|
|
39074
|
+
size: "xs",
|
|
39075
|
+
color: "dark",
|
|
39076
|
+
disabled: !valid,
|
|
39077
|
+
type: "button",
|
|
39078
|
+
onClick: copyToClipboard,
|
|
39079
|
+
children: copied ? "Copied!" : "Copy"
|
|
39080
|
+
}
|
|
39081
|
+
),
|
|
39082
|
+
/* @__PURE__ */ o4(
|
|
39083
|
+
Button,
|
|
39084
|
+
{
|
|
39085
|
+
leftIcon: /* @__PURE__ */ o4(IconDeviceFloppy, { size: 16 }),
|
|
39086
|
+
variant: "filled",
|
|
39087
|
+
size: "xs",
|
|
39088
|
+
color: "blue",
|
|
39089
|
+
disabled: !valid,
|
|
39090
|
+
onClick: onSave,
|
|
39091
|
+
children: "Save"
|
|
39092
|
+
}
|
|
39093
|
+
)
|
|
39094
|
+
] })
|
|
39095
|
+
] });
|
|
39096
|
+
}
|
|
39097
|
+
EditJsonModal.id = MODAL_ID2;
|
|
39098
|
+
|
|
39002
39099
|
// ui/components/Heading/Heading.tsx
|
|
39003
39100
|
function Heading(props) {
|
|
39004
39101
|
const {
|
|
@@ -39028,13 +39125,13 @@ ${this.customData.serverResponse}`;
|
|
|
39028
39125
|
}
|
|
39029
39126
|
|
|
39030
39127
|
// ui/components/LocalizationModal/LocalizationModal.tsx
|
|
39031
|
-
var
|
|
39128
|
+
var MODAL_ID3 = "LocalizationModal";
|
|
39032
39129
|
function useLocalizationModal(props) {
|
|
39033
39130
|
const modals = useModals();
|
|
39034
39131
|
const modalTheme = useModalTheme();
|
|
39035
39132
|
return {
|
|
39036
39133
|
open: () => {
|
|
39037
|
-
modals.openContextModal(
|
|
39134
|
+
modals.openContextModal(MODAL_ID3, {
|
|
39038
39135
|
...modalTheme,
|
|
39039
39136
|
innerProps: props,
|
|
39040
39137
|
size: "clamp(80%, 1024px, 1280px)",
|
|
@@ -39052,7 +39149,7 @@ ${this.customData.serverResponse}`;
|
|
|
39052
39149
|
/* @__PURE__ */ o4(LocalizationModal.Translations, { ...props })
|
|
39053
39150
|
] }) });
|
|
39054
39151
|
}
|
|
39055
|
-
LocalizationModal.id =
|
|
39152
|
+
LocalizationModal.id = MODAL_ID3;
|
|
39056
39153
|
LocalizationModal.ConfigLocales = (props) => {
|
|
39057
39154
|
const [enabledLocales, setEnabledLocales] = y2(() => {
|
|
39058
39155
|
if (props.draft) {
|
|
@@ -39285,10 +39382,15 @@ ${this.customData.serverResponse}`;
|
|
|
39285
39382
|
const res = await fetch("/cms/api/csv.import", {
|
|
39286
39383
|
method: "POST",
|
|
39287
39384
|
body: formData
|
|
39288
|
-
})
|
|
39385
|
+
});
|
|
39386
|
+
if (res.status !== 200) {
|
|
39387
|
+
const errorText = await res.text();
|
|
39388
|
+
throw new Error(`RPCError: ${errorText}`);
|
|
39389
|
+
}
|
|
39390
|
+
const resData = (await res.json()).data;
|
|
39289
39391
|
const importedTranslations = await cmsDocImportCsv(
|
|
39290
39392
|
props.docId,
|
|
39291
|
-
|
|
39393
|
+
resData
|
|
39292
39394
|
);
|
|
39293
39395
|
setTranslationsMap((currentTranslations) => {
|
|
39294
39396
|
return Object.assign({}, currentTranslations, importedTranslations);
|
|
@@ -39302,7 +39404,7 @@ ${this.customData.serverResponse}`;
|
|
|
39302
39404
|
console.error(err);
|
|
39303
39405
|
showNotification({
|
|
39304
39406
|
title: "Failed to import CSV",
|
|
39305
|
-
message:
|
|
39407
|
+
message: String(err),
|
|
39306
39408
|
color: "red",
|
|
39307
39409
|
autoClose: false
|
|
39308
39410
|
});
|
|
@@ -39532,13 +39634,13 @@ ${this.customData.serverResponse}`;
|
|
|
39532
39634
|
}
|
|
39533
39635
|
|
|
39534
39636
|
// ui/components/PublishDocModal/PublishDocModal.tsx
|
|
39535
|
-
var
|
|
39637
|
+
var MODAL_ID4 = "PublishDocModal";
|
|
39536
39638
|
function usePublishDocModal(props) {
|
|
39537
39639
|
const modals = useModals();
|
|
39538
39640
|
const modalTheme = useModalTheme();
|
|
39539
39641
|
return {
|
|
39540
39642
|
open: () => {
|
|
39541
|
-
modals.openContextModal(
|
|
39643
|
+
modals.openContextModal(MODAL_ID4, {
|
|
39542
39644
|
...modalTheme,
|
|
39543
39645
|
title: `Publish ${props.docId}`,
|
|
39544
39646
|
innerProps: props,
|
|
@@ -39732,7 +39834,7 @@ ${this.customData.serverResponse}`;
|
|
|
39732
39834
|
] })
|
|
39733
39835
|
] }) }) });
|
|
39734
39836
|
}
|
|
39735
|
-
PublishDocModal.id =
|
|
39837
|
+
PublishDocModal.id = MODAL_ID4;
|
|
39736
39838
|
|
|
39737
39839
|
// ui/hooks/useFirebase.ts
|
|
39738
39840
|
var FirebaseContext = B(
|
|
@@ -39751,7 +39853,7 @@ ${this.customData.serverResponse}`;
|
|
|
39751
39853
|
// package.json
|
|
39752
39854
|
var package_default = {
|
|
39753
39855
|
name: "@blinkk/root-cms",
|
|
39754
|
-
version: "1.0.0-beta.
|
|
39856
|
+
version: "1.0.0-beta.50",
|
|
39755
39857
|
author: "s@blinkk.com",
|
|
39756
39858
|
license: "MIT",
|
|
39757
39859
|
engines: {
|
|
@@ -39856,7 +39958,7 @@ ${this.customData.serverResponse}`;
|
|
|
39856
39958
|
vitest: "^0.18.1"
|
|
39857
39959
|
},
|
|
39858
39960
|
peerDependencies: {
|
|
39859
|
-
"@blinkk/root": "1.0.0-beta.
|
|
39961
|
+
"@blinkk/root": "1.0.0-beta.50",
|
|
39860
39962
|
"firebase-admin": ">=11",
|
|
39861
39963
|
"firebase-functions": ">=4",
|
|
39862
39964
|
preact: "10.x",
|
|
@@ -43526,103 +43628,6 @@ ${content}</tr>
|
|
|
43526
43628
|
return Array.from(template.matchAll(/\{(.+?)\}/g)).map((match3) => match3[1]);
|
|
43527
43629
|
}
|
|
43528
43630
|
|
|
43529
|
-
// ui/components/EditJsonModal/EditJsonModal.tsx
|
|
43530
|
-
var MODAL_ID4 = "EditJsonModal";
|
|
43531
|
-
function useEditJsonModal() {
|
|
43532
|
-
const modals = useModals();
|
|
43533
|
-
const modalTheme = useModalTheme();
|
|
43534
|
-
return {
|
|
43535
|
-
open: (props) => {
|
|
43536
|
-
modals.openContextModal(MODAL_ID4, {
|
|
43537
|
-
...modalTheme,
|
|
43538
|
-
innerProps: props,
|
|
43539
|
-
size: "680px"
|
|
43540
|
-
});
|
|
43541
|
-
},
|
|
43542
|
-
close: () => {
|
|
43543
|
-
modals.closeModal(MODAL_ID4);
|
|
43544
|
-
}
|
|
43545
|
-
};
|
|
43546
|
-
}
|
|
43547
|
-
function EditJsonModal(modalProps) {
|
|
43548
|
-
const { innerProps: props, context, id: id2 } = modalProps;
|
|
43549
|
-
const [value, setValue] = y2(JSON.stringify(props.data || {}, null, 2));
|
|
43550
|
-
const [valid, setValid] = y2(true);
|
|
43551
|
-
const [copied, setCopied] = y2(false);
|
|
43552
|
-
function onChange(s4) {
|
|
43553
|
-
setValue(s4);
|
|
43554
|
-
setCopied(false);
|
|
43555
|
-
try {
|
|
43556
|
-
JSON.parse(s4);
|
|
43557
|
-
setValid(true);
|
|
43558
|
-
} catch (e3) {
|
|
43559
|
-
setValid(false);
|
|
43560
|
-
}
|
|
43561
|
-
}
|
|
43562
|
-
function copyToClipboard() {
|
|
43563
|
-
navigator.clipboard.writeText(value).then(() => setCopied(true));
|
|
43564
|
-
}
|
|
43565
|
-
function onSave() {
|
|
43566
|
-
const data = JSON.parse(value);
|
|
43567
|
-
if (props.onSave) {
|
|
43568
|
-
props.onSave(data);
|
|
43569
|
-
}
|
|
43570
|
-
}
|
|
43571
|
-
return /* @__PURE__ */ o4("div", { className: "EditJsonModal", children: [
|
|
43572
|
-
/* @__PURE__ */ o4("h3", { children: "EditJsonModal" }),
|
|
43573
|
-
/* @__PURE__ */ o4(
|
|
43574
|
-
JsonInput,
|
|
43575
|
-
{
|
|
43576
|
-
value,
|
|
43577
|
-
onChange,
|
|
43578
|
-
formatOnBlur: true,
|
|
43579
|
-
autosize: true,
|
|
43580
|
-
minRows: 4,
|
|
43581
|
-
maxRows: 25
|
|
43582
|
-
}
|
|
43583
|
-
),
|
|
43584
|
-
/* @__PURE__ */ o4("div", { className: "EditJsonModal__buttons", children: [
|
|
43585
|
-
/* @__PURE__ */ o4(
|
|
43586
|
-
Button,
|
|
43587
|
-
{
|
|
43588
|
-
variant: "default",
|
|
43589
|
-
size: "xs",
|
|
43590
|
-
color: "dark",
|
|
43591
|
-
type: "button",
|
|
43592
|
-
onClick: () => context.closeModal(id2),
|
|
43593
|
-
children: "Cancel"
|
|
43594
|
-
}
|
|
43595
|
-
),
|
|
43596
|
-
/* @__PURE__ */ o4(
|
|
43597
|
-
Button,
|
|
43598
|
-
{
|
|
43599
|
-
leftIcon: /* @__PURE__ */ o4(IconClipboard, { size: 16 }),
|
|
43600
|
-
variant: "filled",
|
|
43601
|
-
size: "xs",
|
|
43602
|
-
color: "dark",
|
|
43603
|
-
disabled: !valid,
|
|
43604
|
-
type: "button",
|
|
43605
|
-
onClick: copyToClipboard,
|
|
43606
|
-
children: copied ? "Copied!" : "Copy"
|
|
43607
|
-
}
|
|
43608
|
-
),
|
|
43609
|
-
/* @__PURE__ */ o4(
|
|
43610
|
-
Button,
|
|
43611
|
-
{
|
|
43612
|
-
leftIcon: /* @__PURE__ */ o4(IconDeviceFloppy, { size: 16 }),
|
|
43613
|
-
variant: "filled",
|
|
43614
|
-
size: "xs",
|
|
43615
|
-
color: "blue",
|
|
43616
|
-
disabled: !valid,
|
|
43617
|
-
onClick: onSave,
|
|
43618
|
-
children: "Save"
|
|
43619
|
-
}
|
|
43620
|
-
)
|
|
43621
|
-
] })
|
|
43622
|
-
] });
|
|
43623
|
-
}
|
|
43624
|
-
EditJsonModal.id = MODAL_ID4;
|
|
43625
|
-
|
|
43626
43631
|
// ui/components/DocEditor/DocEditor.tsx
|
|
43627
43632
|
function DocEditor(props) {
|
|
43628
43633
|
const fields = props.collection.fields || [];
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@blinkk/root-cms",
|
|
3
|
-
"version": "1.0.0-beta.
|
|
3
|
+
"version": "1.0.0-beta.50",
|
|
4
4
|
"author": "s@blinkk.com",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"engines": {
|
|
@@ -57,7 +57,7 @@
|
|
|
57
57
|
"//": "NOTE(stevenle): due to compat issues with mantine and preact, mantine is pinned to v4.2.12",
|
|
58
58
|
"devDependencies": {
|
|
59
59
|
"@babel/core": "^7.17.9",
|
|
60
|
-
"@blinkk/root": "1.0.0-beta.
|
|
60
|
+
"@blinkk/root": "1.0.0-beta.50",
|
|
61
61
|
"@emotion/react": "^11.10.5",
|
|
62
62
|
"@firebase/app-compat": "^0.1.33",
|
|
63
63
|
"@firebase/app-types": "^0.7.0",
|
|
@@ -92,7 +92,7 @@
|
|
|
92
92
|
"vitest": "^0.18.1"
|
|
93
93
|
},
|
|
94
94
|
"peerDependencies": {
|
|
95
|
-
"@blinkk/root": "1.0.0-beta.
|
|
95
|
+
"@blinkk/root": "1.0.0-beta.50",
|
|
96
96
|
"firebase-admin": ">=11",
|
|
97
97
|
"firebase-functions": ">=4",
|
|
98
98
|
"preact": "10.x",
|