Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

slopes

Package Overview
Dependencies
Maintainers
1
Versions
62
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

slopes - npm Package Compare versions

Comparing version 1.0.19 to 1.1.0

2

package.json
{
"name": "slopes",
"version": "1.0.19",
"version": "1.1.0",
"description": "AVA Platform JS Library",

@@ -5,0 +5,0 @@ "main": "typings/src/index.js",

@@ -13,10 +13,2 @@ /**

import * as AVMAPITxAPI from './apis/avm/tx';
import * as AVMAPIUTXOAPI from './apis/avm/utxos';
import * as AVMAPITypes from './apis/avm/types';
import * as AVMAPIOutputs from './apis/avm/outputs';
import * as AVMAPIInput from './apis/avm/inputs';
import * as AVMAPIKeyChain from './apis/avm/keychain';
import { PersistanceOptions } from './apis/avm/api';
/**

@@ -77,134 +69,2 @@ * Slopes is middleware for interacting with AVA node RPC APIs.

class CoreTypesHolder {
RequestResponseData = CoreTypes.RequestResponseData;
API = CoreTypes.APIBase;
JRPCAPI = CoreTypes.JRPCAPI;
constructor() {}
}
class AVMInputHolder {
Input = AVMAPIInput.Input;
constructor() {}
}
class AVMKeysHolder {
AVMKeyPair = AVMAPIKeyChain.AVMKeyPair;
AVMKeyChain = AVMAPIKeyChain.AVMKeyChain;
constructor() {}
}
class AVMOutputHolder {
Output = AVMAPIOutputs.Output;
OutPayment = AVMAPIOutputs.OutPayment;
OutTakeOrLeave = AVMAPIOutputs.OutTakeOrLeave;
OutCreateAsset = AVMAPIOutputs.OutCreateAsset;
constructor() {}
}
class AVMTxAPIHolder {
Tx = AVMAPITxAPI.Tx;
TxUnsigned = AVMAPITxAPI.TxUnsigned;
constructor() {}
}
class AVMTypesHolder {
Address = AVMAPITypes.Address;
Signature = AVMAPITypes.Signature;
SigIdx = AVMAPITypes.SigIdx;
UnixNow = AVMAPITypes.UnixNow;
constructor() {}
}
class AVMUTXOHolder {
UTXO = AVMAPIUTXOAPI.UTXO;
UTXOSet = AVMAPIUTXOAPI.UTXOSet;
constructor() {}
}
class APIMiddleware<GE extends CoreTypes.APIBase> {
API: new(core:SlopesCore) => GE;
constructor(constructorFN: new(core:SlopesCore) => GE){
this.API = constructorFN;
}
}
class AdminMiddleware extends APIMiddleware<AdminAPI> {
constructor(){
super(AdminAPI);
}
};
class AVMMiddleware extends APIMiddleware<AVMAPI> {
Inputs:AVMInputHolder = new AVMInputHolder();
Keys:AVMKeysHolder = new AVMKeysHolder();
Outputs:AVMOutputHolder = new AVMOutputHolder();
Txs:AVMTxAPIHolder = new AVMTxAPIHolder();
Types:AVMTypesHolder = new AVMTypesHolder();
UTXOs:AVMUTXOHolder = new AVMUTXOHolder();
PersistanceOpts = PersistanceOptions;
constructor(){
super(AVMAPI);
}
};
class PlatformMiddleware extends APIMiddleware<PlatformAPI> {
constructor(){
super(PlatformAPI);
}
};
class KeystoreAPIMiddleware extends APIMiddleware<KeystoreAPI> {
constructor(){
super(KeystoreAPI);
}
};
/**
* TypesLib contains references to all the classes and types used in this middleware.
* The constructor for the API class is listed in the API variable.
* In most situations it does not make sense to go through these classes directly.
*
* Example:
* ```js
* let Keystore = TypesLibrary.KeystoreAPI.API;
* let AVMKeyChain = TypesLibrary.AVM.KeyChain;
* let AVMUTXOSet = TypesLibrary.AVM.UTXOs.UTXOSet;
* ```
*/
class TypesLib {
/**
* Reference to the AdminAPI classes.
*/
Admin:AdminMiddleware = new AdminMiddleware();
/**
* Reference to the AVMAPI classes.
*/
AVM:AVMMiddleware = new AVMMiddleware();
/**
* Reference to the PlatformAPI classes.
*/
Platform:PlatformMiddleware = new PlatformMiddleware();
/**
* Reference to the KeystoreAPI classes.
*/
Keystore:KeystoreAPIMiddleware = new KeystoreAPIMiddleware();
/**
* Reference to the DB classes.
*/
DB:DB = DB.getInstance();
/**
* Reference to the BinTools singleton.
*/
BinTools:BinTools = BinTools.getInstance();
/**
* Reference to the Slopes core's types.
*/
CoreTypes:CoreTypesHolder = new CoreTypesHolder();
/**
* Returns instance of [[TypesLib]].
*/
constructor() {}
}
const TypesLibrary:TypesLib = new TypesLib();
export {TypesLibrary};
export {BinTools};

@@ -211,0 +71,0 @@ export {DB};

import mockAxios from 'jest-mock-axios';
import { Slopes, TypesLibrary } from "src";
import { Slopes } from "src";
import AVMAPI from "src/apis/avm/api";

@@ -29,13 +29,13 @@ import AdminAPI from "src/apis/admin/api";

test('Endpoints correct', () => {
expect(slopes.Admin()).not.toBeInstanceOf(TypesLibrary.AVM.API);
expect(slopes.Admin()).toBeInstanceOf(TypesLibrary.Admin.API);
expect(slopes.Admin()).not.toBeInstanceOf(AVMAPI);
expect(slopes.Admin()).toBeInstanceOf(AdminAPI);
expect(slopes.AVM()).not.toBeInstanceOf(TypesLibrary.Admin.API);
expect(slopes.AVM()).toBeInstanceOf(TypesLibrary.AVM.API);
expect(slopes.AVM()).not.toBeInstanceOf(AdminAPI);
expect(slopes.AVM()).toBeInstanceOf(AVMAPI);
expect(slopes.Platform()).not.toBeInstanceOf(TypesLibrary.Keystore.API);
expect(slopes.Platform()).toBeInstanceOf(TypesLibrary.Platform.API);
expect(slopes.Platform()).not.toBeInstanceOf(KeystoreAPI);
expect(slopes.Platform()).toBeInstanceOf(PlatformAPI);
expect(slopes.NodeKeys()).not.toBeInstanceOf(TypesLibrary.Platform.API);
expect(slopes.NodeKeys()).toBeInstanceOf(TypesLibrary.Keystore.API);
expect(slopes.NodeKeys()).not.toBeInstanceOf(PlatformAPI);
expect(slopes.NodeKeys()).toBeInstanceOf(KeystoreAPI);

@@ -42,0 +42,0 @@ expect(slopes.Admin().getRPCID()).toBe(1);

@@ -138,3 +138,3 @@ /**

*/
issueTx: (tx: string | Tx | Buffer) => Promise<string>;
issueTx: (tx: string | Buffer | Tx) => Promise<string>;
/**

@@ -141,0 +141,0 @@ * This class should not be instantiated directly. Instead use the [[Slopes.addAPI]] method.

@@ -12,9 +12,2 @@ /**

import DB from './utils/db';
import * as AVMAPITxAPI from './apis/avm/tx';
import * as AVMAPIUTXOAPI from './apis/avm/utxos';
import * as AVMAPITypes from './apis/avm/types';
import * as AVMAPIOutputs from './apis/avm/outputs';
import * as AVMAPIInput from './apis/avm/inputs';
import * as AVMAPIKeyChain from './apis/avm/keychain';
import { PersistanceOptions } from './apis/avm/api';
/**

@@ -55,112 +48,2 @@ * Slopes is middleware for interacting with AVA node RPC APIs.

}
declare class CoreTypesHolder {
RequestResponseData: typeof CoreTypes.RequestResponseData;
API: typeof CoreTypes.APIBase;
JRPCAPI: typeof CoreTypes.JRPCAPI;
constructor();
}
declare class AVMInputHolder {
Input: typeof AVMAPIInput.Input;
constructor();
}
declare class AVMKeysHolder {
AVMKeyPair: typeof AVMAPIKeyChain.AVMKeyPair;
AVMKeyChain: typeof AVMAPIKeyChain.AVMKeyChain;
constructor();
}
declare class AVMOutputHolder {
Output: typeof AVMAPIOutputs.Output;
OutPayment: typeof AVMAPIOutputs.OutPayment;
OutTakeOrLeave: typeof AVMAPIOutputs.OutTakeOrLeave;
OutCreateAsset: typeof AVMAPIOutputs.OutCreateAsset;
constructor();
}
declare class AVMTxAPIHolder {
Tx: typeof AVMAPITxAPI.Tx;
TxUnsigned: typeof AVMAPITxAPI.TxUnsigned;
constructor();
}
declare class AVMTypesHolder {
Address: typeof AVMAPITypes.Address;
Signature: typeof AVMAPITypes.Signature;
SigIdx: typeof AVMAPITypes.SigIdx;
UnixNow: typeof AVMAPITypes.UnixNow;
constructor();
}
declare class AVMUTXOHolder {
UTXO: typeof AVMAPIUTXOAPI.UTXO;
UTXOSet: typeof AVMAPIUTXOAPI.UTXOSet;
constructor();
}
declare class APIMiddleware<GE extends CoreTypes.APIBase> {
API: new (core: SlopesCore) => GE;
constructor(constructorFN: new (core: SlopesCore) => GE);
}
declare class AdminMiddleware extends APIMiddleware<AdminAPI> {
constructor();
}
declare class AVMMiddleware extends APIMiddleware<AVMAPI> {
Inputs: AVMInputHolder;
Keys: AVMKeysHolder;
Outputs: AVMOutputHolder;
Txs: AVMTxAPIHolder;
Types: AVMTypesHolder;
UTXOs: AVMUTXOHolder;
PersistanceOpts: typeof PersistanceOptions;
constructor();
}
declare class PlatformMiddleware extends APIMiddleware<PlatformAPI> {
constructor();
}
declare class KeystoreAPIMiddleware extends APIMiddleware<KeystoreAPI> {
constructor();
}
/**
* TypesLib contains references to all the classes and types used in this middleware.
* The constructor for the API class is listed in the API variable.
* In most situations it does not make sense to go through these classes directly.
*
* Example:
* ```js
* let Keystore = TypesLibrary.KeystoreAPI.API;
* let AVMKeyChain = TypesLibrary.AVM.KeyChain;
* let AVMUTXOSet = TypesLibrary.AVM.UTXOs.UTXOSet;
* ```
*/
declare class TypesLib {
/**
* Reference to the AdminAPI classes.
*/
Admin: AdminMiddleware;
/**
* Reference to the AVMAPI classes.
*/
AVM: AVMMiddleware;
/**
* Reference to the PlatformAPI classes.
*/
Platform: PlatformMiddleware;
/**
* Reference to the KeystoreAPI classes.
*/
Keystore: KeystoreAPIMiddleware;
/**
* Reference to the DB classes.
*/
DB: DB;
/**
* Reference to the BinTools singleton.
*/
BinTools: BinTools;
/**
* Reference to the Slopes core's types.
*/
CoreTypes: CoreTypesHolder;
/**
* Returns instance of [[TypesLib]].
*/
constructor();
}
declare const TypesLibrary: TypesLib;
export { TypesLibrary };
export { BinTools };

@@ -167,0 +50,0 @@ export { DB };

@@ -35,9 +35,2 @@ "use strict";

exports.DB = db_1.default;
const AVMAPITxAPI = __importStar(require("./apis/avm/tx"));
const AVMAPIUTXOAPI = __importStar(require("./apis/avm/utxos"));
const AVMAPITypes = __importStar(require("./apis/avm/types"));
const AVMAPIOutputs = __importStar(require("./apis/avm/outputs"));
const AVMAPIInput = __importStar(require("./apis/avm/inputs"));
const AVMAPIKeyChain = __importStar(require("./apis/avm/keychain"));
const api_5 = require("./apis/avm/api");
/**

@@ -93,133 +86,2 @@ * Slopes is middleware for interacting with AVA node RPC APIs.

exports.Slopes = Slopes;
class CoreTypesHolder {
constructor() {
this.RequestResponseData = CoreTypes.RequestResponseData;
this.API = CoreTypes.APIBase;
this.JRPCAPI = CoreTypes.JRPCAPI;
}
}
class AVMInputHolder {
constructor() {
this.Input = AVMAPIInput.Input;
}
}
class AVMKeysHolder {
constructor() {
this.AVMKeyPair = AVMAPIKeyChain.AVMKeyPair;
this.AVMKeyChain = AVMAPIKeyChain.AVMKeyChain;
}
}
class AVMOutputHolder {
constructor() {
this.Output = AVMAPIOutputs.Output;
this.OutPayment = AVMAPIOutputs.OutPayment;
this.OutTakeOrLeave = AVMAPIOutputs.OutTakeOrLeave;
this.OutCreateAsset = AVMAPIOutputs.OutCreateAsset;
}
}
class AVMTxAPIHolder {
constructor() {
this.Tx = AVMAPITxAPI.Tx;
this.TxUnsigned = AVMAPITxAPI.TxUnsigned;
}
}
class AVMTypesHolder {
constructor() {
this.Address = AVMAPITypes.Address;
this.Signature = AVMAPITypes.Signature;
this.SigIdx = AVMAPITypes.SigIdx;
this.UnixNow = AVMAPITypes.UnixNow;
}
}
class AVMUTXOHolder {
constructor() {
this.UTXO = AVMAPIUTXOAPI.UTXO;
this.UTXOSet = AVMAPIUTXOAPI.UTXOSet;
}
}
class APIMiddleware {
constructor(constructorFN) {
this.API = constructorFN;
}
}
class AdminMiddleware extends APIMiddleware {
constructor() {
super(api_4.default);
}
}
;
class AVMMiddleware extends APIMiddleware {
constructor() {
super(api_3.default);
this.Inputs = new AVMInputHolder();
this.Keys = new AVMKeysHolder();
this.Outputs = new AVMOutputHolder();
this.Txs = new AVMTxAPIHolder();
this.Types = new AVMTypesHolder();
this.UTXOs = new AVMUTXOHolder();
this.PersistanceOpts = api_5.PersistanceOptions;
}
}
;
class PlatformMiddleware extends APIMiddleware {
constructor() {
super(api_2.default);
}
}
;
class KeystoreAPIMiddleware extends APIMiddleware {
constructor() {
super(api_1.default);
}
}
;
/**
* TypesLib contains references to all the classes and types used in this middleware.
* The constructor for the API class is listed in the API variable.
* In most situations it does not make sense to go through these classes directly.
*
* Example:
* ```js
* let Keystore = TypesLibrary.KeystoreAPI.API;
* let AVMKeyChain = TypesLibrary.AVM.KeyChain;
* let AVMUTXOSet = TypesLibrary.AVM.UTXOs.UTXOSet;
* ```
*/
class TypesLib {
/**
* Returns instance of [[TypesLib]].
*/
constructor() {
/**
* Reference to the AdminAPI classes.
*/
this.Admin = new AdminMiddleware();
/**
* Reference to the AVMAPI classes.
*/
this.AVM = new AVMMiddleware();
/**
* Reference to the PlatformAPI classes.
*/
this.Platform = new PlatformMiddleware();
/**
* Reference to the KeystoreAPI classes.
*/
this.Keystore = new KeystoreAPIMiddleware();
/**
* Reference to the DB classes.
*/
this.DB = db_1.default.getInstance();
/**
* Reference to the BinTools singleton.
*/
this.BinTools = bintools_1.default.getInstance();
/**
* Reference to the Slopes core's types.
*/
this.CoreTypes = new CoreTypesHolder();
}
}
const TypesLibrary = new TypesLib();
exports.TypesLibrary = TypesLibrary;
__export(require("./slopes"));

@@ -255,2 +117,2 @@ __export(require("./apis/keystore/api"));

exports.AVMKeyChain = keychain_1.AVMKeyChain;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7O0dBRUc7QUFDSCxzREFBa0M7QUErTTFCLHFCQS9NRCxnQkFBVSxDQStNQztBQTlNbEIsOERBQThDO0FBaU92QixtQkFqT2hCLGFBQVcsQ0FpT2E7QUFoTy9CLDhEQUE4QztBQWlPdkIsbUJBak9oQixhQUFXLENBaU9hO0FBaE8vQix5REFBb0M7QUE4TmxCLGNBOU5YLGFBQU0sQ0E4TlE7QUE3TnJCLDJEQUF3QztBQWdPcEIsZ0JBaE9iLGFBQVEsQ0FnT1U7QUEvTnpCLHlEQUEyQztBQXlNbkMsOEJBQVM7QUF4TWpCLGdFQUF3QztBQXNNaEMsbUJBdE1ELGtCQUFRLENBc01DO0FBck1oQixvREFBNEI7QUFzTXBCLGFBdE1ELFlBQUUsQ0FzTUM7QUFwTVYsMkRBQTZDO0FBQzdDLGdFQUFrRDtBQUNsRCw4REFBZ0Q7QUFDaEQsa0VBQW9EO0FBQ3BELCtEQUFpRDtBQUNqRCxvRUFBc0Q7QUFDdEQsd0NBQW9EO0FBRXBEOzs7Ozs7OztHQVFHO0FBQ0gsTUFBYSxNQUFPLFNBQVEsZ0JBQVU7SUE4QmxDOzs7Ozs7T0FNRztJQUNILFlBQVksRUFBUyxFQUFFLElBQVcsRUFBRSxXQUFrQixNQUFNO1FBQ3hELEtBQUssQ0FBQyxFQUFFLEVBQUUsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBcEM5Qjs7V0FFRztRQUNILFVBQUssR0FBRyxHQUFHLEVBQUU7WUFDVCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFhLENBQUM7UUFDMUMsQ0FBQyxDQUFBO1FBRUQ7O1dBRUc7UUFDSCxRQUFHLEdBQUcsR0FBRyxFQUFFO1lBQ1AsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBVyxDQUFDO1FBQ3RDLENBQUMsQ0FBQTtRQUVEOztXQUVHO1FBQ0gsYUFBUSxHQUFHLEdBQUcs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RCx5QkFBQSxNQUFNLENBQUE7QUFBRSw0QkFBQSxTQUFTLENBQUE7QUFBRSwwQkFBQSxPQUFPLENBQUE7QUFBRSwwQkFBQSxPQUFPLENBQUE7QUFDM0MsOENBQXlHO0FBQWpHLG1DQUFBLGNBQWMsQ0FBQTtBQUFFLCtCQUFBLFVBQVUsQ0FBQTtBQUFFLG1DQUFBLGNBQWMsQ0FBQTtBQUFFLDJCQUFBLE1BQU0sQ0FBQTtBQUFFLHNDQUFBLGlCQUFpQixDQUFBO0FBQzdFLDRDQUF3QztBQUFoQyx5QkFBQSxLQUFLLENBQUE7QUFDYixnREFBNEQ7QUFBcEQsZ0NBQUEsVUFBVSxDQUFBO0FBQUUsaUNBQUEsV0FBVyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbW9kdWxlIFNsb3Blc1xuICovXG5pbXBvcnQgU2xvcGVzQ29yZSBmcm9tICcuL3Nsb3Blcyc7XG5pbXBvcnQgS2V5c3RvcmVBUEkgZnJvbSAnLi9hcGlzL2tleXN0b3JlL2FwaSc7XG5pbXBvcnQgUGxhdGZvcm1BUEkgZnJvbSAnLi9hcGlzL3BsYXRmb3JtL2FwaSc7XG5pbXBvcnQgQVZNQVBJIGZyb20gJy4vYXBpcy9hdm0vYXBpJztcbmltcG9ydCBBZG1pbkFQSSBmcm9tICcuL2FwaXMvYWRtaW4vYXBpJztcbmltcG9ydCAqIGFzIENvcmVUeXBlcyBmcm9tICcuL3V0aWxzL3R5cGVzJztcbmltcG9ydCBCaW5Ub29scyBmcm9tICcuL3V0aWxzL2JpbnRvb2xzJztcbmltcG9ydCBEQiBmcm9tICcuL3V0aWxzL2RiJztcblxuaW1wb3J0ICogYXMgQVZNQVBJVHhBUEkgZnJvbSAnLi9hcGlzL2F2bS90eCc7XHRcbmltcG9ydCAqIGFzIEFWTUFQSVVUWE9BUEkgZnJvbSAnLi9hcGlzL2F2bS91dHhvcyc7XHRcbmltcG9ydCAqIGFzIEFWTUFQSVR5cGVzIGZyb20gJy4vYXBpcy9hdm0vdHlwZXMnO1x0XG5pbXBvcnQgKiBhcyBBVk1BUElPdXRwdXRzIGZyb20gJy4vYXBpcy9hdm0vb3V0cHV0cyc7XHRcbmltcG9ydCAqIGFzIEFWTUFQSUlucHV0IGZyb20gJy4vYXBpcy9hdm0vaW5wdXRzJztcdFxuaW1wb3J0ICogYXMgQVZNQVBJS2V5Q2hhaW4gZnJvbSAnLi9hcGlzL2F2bS9rZXljaGFpbic7XG5pbXBvcnQgeyBQZXJzaXN0YW5jZU9wdGlvbnMgfSBmcm9tICcuL2FwaXMvYXZtL2FwaSc7XG5cbi8qKlxuICogU2xvcGVzIGlzIG1pZGRsZXdhcmUgZm9yIGludGVyYWN0aW5nIHdpdGggQVZBIG5vZGUgUlBDIEFQSXMuIFxuICogXG4gKiBFeGFtcGxlIHVzYWdlOlxuICogYGBganNcbiAqIGxldCBzbG9wZXMgPSBuZXcgU2xvcGVzKFwiMTI3LjAuMC4xXCIsIDk2NTAsIFwiaHR0cHNcIik7XG4gKiBgYGBcbiAqIFxuICovXG5leHBvcnQgY2xhc3MgU2xvcGVzIGV4dGVuZHMgU2xvcGVzQ29yZSB7XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGEgcmVmZXJlbmNlIHRvIHRoZSBBZG1pbiBSUEMuXG4gICAgICovXG4gICAgQWRtaW4gPSAoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmFwaXNbXCJhZG1pblwiXSBhcyBBZG1pbkFQSTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGEgcmVmZXJlbmNlIHRvIHRoZSBBVk0gUlBDLlxuICAgICAqL1xuICAgIEFWTSA9ICgpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXBpc1tcImF2bVwiXSBhcyBBVk1BUEk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyBhIHJlZmVyZW5jZSB0byB0aGUgUGxhdGZvcm0gUlBDLlxuICAgICAqL1xuICAgIFBsYXRmb3JtID0gKCkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5hcGlzW1wicGxhdGZvcm1cIl0gYXMgUGxhdGZvcm1BUEk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyBhIHJlZmVyZW5jZSB0byB0aGUgS2V5c3RvcmUgUlBDIGZvciBhIG5vZGUuIFdlIGxhYmVsIGl0IFwiTm9kZUtleXNcIiB0byByZWR1Y2UgY29uZnVzaW9uIGFib3V0IHdoYXQgaXQncyBhY2Nlc3NpbmcuXG4gICAgICovXG4gICAgTm9kZUtleXMgPSAoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmFwaXNbXCJrZXlzdG9yZVwiXSBhcyBLZXlzdG9yZUFQSTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgbmV3IEFWQSBpbnN0YW5jZS4gU2V0cyB0aGUgYWRkcmVzcyBhbmQgcG9ydCBvZiB0aGUgbWFpbiBBVkEgQ2xpZW50LlxuICAgICAqIFxuICAgICAqIEBwYXJhbSBpcCBUaGUgaG9zdG5hbWUgdG8gcmVzb2x2ZSB0byByZWFjaCB0aGUgQVZBIENsaWVudCBSUEMgQVBJc1xuICAgICAqIEBwYXJhbSBwb3J0IFRoZSBwb3J0IHRvIHJlb2x2ZSB0byByZWFjaCB0aGUgQVZBIENsaWVudCBSUEMgQVBJc1xuICAgICAqIEBwYXJhbSBwcm90b2NvbCBUaGUgcHJvdG9jb2wgc3RyaW5nIHRvIHVzZSBiZWZvcmUgYSBcIjovL1wiIGluIGEgcmVxdWVzdCwgZXg6IFwiaHR0cFwiLCBcImh0dHBzXCIsIFwiZ2l0XCIsIFwid3NcIiwgZXRjIC4uLlxuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKGlwOnN0cmluZywgcG9ydDpudW1iZXIsIHByb3RvY29sOnN0cmluZyA9IFwiaHR0cFwiKSB7XG4gICAgICAgIHN1cGVyKGlwLCBwb3J0LCBwcm90b2NvbCk7XG4gICAgICAgIHRoaXMuYWRkQVBJKFwiYWRtaW5cIiwgQWRtaW5BUEkpO1xuICAgICAgICB0aGlzLmFkZEFQSShcImF2bVwiLCBBVk1BUEkpO1xuICAgICAgICB0aGlzLmFkZEFQSShcInBsYXRmb3JtXCIsIFBsYXRmb3JtQVBJKTtcbiAgICAgICAgdGhpcy5hZGRBUEkoXCJrZXlzdG9yZVwiLCBLZXlzdG9yZUFQSSk7XG4gICAgfVxufVxuXG5jbGFzcyBDb3JlVHlwZXNIb2xkZXIge1x0XG4gICAgUmVxdWVzdFJlc3BvbnNlRGF0YSA9IENvcmVUeXBlcy5SZXF1ZXN0UmVzcG9uc2VEYXRhO1x0XG4gICAgQVBJID0gQ29yZVR5cGVzLkFQSUJhc2U7XHRcbiAgICBKUlBDQVBJID0gQ29yZVR5cGVzLkpSUENBUEk7XHRcbiAgICBjb25zdHJ1Y3RvcigpIHt9XHRcbn1cdFxuXG5jbGFzcyBBVk1JbnB1dEhvbGRlciB7XHRcbiAgICBJbnB1dCA9IEFWTUFQSUlucHV0LklucHV0O1x0XG4gICAgY29uc3RydWN0b3IoKSB7fVx0XG59XHRcblxuY2xhc3MgQVZNS2V5c0hvbGRlciB7XHRcbiAgICBBVk1LZXlQYWlyID0gQVZNQVBJS2V5Q2hhaW4uQVZNS2V5UGFpcjtcdFxuICAgIEFWTUtleUNoYWluID0gQVZNQVBJS2V5Q2hhaW4uQVZNS2V5Q2hhaW47XHRcbiAgICBjb25zdHJ1Y3RvcigpIHt9XHRcbn1cdFxuXG5jbGFzcyBBVk1PdXRwdXRIb2xkZXIge1x0XG4gICAgT3V0cHV0ID0gQVZNQVBJT3V0cHV0cy5PdXRwdXQ7XHRcbiAgICBPdXRQYXltZW50ID0gQVZNQVBJT3V0cHV0cy5PdXRQYXltZW50O1x0XG4gICAgT3V0VGFrZU9yTGVhdmUgPSBBVk1BUElPdXRwdXRzLk91dFRha2VPckxlYXZlO1xuICAgIE91dENyZWF0ZUFzc2V0ID0gQVZNQVBJT3V0cHV0cy5PdXRDcmVhdGVBc3NldDtcdFxuICAgIGNvbnN0cnVjdG9yKCkge31cdFxufVx0XG5cbmNsYXNzIEFWTVR4QVBJSG9sZGVyIHtcdFxuICAgIFR4ID0gQVZNQVBJVHhBUEkuVHg7XHRcbiAgICBUeFVuc2lnbmVkID0gQVZNQVBJVHhBUEkuVHhVbnNpZ25lZDtcdFxuICAgIGNvbnN0cnVjdG9yKCkge31cdFxufVx0XG5cbmNsYXNzIEFWTVR5cGVzSG9sZGVyIHtcdFxuICAgIEFkZHJlc3MgPSBBVk1BUElUeXBlcy5BZGRyZXNzO1x0XG4gICAgU2lnbmF0dXJlID0gQVZNQVBJVHlwZXMuU2lnbmF0dXJlO1x0XG4gICAgU2lnSWR4ID0gQVZNQVBJVHlwZXMuU2lnSWR4O1xuICAgIFVuaXhOb3cgPSBBVk1BUElUeXBlcy5Vbml4Tm93O1xuICAgIGNvbnN0cnVjdG9yKCkge31cdFxufVx0XG5cbmNsYXNzIEFWTVVUWE9Ib2xkZXIge1x0XG4gICAgVVRYTyA9IEFWTUFQSVVUWE9BUEkuVVRYTztcdFxuICAgIFVUWE9TZXQgPSBBVk1BUElVVFhPQVBJLlVUWE9TZXQ7XHRcbiAgICBjb25zdHJ1Y3RvcigpIHt9XHRcbn1cdFxuXG5jbGFzcyBBUElNaWRkbGV3YXJlPEdFIGV4dGVuZHMgQ29yZVR5cGVzLkFQSUJhc2U+IHtcdFxuICAgIEFQSTogbmV3KGNvcmU6U2xvcGVzQ29yZSkgPT4gR0U7XHRcbiAgICBjb25zdHJ1Y3Rvcihjb25zdHJ1Y3RvckZOOiBuZXcoY29yZTpTbG9wZXNDb3JlKSA9PiBHRSl7XHRcbiAgICAgICAgdGhpcy5BUEkgPSBjb25zdHJ1Y3RvckZOO1x0XG4gICAgfVx0XG59XHRcblxuY2xhc3MgQWRtaW5NaWRkbGV3YXJlIGV4dGVuZHMgQVBJTWlkZGxld2FyZTxBZG1pbkFQST4ge1x0XG4gICAgY29uc3RydWN0b3IoKXtcdFxuICAgICAgICBzdXBlcihBZG1pbkFQSSk7XHRcbiAgICB9XHRcbn07XHRcbmNsYXNzIEFWTU1pZGRsZXdhcmUgZXh0ZW5kcyBBUElNaWRkbGV3YXJlPEFWTUFQST4ge1x0XG4gICAgSW5wdXRzOkFWTUlucHV0SG9sZGVyID0gbmV3IEFWTUlucHV0SG9sZGVyKCk7XHRcbiAgICBLZXlzOkFWTUtleXNIb2xkZXIgPSBuZXcgQVZNS2V5c0hvbGRlcigpO1x0XG4gICAgT3V0cHV0czpBVk1PdXRwdXRIb2xkZXIgPSBuZXcgQVZNT3V0cHV0SG9sZGVyKCk7XHRcbiAgICBUeHM6QVZNVHhBUElIb2xkZXIgPSBuZXcgQVZNVHhBUElIb2xkZXIoKTtcdFxuICAgIFR5cGVzOkFWTVR5cGVzSG9sZGVyID0gbmV3IEFWTVR5cGVzSG9sZGVyKCk7XHRcbiAgICBVVFhPczpBVk1VVFhPSG9sZGVyID0gbmV3IEFWTVVUWE9Ib2xkZXIoKTtcbiAgICBQZXJzaXN0YW5jZU9wdHMgPSBQZXJzaXN0YW5jZU9wdGlvbnM7XG4gICAgY29uc3RydWN0b3IoKXtcdFxuICAgICAgICBzdXBlcihBVk1BUEkpO1x0XG4gICAgfVx0XG59O1x0XG5jbGFzcyBQbGF0Zm9ybU1pZGRsZXdhcmUgZXh0ZW5kcyBBUElNaWRkbGV3YXJlPFBsYXRmb3JtQVBJPiB7XHRcbiAgICBjb25zdHJ1Y3Rvcigpe1x0XG4gICAgICAgIHN1cGVyKFBsYXRmb3JtQVBJKTtcdFxuICAgIH1cdFxufTtcdFxuY2xhc3MgS2V5c3RvcmVBUElNaWRkbGV3YXJlIGV4dGVuZHMgQVBJTWlkZGxld2FyZTxLZXlzdG9yZUFQST4ge1x0XG4gICAgY29uc3RydWN0b3IoKXtcdFxuICAgICAgICBzdXBlcihLZXlzdG9yZUFQSSk7XHRcbiAgICB9XHRcbn07XHRcblxuLyoqXHRcbiAqIFR5cGVzTGliIGNvbnRhaW5zIHJlZmVyZW5jZXMgdG8gYWxsIHRoZSBjbGFzc2VzIGFuZCB0eXBlcyB1c2VkIGluIHRoaXMgbWlkZGxld2FyZS5cdFxuICogVGhlIGNvbnN0cnVjdG9yIGZvciB0aGUgQVBJIGNsYXNzIGlzIGxpc3RlZCBpbiB0aGUgQVBJIHZhcmlhYmxlLiBcdFxuICogSW4gbW9zdCBzaXR1YXRpb25zIGl0IGRvZXMgbm90IG1ha2Ugc2Vuc2UgdG8gZ28gdGhyb3VnaCB0aGVzZSBjbGFzc2VzIGRpcmVjdGx5Llx0XG4gKiBcdFxuICogRXhhbXBsZTpcdFxuICogYGBganNcdFxuICogbGV0IEtleXN0b3JlID0gVHlwZXNMaWJyYXJ5LktleXN0b3JlQVBJLkFQSTtcdFxuICogbGV0IEFWTUtleUNoYWluID0gVHlwZXNMaWJyYXJ5LkFWTS5LZXlDaGFpbjtcdFxuICogbGV0IEFWTVVUWE9TZXQgPSBUeXBlc0xpYnJhcnkuQVZNLlVUWE9zLlVUWE9TZXQ7XHRcbiAqIGBgYFx0XG4gKi9cdFxuY2xhc3MgVHlwZXNMaWIge1x0XG4gICAgLyoqXHRcbiAgICAgKiBSZWZlcmVuY2UgdG8gdGhlIEFkbWluQVBJIGNsYXNzZXMuXHRcbiAgICAgKi9cdFxuICAgIEFkbWluOkFkbWluTWlkZGxld2FyZSA9IG5ldyBBZG1pbk1pZGRsZXdhcmUoKTtcdFxuICAgIC8qKlx0XG4gICAgICogUmVmZXJlbmNlIHRvIHRoZSBBVk1BUEkgY2xhc3Nlcy5cdFxuICAgICAqL1x0XG4gICAgQVZNOkFWTU1pZGRsZXdhcmUgPSBuZXcgQVZNTWlkZGxld2FyZSgpO1x0XG4gICAgLyoqXHRcbiAgICAgKiBSZWZlcmVuY2UgdG8gdGhlIFBsYXRmb3JtQVBJIGNsYXNzZXMuXHRcbiAgICAgKi9cdFxuICAgIFBsYXRmb3JtOlBsYXRmb3JtTWlkZGxld2FyZSA9IG5ldyBQbGF0Zm9ybU1pZGRsZXdhcmUoKTtcdFxuICAgIC8qKlx0XG4gICAgICogUmVmZXJlbmNlIHRvIHRoZSBLZXlzdG9yZUFQSSBjbGFzc2VzLlx0XG4gICAgICovXHRcbiAgICBLZXlzdG9yZTpLZXlzdG9yZUFQSU1pZGRsZXdhcmUgPSBuZXcgS2V5c3RvcmVBUElNaWRkbGV3YXJlKCk7XHRcbiAgICAvKipcdFxuICAgICAqIFJlZmVyZW5jZSB0byB0aGUgREIgY2xhc3Nlcy5cdFxuICAgICAqL1x0XG4gICAgREI6REIgPSBEQi5nZXRJbnN0YW5jZSgpO1x0XG4gICAgLyoqXHRcbiAgICAgKiBSZWZlcmVuY2UgdG8gdGhlIEJpblRvb2xzIHNpbmdsZXRvbi5cdFxuICAgICAqL1x0XG4gICAgQmluVG9vbHM6QmluVG9vbHMgPSBCaW5Ub29scy5nZXRJbnN0YW5jZSgpO1x0XG4gICAgLyoqXHRcbiAgICAgKiBSZWZlcmVuY2UgdG8gdGhlIFNsb3BlcyBjb3JlJ3MgdHlwZXMuXHRcbiAgICAgKi9cdFxuICAgIENvcmVUeXBlczpDb3JlVHlwZXNIb2xkZXIgPSBuZXcgQ29yZVR5cGVzSG9sZGVyKCk7XHRcblxuICAgIC8qKlx0XG4gICAgICogUmV0dXJucyBpbnN0YW5jZSBvZiBbW1R5cGVzTGliXV0uXHRcbiAgICAgKi9cdFxuICAgIGNvbnN0cnVjdG9yKCkge31cdFxufVx0XG5cbmNvbnN0IFR5cGVzTGlicmFyeTpUeXBlc0xpYiA9IG5ldyBUeXBlc0xpYigpO1x0XG5leHBvcnQge1R5cGVzTGlicmFyeX07XG5cbmV4cG9ydCB7QmluVG9vbHN9O1xuZXhwb3J0IHtEQn07XG5leHBvcnQge0NvcmVUeXBlc307XG5leHBvcnQge1Nsb3Blc0NvcmV9O1xuXG5leHBvcnQgKiBmcm9tICcuL3Nsb3Blcyc7XG5leHBvcnQgKiBmcm9tICcuL2FwaXMva2V5c3RvcmUvYXBpJztcbmV4cG9ydCAqIGZyb20gJy4vYXBpcy9wbGF0Zm9ybS9hcGknO1xuZXhwb3J0ICogZnJvbSAnLi9hcGlzL2F2bS9hcGknO1xuZXhwb3J0ICogZnJvbSAnLi9hcGlzL2FkbWluL2FwaSc7XG5leHBvcnQgKiBmcm9tICcuL3V0aWxzL3R5cGVzJztcbmV4cG9ydCAqIGZyb20gJy4vdXRpbHMvYmludG9vbHMnO1xuZXhwb3J0ICogZnJvbSAnLi91dGlscy9kYic7XG5cbmV4cG9ydCB7VHgsIFR4VW5zaWduZWR9IGZyb20gJy4vYXBpcy9hdm0vdHgnO1xuZXhwb3J0IHtVVFhPLCBVVFhPU2V0fSBmcm9tICcuL2FwaXMvYXZtL3V0eG9zJztcdFxuZXhwb3J0IHtTaWdJZHgsIFNpZ25hdHVyZSwgVW5peE5vdywgQWRkcmVzc30gZnJvbSAnLi9hcGlzL2F2bS90eXBlcyc7XHRcbmV4cG9ydCB7T3V0Q3JlYXRlQXNzZXQsIE91dFBheW1lbnQsIE91dFRha2VPckxlYXZlLCBPdXRwdXQsIFNlbGVjdE91dHB1dENsYXNzfSBmcm9tICcuL2FwaXMvYXZtL291dHB1dHMnO1x0XG5leHBvcnQge0lucHV0fSBmcm9tICcuL2FwaXMvYXZtL2lucHV0cyc7XHRcbmV4cG9ydCB7QVZNS2V5UGFpciwgQVZNS2V5Q2hhaW59IGZyb20gJy4vYXBpcy9hdm0va2V5Y2hhaW4nO1xuXG5leHBvcnQge0FWTUFQSSBhcyBBVk19O1xuZXhwb3J0IHtLZXlzdG9yZUFQSSBhcyBLZXlzdG9yZX07XG5leHBvcnQge1BsYXRmb3JtQVBJIGFzIFBsYXRmb3JtfTtcbmV4cG9ydCB7QWRtaW5BUEkgYXMgQWRtaW59O1xuXG5cbiJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7O0dBRUc7QUFDSCxzREFBa0M7QUFtRTFCLHFCQW5FRCxnQkFBVSxDQW1FQztBQWxFbEIsOERBQThDO0FBcUZ2QixtQkFyRmhCLGFBQVcsQ0FxRmE7QUFwRi9CLDhEQUE4QztBQXFGdkIsbUJBckZoQixhQUFXLENBcUZhO0FBcEYvQix5REFBb0M7QUFrRmxCLGNBbEZYLGFBQU0sQ0FrRlE7QUFqRnJCLDJEQUF3QztBQW9GcEIsZ0JBcEZiLGFBQVEsQ0FvRlU7QUFuRnpCLHlEQUEyQztBQTZEbkMsOEJBQVM7QUE1RGpCLGdFQUF3QztBQTBEaEMsbUJBMURELGtCQUFRLENBMERDO0FBekRoQixvREFBNEI7QUEwRHBCLGFBMURELFlBQUUsQ0EwREM7QUF4RFY7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFhLE1BQU8sU0FBUSxnQkFBVTtJQThCbEM7Ozs7OztPQU1HO0lBQ0gsWUFBWSxFQUFTLEVBQUUsSUFBVyxFQUFFLFdBQWtCLE1BQU07UUFDeEQsS0FBSyxDQUFDLEVBQUUsRUFBRSxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFwQzlCOztXQUVHO1FBQ0gsVUFBSyxHQUFHLEdBQUcsRUFBRTtZQUNULE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQWEsQ0FBQztRQUMxQyxDQUFDLENBQUE7UUFFRDs7V0FFRztRQUNILFFBQUcsR0FBRyxHQUFHLEVBQUU7WUFDUCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFXLENBQUM7UUFDdEMsQ0FBQyxDQUFBO1FBRUQ7O1dBRUc7UUFDSCxhQUFRLEdBQUcsR0FBRyxFQUFFO1lBQ1osT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBZ0IsQ0FBQztRQUNoRCxDQUFDLENBQUE7UUFFRDs7V0FFRztRQUNILGFBQVEsR0FBRyxHQUFHLEVBQUU7WUFDWixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFnQixDQUFDO1FBQ2hELENBQUMsQ0FBQTtRQVdHLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLGFBQVEsQ0FBQyxDQUFDO1FBQy9CLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLGFBQU0sQ0FBQyxDQUFDO1FBQzNCLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLGFBQVcsQ0FBQyxDQUFDO1FBQ3JDLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLGFBQVcsQ0FBQyxDQUFDO0lBQ3pDLENBQUM7Q0FDSjtBQTVDRCx3QkE0Q0M7QUFPRCw4QkFBeUI7QUFDekIseUNBQW9DO0FBQ3BDLHlDQUFvQztBQUNwQyxvQ0FBK0I7QUFDL0Isc0NBQWlDO0FBQ2pDLG1DQUE4QjtBQUM5QixzQ0FBaUM7QUFDakMsZ0NBQTJCO0FBRTNCLG9DQUE2QztBQUFyQyxrQkFBQSxFQUFFLENBQUE7QUFBRSwwQkFBQSxVQUFVLENBQUE7QUFDdEIsMENBQStDO0FBQXZDLHVCQUFBLElBQUksQ0FBQTtBQUFFLDBCQUFBLE9BQU8sQ0FBQTtBQUNyQiwwQ0FBcUU7QUFBN0QseUJBQUEsTUFBTSxDQUFBO0FBQUUsNEJBQUEsU0FBUyxDQUFBO0FBQUUsMEJBQUEsT0FBTyxDQUFBO0FBQUUsMEJBQUEsT0FBTyxDQUFBO0FBQzNDLDhDQUF5RztBQUFqRyxtQ0FBQSxjQUFjLENBQUE7QUFBRSwrQkFBQSxVQUFVLENBQUE7QUFBRSxtQ0FBQSxjQUFjLENBQUE7QUFBRSwyQkFBQSxNQUFNLENBQUE7QUFBRSxzQ0FBQSxpQkFBaUIsQ0FBQTtBQUM3RSw0Q0FBd0M7QUFBaEMseUJBQUEsS0FBSyxDQUFBO0FBQ2IsZ0RBQTREO0FBQXBELGdDQUFBLFVBQVUsQ0FBQTtBQUFFLGlDQUFBLFdBQVcsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQG1vZHVsZSBTbG9wZXNcbiAqL1xuaW1wb3J0IFNsb3Blc0NvcmUgZnJvbSAnLi9zbG9wZXMnO1xuaW1wb3J0IEtleXN0b3JlQVBJIGZyb20gJy4vYXBpcy9rZXlzdG9yZS9hcGknO1xuaW1wb3J0IFBsYXRmb3JtQVBJIGZyb20gJy4vYXBpcy9wbGF0Zm9ybS9hcGknO1xuaW1wb3J0IEFWTUFQSSBmcm9tICcuL2FwaXMvYXZtL2FwaSc7XG5pbXBvcnQgQWRtaW5BUEkgZnJvbSAnLi9hcGlzL2FkbWluL2FwaSc7XG5pbXBvcnQgKiBhcyBDb3JlVHlwZXMgZnJvbSAnLi91dGlscy90eXBlcyc7XG5pbXBvcnQgQmluVG9vbHMgZnJvbSAnLi91dGlscy9iaW50b29scyc7XG5pbXBvcnQgREIgZnJvbSAnLi91dGlscy9kYic7XG5cbi8qKlxuICogU2xvcGVzIGlzIG1pZGRsZXdhcmUgZm9yIGludGVyYWN0aW5nIHdpdGggQVZBIG5vZGUgUlBDIEFQSXMuIFxuICogXG4gKiBFeGFtcGxlIHVzYWdlOlxuICogYGBganNcbiAqIGxldCBzbG9wZXMgPSBuZXcgU2xvcGVzKFwiMTI3LjAuMC4xXCIsIDk2NTAsIFwiaHR0cHNcIik7XG4gKiBgYGBcbiAqIFxuICovXG5leHBvcnQgY2xhc3MgU2xvcGVzIGV4dGVuZHMgU2xvcGVzQ29yZSB7XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGEgcmVmZXJlbmNlIHRvIHRoZSBBZG1pbiBSUEMuXG4gICAgICovXG4gICAgQWRtaW4gPSAoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmFwaXNbXCJhZG1pblwiXSBhcyBBZG1pbkFQSTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGEgcmVmZXJlbmNlIHRvIHRoZSBBVk0gUlBDLlxuICAgICAqL1xuICAgIEFWTSA9ICgpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXBpc1tcImF2bVwiXSBhcyBBVk1BUEk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyBhIHJlZmVyZW5jZSB0byB0aGUgUGxhdGZvcm0gUlBDLlxuICAgICAqL1xuICAgIFBsYXRmb3JtID0gKCkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5hcGlzW1wicGxhdGZvcm1cIl0gYXMgUGxhdGZvcm1BUEk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyBhIHJlZmVyZW5jZSB0byB0aGUgS2V5c3RvcmUgUlBDIGZvciBhIG5vZGUuIFdlIGxhYmVsIGl0IFwiTm9kZUtleXNcIiB0byByZWR1Y2UgY29uZnVzaW9uIGFib3V0IHdoYXQgaXQncyBhY2Nlc3NpbmcuXG4gICAgICovXG4gICAgTm9kZUtleXMgPSAoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmFwaXNbXCJrZXlzdG9yZVwiXSBhcyBLZXlzdG9yZUFQSTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgbmV3IEFWQSBpbnN0YW5jZS4gU2V0cyB0aGUgYWRkcmVzcyBhbmQgcG9ydCBvZiB0aGUgbWFpbiBBVkEgQ2xpZW50LlxuICAgICAqIFxuICAgICAqIEBwYXJhbSBpcCBUaGUgaG9zdG5hbWUgdG8gcmVzb2x2ZSB0byByZWFjaCB0aGUgQVZBIENsaWVudCBSUEMgQVBJc1xuICAgICAqIEBwYXJhbSBwb3J0IFRoZSBwb3J0IHRvIHJlb2x2ZSB0byByZWFjaCB0aGUgQVZBIENsaWVudCBSUEMgQVBJc1xuICAgICAqIEBwYXJhbSBwcm90b2NvbCBUaGUgcHJvdG9jb2wgc3RyaW5nIHRvIHVzZSBiZWZvcmUgYSBcIjovL1wiIGluIGEgcmVxdWVzdCwgZXg6IFwiaHR0cFwiLCBcImh0dHBzXCIsIFwiZ2l0XCIsIFwid3NcIiwgZXRjIC4uLlxuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKGlwOnN0cmluZywgcG9ydDpudW1iZXIsIHByb3RvY29sOnN0cmluZyA9IFwiaHR0cFwiKSB7XG4gICAgICAgIHN1cGVyKGlwLCBwb3J0LCBwcm90b2NvbCk7XG4gICAgICAgIHRoaXMuYWRkQVBJKFwiYWRtaW5cIiwgQWRtaW5BUEkpO1xuICAgICAgICB0aGlzLmFkZEFQSShcImF2bVwiLCBBVk1BUEkpO1xuICAgICAgICB0aGlzLmFkZEFQSShcInBsYXRmb3JtXCIsIFBsYXRmb3JtQVBJKTtcbiAgICAgICAgdGhpcy5hZGRBUEkoXCJrZXlzdG9yZVwiLCBLZXlzdG9yZUFQSSk7XG4gICAgfVxufVxuXG5leHBvcnQge0JpblRvb2xzfTtcbmV4cG9ydCB7REJ9O1xuZXhwb3J0IHtDb3JlVHlwZXN9O1xuZXhwb3J0IHtTbG9wZXNDb3JlfTtcblxuZXhwb3J0ICogZnJvbSAnLi9zbG9wZXMnO1xuZXhwb3J0ICogZnJvbSAnLi9hcGlzL2tleXN0b3JlL2FwaSc7XG5leHBvcnQgKiBmcm9tICcuL2FwaXMvcGxhdGZvcm0vYXBpJztcbmV4cG9ydCAqIGZyb20gJy4vYXBpcy9hdm0vYXBpJztcbmV4cG9ydCAqIGZyb20gJy4vYXBpcy9hZG1pbi9hcGknO1xuZXhwb3J0ICogZnJvbSAnLi91dGlscy90eXBlcyc7XG5leHBvcnQgKiBmcm9tICcuL3V0aWxzL2JpbnRvb2xzJztcbmV4cG9ydCAqIGZyb20gJy4vdXRpbHMvZGInO1xuXG5leHBvcnQge1R4LCBUeFVuc2lnbmVkfSBmcm9tICcuL2FwaXMvYXZtL3R4JztcbmV4cG9ydCB7VVRYTywgVVRYT1NldH0gZnJvbSAnLi9hcGlzL2F2bS91dHhvcyc7XHRcbmV4cG9ydCB7U2lnSWR4LCBTaWduYXR1cmUsIFVuaXhOb3csIEFkZHJlc3N9IGZyb20gJy4vYXBpcy9hdm0vdHlwZXMnO1x0XG5leHBvcnQge091dENyZWF0ZUFzc2V0LCBPdXRQYXltZW50LCBPdXRUYWtlT3JMZWF2ZSwgT3V0cHV0LCBTZWxlY3RPdXRwdXRDbGFzc30gZnJvbSAnLi9hcGlzL2F2bS9vdXRwdXRzJztcdFxuZXhwb3J0IHtJbnB1dH0gZnJvbSAnLi9hcGlzL2F2bS9pbnB1dHMnO1x0XG5leHBvcnQge0FWTUtleVBhaXIsIEFWTUtleUNoYWlufSBmcm9tICcuL2FwaXMvYXZtL2tleWNoYWluJztcblxuZXhwb3J0IHtBVk1BUEkgYXMgQVZNfTtcbmV4cG9ydCB7S2V5c3RvcmVBUEkgYXMgS2V5c3RvcmV9O1xuZXhwb3J0IHtQbGF0Zm9ybUFQSSBhcyBQbGF0Zm9ybX07XG5leHBvcnQge0FkbWluQVBJIGFzIEFkbWlufTtcblxuXG4iXX0=

@@ -18,3 +18,5 @@ "use strict";

const api_1 = __importDefault(require("src/apis/avm/api"));
const api_2 = __importDefault(require("src/apis/keystore/api"));
const api_2 = __importDefault(require("src/apis/admin/api"));
const api_3 = __importDefault(require("src/apis/platform/api"));
const api_4 = __importDefault(require("src/apis/keystore/api"));
const testlib_1 = require("./testlib");

@@ -36,10 +38,10 @@ describe('Slopes', () => {

test('Endpoints correct', () => {
expect(slopes.Admin()).not.toBeInstanceOf(src_1.TypesLibrary.AVM.API);
expect(slopes.Admin()).toBeInstanceOf(src_1.TypesLibrary.Admin.API);
expect(slopes.AVM()).not.toBeInstanceOf(src_1.TypesLibrary.Admin.API);
expect(slopes.AVM()).toBeInstanceOf(src_1.TypesLibrary.AVM.API);
expect(slopes.Platform()).not.toBeInstanceOf(src_1.TypesLibrary.Keystore.API);
expect(slopes.Platform()).toBeInstanceOf(src_1.TypesLibrary.Platform.API);
expect(slopes.NodeKeys()).not.toBeInstanceOf(src_1.TypesLibrary.Platform.API);
expect(slopes.NodeKeys()).toBeInstanceOf(src_1.TypesLibrary.Keystore.API);
expect(slopes.Admin()).not.toBeInstanceOf(api_1.default);
expect(slopes.Admin()).toBeInstanceOf(api_2.default);
expect(slopes.AVM()).not.toBeInstanceOf(api_2.default);
expect(slopes.AVM()).toBeInstanceOf(api_1.default);
expect(slopes.Platform()).not.toBeInstanceOf(api_4.default);
expect(slopes.Platform()).toBeInstanceOf(api_3.default);
expect(slopes.NodeKeys()).not.toBeInstanceOf(api_3.default);
expect(slopes.NodeKeys()).toBeInstanceOf(api_4.default);
expect(slopes.Admin().getRPCID()).toBe(1);

@@ -53,4 +55,4 @@ expect(slopes.AVM().getRPCID()).toBe(1);

expect(slopes.api("admin2")).toBeInstanceOf(api_1.default);
slopes.addAPI("keystore2", api_2.default, "/ext/keystore2");
expect(slopes.api("keystore2")).toBeInstanceOf(api_2.default);
slopes.addAPI("keystore2", api_4.default, "/ext/keystore2");
expect(slopes.api("keystore2")).toBeInstanceOf(api_4.default);
slopes.api("keystore2").setBaseURL("/ext/keystore3");

@@ -164,2 +166,2 @@ expect(slopes.api("keystore2").getBaseURL()).toBe("/ext/keystore3");

});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xvcGVzLnRlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90ZXN0cy9zbG9wZXMudGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7OztBQUFBLHNFQUF3QztBQUN4Qyw2QkFBMkM7QUFDM0MsMkRBQXVDO0FBR3ZDLGdFQUFpRDtBQUNqRCx1Q0FBb0M7QUFLcEMsUUFBUSxDQUFDLFFBQVEsRUFBRSxHQUFHLEVBQUU7SUFDcEIsTUFBTSxFQUFFLEdBQUcsV0FBVyxDQUFDO0lBQ3ZCLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQztJQUNsQixNQUFNLFFBQVEsR0FBRyxPQUFPLENBQUM7SUFDekIsSUFBSSxNQUFhLENBQUM7SUFDbEIsU0FBUyxDQUFDLEdBQUcsRUFBRTtRQUNYLE1BQU0sR0FBRyxJQUFJLFlBQU0sQ0FBQyxFQUFFLEVBQUMsSUFBSSxFQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzFDLENBQUMsQ0FBQyxDQUFDO0lBQ0gsSUFBSSxDQUFDLGdCQUFnQixFQUFFLEdBQUcsRUFBRTtRQUN4QixNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ2hDLE1BQU0sQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDcEMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM1QyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsUUFBUSxNQUFNLEVBQUUsSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBRWhFLENBQUMsQ0FBQyxDQUFDO0lBRUgsSUFBSSxDQUFDLG1CQUFtQixFQUFFLEdBQUcsRUFBRTtRQUMzQixNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssRUFB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Q0FBQyxLQUFLLENBQUMsQ0FBQztJQUMzQyxDQUFDLENBQUEsQ0FBQyxDQUFDO0lBRUgsSUFBSSxDQUFDLGFBQWEsRUFBRSxHQUFTLEVBQUU7UUFDM0IsSUFBSSxLQUFLLEdBQVUsV0FBVyxDQUFDO1FBQy9CLElBQUksR0FBRyxHQUFXLE1BQU0sQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUNoRCxJQUFJLE1BQU0sR0FBbUIsR0FBRyxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsSUFBSSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQy9ELElBQUksT0FBTyxHQUFVO1lBQ2pCLFFBQVEsRUFBRTtnQkFDTixRQUFRLEVBQUMsS0FBSzthQUNqQjtTQUNKLENBQUM7UUFDRixJQUFJLFdBQVcsR0FBRztZQUNkLElBQUksRUFBQyxPQUFPO1NBQ2YsQ0FBQztRQUNGLHlCQUFTLENBQUMsWUFBWSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3BDLElBQUksUUFBUSxHQUFVLE1BQU0sTUFBTSxDQUFDO1FBQ25DLE1BQU0sQ0FBQyx5QkFBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ25ELE1BQU0sQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDM0MsQ0FBQyxDQUFBLENBQUMsQ0FBQztBQUNQLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IG1vY2tBeGlvcyBmcm9tICdqZXN0LW1vY2stYXhpb3MnO1xuaW1wb3J0IHsgU2xvcGVzLCBUeXBlc0xpYnJhcnkgfSBmcm9tIFwic3JjXCI7XG5pbXBvcnQgQVZNQVBJICBmcm9tIFwic3JjL2FwaXMvYXZtL2FwaVwiO1xuaW1wb3J0IEFkbWluQVBJICBmcm9tIFwic3JjL2FwaXMvYWRtaW4vYXBpXCI7XG5pbXBvcnQgUGxhdGZvcm1BUEkgIGZyb20gXCJzcmMvYXBpcy9wbGF0Zm9ybS9hcGlcIjtcbmltcG9ydCBLZXlzdG9yZUFQSSAgZnJvbSBcInNyYy9hcGlzL2tleXN0b3JlL2FwaVwiO1xuaW1wb3J0IHsgVGVzdEFQSSB9IGZyb20gJy4vdGVzdGxpYic7XG5pbXBvcnQgeyBBeGlvc1JlcXVlc3RDb25maWcgfSBmcm9tICdheGlvcyc7XG5cblxuXG5kZXNjcmliZSgnU2xvcGVzJywgKCkgPT4ge1xuICAgIGNvbnN0IGlwID0gJzEyNy4wLjAuMSc7XG4gICAgY29uc3QgcG9ydCA9IDk2NTA7XG4gICAgY29uc3QgcHJvdG9jb2wgPSBcImh0dHBzXCI7XG4gICAgbGV0IHNsb3BlczpTbG9wZXM7XG4gICAgYmVmb3JlQWxsKCgpID0+IHtcbiAgICAgICAgc2xvcGVzID0gbmV3IFNsb3BlcyhpcCxwb3J0LHByb3RvY29sKTtcbiAgICB9KTtcbiAgICB0ZXN0KCdDYW4gaW5pdGlhbGl6ZScsICgpID0+IHtcbiAgICAgICAgZXhwZWN0KHNsb3Blcy5nZXRJUCgpKS50b0JlKGlwKTtcbiAgICAgICAgZXhwZWN0KHNsb3Blcy5nZXRQb3J0KCkpLnRvQmUocG9ydCk7XG4gICAgICAgIGV4cGVjdChzbG9wZXMuZ2V0UHJvdG9jb2woKSkudG9CZShwcm90b2NvbCk7XG4gICAgICAgIGV4cGVjdChzbG9wZXMuZ2V0VVJMKCkpLnRvQmUoYCR7cHJvdG9jb2x9Oi8vJHtpcH06JHtwb3J0fWApO1xuICAgICAgICBcbiAgICB9KTtcblxuICAgIHRlc3QoJ0VuZHBvaW50cyBjb3JyZWN0JywgKCkgPT4ge1xuICAgICAgICBleHBlY3Qoc2xvcGVzLkFkbWluKCkpLm5vdC50b0JlSW5zdGFuY2VPZihUeXBlc0xpYnJhcnkuQVZNLkFQSSk7XG4gICAgICAgIGV4cGVjdChzbG9wZXMuQWRtaW4oKSkudG9CZUluc3RhbmNlT2YoVHlwZXNMaWJyYXJ5LkFkbWluLkFQSSk7XG4gICAgICAgIFxuICAgICAgICBleHBlY3Qoc2xvcGVzLkFWTSgpKS5ub3QudG9CZUluc3RhbmNlT2YoVHlwZXNMaWJyYXJ5LkFkbWluLkFQSSk7XG4gICAgICAgIGV4cGVjdChzbG9wZXMuQVZNKCkpLnRvQmVJbnN0YW5jZU9mKFR5cGVzTGlicmFyeS5BVk0uQVBJKTtcbiAgICAgICAgXG4gICAgICAgIGV4cGVjdChzbG9wZXMuUGxhdGZvcm0oKSkubm90LnRvQmVJbnN0YW5jZU9mKFR5cGVzTGlicmFyeS5LZXlzdG9yZS5BUEkpO1xuICAgICAgICBleHBlY3Qoc2xvcGVzLlBsYXRmb3JtKCkpLnRvQmVJbnN0YW5jZU9mKFR5cGVzTGlicmFyeS5QbGF0Zm9ybS5BUEkpO1xuXG4gICAgICAgIGV4cGVjdChzbG9wZXMuTm9kZUtleXMoKSkubm90LnRvQmVJbnN0YW5jZU9mKFR5cGVzTGlicmFyeS5QbGF0Zm9ybS5BUEkpO1xuICAgICAgICBleHBlY3Qoc2xvcGVzLk5vZGVLZXlzKCkpLnRvQmVJbnN0YW5jZU9mKFR5cGVzTGlicmFyeS5LZXlzdG9yZS5BUEkpO1xuXG4gICAgICAgIGV4cGVjdChzbG9wZXMuQWRtaW4oKS5nZXRSUENJRCgpKS50b0JlKDEpO1xuICAgICAgICBleHBlY3Qoc2xvcGVzLkFWTSgpLmdldFJQQ0lEKCkpLnRvQmUoMSk7XG4gICAgICAgIGV4cGVjdChzbG9wZXMuUGxhdGZvcm0oKS5nZXRSUENJRCgpKS50b0JlKDEpO1xuICAgICAgICBleHBlY3Qoc2xvcGVzLk5vZGVLZXlzKCkuZ2V0UlBDSUQoKSkudG9CZSgxKTtcbiAgICB9KTtcblxuICAgIHRlc3QoJ0NyZWF0ZSBuZXcgQVBJJywgKCkgPT4ge1xuICAgICAgICBzbG9wZXMuYWRkQVBJKFwiYWRtaW4yXCIsIEFWTUFQSSk7XG4gICAgICAgIGV4cGVjdChzbG9wZXMuYXBpKFwiYWRtaW4yXCIpKS50b0JlSW5zdGFuY2VPZihBVk1BUEkpO1xuXG4gICAgICAgIHNsb3Blcy5hZGRBUEkoXCJrZXlzdG9yZTJcIiwgS2V5c3RvcmVBUEksIFwiL2V4dC9rZXlzdG9yZTJcIik7XG4gICAgICAgIGV4cGVjdChzbG9wZXMuYXBpKFwia2V5c3RvcmUyXCIpKS50b0JlSW5zdGFuY2VPZihLZXlzdG9yZUFQSSk7XG5cbiAgICAgICAgc2xvcGVzLmFwaShcImtleXN0b3JlMlwiKS5zZXRCYXNlVVJMKFwiL2V4dC9rZXlzdG9yZTNcIik7XG4gICAgICAgIGV4cGVjdChzbG9wZXMuYXBpKFwia2V5c3RvcmUyXCIpLmdldEJhc2VVUkwoKSkudG9CZShcIi9leHQva2V5c3RvcmUzXCIpO1xuXG4gICAgICAgIGV4cGVjdChzbG9wZXMuYXBpKFwia2V5c3RvcmUyXCIpLmdldERCKCkpLnRvSGF2ZVByb3BlcnR5KFwibmFtZXNwYWNlXCIpO1xuICAgIH0pO1xuXG59KTtcblxuZGVzY3JpYmUoJ0hUVFAgT3BlcmF0aW9ucycsICgpID0+IHtcbiAgICBjb25zdCBpcCA9ICcxMjcuMC4wLjEnO1xuICAgIGNvbnN0IHBvcnQgPSA4MDgwO1xuICAgIGNvbnN0IHByb3RvY29sID0gXCJodHRwXCI7XG4gICAgY29uc3QgcGF0aCA9IFwiL2V4dC90ZXN0aW5ncmVxdWVzdHNcIjtcbiAgICBsZXQgc2xvcGVzOlNsb3BlcztcbiAgICBiZWZvcmVBbGwoKCkgPT4ge1xuICAgICAgICBzbG9wZXMgPSBuZXcgU2xvcGVzKGlwLHBvcnQsIHByb3RvY29sKTtcbiAgICAgICAgc2xvcGVzLmFkZEFQSShcInRlc3RpbmdyZXF1ZXN0c1wiLCBUZXN0QVBJLCBwYXRoKTtcbiAgICB9KTtcblxuICAgIGFmdGVyRWFjaCgoKSA9PiB7XG4gICAgICAgIG1vY2tBeGlvcy5yZXNldCgpO1xuICAgIH0pO1xuXG4gICAgdGVzdCgnR0VUIHdvcmtzJywgYXN5bmMgKCkgPT4ge1xuICAgICAgICBsZXQgaW5wdXQ6c3RyaW5nID0gXCJUZXN0R0VUXCI7XG4gICAgICAgIGxldCBhcGk6VGVzdEFQSSA9IHNsb3Blcy5hcGkoXCJ0ZXN0aW5ncmVxdWVzdHNcIik7XG4gICAgICAgIGxldCByZXN1bHQ6UHJvbWlzZTxvYmplY3Q+ID0gYXBpLlRlc3RHRVQoaW5wdXQsIGAvJHtpbnB1dH1gKTtcbiAgICAgICAgbGV0IHBheWxvYWQ6b2JqZWN0ID0ge1xuICAgICAgICAgICAgXCJyZXN1bHRcIjoge1xuICAgICAgICAgICAgICAgIFwib3V0cHV0XCI6aW5wdXRcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgbGV0IHJlc3BvbnNlT2JqID0ge1xuICAgICAgICAgICAgZGF0YTpwYXlsb2FkXG4gICAgICAgIH07XG4gICAgICAgIG1vY2tBeGlvcy5tb2NrUmVzcG9uc2UocmVzcG9uc2VPYmopO1xuICAgICAgICBsZXQgcmVzcG9uc2U6b2JqZWN0ID0gYXdhaXQgcmVzdWx0O1xuICAgICAgICBleHBlY3QobW9ja0F4aW9zLnJlcXVlc3QpLnRvSGF2ZUJlZW5DYWxsZWRUaW1lcygxKTtcbiAgICAgICAgZXhwZWN0KHJlc3BvbnNlW1wib3V0cHV0XCJdKS50b0JlKGlucHV0KTtcbiAgICB9KTtcblxuICAgIHRlc3QoJ0RFTEVURSB3b3JrcycsIGFzeW5jICgpID0+IHtcbiAgICAgICAgbGV0IGlucHV0OnN0cmluZyA9IFwiVGVzdERFTEVURVwiO1xuICAgICAgICBsZXQgYXBpOlRlc3RBUEkgPSBzbG9wZXMuYXBpKFwidGVzdGluZ3JlcXVlc3RzXCIpO1xuICAgICAgICBsZXQgYXhpb3NDb25maWc6QXhpb3NSZXF1ZXN0Q29uZmlnID0ge1xuICAgICAgICAgICAgYmFzZVVSTDpgJHtwcm90b2NvbH06Ly8ke2lwfToke3BvcnR9YCxcbiAgICAgICAgICAgIHJlc3BvbnNlVHlwZTogJ3RleHQnXG4gICAgICAgIH07XG4gICAgICAgIGxldCByZXN1bHQ6UHJvbWlzZTxvYmplY3Q+ID0gYXBpLlRlc3RERUxFVEUoaW5wdXQsIGAvJHtpbnB1dH1gLCBheGlvc0NvbmZpZyk7XG4gICAgICAgIGxldCBwYXlsb2FkOm9iamVjdCA9IHtcbiAgICAgICAgICAgIFwicmVzdWx0XCI6IHtcbiAgICAgICAgICAgICAgICBcIm91dHB1dFwiOmlucHV0XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIGxldCByZXNwb25zZU9iaiA9IHtcbiAgICAgICAgICAgIGRhdGE6cGF5bG9hZFxuICAgICAgICB9O1xuICAgICAgICBtb2NrQXhpb3MubW9ja1Jlc3BvbnNlKHJlc3BvbnNlT2JqKTtcbiAgICAgICAgbGV0IHJlc3BvbnNlOm9iamVjdCA9IGF3YWl0IHJlc3VsdDtcbiAgICAgICAgZXhwZWN0KG1vY2tBeGlvcy5yZXF1ZXN0KS50b0hhdmVCZWVuQ2FsbGVkVGltZXMoMSk7XG4gICAgICAgIGV4cGVjdChyZXNwb25zZVtcIm91dHB1dFwiXSkudG9CZShpbnB1dCk7XG4gICAgfSk7XG5cbiAgICB0ZXN0KCdQT1NUIHdvcmtzJywgYXN5bmMgKCkgPT4ge1xuICAgICAgICBsZXQgaW5wdXQ6c3RyaW5nID0gXCJUZXN0UE9TVFwiO1xuICAgICAgICBsZXQgYXBpOlRlc3RBUEkgPSBzbG9wZXMuYXBpKFwidGVzdGluZ3JlcXVlc3RzXCIpO1xuICAgICAgICBsZXQgcmVzdWx0OlByb21pc2U8b2JqZWN0PiA9IGFwaS5UZXN0UE9TVChpbnB1dCwgYC8ke2lucHV0fWApO1xuICAgICAgICBsZXQgcGF5bG9hZDpvYmplY3QgPSB7XG4gICAgICAgICAgICBcInJlc3VsdFwiOiB7XG4gICAgICAgICAgICAgICAgXCJvdXRwdXRcIjppbnB1dFxuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICBsZXQgcmVzcG9uc2VPYmogPSB7XG4gICAgICAgICAgICBkYXRhOnBheWxvYWRcbiAgICAgICAgfTtcbiAgICAgICAgbW9ja0F4aW9zLm1vY2tSZXNwb25zZShyZXNwb25zZU9iaik7XG4gICAgICAgIGxldCByZXNwb25zZTpvYmplY3QgPSBhd2FpdCByZXN1bHQ7XG4gICAgICAgIGV4cGVjdChtb2NrQXhpb3MucmVxdWVzdCkudG9IYXZlQmVlbkNhbGxlZFRpbWVzKDEpO1xuICAgICAgICBleHBlY3QocmVzcG9uc2VbXCJvdXRwdXRcIl0pLnRvQmUoaW5wdXQpO1xuICAgIH0pO1xuXG4gICAgdGVzdCgnUFVUIHdvcmtzJywgYXN5bmMgKCkgPT4ge1xuICAgICAgICBsZXQgaW5wdXQ6c3RyaW5nID0gXCJUZXN0UFVUXCI7XG4gICAgICAgIGxldCBhcGk6VGVzdEFQSSA9IHNsb3Blcy5hcGkoXCJ0ZXN0aW5ncmVxdWVzdHNcIik7XG4gICAgICAgIGxldCByZXN1bHQ6UHJvbWlzZTxvYmplY3Q+ID0gYXBpLlRlc3RQVVQoaW5wdXQsIGAvJHtpbnB1dH1gKTtcbiAgICAgICAgbGV0IHBheWxvYWQ6b2JqZWN0ID0ge1xuICAgICAgICAgICAgXCJyZXN1bHRcIjoge1xuICAgICAgICAgICAgICAgIFwib3V0cHV0XCI6aW5wdXRcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgbGV0IHJlc3BvbnNlT2JqID0ge1xuICAgICAgICAgICAgZGF0YTpwYXlsb2FkXG4gICAgICAgIH07XG4gICAgICAgIG1vY2tBeGlvcy5tb2NrUmVzcG9uc2UocmVzcG9uc2VPYmopO1xuICAgICAgICBsZXQgcmVzcG9uc2U6b2JqZWN0ID0gYXdhaXQgcmVzdWx0O1xuICAgICAgICBleHBlY3QobW9ja0F4aW9zLnJlcXVlc3QpLnRvSGF2ZUJlZW5DYWxsZWRUaW1lcygxKTtcbiAgICAgICAgZXhwZWN0KHJlc3BvbnNlW1wib3V0cHV0XCJdKS50b0JlKGlucHV0KTtcbiAgICB9KTtcblxuICAgIHRlc3QoJ1BBVENIIHdvcmtzJywgYXN5bmMgKCkgPT4ge1xuICAgICAgICBsZXQgaW5wdXQ6c3RyaW5nID0gXCJUZXN0UEFUQ0hcIjtcbiAgICAgICAgbGV0IGFwaTpUZXN0QVBJID0gc2xvcGVzLmFwaShcInRlc3RpbmdyZXF1ZXN0c1wiKTtcbiAgICAgICAgbGV0IHJlc3VsdDpQcm9taXNlPG9iamVjdD4gPSBhcGkuVGVzdFBBVENIKGlucHV0LCBgLyR7aW5wdXR9YCk7XG4gICAgICAgIGxldCBwYXlsb2FkOm9iamVjdCA9IHtcbiAgICAgICAgICAgIFwicmVzdWx0XCI6IHtcbiAgICAgICAgICAgICAgICBcIm91dHB1dFwiOmlucHV0XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIGxldCByZXNwb25zZU9iaiA9IHtcbiAgICAgICAgICAgIGRhdGE6cGF5bG9hZFxuICAgICAgICB9O1xuICAgICAgICBtb2NrQXhpb3MubW9ja1Jlc3BvbnNlKHJlc3BvbnNlT2JqKTtcbiAgICAgICAgbGV0IHJlc3BvbnNlOm9iamVjdCA9IGF3YWl0IHJlc3VsdDtcbiAgICAgICAgZXhwZWN0KG1vY2tBeGlvcy5yZXF1ZXN0KS50b0hhdmVCZWVuQ2FsbGVkVGltZXMoMSk7XG4gICAgICAgIGV4cGVjdChyZXNwb25zZVtcIm91dHB1dFwiXSkudG9CZShpbnB1dCk7XG4gICAgfSk7XG59KTtcbiJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xvcGVzLnRlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90ZXN0cy9zbG9wZXMudGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7OztBQUFBLHNFQUF3QztBQUN4Qyw2QkFBNkI7QUFDN0IsMkRBQXVDO0FBQ3ZDLDZEQUEyQztBQUMzQyxnRUFBaUQ7QUFDakQsZ0VBQWlEO0FBQ2pELHVDQUFvQztBQUtwQyxRQUFRLENBQUMsUUFBUSxFQUFFLEdBQUcsRUFBRTtJQUNwQixNQUFNLEVBQUUsR0FBRyxXQUFXLENBQUM7SUFDdkIsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDO0lBQ2xCLE1BQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQztJQUN6QixJQUFJLE1BQWEsQ0FBQztJQUNsQixTQUFTLENBQUMsR0FBRyxFQUFFO1FBQ1gsTUFBTSxHQUFHLElBQUksWUFBTSxDQUFDLEVBQUUsRUFBQyxJQUFJLEVBQUMsUUFBUSxDQUFDLENBQUM7SUFDMUMsQ0FBQyxDQUFDLENBQUM7SUFDSCxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsR0FBRyxFQUFFO1FBQ3hCLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDaEMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNwQyxNQUFNLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzVDLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxRQUFRLE1BQU0sRUFBRSxJQUFJLElBQUksRUFBRSxDQUFDLENBQUM7SUFFaEUsQ0FBQyxDQUFDLENBQUM7SUFFSCxJQUFJLENBQUMsbUJBQW1CLEVBQUUsR0FBRyxFQUFFO1FBQzNCLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLGFBQU0sQ0FBQyxDQUFDO1FBQ2xELE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxjQUFjLENBQUMsYUFBUSxDQUFDLENBQUM7UUFFaEQsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsYUFBUSxDQUFDLENBQUM7UUFDbEQsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxhQUFNLENBQUMsQ0FBQztRQUU1QyxNQUFNLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxhQUFXLENBQUMsQ0FBQztRQUMxRCxNQUFNLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsY0FBYyxDQUFDLGFBQVcsQ0FBQyxDQUFDO1FBRXRELE1BQU0sQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLGFBQVcsQ0FBQyxDQUFDO1FBQzFELE1BQU0sQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxjQUFjLENBQUMsYUFBVyxDQUFDLENBQUM7UUFFdEQsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMxQyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3hDLE1BQU0sQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDN0MsTUFBTSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxR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LEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQ2hELElBQUksTUFBTSxHQUFtQixHQUFHLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxJQUFJLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDL0QsSUFBSSxPQUFPLEdBQVU7WUFDakIsUUFBUSxFQUFFO2dCQUNOLFFBQVEsRUFBQyxLQUFLO2FBQ2pCO1NBQ0osQ0FBQztRQUNGLElBQUksV0FBVyxHQUFHO1lBQ2QsSUFBSSxFQUFDLE9BQU87U0FDZixDQUFDO1FBQ0YseUJBQVMsQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDcEMsSUFBSSxRQUFRLEdBQVUsTUFBTSxNQUFNLENBQUM7UUFDbkMsTUFBTSxDQUFDLHlCQUFTLENBQUMsT0FBTyxDQUFDLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbkQsTUFBTSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMzQyxDQUFDLENBQUEsQ0FBQyxDQUFDO0FBQ1AsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbW9ja0F4aW9zIGZyb20gJ2plc3QtbW9jay1heGlvcyc7XG5pbXBvcnQgeyBTbG9wZXMgfSBmcm9tIFwic3JjXCI7XG5pbXBvcnQgQVZNQVBJICBmcm9tIFwic3JjL2FwaXMvYXZtL2FwaVwiO1xuaW1wb3J0IEFkbWluQVBJICBmcm9tIFwic3JjL2FwaXMvYWRtaW4vYXBpXCI7XG5pbXBvcnQgUGxhdGZvcm1BUEkgIGZyb20gXCJzcmMvYXBpcy9wbGF0Zm9ybS9hcGlcIjtcbmltcG9ydCBLZXlzdG9yZUFQSSAgZnJvbSBcInNyYy9hcGlzL2tleXN0b3JlL2FwaVwiO1xuaW1wb3J0IHsgVGVzdEFQSSB9IGZyb20gJy4vdGVzdGxpYic7XG5pbXBvcnQgeyBBeGlvc1JlcXVlc3RDb25maWcgfSBmcm9tICdheGlvcyc7XG5cblxuXG5kZXNjcmliZSgnU2xvcGVzJywgKCkgPT4ge1xuICAgIGNvbnN0IGlwID0gJzEyNy4wLjAuMSc7XG4gICAgY29uc3QgcG9ydCA9IDk2NTA7XG4gICAgY29uc3QgcHJvdG9jb2wgPSBcImh0dHBzXCI7XG4gICAgbGV0IHNsb3BlczpTbG9wZXM7XG4gICAgYmVmb3JlQWxsKCgpID0+IHtcbiAgICAgICAgc2xvcGVzID0gbmV3IFNsb3BlcyhpcCxwb3J0LHByb3RvY29sKTtcbiAgICB9KTtcbiAgICB0ZXN0KCdDYW4gaW5pdGlhbGl6ZScsICgpID0+IHtcbiAgICAgICAgZXhwZWN0KHNsb3Blcy5nZXRJUCgpKS50b0JlKGlwKTtcbiAgICAgICAgZXhwZWN0KHNsb3Blcy5nZXRQb3J0KCkpLnRvQmUocG9ydCk7XG4gICAgICAgIGV4cGVjdChzbG9wZXMuZ2V0UHJvdG9jb2woKSkudG9CZShwcm90b2NvbCk7XG4gICAgICAgIGV4cGVjdChzbG9wZXMuZ2V0VVJMKCkpLnRvQmUoYCR7cHJvdG9jb2x9Oi8vJHtpcH06JHtwb3J0fWApO1xuICAgICAgICBcbiAgICB9KTtcblxuICAgIHRlc3QoJ0VuZHBvaW50cyBjb3JyZWN0JywgKCkgPT4ge1xuICAgICAgICBleHBlY3Qoc2xvcGVzLkFkbWluKCkpLm5vdC50b0JlSW5zdGFuY2VPZihBVk1BUEkpO1xuICAgICAgICBleHBlY3Qoc2xvcGVzLkFkbWluKCkpLnRvQmVJbnN0YW5jZU9mKEFkbWluQVBJKTtcbiAgICAgICAgXG4gICAgICAgIGV4cGVjdChzbG9wZXMuQVZNKCkpLm5vdC50b0JlSW5zdGFuY2VPZihBZG1pbkFQSSk7XG4gICAgICAgIGV4cGVjdChzbG9wZXMuQVZNKCkpLnRvQmVJbnN0YW5jZU9mKEFWTUFQSSk7XG4gICAgICAgIFxuICAgICAgICBleHBlY3Qoc2xvcGVzLlBsYXRmb3JtKCkpLm5vdC50b0JlSW5zdGFuY2VPZihLZXlzdG9yZUFQSSk7XG4gICAgICAgIGV4cGVjdChzbG9wZXMuUGxhdGZvcm0oKSkudG9CZUluc3RhbmNlT2YoUGxhdGZvcm1BUEkpO1xuXG4gICAgICAgIGV4cGVjdChzbG9wZXMuTm9kZUtleXMoKSkubm90LnRvQmVJbnN0YW5jZU9mKFBsYXRmb3JtQVBJKTtcbiAgICAgICAgZXhwZWN0KHNsb3Blcy5Ob2RlS2V5cygpKS50b0JlSW5zdGFuY2VPZihLZXlzdG9yZUFQSSk7XG5cbiAgICAgICAgZXhwZWN0KHNsb3Blcy5BZG1pbigpLmdldFJQQ0lEKCkpLnRvQmUoMSk7XG4gICAgICAgIGV4cGVjdChzbG9wZXMuQVZNKCkuZ2V0UlBDSUQoKSkudG9CZSgxKTtcbiAgICAgICAgZXhwZWN0KHNsb3Blcy5QbGF0Zm9ybSgpLmdldFJQQ0lEKCkpLnRvQmUoMSk7XG4gICAgICAgIGV4cGVjdChzbG9wZXMuTm9kZUtleXMoKS5nZXRSUENJRCgpKS50b0JlKDEpO1xuICAgIH0pO1xuXG4gICAgdGVzdCgnQ3JlYXRlIG5ldyBBUEknLCAoKSA9PiB7XG4gICAgICAgIHNsb3Blcy5hZGRBUEkoXCJhZG1pbjJcIiwgQVZNQVBJKTtcbiAgICAgICAgZXhwZWN0KHNsb3Blcy5hcGkoXCJhZG1pbjJcIikpLnRvQmVJbnN0YW5jZU9mKEFWTUFQSSk7XG5cbiAgICAgICAgc2xvcGVzLmFkZEFQSShcImtleXN0b3JlMlwiLCBLZXlzdG9yZUFQSSwgXCIvZXh0L2tleXN0b3JlMlwiKTtcbiAgICAgICAgZXhwZWN0KHNsb3Blcy5hcGkoXCJrZXlzdG9yZTJcIikpLnRvQmVJbnN0YW5jZU9mKEtleXN0b3JlQVBJKTtcblxuICAgICAgICBzbG9wZXMuYXBpKFwia2V5c3RvcmUyXCIpLnNldEJhc2VVUkwoXCIvZXh0L2tleXN0b3JlM1wiKTtcbiAgICAgICAgZXhwZWN0KHNsb3Blcy5hcGkoXCJrZXlzdG9yZTJcIikuZ2V0QmFzZVVSTCgpKS50b0JlKFwiL2V4dC9rZXlzdG9yZTNcIik7XG5cbiAgICAgICAgZXhwZWN0KHNsb3Blcy5hcGkoXCJrZXlzdG9yZTJcIikuZ2V0REIoKSkudG9IYXZlUHJvcGVydHkoXCJuYW1lc3BhY2VcIik7XG4gICAgfSk7XG5cbn0pO1xuXG5kZXNjcmliZSgnSFRUUCBPcGVyYXRpb25zJywgKCkgPT4ge1xuICAgIGNvbnN0IGlwID0gJzEyNy4wLjAuMSc7XG4gICAgY29uc3QgcG9ydCA9IDgwODA7XG4gICAgY29uc3QgcHJvdG9jb2wgPSBcImh0dHBcIjtcbiAgICBjb25zdCBwYXRoID0gXCIvZXh0L3Rlc3RpbmdyZXF1ZXN0c1wiO1xuICAgIGxldCBzbG9wZXM6U2xvcGVzO1xuICAgIGJlZm9yZUFsbCgoKSA9PiB7XG4gICAgICAgIHNsb3BlcyA9IG5ldyBTbG9wZXMoaXAscG9ydCwgcHJvdG9jb2wpO1xuICAgICAgICBzbG9wZXMuYWRkQVBJKFwidGVzdGluZ3JlcXVlc3RzXCIsIFRlc3RBUEksIHBhdGgpO1xuICAgIH0pO1xuXG4gICAgYWZ0ZXJFYWNoKCgpID0+IHtcbiAgICAgICAgbW9ja0F4aW9zLnJlc2V0KCk7XG4gICAgfSk7XG5cbiAgICB0ZXN0KCdHRVQgd29ya3MnLCBhc3luYyAoKSA9PiB7XG4gICAgICAgIGxldCBpbnB1dDpzdHJpbmcgPSBcIlRlc3RHRVRcIjtcbiAgICAgICAgbGV0IGFwaTpUZXN0QVBJID0gc2xvcGVzLmFwaShcInRlc3RpbmdyZXF1ZXN0c1wiKTtcbiAgICAgICAgbGV0IHJlc3VsdDpQcm9taXNlPG9iamVjdD4gPSBhcGkuVGVzdEdFVChpbnB1dCwgYC8ke2lucHV0fWApO1xuICAgICAgICBsZXQgcGF5bG9hZDpvYmplY3QgPSB7XG4gICAgICAgICAgICBcInJlc3VsdFwiOiB7XG4gICAgICAgICAgICAgICAgXCJvdXRwdXRcIjppbnB1dFxuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICBsZXQgcmVzcG9uc2VPYmogPSB7XG4gICAgICAgICAgICBkYXRhOnBheWxvYWRcbiAgICAgICAgfTtcbiAgICAgICAgbW9ja0F4aW9zLm1vY2tSZXNwb25zZShyZXNwb25zZU9iaik7XG4gICAgICAgIGxldCByZXNwb25zZTpvYmplY3QgPSBhd2FpdCByZXN1bHQ7XG4gICAgICAgIGV4cGVjdChtb2NrQXhpb3MucmVxdWVzdCkudG9IYXZlQmVlbkNhbGxlZFRpbWVzKDEpO1xuICAgICAgICBleHBlY3QocmVzcG9uc2VbXCJvdXRwdXRcIl0pLnRvQmUoaW5wdXQpO1xuICAgIH0pO1xuXG4gICAgdGVzdCgnREVMRVRFIHdvcmtzJywgYXN5bmMgKCkgPT4ge1xuICAgICAgICBsZXQgaW5wdXQ6c3RyaW5nID0gXCJUZXN0REVMRVRFXCI7XG4gICAgICAgIGxldCBhcGk6VGVzdEFQSSA9IHNsb3Blcy5hcGkoXCJ0ZXN0aW5ncmVxdWVzdHNcIik7XG4gICAgICAgIGxldCBheGlvc0NvbmZpZzpBeGlvc1JlcXVlc3RDb25maWcgPSB7XG4gICAgICAgICAgICBiYXNlVVJMOmAke3Byb3RvY29sfTovLyR7aXB9OiR7cG9ydH1gLFxuICAgICAgICAgICAgcmVzcG9uc2VUeXBlOiAndGV4dCdcbiAgICAgICAgfTtcbiAgICAgICAgbGV0IHJlc3VsdDpQcm9taXNlPG9iamVjdD4gPSBhcGkuVGVzdERFTEVURShpbnB1dCwgYC8ke2lucHV0fWAsIGF4aW9zQ29uZmlnKTtcbiAgICAgICAgbGV0IHBheWxvYWQ6b2JqZWN0ID0ge1xuICAgICAgICAgICAgXCJyZXN1bHRcIjoge1xuICAgICAgICAgICAgICAgIFwib3V0cHV0XCI6aW5wdXRcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgbGV0IHJlc3BvbnNlT2JqID0ge1xuICAgICAgICAgICAgZGF0YTpwYXlsb2FkXG4gICAgICAgIH07XG4gICAgICAgIG1vY2tBeGlvcy5tb2NrUmVzcG9uc2UocmVzcG9uc2VPYmopO1xuICAgICAgICBsZXQgcmVzcG9uc2U6b2JqZWN0ID0gYXdhaXQgcmVzdWx0O1xuICAgICAgICBleHBlY3QobW9ja0F4aW9zLnJlcXVlc3QpLnRvSGF2ZUJlZW5DYWxsZWRUaW1lcygxKTtcbiAgICAgICAgZXhwZWN0KHJlc3BvbnNlW1wib3V0cHV0XCJdKS50b0JlKGlucHV0KTtcbiAgICB9KTtcblxuICAgIHRlc3QoJ1BPU1Qgd29ya3MnLCBhc3luYyAoKSA9PiB7XG4gICAgICAgIGxldCBpbnB1dDpzdHJpbmcgPSBcIlRlc3RQT1NUXCI7XG4gICAgICAgIGxldCBhcGk6VGVzdEFQSSA9IHNsb3Blcy5hcGkoXCJ0ZXN0aW5ncmVxdWVzdHNcIik7XG4gICAgICAgIGxldCByZXN1bHQ6UHJvbWlzZTxvYmplY3Q+ID0gYXBpLlRlc3RQT1NUKGlucHV0LCBgLyR7aW5wdXR9YCk7XG4gICAgICAgIGxldCBwYXlsb2FkOm9iamVjdCA9IHtcbiAgICAgICAgICAgIFwicmVzdWx0XCI6IHtcbiAgICAgICAgICAgICAgICBcIm91dHB1dFwiOmlucHV0XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIGxldCByZXNwb25zZU9iaiA9IHtcbiAgICAgICAgICAgIGRhdGE6cGF5bG9hZFxuICAgICAgICB9O1xuICAgICAgICBtb2NrQXhpb3MubW9ja1Jlc3BvbnNlKHJlc3BvbnNlT2JqKTtcbiAgICAgICAgbGV0IHJlc3BvbnNlOm9iamVjdCA9IGF3YWl0IHJlc3VsdDtcbiAgICAgICAgZXhwZWN0KG1vY2tBeGlvcy5yZXF1ZXN0KS50b0hhdmVCZWVuQ2FsbGVkVGltZXMoMSk7XG4gICAgICAgIGV4cGVjdChyZXNwb25zZVtcIm91dHB1dFwiXSkudG9CZShpbnB1dCk7XG4gICAgfSk7XG5cbiAgICB0ZXN0KCdQVVQgd29ya3MnLCBhc3luYyAoKSA9PiB7XG4gICAgICAgIGxldCBpbnB1dDpzdHJpbmcgPSBcIlRlc3RQVVRcIjtcbiAgICAgICAgbGV0IGFwaTpUZXN0QVBJID0gc2xvcGVzLmFwaShcInRlc3RpbmdyZXF1ZXN0c1wiKTtcbiAgICAgICAgbGV0IHJlc3VsdDpQcm9taXNlPG9iamVjdD4gPSBhcGkuVGVzdFBVVChpbnB1dCwgYC8ke2lucHV0fWApO1xuICAgICAgICBsZXQgcGF5bG9hZDpvYmplY3QgPSB7XG4gICAgICAgICAgICBcInJlc3VsdFwiOiB7XG4gICAgICAgICAgICAgICAgXCJvdXRwdXRcIjppbnB1dFxuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICBsZXQgcmVzcG9uc2VPYmogPSB7XG4gICAgICAgICAgICBkYXRhOnBheWxvYWRcbiAgICAgICAgfTtcbiAgICAgICAgbW9ja0F4aW9zLm1vY2tSZXNwb25zZShyZXNwb25zZU9iaik7XG4gICAgICAgIGxldCByZXNwb25zZTpvYmplY3QgPSBhd2FpdCByZXN1bHQ7XG4gICAgICAgIGV4cGVjdChtb2NrQXhpb3MucmVxdWVzdCkudG9IYXZlQmVlbkNhbGxlZFRpbWVzKDEpO1xuICAgICAgICBleHBlY3QocmVzcG9uc2VbXCJvdXRwdXRcIl0pLnRvQmUoaW5wdXQpO1xuICAgIH0pO1xuXG4gICAgdGVzdCgnUEFUQ0ggd29ya3MnLCBhc3luYyAoKSA9PiB7XG4gICAgICAgIGxldCBpbnB1dDpzdHJpbmcgPSBcIlRlc3RQQVRDSFwiO1xuICAgICAgICBsZXQgYXBpOlRlc3RBUEkgPSBzbG9wZXMuYXBpKFwidGVzdGluZ3JlcXVlc3RzXCIpO1xuICAgICAgICBsZXQgcmVzdWx0OlByb21pc2U8b2JqZWN0PiA9IGFwaS5UZXN0UEFUQ0goaW5wdXQsIGAvJHtpbnB1dH1gKTtcbiAgICAgICAgbGV0IHBheWxvYWQ6b2JqZWN0ID0ge1xuICAgICAgICAgICAgXCJyZXN1bHRcIjoge1xuICAgICAgICAgICAgICAgIFwib3V0cHV0XCI6aW5wdXRcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgbGV0IHJlc3BvbnNlT2JqID0ge1xuICAgICAgICAgICAgZGF0YTpwYXlsb2FkXG4gICAgICAgIH07XG4gICAgICAgIG1vY2tBeGlvcy5tb2NrUmVzcG9uc2UocmVzcG9uc2VPYmopO1xuICAgICAgICBsZXQgcmVzcG9uc2U6b2JqZWN0ID0gYXdhaXQgcmVzdWx0O1xuICAgICAgICBleHBlY3QobW9ja0F4aW9zLnJlcXVlc3QpLnRvSGF2ZUJlZW5DYWxsZWRUaW1lcygxKTtcbiAgICAgICAgZXhwZWN0KHJlc3BvbnNlW1wib3V0cHV0XCJdKS50b0JlKGlucHV0KTtcbiAgICB9KTtcbn0pO1xuIl19

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc