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

@apache-arrow/es2015-esm

Package Overview
Dependencies
Maintainers
2
Versions
46
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@apache-arrow/es2015-esm - npm Package Compare versions

Comparing version 0.2.0 to 0.3.0

bin/arrow2csv.d.ts

168

Arrow.d.ts

@@ -1,13 +0,155 @@

import { Table } from './vector/table';
import { Vector } from './vector/vector';
import { Utf8Vector } from './vector/utf8';
import { DictionaryVector } from './vector/dictionary';
import { StructVector, StructRow } from './vector/struct';
import { readVectors, readVectorsAsync } from './reader/arrow';
import { ListVector, BinaryVector, FixedSizeListVector } from './vector/list';
import { BoolVector, Int8Vector, Int16Vector, Int32Vector, Int64Vector, Uint8Vector, Uint16Vector, Uint32Vector, Uint64Vector, Float16Vector, Float32Vector, Float64Vector, Date32Vector, Date64Vector, Time32Vector, Time64Vector, DecimalVector, TimestampVector } from './vector/numeric';
export { Table, Vector, StructRow };
export { readVectors, readVectorsAsync };
export { NumericVectorConstructor } from './vector/numeric';
export { List, TypedArray, TypedArrayConstructor } from './vector/types';
export { BoolVector, ListVector, Utf8Vector, Int8Vector, Int16Vector, Int32Vector, Int64Vector, Uint8Vector, Uint16Vector, Uint32Vector, Uint64Vector, Date32Vector, Date64Vector, Time32Vector, Time64Vector, BinaryVector, StructVector, Float16Vector, Float32Vector, Float64Vector, DecimalVector, TimestampVector, DictionaryVector, FixedSizeListVector };
import * as type_ from './type';
import * as data_ from './data';
import * as vector_ from './vector';
import * as util_ from './util/int';
import * as visitor_ from './visitor';
import * as view_ from './vector/view';
import * as predicate_ from './predicate';
import { Vector } from './vector';
import { RecordBatch } from './recordbatch';
import { Schema, Field, Type } from './type';
import { Table, DataFrame, NextFunc, BindFunc, CountByResult } from './table';
import { read, readAsync } from './ipc/reader/arrow';
export import View = vector_.View;
export import VectorLike = vector_.VectorLike;
export import TypedArray = type_.TypedArray;
export import IntBitWidth = type_.IntBitWidth;
export import TimeBitWidth = type_.TimeBitWidth;
export import TypedArrayConstructor = type_.TypedArrayConstructor;
export { read, readAsync };
export { Table, DataFrame, NextFunc, BindFunc, CountByResult };
export { Field, Schema, RecordBatch, Vector, Type };
export declare namespace util {
export import Uint64 = util_.Uint64;
export import Int64 = util_.Int64;
export import Int128 = util_.Int128;
}
export declare namespace data {
export import BaseData = data_.BaseData;
export import FlatData = data_.FlatData;
export import BoolData = data_.BoolData;
export import FlatListData = data_.FlatListData;
export import DictionaryData = data_.DictionaryData;
export import NestedData = data_.NestedData;
export import ListData = data_.ListData;
export import UnionData = data_.UnionData;
export import SparseUnionData = data_.SparseUnionData;
export import DenseUnionData = data_.DenseUnionData;
export import ChunkedData = data_.ChunkedData;
}
export declare namespace enum_ {
export import Type = type_.ArrowType;
export import DateUnit = type_.DateUnit;
export import TimeUnit = type_.TimeUnit;
export import Precision = type_.Precision;
export import UnionMode = type_.UnionMode;
export import VectorType = type_.VectorType;
export import IntervalUnit = type_.IntervalUnit;
export import MessageHeader = type_.MessageHeader;
export import MetadataVersion = type_.MetadataVersion;
}
export declare namespace type {
export import Schema = type_.Schema;
export import Field = type_.Field;
export import Null = type_.Null;
export import Int = type_.Int;
export import Int8 = type_.Int8;
export import Int16 = type_.Int16;
export import Int32 = type_.Int32;
export import Int64 = type_.Int64;
export import Uint8 = type_.Uint8;
export import Uint16 = type_.Uint16;
export import Uint32 = type_.Uint32;
export import Uint64 = type_.Uint64;
export import Float = type_.Float;
export import Float16 = type_.Float16;
export import Float32 = type_.Float32;
export import Float64 = type_.Float64;
export import Binary = type_.Binary;
export import Utf8 = type_.Utf8;
export import Bool = type_.Bool;
export import Decimal = type_.Decimal;
export import Date_ = type_.Date_;
export import Time = type_.Time;
export import Timestamp = type_.Timestamp;
export import Interval = type_.Interval;
export import List = type_.List;
export import Struct = type_.Struct;
export import Union = type_.Union;
export import DenseUnion = type_.DenseUnion;
export import SparseUnion = type_.SparseUnion;
export import FixedSizeBinary = type_.FixedSizeBinary;
export import FixedSizeList = type_.FixedSizeList;
export import Map_ = type_.Map_;
export import Dictionary = type_.Dictionary;
}
export declare namespace vector {
export import Vector = vector_.Vector;
export import NullVector = vector_.NullVector;
export import BoolVector = vector_.BoolVector;
export import IntVector = vector_.IntVector;
export import FloatVector = vector_.FloatVector;
export import DateVector = vector_.DateVector;
export import DecimalVector = vector_.DecimalVector;
export import TimeVector = vector_.TimeVector;
export import TimestampVector = vector_.TimestampVector;
export import IntervalVector = vector_.IntervalVector;
export import BinaryVector = vector_.BinaryVector;
export import FixedSizeBinaryVector = vector_.FixedSizeBinaryVector;
export import Utf8Vector = vector_.Utf8Vector;
export import ListVector = vector_.ListVector;
export import FixedSizeListVector = vector_.FixedSizeListVector;
export import MapVector = vector_.MapVector;
export import StructVector = vector_.StructVector;
export import UnionVector = vector_.UnionVector;
export import DictionaryVector = vector_.DictionaryVector;
}
export declare namespace visitor {
export import TypeVisitor = visitor_.TypeVisitor;
export import VectorVisitor = visitor_.VectorVisitor;
}
export declare namespace view {
export import ChunkedView = view_.ChunkedView;
export import DictionaryView = view_.DictionaryView;
export import ListView = view_.ListView;
export import FixedSizeListView = view_.FixedSizeListView;
export import BinaryView = view_.BinaryView;
export import Utf8View = view_.Utf8View;
export import UnionView = view_.UnionView;
export import DenseUnionView = view_.DenseUnionView;
export import NestedView = view_.NestedView;
export import StructView = view_.StructView;
export import MapView = view_.MapView;
export import FlatView = view_.FlatView;
export import NullView = view_.NullView;
export import BoolView = view_.BoolView;
export import ValidityView = view_.ValidityView;
export import PrimitiveView = view_.PrimitiveView;
export import FixedSizeView = view_.FixedSizeView;
export import Float16View = view_.Float16View;
export import DateDayView = view_.DateDayView;
export import DateMillisecondView = view_.DateMillisecondView;
export import TimestampDayView = view_.TimestampDayView;
export import TimestampSecondView = view_.TimestampSecondView;
export import TimestampMillisecondView = view_.TimestampMillisecondView;
export import TimestampMicrosecondView = view_.TimestampMicrosecondView;
export import TimestampNanosecondView = view_.TimestampNanosecondView;
export import IntervalYearMonthView = view_.IntervalYearMonthView;
export import IntervalYearView = view_.IntervalYearView;
export import IntervalMonthView = view_.IntervalMonthView;
}
export declare namespace predicate {
export import col = predicate_.col;
export import lit = predicate_.lit;
export import custom = predicate_.custom;
export import Or = predicate_.Or;
export import Col = predicate_.Col;
export import And = predicate_.And;
export import GTeq = predicate_.GTeq;
export import LTeq = predicate_.LTeq;
export import Value = predicate_.Value;
export import Equals = predicate_.Equals;
export import Literal = predicate_.Literal;
export import Predicate = predicate_.Predicate;
export import PredicateFunc = predicate_.PredicateFunc;
}

@@ -17,52 +17,249 @@ // Licensed to the Apache Software Foundation (ASF) under one

