PHP WebShell
Текущая директория: /usr/lib/node_modules/bitgo/node_modules/avalanche/typings/tests/apis/platformvm
Просмотр файла: addsubnetvalidatortx.test.js
"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 __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const bn_js_1 = __importDefault(require("bn.js"));
const buffer_1 = require("buffer/");
const platformvm_1 = require("src/apis/platformvm");
const utils_1 = require("src/utils");
describe("AddSubnetValidatorTx", () => {
const addSubnetValidatorTxHex = "0000053900000000000000000000000000000000000000000000000000000000000000000000000117cc8b1578ba383544d163958822d8abd3849bb9dfabe39fcbc3e7ee8811fe2f00000007006a94d71389b180000000000000000000000001000000023cb7d3842e8cee6a0ebd09f1fe884f6861e1b29ca43c1f6ecdcb1fcec86d78446b9cf619c64c604b00000001f7fc296b05e7a960e9d2739c1cabdb58f22e5c582e1a7b0877fb10e78cf4e7ec0000000017cc8b1578ba383544d163958822d8abd3849bb9dfabe39fcbc3e7ee8811fe2f00000005006a94d71398f3c00000000100000000000000934d616e75616c6c79206372656174652061204164645375626e657456616c696461746f7254782077686963682063726561746573206120312d6f662d322041564158207574786f20616e64206164647320612076616c696461746f7220746f2061207375626e657420627920636f72726563746c79207369676e696e672074686520322d6f662d33205375626e657441757468de31b4d8b22991d51aa6aa1fc733f23a851a8c94000000006279e79c00000000628d873a00000000000000017fe044f9e97347c0a5ffe5a0f5773b42398c0e2b85948616da681585d460e1a80000000a000000020000000000000001";
const addSubnetValidatorTxBuf = buffer_1.Buffer.from(addSubnetValidatorTxHex, "hex");
const addSubnetValidatorTx = new platformvm_1.AddSubnetValidatorTx();
addSubnetValidatorTx.fromBuffer(addSubnetValidatorTxBuf);
test("getTypeName", () => __awaiter(void 0, void 0, void 0, function* () {
const addSubnetValidatorTxTypeName = addSubnetValidatorTx.getTypeName();
expect(addSubnetValidatorTxTypeName).toBe("AddSubnetValidatorTx");
}));
test("getTypeID", () => __awaiter(void 0, void 0, void 0, function* () {
const addSubnetValidatorTxTypeID = addSubnetValidatorTx.getTypeID();
expect(addSubnetValidatorTxTypeID).toBe(platformvm_1.PlatformVMConstants.ADDSUBNETVALIDATORTX);
}));
test("toBuffer and fromBuffer", () => __awaiter(void 0, void 0, void 0, function* () {
const buf = addSubnetValidatorTx.toBuffer();
const asvTx = new platformvm_1.AddSubnetValidatorTx();
asvTx.fromBuffer(buf);
const buf2 = asvTx.toBuffer();
expect(buf.toString("hex")).toBe(buf2.toString("hex"));
}));
test("getNodeID", () => __awaiter(void 0, void 0, void 0, function* () {
const nodeID = "NodeID-MFrZFVCXPv5iCn6M9K6XduxGTYp891xXZ";
const nodeIDBuf = addSubnetValidatorTx.getNodeID();
const nID = (0, utils_1.bufferToNodeIDString)(nodeIDBuf);
expect(nID).toBe(nodeID);
}));
test("getStartTime", () => __awaiter(void 0, void 0, void 0, function* () {
const startTime = new bn_js_1.default(1652156316);
const st = addSubnetValidatorTx.getStartTime();
expect(startTime.toString()).toBe(st.toString());
}));
test("getEndTime", () => __awaiter(void 0, void 0, void 0, function* () {
const endTime = new bn_js_1.default(1653442362);
const et = addSubnetValidatorTx.getEndTime();
expect(endTime.toString()).toBe(et.toString());
}));
test("getWeight", () => __awaiter(void 0, void 0, void 0, function* () {
const weight = new bn_js_1.default(1);
const w = addSubnetValidatorTx.getWeight();
expect(weight.toString()).toBe(w.toString());
}));
test("getSubnetID", () => __awaiter(void 0, void 0, void 0, function* () {
const subnetID = "yKRV4EvGYWj7HHXUxSYzaAQVazEvaFPKPhJie4paqbrML5dub";
const sID = addSubnetValidatorTx.getSubnetID();
expect(subnetID).toBe(sID);
}));
describe("SubnetAuth", () => {
const sa = addSubnetValidatorTx.getSubnetAuth();
test("getTypeName", () => __awaiter(void 0, void 0, void 0, function* () {
const subnetAuthTypeName = sa.getTypeName();
expect(subnetAuthTypeName).toBe("SubnetAuth");
}));
test("getTypeID", () => __awaiter(void 0, void 0, void 0, function* () {
const subnetAuthTypeID = sa.getTypeID();
expect(subnetAuthTypeID).toBe(platformvm_1.PlatformVMConstants.SUBNETAUTH);
}));
test("getNumAddressIndices", () => __awaiter(void 0, void 0, void 0, function* () {
const numAddressIndices = sa.getNumAddressIndices();
const nAI = 2;
expect(numAddressIndices).toBe(nAI);
}));
test("addressIndices", () => __awaiter(void 0, void 0, void 0, function* () {
const ai = [0, 1];
const addressIndices = sa.getAddressIndices();
addressIndices.forEach((addressIndex, index) => {
expect(addressIndex.readInt32BE(0)).toBe(ai[index]);
});
}));
});
});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkc3VibmV0dmFsaWRhdG9ydHgudGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Rlc3RzL2FwaXMvcGxhdGZvcm12bS9hZGRzdWJuZXR2YWxpZGF0b3J0eC50ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7O0FBQUEsa0RBQXNCO0FBQ3RCLG9DQUFnQztBQUNoQyxvREFJNEI7QUFDNUIscUNBQWdEO0FBRWhELFFBQVEsQ0FBQyxzQkFBc0IsRUFBRSxHQUFTLEVBQUU7SUFDMUMsTUFBTSx1QkFBdUIsR0FDM0IsdzdCQUF3N0IsQ0FBQTtJQUMxN0IsTUFBTSx1QkFBdUIsR0FBVyxlQUFNLENBQUMsSUFBSSxDQUNqRCx1QkFBdUIsRUFDdkIsS0FBSyxDQUNOLENBQUE7SUFDRCxNQUFNLG9CQUFvQixHQUF5QixJQUFJLGlDQUFvQixFQUFFLENBQUE7SUFDN0Usb0JBQW9CLENBQUMsVUFBVSxDQUFDLHVCQUF1QixDQUFDLENBQUE7SUFFeEQsSUFBSSxDQUFDLGFBQWEsRUFBRSxHQUF3QixFQUFFO1FBQzVDLE1BQU0sNEJBQTRCLEdBQ2hDLG9CQUFvQixDQUFDLFdBQVcsRUFBRSxDQUFBO1FBQ3BDLE1BQU0sQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxDQUFBO0lBQ25FLENBQUMsQ0FBQSxDQUFDLENBQUE7SUFFRixJQUFJLENBQUMsV0FBVyxFQUFFLEdBQXdCLEVBQUU7UUFDMUMsTUFBTSwwQkFBMEIsR0FBVyxvQkFBb0IsQ0FBQyxTQUFTLEVBQUUsQ0FBQTtRQUMzRSxNQUFNLENBQUMsMEJBQTBCLENBQUMsQ0FBQyxJQUFJLENBQ3JDLGdDQUFtQixDQUFDLG9CQUFvQixDQUN6QyxDQUFBO0lBQ0gsQ0FBQyxDQUFBLENBQUMsQ0FBQTtJQUVGLElBQUksQ0FBQyx5QkFBeUIsRUFBRSxHQUF3QixFQUFFO1FBQ3hELE1BQU0sR0FBRyxHQUFXLG9CQUFvQixDQUFD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RSxDQUFBO1lBQy9DLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLElBQUksQ0FBQyxnQ0FBbUIsQ0FBQyxVQUFVLENBQUMsQ0FBQTtRQUMvRCxDQUFDLENBQUEsQ0FBQyxDQUFBO1FBRUYsSUFBSSxDQUFDLHNCQUFzQixFQUFFLEdBQXdCLEVBQUU7WUFDckQsTUFBTSxpQkFBaUIsR0FBVyxFQUFFLENBQUMsb0JBQW9CLEVBQUUsQ0FBQTtZQUMzRCxNQUFNLEdBQUcsR0FBVyxDQUFDLENBQUE7WUFDckIsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFBO1FBQ3JDLENBQUMsQ0FBQSxDQUFDLENBQUE7UUFFRixJQUFJLENBQUMsZ0JBQWdCLEVBQUUsR0FBd0IsRUFBRTtZQUMvQyxNQUFNLEVBQUUsR0FBYSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQTtZQUMzQixNQUFNLGNBQWMsR0FBYSxFQUFFLENBQUMsaUJBQWlCLEVBQUUsQ0FBQTtZQUN2RCxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUMsWUFBb0IsRUFBRSxLQUFhLEVBQUUsRUFBRTtnQkFDN0QsTUFBTSxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUE7WUFDckQsQ0FBQyxDQUFDLENBQUE7UUFDSixDQUFDLENBQUEsQ0FBQyxDQUFBO0lBQ0osQ0FBQyxDQUFDLENBQUE7QUFDSixDQUFDLENBQUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBCTiBmcm9tIFwiYm4uanNcIlxuaW1wb3J0IHsgQnVmZmVyIH0gZnJvbSBcImJ1ZmZlci9cIlxuaW1wb3J0IHtcbiAgQWRkU3VibmV0VmFsaWRhdG9yVHgsXG4gIFBsYXRmb3JtVk1Db25zdGFudHMsXG4gIFN1Ym5ldEF1dGhcbn0gZnJvbSBcInNyYy9hcGlzL3BsYXRmb3Jtdm1cIlxuaW1wb3J0IHsgYnVmZmVyVG9Ob2RlSURTdHJpbmcgfSBmcm9tIFwic3JjL3V0aWxzXCJcblxuZGVzY3JpYmUoXCJBZGRTdWJuZXRWYWxpZGF0b3JUeFwiLCAoKTogdm9pZCA9PiB7XG4gIGNvbnN0IGFkZFN1Ym5ldFZhbGlkYXRvclR4SGV4OiBzdHJpbmcgPVxuICAgIFwiMDAwMDA1MzkwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDExN2NjOGIxNTc4YmEzODM1NDRkMTYzOTU4ODIyZDhhYmQzODQ5YmI5ZGZhYmUzOWZjYmMzZTdlZTg4MTFmZTJmMDAwMDAwMDcwMDZhOTRkNzEzODliMTgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMDAwMDAwMDIzY2I3ZDM4NDJlOGNlZTZhMGViZDA5ZjFmZTg4NGY2ODYxZTFiMjljYTQzYzFmNmVjZGNiMWZjZWM4NmQ3ODQ0NmI5Y2Y2MTljNjRjNjA0YjAwMDAwMDAxZjdmYzI5NmIwNWU3YTk2MGU5ZDI3MzljMWNhYmRiNThmMjJlNWM1ODJlMWE3YjA4NzdmYjEwZTc4Y2Y0ZTdlYzAwMDAwMDAwMTdjYzhiMTU3OGJhMzgzNTQ0ZDE2Mzk1ODgyMmQ4YWJkMzg0OWJiOWRmYWJlMzlmY2JjM2U3ZWU4ODExZmUyZjAwMDAwMDA1MDA2YTk0ZDcxMzk4ZjNjMDAwMDAwMDAxMDAwMDAwMDAwMDAwMDA5MzRkNjE2ZTc1NjE2YzZjNzkyMDYzNzI2NTYxNzQ2NTIwNjEyMDQxNjQ2NDUzNzU2MjZlNjU3NDU2NjE2YzY5NjQ2MTc0NmY3MjU0NzgyMDc3Njg2OTYzNjgyMDYzNzI2NTYxNzQ2NTczMjA2MTIwMzEyZDZmNjYyZDMyMjA0MTU2NDE1ODIwNzU3NDc4NmYyMDYxNmU2NDIwNjE2NDY0NzMyMDYxMjA3NjYxNmM2OTY0NjE3NDZmNzIyMDc0NmYyMDYxMjA3Mzc1NjI2ZTY1NzQyMDYyNzkyMDYzNmY3MjcyNjU2Mzc0NmM3OTIwNzM2OTY3NmU2OTZlNjcyMDc0Njg2NTIwMzIyZDZmNjYyZDMzMjA1Mzc1NjI2ZTY1NzQ0MTc1NzQ2OGRlMzFiNGQ4YjIyOTkxZDUxYWE2YWExZmM3MzNmMjNhODUxYThjOTQwMDAwMDAwMDYyNzllNzljMDAwMDAwMDA2MjhkODczYTAwMDAwMDAwMDAwMDAwMDE3ZmUwNDRmOWU5NzM0N2MwYTVmZmU1YTBmNTc3M2I0MjM5OGMwZTJiODU5NDg2MTZkYTY4MTU4NWQ0NjBlMWE4MDAwMDAwMGEwMDAwMDAwMjAwMDAwMDAwMDAwMDAwMDFcIlxuICBjb25zdCBhZGRTdWJuZXRWYWxpZGF0b3JUeEJ1ZjogQnVmZmVyID0gQnVmZmVyLmZyb20oXG4gICAgYWRkU3VibmV0VmFsaWRhdG9yVHhIZXgsXG4gICAgXCJoZXhcIlxuICApXG4gIGNvbnN0IGFkZFN1Ym5ldFZhbGlkYXRvclR4OiBBZGRTdWJuZXRWYWxpZGF0b3JUeCA9IG5ldyBBZGRTdWJuZXRWYWxpZGF0b3JUeCgpXG4gIGFkZFN1Ym5ldFZhbGlkYXRvclR4LmZyb21CdWZmZXIoYWRkU3VibmV0VmFsaWRhdG9yVHhCdWYpXG5cbiAgdGVzdChcImdldFR5cGVOYW1lXCIsIGFzeW5jICgpOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICBjb25zdCBhZGRTdWJuZXRWYWxpZGF0b3JUeFR5cGVOYW1lOiBzdHJpbmcgPVxuICAgICAgYWRkU3VibmV0VmFsaWRhdG9yVHguZ2V0VHlwZU5hbWUoKVxuICAgIGV4cGVjdChhZGRTdWJuZXRWYWxpZGF0b3JUeFR5cGVOYW1lKS50b0JlKFwiQWRkU3VibmV0VmFsaWRhdG9yVHhcIilcbiAgfSlcblxuICB0ZXN0KFwiZ2V0VHlwZUlEXCIsIGFzeW5jICgpOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICBjb25zdCBhZGRTdWJuZXRWYWxpZGF0b3JUeFR5cGVJRDogbnVtYmVyID0gYWRkU3VibmV0VmFsaWRhdG9yVHguZ2V0VHlwZUlEKClcbiAgICBleHBlY3QoYWRkU3VibmV0VmFsaWRhdG9yVHhUeXBlSUQpLnRvQmUoXG4gICAgICBQbGF0Zm9ybVZNQ29uc3RhbnRzLkFERFNVQk5FVFZBTElEQVRPUlRYXG4gICAgKVxuICB9KVxuXG4gIHRlc3QoXCJ0b0J1ZmZlciBhbmQgZnJvbUJ1ZmZlclwiLCBhc3luYyAoKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gICAgY29uc3QgYnVmOiBCdWZmZXIgPSBhZGRTdWJuZXRWYWxpZGF0b3JUeC50b0J1ZmZlcigpXG4gICAgY29uc3QgYXN2VHg6IEFkZFN1Ym5ldFZhbGlkYXRvclR4ID0gbmV3IEFkZFN1Ym5ldFZhbGlkYXRvclR4KClcbiAgICBhc3ZUeC5mcm9tQnVmZmVyKGJ1ZilcbiAgICBjb25zdCBidWYyOiBCdWZmZXIgPSBhc3ZUeC50b0J1ZmZlcigpXG4gICAgZXhwZWN0KGJ1Zi50b1N0cmluZyhcImhleFwiKSkudG9CZShidWYyLnRvU3RyaW5nKFwiaGV4XCIpKVxuICB9KVxuXG4gIHRlc3QoXCJnZXROb2RlSURcIiwgYXN5bmMgKCk6IFByb21pc2U8dm9pZD4gPT4ge1xuICAgIGNvbnN0IG5vZGVJRDogc3RyaW5nID0gXCJOb2RlSUQtTUZyWkZWQ1hQdjVpQ242TTlLNlhkdXhHVFlwODkxeFhaXCJcbiAgICBjb25zdCBub2RlSURCdWY6IEJ1ZmZlciA9IGFkZFN1Ym5ldFZhbGlkYXRvclR4LmdldE5vZGVJRCgpXG4gICAgY29uc3QgbklEOiBzdHJpbmcgPSBidWZmZXJUb05vZGVJRFN0cmluZyhub2RlSURCdWYpXG4gICAgZXhwZWN0KG5JRCkudG9CZShub2RlSUQpXG4gIH0pXG5cbiAgdGVzdChcImdldFN0YXJ0VGltZVwiLCBhc3luYyAoKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gICAgY29uc3Qgc3RhcnRUaW1lOiBCTiA9IG5ldyBCTigxNjUyMTU2MzE2KVxuICAgIGNvbnN0IHN0OiBCTiA9IGFkZFN1Ym5ldFZhbGlkYXRvclR4LmdldFN0YXJ0VGltZSgpXG4gICAgZXhwZWN0KHN0YXJ0VGltZS50b1N0cmluZygpKS50b0JlKHN0LnRvU3RyaW5nKCkpXG4gIH0pXG5cbiAgdGVzdChcImdldEVuZFRpbWVcIiwgYXN5bmMgKCk6IFByb21pc2U8dm9pZD4gPT4ge1xuICAgIGNvbnN0IGVuZFRpbWU6IEJOID0gbmV3IEJOKDE2NTM0NDIzNjIpXG4gICAgY29uc3QgZXQ6IEJOID0gYWRkU3VibmV0VmFsaWRhdG9yVHguZ2V0RW5kVGltZSgpXG4gICAgZXhwZWN0KGVuZFRpbWUudG9TdHJpbmcoKSkudG9CZShldC50b1N0cmluZygpKVxuICB9KVxuXG4gIHRlc3QoXCJnZXRXZWlnaHRcIiwgYXN5bmMgKCk6IFByb21pc2U8dm9pZD4gPT4ge1xuICAgIGNvbnN0IHdlaWdodDogQk4gPSBuZXcgQk4oMSlcbiAgICBjb25zdCB3OiBCTiA9IGFkZFN1Ym5ldFZhbGlkYXRvclR4LmdldFdlaWdodCgpXG4gICAgZXhwZWN0KHdlaWdodC50b1N0cmluZygpKS50b0JlKHcudG9TdHJpbmcoKSlcbiAgfSlcblxuICB0ZXN0KFwiZ2V0U3VibmV0SURcIiwgYXN5bmMgKCk6IFByb21pc2U8dm9pZD4gPT4ge1xuICAgIGNvbnN0IHN1Ym5ldElEOiBzdHJpbmcgPSBcInlLUlY0RXZHWVdqN0hIWFV4U1l6YUFRVmF6RXZhRlBLUGhKaWU0cGFxYnJNTDVkdWJcIlxuICAgIGNvbnN0IHNJRDogc3RyaW5nID0gYWRkU3VibmV0VmFsaWRhdG9yVHguZ2V0U3VibmV0SUQoKVxuICAgIGV4cGVjdChzdWJuZXRJRCkudG9CZShzSUQpXG4gIH0pXG5cbiAgZGVzY3JpYmUoXCJTdWJuZXRBdXRoXCIsICgpOiB2b2lkID0+IHtcbiAgICBjb25zdCBzYTogU3VibmV0QXV0aCA9IGFkZFN1Ym5ldFZhbGlkYXRvclR4LmdldFN1Ym5ldEF1dGgoKVxuXG4gICAgdGVzdChcImdldFR5cGVOYW1lXCIsIGFzeW5jICgpOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICAgIGNvbnN0IHN1Ym5ldEF1dGhUeXBlTmFtZTogc3RyaW5nID0gc2EuZ2V0VHlwZU5hbWUoKVxuICAgICAgZXhwZWN0KHN1Ym5ldEF1dGhUeXBlTmFtZSkudG9CZShcIlN1Ym5ldEF1dGhcIilcbiAgICB9KVxuXG4gICAgdGVzdChcImdldFR5cGVJRFwiLCBhc3luYyAoKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gICAgICBjb25zdCBzdWJuZXRBdXRoVHlwZUlEOiBudW1iZXIgPSBzYS5nZXRUeXBlSUQoKVxuICAgICAgZXhwZWN0KHN1Ym5ldEF1dGhUeXBlSUQpLnRvQmUoUGxhdGZvcm1WTUNvbnN0YW50cy5TVUJORVRBVVRIKVxuICAgIH0pXG5cbiAgICB0ZXN0KFwiZ2V0TnVtQWRkcmVzc0luZGljZXNcIiwgYXN5bmMgKCk6IFByb21pc2U8dm9pZD4gPT4ge1xuICAgICAgY29uc3QgbnVtQWRkcmVzc0luZGljZXM6IG51bWJlciA9IHNhLmdldE51bUFkZHJlc3NJbmRpY2VzKClcbiAgICAgIGNvbnN0IG5BSTogbnVtYmVyID0gMlxuICAgICAgZXhwZWN0KG51bUFkZHJlc3NJbmRpY2VzKS50b0JlKG5BSSlcbiAgICB9KVxuXG4gICAgdGVzdChcImFkZHJlc3NJbmRpY2VzXCIsIGFzeW5jICgpOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICAgIGNvbnN0IGFpOiBudW1iZXJbXSA9IFswLCAxXVxuICAgICAgY29uc3QgYWRkcmVzc0luZGljZXM6IEJ1ZmZlcltdID0gc2EuZ2V0QWRkcmVzc0luZGljZXMoKVxuICAgICAgYWRkcmVzc0luZGljZXMuZm9yRWFjaCgoYWRkcmVzc0luZGV4OiBCdWZmZXIsIGluZGV4OiBudW1iZXIpID0+IHtcbiAgICAgICAgZXhwZWN0KGFkZHJlc3NJbmRleC5yZWFkSW50MzJCRSgwKSkudG9CZShhaVtpbmRleF0pXG4gICAgICB9KVxuICAgIH0pXG4gIH0pXG59KVxuIl19Выполнить команду
Для локальной разработки. Не используйте в интернете!