@apache-arrow/esnext-cjs
Advanced tools
Comparing version 0.1.2 to 0.2.0
@@ -1,3 +0,13 @@ | ||
import { Table } from './table'; | ||
import { readBuffers } from './reader/arrow'; | ||
export { Table, readBuffers }; | ||
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 }; |
@@ -0,4 +1,5 @@ | ||
declare let RowVector: () => void; | ||
declare let Table: () => void; | ||
declare let Vector: () => void; | ||
declare let TypedVector: () => void; | ||
declare let ValidityVector: () => void; | ||
declare let BoolVector: () => void; | ||
declare let DictionaryVector: () => void; |
@@ -0,1 +1,2 @@ | ||
"use strict"; | ||
// Licensed to the Apache Software Foundation (ASF) under one | ||
@@ -26,18 +27,25 @@ // or more contributor license agreements. See the NOTICE file | ||
Symbol.asyncIterator; | ||
let RowVector = function () { }; | ||
/** @type {?} */ | ||
RowVector.prototype.toJSON; | ||
/** @type {?} */ | ||
RowVector.prototype.toArray; | ||
/** @type {?} */ | ||
RowVector.prototype.toObject; | ||
/** @type {?} */ | ||
RowVector.prototype.toString; | ||
let Table = function () { }; | ||
/** @type {?} */ | ||
Table.prototype.rows; | ||
Table.from; | ||
/** @type {?} */ | ||
Table.prototype.cols; | ||
Table.prototype.columns; | ||
/** @type {?} */ | ||
Table.prototype.getRow; | ||
Table.prototype.length; | ||
/** @type {?} */ | ||
Table.prototype.getCell; | ||
Table.prototype.col; | ||
/** @type {?} */ | ||
Table.prototype.getCellAt; | ||
Table.prototype.key; | ||
/** @type {?} */ | ||
Table.prototype.getColumn; | ||
Table.prototype.select; | ||
/** @type {?} */ | ||
Table.prototype.getColumnAt; | ||
/** @type {?} */ | ||
Table.prototype.toString; | ||
@@ -52,4 +60,2 @@ let Vector = function () { }; | ||
/** @type {?} */ | ||
Vector.prototype.props; | ||
/** @type {?} */ | ||
Vector.prototype.get; | ||
@@ -60,9 +66,19 @@ /** @type {?} */ | ||
Vector.prototype.slice; | ||
let TypedVector = function () { }; | ||
/** @type {?} */ | ||
TypedVector.prototype.arrayType; | ||
let ValidityVector = function () { }; | ||
Vector.prototype.metadata; | ||
/** @type {?} */ | ||
ValidityVector.pack; | ||
Vector.prototype.nullable; | ||
/** @type {?} */ | ||
Vector.prototype.nullCount; | ||
let BoolVector = function () { }; | ||
/** @type {?} */ | ||
BoolVector.pack; | ||
/** @type {?} */ | ||
BoolVector.prototype.set; | ||
let DictionaryVector = function () { }; | ||
/** @type {?} */ | ||
DictionaryVector.prototype.getKey; | ||
/** @type {?} */ | ||
DictionaryVector.prototype.getValue; | ||
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkFycm93LmV4dGVybnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsNkRBQTZEO0FBQzdELCtEQUErRDtBQUMvRCx3REFBd0Q7QUFDeEQsNkRBQTZEO0FBQzdELG9EQUFvRDtBQUNwRCw2REFBNkQ7QUFDN0QsNkRBQTZEO0FBQzdELEVBQUU7QUFDRiwrQ0FBK0M7QUFDL0MsRUFBRTtBQUNGLDZEQUE2RDtBQUM3RCw4REFBOEQ7QUFDOUQseURBQXlEO0FBQ3pELDREQUE0RDtBQUM1RCwwREFBMEQ7QUFDMUQscUJBQXFCO0FBRXJCOzs7O0dBSUc7QUFDSCxxQkFBcUI7QUFDckIsTUFBTSxDQUFDLFFBQVEsQ0FBQztBQUNoQixxQkFBcUI7QUFDckIsTUFBTSxDQUFDLGFBQWEsQ0FBQztBQUNyQixJQUFJLEtBQUssR0FBRyxjQUFZLENBQUMsQ0FBQztBQUMxQixnQkFBZ0I7QUFDaEIsS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUM7QUFDckIsZ0JBQWdCO0FBQ2hCLEtBQUssQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDO0FBQ3JCLGdCQUFnQjtBQUNoQixLQUFLLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQztBQUN2QixnQkFBZ0I7QUFDaEIsS0FBSyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUM7QUFDeEIsZ0JBQWdCO0FBQ2hCLEtBQUssQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDO0FBQzFCLGdCQUFnQjtBQUNoQixLQUFLLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQztBQUMxQixnQkFBZ0I7QUFDaEIsS0FBSyxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUM7QUFDNUIsZ0JBQWdCO0FBQ2hCLEtBQUssQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDO0FBRXpCLElBQUksTUFBTSxHQUFHLGNBQVksQ0FBQyxDQUFDO0FBQzNCLGdCQUFnQjtBQUNoQixNQUFNLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQztBQUN4QixnQkFBZ0I7QUFDaEIsTUFBTSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUM7QUFDdEIsZ0JBQWdCO0FBQ2hCLE1BQU0sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDO0FBQ3RCLGdCQUFnQjtBQUNoQixNQUFNLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQztBQUN2QixnQkFBZ0I7QUFDaEIsTUFBTSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUM7QUFDckIsZ0JBQWdCO0FBQ2hCLE1BQU0sQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDO0FBQ3hCLGdCQUFnQjtBQUNoQixNQUFNLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQztBQUV2QixJQUFJLFdBQVcsR0FBRyxjQUFZLENBQUMsQ0FBQztBQUNoQyxnQkFBZ0I7QUFDaEIsV0FBVyxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUM7QUFFaEMsSUFBSSxjQUFjLEdBQUcsY0FBWSxDQUFDLENBQUM7QUFDbkMsZ0JBQWdCO0FBQ1QsY0FBZSxDQUFDLElBQUksQ0FBQyIsImZpbGUiOiJBcnJvdy5leHRlcm5zLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy8gTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZVxuLy8gb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlXG4vLyBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvblxuLy8gcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZVxuLy8gdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZVxuLy8gXCJMaWNlbnNlXCIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlXG4vLyB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4vL1xuLy8gICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbi8vXG4vLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsXG4vLyBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhblxuLy8gXCJBUyBJU1wiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTllcbi8vIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZVxuLy8gc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9uc1xuLy8gdW5kZXIgdGhlIExpY2Vuc2UuXG5cbi8qKlxuICogQGZpbGVvdmVydmlldyBDbG9zdXJlIENvbXBpbGVyIGV4dGVybnMgZm9yIEFycm93XG4gKiBAZXh0ZXJuc1xuICogQHN1cHByZXNzIHtkdXBsaWNhdGUsY2hlY2tUeXBlc31cbiAqL1xuLyoqIEB0eXBlIHtzeW1ib2x9ICovXG5TeW1ib2wuaXRlcmF0b3I7XG4vKiogQHR5cGUge3N5bWJvbH0gKi9cblN5bWJvbC5hc3luY0l0ZXJhdG9yO1xubGV0IFRhYmxlID0gZnVuY3Rpb24oKSB7fTtcbi8qKiBAdHlwZSB7P30gKi9cblRhYmxlLnByb3RvdHlwZS5yb3dzO1xuLyoqIEB0eXBlIHs/fSAqL1xuVGFibGUucHJvdG90eXBlLmNvbHM7XG4vKiogQHR5cGUgez99ICovXG5UYWJsZS5wcm90b3R5cGUuZ2V0Um93O1xuLyoqIEB0eXBlIHs/fSAqL1xuVGFibGUucHJvdG90eXBlLmdldENlbGw7XG4vKiogQHR5cGUgez99ICovXG5UYWJsZS5wcm90b3R5cGUuZ2V0Q2VsbEF0O1xuLyoqIEB0eXBlIHs/fSAqL1xuVGFibGUucHJvdG90eXBlLmdldENvbHVtbjtcbi8qKiBAdHlwZSB7P30gKi9cblRhYmxlLnByb3RvdHlwZS5nZXRDb2x1bW5BdDtcbi8qKiBAdHlwZSB7P30gKi9cblRhYmxlLnByb3RvdHlwZS50b1N0cmluZztcblxubGV0IFZlY3RvciA9IGZ1bmN0aW9uKCkge307XG4vKiogQHR5cGUgez99ICovXG5WZWN0b3IucHJvdG90eXBlLmxlbmd0aDtcbi8qKiBAdHlwZSB7P30gKi9cblZlY3Rvci5wcm90b3R5cGUubmFtZTtcbi8qKiBAdHlwZSB7P30gKi9cblZlY3Rvci5wcm90b3R5cGUudHlwZTtcbi8qKiBAdHlwZSB7P30gKi9cblZlY3Rvci5wcm90b3R5cGUucHJvcHM7XG4vKiogQHR5cGUgez99ICovXG5WZWN0b3IucHJvdG90eXBlLmdldDtcbi8qKiBAdHlwZSB7P30gKi9cblZlY3Rvci5wcm90b3R5cGUuY29uY2F0O1xuLyoqIEB0eXBlIHs/fSAqL1xuVmVjdG9yLnByb3RvdHlwZS5zbGljZTtcblxubGV0IFR5cGVkVmVjdG9yID0gZnVuY3Rpb24oKSB7fTtcbi8qKiBAdHlwZSB7P30gKi9cblR5cGVkVmVjdG9yLnByb3RvdHlwZS5hcnJheVR5cGU7XG5cbmxldCBWYWxpZGl0eVZlY3RvciA9IGZ1bmN0aW9uKCkge307XG4vKiogQHR5cGUgez99ICovXG4oPGFueT4gVmFsaWRpdHlWZWN0b3IpLnBhY2s7XG4iXX0= | ||
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkFycm93LmV4dGVybnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLDZEQUE2RDtBQUM3RCwrREFBK0Q7QUFDL0Qsd0RBQXdEO0FBQ3hELDZEQUE2RDtBQUM3RCxvREFBb0Q7QUFDcEQsNkRBQTZEO0FBQzdELDZEQUE2RDtBQUM3RCxFQUFFO0FBQ0YsK0NBQStDO0FBQy9DLEVBQUU7QUFDRiw2REFBNkQ7QUFDN0QsOERBQThEO0FBQzlELHlEQUF5RDtBQUN6RCw0REFBNEQ7QUFDNUQsMERBQTBEO0FBQzFELHFCQUFxQjtBQUVyQjs7OztHQUlHO0FBQ0gscUJBQXFCO0FBQ3JCLE1BQU0sQ0FBQyxRQUFRLENBQUM7QUFDaEIscUJBQXFCO0FBQ3JCLE1BQU0sQ0FBQyxhQUFhLENBQUM7QUFFckIsSUFBSSxTQUFTLEdBQUcsY0FBWSxDQUFDLENBQUM7QUFDOUIsZ0JBQWdCO0FBQ2hCLFNBQVMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDO0FBQzNCLGdCQUFnQjtBQUNoQixTQUFTLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQztBQUM1QixnQkFBZ0I7QUFDaEIsU0FBUyxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUM7QUFDN0IsZ0JBQWdCO0FBQ2hCLFNBQVMsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDO0FBRTdCLElBQUksS0FBSyxHQUFHLGNBQVksQ0FBQyxDQUFDO0FBQzFCLGdCQUFnQjtBQUNULEtBQU0sQ0FBQyxJQUFJLENBQUM7QUFDbkIsZ0JBQWdCO0FBQ2hCLEtBQUssQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDO0FBQ3hCLGdCQUFnQjtBQUNoQixLQUFLLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQztBQUN2QixnQkFBZ0I7QUFDaEIsS0FBSyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUM7QUFDcEIsZ0JBQWdCO0FBQ2hCLEtBQUssQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDO0FBQ3BCLGdCQUFnQjtBQUNoQixLQUFLLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQztBQUN2QixnQkFBZ0I7QUFDaEIsS0FBSyxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUM7QUFFekIsSUFBSSxNQUFNLEdBQUcsY0FBWSxDQUFDLENBQUM7QUFDM0IsZ0JBQWdCO0FBQ2hCLE1BQU0sQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDO0FBQ3hCLGdCQUFnQjtBQUNoQixNQUFNLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQztBQUN0QixnQkFBZ0I7QUFDaEIsTUFBTSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUM7QUFDdEIsZ0JBQWdCO0FBQ2hCLE1BQU0sQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDO0FBQ3JCLGdCQUFnQjtBQUNoQixNQUFNLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQztBQUN4QixnQkFBZ0I7QUFDaEIsTUFBTSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUM7QUFDdkIsZ0JBQWdCO0FBQ2hCLE1BQU0sQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDO0FBQzFCLGdCQUFnQjtBQUNoQixNQUFNLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQztBQUMxQixnQkFBZ0I7QUFDaEIsTUFBTSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUM7QUFFM0IsSUFBSSxVQUFVLEdBQUcsY0FBWSxDQUFDLENBQUM7QUFDL0IsZ0JBQWdCO0FBQ1QsVUFBVyxDQUFDLElBQUksQ0FBQztBQUN4QixnQkFBZ0I7QUFDaEIsVUFBVSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUM7QUFFekIsSUFBSSxnQkFBZ0IsR0FBRyxjQUFZLENBQUMsQ0FBQztBQUNyQyxnQkFBZ0I7QUFDaEIsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQztBQUNsQyxnQkFBZ0I7QUFDaEIsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyIsImZpbGUiOiJBcnJvdy5leHRlcm5zLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy8gTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZVxuLy8gb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlXG4vLyBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvblxuLy8gcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZVxuLy8gdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZVxuLy8gXCJMaWNlbnNlXCIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlXG4vLyB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4vL1xuLy8gICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbi8vXG4vLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsXG4vLyBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhblxuLy8gXCJBUyBJU1wiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTllcbi8vIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZVxuLy8gc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9uc1xuLy8gdW5kZXIgdGhlIExpY2Vuc2UuXG5cbi8qKlxuICogQGZpbGVvdmVydmlldyBDbG9zdXJlIENvbXBpbGVyIGV4dGVybnMgZm9yIEFycm93XG4gKiBAZXh0ZXJuc1xuICogQHN1cHByZXNzIHtkdXBsaWNhdGUsY2hlY2tUeXBlc31cbiAqL1xuLyoqIEB0eXBlIHtzeW1ib2x9ICovXG5TeW1ib2wuaXRlcmF0b3I7XG4vKiogQHR5cGUge3N5bWJvbH0gKi9cblN5bWJvbC5hc3luY0l0ZXJhdG9yO1xuXG5sZXQgUm93VmVjdG9yID0gZnVuY3Rpb24oKSB7fTtcbi8qKiBAdHlwZSB7P30gKi9cblJvd1ZlY3Rvci5wcm90b3R5cGUudG9KU09OO1xuLyoqIEB0eXBlIHs/fSAqL1xuUm93VmVjdG9yLnByb3RvdHlwZS50b0FycmF5O1xuLyoqIEB0eXBlIHs/fSAqL1xuUm93VmVjdG9yLnByb3RvdHlwZS50b09iamVjdDtcbi8qKiBAdHlwZSB7P30gKi9cblJvd1ZlY3Rvci5wcm90b3R5cGUudG9TdHJpbmc7XG5cbmxldCBUYWJsZSA9IGZ1bmN0aW9uKCkge307XG4vKiogQHR5cGUgez99ICovXG4oPGFueT4gVGFibGUpLmZyb207XG4vKiogQHR5cGUgez99ICovXG5UYWJsZS5wcm90b3R5cGUuY29sdW1ucztcbi8qKiBAdHlwZSB7P30gKi9cblRhYmxlLnByb3RvdHlwZS5sZW5ndGg7XG4vKiogQHR5cGUgez99ICovXG5UYWJsZS5wcm90b3R5cGUuY29sO1xuLyoqIEB0eXBlIHs/fSAqL1xuVGFibGUucHJvdG90eXBlLmtleTtcbi8qKiBAdHlwZSB7P30gKi9cblRhYmxlLnByb3RvdHlwZS5zZWxlY3Q7XG4vKiogQHR5cGUgez99ICovXG5UYWJsZS5wcm90b3R5cGUudG9TdHJpbmc7XG5cbmxldCBWZWN0b3IgPSBmdW5jdGlvbigpIHt9O1xuLyoqIEB0eXBlIHs/fSAqL1xuVmVjdG9yLnByb3RvdHlwZS5sZW5ndGg7XG4vKiogQHR5cGUgez99ICovXG5WZWN0b3IucHJvdG90eXBlLm5hbWU7XG4vKiogQHR5cGUgez99ICovXG5WZWN0b3IucHJvdG90eXBlLnR5cGU7XG4vKiogQHR5cGUgez99ICovXG5WZWN0b3IucHJvdG90eXBlLmdldDtcbi8qKiBAdHlwZSB7P30gKi9cblZlY3Rvci5wcm90b3R5cGUuY29uY2F0O1xuLyoqIEB0eXBlIHs/fSAqL1xuVmVjdG9yLnByb3RvdHlwZS5zbGljZTtcbi8qKiBAdHlwZSB7P30gKi9cblZlY3Rvci5wcm90b3R5cGUubWV0YWRhdGE7XG4vKiogQHR5cGUgez99ICovXG5WZWN0b3IucHJvdG90eXBlLm51bGxhYmxlO1xuLyoqIEB0eXBlIHs/fSAqL1xuVmVjdG9yLnByb3RvdHlwZS5udWxsQ291bnQ7XG5cbmxldCBCb29sVmVjdG9yID0gZnVuY3Rpb24oKSB7fTtcbi8qKiBAdHlwZSB7P30gKi9cbig8YW55PiBCb29sVmVjdG9yKS5wYWNrO1xuLyoqIEB0eXBlIHs/fSAqL1xuQm9vbFZlY3Rvci5wcm90b3R5cGUuc2V0O1xuXG5sZXQgRGljdGlvbmFyeVZlY3RvciA9IGZ1bmN0aW9uKCkge307XG4vKiogQHR5cGUgez99ICovXG5EaWN0aW9uYXJ5VmVjdG9yLnByb3RvdHlwZS5nZXRLZXk7XG4vKiogQHR5cGUgez99ICovXG5EaWN0aW9uYXJ5VmVjdG9yLnByb3RvdHlwZS5nZXRWYWx1ZTtcbiJdfQ== |
71
Arrow.js
@@ -0,1 +1,2 @@ | ||
"use strict"; | ||
// Licensed to the Apache Software Foundation (ASF) under one | ||
@@ -18,6 +19,39 @@ // or more contributor license agreements. See the NOTICE file | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
const table_1 = require("./table"); | ||
const table_1 = require("./vector/table"); | ||
exports.Table = table_1.Table; | ||
const vector_1 = require("./vector/vector"); | ||
exports.Vector = vector_1.Vector; | ||
const utf8_1 = require("./vector/utf8"); | ||
exports.Utf8Vector = utf8_1.Utf8Vector; | ||
const dictionary_1 = require("./vector/dictionary"); | ||
exports.DictionaryVector = dictionary_1.DictionaryVector; | ||
const struct_1 = require("./vector/struct"); | ||
exports.StructVector = struct_1.StructVector; | ||
exports.StructRow = struct_1.StructRow; | ||
const arrow_1 = require("./reader/arrow"); | ||
exports.readBuffers = arrow_1.readBuffers; | ||
exports.readVectors = arrow_1.readVectors; | ||
exports.readVectorsAsync = arrow_1.readVectorsAsync; | ||
const list_1 = require("./vector/list"); | ||
exports.ListVector = list_1.ListVector; | ||
exports.BinaryVector = list_1.BinaryVector; | ||
exports.FixedSizeListVector = list_1.FixedSizeListVector; | ||
const numeric_1 = require("./vector/numeric"); | ||
exports.BoolVector = numeric_1.BoolVector; | ||
exports.Int8Vector = numeric_1.Int8Vector; | ||
exports.Int16Vector = numeric_1.Int16Vector; | ||
exports.Int32Vector = numeric_1.Int32Vector; | ||
exports.Int64Vector = numeric_1.Int64Vector; | ||
exports.Uint8Vector = numeric_1.Uint8Vector; | ||
exports.Uint16Vector = numeric_1.Uint16Vector; | ||
exports.Uint32Vector = numeric_1.Uint32Vector; | ||
exports.Uint64Vector = numeric_1.Uint64Vector; | ||
exports.Float16Vector = numeric_1.Float16Vector; | ||
exports.Float32Vector = numeric_1.Float32Vector; | ||
exports.Float64Vector = numeric_1.Float64Vector; | ||
exports.Date32Vector = numeric_1.Date32Vector; | ||
exports.Date64Vector = numeric_1.Date64Vector; | ||
exports.Time32Vector = numeric_1.Time32Vector; | ||
exports.Time64Vector = numeric_1.Time64Vector; | ||
exports.DecimalVector = numeric_1.DecimalVector; | ||
exports.TimestampVector = numeric_1.TimestampVector; | ||
/* These exports are needed for the closure umd targets */ | ||
@@ -28,9 +62,36 @@ try { | ||
// string indexers tell closure compiler not to rename these properties | ||
Arrow['readVectors'] = arrow_1.readVectors; | ||
Arrow['readVectorsAsync'] = arrow_1.readVectorsAsync; | ||
Arrow['Table'] = table_1.Table; | ||
Arrow['readBuffers'] = arrow_1.readBuffers; | ||
Arrow['Vector'] = vector_1.Vector; | ||
Arrow['StructRow'] = struct_1.StructRow; | ||
Arrow['BoolVector'] = numeric_1.BoolVector; | ||
Arrow['ListVector'] = list_1.ListVector; | ||
Arrow['Utf8Vector'] = utf8_1.Utf8Vector; | ||
Arrow['Int8Vector'] = numeric_1.Int8Vector; | ||
Arrow['Int16Vector'] = numeric_1.Int16Vector; | ||
Arrow['Int32Vector'] = numeric_1.Int32Vector; | ||
Arrow['Int64Vector'] = numeric_1.Int64Vector; | ||
Arrow['Uint8Vector'] = numeric_1.Uint8Vector; | ||
Arrow['Uint16Vector'] = numeric_1.Uint16Vector; | ||
Arrow['Uint32Vector'] = numeric_1.Uint32Vector; | ||
Arrow['Uint64Vector'] = numeric_1.Uint64Vector; | ||
Arrow['Date32Vector'] = numeric_1.Date32Vector; | ||
Arrow['Date64Vector'] = numeric_1.Date64Vector; | ||
Arrow['Time32Vector'] = numeric_1.Time32Vector; | ||
Arrow['Time64Vector'] = numeric_1.Time64Vector; | ||
Arrow['BinaryVector'] = list_1.BinaryVector; | ||
Arrow['StructVector'] = struct_1.StructVector; | ||
Arrow['Float16Vector'] = numeric_1.Float16Vector; | ||
Arrow['Float32Vector'] = numeric_1.Float32Vector; | ||
Arrow['Float64Vector'] = numeric_1.Float64Vector; | ||
Arrow['DecimalVector'] = numeric_1.DecimalVector; | ||
Arrow['TimestampVector'] = numeric_1.TimestampVector; | ||
Arrow['DictionaryVector'] = dictionary_1.DictionaryVector; | ||
Arrow['FixedSizeListVector'] = list_1.FixedSizeListVector; | ||
} | ||
} | ||
catch (e) { } | ||
/** end closure exports */ | ||
/* end closure exports */ | ||
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkFycm93LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDZEQUE2RDtBQUM3RCwrREFBK0Q7QUFDL0Qsd0RBQXdEO0FBQ3hELDZEQUE2RDtBQUM3RCxvREFBb0Q7QUFDcEQsNkRBQTZEO0FBQzdELDZEQUE2RDtBQUM3RCxFQUFFO0FBQ0YsK0NBQStDO0FBQy9DLEVBQUU7QUFDRiw2REFBNkQ7QUFDN0QsOERBQThEO0FBQzlELHlEQUF5RDtBQUN6RCw0REFBNEQ7QUFDNUQsMERBQTBEO0FBQzFELHFCQUFxQjs7QUFFckIsbUNBQWdDO0FBRXZCLGdCQUZBLGFBQUssQ0FFQTtBQURkLDBDQUE2QztBQUM3QixzQkFEUCxtQkFBVyxDQUNPO0FBRTNCLDBEQUEwRDtBQUMxRCxJQUFJLENBQUM7SUFDRCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDOUIsRUFBRSxDQUFDLENBQUMsT0FBTyxLQUFLLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQztRQUM1Qix1RUFBdUU7UUFDdkUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLGFBQUssQ0FBQztRQUN2QixLQUFLLENBQUMsYUFBYSxDQUFDLEdBQUcsbUJBQVcsQ0FBQztJQUN2QyxDQUFDO0FBQ0wsQ0FBQztBQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBMEIsQ0FBQztBQUN4QywwQkFBMEIiLCJmaWxlIjoiQXJyb3cuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lXG4vLyBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGVcbi8vIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uXG4vLyByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlXG4vLyB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlXG4vLyBcIkxpY2Vuc2VcIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Vcbi8vIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbi8vXG4vLyAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuLy9cbi8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZyxcbi8vIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuXG4vLyBcIkFTIElTXCIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWVxuLy8gS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlXG4vLyBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zXG4vLyB1bmRlciB0aGUgTGljZW5zZS5cblxuaW1wb3J0IHsgVGFibGUgfSBmcm9tICcuL3RhYmxlJztcbmltcG9ydCB7IHJlYWRCdWZmZXJzIH0gZnJvbSAnLi9yZWFkZXIvYXJyb3cnO1xuZXhwb3J0IHsgVGFibGUsIHJlYWRCdWZmZXJzIH07XG5cbi8qIFRoZXNlIGV4cG9ydHMgYXJlIG5lZWRlZCBmb3IgdGhlIGNsb3N1cmUgdW1kIHRhcmdldHMgKi9cbnRyeSB7XG4gICAgY29uc3QgQXJyb3cgPSBldmFsKCdleHBvcnRzJyk7XG4gICAgaWYgKHR5cGVvZiBBcnJvdyA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgLy8gc3RyaW5nIGluZGV4ZXJzIHRlbGwgY2xvc3VyZSBjb21waWxlciBub3QgdG8gcmVuYW1lIHRoZXNlIHByb3BlcnRpZXNcbiAgICAgICAgQXJyb3dbJ1RhYmxlJ10gPSBUYWJsZTtcbiAgICAgICAgQXJyb3dbJ3JlYWRCdWZmZXJzJ10gPSByZWFkQnVmZmVycztcbiAgICB9XG59IGNhdGNoIChlKSB7IC8qIG5vdCB0aGUgVU1EIGJ1bmRsZSAqLyB9XG4vKiogZW5kIGNsb3N1cmUgZXhwb3J0cyAqL1xuIl19 | ||
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkFycm93LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSw2REFBNkQ7QUFDN0QsK0RBQStEO0FBQy9ELHdEQUF3RDtBQUN4RCw2REFBNkQ7QUFDN0Qsb0RBQW9EO0FBQ3BELDZEQUE2RDtBQUM3RCw2REFBNkQ7QUFDN0QsRUFBRTtBQUNGLCtDQUErQztBQUMvQyxFQUFFO0FBQ0YsNkRBQTZEO0FBQzdELDhEQUE4RDtBQUM5RCx5REFBeUQ7QUFDekQsNERBQTREO0FBQzVELDBEQUEwRDtBQUMxRCxxQkFBcUI7O0FBRXJCLDBDQUF1QztBQTZCOUIsZ0JBN0JBLGFBQUssQ0E2QkE7QUE1QmQsNENBQXlDO0FBNEJ6QixpQkE1QlAsZUFBTSxDQTRCTztBQTNCdEIsd0NBQTJDO0FBa0N2QyxxQkFsQ0ssaUJBQVUsQ0FrQ0w7QUFqQ2Qsb0RBQXVEO0FBcURuRCwyQkFyREssNkJBQWdCLENBcURMO0FBcERwQiw0Q0FBMEQ7QUE4Q3RELHVCQTlDSyxxQkFBWSxDQThDTDtBQXJCUSxvQkF6QkQsa0JBQVMsQ0F5QkM7QUF4QmpDLDBDQUErRDtBQXlCdEQsc0JBekJBLG1CQUFXLENBeUJBO0FBQUUsMkJBekJBLHdCQUFnQixDQXlCQTtBQXhCdEMsd0NBQThFO0FBNkIxRSxxQkE3QkssaUJBQVUsQ0E2Qkw7QUFjVix1QkEzQ2lCLG1CQUFZLENBMkNqQjtBQVFaLDhCQW5EK0IsMEJBQW1CLENBbUQvQjtBQWpEdkIsOENBbUIwQjtBQU90QixxQkF6QkEsb0JBQVUsQ0F5QkE7QUFHVixxQkEzQkEsb0JBQVUsQ0EyQkE7QUFDVixzQkEzQkEscUJBQVcsQ0EyQkE7QUFDWCxzQkEzQkEscUJBQVcsQ0EyQkE7QUFDWCxzQkEzQkEscUJBQVcsQ0EyQkE7QUFDWCxzQkEzQkEscUJBQVcsQ0EyQkE7QUFDWCx1QkEzQkEsc0JBQVksQ0EyQkE7QUFDWix1QkEzQkEsc0JBQVksQ0EyQkE7QUFDWix1QkEzQkEsc0JBQVksQ0EyQkE7QUFPWix3QkFqQ0EsdUJBQWEsQ0FpQ0E7QUFDYix3QkFqQ0EsdUJBQWEsQ0FpQ0E7QUFDYix3QkFqQ0EsdUJBQWEsQ0FpQ0E7QUFSYix1QkF4QkEsc0JBQVksQ0F3QkE7QUFDWix1QkF4QkEsc0JBQVksQ0F3QkE7QUFDWix1QkF4QkEsc0JBQVksQ0F3QkE7QUFDWix1QkF4QkEsc0JBQVksQ0F3QkE7QUFNWix3QkE3QkEsdUJBQWEsQ0E2QkE7QUFDYiwwQkE3QkEseUJBQWUsQ0E2QkE7QUFLbkIsMERBQTBEO0FBQzFELElBQUksQ0FBQztJQUNELE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUM5QixFQUFFLENBQUMsQ0FBQyxPQUFPLEtBQUssS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDO1FBQzVCLHVFQUF1RTtRQUN2RSxLQUFLLENBQUMsYUFBYSxDQUFDLEdBQUcsbUJBQVcsQ0FBQztRQUNuQyxLQUFLLENBQUMsa0JBQWtCLENBQUMsR0FBRyx3QkFBZ0IsQ0FBQztRQUM3QyxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsYUFBSyxDQUFDO1FBQ3ZCLEtBQUssQ0FBQyxRQUFRLENBQUMsR0FBRyxlQUFNLENBQUM7UUFDekIsS0FBSyxDQUFDLFdBQVcsQ0FBQyxHQUFHLGtCQUFTLENBQUM7UUFDL0IsS0FBSyxDQUFDLFlBQVksQ0FBQyxHQUFHLG9CQUFVLENBQUM7UUFDakMsS0FBSyxDQUFDLFlBQVksQ0FBQyxHQUFHLGlCQUFVLENBQUM7UUFDakMsS0FBSyxDQUFDLFlBQVksQ0FBQyxHQUFHLGlCQUFVLENBQUM7UUFDakMsS0FBSyxDQUFDLFlBQVksQ0FBQyxHQUFHLG9CQUFVLENBQUM7UUFDakMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxHQUFHLHFCQUFXLENBQUM7UUFDbkMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxHQUFHLHFCQUFXLENBQUM7UUFDbkMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxHQUFHLHFCQUFXLENBQUM7UUFDbkMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxHQUFHLHFCQUFXLENBQUM7UUFDbkMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxHQUFHLHNCQUFZLENBQUM7UUFDckMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxHQUFHLHNCQUFZLENBQUM7UUFDckMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxHQUFHLHNCQUFZLENBQUM7UUFDckMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxHQUFHLHNCQUFZLENBQUM7UUFDckMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxHQUFHLHNCQUFZLENBQUM7UUFDckMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxHQUFHLHNCQUFZLENBQUM7UUFDckMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxHQUFHLHNCQUFZLENBQUM7UUFDckMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxHQUFHLG1CQUFZLENBQUM7UUFDckMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxHQUFHLHFCQUFZLENBQUM7UUFDckMsS0FBSyxDQUFDLGVBQWUsQ0FBQyxHQUFHLHVCQUFhLENBQUM7UUFDdkMsS0FBSyxDQUFDLGVBQWUsQ0FBQyxHQUFHLHVCQUFhLENBQUM7UUFDdkMsS0FBSyxDQUFDLGVBQWUsQ0FBQyxHQUFHLHVCQUFhLENBQUM7UUFDdkMsS0FBSyxDQUFDLGVBQWUsQ0FBQyxHQUFHLHVCQUFhLENBQUM7UUFDdkMsS0FBSyxDQUFDLGlCQUFpQixDQUFDLEdBQUcseUJBQWUsQ0FBQztRQUMzQyxLQUFLLENBQUMsa0JBQWtCLENBQUMsR0FBRyw2QkFBZ0IsQ0FBQztRQUM3QyxLQUFLLENBQUMscUJBQXFCLENBQUMsR0FBRywwQkFBbUIsQ0FBQztJQUN2RCxDQUFDO0FBQ0wsQ0FBQztBQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBMEIsQ0FBQztBQUN4Qyx5QkFBeUIiLCJmaWxlIjoiQXJyb3cuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lXG4vLyBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGVcbi8vIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uXG4vLyByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlXG4vLyB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlXG4vLyBcIkxpY2Vuc2VcIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Vcbi8vIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbi8vXG4vLyAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuLy9cbi8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZyxcbi8vIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuXG4vLyBcIkFTIElTXCIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWVxuLy8gS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlXG4vLyBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zXG4vLyB1bmRlciB0aGUgTGljZW5zZS5cblxuaW1wb3J0IHsgVGFibGUgfSBmcm9tICcuL3ZlY3Rvci90YWJsZSc7XG5pbXBvcnQgeyBWZWN0b3IgfSBmcm9tICcuL3ZlY3Rvci92ZWN0b3InO1xuaW1wb3J0IHsgVXRmOFZlY3RvciB9IGZyb20gJy4vdmVjdG9yL3V0ZjgnO1xuaW1wb3J0IHsgRGljdGlvbmFyeVZlY3RvciB9IGZyb20gJy4vdmVjdG9yL2RpY3Rpb25hcnknO1xuaW1wb3J0IHsgU3RydWN0VmVjdG9yLCBTdHJ1Y3RSb3cgfSBmcm9tICcuL3ZlY3Rvci9zdHJ1Y3QnO1xuaW1wb3J0IHsgcmVhZFZlY3RvcnMsIHJlYWRWZWN0b3JzQXN5bmMgfSBmcm9tICcuL3JlYWRlci9hcnJvdyc7XG5pbXBvcnQgeyBMaXN0VmVjdG9yLCBCaW5hcnlWZWN0b3IsIEZpeGVkU2l6ZUxpc3RWZWN0b3IgfSBmcm9tICcuL3ZlY3Rvci9saXN0JztcblxuaW1wb3J0IHtcbiAgICBCb29sVmVjdG9yLFxuICAgIEludDhWZWN0b3IsXG4gICAgSW50MTZWZWN0b3IsXG4gICAgSW50MzJWZWN0b3IsXG4gICAgSW50NjRWZWN0b3IsXG4gICAgVWludDhWZWN0b3IsXG4gICAgVWludDE2VmVjdG9yLFxuICAgIFVpbnQzMlZlY3RvcixcbiAgICBVaW50NjRWZWN0b3IsXG4gICAgRmxvYXQxNlZlY3RvcixcbiAgICBGbG9hdDMyVmVjdG9yLFxuICAgIEZsb2F0NjRWZWN0b3IsXG4gICAgRGF0ZTMyVmVjdG9yLFxuICAgIERhdGU2NFZlY3RvcixcbiAgICBUaW1lMzJWZWN0b3IsXG4gICAgVGltZTY0VmVjdG9yLFxuICAgIERlY2ltYWxWZWN0b3IsXG4gICAgVGltZXN0YW1wVmVjdG9yLFxufSBmcm9tICcuL3ZlY3Rvci9udW1lcmljJztcblxuZXhwb3J0IHsgVGFibGUsIFZlY3RvciwgU3RydWN0Um93IH07XG5leHBvcnQgeyByZWFkVmVjdG9ycywgcmVhZFZlY3RvcnNBc3luYyB9O1xuZXhwb3J0IHsgTnVtZXJpY1ZlY3RvckNvbnN0cnVjdG9yIH0gZnJvbSAnLi92ZWN0b3IvbnVtZXJpYyc7XG5leHBvcnQgeyBMaXN0LCBUeXBlZEFycmF5LCBUeXBlZEFycmF5Q29uc3RydWN0b3IgfSBmcm9tICcuL3ZlY3Rvci90eXBlcyc7XG5leHBvcnQge1xuICAgIEJvb2xWZWN0b3IsXG4gICAgTGlzdFZlY3RvcixcbiAgICBVdGY4VmVjdG9yLFxuICAgIEludDhWZWN0b3IsXG4gICAgSW50MTZWZWN0b3IsXG4gICAgSW50MzJWZWN0b3IsXG4gICAgSW50NjRWZWN0b3IsXG4gICAgVWludDhWZWN0b3IsXG4gICAgVWludDE2VmVjdG9yLFxuICAgIFVpbnQzMlZlY3RvcixcbiAgICBVaW50NjRWZWN0b3IsXG4gICAgRGF0ZTMyVmVjdG9yLFxuICAgIERhdGU2NFZlY3RvcixcbiAgICBUaW1lMzJWZWN0b3IsXG4gICAgVGltZTY0VmVjdG9yLFxuICAgIEJpbmFyeVZlY3RvcixcbiAgICBTdHJ1Y3RWZWN0b3IsXG4gICAgRmxvYXQxNlZlY3RvcixcbiAgICBGbG9hdDMyVmVjdG9yLFxuICAgIEZsb2F0NjRWZWN0b3IsXG4gICAgRGVjaW1hbFZlY3RvcixcbiAgICBUaW1lc3RhbXBWZWN0b3IsXG4gICAgRGljdGlvbmFyeVZlY3RvcixcbiAgICBGaXhlZFNpemVMaXN0VmVjdG9yLFxufTtcblxuLyogVGhlc2UgZXhwb3J0cyBhcmUgbmVlZGVkIGZvciB0aGUgY2xvc3VyZSB1bWQgdGFyZ2V0cyAqL1xudHJ5IHtcbiAgICBjb25zdCBBcnJvdyA9IGV2YWwoJ2V4cG9ydHMnKTtcbiAgICBpZiAodHlwZW9mIEFycm93ID09PSAnb2JqZWN0Jykge1xuICAgICAgICAvLyBzdHJpbmcgaW5kZXhlcnMgdGVsbCBjbG9zdXJlIGNvbXBpbGVyIG5vdCB0byByZW5hbWUgdGhlc2UgcHJvcGVydGllc1xuICAgICAgICBBcnJvd1sncmVhZFZlY3RvcnMnXSA9IHJlYWRWZWN0b3JzO1xuICAgICAgICBBcnJvd1sncmVhZFZlY3RvcnNBc3luYyddID0gcmVhZFZlY3RvcnNBc3luYztcbiAgICAgICAgQXJyb3dbJ1RhYmxlJ10gPSBUYWJsZTtcbiAgICAgICAgQXJyb3dbJ1ZlY3RvciddID0gVmVjdG9yO1xuICAgICAgICBBcnJvd1snU3RydWN0Um93J10gPSBTdHJ1Y3RSb3c7XG4gICAgICAgIEFycm93WydCb29sVmVjdG9yJ10gPSBCb29sVmVjdG9yO1xuICAgICAgICBBcnJvd1snTGlzdFZlY3RvciddID0gTGlzdFZlY3RvcjtcbiAgICAgICAgQXJyb3dbJ1V0ZjhWZWN0b3InXSA9IFV0ZjhWZWN0b3I7XG4gICAgICAgIEFycm93WydJbnQ4VmVjdG9yJ10gPSBJbnQ4VmVjdG9yO1xuICAgICAgICBBcnJvd1snSW50MTZWZWN0b3InXSA9IEludDE2VmVjdG9yO1xuICAgICAgICBBcnJvd1snSW50MzJWZWN0b3InXSA9IEludDMyVmVjdG9yO1xuICAgICAgICBBcnJvd1snSW50NjRWZWN0b3InXSA9IEludDY0VmVjdG9yO1xuICAgICAgICBBcnJvd1snVWludDhWZWN0b3InXSA9IFVpbnQ4VmVjdG9yO1xuICAgICAgICBBcnJvd1snVWludDE2VmVjdG9yJ10gPSBVaW50MTZWZWN0b3I7XG4gICAgICAgIEFycm93WydVaW50MzJWZWN0b3InXSA9IFVpbnQzMlZlY3RvcjtcbiAgICAgICAgQXJyb3dbJ1VpbnQ2NFZlY3RvciddID0gVWludDY0VmVjdG9yO1xuICAgICAgICBBcnJvd1snRGF0ZTMyVmVjdG9yJ10gPSBEYXRlMzJWZWN0b3I7XG4gICAgICAgIEFycm93WydEYXRlNjRWZWN0b3InXSA9IERhdGU2NFZlY3RvcjtcbiAgICAgICAgQXJyb3dbJ1RpbWUzMlZlY3RvciddID0gVGltZTMyVmVjdG9yO1xuICAgICAgICBBcnJvd1snVGltZTY0VmVjdG9yJ10gPSBUaW1lNjRWZWN0b3I7XG4gICAgICAgIEFycm93WydCaW5hcnlWZWN0b3InXSA9IEJpbmFyeVZlY3RvcjtcbiAgICAgICAgQXJyb3dbJ1N0cnVjdFZlY3RvciddID0gU3RydWN0VmVjdG9yO1xuICAgICAgICBBcnJvd1snRmxvYXQxNlZlY3RvciddID0gRmxvYXQxNlZlY3RvcjtcbiAgICAgICAgQXJyb3dbJ0Zsb2F0MzJWZWN0b3InXSA9IEZsb2F0MzJWZWN0b3I7XG4gICAgICAgIEFycm93WydGbG9hdDY0VmVjdG9yJ10gPSBGbG9hdDY0VmVjdG9yO1xuICAgICAgICBBcnJvd1snRGVjaW1hbFZlY3RvciddID0gRGVjaW1hbFZlY3RvcjtcbiAgICAgICAgQXJyb3dbJ1RpbWVzdGFtcFZlY3RvciddID0gVGltZXN0YW1wVmVjdG9yO1xuICAgICAgICBBcnJvd1snRGljdGlvbmFyeVZlY3RvciddID0gRGljdGlvbmFyeVZlY3RvcjtcbiAgICAgICAgQXJyb3dbJ0ZpeGVkU2l6ZUxpc3RWZWN0b3InXSA9IEZpeGVkU2l6ZUxpc3RWZWN0b3I7XG4gICAgfVxufSBjYXRjaCAoZSkgeyAvKiBub3QgdGhlIFVNRCBidW5kbGUgKi8gfVxuLyogZW5kIGNsb3N1cmUgZXhwb3J0cyAqL1xuIl19 |
@@ -0,1 +1,2 @@ | ||
"use strict"; | ||
// automatically generated by the FlatBuffers compiler, do not modify | ||
@@ -49,3 +50,3 @@ Object.defineProperty(exports, "__esModule", { value: true }); | ||
let offset = this.bb.__offset(this.bb_pos, 4); | ||
return offset ? (this.bb.readInt16(this.bb_pos + offset)) : NS16187549871986683199.org.apache.arrow.flatbuf.MetadataVersion.V1; | ||
return offset ? /** @type {org.apache.arrow.flatbuf.MetadataVersion} */ (this.bb.readInt16(this.bb_pos + offset)) : NS16187549871986683199.org.apache.arrow.flatbuf.MetadataVersion.V1; | ||
} | ||
@@ -235,2 +236,2 @@ /** | ||
//# sourceMappingURL=data:application/json;charset=utf8;base64,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Q0gsY0FBYzt3QkFDWixNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztvQkFDNUMsQ0FBQztvQkFFRDs7Ozs7dUJBS0c7b0JBQ0gsVUFBVTt3QkFDUixNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUMsQ0FBQztvQkFDN0MsQ0FBQztvQkFFRDs7Ozs7O3VCQU1HO29CQUNILE1BQU0sQ0FBQyxXQUFXLENBQUMsT0FBNEIsRUFBRSxNQUF3QixFQUFFLGNBQXNCLEVBQUUsVUFBNEI7d0JBQzdILE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO3dCQUNwQixPQUFPLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxDQUFDO3dCQUMvQixPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO3dCQUNmLE9BQU8sQ0FBQyxVQUFVLENBQUMsY0FBYyxDQUFDLENBQUM7d0JBQ25DLE9BQU8sQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUM7d0JBQzNCLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUM7b0JBQzFCLENBQUM7aUJBRUY7Z0JBakVZLGFBQUssUUFpRWpCLENBQUE7WUFDSCxDQUFDLEVBbkVpQyxPQUFPLEdBQVAsYUFBTyxLQUFQLGFBQU8sUUFtRXhDO1FBQUQsQ0FBQyxFQW5FMkIsS0FBSyxHQUFMLFlBQUssS0FBTCxZQUFLLFFBbUVoQztJQUFELENBQUMsRUFuRW9CLE1BQU0sR0FBTixVQUFNLEtBQU4sVUFBTSxRQW1FMUI7QUFBRCxDQUFDLEVBbkVnQixHQUFHLEdBQUgsV0FBRyxLQUFILFdBQUcsUUFtRW5CIiwiZmlsZSI6ImZvcm1hdC9GaWxlLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy8gYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgYnkgdGhlIEZsYXRCdWZmZXJzIGNvbXBpbGVyLCBkbyBub3QgbW9kaWZ5XG5cbmltcG9ydCB7IGZsYXRidWZmZXJzIH0gZnJvbSAnZmxhdGJ1ZmZlcnMnO1xuaW1wb3J0ICogYXMgTlMxNjE4NzU0OTg3MTk4NjY4MzE5OSBmcm9tICcuL1NjaGVtYSc7XG4vKipcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIEFycm93IEZpbGUgbWV0YWRhdGFcbiAqXG4gKlxuICogQGNvbnN0cnVjdG9yXG4gKi9cbmV4cG9ydCBuYW1lc3BhY2Ugb3JnLmFwYWNoZS5hcnJvdy5mbGF0YnVmIHtcbiAgZXhwb3J0IGNsYXNzIEZvb3RlciB7XG4gICAgLyoqXG4gICAgICogQHR5cGUge2ZsYXRidWZmZXJzLkJ5dGVCdWZmZXJ9XG4gICAgICovXG4gICAgYmI6IGZsYXRidWZmZXJzLkJ5dGVCdWZmZXI7XG5cbiAgICAvKipcbiAgICAgKiBAdHlwZSB7bnVtYmVyfVxuICAgICAqL1xuICAgIGJiX3BvczogbnVtYmVyID0gMDtcbiAgICAvKipcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gaVxuICAgICAqIEBwYXJhbSB7ZmxhdGJ1ZmZlcnMuQnl0ZUJ1ZmZlcn0gYmJcbiAgICAgKiBAcmV0dXJucyB7Rm9vdGVyfVxuICAgICAqL1xuICAgIF9faW5pdChpOiBudW1iZXIsIGJiOiBmbGF0YnVmZmVycy5CeXRlQnVmZmVyKTogRm9vdGVyIHtcbiAgICAgIHRoaXMuYmJfcG9zID0gaTtcbiAgICAgIHRoaXMuYmIgPSBiYjtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSB7ZmxhdGJ1ZmZlcnMuQnl0ZUJ1ZmZlcn0gYmJcbiAgICAgKiBAcGFyYW0ge0Zvb3Rlcj19IG9ialxuICAgICAqIEByZXR1cm5zIHtGb290ZXJ9XG4gICAgICovXG4gICAgc3RhdGljIGdldFJvb3RBc0Zvb3RlcihiYjogZmxhdGJ1ZmZlcnMuQnl0ZUJ1ZmZlciwgb2JqPzogRm9vdGVyKTogRm9vdGVyIHtcbiAgICAgIHJldHVybiAob2JqIHx8IG5ldyBGb290ZXIpLl9faW5pdChiYi5yZWFkSW50MzIoYmIucG9zaXRpb24oKSkgKyBiYi5wb3NpdGlvbigpLCBiYik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHJldHVybnMge29yZy5hcGFjaGUuYXJyb3cuZmxhdGJ1Zi5NZXRhZGF0YVZlcnNpb259XG4gICAgICovXG4gICAgdmVyc2lvbigpOiBOUzE2MTg3NTQ5ODcxOTg2NjgzMTk5Lm9yZy5hcGFjaGUuYXJyb3cuZmxhdGJ1Zi5NZXRhZGF0YVZlcnNpb24ge1xuICAgICAgbGV0IG9mZnNldCA9IHRoaXMuYmIuX19vZmZzZXQodGhpcy5iYl9wb3MsIDQpO1xuICAgICAgcmV0dXJuIG9mZnNldCA/IC8qKiBAdHlwZSB7b3JnLmFwYWNoZS5hcnJvdy5mbGF0YnVmLk1ldGFkYXRhVmVyc2lvbn0gKi8gKHRoaXMuYmIucmVhZEludDE2KHRoaXMuYmJfcG9zICsgb2Zmc2V0KSkgOiBOUzE2MTg3NTQ5ODcxOTg2NjgzMTk5Lm9yZy5hcGFjaGUuYXJyb3cuZmxhdGJ1Zi5NZXRhZGF0YVZlcnNpb24uVjE7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIHtvcmcuYXBhY2hlLmFycm93LmZsYXRidWYuU2NoZW1hPX0gb2JqXG4gICAgICogQHJldHVybnMge29yZy5hcGFjaGUuYXJyb3cuZmxhdGJ1Zi5TY2hlbWF8bnVsbH1cbiAgICAgKi9cbiAgICBzY2hlbWEob2JqPzogTlMxNjE4NzU0OTg3MTk4NjY4MzE5OS5vcmcuYXBhY2hlLmFycm93LmZsYXRidWYuU2NoZW1hKTogTlMxNjE4NzU0OTg3MTk4NjY4MzE5OS5vcmcuYXBhY2hlLmFycm93LmZsYXRidWYuU2NoZW1hIHwgbnVsbCB7XG4gICAgICBsZXQgb2Zmc2V0ID0gdGhpcy5iYi5fX29mZnNldCh0aGlzLmJiX3BvcywgNik7XG4gICAgICByZXR1cm4gb2Zmc2V0ID8gKG9iaiB8fCBuZXcgTlMxNjE4NzU0OTg3MTk4NjY4MzE5OS5vcmcuYXBhY2hlLmFycm93LmZsYXRidWYuU2NoZW1hKS5fX2luaXQodGhpcy5iYi5fX2luZGlyZWN0KHRoaXMuYmJfcG9zICsgb2Zmc2V0KSwgdGhpcy5iYikgOiBudWxsO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBpbmRleFxuICAgICAqIEBwYXJhbSB7b3JnLmFwYWNoZS5hcnJvdy5mbGF0YnVmLkJsb2NrPX0gb2JqXG4gICAgICogQHJldHVybnMge29yZy5hcGFjaGUuYXJyb3cuZmxhdGJ1Zi5CbG9ja31cbiAgICAgKi9cbiAgICBkaWN0aW9uYXJpZXMoaW5kZXg6IG51bWJlciwgb2JqPzogb3JnLmFwYWNoZS5hcnJvdy5mbGF0YnVmLkJsb2NrKTogb3JnLmFwYWNoZS5hcnJvdy5mbGF0YnVmLkJsb2NrIHwgbnVsbCB7XG4gICAgICBsZXQgb2Zmc2V0ID0gdGhpcy5iYi5fX29mZnNldCh0aGlzLmJiX3BvcywgOCk7XG4gICAgICByZXR1cm4gb2Zmc2V0ID8gKG9iaiB8fCBuZXcgb3JnLmFwYWNoZS5hcnJvdy5mbGF0YnVmLkJsb2NrKS5fX2luaXQodGhpcy5iYi5fX3ZlY3Rvcih0aGlzLmJiX3BvcyArIG9mZnNldCkgKyBpbmRleCAqIDI0LCB0aGlzLmJiKSA6IG51bGw7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHJldHVybnMge251bWJlcn1cbiAgICAgKi9cbiAgICBkaWN0aW9uYXJpZXNMZW5ndGgoKTogbnVtYmVyIHtcbiAgICAgIGxldCBvZmZzZXQgPSB0aGlzLmJiLl9fb2Zmc2V0KHRoaXMuYmJfcG9zLCA4KTtcbiAgICAgIHJldHVybiBvZmZzZXQgPyB0aGlzLmJiLl9fdmVjdG9yX2xlbih0aGlzLmJiX3BvcyArIG9mZnNldCkgOiAwO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBpbmRleFxuICAgICAqIEBwYXJhbSB7b3JnLmFwYWNoZS5hcnJvdy5mbGF0YnVmLkJsb2NrPX0gb2JqXG4gICAgICogQHJldHVybnMge29yZy5hcGFjaGUuYXJyb3cuZmxhdGJ1Zi5CbG9ja31cbiAgICAgKi9cbiAgICByZWNvcmRCYXRjaGVzKGluZGV4OiBudW1iZXIsIG9iaj86IG9yZy5hcGFjaGUuYXJyb3cuZmxhdGJ1Zi5CbG9jayk6IG9yZy5hcGFjaGUuYXJyb3cuZmxhdGJ1Zi5CbG9jayB8IG51bGwge1xuICAgICAgbGV0IG9mZnNldCA9IHRoaXMuYmIuX19vZmZzZXQodGhpcy5iYl9wb3MsIDEwKTtcbiAgICAgIHJldHVybiBvZmZzZXQgPyAob2JqIHx8IG5ldyBvcmcuYXBhY2hlLmFycm93LmZsYXRidWYuQmxvY2spLl9faW5pdCh0aGlzLmJiLl9fdmVjdG9yKHRoaXMuYmJfcG9zICsgb2Zmc2V0KSArIGluZGV4ICogMjQsIHRoaXMuYmIpIDogbnVsbDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfVxuICAgICAqL1xuICAgIHJlY29yZEJhdGNoZXNMZW5ndGgoKTogbnVtYmVyIHtcbiAgICAgIGxldCBvZmZzZXQgPSB0aGlzLmJiLl9fb2Zmc2V0KHRoaXMuYmJfcG9zLCAxMCk7XG4gICAgICByZXR1cm4gb2Zmc2V0ID8gdGhpcy5iYi5fX3ZlY3Rvcl9sZW4odGhpcy5iYl9wb3MgKyBvZmZzZXQpIDogMDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0ge2ZsYXRidWZmZXJzLkJ1aWxkZXJ9IGJ1aWxkZXJcbiAgICAgKi9cbiAgICBzdGF0aWMgc3RhcnRGb290ZXIoYnVpbGRlcjogZmxhdGJ1ZmZlcnMuQnVpbGRlcikge1xuICAgICAgYnVpbGRlci5zdGFydE9iamVjdCg0KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0ge2ZsYXRidWZmZXJzLkJ1aWxkZXJ9IGJ1aWxkZXJcbiAgICAgKiBAcGFyYW0ge29yZy5hcGFjaGUuYXJyb3cuZmxhdGJ1Zi5NZXRhZGF0YVZlcnNpb259IHZlcnNpb25cbiAgICAgKi9cbiAgICBzdGF0aWMgYWRkVmVyc2lvbihidWlsZGVyOiBmbGF0YnVmZmVycy5CdWlsZGVyLCB2ZXJzaW9uOiBOUzE2MTg3NTQ5ODcxOTg2NjgzMTk5Lm9yZy5hcGFjaGUuYXJyb3cuZmxhdGJ1Zi5NZXRhZGF0YVZlcnNpb24pIHtcbiAgICAgIGJ1aWxkZXIuYWRkRmllbGRJbnQxNigwLCB2ZXJzaW9uLCBOUzE2MTg3NTQ5ODcxOTg2NjgzMTk5Lm9yZy5hcGFjaGUuYXJyb3cuZmxhdGJ1Zi5NZXRhZGF0YVZlcnNpb24uVjEpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSB7ZmxhdGJ1ZmZlcnMuQnVpbGRlcn0gYnVpbGRlclxuICAgICAqIEBwYXJhbSB7ZmxhdGJ1ZmZlcnMuT2Zmc2V0fSBzY2hlbWFPZmZzZXRcbiAgICAgKi9cbiAgICBzdGF0aWMgYWRkU2NoZW1hKGJ1aWxkZXI6IGZsYXRidWZmZXJzLkJ1aWxkZXIsIHNjaGVtYU9mZnNldDogZmxhdGJ1ZmZlcnMuT2Zmc2V0KSB7XG4gICAgICBidWlsZGVyLmFkZEZpZWxkT2Zmc2V0KDEsIHNjaGVtYU9mZnNldCwgMCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIHtmbGF0YnVmZmVycy5CdWlsZGVyfSBidWlsZGVyXG4gICAgICogQHBhcmFtIHtmbGF0YnVmZmVycy5PZmZzZXR9IGRpY3Rpb25hcmllc09mZnNldFxuICAgICAqL1xuICAgIHN0YXRpYyBhZGREaWN0aW9uYXJpZXMoYnVpbGRlcjogZmxhdGJ1ZmZlcnMuQnVpbGRlciwgZGljdGlvbmFyaWVzT2Zmc2V0OiBmbGF0YnVmZmVycy5PZmZzZXQpIHtcbiAgICAgIGJ1aWxkZXIuYWRkRmllbGRPZmZzZXQoMiwgZGljdGlvbmFyaWVzT2Zmc2V0LCAwKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0ge2ZsYXRidWZmZXJzLkJ1aWxkZXJ9IGJ1aWxkZXJcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gbnVtRWxlbXNcbiAgICAgKi9cbiAgICBzdGF0aWMgc3RhcnREaWN0aW9uYXJpZXNWZWN0b3IoYnVpbGRlcjogZmxhdGJ1ZmZlcnMuQnVpbGRlciwgbnVtRWxlbXM6IG51bWJlcikge1xuICAgICAgYnVpbGRlci5zdGFydFZlY3RvcigyNCwgbnVtRWxlbXMsIDgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSB7ZmxhdGJ1ZmZlcnMuQnVpbGRlcn0gYnVpbGRlclxuICAgICAqIEBwYXJhbSB7ZmxhdGJ1ZmZlcnMuT2Zmc2V0fSByZWNvcmRCYXRjaGVzT2Zmc2V0XG4gICAgICovXG4gICAgc3RhdGljIGFkZFJlY29yZEJhdGNoZXMoYnVpbGRlcjogZmxhdGJ1ZmZlcnMuQnVpbGRlciwgcmVjb3JkQmF0Y2hlc09mZnNldDogZmxhdGJ1ZmZlcnMuT2Zmc2V0KSB7XG4gICAgICBidWlsZGVyLmFkZEZpZWxkT2Zmc2V0KDMsIHJlY29yZEJhdGNoZXNPZmZzZXQsIDApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSB7ZmxhdGJ1ZmZlcnMuQnVpbGRlcn0gYnVpbGRlclxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBudW1FbGVtc1xuICAgICAqL1xuICAgIHN0YXRpYyBzdGFydFJlY29yZEJhdGNoZXNWZWN0b3IoYnVpbGRlcjogZmxhdGJ1ZmZlcnMuQnVpbGRlciwgbnVtRWxlbXM6IG51bWJlcikge1xuICAgICAgYnVpbGRlci5zdGFydFZlY3RvcigyNCwgbnVtRWxlbXMsIDgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSB7ZmxhdGJ1ZmZlcnMuQnVpbGRlcn0gYnVpbGRlclxuICAgICAqIEByZXR1cm5zIHtmbGF0YnVmZmVycy5PZmZzZXR9XG4gICAgICovXG4gICAgc3RhdGljIGVuZEZvb3RlcihidWlsZGVyOiBmbGF0YnVmZmVycy5CdWlsZGVyKTogZmxhdGJ1ZmZlcnMuT2Zmc2V0IHtcbiAgICAgIGxldCBvZmZzZXQgPSBidWlsZGVyLmVuZE9iamVjdCgpO1xuICAgICAgcmV0dXJuIG9mZnNldDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0ge2ZsYXRidWZmZXJzLkJ1aWxkZXJ9IGJ1aWxkZXJcbiAgICAgKiBAcGFyYW0ge2ZsYXRidWZmZXJzLk9mZnNldH0gb2Zmc2V0XG4gICAgICovXG4gICAgc3RhdGljIGZpbmlzaEZvb3RlckJ1ZmZlcihidWlsZGVyOiBmbGF0YnVmZmVycy5CdWlsZGVyLCBvZmZzZXQ6IGZsYXRidWZmZXJzLk9mZnNldCkge1xuICAgICAgYnVpbGRlci5maW5pc2gob2Zmc2V0KTtcbiAgICB9XG5cbiAgfVxufVxuLyoqXG4gKiBAY29uc3RydWN0b3JcbiAqL1xuZXhwb3J0IG5hbWVzcGFjZSBvcmcuYXBhY2hlLmFycm93LmZsYXRidWYge1xuICBleHBvcnQgY2xhc3MgQmxvY2sge1xuICAgIC8qKlxuICAgICAqIEB0eXBlIHtmbGF0YnVmZmVycy5CeXRlQnVmZmVyfVxuICAgICAqL1xuICAgIGJiOiBmbGF0YnVmZmVycy5CeXRlQnVmZmVyO1xuXG4gICAgLyoqXG4gICAgICogQHR5cGUge251bWJlcn1cbiAgICAgKi9cbiAgICBiYl9wb3M6IG51bWJlciA9IDA7XG4gICAgLyoqXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGlcbiAgICAgKiBAcGFyYW0ge2ZsYXRidWZmZXJzLkJ5dGVCdWZmZXJ9IGJiXG4gICAgICogQHJldHVybnMge0Jsb2NrfVxuICAgICAqL1xuICAgIF9faW5pdChpOiBudW1iZXIsIGJiOiBmbGF0YnVmZmVycy5CeXRlQnVmZmVyKTogQmxvY2sge1xuICAgICAgdGhpcy5iYl9wb3MgPSBpO1xuICAgICAgdGhpcy5iYiA9IGJiO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSW5kZXggdG8gdGhlIHN0YXJ0IG9mIHRoZSBSZWNvcmRCbG9jayAobm90ZSB0aGlzIGlzIHBhc3QgdGhlIE1lc3NhZ2UgaGVhZGVyKVxuICAgICAqXG4gICAgICogQHJldHVybnMge2ZsYXRidWZmZXJzLkxvbmd9XG4gICAgICovXG4gICAgb2Zmc2V0KCk6IGZsYXRidWZmZXJzLkxvbmcge1xuICAgICAgcmV0dXJuIHRoaXMuYmIucmVhZEludDY0KHRoaXMuYmJfcG9zKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBMZW5ndGggb2YgdGhlIG1ldGFkYXRhXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfVxuICAgICAqL1xuICAgIG1ldGFEYXRhTGVuZ3RoKCk6IG51bWJlciB7XG4gICAgICByZXR1cm4gdGhpcy5iYi5yZWFkSW50MzIodGhpcy5iYl9wb3MgKyA4KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBMZW5ndGggb2YgdGhlIGRhdGEgKHRoaXMgaXMgYWxpZ25lZCBzbyB0aGVyZSBjYW4gYmUgYSBnYXAgYmV0d2VlbiB0aGlzIGFuZFxuICAgICAqIHRoZSBtZXRhdGRhdGEpLlxuICAgICAqXG4gICAgICogQHJldHVybnMge2ZsYXRidWZmZXJzLkxvbmd9XG4gICAgICovXG4gICAgYm9keUxlbmd0aCgpOiBmbGF0YnVmZmVycy5Mb25nIHtcbiAgICAgIHJldHVybiB0aGlzLmJiLnJlYWRJbnQ2NCh0aGlzLmJiX3BvcyArIDE2KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0ge2ZsYXRidWZmZXJzLkJ1aWxkZXJ9IGJ1aWxkZXJcbiAgICAgKiBAcGFyYW0ge2ZsYXRidWZmZXJzLkxvbmd9IG9mZnNldFxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBtZXRhRGF0YUxlbmd0aFxuICAgICAqIEBwYXJhbSB7ZmxhdGJ1ZmZlcnMuTG9uZ30gYm9keUxlbmd0aFxuICAgICAqIEByZXR1cm5zIHtmbGF0YnVmZmVycy5PZmZzZXR9XG4gICAgICovXG4gICAgc3RhdGljIGNyZWF0ZUJsb2NrKGJ1aWxkZXI6IGZsYXRidWZmZXJzLkJ1aWxkZXIsIG9mZnNldDogZmxhdGJ1ZmZlcnMuTG9uZywgbWV0YURhdGFMZW5ndGg6IG51bWJlciwgYm9keUxlbmd0aDogZmxhdGJ1ZmZlcnMuTG9uZyk6IGZsYXRidWZmZXJzLk9mZnNldCB7XG4gICAgICBidWlsZGVyLnByZXAoOCwgMjQpO1xuICAgICAgYnVpbGRlci53cml0ZUludDY0KGJvZHlMZW5ndGgpO1xuICAgICAgYnVpbGRlci5wYWQoNCk7XG4gICAgICBidWlsZGVyLndyaXRlSW50MzIobWV0YURhdGFMZW5ndGgpO1xuICAgICAgYnVpbGRlci53cml0ZUludDY0KG9mZnNldCk7XG4gICAgICByZXR1cm4gYnVpbGRlci5vZmZzZXQoKTtcbiAgICB9XG5cbiAgfVxufVxuIl19 | ||
//# sourceMappingURL=data:application/json;charset=utf8;base64,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QixHQUFHLEdBQUgsV0FBRyxLQUFILFdBQUcsUUFtRW5CIiwiZmlsZSI6ImZvcm1hdC9GaWxlLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy8gYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgYnkgdGhlIEZsYXRCdWZmZXJzIGNvbXBpbGVyLCBkbyBub3QgbW9kaWZ5XG5cbmltcG9ydCB7IGZsYXRidWZmZXJzIH0gZnJvbSAnZmxhdGJ1ZmZlcnMnO1xuaW1wb3J0ICogYXMgTlMxNjE4NzU0OTg3MTk4NjY4MzE5OSBmcm9tICcuL1NjaGVtYSc7XG4vKipcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIEFycm93IEZpbGUgbWV0YWRhdGFcbiAqXG4gKlxuICogQGNvbnN0cnVjdG9yXG4gKi9cbmV4cG9ydCBuYW1lc3BhY2Ugb3JnLmFwYWNoZS5hcnJvdy5mbGF0YnVmIHtcbiAgZXhwb3J0IGNsYXNzIEZvb3RlciB7XG4gICAgLyoqXG4gICAgICogQHR5cGUge2ZsYXRidWZmZXJzLkJ5dGVCdWZmZXJ9XG4gICAgICovXG4gICAgYmI6IGZsYXRidWZmZXJzLkJ5dGVCdWZmZXI7XG5cbiAgICAvKipcbiAgICAgKiBAdHlwZSB7bnVtYmVyfVxuICAgICAqL1xuICAgIGJiX3BvczogbnVtYmVyID0gMDtcbiAgICAvKipcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gaVxuICAgICAqIEBwYXJhbSB7ZmxhdGJ1ZmZlcnMuQnl0ZUJ1ZmZlcn0gYmJcbiAgICAgKiBAcmV0dXJucyB7Rm9vdGVyfVxuICAgICAqL1xuICAgIF9faW5pdChpOiBudW1iZXIsIGJiOiBmbGF0YnVmZmVycy5CeXRlQnVmZmVyKTogRm9vdGVyIHtcbiAgICAgIHRoaXMuYmJfcG9zID0gaTtcbiAgICAgIHRoaXMuYmIgPSBiYjtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSB7ZmxhdGJ1ZmZlcnMuQnl0ZUJ1ZmZlcn0gYmJcbiAgICAgKiBAcGFyYW0ge0Zvb3Rlcj19IG9ialxuICAgICAqIEByZXR1cm5zIHtGb290ZXJ9XG4gICAgICovXG4gICAgc3RhdGljIGdldFJvb3RBc0Zvb3RlcihiYjogZmxhdGJ1ZmZlcnMuQnl0ZUJ1ZmZlciwgb2JqPzogRm9vdGVyKTogRm9vdGVyIHtcbiAgICAgIHJldHVybiAob2JqIHx8IG5ldyBGb290ZXIpLl9faW5pdChiYi5yZWFkSW50MzIoYmIucG9zaXRpb24oKSkgKyBiYi5wb3NpdGlvbigpLCBiYik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHJldHVybnMge29yZy5hcGFjaGUuYXJyb3cuZmxhdGJ1Zi5NZXRhZGF0YVZlcnNpb259XG4gICAgICovXG4gICAgdmVyc2lvbigpOiBOUzE2MTg3NTQ5ODcxOTg2NjgzMTk5Lm9yZy5hcGFjaGUuYXJyb3cuZmxhdGJ1Zi5NZXRhZGF0YVZlcnNpb24ge1xuICAgICAgbGV0IG9mZnNldCA9IHRoaXMuYmIuX19vZmZzZXQodGhpcy5iYl9wb3MsIDQpO1xuICAgICAgcmV0dXJuIG9mZnNldCA/IC8qKiBAdHlwZSB7b3JnLmFwYWNoZS5hcnJvdy5mbGF0YnVmLk1ldGFkYXRhVmVyc2lvbn0gKi8gKHRoaXMuYmIucmVhZEludDE2KHRoaXMuYmJfcG9zICsgb2Zmc2V0KSkgOiBOUzE2MTg3NTQ5ODcxOTg2NjgzMTk5Lm9yZy5hcGFjaGUuYXJyb3cuZmxhdGJ1Zi5NZXRhZGF0YVZlcnNpb24uVjE7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIHtvcmcuYXBhY2hlLmFycm93LmZsYXRidWYuU2NoZW1hPX0gb2JqXG4gICAgICogQHJldHVybnMge29yZy5hcGFjaGUuYXJyb3cuZmxhdGJ1Zi5TY2hlbWF8bnVsbH1cbiAgICAgKi9cbiAgICBzY2hlbWEob2JqPzogTlMxNjE4NzU0OTg3MTk4NjY4MzE5OS5vcmcuYXBhY2hlLmFycm93LmZsYXRidWYuU2NoZW1hKTogTlMxNjE4NzU0OTg3MTk4NjY4MzE5OS5vcmcuYXBhY2hlLmFycm93LmZsYXRidWYuU2NoZW1hIHwgbnVsbCB7XG4gICAgICBsZXQgb2Zmc2V0ID0gdGhpcy5iYi5fX29mZnNldCh0aGlzLmJiX3BvcywgNik7XG4gICAgICByZXR1cm4gb2Zmc2V0ID8gKG9iaiB8fCBuZXcgTlMxNjE4NzU0OTg3MTk4NjY4MzE5OS5vcmcuYXBhY2hlLmFycm93LmZsYXRidWYuU2NoZW1hKS5fX2luaXQodGhpcy5iYi5fX2luZGlyZWN0KHRoaXMuYmJfcG9zICsgb2Zmc2V0KSwgdGhpcy5iYikgOiBudWxsO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBpbmRleFxuICAgICAqIEBwYXJhbSB7b3JnLmFwYWNoZS5hcnJvdy5mbGF0YnVmLkJsb2NrPX0gb2JqXG4gICAgICogQHJldHVybnMge29yZy5hcGFjaGUuYXJyb3cuZmxhdGJ1Zi5CbG9ja31cbiAgICAgKi9cbiAgICBkaWN0aW9uYXJpZXMoaW5kZXg6IG51bWJlciwgb2JqPzogb3JnLmFwYWNoZS5hcnJvdy5mbGF0YnVmLkJsb2NrKTogb3JnLmFwYWNoZS5hcnJvdy5mbGF0YnVmLkJsb2NrIHwgbnVsbCB7XG4gICAgICBsZXQgb2Zmc2V0ID0gdGhpcy5iYi5fX29mZnNldCh0aGlzLmJiX3BvcywgOCk7XG4gICAgICByZXR1cm4gb2Zmc2V0ID8gKG9iaiB8fCBuZXcgb3JnLmFwYWNoZS5hcnJvdy5mbGF0YnVmLkJsb2NrKS5fX2luaXQodGhpcy5iYi5fX3ZlY3Rvcih0aGlzLmJiX3BvcyArIG9mZnNldCkgKyBpbmRleCAqIDI0LCB0aGlzLmJiKSA6IG51bGw7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHJldHVybnMge251bWJlcn1cbiAgICAgKi9cbiAgICBkaWN0aW9uYXJpZXNMZW5ndGgoKTogbnVtYmVyIHtcbiAgICAgIGxldCBvZmZzZXQgPSB0aGlzLmJiLl9fb2Zmc2V0KHRoaXMuYmJfcG9zLCA4KTtcbiAgICAgIHJldHVybiBvZmZzZXQgPyB0aGlzLmJiLl9fdmVjdG9yX2xlbih0aGlzLmJiX3BvcyArIG9mZnNldCkgOiAwO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBpbmRleFxuICAgICAqIEBwYXJhbSB7b3JnLmFwYWNoZS5hcnJvdy5mbGF0YnVmLkJsb2NrPX0gb2JqXG4gICAgICogQHJldHVybnMge29yZy5hcGFjaGUuYXJyb3cuZmxhdGJ1Zi5CbG9ja31cbiAgICAgKi9cbiAgICByZWNvcmRCYXRjaGVzKGluZGV4OiBudW1iZXIsIG9iaj86IG9yZy5hcGFjaGUuYXJyb3cuZmxhdGJ1Zi5CbG9jayk6IG9yZy5hcGFjaGUuYXJyb3cuZmxhdGJ1Zi5CbG9jayB8IG51bGwge1xuICAgICAgbGV0IG9mZnNldCA9IHRoaXMuYmIuX19vZmZzZXQodGhpcy5iYl9wb3MsIDEwKTtcbiAgICAgIHJldHVybiBvZmZzZXQgPyAob2JqIHx8IG5ldyBvcmcuYXBhY2hlLmFycm93LmZsYXRidWYuQmxvY2spLl9faW5pdCh0aGlzLmJiLl9fdmVjdG9yKHRoaXMuYmJfcG9zICsgb2Zmc2V0KSArIGluZGV4ICogMjQsIHRoaXMuYmIpIDogbnVsbDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfVxuICAgICAqL1xuICAgIHJlY29yZEJhdGNoZXNMZW5ndGgoKTogbnVtYmVyIHtcbiAgICAgIGxldCBvZmZzZXQgPSB0aGlzLmJiLl9fb2Zmc2V0KHRoaXMuYmJfcG9zLCAxMCk7XG4gICAgICByZXR1cm4gb2Zmc2V0ID8gdGhpcy5iYi5fX3ZlY3Rvcl9sZW4odGhpcy5iYl9wb3MgKyBvZmZzZXQpIDogMDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0ge2ZsYXRidWZmZXJzLkJ1aWxkZXJ9IGJ1aWxkZXJcbiAgICAgKi9cbiAgICBzdGF0aWMgc3RhcnRGb290ZXIoYnVpbGRlcjogZmxhdGJ1ZmZlcnMuQnVpbGRlcikge1xuICAgICAgYnVpbGRlci5zdGFydE9iamVjdCg0KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0ge2ZsYXRidWZmZXJzLkJ1aWxkZXJ9IGJ1aWxkZXJcbiAgICAgKiBAcGFyYW0ge29yZy5hcGFjaGUuYXJyb3cuZmxhdGJ1Zi5NZXRhZGF0YVZlcnNpb259IHZlcnNpb25cbiAgICAgKi9cbiAgICBzdGF0aWMgYWRkVmVyc2lvbihidWlsZGVyOiBmbGF0YnVmZmVycy5CdWlsZGVyLCB2ZXJzaW9uOiBOUzE2MTg3NTQ5ODcxOTg2NjgzMTk5Lm9yZy5hcGFjaGUuYXJyb3cuZmxhdGJ1Zi5NZXRhZGF0YVZlcnNpb24pIHtcbiAgICAgIGJ1aWxkZXIuYWRkRmllbGRJbnQxNigwLCB2ZXJzaW9uLCBOUzE2MTg3NTQ5ODcxOTg2NjgzMTk5Lm9yZy5hcGFjaGUuYXJyb3cuZmxhdGJ1Zi5NZXRhZGF0YVZlcnNpb24uVjEpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSB7ZmxhdGJ1ZmZlcnMuQnVpbGRlcn0gYnVpbGRlclxuICAgICAqIEBwYXJhbSB7ZmxhdGJ1ZmZlcnMuT2Zmc2V0fSBzY2hlbWFPZmZzZXRcbiAgICAgKi9cbiAgICBzdGF0aWMgYWRkU2NoZW1hKGJ1aWxkZXI6IGZsYXRidWZmZXJzLkJ1aWxkZXIsIHNjaGVtYU9mZnNldDogZmxhdGJ1ZmZlcnMuT2Zmc2V0KSB7XG4gICAgICBidWlsZGVyLmFkZEZpZWxkT2Zmc2V0KDEsIHNjaGVtYU9mZnNldCwgMCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIHtmbGF0YnVmZmVycy5CdWlsZGVyfSBidWlsZGVyXG4gICAgICogQHBhcmFtIHtmbGF0YnVmZmVycy5PZmZzZXR9IGRpY3Rpb25hcmllc09mZnNldFxuICAgICAqL1xuICAgIHN0YXRpYyBhZGREaWN0aW9uYXJpZXMoYnVpbGRlcjogZmxhdGJ1ZmZlcnMuQnVpbGRlciwgZGljdGlvbmFyaWVzT2Zmc2V0OiBmbGF0YnVmZmVycy5PZmZzZXQpIHtcbiAgICAgIGJ1aWxkZXIuYWRkRmllbGRPZmZzZXQoMiwgZGljdGlvbmFyaWVzT2Zmc2V0LCAwKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0ge2ZsYXRidWZmZXJzLkJ1aWxkZXJ9IGJ1aWxkZXJcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gbnVtRWxlbXNcbiAgICAgKi9cbiAgICBzdGF0aWMgc3RhcnREaWN0aW9uYXJpZXNWZWN0b3IoYnVpbGRlcjogZmxhdGJ1ZmZlcnMuQnVpbGRlciwgbnVtRWxlbXM6IG51bWJlcikge1xuICAgICAgYnVpbGRlci5zdGFydFZlY3RvcigyNCwgbnVtRWxlbXMsIDgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSB7ZmxhdGJ1ZmZlcnMuQnVpbGRlcn0gYnVpbGRlclxuICAgICAqIEBwYXJhbSB7ZmxhdGJ1ZmZlcnMuT2Zmc2V0fSByZWNvcmRCYXRjaGVzT2Zmc2V0XG4gICAgICovXG4gICAgc3RhdGljIGFkZFJlY29yZEJhdGNoZXMoYnVpbGRlcjogZmxhdGJ1ZmZlcnMuQnVpbGRlciwgcmVjb3JkQmF0Y2hlc09mZnNldDogZmxhdGJ1ZmZlcnMuT2Zmc2V0KSB7XG4gICAgICBidWlsZGVyLmFkZEZpZWxkT2Zmc2V0KDMsIHJlY29yZEJhdGNoZXNPZmZzZXQsIDApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSB7ZmxhdGJ1ZmZlcnMuQnVpbGRlcn0gYnVpbGRlclxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBudW1FbGVtc1xuICAgICAqL1xuICAgIHN0YXRpYyBzdGFydFJlY29yZEJhdGNoZXNWZWN0b3IoYnVpbGRlcjogZmxhdGJ1ZmZlcnMuQnVpbGRlciwgbnVtRWxlbXM6IG51bWJlcikge1xuICAgICAgYnVpbGRlci5zdGFydFZlY3RvcigyNCwgbnVtRWxlbXMsIDgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSB7ZmxhdGJ1ZmZlcnMuQnVpbGRlcn0gYnVpbGRlclxuICAgICAqIEByZXR1cm5zIHtmbGF0YnVmZmVycy5PZmZzZXR9XG4gICAgICovXG4gICAgc3RhdGljIGVuZEZvb3RlcihidWlsZGVyOiBmbGF0YnVmZmVycy5CdWlsZGVyKTogZmxhdGJ1ZmZlcnMuT2Zmc2V0IHtcbiAgICAgIGxldCBvZmZzZXQgPSBidWlsZGVyLmVuZE9iamVjdCgpO1xuICAgICAgcmV0dXJuIG9mZnNldDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0ge2ZsYXRidWZmZXJzLkJ1aWxkZXJ9IGJ1aWxkZXJcbiAgICAgKiBAcGFyYW0ge2ZsYXRidWZmZXJzLk9mZnNldH0gb2Zmc2V0XG4gICAgICovXG4gICAgc3RhdGljIGZpbmlzaEZvb3RlckJ1ZmZlcihidWlsZGVyOiBmbGF0YnVmZmVycy5CdWlsZGVyLCBvZmZzZXQ6IGZsYXRidWZmZXJzLk9mZnNldCkge1xuICAgICAgYnVpbGRlci5maW5pc2gob2Zmc2V0KTtcbiAgICB9XG5cbiAgfVxufVxuLyoqXG4gKiBAY29uc3RydWN0b3JcbiAqL1xuZXhwb3J0IG5hbWVzcGFjZSBvcmcuYXBhY2hlLmFycm93LmZsYXRidWYge1xuICBleHBvcnQgY2xhc3MgQmxvY2sge1xuICAgIC8qKlxuICAgICAqIEB0eXBlIHtmbGF0YnVmZmVycy5CeXRlQnVmZmVyfVxuICAgICAqL1xuICAgIGJiOiBmbGF0YnVmZmVycy5CeXRlQnVmZmVyO1xuXG4gICAgLyoqXG4gICAgICogQHR5cGUge251bWJlcn1cbiAgICAgKi9cbiAgICBiYl9wb3M6IG51bWJlciA9IDA7XG4gICAgLyoqXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGlcbiAgICAgKiBAcGFyYW0ge2ZsYXRidWZmZXJzLkJ5dGVCdWZmZXJ9IGJiXG4gICAgICogQHJldHVybnMge0Jsb2NrfVxuICAgICAqL1xuICAgIF9faW5pdChpOiBudW1iZXIsIGJiOiBmbGF0YnVmZmVycy5CeXRlQnVmZmVyKTogQmxvY2sge1xuICAgICAgdGhpcy5iYl9wb3MgPSBpO1xuICAgICAgdGhpcy5iYiA9IGJiO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSW5kZXggdG8gdGhlIHN0YXJ0IG9mIHRoZSBSZWNvcmRCbG9jayAobm90ZSB0aGlzIGlzIHBhc3QgdGhlIE1lc3NhZ2UgaGVhZGVyKVxuICAgICAqXG4gICAgICogQHJldHVybnMge2ZsYXRidWZmZXJzLkxvbmd9XG4gICAgICovXG4gICAgb2Zmc2V0KCk6IGZsYXRidWZmZXJzLkxvbmcge1xuICAgICAgcmV0dXJuIHRoaXMuYmIucmVhZEludDY0KHRoaXMuYmJfcG9zKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBMZW5ndGggb2YgdGhlIG1ldGFkYXRhXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfVxuICAgICAqL1xuICAgIG1ldGFEYXRhTGVuZ3RoKCk6IG51bWJlciB7XG4gICAgICByZXR1cm4gdGhpcy5iYi5yZWFkSW50MzIodGhpcy5iYl9wb3MgKyA4KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBMZW5ndGggb2YgdGhlIGRhdGEgKHRoaXMgaXMgYWxpZ25lZCBzbyB0aGVyZSBjYW4gYmUgYSBnYXAgYmV0d2VlbiB0aGlzIGFuZFxuICAgICAqIHRoZSBtZXRhdGRhdGEpLlxuICAgICAqXG4gICAgICogQHJldHVybnMge2ZsYXRidWZmZXJzLkxvbmd9XG4gICAgICovXG4gICAgYm9keUxlbmd0aCgpOiBmbGF0YnVmZmVycy5Mb25nIHtcbiAgICAgIHJldHVybiB0aGlzLmJiLnJlYWRJbnQ2NCh0aGlzLmJiX3BvcyArIDE2KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0ge2ZsYXRidWZmZXJzLkJ1aWxkZXJ9IGJ1aWxkZXJcbiAgICAgKiBAcGFyYW0ge2ZsYXRidWZmZXJzLkxvbmd9IG9mZnNldFxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBtZXRhRGF0YUxlbmd0aFxuICAgICAqIEBwYXJhbSB7ZmxhdGJ1ZmZlcnMuTG9uZ30gYm9keUxlbmd0aFxuICAgICAqIEByZXR1cm5zIHtmbGF0YnVmZmVycy5PZmZzZXR9XG4gICAgICovXG4gICAgc3RhdGljIGNyZWF0ZUJsb2NrKGJ1aWxkZXI6IGZsYXRidWZmZXJzLkJ1aWxkZXIsIG9mZnNldDogZmxhdGJ1ZmZlcnMuTG9uZywgbWV0YURhdGFMZW5ndGg6IG51bWJlciwgYm9keUxlbmd0aDogZmxhdGJ1ZmZlcnMuTG9uZyk6IGZsYXRidWZmZXJzLk9mZnNldCB7XG4gICAgICBidWlsZGVyLnByZXAoOCwgMjQpO1xuICAgICAgYnVpbGRlci53cml0ZUludDY0KGJvZHlMZW5ndGgpO1xuICAgICAgYnVpbGRlci5wYWQoNCk7XG4gICAgICBidWlsZGVyLndyaXRlSW50MzIobWV0YURhdGFMZW5ndGgpO1xuICAgICAgYnVpbGRlci53cml0ZUludDY0KG9mZnNldCk7XG4gICAgICByZXR1cm4gYnVpbGRlci5vZmZzZXQoKTtcbiAgICB9XG5cbiAgfVxufVxuIl19 |
/// <reference types="flatbuffers" /> | ||
import { flatbuffers } from 'flatbuffers'; | ||
import * as NS16187549871986683199 from './Schema'; | ||
import * as NS17322068828641907961 from './Tensor'; | ||
export declare namespace org.apache.arrow.flatbuf { | ||
export import Tensor = NS17322068828641907961.org.apache.arrow.flatbuf.Tensor; | ||
} | ||
export declare namespace org.apache.arrow.flatbuf { | ||
export import Schema = NS16187549871986683199.org.apache.arrow.flatbuf.Schema; | ||
@@ -187,9 +183,9 @@ } | ||
/** | ||
* ---------------------------------------------------------------------- | ||
* For sending dictionary encoding information. Any Field can be | ||
* dictionary-encoded, but in this case none of its children may be | ||
* dictionary-encoded. | ||
* There is one vector / column per dictionary | ||
* There is one vector / column per dictionary, but that vector / column | ||
* may be spread across multiple dictionary batches by using the isDelta | ||
* flag | ||
* | ||
* | ||
* @constructor | ||
@@ -229,2 +225,9 @@ */ | ||
/** | ||
* If isDelta is true the values in the dictionary are to be appended to a | ||
* dictionary with the indicated id | ||
* | ||
* @returns {boolean} | ||
*/ | ||
isDelta(): boolean; | ||
/** | ||
* @param {flatbuffers.Builder} builder | ||
@@ -245,2 +248,7 @@ */ | ||
* @param {flatbuffers.Builder} builder | ||
* @param {boolean} isDelta | ||
*/ | ||
static addIsDelta(builder: flatbuffers.Builder, isDelta: boolean): void; | ||
/** | ||
* @param {flatbuffers.Builder} builder | ||
* @returns {flatbuffers.Offset} | ||
@@ -247,0 +255,0 @@ */ |
@@ -0,5 +1,5 @@ | ||
"use strict"; | ||
// automatically generated by the FlatBuffers compiler, do not modify | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
const NS16187549871986683199 = require("./Schema"); | ||
const NS17322068828641907961 = require("./Tensor"); | ||
var org; | ||
@@ -13,14 +13,2 @@ (function (org) { | ||
(function (flatbuf) { | ||
flatbuf.Tensor = NS17322068828641907961.org.apache.arrow.flatbuf.Tensor; | ||
})(flatbuf = arrow.flatbuf || (arrow.flatbuf = {})); | ||
})(arrow = apache.arrow || (apache.arrow = {})); | ||
})(apache = org.apache || (org.apache = {})); | ||
})(org = exports.org || (exports.org = {})); | ||
(function (org) { | ||
var apache; | ||
(function (apache) { | ||
var arrow; | ||
(function (arrow) { | ||
var flatbuf; | ||
(function (flatbuf) { | ||
flatbuf.Schema = NS16187549871986683199.org.apache.arrow.flatbuf.Schema; | ||
@@ -217,3 +205,3 @@ })(flatbuf = arrow.flatbuf || (arrow.flatbuf = {})); | ||
let offset = this.bb.__offset(this.bb_pos, 8); | ||
return offset ? (obj || new NS16187549871986683199.org.apache.arrow.flatbuf.Buffer).__init(this.bb.__vector(this.bb_pos + offset) + index * 24, this.bb) : null; | ||
return offset ? (obj || new NS16187549871986683199.org.apache.arrow.flatbuf.Buffer).__init(this.bb.__vector(this.bb_pos + offset) + index * 16, this.bb) : null; | ||
} | ||
@@ -266,3 +254,3 @@ /** | ||
static startBuffersVector(builder, numElems) { | ||
builder.startVector(24, numElems, 8); | ||
builder.startVector(16, numElems, 8); | ||
} | ||
@@ -284,9 +272,9 @@ /** | ||
/** | ||
* ---------------------------------------------------------------------- | ||
* For sending dictionary encoding information. Any Field can be | ||
* dictionary-encoded, but in this case none of its children may be | ||
* dictionary-encoded. | ||
* There is one vector / column per dictionary | ||
* There is one vector / column per dictionary, but that vector / column | ||
* may be spread across multiple dictionary batches by using the isDelta | ||
* flag | ||
* | ||
* | ||
* @constructor | ||
@@ -342,6 +330,16 @@ */ | ||
/** | ||
* If isDelta is true the values in the dictionary are to be appended to a | ||
* dictionary with the indicated id | ||
* | ||
* @returns {boolean} | ||
*/ | ||
isDelta() { | ||
let offset = this.bb.__offset(this.bb_pos, 8); | ||
return offset ? !!this.bb.readInt8(this.bb_pos + offset) : false; | ||
} | ||
/** | ||
* @param {flatbuffers.Builder} builder | ||
*/ | ||
static startDictionaryBatch(builder) { | ||
builder.startObject(2); | ||
builder.startObject(3); | ||
} | ||
@@ -364,2 +362,9 @@ /** | ||
* @param {flatbuffers.Builder} builder | ||
* @param {boolean} isDelta | ||
*/ | ||
static addIsDelta(builder, isDelta) { | ||
builder.addFieldInt8(2, +isDelta, +false); | ||
} | ||
/** | ||
* @param {flatbuffers.Builder} builder | ||
* @returns {flatbuffers.Offset} | ||
@@ -417,3 +422,3 @@ */ | ||
let offset = this.bb.__offset(this.bb_pos, 4); | ||
return offset ? (this.bb.readInt16(this.bb_pos + offset)) : NS16187549871986683199.org.apache.arrow.flatbuf.MetadataVersion.V1; | ||
return offset ? /** @type {org.apache.arrow.flatbuf.MetadataVersion} */ (this.bb.readInt16(this.bb_pos + offset)) : NS16187549871986683199.org.apache.arrow.flatbuf.MetadataVersion.V1; | ||
} | ||
@@ -425,3 +430,3 @@ /** | ||
let offset = this.bb.__offset(this.bb_pos, 6); | ||
return offset ? (this.bb.readUint8(this.bb_pos + offset)) : org.apache.arrow.flatbuf.MessageHeader.NONE; | ||
return offset ? /** @type {org.apache.arrow.flatbuf.MessageHeader} */ (this.bb.readUint8(this.bb_pos + offset)) : org.apache.arrow.flatbuf.MessageHeader.NONE; | ||
} | ||
@@ -499,2 +504,2 @@ /** | ||
//# sourceMappingURL=data:application/json;charset=utf8;base64,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Q0FBQztvQkFFRDs7O3VCQUdHO29CQUNILE1BQU0sQ0FBQyxTQUFTLENBQUMsT0FBNEIsRUFBRSxZQUFnQzt3QkFDN0UsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUFDLEVBQUUsWUFBWSxFQUFFLENBQUMsQ0FBQyxDQUFDO29CQUM3QyxDQUFDO29CQUVEOzs7dUJBR0c7b0JBQ0gsTUFBTSxDQUFDLGFBQWEsQ0FBQyxPQUE0QixFQUFFLFVBQTRCO3dCQUM3RSxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUMsRUFBRSxVQUFVLEVBQUUsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztvQkFDakUsQ0FBQztvQkFFRDs7O3VCQUdHO29CQUNILE1BQU0sQ0FBQyxVQUFVLENBQUMsT0FBNEI7d0JBQzVDLElBQUksTUFBTSxHQUFHLE9BQU8sQ0FBQyxTQUFTLEVBQUUsQ0FBQzt3QkFDakMsTUFBTSxDQUFDLE1BQU0sQ0FBQztvQkFDaEIsQ0FBQztvQkFFRDs7O3VCQUdHO29CQUNILE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxPQUE0QixFQUFFLE1BQTBCO3dCQUNqRixPQUFPLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO29CQUN6QixDQUFDO2lCQUVGO2dCQXZIWSxlQUFPLFVBdUhuQixDQUFBO1lBQ0gsQ0FBQyxFQXpIaUMsT0FBTyxHQUFQLGFBQU8sS0FBUCxhQUFPLFFBeUh4QztRQUFELENBQUMsRUF6SDJCLEtBQUssR0FBTCxZQUFLLEtBQUwsWUFBSyxRQXlIaEM7SUFBRCxDQUFDLEVBekhvQixNQUFNLEdBQU4sVUFBTSxLQUFOLFVBQU0sUUF5SDFCO0FBQUQsQ0FBQyxFQXpIZ0IsR0FBRyxHQUFILFdBQUcsS0FBSCxXQUFHLFFBeUhuQiIsImZpbGUiOiJmb3JtYXQvTWVzc2FnZS5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8vIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGJ5IHRoZSBGbGF0QnVmZmVycyBjb21waWxlciwgZG8gbm90IG1vZGlmeVxuXG5pbXBvcnQgeyBmbGF0YnVmZmVycyB9IGZyb20gJ2ZsYXRidWZmZXJzJztcbmltcG9ydCAqIGFzIE5TMTYxODc1NDk4NzE5ODY2ODMxOTkgZnJvbSAnLi9TY2hlbWEnO1xuaW1wb3J0ICogYXMgTlMxNzMyMjA2ODgyODY0MTkwNzk2MSBmcm9tICcuL1RlbnNvcic7XG5leHBvcnQgbmFtZXNwYWNlIG9yZy5hcGFjaGUuYXJyb3cuZmxhdGJ1ZiB7XG4gIGV4cG9ydCBpbXBvcnQgVGVuc29yID0gTlMxNzMyMjA2ODgyODY0MTkwNzk2MS5vcmcuYXBhY2hlLmFycm93LmZsYXRidWYuVGVuc29yO1xufVxuZXhwb3J0IG5hbWVzcGFjZSBvcmcuYXBhY2hlLmFycm93LmZsYXRidWYge1xuICBleHBvcnQgaW1wb3J0IFNjaGVtYSA9IE5TMTYxODc1NDk4NzE5ODY2ODMxOTkub3JnLmFwYWNoZS5hcnJvdy5mbGF0YnVmLlNjaGVtYTtcbn1cbi8qKlxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogVGhlIHJvb3QgTWVzc2FnZSB0eXBlXG4gKiBUaGlzIHVuaW9uIGVuYWJsZXMgdXMgdG8gZWFzaWx5IHNlbmQgZGlmZmVyZW50IG1lc3NhZ2UgdHlwZXMgd2l0aG91dFxuICogcmVkdW5kYW50IHN0b3JhZ2UsIGFuZCBpbiB0aGUgZnV0dXJlIHdlIGNhbiBlYXNpbHkgYWRkIG5ldyBtZXNzYWdlIHR5cGVzLlxuICpcbiAqIEFycm93IGltcGxlbWVudGF0aW9ucyBkbyBub3QgbmVlZCB0byBpbXBsZW1lbnQgYWxsIG9mIHRoZSBtZXNzYWdlIHR5cGVzLFxuICogd2hpY2ggbWF5IGluY2x1ZGUgZXhwZXJpbWVudGFsIG1ldGFkYXRhIHR5cGVzLiBGb3IgbWF4aW11bSBjb21wYXRpYmlsaXR5LFxuICogaXQgaXMgYmVzdCB0byBzZW5kIGRhdGEgdXNpbmcgUmVjb3JkQmF0Y2hcbiAqXG4gKiBAZW51bVxuICovXG5leHBvcnQgbmFtZXNwYWNlIG9yZy5hcGFjaGUuYXJyb3cuZmxhdGJ1ZiB7XG4gIGV4cG9ydCBlbnVtIE1lc3NhZ2VIZWFkZXIge1xuICAgIE5PTkUgPSAwLFxuICAgIFNjaGVtYSA9IDEsXG4gICAgRGljdGlvbmFyeUJhdGNoID0gMixcbiAgICBSZWNvcmRCYXRjaCA9IDMsXG4gICAgVGVuc29yID0gNFxuICB9XG59XG5cbi8qKlxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogRGF0YSBzdHJ1Y3R1cmVzIGZvciBkZXNjcmliaW5nIGEgdGFibGUgcm93IGJhdGNoIChhIGNvbGxlY3Rpb24gb2ZcbiAqIGVxdWFsLWxlbmd0aCBBcnJvdyBhcnJheXMpXG4gKiBNZXRhZGF0YSBhYm91dCBhIGZpZWxkIGF0IHNvbWUgbGV2ZWwgb2YgYSBuZXN0ZWQgdHlwZSB0cmVlIChidXQgbm90XG4gKiBpdHMgY2hpbGRyZW4pLlxuICpcbiAqIEZvciBleGFtcGxlLCBhIExpc3Q8SW50MTY+IHdpdGggdmFsdWVzIFtbMSwgMiwgM10sIG51bGwsIFs0XSwgWzUsIDZdLCBudWxsXVxuICogd291bGQgaGF2ZSB7bGVuZ3RoOiA1LCBudWxsX2NvdW50OiAyfSBmb3IgaXRzIExpc3Qgbm9kZSwgYW5kIHtsZW5ndGg6IDYsXG4gKiBudWxsX2NvdW50OiAwfSBmb3IgaXRzIEludDE2IG5vZGUsIGFzIHNlcGFyYXRlIEZpZWxkTm9kZSBzdHJ1Y3RzXG4gKlxuICogQGNvbnN0cnVjdG9yXG4gKi9cbmV4cG9ydCBuYW1lc3BhY2Ugb3JnLmFwYWNoZS5hcnJvdy5mbGF0YnVmIHtcbiAgZXhwb3J0IGNsYXNzIEZpZWxkTm9kZSB7XG4gICAgLyoqXG4gICAgICogQHR5cGUge2ZsYXRidWZmZXJzLkJ5dGVCdWZmZXJ9XG4gICAgICovXG4gICAgYmI6IGZsYXRidWZmZXJzLkJ5dGVCdWZmZXI7XG5cbiAgICAvKipcbiAgICAgKiBAdHlwZSB7bnVtYmVyfVxuICAgICAqL1xuICAgIGJiX3BvczogbnVtYmVyID0gMDtcbiAgICAvKipcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gaVxuICAgICAqIEBwYXJhbSB7ZmxhdGJ1ZmZlcnMuQnl0ZUJ1ZmZlcn0gYmJcbiAgICAgKiBAcmV0dXJucyB7RmllbGROb2RlfVxuICAgICAqL1xuICAgIF9faW5pdChpOiBudW1iZXIsIGJiOiBmbGF0YnVmZmVycy5CeXRlQnVmZmVyKTogRmllbGROb2RlIHtcbiAgICAgIHRoaXMuYmJfcG9zID0gaTtcbiAgICAgIHRoaXMuYmIgPSBiYjtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBudW1iZXIgb2YgdmFsdWUgc2xvdHMgaW4gdGhlIEFycm93IGFycmF5IGF0IHRoaXMgbGV2ZWwgb2YgYSBuZXN0ZWRcbiAgICAgKiB0cmVlXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyB7ZmxhdGJ1ZmZlcnMuTG9uZ31cbiAgICAgKi9cbiAgICBsZW5ndGgoKTogZmxhdGJ1ZmZlcnMuTG9uZyB7XG4gICAgICByZXR1cm4gdGhpcy5iYi5yZWFkSW50NjQodGhpcy5iYl9wb3MpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBudW1iZXIgb2Ygb2JzZXJ2ZWQgbnVsbHMuIEZpZWxkcyB3aXRoIG51bGxfY291bnQgPT0gMCBtYXkgY2hvb3NlIG5vdFxuICAgICAqIHRvIHdyaXRlIHRoZWlyIHBoeXNpY2FsIHZhbGlkaXR5IGJpdG1hcCBvdXQgYXMgYSBtYXRlcmlhbGl6ZWQgYnVmZmVyLFxuICAgICAqIGluc3RlYWQgc2V0dGluZyB0aGUgbGVuZ3RoIG9mIHRoZSBiaXRtYXAgYnVmZmVyIHRvIDAuXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyB7ZmxhdGJ1ZmZlcnMuTG9uZ31cbiAgICAgKi9cbiAgICBudWxsQ291bnQoKTogZmxhdGJ1ZmZlcnMuTG9uZyB7XG4gICAgICByZXR1cm4gdGhpcy5iYi5yZWFkSW50NjQodGhpcy5iYl9wb3MgKyA4KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0ge2ZsYXRidWZmZXJzLkJ1aWxkZXJ9IGJ1aWxkZXJcbiAgICAgKiBAcGFyYW0ge2ZsYXRidWZmZXJzLkxvbmd9IGxlbmd0aFxuICAgICAqIEBwYXJhbSB7ZmxhdGJ1ZmZlcnMuTG9uZ30gbnVsbF9jb3VudFxuICAgICAqIEByZXR1cm5zIHtmbGF0YnVmZmVycy5PZmZzZXR9XG4gICAgICovXG4gICAgc3RhdGljIGNyZWF0ZUZpZWxkTm9kZShidWlsZGVyOiBmbGF0YnVmZmVycy5CdWlsZGVyLCBsZW5ndGg6IGZsYXRidWZmZXJzLkxvbmcsIG51bGxfY291bnQ6IGZsYXRidWZmZXJzLkxvbmcpOiBmbGF0YnVmZmVycy5PZmZzZXQge1xuICAgICAgYnVpbGRlci5wcmVwKDgsIDE2KTtcbiAgICAgIGJ1aWxkZXIud3JpdGVJbnQ2NChudWxsX2NvdW50KTtcbiAgICAgIGJ1aWxkZXIud3JpdGVJbnQ2NChsZW5ndGgpO1xuICAgICAgcmV0dXJuIGJ1aWxkZXIub2Zmc2V0KCk7XG4gICAgfVxuXG4gIH1cbn1cbi8qKlxuICogQSBkYXRhIGhlYWRlciBkZXNjcmliaW5nIHRoZSBzaGFyZWQgbWVtb3J5IGxheW91dCBvZiBhIFwicmVjb3JkXCIgb3IgXCJyb3dcIlxuICogYmF0Y2guIFNvbWUgc3lzdGVtcyBjYWxsIHRoaXMgYSBcInJvdyBiYXRjaFwiIGludGVybmFsbHkgYW5kIG90aGVycyBhIFwicmVjb3JkXG4gKiBiYXRjaFwiLlxuICpcbiAqIEBjb25zdHJ1Y3RvclxuICovXG5leHBvcnQgbmFtZXNwYWNlIG9yZy5hcGFjaGUuYXJyb3cuZmxhdGJ1ZiB7XG4gIGV4cG9ydCBjbGFzcyBSZWNvcmRCYXRjaCB7XG4gICAgLyoqXG4gICAgICogQHR5cGUge2ZsYXRidWZmZXJzLkJ5dGVCdWZmZXJ9XG4gICAgICovXG4gICAgYmI6IGZsYXRidWZmZXJzLkJ5dGVCdWZmZXI7XG5cbiAgICAvKipcbiAgICAgKiBAdHlwZSB7bnVtYmVyfVxuICAgICAqL1xuICAgIGJiX3BvczogbnVtYmVyID0gMDtcbiAgICAvKipcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gaVxuICAgICAqIEBwYXJhbSB7ZmxhdGJ1ZmZlcnMuQnl0ZUJ1ZmZlcn0gYmJcbiAgICAgKiBAcmV0dXJucyB7UmVjb3JkQmF0Y2h9XG4gICAgICovXG4gICAgX19pbml0KGk6IG51bWJlciwgYmI6IGZsYXRidWZmZXJzLkJ5dGVCdWZmZXIpOiBSZWNvcmRCYXRjaCB7XG4gICAgICB0aGlzLmJiX3BvcyA9IGk7XG4gICAgICB0aGlzLmJiID0gYmI7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0ge2ZsYXRidWZmZXJzLkJ5dGVCdWZmZXJ9IGJiXG4gICAgICogQHBhcmFtIHtSZWNvcmRCYXRjaD19IG9ialxuICAgICAqIEByZXR1cm5zIHtSZWNvcmRCYXRjaH1cbiAgICAgKi9cbiAgICBzdGF0aWMgZ2V0Um9vdEFzUmVjb3JkQmF0Y2goYmI6IGZsYXRidWZmZXJzLkJ5dGVCdWZmZXIsIG9iaj86IFJlY29yZEJhdGNoKTogUmVjb3JkQmF0Y2gge1xuICAgICAgcmV0dXJuIChvYmogfHwgbmV3IFJlY29yZEJhdGNoKS5fX2luaXQoYmIucmVhZEludDMyKGJiLnBvc2l0aW9uKCkpICsgYmIucG9zaXRpb24oKSwgYmIpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIG51bWJlciBvZiByZWNvcmRzIC8gcm93cy4gVGhlIGFycmF5cyBpbiB0aGUgYmF0Y2ggc2hvdWxkIGFsbCBoYXZlIHRoaXNcbiAgICAgKiBsZW5ndGhcbiAgICAgKlxuICAgICAqIEByZXR1cm5zIHtmbGF0YnVmZmVycy5Mb25nfVxuICAgICAqL1xuICAgIGxlbmd0aCgpOiBmbGF0YnVmZmVycy5Mb25nIHtcbiAgICAgIGxldCBvZmZzZXQgPSB0aGlzLmJiLl9fb2Zmc2V0KHRoaXMuYmJfcG9zLCA0KTtcbiAgICAgIHJldHVybiBvZmZzZXQgPyB0aGlzLmJiLnJlYWRJbnQ2NCh0aGlzLmJiX3BvcyArIG9mZnNldCkgOiB0aGlzLmJiLmNyZWF0ZUxvbmcoMCwgMCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTm9kZXMgY29ycmVzcG9uZCB0byB0aGUgcHJlLW9yZGVyZWQgZmxhdHRlbmVkIGxvZ2ljYWwgc2NoZW1hXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gaW5kZXhcbiAgICAgKiBAcGFyYW0ge29yZy5hcGFjaGUuYXJyb3cuZmxhdGJ1Zi5GaWVsZE5vZGU9fSBvYmpcbiAgICAgKiBAcmV0dXJucyB7b3JnLmFwYWNoZS5hcnJvdy5mbGF0YnVmLkZpZWxkTm9kZX1cbiAgICAgKi9cbiAgICBub2RlcyhpbmRleDogbnVtYmVyLCBvYmo/OiBvcmcuYXBhY2hlLmFycm93LmZsYXRidWYuRmllbGROb2RlKTogb3JnLmFwYWNoZS5hcnJvdy5mbGF0YnVmLkZpZWxkTm9kZSB8IG51bGwge1xuICAgICAgbGV0IG9mZnNldCA9IHRoaXMuYmIuX19vZmZzZXQodGhpcy5iYl9wb3MsIDYpO1xuICAgICAgcmV0dXJuIG9mZnNldCA/IChvYmogfHwgbmV3IG9yZy5hcGFjaGUuYXJyb3cuZmxhdGJ1Zi5GaWVsZE5vZGUpLl9faW5pdCh0aGlzLmJiLl9fdmVjdG9yKHRoaXMuYmJfcG9zICsgb2Zmc2V0KSArIGluZGV4ICogMTYsIHRoaXMuYmIpIDogbnVsbDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfVxuICAgICAqL1xuICAgIG5vZGVzTGVuZ3RoKCk6IG51bWJlciB7XG4gICAgICBsZXQgb2Zmc2V0ID0gdGhpcy5iYi5fX29mZnNldCh0aGlzLmJiX3BvcywgNik7XG4gICAgICByZXR1cm4gb2Zmc2V0ID8gdGhpcy5iYi5fX3ZlY3Rvcl9sZW4odGhpcy5iYl9wb3MgKyBvZmZzZXQpIDogMDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBCdWZmZXJzIGNvcnJlc3BvbmQgdG8gdGhlIHByZS1vcmRlcmVkIGZsYXR0ZW5lZCBidWZmZXIgdHJlZVxuICAgICAqXG4gICAgICogVGhlIG51bWJlciBvZiBidWZmZXJzIGFwcGVuZGVkIHRvIHRoaXMgbGlzdCBkZXBlbmRzIG9uIHRoZSBzY2hlbWEuIEZvclxuICAgICAqIGV4YW1wbGUsIG1vc3QgcHJpbWl0aXZlIGFycmF5cyB3aWxsIGhhdmUgMiBidWZmZXJzLCAxIGZvciB0aGUgdmFsaWRpdHlcbiAgICAgKiBiaXRtYXAgYW5kIDEgZm9yIHRoZSB2YWx1ZXMuIEZvciBzdHJ1Y3QgYXJyYXlzLCB0aGVyZSB3aWxsIG9ubHkgYmUgYVxuICAgICAqIHNpbmdsZSBidWZmZXIgZm9yIHRoZSB2YWxpZGl0eSAobnVsbHMpIGJpdG1hcFxuICAgICAqXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGluZGV4XG4gICAgICogQHBhcmFtIHtvcmcuYXBhY2hlLmFycm93LmZsYXRidWYuQnVmZmVyPX0gb2JqXG4gICAgICogQHJldHVybnMge29yZy5hcGFjaGUuYXJyb3cuZmxhdGJ1Zi5CdWZmZXJ9XG4gICAgICovXG4gICAgYnVmZmVycyhpbmRleDogbnVtYmVyLCBvYmo/OiBOUzE2MTg3NTQ5ODcxOTg2NjgzMTk5Lm9yZy5hcGFjaGUuYXJyb3cuZmxhdGJ1Zi5CdWZmZXIpOiBOUzE2MTg3NTQ5ODcxOTg2NjgzMTk5Lm9yZy5hcGFjaGUuYXJyb3cuZmxhdGJ1Zi5CdWZmZXIgfCBudWxsIHtcbiAgICAgIGxldCBvZmZzZXQgPSB0aGlzLmJiLl9fb2Zmc2V0KHRoaXMuYmJfcG9zLCA4KTtcbiAgICAgIHJldHVybiBvZmZzZXQgPyAob2JqIHx8IG5ldyBOUzE2MTg3NTQ5ODcxOTg2NjgzMTk5Lm9yZy5hcGFjaGUuYXJyb3cuZmxhdGJ1Zi5CdWZmZXIpLl9faW5pdCh0aGlzLmJiLl9fdmVjdG9yKHRoaXMuYmJfcG9zICsgb2Zmc2V0KSArIGluZGV4ICogMjQsIHRoaXMuYmIpIDogbnVsbDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfVxuICAgICAqL1xuICAgIGJ1ZmZlcnNMZW5ndGgoKTogbnVtYmVyIHtcbiAgICAgIGxldCBvZmZzZXQgPSB0aGlzLmJiLl9fb2Zmc2V0KHRoaXMuYmJfcG9zLCA4KTtcbiAgICAgIHJldHVybiBvZmZzZXQgPyB0aGlzLmJiLl9fdmVjdG9yX2xlbih0aGlzLmJiX3BvcyArIG9mZnNldCkgOiAwO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSB7ZmxhdGJ1ZmZlcnMuQnVpbGRlcn0gYnVpbGRlclxuICAgICAqL1xuICAgIHN0YXRpYyBzdGFydFJlY29yZEJhdGNoKGJ1aWxkZXI6IGZsYXRidWZmZXJzLkJ1aWxkZXIpIHtcbiAgICAgIGJ1aWxkZXIuc3RhcnRPYmplY3QoMyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIHtmbGF0YnVmZmVycy5CdWlsZGVyfSBidWlsZGVyXG4gICAgICogQHBhcmFtIHtmbGF0YnVmZmVycy5Mb25nfSBsZW5ndGhcbiAgICAgKi9cbiAgICBzdGF0aWMgYWRkTGVuZ3RoKGJ1aWxkZXI6IGZsYXRidWZmZXJzLkJ1aWxkZXIsIGxlbmd0aDogZmxhdGJ1ZmZlcnMuTG9uZykge1xuICAgICAgYnVpbGRlci5hZGRGaWVsZEludDY0KDAsIGxlbmd0aCwgYnVpbGRlci5jcmVhdGVMb25nKDAsIDApKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0ge2ZsYXRidWZmZXJzLkJ1aWxkZXJ9IGJ1aWxkZXJcbiAgICAgKiBAcGFyYW0ge2ZsYXRidWZmZXJzLk9mZnNldH0gbm9kZXNPZmZzZXRcbiAgICAgKi9cbiAgICBzdGF0aWMgYWRkTm9kZXMoYnVpbGRlcjogZmxhdGJ1ZmZlcnMuQnVpbGRlciwgbm9kZXNPZmZzZXQ6IGZsYXRidWZmZXJzLk9mZnNldCkge1xuICAgICAgYnVpbGRlci5hZGRGaWVsZE9mZnNldCgxLCBub2Rlc09mZnNldCwgMCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIHtmbGF0YnVmZmVycy5CdWlsZGVyfSBidWlsZGVyXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IG51bUVsZW1zXG4gICAgICovXG4gICAgc3RhdGljIHN0YXJ0Tm9kZXNWZWN0b3IoYnVpbGRlcjogZmxhdGJ1ZmZlcnMuQnVpbGRlciwgbnVtRWxlbXM6IG51bWJlcikge1xuICAgICAgYnVpbGRlci5zdGFydFZlY3RvcigxNiwgbnVtRWxlbXMsIDgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSB7ZmxhdGJ1ZmZlcnMuQnVpbGRlcn0gYnVpbGRlclxuICAgICAqIEBwYXJhbSB7ZmxhdGJ1ZmZlcnMuT2Zmc2V0fSBidWZmZXJzT2Zmc2V0XG4gICAgICovXG4gICAgc3RhdGljIGFkZEJ1ZmZlcnMoYnVpbGRlcjogZmxhdGJ1ZmZlcnMuQnVpbGRlciwgYnVmZmVyc09mZnNldDogZmxhdGJ1ZmZlcnMuT2Zmc2V0KSB7XG4gICAgICBidWlsZGVyLmFkZEZpZWxkT2Zmc2V0KDIsIGJ1ZmZlcnNPZmZzZXQsIDApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSB7ZmxhdGJ1ZmZlcnMuQnVpbGRlcn0gYnVpbGRlclxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBudW1FbGVtc1xuICAgICAqL1xuICAgIHN0YXRpYyBzdGFydEJ1ZmZlcnNWZWN0b3IoYnVpbGRlcjogZmxhdGJ1ZmZlcnMuQnVpbGRlciwgbnVtRWxlbXM6IG51bWJlcikge1xuICAgICAgYnVpbGRlci5zdGFydFZlY3RvcigyNCwgbnVtRWxlbXMsIDgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSB7ZmxhdGJ1ZmZlcnMuQnVpbGRlcn0gYnVpbGRlclxuICAgICAqIEByZXR1cm5zIHtmbGF0YnVmZmVycy5PZmZzZXR9XG4gICAgICovXG4gICAgc3RhdGljIGVuZFJlY29yZEJhdGNoKGJ1aWxkZXI6IGZsYXRidWZmZXJzLkJ1aWxkZXIpOiBmbGF0YnVmZmVycy5PZmZzZXQge1xuICAgICAgbGV0IG9mZnNldCA9IGJ1aWxkZXIuZW5kT2JqZWN0KCk7XG4gICAgICByZXR1cm4gb2Zmc2V0O1xuICAgIH1cblxuICB9XG59XG4vKipcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIEZvciBzZW5kaW5nIGRpY3Rpb25hcnkgZW5jb2RpbmcgaW5mb3JtYXRpb24uIEFueSBGaWVsZCBjYW4gYmVcbiAqIGRpY3Rpb25hcnktZW5jb2RlZCwgYnV0IGluIHRoaXMgY2FzZSBub25lIG9mIGl0cyBjaGlsZHJlbiBtYXkgYmVcbiAqIGRpY3Rpb25hcnktZW5jb2RlZC5cbiAqIFRoZXJlIGlzIG9uZSB2ZWN0b3IgLyBjb2x1bW4gcGVyIGRpY3Rpb25hcnlcbiAqXG4gKlxuICogQGNvbnN0cnVjdG9yXG4gKi9cbmV4cG9ydCBuYW1lc3BhY2Ugb3JnLmFwYWNoZS5hcnJvdy5mbGF0YnVmIHtcbiAgZXhwb3J0IGNsYXNzIERpY3Rpb25hcnlCYXRjaCB7XG4gICAgLyoqXG4gICAgICogQHR5cGUge2ZsYXRidWZmZXJzLkJ5dGVCdWZmZXJ9XG4gICAgICovXG4gICAgYmI6IGZsYXRidWZmZXJzLkJ5dGVCdWZmZXI7XG5cbiAgICAvKipcbiAgICAgKiBAdHlwZSB7bnVtYmVyfVxuICAgICAqL1xuICAgIGJiX3BvczogbnVtYmVyID0gMDtcbiAgICAvKipcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gaVxuICAgICAqIEBwYXJhbSB7ZmxhdGJ1ZmZlcnMuQnl0ZUJ1ZmZlcn0gYmJcbiAgICAgKiBAcmV0dXJucyB7RGljdGlvbmFyeUJhdGNofVxuICAgICAqL1xuICAgIF9faW5pdChpOiBudW1iZXIsIGJiOiBmbGF0YnVmZmVycy5CeXRlQnVmZmVyKTogRGljdGlvbmFyeUJhdGNoIHtcbiAgICAgIHRoaXMuYmJfcG9zID0gaTtcbiAgICAgIHRoaXMuYmIgPSBiYjtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSB7ZmxhdGJ1ZmZlcnMuQnl0ZUJ1ZmZlcn0gYmJcbiAgICAgKiBAcGFyYW0ge0RpY3Rpb25hcnlCYXRjaD19IG9ialxuICAgICAqIEByZXR1cm5zIHtEaWN0aW9uYXJ5QmF0Y2h9XG4gICAgICovXG4gICAgc3RhdGljIGdldFJvb3RBc0RpY3Rpb25hcnlCYXRjaChiYjogZmxhdGJ1ZmZlcnMuQnl0ZUJ1ZmZlciwgb2JqPzogRGljdGlvbmFyeUJhdGNoKTogRGljdGlvbmFyeUJhdGNoIHtcbiAgICAgIHJldHVybiAob2JqIHx8IG5ldyBEaWN0aW9uYXJ5QmF0Y2gpLl9faW5pdChiYi5yZWFkSW50MzIoYmIucG9zaXRpb24oKSkgKyBiYi5wb3NpdGlvbigpLCBiYik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHJldHVybnMge2ZsYXRidWZmZXJzLkxvbmd9XG4gICAgICovXG4gICAgaWQoKTogZmxhdGJ1ZmZlcnMuTG9uZyB7XG4gICAgICBsZXQgb2Zmc2V0ID0gdGhpcy5iYi5fX29mZnNldCh0aGlzLmJiX3BvcywgNCk7XG4gICAgICByZXR1cm4gb2Zmc2V0ID8gdGhpcy5iYi5yZWFkSW50NjQodGhpcy5iYl9wb3MgKyBvZmZzZXQpIDogdGhpcy5iYi5jcmVhdGVMb25nKDAsIDApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSB7b3JnLmFwYWNoZS5hcnJvdy5mbGF0YnVmLlJlY29yZEJhdGNoPX0gb2JqXG4gICAgICogQHJldHVybnMge29yZy5hcGFjaGUuYXJyb3cuZmxhdGJ1Zi5SZWNvcmRCYXRjaHxudWxsfVxuICAgICAqL1xuICAgIGRhdGEob2JqPzogb3JnLmFwYWNoZS5hcnJvdy5mbGF0YnVmLlJlY29yZEJhdGNoKTogb3JnLmFwYWNoZS5hcnJvdy5mbGF0YnVmLlJlY29yZEJhdGNoIHwgbnVsbCB7XG4gICAgICBsZXQgb2Zmc2V0ID0gdGhpcy5iYi5fX29mZnNldCh0aGlzLmJiX3BvcywgNik7XG4gICAgICByZXR1cm4gb2Zmc2V0ID8gKG9iaiB8fCBuZXcgb3JnLmFwYWNoZS5hcnJvdy5mbGF0YnVmLlJlY29yZEJhdGNoKS5fX2luaXQodGhpcy5iYi5fX2luZGlyZWN0KHRoaXMuYmJfcG9zICsgb2Zmc2V0KSwgdGhpcy5iYikgOiBudWxsO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSB7ZmxhdGJ1ZmZlcnMuQnVpbGRlcn0gYnVpbGRlclxuICAgICAqL1xuICAgIHN0YXRpYyBzdGFydERpY3Rpb25hcnlCYXRjaChidWlsZGVyOiBmbGF0YnVmZmVycy5CdWlsZGVyKSB7XG4gICAgICBidWlsZGVyLnN0YXJ0T2JqZWN0KDIpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSB7ZmxhdGJ1ZmZlcnMuQnVpbGRlcn0gYnVpbGRlclxuICAgICAqIEBwYXJhbSB7ZmxhdGJ1ZmZlcnMuTG9uZ30gaWRcbiAgICAgKi9cbiAgICBzdGF0aWMgYWRkSWQoYnVpbGRlcjogZmxhdGJ1ZmZlcnMuQnVpbGRlciwgaWQ6IGZsYXRidWZmZXJzLkxvbmcpIHtcbiAgICAgIGJ1aWxkZXIuYWRkRmllbGRJbnQ2NCgwLCBpZCwgYnVpbGRlci5jcmVhdGVMb25nKDAsIDApKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0ge2ZsYXRidWZmZXJzLkJ1aWxkZXJ9IGJ1aWxkZXJcbiAgICAgKiBAcGFyYW0ge2ZsYXRidWZmZXJzLk9mZnNldH0gZGF0YU9mZnNldFxuICAgICAqL1xuICAgIHN0YXRpYyBhZGREYXRhKGJ1aWxkZXI6IGZsYXRidWZmZXJzLkJ1aWxkZXIsIGRhdGFPZmZzZXQ6IGZsYXRidWZmZXJzLk9mZnNldCkge1xuICAgICAgYnVpbGRlci5hZGRGaWVsZE9mZnNldCgxLCBkYXRhT2Zmc2V0LCAwKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0ge2ZsYXRidWZmZXJzLkJ1aWxkZXJ9IGJ1aWxkZXJcbiAgICAgKiBAcmV0dXJucyB7ZmxhdGJ1ZmZlcnMuT2Zmc2V0fVxuICAgICAqL1xuICAgIHN0YXRpYyBlbmREaWN0aW9uYXJ5QmF0Y2goYnVpbGRlcjogZmxhdGJ1ZmZlcnMuQnVpbGRlcik6IGZsYXRidWZmZXJzLk9mZnNldCB7XG4gICAgICBsZXQgb2Zmc2V0ID0gYnVpbGRlci5lbmRPYmplY3QoKTtcbiAgICAgIHJldHVybiBvZmZzZXQ7XG4gICAgfVxuXG4gIH1cbn1cbi8qKlxuICogQGNvbnN0cnVjdG9yXG4gKi9cbmV4cG9ydCBuYW1lc3BhY2Ugb3JnLmFwYWNoZS5hcnJvdy5mbGF0YnVmIHtcbiAgZXhwb3J0IGNsYXNzIE1lc3NhZ2Uge1xuICAgIC8qKlxuICAgICAqIEB0eXBlIHtmbGF0YnVmZmVycy5CeXRlQnVmZmVyfVxuICAgICAqL1xuICAgIGJiOiBmbGF0YnVmZmVycy5CeXRlQnVmZmVyO1xuXG4gICAgLyoqXG4gICAgICogQHR5cGUge251bWJlcn1cbiAgICAgKi9cbiAgICBiYl9wb3M6IG51bWJlciA9IDA7XG4gICAgLyoqXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGlcbiAgICAgKiBAcGFyYW0ge2ZsYXRidWZmZXJzLkJ5dGVCdWZmZXJ9IGJiXG4gICAgICogQHJldHVybnMge01lc3NhZ2V9XG4gICAgICovXG4gICAgX19pbml0KGk6IG51bWJlciwgYmI6IGZsYXRidWZmZXJzLkJ5dGVCdWZmZXIpOiBNZXNzYWdlIHtcbiAgICAgIHRoaXMuYmJfcG9zID0gaTtcbiAgICAgIHRoaXMuYmIgPSBiYjtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSB7ZmxhdGJ1ZmZlcnMuQnl0ZUJ1ZmZlcn0gYmJcbiAgICAgKiBAcGFyYW0ge01lc3NhZ2U9fSBvYmpcbiAgICAgKiBAcmV0dXJucyB7TWVzc2FnZX1cbiAgICAgKi9cbiAgICBzdGF0aWMgZ2V0Um9vdEFzTWVzc2FnZShiYjogZmxhdGJ1ZmZlcnMuQnl0ZUJ1ZmZlciwgb2JqPzogTWVzc2FnZSk6IE1lc3NhZ2Uge1xuICAgICAgcmV0dXJuIChvYmogfHwgbmV3IE1lc3NhZ2UpLl9faW5pdChiYi5yZWFkSW50MzIoYmIucG9zaXRpb24oKSkgKyBiYi5wb3NpdGlvbigpLCBiYik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHJldHVybnMge29yZy5hcGFjaGUuYXJyb3cuZmxhdGJ1Zi5NZXRhZGF0YVZlcnNpb259XG4gICAgICovXG4gICAgdmVyc2lvbigpOiBOUzE2MTg3NTQ5ODcxOTg2NjgzMTk5Lm9yZy5hcGFjaGUuYXJyb3cuZmxhdGJ1Zi5NZXRhZGF0YVZlcnNpb24ge1xuICAgICAgbGV0IG9mZnNldCA9IHRoaXMuYmIuX19vZmZzZXQodGhpcy5iYl9wb3MsIDQpO1xuICAgICAgcmV0dXJuIG9mZnNldCA/IC8qKiBAdHlwZSB7b3JnLmFwYWNoZS5hcnJvdy5mbGF0YnVmLk1ldGFkYXRhVmVyc2lvbn0gKi8gKHRoaXMuYmIucmVhZEludDE2KHRoaXMuYmJfcG9zICsgb2Zmc2V0KSkgOiBOUzE2MTg3NTQ5ODcxOTg2NjgzMTk5Lm9yZy5hcGFjaGUuYXJyb3cuZmxhdGJ1Zi5NZXRhZGF0YVZlcnNpb24uVjE7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHJldHVybnMge29yZy5hcGFjaGUuYXJyb3cuZmxhdGJ1Zi5NZXNzYWdlSGVhZGVyfVxuICAgICAqL1xuICAgIGhlYWRlclR5cGUoKTogb3JnLmFwYWNoZS5hcnJvdy5mbGF0YnVmLk1lc3NhZ2VIZWFkZXIge1xuICAgICAgbGV0IG9mZnNldCA9IHRoaXMuYmIuX19vZmZzZXQodGhpcy5iYl9wb3MsIDYpO1xuICAgICAgcmV0dXJuIG9mZnNldCA/IC8qKiBAdHlwZSB7b3JnLmFwYWNoZS5hcnJvdy5mbGF0YnVmLk1lc3NhZ2VIZWFkZXJ9ICovICh0aGlzLmJiLnJlYWRVaW50OCh0aGlzLmJiX3BvcyArIG9mZnNldCkpIDogb3JnLmFwYWNoZS5hcnJvdy5mbGF0YnVmLk1lc3NhZ2VIZWFkZXIuTk9ORTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0ge2ZsYXRidWZmZXJzLlRhYmxlfSBvYmpcbiAgICAgKiBAcmV0dXJucyB7P2ZsYXRidWZmZXJzLlRhYmxlfVxuICAgICAqL1xuICAgIGhlYWRlcjxUIGV4dGVuZHMgZmxhdGJ1ZmZlcnMuVGFibGU+KG9iajogVCk6IFQgfCBudWxsIHtcbiAgICAgIGxldCBvZmZzZXQgPSB0aGlzLmJiLl9fb2Zmc2V0KHRoaXMuYmJfcG9zLCA4KTtcbiAgICAgIHJldHVybiBvZmZzZXQgPyB0aGlzLmJiLl9fdW5pb24ob2JqLCB0aGlzLmJiX3BvcyArIG9mZnNldCkgOiBudWxsO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEByZXR1cm5zIHtmbGF0YnVmZmVycy5Mb25nfVxuICAgICAqL1xuICAgIGJvZHlMZW5ndGgoKTogZmxhdGJ1ZmZlcnMuTG9uZyB7XG4gICAgICBsZXQgb2Zmc2V0ID0gdGhpcy5iYi5fX29mZnNldCh0aGlzLmJiX3BvcywgMTApO1xuICAgICAgcmV0dXJuIG9mZnNldCA/IHRoaXMuYmIucmVhZEludDY0KHRoaXMuYmJfcG9zICsgb2Zmc2V0KSA6IHRoaXMuYmIuY3JlYXRlTG9uZygwLCAwKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0ge2ZsYXRidWZmZXJzLkJ1aWxkZXJ9IGJ1aWxkZXJcbiAgICAgKi9cbiAgICBzdGF0aWMgc3RhcnRNZXNzYWdlKGJ1aWxkZXI6IGZsYXRidWZmZXJzLkJ1aWxkZXIpIHtcbiAgICAgIGJ1aWxkZXIuc3RhcnRPYmplY3QoNCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIHtmbGF0YnVmZmVycy5CdWlsZGVyfSBidWlsZGVyXG4gICAgICogQHBhcmFtIHtvcmcuYXBhY2hlLmFycm93LmZsYXRidWYuTWV0YWRhdGFWZXJzaW9ufSB2ZXJzaW9uXG4gICAgICovXG4gICAgc3RhdGljIGFkZFZlcnNpb24oYnVpbGRlcjogZmxhdGJ1ZmZlcnMuQnVpbGRlciwgdmVyc2lvbjogTlMxNjE4NzU0OTg3MTk4NjY4MzE5OS5vcmcuYXBhY2hlLmFycm93LmZsYXRidWYuTWV0YWRhdGFWZXJzaW9uKSB7XG4gICAgICBidWlsZGVyLmFkZEZpZWxkSW50MTYoMCwgdmVyc2lvbiwgTlMxNjE4NzU0OTg3MTk4NjY4MzE5OS5vcmcuYXBhY2hlLmFycm93LmZsYXRidWYuTWV0YWRhdGFWZXJzaW9uLlYxKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0ge2ZsYXRidWZmZXJzLkJ1aWxkZXJ9IGJ1aWxkZXJcbiAgICAgKiBAcGFyYW0ge29yZy5hcGFjaGUuYXJyb3cuZmxhdGJ1Zi5NZXNzYWdlSGVhZGVyfSBoZWFkZXJUeXBlXG4gICAgICovXG4gICAgc3RhdGljIGFkZEhlYWRlclR5cGUoYnVpbGRlcjogZmxhdGJ1ZmZlcnMuQnVpbGRlciwgaGVhZGVyVHlwZTogb3JnLmFwYWNoZS5hcnJvdy5mbGF0YnVmLk1lc3NhZ2VIZWFkZXIpIHtcbiAgICAgIGJ1aWxkZXIuYWRkRmllbGRJbnQ4KDEsIGhlYWRlclR5cGUsIG9yZy5hcGFjaGUuYXJyb3cuZmxhdGJ1Zi5NZXNzYWdlSGVhZGVyLk5PTkUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSB7ZmxhdGJ1ZmZlcnMuQnVpbGRlcn0gYnVpbGRlclxuICAgICAqIEBwYXJhbSB7ZmxhdGJ1ZmZlcnMuT2Zmc2V0fSBoZWFkZXJPZmZzZXRcbiAgICAgKi9cbiAgICBzdGF0aWMgYWRkSGVhZGVyKGJ1aWxkZXI6IGZsYXRidWZmZXJzLkJ1aWxkZXIsIGhlYWRlck9mZnNldDogZmxhdGJ1ZmZlcnMuT2Zmc2V0KSB7XG4gICAgICBidWlsZGVyLmFkZEZpZWxkT2Zmc2V0KDIsIGhlYWRlck9mZnNldCwgMCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIHtmbGF0YnVmZmVycy5CdWlsZGVyfSBidWlsZGVyXG4gICAgICogQHBhcmFtIHtmbGF0YnVmZmVycy5Mb25nfSBib2R5TGVuZ3RoXG4gICAgICovXG4gICAgc3RhdGljIGFkZEJvZHlMZW5ndGgoYnVpbGRlcjogZmxhdGJ1ZmZlcnMuQnVpbGRlciwgYm9keUxlbmd0aDogZmxhdGJ1ZmZlcnMuTG9uZykge1xuICAgICAgYnVpbGRlci5hZGRGaWVsZEludDY0KDMsIGJvZHlMZW5ndGgsIGJ1aWxkZXIuY3JlYXRlTG9uZygwLCAwKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIHtmbGF0YnVmZmVycy5CdWlsZGVyfSBidWlsZGVyXG4gICAgICogQHJldHVybnMge2ZsYXRidWZmZXJzLk9mZnNldH1cbiAgICAgKi9cbiAgICBzdGF0aWMgZW5kTWVzc2FnZShidWlsZGVyOiBmbGF0YnVmZmVycy5CdWlsZGVyKTogZmxhdGJ1ZmZlcnMuT2Zmc2V0IHtcbiAgICAgIGxldCBvZmZzZXQgPSBidWlsZGVyLmVuZE9iamVjdCgpO1xuICAgICAgcmV0dXJuIG9mZnNldDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0ge2ZsYXRidWZmZXJzLkJ1aWxkZXJ9IGJ1aWxkZXJcbiAgICAgKiBAcGFyYW0ge2ZsYXRidWZmZXJzLk9mZnNldH0gb2Zmc2V0XG4gICAgICovXG4gICAgc3RhdGljIGZpbmlzaE1lc3NhZ2VCdWZmZXIoYnVpbGRlcjogZmxhdGJ1ZmZlcnMuQnVpbGRlciwgb2Zmc2V0OiBmbGF0YnVmZmVycy5PZmZzZXQpIHtcbiAgICAgIGJ1aWxkZXIuZmluaXNoKG9mZnNldCk7XG4gICAgfVxuXG4gIH1cbn1cbiJdfQ== | ||
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImZvcm1hdC9NZXNzYWdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxxRUFBcUU7O0FBR3JFLG1EQUFtRDtBQUNuRCxJQUFpQixHQUFHLENBRW5CO0FBRkQsV0FBaUIsR0FBRztJQUFDLElBQUEsTUFBTSxDQUUxQjtJQUZvQixXQUFBLE1BQU07UUFBQyxJQUFBLEtBQUssQ0FFaEM7UUFGMkIsV0FBQSxLQUFLO1lBQUMsSUFBQSxPQUFPLENBRXhDO1lBRmlDLFdBQUEsT0FBTztnQkFDekIsY0FBTSxHQUFHLHNCQUFzQixDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUM7WUFDaEYsQ0FBQyxFQUZpQyxPQUFPLEdBQVAsYUFBTyxLQUFQLGFBQU8sUUFFeEM7UUFBRCxDQUFDLEVBRjJCLEtBQUssR0FBTCxZQUFLLEtBQUwsWUFBSyxRQUVoQztJQUFELENBQUMsRUFGb0IsTUFBTSxHQUFOLFVBQU0sS0FBTixVQUFNLFFBRTFCO0FBQUQsQ0FBQyxFQUZnQixHQUFHLEdBQUgsV0FBRyxLQUFILFdBQUcsUUFFbkI7QUFDRDs7Ozs7Ozs7Ozs7R0FXRztBQUNILFdBQWlCLEdBQUc7SUFBQyxJQUFBLE1BQU0sQ0FRMUI7SUFSb0IsV0FBQSxNQUFNO1FBQUMsSUFBQSxLQUFLLENBUWhDO1FBUjJCLFdBQUEsS0FBSztZQUFDLElBQUEsT0FBTyxDQVF4QztZQVJpQyxXQUFBLE9BQU87Z0JBQ3ZDLElBQVksYUFNWDtnQkFORCxXQUFZLGFBQWE7b0JBQ3ZCLGlEQUFRLENBQUE7b0JBQ1IscURBQVUsQ0FBQTtvQkFDVix1RUFBbUIsQ0FBQTtvQkFDbkIsK0RBQWUsQ0FBQTtvQkFDZixxREFBVSxDQUFBO2dCQUNaLENBQUMsRUFOVyxhQUFhLEdBQWIscUJBQWEsS0FBYixxQkFBYSxRQU14QjtZQUNILENBQUMsRUFSaUMsT0FBTyxHQUFQLGFBQU8sS0FBUCxhQUFPLFFBUXhDO1FBQUQsQ0FBQyxFQVIyQixLQUFLLEdBQUwsWUFBSyxLQUFMLFlBQUssUUFRaEM7SUFBRCxDQUFDLEVBUm9CLE1BQU0sR0FBTixVQUFNLEtBQU4sVUFBTSxRQVExQjtBQUFELENBQUMsRUFSZ0IsR0FBRyxHQUFILFdBQUcsS0FBSCxXQUFHLFFBUW5CO0FBRUQ7Ozs7Ozs7Ozs7OztHQVlHO0FBQ0gsV0FBaUIsR0FBRztJQUFDLElBQUEsTUFBTSxDQXlEMUI7SUF6RG9CLFdBQUEsTUFBTTtRQUFDLElBQUEsS0FBSyxDQXlEaEM7UUF6RDJCLFdBQUEsS0FBSztZQUFDLElBQUEsT0FBTyxDQXlEeEM7WUF6RGlDLFdBQUEsT0FBTztnQkFDdkM7b0JBQUE7d0JBTUU7OzJCQUVHO3dCQUNILFdBQU0sR0FBVyxDQUFDLENBQUM7b0JBOENyQixDQUFDO29CQTdDQzs7Ozt1QkFJRztvQkFDSCxNQUFNLENBQUMsQ0FBUyxFQUFFLEVBQTBCO3dCQUMxQyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQzt3QkFDaEIsSUFBSSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUM7d0JBQ2IsTUFBTSxDQUFDLElBQUksQ0FBQztvQkFDZCxDQUFDO29CQUVEOzs7Ozt1QkFLRztvQkFDSCxNQUFNO3dCQUNKLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7b0JBQ3hDLENBQUM7b0JBRUQ7Ozs7Ozt1QkFNRztvQkFDSCxTQUFTO3dCQUNQLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO29CQUM1QyxDQUFDO29CQUVEOzs7Ozt1QkFLRztvQkFDSCxNQUFNLENBQUMsZUFBZSxDQUFDLE9BQTRCLEVBQUUsTUFBd0IsRUFBRSxVQUE0Qjt3QkFDekcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7d0JBQ3BCLE9BQU8sQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLENBQUM7d0JBQy9CLE9BQU8sQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUM7d0JBQzNCLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUM7b0JBQzFCLENBQUM7aUJBRUY7Z0JBdkRZLGlCQUFTLFlBdURyQixDQUFBO1lBQ0gsQ0FBQyxFQXpEaUMsT0FBTyxHQUFQLGFBQU8sS0FBUCxhQUFPLFFBeUR4QztRQUFELENBQUMsRUF6RDJCLEtBQUssR0FBTCxZQUFLLEtBQUwsWUFBSyxRQXlEaEM7SUFBRCxDQUFDLEVBekRvQixNQUFNLEdBQU4sVUFBTSxLQUFOLFVBQU0sUUF5RDFCO0FBQUQsQ0FBQyxFQXpEZ0IsR0FBRyxHQUFILFdBQUcsS0FBSCxXQUFHLFFBeURuQjtBQUNEOzs7Ozs7R0FNRztBQUNILFdBQWlCLEdBQUc7SUFBQyxJQUFBLE1BQU0sQ0FnSjFCO0lBaEpvQixXQUFBLE1BQU07UUFBQyxJQUFBLEtBQUssQ0FnSmhDO1FBaEoyQixXQUFBLEtBQUs7WUFBQyxJQUFBLE9BQU8sQ0FnSnhDO1lBaEppQyxXQUFBLE9BQU87Z0JBQ3ZDO29CQUFBO3dCQU1FOzsyQkFFRzt3QkFDSCxXQUFNLEdBQVcsQ0FBQyxDQUFDO29CQXFJckIsQ0FBQztvQkFwSUM7Ozs7dUJBSUc7b0JBQ0gsTUFBTSxDQUFDLENBQVMsRUFBRSxFQUEwQjt3QkFDMUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7d0JBQ2hCLElBQUksQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDO3dCQUNiLE1BQU0sQ0FBQyxJQUFJLENBQUM7b0JBQ2QsQ0FBQztvQkFFRDs7Ozt1QkFJRztvQkFDSCxNQUFNLENBQUMsb0JBQW9CLENBQUMsRUFBMEIsRUFBRSxHQUFpQjt3QkFDdkUsTUFBTSxDQUFDLENBQUMsR0FBRyxJQUFJLElBQUksV0FBVyxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLFFBQVEsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO29CQUMxRixDQUFDO29CQUVEOzs7Ozt1QkFLRztvQkFDSCxNQUFNO3dCQUNKLElBQUksTUFBTSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUM7d0JBQzlDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztvQkFDckYsQ0FBQztvQkFFRDs7Ozs7O3VCQU1HO29CQUNILEtBQUssQ0FBQyxLQUFhLEVBQUUsR0FBd0M7d0JBQzNELElBQUksTUFBTSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUM7d0JBQzlDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLElBQUksR0FBRyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxHQUFHLEtBQUssR0FBRyxFQUFFLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7b0JBQzlJLENBQUM7b0JBRUQ7O3VCQUVHO29CQUNILFdBQVc7d0JBQ1QsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQzt3QkFDOUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUNqRSxDQUFDO29CQUVEOzs7Ozs7Ozs7Ozt1QkFXRztvQkFDSCxPQUFPLENBQUMsS0FBYSxFQUFFLEdBQTREO3dCQUNqRixJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDO3dCQUM5QyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxJQUFJLHNCQUFzQixDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsR0FBRyxLQUFLLEdBQUcsRUFBRSxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO29CQUNsSyxDQUFDO29CQUVEOzt1QkFFRztvQkFDSCxhQUFhO3dCQUNYLElBQUksTUFBTSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUM7d0JBQzlDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztvQkFDakUsQ0FBQztvQkFFRDs7dUJBRUc7b0JBQ0gsTUFBTSxDQUFDLGdCQUFnQixDQUFDLE9BQTRCO3dCQUNsRCxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUN6QixDQUFDO29CQUVEOzs7dUJBR0c7b0JBQ0gsTUFBTSxDQUFDLFNBQVMsQ0FBQyxPQUE0QixFQUFFLE1BQXdCO3dCQUNyRSxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUMsRUFBRSxNQUFNLEVBQUUsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztvQkFDN0QsQ0FBQztvQkFFRDs7O3VCQUdHO29CQUNILE1BQU0sQ0FBQyxRQUFRLENBQUMsT0FBNEIsRUFBRSxXQUErQjt3QkFDM0UsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUFDLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDO29CQUM1QyxDQUFDO29CQUVEOzs7dUJBR0c7b0JBQ0gsTUFBTSxDQUFDLGdCQUFnQixDQUFDLE9BQTRCLEVBQUUsUUFBZ0I7d0JBQ3BFLE9BQU8sQ0FBQyxXQUFXLENBQUMsRUFBRSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQztvQkFDdkMsQ0FBQztvQkFFRDs7O3VCQUdHO29CQUNILE1BQU0sQ0FBQyxVQUFVLENBQUMsT0FBNEIsRUFBRSxhQUFpQzt3QkFDL0UsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUFDLEVBQUUsYUFBYSxFQUFFLENBQUMsQ0FBQyxDQUFDO29CQUM5QyxDQUFDO29CQUVEOzs7dUJBR0c7b0JBQ0gsTUFBTSxDQUFDLGtCQUFrQixDQUFDLE9BQTRCLEVBQUUsUUFBZ0I7d0JBQ3RFLE9BQU8sQ0FBQyxXQUFXLENBQUMsRUFBRSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQztvQkFDdkMsQ0FBQztvQkFFRDs7O3VCQUdHO29CQUNILE1BQU0sQ0FBQyxjQUFjLENBQUMsT0FBNEI7d0JBQ2hELElBQUksTUFBTSxHQUFHLE9BQU8sQ0FBQyxTQUFTLEVBQUUsQ0FBQzt3QkFDakMsTUFBTSxDQUFDLE1BQU0sQ0FBQztvQkFDaEIsQ0FBQztpQkFFRjtnQkE5SVksbUJBQVcsY0E4SXZCLENBQUE7WUFDSCxDQUFDLEVBaEppQyxPQUFPLEdBQVAsYUFBTyxLQUFQLGFBQU8sUUFnSnhDO1FBQUQsQ0FBQyxFQWhKMkIsS0FBSyxHQUFMLFlBQUssS0FBTCxZQUFLLFFBZ0poQztJQUFELENBQUMsRUFoSm9CLE1BQU0sR0FBTixVQUFNLEtBQU4sVUFBTSxRQWdKMUI7QUFBRCxDQUFDLEVBaEpnQixHQUFHLEdBQUgsV0FBRyxLQUFILFdBQUcsUUFnSm5CO0FBQ0Q7Ozs7Ozs7OztHQVNHO0FBQ0gsV0FBaUIsR0FBRztJQUFDLElBQUEsTUFBTSxDQW9HMUI7SUFwR29CLFdBQUEsTUFBTTtRQUFDLElBQUEsS0FBSyxDQW9HaEM7UUFwRzJCLFdBQUEsS0FBSztZQUFDLElBQUEsT0FBTyxDQW9HeEM7WUFwR2lDLFdBQUEsT0FBTztnQkFDdkM7b0JBQUE7d0JBTUU7OzJCQUVHO3dCQUNILFdBQU0sR0FBVyxDQUFDLENBQUM7b0JBeUZyQixDQUFDO29CQXhGQzs7Ozt1QkFJRztvQkFDSCxNQUFNLENBQUMsQ0FBUyxFQUFFLEVBQTBCO3dCQUMxQyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQzt3QkFDaEIsSUFBSSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUM7d0JBQ2IsTUFBTSxDQUFDLElBQUksQ0FBQztvQkFDZCxDQUFDO29CQUVEOzs7O3VCQUlHO29CQUNILE1BQU0sQ0FBQyx3QkFBd0IsQ0FBQyxFQUEwQixFQUFFLEdBQXFCO3dCQUMvRSxNQUFNLENBQUMsQ0FBQyxHQUFHLElBQUksSUFBSSxlQUFlLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsUUFBUSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7b0JBQzlGLENBQUM7b0JBRUQ7O3VCQUVHO29CQUNILEVBQUU7d0JBQ0EsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQzt3QkFDOUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO29CQUNyRixDQUFDO29CQUVEOzs7dUJBR0c7b0JBQ0gsSUFBSSxDQUFDLEdBQTBDO3dCQUM3QyxJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDO3dCQUM5QyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxJQUFJLEdBQUcsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztvQkFDckksQ0FBQztvQkFFRDs7Ozs7dUJBS0c7b0JBQ0gsT0FBTzt3QkFDTCxJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDO3dCQUM5QyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO29CQUNuRSxDQUFDO29CQUVEOzt1QkFFRztvQkFDSCxNQUFNLENBQUMsb0JBQW9CLENBQUMsT0FBNEI7d0JBQ3RELE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQ3pCLENBQUM7b0JBRUQ7Ozt1QkFHRztvQkFDSCxNQUFNLENBQUMsS0FBSyxDQUFDLE9BQTRCLEVBQUUsRUFBb0I7d0JBQzdELE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUN6RCxDQUFDO29CQUVEOzs7dUJBR0c7b0JBQ0gsTUFBTSxDQUFDLE9BQU8sQ0FBQyxPQUE0QixFQUFFLFVBQThCO3dCQUN6RSxPQUFPLENBQUMsY0FBYyxDQUFDLENBQUMsRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDLENBQUM7b0JBQzNDLENBQUM7b0JBRUQ7Ozt1QkFHRztvQkFDSCxNQUFNLENBQUMsVUFBVSxDQUFDLE9BQTRCLEVBQUUsT0FBZ0I7d0JBQzlELE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7b0JBQzVDLENBQUM7b0JBRUQ7Ozt1QkFHRztvQkFDSCxNQUFNLENBQUMsa0JBQWtCLENBQUMsT0FBNEI7d0JBQ3BELElBQUksTUFBTSxHQUFHLE9BQU8sQ0FBQyxTQUFTLEVBQUUsQ0FBQzt3QkFDakMsTUFBTSxDQUFDLE1BQU0sQ0FBQztvQkFDaEIsQ0FBQztpQkFFRjtnQkFsR1ksdUJBQWUsa0JBa0czQixDQUFBO1lBQ0gsQ0FBQyxFQXBHaUMsT0FBTyxHQUFQLGFBQU8sS0FBUCxhQUFPLFFBb0d4QztRQUFELENBQUMsRUFwRzJCLEtBQUssR0FBTCxZQUFLLEtBQUwsWUFBSyxRQW9HaEM7SUFBRCxDQUFDLEVBcEdvQixNQUFNLEdBQU4sVUFBTSxLQUFOLFVBQU0sUUFvRzFCO0FBQUQsQ0FBQyxFQXBHZ0IsR0FBRyxHQUFILFdBQUcsS0FBSCxXQUFHLFFBb0duQjtBQUNEOztHQUVHO0FBQ0gsV0FBaUIsR0FBRztJQUFDLElBQUEsTUFBTSxDQXlIMUI7SUF6SG9CLFdBQUEsTUFBTTtRQUFDLElBQUEsS0FBSyxDQXlIaEM7UUF6SDJCLFdBQUEsS0FBSztZQUFDLElBQUEsT0FBTyxDQXlIeEM7WUF6SGlDLFdBQUEsT0FBTztnQkFDdkM7b0JBQUE7d0JBTUU7OzJCQUVHO3dCQUNILFdBQU0sR0FBVyxDQUFDLENBQUM7b0JBOEdyQixDQUFDO29CQTdHQzs7Ozt1QkFJRztvQkFDSCxNQUFNLENBQUMsQ0FBUyxFQUFFLEVBQTBCO3dCQUMxQyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQzt3QkFDaEIsSUFBSSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUM7d0JBQ2IsTUFBTSxDQUFDLElBQUksQ0FBQztvQkFDZCxDQUFDO29CQUVEOzs7O3VCQUlHO29CQUNILE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxFQUEwQixFQUFFLEdBQWE7d0JBQy9ELE1BQU0sQ0FBQyxDQUFDLEdBQUcsSUFBSSxJQUFJLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxRQUFRLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztvQkFDdEYsQ0FBQztvQkFFRDs7dUJBRUc7b0JBQ0gsT0FBTzt3QkFDTCxJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDO3dCQUM5QyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyx1REFBdUQsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsc0JBQXNCLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxFQUFFLENBQUM7b0JBQ3pMLENBQUM7b0JBRUQ7O3VCQUVHO29CQUNILFVBQVU7d0JBQ1IsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQzt3QkFDOUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMscURBQXFELENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDO29CQUNoSyxDQUFDO29CQUVEOzs7dUJBR0c7b0JBQ0gsTUFBTSxDQUE4QixHQUFNO3dCQUN4QyxJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDO3dCQUM5QyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO29CQUNwRSxDQUFDO29CQUVEOzt1QkFFRztvQkFDSCxVQUFVO3dCQUNSLElBQUksTUFBTSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUM7d0JBQy9DLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztvQkFDckYsQ0FBQztvQkFFRDs7dUJBRUc7b0JBQ0gsTUFBTSxDQUFDLFlBQVksQ0FBQyxPQUE0Qjt3QkFDOUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQztvQkFDekIsQ0FBQztvQkFFRDs7O3VCQUdHO29CQUNILE1BQU0sQ0FBQyxVQUFVLENBQUMsT0FBNEIsRUFBRSxPQUF3RTt3QkFDdEgsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDLEVBQUUsT0FBTyxFQUFFLHNCQUFzQixDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUMsRUFBRSxDQUFDLENBQUM7b0JBQ3hHLENBQUM7b0JBRUQ7Ozt1QkFHRztvQkFDSCxNQUFNLENBQUMsYUFBYSxDQUFDLE9BQTRCLEVBQUUsVUFBa0Q7d0JBQ25HLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQyxFQUFFLFVBQVUsRUFBRSxHQUFHLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO29CQUNuRixDQUFDO29CQUVEOzs7dUJBR0c7b0JBQ0gsTUFBTSxDQUFDLFNBQVMsQ0FBQyxPQUE0QixFQUFFLFlBQWdDO3dCQUM3RSxPQUFPLENBQUMsY0FBYyxDQUFDLENBQUMsRUFBRSxZQUFZLEVBQUUsQ0FBQyxDQUFDLENBQUM7b0JBQzdDLENBQUM7b0JBRUQ7Ozt1QkFHRztvQkFDSCxNQUFNLENBQUMsYUFBYSxDQUFDLE9BQTRCLEVBQUUsVUFBNEI7d0JBQzdFLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQyxFQUFFLFVBQVUsRUFBRSxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUNqRSxDQUFDO29CQUVEOzs7dUJBR0c7b0JBQ0gsTUFBTSxDQUFDLFVBQVUsQ0FBQyxPQUE0Qjt3QkFDNUMsSUFBSSxNQUFNLEdBQUcsT0FBTyxDQUFDLFNBQVMsRUFBRSxDQUFDO3dCQUNqQyxNQUFNLENBQUMsTUFBTSxDQUFDO29CQUNoQixDQUFDO29CQUVEOzs7dUJBR0c7b0JBQ0gsTUFBTSxDQUFDLG1CQUFtQixDQUFDLE9BQTRCLEVBQUUsTUFBMEI7d0JBQ2pGLE9BQU8sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7b0JBQ3pCLENBQUM7aUJBRUY7Z0JBdkhZLGVBQU8sVUF1SG5CLENBQUE7WUFDSCxDQUFDLEVBekhpQyxPQUFPLEdBQVAsYUFBTyxLQUFQLGFBQU8sUUF5SHhDO1FBQUQsQ0FBQyxFQXpIMkIsS0FBSyxHQUFMLFlBQUssS0FBTCxZQUFLLFFBeUhoQztJQUFELENBQUMsRUF6SG9CLE1BQU0sR0FBTixVQUFNLEtBQU4sVUFBTSxRQXlIMUI7QUFBRCxDQUFDLEVBekhnQixHQUFHLEdBQUgsV0FBRyxLQUFILFdBQUcsUUF5SG5CIiwiZmlsZSI6ImZvcm1hdC9NZXNzYWdlLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy8gYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgYnkgdGhlIEZsYXRCdWZmZXJzIGNvbXBpbGVyLCBkbyBub3QgbW9kaWZ5XG5cbmltcG9ydCB7IGZsYXRidWZmZXJzIH0gZnJvbSAnZmxhdGJ1ZmZlcnMnO1xuaW1wb3J0ICogYXMgTlMxNjE4NzU0OTg3MTk4NjY4MzE5OSBmcm9tICcuL1NjaGVtYSc7XG5leHBvcnQgbmFtZXNwYWNlIG9yZy5hcGFjaGUuYXJyb3cuZmxhdGJ1ZiB7XG4gIGV4cG9ydCBpbXBvcnQgU2NoZW1hID0gTlMxNjE4NzU0OTg3MTk4NjY4MzE5OS5vcmcuYXBhY2hlLmFycm93LmZsYXRidWYuU2NoZW1hO1xufVxuLyoqXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBUaGUgcm9vdCBNZXNzYWdlIHR5cGVcbiAqIFRoaXMgdW5pb24gZW5hYmxlcyB1cyB0byBlYXNpbHkgc2VuZCBkaWZmZXJlbnQgbWVzc2FnZSB0eXBlcyB3aXRob3V0XG4gKiByZWR1bmRhbnQgc3RvcmFnZSwgYW5kIGluIHRoZSBmdXR1cmUgd2UgY2FuIGVhc2lseSBhZGQgbmV3IG1lc3NhZ2UgdHlwZXMuXG4gKlxuICogQXJyb3cgaW1wbGVtZW50YXRpb25zIGRvIG5vdCBuZWVkIHRvIGltcGxlbWVudCBhbGwgb2YgdGhlIG1lc3NhZ2UgdHlwZXMsXG4gKiB3aGljaCBtYXkgaW5jbHVkZSBleHBlcmltZW50YWwgbWV0YWRhdGEgdHlwZXMuIEZvciBtYXhpbXVtIGNvbXBhdGliaWxpdHksXG4gKiBpdCBpcyBiZXN0IHRvIHNlbmQgZGF0YSB1c2luZyBSZWNvcmRCYXRjaFxuICpcbiAqIEBlbnVtXG4gKi9cbmV4cG9ydCBuYW1lc3BhY2Ugb3JnLmFwYWNoZS5hcnJvdy5mbGF0YnVmIHtcbiAgZXhwb3J0IGVudW0gTWVzc2FnZUhlYWRlciB7XG4gICAgTk9ORSA9IDAsXG4gICAgU2NoZW1hID0gMSxcbiAgICBEaWN0aW9uYXJ5QmF0Y2ggPSAyLFxuICAgIFJlY29yZEJhdGNoID0gMyxcbiAgICBUZW5zb3IgPSA0XG4gIH1cbn1cblxuLyoqXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBEYXRhIHN0cnVjdHVyZXMgZm9yIGRlc2NyaWJpbmcgYSB0YWJsZSByb3cgYmF0Y2ggKGEgY29sbGVjdGlvbiBvZlxuICogZXF1YWwtbGVuZ3RoIEFycm93IGFycmF5cylcbiAqIE1ldGFkYXRhIGFib3V0IGEgZmllbGQgYXQgc29tZSBsZXZlbCBvZiBhIG5lc3RlZCB0eXBlIHRyZWUgKGJ1dCBub3RcbiAqIGl0cyBjaGlsZHJlbikuXG4gKlxuICogRm9yIGV4YW1wbGUsIGEgTGlzdDxJbnQxNj4gd2l0aCB2YWx1ZXMgW1sxLCAyLCAzXSwgbnVsbCwgWzRdLCBbNSwgNl0sIG51bGxdXG4gKiB3b3VsZCBoYXZlIHtsZW5ndGg6IDUsIG51bGxfY291bnQ6IDJ9IGZvciBpdHMgTGlzdCBub2RlLCBhbmQge2xlbmd0aDogNixcbiAqIG51bGxfY291bnQ6IDB9IGZvciBpdHMgSW50MTYgbm9kZSwgYXMgc2VwYXJhdGUgRmllbGROb2RlIHN0cnVjdHNcbiAqXG4gKiBAY29uc3RydWN0b3JcbiAqL1xuZXhwb3J0IG5hbWVzcGFjZSBvcmcuYXBhY2hlLmFycm93LmZsYXRidWYge1xuICBleHBvcnQgY2xhc3MgRmllbGROb2RlIHtcbiAgICAvKipcbiAgICAgKiBAdHlwZSB7ZmxhdGJ1ZmZlcnMuQnl0ZUJ1ZmZlcn1cbiAgICAgKi9cbiAgICBiYjogZmxhdGJ1ZmZlcnMuQnl0ZUJ1ZmZlcjtcblxuICAgIC8qKlxuICAgICAqIEB0eXBlIHtudW1iZXJ9XG4gICAgICovXG4gICAgYmJfcG9zOiBudW1iZXIgPSAwO1xuICAgIC8qKlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBpXG4gICAgICogQHBhcmFtIHtmbGF0YnVmZmVycy5CeXRlQnVmZmVyfSBiYlxuICAgICAqIEByZXR1cm5zIHtGaWVsZE5vZGV9XG4gICAgICovXG4gICAgX19pbml0KGk6IG51bWJlciwgYmI6IGZsYXRidWZmZXJzLkJ5dGVCdWZmZXIpOiBGaWVsZE5vZGUge1xuICAgICAgdGhpcy5iYl9wb3MgPSBpO1xuICAgICAgdGhpcy5iYiA9IGJiO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIG51bWJlciBvZiB2YWx1ZSBzbG90cyBpbiB0aGUgQXJyb3cgYXJyYXkgYXQgdGhpcyBsZXZlbCBvZiBhIG5lc3RlZFxuICAgICAqIHRyZWVcbiAgICAgKlxuICAgICAqIEByZXR1cm5zIHtmbGF0YnVmZmVycy5Mb25nfVxuICAgICAqL1xuICAgIGxlbmd0aCgpOiBmbGF0YnVmZmVycy5Mb25nIHtcbiAgICAgIHJldHVybiB0aGlzLmJiLnJlYWRJbnQ2NCh0aGlzLmJiX3Bvcyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIG51bWJlciBvZiBvYnNlcnZlZCBudWxscy4gRmllbGRzIHdpdGggbnVsbF9jb3VudCA9PSAwIG1heSBjaG9vc2Ugbm90XG4gICAgICogdG8gd3JpdGUgdGhlaXIgcGh5c2ljYWwgdmFsaWRpdHkgYml0bWFwIG91dCBhcyBhIG1hdGVyaWFsaXplZCBidWZmZXIsXG4gICAgICogaW5zdGVhZCBzZXR0aW5nIHRoZSBsZW5ndGggb2YgdGhlIGJpdG1hcCBidWZmZXIgdG8gMC5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIHtmbGF0YnVmZmVycy5Mb25nfVxuICAgICAqL1xuICAgIG51bGxDb3VudCgpOiBmbGF0YnVmZmVycy5Mb25nIHtcbiAgICAgIHJldHVybiB0aGlzLmJiLnJlYWRJbnQ2NCh0aGlzLmJiX3BvcyArIDgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSB7ZmxhdGJ1ZmZlcnMuQnVpbGRlcn0gYnVpbGRlclxuICAgICAqIEBwYXJhbSB7ZmxhdGJ1ZmZlcnMuTG9uZ30gbGVuZ3RoXG4gICAgICogQHBhcmFtIHtmbGF0YnVmZmVycy5Mb25nfSBudWxsX2NvdW50XG4gICAgICogQHJldHVybnMge2ZsYXRidWZmZXJzLk9mZnNldH1cbiAgICAgKi9cbiAgICBzdGF0aWMgY3JlYXRlRmllbGROb2RlKGJ1aWxkZXI6IGZsYXRidWZmZXJzLkJ1aWxkZXIsIGxlbmd0aDogZmxhdGJ1ZmZlcnMuTG9uZywgbnVsbF9jb3VudDogZmxhdGJ1ZmZlcnMuTG9uZyk6IGZsYXRidWZmZXJzLk9mZnNldCB7XG4gICAgICBidWlsZGVyLnByZXAoOCwgMTYpO1xuICAgICAgYnVpbGRlci53cml0ZUludDY0KG51bGxfY291bnQpO1xuICAgICAgYnVpbGRlci53cml0ZUludDY0KGxlbmd0aCk7XG4gICAgICByZXR1cm4gYnVpbGRlci5vZmZzZXQoKTtcbiAgICB9XG5cbiAgfVxufVxuLyoqXG4gKiBBIGRhdGEgaGVhZGVyIGRlc2NyaWJpbmcgdGhlIHNoYXJlZCBtZW1vcnkgbGF5b3V0IG9mIGEgXCJyZWNvcmRcIiBvciBcInJvd1wiXG4gKiBiYXRjaC4gU29tZSBzeXN0ZW1zIGNhbGwgdGhpcyBhIFwicm93IGJhdGNoXCIgaW50ZXJuYWxseSBhbmQgb3RoZXJzIGEgXCJyZWNvcmRcbiAqIGJhdGNoXCIuXG4gKlxuICogQGNvbnN0cnVjdG9yXG4gKi9cbmV4cG9ydCBuYW1lc3BhY2Ugb3JnLmFwYWNoZS5hcnJvdy5mbGF0YnVmIHtcbiAgZXhwb3J0IGNsYXNzIFJlY29yZEJhdGNoIHtcbiAgICAvKipcbiAgICAgKiBAdHlwZSB7ZmxhdGJ1ZmZlcnMuQnl0ZUJ1ZmZlcn1cbiAgICAgKi9cbiAgICBiYjogZmxhdGJ1ZmZlcnMuQnl0ZUJ1ZmZlcjtcblxuICAgIC8qKlxuICAgICAqIEB0eXBlIHtudW1iZXJ9XG4gICAgICovXG4gICAgYmJfcG9zOiBudW1iZXIgPSAwO1xuICAgIC8qKlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBpXG4gICAgICogQHBhcmFtIHtmbGF0YnVmZmVycy5CeXRlQnVmZmVyfSBiYlxuICAgICAqIEByZXR1cm5zIHtSZWNvcmRCYXRjaH1cbiAgICAgKi9cbiAgICBfX2luaXQoaTogbnVtYmVyLCBiYjogZmxhdGJ1ZmZlcnMuQnl0ZUJ1ZmZlcik6IFJlY29yZEJhdGNoIHtcbiAgICAgIHRoaXMuYmJfcG9zID0gaTtcbiAgICAgIHRoaXMuYmIgPSBiYjtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSB7ZmxhdGJ1ZmZlcnMuQnl0ZUJ1ZmZlcn0gYmJcbiAgICAgKiBAcGFyYW0ge1JlY29yZEJhdGNoPX0gb2JqXG4gICAgICogQHJldHVybnMge1JlY29yZEJhdGNofVxuICAgICAqL1xuICAgIHN0YXRpYyBnZXRSb290QXNSZWNvcmRCYXRjaChiYjogZmxhdGJ1ZmZlcnMuQnl0ZUJ1ZmZlciwgb2JqPzogUmVjb3JkQmF0Y2gpOiBSZWNvcmRCYXRjaCB7XG4gICAgICByZXR1cm4gKG9iaiB8fCBuZXcgUmVjb3JkQmF0Y2gpLl9faW5pdChiYi5yZWFkSW50MzIoYmIucG9zaXRpb24oKSkgKyBiYi5wb3NpdGlvbigpLCBiYik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogbnVtYmVyIG9mIHJlY29yZHMgLyByb3dzLiBUaGUgYXJyYXlzIGluIHRoZSBiYXRjaCBzaG91bGQgYWxsIGhhdmUgdGhpc1xuICAgICAqIGxlbmd0aFxuICAgICAqXG4gICAgICogQHJldHVybnMge2ZsYXRidWZmZXJzLkxvbmd9XG4gICAgICovXG4gICAgbGVuZ3RoKCk6IGZsYXRidWZmZXJzLkxvbmcge1xuICAgICAgbGV0IG9mZnNldCA9IHRoaXMuYmIuX19vZmZzZXQodGhpcy5iYl9wb3MsIDQpO1xuICAgICAgcmV0dXJuIG9mZnNldCA/IHRoaXMuYmIucmVhZEludDY0KHRoaXMuYmJfcG9zICsgb2Zmc2V0KSA6IHRoaXMuYmIuY3JlYXRlTG9uZygwLCAwKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBOb2RlcyBjb3JyZXNwb25kIHRvIHRoZSBwcmUtb3JkZXJlZCBmbGF0dGVuZWQgbG9naWNhbCBzY2hlbWFcbiAgICAgKlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBpbmRleFxuICAgICAqIEBwYXJhbSB7b3JnLmFwYWNoZS5hcnJvdy5mbGF0YnVmLkZpZWxkTm9kZT19IG9ialxuICAgICAqIEByZXR1cm5zIHtvcmcuYXBhY2hlLmFycm93LmZsYXRidWYuRmllbGROb2RlfVxuICAgICAqL1xuICAgIG5vZGVzKGluZGV4OiBudW1iZXIsIG9iaj86IG9yZy5hcGFjaGUuYXJyb3cuZmxhdGJ1Zi5GaWVsZE5vZGUpOiBvcmcuYXBhY2hlLmFycm93LmZsYXRidWYuRmllbGROb2RlIHwgbnVsbCB7XG4gICAgICBsZXQgb2Zmc2V0ID0gdGhpcy5iYi5fX29mZnNldCh0aGlzLmJiX3BvcywgNik7XG4gICAgICByZXR1cm4gb2Zmc2V0ID8gKG9iaiB8fCBuZXcgb3JnLmFwYWNoZS5hcnJvdy5mbGF0YnVmLkZpZWxkTm9kZSkuX19pbml0KHRoaXMuYmIuX192ZWN0b3IodGhpcy5iYl9wb3MgKyBvZmZzZXQpICsgaW5kZXggKiAxNiwgdGhpcy5iYikgOiBudWxsO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9XG4gICAgICovXG4gICAgbm9kZXNMZW5ndGgoKTogbnVtYmVyIHtcbiAgICAgIGxldCBvZmZzZXQgPSB0aGlzLmJiLl9fb2Zmc2V0KHRoaXMuYmJfcG9zLCA2KTtcbiAgICAgIHJldHVybiBvZmZzZXQgPyB0aGlzLmJiLl9fdmVjdG9yX2xlbih0aGlzLmJiX3BvcyArIG9mZnNldCkgOiAwO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEJ1ZmZlcnMgY29ycmVzcG9uZCB0byB0aGUgcHJlLW9yZGVyZWQgZmxhdHRlbmVkIGJ1ZmZlciB0cmVlXG4gICAgICpcbiAgICAgKiBUaGUgbnVtYmVyIG9mIGJ1ZmZlcnMgYXBwZW5kZWQgdG8gdGhpcyBsaXN0IGRlcGVuZHMgb24gdGhlIHNjaGVtYS4gRm9yXG4gICAgICogZXhhbXBsZSwgbW9zdCBwcmltaXRpdmUgYXJyYXlzIHdpbGwgaGF2ZSAyIGJ1ZmZlcnMsIDEgZm9yIHRoZSB2YWxpZGl0eVxuICAgICAqIGJpdG1hcCBhbmQgMSBmb3IgdGhlIHZhbHVlcy4gRm9yIHN0cnVjdCBhcnJheXMsIHRoZXJlIHdpbGwgb25seSBiZSBhXG4gICAgICogc2luZ2xlIGJ1ZmZlciBmb3IgdGhlIHZhbGlkaXR5IChudWxscykgYml0bWFwXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gaW5kZXhcbiAgICAgKiBAcGFyYW0ge29yZy5hcGFjaGUuYXJyb3cuZmxhdGJ1Zi5CdWZmZXI9fSBvYmpcbiAgICAgKiBAcmV0dXJucyB7b3JnLmFwYWNoZS5hcnJvdy5mbGF0YnVmLkJ1ZmZlcn1cbiAgICAgKi9cbiAgICBidWZmZXJzKGluZGV4OiBudW1iZXIsIG9iaj86IE5TMTYxODc1NDk4NzE5ODY2ODMxOTkub3JnLmFwYWNoZS5hcnJvdy5mbGF0YnVmLkJ1ZmZlcik6IE5TMTYxODc1NDk4NzE5ODY2ODMxOTkub3JnLmFwYWNoZS5hcnJvdy5mbGF0YnVmLkJ1ZmZlciB8IG51bGwge1xuICAgICAgbGV0IG9mZnNldCA9IHRoaXMuYmIuX19vZmZzZXQodGhpcy5iYl9wb3MsIDgpO1xuICAgICAgcmV0dXJuIG9mZnNldCA/IChvYmogfHwgbmV3IE5TMTYxODc1NDk4NzE5ODY2ODMxOTkub3JnLmFwYWNoZS5hcnJvdy5mbGF0YnVmLkJ1ZmZlcikuX19pbml0KHRoaXMuYmIuX192ZWN0b3IodGhpcy5iYl9wb3MgKyBvZmZzZXQpICsgaW5kZXggKiAxNiwgdGhpcy5iYikgOiBudWxsO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9XG4gICAgICovXG4gICAgYnVmZmVyc0xlbmd0aCgpOiBudW1iZXIge1xuICAgICAgbGV0IG9mZnNldCA9IHRoaXMuYmIuX19vZmZzZXQodGhpcy5iYl9wb3MsIDgpO1xuICAgICAgcmV0dXJuIG9mZnNldCA/IHRoaXMuYmIuX192ZWN0b3JfbGVuKHRoaXMuYmJfcG9zICsgb2Zmc2V0KSA6IDA7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIHtmbGF0YnVmZmVycy5CdWlsZGVyfSBidWlsZGVyXG4gICAgICovXG4gICAgc3RhdGljIHN0YXJ0UmVjb3JkQmF0Y2goYnVpbGRlcjogZmxhdGJ1ZmZlcnMuQnVpbGRlcikge1xuICAgICAgYnVpbGRlci5zdGFydE9iamVjdCgzKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0ge2ZsYXRidWZmZXJzLkJ1aWxkZXJ9IGJ1aWxkZXJcbiAgICAgKiBAcGFyYW0ge2ZsYXRidWZmZXJzLkxvbmd9IGxlbmd0aFxuICAgICAqL1xuICAgIHN0YXRpYyBhZGRMZW5ndGgoYnVpbGRlcjogZmxhdGJ1ZmZlcnMuQnVpbGRlciwgbGVuZ3RoOiBmbGF0YnVmZmVycy5Mb25nKSB7XG4gICAgICBidWlsZGVyLmFkZEZpZWxkSW50NjQoMCwgbGVuZ3RoLCBidWlsZGVyLmNyZWF0ZUxvbmcoMCwgMCkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSB7ZmxhdGJ1ZmZlcnMuQnVpbGRlcn0gYnVpbGRlclxuICAgICAqIEBwYXJhbSB7ZmxhdGJ1ZmZlcnMuT2Zmc2V0fSBub2Rlc09mZnNldFxuICAgICAqL1xuICAgIHN0YXRpYyBhZGROb2RlcyhidWlsZGVyOiBmbGF0YnVmZmVycy5CdWlsZGVyLCBub2Rlc09mZnNldDogZmxhdGJ1ZmZlcnMuT2Zmc2V0KSB7XG4gICAgICBidWlsZGVyLmFkZEZpZWxkT2Zmc2V0KDEsIG5vZGVzT2Zmc2V0LCAwKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0ge2ZsYXRidWZmZXJzLkJ1aWxkZXJ9IGJ1aWxkZXJcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gbnVtRWxlbXNcbiAgICAgKi9cbiAgICBzdGF0aWMgc3RhcnROb2Rlc1ZlY3RvcihidWlsZGVyOiBmbGF0YnVmZmVycy5CdWlsZGVyLCBudW1FbGVtczogbnVtYmVyKSB7XG4gICAgICBidWlsZGVyLnN0YXJ0VmVjdG9yKDE2LCBudW1FbGVtcywgOCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIHtmbGF0YnVmZmVycy5CdWlsZGVyfSBidWlsZGVyXG4gICAgICogQHBhcmFtIHtmbGF0YnVmZmVycy5PZmZzZXR9IGJ1ZmZlcnNPZmZzZXRcbiAgICAgKi9cbiAgICBzdGF0aWMgYWRkQnVmZmVycyhidWlsZGVyOiBmbGF0YnVmZmVycy5CdWlsZGVyLCBidWZmZXJzT2Zmc2V0OiBmbGF0YnVmZmVycy5PZmZzZXQpIHtcbiAgICAgIGJ1aWxkZXIuYWRkRmllbGRPZmZzZXQoMiwgYnVmZmVyc09mZnNldCwgMCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIHtmbGF0YnVmZmVycy5CdWlsZGVyfSBidWlsZGVyXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IG51bUVsZW1zXG4gICAgICovXG4gICAgc3RhdGljIHN0YXJ0QnVmZmVyc1ZlY3RvcihidWlsZGVyOiBmbGF0YnVmZmVycy5CdWlsZGVyLCBudW1FbGVtczogbnVtYmVyKSB7XG4gICAgICBidWlsZGVyLnN0YXJ0VmVjdG9yKDE2LCBudW1FbGVtcywgOCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIHtmbGF0YnVmZmVycy5CdWlsZGVyfSBidWlsZGVyXG4gICAgICogQHJldHVybnMge2ZsYXRidWZmZXJzLk9mZnNldH1cbiAgICAgKi9cbiAgICBzdGF0aWMgZW5kUmVjb3JkQmF0Y2goYnVpbGRlcjogZmxhdGJ1ZmZlcnMuQnVpbGRlcik6IGZsYXRidWZmZXJzLk9mZnNldCB7XG4gICAgICBsZXQgb2Zmc2V0ID0gYnVpbGRlci5lbmRPYmplY3QoKTtcbiAgICAgIHJldHVybiBvZmZzZXQ7XG4gICAgfVxuXG4gIH1cbn1cbi8qKlxuICogRm9yIHNlbmRpbmcgZGljdGlvbmFyeSBlbmNvZGluZyBpbmZvcm1hdGlvbi4gQW55IEZpZWxkIGNhbiBiZVxuICogZGljdGlvbmFyeS1lbmNvZGVkLCBidXQgaW4gdGhpcyBjYXNlIG5vbmUgb2YgaXRzIGNoaWxkcmVuIG1heSBiZVxuICogZGljdGlvbmFyeS1lbmNvZGVkLlxuICogVGhlcmUgaXMgb25lIHZlY3RvciAvIGNvbHVtbiBwZXIgZGljdGlvbmFyeSwgYnV0IHRoYXQgdmVjdG9yIC8gY29sdW1uXG4gKiBtYXkgYmUgc3ByZWFkIGFjcm9zcyBtdWx0aXBsZSBkaWN0aW9uYXJ5IGJhdGNoZXMgYnkgdXNpbmcgdGhlIGlzRGVsdGFcbiAqIGZsYWdcbiAqXG4gKiBAY29uc3RydWN0b3JcbiAqL1xuZXhwb3J0IG5hbWVzcGFjZSBvcmcuYXBhY2hlLmFycm93LmZsYXRidWYge1xuICBleHBvcnQgY2xhc3MgRGljdGlvbmFyeUJhdGNoIHtcbiAgICAvKipcbiAgICAgKiBAdHlwZSB7ZmxhdGJ1ZmZlcnMuQnl0ZUJ1ZmZlcn1cbiAgICAgKi9cbiAgICBiYjogZmxhdGJ1ZmZlcnMuQnl0ZUJ1ZmZlcjtcblxuICAgIC8qKlxuICAgICAqIEB0eXBlIHtudW1iZXJ9XG4gICAgICovXG4gICAgYmJfcG9zOiBudW1iZXIgPSAwO1xuICAgIC8qKlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBpXG4gICAgICogQHBhcmFtIHtmbGF0YnVmZmVycy5CeXRlQnVmZmVyfSBiYlxuICAgICAqIEByZXR1cm5zIHtEaWN0aW9uYXJ5QmF0Y2h9XG4gICAgICovXG4gICAgX19pbml0KGk6IG51bWJlciwgYmI6IGZsYXRidWZmZXJzLkJ5dGVCdWZmZXIpOiBEaWN0aW9uYXJ5QmF0Y2gge1xuICAgICAgdGhpcy5iYl9wb3MgPSBpO1xuICAgICAgdGhpcy5iYiA9IGJiO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIHtmbGF0YnVmZmVycy5CeXRlQnVmZmVyfSBiYlxuICAgICAqIEBwYXJhbSB7RGljdGlvbmFyeUJhdGNoPX0gb2JqXG4gICAgICogQHJldHVybnMge0RpY3Rpb25hcnlCYXRjaH1cbiAgICAgKi9cbiAgICBzdGF0aWMgZ2V0Um9vdEFzRGljdGlvbmFyeUJhdGNoKGJiOiBmbGF0YnVmZmVycy5CeXRlQnVmZmVyLCBvYmo/OiBEaWN0aW9uYXJ5QmF0Y2gpOiBEaWN0aW9uYXJ5QmF0Y2gge1xuICAgICAgcmV0dXJuIChvYmogfHwgbmV3IERpY3Rpb25hcnlCYXRjaCkuX19pbml0KGJiLnJlYWRJbnQzMihiYi5wb3NpdGlvbigpKSArIGJiLnBvc2l0aW9uKCksIGJiKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcmV0dXJucyB7ZmxhdGJ1ZmZlcnMuTG9uZ31cbiAgICAgKi9cbiAgICBpZCgpOiBmbGF0YnVmZmVycy5Mb25nIHtcbiAgICAgIGxldCBvZmZzZXQgPSB0aGlzLmJiLl9fb2Zmc2V0KHRoaXMuYmJfcG9zLCA0KTtcbiAgICAgIHJldHVybiBvZmZzZXQgPyB0aGlzLmJiLnJlYWRJbnQ2NCh0aGlzLmJiX3BvcyArIG9mZnNldCkgOiB0aGlzLmJiLmNyZWF0ZUxvbmcoMCwgMCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIHtvcmcuYXBhY2hlLmFycm93LmZsYXRidWYuUmVjb3JkQmF0Y2g9fSBvYmpcbiAgICAgKiBAcmV0dXJucyB7b3JnLmFwYWNoZS5hcnJvdy5mbGF0YnVmLlJlY29yZEJhdGNofG51bGx9XG4gICAgICovXG4gICAgZGF0YShvYmo/OiBvcmcuYXBhY2hlLmFycm93LmZsYXRidWYuUmVjb3JkQmF0Y2gpOiBvcmcuYXBhY2hlLmFycm93LmZsYXRidWYuUmVjb3JkQmF0Y2ggfCBudWxsIHtcbiAgICAgIGxldCBvZmZzZXQgPSB0aGlzLmJiLl9fb2Zmc2V0KHRoaXMuYmJfcG9zLCA2KTtcbiAgICAgIHJldHVybiBvZmZzZXQgPyAob2JqIHx8IG5ldyBvcmcuYXBhY2hlLmFycm93LmZsYXRidWYuUmVjb3JkQmF0Y2gpLl9faW5pdCh0aGlzLmJiLl9faW5kaXJlY3QodGhpcy5iYl9wb3MgKyBvZmZzZXQpLCB0aGlzLmJiKSA6IG51bGw7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSWYgaXNEZWx0YSBpcyB0cnVlIHRoZSB2YWx1ZXMgaW4gdGhlIGRpY3Rpb25hcnkgYXJlIHRvIGJlIGFwcGVuZGVkIHRvIGFcbiAgICAgKiBkaWN0aW9uYXJ5IHdpdGggdGhlIGluZGljYXRlZCBpZFxuICAgICAqXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59XG4gICAgICovXG4gICAgaXNEZWx0YSgpOiBib29sZWFuIHtcbiAgICAgIGxldCBvZmZzZXQgPSB0aGlzLmJiLl9fb2Zmc2V0KHRoaXMuYmJfcG9zLCA4KTtcbiAgICAgIHJldHVybiBvZmZzZXQgPyAhIXRoaXMuYmIucmVhZEludDgodGhpcy5iYl9wb3MgKyBvZmZzZXQpIDogZmFsc2U7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIHtmbGF0YnVmZmVycy5CdWlsZGVyfSBidWlsZGVyXG4gICAgICovXG4gICAgc3RhdGljIHN0YXJ0RGljdGlvbmFyeUJhdGNoKGJ1aWxkZXI6IGZsYXRidWZmZXJzLkJ1aWxkZXIpIHtcbiAgICAgIGJ1aWxkZXIuc3RhcnRPYmplY3QoMyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIHtmbGF0YnVmZmVycy5CdWlsZGVyfSBidWlsZGVyXG4gICAgICogQHBhcmFtIHtmbGF0YnVmZmVycy5Mb25nfSBpZFxuICAgICAqL1xuICAgIHN0YXRpYyBhZGRJZChidWlsZGVyOiBmbGF0YnVmZmVycy5CdWlsZGVyLCBpZDogZmxhdGJ1ZmZlcnMuTG9uZykge1xuICAgICAgYnVpbGRlci5hZGRGaWVsZEludDY0KDAsIGlkLCBidWlsZGVyLmNyZWF0ZUxvbmcoMCwgMCkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSB7ZmxhdGJ1ZmZlcnMuQnVpbGRlcn0gYnVpbGRlclxuICAgICAqIEBwYXJhbSB7ZmxhdGJ1ZmZlcnMuT2Zmc2V0fSBkYXRhT2Zmc2V0XG4gICAgICovXG4gICAgc3RhdGljIGFkZERhdGEoYnVpbGRlcjogZmxhdGJ1ZmZlcnMuQnVpbGRlciwgZGF0YU9mZnNldDogZmxhdGJ1ZmZlcnMuT2Zmc2V0KSB7XG4gICAgICBidWlsZGVyLmFkZEZpZWxkT2Zmc2V0KDEsIGRhdGFPZmZzZXQsIDApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSB7ZmxhdGJ1ZmZlcnMuQnVpbGRlcn0gYnVpbGRlclxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gaXNEZWx0YVxuICAgICAqL1xuICAgIHN0YXRpYyBhZGRJc0RlbHRhKGJ1aWxkZXI6IGZsYXRidWZmZXJzLkJ1aWxkZXIsIGlzRGVsdGE6IGJvb2xlYW4pIHtcbiAgICAgIGJ1aWxkZXIuYWRkRmllbGRJbnQ4KDIsICtpc0RlbHRhLCArZmFsc2UpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSB7ZmxhdGJ1ZmZlcnMuQnVpbGRlcn0gYnVpbGRlclxuICAgICAqIEByZXR1cm5zIHtmbGF0YnVmZmVycy5PZmZzZXR9XG4gICAgICovXG4gICAgc3RhdGljIGVuZERpY3Rpb25hcnlCYXRjaChidWlsZGVyOiBmbGF0YnVmZmVycy5CdWlsZGVyKTogZmxhdGJ1ZmZlcnMuT2Zmc2V0IHtcbiAgICAgIGxldCBvZmZzZXQgPSBidWlsZGVyLmVuZE9iamVjdCgpO1xuICAgICAgcmV0dXJuIG9mZnNldDtcbiAgICB9XG5cbiAgfVxufVxuLyoqXG4gKiBAY29uc3RydWN0b3JcbiAqL1xuZXhwb3J0IG5hbWVzcGFjZSBvcmcuYXBhY2hlLmFycm93LmZsYXRidWYge1xuICBleHBvcnQgY2xhc3MgTWVzc2FnZSB7XG4gICAgLyoqXG4gICAgICogQHR5cGUge2ZsYXRidWZmZXJzLkJ5dGVCdWZmZXJ9XG4gICAgICovXG4gICAgYmI6IGZsYXRidWZmZXJzLkJ5dGVCdWZmZXI7XG5cbiAgICAvKipcbiAgICAgKiBAdHlwZSB7bnVtYmVyfVxuICAgICAqL1xuICAgIGJiX3BvczogbnVtYmVyID0gMDtcbiAgICAvKipcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gaVxuICAgICAqIEBwYXJhbSB7ZmxhdGJ1ZmZlcnMuQnl0ZUJ1ZmZlcn0gYmJcbiAgICAgKiBAcmV0dXJucyB7TWVzc2FnZX1cbiAgICAgKi9cbiAgICBfX2luaXQoaTogbnVtYmVyLCBiYjogZmxhdGJ1ZmZlcnMuQnl0ZUJ1ZmZlcik6IE1lc3NhZ2Uge1xuICAgICAgdGhpcy5iYl9wb3MgPSBpO1xuICAgICAgdGhpcy5iYiA9IGJiO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIHtmbGF0YnVmZmVycy5CeXRlQnVmZmVyfSBiYlxuICAgICAqIEBwYXJhbSB7TWVzc2FnZT19IG9ialxuICAgICAqIEByZXR1cm5zIHtNZXNzYWdlfVxuICAgICAqL1xuICAgIHN0YXRpYyBnZXRSb290QXNNZXNzYWdlKGJiOiBmbGF0YnVmZmVycy5CeXRlQnVmZmVyLCBvYmo/OiBNZXNzYWdlKTogTWVzc2FnZSB7XG4gICAgICByZXR1cm4gKG9iaiB8fCBuZXcgTWVzc2FnZSkuX19pbml0KGJiLnJlYWRJbnQzMihiYi5wb3NpdGlvbigpKSArIGJiLnBvc2l0aW9uKCksIGJiKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcmV0dXJucyB7b3JnLmFwYWNoZS5hcnJvdy5mbGF0YnVmLk1ldGFkYXRhVmVyc2lvbn1cbiAgICAgKi9cbiAgICB2ZXJzaW9uKCk6IE5TMTYxODc1NDk4NzE5ODY2ODMxOTkub3JnLmFwYWNoZS5hcnJvdy5mbGF0YnVmLk1ldGFkYXRhVmVyc2lvbiB7XG4gICAgICBsZXQgb2Zmc2V0ID0gdGhpcy5iYi5fX29mZnNldCh0aGlzLmJiX3BvcywgNCk7XG4gICAgICByZXR1cm4gb2Zmc2V0ID8gLyoqIEB0eXBlIHtvcmcuYXBhY2hlLmFycm93LmZsYXRidWYuTWV0YWRhdGFWZXJzaW9ufSAqLyAodGhpcy5iYi5yZWFkSW50MTYodGhpcy5iYl9wb3MgKyBvZmZzZXQpKSA6IE5TMTYxODc1NDk4NzE5ODY2ODMxOTkub3JnLmFwYWNoZS5hcnJvdy5mbGF0YnVmLk1ldGFkYXRhVmVyc2lvbi5WMTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcmV0dXJucyB7b3JnLmFwYWNoZS5hcnJvdy5mbGF0YnVmLk1lc3NhZ2VIZWFkZXJ9XG4gICAgICovXG4gICAgaGVhZGVyVHlwZSgpOiBvcmcuYXBhY2hlLmFycm93LmZsYXRidWYuTWVzc2FnZUhlYWRlciB7XG4gICAgICBsZXQgb2Zmc2V0ID0gdGhpcy5iYi5fX29mZnNldCh0aGlzLmJiX3BvcywgNik7XG4gICAgICByZXR1cm4gb2Zmc2V0ID8gLyoqIEB0eXBlIHtvcmcuYXBhY2hlLmFycm93LmZsYXRidWYuTWVzc2FnZUhlYWRlcn0gKi8gKHRoaXMuYmIucmVhZFVpbnQ4KHRoaXMuYmJfcG9zICsgb2Zmc2V0KSkgOiBvcmcuYXBhY2hlLmFycm93LmZsYXRidWYuTWVzc2FnZUhlYWRlci5OT05FO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSB7ZmxhdGJ1ZmZlcnMuVGFibGV9IG9ialxuICAgICAqIEByZXR1cm5zIHs/ZmxhdGJ1ZmZlcnMuVGFibGV9XG4gICAgICovXG4gICAgaGVhZGVyPFQgZXh0ZW5kcyBmbGF0YnVmZmVycy5UYWJsZT4ob2JqOiBUKTogVCB8IG51bGwge1xuICAgICAgbGV0IG9mZnNldCA9IHRoaXMuYmIuX19vZmZzZXQodGhpcy5iYl9wb3MsIDgpO1xuICAgICAgcmV0dXJuIG9mZnNldCA/IHRoaXMuYmIuX191bmlvbihvYmosIHRoaXMuYmJfcG9zICsgb2Zmc2V0KSA6IG51bGw7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHJldHVybnMge2ZsYXRidWZmZXJzLkxvbmd9XG4gICAgICovXG4gICAgYm9keUxlbmd0aCgpOiBmbGF0YnVmZmVycy5Mb25nIHtcbiAgICAgIGxldCBvZmZzZXQgPSB0aGlzLmJiLl9fb2Zmc2V0KHRoaXMuYmJfcG9zLCAxMCk7XG4gICAgICByZXR1cm4gb2Zmc2V0ID8gdGhpcy5iYi5yZWFkSW50NjQodGhpcy5iYl9wb3MgKyBvZmZzZXQpIDogdGhpcy5iYi5jcmVhdGVMb25nKDAsIDApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSB7ZmxhdGJ1ZmZlcnMuQnVpbGRlcn0gYnVpbGRlclxuICAgICAqL1xuICAgIHN0YXRpYyBzdGFydE1lc3NhZ2UoYnVpbGRlcjogZmxhdGJ1ZmZlcnMuQnVpbGRlcikge1xuICAgICAgYnVpbGRlci5zdGFydE9iamVjdCg0KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0ge2ZsYXRidWZmZXJzLkJ1aWxkZXJ9IGJ1aWxkZXJcbiAgICAgKiBAcGFyYW0ge29yZy5hcGFjaGUuYXJyb3cuZmxhdGJ1Zi5NZXRhZGF0YVZlcnNpb259IHZlcnNpb25cbiAgICAgKi9cbiAgICBzdGF0aWMgYWRkVmVyc2lvbihidWlsZGVyOiBmbGF0YnVmZmVycy5CdWlsZGVyLCB2ZXJzaW9uOiBOUzE2MTg3NTQ5ODcxOTg2NjgzMTk5Lm9yZy5hcGFjaGUuYXJyb3cuZmxhdGJ1Zi5NZXRhZGF0YVZlcnNpb24pIHtcbiAgICAgIGJ1aWxkZXIuYWRkRmllbGRJbnQxNigwLCB2ZXJzaW9uLCBOUzE2MTg3NTQ5ODcxOTg2NjgzMTk5Lm9yZy5hcGFjaGUuYXJyb3cuZmxhdGJ1Zi5NZXRhZGF0YVZlcnNpb24uVjEpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSB7ZmxhdGJ1ZmZlcnMuQnVpbGRlcn0gYnVpbGRlclxuICAgICAqIEBwYXJhbSB7b3JnLmFwYWNoZS5hcnJvdy5mbGF0YnVmLk1lc3NhZ2VIZWFkZXJ9IGhlYWRlclR5cGVcbiAgICAgKi9cbiAgICBzdGF0aWMgYWRkSGVhZGVyVHlwZShidWlsZGVyOiBmbGF0YnVmZmVycy5CdWlsZGVyLCBoZWFkZXJUeXBlOiBvcmcuYXBhY2hlLmFycm93LmZsYXRidWYuTWVzc2FnZUhlYWRlcikge1xuICAgICAgYnVpbGRlci5hZGRGaWVsZEludDgoMSwgaGVhZGVyVHlwZSwgb3JnLmFwYWNoZS5hcnJvdy5mbGF0YnVmLk1lc3NhZ2VIZWFkZXIuTk9ORSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIHtmbGF0YnVmZmVycy5CdWlsZGVyfSBidWlsZGVyXG4gICAgICogQHBhcmFtIHtmbGF0YnVmZmVycy5PZmZzZXR9IGhlYWRlck9mZnNldFxuICAgICAqL1xuICAgIHN0YXRpYyBhZGRIZWFkZXIoYnVpbGRlcjogZmxhdGJ1ZmZlcnMuQnVpbGRlciwgaGVhZGVyT2Zmc2V0OiBmbGF0YnVmZmVycy5PZmZzZXQpIHtcbiAgICAgIGJ1aWxkZXIuYWRkRmllbGRPZmZzZXQoMiwgaGVhZGVyT2Zmc2V0LCAwKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0ge2ZsYXRidWZmZXJzLkJ1aWxkZXJ9IGJ1aWxkZXJcbiAgICAgKiBAcGFyYW0ge2ZsYXRidWZmZXJzLkxvbmd9IGJvZHlMZW5ndGhcbiAgICAgKi9cbiAgICBzdGF0aWMgYWRkQm9keUxlbmd0aChidWlsZGVyOiBmbGF0YnVmZmVycy5CdWlsZGVyLCBib2R5TGVuZ3RoOiBmbGF0YnVmZmVycy5Mb25nKSB7XG4gICAgICBidWlsZGVyLmFkZEZpZWxkSW50NjQoMywgYm9keUxlbmd0aCwgYnVpbGRlci5jcmVhdGVMb25nKDAsIDApKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0ge2ZsYXRidWZmZXJzLkJ1aWxkZXJ9IGJ1aWxkZXJcbiAgICAgKiBAcmV0dXJucyB7ZmxhdGJ1ZmZlcnMuT2Zmc2V0fVxuICAgICAqL1xuICAgIHN0YXRpYyBlbmRNZXNzYWdlKGJ1aWxkZXI6IGZsYXRidWZmZXJzLkJ1aWxkZXIpOiBmbGF0YnVmZmVycy5PZmZzZXQge1xuICAgICAgbGV0IG9mZnNldCA9IGJ1aWxkZXIuZW5kT2JqZWN0KCk7XG4gICAgICByZXR1cm4gb2Zmc2V0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSB7ZmxhdGJ1ZmZlcnMuQnVpbGRlcn0gYnVpbGRlclxuICAgICAqIEBwYXJhbSB7ZmxhdGJ1ZmZlcnMuT2Zmc2V0fSBvZmZzZXRcbiAgICAgKi9cbiAgICBzdGF0aWMgZmluaXNoTWVzc2FnZUJ1ZmZlcihidWlsZGVyOiBmbGF0YnVmZmVycy5CdWlsZGVyLCBvZmZzZXQ6IGZsYXRidWZmZXJzLk9mZnNldCkge1xuICAgICAgYnVpbGRlci5maW5pc2gob2Zmc2V0KTtcbiAgICB9XG5cbiAgfVxufVxuIl19 |
@@ -8,5 +8,18 @@ /// <reference types="flatbuffers" /> | ||
enum MetadataVersion { | ||
/** | ||
* 0.1.0 | ||
*/ | ||
V1 = 0, | ||
/** | ||
* 0.2.0 | ||
*/ | ||
V2 = 1, | ||
/** | ||
* 0.3.0 -> 0.7.1 | ||
*/ | ||
V3 = 2, | ||
/** | ||
* >= 0.8.0 | ||
*/ | ||
V4 = 3, | ||
} | ||
@@ -1395,9 +1408,2 @@ } | ||
/** | ||
* The shared memory page id where this buffer is located. Currently this is | ||
* not used | ||
* | ||
* @returns {number} | ||
*/ | ||
page(): number; | ||
/** | ||
* The relative offset into the shared memory page where the bytes for this | ||
@@ -1418,3 +1424,2 @@ * buffer starts | ||
* @param {flatbuffers.Builder} builder | ||
* @param {number} page | ||
* @param {flatbuffers.Long} offset | ||
@@ -1424,3 +1429,3 @@ * @param {flatbuffers.Long} length | ||
*/ | ||
static createBuffer(builder: flatbuffers.Builder, page: number, offset: flatbuffers.Long, length: flatbuffers.Long): flatbuffers.Offset; | ||
static createBuffer(builder: flatbuffers.Builder, offset: flatbuffers.Long, length: flatbuffers.Long): flatbuffers.Offset; | ||
} | ||
@@ -1427,0 +1432,0 @@ } |
{ | ||
"name": "@apache-arrow/esnext-cjs", | ||
"version": "0.2.0", | ||
"main": "Arrow.js", | ||
"typings": "Arrow.d.ts", | ||
"name": "@apache-arrow/esnext-cjs", | ||
"version": "0.1.2", | ||
"description": "Apache's columnar in-memory data format for big data analytics", | ||
"author": "Graphistry, Inc.", | ||
"homepage": "https://github.com/graphistry/arrow#readme", | ||
"types": "Arrow.d.ts", | ||
"license": "Apache-2.0", | ||
"description": "Apache Arrow columnar in-memory format", | ||
"author": "Apache Software Foundation", | ||
"homepage": "https://github.com/apache/arrow/blob/master/js/README.md", | ||
"repository": { | ||
"type": "git", | ||
"url": "git+https://github.com/apache/arrow.git" | ||
}, | ||
"bugs": { | ||
"url": "https://github.com/graphistry/arrow/issues" | ||
"url": "https://issues.apache.org/jira/projects/ARROW" | ||
}, | ||
"license": "Apache-2.0", | ||
"keywords": [ | ||
@@ -17,9 +21,7 @@ "apache", | ||
], | ||
"repository": { | ||
"type": "git", | ||
"url": "git+https://github.com/graphistry/arrow.git" | ||
}, | ||
"peerDependencies": { | ||
"tslib": "^1.7.1" | ||
"dependencies": { | ||
"flatbuffers": "trxcllnt/flatbuffers-esm", | ||
"text-encoding-utf-8": "^1.0.2", | ||
"tslib": "^1.8.0" | ||
} | ||
} | ||
} |
/// <reference types="flatbuffers" /> | ||
/// <reference types="node" /> | ||
import { Vector } from '../vector/vector'; | ||
import { flatbuffers } from 'flatbuffers'; | ||
import * as File_ from '../format/File'; | ||
import * as Schema_ from '../format/Schema'; | ||
import * as Message_ from '../format/Message'; | ||
import { Vector } from '../vector/vector'; | ||
import ByteBuffer = flatbuffers.ByteBuffer; | ||
export import Schema = Schema_.org.apache.arrow.flatbuf.Schema; | ||
export import RecordBatch = Message_.org.apache.arrow.flatbuf.RecordBatch; | ||
export declare type Dictionaries = { | ||
[k: string]: Vector<any>; | ||
import Footer = File_.org.apache.arrow.flatbuf.Footer; | ||
import Field = Schema_.org.apache.arrow.flatbuf.Field; | ||
import Schema = Schema_.org.apache.arrow.flatbuf.Schema; | ||
import Message = Message_.org.apache.arrow.flatbuf.Message; | ||
import ArrowBuffer = Schema_.org.apache.arrow.flatbuf.Buffer; | ||
import FieldNode = Message_.org.apache.arrow.flatbuf.FieldNode; | ||
import RecordBatch = Message_.org.apache.arrow.flatbuf.RecordBatch; | ||
export declare type ArrowReaderContext = { | ||
schema?: Schema; | ||
footer?: Footer | null; | ||
dictionaries: Map<string, Vector>; | ||
dictionaryEncodedFields: Map<string, Field>; | ||
readMessages: (bb: ByteBuffer, footer: Footer) => Iterable<Message>; | ||
}; | ||
export declare type IteratorState = { | ||
nodeIndex: number; | ||
bufferIndex: number; | ||
}; | ||
export declare function readRecords(...bytes: ByteBuffer[]): IterableIterator<{ | ||
schema: any; | ||
batch: { | ||
id?: string; | ||
offset: number; | ||
bytes: Uint8Array; | ||
data: RecordBatch; | ||
}; | ||
}>; | ||
export declare function readBuffers(...bytes: Array<Uint8Array | Buffer | string>): IterableIterator<Vector<any>[]>; | ||
export interface VectorReaderContext { | ||
offset: number; | ||
bytes: Uint8Array; | ||
batch: RecordBatch; | ||
dictionaries: Map<string, Vector>; | ||
readNextNode(): FieldNode; | ||
readNextBuffer(): ArrowBuffer; | ||
} | ||
export declare function readVectors(buffers: Iterable<Uint8Array | Buffer | string>, context?: ArrowReaderContext): IterableIterator<Vector<any>[]>; | ||
export declare function readVectorsAsync(buffers: AsyncIterable<Uint8Array | Buffer | string>, context?: ArrowReaderContext): AsyncIterableIterator<Vector<any>[]>; |
@@ -0,1 +1,2 @@ | ||
"use strict"; | ||
// Licensed to the Apache Software Foundation (ASF) under one | ||
@@ -19,48 +20,96 @@ // or more contributor license agreements. See the NOTICE file | ||
const flatbuffers_1 = require("flatbuffers"); | ||
const vector_1 = require("./vector"); | ||
const format_1 = require("./format"); | ||
const Schema_ = require("../format/Schema"); | ||
const Message_ = require("../format/Message"); | ||
const file_1 = require("./file"); | ||
const stream_1 = require("./stream"); | ||
const vector_1 = require("./vector"); | ||
const dictionary_1 = require("./dictionary"); | ||
var ByteBuffer = flatbuffers_1.flatbuffers.ByteBuffer; | ||
exports.Schema = Schema_.org.apache.arrow.flatbuf.Schema; | ||
exports.RecordBatch = Message_.org.apache.arrow.flatbuf.RecordBatch; | ||
function* readRecords(...bytes) { | ||
try { | ||
yield* file_1.readFile(...bytes); | ||
var Field = Schema_.org.apache.arrow.flatbuf.Field; | ||
var RecordBatch = Message_.org.apache.arrow.flatbuf.RecordBatch; | ||
var MessageHeader = Message_.org.apache.arrow.flatbuf.MessageHeader; | ||
var MetadataVersion = Schema_.org.apache.arrow.flatbuf.MetadataVersion; | ||
var DictionaryBatch = Message_.org.apache.arrow.flatbuf.DictionaryBatch; | ||
function* readVectors(buffers, context) { | ||
const context_ = context || {}; | ||
for (const buffer of buffers) { | ||
yield* readBuffer(toByteBuffer(buffer), context_); | ||
} | ||
catch (e) { | ||
try { | ||
yield* stream_1.readStream(...bytes); | ||
} | ||
catch (e) { | ||
throw new Error('Invalid Arrow buffer'); | ||
} | ||
} | ||
exports.readVectors = readVectors; | ||
async function* readVectorsAsync(buffers, context) { | ||
const context_ = context || {}; | ||
for await (const buffer of buffers) { | ||
yield* readBuffer(toByteBuffer(buffer), context_); | ||
} | ||
} | ||
exports.readRecords = readRecords; | ||
function* readBuffers(...bytes) { | ||
const dictionaries = {}; | ||
const byteBuffers = bytes.map(toByteBuffer); | ||
for (let { schema, batch } of readRecords(...byteBuffers)) { | ||
let vectors = []; | ||
let state = { nodeIndex: 0, bufferIndex: 0 }; | ||
let index = -1, fieldsLength = schema.fieldsLength(); | ||
if (batch.id) { | ||
while (++index < fieldsLength) { | ||
for (let [id, vector] of dictionary_1.readDictionaries(schema.fields(index), batch, state, dictionaries)) { | ||
dictionaries[id] = dictionaries[id] && dictionaries[id].concat(vector) || vector; | ||
exports.readVectorsAsync = readVectorsAsync; | ||
function* readBuffer(bb, readerContext) { | ||
let { schema, footer, readMessages, dictionaryEncodedFields, dictionaries } = readerContext; | ||
if (!schema) { | ||
({ schema, footer, readMessages, dictionaryEncodedFields } = readSchema(bb)); | ||
readerContext.schema = schema; | ||
readerContext.readMessages = readMessages; | ||
readerContext.dictionaryEncodedFields = dictionaryEncodedFields; | ||
readerContext.dictionaries = dictionaries = new Map(); | ||
} | ||
const fieldsLength = schema.fieldsLength(); | ||
const context = new BufferReaderContext(bb.bytes(), dictionaries); | ||
for (const message of readMessages(bb, footer)) { | ||
let id; | ||
let field; | ||
let vector; | ||
let vectors; | ||
context.message = message; | ||
if (message.headerType() === MessageHeader.DictionaryBatch) { | ||
let batch; | ||
if (batch = message.header(new DictionaryBatch())) { | ||
context.batch = batch.data(); | ||
id = batch.id().toFloat64().toString(); | ||
field = dictionaryEncodedFields.get(id); | ||
vector = vector_1.readValueVector(field, context); | ||
if (batch.isDelta() && dictionaries.has(id)) { | ||
vector = dictionaries.get(id).concat(vector); | ||
} | ||
dictionaries.set(id, vector); | ||
} | ||
continue; | ||
} | ||
else { | ||
while (++index < fieldsLength) { | ||
vectors[index] = vector_1.readVector(schema.fields(index), batch, state, dictionaries); | ||
vectors = new Array(fieldsLength); | ||
context.batch = message.header(new RecordBatch()); | ||
for (let i = -1; ++i < fieldsLength;) { | ||
if ((field = schema.fields(i)) || (vectors[i] = null)) { | ||
vectors[i] = vector_1.readVector(field, context); | ||
} | ||
yield vectors; | ||
} | ||
yield vectors; | ||
} | ||
} | ||
exports.readBuffers = readBuffers; | ||
function readSchema(bb) { | ||
let schema, readMessages, footer = format_1.readFileFooter(bb); | ||
if (footer) { | ||
schema = footer.schema(); | ||
readMessages = format_1.readFileMessages; | ||
} | ||
else if (schema = format_1.readStreamSchema(bb)) { | ||
readMessages = format_1.readStreamMessages; | ||
} | ||
else { | ||
throw new Error('Invalid Arrow buffer'); | ||
} | ||
return { schema, footer, readMessages, dictionaryEncodedFields: readDictionaryEncodedFields(schema, new Map()) }; | ||
} | ||
function readDictionaryEncodedFields(parent, fields) { | ||
let field, encoding, id; | ||
let getField = parent instanceof Field ? parent.children : parent.fields; | ||
let getFieldCount = parent instanceof Field ? parent.childrenLength : parent.fieldsLength; | ||
for (let i = -1, n = getFieldCount.call(parent); ++i < n;) { | ||
if (field = getField.call(parent, i)) { | ||
if ((encoding = field.dictionary()) && | ||
(id = encoding.id().toFloat64().toString())) { | ||
!fields.has(id) && fields.set(id, field); | ||
} | ||
readDictionaryEncodedFields(field, fields); | ||
} | ||
} | ||
return fields; | ||
} | ||
function toByteBuffer(bytes) { | ||
@@ -77,3 +126,28 @@ let arr = bytes || new Uint8Array(0); | ||
} | ||
class BufferReaderContext { | ||
constructor(bytes, dictionaries) { | ||
this.bytes = bytes; | ||
this.dictionaries = dictionaries; | ||
} | ||
set message(m) { | ||
this.nodeIndex = 0; | ||
this.bufferIndex = 0; | ||
this.offset = m.bb.position(); | ||
this.metadataVersion = m.version(); | ||
} | ||
readNextNode() { | ||
return this.batch.nodes(this.nodeIndex++); | ||
} | ||
readNextBuffer() { | ||
const buffer = this.batch.buffers(this.bufferIndex++); | ||
// If this Arrow buffer was written before version 4, | ||
// advance the buffer's bb_pos 8 bytes to skip past | ||
// the now-removed page id field. | ||
if (this.metadataVersion < MetadataVersion[`V4`]) { | ||
buffer.bb_pos += (8 * this.bufferIndex); | ||
} | ||
return buffer; | ||
} | ||
} | ||
//# sourceMappingURL=data:application/json;charset=utf8;base64,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QUUsS0FBSyxFQUFFLFlBQVksQ0FBQyxDQUFDO1lBQ2xGLENBQUM7WUFDRCxNQUFNLE9BQU8sQ0FBQztRQUNsQixDQUFDO0lBQ0wsQ0FBQztBQUNMLENBQUM7QUFwQkQsa0NBb0JDO0FBRUQsc0JBQXNCLEtBQW9DO0lBQ3RELElBQUksR0FBRyxHQUFlLEtBQVksSUFBSSxJQUFJLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN4RCxFQUFFLENBQUMsQ0FBQyxPQUFPLEtBQUssS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDO1FBQzVCLEdBQUcsR0FBRyxJQUFJLFVBQVUsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDbkMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUM7WUFDMUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDakMsQ0FBQztRQUNELE1BQU0sQ0FBQyxJQUFJLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBQ0QsTUFBTSxDQUFDLElBQUksVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQy9CLENBQUMiLCJmaWxlIjoicmVhZGVyL2Fycm93LmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy8gTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZVxuLy8gb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlXG4vLyBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvblxuLy8gcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZVxuLy8gdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZVxuLy8gXCJMaWNlbnNlXCIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlXG4vLyB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4vL1xuLy8gICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbi8vXG4vLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsXG4vLyBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhblxuLy8gXCJBUyBJU1wiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTllcbi8vIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZVxuLy8gc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9uc1xuLy8gdW5kZXIgdGhlIExpY2Vuc2UuXG5cbmltcG9ydCB7IGZsYXRidWZmZXJzIH0gZnJvbSAnZmxhdGJ1ZmZlcnMnO1xuaW1wb3J0ICogYXMgU2NoZW1hXyBmcm9tICcuLi9mb3JtYXQvU2NoZW1hJztcbmltcG9ydCAqIGFzIE1lc3NhZ2VfIGZyb20gJy4uL2Zvcm1hdC9NZXNzYWdlJztcblxuaW1wb3J0IHsgcmVhZEZpbGUgfSBmcm9tICcuL2ZpbGUnO1xuaW1wb3J0IHsgcmVhZFN0cmVhbSB9IGZyb20gJy4vc3RyZWFtJztcbmltcG9ydCB7IHJlYWRWZWN0b3IgfSBmcm9tICcuL3ZlY3Rvcic7XG5pbXBvcnQgeyBWZWN0b3IgfSBmcm9tICcuLi92ZWN0b3IvdmVjdG9yJztcbmltcG9ydCB7IHJlYWREaWN0aW9uYXJpZXMgfSBmcm9tICcuL2RpY3Rpb25hcnknO1xuXG5pbXBvcnQgQnl0ZUJ1ZmZlciA9IGZsYXRidWZmZXJzLkJ5dGVCdWZmZXI7XG5leHBvcnQgaW1wb3J0IFNjaGVtYSA9IFNjaGVtYV8ub3JnLmFwYWNoZS5hcnJvdy5mbGF0YnVmLlNjaGVtYTtcbmV4cG9ydCBpbXBvcnQgUmVjb3JkQmF0Y2ggPSBNZXNzYWdlXy5vcmcuYXBhY2hlLmFycm93LmZsYXRidWYuUmVjb3JkQmF0Y2g7XG5leHBvcnQgdHlwZSBEaWN0aW9uYXJpZXMgPSB7IFtrOiBzdHJpbmddOiBWZWN0b3I8YW55PiB9O1xuZXhwb3J0IHR5cGUgSXRlcmF0b3JTdGF0ZSA9IHsgbm9kZUluZGV4OiBudW1iZXI7IGJ1ZmZlckluZGV4OiBudW1iZXIgfTtcblxuZXhwb3J0IGZ1bmN0aW9uKiByZWFkUmVjb3JkcyguLi5ieXRlczogQnl0ZUJ1ZmZlcltdKSB7XG4gICAgdHJ5IHtcbiAgICAgICAgeWllbGQqIHJlYWRGaWxlKC4uLmJ5dGVzKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICB5aWVsZCogcmVhZFN0cmVhbSguLi5ieXRlcyk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBBcnJvdyBidWZmZXInKTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uKiByZWFkQnVmZmVycyguLi5ieXRlczogQXJyYXk8VWludDhBcnJheSB8IEJ1ZmZlciB8IHN0cmluZz4pIHtcbiAgICBjb25zdCBkaWN0aW9uYXJpZXM6IERpY3Rpb25hcmllcyA9IHt9O1xuICAgIGNvbnN0IGJ5dGVCdWZmZXJzID0gYnl0ZXMubWFwKHRvQnl0ZUJ1ZmZlcik7XG4gICAgZm9yIChsZXQgeyBzY2hlbWEsIGJhdGNoIH0gb2YgcmVhZFJlY29yZHMoLi4uYnl0ZUJ1ZmZlcnMpKSB7XG4gICAgICAgIGxldCB2ZWN0b3JzOiBWZWN0b3I8YW55PltdID0gW107XG4gICAgICAgIGxldCBzdGF0ZSA9IHsgbm9kZUluZGV4OiAwLCBidWZmZXJJbmRleDogMCB9O1xuICAgICAgICBsZXQgaW5kZXggPSAtMSwgZmllbGRzTGVuZ3RoID0gc2NoZW1hLmZpZWxkc0xlbmd0aCgpO1xuICAgICAgICBpZiAoYmF0Y2guaWQpIHtcbiAgICAgICAgICAgIHdoaWxlICgrK2luZGV4IDwgZmllbGRzTGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgW2lkLCB2ZWN0b3JdIG9mIHJlYWREaWN0aW9uYXJpZXMoc2NoZW1hLmZpZWxkcyhpbmRleCksIGJhdGNoLCBzdGF0ZSwgZGljdGlvbmFyaWVzKSkge1xuICAgICAgICAgICAgICAgICAgICBkaWN0aW9uYXJpZXNbaWRdID0gZGljdGlvbmFyaWVzW2lkXSAmJiBkaWN0aW9uYXJpZXNbaWRdLmNvbmNhdCh2ZWN0b3IpIHx8IHZlY3RvcjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB3aGlsZSAoKytpbmRleCA8IGZpZWxkc0xlbmd0aCkge1xuICAgICAgICAgICAgICAgIHZlY3RvcnNbaW5kZXhdID0gcmVhZFZlY3RvcihzY2hlbWEuZmllbGRzKGluZGV4KSwgYmF0Y2gsIHN0YXRlLCBkaWN0aW9uYXJpZXMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgeWllbGQgdmVjdG9ycztcbiAgICAgICAgfVxuICAgIH1cbn1cblxuZnVuY3Rpb24gdG9CeXRlQnVmZmVyKGJ5dGVzPzogVWludDhBcnJheSB8IEJ1ZmZlciB8IHN0cmluZykge1xuICAgIGxldCBhcnI6IFVpbnQ4QXJyYXkgPSBieXRlcyBhcyBhbnkgfHwgbmV3IFVpbnQ4QXJyYXkoMCk7XG4gICAgaWYgKHR5cGVvZiBieXRlcyA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgYXJyID0gbmV3IFVpbnQ4QXJyYXkoYnl0ZXMubGVuZ3RoKTtcbiAgICAgICAgZm9yIChsZXQgaSA9IC0xLCBuID0gYnl0ZXMubGVuZ3RoOyArK2kgPCBuOykge1xuICAgICAgICAgICAgYXJyW2ldID0gYnl0ZXMuY2hhckNvZGVBdChpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV3IEJ5dGVCdWZmZXIoYXJyKTtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBCeXRlQnVmZmVyKGFycik7XG59XG4iXX0= | ||
//# sourceMappingURL=data:application/json;charset=utf8;base64,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QyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUUsQ0FBQztJQUMvQyxDQUFDO0lBQ00sY0FBYztRQUNqQixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUUsQ0FBQztRQUN2RCxxREFBcUQ7UUFDckQsbURBQW1EO1FBQ25ELGlDQUFpQztRQUNqQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsZUFBZSxHQUFHLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDL0MsTUFBTSxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDNUMsQ0FBQztRQUNELE1BQU0sQ0FBQyxNQUFNLENBQUM7SUFDbEIsQ0FBQztDQUNKIiwiZmlsZSI6InJlYWRlci9hcnJvdy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8vIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmVcbi8vIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZVxuLy8gZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb25cbi8vIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGVcbi8vIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGVcbi8vIFwiTGljZW5zZVwiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZVxuLy8gd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuLy9cbi8vICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4vL1xuLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLFxuLy8gc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW5cbi8vIFwiQVMgSVNcIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZXG4vLyBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGVcbi8vIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnNcbi8vIHVuZGVyIHRoZSBMaWNlbnNlLlxuXG5pbXBvcnQgeyBWZWN0b3IgfSBmcm9tICcuLi92ZWN0b3IvdmVjdG9yJztcbmltcG9ydCB7IGZsYXRidWZmZXJzIH0gZnJvbSAnZmxhdGJ1ZmZlcnMnO1xuaW1wb3J0IHsgcmVhZFZlY3RvciwgcmVhZFZhbHVlVmVjdG9yIH0gZnJvbSAnLi92ZWN0b3InO1xuaW1wb3J0IHtcbiAgICByZWFkRmlsZUZvb3RlciwgcmVhZEZpbGVNZXNzYWdlcyxcbiAgICByZWFkU3RyZWFtU2NoZW1hLCByZWFkU3RyZWFtTWVzc2FnZXNcbn0gZnJvbSAnLi9mb3JtYXQnO1xuXG5pbXBvcnQgKiBhcyBGaWxlXyBmcm9tICcuLi9mb3JtYXQvRmlsZSc7XG5pbXBvcnQgKiBhcyBTY2hlbWFfIGZyb20gJy4uL2Zvcm1hdC9TY2hlbWEnO1xuaW1wb3J0ICogYXMgTWVzc2FnZV8gZnJvbSAnLi4vZm9ybWF0L01lc3NhZ2UnO1xuXG5pbXBvcnQgQnl0ZUJ1ZmZlciA9IGZsYXRidWZmZXJzLkJ5dGVCdWZmZXI7XG5pbXBvcnQgRm9vdGVyID0gRmlsZV8ub3JnLmFwYWNoZS5hcnJvdy5mbGF0YnVmLkZvb3RlcjtcbmltcG9ydCBGaWVsZCA9IFNjaGVtYV8ub3JnLmFwYWNoZS5hcnJvdy5mbGF0YnVmLkZpZWxkO1xuaW1wb3J0IFNjaGVtYSA9IFNjaGVtYV8ub3JnLmFwYWNoZS5hcnJvdy5mbGF0YnVmLlNjaGVtYTtcbmltcG9ydCBNZXNzYWdlID0gTWVzc2FnZV8ub3JnLmFwYWNoZS5hcnJvdy5mbGF0YnVmLk1lc3NhZ2U7XG5pbXBvcnQgQXJyb3dCdWZmZXIgPSBTY2hlbWFfLm9yZy5hcGFjaGUuYXJyb3cuZmxhdGJ1Zi5CdWZmZXI7XG5pbXBvcnQgRmllbGROb2RlID0gTWVzc2FnZV8ub3JnLmFwYWNoZS5hcnJvdy5mbGF0YnVmLkZpZWxkTm9kZTtcbmltcG9ydCBSZWNvcmRCYXRjaCA9IE1lc3NhZ2VfLm9yZy5hcGFjaGUuYXJyb3cuZmxhdGJ1Zi5SZWNvcmRCYXRjaDtcbmltcG9ydCBNZXNzYWdlSGVhZGVyID0gTWVzc2FnZV8ub3JnLmFwYWNoZS5hcnJvdy5mbGF0YnVmLk1lc3NhZ2VIZWFkZXI7XG5pbXBvcnQgTWV0YWRhdGFWZXJzaW9uID0gU2NoZW1hXy5vcmcuYXBhY2hlLmFycm93LmZsYXRidWYuTWV0YWRhdGFWZXJzaW9uO1xuaW1wb3J0IERpY3Rpb25hcnlCYXRjaCA9IE1lc3NhZ2VfLm9yZy5hcGFjaGUuYXJyb3cuZmxhdGJ1Zi5EaWN0aW9uYXJ5QmF0Y2g7XG5pbXBvcnQgRGljdGlvbmFyeUVuY29kaW5nID0gU2NoZW1hXy5vcmcuYXBhY2hlLmFycm93LmZsYXRidWYuRGljdGlvbmFyeUVuY29kaW5nO1xuXG5leHBvcnQgdHlwZSBBcnJvd1JlYWRlckNvbnRleHQgPSB7XG4gICAgc2NoZW1hPzogU2NoZW1hO1xuICAgIGZvb3Rlcj86IEZvb3RlciB8IG51bGw7XG4gICAgZGljdGlvbmFyaWVzOiBNYXA8c3RyaW5nLCBWZWN0b3I+O1xuICAgIGRpY3Rpb25hcnlFbmNvZGVkRmllbGRzOiBNYXA8c3RyaW5nLCBGaWVsZD47XG4gICAgcmVhZE1lc3NhZ2VzOiAoYmI6IEJ5dGVCdWZmZXIsIGZvb3RlcjogRm9vdGVyKSA9PiBJdGVyYWJsZTxNZXNzYWdlPjtcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgVmVjdG9yUmVhZGVyQ29udGV4dCB7XG4gICAgb2Zmc2V0OiBudW1iZXI7XG4gICAgYnl0ZXM6IFVpbnQ4QXJyYXk7XG4gICAgYmF0Y2g6IFJlY29yZEJhdGNoO1xuICAgIGRpY3Rpb25hcmllczogTWFwPHN0cmluZywgVmVjdG9yPjtcbiAgICByZWFkTmV4dE5vZGUoKTogRmllbGROb2RlO1xuICAgIHJlYWROZXh0QnVmZmVyKCk6IEFycm93QnVmZmVyO1xufVxuXG5leHBvcnQgZnVuY3Rpb24qIHJlYWRWZWN0b3JzKGJ1ZmZlcnM6IEl0ZXJhYmxlPFVpbnQ4QXJyYXkgfCBCdWZmZXIgfCBzdHJpbmc+LCBjb250ZXh0PzogQXJyb3dSZWFkZXJDb250ZXh0KSB7XG4gICAgY29uc3QgY29udGV4dF8gPSBjb250ZXh0IHx8IHt9IGFzIEFycm93UmVhZGVyQ29udGV4dDtcbiAgICBmb3IgKGNvbnN0IGJ1ZmZlciBvZiBidWZmZXJzKSB7XG4gICAgICAgIHlpZWxkKiByZWFkQnVmZmVyKHRvQnl0ZUJ1ZmZlcihidWZmZXIpLCBjb250ZXh0Xyk7XG4gICAgfVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24qIHJlYWRWZWN0b3JzQXN5bmMoYnVmZmVyczogQXN5bmNJdGVyYWJsZTxVaW50OEFycmF5IHwgQnVmZmVyIHwgc3RyaW5nPiwgY29udGV4dD86IEFycm93UmVhZGVyQ29udGV4dCkge1xuICAgIGNvbnN0IGNvbnRleHRfID0gY29udGV4dCB8fCB7fSBhcyBBcnJvd1JlYWRlckNvbnRleHQ7XG4gICAgZm9yIGF3YWl0IChjb25zdCBidWZmZXIgb2YgYnVmZmVycykge1xuICAgICAgICB5aWVsZCogcmVhZEJ1ZmZlcih0b0J5dGVCdWZmZXIoYnVmZmVyKSwgY29udGV4dF8pO1xuICAgIH1cbn1cblxuZnVuY3Rpb24qIHJlYWRCdWZmZXIoYmI6IEJ5dGVCdWZmZXIsIHJlYWRlckNvbnRleHQ6IEFycm93UmVhZGVyQ29udGV4dCkge1xuXG4gICAgbGV0IHsgc2NoZW1hLCBmb290ZXIsIHJlYWRNZXNzYWdlcywgZGljdGlvbmFyeUVuY29kZWRGaWVsZHMsIGRpY3Rpb25hcmllcyB9ID0gcmVhZGVyQ29udGV4dDtcblxuICAgIGlmICghc2NoZW1hKSB7XG4gICAgICAgICh7IHNjaGVtYSwgZm9vdGVyLCByZWFkTWVzc2FnZXMsIGRpY3Rpb25hcnlFbmNvZGVkRmllbGRzIH0gPSByZWFkU2NoZW1hKGJiKSk7XG4gICAgICAgIHJlYWRlckNvbnRleHQuc2NoZW1hID0gc2NoZW1hO1xuICAgICAgICByZWFkZXJDb250ZXh0LnJlYWRNZXNzYWdlcyA9IHJlYWRNZXNzYWdlcztcbiAgICAgICAgcmVhZGVyQ29udGV4dC5kaWN0aW9uYXJ5RW5jb2RlZEZpZWxkcyA9IGRpY3Rpb25hcnlFbmNvZGVkRmllbGRzO1xuICAgICAgICByZWFkZXJDb250ZXh0LmRpY3Rpb25hcmllcyA9IGRpY3Rpb25hcmllcyA9IG5ldyBNYXA8c3RyaW5nLCBWZWN0b3I+KCk7XG4gICAgfVxuXG4gICAgY29uc3QgZmllbGRzTGVuZ3RoID0gc2NoZW1hLmZpZWxkc0xlbmd0aCgpO1xuICAgIGNvbnN0IGNvbnRleHQgPSBuZXcgQnVmZmVyUmVhZGVyQ29udGV4dChiYi5ieXRlcygpLCBkaWN0aW9uYXJpZXMpO1xuXG4gICAgZm9yIChjb25zdCBtZXNzYWdlIG9mIHJlYWRNZXNzYWdlcyhiYiwgZm9vdGVyISkpIHtcblxuICAgICAgICBsZXQgaWQ6IHN0cmluZztcbiAgICAgICAgbGV0IGZpZWxkOiBGaWVsZDtcbiAgICAgICAgbGV0IHZlY3RvcjogVmVjdG9yO1xuICAgICAgICBsZXQgdmVjdG9yczogQXJyYXk8VmVjdG9yPjtcblxuICAgICAgICBjb250ZXh0Lm1lc3NhZ2UgPSBtZXNzYWdlO1xuXG4gICAgICAgIGlmIChtZXNzYWdlLmhlYWRlclR5cGUoKSA9PT0gTWVzc2FnZUhlYWRlci5EaWN0aW9uYXJ5QmF0Y2gpIHtcbiAgICAgICAgICAgIGxldCBiYXRjaDogRGljdGlvbmFyeUJhdGNoO1xuICAgICAgICAgICAgaWYgKGJhdGNoID0gbWVzc2FnZS5oZWFkZXIobmV3IERpY3Rpb25hcnlCYXRjaCgpKSEpIHtcbiAgICAgICAgICAgICAgICBjb250ZXh0LmJhdGNoID0gYmF0Y2guZGF0YSgpITtcbiAgICAgICAgICAgICAgICBpZCA9IGJhdGNoLmlkKCkudG9GbG9hdDY0KCkudG9TdHJpbmcoKTtcbiAgICAgICAgICAgICAgICBmaWVsZCA9IGRpY3Rpb25hcnlFbmNvZGVkRmllbGRzLmdldChpZCkhO1xuICAgICAgICAgICAgICAgIHZlY3RvciA9IHJlYWRWYWx1ZVZlY3RvcihmaWVsZCwgY29udGV4dCk7XG4gICAgICAgICAgICAgICAgaWYgKGJhdGNoLmlzRGVsdGEoKSAmJiBkaWN0aW9uYXJpZXMuaGFzKGlkKSkge1xuICAgICAgICAgICAgICAgICAgICB2ZWN0b3IgPSBkaWN0aW9uYXJpZXMuZ2V0KGlkKSEuY29uY2F0KHZlY3Rvcik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGRpY3Rpb25hcmllcy5zZXQoaWQsIHZlY3Rvcik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZlY3RvcnMgPSBuZXcgQXJyYXk8VmVjdG9yPihmaWVsZHNMZW5ndGgpO1xuICAgICAgICBjb250ZXh0LmJhdGNoID0gbWVzc2FnZS5oZWFkZXIobmV3IFJlY29yZEJhdGNoKCkpITtcblxuICAgICAgICBmb3IgKGxldCBpID0gLTE7ICsraSA8IGZpZWxkc0xlbmd0aDspIHtcbiAgICAgICAgICAgIGlmICgoZmllbGQgPSBzY2hlbWEuZmllbGRzKGkpISkgfHwgKHZlY3RvcnNbaV0gPSBudWxsIGFzIGFueSkpIHtcbiAgICAgICAgICAgICAgICB2ZWN0b3JzW2ldID0gcmVhZFZlY3RvcihmaWVsZCwgY29udGV4dCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB5aWVsZCB2ZWN0b3JzO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gcmVhZFNjaGVtYShiYjogQnl0ZUJ1ZmZlcikge1xuICAgIGxldCBzY2hlbWE6IFNjaGVtYSwgcmVhZE1lc3NhZ2VzLCBmb290ZXIgPSByZWFkRmlsZUZvb3RlcihiYik7XG4gICAgaWYgKGZvb3Rlcikge1xuICAgICAgICBzY2hlbWEgPSBmb290ZXIuc2NoZW1hKCkhO1xuICAgICAgICByZWFkTWVzc2FnZXMgPSByZWFkRmlsZU1lc3NhZ2VzO1xuICAgIH0gZWxzZSBpZiAoc2NoZW1hID0gcmVhZFN0cmVhbVNjaGVtYShiYikhKSB7XG4gICAgICAgIHJlYWRNZXNzYWdlcyA9IHJlYWRTdHJlYW1NZXNzYWdlcztcbiAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgQXJyb3cgYnVmZmVyJyk7XG4gICAgfVxuICAgIHJldHVybiB7IHNjaGVtYSwgZm9vdGVyLCByZWFkTWVzc2FnZXMsIGRpY3Rpb25hcnlFbmNvZGVkRmllbGRzOiByZWFkRGljdGlvbmFyeUVuY29kZWRGaWVsZHMoc2NoZW1hLCBuZXcgTWFwPHN0cmluZywgRmllbGQ+KCkpIH07XG59XG5cbmZ1bmN0aW9uIHJlYWREaWN0aW9uYXJ5RW5jb2RlZEZpZWxkcyhwYXJlbnQ6IFNjaGVtYSB8IEZpZWxkLCBmaWVsZHM6IE1hcDxzdHJpbmcsIEZpZWxkPikge1xuICAgIGxldCBmaWVsZDogRmllbGQsIGVuY29kaW5nOiBEaWN0aW9uYXJ5RW5jb2RpbmcsIGlkOiBzdHJpbmc7XG4gICAgbGV0IGdldEZpZWxkID0gcGFyZW50IGluc3RhbmNlb2YgRmllbGQgPyBwYXJlbnQuY2hpbGRyZW4gOiBwYXJlbnQuZmllbGRzO1xuICAgIGxldCBnZXRGaWVsZENvdW50ID0gcGFyZW50IGluc3RhbmNlb2YgRmllbGQgPyBwYXJlbnQuY2hpbGRyZW5MZW5ndGggOiBwYXJlbnQuZmllbGRzTGVuZ3RoO1xuICAgIGZvciAobGV0IGkgPSAtMSwgbiA9IGdldEZpZWxkQ291bnQuY2FsbChwYXJlbnQpOyArK2kgPCBuOykge1xuICAgICAgICBpZiAoZmllbGQgPSBnZXRGaWVsZC5jYWxsKHBhcmVudCwgaSkhKSB7XG4gICAgICAgICAgICBpZiAoKGVuY29kaW5nID0gZmllbGQuZGljdGlvbmFyeSgpISkgJiZcbiAgICAgICAgICAgICAgICAoaWQgPSBlbmNvZGluZy5pZCgpLnRvRmxvYXQ2NCgpLnRvU3RyaW5nKCkpKSB7XG4gICAgICAgICAgICAgICAgIWZpZWxkcy5oYXMoaWQpICYmIGZpZWxkcy5zZXQoaWQsIGZpZWxkKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJlYWREaWN0aW9uYXJ5RW5jb2RlZEZpZWxkcyhmaWVsZCwgZmllbGRzKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZmllbGRzO1xufVxuXG5mdW5jdGlvbiB0b0J5dGVCdWZmZXIoYnl0ZXM/OiBVaW50OEFycmF5IHwgQnVmZmVyIHwgc3RyaW5nKSB7XG4gICAgbGV0IGFycjogVWludDhBcnJheSA9IGJ5dGVzIGFzIGFueSB8fCBuZXcgVWludDhBcnJheSgwKTtcbiAgICBpZiAodHlwZW9mIGJ5dGVzID09PSAnc3RyaW5nJykge1xuICAgICAgICBhcnIgPSBuZXcgVWludDhBcnJheShieXRlcy5sZW5ndGgpO1xuICAgICAgICBmb3IgKGxldCBpID0gLTEsIG4gPSBieXRlcy5sZW5ndGg7ICsraSA8IG47KSB7XG4gICAgICAgICAgICBhcnJbaV0gPSBieXRlcy5jaGFyQ29kZUF0KGkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuZXcgQnl0ZUJ1ZmZlcihhcnIpO1xuICAgIH1cbiAgICByZXR1cm4gbmV3IEJ5dGVCdWZmZXIoYXJyKTtcbn1cblxuY2xhc3MgQnVmZmVyUmVhZGVyQ29udGV4dCBpbXBsZW1lbnRzIFZlY3RvclJlYWRlckNvbnRleHQge1xuICAgIHB1YmxpYyBvZmZzZXQ6IG51bWJlcjtcbiAgICBwdWJsaWMgYmF0Y2g6IFJlY29yZEJhdGNoO1xuICAgIHByaXZhdGUgbm9kZUluZGV4OiBudW1iZXI7XG4gICAgcHJpdmF0ZSBidWZmZXJJbmRleDogbnVtYmVyO1xuICAgIHByaXZhdGUgbWV0YWRhdGFWZXJzaW9uOiBNZXRhZGF0YVZlcnNpb247XG4gICAgY29uc3RydWN0b3IocHVibGljIGJ5dGVzOiBVaW50OEFycmF5LFxuICAgICAgICAgICAgICAgIHB1YmxpYyBkaWN0aW9uYXJpZXM6IE1hcDxzdHJpbmcsIFZlY3Rvcj4pIHtcbiAgICB9XG4gICAgc2V0IG1lc3NhZ2UobTogTWVzc2FnZSkge1xuICAgICAgICB0aGlzLm5vZGVJbmRleCA9IDA7XG4gICAgICAgIHRoaXMuYnVmZmVySW5kZXggPSAwO1xuICAgICAgICB0aGlzLm9mZnNldCA9IG0uYmIucG9zaXRpb24oKTtcbiAgICAgICAgdGhpcy5tZXRhZGF0YVZlcnNpb24gPSBtLnZlcnNpb24oKTtcbiAgICB9XG4gICAgcHVibGljIHJlYWROZXh0Tm9kZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYmF0Y2gubm9kZXModGhpcy5ub2RlSW5kZXgrKykhO1xuICAgIH1cbiAgICBwdWJsaWMgcmVhZE5leHRCdWZmZXIoKSB7XG4gICAgICAgIGNvbnN0IGJ1ZmZlciA9IHRoaXMuYmF0Y2guYnVmZmVycyh0aGlzLmJ1ZmZlckluZGV4KyspITtcbiAgICAgICAgLy8gSWYgdGhpcyBBcnJvdyBidWZmZXIgd2FzIHdyaXR0ZW4gYmVmb3JlIHZlcnNpb24gNCxcbiAgICAgICAgLy8gYWR2YW5jZSB0aGUgYnVmZmVyJ3MgYmJfcG9zIDggYnl0ZXMgdG8gc2tpcCBwYXN0XG4gICAgICAgIC8vIHRoZSBub3ctcmVtb3ZlZCBwYWdlIGlkIGZpZWxkLlxuICAgICAgICBpZiAodGhpcy5tZXRhZGF0YVZlcnNpb24gPCBNZXRhZGF0YVZlcnNpb25bYFY0YF0pIHtcbiAgICAgICAgICAgIGJ1ZmZlci5iYl9wb3MgKz0gKDggKiB0aGlzLmJ1ZmZlckluZGV4KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYnVmZmVyO1xuICAgIH1cbn0iXX0= |
@@ -1,5 +0,21 @@ | ||
import { MessageBatch } from './message'; | ||
import { VectorReaderContext } from './arrow'; | ||
import * as Schema_ from '../format/Schema'; | ||
import { IteratorState, Dictionaries } from './arrow'; | ||
import { Vector, BoolVector, BinaryVector, DictionaryVector, Int8Vector, Int16Vector, Int32Vector, Uint8Vector, Uint16Vector, Uint32Vector, Utf8Vector, ListVector, FixedSizeListVector, StructVector, Float16Vector, Float32Vector, Float64Vector, DecimalVector, Date32Vector, Time32Vector, Time64Vector, TimestampVector } from '../vector/arrow'; | ||
import Field = Schema_.org.apache.arrow.flatbuf.Field; | ||
export declare function readVector(field: Field, batch: MessageBatch, state: IteratorState, dictionaries: Dictionaries): any; | ||
export declare function readVector(field: Field, state: VectorReaderContext): Vector<any>; | ||
export declare function readDictionaryVector(field: Field, state: VectorReaderContext): DictionaryVector | null; | ||
export declare function readValueVector(field: Field, state: VectorReaderContext): Vector; | ||
export declare function readNullVector(): Vector<any>; | ||
export declare function readBoolVector(field: Field, state: VectorReaderContext): BoolVector; | ||
export declare function readDateVector(field: Field, state: VectorReaderContext): Date32Vector; | ||
export declare function readTimeVector(field: Field, state: VectorReaderContext): Time32Vector | Time64Vector; | ||
export declare function readTimestampVector(field: Field, state: VectorReaderContext): TimestampVector; | ||
export declare function readListVector(field: Field, state: VectorReaderContext): ListVector; | ||
export declare function readStructVector(field: Field, state: VectorReaderContext): StructVector; | ||
export declare function readBinaryVector(field: Field, state: VectorReaderContext): BinaryVector; | ||
export declare function readDecimalVector(field: Field, state: VectorReaderContext): DecimalVector; | ||
export declare function readUtf8Vector(field: Field, state: VectorReaderContext): Utf8Vector; | ||
export declare function readFixedSizeListVector(field: Field, state: VectorReaderContext): FixedSizeListVector; | ||
export declare function readFixedSizeBinaryVector(field: Field, state: VectorReaderContext): FixedSizeListVector; | ||
export declare function readFloatVector(field: Field, state: VectorReaderContext): Float16Vector | Float32Vector | Float64Vector; | ||
export declare function readIntVector(field: Field, state: VectorReaderContext): Int8Vector | Int16Vector | Int32Vector | Uint8Vector | Uint16Vector | Uint32Vector; |
@@ -0,1 +1,2 @@ | ||
"use strict"; | ||
// Licensed to the Apache Software Foundation (ASF) under one | ||
@@ -18,180 +19,231 @@ // or more contributor license agreements. See the NOTICE file | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
const flatbuffers_1 = require("flatbuffers"); | ||
const Schema_ = require("../format/Schema"); | ||
const struct_1 = require("../vector/struct"); | ||
const dictionary_1 = require("../vector/dictionary"); | ||
const list_1 = require("../vector/list"); | ||
const typed_1 = require("../vector/typed"); | ||
const arrow_1 = require("../vector/arrow"); | ||
var Int = Schema_.org.apache.arrow.flatbuf.Int; | ||
var Date = Schema_.org.apache.arrow.flatbuf.Date; | ||
var Time = Schema_.org.apache.arrow.flatbuf.Time; | ||
var Type = Schema_.org.apache.arrow.flatbuf.Type; | ||
var Decimal = Schema_.org.apache.arrow.flatbuf.Decimal; | ||
var DateUnit = Schema_.org.apache.arrow.flatbuf.DateUnit; | ||
var TimeUnit = Schema_.org.apache.arrow.flatbuf.TimeUnit; | ||
// import Interval = Schema_.org.apache.arrow.flatbuf.Interval; | ||
var Timestamp = Schema_.org.apache.arrow.flatbuf.Timestamp; | ||
// import IntervalUnit = Schema_.org.apache.arrow.flatbuf.IntervalUnit; | ||
var Precision = Schema_.org.apache.arrow.flatbuf.Precision; | ||
var VectorType = Schema_.org.apache.arrow.flatbuf.VectorType; | ||
var VectorLayout = Schema_.org.apache.arrow.flatbuf.VectorLayout; | ||
var FixedSizeList = Schema_.org.apache.arrow.flatbuf.FixedSizeList; | ||
var FloatingPoint = Schema_.org.apache.arrow.flatbuf.FloatingPoint; | ||
function readVector(field, batch, state, dictionaries) { | ||
return readDictionaryVector(field, batch, state, dictionaries) || | ||
readTypedVector(field, batch, state, dictionaries); | ||
var FixedSizeBinary = Schema_.org.apache.arrow.flatbuf.FixedSizeBinary; | ||
function readVector(field, state) { | ||
return readDictionaryVector(field, state) || readValueVector(field, state); | ||
} | ||
exports.readVector = readVector; | ||
function readTypedVector(field, batch, iterator, dictionaries) { | ||
let typeType = field.typeType(), readTyped = typedVectorReaders[typeType]; | ||
if (!readTyped) { | ||
throw new Error('Unrecognized vector name "' + Type[typeType] + '" type "' + typeType + '"'); | ||
/* a dictionary index defaults to signed 32 bit int if unspecified */ | ||
const defaultDictionaryIndexType = { bitWidth: () => 32, isSigned: () => true }; | ||
const intVectors = [ | ||
[/* unsigned */ [arrow_1.Uint8Vector, Uint8Array], /* signed */ [arrow_1.Int8Vector, Int8Array]], | ||
[/* unsigned */ [arrow_1.Uint16Vector, Uint16Array], /* signed */ [arrow_1.Int16Vector, Int16Array]], | ||
[/* unsigned */ [arrow_1.Uint32Vector, Uint32Array], /* signed */ [arrow_1.Int32Vector, Int32Array]], , | ||
[/* unsigned */ [arrow_1.Uint64Vector, Uint32Array], /* signed */ [arrow_1.Int64Vector, Int32Array]] | ||
]; | ||
function readDictionaryVector(field, state) { | ||
const encoding = field.dictionary(); | ||
if (encoding) { | ||
const type = encoding.indexType() || defaultDictionaryIndexType; | ||
const data = state.dictionaries.get(encoding.id().toFloat64().toString()); | ||
const [IntVector, IntArray] = intVectors[type.bitWidth() >>> 4][+type.isSigned()]; | ||
const { fieldNode, validity, data: keys } = readNumericBuffers(field, state, IntArray); | ||
return new arrow_1.DictionaryVector({ | ||
validity, data, field, fieldNode, | ||
keys: new IntVector({ field, fieldNode, data: keys }) | ||
}); | ||
} | ||
return readTyped(field, batch, iterator, dictionaries); | ||
return null; | ||
} | ||
function readDictionaryVector(field, batch, iterator, dictionaries) { | ||
let encoding; | ||
if (dictionaries && (encoding = field.dictionary())) { | ||
let id = encoding.id().toFloat64().toString(); | ||
let fieldType = encoding.indexType() || | ||
/* a dictionary index defaults to signed 32 bit int if unspecified */ | ||
{ bitWidth: () => 32, isSigned: () => true }; | ||
let indexField = createSyntheticDictionaryIndexField(field, fieldType); | ||
let index = readIntVector(indexField, batch, iterator, null, fieldType); | ||
return dictionary_1.DictionaryVector.create(field, index.length, index, dictionaries[id]); | ||
exports.readDictionaryVector = readDictionaryVector; | ||
function readValueVector(field, state) { | ||
switch (field.typeType()) { | ||
case Type.NONE: return readNullVector(); | ||
case Type.Null: return readNullVector(); | ||
// case Type.Map: return readMapVector(field, state); | ||
case Type.Int: return readIntVector(field, state); | ||
case Type.Bool: return readBoolVector(field, state); | ||
case Type.Date: return readDateVector(field, state); | ||
case Type.List: return readListVector(field, state); | ||
case Type.Utf8: return readUtf8Vector(field, state); | ||
case Type.Time: return readTimeVector(field, state); | ||
// case Type.Union: return readUnionVector(field, state); | ||
case Type.Binary: return readBinaryVector(field, state); | ||
case Type.Decimal: return readDecimalVector(field, state); | ||
case Type.Struct_: return readStructVector(field, state); | ||
case Type.FloatingPoint: return readFloatVector(field, state); | ||
case Type.Timestamp: return readTimestampVector(field, state); | ||
case Type.FixedSizeList: return readFixedSizeListVector(field, state); | ||
case Type.FixedSizeBinary: return readFixedSizeBinaryVector(field, state); | ||
} | ||
throw new Error(`Unrecognized Vector { name: ${Type[field.typeType()]}, type: ${field.typeType()} }`); | ||
} | ||
const IntViews = [Int8Array, Int16Array, Int32Array, Int32Array]; | ||
const Int32Views = [Int32Array, Int32Array, Int32Array, Int32Array]; | ||
const UintViews = [Uint8Array, Uint16Array, Uint32Array, Uint32Array]; | ||
const Uint8Views = [Uint8Array, Uint8Array, Uint8Array, Uint8Array]; | ||
const Uint32Views = [Uint32Array, Uint32Array, Uint32Array, Uint32Array]; | ||
const FloatViews = [Int8Array, Int16Array, Float32Array, Float64Array]; | ||
const createIntDataViews = createDataView.bind(null, IntViews, null); | ||
const createUintDataViews = createDataView.bind(null, UintViews, null); | ||
const createDateDataViews = createDataView.bind(null, Uint32Views, null); | ||
const createFloatDataViews = createDataView.bind(null, FloatViews, null); | ||
const createNestedDataViews = createDataView.bind(null, Uint32Views, null); | ||
const createValidityDataViews = createDataView.bind(null, Uint8Views, null); | ||
const createUtf8DataViews = createDataView.bind(null, Uint8Views, Int32Views); | ||
const floatVectors = { | ||
[Precision.SINGLE]: typed_1.Float32Vector, | ||
[Precision.DOUBLE]: typed_1.Float64Vector | ||
}; | ||
const intVectors = [ | ||
[/* unsigned */ typed_1.Uint8Vector, /* signed */ typed_1.Int8Vector], | ||
[/* unsigned */ typed_1.Uint16Vector, /* signed */ typed_1.Int16Vector], | ||
[/* unsigned */ typed_1.Uint32Vector, /* signed */ typed_1.Int32Vector], | ||
[/* unsigned */ typed_1.Uint64Vector, /* signed */ typed_1.Int64Vector] | ||
]; | ||
function readIntVector(field, batch, iterator, dictionaries, fieldType) { | ||
let type = (fieldType || field.type(new Int())); | ||
return type.isSigned() ? | ||
read_IntVector(field, batch, iterator, dictionaries, type) : | ||
readUintVector(field, batch, iterator, dictionaries, type); | ||
exports.readValueVector = readValueVector; | ||
function readNullVector() { | ||
return new arrow_1.Vector(); | ||
} | ||
const read_IntVector = readVectorLayout(createIntDataViews, createIntVector); | ||
const readUintVector = readVectorLayout(createUintDataViews, createIntVector); | ||
function createIntVector(field, length, data, validity, offsets, fieldType, batch, iterator, dictionaries) { | ||
let type = fieldType || field.type(new Int()), bitWidth = type.bitWidth(); | ||
let Vector = valueForBitWidth(bitWidth, intVectors)[+type.isSigned()]; | ||
return Vector.create(field, length, validity, data || offsets); | ||
// ---------------------- so this is kinda strange 👆: | ||
// The dictionary encoded vectors I generated from sample mapd-core queries have the indicies' data buffers | ||
// tagged as VectorType.OFFSET (0) in the field metadata. The current TS impl ignores buffers' layout type, | ||
// and assumes the second buffer is the data for a NullableIntVector. Since we've been stricter about enforcing | ||
// the Arrow spec while parsing, the IntVector's data buffer reads empty in this case. If so, fallback to using | ||
// the offsets buffer as the data, since IntVectors don't have offsets. | ||
exports.readNullVector = readNullVector; | ||
function readBoolVector(field, state) { | ||
return new arrow_1.BoolVector(readNumericBuffers(field, state, Uint8Array)); | ||
} | ||
const readFloatVector = readVectorLayout(createFloatDataViews, (field, length, data, validity, offsets, fieldType, batch, iterator, dictionaries) => { | ||
let type = field.type(new FloatingPoint()); | ||
let Vector = floatVectors[type.precision()]; | ||
return Vector.create(field, length, validity, data); | ||
}); | ||
const readDateVector = readVectorLayout(createDateDataViews, (field, length, data, validity, offsets, fieldType, batch, iterator, dictionaries) => { | ||
return typed_1.DateVector.create(field, length, validity, data); | ||
}); | ||
const readUtf8Vector = readVectorLayout(createUtf8DataViews, (field, length, data, validity, offsets, fieldType, batch, iterator, dictionaries) => { | ||
let offsetsAdjusted = new Int32Array(offsets.buffer, offsets.byteOffset, length + 1); | ||
return list_1.Utf8Vector.create(field, length, validity, typed_1.Uint8Vector.create(field, data.length, null, data), typed_1.IndexVector.create(field, length + 1, null, offsetsAdjusted)); | ||
}); | ||
const readListVector = readVectorLayout(createNestedDataViews, (field, length, data, validity, offsets, fieldType, batch, iterator, dictionaries) => { | ||
let offsetsAdjusted = new Int32Array(offsets.buffer, offsets.byteOffset, length + 1); | ||
return list_1.ListVector.create(field, length, validity, readVector(field.children(0), batch, iterator, dictionaries), typed_1.IndexVector.create(field, length + 1, null, offsetsAdjusted)); | ||
}); | ||
const readFixedSizeListVector = readVectorLayout(createNestedDataViews, (field, length, data, validity, offsets, fieldType, batch, iterator, dictionaries) => { | ||
let size = field.type(new FixedSizeList()).listSize(); | ||
return list_1.FixedSizeListVector.create(field, length, size, validity, readVector(field.children(0), batch, iterator, dictionaries)); | ||
}); | ||
const readStructVector = readVectorLayout(createNestedDataViews, (field, length, data, validity, offsets, fieldType, batch, iterator, dictionaries) => { | ||
let vectors = []; | ||
for (let i = -1, n = field.childrenLength(); ++i < n;) { | ||
vectors[i] = readVector(field.children(i), batch, iterator, dictionaries); | ||
exports.readBoolVector = readBoolVector; | ||
function readDateVector(field, state) { | ||
const type = field.type(new Date()); | ||
switch (type.unit()) { | ||
case DateUnit.DAY: return new arrow_1.Date32Vector({ ...readNumericBuffers(field, state, Int32Array), unit: DateUnit[type.unit()] }); | ||
case DateUnit.MILLISECOND: return new arrow_1.Date64Vector({ ...readNumericBuffers(field, state, Int32Array), unit: DateUnit[type.unit()] }); | ||
} | ||
return struct_1.StructVector.create(field, length, validity, ...vectors); | ||
}); | ||
const typedVectorReaders = { | ||
[Type.Int]: readIntVector, | ||
[Type.Date]: readDateVector, | ||
[Type.List]: readListVector, | ||
[Type.Utf8]: readUtf8Vector, | ||
[Type.Struct_]: readStructVector, | ||
[Type.FloatingPoint]: readFloatVector, | ||
[Type.FixedSizeList]: readFixedSizeListVector, | ||
}; | ||
function readVectorLayout(createDataView, createVector) { | ||
return function readLayout(field, chunk, iterator, dictionaries, integerFieldType) { | ||
let batch = chunk.data; | ||
let layoutLength = field.layoutLength(); | ||
let node = batch.nodes(iterator.nodeIndex++); | ||
let data, offsets, validity; | ||
let type, bitWidth, bufferLength, nodeLength = node.length().low; | ||
for (let i = -1; ++i < layoutLength;) { | ||
let layout = field.layout(i); | ||
let buffer = batch.buffers(iterator.bufferIndex++); | ||
if ((type = layout.type()) === VectorType.TYPE || | ||
(bufferLength = buffer.length().low) <= 0 || | ||
(bitWidth = layout.bitWidth()) <= 0) { | ||
continue; | ||
} | ||
else if (type === VectorType.DATA) { | ||
data = createDataView(chunk, type, bitWidth, buffer.offset().low, bufferLength); | ||
} | ||
else if (type === VectorType.OFFSET) { | ||
offsets = createDataView(chunk, type, bitWidth, buffer.offset().low, bufferLength); | ||
} | ||
else if (node.nullCount().low > 0) { | ||
validity = createValidityDataViews(chunk, type, bitWidth, buffer.offset().low, nodeLength); | ||
} | ||
} | ||
return createVector(field, nodeLength, data, validity, offsets, integerFieldType, chunk, iterator, dictionaries); | ||
}; | ||
throw new Error(`Unrecognized Date { unit: ${type.unit()} }`); | ||
} | ||
function createDataView(dataViews, offsetViews, batch, type, bitWidth, offset, length) { | ||
const buffer = batch.bytes.buffer; | ||
const byteLength = buffer.byteLength; | ||
const byteOffset = batch.offset + offset; | ||
const DataViewType = valueForBitWidth(bitWidth, type === VectorType.OFFSET && offsetViews || dataViews); | ||
const dataViewLength = ((byteOffset + length) <= byteLength | ||
? length | ||
: byteLength - byteOffset) / DataViewType['BYTES_PER_ELEMENT']; | ||
return new DataViewType(buffer, byteOffset, dataViewLength); | ||
exports.readDateVector = readDateVector; | ||
function readTimeVector(field, state) { | ||
const type = field.type(new Time()); | ||
switch (type.bitWidth()) { | ||
case 32: return new arrow_1.Time32Vector({ ...readNumericBuffers(field, state, Int32Array), unit: TimeUnit[type.unit()] }); | ||
case 64: return new arrow_1.Time64Vector({ ...readNumericBuffers(field, state, Uint32Array), unit: TimeUnit[type.unit()] }); | ||
} | ||
throw new Error(`Unrecognized Time { unit: ${type.unit()}, bitWidth: ${type.bitWidth()} }`); | ||
} | ||
function valueForBitWidth(bitWidth, values) { | ||
return values[bitWidth >> 4] || values[3]; | ||
exports.readTimeVector = readTimeVector; | ||
function readTimestampVector(field, state) { | ||
const type = field.type(new Timestamp()); | ||
const { fieldNode, validity, data } = readNumericBuffers(field, state, Uint32Array); | ||
return new arrow_1.TimestampVector({ | ||
field, fieldNode, validity, data, | ||
timezone: type.timezone(), | ||
unit: TimeUnit[type.unit()], | ||
}); | ||
} | ||
function createSyntheticDictionaryIndexField(field, type) { | ||
let layouts = []; | ||
let builder = new flatbuffers_1.flatbuffers.Builder(); | ||
if (field.nullable()) { | ||
VectorLayout.startVectorLayout(builder); | ||
VectorLayout.addBitWidth(builder, 8); | ||
VectorLayout.addType(builder, VectorType.VALIDITY); | ||
builder.finish(VectorLayout.endVectorLayout(builder)); | ||
layouts.push(VectorLayout.getRootAsVectorLayout(builder.dataBuffer())); | ||
builder = new flatbuffers_1.flatbuffers.Builder(); | ||
exports.readTimestampVector = readTimestampVector; | ||
function readListVector(field, state) { | ||
const { fieldNode, validity, offsets } = readListBuffers(field, state); | ||
return new arrow_1.ListVector({ | ||
field, fieldNode, validity, offsets, | ||
values: readVector(field.children(0), state) | ||
}); | ||
} | ||
exports.readListVector = readListVector; | ||
function readStructVector(field, state) { | ||
const n = field.childrenLength(); | ||
const columns = new Array(n); | ||
const fieldNode = state.readNextNode(); | ||
const validity = readValidityBuffer(field, fieldNode, state); | ||
for (let i = -1, child; ++i < n;) { | ||
if (child = field.children(i)) { | ||
columns[i] = readVector(child, state); | ||
} | ||
} | ||
VectorLayout.startVectorLayout(builder); | ||
VectorLayout.addBitWidth(builder, type.bitWidth()); | ||
VectorLayout.addType(builder, VectorType.DATA); | ||
builder.finish(VectorLayout.endVectorLayout(builder)); | ||
layouts.push(VectorLayout.getRootAsVectorLayout(builder.dataBuffer())); | ||
return Object.create(field, { | ||
layout: { value(i) { return layouts[i]; } }, | ||
layoutLength: { value() { return layouts.length; } } | ||
return new arrow_1.StructVector({ field, fieldNode, validity, columns }); | ||
} | ||
exports.readStructVector = readStructVector; | ||
function readBinaryVector(field, state) { | ||
return new arrow_1.BinaryVector(readBinaryBuffers(field, state)); | ||
} | ||
exports.readBinaryVector = readBinaryVector; | ||
function readDecimalVector(field, state) { | ||
const type = field.type(new Decimal()); | ||
const { fieldNode, validity, data } = readNumericBuffers(field, state, Uint32Array); | ||
return new arrow_1.DecimalVector({ | ||
scale: type.scale(), | ||
precision: type.precision(), | ||
field, fieldNode, validity, data | ||
}); | ||
} | ||
exports.readDecimalVector = readDecimalVector; | ||
function readUtf8Vector(field, state) { | ||
const { fieldNode, validity, offsets, data } = readBinaryBuffers(field, state); | ||
return new arrow_1.Utf8Vector({ | ||
field, fieldNode, | ||
values: new arrow_1.BinaryVector({ | ||
validity, offsets, data | ||
}) | ||
}); | ||
} | ||
exports.readUtf8Vector = readUtf8Vector; | ||
function readFixedSizeListVector(field, state) { | ||
const type = field.type(new FixedSizeList()); | ||
const fieldNode = state.readNextNode(); | ||
const validity = readValidityBuffer(field, fieldNode, state); | ||
return new arrow_1.FixedSizeListVector({ | ||
field, fieldNode, validity, | ||
size: type.listSize(), | ||
values: readVector(field.children(0), state) | ||
}); | ||
} | ||
exports.readFixedSizeListVector = readFixedSizeListVector; | ||
function readFixedSizeBinaryVector(field, state) { | ||
const type = field.type(new FixedSizeBinary()); | ||
const { fieldNode, validity, data } = readNumericBuffers(field, state, Uint8Array); | ||
return new arrow_1.FixedSizeListVector({ | ||
size: type.byteWidth(), | ||
field, fieldNode, validity, | ||
values: new arrow_1.Uint8Vector({ data }) | ||
}); | ||
} | ||
exports.readFixedSizeBinaryVector = readFixedSizeBinaryVector; | ||
function readFloatVector(field, state) { | ||
const type = field.type(new FloatingPoint()); | ||
switch (type.precision()) { | ||
case Precision.HALF: return new arrow_1.Float16Vector(readNumericBuffers(field, state, Uint16Array)); | ||
case Precision.SINGLE: return new arrow_1.Float32Vector(readNumericBuffers(field, state, Float32Array)); | ||
case Precision.DOUBLE: return new arrow_1.Float64Vector(readNumericBuffers(field, state, Float64Array)); | ||
} | ||
throw new Error(`Unrecognized FloatingPoint { precision: ${type.precision()} }`); | ||
} | ||
exports.readFloatVector = readFloatVector; | ||
function readIntVector(field, state) { | ||
const type = field.type(new Int()); | ||
if (type.isSigned()) { | ||
switch (type.bitWidth()) { | ||
case 8: return new arrow_1.Int8Vector(readNumericBuffers(field, state, Int8Array)); | ||
case 16: return new arrow_1.Int16Vector(readNumericBuffers(field, state, Int16Array)); | ||
case 32: return new arrow_1.Int32Vector(readNumericBuffers(field, state, Int32Array)); | ||
case 64: return new arrow_1.Int64Vector(readNumericBuffers(field, state, Int32Array)); | ||
} | ||
} | ||
switch (type.bitWidth()) { | ||
case 8: return new arrow_1.Uint8Vector(readNumericBuffers(field, state, Uint8Array)); | ||
case 16: return new arrow_1.Uint16Vector(readNumericBuffers(field, state, Uint16Array)); | ||
case 32: return new arrow_1.Uint32Vector(readNumericBuffers(field, state, Uint32Array)); | ||
case 64: return new arrow_1.Uint64Vector(readNumericBuffers(field, state, Uint32Array)); | ||
} | ||
throw new Error(`Unrecognized Int { isSigned: ${type.isSigned()}, bitWidth: ${type.bitWidth()} }`); | ||
} | ||
exports.readIntVector = readIntVector; | ||
function readListBuffers(field, state) { | ||
const fieldNode = state.readNextNode(); | ||
const validity = readValidityBuffer(field, fieldNode, state); | ||
const offsets = readDataBuffer(Int32Array, state); | ||
return { field, fieldNode, validity, offsets }; | ||
} | ||
function readBinaryBuffers(field, state) { | ||
const fieldNode = state.readNextNode(); | ||
const validity = readValidityBuffer(field, fieldNode, state); | ||
const offsets = readDataBuffer(Int32Array, state); | ||
const data = readDataBuffer(Uint8Array, state); | ||
return { field, fieldNode, validity, offsets, data }; | ||
} | ||
function readNumericBuffers(field, state, ArrayConstructor) { | ||
const fieldNode = state.readNextNode(); | ||
const validity = readValidityBuffer(field, fieldNode, state); | ||
const data = readDataBuffer(ArrayConstructor, state); | ||
return { field, fieldNode, validity, data }; | ||
} | ||
function readDataBuffer(ArrayConstructor, state) { | ||
return createTypedArray(ArrayConstructor, state.bytes, state.offset, state.readNextBuffer()); | ||
} | ||
function readValidityBuffer(field, fieldNode, state) { | ||
return createValidityArray(field, fieldNode, state.bytes, state.offset, state.readNextBuffer()); | ||
} | ||
function createValidityArray(field, fieldNode, bytes, offset, buffer) { | ||
return field.nullable() && fieldNode.nullCount().low > 0 && createTypedArray(Uint8Array, bytes, offset, buffer) || null; | ||
} | ||
function createTypedArray(ArrayConstructor, bytes, offset, buffer) { | ||
return new ArrayConstructor(bytes.buffer, bytes.byteOffset + offset + buffer.offset().low, buffer.length().low / ArrayConstructor.BYTES_PER_ELEMENT); | ||
} | ||
//# sourceMappingURL=data:application/json;charset=utf8;base64,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LE9BQU8sR0FBRyxJQUFJLHlCQUFXLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDeEMsQ0FBQztJQUNELFlBQVksQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN4QyxZQUFZLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUNuRCxZQUFZLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDL0MsT0FBTyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDdEQsT0FBTyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMscUJBQXFCLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN2RSxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUU7UUFDeEIsTUFBTSxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFO1FBQzNDLFlBQVksRUFBRSxFQUFFLEtBQUssS0FBSyxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRTtLQUN2RCxDQUFDLENBQUM7QUFDUCxDQUFDIiwiZmlsZSI6InJlYWRlci92ZWN0b3IuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lXG4vLyBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGVcbi8vIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uXG4vLyByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlXG4vLyB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlXG4vLyBcIkxpY2Vuc2VcIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Vcbi8vIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbi8vXG4vLyAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuLy9cbi8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZyxcbi8vIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuXG4vLyBcIkFTIElTXCIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWVxuLy8gS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlXG4vLyBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zXG4vLyB1bmRlciB0aGUgTGljZW5zZS5cblxuaW1wb3J0IHsgZmxhdGJ1ZmZlcnMgfSBmcm9tICdmbGF0YnVmZmVycyc7XG5pbXBvcnQgeyBNZXNzYWdlQmF0Y2ggfSBmcm9tICcuL21lc3NhZ2UnO1xuaW1wb3J0IHsgVmVjdG9yIH0gZnJvbSAnLi4vdmVjdG9yL3ZlY3Rvcic7XG5pbXBvcnQgKiBhcyBTY2hlbWFfIGZyb20gJy4uL2Zvcm1hdC9TY2hlbWEnO1xuaW1wb3J0IHsgU3RydWN0VmVjdG9yIH0gZnJvbSAnLi4vdmVjdG9yL3N0cnVjdCc7XG5pbXBvcnQgeyBJdGVyYXRvclN0YXRlLCBEaWN0aW9uYXJpZXMgfSBmcm9tICcuL2Fycm93JztcbmltcG9ydCB7IERpY3Rpb25hcnlWZWN0b3IgfSBmcm9tICcuLi92ZWN0b3IvZGljdGlvbmFyeSc7XG5pbXBvcnQgeyBVdGY4VmVjdG9yLCBMaXN0VmVjdG9yLCBGaXhlZFNpemVMaXN0VmVjdG9yIH0gZnJvbSAnLi4vdmVjdG9yL2xpc3QnO1xuaW1wb3J0IHtcbiAgICBUeXBlZEFycmF5LCBUeXBlZEFycmF5Q3RvciwgSW50QXJyYXksIEZsb2F0QXJyYXksXG4gICAgSW50OFZlY3RvciwgSW50MTZWZWN0b3IsIEludDMyVmVjdG9yLCBJbnQ2NFZlY3RvcixcbiAgICBVaW50OFZlY3RvciwgVWludDE2VmVjdG9yLCBVaW50MzJWZWN0b3IsIFVpbnQ2NFZlY3RvcixcbiAgICBGbG9hdDMyVmVjdG9yLCBGbG9hdDY0VmVjdG9yLCBJbmRleFZlY3RvciwgRGF0ZVZlY3Rvcixcbn0gZnJvbSAnLi4vdmVjdG9yL3R5cGVkJztcblxuaW1wb3J0IEludCA9IFNjaGVtYV8ub3JnLmFwYWNoZS5hcnJvdy5mbGF0YnVmLkludDtcbmltcG9ydCBUeXBlID0gU2NoZW1hXy5vcmcuYXBhY2hlLmFycm93LmZsYXRidWYuVHlwZTtcbmltcG9ydCBGaWVsZCA9IFNjaGVtYV8ub3JnLmFwYWNoZS5hcnJvdy5mbGF0YnVmLkZpZWxkO1xuaW1wb3J0IFByZWNpc2lvbiA9IFNjaGVtYV8ub3JnLmFwYWNoZS5hcnJvdy5mbGF0YnVmLlByZWNpc2lvbjtcbmltcG9ydCBWZWN0b3JUeXBlID0gU2NoZW1hXy5vcmcuYXBhY2hlLmFycm93LmZsYXRidWYuVmVjdG9yVHlwZTtcbmltcG9ydCBWZWN0b3JMYXlvdXQgPSBTY2hlbWFfLm9yZy5hcGFjaGUuYXJyb3cuZmxhdGJ1Zi5WZWN0b3JMYXlvdXQ7XG5pbXBvcnQgRml4ZWRTaXplTGlzdCA9IFNjaGVtYV8ub3JnLmFwYWNoZS5hcnJvdy5mbGF0YnVmLkZpeGVkU2l6ZUxpc3Q7XG5pbXBvcnQgRmxvYXRpbmdQb2ludCA9IFNjaGVtYV8ub3JnLmFwYWNoZS5hcnJvdy5mbGF0YnVmLkZsb2F0aW5nUG9pbnQ7XG5pbXBvcnQgRGljdGlvbmFyeUVuY29kaW5nID0gU2NoZW1hXy5vcmcuYXBhY2hlLmFycm93LmZsYXRidWYuRGljdGlvbmFyeUVuY29kaW5nO1xuXG5leHBvcnQgZnVuY3Rpb24gcmVhZFZlY3RvcihmaWVsZDogRmllbGQsIGJhdGNoOiBNZXNzYWdlQmF0Y2gsIHN0YXRlOiBJdGVyYXRvclN0YXRlLCBkaWN0aW9uYXJpZXM6IERpY3Rpb25hcmllcykge1xuICAgIHJldHVybiByZWFkRGljdGlvbmFyeVZlY3RvcihmaWVsZCwgYmF0Y2gsIHN0YXRlLCBkaWN0aW9uYXJpZXMpIHx8XG4gICAgICAgICAgICAgICAgcmVhZFR5cGVkVmVjdG9yKGZpZWxkLCBiYXRjaCwgc3RhdGUsIGRpY3Rpb25hcmllcyk7XG59XG5cbmZ1bmN0aW9uIHJlYWRUeXBlZFZlY3RvcihmaWVsZDogRmllbGQsIGJhdGNoOiBNZXNzYWdlQmF0Y2gsIGl0ZXJhdG9yOiBJdGVyYXRvclN0YXRlLCBkaWN0aW9uYXJpZXM6IERpY3Rpb25hcmllcykge1xuICAgIGxldCB0eXBlVHlwZSA9IGZpZWxkLnR5cGVUeXBlKCksIHJlYWRUeXBlZCA9IHR5cGVkVmVjdG9yUmVhZGVyc1t0eXBlVHlwZV07XG4gICAgaWYgKCFyZWFkVHlwZWQpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbnJlY29nbml6ZWQgdmVjdG9yIG5hbWUgXCInICsgVHlwZVt0eXBlVHlwZV0gKyAnXCIgdHlwZSBcIicgKyB0eXBlVHlwZSArICdcIicpO1xuICAgIH1cbiAgICByZXR1cm4gcmVhZFR5cGVkKGZpZWxkLCBiYXRjaCwgaXRlcmF0b3IsIGRpY3Rpb25hcmllcyk7XG59XG5cbmZ1bmN0aW9uIHJlYWREaWN0aW9uYXJ5VmVjdG9yKGZpZWxkOiBGaWVsZCwgYmF0Y2g6IE1lc3NhZ2VCYXRjaCwgaXRlcmF0b3I6IEl0ZXJhdG9yU3RhdGUsIGRpY3Rpb25hcmllczogRGljdGlvbmFyaWVzKSB7XG4gICAgbGV0IGVuY29kaW5nOiBEaWN0aW9uYXJ5RW5jb2Rpbmc7XG4gICAgaWYgKGRpY3Rpb25hcmllcyAmJiAoZW5jb2RpbmcgPSBmaWVsZC5kaWN0aW9uYXJ5KCkpKSB7XG4gICAgICAgIGxldCBpZCA9IGVuY29kaW5nLmlkKCkudG9GbG9hdDY0KCkudG9TdHJpbmcoKTtcbiAgICAgICAgbGV0IGZpZWxkVHlwZSA9ICBlbmNvZGluZy5pbmRleFR5cGUoKSB8fFxuICAgICAgICAgICAgLyogYSBkaWN0aW9uYXJ5IGluZGV4IGRlZmF1bHRzIHRvIHNpZ25lZCAzMiBiaXQgaW50IGlmIHVuc3BlY2lmaWVkICovXG4gICAgICAgICAgICB7IGJpdFdpZHRoOiAoKSA9PiAzMiwgaXNTaWduZWQ6ICgpID0+IHRydWUgfTtcbiAgICAgICAgbGV0IGluZGV4RmllbGQgPSBjcmVhdGVTeW50aGV0aWNEaWN0aW9uYXJ5SW5kZXhGaWVsZChmaWVsZCwgZmllbGRUeXBlKTtcbiAgICAgICAgbGV0IGluZGV4ID0gcmVhZEludFZlY3RvcihpbmRleEZpZWxkLCBiYXRjaCwgaXRlcmF0b3IsIG51bGwsIGZpZWxkVHlwZSk7XG4gICAgICAgIHJldHVybiBEaWN0aW9uYXJ5VmVjdG9yLmNyZWF0ZShmaWVsZCwgaW5kZXgubGVuZ3RoLCBpbmRleCwgZGljdGlvbmFyaWVzW2lkXSk7XG4gICAgfVxufVxuXG5jb25zdCBJbnRWaWV3cyAgICA9IFtJbnQ4QXJyYXksICAgIEludDE2QXJyYXksICAgSW50MzJBcnJheSwgICBJbnQzMkFycmF5ICBdO1xuY29uc3QgSW50MzJWaWV3cyAgPSBbSW50MzJBcnJheSwgICBJbnQzMkFycmF5LCAgIEludDMyQXJyYXksICAgSW50MzJBcnJheSAgXTtcbmNvbnN0IFVpbnRWaWV3cyAgID0gW1VpbnQ4QXJyYXksICAgVWludDE2QXJyYXksICBVaW50MzJBcnJheSwgIFVpbnQzMkFycmF5IF07XG5jb25zdCBVaW50OFZpZXdzICA9IFtVaW50OEFycmF5LCAgIFVpbnQ4QXJyYXksICAgVWludDhBcnJheSwgICBVaW50OEFycmF5ICBdO1xuY29uc3QgVWludDMyVmlld3MgPSBbVWludDMyQXJyYXksICBVaW50MzJBcnJheSwgIFVpbnQzMkFycmF5LCAgVWludDMyQXJyYXkgXTtcbmNvbnN0IEZsb2F0Vmlld3MgID0gW0ludDhBcnJheSwgICAgSW50MTZBcnJheSwgICBGbG9hdDMyQXJyYXksIEZsb2F0NjRBcnJheV07XG5cbmNvbnN0IGNyZWF0ZUludERhdGFWaWV3cyA9IGNyZWF0ZURhdGFWaWV3LmJpbmQobnVsbCwgSW50Vmlld3MsIG51bGwpO1xuY29uc3QgY3JlYXRlVWludERhdGFWaWV3cyA9IGNyZWF0ZURhdGFWaWV3LmJpbmQobnVsbCwgVWludFZpZXdzLCBudWxsKTtcbmNvbnN0IGNyZWF0ZURhdGVEYXRhVmlld3MgPSBjcmVhdGVEYXRhVmlldy5iaW5kKG51bGwsIFVpbnQzMlZpZXdzLCBudWxsKTtcbmNvbnN0IGNyZWF0ZUZsb2F0RGF0YVZpZXdzID0gY3JlYXRlRGF0YVZpZXcuYmluZChudWxsLCBGbG9hdFZpZXdzLCBudWxsKTtcbmNvbnN0IGNyZWF0ZU5lc3RlZERhdGFWaWV3cyA9IGNyZWF0ZURhdGFWaWV3LmJpbmQobnVsbCwgVWludDMyVmlld3MsIG51bGwpO1xuY29uc3QgY3JlYXRlVmFsaWRpdHlEYXRhVmlld3MgPSBjcmVhdGVEYXRhVmlldy5iaW5kKG51bGwsIFVpbnQ4Vmlld3MsIG51bGwpO1xuY29uc3QgY3JlYXRlVXRmOERhdGFWaWV3cyA9IGNyZWF0ZURhdGFWaWV3LmJpbmQobnVsbCwgVWludDhWaWV3cywgSW50MzJWaWV3cyk7XG5cbmNvbnN0IGZsb2F0VmVjdG9ycyA9IHtcbiAgICBbUHJlY2lzaW9uLlNJTkdMRV06IEZsb2F0MzJWZWN0b3IsXG4gICAgW1ByZWNpc2lvbi5ET1VCTEVdOiBGbG9hdDY0VmVjdG9yXG59O1xuY29uc3QgaW50VmVjdG9ycyA9IFtcbiAgICBbLyogdW5zaWduZWQgKi8gVWludDhWZWN0b3IsICAgLyogc2lnbmVkICovIEludDhWZWN0b3IgXSxcbiAgICBbLyogdW5zaWduZWQgKi8gVWludDE2VmVjdG9yLCAgLyogc2lnbmVkICovIEludDE2VmVjdG9yXSxcbiAgICBbLyogdW5zaWduZWQgKi8gVWludDMyVmVjdG9yLCAgLyogc2lnbmVkICovIEludDMyVmVjdG9yXSxcbiAgICBbLyogdW5zaWduZWQgKi8gVWludDY0VmVjdG9yLCAgLyogc2lnbmVkICovIEludDY0VmVjdG9yXVxuXTtcblxuZnVuY3Rpb24gcmVhZEludFZlY3RvcihmaWVsZDogRmllbGQsIGJhdGNoOiBNZXNzYWdlQmF0Y2gsIGl0ZXJhdG9yOiBJdGVyYXRvclN0YXRlLCBkaWN0aW9uYXJpZXM6IERpY3Rpb25hcmllcywgZmllbGRUeXBlPzogRmllbGRUeXBlKSB7XG4gICAgbGV0IHR5cGUgPSAoZmllbGRUeXBlIHx8IGZpZWxkLnR5cGUobmV3IEludCgpKSk7XG4gICAgcmV0dXJuIHR5cGUuaXNTaWduZWQoKSA/XG4gICAgICAgIHJlYWRfSW50VmVjdG9yKGZpZWxkLCBiYXRjaCwgaXRlcmF0b3IsIGRpY3Rpb25hcmllcywgdHlwZSkgOlxuICAgICAgICByZWFkVWludFZlY3RvcihmaWVsZCwgYmF0Y2gsIGl0ZXJhdG9yLCBkaWN0aW9uYXJpZXMsIHR5cGUpO1xufVxuXG5jb25zdCByZWFkX0ludFZlY3RvciA9IHJlYWRWZWN0b3JMYXlvdXQ8bnVtYmVyLCBJbnRBcnJheT4oY3JlYXRlSW50RGF0YVZpZXdzLCBjcmVhdGVJbnRWZWN0b3IpO1xuY29uc3QgcmVhZFVpbnRWZWN0b3IgPSByZWFkVmVjdG9yTGF5b3V0PG51bWJlciwgSW50QXJyYXk+KGNyZWF0ZVVpbnREYXRhVmlld3MsIGNyZWF0ZUludFZlY3Rvcik7XG5mdW5jdGlvbiBjcmVhdGVJbnRWZWN0b3IoZmllbGQsIGxlbmd0aCwgZGF0YSwgdmFsaWRpdHksIG9mZnNldHMsIGZpZWxkVHlwZSwgYmF0Y2gsIGl0ZXJhdG9yLCBkaWN0aW9uYXJpZXMpIHtcbiAgICBsZXQgdHlwZSA9IGZpZWxkVHlwZSB8fCBmaWVsZC50eXBlKG5ldyBJbnQoKSksIGJpdFdpZHRoID0gdHlwZS5iaXRXaWR0aCgpO1xuICAgIGxldCBWZWN0b3IgPSB2YWx1ZUZvckJpdFdpZHRoKGJpdFdpZHRoLCBpbnRWZWN0b3JzKVsrdHlwZS5pc1NpZ25lZCgpXTtcbiAgICByZXR1cm4gVmVjdG9yLmNyZWF0ZShmaWVsZCwgbGVuZ3RoLCB2YWxpZGl0eSwgZGF0YSB8fCBvZmZzZXRzKTtcbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHNvIHRoaXMgaXMga2luZGEgc3RyYW5nZSDwn5GGOlxuICAgIC8vIFRoZSBkaWN0aW9uYXJ5IGVuY29kZWQgdmVjdG9ycyBJIGdlbmVyYXRlZCBmcm9tIHNhbXBsZSBtYXBkLWNvcmUgcXVlcmllcyBoYXZlIHRoZSBpbmRpY2llcycgZGF0YSBidWZmZXJzXG4gICAgLy8gdGFnZ2VkIGFzIFZlY3RvclR5cGUuT0ZGU0VUICgwKSBpbiB0aGUgZmllbGQgbWV0YWRhdGEuIFRoZSBjdXJyZW50IFRTIGltcGwgaWdub3JlcyBidWZmZXJzJyBsYXlvdXQgdHlwZSxcbiAgICAvLyBhbmQgYXNzdW1lcyB0aGUgc2Vjb25kIGJ1ZmZlciBpcyB0aGUgZGF0YSBmb3IgYSBOdWxsYWJsZUludFZlY3Rvci4gU2luY2Ugd2UndmUgYmVlbiBzdHJpY3RlciBhYm91dCBlbmZvcmNpbmdcbiAgICAvLyB0aGUgQXJyb3cgc3BlYyB3aGlsZSBwYXJzaW5nLCB0aGUgSW50VmVjdG9yJ3MgZGF0YSBidWZmZXIgcmVhZHMgZW1wdHkgaW4gdGhpcyBjYXNlLiBJZiBzbywgZmFsbGJhY2sgdG8gdXNpbmdcbiAgICAvLyB0aGUgb2Zmc2V0cyBidWZmZXIgYXMgdGhlIGRhdGEsIHNpbmNlIEludFZlY3RvcnMgZG9uJ3QgaGF2ZSBvZmZzZXRzLlxufVxuXG5jb25zdCByZWFkRmxvYXRWZWN0b3IgPSByZWFkVmVjdG9yTGF5b3V0PG51bWJlciwgRmxvYXRBcnJheT4oXG4gICAgY3JlYXRlRmxvYXREYXRhVmlld3MsXG4gICAgKGZpZWxkLCBsZW5ndGgsIGRhdGEsIHZhbGlkaXR5LCBvZmZzZXRzLCBmaWVsZFR5cGUsIGJhdGNoLCBpdGVyYXRvciwgZGljdGlvbmFyaWVzKSA9PiB7XG4gICAgICAgIGxldCB0eXBlID0gZmllbGQudHlwZShuZXcgRmxvYXRpbmdQb2ludCgpKTtcbiAgICAgICAgbGV0IFZlY3RvciA9IGZsb2F0VmVjdG9yc1t0eXBlLnByZWNpc2lvbigpXTtcbiAgICAgICAgcmV0dXJuIFZlY3Rvci5jcmVhdGUoZmllbGQsIGxlbmd0aCwgdmFsaWRpdHksIGRhdGEpO1xuICAgIH1cbik7XG5cbmNvbnN0IHJlYWREYXRlVmVjdG9yID0gcmVhZFZlY3RvckxheW91dDxEYXRlLCBVaW50MzJBcnJheT4oXG4gICAgY3JlYXRlRGF0ZURhdGFWaWV3cyxcbiAgICAoZmllbGQsIGxlbmd0aCwgZGF0YSwgdmFsaWRpdHksIG9mZnNldHMsIGZpZWxkVHlwZSwgYmF0Y2gsIGl0ZXJhdG9yLCBkaWN0aW9uYXJpZXMpID0+IHtcbiAgICAgICAgcmV0dXJuIERhdGVWZWN0b3IuY3JlYXRlKGZpZWxkLCBsZW5ndGgsIHZhbGlkaXR5LCBkYXRhKTtcbiAgICB9XG4pO1xuXG5jb25zdCByZWFkVXRmOFZlY3RvciA9IHJlYWRWZWN0b3JMYXlvdXQ8c3RyaW5nLCBVaW50OEFycmF5PihcbiAgICBjcmVhdGVVdGY4RGF0YVZpZXdzLFxuICAgIChmaWVsZCwgbGVuZ3RoLCBkYXRhLCB2YWxpZGl0eSwgb2Zmc2V0cywgZmllbGRUeXBlLCBiYXRjaCwgaXRlcmF0b3IsIGRpY3Rpb25hcmllcykgPT4ge1xuICAgICAgICBsZXQgb2Zmc2V0c0FkanVzdGVkID0gbmV3IEludDMyQXJyYXkob2Zmc2V0cy5idWZmZXIsIG9mZnNldHMuYnl0ZU9mZnNldCwgbGVuZ3RoICsgMSk7XG4gICAgICAgIHJldHVybiBVdGY4VmVjdG9yLmNyZWF0ZShcbiAgICAgICAgICAgIGZpZWxkLCBsZW5ndGgsIHZhbGlkaXR5LFxuICAgICAgICAgICAgVWludDhWZWN0b3IuY3JlYXRlKGZpZWxkLCBkYXRhLmxlbmd0aCwgbnVsbCwgZGF0YSksXG4gICAgICAgICAgICBJbmRleFZlY3Rvci5jcmVhdGUoZmllbGQsIGxlbmd0aCArIDEsIG51bGwsIG9mZnNldHNBZGp1c3RlZClcbiAgICAgICAgKTtcbiAgICB9XG4pO1xuXG5jb25zdCByZWFkTGlzdFZlY3RvciA9IHJlYWRWZWN0b3JMYXlvdXQ8YW55W10sIFVpbnQzMkFycmF5PihcbiAgICBjcmVhdGVOZXN0ZWREYXRhVmlld3MsXG4gICAgKGZpZWxkLCBsZW5ndGgsIGRhdGEsIHZhbGlkaXR5LCBvZmZzZXRzLCBmaWVsZFR5cGUsIGJhdGNoLCBpdGVyYXRvciwgZGljdGlvbmFyaWVzKSA9PiB7XG4gICAgICAgIGxldCBvZmZzZXRzQWRqdXN0ZWQgPSBuZXcgSW50MzJBcnJheShvZmZzZXRzLmJ1ZmZlciwgb2Zmc2V0cy5ieXRlT2Zmc2V0LCBsZW5ndGggKyAxKTtcbiAgICAgICAgcmV0dXJuIExpc3RWZWN0b3IuY3JlYXRlKFxuICAgICAgICAgICAgZmllbGQsIGxlbmd0aCwgdmFsaWRpdHksXG4gICAgICAgICAgICByZWFkVmVjdG9yKGZpZWxkLmNoaWxkcmVuKDApLCBiYXRjaCwgaXRlcmF0b3IsIGRpY3Rpb25hcmllcyksXG4gICAgICAgICAgICBJbmRleFZlY3Rvci5jcmVhdGUoZmllbGQsIGxlbmd0aCArIDEsIG51bGwsIG9mZnNldHNBZGp1c3RlZClcbiAgICAgICAgKTtcbiAgICB9XG4pO1xuXG5jb25zdCByZWFkRml4ZWRTaXplTGlzdFZlY3RvciA9IHJlYWRWZWN0b3JMYXlvdXQ8YW55W10sIFVpbnQzMkFycmF5PihcbiAgICBjcmVhdGVOZXN0ZWREYXRhVmlld3MsXG4gICAgKGZpZWxkLCBsZW5ndGgsIGRhdGEsIHZhbGlkaXR5LCBvZmZzZXRzLCBmaWVsZFR5cGUsIGJhdGNoLCBpdGVyYXRvciwgZGljdGlvbmFyaWVzKSA9PiB7XG4gICAgICAgIGxldCBzaXplID0gZmllbGQudHlwZShuZXcgRml4ZWRTaXplTGlzdCgpKS5saXN0U2l6ZSgpO1xuICAgICAgICByZXR1cm4gRml4ZWRTaXplTGlzdFZlY3Rvci5jcmVhdGUoXG4gICAgICAgICAgICBmaWVsZCwgbGVuZ3RoLCBzaXplLCB2YWxpZGl0eSxcbiAgICAgICAgICAgIHJlYWRWZWN0b3IoZmllbGQuY2hpbGRyZW4oMCksIGJhdGNoLCBpdGVyYXRvciwgZGljdGlvbmFyaWVzKVxuICAgICAgICApO1xuICAgIH1cbik7XG5cbmNvbnN0IHJlYWRTdHJ1Y3RWZWN0b3IgPSByZWFkVmVjdG9yTGF5b3V0PGFueVtdLCBBcnJheUxpa2U8YW55Pj4oXG4gICAgY3JlYXRlTmVzdGVkRGF0YVZpZXdzLFxuICAgIChmaWVsZCwgbGVuZ3RoLCBkYXRhLCB2YWxpZGl0eSwgb2Zmc2V0cywgZmllbGRUeXBlLCBiYXRjaCwgaXRlcmF0b3IsIGRpY3Rpb25hcmllcykgPT4ge1xuICAgICAgICBsZXQgdmVjdG9yczogVmVjdG9yPGFueT5bXSA9IFtdO1xuICAgICAgICBmb3IgKGxldCBpID0gLTEsIG4gPSBmaWVsZC5jaGlsZHJlbkxlbmd0aCgpOyArK2kgPCBuOykge1xuICAgICAgICAgICAgdmVjdG9yc1tpXSA9IHJlYWRWZWN0b3IoZmllbGQuY2hpbGRyZW4oaSksIGJhdGNoLCBpdGVyYXRvciwgZGljdGlvbmFyaWVzKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gU3RydWN0VmVjdG9yLmNyZWF0ZShmaWVsZCwgbGVuZ3RoLCB2YWxpZGl0eSwgLi4udmVjdG9ycyk7XG4gICAgfVxuKTtcblxuY29uc3QgdHlwZWRWZWN0b3JSZWFkZXJzID0ge1xuICAgIFtUeXBlLkludF06IHJlYWRJbnRWZWN0b3IsXG4gICAgW1R5cGUuRGF0ZV06IHJlYWREYXRlVmVjdG9yLFxuICAgIFtUeXBlLkxpc3RdOiByZWFkTGlzdFZlY3RvcixcbiAgICBbVHlwZS5VdGY4XTogcmVhZFV0ZjhWZWN0b3IsXG4gICAgW1R5cGUuU3RydWN0X106IHJlYWRTdHJ1Y3RWZWN0b3IsXG4gICAgW1R5cGUuRmxvYXRpbmdQb2ludF06IHJlYWRGbG9hdFZlY3RvcixcbiAgICBbVHlwZS5GaXhlZFNpemVMaXN0XTogcmVhZEZpeGVkU2l6ZUxpc3RWZWN0b3IsXG59O1xuXG50eXBlIEZpZWxkVHlwZSA9IHsgYml0V2lkdGgoKTogbnVtYmVyOyBpc1NpZ25lZCgpOiBib29sZWFuIH07XG50eXBlIGRhdGFWaWV3RmFjdG9yeTxWID0gVHlwZWRBcnJheT4gPSAoYmF0Y2g6IE1lc3NhZ2VCYXRjaCwgdHlwZTogVmVjdG9yVHlwZSwgYml0V2lkdGg6IG51bWJlciwgb2Zmc2V0OiBudW1iZXIsIGxlbmd0aDogbnVtYmVyKSA9PiBWO1xudHlwZSB2ZWN0b3JGYWN0b3J5PFRMaXN0LCBWID0gVmVjdG9yPGFueT4+ID0gKGZpZWxkOiBGaWVsZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZW5ndGg6IG51bWJlcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhOiBUTGlzdCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsczogVWludDhBcnJheSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXRzOiBUeXBlZEFycmF5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkVHlwZTogRmllbGRUeXBlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNodW5rOiBNZXNzYWdlQmF0Y2gsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlcmFibGU6IEl0ZXJhdG9yU3RhdGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGljdGlvbmFyaWVzOiBEaWN0aW9uYXJpZXMpID0+IFY7XG5cbmZ1bmN0aW9uIHJlYWRWZWN0b3JMYXlvdXQ8VCwgVExpc3Q+KGNyZWF0ZURhdGFWaWV3OiBkYXRhVmlld0ZhY3Rvcnk8VExpc3Q+LCBjcmVhdGVWZWN0b3I6IHZlY3RvckZhY3Rvcnk8VExpc3QsIFZlY3RvcjxUPj4pIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gcmVhZExheW91dChcbiAgICAgICAgICAgIGZpZWxkOiBGaWVsZCxcbiAgICAgICAgICAgIGNodW5rOiBNZXNzYWdlQmF0Y2gsXG4gICAgICAgICAgICBpdGVyYXRvcjogSXRlcmF0b3JTdGF0ZSxcbiAgICAgICAgICAgIGRpY3Rpb25hcmllczogRGljdGlvbmFyaWVzLFxuICAgICAgICAgICAgaW50ZWdlckZpZWxkVHlwZT86IEZpZWxkVHlwZVxuICAgICkge1xuICAgICAgICBsZXQgYmF0Y2ggPSBjaHVuay5kYXRhO1xuICAgICAgICBsZXQgbGF5b3V0TGVuZ3RoID0gZmllbGQubGF5b3V0TGVuZ3RoKCk7XG4gICAgICAgIGxldCBub2RlID0gYmF0Y2gubm9kZXMoaXRlcmF0b3Iubm9kZUluZGV4KyspO1xuICAgICAgICBsZXQgZGF0YTogVExpc3QsIG9mZnNldHM6IGFueSwgdmFsaWRpdHk6IFVpbnQ4QXJyYXk7XG4gICAgICAgIGxldCB0eXBlLCBiaXRXaWR0aCwgYnVmZmVyTGVuZ3RoLCBub2RlTGVuZ3RoID0gbm9kZS5sZW5ndGgoKS5sb3c7XG4gICAgICAgIGZvciAobGV0IGkgPSAtMTsgKytpIDwgbGF5b3V0TGVuZ3RoOykge1xuICAgICAgICAgICAgbGV0IGxheW91dCA9IGZpZWxkLmxheW91dChpKTtcbiAgICAgICAgICAgIGxldCBidWZmZXIgPSBiYXRjaC5idWZmZXJzKGl0ZXJhdG9yLmJ1ZmZlckluZGV4KyspO1xuICAgICAgICAgICAgaWYgKCh0eXBlID0gbGF5b3V0LnR5cGUoKSkgPT09IFZlY3RvclR5cGUuVFlQRSB8fFxuICAgICAgICAgICAgICAgIChidWZmZXJMZW5ndGggPSBidWZmZXIubGVuZ3RoKCkubG93KSA8PSAwICB8fFxuICAgICAgICAgICAgICAgIChiaXRXaWR0aCA9IGxheW91dC5iaXRXaWR0aCgpKSA8PSAwKSB7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT09IFZlY3RvclR5cGUuREFUQSkge1xuICAgICAgICAgICAgICAgIGRhdGEgPSBjcmVhdGVEYXRhVmlldyhjaHVuaywgdHlwZSwgYml0V2lkdGgsIGJ1ZmZlci5vZmZzZXQoKS5sb3csIGJ1ZmZlckxlbmd0aCk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT09IFZlY3RvclR5cGUuT0ZGU0VUKSB7XG4gICAgICAgICAgICAgICAgb2Zmc2V0cyA9IGNyZWF0ZURhdGFWaWV3KGNodW5rLCB0eXBlLCBiaXRXaWR0aCwgYnVmZmVyLm9mZnNldCgpLmxvdywgYnVmZmVyTGVuZ3RoKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobm9kZS5udWxsQ291bnQoKS5sb3cgPiAwKSB7XG4gICAgICAgICAgICAgICAgdmFsaWRpdHkgPSBjcmVhdGVWYWxpZGl0eURhdGFWaWV3cyhjaHVuaywgdHlwZSwgYml0V2lkdGgsIGJ1ZmZlci5vZmZzZXQoKS5sb3csIG5vZGVMZW5ndGgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjcmVhdGVWZWN0b3IoZmllbGQsIG5vZGVMZW5ndGgsIGRhdGEsIHZhbGlkaXR5LCBvZmZzZXRzLCBpbnRlZ2VyRmllbGRUeXBlLCBjaHVuaywgaXRlcmF0b3IsIGRpY3Rpb25hcmllcyk7XG4gICAgfTtcbn1cblxuZnVuY3Rpb24gY3JlYXRlRGF0YVZpZXcoXG4gICAgZGF0YVZpZXdzOiBUeXBlZEFycmF5Q3Rvcjxhbnk+W10sIG9mZnNldFZpZXdzOiBUeXBlZEFycmF5Q3Rvcjxhbnk+W10gfCBudWxsLFxuICAgIGJhdGNoOiBNZXNzYWdlQmF0Y2gsIHR5cGU6IFZlY3RvclR5cGUsIGJpdFdpZHRoOiBudW1iZXIsIG9mZnNldDogbnVtYmVyLCBsZW5ndGg6IG51bWJlclxuKSB7XG4gICAgY29uc3QgYnVmZmVyID0gYmF0Y2guYnl0ZXMuYnVmZmVyO1xuICAgIGNvbnN0IGJ5dGVMZW5ndGggPSBidWZmZXIuYnl0ZUxlbmd0aDtcbiAgICBjb25zdCBieXRlT2Zmc2V0ID0gYmF0Y2gub2Zmc2V0ICsgb2Zmc2V0O1xuICAgIGNvbnN0IERhdGFWaWV3VHlwZSA9IHZhbHVlRm9yQml0V2lkdGgoYml0V2lkdGgsIHR5cGUgPT09IFZlY3RvclR5cGUuT0ZGU0VUICYmIG9mZnNldFZpZXdzIHx8IGRhdGFWaWV3cyk7XG4gICAgY29uc3QgZGF0YVZpZXdMZW5ndGggPSAoKGJ5dGVPZmZzZXQgKyBsZW5ndGgpIDw9IGJ5dGVMZW5ndGhcbiAgICAgICAgPyBsZW5ndGhcbiAgICAgICAgOiBieXRlTGVuZ3RoIC0gYnl0ZU9mZnNldFxuICAgICkgLyBEYXRhVmlld1R5cGVbJ0JZVEVTX1BFUl9FTEVNRU5UJ107XG4gICAgcmV0dXJuIG5ldyBEYXRhVmlld1R5cGUoYnVmZmVyLCBieXRlT2Zmc2V0LCBkYXRhVmlld0xlbmd0aCk7XG59XG5cbmZ1bmN0aW9uIHZhbHVlRm9yQml0V2lkdGgoYml0V2lkdGg6IG51bWJlciwgdmFsdWVzOiBhbnlbXSkge1xuICAgIHJldHVybiB2YWx1ZXNbYml0V2lkdGggPj4gNF0gfHwgdmFsdWVzWzNdO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVTeW50aGV0aWNEaWN0aW9uYXJ5SW5kZXhGaWVsZChmaWVsZDogRmllbGQsIHR5cGU6IEZpZWxkVHlwZSkge1xuICAgIGxldCBsYXlvdXRzID0gW107XG4gICAgbGV0IGJ1aWxkZXIgPSBuZXcgZmxhdGJ1ZmZlcnMuQnVpbGRlcigpO1xuICAgIGlmIChmaWVsZC5udWxsYWJsZSgpKSB7XG4gICAgICAgIFZlY3RvckxheW91dC5zdGFydFZlY3RvckxheW91dChidWlsZGVyKTtcbiAgICAgICAgVmVjdG9yTGF5b3V0LmFkZEJpdFdpZHRoKGJ1aWxkZXIsIDgpO1xuICAgICAgICBWZWN0b3JMYXlvdXQuYWRkVHlwZShidWlsZGVyLCBWZWN0b3JUeXBlLlZBTElESVRZKTtcbiAgICAgICAgYnVpbGRlci5maW5pc2goVmVjdG9yTGF5b3V0LmVuZFZlY3RvckxheW91dChidWlsZGVyKSk7XG4gICAgICAgIGxheW91dHMucHVzaChWZWN0b3JMYXlvdXQuZ2V0Um9vdEFzVmVjdG9yTGF5b3V0KGJ1aWxkZXIuZGF0YUJ1ZmZlcigpKSk7XG4gICAgICAgIGJ1aWxkZXIgPSBuZXcgZmxhdGJ1ZmZlcnMuQnVpbGRlcigpO1xuICAgIH1cbiAgICBWZWN0b3JMYXlvdXQuc3RhcnRWZWN0b3JMYXlvdXQoYnVpbGRlcik7XG4gICAgVmVjdG9yTGF5b3V0LmFkZEJpdFdpZHRoKGJ1aWxkZXIsIHR5cGUuYml0V2lkdGgoKSk7XG4gICAgVmVjdG9yTGF5b3V0LmFkZFR5cGUoYnVpbGRlciwgVmVjdG9yVHlwZS5EQVRBKTtcbiAgICBidWlsZGVyLmZpbmlzaChWZWN0b3JMYXlvdXQuZW5kVmVjdG9yTGF5b3V0KGJ1aWxkZXIpKTtcbiAgICBsYXlvdXRzLnB1c2goVmVjdG9yTGF5b3V0LmdldFJvb3RBc1ZlY3RvckxheW91dChidWlsZGVyLmRhdGFCdWZmZXIoKSkpO1xuICAgIHJldHVybiBPYmplY3QuY3JlYXRlKGZpZWxkLCB7XG4gICAgICAgIGxheW91dDogeyB2YWx1ZShpKSB7IHJldHVybiBsYXlvdXRzW2ldOyB9IH0sXG4gICAgICAgIGxheW91dExlbmd0aDogeyB2YWx1ZSgpIHsgcmV0dXJuIGxheW91dHMubGVuZ3RoOyB9IH1cbiAgICB9KTtcbn0iXX0= | ||
//# sourceMappingURL=data:application/json;charset=utf8;base64,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QUM7SUFDcEMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNsQixNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ3RCLEtBQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxJQUFLLGtCQUFVLENBQUMsa0JBQWtCLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDO1lBQzdFLEtBQUssRUFBRSxFQUFFLE1BQU0sQ0FBQyxJQUFJLG1CQUFXLENBQUMsa0JBQWtCLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDO1lBQzlFLEtBQUssRUFBRSxFQUFFLE1BQU0sQ0FBQyxJQUFJLG1CQUFXLENBQUMsa0JBQWtCLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDO1lBQzlFLEtBQUssRUFBRSxFQUFFLE1BQU0sQ0FBQyxJQUFJLG1CQUFXLENBQUMsa0JBQWtCLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDO1FBQ2xGLENBQUM7SUFDTCxDQUFDO0lBQ0QsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUN0QixLQUFNLENBQUMsRUFBRSxNQUFNLENBQUMsSUFBSyxtQkFBVyxDQUFDLGtCQUFrQixDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQztRQUMvRSxLQUFLLEVBQUUsRUFBRSxNQUFNLENBQUMsSUFBSSxvQkFBWSxDQUFDLGtCQUFrQixDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQztRQUNoRixLQUFLLEVBQUUsRUFBRSxNQUFNLENBQUMsSUFBSSxvQkFBWSxDQUFDLGtCQUFrQixDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQztRQUNoRixLQUFLLEVBQUUs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LE1BQU0sRUFBRSxDQUFDLEdBQUcsRUFDL0MsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsR0FBRyxnQkFBZ0IsQ0FBQyxpQkFBaUIsQ0FDM0QsQ0FBQztBQUNOLENBQUMiLCJmaWxlIjoicmVhZGVyL3ZlY3Rvci5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8vIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmVcbi8vIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZVxuLy8gZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb25cbi8vIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGVcbi8vIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGVcbi8vIFwiTGljZW5zZVwiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZVxuLy8gd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuLy9cbi8vICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4vL1xuLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLFxuLy8gc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW5cbi8vIFwiQVMgSVNcIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZXG4vLyBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGVcbi8vIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnNcbi8vIHVuZGVyIHRoZSBMaWNlbnNlLlxuXG5pbXBvcnQgeyBWZWN0b3JSZWFkZXJDb250ZXh0IH0gZnJvbSAnLi9hcnJvdyc7XG5pbXBvcnQgKiBhcyBTY2hlbWFfIGZyb20gJy4uL2Zvcm1hdC9TY2hlbWEnO1xuaW1wb3J0ICogYXMgTWVzc2FnZV8gZnJvbSAnLi4vZm9ybWF0L01lc3NhZ2UnO1xuaW1wb3J0IHsgVHlwZWRBcnJheSwgVHlwZWRBcnJheUNvbnN0cnVjdG9yIH0gZnJvbSAnLi4vdmVjdG9yL3R5cGVzJztcbmltcG9ydCB7XG4gICAgVmVjdG9yLCBCb29sVmVjdG9yLCBCaW5hcnlWZWN0b3IsIERpY3Rpb25hcnlWZWN0b3IsXG4gICAgSW50OFZlY3RvciwgSW50MTZWZWN0b3IsIEludDMyVmVjdG9yLCBJbnQ2NFZlY3RvcixcbiAgICBVaW50OFZlY3RvciwgVWludDE2VmVjdG9yLCBVaW50MzJWZWN0b3IsIFVpbnQ2NFZlY3RvcixcbiAgICBVdGY4VmVjdG9yLCBMaXN0VmVjdG9yLCBGaXhlZFNpemVMaXN0VmVjdG9yLCBTdHJ1Y3RWZWN0b3IsXG4gICAgRmxvYXQxNlZlY3RvciwgRmxvYXQzMlZlY3RvciwgRmxvYXQ2NFZlY3RvciwgRGVjaW1hbFZlY3RvcixcbiAgICBEYXRlMzJWZWN0b3IsIERhdGU2NFZlY3RvciwgVGltZTMyVmVjdG9yLCBUaW1lNjRWZWN0b3IsIFRpbWVzdGFtcFZlY3Rvcixcbn0gZnJvbSAnLi4vdmVjdG9yL2Fycm93JztcblxuaW1wb3J0IEludCA9IFNjaGVtYV8ub3JnLmFwYWNoZS5hcnJvdy5mbGF0YnVmLkludDtcbmltcG9ydCBEYXRlID0gU2NoZW1hXy5vcmcuYXBhY2hlLmFycm93LmZsYXRidWYuRGF0ZTtcbmltcG9ydCBUaW1lID0gU2NoZW1hXy5vcmcuYXBhY2hlLmFycm93LmZsYXRidWYuVGltZTtcbmltcG9ydCBUeXBlID0gU2NoZW1hXy5vcmcuYXBhY2hlLmFycm93LmZsYXRidWYuVHlwZTtcbmltcG9ydCBGaWVsZCA9IFNjaGVtYV8ub3JnLmFwYWNoZS5hcnJvdy5mbGF0YnVmLkZpZWxkO1xuaW1wb3J0IEJ1ZmZlciA9IFNjaGVtYV8ub3JnLmFwYWNoZS5hcnJvdy5mbGF0YnVmLkJ1ZmZlcjtcbmltcG9ydCBEZWNpbWFsID0gU2NoZW1hXy5vcmcuYXBhY2hlLmFycm93LmZsYXRidWYuRGVjaW1hbDtcbmltcG9ydCBEYXRlVW5pdCA9IFNjaGVtYV8ub3JnLmFwYWNoZS5hcnJvdy5mbGF0YnVmLkRhdGVVbml0O1xuaW1wb3J0IFRpbWVVbml0ID0gU2NoZW1hXy5vcmcuYXBhY2hlLmFycm93LmZsYXRidWYuVGltZVVuaXQ7XG4vLyBpbXBvcnQgSW50ZXJ2YWwgPSBTY2hlbWFfLm9yZy5hcGFjaGUuYXJyb3cuZmxhdGJ1Zi5JbnRlcnZhbDtcbmltcG9ydCBUaW1lc3RhbXAgPSBTY2hlbWFfLm9yZy5hcGFjaGUuYXJyb3cuZmxhdGJ1Zi5UaW1lc3RhbXA7XG4vLyBpbXBvcnQgSW50ZXJ2YWxVbml0ID0gU2NoZW1hXy5vcmcuYXBhY2hlLmFycm93LmZsYXRidWYuSW50ZXJ2YWxVbml0O1xuaW1wb3J0IFByZWNpc2lvbiA9IFNjaGVtYV8ub3JnLmFwYWNoZS5hcnJvdy5mbGF0YnVmLlByZWNpc2lvbjtcbmltcG9ydCBGaWVsZE5vZGUgPSBNZXNzYWdlXy5vcmcuYXBhY2hlLmFycm93LmZsYXRidWYuRmllbGROb2RlO1xuaW1wb3J0IEZpeGVkU2l6ZUxpc3QgPSBTY2hlbWFfLm9yZy5hcGFjaGUuYXJyb3cuZmxhdGJ1Zi5GaXhlZFNpemVMaXN0O1xuaW1wb3J0IEZsb2F0aW5nUG9pbnQgPSBTY2hlbWFfLm9yZy5hcGFjaGUuYXJyb3cuZmxhdGJ1Zi5GbG9hdGluZ1BvaW50O1xuaW1wb3J0IEZpeGVkU2l6ZUJpbmFyeSA9IFNjaGVtYV8ub3JnLmFwYWNoZS5hcnJvdy5mbGF0YnVmLkZpeGVkU2l6ZUJpbmFyeTtcblxuZXhwb3J0IGZ1bmN0aW9uIHJlYWRWZWN0b3IoZmllbGQ6IEZpZWxkLCBzdGF0ZTogVmVjdG9yUmVhZGVyQ29udGV4dCkge1xuICAgIHJldHVybiByZWFkRGljdGlvbmFyeVZlY3RvcihmaWVsZCwgc3RhdGUpIHx8IHJlYWRWYWx1ZVZlY3RvcihmaWVsZCwgc3RhdGUpO1xufVxuXG4vKiBhIGRpY3Rpb25hcnkgaW5kZXggZGVmYXVsdHMgdG8gc2lnbmVkIDMyIGJpdCBpbnQgaWYgdW5zcGVjaWZpZWQgKi9cbmNvbnN0IGRlZmF1bHREaWN0aW9uYXJ5SW5kZXhUeXBlID0geyBiaXRXaWR0aDogKCkgPT4gMzIsIGlzU2lnbmVkOiAoKSA9PiB0cnVlIH0gYXMgSW50O1xuY29uc3QgaW50VmVjdG9ycyA9IFtcbiAgICBbLyogdW5zaWduZWQgKi8gW1VpbnQ4VmVjdG9yLCAgVWludDhBcnJheSBdLCAgLyogc2lnbmVkICovIFtJbnQ4VmVjdG9yICwgSW50OEFycmF5IF1dLFxuICAgIFsvKiB1bnNpZ25lZCAqLyBbVWludDE2VmVjdG9yLCBVaW50MTZBcnJheV0sICAvKiBzaWduZWQgKi8gW0ludDE2VmVjdG9yLCBJbnQxNkFycmF5XV0sXG4gICAgWy8qIHVuc2lnbmVkICovIFtVaW50MzJWZWN0b3IsIFVpbnQzMkFycmF5XSwgIC8qIHNpZ25lZCAqLyBbSW50MzJWZWN0b3IsIEludDMyQXJyYXldXSwsXG4gICAgWy8qIHVuc2lnbmVkICovIFtVaW50NjRWZWN0b3IsIFVpbnQzMkFycmF5XSwgIC8qIHNpZ25lZCAqLyBbSW50NjRWZWN0b3IsIEludDMyQXJyYXldXVxuXSBhcyBbYW55LCBUeXBlZEFycmF5Q29uc3RydWN0b3JdW11bXTtcblxuZXhwb3J0IGZ1bmN0aW9uIHJlYWREaWN0aW9uYXJ5VmVjdG9yKGZpZWxkOiBGaWVsZCwgc3RhdGU6IFZlY3RvclJlYWRlckNvbnRleHQpIHtcbiAgICBjb25zdCBlbmNvZGluZyA9IGZpZWxkLmRpY3Rpb25hcnkoKSE7XG4gICAgaWYgKGVuY29kaW5nKSB7XG4gICAgICAgIGNvbnN0IHR5cGUgPSBlbmNvZGluZy5pbmRleFR5cGUoKSB8fCBkZWZhdWx0RGljdGlvbmFyeUluZGV4VHlwZTtcbiAgICAgICAgY29uc3QgZGF0YSA9IHN0YXRlLmRpY3Rpb25hcmllcy5nZXQoZW5jb2RpbmcuaWQoKS50b0Zsb2F0NjQoKS50b1N0cmluZygpKSE7XG4gICAgICAgIGNvbnN0IFtJbnRWZWN0b3IsIEludEFycmF5XSA9IGludFZlY3RvcnNbdHlwZS5iaXRXaWR0aCgpID4+PiA0XSFbK3R5cGUuaXNTaWduZWQoKV07XG4gICAgICAgIGNvbnN0IHsgZmllbGROb2RlLCB2YWxpZGl0eSwgZGF0YToga2V5cyB9ID0gcmVhZE51bWVyaWNCdWZmZXJzKGZpZWxkLCBzdGF0ZSwgSW50QXJyYXkpO1xuICAgICAgICByZXR1cm4gbmV3IERpY3Rpb25hcnlWZWN0b3Ioe1xuICAgICAgICAgICAgdmFsaWRpdHksIGRhdGEsIGZpZWxkLCBmaWVsZE5vZGUsXG4gICAgICAgICAgICBrZXlzOiBuZXcgSW50VmVjdG9yKHsgZmllbGQsIGZpZWxkTm9kZSwgZGF0YToga2V5cyB9KVxuICAgICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWFkVmFsdWVWZWN0b3IoZmllbGQ6IEZpZWxkLCBzdGF0ZTogVmVjdG9yUmVhZGVyQ29udGV4dCk6IFZlY3RvciB7XG4gICAgc3dpdGNoIChmaWVsZC50eXBlVHlwZSgpKSB7XG4gICAgICAgIGNhc2UgVHlwZS5OT05FOiByZXR1cm4gcmVhZE51bGxWZWN0b3IoKTtcbiAgICAgICAgY2FzZSBUeXBlLk51bGw6IHJldHVybiByZWFkTnVsbFZlY3RvcigpO1xuICAgICAgICAvLyBjYXNlIFR5cGUuTWFwOiByZXR1cm4gcmVhZE1hcFZlY3RvcihmaWVsZCwgc3RhdGUpO1xuICAgICAgICBjYXNlIFR5cGUuSW50OiByZXR1cm4gcmVhZEludFZlY3RvcihmaWVsZCwgc3RhdGUpO1xuICAgICAgICBjYXNlIFR5cGUuQm9vbDogcmV0dXJuIHJlYWRCb29sVmVjdG9yKGZpZWxkLCBzdGF0ZSk7XG4gICAgICAgIGNhc2UgVHlwZS5EYXRlOiByZXR1cm4gcmVhZERhdGVWZWN0b3IoZmllbGQsIHN0YXRlKTtcbiAgICAgICAgY2FzZSBUeXBlLkxpc3Q6IHJldHVybiByZWFkTGlzdFZlY3RvcihmaWVsZCwgc3RhdGUpO1xuICAgICAgICBjYXNlIFR5cGUuVXRmODogcmV0dXJuIHJlYWRVdGY4VmVjdG9yKGZpZWxkLCBzdGF0ZSk7XG4gICAgICAgIGNhc2UgVHlwZS5UaW1lOiByZXR1cm4gcmVhZFRpbWVWZWN0b3IoZmllbGQsIHN0YXRlKTtcbiAgICAgICAgLy8gY2FzZSBUeXBlLlVuaW9uOiByZXR1cm4gcmVhZFVuaW9uVmVjdG9yKGZpZWxkLCBzdGF0ZSk7XG4gICAgICAgIGNhc2UgVHlwZS5CaW5hcnk6IHJldHVybiByZWFkQmluYXJ5VmVjdG9yKGZpZWxkLCBzdGF0ZSk7XG4gICAgICAgIGNhc2UgVHlwZS5EZWNpbWFsOiByZXR1cm4gcmVhZERlY2ltYWxWZWN0b3IoZmllbGQsIHN0YXRlKTtcbiAgICAgICAgY2FzZSBUeXBlLlN0cnVjdF86IHJldHVybiByZWFkU3RydWN0VmVjdG9yKGZpZWxkLCBzdGF0ZSk7XG4gICAgICAgIGNhc2UgVHlwZS5GbG9hdGluZ1BvaW50OiByZXR1cm4gcmVhZEZsb2F0VmVjdG9yKGZpZWxkLCBzdGF0ZSk7XG4gICAgICAgIGNhc2UgVHlwZS5UaW1lc3RhbXA6IHJldHVybiByZWFkVGltZXN0YW1wVmVjdG9yKGZpZWxkLCBzdGF0ZSk7XG4gICAgICAgIGNhc2UgVHlwZS5GaXhlZFNpemVMaXN0OiByZXR1cm4gcmVhZEZpeGVkU2l6ZUxpc3RWZWN0b3IoZmllbGQsIHN0YXRlKTtcbiAgICAgICAgY2FzZSBUeXBlLkZpeGVkU2l6ZUJpbmFyeTogcmV0dXJuIHJlYWRGaXhlZFNpemVCaW5hcnlWZWN0b3IoZmllbGQsIHN0YXRlKTtcbiAgICB9XG4gICAgdGhyb3cgbmV3IEVycm9yKGBVbnJlY29nbml6ZWQgVmVjdG9yIHsgbmFtZTogJHtUeXBlW2ZpZWxkLnR5cGVUeXBlKCldfSwgdHlwZTogJHtmaWVsZC50eXBlVHlwZSgpfSB9YCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWFkTnVsbFZlY3RvcigpIHtcbiAgICByZXR1cm4gbmV3IFZlY3RvcigpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVhZEJvb2xWZWN0b3IoZmllbGQ6IEZpZWxkLCBzdGF0ZTogVmVjdG9yUmVhZGVyQ29udGV4dCkge1xuICAgIHJldHVybiBuZXcgQm9vbFZlY3RvcihyZWFkTnVtZXJpY0J1ZmZlcnMoZmllbGQsIHN0YXRlLCBVaW50OEFycmF5KSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWFkRGF0ZVZlY3RvcihmaWVsZDogRmllbGQsIHN0YXRlOiBWZWN0b3JSZWFkZXJDb250ZXh0KSB7XG4gICAgY29uc3QgdHlwZSA9IGZpZWxkLnR5cGUobmV3IERhdGUoKSkhO1xuICAgIHN3aXRjaCAodHlwZS51bml0KCkpIHtcbiAgICAgICAgY2FzZSBEYXRlVW5pdC5EQVk6IHJldHVybiBuZXcgRGF0ZTMyVmVjdG9yKHsgLi4ucmVhZE51bWVyaWNCdWZmZXJzKGZpZWxkLCBzdGF0ZSwgSW50MzJBcnJheSksIHVuaXQ6IERhdGVVbml0W3R5cGUudW5pdCgpXSB9KTtcbiAgICAgICAgY2FzZSBEYXRlVW5pdC5NSUxMSVNFQ09ORDogcmV0dXJuIG5ldyBEYXRlNjRWZWN0b3IoeyAuLi5yZWFkTnVtZXJpY0J1ZmZlcnMoZmllbGQsIHN0YXRlLCBJbnQzMkFycmF5KSwgdW5pdDogRGF0ZVVuaXRbdHlwZS51bml0KCldIH0pO1xuICAgIH1cbiAgICB0aHJvdyBuZXcgRXJyb3IoYFVucmVjb2duaXplZCBEYXRlIHsgdW5pdDogJHt0eXBlLnVuaXQoKX0gfWApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVhZFRpbWVWZWN0b3IoZmllbGQ6IEZpZWxkLCBzdGF0ZTogVmVjdG9yUmVhZGVyQ29udGV4dCkge1xuICAgIGNvbnN0IHR5cGUgPSBmaWVsZC50eXBlKG5ldyBUaW1lKCkpITtcbiAgICBzd2l0Y2ggKHR5cGUuYml0V2lkdGgoKSkge1xuICAgICAgICBjYXNlIDMyOiByZXR1cm4gbmV3IFRpbWUzMlZlY3Rvcih7IC4uLnJlYWROdW1lcmljQnVmZmVycyhmaWVsZCwgc3RhdGUsIEludDMyQXJyYXkpLCB1bml0OiBUaW1lVW5pdFt0eXBlLnVuaXQoKV0gfSk7XG4gICAgICAgIGNhc2UgNjQ6IHJldHVybiBuZXcgVGltZTY0VmVjdG9yKHsgLi4ucmVhZE51bWVyaWNCdWZmZXJzKGZpZWxkLCBzdGF0ZSwgVWludDMyQXJyYXkpLCB1bml0OiBUaW1lVW5pdFt0eXBlLnVuaXQoKV0gfSk7XG4gICAgfVxuICAgIHRocm93IG5ldyBFcnJvcihgVW5yZWNvZ25pemVkIFRpbWUgeyB1bml0OiAke3R5cGUudW5pdCgpfSwgYml0V2lkdGg6ICR7dHlwZS5iaXRXaWR0aCgpfSB9YCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWFkVGltZXN0YW1wVmVjdG9yKGZpZWxkOiBGaWVsZCwgc3RhdGU6IFZlY3RvclJlYWRlckNvbnRleHQpIHtcbiAgICBjb25zdCB0eXBlID0gZmllbGQudHlwZShuZXcgVGltZXN0YW1wKCkpITtcbiAgICBjb25zdCB7IGZpZWxkTm9kZSwgdmFsaWRpdHksIGRhdGEgfSA9IHJlYWROdW1lcmljQnVmZmVycyhmaWVsZCwgc3RhdGUsIFVpbnQzMkFycmF5KTtcbiAgICByZXR1cm4gbmV3IFRpbWVzdGFtcFZlY3Rvcih7XG4gICAgICAgIGZpZWxkLCBmaWVsZE5vZGUsIHZhbGlkaXR5LCBkYXRhLFxuICAgICAgICB0aW1lem9uZTogdHlwZS50aW1lem9uZSgpISxcbiAgICAgICAgdW5pdDogVGltZVVuaXRbdHlwZS51bml0KCldLFxuICAgIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVhZExpc3RWZWN0b3IoZmllbGQ6IEZpZWxkLCBzdGF0ZTogVmVjdG9yUmVhZGVyQ29udGV4dCkge1xuICAgIGNvbnN0IHsgZmllbGROb2RlLCB2YWxpZGl0eSwgb2Zmc2V0cyB9ID0gcmVhZExpc3RCdWZmZXJzKGZpZWxkLCBzdGF0ZSk7XG4gICAgcmV0dXJuIG5ldyBMaXN0VmVjdG9yKHtcbiAgICAgICAgZmllbGQsIGZpZWxkTm9kZSwgdmFsaWRpdHksIG9mZnNldHMsXG4gICAgICAgIHZhbHVlczogcmVhZFZlY3RvcihmaWVsZC5jaGlsZHJlbigwKSEsIHN0YXRlKVxuICAgIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVhZFN0cnVjdFZlY3RvcihmaWVsZDogRmllbGQsIHN0YXRlOiBWZWN0b3JSZWFkZXJDb250ZXh0KSB7XG4gICAgY29uc3QgbiA9IGZpZWxkLmNoaWxkcmVuTGVuZ3RoKCk7XG4gICAgY29uc3QgY29sdW1ucyA9IG5ldyBBcnJheTxWZWN0b3I+KG4pO1xuICAgIGNvbnN0IGZpZWxkTm9kZSA9IHN0YXRlLnJlYWROZXh0Tm9kZSgpO1xuICAgIGNvbnN0IHZhbGlkaXR5ID0gcmVhZFZhbGlkaXR5QnVmZmVyKGZpZWxkLCBmaWVsZE5vZGUsIHN0YXRlKTtcbiAgICBmb3IgKGxldCBpID0gLTEsIGNoaWxkOiBGaWVsZDsgKytpIDwgbjspIHtcbiAgICAgICAgaWYgKGNoaWxkID0gZmllbGQuY2hpbGRyZW4oaSkhKSB7XG4gICAgICAgICAgICBjb2x1bW5zW2ldID0gcmVhZFZlY3RvcihjaGlsZCwgc3RhdGUpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBuZXcgU3RydWN0VmVjdG9yKHsgZmllbGQsIGZpZWxkTm9kZSwgdmFsaWRpdHksIGNvbHVtbnMgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWFkQmluYXJ5VmVjdG9yKGZpZWxkOiBGaWVsZCwgc3RhdGU6IFZlY3RvclJlYWRlckNvbnRleHQpIHtcbiAgICByZXR1cm4gbmV3IEJpbmFyeVZlY3RvcihyZWFkQmluYXJ5QnVmZmVycyhmaWVsZCwgc3RhdGUpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlYWREZWNpbWFsVmVjdG9yKGZpZWxkOiBGaWVsZCwgc3RhdGU6IFZlY3RvclJlYWRlckNvbnRleHQpIHtcbiAgICBjb25zdCB0eXBlID0gZmllbGQudHlwZShuZXcgRGVjaW1hbCgpKSE7XG4gICAgY29uc3QgeyBmaWVsZE5vZGUsIHZhbGlkaXR5LCBkYXRhIH0gPSByZWFkTnVtZXJpY0J1ZmZlcnMoZmllbGQsIHN0YXRlLCBVaW50MzJBcnJheSk7XG4gICAgcmV0dXJuIG5ldyBEZWNpbWFsVmVjdG9yKHtcbiAgICAgICAgc2NhbGU6IHR5cGUuc2NhbGUoKSxcbiAgICAgICAgcHJlY2lzaW9uOiB0eXBlLnByZWNpc2lvbigpLFxuICAgICAgICBmaWVsZCwgZmllbGROb2RlLCB2YWxpZGl0eSwgZGF0YVxuICAgIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVhZFV0ZjhWZWN0b3IoZmllbGQ6IEZpZWxkLCBzdGF0ZTogVmVjdG9yUmVhZGVyQ29udGV4dCkge1xuICAgIGNvbnN0IHsgZmllbGROb2RlLCB2YWxpZGl0eSwgb2Zmc2V0cywgZGF0YSB9ID0gcmVhZEJpbmFyeUJ1ZmZlcnMoZmllbGQsIHN0YXRlKTtcbiAgICByZXR1cm4gbmV3IFV0ZjhWZWN0b3Ioe1xuICAgICAgICBmaWVsZCwgZmllbGROb2RlLFxuICAgICAgICB2YWx1ZXM6IG5ldyBCaW5hcnlWZWN0b3Ioe1xuICAgICAgICAgICAgdmFsaWRpdHksIG9mZnNldHMsIGRhdGFcbiAgICAgICAgfSlcbiAgICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlYWRGaXhlZFNpemVMaXN0VmVjdG9yKGZpZWxkOiBGaWVsZCwgc3RhdGU6IFZlY3RvclJlYWRlckNvbnRleHQpIHtcbiAgICBjb25zdCB0eXBlID0gZmllbGQudHlwZShuZXcgRml4ZWRTaXplTGlzdCgpKSE7XG4gICAgY29uc3QgZmllbGROb2RlID0gc3RhdGUucmVhZE5leHROb2RlKCk7XG4gICAgY29uc3QgdmFsaWRpdHkgPSByZWFkVmFsaWRpdHlCdWZmZXIoZmllbGQsIGZpZWxkTm9kZSwgc3RhdGUpO1xuICAgIHJldHVybiBuZXcgRml4ZWRTaXplTGlzdFZlY3Rvcih7XG4gICAgICAgIGZpZWxkLCBmaWVsZE5vZGUsIHZhbGlkaXR5LFxuICAgICAgICBzaXplOiB0eXBlLmxpc3RTaXplKCksXG4gICAgICAgIHZhbHVlczogcmVhZFZlY3RvcihmaWVsZC5jaGlsZHJlbigwKSEsIHN0YXRlKVxuICAgIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVhZEZpeGVkU2l6ZUJpbmFyeVZlY3RvcihmaWVsZDogRmllbGQsIHN0YXRlOiBWZWN0b3JSZWFkZXJDb250ZXh0KSB7XG4gICAgY29uc3QgdHlwZSA9IGZpZWxkLnR5cGUobmV3IEZpeGVkU2l6ZUJpbmFyeSgpKSE7XG4gICAgY29uc3QgeyBmaWVsZE5vZGUsIHZhbGlkaXR5LCBkYXRhIH0gPSByZWFkTnVtZXJpY0J1ZmZlcnMoZmllbGQsIHN0YXRlLCBVaW50OEFycmF5KTtcbiAgICByZXR1cm4gbmV3IEZpeGVkU2l6ZUxpc3RWZWN0b3Ioe1xuICAgICAgICBzaXplOiB0eXBlLmJ5dGVXaWR0aCgpLFxuICAgICAgICBmaWVsZCwgZmllbGROb2RlLCB2YWxpZGl0eSxcbiAgICAgICAgdmFsdWVzOiBuZXcgVWludDhWZWN0b3IoeyBkYXRhIH0pXG4gICAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWFkRmxvYXRWZWN0b3IoZmllbGQ6IEZpZWxkLCBzdGF0ZTogVmVjdG9yUmVhZGVyQ29udGV4dCkge1xuICAgIGNvbnN0IHR5cGUgPSBmaWVsZC50eXBlKG5ldyBGbG9hdGluZ1BvaW50KCkpITtcbiAgICBzd2l0Y2ggKHR5cGUucHJlY2lzaW9uKCkpIHtcbiAgICAgICAgY2FzZSBQcmVjaXNpb24uSEFMRjogICByZXR1cm4gbmV3IEZsb2F0MTZWZWN0b3IocmVhZE51bWVyaWNCdWZmZXJzKGZpZWxkLCBzdGF0ZSwgVWludDE2QXJyYXkpKTtcbiAgICAgICAgY2FzZSBQcmVjaXNpb24uU0lOR0xFOiByZXR1cm4gbmV3IEZsb2F0MzJWZWN0b3IocmVhZE51bWVyaWNCdWZmZXJzKGZpZWxkLCBzdGF0ZSwgRmxvYXQzMkFycmF5KSk7XG4gICAgICAgIGNhc2UgUHJlY2lzaW9uLkRPVUJMRTogcmV0dXJuIG5ldyBGbG9hdDY0VmVjdG9yKHJlYWROdW1lcmljQnVmZmVycyhmaWVsZCwgc3RhdGUsIEZsb2F0NjRBcnJheSkpO1xuICAgIH1cbiAgICB0aHJvdyBuZXcgRXJyb3IoYFVucmVjb2duaXplZCBGbG9hdGluZ1BvaW50IHsgcHJlY2lzaW9uOiAke3R5cGUucHJlY2lzaW9uKCl9IH1gKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlYWRJbnRWZWN0b3IoZmllbGQ6IEZpZWxkLCBzdGF0ZTogVmVjdG9yUmVhZGVyQ29udGV4dCkge1xuICAgIGNvbnN0IHR5cGUgPSBmaWVsZC50eXBlKG5ldyBJbnQoKSkhO1xuICAgIGlmICh0eXBlLmlzU2lnbmVkKCkpIHtcbiAgICAgICAgc3dpdGNoICh0eXBlLmJpdFdpZHRoKCkpIHtcbiAgICAgICAgICAgIGNhc2UgIDg6IHJldHVybiBuZXcgIEludDhWZWN0b3IocmVhZE51bWVyaWNCdWZmZXJzKGZpZWxkLCBzdGF0ZSwgSW50OEFycmF5KSk7XG4gICAgICAgICAgICBjYXNlIDE2OiByZXR1cm4gbmV3IEludDE2VmVjdG9yKHJlYWROdW1lcmljQnVmZmVycyhmaWVsZCwgc3RhdGUsIEludDE2QXJyYXkpKTtcbiAgICAgICAgICAgIGNhc2UgMzI6IHJldHVybiBuZXcgSW50MzJWZWN0b3IocmVhZE51bWVyaWNCdWZmZXJzKGZpZWxkLCBzdGF0ZSwgSW50MzJBcnJheSkpO1xuICAgICAgICAgICAgY2FzZSA2NDogcmV0dXJuIG5ldyBJbnQ2NFZlY3RvcihyZWFkTnVtZXJpY0J1ZmZlcnMoZmllbGQsIHN0YXRlLCBJbnQzMkFycmF5KSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgc3dpdGNoICh0eXBlLmJpdFdpZHRoKCkpIHtcbiAgICAgICAgY2FzZSAgODogcmV0dXJuIG5ldyAgVWludDhWZWN0b3IocmVhZE51bWVyaWNCdWZmZXJzKGZpZWxkLCBzdGF0ZSwgVWludDhBcnJheSkpO1xuICAgICAgICBjYXNlIDE2OiByZXR1cm4gbmV3IFVpbnQxNlZlY3RvcihyZWFkTnVtZXJpY0J1ZmZlcnMoZmllbGQsIHN0YXRlLCBVaW50MTZBcnJheSkpO1xuICAgICAgICBjYXNlIDMyOiByZXR1cm4gbmV3IFVpbnQzMlZlY3RvcihyZWFkTnVtZXJpY0J1ZmZlcnMoZmllbGQsIHN0YXRlLCBVaW50MzJBcnJheSkpO1xuICAgICAgICBjYXNlIDY0OiByZXR1cm4gbmV3IFVpbnQ2NFZlY3RvcihyZWFkTnVtZXJpY0J1ZmZlcnMoZmllbGQsIHN0YXRlLCBVaW50MzJBcnJheSkpO1xuICAgIH1cbiAgICB0aHJvdyBuZXcgRXJyb3IoYFVucmVjb2duaXplZCBJbnQgeyBpc1NpZ25lZDogJHt0eXBlLmlzU2lnbmVkKCl9LCBiaXRXaWR0aDogJHt0eXBlLmJpdFdpZHRoKCl9IH1gKTtcbn1cblxuZnVuY3Rpb24gcmVhZExpc3RCdWZmZXJzKGZpZWxkOiBGaWVsZCwgc3RhdGU6IFZlY3RvclJlYWRlckNvbnRleHQpIHtcbiAgICBjb25zdCBmaWVsZE5vZGUgPSBzdGF0ZS5yZWFkTmV4dE5vZGUoKTtcbiAgICBjb25zdCB2YWxpZGl0eSA9IHJlYWRWYWxpZGl0eUJ1ZmZlcihmaWVsZCwgZmllbGROb2RlLCBzdGF0ZSk7XG4gICAgY29uc3Qgb2Zmc2V0cyA9IHJlYWREYXRhQnVmZmVyKEludDMyQXJyYXksIHN0YXRlKTtcbiAgICByZXR1cm4geyBmaWVsZCwgZmllbGROb2RlLCB2YWxpZGl0eSwgb2Zmc2V0cyB9O1xufVxuXG5mdW5jdGlvbiByZWFkQmluYXJ5QnVmZmVycyhmaWVsZDogRmllbGQsIHN0YXRlOiBWZWN0b3JSZWFkZXJDb250ZXh0KSB7XG4gICAgY29uc3QgZmllbGROb2RlID0gc3RhdGUucmVhZE5leHROb2RlKCk7XG4gICAgY29uc3QgdmFsaWRpdHkgPSByZWFkVmFsaWRpdHlCdWZmZXIoZmllbGQsIGZpZWxkTm9kZSwgc3RhdGUpO1xuICAgIGNvbnN0IG9mZnNldHMgPSByZWFkRGF0YUJ1ZmZlcihJbnQzMkFycmF5LCBzdGF0ZSk7XG4gICAgY29uc3QgZGF0YSA9IHJlYWREYXRhQnVmZmVyKFVpbnQ4QXJyYXksIHN0YXRlKTtcbiAgICByZXR1cm4geyBmaWVsZCwgZmllbGROb2RlLCB2YWxpZGl0eSwgb2Zmc2V0cywgZGF0YSB9O1xufVxuXG5mdW5jdGlvbiByZWFkTnVtZXJpY0J1ZmZlcnM8VCBleHRlbmRzIFR5cGVkQXJyYXk+KGZpZWxkOiBGaWVsZCwgc3RhdGU6IFZlY3RvclJlYWRlckNvbnRleHQsIEFycmF5Q29uc3RydWN0b3I6IFR5cGVkQXJyYXlDb25zdHJ1Y3RvcjxUPikge1xuICAgIGNvbnN0IGZpZWxkTm9kZSA9IHN0YXRlLnJlYWROZXh0Tm9kZSgpO1xuICAgIGNvbnN0IHZhbGlkaXR5ID0gcmVhZFZhbGlkaXR5QnVmZmVyKGZpZWxkLCBmaWVsZE5vZGUsIHN0YXRlKTtcbiAgICBjb25zdCBkYXRhID0gcmVhZERhdGFCdWZmZXIoQXJyYXlDb25zdHJ1Y3Rvciwgc3RhdGUpO1xuICAgIHJldHVybiB7IGZpZWxkLCBmaWVsZE5vZGUsIHZhbGlkaXR5LCBkYXRhIH07XG59XG5cbmZ1bmN0aW9uIHJlYWREYXRhQnVmZmVyPFQgZXh0ZW5kcyBUeXBlZEFycmF5PihBcnJheUNvbnN0cnVjdG9yOiBUeXBlZEFycmF5Q29uc3RydWN0b3I8VD4sIHN0YXRlOiBWZWN0b3JSZWFkZXJDb250ZXh0KSB7XG4gICAgcmV0dXJuIGNyZWF0ZVR5cGVkQXJyYXkoQXJyYXlDb25zdHJ1Y3Rvciwgc3RhdGUuYnl0ZXMsIHN0YXRlLm9mZnNldCwgc3RhdGUucmVhZE5leHRCdWZmZXIoKSk7XG59XG5cbmZ1bmN0aW9uIHJlYWRWYWxpZGl0eUJ1ZmZlcihmaWVsZDogRmllbGQsIGZpZWxkTm9kZTogRmllbGROb2RlLCBzdGF0ZTogVmVjdG9yUmVhZGVyQ29udGV4dCkge1xuICAgIHJldHVybiBjcmVhdGVWYWxpZGl0eUFycmF5KGZpZWxkLCBmaWVsZE5vZGUsIHN0YXRlLmJ5dGVzLCBzdGF0ZS5vZmZzZXQsIHN0YXRlLnJlYWROZXh0QnVmZmVyKCkpO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVWYWxpZGl0eUFycmF5KGZpZWxkOiBGaWVsZCwgZmllbGROb2RlOiBGaWVsZE5vZGUsIGJ5dGVzOiBVaW50OEFycmF5LCBvZmZzZXQ6IG51bWJlciwgYnVmZmVyOiBCdWZmZXIpIHtcbiAgICByZXR1cm4gZmllbGQubnVsbGFibGUoKSAmJiBmaWVsZE5vZGUubnVsbENvdW50KCkubG93ID4gMCAmJiBjcmVhdGVUeXBlZEFycmF5KFVpbnQ4QXJyYXksIGJ5dGVzLCBvZmZzZXQsIGJ1ZmZlcikgfHwgbnVsbDtcbn1cblxuZnVuY3Rpb24gY3JlYXRlVHlwZWRBcnJheTxUIGV4dGVuZHMgVHlwZWRBcnJheT4oQXJyYXlDb25zdHJ1Y3RvcjogVHlwZWRBcnJheUNvbnN0cnVjdG9yPFQ+LCBieXRlczogVWludDhBcnJheSwgb2Zmc2V0OiBudW1iZXIsIGJ1ZmZlcjogQnVmZmVyKSB7XG4gICAgcmV0dXJuIG5ldyBBcnJheUNvbnN0cnVjdG9yKFxuICAgICAgICBieXRlcy5idWZmZXIsXG4gICAgICAgIGJ5dGVzLmJ5dGVPZmZzZXQgKyBvZmZzZXQgKyBidWZmZXIub2Zmc2V0KCkubG93LFxuICAgICAgICBidWZmZXIubGVuZ3RoKCkubG93IC8gQXJyYXlDb25zdHJ1Y3Rvci5CWVRFU19QRVJfRUxFTUVOVFxuICAgICk7XG59XG4iXX0= |
145
README.md
@@ -22,28 +22,25 @@ <!--- | ||
[![Build Status](https://travis-ci.org/graphistry/arrow.svg?branch=master)](https://travis-ci.org/graphistry/arrow) | ||
[![Coverage Status](https://coveralls.io/repos/github/graphistry/arrow/badge.svg)](https://coveralls.io/github/graphistry/arrow) | ||
[![Build Status](https://travis-ci.org/apache/arrow.svg?branch=master)](https://travis-ci.org/apache/arrow) | ||
[![Coverage Status](https://coveralls.io/repos/github/apache/arrow/badge.svg)](https://coveralls.io/github/apache/arrow) | ||
Loading big native dataframes in JavaScript is finally awesome. `apache-arrow` provides an easy, modern, and efficient zero-copy JS interface to parse, iterate, and access [Apache Arrow](https://github.com/apache/arrow) columnar data on CPUs (GPU support via [GoAI](http://gpuopenanalytics.com/) is occurring in parallel). | ||
Arrow is a set of technologies that enable big-data systems to process and transfer data quickly. | ||
`apache-arrow` is tested on Apache's sample Arrow files and [MapD Core's](https://www.mapd.com/platform/core/) Arrow output, and powers much of [Graphistry's](https://www.graphistry.com) GPU visual analytics platform. It is in active development by Graphistry for its GPU client/cloud visual graph analytics platform. | ||
## install [apache-arrow from npm](https://www.npmjs.com/package/apache-arrow) | ||
***This project has been developed outside the Apache Software Foundation, but an effort to transfer IP and ownership to the ASF is underway.*** | ||
`npm install apache-arrow` | ||
## install | ||
(read about how we [package apache-arrow](#packaging) below) | ||
`npm install apache-arrow` | ||
# Powering Columnar In-Memory Analytics | ||
# What's 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 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 maximize caches 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/), ...). By standardizing on a common interchange format, big data systems can reduce the costs and friction associated with cross-system communication. | ||
# Related Projects | ||
* [Apache Arrow](https://github.com/apache/arrow) -- Arrow columnar format | ||
* [GoAI](http://gpuopenanalytics.com/) -- Arrow standard extensions for GPUs | ||
* [rxjs-mapd](https://github.com/graphistry/rxjs-mapd) -- Library for querying MapD Core in node | ||
* [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 | ||
# Examples | ||
# Usage | ||
@@ -57,3 +54,3 @@ ## Get a table from an Arrow file on disk | ||
const arrow = readFileSync('simple.arrow'); | ||
const table = Table.from(arrow); | ||
const table = Table.from([arrow]); | ||
@@ -78,3 +75,3 @@ console.log(table.toString()); | ||
const table = Table.from(...[ | ||
const table = Table.from([ | ||
'latlong/schema.arrow', | ||
@@ -102,3 +99,3 @@ 'latlong/records.arrow' | ||
const table = Table.from(...[ | ||
const table = Table.from([ | ||
'latlong/schema.arrow', | ||
@@ -108,3 +105,3 @@ 'latlong/records.arrow' | ||
const column = table.getColumn('origin_lat'); | ||
const column = table.col('origin_lat'); | ||
const typed = column.slice(); | ||
@@ -119,3 +116,3 @@ | ||
## Use with MapD Core | ||
## Usage with MapD Core | ||
@@ -128,21 +125,25 @@ ```es6 | ||
const host = `localhost`; | ||
const encrypted = false; | ||
const username = `mapd`; | ||
const db = `mapd`; | ||
const user = `mapd`; | ||
const password = `HyperInteractive`; | ||
const dbName = `mapd`, timeout = 5000; | ||
MapD.open(host, port, encrypted) | ||
.connect(dbName, username, password, timeout) | ||
.flatMap((session) => | ||
session.queryDF(` | ||
SELECT origin_city | ||
FROM flights | ||
WHERE dest_city ILIKE 'dallas' | ||
LIMIT 5` | ||
).disconnect() | ||
MapD.open(host, port) | ||
.connect(db, user, password) | ||
.flatMap((session) => | ||
// queryDF returns Arrow buffers | ||
session.queryDF(` | ||
SELECT origin_city | ||
FROM flights | ||
WHERE dest_city ILIKE 'dallas' | ||
LIMIT 5` | ||
).disconnect() | ||
) | ||
.map(([schema, records]) => | ||
Table.from(schema, records)) | ||
.subscribe((table) => console.log( | ||
table.toString({ index: true }))); | ||
// Create Arrow Table from results | ||
Table.from(schema, records)) | ||
.map((table) => | ||
// Stringify the table to CSV with row numbers | ||
table.toString({ index: true })) | ||
.subscribe((csvStr) => | ||
console.log(csvStr)); | ||
/* | ||
@@ -158,38 +159,62 @@ Index, origin_city | ||
# Contribute | ||
# Getting involved | ||
See [develop.md](https://github.com/graphistry/arrow/blob/master/develop.md) | ||
See [develop.md](https://github.com/apache/arrow/blob/master/develop.md) | ||
Please create an issue if you encounter any bugs! | ||
Even if you do not plan to contribute to Apache Arrow itself or Arrow | ||
integrations in other projects, we'd be happy to have you involved: | ||
PR's welcome! Here's some ideas: | ||
* Join the mailing list: send an email to | ||
[dev-subscribe@arrow.apache.org][1]. Share your ideas and use cases for the | ||
project. | ||
* [Follow our activity on JIRA][3] | ||
* [Learn the format][2] | ||
* Contribute code to one of the reference implementations | ||
* API docs | ||
* More Tests/Benchmarks | ||
* Performance optimizations | ||
* Arrows from node-streams and async-iterators | ||
* GPU Arrows from node-opencl and node-cuda buffers | ||
* Bindings to [libgdf](https://github.com/gpuopenanalytics/libgdf) | ||
We prefer to receive contributions in the form of GitHub pull requests. Please send pull requests against the [github.com/apache/arrow][4] repository. | ||
### packaging | ||
`apache-arrow` is written in TypeScript, but the project is compiled to multiple JS versions and common module formats. The base `apache-arrow` package includes all the compilation targets for convenience, but if you're conscientious about your `node_modules` footprint, don't worry -- we got you. The targets are also published under the `@apache-arrow` namespace: | ||
If you are looking for some ideas on what to contribute, check out the [JIRA | ||
issues][3] for the Apache Arrow project. Comment on the issue and/or contact | ||
[dev@arrow.apache.org](http://mail-archives.apache.org/mod_mbox/arrow-dev/) | ||
with your questions and ideas. | ||
If you’d like to report a bug but don’t have time to fix it, you can still post | ||
it on JIRA, or email the mailing list | ||
[dev@arrow.apache.org](http://mail-archives.apache.org/mod_mbox/arrow-dev/) | ||
## Packaging | ||
`apache-arrow` is written in TypeScript, but the project is compiled to multiple JS versions and common module formats. | ||
The base `apache-arrow` package includes all the compilation targets for convenience, but if you're conscientious about your `node_modules` footprint, we got you. | ||
The targets are also published under the `@apache-arrow` namespace: | ||
```sh | ||
npm install @apache-arrow/es5-cjs # ES5 CommonJS target | ||
npm install @apache-arrow/es5-esm # ES5 ESModules target | ||
npm install @apache-arrow/es5-umd # ES5 UMD target | ||
npm install @apache-arrow/es2015-cjs # ES2015 CommonJS target | ||
npm install @apache-arrow/es2015-esm # ES2015 ESModules target | ||
npm install @apache-arrow/es2015-umd # ES2015 UMD target | ||
npm install @apache-arrow/esnext-esm # ESNext CommonJS target | ||
npm install @apache-arrow/esnext-esm # ESNext ESModules target | ||
npm install @apache-arrow/esnext-umd # ESNext UMD target | ||
npm install apache-arrow # <-- combined es5/CommonJS + UMD, es2015/ESModules + UMD, and TypeScript package | ||
npm install @apache-arrow/ts # standalone TypeScript package | ||
npm install @apache-arrow/es5-cjs # standalone es5/CommonJS package | ||
npm install @apache-arrow/es5-esm # standalone es5/ESModules package | ||
npm install @apache-arrow/es5-umd # standalone es5/UMD package | ||
npm install @apache-arrow/es2015-cjs # standalone es2015/CommonJS package | ||
npm install @apache-arrow/es2015-esm # standalone es2015/ESModules package | ||
npm install @apache-arrow/es2015-umd # standalone es2015/UMD package | ||
npm install @apache-arrow/esnext-esm # standalone esNext/CommonJS package | ||
npm install @apache-arrow/esnext-esm # standalone esNext/ESModules package | ||
npm install @apache-arrow/esnext-umd # standalone esNext/UMD package | ||
``` | ||
### why do we package like this? | ||
The JS community is a diverse group with a varied list of target environments and tool chains. Publishing multiple packages accommodates projects of all types. Friends targeting the latest JS runtimes can pull in the ESNext + ESM build. Friends needing wide browser support and small download size can use the UMD bundle, which has been run through Google's Closure Compiler with advanced optimizations. | ||
### Why we package like this | ||
If you think we missed a compilation target and it's a blocker for adoption, please open an issue. We're here for you ❤️. | ||
The JS community is a diverse group with a varied list of target environments and tool chains. Publishing multiple packages accommodates projects of all stripes. | ||
If you think we missed a compilation target and it's a blocker for adoption, please open an issue. | ||
# License | ||
[Apache 2.0](https://github.com/graphistry/arrow/blob/master/LICENSE) | ||
[Apache 2.0](https://github.com/apache/arrow/blob/master/LICENSE) | ||
[1]: mailto:dev-subscribe@arrow.apache.org | ||
[2]: https://github.com/apache/arrow/tree/master/format | ||
[3]: https://issues.apache.org/jira/browse/ARROW | ||
[4]: https://github.com/apache/arrow |
import { Vector } from './vector'; | ||
export declare class DictionaryVector<T> extends Vector<T> { | ||
protected data: Vector<T>; | ||
protected keys: Vector<number>; | ||
constructor(index: Vector<number>, dictionary: Vector<T>); | ||
index(index: number): number; | ||
value(index: number): T; | ||
get(index: number): T; | ||
concat(vector: DictionaryVector<T>): any; | ||
[Symbol.iterator](): IterableIterator<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>; | ||
} |
@@ -0,1 +1,2 @@ | ||
"use strict"; | ||
// Licensed to the Apache Software Foundation (ASF) under one | ||
@@ -19,25 +20,25 @@ // or more contributor license agreements. See the NOTICE file | ||
const vector_1 = require("./vector"); | ||
const virtual_1 = require("./virtual"); | ||
class DictionaryVector extends vector_1.Vector { | ||
constructor(index, dictionary) { | ||
constructor(argv) { | ||
super(); | ||
this.keys = index; | ||
this.data = dictionary; | ||
this.length = index && index.length || 0; | ||
this.data = argv.data; | ||
this.keys = argv.keys; | ||
this.length = this.keys.length; | ||
} | ||
index(index) { | ||
get(index) { | ||
return this.getValue(this.getKey(index)); | ||
} | ||
getKey(index) { | ||
return this.keys.get(index); | ||
} | ||
value(index) { | ||
return this.data.get(index); | ||
getValue(key) { | ||
return this.data.get(key); | ||
} | ||
get(index) { | ||
return this.value(this.index(index)); | ||
concat(...vectors) { | ||
return new virtual_1.VirtualVector(Array, this, ...vectors); | ||
} | ||
concat(vector) { | ||
return DictionaryVector.from(this, this.length + vector.length, this.keys.concat(vector.keys), this.data); | ||
} | ||
*[Symbol.iterator]() { | ||
let { data } = this; | ||
for (const loc of this.keys) { | ||
yield data.get(loc); | ||
for (let i = -1, n = this.length; ++i < n;) { | ||
yield this.get(i); | ||
} | ||
@@ -48,2 +49,2 @@ } | ||
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInZlY3Rvci9kaWN0aW9uYXJ5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDZEQUE2RDtBQUM3RCwrREFBK0Q7QUFDL0Qsd0RBQXdEO0FBQ3hELDZEQUE2RDtBQUM3RCxvREFBb0Q7QUFDcEQsNkRBQTZEO0FBQzdELDZEQUE2RDtBQUM3RCxFQUFFO0FBQ0YsK0NBQStDO0FBQy9DLEVBQUU7QUFDRiw2REFBNkQ7QUFDN0QsOERBQThEO0FBQzlELHlEQUF5RDtBQUN6RCw0REFBNEQ7QUFDNUQsMERBQTBEO0FBQzFELHFCQUFxQjs7QUFFckIscUNBQWtDO0FBRWxDLHNCQUFpQyxTQUFRLGVBQVM7SUFHOUMsWUFBWSxLQUFxQixFQUFFLFVBQXFCO1FBQ3BELEtBQUssRUFBRSxDQUFDO1FBQ1IsSUFBSSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUM7UUFDbEIsSUFBSSxDQUFDLElBQUksR0FBRyxVQUFVLENBQUM7UUFDdkIsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLElBQUksS0FBSyxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUNELEtBQUssQ0FBQyxLQUFhO1FBQ2YsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFDRCxLQUFLLENBQUMsS0FBYTtRQUNmLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBQ0QsR0FBRyxDQUFDLEtBQWE7UUFDYixNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDekMsQ0FBQztJQUNELE1BQU0sQ0FBQyxNQUEyQjtRQUM5QixNQUFNLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLElBQUksRUFDN0IsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxFQUMzQixJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQzdCLElBQUksQ0FBQyxJQUFJLENBQ1osQ0FBQztJQUNOLENBQUM7SUFDRCxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQztRQUNkLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUM7UUFDcEIsR0FBRyxDQUFDLENBQUMsTUFBTSxHQUFHLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7WUFDMUIsTUFBTSxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3hCLENBQUM7SUFDTCxDQUFDO0NBQ0o7QUEvQkQsNENBK0JDIiwiZmlsZSI6InZlY3Rvci9kaWN0aW9uYXJ5LmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy8gTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZVxuLy8gb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlXG4vLyBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvblxuLy8gcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZVxuLy8gdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZVxuLy8gXCJMaWNlbnNlXCIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlXG4vLyB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4vL1xuLy8gICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbi8vXG4vLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsXG4vLyBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhblxuLy8gXCJBUyBJU1wiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTllcbi8vIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZVxuLy8gc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9uc1xuLy8gdW5kZXIgdGhlIExpY2Vuc2UuXG5cbmltcG9ydCB7IFZlY3RvciB9IGZyb20gJy4vdmVjdG9yJztcblxuZXhwb3J0IGNsYXNzIERpY3Rpb25hcnlWZWN0b3I8VD4gZXh0ZW5kcyBWZWN0b3I8VD4ge1xuICAgIHByb3RlY3RlZCBkYXRhOiBWZWN0b3I8VD47XG4gICAgcHJvdGVjdGVkIGtleXM6IFZlY3RvcjxudW1iZXI+O1xuICAgIGNvbnN0cnVjdG9yKGluZGV4OiBWZWN0b3I8bnVtYmVyPiwgZGljdGlvbmFyeTogVmVjdG9yPFQ+KSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMua2V5cyA9IGluZGV4O1xuICAgICAgICB0aGlzLmRhdGEgPSBkaWN0aW9uYXJ5O1xuICAgICAgICB0aGlzLmxlbmd0aCA9IGluZGV4ICYmIGluZGV4Lmxlbmd0aCB8fCAwO1xuICAgIH1cbiAgICBpbmRleChpbmRleDogbnVtYmVyKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmtleXMuZ2V0KGluZGV4KTtcbiAgICB9XG4gICAgdmFsdWUoaW5kZXg6IG51bWJlcikge1xuICAgICAgICByZXR1cm4gdGhpcy5kYXRhLmdldChpbmRleCk7XG4gICAgfVxuICAgIGdldChpbmRleDogbnVtYmVyKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnZhbHVlKHRoaXMuaW5kZXgoaW5kZXgpKTtcbiAgICB9XG4gICAgY29uY2F0KHZlY3RvcjogRGljdGlvbmFyeVZlY3RvcjxUPikge1xuICAgICAgICByZXR1cm4gRGljdGlvbmFyeVZlY3Rvci5mcm9tKHRoaXMsXG4gICAgICAgICAgICB0aGlzLmxlbmd0aCArIHZlY3Rvci5sZW5ndGgsXG4gICAgICAgICAgICB0aGlzLmtleXMuY29uY2F0KHZlY3Rvci5rZXlzKSxcbiAgICAgICAgICAgIHRoaXMuZGF0YVxuICAgICAgICApO1xuICAgIH1cbiAgICAqW1N5bWJvbC5pdGVyYXRvcl0oKSB7XG4gICAgICAgIGxldCB7IGRhdGEgfSA9IHRoaXM7XG4gICAgICAgIGZvciAoY29uc3QgbG9jIG9mIHRoaXMua2V5cykge1xuICAgICAgICAgICAgeWllbGQgZGF0YS5nZXQobG9jKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ== | ||
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInZlY3Rvci9kaWN0aW9uYXJ5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSw2REFBNkQ7QUFDN0QsK0RBQStEO0FBQy9ELHdEQUF3RDtBQUN4RCw2REFBNkQ7QUFDN0Qsb0RBQW9EO0FBQ3BELDZEQUE2RDtBQUM3RCw2REFBNkQ7QUFDN0QsRUFBRTtBQUNGLCtDQUErQztBQUMvQyxFQUFFO0FBQ0YsNkRBQTZEO0FBQzdELDhEQUE4RDtBQUM5RCx5REFBeUQ7QUFDekQsNERBQTREO0FBQzVELDBEQUEwRDtBQUMxRCxxQkFBcUI7O0FBRXJCLHFDQUFrQztBQUNsQyx1Q0FBMEM7QUFFMUMsc0JBQWlDLFNBQVEsZUFBUztJQUk5QyxZQUFZLElBQStDO1FBQ3ZELEtBQUssRUFBRSxDQUFDO1FBQ1IsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztRQUN0QixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ25DLENBQUM7SUFDRCxHQUFHLENBQUMsS0FBYTtRQUNiLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFFLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBQ0QsTUFBTSxDQUFDLEtBQWE7UUFDaEIsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFDRCxRQUFRLENBQUMsR0FBVztRQUNoQixNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUNELE1BQU0sQ0FBQyxHQUFHLE9BQW9CO1FBQzFCLE1BQU0sQ0FBQyxJQUFJLHVCQUFhLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxHQUFHLE9BQU8sQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFDRCxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQztRQUNkLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDO1lBQ3pDLE1BQU0sSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN0QixDQUFDO0lBQ0wsQ0FBQztDQUNKO0FBM0JELDRDQTJCQyIsImZpbGUiOiJ2ZWN0b3IvZGljdGlvbmFyeS5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8vIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmVcbi8vIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZVxuLy8gZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb25cbi8vIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGVcbi8vIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGVcbi8vIFwiTGljZW5zZVwiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZVxuLy8gd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuLy9cbi8vICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4vL1xuLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLFxuLy8gc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW5cbi8vIFwiQVMgSVNcIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZXG4vLyBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGVcbi8vIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnNcbi8vIHVuZGVyIHRoZSBMaWNlbnNlLlxuXG5pbXBvcnQgeyBWZWN0b3IgfSBmcm9tICcuL3ZlY3Rvcic7XG5pbXBvcnQgeyBWaXJ0dWFsVmVjdG9yIH0gZnJvbSAnLi92aXJ0dWFsJztcblxuZXhwb3J0IGNsYXNzIERpY3Rpb25hcnlWZWN0b3I8VD4gZXh0ZW5kcyBWZWN0b3I8VD4ge1xuICAgIHJlYWRvbmx5IGxlbmd0aDogbnVtYmVyO1xuICAgIHJlYWRvbmx5IGRhdGE6IFZlY3RvcjxUPjtcbiAgICByZWFkb25seSBrZXlzOiBWZWN0b3I8bnVtYmVyPjtcbiAgICBjb25zdHJ1Y3Rvcihhcmd2OiB7IGRhdGE6IFZlY3RvcjxUPiwga2V5czogVmVjdG9yPG51bWJlcj4gfSkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLmRhdGEgPSBhcmd2LmRhdGE7XG4gICAgICAgIHRoaXMua2V5cyA9IGFyZ3Yua2V5cztcbiAgICAgICAgdGhpcy5sZW5ndGggPSB0aGlzLmtleXMubGVuZ3RoO1xuICAgIH1cbiAgICBnZXQoaW5kZXg6IG51bWJlcikge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRWYWx1ZSh0aGlzLmdldEtleShpbmRleCkhKTtcbiAgICB9XG4gICAgZ2V0S2V5KGluZGV4OiBudW1iZXIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMua2V5cy5nZXQoaW5kZXgpO1xuICAgIH1cbiAgICBnZXRWYWx1ZShrZXk6IG51bWJlcikge1xuICAgICAgICByZXR1cm4gdGhpcy5kYXRhLmdldChrZXkpO1xuICAgIH1cbiAgICBjb25jYXQoLi4udmVjdG9yczogVmVjdG9yPFQ+W10pOiBWZWN0b3I8VD4ge1xuICAgICAgICByZXR1cm4gbmV3IFZpcnR1YWxWZWN0b3IoQXJyYXksIHRoaXMsIC4uLnZlY3RvcnMpO1xuICAgIH1cbiAgICAqW1N5bWJvbC5pdGVyYXRvcl0oKSB7XG4gICAgICAgIGZvciAobGV0IGkgPSAtMSwgbiA9IHRoaXMubGVuZ3RoOyArK2kgPCBuOykge1xuICAgICAgICAgICAgeWllbGQgdGhpcy5nZXQoaSk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0= |
@@ -1,26 +0,32 @@ | ||
/// <reference types="text-encoding" /> | ||
import { List } from './types'; | ||
import { Vector } from './vector'; | ||
import { IndexVector, ValidityArgs } from './typed'; | ||
export declare class ListVectorBase<T> extends Vector<T> { | ||
protected values: Vector<T>; | ||
protected offsets: IndexVector; | ||
constructor(validity: ValidityArgs, values: Vector<any>, offsets: IndexVector); | ||
get(index: number): any; | ||
concat(vector: ListVectorBase<T>): any; | ||
[Symbol.iterator](): IterableIterator<any>; | ||
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>; | ||
} | ||
export declare class ListVector<T> extends ListVectorBase<T[]> { | ||
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 class Utf8Vector extends ListVectorBase<string> { | ||
protected static decoder: TextEncoding.TextDecoder; | ||
get(index: number): string; | ||
[Symbol.iterator](): IterableIterator<string>; | ||
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 FixedSizeListVector<T> extends Vector<T[]> { | ||
protected size: number; | ||
protected values: Vector<T>; | ||
constructor(size: number, validity: ValidityArgs, values: Vector<T>); | ||
get(index: number): T[]; | ||
concat(vector: FixedSizeListVector<T>): any; | ||
[Symbol.iterator](): IterableIterator<T[]>; | ||
} |
@@ -0,1 +1,2 @@ | ||
"use strict"; | ||
// Licensed to the Apache Software Foundation (ASF) under one | ||
@@ -19,79 +20,52 @@ // or more contributor license agreements. See the NOTICE file | ||
const vector_1 = require("./vector"); | ||
const text_encoding_1 = require("text-encoding"); | ||
const typed_1 = require("./typed"); | ||
class ListVectorBase extends vector_1.Vector { | ||
constructor(validity, values, offsets) { | ||
const virtual_1 = require("./virtual"); | ||
class BinaryVector extends vector_1.Vector { | ||
constructor(argv) { | ||
super(); | ||
this.values = values; | ||
this.offsets = offsets; | ||
validity && (this.validity = typed_1.BitVector.from(validity)); | ||
this.data = argv.data; | ||
this.offsets = argv.offsets; | ||
} | ||
get(index) { | ||
let batch, from, to, { offsets } = this; | ||
if (!this.validity.get(index) || | ||
/* return null if `to` is null */ | ||
((to = offsets.get(index + 1)) === null) || !( | ||
/* | ||
return null if `batch` is less than than 0. this check is placed | ||
second to avoid creating the [from, batch] tuple if `to` is null | ||
*/ | ||
([from, batch] = offsets.get(index, true)) && batch > -1)) { | ||
return null; | ||
} | ||
return this.values.slice(from, to, batch); | ||
return this.data.subarray(this.offsets[index], this.offsets[index + 1]); | ||
} | ||
concat(vector) { | ||
return this.constructor.from(this, this.length + vector.length, this.validity.concat(vector.validity), this.values.concat(vector.values), this.offsets.concat(vector.offsets)); | ||
concat(...vectors) { | ||
return new virtual_1.VirtualVector(Array, this, ...vectors); | ||
} | ||
*[Symbol.iterator]() { | ||
let v, r1, r2, { values } = this; | ||
let it = this.offsets[Symbol.iterator](); | ||
let iv = this.validity[Symbol.iterator](); | ||
while (!(v = iv.next()).done && !(r1 = it.next()).done && !(r2 = it.next()).done) { | ||
yield !v.value ? null : values.slice(r1.value[0], r2.value, r1.value[1]); | ||
} | ||
} | ||
exports.BinaryVector = BinaryVector; | ||
class ListVector extends vector_1.Vector { | ||
constructor(argv) { | ||
super(); | ||
this.values = argv.values; | ||
this.offsets = argv.offsets; | ||
} | ||
} | ||
exports.ListVectorBase = ListVectorBase; | ||
class ListVector extends ListVectorBase { | ||
} | ||
exports.ListVector = ListVector; | ||
class Utf8Vector extends ListVectorBase { | ||
get(index) { | ||
let chars = super.get(index); | ||
return chars ? Utf8Vector.decoder.decode(chars) : null; | ||
} | ||
*[Symbol.iterator]() { | ||
let decoder = Utf8Vector.decoder; | ||
for (const chars of super[Symbol.iterator]()) { | ||
yield !chars ? null : decoder.decode(chars); | ||
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); | ||
} | ||
return xs; | ||
} | ||
concat(...vectors) { | ||
return new virtual_1.VirtualVector(Array, this, ...vectors); | ||
} | ||
} | ||
Utf8Vector.decoder = new text_encoding_1.TextDecoder(`utf-8`); | ||
exports.Utf8Vector = Utf8Vector; | ||
exports.ListVector = ListVector; | ||
class FixedSizeListVector extends vector_1.Vector { | ||
constructor(size, validity, values) { | ||
constructor(argv) { | ||
super(); | ||
this.values = values; | ||
this.size = Math.abs(size | 0) || 1; | ||
validity && (this.validity = typed_1.BitVector.from(validity)); | ||
this.size = argv.size; | ||
this.values = argv.values; | ||
} | ||
get(index) { | ||
return !this.validity.get(index) ? null : this.values.slice(this.size * index, this.size * (index + 1)); | ||
return this.values.slice(this.size * index, this.size * (index + 1)); | ||
} | ||
concat(vector) { | ||
return FixedSizeListVector.from(this, this.length + vector.length, this.size, this.validity.concat(vector.validity), this.values.concat(vector.values)); | ||
concat(...vectors) { | ||
return new virtual_1.VirtualVector(Array, this, ...vectors); | ||
} | ||
*[Symbol.iterator]() { | ||
let v, i = -1; | ||
let { size, length, values } = this; | ||
let iv = this.validity[Symbol.iterator](); | ||
while (!(v = iv.next()).done && ++i < length) { | ||
yield !v.value ? null : values.slice(size * i, size * (i + 1)); | ||
} | ||
} | ||
} | ||
exports.FixedSizeListVector = FixedSizeListVector; | ||
//# sourceMappingURL=data:application/json;charset=utf8;base64,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QUFDLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxHQUFHLE1BQU0sRUFBRSxDQUFDO1lBQzNDLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLElBQUksR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksR0FBRyxDQUFDLEVBQUUsSUFBSSxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFRLENBQUM7UUFDMUUsQ0FBQztJQUNMLENBQUM7Q0FDSjtBQTlCRCxrREE4QkMiLCJmaWxlIjoidmVjdG9yL2xpc3QuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lXG4vLyBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGVcbi8vIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uXG4vLyByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlXG4vLyB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlXG4vLyBcIkxpY2Vuc2VcIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Vcbi8vIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbi8vXG4vLyAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuLy9cbi8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZyxcbi8vIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuXG4vLyBcIkFTIElTXCIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWVxuLy8gS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlXG4vLyBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zXG4vLyB1bmRlciB0aGUgTGljZW5zZS5cblxuaW1wb3J0IHsgVmVjdG9yIH0gZnJvbSAnLi92ZWN0b3InO1xuaW1wb3J0IHsgVGV4dERlY29kZXIgfSBmcm9tICd0ZXh0LWVuY29kaW5nJztcbmltcG9ydCB7IEluZGV4VmVjdG9yLCBCaXRWZWN0b3IsIFZhbGlkaXR5QXJncyB9IGZyb20gJy4vdHlwZWQnO1xuXG5leHBvcnQgY2xhc3MgTGlzdFZlY3RvckJhc2U8VD4gZXh0ZW5kcyBWZWN0b3I8VD4ge1xuICAgIHByb3RlY3RlZCB2YWx1ZXM6IFZlY3RvcjxUPjtcbiAgICBwcm90ZWN0ZWQgb2Zmc2V0czogSW5kZXhWZWN0b3I7XG4gICAgY29uc3RydWN0b3IodmFsaWRpdHk6IFZhbGlkaXR5QXJncywgdmFsdWVzOiBWZWN0b3I8YW55Piwgb2Zmc2V0czogSW5kZXhWZWN0b3IpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy52YWx1ZXMgPSB2YWx1ZXM7XG4gICAgICAgIHRoaXMub2Zmc2V0cyA9IG9mZnNldHM7XG4gICAgICAgIHZhbGlkaXR5ICYmICh0aGlzLnZhbGlkaXR5ID0gQml0VmVjdG9yLmZyb20odmFsaWRpdHkpKTtcbiAgICB9XG4gICAgZ2V0KGluZGV4OiBudW1iZXIpIHtcbiAgICAgICAgbGV0IGJhdGNoLCBmcm9tLCB0bywgeyBvZmZzZXRzIH0gPSB0aGlzO1xuICAgICAgICBpZiAoIXRoaXMudmFsaWRpdHkuZ2V0KGluZGV4KSB8fFxuICAgICAgICAgICAgLyogcmV0dXJuIG51bGwgaWYgYHRvYCBpcyBudWxsICovXG4gICAgICAgICAgICAoKHRvID0gb2Zmc2V0cy5nZXQoaW5kZXggKyAxKSkgPT09IG51bGwpIHx8ICEoXG4gICAgICAgICAgICAvKlxuICAgICAgICAgICAgcmV0dXJuIG51bGwgaWYgYGJhdGNoYCBpcyBsZXNzIHRoYW4gdGhhbiAwLiB0aGlzIGNoZWNrIGlzIHBsYWNlZFxuICAgICAgICAgICAgc2Vjb25kIHRvIGF2b2lkIGNyZWF0aW5nIHRoZSBbZnJvbSwgYmF0Y2hdIHR1cGxlIGlmIGB0b2AgaXMgbnVsbFxuICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIChbZnJvbSwgYmF0Y2hdID0gb2Zmc2V0cy5nZXQoaW5kZXgsIHRydWUpIGFzIG51bWJlcltdKSAmJiBiYXRjaCA+IC0xKSkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMudmFsdWVzLnNsaWNlKGZyb20sIHRvLCBiYXRjaCkgYXMgYW55O1xuICAgIH1cbiAgICBjb25jYXQodmVjdG9yOiBMaXN0VmVjdG9yQmFzZTxUPikge1xuICAgICAgICByZXR1cm4gKHRoaXMuY29uc3RydWN0b3IgYXMgdHlwZW9mIExpc3RWZWN0b3JCYXNlKS5mcm9tKHRoaXMsXG4gICAgICAgICAgICB0aGlzLmxlbmd0aCArIHZlY3Rvci5sZW5ndGgsXG4gICAgICAgICAgICB0aGlzLnZhbGlkaXR5LmNvbmNhdCh2ZWN0b3IudmFsaWRpdHkpLFxuICAgICAgICAgICAgdGhpcy52YWx1ZXMuY29uY2F0KHZlY3Rvci52YWx1ZXMpLFxuICAgICAgICAgICAgdGhpcy5vZmZzZXRzLmNvbmNhdCh2ZWN0b3Iub2Zmc2V0cylcbiAgICAgICAgKTtcbiAgICB9XG4gICAgKltTeW1ib2wuaXRlcmF0b3JdKCkge1xuICAgICAgICBsZXQgdiwgcjEsIHIyLCB7IHZhbHVlcyB9ID0gdGhpcztcbiAgICAgICAgbGV0IGl0ID0gdGhpcy5vZmZzZXRzW1N5bWJvbC5pdGVyYXRvcl0oKTtcbiAgICAgICAgbGV0IGl2ID0gdGhpcy52YWxpZGl0eVtTeW1ib2wuaXRlcmF0b3JdKCk7XG4gICAgICAgIHdoaWxlICghKHYgPSBpdi5uZXh0KCkpLmRvbmUgJiYgIShyMSA9IGl0Lm5leHQoKSkuZG9uZSAmJiAhKHIyID0gaXQubmV4dCgpKS5kb25lKSB7XG4gICAgICAgICAgICB5aWVsZCAhdi52YWx1ZSA/IG51bGwgOiB2YWx1ZXMuc2xpY2UocjEudmFsdWVbMF0sIHIyLnZhbHVlLCByMS52YWx1ZVsxXSkgYXMgYW55O1xuICAgICAgICB9XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgTGlzdFZlY3RvcjxUPiBleHRlbmRzIExpc3RWZWN0b3JCYXNlPFRbXT4ge31cbmV4cG9ydCBjbGFzcyBVdGY4VmVjdG9yIGV4dGVuZHMgTGlzdFZlY3RvckJhc2U8c3RyaW5nPiB7XG4gICAgcHJvdGVjdGVkIHN0YXRpYyBkZWNvZGVyID0gbmV3IFRleHREZWNvZGVyKGB1dGYtOGApO1xuICAgIGdldChpbmRleDogbnVtYmVyKSB7XG4gICAgICAgIGxldCBjaGFycyA9IHN1cGVyLmdldChpbmRleCkgYXMgYW55O1xuICAgICAgICByZXR1cm4gY2hhcnMgPyBVdGY4VmVjdG9yLmRlY29kZXIuZGVjb2RlKGNoYXJzKSA6IG51bGw7XG4gICAgfVxuICAgICpbU3ltYm9sLml0ZXJhdG9yXSgpIHtcbiAgICAgICAgbGV0IGRlY29kZXIgPSBVdGY4VmVjdG9yLmRlY29kZXI7XG4gICAgICAgIGZvciAoY29uc3QgY2hhcnMgb2Ygc3VwZXJbU3ltYm9sLml0ZXJhdG9yXSgpKSB7XG4gICAgICAgICAgICB5aWVsZCAhY2hhcnMgPyBudWxsIDogZGVjb2Rlci5kZWNvZGUoY2hhcnMpO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgRml4ZWRTaXplTGlzdFZlY3RvcjxUPiBleHRlbmRzIFZlY3RvcjxUW10+IHtcbiAgICBwcm90ZWN0ZWQgc2l6ZTogbnVtYmVyO1xuICAgIHByb3RlY3RlZCB2YWx1ZXM6IFZlY3RvcjxUPjtcbiAgICBjb25zdHJ1Y3RvcihzaXplOiBudW1iZXIsIHZhbGlkaXR5OiBWYWxpZGl0eUFyZ3MsIHZhbHVlczogVmVjdG9yPFQ+KSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMudmFsdWVzID0gdmFsdWVzO1xuICAgICAgICB0aGlzLnNpemUgPSBNYXRoLmFicyhzaXplIHwgMCkgfHwgMTtcbiAgICAgICAgdmFsaWRpdHkgJiYgKHRoaXMudmFsaWRpdHkgPSBCaXRWZWN0b3IuZnJvbSh2YWxpZGl0eSkpO1xuICAgIH1cbiAgICBnZXQoaW5kZXg6IG51bWJlcikge1xuICAgICAgICByZXR1cm4gIXRoaXMudmFsaWRpdHkuZ2V0KGluZGV4KSA/IG51bGwgOiB0aGlzLnZhbHVlcy5zbGljZShcbiAgICAgICAgICAgIHRoaXMuc2l6ZSAqIGluZGV4LCB0aGlzLnNpemUgKiAoaW5kZXggKyAxKVxuICAgICAgICApIGFzIFRbXTtcbiAgICB9XG4gICAgY29uY2F0KHZlY3RvcjogRml4ZWRTaXplTGlzdFZlY3RvcjxUPikge1xuICAgICAgICByZXR1cm4gRml4ZWRTaXplTGlzdFZlY3Rvci5mcm9tKHRoaXMsXG4gICAgICAgICAgICB0aGlzLmxlbmd0aCArIHZlY3Rvci5sZW5ndGgsXG4gICAgICAgICAgICB0aGlzLnNpemUsXG4gICAgICAgICAgICB0aGlzLnZhbGlkaXR5LmNvbmNhdCh2ZWN0b3IudmFsaWRpdHkpLFxuICAgICAgICAgICAgdGhpcy52YWx1ZXMuY29uY2F0KHZlY3Rvci52YWx1ZXMpXG4gICAgICAgICk7XG4gICAgfVxuICAgICpbU3ltYm9sLml0ZXJhdG9yXSgpIHtcbiAgICAgICAgbGV0IHYsIGkgPSAtMTtcbiAgICAgICAgbGV0IHsgc2l6ZSwgbGVuZ3RoLCB2YWx1ZXMgfSA9IHRoaXM7XG4gICAgICAgIGxldCBpdiA9IHRoaXMudmFsaWRpdHlbU3ltYm9sLml0ZXJhdG9yXSgpO1xuICAgICAgICB3aGlsZSAoISh2ID0gaXYubmV4dCgpKS5kb25lICYmICsraSA8IGxlbmd0aCkge1xuICAgICAgICAgICAgeWllbGQgIXYudmFsdWUgPyBudWxsIDogdmFsdWVzLnNsaWNlKHNpemUgKiBpLCBzaXplICogKGkgKyAxKSkgYXMgVFtdO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19 | ||
//# sourceMappingURL=data:application/json;charset=utf8;base64,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LENBQUMsR0FBRyxPQUF5QjtRQUMvQixNQUFNLENBQUMsSUFBSSx1QkFBYSxDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsR0FBRyxPQUFPLENBQUMsQ0FBQztJQUN0RCxDQUFDO0NBQ0o7QUFkRCxrREFjQyIsImZpbGUiOiJ2ZWN0b3IvbGlzdC5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8vIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmVcbi8vIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZVxuLy8gZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb25cbi8vIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGVcbi8vIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGVcbi8vIFwiTGljZW5zZVwiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZVxuLy8gd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuLy9cbi8vICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4vL1xuLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLFxuLy8gc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW5cbi8vIFwiQVMgSVNcIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZXG4vLyBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGVcbi8vIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnNcbi8vIHVuZGVyIHRoZSBMaWNlbnNlLlxuXG5pbXBvcnQgeyBMaXN0IH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgeyBWZWN0b3IgfSBmcm9tICcuL3ZlY3Rvcic7XG5pbXBvcnQgeyBWaXJ0dWFsVmVjdG9yIH0gZnJvbSAnLi92aXJ0dWFsJztcblxuZXhwb3J0IGNsYXNzIEJpbmFyeVZlY3RvciBleHRlbmRzIFZlY3RvcjxVaW50OEFycmF5PiB7XG4gICAgcmVhZG9ubHkgZGF0YTogVWludDhBcnJheTtcbiAgICByZWFkb25seSBvZmZzZXRzOiBJbnQzMkFycmF5O1xuICAgIGNvbnN0cnVjdG9yKGFyZ3Y6IHsgb2Zmc2V0czogSW50MzJBcnJheSwgZGF0YTogVWludDhBcnJheSB9KSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMuZGF0YSA9IGFyZ3YuZGF0YTtcbiAgICAgICAgdGhpcy5vZmZzZXRzID0gYXJndi5vZmZzZXRzO1xuICAgIH1cbiAgICBnZXQoaW5kZXg6IG51bWJlcikge1xuICAgICAgICByZXR1cm4gdGhpcy5kYXRhLnN1YmFycmF5KHRoaXMub2Zmc2V0c1tpbmRleF0sIHRoaXMub2Zmc2V0c1tpbmRleCArIDFdKTtcbiAgICB9XG4gICAgY29uY2F0KC4uLnZlY3RvcnM6IFZlY3RvcjxVaW50OEFycmF5PltdKTogVmVjdG9yPFVpbnQ4QXJyYXk+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBWaXJ0dWFsVmVjdG9yKEFycmF5LCB0aGlzLCAuLi52ZWN0b3JzKTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBMaXN0VmVjdG9yPFQ+IGV4dGVuZHMgVmVjdG9yPFRbXT4ge1xuICAgIHJlYWRvbmx5IG9mZnNldHM6IEludDMyQXJyYXk7XG4gICAgcmVhZG9ubHkgdmFsdWVzOiBWZWN0b3I8VD47XG4gICAgY29uc3RydWN0b3IoYXJndjogeyBvZmZzZXRzOiBJbnQzMkFycmF5LCB2YWx1ZXM6IFZlY3RvcjxUPiB9KSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMudmFsdWVzID0gYXJndi52YWx1ZXM7XG4gICAgICAgIHRoaXMub2Zmc2V0cyA9IGFyZ3Yub2Zmc2V0cztcbiAgICB9XG4gICAgZ2V0KGluZGV4OiBudW1iZXIpIHtcbiAgICAgICAgY29uc3QgeyBvZmZzZXRzLCB2YWx1ZXMgfSA9IHRoaXM7XG4gICAgICAgIGNvbnN0IGZyb20gPSBvZmZzZXRzW2luZGV4XTtcbiAgICAgICAgY29uc3QgeHMgPSBuZXcgQXJyYXkob2Zmc2V0c1tpbmRleCArIDFdIC0gZnJvbSk7XG4gICAgICAgIGZvciAobGV0IGkgPSAtMSwgbiA9IHhzLmxlbmd0aDsgKytpIDwgbjspIHtcbiAgICAgICAgICAgIHhzW2ldID0gdmFsdWVzLmdldChpICsgZnJvbSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHhzO1xuICAgIH1cbiAgICBjb25jYXQoLi4udmVjdG9yczogVmVjdG9yPFRbXT5bXSk6IFZlY3RvcjxUW10+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBWaXJ0dWFsVmVjdG9yKEFycmF5LCB0aGlzLCAuLi52ZWN0b3JzKTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBGaXhlZFNpemVMaXN0VmVjdG9yPFQsIFRBcnJheSBleHRlbmRzIExpc3Q8VD4+IGV4dGVuZHMgVmVjdG9yPFRBcnJheT4ge1xuICAgIHJlYWRvbmx5IHNpemU6IG51bWJlcjtcbiAgICByZWFkb25seSB2YWx1ZXM6IFZlY3RvcjxUPjtcbiAgICBjb25zdHJ1Y3Rvcihhcmd2OiB7IHNpemU6IG51bWJlciwgdmFsdWVzOiBWZWN0b3I8VD4gfSkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLnNpemUgPSBhcmd2LnNpemU7XG4gICAgICAgIHRoaXMudmFsdWVzID0gYXJndi52YWx1ZXM7XG4gICAgfVxuICAgIGdldChpbmRleDogbnVtYmVyKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnZhbHVlcy5zbGljZTxUQXJyYXk+KHRoaXMuc2l6ZSAqIGluZGV4LCB0aGlzLnNpemUgKiAoaW5kZXggKyAxKSk7XG4gICAgfVxuICAgIGNvbmNhdCguLi52ZWN0b3JzOiBWZWN0b3I8VEFycmF5PltdKTogVmVjdG9yPFRBcnJheT4ge1xuICAgICAgICByZXR1cm4gbmV3IFZpcnR1YWxWZWN0b3IoQXJyYXksIHRoaXMsIC4uLnZlY3RvcnMpO1xuICAgIH1cbn1cbiJdfQ== |
import { Vector } from './vector'; | ||
import { ValidityArgs } from './typed'; | ||
export declare class StructVector extends Vector<any[]> { | ||
protected vectors: Vector<any>[]; | ||
constructor(validity: ValidityArgs, ...vectors: Vector<any>[]); | ||
get(index: number): any[]; | ||
concat(vector: StructVector): any; | ||
export declare class StructVector<T = any> extends Vector<StructRow<T>> { | ||
readonly length: number; | ||
readonly columns: Vector[]; | ||
constructor(argv: { | ||
columns: Vector[]; | ||
}); | ||
get(index: number): StructRow<T>; | ||
col(name: string): Vector<any> | null; | ||
key(index: number): string | null; | ||
select(...columns: string[]): StructVector<any>; | ||
concat(...structs: Vector<StructRow<T>>[]): Vector<StructRow<T>>; | ||
toString(options?: any): string; | ||
} | ||
export declare class StructRow<T = any> extends Vector<T> { | ||
readonly row: number; | ||
readonly length: number; | ||
readonly table: StructVector<T>; | ||
[Symbol.toStringTag](): string; | ||
constructor(table: StructVector<T>, row: number); | ||
get(index: number): T | null; | ||
col(key: string): T | null; | ||
[Symbol.iterator](): IterableIterator<any>; | ||
concat(...rows: Vector<T>[]): Vector<T>; | ||
toArray(): any[]; | ||
toJSON(): any[]; | ||
toString(): string; | ||
toObject(): Record<string, T>; | ||
} |
@@ -0,1 +1,2 @@ | ||
"use strict"; | ||
// Licensed to the Apache Software Foundation (ASF) under one | ||
@@ -19,19 +20,107 @@ // or more contributor license agreements. See the NOTICE file | ||
const vector_1 = require("./vector"); | ||
const typed_1 = require("./typed"); | ||
const virtual_1 = require("./virtual"); | ||
class StructVector extends vector_1.Vector { | ||
constructor(validity, ...vectors) { | ||
constructor(argv) { | ||
super(); | ||
this.vectors = vectors; | ||
this.length = Math.max(0, ...vectors.map((v) => v.length)); | ||
validity && (this.validity = typed_1.BitVector.from(validity)); | ||
this.columns = argv.columns || []; | ||
} | ||
get(index) { | ||
return this.validity.get(index) ? this.vectors.map((v) => v.get(index)) : null; | ||
return new StructRow(this, index); | ||
} | ||
concat(vector) { | ||
return StructVector.from(this, this.length + vector.length, this.validity.concat(vector.validity), ...this.vectors.map((v, i) => v.concat(vector.vectors[i]))); | ||
col(name) { | ||
return this.columns.find((col) => col.name === name) || null; | ||
} | ||
key(index) { | ||
return this.columns[index] ? this.columns[index].name : null; | ||
} | ||
select(...columns) { | ||
return new StructVector({ columns: columns.map((name) => this.col(name)) }); | ||
} | ||
concat(...structs) { | ||
return new virtual_1.VirtualVector(Array, this, ...structs); | ||
} | ||
toString(options) { | ||
const index = typeof options === 'object' ? options && !!options.index | ||
: typeof options === 'boolean' ? !!options | ||
: false; | ||
const { length } = this; | ||
if (length <= 0) { | ||
return ''; | ||
} | ||
const rows = new Array(length + 1); | ||
const maxColumnWidths = []; | ||
rows[0] = this.columns.map((_, i) => this.key(i)); | ||
index && rows[0].unshift('Index'); | ||
for (let i = -1, n = rows.length - 1; ++i < n;) { | ||
rows[i + 1] = [...this.get(i)]; | ||
index && rows[i + 1].unshift(i); | ||
} | ||
// Pass one to convert to strings and count max column widths | ||
for (let i = -1, n = rows.length; ++i < n;) { | ||
const row = rows[i]; | ||
for (let j = -1, k = row.length; ++j < k;) { | ||
const val = row[j] = stringify(row[j]); | ||
maxColumnWidths[j] = !maxColumnWidths[j] | ||
? val.length | ||
: Math.max(maxColumnWidths[j], val.length); | ||
} | ||
} | ||
// Pass two to pad each one to max column width | ||
for (let i = -1, n = rows.length; ++i < n;) { | ||
const row = rows[i]; | ||
for (let j = -1, k = row.length; ++j < k;) { | ||
row[j] = leftPad(row[j], ' ', maxColumnWidths[j]); | ||
} | ||
rows[i] = row.join(', '); | ||
} | ||
return rows.join('\n'); | ||
} | ||
} | ||
exports.StructVector = StructVector; | ||
class StructRow extends vector_1.Vector { | ||
constructor(table, row) { | ||
super(); | ||
this.row = row; | ||
this.table = table; | ||
this.length = table.columns.length; | ||
} | ||
[Symbol.toStringTag]() { return 'Row'; } | ||
get(index) { | ||
const col = this.table.columns[index]; | ||
return col ? col.get(this.row) : null; | ||
} | ||
col(key) { | ||
const col = this.table.col(key); | ||
return col ? col.get(this.row) : null; | ||
} | ||
*[Symbol.iterator]() { | ||
const { row } = this; | ||
for (const col of this.table.columns) { | ||
yield col ? col.get(row) : null; | ||
} | ||
} | ||
concat(...rows) { | ||
return new virtual_1.VirtualVector(Array, this, ...rows); | ||
} | ||
toArray() { return [...this]; } | ||
toJSON() { return this.toArray(); } | ||
toString() { return JSON.stringify(this); } | ||
toObject() { | ||
const { row } = this, map = Object.create(null); | ||
for (const col of this.table.columns) { | ||
if (col && col.name) { | ||
map[col.name] = col.get(row); | ||
} | ||
} | ||
return map; | ||
} | ||
} | ||
exports.StructRow = StructRow; | ||
function leftPad(str, fill, n) { | ||
return (new Array(n + 1).join(fill) + str).slice(-1 * n); | ||
} | ||
function stringify(x) { | ||
return Array.isArray(x) ? JSON.stringify(x) : ArrayBuffer.isView(x) ? `[${x}]` : `${x}`; | ||
} | ||
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInZlY3Rvci9zdHJ1Y3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsNkRBQTZEO0FBQzdELCtEQUErRDtBQUMvRCx3REFBd0Q7QUFDeEQsNkRBQTZEO0FBQzdELG9EQUFvRDtBQUNwRCw2REFBNkQ7QUFDN0QsNkRBQTZEO0FBQzdELEVBQUU7QUFDRiwrQ0FBK0M7QUFDL0MsRUFBRTtBQUNGLDZEQUE2RDtBQUM3RCw4REFBOEQ7QUFDOUQseURBQXlEO0FBQ3pELDREQUE0RDtBQUM1RCwwREFBMEQ7QUFDMUQscUJBQXFCOztBQUVyQixxQ0FBa0M7QUFDbEMsbUNBQWtEO0FBRWxELGtCQUEwQixTQUFRLGVBQWE7SUFFM0MsWUFBWSxRQUFzQixFQUFFLEdBQUcsT0FBc0I7UUFDekQsS0FBSyxFQUFFLENBQUM7UUFDUixJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztRQUN2QixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztRQUMzRCxRQUFRLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxHQUFHLGlCQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7SUFDM0QsQ0FBQztJQUNELEdBQUcsQ0FBQyxLQUFhO1FBQ2IsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUM7SUFDbkYsQ0FBQztJQUNELE1BQU0sQ0FBQyxNQUFvQjtRQUN2QixNQUFNLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQ3pCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sRUFDM0IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxFQUNyQyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUM3RCxDQUFDO0lBQ04sQ0FBQztDQUNKO0FBbEJELG9DQWtCQyIsImZpbGUiOiJ2ZWN0b3Ivc3RydWN0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy8gTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZVxuLy8gb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlXG4vLyBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvblxuLy8gcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZVxuLy8gdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZVxuLy8gXCJMaWNlbnNlXCIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlXG4vLyB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4vL1xuLy8gICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbi8vXG4vLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsXG4vLyBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhblxuLy8gXCJBUyBJU1wiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTllcbi8vIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZVxuLy8gc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9uc1xuLy8gdW5kZXIgdGhlIExpY2Vuc2UuXG5cbmltcG9ydCB7IFZlY3RvciB9IGZyb20gJy4vdmVjdG9yJztcbmltcG9ydCB7IEJpdFZlY3RvciwgVmFsaWRpdHlBcmdzIH0gZnJvbSAnLi90eXBlZCc7XG5cbmV4cG9ydCBjbGFzcyBTdHJ1Y3RWZWN0b3IgZXh0ZW5kcyBWZWN0b3I8YW55W10+IHtcbiAgICBwcm90ZWN0ZWQgdmVjdG9yczogVmVjdG9yPGFueT5bXTtcbiAgICBjb25zdHJ1Y3Rvcih2YWxpZGl0eTogVmFsaWRpdHlBcmdzLCAuLi52ZWN0b3JzOiBWZWN0b3I8YW55PltdKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMudmVjdG9ycyA9IHZlY3RvcnM7XG4gICAgICAgIHRoaXMubGVuZ3RoID0gTWF0aC5tYXgoMCwgLi4udmVjdG9ycy5tYXAoKHYpID0+IHYubGVuZ3RoKSk7XG4gICAgICAgIHZhbGlkaXR5ICYmICh0aGlzLnZhbGlkaXR5ID0gQml0VmVjdG9yLmZyb20odmFsaWRpdHkpKTtcbiAgICB9XG4gICAgZ2V0KGluZGV4OiBudW1iZXIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmFsaWRpdHkuZ2V0KGluZGV4KSA/IHRoaXMudmVjdG9ycy5tYXAoKHYpID0+IHYuZ2V0KGluZGV4KSkgOiBudWxsO1xuICAgIH1cbiAgICBjb25jYXQodmVjdG9yOiBTdHJ1Y3RWZWN0b3IpIHtcbiAgICAgICAgcmV0dXJuIFN0cnVjdFZlY3Rvci5mcm9tKHRoaXMsXG4gICAgICAgICAgICB0aGlzLmxlbmd0aCArIHZlY3Rvci5sZW5ndGgsXG4gICAgICAgICAgICB0aGlzLnZhbGlkaXR5LmNvbmNhdCh2ZWN0b3IudmFsaWRpdHkpLFxuICAgICAgICAgICAgLi4udGhpcy52ZWN0b3JzLm1hcCgodiwgaSkgPT4gdi5jb25jYXQodmVjdG9yLnZlY3RvcnNbaV0pKVxuICAgICAgICApO1xuICAgIH1cbn1cbiJdfQ== | ||
//# sourceMappingURL=data:application/json;charset=utf8;base64,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SSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1lBQ25DLEVBQUUsQ0FBQyxDQUFDLEdBQUcsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztnQkFDbEIsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ2pDLENBQUM7UUFDTCxDQUFDO1FBQ0QsTUFBTSxDQUFDLEdBQUcsQ0FBQztJQUNmLENBQUM7Q0FDSjtBQXhDRCw4QkF3Q0M7QUFFRCxpQkFBaUIsR0FBVyxFQUFFLElBQVksRUFBRSxDQUFTO0lBQ2pELE1BQU0sQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQzdELENBQUM7QUFFRCxtQkFBbUIsQ0FBTTtJQUNyQixNQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztBQUM1RixDQUFDIiwiZmlsZSI6InZlY3Rvci9zdHJ1Y3QuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lXG4vLyBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGVcbi8vIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uXG4vLyByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlXG4vLyB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlXG4vLyBcIkxpY2Vuc2VcIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Vcbi8vIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbi8vXG4vLyAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuLy9cbi8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZyxcbi8vIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuXG4vLyBcIkFTIElTXCIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWVxuLy8gS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlXG4vLyBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zXG4vLyB1bmRlciB0aGUgTGljZW5zZS5cblxuaW1wb3J0IHsgVmVjdG9yIH0gZnJvbSAnLi92ZWN0b3InO1xuaW1wb3J0IHsgVmlydHVhbFZlY3RvciB9IGZyb20gJy4vdmlydHVhbCc7XG5cbmV4cG9ydCBjbGFzcyBTdHJ1Y3RWZWN0b3I8VCA9IGFueT4gZXh0ZW5kcyBWZWN0b3I8U3RydWN0Um93PFQ+PiB7XG4gICAgcmVhZG9ubHkgbGVuZ3RoOiBudW1iZXI7XG4gICAgcmVhZG9ubHkgY29sdW1uczogVmVjdG9yW107XG4gICAgY29uc3RydWN0b3IoYXJndjogeyBjb2x1bW5zOiBWZWN0b3JbXSB9KSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMuY29sdW1ucyA9IGFyZ3YuY29sdW1ucyB8fCBbXTtcbiAgICB9XG4gICAgZ2V0KGluZGV4OiBudW1iZXIpOiBTdHJ1Y3RSb3c8VD4ge1xuICAgICAgICByZXR1cm4gbmV3IFN0cnVjdFJvdyh0aGlzLCBpbmRleCk7XG4gICAgfVxuICAgIGNvbChuYW1lOiBzdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29sdW1ucy5maW5kKChjb2wpID0+IGNvbC5uYW1lID09PSBuYW1lKSB8fCBudWxsO1xuICAgIH1cbiAgICBrZXkoaW5kZXg6IG51bWJlcikge1xuICAgICAgICByZXR1cm4gdGhpcy5jb2x1bW5zW2luZGV4XSA/IHRoaXMuY29sdW1uc1tpbmRleF0ubmFtZSA6IG51bGw7XG4gICAgfVxuICAgIHNlbGVjdCguLi5jb2x1bW5zOiBzdHJpbmdbXSkge1xuICAgICAgICByZXR1cm4gbmV3IFN0cnVjdFZlY3Rvcih7IGNvbHVtbnM6IGNvbHVtbnMubWFwKChuYW1lKSA9PiB0aGlzLmNvbChuYW1lKSEpIH0pO1xuICAgIH1cbiAgICBjb25jYXQoLi4uc3RydWN0czogVmVjdG9yPFN0cnVjdFJvdzxUPj5bXSk6IFZlY3RvcjxTdHJ1Y3RSb3c8VD4+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBWaXJ0dWFsVmVjdG9yKEFycmF5LCB0aGlzLCAuLi5zdHJ1Y3RzIGFzIGFueVtdKTtcbiAgICB9XG4gICAgdG9TdHJpbmcob3B0aW9ucz86IGFueSkge1xuICAgICAgICBjb25zdCBpbmRleCA9IHR5cGVvZiBvcHRpb25zID09PSAnb2JqZWN0JyA/IG9wdGlvbnMgJiYgISFvcHRpb25zLmluZGV4XG4gICAgICAgICAgICAgICAgICAgIDogdHlwZW9mIG9wdGlvbnMgPT09ICdib29sZWFuJyA/ICEhb3B0aW9uc1xuICAgICAgICAgICAgICAgICAgICA6IGZhbHNlO1xuICAgICAgICBjb25zdCB7IGxlbmd0aCB9ID0gdGhpcztcbiAgICAgICAgaWYgKGxlbmd0aCA8PSAwKSB7IHJldHVybiAnJzsgfVxuICAgICAgICBjb25zdCByb3dzID0gbmV3IEFycmF5KGxlbmd0aCArIDEpO1xuICAgICAgICBjb25zdCBtYXhDb2x1bW5XaWR0aHMgPSBbXSBhcyBudW1iZXJbXTtcbiAgICAgICAgcm93c1swXSA9IHRoaXMuY29sdW1ucy5tYXAoKF8sIGkpID0+IHRoaXMua2V5KGkpKTtcbiAgICAgICAgaW5kZXggJiYgcm93c1swXS51bnNoaWZ0KCdJbmRleCcpO1xuICAgICAgICBmb3IgKGxldCBpID0gLTEsIG4gPSByb3dzLmxlbmd0aCAtIDE7ICsraSA8IG47KSB7XG4gICAgICAgICAgICByb3dzW2kgKyAxXSA9IFsuLi50aGlzLmdldChpKSFdO1xuICAgICAgICAgICAgaW5kZXggJiYgcm93c1tpICsgMV0udW5zaGlmdChpKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBQYXNzIG9uZSB0byBjb252ZXJ0IHRvIHN0cmluZ3MgYW5kIGNvdW50IG1heCBjb2x1bW4gd2lkdGhzXG4gICAgICAgIGZvciAobGV0IGkgPSAtMSwgbiA9IHJvd3MubGVuZ3RoOyArK2kgPCBuOykge1xuICAgICAgICAgICAgY29uc3Qgcm93ID0gcm93c1tpXTtcbiAgICAgICAgICAgIGZvciAobGV0IGogPSAtMSwgayA9IHJvdy5sZW5ndGg7ICsraiA8IGs7KSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdmFsID0gcm93W2pdID0gc3RyaW5naWZ5KHJvd1tqXSk7XG4gICAgICAgICAgICAgICAgbWF4Q29sdW1uV2lkdGhzW2pdID0gIW1heENvbHVtbldpZHRoc1tqXVxuICAgICAgICAgICAgICAgICAgICA/IHZhbC5sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgOiBNYXRoLm1heChtYXhDb2x1bW5XaWR0aHNbal0sIHZhbC5sZW5ndGgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vIFBhc3MgdHdvIHRvIHBhZCBlYWNoIG9uZSB0byBtYXggY29sdW1uIHdpZHRoXG4gICAgICAgIGZvciAobGV0IGkgPSAtMSwgbiA9IHJvd3MubGVuZ3RoOyArK2kgPCBuOykge1xuICAgICAgICAgICAgY29uc3Qgcm93ID0gcm93c1tpXTtcbiAgICAgICAgICAgIGZvciAobGV0IGogPSAtMSwgayA9IHJvdy5sZW5ndGg7ICsraiA8IGs7KSB7XG4gICAgICAgICAgICAgICAgcm93W2pdID0gbGVmdFBhZChyb3dbal0sICcgJywgbWF4Q29sdW1uV2lkdGhzW2pdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJvd3NbaV0gPSByb3cuam9pbignLCAnKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcm93cy5qb2luKCdcXG4nKTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBTdHJ1Y3RSb3c8VCA9IGFueT4gZXh0ZW5kcyBWZWN0b3I8VD4ge1xuICAgIHJlYWRvbmx5IHJvdzogbnVtYmVyO1xuICAgIHJlYWRvbmx5IGxlbmd0aDogbnVtYmVyO1xuICAgIHJlYWRvbmx5IHRhYmxlOiBTdHJ1Y3RWZWN0b3I8VD47XG4gICAgW1N5bWJvbC50b1N0cmluZ1RhZ10oKSB7IHJldHVybiAnUm93JzsgfVxuICAgIGNvbnN0cnVjdG9yKHRhYmxlOiBTdHJ1Y3RWZWN0b3I8VD4sIHJvdzogbnVtYmVyKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMucm93ID0gcm93O1xuICAgICAgICB0aGlzLnRhYmxlID0gdGFibGU7XG4gICAgICAgIHRoaXMubGVuZ3RoID0gdGFibGUuY29sdW1ucy5sZW5ndGg7XG4gICAgfVxuICAgIGdldChpbmRleDogbnVtYmVyKSB7XG4gICAgICAgIGNvbnN0IGNvbCA9IHRoaXMudGFibGUuY29sdW1uc1tpbmRleF07XG4gICAgICAgIHJldHVybiBjb2wgPyBjb2wuZ2V0KHRoaXMucm93KSBhcyBUIDogbnVsbDtcbiAgICB9XG4gICAgY29sKGtleTogc3RyaW5nKSB7XG4gICAgICAgIGNvbnN0IGNvbCA9IHRoaXMudGFibGUuY29sKGtleSk7XG4gICAgICAgIHJldHVybiBjb2wgPyBjb2wuZ2V0KHRoaXMucm93KSBhcyBUIDogbnVsbDtcbiAgICB9XG4gICAgKltTeW1ib2wuaXRlcmF0b3JdKCkge1xuICAgICAgICBjb25zdCB7IHJvdyB9ID0gdGhpcztcbiAgICAgICAgZm9yIChjb25zdCBjb2wgb2YgdGhpcy50YWJsZS5jb2x1bW5zKSB7XG4gICAgICAgICAgICB5aWVsZCBjb2wgPyBjb2wuZ2V0KHJvdykgOiBudWxsO1xuICAgICAgICB9XG4gICAgfVxuICAgIGNvbmNhdCguLi5yb3dzOiBWZWN0b3I8VD5bXSk6IFZlY3RvcjxUPiB7XG4gICAgICAgIHJldHVybiBuZXcgVmlydHVhbFZlY3RvcihBcnJheSwgdGhpcywgLi4ucm93cyBhcyBhbnlbXSk7XG4gICAgfVxuICAgIHRvQXJyYXkoKSB7IHJldHVybiBbLi4udGhpc107IH1cbiAgICB0b0pTT04oKSB7IHJldHVybiB0aGlzLnRvQXJyYXkoKTsgfVxuICAgIHRvU3RyaW5nKCkgeyByZXR1cm4gSlNPTi5zdHJpbmdpZnkodGhpcyk7IH1cbiAgICB0b09iamVjdCgpOiBSZWNvcmQ8c3RyaW5nLCBUPiB7XG4gICAgICAgIGNvbnN0IHsgcm93IH0gPSB0aGlzLCBtYXAgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICAgICAgICBmb3IgKGNvbnN0IGNvbCBvZiB0aGlzLnRhYmxlLmNvbHVtbnMpIHtcbiAgICAgICAgICAgIGlmIChjb2wgJiYgY29sLm5hbWUpIHtcbiAgICAgICAgICAgICAgICBtYXBbY29sLm5hbWVdID0gY29sLmdldChyb3cpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBtYXA7XG4gICAgfVxufVxuXG5mdW5jdGlvbiBsZWZ0UGFkKHN0cjogc3RyaW5nLCBmaWxsOiBzdHJpbmcsIG46IG51bWJlcikge1xuICAgIHJldHVybiAobmV3IEFycmF5KG4gKyAxKS5qb2luKGZpbGwpICsgc3RyKS5zbGljZSgtMSAqIG4pO1xufVxuXG5mdW5jdGlvbiBzdHJpbmdpZnkoeDogYW55KSB7XG4gICAgcmV0dXJuIEFycmF5LmlzQXJyYXkoeCkgPyBKU09OLnN0cmluZ2lmeSh4KSA6IEFycmF5QnVmZmVyLmlzVmlldyh4KSA/IGBbJHt4fV1gIDogYCR7eH1gO1xufVxuIl19 |
@@ -1,22 +0,14 @@ | ||
import * as Schema_ from '../format/Schema'; | ||
export import Type = Schema_.org.apache.arrow.flatbuf.Type; | ||
export import Field = Schema_.org.apache.arrow.flatbuf.Field; | ||
export declare function sliceToRangeArgs(length: number, start: number, end?: number): number[]; | ||
export declare class Vector<T> implements Iterable<T> { | ||
static defaultName: string; | ||
static defaultProps: Map<any, any>; | ||
static defaultType: string; | ||
static create<T = any>(field: Field, length: number, ...args: any[]): Vector<T>; | ||
static from<T = any>(source: Vector<T>, length: number, ...args: any[]): Vector<T>; | ||
name: string; | ||
type: string; | ||
length: number; | ||
stride: number; | ||
props: Map<PropertyKey, any>; | ||
protected validity: Vector<boolean>; | ||
get(index: number): T; | ||
concat(vector: Vector<T>): Vector<T>; | ||
slice<R = T>(start?: number, end?: number, batch?: number): Iterable<R>; | ||
protected range<R = T>(index: number, length: number, batch?: number): Iterable<R>; | ||
[Symbol.iterator](): IterableIterator<T>; | ||
export interface Vector<T = any> extends Iterable<T | null> { | ||
readonly name: string; | ||
readonly type: string; | ||
readonly length: number; | ||
readonly nullable: boolean; | ||
readonly nullCount: number; | ||
readonly metadata: Map<string, string>; | ||
get(index: number): T | null; | ||
concat(...vectors: Vector<T>[]): Vector<T>; | ||
slice<R = T[]>(start?: number, end?: number): R; | ||
} | ||
export declare class Vector<T = any> implements Vector<T> { | ||
[Symbol.iterator](): IterableIterator<T | null>; | ||
} |
@@ -0,1 +1,2 @@ | ||
"use strict"; | ||
// Licensed to the Apache Software Foundation (ASF) under one | ||
@@ -19,56 +20,11 @@ // or more contributor license agreements. See the NOTICE file | ||
const Schema_ = require("../format/Schema"); | ||
exports.Type = Schema_.org.apache.arrow.flatbuf.Type; | ||
exports.Field = Schema_.org.apache.arrow.flatbuf.Field; | ||
function sliceToRangeArgs(length, start, end) { | ||
let total = length, from = start || 0; | ||
let to = end === end && typeof end == 'number' ? end : total; | ||
if (to < 0) { | ||
to = total + to; | ||
} | ||
if (from < 0) { | ||
from = total - (from * -1) % total; | ||
} | ||
if (to < from) { | ||
from = to; | ||
to = start; | ||
} | ||
total = !isFinite(total = (to - from)) || total < 0 ? 0 : total; | ||
return [from, total]; | ||
} | ||
exports.sliceToRangeArgs = sliceToRangeArgs; | ||
var Type = Schema_.org.apache.arrow.flatbuf.Type; | ||
class Vector { | ||
static create(field, length, ...args) { | ||
let vector = new this(...args), m; | ||
vector.length = length; | ||
vector.name = field.name(); | ||
vector.type = exports.Type[field.typeType()]; | ||
if ((m = field.customMetadataLength()) > 0) { | ||
let entry, i = 0, data = vector.props = new Map(); | ||
do { | ||
entry = field.customMetadata(i); | ||
data[entry.key()] = entry.value(); | ||
} while (++i < m); | ||
slice(start, end) { | ||
let { length } = this, from = start | 0; | ||
let to = end === undefined ? length : Math.max(end | 0, from); | ||
let result = new Array(to - Math.min(from, to)); | ||
for (let i = -1, n = result.length; ++i < n;) { | ||
result[i] = this.get(i + from); | ||
} | ||
return vector; | ||
} | ||
static from(source, length, ...args) { | ||
let vector = new this(...args); | ||
vector.length = length; | ||
source.name !== Vector.defaultName && (vector.name = source.name); | ||
source.type !== Vector.defaultType && (vector.type = source.type); | ||
source.props !== Vector.defaultProps && (vector.props = source.props); | ||
return vector; | ||
} | ||
get(index) { return null; } | ||
concat(vector) { return vector; } | ||
slice(start, end, batch) { | ||
const { stride } = this; | ||
const [offset, length] = sliceToRangeArgs(stride * this.length, stride * (start || 0), stride * end); | ||
return this.range(offset, length, batch); | ||
} | ||
range(index, length, batch) { | ||
const result = new Array(length); | ||
for (let i = -1, n = this.length; ++i < length;) { | ||
result[i] = this.get((i + index) % n); | ||
} | ||
return result; | ||
@@ -82,12 +38,10 @@ } | ||
} | ||
Vector.defaultName = ''; | ||
Vector.defaultProps = new Map(); | ||
Vector.defaultType = exports.Type[exports.Type.NONE]; | ||
exports.Vector = Vector; | ||
Vector.prototype.length = 0; | ||
Vector.prototype.name = ''; | ||
Vector.prototype.stride = 1; | ||
Vector.prototype.name = Vector.defaultName; | ||
Vector.prototype.type = Vector.defaultType; | ||
Vector.prototype.props = Vector.defaultProps; | ||
Vector.prototype.nullable = !1; | ||
Vector.prototype.nullCount = 0; | ||
Vector.prototype.metadata = new Map(); | ||
Vector.prototype.type = Type[Type.NONE]; | ||
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInZlY3Rvci92ZWN0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsNkRBQTZEO0FBQzdELCtEQUErRDtBQUMvRCx3REFBd0Q7QUFDeEQsNkRBQTZEO0FBQzdELG9EQUFvRDtBQUNwRCw2REFBNkQ7QUFDN0QsNkRBQTZEO0FBQzdELEVBQUU7QUFDRiwrQ0FBK0M7QUFDL0MsRUFBRTtBQUNGLDZEQUE2RDtBQUM3RCw4REFBOEQ7QUFDOUQseURBQXlEO0FBQ3pELDREQUE0RDtBQUM1RCwwREFBMEQ7QUFDMUQscUJBQXFCOztBQUVyQiw0Q0FBNEM7QUFDOUIsUUFBQSxJQUFJLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUM7QUFDN0MsUUFBQSxLQUFLLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUM7QUFFN0QsMEJBQWlDLE1BQWMsRUFBRSxLQUFhLEVBQUUsR0FBWTtJQUN4RSxJQUFJLEtBQUssR0FBRyxNQUFNLEVBQUUsSUFBSSxHQUFHLEtBQUssSUFBSSxDQUFDLENBQUM7SUFDdEMsSUFBSSxFQUFFLEdBQUcsR0FBRyxLQUFLLEdBQUcsSUFBSSxPQUFPLEdBQUcsSUFBSSxRQUFRLEdBQUcsR0FBRyxHQUFHLEtBQUssQ0FBQztJQUM3RCxFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUFDLEVBQUUsR0FBRyxLQUFLLEdBQUcsRUFBRSxDQUFDO0lBQUMsQ0FBQztJQUNoQyxFQUFFLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUFDLElBQUksR0FBRyxLQUFLLEdBQUcsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUM7SUFBQyxDQUFDO0lBQ3JELEVBQUUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUFDLEVBQUUsR0FBRyxLQUFLLENBQUM7SUFBQyxDQUFDO0lBQ3pDLEtBQUssR0FBRyxDQUFDLFFBQVEsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUMsSUFBSSxLQUFLLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUM7SUFDaEUsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ3pCLENBQUM7QUFSRCw0Q0FRQztBQUVEO0lBSUksTUFBTSxDQUFDLE1BQU0sQ0FBVSxLQUFZLEVBQUUsTUFBYyxFQUFFLEdBQUcsSUFBVztRQUMvRCxJQUFJLE1BQU0sR0FBRyxJQUFJLElBQUksQ0FBSSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNyQyxNQUFNLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUN2QixNQUFNLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUMzQixNQUFNLENBQUMsSUFBSSxHQUFHLFlBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUNyQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsb0JBQW9CLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDekMsSUFBSSxLQUFLLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxJQUFJLEdBQUcsTUFBTSxDQUFDLEtBQUssR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO1lBQ2xELEdBQUcsQ0FBQztnQkFDQSxLQUFLLEdBQUcsS0FBSyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDaEMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUN0QyxDQUFDLFFBQVEsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFO1FBQ3RCLENBQUM7UUFDRCxNQUFNLENBQUMsTUFBTSxDQUFDO0lBQ2xCLENBQUM7SUFDRCxNQUFNLENBQUMsSUFBSSxDQUFVLE1BQWlCLEVBQUUsTUFBYyxFQUFFLEdBQUcsSUFBVztRQUNsRSxJQUFJLE1BQU0sR0FBRyxJQUFJLElBQUksQ0FBSSxHQUFHLElBQUksQ0FBQyxDQUFDO1FBQ2xDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ3ZCLE1BQU0sQ0FBQyxJQUFJLEtBQUssTUFBTSxDQUFDLFdBQVcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2xFLE1BQU0sQ0FBQyxJQUFJLEtBQUssTUFBTSxDQUFDLFdBQVcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2xFLE1BQU0sQ0FBQyxLQUFLLEtBQUssTUFBTSxDQUFDLFlBQVksSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3RFLE1BQU0sQ0FBQyxNQUFNLENBQUM7SUFDbEIsQ0FBQztJQU9ELEdBQUcsQ0FBQyxLQUFhLElBQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDdEMsTUFBTSxDQUFDLE1BQWlCLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDNUMsS0FBSyxDQUFRLEtBQWMsRUFBRSxHQUFZLEVBQUUsS0FBYztRQUNyRCxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDO1FBQ3hCLE1BQU0sQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLEdBQUcsZ0JBQWdCLENBQ3JDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sR0FBRyxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUMsRUFBRSxNQUFNLEdBQUcsR0FBRyxDQUM1RCxDQUFDO1FBQ0YsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUksTUFBTSxFQUFFLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBQ1MsS0FBSyxDQUFRLEtBQWEsRUFBRSxNQUFjLEVBQUUsS0FBYztRQUNoRSxNQUFNLE1BQU0sR0FBRyxJQUFJLEtBQUssQ0FBSSxNQUFNLENBQUMsQ0FBQztRQUNwQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsR0FBRyxNQUFNLEdBQUcsQ0FBQztZQUM5QyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQVEsQ0FBQztRQUNqRCxDQUFDO1FBQ0QsTUFBTSxDQUFDLE1BQXFCLENBQUM7SUFDakMsQ0FBQztJQUNELENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDO1FBQ2QsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUM7WUFDekMsTUFBTSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3RCLENBQUM7SUFDTCxDQUFDOztBQW5ETSxrQkFBVyxHQUFHLEVBQUUsQ0FBQztBQUNqQixtQkFBWSxHQUFHLElBQUksR0FBRyxFQUFFLENBQUM7QUFDekIsa0JBQVcsR0FBRyxZQUFJLENBQUMsWUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBSHpDLHdCQXFEQztBQUVELE1BQU0sQ0FBQyxTQUFTLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztBQUM1QixNQUFNLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7QUFDNUIsTUFBTSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQztBQUMzQyxNQUFNLENBQUMsU0FBUyxDQUFDLElBQUksR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDO0FBQzNDLE1BQU0sQ0FBQyxTQUFTLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUMiLCJmaWxlIjoidmVjdG9yL3ZlY3Rvci5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8vIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmVcbi8vIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZVxuLy8gZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb25cbi8vIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGVcbi8vIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGVcbi8vIFwiTGljZW5zZVwiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZVxuLy8gd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuLy9cbi8vICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4vL1xuLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLFxuLy8gc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW5cbi8vIFwiQVMgSVNcIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZXG4vLyBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGVcbi8vIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnNcbi8vIHVuZGVyIHRoZSBMaWNlbnNlLlxuXG5pbXBvcnQgKiBhcyBTY2hlbWFfIGZyb20gJy4uL2Zvcm1hdC9TY2hlbWEnO1xuZXhwb3J0IGltcG9ydCBUeXBlID0gU2NoZW1hXy5vcmcuYXBhY2hlLmFycm93LmZsYXRidWYuVHlwZTtcbmV4cG9ydCBpbXBvcnQgRmllbGQgPSBTY2hlbWFfLm9yZy5hcGFjaGUuYXJyb3cuZmxhdGJ1Zi5GaWVsZDtcblxuZXhwb3J0IGZ1bmN0aW9uIHNsaWNlVG9SYW5nZUFyZ3MobGVuZ3RoOiBudW1iZXIsIHN0YXJ0OiBudW1iZXIsIGVuZD86IG51bWJlcikge1xuICAgIGxldCB0b3RhbCA9IGxlbmd0aCwgZnJvbSA9IHN0YXJ0IHx8IDA7XG4gICAgbGV0IHRvID0gZW5kID09PSBlbmQgJiYgdHlwZW9mIGVuZCA9PSAnbnVtYmVyJyA/IGVuZCA6IHRvdGFsO1xuICAgIGlmICh0byA8IDApIHsgdG8gPSB0b3RhbCArIHRvOyB9XG4gICAgaWYgKGZyb20gPCAwKSB7IGZyb20gPSB0b3RhbCAtIChmcm9tICogLTEpICUgdG90YWw7IH1cbiAgICBpZiAodG8gPCBmcm9tKSB7IGZyb20gPSB0bzsgdG8gPSBzdGFydDsgfVxuICAgIHRvdGFsID0gIWlzRmluaXRlKHRvdGFsID0gKHRvIC0gZnJvbSkpIHx8IHRvdGFsIDwgMCA/IDAgOiB0b3RhbDtcbiAgICByZXR1cm4gW2Zyb20sIHRvdGFsXTtcbn1cblxuZXhwb3J0IGNsYXNzIFZlY3RvcjxUPiBpbXBsZW1lbnRzIEl0ZXJhYmxlPFQ+IHtcbiAgICBzdGF0aWMgZGVmYXVsdE5hbWUgPSAnJztcbiAgICBzdGF0aWMgZGVmYXVsdFByb3BzID0gbmV3IE1hcCgpO1xuICAgIHN0YXRpYyBkZWZhdWx0VHlwZSA9IFR5cGVbVHlwZS5OT05FXTtcbiAgICBzdGF0aWMgY3JlYXRlPFQgPSBhbnk+KGZpZWxkOiBGaWVsZCwgbGVuZ3RoOiBudW1iZXIsIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgICAgIGxldCB2ZWN0b3IgPSBuZXcgdGhpczxUPiguLi5hcmdzKSwgbTtcbiAgICAgICAgdmVjdG9yLmxlbmd0aCA9IGxlbmd0aDtcbiAgICAgICAgdmVjdG9yLm5hbWUgPSBmaWVsZC5uYW1lKCk7XG4gICAgICAgIHZlY3Rvci50eXBlID0gVHlwZVtmaWVsZC50eXBlVHlwZSgpXTtcbiAgICAgICAgaWYgKChtID0gZmllbGQuY3VzdG9tTWV0YWRhdGFMZW5ndGgoKSkgPiAwKSB7XG4gICAgICAgICAgICBsZXQgZW50cnksIGkgPSAwLCBkYXRhID0gdmVjdG9yLnByb3BzID0gbmV3IE1hcCgpO1xuICAgICAgICAgICAgZG8ge1xuICAgICAgICAgICAgICAgIGVudHJ5ID0gZmllbGQuY3VzdG9tTWV0YWRhdGEoaSk7XG4gICAgICAgICAgICAgICAgZGF0YVtlbnRyeS5rZXkoKV0gPSBlbnRyeS52YWx1ZSgpO1xuICAgICAgICAgICAgfSB3aGlsZSAoKytpIDwgbSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHZlY3RvcjtcbiAgICB9XG4gICAgc3RhdGljIGZyb208VCA9IGFueT4oc291cmNlOiBWZWN0b3I8VD4sIGxlbmd0aDogbnVtYmVyLCAuLi5hcmdzOiBhbnlbXSkge1xuICAgICAgICBsZXQgdmVjdG9yID0gbmV3IHRoaXM8VD4oLi4uYXJncyk7XG4gICAgICAgIHZlY3Rvci5sZW5ndGggPSBsZW5ndGg7XG4gICAgICAgIHNvdXJjZS5uYW1lICE9PSBWZWN0b3IuZGVmYXVsdE5hbWUgJiYgKHZlY3Rvci5uYW1lID0gc291cmNlLm5hbWUpO1xuICAgICAgICBzb3VyY2UudHlwZSAhPT0gVmVjdG9yLmRlZmF1bHRUeXBlICYmICh2ZWN0b3IudHlwZSA9IHNvdXJjZS50eXBlKTtcbiAgICAgICAgc291cmNlLnByb3BzICE9PSBWZWN0b3IuZGVmYXVsdFByb3BzICYmICh2ZWN0b3IucHJvcHMgPSBzb3VyY2UucHJvcHMpO1xuICAgICAgICByZXR1cm4gdmVjdG9yO1xuICAgIH1cbiAgICBwdWJsaWMgbmFtZTogc3RyaW5nO1xuICAgIHB1YmxpYyB0eXBlOiBzdHJpbmc7XG4gICAgcHVibGljIGxlbmd0aDogbnVtYmVyO1xuICAgIHB1YmxpYyBzdHJpZGU6IG51bWJlcjtcbiAgICBwdWJsaWMgcHJvcHM6IE1hcDxQcm9wZXJ0eUtleSwgYW55PjtcbiAgICBwcm90ZWN0ZWQgdmFsaWRpdHk6IFZlY3Rvcjxib29sZWFuPjtcbiAgICBnZXQoaW5kZXg6IG51bWJlcik6IFQgeyByZXR1cm4gbnVsbDsgfVxuICAgIGNvbmNhdCh2ZWN0b3I6IFZlY3RvcjxUPikgeyByZXR1cm4gdmVjdG9yOyB9XG4gICAgc2xpY2U8UiA9IFQ+KHN0YXJ0PzogbnVtYmVyLCBlbmQ/OiBudW1iZXIsIGJhdGNoPzogbnVtYmVyKSB7XG4gICAgICAgIGNvbnN0IHsgc3RyaWRlIH0gPSB0aGlzO1xuICAgICAgICBjb25zdCBbb2Zmc2V0LCBsZW5ndGhdID0gc2xpY2VUb1JhbmdlQXJncyhcbiAgICAgICAgICAgIHN0cmlkZSAqIHRoaXMubGVuZ3RoLCBzdHJpZGUgKiAoc3RhcnQgfHwgMCksIHN0cmlkZSAqIGVuZFxuICAgICAgICApO1xuICAgICAgICByZXR1cm4gdGhpcy5yYW5nZTxSPihvZmZzZXQsIGxlbmd0aCwgYmF0Y2gpO1xuICAgIH1cbiAgICBwcm90ZWN0ZWQgcmFuZ2U8UiA9IFQ+KGluZGV4OiBudW1iZXIsIGxlbmd0aDogbnVtYmVyLCBiYXRjaD86IG51bWJlcikge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBuZXcgQXJyYXk8Uj4obGVuZ3RoKTtcbiAgICAgICAgZm9yIChsZXQgaSA9IC0xLCBuID0gdGhpcy5sZW5ndGg7ICsraSA8IGxlbmd0aDspIHtcbiAgICAgICAgICAgIHJlc3VsdFtpXSA9IHRoaXMuZ2V0KChpICsgaW5kZXgpICUgbikgYXMgYW55O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHQgYXMgSXRlcmFibGU8Uj47XG4gICAgfVxuICAgICpbU3ltYm9sLml0ZXJhdG9yXSgpIHtcbiAgICAgICAgZm9yIChsZXQgaSA9IC0xLCBuID0gdGhpcy5sZW5ndGg7ICsraSA8IG47KSB7XG4gICAgICAgICAgICB5aWVsZCB0aGlzLmdldChpKTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuVmVjdG9yLnByb3RvdHlwZS5sZW5ndGggPSAwO1xuVmVjdG9yLnByb3RvdHlwZS5zdHJpZGUgPSAxO1xuVmVjdG9yLnByb3RvdHlwZS5uYW1lID0gVmVjdG9yLmRlZmF1bHROYW1lO1xuVmVjdG9yLnByb3RvdHlwZS50eXBlID0gVmVjdG9yLmRlZmF1bHRUeXBlO1xuVmVjdG9yLnByb3RvdHlwZS5wcm9wcyA9IFZlY3Rvci5kZWZhdWx0UHJvcHM7XG4iXX0= | ||
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInZlY3Rvci92ZWN0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLDZEQUE2RDtBQUM3RCwrREFBK0Q7QUFDL0Qsd0RBQXdEO0FBQ3hELDZEQUE2RDtBQUM3RCxvREFBb0Q7QUFDcEQsNkRBQTZEO0FBQzdELDZEQUE2RDtBQUM3RCxFQUFFO0FBQ0YsK0NBQStDO0FBQy9DLEVBQUU7QUFDRiw2REFBNkQ7QUFDN0QsOERBQThEO0FBQzlELHlEQUF5RDtBQUN6RCw0REFBNEQ7QUFDNUQsMERBQTBEO0FBQzFELHFCQUFxQjs7QUFFckIsNENBQTRDO0FBQzVDLElBQU8sSUFBSSxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDO0FBYXBEO0lBQ0ksS0FBSyxDQUFVLEtBQWMsRUFBRSxHQUFZO1FBQ3ZDLElBQUksRUFBRSxNQUFNLEVBQUUsR0FBRyxJQUFJLEVBQUUsSUFBSSxHQUFHLEtBQU0sR0FBRyxDQUFDLENBQUM7UUFDekMsSUFBSSxFQUFFLEdBQUcsR0FBRyxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDOUQsSUFBSSxNQUFNLEdBQUcsSUFBSSxLQUFLLENBQVcsRUFBRSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDMUQsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUM7WUFDM0MsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDO1FBQ25DLENBQUM7UUFDRCxNQUFNLENBQUMsTUFBYSxDQUFDO0lBQ3pCLENBQUM7SUFDRCxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQztRQUNkLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDO1lBQ3pDLE1BQU0sSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN0QixDQUFDO0lBQ0wsQ0FBQztDQUNKO0FBZkQsd0JBZUM7QUFFQSxNQUFNLENBQUMsU0FBaUIsQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDO0FBQ25DLE1BQU0sQ0FBQyxTQUFpQixDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7QUFDcEMsTUFBTSxDQUFDLFNBQWlCLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ3ZDLE1BQU0sQ0FBQyxTQUFpQixDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUM7QUFDdkMsTUFBTSxDQUFDLFNBQWlCLENBQUMsUUFBUSxHQUFHLElBQUksR0FBRyxFQUFFLENBQUM7QUFDOUMsTUFBTSxDQUFDLFNBQWlCLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMiLCJmaWxlIjoidmVjdG9yL3ZlY3Rvci5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8vIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmVcbi8vIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZVxuLy8gZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb25cbi8vIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGVcbi8vIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGVcbi8vIFwiTGljZW5zZVwiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZVxuLy8gd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuLy9cbi8vICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4vL1xuLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLFxuLy8gc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW5cbi8vIFwiQVMgSVNcIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZXG4vLyBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGVcbi8vIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnNcbi8vIHVuZGVyIHRoZSBMaWNlbnNlLlxuXG5pbXBvcnQgKiBhcyBTY2hlbWFfIGZyb20gJy4uL2Zvcm1hdC9TY2hlbWEnO1xuaW1wb3J0IFR5cGUgPSBTY2hlbWFfLm9yZy5hcGFjaGUuYXJyb3cuZmxhdGJ1Zi5UeXBlO1xuXG5leHBvcnQgaW50ZXJmYWNlIFZlY3RvcjxUID0gYW55PiBleHRlbmRzIEl0ZXJhYmxlPFQgfCBudWxsPiB7XG4gICAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuICAgIHJlYWRvbmx5IHR5cGU6IHN0cmluZztcbiAgICByZWFkb25seSBsZW5ndGg6IG51bWJlcjtcbiAgICByZWFkb25seSBudWxsYWJsZTogYm9vbGVhbjtcbiAgICByZWFkb25seSBudWxsQ291bnQ6IG51bWJlcjtcbiAgICByZWFkb25seSBtZXRhZGF0YTogTWFwPHN0cmluZywgc3RyaW5nPjtcbiAgICBnZXQoaW5kZXg6IG51bWJlcik6IFQgfCBudWxsO1xuICAgIGNvbmNhdCguLi52ZWN0b3JzOiBWZWN0b3I8VD5bXSk6IFZlY3RvcjxUPjtcbiAgICBzbGljZTxSID0gVFtdPihzdGFydD86IG51bWJlciwgZW5kPzogbnVtYmVyKTogUjtcbn1cbmV4cG9ydCBjbGFzcyBWZWN0b3I8VCA9IGFueT4gaW1wbGVtZW50cyBWZWN0b3I8VD4ge1xuICAgIHNsaWNlPFIgPSBUW10+KHN0YXJ0PzogbnVtYmVyLCBlbmQ/OiBudW1iZXIpOiBSIHtcbiAgICAgICAgbGV0IHsgbGVuZ3RoIH0gPSB0aGlzLCBmcm9tID0gc3RhcnQhIHwgMDtcbiAgICAgICAgbGV0IHRvID0gZW5kID09PSB1bmRlZmluZWQgPyBsZW5ndGggOiBNYXRoLm1heChlbmQgfCAwLCBmcm9tKTtcbiAgICAgICAgbGV0IHJlc3VsdCA9IG5ldyBBcnJheTxUIHwgbnVsbD4odG8gLSBNYXRoLm1pbihmcm9tLCB0bykpO1xuICAgICAgICBmb3IgKGxldCBpID0gLTEsIG4gPSByZXN1bHQubGVuZ3RoOyArK2kgPCBuOykge1xuICAgICAgICAgICAgcmVzdWx0W2ldID0gdGhpcy5nZXQoaSArIGZyb20pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHQgYXMgYW55O1xuICAgIH1cbiAgICAqW1N5bWJvbC5pdGVyYXRvcl0oKSB7XG4gICAgICAgIGZvciAobGV0IGkgPSAtMSwgbiA9IHRoaXMubGVuZ3RoOyArK2kgPCBuOykge1xuICAgICAgICAgICAgeWllbGQgdGhpcy5nZXQoaSk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbihWZWN0b3IucHJvdG90eXBlIGFzIGFueSkubmFtZSA9ICcnO1xuKFZlY3Rvci5wcm90b3R5cGUgYXMgYW55KS5zdHJpZGUgPSAxO1xuKFZlY3Rvci5wcm90b3R5cGUgYXMgYW55KS5udWxsYWJsZSA9ICExO1xuKFZlY3Rvci5wcm90b3R5cGUgYXMgYW55KS5udWxsQ291bnQgPSAwO1xuKFZlY3Rvci5wcm90b3R5cGUgYXMgYW55KS5tZXRhZGF0YSA9IG5ldyBNYXAoKTtcbihWZWN0b3IucHJvdG90eXBlIGFzIGFueSkudHlwZSA9IFR5cGVbVHlwZS5OT05FXTtcbiJdfQ== |
Sorry, the diff of this file is too big to display
GitHub dependency
Supply chain riskContains a dependency which resolves to a GitHub URL. Dependencies fetched from GitHub specifiers are not immutable can be used to inject untrusted code or reduce the likelihood of a reproducible install.
Found 1 instance in 1 package
Manifest confusion
Supply chain riskThis package has inconsistent metadata. This could be malicious or caused by an error when publishing the package.
Found 1 instance in 1 package
New author
Supply chain riskA new npm collaborator published a version of the package for the first time. New collaborators are usually benign additions to a project, but do indicate a change to the security surface area of a package.
Found 1 instance in 1 package
Mixed license
License(Experimental) Package contains multiple licenses.
Found 1 instance in 1 package
Unidentified License
License(Experimental) Something that seems like a license was found, but its contents could not be matched with a known license.
Found 1 instance in 1 package
705353
8892
212
3
2
80
1
3
+ Addedtext-encoding-utf-8@^1.0.2
+ Addedtslib@^1.8.0
+ Addedtext-encoding-utf-8@1.0.2(transitive)