// under the License.
import { Table } from './vector/table';
import { Vector } from './vector/vector';
import { Utf8Vector } from './vector/utf8';
import { DictionaryVector } from './vector/dictionary';
import { StructVector, StructRow } from './vector/struct';
import { readVectors, readVectorsAsync } from './reader/arrow';
import { ListVector, BinaryVector, FixedSizeListVector } from './vector/list';
import { BoolVector, Int8Vector, Int16Vector, Int32Vector, Int64Vector, Uint8Vector, Uint16Vector, Uint32Vector, Uint64Vector, Float16Vector, Float32Vector, Float64Vector, Date32Vector, Date64Vector, Time32Vector, Time64Vector, DecimalVector, TimestampVector, } from './vector/numeric';
export { Table, Vector, StructRow };
export { readVectors, readVectorsAsync };
export { BoolVector, ListVector, Utf8Vector, Int8Vector, Int16Vector, Int32Vector, Int64Vector, Uint8Vector, Uint16Vector, Uint32Vector, Uint64Vector, Date32Vector, Date64Vector, Time32Vector, Time64Vector, BinaryVector, StructVector, Float16Vector, Float32Vector, Float64Vector, DecimalVector, TimestampVector, DictionaryVector, FixedSizeListVector, };
/* These exports are needed for the closure umd targets */
import * as type_ from './type';
import * as data_ from './data';
import * as vector_ from './vector';
import * as util_ from './util/int';
import * as visitor_ from './visitor';
import * as view_ from './vector/view';
import * as predicate_ from './predicate';
import { Vector } from './vector';
import { RecordBatch } from './recordbatch';
import { Schema, Field, Type } from './type';
import { Table, CountByResult } from './table';
import { read, readAsync } from './ipc/reader/arrow';
export { read, readAsync };
export { Table, CountByResult };
export { Field, Schema, RecordBatch, Vector, Type };
export var util;
(function (util) {
util.Uint64 = util_.Uint64;
util.Int64 = util_.Int64;
util.Int128 = util_.Int128;
})(util || (util = {}));
export var data;
(function (data) {
data.BaseData = data_.BaseData;
data.FlatData = data_.FlatData;
data.BoolData = data_.BoolData;
data.FlatListData = data_.FlatListData;
data.DictionaryData = data_.DictionaryData;
data.NestedData = data_.NestedData;
data.ListData = data_.ListData;
data.UnionData = data_.UnionData;
data.SparseUnionData = data_.SparseUnionData;
data.DenseUnionData = data_.DenseUnionData;
data.ChunkedData = data_.ChunkedData;
})(data || (data = {}));
export var enum_;
(function (enum_) {
enum_.Type = type_.ArrowType;
enum_.DateUnit = type_.DateUnit;
enum_.TimeUnit = type_.TimeUnit;
enum_.Precision = type_.Precision;
enum_.UnionMode = type_.UnionMode;
enum_.VectorType = type_.VectorType;
enum_.IntervalUnit = type_.IntervalUnit;
enum_.MessageHeader = type_.MessageHeader;
enum_.MetadataVersion = type_.MetadataVersion;
})(enum_ || (enum_ = {}));
export var type;
(function (type) {
type.Schema = type_.Schema;
type.Field = type_.Field;
type.Null = type_.Null;
type.Int = type_.Int;
type.Int8 = type_.Int8;
type.Int16 = type_.Int16;
type.Int32 = type_.Int32;
type.Int64 = type_.Int64;
type.Uint8 = type_.Uint8;
type.Uint16 = type_.Uint16;
type.Uint32 = type_.Uint32;
type.Uint64 = type_.Uint64;
type.Float = type_.Float;
type.Float16 = type_.Float16;
type.Float32 = type_.Float32;
type.Float64 = type_.Float64;
type.Binary = type_.Binary;
type.Utf8 = type_.Utf8;
type.Bool = type_.Bool;
type.Decimal = type_.Decimal;
type.Date_ = type_.Date_;
type.Time = type_.Time;
type.Timestamp = type_.Timestamp;
type.Interval = type_.Interval;
type.List = type_.List;
type.Struct = type_.Struct;
type.Union = type_.Union;
type.DenseUnion = type_.DenseUnion;
type.SparseUnion = type_.SparseUnion;
type.FixedSizeBinary = type_.FixedSizeBinary;
type.FixedSizeList = type_.FixedSizeList;
type.Map_ = type_.Map_;
type.Dictionary = type_.Dictionary;
})(type || (type = {}));
export var vector;
(function (vector) {
vector.Vector = vector_.Vector;
vector.NullVector = vector_.NullVector;
vector.BoolVector = vector_.BoolVector;
vector.IntVector = vector_.IntVector;
vector.FloatVector = vector_.FloatVector;
vector.DateVector = vector_.DateVector;
vector.DecimalVector = vector_.DecimalVector;
vector.TimeVector = vector_.TimeVector;
vector.TimestampVector = vector_.TimestampVector;
vector.IntervalVector = vector_.IntervalVector;
vector.BinaryVector = vector_.BinaryVector;
vector.FixedSizeBinaryVector = vector_.FixedSizeBinaryVector;
vector.Utf8Vector = vector_.Utf8Vector;
vector.ListVector = vector_.ListVector;
vector.FixedSizeListVector = vector_.FixedSizeListVector;
vector.MapVector = vector_.MapVector;
vector.StructVector = vector_.StructVector;
vector.UnionVector = vector_.UnionVector;
vector.DictionaryVector = vector_.DictionaryVector;
})(vector || (vector = {}));
export var visitor;
(function (visitor) {
visitor.TypeVisitor = visitor_.TypeVisitor;
visitor.VectorVisitor = visitor_.VectorVisitor;
})(visitor || (visitor = {}));
export var view;
(function (view) {
view.ChunkedView = view_.ChunkedView;
view.DictionaryView = view_.DictionaryView;
view.ListView = view_.ListView;
view.FixedSizeListView = view_.FixedSizeListView;
view.BinaryView = view_.BinaryView;
view.Utf8View = view_.Utf8View;
view.UnionView = view_.UnionView;
view.DenseUnionView = view_.DenseUnionView;
view.NestedView = view_.NestedView;
view.StructView = view_.StructView;
view.MapView = view_.MapView;
view.FlatView = view_.FlatView;
view.NullView = view_.NullView;
view.BoolView = view_.BoolView;
view.ValidityView = view_.ValidityView;
view.PrimitiveView = view_.PrimitiveView;
view.FixedSizeView = view_.FixedSizeView;
view.Float16View = view_.Float16View;
view.DateDayView = view_.DateDayView;
view.DateMillisecondView = view_.DateMillisecondView;
view.TimestampDayView = view_.TimestampDayView;
view.TimestampSecondView = view_.TimestampSecondView;
view.TimestampMillisecondView = view_.TimestampMillisecondView;
view.TimestampMicrosecondView = view_.TimestampMicrosecondView;
view.TimestampNanosecondView = view_.TimestampNanosecondView;
view.IntervalYearMonthView = view_.IntervalYearMonthView;
view.IntervalYearView = view_.IntervalYearView;
view.IntervalMonthView = view_.IntervalMonthView;
})(view || (view = {}));
export var predicate;
(function (predicate) {
predicate.col = predicate_.col;
predicate.lit = predicate_.lit;
predicate.custom = predicate_.custom;
predicate.Or = predicate_.Or;
predicate.Col = predicate_.Col;
predicate.And = predicate_.And;
predicate.GTeq = predicate_.GTeq;
predicate.LTeq = predicate_.LTeq;
predicate.Value = predicate_.Value;
predicate.Equals = predicate_.Equals;
predicate.Literal = predicate_.Literal;
predicate.Predicate = predicate_.Predicate;
})(predicate || (predicate = {}));
/* These exports are needed for the closure and uglify umd targets */
try {
const Arrow = eval('exports');
if (typeof Arrow === 'object') {
// string indexers tell closure compiler not to rename these properties
Arrow['readVectors'] = readVectors;
Arrow['readVectorsAsync'] = readVectorsAsync;
let Arrow = eval('exports');
if (Arrow && typeof Arrow === 'object') {
// string indexers tell closure and uglify not to rename these properties
Arrow['data'] = data;
Arrow['type'] = type;
Arrow['util'] = util;
Arrow['view'] = view;
Arrow['enum_'] = enum_;
Arrow['vector'] = vector;
Arrow['visitor'] = visitor;
Arrow['predicate'] = predicate;
Arrow['read'] = read;
Arrow['readAsync'] = readAsync;
Arrow['Type'] = Type;
Arrow['Field'] = Field;
Arrow['Schema'] = Schema;
Arrow['Vector'] = Vector;
Arrow['RecordBatch'] = RecordBatch;
Arrow['Table'] = Table;
Arrow['Vector'] = Vector;
Arrow['StructRow'] = StructRow;
Arrow['BoolVector'] = BoolVector;
Arrow['ListVector'] = ListVector;
Arrow['Utf8Vector'] = Utf8Vector;
Arrow['Int8Vector'] = Int8Vector;
Arrow['Int16Vector'] = Int16Vector;
Arrow['Int32Vector'] = Int32Vector;
Arrow['Int64Vector'] = Int64Vector;
Arrow['Uint8Vector'] = Uint8Vector;
Arrow['Uint16Vector'] = Uint16Vector;
Arrow['Uint32Vector'] = Uint32Vector;
Arrow['Uint64Vector'] = Uint64Vector;
Arrow['Date32Vector'] = Date32Vector;
Arrow['Date64Vector'] = Date64Vector;
Arrow['Time32Vector'] = Time32Vector;
Arrow['Time64Vector'] = Time64Vector;
Arrow['BinaryVector'] = BinaryVector;
Arrow['StructVector'] = StructVector;
Arrow['Float16Vector'] = Float16Vector;
Arrow['Float32Vector'] = Float32Vector;
Arrow['Float64Vector'] = Float64Vector;
Arrow['DecimalVector'] = DecimalVector;
Arrow['TimestampVector'] = TimestampVector;
Arrow['DictionaryVector'] = DictionaryVector;
Arrow['FixedSizeListVector'] = FixedSizeListVector;
Arrow['CountByResult'] = CountByResult;
}
}
catch (e) { }
/* end closure exports */
/* end umd exports */
// closure compiler erases static properties/methods:
// https://github.com/google/closure-compiler/issues/1776
// set them via string indexers to save them from the mangler
Schema['from'] = Schema.from;
Table['from'] = Table.from;
Table['fromAsync'] = Table.fromAsync;
Table['empty'] = Table.empty;
Vector['create'] = Vector.create;
RecordBatch['from'] = RecordBatch.from;
util_.Uint64['add'] = util_.Uint64.add;
util_.Uint64['multiply'] = util_.Uint64.multiply;
util_.Int64['add'] = util_.Int64.add;
util_.Int64['multiply'] = util_.Int64.multiply;
util_.Int64['fromString'] = util_.Int64.fromString;
util_.Int128['add'] = util_.Int128.add;
util_.Int128['multiply'] = util_.Int128.multiply;
util_.Int128['fromString'] = util_.Int128.fromString;
data_.ChunkedData['computeOffsets'] = data_.ChunkedData.computeOffsets;
type_.Type['NONE'] = type_.Type.NONE;
type_.Type['Null'] = type_.Type.Null;
type_.Type['Int'] = type_.Type.Int;
type_.Type['Float'] = type_.Type.Float;
type_.Type['Binary'] = type_.Type.Binary;
type_.Type['Utf8'] = type_.Type.Utf8;
type_.Type['Bool'] = type_.Type.Bool;
type_.Type['Decimal'] = type_.Type.Decimal;
type_.Type['Date'] = type_.Type.Date;
type_.Type['Time'] = type_.Type.Time;
type_.Type['Timestamp'] = type_.Type.Timestamp;
type_.Type['Interval'] = type_.Type.Interval;
type_.Type['List'] = type_.Type.List;
type_.Type['Struct'] = type_.Type.Struct;
type_.Type['Union'] = type_.Type.Union;
type_.Type['FixedSizeBinary'] = type_.Type.FixedSizeBinary;
type_.Type['FixedSizeList'] = type_.Type.FixedSizeList;
type_.Type['Map'] = type_.Type.Map;
type_.Type['Dictionary'] = type_.Type.Dictionary;
type_.Type['DenseUnion'] = type_.Type.DenseUnion;
type_.Type['SparseUnion'] = type_.Type.SparseUnion;
type_.DataType['isNull'] = type_.DataType.isNull;
type_.DataType['isInt'] = type_.DataType.isInt;
type_.DataType['isFloat'] = type_.DataType.isFloat;
type_.DataType['isBinary'] = type_.DataType.isBinary;
type_.DataType['isUtf8'] = type_.DataType.isUtf8;
type_.DataType['isBool'] = type_.DataType.isBool;
type_.DataType['isDecimal'] = type_.DataType.isDecimal;
type_.DataType['isDate'] = type_.DataType.isDate;
type_.DataType['isTime'] = type_.DataType.isTime;
type_.DataType['isTimestamp'] = type_.DataType.isTimestamp;
type_.DataType['isInterval'] = type_.DataType.isInterval;
type_.DataType['isList'] = type_.DataType.isList;
type_.DataType['isStruct'] = type_.DataType.isStruct;
type_.DataType['isUnion'] = type_.DataType.isUnion;
type_.DataType['isDenseUnion'] = type_.DataType.isDenseUnion;
type_.DataType['isSparseUnion'] = type_.DataType.isSparseUnion;
type_.DataType['isFixedSizeBinary'] = type_.DataType.isFixedSizeBinary;
type_.DataType['isFixedSizeList'] = type_.DataType.isFixedSizeList;
type_.DataType['isMap'] = type_.DataType.isMap;
type_.DataType['isDictionary'] = type_.DataType.isDictionary;
vector_.BoolVector['from'] = vector_.BoolVector.from;
vector_.IntVector['from'] = vector_.IntVector.from;
vector_.FloatVector['from'] = vector_.FloatVector.from;
visitor_.TypeVisitor['visitTypeInline'] = visitor_.TypeVisitor.visitTypeInline;
visitor_.VectorVisitor['visitTypeInline'] = visitor_.VectorVisitor.visitTypeInline;
//# sourceMappingURL=data:application/json;charset=utf8;base64,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LEdBQUcsV0FBVyxDQUFDO1FBQ25DLEtBQUssQ0FBQyxhQUFhLENBQUMsR0FBRyxXQUFXLENBQUM7UUFDbkMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxHQUFHLFlBQVksQ0FBQztRQUNyQyxLQUFLLENBQUMsY0FBYyxDQUFDLEdBQUcsWUFBWSxDQUFDO1FBQ3JDLEtBQUssQ0FBQyxjQUFjLENBQUMsR0FBRyxZQUFZLENBQUM7UUFDckMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxHQUFHLFlBQVksQ0FBQztRQUNyQyxLQUFLLENBQUMsY0FBYyxDQUFDLEdBQUcsWUFBWSxDQUFDO1FBQ3JDLEtBQUssQ0FBQyxjQUFjLENBQUMsR0FBRyxZQUFZLENBQUM7UUFDckMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxHQUFHLFlBQVksQ0FBQztRQUNyQyxLQUFLLENBQUMsY0FBYyxDQUFDLEdBQUcsWUFBWSxDQUFDO1FBQ3JDLEtBQUssQ0FBQyxjQUFjLENBQUMsR0FBRyxZQUFZLENBQUM7UUFDckMsS0FBSyxDQUFDLGVBQWUsQ0FBQyxHQUFHLGFBQWEsQ0FBQztRQUN2QyxLQUFLLENBQUMsZUFBZSxDQUFDLEdBQUcsYUFBYSxDQUFDO1FBQ3ZDLEtBQUssQ0FBQyxlQUFlLENBQUMsR0FBRyxhQUFhLENBQUM7UUFDdkMsS0FBSyxDQUFDLGVBQWUsQ0FBQyxHQUFHLGFBQWEsQ0FBQztRQUN2QyxLQUFLLENBQUMsaUJBQWlCLENBQUMsR0FBRyxlQUFlLENBQUM7UUFDM0MsS0FBSyxDQUFDLGtCQUFrQixDQUFDLEdBQUcsZ0JBQWdCLENBQUM7UUFDN0MsS0FBSyxDQUFDLHFCQUFxQixDQUFDLEdBQUcsbUJBQW1CLENBQUM7SUFDdkQsQ0FBQztBQUNMLENBQUM7QUFBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQTBCLENBQUM7QUFDeEMseUJBQXlCIiwiZmlsZSI6IkFycm93LmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy8gTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZVxuLy8gb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlXG4vLyBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvblxuLy8gcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZVxuLy8gdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZVxuLy8gXCJMaWNlbnNlXCIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlXG4vLyB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4vL1xuLy8gICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbi8vXG4vLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsXG4vLyBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhblxuLy8gXCJBUyBJU1wiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTllcbi8vIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZVxuLy8gc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9uc1xuLy8gdW5kZXIgdGhlIExpY2Vuc2UuXG5cbmltcG9ydCB7IFRhYmxlIH0gZnJvbSAnLi92ZWN0b3IvdGFibGUnO1xuaW1wb3J0IHsgVmVjdG9yIH0gZnJvbSAnLi92ZWN0b3IvdmVjdG9yJztcbmltcG9ydCB7IFV0ZjhWZWN0b3IgfSBmcm9tICcuL3ZlY3Rvci91dGY4JztcbmltcG9ydCB7IERpY3Rpb25hcnlWZWN0b3IgfSBmcm9tICcuL3ZlY3Rvci9kaWN0aW9uYXJ5JztcbmltcG9ydCB7IFN0cnVjdFZlY3RvciwgU3RydWN0Um93IH0gZnJvbSAnLi92ZWN0b3Ivc3RydWN0JztcbmltcG9ydCB7IHJlYWRWZWN0b3JzLCByZWFkVmVjdG9yc0FzeW5jIH0gZnJvbSAnLi9yZWFkZXIvYXJyb3cnO1xuaW1wb3J0IHsgTGlzdFZlY3RvciwgQmluYXJ5VmVjdG9yLCBGaXhlZFNpemVMaXN0VmVjdG9yIH0gZnJvbSAnLi92ZWN0b3IvbGlzdCc7XG5cbmltcG9ydCB7XG4gICAgQm9vbFZlY3RvcixcbiAgICBJbnQ4VmVjdG9yLFxuICAgIEludDE2VmVjdG9yLFxuICAgIEludDMyVmVjdG9yLFxuICAgIEludDY0VmVjdG9yLFxuICAgIFVpbnQ4VmVjdG9yLFxuICAgIFVpbnQxNlZlY3RvcixcbiAgICBVaW50MzJWZWN0b3IsXG4gICAgVWludDY0VmVjdG9yLFxuICAgIEZsb2F0MTZWZWN0b3IsXG4gICAgRmxvYXQzMlZlY3RvcixcbiAgICBGbG9hdDY0VmVjdG9yLFxuICAgIERhdGUzMlZlY3RvcixcbiAgICBEYXRlNjRWZWN0b3IsXG4gICAgVGltZTMyVmVjdG9yLFxuICAgIFRpbWU2NFZlY3RvcixcbiAgICBEZWNpbWFsVmVjdG9yLFxuICAgIFRpbWVzdGFtcFZlY3Rvcixcbn0gZnJvbSAnLi92ZWN0b3IvbnVtZXJpYyc7XG5cbmV4cG9ydCB7IFRhYmxlLCBWZWN0b3IsIFN0cnVjdFJvdyB9O1xuZXhwb3J0IHsgcmVhZFZlY3RvcnMsIHJlYWRWZWN0b3JzQXN5bmMgfTtcbmV4cG9ydCB7IE51bWVyaWNWZWN0b3JDb25zdHJ1Y3RvciB9IGZyb20gJy4vdmVjdG9yL251bWVyaWMnO1xuZXhwb3J0IHsgTGlzdCwgVHlwZWRBcnJheSwgVHlwZWRBcnJheUNvbnN0cnVjdG9yIH0gZnJvbSAnLi92ZWN0b3IvdHlwZXMnO1xuZXhwb3J0IHtcbiAgICBCb29sVmVjdG9yLFxuICAgIExpc3RWZWN0b3IsXG4gICAgVXRmOFZlY3RvcixcbiAgICBJbnQ4VmVjdG9yLFxuICAgIEludDE2VmVjdG9yLFxuICAgIEludDMyVmVjdG9yLFxuICAgIEludDY0VmVjdG9yLFxuICAgIFVpbnQ4VmVjdG9yLFxuICAgIFVpbnQxNlZlY3RvcixcbiAgICBVaW50MzJWZWN0b3IsXG4gICAgVWludDY0VmVjdG9yLFxuICAgIERhdGUzMlZlY3RvcixcbiAgICBEYXRlNjRWZWN0b3IsXG4gICAgVGltZTMyVmVjdG9yLFxuICAgIFRpbWU2NFZlY3RvcixcbiAgICBCaW5hcnlWZWN0b3IsXG4gICAgU3RydWN0VmVjdG9yLFxuICAgIEZsb2F0MTZWZWN0b3IsXG4gICAgRmxvYXQzMlZlY3RvcixcbiAgICBGbG9hdDY0VmVjdG9yLFxuICAgIERlY2ltYWxWZWN0b3IsXG4gICAgVGltZXN0YW1wVmVjdG9yLFxuICAgIERpY3Rpb25hcnlWZWN0b3IsXG4gICAgRml4ZWRTaXplTGlzdFZlY3Rvcixcbn07XG5cbi8qIFRoZXNlIGV4cG9ydHMgYXJlIG5lZWRlZCBmb3IgdGhlIGNsb3N1cmUgdW1kIHRhcmdldHMgKi9cbnRyeSB7XG4gICAgY29uc3QgQXJyb3cgPSBldmFsKCdleHBvcnRzJyk7XG4gICAgaWYgKHR5cGVvZiBBcnJvdyA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgLy8gc3RyaW5nIGluZGV4ZXJzIHRlbGwgY2xvc3VyZSBjb21waWxlciBub3QgdG8gcmVuYW1lIHRoZXNlIHByb3BlcnRpZXNcbiAgICAgICAgQXJyb3dbJ3JlYWRWZWN0b3JzJ10gPSByZWFkVmVjdG9ycztcbiAgICAgICAgQXJyb3dbJ3JlYWRWZWN0b3JzQXN5bmMnXSA9IHJlYWRWZWN0b3JzQXN5bmM7XG4gICAgICAgIEFycm93WydUYWJsZSddID0gVGFibGU7XG4gICAgICAgIEFycm93WydWZWN0b3InXSA9IFZlY3RvcjtcbiAgICAgICAgQXJyb3dbJ1N0cnVjdFJvdyddID0gU3RydWN0Um93O1xuICAgICAgICBBcnJvd1snQm9vbFZlY3RvciddID0gQm9vbFZlY3RvcjtcbiAgICAgICAgQXJyb3dbJ0xpc3RWZWN0b3InXSA9IExpc3RWZWN0b3I7XG4gICAgICAgIEFycm93WydVdGY4VmVjdG9yJ10gPSBVdGY4VmVjdG9yO1xuICAgICAgICBBcnJvd1snSW50OFZlY3RvciddID0gSW50OFZlY3RvcjtcbiAgICAgICAgQXJyb3dbJ0ludDE2VmVjdG9yJ10gPSBJbnQxNlZlY3RvcjtcbiAgICAgICAgQXJyb3dbJ0ludDMyVmVjdG9yJ10gPSBJbnQzMlZlY3RvcjtcbiAgICAgICAgQXJyb3dbJ0ludDY0VmVjdG9yJ10gPSBJbnQ2NFZlY3RvcjtcbiAgICAgICAgQXJyb3dbJ1VpbnQ4VmVjdG9yJ10gPSBVaW50OFZlY3RvcjtcbiAgICAgICAgQXJyb3dbJ1VpbnQxNlZlY3RvciddID0gVWludDE2VmVjdG9yO1xuICAgICAgICBBcnJvd1snVWludDMyVmVjdG9yJ10gPSBVaW50MzJWZWN0b3I7XG4gICAgICAgIEFycm93WydVaW50NjRWZWN0b3InXSA9IFVpbnQ2NFZlY3RvcjtcbiAgICAgICAgQXJyb3dbJ0RhdGUzMlZlY3RvciddID0gRGF0ZTMyVmVjdG9yO1xuICAgICAgICBBcnJvd1snRGF0ZTY0VmVjdG9yJ10gPSBEYXRlNjRWZWN0b3I7XG4gICAgICAgIEFycm93WydUaW1lMzJWZWN0b3InXSA9IFRpbWUzMlZlY3RvcjtcbiAgICAgICAgQXJyb3dbJ1RpbWU2NFZlY3RvciddID0gVGltZTY0VmVjdG9yO1xuICAgICAgICBBcnJvd1snQmluYXJ5VmVjdG9yJ10gPSBCaW5hcnlWZWN0b3I7XG4gICAgICAgIEFycm93WydTdHJ1Y3RWZWN0b3InXSA9IFN0cnVjdFZlY3RvcjtcbiAgICAgICAgQXJyb3dbJ0Zsb2F0MTZWZWN0b3InXSA9IEZsb2F0MTZWZWN0b3I7XG4gICAgICAgIEFycm93WydGbG9hdDMyVmVjdG9yJ10gPSBGbG9hdDMyVmVjdG9yO1xuICAgICAgICBBcnJvd1snRmxvYXQ2NFZlY3RvciddID0gRmxvYXQ2NFZlY3RvcjtcbiAgICAgICAgQXJyb3dbJ0RlY2ltYWxWZWN0b3InXSA9IERlY2ltYWxWZWN0b3I7XG4gICAgICAgIEFycm93WydUaW1lc3RhbXBWZWN0b3InXSA9IFRpbWVzdGFtcFZlY3RvcjtcbiAgICAgICAgQXJyb3dbJ0RpY3Rpb25hcnlWZWN0b3InXSA9IERpY3Rpb25hcnlWZWN0b3I7XG4gICAgICAgIEFycm93WydGaXhlZFNpemVMaXN0VmVjdG9yJ10gPSBGaXhlZFNpemVMaXN0VmVjdG9yO1xuICAgIH1cbn0gY2F0Y2ggKGUpIHsgLyogbm90IHRoZSBVTUQgYnVuZGxlICovIH1cbi8qIGVuZCBjbG9zdXJlIGV4cG9ydHMgKi9cbiJdfQ==
//# sourceMappingURL=data:application/json;charset=utf8;base64,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QUM7SUFDNUIsZ0JBQVUsR0FBRyxLQUFLLENBQUMsVUFBVSxDQUFDO0lBQzlCLGtCQUFZLEdBQUcsS0FBSyxDQUFDLFlBQVksQ0FBQztJQUNsQyxtQkFBYSxHQUFHLEtBQUssQ0FBQyxhQUFhLENBQUM7SUFDcEMscUJBQWUsR0FBRyxLQUFLLENBQUMsZUFBZSxDQUFDO0FBQzFELENBQUMsRUFWZ0IsS0FBSyxLQUFMLEtBQUssUUFVckI7QUFFRCxNQUFNLEtBQVcsSUFBSSxDQWtDcEI7QUFsQ0QsV0FBaUIsSUFBSTtJQUNILFdBQU0sR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDO0lBQ3RCLFVBQUssR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDO0lBQ3BCLFNBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDO0lBQ2xCLFFBQUcsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDO0lBQ2hCLFNBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDO0lBQ2xCLFVBQUssR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDO0lBQ3BCLFVBQUssR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDO0lBQ3BCLFVBQUssR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDO0lBQ3BCLFVBQUssR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDO0lBQ3BCLFdBQU0sR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDO0lBQ3RCLFdBQU0sR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDO0lBQ3RCLFdBQU0sR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDO0lBQ3RCLFVBQUssR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDO0lBQ3BCLFlBQU8sR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDO0lBQ3hCLFlBQU8sR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDO0lBQ3hCLFlBQU8sR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDO0lBQ3hCLFdBQU0sR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDO0lBQ3RCLFNBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDO0lBQ2xCLFNBQUksR0FBRyxLQUFL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QVEsQ0FBQyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO0FBQ2pELEtBQUssQ0FBQyxJQUFZLENBQUMsTUFBTSxDQUFDLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7QUFDN0MsS0FBSyxDQUFDLElBQVksQ0FBQyxNQUFNLENBQUMsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztBQUM3QyxLQUFLLENBQUMsSUFBWSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDO0FBQ25ELEtBQUssQ0FBQyxJQUFZLENBQUMsTUFBTSxDQUFDLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7QUFDN0MsS0FBSyxDQUFDLElBQVksQ0FBQyxNQUFNLENBQUMsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztBQUM3QyxLQUFLLENBQUMsSUFBWSxDQUFDLFdBQVcsQ0FBQyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDO0FBQ3ZELEtBQUssQ0FBQyxJQUFZLENBQUMsVUFBVSxDQUFDLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7QUFDckQsS0FBSyxDQUFDLElBQVksQ0FBQyxNQUFNLENBQUMsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztBQUM3QyxLQUFLLENBQUMsSUFBWSxDQUFDLFFBQVEsQ0FBQyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO0FBQ2pELEtBQUssQ0FBQyxJQUFZLENBQUMsT0FBTyxDQUFDLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7QUFDL0MsS0FBSyxDQUFDLElBQVksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDO0FBQ25FLEtBQUssQ0FBQyxJQUFZLENBQUMsZUFBZSxDQUFDLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUM7QUFD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QUFDLE1BQU0sQ0FBQyxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDO0FBQ25ELE9BQU8sQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLEdBQUcsT0FBTyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUM7QUFFdkQsUUFBUSxDQUFDLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxXQUFXLENBQUMsZUFBZSxDQUFDO0FBQy9FLFFBQVEsQ0FBQyxhQUFhLENBQUMsaUJBQWlCLENBQUMsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLGVBQWUsQ0FBQyIsImZpbGUiOiJBcnJvdy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8vIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmVcbi8vIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZVxuLy8gZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb25cbi8vIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGVcbi8vIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGVcbi8vIFwiTGljZW5zZVwiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZVxuLy8gd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuLy9cbi8vICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4vL1xuLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLFxuLy8gc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW5cbi8vIFwiQVMgSVNcIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZXG4vLyBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGVcbi8vIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnNcbi8vIHVuZGVyIHRoZSBMaWNlbnNlLlxuXG5pbXBvcnQgKiBhcyB0eXBlXyBmcm9tICcuL3R5cGUnO1xuaW1wb3J0ICogYXMgZGF0YV8gZnJvbSAnLi9kYXRhJztcbmltcG9ydCAqIGFzIHZlY3Rvcl8gZnJvbSAnLi92ZWN0b3InO1xuaW1wb3J0ICogYXMgdXRpbF8gZnJvbSAnLi91dGlsL2ludCc7XG5pbXBvcnQgKiBhcyB2aXNpdG9yXyBmcm9tICcuL3Zpc2l0b3InO1xuaW1wb3J0ICogYXMgdmlld18gZnJvbSAnLi92ZWN0b3Ivdmlldyc7XG5pbXBvcnQgKiBhcyBwcmVkaWNhdGVfIGZyb20gJy4vcHJlZGljYXRlJztcbmltcG9ydCB7IFZlY3RvciB9IGZyb20gJy4vdmVjdG9yJztcbmltcG9ydCB7IFJlY29yZEJhdGNoIH0gZnJvbSAnLi9yZWNvcmRiYXRjaCc7XG5pbXBvcnQgeyBTY2hlbWEsIEZpZWxkLCBUeXBlIH0gZnJvbSAnLi90eXBlJztcbmltcG9ydCB7IFRhYmxlLCBEYXRhRnJhbWUsIE5leHRGdW5jLCBCaW5kRnVuYywgQ291bnRCeVJlc3VsdCB9IGZyb20gJy4vdGFibGUnO1xuaW1wb3J0IHsgcmVhZCwgcmVhZEFzeW5jIH0gZnJvbSAnLi9pcGMvcmVhZGVyL2Fycm93JztcblxuZXhwb3J0IGltcG9ydCBWaWV3ID0gdmVjdG9yXy5WaWV3O1xuZXhwb3J0IGltcG9ydCBWZWN0b3JMaWtlID0gdmVjdG9yXy5WZWN0b3JMaWtlO1xuZXhwb3J0IGltcG9ydCBUeXBlZEFycmF5ID0gdHlwZV8uVHlwZWRBcnJheTtcbmV4cG9ydCBpbXBvcnQgSW50Qml0V2lkdGggPSB0eXBlXy5JbnRCaXRXaWR0aDtcbmV4cG9ydCBpbXBvcnQgVGltZUJpdFdpZHRoID0gdHlwZV8uVGltZUJpdFdpZHRoO1xuZXhwb3J0IGltcG9ydCBUeXBlZEFycmF5Q29uc3RydWN0b3IgPSB0eXBlXy5UeXBlZEFycmF5Q29uc3RydWN0b3I7XG5cbmV4cG9ydCB7IHJlYWQsIHJlYWRBc3luYyB9O1xuZXhwb3J0IHsgVGFibGUsIERhdGFGcmFtZSwgTmV4dEZ1bmMsIEJpbmRGdW5jLCBDb3VudEJ5UmVzdWx0IH07XG5leHBvcnQgeyBGaWVsZCwgU2NoZW1hLCBSZWNvcmRCYXRjaCwgVmVjdG9yLCBUeXBlIH07XG5cbmV4cG9ydCBuYW1lc3BhY2UgdXRpbCB7XG4gICAgZXhwb3J0IGltcG9ydCBVaW50NjQgPSB1dGlsXy5VaW50NjQ7XG4gICAgZXhwb3J0IGltcG9ydCBJbnQ2NCA9IHV0aWxfLkludDY0O1xuICAgIGV4cG9ydCBpbXBvcnQgSW50MTI4ID0gdXRpbF8uSW50MTI4O1xufVxuXG5leHBvcnQgbmFtZXNwYWNlIGRhdGEge1xuICAgIGV4cG9ydCBpbXBvcnQgQmFzZURhdGEgPSBkYXRhXy5CYXNlRGF0YTtcbiAgICBleHBvcnQgaW1wb3J0IEZsYXREYXRhID0gZGF0YV8uRmxhdERhdGE7XG4gICAgZXhwb3J0IGltcG9ydCBCb29sRGF0YSA9IGRhdGFfLkJvb2xEYXRhO1xuICAgIGV4cG9ydCBpbXBvcnQgRmxhdExpc3REYXRhID0gZGF0YV8uRmxhdExpc3REYXRhO1xuICAgIGV4cG9ydCBpbXBvcnQgRGljdGlvbmFyeURhdGEgPSBkYXRhXy5EaWN0aW9uYXJ5RGF0YTtcbiAgICBleHBvcnQgaW1wb3J0IE5lc3RlZERhdGEgPSBkYXRhXy5OZXN0ZWREYXRhO1xuICAgIGV4cG9ydCBpbXBvcnQgTGlzdERhdGEgPSBkYXRhXy5MaXN0RGF0YTtcbiAgICBleHBvcnQgaW1wb3J0IFVuaW9uRGF0YSA9IGRhdGFfLlVuaW9uRGF0YTtcbiAgICBleHBvcnQgaW1wb3J0IFNwYXJzZVVuaW9uRGF0YSA9IGRhdGFfLlNwYXJzZVVuaW9uRGF0YTtcbiAgICBleHBvcnQgaW1wb3J0IERlbnNlVW5pb25EYXRhID0gZGF0YV8uRGVuc2VVbmlvbkRhdGE7XG4gICAgZXhwb3J0IGltcG9ydCBDaHVua2VkRGF0YSA9IGRhdGFfLkNodW5rZWREYXRhO1xufVxuXG5leHBvcnQgbmFtZXNwYWNlIGVudW1fIHtcbiAgICBleHBvcnQgaW1wb3J0IFR5cGUgPSB0eXBlXy5BcnJvd1R5cGU7XG4gICAgZXhwb3J0IGltcG9ydCBEYXRlVW5pdCA9IHR5cGVfLkRhdGVVbml0O1xuICAgIGV4cG9ydCBpbXBvcnQgVGltZVVuaXQgPSB0eXBlXy5UaW1lVW5pdDtcbiAgICBleHBvcnQgaW1wb3J0IFByZWNpc2lvbiA9IHR5cGVfLlByZWNpc2lvbjtcbiAgICBleHBvcnQgaW1wb3J0IFVuaW9uTW9kZSA9IHR5cGVfLlVuaW9uTW9kZTtcbiAgICBleHBvcnQgaW1wb3J0IFZlY3RvclR5cGUgPSB0eXBlXy5WZWN0b3JUeXBlO1xuICAgIGV4cG9ydCBpbXBvcnQgSW50ZXJ2YWxVbml0ID0gdHlwZV8uSW50ZXJ2YWxVbml0O1xuICAgIGV4cG9ydCBpbXBvcnQgTWVzc2FnZUhlYWRlciA9IHR5cGVfLk1lc3NhZ2VIZWFkZXI7XG4gICAgZXhwb3J0IGltcG9ydCBNZXRhZGF0YVZlcnNpb24gPSB0eXBlXy5NZXRhZGF0YVZlcnNpb247XG59XG5cbmV4cG9ydCBuYW1lc3BhY2UgdHlwZSB7XG4gICAgZXhwb3J0IGltcG9ydCBTY2hlbWEgPSB0eXBlXy5TY2hlbWE7XG4gICAgZXhwb3J0IGltcG9ydCBGaWVsZCA9IHR5cGVfLkZpZWxkO1xuICAgIGV4cG9ydCBpbXBvcnQgTnVsbCA9IHR5cGVfLk51bGw7XG4gICAgZXhwb3J0IGltcG9ydCBJbnQgPSB0eXBlXy5JbnQ7XG4gICAgZXhwb3J0IGltcG9ydCBJbnQ4ID0gdHlwZV8uSW50ODtcbiAgICBleHBvcnQgaW1wb3J0IEludDE2ID0gdHlwZV8uSW50MTY7XG4gICAgZXhwb3J0IGltcG9ydCBJbnQzMiA9IHR5cGVfLkludDMyO1xuICAgIGV4cG9ydCBpbXBvcnQgSW50NjQgPSB0eXBlXy5JbnQ2NDtcbiAgICBleHBvcnQgaW1wb3J0IFVpbnQ4ID0gdHlwZV8uVWludDg7XG4gICAgZXhwb3J0IGltcG9ydCBVaW50MTYgPSB0eXBlXy5VaW50MTY7XG4gICAgZXhwb3J0IGltcG9ydCBVaW50MzIgPSB0eXBlXy5VaW50MzI7XG4gICAgZXhwb3J0IGltcG9ydCBVaW50NjQgPSB0eXBlXy5VaW50NjQ7XG4gICAgZXhwb3J0IGltcG9ydCBGbG9hdCA9IHR5cGVfLkZsb2F0O1xuICAgIGV4cG9ydCBpbXBvcnQgRmxvYXQxNiA9IHR5cGVfLkZsb2F0MTY7XG4gICAgZXhwb3J0IGltcG9ydCBGbG9hdDMyID0gdHlwZV8uRmxvYXQzMjtcbiAgICBleHBvcnQgaW1wb3J0IEZsb2F0NjQgPSB0eXBlXy5GbG9hdDY0O1xuICAgIGV4cG9ydCBpbXBvcnQgQmluYXJ5ID0gdHlwZV8uQmluYXJ5O1xuICAgIGV4cG9ydCBpbXBvcnQgVXRmOCA9IHR5cGVfLlV0Zjg7XG4gICAgZXhwb3J0IGltcG9ydCBCb29sID0gdHlwZV8uQm9vbDtcbiAgICBleHBvcnQgaW1wb3J0IERlY2ltYWwgPSB0eXBlXy5EZWNpbWFsO1xuICAgIGV4cG9ydCBpbXBvcnQgRGF0ZV8gPSB0eXBlXy5EYXRlXztcbiAgICBleHBvcnQgaW1wb3J0IFRpbWUgPSB0eXBlXy5UaW1lO1xuICAgIGV4cG9ydCBpbXBvcnQgVGltZXN0YW1wID0gdHlwZV8uVGltZXN0YW1wO1xuICAgIGV4cG9ydCBpbXBvcnQgSW50ZXJ2YWwgPSB0eXBlXy5JbnRlcnZhbDtcbiAgICBleHBvcnQgaW1wb3J0IExpc3QgPSB0eXBlXy5MaXN0O1xuICAgIGV4cG9ydCBpbXBvcnQgU3RydWN0ID0gdHlwZV8uU3RydWN0O1xuICAgIGV4cG9ydCBpbXBvcnQgVW5pb24gPSB0eXBlXy5VbmlvbjtcbiAgICBleHBvcnQgaW1wb3J0IERlbnNlVW5pb24gPSB0eXBlXy5EZW5zZVVuaW9uO1xuICAgIGV4cG9ydCBpbXBvcnQgU3BhcnNlVW5pb24gPSB0eXBlXy5TcGFyc2VVbmlvbjtcbiAgICBleHBvcnQgaW1wb3J0IEZpeGVkU2l6ZUJpbmFyeSA9IHR5cGVfLkZpeGVkU2l6ZUJpbmFyeTtcbiAgICBleHBvcnQgaW1wb3J0IEZpeGVkU2l6ZUxpc3QgPSB0eXBlXy5GaXhlZFNpemVMaXN0O1xuICAgIGV4cG9ydCBpbXBvcnQgTWFwXyA9IHR5cGVfLk1hcF87XG4gICAgZXhwb3J0IGltcG9ydCBEaWN0aW9uYXJ5ID0gdHlwZV8uRGljdGlvbmFyeTtcbn1cblxuZXhwb3J0IG5hbWVzcGFjZSB2ZWN0b3Ige1xuICAgIGV4cG9ydCBpbXBvcnQgVmVjdG9yID0gdmVjdG9yXy5WZWN0b3I7XG4gICAgZXhwb3J0IGltcG9ydCBOdWxsVmVjdG9yID0gdmVjdG9yXy5OdWxsVmVjdG9yO1xuICAgIGV4cG9ydCBpbXBvcnQgQm9vbFZlY3RvciA9IHZlY3Rvcl8uQm9vbFZlY3RvcjtcbiAgICBleHBvcnQgaW1wb3J0IEludFZlY3RvciA9IHZlY3Rvcl8uSW50VmVjdG9yO1xuICAgIGV4cG9ydCBpbXBvcnQgRmxvYXRWZWN0b3IgPSB2ZWN0b3JfLkZsb2F0VmVjdG9yO1xuICAgIGV4cG9ydCBpbXBvcnQgRGF0ZVZlY3RvciA9IHZlY3Rvcl8uRGF0ZVZlY3RvcjtcbiAgICBleHBvcnQgaW1wb3J0IERlY2ltYWxWZWN0b3IgPSB2ZWN0b3JfLkRlY2ltYWxWZWN0b3I7XG4gICAgZXhwb3J0IGltcG9ydCBUaW1lVmVjdG9yID0gdmVjdG9yXy5UaW1lVmVjdG9yO1xuICAgIGV4cG9ydCBpbXBvcnQgVGltZXN0YW1wVmVjdG9yID0gdmVjdG9yXy5UaW1lc3RhbXBWZWN0b3I7XG4gICAgZXhwb3J0IGltcG9ydCBJbnRlcnZhbFZlY3RvciA9IHZlY3Rvcl8uSW50ZXJ2YWxWZWN0b3I7XG4gICAgZXhwb3J0IGltcG9ydCBCaW5hcnlWZWN0b3IgPSB2ZWN0b3JfLkJpbmFyeVZlY3RvcjtcbiAgICBleHBvcnQgaW1wb3J0IEZpeGVkU2l6ZUJpbmFyeVZlY3RvciA9IHZlY3Rvcl8uRml4ZWRTaXplQmluYXJ5VmVjdG9yO1xuICAgIGV4cG9ydCBpbXBvcnQgVXRmOFZlY3RvciA9IHZlY3Rvcl8uVXRmOFZlY3RvcjtcbiAgICBleHBvcnQgaW1wb3J0IExpc3RWZWN0b3IgPSB2ZWN0b3JfLkxpc3RWZWN0b3I7XG4gICAgZXhwb3J0IGltcG9ydCBGaXhlZFNpemVMaXN0VmVjdG9yID0gdmVjdG9yXy5GaXhlZFNpemVMaXN0VmVjdG9yO1xuICAgIGV4cG9ydCBpbXBvcnQgTWFwVmVjdG9yID0gdmVjdG9yXy5NYXBWZWN0b3I7XG4gICAgZXhwb3J0IGltcG9ydCBTdHJ1Y3RWZWN0b3IgPSB2ZWN0b3JfLlN0cnVjdFZlY3RvcjtcbiAgICBleHBvcnQgaW1wb3J0IFVuaW9uVmVjdG9yID0gdmVjdG9yXy5VbmlvblZlY3RvcjtcbiAgICBleHBvcnQgaW1wb3J0IERpY3Rpb25hcnlWZWN0b3IgPSB2ZWN0b3JfLkRpY3Rpb25hcnlWZWN0b3I7XG59XG5cbmV4cG9ydCBuYW1lc3BhY2UgdmlzaXRvciB7XG4gICAgZXhwb3J0IGltcG9ydCBUeXBlVmlzaXRvciA9IHZpc2l0b3JfLlR5cGVWaXNpdG9yO1xuICAgIGV4cG9ydCBpbXBvcnQgVmVjdG9yVmlzaXRvciA9IHZpc2l0b3JfLlZlY3RvclZpc2l0b3I7XG59XG5cbmV4cG9ydCBuYW1lc3BhY2UgdmlldyB7XG4gICAgZXhwb3J0IGltcG9ydCBDaHVua2VkVmlldyA9IHZpZXdfLkNodW5rZWRWaWV3O1xuICAgIGV4cG9ydCBpbXBvcnQgRGljdGlvbmFyeVZpZXcgPSB2aWV3Xy5EaWN0aW9uYXJ5VmlldztcbiAgICBleHBvcnQgaW1wb3J0IExpc3RWaWV3ID0gdmlld18uTGlzdFZpZXc7XG4gICAgZXhwb3J0IGltcG9ydCBGaXhlZFNpemVMaXN0VmlldyA9IHZpZXdfLkZpeGVkU2l6ZUxpc3RWaWV3O1xuICAgIGV4cG9ydCBpbXBvcnQgQmluYXJ5VmlldyA9IHZpZXdfLkJpbmFyeVZpZXc7XG4gICAgZXhwb3J0IGltcG9ydCBVdGY4VmlldyA9IHZpZXdfLlV0ZjhWaWV3O1xuICAgIGV4cG9ydCBpbXBvcnQgVW5pb25WaWV3ID0gdmlld18uVW5pb25WaWV3O1xuICAgIGV4cG9ydCBpbXBvcnQgRGVuc2VVbmlvblZpZXcgPSB2aWV3Xy5EZW5zZVVuaW9uVmlldztcbiAgICBleHBvcnQgaW1wb3J0IE5lc3RlZFZpZXcgPSB2aWV3Xy5OZXN0ZWRWaWV3O1xuICAgIGV4cG9ydCBpbXBvcnQgU3RydWN0VmlldyA9IHZpZXdfLlN0cnVjdFZpZXc7XG4gICAgZXhwb3J0IGltcG9ydCBNYXBWaWV3ID0gdmlld18uTWFwVmlldztcbiAgICBleHBvcnQgaW1wb3J0IEZsYXRWaWV3ID0gdmlld18uRmxhdFZpZXc7XG4gICAgZXhwb3J0IGltcG9ydCBOdWxsVmlldyA9IHZpZXdfLk51bGxWaWV3O1xuICAgIGV4cG9ydCBpbXBvcnQgQm9vbFZpZXcgPSB2aWV3Xy5Cb29sVmlldztcbiAgICBleHBvcnQgaW1wb3J0IFZhbGlkaXR5VmlldyA9IHZpZXdfLlZhbGlkaXR5VmlldztcbiAgICBleHBvcnQgaW1wb3J0IFByaW1pdGl2ZVZpZXcgPSB2aWV3Xy5QcmltaXRpdmVWaWV3O1xuICAgIGV4cG9ydCBpbXBvcnQgRml4ZWRTaXplVmlldyA9IHZpZXdfLkZpeGVkU2l6ZVZpZXc7XG4gICAgZXhwb3J0IGltcG9ydCBGbG9hdDE2VmlldyA9IHZpZXdfLkZsb2F0MTZWaWV3O1xuICAgIGV4cG9ydCBpbXBvcnQgRGF0ZURheVZpZXcgPSB2aWV3Xy5EYXRlRGF5VmlldztcbiAgICBleHBvcnQgaW1wb3J0IERhdGVNaWxsaXNlY29uZFZpZXcgPSB2aWV3Xy5EYXRlTWlsbGlzZWNvbmRWaWV3O1xuICAgIGV4cG9ydCBpbXBvcnQgVGltZXN0YW1wRGF5VmlldyA9IHZpZXdfLlRpbWVzdGFtcERheVZpZXc7XG4gICAgZXhwb3J0IGltcG9ydCBUaW1lc3RhbXBTZWNvbmRWaWV3ID0gdmlld18uVGltZXN0YW1wU2Vjb25kVmlldztcbiAgICBleHBvcnQgaW1wb3J0IFRpbWVzdGFtcE1pbGxpc2Vjb25kVmlldyA9IHZpZXdfLlRpbWVzdGFtcE1pbGxpc2Vjb25kVmlldztcbiAgICBleHBvcnQgaW1wb3J0IFRpbWVzdGFtcE1pY3Jvc2Vjb25kVmlldyA9IHZpZXdfLlRpbWVzdGFtcE1pY3Jvc2Vjb25kVmlldztcbiAgICBleHBvcnQgaW1wb3J0IFRpbWVzdGFtcE5hbm9zZWNvbmRWaWV3ID0gdmlld18uVGltZXN0YW1wTmFub3NlY29uZFZpZXc7XG4gICAgZXhwb3J0IGltcG9ydCBJbnRlcnZhbFllYXJNb250aFZpZXcgPSB2aWV3Xy5JbnRlcnZhbFllYXJNb250aFZpZXc7XG4gICAgZXhwb3J0IGltcG9ydCBJbnRlcnZhbFllYXJWaWV3ID0gdmlld18uSW50ZXJ2YWxZZWFyVmlldztcbiAgICBleHBvcnQgaW1wb3J0IEludGVydmFsTW9udGhWaWV3ID0gdmlld18uSW50ZXJ2YWxNb250aFZpZXc7XG59XG5cbmV4cG9ydCBuYW1lc3BhY2UgcHJlZGljYXRlIHtcbiAgICBleHBvcnQgaW1wb3J0IGNvbCA9IHByZWRpY2F0ZV8uY29sO1xuICAgIGV4cG9ydCBpbXBvcnQgbGl0ID0gcHJlZGljYXRlXy5saXQ7XG4gICAgZXhwb3J0IGltcG9ydCBjdXN0b20gPSBwcmVkaWNhdGVfLmN1c3RvbTtcblxuICAgIGV4cG9ydCBpbXBvcnQgT3IgPSBwcmVkaWNhdGVfLk9yO1xuICAgIGV4cG9ydCBpbXBvcnQgQ29sID0gcHJlZGljYXRlXy5Db2w7XG4gICAgZXhwb3J0IGltcG9ydCBBbmQgPSBwcmVkaWNhdGVfLkFuZDtcbiAgICBleHBvcnQgaW1wb3J0IEdUZXEgPSBwcmVkaWNhdGVfLkdUZXE7XG4gICAgZXhwb3J0IGltcG9ydCBMVGVxID0gcHJlZGljYXRlXy5MVGVxO1xuICAgIGV4cG9ydCBpbXBvcnQgVmFsdWUgPSBwcmVkaWNhdGVfLlZhbHVlO1xuICAgIGV4cG9ydCBpbXBvcnQgRXF1YWxzID0gcHJlZGljYXRlXy5FcXVhbHM7XG4gICAgZXhwb3J0IGltcG9ydCBMaXRlcmFsID0gcHJlZGljYXRlXy5MaXRlcmFsO1xuICAgIGV4cG9ydCBpbXBvcnQgUHJlZGljYXRlID0gcHJlZGljYXRlXy5QcmVkaWNhdGU7XG5cbiAgICBleHBvcnQgaW1wb3J0IFByZWRpY2F0ZUZ1bmMgPSBwcmVkaWNhdGVfLlByZWRpY2F0ZUZ1bmM7XG59XG5cbi8qIFRoZXNlIGV4cG9ydHMgYXJlIG5lZWRlZCBmb3IgdGhlIGNsb3N1cmUgYW5kIHVnbGlmeSB1bWQgdGFyZ2V0cyAqL1xudHJ5IHtcbiAgICBsZXQgQXJyb3c6IGFueSA9IGV2YWwoJ2V4cG9ydHMnKTtcbiAgICBpZiAoQXJyb3cgJiYgdHlwZW9mIEFycm93ID09PSAnb2JqZWN0Jykge1xuICAgICAgICAvLyBzdHJpbmcgaW5kZXhlcnMgdGVsbCBjbG9zdXJlIGFuZCB1Z2xpZnkgbm90IHRvIHJlbmFtZSB0aGVzZSBwcm9wZXJ0aWVzXG4gICAgICAgIEFycm93WydkYXRhJ10gPSBkYXRhO1xuICAgICAgICBBcnJvd1sndHlwZSddID0gdHlwZTtcbiAgICAgICAgQXJyb3dbJ3V0aWwnXSA9IHV0aWw7XG4gICAgICAgIEFycm93Wyd2aWV3J10gPSB2aWV3O1xuICAgICAgICBBcnJvd1snZW51bV8nXSA9IGVudW1fO1xuICAgICAgICBBcnJvd1sndmVjdG9yJ10gPSB2ZWN0b3I7XG4gICAgICAgIEFycm93Wyd2aXNpdG9yJ10gPSB2aXNpdG9yO1xuICAgICAgICBBcnJvd1sncHJlZGljYXRlJ10gPSBwcmVkaWNhdGU7XG5cbiAgICAgICAgQXJyb3dbJ3JlYWQnXSA9IHJlYWQ7XG4gICAgICAgIEFycm93WydyZWFkQXN5bmMnXSA9IHJlYWRBc3luYztcblxuICAgICAgICBBcnJvd1snVHlwZSddID0gVHlwZTtcbiAgICAgICAgQXJyb3dbJ0ZpZWxkJ10gPSBGaWVsZDtcbiAgICAgICAgQXJyb3dbJ1NjaGVtYSddID0gU2NoZW1hO1xuICAgICAgICBBcnJvd1snVmVjdG9yJ10gPSBWZWN0b3I7XG4gICAgICAgIEFycm93WydSZWNvcmRCYXRjaCddID0gUmVjb3JkQmF0Y2g7XG5cbiAgICAgICAgQXJyb3dbJ1RhYmxlJ10gPSBUYWJsZTtcbiAgICAgICAgQXJyb3dbJ0NvdW50QnlSZXN1bHQnXSA9IENvdW50QnlSZXN1bHQ7XG4gICAgfVxufSBjYXRjaCAoZSkgeyAvKiBub3QgdGhlIFVNRCBidW5kbGUgKi8gfVxuLyogZW5kIHVtZCBleHBvcnRzICovXG5cbi8vIGNsb3N1cmUgY29tcGlsZXIgZXJhc2VzIHN0YXRpYyBwcm9wZXJ0aWVzL21ldGhvZHM6XG4vLyBodHRwczovL2dpdGh1Yi5jb20vZ29vZ2xlL2Nsb3N1cmUtY29tcGlsZXIvaXNzdWVzLzE3NzZcbi8vIHNldCB0aGVtIHZpYSBzdHJpbmcgaW5kZXhlcnMgdG8gc2F2ZSB0aGVtIGZyb20gdGhlIG1hbmdsZXJcblNjaGVtYVsnZnJvbSddID0gU2NoZW1hLmZyb207XG5UYWJsZVsnZnJvbSddID0gVGFibGUuZnJvbTtcblRhYmxlWydmcm9tQXN5bmMnXSA9IFRhYmxlLmZyb21Bc3luYztcblRhYmxlWydlbXB0eSddID0gVGFibGUuZW1wdHk7XG5WZWN0b3JbJ2NyZWF0ZSddID0gVmVjdG9yLmNyZWF0ZTtcblJlY29yZEJhdGNoWydmcm9tJ10gPSBSZWNvcmRCYXRjaC5mcm9tO1xuXG51dGlsXy5VaW50NjRbJ2FkZCddID0gdXRpbF8uVWludDY0LmFkZDtcbnV0aWxfLlVpbnQ2NFsnbXVsdGlwbHknXSA9IHV0aWxfLlVpbnQ2NC5tdWx0aXBseTtcblxudXRpbF8uSW50NjRbJ2FkZCddID0gdXRpbF8uSW50NjQuYWRkO1xudXRpbF8uSW50NjRbJ211bHRpcGx5J10gPSB1dGlsXy5JbnQ2NC5tdWx0aXBseTtcbnV0aWxfLkludDY0Wydmcm9tU3RyaW5nJ10gPSB1dGlsXy5JbnQ2NC5mcm9tU3RyaW5nO1xuXG51dGlsXy5JbnQxMjhbJ2FkZCddID0gdXRpbF8uSW50MTI4LmFkZDtcbnV0aWxfLkludDEyOFsnbXVsdGlwbHknXSA9IHV0aWxfLkludDEyOC5tdWx0aXBseTtcbnV0aWxfLkludDEyOFsnZnJvbVN0cmluZyddID0gdXRpbF8uSW50MTI4LmZyb21TdHJpbmc7XG5cbmRhdGFfLkNodW5rZWREYXRhWydjb21wdXRlT2Zmc2V0cyddID0gZGF0YV8uQ2h1bmtlZERhdGEuY29tcHV0ZU9mZnNldHM7XG5cbih0eXBlXy5UeXBlIGFzIGFueSlbJ05PTkUnXSA9IHR5cGVfLlR5cGUuTk9ORTtcbih0eXBlXy5UeXBlIGFzIGFueSlbJ051bGwnXSA9IHR5cGVfLlR5cGUuTnVsbDtcbih0eXBlXy5UeXBlIGFzIGFueSlbJ0ludCddID0gdHlwZV8uVHlwZS5JbnQ7XG4odHlwZV8uVHlwZSBhcyBhbnkpWydGbG9hdCddID0gdHlwZV8uVHlwZS5GbG9hdDtcbih0eXBlXy5UeXBlIGFzIGFueSlbJ0JpbmFyeSddID0gdHlwZV8uVHlwZS5CaW5hcnk7XG4odHlwZV8uVHlwZSBhcyBhbnkpWydVdGY4J10gPSB0eXBlXy5UeXBlLlV0Zjg7XG4odHlwZV8uVHlwZSBhcyBhbnkpWydCb29sJ10gPSB0eXBlXy5UeXBlLkJvb2w7XG4odHlwZV8uVHlwZSBhcyBhbnkpWydEZWNpbWFsJ10gPSB0eXBlXy5UeXBlLkRlY2ltYWw7XG4odHlwZV8uVHlwZSBhcyBhbnkpWydEYXRlJ10gPSB0eXBlXy5UeXBlLkRhdGU7XG4odHlwZV8uVHlwZSBhcyBhbnkpWydUaW1lJ10gPSB0eXBlXy5UeXBlLlRpbWU7XG4odHlwZV8uVHlwZSBhcyBhbnkpWydUaW1lc3RhbXAnXSA9IHR5cGVfLlR5cGUuVGltZXN0YW1wO1xuKHR5cGVfLlR5cGUgYXMgYW55KVsnSW50ZXJ2YWwnXSA9IHR5cGVfLlR5cGUuSW50ZXJ2YWw7XG4odHlwZV8uVHlwZSBhcyBhbnkpWydMaXN0J10gPSB0eXBlXy5UeXBlLkxpc3Q7XG4odHlwZV8uVHlwZSBhcyBhbnkpWydTdHJ1Y3QnXSA9IHR5cGVfLlR5cGUuU3RydWN0O1xuKHR5cGVfLlR5cGUgYXMgYW55KVsnVW5pb24nXSA9IHR5cGVfLlR5cGUuVW5pb247XG4odHlwZV8uVHlwZSBhcyBhbnkpWydGaXhlZFNpemVCaW5hcnknXSA9IHR5cGVfLlR5cGUuRml4ZWRTaXplQmluYXJ5O1xuKHR5cGVfLlR5cGUgYXMgYW55KVsnRml4ZWRTaXplTGlzdCddID0gdHlwZV8uVHlwZS5GaXhlZFNpemVMaXN0O1xuKHR5cGVfLlR5cGUgYXMgYW55KVsnTWFwJ10gPSB0eXBlXy5UeXBlLk1hcDtcbih0eXBlXy5UeXBlIGFzIGFueSlbJ0RpY3Rpb25hcnknXSA9IHR5cGVfLlR5cGUuRGljdGlvbmFyeTtcbih0eXBlXy5UeXBlIGFzIGFueSlbJ0RlbnNlVW5pb24nXSA9IHR5cGVfLlR5cGUuRGVuc2VVbmlvbjtcbih0eXBlXy5UeXBlIGFzIGFueSlbJ1NwYXJzZVVuaW9uJ10gPSB0eXBlXy5UeXBlLlNwYXJzZVVuaW9uO1xuXG50eXBlXy5EYXRhVHlwZVsnaXNOdWxsJ10gPSB0eXBlXy5EYXRhVHlwZS5pc051bGw7XG50eXBlXy5EYXRhVHlwZVsnaXNJbnQnXSA9IHR5cGVfLkRhdGFUeXBlLmlzSW50O1xudHlwZV8uRGF0YVR5cGVbJ2lzRmxvYXQnXSA9IHR5cGVfLkRhdGFUeXBlLmlzRmxvYXQ7XG50eXBlXy5EYXRhVHlwZVsnaXNCaW5hcnknXSA9IHR5cGVfLkRhdGFUeXBlLmlzQmluYXJ5O1xudHlwZV8uRGF0YVR5cGVbJ2lzVXRmOCddID0gdHlwZV8uRGF0YVR5cGUuaXNVdGY4O1xudHlwZV8uRGF0YVR5cGVbJ2lzQm9vbCddID0gdHlwZV8uRGF0YVR5cGUuaXNCb29sO1xudHlwZV8uRGF0YVR5cGVbJ2lzRGVjaW1hbCddID0gdHlwZV8uRGF0YVR5cGUuaXNEZWNpbWFsO1xudHlwZV8uRGF0YVR5cGVbJ2lzRGF0ZSddID0gdHlwZV8uRGF0YVR5cGUuaXNEYXRlO1xudHlwZV8uRGF0YVR5cGVbJ2lzVGltZSddID0gdHlwZV8uRGF0YVR5cGUuaXNUaW1lO1xudHlwZV8uRGF0YVR5cGVbJ2lzVGltZXN0YW1wJ10gPSB0eXBlXy5EYXRhVHlwZS5pc1RpbWVzdGFtcDtcbnR5cGVfLkRhdGFUeXBlWydpc0ludGVydmFsJ10gPSB0eXBlXy5EYXRhVHlwZS5pc0ludGVydmFsO1xudHlwZV8uRGF0YVR5cGVbJ2lzTGlzdCddID0gdHlwZV8uRGF0YVR5cGUuaXNMaXN0O1xudHlwZV8uRGF0YVR5cGVbJ2lzU3RydWN0J10gPSB0eXBlXy5EYXRhVHlwZS5pc1N0cnVjdDtcbnR5cGVfLkRhdGFUeXBlWydpc1VuaW9uJ10gPSB0eXBlXy5EYXRhVHlwZS5pc1VuaW9uO1xudHlwZV8uRGF0YVR5cGVbJ2lzRGVuc2VVbmlvbiddID0gdHlwZV8uRGF0YVR5cGUuaXNEZW5zZVVuaW9uO1xudHlwZV8uRGF0YVR5cGVbJ2lzU3BhcnNlVW5pb24nXSA9IHR5cGVfLkRhdGFUeXBlLmlzU3BhcnNlVW5pb247XG50eXBlXy5EYXRhVHlwZVsnaXNGaXhlZFNpemVCaW5hcnknXSA9IHR5cGVfLkRhdGFUeXBlLmlzRml4ZWRTaXplQmluYXJ5O1xudHlwZV8uRGF0YVR5cGVbJ2lzRml4ZWRTaXplTGlzdCddID0gdHlwZV8uRGF0YVR5cGUuaXNGaXhlZFNpemVMaXN0O1xudHlwZV8uRGF0YVR5cGVbJ2lzTWFwJ10gPSB0eXBlXy5EYXRhVHlwZS5pc01hcDtcbnR5cGVfLkRhdGFUeXBlWydpc0RpY3Rpb25hcnknXSA9IHR5cGVfLkRhdGFUeXBlLmlzRGljdGlvbmFyeTtcblxudmVjdG9yXy5Cb29sVmVjdG9yWydmcm9tJ10gPSB2ZWN0b3JfLkJvb2xWZWN0b3IuZnJvbTtcbnZlY3Rvcl8uSW50VmVjdG9yWydmcm9tJ10gPSB2ZWN0b3JfLkludFZlY3Rvci5mcm9tO1xudmVjdG9yXy5GbG9hdFZlY3RvclsnZnJvbSddID0gdmVjdG9yXy5GbG9hdFZlY3Rvci5mcm9tO1xuXG52aXNpdG9yXy5UeXBlVmlzaXRvclsndmlzaXRUeXBlSW5saW5lJ10gPSB2aXNpdG9yXy5UeXBlVmlzaXRvci52aXNpdFR5cGVJbmxpbmU7XG52aXNpdG9yXy5WZWN0b3JWaXNpdG9yWyd2aXNpdFR5cGVJbmxpbmUnXSA9IHZpc2l0b3JfLlZlY3RvclZpc2l0b3IudmlzaXRUeXBlSW5saW5lOyJdfQ==

19

package.json
{
"name": "@apache-arrow/es2015-esm",
"version": "0.2.0",
"version": "0.3.0",
"main": "Arrow.js",
"types": "Arrow.d.ts",
"@std/esm": {
"esm": "js"
"esm": "js",
"warnings": false,
"sourceMap": true
},

@@ -25,6 +27,15 @@ "license": "Apache-2.0",

"dependencies": {
"@types/flatbuffers": "1.6.5",
"@types/node": "9.3.0",
"@types/text-encoding-utf-8": "1.0.1",
"command-line-args": "5.0.1",
"command-line-usage": "4.1.0",
"flatbuffers": "trxcllnt/flatbuffers-esm",
"json-bignum": "0.0.3",
"text-encoding-utf-8": "^1.0.2",
"tslib": "^1.8.0"
"tslib": "1.9.0"
},
"bin": {
"arrow2csv": "bin/arrow2csv.js"
}
}
}

