const getFlags = function(fileView, offset, version) { let tagAlterPreservation = false; let fileAlterPreservation = false; let readOnly = false; let containsGroupInfo = false; let isCompressed = false; let isEncrypted = false; let hasBeenUnsynchronized = false; let hasDataLengthIndicator = false; if (version >= 3) { const bits = fileView.getUint16(offset); tagAlterPreservation = readBit(bits, 14); fileAlterPreservation = readBit(bits, 13); readOnly = readBit(bits, 12); containsGroupInfo = readBit(bits, 6); isCompressed = readBit(bits, 3); isEncrypted = readBit(bits, 2); hasBeenUnsynchronized = readBit(bits, 1); hasDataLengthIndicator = readBit(bits, 0); } return { tagAlterPreservation, fileAlterPreservation, readOnly, containsGroupInfo, isCompressed, isEncrypted, hasBeenUnsynchronized, hasDataLengthIndicator }; };
const getMainFlags = function(fileView, offset) { const bits = fileView.getUint8(offset + 5); const hasBeenUnsynchronized = readBit(bits, 7); const isExtended = readBit(bits, 6); const isExperimental = readBit(bits, 5); const hasFooter = readBit(bits, 4); return { hasBeenUnsynchronized, isExtended, isExperimental, hasFooter, invalidBits: (bits & 0xF) !== 0 }; };