PHP WebShell

Текущая директория: /opt/BitGoJS/modules/utxo-lib/dist/test

Просмотр файла: payments.utils.js

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.equate = equate;
exports.preform = preform;
exports.from = from;
const t = require("assert");
const bitcoinjs_lib_1 = require("bitcoinjs-lib");
function tryHex(x) {
    if (Buffer.isBuffer(x))
        return x.toString('hex');
    if (Array.isArray(x))
        return x.map(tryHex);
    return x;
}
function fromHex(x) {
    if (typeof x === 'string')
        return Buffer.from(x, 'hex');
    if (Array.isArray(x))
        return x.map(fromHex);
    return x;
}
function tryASM(x) {
    if (Buffer.isBuffer(x))
        return bitcoinjs_lib_1.script.toASM(x);
    return x;
}
function asmToBuffer(x) {
    if (x === '')
        return Buffer.alloc(0);
    return bitcoinjs_lib_1.script.fromASM(x);
}
function carryOver(a, b) {
    for (const k in b) {
        if (!k)
            continue;
        if (k in a && k === 'redeem') {
            carryOver(a[k], b[k]);
            continue;
        }
        // don't, the value was specified
        if (k in a)
            continue;
        // otherwise, expect match
        a[k] = b[k];
    }
}
// eslint-disable-next-line @typescript-eslint/no-explicit-any
function equateBase(a, b, context) {
    if ('output' in b)
        t.strictEqual(tryASM(a.output), tryASM(b.output), `Inequal ${context}output`);
    if ('input' in b) {
        t.strictEqual(tryASM(a.input), tryASM(b.input), `Inequal ${context}input`);
    }
    if ('witness' in b)
        t.deepStrictEqual(tryHex(a.witness), tryHex(b.witness), `Inequal ${context}witness`);
}
// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types
function equate(a, b, args) {
    b = Object.assign({}, b);
    carryOver(b, args);
    // by null, we mean 'undefined', but JSON
    if (b.input === null)
        b.input = undefined;
    if (b.output === null)
        b.output = undefined;
    if (b.witness === null)
        b.witness = undefined;
    if (b.redeem) {
        if (b.redeem.input === null)
            b.redeem.input = undefined;
        if (b.redeem.output === null)
            b.redeem.output = undefined;
        if (b.redeem.witness === null)
            b.redeem.witness = undefined;
    }
    equateBase(a, b, '');
    if (b.redeem)
        equateBase(a.redeem, b.redeem, 'redeem.');
    if (b.network)
        t.deepStrictEqual(a.network, bitcoinjs_lib_1.networks[b.network], 'Inequal *.network');
    // contextual
    if (b.signature === null)
        b.signature = undefined;
    if (b.signatures === null)
        b.signatures = undefined;
    if ('address' in b)
        t.strictEqual(a.address, b.address, 'Inequal *.address');
    if ('name' in b)
        t.strictEqual(a.name, b.name, 'Inequal *.name');
    if ('hash' in b) {
        t.strictEqual(tryHex(a.hash), tryHex(b.hash), 'Inequal *.hash');
    }
    if ('pubkey' in b) {
        t.strictEqual(tryHex(a.pubkey), tryHex(b.pubkey), 'Inequal *.pubkey');
    }
    if ('signature' in b)
        t.strictEqual(tryHex(a.signature), tryHex(b.signature), 'Inequal signature');
    if ('m' in b)
        t.strictEqual(a.m, b.m, 'Inequal *.m');
    if ('n' in b)
        t.strictEqual(a.n, b.n, 'Inequal *.n');
    if ('pubkeys' in b)
        t.deepStrictEqual(tryHex(a.pubkeys), tryHex(b.pubkeys), 'Inequal *.pubkeys');
    if ('signatures' in b)
        t.deepStrictEqual(tryHex(a.signatures), tryHex(b.signatures), 'Inequal *.signatures');
    if ('data' in b) {
        t.deepStrictEqual(tryHex(a.data), tryHex(b.data), 'Inequal *.data');
    }
    if ('controlBlock' in b)
        t.strictEqual(tryHex(a.controlBlock), tryHex(b.controlBlock), 'Inequal control block');
    if ('annex' in b) {
        t.strictEqual(tryHex(a.annex), tryHex(b.annex), 'Inequal annex');
    }
}
// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types
function preform(x) {
    x = Object.assign({}, x);
    if (x.network)
        x.network = bitcoinjs_lib_1.networks[x.network];
    if (typeof x.inputHex === 'string') {
        x.input = Buffer.from(x.inputHex, 'hex');
        delete x.inputHex;
    }
    if (typeof x.outputHex === 'string') {
        x.output = Buffer.from(x.outputHex, 'hex');
        delete x.outputHex;
    }
    if (typeof x.output === 'string')
        x.output = asmToBuffer(x.output);
    if (typeof x.input === 'string')
        x.input = asmToBuffer(x.input);
    if (Array.isArray(x.witness))
        x.witness = x.witness.map(fromHex);
    if (x.data)
        x.data = x.data.map(fromHex);
    if (x.hash)
        x.hash = Buffer.from(x.hash, 'hex');
    if (x.pubkey)
        x.pubkey = Buffer.from(x.pubkey, 'hex');
    if (x.signature)
        x.signature = Buffer.from(x.signature, 'hex');
    if (x.controlBlock)
        x.controlBlock = Buffer.from(x.controlBlock, 'hex');
    if (x.annex)
        x.annex = Buffer.from(x.annex, 'hex');
    if (x.pubkeys)
        x.pubkeys = x.pubkeys.map(fromHex);
    if (x.signatures) {
        x.signatures = x.signatures.map((y) => {
            return Number.isFinite(y) ? y : Buffer.from(y, 'hex');
        });
    }
    if (x.redeem) {
        x.redeem = preform(x.redeem);
    }
    if (x.redeems) {
        x.redeems = x.redeems.map(preform);
    }
    return x;
}
// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types
function from(path, object, result) {
    const paths = path.split('.');
    result = result || {};
    let r = result;
    paths.forEach((k, i) => {
        if (i < paths.length - 1) {
            r[k] = r[k] || {};
            // recurse
            r = r[k];
            object = object[k];
        }
        else {
            r[k] = object[k];
        }
    });
    return result;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF5bWVudHMudXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90ZXN0L3BheW1lbnRzLnV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBZ0RBLHdCQXlDQztBQUdELDBCQW9DQztBQUdELG9CQWtCQztBQXJKRCw0QkFBNEI7QUFDNUIsaURBQXlFO0FBRXpFLFNBQVMsTUFBTSxDQUFDLENBQW9CO0lBQ2xDLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7UUFBRSxPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDakQsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztRQUFFLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQWEsQ0FBQztJQUN2RCxPQUFPLENBQUMsQ0FBQztBQUNYLENBQUM7QUFFRCxTQUFTLE9BQU8sQ0FBQyxDQUFvQjtJQUNuQyxJQUFJLE9BQU8sQ0FBQyxLQUFLLFFBQVE7UUFBRSxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3hELElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFBRSxPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFhLENBQUM7SUFDeEQsT0FBTyxDQUFDLENBQUM7QUFDWCxDQUFDO0FBQ0QsU0FBUyxNQUFNLENBQUMsQ0FBUztJQUN2QixJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO1FBQUUsT0FBTyxzQkFBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNoRCxPQUFPLENBQUMsQ0FBQztBQUNYLENBQUM7QUFDRCxTQUFTLFdBQVcsQ0FBQyxDQUFTO0lBQzVCLElBQUksQ0FBQyxLQUFLLEVBQUU7UUFBRSxPQUFPLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDckMsT0FBTyxzQkFB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QUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNuQixDQUFDO0lBQ0gsQ0FBQyxDQUFDLENBQUM7SUFFSCxPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgdCBmcm9tICdhc3NlcnQnO1xuaW1wb3J0IHsgc2NyaXB0IGFzIGJzY3JpcHQsIG5ldHdvcmtzIGFzIEJORVRXT1JLUyB9IGZyb20gJ2JpdGNvaW5qcy1saWInO1xuXG5mdW5jdGlvbiB0cnlIZXgoeDogQnVmZmVyIHwgQnVmZmVyW10pOiBzdHJpbmcgfCBzdHJpbmdbXSB7XG4gIGlmIChCdWZmZXIuaXNCdWZmZXIoeCkpIHJldHVybiB4LnRvU3RyaW5nKCdoZXgnKTtcbiAgaWYgKEFycmF5LmlzQXJyYXkoeCkpIHJldHVybiB4Lm1hcCh0cnlIZXgpIGFzIHN0cmluZ1tdO1xuICByZXR1cm4geDtcbn1cblxuZnVuY3Rpb24gZnJvbUhleCh4OiBzdHJpbmcgfCBzdHJpbmdbXSk6IEJ1ZmZlciB8IEJ1ZmZlcltdIHtcbiAgaWYgKHR5cGVvZiB4ID09PSAnc3RyaW5nJykgcmV0dXJuIEJ1ZmZlci5mcm9tKHgsICdoZXgnKTtcbiAgaWYgKEFycmF5LmlzQXJyYXkoeCkpIHJldHVybiB4Lm1hcChmcm9tSGV4KSBhcyBCdWZmZXJbXTtcbiAgcmV0dXJuIHg7XG59XG5mdW5jdGlvbiB0cnlBU00oeDogQnVmZmVyKTogc3RyaW5nIHtcbiAgaWYgKEJ1ZmZlci5pc0J1ZmZlcih4KSkgcmV0dXJuIGJzY3JpcHQudG9BU00oeCk7XG4gIHJldHVybiB4O1xufVxuZnVuY3Rpb24gYXNtVG9CdWZmZXIoeDogc3RyaW5nKTogQnVmZmVyIHtcbiAgaWYgKHggPT09ICcnKSByZXR1cm4gQnVmZmVyLmFsbG9jKDApO1xuICByZXR1cm4gYnNjcmlwdC5mcm9tQVNNKHgpO1xufVxuZnVuY3Rpb24gY2FycnlPdmVyKGE6IGFueSwgYjogYW55KTogdm9pZCB7XG4gIGZvciAoY29uc3QgayBpbiBiKSB7XG4gICAgaWYgKCFrKSBjb250aW51ZTtcbiAgICBpZiAoayBpbiBhICYmIGsgPT09ICdyZWRlZW0nKSB7XG4gICAgICBjYXJyeU92ZXIoYVtrXSwgYltrXSk7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICAvLyBkb24ndCwgdGhlIHZhbHVlIHdhcyBzcGVjaWZpZWRcbiAgICBpZiAoayBpbiBhKSBjb250aW51ZTtcblxuICAgIC8vIG90aGVyd2lzZSwgZXhwZWN0IG1hdGNoXG4gICAgYVtrXSA9IGJba107XG4gIH1cbn1cblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbmZ1bmN0aW9uIGVxdWF0ZUJhc2UoYTogYW55LCBiOiBhbnksIGNvbnRleHQ6IHN0cmluZyk6IHZvaWQge1xuICBpZiAoJ291dHB1dCcgaW4gYikgdC5zdHJpY3RFcXVhbCh0cnlBU00oYS5vdXRwdXQpLCB0cnlBU00oYi5vdXRwdXQpLCBgSW5lcXVhbCAke2NvbnRleHR9b3V0cHV0YCk7XG4gIGlmICgnaW5wdXQnIGluIGIpIHtcbiAgICB0LnN0cmljdEVxdWFsKHRyeUFTTShhLmlucHV0KSwgdHJ5QVNNKGIuaW5wdXQpLCBgSW5lcXVhbCAke2NvbnRleHR9aW5wdXRgKTtcbiAgfVxuICBpZiAoJ3dpdG5lc3MnIGluIGIpIHQuZGVlcFN0cmljdEVxdWFsKHRyeUhleChhLndpdG5lc3MpLCB0cnlIZXgoYi53aXRuZXNzKSwgYEluZXF1YWwgJHtjb250ZXh0fXdpdG5lc3NgKTtcbn1cblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9leHBsaWNpdC1tb2R1bGUtYm91bmRhcnktdHlwZXNcbmV4cG9ydCBmdW5jdGlvbiBlcXVhdGUoYTogYW55LCBiOiBhbnksIGFyZ3M/OiBhbnkpOiB2b2lkIHtcbiAgYiA9IE9iamVjdC5hc3NpZ24oe30sIGIpO1xuICBjYXJyeU92ZXIoYiwgYXJncyk7XG5cbiAgLy8gYnkgbnVsbCwgd2UgbWVhbiAndW5kZWZpbmVkJywgYnV0IEpTT05cbiAgaWYgKGIuaW5wdXQgPT09IG51bGwpIGIuaW5wdXQgPSB1bmRlZmluZWQ7XG4gIGlmIChiLm91dHB1dCA9PT0gbnVsbCkgYi5vdXRwdXQgPSB1bmRlZmluZWQ7XG4gIGlmIChiLndpdG5lc3MgPT09IG51bGwpIGIud2l0bmVzcyA9IHVuZGVmaW5lZDtcbiAgaWYgKGIucmVkZWVtKSB7XG4gICAgaWYgKGIucmVkZWVtLmlucHV0ID09PSBudWxsKSBiLnJlZGVlbS5pbnB1dCA9IHVuZGVmaW5lZDtcbiAgICBpZiAoYi5yZWRlZW0ub3V0cHV0ID09PSBudWxsKSBiLnJlZGVlbS5vdXRwdXQgPSB1bmRlZmluZWQ7XG4gICAgaWYgKGIucmVkZWVtLndpdG5lc3MgPT09IG51bGwpIGIucmVkZWVtLndpdG5lc3MgPSB1bmRlZmluZWQ7XG4gIH1cblxuICBlcXVhdGVCYXNlKGEsIGIsICcnKTtcbiAgaWYgKGIucmVkZWVtKSBlcXVhdGVCYXNlKGEucmVkZWVtLCBiLnJlZGVlbSwgJ3JlZGVlbS4nKTtcbiAgaWYgKGIubmV0d29yaykgdC5kZWVwU3RyaWN0RXF1YWwoYS5uZXR3b3JrLCAoQk5FVFdPUktTIGFzIGFueSlbYi5uZXR3b3JrXSwgJ0luZXF1YWwgKi5uZXR3b3JrJyk7XG5cbiAgLy8gY29udGV4dHVhbFxuICBpZiAoYi5zaWduYXR1cmUgPT09IG51bGwpIGIuc2lnbmF0dXJlID0gdW5kZWZpbmVkO1xuICBpZiAoYi5zaWduYXR1cmVzID09PSBudWxsKSBiLnNpZ25hdHVyZXMgPSB1bmRlZmluZWQ7XG4gIGlmICgnYWRkcmVzcycgaW4gYikgdC5zdHJpY3RFcXVhbChhLmFkZHJlc3MsIGIuYWRkcmVzcywgJ0luZXF1YWwgKi5hZGRyZXNzJyk7XG4gIGlmICgnbmFtZScgaW4gYikgdC5zdHJpY3RFcXVhbChhLm5hbWUsIGIubmFtZSwgJ0luZXF1YWwgKi5uYW1lJyk7XG4gIGlmICgnaGFzaCcgaW4gYikge1xuICAgIHQuc3RyaWN0RXF1YWwodHJ5SGV4KGEuaGFzaCksIHRyeUhleChiLmhhc2gpLCAnSW5lcXVhbCAqLmhhc2gnKTtcbiAgfVxuICBpZiAoJ3B1YmtleScgaW4gYikge1xuICAgIHQuc3RyaWN0RXF1YWwodHJ5SGV4KGEucHVia2V5KSwgdHJ5SGV4KGIucHVia2V5KSwgJ0luZXF1YWwgKi5wdWJrZXknKTtcbiAgfVxuICBpZiAoJ3NpZ25hdHVyZScgaW4gYikgdC5zdHJpY3RFcXVhbCh0cnlIZXgoYS5zaWduYXR1cmUpLCB0cnlIZXgoYi5zaWduYXR1cmUpLCAnSW5lcXVhbCBzaWduYXR1cmUnKTtcbiAgaWYgKCdtJyBpbiBiKSB0LnN0cmljdEVxdWFsKGEubSwgYi5tLCAnSW5lcXVhbCAqLm0nKTtcbiAgaWYgKCduJyBpbiBiKSB0LnN0cmljdEVxdWFsKGEubiwgYi5uLCAnSW5lcXVhbCAqLm4nKTtcbiAgaWYgKCdwdWJrZXlzJyBpbiBiKSB0LmRlZXBTdHJpY3RFcXVhbCh0cnlIZXgoYS5wdWJrZXlzKSwgdHJ5SGV4KGIucHVia2V5cyksICdJbmVxdWFsICoucHVia2V5cycpO1xuICBpZiAoJ3NpZ25hdHVyZXMnIGluIGIpIHQuZGVlcFN0cmljdEVxdWFsKHRyeUhleChhLnNpZ25hdHVyZXMpLCB0cnlIZXgoYi5zaWduYXR1cmVzKSwgJ0luZXF1YWwgKi5zaWduYXR1cmVzJyk7XG4gIGlmICgnZGF0YScgaW4gYikge1xuICAgIHQuZGVlcFN0cmljdEVxdWFsKHRyeUhleChhLmRhdGEpLCB0cnlIZXgoYi5kYXRhKSwgJ0luZXF1YWwgKi5kYXRhJyk7XG4gIH1cbiAgaWYgKCdjb250cm9sQmxvY2snIGluIGIpIHQuc3RyaWN0RXF1YWwodHJ5SGV4KGEuY29udHJvbEJsb2NrKSwgdHJ5SGV4KGIuY29udHJvbEJsb2NrKSwgJ0luZXF1YWwgY29udHJvbCBibG9jaycpO1xuICBpZiAoJ2FubmV4JyBpbiBiKSB7XG4gICAgdC5zdHJpY3RFcXVhbCh0cnlIZXgoYS5hbm5leCksIHRyeUhleChiLmFubmV4KSwgJ0luZXF1YWwgYW5uZXgnKTtcbiAgfVxufVxuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2V4cGxpY2l0LW1vZHVsZS1ib3VuZGFyeS10eXBlc1xuZXhwb3J0IGZ1bmN0aW9uIHByZWZvcm0oeDogYW55KTogYW55IHtcbiAgeCA9IE9iamVjdC5hc3NpZ24oe30sIHgpO1xuXG4gIGlmICh4Lm5ldHdvcmspIHgubmV0d29yayA9IChCTkVUV09SS1MgYXMgYW55KVt4Lm5ldHdvcmtdO1xuICBpZiAodHlwZW9mIHguaW5wdXRIZXggPT09ICdzdHJpbmcnKSB7XG4gICAgeC5pbnB1dCA9IEJ1ZmZlci5mcm9tKHguaW5wdXRIZXgsICdoZXgnKTtcbiAgICBkZWxldGUgeC5pbnB1dEhleDtcbiAgfVxuICBpZiAodHlwZW9mIHgub3V0cHV0SGV4ID09PSAnc3RyaW5nJykge1xuICAgIHgub3V0cHV0ID0gQnVmZmVyLmZyb20oeC5vdXRwdXRIZXgsICdoZXgnKTtcbiAgICBkZWxldGUgeC5vdXRwdXRIZXg7XG4gIH1cbiAgaWYgKHR5cGVvZiB4Lm91dHB1dCA9PT0gJ3N0cmluZycpIHgub3V0cHV0ID0gYXNtVG9CdWZmZXIoeC5vdXRwdXQpO1xuICBpZiAodHlwZW9mIHguaW5wdXQgPT09ICdzdHJpbmcnKSB4LmlucHV0ID0gYXNtVG9CdWZmZXIoeC5pbnB1dCk7XG4gIGlmIChBcnJheS5pc0FycmF5KHgud2l0bmVzcykpIHgud2l0bmVzcyA9IHgud2l0bmVzcy5tYXAoZnJvbUhleCk7XG5cbiAgaWYgKHguZGF0YSkgeC5kYXRhID0geC5kYXRhLm1hcChmcm9tSGV4KTtcbiAgaWYgKHguaGFzaCkgeC5oYXNoID0gQnVmZmVyLmZyb20oeC5oYXNoLCAnaGV4Jyk7XG4gIGlmICh4LnB1YmtleSkgeC5wdWJrZXkgPSBCdWZmZXIuZnJvbSh4LnB1YmtleSwgJ2hleCcpO1xuICBpZiAoeC5zaWduYXR1cmUpIHguc2lnbmF0dXJlID0gQnVmZmVyLmZyb20oeC5zaWduYXR1cmUsICdoZXgnKTtcbiAgaWYgKHguY29udHJvbEJsb2NrKSB4LmNvbnRyb2xCbG9jayA9IEJ1ZmZlci5mcm9tKHguY29udHJvbEJsb2NrLCAnaGV4Jyk7XG4gIGlmICh4LmFubmV4KSB4LmFubmV4ID0gQnVmZmVyLmZyb20oeC5hbm5leCwgJ2hleCcpO1xuICBpZiAoeC5wdWJrZXlzKSB4LnB1YmtleXMgPSB4LnB1YmtleXMubWFwKGZyb21IZXgpO1xuICBpZiAoeC5zaWduYXR1cmVzKSB7XG4gICAgeC5zaWduYXR1cmVzID0geC5zaWduYXR1cmVzLm1hcCgoeTogYW55KSA9PiB7XG4gICAgICByZXR1cm4gTnVtYmVyLmlzRmluaXRlKHkpID8geSA6IEJ1ZmZlci5mcm9tKHksICdoZXgnKTtcbiAgICB9KTtcbiAgfVxuICBpZiAoeC5yZWRlZW0pIHtcbiAgICB4LnJlZGVlbSA9IHByZWZvcm0oeC5yZWRlZW0pO1xuICB9XG4gIGlmICh4LnJlZGVlbXMpIHtcbiAgICB4LnJlZGVlbXMgPSB4LnJlZGVlbXMubWFwKHByZWZvcm0pO1xuICB9XG5cbiAgcmV0dXJuIHg7XG59XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvZXhwbGljaXQtbW9kdWxlLWJvdW5kYXJ5LXR5cGVzXG5leHBvcnQgZnVuY3Rpb24gZnJvbShwYXRoOiBzdHJpbmcsIG9iamVjdDogYW55LCByZXN1bHQ/OiBhbnkpOiBhbnkge1xuICBjb25zdCBwYXRocyA9IHBhdGguc3BsaXQoJy4nKTtcbiAgcmVzdWx0ID0gcmVzdWx0IHx8IHt9O1xuXG4gIGxldCByID0gcmVzdWx0O1xuICBwYXRocy5mb3JFYWNoKChrLCBpKSA9PiB7XG4gICAgaWYgKGkgPCBwYXRocy5sZW5ndGggLSAxKSB7XG4gICAgICByW2tdID0gcltrXSB8fCB7fTtcblxuICAgICAgLy8gcmVjdXJzZVxuICAgICAgciA9IHJba107XG4gICAgICBvYmplY3QgPSBvYmplY3Rba107XG4gICAgfSBlbHNlIHtcbiAgICAgIHJba10gPSBvYmplY3Rba107XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4gcmVzdWx0O1xufVxuIl19

Выполнить команду


Для локальной разработки. Не используйте в интернете!