@@ -25,3 +25,3 @@ <!---

Arrow is a set of technologies that enable big-data systems to process and transfer data quickly.
Arrow is a set of technologies that enable big data systems to process and transfer data quickly.

@@ -36,11 +36,6 @@ ## install [apache-arrow from npm](https://www.npmjs.com/package/apache-arrow)

Apache Arrow is a columnar memory layout specification for encoding vectors and table-like containers of flat and nested data. The Arrow spec aligns columnar data in memory to minimize cache misses and take advantage of the latest SIMD (Single input multiple data) and GPU operations on modern processors.
[Apache Arrow](https://github.com/apache/arrow) is a columnar memory layout specification for encoding vectors and table-like containers of flat and nested data. The Arrow spec aligns columnar data in memory to minimize cache misses and take advantage of the latest SIMD (Single input multiple data) and GPU operations on modern processors.
Apache Arrow is the emerging standard for large in-memory columnar data ([Spark](https://spark.apache.org/), [Pandas](http://wesmckinney.com/blog/pandas-and-apache-arrow/), [Drill](https://drill.apache.org/), ...). By standardizing on a common binary interchange format, big data systems can reduce the costs and friction associated with cross-system communication.
Apache Arrow is the emerging standard for large in-memory columnar data ([Spark](https://spark.apache.org/), [Pandas](http://wesmckinney.com/blog/pandas-and-apache-arrow/), [Drill](https://drill.apache.org/), [Graphistry](https://www.graphistry.com), ...). By standardizing on a common binary interchange format, big data systems can reduce the costs and friction associated with cross-system communication.
# Related Projects
* [GoAI](http://gpuopenanalytics.com/) -- Arrow-powered GPU analytics
* [rxjs-mapd](https://github.com/graphistry/rxjs-mapd) -- A MapD Core node-driver that returns query results as Arrow columns
# Usage

@@ -188,3 +183,3 @@

```sh
npm install apache-arrow # <-- combined es5/CommonJS + UMD, es2015/ESModules + UMD, and TypeScript package
npm install apache-arrow # <-- combined es5/UMD, es2015/CommonJS/ESModules/UMD, and TypeScript package
npm install @apache-arrow/ts # standalone TypeScript package

@@ -208,2 +203,24 @@ npm install @apache-arrow/es5-cjs # standalone es5/CommonJS package

# People
Full list of broader Apache Arrow [committers](https://arrow.apache.org/committers/).
* Brian Hulette, CCRi, _contributor_
* Paul Taylor, Graphistry, Inc., _committer_
# Powered By Apache Arrow in JS
Full list of broader Apache Arrow [projects & organizations](https://github.com/apache/arrow/blob/master/site/powered_by.md).
## Open Source Projects
* [Apache Arrow](https://arrow.apache.org) -- Parent project for Powering Columnar In-Memory Analytics, including affiliated open source projects
* [rxjs-mapd](https://github.com/graphistry/rxjs-mapd) -- A MapD Core node-driver that returns query results as Arrow columns
## Companies & Organizations
* [CCRi](http://www.ccri.com/) -- Commonwealth Computer Research Inc, or CCRi, is a Central Virginia based data science and software engineering company
* [GOAI](http://gpuopenanalytics.com/) -- GPU Open Analytics Initiative standardizes on Arrow as part of creating common data frameworks that enable developers and statistical researchers to accelerate data science on GPUs
* [Graphistry, Inc.](https://www.graphistry.com/) - An end-to-end GPU accelerated visual investigation platform used by teams for security, anti-fraud, and related investigations. Graphistry uses Arrow in its NodeJS GPU backend and client libraries, and is an early contributing member to GOAI and Arrow\[JS\] working to bring these technologies to the enterprise.
# License

@@ -216,2 +233,2 @@

[3]: https://issues.apache.org/jira/browse/ARROW
[4]: https://github.com/apache/arrow
[4]: https://github.com/apache/arrow

@@ -1,15 +0,15 @@

import { Vector } from './vector';
export declare class DictionaryVector<T> extends Vector<T> {
readonly length: number;
readonly data: Vector<T>;
readonly keys: Vector<number>;
constructor(argv: {
data: Vector<T>;
keys: Vector<number>;
});
get(index: number): T | null;
getKey(index: number): number | null;
getValue(key: number): T | null;
concat(...vectors: Vector<T>[]): Vector<T>;
[Symbol.iterator](): IterableIterator<T | null>;
import { Data } from '../data';
import { View, Vector } from '../vector';
import { IterableArrayLike, DataType, Dictionary, Int } from '../type';
export declare class DictionaryView<T extends DataType> implements View<T> {
indicies: Vector<Int>;
dictionary: Vector<T>;
constructor(dictionary: Vector<T>, indicies: Vector<Int>);
clone(data: Data<Dictionary<T>>): this;
isValid(index: number): boolean;
get(index: number): T['TValue'];
set(index: number, value: T['TValue']): void;
toArray(): IterableArrayLike<T['TValue']>;
[Symbol.iterator](): IterableIterator<T['TValue']>;
indexOf(search: T['TValue']): number;
}

@@ -17,30 +17,39 @@ // Licensed to the Apache Software Foundation (ASF) under one

// under the License.
import { Vector } from './vector';
import { VirtualVector } from './virtual';
export class DictionaryVector extends Vector {
constructor(argv) {
super();
this.data = argv.data;
this.keys = argv.keys;
this.length = this.keys.length;
export class DictionaryView {
constructor(dictionary, indicies) {
this.indicies = indicies;
this.dictionary = dictionary;
}
clone(data) {
return new DictionaryView(data.dictionary, this.indicies.clone(data.indicies));
}
isValid(index) {
return this.indicies.isValid(index);
}
get(index) {
return this.getValue(this.getKey(index));
return this.dictionary.get(this.indicies.get(index));
}
getKey(index) {
return this.keys.get(index);
set(index, value) {
this.dictionary.set(this.indicies.get(index), value);
}
getValue(key) {
return this.data.get(key);
toArray() {
return [...this];
}
concat(...vectors) {
return new VirtualVector(Array, this, ...vectors);
}
*[Symbol.iterator]() {
for (let i = -1, n = this.length; ++i < n;) {
yield this.get(i);
const values = this.dictionary, indicies = this.indicies;
for (let index = -1, n = indicies.length; ++index < n;) {
yield values.get(indicies.get(index));
}
}
indexOf(search) {
// First find the dictionary key for the desired value...
const key = this.dictionary.indexOf(search);
if (key === -1) {
return key;
}
// ... then find the first occurence of that key in indicies
return this.indicies.indexOf(key);
}
}
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInZlY3Rvci9kaWN0aW9uYXJ5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDZEQUE2RDtBQUM3RCwrREFBK0Q7QUFDL0Qsd0RBQXdEO0FBQ3hELDZEQUE2RDtBQUM3RCxvREFBb0Q7QUFDcEQsNkRBQTZEO0FBQzdELDZEQUE2RDtBQUM3RCxFQUFFO0FBQ0YsK0NBQStDO0FBQy9DLEVBQUU7QUFDRiw2REFBNkQ7QUFDN0QsOERBQThEO0FBQzlELHlEQUF5RDtBQUN6RCw0REFBNEQ7QUFDNUQsMERBQTBEO0FBQzFELHFCQUFxQjtBQUVyQixPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ2xDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFFMUMsTUFBTSx1QkFBMkIsU0FBUSxNQUFTO0lBSTlDLFlBQVksSUFBK0M7UUFDdkQsS0FBSyxFQUFFLENBQUM7UUFDUixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDdEIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDbkMsQ0FBQztJQUNELEdBQUcsQ0FBQyxLQUFhO1FBQ2IsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUUsQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFDRCxNQUFNLENBQUMsS0FBYTtRQUNoQixNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUNELFFBQVEsQ0FBQyxHQUFXO1FBQ2hCLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBQ0QsTUFBTSxDQUFDLEdBQUcsT0FBb0I7UUFDMUIsTUFBTSxDQUFDLElBQUksYUFBYSxDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsR0FBRyxPQUFPLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBQ0QsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUM7UUFDZCxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQztZQUN6QyxNQUFNLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdEIsQ0FBQztJQUNMLENBQUM7Q0FDSiIsImZpbGUiOiJ2ZWN0b3IvZGljdGlvbmFyeS5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8vIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmVcbi8vIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZVxuLy8gZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb25cbi8vIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGVcbi8vIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGVcbi8vIFwiTGljZW5zZVwiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZVxuLy8gd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuLy9cbi8vICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4vL1xuLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLFxuLy8gc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW5cbi8vIFwiQVMgSVNcIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZXG4vLyBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGVcbi8vIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnNcbi8vIHVuZGVyIHRoZSBMaWNlbnNlLlxuXG5pbXBvcnQgeyBWZWN0b3IgfSBmcm9tICcuL3ZlY3Rvcic7XG5pbXBvcnQgeyBWaXJ0dWFsVmVjdG9yIH0gZnJvbSAnLi92aXJ0dWFsJztcblxuZXhwb3J0IGNsYXNzIERpY3Rpb25hcnlWZWN0b3I8VD4gZXh0ZW5kcyBWZWN0b3I8VD4ge1xuICAgIHJlYWRvbmx5IGxlbmd0aDogbnVtYmVyO1xuICAgIHJlYWRvbmx5IGRhdGE6IFZlY3RvcjxUPjtcbiAgICByZWFkb25seSBrZXlzOiBWZWN0b3I8bnVtYmVyPjtcbiAgICBjb25zdHJ1Y3Rvcihhcmd2OiB7IGRhdGE6IFZlY3RvcjxUPiwga2V5czogVmVjdG9yPG51bWJlcj4gfSkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLmRhdGEgPSBhcmd2LmRhdGE7XG4gICAgICAgIHRoaXMua2V5cyA9IGFyZ3Yua2V5cztcbiAgICAgICAgdGhpcy5sZW5ndGggPSB0aGlzLmtleXMubGVuZ3RoO1xuICAgIH1cbiAgICBnZXQoaW5kZXg6IG51bWJlcikge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRWYWx1ZSh0aGlzLmdldEtleShpbmRleCkhKTtcbiAgICB9XG4gICAgZ2V0S2V5KGluZGV4OiBudW1iZXIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMua2V5cy5nZXQoaW5kZXgpO1xuICAgIH1cbiAgICBnZXRWYWx1ZShrZXk6IG51bWJlcikge1xuICAgICAgICByZXR1cm4gdGhpcy5kYXRhLmdldChrZXkpO1xuICAgIH1cbiAgICBjb25jYXQoLi4udmVjdG9yczogVmVjdG9yPFQ+W10pOiBWZWN0b3I8VD4ge1xuICAgICAgICByZXR1cm4gbmV3IFZpcnR1YWxWZWN0b3IoQXJyYXksIHRoaXMsIC4uLnZlY3RvcnMpO1xuICAgIH1cbiAgICAqW1N5bWJvbC5pdGVyYXRvcl0oKSB7XG4gICAgICAgIGZvciAobGV0IGkgPSAtMSwgbiA9IHRoaXMubGVuZ3RoOyArK2kgPCBuOykge1xuICAgICAgICAgICAgeWllbGQgdGhpcy5nZXQoaSk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInZlY3Rvci9kaWN0aW9uYXJ5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDZEQUE2RDtBQUM3RCwrREFBK0Q7QUFDL0Qsd0RBQXdEO0FBQ3hELDZEQUE2RDtBQUM3RCxvREFBb0Q7QUFDcEQsNkRBQTZEO0FBQzdELDZEQUE2RDtBQUM3RCxFQUFFO0FBQ0YsK0NBQStDO0FBQy9DLEVBQUU7QUFDRiw2REFBNkQ7QUFDN0QsOERBQThEO0FBQzlELHlEQUF5RDtBQUN6RCw0REFBNEQ7QUFDNUQsMERBQTBEO0FBQzFELHFCQUFxQjtBQU1yQixNQUFNO0lBR0YsWUFBWSxVQUFxQixFQUFFLFFBQXFCO1FBQ3BELElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO0lBQ2pDLENBQUM7SUFDTSxLQUFLLENBQUMsSUFBeUI7UUFDbEMsTUFBTSxDQUFDLElBQUksY0FBYyxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFTLENBQUM7SUFDM0YsQ0FBQztJQUNNLE9BQU8sQ0FBQyxLQUFhO1FBQ3hCLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBQ00sR0FBRyxDQUFDLEtBQWE7UUFDcEIsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDekQsQ0FBQztJQUNNLEdBQUcsQ0FBQyxLQUFhLEVBQUUsS0FBa0I7UUFDeEMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDekQsQ0FBQztJQUNNLE9BQU87UUFDVixNQUFNLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDO0lBQ3JCLENBQUM7SUFDTSxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQztRQUNyQixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO1FBQ3pELEdBQUcsQ0FBQyxDQUFDLElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxRQUFRLENBQUMsTUFBTSxFQUFFLEVBQUUsS0FBSyxHQUFHLENBQUMsR0FBRyxDQUFDO1lBQ3JELE1BQU0sTUFBTSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDMUMsQ0FBQztJQUNMLENBQUM7SUFDTSxPQUFPLENBQUMsTUFBbUI7UUFDOUIseURBQXlEO1FBQ3pELE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzVDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFBQyxNQUFNLENBQUMsR0FBRyxDQUFDO1FBQUMsQ0FBQztRQUUvQiw0REFBNEQ7UUFDNUQsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEdBQUksQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7Q0FDSiIsImZpbGUiOiJ2ZWN0b3IvZGljdGlvbmFyeS5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8vIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmVcbi8vIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZVxuLy8gZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb25cbi8vIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGVcbi8vIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGVcbi8vIFwiTGljZW5zZVwiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZVxuLy8gd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuLy9cbi8vICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4vL1xuLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLFxuLy8gc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW5cbi8vIFwiQVMgSVNcIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZXG4vLyBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGVcbi8vIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnNcbi8vIHVuZGVyIHRoZSBMaWNlbnNlLlxuXG5pbXBvcnQgeyBEYXRhIH0gZnJvbSAnLi4vZGF0YSc7XG5pbXBvcnQgeyBWaWV3LCBWZWN0b3IgfSBmcm9tICcuLi92ZWN0b3InO1xuaW1wb3J0IHsgSXRlcmFibGVBcnJheUxpa2UsIERhdGFUeXBlLCBEaWN0aW9uYXJ5LCBJbnQgfSBmcm9tICcuLi90eXBlJztcblxuZXhwb3J0IGNsYXNzIERpY3Rpb25hcnlWaWV3PFQgZXh0ZW5kcyBEYXRhVHlwZT4gaW1wbGVtZW50cyBWaWV3PFQ+IHtcbiAgICBwdWJsaWMgaW5kaWNpZXM6IFZlY3RvcjxJbnQ+O1xuICAgIHB1YmxpYyBkaWN0aW9uYXJ5OiBWZWN0b3I8VD47XG4gICAgY29uc3RydWN0b3IoZGljdGlvbmFyeTogVmVjdG9yPFQ+LCBpbmRpY2llczogVmVjdG9yPEludD4pIHtcbiAgICAgICAgdGhpcy5pbmRpY2llcyA9IGluZGljaWVzO1xuICAgICAgICB0aGlzLmRpY3Rpb25hcnkgPSBkaWN0aW9uYXJ5O1xuICAgIH1cbiAgICBwdWJsaWMgY2xvbmUoZGF0YTogRGF0YTxEaWN0aW9uYXJ5PFQ+Pik6IHRoaXMge1xuICAgICAgICByZXR1cm4gbmV3IERpY3Rpb25hcnlWaWV3KGRhdGEuZGljdGlvbmFyeSwgdGhpcy5pbmRpY2llcy5jbG9uZShkYXRhLmluZGljaWVzKSkgYXMgdGhpcztcbiAgICB9XG4gICAgcHVibGljIGlzVmFsaWQoaW5kZXg6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5pbmRpY2llcy5pc1ZhbGlkKGluZGV4KTtcbiAgICB9XG4gICAgcHVibGljIGdldChpbmRleDogbnVtYmVyKTogVFsnVFZhbHVlJ10ge1xuICAgICAgICByZXR1cm4gdGhpcy5kaWN0aW9uYXJ5LmdldCh0aGlzLmluZGljaWVzLmdldChpbmRleCkpO1xuICAgIH1cbiAgICBwdWJsaWMgc2V0KGluZGV4OiBudW1iZXIsIHZhbHVlOiBUWydUVmFsdWUnXSk6IHZvaWQge1xuICAgICAgICB0aGlzLmRpY3Rpb25hcnkuc2V0KHRoaXMuaW5kaWNpZXMuZ2V0KGluZGV4KSwgdmFsdWUpO1xuICAgIH1cbiAgICBwdWJsaWMgdG9BcnJheSgpOiBJdGVyYWJsZUFycmF5TGlrZTxUWydUVmFsdWUnXT4ge1xuICAgICAgICByZXR1cm4gWy4uLnRoaXNdO1xuICAgIH1cbiAgICBwdWJsaWMgKltTeW1ib2wuaXRlcmF0b3JdKCk6IEl0ZXJhYmxlSXRlcmF0b3I8VFsnVFZhbHVlJ10+IHtcbiAgICAgICAgY29uc3QgdmFsdWVzID0gdGhpcy5kaWN0aW9uYXJ5LCBpbmRpY2llcyA9IHRoaXMuaW5kaWNpZXM7XG4gICAgICAgIGZvciAobGV0IGluZGV4ID0gLTEsIG4gPSBpbmRpY2llcy5sZW5ndGg7ICsraW5kZXggPCBuOykge1xuICAgICAgICAgICAgeWllbGQgdmFsdWVzLmdldChpbmRpY2llcy5nZXQoaW5kZXgpKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBwdWJsaWMgaW5kZXhPZihzZWFyY2g6IFRbJ1RWYWx1ZSddKSB7XG4gICAgICAgIC8vIEZpcnN0IGZpbmQgdGhlIGRpY3Rpb25hcnkga2V5IGZvciB0aGUgZGVzaXJlZCB2YWx1ZS4uLlxuICAgICAgICBjb25zdCBrZXkgPSB0aGlzLmRpY3Rpb25hcnkuaW5kZXhPZihzZWFyY2gpO1xuICAgICAgICBpZiAoa2V5ID09PSAtMSkgeyByZXR1cm4ga2V5OyB9XG5cbiAgICAgICAgLy8gLi4uIHRoZW4gZmluZCB0aGUgZmlyc3Qgb2NjdXJlbmNlIG9mIHRoYXQga2V5IGluIGluZGljaWVzXG4gICAgICAgIHJldHVybiB0aGlzLmluZGljaWVzLmluZGV4T2Yoa2V5ISk7XG4gICAgfVxufVxuIl19

@@ -1,32 +0,43 @@

import { List } from './types';
import { Vector } from './vector';
export declare class BinaryVector extends Vector<Uint8Array> {
readonly data: Uint8Array;
readonly offsets: Int32Array;
constructor(argv: {
offsets: Int32Array;
data: Uint8Array;
});
get(index: number): Uint8Array;
concat(...vectors: Vector<Uint8Array>[]): Vector<Uint8Array>;
import { Data } from '../data';
import { View, Vector } from '../vector';
import { List, Binary, Utf8, FixedSizeList, FlatListType } from '../type';
import { ListType, DataType, IterableArrayLike } from '../type';
export declare const encodeUtf8: (input?: string | undefined) => Uint8Array;
export declare const decodeUtf8: (input?: SharedArrayBuffer | ArrayBuffer | ArrayBufferView | undefined) => string;
export declare abstract class ListViewBase<T extends (ListType | FlatListType | FixedSizeList)> implements View<T> {
length: number;
values: T['TArray'];
valueOffsets?: Int32Array;
constructor(data: Data<T>);
clone(data: Data<T>): this;
isValid(): boolean;
toArray(): IterableArrayLike<T['TValue']>;
get(index: number): T['TValue'];
set(index: number, value: T['TValue']): void;
[Symbol.iterator](): IterableIterator<T['TValue']>;
indexOf(search: T['TValue']): number;
protected abstract getList(values: T['TArray'], index: number, valueOffsets?: Int32Array): T['TValue'];
protected abstract setList(values: T['TArray'], index: number, value: T['TValue'], valueOffsets?: Int32Array): void;
}
export declare class ListVector<T> extends Vector<T[]> {
readonly offsets: Int32Array;
readonly values: Vector<T>;
constructor(argv: {
offsets: Int32Array;
values: Vector<T>;
});
get(index: number): any[];
concat(...vectors: Vector<T[]>[]): Vector<T[]>;
export declare abstract class VariableListViewBase<T extends (ListType | FlatListType)> extends ListViewBase<T> {
constructor(data: Data<T>);
}
export declare class FixedSizeListVector<T, TArray extends List<T>> extends Vector<TArray> {
readonly size: number;
readonly values: Vector<T>;
constructor(argv: {
size: number;
values: Vector<T>;
});
get(index: number): TArray;
concat(...vectors: Vector<TArray>[]): Vector<TArray>;
export declare class ListView<T extends DataType> extends VariableListViewBase<List<T>> {
constructor(data: Data<List<T>>);
protected getList(values: Vector<T>, index: number, valueOffsets: Int32Array): Vector<T>;
protected setList(values: Vector<T>, index: number, value: Vector<T>, valueOffsets: Int32Array): void;
}
export declare class FixedSizeListView<T extends DataType> extends ListViewBase<FixedSizeList<T>> {
size: number;
constructor(data: Data<FixedSizeList<T>>);
protected getList(values: Vector<T>, index: number): Vector<T>;
protected setList(values: Vector<T>, index: number, value: Vector<T>): void;
}
export declare class BinaryView extends VariableListViewBase<Binary> {
protected getList(values: Uint8Array, index: number, valueOffsets: Int32Array): Uint8Array;
protected setList(values: Uint8Array, index: number, value: Uint8Array, valueOffsets: Int32Array): void;
}
export declare class Utf8View extends VariableListViewBase<Utf8> {
protected getList(values: Uint8Array, index: number, valueOffsets: Int32Array): string;
protected setList(values: Uint8Array, index: number, value: string, valueOffsets: Int32Array): void;
}

@@ -17,50 +17,104 @@ // Licensed to the Apache Software Foundation (ASF) under one

// under the License.
import { Vector } from './vector';
import { VirtualVector } from './virtual';
export class BinaryVector extends Vector {
constructor(argv) {
super();
this.data = argv.data;
this.offsets = argv.offsets;
import { createVector } from '../vector';
import { TextEncoder, TextDecoder } from 'text-encoding-utf-8';
export const encodeUtf8 = ((encoder) => encoder.encode.bind(encoder))(new TextEncoder('utf-8'));
export const decodeUtf8 = ((decoder) => decoder.decode.bind(decoder))(new TextDecoder('utf-8'));
export class ListViewBase {
constructor(data) {
this.length = data.length;
this.values = data.values;
}
clone(data) {
return new this.constructor(data);
}
isValid() {
return true;
}
toArray() {
return [...this];
}
get(index) {
return this.data.subarray(this.offsets[index], this.offsets[index + 1]);
return this.getList(this.values, index, this.valueOffsets);
}
concat(...vectors) {
return new VirtualVector(Array, this, ...vectors);
set(index, value) {
return this.setList(this.values, index, value, this.valueOffsets);
}
*[Symbol.iterator]() {
const get = this.getList, length = this.length;
const values = this.values, valueOffsets = this.valueOffsets;
for (let index = -1; ++index < length;) {
yield get(values, index, valueOffsets);
}
}
indexOf(search) {
let index = 0;
for (let value of this) {
if (value === search) {
return index;
}
++index;
}
return -1;
}
}
export class ListVector extends Vector {
constructor(argv) {
super();
this.values = argv.values;
this.offsets = argv.offsets;
export class VariableListViewBase extends ListViewBase {
constructor(data) {
super(data);
this.length = data.length;
this.valueOffsets = data.valueOffsets;
}
get(index) {
const { offsets, values } = this;
const from = offsets[index];
const xs = new Array(offsets[index + 1] - from);
for (let i = -1, n = xs.length; ++i < n;) {
xs[i] = values.get(i + from);
}
export class ListView extends VariableListViewBase {
constructor(data) {
super(data);
this.values = createVector(data.values);
}
getList(values, index, valueOffsets) {
return values.slice(valueOffsets[index], valueOffsets[index + 1]);
}
setList(values, index, value, valueOffsets) {
let idx = -1;
let offset = valueOffsets[index];
let end = Math.min(value.length, valueOffsets[index + 1] - offset);
while (offset < end) {
values.set(offset++, value.get(++idx));
}
return xs;
}
concat(...vectors) {
return new VirtualVector(Array, this, ...vectors);
}
export class FixedSizeListView extends ListViewBase {
constructor(data) {
super(data);
this.size = data.type.listSize;
this.values = createVector(data.values);
}
getList(values, index) {
const size = this.size;
return values.slice(index *= size, index + size);
}
setList(values, index, value) {
let size = this.size;
for (let idx = -1, offset = index * size; ++idx < size;) {
values.set(offset + idx, value.get(++idx));
}
}
}
export class FixedSizeListVector extends Vector {
constructor(argv) {
super();
this.size = argv.size;
this.values = argv.values;
export class BinaryView extends VariableListViewBase {
getList(values, index, valueOffsets) {
return values.subarray(valueOffsets[index], valueOffsets[index + 1]);
}
get(index) {
return this.values.slice(this.size * index, this.size * (index + 1));
setList(values, index, value, valueOffsets) {
const offset = valueOffsets[index];
values.set(value.subarray(0, valueOffsets[index + 1] - offset), offset);
}
concat(...vectors) {
return new VirtualVector(Array, this, ...vectors);
}
export class Utf8View extends VariableListViewBase {
getList(values, index, valueOffsets) {
return decodeUtf8(values.subarray(valueOffsets[index], valueOffsets[index + 1]));
}
setList(values, index, value, valueOffsets) {
const offset = valueOffsets[index];
values.set(encodeUtf8(value).subarray(0, valueOffsets[index + 1] - offset), offset);
}
}
//# sourceMappingURL=data:application/json;charset=utf8;base64,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QUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNqRixDQUFDO0lBQ0QsTUFBTSxDQUFDLEdBQUcsT0FBeUI7UUFDL0IsTUFBTSxDQUFDLElBQUksYUFBYSxDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsR0FBRyxPQUFPLENBQUMsQ0FBQztJQUN0RCxDQUFDO0NBQ0oiLCJmaWxlIjoidmVjdG9yL2xpc3QuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lXG4vLyBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGVcbi8vIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uXG4vLyByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlXG4vLyB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlXG4vLyBcIkxpY2Vuc2VcIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Vcbi8vIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbi8vXG4vLyAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuLy9cbi8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZyxcbi8vIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuXG4vLyBcIkFTIElTXCIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWVxuLy8gS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlXG4vLyBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zXG4vLyB1bmRlciB0aGUgTGljZW5zZS5cblxuaW1wb3J0IHsgTGlzdCB9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHsgVmVjdG9yIH0gZnJvbSAnLi92ZWN0b3InO1xuaW1wb3J0IHsgVmlydHVhbFZlY3RvciB9IGZyb20gJy4vdmlydHVhbCc7XG5cbmV4cG9ydCBjbGFzcyBCaW5hcnlWZWN0b3IgZXh0ZW5kcyBWZWN0b3I8VWludDhBcnJheT4ge1xuICAgIHJlYWRvbmx5IGRhdGE6IFVpbnQ4QXJyYXk7XG4gICAgcmVhZG9ubHkgb2Zmc2V0czogSW50MzJBcnJheTtcbiAgICBjb25zdHJ1Y3Rvcihhcmd2OiB7IG9mZnNldHM6IEludDMyQXJyYXksIGRhdGE6IFVpbnQ4QXJyYXkgfSkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLmRhdGEgPSBhcmd2LmRhdGE7XG4gICAgICAgIHRoaXMub2Zmc2V0cyA9IGFyZ3Yub2Zmc2V0cztcbiAgICB9XG4gICAgZ2V0KGluZGV4OiBudW1iZXIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGF0YS5zdWJhcnJheSh0aGlzLm9mZnNldHNbaW5kZXhdLCB0aGlzLm9mZnNldHNbaW5kZXggKyAxXSk7XG4gICAgfVxuICAgIGNvbmNhdCguLi52ZWN0b3JzOiBWZWN0b3I8VWludDhBcnJheT5bXSk6IFZlY3RvcjxVaW50OEFycmF5PiB7XG4gICAgICAgIHJldHVybiBuZXcgVmlydHVhbFZlY3RvcihBcnJheSwgdGhpcywgLi4udmVjdG9ycyk7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgTGlzdFZlY3RvcjxUPiBleHRlbmRzIFZlY3RvcjxUW10+IHtcbiAgICByZWFkb25seSBvZmZzZXRzOiBJbnQzMkFycmF5O1xuICAgIHJlYWRvbmx5IHZhbHVlczogVmVjdG9yPFQ+O1xuICAgIGNvbnN0cnVjdG9yKGFyZ3Y6IHsgb2Zmc2V0czogSW50MzJBcnJheSwgdmFsdWVzOiBWZWN0b3I8VD4gfSkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLnZhbHVlcyA9IGFyZ3YudmFsdWVzO1xuICAgICAgICB0aGlzLm9mZnNldHMgPSBhcmd2Lm9mZnNldHM7XG4gICAgfVxuICAgIGdldChpbmRleDogbnVtYmVyKSB7XG4gICAgICAgIGNvbnN0IHsgb2Zmc2V0cywgdmFsdWVzIH0gPSB0aGlzO1xuICAgICAgICBjb25zdCBmcm9tID0gb2Zmc2V0c1tpbmRleF07XG4gICAgICAgIGNvbnN0IHhzID0gbmV3IEFycmF5KG9mZnNldHNbaW5kZXggKyAxXSAtIGZyb20pO1xuICAgICAgICBmb3IgKGxldCBpID0gLTEsIG4gPSB4cy5sZW5ndGg7ICsraSA8IG47KSB7XG4gICAgICAgICAgICB4c1tpXSA9IHZhbHVlcy5nZXQoaSArIGZyb20pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB4cztcbiAgICB9XG4gICAgY29uY2F0KC4uLnZlY3RvcnM6IFZlY3RvcjxUW10+W10pOiBWZWN0b3I8VFtdPiB7XG4gICAgICAgIHJldHVybiBuZXcgVmlydHVhbFZlY3RvcihBcnJheSwgdGhpcywgLi4udmVjdG9ycyk7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgRml4ZWRTaXplTGlzdFZlY3RvcjxULCBUQXJyYXkgZXh0ZW5kcyBMaXN0PFQ+PiBleHRlbmRzIFZlY3RvcjxUQXJyYXk+IHtcbiAgICByZWFkb25seSBzaXplOiBudW1iZXI7XG4gICAgcmVhZG9ubHkgdmFsdWVzOiBWZWN0b3I8VD47XG4gICAgY29uc3RydWN0b3IoYXJndjogeyBzaXplOiBudW1iZXIsIHZhbHVlczogVmVjdG9yPFQ+IH0pIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5zaXplID0gYXJndi5zaXplO1xuICAgICAgICB0aGlzLnZhbHVlcyA9IGFyZ3YudmFsdWVzO1xuICAgIH1cbiAgICBnZXQoaW5kZXg6IG51bWJlcikge1xuICAgICAgICByZXR1cm4gdGhpcy52YWx1ZXMuc2xpY2U8VEFycmF5Pih0aGlzLnNpemUgKiBpbmRleCwgdGhpcy5zaXplICogKGluZGV4ICsgMSkpO1xuICAgIH1cbiAgICBjb25jYXQoLi4udmVjdG9yczogVmVjdG9yPFRBcnJheT5bXSk6IFZlY3RvcjxUQXJyYXk+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBWaXJ0dWFsVmVjdG9yKEFycmF5LCB0aGlzLCAuLi52ZWN0b3JzKTtcbiAgICB9XG59XG4iXX0=
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInZlY3Rvci9saXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDZEQUE2RDtBQUM3RCwrREFBK0Q7QUFDL0Qsd0RBQXdEO0FBQ3hELDZEQUE2RDtBQUM3RCxvREFBb0Q7QUFDcEQsNkRBQTZEO0FBQzdELDZEQUE2RDtBQUM3RCxFQUFFO0FBQ0YsK0NBQStDO0FBQy9DLEVBQUU7QUFDRiw2REFBNkQ7QUFDN0QsOERBQThEO0FBQzlELHlEQUF5RDtBQUN6RCw0REFBNEQ7QUFDNUQsMERBQTBEO0FBQzFELHFCQUFxQjtBQUdyQixPQUFPLEVBQWdCLFlBQVksRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUN2RCxPQUFPLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBSS9ELE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FDbkMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFtQyxDQUNqRSxDQUFDLElBQUksV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7QUFFNUIsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUNuQyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQTBELENBQ3hGLENBQUMsSUFBSSxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztBQUU1QixNQUFNO0lBSUYsWUFBWSxJQUFhO1FBQ3JCLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUMxQixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDOUIsQ0FBQztJQUNNLEtBQUssQ0FBQyxJQUFhO1FBQ3RCLE1BQU0sQ0FBQyxJQUFXLElBQUksQ0FBQyxXQUFZLENBQUMsSUFBSSxDQUFTLENBQUM7SUFDdEQsQ0FBQztJQUNNLE9BQU87UUFDVixNQUFNLENBQUMsSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFDTSxPQUFPO1FBQ1YsTUFBTSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQztJQUNyQixDQUFDO0lBQ00sR0FBRyxDQUFDLEtBQWE7UUFDcEIsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQy9ELENBQUM7SUFDTSxHQUFHLENBQUMsS0FBYSxFQUFFLEtBQWtCO1FBQ3hDLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDdEUsQ0FBQztJQUNNLENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDO1FBQ3JCLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDL0MsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxZQUFZLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQztRQUM3RCxHQUFHLENBQUMsQ0FBQyxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLEtBQUssR0FBRyxNQUFNLEdBQUcsQ0FBQztZQUNyQyxNQUFNLEdBQUcsQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLFlBQVksQ0FBQyxDQUFDO1FBQzNDLENBQUM7SUFDTCxDQUFDO0lBQ00sT0FBTyxDQUFDLE1BQW1CO1FBQzlCLElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQztRQUNkLEdBQUcsQ0FBQyxDQUFDLElBQUksS0FBSyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUM7WUFDckIsRUFBRSxDQUFDLENBQUMsS0FBSyxLQUFLLE1BQU0sQ0FBQyxDQUFDLENBQUM7Z0JBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQztZQUFDLENBQUM7WUFDdkMsRUFBRSxLQUFLLENBQUM7UUFDWixDQUFDO1FBRUQsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2QsQ0FBQztDQUdKO0FBRUQsTUFBTSwyQkFBMEUsU0FBUSxZQUFlO0lBQ25HLFlBQVksSUFBYTtRQUNyQixLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDWixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDMUIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQzFDLENBQUM7Q0FDSjtBQUVELE1BQU0sZUFBb0MsU0FBUSxvQkFBNkI7SUFDM0UsWUFBWSxJQUFtQjtRQUMzQixLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDWixJQUFJLENBQUMsTUFBTSxHQUFHLFlBQVksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUNTLE9BQU8sQ0FBQyxNQUFpQixFQUFFLEtBQWEsRUFBRSxZQUF3QjtRQUN4RSxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLEVBQUUsWUFBWSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBYyxDQUFDO0lBQ25GLENBQUM7SUFDUyxPQUFPLENBQUMsTUFBaUIsRUFBRSxLQUFhLEVBQUUsS0FBZ0IsRUFBRSxZQUF3QjtRQUMxRixJQUFJLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUNiLElBQUksTUFBTSxHQUFHLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNqQyxJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsWUFBWSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQztRQUNuRSxPQUFPLE1BQU0sR0FBRyxHQUFHLEVBQUUsQ0FBQztZQUNsQixNQUFNLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQzNDLENBQUM7SUFDTCxDQUFDO0NBQ0o7QUFFRCxNQUFNLHdCQUE2QyxTQUFRLFlBQThCO0lBRXJGLFlBQVksSUFBNEI7UUFDcEMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ1osSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUMvQixJQUFJLENBQUMsTUFBTSxHQUFHLFlBQVksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUNTLE9BQU8sQ0FBQyxNQUFpQixFQUFFLEtBQWE7UUFDOUMsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztRQUN2QixNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLElBQUksSUFBSSxFQUFFLEtBQUssR0FBRyxJQUFJLENBQWMsQ0FBQztJQUNsRSxDQUFDO0lBQ1MsT0FBTyxDQUFDLE1BQWlCLEVBQUUsS0FBYSxFQUFFLEtBQWdCO1FBQ2hFLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDckIsR0FBRyxDQUFDLENBQUMsSUFBSSxHQUFHLEdBQUcsQ0FBQyxDQUFDLEVBQUUsTUFBTSxHQUFHLEtBQUssR0FBRyxJQUFJLEVBQUUsRUFBRSxHQUFHLEdBQUcsSUFBSSxHQUFHLENBQUM7WUFDdEQsTUFBTSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEdBQUcsR0FBRyxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQy9DLENBQUM7SUFDTCxDQUFDO0NBQ0o7QUFFRCxNQUFNLGlCQUFrQixTQUFRLG9CQUE0QjtJQUM5QyxPQUFPLENBQUMsTUFBa0IsRUFBRSxLQUFhLEVBQUUsWUFBd0I7UUFDekUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxFQUFFLFlBQVksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN6RSxDQUFDO0lBQ1MsT0FBTyxDQUFDLE1BQWtCLEVBQUUsS0FBYSxFQUFFLEtBQWlCLEVBQUUsWUFBd0I7UUFDNUYsTUFBTSxNQUFNLEdBQUcsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ25DLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsWUFBWSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUM1RSxDQUFDO0NBQ0o7QUFFRCxNQUFNLGVBQWdCLFNBQVEsb0JBQTBCO0lBQzFDLE9BQU8sQ0FBQyxNQUFrQixFQUFFLEtBQWEsRUFBRSxZQUF3QjtRQUN6RSxNQUFNLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxFQUFFLFlBQVksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3JGLENBQUM7SUFDUyxPQUFPLENBQUMsTUFBa0IsRUFBRSxLQUFhLEVBQUUsS0FBYSxFQUFFLFlBQXdCO1FBQ3hGLE1BQU0sTUFBTSxHQUFHLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNuQyxNQUFNLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLFlBQVksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDeEYsQ0FBQztDQUNKIiwiZmlsZSI6InZlY3Rvci9saXN0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy8gTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZVxuLy8gb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlXG4vLyBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvblxuLy8gcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZVxuLy8gdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZVxuLy8gXCJMaWNlbnNlXCIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlXG4vLyB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4vL1xuLy8gICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbi8vXG4vLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsXG4vLyBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhblxuLy8gXCJBUyBJU1wiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTllcbi8vIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZVxuLy8gc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9uc1xuLy8gdW5kZXIgdGhlIExpY2Vuc2UuXG5cbmltcG9ydCB7IERhdGEgfSBmcm9tICcuLi9kYXRhJztcbmltcG9ydCB7IFZpZXcsIFZlY3RvciwgY3JlYXRlVmVjdG9yIH0gZnJvbSAnLi4vdmVjdG9yJztcbmltcG9ydCB7IFRleHRFbmNvZGVyLCBUZXh0RGVjb2RlciB9IGZyb20gJ3RleHQtZW5jb2RpbmctdXRmLTgnO1xuaW1wb3J0IHsgTGlzdCwgQmluYXJ5LCBVdGY4LCBGaXhlZFNpemVMaXN0LCBGbGF0TGlzdFR5cGUgfSBmcm9tICcuLi90eXBlJztcbmltcG9ydCB7IExpc3RUeXBlLCBEYXRhVHlwZSwgSXRlcmFibGVBcnJheUxpa2UgfSBmcm9tICcuLi90eXBlJztcblxuZXhwb3J0IGNvbnN0IGVuY29kZVV0ZjggPSAoKGVuY29kZXIpID0+XG4gICAgZW5jb2Rlci5lbmNvZGUuYmluZChlbmNvZGVyKSBhcyAoaW5wdXQ/OiBzdHJpbmcpID0+IFVpbnQ4QXJyYXlcbikobmV3IFRleHRFbmNvZGVyKCd1dGYtOCcpKTtcblxuZXhwb3J0IGNvbnN0IGRlY29kZVV0ZjggPSAoKGRlY29kZXIpID0+XG4gICAgZGVjb2Rlci5kZWNvZGUuYmluZChkZWNvZGVyKSBhcyAoaW5wdXQ/OiBBcnJheUJ1ZmZlckxpa2UgfCBBcnJheUJ1ZmZlclZpZXcpID0+IHN0cmluZ1xuKShuZXcgVGV4dERlY29kZXIoJ3V0Zi04JykpO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgTGlzdFZpZXdCYXNlPFQgZXh0ZW5kcyAoTGlzdFR5cGUgfCBGbGF0TGlzdFR5cGUgfCBGaXhlZFNpemVMaXN0KT4gaW1wbGVtZW50cyBWaWV3PFQ+IHtcbiAgICBwdWJsaWMgbGVuZ3RoOiBudW1iZXI7XG4gICAgcHVibGljIHZhbHVlczogVFsnVEFycmF5J107XG4gICAgcHVibGljIHZhbHVlT2Zmc2V0cz86IEludDMyQXJyYXk7XG4gICAgY29uc3RydWN0b3IoZGF0YTogRGF0YTxUPikge1xuICAgICAgICB0aGlzLmxlbmd0aCA9IGRhdGEubGVuZ3RoO1xuICAgICAgICB0aGlzLnZhbHVlcyA9IGRhdGEudmFsdWVzO1xuICAgIH1cbiAgICBwdWJsaWMgY2xvbmUoZGF0YTogRGF0YTxUPik6IHRoaXMge1xuICAgICAgICByZXR1cm4gbmV3ICg8YW55PiB0aGlzLmNvbnN0cnVjdG9yKShkYXRhKSBhcyB0aGlzO1xuICAgIH1cbiAgICBwdWJsaWMgaXNWYWxpZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHB1YmxpYyB0b0FycmF5KCk6IEl0ZXJhYmxlQXJyYXlMaWtlPFRbJ1RWYWx1ZSddPiB7XG4gICAgICAgIHJldHVybiBbLi4udGhpc107XG4gICAgfVxuICAgIHB1YmxpYyBnZXQoaW5kZXg6IG51bWJlcik6IFRbJ1RWYWx1ZSddIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0TGlzdCh0aGlzLnZhbHVlcywgaW5kZXgsIHRoaXMudmFsdWVPZmZzZXRzKTtcbiAgICB9XG4gICAgcHVibGljIHNldChpbmRleDogbnVtYmVyLCB2YWx1ZTogVFsnVFZhbHVlJ10pOiB2b2lkIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2V0TGlzdCh0aGlzLnZhbHVlcywgaW5kZXgsIHZhbHVlLCB0aGlzLnZhbHVlT2Zmc2V0cyk7XG4gICAgfVxuICAgIHB1YmxpYyAqW1N5bWJvbC5pdGVyYXRvcl0oKTogSXRlcmFibGVJdGVyYXRvcjxUWydUVmFsdWUnXT4ge1xuICAgICAgICBjb25zdCBnZXQgPSB0aGlzLmdldExpc3QsIGxlbmd0aCA9IHRoaXMubGVuZ3RoO1xuICAgICAgICBjb25zdCB2YWx1ZXMgPSB0aGlzLnZhbHVlcywgdmFsdWVPZmZzZXRzID0gdGhpcy52YWx1ZU9mZnNldHM7XG4gICAgICAgIGZvciAobGV0IGluZGV4ID0gLTE7ICsraW5kZXggPCBsZW5ndGg7KSB7XG4gICAgICAgICAgICB5aWVsZCBnZXQodmFsdWVzLCBpbmRleCwgdmFsdWVPZmZzZXRzKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBwdWJsaWMgaW5kZXhPZihzZWFyY2g6IFRbJ1RWYWx1ZSddKSB7XG4gICAgICAgIGxldCBpbmRleCA9IDA7XG4gICAgICAgIGZvciAobGV0IHZhbHVlIG9mIHRoaXMpIHtcbiAgICAgICAgICAgIGlmICh2YWx1ZSA9PT0gc2VhcmNoKSB7IHJldHVybiBpbmRleDsgfVxuICAgICAgICAgICAgKytpbmRleDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiAtMTtcbiAgICB9XG4gICAgcHJvdGVjdGVkIGFic3RyYWN0IGdldExpc3QodmFsdWVzOiBUWydUQXJyYXknXSwgaW5kZXg6IG51bWJlciwgdmFsdWVPZmZzZXRzPzogSW50MzJBcnJheSk6IFRbJ1RWYWx1ZSddO1xuICAgIHByb3RlY3RlZCBhYnN0cmFjdCBzZXRMaXN0KHZhbHVlczogVFsnVEFycmF5J10sIGluZGV4OiBudW1iZXIsIHZhbHVlOiBUWydUVmFsdWUnXSwgdmFsdWVPZmZzZXRzPzogSW50MzJBcnJheSk6IHZvaWQ7XG59XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBWYXJpYWJsZUxpc3RWaWV3QmFzZTxUIGV4dGVuZHMgKExpc3RUeXBlIHwgRmxhdExpc3RUeXBlKT4gZXh0ZW5kcyBMaXN0Vmlld0Jhc2U8VD4ge1xuICAgIGNvbnN0cnVjdG9yKGRhdGE6IERhdGE8VD4pIHtcbiAgICAgICAgc3VwZXIoZGF0YSk7XG4gICAgICAgIHRoaXMubGVuZ3RoID0gZGF0YS5sZW5ndGg7XG4gICAgICAgIHRoaXMudmFsdWVPZmZzZXRzID0gZGF0YS52YWx1ZU9mZnNldHM7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgTGlzdFZpZXc8VCBleHRlbmRzIERhdGFUeXBlPiBleHRlbmRzIFZhcmlhYmxlTGlzdFZpZXdCYXNlPExpc3Q8VD4+IHtcbiAgICBjb25zdHJ1Y3RvcihkYXRhOiBEYXRhPExpc3Q8VD4+KSB7XG4gICAgICAgIHN1cGVyKGRhdGEpO1xuICAgICAgICB0aGlzLnZhbHVlcyA9IGNyZWF0ZVZlY3RvcihkYXRhLnZhbHVlcyk7XG4gICAgfVxuICAgIHByb3RlY3RlZCBnZXRMaXN0KHZhbHVlczogVmVjdG9yPFQ+LCBpbmRleDogbnVtYmVyLCB2YWx1ZU9mZnNldHM6IEludDMyQXJyYXkpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlcy5zbGljZSh2YWx1ZU9mZnNldHNbaW5kZXhdLCB2YWx1ZU9mZnNldHNbaW5kZXggKyAxXSkgYXMgVmVjdG9yPFQ+O1xuICAgIH1cbiAgICBwcm90ZWN0ZWQgc2V0TGlzdCh2YWx1ZXM6IFZlY3RvcjxUPiwgaW5kZXg6IG51bWJlciwgdmFsdWU6IFZlY3RvcjxUPiwgdmFsdWVPZmZzZXRzOiBJbnQzMkFycmF5KTogdm9pZCB7XG4gICAgICAgIGxldCBpZHggPSAtMTtcbiAgICAgICAgbGV0IG9mZnNldCA9IHZhbHVlT2Zmc2V0c1tpbmRleF07XG4gICAgICAgIGxldCBlbmQgPSBNYXRoLm1pbih2YWx1ZS5sZW5ndGgsIHZhbHVlT2Zmc2V0c1tpbmRleCArIDFdIC0gb2Zmc2V0KTtcbiAgICAgICAgd2hpbGUgKG9mZnNldCA8IGVuZCkge1xuICAgICAgICAgICAgdmFsdWVzLnNldChvZmZzZXQrKywgdmFsdWUuZ2V0KCsraWR4KSk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBGaXhlZFNpemVMaXN0VmlldzxUIGV4dGVuZHMgRGF0YVR5cGU+IGV4dGVuZHMgTGlzdFZpZXdCYXNlPEZpeGVkU2l6ZUxpc3Q8VD4+IHtcbiAgICBwdWJsaWMgc2l6ZTogbnVtYmVyO1xuICAgIGNvbnN0cnVjdG9yKGRhdGE6IERhdGE8Rml4ZWRTaXplTGlzdDxUPj4pIHtcbiAgICAgICAgc3VwZXIoZGF0YSk7XG4gICAgICAgIHRoaXMuc2l6ZSA9IGRhdGEudHlwZS5saXN0U2l6ZTtcbiAgICAgICAgdGhpcy52YWx1ZXMgPSBjcmVhdGVWZWN0b3IoZGF0YS52YWx1ZXMpO1xuICAgIH1cbiAgICBwcm90ZWN0ZWQgZ2V0TGlzdCh2YWx1ZXM6IFZlY3RvcjxUPiwgaW5kZXg6IG51bWJlcikge1xuICAgICAgICBjb25zdCBzaXplID0gdGhpcy5zaXplO1xuICAgICAgICByZXR1cm4gdmFsdWVzLnNsaWNlKGluZGV4ICo9IHNpemUsIGluZGV4ICsgc2l6ZSkgYXMgVmVjdG9yPFQ+O1xuICAgIH1cbiAgICBwcm90ZWN0ZWQgc2V0TGlzdCh2YWx1ZXM6IFZlY3RvcjxUPiwgaW5kZXg6IG51bWJlciwgdmFsdWU6IFZlY3RvcjxUPik6IHZvaWQge1xuICAgICAgICBsZXQgc2l6ZSA9IHRoaXMuc2l6ZTtcbiAgICAgICAgZm9yIChsZXQgaWR4ID0gLTEsIG9mZnNldCA9IGluZGV4ICogc2l6ZTsgKytpZHggPCBzaXplOykge1xuICAgICAgICAgICAgdmFsdWVzLnNldChvZmZzZXQgKyBpZHgsIHZhbHVlLmdldCgrK2lkeCkpO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgQmluYXJ5VmlldyBleHRlbmRzIFZhcmlhYmxlTGlzdFZpZXdCYXNlPEJpbmFyeT4ge1xuICAgIHByb3RlY3RlZCBnZXRMaXN0KHZhbHVlczogVWludDhBcnJheSwgaW5kZXg6IG51bWJlciwgdmFsdWVPZmZzZXRzOiBJbnQzMkFycmF5KSB7XG4gICAgICAgIHJldHVybiB2YWx1ZXMuc3ViYXJyYXkodmFsdWVPZmZzZXRzW2luZGV4XSwgdmFsdWVPZmZzZXRzW2luZGV4ICsgMV0pO1xuICAgIH1cbiAgICBwcm90ZWN0ZWQgc2V0TGlzdCh2YWx1ZXM6IFVpbnQ4QXJyYXksIGluZGV4OiBudW1iZXIsIHZhbHVlOiBVaW50OEFycmF5LCB2YWx1ZU9mZnNldHM6IEludDMyQXJyYXkpOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgb2Zmc2V0ID0gdmFsdWVPZmZzZXRzW2luZGV4XTtcbiAgICAgICAgdmFsdWVzLnNldCh2YWx1ZS5zdWJhcnJheSgwLCB2YWx1ZU9mZnNldHNbaW5kZXggKyAxXSAtIG9mZnNldCksIG9mZnNldCk7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgVXRmOFZpZXcgZXh0ZW5kcyBWYXJpYWJsZUxpc3RWaWV3QmFzZTxVdGY4PiB7XG4gICAgcHJvdGVjdGVkIGdldExpc3QodmFsdWVzOiBVaW50OEFycmF5LCBpbmRleDogbnVtYmVyLCB2YWx1ZU9mZnNldHM6IEludDMyQXJyYXkpIHtcbiAgICAgICAgcmV0dXJuIGRlY29kZVV0ZjgodmFsdWVzLnN1YmFycmF5KHZhbHVlT2Zmc2V0c1tpbmRleF0sIHZhbHVlT2Zmc2V0c1tpbmRleCArIDFdKSk7XG4gICAgfVxuICAgIHByb3RlY3RlZCBzZXRMaXN0KHZhbHVlczogVWludDhBcnJheSwgaW5kZXg6IG51bWJlciwgdmFsdWU6IHN0cmluZywgdmFsdWVPZmZzZXRzOiBJbnQzMkFycmF5KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IG9mZnNldCA9IHZhbHVlT2Zmc2V0c1tpbmRleF07XG4gICAgICAgIHZhbHVlcy5zZXQoZW5jb2RlVXRmOCh2YWx1ZSkuc3ViYXJyYXkoMCwgdmFsdWVPZmZzZXRzW2luZGV4ICsgMV0gLSBvZmZzZXQpLCBvZmZzZXQpO1xuICAgIH1cbn1cbiJdfQ==
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