diff --git "a/frontend/public/build/bundle.js.map" "b/frontend/public/build/bundle.js.map" new file mode 100644--- /dev/null +++ "b/frontend/public/build/bundle.js.map" @@ -0,0 +1 @@ +{"version":3,"file":"bundle.js","sources":["../../node_modules/svelte/internal/index.mjs","../../node_modules/event-target-shim/dist/event-target-shim.mjs","../../node_modules/flatbuffers/js/flatbuffers.mjs","../../node_modules/text-encoding-utf-8/lib/encoding.lib.mjs","../../node_modules/apache-arrow/util/utf8.mjs","../../node_modules/apache-arrow/io/interfaces.mjs","../../node_modules/apache-arrow/util/compat.mjs","../../node_modules/apache-arrow/util/buffer.mjs","../../node_modules/apache-arrow/io/adapters.mjs","../../node_modules/apache-arrow/vector.mjs","../../node_modules/apache-arrow/fb/Schema.mjs","../../node_modules/apache-arrow/fb/Message.mjs","../../node_modules/apache-arrow/enum.mjs","../../node_modules/apache-arrow/util/bit.mjs","../../node_modules/apache-arrow/visitor.mjs","../../node_modules/apache-arrow/visitor/typecomparator.mjs","../../node_modules/apache-arrow/type.mjs","../../node_modules/apache-arrow/data.mjs","../../node_modules/apache-arrow/util/pretty.mjs","../../node_modules/apache-arrow/builder/valid.mjs","../../node_modules/apache-arrow/builder/buffer.mjs","../../node_modules/apache-arrow/builder.mjs","../../node_modules/apache-arrow/builder/bool.mjs","../../node_modules/apache-arrow/builder/null.mjs","../../node_modules/apache-arrow/builder/date.mjs","../../node_modules/apache-arrow/builder/decimal.mjs","../../node_modules/apache-arrow/builder/dictionary.mjs","../../node_modules/apache-arrow/builder/fixedsizebinary.mjs","../../node_modules/apache-arrow/util/math.mjs","../../node_modules/apache-arrow/builder/float.mjs","../../node_modules/apache-arrow/util/bn.mjs","../../node_modules/apache-arrow/builder/int.mjs","../../node_modules/apache-arrow/builder/time.mjs","../../node_modules/apache-arrow/builder/timestamp.mjs","../../node_modules/apache-arrow/builder/interval.mjs","../../node_modules/apache-arrow/builder/binary.mjs","../../node_modules/apache-arrow/builder/utf8.mjs","../../node_modules/apache-arrow/builder/run.mjs","../../node_modules/apache-arrow/vector/row.mjs","../../node_modules/apache-arrow/util/vector.mjs","../../node_modules/apache-arrow/vector/chunked.mjs","../../node_modules/apache-arrow/column.mjs","../../node_modules/apache-arrow/util/args.mjs","../../node_modules/apache-arrow/schema.mjs","../../node_modules/apache-arrow/builder/list.mjs","../../node_modules/apache-arrow/builder/fixedsizelist.mjs","../../node_modules/apache-arrow/builder/map.mjs","../../node_modules/apache-arrow/builder/struct.mjs","../../node_modules/apache-arrow/builder/union.mjs","../../node_modules/apache-arrow/visitor/set.mjs","../../node_modules/apache-arrow/visitor/builderctor.mjs","../../node_modules/apache-arrow/fb/File.mjs","../../node_modules/apache-arrow/builder/index.mjs","../../node_modules/apache-arrow/ipc/metadata/file.mjs","../../node_modules/apache-arrow/io/stream.mjs","../../node_modules/apache-arrow/io/file.mjs","../../node_modules/apache-arrow/util/int.mjs","../../node_modules/apache-arrow/visitor/vectorloader.mjs","../../node_modules/apache-arrow/visitor/typeassembler.mjs","../../node_modules/apache-arrow/ipc/metadata/json.mjs","../../node_modules/apache-arrow/ipc/metadata/message.mjs","../../node_modules/apache-arrow/ipc/message.mjs","../../node_modules/apache-arrow/visitor/vectorassembler.mjs","../../node_modules/apache-arrow/ipc/writer.mjs","../../node_modules/apache-arrow/util/recordbatch.mjs","../../node_modules/apache-arrow/vector/base.mjs","../../node_modules/apache-arrow/vector/binary.mjs","../../node_modules/apache-arrow/vector/bool.mjs","../../node_modules/apache-arrow/vector/date.mjs","../../node_modules/apache-arrow/vector/decimal.mjs","../../node_modules/apache-arrow/vector/dictionary.mjs","../../node_modules/apache-arrow/vector/fixedsizebinary.mjs","../../node_modules/apache-arrow/vector/fixedsizelist.mjs","../../node_modules/apache-arrow/vector/float.mjs","../../node_modules/apache-arrow/vector/interval.mjs","../../node_modules/apache-arrow/vector/int.mjs","../../node_modules/apache-arrow/vector/list.mjs","../../node_modules/apache-arrow/vector/map.mjs","../../node_modules/apache-arrow/vector/null.mjs","../../node_modules/apache-arrow/vector/struct.mjs","../../node_modules/apache-arrow/vector/timestamp.mjs","../../node_modules/apache-arrow/vector/time.mjs","../../node_modules/apache-arrow/vector/union.mjs","../../node_modules/apache-arrow/vector/utf8.mjs","../../node_modules/apache-arrow/util/fn.mjs","../../node_modules/apache-arrow/visitor/get.mjs","../../node_modules/apache-arrow/visitor/indexof.mjs","../../node_modules/apache-arrow/visitor/iterator.mjs","../../node_modules/apache-arrow/visitor/toarray.mjs","../../node_modules/apache-arrow/visitor/bytewidth.mjs","../../node_modules/apache-arrow/visitor/vectorctor.mjs","../../node_modules/apache-arrow/vector/index.mjs","../../node_modules/apache-arrow/table.mjs","../../node_modules/apache-arrow/recordbatch.mjs","../../node_modules/apache-arrow/ipc/reader.mjs","../../node_modules/apache-arrow/io/whatwg/builder.mjs","../../node_modules/apache-arrow/compute/predicate.mjs","../../node_modules/apache-arrow/compute/dataframe.mjs","../../node_modules/apache-arrow/Arrow.dom.mjs","../../node_modules/apache-arrow/io/whatwg/iterable.mjs","../../node_modules/apache-arrow/io/whatwg/reader.mjs","../../node_modules/apache-arrow/io/whatwg/writer.mjs","../../src/streamlit/ArrowTable.ts","../../src/streamlit/streamlit.ts","../../src/streamlit/WithStreamlitConnection.svelte","../../src/streamlit/setStreamlitLifecycle.ts","../../src/ImageGallery.svelte","../../src/main.ts"],"sourcesContent":["function noop() { }\nconst identity = x => x;\nfunction assign(tar, src) {\n // @ts-ignore\n for (const k in src)\n tar[k] = src[k];\n return tar;\n}\nfunction is_promise(value) {\n return value && typeof value === 'object' && typeof value.then === 'function';\n}\nfunction add_location(element, file, line, column, char) {\n element.__svelte_meta = {\n loc: { file, line, column, char }\n };\n}\nfunction run(fn) {\n return fn();\n}\nfunction blank_object() {\n return Object.create(null);\n}\nfunction run_all(fns) {\n fns.forEach(run);\n}\nfunction is_function(thing) {\n return typeof thing === 'function';\n}\nfunction safe_not_equal(a, b) {\n return a != a ? b == b : a !== b || ((a && typeof a === 'object') || typeof a === 'function');\n}\nlet src_url_equal_anchor;\nfunction src_url_equal(element_src, url) {\n if (!src_url_equal_anchor) {\n src_url_equal_anchor = document.createElement('a');\n }\n src_url_equal_anchor.href = url;\n return element_src === src_url_equal_anchor.href;\n}\nfunction not_equal(a, b) {\n return a != a ? b == b : a !== b;\n}\nfunction is_empty(obj) {\n return Object.keys(obj).length === 0;\n}\nfunction validate_store(store, name) {\n if (store != null && typeof store.subscribe !== 'function') {\n throw new Error(`'${name}' is not a store with a 'subscribe' method`);\n }\n}\nfunction subscribe(store, ...callbacks) {\n if (store == null) {\n return noop;\n }\n const unsub = store.subscribe(...callbacks);\n return unsub.unsubscribe ? () => unsub.unsubscribe() : unsub;\n}\nfunction get_store_value(store) {\n let value;\n subscribe(store, _ => value = _)();\n return value;\n}\nfunction component_subscribe(component, store, callback) {\n component.$$.on_destroy.push(subscribe(store, callback));\n}\nfunction create_slot(definition, ctx, $$scope, fn) {\n if (definition) {\n const slot_ctx = get_slot_context(definition, ctx, $$scope, fn);\n return definition[0](slot_ctx);\n }\n}\nfunction get_slot_context(definition, ctx, $$scope, fn) {\n return definition[1] && fn\n ? assign($$scope.ctx.slice(), definition[1](fn(ctx)))\n : $$scope.ctx;\n}\nfunction get_slot_changes(definition, $$scope, dirty, fn) {\n if (definition[2] && fn) {\n const lets = definition[2](fn(dirty));\n if ($$scope.dirty === undefined) {\n return lets;\n }\n if (typeof lets === 'object') {\n const merged = [];\n const len = Math.max($$scope.dirty.length, lets.length);\n for (let i = 0; i < len; i += 1) {\n merged[i] = $$scope.dirty[i] | lets[i];\n }\n return merged;\n }\n return $$scope.dirty | lets;\n }\n return $$scope.dirty;\n}\nfunction update_slot_base(slot, slot_definition, ctx, $$scope, slot_changes, get_slot_context_fn) {\n if (slot_changes) {\n const slot_context = get_slot_context(slot_definition, ctx, $$scope, get_slot_context_fn);\n slot.p(slot_context, slot_changes);\n }\n}\nfunction update_slot(slot, slot_definition, ctx, $$scope, dirty, get_slot_changes_fn, get_slot_context_fn) {\n const slot_changes = get_slot_changes(slot_definition, $$scope, dirty, get_slot_changes_fn);\n update_slot_base(slot, slot_definition, ctx, $$scope, slot_changes, get_slot_context_fn);\n}\nfunction get_all_dirty_from_scope($$scope) {\n if ($$scope.ctx.length > 32) {\n const dirty = [];\n const length = $$scope.ctx.length / 32;\n for (let i = 0; i < length; i++) {\n dirty[i] = -1;\n }\n return dirty;\n }\n return -1;\n}\nfunction exclude_internal_props(props) {\n const result = {};\n for (const k in props)\n if (k[0] !== '$')\n result[k] = props[k];\n return result;\n}\nfunction compute_rest_props(props, keys) {\n const rest = {};\n keys = new Set(keys);\n for (const k in props)\n if (!keys.has(k) && k[0] !== '$')\n rest[k] = props[k];\n return rest;\n}\nfunction compute_slots(slots) {\n const result = {};\n for (const key in slots) {\n result[key] = true;\n }\n return result;\n}\nfunction once(fn) {\n let ran = false;\n return function (...args) {\n if (ran)\n return;\n ran = true;\n fn.call(this, ...args);\n };\n}\nfunction null_to_empty(value) {\n return value == null ? '' : value;\n}\nfunction set_store_value(store, ret, value) {\n store.set(value);\n return ret;\n}\nconst has_prop = (obj, prop) => Object.prototype.hasOwnProperty.call(obj, prop);\nfunction action_destroyer(action_result) {\n return action_result && is_function(action_result.destroy) ? action_result.destroy : noop;\n}\n\nconst is_client = typeof window !== 'undefined';\nlet now = is_client\n ? () => window.performance.now()\n : () => Date.now();\nlet raf = is_client ? cb => requestAnimationFrame(cb) : noop;\n// used internally for testing\nfunction set_now(fn) {\n now = fn;\n}\nfunction set_raf(fn) {\n raf = fn;\n}\n\nconst tasks = new Set();\nfunction run_tasks(now) {\n tasks.forEach(task => {\n if (!task.c(now)) {\n tasks.delete(task);\n task.f();\n }\n });\n if (tasks.size !== 0)\n raf(run_tasks);\n}\n/**\n * For testing purposes only!\n */\nfunction clear_loops() {\n tasks.clear();\n}\n/**\n * Creates a new task that runs on each raf frame\n * until it returns a falsy value or is aborted\n */\nfunction loop(callback) {\n let task;\n if (tasks.size === 0)\n raf(run_tasks);\n return {\n promise: new Promise(fulfill => {\n tasks.add(task = { c: callback, f: fulfill });\n }),\n abort() {\n tasks.delete(task);\n }\n };\n}\n\n// Track which nodes are claimed during hydration. Unclaimed nodes can then be removed from the DOM\n// at the end of hydration without touching the remaining nodes.\nlet is_hydrating = false;\nfunction start_hydrating() {\n is_hydrating = true;\n}\nfunction end_hydrating() {\n is_hydrating = false;\n}\nfunction upper_bound(low, high, key, value) {\n // Return first index of value larger than input value in the range [low, high)\n while (low < high) {\n const mid = low + ((high - low) >> 1);\n if (key(mid) <= value) {\n low = mid + 1;\n }\n else {\n high = mid;\n }\n }\n return low;\n}\nfunction init_hydrate(target) {\n if (target.hydrate_init)\n return;\n target.hydrate_init = true;\n // We know that all children have claim_order values since the unclaimed have been detached if target is not \n let children = target.childNodes;\n // If target is , there may be children without claim_order\n if (target.nodeName === 'HEAD') {\n const myChildren = [];\n for (let i = 0; i < children.length; i++) {\n const node = children[i];\n if (node.claim_order !== undefined) {\n myChildren.push(node);\n }\n }\n children = myChildren;\n }\n /*\n * Reorder claimed children optimally.\n * We can reorder claimed children optimally by finding the longest subsequence of\n * nodes that are already claimed in order and only moving the rest. The longest\n * subsequence subsequence of nodes that are claimed in order can be found by\n * computing the longest increasing subsequence of .claim_order values.\n *\n * This algorithm is optimal in generating the least amount of reorder operations\n * possible.\n *\n * Proof:\n * We know that, given a set of reordering operations, the nodes that do not move\n * always form an increasing subsequence, since they do not move among each other\n * meaning that they must be already ordered among each other. Thus, the maximal\n * set of nodes that do not move form a longest increasing subsequence.\n */\n // Compute longest increasing subsequence\n // m: subsequence length j => index k of smallest value that ends an increasing subsequence of length j\n const m = new Int32Array(children.length + 1);\n // Predecessor indices + 1\n const p = new Int32Array(children.length);\n m[0] = -1;\n let longest = 0;\n for (let i = 0; i < children.length; i++) {\n const current = children[i].claim_order;\n // Find the largest subsequence length such that it ends in a value less than our current value\n // upper_bound returns first greater value, so we subtract one\n // with fast path for when we are on the current longest subsequence\n const seqLen = ((longest > 0 && children[m[longest]].claim_order <= current) ? longest + 1 : upper_bound(1, longest, idx => children[m[idx]].claim_order, current)) - 1;\n p[i] = m[seqLen] + 1;\n const newLen = seqLen + 1;\n // We can guarantee that current is the smallest value. Otherwise, we would have generated a longer sequence.\n m[newLen] = i;\n longest = Math.max(newLen, longest);\n }\n // The longest increasing subsequence of nodes (initially reversed)\n const lis = [];\n // The rest of the nodes, nodes that will be moved\n const toMove = [];\n let last = children.length - 1;\n for (let cur = m[longest] + 1; cur != 0; cur = p[cur - 1]) {\n lis.push(children[cur - 1]);\n for (; last >= cur; last--) {\n toMove.push(children[last]);\n }\n last--;\n }\n for (; last >= 0; last--) {\n toMove.push(children[last]);\n }\n lis.reverse();\n // We sort the nodes being moved to guarantee that their insertion order matches the claim order\n toMove.sort((a, b) => a.claim_order - b.claim_order);\n // Finally, we move the nodes\n for (let i = 0, j = 0; i < toMove.length; i++) {\n while (j < lis.length && toMove[i].claim_order >= lis[j].claim_order) {\n j++;\n }\n const anchor = j < lis.length ? lis[j] : null;\n target.insertBefore(toMove[i], anchor);\n }\n}\nfunction append(target, node) {\n target.appendChild(node);\n}\nfunction append_styles(target, style_sheet_id, styles) {\n const append_styles_to = get_root_for_style(target);\n if (!append_styles_to.getElementById(style_sheet_id)) {\n const style = element('style');\n style.id = style_sheet_id;\n style.textContent = styles;\n append_stylesheet(append_styles_to, style);\n }\n}\nfunction get_root_for_style(node) {\n if (!node)\n return document;\n const root = node.getRootNode ? node.getRootNode() : node.ownerDocument;\n if (root && root.host) {\n return root;\n }\n return node.ownerDocument;\n}\nfunction append_empty_stylesheet(node) {\n const style_element = element('style');\n append_stylesheet(get_root_for_style(node), style_element);\n return style_element;\n}\nfunction append_stylesheet(node, style) {\n append(node.head || node, style);\n}\nfunction append_hydration(target, node) {\n if (is_hydrating) {\n init_hydrate(target);\n if ((target.actual_end_child === undefined) || ((target.actual_end_child !== null) && (target.actual_end_child.parentElement !== target))) {\n target.actual_end_child = target.firstChild;\n }\n // Skip nodes of undefined ordering\n while ((target.actual_end_child !== null) && (target.actual_end_child.claim_order === undefined)) {\n target.actual_end_child = target.actual_end_child.nextSibling;\n }\n if (node !== target.actual_end_child) {\n // We only insert if the ordering of this node should be modified or the parent node is not target\n if (node.claim_order !== undefined || node.parentNode !== target) {\n target.insertBefore(node, target.actual_end_child);\n }\n }\n else {\n target.actual_end_child = node.nextSibling;\n }\n }\n else if (node.parentNode !== target || node.nextSibling !== null) {\n target.appendChild(node);\n }\n}\nfunction insert(target, node, anchor) {\n target.insertBefore(node, anchor || null);\n}\nfunction insert_hydration(target, node, anchor) {\n if (is_hydrating && !anchor) {\n append_hydration(target, node);\n }\n else if (node.parentNode !== target || node.nextSibling != anchor) {\n target.insertBefore(node, anchor || null);\n }\n}\nfunction detach(node) {\n node.parentNode.removeChild(node);\n}\nfunction destroy_each(iterations, detaching) {\n for (let i = 0; i < iterations.length; i += 1) {\n if (iterations[i])\n iterations[i].d(detaching);\n }\n}\nfunction element(name) {\n return document.createElement(name);\n}\nfunction element_is(name, is) {\n return document.createElement(name, { is });\n}\nfunction object_without_properties(obj, exclude) {\n const target = {};\n for (const k in obj) {\n if (has_prop(obj, k)\n // @ts-ignore\n && exclude.indexOf(k) === -1) {\n // @ts-ignore\n target[k] = obj[k];\n }\n }\n return target;\n}\nfunction svg_element(name) {\n return document.createElementNS('http://www.w3.org/2000/svg', name);\n}\nfunction text(data) {\n return document.createTextNode(data);\n}\nfunction space() {\n return text(' ');\n}\nfunction empty() {\n return text('');\n}\nfunction listen(node, event, handler, options) {\n node.addEventListener(event, handler, options);\n return () => node.removeEventListener(event, handler, options);\n}\nfunction prevent_default(fn) {\n return function (event) {\n event.preventDefault();\n // @ts-ignore\n return fn.call(this, event);\n };\n}\nfunction stop_propagation(fn) {\n return function (event) {\n event.stopPropagation();\n // @ts-ignore\n return fn.call(this, event);\n };\n}\nfunction self(fn) {\n return function (event) {\n // @ts-ignore\n if (event.target === this)\n fn.call(this, event);\n };\n}\nfunction trusted(fn) {\n return function (event) {\n // @ts-ignore\n if (event.isTrusted)\n fn.call(this, event);\n };\n}\nfunction attr(node, attribute, value) {\n if (value == null)\n node.removeAttribute(attribute);\n else if (node.getAttribute(attribute) !== value)\n node.setAttribute(attribute, value);\n}\nfunction set_attributes(node, attributes) {\n // @ts-ignore\n const descriptors = Object.getOwnPropertyDescriptors(node.__proto__);\n for (const key in attributes) {\n if (attributes[key] == null) {\n node.removeAttribute(key);\n }\n else if (key === 'style') {\n node.style.cssText = attributes[key];\n }\n else if (key === '__value') {\n node.value = node[key] = attributes[key];\n }\n else if (descriptors[key] && descriptors[key].set) {\n node[key] = attributes[key];\n }\n else {\n attr(node, key, attributes[key]);\n }\n }\n}\nfunction set_svg_attributes(node, attributes) {\n for (const key in attributes) {\n attr(node, key, attributes[key]);\n }\n}\nfunction set_custom_element_data(node, prop, value) {\n if (prop in node) {\n node[prop] = typeof node[prop] === 'boolean' && value === '' ? true : value;\n }\n else {\n attr(node, prop, value);\n }\n}\nfunction xlink_attr(node, attribute, value) {\n node.setAttributeNS('http://www.w3.org/1999/xlink', attribute, value);\n}\nfunction get_binding_group_value(group, __value, checked) {\n const value = new Set();\n for (let i = 0; i < group.length; i += 1) {\n if (group[i].checked)\n value.add(group[i].__value);\n }\n if (!checked) {\n value.delete(__value);\n }\n return Array.from(value);\n}\nfunction to_number(value) {\n return value === '' ? null : +value;\n}\nfunction time_ranges_to_array(ranges) {\n const array = [];\n for (let i = 0; i < ranges.length; i += 1) {\n array.push({ start: ranges.start(i), end: ranges.end(i) });\n }\n return array;\n}\nfunction children(element) {\n return Array.from(element.childNodes);\n}\nfunction init_claim_info(nodes) {\n if (nodes.claim_info === undefined) {\n nodes.claim_info = { last_index: 0, total_claimed: 0 };\n }\n}\nfunction claim_node(nodes, predicate, processNode, createNode, dontUpdateLastIndex = false) {\n // Try to find nodes in an order such that we lengthen the longest increasing subsequence\n init_claim_info(nodes);\n const resultNode = (() => {\n // We first try to find an element after the previous one\n for (let i = nodes.claim_info.last_index; i < nodes.length; i++) {\n const node = nodes[i];\n if (predicate(node)) {\n const replacement = processNode(node);\n if (replacement === undefined) {\n nodes.splice(i, 1);\n }\n else {\n nodes[i] = replacement;\n }\n if (!dontUpdateLastIndex) {\n nodes.claim_info.last_index = i;\n }\n return node;\n }\n }\n // Otherwise, we try to find one before\n // We iterate in reverse so that we don't go too far back\n for (let i = nodes.claim_info.last_index - 1; i >= 0; i--) {\n const node = nodes[i];\n if (predicate(node)) {\n const replacement = processNode(node);\n if (replacement === undefined) {\n nodes.splice(i, 1);\n }\n else {\n nodes[i] = replacement;\n }\n if (!dontUpdateLastIndex) {\n nodes.claim_info.last_index = i;\n }\n else if (replacement === undefined) {\n // Since we spliced before the last_index, we decrease it\n nodes.claim_info.last_index--;\n }\n return node;\n }\n }\n // If we can't find any matching node, we create a new one\n return createNode();\n })();\n resultNode.claim_order = nodes.claim_info.total_claimed;\n nodes.claim_info.total_claimed += 1;\n return resultNode;\n}\nfunction claim_element_base(nodes, name, attributes, create_element) {\n return claim_node(nodes, (node) => node.nodeName === name, (node) => {\n const remove = [];\n for (let j = 0; j < node.attributes.length; j++) {\n const attribute = node.attributes[j];\n if (!attributes[attribute.name]) {\n remove.push(attribute.name);\n }\n }\n remove.forEach(v => node.removeAttribute(v));\n return undefined;\n }, () => create_element(name));\n}\nfunction claim_element(nodes, name, attributes) {\n return claim_element_base(nodes, name, attributes, element);\n}\nfunction claim_svg_element(nodes, name, attributes) {\n return claim_element_base(nodes, name, attributes, svg_element);\n}\nfunction claim_text(nodes, data) {\n return claim_node(nodes, (node) => node.nodeType === 3, (node) => {\n const dataStr = '' + data;\n if (node.data.startsWith(dataStr)) {\n if (node.data.length !== dataStr.length) {\n return node.splitText(dataStr.length);\n }\n }\n else {\n node.data = dataStr;\n }\n }, () => text(data), true // Text nodes should not update last index since it is likely not worth it to eliminate an increasing subsequence of actual elements\n );\n}\nfunction claim_space(nodes) {\n return claim_text(nodes, ' ');\n}\nfunction find_comment(nodes, text, start) {\n for (let i = start; i < nodes.length; i += 1) {\n const node = nodes[i];\n if (node.nodeType === 8 /* comment node */ && node.textContent.trim() === text) {\n return i;\n }\n }\n return nodes.length;\n}\nfunction claim_html_tag(nodes) {\n // find html opening tag\n const start_index = find_comment(nodes, 'HTML_TAG_START', 0);\n const end_index = find_comment(nodes, 'HTML_TAG_END', start_index);\n if (start_index === end_index) {\n return new HtmlTagHydration();\n }\n init_claim_info(nodes);\n const html_tag_nodes = nodes.splice(start_index, end_index + 1);\n detach(html_tag_nodes[0]);\n detach(html_tag_nodes[html_tag_nodes.length - 1]);\n const claimed_nodes = html_tag_nodes.slice(1, html_tag_nodes.length - 1);\n for (const n of claimed_nodes) {\n n.claim_order = nodes.claim_info.total_claimed;\n nodes.claim_info.total_claimed += 1;\n }\n return new HtmlTagHydration(claimed_nodes);\n}\nfunction set_data(text, data) {\n data = '' + data;\n if (text.wholeText !== data)\n text.data = data;\n}\nfunction set_input_value(input, value) {\n input.value = value == null ? '' : value;\n}\nfunction set_input_type(input, type) {\n try {\n input.type = type;\n }\n catch (e) {\n // do nothing\n }\n}\nfunction set_style(node, key, value, important) {\n node.style.setProperty(key, value, important ? 'important' : '');\n}\nfunction select_option(select, value) {\n for (let i = 0; i < select.options.length; i += 1) {\n const option = select.options[i];\n if (option.__value === value) {\n option.selected = true;\n return;\n }\n }\n select.selectedIndex = -1; // no option should be selected\n}\nfunction select_options(select, value) {\n for (let i = 0; i < select.options.length; i += 1) {\n const option = select.options[i];\n option.selected = ~value.indexOf(option.__value);\n }\n}\nfunction select_value(select) {\n const selected_option = select.querySelector(':checked') || select.options[0];\n return selected_option && selected_option.__value;\n}\nfunction select_multiple_value(select) {\n return [].map.call(select.querySelectorAll(':checked'), option => option.__value);\n}\n// unfortunately this can't be a constant as that wouldn't be tree-shakeable\n// so we cache the result instead\nlet crossorigin;\nfunction is_crossorigin() {\n if (crossorigin === undefined) {\n crossorigin = false;\n try {\n if (typeof window !== 'undefined' && window.parent) {\n void window.parent.document;\n }\n }\n catch (error) {\n crossorigin = true;\n }\n }\n return crossorigin;\n}\nfunction add_resize_listener(node, fn) {\n const computed_style = getComputedStyle(node);\n if (computed_style.position === 'static') {\n node.style.position = 'relative';\n }\n const iframe = element('iframe');\n iframe.setAttribute('style', 'display: block; position: absolute; top: 0; left: 0; width: 100%; height: 100%; ' +\n 'overflow: hidden; border: 0; opacity: 0; pointer-events: none; z-index: -1;');\n iframe.setAttribute('aria-hidden', 'true');\n iframe.tabIndex = -1;\n const crossorigin = is_crossorigin();\n let unsubscribe;\n if (crossorigin) {\n iframe.src = \"data:text/html,\";\n unsubscribe = listen(window, 'message', (event) => {\n if (event.source === iframe.contentWindow)\n fn();\n });\n }\n else {\n iframe.src = 'about:blank';\n iframe.onload = () => {\n unsubscribe = listen(iframe.contentWindow, 'resize', fn);\n };\n }\n append(node, iframe);\n return () => {\n if (crossorigin) {\n unsubscribe();\n }\n else if (unsubscribe && iframe.contentWindow) {\n unsubscribe();\n }\n detach(iframe);\n };\n}\nfunction toggle_class(element, name, toggle) {\n element.classList[toggle ? 'add' : 'remove'](name);\n}\nfunction custom_event(type, detail, bubbles = false) {\n const e = document.createEvent('CustomEvent');\n e.initCustomEvent(type, bubbles, false, detail);\n return e;\n}\nfunction query_selector_all(selector, parent = document.body) {\n return Array.from(parent.querySelectorAll(selector));\n}\nclass HtmlTag {\n constructor() {\n this.e = this.n = null;\n }\n c(html) {\n this.h(html);\n }\n m(html, target, anchor = null) {\n if (!this.e) {\n this.e = element(target.nodeName);\n this.t = target;\n this.c(html);\n }\n this.i(anchor);\n }\n h(html) {\n this.e.innerHTML = html;\n this.n = Array.from(this.e.childNodes);\n }\n i(anchor) {\n for (let i = 0; i < this.n.length; i += 1) {\n insert(this.t, this.n[i], anchor);\n }\n }\n p(html) {\n this.d();\n this.h(html);\n this.i(this.a);\n }\n d() {\n this.n.forEach(detach);\n }\n}\nclass HtmlTagHydration extends HtmlTag {\n constructor(claimed_nodes) {\n super();\n this.e = this.n = null;\n this.l = claimed_nodes;\n }\n c(html) {\n if (this.l) {\n this.n = this.l;\n }\n else {\n super.c(html);\n }\n }\n i(anchor) {\n for (let i = 0; i < this.n.length; i += 1) {\n insert_hydration(this.t, this.n[i], anchor);\n }\n }\n}\nfunction attribute_to_object(attributes) {\n const result = {};\n for (const attribute of attributes) {\n result[attribute.name] = attribute.value;\n }\n return result;\n}\nfunction get_custom_elements_slots(element) {\n const result = {};\n element.childNodes.forEach((node) => {\n result[node.slot || 'default'] = true;\n });\n return result;\n}\n\nconst active_docs = new Set();\nlet active = 0;\n// https://github.com/darkskyapp/string-hash/blob/master/index.js\nfunction hash(str) {\n let hash = 5381;\n let i = str.length;\n while (i--)\n hash = ((hash << 5) - hash) ^ str.charCodeAt(i);\n return hash >>> 0;\n}\nfunction create_rule(node, a, b, duration, delay, ease, fn, uid = 0) {\n const step = 16.666 / duration;\n let keyframes = '{\\n';\n for (let p = 0; p <= 1; p += step) {\n const t = a + (b - a) * ease(p);\n keyframes += p * 100 + `%{${fn(t, 1 - t)}}\\n`;\n }\n const rule = keyframes + `100% {${fn(b, 1 - b)}}\\n}`;\n const name = `__svelte_${hash(rule)}_${uid}`;\n const doc = get_root_for_style(node);\n active_docs.add(doc);\n const stylesheet = doc.__svelte_stylesheet || (doc.__svelte_stylesheet = append_empty_stylesheet(node).sheet);\n const current_rules = doc.__svelte_rules || (doc.__svelte_rules = {});\n if (!current_rules[name]) {\n current_rules[name] = true;\n stylesheet.insertRule(`@keyframes ${name} ${rule}`, stylesheet.cssRules.length);\n }\n const animation = node.style.animation || '';\n node.style.animation = `${animation ? `${animation}, ` : ''}${name} ${duration}ms linear ${delay}ms 1 both`;\n active += 1;\n return name;\n}\nfunction delete_rule(node, name) {\n const previous = (node.style.animation || '').split(', ');\n const next = previous.filter(name\n ? anim => anim.indexOf(name) < 0 // remove specific animation\n : anim => anim.indexOf('__svelte') === -1 // remove all Svelte animations\n );\n const deleted = previous.length - next.length;\n if (deleted) {\n node.style.animation = next.join(', ');\n active -= deleted;\n if (!active)\n clear_rules();\n }\n}\nfunction clear_rules() {\n raf(() => {\n if (active)\n return;\n active_docs.forEach(doc => {\n const stylesheet = doc.__svelte_stylesheet;\n let i = stylesheet.cssRules.length;\n while (i--)\n stylesheet.deleteRule(i);\n doc.__svelte_rules = {};\n });\n active_docs.clear();\n });\n}\n\nfunction create_animation(node, from, fn, params) {\n if (!from)\n return noop;\n const to = node.getBoundingClientRect();\n if (from.left === to.left && from.right === to.right && from.top === to.top && from.bottom === to.bottom)\n return noop;\n const { delay = 0, duration = 300, easing = identity, \n // @ts-ignore todo: should this be separated from destructuring? Or start/end added to public api and documentation?\n start: start_time = now() + delay, \n // @ts-ignore todo:\n end = start_time + duration, tick = noop, css } = fn(node, { from, to }, params);\n let running = true;\n let started = false;\n let name;\n function start() {\n if (css) {\n name = create_rule(node, 0, 1, duration, delay, easing, css);\n }\n if (!delay) {\n started = true;\n }\n }\n function stop() {\n if (css)\n delete_rule(node, name);\n running = false;\n }\n loop(now => {\n if (!started && now >= start_time) {\n started = true;\n }\n if (started && now >= end) {\n tick(1, 0);\n stop();\n }\n if (!running) {\n return false;\n }\n if (started) {\n const p = now - start_time;\n const t = 0 + 1 * easing(p / duration);\n tick(t, 1 - t);\n }\n return true;\n });\n start();\n tick(0, 1);\n return stop;\n}\nfunction fix_position(node) {\n const style = getComputedStyle(node);\n if (style.position !== 'absolute' && style.position !== 'fixed') {\n const { width, height } = style;\n const a = node.getBoundingClientRect();\n node.style.position = 'absolute';\n node.style.width = width;\n node.style.height = height;\n add_transform(node, a);\n }\n}\nfunction add_transform(node, a) {\n const b = node.getBoundingClientRect();\n if (a.left !== b.left || a.top !== b.top) {\n const style = getComputedStyle(node);\n const transform = style.transform === 'none' ? '' : style.transform;\n node.style.transform = `${transform} translate(${a.left - b.left}px, ${a.top - b.top}px)`;\n }\n}\n\nlet current_component;\nfunction set_current_component(component) {\n current_component = component;\n}\nfunction get_current_component() {\n if (!current_component)\n throw new Error('Function called outside component initialization');\n return current_component;\n}\nfunction beforeUpdate(fn) {\n get_current_component().$$.before_update.push(fn);\n}\nfunction onMount(fn) {\n get_current_component().$$.on_mount.push(fn);\n}\nfunction afterUpdate(fn) {\n get_current_component().$$.after_update.push(fn);\n}\nfunction onDestroy(fn) {\n get_current_component().$$.on_destroy.push(fn);\n}\nfunction createEventDispatcher() {\n const component = get_current_component();\n return (type, detail) => {\n const callbacks = component.$$.callbacks[type];\n if (callbacks) {\n // TODO are there situations where events could be dispatched\n // in a server (non-DOM) environment?\n const event = custom_event(type, detail);\n callbacks.slice().forEach(fn => {\n fn.call(component, event);\n });\n }\n };\n}\nfunction setContext(key, context) {\n get_current_component().$$.context.set(key, context);\n}\nfunction getContext(key) {\n return get_current_component().$$.context.get(key);\n}\nfunction getAllContexts() {\n return get_current_component().$$.context;\n}\nfunction hasContext(key) {\n return get_current_component().$$.context.has(key);\n}\n// TODO figure out if we still want to support\n// shorthand events, or if we want to implement\n// a real bubbling mechanism\nfunction bubble(component, event) {\n const callbacks = component.$$.callbacks[event.type];\n if (callbacks) {\n // @ts-ignore\n callbacks.slice().forEach(fn => fn.call(this, event));\n }\n}\n\nconst dirty_components = [];\nconst intros = { enabled: false };\nconst binding_callbacks = [];\nconst render_callbacks = [];\nconst flush_callbacks = [];\nconst resolved_promise = Promise.resolve();\nlet update_scheduled = false;\nfunction schedule_update() {\n if (!update_scheduled) {\n update_scheduled = true;\n resolved_promise.then(flush);\n }\n}\nfunction tick() {\n schedule_update();\n return resolved_promise;\n}\nfunction add_render_callback(fn) {\n render_callbacks.push(fn);\n}\nfunction add_flush_callback(fn) {\n flush_callbacks.push(fn);\n}\nlet flushing = false;\nconst seen_callbacks = new Set();\nfunction flush() {\n if (flushing)\n return;\n flushing = true;\n do {\n // first, call beforeUpdate functions\n // and update components\n for (let i = 0; i < dirty_components.length; i += 1) {\n const component = dirty_components[i];\n set_current_component(component);\n update(component.$$);\n }\n set_current_component(null);\n dirty_components.length = 0;\n while (binding_callbacks.length)\n binding_callbacks.pop()();\n // then, once components are updated, call\n // afterUpdate functions. This may cause\n // subsequent updates...\n for (let i = 0; i < render_callbacks.length; i += 1) {\n const callback = render_callbacks[i];\n if (!seen_callbacks.has(callback)) {\n // ...so guard against infinite loops\n seen_callbacks.add(callback);\n callback();\n }\n }\n render_callbacks.length = 0;\n } while (dirty_components.length);\n while (flush_callbacks.length) {\n flush_callbacks.pop()();\n }\n update_scheduled = false;\n flushing = false;\n seen_callbacks.clear();\n}\nfunction update($$) {\n if ($$.fragment !== null) {\n $$.update();\n run_all($$.before_update);\n const dirty = $$.dirty;\n $$.dirty = [-1];\n $$.fragment && $$.fragment.p($$.ctx, dirty);\n $$.after_update.forEach(add_render_callback);\n }\n}\n\nlet promise;\nfunction wait() {\n if (!promise) {\n promise = Promise.resolve();\n promise.then(() => {\n promise = null;\n });\n }\n return promise;\n}\nfunction dispatch(node, direction, kind) {\n node.dispatchEvent(custom_event(`${direction ? 'intro' : 'outro'}${kind}`));\n}\nconst outroing = new Set();\nlet outros;\nfunction group_outros() {\n outros = {\n r: 0,\n c: [],\n p: outros // parent group\n };\n}\nfunction check_outros() {\n if (!outros.r) {\n run_all(outros.c);\n }\n outros = outros.p;\n}\nfunction transition_in(block, local) {\n if (block && block.i) {\n outroing.delete(block);\n block.i(local);\n }\n}\nfunction transition_out(block, local, detach, callback) {\n if (block && block.o) {\n if (outroing.has(block))\n return;\n outroing.add(block);\n outros.c.push(() => {\n outroing.delete(block);\n if (callback) {\n if (detach)\n block.d(1);\n callback();\n }\n });\n block.o(local);\n }\n}\nconst null_transition = { duration: 0 };\nfunction create_in_transition(node, fn, params) {\n let config = fn(node, params);\n let running = false;\n let animation_name;\n let task;\n let uid = 0;\n function cleanup() {\n if (animation_name)\n delete_rule(node, animation_name);\n }\n function go() {\n const { delay = 0, duration = 300, easing = identity, tick = noop, css } = config || null_transition;\n if (css)\n animation_name = create_rule(node, 0, 1, duration, delay, easing, css, uid++);\n tick(0, 1);\n const start_time = now() + delay;\n const end_time = start_time + duration;\n if (task)\n task.abort();\n running = true;\n add_render_callback(() => dispatch(node, true, 'start'));\n task = loop(now => {\n if (running) {\n if (now >= end_time) {\n tick(1, 0);\n dispatch(node, true, 'end');\n cleanup();\n return running = false;\n }\n if (now >= start_time) {\n const t = easing((now - start_time) / duration);\n tick(t, 1 - t);\n }\n }\n return running;\n });\n }\n let started = false;\n return {\n start() {\n if (started)\n return;\n started = true;\n delete_rule(node);\n if (is_function(config)) {\n config = config();\n wait().then(go);\n }\n else {\n go();\n }\n },\n invalidate() {\n started = false;\n },\n end() {\n if (running) {\n cleanup();\n running = false;\n }\n }\n };\n}\nfunction create_out_transition(node, fn, params) {\n let config = fn(node, params);\n let running = true;\n let animation_name;\n const group = outros;\n group.r += 1;\n function go() {\n const { delay = 0, duration = 300, easing = identity, tick = noop, css } = config || null_transition;\n if (css)\n animation_name = create_rule(node, 1, 0, duration, delay, easing, css);\n const start_time = now() + delay;\n const end_time = start_time + duration;\n add_render_callback(() => dispatch(node, false, 'start'));\n loop(now => {\n if (running) {\n if (now >= end_time) {\n tick(0, 1);\n dispatch(node, false, 'end');\n if (!--group.r) {\n // this will result in `end()` being called,\n // so we don't need to clean up here\n run_all(group.c);\n }\n return false;\n }\n if (now >= start_time) {\n const t = easing((now - start_time) / duration);\n tick(1 - t, t);\n }\n }\n return running;\n });\n }\n if (is_function(config)) {\n wait().then(() => {\n // @ts-ignore\n config = config();\n go();\n });\n }\n else {\n go();\n }\n return {\n end(reset) {\n if (reset && config.tick) {\n config.tick(1, 0);\n }\n if (running) {\n if (animation_name)\n delete_rule(node, animation_name);\n running = false;\n }\n }\n };\n}\nfunction create_bidirectional_transition(node, fn, params, intro) {\n let config = fn(node, params);\n let t = intro ? 0 : 1;\n let running_program = null;\n let pending_program = null;\n let animation_name = null;\n function clear_animation() {\n if (animation_name)\n delete_rule(node, animation_name);\n }\n function init(program, duration) {\n const d = (program.b - t);\n duration *= Math.abs(d);\n return {\n a: t,\n b: program.b,\n d,\n duration,\n start: program.start,\n end: program.start + duration,\n group: program.group\n };\n }\n function go(b) {\n const { delay = 0, duration = 300, easing = identity, tick = noop, css } = config || null_transition;\n const program = {\n start: now() + delay,\n b\n };\n if (!b) {\n // @ts-ignore todo: improve typings\n program.group = outros;\n outros.r += 1;\n }\n if (running_program || pending_program) {\n pending_program = program;\n }\n else {\n // if this is an intro, and there's a delay, we need to do\n // an initial tick and/or apply CSS animation immediately\n if (css) {\n clear_animation();\n animation_name = create_rule(node, t, b, duration, delay, easing, css);\n }\n if (b)\n tick(0, 1);\n running_program = init(program, duration);\n add_render_callback(() => dispatch(node, b, 'start'));\n loop(now => {\n if (pending_program && now > pending_program.start) {\n running_program = init(pending_program, duration);\n pending_program = null;\n dispatch(node, running_program.b, 'start');\n if (css) {\n clear_animation();\n animation_name = create_rule(node, t, running_program.b, running_program.duration, 0, easing, config.css);\n }\n }\n if (running_program) {\n if (now >= running_program.end) {\n tick(t = running_program.b, 1 - t);\n dispatch(node, running_program.b, 'end');\n if (!pending_program) {\n // we're done\n if (running_program.b) {\n // intro — we can tidy up immediately\n clear_animation();\n }\n else {\n // outro — needs to be coordinated\n if (!--running_program.group.r)\n run_all(running_program.group.c);\n }\n }\n running_program = null;\n }\n else if (now >= running_program.start) {\n const p = now - running_program.start;\n t = running_program.a + running_program.d * easing(p / running_program.duration);\n tick(t, 1 - t);\n }\n }\n return !!(running_program || pending_program);\n });\n }\n }\n return {\n run(b) {\n if (is_function(config)) {\n wait().then(() => {\n // @ts-ignore\n config = config();\n go(b);\n });\n }\n else {\n go(b);\n }\n },\n end() {\n clear_animation();\n running_program = pending_program = null;\n }\n };\n}\n\nfunction handle_promise(promise, info) {\n const token = info.token = {};\n function update(type, index, key, value) {\n if (info.token !== token)\n return;\n info.resolved = value;\n let child_ctx = info.ctx;\n if (key !== undefined) {\n child_ctx = child_ctx.slice();\n child_ctx[key] = value;\n }\n const block = type && (info.current = type)(child_ctx);\n let needs_flush = false;\n if (info.block) {\n if (info.blocks) {\n info.blocks.forEach((block, i) => {\n if (i !== index && block) {\n group_outros();\n transition_out(block, 1, 1, () => {\n if (info.blocks[i] === block) {\n info.blocks[i] = null;\n }\n });\n check_outros();\n }\n });\n }\n else {\n info.block.d(1);\n }\n block.c();\n transition_in(block, 1);\n block.m(info.mount(), info.anchor);\n needs_flush = true;\n }\n info.block = block;\n if (info.blocks)\n info.blocks[index] = block;\n if (needs_flush) {\n flush();\n }\n }\n if (is_promise(promise)) {\n const current_component = get_current_component();\n promise.then(value => {\n set_current_component(current_component);\n update(info.then, 1, info.value, value);\n set_current_component(null);\n }, error => {\n set_current_component(current_component);\n update(info.catch, 2, info.error, error);\n set_current_component(null);\n if (!info.hasCatch) {\n throw error;\n }\n });\n // if we previously had a then/catch block, destroy it\n if (info.current !== info.pending) {\n update(info.pending, 0);\n return true;\n }\n }\n else {\n if (info.current !== info.then) {\n update(info.then, 1, info.value, promise);\n return true;\n }\n info.resolved = promise;\n }\n}\nfunction update_await_block_branch(info, ctx, dirty) {\n const child_ctx = ctx.slice();\n const { resolved } = info;\n if (info.current === info.then) {\n child_ctx[info.value] = resolved;\n }\n if (info.current === info.catch) {\n child_ctx[info.error] = resolved;\n }\n info.block.p(child_ctx, dirty);\n}\n\nconst globals = (typeof window !== 'undefined'\n ? window\n : typeof globalThis !== 'undefined'\n ? globalThis\n : global);\n\nfunction destroy_block(block, lookup) {\n block.d(1);\n lookup.delete(block.key);\n}\nfunction outro_and_destroy_block(block, lookup) {\n transition_out(block, 1, 1, () => {\n lookup.delete(block.key);\n });\n}\nfunction fix_and_destroy_block(block, lookup) {\n block.f();\n destroy_block(block, lookup);\n}\nfunction fix_and_outro_and_destroy_block(block, lookup) {\n block.f();\n outro_and_destroy_block(block, lookup);\n}\nfunction update_keyed_each(old_blocks, dirty, get_key, dynamic, ctx, list, lookup, node, destroy, create_each_block, next, get_context) {\n let o = old_blocks.length;\n let n = list.length;\n let i = o;\n const old_indexes = {};\n while (i--)\n old_indexes[old_blocks[i].key] = i;\n const new_blocks = [];\n const new_lookup = new Map();\n const deltas = new Map();\n i = n;\n while (i--) {\n const child_ctx = get_context(ctx, list, i);\n const key = get_key(child_ctx);\n let block = lookup.get(key);\n if (!block) {\n block = create_each_block(key, child_ctx);\n block.c();\n }\n else if (dynamic) {\n block.p(child_ctx, dirty);\n }\n new_lookup.set(key, new_blocks[i] = block);\n if (key in old_indexes)\n deltas.set(key, Math.abs(i - old_indexes[key]));\n }\n const will_move = new Set();\n const did_move = new Set();\n function insert(block) {\n transition_in(block, 1);\n block.m(node, next);\n lookup.set(block.key, block);\n next = block.first;\n n--;\n }\n while (o && n) {\n const new_block = new_blocks[n - 1];\n const old_block = old_blocks[o - 1];\n const new_key = new_block.key;\n const old_key = old_block.key;\n if (new_block === old_block) {\n // do nothing\n next = new_block.first;\n o--;\n n--;\n }\n else if (!new_lookup.has(old_key)) {\n // remove old block\n destroy(old_block, lookup);\n o--;\n }\n else if (!lookup.has(new_key) || will_move.has(new_key)) {\n insert(new_block);\n }\n else if (did_move.has(old_key)) {\n o--;\n }\n else if (deltas.get(new_key) > deltas.get(old_key)) {\n did_move.add(new_key);\n insert(new_block);\n }\n else {\n will_move.add(old_key);\n o--;\n }\n }\n while (o--) {\n const old_block = old_blocks[o];\n if (!new_lookup.has(old_block.key))\n destroy(old_block, lookup);\n }\n while (n)\n insert(new_blocks[n - 1]);\n return new_blocks;\n}\nfunction validate_each_keys(ctx, list, get_context, get_key) {\n const keys = new Set();\n for (let i = 0; i < list.length; i++) {\n const key = get_key(get_context(ctx, list, i));\n if (keys.has(key)) {\n throw new Error('Cannot have duplicate keys in a keyed each');\n }\n keys.add(key);\n }\n}\n\nfunction get_spread_update(levels, updates) {\n const update = {};\n const to_null_out = {};\n const accounted_for = { $$scope: 1 };\n let i = levels.length;\n while (i--) {\n const o = levels[i];\n const n = updates[i];\n if (n) {\n for (const key in o) {\n if (!(key in n))\n to_null_out[key] = 1;\n }\n for (const key in n) {\n if (!accounted_for[key]) {\n update[key] = n[key];\n accounted_for[key] = 1;\n }\n }\n levels[i] = n;\n }\n else {\n for (const key in o) {\n accounted_for[key] = 1;\n }\n }\n }\n for (const key in to_null_out) {\n if (!(key in update))\n update[key] = undefined;\n }\n return update;\n}\nfunction get_spread_object(spread_props) {\n return typeof spread_props === 'object' && spread_props !== null ? spread_props : {};\n}\n\n// source: https://html.spec.whatwg.org/multipage/indices.html\nconst boolean_attributes = new Set([\n 'allowfullscreen',\n 'allowpaymentrequest',\n 'async',\n 'autofocus',\n 'autoplay',\n 'checked',\n 'controls',\n 'default',\n 'defer',\n 'disabled',\n 'formnovalidate',\n 'hidden',\n 'ismap',\n 'loop',\n 'multiple',\n 'muted',\n 'nomodule',\n 'novalidate',\n 'open',\n 'playsinline',\n 'readonly',\n 'required',\n 'reversed',\n 'selected'\n]);\n\nconst invalid_attribute_name_character = /[\\s'\">/=\\u{FDD0}-\\u{FDEF}\\u{FFFE}\\u{FFFF}\\u{1FFFE}\\u{1FFFF}\\u{2FFFE}\\u{2FFFF}\\u{3FFFE}\\u{3FFFF}\\u{4FFFE}\\u{4FFFF}\\u{5FFFE}\\u{5FFFF}\\u{6FFFE}\\u{6FFFF}\\u{7FFFE}\\u{7FFFF}\\u{8FFFE}\\u{8FFFF}\\u{9FFFE}\\u{9FFFF}\\u{AFFFE}\\u{AFFFF}\\u{BFFFE}\\u{BFFFF}\\u{CFFFE}\\u{CFFFF}\\u{DFFFE}\\u{DFFFF}\\u{EFFFE}\\u{EFFFF}\\u{FFFFE}\\u{FFFFF}\\u{10FFFE}\\u{10FFFF}]/u;\n// https://html.spec.whatwg.org/multipage/syntax.html#attributes-2\n// https://infra.spec.whatwg.org/#noncharacter\nfunction spread(args, classes_to_add) {\n const attributes = Object.assign({}, ...args);\n if (classes_to_add) {\n if (attributes.class == null) {\n attributes.class = classes_to_add;\n }\n else {\n attributes.class += ' ' + classes_to_add;\n }\n }\n let str = '';\n Object.keys(attributes).forEach(name => {\n if (invalid_attribute_name_character.test(name))\n return;\n const value = attributes[name];\n if (value === true)\n str += ' ' + name;\n else if (boolean_attributes.has(name.toLowerCase())) {\n if (value)\n str += ' ' + name;\n }\n else if (value != null) {\n str += ` ${name}=\"${value}\"`;\n }\n });\n return str;\n}\nconst escaped = {\n '\"': '"',\n \"'\": ''',\n '&': '&',\n '<': '<',\n '>': '>'\n};\nfunction escape(html) {\n return String(html).replace(/[\"'&<>]/g, match => escaped[match]);\n}\nfunction escape_attribute_value(value) {\n return typeof value === 'string' ? escape(value) : value;\n}\nfunction escape_object(obj) {\n const result = {};\n for (const key in obj) {\n result[key] = escape_attribute_value(obj[key]);\n }\n return result;\n}\nfunction each(items, fn) {\n let str = '';\n for (let i = 0; i < items.length; i += 1) {\n str += fn(items[i], i);\n }\n return str;\n}\nconst missing_component = {\n $$render: () => ''\n};\nfunction validate_component(component, name) {\n if (!component || !component.$$render) {\n if (name === 'svelte:component')\n name += ' this={...}';\n throw new Error(`<${name}> is not a valid SSR component. You may need to review your build config to ensure that dependencies are compiled, rather than imported as pre-compiled modules`);\n }\n return component;\n}\nfunction debug(file, line, column, values) {\n console.log(`{@debug} ${file ? file + ' ' : ''}(${line}:${column})`); // eslint-disable-line no-console\n console.log(values); // eslint-disable-line no-console\n return '';\n}\nlet on_destroy;\nfunction create_ssr_component(fn) {\n function $$render(result, props, bindings, slots, context) {\n const parent_component = current_component;\n const $$ = {\n on_destroy,\n context: new Map(context || (parent_component ? parent_component.$$.context : [])),\n // these will be immediately discarded\n on_mount: [],\n before_update: [],\n after_update: [],\n callbacks: blank_object()\n };\n set_current_component({ $$ });\n const html = fn(result, props, bindings, slots);\n set_current_component(parent_component);\n return html;\n }\n return {\n render: (props = {}, { $$slots = {}, context = new Map() } = {}) => {\n on_destroy = [];\n const result = { title: '', head: '', css: new Set() };\n const html = $$render(result, props, {}, $$slots, context);\n run_all(on_destroy);\n return {\n html,\n css: {\n code: Array.from(result.css).map(css => css.code).join('\\n'),\n map: null // TODO\n },\n head: result.title + result.head\n };\n },\n $$render\n };\n}\nfunction add_attribute(name, value, boolean) {\n if (value == null || (boolean && !value))\n return '';\n return ` ${name}${value === true ? '' : `=${typeof value === 'string' ? JSON.stringify(escape(value)) : `\"${value}\"`}`}`;\n}\nfunction add_classes(classes) {\n return classes ? ` class=\"${classes}\"` : '';\n}\n\nfunction bind(component, name, callback) {\n const index = component.$$.props[name];\n if (index !== undefined) {\n component.$$.bound[index] = callback;\n callback(component.$$.ctx[index]);\n }\n}\nfunction create_component(block) {\n block && block.c();\n}\nfunction claim_component(block, parent_nodes) {\n block && block.l(parent_nodes);\n}\nfunction mount_component(component, target, anchor, customElement) {\n const { fragment, on_mount, on_destroy, after_update } = component.$$;\n fragment && fragment.m(target, anchor);\n if (!customElement) {\n // onMount happens before the initial afterUpdate\n add_render_callback(() => {\n const new_on_destroy = on_mount.map(run).filter(is_function);\n if (on_destroy) {\n on_destroy.push(...new_on_destroy);\n }\n else {\n // Edge case - component was destroyed immediately,\n // most likely as a result of a binding initialising\n run_all(new_on_destroy);\n }\n component.$$.on_mount = [];\n });\n }\n after_update.forEach(add_render_callback);\n}\nfunction destroy_component(component, detaching) {\n const $$ = component.$$;\n if ($$.fragment !== null) {\n run_all($$.on_destroy);\n $$.fragment && $$.fragment.d(detaching);\n // TODO null out other refs, including component.$$ (but need to\n // preserve final state?)\n $$.on_destroy = $$.fragment = null;\n $$.ctx = [];\n }\n}\nfunction make_dirty(component, i) {\n if (component.$$.dirty[0] === -1) {\n dirty_components.push(component);\n schedule_update();\n component.$$.dirty.fill(0);\n }\n component.$$.dirty[(i / 31) | 0] |= (1 << (i % 31));\n}\nfunction init(component, options, instance, create_fragment, not_equal, props, append_styles, dirty = [-1]) {\n const parent_component = current_component;\n set_current_component(component);\n const $$ = component.$$ = {\n fragment: null,\n ctx: null,\n // state\n props,\n update: noop,\n not_equal,\n bound: blank_object(),\n // lifecycle\n on_mount: [],\n on_destroy: [],\n on_disconnect: [],\n before_update: [],\n after_update: [],\n context: new Map(options.context || (parent_component ? parent_component.$$.context : [])),\n // everything else\n callbacks: blank_object(),\n dirty,\n skip_bound: false,\n root: options.target || parent_component.$$.root\n };\n append_styles && append_styles($$.root);\n let ready = false;\n $$.ctx = instance\n ? instance(component, options.props || {}, (i, ret, ...rest) => {\n const value = rest.length ? rest[0] : ret;\n if ($$.ctx && not_equal($$.ctx[i], $$.ctx[i] = value)) {\n if (!$$.skip_bound && $$.bound[i])\n $$.bound[i](value);\n if (ready)\n make_dirty(component, i);\n }\n return ret;\n })\n : [];\n $$.update();\n ready = true;\n run_all($$.before_update);\n // `false` as a special case of no DOM component\n $$.fragment = create_fragment ? create_fragment($$.ctx) : false;\n if (options.target) {\n if (options.hydrate) {\n start_hydrating();\n const nodes = children(options.target);\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n $$.fragment && $$.fragment.l(nodes);\n nodes.forEach(detach);\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n $$.fragment && $$.fragment.c();\n }\n if (options.intro)\n transition_in(component.$$.fragment);\n mount_component(component, options.target, options.anchor, options.customElement);\n end_hydrating();\n flush();\n }\n set_current_component(parent_component);\n}\nlet SvelteElement;\nif (typeof HTMLElement === 'function') {\n SvelteElement = class extends HTMLElement {\n constructor() {\n super();\n this.attachShadow({ mode: 'open' });\n }\n connectedCallback() {\n const { on_mount } = this.$$;\n this.$$.on_disconnect = on_mount.map(run).filter(is_function);\n // @ts-ignore todo: improve typings\n for (const key in this.$$.slotted) {\n // @ts-ignore todo: improve typings\n this.appendChild(this.$$.slotted[key]);\n }\n }\n attributeChangedCallback(attr, _oldValue, newValue) {\n this[attr] = newValue;\n }\n disconnectedCallback() {\n run_all(this.$$.on_disconnect);\n }\n $destroy() {\n destroy_component(this, 1);\n this.$destroy = noop;\n }\n $on(type, callback) {\n // TODO should this delegate to addEventListener?\n const callbacks = (this.$$.callbacks[type] || (this.$$.callbacks[type] = []));\n callbacks.push(callback);\n return () => {\n const index = callbacks.indexOf(callback);\n if (index !== -1)\n callbacks.splice(index, 1);\n };\n }\n $set($$props) {\n if (this.$$set && !is_empty($$props)) {\n this.$$.skip_bound = true;\n this.$$set($$props);\n this.$$.skip_bound = false;\n }\n }\n };\n}\n/**\n * Base class for Svelte components. Used when dev=false.\n */\nclass SvelteComponent {\n $destroy() {\n destroy_component(this, 1);\n this.$destroy = noop;\n }\n $on(type, callback) {\n const callbacks = (this.$$.callbacks[type] || (this.$$.callbacks[type] = []));\n callbacks.push(callback);\n return () => {\n const index = callbacks.indexOf(callback);\n if (index !== -1)\n callbacks.splice(index, 1);\n };\n }\n $set($$props) {\n if (this.$$set && !is_empty($$props)) {\n this.$$.skip_bound = true;\n this.$$set($$props);\n this.$$.skip_bound = false;\n }\n }\n}\n\nfunction dispatch_dev(type, detail) {\n document.dispatchEvent(custom_event(type, Object.assign({ version: '3.44.1' }, detail), true));\n}\nfunction append_dev(target, node) {\n dispatch_dev('SvelteDOMInsert', { target, node });\n append(target, node);\n}\nfunction append_hydration_dev(target, node) {\n dispatch_dev('SvelteDOMInsert', { target, node });\n append_hydration(target, node);\n}\nfunction insert_dev(target, node, anchor) {\n dispatch_dev('SvelteDOMInsert', { target, node, anchor });\n insert(target, node, anchor);\n}\nfunction insert_hydration_dev(target, node, anchor) {\n dispatch_dev('SvelteDOMInsert', { target, node, anchor });\n insert_hydration(target, node, anchor);\n}\nfunction detach_dev(node) {\n dispatch_dev('SvelteDOMRemove', { node });\n detach(node);\n}\nfunction detach_between_dev(before, after) {\n while (before.nextSibling && before.nextSibling !== after) {\n detach_dev(before.nextSibling);\n }\n}\nfunction detach_before_dev(after) {\n while (after.previousSibling) {\n detach_dev(after.previousSibling);\n }\n}\nfunction detach_after_dev(before) {\n while (before.nextSibling) {\n detach_dev(before.nextSibling);\n }\n}\nfunction listen_dev(node, event, handler, options, has_prevent_default, has_stop_propagation) {\n const modifiers = options === true ? ['capture'] : options ? Array.from(Object.keys(options)) : [];\n if (has_prevent_default)\n modifiers.push('preventDefault');\n if (has_stop_propagation)\n modifiers.push('stopPropagation');\n dispatch_dev('SvelteDOMAddEventListener', { node, event, handler, modifiers });\n const dispose = listen(node, event, handler, options);\n return () => {\n dispatch_dev('SvelteDOMRemoveEventListener', { node, event, handler, modifiers });\n dispose();\n };\n}\nfunction attr_dev(node, attribute, value) {\n attr(node, attribute, value);\n if (value == null)\n dispatch_dev('SvelteDOMRemoveAttribute', { node, attribute });\n else\n dispatch_dev('SvelteDOMSetAttribute', { node, attribute, value });\n}\nfunction prop_dev(node, property, value) {\n node[property] = value;\n dispatch_dev('SvelteDOMSetProperty', { node, property, value });\n}\nfunction dataset_dev(node, property, value) {\n node.dataset[property] = value;\n dispatch_dev('SvelteDOMSetDataset', { node, property, value });\n}\nfunction set_data_dev(text, data) {\n data = '' + data;\n if (text.wholeText === data)\n return;\n dispatch_dev('SvelteDOMSetData', { node: text, data });\n text.data = data;\n}\nfunction validate_each_argument(arg) {\n if (typeof arg !== 'string' && !(arg && typeof arg === 'object' && 'length' in arg)) {\n let msg = '{#each} only iterates over array-like objects.';\n if (typeof Symbol === 'function' && arg && Symbol.iterator in arg) {\n msg += ' You can use a spread to convert this iterable into an array.';\n }\n throw new Error(msg);\n }\n}\nfunction validate_slots(name, slot, keys) {\n for (const slot_key of Object.keys(slot)) {\n if (!~keys.indexOf(slot_key)) {\n console.warn(`<${name}> received an unexpected slot \"${slot_key}\".`);\n }\n }\n}\n/**\n * Base class for Svelte components with some minor dev-enhancements. Used when dev=true.\n */\nclass SvelteComponentDev extends SvelteComponent {\n constructor(options) {\n if (!options || (!options.target && !options.$$inline)) {\n throw new Error(\"'target' is a required option\");\n }\n super();\n }\n $destroy() {\n super.$destroy();\n this.$destroy = () => {\n console.warn('Component was already destroyed'); // eslint-disable-line no-console\n };\n }\n $capture_state() { }\n $inject_state() { }\n}\n/**\n * Base class to create strongly typed Svelte components.\n * This only exists for typing purposes and should be used in `.d.ts` files.\n *\n * ### Example:\n *\n * You have component library on npm called `component-library`, from which\n * you export a component called `MyComponent`. For Svelte+TypeScript users,\n * you want to provide typings. Therefore you create a `index.d.ts`:\n * ```ts\n * import { SvelteComponentTyped } from \"svelte\";\n * export class MyComponent extends SvelteComponentTyped<{foo: string}> {}\n * ```\n * Typing this makes it possible for IDEs like VS Code with the Svelte extension\n * to provide intellisense and to use the component like this in a Svelte file\n * with TypeScript:\n * ```svelte\n * \n * \n * ```\n *\n * #### Why not make this part of `SvelteComponent(Dev)`?\n * Because\n * ```ts\n * class ASubclassOfSvelteComponent extends SvelteComponent<{foo: string}> {}\n * const component: typeof SvelteComponent = ASubclassOfSvelteComponent;\n * ```\n * will throw a type error, so we need to separate the more strictly typed class.\n */\nclass SvelteComponentTyped extends SvelteComponentDev {\n constructor(options) {\n super(options);\n }\n}\nfunction loop_guard(timeout) {\n const start = Date.now();\n return () => {\n if (Date.now() - start > timeout) {\n throw new Error('Infinite loop detected');\n }\n };\n}\n\nexport { HtmlTag, HtmlTagHydration, SvelteComponent, SvelteComponentDev, SvelteComponentTyped, SvelteElement, action_destroyer, add_attribute, add_classes, add_flush_callback, add_location, add_render_callback, add_resize_listener, add_transform, afterUpdate, append, append_dev, append_empty_stylesheet, append_hydration, append_hydration_dev, append_styles, assign, attr, attr_dev, attribute_to_object, beforeUpdate, bind, binding_callbacks, blank_object, bubble, check_outros, children, claim_component, claim_element, claim_html_tag, claim_space, claim_svg_element, claim_text, clear_loops, component_subscribe, compute_rest_props, compute_slots, createEventDispatcher, create_animation, create_bidirectional_transition, create_component, create_in_transition, create_out_transition, create_slot, create_ssr_component, current_component, custom_event, dataset_dev, debug, destroy_block, destroy_component, destroy_each, detach, detach_after_dev, detach_before_dev, detach_between_dev, detach_dev, dirty_components, dispatch_dev, each, element, element_is, empty, end_hydrating, escape, escape_attribute_value, escape_object, escaped, exclude_internal_props, fix_and_destroy_block, fix_and_outro_and_destroy_block, fix_position, flush, getAllContexts, getContext, get_all_dirty_from_scope, get_binding_group_value, get_current_component, get_custom_elements_slots, get_root_for_style, get_slot_changes, get_spread_object, get_spread_update, get_store_value, globals, group_outros, handle_promise, hasContext, has_prop, identity, init, insert, insert_dev, insert_hydration, insert_hydration_dev, intros, invalid_attribute_name_character, is_client, is_crossorigin, is_empty, is_function, is_promise, listen, listen_dev, loop, loop_guard, missing_component, mount_component, noop, not_equal, now, null_to_empty, object_without_properties, onDestroy, onMount, once, outro_and_destroy_block, prevent_default, prop_dev, query_selector_all, raf, run, run_all, safe_not_equal, schedule_update, select_multiple_value, select_option, select_options, select_value, self, setContext, set_attributes, set_current_component, set_custom_element_data, set_data, set_data_dev, set_input_type, set_input_value, set_now, set_raf, set_store_value, set_style, set_svg_attributes, space, spread, src_url_equal, start_hydrating, stop_propagation, subscribe, svg_element, text, tick, time_ranges_to_array, to_number, toggle_class, transition_in, transition_out, trusted, update_await_block_branch, update_keyed_each, update_slot, update_slot_base, validate_component, validate_each_argument, validate_each_keys, validate_slots, validate_store, xlink_attr };\n","/**\n * @author Toru Nagashima \n * @copyright 2015 Toru Nagashima. All rights reserved.\n * See LICENSE file in root directory for full license.\n */\n/**\n * @typedef {object} PrivateData\n * @property {EventTarget} eventTarget The event target.\n * @property {{type:string}} event The original event object.\n * @property {number} eventPhase The current event phase.\n * @property {EventTarget|null} currentTarget The current event target.\n * @property {boolean} canceled The flag to prevent default.\n * @property {boolean} stopped The flag to stop propagation.\n * @property {boolean} immediateStopped The flag to stop propagation immediately.\n * @property {Function|null} passiveListener The listener if the current listener is passive. Otherwise this is null.\n * @property {number} timeStamp The unix time.\n * @private\n */\n\n/**\n * Private data for event wrappers.\n * @type {WeakMap}\n * @private\n */\nconst privateData = new WeakMap();\n\n/**\n * Cache for wrapper classes.\n * @type {WeakMap}\n * @private\n */\nconst wrappers = new WeakMap();\n\n/**\n * Get private data.\n * @param {Event} event The event object to get private data.\n * @returns {PrivateData} The private data of the event.\n * @private\n */\nfunction pd(event) {\n const retv = privateData.get(event);\n console.assert(\n retv != null,\n \"'this' is expected an Event object, but got\",\n event\n );\n return retv\n}\n\n/**\n * https://dom.spec.whatwg.org/#set-the-canceled-flag\n * @param data {PrivateData} private data.\n */\nfunction setCancelFlag(data) {\n if (data.passiveListener != null) {\n if (\n typeof console !== \"undefined\" &&\n typeof console.error === \"function\"\n ) {\n console.error(\n \"Unable to preventDefault inside passive event listener invocation.\",\n data.passiveListener\n );\n }\n return\n }\n if (!data.event.cancelable) {\n return\n }\n\n data.canceled = true;\n if (typeof data.event.preventDefault === \"function\") {\n data.event.preventDefault();\n }\n}\n\n/**\n * @see https://dom.spec.whatwg.org/#interface-event\n * @private\n */\n/**\n * The event wrapper.\n * @constructor\n * @param {EventTarget} eventTarget The event target of this dispatching.\n * @param {Event|{type:string}} event The original event to wrap.\n */\nfunction Event(eventTarget, event) {\n privateData.set(this, {\n eventTarget,\n event,\n eventPhase: 2,\n currentTarget: eventTarget,\n canceled: false,\n stopped: false,\n immediateStopped: false,\n passiveListener: null,\n timeStamp: event.timeStamp || Date.now(),\n });\n\n // https://heycam.github.io/webidl/#Unforgeable\n Object.defineProperty(this, \"isTrusted\", { value: false, enumerable: true });\n\n // Define accessors\n const keys = Object.keys(event);\n for (let i = 0; i < keys.length; ++i) {\n const key = keys[i];\n if (!(key in this)) {\n Object.defineProperty(this, key, defineRedirectDescriptor(key));\n }\n }\n}\n\n// Should be enumerable, but class methods are not enumerable.\nEvent.prototype = {\n /**\n * The type of this event.\n * @type {string}\n */\n get type() {\n return pd(this).event.type\n },\n\n /**\n * The target of this event.\n * @type {EventTarget}\n */\n get target() {\n return pd(this).eventTarget\n },\n\n /**\n * The target of this event.\n * @type {EventTarget}\n */\n get currentTarget() {\n return pd(this).currentTarget\n },\n\n /**\n * @returns {EventTarget[]} The composed path of this event.\n */\n composedPath() {\n const currentTarget = pd(this).currentTarget;\n if (currentTarget == null) {\n return []\n }\n return [currentTarget]\n },\n\n /**\n * Constant of NONE.\n * @type {number}\n */\n get NONE() {\n return 0\n },\n\n /**\n * Constant of CAPTURING_PHASE.\n * @type {number}\n */\n get CAPTURING_PHASE() {\n return 1\n },\n\n /**\n * Constant of AT_TARGET.\n * @type {number}\n */\n get AT_TARGET() {\n return 2\n },\n\n /**\n * Constant of BUBBLING_PHASE.\n * @type {number}\n */\n get BUBBLING_PHASE() {\n return 3\n },\n\n /**\n * The target of this event.\n * @type {number}\n */\n get eventPhase() {\n return pd(this).eventPhase\n },\n\n /**\n * Stop event bubbling.\n * @returns {void}\n */\n stopPropagation() {\n const data = pd(this);\n\n data.stopped = true;\n if (typeof data.event.stopPropagation === \"function\") {\n data.event.stopPropagation();\n }\n },\n\n /**\n * Stop event bubbling.\n * @returns {void}\n */\n stopImmediatePropagation() {\n const data = pd(this);\n\n data.stopped = true;\n data.immediateStopped = true;\n if (typeof data.event.stopImmediatePropagation === \"function\") {\n data.event.stopImmediatePropagation();\n }\n },\n\n /**\n * The flag to be bubbling.\n * @type {boolean}\n */\n get bubbles() {\n return Boolean(pd(this).event.bubbles)\n },\n\n /**\n * The flag to be cancelable.\n * @type {boolean}\n */\n get cancelable() {\n return Boolean(pd(this).event.cancelable)\n },\n\n /**\n * Cancel this event.\n * @returns {void}\n */\n preventDefault() {\n setCancelFlag(pd(this));\n },\n\n /**\n * The flag to indicate cancellation state.\n * @type {boolean}\n */\n get defaultPrevented() {\n return pd(this).canceled\n },\n\n /**\n * The flag to be composed.\n * @type {boolean}\n */\n get composed() {\n return Boolean(pd(this).event.composed)\n },\n\n /**\n * The unix time of this event.\n * @type {number}\n */\n get timeStamp() {\n return pd(this).timeStamp\n },\n\n /**\n * The target of this event.\n * @type {EventTarget}\n * @deprecated\n */\n get srcElement() {\n return pd(this).eventTarget\n },\n\n /**\n * The flag to stop event bubbling.\n * @type {boolean}\n * @deprecated\n */\n get cancelBubble() {\n return pd(this).stopped\n },\n set cancelBubble(value) {\n if (!value) {\n return\n }\n const data = pd(this);\n\n data.stopped = true;\n if (typeof data.event.cancelBubble === \"boolean\") {\n data.event.cancelBubble = true;\n }\n },\n\n /**\n * The flag to indicate cancellation state.\n * @type {boolean}\n * @deprecated\n */\n get returnValue() {\n return !pd(this).canceled\n },\n set returnValue(value) {\n if (!value) {\n setCancelFlag(pd(this));\n }\n },\n\n /**\n * Initialize this event object. But do nothing under event dispatching.\n * @param {string} type The event type.\n * @param {boolean} [bubbles=false] The flag to be possible to bubble up.\n * @param {boolean} [cancelable=false] The flag to be possible to cancel.\n * @deprecated\n */\n initEvent() {\n // Do nothing.\n },\n};\n\n// `constructor` is not enumerable.\nObject.defineProperty(Event.prototype, \"constructor\", {\n value: Event,\n configurable: true,\n writable: true,\n});\n\n// Ensure `event instanceof window.Event` is `true`.\nif (typeof window !== \"undefined\" && typeof window.Event !== \"undefined\") {\n Object.setPrototypeOf(Event.prototype, window.Event.prototype);\n\n // Make association for wrappers.\n wrappers.set(window.Event.prototype, Event);\n}\n\n/**\n * Get the property descriptor to redirect a given property.\n * @param {string} key Property name to define property descriptor.\n * @returns {PropertyDescriptor} The property descriptor to redirect the property.\n * @private\n */\nfunction defineRedirectDescriptor(key) {\n return {\n get() {\n return pd(this).event[key]\n },\n set(value) {\n pd(this).event[key] = value;\n },\n configurable: true,\n enumerable: true,\n }\n}\n\n/**\n * Get the property descriptor to call a given method property.\n * @param {string} key Property name to define property descriptor.\n * @returns {PropertyDescriptor} The property descriptor to call the method property.\n * @private\n */\nfunction defineCallDescriptor(key) {\n return {\n value() {\n const event = pd(this).event;\n return event[key].apply(event, arguments)\n },\n configurable: true,\n enumerable: true,\n }\n}\n\n/**\n * Define new wrapper class.\n * @param {Function} BaseEvent The base wrapper class.\n * @param {Object} proto The prototype of the original event.\n * @returns {Function} The defined wrapper class.\n * @private\n */\nfunction defineWrapper(BaseEvent, proto) {\n const keys = Object.keys(proto);\n if (keys.length === 0) {\n return BaseEvent\n }\n\n /** CustomEvent */\n function CustomEvent(eventTarget, event) {\n BaseEvent.call(this, eventTarget, event);\n }\n\n CustomEvent.prototype = Object.create(BaseEvent.prototype, {\n constructor: { value: CustomEvent, configurable: true, writable: true },\n });\n\n // Define accessors.\n for (let i = 0; i < keys.length; ++i) {\n const key = keys[i];\n if (!(key in BaseEvent.prototype)) {\n const descriptor = Object.getOwnPropertyDescriptor(proto, key);\n const isFunc = typeof descriptor.value === \"function\";\n Object.defineProperty(\n CustomEvent.prototype,\n key,\n isFunc\n ? defineCallDescriptor(key)\n : defineRedirectDescriptor(key)\n );\n }\n }\n\n return CustomEvent\n}\n\n/**\n * Get the wrapper class of a given prototype.\n * @param {Object} proto The prototype of the original event to get its wrapper.\n * @returns {Function} The wrapper class.\n * @private\n */\nfunction getWrapper(proto) {\n if (proto == null || proto === Object.prototype) {\n return Event\n }\n\n let wrapper = wrappers.get(proto);\n if (wrapper == null) {\n wrapper = defineWrapper(getWrapper(Object.getPrototypeOf(proto)), proto);\n wrappers.set(proto, wrapper);\n }\n return wrapper\n}\n\n/**\n * Wrap a given event to management a dispatching.\n * @param {EventTarget} eventTarget The event target of this dispatching.\n * @param {Object} event The event to wrap.\n * @returns {Event} The wrapper instance.\n * @private\n */\nfunction wrapEvent(eventTarget, event) {\n const Wrapper = getWrapper(Object.getPrototypeOf(event));\n return new Wrapper(eventTarget, event)\n}\n\n/**\n * Get the immediateStopped flag of a given event.\n * @param {Event} event The event to get.\n * @returns {boolean} The flag to stop propagation immediately.\n * @private\n */\nfunction isStopped(event) {\n return pd(event).immediateStopped\n}\n\n/**\n * Set the current event phase of a given event.\n * @param {Event} event The event to set current target.\n * @param {number} eventPhase New event phase.\n * @returns {void}\n * @private\n */\nfunction setEventPhase(event, eventPhase) {\n pd(event).eventPhase = eventPhase;\n}\n\n/**\n * Set the current target of a given event.\n * @param {Event} event The event to set current target.\n * @param {EventTarget|null} currentTarget New current target.\n * @returns {void}\n * @private\n */\nfunction setCurrentTarget(event, currentTarget) {\n pd(event).currentTarget = currentTarget;\n}\n\n/**\n * Set a passive listener of a given event.\n * @param {Event} event The event to set current target.\n * @param {Function|null} passiveListener New passive listener.\n * @returns {void}\n * @private\n */\nfunction setPassiveListener(event, passiveListener) {\n pd(event).passiveListener = passiveListener;\n}\n\n/**\n * @typedef {object} ListenerNode\n * @property {Function} listener\n * @property {1|2|3} listenerType\n * @property {boolean} passive\n * @property {boolean} once\n * @property {ListenerNode|null} next\n * @private\n */\n\n/**\n * @type {WeakMap>}\n * @private\n */\nconst listenersMap = new WeakMap();\n\n// Listener types\nconst CAPTURE = 1;\nconst BUBBLE = 2;\nconst ATTRIBUTE = 3;\n\n/**\n * Check whether a given value is an object or not.\n * @param {any} x The value to check.\n * @returns {boolean} `true` if the value is an object.\n */\nfunction isObject(x) {\n return x !== null && typeof x === \"object\" //eslint-disable-line no-restricted-syntax\n}\n\n/**\n * Get listeners.\n * @param {EventTarget} eventTarget The event target to get.\n * @returns {Map} The listeners.\n * @private\n */\nfunction getListeners(eventTarget) {\n const listeners = listenersMap.get(eventTarget);\n if (listeners == null) {\n throw new TypeError(\n \"'this' is expected an EventTarget object, but got another value.\"\n )\n }\n return listeners\n}\n\n/**\n * Get the property descriptor for the event attribute of a given event.\n * @param {string} eventName The event name to get property descriptor.\n * @returns {PropertyDescriptor} The property descriptor.\n * @private\n */\nfunction defineEventAttributeDescriptor(eventName) {\n return {\n get() {\n const listeners = getListeners(this);\n let node = listeners.get(eventName);\n while (node != null) {\n if (node.listenerType === ATTRIBUTE) {\n return node.listener\n }\n node = node.next;\n }\n return null\n },\n\n set(listener) {\n if (typeof listener !== \"function\" && !isObject(listener)) {\n listener = null; // eslint-disable-line no-param-reassign\n }\n const listeners = getListeners(this);\n\n // Traverse to the tail while removing old value.\n let prev = null;\n let node = listeners.get(eventName);\n while (node != null) {\n if (node.listenerType === ATTRIBUTE) {\n // Remove old value.\n if (prev !== null) {\n prev.next = node.next;\n } else if (node.next !== null) {\n listeners.set(eventName, node.next);\n } else {\n listeners.delete(eventName);\n }\n } else {\n prev = node;\n }\n\n node = node.next;\n }\n\n // Add new value.\n if (listener !== null) {\n const newNode = {\n listener,\n listenerType: ATTRIBUTE,\n passive: false,\n once: false,\n next: null,\n };\n if (prev === null) {\n listeners.set(eventName, newNode);\n } else {\n prev.next = newNode;\n }\n }\n },\n configurable: true,\n enumerable: true,\n }\n}\n\n/**\n * Define an event attribute (e.g. `eventTarget.onclick`).\n * @param {Object} eventTargetPrototype The event target prototype to define an event attrbite.\n * @param {string} eventName The event name to define.\n * @returns {void}\n */\nfunction defineEventAttribute(eventTargetPrototype, eventName) {\n Object.defineProperty(\n eventTargetPrototype,\n `on${eventName}`,\n defineEventAttributeDescriptor(eventName)\n );\n}\n\n/**\n * Define a custom EventTarget with event attributes.\n * @param {string[]} eventNames Event names for event attributes.\n * @returns {EventTarget} The custom EventTarget.\n * @private\n */\nfunction defineCustomEventTarget(eventNames) {\n /** CustomEventTarget */\n function CustomEventTarget() {\n EventTarget.call(this);\n }\n\n CustomEventTarget.prototype = Object.create(EventTarget.prototype, {\n constructor: {\n value: CustomEventTarget,\n configurable: true,\n writable: true,\n },\n });\n\n for (let i = 0; i < eventNames.length; ++i) {\n defineEventAttribute(CustomEventTarget.prototype, eventNames[i]);\n }\n\n return CustomEventTarget\n}\n\n/**\n * EventTarget.\n *\n * - This is constructor if no arguments.\n * - This is a function which returns a CustomEventTarget constructor if there are arguments.\n *\n * For example:\n *\n * class A extends EventTarget {}\n * class B extends EventTarget(\"message\") {}\n * class C extends EventTarget(\"message\", \"error\") {}\n * class D extends EventTarget([\"message\", \"error\"]) {}\n */\nfunction EventTarget() {\n /*eslint-disable consistent-return */\n if (this instanceof EventTarget) {\n listenersMap.set(this, new Map());\n return\n }\n if (arguments.length === 1 && Array.isArray(arguments[0])) {\n return defineCustomEventTarget(arguments[0])\n }\n if (arguments.length > 0) {\n const types = new Array(arguments.length);\n for (let i = 0; i < arguments.length; ++i) {\n types[i] = arguments[i];\n }\n return defineCustomEventTarget(types)\n }\n throw new TypeError(\"Cannot call a class as a function\")\n /*eslint-enable consistent-return */\n}\n\n// Should be enumerable, but class methods are not enumerable.\nEventTarget.prototype = {\n /**\n * Add a given listener to this event target.\n * @param {string} eventName The event name to add.\n * @param {Function} listener The listener to add.\n * @param {boolean|{capture?:boolean,passive?:boolean,once?:boolean}} [options] The options for this listener.\n * @returns {void}\n */\n addEventListener(eventName, listener, options) {\n if (listener == null) {\n return\n }\n if (typeof listener !== \"function\" && !isObject(listener)) {\n throw new TypeError(\"'listener' should be a function or an object.\")\n }\n\n const listeners = getListeners(this);\n const optionsIsObj = isObject(options);\n const capture = optionsIsObj\n ? Boolean(options.capture)\n : Boolean(options);\n const listenerType = capture ? CAPTURE : BUBBLE;\n const newNode = {\n listener,\n listenerType,\n passive: optionsIsObj && Boolean(options.passive),\n once: optionsIsObj && Boolean(options.once),\n next: null,\n };\n\n // Set it as the first node if the first node is null.\n let node = listeners.get(eventName);\n if (node === undefined) {\n listeners.set(eventName, newNode);\n return\n }\n\n // Traverse to the tail while checking duplication..\n let prev = null;\n while (node != null) {\n if (\n node.listener === listener &&\n node.listenerType === listenerType\n ) {\n // Should ignore duplication.\n return\n }\n prev = node;\n node = node.next;\n }\n\n // Add it.\n prev.next = newNode;\n },\n\n /**\n * Remove a given listener from this event target.\n * @param {string} eventName The event name to remove.\n * @param {Function} listener The listener to remove.\n * @param {boolean|{capture?:boolean,passive?:boolean,once?:boolean}} [options] The options for this listener.\n * @returns {void}\n */\n removeEventListener(eventName, listener, options) {\n if (listener == null) {\n return\n }\n\n const listeners = getListeners(this);\n const capture = isObject(options)\n ? Boolean(options.capture)\n : Boolean(options);\n const listenerType = capture ? CAPTURE : BUBBLE;\n\n let prev = null;\n let node = listeners.get(eventName);\n while (node != null) {\n if (\n node.listener === listener &&\n node.listenerType === listenerType\n ) {\n if (prev !== null) {\n prev.next = node.next;\n } else if (node.next !== null) {\n listeners.set(eventName, node.next);\n } else {\n listeners.delete(eventName);\n }\n return\n }\n\n prev = node;\n node = node.next;\n }\n },\n\n /**\n * Dispatch a given event.\n * @param {Event|{type:string}} event The event to dispatch.\n * @returns {boolean} `false` if canceled.\n */\n dispatchEvent(event) {\n if (event == null || typeof event.type !== \"string\") {\n throw new TypeError('\"event.type\" should be a string.')\n }\n\n // If listeners aren't registered, terminate.\n const listeners = getListeners(this);\n const eventName = event.type;\n let node = listeners.get(eventName);\n if (node == null) {\n return true\n }\n\n // Since we cannot rewrite several properties, so wrap object.\n const wrappedEvent = wrapEvent(this, event);\n\n // This doesn't process capturing phase and bubbling phase.\n // This isn't participating in a tree.\n let prev = null;\n while (node != null) {\n // Remove this listener if it's once\n if (node.once) {\n if (prev !== null) {\n prev.next = node.next;\n } else if (node.next !== null) {\n listeners.set(eventName, node.next);\n } else {\n listeners.delete(eventName);\n }\n } else {\n prev = node;\n }\n\n // Call this listener\n setPassiveListener(\n wrappedEvent,\n node.passive ? node.listener : null\n );\n if (typeof node.listener === \"function\") {\n try {\n node.listener.call(this, wrappedEvent);\n } catch (err) {\n if (\n typeof console !== \"undefined\" &&\n typeof console.error === \"function\"\n ) {\n console.error(err);\n }\n }\n } else if (\n node.listenerType !== ATTRIBUTE &&\n typeof node.listener.handleEvent === \"function\"\n ) {\n node.listener.handleEvent(wrappedEvent);\n }\n\n // Break if `event.stopImmediatePropagation` was called.\n if (isStopped(wrappedEvent)) {\n break\n }\n\n node = node.next;\n }\n setPassiveListener(wrappedEvent, null);\n setEventPhase(wrappedEvent, 0);\n setCurrentTarget(wrappedEvent, null);\n\n return !wrappedEvent.defaultPrevented\n },\n};\n\n// `constructor` is not enumerable.\nObject.defineProperty(EventTarget.prototype, \"constructor\", {\n value: EventTarget,\n configurable: true,\n writable: true,\n});\n\n// Ensure `eventTarget instanceof window.EventTarget` is `true`.\nif (\n typeof window !== \"undefined\" &&\n typeof window.EventTarget !== \"undefined\"\n) {\n Object.setPrototypeOf(EventTarget.prototype, window.EventTarget.prototype);\n}\n\nexport default EventTarget;\nexport { defineEventAttribute, EventTarget };\n//# sourceMappingURL=event-target-shim.mjs.map\n","/// @file\n/// @addtogroup flatbuffers_javascript_api\n/// @{\n/// @cond FLATBUFFERS_INTERNAL\n\n/**\n * @fileoverview\n *\n * Need to suppress 'global this' error so the Node.js export line doesn't cause\n * closure compile to error out.\n * @suppress {globalThis}\n */\n\n/**\n * @const\n * @namespace\n */\nvar flatbuffers = {};\n\n/**\n * @typedef {number}\n */\nflatbuffers.Offset;\n\n/**\n * @typedef {{\n * bb: flatbuffers.ByteBuffer,\n * bb_pos: number\n * }}\n */\nflatbuffers.Table;\n\n/**\n * @type {number}\n * @const\n */\nflatbuffers.SIZEOF_SHORT = 2;\n\n/**\n * @type {number}\n * @const\n */\nflatbuffers.SIZEOF_INT = 4;\n\n/**\n * @type {number}\n * @const\n */\nflatbuffers.FILE_IDENTIFIER_LENGTH = 4;\n\n/**\n * @enum {number}\n */\nflatbuffers.Encoding = {\n UTF8_BYTES: 1,\n UTF16_STRING: 2\n};\n\n/**\n * @type {Int32Array}\n * @const\n */\nflatbuffers.int32 = new Int32Array(2);\n\n/**\n * @type {Float32Array}\n * @const\n */\nflatbuffers.float32 = new Float32Array(flatbuffers.int32.buffer);\n\n/**\n * @type {Float64Array}\n * @const\n */\nflatbuffers.float64 = new Float64Array(flatbuffers.int32.buffer);\n\n/**\n * @type {boolean}\n * @const\n */\nflatbuffers.isLittleEndian = new Uint16Array(new Uint8Array([1, 0]).buffer)[0] === 1;\n\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * @constructor\n * @param {number} low\n * @param {number} high\n */\nflatbuffers.Long = function(low, high) {\n /**\n * @type {number}\n * @const\n */\n this.low = low | 0;\n\n /**\n * @type {number}\n * @const\n */\n this.high = high | 0;\n};\n\n/**\n * @param {number} low\n * @param {number} high\n * @returns {flatbuffers.Long}\n */\nflatbuffers.Long.create = function(low, high) {\n // Special-case zero to avoid GC overhead for default values\n return low == 0 && high == 0 ? flatbuffers.Long.ZERO : new flatbuffers.Long(low, high);\n};\n\n/**\n * @returns {number}\n */\nflatbuffers.Long.prototype.toFloat64 = function() {\n return (this.low >>> 0) + this.high * 0x100000000;\n};\n\n/**\n * @param {flatbuffers.Long} other\n * @returns {boolean}\n */\nflatbuffers.Long.prototype.equals = function(other) {\n return this.low == other.low && this.high == other.high;\n};\n\n/**\n * @type {flatbuffers.Long}\n * @const\n */\nflatbuffers.Long.ZERO = new flatbuffers.Long(0, 0);\n\n/// @endcond\n////////////////////////////////////////////////////////////////////////////////\n/**\n * Create a FlatBufferBuilder.\n *\n * @constructor\n * @param {number=} opt_initial_size\n */\nflatbuffers.Builder = function(opt_initial_size) {\n if (!opt_initial_size) {\n var initial_size = 1024;\n } else {\n var initial_size = opt_initial_size;\n }\n\n /**\n * @type {flatbuffers.ByteBuffer}\n * @private\n */\n this.bb = flatbuffers.ByteBuffer.allocate(initial_size);\n\n /**\n * Remaining space in the ByteBuffer.\n *\n * @type {number}\n * @private\n */\n this.space = initial_size;\n\n /**\n * Minimum alignment encountered so far.\n *\n * @type {number}\n * @private\n */\n this.minalign = 1;\n\n /**\n * The vtable for the current table.\n *\n * @type {Array.}\n * @private\n */\n this.vtable = null;\n\n /**\n * The amount of fields we're actually using.\n *\n * @type {number}\n * @private\n */\n this.vtable_in_use = 0;\n\n /**\n * Whether we are currently serializing a table.\n *\n * @type {boolean}\n * @private\n */\n this.isNested = false;\n\n /**\n * Starting offset of the current struct/table.\n *\n * @type {number}\n * @private\n */\n this.object_start = 0;\n\n /**\n * List of offsets of all vtables.\n *\n * @type {Array.}\n * @private\n */\n this.vtables = [];\n\n /**\n * For the current vector being built.\n *\n * @type {number}\n * @private\n */\n this.vector_num_elems = 0;\n\n /**\n * False omits default values from the serialized data\n *\n * @type {boolean}\n * @private\n */\n this.force_defaults = false;\n};\n\nflatbuffers.Builder.prototype.clear = function() {\n this.bb.clear();\n this.space = this.bb.capacity();\n this.minalign = 1;\n this.vtable = null;\n this.vtable_in_use = 0;\n this.isNested = false;\n this.object_start = 0;\n this.vtables = [];\n this.vector_num_elems = 0;\n this.force_defaults = false;\n};\n\n/**\n * In order to save space, fields that are set to their default value\n * don't get serialized into the buffer. Forcing defaults provides a\n * way to manually disable this optimization.\n *\n * @param {boolean} forceDefaults true always serializes default values\n */\nflatbuffers.Builder.prototype.forceDefaults = function(forceDefaults) {\n this.force_defaults = forceDefaults;\n};\n\n/**\n * Get the ByteBuffer representing the FlatBuffer. Only call this after you've\n * called finish(). The actual data starts at the ByteBuffer's current position,\n * not necessarily at 0.\n *\n * @returns {flatbuffers.ByteBuffer}\n */\nflatbuffers.Builder.prototype.dataBuffer = function() {\n return this.bb;\n};\n\n/**\n * Get the bytes representing the FlatBuffer. Only call this after you've\n * called finish().\n *\n * @returns {Uint8Array}\n */\nflatbuffers.Builder.prototype.asUint8Array = function() {\n return this.bb.bytes().subarray(this.bb.position(), this.bb.position() + this.offset());\n};\n\n/// @cond FLATBUFFERS_INTERNAL\n/**\n * Prepare to write an element of `size` after `additional_bytes` have been\n * written, e.g. if you write a string, you need to align such the int length\n * field is aligned to 4 bytes, and the string data follows it directly. If all\n * you need to do is alignment, `additional_bytes` will be 0.\n *\n * @param {number} size This is the of the new element to write\n * @param {number} additional_bytes The padding size\n */\nflatbuffers.Builder.prototype.prep = function(size, additional_bytes) {\n // Track the biggest thing we've ever aligned to.\n if (size > this.minalign) {\n this.minalign = size;\n }\n\n // Find the amount of alignment needed such that `size` is properly\n // aligned after `additional_bytes`\n var align_size = ((~(this.bb.capacity() - this.space + additional_bytes)) + 1) & (size - 1);\n\n // Reallocate the buffer if needed.\n while (this.space < align_size + size + additional_bytes) {\n var old_buf_size = this.bb.capacity();\n this.bb = flatbuffers.Builder.growByteBuffer(this.bb);\n this.space += this.bb.capacity() - old_buf_size;\n }\n\n this.pad(align_size);\n};\n\n/**\n * @param {number} byte_size\n */\nflatbuffers.Builder.prototype.pad = function(byte_size) {\n for (var i = 0; i < byte_size; i++) {\n this.bb.writeInt8(--this.space, 0);\n }\n};\n\n/**\n * @param {number} value\n */\nflatbuffers.Builder.prototype.writeInt8 = function(value) {\n this.bb.writeInt8(this.space -= 1, value);\n};\n\n/**\n * @param {number} value\n */\nflatbuffers.Builder.prototype.writeInt16 = function(value) {\n this.bb.writeInt16(this.space -= 2, value);\n};\n\n/**\n * @param {number} value\n */\nflatbuffers.Builder.prototype.writeInt32 = function(value) {\n this.bb.writeInt32(this.space -= 4, value);\n};\n\n/**\n * @param {flatbuffers.Long} value\n */\nflatbuffers.Builder.prototype.writeInt64 = function(value) {\n this.bb.writeInt64(this.space -= 8, value);\n};\n\n/**\n * @param {number} value\n */\nflatbuffers.Builder.prototype.writeFloat32 = function(value) {\n this.bb.writeFloat32(this.space -= 4, value);\n};\n\n/**\n * @param {number} value\n */\nflatbuffers.Builder.prototype.writeFloat64 = function(value) {\n this.bb.writeFloat64(this.space -= 8, value);\n};\n/// @endcond\n\n/**\n * Add an `int8` to the buffer, properly aligned, and grows the buffer (if necessary).\n * @param {number} value The `int8` to add the the buffer.\n */\nflatbuffers.Builder.prototype.addInt8 = function(value) {\n this.prep(1, 0);\n this.writeInt8(value);\n};\n\n/**\n * Add an `int16` to the buffer, properly aligned, and grows the buffer (if necessary).\n * @param {number} value The `int16` to add the the buffer.\n */\nflatbuffers.Builder.prototype.addInt16 = function(value) {\n this.prep(2, 0);\n this.writeInt16(value);\n};\n\n/**\n * Add an `int32` to the buffer, properly aligned, and grows the buffer (if necessary).\n * @param {number} value The `int32` to add the the buffer.\n */\nflatbuffers.Builder.prototype.addInt32 = function(value) {\n this.prep(4, 0);\n this.writeInt32(value);\n};\n\n/**\n * Add an `int64` to the buffer, properly aligned, and grows the buffer (if necessary).\n * @param {flatbuffers.Long} value The `int64` to add the the buffer.\n */\nflatbuffers.Builder.prototype.addInt64 = function(value) {\n this.prep(8, 0);\n this.writeInt64(value);\n};\n\n/**\n * Add a `float32` to the buffer, properly aligned, and grows the buffer (if necessary).\n * @param {number} value The `float32` to add the the buffer.\n */\nflatbuffers.Builder.prototype.addFloat32 = function(value) {\n this.prep(4, 0);\n this.writeFloat32(value);\n};\n\n/**\n * Add a `float64` to the buffer, properly aligned, and grows the buffer (if necessary).\n * @param {number} value The `float64` to add the the buffer.\n */\nflatbuffers.Builder.prototype.addFloat64 = function(value) {\n this.prep(8, 0);\n this.writeFloat64(value);\n};\n\n/// @cond FLATBUFFERS_INTERNAL\n/**\n * @param {number} voffset\n * @param {number} value\n * @param {number} defaultValue\n */\nflatbuffers.Builder.prototype.addFieldInt8 = function(voffset, value, defaultValue) {\n if (this.force_defaults || value != defaultValue) {\n this.addInt8(value);\n this.slot(voffset);\n }\n};\n\n/**\n * @param {number} voffset\n * @param {number} value\n * @param {number} defaultValue\n */\nflatbuffers.Builder.prototype.addFieldInt16 = function(voffset, value, defaultValue) {\n if (this.force_defaults || value != defaultValue) {\n this.addInt16(value);\n this.slot(voffset);\n }\n};\n\n/**\n * @param {number} voffset\n * @param {number} value\n * @param {number} defaultValue\n */\nflatbuffers.Builder.prototype.addFieldInt32 = function(voffset, value, defaultValue) {\n if (this.force_defaults || value != defaultValue) {\n this.addInt32(value);\n this.slot(voffset);\n }\n};\n\n/**\n * @param {number} voffset\n * @param {flatbuffers.Long} value\n * @param {flatbuffers.Long} defaultValue\n */\nflatbuffers.Builder.prototype.addFieldInt64 = function(voffset, value, defaultValue) {\n if (this.force_defaults || !value.equals(defaultValue)) {\n this.addInt64(value);\n this.slot(voffset);\n }\n};\n\n/**\n * @param {number} voffset\n * @param {number} value\n * @param {number} defaultValue\n */\nflatbuffers.Builder.prototype.addFieldFloat32 = function(voffset, value, defaultValue) {\n if (this.force_defaults || value != defaultValue) {\n this.addFloat32(value);\n this.slot(voffset);\n }\n};\n\n/**\n * @param {number} voffset\n * @param {number} value\n * @param {number} defaultValue\n */\nflatbuffers.Builder.prototype.addFieldFloat64 = function(voffset, value, defaultValue) {\n if (this.force_defaults || value != defaultValue) {\n this.addFloat64(value);\n this.slot(voffset);\n }\n};\n\n/**\n * @param {number} voffset\n * @param {flatbuffers.Offset} value\n * @param {flatbuffers.Offset} defaultValue\n */\nflatbuffers.Builder.prototype.addFieldOffset = function(voffset, value, defaultValue) {\n if (this.force_defaults || value != defaultValue) {\n this.addOffset(value);\n this.slot(voffset);\n }\n};\n\n/**\n * Structs are stored inline, so nothing additional is being added. `d` is always 0.\n *\n * @param {number} voffset\n * @param {flatbuffers.Offset} value\n * @param {flatbuffers.Offset} defaultValue\n */\nflatbuffers.Builder.prototype.addFieldStruct = function(voffset, value, defaultValue) {\n if (value != defaultValue) {\n this.nested(value);\n this.slot(voffset);\n }\n};\n\n/**\n * Structures are always stored inline, they need to be created right\n * where they're used. You'll get this assertion failure if you\n * created it elsewhere.\n *\n * @param {flatbuffers.Offset} obj The offset of the created object\n */\nflatbuffers.Builder.prototype.nested = function(obj) {\n if (obj != this.offset()) {\n throw new Error('FlatBuffers: struct must be serialized inline.');\n }\n};\n\n/**\n * Should not be creating any other object, string or vector\n * while an object is being constructed\n */\nflatbuffers.Builder.prototype.notNested = function() {\n if (this.isNested) {\n throw new Error('FlatBuffers: object serialization must not be nested.');\n }\n};\n\n/**\n * Set the current vtable at `voffset` to the current location in the buffer.\n *\n * @param {number} voffset\n */\nflatbuffers.Builder.prototype.slot = function(voffset) {\n this.vtable[voffset] = this.offset();\n};\n\n/**\n * @returns {flatbuffers.Offset} Offset relative to the end of the buffer.\n */\nflatbuffers.Builder.prototype.offset = function() {\n return this.bb.capacity() - this.space;\n};\n\n/**\n * Doubles the size of the backing ByteBuffer and copies the old data towards\n * the end of the new buffer (since we build the buffer backwards).\n *\n * @param {flatbuffers.ByteBuffer} bb The current buffer with the existing data\n * @returns {flatbuffers.ByteBuffer} A new byte buffer with the old data copied\n * to it. The data is located at the end of the buffer.\n *\n * uint8Array.set() formally takes {Array|ArrayBufferView}, so to pass\n * it a uint8Array we need to suppress the type check:\n * @suppress {checkTypes}\n */\nflatbuffers.Builder.growByteBuffer = function(bb) {\n var old_buf_size = bb.capacity();\n\n // Ensure we don't grow beyond what fits in an int.\n if (old_buf_size & 0xC0000000) {\n throw new Error('FlatBuffers: cannot grow buffer beyond 2 gigabytes.');\n }\n\n var new_buf_size = old_buf_size << 1;\n var nbb = flatbuffers.ByteBuffer.allocate(new_buf_size);\n nbb.setPosition(new_buf_size - old_buf_size);\n nbb.bytes().set(bb.bytes(), new_buf_size - old_buf_size);\n return nbb;\n};\n/// @endcond\n\n/**\n * Adds on offset, relative to where it will be written.\n *\n * @param {flatbuffers.Offset} offset The offset to add.\n */\nflatbuffers.Builder.prototype.addOffset = function(offset) {\n this.prep(flatbuffers.SIZEOF_INT, 0); // Ensure alignment is already done.\n this.writeInt32(this.offset() - offset + flatbuffers.SIZEOF_INT);\n};\n\n/// @cond FLATBUFFERS_INTERNAL\n/**\n * Start encoding a new object in the buffer. Users will not usually need to\n * call this directly. The FlatBuffers compiler will generate helper methods\n * that call this method internally.\n *\n * @param {number} numfields\n */\nflatbuffers.Builder.prototype.startObject = function(numfields) {\n this.notNested();\n if (this.vtable == null) {\n this.vtable = [];\n }\n this.vtable_in_use = numfields;\n for (var i = 0; i < numfields; i++) {\n this.vtable[i] = 0; // This will push additional elements as needed\n }\n this.isNested = true;\n this.object_start = this.offset();\n};\n\n/**\n * Finish off writing the object that is under construction.\n *\n * @returns {flatbuffers.Offset} The offset to the object inside `dataBuffer`\n */\nflatbuffers.Builder.prototype.endObject = function() {\n if (this.vtable == null || !this.isNested) {\n throw new Error('FlatBuffers: endObject called without startObject');\n }\n\n this.addInt32(0);\n var vtableloc = this.offset();\n\n // Trim trailing zeroes.\n var i = this.vtable_in_use - 1;\n for (; i >= 0 && this.vtable[i] == 0; i--) {}\n var trimmed_size = i + 1;\n\n // Write out the current vtable.\n for (; i >= 0; i--) {\n // Offset relative to the start of the table.\n this.addInt16(this.vtable[i] != 0 ? vtableloc - this.vtable[i] : 0);\n }\n\n var standard_fields = 2; // The fields below:\n this.addInt16(vtableloc - this.object_start);\n var len = (trimmed_size + standard_fields) * flatbuffers.SIZEOF_SHORT;\n this.addInt16(len);\n\n // Search for an existing vtable that matches the current one.\n var existing_vtable = 0;\n var vt1 = this.space;\nouter_loop:\n for (i = 0; i < this.vtables.length; i++) {\n var vt2 = this.bb.capacity() - this.vtables[i];\n if (len == this.bb.readInt16(vt2)) {\n for (var j = flatbuffers.SIZEOF_SHORT; j < len; j += flatbuffers.SIZEOF_SHORT) {\n if (this.bb.readInt16(vt1 + j) != this.bb.readInt16(vt2 + j)) {\n continue outer_loop;\n }\n }\n existing_vtable = this.vtables[i];\n break;\n }\n }\n\n if (existing_vtable) {\n // Found a match:\n // Remove the current vtable.\n this.space = this.bb.capacity() - vtableloc;\n\n // Point table to existing vtable.\n this.bb.writeInt32(this.space, existing_vtable - vtableloc);\n } else {\n // No match:\n // Add the location of the current vtable to the list of vtables.\n this.vtables.push(this.offset());\n\n // Point table to current vtable.\n this.bb.writeInt32(this.bb.capacity() - vtableloc, this.offset() - vtableloc);\n }\n\n this.isNested = false;\n return vtableloc;\n};\n/// @endcond\n\n/**\n * Finalize a buffer, poiting to the given `root_table`.\n *\n * @param {flatbuffers.Offset} root_table\n * @param {string=} opt_file_identifier\n */\nflatbuffers.Builder.prototype.finish = function(root_table, opt_file_identifier) {\n if (opt_file_identifier) {\n var file_identifier = opt_file_identifier;\n this.prep(this.minalign, flatbuffers.SIZEOF_INT +\n flatbuffers.FILE_IDENTIFIER_LENGTH);\n if (file_identifier.length != flatbuffers.FILE_IDENTIFIER_LENGTH) {\n throw new Error('FlatBuffers: file identifier must be length ' +\n flatbuffers.FILE_IDENTIFIER_LENGTH);\n }\n for (var i = flatbuffers.FILE_IDENTIFIER_LENGTH - 1; i >= 0; i--) {\n this.writeInt8(file_identifier.charCodeAt(i));\n }\n }\n this.prep(this.minalign, flatbuffers.SIZEOF_INT);\n this.addOffset(root_table);\n this.bb.setPosition(this.space);\n};\n\n/// @cond FLATBUFFERS_INTERNAL\n/**\n * This checks a required field has been set in a given table that has\n * just been constructed.\n *\n * @param {flatbuffers.Offset} table\n * @param {number} field\n */\nflatbuffers.Builder.prototype.requiredField = function(table, field) {\n var table_start = this.bb.capacity() - table;\n var vtable_start = table_start - this.bb.readInt32(table_start);\n var ok = this.bb.readInt16(vtable_start + field) != 0;\n\n // If this fails, the caller will show what field needs to be set.\n if (!ok) {\n throw new Error('FlatBuffers: field ' + field + ' must be set');\n }\n};\n\n/**\n * Start a new array/vector of objects. Users usually will not call\n * this directly. The FlatBuffers compiler will create a start/end\n * method for vector types in generated code.\n *\n * @param {number} elem_size The size of each element in the array\n * @param {number} num_elems The number of elements in the array\n * @param {number} alignment The alignment of the array\n */\nflatbuffers.Builder.prototype.startVector = function(elem_size, num_elems, alignment) {\n this.notNested();\n this.vector_num_elems = num_elems;\n this.prep(flatbuffers.SIZEOF_INT, elem_size * num_elems);\n this.prep(alignment, elem_size * num_elems); // Just in case alignment > int.\n};\n\n/**\n * Finish off the creation of an array and all its elements. The array must be\n * created with `startVector`.\n *\n * @returns {flatbuffers.Offset} The offset at which the newly created array\n * starts.\n */\nflatbuffers.Builder.prototype.endVector = function() {\n this.writeInt32(this.vector_num_elems);\n return this.offset();\n};\n/// @endcond\n\n/**\n * Encode the string `s` in the buffer using UTF-8. If a Uint8Array is passed\n * instead of a string, it is assumed to contain valid UTF-8 encoded data.\n *\n * @param {string|Uint8Array} s The string to encode\n * @return {flatbuffers.Offset} The offset in the buffer where the encoded string starts\n */\nflatbuffers.Builder.prototype.createString = function(s) {\n if (s instanceof Uint8Array) {\n var utf8 = s;\n } else {\n var utf8 = [];\n var i = 0;\n\n while (i < s.length) {\n var codePoint;\n\n // Decode UTF-16\n var a = s.charCodeAt(i++);\n if (a < 0xD800 || a >= 0xDC00) {\n codePoint = a;\n } else {\n var b = s.charCodeAt(i++);\n codePoint = (a << 10) + b + (0x10000 - (0xD800 << 10) - 0xDC00);\n }\n\n // Encode UTF-8\n if (codePoint < 0x80) {\n utf8.push(codePoint);\n } else {\n if (codePoint < 0x800) {\n utf8.push(((codePoint >> 6) & 0x1F) | 0xC0);\n } else {\n if (codePoint < 0x10000) {\n utf8.push(((codePoint >> 12) & 0x0F) | 0xE0);\n } else {\n utf8.push(\n ((codePoint >> 18) & 0x07) | 0xF0,\n ((codePoint >> 12) & 0x3F) | 0x80);\n }\n utf8.push(((codePoint >> 6) & 0x3F) | 0x80);\n }\n utf8.push((codePoint & 0x3F) | 0x80);\n }\n }\n }\n\n this.addInt8(0);\n this.startVector(1, utf8.length, 1);\n this.bb.setPosition(this.space -= utf8.length);\n for (var i = 0, offset = this.space, bytes = this.bb.bytes(); i < utf8.length; i++) {\n bytes[offset++] = utf8[i];\n }\n return this.endVector();\n};\n\n/**\n * A helper function to avoid generated code depending on this file directly.\n *\n * @param {number} low\n * @param {number} high\n * @returns {flatbuffers.Long}\n */\nflatbuffers.Builder.prototype.createLong = function(low, high) {\n return flatbuffers.Long.create(low, high);\n};\n////////////////////////////////////////////////////////////////////////////////\n/// @cond FLATBUFFERS_INTERNAL\n/**\n * Create a new ByteBuffer with a given array of bytes (`Uint8Array`).\n *\n * @constructor\n * @param {Uint8Array} bytes\n */\nflatbuffers.ByteBuffer = function(bytes) {\n /**\n * @type {Uint8Array}\n * @private\n */\n this.bytes_ = bytes;\n\n /**\n * @type {number}\n * @private\n */\n this.position_ = 0;\n};\n\n/**\n * Create and allocate a new ByteBuffer with a given size.\n *\n * @param {number} byte_size\n * @returns {flatbuffers.ByteBuffer}\n */\nflatbuffers.ByteBuffer.allocate = function(byte_size) {\n return new flatbuffers.ByteBuffer(new Uint8Array(byte_size));\n};\n\nflatbuffers.ByteBuffer.prototype.clear = function() {\n this.position_ = 0;\n};\n\n/**\n * Get the underlying `Uint8Array`.\n *\n * @returns {Uint8Array}\n */\nflatbuffers.ByteBuffer.prototype.bytes = function() {\n return this.bytes_;\n};\n\n/**\n * Get the buffer's position.\n *\n * @returns {number}\n */\nflatbuffers.ByteBuffer.prototype.position = function() {\n return this.position_;\n};\n\n/**\n * Set the buffer's position.\n *\n * @param {number} position\n */\nflatbuffers.ByteBuffer.prototype.setPosition = function(position) {\n this.position_ = position;\n};\n\n/**\n * Get the buffer's capacity.\n *\n * @returns {number}\n */\nflatbuffers.ByteBuffer.prototype.capacity = function() {\n return this.bytes_.length;\n};\n\n/**\n * @param {number} offset\n * @returns {number}\n */\nflatbuffers.ByteBuffer.prototype.readInt8 = function(offset) {\n return this.readUint8(offset) << 24 >> 24;\n};\n\n/**\n * @param {number} offset\n * @returns {number}\n */\nflatbuffers.ByteBuffer.prototype.readUint8 = function(offset) {\n return this.bytes_[offset];\n};\n\n/**\n * @param {number} offset\n * @returns {number}\n */\nflatbuffers.ByteBuffer.prototype.readInt16 = function(offset) {\n return this.readUint16(offset) << 16 >> 16;\n};\n\n/**\n * @param {number} offset\n * @returns {number}\n */\nflatbuffers.ByteBuffer.prototype.readUint16 = function(offset) {\n return this.bytes_[offset] | this.bytes_[offset + 1] << 8;\n};\n\n/**\n * @param {number} offset\n * @returns {number}\n */\nflatbuffers.ByteBuffer.prototype.readInt32 = function(offset) {\n return this.bytes_[offset] | this.bytes_[offset + 1] << 8 | this.bytes_[offset + 2] << 16 | this.bytes_[offset + 3] << 24;\n};\n\n/**\n * @param {number} offset\n * @returns {number}\n */\nflatbuffers.ByteBuffer.prototype.readUint32 = function(offset) {\n return this.readInt32(offset) >>> 0;\n};\n\n/**\n * @param {number} offset\n * @returns {flatbuffers.Long}\n */\nflatbuffers.ByteBuffer.prototype.readInt64 = function(offset) {\n return new flatbuffers.Long(this.readInt32(offset), this.readInt32(offset + 4));\n};\n\n/**\n * @param {number} offset\n * @returns {flatbuffers.Long}\n */\nflatbuffers.ByteBuffer.prototype.readUint64 = function(offset) {\n return new flatbuffers.Long(this.readUint32(offset), this.readUint32(offset + 4));\n};\n\n/**\n * @param {number} offset\n * @returns {number}\n */\nflatbuffers.ByteBuffer.prototype.readFloat32 = function(offset) {\n flatbuffers.int32[0] = this.readInt32(offset);\n return flatbuffers.float32[0];\n};\n\n/**\n * @param {number} offset\n * @returns {number}\n */\nflatbuffers.ByteBuffer.prototype.readFloat64 = function(offset) {\n flatbuffers.int32[flatbuffers.isLittleEndian ? 0 : 1] = this.readInt32(offset);\n flatbuffers.int32[flatbuffers.isLittleEndian ? 1 : 0] = this.readInt32(offset + 4);\n return flatbuffers.float64[0];\n};\n\n/**\n * @param {number} offset\n * @param {number|boolean} value\n */\nflatbuffers.ByteBuffer.prototype.writeInt8 = function(offset, value) {\n this.bytes_[offset] = /** @type {number} */(value);\n};\n\n/**\n * @param {number} offset\n * @param {number} value\n */\nflatbuffers.ByteBuffer.prototype.writeUint8 = function(offset, value) {\n this.bytes_[offset] = value;\n};\n\n/**\n * @param {number} offset\n * @param {number} value\n */\nflatbuffers.ByteBuffer.prototype.writeInt16 = function(offset, value) {\n this.bytes_[offset] = value;\n this.bytes_[offset + 1] = value >> 8;\n};\n\n/**\n * @param {number} offset\n * @param {number} value\n */\nflatbuffers.ByteBuffer.prototype.writeUint16 = function(offset, value) {\n this.bytes_[offset] = value;\n this.bytes_[offset + 1] = value >> 8;\n};\n\n/**\n * @param {number} offset\n * @param {number} value\n */\nflatbuffers.ByteBuffer.prototype.writeInt32 = function(offset, value) {\n this.bytes_[offset] = value;\n this.bytes_[offset + 1] = value >> 8;\n this.bytes_[offset + 2] = value >> 16;\n this.bytes_[offset + 3] = value >> 24;\n};\n\n/**\n * @param {number} offset\n * @param {number} value\n */\nflatbuffers.ByteBuffer.prototype.writeUint32 = function(offset, value) {\n this.bytes_[offset] = value;\n this.bytes_[offset + 1] = value >> 8;\n this.bytes_[offset + 2] = value >> 16;\n this.bytes_[offset + 3] = value >> 24;\n};\n\n/**\n * @param {number} offset\n * @param {flatbuffers.Long} value\n */\nflatbuffers.ByteBuffer.prototype.writeInt64 = function(offset, value) {\n this.writeInt32(offset, value.low);\n this.writeInt32(offset + 4, value.high);\n};\n\n/**\n * @param {number} offset\n * @param {flatbuffers.Long} value\n */\nflatbuffers.ByteBuffer.prototype.writeUint64 = function(offset, value) {\n this.writeUint32(offset, value.low);\n this.writeUint32(offset + 4, value.high);\n};\n\n/**\n * @param {number} offset\n * @param {number} value\n */\nflatbuffers.ByteBuffer.prototype.writeFloat32 = function(offset, value) {\n flatbuffers.float32[0] = value;\n this.writeInt32(offset, flatbuffers.int32[0]);\n};\n\n/**\n * @param {number} offset\n * @param {number} value\n */\nflatbuffers.ByteBuffer.prototype.writeFloat64 = function(offset, value) {\n flatbuffers.float64[0] = value;\n this.writeInt32(offset, flatbuffers.int32[flatbuffers.isLittleEndian ? 0 : 1]);\n this.writeInt32(offset + 4, flatbuffers.int32[flatbuffers.isLittleEndian ? 1 : 0]);\n};\n\n/**\n * Return the file identifier. Behavior is undefined for FlatBuffers whose\n * schema does not include a file_identifier (likely points at padding or the\n * start of a the root vtable).\n * @returns {string}\n */\nflatbuffers.ByteBuffer.prototype.getBufferIdentifier = function() {\n if (this.bytes_.length < this.position_ + flatbuffers.SIZEOF_INT +\n flatbuffers.FILE_IDENTIFIER_LENGTH) {\n throw new Error(\n 'FlatBuffers: ByteBuffer is too short to contain an identifier.');\n }\n var result = \"\";\n for (var i = 0; i < flatbuffers.FILE_IDENTIFIER_LENGTH; i++) {\n result += String.fromCharCode(\n this.readInt8(this.position_ + flatbuffers.SIZEOF_INT + i));\n }\n return result;\n};\n\n/**\n * Look up a field in the vtable, return an offset into the object, or 0 if the\n * field is not present.\n *\n * @param {number} bb_pos\n * @param {number} vtable_offset\n * @returns {number}\n */\nflatbuffers.ByteBuffer.prototype.__offset = function(bb_pos, vtable_offset) {\n var vtable = bb_pos - this.readInt32(bb_pos);\n return vtable_offset < this.readInt16(vtable) ? this.readInt16(vtable + vtable_offset) : 0;\n};\n\n/**\n * Initialize any Table-derived type to point to the union at the given offset.\n *\n * @param {flatbuffers.Table} t\n * @param {number} offset\n * @returns {flatbuffers.Table}\n */\nflatbuffers.ByteBuffer.prototype.__union = function(t, offset) {\n t.bb_pos = offset + this.readInt32(offset);\n t.bb = this;\n return t;\n};\n\n/**\n * Create a JavaScript string from UTF-8 data stored inside the FlatBuffer.\n * This allocates a new string and converts to wide chars upon each access.\n *\n * To avoid the conversion to UTF-16, pass flatbuffers.Encoding.UTF8_BYTES as\n * the \"optionalEncoding\" argument. This is useful for avoiding conversion to\n * and from UTF-16 when the data will just be packaged back up in another\n * FlatBuffer later on.\n *\n * @param {number} offset\n * @param {flatbuffers.Encoding=} opt_encoding Defaults to UTF16_STRING\n * @returns {string|Uint8Array}\n */\nflatbuffers.ByteBuffer.prototype.__string = function(offset, opt_encoding) {\n offset += this.readInt32(offset);\n\n var length = this.readInt32(offset);\n var result = '';\n var i = 0;\n\n offset += flatbuffers.SIZEOF_INT;\n\n if (opt_encoding === flatbuffers.Encoding.UTF8_BYTES) {\n return this.bytes_.subarray(offset, offset + length);\n }\n\n while (i < length) {\n var codePoint;\n\n // Decode UTF-8\n var a = this.readUint8(offset + i++);\n if (a < 0xC0) {\n codePoint = a;\n } else {\n var b = this.readUint8(offset + i++);\n if (a < 0xE0) {\n codePoint =\n ((a & 0x1F) << 6) |\n (b & 0x3F);\n } else {\n var c = this.readUint8(offset + i++);\n if (a < 0xF0) {\n codePoint =\n ((a & 0x0F) << 12) |\n ((b & 0x3F) << 6) |\n (c & 0x3F);\n } else {\n var d = this.readUint8(offset + i++);\n codePoint =\n ((a & 0x07) << 18) |\n ((b & 0x3F) << 12) |\n ((c & 0x3F) << 6) |\n (d & 0x3F);\n }\n }\n }\n\n // Encode UTF-16\n if (codePoint < 0x10000) {\n result += String.fromCharCode(codePoint);\n } else {\n codePoint -= 0x10000;\n result += String.fromCharCode(\n (codePoint >> 10) + 0xD800,\n (codePoint & ((1 << 10) - 1)) + 0xDC00);\n }\n }\n\n return result;\n};\n\n/**\n * Retrieve the relative offset stored at \"offset\"\n * @param {number} offset\n * @returns {number}\n */\nflatbuffers.ByteBuffer.prototype.__indirect = function(offset) {\n return offset + this.readInt32(offset);\n};\n\n/**\n * Get the start of data of a vector whose offset is stored at \"offset\" in this object.\n *\n * @param {number} offset\n * @returns {number}\n */\nflatbuffers.ByteBuffer.prototype.__vector = function(offset) {\n return offset + this.readInt32(offset) + flatbuffers.SIZEOF_INT; // data starts after the length\n};\n\n/**\n * Get the length of a vector whose offset is stored at \"offset\" in this object.\n *\n * @param {number} offset\n * @returns {number}\n */\nflatbuffers.ByteBuffer.prototype.__vector_len = function(offset) {\n return this.readInt32(offset + this.readInt32(offset));\n};\n\n/**\n * @param {string} ident\n * @returns {boolean}\n */\nflatbuffers.ByteBuffer.prototype.__has_identifier = function(ident) {\n if (ident.length != flatbuffers.FILE_IDENTIFIER_LENGTH) {\n throw new Error('FlatBuffers: file identifier must be length ' +\n flatbuffers.FILE_IDENTIFIER_LENGTH);\n }\n for (var i = 0; i < flatbuffers.FILE_IDENTIFIER_LENGTH; i++) {\n if (ident.charCodeAt(i) != this.readInt8(this.position_ + flatbuffers.SIZEOF_INT + i)) {\n return false;\n }\n }\n return true;\n};\n\n/**\n * A helper function to avoid generated code depending on this file directly.\n *\n * @param {number} low\n * @param {number} high\n * @returns {flatbuffers.Long}\n */\nflatbuffers.ByteBuffer.prototype.createLong = function(low, high) {\n return flatbuffers.Long.create(low, high);\n};\n\n// Exports for Node.js and RequireJS\nexport { flatbuffers };\n\n/// @endcond\n/// @}\n","'use strict';\n\n// This is free and unencumbered software released into the public domain.\n// See LICENSE.md for more information.\n\n//\n// Utilities\n//\n\n/**\n * @param {number} a The number to test.\n * @param {number} min The minimum value in the range, inclusive.\n * @param {number} max The maximum value in the range, inclusive.\n * @return {boolean} True if a >= min and a <= max.\n */\nfunction inRange(a, min, max) {\n return min <= a && a <= max;\n}\n\n/**\n * @param {*} o\n * @return {Object}\n */\nfunction ToDictionary(o) {\n if (o === undefined) return {};\n if (o === Object(o)) return o;\n throw TypeError('Could not convert argument to dictionary');\n}\n\n/**\n * @param {string} string Input string of UTF-16 code units.\n * @return {!Array.} Code points.\n */\nfunction stringToCodePoints(string) {\n // https://heycam.github.io/webidl/#dfn-obtain-unicode\n\n // 1. Let S be the DOMString value.\n var s = String(string);\n\n // 2. Let n be the length of S.\n var n = s.length;\n\n // 3. Initialize i to 0.\n var i = 0;\n\n // 4. Initialize U to be an empty sequence of Unicode characters.\n var u = [];\n\n // 5. While i < n:\n while (i < n) {\n\n // 1. Let c be the code unit in S at index i.\n var c = s.charCodeAt(i);\n\n // 2. Depending on the value of c:\n\n // c < 0xD800 or c > 0xDFFF\n if (c < 0xD800 || c > 0xDFFF) {\n // Append to U the Unicode character with code point c.\n u.push(c);\n }\n\n // 0xDC00 ≤ c ≤ 0xDFFF\n else if (0xDC00 <= c && c <= 0xDFFF) {\n // Append to U a U+FFFD REPLACEMENT CHARACTER.\n u.push(0xFFFD);\n }\n\n // 0xD800 ≤ c ≤ 0xDBFF\n else if (0xD800 <= c && c <= 0xDBFF) {\n // 1. If i = n−1, then append to U a U+FFFD REPLACEMENT\n // CHARACTER.\n if (i === n - 1) {\n u.push(0xFFFD);\n }\n // 2. Otherwise, i < n−1:\n else {\n // 1. Let d be the code unit in S at index i+1.\n var d = string.charCodeAt(i + 1);\n\n // 2. If 0xDC00 ≤ d ≤ 0xDFFF, then:\n if (0xDC00 <= d && d <= 0xDFFF) {\n // 1. Let a be c & 0x3FF.\n var a = c & 0x3FF;\n\n // 2. Let b be d & 0x3FF.\n var b = d & 0x3FF;\n\n // 3. Append to U the Unicode character with code point\n // 2^16+2^10*a+b.\n u.push(0x10000 + (a << 10) + b);\n\n // 4. Set i to i+1.\n i += 1;\n }\n\n // 3. Otherwise, d < 0xDC00 or d > 0xDFFF. Append to U a\n // U+FFFD REPLACEMENT CHARACTER.\n else {\n u.push(0xFFFD);\n }\n }\n }\n\n // 3. Set i to i+1.\n i += 1;\n }\n\n // 6. Return U.\n return u;\n}\n\n/**\n * @param {!Array.} code_points Array of code points.\n * @return {string} string String of UTF-16 code units.\n */\nfunction codePointsToString(code_points) {\n var s = '';\n for (var i = 0; i < code_points.length; ++i) {\n var cp = code_points[i];\n if (cp <= 0xFFFF) {\n s += String.fromCharCode(cp);\n } else {\n cp -= 0x10000;\n s += String.fromCharCode((cp >> 10) + 0xD800,\n (cp & 0x3FF) + 0xDC00);\n }\n }\n return s;\n}\n\n\n//\n// Implementation of Encoding specification\n// https://encoding.spec.whatwg.org/\n//\n\n//\n// 3. Terminology\n//\n\n/**\n * End-of-stream is a special token that signifies no more tokens\n * are in the stream.\n * @const\n */ var end_of_stream = -1;\n\n/**\n * A stream represents an ordered sequence of tokens.\n *\n * @constructor\n * @param {!(Array.|Uint8Array)} tokens Array of tokens that provide the\n * stream.\n */\nfunction Stream(tokens) {\n /** @type {!Array.} */\n this.tokens = [].slice.call(tokens);\n}\n\nStream.prototype = {\n /**\n * @return {boolean} True if end-of-stream has been hit.\n */\n endOfStream: function() {\n return !this.tokens.length;\n },\n\n /**\n * When a token is read from a stream, the first token in the\n * stream must be returned and subsequently removed, and\n * end-of-stream must be returned otherwise.\n *\n * @return {number} Get the next token from the stream, or\n * end_of_stream.\n */\n read: function() {\n if (!this.tokens.length)\n return end_of_stream;\n return this.tokens.shift();\n },\n\n /**\n * When one or more tokens are prepended to a stream, those tokens\n * must be inserted, in given order, before the first token in the\n * stream.\n *\n * @param {(number|!Array.)} token The token(s) to prepend to the stream.\n */\n prepend: function(token) {\n if (Array.isArray(token)) {\n var tokens = /**@type {!Array.}*/(token);\n while (tokens.length)\n this.tokens.unshift(tokens.pop());\n } else {\n this.tokens.unshift(token);\n }\n },\n\n /**\n * When one or more tokens are pushed to a stream, those tokens\n * must be inserted, in given order, after the last token in the\n * stream.\n *\n * @param {(number|!Array.)} token The tokens(s) to prepend to the stream.\n */\n push: function(token) {\n if (Array.isArray(token)) {\n var tokens = /**@type {!Array.}*/(token);\n while (tokens.length)\n this.tokens.push(tokens.shift());\n } else {\n this.tokens.push(token);\n }\n }\n};\n\n//\n// 4. Encodings\n//\n\n// 4.1 Encoders and decoders\n\n/** @const */\nvar finished = -1;\n\n/**\n * @param {boolean} fatal If true, decoding errors raise an exception.\n * @param {number=} opt_code_point Override the standard fallback code point.\n * @return {number} The code point to insert on a decoding error.\n */\nfunction decoderError(fatal, opt_code_point) {\n if (fatal)\n throw TypeError('Decoder error');\n return opt_code_point || 0xFFFD;\n}\n\n/** @interface */\nfunction Decoder() {}\nDecoder.prototype = {\n /**\n * @param {Stream} stream The stream of bytes being decoded.\n * @param {number} bite The next byte read from the stream.\n * @return {?(number|!Array.)} The next code point(s)\n * decoded, or null if not enough data exists in the input\n * stream to decode a complete code point, or |finished|.\n */\n handler: function(stream, bite) {}\n};\n\n/** @interface */\nfunction Encoder() {}\nEncoder.prototype = {\n /**\n * @param {Stream} stream The stream of code points being encoded.\n * @param {number} code_point Next code point read from the stream.\n * @return {(number|!Array.)} Byte(s) to emit, or |finished|.\n */\n handler: function(stream, code_point) {}\n};\n\n//\n// 7. API\n//\n\n/** @const */ var DEFAULT_ENCODING = 'utf-8';\n\n// 7.1 Interface TextDecoder\n\n/**\n * @constructor\n * @param {string=} encoding The label of the encoding;\n * defaults to 'utf-8'.\n * @param {Object=} options\n */\nfunction TextDecoder(encoding, options) {\n if (!(this instanceof TextDecoder)) {\n return new TextDecoder(encoding, options);\n }\n encoding = encoding !== undefined ? String(encoding).toLowerCase() : DEFAULT_ENCODING;\n if (encoding !== DEFAULT_ENCODING) {\n throw new Error('Encoding not supported. Only utf-8 is supported');\n }\n options = ToDictionary(options);\n\n /** @private @type {boolean} */\n this._streaming = false;\n /** @private @type {boolean} */\n this._BOMseen = false;\n /** @private @type {?Decoder} */\n this._decoder = null;\n /** @private @type {boolean} */\n this._fatal = Boolean(options['fatal']);\n /** @private @type {boolean} */\n this._ignoreBOM = Boolean(options['ignoreBOM']);\n\n Object.defineProperty(this, 'encoding', {value: 'utf-8'});\n Object.defineProperty(this, 'fatal', {value: this._fatal});\n Object.defineProperty(this, 'ignoreBOM', {value: this._ignoreBOM});\n}\n\nTextDecoder.prototype = {\n /**\n * @param {ArrayBufferView=} input The buffer of bytes to decode.\n * @param {Object=} options\n * @return {string} The decoded string.\n */\n decode: function decode(input, options) {\n var bytes;\n if (typeof input === 'object' && input instanceof ArrayBuffer) {\n bytes = new Uint8Array(input);\n } else if (typeof input === 'object' && 'buffer' in input &&\n input.buffer instanceof ArrayBuffer) {\n bytes = new Uint8Array(input.buffer,\n input.byteOffset,\n input.byteLength);\n } else {\n bytes = new Uint8Array(0);\n }\n\n options = ToDictionary(options);\n\n if (!this._streaming) {\n this._decoder = new UTF8Decoder({fatal: this._fatal});\n this._BOMseen = false;\n }\n this._streaming = Boolean(options['stream']);\n\n var input_stream = new Stream(bytes);\n\n var code_points = [];\n\n /** @type {?(number|!Array.)} */\n var result;\n\n while (!input_stream.endOfStream()) {\n result = this._decoder.handler(input_stream, input_stream.read());\n if (result === finished)\n break;\n if (result === null)\n continue;\n if (Array.isArray(result))\n code_points.push.apply(code_points, /**@type {!Array.}*/(result));\n else\n code_points.push(result);\n }\n if (!this._streaming) {\n do {\n result = this._decoder.handler(input_stream, input_stream.read());\n if (result === finished)\n break;\n if (result === null)\n continue;\n if (Array.isArray(result))\n code_points.push.apply(code_points, /**@type {!Array.}*/(result));\n else\n code_points.push(result);\n } while (!input_stream.endOfStream());\n this._decoder = null;\n }\n\n if (code_points.length) {\n // If encoding is one of utf-8, utf-16be, and utf-16le, and\n // ignore BOM flag and BOM seen flag are unset, run these\n // subsubsteps:\n if (['utf-8'].indexOf(this.encoding) !== -1 &&\n !this._ignoreBOM && !this._BOMseen) {\n // If token is U+FEFF, set BOM seen flag.\n if (code_points[0] === 0xFEFF) {\n this._BOMseen = true;\n code_points.shift();\n } else {\n // Otherwise, if token is not end-of-stream, set BOM seen\n // flag and append token to output.\n this._BOMseen = true;\n }\n }\n }\n\n return codePointsToString(code_points);\n }\n};\n\n// 7.2 Interface TextEncoder\n\n/**\n * @constructor\n * @param {string=} encoding The label of the encoding;\n * defaults to 'utf-8'.\n * @param {Object=} options\n */\nfunction TextEncoder(encoding, options) {\n if (!(this instanceof TextEncoder))\n return new TextEncoder(encoding, options);\n encoding = encoding !== undefined ? String(encoding).toLowerCase() : DEFAULT_ENCODING;\n if (encoding !== DEFAULT_ENCODING) {\n throw new Error('Encoding not supported. Only utf-8 is supported');\n }\n options = ToDictionary(options);\n\n /** @private @type {boolean} */\n this._streaming = false;\n /** @private @type {?Encoder} */\n this._encoder = null;\n /** @private @type {{fatal: boolean}} */\n this._options = {fatal: Boolean(options['fatal'])};\n\n Object.defineProperty(this, 'encoding', {value: 'utf-8'});\n}\n\nTextEncoder.prototype = {\n /**\n * @param {string=} opt_string The string to encode.\n * @param {Object=} options\n * @return {Uint8Array} Encoded bytes, as a Uint8Array.\n */\n encode: function encode(opt_string, options) {\n opt_string = opt_string ? String(opt_string) : '';\n options = ToDictionary(options);\n\n // NOTE: This option is nonstandard. None of the encodings\n // permitted for encoding (i.e. UTF-8, UTF-16) are stateful,\n // so streaming is not necessary.\n if (!this._streaming)\n this._encoder = new UTF8Encoder(this._options);\n this._streaming = Boolean(options['stream']);\n\n var bytes = [];\n var input_stream = new Stream(stringToCodePoints(opt_string));\n /** @type {?(number|!Array.)} */\n var result;\n while (!input_stream.endOfStream()) {\n result = this._encoder.handler(input_stream, input_stream.read());\n if (result === finished)\n break;\n if (Array.isArray(result))\n bytes.push.apply(bytes, /**@type {!Array.}*/(result));\n else\n bytes.push(result);\n }\n if (!this._streaming) {\n while (true) {\n result = this._encoder.handler(input_stream, input_stream.read());\n if (result === finished)\n break;\n if (Array.isArray(result))\n bytes.push.apply(bytes, /**@type {!Array.}*/(result));\n else\n bytes.push(result);\n }\n this._encoder = null;\n }\n return new Uint8Array(bytes);\n }\n};\n\n//\n// 8. The encoding\n//\n\n// 8.1 utf-8\n\n/**\n * @constructor\n * @implements {Decoder}\n * @param {{fatal: boolean}} options\n */\nfunction UTF8Decoder(options) {\n var fatal = options.fatal;\n\n // utf-8's decoder's has an associated utf-8 code point, utf-8\n // bytes seen, and utf-8 bytes needed (all initially 0), a utf-8\n // lower boundary (initially 0x80), and a utf-8 upper boundary\n // (initially 0xBF).\n var /** @type {number} */ utf8_code_point = 0,\n /** @type {number} */ utf8_bytes_seen = 0,\n /** @type {number} */ utf8_bytes_needed = 0,\n /** @type {number} */ utf8_lower_boundary = 0x80,\n /** @type {number} */ utf8_upper_boundary = 0xBF;\n\n /**\n * @param {Stream} stream The stream of bytes being decoded.\n * @param {number} bite The next byte read from the stream.\n * @return {?(number|!Array.)} The next code point(s)\n * decoded, or null if not enough data exists in the input\n * stream to decode a complete code point.\n */\n this.handler = function(stream, bite) {\n // 1. If byte is end-of-stream and utf-8 bytes needed is not 0,\n // set utf-8 bytes needed to 0 and return error.\n if (bite === end_of_stream && utf8_bytes_needed !== 0) {\n utf8_bytes_needed = 0;\n return decoderError(fatal);\n }\n\n // 2. If byte is end-of-stream, return finished.\n if (bite === end_of_stream)\n return finished;\n\n // 3. If utf-8 bytes needed is 0, based on byte:\n if (utf8_bytes_needed === 0) {\n\n // 0x00 to 0x7F\n if (inRange(bite, 0x00, 0x7F)) {\n // Return a code point whose value is byte.\n return bite;\n }\n\n // 0xC2 to 0xDF\n if (inRange(bite, 0xC2, 0xDF)) {\n // Set utf-8 bytes needed to 1 and utf-8 code point to byte\n // − 0xC0.\n utf8_bytes_needed = 1;\n utf8_code_point = bite - 0xC0;\n }\n\n // 0xE0 to 0xEF\n else if (inRange(bite, 0xE0, 0xEF)) {\n // 1. If byte is 0xE0, set utf-8 lower boundary to 0xA0.\n if (bite === 0xE0)\n utf8_lower_boundary = 0xA0;\n // 2. If byte is 0xED, set utf-8 upper boundary to 0x9F.\n if (bite === 0xED)\n utf8_upper_boundary = 0x9F;\n // 3. Set utf-8 bytes needed to 2 and utf-8 code point to\n // byte − 0xE0.\n utf8_bytes_needed = 2;\n utf8_code_point = bite - 0xE0;\n }\n\n // 0xF0 to 0xF4\n else if (inRange(bite, 0xF0, 0xF4)) {\n // 1. If byte is 0xF0, set utf-8 lower boundary to 0x90.\n if (bite === 0xF0)\n utf8_lower_boundary = 0x90;\n // 2. If byte is 0xF4, set utf-8 upper boundary to 0x8F.\n if (bite === 0xF4)\n utf8_upper_boundary = 0x8F;\n // 3. Set utf-8 bytes needed to 3 and utf-8 code point to\n // byte − 0xF0.\n utf8_bytes_needed = 3;\n utf8_code_point = bite - 0xF0;\n }\n\n // Otherwise\n else {\n // Return error.\n return decoderError(fatal);\n }\n\n // Then (byte is in the range 0xC2 to 0xF4) set utf-8 code\n // point to utf-8 code point << (6 × utf-8 bytes needed) and\n // return continue.\n utf8_code_point = utf8_code_point << (6 * utf8_bytes_needed);\n return null;\n }\n\n // 4. If byte is not in the range utf-8 lower boundary to utf-8\n // upper boundary, run these substeps:\n if (!inRange(bite, utf8_lower_boundary, utf8_upper_boundary)) {\n\n // 1. Set utf-8 code point, utf-8 bytes needed, and utf-8\n // bytes seen to 0, set utf-8 lower boundary to 0x80, and set\n // utf-8 upper boundary to 0xBF.\n utf8_code_point = utf8_bytes_needed = utf8_bytes_seen = 0;\n utf8_lower_boundary = 0x80;\n utf8_upper_boundary = 0xBF;\n\n // 2. Prepend byte to stream.\n stream.prepend(bite);\n\n // 3. Return error.\n return decoderError(fatal);\n }\n\n // 5. Set utf-8 lower boundary to 0x80 and utf-8 upper boundary\n // to 0xBF.\n utf8_lower_boundary = 0x80;\n utf8_upper_boundary = 0xBF;\n\n // 6. Increase utf-8 bytes seen by one and set utf-8 code point\n // to utf-8 code point + (byte − 0x80) << (6 × (utf-8 bytes\n // needed − utf-8 bytes seen)).\n utf8_bytes_seen += 1;\n utf8_code_point += (bite - 0x80) << (6 * (utf8_bytes_needed - utf8_bytes_seen));\n\n // 7. If utf-8 bytes seen is not equal to utf-8 bytes needed,\n // continue.\n if (utf8_bytes_seen !== utf8_bytes_needed)\n return null;\n\n // 8. Let code point be utf-8 code point.\n var code_point = utf8_code_point;\n\n // 9. Set utf-8 code point, utf-8 bytes needed, and utf-8 bytes\n // seen to 0.\n utf8_code_point = utf8_bytes_needed = utf8_bytes_seen = 0;\n\n // 10. Return a code point whose value is code point.\n return code_point;\n };\n}\n\n/**\n * @constructor\n * @implements {Encoder}\n * @param {{fatal: boolean}} options\n */\nfunction UTF8Encoder(options) {\n var fatal = options.fatal;\n /**\n * @param {Stream} stream Input stream.\n * @param {number} code_point Next code point read from the stream.\n * @return {(number|!Array.)} Byte(s) to emit.\n */\n this.handler = function(stream, code_point) {\n // 1. If code point is end-of-stream, return finished.\n if (code_point === end_of_stream)\n return finished;\n\n // 2. If code point is in the range U+0000 to U+007F, return a\n // byte whose value is code point.\n if (inRange(code_point, 0x0000, 0x007f))\n return code_point;\n\n // 3. Set count and offset based on the range code point is in:\n var count, offset;\n // U+0080 to U+07FF: 1 and 0xC0\n if (inRange(code_point, 0x0080, 0x07FF)) {\n count = 1;\n offset = 0xC0;\n }\n // U+0800 to U+FFFF: 2 and 0xE0\n else if (inRange(code_point, 0x0800, 0xFFFF)) {\n count = 2;\n offset = 0xE0;\n }\n // U+10000 to U+10FFFF: 3 and 0xF0\n else if (inRange(code_point, 0x10000, 0x10FFFF)) {\n count = 3;\n offset = 0xF0;\n }\n\n // 4.Let bytes be a byte sequence whose first byte is (code\n // point >> (6 × count)) + offset.\n var bytes = [(code_point >> (6 * count)) + offset];\n\n // 5. Run these substeps while count is greater than 0:\n while (count > 0) {\n\n // 1. Set temp to code point >> (6 × (count − 1)).\n var temp = code_point >> (6 * (count - 1));\n\n // 2. Append to bytes 0x80 | (temp & 0x3F).\n bytes.push(0x80 | (temp & 0x3F));\n\n // 3. Decrease count by one.\n count -= 1;\n }\n\n // 6. Return bytes bytes, in order.\n return bytes;\n };\n}\n\nexport {TextEncoder, TextDecoder};\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\nimport { toUint8Array } from './buffer';\nimport { TextDecoder as TextDecoderPolyfill, TextEncoder as TextEncoderPolyfill, } from 'text-encoding-utf-8';\n/** @ignore @suppress {missingRequire} */\nconst _Buffer = typeof Buffer === 'function' ? Buffer : null;\n/** @ignore */\nconst useNativeEncoders = typeof TextDecoder === 'function' && typeof TextEncoder === 'function';\n/** @ignore */\nexport const decodeUtf8 = ((TextDecoder) => {\n if (useNativeEncoders || !_Buffer) {\n const decoder = new TextDecoder('utf-8');\n return (buffer) => decoder.decode(buffer);\n }\n return (input) => {\n const { buffer, byteOffset, length } = toUint8Array(input);\n return _Buffer.from(buffer, byteOffset, length).toString();\n };\n})(typeof TextDecoder !== 'undefined' ? TextDecoder : TextDecoderPolyfill);\n/** @ignore */\nexport const encodeUtf8 = ((TextEncoder) => {\n if (useNativeEncoders || !_Buffer) {\n const encoder = new TextEncoder();\n return (value) => encoder.encode(value);\n }\n return (input = '') => toUint8Array(_Buffer.from(input, 'utf8'));\n})(typeof TextEncoder !== 'undefined' ? TextEncoder : TextEncoderPolyfill);\n\n//# sourceMappingURL=utf8.mjs.map\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\nimport streamAdapters from './adapters';\n/** @ignore */\nexport const ITERATOR_DONE = Object.freeze({ done: true, value: void (0) });\n/** @ignore */\nexport class ArrowJSON {\n // @ts-ignore\n constructor(_json) {\n this._json = _json;\n }\n get schema() { return this._json['schema']; }\n get batches() { return (this._json['batches'] || []); }\n get dictionaries() { return (this._json['dictionaries'] || []); }\n}\n/** @ignore */\nexport class ReadableInterop {\n tee() {\n return this._getDOMStream().tee();\n }\n pipe(writable, options) {\n return this._getNodeStream().pipe(writable, options);\n }\n pipeTo(writable, options) { return this._getDOMStream().pipeTo(writable, options); }\n pipeThrough(duplex, options) {\n return this._getDOMStream().pipeThrough(duplex, options);\n }\n _getDOMStream() {\n return this._DOMStream || (this._DOMStream = this.toDOMStream());\n }\n _getNodeStream() {\n return this._nodeStream || (this._nodeStream = this.toNodeStream());\n }\n}\n/** @ignore */\nexport class AsyncQueue extends ReadableInterop {\n constructor() {\n super();\n this._values = [];\n this.resolvers = [];\n this._closedPromise = new Promise((r) => this._closedPromiseResolve = r);\n }\n get closed() { return this._closedPromise; }\n async cancel(reason) { await this.return(reason); }\n write(value) {\n if (this._ensureOpen()) {\n this.resolvers.length <= 0\n ? (this._values.push(value))\n : (this.resolvers.shift().resolve({ done: false, value }));\n }\n }\n abort(value) {\n if (this._closedPromiseResolve) {\n this.resolvers.length <= 0\n ? (this._error = { error: value })\n : (this.resolvers.shift().reject({ done: true, value }));\n }\n }\n close() {\n if (this._closedPromiseResolve) {\n const { resolvers } = this;\n while (resolvers.length > 0) {\n resolvers.shift().resolve(ITERATOR_DONE);\n }\n this._closedPromiseResolve();\n this._closedPromiseResolve = undefined;\n }\n }\n [Symbol.asyncIterator]() { return this; }\n toDOMStream(options) {\n return streamAdapters.toDOMStream((this._closedPromiseResolve || this._error)\n ? this\n : this._values, options);\n }\n toNodeStream(options) {\n return streamAdapters.toNodeStream((this._closedPromiseResolve || this._error)\n ? this\n : this._values, options);\n }\n async throw(_) { await this.abort(_); return ITERATOR_DONE; }\n async return(_) { await this.close(); return ITERATOR_DONE; }\n async read(size) { return (await this.next(size, 'read')).value; }\n async peek(size) { return (await this.next(size, 'peek')).value; }\n next(..._args) {\n if (this._values.length > 0) {\n return Promise.resolve({ done: false, value: this._values.shift() });\n }\n else if (this._error) {\n return Promise.reject({ done: true, value: this._error.error });\n }\n else if (!this._closedPromiseResolve) {\n return Promise.resolve(ITERATOR_DONE);\n }\n else {\n return new Promise((resolve, reject) => {\n this.resolvers.push({ resolve, reject });\n });\n }\n }\n _ensureOpen() {\n if (this._closedPromiseResolve) {\n return true;\n }\n throw new Error(`${this} is closed`);\n }\n}\n\n//# sourceMappingURL=interfaces.mjs.map\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\nimport { ReadableInterop } from '../io/interfaces';\n/** @ignore */\nconst [BigIntCtor, BigIntAvailable] = (() => {\n const BigIntUnavailableError = () => { throw new Error('BigInt is not available in this environment'); };\n function BigIntUnavailable() { throw BigIntUnavailableError(); }\n BigIntUnavailable.asIntN = () => { throw BigIntUnavailableError(); };\n BigIntUnavailable.asUintN = () => { throw BigIntUnavailableError(); };\n return typeof BigInt !== 'undefined' ? [BigInt, true] : [BigIntUnavailable, false];\n})();\n/** @ignore */\nconst [BigInt64ArrayCtor, BigInt64ArrayAvailable] = (() => {\n const BigInt64ArrayUnavailableError = () => { throw new Error('BigInt64Array is not available in this environment'); };\n class BigInt64ArrayUnavailable {\n static get BYTES_PER_ELEMENT() { return 8; }\n static of() { throw BigInt64ArrayUnavailableError(); }\n static from() { throw BigInt64ArrayUnavailableError(); }\n constructor() { throw BigInt64ArrayUnavailableError(); }\n }\n return typeof BigInt64Array !== 'undefined' ? [BigInt64Array, true] : [BigInt64ArrayUnavailable, false];\n})();\n/** @ignore */\nconst [BigUint64ArrayCtor, BigUint64ArrayAvailable] = (() => {\n const BigUint64ArrayUnavailableError = () => { throw new Error('BigUint64Array is not available in this environment'); };\n class BigUint64ArrayUnavailable {\n static get BYTES_PER_ELEMENT() { return 8; }\n static of() { throw BigUint64ArrayUnavailableError(); }\n static from() { throw BigUint64ArrayUnavailableError(); }\n constructor() { throw BigUint64ArrayUnavailableError(); }\n }\n return typeof BigUint64Array !== 'undefined' ? [BigUint64Array, true] : [BigUint64ArrayUnavailable, false];\n})();\nexport { BigIntCtor as BigInt, BigIntAvailable };\nexport { BigInt64ArrayCtor as BigInt64Array, BigInt64ArrayAvailable };\nexport { BigUint64ArrayCtor as BigUint64Array, BigUint64ArrayAvailable };\n/** @ignore */ const isNumber = (x) => typeof x === 'number';\n/** @ignore */ const isBoolean = (x) => typeof x === 'boolean';\n/** @ignore */ const isFunction = (x) => typeof x === 'function';\n/** @ignore */\nexport const isObject = (x) => x != null && Object(x) === x;\n/** @ignore */\nexport const isPromise = (x) => {\n return isObject(x) && isFunction(x.then);\n};\n/** @ignore */\nexport const isObservable = (x) => {\n return isObject(x) && isFunction(x.subscribe);\n};\n/** @ignore */\nexport const isIterable = (x) => {\n return isObject(x) && isFunction(x[Symbol.iterator]);\n};\n/** @ignore */\nexport const isAsyncIterable = (x) => {\n return isObject(x) && isFunction(x[Symbol.asyncIterator]);\n};\n/** @ignore */\nexport const isArrowJSON = (x) => {\n return isObject(x) && isObject(x['schema']);\n};\n/** @ignore */\nexport const isArrayLike = (x) => {\n return isObject(x) && isNumber(x['length']);\n};\n/** @ignore */\nexport const isIteratorResult = (x) => {\n return isObject(x) && ('done' in x) && ('value' in x);\n};\n/** @ignore */\nexport const isUnderlyingSink = (x) => {\n return isObject(x) &&\n isFunction(x['abort']) &&\n isFunction(x['close']) &&\n isFunction(x['start']) &&\n isFunction(x['write']);\n};\n/** @ignore */\nexport const isFileHandle = (x) => {\n return isObject(x) && isFunction(x['stat']) && isNumber(x['fd']);\n};\n/** @ignore */\nexport const isFSReadStream = (x) => {\n return isReadableNodeStream(x) && isNumber(x['bytesRead']);\n};\n/** @ignore */\nexport const isFetchResponse = (x) => {\n return isObject(x) && isReadableDOMStream(x['body']);\n};\n/** @ignore */\nexport const isWritableDOMStream = (x) => {\n return isObject(x) &&\n isFunction(x['abort']) &&\n isFunction(x['getWriter']) &&\n !(x instanceof ReadableInterop);\n};\n/** @ignore */\nexport const isReadableDOMStream = (x) => {\n return isObject(x) &&\n isFunction(x['cancel']) &&\n isFunction(x['getReader']) &&\n !(x instanceof ReadableInterop);\n};\n/** @ignore */\nexport const isWritableNodeStream = (x) => {\n return isObject(x) &&\n isFunction(x['end']) &&\n isFunction(x['write']) &&\n isBoolean(x['writable']) &&\n !(x instanceof ReadableInterop);\n};\n/** @ignore */\nexport const isReadableNodeStream = (x) => {\n return isObject(x) &&\n isFunction(x['read']) &&\n isFunction(x['pipe']) &&\n isBoolean(x['readable']) &&\n !(x instanceof ReadableInterop);\n};\n\n//# sourceMappingURL=compat.mjs.map\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\nimport { flatbuffers } from 'flatbuffers';\nimport { encodeUtf8 } from '../util/utf8';\nvar ByteBuffer = flatbuffers.ByteBuffer;\nimport { isPromise, isIterable, isAsyncIterable, isIteratorResult, BigInt64Array, BigUint64Array } from './compat';\n/** @ignore */\nconst SharedArrayBuf = (typeof SharedArrayBuffer !== 'undefined' ? SharedArrayBuffer : ArrayBuffer);\n/** @ignore */\nfunction collapseContiguousByteRanges(chunks) {\n let result = chunks[0] ? [chunks[0]] : [];\n let xOffset, yOffset, xLen, yLen;\n for (let x, y, i = 0, j = 0, n = chunks.length; ++i < n;) {\n x = result[j];\n y = chunks[i];\n // continue if x and y don't share the same underlying ArrayBuffer, or if x isn't before y\n if (!x || !y || x.buffer !== y.buffer || y.byteOffset < x.byteOffset) {\n y && (result[++j] = y);\n continue;\n }\n ({ byteOffset: xOffset, byteLength: xLen } = x);\n ({ byteOffset: yOffset, byteLength: yLen } = y);\n // continue if the byte ranges of x and y aren't contiguous\n if ((xOffset + xLen) < yOffset || (yOffset + yLen) < xOffset) {\n y && (result[++j] = y);\n continue;\n }\n result[j] = new Uint8Array(x.buffer, xOffset, yOffset - xOffset + yLen);\n }\n return result;\n}\n/** @ignore */\nexport function memcpy(target, source, targetByteOffset = 0, sourceByteLength = source.byteLength) {\n const targetByteLength = target.byteLength;\n const dst = new Uint8Array(target.buffer, target.byteOffset, targetByteLength);\n const src = new Uint8Array(source.buffer, source.byteOffset, Math.min(sourceByteLength, targetByteLength));\n dst.set(src, targetByteOffset);\n return target;\n}\n/** @ignore */\nexport function joinUint8Arrays(chunks, size) {\n // collapse chunks that share the same underlying ArrayBuffer and whose byte ranges overlap,\n // to avoid unnecessarily copying the bytes to do this buffer join. This is a common case during\n // streaming, where we may be reading partial byte ranges out of the same underlying ArrayBuffer\n let result = collapseContiguousByteRanges(chunks);\n let byteLength = result.reduce((x, b) => x + b.byteLength, 0);\n let source, sliced, buffer;\n let offset = 0, index = -1, length = Math.min(size || Infinity, byteLength);\n for (let n = result.length; ++index < n;) {\n source = result[index];\n sliced = source.subarray(0, Math.min(source.length, length - offset));\n if (length <= (offset + sliced.length)) {\n if (sliced.length < source.length) {\n result[index] = source.subarray(sliced.length);\n }\n else if (sliced.length === source.length) {\n index++;\n }\n buffer ? memcpy(buffer, sliced, offset) : (buffer = sliced);\n break;\n }\n memcpy(buffer || (buffer = new Uint8Array(length)), sliced, offset);\n offset += sliced.length;\n }\n return [buffer || new Uint8Array(0), result.slice(index), byteLength - (buffer ? buffer.byteLength : 0)];\n}\nexport function toArrayBufferView(ArrayBufferViewCtor, input) {\n let value = isIteratorResult(input) ? input.value : input;\n if (value instanceof ArrayBufferViewCtor) {\n if (ArrayBufferViewCtor === Uint8Array) {\n // Node's `Buffer` class passes the `instanceof Uint8Array` check, but we need\n // a real Uint8Array, since Buffer#slice isn't the same as Uint8Array#slice :/\n return new ArrayBufferViewCtor(value.buffer, value.byteOffset, value.byteLength);\n }\n return value;\n }\n if (!value) {\n return new ArrayBufferViewCtor(0);\n }\n if (typeof value === 'string') {\n value = encodeUtf8(value);\n }\n if (value instanceof ArrayBuffer) {\n return new ArrayBufferViewCtor(value);\n }\n if (value instanceof SharedArrayBuf) {\n return new ArrayBufferViewCtor(value);\n }\n if (value instanceof ByteBuffer) {\n return toArrayBufferView(ArrayBufferViewCtor, value.bytes());\n }\n return !ArrayBuffer.isView(value) ? ArrayBufferViewCtor.from(value) : value.byteLength <= 0 ? new ArrayBufferViewCtor(0)\n : new ArrayBufferViewCtor(value.buffer, value.byteOffset, value.byteLength / ArrayBufferViewCtor.BYTES_PER_ELEMENT);\n}\n/** @ignore */ export const toInt8Array = (input) => toArrayBufferView(Int8Array, input);\n/** @ignore */ export const toInt16Array = (input) => toArrayBufferView(Int16Array, input);\n/** @ignore */ export const toInt32Array = (input) => toArrayBufferView(Int32Array, input);\n/** @ignore */ export const toBigInt64Array = (input) => toArrayBufferView(BigInt64Array, input);\n/** @ignore */ export const toUint8Array = (input) => toArrayBufferView(Uint8Array, input);\n/** @ignore */ export const toUint16Array = (input) => toArrayBufferView(Uint16Array, input);\n/** @ignore */ export const toUint32Array = (input) => toArrayBufferView(Uint32Array, input);\n/** @ignore */ export const toBigUint64Array = (input) => toArrayBufferView(BigUint64Array, input);\n/** @ignore */ export const toFloat32Array = (input) => toArrayBufferView(Float32Array, input);\n/** @ignore */ export const toFloat64Array = (input) => toArrayBufferView(Float64Array, input);\n/** @ignore */ export const toUint8ClampedArray = (input) => toArrayBufferView(Uint8ClampedArray, input);\n/** @ignore */\nconst pump = (iterator) => { iterator.next(); return iterator; };\n/** @ignore */\nexport function* toArrayBufferViewIterator(ArrayCtor, source) {\n const wrap = function* (x) { yield x; };\n const buffers = (typeof source === 'string') ? wrap(source)\n : (ArrayBuffer.isView(source)) ? wrap(source)\n : (source instanceof ArrayBuffer) ? wrap(source)\n : (source instanceof SharedArrayBuf) ? wrap(source)\n : !isIterable(source) ? wrap(source) : source;\n yield* pump((function* (it) {\n let r = null;\n do {\n r = it.next(yield toArrayBufferView(ArrayCtor, r));\n } while (!r.done);\n })(buffers[Symbol.iterator]()));\n}\n/** @ignore */ export const toInt8ArrayIterator = (input) => toArrayBufferViewIterator(Int8Array, input);\n/** @ignore */ export const toInt16ArrayIterator = (input) => toArrayBufferViewIterator(Int16Array, input);\n/** @ignore */ export const toInt32ArrayIterator = (input) => toArrayBufferViewIterator(Int32Array, input);\n/** @ignore */ export const toUint8ArrayIterator = (input) => toArrayBufferViewIterator(Uint8Array, input);\n/** @ignore */ export const toUint16ArrayIterator = (input) => toArrayBufferViewIterator(Uint16Array, input);\n/** @ignore */ export const toUint32ArrayIterator = (input) => toArrayBufferViewIterator(Uint32Array, input);\n/** @ignore */ export const toFloat32ArrayIterator = (input) => toArrayBufferViewIterator(Float32Array, input);\n/** @ignore */ export const toFloat64ArrayIterator = (input) => toArrayBufferViewIterator(Float64Array, input);\n/** @ignore */ export const toUint8ClampedArrayIterator = (input) => toArrayBufferViewIterator(Uint8ClampedArray, input);\n/** @ignore */\nexport async function* toArrayBufferViewAsyncIterator(ArrayCtor, source) {\n // if a Promise, unwrap the Promise and iterate the resolved value\n if (isPromise(source)) {\n return yield* toArrayBufferViewAsyncIterator(ArrayCtor, await source);\n }\n const wrap = async function* (x) { yield await x; };\n const emit = async function* (source) {\n yield* pump((function* (it) {\n let r = null;\n do {\n r = it.next(yield r && r.value);\n } while (!r.done);\n })(source[Symbol.iterator]()));\n };\n const buffers = (typeof source === 'string') ? wrap(source) // if string, wrap in an AsyncIterableIterator\n : (ArrayBuffer.isView(source)) ? wrap(source) // if TypedArray, wrap in an AsyncIterableIterator\n : (source instanceof ArrayBuffer) ? wrap(source) // if ArrayBuffer, wrap in an AsyncIterableIterator\n : (source instanceof SharedArrayBuf) ? wrap(source) // if SharedArrayBuffer, wrap in an AsyncIterableIterator\n : isIterable(source) ? emit(source) // If Iterable, wrap in an AsyncIterableIterator and compose the `next` values\n : !isAsyncIterable(source) ? wrap(source) // If not an AsyncIterable, treat as a sentinel and wrap in an AsyncIterableIterator\n : source; // otherwise if AsyncIterable, use it\n yield* pump((async function* (it) {\n let r = null;\n do {\n r = await it.next(yield toArrayBufferView(ArrayCtor, r));\n } while (!r.done);\n })(buffers[Symbol.asyncIterator]()));\n}\n/** @ignore */ export const toInt8ArrayAsyncIterator = (input) => toArrayBufferViewAsyncIterator(Int8Array, input);\n/** @ignore */ export const toInt16ArrayAsyncIterator = (input) => toArrayBufferViewAsyncIterator(Int16Array, input);\n/** @ignore */ export const toInt32ArrayAsyncIterator = (input) => toArrayBufferViewAsyncIterator(Int32Array, input);\n/** @ignore */ export const toUint8ArrayAsyncIterator = (input) => toArrayBufferViewAsyncIterator(Uint8Array, input);\n/** @ignore */ export const toUint16ArrayAsyncIterator = (input) => toArrayBufferViewAsyncIterator(Uint16Array, input);\n/** @ignore */ export const toUint32ArrayAsyncIterator = (input) => toArrayBufferViewAsyncIterator(Uint32Array, input);\n/** @ignore */ export const toFloat32ArrayAsyncIterator = (input) => toArrayBufferViewAsyncIterator(Float32Array, input);\n/** @ignore */ export const toFloat64ArrayAsyncIterator = (input) => toArrayBufferViewAsyncIterator(Float64Array, input);\n/** @ignore */ export const toUint8ClampedArrayAsyncIterator = (input) => toArrayBufferViewAsyncIterator(Uint8ClampedArray, input);\n/** @ignore */\nexport function rebaseValueOffsets(offset, length, valueOffsets) {\n // If we have a non-zero offset, create a new offsets array with the values\n // shifted by the start offset, such that the new start offset is 0\n if (offset !== 0) {\n valueOffsets = valueOffsets.slice(0, length + 1);\n for (let i = -1; ++i <= length;) {\n valueOffsets[i] += offset;\n }\n }\n return valueOffsets;\n}\n/** @ignore */\nexport function compareArrayLike(a, b) {\n let i = 0, n = a.length;\n if (n !== b.length) {\n return false;\n }\n if (n > 0) {\n do {\n if (a[i] !== b[i]) {\n return false;\n }\n } while (++i < n);\n }\n return true;\n}\n\n//# sourceMappingURL=buffer.mjs.map\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\nimport { toUint8Array, joinUint8Arrays, toUint8ArrayIterator, toUint8ArrayAsyncIterator } from '../util/buffer';\n/** @ignore */\nexport default {\n fromIterable(source) {\n return pump(fromIterable(source));\n },\n fromAsyncIterable(source) {\n return pump(fromAsyncIterable(source));\n },\n fromDOMStream(source) {\n return pump(fromDOMStream(source));\n },\n fromNodeStream(stream) {\n return pump(fromNodeStream(stream));\n },\n // @ts-ignore\n toDOMStream(source, options) {\n throw new Error(`\"toDOMStream\" not available in this environment`);\n },\n // @ts-ignore\n toNodeStream(source, options) {\n throw new Error(`\"toNodeStream\" not available in this environment`);\n },\n};\n/** @ignore */\nconst pump = (iterator) => { iterator.next(); return iterator; };\n/** @ignore */\nfunction* fromIterable(source) {\n let done, threw = false;\n let buffers = [], buffer;\n let cmd, size, bufferLength = 0;\n function byteRange() {\n if (cmd === 'peek') {\n return joinUint8Arrays(buffers, size)[0];\n }\n [buffer, buffers, bufferLength] = joinUint8Arrays(buffers, size);\n return buffer;\n }\n // Yield so the caller can inject the read command before creating the source Iterator\n ({ cmd, size } = yield null);\n // initialize the iterator\n let it = toUint8ArrayIterator(source)[Symbol.iterator]();\n try {\n do {\n // read the next value\n ({ done, value: buffer } = isNaN(size - bufferLength) ?\n it.next(undefined) : it.next(size - bufferLength));\n // if chunk is not null or empty, push it onto the queue\n if (!done && buffer.byteLength > 0) {\n buffers.push(buffer);\n bufferLength += buffer.byteLength;\n }\n // If we have enough bytes in our buffer, yield chunks until we don't\n if (done || size <= bufferLength) {\n do {\n ({ cmd, size } = yield byteRange());\n } while (size < bufferLength);\n }\n } while (!done);\n }\n catch (e) {\n (threw = true) && (typeof it.throw === 'function') && (it.throw(e));\n }\n finally {\n (threw === false) && (typeof it.return === 'function') && (it.return());\n }\n}\n/** @ignore */\nasync function* fromAsyncIterable(source) {\n let done, threw = false;\n let buffers = [], buffer;\n let cmd, size, bufferLength = 0;\n function byteRange() {\n if (cmd === 'peek') {\n return joinUint8Arrays(buffers, size)[0];\n }\n [buffer, buffers, bufferLength] = joinUint8Arrays(buffers, size);\n return buffer;\n }\n // Yield so the caller can inject the read command before creating the source AsyncIterator\n ({ cmd, size } = yield null);\n // initialize the iterator\n let it = toUint8ArrayAsyncIterator(source)[Symbol.asyncIterator]();\n try {\n do {\n // read the next value\n ({ done, value: buffer } = isNaN(size - bufferLength)\n ? await it.next(undefined)\n : await it.next(size - bufferLength));\n // if chunk is not null or empty, push it onto the queue\n if (!done && buffer.byteLength > 0) {\n buffers.push(buffer);\n bufferLength += buffer.byteLength;\n }\n // If we have enough bytes in our buffer, yield chunks until we don't\n if (done || size <= bufferLength) {\n do {\n ({ cmd, size } = yield byteRange());\n } while (size < bufferLength);\n }\n } while (!done);\n }\n catch (e) {\n (threw = true) && (typeof it.throw === 'function') && (await it.throw(e));\n }\n finally {\n (threw === false) && (typeof it.return === 'function') && (await it.return());\n }\n}\n// All this manual Uint8Array chunk management can be avoided if/when engines\n// add support for ArrayBuffer.transfer() or ArrayBuffer.prototype.realloc():\n// https://github.com/domenic/proposal-arraybuffer-transfer\n/** @ignore */\nasync function* fromDOMStream(source) {\n let done = false, threw = false;\n let buffers = [], buffer;\n let cmd, size, bufferLength = 0;\n function byteRange() {\n if (cmd === 'peek') {\n return joinUint8Arrays(buffers, size)[0];\n }\n [buffer, buffers, bufferLength] = joinUint8Arrays(buffers, size);\n return buffer;\n }\n // Yield so the caller can inject the read command before we establish the ReadableStream lock\n ({ cmd, size } = yield null);\n // initialize the reader and lock the stream\n let it = new AdaptiveByteReader(source);\n try {\n do {\n // read the next value\n ({ done, value: buffer } = isNaN(size - bufferLength)\n ? await it['read'](undefined)\n : await it['read'](size - bufferLength));\n // if chunk is not null or empty, push it onto the queue\n if (!done && buffer.byteLength > 0) {\n buffers.push(toUint8Array(buffer));\n bufferLength += buffer.byteLength;\n }\n // If we have enough bytes in our buffer, yield chunks until we don't\n if (done || size <= bufferLength) {\n do {\n ({ cmd, size } = yield byteRange());\n } while (size < bufferLength);\n }\n } while (!done);\n }\n catch (e) {\n (threw = true) && (await it['cancel'](e));\n }\n finally {\n (threw === false) ? (await it['cancel']())\n : source['locked'] && it.releaseLock();\n }\n}\n/** @ignore */\nclass AdaptiveByteReader {\n constructor(source) {\n this.source = source;\n this.byobReader = null;\n this.defaultReader = null;\n try {\n this.supportsBYOB = !!(this.reader = this.getBYOBReader());\n }\n catch (e) {\n this.supportsBYOB = !!!(this.reader = this.getDefaultReader());\n }\n }\n get closed() {\n return this.reader ? this.reader['closed'].catch(() => { }) : Promise.resolve();\n }\n releaseLock() {\n if (this.reader) {\n this.reader.releaseLock();\n }\n this.reader = this.byobReader = this.defaultReader = null;\n }\n async cancel(reason) {\n const { reader, source } = this;\n reader && (await reader['cancel'](reason).catch(() => { }));\n source && (source['locked'] && this.releaseLock());\n }\n async read(size) {\n if (size === 0) {\n return { done: this.reader == null, value: new Uint8Array(0) };\n }\n const result = !this.supportsBYOB || typeof size !== 'number'\n ? await this.getDefaultReader().read()\n : await this.readFromBYOBReader(size);\n !result.done && (result.value = toUint8Array(result));\n return result;\n }\n getDefaultReader() {\n if (this.byobReader) {\n this.releaseLock();\n }\n if (!this.defaultReader) {\n this.defaultReader = this.source['getReader']();\n // We have to catch and swallow errors here to avoid uncaught promise rejection exceptions\n // that seem to be raised when we call `releaseLock()` on this reader. I'm still mystified\n // about why these errors are raised, but I'm sure there's some important spec reason that\n // I haven't considered. I hate to employ such an anti-pattern here, but it seems like the\n // only solution in this case :/\n this.defaultReader['closed'].catch(() => { });\n }\n return (this.reader = this.defaultReader);\n }\n getBYOBReader() {\n if (this.defaultReader) {\n this.releaseLock();\n }\n if (!this.byobReader) {\n this.byobReader = this.source['getReader']({ mode: 'byob' });\n // We have to catch and swallow errors here to avoid uncaught promise rejection exceptions\n // that seem to be raised when we call `releaseLock()` on this reader. I'm still mystified\n // about why these errors are raised, but I'm sure there's some important spec reason that\n // I haven't considered. I hate to employ such an anti-pattern here, but it seems like the\n // only solution in this case :/\n this.byobReader['closed'].catch(() => { });\n }\n return (this.reader = this.byobReader);\n }\n // This strategy plucked from the example in the streams spec:\n // https://streams.spec.whatwg.org/#example-manual-read-bytes\n async readFromBYOBReader(size) {\n return await readInto(this.getBYOBReader(), new ArrayBuffer(size), 0, size);\n }\n}\n/** @ignore */\nasync function readInto(reader, buffer, offset, size) {\n if (offset >= size) {\n return { done: false, value: new Uint8Array(buffer, 0, size) };\n }\n const { done, value } = await reader.read(new Uint8Array(buffer, offset, size - offset));\n if (((offset += value.byteLength) < size) && !done) {\n return await readInto(reader, value.buffer, offset, size);\n }\n return { done, value: new Uint8Array(value.buffer, 0, offset) };\n}\n/** @ignore */\nconst onEvent = (stream, event) => {\n let handler = (_) => resolve([event, _]);\n let resolve;\n return [event, handler, new Promise((r) => (resolve = r) && stream['once'](event, handler))];\n};\n/** @ignore */\nasync function* fromNodeStream(stream) {\n let events = [];\n let event = 'error';\n let done = false, err = null;\n let cmd, size, bufferLength = 0;\n let buffers = [], buffer;\n function byteRange() {\n if (cmd === 'peek') {\n return joinUint8Arrays(buffers, size)[0];\n }\n [buffer, buffers, bufferLength] = joinUint8Arrays(buffers, size);\n return buffer;\n }\n // Yield so the caller can inject the read command before we\n // add the listener for the source stream's 'readable' event.\n ({ cmd, size } = yield null);\n // ignore stdin if it's a TTY\n if (stream['isTTY']) {\n return yield new Uint8Array(0);\n }\n try {\n // initialize the stream event handlers\n events[0] = onEvent(stream, 'end');\n events[1] = onEvent(stream, 'error');\n do {\n events[2] = onEvent(stream, 'readable');\n // wait on the first message event from the stream\n [event, err] = await Promise.race(events.map((x) => x[2]));\n // if the stream emitted an Error, rethrow it\n if (event === 'error') {\n break;\n }\n if (!(done = event === 'end')) {\n // If the size is NaN, request to read everything in the stream's internal buffer\n if (!isFinite(size - bufferLength)) {\n buffer = toUint8Array(stream['read'](undefined));\n }\n else {\n buffer = toUint8Array(stream['read'](size - bufferLength));\n // If the byteLength is 0, then the requested amount is more than the stream has\n // in its internal buffer. In this case the stream needs a \"kick\" to tell it to\n // continue emitting readable events, so request to read everything the stream\n // has in its internal buffer right now.\n if (buffer.byteLength < (size - bufferLength)) {\n buffer = toUint8Array(stream['read'](undefined));\n }\n }\n // if chunk is not null or empty, push it onto the queue\n if (buffer.byteLength > 0) {\n buffers.push(buffer);\n bufferLength += buffer.byteLength;\n }\n }\n // If we have enough bytes in our buffer, yield chunks until we don't\n if (done || size <= bufferLength) {\n do {\n ({ cmd, size } = yield byteRange());\n } while (size < bufferLength);\n }\n } while (!done);\n }\n finally {\n await cleanup(events, event === 'error' ? err : null);\n }\n function cleanup(events, err) {\n buffer = buffers = null;\n return new Promise(async (resolve, reject) => {\n for (const [evt, fn] of events) {\n stream['off'](evt, fn);\n }\n try {\n // Some stream implementations don't call the destroy callback,\n // because it's really a node-internal API. Just calling `destroy`\n // here should be enough to conform to the ReadableStream contract\n const destroy = stream['destroy'];\n destroy && destroy.call(stream, err);\n err = undefined;\n }\n catch (e) {\n err = e || err;\n }\n finally {\n err != null ? reject(err) : resolve();\n }\n });\n }\n}\n\n//# sourceMappingURL=adapters.mjs.map\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\nexport class AbstractVector {\n}\nexport { AbstractVector as Vector };\n\n//# sourceMappingURL=vector.mjs.map\n","/* tslint:disable:class-name */\n/**\n * @enum {number}\n */\nexport var org;\n(function (org) {\n var apache;\n (function (apache) {\n var arrow;\n (function (arrow) {\n var flatbuf;\n (function (flatbuf) {\n let MetadataVersion;\n (function (MetadataVersion) {\n /**\n * 0.1.0\n */\n MetadataVersion[MetadataVersion[\"V1\"] = 0] = \"V1\";\n /**\n * 0.2.0\n */\n MetadataVersion[MetadataVersion[\"V2\"] = 1] = \"V2\";\n /**\n * 0.3.0 -> 0.7.1\n */\n MetadataVersion[MetadataVersion[\"V3\"] = 2] = \"V3\";\n /**\n * >= 0.8.0\n */\n MetadataVersion[MetadataVersion[\"V4\"] = 3] = \"V4\";\n })(MetadataVersion = flatbuf.MetadataVersion || (flatbuf.MetadataVersion = {}));\n })(flatbuf = arrow.flatbuf || (arrow.flatbuf = {}));\n })(arrow = apache.arrow || (apache.arrow = {}));\n })(apache = org.apache || (org.apache = {}));\n})(org || (org = {}));\n/**\n * @enum {number}\n */\n(function (org) {\n var apache;\n (function (apache) {\n var arrow;\n (function (arrow) {\n var flatbuf;\n (function (flatbuf) {\n let UnionMode;\n (function (UnionMode) {\n UnionMode[UnionMode[\"Sparse\"] = 0] = \"Sparse\";\n UnionMode[UnionMode[\"Dense\"] = 1] = \"Dense\";\n })(UnionMode = flatbuf.UnionMode || (flatbuf.UnionMode = {}));\n })(flatbuf = arrow.flatbuf || (arrow.flatbuf = {}));\n })(arrow = apache.arrow || (apache.arrow = {}));\n })(apache = org.apache || (org.apache = {}));\n})(org || (org = {}));\n/**\n * @enum {number}\n */\n(function (org) {\n var apache;\n (function (apache) {\n var arrow;\n (function (arrow) {\n var flatbuf;\n (function (flatbuf) {\n let Precision;\n (function (Precision) {\n Precision[Precision[\"HALF\"] = 0] = \"HALF\";\n Precision[Precision[\"SINGLE\"] = 1] = \"SINGLE\";\n Precision[Precision[\"DOUBLE\"] = 2] = \"DOUBLE\";\n })(Precision = flatbuf.Precision || (flatbuf.Precision = {}));\n })(flatbuf = arrow.flatbuf || (arrow.flatbuf = {}));\n })(arrow = apache.arrow || (apache.arrow = {}));\n })(apache = org.apache || (org.apache = {}));\n})(org || (org = {}));\n/**\n * @enum {number}\n */\n(function (org) {\n var apache;\n (function (apache) {\n var arrow;\n (function (arrow) {\n var flatbuf;\n (function (flatbuf) {\n let DateUnit;\n (function (DateUnit) {\n DateUnit[DateUnit[\"DAY\"] = 0] = \"DAY\";\n DateUnit[DateUnit[\"MILLISECOND\"] = 1] = \"MILLISECOND\";\n })(DateUnit = flatbuf.DateUnit || (flatbuf.DateUnit = {}));\n })(flatbuf = arrow.flatbuf || (arrow.flatbuf = {}));\n })(arrow = apache.arrow || (apache.arrow = {}));\n })(apache = org.apache || (org.apache = {}));\n})(org || (org = {}));\n/**\n * @enum {number}\n */\n(function (org) {\n var apache;\n (function (apache) {\n var arrow;\n (function (arrow) {\n var flatbuf;\n (function (flatbuf) {\n let TimeUnit;\n (function (TimeUnit) {\n TimeUnit[TimeUnit[\"SECOND\"] = 0] = \"SECOND\";\n TimeUnit[TimeUnit[\"MILLISECOND\"] = 1] = \"MILLISECOND\";\n TimeUnit[TimeUnit[\"MICROSECOND\"] = 2] = \"MICROSECOND\";\n TimeUnit[TimeUnit[\"NANOSECOND\"] = 3] = \"NANOSECOND\";\n })(TimeUnit = flatbuf.TimeUnit || (flatbuf.TimeUnit = {}));\n })(flatbuf = arrow.flatbuf || (arrow.flatbuf = {}));\n })(arrow = apache.arrow || (apache.arrow = {}));\n })(apache = org.apache || (org.apache = {}));\n})(org || (org = {}));\n/**\n * @enum {number}\n */\n(function (org) {\n var apache;\n (function (apache) {\n var arrow;\n (function (arrow) {\n var flatbuf;\n (function (flatbuf) {\n let IntervalUnit;\n (function (IntervalUnit) {\n IntervalUnit[IntervalUnit[\"YEAR_MONTH\"] = 0] = \"YEAR_MONTH\";\n IntervalUnit[IntervalUnit[\"DAY_TIME\"] = 1] = \"DAY_TIME\";\n })(IntervalUnit = flatbuf.IntervalUnit || (flatbuf.IntervalUnit = {}));\n })(flatbuf = arrow.flatbuf || (arrow.flatbuf = {}));\n })(arrow = apache.arrow || (apache.arrow = {}));\n })(apache = org.apache || (org.apache = {}));\n})(org || (org = {}));\n/**\n * ----------------------------------------------------------------------\n * Top-level Type value, enabling extensible type-specific metadata. We can\n * add new logical types to Type without breaking backwards compatibility\n *\n * @enum {number}\n */\n(function (org) {\n var apache;\n (function (apache) {\n var arrow;\n (function (arrow) {\n var flatbuf;\n (function (flatbuf) {\n let Type;\n (function (Type) {\n Type[Type[\"NONE\"] = 0] = \"NONE\";\n Type[Type[\"Null\"] = 1] = \"Null\";\n Type[Type[\"Int\"] = 2] = \"Int\";\n Type[Type[\"FloatingPoint\"] = 3] = \"FloatingPoint\";\n Type[Type[\"Binary\"] = 4] = \"Binary\";\n Type[Type[\"Utf8\"] = 5] = \"Utf8\";\n Type[Type[\"Bool\"] = 6] = \"Bool\";\n Type[Type[\"Decimal\"] = 7] = \"Decimal\";\n Type[Type[\"Date\"] = 8] = \"Date\";\n Type[Type[\"Time\"] = 9] = \"Time\";\n Type[Type[\"Timestamp\"] = 10] = \"Timestamp\";\n Type[Type[\"Interval\"] = 11] = \"Interval\";\n Type[Type[\"List\"] = 12] = \"List\";\n Type[Type[\"Struct_\"] = 13] = \"Struct_\";\n Type[Type[\"Union\"] = 14] = \"Union\";\n Type[Type[\"FixedSizeBinary\"] = 15] = \"FixedSizeBinary\";\n Type[Type[\"FixedSizeList\"] = 16] = \"FixedSizeList\";\n Type[Type[\"Map\"] = 17] = \"Map\";\n Type[Type[\"Duration\"] = 18] = \"Duration\";\n Type[Type[\"LargeBinary\"] = 19] = \"LargeBinary\";\n Type[Type[\"LargeUtf8\"] = 20] = \"LargeUtf8\";\n Type[Type[\"LargeList\"] = 21] = \"LargeList\";\n })(Type = flatbuf.Type || (flatbuf.Type = {}));\n })(flatbuf = arrow.flatbuf || (arrow.flatbuf = {}));\n })(arrow = apache.arrow || (apache.arrow = {}));\n })(apache = org.apache || (org.apache = {}));\n})(org || (org = {}));\n/**\n * ----------------------------------------------------------------------\n * Endianness of the platform producing the data\n *\n * @enum {number}\n */\n(function (org) {\n var apache;\n (function (apache) {\n var arrow;\n (function (arrow) {\n var flatbuf;\n (function (flatbuf) {\n let Endianness;\n (function (Endianness) {\n Endianness[Endianness[\"Little\"] = 0] = \"Little\";\n Endianness[Endianness[\"Big\"] = 1] = \"Big\";\n })(Endianness = flatbuf.Endianness || (flatbuf.Endianness = {}));\n })(flatbuf = arrow.flatbuf || (arrow.flatbuf = {}));\n })(arrow = apache.arrow || (apache.arrow = {}));\n })(apache = org.apache || (org.apache = {}));\n})(org || (org = {}));\n/**\n * These are stored in the flatbuffer in the Type union below\n *\n * @constructor\n */\n(function (org) {\n var apache;\n (function (apache) {\n var arrow;\n (function (arrow) {\n var flatbuf;\n (function (flatbuf) {\n class Null {\n constructor() {\n this.bb = null;\n this.bb_pos = 0;\n }\n /**\n * @param number i\n * @param flatbuffers.ByteBuffer bb\n * @returns Null\n */\n __init(i, bb) {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n }\n /**\n * @param flatbuffers.ByteBuffer bb\n * @param Null= obj\n * @returns Null\n */\n static getRootAsNull(bb, obj) {\n return (obj || new Null).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n }\n /**\n * @param flatbuffers.Builder builder\n */\n static startNull(builder) {\n builder.startObject(0);\n }\n /**\n * @param flatbuffers.Builder builder\n * @returns flatbuffers.Offset\n */\n static endNull(builder) {\n let offset = builder.endObject();\n return offset;\n }\n static createNull(builder) {\n Null.startNull(builder);\n return Null.endNull(builder);\n }\n }\n flatbuf.Null = Null;\n })(flatbuf = arrow.flatbuf || (arrow.flatbuf = {}));\n })(arrow = apache.arrow || (apache.arrow = {}));\n })(apache = org.apache || (org.apache = {}));\n})(org || (org = {}));\n/**\n * A Struct_ in the flatbuffer metadata is the same as an Arrow Struct\n * (according to the physical memory layout). We used Struct_ here as\n * Struct is a reserved word in Flatbuffers\n *\n * @constructor\n */\n(function (org) {\n var apache;\n (function (apache) {\n var arrow;\n (function (arrow) {\n var flatbuf;\n (function (flatbuf) {\n class Struct_ {\n constructor() {\n this.bb = null;\n this.bb_pos = 0;\n }\n /**\n * @param number i\n * @param flatbuffers.ByteBuffer bb\n * @returns Struct_\n */\n __init(i, bb) {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n }\n /**\n * @param flatbuffers.ByteBuffer bb\n * @param Struct_= obj\n * @returns Struct_\n */\n static getRootAsStruct_(bb, obj) {\n return (obj || new Struct_).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n }\n /**\n * @param flatbuffers.Builder builder\n */\n static startStruct_(builder) {\n builder.startObject(0);\n }\n /**\n * @param flatbuffers.Builder builder\n * @returns flatbuffers.Offset\n */\n static endStruct_(builder) {\n let offset = builder.endObject();\n return offset;\n }\n static createStruct_(builder) {\n Struct_.startStruct_(builder);\n return Struct_.endStruct_(builder);\n }\n }\n flatbuf.Struct_ = Struct_;\n })(flatbuf = arrow.flatbuf || (arrow.flatbuf = {}));\n })(arrow = apache.arrow || (apache.arrow = {}));\n })(apache = org.apache || (org.apache = {}));\n})(org || (org = {}));\n/**\n * @constructor\n */\n(function (org) {\n var apache;\n (function (apache) {\n var arrow;\n (function (arrow) {\n var flatbuf;\n (function (flatbuf) {\n class List {\n constructor() {\n this.bb = null;\n this.bb_pos = 0;\n }\n /**\n * @param number i\n * @param flatbuffers.ByteBuffer bb\n * @returns List\n */\n __init(i, bb) {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n }\n /**\n * @param flatbuffers.ByteBuffer bb\n * @param List= obj\n * @returns List\n */\n static getRootAsList(bb, obj) {\n return (obj || new List).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n }\n /**\n * @param flatbuffers.Builder builder\n */\n static startList(builder) {\n builder.startObject(0);\n }\n /**\n * @param flatbuffers.Builder builder\n * @returns flatbuffers.Offset\n */\n static endList(builder) {\n let offset = builder.endObject();\n return offset;\n }\n static createList(builder) {\n List.startList(builder);\n return List.endList(builder);\n }\n }\n flatbuf.List = List;\n })(flatbuf = arrow.flatbuf || (arrow.flatbuf = {}));\n })(arrow = apache.arrow || (apache.arrow = {}));\n })(apache = org.apache || (org.apache = {}));\n})(org || (org = {}));\n/**\n * Same as List, but with 64-bit offsets, allowing to represent\n * extremely large data values.\n *\n * @constructor\n */\n(function (org) {\n var apache;\n (function (apache) {\n var arrow;\n (function (arrow) {\n var flatbuf;\n (function (flatbuf) {\n class LargeList {\n constructor() {\n this.bb = null;\n this.bb_pos = 0;\n }\n /**\n * @param number i\n * @param flatbuffers.ByteBuffer bb\n * @returns LargeList\n */\n __init(i, bb) {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n }\n /**\n * @param flatbuffers.ByteBuffer bb\n * @param LargeList= obj\n * @returns LargeList\n */\n static getRootAsLargeList(bb, obj) {\n return (obj || new LargeList).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n }\n /**\n * @param flatbuffers.Builder builder\n */\n static startLargeList(builder) {\n builder.startObject(0);\n }\n /**\n * @param flatbuffers.Builder builder\n * @returns flatbuffers.Offset\n */\n static endLargeList(builder) {\n let offset = builder.endObject();\n return offset;\n }\n static createLargeList(builder) {\n LargeList.startLargeList(builder);\n return LargeList.endLargeList(builder);\n }\n }\n flatbuf.LargeList = LargeList;\n })(flatbuf = arrow.flatbuf || (arrow.flatbuf = {}));\n })(arrow = apache.arrow || (apache.arrow = {}));\n })(apache = org.apache || (org.apache = {}));\n})(org || (org = {}));\n/**\n * @constructor\n */\n(function (org) {\n var apache;\n (function (apache) {\n var arrow;\n (function (arrow) {\n var flatbuf;\n (function (flatbuf) {\n class FixedSizeList {\n constructor() {\n this.bb = null;\n this.bb_pos = 0;\n }\n /**\n * @param number i\n * @param flatbuffers.ByteBuffer bb\n * @returns FixedSizeList\n */\n __init(i, bb) {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n }\n /**\n * @param flatbuffers.ByteBuffer bb\n * @param FixedSizeList= obj\n * @returns FixedSizeList\n */\n static getRootAsFixedSizeList(bb, obj) {\n return (obj || new FixedSizeList).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n }\n /**\n * Number of list items per value\n *\n * @returns number\n */\n listSize() {\n let offset = this.bb.__offset(this.bb_pos, 4);\n return offset ? this.bb.readInt32(this.bb_pos + offset) : 0;\n }\n /**\n * @param flatbuffers.Builder builder\n */\n static startFixedSizeList(builder) {\n builder.startObject(1);\n }\n /**\n * @param flatbuffers.Builder builder\n * @param number listSize\n */\n static addListSize(builder, listSize) {\n builder.addFieldInt32(0, listSize, 0);\n }\n /**\n * @param flatbuffers.Builder builder\n * @returns flatbuffers.Offset\n */\n static endFixedSizeList(builder) {\n let offset = builder.endObject();\n return offset;\n }\n static createFixedSizeList(builder, listSize) {\n FixedSizeList.startFixedSizeList(builder);\n FixedSizeList.addListSize(builder, listSize);\n return FixedSizeList.endFixedSizeList(builder);\n }\n }\n flatbuf.FixedSizeList = FixedSizeList;\n })(flatbuf = arrow.flatbuf || (arrow.flatbuf = {}));\n })(arrow = apache.arrow || (apache.arrow = {}));\n })(apache = org.apache || (org.apache = {}));\n})(org || (org = {}));\n/**\n * A Map is a logical nested type that is represented as\n *\n * List>\n *\n * In this layout, the keys and values are each respectively contiguous. We do\n * not constrain the key and value types, so the application is responsible\n * for ensuring that the keys are hashable and unique. Whether the keys are sorted\n * may be set in the metadata for this field\n *\n * In a Field with Map type, the Field has a child Struct field, which then\n * has two children: key type and the second the value type. The names of the\n * child fields may be respectively \"entry\", \"key\", and \"value\", but this is\n * not enforced\n *\n * Map\n * - child[0] entry: Struct\n * - child[0] key: K\n * - child[1] value: V\n *\n * Neither the \"entry\" field nor the \"key\" field may be nullable.\n *\n * The metadata is structured so that Arrow systems without special handling\n * for Map can make Map an alias for List. The \"layout\" attribute for the Map\n * field must have the same contents as a List.\n *\n * @constructor\n */\n(function (org) {\n var apache;\n (function (apache) {\n var arrow;\n (function (arrow) {\n var flatbuf;\n (function (flatbuf) {\n class Map {\n constructor() {\n this.bb = null;\n this.bb_pos = 0;\n }\n /**\n * @param number i\n * @param flatbuffers.ByteBuffer bb\n * @returns Map\n */\n __init(i, bb) {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n }\n /**\n * @param flatbuffers.ByteBuffer bb\n * @param Map= obj\n * @returns Map\n */\n static getRootAsMap(bb, obj) {\n return (obj || new Map).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n }\n /**\n * Set to true if the keys within each value are sorted\n *\n * @returns boolean\n */\n keysSorted() {\n let offset = this.bb.__offset(this.bb_pos, 4);\n return offset ? !!this.bb.readInt8(this.bb_pos + offset) : false;\n }\n /**\n * @param flatbuffers.Builder builder\n */\n static startMap(builder) {\n builder.startObject(1);\n }\n /**\n * @param flatbuffers.Builder builder\n * @param boolean keysSorted\n */\n static addKeysSorted(builder, keysSorted) {\n builder.addFieldInt8(0, +keysSorted, +false);\n }\n /**\n * @param flatbuffers.Builder builder\n * @returns flatbuffers.Offset\n */\n static endMap(builder) {\n let offset = builder.endObject();\n return offset;\n }\n static createMap(builder, keysSorted) {\n Map.startMap(builder);\n Map.addKeysSorted(builder, keysSorted);\n return Map.endMap(builder);\n }\n }\n flatbuf.Map = Map;\n })(flatbuf = arrow.flatbuf || (arrow.flatbuf = {}));\n })(arrow = apache.arrow || (apache.arrow = {}));\n })(apache = org.apache || (org.apache = {}));\n})(org || (org = {}));\n/**\n * A union is a complex type with children in Field\n * By default ids in the type vector refer to the offsets in the children\n * optionally typeIds provides an indirection between the child offset and the type id\n * for each child typeIds[offset] is the id used in the type vector\n *\n * @constructor\n */\n(function (org) {\n var apache;\n (function (apache) {\n var arrow;\n (function (arrow) {\n var flatbuf;\n (function (flatbuf) {\n class Union {\n constructor() {\n this.bb = null;\n this.bb_pos = 0;\n }\n /**\n * @param number i\n * @param flatbuffers.ByteBuffer bb\n * @returns Union\n */\n __init(i, bb) {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n }\n /**\n * @param flatbuffers.ByteBuffer bb\n * @param Union= obj\n * @returns Union\n */\n static getRootAsUnion(bb, obj) {\n return (obj || new Union).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n }\n /**\n * @returns org.apache.arrow.flatbuf.UnionMode\n */\n mode() {\n let offset = this.bb.__offset(this.bb_pos, 4);\n return offset ? /** */ (this.bb.readInt16(this.bb_pos + offset)) : org.apache.arrow.flatbuf.UnionMode.Sparse;\n }\n /**\n * @param number index\n * @returns number\n */\n typeIds(index) {\n let offset = this.bb.__offset(this.bb_pos, 6);\n return offset ? this.bb.readInt32(this.bb.__vector(this.bb_pos + offset) + index * 4) : 0;\n }\n /**\n * @returns number\n */\n typeIdsLength() {\n let offset = this.bb.__offset(this.bb_pos, 6);\n return offset ? this.bb.__vector_len(this.bb_pos + offset) : 0;\n }\n /**\n * @returns Int32Array\n */\n typeIdsArray() {\n let offset = this.bb.__offset(this.bb_pos, 6);\n return offset ? new Int32Array(this.bb.bytes().buffer, this.bb.bytes().byteOffset + this.bb.__vector(this.bb_pos + offset), this.bb.__vector_len(this.bb_pos + offset)) : null;\n }\n /**\n * @param flatbuffers.Builder builder\n */\n static startUnion(builder) {\n builder.startObject(2);\n }\n /**\n * @param flatbuffers.Builder builder\n * @param org.apache.arrow.flatbuf.UnionMode mode\n */\n static addMode(builder, mode) {\n builder.addFieldInt16(0, mode, org.apache.arrow.flatbuf.UnionMode.Sparse);\n }\n /**\n * @param flatbuffers.Builder builder\n * @param flatbuffers.Offset typeIdsOffset\n */\n static addTypeIds(builder, typeIdsOffset) {\n builder.addFieldOffset(1, typeIdsOffset, 0);\n }\n /**\n * @param flatbuffers.Builder builder\n * @param Array. data\n * @returns flatbuffers.Offset\n */\n static createTypeIdsVector(builder, data) {\n builder.startVector(4, data.length, 4);\n for (let i = data.length - 1; i >= 0; i--) {\n builder.addInt32(data[i]);\n }\n return builder.endVector();\n }\n /**\n * @param flatbuffers.Builder builder\n * @param number numElems\n */\n static startTypeIdsVector(builder, numElems) {\n builder.startVector(4, numElems, 4);\n }\n /**\n * @param flatbuffers.Builder builder\n * @returns flatbuffers.Offset\n */\n static endUnion(builder) {\n let offset = builder.endObject();\n return offset;\n }\n static createUnion(builder, mode, typeIdsOffset) {\n Union.startUnion(builder);\n Union.addMode(builder, mode);\n Union.addTypeIds(builder, typeIdsOffset);\n return Union.endUnion(builder);\n }\n }\n flatbuf.Union = Union;\n })(flatbuf = arrow.flatbuf || (arrow.flatbuf = {}));\n })(arrow = apache.arrow || (apache.arrow = {}));\n })(apache = org.apache || (org.apache = {}));\n})(org || (org = {}));\n/**\n * @constructor\n */\n(function (org) {\n var apache;\n (function (apache) {\n var arrow;\n (function (arrow) {\n var flatbuf;\n (function (flatbuf) {\n class Int {\n constructor() {\n this.bb = null;\n this.bb_pos = 0;\n }\n /**\n * @param number i\n * @param flatbuffers.ByteBuffer bb\n * @returns Int\n */\n __init(i, bb) {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n }\n /**\n * @param flatbuffers.ByteBuffer bb\n * @param Int= obj\n * @returns Int\n */\n static getRootAsInt(bb, obj) {\n return (obj || new Int).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n }\n /**\n * @returns number\n */\n bitWidth() {\n let offset = this.bb.__offset(this.bb_pos, 4);\n return offset ? this.bb.readInt32(this.bb_pos + offset) : 0;\n }\n /**\n * @returns boolean\n */\n isSigned() {\n let offset = this.bb.__offset(this.bb_pos, 6);\n return offset ? !!this.bb.readInt8(this.bb_pos + offset) : false;\n }\n /**\n * @param flatbuffers.Builder builder\n */\n static startInt(builder) {\n builder.startObject(2);\n }\n /**\n * @param flatbuffers.Builder builder\n * @param number bitWidth\n */\n static addBitWidth(builder, bitWidth) {\n builder.addFieldInt32(0, bitWidth, 0);\n }\n /**\n * @param flatbuffers.Builder builder\n * @param boolean isSigned\n */\n static addIsSigned(builder, isSigned) {\n builder.addFieldInt8(1, +isSigned, +false);\n }\n /**\n * @param flatbuffers.Builder builder\n * @returns flatbuffers.Offset\n */\n static endInt(builder) {\n let offset = builder.endObject();\n return offset;\n }\n static createInt(builder, bitWidth, isSigned) {\n Int.startInt(builder);\n Int.addBitWidth(builder, bitWidth);\n Int.addIsSigned(builder, isSigned);\n return Int.endInt(builder);\n }\n }\n flatbuf.Int = Int;\n })(flatbuf = arrow.flatbuf || (arrow.flatbuf = {}));\n })(arrow = apache.arrow || (apache.arrow = {}));\n })(apache = org.apache || (org.apache = {}));\n})(org || (org = {}));\n/**\n * @constructor\n */\n(function (org) {\n var apache;\n (function (apache) {\n var arrow;\n (function (arrow) {\n var flatbuf;\n (function (flatbuf) {\n class FloatingPoint {\n constructor() {\n this.bb = null;\n this.bb_pos = 0;\n }\n /**\n * @param number i\n * @param flatbuffers.ByteBuffer bb\n * @returns FloatingPoint\n */\n __init(i, bb) {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n }\n /**\n * @param flatbuffers.ByteBuffer bb\n * @param FloatingPoint= obj\n * @returns FloatingPoint\n */\n static getRootAsFloatingPoint(bb, obj) {\n return (obj || new FloatingPoint).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n }\n /**\n * @returns org.apache.arrow.flatbuf.Precision\n */\n precision() {\n let offset = this.bb.__offset(this.bb_pos, 4);\n return offset ? /** */ (this.bb.readInt16(this.bb_pos + offset)) : org.apache.arrow.flatbuf.Precision.HALF;\n }\n /**\n * @param flatbuffers.Builder builder\n */\n static startFloatingPoint(builder) {\n builder.startObject(1);\n }\n /**\n * @param flatbuffers.Builder builder\n * @param org.apache.arrow.flatbuf.Precision precision\n */\n static addPrecision(builder, precision) {\n builder.addFieldInt16(0, precision, org.apache.arrow.flatbuf.Precision.HALF);\n }\n /**\n * @param flatbuffers.Builder builder\n * @returns flatbuffers.Offset\n */\n static endFloatingPoint(builder) {\n let offset = builder.endObject();\n return offset;\n }\n static createFloatingPoint(builder, precision) {\n FloatingPoint.startFloatingPoint(builder);\n FloatingPoint.addPrecision(builder, precision);\n return FloatingPoint.endFloatingPoint(builder);\n }\n }\n flatbuf.FloatingPoint = FloatingPoint;\n })(flatbuf = arrow.flatbuf || (arrow.flatbuf = {}));\n })(arrow = apache.arrow || (apache.arrow = {}));\n })(apache = org.apache || (org.apache = {}));\n})(org || (org = {}));\n/**\n * Unicode with UTF-8 encoding\n *\n * @constructor\n */\n(function (org) {\n var apache;\n (function (apache) {\n var arrow;\n (function (arrow) {\n var flatbuf;\n (function (flatbuf) {\n class Utf8 {\n constructor() {\n this.bb = null;\n this.bb_pos = 0;\n }\n /**\n * @param number i\n * @param flatbuffers.ByteBuffer bb\n * @returns Utf8\n */\n __init(i, bb) {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n }\n /**\n * @param flatbuffers.ByteBuffer bb\n * @param Utf8= obj\n * @returns Utf8\n */\n static getRootAsUtf8(bb, obj) {\n return (obj || new Utf8).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n }\n /**\n * @param flatbuffers.Builder builder\n */\n static startUtf8(builder) {\n builder.startObject(0);\n }\n /**\n * @param flatbuffers.Builder builder\n * @returns flatbuffers.Offset\n */\n static endUtf8(builder) {\n let offset = builder.endObject();\n return offset;\n }\n static createUtf8(builder) {\n Utf8.startUtf8(builder);\n return Utf8.endUtf8(builder);\n }\n }\n flatbuf.Utf8 = Utf8;\n })(flatbuf = arrow.flatbuf || (arrow.flatbuf = {}));\n })(arrow = apache.arrow || (apache.arrow = {}));\n })(apache = org.apache || (org.apache = {}));\n})(org || (org = {}));\n/**\n * Opaque binary data\n *\n * @constructor\n */\n(function (org) {\n var apache;\n (function (apache) {\n var arrow;\n (function (arrow) {\n var flatbuf;\n (function (flatbuf) {\n class Binary {\n constructor() {\n this.bb = null;\n this.bb_pos = 0;\n }\n /**\n * @param number i\n * @param flatbuffers.ByteBuffer bb\n * @returns Binary\n */\n __init(i, bb) {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n }\n /**\n * @param flatbuffers.ByteBuffer bb\n * @param Binary= obj\n * @returns Binary\n */\n static getRootAsBinary(bb, obj) {\n return (obj || new Binary).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n }\n /**\n * @param flatbuffers.Builder builder\n */\n static startBinary(builder) {\n builder.startObject(0);\n }\n /**\n * @param flatbuffers.Builder builder\n * @returns flatbuffers.Offset\n */\n static endBinary(builder) {\n let offset = builder.endObject();\n return offset;\n }\n static createBinary(builder) {\n Binary.startBinary(builder);\n return Binary.endBinary(builder);\n }\n }\n flatbuf.Binary = Binary;\n })(flatbuf = arrow.flatbuf || (arrow.flatbuf = {}));\n })(arrow = apache.arrow || (apache.arrow = {}));\n })(apache = org.apache || (org.apache = {}));\n})(org || (org = {}));\n/**\n * Same as Utf8, but with 64-bit offsets, allowing to represent\n * extremely large data values.\n *\n * @constructor\n */\n(function (org) {\n var apache;\n (function (apache) {\n var arrow;\n (function (arrow) {\n var flatbuf;\n (function (flatbuf) {\n class LargeUtf8 {\n constructor() {\n this.bb = null;\n this.bb_pos = 0;\n }\n /**\n * @param number i\n * @param flatbuffers.ByteBuffer bb\n * @returns LargeUtf8\n */\n __init(i, bb) {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n }\n /**\n * @param flatbuffers.ByteBuffer bb\n * @param LargeUtf8= obj\n * @returns LargeUtf8\n */\n static getRootAsLargeUtf8(bb, obj) {\n return (obj || new LargeUtf8).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n }\n /**\n * @param flatbuffers.Builder builder\n */\n static startLargeUtf8(builder) {\n builder.startObject(0);\n }\n /**\n * @param flatbuffers.Builder builder\n * @returns flatbuffers.Offset\n */\n static endLargeUtf8(builder) {\n let offset = builder.endObject();\n return offset;\n }\n static createLargeUtf8(builder) {\n LargeUtf8.startLargeUtf8(builder);\n return LargeUtf8.endLargeUtf8(builder);\n }\n }\n flatbuf.LargeUtf8 = LargeUtf8;\n })(flatbuf = arrow.flatbuf || (arrow.flatbuf = {}));\n })(arrow = apache.arrow || (apache.arrow = {}));\n })(apache = org.apache || (org.apache = {}));\n})(org || (org = {}));\n/**\n * Same as Binary, but with 64-bit offsets, allowing to represent\n * extremely large data values.\n *\n * @constructor\n */\n(function (org) {\n var apache;\n (function (apache) {\n var arrow;\n (function (arrow) {\n var flatbuf;\n (function (flatbuf) {\n class LargeBinary {\n constructor() {\n this.bb = null;\n this.bb_pos = 0;\n }\n /**\n * @param number i\n * @param flatbuffers.ByteBuffer bb\n * @returns LargeBinary\n */\n __init(i, bb) {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n }\n /**\n * @param flatbuffers.ByteBuffer bb\n * @param LargeBinary= obj\n * @returns LargeBinary\n */\n static getRootAsLargeBinary(bb, obj) {\n return (obj || new LargeBinary).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n }\n /**\n * @param flatbuffers.Builder builder\n */\n static startLargeBinary(builder) {\n builder.startObject(0);\n }\n /**\n * @param flatbuffers.Builder builder\n * @returns flatbuffers.Offset\n */\n static endLargeBinary(builder) {\n let offset = builder.endObject();\n return offset;\n }\n static createLargeBinary(builder) {\n LargeBinary.startLargeBinary(builder);\n return LargeBinary.endLargeBinary(builder);\n }\n }\n flatbuf.LargeBinary = LargeBinary;\n })(flatbuf = arrow.flatbuf || (arrow.flatbuf = {}));\n })(arrow = apache.arrow || (apache.arrow = {}));\n })(apache = org.apache || (org.apache = {}));\n})(org || (org = {}));\n/**\n * @constructor\n */\n(function (org) {\n var apache;\n (function (apache) {\n var arrow;\n (function (arrow) {\n var flatbuf;\n (function (flatbuf) {\n class FixedSizeBinary {\n constructor() {\n this.bb = null;\n this.bb_pos = 0;\n }\n /**\n * @param number i\n * @param flatbuffers.ByteBuffer bb\n * @returns FixedSizeBinary\n */\n __init(i, bb) {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n }\n /**\n * @param flatbuffers.ByteBuffer bb\n * @param FixedSizeBinary= obj\n * @returns FixedSizeBinary\n */\n static getRootAsFixedSizeBinary(bb, obj) {\n return (obj || new FixedSizeBinary).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n }\n /**\n * Number of bytes per value\n *\n * @returns number\n */\n byteWidth() {\n let offset = this.bb.__offset(this.bb_pos, 4);\n return offset ? this.bb.readInt32(this.bb_pos + offset) : 0;\n }\n /**\n * @param flatbuffers.Builder builder\n */\n static startFixedSizeBinary(builder) {\n builder.startObject(1);\n }\n /**\n * @param flatbuffers.Builder builder\n * @param number byteWidth\n */\n static addByteWidth(builder, byteWidth) {\n builder.addFieldInt32(0, byteWidth, 0);\n }\n /**\n * @param flatbuffers.Builder builder\n * @returns flatbuffers.Offset\n */\n static endFixedSizeBinary(builder) {\n let offset = builder.endObject();\n return offset;\n }\n static createFixedSizeBinary(builder, byteWidth) {\n FixedSizeBinary.startFixedSizeBinary(builder);\n FixedSizeBinary.addByteWidth(builder, byteWidth);\n return FixedSizeBinary.endFixedSizeBinary(builder);\n }\n }\n flatbuf.FixedSizeBinary = FixedSizeBinary;\n })(flatbuf = arrow.flatbuf || (arrow.flatbuf = {}));\n })(arrow = apache.arrow || (apache.arrow = {}));\n })(apache = org.apache || (org.apache = {}));\n})(org || (org = {}));\n/**\n * @constructor\n */\n(function (org) {\n var apache;\n (function (apache) {\n var arrow;\n (function (arrow) {\n var flatbuf;\n (function (flatbuf) {\n class Bool {\n constructor() {\n this.bb = null;\n this.bb_pos = 0;\n }\n /**\n * @param number i\n * @param flatbuffers.ByteBuffer bb\n * @returns Bool\n */\n __init(i, bb) {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n }\n /**\n * @param flatbuffers.ByteBuffer bb\n * @param Bool= obj\n * @returns Bool\n */\n static getRootAsBool(bb, obj) {\n return (obj || new Bool).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n }\n /**\n * @param flatbuffers.Builder builder\n */\n static startBool(builder) {\n builder.startObject(0);\n }\n /**\n * @param flatbuffers.Builder builder\n * @returns flatbuffers.Offset\n */\n static endBool(builder) {\n let offset = builder.endObject();\n return offset;\n }\n static createBool(builder) {\n Bool.startBool(builder);\n return Bool.endBool(builder);\n }\n }\n flatbuf.Bool = Bool;\n })(flatbuf = arrow.flatbuf || (arrow.flatbuf = {}));\n })(arrow = apache.arrow || (apache.arrow = {}));\n })(apache = org.apache || (org.apache = {}));\n})(org || (org = {}));\n/**\n * @constructor\n */\n(function (org) {\n var apache;\n (function (apache) {\n var arrow;\n (function (arrow) {\n var flatbuf;\n (function (flatbuf) {\n class Decimal {\n constructor() {\n this.bb = null;\n this.bb_pos = 0;\n }\n /**\n * @param number i\n * @param flatbuffers.ByteBuffer bb\n * @returns Decimal\n */\n __init(i, bb) {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n }\n /**\n * @param flatbuffers.ByteBuffer bb\n * @param Decimal= obj\n * @returns Decimal\n */\n static getRootAsDecimal(bb, obj) {\n return (obj || new Decimal).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n }\n /**\n * Total number of decimal digits\n *\n * @returns number\n */\n precision() {\n let offset = this.bb.__offset(this.bb_pos, 4);\n return offset ? this.bb.readInt32(this.bb_pos + offset) : 0;\n }\n /**\n * Number of digits after the decimal point \".\"\n *\n * @returns number\n */\n scale() {\n let offset = this.bb.__offset(this.bb_pos, 6);\n return offset ? this.bb.readInt32(this.bb_pos + offset) : 0;\n }\n /**\n * @param flatbuffers.Builder builder\n */\n static startDecimal(builder) {\n builder.startObject(2);\n }\n /**\n * @param flatbuffers.Builder builder\n * @param number precision\n */\n static addPrecision(builder, precision) {\n builder.addFieldInt32(0, precision, 0);\n }\n /**\n * @param flatbuffers.Builder builder\n * @param number scale\n */\n static addScale(builder, scale) {\n builder.addFieldInt32(1, scale, 0);\n }\n /**\n * @param flatbuffers.Builder builder\n * @returns flatbuffers.Offset\n */\n static endDecimal(builder) {\n let offset = builder.endObject();\n return offset;\n }\n static createDecimal(builder, precision, scale) {\n Decimal.startDecimal(builder);\n Decimal.addPrecision(builder, precision);\n Decimal.addScale(builder, scale);\n return Decimal.endDecimal(builder);\n }\n }\n flatbuf.Decimal = Decimal;\n })(flatbuf = arrow.flatbuf || (arrow.flatbuf = {}));\n })(arrow = apache.arrow || (apache.arrow = {}));\n })(apache = org.apache || (org.apache = {}));\n})(org || (org = {}));\n/**\n * Date is either a 32-bit or 64-bit type representing elapsed time since UNIX\n * epoch (1970-01-01), stored in either of two units:\n *\n * * Milliseconds (64 bits) indicating UNIX time elapsed since the epoch (no\n * leap seconds), where the values are evenly divisible by 86400000\n * * Days (32 bits) since the UNIX epoch\n *\n * @constructor\n */\n(function (org) {\n var apache;\n (function (apache) {\n var arrow;\n (function (arrow) {\n var flatbuf;\n (function (flatbuf) {\n class Date {\n constructor() {\n this.bb = null;\n this.bb_pos = 0;\n }\n /**\n * @param number i\n * @param flatbuffers.ByteBuffer bb\n * @returns Date\n */\n __init(i, bb) {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n }\n /**\n * @param flatbuffers.ByteBuffer bb\n * @param Date= obj\n * @returns Date\n */\n static getRootAsDate(bb, obj) {\n return (obj || new Date).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n }\n /**\n * @returns org.apache.arrow.flatbuf.DateUnit\n */\n unit() {\n let offset = this.bb.__offset(this.bb_pos, 4);\n return offset ? /** */ (this.bb.readInt16(this.bb_pos + offset)) : org.apache.arrow.flatbuf.DateUnit.MILLISECOND;\n }\n /**\n * @param flatbuffers.Builder builder\n */\n static startDate(builder) {\n builder.startObject(1);\n }\n /**\n * @param flatbuffers.Builder builder\n * @param org.apache.arrow.flatbuf.DateUnit unit\n */\n static addUnit(builder, unit) {\n builder.addFieldInt16(0, unit, org.apache.arrow.flatbuf.DateUnit.MILLISECOND);\n }\n /**\n * @param flatbuffers.Builder builder\n * @returns flatbuffers.Offset\n */\n static endDate(builder) {\n let offset = builder.endObject();\n return offset;\n }\n static createDate(builder, unit) {\n Date.startDate(builder);\n Date.addUnit(builder, unit);\n return Date.endDate(builder);\n }\n }\n flatbuf.Date = Date;\n })(flatbuf = arrow.flatbuf || (arrow.flatbuf = {}));\n })(arrow = apache.arrow || (apache.arrow = {}));\n })(apache = org.apache || (org.apache = {}));\n})(org || (org = {}));\n/**\n * Time type. The physical storage type depends on the unit\n * - SECOND and MILLISECOND: 32 bits\n * - MICROSECOND and NANOSECOND: 64 bits\n *\n * @constructor\n */\n(function (org) {\n var apache;\n (function (apache) {\n var arrow;\n (function (arrow) {\n var flatbuf;\n (function (flatbuf) {\n class Time {\n constructor() {\n this.bb = null;\n this.bb_pos = 0;\n }\n /**\n * @param number i\n * @param flatbuffers.ByteBuffer bb\n * @returns Time\n */\n __init(i, bb) {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n }\n /**\n * @param flatbuffers.ByteBuffer bb\n * @param Time= obj\n * @returns Time\n */\n static getRootAsTime(bb, obj) {\n return (obj || new Time).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n }\n /**\n * @returns org.apache.arrow.flatbuf.TimeUnit\n */\n unit() {\n let offset = this.bb.__offset(this.bb_pos, 4);\n return offset ? /** */ (this.bb.readInt16(this.bb_pos + offset)) : org.apache.arrow.flatbuf.TimeUnit.MILLISECOND;\n }\n /**\n * @returns number\n */\n bitWidth() {\n let offset = this.bb.__offset(this.bb_pos, 6);\n return offset ? this.bb.readInt32(this.bb_pos + offset) : 32;\n }\n /**\n * @param flatbuffers.Builder builder\n */\n static startTime(builder) {\n builder.startObject(2);\n }\n /**\n * @param flatbuffers.Builder builder\n * @param org.apache.arrow.flatbuf.TimeUnit unit\n */\n static addUnit(builder, unit) {\n builder.addFieldInt16(0, unit, org.apache.arrow.flatbuf.TimeUnit.MILLISECOND);\n }\n /**\n * @param flatbuffers.Builder builder\n * @param number bitWidth\n */\n static addBitWidth(builder, bitWidth) {\n builder.addFieldInt32(1, bitWidth, 32);\n }\n /**\n * @param flatbuffers.Builder builder\n * @returns flatbuffers.Offset\n */\n static endTime(builder) {\n let offset = builder.endObject();\n return offset;\n }\n static createTime(builder, unit, bitWidth) {\n Time.startTime(builder);\n Time.addUnit(builder, unit);\n Time.addBitWidth(builder, bitWidth);\n return Time.endTime(builder);\n }\n }\n flatbuf.Time = Time;\n })(flatbuf = arrow.flatbuf || (arrow.flatbuf = {}));\n })(arrow = apache.arrow || (apache.arrow = {}));\n })(apache = org.apache || (org.apache = {}));\n})(org || (org = {}));\n/**\n * Time elapsed from the Unix epoch, 00:00:00.000 on 1 January 1970, excluding\n * leap seconds, as a 64-bit integer. Note that UNIX time does not include\n * leap seconds.\n *\n * The Timestamp metadata supports both \"time zone naive\" and \"time zone\n * aware\" timestamps. Read about the timezone attribute for more detail\n *\n * @constructor\n */\n(function (org) {\n var apache;\n (function (apache) {\n var arrow;\n (function (arrow) {\n var flatbuf;\n (function (flatbuf) {\n class Timestamp {\n constructor() {\n this.bb = null;\n this.bb_pos = 0;\n }\n /**\n * @param number i\n * @param flatbuffers.ByteBuffer bb\n * @returns Timestamp\n */\n __init(i, bb) {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n }\n /**\n * @param flatbuffers.ByteBuffer bb\n * @param Timestamp= obj\n * @returns Timestamp\n */\n static getRootAsTimestamp(bb, obj) {\n return (obj || new Timestamp).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n }\n /**\n * @returns org.apache.arrow.flatbuf.TimeUnit\n */\n unit() {\n let offset = this.bb.__offset(this.bb_pos, 4);\n return offset ? /** */ (this.bb.readInt16(this.bb_pos + offset)) : org.apache.arrow.flatbuf.TimeUnit.SECOND;\n }\n timezone(optionalEncoding) {\n let offset = this.bb.__offset(this.bb_pos, 6);\n return offset ? this.bb.__string(this.bb_pos + offset, optionalEncoding) : null;\n }\n /**\n * @param flatbuffers.Builder builder\n */\n static startTimestamp(builder) {\n builder.startObject(2);\n }\n /**\n * @param flatbuffers.Builder builder\n * @param org.apache.arrow.flatbuf.TimeUnit unit\n */\n static addUnit(builder, unit) {\n builder.addFieldInt16(0, unit, org.apache.arrow.flatbuf.TimeUnit.SECOND);\n }\n /**\n * @param flatbuffers.Builder builder\n * @param flatbuffers.Offset timezoneOffset\n */\n static addTimezone(builder, timezoneOffset) {\n builder.addFieldOffset(1, timezoneOffset, 0);\n }\n /**\n * @param flatbuffers.Builder builder\n * @returns flatbuffers.Offset\n */\n static endTimestamp(builder) {\n let offset = builder.endObject();\n return offset;\n }\n static createTimestamp(builder, unit, timezoneOffset) {\n Timestamp.startTimestamp(builder);\n Timestamp.addUnit(builder, unit);\n Timestamp.addTimezone(builder, timezoneOffset);\n return Timestamp.endTimestamp(builder);\n }\n }\n flatbuf.Timestamp = Timestamp;\n })(flatbuf = arrow.flatbuf || (arrow.flatbuf = {}));\n })(arrow = apache.arrow || (apache.arrow = {}));\n })(apache = org.apache || (org.apache = {}));\n})(org || (org = {}));\n/**\n * @constructor\n */\n(function (org) {\n var apache;\n (function (apache) {\n var arrow;\n (function (arrow) {\n var flatbuf;\n (function (flatbuf) {\n class Interval {\n constructor() {\n this.bb = null;\n this.bb_pos = 0;\n }\n /**\n * @param number i\n * @param flatbuffers.ByteBuffer bb\n * @returns Interval\n */\n __init(i, bb) {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n }\n /**\n * @param flatbuffers.ByteBuffer bb\n * @param Interval= obj\n * @returns Interval\n */\n static getRootAsInterval(bb, obj) {\n return (obj || new Interval).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n }\n /**\n * @returns org.apache.arrow.flatbuf.IntervalUnit\n */\n unit() {\n let offset = this.bb.__offset(this.bb_pos, 4);\n return offset ? /** */ (this.bb.readInt16(this.bb_pos + offset)) : org.apache.arrow.flatbuf.IntervalUnit.YEAR_MONTH;\n }\n /**\n * @param flatbuffers.Builder builder\n */\n static startInterval(builder) {\n builder.startObject(1);\n }\n /**\n * @param flatbuffers.Builder builder\n * @param org.apache.arrow.flatbuf.IntervalUnit unit\n */\n static addUnit(builder, unit) {\n builder.addFieldInt16(0, unit, org.apache.arrow.flatbuf.IntervalUnit.YEAR_MONTH);\n }\n /**\n * @param flatbuffers.Builder builder\n * @returns flatbuffers.Offset\n */\n static endInterval(builder) {\n let offset = builder.endObject();\n return offset;\n }\n static createInterval(builder, unit) {\n Interval.startInterval(builder);\n Interval.addUnit(builder, unit);\n return Interval.endInterval(builder);\n }\n }\n flatbuf.Interval = Interval;\n })(flatbuf = arrow.flatbuf || (arrow.flatbuf = {}));\n })(arrow = apache.arrow || (apache.arrow = {}));\n })(apache = org.apache || (org.apache = {}));\n})(org || (org = {}));\n/**\n * @constructor\n */\n(function (org) {\n var apache;\n (function (apache) {\n var arrow;\n (function (arrow) {\n var flatbuf;\n (function (flatbuf) {\n class Duration {\n constructor() {\n this.bb = null;\n this.bb_pos = 0;\n }\n /**\n * @param number i\n * @param flatbuffers.ByteBuffer bb\n * @returns Duration\n */\n __init(i, bb) {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n }\n /**\n * @param flatbuffers.ByteBuffer bb\n * @param Duration= obj\n * @returns Duration\n */\n static getRootAsDuration(bb, obj) {\n return (obj || new Duration).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n }\n /**\n * @returns org.apache.arrow.flatbuf.TimeUnit\n */\n unit() {\n let offset = this.bb.__offset(this.bb_pos, 4);\n return offset ? /** */ (this.bb.readInt16(this.bb_pos + offset)) : org.apache.arrow.flatbuf.TimeUnit.MILLISECOND;\n }\n /**\n * @param flatbuffers.Builder builder\n */\n static startDuration(builder) {\n builder.startObject(1);\n }\n /**\n * @param flatbuffers.Builder builder\n * @param org.apache.arrow.flatbuf.TimeUnit unit\n */\n static addUnit(builder, unit) {\n builder.addFieldInt16(0, unit, org.apache.arrow.flatbuf.TimeUnit.MILLISECOND);\n }\n /**\n * @param flatbuffers.Builder builder\n * @returns flatbuffers.Offset\n */\n static endDuration(builder) {\n let offset = builder.endObject();\n return offset;\n }\n static createDuration(builder, unit) {\n Duration.startDuration(builder);\n Duration.addUnit(builder, unit);\n return Duration.endDuration(builder);\n }\n }\n flatbuf.Duration = Duration;\n })(flatbuf = arrow.flatbuf || (arrow.flatbuf = {}));\n })(arrow = apache.arrow || (apache.arrow = {}));\n })(apache = org.apache || (org.apache = {}));\n})(org || (org = {}));\n/**\n * ----------------------------------------------------------------------\n * user defined key value pairs to add custom metadata to arrow\n * key namespacing is the responsibility of the user\n *\n * @constructor\n */\n(function (org) {\n var apache;\n (function (apache) {\n var arrow;\n (function (arrow) {\n var flatbuf;\n (function (flatbuf) {\n class KeyValue {\n constructor() {\n this.bb = null;\n this.bb_pos = 0;\n }\n /**\n * @param number i\n * @param flatbuffers.ByteBuffer bb\n * @returns KeyValue\n */\n __init(i, bb) {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n }\n /**\n * @param flatbuffers.ByteBuffer bb\n * @param KeyValue= obj\n * @returns KeyValue\n */\n static getRootAsKeyValue(bb, obj) {\n return (obj || new KeyValue).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n }\n key(optionalEncoding) {\n let offset = this.bb.__offset(this.bb_pos, 4);\n return offset ? this.bb.__string(this.bb_pos + offset, optionalEncoding) : null;\n }\n value(optionalEncoding) {\n let offset = this.bb.__offset(this.bb_pos, 6);\n return offset ? this.bb.__string(this.bb_pos + offset, optionalEncoding) : null;\n }\n /**\n * @param flatbuffers.Builder builder\n */\n static startKeyValue(builder) {\n builder.startObject(2);\n }\n /**\n * @param flatbuffers.Builder builder\n * @param flatbuffers.Offset keyOffset\n */\n static addKey(builder, keyOffset) {\n builder.addFieldOffset(0, keyOffset, 0);\n }\n /**\n * @param flatbuffers.Builder builder\n * @param flatbuffers.Offset valueOffset\n */\n static addValue(builder, valueOffset) {\n builder.addFieldOffset(1, valueOffset, 0);\n }\n /**\n * @param flatbuffers.Builder builder\n * @returns flatbuffers.Offset\n */\n static endKeyValue(builder) {\n let offset = builder.endObject();\n return offset;\n }\n static createKeyValue(builder, keyOffset, valueOffset) {\n KeyValue.startKeyValue(builder);\n KeyValue.addKey(builder, keyOffset);\n KeyValue.addValue(builder, valueOffset);\n return KeyValue.endKeyValue(builder);\n }\n }\n flatbuf.KeyValue = KeyValue;\n })(flatbuf = arrow.flatbuf || (arrow.flatbuf = {}));\n })(arrow = apache.arrow || (apache.arrow = {}));\n })(apache = org.apache || (org.apache = {}));\n})(org || (org = {}));\n/**\n * ----------------------------------------------------------------------\n * Dictionary encoding metadata\n *\n * @constructor\n */\n(function (org) {\n var apache;\n (function (apache) {\n var arrow;\n (function (arrow) {\n var flatbuf;\n (function (flatbuf) {\n class DictionaryEncoding {\n constructor() {\n this.bb = null;\n this.bb_pos = 0;\n }\n /**\n * @param number i\n * @param flatbuffers.ByteBuffer bb\n * @returns DictionaryEncoding\n */\n __init(i, bb) {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n }\n /**\n * @param flatbuffers.ByteBuffer bb\n * @param DictionaryEncoding= obj\n * @returns DictionaryEncoding\n */\n static getRootAsDictionaryEncoding(bb, obj) {\n return (obj || new DictionaryEncoding).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n }\n /**\n * The known dictionary id in the application where this data is used. In\n * the file or streaming formats, the dictionary ids are found in the\n * DictionaryBatch messages\n *\n * @returns flatbuffers.Long\n */\n id() {\n let offset = this.bb.__offset(this.bb_pos, 4);\n return offset ? this.bb.readInt64(this.bb_pos + offset) : this.bb.createLong(0, 0);\n }\n /**\n * The dictionary indices are constrained to be positive integers. If this\n * field is null, the indices must be signed int32\n *\n * @param org.apache.arrow.flatbuf.Int= obj\n * @returns org.apache.arrow.flatbuf.Int|null\n */\n indexType(obj) {\n let offset = this.bb.__offset(this.bb_pos, 6);\n return offset ? (obj || new org.apache.arrow.flatbuf.Int).__init(this.bb.__indirect(this.bb_pos + offset), this.bb) : null;\n }\n /**\n * By default, dictionaries are not ordered, or the order does not have\n * semantic meaning. In some statistical, applications, dictionary-encoding\n * is used to represent ordered categorical data, and we provide a way to\n * preserve that metadata here\n *\n * @returns boolean\n */\n isOrdered() {\n let offset = this.bb.__offset(this.bb_pos, 8);\n return offset ? !!this.bb.readInt8(this.bb_pos + offset) : false;\n }\n /**\n * @param flatbuffers.Builder builder\n */\n static startDictionaryEncoding(builder) {\n builder.startObject(3);\n }\n /**\n * @param flatbuffers.Builder builder\n * @param flatbuffers.Long id\n */\n static addId(builder, id) {\n builder.addFieldInt64(0, id, builder.createLong(0, 0));\n }\n /**\n * @param flatbuffers.Builder builder\n * @param flatbuffers.Offset indexTypeOffset\n */\n static addIndexType(builder, indexTypeOffset) {\n builder.addFieldOffset(1, indexTypeOffset, 0);\n }\n /**\n * @param flatbuffers.Builder builder\n * @param boolean isOrdered\n */\n static addIsOrdered(builder, isOrdered) {\n builder.addFieldInt8(2, +isOrdered, +false);\n }\n /**\n * @param flatbuffers.Builder builder\n * @returns flatbuffers.Offset\n */\n static endDictionaryEncoding(builder) {\n let offset = builder.endObject();\n return offset;\n }\n static createDictionaryEncoding(builder, id, indexTypeOffset, isOrdered) {\n DictionaryEncoding.startDictionaryEncoding(builder);\n DictionaryEncoding.addId(builder, id);\n DictionaryEncoding.addIndexType(builder, indexTypeOffset);\n DictionaryEncoding.addIsOrdered(builder, isOrdered);\n return DictionaryEncoding.endDictionaryEncoding(builder);\n }\n }\n flatbuf.DictionaryEncoding = DictionaryEncoding;\n })(flatbuf = arrow.flatbuf || (arrow.flatbuf = {}));\n })(arrow = apache.arrow || (apache.arrow = {}));\n })(apache = org.apache || (org.apache = {}));\n})(org || (org = {}));\n/**\n * ----------------------------------------------------------------------\n * A field represents a named column in a record / row batch or child of a\n * nested type.\n *\n * @constructor\n */\n(function (org) {\n var apache;\n (function (apache) {\n var arrow;\n (function (arrow) {\n var flatbuf;\n (function (flatbuf) {\n class Field {\n constructor() {\n this.bb = null;\n this.bb_pos = 0;\n }\n /**\n * @param number i\n * @param flatbuffers.ByteBuffer bb\n * @returns Field\n */\n __init(i, bb) {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n }\n /**\n * @param flatbuffers.ByteBuffer bb\n * @param Field= obj\n * @returns Field\n */\n static getRootAsField(bb, obj) {\n return (obj || new Field).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n }\n name(optionalEncoding) {\n let offset = this.bb.__offset(this.bb_pos, 4);\n return offset ? this.bb.__string(this.bb_pos + offset, optionalEncoding) : null;\n }\n /**\n * Whether or not this field can contain nulls. Should be true in general.\n *\n * @returns boolean\n */\n nullable() {\n let offset = this.bb.__offset(this.bb_pos, 6);\n return offset ? !!this.bb.readInt8(this.bb_pos + offset) : false;\n }\n /**\n * @returns org.apache.arrow.flatbuf.Type\n */\n typeType() {\n let offset = this.bb.__offset(this.bb_pos, 8);\n return offset ? /** */ (this.bb.readUint8(this.bb_pos + offset)) : org.apache.arrow.flatbuf.Type.NONE;\n }\n /**\n * This is the type of the decoded value if the field is dictionary encoded.\n *\n * @param flatbuffers.Table obj\n * @returns ?flatbuffers.Table\n */\n type(obj) {\n let offset = this.bb.__offset(this.bb_pos, 10);\n return offset ? this.bb.__union(obj, this.bb_pos + offset) : null;\n }\n /**\n * Present only if the field is dictionary encoded.\n *\n * @param org.apache.arrow.flatbuf.DictionaryEncoding= obj\n * @returns org.apache.arrow.flatbuf.DictionaryEncoding|null\n */\n dictionary(obj) {\n let offset = this.bb.__offset(this.bb_pos, 12);\n return offset ? (obj || new org.apache.arrow.flatbuf.DictionaryEncoding).__init(this.bb.__indirect(this.bb_pos + offset), this.bb) : null;\n }\n /**\n * children apply only to nested data types like Struct, List and Union. For\n * primitive types children will have length 0.\n *\n * @param number index\n * @param org.apache.arrow.flatbuf.Field= obj\n * @returns org.apache.arrow.flatbuf.Field\n */\n children(index, obj) {\n let offset = this.bb.__offset(this.bb_pos, 14);\n return offset ? (obj || new org.apache.arrow.flatbuf.Field).__init(this.bb.__indirect(this.bb.__vector(this.bb_pos + offset) + index * 4), this.bb) : null;\n }\n /**\n * @returns number\n */\n childrenLength() {\n let offset = this.bb.__offset(this.bb_pos, 14);\n return offset ? this.bb.__vector_len(this.bb_pos + offset) : 0;\n }\n /**\n * User-defined metadata\n *\n * @param number index\n * @param org.apache.arrow.flatbuf.KeyValue= obj\n * @returns org.apache.arrow.flatbuf.KeyValue\n */\n customMetadata(index, obj) {\n let offset = this.bb.__offset(this.bb_pos, 16);\n return offset ? (obj || new org.apache.arrow.flatbuf.KeyValue).__init(this.bb.__indirect(this.bb.__vector(this.bb_pos + offset) + index * 4), this.bb) : null;\n }\n /**\n * @returns number\n */\n customMetadataLength() {\n let offset = this.bb.__offset(this.bb_pos, 16);\n return offset ? this.bb.__vector_len(this.bb_pos + offset) : 0;\n }\n /**\n * @param flatbuffers.Builder builder\n */\n static startField(builder) {\n builder.startObject(7);\n }\n /**\n * @param flatbuffers.Builder builder\n * @param flatbuffers.Offset nameOffset\n */\n static addName(builder, nameOffset) {\n builder.addFieldOffset(0, nameOffset, 0);\n }\n /**\n * @param flatbuffers.Builder builder\n * @param boolean nullable\n */\n static addNullable(builder, nullable) {\n builder.addFieldInt8(1, +nullable, +false);\n }\n /**\n * @param flatbuffers.Builder builder\n * @param org.apache.arrow.flatbuf.Type typeType\n */\n static addTypeType(builder, typeType) {\n builder.addFieldInt8(2, typeType, org.apache.arrow.flatbuf.Type.NONE);\n }\n /**\n * @param flatbuffers.Builder builder\n * @param flatbuffers.Offset typeOffset\n */\n static addType(builder, typeOffset) {\n builder.addFieldOffset(3, typeOffset, 0);\n }\n /**\n * @param flatbuffers.Builder builder\n * @param flatbuffers.Offset dictionaryOffset\n */\n static addDictionary(builder, dictionaryOffset) {\n builder.addFieldOffset(4, dictionaryOffset, 0);\n }\n /**\n * @param flatbuffers.Builder builder\n * @param flatbuffers.Offset childrenOffset\n */\n static addChildren(builder, childrenOffset) {\n builder.addFieldOffset(5, childrenOffset, 0);\n }\n /**\n * @param flatbuffers.Builder builder\n * @param Array. data\n * @returns flatbuffers.Offset\n */\n static createChildrenVector(builder, data) {\n builder.startVector(4, data.length, 4);\n for (let i = data.length - 1; i >= 0; i--) {\n builder.addOffset(data[i]);\n }\n return builder.endVector();\n }\n /**\n * @param flatbuffers.Builder builder\n * @param number numElems\n */\n static startChildrenVector(builder, numElems) {\n builder.startVector(4, numElems, 4);\n }\n /**\n * @param flatbuffers.Builder builder\n * @param flatbuffers.Offset customMetadataOffset\n */\n static addCustomMetadata(builder, customMetadataOffset) {\n builder.addFieldOffset(6, customMetadataOffset, 0);\n }\n /**\n * @param flatbuffers.Builder builder\n * @param Array. data\n * @returns flatbuffers.Offset\n */\n static createCustomMetadataVector(builder, data) {\n builder.startVector(4, data.length, 4);\n for (let i = data.length - 1; i >= 0; i--) {\n builder.addOffset(data[i]);\n }\n return builder.endVector();\n }\n /**\n * @param flatbuffers.Builder builder\n * @param number numElems\n */\n static startCustomMetadataVector(builder, numElems) {\n builder.startVector(4, numElems, 4);\n }\n /**\n * @param flatbuffers.Builder builder\n * @returns flatbuffers.Offset\n */\n static endField(builder) {\n let offset = builder.endObject();\n return offset;\n }\n static createField(builder, nameOffset, nullable, typeType, typeOffset, dictionaryOffset, childrenOffset, customMetadataOffset) {\n Field.startField(builder);\n Field.addName(builder, nameOffset);\n Field.addNullable(builder, nullable);\n Field.addTypeType(builder, typeType);\n Field.addType(builder, typeOffset);\n Field.addDictionary(builder, dictionaryOffset);\n Field.addChildren(builder, childrenOffset);\n Field.addCustomMetadata(builder, customMetadataOffset);\n return Field.endField(builder);\n }\n }\n flatbuf.Field = Field;\n })(flatbuf = arrow.flatbuf || (arrow.flatbuf = {}));\n })(arrow = apache.arrow || (apache.arrow = {}));\n })(apache = org.apache || (org.apache = {}));\n})(org || (org = {}));\n/**\n * ----------------------------------------------------------------------\n * A Buffer represents a single contiguous memory segment\n *\n * @constructor\n */\n(function (org) {\n var apache;\n (function (apache) {\n var arrow;\n (function (arrow) {\n var flatbuf;\n (function (flatbuf) {\n class Buffer {\n constructor() {\n this.bb = null;\n this.bb_pos = 0;\n }\n /**\n * @param number i\n * @param flatbuffers.ByteBuffer bb\n * @returns Buffer\n */\n __init(i, bb) {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n }\n /**\n * The relative offset into the shared memory page where the bytes for this\n * buffer starts\n *\n * @returns flatbuffers.Long\n */\n offset() {\n return this.bb.readInt64(this.bb_pos);\n }\n /**\n * The absolute length (in bytes) of the memory buffer. The memory is found\n * from offset (inclusive) to offset + length (non-inclusive).\n *\n * @returns flatbuffers.Long\n */\n length() {\n return this.bb.readInt64(this.bb_pos + 8);\n }\n /**\n * @param flatbuffers.Builder builder\n * @param flatbuffers.Long offset\n * @param flatbuffers.Long length\n * @returns flatbuffers.Offset\n */\n static createBuffer(builder, offset, length) {\n builder.prep(8, 16);\n builder.writeInt64(length);\n builder.writeInt64(offset);\n return builder.offset();\n }\n }\n flatbuf.Buffer = Buffer;\n })(flatbuf = arrow.flatbuf || (arrow.flatbuf = {}));\n })(arrow = apache.arrow || (apache.arrow = {}));\n })(apache = org.apache || (org.apache = {}));\n})(org || (org = {}));\n/**\n * ----------------------------------------------------------------------\n * A Schema describes the columns in a row batch\n *\n * @constructor\n */\n(function (org) {\n var apache;\n (function (apache) {\n var arrow;\n (function (arrow) {\n var flatbuf;\n (function (flatbuf) {\n class Schema {\n constructor() {\n this.bb = null;\n this.bb_pos = 0;\n }\n /**\n * @param number i\n * @param flatbuffers.ByteBuffer bb\n * @returns Schema\n */\n __init(i, bb) {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n }\n /**\n * @param flatbuffers.ByteBuffer bb\n * @param Schema= obj\n * @returns Schema\n */\n static getRootAsSchema(bb, obj) {\n return (obj || new Schema).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n }\n /**\n * endianness of the buffer\n * it is Little Endian by default\n * if endianness doesn't match the underlying system then the vectors need to be converted\n *\n * @returns org.apache.arrow.flatbuf.Endianness\n */\n endianness() {\n let offset = this.bb.__offset(this.bb_pos, 4);\n return offset ? /** */ (this.bb.readInt16(this.bb_pos + offset)) : org.apache.arrow.flatbuf.Endianness.Little;\n }\n /**\n * @param number index\n * @param org.apache.arrow.flatbuf.Field= obj\n * @returns org.apache.arrow.flatbuf.Field\n */\n fields(index, obj) {\n let offset = this.bb.__offset(this.bb_pos, 6);\n return offset ? (obj || new org.apache.arrow.flatbuf.Field).__init(this.bb.__indirect(this.bb.__vector(this.bb_pos + offset) + index * 4), this.bb) : null;\n }\n /**\n * @returns number\n */\n fieldsLength() {\n let offset = this.bb.__offset(this.bb_pos, 6);\n return offset ? this.bb.__vector_len(this.bb_pos + offset) : 0;\n }\n /**\n * @param number index\n * @param org.apache.arrow.flatbuf.KeyValue= obj\n * @returns org.apache.arrow.flatbuf.KeyValue\n */\n customMetadata(index, obj) {\n let offset = this.bb.__offset(this.bb_pos, 8);\n return offset ? (obj || new org.apache.arrow.flatbuf.KeyValue).__init(this.bb.__indirect(this.bb.__vector(this.bb_pos + offset) + index * 4), this.bb) : null;\n }\n /**\n * @returns number\n */\n customMetadataLength() {\n let offset = this.bb.__offset(this.bb_pos, 8);\n return offset ? this.bb.__vector_len(this.bb_pos + offset) : 0;\n }\n /**\n * @param flatbuffers.Builder builder\n */\n static startSchema(builder) {\n builder.startObject(3);\n }\n /**\n * @param flatbuffers.Builder builder\n * @param org.apache.arrow.flatbuf.Endianness endianness\n */\n static addEndianness(builder, endianness) {\n builder.addFieldInt16(0, endianness, org.apache.arrow.flatbuf.Endianness.Little);\n }\n /**\n * @param flatbuffers.Builder builder\n * @param flatbuffers.Offset fieldsOffset\n */\n static addFields(builder, fieldsOffset) {\n builder.addFieldOffset(1, fieldsOffset, 0);\n }\n /**\n * @param flatbuffers.Builder builder\n * @param Array. data\n * @returns flatbuffers.Offset\n */\n static createFieldsVector(builder, data) {\n builder.startVector(4, data.length, 4);\n for (let i = data.length - 1; i >= 0; i--) {\n builder.addOffset(data[i]);\n }\n return builder.endVector();\n }\n /**\n * @param flatbuffers.Builder builder\n * @param number numElems\n */\n static startFieldsVector(builder, numElems) {\n builder.startVector(4, numElems, 4);\n }\n /**\n * @param flatbuffers.Builder builder\n * @param flatbuffers.Offset customMetadataOffset\n */\n static addCustomMetadata(builder, customMetadataOffset) {\n builder.addFieldOffset(2, customMetadataOffset, 0);\n }\n /**\n * @param flatbuffers.Builder builder\n * @param Array. data\n * @returns flatbuffers.Offset\n */\n static createCustomMetadataVector(builder, data) {\n builder.startVector(4, data.length, 4);\n for (let i = data.length - 1; i >= 0; i--) {\n builder.addOffset(data[i]);\n }\n return builder.endVector();\n }\n /**\n * @param flatbuffers.Builder builder\n * @param number numElems\n */\n static startCustomMetadataVector(builder, numElems) {\n builder.startVector(4, numElems, 4);\n }\n /**\n * @param flatbuffers.Builder builder\n * @returns flatbuffers.Offset\n */\n static endSchema(builder) {\n let offset = builder.endObject();\n return offset;\n }\n /**\n * @param flatbuffers.Builder builder\n * @param flatbuffers.Offset offset\n */\n static finishSchemaBuffer(builder, offset) {\n builder.finish(offset);\n }\n static createSchema(builder, endianness, fieldsOffset, customMetadataOffset) {\n Schema.startSchema(builder);\n Schema.addEndianness(builder, endianness);\n Schema.addFields(builder, fieldsOffset);\n Schema.addCustomMetadata(builder, customMetadataOffset);\n return Schema.endSchema(builder);\n }\n }\n flatbuf.Schema = Schema;\n })(flatbuf = arrow.flatbuf || (arrow.flatbuf = {}));\n })(arrow = apache.arrow || (apache.arrow = {}));\n })(apache = org.apache || (org.apache = {}));\n})(org || (org = {}));\n\n//# sourceMappingURL=Schema.mjs.map\n","// automatically generated by the FlatBuffers compiler, do not modify\nimport * as NS7624605610262437867 from './Schema';\nexport var org;\n(function (org) {\n var apache;\n (function (apache) {\n var arrow;\n (function (arrow) {\n var flatbuf;\n (function (flatbuf) {\n flatbuf.Schema = NS7624605610262437867.org.apache.arrow.flatbuf.Schema;\n })(flatbuf = arrow.flatbuf || (arrow.flatbuf = {}));\n })(arrow = apache.arrow || (apache.arrow = {}));\n })(apache = org.apache || (org.apache = {}));\n})(org || (org = {}));\n/**\n * ----------------------------------------------------------------------\n * The root Message type\n * This union enables us to easily send different message types without\n * redundant storage, and in the future we can easily add new message types.\n *\n * Arrow implementations do not need to implement all of the message types,\n * which may include experimental metadata types. For maximum compatibility,\n * it is best to send data using RecordBatch\n *\n * @enum {number}\n */\n(function (org) {\n var apache;\n (function (apache) {\n var arrow;\n (function (arrow) {\n var flatbuf;\n (function (flatbuf) {\n let MessageHeader;\n (function (MessageHeader) {\n MessageHeader[MessageHeader[\"NONE\"] = 0] = \"NONE\";\n MessageHeader[MessageHeader[\"Schema\"] = 1] = \"Schema\";\n MessageHeader[MessageHeader[\"DictionaryBatch\"] = 2] = \"DictionaryBatch\";\n MessageHeader[MessageHeader[\"RecordBatch\"] = 3] = \"RecordBatch\";\n MessageHeader[MessageHeader[\"Tensor\"] = 4] = \"Tensor\";\n MessageHeader[MessageHeader[\"SparseTensor\"] = 5] = \"SparseTensor\";\n })(MessageHeader = flatbuf.MessageHeader || (flatbuf.MessageHeader = {}));\n })(flatbuf = arrow.flatbuf || (arrow.flatbuf = {}));\n })(arrow = apache.arrow || (apache.arrow = {}));\n })(apache = org.apache || (org.apache = {}));\n})(org || (org = {}));\n/**\n * ----------------------------------------------------------------------\n * Data structures for describing a table row batch (a collection of\n * equal-length Arrow arrays)\n * Metadata about a field at some level of a nested type tree (but not\n * its children).\n *\n * For example, a List with values [[1, 2, 3], null, [4], [5, 6], null]\n * would have {length: 5, null_count: 2} for its List node, and {length: 6,\n * null_count: 0} for its Int16 node, as separate FieldNode structs\n *\n * @constructor\n */\n(function (org) {\n var apache;\n (function (apache) {\n var arrow;\n (function (arrow) {\n var flatbuf;\n (function (flatbuf) {\n class FieldNode {\n constructor() {\n this.bb = null;\n this.bb_pos = 0;\n }\n /**\n * @param number i\n * @param flatbuffers.ByteBuffer bb\n * @returns FieldNode\n */\n __init(i, bb) {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n }\n /**\n * The number of value slots in the Arrow array at this level of a nested\n * tree\n *\n * @returns flatbuffers.Long\n */\n length() {\n return this.bb.readInt64(this.bb_pos);\n }\n /**\n * The number of observed nulls. Fields with null_count == 0 may choose not\n * to write their physical validity bitmap out as a materialized buffer,\n * instead setting the length of the bitmap buffer to 0.\n *\n * @returns flatbuffers.Long\n */\n nullCount() {\n return this.bb.readInt64(this.bb_pos + 8);\n }\n /**\n * @param flatbuffers.Builder builder\n * @param flatbuffers.Long length\n * @param flatbuffers.Long null_count\n * @returns flatbuffers.Offset\n */\n static createFieldNode(builder, length, null_count) {\n builder.prep(8, 16);\n builder.writeInt64(null_count);\n builder.writeInt64(length);\n return builder.offset();\n }\n }\n flatbuf.FieldNode = FieldNode;\n })(flatbuf = arrow.flatbuf || (arrow.flatbuf = {}));\n })(arrow = apache.arrow || (apache.arrow = {}));\n })(apache = org.apache || (org.apache = {}));\n})(org || (org = {}));\n/**\n * A data header describing the shared memory layout of a \"record\" or \"row\"\n * batch. Some systems call this a \"row batch\" internally and others a \"record\n * batch\".\n *\n * @constructor\n */\n(function (org) {\n var apache;\n (function (apache) {\n var arrow;\n (function (arrow) {\n var flatbuf;\n (function (flatbuf) {\n class RecordBatch {\n constructor() {\n this.bb = null;\n this.bb_pos = 0;\n }\n /**\n * @param number i\n * @param flatbuffers.ByteBuffer bb\n * @returns RecordBatch\n */\n __init(i, bb) {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n }\n /**\n * @param flatbuffers.ByteBuffer bb\n * @param RecordBatch= obj\n * @returns RecordBatch\n */\n static getRootAsRecordBatch(bb, obj) {\n return (obj || new RecordBatch).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n }\n /**\n * number of records / rows. The arrays in the batch should all have this\n * length\n *\n * @returns flatbuffers.Long\n */\n length() {\n let offset = this.bb.__offset(this.bb_pos, 4);\n return offset ? this.bb.readInt64(this.bb_pos + offset) : this.bb.createLong(0, 0);\n }\n /**\n * Nodes correspond to the pre-ordered flattened logical schema\n *\n * @param number index\n * @param org.apache.arrow.flatbuf.FieldNode= obj\n * @returns org.apache.arrow.flatbuf.FieldNode\n */\n nodes(index, obj) {\n let offset = this.bb.__offset(this.bb_pos, 6);\n return offset ? (obj || new org.apache.arrow.flatbuf.FieldNode).__init(this.bb.__vector(this.bb_pos + offset) + index * 16, this.bb) : null;\n }\n /**\n * @returns number\n */\n nodesLength() {\n let offset = this.bb.__offset(this.bb_pos, 6);\n return offset ? this.bb.__vector_len(this.bb_pos + offset) : 0;\n }\n /**\n * Buffers correspond to the pre-ordered flattened buffer tree\n *\n * The number of buffers appended to this list depends on the schema. For\n * example, most primitive arrays will have 2 buffers, 1 for the validity\n * bitmap and 1 for the values. For struct arrays, there will only be a\n * single buffer for the validity (nulls) bitmap\n *\n * @param number index\n * @param org.apache.arrow.flatbuf.Buffer= obj\n * @returns org.apache.arrow.flatbuf.Buffer\n */\n buffers(index, obj) {\n let offset = this.bb.__offset(this.bb_pos, 8);\n return offset ? (obj || new NS7624605610262437867.org.apache.arrow.flatbuf.Buffer).__init(this.bb.__vector(this.bb_pos + offset) + index * 16, this.bb) : null;\n }\n /**\n * @returns number\n */\n buffersLength() {\n let offset = this.bb.__offset(this.bb_pos, 8);\n return offset ? this.bb.__vector_len(this.bb_pos + offset) : 0;\n }\n /**\n * @param flatbuffers.Builder builder\n */\n static startRecordBatch(builder) {\n builder.startObject(3);\n }\n /**\n * @param flatbuffers.Builder builder\n * @param flatbuffers.Long length\n */\n static addLength(builder, length) {\n builder.addFieldInt64(0, length, builder.createLong(0, 0));\n }\n /**\n * @param flatbuffers.Builder builder\n * @param flatbuffers.Offset nodesOffset\n */\n static addNodes(builder, nodesOffset) {\n builder.addFieldOffset(1, nodesOffset, 0);\n }\n /**\n * @param flatbuffers.Builder builder\n * @param number numElems\n */\n static startNodesVector(builder, numElems) {\n builder.startVector(16, numElems, 8);\n }\n /**\n * @param flatbuffers.Builder builder\n * @param flatbuffers.Offset buffersOffset\n */\n static addBuffers(builder, buffersOffset) {\n builder.addFieldOffset(2, buffersOffset, 0);\n }\n /**\n * @param flatbuffers.Builder builder\n * @param number numElems\n */\n static startBuffersVector(builder, numElems) {\n builder.startVector(16, numElems, 8);\n }\n /**\n * @param flatbuffers.Builder builder\n * @returns flatbuffers.Offset\n */\n static endRecordBatch(builder) {\n let offset = builder.endObject();\n return offset;\n }\n static createRecordBatch(builder, length, nodesOffset, buffersOffset) {\n RecordBatch.startRecordBatch(builder);\n RecordBatch.addLength(builder, length);\n RecordBatch.addNodes(builder, nodesOffset);\n RecordBatch.addBuffers(builder, buffersOffset);\n return RecordBatch.endRecordBatch(builder);\n }\n }\n flatbuf.RecordBatch = RecordBatch;\n })(flatbuf = arrow.flatbuf || (arrow.flatbuf = {}));\n })(arrow = apache.arrow || (apache.arrow = {}));\n })(apache = org.apache || (org.apache = {}));\n})(org || (org = {}));\n/**\n * For sending dictionary encoding information. Any Field can be\n * dictionary-encoded, but in this case none of its children may be\n * dictionary-encoded.\n * There is one vector / column per dictionary, but that vector / column\n * may be spread across multiple dictionary batches by using the isDelta\n * flag\n *\n * @constructor\n */\n(function (org) {\n var apache;\n (function (apache) {\n var arrow;\n (function (arrow) {\n var flatbuf;\n (function (flatbuf) {\n class DictionaryBatch {\n constructor() {\n this.bb = null;\n this.bb_pos = 0;\n }\n /**\n * @param number i\n * @param flatbuffers.ByteBuffer bb\n * @returns DictionaryBatch\n */\n __init(i, bb) {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n }\n /**\n * @param flatbuffers.ByteBuffer bb\n * @param DictionaryBatch= obj\n * @returns DictionaryBatch\n */\n static getRootAsDictionaryBatch(bb, obj) {\n return (obj || new DictionaryBatch).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n }\n /**\n * @returns flatbuffers.Long\n */\n id() {\n let offset = this.bb.__offset(this.bb_pos, 4);\n return offset ? this.bb.readInt64(this.bb_pos + offset) : this.bb.createLong(0, 0);\n }\n /**\n * @param org.apache.arrow.flatbuf.RecordBatch= obj\n * @returns org.apache.arrow.flatbuf.RecordBatch|null\n */\n data(obj) {\n let offset = this.bb.__offset(this.bb_pos, 6);\n return offset ? (obj || new org.apache.arrow.flatbuf.RecordBatch).__init(this.bb.__indirect(this.bb_pos + offset), this.bb) : null;\n }\n /**\n * If isDelta is true the values in the dictionary are to be appended to a\n * dictionary with the indicated id\n *\n * @returns boolean\n */\n isDelta() {\n let offset = this.bb.__offset(this.bb_pos, 8);\n return offset ? !!this.bb.readInt8(this.bb_pos + offset) : false;\n }\n /**\n * @param flatbuffers.Builder builder\n */\n static startDictionaryBatch(builder) {\n builder.startObject(3);\n }\n /**\n * @param flatbuffers.Builder builder\n * @param flatbuffers.Long id\n */\n static addId(builder, id) {\n builder.addFieldInt64(0, id, builder.createLong(0, 0));\n }\n /**\n * @param flatbuffers.Builder builder\n * @param flatbuffers.Offset dataOffset\n */\n static addData(builder, dataOffset) {\n builder.addFieldOffset(1, dataOffset, 0);\n }\n /**\n * @param flatbuffers.Builder builder\n * @param boolean isDelta\n */\n static addIsDelta(builder, isDelta) {\n builder.addFieldInt8(2, +isDelta, +false);\n }\n /**\n * @param flatbuffers.Builder builder\n * @returns flatbuffers.Offset\n */\n static endDictionaryBatch(builder) {\n let offset = builder.endObject();\n return offset;\n }\n static createDictionaryBatch(builder, id, dataOffset, isDelta) {\n DictionaryBatch.startDictionaryBatch(builder);\n DictionaryBatch.addId(builder, id);\n DictionaryBatch.addData(builder, dataOffset);\n DictionaryBatch.addIsDelta(builder, isDelta);\n return DictionaryBatch.endDictionaryBatch(builder);\n }\n }\n flatbuf.DictionaryBatch = DictionaryBatch;\n })(flatbuf = arrow.flatbuf || (arrow.flatbuf = {}));\n })(arrow = apache.arrow || (apache.arrow = {}));\n })(apache = org.apache || (org.apache = {}));\n})(org || (org = {}));\n/**\n * @constructor\n */\n(function (org) {\n var apache;\n (function (apache) {\n var arrow;\n (function (arrow) {\n var flatbuf;\n (function (flatbuf) {\n class Message {\n constructor() {\n this.bb = null;\n this.bb_pos = 0;\n }\n /**\n * @param number i\n * @param flatbuffers.ByteBuffer bb\n * @returns Message\n */\n __init(i, bb) {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n }\n /**\n * @param flatbuffers.ByteBuffer bb\n * @param Message= obj\n * @returns Message\n */\n static getRootAsMessage(bb, obj) {\n return (obj || new Message).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n }\n /**\n * @returns org.apache.arrow.flatbuf.MetadataVersion\n */\n version() {\n let offset = this.bb.__offset(this.bb_pos, 4);\n return offset ? /** */ (this.bb.readInt16(this.bb_pos + offset)) : NS7624605610262437867.org.apache.arrow.flatbuf.MetadataVersion.V1;\n }\n /**\n * @returns org.apache.arrow.flatbuf.MessageHeader\n */\n headerType() {\n let offset = this.bb.__offset(this.bb_pos, 6);\n return offset ? /** */ (this.bb.readUint8(this.bb_pos + offset)) : org.apache.arrow.flatbuf.MessageHeader.NONE;\n }\n /**\n * @param flatbuffers.Table obj\n * @returns ?flatbuffers.Table\n */\n header(obj) {\n let offset = this.bb.__offset(this.bb_pos, 8);\n return offset ? this.bb.__union(obj, this.bb_pos + offset) : null;\n }\n /**\n * @returns flatbuffers.Long\n */\n bodyLength() {\n let offset = this.bb.__offset(this.bb_pos, 10);\n return offset ? this.bb.readInt64(this.bb_pos + offset) : this.bb.createLong(0, 0);\n }\n /**\n * @param number index\n * @param org.apache.arrow.flatbuf.KeyValue= obj\n * @returns org.apache.arrow.flatbuf.KeyValue\n */\n customMetadata(index, obj) {\n let offset = this.bb.__offset(this.bb_pos, 12);\n return offset ? (obj || new NS7624605610262437867.org.apache.arrow.flatbuf.KeyValue).__init(this.bb.__indirect(this.bb.__vector(this.bb_pos + offset) + index * 4), this.bb) : null;\n }\n /**\n * @returns number\n */\n customMetadataLength() {\n let offset = this.bb.__offset(this.bb_pos, 12);\n return offset ? this.bb.__vector_len(this.bb_pos + offset) : 0;\n }\n /**\n * @param flatbuffers.Builder builder\n */\n static startMessage(builder) {\n builder.startObject(5);\n }\n /**\n * @param flatbuffers.Builder builder\n * @param org.apache.arrow.flatbuf.MetadataVersion version\n */\n static addVersion(builder, version) {\n builder.addFieldInt16(0, version, NS7624605610262437867.org.apache.arrow.flatbuf.MetadataVersion.V1);\n }\n /**\n * @param flatbuffers.Builder builder\n * @param org.apache.arrow.flatbuf.MessageHeader headerType\n */\n static addHeaderType(builder, headerType) {\n builder.addFieldInt8(1, headerType, org.apache.arrow.flatbuf.MessageHeader.NONE);\n }\n /**\n * @param flatbuffers.Builder builder\n * @param flatbuffers.Offset headerOffset\n */\n static addHeader(builder, headerOffset) {\n builder.addFieldOffset(2, headerOffset, 0);\n }\n /**\n * @param flatbuffers.Builder builder\n * @param flatbuffers.Long bodyLength\n */\n static addBodyLength(builder, bodyLength) {\n builder.addFieldInt64(3, bodyLength, builder.createLong(0, 0));\n }\n /**\n * @param flatbuffers.Builder builder\n * @param flatbuffers.Offset customMetadataOffset\n */\n static addCustomMetadata(builder, customMetadataOffset) {\n builder.addFieldOffset(4, customMetadataOffset, 0);\n }\n /**\n * @param flatbuffers.Builder builder\n * @param Array. data\n * @returns flatbuffers.Offset\n */\n static createCustomMetadataVector(builder, data) {\n builder.startVector(4, data.length, 4);\n for (let i = data.length - 1; i >= 0; i--) {\n builder.addOffset(data[i]);\n }\n return builder.endVector();\n }\n /**\n * @param flatbuffers.Builder builder\n * @param number numElems\n */\n static startCustomMetadataVector(builder, numElems) {\n builder.startVector(4, numElems, 4);\n }\n /**\n * @param flatbuffers.Builder builder\n * @returns flatbuffers.Offset\n */\n static endMessage(builder) {\n let offset = builder.endObject();\n return offset;\n }\n /**\n * @param flatbuffers.Builder builder\n * @param flatbuffers.Offset offset\n */\n static finishMessageBuffer(builder, offset) {\n builder.finish(offset);\n }\n static createMessage(builder, version, headerType, headerOffset, bodyLength, customMetadataOffset) {\n Message.startMessage(builder);\n Message.addVersion(builder, version);\n Message.addHeaderType(builder, headerType);\n Message.addHeader(builder, headerOffset);\n Message.addBodyLength(builder, bodyLength);\n Message.addCustomMetadata(builder, customMetadataOffset);\n return Message.endMessage(builder);\n }\n }\n flatbuf.Message = Message;\n })(flatbuf = arrow.flatbuf || (arrow.flatbuf = {}));\n })(arrow = apache.arrow || (apache.arrow = {}));\n })(apache = org.apache || (org.apache = {}));\n})(org || (org = {}));\n\n//# sourceMappingURL=Message.mjs.map\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\nimport * as Schema_ from './fb/Schema';\nimport * as Message_ from './fb/Message';\nexport var ArrowType = Schema_.org.apache.arrow.flatbuf.Type;\nexport var DateUnit = Schema_.org.apache.arrow.flatbuf.DateUnit;\nexport var TimeUnit = Schema_.org.apache.arrow.flatbuf.TimeUnit;\nexport var Precision = Schema_.org.apache.arrow.flatbuf.Precision;\nexport var UnionMode = Schema_.org.apache.arrow.flatbuf.UnionMode;\nexport var IntervalUnit = Schema_.org.apache.arrow.flatbuf.IntervalUnit;\nexport var MessageHeader = Message_.org.apache.arrow.flatbuf.MessageHeader;\nexport var MetadataVersion = Schema_.org.apache.arrow.flatbuf.MetadataVersion;\n/**\n * Main data type enumeration.\n *\n * Data types in this library are all *logical*. They can be expressed as\n * either a primitive physical type (bytes or bits of some fixed size), a\n * nested type consisting of other data types, or another data type (e.g. a\n * timestamp encoded as an int64).\n *\n * **Note**: Only enum values 0-17 (NONE through Map) are written to an Arrow\n * IPC payload.\n *\n * The rest of the values are specified here so TypeScript can narrow the type\n * signatures further beyond the base Arrow Types. The Arrow DataTypes include\n * metadata like `bitWidth` that impact the type signatures of the values we\n * accept and return.\n *\n * For example, the `Int8Vector` reads 1-byte numbers from an `Int8Array`, an\n * `Int32Vector` reads a 4-byte number from an `Int32Array`, and an `Int64Vector`\n * reads a pair of 4-byte lo, hi 32-bit integers as a zero-copy slice from the\n * underlying `Int32Array`.\n *\n * Library consumers benefit by knowing the narrowest type, since we can ensure\n * the types across all public methods are propagated, and never bail to `any`.\n * These values are _never_ used at runtime, and they will _never_ be written\n * to the flatbuffers metadata of serialized Arrow IPC payloads.\n */\nexport var Type;\n(function (Type) {\n /** The default placeholder type */\n Type[Type[\"NONE\"] = 0] = \"NONE\";\n /** A NULL type having no physical storage */\n Type[Type[\"Null\"] = 1] = \"Null\";\n /** Signed or unsigned 8, 16, 32, or 64-bit little-endian integer */\n Type[Type[\"Int\"] = 2] = \"Int\";\n /** 2, 4, or 8-byte floating point value */\n Type[Type[\"Float\"] = 3] = \"Float\";\n /** Variable-length bytes (no guarantee of UTF8-ness) */\n Type[Type[\"Binary\"] = 4] = \"Binary\";\n /** UTF8 variable-length string as List */\n Type[Type[\"Utf8\"] = 5] = \"Utf8\";\n /** Boolean as 1 bit, LSB bit-packed ordering */\n Type[Type[\"Bool\"] = 6] = \"Bool\";\n /** Precision-and-scale-based decimal type. Storage type depends on the parameters. */\n Type[Type[\"Decimal\"] = 7] = \"Decimal\";\n /** int32_t days or int64_t milliseconds since the UNIX epoch */\n Type[Type[\"Date\"] = 8] = \"Date\";\n /** Time as signed 32 or 64-bit integer, representing either seconds, milliseconds, microseconds, or nanoseconds since midnight since midnight */\n Type[Type[\"Time\"] = 9] = \"Time\";\n /** Exact timestamp encoded with int64 since UNIX epoch (Default unit millisecond) */\n Type[Type[\"Timestamp\"] = 10] = \"Timestamp\";\n /** YEAR_MONTH or DAY_TIME interval in SQL style */\n Type[Type[\"Interval\"] = 11] = \"Interval\";\n /** A list of some logical data type */\n Type[Type[\"List\"] = 12] = \"List\";\n /** Struct of logical types */\n Type[Type[\"Struct\"] = 13] = \"Struct\";\n /** Union of logical types */\n Type[Type[\"Union\"] = 14] = \"Union\";\n /** Fixed-size binary. Each value occupies the same number of bytes */\n Type[Type[\"FixedSizeBinary\"] = 15] = \"FixedSizeBinary\";\n /** Fixed-size list. Each value occupies the same number of bytes */\n Type[Type[\"FixedSizeList\"] = 16] = \"FixedSizeList\";\n /** Map of named logical types */\n Type[Type[\"Map\"] = 17] = \"Map\";\n /** Dictionary aka Category type */\n Type[Type[\"Dictionary\"] = -1] = \"Dictionary\";\n Type[Type[\"Int8\"] = -2] = \"Int8\";\n Type[Type[\"Int16\"] = -3] = \"Int16\";\n Type[Type[\"Int32\"] = -4] = \"Int32\";\n Type[Type[\"Int64\"] = -5] = \"Int64\";\n Type[Type[\"Uint8\"] = -6] = \"Uint8\";\n Type[Type[\"Uint16\"] = -7] = \"Uint16\";\n Type[Type[\"Uint32\"] = -8] = \"Uint32\";\n Type[Type[\"Uint64\"] = -9] = \"Uint64\";\n Type[Type[\"Float16\"] = -10] = \"Float16\";\n Type[Type[\"Float32\"] = -11] = \"Float32\";\n Type[Type[\"Float64\"] = -12] = \"Float64\";\n Type[Type[\"DateDay\"] = -13] = \"DateDay\";\n Type[Type[\"DateMillisecond\"] = -14] = \"DateMillisecond\";\n Type[Type[\"TimestampSecond\"] = -15] = \"TimestampSecond\";\n Type[Type[\"TimestampMillisecond\"] = -16] = \"TimestampMillisecond\";\n Type[Type[\"TimestampMicrosecond\"] = -17] = \"TimestampMicrosecond\";\n Type[Type[\"TimestampNanosecond\"] = -18] = \"TimestampNanosecond\";\n Type[Type[\"TimeSecond\"] = -19] = \"TimeSecond\";\n Type[Type[\"TimeMillisecond\"] = -20] = \"TimeMillisecond\";\n Type[Type[\"TimeMicrosecond\"] = -21] = \"TimeMicrosecond\";\n Type[Type[\"TimeNanosecond\"] = -22] = \"TimeNanosecond\";\n Type[Type[\"DenseUnion\"] = -23] = \"DenseUnion\";\n Type[Type[\"SparseUnion\"] = -24] = \"SparseUnion\";\n Type[Type[\"IntervalDayTime\"] = -25] = \"IntervalDayTime\";\n Type[Type[\"IntervalYearMonth\"] = -26] = \"IntervalYearMonth\";\n})(Type || (Type = {}));\nexport var BufferType;\n(function (BufferType) {\n /**\n * used in List type, Dense Union and variable length primitive types (String, Binary)\n */\n BufferType[BufferType[\"OFFSET\"] = 0] = \"OFFSET\";\n /**\n * actual data, either wixed width primitive types in slots or variable width delimited by an OFFSET vector\n */\n BufferType[BufferType[\"DATA\"] = 1] = \"DATA\";\n /**\n * Bit vector indicating if each value is null\n */\n BufferType[BufferType[\"VALIDITY\"] = 2] = \"VALIDITY\";\n /**\n * Type vector used in Union type\n */\n BufferType[BufferType[\"TYPE\"] = 3] = \"TYPE\";\n})(BufferType || (BufferType = {}));\n\n//# sourceMappingURL=enum.mjs.map\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\n/** @ignore */\nexport function getBool(_data, _index, byte, bit) {\n return (byte & 1 << bit) !== 0;\n}\n/** @ignore */\nexport function getBit(_data, _index, byte, bit) {\n return (byte & 1 << bit) >> bit;\n}\n/** @ignore */\nexport function setBool(bytes, index, value) {\n return value ?\n !!(bytes[index >> 3] |= (1 << (index % 8))) || true :\n !(bytes[index >> 3] &= ~(1 << (index % 8))) && false;\n}\n/** @ignore */\nexport function truncateBitmap(offset, length, bitmap) {\n const alignedSize = (bitmap.byteLength + 7) & ~7;\n if (offset > 0 || bitmap.byteLength < alignedSize) {\n const bytes = new Uint8Array(alignedSize);\n // If the offset is a multiple of 8 bits, it's safe to slice the bitmap\n bytes.set(offset % 8 === 0 ? bitmap.subarray(offset >> 3) :\n // Otherwise iterate each bit from the offset and return a new one\n packBools(iterateBits(bitmap, offset, length, null, getBool)).subarray(0, alignedSize));\n return bytes;\n }\n return bitmap;\n}\n/** @ignore */\nexport function packBools(values) {\n let xs = [];\n let i = 0, bit = 0, byte = 0;\n for (const value of values) {\n value && (byte |= 1 << bit);\n if (++bit === 8) {\n xs[i++] = byte;\n byte = bit = 0;\n }\n }\n if (i === 0 || bit > 0) {\n xs[i++] = byte;\n }\n let b = new Uint8Array((xs.length + 7) & ~7);\n b.set(xs);\n return b;\n}\n/** @ignore */\nexport function* iterateBits(bytes, begin, length, context, get) {\n let bit = begin % 8;\n let byteIndex = begin >> 3;\n let index = 0, remaining = length;\n for (; remaining > 0; bit = 0) {\n let byte = bytes[byteIndex++];\n do {\n yield get(context, index++, byte, bit);\n } while (--remaining > 0 && ++bit < 8);\n }\n}\n/**\n * Compute the population count (the number of bits set to 1) for a range of bits in a Uint8Array.\n * @param vector The Uint8Array of bits for which to compute the population count.\n * @param lhs The range's left-hand side (or start) bit\n * @param rhs The range's right-hand side (or end) bit\n */\n/** @ignore */\nexport function popcnt_bit_range(data, lhs, rhs) {\n if (rhs - lhs <= 0) {\n return 0;\n }\n // If the bit range is less than one byte, sum the 1 bits in the bit range\n if (rhs - lhs < 8) {\n let sum = 0;\n for (const bit of iterateBits(data, lhs, rhs - lhs, data, getBit)) {\n sum += bit;\n }\n return sum;\n }\n // Get the next lowest multiple of 8 from the right hand side\n const rhsInside = rhs >> 3 << 3;\n // Get the next highest multiple of 8 from the left hand side\n const lhsInside = lhs + (lhs % 8 === 0 ? 0 : 8 - lhs % 8);\n return (\n // Get the popcnt of bits between the left hand side, and the next highest multiple of 8\n popcnt_bit_range(data, lhs, lhsInside) +\n // Get the popcnt of bits between the right hand side, and the next lowest multiple of 8\n popcnt_bit_range(data, rhsInside, rhs) +\n // Get the popcnt of all bits between the left and right hand sides' multiples of 8\n popcnt_array(data, lhsInside >> 3, (rhsInside - lhsInside) >> 3));\n}\n/** @ignore */\nexport function popcnt_array(arr, byteOffset, byteLength) {\n let cnt = 0, pos = byteOffset | 0;\n const view = new DataView(arr.buffer, arr.byteOffset, arr.byteLength);\n const len = byteLength === void 0 ? arr.byteLength : pos + byteLength;\n while (len - pos >= 4) {\n cnt += popcnt_uint32(view.getUint32(pos));\n pos += 4;\n }\n while (len - pos >= 2) {\n cnt += popcnt_uint32(view.getUint16(pos));\n pos += 2;\n }\n while (len - pos >= 1) {\n cnt += popcnt_uint32(view.getUint8(pos));\n pos += 1;\n }\n return cnt;\n}\n/** @ignore */\nexport function popcnt_uint32(uint32) {\n let i = uint32 | 0;\n i = i - ((i >>> 1) & 0x55555555);\n i = (i & 0x33333333) + ((i >>> 2) & 0x33333333);\n return (((i + (i >>> 4)) & 0x0F0F0F0F) * 0x01010101) >>> 24;\n}\n\n//# sourceMappingURL=bit.mjs.map\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\nimport { Data } from './data';\nimport { Vector } from './vector';\nimport { Type, Precision, DateUnit, TimeUnit, IntervalUnit, UnionMode } from './enum';\nimport { DataType, } from './type';\nexport class Visitor {\n visitMany(nodes, ...args) {\n return nodes.map((node, i) => this.visit(node, ...args.map((x) => x[i])));\n }\n visit(...args) {\n return this.getVisitFn(args[0], false).apply(this, args);\n }\n getVisitFn(node, throwIfNotFound = true) {\n return getVisitFn(this, node, throwIfNotFound);\n }\n visitNull(_node, ..._args) { return null; }\n visitBool(_node, ..._args) { return null; }\n visitInt(_node, ..._args) { return null; }\n visitFloat(_node, ..._args) { return null; }\n visitUtf8(_node, ..._args) { return null; }\n visitBinary(_node, ..._args) { return null; }\n visitFixedSizeBinary(_node, ..._args) { return null; }\n visitDate(_node, ..._args) { return null; }\n visitTimestamp(_node, ..._args) { return null; }\n visitTime(_node, ..._args) { return null; }\n visitDecimal(_node, ..._args) { return null; }\n visitList(_node, ..._args) { return null; }\n visitStruct(_node, ..._args) { return null; }\n visitUnion(_node, ..._args) { return null; }\n visitDictionary(_node, ..._args) { return null; }\n visitInterval(_node, ..._args) { return null; }\n visitFixedSizeList(_node, ..._args) { return null; }\n visitMap(_node, ..._args) { return null; }\n}\n/** @ignore */\nfunction getVisitFn(visitor, node, throwIfNotFound = true) {\n let fn = null;\n let dtype = Type.NONE;\n // tslint:disable\n if (node instanceof Data) {\n dtype = inferDType(node.type);\n }\n else if (node instanceof Vector) {\n dtype = inferDType(node.type);\n }\n else if (node instanceof DataType) {\n dtype = inferDType(node);\n }\n else if (typeof (dtype = node) !== 'number') {\n dtype = Type[node];\n }\n switch (dtype) {\n case Type.Null:\n fn = visitor.visitNull;\n break;\n case Type.Bool:\n fn = visitor.visitBool;\n break;\n case Type.Int:\n fn = visitor.visitInt;\n break;\n case Type.Int8:\n fn = visitor.visitInt8 || visitor.visitInt;\n break;\n case Type.Int16:\n fn = visitor.visitInt16 || visitor.visitInt;\n break;\n case Type.Int32:\n fn = visitor.visitInt32 || visitor.visitInt;\n break;\n case Type.Int64:\n fn = visitor.visitInt64 || visitor.visitInt;\n break;\n case Type.Uint8:\n fn = visitor.visitUint8 || visitor.visitInt;\n break;\n case Type.Uint16:\n fn = visitor.visitUint16 || visitor.visitInt;\n break;\n case Type.Uint32:\n fn = visitor.visitUint32 || visitor.visitInt;\n break;\n case Type.Uint64:\n fn = visitor.visitUint64 || visitor.visitInt;\n break;\n case Type.Float:\n fn = visitor.visitFloat;\n break;\n case Type.Float16:\n fn = visitor.visitFloat16 || visitor.visitFloat;\n break;\n case Type.Float32:\n fn = visitor.visitFloat32 || visitor.visitFloat;\n break;\n case Type.Float64:\n fn = visitor.visitFloat64 || visitor.visitFloat;\n break;\n case Type.Utf8:\n fn = visitor.visitUtf8;\n break;\n case Type.Binary:\n fn = visitor.visitBinary;\n break;\n case Type.FixedSizeBinary:\n fn = visitor.visitFixedSizeBinary;\n break;\n case Type.Date:\n fn = visitor.visitDate;\n break;\n case Type.DateDay:\n fn = visitor.visitDateDay || visitor.visitDate;\n break;\n case Type.DateMillisecond:\n fn = visitor.visitDateMillisecond || visitor.visitDate;\n break;\n case Type.Timestamp:\n fn = visitor.visitTimestamp;\n break;\n case Type.TimestampSecond:\n fn = visitor.visitTimestampSecond || visitor.visitTimestamp;\n break;\n case Type.TimestampMillisecond:\n fn = visitor.visitTimestampMillisecond || visitor.visitTimestamp;\n break;\n case Type.TimestampMicrosecond:\n fn = visitor.visitTimestampMicrosecond || visitor.visitTimestamp;\n break;\n case Type.TimestampNanosecond:\n fn = visitor.visitTimestampNanosecond || visitor.visitTimestamp;\n break;\n case Type.Time:\n fn = visitor.visitTime;\n break;\n case Type.TimeSecond:\n fn = visitor.visitTimeSecond || visitor.visitTime;\n break;\n case Type.TimeMillisecond:\n fn = visitor.visitTimeMillisecond || visitor.visitTime;\n break;\n case Type.TimeMicrosecond:\n fn = visitor.visitTimeMicrosecond || visitor.visitTime;\n break;\n case Type.TimeNanosecond:\n fn = visitor.visitTimeNanosecond || visitor.visitTime;\n break;\n case Type.Decimal:\n fn = visitor.visitDecimal;\n break;\n case Type.List:\n fn = visitor.visitList;\n break;\n case Type.Struct:\n fn = visitor.visitStruct;\n break;\n case Type.Union:\n fn = visitor.visitUnion;\n break;\n case Type.DenseUnion:\n fn = visitor.visitDenseUnion || visitor.visitUnion;\n break;\n case Type.SparseUnion:\n fn = visitor.visitSparseUnion || visitor.visitUnion;\n break;\n case Type.Dictionary:\n fn = visitor.visitDictionary;\n break;\n case Type.Interval:\n fn = visitor.visitInterval;\n break;\n case Type.IntervalDayTime:\n fn = visitor.visitIntervalDayTime || visitor.visitInterval;\n break;\n case Type.IntervalYearMonth:\n fn = visitor.visitIntervalYearMonth || visitor.visitInterval;\n break;\n case Type.FixedSizeList:\n fn = visitor.visitFixedSizeList;\n break;\n case Type.Map:\n fn = visitor.visitMap;\n break;\n }\n if (typeof fn === 'function')\n return fn;\n if (!throwIfNotFound)\n return () => null;\n throw new Error(`Unrecognized type '${Type[dtype]}'`);\n}\n/** @ignore */\nfunction inferDType(type) {\n switch (type.typeId) {\n case Type.Null: return Type.Null;\n case Type.Int:\n const { bitWidth, isSigned } = type;\n switch (bitWidth) {\n case 8: return isSigned ? Type.Int8 : Type.Uint8;\n case 16: return isSigned ? Type.Int16 : Type.Uint16;\n case 32: return isSigned ? Type.Int32 : Type.Uint32;\n case 64: return isSigned ? Type.Int64 : Type.Uint64;\n }\n return Type.Int;\n case Type.Float:\n switch (type.precision) {\n case Precision.HALF: return Type.Float16;\n case Precision.SINGLE: return Type.Float32;\n case Precision.DOUBLE: return Type.Float64;\n }\n return Type.Float;\n case Type.Binary: return Type.Binary;\n case Type.Utf8: return Type.Utf8;\n case Type.Bool: return Type.Bool;\n case Type.Decimal: return Type.Decimal;\n case Type.Time:\n switch (type.unit) {\n case TimeUnit.SECOND: return Type.TimeSecond;\n case TimeUnit.MILLISECOND: return Type.TimeMillisecond;\n case TimeUnit.MICROSECOND: return Type.TimeMicrosecond;\n case TimeUnit.NANOSECOND: return Type.TimeNanosecond;\n }\n return Type.Time;\n case Type.Timestamp:\n switch (type.unit) {\n case TimeUnit.SECOND: return Type.TimestampSecond;\n case TimeUnit.MILLISECOND: return Type.TimestampMillisecond;\n case TimeUnit.MICROSECOND: return Type.TimestampMicrosecond;\n case TimeUnit.NANOSECOND: return Type.TimestampNanosecond;\n }\n return Type.Timestamp;\n case Type.Date:\n switch (type.unit) {\n case DateUnit.DAY: return Type.DateDay;\n case DateUnit.MILLISECOND: return Type.DateMillisecond;\n }\n return Type.Date;\n case Type.Interval:\n switch (type.unit) {\n case IntervalUnit.DAY_TIME: return Type.IntervalDayTime;\n case IntervalUnit.YEAR_MONTH: return Type.IntervalYearMonth;\n }\n return Type.Interval;\n case Type.Map: return Type.Map;\n case Type.List: return Type.List;\n case Type.Struct: return Type.Struct;\n case Type.Union:\n switch (type.mode) {\n case UnionMode.Dense: return Type.DenseUnion;\n case UnionMode.Sparse: return Type.SparseUnion;\n }\n return Type.Union;\n case Type.FixedSizeBinary: return Type.FixedSizeBinary;\n case Type.FixedSizeList: return Type.FixedSizeList;\n case Type.Dictionary: return Type.Dictionary;\n }\n throw new Error(`Unrecognized type '${Type[type.typeId]}'`);\n}\n// Add these here so they're picked up by the externs creator\n// in the build, and closure-compiler doesn't minify them away\nVisitor.prototype.visitInt8 = null;\nVisitor.prototype.visitInt16 = null;\nVisitor.prototype.visitInt32 = null;\nVisitor.prototype.visitInt64 = null;\nVisitor.prototype.visitUint8 = null;\nVisitor.prototype.visitUint16 = null;\nVisitor.prototype.visitUint32 = null;\nVisitor.prototype.visitUint64 = null;\nVisitor.prototype.visitFloat16 = null;\nVisitor.prototype.visitFloat32 = null;\nVisitor.prototype.visitFloat64 = null;\nVisitor.prototype.visitDateDay = null;\nVisitor.prototype.visitDateMillisecond = null;\nVisitor.prototype.visitTimestampSecond = null;\nVisitor.prototype.visitTimestampMillisecond = null;\nVisitor.prototype.visitTimestampMicrosecond = null;\nVisitor.prototype.visitTimestampNanosecond = null;\nVisitor.prototype.visitTimeSecond = null;\nVisitor.prototype.visitTimeMillisecond = null;\nVisitor.prototype.visitTimeMicrosecond = null;\nVisitor.prototype.visitTimeNanosecond = null;\nVisitor.prototype.visitDenseUnion = null;\nVisitor.prototype.visitSparseUnion = null;\nVisitor.prototype.visitIntervalDayTime = null;\nVisitor.prototype.visitIntervalYearMonth = null;\n\n//# sourceMappingURL=visitor.mjs.map\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\nimport { Visitor } from '../visitor';\n/** @ignore */\nexport class TypeComparator extends Visitor {\n compareSchemas(schema, other) {\n return (schema === other) || (other instanceof schema.constructor &&\n instance.compareFields(schema.fields, other.fields));\n }\n compareFields(fields, others) {\n return (fields === others) || (Array.isArray(fields) &&\n Array.isArray(others) &&\n fields.length === others.length &&\n fields.every((f, i) => instance.compareField(f, others[i])));\n }\n compareField(field, other) {\n return (field === other) || (other instanceof field.constructor &&\n field.name === other.name &&\n field.nullable === other.nullable &&\n instance.visit(field.type, other.type));\n }\n}\nfunction compareConstructor(type, other) {\n return other instanceof type.constructor;\n}\nfunction compareAny(type, other) {\n return (type === other) || compareConstructor(type, other);\n}\nfunction compareInt(type, other) {\n return (type === other) || (compareConstructor(type, other) &&\n type.bitWidth === other.bitWidth &&\n type.isSigned === other.isSigned);\n}\nfunction compareFloat(type, other) {\n return (type === other) || (compareConstructor(type, other) &&\n type.precision === other.precision);\n}\nfunction compareFixedSizeBinary(type, other) {\n return (type === other) || (compareConstructor(type, other) &&\n type.byteWidth === other.byteWidth);\n}\nfunction compareDate(type, other) {\n return (type === other) || (compareConstructor(type, other) &&\n type.unit === other.unit);\n}\nfunction compareTimestamp(type, other) {\n return (type === other) || (compareConstructor(type, other) &&\n type.unit === other.unit &&\n type.timezone === other.timezone);\n}\nfunction compareTime(type, other) {\n return (type === other) || (compareConstructor(type, other) &&\n type.unit === other.unit &&\n type.bitWidth === other.bitWidth);\n}\nfunction compareList(type, other) {\n return (type === other) || (compareConstructor(type, other) &&\n type.children.length === other.children.length &&\n instance.compareFields(type.children, other.children));\n}\nfunction compareStruct(type, other) {\n return (type === other) || (compareConstructor(type, other) &&\n type.children.length === other.children.length &&\n instance.compareFields(type.children, other.children));\n}\nfunction compareUnion(type, other) {\n return (type === other) || (compareConstructor(type, other) &&\n type.mode === other.mode &&\n type.typeIds.every((x, i) => x === other.typeIds[i]) &&\n instance.compareFields(type.children, other.children));\n}\nfunction compareDictionary(type, other) {\n return (type === other) || (compareConstructor(type, other) &&\n type.id === other.id &&\n type.isOrdered === other.isOrdered &&\n instance.visit(type.indices, other.indices) &&\n instance.visit(type.dictionary, other.dictionary));\n}\nfunction compareInterval(type, other) {\n return (type === other) || (compareConstructor(type, other) &&\n type.unit === other.unit);\n}\nfunction compareFixedSizeList(type, other) {\n return (type === other) || (compareConstructor(type, other) &&\n type.listSize === other.listSize &&\n type.children.length === other.children.length &&\n instance.compareFields(type.children, other.children));\n}\nfunction compareMap(type, other) {\n return (type === other) || (compareConstructor(type, other) &&\n type.keysSorted === other.keysSorted &&\n type.children.length === other.children.length &&\n instance.compareFields(type.children, other.children));\n}\nTypeComparator.prototype.visitNull = compareAny;\nTypeComparator.prototype.visitBool = compareAny;\nTypeComparator.prototype.visitInt = compareInt;\nTypeComparator.prototype.visitInt8 = compareInt;\nTypeComparator.prototype.visitInt16 = compareInt;\nTypeComparator.prototype.visitInt32 = compareInt;\nTypeComparator.prototype.visitInt64 = compareInt;\nTypeComparator.prototype.visitUint8 = compareInt;\nTypeComparator.prototype.visitUint16 = compareInt;\nTypeComparator.prototype.visitUint32 = compareInt;\nTypeComparator.prototype.visitUint64 = compareInt;\nTypeComparator.prototype.visitFloat = compareFloat;\nTypeComparator.prototype.visitFloat16 = compareFloat;\nTypeComparator.prototype.visitFloat32 = compareFloat;\nTypeComparator.prototype.visitFloat64 = compareFloat;\nTypeComparator.prototype.visitUtf8 = compareAny;\nTypeComparator.prototype.visitBinary = compareAny;\nTypeComparator.prototype.visitFixedSizeBinary = compareFixedSizeBinary;\nTypeComparator.prototype.visitDate = compareDate;\nTypeComparator.prototype.visitDateDay = compareDate;\nTypeComparator.prototype.visitDateMillisecond = compareDate;\nTypeComparator.prototype.visitTimestamp = compareTimestamp;\nTypeComparator.prototype.visitTimestampSecond = compareTimestamp;\nTypeComparator.prototype.visitTimestampMillisecond = compareTimestamp;\nTypeComparator.prototype.visitTimestampMicrosecond = compareTimestamp;\nTypeComparator.prototype.visitTimestampNanosecond = compareTimestamp;\nTypeComparator.prototype.visitTime = compareTime;\nTypeComparator.prototype.visitTimeSecond = compareTime;\nTypeComparator.prototype.visitTimeMillisecond = compareTime;\nTypeComparator.prototype.visitTimeMicrosecond = compareTime;\nTypeComparator.prototype.visitTimeNanosecond = compareTime;\nTypeComparator.prototype.visitDecimal = compareAny;\nTypeComparator.prototype.visitList = compareList;\nTypeComparator.prototype.visitStruct = compareStruct;\nTypeComparator.prototype.visitUnion = compareUnion;\nTypeComparator.prototype.visitDenseUnion = compareUnion;\nTypeComparator.prototype.visitSparseUnion = compareUnion;\nTypeComparator.prototype.visitDictionary = compareDictionary;\nTypeComparator.prototype.visitInterval = compareInterval;\nTypeComparator.prototype.visitIntervalDayTime = compareInterval;\nTypeComparator.prototype.visitIntervalYearMonth = compareInterval;\nTypeComparator.prototype.visitFixedSizeList = compareFixedSizeList;\nTypeComparator.prototype.visitMap = compareMap;\n/** @ignore */\nexport const instance = new TypeComparator();\n\n//# sourceMappingURL=typecomparator.mjs.map\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\nimport { instance as comparer } from './visitor/typecomparator';\nimport { Type, Precision, UnionMode, DateUnit, TimeUnit, IntervalUnit } from './enum';\n/**\n * An abstract base class for classes that encapsulate metadata about each of\n * the logical types that Arrow can represent.\n */\nexport class DataType {\n /** @nocollapse */ static isNull(x) { return x && x.typeId === Type.Null; }\n /** @nocollapse */ static isInt(x) { return x && x.typeId === Type.Int; }\n /** @nocollapse */ static isFloat(x) { return x && x.typeId === Type.Float; }\n /** @nocollapse */ static isBinary(x) { return x && x.typeId === Type.Binary; }\n /** @nocollapse */ static isUtf8(x) { return x && x.typeId === Type.Utf8; }\n /** @nocollapse */ static isBool(x) { return x && x.typeId === Type.Bool; }\n /** @nocollapse */ static isDecimal(x) { return x && x.typeId === Type.Decimal; }\n /** @nocollapse */ static isDate(x) { return x && x.typeId === Type.Date; }\n /** @nocollapse */ static isTime(x) { return x && x.typeId === Type.Time; }\n /** @nocollapse */ static isTimestamp(x) { return x && x.typeId === Type.Timestamp; }\n /** @nocollapse */ static isInterval(x) { return x && x.typeId === Type.Interval; }\n /** @nocollapse */ static isList(x) { return x && x.typeId === Type.List; }\n /** @nocollapse */ static isStruct(x) { return x && x.typeId === Type.Struct; }\n /** @nocollapse */ static isUnion(x) { return x && x.typeId === Type.Union; }\n /** @nocollapse */ static isFixedSizeBinary(x) { return x && x.typeId === Type.FixedSizeBinary; }\n /** @nocollapse */ static isFixedSizeList(x) { return x && x.typeId === Type.FixedSizeList; }\n /** @nocollapse */ static isMap(x) { return x && x.typeId === Type.Map; }\n /** @nocollapse */ static isDictionary(x) { return x && x.typeId === Type.Dictionary; }\n get typeId() { return Type.NONE; }\n compareTo(other) {\n return comparer.visit(this, other);\n }\n}\nDataType[Symbol.toStringTag] = ((proto) => {\n proto.children = null;\n proto.ArrayType = Array;\n return proto[Symbol.toStringTag] = 'DataType';\n})(DataType.prototype);\n/** @ignore */\nexport class Null extends DataType {\n toString() { return `Null`; }\n get typeId() { return Type.Null; }\n}\nNull[Symbol.toStringTag] = ((proto) => {\n return proto[Symbol.toStringTag] = 'Null';\n})(Null.prototype);\n/** @ignore */\nclass Int_ extends DataType {\n constructor(isSigned, bitWidth) {\n super();\n this.isSigned = isSigned;\n this.bitWidth = bitWidth;\n }\n get typeId() { return Type.Int; }\n get ArrayType() {\n switch (this.bitWidth) {\n case 8: return this.isSigned ? Int8Array : Uint8Array;\n case 16: return this.isSigned ? Int16Array : Uint16Array;\n case 32: return this.isSigned ? Int32Array : Uint32Array;\n case 64: return this.isSigned ? Int32Array : Uint32Array;\n }\n throw new Error(`Unrecognized ${this[Symbol.toStringTag]} type`);\n }\n toString() { return `${this.isSigned ? `I` : `Ui`}nt${this.bitWidth}`; }\n}\nInt_[Symbol.toStringTag] = ((proto) => {\n proto.isSigned = null;\n proto.bitWidth = null;\n return proto[Symbol.toStringTag] = 'Int';\n})(Int_.prototype);\nexport { Int_ as Int };\n/** @ignore */\nexport class Int8 extends Int_ {\n constructor() { super(true, 8); }\n}\n/** @ignore */\nexport class Int16 extends Int_ {\n constructor() { super(true, 16); }\n}\n/** @ignore */\nexport class Int32 extends Int_ {\n constructor() { super(true, 32); }\n}\n/** @ignore */\nexport class Int64 extends Int_ {\n constructor() { super(true, 64); }\n}\n/** @ignore */\nexport class Uint8 extends Int_ {\n constructor() { super(false, 8); }\n}\n/** @ignore */\nexport class Uint16 extends Int_ {\n constructor() { super(false, 16); }\n}\n/** @ignore */\nexport class Uint32 extends Int_ {\n constructor() { super(false, 32); }\n}\n/** @ignore */\nexport class Uint64 extends Int_ {\n constructor() { super(false, 64); }\n}\nObject.defineProperty(Int8.prototype, 'ArrayType', { value: Int8Array });\nObject.defineProperty(Int16.prototype, 'ArrayType', { value: Int16Array });\nObject.defineProperty(Int32.prototype, 'ArrayType', { value: Int32Array });\nObject.defineProperty(Int64.prototype, 'ArrayType', { value: Int32Array });\nObject.defineProperty(Uint8.prototype, 'ArrayType', { value: Uint8Array });\nObject.defineProperty(Uint16.prototype, 'ArrayType', { value: Uint16Array });\nObject.defineProperty(Uint32.prototype, 'ArrayType', { value: Uint32Array });\nObject.defineProperty(Uint64.prototype, 'ArrayType', { value: Uint32Array });\n/** @ignore */\nexport class Float extends DataType {\n constructor(precision) {\n super();\n this.precision = precision;\n }\n get typeId() { return Type.Float; }\n get ArrayType() {\n switch (this.precision) {\n case Precision.HALF: return Uint16Array;\n case Precision.SINGLE: return Float32Array;\n case Precision.DOUBLE: return Float64Array;\n }\n throw new Error(`Unrecognized ${this[Symbol.toStringTag]} type`);\n }\n toString() { return `Float${(this.precision << 5) || 16}`; }\n}\nFloat[Symbol.toStringTag] = ((proto) => {\n proto.precision = null;\n return proto[Symbol.toStringTag] = 'Float';\n})(Float.prototype);\n/** @ignore */\nexport class Float16 extends Float {\n constructor() { super(Precision.HALF); }\n}\n/** @ignore */\nexport class Float32 extends Float {\n constructor() { super(Precision.SINGLE); }\n}\n/** @ignore */\nexport class Float64 extends Float {\n constructor() { super(Precision.DOUBLE); }\n}\nObject.defineProperty(Float16.prototype, 'ArrayType', { value: Uint16Array });\nObject.defineProperty(Float32.prototype, 'ArrayType', { value: Float32Array });\nObject.defineProperty(Float64.prototype, 'ArrayType', { value: Float64Array });\n/** @ignore */\nexport class Binary extends DataType {\n constructor() {\n super();\n }\n get typeId() { return Type.Binary; }\n toString() { return `Binary`; }\n}\nBinary[Symbol.toStringTag] = ((proto) => {\n proto.ArrayType = Uint8Array;\n return proto[Symbol.toStringTag] = 'Binary';\n})(Binary.prototype);\n/** @ignore */\nexport class Utf8 extends DataType {\n constructor() {\n super();\n }\n get typeId() { return Type.Utf8; }\n toString() { return `Utf8`; }\n}\nUtf8[Symbol.toStringTag] = ((proto) => {\n proto.ArrayType = Uint8Array;\n return proto[Symbol.toStringTag] = 'Utf8';\n})(Utf8.prototype);\n/** @ignore */\nexport class Bool extends DataType {\n constructor() {\n super();\n }\n get typeId() { return Type.Bool; }\n toString() { return `Bool`; }\n}\nBool[Symbol.toStringTag] = ((proto) => {\n proto.ArrayType = Uint8Array;\n return proto[Symbol.toStringTag] = 'Bool';\n})(Bool.prototype);\n/** @ignore */\nexport class Decimal extends DataType {\n constructor(scale, precision) {\n super();\n this.scale = scale;\n this.precision = precision;\n }\n get typeId() { return Type.Decimal; }\n toString() { return `Decimal[${this.precision}e${this.scale > 0 ? `+` : ``}${this.scale}]`; }\n}\nDecimal[Symbol.toStringTag] = ((proto) => {\n proto.scale = null;\n proto.precision = null;\n proto.ArrayType = Uint32Array;\n return proto[Symbol.toStringTag] = 'Decimal';\n})(Decimal.prototype);\n/** @ignore */\nexport class Date_ extends DataType {\n constructor(unit) {\n super();\n this.unit = unit;\n }\n get typeId() { return Type.Date; }\n toString() { return `Date${(this.unit + 1) * 32}<${DateUnit[this.unit]}>`; }\n}\nDate_[Symbol.toStringTag] = ((proto) => {\n proto.unit = null;\n proto.ArrayType = Int32Array;\n return proto[Symbol.toStringTag] = 'Date';\n})(Date_.prototype);\n/** @ignore */\nexport class DateDay extends Date_ {\n constructor() { super(DateUnit.DAY); }\n}\n/** @ignore */\nexport class DateMillisecond extends Date_ {\n constructor() { super(DateUnit.MILLISECOND); }\n}\n/** @ignore */\nclass Time_ extends DataType {\n constructor(unit, bitWidth) {\n super();\n this.unit = unit;\n this.bitWidth = bitWidth;\n }\n get typeId() { return Type.Time; }\n toString() { return `Time${this.bitWidth}<${TimeUnit[this.unit]}>`; }\n}\nTime_[Symbol.toStringTag] = ((proto) => {\n proto.unit = null;\n proto.bitWidth = null;\n proto.ArrayType = Int32Array;\n return proto[Symbol.toStringTag] = 'Time';\n})(Time_.prototype);\nexport { Time_ as Time };\n/** @ignore */\nexport class TimeSecond extends Time_ {\n constructor() { super(TimeUnit.SECOND, 32); }\n}\n/** @ignore */\nexport class TimeMillisecond extends Time_ {\n constructor() { super(TimeUnit.MILLISECOND, 32); }\n}\n/** @ignore */\nexport class TimeMicrosecond extends Time_ {\n constructor() { super(TimeUnit.MICROSECOND, 64); }\n}\n/** @ignore */\nexport class TimeNanosecond extends Time_ {\n constructor() { super(TimeUnit.NANOSECOND, 64); }\n}\n/** @ignore */\nclass Timestamp_ extends DataType {\n constructor(unit, timezone) {\n super();\n this.unit = unit;\n this.timezone = timezone;\n }\n get typeId() { return Type.Timestamp; }\n toString() { return `Timestamp<${TimeUnit[this.unit]}${this.timezone ? `, ${this.timezone}` : ``}>`; }\n}\nTimestamp_[Symbol.toStringTag] = ((proto) => {\n proto.unit = null;\n proto.timezone = null;\n proto.ArrayType = Int32Array;\n return proto[Symbol.toStringTag] = 'Timestamp';\n})(Timestamp_.prototype);\nexport { Timestamp_ as Timestamp };\n/** @ignore */\nexport class TimestampSecond extends Timestamp_ {\n constructor(timezone) { super(TimeUnit.SECOND, timezone); }\n}\n/** @ignore */\nexport class TimestampMillisecond extends Timestamp_ {\n constructor(timezone) { super(TimeUnit.MILLISECOND, timezone); }\n}\n/** @ignore */\nexport class TimestampMicrosecond extends Timestamp_ {\n constructor(timezone) { super(TimeUnit.MICROSECOND, timezone); }\n}\n/** @ignore */\nexport class TimestampNanosecond extends Timestamp_ {\n constructor(timezone) { super(TimeUnit.NANOSECOND, timezone); }\n}\n/** @ignore */\nclass Interval_ extends DataType {\n constructor(unit) {\n super();\n this.unit = unit;\n }\n get typeId() { return Type.Interval; }\n toString() { return `Interval<${IntervalUnit[this.unit]}>`; }\n}\nInterval_[Symbol.toStringTag] = ((proto) => {\n proto.unit = null;\n proto.ArrayType = Int32Array;\n return proto[Symbol.toStringTag] = 'Interval';\n})(Interval_.prototype);\nexport { Interval_ as Interval };\n/** @ignore */\nexport class IntervalDayTime extends Interval_ {\n constructor() { super(IntervalUnit.DAY_TIME); }\n}\n/** @ignore */\nexport class IntervalYearMonth extends Interval_ {\n constructor() { super(IntervalUnit.YEAR_MONTH); }\n}\n/** @ignore */\nexport class List extends DataType {\n constructor(child) {\n super();\n this.children = [child];\n }\n get typeId() { return Type.List; }\n toString() { return `List<${this.valueType}>`; }\n get valueType() { return this.children[0].type; }\n get valueField() { return this.children[0]; }\n get ArrayType() { return this.valueType.ArrayType; }\n}\nList[Symbol.toStringTag] = ((proto) => {\n proto.children = null;\n return proto[Symbol.toStringTag] = 'List';\n})(List.prototype);\n/** @ignore */\nexport class Struct extends DataType {\n constructor(children) {\n super();\n this.children = children;\n }\n get typeId() { return Type.Struct; }\n toString() { return `Struct<{${this.children.map((f) => `${f.name}:${f.type}`).join(`, `)}}>`; }\n}\nStruct[Symbol.toStringTag] = ((proto) => {\n proto.children = null;\n return proto[Symbol.toStringTag] = 'Struct';\n})(Struct.prototype);\n/** @ignore */\nclass Union_ extends DataType {\n constructor(mode, typeIds, children) {\n super();\n this.mode = mode;\n this.children = children;\n this.typeIds = typeIds = Int32Array.from(typeIds);\n this.typeIdToChildIndex = typeIds.reduce((typeIdToChildIndex, typeId, idx) => {\n return (typeIdToChildIndex[typeId] = idx) && typeIdToChildIndex || typeIdToChildIndex;\n }, Object.create(null));\n }\n get typeId() { return Type.Union; }\n toString() {\n return `${this[Symbol.toStringTag]}<${this.children.map((x) => `${x.type}`).join(` | `)}>`;\n }\n}\nUnion_[Symbol.toStringTag] = ((proto) => {\n proto.mode = null;\n proto.typeIds = null;\n proto.children = null;\n proto.typeIdToChildIndex = null;\n proto.ArrayType = Int8Array;\n return proto[Symbol.toStringTag] = 'Union';\n})(Union_.prototype);\nexport { Union_ as Union };\n/** @ignore */\nexport class DenseUnion extends Union_ {\n constructor(typeIds, children) {\n super(UnionMode.Dense, typeIds, children);\n }\n}\n/** @ignore */\nexport class SparseUnion extends Union_ {\n constructor(typeIds, children) {\n super(UnionMode.Sparse, typeIds, children);\n }\n}\n/** @ignore */\nexport class FixedSizeBinary extends DataType {\n constructor(byteWidth) {\n super();\n this.byteWidth = byteWidth;\n }\n get typeId() { return Type.FixedSizeBinary; }\n toString() { return `FixedSizeBinary[${this.byteWidth}]`; }\n}\nFixedSizeBinary[Symbol.toStringTag] = ((proto) => {\n proto.byteWidth = null;\n proto.ArrayType = Uint8Array;\n return proto[Symbol.toStringTag] = 'FixedSizeBinary';\n})(FixedSizeBinary.prototype);\n/** @ignore */\nexport class FixedSizeList extends DataType {\n constructor(listSize, child) {\n super();\n this.listSize = listSize;\n this.children = [child];\n }\n get typeId() { return Type.FixedSizeList; }\n get valueType() { return this.children[0].type; }\n get valueField() { return this.children[0]; }\n get ArrayType() { return this.valueType.ArrayType; }\n toString() { return `FixedSizeList[${this.listSize}]<${this.valueType}>`; }\n}\nFixedSizeList[Symbol.toStringTag] = ((proto) => {\n proto.children = null;\n proto.listSize = null;\n return proto[Symbol.toStringTag] = 'FixedSizeList';\n})(FixedSizeList.prototype);\n/** @ignore */\nexport class Map_ extends DataType {\n constructor(child, keysSorted = false) {\n super();\n this.children = [child];\n this.keysSorted = keysSorted;\n }\n get typeId() { return Type.Map; }\n get keyType() { return this.children[0].type.children[0].type; }\n get valueType() { return this.children[0].type.children[1].type; }\n toString() { return `Map<{${this.children[0].type.children.map((f) => `${f.name}:${f.type}`).join(`, `)}}>`; }\n}\nMap_[Symbol.toStringTag] = ((proto) => {\n proto.children = null;\n proto.keysSorted = null;\n return proto[Symbol.toStringTag] = 'Map_';\n})(Map_.prototype);\n/** @ignore */\nconst getId = ((atomicDictionaryId) => () => ++atomicDictionaryId)(-1);\n/** @ignore */\nexport class Dictionary extends DataType {\n constructor(dictionary, indices, id, isOrdered) {\n super();\n this.indices = indices;\n this.dictionary = dictionary;\n this.isOrdered = isOrdered || false;\n this.id = id == null ? getId() : typeof id === 'number' ? id : id.low;\n }\n get typeId() { return Type.Dictionary; }\n get children() { return this.dictionary.children; }\n get valueType() { return this.dictionary; }\n get ArrayType() { return this.dictionary.ArrayType; }\n toString() { return `Dictionary<${this.indices}, ${this.dictionary}>`; }\n}\nDictionary[Symbol.toStringTag] = ((proto) => {\n proto.id = null;\n proto.indices = null;\n proto.isOrdered = null;\n proto.dictionary = null;\n return proto[Symbol.toStringTag] = 'Dictionary';\n})(Dictionary.prototype);\n/** @ignore */\nexport function strideForType(type) {\n let t = type;\n switch (type.typeId) {\n case Type.Decimal: return 4;\n case Type.Timestamp: return 2;\n case Type.Date: return 1 + t.unit;\n case Type.Interval: return 1 + t.unit;\n case Type.Int: return 1 + +(t.bitWidth > 32);\n case Type.Time: return 1 + +(t.bitWidth > 32);\n case Type.FixedSizeList: return t.listSize;\n case Type.FixedSizeBinary: return t.byteWidth;\n default: return 1;\n }\n}\n\n//# sourceMappingURL=type.mjs.map\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\nimport { truncateBitmap } from './util/bit';\nimport { popcnt_bit_range } from './util/bit';\nimport { BufferType, UnionMode, Type } from './enum';\nimport { strideForType } from './type';\nimport { toArrayBufferView, toUint8Array, toInt32Array } from './util/buffer';\n/** @ignore */ export const kUnknownNullCount = -1;\n/** @ignore */\nexport class Data {\n constructor(type, offset, length, nullCount, buffers, childData, dictionary) {\n this.type = type;\n this.dictionary = dictionary;\n this.offset = Math.floor(Math.max(offset || 0, 0));\n this.length = Math.floor(Math.max(length || 0, 0));\n this._nullCount = Math.floor(Math.max(nullCount || 0, -1));\n this.childData = (childData || []).map((x) => x instanceof Data ? x : x.data);\n let buffer;\n if (buffers instanceof Data) {\n this.stride = buffers.stride;\n this.values = buffers.values;\n this.typeIds = buffers.typeIds;\n this.nullBitmap = buffers.nullBitmap;\n this.valueOffsets = buffers.valueOffsets;\n }\n else {\n this.stride = strideForType(type);\n if (buffers) {\n (buffer = buffers[0]) && (this.valueOffsets = buffer);\n (buffer = buffers[1]) && (this.values = buffer);\n (buffer = buffers[2]) && (this.nullBitmap = buffer);\n (buffer = buffers[3]) && (this.typeIds = buffer);\n }\n }\n }\n get typeId() { return this.type.typeId; }\n get ArrayType() { return this.type.ArrayType; }\n get buffers() {\n return [this.valueOffsets, this.values, this.nullBitmap, this.typeIds];\n }\n get byteLength() {\n let byteLength = 0;\n let { valueOffsets, values, nullBitmap, typeIds } = this;\n valueOffsets && (byteLength += valueOffsets.byteLength);\n values && (byteLength += values.byteLength);\n nullBitmap && (byteLength += nullBitmap.byteLength);\n typeIds && (byteLength += typeIds.byteLength);\n return this.childData.reduce((byteLength, child) => byteLength + child.byteLength, byteLength);\n }\n get nullCount() {\n let nullCount = this._nullCount;\n let nullBitmap;\n if (nullCount <= kUnknownNullCount && (nullBitmap = this.nullBitmap)) {\n this._nullCount = nullCount = this.length - popcnt_bit_range(nullBitmap, this.offset, this.offset + this.length);\n }\n return nullCount;\n }\n clone(type, offset = this.offset, length = this.length, nullCount = this._nullCount, buffers = this, childData = this.childData) {\n return new Data(type, offset, length, nullCount, buffers, childData, this.dictionary);\n }\n slice(offset, length) {\n const { stride, typeId, childData } = this;\n // +true === 1, +false === 0, so this means\n // we keep nullCount at 0 if it's already 0,\n // otherwise set to the invalidated flag -1\n const nullCount = +(this._nullCount === 0) - 1;\n const childStride = typeId === 16 /* FixedSizeList */ ? stride : 1;\n const buffers = this._sliceBuffers(offset, length, stride, typeId);\n return this.clone(this.type, this.offset + offset, length, nullCount, buffers, \n // Don't slice children if we have value offsets (the variable-width types)\n (!childData.length || this.valueOffsets) ? childData : this._sliceChildren(childData, childStride * offset, childStride * length));\n }\n _changeLengthAndBackfillNullBitmap(newLength) {\n if (this.typeId === Type.Null) {\n return this.clone(this.type, 0, newLength, 0);\n }\n const { length, nullCount } = this;\n // start initialized with 0s (nulls), then fill from 0 to length with 1s (not null)\n const bitmap = new Uint8Array(((newLength + 63) & ~63) >> 3).fill(255, 0, length >> 3);\n // set all the bits in the last byte (up to bit `length - length % 8`) to 1 (not null)\n bitmap[length >> 3] = (1 << (length - (length & ~7))) - 1;\n // if we have a nullBitmap, truncate + slice and set it over the pre-filled 1s\n if (nullCount > 0) {\n bitmap.set(truncateBitmap(this.offset, length, this.nullBitmap), 0);\n }\n const buffers = this.buffers;\n buffers[BufferType.VALIDITY] = bitmap;\n return this.clone(this.type, 0, newLength, nullCount + (newLength - length), buffers);\n }\n _sliceBuffers(offset, length, stride, typeId) {\n let arr, { buffers } = this;\n // If typeIds exist, slice the typeIds buffer\n (arr = buffers[BufferType.TYPE]) && (buffers[BufferType.TYPE] = arr.subarray(offset, offset + length));\n // If offsets exist, only slice the offsets buffer\n (arr = buffers[BufferType.OFFSET]) && (buffers[BufferType.OFFSET] = arr.subarray(offset, offset + length + 1)) ||\n // Otherwise if no offsets, slice the data buffer. Don't slice the data vector for Booleans, since the offset goes by bits not bytes\n (arr = buffers[BufferType.DATA]) && (buffers[BufferType.DATA] = typeId === 6 ? arr : arr.subarray(stride * offset, stride * (offset + length)));\n return buffers;\n }\n _sliceChildren(childData, offset, length) {\n return childData.map((child) => child.slice(offset, length));\n }\n //\n // Convenience methods for creating Data instances for each of the Arrow Vector types\n //\n /** @nocollapse */\n static new(type, offset, length, nullCount, buffers, childData, dictionary) {\n if (buffers instanceof Data) {\n buffers = buffers.buffers;\n }\n else if (!buffers) {\n buffers = [];\n }\n switch (type.typeId) {\n case Type.Null: return Data.Null(type, offset, length);\n case Type.Int: return Data.Int(type, offset, length, nullCount || 0, buffers[BufferType.VALIDITY], buffers[BufferType.DATA] || []);\n case Type.Dictionary: return Data.Dictionary(type, offset, length, nullCount || 0, buffers[BufferType.VALIDITY], buffers[BufferType.DATA] || [], dictionary);\n case Type.Float: return Data.Float(type, offset, length, nullCount || 0, buffers[BufferType.VALIDITY], buffers[BufferType.DATA] || []);\n case Type.Bool: return Data.Bool(type, offset, length, nullCount || 0, buffers[BufferType.VALIDITY], buffers[BufferType.DATA] || []);\n case Type.Decimal: return Data.Decimal(type, offset, length, nullCount || 0, buffers[BufferType.VALIDITY], buffers[BufferType.DATA] || []);\n case Type.Date: return Data.Date(type, offset, length, nullCount || 0, buffers[BufferType.VALIDITY], buffers[BufferType.DATA] || []);\n case Type.Time: return Data.Time(type, offset, length, nullCount || 0, buffers[BufferType.VALIDITY], buffers[BufferType.DATA] || []);\n case Type.Timestamp: return Data.Timestamp(type, offset, length, nullCount || 0, buffers[BufferType.VALIDITY], buffers[BufferType.DATA] || []);\n case Type.Interval: return Data.Interval(type, offset, length, nullCount || 0, buffers[BufferType.VALIDITY], buffers[BufferType.DATA] || []);\n case Type.FixedSizeBinary: return Data.FixedSizeBinary(type, offset, length, nullCount || 0, buffers[BufferType.VALIDITY], buffers[BufferType.DATA] || []);\n case Type.Binary: return Data.Binary(type, offset, length, nullCount || 0, buffers[BufferType.VALIDITY], buffers[BufferType.OFFSET] || [], buffers[BufferType.DATA] || []);\n case Type.Utf8: return Data.Utf8(type, offset, length, nullCount || 0, buffers[BufferType.VALIDITY], buffers[BufferType.OFFSET] || [], buffers[BufferType.DATA] || []);\n case Type.List: return Data.List(type, offset, length, nullCount || 0, buffers[BufferType.VALIDITY], buffers[BufferType.OFFSET] || [], (childData || [])[0]);\n case Type.FixedSizeList: return Data.FixedSizeList(type, offset, length, nullCount || 0, buffers[BufferType.VALIDITY], (childData || [])[0]);\n case Type.Struct: return Data.Struct(type, offset, length, nullCount || 0, buffers[BufferType.VALIDITY], childData || []);\n case Type.Map: return Data.Map(type, offset, length, nullCount || 0, buffers[BufferType.VALIDITY], buffers[BufferType.OFFSET] || [], (childData || [])[0]);\n case Type.Union: return Data.Union(type, offset, length, nullCount || 0, buffers[BufferType.VALIDITY], buffers[BufferType.TYPE] || [], buffers[BufferType.OFFSET] || childData, childData);\n }\n throw new Error(`Unrecognized typeId ${type.typeId}`);\n }\n /** @nocollapse */\n static Null(type, offset, length) {\n return new Data(type, offset, length, 0);\n }\n /** @nocollapse */\n static Int(type, offset, length, nullCount, nullBitmap, data) {\n return new Data(type, offset, length, nullCount, [undefined, toArrayBufferView(type.ArrayType, data), toUint8Array(nullBitmap)]);\n }\n /** @nocollapse */\n static Dictionary(type, offset, length, nullCount, nullBitmap, data, dictionary) {\n return new Data(type, offset, length, nullCount, [undefined, toArrayBufferView(type.indices.ArrayType, data), toUint8Array(nullBitmap)], [], dictionary);\n }\n /** @nocollapse */\n static Float(type, offset, length, nullCount, nullBitmap, data) {\n return new Data(type, offset, length, nullCount, [undefined, toArrayBufferView(type.ArrayType, data), toUint8Array(nullBitmap)]);\n }\n /** @nocollapse */\n static Bool(type, offset, length, nullCount, nullBitmap, data) {\n return new Data(type, offset, length, nullCount, [undefined, toArrayBufferView(type.ArrayType, data), toUint8Array(nullBitmap)]);\n }\n /** @nocollapse */\n static Decimal(type, offset, length, nullCount, nullBitmap, data) {\n return new Data(type, offset, length, nullCount, [undefined, toArrayBufferView(type.ArrayType, data), toUint8Array(nullBitmap)]);\n }\n /** @nocollapse */\n static Date(type, offset, length, nullCount, nullBitmap, data) {\n return new Data(type, offset, length, nullCount, [undefined, toArrayBufferView(type.ArrayType, data), toUint8Array(nullBitmap)]);\n }\n /** @nocollapse */\n static Time(type, offset, length, nullCount, nullBitmap, data) {\n return new Data(type, offset, length, nullCount, [undefined, toArrayBufferView(type.ArrayType, data), toUint8Array(nullBitmap)]);\n }\n /** @nocollapse */\n static Timestamp(type, offset, length, nullCount, nullBitmap, data) {\n return new Data(type, offset, length, nullCount, [undefined, toArrayBufferView(type.ArrayType, data), toUint8Array(nullBitmap)]);\n }\n /** @nocollapse */\n static Interval(type, offset, length, nullCount, nullBitmap, data) {\n return new Data(type, offset, length, nullCount, [undefined, toArrayBufferView(type.ArrayType, data), toUint8Array(nullBitmap)]);\n }\n /** @nocollapse */\n static FixedSizeBinary(type, offset, length, nullCount, nullBitmap, data) {\n return new Data(type, offset, length, nullCount, [undefined, toArrayBufferView(type.ArrayType, data), toUint8Array(nullBitmap)]);\n }\n /** @nocollapse */\n static Binary(type, offset, length, nullCount, nullBitmap, valueOffsets, data) {\n return new Data(type, offset, length, nullCount, [toInt32Array(valueOffsets), toUint8Array(data), toUint8Array(nullBitmap)]);\n }\n /** @nocollapse */\n static Utf8(type, offset, length, nullCount, nullBitmap, valueOffsets, data) {\n return new Data(type, offset, length, nullCount, [toInt32Array(valueOffsets), toUint8Array(data), toUint8Array(nullBitmap)]);\n }\n /** @nocollapse */\n static List(type, offset, length, nullCount, nullBitmap, valueOffsets, child) {\n return new Data(type, offset, length, nullCount, [toInt32Array(valueOffsets), undefined, toUint8Array(nullBitmap)], [child]);\n }\n /** @nocollapse */\n static FixedSizeList(type, offset, length, nullCount, nullBitmap, child) {\n return new Data(type, offset, length, nullCount, [undefined, undefined, toUint8Array(nullBitmap)], [child]);\n }\n /** @nocollapse */\n static Struct(type, offset, length, nullCount, nullBitmap, children) {\n return new Data(type, offset, length, nullCount, [undefined, undefined, toUint8Array(nullBitmap)], children);\n }\n /** @nocollapse */\n static Map(type, offset, length, nullCount, nullBitmap, valueOffsets, child) {\n return new Data(type, offset, length, nullCount, [toInt32Array(valueOffsets), undefined, toUint8Array(nullBitmap)], [child]);\n }\n /** @nocollapse */\n static Union(type, offset, length, nullCount, nullBitmap, typeIds, valueOffsetsOrChildren, children) {\n const buffers = [\n undefined, undefined,\n toUint8Array(nullBitmap),\n toArrayBufferView(type.ArrayType, typeIds)\n ];\n if (type.mode === UnionMode.Sparse) {\n return new Data(type, offset, length, nullCount, buffers, valueOffsetsOrChildren);\n }\n buffers[BufferType.OFFSET] = toInt32Array(valueOffsetsOrChildren);\n return new Data(type, offset, length, nullCount, buffers, children);\n }\n}\nData.prototype.childData = Object.freeze([]);\n\n//# sourceMappingURL=data.mjs.map\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\n/** @ignore */ const undf = void (0);\n/** @ignore */\nexport function valueToString(x) {\n if (x === null) {\n return 'null';\n }\n if (x === undf) {\n return 'undefined';\n }\n switch (typeof x) {\n case 'number': return `${x}`;\n case 'bigint': return `${x}`;\n case 'string': return `\"${x}\"`;\n }\n // If [Symbol.toPrimitive] is implemented (like in BN)\n // use it instead of JSON.stringify(). This ensures we\n // print BigInts, Decimals, and Binary in their native\n // representation\n if (typeof x[Symbol.toPrimitive] === 'function') {\n return x[Symbol.toPrimitive]('string');\n }\n return ArrayBuffer.isView(x) ? `[${x}]` : JSON.stringify(x);\n}\n\n//# sourceMappingURL=pretty.mjs.map\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\nimport { valueToString } from '../util/pretty';\nimport { BigIntAvailable } from '../util/compat';\n/**\n * Dynamically compile the null values into an `isValid()` function whose\n * implementation is a switch statement. Microbenchmarks in v8 indicate\n * this approach is 25% faster than using an ES6 Map.\n *\n * @example\n * console.log(createIsValidFunction([null, 'N/A', NaN]));\n * `function (x) {\n * if (x !== x) return false;\n * switch (x) {\n * case null:\n * case \"N/A\":\n * return false;\n * }\n * return true;\n * }`\n *\n * @ignore\n * @param nullValues\n */\nexport function createIsValidFunction(nullValues) {\n if (!nullValues || nullValues.length <= 0) {\n // @ts-ignore\n return function isValid(value) { return true; };\n }\n let fnBody = '';\n let noNaNs = nullValues.filter((x) => x === x);\n if (noNaNs.length > 0) {\n fnBody = `\n switch (x) {${noNaNs.map((x) => `\n case ${valueToCase(x)}:`).join('')}\n return false;\n }`;\n }\n // NaN doesn't equal anything including itself, so it doesn't work as a\n // switch case. Instead we must explicitly check for NaN before the switch.\n if (nullValues.length !== noNaNs.length) {\n fnBody = `if (x !== x) return false;\\n${fnBody}`;\n }\n return new Function(`x`, `${fnBody}\\nreturn true;`);\n}\n/** @ignore */\nfunction valueToCase(x) {\n if (typeof x !== 'bigint') {\n return valueToString(x);\n }\n else if (BigIntAvailable) {\n return `${valueToString(x)}n`;\n }\n return `\"${valueToString(x)}\"`;\n}\n\n//# sourceMappingURL=valid.mjs.map\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\nimport { memcpy } from '../util/buffer';\nimport { BigIntAvailable, BigInt64Array, BigUint64Array } from '../util/compat';\n/** @ignore */\nconst roundLengthUpToNearest64Bytes = (len, BPE) => ((((len * BPE) + 63) & ~63) || 64) / BPE;\n/** @ignore */\nconst sliceOrExtendArray = (arr, len = 0) => (arr.length >= len ? arr.subarray(0, len) : memcpy(new arr.constructor(len), arr, 0));\n/** @ignore */\nexport class BufferBuilder {\n constructor(buffer, stride = 1) {\n this.buffer = buffer;\n this.stride = stride;\n this.BYTES_PER_ELEMENT = buffer.BYTES_PER_ELEMENT;\n this.ArrayType = buffer.constructor;\n this._resize(this.length = buffer.length / stride | 0);\n }\n get byteLength() { return this.length * this.stride * this.BYTES_PER_ELEMENT | 0; }\n get reservedLength() { return this.buffer.length / this.stride; }\n get reservedByteLength() { return this.buffer.byteLength; }\n // @ts-ignore\n set(index, value) { return this; }\n append(value) { return this.set(this.length, value); }\n reserve(extra) {\n if (extra > 0) {\n this.length += extra;\n const stride = this.stride;\n const length = this.length * stride;\n const reserved = this.buffer.length;\n if (length >= reserved) {\n this._resize(reserved === 0\n ? roundLengthUpToNearest64Bytes(length * 1, this.BYTES_PER_ELEMENT)\n : roundLengthUpToNearest64Bytes(length * 2, this.BYTES_PER_ELEMENT));\n }\n }\n return this;\n }\n flush(length = this.length) {\n length = roundLengthUpToNearest64Bytes(length * this.stride, this.BYTES_PER_ELEMENT);\n const array = sliceOrExtendArray(this.buffer, length);\n this.clear();\n return array;\n }\n clear() {\n this.length = 0;\n this._resize(0);\n return this;\n }\n _resize(newLength) {\n return this.buffer = memcpy(new this.ArrayType(newLength), this.buffer);\n }\n}\nBufferBuilder.prototype.offset = 0;\n/** @ignore */\nexport class DataBufferBuilder extends BufferBuilder {\n last() { return this.get(this.length - 1); }\n get(index) { return this.buffer[index]; }\n set(index, value) {\n this.reserve(index - this.length + 1);\n this.buffer[index * this.stride] = value;\n return this;\n }\n}\n/** @ignore */\nexport class BitmapBufferBuilder extends DataBufferBuilder {\n constructor(data = new Uint8Array(0)) {\n super(data, 1 / 8);\n this.numValid = 0;\n }\n get numInvalid() { return this.length - this.numValid; }\n get(idx) { return this.buffer[idx >> 3] >> idx % 8 & 1; }\n set(idx, val) {\n const { buffer } = this.reserve(idx - this.length + 1);\n const byte = idx >> 3, bit = idx % 8, cur = buffer[byte] >> bit & 1;\n // If `val` is truthy and the current bit is 0, flip it to 1 and increment `numValid`.\n // If `val` is falsey and the current bit is 1, flip it to 0 and decrement `numValid`.\n val ? cur === 0 && ((buffer[byte] |= (1 << bit)), ++this.numValid)\n : cur === 1 && ((buffer[byte] &= ~(1 << bit)), --this.numValid);\n return this;\n }\n clear() {\n this.numValid = 0;\n return super.clear();\n }\n}\n/** @ignore */\nexport class OffsetsBufferBuilder extends DataBufferBuilder {\n constructor(data = new Int32Array(1)) { super(data, 1); }\n append(value) {\n return this.set(this.length - 1, value);\n }\n set(index, value) {\n const offset = this.length - 1;\n const buffer = this.reserve(index - offset + 1).buffer;\n if (offset < index++) {\n buffer.fill(buffer[offset], offset, index);\n }\n buffer[index] = buffer[index - 1] + value;\n return this;\n }\n flush(length = this.length - 1) {\n if (length > this.length) {\n this.set(length - 1, 0);\n }\n return super.flush(length + 1);\n }\n}\n/** @ignore */\nexport class WideBufferBuilder extends BufferBuilder {\n get ArrayType64() {\n return this._ArrayType64 || (this._ArrayType64 = (this.buffer instanceof Int32Array ? BigInt64Array : BigUint64Array));\n }\n set(index, value) {\n this.reserve(index - this.length + 1);\n switch (typeof value) {\n case 'bigint':\n this.buffer64[index] = value;\n break;\n case 'number':\n this.buffer[index * this.stride] = value;\n break;\n default: this.buffer.set(value, index * this.stride);\n }\n return this;\n }\n _resize(newLength) {\n const data = super._resize(newLength);\n const length = data.byteLength / (this.BYTES_PER_ELEMENT * this.stride);\n if (BigIntAvailable) {\n this.buffer64 = new this.ArrayType64(data.buffer, data.byteOffset, length);\n }\n return data;\n }\n}\n\n//# sourceMappingURL=buffer.mjs.map\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\nimport { Vector } from './vector';\nimport { BufferType } from './enum';\nimport { Data } from './data';\nimport { createIsValidFunction } from './builder/valid';\nimport { BitmapBufferBuilder, DataBufferBuilder, OffsetsBufferBuilder } from './builder/buffer';\nimport { strideForType } from './type';\n/**\n * An abstract base class for types that construct Arrow Vectors from arbitrary JavaScript values.\n *\n * A `Builder` is responsible for writing arbitrary JavaScript values\n * to ArrayBuffers and/or child Builders according to the Arrow specification\n * for each DataType, creating or resizing the underlying ArrayBuffers as necessary.\n *\n * The `Builder` for each Arrow `DataType` handles converting and appending\n * values for a given `DataType`. The high-level {@link Builder.new `Builder.new()`} convenience\n * method creates the specific `Builder` subclass for the supplied `DataType`.\n *\n * Once created, `Builder` instances support both appending values to the end\n * of the `Builder`, and random-access writes to specific indices\n * (`Builder.prototype.append(value)` is a convenience method for\n * `builder.set(builder.length, value)`). Appending or setting values beyond the\n * Builder's current length may cause the builder to grow its underlying buffers\n * or child Builders (if applicable) to accommodate the new values.\n *\n * After enough values have been written to a `Builder`, `Builder.prototype.flush()`\n * will commit the values to the underlying ArrayBuffers (or child Builders). The\n * internal Builder state will be reset, and an instance of `Data` is returned.\n * Alternatively, `Builder.prototype.toVector()` will flush the `Builder` and return\n * an instance of `Vector` instead.\n *\n * When there are no more values to write, use `Builder.prototype.finish()` to\n * finalize the `Builder`. This does not reset the internal state, so it is\n * necessary to call `Builder.prototype.flush()` or `toVector()` one last time\n * if there are still values queued to be flushed.\n *\n * Note: calling `Builder.prototype.finish()` is required when using a `DictionaryBuilder`,\n * because this is when it flushes the values that have been enqueued in its internal\n * dictionary's `Builder`, and creates the `dictionaryVector` for the `Dictionary` `DataType`.\n *\n * ```ts\n * import { Builder, Utf8 } from 'apache-arrow';\n *\n * const utf8Builder = Builder.new({\n * type: new Utf8(),\n * nullValues: [null, 'n/a']\n * });\n *\n * utf8Builder\n * .append('hello')\n * .append('n/a')\n * .append('world')\n * .append(null);\n *\n * const utf8Vector = utf8Builder.finish().toVector();\n *\n * console.log(utf8Vector.toJSON());\n * // > [\"hello\", null, \"world\", null]\n * ```\n *\n * @typeparam T The `DataType` of this `Builder`.\n * @typeparam TNull The type(s) of values which will be considered null-value sentinels.\n */\nexport class Builder {\n /**\n * Construct a builder with the given Arrow DataType with optional null values,\n * which will be interpreted as \"null\" when set or appended to the `Builder`.\n * @param {{ type: T, nullValues?: any[] }} options A `BuilderOptions` object used to create this `Builder`.\n */\n constructor({ 'type': type, 'nullValues': nulls }) {\n /**\n * The number of values written to the `Builder` that haven't been flushed yet.\n * @readonly\n */\n this.length = 0;\n /**\n * A boolean indicating whether `Builder.prototype.finish()` has been called on this `Builder`.\n * @readonly\n */\n this.finished = false;\n this.type = type;\n this.children = [];\n this.nullValues = nulls;\n this.stride = strideForType(type);\n this._nulls = new BitmapBufferBuilder();\n if (nulls && nulls.length > 0) {\n this._isValid = createIsValidFunction(nulls);\n }\n }\n /**\n * Create a `Builder` instance based on the `type` property of the supplied `options` object.\n * @param {BuilderOptions} options An object with a required `DataType` instance\n * and other optional parameters to be passed to the `Builder` subclass for the given `type`.\n *\n * @typeparam T The `DataType` of the `Builder` to create.\n * @typeparam TNull The type(s) of values which will be considered null-value sentinels.\n * @nocollapse\n */\n // @ts-ignore\n static new(options) { }\n /** @nocollapse */\n // @ts-ignore\n static throughNode(options) {\n throw new Error(`\"throughNode\" not available in this environment`);\n }\n /** @nocollapse */\n // @ts-ignore\n static throughDOM(options) {\n throw new Error(`\"throughDOM\" not available in this environment`);\n }\n /**\n * Transform a synchronous `Iterable` of arbitrary JavaScript values into a\n * sequence of Arrow Vector following the chunking semantics defined in\n * the supplied `options` argument.\n *\n * This function returns a function that accepts an `Iterable` of values to\n * transform. When called, this function returns an Iterator of `Vector`.\n *\n * The resulting `Iterator>` yields Vectors based on the\n * `queueingStrategy` and `highWaterMark` specified in the `options` argument.\n *\n * * If `queueingStrategy` is `\"count\"` (or omitted), The `Iterator>`\n * will flush the underlying `Builder` (and yield a new `Vector`) once the\n * Builder's `length` reaches or exceeds the supplied `highWaterMark`.\n * * If `queueingStrategy` is `\"bytes\"`, the `Iterator>` will flush\n * the underlying `Builder` (and yield a new `Vector`) once its `byteLength`\n * reaches or exceeds the supplied `highWaterMark`.\n *\n * @param {IterableBuilderOptions} options An object of properties which determine the `Builder` to create and the chunking semantics to use.\n * @returns A function which accepts a JavaScript `Iterable` of values to\n * write, and returns an `Iterator` that yields Vectors according\n * to the chunking semantics defined in the `options` argument.\n * @nocollapse\n */\n static throughIterable(options) {\n return throughIterable(options);\n }\n /**\n * Transform an `AsyncIterable` of arbitrary JavaScript values into a\n * sequence of Arrow Vector following the chunking semantics defined in\n * the supplied `options` argument.\n *\n * This function returns a function that accepts an `AsyncIterable` of values to\n * transform. When called, this function returns an AsyncIterator of `Vector`.\n *\n * The resulting `AsyncIterator>` yields Vectors based on the\n * `queueingStrategy` and `highWaterMark` specified in the `options` argument.\n *\n * * If `queueingStrategy` is `\"count\"` (or omitted), The `AsyncIterator>`\n * will flush the underlying `Builder` (and yield a new `Vector`) once the\n * Builder's `length` reaches or exceeds the supplied `highWaterMark`.\n * * If `queueingStrategy` is `\"bytes\"`, the `AsyncIterator>` will flush\n * the underlying `Builder` (and yield a new `Vector`) once its `byteLength`\n * reaches or exceeds the supplied `highWaterMark`.\n *\n * @param {IterableBuilderOptions} options An object of properties which determine the `Builder` to create and the chunking semantics to use.\n * @returns A function which accepts a JavaScript `AsyncIterable` of values\n * to write, and returns an `AsyncIterator` that yields Vectors\n * according to the chunking semantics defined in the `options`\n * argument.\n * @nocollapse\n */\n static throughAsyncIterable(options) {\n return throughAsyncIterable(options);\n }\n /**\n * Flush the `Builder` and return a `Vector`.\n * @returns {Vector} A `Vector` of the flushed values.\n */\n toVector() { return Vector.new(this.flush()); }\n get ArrayType() { return this.type.ArrayType; }\n get nullCount() { return this._nulls.numInvalid; }\n get numChildren() { return this.children.length; }\n /**\n * @returns The aggregate length (in bytes) of the values that have been written.\n */\n get byteLength() {\n let size = 0;\n this._offsets && (size += this._offsets.byteLength);\n this._values && (size += this._values.byteLength);\n this._nulls && (size += this._nulls.byteLength);\n this._typeIds && (size += this._typeIds.byteLength);\n return this.children.reduce((size, child) => size + child.byteLength, size);\n }\n /**\n * @returns The aggregate number of rows that have been reserved to write new values.\n */\n get reservedLength() {\n return this._nulls.reservedLength;\n }\n /**\n * @returns The aggregate length (in bytes) that has been reserved to write new values.\n */\n get reservedByteLength() {\n let size = 0;\n this._offsets && (size += this._offsets.reservedByteLength);\n this._values && (size += this._values.reservedByteLength);\n this._nulls && (size += this._nulls.reservedByteLength);\n this._typeIds && (size += this._typeIds.reservedByteLength);\n return this.children.reduce((size, child) => size + child.reservedByteLength, size);\n }\n get valueOffsets() { return this._offsets ? this._offsets.buffer : null; }\n get values() { return this._values ? this._values.buffer : null; }\n get nullBitmap() { return this._nulls ? this._nulls.buffer : null; }\n get typeIds() { return this._typeIds ? this._typeIds.buffer : null; }\n /**\n * Appends a value (or null) to this `Builder`.\n * This is equivalent to `builder.set(builder.length, value)`.\n * @param {T['TValue'] | TNull } value The value to append.\n */\n append(value) { return this.set(this.length, value); }\n /**\n * Validates whether a value is valid (true), or null (false)\n * @param {T['TValue'] | TNull } value The value to compare against null the value representations\n */\n // @ts-ignore\n isValid(value) { return this._isValid(value); }\n /**\n * Write a value (or null-value sentinel) at the supplied index.\n * If the value matches one of the null-value representations, a 1-bit is\n * written to the null `BitmapBufferBuilder`. Otherwise, a 0 is written to\n * the null `BitmapBufferBuilder`, and the value is passed to\n * `Builder.prototype.setValue()`.\n * @param {number} index The index of the value to write.\n * @param {T['TValue'] | TNull } value The value to write at the supplied index.\n * @returns {this} The updated `Builder` instance.\n */\n set(index, value) {\n if (this.setValid(index, this.isValid(value))) {\n this.setValue(index, value);\n }\n return this;\n }\n /**\n * Write a value to the underlying buffers at the supplied index, bypassing\n * the null-value check. This is a low-level method that\n * @param {number} index\n * @param {T['TValue'] | TNull } value\n */\n // @ts-ignore\n setValue(index, value) { this._setValue(this, index, value); }\n setValid(index, valid) {\n this.length = this._nulls.set(index, +valid).length;\n return valid;\n }\n // @ts-ignore\n addChild(child, name = `${this.numChildren}`) {\n throw new Error(`Cannot append children to non-nested type \"${this.type}\"`);\n }\n /**\n * Retrieve the child `Builder` at the supplied `index`, or null if no child\n * exists at that index.\n * @param {number} index The index of the child `Builder` to retrieve.\n * @returns {Builder | null} The child Builder at the supplied index or null.\n */\n getChildAt(index) {\n return this.children[index] || null;\n }\n /**\n * Commit all the values that have been written to their underlying\n * ArrayBuffers, including any child Builders if applicable, and reset\n * the internal `Builder` state.\n * @returns A `Data` of the buffers and childData representing the values written.\n */\n flush() {\n const buffers = [];\n const values = this._values;\n const offsets = this._offsets;\n const typeIds = this._typeIds;\n const { length, nullCount } = this;\n if (typeIds) { /* Unions */\n buffers[BufferType.TYPE] = typeIds.flush(length);\n // DenseUnions\n offsets && (buffers[BufferType.OFFSET] = offsets.flush(length));\n }\n else if (offsets) { /* Variable-width primitives (Binary, Utf8) and Lists */\n // Binary, Utf8\n values && (buffers[BufferType.DATA] = values.flush(offsets.last()));\n buffers[BufferType.OFFSET] = offsets.flush(length);\n }\n else if (values) { /* Fixed-width primitives (Int, Float, Decimal, Time, Timestamp, and Interval) */\n buffers[BufferType.DATA] = values.flush(length);\n }\n nullCount > 0 && (buffers[BufferType.VALIDITY] = this._nulls.flush(length));\n const data = Data.new(this.type, 0, length, nullCount, buffers, this.children.map((child) => child.flush()));\n this.clear();\n return data;\n }\n /**\n * Finalize this `Builder`, and child builders if applicable.\n * @returns {this} The finalized `Builder` instance.\n */\n finish() {\n this.finished = true;\n this.children.forEach((child) => child.finish());\n return this;\n }\n /**\n * Clear this Builder's internal state, including child Builders if applicable, and reset the length to 0.\n * @returns {this} The cleared `Builder` instance.\n */\n clear() {\n this.length = 0;\n this._offsets && (this._offsets.clear());\n this._values && (this._values.clear());\n this._nulls && (this._nulls.clear());\n this._typeIds && (this._typeIds.clear());\n this.children.forEach((child) => child.clear());\n return this;\n }\n}\nBuilder.prototype.length = 1;\nBuilder.prototype.stride = 1;\nBuilder.prototype.children = null;\nBuilder.prototype.finished = false;\nBuilder.prototype.nullValues = null;\nBuilder.prototype._isValid = () => true;\n/** @ignore */\nexport class FixedWidthBuilder extends Builder {\n constructor(opts) {\n super(opts);\n this._values = new DataBufferBuilder(new this.ArrayType(0), this.stride);\n }\n setValue(index, value) {\n const values = this._values;\n values.reserve(index - values.length + 1);\n return super.setValue(index, value);\n }\n}\n/** @ignore */\nexport class VariableWidthBuilder extends Builder {\n constructor(opts) {\n super(opts);\n this._pendingLength = 0;\n this._offsets = new OffsetsBufferBuilder();\n }\n setValue(index, value) {\n const pending = this._pending || (this._pending = new Map());\n const current = pending.get(index);\n current && (this._pendingLength -= current.length);\n this._pendingLength += value.length;\n pending.set(index, value);\n }\n setValid(index, isValid) {\n if (!super.setValid(index, isValid)) {\n (this._pending || (this._pending = new Map())).set(index, undefined);\n return false;\n }\n return true;\n }\n clear() {\n this._pendingLength = 0;\n this._pending = undefined;\n return super.clear();\n }\n flush() {\n this._flush();\n return super.flush();\n }\n finish() {\n this._flush();\n return super.finish();\n }\n _flush() {\n const pending = this._pending;\n const pendingLength = this._pendingLength;\n this._pendingLength = 0;\n this._pending = undefined;\n if (pending && pending.size > 0) {\n this._flushPending(pending, pendingLength);\n }\n return this;\n }\n}\n/** @ignore */\nfunction throughIterable(options) {\n const { ['queueingStrategy']: queueingStrategy = 'count' } = options;\n const { ['highWaterMark']: highWaterMark = queueingStrategy !== 'bytes' ? 1000 : 2 ** 14 } = options;\n const sizeProperty = queueingStrategy !== 'bytes' ? 'length' : 'byteLength';\n return function* (source) {\n let numChunks = 0;\n let builder = Builder.new(options);\n for (const value of source) {\n if (builder.append(value)[sizeProperty] >= highWaterMark) {\n ++numChunks && (yield builder.toVector());\n }\n }\n if (builder.finish().length > 0 || numChunks === 0) {\n yield builder.toVector();\n }\n };\n}\n/** @ignore */\nfunction throughAsyncIterable(options) {\n const { ['queueingStrategy']: queueingStrategy = 'count' } = options;\n const { ['highWaterMark']: highWaterMark = queueingStrategy !== 'bytes' ? 1000 : 2 ** 14 } = options;\n const sizeProperty = queueingStrategy !== 'bytes' ? 'length' : 'byteLength';\n return async function* (source) {\n let numChunks = 0;\n let builder = Builder.new(options);\n for await (const value of source) {\n if (builder.append(value)[sizeProperty] >= highWaterMark) {\n ++numChunks && (yield builder.toVector());\n }\n }\n if (builder.finish().length > 0 || numChunks === 0) {\n yield builder.toVector();\n }\n };\n}\n\n//# sourceMappingURL=builder.mjs.map\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\nimport { BitmapBufferBuilder } from './buffer';\nimport { Builder } from '../builder';\n/** @ignore */\nexport class BoolBuilder extends Builder {\n constructor(options) {\n super(options);\n this._values = new BitmapBufferBuilder();\n }\n setValue(index, value) {\n this._values.set(index, +value);\n }\n}\n\n//# sourceMappingURL=bool.mjs.map\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\nimport { Builder } from '../builder';\n/** @ignore */\nexport class NullBuilder extends Builder {\n // @ts-ignore\n setValue(index, value) { }\n setValid(index, valid) {\n this.length = Math.max(index + 1, this.length);\n return valid;\n }\n}\n\n//# sourceMappingURL=null.mjs.map\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\nimport { FixedWidthBuilder } from '../builder';\n/** @ignore */\nexport class DateBuilder extends FixedWidthBuilder {\n}\n/** @ignore */\nexport class DateDayBuilder extends DateBuilder {\n}\n/** @ignore */\nexport class DateMillisecondBuilder extends DateBuilder {\n}\n\n//# sourceMappingURL=date.mjs.map\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\nimport { FixedWidthBuilder } from '../builder';\n/** @ignore */\nexport class DecimalBuilder extends FixedWidthBuilder {\n}\n\n//# sourceMappingURL=decimal.mjs.map\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\nimport { Dictionary } from '../type';\nimport { Builder } from '../builder';\n/** @ignore */\nexport class DictionaryBuilder extends Builder {\n constructor({ 'type': type, 'nullValues': nulls, 'dictionaryHashFunction': hashFn }) {\n super({ type: new Dictionary(type.dictionary, type.indices, type.id, type.isOrdered) });\n this._nulls = null;\n this._dictionaryOffset = 0;\n this._keysToIndices = Object.create(null);\n this.indices = Builder.new({ 'type': this.type.indices, 'nullValues': nulls });\n this.dictionary = Builder.new({ 'type': this.type.dictionary, 'nullValues': null });\n if (typeof hashFn === 'function') {\n this.valueToKey = hashFn;\n }\n }\n get values() { return this.indices.values; }\n get nullCount() { return this.indices.nullCount; }\n get nullBitmap() { return this.indices.nullBitmap; }\n get byteLength() { return this.indices.byteLength + this.dictionary.byteLength; }\n get reservedLength() { return this.indices.reservedLength + this.dictionary.reservedLength; }\n get reservedByteLength() { return this.indices.reservedByteLength + this.dictionary.reservedByteLength; }\n isValid(value) { return this.indices.isValid(value); }\n setValid(index, valid) {\n const indices = this.indices;\n valid = indices.setValid(index, valid);\n this.length = indices.length;\n return valid;\n }\n setValue(index, value) {\n let keysToIndices = this._keysToIndices;\n let key = this.valueToKey(value);\n let idx = keysToIndices[key];\n if (idx === undefined) {\n keysToIndices[key] = idx = this._dictionaryOffset + this.dictionary.append(value).length - 1;\n }\n return this.indices.setValue(index, idx);\n }\n flush() {\n const type = this.type;\n const prev = this._dictionary;\n const curr = this.dictionary.toVector();\n const data = this.indices.flush().clone(type);\n data.dictionary = prev ? prev.concat(curr) : curr;\n this.finished || (this._dictionaryOffset += curr.length);\n this._dictionary = data.dictionary;\n this.clear();\n return data;\n }\n finish() {\n this.indices.finish();\n this.dictionary.finish();\n this._dictionaryOffset = 0;\n this._keysToIndices = Object.create(null);\n return super.finish();\n }\n clear() {\n this.indices.clear();\n this.dictionary.clear();\n return super.clear();\n }\n valueToKey(val) {\n return typeof val === 'string' ? val : `${val}`;\n }\n}\n\n//# sourceMappingURL=dictionary.mjs.map\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\nimport { FixedWidthBuilder } from '../builder';\n/** @ignore */\nexport class FixedSizeBinaryBuilder extends FixedWidthBuilder {\n}\n\n//# sourceMappingURL=fixedsizebinary.mjs.map\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\nconst f64 = new Float64Array(1);\nconst u32 = new Uint32Array(f64.buffer);\n/**\n * Convert uint16 (logically a float16) to a JS float64. Inspired by numpy's `npy_half_to_double`:\n * https://github.com/numpy/numpy/blob/5a5987291dc95376bb098be8d8e5391e89e77a2c/numpy/core/src/npymath/halffloat.c#L29\n * @param h {number} the uint16 to convert\n * @private\n * @ignore\n */\nexport function uint16ToFloat64(h) {\n let expo = (h & 0x7C00) >> 10;\n let sigf = (h & 0x03FF) / 1024;\n let sign = (-1) ** ((h & 0x8000) >> 15);\n switch (expo) {\n case 0x1F: return sign * (sigf ? NaN : 1 / 0);\n case 0x00: return sign * (sigf ? 6.103515625e-5 * sigf : 0);\n }\n return sign * (2 ** (expo - 15)) * (1 + sigf);\n}\n/**\n * Convert a float64 to uint16 (assuming the float64 is logically a float16). Inspired by numpy's `npy_double_to_half`:\n * https://github.com/numpy/numpy/blob/5a5987291dc95376bb098be8d8e5391e89e77a2c/numpy/core/src/npymath/halffloat.c#L43\n * @param d {number} The float64 to convert\n * @private\n * @ignore\n */\nexport function float64ToUint16(d) {\n if (d !== d) {\n return 0x7E00;\n } // NaN\n f64[0] = d;\n // Magic numbers:\n // 0x80000000 = 10000000 00000000 00000000 00000000 -- masks the 32nd bit\n // 0x7ff00000 = 01111111 11110000 00000000 00000000 -- masks the 21st-31st bits\n // 0x000fffff = 00000000 00001111 11111111 11111111 -- masks the 1st-20th bit\n let sign = (u32[1] & 0x80000000) >> 16 & 0xFFFF;\n let expo = (u32[1] & 0x7ff00000), sigf = 0x0000;\n if (expo >= 0x40f00000) {\n //\n // If exponent overflowed, the float16 is either NaN or Infinity.\n // Rules to propagate the sign bit: mantissa > 0 ? NaN : +/-Infinity\n //\n // Magic numbers:\n // 0x40F00000 = 01000000 11110000 00000000 00000000 -- 6-bit exponent overflow\n // 0x7C000000 = 01111100 00000000 00000000 00000000 -- masks the 27th-31st bits\n //\n // returns:\n // qNaN, aka 32256 decimal, 0x7E00 hex, or 01111110 00000000 binary\n // sNaN, aka 32000 decimal, 0x7D00 hex, or 01111101 00000000 binary\n // +inf, aka 31744 decimal, 0x7C00 hex, or 01111100 00000000 binary\n // -inf, aka 64512 decimal, 0xFC00 hex, or 11111100 00000000 binary\n //\n // If mantissa is greater than 23 bits, set to +Infinity like numpy\n if (u32[0] > 0) {\n expo = 0x7C00;\n }\n else {\n expo = (expo & 0x7C000000) >> 16;\n sigf = (u32[1] & 0x000fffff) >> 10;\n }\n }\n else if (expo <= 0x3f000000) {\n //\n // If exponent underflowed, the float is either signed zero or subnormal.\n //\n // Magic numbers:\n // 0x3F000000 = 00111111 00000000 00000000 00000000 -- 6-bit exponent underflow\n //\n sigf = 0x100000 + (u32[1] & 0x000fffff);\n sigf = 0x100000 + (sigf << ((expo >> 20) - 998)) >> 21;\n expo = 0;\n }\n else {\n //\n // No overflow or underflow, rebase the exponent and round the mantissa\n // Magic numbers:\n // 0x200 = 00000010 00000000 -- masks off the 10th bit\n //\n // Ensure the first mantissa bit (the 10th one) is 1 and round\n expo = (expo - 0x3f000000) >> 10;\n sigf = ((u32[1] & 0x000fffff) + 0x200) >> 10;\n }\n return sign | expo | sigf & 0xFFFF;\n}\n\n//# sourceMappingURL=math.mjs.map\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\nimport { float64ToUint16 } from '../util/math';\nimport { FixedWidthBuilder } from '../builder';\n/** @ignore */\nexport class FloatBuilder extends FixedWidthBuilder {\n}\n/** @ignore */\nexport class Float16Builder extends FloatBuilder {\n setValue(index, value) {\n // convert JS float64 to a uint16\n this._values.set(index, float64ToUint16(value));\n }\n}\n/** @ignore */\nexport class Float32Builder extends FloatBuilder {\n setValue(index, value) {\n this._values.set(index, value);\n }\n}\n/** @ignore */\nexport class Float64Builder extends FloatBuilder {\n setValue(index, value) {\n this._values.set(index, value);\n }\n}\n\n//# sourceMappingURL=float.mjs.map\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\nimport { toArrayBufferView } from './buffer';\nimport { BigIntAvailable, BigInt64Array, BigUint64Array } from './compat';\n/** @ignore */\nexport const isArrowBigNumSymbol = Symbol.for('isArrowBigNum');\n/** @ignore */\nfunction BigNum(x, ...xs) {\n if (xs.length === 0) {\n return Object.setPrototypeOf(toArrayBufferView(this['TypedArray'], x), this.constructor.prototype);\n }\n return Object.setPrototypeOf(new this['TypedArray'](x, ...xs), this.constructor.prototype);\n}\nBigNum.prototype[isArrowBigNumSymbol] = true;\nBigNum.prototype.toJSON = function () { return `\"${bignumToString(this)}\"`; };\nBigNum.prototype.valueOf = function () { return bignumToNumber(this); };\nBigNum.prototype.toString = function () { return bignumToString(this); };\nBigNum.prototype[Symbol.toPrimitive] = function (hint = 'default') {\n switch (hint) {\n case 'number': return bignumToNumber(this);\n case 'string': return bignumToString(this);\n case 'default': return bignumToBigInt(this);\n }\n return bignumToString(this);\n};\n/** @ignore */\nfunction SignedBigNum(...args) { return BigNum.apply(this, args); }\n/** @ignore */\nfunction UnsignedBigNum(...args) { return BigNum.apply(this, args); }\n/** @ignore */\nfunction DecimalBigNum(...args) { return BigNum.apply(this, args); }\nObject.setPrototypeOf(SignedBigNum.prototype, Object.create(Int32Array.prototype));\nObject.setPrototypeOf(UnsignedBigNum.prototype, Object.create(Uint32Array.prototype));\nObject.setPrototypeOf(DecimalBigNum.prototype, Object.create(Uint32Array.prototype));\nObject.assign(SignedBigNum.prototype, BigNum.prototype, { 'constructor': SignedBigNum, 'signed': true, 'TypedArray': Int32Array, 'BigIntArray': BigInt64Array });\nObject.assign(UnsignedBigNum.prototype, BigNum.prototype, { 'constructor': UnsignedBigNum, 'signed': false, 'TypedArray': Uint32Array, 'BigIntArray': BigUint64Array });\nObject.assign(DecimalBigNum.prototype, BigNum.prototype, { 'constructor': DecimalBigNum, 'signed': true, 'TypedArray': Uint32Array, 'BigIntArray': BigUint64Array });\n/** @ignore */\nfunction bignumToNumber(bn) {\n let { buffer, byteOffset, length, 'signed': signed } = bn;\n let words = new Int32Array(buffer, byteOffset, length);\n let number = 0, i = 0, n = words.length, hi, lo;\n while (i < n) {\n lo = words[i++];\n hi = words[i++];\n signed || (hi = hi >>> 0);\n number += (lo >>> 0) + (hi * (i ** 32));\n }\n return number;\n}\n/** @ignore */\nexport let bignumToString;\n/** @ignore */\nexport let bignumToBigInt;\nif (!BigIntAvailable) {\n bignumToString = decimalToString;\n bignumToBigInt = bignumToString;\n}\nelse {\n bignumToBigInt = ((a) => a.byteLength === 8 ? new a['BigIntArray'](a.buffer, a.byteOffset, 1)[0] : decimalToString(a));\n bignumToString = ((a) => a.byteLength === 8 ? `${new a['BigIntArray'](a.buffer, a.byteOffset, 1)[0]}` : decimalToString(a));\n}\n/** @ignore */\nfunction decimalToString(a) {\n let digits = '';\n let base64 = new Uint32Array(2);\n let base32 = new Uint16Array(a.buffer, a.byteOffset, a.byteLength / 2);\n let checks = new Uint32Array((base32 = new Uint16Array(base32).reverse()).buffer);\n let i = -1, n = base32.length - 1;\n do {\n for (base64[0] = base32[i = 0]; i < n;) {\n base32[i++] = base64[1] = base64[0] / 10;\n base64[0] = ((base64[0] - base64[1] * 10) << 16) + base32[i];\n }\n base32[i] = base64[1] = base64[0] / 10;\n base64[0] = base64[0] - base64[1] * 10;\n digits = `${base64[0]}${digits}`;\n } while (checks[0] || checks[1] || checks[2] || checks[3]);\n return digits ? digits : `0`;\n}\n/** @ignore */\nexport class BN {\n constructor(num, isSigned) {\n return BN.new(num, isSigned);\n }\n /** @nocollapse */\n static new(num, isSigned) {\n switch (isSigned) {\n case true: return new SignedBigNum(num);\n case false: return new UnsignedBigNum(num);\n }\n switch (num.constructor) {\n case Int8Array:\n case Int16Array:\n case Int32Array:\n case BigInt64Array:\n return new SignedBigNum(num);\n }\n if (num.byteLength === 16) {\n return new DecimalBigNum(num);\n }\n return new UnsignedBigNum(num);\n }\n /** @nocollapse */\n static signed(num) {\n return new SignedBigNum(num);\n }\n /** @nocollapse */\n static unsigned(num) {\n return new UnsignedBigNum(num);\n }\n /** @nocollapse */\n static decimal(num) {\n return new DecimalBigNum(num);\n }\n}\n\n//# sourceMappingURL=bn.mjs.map\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\nimport { bignumToBigInt } from '../util/bn';\nimport { WideBufferBuilder } from './buffer';\nimport { BigInt64Array } from '../util/compat';\nimport { FixedWidthBuilder } from '../builder';\n/** @ignore */\nexport class IntBuilder extends FixedWidthBuilder {\n setValue(index, value) {\n this._values.set(index, value);\n }\n}\n/** @ignore */\nexport class Int8Builder extends IntBuilder {\n}\n/** @ignore */\nexport class Int16Builder extends IntBuilder {\n}\n/** @ignore */\nexport class Int32Builder extends IntBuilder {\n}\n/** @ignore */\nexport class Int64Builder extends IntBuilder {\n constructor(options) {\n if (options['nullValues']) {\n options['nullValues'] = options['nullValues'].map(toBigInt);\n }\n super(options);\n this._values = new WideBufferBuilder(new Int32Array(0), 2);\n }\n get values64() { return this._values.buffer64; }\n isValid(value) { return super.isValid(toBigInt(value)); }\n}\n/** @ignore */\nexport class Uint8Builder extends IntBuilder {\n}\n/** @ignore */\nexport class Uint16Builder extends IntBuilder {\n}\n/** @ignore */\nexport class Uint32Builder extends IntBuilder {\n}\n/** @ignore */\nexport class Uint64Builder extends IntBuilder {\n constructor(options) {\n if (options['nullValues']) {\n options['nullValues'] = options['nullValues'].map(toBigInt);\n }\n super(options);\n this._values = new WideBufferBuilder(new Uint32Array(0), 2);\n }\n get values64() { return this._values.buffer64; }\n isValid(value) { return super.isValid(toBigInt(value)); }\n}\nconst toBigInt = ((memo) => (value) => {\n if (ArrayBuffer.isView(value)) {\n memo.buffer = value.buffer;\n memo.byteOffset = value.byteOffset;\n memo.byteLength = value.byteLength;\n value = bignumToBigInt(memo);\n memo.buffer = null;\n }\n return value;\n})({ 'BigIntArray': BigInt64Array });\n\n//# sourceMappingURL=int.mjs.map\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\nimport { FixedWidthBuilder } from '../builder';\n/** @ignore */\nexport class TimeBuilder extends FixedWidthBuilder {\n}\n/** @ignore */\nexport class TimeSecondBuilder extends TimeBuilder {\n}\n/** @ignore */\nexport class TimeMillisecondBuilder extends TimeBuilder {\n}\n/** @ignore */\nexport class TimeMicrosecondBuilder extends TimeBuilder {\n}\n/** @ignore */\nexport class TimeNanosecondBuilder extends TimeBuilder {\n}\n\n//# sourceMappingURL=time.mjs.map\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\nimport { FixedWidthBuilder } from '../builder';\n/** @ignore */\nexport class TimestampBuilder extends FixedWidthBuilder {\n}\n/** @ignore */\nexport class TimestampSecondBuilder extends TimestampBuilder {\n}\n/** @ignore */\nexport class TimestampMillisecondBuilder extends TimestampBuilder {\n}\n/** @ignore */\nexport class TimestampMicrosecondBuilder extends TimestampBuilder {\n}\n/** @ignore */\nexport class TimestampNanosecondBuilder extends TimestampBuilder {\n}\n\n//# sourceMappingURL=timestamp.mjs.map\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\nimport { FixedWidthBuilder } from '../builder';\n/** @ignore */\nexport class IntervalBuilder extends FixedWidthBuilder {\n}\n/** @ignore */\nexport class IntervalDayTimeBuilder extends IntervalBuilder {\n}\n/** @ignore */\nexport class IntervalYearMonthBuilder extends IntervalBuilder {\n}\n\n//# sourceMappingURL=interval.mjs.map\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\nimport { toUint8Array } from '../util/buffer';\nimport { BufferBuilder } from './buffer';\nimport { VariableWidthBuilder } from '../builder';\n/** @ignore */\nexport class BinaryBuilder extends VariableWidthBuilder {\n constructor(opts) {\n super(opts);\n this._values = new BufferBuilder(new Uint8Array(0));\n }\n get byteLength() {\n let size = this._pendingLength + (this.length * 4);\n this._offsets && (size += this._offsets.byteLength);\n this._values && (size += this._values.byteLength);\n this._nulls && (size += this._nulls.byteLength);\n return size;\n }\n setValue(index, value) {\n return super.setValue(index, toUint8Array(value));\n }\n _flushPending(pending, pendingLength) {\n const offsets = this._offsets;\n const data = this._values.reserve(pendingLength).buffer;\n let index = 0, length = 0, offset = 0, value;\n for ([index, value] of pending) {\n if (value === undefined) {\n offsets.set(index, 0);\n }\n else {\n length = value.length;\n data.set(value, offset);\n offsets.set(index, length);\n offset += length;\n }\n }\n }\n}\n\n//# sourceMappingURL=binary.mjs.map\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\nimport { encodeUtf8 } from '../util/utf8';\nimport { BinaryBuilder } from './binary';\nimport { BufferBuilder } from './buffer';\nimport { VariableWidthBuilder } from '../builder';\n/** @ignore */\nexport class Utf8Builder extends VariableWidthBuilder {\n constructor(opts) {\n super(opts);\n this._values = new BufferBuilder(new Uint8Array(0));\n }\n get byteLength() {\n let size = this._pendingLength + (this.length * 4);\n this._offsets && (size += this._offsets.byteLength);\n this._values && (size += this._values.byteLength);\n this._nulls && (size += this._nulls.byteLength);\n return size;\n }\n setValue(index, value) {\n return super.setValue(index, encodeUtf8(value));\n }\n // @ts-ignore\n _flushPending(pending, pendingLength) { }\n}\nUtf8Builder.prototype._flushPending = BinaryBuilder.prototype._flushPending;\n\n//# sourceMappingURL=utf8.mjs.map\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\nimport { Vector } from '../vector';\n/** @ignore */\nexport class Run {\n get length() { return this._values.length; }\n get(index) { return this._values[index]; }\n clear() { this._values = null; return this; }\n bind(values) {\n if (values instanceof Vector) {\n return values;\n }\n this._values = values;\n return this;\n }\n}\n\n//# sourceMappingURL=run.mjs.map\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\nimport { valueToString } from '../util/pretty';\n/** @ignore */ const kParent = Symbol.for('parent');\n/** @ignore */ const kRowIndex = Symbol.for('rowIndex');\n/** @ignore */ const kKeyToIdx = Symbol.for('keyToIdx');\n/** @ignore */ const kIdxToVal = Symbol.for('idxToVal');\n/** @ignore */ const kCustomInspect = Symbol.for('nodejs.util.inspect.custom');\nclass Row {\n constructor(parent, numKeys) {\n this[kParent] = parent;\n this.size = numKeys;\n }\n entries() { return this[Symbol.iterator](); }\n has(key) { return this.get(key) !== undefined; }\n get(key) {\n let val = undefined;\n if (key !== null && key !== undefined) {\n const ktoi = this[kKeyToIdx] || (this[kKeyToIdx] = new Map());\n let idx = ktoi.get(key);\n if (idx !== undefined) {\n const itov = this[kIdxToVal] || (this[kIdxToVal] = new Array(this.size));\n ((val = itov[idx]) !== undefined) || (itov[idx] = val = this.getValue(idx));\n }\n else if ((idx = this.getIndex(key)) > -1) {\n ktoi.set(key, idx);\n const itov = this[kIdxToVal] || (this[kIdxToVal] = new Array(this.size));\n ((val = itov[idx]) !== undefined) || (itov[idx] = val = this.getValue(idx));\n }\n }\n return val;\n }\n set(key, val) {\n if (key !== null && key !== undefined) {\n const ktoi = this[kKeyToIdx] || (this[kKeyToIdx] = new Map());\n let idx = ktoi.get(key);\n if (idx === undefined) {\n ktoi.set(key, idx = this.getIndex(key));\n }\n if (idx > -1) {\n const itov = this[kIdxToVal] || (this[kIdxToVal] = new Array(this.size));\n itov[idx] = this.setValue(idx, val);\n }\n }\n return this;\n }\n clear() { throw new Error(`Clearing ${this[Symbol.toStringTag]} not supported.`); }\n delete(_) { throw new Error(`Deleting ${this[Symbol.toStringTag]} values not supported.`); }\n *[Symbol.iterator]() {\n const ki = this.keys();\n const vi = this.values();\n const ktoi = this[kKeyToIdx] || (this[kKeyToIdx] = new Map());\n const itov = this[kIdxToVal] || (this[kIdxToVal] = new Array(this.size));\n for (let k, v, i = 0, kr, vr; !((kr = ki.next()).done || (vr = vi.next()).done); ++i) {\n k = kr.value;\n v = vr.value;\n itov[i] = v;\n ktoi.has(k) || ktoi.set(k, i);\n yield [k, v];\n }\n }\n forEach(callbackfn, thisArg) {\n const ki = this.keys();\n const vi = this.values();\n const callback = thisArg === undefined ? callbackfn :\n (v, k, m) => callbackfn.call(thisArg, v, k, m);\n const ktoi = this[kKeyToIdx] || (this[kKeyToIdx] = new Map());\n const itov = this[kIdxToVal] || (this[kIdxToVal] = new Array(this.size));\n for (let k, v, i = 0, kr, vr; !((kr = ki.next()).done || (vr = vi.next()).done); ++i) {\n k = kr.value;\n v = vr.value;\n itov[i] = v;\n ktoi.has(k) || ktoi.set(k, i);\n callback(v, k, this);\n }\n }\n toArray() { return [...this.values()]; }\n toJSON() {\n const obj = {};\n this.forEach((val, key) => obj[key] = val);\n return obj;\n }\n inspect() { return this.toString(); }\n [kCustomInspect]() { return this.toString(); }\n toString() {\n const str = [];\n this.forEach((val, key) => {\n key = valueToString(key);\n val = valueToString(val);\n str.push(`${key}: ${val}`);\n });\n return `{ ${str.join(', ')} }`;\n }\n}\nRow[Symbol.toStringTag] = ((proto) => {\n Object.defineProperties(proto, {\n 'size': { writable: true, enumerable: false, configurable: false, value: 0 },\n [kParent]: { writable: true, enumerable: false, configurable: false, value: null },\n [kRowIndex]: { writable: true, enumerable: false, configurable: false, value: -1 },\n });\n return proto[Symbol.toStringTag] = 'Row';\n})(Row.prototype);\nexport class MapRow extends Row {\n constructor(slice) {\n super(slice, slice.length);\n return createRowProxy(this);\n }\n keys() {\n return this[kParent].getChildAt(0)[Symbol.iterator]();\n }\n values() {\n return this[kParent].getChildAt(1)[Symbol.iterator]();\n }\n getKey(idx) {\n return this[kParent].getChildAt(0).get(idx);\n }\n getIndex(key) {\n return this[kParent].getChildAt(0).indexOf(key);\n }\n getValue(index) {\n return this[kParent].getChildAt(1).get(index);\n }\n setValue(index, value) {\n this[kParent].getChildAt(1).set(index, value);\n }\n}\nexport class StructRow extends Row {\n constructor(parent) {\n super(parent, parent.type.children.length);\n return defineRowProxyProperties(this);\n }\n *keys() {\n for (const field of this[kParent].type.children) {\n yield field.name;\n }\n }\n *values() {\n for (const field of this[kParent].type.children) {\n yield this[field.name];\n }\n }\n getKey(idx) {\n return this[kParent].type.children[idx].name;\n }\n getIndex(key) {\n return this[kParent].type.children.findIndex((f) => f.name === key);\n }\n getValue(index) {\n return this[kParent].getChildAt(index).get(this[kRowIndex]);\n }\n setValue(index, value) {\n return this[kParent].getChildAt(index).set(this[kRowIndex], value);\n }\n}\nObject.setPrototypeOf(Row.prototype, Map.prototype);\n/** @ignore */\nconst defineRowProxyProperties = (() => {\n const desc = { enumerable: true, configurable: false, get: null, set: null };\n return (row) => {\n let idx = -1, ktoi = row[kKeyToIdx] || (row[kKeyToIdx] = new Map());\n const getter = (key) => function () { return this.get(key); };\n const setter = (key) => function (val) { return this.set(key, val); };\n for (const key of row.keys()) {\n ktoi.set(key, ++idx);\n desc.get = getter(key);\n desc.set = setter(key);\n row.hasOwnProperty(key) || (desc.enumerable = true, Object.defineProperty(row, key, desc));\n row.hasOwnProperty(idx) || (desc.enumerable = false, Object.defineProperty(row, idx, desc));\n }\n desc.get = desc.set = null;\n return row;\n };\n})();\n/** @ignore */\nconst createRowProxy = (() => {\n if (typeof Proxy === 'undefined') {\n return defineRowProxyProperties;\n }\n const has = Row.prototype.has;\n const get = Row.prototype.get;\n const set = Row.prototype.set;\n const getKey = Row.prototype.getKey;\n const RowProxyHandler = {\n isExtensible() { return false; },\n deleteProperty() { return false; },\n preventExtensions() { return true; },\n ownKeys(row) { return [...row.keys()].map((x) => `${x}`); },\n has(row, key) {\n switch (key) {\n case 'getKey':\n case 'getIndex':\n case 'getValue':\n case 'setValue':\n case 'toArray':\n case 'toJSON':\n case 'inspect':\n case 'constructor':\n case 'isPrototypeOf':\n case 'propertyIsEnumerable':\n case 'toString':\n case 'toLocaleString':\n case 'valueOf':\n case 'size':\n case 'has':\n case 'get':\n case 'set':\n case 'clear':\n case 'delete':\n case 'keys':\n case 'values':\n case 'entries':\n case 'forEach':\n case '__proto__':\n case '__defineGetter__':\n case '__defineSetter__':\n case 'hasOwnProperty':\n case '__lookupGetter__':\n case '__lookupSetter__':\n case Symbol.iterator:\n case Symbol.toStringTag:\n case kParent:\n case kRowIndex:\n case kIdxToVal:\n case kKeyToIdx:\n case kCustomInspect:\n return true;\n }\n if (typeof key === 'number' && !row.has(key)) {\n key = row.getKey(key);\n }\n return row.has(key);\n },\n get(row, key, receiver) {\n switch (key) {\n case 'getKey':\n case 'getIndex':\n case 'getValue':\n case 'setValue':\n case 'toArray':\n case 'toJSON':\n case 'inspect':\n case 'constructor':\n case 'isPrototypeOf':\n case 'propertyIsEnumerable':\n case 'toString':\n case 'toLocaleString':\n case 'valueOf':\n case 'size':\n case 'has':\n case 'get':\n case 'set':\n case 'clear':\n case 'delete':\n case 'keys':\n case 'values':\n case 'entries':\n case 'forEach':\n case '__proto__':\n case '__defineGetter__':\n case '__defineSetter__':\n case 'hasOwnProperty':\n case '__lookupGetter__':\n case '__lookupSetter__':\n case Symbol.iterator:\n case Symbol.toStringTag:\n case kParent:\n case kRowIndex:\n case kIdxToVal:\n case kKeyToIdx:\n case kCustomInspect:\n return Reflect.get(row, key, receiver);\n }\n if (typeof key === 'number' && !has.call(receiver, key)) {\n key = getKey.call(receiver, key);\n }\n return get.call(receiver, key);\n },\n set(row, key, val, receiver) {\n switch (key) {\n case kParent:\n case kRowIndex:\n case kIdxToVal:\n case kKeyToIdx:\n return Reflect.set(row, key, val, receiver);\n case 'getKey':\n case 'getIndex':\n case 'getValue':\n case 'setValue':\n case 'toArray':\n case 'toJSON':\n case 'inspect':\n case 'constructor':\n case 'isPrototypeOf':\n case 'propertyIsEnumerable':\n case 'toString':\n case 'toLocaleString':\n case 'valueOf':\n case 'size':\n case 'has':\n case 'get':\n case 'set':\n case 'clear':\n case 'delete':\n case 'keys':\n case 'values':\n case 'entries':\n case 'forEach':\n case '__proto__':\n case '__defineGetter__':\n case '__defineSetter__':\n case 'hasOwnProperty':\n case '__lookupGetter__':\n case '__lookupSetter__':\n case Symbol.iterator:\n case Symbol.toStringTag:\n return false;\n }\n if (typeof key === 'number' && !has.call(receiver, key)) {\n key = getKey.call(receiver, key);\n }\n return has.call(receiver, key) ? !!set.call(receiver, key, val) : false;\n },\n };\n return (row) => new Proxy(row, RowProxyHandler);\n})();\n\n//# sourceMappingURL=row.mjs.map\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\nimport { Vector } from '../vector';\nimport { MapRow, StructRow } from '../vector/row';\nimport { compareArrayLike } from '../util/buffer';\nimport { BigInt, BigIntAvailable } from './compat';\n/** @ignore */\nexport function clampIndex(source, index, then) {\n const length = source.length;\n const adjust = index > -1 ? index : (length + (index % length));\n return then ? then(source, adjust) : adjust;\n}\n/** @ignore */\nlet tmp;\n/** @ignore */\nexport function clampRange(source, begin, end, then) {\n // Adjust args similar to Array.prototype.slice. Normalize begin/end to\n // clamp between 0 and length, and wrap around on negative indices, e.g.\n // slice(-1, 5) or slice(5, -1)\n let { length: len = 0 } = source;\n let lhs = typeof begin !== 'number' ? 0 : begin;\n let rhs = typeof end !== 'number' ? len : end;\n // wrap around on negative start/end positions\n (lhs < 0) && (lhs = ((lhs % len) + len) % len);\n (rhs < 0) && (rhs = ((rhs % len) + len) % len);\n // ensure lhs <= rhs\n (rhs < lhs) && (tmp = lhs, lhs = rhs, rhs = tmp);\n // ensure rhs <= length\n (rhs > len) && (rhs = len);\n return then ? then(source, lhs, rhs) : [lhs, rhs];\n}\nconst big0 = BigIntAvailable ? BigInt(0) : 0;\nconst isNaNFast = (value) => value !== value;\n/** @ignore */\nexport function createElementComparator(search) {\n let typeofSearch = typeof search;\n // Compare primitives\n if (typeofSearch !== 'object' || search === null) {\n // Compare NaN\n if (isNaNFast(search)) {\n return isNaNFast;\n }\n return typeofSearch !== 'bigint'\n ? (value) => value === search\n : (value) => (big0 + value) === search;\n }\n // Compare Dates\n if (search instanceof Date) {\n const valueOfSearch = search.valueOf();\n return (value) => value instanceof Date ? (value.valueOf() === valueOfSearch) : false;\n }\n // Compare TypedArrays\n if (ArrayBuffer.isView(search)) {\n return (value) => value ? compareArrayLike(search, value) : false;\n }\n // Compare Maps and Rows\n if (search instanceof Map) {\n return creatMapComparator(search);\n }\n // Compare Array-likes\n if (Array.isArray(search)) {\n return createArrayLikeComparator(search);\n }\n // Compare Vectors\n if (search instanceof Vector) {\n return createVectorComparator(search);\n }\n // Compare non-empty Objects\n return createObjectComparator(search);\n}\n/** @ignore */\nfunction createArrayLikeComparator(lhs) {\n const comparators = [];\n for (let i = -1, n = lhs.length; ++i < n;) {\n comparators[i] = createElementComparator(lhs[i]);\n }\n return createSubElementsComparator(comparators);\n}\n/** @ignore */\nfunction creatMapComparator(lhs) {\n let i = -1;\n const comparators = [];\n lhs.forEach((v) => comparators[++i] = createElementComparator(v));\n return createSubElementsComparator(comparators);\n}\n/** @ignore */\nfunction createVectorComparator(lhs) {\n const comparators = [];\n for (let i = -1, n = lhs.length; ++i < n;) {\n comparators[i] = createElementComparator(lhs.get(i));\n }\n return createSubElementsComparator(comparators);\n}\n/** @ignore */\nfunction createObjectComparator(lhs) {\n const keys = Object.keys(lhs);\n // Only compare non-empty Objects\n if (keys.length === 0) {\n return () => false;\n }\n const comparators = [];\n for (let i = -1, n = keys.length; ++i < n;) {\n comparators[i] = createElementComparator(lhs[keys[i]]);\n }\n return createSubElementsComparator(comparators, keys);\n}\nfunction createSubElementsComparator(comparators, keys) {\n return (rhs) => {\n if (!rhs || typeof rhs !== 'object') {\n return false;\n }\n switch (rhs.constructor) {\n case Array: return compareArray(comparators, rhs);\n case Map:\n case MapRow:\n case StructRow:\n return compareObject(comparators, rhs, rhs.keys());\n case Object:\n case undefined: // support `Object.create(null)` objects\n return compareObject(comparators, rhs, keys || Object.keys(rhs));\n }\n return rhs instanceof Vector ? compareVector(comparators, rhs) : false;\n };\n}\nfunction compareArray(comparators, arr) {\n const n = comparators.length;\n if (arr.length !== n) {\n return false;\n }\n for (let i = -1; ++i < n;) {\n if (!(comparators[i](arr[i]))) {\n return false;\n }\n }\n return true;\n}\nfunction compareVector(comparators, vec) {\n const n = comparators.length;\n if (vec.length !== n) {\n return false;\n }\n for (let i = -1; ++i < n;) {\n if (!(comparators[i](vec.get(i)))) {\n return false;\n }\n }\n return true;\n}\nfunction compareObject(comparators, obj, keys) {\n const lKeyItr = keys[Symbol.iterator]();\n const rKeyItr = obj instanceof Map ? obj.keys() : Object.keys(obj)[Symbol.iterator]();\n const rValItr = obj instanceof Map ? obj.values() : Object.values(obj)[Symbol.iterator]();\n let i = 0;\n let n = comparators.length;\n let rVal = rValItr.next();\n let lKey = lKeyItr.next();\n let rKey = rKeyItr.next();\n for (; i < n && !lKey.done && !rKey.done && !rVal.done; ++i, lKey = lKeyItr.next(), rKey = rKeyItr.next(), rVal = rValItr.next()) {\n if (lKey.value !== rKey.value || !comparators[i](rVal.value)) {\n break;\n }\n }\n if (i === n && lKey.done && rKey.done && rVal.done) {\n return true;\n }\n lKeyItr.return && lKeyItr.return();\n rKeyItr.return && rKeyItr.return();\n rValItr.return && rValItr.return();\n return false;\n}\n\n//# sourceMappingURL=vector.mjs.map\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\nimport { clampRange } from '../util/vector';\nimport { DataType } from '../type';\nimport { selectChunkArgs } from '../util/args';\nimport { AbstractVector, Vector } from '../vector';\n/** @ignore */\nexport class Chunked extends AbstractVector {\n constructor(type, chunks = [], offsets = calculateOffsets(chunks)) {\n super();\n this._nullCount = -1;\n this._type = type;\n this._chunks = chunks;\n this._chunkOffsets = offsets;\n this._length = offsets[offsets.length - 1];\n this._numChildren = (this._type.children || []).length;\n }\n /** @nocollapse */\n static flatten(...vectors) {\n return selectChunkArgs(Vector, vectors);\n }\n /** @nocollapse */\n static concat(...vectors) {\n const chunks = Chunked.flatten(...vectors);\n return new Chunked(chunks[0].type, chunks);\n }\n get type() { return this._type; }\n get length() { return this._length; }\n get chunks() { return this._chunks; }\n get typeId() { return this._type.typeId; }\n get VectorName() { return `Chunked<${this._type}>`; }\n get data() {\n return this._chunks[0] ? this._chunks[0].data : null;\n }\n get ArrayType() { return this._type.ArrayType; }\n get numChildren() { return this._numChildren; }\n get stride() { return this._chunks[0] ? this._chunks[0].stride : 1; }\n get byteLength() {\n return this._chunks.reduce((byteLength, chunk) => byteLength + chunk.byteLength, 0);\n }\n get nullCount() {\n let nullCount = this._nullCount;\n if (nullCount < 0) {\n this._nullCount = nullCount = this._chunks.reduce((x, { nullCount }) => x + nullCount, 0);\n }\n return nullCount;\n }\n get indices() {\n if (DataType.isDictionary(this._type)) {\n if (!this._indices) {\n const chunks = this._chunks;\n this._indices = (chunks.length === 1\n ? chunks[0].indices\n : Chunked.concat(...chunks.map((x) => x.indices)));\n }\n return this._indices;\n }\n return null;\n }\n get dictionary() {\n if (DataType.isDictionary(this._type)) {\n return this._chunks[this._chunks.length - 1].data.dictionary;\n }\n return null;\n }\n *[Symbol.iterator]() {\n for (const chunk of this._chunks) {\n yield* chunk;\n }\n }\n clone(chunks = this._chunks) {\n return new Chunked(this._type, chunks);\n }\n concat(...others) {\n return this.clone(Chunked.flatten(this, ...others));\n }\n slice(begin, end) {\n return clampRange(this, begin, end, this._sliceInternal);\n }\n getChildAt(index) {\n if (index < 0 || index >= this._numChildren) {\n return null;\n }\n let columns = this._children || (this._children = []);\n let child, field, chunks;\n if (child = columns[index]) {\n return child;\n }\n if (field = (this._type.children || [])[index]) {\n chunks = this._chunks\n .map((vector) => vector.getChildAt(index))\n .filter((vec) => vec != null);\n if (chunks.length > 0) {\n return (columns[index] = new Chunked(field.type, chunks));\n }\n }\n return null;\n }\n search(index, then) {\n let idx = index;\n // binary search to find the child vector and value indices\n let offsets = this._chunkOffsets, rhs = offsets.length - 1;\n // return early if out of bounds, or if there's just one child\n if (idx < 0) {\n return null;\n }\n if (idx >= offsets[rhs]) {\n return null;\n }\n if (rhs <= 1) {\n return then ? then(this, 0, idx) : [0, idx];\n }\n let lhs = 0, pos = 0, mid = 0;\n do {\n if (lhs + 1 === rhs) {\n return then ? then(this, lhs, idx - pos) : [lhs, idx - pos];\n }\n mid = lhs + ((rhs - lhs) / 2) | 0;\n idx >= offsets[mid] ? (lhs = mid) : (rhs = mid);\n } while (idx < offsets[rhs] && idx >= (pos = offsets[lhs]));\n return null;\n }\n isValid(index) {\n return !!this.search(index, this.isValidInternal);\n }\n get(index) {\n return this.search(index, this.getInternal);\n }\n set(index, value) {\n this.search(index, ({ chunks }, i, j) => chunks[i].set(j, value));\n }\n indexOf(element, offset) {\n if (offset && typeof offset === 'number') {\n return this.search(offset, (self, i, j) => this.indexOfInternal(self, i, j, element));\n }\n return this.indexOfInternal(this, 0, Math.max(0, offset || 0), element);\n }\n toArray() {\n const { chunks } = this;\n const n = chunks.length;\n let ArrayType = this._type.ArrayType;\n if (n <= 0) {\n return new ArrayType(0);\n }\n if (n <= 1) {\n return chunks[0].toArray();\n }\n let len = 0, src = new Array(n);\n for (let i = -1; ++i < n;) {\n len += (src[i] = chunks[i].toArray()).length;\n }\n if (ArrayType !== src[0].constructor) {\n ArrayType = src[0].constructor;\n }\n let dst = new ArrayType(len);\n let set = ArrayType === Array ? arraySet : typedSet;\n for (let i = -1, idx = 0; ++i < n;) {\n idx = set(src[i], dst, idx);\n }\n return dst;\n }\n getInternal({ _chunks }, i, j) { return _chunks[i].get(j); }\n isValidInternal({ _chunks }, i, j) { return _chunks[i].isValid(j); }\n indexOfInternal({ _chunks }, chunkIndex, fromIndex, element) {\n let i = chunkIndex - 1, n = _chunks.length;\n let start = fromIndex, offset = 0, found = -1;\n while (++i < n) {\n if (~(found = _chunks[i].indexOf(element, start))) {\n return offset + found;\n }\n start = 0;\n offset += _chunks[i].length;\n }\n return -1;\n }\n _sliceInternal(self, begin, end) {\n const slices = [];\n const { chunks, _chunkOffsets: chunkOffsets } = self;\n for (let i = -1, n = chunks.length; ++i < n;) {\n const chunk = chunks[i];\n const chunkLength = chunk.length;\n const chunkOffset = chunkOffsets[i];\n // If the child is to the right of the slice boundary, we can stop\n if (chunkOffset >= end) {\n break;\n }\n // If the child is to the left of of the slice boundary, exclude\n if (begin >= chunkOffset + chunkLength) {\n continue;\n }\n // If the child is between both left and right boundaries, include w/o slicing\n if (chunkOffset >= begin && (chunkOffset + chunkLength) <= end) {\n slices.push(chunk);\n continue;\n }\n // If the child overlaps one of the slice boundaries, include that slice\n const from = Math.max(0, begin - chunkOffset);\n const to = Math.min(end - chunkOffset, chunkLength);\n slices.push(chunk.slice(from, to));\n }\n return self.clone(slices);\n }\n}\n/** @ignore */\nfunction calculateOffsets(vectors) {\n let offsets = new Uint32Array((vectors || []).length + 1);\n let offset = offsets[0] = 0, length = offsets.length;\n for (let index = 0; ++index < length;) {\n offsets[index] = (offset += vectors[index - 1].length);\n }\n return offsets;\n}\n/** @ignore */\nconst typedSet = (src, dst, offset) => {\n dst.set(src, offset);\n return (offset + src.length);\n};\n/** @ignore */\nconst arraySet = (src, dst, offset) => {\n let idx = offset;\n for (let i = -1, n = src.length; ++i < n;) {\n dst[idx++] = src[i];\n }\n return idx;\n};\n\n//# sourceMappingURL=chunked.mjs.map\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\nimport { Field } from './schema';\nimport { Vector } from './vector';\nimport { Chunked } from './vector/chunked';\nexport class Column extends Chunked {\n constructor(field, vectors = [], offsets) {\n vectors = Chunked.flatten(...vectors);\n super(field.type, vectors, offsets);\n this._field = field;\n if (vectors.length === 1 && !(this instanceof SingleChunkColumn)) {\n return new SingleChunkColumn(field, vectors[0], this._chunkOffsets);\n }\n }\n /** @nocollapse */\n static new(field, data, ...rest) {\n const chunks = Chunked.flatten(Array.isArray(data) ? [...data, ...rest] :\n data instanceof Vector ? [data, ...rest] :\n [Vector.new(data, ...rest)]);\n if (typeof field === 'string') {\n const type = chunks[0].data.type;\n field = new Field(field, type, true);\n }\n else if (!field.nullable && chunks.some(({ nullCount }) => nullCount > 0)) {\n field = field.clone({ nullable: true });\n }\n return new Column(field, chunks);\n }\n get field() { return this._field; }\n get name() { return this._field.name; }\n get nullable() { return this._field.nullable; }\n get metadata() { return this._field.metadata; }\n clone(chunks = this._chunks) {\n return new Column(this._field, chunks);\n }\n getChildAt(index) {\n if (index < 0 || index >= this.numChildren) {\n return null;\n }\n let columns = this._children || (this._children = []);\n let column, field, chunks;\n if (column = columns[index]) {\n return column;\n }\n if (field = (this.type.children || [])[index]) {\n chunks = this._chunks\n .map((vector) => vector.getChildAt(index))\n .filter((vec) => vec != null);\n if (chunks.length > 0) {\n return (columns[index] = new Column(field, chunks));\n }\n }\n return null;\n }\n}\n/** @ignore */\nclass SingleChunkColumn extends Column {\n constructor(field, vector, offsets) {\n super(field, [vector], offsets);\n this._chunk = vector;\n }\n search(index, then) {\n return then ? then(this, 0, index) : [0, index];\n }\n isValid(index) {\n return this._chunk.isValid(index);\n }\n get(index) {\n return this._chunk.get(index);\n }\n set(index, value) {\n this._chunk.set(index, value);\n }\n indexOf(element, offset) {\n return this._chunk.indexOf(element, offset);\n }\n}\n\n//# sourceMappingURL=column.mjs.map\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\nimport { Data } from '../data';\nimport { Field } from '../schema';\nimport { Column } from '../column';\nimport { Vector } from '../vector';\nimport { DataType } from '../type';\nimport { Chunked } from '../vector/chunked';\nconst isArray = Array.isArray;\n/** @ignore */\nexport const selectArgs = (Ctor, vals) => _selectArgs(Ctor, vals, [], 0);\n/** @ignore */\nexport const selectColumnArgs = (args) => {\n const [fields, values] = _selectFieldArgs(args, [[], []]);\n return values.map((x, i) => x instanceof Column ? Column.new(x.field.clone(fields[i]), x) :\n x instanceof Vector ? Column.new(fields[i], x) :\n Column.new(fields[i], []));\n};\n/** @ignore */\nexport const selectFieldArgs = (args) => _selectFieldArgs(args, [[], []]);\n/** @ignore */\nexport const selectChunkArgs = (Ctor, vals) => _selectChunkArgs(Ctor, vals, [], 0);\n/** @ignore */\nexport const selectVectorChildrenArgs = (Ctor, vals) => _selectVectorChildrenArgs(Ctor, vals, [], 0);\n/** @ignore */\nexport const selectColumnChildrenArgs = (Ctor, vals) => _selectColumnChildrenArgs(Ctor, vals, [], 0);\n/** @ignore */\nfunction _selectArgs(Ctor, vals, res, idx) {\n let value, j = idx;\n let i = -1, n = vals.length;\n while (++i < n) {\n if (isArray(value = vals[i])) {\n j = _selectArgs(Ctor, value, res, j).length;\n }\n else if (value instanceof Ctor) {\n res[j++] = value;\n }\n }\n return res;\n}\n/** @ignore */\nfunction _selectChunkArgs(Ctor, vals, res, idx) {\n let value, j = idx;\n let i = -1, n = vals.length;\n while (++i < n) {\n if (isArray(value = vals[i])) {\n j = _selectChunkArgs(Ctor, value, res, j).length;\n }\n else if (value instanceof Chunked) {\n j = _selectChunkArgs(Ctor, value.chunks, res, j).length;\n }\n else if (value instanceof Ctor) {\n res[j++] = value;\n }\n }\n return res;\n}\n/** @ignore */\nfunction _selectVectorChildrenArgs(Ctor, vals, res, idx) {\n let value, j = idx;\n let i = -1, n = vals.length;\n while (++i < n) {\n if (isArray(value = vals[i])) {\n j = _selectVectorChildrenArgs(Ctor, value, res, j).length;\n }\n else if (value instanceof Ctor) {\n j = _selectArgs(Vector, value.schema.fields.map((_, i) => value.getChildAt(i)), res, j).length;\n }\n else if (value instanceof Vector) {\n res[j++] = value;\n }\n }\n return res;\n}\n/** @ignore */\nfunction _selectColumnChildrenArgs(Ctor, vals, res, idx) {\n let value, j = idx;\n let i = -1, n = vals.length;\n while (++i < n) {\n if (isArray(value = vals[i])) {\n j = _selectColumnChildrenArgs(Ctor, value, res, j).length;\n }\n else if (value instanceof Ctor) {\n j = _selectArgs(Column, value.schema.fields.map((f, i) => Column.new(f, value.getChildAt(i))), res, j).length;\n }\n else if (value instanceof Column) {\n res[j++] = value;\n }\n }\n return res;\n}\n/** @ignore */\nconst toKeysAndValues = (xs, [k, v], i) => (xs[0][i] = k, xs[1][i] = v, xs);\n/** @ignore */\nfunction _selectFieldArgs(vals, ret) {\n let keys, n;\n switch (n = vals.length) {\n case 0: return ret;\n case 1:\n keys = ret[0];\n if (!(vals[0])) {\n return ret;\n }\n if (isArray(vals[0])) {\n return _selectFieldArgs(vals[0], ret);\n }\n if (!(vals[0] instanceof Data || vals[0] instanceof Vector || vals[0] instanceof DataType)) {\n [keys, vals] = Object.entries(vals[0]).reduce(toKeysAndValues, ret);\n }\n break;\n default:\n !isArray(keys = vals[n - 1])\n ? (vals = isArray(vals[0]) ? vals[0] : vals, keys = [])\n : (vals = isArray(vals[0]) ? vals[0] : vals.slice(0, n - 1));\n }\n let fieldIndex = -1;\n let valueIndex = -1;\n let idx = -1, len = vals.length;\n let field;\n let val;\n let [fields, values] = ret;\n while (++idx < len) {\n val = vals[idx];\n if (val instanceof Column && (values[++valueIndex] = val)) {\n fields[++fieldIndex] = val.field.clone(keys[idx], val.type, true);\n }\n else {\n ({ [idx]: field = idx } = keys);\n if (val instanceof DataType && (values[++valueIndex] = val)) {\n fields[++fieldIndex] = Field.new(field, val, true);\n }\n else if (val && val.type && (values[++valueIndex] = val)) {\n val instanceof Data && (values[valueIndex] = val = Vector.new(val));\n fields[++fieldIndex] = Field.new(field, val.type, true);\n }\n }\n }\n return ret;\n}\n\n//# sourceMappingURL=args.mjs.map\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\nimport { DataType } from './type';\nimport { selectArgs } from './util/args';\nimport { selectFieldArgs } from './util/args';\nimport { instance as comparer } from './visitor/typecomparator';\nexport class Schema {\n constructor(fields = [], metadata, dictionaries) {\n this.fields = (fields || []);\n this.metadata = metadata || new Map();\n if (!dictionaries) {\n dictionaries = generateDictionaryMap(fields);\n }\n this.dictionaries = dictionaries;\n }\n /** @nocollapse */\n static from(...args) {\n return Schema.new(args[0], args[1]);\n }\n /** @nocollapse */\n static new(...args) {\n return new Schema(selectFieldArgs(args)[0]);\n }\n get [Symbol.toStringTag]() { return 'Schema'; }\n toString() {\n return `Schema<{ ${this.fields.map((f, i) => `${i}: ${f}`).join(', ')} }>`;\n }\n compareTo(other) {\n return comparer.compareSchemas(this, other);\n }\n select(...columnNames) {\n const names = columnNames.reduce((xs, x) => (xs[x] = true) && xs, Object.create(null));\n return new Schema(this.fields.filter((f) => names[f.name]), this.metadata);\n }\n selectAt(...columnIndices) {\n return new Schema(columnIndices.map((i) => this.fields[i]).filter(Boolean), this.metadata);\n }\n assign(...args) {\n const other = args[0] instanceof Schema ? args[0]\n : new Schema(selectArgs(Field, args));\n const curFields = [...this.fields];\n const metadata = mergeMaps(mergeMaps(new Map(), this.metadata), other.metadata);\n const newFields = other.fields.filter((f2) => {\n const i = curFields.findIndex((f) => f.name === f2.name);\n return ~i ? (curFields[i] = f2.clone({\n metadata: mergeMaps(mergeMaps(new Map(), curFields[i].metadata), f2.metadata)\n })) && false : true;\n });\n const newDictionaries = generateDictionaryMap(newFields, new Map());\n return new Schema([...curFields, ...newFields], metadata, new Map([...this.dictionaries, ...newDictionaries]));\n }\n}\nexport class Field {\n constructor(name, type, nullable = false, metadata) {\n this.name = name;\n this.type = type;\n this.nullable = nullable;\n this.metadata = metadata || new Map();\n }\n /** @nocollapse */\n static new(...args) {\n let [name, type, nullable, metadata] = args;\n if (args[0] && typeof args[0] === 'object') {\n ({ name } = args[0]);\n (type === undefined) && (type = args[0].type);\n (nullable === undefined) && (nullable = args[0].nullable);\n (metadata === undefined) && (metadata = args[0].metadata);\n }\n return new Field(`${name}`, type, nullable, metadata);\n }\n get typeId() { return this.type.typeId; }\n get [Symbol.toStringTag]() { return 'Field'; }\n toString() { return `${this.name}: ${this.type}`; }\n compareTo(other) {\n return comparer.compareField(this, other);\n }\n clone(...args) {\n let [name, type, nullable, metadata] = args;\n (!args[0] || typeof args[0] !== 'object')\n ? ([name = this.name, type = this.type, nullable = this.nullable, metadata = this.metadata] = args)\n : ({ name = this.name, type = this.type, nullable = this.nullable, metadata = this.metadata } = args[0]);\n return Field.new(name, type, nullable, metadata);\n }\n}\n/** @ignore */\nfunction mergeMaps(m1, m2) {\n return new Map([...(m1 || new Map()), ...(m2 || new Map())]);\n}\n/** @ignore */\nfunction generateDictionaryMap(fields, dictionaries = new Map()) {\n for (let i = -1, n = fields.length; ++i < n;) {\n const field = fields[i];\n const type = field.type;\n if (DataType.isDictionary(type)) {\n if (!dictionaries.has(type.id)) {\n dictionaries.set(type.id, type.dictionary);\n }\n else if (dictionaries.get(type.id) !== type.dictionary) {\n throw new Error(`Cannot create Schema containing two different dictionaries with the same Id`);\n }\n }\n if (type.children && type.children.length > 0) {\n generateDictionaryMap(type.children, dictionaries);\n }\n }\n return dictionaries;\n}\n// Add these here so they're picked up by the externs creator\n// in the build, and closure-compiler doesn't minify them away\nSchema.prototype.fields = null;\nSchema.prototype.metadata = null;\nSchema.prototype.dictionaries = null;\nField.prototype.type = null;\nField.prototype.name = null;\nField.prototype.nullable = null;\nField.prototype.metadata = null;\n\n//# sourceMappingURL=schema.mjs.map\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\nimport { Run } from './run';\nimport { Field } from '../schema';\nimport { List } from '../type';\nimport { OffsetsBufferBuilder } from './buffer';\nimport { VariableWidthBuilder } from '../builder';\n/** @ignore */\nexport class ListBuilder extends VariableWidthBuilder {\n constructor(opts) {\n super(opts);\n this._run = new Run();\n this._offsets = new OffsetsBufferBuilder();\n }\n addChild(child, name = '0') {\n if (this.numChildren > 0) {\n throw new Error('ListBuilder can only have one child.');\n }\n this.children[this.numChildren] = child;\n this.type = new List(new Field(name, child.type, true));\n return this.numChildren - 1;\n }\n clear() {\n this._run.clear();\n return super.clear();\n }\n _flushPending(pending) {\n const run = this._run;\n const offsets = this._offsets;\n const setValue = this._setValue;\n let index = 0, value;\n for ([index, value] of pending) {\n if (value === undefined) {\n offsets.set(index, 0);\n }\n else {\n offsets.set(index, value.length);\n setValue(this, index, run.bind(value));\n }\n }\n }\n}\n\n//# sourceMappingURL=list.mjs.map\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\nimport { Run } from './run';\nimport { Field } from '../schema';\nimport { Builder } from '../builder';\nimport { FixedSizeList } from '../type';\n/** @ignore */\nexport class FixedSizeListBuilder extends Builder {\n constructor() {\n super(...arguments);\n this._run = new Run();\n }\n setValue(index, value) {\n super.setValue(index, this._run.bind(value));\n }\n addChild(child, name = '0') {\n if (this.numChildren > 0) {\n throw new Error('FixedSizeListBuilder can only have one child.');\n }\n const childIndex = this.children.push(child);\n this.type = new FixedSizeList(this.type.listSize, new Field(name, child.type, true));\n return childIndex;\n }\n clear() {\n this._run.clear();\n return super.clear();\n }\n}\n\n//# sourceMappingURL=fixedsizelist.mjs.map\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\nimport { Field } from '../schema';\nimport { Map_ } from '../type';\nimport { VariableWidthBuilder } from '../builder';\n/** @ignore */\nexport class MapBuilder extends VariableWidthBuilder {\n set(index, value) {\n return super.set(index, value);\n }\n setValue(index, value) {\n value = value instanceof Map ? value : new Map(Object.entries(value));\n const pending = this._pending || (this._pending = new Map());\n const current = pending.get(index);\n current && (this._pendingLength -= current.size);\n this._pendingLength += value.size;\n pending.set(index, value);\n }\n addChild(child, name = `${this.numChildren}`) {\n if (this.numChildren > 0) {\n throw new Error('ListBuilder can only have one child.');\n }\n this.children[this.numChildren] = child;\n this.type = new Map_(new Field(name, child.type, true), this.type.keysSorted);\n return this.numChildren - 1;\n }\n _flushPending(pending) {\n const offsets = this._offsets;\n const setValue = this._setValue;\n pending.forEach((value, index) => {\n if (value === undefined) {\n offsets.set(index, 0);\n }\n else {\n offsets.set(index, value.size);\n setValue(this, index, value);\n }\n });\n }\n}\n\n//# sourceMappingURL=map.mjs.map\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\nimport { Field } from '../schema';\nimport { Builder } from '../builder';\nimport { Struct } from '../type';\n/** @ignore */\nexport class StructBuilder extends Builder {\n addChild(child, name = `${this.numChildren}`) {\n const childIndex = this.children.push(child);\n this.type = new Struct([...this.type.children, new Field(name, child.type, true)]);\n return childIndex;\n }\n}\n\n//# sourceMappingURL=struct.mjs.map\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\nimport { Field } from '../schema';\nimport { DataBufferBuilder } from './buffer';\nimport { Builder } from '../builder';\nimport { Union } from '../type';\n/** @ignore */\nexport class UnionBuilder extends Builder {\n constructor(options) {\n super(options);\n this._typeIds = new DataBufferBuilder(new Int8Array(0), 1);\n if (typeof options['valueToChildTypeId'] === 'function') {\n this._valueToChildTypeId = options['valueToChildTypeId'];\n }\n }\n get typeIdToChildIndex() { return this.type.typeIdToChildIndex; }\n append(value, childTypeId) {\n return this.set(this.length, value, childTypeId);\n }\n set(index, value, childTypeId) {\n if (childTypeId === undefined) {\n childTypeId = this._valueToChildTypeId(this, value, index);\n }\n if (this.setValid(index, this.isValid(value))) {\n this.setValue(index, value, childTypeId);\n }\n return this;\n }\n // @ts-ignore\n setValue(index, value, childTypeId) {\n this._typeIds.set(index, childTypeId);\n super.setValue(index, value);\n }\n // @ts-ignore\n addChild(child, name = `${this.children.length}`) {\n const childTypeId = this.children.push(child);\n const { type: { children, mode, typeIds } } = this;\n const fields = [...children, new Field(name, child.type)];\n this.type = new Union(mode, [...typeIds, childTypeId], fields);\n return childTypeId;\n }\n /** @ignore */\n // @ts-ignore\n _valueToChildTypeId(builder, value, offset) {\n throw new Error(`Cannot map UnionBuilder value to child typeId. \\\nPass the \\`childTypeId\\` as the second argument to unionBuilder.append(), \\\nor supply a \\`valueToChildTypeId\\` function as part of the UnionBuilder constructor options.`);\n }\n}\n/** @ignore */\nexport class SparseUnionBuilder extends UnionBuilder {\n}\n/** @ignore */\nexport class DenseUnionBuilder extends UnionBuilder {\n constructor(options) {\n super(options);\n this._offsets = new DataBufferBuilder(new Int32Array(0));\n }\n /** @ignore */\n setValue(index, value, childTypeId) {\n const childIndex = this.type.typeIdToChildIndex[childTypeId];\n this._offsets.set(index, this.getChildAt(childIndex).length);\n return super.setValue(index, value, childTypeId);\n }\n}\n\n//# sourceMappingURL=union.mjs.map\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\nimport { Vector } from '../vector';\nimport { Visitor } from '../visitor';\nimport { encodeUtf8 } from '../util/utf8';\nimport { float64ToUint16 } from '../util/math';\nimport { toArrayBufferView } from '../util/buffer';\nimport { UnionMode, Precision, DateUnit, TimeUnit, IntervalUnit } from '../enum';\n/** @ignore */\nexport class SetVisitor extends Visitor {\n}\n/** @ignore */\nconst setEpochMsToDays = (data, index, epochMs) => { data[index] = (epochMs / 86400000) | 0; };\n/** @ignore */\nconst setEpochMsToMillisecondsLong = (data, index, epochMs) => {\n data[index] = (epochMs % 4294967296) | 0;\n data[index + 1] = (epochMs / 4294967296) | 0;\n};\n/** @ignore */\nconst setEpochMsToMicrosecondsLong = (data, index, epochMs) => {\n data[index] = ((epochMs * 1000) % 4294967296) | 0;\n data[index + 1] = ((epochMs * 1000) / 4294967296) | 0;\n};\n/** @ignore */\nconst setEpochMsToNanosecondsLong = (data, index, epochMs) => {\n data[index] = ((epochMs * 1000000) % 4294967296) | 0;\n data[index + 1] = ((epochMs * 1000000) / 4294967296) | 0;\n};\n/** @ignore */\nconst setVariableWidthBytes = (values, valueOffsets, index, value) => {\n const { [index]: x, [index + 1]: y } = valueOffsets;\n if (x != null && y != null) {\n values.set(value.subarray(0, y - x), x);\n }\n};\n/** @ignore */\nconst setBool = ({ offset, values }, index, val) => {\n const idx = offset + index;\n val ? (values[idx >> 3] |= (1 << (idx % 8))) // true\n : (values[idx >> 3] &= ~(1 << (idx % 8))); // false\n};\n/** @ignore */\nconst setDateDay = ({ values }, index, value) => { setEpochMsToDays(values, index, value.valueOf()); };\n/** @ignore */\nconst setDateMillisecond = ({ values }, index, value) => { setEpochMsToMillisecondsLong(values, index * 2, value.valueOf()); };\n/** @ignore */\nconst setNumeric = ({ stride, values }, index, value) => { values[stride * index] = value; };\n/** @ignore */\nconst setFloat16 = ({ stride, values }, index, value) => { values[stride * index] = float64ToUint16(value); };\n/** @ignore */\nconst setNumericX2 = (vector, index, value) => {\n switch (typeof value) {\n case 'bigint':\n vector.values64[index] = value;\n break;\n case 'number':\n vector.values[index * vector.stride] = value;\n break;\n default:\n const val = value;\n const { stride, ArrayType } = vector;\n const long = toArrayBufferView(ArrayType, val);\n vector.values.set(long.subarray(0, stride), stride * index);\n }\n};\n/** @ignore */\nconst setFixedSizeBinary = ({ stride, values }, index, value) => { values.set(value.subarray(0, stride), stride * index); };\n/** @ignore */\nconst setBinary = ({ values, valueOffsets }, index, value) => setVariableWidthBytes(values, valueOffsets, index, value);\n/** @ignore */\nconst setUtf8 = ({ values, valueOffsets }, index, value) => {\n setVariableWidthBytes(values, valueOffsets, index, encodeUtf8(value));\n};\n/* istanbul ignore next */\n/** @ignore */\nconst setInt = (vector, index, value) => {\n vector.type.bitWidth < 64\n ? setNumeric(vector, index, value)\n : setNumericX2(vector, index, value);\n};\n/* istanbul ignore next */\n/** @ignore */\nconst setFloat = (vector, index, value) => {\n vector.type.precision !== Precision.HALF\n ? setNumeric(vector, index, value)\n : setFloat16(vector, index, value);\n};\n/* istanbul ignore next */\nconst setDate = (vector, index, value) => {\n vector.type.unit === DateUnit.DAY\n ? setDateDay(vector, index, value)\n : setDateMillisecond(vector, index, value);\n};\n/** @ignore */\nconst setTimestampSecond = ({ values }, index, value) => setEpochMsToMillisecondsLong(values, index * 2, value / 1000);\n/** @ignore */\nconst setTimestampMillisecond = ({ values }, index, value) => setEpochMsToMillisecondsLong(values, index * 2, value);\n/** @ignore */\nconst setTimestampMicrosecond = ({ values }, index, value) => setEpochMsToMicrosecondsLong(values, index * 2, value);\n/** @ignore */\nconst setTimestampNanosecond = ({ values }, index, value) => setEpochMsToNanosecondsLong(values, index * 2, value);\n/* istanbul ignore next */\n/** @ignore */\nconst setTimestamp = (vector, index, value) => {\n switch (vector.type.unit) {\n case TimeUnit.SECOND: return setTimestampSecond(vector, index, value);\n case TimeUnit.MILLISECOND: return setTimestampMillisecond(vector, index, value);\n case TimeUnit.MICROSECOND: return setTimestampMicrosecond(vector, index, value);\n case TimeUnit.NANOSECOND: return setTimestampNanosecond(vector, index, value);\n }\n};\n/** @ignore */\nconst setTimeSecond = ({ values, stride }, index, value) => { values[stride * index] = value; };\n/** @ignore */\nconst setTimeMillisecond = ({ values, stride }, index, value) => { values[stride * index] = value; };\n/** @ignore */\nconst setTimeMicrosecond = ({ values }, index, value) => { values.set(value.subarray(0, 2), 2 * index); };\n/** @ignore */\nconst setTimeNanosecond = ({ values }, index, value) => { values.set(value.subarray(0, 2), 2 * index); };\n/* istanbul ignore next */\n/** @ignore */\nconst setTime = (vector, index, value) => {\n switch (vector.type.unit) {\n case TimeUnit.SECOND: return setTimeSecond(vector, index, value);\n case TimeUnit.MILLISECOND: return setTimeMillisecond(vector, index, value);\n case TimeUnit.MICROSECOND: return setTimeMicrosecond(vector, index, value);\n case TimeUnit.NANOSECOND: return setTimeNanosecond(vector, index, value);\n }\n};\n/** @ignore */\nconst setDecimal = ({ values }, index, value) => { values.set(value.subarray(0, 4), 4 * index); };\n/** @ignore */\nconst setList = (vector, index, value) => {\n const values = vector.getChildAt(0), valueOffsets = vector.valueOffsets;\n for (let idx = -1, itr = valueOffsets[index], end = valueOffsets[index + 1]; itr < end;) {\n values.set(itr++, value.get(++idx));\n }\n};\n/** @ignore */\nconst setMap = (vector, index, value) => {\n const values = vector.getChildAt(0), valueOffsets = vector.valueOffsets;\n const entries = value instanceof Map ? [...value] : Object.entries(value);\n for (let idx = -1, itr = valueOffsets[index], end = valueOffsets[index + 1]; itr < end;) {\n values.set(itr++, entries[++idx]);\n }\n};\n/** @ignore */ const _setStructArrayValue = (o, v) => (c, _, i) => c && c.set(o, v[i]);\n/** @ignore */ const _setStructVectorValue = (o, v) => (c, _, i) => c && c.set(o, v.get(i));\n/** @ignore */ const _setStructMapValue = (o, v) => (c, f, _) => c && c.set(o, v.get(f.name));\n/** @ignore */ const _setStructObjectValue = (o, v) => (c, f, _) => c && c.set(o, v[f.name]);\n/** @ignore */\nconst setStruct = (vector, index, value) => {\n const setValue = value instanceof Map ? _setStructMapValue(index, value) :\n value instanceof Vector ? _setStructVectorValue(index, value) :\n Array.isArray(value) ? _setStructArrayValue(index, value) :\n _setStructObjectValue(index, value);\n vector.type.children.forEach((f, i) => setValue(vector.getChildAt(i), f, i));\n};\n/* istanbul ignore next */\n/** @ignore */\nconst setUnion = (vector, index, value) => {\n vector.type.mode === UnionMode.Dense ?\n setDenseUnion(vector, index, value) :\n setSparseUnion(vector, index, value);\n};\n/** @ignore */\nconst setDenseUnion = (vector, index, value) => {\n const childIndex = vector.typeIdToChildIndex[vector.typeIds[index]];\n const child = vector.getChildAt(childIndex);\n child && child.set(vector.valueOffsets[index], value);\n};\n/** @ignore */\nconst setSparseUnion = (vector, index, value) => {\n const childIndex = vector.typeIdToChildIndex[vector.typeIds[index]];\n const child = vector.getChildAt(childIndex);\n child && child.set(index, value);\n};\n/** @ignore */\nconst setDictionary = (vector, index, value) => {\n const key = vector.getKey(index);\n if (key !== null) {\n vector.setValue(key, value);\n }\n};\n/* istanbul ignore next */\n/** @ignore */\nconst setIntervalValue = (vector, index, value) => {\n (vector.type.unit === IntervalUnit.DAY_TIME)\n ? setIntervalDayTime(vector, index, value)\n : setIntervalYearMonth(vector, index, value);\n};\n/** @ignore */\nconst setIntervalDayTime = ({ values }, index, value) => { values.set(value.subarray(0, 2), 2 * index); };\n/** @ignore */\nconst setIntervalYearMonth = ({ values }, index, value) => { values[index] = (value[0] * 12) + (value[1] % 12); };\n/** @ignore */\nconst setFixedSizeList = (vector, index, value) => {\n const child = vector.getChildAt(0), { stride } = vector;\n for (let idx = -1, offset = index * stride; ++idx < stride;) {\n child.set(offset + idx, value.get(idx));\n }\n};\nSetVisitor.prototype.visitBool = setBool;\nSetVisitor.prototype.visitInt = setInt;\nSetVisitor.prototype.visitInt8 = setNumeric;\nSetVisitor.prototype.visitInt16 = setNumeric;\nSetVisitor.prototype.visitInt32 = setNumeric;\nSetVisitor.prototype.visitInt64 = setNumericX2;\nSetVisitor.prototype.visitUint8 = setNumeric;\nSetVisitor.prototype.visitUint16 = setNumeric;\nSetVisitor.prototype.visitUint32 = setNumeric;\nSetVisitor.prototype.visitUint64 = setNumericX2;\nSetVisitor.prototype.visitFloat = setFloat;\nSetVisitor.prototype.visitFloat16 = setFloat16;\nSetVisitor.prototype.visitFloat32 = setNumeric;\nSetVisitor.prototype.visitFloat64 = setNumeric;\nSetVisitor.prototype.visitUtf8 = setUtf8;\nSetVisitor.prototype.visitBinary = setBinary;\nSetVisitor.prototype.visitFixedSizeBinary = setFixedSizeBinary;\nSetVisitor.prototype.visitDate = setDate;\nSetVisitor.prototype.visitDateDay = setDateDay;\nSetVisitor.prototype.visitDateMillisecond = setDateMillisecond;\nSetVisitor.prototype.visitTimestamp = setTimestamp;\nSetVisitor.prototype.visitTimestampSecond = setTimestampSecond;\nSetVisitor.prototype.visitTimestampMillisecond = setTimestampMillisecond;\nSetVisitor.prototype.visitTimestampMicrosecond = setTimestampMicrosecond;\nSetVisitor.prototype.visitTimestampNanosecond = setTimestampNanosecond;\nSetVisitor.prototype.visitTime = setTime;\nSetVisitor.prototype.visitTimeSecond = setTimeSecond;\nSetVisitor.prototype.visitTimeMillisecond = setTimeMillisecond;\nSetVisitor.prototype.visitTimeMicrosecond = setTimeMicrosecond;\nSetVisitor.prototype.visitTimeNanosecond = setTimeNanosecond;\nSetVisitor.prototype.visitDecimal = setDecimal;\nSetVisitor.prototype.visitList = setList;\nSetVisitor.prototype.visitStruct = setStruct;\nSetVisitor.prototype.visitUnion = setUnion;\nSetVisitor.prototype.visitDenseUnion = setDenseUnion;\nSetVisitor.prototype.visitSparseUnion = setSparseUnion;\nSetVisitor.prototype.visitDictionary = setDictionary;\nSetVisitor.prototype.visitInterval = setIntervalValue;\nSetVisitor.prototype.visitIntervalDayTime = setIntervalDayTime;\nSetVisitor.prototype.visitIntervalYearMonth = setIntervalYearMonth;\nSetVisitor.prototype.visitFixedSizeList = setFixedSizeList;\nSetVisitor.prototype.visitMap = setMap;\n/** @ignore */\nexport const instance = new SetVisitor();\n\n//# sourceMappingURL=set.mjs.map\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\nimport { Visitor } from '../visitor';\nimport { BinaryBuilder } from '../builder/binary';\nimport { BoolBuilder } from '../builder/bool';\nimport { DateBuilder, DateDayBuilder, DateMillisecondBuilder } from '../builder/date';\nimport { DecimalBuilder } from '../builder/decimal';\nimport { DictionaryBuilder } from '../builder/dictionary';\nimport { FixedSizeBinaryBuilder } from '../builder/fixedsizebinary';\nimport { FixedSizeListBuilder } from '../builder/fixedsizelist';\nimport { FloatBuilder, Float16Builder, Float32Builder, Float64Builder } from '../builder/float';\nimport { IntervalBuilder, IntervalDayTimeBuilder, IntervalYearMonthBuilder } from '../builder/interval';\nimport { IntBuilder, Int8Builder, Int16Builder, Int32Builder, Int64Builder, Uint8Builder, Uint16Builder, Uint32Builder, Uint64Builder } from '../builder/int';\nimport { ListBuilder } from '../builder/list';\nimport { MapBuilder } from '../builder/map';\nimport { NullBuilder } from '../builder/null';\nimport { StructBuilder } from '../builder/struct';\nimport { TimestampBuilder, TimestampSecondBuilder, TimestampMillisecondBuilder, TimestampMicrosecondBuilder, TimestampNanosecondBuilder } from '../builder/timestamp';\nimport { TimeBuilder, TimeSecondBuilder, TimeMillisecondBuilder, TimeMicrosecondBuilder, TimeNanosecondBuilder } from '../builder/time';\nimport { UnionBuilder, DenseUnionBuilder, SparseUnionBuilder } from '../builder/union';\nimport { Utf8Builder } from '../builder/utf8';\n/** @ignore */\nexport class GetBuilderCtor extends Visitor {\n visitNull() { return NullBuilder; }\n visitBool() { return BoolBuilder; }\n visitInt() { return IntBuilder; }\n visitInt8() { return Int8Builder; }\n visitInt16() { return Int16Builder; }\n visitInt32() { return Int32Builder; }\n visitInt64() { return Int64Builder; }\n visitUint8() { return Uint8Builder; }\n visitUint16() { return Uint16Builder; }\n visitUint32() { return Uint32Builder; }\n visitUint64() { return Uint64Builder; }\n visitFloat() { return FloatBuilder; }\n visitFloat16() { return Float16Builder; }\n visitFloat32() { return Float32Builder; }\n visitFloat64() { return Float64Builder; }\n visitUtf8() { return Utf8Builder; }\n visitBinary() { return BinaryBuilder; }\n visitFixedSizeBinary() { return FixedSizeBinaryBuilder; }\n visitDate() { return DateBuilder; }\n visitDateDay() { return DateDayBuilder; }\n visitDateMillisecond() { return DateMillisecondBuilder; }\n visitTimestamp() { return TimestampBuilder; }\n visitTimestampSecond() { return TimestampSecondBuilder; }\n visitTimestampMillisecond() { return TimestampMillisecondBuilder; }\n visitTimestampMicrosecond() { return TimestampMicrosecondBuilder; }\n visitTimestampNanosecond() { return TimestampNanosecondBuilder; }\n visitTime() { return TimeBuilder; }\n visitTimeSecond() { return TimeSecondBuilder; }\n visitTimeMillisecond() { return TimeMillisecondBuilder; }\n visitTimeMicrosecond() { return TimeMicrosecondBuilder; }\n visitTimeNanosecond() { return TimeNanosecondBuilder; }\n visitDecimal() { return DecimalBuilder; }\n visitList() { return ListBuilder; }\n visitStruct() { return StructBuilder; }\n visitUnion() { return UnionBuilder; }\n visitDenseUnion() { return DenseUnionBuilder; }\n visitSparseUnion() { return SparseUnionBuilder; }\n visitDictionary() { return DictionaryBuilder; }\n visitInterval() { return IntervalBuilder; }\n visitIntervalDayTime() { return IntervalDayTimeBuilder; }\n visitIntervalYearMonth() { return IntervalYearMonthBuilder; }\n visitFixedSizeList() { return FixedSizeListBuilder; }\n visitMap() { return MapBuilder; }\n}\n/** @ignore */\nexport const instance = new GetBuilderCtor();\n\n//# sourceMappingURL=builderctor.mjs.map\n","// automatically generated by the FlatBuffers compiler, do not modify\nimport * as NS7624605610262437867 from './Schema';\n/**\n * ----------------------------------------------------------------------\n * Arrow File metadata\n *\n *\n * @constructor\n */\nexport var org;\n(function (org) {\n var apache;\n (function (apache) {\n var arrow;\n (function (arrow) {\n var flatbuf;\n (function (flatbuf) {\n class Footer {\n constructor() {\n this.bb = null;\n this.bb_pos = 0;\n }\n /**\n * @param number i\n * @param flatbuffers.ByteBuffer bb\n * @returns Footer\n */\n __init(i, bb) {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n }\n /**\n * @param flatbuffers.ByteBuffer bb\n * @param Footer= obj\n * @returns Footer\n */\n static getRootAsFooter(bb, obj) {\n return (obj || new Footer).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n }\n /**\n * @returns org.apache.arrow.flatbuf.MetadataVersion\n */\n version() {\n let offset = this.bb.__offset(this.bb_pos, 4);\n return offset ? /** */ (this.bb.readInt16(this.bb_pos + offset)) : NS7624605610262437867.org.apache.arrow.flatbuf.MetadataVersion.V1;\n }\n /**\n * @param org.apache.arrow.flatbuf.Schema= obj\n * @returns org.apache.arrow.flatbuf.Schema|null\n */\n schema(obj) {\n let offset = this.bb.__offset(this.bb_pos, 6);\n return offset ? (obj || new NS7624605610262437867.org.apache.arrow.flatbuf.Schema).__init(this.bb.__indirect(this.bb_pos + offset), this.bb) : null;\n }\n /**\n * @param number index\n * @param org.apache.arrow.flatbuf.Block= obj\n * @returns org.apache.arrow.flatbuf.Block\n */\n dictionaries(index, obj) {\n let offset = this.bb.__offset(this.bb_pos, 8);\n return offset ? (obj || new org.apache.arrow.flatbuf.Block).__init(this.bb.__vector(this.bb_pos + offset) + index * 24, this.bb) : null;\n }\n /**\n * @returns number\n */\n dictionariesLength() {\n let offset = this.bb.__offset(this.bb_pos, 8);\n return offset ? this.bb.__vector_len(this.bb_pos + offset) : 0;\n }\n /**\n * @param number index\n * @param org.apache.arrow.flatbuf.Block= obj\n * @returns org.apache.arrow.flatbuf.Block\n */\n recordBatches(index, obj) {\n let offset = this.bb.__offset(this.bb_pos, 10);\n return offset ? (obj || new org.apache.arrow.flatbuf.Block).__init(this.bb.__vector(this.bb_pos + offset) + index * 24, this.bb) : null;\n }\n /**\n * @returns number\n */\n recordBatchesLength() {\n let offset = this.bb.__offset(this.bb_pos, 10);\n return offset ? this.bb.__vector_len(this.bb_pos + offset) : 0;\n }\n /**\n * @param flatbuffers.Builder builder\n */\n static startFooter(builder) {\n builder.startObject(4);\n }\n /**\n * @param flatbuffers.Builder builder\n * @param org.apache.arrow.flatbuf.MetadataVersion version\n */\n static addVersion(builder, version) {\n builder.addFieldInt16(0, version, NS7624605610262437867.org.apache.arrow.flatbuf.MetadataVersion.V1);\n }\n /**\n * @param flatbuffers.Builder builder\n * @param flatbuffers.Offset schemaOffset\n */\n static addSchema(builder, schemaOffset) {\n builder.addFieldOffset(1, schemaOffset, 0);\n }\n /**\n * @param flatbuffers.Builder builder\n * @param flatbuffers.Offset dictionariesOffset\n */\n static addDictionaries(builder, dictionariesOffset) {\n builder.addFieldOffset(2, dictionariesOffset, 0);\n }\n /**\n * @param flatbuffers.Builder builder\n * @param number numElems\n */\n static startDictionariesVector(builder, numElems) {\n builder.startVector(24, numElems, 8);\n }\n /**\n * @param flatbuffers.Builder builder\n * @param flatbuffers.Offset recordBatchesOffset\n */\n static addRecordBatches(builder, recordBatchesOffset) {\n builder.addFieldOffset(3, recordBatchesOffset, 0);\n }\n /**\n * @param flatbuffers.Builder builder\n * @param number numElems\n */\n static startRecordBatchesVector(builder, numElems) {\n builder.startVector(24, numElems, 8);\n }\n /**\n * @param flatbuffers.Builder builder\n * @returns flatbuffers.Offset\n */\n static endFooter(builder) {\n let offset = builder.endObject();\n return offset;\n }\n /**\n * @param flatbuffers.Builder builder\n * @param flatbuffers.Offset offset\n */\n static finishFooterBuffer(builder, offset) {\n builder.finish(offset);\n }\n static createFooter(builder, version, schemaOffset, dictionariesOffset, recordBatchesOffset) {\n Footer.startFooter(builder);\n Footer.addVersion(builder, version);\n Footer.addSchema(builder, schemaOffset);\n Footer.addDictionaries(builder, dictionariesOffset);\n Footer.addRecordBatches(builder, recordBatchesOffset);\n return Footer.endFooter(builder);\n }\n }\n flatbuf.Footer = Footer;\n })(flatbuf = arrow.flatbuf || (arrow.flatbuf = {}));\n })(arrow = apache.arrow || (apache.arrow = {}));\n })(apache = org.apache || (org.apache = {}));\n})(org || (org = {}));\n/**\n * @constructor\n */\n(function (org) {\n var apache;\n (function (apache) {\n var arrow;\n (function (arrow) {\n var flatbuf;\n (function (flatbuf) {\n class Block {\n constructor() {\n this.bb = null;\n this.bb_pos = 0;\n }\n /**\n * @param number i\n * @param flatbuffers.ByteBuffer bb\n * @returns Block\n */\n __init(i, bb) {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n }\n /**\n * Index to the start of the RecordBlock (note this is past the Message header)\n *\n * @returns flatbuffers.Long\n */\n offset() {\n return this.bb.readInt64(this.bb_pos);\n }\n /**\n * Length of the metadata\n *\n * @returns number\n */\n metaDataLength() {\n return this.bb.readInt32(this.bb_pos + 8);\n }\n /**\n * Length of the data (this is aligned so there can be a gap between this and\n * the metatdata).\n *\n * @returns flatbuffers.Long\n */\n bodyLength() {\n return this.bb.readInt64(this.bb_pos + 16);\n }\n /**\n * @param flatbuffers.Builder builder\n * @param flatbuffers.Long offset\n * @param number metaDataLength\n * @param flatbuffers.Long bodyLength\n * @returns flatbuffers.Offset\n */\n static createBlock(builder, offset, metaDataLength, bodyLength) {\n builder.prep(8, 24);\n builder.writeInt64(bodyLength);\n builder.pad(4);\n builder.writeInt32(metaDataLength);\n builder.writeInt64(offset);\n return builder.offset();\n }\n }\n flatbuf.Block = Block;\n })(flatbuf = arrow.flatbuf || (arrow.flatbuf = {}));\n })(arrow = apache.arrow || (apache.arrow = {}));\n })(apache = org.apache || (org.apache = {}));\n})(org || (org = {}));\n\n//# sourceMappingURL=File.mjs.map\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\n/** @ignore */\nexport { Builder } from '../builder';\nexport { BoolBuilder } from './bool';\nexport { NullBuilder } from './null';\nexport { DateBuilder, DateDayBuilder, DateMillisecondBuilder } from './date';\nexport { DecimalBuilder } from './decimal';\nexport { DictionaryBuilder } from './dictionary';\nexport { FixedSizeBinaryBuilder } from './fixedsizebinary';\nexport { FloatBuilder, Float16Builder, Float32Builder, Float64Builder } from './float';\nexport { IntBuilder, Int8Builder, Int16Builder, Int32Builder, Int64Builder, Uint8Builder, Uint16Builder, Uint32Builder, Uint64Builder } from './int';\nexport { TimeBuilder, TimeSecondBuilder, TimeMillisecondBuilder, TimeMicrosecondBuilder, TimeNanosecondBuilder } from './time';\nexport { TimestampBuilder, TimestampSecondBuilder, TimestampMillisecondBuilder, TimestampMicrosecondBuilder, TimestampNanosecondBuilder } from './timestamp';\nexport { IntervalBuilder, IntervalDayTimeBuilder, IntervalYearMonthBuilder } from './interval';\nexport { Utf8Builder } from './utf8';\nexport { BinaryBuilder } from './binary';\nexport { ListBuilder } from './list';\nexport { FixedSizeListBuilder } from './fixedsizelist';\nexport { MapBuilder } from './map';\nexport { StructBuilder } from './struct';\nexport { UnionBuilder, SparseUnionBuilder, DenseUnionBuilder } from './union';\nimport { Type } from '../enum';\nimport { Utf8Builder } from './utf8';\nimport { Builder } from '../builder';\nimport { instance as setVisitor } from '../visitor/set';\nimport { instance as getBuilderConstructor } from '../visitor/builderctor';\n/** @nocollapse */\nBuilder.new = newBuilder;\nfunction newBuilder(options) {\n const type = options.type;\n const builder = new (getBuilderConstructor.getVisitFn(type)())(options);\n if (type.children && type.children.length > 0) {\n const children = options['children'] || [];\n const defaultOptions = { 'nullValues': options['nullValues'] };\n const getChildOptions = Array.isArray(children)\n ? ((_, i) => children[i] || defaultOptions)\n : (({ name }) => children[name] || defaultOptions);\n type.children.forEach((field, index) => {\n const { type } = field;\n const opts = getChildOptions(field, index);\n builder.children.push(newBuilder({ ...opts, type }));\n });\n }\n return builder;\n}\nObject.keys(Type)\n .map((T) => Type[T])\n .filter((T) => typeof T === 'number' && T !== Type.NONE)\n .forEach((typeId) => {\n const BuilderCtor = getBuilderConstructor.visit(typeId);\n BuilderCtor.prototype._setValue = setVisitor.getVisitFn(typeId);\n});\nUtf8Builder.prototype._setValue = setVisitor.visitBinary;\n\n//# sourceMappingURL=index.mjs.map\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\n/* tslint:disable:class-name */\nimport * as File_ from '../../fb/File';\nimport { flatbuffers } from 'flatbuffers';\nvar Long = flatbuffers.Long;\nvar Builder = flatbuffers.Builder;\nvar ByteBuffer = flatbuffers.ByteBuffer;\nvar _Block = File_.org.apache.arrow.flatbuf.Block;\nvar _Footer = File_.org.apache.arrow.flatbuf.Footer;\nimport { Schema } from '../../schema';\nimport { MetadataVersion } from '../../enum';\nimport { toUint8Array } from '../../util/buffer';\n/** @ignore */\nclass Footer_ {\n constructor(schema, version = MetadataVersion.V4, recordBatches, dictionaryBatches) {\n this.schema = schema;\n this.version = version;\n recordBatches && (this._recordBatches = recordBatches);\n dictionaryBatches && (this._dictionaryBatches = dictionaryBatches);\n }\n /** @nocollapse */\n static decode(buf) {\n buf = new ByteBuffer(toUint8Array(buf));\n const footer = _Footer.getRootAsFooter(buf);\n const schema = Schema.decode(footer.schema());\n return new OffHeapFooter(schema, footer);\n }\n /** @nocollapse */\n static encode(footer) {\n const b = new Builder();\n const schemaOffset = Schema.encode(b, footer.schema);\n _Footer.startRecordBatchesVector(b, footer.numRecordBatches);\n [...footer.recordBatches()].slice().reverse().forEach((rb) => FileBlock.encode(b, rb));\n const recordBatchesOffset = b.endVector();\n _Footer.startDictionariesVector(b, footer.numDictionaries);\n [...footer.dictionaryBatches()].slice().reverse().forEach((db) => FileBlock.encode(b, db));\n const dictionaryBatchesOffset = b.endVector();\n _Footer.startFooter(b);\n _Footer.addSchema(b, schemaOffset);\n _Footer.addVersion(b, MetadataVersion.V4);\n _Footer.addRecordBatches(b, recordBatchesOffset);\n _Footer.addDictionaries(b, dictionaryBatchesOffset);\n _Footer.finishFooterBuffer(b, _Footer.endFooter(b));\n return b.asUint8Array();\n }\n get numRecordBatches() { return this._recordBatches.length; }\n get numDictionaries() { return this._dictionaryBatches.length; }\n *recordBatches() {\n for (let block, i = -1, n = this.numRecordBatches; ++i < n;) {\n if (block = this.getRecordBatch(i)) {\n yield block;\n }\n }\n }\n *dictionaryBatches() {\n for (let block, i = -1, n = this.numDictionaries; ++i < n;) {\n if (block = this.getDictionaryBatch(i)) {\n yield block;\n }\n }\n }\n getRecordBatch(index) {\n return index >= 0\n && index < this.numRecordBatches\n && this._recordBatches[index] || null;\n }\n getDictionaryBatch(index) {\n return index >= 0\n && index < this.numDictionaries\n && this._dictionaryBatches[index] || null;\n }\n}\nexport { Footer_ as Footer };\n/** @ignore */\nclass OffHeapFooter extends Footer_ {\n constructor(schema, _footer) {\n super(schema, _footer.version());\n this._footer = _footer;\n }\n get numRecordBatches() { return this._footer.recordBatchesLength(); }\n get numDictionaries() { return this._footer.dictionariesLength(); }\n getRecordBatch(index) {\n if (index >= 0 && index < this.numRecordBatches) {\n const fileBlock = this._footer.recordBatches(index);\n if (fileBlock) {\n return FileBlock.decode(fileBlock);\n }\n }\n return null;\n }\n getDictionaryBatch(index) {\n if (index >= 0 && index < this.numDictionaries) {\n const fileBlock = this._footer.dictionaries(index);\n if (fileBlock) {\n return FileBlock.decode(fileBlock);\n }\n }\n return null;\n }\n}\n/** @ignore */\nexport class FileBlock {\n /** @nocollapse */\n static decode(block) {\n return new FileBlock(block.metaDataLength(), block.bodyLength(), block.offset());\n }\n /** @nocollapse */\n static encode(b, fileBlock) {\n const { metaDataLength } = fileBlock;\n const offset = new Long(fileBlock.offset, 0);\n const bodyLength = new Long(fileBlock.bodyLength, 0);\n return _Block.createBlock(b, offset, metaDataLength, bodyLength);\n }\n constructor(metaDataLength, bodyLength, offset) {\n this.metaDataLength = metaDataLength;\n this.offset = typeof offset === 'number' ? offset : offset.low;\n this.bodyLength = typeof bodyLength === 'number' ? bodyLength : bodyLength.low;\n }\n}\n\n//# sourceMappingURL=file.mjs.map\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\nimport streamAdapters from './adapters';\nimport { decodeUtf8 } from '../util/utf8';\nimport { ITERATOR_DONE, AsyncQueue } from './interfaces';\nimport { toUint8Array, joinUint8Arrays } from '../util/buffer';\nimport { isPromise, isFetchResponse, isIterable, isAsyncIterable, isReadableDOMStream, isReadableNodeStream } from '../util/compat';\n/** @ignore */\nexport class AsyncByteQueue extends AsyncQueue {\n write(value) {\n if ((value = toUint8Array(value)).byteLength > 0) {\n return super.write(value);\n }\n }\n toString(sync = false) {\n return sync\n ? decodeUtf8(this.toUint8Array(true))\n : this.toUint8Array(false).then(decodeUtf8);\n }\n toUint8Array(sync = false) {\n return sync ? joinUint8Arrays(this._values)[0] : (async () => {\n let buffers = [], byteLength = 0;\n for await (const chunk of this) {\n buffers.push(chunk);\n byteLength += chunk.byteLength;\n }\n return joinUint8Arrays(buffers, byteLength)[0];\n })();\n }\n}\n/** @ignore */\nexport class ByteStream {\n constructor(source) {\n if (source) {\n this.source = new ByteStreamSource(streamAdapters.fromIterable(source));\n }\n }\n [Symbol.iterator]() { return this; }\n next(value) { return this.source.next(value); }\n throw(value) { return this.source.throw(value); }\n return(value) { return this.source.return(value); }\n peek(size) { return this.source.peek(size); }\n read(size) { return this.source.read(size); }\n}\n/** @ignore */\nexport class AsyncByteStream {\n constructor(source) {\n if (source instanceof AsyncByteStream) {\n this.source = source.source;\n }\n else if (source instanceof AsyncByteQueue) {\n this.source = new AsyncByteStreamSource(streamAdapters.fromAsyncIterable(source));\n }\n else if (isReadableNodeStream(source)) {\n this.source = new AsyncByteStreamSource(streamAdapters.fromNodeStream(source));\n }\n else if (isReadableDOMStream(source)) {\n this.source = new AsyncByteStreamSource(streamAdapters.fromDOMStream(source));\n }\n else if (isFetchResponse(source)) {\n this.source = new AsyncByteStreamSource(streamAdapters.fromDOMStream(source.body));\n }\n else if (isIterable(source)) {\n this.source = new AsyncByteStreamSource(streamAdapters.fromIterable(source));\n }\n else if (isPromise(source)) {\n this.source = new AsyncByteStreamSource(streamAdapters.fromAsyncIterable(source));\n }\n else if (isAsyncIterable(source)) {\n this.source = new AsyncByteStreamSource(streamAdapters.fromAsyncIterable(source));\n }\n }\n [Symbol.asyncIterator]() { return this; }\n next(value) { return this.source.next(value); }\n throw(value) { return this.source.throw(value); }\n return(value) { return this.source.return(value); }\n get closed() { return this.source.closed; }\n cancel(reason) { return this.source.cancel(reason); }\n peek(size) { return this.source.peek(size); }\n read(size) { return this.source.read(size); }\n}\n/** @ignore */\nclass ByteStreamSource {\n constructor(source) {\n this.source = source;\n }\n cancel(reason) { this.return(reason); }\n peek(size) { return this.next(size, 'peek').value; }\n read(size) { return this.next(size, 'read').value; }\n next(size, cmd = 'read') { return this.source.next({ cmd, size }); }\n throw(value) { return Object.create((this.source.throw && this.source.throw(value)) || ITERATOR_DONE); }\n return(value) { return Object.create((this.source.return && this.source.return(value)) || ITERATOR_DONE); }\n}\n/** @ignore */\nclass AsyncByteStreamSource {\n constructor(source) {\n this.source = source;\n this._closedPromise = new Promise((r) => this._closedPromiseResolve = r);\n }\n async cancel(reason) { await this.return(reason); }\n get closed() { return this._closedPromise; }\n async read(size) { return (await this.next(size, 'read')).value; }\n async peek(size) { return (await this.next(size, 'peek')).value; }\n async next(size, cmd = 'read') { return (await this.source.next({ cmd, size })); }\n async throw(value) {\n const result = (this.source.throw && await this.source.throw(value)) || ITERATOR_DONE;\n this._closedPromiseResolve && this._closedPromiseResolve();\n this._closedPromiseResolve = undefined;\n return Object.create(result);\n }\n async return(value) {\n const result = (this.source.return && await this.source.return(value)) || ITERATOR_DONE;\n this._closedPromiseResolve && this._closedPromiseResolve();\n this._closedPromiseResolve = undefined;\n return Object.create(result);\n }\n}\n\n//# sourceMappingURL=stream.mjs.map\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\nimport { ByteStream, AsyncByteStream } from './stream';\nimport { toUint8Array } from '../util/buffer';\n/** @ignore */\nexport class RandomAccessFile extends ByteStream {\n constructor(buffer, byteLength) {\n super();\n this.position = 0;\n this.buffer = toUint8Array(buffer);\n this.size = typeof byteLength === 'undefined' ? this.buffer.byteLength : byteLength;\n }\n readInt32(position) {\n const { buffer, byteOffset } = this.readAt(position, 4);\n return new DataView(buffer, byteOffset).getInt32(0, true);\n }\n seek(position) {\n this.position = Math.min(position, this.size);\n return position < this.size;\n }\n read(nBytes) {\n const { buffer, size, position } = this;\n if (buffer && position < size) {\n if (typeof nBytes !== 'number') {\n nBytes = Infinity;\n }\n this.position = Math.min(size, position + Math.min(size - position, nBytes));\n return buffer.subarray(position, this.position);\n }\n return null;\n }\n readAt(position, nBytes) {\n const buf = this.buffer;\n const end = Math.min(this.size, position + nBytes);\n return buf ? buf.subarray(position, end) : new Uint8Array(nBytes);\n }\n close() { this.buffer && (this.buffer = null); }\n throw(value) { this.close(); return { done: true, value }; }\n return(value) { this.close(); return { done: true, value }; }\n}\n/** @ignore */\nexport class AsyncRandomAccessFile extends AsyncByteStream {\n constructor(file, byteLength) {\n super();\n this.position = 0;\n this._handle = file;\n if (typeof byteLength === 'number') {\n this.size = byteLength;\n }\n else {\n this._pending = (async () => {\n this.size = (await file.stat()).size;\n delete this._pending;\n })();\n }\n }\n async readInt32(position) {\n const { buffer, byteOffset } = await this.readAt(position, 4);\n return new DataView(buffer, byteOffset).getInt32(0, true);\n }\n async seek(position) {\n this._pending && await this._pending;\n this.position = Math.min(position, this.size);\n return position < this.size;\n }\n async read(nBytes) {\n this._pending && await this._pending;\n const { _handle: file, size, position } = this;\n if (file && position < size) {\n if (typeof nBytes !== 'number') {\n nBytes = Infinity;\n }\n let pos = position, offset = 0, bytesRead = 0;\n let end = Math.min(size, pos + Math.min(size - pos, nBytes));\n let buffer = new Uint8Array(Math.max(0, (this.position = end) - pos));\n while ((pos += bytesRead) < end && (offset += bytesRead) < buffer.byteLength) {\n ({ bytesRead } = await file.read(buffer, offset, buffer.byteLength - offset, pos));\n }\n return buffer;\n }\n return null;\n }\n async readAt(position, nBytes) {\n this._pending && await this._pending;\n const { _handle: file, size } = this;\n if (file && (position + nBytes) < size) {\n const end = Math.min(size, position + nBytes);\n const buffer = new Uint8Array(end - position);\n return (await file.read(buffer, 0, nBytes, position)).buffer;\n }\n return new Uint8Array(nBytes);\n }\n async close() { const f = this._handle; this._handle = null; f && await f.close(); }\n async throw(value) { await this.close(); return { done: true, value }; }\n async return(value) { await this.close(); return { done: true, value }; }\n}\n\n//# sourceMappingURL=file.mjs.map\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\n/** @ignore */\nconst carryBit16 = 1 << 16;\n/** @ignore */\nfunction intAsHex(value) {\n if (value < 0) {\n value = 0xFFFFFFFF + value + 1;\n }\n return `0x${value.toString(16)}`;\n}\n/** @ignore */\nconst kInt32DecimalDigits = 8;\n/** @ignore */\nconst kPowersOfTen = [1,\n 10,\n 100,\n 1000,\n 10000,\n 100000,\n 1000000,\n 10000000,\n 100000000];\n/** @ignore */\nexport class BaseInt64 {\n constructor(buffer) {\n this.buffer = buffer;\n }\n high() { return this.buffer[1]; }\n low() { return this.buffer[0]; }\n _times(other) {\n // Break the left and right numbers into 16 bit chunks\n // so that we can multiply them without overflow.\n const L = new Uint32Array([\n this.buffer[1] >>> 16,\n this.buffer[1] & 0xFFFF,\n this.buffer[0] >>> 16,\n this.buffer[0] & 0xFFFF\n ]);\n const R = new Uint32Array([\n other.buffer[1] >>> 16,\n other.buffer[1] & 0xFFFF,\n other.buffer[0] >>> 16,\n other.buffer[0] & 0xFFFF\n ]);\n let product = L[3] * R[3];\n this.buffer[0] = product & 0xFFFF;\n let sum = product >>> 16;\n product = L[2] * R[3];\n sum += product;\n product = (L[3] * R[2]) >>> 0;\n sum += product;\n this.buffer[0] += sum << 16;\n this.buffer[1] = (sum >>> 0 < product ? carryBit16 : 0);\n this.buffer[1] += sum >>> 16;\n this.buffer[1] += L[1] * R[3] + L[2] * R[2] + L[3] * R[1];\n this.buffer[1] += (L[0] * R[3] + L[1] * R[2] + L[2] * R[1] + L[3] * R[0]) << 16;\n return this;\n }\n _plus(other) {\n const sum = (this.buffer[0] + other.buffer[0]) >>> 0;\n this.buffer[1] += other.buffer[1];\n if (sum < (this.buffer[0] >>> 0)) {\n ++this.buffer[1];\n }\n this.buffer[0] = sum;\n }\n lessThan(other) {\n return this.buffer[1] < other.buffer[1] ||\n (this.buffer[1] === other.buffer[1] && this.buffer[0] < other.buffer[0]);\n }\n equals(other) {\n return this.buffer[1] === other.buffer[1] && this.buffer[0] == other.buffer[0];\n }\n greaterThan(other) {\n return other.lessThan(this);\n }\n hex() {\n return `${intAsHex(this.buffer[1])} ${intAsHex(this.buffer[0])}`;\n }\n}\n/** @ignore */\nexport class Uint64 extends BaseInt64 {\n times(other) {\n this._times(other);\n return this;\n }\n plus(other) {\n this._plus(other);\n return this;\n }\n /** @nocollapse */\n static from(val, out_buffer = new Uint32Array(2)) {\n return Uint64.fromString(typeof (val) === 'string' ? val : val.toString(), out_buffer);\n }\n /** @nocollapse */\n static fromNumber(num, out_buffer = new Uint32Array(2)) {\n // Always parse numbers as strings - pulling out high and low bits\n // directly seems to lose precision sometimes\n // For example:\n // > -4613034156400212000 >>> 0\n // 721782784\n // The correct lower 32-bits are 721782752\n return Uint64.fromString(num.toString(), out_buffer);\n }\n /** @nocollapse */\n static fromString(str, out_buffer = new Uint32Array(2)) {\n const length = str.length;\n let out = new Uint64(out_buffer);\n for (let posn = 0; posn < length;) {\n const group = kInt32DecimalDigits < length - posn ?\n kInt32DecimalDigits : length - posn;\n const chunk = new Uint64(new Uint32Array([parseInt(str.substr(posn, group), 10), 0]));\n const multiple = new Uint64(new Uint32Array([kPowersOfTen[group], 0]));\n out.times(multiple);\n out.plus(chunk);\n posn += group;\n }\n return out;\n }\n /** @nocollapse */\n static convertArray(values) {\n const data = new Uint32Array(values.length * 2);\n for (let i = -1, n = values.length; ++i < n;) {\n Uint64.from(values[i], new Uint32Array(data.buffer, data.byteOffset + 2 * i * 4, 2));\n }\n return data;\n }\n /** @nocollapse */\n static multiply(left, right) {\n let rtrn = new Uint64(new Uint32Array(left.buffer));\n return rtrn.times(right);\n }\n /** @nocollapse */\n static add(left, right) {\n let rtrn = new Uint64(new Uint32Array(left.buffer));\n return rtrn.plus(right);\n }\n}\n/** @ignore */\nexport class Int64 extends BaseInt64 {\n negate() {\n this.buffer[0] = ~this.buffer[0] + 1;\n this.buffer[1] = ~this.buffer[1];\n if (this.buffer[0] == 0) {\n ++this.buffer[1];\n }\n return this;\n }\n times(other) {\n this._times(other);\n return this;\n }\n plus(other) {\n this._plus(other);\n return this;\n }\n lessThan(other) {\n // force high bytes to be signed\n const this_high = this.buffer[1] << 0;\n const other_high = other.buffer[1] << 0;\n return this_high < other_high ||\n (this_high === other_high && this.buffer[0] < other.buffer[0]);\n }\n /** @nocollapse */\n static from(val, out_buffer = new Uint32Array(2)) {\n return Int64.fromString(typeof (val) === 'string' ? val : val.toString(), out_buffer);\n }\n /** @nocollapse */\n static fromNumber(num, out_buffer = new Uint32Array(2)) {\n // Always parse numbers as strings - pulling out high and low bits\n // directly seems to lose precision sometimes\n // For example:\n // > -4613034156400212000 >>> 0\n // 721782784\n // The correct lower 32-bits are 721782752\n return Int64.fromString(num.toString(), out_buffer);\n }\n /** @nocollapse */\n static fromString(str, out_buffer = new Uint32Array(2)) {\n // TODO: Assert that out_buffer is 0 and length = 2\n const negate = str.startsWith('-');\n const length = str.length;\n let out = new Int64(out_buffer);\n for (let posn = negate ? 1 : 0; posn < length;) {\n const group = kInt32DecimalDigits < length - posn ?\n kInt32DecimalDigits : length - posn;\n const chunk = new Int64(new Uint32Array([parseInt(str.substr(posn, group), 10), 0]));\n const multiple = new Int64(new Uint32Array([kPowersOfTen[group], 0]));\n out.times(multiple);\n out.plus(chunk);\n posn += group;\n }\n return negate ? out.negate() : out;\n }\n /** @nocollapse */\n static convertArray(values) {\n const data = new Uint32Array(values.length * 2);\n for (let i = -1, n = values.length; ++i < n;) {\n Int64.from(values[i], new Uint32Array(data.buffer, data.byteOffset + 2 * i * 4, 2));\n }\n return data;\n }\n /** @nocollapse */\n static multiply(left, right) {\n let rtrn = new Int64(new Uint32Array(left.buffer));\n return rtrn.times(right);\n }\n /** @nocollapse */\n static add(left, right) {\n let rtrn = new Int64(new Uint32Array(left.buffer));\n return rtrn.plus(right);\n }\n}\n/** @ignore */\nexport class Int128 {\n constructor(buffer) {\n this.buffer = buffer;\n // buffer[3] MSB (high)\n // buffer[2]\n // buffer[1]\n // buffer[0] LSB (low)\n }\n high() {\n return new Int64(new Uint32Array(this.buffer.buffer, this.buffer.byteOffset + 8, 2));\n }\n low() {\n return new Int64(new Uint32Array(this.buffer.buffer, this.buffer.byteOffset, 2));\n }\n negate() {\n this.buffer[0] = ~this.buffer[0] + 1;\n this.buffer[1] = ~this.buffer[1];\n this.buffer[2] = ~this.buffer[2];\n this.buffer[3] = ~this.buffer[3];\n if (this.buffer[0] == 0) {\n ++this.buffer[1];\n }\n if (this.buffer[1] == 0) {\n ++this.buffer[2];\n }\n if (this.buffer[2] == 0) {\n ++this.buffer[3];\n }\n return this;\n }\n times(other) {\n // Break the left and right numbers into 32 bit chunks\n // so that we can multiply them without overflow.\n const L0 = new Uint64(new Uint32Array([this.buffer[3], 0]));\n const L1 = new Uint64(new Uint32Array([this.buffer[2], 0]));\n const L2 = new Uint64(new Uint32Array([this.buffer[1], 0]));\n const L3 = new Uint64(new Uint32Array([this.buffer[0], 0]));\n const R0 = new Uint64(new Uint32Array([other.buffer[3], 0]));\n const R1 = new Uint64(new Uint32Array([other.buffer[2], 0]));\n const R2 = new Uint64(new Uint32Array([other.buffer[1], 0]));\n const R3 = new Uint64(new Uint32Array([other.buffer[0], 0]));\n let product = Uint64.multiply(L3, R3);\n this.buffer[0] = product.low();\n let sum = new Uint64(new Uint32Array([product.high(), 0]));\n product = Uint64.multiply(L2, R3);\n sum.plus(product);\n product = Uint64.multiply(L3, R2);\n sum.plus(product);\n this.buffer[1] = sum.low();\n this.buffer[3] = (sum.lessThan(product) ? 1 : 0);\n this.buffer[2] = sum.high();\n let high = new Uint64(new Uint32Array(this.buffer.buffer, this.buffer.byteOffset + 8, 2));\n high.plus(Uint64.multiply(L1, R3))\n .plus(Uint64.multiply(L2, R2))\n .plus(Uint64.multiply(L3, R1));\n this.buffer[3] += Uint64.multiply(L0, R3)\n .plus(Uint64.multiply(L1, R2))\n .plus(Uint64.multiply(L2, R1))\n .plus(Uint64.multiply(L3, R0)).low();\n return this;\n }\n plus(other) {\n let sums = new Uint32Array(4);\n sums[3] = (this.buffer[3] + other.buffer[3]) >>> 0;\n sums[2] = (this.buffer[2] + other.buffer[2]) >>> 0;\n sums[1] = (this.buffer[1] + other.buffer[1]) >>> 0;\n sums[0] = (this.buffer[0] + other.buffer[0]) >>> 0;\n if (sums[0] < (this.buffer[0] >>> 0)) {\n ++sums[1];\n }\n if (sums[1] < (this.buffer[1] >>> 0)) {\n ++sums[2];\n }\n if (sums[2] < (this.buffer[2] >>> 0)) {\n ++sums[3];\n }\n this.buffer[3] = sums[3];\n this.buffer[2] = sums[2];\n this.buffer[1] = sums[1];\n this.buffer[0] = sums[0];\n return this;\n }\n hex() {\n return `${intAsHex(this.buffer[3])} ${intAsHex(this.buffer[2])} ${intAsHex(this.buffer[1])} ${intAsHex(this.buffer[0])}`;\n }\n /** @nocollapse */\n static multiply(left, right) {\n let rtrn = new Int128(new Uint32Array(left.buffer));\n return rtrn.times(right);\n }\n /** @nocollapse */\n static add(left, right) {\n let rtrn = new Int128(new Uint32Array(left.buffer));\n return rtrn.plus(right);\n }\n /** @nocollapse */\n static from(val, out_buffer = new Uint32Array(4)) {\n return Int128.fromString(typeof (val) === 'string' ? val : val.toString(), out_buffer);\n }\n /** @nocollapse */\n static fromNumber(num, out_buffer = new Uint32Array(4)) {\n // Always parse numbers as strings - pulling out high and low bits\n // directly seems to lose precision sometimes\n // For example:\n // > -4613034156400212000 >>> 0\n // 721782784\n // The correct lower 32-bits are 721782752\n return Int128.fromString(num.toString(), out_buffer);\n }\n /** @nocollapse */\n static fromString(str, out_buffer = new Uint32Array(4)) {\n // TODO: Assert that out_buffer is 0 and length = 4\n const negate = str.startsWith('-');\n const length = str.length;\n let out = new Int128(out_buffer);\n for (let posn = negate ? 1 : 0; posn < length;) {\n const group = kInt32DecimalDigits < length - posn ?\n kInt32DecimalDigits : length - posn;\n const chunk = new Int128(new Uint32Array([parseInt(str.substr(posn, group), 10), 0, 0, 0]));\n const multiple = new Int128(new Uint32Array([kPowersOfTen[group], 0, 0, 0]));\n out.times(multiple);\n out.plus(chunk);\n posn += group;\n }\n return negate ? out.negate() : out;\n }\n /** @nocollapse */\n static convertArray(values) {\n // TODO: Distinguish between string and number at compile-time\n const data = new Uint32Array(values.length * 4);\n for (let i = -1, n = values.length; ++i < n;) {\n Int128.from(values[i], new Uint32Array(data.buffer, data.byteOffset + 4 * 4 * i, 4));\n }\n return data;\n }\n}\n\n//# sourceMappingURL=int.mjs.map\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\nimport { Data } from '../data';\nimport { Field } from '../schema';\nimport { DataType } from '../type';\nimport { Visitor } from '../visitor';\nimport { packBools } from '../util/bit';\nimport { encodeUtf8 } from '../util/utf8';\nimport { Int64, Int128 } from '../util/int';\nimport { UnionMode, DateUnit } from '../enum';\nimport { toArrayBufferView } from '../util/buffer';\n/** @ignore */\nexport class VectorLoader extends Visitor {\n constructor(bytes, nodes, buffers, dictionaries) {\n super();\n this.nodesIndex = -1;\n this.buffersIndex = -1;\n this.bytes = bytes;\n this.nodes = nodes;\n this.buffers = buffers;\n this.dictionaries = dictionaries;\n }\n visit(node) {\n return super.visit(node instanceof Field ? node.type : node);\n }\n visitNull(type, { length, } = this.nextFieldNode()) { return Data.Null(type, 0, length); }\n visitBool(type, { length, nullCount } = this.nextFieldNode()) { return Data.Bool(type, 0, length, nullCount, this.readNullBitmap(type, nullCount), this.readData(type)); }\n visitInt(type, { length, nullCount } = this.nextFieldNode()) { return Data.Int(type, 0, length, nullCount, this.readNullBitmap(type, nullCount), this.readData(type)); }\n visitFloat(type, { length, nullCount } = this.nextFieldNode()) { return Data.Float(type, 0, length, nullCount, this.readNullBitmap(type, nullCount), this.readData(type)); }\n visitUtf8(type, { length, nullCount } = this.nextFieldNode()) { return Data.Utf8(type, 0, length, nullCount, this.readNullBitmap(type, nullCount), this.readOffsets(type), this.readData(type)); }\n visitBinary(type, { length, nullCount } = this.nextFieldNode()) { return Data.Binary(type, 0, length, nullCount, this.readNullBitmap(type, nullCount), this.readOffsets(type), this.readData(type)); }\n visitFixedSizeBinary(type, { length, nullCount } = this.nextFieldNode()) { return Data.FixedSizeBinary(type, 0, length, nullCount, this.readNullBitmap(type, nullCount), this.readData(type)); }\n visitDate(type, { length, nullCount } = this.nextFieldNode()) { return Data.Date(type, 0, length, nullCount, this.readNullBitmap(type, nullCount), this.readData(type)); }\n visitTimestamp(type, { length, nullCount } = this.nextFieldNode()) { return Data.Timestamp(type, 0, length, nullCount, this.readNullBitmap(type, nullCount), this.readData(type)); }\n visitTime(type, { length, nullCount } = this.nextFieldNode()) { return Data.Time(type, 0, length, nullCount, this.readNullBitmap(type, nullCount), this.readData(type)); }\n visitDecimal(type, { length, nullCount } = this.nextFieldNode()) { return Data.Decimal(type, 0, length, nullCount, this.readNullBitmap(type, nullCount), this.readData(type)); }\n visitList(type, { length, nullCount } = this.nextFieldNode()) { return Data.List(type, 0, length, nullCount, this.readNullBitmap(type, nullCount), this.readOffsets(type), this.visit(type.children[0])); }\n visitStruct(type, { length, nullCount } = this.nextFieldNode()) { return Data.Struct(type, 0, length, nullCount, this.readNullBitmap(type, nullCount), this.visitMany(type.children)); }\n visitUnion(type) { return type.mode === UnionMode.Sparse ? this.visitSparseUnion(type) : this.visitDenseUnion(type); }\n visitDenseUnion(type, { length, nullCount } = this.nextFieldNode()) { return Data.Union(type, 0, length, nullCount, this.readNullBitmap(type, nullCount), this.readTypeIds(type), this.readOffsets(type), this.visitMany(type.children)); }\n visitSparseUnion(type, { length, nullCount } = this.nextFieldNode()) { return Data.Union(type, 0, length, nullCount, this.readNullBitmap(type, nullCount), this.readTypeIds(type), this.visitMany(type.children)); }\n visitDictionary(type, { length, nullCount } = this.nextFieldNode()) { return Data.Dictionary(type, 0, length, nullCount, this.readNullBitmap(type, nullCount), this.readData(type.indices), this.readDictionary(type)); }\n visitInterval(type, { length, nullCount } = this.nextFieldNode()) { return Data.Interval(type, 0, length, nullCount, this.readNullBitmap(type, nullCount), this.readData(type)); }\n visitFixedSizeList(type, { length, nullCount } = this.nextFieldNode()) { return Data.FixedSizeList(type, 0, length, nullCount, this.readNullBitmap(type, nullCount), this.visit(type.children[0])); }\n visitMap(type, { length, nullCount } = this.nextFieldNode()) { return Data.Map(type, 0, length, nullCount, this.readNullBitmap(type, nullCount), this.readOffsets(type), this.visit(type.children[0])); }\n nextFieldNode() { return this.nodes[++this.nodesIndex]; }\n nextBufferRange() { return this.buffers[++this.buffersIndex]; }\n readNullBitmap(type, nullCount, buffer = this.nextBufferRange()) {\n return nullCount > 0 && this.readData(type, buffer) || new Uint8Array(0);\n }\n readOffsets(type, buffer) { return this.readData(type, buffer); }\n readTypeIds(type, buffer) { return this.readData(type, buffer); }\n readData(_type, { length, offset } = this.nextBufferRange()) {\n return this.bytes.subarray(offset, offset + length);\n }\n readDictionary(type) {\n return this.dictionaries.get(type.id);\n }\n}\n/** @ignore */\nexport class JSONVectorLoader extends VectorLoader {\n constructor(sources, nodes, buffers, dictionaries) {\n super(new Uint8Array(0), nodes, buffers, dictionaries);\n this.sources = sources;\n }\n readNullBitmap(_type, nullCount, { offset } = this.nextBufferRange()) {\n return nullCount <= 0 ? new Uint8Array(0) : packBools(this.sources[offset]);\n }\n readOffsets(_type, { offset } = this.nextBufferRange()) {\n return toArrayBufferView(Uint8Array, toArrayBufferView(Int32Array, this.sources[offset]));\n }\n readTypeIds(type, { offset } = this.nextBufferRange()) {\n return toArrayBufferView(Uint8Array, toArrayBufferView(type.ArrayType, this.sources[offset]));\n }\n readData(type, { offset } = this.nextBufferRange()) {\n const { sources } = this;\n if (DataType.isTimestamp(type)) {\n return toArrayBufferView(Uint8Array, Int64.convertArray(sources[offset]));\n }\n else if ((DataType.isInt(type) || DataType.isTime(type)) && type.bitWidth === 64) {\n return toArrayBufferView(Uint8Array, Int64.convertArray(sources[offset]));\n }\n else if (DataType.isDate(type) && type.unit === DateUnit.MILLISECOND) {\n return toArrayBufferView(Uint8Array, Int64.convertArray(sources[offset]));\n }\n else if (DataType.isDecimal(type)) {\n return toArrayBufferView(Uint8Array, Int128.convertArray(sources[offset]));\n }\n else if (DataType.isBinary(type) || DataType.isFixedSizeBinary(type)) {\n return binaryDataFromJSON(sources[offset]);\n }\n else if (DataType.isBool(type)) {\n return packBools(sources[offset]);\n }\n else if (DataType.isUtf8(type)) {\n return encodeUtf8(sources[offset].join(''));\n }\n return toArrayBufferView(Uint8Array, toArrayBufferView(type.ArrayType, sources[offset].map((x) => +x)));\n }\n}\n/** @ignore */\nfunction binaryDataFromJSON(values) {\n // \"DATA\": [\"49BC7D5B6C47D2\",\"3F5FB6D9322026\"]\n // There are definitely more efficient ways to do this... but it gets the\n // job done.\n const joined = values.join('');\n const data = new Uint8Array(joined.length / 2);\n for (let i = 0; i < joined.length; i += 2) {\n data[i >> 1] = parseInt(joined.substr(i, 2), 16);\n }\n return data;\n}\n\n//# sourceMappingURL=vectorloader.mjs.map\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\nimport { flatbuffers } from 'flatbuffers';\nvar Long = flatbuffers.Long;\nimport * as Schema_ from '../fb/Schema';\nimport { Visitor } from '../visitor';\nvar Null = Schema_.org.apache.arrow.flatbuf.Null;\nvar Int = Schema_.org.apache.arrow.flatbuf.Int;\nvar FloatingPoint = Schema_.org.apache.arrow.flatbuf.FloatingPoint;\nvar Binary = Schema_.org.apache.arrow.flatbuf.Binary;\nvar Bool = Schema_.org.apache.arrow.flatbuf.Bool;\nvar Utf8 = Schema_.org.apache.arrow.flatbuf.Utf8;\nvar Decimal = Schema_.org.apache.arrow.flatbuf.Decimal;\nvar Date = Schema_.org.apache.arrow.flatbuf.Date;\nvar Time = Schema_.org.apache.arrow.flatbuf.Time;\nvar Timestamp = Schema_.org.apache.arrow.flatbuf.Timestamp;\nvar Interval = Schema_.org.apache.arrow.flatbuf.Interval;\nvar List = Schema_.org.apache.arrow.flatbuf.List;\nvar Struct = Schema_.org.apache.arrow.flatbuf.Struct_;\nvar Union = Schema_.org.apache.arrow.flatbuf.Union;\nvar DictionaryEncoding = Schema_.org.apache.arrow.flatbuf.DictionaryEncoding;\nvar FixedSizeBinary = Schema_.org.apache.arrow.flatbuf.FixedSizeBinary;\nvar FixedSizeList = Schema_.org.apache.arrow.flatbuf.FixedSizeList;\nvar Map_ = Schema_.org.apache.arrow.flatbuf.Map;\n/** @ignore */\nexport class TypeAssembler extends Visitor {\n visit(node, builder) {\n return (node == null || builder == null) ? undefined : super.visit(node, builder);\n }\n visitNull(_node, b) {\n Null.startNull(b);\n return Null.endNull(b);\n }\n visitInt(node, b) {\n Int.startInt(b);\n Int.addBitWidth(b, node.bitWidth);\n Int.addIsSigned(b, node.isSigned);\n return Int.endInt(b);\n }\n visitFloat(node, b) {\n FloatingPoint.startFloatingPoint(b);\n FloatingPoint.addPrecision(b, node.precision);\n return FloatingPoint.endFloatingPoint(b);\n }\n visitBinary(_node, b) {\n Binary.startBinary(b);\n return Binary.endBinary(b);\n }\n visitBool(_node, b) {\n Bool.startBool(b);\n return Bool.endBool(b);\n }\n visitUtf8(_node, b) {\n Utf8.startUtf8(b);\n return Utf8.endUtf8(b);\n }\n visitDecimal(node, b) {\n Decimal.startDecimal(b);\n Decimal.addScale(b, node.scale);\n Decimal.addPrecision(b, node.precision);\n return Decimal.endDecimal(b);\n }\n visitDate(node, b) {\n Date.startDate(b);\n Date.addUnit(b, node.unit);\n return Date.endDate(b);\n }\n visitTime(node, b) {\n Time.startTime(b);\n Time.addUnit(b, node.unit);\n Time.addBitWidth(b, node.bitWidth);\n return Time.endTime(b);\n }\n visitTimestamp(node, b) {\n const timezone = (node.timezone && b.createString(node.timezone)) || undefined;\n Timestamp.startTimestamp(b);\n Timestamp.addUnit(b, node.unit);\n if (timezone !== undefined) {\n Timestamp.addTimezone(b, timezone);\n }\n return Timestamp.endTimestamp(b);\n }\n visitInterval(node, b) {\n Interval.startInterval(b);\n Interval.addUnit(b, node.unit);\n return Interval.endInterval(b);\n }\n visitList(_node, b) {\n List.startList(b);\n return List.endList(b);\n }\n visitStruct(_node, b) {\n Struct.startStruct_(b);\n return Struct.endStruct_(b);\n }\n visitUnion(node, b) {\n Union.startTypeIdsVector(b, node.typeIds.length);\n const typeIds = Union.createTypeIdsVector(b, node.typeIds);\n Union.startUnion(b);\n Union.addMode(b, node.mode);\n Union.addTypeIds(b, typeIds);\n return Union.endUnion(b);\n }\n visitDictionary(node, b) {\n const indexType = this.visit(node.indices, b);\n DictionaryEncoding.startDictionaryEncoding(b);\n DictionaryEncoding.addId(b, new Long(node.id, 0));\n DictionaryEncoding.addIsOrdered(b, node.isOrdered);\n if (indexType !== undefined) {\n DictionaryEncoding.addIndexType(b, indexType);\n }\n return DictionaryEncoding.endDictionaryEncoding(b);\n }\n visitFixedSizeBinary(node, b) {\n FixedSizeBinary.startFixedSizeBinary(b);\n FixedSizeBinary.addByteWidth(b, node.byteWidth);\n return FixedSizeBinary.endFixedSizeBinary(b);\n }\n visitFixedSizeList(node, b) {\n FixedSizeList.startFixedSizeList(b);\n FixedSizeList.addListSize(b, node.listSize);\n return FixedSizeList.endFixedSizeList(b);\n }\n visitMap(node, b) {\n Map_.startMap(b);\n Map_.addKeysSorted(b, node.keysSorted);\n return Map_.endMap(b);\n }\n}\n/** @ignore */\nexport const instance = new TypeAssembler();\n\n//# sourceMappingURL=typeassembler.mjs.map\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\nimport { Schema, Field } from '../../schema';\nimport { Dictionary, Utf8, Binary, Decimal, FixedSizeBinary, List, FixedSizeList, Map_, Struct, Union, Bool, Null, Int, Float, Date_, Time, Interval, Timestamp, Int32, } from '../../type';\nimport { DictionaryBatch, RecordBatch, FieldNode, BufferRegion } from './message';\nimport { TimeUnit, Precision, IntervalUnit, UnionMode, DateUnit } from '../../enum';\n/** @ignore */\nexport function schemaFromJSON(_schema, dictionaries = new Map()) {\n return new Schema(schemaFieldsFromJSON(_schema, dictionaries), customMetadataFromJSON(_schema['customMetadata']), dictionaries);\n}\n/** @ignore */\nexport function recordBatchFromJSON(b) {\n return new RecordBatch(b['count'], fieldNodesFromJSON(b['columns']), buffersFromJSON(b['columns']));\n}\n/** @ignore */\nexport function dictionaryBatchFromJSON(b) {\n return new DictionaryBatch(recordBatchFromJSON(b['data']), b['id'], b['isDelta']);\n}\n/** @ignore */\nfunction schemaFieldsFromJSON(_schema, dictionaries) {\n return (_schema['fields'] || []).filter(Boolean).map((f) => Field.fromJSON(f, dictionaries));\n}\n/** @ignore */\nfunction fieldChildrenFromJSON(_field, dictionaries) {\n return (_field['children'] || []).filter(Boolean).map((f) => Field.fromJSON(f, dictionaries));\n}\n/** @ignore */\nfunction fieldNodesFromJSON(xs) {\n return (xs || []).reduce((fieldNodes, column) => [\n ...fieldNodes,\n new FieldNode(column['count'], nullCountFromJSON(column['VALIDITY'])),\n ...fieldNodesFromJSON(column['children'])\n ], []);\n}\n/** @ignore */\nfunction buffersFromJSON(xs, buffers = []) {\n for (let i = -1, n = (xs || []).length; ++i < n;) {\n const column = xs[i];\n column['VALIDITY'] && buffers.push(new BufferRegion(buffers.length, column['VALIDITY'].length));\n column['TYPE'] && buffers.push(new BufferRegion(buffers.length, column['TYPE'].length));\n column['OFFSET'] && buffers.push(new BufferRegion(buffers.length, column['OFFSET'].length));\n column['DATA'] && buffers.push(new BufferRegion(buffers.length, column['DATA'].length));\n buffers = buffersFromJSON(column['children'], buffers);\n }\n return buffers;\n}\n/** @ignore */\nfunction nullCountFromJSON(validity) {\n return (validity || []).reduce((sum, val) => sum + +(val === 0), 0);\n}\n/** @ignore */\nexport function fieldFromJSON(_field, dictionaries) {\n let id;\n let keys;\n let field;\n let dictMeta;\n let type;\n let dictType;\n // If no dictionary encoding\n if (!dictionaries || !(dictMeta = _field['dictionary'])) {\n type = typeFromJSON(_field, fieldChildrenFromJSON(_field, dictionaries));\n field = new Field(_field['name'], type, _field['nullable'], customMetadataFromJSON(_field['customMetadata']));\n }\n // tslint:disable\n // If dictionary encoded and the first time we've seen this dictionary id, decode\n // the data type and child fields, then wrap in a Dictionary type and insert the\n // data type into the dictionary types map.\n else if (!dictionaries.has(id = dictMeta['id'])) {\n // a dictionary index defaults to signed 32 bit int if unspecified\n keys = (keys = dictMeta['indexType']) ? indexTypeFromJSON(keys) : new Int32();\n dictionaries.set(id, type = typeFromJSON(_field, fieldChildrenFromJSON(_field, dictionaries)));\n dictType = new Dictionary(type, keys, id, dictMeta['isOrdered']);\n field = new Field(_field['name'], dictType, _field['nullable'], customMetadataFromJSON(_field['customMetadata']));\n }\n // If dictionary encoded, and have already seen this dictionary Id in the schema, then reuse the\n // data type and wrap in a new Dictionary type and field.\n else {\n // a dictionary index defaults to signed 32 bit int if unspecified\n keys = (keys = dictMeta['indexType']) ? indexTypeFromJSON(keys) : new Int32();\n dictType = new Dictionary(dictionaries.get(id), keys, id, dictMeta['isOrdered']);\n field = new Field(_field['name'], dictType, _field['nullable'], customMetadataFromJSON(_field['customMetadata']));\n }\n return field || null;\n}\n/** @ignore */\nfunction customMetadataFromJSON(_metadata) {\n return new Map(Object.entries(_metadata || {}));\n}\n/** @ignore */\nfunction indexTypeFromJSON(_type) {\n return new Int(_type['isSigned'], _type['bitWidth']);\n}\n/** @ignore */\nfunction typeFromJSON(f, children) {\n const typeId = f['type']['name'];\n switch (typeId) {\n case 'NONE': return new Null();\n case 'null': return new Null();\n case 'binary': return new Binary();\n case 'utf8': return new Utf8();\n case 'bool': return new Bool();\n case 'list': return new List((children || [])[0]);\n case 'struct': return new Struct(children || []);\n case 'struct_': return new Struct(children || []);\n }\n switch (typeId) {\n case 'int': {\n const t = f['type'];\n return new Int(t['isSigned'], t['bitWidth']);\n }\n case 'floatingpoint': {\n const t = f['type'];\n return new Float(Precision[t['precision']]);\n }\n case 'decimal': {\n const t = f['type'];\n return new Decimal(t['scale'], t['precision']);\n }\n case 'date': {\n const t = f['type'];\n return new Date_(DateUnit[t['unit']]);\n }\n case 'time': {\n const t = f['type'];\n return new Time(TimeUnit[t['unit']], t['bitWidth']);\n }\n case 'timestamp': {\n const t = f['type'];\n return new Timestamp(TimeUnit[t['unit']], t['timezone']);\n }\n case 'interval': {\n const t = f['type'];\n return new Interval(IntervalUnit[t['unit']]);\n }\n case 'union': {\n const t = f['type'];\n return new Union(UnionMode[t['mode']], (t['typeIds'] || []), children || []);\n }\n case 'fixedsizebinary': {\n const t = f['type'];\n return new FixedSizeBinary(t['byteWidth']);\n }\n case 'fixedsizelist': {\n const t = f['type'];\n return new FixedSizeList(t['listSize'], (children || [])[0]);\n }\n case 'map': {\n const t = f['type'];\n return new Map_((children || [])[0], t['keysSorted']);\n }\n }\n throw new Error(`Unrecognized type: \"${typeId}\"`);\n}\n\n//# sourceMappingURL=json.mjs.map\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\nimport { flatbuffers } from 'flatbuffers';\nimport * as Schema_ from '../../fb/Schema';\nimport * as Message_ from '../../fb/Message';\nimport { Schema, Field } from '../../schema';\nimport { toUint8Array } from '../../util/buffer';\nimport { MessageHeader, MetadataVersion } from '../../enum';\nimport { instance as typeAssembler } from '../../visitor/typeassembler';\nimport { fieldFromJSON, schemaFromJSON, recordBatchFromJSON, dictionaryBatchFromJSON } from './json';\nvar Long = flatbuffers.Long;\nvar Builder = flatbuffers.Builder;\nvar ByteBuffer = flatbuffers.ByteBuffer;\nvar Type = Schema_.org.apache.arrow.flatbuf.Type;\nvar _Field = Schema_.org.apache.arrow.flatbuf.Field;\nvar _Schema = Schema_.org.apache.arrow.flatbuf.Schema;\nvar _Buffer = Schema_.org.apache.arrow.flatbuf.Buffer;\nvar _Message = Message_.org.apache.arrow.flatbuf.Message;\nvar _KeyValue = Schema_.org.apache.arrow.flatbuf.KeyValue;\nvar _FieldNode = Message_.org.apache.arrow.flatbuf.FieldNode;\nvar _Endianness = Schema_.org.apache.arrow.flatbuf.Endianness;\nvar _RecordBatch = Message_.org.apache.arrow.flatbuf.RecordBatch;\nvar _DictionaryBatch = Message_.org.apache.arrow.flatbuf.DictionaryBatch;\nimport { DataType, Dictionary, Utf8, Binary, Decimal, FixedSizeBinary, List, FixedSizeList, Map_, Struct, Union, Bool, Null, Int, Float, Date_, Time, Interval, Timestamp, Int32, } from '../../type';\n/**\n * @ignore\n * @private\n **/\nexport class Message {\n constructor(bodyLength, version, headerType, header) {\n this._version = version;\n this._headerType = headerType;\n this.body = new Uint8Array(0);\n header && (this._createHeader = () => header);\n this._bodyLength = typeof bodyLength === 'number' ? bodyLength : bodyLength.low;\n }\n /** @nocollapse */\n static fromJSON(msg, headerType) {\n const message = new Message(0, MetadataVersion.V4, headerType);\n message._createHeader = messageHeaderFromJSON(msg, headerType);\n return message;\n }\n /** @nocollapse */\n static decode(buf) {\n buf = new ByteBuffer(toUint8Array(buf));\n const _message = _Message.getRootAsMessage(buf);\n const bodyLength = _message.bodyLength();\n const version = _message.version();\n const headerType = _message.headerType();\n const message = new Message(bodyLength, version, headerType);\n message._createHeader = decodeMessageHeader(_message, headerType);\n return message;\n }\n /** @nocollapse */\n static encode(message) {\n let b = new Builder(), headerOffset = -1;\n if (message.isSchema()) {\n headerOffset = Schema.encode(b, message.header());\n }\n else if (message.isRecordBatch()) {\n headerOffset = RecordBatch.encode(b, message.header());\n }\n else if (message.isDictionaryBatch()) {\n headerOffset = DictionaryBatch.encode(b, message.header());\n }\n _Message.startMessage(b);\n _Message.addVersion(b, MetadataVersion.V4);\n _Message.addHeader(b, headerOffset);\n _Message.addHeaderType(b, message.headerType);\n _Message.addBodyLength(b, new Long(message.bodyLength, 0));\n _Message.finishMessageBuffer(b, _Message.endMessage(b));\n return b.asUint8Array();\n }\n /** @nocollapse */\n static from(header, bodyLength = 0) {\n if (header instanceof Schema) {\n return new Message(0, MetadataVersion.V4, MessageHeader.Schema, header);\n }\n if (header instanceof RecordBatch) {\n return new Message(bodyLength, MetadataVersion.V4, MessageHeader.RecordBatch, header);\n }\n if (header instanceof DictionaryBatch) {\n return new Message(bodyLength, MetadataVersion.V4, MessageHeader.DictionaryBatch, header);\n }\n throw new Error(`Unrecognized Message header: ${header}`);\n }\n get type() { return this.headerType; }\n get version() { return this._version; }\n get headerType() { return this._headerType; }\n get bodyLength() { return this._bodyLength; }\n header() { return this._createHeader(); }\n isSchema() { return this.headerType === MessageHeader.Schema; }\n isRecordBatch() { return this.headerType === MessageHeader.RecordBatch; }\n isDictionaryBatch() { return this.headerType === MessageHeader.DictionaryBatch; }\n}\n/**\n * @ignore\n * @private\n **/\nexport class RecordBatch {\n get nodes() { return this._nodes; }\n get length() { return this._length; }\n get buffers() { return this._buffers; }\n constructor(length, nodes, buffers) {\n this._nodes = nodes;\n this._buffers = buffers;\n this._length = typeof length === 'number' ? length : length.low;\n }\n}\n/**\n * @ignore\n * @private\n **/\nexport class DictionaryBatch {\n get id() { return this._id; }\n get data() { return this._data; }\n get isDelta() { return this._isDelta; }\n get length() { return this.data.length; }\n get nodes() { return this.data.nodes; }\n get buffers() { return this.data.buffers; }\n constructor(data, id, isDelta = false) {\n this._data = data;\n this._isDelta = isDelta;\n this._id = typeof id === 'number' ? id : id.low;\n }\n}\n/**\n * @ignore\n * @private\n **/\nexport class BufferRegion {\n constructor(offset, length) {\n this.offset = typeof offset === 'number' ? offset : offset.low;\n this.length = typeof length === 'number' ? length : length.low;\n }\n}\n/**\n * @ignore\n * @private\n **/\nexport class FieldNode {\n constructor(length, nullCount) {\n this.length = typeof length === 'number' ? length : length.low;\n this.nullCount = typeof nullCount === 'number' ? nullCount : nullCount.low;\n }\n}\n/** @ignore */\nfunction messageHeaderFromJSON(message, type) {\n return (() => {\n switch (type) {\n case MessageHeader.Schema: return Schema.fromJSON(message);\n case MessageHeader.RecordBatch: return RecordBatch.fromJSON(message);\n case MessageHeader.DictionaryBatch: return DictionaryBatch.fromJSON(message);\n }\n throw new Error(`Unrecognized Message type: { name: ${MessageHeader[type]}, type: ${type} }`);\n });\n}\n/** @ignore */\nfunction decodeMessageHeader(message, type) {\n return (() => {\n switch (type) {\n case MessageHeader.Schema: return Schema.decode(message.header(new _Schema()));\n case MessageHeader.RecordBatch: return RecordBatch.decode(message.header(new _RecordBatch()), message.version());\n case MessageHeader.DictionaryBatch: return DictionaryBatch.decode(message.header(new _DictionaryBatch()), message.version());\n }\n throw new Error(`Unrecognized Message type: { name: ${MessageHeader[type]}, type: ${type} }`);\n });\n}\nField['encode'] = encodeField;\nField['decode'] = decodeField;\nField['fromJSON'] = fieldFromJSON;\nSchema['encode'] = encodeSchema;\nSchema['decode'] = decodeSchema;\nSchema['fromJSON'] = schemaFromJSON;\nRecordBatch['encode'] = encodeRecordBatch;\nRecordBatch['decode'] = decodeRecordBatch;\nRecordBatch['fromJSON'] = recordBatchFromJSON;\nDictionaryBatch['encode'] = encodeDictionaryBatch;\nDictionaryBatch['decode'] = decodeDictionaryBatch;\nDictionaryBatch['fromJSON'] = dictionaryBatchFromJSON;\nFieldNode['encode'] = encodeFieldNode;\nFieldNode['decode'] = decodeFieldNode;\nBufferRegion['encode'] = encodeBufferRegion;\nBufferRegion['decode'] = decodeBufferRegion;\n/** @ignore */\nfunction decodeSchema(_schema, dictionaries = new Map()) {\n const fields = decodeSchemaFields(_schema, dictionaries);\n return new Schema(fields, decodeCustomMetadata(_schema), dictionaries);\n}\n/** @ignore */\nfunction decodeRecordBatch(batch, version = MetadataVersion.V4) {\n return new RecordBatch(batch.length(), decodeFieldNodes(batch), decodeBuffers(batch, version));\n}\n/** @ignore */\nfunction decodeDictionaryBatch(batch, version = MetadataVersion.V4) {\n return new DictionaryBatch(RecordBatch.decode(batch.data(), version), batch.id(), batch.isDelta());\n}\n/** @ignore */\nfunction decodeBufferRegion(b) {\n return new BufferRegion(b.offset(), b.length());\n}\n/** @ignore */\nfunction decodeFieldNode(f) {\n return new FieldNode(f.length(), f.nullCount());\n}\n/** @ignore */\nfunction decodeFieldNodes(batch) {\n const nodes = [];\n for (let f, i = -1, j = -1, n = batch.nodesLength(); ++i < n;) {\n if (f = batch.nodes(i)) {\n nodes[++j] = FieldNode.decode(f);\n }\n }\n return nodes;\n}\n/** @ignore */\nfunction decodeBuffers(batch, version) {\n const bufferRegions = [];\n for (let b, i = -1, j = -1, n = batch.buffersLength(); ++i < n;) {\n if (b = batch.buffers(i)) {\n // If this Arrow buffer was written before version 4,\n // advance the buffer's bb_pos 8 bytes to skip past\n // the now-removed page_id field\n if (version < MetadataVersion.V4) {\n b.bb_pos += (8 * (i + 1));\n }\n bufferRegions[++j] = BufferRegion.decode(b);\n }\n }\n return bufferRegions;\n}\n/** @ignore */\nfunction decodeSchemaFields(schema, dictionaries) {\n const fields = [];\n for (let f, i = -1, j = -1, n = schema.fieldsLength(); ++i < n;) {\n if (f = schema.fields(i)) {\n fields[++j] = Field.decode(f, dictionaries);\n }\n }\n return fields;\n}\n/** @ignore */\nfunction decodeFieldChildren(field, dictionaries) {\n const children = [];\n for (let f, i = -1, j = -1, n = field.childrenLength(); ++i < n;) {\n if (f = field.children(i)) {\n children[++j] = Field.decode(f, dictionaries);\n }\n }\n return children;\n}\n/** @ignore */\nfunction decodeField(f, dictionaries) {\n let id;\n let field;\n let type;\n let keys;\n let dictType;\n let dictMeta;\n // If no dictionary encoding\n if (!dictionaries || !(dictMeta = f.dictionary())) {\n type = decodeFieldType(f, decodeFieldChildren(f, dictionaries));\n field = new Field(f.name(), type, f.nullable(), decodeCustomMetadata(f));\n }\n // tslint:disable\n // If dictionary encoded and the first time we've seen this dictionary id, decode\n // the data type and child fields, then wrap in a Dictionary type and insert the\n // data type into the dictionary types map.\n else if (!dictionaries.has(id = dictMeta.id().low)) {\n // a dictionary index defaults to signed 32 bit int if unspecified\n keys = (keys = dictMeta.indexType()) ? decodeIndexType(keys) : new Int32();\n dictionaries.set(id, type = decodeFieldType(f, decodeFieldChildren(f, dictionaries)));\n dictType = new Dictionary(type, keys, id, dictMeta.isOrdered());\n field = new Field(f.name(), dictType, f.nullable(), decodeCustomMetadata(f));\n }\n // If dictionary encoded, and have already seen this dictionary Id in the schema, then reuse the\n // data type and wrap in a new Dictionary type and field.\n else {\n // a dictionary index defaults to signed 32 bit int if unspecified\n keys = (keys = dictMeta.indexType()) ? decodeIndexType(keys) : new Int32();\n dictType = new Dictionary(dictionaries.get(id), keys, id, dictMeta.isOrdered());\n field = new Field(f.name(), dictType, f.nullable(), decodeCustomMetadata(f));\n }\n return field || null;\n}\n/** @ignore */\nfunction decodeCustomMetadata(parent) {\n const data = new Map();\n if (parent) {\n for (let entry, key, i = -1, n = parent.customMetadataLength() | 0; ++i < n;) {\n if ((entry = parent.customMetadata(i)) && (key = entry.key()) != null) {\n data.set(key, entry.value());\n }\n }\n }\n return data;\n}\n/** @ignore */\nfunction decodeIndexType(_type) {\n return new Int(_type.isSigned(), _type.bitWidth());\n}\n/** @ignore */\nfunction decodeFieldType(f, children) {\n const typeId = f.typeType();\n switch (typeId) {\n case Type.NONE: return new Null();\n case Type.Null: return new Null();\n case Type.Binary: return new Binary();\n case Type.Utf8: return new Utf8();\n case Type.Bool: return new Bool();\n case Type.List: return new List((children || [])[0]);\n case Type.Struct_: return new Struct(children || []);\n }\n switch (typeId) {\n case Type.Int: {\n const t = f.type(new Schema_.org.apache.arrow.flatbuf.Int());\n return new Int(t.isSigned(), t.bitWidth());\n }\n case Type.FloatingPoint: {\n const t = f.type(new Schema_.org.apache.arrow.flatbuf.FloatingPoint());\n return new Float(t.precision());\n }\n case Type.Decimal: {\n const t = f.type(new Schema_.org.apache.arrow.flatbuf.Decimal());\n return new Decimal(t.scale(), t.precision());\n }\n case Type.Date: {\n const t = f.type(new Schema_.org.apache.arrow.flatbuf.Date());\n return new Date_(t.unit());\n }\n case Type.Time: {\n const t = f.type(new Schema_.org.apache.arrow.flatbuf.Time());\n return new Time(t.unit(), t.bitWidth());\n }\n case Type.Timestamp: {\n const t = f.type(new Schema_.org.apache.arrow.flatbuf.Timestamp());\n return new Timestamp(t.unit(), t.timezone());\n }\n case Type.Interval: {\n const t = f.type(new Schema_.org.apache.arrow.flatbuf.Interval());\n return new Interval(t.unit());\n }\n case Type.Union: {\n const t = f.type(new Schema_.org.apache.arrow.flatbuf.Union());\n return new Union(t.mode(), t.typeIdsArray() || [], children || []);\n }\n case Type.FixedSizeBinary: {\n const t = f.type(new Schema_.org.apache.arrow.flatbuf.FixedSizeBinary());\n return new FixedSizeBinary(t.byteWidth());\n }\n case Type.FixedSizeList: {\n const t = f.type(new Schema_.org.apache.arrow.flatbuf.FixedSizeList());\n return new FixedSizeList(t.listSize(), (children || [])[0]);\n }\n case Type.Map: {\n const t = f.type(new Schema_.org.apache.arrow.flatbuf.Map());\n return new Map_((children || [])[0], t.keysSorted());\n }\n }\n throw new Error(`Unrecognized type: \"${Type[typeId]}\" (${typeId})`);\n}\n/** @ignore */\nfunction encodeSchema(b, schema) {\n const fieldOffsets = schema.fields.map((f) => Field.encode(b, f));\n _Schema.startFieldsVector(b, fieldOffsets.length);\n const fieldsVectorOffset = _Schema.createFieldsVector(b, fieldOffsets);\n const metadataOffset = !(schema.metadata && schema.metadata.size > 0) ? -1 :\n _Schema.createCustomMetadataVector(b, [...schema.metadata].map(([k, v]) => {\n const key = b.createString(`${k}`);\n const val = b.createString(`${v}`);\n _KeyValue.startKeyValue(b);\n _KeyValue.addKey(b, key);\n _KeyValue.addValue(b, val);\n return _KeyValue.endKeyValue(b);\n }));\n _Schema.startSchema(b);\n _Schema.addFields(b, fieldsVectorOffset);\n _Schema.addEndianness(b, platformIsLittleEndian ? _Endianness.Little : _Endianness.Big);\n if (metadataOffset !== -1) {\n _Schema.addCustomMetadata(b, metadataOffset);\n }\n return _Schema.endSchema(b);\n}\n/** @ignore */\nfunction encodeField(b, field) {\n let nameOffset = -1;\n let typeOffset = -1;\n let dictionaryOffset = -1;\n let type = field.type;\n let typeId = field.typeId;\n if (!DataType.isDictionary(type)) {\n typeOffset = typeAssembler.visit(type, b);\n }\n else {\n typeId = type.dictionary.typeId;\n dictionaryOffset = typeAssembler.visit(type, b);\n typeOffset = typeAssembler.visit(type.dictionary, b);\n }\n const childOffsets = (type.children || []).map((f) => Field.encode(b, f));\n const childrenVectorOffset = _Field.createChildrenVector(b, childOffsets);\n const metadataOffset = !(field.metadata && field.metadata.size > 0) ? -1 :\n _Field.createCustomMetadataVector(b, [...field.metadata].map(([k, v]) => {\n const key = b.createString(`${k}`);\n const val = b.createString(`${v}`);\n _KeyValue.startKeyValue(b);\n _KeyValue.addKey(b, key);\n _KeyValue.addValue(b, val);\n return _KeyValue.endKeyValue(b);\n }));\n if (field.name) {\n nameOffset = b.createString(field.name);\n }\n _Field.startField(b);\n _Field.addType(b, typeOffset);\n _Field.addTypeType(b, typeId);\n _Field.addChildren(b, childrenVectorOffset);\n _Field.addNullable(b, !!field.nullable);\n if (nameOffset !== -1) {\n _Field.addName(b, nameOffset);\n }\n if (dictionaryOffset !== -1) {\n _Field.addDictionary(b, dictionaryOffset);\n }\n if (metadataOffset !== -1) {\n _Field.addCustomMetadata(b, metadataOffset);\n }\n return _Field.endField(b);\n}\n/** @ignore */\nfunction encodeRecordBatch(b, recordBatch) {\n const nodes = recordBatch.nodes || [];\n const buffers = recordBatch.buffers || [];\n _RecordBatch.startNodesVector(b, nodes.length);\n nodes.slice().reverse().forEach((n) => FieldNode.encode(b, n));\n const nodesVectorOffset = b.endVector();\n _RecordBatch.startBuffersVector(b, buffers.length);\n buffers.slice().reverse().forEach((b_) => BufferRegion.encode(b, b_));\n const buffersVectorOffset = b.endVector();\n _RecordBatch.startRecordBatch(b);\n _RecordBatch.addLength(b, new Long(recordBatch.length, 0));\n _RecordBatch.addNodes(b, nodesVectorOffset);\n _RecordBatch.addBuffers(b, buffersVectorOffset);\n return _RecordBatch.endRecordBatch(b);\n}\n/** @ignore */\nfunction encodeDictionaryBatch(b, dictionaryBatch) {\n const dataOffset = RecordBatch.encode(b, dictionaryBatch.data);\n _DictionaryBatch.startDictionaryBatch(b);\n _DictionaryBatch.addId(b, new Long(dictionaryBatch.id, 0));\n _DictionaryBatch.addIsDelta(b, dictionaryBatch.isDelta);\n _DictionaryBatch.addData(b, dataOffset);\n return _DictionaryBatch.endDictionaryBatch(b);\n}\n/** @ignore */\nfunction encodeFieldNode(b, node) {\n return _FieldNode.createFieldNode(b, new Long(node.length, 0), new Long(node.nullCount, 0));\n}\n/** @ignore */\nfunction encodeBufferRegion(b, node) {\n return _Buffer.createBuffer(b, new Long(node.offset, 0), new Long(node.length, 0));\n}\n/** @ignore */\nconst platformIsLittleEndian = (function () {\n const buffer = new ArrayBuffer(2);\n new DataView(buffer).setInt16(0, 256, true /* littleEndian */);\n // Int16Array uses the platform's endianness.\n return new Int16Array(buffer)[0] === 256;\n})();\n\n//# sourceMappingURL=message.mjs.map\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\nimport { MessageHeader } from '../enum';\nimport { flatbuffers } from 'flatbuffers';\nvar ByteBuffer = flatbuffers.ByteBuffer;\nimport { Message } from './metadata/message';\nimport { isFileHandle } from '../util/compat';\nimport { AsyncRandomAccessFile } from '../io/file';\nimport { toUint8Array } from '../util/buffer';\nimport { ByteStream, AsyncByteStream } from '../io/stream';\nimport { ArrowJSON, ITERATOR_DONE } from '../io/interfaces';\n/** @ignore */ const invalidMessageType = (type) => `Expected ${MessageHeader[type]} Message in stream, but was null or length 0.`;\n/** @ignore */ const nullMessage = (type) => `Header pointer of flatbuffer-encoded ${MessageHeader[type]} Message is null or length 0.`;\n/** @ignore */ const invalidMessageMetadata = (expected, actual) => `Expected to read ${expected} metadata bytes, but only read ${actual}.`;\n/** @ignore */ const invalidMessageBodyLength = (expected, actual) => `Expected to read ${expected} bytes for message body, but only read ${actual}.`;\n/** @ignore */\nexport class MessageReader {\n constructor(source) {\n this.source = source instanceof ByteStream ? source : new ByteStream(source);\n }\n [Symbol.iterator]() { return this; }\n next() {\n let r;\n if ((r = this.readMetadataLength()).done) {\n return ITERATOR_DONE;\n }\n // ARROW-6313: If the first 4 bytes are continuation indicator (-1), read\n // the next 4 for the 32-bit metadata length. Otherwise, assume this is a\n // pre-v0.15 message, where the first 4 bytes are the metadata length.\n if ((r.value === -1) &&\n (r = this.readMetadataLength()).done) {\n return ITERATOR_DONE;\n }\n if ((r = this.readMetadata(r.value)).done) {\n return ITERATOR_DONE;\n }\n return r;\n }\n throw(value) { return this.source.throw(value); }\n return(value) { return this.source.return(value); }\n readMessage(type) {\n let r;\n if ((r = this.next()).done) {\n return null;\n }\n if ((type != null) && r.value.headerType !== type) {\n throw new Error(invalidMessageType(type));\n }\n return r.value;\n }\n readMessageBody(bodyLength) {\n if (bodyLength <= 0) {\n return new Uint8Array(0);\n }\n const buf = toUint8Array(this.source.read(bodyLength));\n if (buf.byteLength < bodyLength) {\n throw new Error(invalidMessageBodyLength(bodyLength, buf.byteLength));\n }\n // 1. Work around bugs in fs.ReadStream's internal Buffer pooling, see: https://github.com/nodejs/node/issues/24817\n // 2. Work around https://github.com/whatwg/streams/blob/0ebe4b042e467d9876d80ae045de3843092ad797/reference-implementation/lib/helpers.js#L126\n return /* 1. */ (buf.byteOffset % 8 === 0) &&\n /* 2. */ (buf.byteOffset + buf.byteLength) <= buf.buffer.byteLength ? buf : buf.slice();\n }\n readSchema(throwIfNull = false) {\n const type = MessageHeader.Schema;\n const message = this.readMessage(type);\n const schema = message && message.header();\n if (throwIfNull && !schema) {\n throw new Error(nullMessage(type));\n }\n return schema;\n }\n readMetadataLength() {\n const buf = this.source.read(PADDING);\n const bb = buf && new ByteBuffer(buf);\n const len = bb && bb.readInt32(0) || 0;\n return { done: len === 0, value: len };\n }\n readMetadata(metadataLength) {\n const buf = this.source.read(metadataLength);\n if (!buf) {\n return ITERATOR_DONE;\n }\n if (buf.byteLength < metadataLength) {\n throw new Error(invalidMessageMetadata(metadataLength, buf.byteLength));\n }\n return { done: false, value: Message.decode(buf) };\n }\n}\n/** @ignore */\nexport class AsyncMessageReader {\n constructor(source, byteLength) {\n this.source = source instanceof AsyncByteStream ? source\n : isFileHandle(source)\n ? new AsyncRandomAccessFile(source, byteLength)\n : new AsyncByteStream(source);\n }\n [Symbol.asyncIterator]() { return this; }\n async next() {\n let r;\n if ((r = await this.readMetadataLength()).done) {\n return ITERATOR_DONE;\n }\n // ARROW-6313: If the first 4 bytes are continuation indicator (-1), read\n // the next 4 for the 32-bit metadata length. Otherwise, assume this is a\n // pre-v0.15 message, where the first 4 bytes are the metadata length.\n if ((r.value === -1) &&\n (r = await this.readMetadataLength()).done) {\n return ITERATOR_DONE;\n }\n if ((r = await this.readMetadata(r.value)).done) {\n return ITERATOR_DONE;\n }\n return r;\n }\n async throw(value) { return await this.source.throw(value); }\n async return(value) { return await this.source.return(value); }\n async readMessage(type) {\n let r;\n if ((r = await this.next()).done) {\n return null;\n }\n if ((type != null) && r.value.headerType !== type) {\n throw new Error(invalidMessageType(type));\n }\n return r.value;\n }\n async readMessageBody(bodyLength) {\n if (bodyLength <= 0) {\n return new Uint8Array(0);\n }\n const buf = toUint8Array(await this.source.read(bodyLength));\n if (buf.byteLength < bodyLength) {\n throw new Error(invalidMessageBodyLength(bodyLength, buf.byteLength));\n }\n // 1. Work around bugs in fs.ReadStream's internal Buffer pooling, see: https://github.com/nodejs/node/issues/24817\n // 2. Work around https://github.com/whatwg/streams/blob/0ebe4b042e467d9876d80ae045de3843092ad797/reference-implementation/lib/helpers.js#L126\n return /* 1. */ (buf.byteOffset % 8 === 0) &&\n /* 2. */ (buf.byteOffset + buf.byteLength) <= buf.buffer.byteLength ? buf : buf.slice();\n }\n async readSchema(throwIfNull = false) {\n const type = MessageHeader.Schema;\n const message = await this.readMessage(type);\n const schema = message && message.header();\n if (throwIfNull && !schema) {\n throw new Error(nullMessage(type));\n }\n return schema;\n }\n async readMetadataLength() {\n const buf = await this.source.read(PADDING);\n const bb = buf && new ByteBuffer(buf);\n const len = bb && bb.readInt32(0) || 0;\n return { done: len === 0, value: len };\n }\n async readMetadata(metadataLength) {\n const buf = await this.source.read(metadataLength);\n if (!buf) {\n return ITERATOR_DONE;\n }\n if (buf.byteLength < metadataLength) {\n throw new Error(invalidMessageMetadata(metadataLength, buf.byteLength));\n }\n return { done: false, value: Message.decode(buf) };\n }\n}\n/** @ignore */\nexport class JSONMessageReader extends MessageReader {\n constructor(source) {\n super(new Uint8Array(0));\n this._schema = false;\n this._body = [];\n this._batchIndex = 0;\n this._dictionaryIndex = 0;\n this._json = source instanceof ArrowJSON ? source : new ArrowJSON(source);\n }\n next() {\n const { _json } = this;\n if (!this._schema) {\n this._schema = true;\n const message = Message.fromJSON(_json.schema, MessageHeader.Schema);\n return { done: false, value: message };\n }\n if (this._dictionaryIndex < _json.dictionaries.length) {\n const batch = _json.dictionaries[this._dictionaryIndex++];\n this._body = batch['data']['columns'];\n const message = Message.fromJSON(batch, MessageHeader.DictionaryBatch);\n return { done: false, value: message };\n }\n if (this._batchIndex < _json.batches.length) {\n const batch = _json.batches[this._batchIndex++];\n this._body = batch['columns'];\n const message = Message.fromJSON(batch, MessageHeader.RecordBatch);\n return { done: false, value: message };\n }\n this._body = [];\n return ITERATOR_DONE;\n }\n readMessageBody(_bodyLength) {\n return flattenDataSources(this._body);\n function flattenDataSources(xs) {\n return (xs || []).reduce((buffers, column) => [\n ...buffers,\n ...(column['VALIDITY'] && [column['VALIDITY']] || []),\n ...(column['TYPE'] && [column['TYPE']] || []),\n ...(column['OFFSET'] && [column['OFFSET']] || []),\n ...(column['DATA'] && [column['DATA']] || []),\n ...flattenDataSources(column['children'])\n ], []);\n }\n }\n readMessage(type) {\n let r;\n if ((r = this.next()).done) {\n return null;\n }\n if ((type != null) && r.value.headerType !== type) {\n throw new Error(invalidMessageType(type));\n }\n return r.value;\n }\n readSchema() {\n const type = MessageHeader.Schema;\n const message = this.readMessage(type);\n const schema = message && message.header();\n if (!message || !schema) {\n throw new Error(nullMessage(type));\n }\n return schema;\n }\n}\n/** @ignore */\nexport const PADDING = 4;\n/** @ignore */\nexport const MAGIC_STR = 'ARROW1';\n/** @ignore */\nexport const MAGIC = new Uint8Array(MAGIC_STR.length);\nfor (let i = 0; i < MAGIC_STR.length; i += 1 | 0) {\n MAGIC[i] = MAGIC_STR.charCodeAt(i);\n}\n/** @ignore */\nexport function checkForMagicArrowString(buffer, index = 0) {\n for (let i = -1, n = MAGIC.length; ++i < n;) {\n if (MAGIC[i] !== buffer[index + i]) {\n return false;\n }\n }\n return true;\n}\n/** @ignore */\nexport const magicLength = MAGIC.length;\n/** @ignore */\nexport const magicAndPadding = magicLength + PADDING;\n/** @ignore */\nexport const magicX2AndPadding = magicLength * 2 + PADDING;\n\n//# sourceMappingURL=message.mjs.map\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\nimport { Visitor } from '../visitor';\nimport { UnionMode } from '../enum';\nimport { RecordBatch } from '../recordbatch';\nimport { rebaseValueOffsets } from '../util/buffer';\nimport { packBools, truncateBitmap } from '../util/bit';\nimport { selectVectorChildrenArgs } from '../util/args';\nimport { BufferRegion, FieldNode } from '../ipc/metadata/message';\nimport { DataType, } from '../type';\n/** @ignore */\nexport class VectorAssembler extends Visitor {\n constructor() {\n super();\n this._byteLength = 0;\n this._nodes = [];\n this._buffers = [];\n this._bufferRegions = [];\n }\n /** @nocollapse */\n static assemble(...args) {\n const assembler = new VectorAssembler();\n const vectorChildren = selectVectorChildrenArgs(RecordBatch, args);\n const [assembleResult = assembler] = assembler.visitMany(vectorChildren);\n return assembleResult;\n }\n visit(vector) {\n if (!DataType.isDictionary(vector.type)) {\n const { data, length, nullCount } = vector;\n if (length > 2147483647) {\n /* istanbul ignore next */\n throw new RangeError('Cannot write arrays larger than 2^31 - 1 in length');\n }\n if (!DataType.isNull(vector.type)) {\n addBuffer.call(this, nullCount <= 0\n ? new Uint8Array(0) // placeholder validity buffer\n : truncateBitmap(data.offset, length, data.nullBitmap));\n }\n this.nodes.push(new FieldNode(length, nullCount));\n }\n return super.visit(vector);\n }\n visitNull(_nullV) {\n return this;\n }\n visitDictionary(vector) {\n // Assemble the indices here, Dictionary assembled separately.\n return this.visit(vector.indices);\n }\n get nodes() { return this._nodes; }\n get buffers() { return this._buffers; }\n get byteLength() { return this._byteLength; }\n get bufferRegions() { return this._bufferRegions; }\n}\n/** @ignore */\nfunction addBuffer(values) {\n const byteLength = (values.byteLength + 7) & ~7; // Round up to a multiple of 8\n this.buffers.push(values);\n this.bufferRegions.push(new BufferRegion(this._byteLength, byteLength));\n this._byteLength += byteLength;\n return this;\n}\n/** @ignore */\nfunction assembleUnion(vector) {\n const { type, length, typeIds, valueOffsets } = vector;\n // All Union Vectors have a typeIds buffer\n addBuffer.call(this, typeIds);\n // If this is a Sparse Union, treat it like all other Nested types\n if (type.mode === UnionMode.Sparse) {\n return assembleNestedVector.call(this, vector);\n }\n else if (type.mode === UnionMode.Dense) {\n // If this is a Dense Union, add the valueOffsets buffer and potentially slice the children\n if (vector.offset <= 0) {\n // If the Vector hasn't been sliced, write the existing valueOffsets\n addBuffer.call(this, valueOffsets);\n // We can treat this like all other Nested types\n return assembleNestedVector.call(this, vector);\n }\n else {\n // A sliced Dense Union is an unpleasant case. Because the offsets are different for\n // each child vector, we need to \"rebase\" the valueOffsets for each child\n // Union typeIds are not necessary 0-indexed\n const maxChildTypeId = typeIds.reduce((x, y) => Math.max(x, y), typeIds[0]);\n const childLengths = new Int32Array(maxChildTypeId + 1);\n // Set all to -1 to indicate that we haven't observed a first occurrence of a particular child yet\n const childOffsets = new Int32Array(maxChildTypeId + 1).fill(-1);\n const shiftedOffsets = new Int32Array(length);\n // If we have a non-zero offset, then the value offsets do not start at\n // zero. We must a) create a new offsets array with shifted offsets and\n // b) slice the values array accordingly\n const unshiftedOffsets = rebaseValueOffsets(-valueOffsets[0], length, valueOffsets);\n for (let typeId, shift, index = -1; ++index < length;) {\n if ((shift = childOffsets[typeId = typeIds[index]]) === -1) {\n shift = childOffsets[typeId] = unshiftedOffsets[typeId];\n }\n shiftedOffsets[index] = unshiftedOffsets[index] - shift;\n ++childLengths[typeId];\n }\n addBuffer.call(this, shiftedOffsets);\n // Slice and visit children accordingly\n for (let child, childIndex = -1, numChildren = type.children.length; ++childIndex < numChildren;) {\n if (child = vector.getChildAt(childIndex)) {\n const typeId = type.typeIds[childIndex];\n const childLength = Math.min(length, childLengths[typeId]);\n this.visit(child.slice(childOffsets[typeId], childLength));\n }\n }\n }\n }\n return this;\n}\n/** @ignore */\nfunction assembleBoolVector(vector) {\n // Bool vector is a special case of FlatVector, as its data buffer needs to stay packed\n let values;\n if (vector.nullCount >= vector.length) {\n // If all values are null, just insert a placeholder empty data buffer (fastest path)\n return addBuffer.call(this, new Uint8Array(0));\n }\n else if ((values = vector.values) instanceof Uint8Array) {\n // If values is already a Uint8Array, slice the bitmap (fast path)\n return addBuffer.call(this, truncateBitmap(vector.offset, vector.length, values));\n }\n // Otherwise if the underlying data *isn't* a Uint8Array, enumerate the\n // values as bools and re-pack them into a Uint8Array. This code isn't\n // reachable unless you're trying to manipulate the Data internals,\n // we we're only doing this for safety.\n /* istanbul ignore next */\n return addBuffer.call(this, packBools(vector));\n}\n/** @ignore */\nfunction assembleFlatVector(vector) {\n return addBuffer.call(this, vector.values.subarray(0, vector.length * vector.stride));\n}\n/** @ignore */\nfunction assembleFlatListVector(vector) {\n const { length, values, valueOffsets } = vector;\n const firstOffset = valueOffsets[0];\n const lastOffset = valueOffsets[length];\n const byteLength = Math.min(lastOffset - firstOffset, values.byteLength - firstOffset);\n // Push in the order FlatList types read their buffers\n addBuffer.call(this, rebaseValueOffsets(-valueOffsets[0], length, valueOffsets)); // valueOffsets buffer first\n addBuffer.call(this, values.subarray(firstOffset, firstOffset + byteLength)); // sliced values buffer second\n return this;\n}\n/** @ignore */\nfunction assembleListVector(vector) {\n const { length, valueOffsets } = vector;\n // If we have valueOffsets (MapVector, ListVector), push that buffer first\n if (valueOffsets) {\n addBuffer.call(this, rebaseValueOffsets(valueOffsets[0], length, valueOffsets));\n }\n // Then insert the List's values child\n return this.visit(vector.getChildAt(0));\n}\n/** @ignore */\nfunction assembleNestedVector(vector) {\n return this.visitMany(vector.type.children.map((_, i) => vector.getChildAt(i)).filter(Boolean))[0];\n}\nVectorAssembler.prototype.visitBool = assembleBoolVector;\nVectorAssembler.prototype.visitInt = assembleFlatVector;\nVectorAssembler.prototype.visitFloat = assembleFlatVector;\nVectorAssembler.prototype.visitUtf8 = assembleFlatListVector;\nVectorAssembler.prototype.visitBinary = assembleFlatListVector;\nVectorAssembler.prototype.visitFixedSizeBinary = assembleFlatVector;\nVectorAssembler.prototype.visitDate = assembleFlatVector;\nVectorAssembler.prototype.visitTimestamp = assembleFlatVector;\nVectorAssembler.prototype.visitTime = assembleFlatVector;\nVectorAssembler.prototype.visitDecimal = assembleFlatVector;\nVectorAssembler.prototype.visitList = assembleListVector;\nVectorAssembler.prototype.visitStruct = assembleNestedVector;\nVectorAssembler.prototype.visitUnion = assembleUnion;\nVectorAssembler.prototype.visitInterval = assembleFlatVector;\nVectorAssembler.prototype.visitFixedSizeList = assembleListVector;\nVectorAssembler.prototype.visitMap = assembleListVector;\n\n//# sourceMappingURL=vectorassembler.mjs.map\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\nimport { Table } from '../table';\nimport { MAGIC } from './message';\nimport { Column } from '../column';\nimport { DataType } from '../type';\nimport { Field } from '../schema';\nimport { Message } from './metadata/message';\nimport * as metadata from './metadata/message';\nimport { FileBlock, Footer } from './metadata/file';\nimport { MessageHeader, MetadataVersion } from '../enum';\nimport { AsyncByteQueue } from '../io/stream';\nimport { VectorAssembler } from '../visitor/vectorassembler';\nimport { JSONTypeAssembler } from '../visitor/jsontypeassembler';\nimport { JSONVectorAssembler } from '../visitor/jsonvectorassembler';\nimport { toUint8Array } from '../util/buffer';\nimport { RecordBatch, _InternalEmptyPlaceholderRecordBatch } from '../recordbatch';\nimport { ReadableInterop } from '../io/interfaces';\nimport { isPromise, isAsyncIterable, isWritableDOMStream, isWritableNodeStream, isIterable, isObject } from '../util/compat';\nexport class RecordBatchWriter extends ReadableInterop {\n constructor(options) {\n super();\n this._position = 0;\n this._started = false;\n // @ts-ignore\n this._sink = new AsyncByteQueue();\n this._schema = null;\n this._dictionaryBlocks = [];\n this._recordBatchBlocks = [];\n this._dictionaryDeltaOffsets = new Map();\n isObject(options) || (options = { autoDestroy: true, writeLegacyIpcFormat: false });\n this._autoDestroy = (typeof options.autoDestroy === 'boolean') ? options.autoDestroy : true;\n this._writeLegacyIpcFormat = (typeof options.writeLegacyIpcFormat === 'boolean') ? options.writeLegacyIpcFormat : false;\n }\n /** @nocollapse */\n // @ts-ignore\n static throughNode(options) {\n throw new Error(`\"throughNode\" not available in this environment`);\n }\n /** @nocollapse */\n static throughDOM(\n // @ts-ignore\n writableStrategy, \n // @ts-ignore\n readableStrategy) {\n throw new Error(`\"throughDOM\" not available in this environment`);\n }\n toString(sync = false) {\n return this._sink.toString(sync);\n }\n toUint8Array(sync = false) {\n return this._sink.toUint8Array(sync);\n }\n writeAll(input) {\n if (isPromise(input)) {\n return input.then((x) => this.writeAll(x));\n }\n else if (isAsyncIterable(input)) {\n return writeAllAsync(this, input);\n }\n return writeAll(this, input);\n }\n get closed() { return this._sink.closed; }\n [Symbol.asyncIterator]() { return this._sink[Symbol.asyncIterator](); }\n toDOMStream(options) { return this._sink.toDOMStream(options); }\n toNodeStream(options) { return this._sink.toNodeStream(options); }\n close() {\n return this.reset()._sink.close();\n }\n abort(reason) {\n return this.reset()._sink.abort(reason);\n }\n finish() {\n this._autoDestroy ? this.close() : this.reset(this._sink, this._schema);\n return this;\n }\n reset(sink = this._sink, schema = null) {\n if ((sink === this._sink) || (sink instanceof AsyncByteQueue)) {\n this._sink = sink;\n }\n else {\n this._sink = new AsyncByteQueue();\n if (sink && isWritableDOMStream(sink)) {\n this.toDOMStream({ type: 'bytes' }).pipeTo(sink);\n }\n else if (sink && isWritableNodeStream(sink)) {\n this.toNodeStream({ objectMode: false }).pipe(sink);\n }\n }\n if (this._started && this._schema) {\n this._writeFooter(this._schema);\n }\n this._started = false;\n this._dictionaryBlocks = [];\n this._recordBatchBlocks = [];\n this._dictionaryDeltaOffsets = new Map();\n if (!schema || !(schema.compareTo(this._schema))) {\n if (schema === null) {\n this._position = 0;\n this._schema = null;\n }\n else {\n this._started = true;\n this._schema = schema;\n this._writeSchema(schema);\n }\n }\n return this;\n }\n write(payload) {\n let schema = null;\n if (!this._sink) {\n throw new Error(`RecordBatchWriter is closed`);\n }\n else if (payload === null || payload === undefined) {\n return this.finish() && undefined;\n }\n else if (payload instanceof Table && !(schema = payload.schema)) {\n return this.finish() && undefined;\n }\n else if (payload instanceof RecordBatch && !(schema = payload.schema)) {\n return this.finish() && undefined;\n }\n if (schema && !schema.compareTo(this._schema)) {\n if (this._started && this._autoDestroy) {\n return this.close();\n }\n this.reset(this._sink, schema);\n }\n if (payload instanceof RecordBatch) {\n if (!(payload instanceof _InternalEmptyPlaceholderRecordBatch)) {\n this._writeRecordBatch(payload);\n }\n }\n else if (payload instanceof Table) {\n this.writeAll(payload.chunks);\n }\n else if (isIterable(payload)) {\n this.writeAll(payload);\n }\n }\n _writeMessage(message, alignment = 8) {\n const a = alignment - 1;\n const buffer = Message.encode(message);\n const flatbufferSize = buffer.byteLength;\n const prefixSize = !this._writeLegacyIpcFormat ? 8 : 4;\n const alignedSize = (flatbufferSize + prefixSize + a) & ~a;\n const nPaddingBytes = alignedSize - flatbufferSize - prefixSize;\n if (message.headerType === MessageHeader.RecordBatch) {\n this._recordBatchBlocks.push(new FileBlock(alignedSize, message.bodyLength, this._position));\n }\n else if (message.headerType === MessageHeader.DictionaryBatch) {\n this._dictionaryBlocks.push(new FileBlock(alignedSize, message.bodyLength, this._position));\n }\n // If not in legacy pre-0.15.0 mode, write the stream continuation indicator\n if (!this._writeLegacyIpcFormat) {\n this._write(Int32Array.of(-1));\n }\n // Write the flatbuffer size prefix including padding\n this._write(Int32Array.of(alignedSize - prefixSize));\n // Write the flatbuffer\n if (flatbufferSize > 0) {\n this._write(buffer);\n }\n // Write any padding\n return this._writePadding(nPaddingBytes);\n }\n _write(chunk) {\n if (this._started) {\n const buffer = toUint8Array(chunk);\n if (buffer && buffer.byteLength > 0) {\n this._sink.write(buffer);\n this._position += buffer.byteLength;\n }\n }\n return this;\n }\n _writeSchema(schema) {\n return this._writeMessage(Message.from(schema));\n }\n // @ts-ignore\n _writeFooter(schema) {\n // eos bytes\n return this._writeLegacyIpcFormat\n ? this._write(Int32Array.of(0))\n : this._write(Int32Array.of(-1, 0));\n }\n _writeMagic() {\n return this._write(MAGIC);\n }\n _writePadding(nBytes) {\n return nBytes > 0 ? this._write(new Uint8Array(nBytes)) : this;\n }\n _writeRecordBatch(batch) {\n const { byteLength, nodes, bufferRegions, buffers } = VectorAssembler.assemble(batch);\n const recordBatch = new metadata.RecordBatch(batch.length, nodes, bufferRegions);\n const message = Message.from(recordBatch, byteLength);\n return this\n ._writeDictionaries(batch)\n ._writeMessage(message)\n ._writeBodyBuffers(buffers);\n }\n _writeDictionaryBatch(dictionary, id, isDelta = false) {\n this._dictionaryDeltaOffsets.set(id, dictionary.length + (this._dictionaryDeltaOffsets.get(id) || 0));\n const { byteLength, nodes, bufferRegions, buffers } = VectorAssembler.assemble(dictionary);\n const recordBatch = new metadata.RecordBatch(dictionary.length, nodes, bufferRegions);\n const dictionaryBatch = new metadata.DictionaryBatch(recordBatch, id, isDelta);\n const message = Message.from(dictionaryBatch, byteLength);\n return this\n ._writeMessage(message)\n ._writeBodyBuffers(buffers);\n }\n _writeBodyBuffers(buffers) {\n let buffer;\n let size, padding;\n for (let i = -1, n = buffers.length; ++i < n;) {\n if ((buffer = buffers[i]) && (size = buffer.byteLength) > 0) {\n this._write(buffer);\n if ((padding = ((size + 7) & ~7) - size) > 0) {\n this._writePadding(padding);\n }\n }\n }\n return this;\n }\n _writeDictionaries(batch) {\n for (let [id, dictionary] of batch.dictionaries) {\n let offset = this._dictionaryDeltaOffsets.get(id) || 0;\n if (offset === 0 || (dictionary = dictionary.slice(offset)).length > 0) {\n const chunks = 'chunks' in dictionary ? dictionary.chunks : [dictionary];\n for (const chunk of chunks) {\n this._writeDictionaryBatch(chunk, id, offset > 0);\n offset += chunk.length;\n }\n }\n }\n return this;\n }\n}\n/** @ignore */\nexport class RecordBatchStreamWriter extends RecordBatchWriter {\n /** @nocollapse */\n static writeAll(input, options) {\n const writer = new RecordBatchStreamWriter(options);\n if (isPromise(input)) {\n return input.then((x) => writer.writeAll(x));\n }\n else if (isAsyncIterable(input)) {\n return writeAllAsync(writer, input);\n }\n return writeAll(writer, input);\n }\n}\n/** @ignore */\nexport class RecordBatchFileWriter extends RecordBatchWriter {\n constructor() {\n super();\n this._autoDestroy = true;\n }\n /** @nocollapse */\n static writeAll(input) {\n const writer = new RecordBatchFileWriter();\n if (isPromise(input)) {\n return input.then((x) => writer.writeAll(x));\n }\n else if (isAsyncIterable(input)) {\n return writeAllAsync(writer, input);\n }\n return writeAll(writer, input);\n }\n // @ts-ignore\n _writeSchema(schema) {\n return this._writeMagic()._writePadding(2);\n }\n _writeFooter(schema) {\n const buffer = Footer.encode(new Footer(schema, MetadataVersion.V4, this._recordBatchBlocks, this._dictionaryBlocks));\n return super\n ._writeFooter(schema) // EOS bytes for sequential readers\n ._write(buffer) // Write the flatbuffer\n ._write(Int32Array.of(buffer.byteLength)) // then the footer size suffix\n ._writeMagic(); // then the magic suffix\n }\n}\n/** @ignore */\nexport class RecordBatchJSONWriter extends RecordBatchWriter {\n constructor() {\n super();\n this._autoDestroy = true;\n this._recordBatches = [];\n this._dictionaries = [];\n }\n /** @nocollapse */\n static writeAll(input) {\n return new RecordBatchJSONWriter().writeAll(input);\n }\n _writeMessage() { return this; }\n // @ts-ignore\n _writeFooter(schema) { return this; }\n _writeSchema(schema) {\n return this._write(`{\\n \"schema\": ${JSON.stringify({ fields: schema.fields.map(fieldToJSON) }, null, 2)}`);\n }\n _writeDictionaries(batch) {\n if (batch.dictionaries.size > 0) {\n this._dictionaries.push(batch);\n }\n return this;\n }\n _writeDictionaryBatch(dictionary, id, isDelta = false) {\n this._dictionaryDeltaOffsets.set(id, dictionary.length + (this._dictionaryDeltaOffsets.get(id) || 0));\n this._write(this._dictionaryBlocks.length === 0 ? ` ` : `,\\n `);\n this._write(`${dictionaryBatchToJSON(dictionary, id, isDelta)}`);\n this._dictionaryBlocks.push(new FileBlock(0, 0, 0));\n return this;\n }\n _writeRecordBatch(batch) {\n this._writeDictionaries(batch);\n this._recordBatches.push(batch);\n return this;\n }\n close() {\n if (this._dictionaries.length > 0) {\n this._write(`,\\n \"dictionaries\": [\\n`);\n for (const batch of this._dictionaries) {\n super._writeDictionaries(batch);\n }\n this._write(`\\n ]`);\n }\n if (this._recordBatches.length > 0) {\n for (let i = -1, n = this._recordBatches.length; ++i < n;) {\n this._write(i === 0 ? `,\\n \"batches\": [\\n ` : `,\\n `);\n this._write(`${recordBatchToJSON(this._recordBatches[i])}`);\n this._recordBatchBlocks.push(new FileBlock(0, 0, 0));\n }\n this._write(`\\n ]`);\n }\n if (this._schema) {\n this._write(`\\n}`);\n }\n this._dictionaries = [];\n this._recordBatches = [];\n return super.close();\n }\n}\n/** @ignore */\nfunction writeAll(writer, input) {\n let chunks = input;\n if (input instanceof Table) {\n chunks = input.chunks;\n writer.reset(undefined, input.schema);\n }\n for (const batch of chunks) {\n writer.write(batch);\n }\n return writer.finish();\n}\n/** @ignore */\nasync function writeAllAsync(writer, batches) {\n for await (const batch of batches) {\n writer.write(batch);\n }\n return writer.finish();\n}\n/** @ignore */\nfunction fieldToJSON({ name, type, nullable }) {\n const assembler = new JSONTypeAssembler();\n return {\n 'name': name, 'nullable': nullable,\n 'type': assembler.visit(type),\n 'children': (type.children || []).map(fieldToJSON),\n 'dictionary': !DataType.isDictionary(type) ? undefined : {\n 'id': type.id,\n 'isOrdered': type.isOrdered,\n 'indexType': assembler.visit(type.indices)\n }\n };\n}\n/** @ignore */\nfunction dictionaryBatchToJSON(dictionary, id, isDelta = false) {\n const field = new Field(`${id}`, dictionary.type, dictionary.nullCount > 0);\n const columns = JSONVectorAssembler.assemble(new Column(field, [dictionary]));\n return JSON.stringify({\n 'id': id,\n 'isDelta': isDelta,\n 'data': {\n 'count': dictionary.length,\n 'columns': columns\n }\n }, null, 2);\n}\n/** @ignore */\nfunction recordBatchToJSON(records) {\n return JSON.stringify({\n 'count': records.length,\n 'columns': JSONVectorAssembler.assemble(records)\n }, null, 2);\n}\n\n//# sourceMappingURL=writer.mjs.map\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\nimport { Data } from '../data';\nimport { Schema } from '../schema';\nimport { Chunked } from '../vector/chunked';\nimport { RecordBatch } from '../recordbatch';\nconst noopBuf = new Uint8Array(0);\nconst nullBufs = (bitmapLength) => [\n noopBuf, noopBuf, new Uint8Array(bitmapLength), noopBuf\n];\n/** @ignore */\nexport function ensureSameLengthData(schema, chunks, batchLength = chunks.reduce((l, c) => Math.max(l, c.length), 0)) {\n let data;\n let field;\n let i = -1, n = chunks.length;\n const fields = [...schema.fields];\n const batchData = [];\n const bitmapLength = ((batchLength + 63) & ~63) >> 3;\n while (++i < n) {\n if ((data = chunks[i]) && data.length === batchLength) {\n batchData[i] = data;\n }\n else {\n (field = fields[i]).nullable || (fields[i] = fields[i].clone({ nullable: true }));\n batchData[i] = data ? data._changeLengthAndBackfillNullBitmap(batchLength)\n : Data.new(field.type, 0, batchLength, batchLength, nullBufs(bitmapLength));\n }\n }\n return [new Schema(fields), batchLength, batchData];\n}\n/** @ignore */\nexport function distributeColumnsIntoRecordBatches(columns) {\n return distributeVectorsIntoRecordBatches(new Schema(columns.map(({ field }) => field)), columns);\n}\n/** @ignore */\nexport function distributeVectorsIntoRecordBatches(schema, vecs) {\n return uniformlyDistributeChunksAcrossRecordBatches(schema, vecs.map((v) => v instanceof Chunked ? v.chunks.map((c) => c.data) : [v.data]));\n}\n/** @ignore */\nfunction uniformlyDistributeChunksAcrossRecordBatches(schema, columns) {\n const fields = [...schema.fields];\n const batchArgs = [];\n const memo = { numBatches: columns.reduce((n, c) => Math.max(n, c.length), 0) };\n let numBatches = 0, batchLength = 0;\n let i = -1, numColumns = columns.length;\n let child, childData = [];\n while (memo.numBatches-- > 0) {\n for (batchLength = Number.POSITIVE_INFINITY, i = -1; ++i < numColumns;) {\n childData[i] = child = columns[i].shift();\n batchLength = Math.min(batchLength, child ? child.length : batchLength);\n }\n if (isFinite(batchLength)) {\n childData = distributeChildData(fields, batchLength, childData, columns, memo);\n if (batchLength > 0) {\n batchArgs[numBatches++] = [batchLength, childData.slice()];\n }\n }\n }\n return [\n schema = new Schema(fields, schema.metadata),\n batchArgs.map((xs) => new RecordBatch(schema, ...xs))\n ];\n}\n/** @ignore */\nfunction distributeChildData(fields, batchLength, childData, columns, memo) {\n let data;\n let field;\n let length = 0, i = -1, n = columns.length;\n const bitmapLength = ((batchLength + 63) & ~63) >> 3;\n while (++i < n) {\n if ((data = childData[i]) && ((length = data.length) >= batchLength)) {\n if (length === batchLength) {\n childData[i] = data;\n }\n else {\n childData[i] = data.slice(0, batchLength);\n data = data.slice(batchLength, length - batchLength);\n memo.numBatches = Math.max(memo.numBatches, columns[i].unshift(data));\n }\n }\n else {\n (field = fields[i]).nullable || (fields[i] = field.clone({ nullable: true }));\n childData[i] = data ? data._changeLengthAndBackfillNullBitmap(batchLength)\n : Data.new(field.type, 0, batchLength, batchLength, nullBufs(bitmapLength));\n }\n }\n return childData;\n}\n\n//# sourceMappingURL=recordbatch.mjs.map\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\nimport { Type } from '../enum';\nimport { Chunked } from './chunked';\nimport { clampRange } from '../util/vector';\nimport { AbstractVector, Vector } from '../vector';\n/** @ignore */\nexport class BaseVector extends AbstractVector {\n constructor(data, children) {\n super();\n this._children = children;\n this.numChildren = data.childData.length;\n this._bindDataAccessors(this.data = data);\n }\n get type() { return this.data.type; }\n get typeId() { return this.data.typeId; }\n get length() { return this.data.length; }\n get offset() { return this.data.offset; }\n get stride() { return this.data.stride; }\n get nullCount() { return this.data.nullCount; }\n get byteLength() { return this.data.byteLength; }\n get VectorName() { return `${Type[this.typeId]}Vector`; }\n get ArrayType() { return this.type.ArrayType; }\n get values() { return this.data.values; }\n get typeIds() { return this.data.typeIds; }\n get nullBitmap() { return this.data.nullBitmap; }\n get valueOffsets() { return this.data.valueOffsets; }\n get [Symbol.toStringTag]() { return `${this.VectorName}<${this.type[Symbol.toStringTag]}>`; }\n clone(data, children = this._children) {\n return Vector.new(data, children);\n }\n concat(...others) {\n return Chunked.concat(this, ...others);\n }\n slice(begin, end) {\n // Adjust args similar to Array.prototype.slice. Normalize begin/end to\n // clamp between 0 and length, and wrap around on negative indices, e.g.\n // slice(-1, 5) or slice(5, -1)\n return clampRange(this, begin, end, this._sliceInternal);\n }\n isValid(index) {\n if (this.nullCount > 0) {\n const idx = this.offset + index;\n const val = this.nullBitmap[idx >> 3];\n const mask = (val & (1 << (idx % 8)));\n return mask !== 0;\n }\n return true;\n }\n getChildAt(index) {\n return index < 0 || index >= this.numChildren ? null : ((this._children || (this._children = []))[index] ||\n (this._children[index] = Vector.new(this.data.childData[index])));\n }\n toJSON() { return [...this]; }\n _sliceInternal(self, begin, end) {\n return self.clone(self.data.slice(begin, end - begin), null);\n }\n // @ts-ignore\n _bindDataAccessors(data) {\n // Implementation in src/vectors/index.ts due to circular dependency/packaging shenanigans\n }\n}\nBaseVector.prototype[Symbol.isConcatSpreadable] = true;\n\n//# sourceMappingURL=base.mjs.map\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\nimport { Vector } from '../vector';\nimport { BaseVector } from './base';\nimport { Utf8 } from '../type';\n/** @ignore */\nexport class BinaryVector extends BaseVector {\n asUtf8() {\n return Vector.new(this.data.clone(new Utf8()));\n }\n}\n\n//# sourceMappingURL=binary.mjs.map\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\nimport { Bool } from '../type';\nimport { BaseVector } from './base';\nimport { vectorFromValuesWithType } from './index';\n/** @ignore */\nexport class BoolVector extends BaseVector {\n /** @nocollapse */\n static from(input) {\n return vectorFromValuesWithType(() => new Bool(), input);\n }\n}\n\n//# sourceMappingURL=bool.mjs.map\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\nimport { DateUnit } from '../enum';\nimport { BaseVector } from './base';\nimport { vectorFromValuesWithType } from './index';\nimport { DateDay, DateMillisecond } from '../type';\n/** @ignore */\nexport class DateVector extends BaseVector {\n /** @nocollapse */\n static from(...args) {\n if (args.length === 2) {\n return vectorFromValuesWithType(() => args[1] === DateUnit.DAY ? new DateDay() : new DateMillisecond(), args[0]);\n }\n return vectorFromValuesWithType(() => new DateMillisecond(), args[0]);\n }\n}\n/** @ignore */\nexport class DateDayVector extends DateVector {\n}\n/** @ignore */\nexport class DateMillisecondVector extends DateVector {\n}\n\n//# sourceMappingURL=date.mjs.map\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\nimport { BaseVector } from './base';\n/** @ignore */\nexport class DecimalVector extends BaseVector {\n}\n\n//# sourceMappingURL=decimal.mjs.map\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\nimport { Data } from '../data';\nimport { Vector } from '../vector';\nimport { BaseVector } from './base';\nimport { vectorFromValuesWithType } from './index';\nimport { Dictionary } from '../type';\n/** @ignore */\nexport class DictionaryVector extends BaseVector {\n constructor(data) {\n super(data);\n this.indices = Vector.new(data.clone(this.type.indices));\n }\n /** @nocollapse */\n static from(...args) {\n if (args.length === 3) {\n const [values, indices, keys] = args;\n const type = new Dictionary(values.type, indices, null, null);\n return Vector.new(Data.Dictionary(type, 0, keys.length, 0, null, keys, values));\n }\n return vectorFromValuesWithType(() => args[0].type, args[0]);\n }\n get dictionary() { return this.data.dictionary; }\n reverseLookup(value) { return this.dictionary.indexOf(value); }\n getKey(idx) { return this.indices.get(idx); }\n getValue(key) { return this.dictionary.get(key); }\n setKey(idx, key) { return this.indices.set(idx, key); }\n setValue(key, value) { return this.dictionary.set(key, value); }\n}\nDictionaryVector.prototype.indices = null;\n\n//# sourceMappingURL=dictionary.mjs.map\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\nimport { BaseVector } from './base';\n/** @ignore */\nexport class FixedSizeBinaryVector extends BaseVector {\n}\n\n//# sourceMappingURL=fixedsizebinary.mjs.map\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\nimport { BaseVector } from './base';\n/** @ignore */\nexport class FixedSizeListVector extends BaseVector {\n}\n\n//# sourceMappingURL=fixedsizelist.mjs.map\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\nimport { Data } from '../data';\nimport { Vector } from '../vector';\nimport { BaseVector } from './base';\nimport { vectorFromValuesWithType } from './index';\nimport { Float16, Float32, Float64 } from '../type';\n/** @ignore */\nexport class FloatVector extends BaseVector {\n /** @nocollapse */\n static from(input) {\n let ArrowType = vectorTypeToDataType(this);\n if ((input instanceof ArrayBuffer) || ArrayBuffer.isView(input)) {\n let InputType = arrayTypeToDataType(input.constructor) || ArrowType;\n // Special case, infer the Arrow DataType from the input if calling the base\n // FloatVector.from with a TypedArray, e.g. `FloatVector.from(new Float32Array())`\n if (ArrowType === null) {\n ArrowType = InputType;\n }\n // If the DataType inferred from the Vector constructor matches the\n // DataType inferred from the input arguments, return zero-copy view\n if (ArrowType && ArrowType === InputType) {\n let type = new ArrowType();\n let length = input.byteLength / type.ArrayType.BYTES_PER_ELEMENT;\n // If the ArrowType is Float16 but the input type isn't a Uint16Array,\n // let the Float16Builder handle casting the input values to Uint16s.\n if (!convertTo16Bit(ArrowType, input.constructor)) {\n return Vector.new(Data.Float(type, 0, length, 0, null, input));\n }\n }\n }\n if (ArrowType) {\n // If the DataType inferred from the Vector constructor is different than\n // the DataType inferred from the input TypedArray, or if input isn't a\n // TypedArray, use the Builders to construct the result Vector\n return vectorFromValuesWithType(() => new ArrowType(), input);\n }\n if ((input instanceof DataView) || (input instanceof ArrayBuffer)) {\n throw new TypeError(`Cannot infer float type from instance of ${input.constructor.name}`);\n }\n throw new TypeError('Unrecognized FloatVector input');\n }\n}\n/** @ignore */\nexport class Float16Vector extends FloatVector {\n // Since JS doesn't have half floats, `toArray()` returns a zero-copy slice\n // of the underlying Uint16Array data. This behavior ensures we don't incur\n // extra compute or copies if you're calling `toArray()` in order to create\n // a buffer for something like WebGL. Buf if you're using JS and want typed\n // arrays of 4-to-8-byte precision, these methods will enumerate the values\n // and clamp to the desired byte lengths.\n toFloat32Array() { return new Float32Array(this); }\n toFloat64Array() { return new Float64Array(this); }\n}\n/** @ignore */\nexport class Float32Vector extends FloatVector {\n}\n/** @ignore */\nexport class Float64Vector extends FloatVector {\n}\nconst convertTo16Bit = (typeCtor, dataCtor) => {\n return (typeCtor === Float16) && (dataCtor !== Uint16Array);\n};\n/** @ignore */\nconst arrayTypeToDataType = (ctor) => {\n switch (ctor) {\n case Uint16Array: return Float16;\n case Float32Array: return Float32;\n case Float64Array: return Float64;\n default: return null;\n }\n};\n/** @ignore */\nconst vectorTypeToDataType = (ctor) => {\n switch (ctor) {\n case Float16Vector: return Float16;\n case Float32Vector: return Float32;\n case Float64Vector: return Float64;\n default: return null;\n }\n};\n\n//# sourceMappingURL=float.mjs.map\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\nimport { BaseVector } from './base';\n/** @ignore */\nexport class IntervalVector extends BaseVector {\n}\n/** @ignore */\nexport class IntervalDayTimeVector extends IntervalVector {\n}\n/** @ignore */\nexport class IntervalYearMonthVector extends IntervalVector {\n}\n\n//# sourceMappingURL=interval.mjs.map\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\nimport { Data } from '../data';\nimport { Vector } from '../vector';\nimport { BaseVector } from './base';\nimport { vectorFromValuesWithType } from './index';\nimport { BigInt64Array, BigUint64Array } from '../util/compat';\nimport { toBigInt64Array, toBigUint64Array } from '../util/buffer';\nimport { Uint8, Uint16, Uint32, Uint64, Int8, Int16, Int32, Int64 } from '../type';\n/** @ignore */\nexport class IntVector extends BaseVector {\n /** @nocollapse */\n static from(...args) {\n let [input, is64bit = false] = args;\n let ArrowType = vectorTypeToDataType(this, is64bit);\n if ((input instanceof ArrayBuffer) || ArrayBuffer.isView(input)) {\n let InputType = arrayTypeToDataType(input.constructor, is64bit) || ArrowType;\n // Special case, infer the Arrow DataType from the input if calling the base\n // IntVector.from with a TypedArray, e.g. `IntVector.from(new Int32Array())`\n if (ArrowType === null) {\n ArrowType = InputType;\n }\n // If the DataType inferred from the Vector constructor matches the\n // DataType inferred from the input arguments, return zero-copy view\n if (ArrowType && ArrowType === InputType) {\n let type = new ArrowType();\n let length = input.byteLength / type.ArrayType.BYTES_PER_ELEMENT;\n // If the ArrowType is 64bit but the input type is 32bit pairs, update the logical length\n if (convert32To64Bit(ArrowType, input.constructor)) {\n length *= 0.5;\n }\n return Vector.new(Data.Int(type, 0, length, 0, null, input));\n }\n }\n if (ArrowType) {\n // If the DataType inferred from the Vector constructor is different than\n // the DataType inferred from the input TypedArray, or if input isn't a\n // TypedArray, use the Builders to construct the result Vector\n return vectorFromValuesWithType(() => new ArrowType(), input);\n }\n if ((input instanceof DataView) || (input instanceof ArrayBuffer)) {\n throw new TypeError(`Cannot infer integer type from instance of ${input.constructor.name}`);\n }\n throw new TypeError('Unrecognized IntVector input');\n }\n}\n/** @ignore */\nexport class Int8Vector extends IntVector {\n}\n/** @ignore */\nexport class Int16Vector extends IntVector {\n}\n/** @ignore */\nexport class Int32Vector extends IntVector {\n}\n/** @ignore */\nexport class Int64Vector extends IntVector {\n toBigInt64Array() {\n return toBigInt64Array(this.values);\n }\n get values64() {\n return this._values64 || (this._values64 = this.toBigInt64Array());\n }\n}\n/** @ignore */\nexport class Uint8Vector extends IntVector {\n}\n/** @ignore */\nexport class Uint16Vector extends IntVector {\n}\n/** @ignore */\nexport class Uint32Vector extends IntVector {\n}\n/** @ignore */\nexport class Uint64Vector extends IntVector {\n toBigUint64Array() {\n return toBigUint64Array(this.values);\n }\n get values64() {\n return this._values64 || (this._values64 = this.toBigUint64Array());\n }\n}\nconst convert32To64Bit = (typeCtor, dataCtor) => {\n return (typeCtor === Int64 || typeCtor === Uint64) &&\n (dataCtor === Int32Array || dataCtor === Uint32Array);\n};\n/** @ignore */\nconst arrayTypeToDataType = (ctor, is64bit) => {\n switch (ctor) {\n case Int8Array: return Int8;\n case Int16Array: return Int16;\n case Int32Array: return is64bit ? Int64 : Int32;\n case BigInt64Array: return Int64;\n case Uint8Array: return Uint8;\n case Uint16Array: return Uint16;\n case Uint32Array: return is64bit ? Uint64 : Uint32;\n case BigUint64Array: return Uint64;\n default: return null;\n }\n};\n/** @ignore */\nconst vectorTypeToDataType = (ctor, is64bit) => {\n switch (ctor) {\n case Int8Vector: return Int8;\n case Int16Vector: return Int16;\n case Int32Vector: return is64bit ? Int64 : Int32;\n case Int64Vector: return Int64;\n case Uint8Vector: return Uint8;\n case Uint16Vector: return Uint16;\n case Uint32Vector: return is64bit ? Uint64 : Uint32;\n case Uint64Vector: return Uint64;\n default: return null;\n }\n};\n\n//# sourceMappingURL=int.mjs.map\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\nimport { BaseVector } from './base';\n/** @ignore */\nexport class ListVector extends BaseVector {\n}\n\n//# sourceMappingURL=list.mjs.map\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\nimport { MapRow } from './row';\nimport { Vector } from '../vector';\nimport { BaseVector } from './base';\nimport { List } from '../type';\n/** @ignore */\nexport class MapVector extends BaseVector {\n asList() {\n const child = this.type.children[0];\n return Vector.new(this.data.clone(new List(child)));\n }\n bind(index) {\n const child = this.getChildAt(0);\n const { [index]: begin, [index + 1]: end } = this.valueOffsets;\n return new MapRow(child.slice(begin, end));\n }\n}\n\n//# sourceMappingURL=map.mjs.map\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\nimport { BaseVector } from './base';\n/** @ignore */\nexport class NullVector extends BaseVector {\n}\n\n//# sourceMappingURL=null.mjs.map\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\nimport { StructRow } from './row';\nimport { BaseVector } from './base';\n/** @ignore */ const kRowIndex = Symbol.for('rowIndex');\n/** @ignore */\nexport class StructVector extends BaseVector {\n bind(index) {\n const proto = this._row || (this._row = new StructRow(this));\n const bound = Object.create(proto);\n bound[kRowIndex] = index;\n return bound;\n }\n}\n\n//# sourceMappingURL=struct.mjs.map\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\nimport { BaseVector } from './base';\n/** @ignore */\nexport class TimestampVector extends BaseVector {\n}\n/** @ignore */\nexport class TimestampSecondVector extends TimestampVector {\n}\n/** @ignore */\nexport class TimestampMillisecondVector extends TimestampVector {\n}\n/** @ignore */\nexport class TimestampMicrosecondVector extends TimestampVector {\n}\n/** @ignore */\nexport class TimestampNanosecondVector extends TimestampVector {\n}\n\n//# sourceMappingURL=timestamp.mjs.map\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\nimport { BaseVector } from './base';\n/** @ignore */\nexport class TimeVector extends BaseVector {\n}\n/** @ignore */\nexport class TimeSecondVector extends TimeVector {\n}\n/** @ignore */\nexport class TimeMillisecondVector extends TimeVector {\n}\n/** @ignore */\nexport class TimeMicrosecondVector extends TimeVector {\n}\n/** @ignore */\nexport class TimeNanosecondVector extends TimeVector {\n}\n\n//# sourceMappingURL=time.mjs.map\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\nimport { BaseVector } from './base';\n/** @ignore */\nexport class UnionVector extends BaseVector {\n get typeIdToChildIndex() { return this.data.type.typeIdToChildIndex; }\n}\n/** @ignore */\nexport class DenseUnionVector extends UnionVector {\n get valueOffsets() { return this.data.valueOffsets; }\n}\n/** @ignore */\nexport class SparseUnionVector extends UnionVector {\n}\n\n//# sourceMappingURL=union.mjs.map\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\nimport { Vector } from '../vector';\nimport { BaseVector } from './base';\nimport { Binary, Utf8 } from '../type';\nimport { vectorFromValuesWithType } from './index';\n/** @ignore */\nexport class Utf8Vector extends BaseVector {\n /** @nocollapse */\n static from(input) {\n return vectorFromValuesWithType(() => new Utf8(), input);\n }\n asBinary() {\n return Vector.new(this.data.clone(new Binary()));\n }\n}\n\n//# sourceMappingURL=utf8.mjs.map\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\n/** @ignore */\nexport function partial0(visit) {\n return function () { return visit(this); };\n}\n/** @ignore */\nexport function partial1(visit) {\n return function (a) { return visit(this, a); };\n}\n/** @ignore */\nexport function partial2(visit) {\n return function (a, b) { return visit(this, a, b); };\n}\n\n//# sourceMappingURL=fn.mjs.map\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\nimport { BN } from '../util/bn';\nimport { Visitor } from '../visitor';\nimport { decodeUtf8 } from '../util/utf8';\nimport { uint16ToFloat64 } from '../util/math';\nimport { UnionMode, Precision, DateUnit, TimeUnit, IntervalUnit } from '../enum';\n/** @ignore */\nexport class GetVisitor extends Visitor {\n}\n/** @ignore */ const epochDaysToMs = (data, index) => 86400000 * data[index];\n/** @ignore */ const epochMillisecondsLongToMs = (data, index) => 4294967296 * (data[index + 1]) + (data[index] >>> 0);\n/** @ignore */ const epochMicrosecondsLongToMs = (data, index) => 4294967296 * (data[index + 1] / 1000) + ((data[index] >>> 0) / 1000);\n/** @ignore */ const epochNanosecondsLongToMs = (data, index) => 4294967296 * (data[index + 1] / 1000000) + ((data[index] >>> 0) / 1000000);\n/** @ignore */ const epochMillisecondsToDate = (epochMs) => new Date(epochMs);\n/** @ignore */ const epochDaysToDate = (data, index) => epochMillisecondsToDate(epochDaysToMs(data, index));\n/** @ignore */ const epochMillisecondsLongToDate = (data, index) => epochMillisecondsToDate(epochMillisecondsLongToMs(data, index));\n/** @ignore */\nconst getNull = (_vector, _index) => null;\n/** @ignore */\nconst getVariableWidthBytes = (values, valueOffsets, index) => {\n const { [index]: x, [index + 1]: y } = valueOffsets;\n return x != null && y != null ? values.subarray(x, y) : null;\n};\n/** @ignore */\nconst getBool = ({ offset, values }, index) => {\n const idx = offset + index;\n const byte = values[idx >> 3];\n return (byte & 1 << (idx % 8)) !== 0;\n};\n/** @ignore */\nconst getDateDay = ({ values }, index) => epochDaysToDate(values, index);\n/** @ignore */\nconst getDateMillisecond = ({ values }, index) => epochMillisecondsLongToDate(values, index * 2);\n/** @ignore */\nconst getNumeric = ({ stride, values }, index) => values[stride * index];\n/** @ignore */\nconst getFloat16 = ({ stride, values }, index) => uint16ToFloat64(values[stride * index]);\n/** @ignore */\nconst getBigInts = ({ stride, values, type }, index) => BN.new(values.subarray(stride * index, stride * (index + 1)), type.isSigned);\n/** @ignore */\nconst getFixedSizeBinary = ({ stride, values }, index) => values.subarray(stride * index, stride * (index + 1));\n/** @ignore */\nconst getBinary = ({ values, valueOffsets }, index) => getVariableWidthBytes(values, valueOffsets, index);\n/** @ignore */\nconst getUtf8 = ({ values, valueOffsets }, index) => {\n const bytes = getVariableWidthBytes(values, valueOffsets, index);\n return bytes !== null ? decodeUtf8(bytes) : null;\n};\n/* istanbul ignore next */\n/** @ignore */\nconst getInt = (vector, index) => (vector.type.bitWidth < 64\n ? getNumeric(vector, index)\n : getBigInts(vector, index));\n/* istanbul ignore next */\n/** @ignore */\nconst getFloat = (vector, index) => (vector.type.precision !== Precision.HALF\n ? getNumeric(vector, index)\n : getFloat16(vector, index));\n/* istanbul ignore next */\n/** @ignore */\nconst getDate = (vector, index) => (vector.type.unit === DateUnit.DAY\n ? getDateDay(vector, index)\n : getDateMillisecond(vector, index));\n/** @ignore */\nconst getTimestampSecond = ({ values }, index) => 1000 * epochMillisecondsLongToMs(values, index * 2);\n/** @ignore */\nconst getTimestampMillisecond = ({ values }, index) => epochMillisecondsLongToMs(values, index * 2);\n/** @ignore */\nconst getTimestampMicrosecond = ({ values }, index) => epochMicrosecondsLongToMs(values, index * 2);\n/** @ignore */\nconst getTimestampNanosecond = ({ values }, index) => epochNanosecondsLongToMs(values, index * 2);\n/* istanbul ignore next */\n/** @ignore */\nconst getTimestamp = (vector, index) => {\n switch (vector.type.unit) {\n case TimeUnit.SECOND: return getTimestampSecond(vector, index);\n case TimeUnit.MILLISECOND: return getTimestampMillisecond(vector, index);\n case TimeUnit.MICROSECOND: return getTimestampMicrosecond(vector, index);\n case TimeUnit.NANOSECOND: return getTimestampNanosecond(vector, index);\n }\n};\n/** @ignore */\nconst getTimeSecond = ({ values, stride }, index) => values[stride * index];\n/** @ignore */\nconst getTimeMillisecond = ({ values, stride }, index) => values[stride * index];\n/** @ignore */\nconst getTimeMicrosecond = ({ values }, index) => BN.signed(values.subarray(2 * index, 2 * (index + 1)));\n/** @ignore */\nconst getTimeNanosecond = ({ values }, index) => BN.signed(values.subarray(2 * index, 2 * (index + 1)));\n/* istanbul ignore next */\n/** @ignore */\nconst getTime = (vector, index) => {\n switch (vector.type.unit) {\n case TimeUnit.SECOND: return getTimeSecond(vector, index);\n case TimeUnit.MILLISECOND: return getTimeMillisecond(vector, index);\n case TimeUnit.MICROSECOND: return getTimeMicrosecond(vector, index);\n case TimeUnit.NANOSECOND: return getTimeNanosecond(vector, index);\n }\n};\n/** @ignore */\nconst getDecimal = ({ values }, index) => BN.decimal(values.subarray(4 * index, 4 * (index + 1)));\n/** @ignore */\nconst getList = (vector, index) => {\n const child = vector.getChildAt(0), { valueOffsets, stride } = vector;\n return child.slice(valueOffsets[index * stride], valueOffsets[(index * stride) + 1]);\n};\n/** @ignore */\nconst getMap = (vector, index) => {\n return vector.bind(index);\n};\n/** @ignore */\nconst getStruct = (vector, index) => {\n return vector.bind(index);\n};\n/* istanbul ignore next */\n/** @ignore */\nconst getUnion = (vector, index) => {\n return vector.type.mode === UnionMode.Dense ?\n getDenseUnion(vector, index) :\n getSparseUnion(vector, index);\n};\n/** @ignore */\nconst getDenseUnion = (vector, index) => {\n const childIndex = vector.typeIdToChildIndex[vector.typeIds[index]];\n const child = vector.getChildAt(childIndex);\n return child ? child.get(vector.valueOffsets[index]) : null;\n};\n/** @ignore */\nconst getSparseUnion = (vector, index) => {\n const childIndex = vector.typeIdToChildIndex[vector.typeIds[index]];\n const child = vector.getChildAt(childIndex);\n return child ? child.get(index) : null;\n};\n/** @ignore */\nconst getDictionary = (vector, index) => {\n return vector.getValue(vector.getKey(index));\n};\n/* istanbul ignore next */\n/** @ignore */\nconst getInterval = (vector, index) => (vector.type.unit === IntervalUnit.DAY_TIME)\n ? getIntervalDayTime(vector, index)\n : getIntervalYearMonth(vector, index);\n/** @ignore */\nconst getIntervalDayTime = ({ values }, index) => values.subarray(2 * index, 2 * (index + 1));\n/** @ignore */\nconst getIntervalYearMonth = ({ values }, index) => {\n const interval = values[index];\n const int32s = new Int32Array(2);\n int32s[0] = interval / 12 | 0; /* years */\n int32s[1] = interval % 12 | 0; /* months */\n return int32s;\n};\n/** @ignore */\nconst getFixedSizeList = (vector, index) => {\n const child = vector.getChildAt(0), { stride } = vector;\n return child.slice(index * stride, (index + 1) * stride);\n};\nGetVisitor.prototype.visitNull = getNull;\nGetVisitor.prototype.visitBool = getBool;\nGetVisitor.prototype.visitInt = getInt;\nGetVisitor.prototype.visitInt8 = getNumeric;\nGetVisitor.prototype.visitInt16 = getNumeric;\nGetVisitor.prototype.visitInt32 = getNumeric;\nGetVisitor.prototype.visitInt64 = getBigInts;\nGetVisitor.prototype.visitUint8 = getNumeric;\nGetVisitor.prototype.visitUint16 = getNumeric;\nGetVisitor.prototype.visitUint32 = getNumeric;\nGetVisitor.prototype.visitUint64 = getBigInts;\nGetVisitor.prototype.visitFloat = getFloat;\nGetVisitor.prototype.visitFloat16 = getFloat16;\nGetVisitor.prototype.visitFloat32 = getNumeric;\nGetVisitor.prototype.visitFloat64 = getNumeric;\nGetVisitor.prototype.visitUtf8 = getUtf8;\nGetVisitor.prototype.visitBinary = getBinary;\nGetVisitor.prototype.visitFixedSizeBinary = getFixedSizeBinary;\nGetVisitor.prototype.visitDate = getDate;\nGetVisitor.prototype.visitDateDay = getDateDay;\nGetVisitor.prototype.visitDateMillisecond = getDateMillisecond;\nGetVisitor.prototype.visitTimestamp = getTimestamp;\nGetVisitor.prototype.visitTimestampSecond = getTimestampSecond;\nGetVisitor.prototype.visitTimestampMillisecond = getTimestampMillisecond;\nGetVisitor.prototype.visitTimestampMicrosecond = getTimestampMicrosecond;\nGetVisitor.prototype.visitTimestampNanosecond = getTimestampNanosecond;\nGetVisitor.prototype.visitTime = getTime;\nGetVisitor.prototype.visitTimeSecond = getTimeSecond;\nGetVisitor.prototype.visitTimeMillisecond = getTimeMillisecond;\nGetVisitor.prototype.visitTimeMicrosecond = getTimeMicrosecond;\nGetVisitor.prototype.visitTimeNanosecond = getTimeNanosecond;\nGetVisitor.prototype.visitDecimal = getDecimal;\nGetVisitor.prototype.visitList = getList;\nGetVisitor.prototype.visitStruct = getStruct;\nGetVisitor.prototype.visitUnion = getUnion;\nGetVisitor.prototype.visitDenseUnion = getDenseUnion;\nGetVisitor.prototype.visitSparseUnion = getSparseUnion;\nGetVisitor.prototype.visitDictionary = getDictionary;\nGetVisitor.prototype.visitInterval = getInterval;\nGetVisitor.prototype.visitIntervalDayTime = getIntervalDayTime;\nGetVisitor.prototype.visitIntervalYearMonth = getIntervalYearMonth;\nGetVisitor.prototype.visitFixedSizeList = getFixedSizeList;\nGetVisitor.prototype.visitMap = getMap;\n/** @ignore */\nexport const instance = new GetVisitor();\n\n//# sourceMappingURL=get.mjs.map\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\nimport { Visitor } from '../visitor';\nimport { getBool, iterateBits } from '../util/bit';\nimport { createElementComparator } from '../util/vector';\n/** @ignore */\nexport class IndexOfVisitor extends Visitor {\n}\n/** @ignore */\nfunction nullIndexOf(vector, searchElement) {\n // if you're looking for nulls and the vector isn't empty, we've got 'em!\n return searchElement === null && vector.length > 0 ? 0 : -1;\n}\n/** @ignore */\nfunction indexOfNull(vector, fromIndex) {\n const { nullBitmap } = vector;\n if (!nullBitmap || vector.nullCount <= 0) {\n return -1;\n }\n let i = 0;\n for (const isValid of iterateBits(nullBitmap, vector.data.offset + (fromIndex || 0), vector.length, nullBitmap, getBool)) {\n if (!isValid) {\n return i;\n }\n ++i;\n }\n return -1;\n}\n/** @ignore */\nfunction indexOfValue(vector, searchElement, fromIndex) {\n if (searchElement === undefined) {\n return -1;\n }\n if (searchElement === null) {\n return indexOfNull(vector, fromIndex);\n }\n const compare = createElementComparator(searchElement);\n for (let i = (fromIndex || 0) - 1, n = vector.length; ++i < n;) {\n if (compare(vector.get(i))) {\n return i;\n }\n }\n return -1;\n}\n/** @ignore */\nfunction indexOfUnion(vector, searchElement, fromIndex) {\n // Unions are special -- they do have a nullBitmap, but so can their children.\n // If the searchElement is null, we don't know whether it came from the Union's\n // bitmap or one of its childrens'. So we don't interrogate the Union's bitmap,\n // since that will report the wrong index if a child has a null before the Union.\n const compare = createElementComparator(searchElement);\n for (let i = (fromIndex || 0) - 1, n = vector.length; ++i < n;) {\n if (compare(vector.get(i))) {\n return i;\n }\n }\n return -1;\n}\nIndexOfVisitor.prototype.visitNull = nullIndexOf;\nIndexOfVisitor.prototype.visitBool = indexOfValue;\nIndexOfVisitor.prototype.visitInt = indexOfValue;\nIndexOfVisitor.prototype.visitInt8 = indexOfValue;\nIndexOfVisitor.prototype.visitInt16 = indexOfValue;\nIndexOfVisitor.prototype.visitInt32 = indexOfValue;\nIndexOfVisitor.prototype.visitInt64 = indexOfValue;\nIndexOfVisitor.prototype.visitUint8 = indexOfValue;\nIndexOfVisitor.prototype.visitUint16 = indexOfValue;\nIndexOfVisitor.prototype.visitUint32 = indexOfValue;\nIndexOfVisitor.prototype.visitUint64 = indexOfValue;\nIndexOfVisitor.prototype.visitFloat = indexOfValue;\nIndexOfVisitor.prototype.visitFloat16 = indexOfValue;\nIndexOfVisitor.prototype.visitFloat32 = indexOfValue;\nIndexOfVisitor.prototype.visitFloat64 = indexOfValue;\nIndexOfVisitor.prototype.visitUtf8 = indexOfValue;\nIndexOfVisitor.prototype.visitBinary = indexOfValue;\nIndexOfVisitor.prototype.visitFixedSizeBinary = indexOfValue;\nIndexOfVisitor.prototype.visitDate = indexOfValue;\nIndexOfVisitor.prototype.visitDateDay = indexOfValue;\nIndexOfVisitor.prototype.visitDateMillisecond = indexOfValue;\nIndexOfVisitor.prototype.visitTimestamp = indexOfValue;\nIndexOfVisitor.prototype.visitTimestampSecond = indexOfValue;\nIndexOfVisitor.prototype.visitTimestampMillisecond = indexOfValue;\nIndexOfVisitor.prototype.visitTimestampMicrosecond = indexOfValue;\nIndexOfVisitor.prototype.visitTimestampNanosecond = indexOfValue;\nIndexOfVisitor.prototype.visitTime = indexOfValue;\nIndexOfVisitor.prototype.visitTimeSecond = indexOfValue;\nIndexOfVisitor.prototype.visitTimeMillisecond = indexOfValue;\nIndexOfVisitor.prototype.visitTimeMicrosecond = indexOfValue;\nIndexOfVisitor.prototype.visitTimeNanosecond = indexOfValue;\nIndexOfVisitor.prototype.visitDecimal = indexOfValue;\nIndexOfVisitor.prototype.visitList = indexOfValue;\nIndexOfVisitor.prototype.visitStruct = indexOfValue;\nIndexOfVisitor.prototype.visitUnion = indexOfValue;\nIndexOfVisitor.prototype.visitDenseUnion = indexOfUnion;\nIndexOfVisitor.prototype.visitSparseUnion = indexOfUnion;\nIndexOfVisitor.prototype.visitDictionary = indexOfValue;\nIndexOfVisitor.prototype.visitInterval = indexOfValue;\nIndexOfVisitor.prototype.visitIntervalDayTime = indexOfValue;\nIndexOfVisitor.prototype.visitIntervalYearMonth = indexOfValue;\nIndexOfVisitor.prototype.visitFixedSizeList = indexOfValue;\nIndexOfVisitor.prototype.visitMap = indexOfValue;\n/** @ignore */\nexport const instance = new IndexOfVisitor();\n\n//# sourceMappingURL=indexof.mjs.map\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\nimport { Type } from '../enum';\nimport { Visitor } from '../visitor';\nimport { iterateBits } from '../util/bit';\nimport { instance as getVisitor } from './get';\n/** @ignore */\nexport class IteratorVisitor extends Visitor {\n}\n/** @ignore */\nfunction nullableIterator(vector) {\n const getFn = getVisitor.getVisitFn(vector);\n return iterateBits(vector.nullBitmap, vector.offset, vector.length, vector, (vec, idx, nullByte, nullBit) => ((nullByte & 1 << nullBit) !== 0) ? getFn(vec, idx) : null);\n}\n/** @ignore */\nfunction vectorIterator(vector) {\n // If nullable, iterate manually\n if (vector.nullCount > 0) {\n return nullableIterator(vector);\n }\n const { type, typeId, length } = vector;\n // Fast case, defer to native iterators if possible\n if (vector.stride === 1 && ((typeId === Type.Timestamp) ||\n (typeId === Type.Int && type.bitWidth !== 64) ||\n (typeId === Type.Time && type.bitWidth !== 64) ||\n (typeId === Type.Float && type.precision > 0 /* Precision.HALF */))) {\n return vector.values.subarray(0, length)[Symbol.iterator]();\n }\n // Otherwise, iterate manually\n return (function* (getFn) {\n for (let index = -1; ++index < length;) {\n yield getFn(vector, index);\n }\n })(getVisitor.getVisitFn(vector));\n}\nIteratorVisitor.prototype.visitNull = vectorIterator;\nIteratorVisitor.prototype.visitBool = vectorIterator;\nIteratorVisitor.prototype.visitInt = vectorIterator;\nIteratorVisitor.prototype.visitInt8 = vectorIterator;\nIteratorVisitor.prototype.visitInt16 = vectorIterator;\nIteratorVisitor.prototype.visitInt32 = vectorIterator;\nIteratorVisitor.prototype.visitInt64 = vectorIterator;\nIteratorVisitor.prototype.visitUint8 = vectorIterator;\nIteratorVisitor.prototype.visitUint16 = vectorIterator;\nIteratorVisitor.prototype.visitUint32 = vectorIterator;\nIteratorVisitor.prototype.visitUint64 = vectorIterator;\nIteratorVisitor.prototype.visitFloat = vectorIterator;\nIteratorVisitor.prototype.visitFloat16 = vectorIterator;\nIteratorVisitor.prototype.visitFloat32 = vectorIterator;\nIteratorVisitor.prototype.visitFloat64 = vectorIterator;\nIteratorVisitor.prototype.visitUtf8 = vectorIterator;\nIteratorVisitor.prototype.visitBinary = vectorIterator;\nIteratorVisitor.prototype.visitFixedSizeBinary = vectorIterator;\nIteratorVisitor.prototype.visitDate = vectorIterator;\nIteratorVisitor.prototype.visitDateDay = vectorIterator;\nIteratorVisitor.prototype.visitDateMillisecond = vectorIterator;\nIteratorVisitor.prototype.visitTimestamp = vectorIterator;\nIteratorVisitor.prototype.visitTimestampSecond = vectorIterator;\nIteratorVisitor.prototype.visitTimestampMillisecond = vectorIterator;\nIteratorVisitor.prototype.visitTimestampMicrosecond = vectorIterator;\nIteratorVisitor.prototype.visitTimestampNanosecond = vectorIterator;\nIteratorVisitor.prototype.visitTime = vectorIterator;\nIteratorVisitor.prototype.visitTimeSecond = vectorIterator;\nIteratorVisitor.prototype.visitTimeMillisecond = vectorIterator;\nIteratorVisitor.prototype.visitTimeMicrosecond = vectorIterator;\nIteratorVisitor.prototype.visitTimeNanosecond = vectorIterator;\nIteratorVisitor.prototype.visitDecimal = vectorIterator;\nIteratorVisitor.prototype.visitList = vectorIterator;\nIteratorVisitor.prototype.visitStruct = vectorIterator;\nIteratorVisitor.prototype.visitUnion = vectorIterator;\nIteratorVisitor.prototype.visitDenseUnion = vectorIterator;\nIteratorVisitor.prototype.visitSparseUnion = vectorIterator;\nIteratorVisitor.prototype.visitDictionary = vectorIterator;\nIteratorVisitor.prototype.visitInterval = vectorIterator;\nIteratorVisitor.prototype.visitIntervalDayTime = vectorIterator;\nIteratorVisitor.prototype.visitIntervalYearMonth = vectorIterator;\nIteratorVisitor.prototype.visitFixedSizeList = vectorIterator;\nIteratorVisitor.prototype.visitMap = vectorIterator;\n/** @ignore */\nexport const instance = new IteratorVisitor();\n\n//# sourceMappingURL=iterator.mjs.map\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\nimport { Type } from '../enum';\nimport { Visitor } from '../visitor';\nimport { instance as iteratorVisitor } from './iterator';\n/** @ignore */\nexport class ToArrayVisitor extends Visitor {\n}\n/** @ignore */\nfunction arrayOfVector(vector) {\n const { type, length, stride } = vector;\n // Fast case, return subarray if possible\n switch (type.typeId) {\n case Type.Int:\n case Type.Float:\n case Type.Decimal:\n case Type.Time:\n case Type.Timestamp:\n return vector.values.subarray(0, length * stride);\n }\n // Otherwise if not primitive, slow copy\n return [...iteratorVisitor.visit(vector)];\n}\nToArrayVisitor.prototype.visitNull = arrayOfVector;\nToArrayVisitor.prototype.visitBool = arrayOfVector;\nToArrayVisitor.prototype.visitInt = arrayOfVector;\nToArrayVisitor.prototype.visitInt8 = arrayOfVector;\nToArrayVisitor.prototype.visitInt16 = arrayOfVector;\nToArrayVisitor.prototype.visitInt32 = arrayOfVector;\nToArrayVisitor.prototype.visitInt64 = arrayOfVector;\nToArrayVisitor.prototype.visitUint8 = arrayOfVector;\nToArrayVisitor.prototype.visitUint16 = arrayOfVector;\nToArrayVisitor.prototype.visitUint32 = arrayOfVector;\nToArrayVisitor.prototype.visitUint64 = arrayOfVector;\nToArrayVisitor.prototype.visitFloat = arrayOfVector;\nToArrayVisitor.prototype.visitFloat16 = arrayOfVector;\nToArrayVisitor.prototype.visitFloat32 = arrayOfVector;\nToArrayVisitor.prototype.visitFloat64 = arrayOfVector;\nToArrayVisitor.prototype.visitUtf8 = arrayOfVector;\nToArrayVisitor.prototype.visitBinary = arrayOfVector;\nToArrayVisitor.prototype.visitFixedSizeBinary = arrayOfVector;\nToArrayVisitor.prototype.visitDate = arrayOfVector;\nToArrayVisitor.prototype.visitDateDay = arrayOfVector;\nToArrayVisitor.prototype.visitDateMillisecond = arrayOfVector;\nToArrayVisitor.prototype.visitTimestamp = arrayOfVector;\nToArrayVisitor.prototype.visitTimestampSecond = arrayOfVector;\nToArrayVisitor.prototype.visitTimestampMillisecond = arrayOfVector;\nToArrayVisitor.prototype.visitTimestampMicrosecond = arrayOfVector;\nToArrayVisitor.prototype.visitTimestampNanosecond = arrayOfVector;\nToArrayVisitor.prototype.visitTime = arrayOfVector;\nToArrayVisitor.prototype.visitTimeSecond = arrayOfVector;\nToArrayVisitor.prototype.visitTimeMillisecond = arrayOfVector;\nToArrayVisitor.prototype.visitTimeMicrosecond = arrayOfVector;\nToArrayVisitor.prototype.visitTimeNanosecond = arrayOfVector;\nToArrayVisitor.prototype.visitDecimal = arrayOfVector;\nToArrayVisitor.prototype.visitList = arrayOfVector;\nToArrayVisitor.prototype.visitStruct = arrayOfVector;\nToArrayVisitor.prototype.visitUnion = arrayOfVector;\nToArrayVisitor.prototype.visitDenseUnion = arrayOfVector;\nToArrayVisitor.prototype.visitSparseUnion = arrayOfVector;\nToArrayVisitor.prototype.visitDictionary = arrayOfVector;\nToArrayVisitor.prototype.visitInterval = arrayOfVector;\nToArrayVisitor.prototype.visitIntervalDayTime = arrayOfVector;\nToArrayVisitor.prototype.visitIntervalYearMonth = arrayOfVector;\nToArrayVisitor.prototype.visitFixedSizeList = arrayOfVector;\nToArrayVisitor.prototype.visitMap = arrayOfVector;\n/** @ignore */\nexport const instance = new ToArrayVisitor();\n\n//# sourceMappingURL=toarray.mjs.map\n","/* istanbul ignore file */\nimport { Visitor } from '../visitor';\nimport { TimeUnit } from '../enum';\n/** @ignore */ const sum = (x, y) => x + y;\n/** @ignore */ const variableWidthColumnErrorMessage = (type) => `Cannot compute the byte width of variable-width column ${type}`;\n/** @ignore */\nexport class ByteWidthVisitor extends Visitor {\n visitNull(____) { return 0; }\n visitInt(type) { return type.bitWidth / 8; }\n visitFloat(type) { return type.ArrayType.BYTES_PER_ELEMENT; }\n visitBinary(type) { throw new Error(variableWidthColumnErrorMessage(type)); }\n visitUtf8(type) { throw new Error(variableWidthColumnErrorMessage(type)); }\n visitBool(____) { return 1 / 8; }\n visitDecimal(____) { return 16; }\n visitDate(type) { return (type.unit + 1) * 4; }\n visitTime(type) { return type.bitWidth / 8; }\n visitTimestamp(type) { return type.unit === TimeUnit.SECOND ? 4 : 8; }\n visitInterval(type) { return (type.unit + 1) * 4; }\n visitList(type) { throw new Error(variableWidthColumnErrorMessage(type)); }\n visitStruct(type) { return this.visitFields(type.children).reduce(sum, 0); }\n visitUnion(type) { return this.visitFields(type.children).reduce(sum, 0); }\n visitFixedSizeBinary(type) { return type.byteWidth; }\n visitFixedSizeList(type) { return type.listSize * this.visitFields(type.children).reduce(sum, 0); }\n visitMap(type) { return this.visitFields(type.children).reduce(sum, 0); }\n visitDictionary(type) { return this.visit(type.indices); }\n visitFields(fields) { return (fields || []).map((field) => this.visit(field.type)); }\n visitSchema(schema) { return this.visitFields(schema.fields).reduce(sum, 0); }\n}\n/** @ignore */\nexport const instance = new ByteWidthVisitor();\n\n//# sourceMappingURL=bytewidth.mjs.map\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\nimport { Visitor } from '../visitor';\nimport { BinaryVector } from '../vector/binary';\nimport { BoolVector } from '../vector/bool';\nimport { DateVector, DateDayVector, DateMillisecondVector } from '../vector/date';\nimport { DecimalVector } from '../vector/decimal';\nimport { DictionaryVector } from '../vector/dictionary';\nimport { FixedSizeBinaryVector } from '../vector/fixedsizebinary';\nimport { FixedSizeListVector } from '../vector/fixedsizelist';\nimport { FloatVector, Float16Vector, Float32Vector, Float64Vector } from '../vector/float';\nimport { IntervalVector, IntervalDayTimeVector, IntervalYearMonthVector } from '../vector/interval';\nimport { IntVector, Int8Vector, Int16Vector, Int32Vector, Int64Vector, Uint8Vector, Uint16Vector, Uint32Vector, Uint64Vector } from '../vector/int';\nimport { ListVector } from '../vector/list';\nimport { MapVector } from '../vector/map';\nimport { NullVector } from '../vector/null';\nimport { StructVector } from '../vector/struct';\nimport { TimestampVector, TimestampSecondVector, TimestampMillisecondVector, TimestampMicrosecondVector, TimestampNanosecondVector } from '../vector/timestamp';\nimport { TimeVector, TimeSecondVector, TimeMillisecondVector, TimeMicrosecondVector, TimeNanosecondVector } from '../vector/time';\nimport { UnionVector, DenseUnionVector, SparseUnionVector } from '../vector/union';\nimport { Utf8Vector } from '../vector/utf8';\n/** @ignore */\nexport class GetVectorConstructor extends Visitor {\n visitNull() { return NullVector; }\n visitBool() { return BoolVector; }\n visitInt() { return IntVector; }\n visitInt8() { return Int8Vector; }\n visitInt16() { return Int16Vector; }\n visitInt32() { return Int32Vector; }\n visitInt64() { return Int64Vector; }\n visitUint8() { return Uint8Vector; }\n visitUint16() { return Uint16Vector; }\n visitUint32() { return Uint32Vector; }\n visitUint64() { return Uint64Vector; }\n visitFloat() { return FloatVector; }\n visitFloat16() { return Float16Vector; }\n visitFloat32() { return Float32Vector; }\n visitFloat64() { return Float64Vector; }\n visitUtf8() { return Utf8Vector; }\n visitBinary() { return BinaryVector; }\n visitFixedSizeBinary() { return FixedSizeBinaryVector; }\n visitDate() { return DateVector; }\n visitDateDay() { return DateDayVector; }\n visitDateMillisecond() { return DateMillisecondVector; }\n visitTimestamp() { return TimestampVector; }\n visitTimestampSecond() { return TimestampSecondVector; }\n visitTimestampMillisecond() { return TimestampMillisecondVector; }\n visitTimestampMicrosecond() { return TimestampMicrosecondVector; }\n visitTimestampNanosecond() { return TimestampNanosecondVector; }\n visitTime() { return TimeVector; }\n visitTimeSecond() { return TimeSecondVector; }\n visitTimeMillisecond() { return TimeMillisecondVector; }\n visitTimeMicrosecond() { return TimeMicrosecondVector; }\n visitTimeNanosecond() { return TimeNanosecondVector; }\n visitDecimal() { return DecimalVector; }\n visitList() { return ListVector; }\n visitStruct() { return StructVector; }\n visitUnion() { return UnionVector; }\n visitDenseUnion() { return DenseUnionVector; }\n visitSparseUnion() { return SparseUnionVector; }\n visitDictionary() { return DictionaryVector; }\n visitInterval() { return IntervalVector; }\n visitIntervalDayTime() { return IntervalDayTimeVector; }\n visitIntervalYearMonth() { return IntervalYearMonthVector; }\n visitFixedSizeList() { return FixedSizeListVector; }\n visitMap() { return MapVector; }\n}\n/** @ignore */\nexport const instance = new GetVectorConstructor();\n\n//# sourceMappingURL=vectorctor.mjs.map\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\nexport { Vector } from '../vector';\nexport { BaseVector } from './base';\nexport { BinaryVector } from './binary';\nexport { BoolVector } from './bool';\nexport { Chunked } from './chunked';\nexport { DateVector, DateDayVector, DateMillisecondVector } from './date';\nexport { DecimalVector } from './decimal';\nexport { DictionaryVector } from './dictionary';\nexport { FixedSizeBinaryVector } from './fixedsizebinary';\nexport { FixedSizeListVector } from './fixedsizelist';\nexport { FloatVector, Float16Vector, Float32Vector, Float64Vector } from './float';\nexport { IntervalVector, IntervalDayTimeVector, IntervalYearMonthVector } from './interval';\nexport { IntVector, Int8Vector, Int16Vector, Int32Vector, Int64Vector, Uint8Vector, Uint16Vector, Uint32Vector, Uint64Vector } from './int';\nexport { ListVector } from './list';\nexport { MapVector } from './map';\nexport { NullVector } from './null';\nexport { StructVector } from './struct';\nexport { TimestampVector, TimestampSecondVector, TimestampMillisecondVector, TimestampMicrosecondVector, TimestampNanosecondVector } from './timestamp';\nexport { TimeVector, TimeSecondVector, TimeMillisecondVector, TimeMicrosecondVector, TimeNanosecondVector } from './time';\nexport { UnionVector, DenseUnionVector, SparseUnionVector } from './union';\nexport { Utf8Vector } from './utf8';\nexport { MapRow, StructRow } from './row';\nimport * as fn from '../util/fn';\nimport { Type } from '../enum';\nimport { Vector } from '../vector';\nimport { Chunked } from './chunked';\nimport { BaseVector } from './base';\nimport { setBool } from '../util/bit';\nimport { isIterable, isAsyncIterable } from '../util/compat';\nimport { Builder } from '../builder';\nimport { instance as getVisitor } from '../visitor/get';\nimport { instance as setVisitor } from '../visitor/set';\nimport { instance as indexOfVisitor } from '../visitor/indexof';\nimport { instance as toArrayVisitor } from '../visitor/toarray';\nimport { instance as iteratorVisitor } from '../visitor/iterator';\nimport { instance as byteWidthVisitor } from '../visitor/bytewidth';\nimport { instance as getVectorConstructor } from '../visitor/vectorctor';\n/** @nocollapse */\nVector.new = newVector;\n/** @nocollapse */\nVector.from = vectorFrom;\n/** @ignore */\nfunction newVector(data, ...args) {\n return new (getVectorConstructor.getVisitFn(data)())(data, ...args);\n}\n/** @ignore */\nexport function vectorFromValuesWithType(newDataType, input) {\n if (isIterable(input)) {\n return Vector.from({ 'nullValues': [null, undefined], type: newDataType(), 'values': input });\n }\n else if (isAsyncIterable(input)) {\n return Vector.from({ 'nullValues': [null, undefined], type: newDataType(), 'values': input });\n }\n const { 'values': values = [], 'type': type = newDataType(), 'nullValues': nullValues = [null, undefined], } = { ...input };\n return isIterable(values)\n ? Vector.from({ nullValues, ...input, type })\n : Vector.from({ nullValues, ...input, type });\n}\nfunction vectorFrom(input) {\n const { 'values': values = [], ...options } = { 'nullValues': [null, undefined], ...input };\n if (isIterable(values)) {\n const chunks = [...Builder.throughIterable(options)(values)];\n return chunks.length === 1 ? chunks[0] : Chunked.concat(chunks);\n }\n return (async (chunks) => {\n const transform = Builder.throughAsyncIterable(options);\n for await (const chunk of transform(values)) {\n chunks.push(chunk);\n }\n return chunks.length === 1 ? chunks[0] : Chunked.concat(chunks);\n })([]);\n}\n//\n// We provide the following method implementations for code navigability purposes only.\n// They're overridden at runtime below with the specific Visitor implementation for each type,\n// short-circuiting the usual Visitor traversal and reducing intermediate lookups and calls.\n// This comment is here to remind you to not set breakpoints in these function bodies, or to inform\n// you why the breakpoints you have already set are not being triggered. Have a great day!\n//\nBaseVector.prototype.get = function baseVectorGet(index) {\n return getVisitor.visit(this, index);\n};\nBaseVector.prototype.set = function baseVectorSet(index, value) {\n return setVisitor.visit(this, index, value);\n};\nBaseVector.prototype.indexOf = function baseVectorIndexOf(value, fromIndex) {\n return indexOfVisitor.visit(this, value, fromIndex);\n};\nBaseVector.prototype.toArray = function baseVectorToArray() {\n return toArrayVisitor.visit(this);\n};\nBaseVector.prototype.getByteWidth = function baseVectorGetByteWidth() {\n return byteWidthVisitor.visit(this.type);\n};\nBaseVector.prototype[Symbol.iterator] = function baseVectorSymbolIterator() {\n return iteratorVisitor.visit(this);\n};\nBaseVector.prototype._bindDataAccessors = bindBaseVectorDataAccessors;\n// Perf: bind and assign the operator Visitor methods to each of the Vector subclasses for each Type\nObject.keys(Type)\n .map((T) => Type[T])\n .filter((T) => typeof T === 'number')\n .filter((typeId) => typeId !== Type.NONE)\n .forEach((typeId) => {\n const VectorCtor = getVectorConstructor.visit(typeId);\n VectorCtor.prototype['get'] = fn.partial1(getVisitor.getVisitFn(typeId));\n VectorCtor.prototype['set'] = fn.partial2(setVisitor.getVisitFn(typeId));\n VectorCtor.prototype['indexOf'] = fn.partial2(indexOfVisitor.getVisitFn(typeId));\n VectorCtor.prototype['toArray'] = fn.partial0(toArrayVisitor.getVisitFn(typeId));\n VectorCtor.prototype['getByteWidth'] = partialType0(byteWidthVisitor.getVisitFn(typeId));\n VectorCtor.prototype[Symbol.iterator] = fn.partial0(iteratorVisitor.getVisitFn(typeId));\n});\n/** @ignore */\nfunction partialType0(visit) {\n return function () { return visit(this.type); };\n}\n/** @ignore */\nfunction wrapNullableGet(fn) {\n return function (i) { return this.isValid(i) ? fn.call(this, i) : null; };\n}\n/** @ignore */\nfunction wrapNullableSet(fn) {\n return function (i, a) {\n if (setBool(this.nullBitmap, this.offset + i, !(a === null || a === undefined))) {\n fn.call(this, i, a);\n }\n };\n}\n/** @ignore */\nfunction bindBaseVectorDataAccessors() {\n const nullBitmap = this.nullBitmap;\n if (nullBitmap && nullBitmap.byteLength > 0) {\n this.get = wrapNullableGet(this.get);\n this.set = wrapNullableSet(this.set);\n }\n}\n\n//# sourceMappingURL=index.mjs.map\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\nimport { Column } from './column';\nimport { Schema } from './schema';\nimport { RecordBatch, _InternalEmptyPlaceholderRecordBatch } from './recordbatch';\nimport { RecordBatchReader } from './ipc/reader';\nimport { Struct } from './type';\nimport { selectColumnArgs, selectArgs } from './util/args';\nimport { isPromise, isIterable, isAsyncIterable } from './util/compat';\nimport { RecordBatchFileWriter, RecordBatchStreamWriter } from './ipc/writer';\nimport { distributeColumnsIntoRecordBatches, distributeVectorsIntoRecordBatches } from './util/recordbatch';\nimport { Chunked, StructVector } from './vector/index';\nexport class Table extends Chunked {\n constructor(...args) {\n let schema = null;\n if (args[0] instanceof Schema) {\n schema = args.shift();\n }\n let chunks = selectArgs(RecordBatch, args);\n if (!schema && !(schema = chunks[0] && chunks[0].schema)) {\n throw new TypeError('Table must be initialized with a Schema or at least one RecordBatch');\n }\n chunks[0] || (chunks[0] = new _InternalEmptyPlaceholderRecordBatch(schema));\n super(new Struct(schema.fields), chunks);\n this._schema = schema;\n this._chunks = chunks;\n }\n /** @nocollapse */\n static empty(schema = new Schema([])) { return new Table(schema, []); }\n /** @nocollapse */\n static from(input) {\n if (!input) {\n return Table.empty();\n }\n if (typeof input === 'object') {\n let table = isIterable(input['values']) ? tableFromIterable(input)\n : isAsyncIterable(input['values']) ? tableFromAsyncIterable(input)\n : null;\n if (table !== null) {\n return table;\n }\n }\n let reader = RecordBatchReader.from(input);\n if (isPromise(reader)) {\n return (async () => await Table.from(await reader))();\n }\n if (reader.isSync() && (reader = reader.open())) {\n return !reader.schema ? Table.empty() : new Table(reader.schema, [...reader]);\n }\n return (async (opening) => {\n const reader = await opening;\n const schema = reader.schema;\n const batches = [];\n if (schema) {\n for await (let batch of reader) {\n batches.push(batch);\n }\n return new Table(schema, batches);\n }\n return Table.empty();\n })(reader.open());\n }\n /** @nocollapse */\n static async fromAsync(source) {\n return await Table.from(source);\n }\n /** @nocollapse */\n static fromStruct(vector) {\n return Table.new(vector.data.childData, vector.type.children);\n }\n /** @nocollapse */\n static new(...cols) {\n return new Table(...distributeColumnsIntoRecordBatches(selectColumnArgs(cols)));\n }\n get schema() { return this._schema; }\n get length() { return this._length; }\n get chunks() { return this._chunks; }\n get numCols() { return this._numChildren; }\n clone(chunks = this._chunks) {\n return new Table(this._schema, chunks);\n }\n getColumn(name) {\n return this.getColumnAt(this.getColumnIndex(name));\n }\n getColumnAt(index) {\n return this.getChildAt(index);\n }\n getColumnIndex(name) {\n return this._schema.fields.findIndex((f) => f.name === name);\n }\n getChildAt(index) {\n if (index < 0 || index >= this.numChildren) {\n return null;\n }\n let field, child;\n const fields = this._schema.fields;\n const columns = this._children || (this._children = []);\n if (child = columns[index]) {\n return child;\n }\n if (field = fields[index]) {\n const chunks = this._chunks\n .map((chunk) => chunk.getChildAt(index))\n .filter((vec) => vec != null);\n if (chunks.length > 0) {\n return (columns[index] = new Column(field, chunks));\n }\n }\n return null;\n }\n // @ts-ignore\n serialize(encoding = 'binary', stream = true) {\n const Writer = !stream\n ? RecordBatchFileWriter\n : RecordBatchStreamWriter;\n return Writer.writeAll(this).toUint8Array(true);\n }\n count() {\n return this._length;\n }\n select(...columnNames) {\n const nameToIndex = this._schema.fields.reduce((m, f, i) => m.set(f.name, i), new Map());\n return this.selectAt(...columnNames.map((columnName) => nameToIndex.get(columnName)).filter((x) => x > -1));\n }\n selectAt(...columnIndices) {\n const schema = this._schema.selectAt(...columnIndices);\n return new Table(schema, this._chunks.map(({ length, data: { childData } }) => {\n return new RecordBatch(schema, length, columnIndices.map((i) => childData[i]).filter(Boolean));\n }));\n }\n assign(other) {\n const fields = this._schema.fields;\n const [indices, oldToNew] = other.schema.fields.reduce((memo, f2, newIdx) => {\n const [indices, oldToNew] = memo;\n const i = fields.findIndex((f) => f.name === f2.name);\n ~i ? (oldToNew[i] = newIdx) : indices.push(newIdx);\n return memo;\n }, [[], []]);\n const schema = this._schema.assign(other.schema);\n const columns = [\n ...fields.map((_f, i, _fs, j = oldToNew[i]) => (j === undefined ? this.getColumnAt(i) : other.getColumnAt(j))),\n ...indices.map((i) => other.getColumnAt(i))\n ].filter(Boolean);\n return new Table(...distributeVectorsIntoRecordBatches(schema, columns));\n }\n}\nfunction tableFromIterable(input) {\n const { type } = input;\n if (type instanceof Struct) {\n return Table.fromStruct(StructVector.from(input));\n }\n return null;\n}\nfunction tableFromAsyncIterable(input) {\n const { type } = input;\n if (type instanceof Struct) {\n return StructVector.from(input).then((vector) => Table.fromStruct(vector));\n }\n return null;\n}\n\n//# sourceMappingURL=table.mjs.map\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\nimport { Data } from './data';\nimport { Table } from './table';\nimport { Vector } from './vector';\nimport { Visitor } from './visitor';\nimport { Schema } from './schema';\nimport { isIterable } from './util/compat';\nimport { Chunked } from './vector/chunked';\nimport { selectFieldArgs } from './util/args';\nimport { DataType, Struct } from './type';\nimport { ensureSameLengthData } from './util/recordbatch';\nimport { StructVector } from './vector/index';\nexport class RecordBatch extends StructVector {\n constructor(...args) {\n let data;\n let schema = args[0];\n let children;\n if (args[1] instanceof Data) {\n [, data, children] = args;\n }\n else {\n const fields = schema.fields;\n const [, length, childData] = args;\n data = Data.Struct(new Struct(fields), 0, length, 0, null, childData);\n }\n super(data, children);\n this._schema = schema;\n }\n /** @nocollapse */\n static from(options) {\n if (isIterable(options['values'])) {\n return Table.from(options);\n }\n return Table.from(options);\n }\n /** @nocollapse */\n static new(...args) {\n const [fs, xs] = selectFieldArgs(args);\n const vs = xs.filter((x) => x instanceof Vector);\n return new RecordBatch(...ensureSameLengthData(new Schema(fs), vs.map((x) => x.data)));\n }\n clone(data, children = this._children) {\n return new RecordBatch(this._schema, data, children);\n }\n concat(...others) {\n const schema = this._schema, chunks = Chunked.flatten(this, ...others);\n return new Table(schema, chunks.map(({ data }) => new RecordBatch(schema, data)));\n }\n get schema() { return this._schema; }\n get numCols() { return this._schema.fields.length; }\n get dictionaries() {\n return this._dictionaries || (this._dictionaries = DictionaryCollector.collect(this));\n }\n select(...columnNames) {\n const nameToIndex = this._schema.fields.reduce((m, f, i) => m.set(f.name, i), new Map());\n return this.selectAt(...columnNames.map((columnName) => nameToIndex.get(columnName)).filter((x) => x > -1));\n }\n selectAt(...columnIndices) {\n const schema = this._schema.selectAt(...columnIndices);\n const childData = columnIndices.map((i) => this.data.childData[i]).filter(Boolean);\n return new RecordBatch(schema, this.length, childData);\n }\n}\n/**\n * An internal class used by the `RecordBatchReader` and `RecordBatchWriter`\n * implementations to differentiate between a stream with valid zero-length\n * RecordBatches, and a stream with a Schema message, but no RecordBatches.\n * @see https://github.com/apache/arrow/pull/4373\n * @ignore\n * @private\n */\n/* tslint:disable:class-name */\nexport class _InternalEmptyPlaceholderRecordBatch extends RecordBatch {\n constructor(schema) {\n super(schema, 0, schema.fields.map((f) => Data.new(f.type, 0, 0, 0)));\n }\n}\n/** @ignore */\nclass DictionaryCollector extends Visitor {\n constructor() {\n super(...arguments);\n this.dictionaries = new Map();\n }\n static collect(batch) {\n return new DictionaryCollector().visit(batch.data, new Struct(batch.schema.fields)).dictionaries;\n }\n visit(data, type) {\n if (DataType.isDictionary(type)) {\n return this.visitDictionary(data, type);\n }\n else {\n data.childData.forEach((child, i) => this.visit(child, type.children[i].type));\n }\n return this;\n }\n visitDictionary(data, type) {\n const dictionary = data.dictionary;\n if (dictionary && dictionary.length > 0) {\n this.dictionaries.set(type.id, dictionary);\n }\n return this;\n }\n}\n\n//# sourceMappingURL=recordbatch.mjs.map\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\nimport { Vector } from '../vector';\nimport { MessageHeader } from '../enum';\nimport { Footer } from './metadata/file';\nimport streamAdapters from '../io/adapters';\nimport { ByteStream, AsyncByteStream } from '../io/stream';\nimport { RandomAccessFile, AsyncRandomAccessFile } from '../io/file';\nimport { VectorLoader, JSONVectorLoader } from '../visitor/vectorloader';\nimport { RecordBatch, _InternalEmptyPlaceholderRecordBatch } from '../recordbatch';\nimport { ITERATOR_DONE, ReadableInterop, } from '../io/interfaces';\nimport { MessageReader, AsyncMessageReader, JSONMessageReader, checkForMagicArrowString, magicLength, magicAndPadding, magicX2AndPadding } from './message';\nimport { isPromise, isIterable, isAsyncIterable, isIteratorResult, isArrowJSON, isFileHandle, isFetchResponse, isReadableDOMStream, isReadableNodeStream } from '../util/compat';\nexport class RecordBatchReader extends ReadableInterop {\n constructor(impl) {\n super();\n this._impl = impl;\n }\n get closed() { return this._impl.closed; }\n get schema() { return this._impl.schema; }\n get autoDestroy() { return this._impl.autoDestroy; }\n get dictionaries() { return this._impl.dictionaries; }\n get numDictionaries() { return this._impl.numDictionaries; }\n get numRecordBatches() { return this._impl.numRecordBatches; }\n get footer() { return this._impl.isFile() ? this._impl.footer : null; }\n isSync() { return this._impl.isSync(); }\n isAsync() { return this._impl.isAsync(); }\n isFile() { return this._impl.isFile(); }\n isStream() { return this._impl.isStream(); }\n next() {\n return this._impl.next();\n }\n throw(value) {\n return this._impl.throw(value);\n }\n return(value) {\n return this._impl.return(value);\n }\n cancel() {\n return this._impl.cancel();\n }\n reset(schema) {\n this._impl.reset(schema);\n this._DOMStream = undefined;\n this._nodeStream = undefined;\n return this;\n }\n open(options) {\n const opening = this._impl.open(options);\n return isPromise(opening) ? opening.then(() => this) : this;\n }\n readRecordBatch(index) {\n return this._impl.isFile() ? this._impl.readRecordBatch(index) : null;\n }\n [Symbol.iterator]() {\n return this._impl[Symbol.iterator]();\n }\n [Symbol.asyncIterator]() {\n return this._impl[Symbol.asyncIterator]();\n }\n toDOMStream() {\n return streamAdapters.toDOMStream((this.isSync()\n ? { [Symbol.iterator]: () => this }\n : { [Symbol.asyncIterator]: () => this }));\n }\n toNodeStream() {\n return streamAdapters.toNodeStream((this.isSync()\n ? { [Symbol.iterator]: () => this }\n : { [Symbol.asyncIterator]: () => this }), { objectMode: true });\n }\n /** @nocollapse */\n // @ts-ignore\n static throughNode(options) {\n throw new Error(`\"throughNode\" not available in this environment`);\n }\n /** @nocollapse */\n static throughDOM(\n // @ts-ignore\n writableStrategy, \n // @ts-ignore\n readableStrategy) {\n throw new Error(`\"throughDOM\" not available in this environment`);\n }\n /** @nocollapse */\n static from(source) {\n if (source instanceof RecordBatchReader) {\n return source;\n }\n else if (isArrowJSON(source)) {\n return fromArrowJSON(source);\n }\n else if (isFileHandle(source)) {\n return fromFileHandle(source);\n }\n else if (isPromise(source)) {\n return (async () => await RecordBatchReader.from(await source))();\n }\n else if (isFetchResponse(source) || isReadableDOMStream(source) || isReadableNodeStream(source) || isAsyncIterable(source)) {\n return fromAsyncByteStream(new AsyncByteStream(source));\n }\n return fromByteStream(new ByteStream(source));\n }\n /** @nocollapse */\n static readAll(source) {\n if (source instanceof RecordBatchReader) {\n return source.isSync() ? readAllSync(source) : readAllAsync(source);\n }\n else if (isArrowJSON(source) || ArrayBuffer.isView(source) || isIterable(source) || isIteratorResult(source)) {\n return readAllSync(source);\n }\n return readAllAsync(source);\n }\n}\n//\n// Since TS is a structural type system, we define the following subclass stubs\n// so that concrete types exist to associate with with the interfaces below.\n//\n// The implementation for each RecordBatchReader is hidden away in the set of\n// `RecordBatchReaderImpl` classes in the second half of this file. This allows\n// us to export a single RecordBatchReader class, and swap out the impl based\n// on the io primitives or underlying arrow (JSON, file, or stream) at runtime.\n//\n// Async/await makes our job a bit harder, since it forces everything to be\n// either fully sync or fully async. This is why the logic for the reader impls\n// has been duplicated into both sync and async variants. Since the RBR\n// delegates to its impl, an RBR with an AsyncRecordBatchFileReaderImpl for\n// example will return async/await-friendly Promises, but one with a (sync)\n// RecordBatchStreamReaderImpl will always return values. Nothing should be\n// different about their logic, aside from the async handling. This is also why\n// this code looks highly structured, as it should be nearly identical and easy\n// to follow.\n//\n/** @ignore */\nexport class RecordBatchStreamReader extends RecordBatchReader {\n constructor(_impl) {\n super(_impl);\n this._impl = _impl;\n }\n [Symbol.iterator]() { return this._impl[Symbol.iterator](); }\n async *[Symbol.asyncIterator]() { yield* this[Symbol.iterator](); }\n}\n/** @ignore */\nexport class AsyncRecordBatchStreamReader extends RecordBatchReader {\n constructor(_impl) {\n super(_impl);\n this._impl = _impl;\n }\n [Symbol.iterator]() { throw new Error(`AsyncRecordBatchStreamReader is not Iterable`); }\n [Symbol.asyncIterator]() { return this._impl[Symbol.asyncIterator](); }\n}\n/** @ignore */\nexport class RecordBatchFileReader extends RecordBatchStreamReader {\n constructor(_impl) {\n super(_impl);\n this._impl = _impl;\n }\n}\n/** @ignore */\nexport class AsyncRecordBatchFileReader extends AsyncRecordBatchStreamReader {\n constructor(_impl) {\n super(_impl);\n this._impl = _impl;\n }\n}\n/** @ignore */\nclass RecordBatchReaderImpl {\n constructor(dictionaries = new Map()) {\n this.closed = false;\n this.autoDestroy = true;\n this._dictionaryIndex = 0;\n this._recordBatchIndex = 0;\n this.dictionaries = dictionaries;\n }\n get numDictionaries() { return this._dictionaryIndex; }\n get numRecordBatches() { return this._recordBatchIndex; }\n isSync() { return false; }\n isAsync() { return false; }\n isFile() { return false; }\n isStream() { return false; }\n reset(schema) {\n this._dictionaryIndex = 0;\n this._recordBatchIndex = 0;\n this.schema = schema;\n this.dictionaries = new Map();\n return this;\n }\n _loadRecordBatch(header, body) {\n return new RecordBatch(this.schema, header.length, this._loadVectors(header, body, this.schema.fields));\n }\n _loadDictionaryBatch(header, body) {\n const { id, isDelta, data } = header;\n const { dictionaries, schema } = this;\n const dictionary = dictionaries.get(id);\n if (isDelta || !dictionary) {\n const type = schema.dictionaries.get(id);\n return (dictionary && isDelta ? dictionary.concat(Vector.new(this._loadVectors(data, body, [type])[0])) :\n Vector.new(this._loadVectors(data, body, [type])[0]));\n }\n return dictionary;\n }\n _loadVectors(header, body, types) {\n return new VectorLoader(body, header.nodes, header.buffers, this.dictionaries).visitMany(types);\n }\n}\n/** @ignore */\nclass RecordBatchStreamReaderImpl extends RecordBatchReaderImpl {\n constructor(source, dictionaries) {\n super(dictionaries);\n this._reader = !isArrowJSON(source)\n ? new MessageReader(this._handle = source)\n : new JSONMessageReader(this._handle = source);\n }\n isSync() { return true; }\n isStream() { return true; }\n [Symbol.iterator]() {\n return this;\n }\n cancel() {\n if (!this.closed && (this.closed = true)) {\n this.reset()._reader.return();\n this._reader = null;\n this.dictionaries = null;\n }\n }\n open(options) {\n if (!this.closed) {\n this.autoDestroy = shouldAutoDestroy(this, options);\n if (!(this.schema || (this.schema = this._reader.readSchema()))) {\n this.cancel();\n }\n }\n return this;\n }\n throw(value) {\n if (!this.closed && this.autoDestroy && (this.closed = true)) {\n return this.reset()._reader.throw(value);\n }\n return ITERATOR_DONE;\n }\n return(value) {\n if (!this.closed && this.autoDestroy && (this.closed = true)) {\n return this.reset()._reader.return(value);\n }\n return ITERATOR_DONE;\n }\n next() {\n if (this.closed) {\n return ITERATOR_DONE;\n }\n let message, { _reader: reader } = this;\n while (message = this._readNextMessageAndValidate()) {\n if (message.isSchema()) {\n this.reset(message.header());\n }\n else if (message.isRecordBatch()) {\n this._recordBatchIndex++;\n const header = message.header();\n const buffer = reader.readMessageBody(message.bodyLength);\n const recordBatch = this._loadRecordBatch(header, buffer);\n return { done: false, value: recordBatch };\n }\n else if (message.isDictionaryBatch()) {\n this._dictionaryIndex++;\n const header = message.header();\n const buffer = reader.readMessageBody(message.bodyLength);\n const vector = this._loadDictionaryBatch(header, buffer);\n this.dictionaries.set(header.id, vector);\n }\n }\n if (this.schema && this._recordBatchIndex === 0) {\n this._recordBatchIndex++;\n return { done: false, value: new _InternalEmptyPlaceholderRecordBatch(this.schema) };\n }\n return this.return();\n }\n _readNextMessageAndValidate(type) {\n return this._reader.readMessage(type);\n }\n}\n/** @ignore */\nclass AsyncRecordBatchStreamReaderImpl extends RecordBatchReaderImpl {\n constructor(source, dictionaries) {\n super(dictionaries);\n this._reader = new AsyncMessageReader(this._handle = source);\n }\n isAsync() { return true; }\n isStream() { return true; }\n [Symbol.asyncIterator]() {\n return this;\n }\n async cancel() {\n if (!this.closed && (this.closed = true)) {\n await this.reset()._reader.return();\n this._reader = null;\n this.dictionaries = null;\n }\n }\n async open(options) {\n if (!this.closed) {\n this.autoDestroy = shouldAutoDestroy(this, options);\n if (!(this.schema || (this.schema = (await this._reader.readSchema())))) {\n await this.cancel();\n }\n }\n return this;\n }\n async throw(value) {\n if (!this.closed && this.autoDestroy && (this.closed = true)) {\n return await this.reset()._reader.throw(value);\n }\n return ITERATOR_DONE;\n }\n async return(value) {\n if (!this.closed && this.autoDestroy && (this.closed = true)) {\n return await this.reset()._reader.return(value);\n }\n return ITERATOR_DONE;\n }\n async next() {\n if (this.closed) {\n return ITERATOR_DONE;\n }\n let message, { _reader: reader } = this;\n while (message = await this._readNextMessageAndValidate()) {\n if (message.isSchema()) {\n await this.reset(message.header());\n }\n else if (message.isRecordBatch()) {\n this._recordBatchIndex++;\n const header = message.header();\n const buffer = await reader.readMessageBody(message.bodyLength);\n const recordBatch = this._loadRecordBatch(header, buffer);\n return { done: false, value: recordBatch };\n }\n else if (message.isDictionaryBatch()) {\n this._dictionaryIndex++;\n const header = message.header();\n const buffer = await reader.readMessageBody(message.bodyLength);\n const vector = this._loadDictionaryBatch(header, buffer);\n this.dictionaries.set(header.id, vector);\n }\n }\n if (this.schema && this._recordBatchIndex === 0) {\n this._recordBatchIndex++;\n return { done: false, value: new _InternalEmptyPlaceholderRecordBatch(this.schema) };\n }\n return await this.return();\n }\n async _readNextMessageAndValidate(type) {\n return await this._reader.readMessage(type);\n }\n}\n/** @ignore */\nclass RecordBatchFileReaderImpl extends RecordBatchStreamReaderImpl {\n constructor(source, dictionaries) {\n super(source instanceof RandomAccessFile ? source : new RandomAccessFile(source), dictionaries);\n }\n get footer() { return this._footer; }\n get numDictionaries() { return this._footer ? this._footer.numDictionaries : 0; }\n get numRecordBatches() { return this._footer ? this._footer.numRecordBatches : 0; }\n isSync() { return true; }\n isFile() { return true; }\n open(options) {\n if (!this.closed && !this._footer) {\n this.schema = (this._footer = this._readFooter()).schema;\n for (const block of this._footer.dictionaryBatches()) {\n block && this._readDictionaryBatch(this._dictionaryIndex++);\n }\n }\n return super.open(options);\n }\n readRecordBatch(index) {\n if (this.closed) {\n return null;\n }\n if (!this._footer) {\n this.open();\n }\n const block = this._footer && this._footer.getRecordBatch(index);\n if (block && this._handle.seek(block.offset)) {\n const message = this._reader.readMessage(MessageHeader.RecordBatch);\n if (message && message.isRecordBatch()) {\n const header = message.header();\n const buffer = this._reader.readMessageBody(message.bodyLength);\n const recordBatch = this._loadRecordBatch(header, buffer);\n return recordBatch;\n }\n }\n return null;\n }\n _readDictionaryBatch(index) {\n const block = this._footer && this._footer.getDictionaryBatch(index);\n if (block && this._handle.seek(block.offset)) {\n const message = this._reader.readMessage(MessageHeader.DictionaryBatch);\n if (message && message.isDictionaryBatch()) {\n const header = message.header();\n const buffer = this._reader.readMessageBody(message.bodyLength);\n const vector = this._loadDictionaryBatch(header, buffer);\n this.dictionaries.set(header.id, vector);\n }\n }\n }\n _readFooter() {\n const { _handle } = this;\n const offset = _handle.size - magicAndPadding;\n const length = _handle.readInt32(offset);\n const buffer = _handle.readAt(offset - length, length);\n return Footer.decode(buffer);\n }\n _readNextMessageAndValidate(type) {\n if (!this._footer) {\n this.open();\n }\n if (this._footer && this._recordBatchIndex < this.numRecordBatches) {\n const block = this._footer && this._footer.getRecordBatch(this._recordBatchIndex);\n if (block && this._handle.seek(block.offset)) {\n return this._reader.readMessage(type);\n }\n }\n return null;\n }\n}\n/** @ignore */\nclass AsyncRecordBatchFileReaderImpl extends AsyncRecordBatchStreamReaderImpl {\n constructor(source, ...rest) {\n const byteLength = typeof rest[0] !== 'number' ? rest.shift() : undefined;\n const dictionaries = rest[0] instanceof Map ? rest.shift() : undefined;\n super(source instanceof AsyncRandomAccessFile ? source : new AsyncRandomAccessFile(source, byteLength), dictionaries);\n }\n get footer() { return this._footer; }\n get numDictionaries() { return this._footer ? this._footer.numDictionaries : 0; }\n get numRecordBatches() { return this._footer ? this._footer.numRecordBatches : 0; }\n isFile() { return true; }\n isAsync() { return true; }\n async open(options) {\n if (!this.closed && !this._footer) {\n this.schema = (this._footer = await this._readFooter()).schema;\n for (const block of this._footer.dictionaryBatches()) {\n block && await this._readDictionaryBatch(this._dictionaryIndex++);\n }\n }\n return await super.open(options);\n }\n async readRecordBatch(index) {\n if (this.closed) {\n return null;\n }\n if (!this._footer) {\n await this.open();\n }\n const block = this._footer && this._footer.getRecordBatch(index);\n if (block && (await this._handle.seek(block.offset))) {\n const message = await this._reader.readMessage(MessageHeader.RecordBatch);\n if (message && message.isRecordBatch()) {\n const header = message.header();\n const buffer = await this._reader.readMessageBody(message.bodyLength);\n const recordBatch = this._loadRecordBatch(header, buffer);\n return recordBatch;\n }\n }\n return null;\n }\n async _readDictionaryBatch(index) {\n const block = this._footer && this._footer.getDictionaryBatch(index);\n if (block && (await this._handle.seek(block.offset))) {\n const message = await this._reader.readMessage(MessageHeader.DictionaryBatch);\n if (message && message.isDictionaryBatch()) {\n const header = message.header();\n const buffer = await this._reader.readMessageBody(message.bodyLength);\n const vector = this._loadDictionaryBatch(header, buffer);\n this.dictionaries.set(header.id, vector);\n }\n }\n }\n async _readFooter() {\n const { _handle } = this;\n _handle._pending && await _handle._pending;\n const offset = _handle.size - magicAndPadding;\n const length = await _handle.readInt32(offset);\n const buffer = await _handle.readAt(offset - length, length);\n return Footer.decode(buffer);\n }\n async _readNextMessageAndValidate(type) {\n if (!this._footer) {\n await this.open();\n }\n if (this._footer && this._recordBatchIndex < this.numRecordBatches) {\n const block = this._footer.getRecordBatch(this._recordBatchIndex);\n if (block && await this._handle.seek(block.offset)) {\n return await this._reader.readMessage(type);\n }\n }\n return null;\n }\n}\n/** @ignore */\nclass RecordBatchJSONReaderImpl extends RecordBatchStreamReaderImpl {\n constructor(source, dictionaries) {\n super(source, dictionaries);\n }\n _loadVectors(header, body, types) {\n return new JSONVectorLoader(body, header.nodes, header.buffers, this.dictionaries).visitMany(types);\n }\n}\n//\n// Define some helper functions and static implementations down here. There's\n// a bit of branching in the static methods that can lead to the same routines\n// being executed, so we've broken those out here for readability.\n//\n/** @ignore */\nfunction shouldAutoDestroy(self, options) {\n return options && (typeof options['autoDestroy'] === 'boolean') ? options['autoDestroy'] : self['autoDestroy'];\n}\n/** @ignore */\nfunction* readAllSync(source) {\n const reader = RecordBatchReader.from(source);\n try {\n if (!reader.open({ autoDestroy: false }).closed) {\n do {\n yield reader;\n } while (!(reader.reset().open()).closed);\n }\n }\n finally {\n reader.cancel();\n }\n}\n/** @ignore */\nasync function* readAllAsync(source) {\n const reader = await RecordBatchReader.from(source);\n try {\n if (!(await reader.open({ autoDestroy: false })).closed) {\n do {\n yield reader;\n } while (!(await reader.reset().open()).closed);\n }\n }\n finally {\n await reader.cancel();\n }\n}\n/** @ignore */\nfunction fromArrowJSON(source) {\n return new RecordBatchStreamReader(new RecordBatchJSONReaderImpl(source));\n}\n/** @ignore */\nfunction fromByteStream(source) {\n const bytes = source.peek((magicLength + 7) & ~7);\n return bytes && bytes.byteLength >= 4 ? !checkForMagicArrowString(bytes)\n ? new RecordBatchStreamReader(new RecordBatchStreamReaderImpl(source))\n : new RecordBatchFileReader(new RecordBatchFileReaderImpl(source.read()))\n : new RecordBatchStreamReader(new RecordBatchStreamReaderImpl(function* () { }()));\n}\n/** @ignore */\nasync function fromAsyncByteStream(source) {\n const bytes = await source.peek((magicLength + 7) & ~7);\n return bytes && bytes.byteLength >= 4 ? !checkForMagicArrowString(bytes)\n ? new AsyncRecordBatchStreamReader(new AsyncRecordBatchStreamReaderImpl(source))\n : new RecordBatchFileReader(new RecordBatchFileReaderImpl(await source.read()))\n : new AsyncRecordBatchStreamReader(new AsyncRecordBatchStreamReaderImpl(async function* () { }()));\n}\n/** @ignore */\nasync function fromFileHandle(source) {\n const { size } = await source.stat();\n const file = new AsyncRandomAccessFile(source, size);\n if (size >= magicX2AndPadding) {\n if (checkForMagicArrowString(await file.readAt(0, (magicLength + 7) & ~7))) {\n return new AsyncRecordBatchFileReader(new AsyncRecordBatchFileReaderImpl(file));\n }\n }\n return new AsyncRecordBatchStreamReader(new AsyncRecordBatchStreamReaderImpl(file));\n}\n\n//# sourceMappingURL=reader.mjs.map\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\nimport { Builder } from '../../builder/index';\n/** @ignore */\nexport function builderThroughDOMStream(options) {\n return new BuilderTransform(options);\n}\n/** @ignore */\nexport class BuilderTransform {\n constructor(options) {\n // Access properties by string indexers to defeat closure compiler\n this._numChunks = 0;\n this._finished = false;\n this._bufferedSize = 0;\n const { ['readableStrategy']: readableStrategy, ['writableStrategy']: writableStrategy, ['queueingStrategy']: queueingStrategy = 'count', ...builderOptions } = options;\n this._controller = null;\n this._builder = Builder.new(builderOptions);\n this._getSize = queueingStrategy !== 'bytes' ? chunkLength : chunkByteLength;\n const { ['highWaterMark']: readableHighWaterMark = queueingStrategy === 'bytes' ? 2 ** 14 : 1000 } = { ...readableStrategy };\n const { ['highWaterMark']: writableHighWaterMark = queueingStrategy === 'bytes' ? 2 ** 14 : 1000 } = { ...writableStrategy };\n this['readable'] = new ReadableStream({\n ['cancel']: () => { this._builder.clear(); },\n ['pull']: (c) => { this._maybeFlush(this._builder, this._controller = c); },\n ['start']: (c) => { this._maybeFlush(this._builder, this._controller = c); },\n }, {\n 'highWaterMark': readableHighWaterMark,\n 'size': queueingStrategy !== 'bytes' ? chunkLength : chunkByteLength,\n });\n this['writable'] = new WritableStream({\n ['abort']: () => { this._builder.clear(); },\n ['write']: () => { this._maybeFlush(this._builder, this._controller); },\n ['close']: () => { this._maybeFlush(this._builder.finish(), this._controller); },\n }, {\n 'highWaterMark': writableHighWaterMark,\n 'size': (value) => this._writeValueAndReturnChunkSize(value),\n });\n }\n _writeValueAndReturnChunkSize(value) {\n const bufferedSize = this._bufferedSize;\n this._bufferedSize = this._getSize(this._builder.append(value));\n return this._bufferedSize - bufferedSize;\n }\n _maybeFlush(builder, controller) {\n if (controller === null) {\n return;\n }\n if (this._bufferedSize >= controller.desiredSize) {\n ++this._numChunks && this._enqueue(controller, builder.toVector());\n }\n if (builder.finished) {\n if (builder.length > 0 || this._numChunks === 0) {\n ++this._numChunks && this._enqueue(controller, builder.toVector());\n }\n if (!this._finished && (this._finished = true)) {\n this._enqueue(controller, null);\n }\n }\n }\n _enqueue(controller, chunk) {\n this._bufferedSize = 0;\n this._controller = null;\n chunk === null ? controller.close() : controller.enqueue(chunk);\n }\n}\n/** @ignore */ const chunkLength = (chunk) => chunk.length;\n/** @ignore */ const chunkByteLength = (chunk) => chunk.byteLength;\n\n//# sourceMappingURL=builder.mjs.map\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\nimport { DictionaryVector } from '../vector/dictionary';\n/** @ignore */\nexport class Value {\n eq(other) {\n if (!(other instanceof Value)) {\n other = new Literal(other);\n }\n return new Equals(this, other);\n }\n le(other) {\n if (!(other instanceof Value)) {\n other = new Literal(other);\n }\n return new LTeq(this, other);\n }\n ge(other) {\n if (!(other instanceof Value)) {\n other = new Literal(other);\n }\n return new GTeq(this, other);\n }\n lt(other) {\n return new Not(this.ge(other));\n }\n gt(other) {\n return new Not(this.le(other));\n }\n ne(other) {\n return new Not(this.eq(other));\n }\n}\n/** @ignore */\nexport class Literal extends Value {\n constructor(v) {\n super();\n this.v = v;\n }\n}\n/** @ignore */\nexport class Col extends Value {\n constructor(name) {\n super();\n this.name = name;\n }\n bind(batch) {\n if (!this.colidx) {\n // Assume column index doesn't change between calls to bind\n //this.colidx = cols.findIndex(v => v.name.indexOf(this.name) != -1);\n this.colidx = -1;\n const fields = batch.schema.fields;\n for (let idx = -1; ++idx < fields.length;) {\n if (fields[idx].name === this.name) {\n this.colidx = idx;\n break;\n }\n }\n if (this.colidx < 0) {\n throw new Error(`Failed to bind Col \"${this.name}\"`);\n }\n }\n const vec = this.vector = batch.getChildAt(this.colidx);\n return (idx) => vec.get(idx);\n }\n}\n/** @ignore */\nexport class Predicate {\n and(...expr) { return new And(this, ...expr); }\n or(...expr) { return new Or(this, ...expr); }\n not() { return new Not(this); }\n}\n/** @ignore */\nexport class ComparisonPredicate extends Predicate {\n constructor(left, right) {\n super();\n this.left = left;\n this.right = right;\n }\n bind(batch) {\n if (this.left instanceof Literal) {\n if (this.right instanceof Literal) {\n return this._bindLitLit(batch, this.left, this.right);\n }\n else { // right is a Col\n return this._bindLitCol(batch, this.left, this.right);\n }\n }\n else { // left is a Col\n if (this.right instanceof Literal) {\n return this._bindColLit(batch, this.left, this.right);\n }\n else { // right is a Col\n return this._bindColCol(batch, this.left, this.right);\n }\n }\n }\n}\n/** @ignore */\nexport class CombinationPredicate extends Predicate {\n constructor(...children) {\n super();\n this.children = children;\n }\n}\n// add children to prototype so it doesn't get mangled in es2015/umd\nCombinationPredicate.prototype.children = Object.freeze([]); // freeze for safety\n/** @ignore */\nexport class And extends CombinationPredicate {\n constructor(...children) {\n // Flatten any Ands\n children = children.reduce((accum, p) => {\n return accum.concat(p instanceof And ? p.children : p);\n }, []);\n super(...children);\n }\n bind(batch) {\n const bound = this.children.map((p) => p.bind(batch));\n return (idx, batch) => bound.every((p) => p(idx, batch));\n }\n}\n/** @ignore */\nexport class Or extends CombinationPredicate {\n constructor(...children) {\n // Flatten any Ors\n children = children.reduce((accum, p) => {\n return accum.concat(p instanceof Or ? p.children : p);\n }, []);\n super(...children);\n }\n bind(batch) {\n const bound = this.children.map((p) => p.bind(batch));\n return (idx, batch) => bound.some((p) => p(idx, batch));\n }\n}\n/** @ignore */\nexport class Equals extends ComparisonPredicate {\n _bindLitLit(_batch, left, right) {\n const rtrn = left.v == right.v;\n return () => rtrn;\n }\n _bindColCol(batch, left, right) {\n const left_func = left.bind(batch);\n const right_func = right.bind(batch);\n return (idx, batch) => left_func(idx, batch) == right_func(idx, batch);\n }\n _bindColLit(batch, col, lit) {\n const col_func = col.bind(batch);\n if (col.vector instanceof DictionaryVector) {\n let key;\n const vector = col.vector;\n if (vector.dictionary !== this.lastDictionary) {\n key = vector.reverseLookup(lit.v);\n this.lastDictionary = vector.dictionary;\n this.lastKey = key;\n }\n else {\n key = this.lastKey;\n }\n if (key === -1) {\n // the value doesn't exist in the dictionary - always return\n // false\n // TODO: special-case of PredicateFunc that encapsulates this\n // \"always false\" behavior. That way filtering operations don't\n // have to bother checking\n return () => false;\n }\n else {\n return (idx) => {\n return vector.getKey(idx) === key;\n };\n }\n }\n else {\n return (idx, cols) => col_func(idx, cols) == lit.v;\n }\n }\n _bindLitCol(batch, lit, col) {\n // Equals is commutative\n return this._bindColLit(batch, col, lit);\n }\n}\n/** @ignore */\nexport class LTeq extends ComparisonPredicate {\n _bindLitLit(_batch, left, right) {\n const rtrn = left.v <= right.v;\n return () => rtrn;\n }\n _bindColCol(batch, left, right) {\n const left_func = left.bind(batch);\n const right_func = right.bind(batch);\n return (idx, cols) => left_func(idx, cols) <= right_func(idx, cols);\n }\n _bindColLit(batch, col, lit) {\n const col_func = col.bind(batch);\n return (idx, cols) => col_func(idx, cols) <= lit.v;\n }\n _bindLitCol(batch, lit, col) {\n const col_func = col.bind(batch);\n return (idx, cols) => lit.v <= col_func(idx, cols);\n }\n}\n/** @ignore */\nexport class GTeq extends ComparisonPredicate {\n _bindLitLit(_batch, left, right) {\n const rtrn = left.v >= right.v;\n return () => rtrn;\n }\n _bindColCol(batch, left, right) {\n const left_func = left.bind(batch);\n const right_func = right.bind(batch);\n return (idx, cols) => left_func(idx, cols) >= right_func(idx, cols);\n }\n _bindColLit(batch, col, lit) {\n const col_func = col.bind(batch);\n return (idx, cols) => col_func(idx, cols) >= lit.v;\n }\n _bindLitCol(batch, lit, col) {\n const col_func = col.bind(batch);\n return (idx, cols) => lit.v >= col_func(idx, cols);\n }\n}\n/** @ignore */\nexport class Not extends Predicate {\n constructor(child) {\n super();\n this.child = child;\n }\n bind(batch) {\n const func = this.child.bind(batch);\n return (idx, batch) => !func(idx, batch);\n }\n}\n/** @ignore */\nexport class CustomPredicate extends Predicate {\n constructor(next, bind_) {\n super();\n this.next = next;\n this.bind_ = bind_;\n }\n bind(batch) {\n this.bind_(batch);\n return this.next;\n }\n}\nexport function lit(v) { return new Literal(v); }\nexport function col(n) { return new Col(n); }\nexport function and(...p) { return new And(...p); }\nexport function or(...p) { return new Or(...p); }\nexport function custom(next, bind) {\n return new CustomPredicate(next, bind);\n}\n\n//# sourceMappingURL=predicate.mjs.map\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\nimport { Table } from '../table';\nimport { IntVector } from '../vector/int';\nimport { Field, Schema } from '../schema';\nimport { Col } from './predicate';\nimport { RecordBatch } from '../recordbatch';\nimport { DataType } from '../type';\nTable.prototype.countBy = function (name) { return new DataFrame(this.chunks).countBy(name); };\nTable.prototype.scan = function (next, bind) { return new DataFrame(this.chunks).scan(next, bind); };\nTable.prototype.scanReverse = function (next, bind) { return new DataFrame(this.chunks).scanReverse(next, bind); };\nTable.prototype.filter = function (predicate) { return new DataFrame(this.chunks).filter(predicate); };\nexport class DataFrame extends Table {\n filter(predicate) {\n return new FilteredDataFrame(this.chunks, predicate);\n }\n scan(next, bind) {\n const batches = this.chunks, numBatches = batches.length;\n for (let batchIndex = -1; ++batchIndex < numBatches;) {\n // load batches\n const batch = batches[batchIndex];\n if (bind) {\n bind(batch);\n }\n // yield all indices\n for (let index = -1, numRows = batch.length; ++index < numRows;) {\n next(index, batch);\n }\n }\n }\n scanReverse(next, bind) {\n const batches = this.chunks, numBatches = batches.length;\n for (let batchIndex = numBatches; --batchIndex >= 0;) {\n // load batches\n const batch = batches[batchIndex];\n if (bind) {\n bind(batch);\n }\n // yield all indices\n for (let index = batch.length; --index >= 0;) {\n next(index, batch);\n }\n }\n }\n countBy(name) {\n const batches = this.chunks, numBatches = batches.length;\n const count_by = typeof name === 'string' ? new Col(name) : name;\n // Assume that all dictionary batches are deltas, which means that the\n // last record batch has the most complete dictionary\n count_by.bind(batches[numBatches - 1]);\n const vector = count_by.vector;\n if (!DataType.isDictionary(vector.type)) {\n throw new Error('countBy currently only supports dictionary-encoded columns');\n }\n const countByteLength = Math.ceil(Math.log(vector.length) / Math.log(256));\n const CountsArrayType = countByteLength == 4 ? Uint32Array :\n countByteLength >= 2 ? Uint16Array : Uint8Array;\n const counts = new CountsArrayType(vector.dictionary.length);\n for (let batchIndex = -1; ++batchIndex < numBatches;) {\n // load batches\n const batch = batches[batchIndex];\n // rebind the countBy Col\n count_by.bind(batch);\n const keys = count_by.vector.indices;\n // yield all indices\n for (let index = -1, numRows = batch.length; ++index < numRows;) {\n let key = keys.get(index);\n if (key !== null) {\n counts[key]++;\n }\n }\n }\n return new CountByResult(vector.dictionary, IntVector.from(counts));\n }\n}\n/** @ignore */\nexport class CountByResult extends Table {\n constructor(values, counts) {\n const schema = new Schema([\n new Field('values', values.type),\n new Field('counts', counts.type)\n ]);\n super(new RecordBatch(schema, counts.length, [values, counts]));\n }\n toJSON() {\n const values = this.getColumnAt(0);\n const counts = this.getColumnAt(1);\n const result = {};\n for (let i = -1; ++i < this.length;) {\n result[values.get(i)] = counts.get(i);\n }\n return result;\n }\n}\n/** @ignore */\nexport class FilteredDataFrame extends DataFrame {\n constructor(batches, predicate) {\n super(batches);\n this._predicate = predicate;\n }\n scan(next, bind) {\n // inlined version of this:\n // this.parent.scan((idx, columns) => {\n // if (this.predicate(idx, columns)) next(idx, columns);\n // });\n const batches = this._chunks;\n const numBatches = batches.length;\n for (let batchIndex = -1; ++batchIndex < numBatches;) {\n // load batches\n const batch = batches[batchIndex];\n const predicate = this._predicate.bind(batch);\n let isBound = false;\n // yield all indices\n for (let index = -1, numRows = batch.length; ++index < numRows;) {\n if (predicate(index, batch)) {\n // bind batches lazily - if predicate doesn't match anything\n // in the batch we don't need to call bind on the batch\n if (bind && !isBound) {\n bind(batch);\n isBound = true;\n }\n next(index, batch);\n }\n }\n }\n }\n scanReverse(next, bind) {\n const batches = this._chunks;\n const numBatches = batches.length;\n for (let batchIndex = numBatches; --batchIndex >= 0;) {\n // load batches\n const batch = batches[batchIndex];\n const predicate = this._predicate.bind(batch);\n let isBound = false;\n // yield all indices\n for (let index = batch.length; --index >= 0;) {\n if (predicate(index, batch)) {\n // bind batches lazily - if predicate doesn't match anything\n // in the batch we don't need to call bind on the batch\n if (bind && !isBound) {\n bind(batch);\n isBound = true;\n }\n next(index, batch);\n }\n }\n }\n }\n count() {\n // inlined version of this:\n // let sum = 0;\n // this.parent.scan((idx, columns) => {\n // if (this.predicate(idx, columns)) ++sum;\n // });\n // return sum;\n let sum = 0;\n const batches = this._chunks;\n const numBatches = batches.length;\n for (let batchIndex = -1; ++batchIndex < numBatches;) {\n // load batches\n const batch = batches[batchIndex];\n const predicate = this._predicate.bind(batch);\n // yield all indices\n for (let index = -1, numRows = batch.length; ++index < numRows;) {\n if (predicate(index, batch)) {\n ++sum;\n }\n }\n }\n return sum;\n }\n *[Symbol.iterator]() {\n // inlined version of this:\n // this.parent.scan((idx, columns) => {\n // if (this.predicate(idx, columns)) next(idx, columns);\n // });\n const batches = this._chunks;\n const numBatches = batches.length;\n for (let batchIndex = -1; ++batchIndex < numBatches;) {\n // load batches\n const batch = batches[batchIndex];\n // TODO: bind batches lazily\n // If predicate doesn't match anything in the batch we don't need\n // to bind the callback\n const predicate = this._predicate.bind(batch);\n // yield all indices\n for (let index = -1, numRows = batch.length; ++index < numRows;) {\n if (predicate(index, batch)) {\n yield batch.get(index);\n }\n }\n }\n }\n filter(predicate) {\n return new FilteredDataFrame(this._chunks, this._predicate.and(predicate));\n }\n countBy(name) {\n const batches = this._chunks, numBatches = batches.length;\n const count_by = typeof name === 'string' ? new Col(name) : name;\n // Assume that all dictionary batches are deltas, which means that the\n // last record batch has the most complete dictionary\n count_by.bind(batches[numBatches - 1]);\n const vector = count_by.vector;\n if (!DataType.isDictionary(vector.type)) {\n throw new Error('countBy currently only supports dictionary-encoded columns');\n }\n const countByteLength = Math.ceil(Math.log(vector.length) / Math.log(256));\n const CountsArrayType = countByteLength == 4 ? Uint32Array :\n countByteLength >= 2 ? Uint16Array : Uint8Array;\n const counts = new CountsArrayType(vector.dictionary.length);\n for (let batchIndex = -1; ++batchIndex < numBatches;) {\n // load batches\n const batch = batches[batchIndex];\n const predicate = this._predicate.bind(batch);\n // rebind the countBy Col\n count_by.bind(batch);\n const keys = count_by.vector.indices;\n // yield all indices\n for (let index = -1, numRows = batch.length; ++index < numRows;) {\n let key = keys.get(index);\n if (key !== null && predicate(index, batch)) {\n counts[key]++;\n }\n }\n }\n return new CountByResult(vector.dictionary, IntVector.from(counts));\n }\n}\n\n//# sourceMappingURL=dataframe.mjs.map\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\nimport streamAdapters from './io/adapters';\nimport { Builder } from './builder/index';\nimport { RecordBatchReader } from './ipc/reader';\nimport { RecordBatchWriter } from './ipc/writer';\nimport { toDOMStream } from './io/whatwg/iterable';\nimport { builderThroughDOMStream } from './io/whatwg/builder';\nimport { recordBatchReaderThroughDOMStream } from './io/whatwg/reader';\nimport { recordBatchWriterThroughDOMStream } from './io/whatwg/writer';\nstreamAdapters.toDOMStream = toDOMStream;\nBuilder['throughDOM'] = builderThroughDOMStream;\nRecordBatchReader['throughDOM'] = recordBatchReaderThroughDOMStream;\nRecordBatchWriter['throughDOM'] = recordBatchWriterThroughDOMStream;\nexport { ArrowType, DateUnit, IntervalUnit, MessageHeader, MetadataVersion, Precision, TimeUnit, Type, UnionMode, BufferType, Data, DataType, Null, Bool, Int, Int8, Int16, Int32, Int64, Uint8, Uint16, Uint32, Uint64, Float, Float16, Float32, Float64, Utf8, Binary, FixedSizeBinary, Date_, DateDay, DateMillisecond, Timestamp, TimestampSecond, TimestampMillisecond, TimestampMicrosecond, TimestampNanosecond, Time, TimeSecond, TimeMillisecond, TimeMicrosecond, TimeNanosecond, Decimal, List, Struct, Union, DenseUnion, SparseUnion, Dictionary, Interval, IntervalDayTime, IntervalYearMonth, FixedSizeList, Map_, Table, Column, Schema, Field, Visitor, Vector, BaseVector, BinaryVector, BoolVector, Chunked, DateVector, DateDayVector, DateMillisecondVector, DecimalVector, DictionaryVector, FixedSizeBinaryVector, FixedSizeListVector, FloatVector, Float16Vector, Float32Vector, Float64Vector, IntervalVector, IntervalDayTimeVector, IntervalYearMonthVector, IntVector, Int8Vector, Int16Vector, Int32Vector, Int64Vector, Uint8Vector, Uint16Vector, Uint32Vector, Uint64Vector, ListVector, MapVector, NullVector, StructVector, TimestampVector, TimestampSecondVector, TimestampMillisecondVector, TimestampMicrosecondVector, TimestampNanosecondVector, TimeVector, TimeSecondVector, TimeMillisecondVector, TimeMicrosecondVector, TimeNanosecondVector, UnionVector, DenseUnionVector, SparseUnionVector, Utf8Vector, ByteStream, AsyncByteStream, AsyncByteQueue, RecordBatchReader, RecordBatchFileReader, RecordBatchStreamReader, AsyncRecordBatchFileReader, AsyncRecordBatchStreamReader, RecordBatchWriter, RecordBatchFileWriter, RecordBatchStreamWriter, RecordBatchJSONWriter, MessageReader, AsyncMessageReader, JSONMessageReader, Message, RecordBatch, DataFrame, FilteredDataFrame, CountByResult, predicate, util, Builder, BinaryBuilder, BoolBuilder, DateBuilder, DateDayBuilder, DateMillisecondBuilder, DecimalBuilder, DictionaryBuilder, FixedSizeBinaryBuilder, FixedSizeListBuilder, FloatBuilder, Float16Builder, Float32Builder, Float64Builder, IntervalBuilder, IntervalDayTimeBuilder, IntervalYearMonthBuilder, IntBuilder, Int8Builder, Int16Builder, Int32Builder, Int64Builder, Uint8Builder, Uint16Builder, Uint32Builder, Uint64Builder, ListBuilder, MapBuilder, NullBuilder, StructBuilder, TimestampBuilder, TimestampSecondBuilder, TimestampMillisecondBuilder, TimestampMicrosecondBuilder, TimestampNanosecondBuilder, TimeBuilder, TimeSecondBuilder, TimeMillisecondBuilder, TimeMicrosecondBuilder, TimeNanosecondBuilder, UnionBuilder, DenseUnionBuilder, SparseUnionBuilder, Utf8Builder, } from './Arrow';\n\n//# sourceMappingURL=Arrow.dom.mjs.map\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\nimport { toUint8Array } from '../../util/buffer';\nimport { isIterable, isAsyncIterable } from '../../util/compat';\n/** @ignore */\nexport function toDOMStream(source, options) {\n if (isAsyncIterable(source)) {\n return asyncIterableAsReadableDOMStream(source, options);\n }\n if (isIterable(source)) {\n return iterableAsReadableDOMStream(source, options);\n }\n /* istanbul ignore next */\n throw new Error(`toDOMStream() must be called with an Iterable or AsyncIterable`);\n}\n/** @ignore */\nfunction iterableAsReadableDOMStream(source, options) {\n let it = null;\n const bm = (options && options.type === 'bytes') || false;\n const hwm = options && options.highWaterMark || (2 ** 24);\n return new ReadableStream({\n ...options,\n start(controller) { next(controller, it || (it = source[Symbol.iterator]())); },\n pull(controller) { it ? (next(controller, it)) : controller.close(); },\n cancel() { (it && (it.return && it.return()) || true) && (it = null); }\n }, { highWaterMark: bm ? hwm : undefined, ...options });\n function next(controller, it) {\n let buf;\n let r = null;\n let size = controller.desiredSize || null;\n while (!(r = it.next(bm ? size : null)).done) {\n if (ArrayBuffer.isView(r.value) && (buf = toUint8Array(r.value))) {\n size != null && bm && (size = size - buf.byteLength + 1);\n r.value = buf;\n }\n controller.enqueue(r.value);\n if (size != null && --size <= 0) {\n return;\n }\n }\n controller.close();\n }\n}\n/** @ignore */\nfunction asyncIterableAsReadableDOMStream(source, options) {\n let it = null;\n const bm = (options && options.type === 'bytes') || false;\n const hwm = options && options.highWaterMark || (2 ** 24);\n return new ReadableStream({\n ...options,\n async start(controller) { await next(controller, it || (it = source[Symbol.asyncIterator]())); },\n async pull(controller) { it ? (await next(controller, it)) : controller.close(); },\n async cancel() { (it && (it.return && await it.return()) || true) && (it = null); },\n }, { highWaterMark: bm ? hwm : undefined, ...options });\n async function next(controller, it) {\n let buf;\n let r = null;\n let size = controller.desiredSize || null;\n while (!(r = await it.next(bm ? size : null)).done) {\n if (ArrayBuffer.isView(r.value) && (buf = toUint8Array(r.value))) {\n size != null && bm && (size = size - buf.byteLength + 1);\n r.value = buf;\n }\n controller.enqueue(r.value);\n if (size != null && --size <= 0) {\n return;\n }\n }\n controller.close();\n }\n}\n\n//# sourceMappingURL=iterable.mjs.map\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\nimport { AsyncByteQueue } from '../../io/stream';\nimport { RecordBatchReader } from '../../ipc/reader';\n/** @ignore */\nexport function recordBatchReaderThroughDOMStream(writableStrategy, readableStrategy) {\n const queue = new AsyncByteQueue();\n let reader = null;\n const readable = new ReadableStream({\n async cancel() { await queue.close(); },\n async start(controller) { await next(controller, reader || (reader = await open())); },\n async pull(controller) { reader ? await next(controller, reader) : controller.close(); }\n });\n return { writable: new WritableStream(queue, { 'highWaterMark': 2 ** 14, ...writableStrategy }), readable };\n async function open() {\n return await (await RecordBatchReader.from(queue)).open(readableStrategy);\n }\n async function next(controller, reader) {\n let size = controller.desiredSize;\n let r = null;\n while (!(r = await reader.next()).done) {\n controller.enqueue(r.value);\n if (size != null && --size <= 0) {\n return;\n }\n }\n controller.close();\n }\n}\n\n//# sourceMappingURL=reader.mjs.map\n","// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements. See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership. The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License. You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied. See the License for the\n// specific language governing permissions and limitations\n// under the License.\nimport { AsyncByteStream } from '../../io/stream';\n/** @ignore */\nexport function recordBatchWriterThroughDOMStream(writableStrategy, readableStrategy) {\n const writer = new this(writableStrategy);\n const reader = new AsyncByteStream(writer);\n const readable = new ReadableStream({\n type: 'bytes',\n async cancel() { await reader.cancel(); },\n async pull(controller) { await next(controller); },\n async start(controller) { await next(controller); },\n }, { 'highWaterMark': 2 ** 14, ...readableStrategy });\n return { writable: new WritableStream(writer, writableStrategy), readable };\n async function next(controller) {\n let buf = null;\n let size = controller.desiredSize;\n while (buf = await reader.read(size || null)) {\n controller.enqueue(buf);\n if (size != null && (size -= buf.byteLength) <= 0) {\n return;\n }\n }\n controller.close();\n }\n}\n\n//# sourceMappingURL=writer.mjs.map\n","/**\r\n * @license\r\n * Copyright 2018-2019 Streamlit Inc.\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nimport { Table, Type } from \"apache-arrow\";\r\nexport class ArrowTable {\r\n constructor(dataBuffer, indexBuffer, columnsBuffer, styler) {\r\n this.getCell = (rowIndex, columnIndex) => {\r\n const isBlankCell = rowIndex < this.headerRows && columnIndex < this.headerColumns;\r\n const isIndexCell = rowIndex >= this.headerRows && columnIndex < this.headerColumns;\r\n const isColumnsCell = rowIndex < this.headerRows && columnIndex >= this.headerColumns;\r\n if (isBlankCell) {\r\n const classNames = [\"blank\"];\r\n if (columnIndex > 0) {\r\n classNames.push(\"level\" + rowIndex);\r\n }\r\n return {\r\n type: \"blank\",\r\n classNames: classNames.join(\" \"),\r\n content: \"\",\r\n };\r\n }\r\n else if (isColumnsCell) {\r\n const dataColumnIndex = columnIndex - this.headerColumns;\r\n const classNames = [\r\n \"col_heading\",\r\n \"level\" + rowIndex,\r\n \"col\" + dataColumnIndex,\r\n ];\r\n return {\r\n type: \"columns\",\r\n classNames: classNames.join(\" \"),\r\n content: this.getContent(this.columnsTable, dataColumnIndex, rowIndex),\r\n };\r\n }\r\n else if (isIndexCell) {\r\n const dataRowIndex = rowIndex - this.headerRows;\r\n const classNames = [\r\n \"row_heading\",\r\n \"level\" + columnIndex,\r\n \"row\" + dataRowIndex,\r\n ];\r\n return {\r\n type: \"index\",\r\n id: `T_${this.uuid}level${columnIndex}_row${dataRowIndex}`,\r\n classNames: classNames.join(\" \"),\r\n content: this.getContent(this.indexTable, dataRowIndex, columnIndex),\r\n };\r\n }\r\n else {\r\n const dataRowIndex = rowIndex - this.headerRows;\r\n const dataColumnIndex = columnIndex - this.headerColumns;\r\n const classNames = [\r\n \"data\",\r\n \"row\" + dataRowIndex,\r\n \"col\" + dataColumnIndex,\r\n ];\r\n const content = this.styler\r\n ? this.getContent(this.styler.displayValuesTable, dataRowIndex, dataColumnIndex)\r\n : this.getContent(this.dataTable, dataRowIndex, dataColumnIndex);\r\n return {\r\n type: \"data\",\r\n id: `T_${this.uuid}row${dataRowIndex}_col${dataColumnIndex}`,\r\n classNames: classNames.join(\" \"),\r\n content,\r\n };\r\n }\r\n };\r\n this.getContent = (table, rowIndex, columnIndex) => {\r\n const column = table.getColumnAt(columnIndex);\r\n if (column === null) {\r\n return \"\";\r\n }\r\n const columnTypeId = this.getColumnTypeId(table, columnIndex);\r\n switch (columnTypeId) {\r\n case Type.Timestamp: {\r\n return this.nanosToDate(column.get(rowIndex));\r\n }\r\n default: {\r\n return column.get(rowIndex);\r\n }\r\n }\r\n };\r\n this.dataTable = Table.from(dataBuffer);\r\n this.indexTable = Table.from(indexBuffer);\r\n this.columnsTable = Table.from(columnsBuffer);\r\n this.styler = styler\r\n ? {\r\n caption: styler.get(\"caption\"),\r\n displayValuesTable: Table.from(styler.get(\"displayValues\")),\r\n styles: styler.get(\"styles\"),\r\n uuid: styler.get(\"uuid\"),\r\n }\r\n : undefined;\r\n }\r\n get rows() {\r\n return this.indexTable.length + this.columnsTable.numCols;\r\n }\r\n get columns() {\r\n return this.indexTable.numCols + this.columnsTable.length;\r\n }\r\n get headerRows() {\r\n return this.rows - this.dataRows;\r\n }\r\n get headerColumns() {\r\n return this.columns - this.dataColumns;\r\n }\r\n get dataRows() {\r\n return this.dataTable.length;\r\n }\r\n get dataColumns() {\r\n return this.dataTable.numCols;\r\n }\r\n get uuid() {\r\n return this.styler && this.styler.uuid;\r\n }\r\n get caption() {\r\n return this.styler && this.styler.caption;\r\n }\r\n get styles() {\r\n return this.styler && this.styler.styles;\r\n }\r\n get table() {\r\n return this.dataTable;\r\n }\r\n get index() {\r\n return this.indexTable;\r\n }\r\n get columnTable() {\r\n return this.columnsTable;\r\n }\r\n /**\r\n * Returns apache-arrow specific typeId of column.\r\n */\r\n getColumnTypeId(table, columnIndex) {\r\n return table.schema.fields[columnIndex].type.typeId;\r\n }\r\n nanosToDate(nanos) {\r\n return new Date(nanos / 1e6);\r\n }\r\n}\r\n","/**\r\n * @license\r\n * Copyright 2018-2020 Streamlit Inc.\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n// Safari doesn't support the EventTarget class, so we use a shim.\r\nimport { EventTarget } from \"event-target-shim\";\r\nimport { ArrowTable } from \"./ArrowTable\";\r\n/** Messages from Component -> Streamlit */\r\nvar ComponentMessageType;\r\n(function (ComponentMessageType) {\r\n // A component sends this message when it's ready to receive messages\r\n // from Streamlit. Streamlit won't send any messages until it gets this.\r\n // Data: { apiVersion: number }\r\n ComponentMessageType[\"COMPONENT_READY\"] = \"streamlit:componentReady\";\r\n // The component has a new widget value. Send it back to Streamlit, which\r\n // will then re-run the app.\r\n // Data: { value: any }\r\n ComponentMessageType[\"SET_COMPONENT_VALUE\"] = \"streamlit:setComponentValue\";\r\n // The component has a new height for its iframe.\r\n // Data: { height: number }\r\n ComponentMessageType[\"SET_FRAME_HEIGHT\"] = \"streamlit:setFrameHeight\";\r\n})(ComponentMessageType || (ComponentMessageType = {}));\r\n/**\r\n * Streamlit communication API.\r\n *\r\n * Components can send data to Streamlit via the functions defined here,\r\n * and receive data from Streamlit via the `events` property.\r\n */\r\nexport class Streamlit {\r\n}\r\n/**\r\n * The Streamlit component API version we're targetting.\r\n * There's currently only 1!\r\n */\r\nStreamlit.API_VERSION = 1;\r\nStreamlit.RENDER_EVENT = \"streamlit:render\";\r\n/** Dispatches events received from Streamlit. */\r\nStreamlit.events = new EventTarget();\r\nStreamlit.registeredMessageListener = false;\r\n/**\r\n * Tell Streamlit that the component is ready to start receiving data.\r\n * Streamlit will defer emitting RENDER events until it receives the\r\n * COMPONENT_READY message.\r\n */\r\nStreamlit.setComponentReady = () => {\r\n if (!Streamlit.registeredMessageListener) {\r\n // Register for message events if we haven't already\r\n window.addEventListener(\"message\", Streamlit.onMessageEvent);\r\n Streamlit.registeredMessageListener = true;\r\n }\r\n Streamlit.sendBackMsg(ComponentMessageType.COMPONENT_READY, {\r\n apiVersion: Streamlit.API_VERSION,\r\n });\r\n};\r\n/**\r\n * Report the component's height to Streamlit.\r\n * This should be called every time the component changes its DOM - that is,\r\n * when it's first loaded, and any time it updates.\r\n */\r\nStreamlit.setFrameHeight = (height) => {\r\n if (height === undefined) {\r\n // `height` is optional. If undefined, it defaults to scrollHeight,\r\n // which is the entire height of the element minus its border,\r\n // scrollbar, and margin.\r\n height = document.body.scrollHeight;\r\n }\r\n if (height === Streamlit.lastFrameHeight) {\r\n // Don't bother updating if our height hasn't changed.\r\n return;\r\n }\r\n Streamlit.lastFrameHeight = height;\r\n Streamlit.sendBackMsg(ComponentMessageType.SET_FRAME_HEIGHT, { height });\r\n};\r\n/**\r\n * Set the component's value. This value will be returned to the Python\r\n * script, and the script will be re-run.\r\n *\r\n * For example:\r\n *\r\n * JavaScript:\r\n * Streamlit.setComponentValue(\"ahoy!\")\r\n *\r\n * Python:\r\n * value = st.my_component(...)\r\n * st.write(value) # -> \"ahoy!\"\r\n *\r\n * The value must be serializable into JSON.\r\n */\r\nStreamlit.setComponentValue = (value) => {\r\n Streamlit.sendBackMsg(ComponentMessageType.SET_COMPONENT_VALUE, { value });\r\n};\r\n/** Receive a ForwardMsg from the Streamlit app */\r\nStreamlit.onMessageEvent = (event) => {\r\n const type = event.data[\"type\"];\r\n switch (type) {\r\n case Streamlit.RENDER_EVENT:\r\n Streamlit.onRenderMessage(event.data);\r\n break;\r\n }\r\n};\r\n/**\r\n * Handle an untyped Streamlit render event and redispatch it as a\r\n * StreamlitRenderEvent.\r\n */\r\nStreamlit.onRenderMessage = (data) => {\r\n let args = data[\"args\"];\r\n if (args == null) {\r\n console.error(`Got null args in onRenderMessage. This should never happen`);\r\n args = {};\r\n }\r\n // Parse our dataframe arguments with arrow, and merge them into our args dict\r\n const dataframeArgs = data[\"dfs\"] && data[\"dfs\"].length > 0\r\n ? Streamlit.argsDataframeToObject(data[\"dfs\"])\r\n : {};\r\n args = {\r\n ...args,\r\n ...dataframeArgs,\r\n };\r\n const disabled = Boolean(data[\"disabled\"]);\r\n // Dispatch a render event!\r\n const eventData = { disabled, args };\r\n const event = new CustomEvent(Streamlit.RENDER_EVENT, {\r\n detail: eventData,\r\n });\r\n Streamlit.events.dispatchEvent(event);\r\n};\r\nStreamlit.argsDataframeToObject = (argsDataframe) => {\r\n const argsDataframeArrow = argsDataframe.map(({ key, value }) => [key, Streamlit.toArrowTable(value)]);\r\n return Object.fromEntries(argsDataframeArrow);\r\n};\r\nStreamlit.toArrowTable = (df) => {\r\n const { data, index, columns } = df.data;\r\n return new ArrowTable(data, index, columns);\r\n};\r\n/** Post a message to the Streamlit app. */\r\nStreamlit.sendBackMsg = (type, data) => {\r\n window.parent.postMessage({\r\n isStreamlitMessage: true,\r\n type: type,\r\n ...data,\r\n }, \"*\");\r\n};\r\n","\n\n\n\n{#if renderData}\n {#if spreadArgs}\n \n {:else}\n \n {/if}\n{/if}\n","import { onMount, afterUpdate } from \"svelte\";\r\nimport { Streamlit } from \"./streamlit\";\r\n/**\r\n * [Optional] Set Streamlit Svelte Lifecycle functions\r\n *\r\n * You are not required call this function on your Streamlit\r\n * component. If you decide not to call it, you should implement the\r\n * `onMount` and `afterUpdate` functions in your own component,\r\n * so that your plugin properly resizes.\r\n */\r\nexport const setStreamlitLifecycle = () => {\r\n onMount(() => {\r\n // Finally, tell Streamlit to update our initial height. We omit the\r\n // `height` parameter here to have it default to our scrollHeight.\r\n Streamlit.setFrameHeight();\r\n });\r\n afterUpdate(() => {\r\n // We tell Streamlit to update our frameHeight after each update, in\r\n // case it has changed. (This isn't strictly necessary for the example\r\n // because our height stays fixed, but this is a low-cost function, so\r\n // there's no harm in doing it redundantly.)\r\n Streamlit.setFrameHeight();\r\n });\r\n};\r\n","\n\n\n
\n {#each imageUrls as imageUrl}\n \"\"\n {/each}\n
\n\n\n\n\n\n\n\n\n\n","import { WithStreamlitConnection } from \"./streamlit\";\r\nimport ImageGallery from \"./ImageGallery.svelte\";\r\n// \"WithStreamlitConnection\" is a wrapper component. It bootstraps the\r\n// connection between your component and the Streamlit app, and handles\r\n// passing arguments from Python -> Component.\r\n//\r\n// You don't need to edit withStreamlitConnection (but you're welcome to!).\r\nconst imageGallery = new WithStreamlitConnection({\r\n target: document.body,\r\n props: {\r\n /**\r\n * Custom Streamlit component\r\n */\r\n component: ImageGallery,\r\n /**\r\n * Set to false if you want `args` (the named dictionary of arguments passed\r\n * from Python) to be passed as a dictionary to your component.\r\n *\r\n * Default is `true`.\r\n */\r\n spreadArgs: true,\r\n },\r\n});\r\nexport default ImageGallery;\r\n"],"names":["noop","assign","tar","src","k","run","fn","blank_object","Object","create","run_all","fns","forEach","is_function","thing","safe_not_equal","a","b","src_url_equal_anchor","current_component","src_url_equal","element_src","url","document","createElement","href","append_styles","target","style_sheet_id","styles","append_styles_to","node","root","getRootNode","ownerDocument","host","get_root_for_style","getElementById","style","element","id","textContent","appendChild","append","head","append_stylesheet","insert","anchor","insertBefore","detach","parentNode","removeChild","name","empty","data","createTextNode","listen","event","handler","options","addEventListener","removeEventListener","attr","attribute","value","removeAttribute","getAttribute","setAttribute","set_style","key","important","setProperty","set_current_component","component","get_current_component","Error","onMount","$$","on_mount","push","dirty_components","binding_callbacks","render_callbacks","flush_callbacks","resolved_promise","Promise","resolve","update_scheduled","add_render_callback","flushing","seen_callbacks","Set","flush","i","length","update","pop","callback","has","add","clear","fragment","before_update","dirty","p","ctx","after_update","outroing","outros","group_outros","r","c","check_outros","transition_in","block","local","delete","transition_out","o","d","create_component","mount_component","customElement","on_destroy","m","new_on_destroy","map","filter","destroy_component","detaching","make_dirty","then","fill","init","instance","create_fragment","not_equal","props","parent_component","bound","on_disconnect","context","Map","callbacks","skip_bound","ready","ret","rest","hydrate","nodes","Array","from","childNodes","children","l","intro","SvelteComponent","[object Object]","this","$destroy","type","index","indexOf","splice","$$props","obj","$$set","keys","privateData","WeakMap","wrappers","pd","retv","get","console","assert","setCancelFlag","passiveListener","cancelable","canceled","preventDefault","error","Event","eventTarget","set","eventPhase","currentTarget","stopped","immediateStopped","timeStamp","Date","now","defineProperty","enumerable","defineRedirectDescriptor","configurable","defineCallDescriptor","apply","arguments","getWrapper","proto","prototype","wrapper","BaseEvent","CustomEvent","call","constructor","writable","isFunc","getOwnPropertyDescriptor","defineWrapper","getPrototypeOf","isStopped","setPassiveListener","NONE","CAPTURING_PHASE","AT_TARGET","BUBBLING_PHASE","stopPropagation","stopImmediatePropagation","bubbles","Boolean","defaultPrevented","composed","srcElement","cancelBubble","returnValue","window","setPrototypeOf","listenersMap","isObject","x","getListeners","listeners","TypeError","defineEventAttribute","eventTargetPrototype","eventName","listenerType","listener","next","prev","newNode","passive","once","defineEventAttributeDescriptor","defineCustomEventTarget","eventNames","CustomEventTarget","EventTarget","isArray","types","optionsIsObj","capture","undefined","wrappedEvent","wrapEvent","err","handleEvent","setEventPhase","setCurrentTarget","flatbuffers","inRange","min","max","ToDictionary","SIZEOF_SHORT","SIZEOF_INT","FILE_IDENTIFIER_LENGTH","Encoding","UTF8_BYTES","UTF16_STRING","int32","Int32Array","float32","Float32Array","buffer","float64","Float64Array","isLittleEndian","Uint16Array","Uint8Array","Long","low","high","ZERO","toFloat64","equals","other","Builder","opt_initial_size","initial_size","bb","ByteBuffer","allocate","space","minalign","vtable","vtable_in_use","isNested","object_start","vtables","vector_num_elems","force_defaults","capacity","forceDefaults","dataBuffer","asUint8Array","bytes","subarray","position","offset","prep","size","additional_bytes","align_size","old_buf_size","growByteBuffer","pad","byte_size","writeInt8","writeInt16","writeInt32","writeInt64","writeFloat32","writeFloat64","addInt8","addInt16","addInt32","addInt64","addFloat32","addFloat64","addFieldInt8","voffset","defaultValue","slot","addFieldInt16","addFieldInt32","addFieldInt64","addFieldFloat32","addFieldFloat64","addFieldOffset","addOffset","addFieldStruct","nested","notNested","new_buf_size","nbb","setPosition","startObject","numfields","endObject","vtableloc","trimmed_size","len","existing_vtable","vt1","outer_loop","vt2","readInt16","j","finish","root_table","opt_file_identifier","file_identifier","charCodeAt","requiredField","table","field","table_start","vtable_start","readInt32","startVector","elem_size","num_elems","alignment","endVector","createString","s","utf8","codePoint","createLong","bytes_","position_","readInt8","readUint8","readUint16","readUint32","readInt64","readUint64","readFloat32","readFloat64","writeUint8","writeUint16","writeUint32","writeUint64","getBufferIdentifier","result","String","fromCharCode","__offset","bb_pos","vtable_offset","__union","t","__string","opt_encoding","__indirect","__vector","__vector_len","__has_identifier","ident","Stream","tokens","slice","endOfStream","read","shift","prepend","token","unshift","decoderError","fatal","opt_code_point","TextDecoder","encoding","toLowerCase","_streaming","_BOMseen","_decoder","_fatal","_ignoreBOM","TextEncoder","_encoder","_options","UTF8Decoder","utf8_code_point","utf8_bytes_seen","utf8_bytes_needed","utf8_lower_boundary","utf8_upper_boundary","stream","bite","code_point","UTF8Encoder","count","temp","decode","input","ArrayBuffer","byteOffset","byteLength","input_stream","code_points","cp","codePointsToString","encode","opt_string","string","n","u","stringToCodePoints","_Buffer","Buffer","useNativeEncoders","decodeUtf8","decoder","toUint8Array","toString","TextDecoderPolyfill","encodeUtf8","encoder","TextEncoderPolyfill","ITERATOR_DONE","freeze","done","ArrowJSON","_json","schema","batches","dictionaries","ReadableInterop","_getDOMStream","tee","_getNodeStream","pipe","pipeTo","duplex","pipeThrough","_DOMStream","toDOMStream","_nodeStream","toNodeStream","AsyncQueue","super","_values","resolvers","_closedPromise","_closedPromiseResolve","closed","reason","return","_ensureOpen","_error","reject","Symbol","asyncIterator","streamAdapters","_","abort","close","_args","BigIntCtor","BigIntAvailable","BigIntUnavailableError","BigIntUnavailable","asIntN","asUintN","BigInt","BigInt64ArrayCtor","BigInt64ArrayAvailable","BigInt64ArrayUnavailableError","BigInt64Array","BYTES_PER_ELEMENT","BigUint64ArrayCtor","BigUint64ArrayAvailable","BigUint64ArrayUnavailableError","BigUint64Array","isBoolean","isFunction","isPromise","isIterable","iterator","isAsyncIterable","isArrowJSON","isIteratorResult","isFileHandle","isNumber","isFetchResponse","isReadableDOMStream","isReadableNodeStream","SharedArrayBuf","SharedArrayBuffer","memcpy","source","targetByteOffset","sourceByteLength","targetByteLength","dst","Math","joinUint8Arrays","chunks","sliced","xOffset","yOffset","xLen","yLen","y","collapseContiguousByteRanges","reduce","Infinity","toArrayBufferView","ArrayBufferViewCtor","isView","toInt32Array","toBigInt64Array","toBigUint64Array","pump","toArrayBufferViewIterator","ArrayCtor","wrap","buffers","it","toUint8ArrayIterator","async","toArrayBufferViewAsyncIterator","emit","toUint8ArrayAsyncIterator","rebaseValueOffsets","valueOffsets","compareArrayLike","fromIterable","cmd","threw","bufferLength","isNaN","e","throw","fromAsyncIterable","fromDOMStream","AdaptiveByteReader","releaseLock","fromNodeStream","events","onEvent","race","isFinite","evt","destroy","cleanup","byobReader","defaultReader","supportsBYOB","reader","getBYOBReader","getDefaultReader","catch","readFromBYOBReader","mode","readInto","AbstractVector","org","apache","arrow","flatbuf","MetadataVersion","UnionMode","Precision","DateUnit","TimeUnit","IntervalUnit","Type","Endianness","Null","__init","builder","startNull","endNull","Struct_","startStruct_","endStruct_","List","startList","endList","LargeList","startLargeList","endLargeList","FixedSizeList","listSize","startFixedSizeList","addListSize","endFixedSizeList","keysSorted","startMap","addKeysSorted","endMap","Union","Sparse","typeIdsOffset","numElems","startUnion","addMode","addTypeIds","endUnion","Int","bitWidth","isSigned","startInt","addBitWidth","addIsSigned","endInt","FloatingPoint","HALF","precision","startFloatingPoint","addPrecision","endFloatingPoint","Utf8","startUtf8","endUtf8","Binary","startBinary","endBinary","LargeUtf8","startLargeUtf8","endLargeUtf8","LargeBinary","startLargeBinary","endLargeBinary","FixedSizeBinary","byteWidth","startFixedSizeBinary","addByteWidth","endFixedSizeBinary","Bool","startBool","endBool","Decimal","scale","startDecimal","addScale","endDecimal","MILLISECOND","unit","startDate","addUnit","endDate","Time","startTime","endTime","Timestamp","SECOND","optionalEncoding","timezoneOffset","startTimestamp","addTimezone","endTimestamp","Interval","YEAR_MONTH","startInterval","endInterval","Duration","startDuration","endDuration","KeyValue","keyOffset","valueOffset","startKeyValue","addKey","addValue","endKeyValue","DictionaryEncoding","indexTypeOffset","isOrdered","startDictionaryEncoding","addId","addIndexType","addIsOrdered","endDictionaryEncoding","Field","nameOffset","nullable","typeType","typeOffset","dictionaryOffset","childrenOffset","customMetadataOffset","startField","addName","addNullable","addTypeType","addType","addDictionary","addChildren","addCustomMetadata","endField","Schema","Little","endianness","fieldsOffset","startSchema","addEndianness","addFields","endSchema","NS7624605610262437867.org","MessageHeader","FieldNode","null_count","RecordBatch","nodesOffset","buffersOffset","startRecordBatch","addLength","addNodes","addBuffers","endRecordBatch","DictionaryBatch","dataOffset","isDelta","startDictionaryBatch","addData","addIsDelta","endDictionaryBatch","Message","V1","version","headerType","headerOffset","bodyLength","startMessage","addVersion","addHeaderType","addHeader","addBodyLength","endMessage","BufferType","Schema_.org","Message_.org","getBool","_data","_index","byte","bit","getBit","setBool","truncateBitmap","bitmap","alignedSize","packBools","iterateBits","values","xs","begin","byteIndex","remaining","popcnt_bit_range","lhs","rhs","sum","rhsInside","lhsInside","popcnt_array","arr","cnt","pos","view","DataView","popcnt_uint32","getUint32","getUint16","getUint8","uint32","Visitor","args","visit","getVisitFn","throwIfNotFound","visitor","dtype","Data","Vector","inferDType","DataType","visitNull","visitBool","visitInt","Int8","visitInt8","Int16","visitInt16","Int32","visitInt32","Int64","visitInt64","Uint8","visitUint8","Uint16","visitUint16","Uint32","visitUint32","Uint64","visitUint64","Float","visitFloat","Float16","visitFloat16","Float32","visitFloat32","Float64","visitFloat64","visitUtf8","visitBinary","visitFixedSizeBinary","visitDate","DateDay","visitDateDay","DateMillisecond","visitDateMillisecond","visitTimestamp","TimestampSecond","visitTimestampSecond","TimestampMillisecond","visitTimestampMillisecond","TimestampMicrosecond","visitTimestampMicrosecond","TimestampNanosecond","visitTimestampNanosecond","visitTime","TimeSecond","visitTimeSecond","TimeMillisecond","visitTimeMillisecond","TimeMicrosecond","visitTimeMicrosecond","TimeNanosecond","visitTimeNanosecond","visitDecimal","visitList","Struct","visitStruct","visitUnion","DenseUnion","visitDenseUnion","SparseUnion","visitSparseUnion","Dictionary","visitDictionary","visitInterval","IntervalDayTime","visitIntervalDayTime","IntervalYearMonth","visitIntervalYearMonth","visitFixedSizeList","visitMap","_node","typeId","SINGLE","DOUBLE","MICROSECOND","NANOSECOND","DAY","DAY_TIME","Dense","TypeComparator","compareFields","fields","others","every","f","compareField","compareConstructor","compareAny","compareInt","compareFloat","compareDate","compareTimestamp","timezone","compareTime","compareUnion","typeIds","compareInterval","indices","dictionary","comparer","toStringTag","ArrayType","Int_","Int8Array","Int16Array","Uint32Array","Date_","Time_","Timestamp_","Interval_","child","valueType","valueField","join","Union_","typeIdToChildIndex","idx","Map_","keyType","getId","atomicDictionaryId","strideForType","nullCount","childData","floor","_nullCount","stride","nullBitmap","childStride","_sliceBuffers","clone","_sliceChildren","newLength","VALIDITY","TYPE","OFFSET","DATA","valueOffsetsOrChildren","valueToString","toPrimitive","JSON","stringify","createIsValidFunction","nullValues","fnBody","noNaNs","valueToCase","Function","roundLengthUpToNearest64Bytes","BPE","BufferBuilder","_resize","reservedLength","reservedByteLength","extra","reserved","array","sliceOrExtendArray","DataBufferBuilder","reserve","BitmapBufferBuilder","numValid","numInvalid","val","cur","OffsetsBufferBuilder","WideBufferBuilder","ArrayType64","_ArrayType64","buffer64","nulls","finished","_nulls","_isValid","queueingStrategy","highWaterMark","sizeProperty","numChunks","new","toVector","throughIterable","throughAsyncIterable","numChildren","_offsets","_typeIds","setValid","isValid","setValue","_setValue","valid","offsets","last","FixedWidthBuilder","opts","VariableWidthBuilder","_pendingLength","pending","_pending","current","_flush","pendingLength","_flushPending","BoolBuilder","NullBuilder","DateBuilder","DateDayBuilder","DateMillisecondBuilder","DecimalBuilder","DictionaryBuilder","dictionaryHashFunction","hashFn","_dictionaryOffset","_keysToIndices","valueToKey","keysToIndices","_dictionary","curr","concat","FixedSizeBinaryBuilder","f64","u32","uint16ToFloat64","h","expo","sigf","sign","NaN","float64ToUint16","FloatBuilder","Float16Builder","Float32Builder","Float64Builder","isArrowBigNumSymbol","for","BigNum","SignedBigNum","UnsignedBigNum","DecimalBigNum","bignumToNumber","bn","hi","lo","signed","words","number","bignumToString","bignumToBigInt","decimalToString","digits","base64","base32","checks","reverse","toJSON","valueOf","hint","TypedArray","BigIntArray","BN","num","IntBuilder","Int8Builder","Int16Builder","Int32Builder","Int64Builder","toBigInt","values64","Uint8Builder","Uint16Builder","Uint32Builder","Uint64Builder","memo","TimeBuilder","TimeSecondBuilder","TimeMillisecondBuilder","TimeMicrosecondBuilder","TimeNanosecondBuilder","TimestampBuilder","TimestampSecondBuilder","TimestampMillisecondBuilder","TimestampMicrosecondBuilder","TimestampNanosecondBuilder","IntervalBuilder","IntervalDayTimeBuilder","IntervalYearMonthBuilder","BinaryBuilder","Utf8Builder","Run","kParent","kRowIndex","kKeyToIdx","kIdxToVal","kCustomInspect","Row","parent","numKeys","ktoi","itov","getValue","getIndex","ki","vi","v","kr","vr","callbackfn","thisArg","str","defineProperties","MapRow","createRowProxy","getChildAt","StructRow","defineRowProxyProperties","findIndex","desc","row","getter","setter","hasOwnProperty","Proxy","getKey","RowProxyHandler","isExtensible","deleteProperty","preventExtensions","ownKeys","receiver","Reflect","tmp","clampRange","end","big0","isNaNFast","createElementComparator","search","typeofSearch","valueOfSearch","comparators","createSubElementsComparator","creatMapComparator","createArrayLikeComparator","createVectorComparator","createObjectComparator","compareArray","compareObject","vec","compareVector","lKeyItr","rKeyItr","rValItr","rVal","lKey","rKey","Chunked","vectors","calculateOffsets","_type","_chunks","_chunkOffsets","_length","_numChildren","selectChunkArgs","flatten","VectorName","chunk","isDictionary","_indices","_sliceInternal","columns","_children","vector","mid","isValidInternal","getInternal","self","indexOfInternal","toArray","arraySet","typedSet","chunkIndex","fromIndex","start","found","slices","chunkOffsets","chunkLength","chunkOffset","to","Column","_field","SingleChunkColumn","some","metadata","column","_chunk","selectArgs","Ctor","vals","_selectArgs","selectFieldArgs","_selectFieldArgs","_selectChunkArgs","res","selectVectorChildrenArgs","_selectVectorChildrenArgs","toKeysAndValues","entries","fieldIndex","valueIndex","generateDictionaryMap","compareSchemas","columnNames","names","columnIndices","curFields","mergeMaps","newFields","f2","newDictionaries","m1","m2","ListBuilder","_run","bind","FixedSizeListBuilder","childIndex","MapBuilder","StructBuilder","UnionBuilder","_valueToChildTypeId","childTypeId","SparseUnionBuilder","DenseUnionBuilder","SetVisitor","setEpochMsToMillisecondsLong","epochMs","setVariableWidthBytes","setDateDay","setEpochMsToDays","setDateMillisecond","setNumeric","setFloat16","setNumericX2","long","setTimestampSecond","setTimestampMillisecond","setTimestampMicrosecond","setEpochMsToMicrosecondsLong","setTimestampNanosecond","setEpochMsToNanosecondsLong","setTimeSecond","setTimeMillisecond","setTimeMicrosecond","setTimeNanosecond","setDenseUnion","setSparseUnion","setIntervalDayTime","setIntervalYearMonth","itr","_setStructVectorValue","_setStructArrayValue","_setStructObjectValue","newBuilder","getBuilderConstructor","defaultOptions","getChildOptions","T","setVisitor","Footer","Block","schemaOffset","dictionariesOffset","recordBatchesOffset","startFooter","addSchema","addDictionaries","addRecordBatches","endFooter","metaDataLength","_Block","File_.org","_Footer","Footer_","V4","recordBatches","dictionaryBatches","_recordBatches","_dictionaryBatches","buf","footer","getRootAsFooter","OffHeapFooter","startRecordBatchesVector","numRecordBatches","rb","FileBlock","startDictionariesVector","numDictionaries","db","dictionaryBatchesOffset","finishFooterBuffer","getRecordBatch","getDictionaryBatch","_footer","recordBatchesLength","dictionariesLength","fileBlock","createBlock","AsyncByteQueue","write","sync","ByteStream","ByteStreamSource","peek","AsyncByteStream","AsyncByteStreamSource","body","cancel","RandomAccessFile","readAt","getInt32","nBytes","AsyncRandomAccessFile","file","_handle","stat","bytesRead","intAsHex","kPowersOfTen","BaseInt64","L","R","product","lessThan","_times","_plus","out_buffer","fromString","out","posn","group","parseInt","substr","multiple","times","plus","left","right","this_high","other_high","negate","startsWith","Int128","L0","L1","L2","L3","R0","R1","R2","R3","multiply","sums","VectorLoader","nodesIndex","buffersIndex","nextFieldNode","readNullBitmap","readData","readOffsets","visitMany","readTypeIds","readDictionary","nextBufferRange","JSONVectorLoader","sources","isTimestamp","isInt","isTime","isDate","convertArray","isDecimal","isBinary","isFixedSizeBinary","joined","binaryDataFromJSON","isBool","isUtf8","startTypeIdsVector","createTypeIdsVector","indexType","recordBatchFromJSON","fieldNodesFromJSON","fieldNodes","validity","buffersFromJSON","BufferRegion","fieldChildrenFromJSON","fromJSON","customMetadataFromJSON","_metadata","indexTypeFromJSON","typeFromJSON","_Field","_Schema","_Message","_KeyValue","_FieldNode","_Endianness","_RecordBatch","_DictionaryBatch","header","_version","_headerType","_createHeader","_bodyLength","msg","message","messageHeaderFromJSON","_message","getRootAsMessage","decodeMessageHeader","isSchema","isRecordBatch","isDictionaryBatch","finishMessageBuffer","_nodes","_buffers","_id","_isDelta","decodeFieldChildren","childrenLength","decodeCustomMetadata","entry","customMetadataLength","customMetadata","decodeIndexType","decodeFieldType","typeIdsArray","typeAssembler","childOffsets","childrenVectorOffset","createChildrenVector","metadataOffset","createCustomMetadataVector","dictType","dictMeta","fieldOffsets","startFieldsVector","fieldsVectorOffset","createFieldsVector","platformIsLittleEndian","Big","_schema","fieldsLength","decodeSchemaFields","schemaFieldsFromJSON","recordBatch","startNodesVector","nodesVectorOffset","startBuffersVector","b_","buffersVectorOffset","batch","nodesLength","decodeFieldNodes","bufferRegions","buffersLength","decodeBuffers","dictionaryBatch","createFieldNode","createBuffer","setInt16","invalidMessageType","nullMessage","invalidMessageMetadata","expected","actual","invalidMessageBodyLength","MessageReader","readMetadataLength","readMetadata","throwIfNull","readMessage","PADDING","metadataLength","AsyncMessageReader","JSONMessageReader","_body","_batchIndex","_dictionaryIndex","flattenDataSources","MAGIC","checkForMagicArrowString","magicLength","magicAndPadding","magicX2AndPadding","VectorAssembler","_byteLength","_bufferRegions","assembler","vectorChildren","assembleResult","RangeError","isNull","addBuffer","_nullV","assembleFlatVector","assembleFlatListVector","firstOffset","lastOffset","assembleListVector","assembleNestedVector","maxChildTypeId","childLengths","shiftedOffsets","unshiftedOffsets","childLength","RecordBatchWriter","_position","_started","_sink","_dictionaryBlocks","_recordBatchBlocks","_dictionaryDeltaOffsets","autoDestroy","writeLegacyIpcFormat","_autoDestroy","_writeLegacyIpcFormat","writableStrategy","readableStrategy","writeAll","writeAllAsync","reset","sink","isWritableNodeStream","objectMode","_writeFooter","compareTo","_writeSchema","payload","Table","_InternalEmptyPlaceholderRecordBatch","_writeRecordBatch","flatbufferSize","prefixSize","nPaddingBytes","_write","of","_writePadding","_writeMessage","assemble","metadata.RecordBatch","_writeDictionaries","_writeBodyBuffers","metadata.DictionaryBatch","padding","_writeDictionaryBatch","RecordBatchStreamWriter","writer","RecordBatchFileWriter","_writeMagic","noopBuf","nullBufs","bitmapLength","distributeVectorsIntoRecordBatches","vecs","batchArgs","numBatches","batchLength","numColumns","Number","POSITIVE_INFINITY","distributeChildData","uniformlyDistributeChunksAcrossRecordBatches","_changeLengthAndBackfillNullBitmap","BaseVector","_bindDataAccessors","isConcatSpreadable","BinaryVector","BoolVector","vectorFromValuesWithType","DateVector","DateDayVector","DateMillisecondVector","DecimalVector","DictionaryVector","FixedSizeBinaryVector","FixedSizeListVector","FloatVector","ArrowType","vectorTypeToDataType","InputType","arrayTypeToDataType","convertTo16Bit","Float16Vector","Float32Vector","Float64Vector","typeCtor","dataCtor","ctor","IntervalVector","IntervalDayTimeVector","IntervalYearMonthVector","IntVector","is64bit","convert32To64Bit","Int8Vector","Int16Vector","Int32Vector","Int64Vector","_values64","Uint8Vector","Uint16Vector","Uint32Vector","Uint64Vector","ListVector","MapVector","NullVector","StructVector","_row","TimestampVector","TimestampSecondVector","TimestampMillisecondVector","TimestampMicrosecondVector","TimestampNanosecondVector","TimeVector","TimeSecondVector","TimeMillisecondVector","TimeMicrosecondVector","TimeNanosecondVector","UnionVector","DenseUnionVector","SparseUnionVector","Utf8Vector","partial0","partial2","GetVisitor","epochMillisecondsLongToMs","epochMillisecondsToDate","getVariableWidthBytes","getDateDay","epochDaysToMs","epochDaysToDate","getDateMillisecond","epochMillisecondsLongToDate","getNumeric","getFloat16","getBigInts","getTimestampSecond","getTimestampMillisecond","getTimestampMicrosecond","epochMicrosecondsLongToMs","getTimestampNanosecond","epochNanosecondsLongToMs","getTimeSecond","getTimeMillisecond","getTimeMicrosecond","getTimeNanosecond","getDenseUnion","getSparseUnion","getIntervalDayTime","getIntervalYearMonth","interval","int32s","_vector","decimal","IndexOfVisitor","indexOfValue","searchElement","indexOfNull","compare","indexOfUnion","IteratorVisitor","vectorIterator","getFn","getVisitor","nullByte","nullBit","nullableIterator","ToArrayVisitor","arrayOfVector","iteratorVisitor","variableWidthColumnErrorMessage","____","visitFields","newDataType","getVectorConstructor","transform","indexOfVisitor","toArrayVisitor","getByteWidth","byteWidthVisitor","wrapNullableSet","VectorCtor","fn.partial2","fn.partial0","partialType0","fromStruct","tableFromIterable","tableFromAsyncIterable","RecordBatchReader","isSync","open","opening","cols","selectColumnArgs","numCols","getColumnAt","getColumnIndex","nameToIndex","selectAt","columnName","oldToNew","newIdx","_f","_fs","fs","vs","batchData","ensureSameLengthData","_dictionaries","DictionaryCollector","collect","impl","_impl","isFile","isAsync","isStream","readRecordBatch","RecordBatchStreamReader","RecordBatchJSONReaderImpl","fromArrowJSON","AsyncRecordBatchFileReader","AsyncRecordBatchFileReaderImpl","AsyncRecordBatchStreamReader","AsyncRecordBatchStreamReaderImpl","fromFileHandle","RecordBatchFileReader","RecordBatchFileReaderImpl","fromAsyncByteStream","RecordBatchStreamReaderImpl","fromByteStream","readAllSync","readAllAsync","RecordBatchReaderImpl","_recordBatchIndex","_loadVectors","_reader","shouldAutoDestroy","readSchema","_readNextMessageAndValidate","readMessageBody","_loadRecordBatch","_loadDictionaryBatch","_readFooter","_readDictionaryBatch","seek","BuilderTransform","_numChunks","_finished","_bufferedSize","builderOptions","_controller","_builder","_getSize","chunkByteLength","readableHighWaterMark","writableHighWaterMark","ReadableStream","pull","_maybeFlush","WritableStream","_writeValueAndReturnChunkSize","bufferedSize","controller","desiredSize","_enqueue","enqueue","Value","Literal","Equals","LTeq","GTeq","Not","ge","le","eq","Col","colidx","Predicate","expr","And","Or","ComparisonPredicate","_bindLitLit","_bindLitCol","_bindColLit","_bindColCol","CombinationPredicate","accum","_batch","rtrn","left_func","right_func","col","lit","col_func","lastDictionary","reverseLookup","lastKey","func","countBy","DataFrame","scan","scanReverse","predicate","FilteredDataFrame","batchIndex","numRows","count_by","countByteLength","ceil","log","counts","CountByResult","_predicate","isBound","and","bm","hwm","asyncIterableAsReadableDOMStream","iterableAsReadableDOMStream","queue","readable","ArrowTable","indexBuffer","columnsBuffer","styler","getCell","rowIndex","columnIndex","isBlankCell","headerRows","headerColumns","isIndexCell","isColumnsCell","classNames","content","dataColumnIndex","getContent","columnsTable","dataRowIndex","uuid","indexTable","displayValuesTable","dataTable","getColumnTypeId","nanosToDate","caption","rows","dataRows","dataColumns","columnTable","nanos","ComponentMessageType","Streamlit","levels","updates","to_null_out","accounted_for","$$scope","spread_props","renderData","width","disabled","spreadArgs","onRenderEvent","detail","RENDER_EVENT","setComponentReady","API_VERSION","registeredMessageListener","onMessageEvent","sendBackMsg","COMPONENT_READY","apiVersion","setFrameHeight","height","scrollHeight","lastFrameHeight","SET_FRAME_HEIGHT","setComponentValue","SET_COMPONENT_VALUE","onRenderMessage","dataframeArgs","argsDataframeToObject","eventData","dispatchEvent","argsDataframe","argsDataframeArrow","toArrowTable","fromEntries","df","postMessage","isStreamlitMessage","setStreamlitLifecycle","iterations","selectedImageUrl","imageUrls","currentSrc","ImageGallery"],"mappings":"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"} \ No newline at end of file