@@ -1,3 +1,45 @@ | |||||
/* | |||||
* | |||||
* Скачиваемый файл / Downloaded file | |||||
* | |||||
*/ | |||||
муром.файл = {}; | |||||
муром.файл.начало = | |||||
` | |||||
<!DOCTYPE html> | |||||
<html> | |||||
<meta charset="utf-8"> | |||||
<meta name="viewport" content="width=device-width, initial-scale=1"> | |||||
<body> | |||||
<script> | |||||
var муром = {}; | |||||
var murom = муром; | |||||
муром.модули = [ | |||||
`; | |||||
муром.файл.конец = | |||||
` | |||||
]; | |||||
Object.defineProperty(murom, "modules", { | |||||
get: function() | |||||
{ | |||||
return муром.модули; | |||||
}, | |||||
set: function(значения) | |||||
{ | |||||
муром.модули = значения; | |||||
} | |||||
}); | |||||
var загрузочныйМодуль = муром.модули[0]; | |||||
var код = atob(загрузочныйМодуль[1]); | |||||
eval(код); | |||||
</script> | |||||
</body> | |||||
</html> | |||||
`; | |||||
/* | /* | ||||
* | * | ||||
* UUID | * UUID | ||||
@@ -97,3 +139,28 @@ murom.start = function() | |||||
{ | { | ||||
муром.пуск.уведомить(); | муром.пуск.уведомить(); | ||||
}; | }; | ||||
/* | |||||
* | |||||
* Левая и правая области / Left and right regions | |||||
* | |||||
*/ | |||||
муром.создатьЛевуюПравуюОбласти = function() | |||||
{ | |||||
// Левая область. | |||||
var ло = document.createElement("div"); | |||||
ло.id="левая-область"; | |||||
ло.style.cssText = | |||||
"position: fixed; left: 0; top: 0; bottom: 0; width: 50%;"; | |||||
document.body.appendChild(ло); | |||||
// Правая область. | |||||
var по = document.createElement("div"); | |||||
по.id="правая-область"; | |||||
по.style.cssText = | |||||
"position: fixed; right: 0; top: 0; bottom: 0; width: 50%;"; | |||||
document.body.appendChild(по); | |||||
return [ло, по]; | |||||
}; |
@@ -1,18 +0,0 @@ | |||||
муром.создатьЛевуюПравуюОбласти = function() | |||||
{ | |||||
// Левая область. | |||||
var ло = document.createElement("div"); | |||||
ло.id="левая-область"; | |||||
ло.style.cssText = | |||||
"position: fixed; left: 0; top: 0; bottom: 0; width: 50%;"; | |||||
document.body.appendChild(ло); | |||||
// Правая область. | |||||
var по = document.createElement("div"); | |||||
по.id="правая-область"; | |||||
по.style.cssText = | |||||
"position: fixed; right: 0; top: 0; bottom: 0; width: 50%;"; | |||||
document.body.appendChild(по); | |||||
return [ло, по]; | |||||
}; |
@@ -1,36 +0,0 @@ | |||||
муром.файл = {}; | |||||
муром.файл.начало = | |||||
` | |||||
<!DOCTYPE html> | |||||
<html> | |||||
<meta charset="utf-8"> | |||||
<meta name="viewport" content="width=device-width, initial-scale=1"> | |||||
<body> | |||||
<script> | |||||
var муром = {}; | |||||
var murom = муром; | |||||
муром.модули = [ | |||||
`; | |||||
муром.файл.конец = | |||||
` | |||||
]; | |||||
Object.defineProperty(murom, "modules", { | |||||
get: function() | |||||
{ | |||||
return муром.модули; | |||||
}, | |||||
set: function(значения) | |||||
{ | |||||
муром.модули = значения; | |||||
} | |||||
}); | |||||
var загрузочныйМодуль = муром.модули[0]; | |||||
var код = atob(загрузочныйМодуль[1]); | |||||
eval(код); | |||||
</script> | |||||
</body> | |||||
</html> | |||||
`; | |||||
@@ -17,23 +17,9 @@ var murom = муром; | |||||
], | ], | ||||
[ | |||||
"муром.файл_1.0.0", | |||||
"0LzRg9GA0L7QvC7RhNCw0LnQuyA9IHt9OwrQvNGD0YDQvtC8LtGE0LDQudC7LtC90LDRh9Cw0LvQviA9CmAKPCFET0NUWVBFIGh0bWw+CjxodG1sPgogICAgPG1ldGEgY2hhcnNldD0idXRmLTgiPgogICAgPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCwgaW5pdGlhbC1zY2FsZT0xIj4KICAgIDxib2R5PgogICAgICAgIDxzY3JpcHQ+CnZhciDQvNGD0YDQvtC8ID0ge307CnZhciBtdXJvbSA9INC80YPRgNC+0Lw7CtC80YPRgNC+0Lwu0LzQvtC00YPQu9C4ID0gWwpgOwrQvNGD0YDQvtC8LtGE0LDQudC7LtC60L7QvdC10YYgPQpgCl07CgpPYmplY3QuZGVmaW5lUHJvcGVydHkobXVyb20sICJtb2R1bGVzIiwgewogICAgZ2V0OiBmdW5jdGlvbigpCiAgICB7CiAgICAgICAgcmV0dXJuINC80YPRgNC+0Lwu0LzQvtC00YPQu9C4OwogICAgfSwKICAgIHNldDogZnVuY3Rpb24o0LfQvdCw0YfQtdC90LjRjykKICAgIHsKICAgICAgICDQvNGD0YDQvtC8LtC80L7QtNGD0LvQuCA9INC30L3QsNGH0LXQvdC40Y87CiAgICB9Cn0pOwoKdmFyINC30LDQs9GA0YPQt9C+0YfQvdGL0LnQnNC+0LTRg9C70YwgPSDQvNGD0YDQvtC8LtC80L7QtNGD0LvQuFswXTsKdmFyINC60L7QtCA9IGF0b2Io0LfQsNCz0YDRg9C30L7Rh9C90YvQudCc0L7QtNGD0LvRjFsxXSk7CmV2YWwo0LrQvtC0KTsKICAgICAgICA8L3NjcmlwdD4KICAgIDwvYm9keT4KPC9odG1sPgpgOwo=", | |||||
{} | |||||
], | |||||
[ | [ | ||||
"муром.база_1.0.0", | "муром.база_1.0.0", | ||||
"LyoKICogCiAqIFVVSUQKICoKICovCgovLyBDcmVhdGUgR1VJRCAvIFVVSUQgaW4gSmF2YVNjcmlwdD8KLy8gaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9hLzIxMTc1MjMK0LzRg9GA0L7QvC51dWlkID0gZnVuY3Rpb24oKQp7CiAgICByZXR1cm4gJ3h4eHh4eHh4LXh4eHgtNHh4eC15eHh4LXh4eHh4eHh4eHh4eCcucmVwbGFjZSgKICAgICAgICAvW3h5XS9nLAogICAgICAgIGZ1bmN0aW9uKGMpCiAgICAgICAgewogICAgICAgICAgICB2YXIgciA9IE1hdGgucmFuZG9tKCkgKiAxNiB8IDAsIHYgPSBjID09ICd4JyA/IHIgOiAociAmIDB4MyB8IDB4OCk7CiAgICAgICAgICAgIHJldHVybiB2LnRvU3RyaW5nKDE2KTsKICAgICAgICB9CiAgICApOwp9OwoKLyoKICogCiAqINCj0LLQtdC00L7QvNC40YLQtdC70YwgLyBSZXBvcnRlcgogKgogKi8KCi8vIFJlcG9ydGVyU3Vic2NyaXB0aW9uIGNsYXNzLgpmdW5jdGlvbiBSZXBvcnRlclN1YnNjcmlwdGlvbihpZCwgY2FsbGJhY2ssIHJlcG9ydGVyKQp7CiAgICB0aGlzLmlkID0gaWQ7CiAgICB0aGlzLmNhbGxiYWNrID0gY2FsbGJhY2s7CiAgICB0aGlzLnJlcG9ydGVyID0gcmVwb3J0ZXI7Cn0KCi8vIFJlcG9ydGVyIGNsYXNzLgpmdW5jdGlvbiBSZXBvcnRlcihuYW1lKQp7CiAgICB0aGlzLm5hbWUgPQogICAgICAgICh0eXBlb2YgbmFtZSAhPT0gInVuZGVmaW5lZCIpID8gCiAgICAgICAgbmFtZSA6CiAgICAgICAgIiI7CiAgICB0aGlzLnN1YnNjcmlwdGlvbnMgPSBbXTsKfQpSZXBvcnRlci5wcm90b3R5cGUucmVwb3J0ID0gZnVuY3Rpb24oKQp7CiAgICBmb3IgKHZhciBpZCBpbiB0aGlzLnN1YnNjcmlwdGlvbnMpCiAgICB7CiAgICAgICAgdmFyIHN1YnNjcmlwdGlvbiA9IHRoaXMuc3Vic2NyaXB0aW9uc1tpZF07CiAgICAgICAgc3Vic2NyaXB0aW9uLmNhbGxiYWNrKCk7CiAgICB9Cn0KUmVwb3J0ZXIucHJvdG90eXBlLnN1YnNjcmliZSA9IGZ1bmN0aW9uKGNhbGxiYWNrKQp7CiAgICB2YXIgaWQgPSBtdXJvbS51dWlkKCk7CiAgICB2YXIgc3Vic2NyaXB0aW9uID0gbmV3IFJlcG9ydGVyU3Vic2NyaXB0aW9uKGlkLCBjYWxsYmFjaywgdGhpcyk7CiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChzdWJzY3JpcHRpb24pOwogICAgcmV0dXJuIHN1YnNjcmlwdGlvbjsKfQpSZXBvcnRlci5wcm90b3R5cGUuc3Vic2NyaWJlTWFueSA9IGZ1bmN0aW9uKGZ1bmNzKQp7CiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGZ1bmNzLmxlbmd0aDsgKytpKQogICAgewogICAgICAgIHZhciBmdW5jID0gZnVuY3NbaV07CiAgICAgICAgdGhpcy5zdWJzY3JpYmUoZnVuYyk7CiAgICB9Cn0KCnZhciDQo9Cy0LXQtNC+0LzQuNGC0LXQu9GMID0gUmVwb3J0ZXI7ClJlcG9ydGVyLnByb3RvdHlwZS7Rg9Cy0LXQtNC+0LzQuNGC0YwgPSBmdW5jdGlvbigpCnsKICAgIHRoaXMucmVwb3J0KCk7Cn07ClJlcG9ydGVyLnByb3RvdHlwZS7Qv9C+0LTQv9C40YHQsNGC0YwgPSBmdW5jdGlvbijRhNGD0L3QutGG0LjRjykKewogICAgdGhpcy5zdWJzY3JpYmUo0YTRg9C90LrRhtC40Y8pOwp9OwpSZXBvcnRlci5wcm90b3R5cGUu0L/QvtC00L/QuNGB0LDRgtGM0JzQvdC+0LPQviA9IGZ1bmN0aW9uKGZ1bmNzKQp7CiAgICB0aGlzLnN1YnNjcmliZU1hbnkoZnVuY3MpOwp9OwoKLyoKICogCiAqINCf0YPRgdC6IC8gU3RhcnQKICoKICovCgrQvNGD0YDQvtC8LtC/0YPRgdC6ID0gbmV3INCj0LLQtdC00L7QvNC40YLQtdC70YwoKTsKLy8gQ2FuIGFsc28gYmUgYWNjZXNzZWQgYXMgJ211cm9tLnJ1bicuCk9iamVjdC5kZWZpbmVQcm9wZXJ0eShtdXJvbSwgInJ1biIsIHsKICAgIGdldDogZnVuY3Rpb24oKQogICAgewogICAgICAgIHJldHVybiDQvNGD0YDQvtC8LtC/0YPRgdC6OwogICAgfQp9KTsKbXVyb20uc3RhcnQgPSBmdW5jdGlvbigpCnsKICAgINC80YPRgNC+0Lwu0L/Rg9GB0Lou0YPQstC10LTQvtC80LjRgtGMKCk7Cn07", | |||||
{} | |||||
], | |||||
[ | |||||
"муром.лпо_1.0.0", | |||||
"0LzRg9GA0L7QvC7RgdC+0LfQtNCw0YLRjNCb0LXQstGD0Y7Qn9GA0LDQstGD0Y7QntCx0LvQsNGB0YLQuCA9IGZ1bmN0aW9uKCkKewogICAgLy8g0JvQtdCy0LDRjyDQvtCx0LvQsNGB0YLRjC4KICAgIHZhciDQu9C+ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CiAgICDQu9C+LmlkPSLQu9C10LLQsNGPLdC+0LHQu9Cw0YHRgtGMIjsKICAgINC70L4uc3R5bGUuY3NzVGV4dCA9CiAgICAgICAgInBvc2l0aW9uOiBmaXhlZDsgbGVmdDogMDsgdG9wOiAwOyBib3R0b206IDA7IHdpZHRoOiA1MCU7IjsKICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQo0LvQvik7CiAgICAKICAgIC8vINCf0YDQsNCy0LDRjyDQvtCx0LvQsNGB0YLRjC4KICAgIHZhciDQv9C+ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CiAgICDQv9C+LmlkPSLQv9GA0LDQstCw0Y8t0L7QsdC70LDRgdGC0YwiOwogICAg0L/Qvi5zdHlsZS5jc3NUZXh0ID0KICAgICAgICAicG9zaXRpb246IGZpeGVkOyByaWdodDogMDsgdG9wOiAwOyBib3R0b206IDA7IHdpZHRoOiA1MCU7IjsKICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQo0L/Qvik7CiAgICAKICAgIHJldHVybiBb0LvQviwg0L/Qvl07Cn07", | |||||
"LyoKICoKICog0KHQutCw0YfQuNCy0LDQtdC80YvQuSDRhNCw0LnQuyAvIERvd25sb2FkZWQgZmlsZQogKgogKi8KCtC80YPRgNC+0Lwu0YTQsNC50LsgPSB7fTsK0LzRg9GA0L7QvC7RhNCw0LnQuy7QvdCw0YfQsNC70L4gPQpgCjwhRE9DVFlQRSBodG1sPgo8aHRtbD4KICAgIDxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KICAgIDxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgsIGluaXRpYWwtc2NhbGU9MSI+CiAgICA8Ym9keT4KICAgICAgICA8c2NyaXB0Pgp2YXIg0LzRg9GA0L7QvCA9IHt9Owp2YXIgbXVyb20gPSDQvNGD0YDQvtC8OwrQvNGD0YDQvtC8LtC80L7QtNGD0LvQuCA9IFsKYDsK0LzRg9GA0L7QvC7RhNCw0LnQuy7QutC+0L3QtdGGID0KYApdOwoKT2JqZWN0LmRlZmluZVByb3BlcnR5KG11cm9tLCAibW9kdWxlcyIsIHsKICAgIGdldDogZnVuY3Rpb24oKQogICAgewogICAgICAgIHJldHVybiDQvNGD0YDQvtC8LtC80L7QtNGD0LvQuDsKICAgIH0sCiAgICBzZXQ6IGZ1bmN0aW9uKNC30L3QsNGH0LXQvdC40Y8pCiAgICB7CiAgICAgICAg0LzRg9GA0L7QvC7QvNC+0LTRg9C70LggPSDQt9C90LDRh9C10L3QuNGPOwogICAgfQp9KTsKCnZhciDQt9Cw0LPRgNGD0LfQvtGH0L3Ri9C50JzQvtC00YPQu9GMID0g0LzRg9GA0L7QvC7QvNC+0LTRg9C70LhbMF07CnZhciDQutC+0LQgPSBhdG9iKNC30LDQs9GA0YPQt9C+0YfQvdGL0LnQnNC+0LTRg9C70YxbMV0pOwpldmFsKNC60L7QtCk7CiAgICAgICAgPC9zY3JpcHQ+CiAgICA8L2JvZHk+CjwvaHRtbD4KYDsKCi8qCiAqIAogKiBVVUlECiAqCiAqLwoKLy8gQ3JlYXRlIEdVSUQgLyBVVUlEIGluIEphdmFTY3JpcHQ/Ci8vIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vYS8yMTE3NTIzCtC80YPRgNC+0LwudXVpZCA9IGZ1bmN0aW9uKCkKewogICAgcmV0dXJuICd4eHh4eHh4eC14eHh4LTR4eHgteXh4eC14eHh4eHh4eHh4eHgnLnJlcGxhY2UoCiAgICAgICAgL1t4eV0vZywKICAgICAgICBmdW5jdGlvbihjKQogICAgICAgIHsKICAgICAgICAgICAgdmFyIHIgPSBNYXRoLnJhbmRvbSgpICogMTYgfCAwLCB2ID0gYyA9PSAneCcgPyByIDogKHIgJiAweDMgfCAweDgpOwogICAgICAgICAgICByZXR1cm4gdi50b1N0cmluZygxNik7CiAgICAgICAgfQogICAgKTsKfTsKCi8qCiAqIAogKiDQo9Cy0LXQtNC+0LzQuNGC0LXQu9GMIC8gUmVwb3J0ZXIKICoKICovCgovLyBSZXBvcnRlclN1YnNjcmlwdGlvbiBjbGFzcy4KZnVuY3Rpb24gUmVwb3J0ZXJTdWJzY3JpcHRpb24oaWQsIGNhbGxiYWNrLCByZXBvcnRlcikKewogICAgdGhpcy5pZCA9IGlkOwogICAgdGhpcy5jYWxsYmFjayA9IGNhbGxiYWNrOwogICAgdGhpcy5yZXBvcnRlciA9IHJlcG9ydGVyOwp9CgovLyBSZXBvcnRlciBjbGFzcy4KZnVuY3Rpb24gUmVwb3J0ZXIobmFtZSkKewogICAgdGhpcy5uYW1lID0KICAgICAgICAodHlwZW9mIG5hbWUgIT09ICJ1bmRlZmluZWQiKSA/IAogICAgICAgIG5hbWUgOgogICAgICAgICIiOwogICAgdGhpcy5zdWJzY3JpcHRpb25zID0gW107Cn0KUmVwb3J0ZXIucHJvdG90eXBlLnJlcG9ydCA9IGZ1bmN0aW9uKCkKewogICAgZm9yICh2YXIgaWQgaW4gdGhpcy5zdWJzY3JpcHRpb25zKQogICAgewogICAgICAgIHZhciBzdWJzY3JpcHRpb24gPSB0aGlzLnN1YnNjcmlwdGlvbnNbaWRdOwogICAgICAgIHN1YnNjcmlwdGlvbi5jYWxsYmFjaygpOwogICAgfQp9ClJlcG9ydGVyLnByb3RvdHlwZS5zdWJzY3JpYmUgPSBmdW5jdGlvbihjYWxsYmFjaykKewogICAgdmFyIGlkID0gbXVyb20udXVpZCgpOwogICAgdmFyIHN1YnNjcmlwdGlvbiA9IG5ldyBSZXBvcnRlclN1YnNjcmlwdGlvbihpZCwgY2FsbGJhY2ssIHRoaXMpOwogICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goc3Vic2NyaXB0aW9uKTsKICAgIHJldHVybiBzdWJzY3JpcHRpb247Cn0KUmVwb3J0ZXIucHJvdG90eXBlLnN1YnNjcmliZU1hbnkgPSBmdW5jdGlvbihmdW5jcykKewogICAgZm9yICh2YXIgaSA9IDA7IGkgPCBmdW5jcy5sZW5ndGg7ICsraSkKICAgIHsKICAgICAgICB2YXIgZnVuYyA9IGZ1bmNzW2ldOwogICAgICAgIHRoaXMuc3Vic2NyaWJlKGZ1bmMpOwogICAgfQp9Cgp2YXIg0KPQstC10LTQvtC80LjRgtC10LvRjCA9IFJlcG9ydGVyOwpSZXBvcnRlci5wcm90b3R5cGUu0YPQstC10LTQvtC80LjRgtGMID0gZnVuY3Rpb24oKQp7CiAgICB0aGlzLnJlcG9ydCgpOwp9OwpSZXBvcnRlci5wcm90b3R5cGUu0L/QvtC00L/QuNGB0LDRgtGMID0gZnVuY3Rpb24o0YTRg9C90LrRhtC40Y8pCnsKICAgIHRoaXMuc3Vic2NyaWJlKNGE0YPQvdC60YbQuNGPKTsKfTsKUmVwb3J0ZXIucHJvdG90eXBlLtC/0L7QtNC/0LjRgdCw0YLRjNCc0L3QvtCz0L4gPSBmdW5jdGlvbihmdW5jcykKewogICAgdGhpcy5zdWJzY3JpYmVNYW55KGZ1bmNzKTsKfTsKCi8qCiAqIAogKiDQn9GD0YHQuiAvIFN0YXJ0CiAqCiAqLwoK0LzRg9GA0L7QvC7Qv9GD0YHQuiA9IG5ldyDQo9Cy0LXQtNC+0LzQuNGC0LXQu9GMKCk7Ci8vIENhbiBhbHNvIGJlIGFjY2Vzc2VkIGFzICdtdXJvbS5ydW4nLgpPYmplY3QuZGVmaW5lUHJvcGVydHkobXVyb20sICJydW4iLCB7CiAgICBnZXQ6IGZ1bmN0aW9uKCkKICAgIHsKICAgICAgICByZXR1cm4g0LzRg9GA0L7QvC7Qv9GD0YHQujsKICAgIH0KfSk7Cm11cm9tLnN0YXJ0ID0gZnVuY3Rpb24oKQp7CiAgICDQvNGD0YDQvtC8LtC/0YPRgdC6LtGD0LLQtdC00L7QvNC40YLRjCgpOwp9OwoKLyoKICoKICog0JvQtdCy0LDRjyDQuCDQv9GA0LDQstCw0Y8g0L7QsdC70LDRgdGC0LggLyBMZWZ0IGFuZCByaWdodCByZWdpb25zCiAqCiAqLwoK0LzRg9GA0L7QvC7RgdC+0LfQtNCw0YLRjNCb0LXQstGD0Y7Qn9GA0LDQstGD0Y7QntCx0LvQsNGB0YLQuCA9IGZ1bmN0aW9uKCkKewogICAgLy8g0JvQtdCy0LDRjyDQvtCx0LvQsNGB0YLRjC4KICAgIHZhciDQu9C+ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CiAgICDQu9C+LmlkPSLQu9C10LLQsNGPLdC+0LHQu9Cw0YHRgtGMIjsKICAgINC70L4uc3R5bGUuY3NzVGV4dCA9CiAgICAgICAgInBvc2l0aW9uOiBmaXhlZDsgbGVmdDogMDsgdG9wOiAwOyBib3R0b206IDA7IHdpZHRoOiA1MCU7IjsKICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQo0LvQvik7CiAgICAKICAgIC8vINCf0YDQsNCy0LDRjyDQvtCx0LvQsNGB0YLRjC4KICAgIHZhciDQv9C+ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CiAgICDQv9C+LmlkPSLQv9GA0LDQstCw0Y8t0L7QsdC70LDRgdGC0YwiOwogICAg0L/Qvi5zdHlsZS5jc3NUZXh0ID0KICAgICAgICAicG9zaXRpb246IGZpeGVkOyByaWdodDogMDsgdG9wOiAwOyBib3R0b206IDA7IHdpZHRoOiA1MCU7IjsKICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQo0L/Qvik7CiAgICAKICAgIHJldHVybiBb0LvQviwg0L/Qvl07Cn07", | |||||
{} | {} | ||||
], | ], | ||||