diff --git a/CHANGELOG.md b/CHANGELOG.md index 6131b2db5..1df031303 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -36,6 +36,11 @@ the public-API contract. PTS and genuine discontinuities remain conservative, and the last frame has no invented end. WMV3 and other codec qualifications are unchanged. +- **Draft: MPEG1/2 software-cache presentation qualification.** Reuses successor PTS + rather than rounded packet durations. Generated separately coded field pairs now cover + Matroska cache stores and the MPEG-TS parser/decoder; qualification limits and remaining + CI/review gates are in `docs/mpeg-cache-qualification.md`. + - **Failed external secondary-subtitle replacement preserves the active track.** Previously the old track was torn down before the candidate could decode. Preparation now completes before replacing it; decode or bitmap-decoder creation failure leaves the old cues, diff --git a/Scripts/generate-mpeg-field-fixture.py b/Scripts/generate-mpeg-field-fixture.py new file mode 100644 index 000000000..0f7bbebfe --- /dev/null +++ b/Scripts/generate-mpeg-field-fixture.py @@ -0,0 +1,47 @@ +#!/usr/bin/env python3 +"""Generate original MPEG-2 field-picture fixtures; never run by the test suite. + +The external MSSG encoder and its NTSC.par are not redistributed here. +See docs/mpeg-cache-qualification.md for their pinned source and build requirements. +""" +import argparse +import hashlib +import pathlib +import subprocess + +parser = argparse.ArgumentParser(description=__doc__) +parser.add_argument("--encoder", type=pathlib.Path, required=True) +parser.add_argument("--reference-parameters", type=pathlib.Path, required=True) +parser.add_argument("--output-directory", type=pathlib.Path, required=True) +args = parser.parse_args() +encoder = args.encoder.resolve(strict=True) +lines = args.reference_parameters.read_text().splitlines() +if len(lines) < 55 or "field pictures" not in lines[13]: + parser.error("expected NTSC.par from the documented MSSG source revision") +out = args.output_directory.resolve() +out.mkdir(parents=True, exist_ok=True) +if any(out.iterdir()): + parser.error("output directory must be empty") +changes = { + 0: "Generated moving luma pattern, no third-party images", + 1: "frame%d", 2: "-", 5: "stats.txt", 6: "1", 7: "60", + 13: "1", 14: "128", 15: "96", 17: "4", 18: "1000000.0", + 30: "128", 31: "96", +} +for index, value in changes.items(): + lines[index] = value +(out / "fields.par").write_text("\n".join(lines) + "\n") +for frame in range(60): + luma = bytes(40 + ((x // 8 + y // 8 + frame) % 2) * 150 + for y in range(96) for x in range(128)) + (out / f"frame{frame}.yuv").write_bytes(luma + bytes([128]) * (128 * 96 // 2)) +with (out / "encode.log").open("w") as log: + subprocess.run([str(encoder), "fields.par", "fields.m2v"], cwd=out, + stdout=log, stderr=subprocess.STDOUT, check=True) +for suffix in ("mkv", "ts"): + subprocess.run(["ffmpeg", "-v", "warning", "-fflags", "+genpts", "-i", "fields.m2v", + "-map", "0:v:0", "-c", "copy", "-fflags", "+bitexact", "fields." + suffix], + cwd=out, check=True) +for suffix in ("m2v", "mkv", "ts"): + data = (out / ("fields." + suffix)).read_bytes() + print(suffix, len(data), hashlib.sha256(data).hexdigest()) diff --git a/Sources/AetherEngine/Native/SoftwarePlaybackHost.swift b/Sources/AetherEngine/Native/SoftwarePlaybackHost.swift index 3c38eee17..4f8c9c5d2 100644 --- a/Sources/AetherEngine/Native/SoftwarePlaybackHost.swift +++ b/Sources/AetherEngine/Native/SoftwarePlaybackHost.swift @@ -26,6 +26,9 @@ final class SoftwarePlaybackHost { // WMV1/2 decode only I/P pictures (FFmpeg msmpeg4dec.c / wmv2dec.c): no B reorder. // Still hold one successor; never invent the last picture's presentation duration. case AV_CODEC_ID_WMV1.rawValue, AV_CODEC_ID_WMV2.rawValue: return 1 + // Candidate MPEG qualification: see docs/mpeg-cache-qualification.md for field-picture + // evidence and container limits. Missing/late PTS still invalidates the existing model. + case AV_CODEC_ID_MPEG1VIDEO.rawValue, AV_CODEC_ID_MPEG2VIDEO.rawValue: return 32 default: return nil } } diff --git a/Sources/AetherEngine/Native/SoftwareVideoPacketCoverage.swift b/Sources/AetherEngine/Native/SoftwareVideoPacketCoverage.swift index 6f85bfaec..19f0fe0ba 100644 --- a/Sources/AetherEngine/Native/SoftwareVideoPacketCoverage.swift +++ b/Sources/AetherEngine/Native/SoftwareVideoPacketCoverage.swift @@ -23,6 +23,10 @@ import Foundation /// reads a one-bit I/P type. WMV3 is distinct and remains unqualified. Complete packets and valid /// PTS are still required; missing or late timestamps invalidate coverage for these codecs too. /// +/// The MPEG1/2 candidate uses this queue without changing its invalidation rules. +/// Field-picture qualification and its container limits are documented in +/// docs/mpeg-cache-qualification.md. Frame-coded and pulldown fixtures alone do not prove field pairs. +/// /// This metadata-only value neither owns packets nor synchronizes access. The owner must reset it /// together with its packet store on seek/flush/discard. Other codecs must keep their strict packet /// duration coverage unless their presentation reordering has a separately established bound. diff --git a/Tests/AetherEngineTests/Issue613PacketCoverageTests.swift b/Tests/AetherEngineTests/Issue613PacketCoverageTests.swift index fad9383c3..602c4638c 100644 --- a/Tests/AetherEngineTests/Issue613PacketCoverageTests.swift +++ b/Tests/AetherEngineTests/Issue613PacketCoverageTests.swift @@ -79,7 +79,7 @@ struct Issue613PacketCoverageTests { codecID: AV_CODEC_ID_HEVC.rawValue) == 32) #expect(SoftwarePlaybackHost.presentationReorderDepth( codecID: AV_CODEC_ID_VC1.rawValue) == 32) - for other in [AV_CODEC_ID_AV1, AV_CODEC_ID_VP9, AV_CODEC_ID_MPEG2VIDEO, AV_CODEC_ID_WMV3] { + for other in [AV_CODEC_ID_AV1, AV_CODEC_ID_VP9, AV_CODEC_ID_WMV3] { #expect(SoftwarePlaybackHost.presentationReorderDepth(codecID: other.rawValue) == nil) } } diff --git a/Tests/AetherEngineTests/MPEGPacketCoverageTests.swift b/Tests/AetherEngineTests/MPEGPacketCoverageTests.swift new file mode 100644 index 000000000..c9989ac1b --- /dev/null +++ b/Tests/AetherEngineTests/MPEGPacketCoverageTests.swift @@ -0,0 +1,240 @@ +import Foundation +import CoreMedia +import Testing +import AetherLibavcodec +import AetherLibavutil +@testable import AetherEngine + +@Suite("MPEG candidate packet presentation coverage", .timeLimit(.minutes(3)), .offCooperativePool) +struct MPEGPacketCoverageTests { + enum Fixture: String, CaseIterable, Sendable { + case mpeg1, mpeg2, interlaced, pulldown, fields + var id: UInt32 { self == .mpeg1 ? AV_CODEC_ID_MPEG1VIDEO.rawValue : AV_CODEC_ID_MPEG2VIDEO.rawValue } + var count: Int { self == .pulldown || self == .fields ? 60 : 120 } + } + + private final class Packets: @unchecked Sendable { + private let lock = NSLock() + private var index = 0 + let values: [SoftwareStoredPacket] + init(_ values: [SoftwareStoredPacket]) { self.values = values } + func next() -> SoftwareStoredPacket? { + lock.withLock { + guard index < values.count else { return nil } + defer { index += 1 } + return values[index] + } + } + } + + /// Fixed libavcodec, including a true EOF drain. This deliberately does not use the CLI + /// probe's flush/discard operation or claim renderer/deinterlacer/device acceptance. + private func decodedPackets(_ codec: Fixture, transport: Bool = false) throws -> [SoftwareStoredPacket] { + let data = try MPEGCacheFixtures.data(transport ? "fieldsTS" : codec.rawValue) + let demuxer = Demuxer() + try demuxer.open(reader: DataIOReader(data: data), formatHint: transport ? "mpegts" : "matroska") + defer { demuxer.close() } + let video = demuxer.videoStreamIndex + let stream = try #require(demuxer.stream(at: video)) + #expect(stream.pointee.codecpar.pointee.codec_id.rawValue == codec.id) + #expect(stream.pointee.time_base.num == 1 && stream.pointee.time_base.den == (transport ? 90000 : 1000)) + let implementation = try #require(avcodec_find_decoder(stream.pointee.codecpar.pointee.codec_id)) + var context = avcodec_alloc_context3(implementation) + let ctx = try #require(context) + defer { avcodec_free_context(&context) } + try #require(avcodec_parameters_to_context(ctx, stream.pointee.codecpar) >= 0) + ctx.pointee.pkt_timebase = stream.pointee.time_base + ctx.pointee.thread_count = 1 + try #require(avcodec_open2(ctx, implementation, nil) >= 0) + var allocated = av_frame_alloc() + let frame = try #require(allocated) + defer { av_frame_free(&allocated) } + var times: [Int64] = [] + var interlaced = 0 + var repeated = 0 + func receive() throws { + while true { + let result = avcodec_receive_frame(ctx, frame) + if result == FFmpegErr.eagain || result == FFmpegErr.eof { break } + try #require(result >= 0) + times.append(frame.pointee.pts) + if frame.pointee.flags & (1 << 3) != 0 { interlaced += 1 } + if frame.pointee.repeat_pict > 0 { repeated += 1 } + av_frame_unref(frame) + } + } + var packets: [SoftwareStoredPacket] = [] + while let packet = try demuxer.readPacket() { + var owned: UnsafeMutablePointer? = packet + defer { trackedPacketFree(&owned) } + guard packet.pointee.stream_index == video else { continue } + let stored = try SoftwareStoredPacket(copying: packet) + if codec == .fields { + // Each presented frame must own both independently coded fields, including + // Matroska's complete-frame packets and TS parser output. + #expect(fieldPictureStructures(in: stored.bytes) == [1, 2]) + } + packets.append(stored) + try #require(avcodec_send_packet(ctx, packet) >= 0) + try receive() + } + try #require(avcodec_send_packet(ctx, nil) >= 0) + try receive() + #expect(packets.count == codec.count) + #expect(times == packets.map(\.pts).sorted()) + #expect(!times.contains(Int64.min)) + #expect(zip(packets, packets.dropFirst()).contains { $0.pts > $1.pts }, "the fixture includes B-picture reordering") + if codec == .interlaced || codec == .fields { #expect(interlaced == codec.count) } + if codec == .pulldown { #expect(repeated == 30) } + return packets + } + + private func fieldPictureStructures(in data: Data) -> [Int] { + let bytes = [UInt8](data) + guard bytes.count >= 7 else { return [] } + var structures: [Int] = [] + for i in 0...(bytes.count - 7) where + bytes[i] == 0 && bytes[i + 1] == 0 && bytes[i + 2] == 1 && bytes[i + 3] == 0xb5 { + // picture_coding_extension: id(4), f_code(16), intra_dc_precision(2), structure(2). + if bytes[i + 4] >> 4 == 8 { structures.append(Int(bytes[i + 6] & 3)) } + } + return structures + } + + @Test("separately coded MPEG fields form complete presentation packets through the TS parser") + func fieldTransportParser() throws { _ = try decodedPackets(.fields, transport: true) } + + private func replacing(_ packet: SoftwareStoredPacket, pts: Int64) -> SoftwareStoredPacket { + .init(pts: pts, dts: pts, duration: packet.duration, position: packet.position, + streamIndex: packet.streamIndex, flags: packet.flags, + timeBaseNumerator: packet.timeBaseNumerator, timeBaseDenominator: packet.timeBaseDenominator, + bytes: packet.bytes, sideData: packet.sideData) + } + + private func withStore( + _ codec: Fixture, memory: Bool, packets: [SoftwareStoredPacket], strict: Bool = false, + origin: Double? = nil, historyCapBytes: Int = 8 << 20, + body: (SoftwarePacketReadAhead, any SoftwarePacketStore) async throws -> Void + ) async throws { + let root = FileManager.default.temporaryDirectory.appendingPathComponent(UUID().uuidString) + try FileManager.default.createDirectory(at: root, withIntermediateDirectories: true) + defer { try? FileManager.default.removeItem(at: root) } + let store: any SoftwarePacketStore = memory + ? SoftwarePacketMemoryFIFO(chunkTargetBytes: 4096, historyCapBytes: historyCapBytes, kernelMayPurge: false) + : try SoftwarePacketDiskFIFO(chunkTargetBytes: 4096, retainConsumed: true, parentDirectory: root) + let input = Packets(packets) + let source = SoftwarePacketReadAhead( + video: .init(index: packets[0].streamIndex, numerator: 1, denominator: 1000), audio: nil, + byteBudget: 8 << 20, forwardSeconds: 100, initialSourceClock: origin ?? Double(packets.map(\.pts).min()!) / 1000, fifo: store, + videoReorderDepth: strict ? nil : SoftwarePlaybackHost.presentationReorderDepth(codecID: codec.id) + ) { _ in input.next() } + defer { source.close() } + source.start() + try await waitFor { source.snapshot.sourceEnded } + try await body(source, store) + } + + @Test("real MPEG packets bridge rounding holes in either store without inventing an EOF tail", + arguments: Fixture.allCases, [false, true]) + func roundedDurations(codec: Fixture, memory: Bool) async throws { + let packets = try decodedPackets(codec) + let last = Double(packets.map(\.pts).max()!) / 1000 + let sorted = packets.sorted { $0.pts < $1.pts } + let gap = try #require(zip(sorted, sorted.dropFirst()).first { $0.pts + $0.duration < $1.pts }) + let targetInHole = Double(gap.0.pts + gap.0.duration + gap.1.pts) / 2000 + try await withStore(codec, memory: memory, packets: packets, strict: true) { old, _ in + #expect(old.residentRanges.count > 1) + #expect((old.snapshot.frontier ?? 0) < last) + } + try await withStore(codec, memory: memory, packets: packets) { source, _ in + #expect(source.residentRanges.count == 1) + #expect(abs((source.snapshot.frontier ?? 0) - last) < 0.000001) + #expect(source.residentRanges.last?.upperBound == last) + for target in [targetInHole, last - 0.1] { + let token = source.beginSeek(to: target) + let hit = try source.prepareSeek(token, to: target) + #expect(hit) + source.endSeek(token, sourceClock: target) + } + #expect(source.snapshot.sourceEpoch == 0) + _ = source.beginSeek() + #expect(source.residentRanges.isEmpty) + #expect(source.snapshot.frontier == nil) + #expect(source.snapshot.sourceEpoch == 1) + } + } + + @Test("nonzero source clocks retain the same MPEG cache semantics", + arguments: Fixture.allCases, [false, true]) + func offsetClock(codec: Fixture, memory: Bool) async throws { + let packets = try decodedPackets(codec).map { replacing($0, pts: $0.pts + 600_000) } + try await withStore(codec, memory: memory, packets: packets, origin: Double(packets.map(\.pts).min()!) / 1000) { source, _ in + #expect(source.residentRanges.first?.lowerBound == Double(packets.map(\.pts).min()!) / 1000) + #expect(source.residentRanges.last?.upperBound == Double(packets.map(\.pts).max()!) / 1000) + let target = Double(packets.map(\.pts).max()!) / 1000 - 0.1 + let hit = try source.prepareSeek(source.beginSeek(to: target), to: target) + #expect(hit) + } + } + + @Test("missing or late MPEG PTS invalidates real-store coverage", + arguments: Fixture.allCases, [false, true]) + func invalidTimestamps(codec: Fixture, memory: Bool) async throws { + let original = try decodedPackets(codec) + for invalid in [Int64.min, Int64(1)] { + var packets = original + packets[packets.count - 2] = replacing(packets[packets.count - 2], pts: invalid) + try await withStore(codec, memory: memory, packets: packets, + origin: Double(original.map(\.pts).min()!) / 1000) { source, _ in + #expect(source.residentRanges.isEmpty) + #expect(source.snapshot.frontier == nil) + let hit = try source.prepareSeek(source.beginSeek(to: 1), to: 1) + #expect(!hit) + } + } + } + + @Test("a real presentation discontinuity remains a cache miss", + arguments: Fixture.allCases, [false, true]) + func discontinuity(codec: Fixture, memory: Bool) async throws { + let original = try decodedPackets(codec) + let split = original.map(\.pts).sorted()[original.count / 2] + let packets = original.map { p in replacing(p, pts: p.pts + (p.pts >= split ? 2000 : 0)) } + let target = Double(split) / 1000 + 1 + try await withStore(codec, memory: memory, packets: packets) { source, _ in + #expect(source.residentRanges.count == 2) + #expect(!source.residentRanges.contains { $0.contains(target) }) + let hit = try source.prepareSeek(source.beginSeek(to: target), to: target) + #expect(!hit) + } + } + + @Test("evicted MPEG history is no longer advertised or seekable", + arguments: Fixture.allCases, [false, true]) + func eviction(codec: Fixture, memory: Bool) async throws { + let original = try decodedPackets(codec) + // Repeat existing envelopes on separated time spans for a multi-chunk retention workload. + // This is a store test, not a claim that the concatenation is a newly decoded media file. + let span = ((original.map(\.pts).max()! + 999) / 1000 + 1) * 1000 + let packets = (0..<12).flatMap { cycle in + original.map { replacing($0, pts: $0.pts + Int64(cycle) * span) } + } + try await withStore(codec, memory: memory, packets: packets, historyCapBytes: 0) { source, store in + for _ in 0..<(packets.count * 3 / 4) { _ = try #require(try source.read()) } + // Memory uses its own history cap; this argument is the disk-store budget. + try store.trimConsumed(toByteBudget: 0) + _ = try #require(try source.read()) // refresh residency from the actual store floor + #expect(!source.residentRanges.contains { $0.contains(0.1) }) + let hit = try source.prepareSeek(source.beginSeek(to: 0.1), to: 0.1) + #expect(!hit) + } + } + + @Test("MPEG candidate does not qualify WMV3") + func codecBoundary() { + for codec in Fixture.allCases { + #expect(SoftwarePlaybackHost.presentationReorderDepth(codecID: codec.id) == 32) + } + #expect(SoftwarePlaybackHost.presentationReorderDepth(codecID: AV_CODEC_ID_WMV3.rawValue) == nil) + } +} diff --git a/Tests/AetherEngineTests/Support/MPEGCacheFixtures.swift b/Tests/AetherEngineTests/Support/MPEGCacheFixtures.swift new file mode 100644 index 000000000..d0b6c483f --- /dev/null +++ b/Tests/AetherEngineTests/Support/MPEGCacheFixtures.swift @@ -0,0 +1,1440 @@ +import Foundation +import CryptoKit +import Testing + +// Generated pixels only. See docs/mpeg-cache-qualification.md for commands and open gates. +enum MPEGCacheFixtures { + static func data(_ name: String) throws -> Data { + let pair: (String, String) + switch name { + case "mpeg1": pair = (mpeg1, mpeg1SHA256) + case "mpeg2": pair = (mpeg2, mpeg2SHA256) + case "interlaced": pair = (interlaced, interlacedSHA256) + case "pulldown": pair = (pulldown, pulldownSHA256) + case "fields": pair = (fields, fieldsSHA256) + case "fieldsTS": pair = (fieldsTS, fieldsTSSHA256) + default: throw FixtureError.unknownName + } + let data = try #require(Data(base64Encoded: pair.0, options: .ignoreUnknownCharacters)) + #expect(SHA256.hash(data: data).map { String(format: "%02x", $0) }.joined() == pair.1) + return data + } + enum FixtureError: Error { case unknownName } + static let mpeg1SHA256 = "540ba15e11ca2bd2bfdac34dcc02f07df0298227aa211135d38fdc9c5aac68f4" + static let mpeg1 = """ + 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 + g7eL94EB8YISdvCCBcQ= + """ + static let mpeg2SHA256 = "958078bfbf5deb00383cef33749d0edc9257f5ebac64421becc4f3e86a8ecc06" + static let mpeg2 = """ + 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 + AAABAAKf//u4AAABtYERE0GAAAABARq0sAAAAQIatLAAAAEDGrSwAAABBBq0sKOygQV5AAAAAQADl//7gAAAAbWBH/NBgAAAAQES + dHAAAAECEnRwAAABAxJ0cAAAAQQSdHCjsoEFNgAAAAEAAx//+7gAAAG1gRETQYAAAAEBGrSwAAABAhq0sAAAAQMatLAAAAEEGrSw + o7KBBVgAAAABAANf//u4AAABtYERE0GAAAABARq0sAAAAQIatLAAAAEDGrSwAAABBBq0sKNAk4EFvIAAAAGzBABAFP//4BgAAAG1 + FIoAAQAAAAABuAAIbgAAAAEAAE//+AAAAbWP//NBgAAAAQET+UUpS/cLzblKUiLlKUiLlKUiIAAAAQIT+UUpS/cLzblKUiLlKUiL + lKUiIAAAAQMT+UUpS/cLzblKUiLlKUiLlKUiIAAAAQQT+UUpS/cLzblKUiLlKUiLlKUiIKOygQWaAAAAAQAAH//7uAAAAbWBERNB + gAAAAQEatLAAAAECGrSwAAABAxq0sAAAAQQatLAcU7trQK6/hMvHp627j7OBALeK94EB8YIBj/CBCbuRs4IB9beL94EB8YIBj/CC + Aw+7kbOCA+m3i/eBAfGCAY/wggZ9u5GzggXet4v3gQHxggGP8IIJ67uRs4IH0reL94EB8YIBj/CCDVm7kLOCCce3iveBAfGCElzw + gQq7kbOCC7u3i/eBAfGCElzwggN4u5Gzgg2wt4v3gQHxghJc8IIG5ruRs4IPg7eL94EB8YISXPCCClQ= + """ + static let interlacedSHA256 = "0067723902603b567c93581914d9a59a0b4d8e52c767c99855ae9e6de7e02616" + static let interlaced = """ + GkXfo6NChoEBQveBAULygQRC84EIQoKIbWF0cm9za2FCh4EEQoWBAhhTgGcBAAAAAAAeOxFNm3TAv4SIOzowTbuLU6uEFUmpZlOs + gaFNu4tTq4QWVK5rU6yBzE27jFOrhBJUw2dTrIIBM027jFOrhBxTu2tTrIIdh+wBAAAAAAAAUwAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFUmpZqa/hKsxihYq + 17GDD0JATYCETGF2ZldBhExhdmZEiYhAr0gAAAAAABZUrmviv4TKtGgnrgEAAAAAAABT14EBc8WIAAAAAAAAAAGcgQAitZyDdW5k + iIEAhodWX01QRUcyg4EBI+ODhAH9Iorgk7CBQLqBQJqBAZ2BCVWwhFW5gQFV7oEA7AEAAAAAAAACAAASVMNn2r+E5kDwfnNz0WPA + i2PFiAAAAAAAAAABZ8icRaOHRU5DT0RFUkSHj0xhdmMgbXBlZzJ2aWRlb2fIoUWjiERVUkFUSU9ORIeTMDA6MDA6MDQuMDA0MDAw + MDAwAB9DtnVQy7+EmGCLweeBAKNAk4EAAIAAAAGzBABAFP//4BgAAAG1FIIAAQAAAAABuAAIAEAAAAEAAA//+AAAAbWP//OAAAAA + AQETfKKUpfuF5tpSlIi0pSkRaUpSIgAAAQITfKKUpfuF5tpSlIi0pSkRaUpSIgAAAQMTfKKUpfuF5tpSlIi0pSkRaUpSIgAAAQQT + fKKUpfuF5tpSlIi0pSkRaUpSIqOygQBkAAAAAQAA1//7gAAAAbWBH/OAAAAAAQESbRsAAAECEm0bAAABAxJtGwAAAQQSbRujtoEA + IQAAAAEAAF//+7gAAAG1gRETgAAAAAEBGlaKwAAAAQIaVorAAAABAxpWisAAAAEEGlaKwKOygQBDAAAAAQAAn//7uAAAAbWBEROA + AAAAAQEarSsAAAECGq0rAAABAxqtKwAAAQQarSujsoEAyAAAAAEAAZf/+4AAAAG1gR/zgAAAAAEBEm0bAAABAhJtGwAAAQMSbRsA + AAEEEm0bo7KBAIUAAAABAAEf//u4AAABtYERE4AAAAABARqtKwAAAQIarSsAAAEDGq0rAAABBBqtK6OygQCnAAAAAQABX//7uAAA + AbWBEROAAAAAAQEarSsAAAECGq0rAAABAxqtKwAAAQQarSujsoEBLAAAAAEAAlf/+4AAAAG1gR/zgAAAAAEBEm0bAAABAhJtGwAA + AQMSbRsAAAEEEm0bo7KBAOoAAAABAAHf//u4AAABtYERE4AAAAABARqtKwAAAQIarSsAAAEDGq0rAAABBBqtK6OygQELAAAAAQAC + H//7uAAAAbWBEROAAAAAAQEarSsAAAECGq0rAAABAxqtKwAAAQQarSujsoEBkAAAAAEAAxf/+4AAAAG1gR/zgAAAAAEBEm0bAAAB + AhJtGwAAAQMSbRsAAAEEEm0bo7KBAU4AAAABAAKf//u4AAABtYERE4AAAAABARqtKwAAAQIarSsAAAEDGq0rAAABBBqtK6OygQFv + AAAAAQAC3//7uAAAAbWBEROAAAAAAQEarSsAAAECGq0rAAABAxqtKwAAAQQarSujQJOBAfWAAAABswQAQBT//+AYAAABtRSCAAEA + AAAAAbgACAaAAAABAACP//gAAAG1j//zgAAAAAEBE3yilKX7hebaUpSItKUpEWlKUiIAAAECE3yilKX7hebaUpSItKUpEWlKUiIA + AAEDE3yilKX7hebaUpSItKUpEWlKUiIAAAEEE3yilKX7hebaUpSItKUpEWlKUiKjsoEBsgAAAAEAAB//+7gAAAG1gRETgAAAAAEB + Gq0rAAABAhqtKwAAAQMarSsAAAEEGq0ro7KBAdMAAAABAABf//u4AAABtYERE4AAAAABARqtKwAAAQIarSsAAAEDGq0rAAABBBqt + K6OygQJZAAAAAQABV//7gAAAAbWBH/OAAAAAAQESbRsAAAECEm0bAAABAxJtGwAAAQQSbRujsoECFgAAAAEAAN//+7gAAAG1gRET + gAAAAAEBGq0rAAABAhqtKwAAAQMarSsAAAEEGq0ro7KBAjcAAAABAAEf//u4AAABtYERE4AAAAABARqtKwAAAQIarSsAAAEDGq0r + AAABBBqtK6OygQK9AAAAAQACF//7gAAAAbWBH/OAAAAAAQESbRsAAAECEm0bAAABAxJtGwAAAQQSbRujsoECegAAAAEAAZ//+7gA + AAG1gRETgAAAAAEBGq0rAAABAhqtKwAAAQMarSsAAAEEGq0ro7KBApsAAAABAAHf//u4AAABtYERE4AAAAABARqtKwAAAQIarSsA + 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 + AAABAhJtGwAAAQMSbRsAAAEEEm0bo7KBBscAAAABAAJf//u4AAABtYERE4AAAAABARqtKwAAAQIarSsAAAEDGq0rAAABBBqtK6Oy + gQboAAAAAQACn//7uAAAAbWBEROAAAAAAQEarSsAAAECGq0rAAABAxqtKwAAAQQarSujsoEHbgAAAAEAA5f/+4AAAAG1gR/zgAAA + AAEBEm0bAAABAhJtGwAAAQMSbRsAAAEEEm0bo7KBBysAAAABAAMf//u4AAABtYERE4AAAAABARqtKwAAAQIarSsAAAEDGq0rAAAB + BBqtK6OygQdNAAAAAQADX//7uAAAAbWBEROAAAAAAQEarSsAAAECGq0rAAABAxqtKwAAAQQarSujQJOBB9KAAAABswQAQBT//+AY + AAABtRSCAAEAAAAAAbgACC4AAAABAACP//gAAAG1j//zgAAAAAEBE3yilKX7hebaUpSItKUpEWlKUiIAAAECE3yilKX7hebaUpSI + tKUpEWlKUiIAAAEDE3yilKX7hebaUpSItKUpEWlKUiIAAAEEE3yilKX7hebaUpSItKUpEWlKUiKjsoEHjwAAAAEAAB//+7gAAAG1 + gRETgAAAAAEBGq0rAAABAhqtKwAAAQMarSsAAAEEGq0ro7KBB7EAAAABAABf//u4AAABtYERE4AAAAABARqtKwAAAQIarSsAAAED + Gq0rAAABBBqtK6OygQg2AAAAAQABV//7gAAAAbWBH/OAAAAAAQESbRsAAAECEm0bAAABAxJtGwAAAQQSbRujsoEH8wAAAAEAAN// + +7gAAAG1gRETgAAAAAEBGq0rAAABAhqtKwAAAQMarSsAAAEEGq0ro7KBCBUAAAABAAEf//u4AAABtYERE4AAAAABARqtKwAAAQIa + rSsAAAEDGq0rAAABBBqtK6OygQiaAAAAAQACF//7gAAAAbWBH/OAAAAAAQESbRsAAAECEm0bAAABAxJtGwAAAQQSbRujsoEIVwAA + AAEAAZ//+7gAAAG1gRETgAAAAAEBGq0rAAABAhqtKwAAAQMarSsAAAEEGq0ro7KBCHkAAAABAAHf//u4AAABtYERE4AAAAABARqt + KwAAAQIarSsAAAEDGq0rAAABBBqtK6OygQj+AAAAAQAC1//7gAAAAbWBH/OAAAAAAQESbRsAAAECEm0bAAABAxJtGwAAAQQSbRuj + soEIvAAAAAEAAl//+7gAAAG1gRETgAAAAAEBGq0rAAABAhqtKwAAAQMarSsAAAEEGq0ro7KBCN0AAAABAAKf//u4AAABtYERE4AA + AAABARqtKwAAAQIarSsAAAEDGq0rAAABBBqtK6OygQliAAAAAQADl//7gAAAAbWBH/OAAAAAAQESbRsAAAECEm0bAAABAxJtGwAA + AQQSbRujsoEJIAAAAAEAAx//+7gAAAG1gRETgAAAAAEBGq0rAAABAhqtKwAAAQMarSsAAAEEGq0ro7KBCUEAAAABAANf//u4AAAB + tYERE4AAAAABARqtKwAAAQIarSsAAAEDGq0rAAABBBqtKx9DtnVLHr+EJwK53OeCCcejQJOBAACAAAABswQAQBT//+AYAAABtRSC + AAEAAAAAAbgACEaAAAABAACP//gAAAG1j//zgAAAAAEBE3yilKX7hebaUpSItKUpEWlKUiIAAAECE3yilKX7hebaUpSItKUpEWlK + UiIAAAEDE3yilKX7hebaUpSItKUpEWlKUiIAAAEEE3yilKX7hebaUpSItKUpEWlKUiKjsoH/vQAAAAEAAB//+7gAAAG1gRETgAAA + AAEBGq0rAAABAhqtKwAAAQMarSsAAAEEGq0ro7KB/94AAAABAABf//u4AAABtYERE4AAAAABARqtKwAAAQIarSsAAAEDGq0rAAAB + BBqtK6OygQBkAAAAAQABV//7gAAAAbWBH/OAAAAAAQESbRsAAAECEm0bAAABAxJtGwAAAQQSbRujsoEAIQAAAAEAAN//+7gAAAG1 + gRETgAAAAAEBGq0rAAABAhqtKwAAAQMarSsAAAEEGq0ro7KBAEIAAAABAAEf//u4AAABtYERE4AAAAABARqtKwAAAQIarSsAAAED + Gq0rAAABBBqtK6OygQDIAAAAAQACF//7gAAAAbWBH/OAAAAAAQESbRsAAAECEm0bAAABAxJtGwAAAQQSbRujsoEAhQAAAAEAAZ// + +7gAAAG1gRETgAAAAAEBGq0rAAABAhqtKwAAAQMarSsAAAEEGq0ro7KBAKYAAAABAAHf//u4AAABtYERE4AAAAABARqtKwAAAQIa + rSsAAAEDGq0rAAABBBqtK6OygQEsAAAAAQAC1//7gAAAAbWBH/OAAAAAAQESbRsAAAECEm0bAAABAxJtGwAAAQQSbRujsoEA6QAA + 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 + K6OygQTzAAAAAQACn//7uAAAAbWBEROAAAAAAQEarSsAAAECGq0rAAABAxqtKwAAAQQarSujsoEFeQAAAAEAA5f/+4AAAAG1gR/z + gAAAAAEBEm0bAAABAhJtGwAAAQMSbRsAAAEEEm0bo7KBBTYAAAABAAMf//u4AAABtYERE4AAAAABARqtKwAAAQIarSsAAAEDGq0r + AAABBBqtK6OygQVYAAAAAQADX//7uAAAAbWBEROAAAAAAQEarSsAAAECGq0rAAABAxqtKwAAAQQarSujQJOBBbyAAAABswQAQBT/ + /+AYAAABtRSCAAEAAAAAAbgACG4AAAABAABP//gAAAG1j//zgAAAAAEBE3yilKX7hebaUpSItKUpEWlKUiIAAAECE3yilKX7heba + UpSItKUpEWlKUiIAAAEDE3yilKX7hebaUpSItKUpEWlKUiIAAAEEE3yilKX7hebaUpSItKUpEWlKUiKjsoEFmgAAAAEAAB//+7gA + AAG1gRETgAAAAAEBGq0rAAABAhqtKwAAAQMarSsAAAEEGq0rHFO7a0Cuv4SVzBpju4+zgQC3iveBAfGCAZLwgQm7kbOCAfW3i/eB + AfGCAZLwggMTu5GzggPpt4v3gQHxggGS8IIGgbuRs4IF3reL94EB8YIBkvCCCe+7kbOCB9K3i/eBAfGCAZLwgg1du5CzggnHt4r3 + gQHxghJj8IEKu5Gzggu7t4v3gQHxghJj8IIDeLuRs4INsLeL94EB8YISY/CCBua7kbOCD4O3i/eBAfGCEmPwggpU + """ + static let pulldownSHA256 = "7578b7521b8f95a91ad3afc04626c1c46b5336245e62ec94fde9adc04242dd76" + static let pulldown = """ + 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 + """ + + private static let fieldsSHA256 = "38ade5f7ebe1e86e021bc38216f5060ab8fe05775de2cb9b46a587a0b58eb0e9" + private static let fields = """ + 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 + AAABtYERERAAAAABAQqm6m6m6m6m6m6m6mwAAAECCqbqbqbqbqbqbqbqbAAAAQMKpupupupupupupupsAAABAAAf//u4AAABtYER + EhAAAAABAQqm6m6m6m6m6m6m6mwAAAECCqbqbqbqbqbqbqbqbAAAAQMKpupupupupupupupsm4Eh+4FDoECdoUCUgf/fAAAAAQAA + X//7uAAAAbWBEREQAAAAAQEKU3KblNym5TcpuU3KbAAAAQIKU3KblNym5TcpuU3KbAAAAQMKU3KblNym5TcpuU3KbAAAAQAAX//7 + uAAAAbWBERIQAAAAAQEKU3KblNym5TcpuU3KbAAAAQIKU3KblNym5TcpuU3KbAAAAQMKU3KblNym5TcpuU3KbJuBIfuB3qBAiaFA + f4EAZAAAAAEAAVf/+4AAAAG1gi/xEAAAAAEBClQ2VyuVyuVyuVgAAAECClQ+VyuVyuVyuVgAAAEDClQ+VyuVyuVyuVgAAAEAAVf/ + +4AAAAG1gi/yEAAAAAEBClcrlcrlcrlcrAAAAQIKVyuVyuVyuVysAAABAwpXK5XK5XK5XKybgSH7gv97oECXoUCOgQAhAAAAAQAA + 3//7uAAAAbWBEREQAAAAAQEKpupupupupupupupsAAABAgqm6m6m6m6m6m6m6mwAAAEDCqbqbqbqbqbqbqbqbAAAAQAA3//7uAAA + AbWBERIQAAAAAQEKpupupupupupupupsAAABAgqm6m6m6m6m6m6m6mwAAAEDCqbqbqbqbqbqbqbqbJuBIfuBQ6BAnaFAlIEAQwAA + AAEAAR//+7gAAAG1gREREAAAAAEBClNym5TcpuU3KblNymwAAAECClNym5TcpuU3KblNymwAAAEDClNym5TcpuU3KblNymwAAAEA + AR//+7gAAAG1gRESEAAAAAEBClNym5TcpuU3KblNymwAAAECClNym5TcpuU3KblNymwAAAEDClNym5TcpuU3KblNymybgSH7gd6g + QImhQH+BAMgAAAABAAIX//uAAAABtYIv8RAAAAABAQpUNlcrlcrlcrlYAAABAgpUPlcrlcrlcrlYAAABAwpUPlcrlcrlcrlYAAAB + AAIX//uAAAABtYIv8hAAAAABAQpXK5XK5XK5XKwAAAECClcrlcrlcrlcrAAAAQMKVyuVyuVyuVysm4Eh+4L/e6BAl6FAjoEAhQAA + AAEAAZ//+7gAAAG1gREREAAAAAEBCqbqbqbqbqbqbqbqbAAAAQIKpupupupupupupupsAAABAwqm6m6m6m6m6m6m6mwAAAEAAZ// + +7gAAAG1gRESEAAAAAEBCqbqbqbqbqbqbqbqbAAAAQIKpupupupupupupupsAAABAwqm6m6m6m6m6m6m6mybgSH7gUOgQJ2hQJSB + AKcAAAABAAHf//u4AAABtYERERAAAAABAQpTcpuU3KblNym5TcpsAAABAgpTcpuU3KblNym5TcpsAAABAwpTcpuU3KblNym5Tcps + AAABAAHf//u4AAABtYEREhAAAAABAQpTcpuU3KblNym5TcpsAAABAgpTcpuU3KblNym5TcpsAAABAwpTcpuU3KblNym5Tcpsm4Eh + +4HeoECJoUB/gQEsAAAAAQAC1//7gAAAAbWCL/EQAAAAAQEKVDZXK5XK5XK5WAAAAQIKVD5XK5XK5XK5WAAAAQMKVD5XK5XK5XK5 + WAAAAQAC1//7gAAAAbWCL/IQAAAAAQEKVyuVyuVyuVysAAABAgpXK5XK5XK5XKwAAAEDClcrlcrlcrlcrJuBIfuC/3ugQJehQI6B + AOkAAAABAAJf//u4AAABtYERERAAAAABAQqm6m6m6m6m6m6m6mwAAAECCqbqbqbqbqbqbqbqbAAAAQMKpupupupupupupupsAAAB + AAJf//u4AAABtYEREhAAAAABAQqm6m6m6m6m6m6m6mwAAAECCqbqbqbqbqbqbqbqbAAAAQMKpupupupupupupupsm4Eh+4FDoECd + oUCUgQELAAAAAQACn//7uAAAAbWBEREQAAAAAQEKU3KblNym5TcpuU3KbAAAAQIKU3KblNym5TcpuU3KbAAAAQMKU3KblNym5Tcp + uU3KbAAAAQACn//7uAAAAbWBERIQAAAAAQEKU3KblNym5TcpuU3KbAAAAQIKU3KblNym5TcpuU3KbAAAAQMKU3KblNym5TcpuU3K + bJuBIfuB3qBAiaFAf4EBkAAAAAEAA5f/+4AAAAG1gi/xEAAAAAEBClQ2VyuVyuVyuVgAAAECClQ+VyuVyuVyuVgAAAEDClQ+VyuV + yuVyuVgAAAEAA5f/+4AAAAG1gi/yEAAAAAEBClcrlcrlcrlcrAAAAQIKVyuVyuVyuVysAAABAwpXK5XK5XK5XKybgSH7gv97oECX + oUCOgQFOAAAAAQADH//7uAAAAbWBEREQAAAAAQEKpupupupupupupupsAAABAgqm6m6m6m6m6m6m6mwAAAEDCqbqbqbqbqbqbqbq + bAAAAQADH//7uAAAAbWBERIQAAAAAQEKpupupupupupupupsAAABAgqm6m6m6m6m6m6m6mwAAAEDCqbqbqbqbqbqbqbqbJuBIfuB + QqBAnaFAlIEBbwAAAAEAA1//+7gAAAG1gREREAAAAAEBClNym5TcpuU3KblNymwAAAECClNym5TcpuU3KblNymwAAAEDClNym5Tc + puU3KblNymwAAAEAA1//+7gAAAG1gRESEAAAAAEBClNym5TcpuU3KblNymwAAAECClNym5TcpuU3KblNymwAAAEDClNym5TcpuU3 + KblNymybgSH7gd+gRW+hRWmBAfQAAAABuAAIDgAAAAEAAI//+AAAAbWP//EYAAAAAQELxAg7wAjBFglfYgnAgNAQSIARvdQSgTwT + vwGgIO8AIwRYJX2IJwIDQEEiAEb3UEoE8E78BhhuAg7wAjBFglfYgnAgNAQSIARvdQSgTwTvwGgIO8AIwRYJX2IJwIDQEEiAEb3U + EoE8E78BhhuAg7wAjBFglfYgnAgNAQSIARvdQSgTwTvwGgIO8AIwRYJX2IJwIDQEEiAEb3UEoE8E78BhhuAg7wAjBFglfYgnAgNA + QSIARvdQSgTwTvwGgIO8AIwRYJX2IJwIDQEEiAEb3UEoE8E78BhhuAg7wAjBFglfYgnAgNAQSIARvdQSgTwTvwGgIO8AIwRYJX2I + JwIDQEEiAEb3UEoE8E78BhhuAg7wAjBFglfYgnAgNAQSIARvdQSgTwTvwGgIO8AIwRYJX2IJwIDQEEiAEb3UEoE8E78BhhuAg7wA + jBFglfYgnAgNAQSIARvdQSgTwTvwGgIO8AIwRYJX2IJwIDQEEiAEb3UEoE8E78BhhuAg7wAjBFglfYgnAgNAQSIARvdQSgTwTvwG + gIO8AIwRYJX2IJwIDQEEiAEb3UEoE8E78BhhgAAAAQILxAg7wAjBFglfYgnAgNAQSIARvdQSgTwTvwGgIO8AIwRYJX2IJwIDQEEi + AEb3UEoE8E78BhhuAg7wAjBFglfYgnAgNAQSIARvdQSgTwTvwGgIO8AIwRYJX2IJwIDQEEiAEb3UEoE8E78BhhuAg7wAjBFglfYg + nAgNAQSIARvdQSgTwTvwGgIO8AIwRYJX2IJwIDQEEiAEb3UEoE8E78BhhuAg7wAjBFglfYgnAgNAQSIARvdQSgTwTvwGgIO8AIwR + YJX2IJwIDQEEiAEb3UEoE8E78BhhuAg7wAjBFglfYgnAgNAQSIARvdQSgTwTvwGgIO8AIwRYJX2IJwIDQEEiAEb3UEoE8E78Bhhu + Ag7wAjBFglfYgnAgNAQSIARvdQSgTwTvwGgIO8AIwRYJX2IJwIDQEEiAEb3UEoE8E78BhhuAg7wAjBFglfYgnAgNAQSIARvdQSgT + wTvwGgIO8AIwRYJX2IJwIDQEEiAEb3UEoE8E78BhhuAg7wAjBFglfYgnAgNAQSIARvdQSgTwTvwGgIO8AIwRYJX2IJwIDQEEiAEb + 3UEoE8E78BhhgAAAAQMLxAg7wAjBFglfYgnAgNAQSIARvdQSgTwTvwGgIO8AIwRYJX2IJwIDQEEiAEb3UEoE8E78BhhuAg7wAjBF + glfYgnAgNAQSIARvdQSgTwTvwGgIO8AIwRYJX2IJwIDQEEiAEb3UEoE8E78BhhuAg7wAjBFglfYgnAgNAQSIARvdQSgTwTvwGgIO + 8AIwRYJX2IJwIDQEEiAEb3UEoE8E78BhhuAg7wAjBFglfYgnAgNAQSIARvdQSgTwTvwGgIO8AIwRYJX2IJwIDQEEiAEb3UEoE8E7 + 8BhhuAg7wAjBFglfYgnAgNAQSIARvdQSgTwTvwGgIO8AIwRYJX2IJwIDQEEiAEb3UEoE8E78BhhuAg7wAjBFglfYgnAgNAQSIARv + dQSgTwTvwGgIO8AIwRYJX2IJwIDQEEiAEb3UEoE8E78BhhuAg7wAjBFglfYgnAgNAQSIARvdQSgTwTvwGgIO8AIwRYJX2IJwIDQE + EiAEb3UEoE8E78BhhuAg7wAjBFglfYgnAgNAQSIARvdQSgTwTvwGgIO8AIwRYJX2IJwIDQEEiAEb3UEoE8E78BhhgAAAAQAAl//7 + gAAAAbWCL/IYAAAAAQEKVyuVyuVyuVysAAABAgpXK5XK5XK5XKwAAAEDClcrlcrlcrlcrJuBIaBAl6FAjoEBsgAAAAEAAB//+7gA + AAG1gREREAAAAAEBCqbqbqbqbqbqbqbqbAAAAQIKpupupupupupupupsAAABAwqm6m6m6m6m6m6m6mwAAAEAAB//+7gAAAG1gRES + EAAAAAEBCqbqbqbqbqbqbqbqbAAAAQIKpupupupupupupupsAAABAwqm6m6m6m6m6m6m6mybgSH7gUKgQJ2hQJSBAdMAAAABAABf + //u4AAABtYERERAAAAABAQpTcpuU3KblNym5TcpsAAABAgpTcpuU3KblNym5TcpsAAABAwpTcpuU3KblNym5TcpsAAABAABf//u4 + AAABtYEREhAAAAABAQpTcpuU3KblNym5TcpsAAABAgpTcpuU3KblNym5TcpsAAABAwpTcpuU3KblNym5Tcpsm4Eh+4HfoECJoUB/ + gQJYAAAAAQABV//7gAAAAbWCL/EQAAAAAQEKVDZXK5XK5XK5WAAAAQIKVD5XK5XK5XK5WAAAAQMKVD5XK5XK5XK5WAAAAQABV//7 + gAAAAbWCL/IQAAAAAQEKVyuVyuVyuVysAAABAgpXK5XK5XK5XKwAAAEDClcrlcrlcrlcrJuBIfuC/3ugQJehQI6BAhYAAAABAADf + //u4AAABtYERERAAAAABAQqm6m6m6m6m6m6m6mwAAAECCqbqbqbqbqbqbqbqbAAAAQMKpupupupupupupupsAAABAADf//u4AAAB + tYEREhAAAAABAQqm6m6m6m6m6m6m6mwAAAECCqbqbqbqbqbqbqbqbAAAAQMKpupupupupupupupsm4Eh+4FCoECdoUCUgQI3AAAA + AQABH//7uAAAAbWBEREQAAAAAQEKU3KblNym5TcpuU3KbAAAAQIKU3KblNym5TcpuU3KbAAAAQMKU3KblNym5TcpuU3KbAAAAQAB + H//7uAAAAbWBERIQAAAAAQEKU3KblNym5TcpuU3KbAAAAQIKU3KblNym5TcpuU3KbAAAAQMKU3KblNym5TcpuU3KbJuBIfuB36BA + iaFAf4ECvQAAAAEAAhf/+4AAAAG1gi/xEAAAAAEBClQ2VyuVyuVyuVgAAAECClQ+VyuVyuVyuVgAAAEDClQ+VyuVyuVyuVgAAAEA + Ahf/+4AAAAG1gi/yEAAAAAEBClcrlcrlcrlcrAAAAQIKVyuVyuVyuVysAAABAwpXK5XK5XK5XKybgSH7gv96oECXoUCOgQJ6AAAA + AQABn//7uAAAAbWBEREQAAAAAQEKpupupupupupupupsAAABAgqm6m6m6m6m6m6m6mwAAAEDCqbqbqbqbqbqbqbqbAAAAQABn//7 + uAAAAbWBERIQAAAAAQEKpupupupupupupupsAAABAgqm6m6m6m6m6m6m6mwAAAEDCqbqbqbqbqbqbqbqbJuBIfuBQ6BAnaFAlIEC + mwAAAAEAAd//+7gAAAG1gREREAAAAAEBClNym5TcpuU3KblNymwAAAECClNym5TcpuU3KblNymwAAAEDClNym5TcpuU3KblNymwA + AAEAAd//+7gAAAG1gRESEAAAAAEBClNym5TcpuU3KblNymwAAAECClNym5TcpuU3KblNymwAAAEDClNym5TcpuU3KblNymybgSH7 + gd+gQImhQH+BAyEAAAABAALX//uAAAABtYIv8RAAAAABAQpUNlcrlcrlcrlYAAABAgpUPlcrlcrlcrlYAAABAwpUPlcrlcrlcrlY + AAABAALX//uAAAABtYIv8hAAAAABAQpXK5XK5XK5XKwAAAECClcrlcrlcrlcrAAAAQMKVyuVyuVyuVysm4Eh+4L/eqBAl6FAjoEC + 3gAAAAEAAl//+7gAAAG1gREREAAAAAEBCqbqbqbqbqbqbqbqbAAAAQIKpupupupupupupupsAAABAwqm6m6m6m6m6m6m6mwAAAEA + Al//+7gAAAG1gRESEAAAAAEBCqbqbqbqbqbqbqbqbAAAAQIKpupupupupupupupsAAABAwqm6m6m6m6m6m6m6mybgSH7gUOgQJ2h + QJSBAv8AAAABAAKf//u4AAABtYERERAAAAABAQpTcpuU3KblNym5TcpsAAABAgpTcpuU3KblNym5TcpsAAABAwpTcpuU3KblNym5 + TcpsAAABAAKf//u4AAABtYEREhAAAAABAQpTcpuU3KblNym5TcpsAAABAgpTcpuU3KblNym5TcpsAAABAwpTcpuU3KblNym5Tcps + m4Eh+4HfoECJoUB/gQOFAAAAAQADl//7gAAAAbWCL/EQAAAAAQEKVDZXK5XK5XK5WAAAAQIKVD5XK5XK5XK5WAAAAQMKVD5XK5XK + 5XK5WAAAAQADl//7gAAAAbWCL/IQAAAAAQEKVyuVyuVyuVysAAABAgpXK5XK5XK5XKwAAAEDClcrlcrlcrlcrJuBIfuC/3qgQJeh + QI6BA0IAAAABAAMf//u4AAABtYERERAAAAABAQqm6m6m6m6m6m6m6mwAAAECCqbqbqbqbqbqbqbqbAAAAQMKpupupupupupupups + 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 + """ + + private static let fieldsTSSHA256 = "a59e73c4735132c0010f74404508e0cfae23ff396ee79d8de8f2e5aea1a11e53" + private static let fieldsTS = """ + R0AREABC8CUAAcEAAP8B/wAB/IAUSBIBBkZGbXBlZwlTZXJ2aWNlMDF3fEPK//////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////9HQAAQAACwDQABwQAAAAHwACqxBLL///////////////////// + //////////////////////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////////////////////// + /0dQABAAArASAAHBAADhAPAAAuEA8ACeiyPR//////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////R0EAMAdQAAB7DH4AAAAB4AAAgMAKMQAH79cRAAfYYQAAAbMI + AGAkAnEjgAAAAbUUggABAAAAAAG1JQUFBAICAwAAAAGyR2VuZXJhdGVkIG1vdmluZyBsdW1hIHBhdHRlcm4sIG5vIHRoaXJkLXBh + cnR5IGltYWdlcwoAAAG4AAgAQAAAAQAAD//4AAABtY//8RgAAAABAXLPEACcEYAQAhABc0ABMCN/4AQAAvaAAnBGAEAIQAXNAATA + jf9HAQARgBAAC9hhrKAAjBGAEAIQAXNAARAjf+AEAAL2gAIwRgBACEAFzQAEQI3/gBAAC9hhrGAg/2gjACglf+gAuaAggJgjf9gl + ABgAvaAg/2gjACglf+gAuaAggJgjf9glABgAvYYawgIP9IIwAwJX/oJwAbQEEBcEb/oEoAME7/1oCD/SCMAMCV/6CcAG0BBAXBG/ + 6BKADBO/9YYavgIP84IwAwJX/oJwAbQEEBkEb/oEoAME7/1oCD/OCEcBABLADAlf+gnABtAQQGQRv+gSgAwTv/WGGrYCD/ECMAQC + V/4CcAG0BBAeBG/4BKAEBO/9aAg/xAjAEAlf+AnABtAQQHgRv+ASgBATv/WGGrICD+8CMASCV/2CcAI0BBAiBG/3BKAFBO/8aAg/ + vAjAEglf9gnACNAQQIgRv9wSgBQTv/GGGqoCD+mCMAWCV/0CcAK0BBAtBG/1BKAGBO/7aAg/pgjAFglf9AnACtAQQLQRv9QSgBgT + v+2GRwEAExgAAAECUqMQIP3gIwCIJX+wJwBDQEEEQEb+8EoAoE7/hoCD94CMAiCV/sCcAQ0BBBEBG/vBKAKBO/4YYamgIP0oIwC4 + JX+YJwBbQEEFsEb+kEoA0E7/VoCD9KCMAuCV/mCcAW0BBBbBG/pBKANBO/1YYaigIPeAIwIwJX7AJwEDQEERAEb7oEoCgE7+BoCD + 3gCMCMCV+wCcBA0BBEQBG+6BKAoBO/gYYahgIO8AIwRYJX2IJwIDQEFHAQAUIgBG91BKBPBO/AaAg7wAjBFglfYgnAgNAQSIARvd + QSgTwTvwGGG4CDvACMEWCV9iCcCA0BBIgBG91BKBPBO/AaAg7wAjBFglfYgnAgNAQSIARvdQSgTwTvwGGG4CDvACMEWCV9iCcCA0 + BBIgBG91BKBPBO/AaAg7wAjBFglfYgnAgNAQSIARvdQSgTwTvwGGG4CDvACMEWCV9iCcCA0BBIgBG91BKBPBO/AaAg7wAjBFglfY + gnAgNEcBABUEEiAEb3UEoE8E78BhhuAg7wAjBFglfYgnAgNAQSIARvdQSgTwTvwGgIO8AIwRYJX2IJwIDQEEiAEb3UEoE8E78Bhh + gAAAAQMLxAg7wAjBFglfYgnAgNAQSIARvdQSgTwTvwGgIO8AIwRYJX2IJwIDQEEiAEb3UEoE8E78BhhuAg7wAjBFglfYgnAgNAQS + IARvdQSgTwTvwGgIO8AIwRYJX2IJwIDQEEiAEb3UEoE8E78BhhuAg7wARwEAFowRYJX2IJwIDQEEiAEb3UEoE8E78BoCDvACMEWC + V9iCcCA0BBIgBG91BKBPBO/AYYbgIO8AIwRYJX2IJwIDQEEiAEb3UEoE8E78BoCDvACMEWCV9iCcCA0BBIgBG91BKBPBO/AYYbgI + O8AIwRYJX2IJwIDQEEiAEb3UEoE8E78BoCDvACMEWCV9iCcCA0BBIgBG91BKBPBO/AYYbgIO8AIwRYJX2IJwIDQEEiAEb3UEoE8E + 78BoCDtHAQAXwAjBFglfYgnAgNAQSIARvdQSgTwTvwGGG4CDvACMEWCV9iCcCA0BBIgBG91BKBPBO/AaAg7wAjBFglfYgnAgNAQS + IARvdQSgTwTvwGGG4CDvACMEWCV9iCcCA0BBIgBG91BKBPBO/AaAg7wAjBFglfYgnAgNAQSIARvdQSgTwTvwGGGAAAABAAAX//uA + AAABtYIv8hgAAAABAXJXEtfAXwC6AXwC6lcriWPgL4BdAL4Bda+DGADAx0cBADiQAP////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////AxgAwMf/9K5WAAAAECYlcrlcrlcrlcrAAAAQNiVyuV + yuVyuVysR0EAGQAAAeAAAIDACjEACTY5EQAH79cAAAEAANf/+4AAAAG1gi/xEAAAAAEBC1DeBcGD+4UA/XAWBgASFAP12ApHgUAI + wHYJv/IB36AUDgKgEQDoE0AcA79v4IQBBowOADkiAB8A+FrgQv+DBoeAHBFAD8B8LXIAwTHJBDBJ/5KYAGgoB+uSBkmsSSECSAOW + 4ANRQD9dr4IQBJgAdh4AcAnAFiwUf/gmBC/3NADoOADkE7/UWCj/8ExCAwlHAQAaOAb8EkAUB0CaAMesngPe8QwMoPAbAlf9gOwT + f+hZPAe97XwQv9DQCoEr/0E7/EB6PI64EIAwwArBKADBOAPAejiOuJoBbwRQBAwLAdiwRv+RYDV4mAFmBF/8DQoB0LBGAHFgNXt/ + CgSv+ATgBBZPFwWCUAQCd/4LJ4uSBYcGgk/+AAuF8LoC48oEkAQAF4vhdv4UCUAKCd/kKAfrgsEr/sE4A4UA/XQFwRgBACImgm/8 + igH/kgWBG0cBABv+wCMmAmgDigH/tfAKTCWCUAIRXFAP1wBQaSgSv/CIwoB+uyWWBPAEWINEooCXAI+QLXwQgDQRgCQSgBAOQIX+ + YI3+4JX/gHYmAFRCBFAEKAItE0ArIYIv/hYBH4AAAAECC1D/gKR4FACMB2Cb/yAd+gFA4CoBEA6BNAHAO/AWAeglf9gnACQFwHgJ + QAoJ3/lv6AMExyQQwSf+SmABoKAfrkgZJrEkhAkgDluADUUA/XAEQBCCd/6KRwEAHAH64AjAIATgAxQD9dr5CAwk4BvwSQBQHQJo + Ax6yeA97xDAyg8BsCV/2A7BN/6Fk8B73lmOBEDZwsWuUawEQNnixa7XImgFvBFAEDAsB2LBG/5FgNXiYAWYEX/wNCgHQsEYAcWA1 + e3ySBYcGgk/+AAuF8LoC48oEkAQAF4vhdvlAXBGAEAIiaCb/yKAf+SBYEb/sAjJgJoA4oB/7XLJZYE8ARYg0SigJcAj5AtciYAVE + IEUAQoAi0TRHAQAdArIYIv/hYBH4AAABAwtQ+UMw8sAjwAMLG8cUARcAGNrkcOJ6QAYgHfjx5OQADAA79rlvwcf/+PlYHH//j6Vy + uVyuVgAAAQAA1//7gAAAAbWCL/IQAAAAAQELXOAZ8BdieH2AywC7E8PpXrkADoUJFi4AHYoQLF2uYXwHwMQAMFANAYgAaVyuVysA + AAECC1ygGfAXYnh9gMsAuxPD6VyvXIL4D4GIAGCgGgMQANK5XK5WAAABAwpXK0cBAD6qAP////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////////////////////////////////////////////////XUwGg + sA61K5XK5XKwR0EAPxMA////////////////////////AAAB4AAAgIAFIQAJB00AAAEAAF//+7gAAAG1gREREAAAAAEBiqfqbq7q + fqbqbqbqbAAAAQKKrupupurupupupupsAAABA4qm6m6u6m6m6m6m6mwAAAEAAF//+7gAAAG1gRESEAAAAAEBIqfqbq7qfqbqbqbq + bAAAAQIirupupuFB7oL4D4GIAGqbqbqbqbAAAAEDCqbqbu7rB+//qm6m6m6m6mxHQAARAACwDQABwQAAAAHwACqxBLL///////// + //////////////////////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////////////////////// + /////////////0dQABEAArASAAHBAADhAPAAAuEA8ACeiyPR//////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////////////R0EAMAcQAACMpP4AAAAB4AAAgIAFIQAJHsMA + AAEAAJ//+7gAAAG1gREREAAAAAEBCnN8C4I3/QJX+oJ3+gsnBcBYEYAYEoAsE4AwWTguAuCN/0CV/qCd/oLJwXAWBGAGBKALBOAM + Fk4Lp3/UYACQPAbEVgHwtcs0AEocA3IjgPha5RgAJA8BsRWAfC1yzQAShwDciOA+FrpzfBC/0NcOAD4E4A4UBsBLAhAGGMHgB+Cd + /kKA2AlgQv9DXDhHAQARAPgTgDhQGwEsCEAYYweAH4J3+QoDYCWnN8EIAkwAPwSv9gTv8xQ80AjgQv9zQA+BKAKBOANFDjQCOBCA + JMAD8Er/YE7/MUPNAI4EL/c0APgSgCgTgDRQ40Ajp3/AUAjADglACAnf+gPxS4BSCN/yCV/4CcAGA/FLgFAIwA4JQAgJ3/oD8UuA + Ugjf8glf+AnABgPxS6d/wFII3/IJX+oJ3/QsnBcAoBGAHBKALBOAGFk4LgFII3/IJUcBABJ/qCd/0LJwXAKARgBwSgCwTgBhZOC6 + c3wSf+Q5gFo8wLgSQBw9wFo4wLgSf+Q5gFo8wLgSQBw9wFo4wLpzfAUgjAEglf7AnAEwCgEb/cEoAoE7/eAUgjAEglf7AnAEwCgE + b/cEoAoE7/eAAAABAgpzfWCMAMCUAJKBG/6BK/8lgjADAlACSgRv+gSv/Kc31CgSv/QTv/RZOC5YsEoAME4AMWTguUKBK/9BO/9F + k4LliwSgAwTgAxZORwEAEwunN8LDmA6aBBQTBQe4HDQIqCYLDmA6aBBQTBQe4HDQIqCaU3KblNym5TYAAAEDClNym5TcpuU3KblN + ymwAAAEAAJ//+7gAAAG1gRESEAAAAAEBCnN8C4I3/QJX+oJ3+gsnBcBYEYAYEoAsE4AwWTguAuCN/0CV/qCd/oLJwXAWBGAGBKAL + BOAMFk4Lp3/UYACQPAbEVgHwtcs0AEocA3IjgPha5RgAJA8BsRWAfC1yzQAShwDciOBHAQAUPha6c3wQv9DXDgA+BOAOFAbASwIQ + BhjB4Afgnf5CgNgJYEL/Q1w4APgTgDhQGwEsCEAYYweAH4J3+QoDYCWnN8EIAkwAPwSv9gTv8xQ80AjgQv9zQA+BKAKBOANFDjQC + OBCAJMAD8Er/YE7/MUPNAI4EL/c0APgSgCgTgDRQ40Ajp3/AUAjADglACAnf+gPxS4BSCN/yCV/4CcAGA/FLgFAIwA4JQAgJ3/oD + 8UuAUgjf8glf+AnABkcBABUD8Uunf8BSCN/yCV/qCd/0LJwXAKARgBwSgCwTgBhZOC4BSCN/yCV/qCd/0LJwXAKARgBwSgCwTgBh + ZOC6c3wSf+Q5gFo8wLgSQBw9wFo4wLgSf+Q5gFo8wLgSQBw9wFo4wLpzfAUgjAEglf7AnAEwCgEb/cEoAoE7/eAUgjAEglf7AnAE + wCgEb/cEoAoE7/eAAAABAgpzfWCMAMCUAJKBG/6BK/8lgjADAlACSgRv+gSv/Kc31CgSRwEANlMA//////////////////////// + /////////////////////////////////////////////////////////////////////////////////////7/0E7/0WTguWLBK + ADBOADFk4LlCgSv/QTv/RZOC5YsEoAME4AMWTgunN8LDmA6aBBQTBQe4HDQIqCYLDmA6aBBQTBQe4HDQIqCaU3KblNym5TYAAAED + ClNym5TcpuU3KblNymxHQQA3EQD/////////////////////AAAB4AAAgMAKMQAJfJsRAAk2OQAAAQABl//7gAAAAbWCL/EQAAAA + AQEKbDcPmbm/7+AOf/58Dn/+fSuVyuVgAAABAgpcPlcr30IWA+AOqVyuVysAAAEDClQ+V76waf/6VyuVyuVgAAABAAGX//uAAAAB + tYIv8hAAAAABAQpXK5XK5XK5XKwAAAECClcrlcrlcrlcrAAAAQMKVyvXWDT//SuVyuVysEdBADgXEAAAmF/+AP////////////// + //////8AAAHgAACAgAUhAAlNrwAAAQABH//7uAAAAbWBEREQAAAAAQEKpupupupupupupupsAAABAgqm6m6m6m6m6m6m6mwAAAED + CqbqbubrBp//qm6m6m6m6mwAAAEAAR//+7gAAAG1gRESEAAAAAEBCqbqbqbqbqbqbqbqbAAAAQIKpupupupupupupupsAAABAwqm + 6m7m6waf/6pupupupupsR0AAEgAAsA0AAcEAAAAB8AAqsQSy//////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////9HUAASAAKwEgABwQAA4QDwAALhAPAA + nosj0f////////////////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////////////////////// + /////////////////////0dBABkAAAHgAACAgAUhAAllJQAAAQABX//7uAAAAbWBEREQAAAAAQEKU/Kbldzn8C+A+BiABpTcpuU3 + KbAAAAECCldym5Tc7ugvgPgYgAaU3KblNymwAAABAwpTcpud3WD9//Sm5TcpuU3KbAAAAQABX//7uAAAAbWBERIQAAAAAQEKU/Kb + ldzn8C+A+BiABpTcpuU3KbAAAAECCldym5Tc7ugvgPgYgAaU3KblNymwAAABAwpTcpud3WD9RwEAOq0A//////////////////// + //////////////////////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////////////////////// + ///////////0puU3KblNymxHQQA7FwD/////////////////////////////AAAB4AAAgMAKMQAJwv0RAAl8mwAAAQACV//7gAAA + AbWCL/EQAAAAAQEKZDUPmbmblcrlcrlYAAABAgpUPlcr14RQHywsCNK5XK5WAAABAwpUPlevMH7/+lcrlcrlYAAAAQACV//7gAAA + AbWCL/IQAAAAAQEKVyuVyuVyuVysAAABAgpXK5XK5XK5XKwAAAEDClcr3D8wfv/6VDZXK5XKwEdBADwREAAAqfh+AP////////// + //8AAAHgAACAgAUhAAmUEQAAAQAB3//7uAAAAbWBEREQAAAAAQEKpupupupupupupupsAAABAgqm6m6m6m6m6m6m6mwAAAEDCqbq + bubw8A/J5EC1VTdTdTdTdTYAAAEAAd//+7gAAAG1gRESEAAAAAEBCqbqbqbqbqbqbqbqbAAAAQIKpupupupupupupupsAAABAwqm + 6m7m8PAPyeRAtVU3U3U3U3U2R0AAEwAAsA0AAcEAAAAB8AAqsQSy//////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////9HUAATAAKwEgABwQAA4QDwAALh + APAAnosj0f////////////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////////////////////// + /////////////////////////0dBAD0RAP////////////////////8AAAHgAACAgAUhAAmrhwAAAQACH//7uAAAAbWBEREQAAAA + AQEKU3KblNym5TcpuU3KbAAAAQIKU3KblNym5TcpuU3KbAAAAQMKU3KbnN1g0//0puU3KblNymwAAAEAAh//+7gAAAG1gRESEAAA + AAEBClNym5TcpuU3KblNymwAAAECClNym5TcpuU3KblNymwAAAEDClNym5zdYNP/9KblNym5TcpsR0EAPikQAAC1s34A//////// + /////////////////////////////////////wAAAeAAAIDACjEACwlfEQAJwv0AAAEAAxf/+4AAAAG1gi/xEAAAAAEBClQ2VyuV + yuVyuVgAAAECClQ+VyuVyuVyuVgAAAEDClQ+VyuVyuVyuVgAAAEAAxf/+4AAAAG1gi/yEAAAAAEBClcrlcrlcrlcrAAAAQIKVyuV + yuVyuVysAAABAwpXK5XK5XK5XKxHQQA/HwD///////////////////////////////////////8AAAHgAACAgAUhAAnacwAAAQAC + n//7uAAAAbWBEREQAAAAAQEKpupupupupupupupsAAABAgqm6m6m6m6m6m6m6mwAAAEDCqbqbqbqbqbqbqbqbAAAAQACn//7uAAA + AbWBERIQAAAAAQEKpupupupupupupupsAAABAgqm6m6m6m6m6m6m6mwAAAEDCqbqbqbqbqbqbqbqbEdAABQAALANAAHBAAAAAfAA + KrEEsv////////////////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////////////////////// + ////////////////////////////R1AAFAACsBIAAcEAAOEA8AAC4QDwAJ6LI9H///////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////9HQQAwCxAAAMFufgD///// + AAAB4AAAgIAFIQAJ8ekAAAEAAt//+7gAAAG1gREREAAAAAEBClNym5TcpuU3KblNymwAAAECClNym5TcpuU3KblNymwAAAEDClNy + m5zeHgH5PIgWqlNym5TcpuU2AAABAALf//u4AAABtYEREhAAAAABAQpTcpuU3KblNym5TcpsAAABAgpTcpuU3KblNym5TcpsAAAB + AwpTcpuc3h4B+TyIFqpTcpuU3KblNkdAABUAALANAAHBAAAAAfAAKrEEsv////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////////////////////////////R1AAFQACsBIAAcEAAOEA + 8AAC4QDwAJ6LI9H///////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////9HQQAxB1AAAMdL/gAAAAHgAACAwAoxAAtPwREACwlfAAABuAAIBoAAAAEAAI//+AAAAbWP + //EYAAAAAQELxAgkQAje6glAngnfgNAQd4ARgiwSvsQTgQGgIJEAI3uoJQJ4J34DQEHeAEYIsEr7EE4EBhhuAgkQAje6glAngnfg + NAQd4ARgiwSvsQTgQGgIJEAI3uoJQJ4J34DQEHeAEYIsEr7EE4EBhhuAgkQAje6glAngnfgNAQd4ARgiwUcBABIr7EE4EBoCCRAC + N7qCUCeCd+A0BB3gBGCLBK+xBOBAYYbgIJEAI3uoJQJ4J34DQEHeAEYIsEr7EE4EBoCCRACN7qCUCeCd+A0BB3gBGCLBK+xBOBAY + YbgIJEAI3uoJQJ4J34DQEHeAEYIsEr7EE4EBoCCRACN7qCUCeCd+A0BB3gBGCLBK+xBOBAYYbgIJEAI3uoJQJ4J34DQEHeAEYIsE + r7EE4EBoCCRACN7qCUCeCd+A0BB3gBGCRwEAEywSvsQTgQGGG4CCRACN7qCUCeCd+A0BB3gBGCLBK+xBOBAaAgkQAje6glAngnfg + NAQd4ARgiwSvsQTgQGGG4CCRACN7qCUCeCd+A0BB3gBGCLBK+xBOBAaAgkQAje6glAngnfgNAQd4ARgiwSvsQTgQGGGAAAABAgvE + CCRACN7qCUCeCd+A0BB3gBGCLBK+xBOBAaAgkQAje6glAngnfgNAQd4ARgiwSvsQTgQGGG4CCRACN7qCUCdHAQAUgnfgNAQd4ARg + iwSvsQTgQGgIJEAI3uoJQJ4J34DQEHeAEYIsEr7EE4EBhhuAgkQAje6glAngnfgNAQd4ARgiwSvsQTgQGgIJEAI3uoJQJ4J34DQE + HeAEYIsEr7EE4EBhhuAgkQAje6glAngnfgNAQd4ARgiwSvsQTgQGgIJEAI3uoJQJ4J34DQEHeAEYIsEr7EE4EBhhuAgkQAje6glA + ngnfgNAQd4ARgiwSvsQTgQGgIJEAI3uoJUcBABUCeCd+A0BB3gBGCLBK+xBOBAYYbgIJEAI3uoJQJ4J34DQEHeAEYIsEr7EE4EBo + CCRACN7qCUCeCd+A0BB3gBGCLBK+xBOBAYYbgIJEAI3uoJQJ4J34DQEHeAEYIsEr7EE4EBoCCRACN7qCUCeCd+A0BB3gBGCLBK+x + BOBAYYbgIJEAI3uoJQJ4J34DQEHeAEYIsEr7EE4EBoCCRACN7qCUCeCd+A0BB3gBGCLBK+xBOBAYYYAAAAEDRwEAFgvECCRACN7q + CUCeCd+A0BB3gBGCLBK+xBOBAaAgkQAje6glAngnfgNAQd4ARgiwSvsQTgQGGG4CCRACN7qCUCeCd+A0BB3gBGCLBK+xBOBAaAgk + QAje6glAngnfgNAQd4ARgiwSvsQTgQGGG4CCRACN7qCUCeCd+A0BB3gBGCLBK+xBOBAaAgkQAje6glAngnfgNAQd4ARgiwSvsQTg + QGGG4CCRACN7qCUCeCd+A0BB3gBGCLBK+xBHAQAXTgQGgIJEAI3uoJQJ4J34DQEHeAEYIsEr7EE4EBhhuAgkQAje6glAngnfgNAQ + d4ARgiwSvsQTgQGgIJEAI3uoJQJ4J34DQEHeAEYIsEr7EE4EBhhuAgkQAje6glAngnfgNAQd4ARgiwSvsQTgQGgIJEAI3uoJQJ4J + 34DQEHeAEYIsEr7EE4EBhhuAgkQAje6glAngnfgNAQd4ARgiwSvsQTgQGgIJEAI3uoJQJ4J34DQEHeAEYIsEr0cBADg/AP////// + ////////////////////////////////////////////////////////////////////////////sQTgQGGG4CCRACN7qCUCeCd+ + A0BB3gBGCLBK+xBOBAaAgkQAje6glAngnfgNAQd4ARgiwSvsQTgQGGGAAAABAACX//uAAAABtYIv8hgAAAABAQpXK5XK5XK5XKwA + AAECClcrlcrlcrlcrAAAAQMKVyuVyuVyuVysR0EAOR8A////////////////////////////////////////AAAB4AAAgIAFIQAL + INUAAAEAAB//+7gAAAG1gREREAAAAAEBCqbqbqbqbqbqbqbqbAAAAQIKpupupupupupupupsAAABAwqm6m6m6m6m6m6m6mwAAAEA + AB//+7gAAAG1gRESEAAAAAEBCqbqbqbqbqbqbqbqbAAAAQIKpupupupupupupupsAAABAwqm6m6m6m6m6m6m6mxHQBERAELwJQAB + wQAA/wH/AAH8gBRIEgEGRkZtcGVnCVNlcnZpY2UwMXd8Q8r///////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////0dBADoZEAAA0wb+AP///////////////////////wAAAeAAAICABSEACzhLAAAB + AABf//u4AAABtYERERAAAAABAQpTcpuU3KblNym5TcpsAAABAgpTcpuU3KblNym5TcpsAAABAwpTcpuU3KblNym5TcpsAAABAABf + //u4AAABtYEREhAAAAABAQpTcpuU3KblNym5TcpsAAABAgpTcpuU3KblNym5TcpsAAABAwpTcpuU3KblNym5TcpsR0AAFgAAsA0A + AcEAAAAB8AAqsQSy//////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////9HUAAWAAKwEgABwQAA4QDwAALhAPAAnosj0f////////////////////////// + //////////////////////////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////////////////////////////////////////////////0dBADspAP// + //////////////////////////////////////////////////8AAAHgAACAwAoxAAuWIxEAC0/BAAABAAFX//uAAAABtYIv8RAA + AAABAQpUNlcrlcrlcrlYAAABAgpUPlcrlcrlcrlYAAABAwpUPlcrlcrlcrlYAAABAAFX//uAAAABtYIv8hAAAAABAQpXK5XK5XK5 + XKwAAAECClcrlcrlcrlcrAAAAQMKVyuVyuVyuVysR0EAPB8QAADewf4A////////////////////////////////AAAB4AAAgIAF + IQALZzcAAAEAAN//+7gAAAG1gREREAAAAAEBCqbqbqbqbqbqbqbqbAAAAQIKpupupupupupupupsAAABAwqm6m6m6m6m6m6m6mwA + AAEAAN//+7gAAAG1gRESEAAAAAEBCqbqbqbqbqbqbqbqbAAAAQIKpupupupupupupupsAAABAwqm6m6m6m6m6m6m6mxHQQA9GQD/ + //////////////////////////////8AAAHgAACAgAUhAAt+rQAAAQABH//7uAAAAbWBEREQAAAAAQEKU3KblNym5TcpuU3KbAAA + AQIKU3KblNym5TcpuU3KbAAAAQMKU3KblNym5TcpuU3KbAAAAQABH//7uAAAAbWBERIQAAAAAQEKU3KblNym5TcpuU3KbAAAAQIK + U3KblNym5TcpuU3KbAAAAQMKU3KblNym5TcpuU3KbEdAABcAALANAAHBAAAAAfAAKrEEsv////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////////////////////////////////////////R1AAFwAC + sBIAAcEAAOEA8AAC4QDwAJ6LI9H///////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////9HQQA+KQD///////////////////////////////////////////////// + ////AAAB4AAAgMAKMQAL3IURAAuWIwAAAQACF//7gAAAAbWCL/EQAAAAAQEKVDZXK5XK5XK5WAAAAQIKVD5XK5XK5XK5WAAAAQMK + VD5XK5XK5XK5WAAAAQACF//7gAAAAbWCL/IQAAAAAQEKVyuVyuVyuVysAAABAgpXK5XK5XK5XKwAAAEDClcrlcrlcrlcrEdBAD8f + EAAA8Fp+AP///////////////////////////////wAAAeAAAICABSEAC62ZAAABAAGf//u4AAABtYERERAAAAABAQqm6m6m6m6m + 6m6m6mwAAAECCqbqbqbqbqbqbqbqbAAAAQMKpupupupupupupupsAAABAAGf//u4AAABtYEREhAAAAABAQqm6m6m6m6m6m6m6mwA + AAECCqbqbqbqbqbqbqbqbAAAAQMKpupupupupupupupsR0EAMBkA////////////////////////////////AAAB4AAAgIAFIQAL + xQ8AAAEAAd//+7gAAAG1gREREAAAAAEBClNym5TcpuU3KblNymwAAAECClNym5TcpuU3KblNymwAAAEDClNym5TcpuU3KblNymwA + AAEAAd//+7gAAAG1gRESEAAAAAEBClNym5TcpuU3KblNymwAAAECClNym5TcpuU3KblNymwAAAEDClNym5TcpuU3KblNymxHQAAY + AACwDQABwQAAAAHwACqxBLL///////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////0dQABgAArASAAHBAADhAPAAAuEA8ACeiyPR//////////////////// + //////////////////////////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////////////////////////////////////////////R0EA + MSkQAAD8FX4A/////////////////////////////////////////////wAAAeAAAIDACjEADSLnEQAL3IUAAAEAAtf/+4AAAAG1 + gi/xEAAAAAEBClQ2VyuVyuVyuVgAAAECClQ+VyuVyuVyuVgAAAEDClQ+VyuVyuVyuVgAAAEAAtf/+4AAAAG1gi/yEAAAAAEBClcr + lcrlcrlcrAAAAQIKVyuVyuVyuVysAAABAwpXK5XK5XK5XKxHQQAyHwD///////////////////////////////////////8AAAHg + AACAgAUhAAvz+wAAAQACX//7uAAAAbWBEREQAAAAAQEKpupupupupupupupsAAABAgqm6m6m6m6m6m6m6mwAAAEDCqbqbqbqbqbq + bqbqbAAAAQACX//7uAAAAbWBERIQAAAAAQEKpupupupupupupupsAAABAgqm6m6m6m6m6m6m6mwAAAEDCqbqbqbqbqbqbqbqbEdB + ADMZEAABB9B+AP///////////////////////wAAAeAAAICABSEADQtxAAABAAKf//u4AAABtYERERAAAAABAQpTcpuU3KblNym5 + TcpsAAABAgpTcpuU3KblNym5TcpsAAABAwpTcpuU3KblNym5TcpsAAABAAKf//u4AAABtYEREhAAAAABAQpTcpuU3KblNym5Tcps + AAABAgpTcpuU3KblNym5TcpsAAABAwpTcpuU3KblNym5TcpsR0AAGQAAsA0AAcEAAAAB8AAqsQSy//////////////////////// + //////////////////////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////////////////////9H + UAAZAAKwEgABwQAA4QDwAALhAPAAnosj0f////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////////0dBADQpAP////////////////////////////////////////// + //////////8AAAHgAACAwAoxAA1pSREADSLnAAABAAOX//uAAAABtYIv8RAAAAABAQpUNlcrlcrlcrlYAAABAgpUPlcrlcrlcrlY + AAABAwpUPlcrlcrlcrlYAAABAAOX//uAAAABtYIv8hAAAAABAQpXK5XK5XK5XKwAAAECClcrlcrlcrlcrAAAAQMKVyuVyuVyuVys + R0EANR8A////////////////////////////////////////AAAB4AAAgIAFIQANOl0AAAEAAx//+7gAAAG1gREREAAAAAEBCqbq + bqbqbqbqbqbqbAAAAQIKpupupupupupupupsAAABAwqm6m6m6m6m6m6m6mwAAAEAAx//+7gAAAG1gRESEAAAAAEBCqbqbqbqbqbq + bqbqbAAAAQIKpupupupupupupupsAAABAwqm6m6m6m6m6m6m6mxHQQA2GRAAARlo/gD///////////////////////8AAAHgAACA + gAUhAA1R0wAAAQADX//7uAAAAbWBEREQAAAAAQEKU3KblNym5TcpuU3KbAAAAQIKU3KblNym5TcpuU3KbAAAAQMKU3KblNym5Tcp + uU3KbAAAAQADX//7uAAAAbWBERIQAAAAAQEKU3KblNym5TcpuU3KbAAAAQIKU3KblNym5TcpuU3KbAAAAQMKU3KblNym5TcpuU3K + bEdAABoAALANAAHBAAAAAfAAKrEEsv////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////R1AAGgACsBIAAcEAAOEA8AAC4QDwAJ6LI9H///////////// + //////////////////////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////////////////////// + //9HQQA3B1AAAR9GfgAAAAHgAACAwAoxAA2vqxEADWlJAAABuAAIDgAAAAEAAI//+AAAAbWP//EYAAAAAQELxAg7wAjBFglfYgnA + gNAQSIARvdQSgTwTvwGgIO8AIwRYJX2IJwIDQEEiAEb3UEoE8E78BhhuAg7wAjBFglfYgnAgNAQSIARvdQSgTwTvwGgIO8AIwRYJ + X2IJwIDQEEiAEb3UEoE8E78BhhuAg7wAjBFglfYgnAgNAQSIARvdQUcBABgoE8E78BoCDvACMEWCV9iCcCA0BBIgBG91BKBPBO/A + YYbgIO8AIwRYJX2IJwIDQEEiAEb3UEoE8E78BoCDvACMEWCV9iCcCA0BBIgBG91BKBPBO/AYYbgIO8AIwRYJX2IJwIDQEEiAEb3U + EoE8E78BoCDvACMEWCV9iCcCA0BBIgBG91BKBPBO/AYYbgIO8AIwRYJX2IJwIDQEEiAEb3UEoE8E78BoCDvACMEWCV9iCcCA0BBI + gBG9RwEAGdQSgTwTvwGGG4CDvACMEWCV9iCcCA0BBIgBG91BKBPBO/AaAg7wAjBFglfYgnAgNAQSIARvdQSgTwTvwGGG4CDvACME + WCV9iCcCA0BBIgBG91BKBPBO/AaAg7wAjBFglfYgnAgNAQSIARvdQSgTwTvwGGGAAAABAgvECDvACMEWCV9iCcCA0BBIgBG91BKB + PBO/AaAg7wAjBFglfYgnAgNAQSIARvdQSgTwTvwGGG4CDvACMEWCV9hHAQAagnAgNAQSIARvdQSgTwTvwGgIO8AIwRYJX2IJwIDQ + EEiAEb3UEoE8E78BhhuAg7wAjBFglfYgnAgNAQSIARvdQSgTwTvwGgIO8AIwRYJX2IJwIDQEEiAEb3UEoE8E78BhhuAg7wAjBFgl + fYgnAgNAQSIARvdQSgTwTvwGgIO8AIwRYJX2IJwIDQEEiAEb3UEoE8E78BhhuAg7wAjBFglfYgnAgNAQSIARvdQSgTwTvwGgIO8A + IwRYJUcBABt9iCcCA0BBIgBG91BKBPBO/AYYbgIO8AIwRYJX2IJwIDQEEiAEb3UEoE8E78BoCDvACMEWCV9iCcCA0BBIgBG91BKB + PBO/AYYbgIO8AIwRYJX2IJwIDQEEiAEb3UEoE8E78BoCDvACMEWCV9iCcCA0BBIgBG91BKBPBO/AYYbgIO8AIwRYJX2IJwIDQEEi + AEb3UEoE8E78BoCDvACMEWCV9iCcCA0BBIgBG91BKBPBO/AYYYAAAAEDRwEAHAvECDvACMEWCV9iCcCA0BBIgBG91BKBPBO/AaAg + 7wAjBFglfYgnAgNAQSIARvdQSgTwTvwGGG4CDvACMEWCV9iCcCA0BBIgBG91BKBPBO/AaAg7wAjBFglfYgnAgNAQSIARvdQSgTwT + vwGGG4CDvACMEWCV9iCcCA0BBIgBG91BKBPBO/AaAg7wAjBFglfYgnAgNAQSIARvdQSgTwTvwGGG4CDvACMEWCV9iCcCA0BBIgBG + 91BKBPBHAQAdTvwGgIO8AIwRYJX2IJwIDQEEiAEb3UEoE8E78BhhuAg7wAjBFglfYgnAgNAQSIARvdQSgTwTvwGgIO8AIwRYJX2I + JwIDQEEiAEb3UEoE8E78BhhuAg7wAjBFglfYgnAgNAQSIARvdQSgTwTvwGgIO8AIwRYJX2IJwIDQEEiAEb3UEoE8E78BhhuAg7wA + jBFglfYgnAgNAQSIARvdQSgTwTvwGgIO8AIwRYJX2IJwIDQEEiAEb3UEoEcBAD4/AP////////////////////////////////// + ////////////////////////////////////////////////TwTvwGGG4CDvACMEWCV9iCcCA0BBIgBG91BKBPBO/AaAg7wAjBFg + lfYgnAgNAQSIARvdQSgTwTvwGGGAAAABAACX//uAAAABtYIv8hgAAAABAQpXK5XK5XK5XKwAAAECClcrlcrlcrlcrAAAAQMKVyuV + yuVyuVysR0EAPx8QAAElI/4A////////////////////////////////AAAB4AAAgIAFIQANgL8AAAEAAB//+7gAAAG1gREREAAA + AAEBCqbqbqbqbqbqbqbqbAAAAQIKpupupupupupupupsAAABAwqm6m6m6m6m6m6m6mwAAAEAAB//+7gAAAG1gRESEAAAAAEBCqbq + bqbqbqbqbqbqbAAAAQIKpupupupupupupupsAAABAwqm6m6m6m6m6m6m6mxHQBESAELwJQABwQAA/wH/AAH8gBRIEgEGRkZtcGVn + CVNlcnZpY2UwMXd8Q8r///////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////////////////////// + /////////0dBADAZAP///////////////////////////////wAAAeAAAICABSEADZg1AAABAABf//u4AAABtYERERAAAAABAQpT + cpuU3KblNym5TcpsAAABAgpTcpuU3KblNym5TcpsAAABAwpTcpuU3KblNym5TcpsAAABAABf//u4AAABtYEREhAAAAABAQpTcpuU + 3KblNym5TcpsAAABAgpTcpuU3KblNym5TcpsAAABAwpTcpuU3KblNym5TcpsR0AAGwAAsA0AAcEAAAAB8AAqsQSy//////////// + //////////////////////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////////////////////// + //////////9HUAAbAAKwEgABwQAA4QDwAALhAPAAnosj0f////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////////////////////0dBADEpAP////////////////////////////// + //////////////////////8AAAHgAACAwAoxAA32DREADa+rAAABAAFX//uAAAABtYIv8RAAAAABAQpUNlcrlcrlcrlYAAABAgpU + PlcrlcrlcrlYAAABAwpUPlcrlcrlcrlYAAABAAFX//uAAAABtYIv8hAAAAABAQpXK5XK5XK5XKwAAAECClcrlcrlcrlcrAAAAQMK + VyuVyuVyuVysR0EAMh8QAAE2vH4A////////////////////////////////AAAB4AAAgIAFIQANxyEAAAEAAN//+7gAAAG1gRER + EAAAAAEBCqbqbqbqbqbqbqbqbAAAAQIKpupupupupupupupsAAABAwqm6m6m6m6m6m6m6mwAAAEAAN//+7gAAAG1gRESEAAAAAEB + CqbqbqbqbqbqbqbqbAAAAQIKpupupupupupupupsAAABAwqm6m6m6m6m6m6m6mxHQQAzGQD///////////////////////////// + //8AAAHgAACAgAUhAA3elwAAAQABH//7uAAAAbWBEREQAAAAAQEKU3KblNym5TcpuU3KbAAAAQIKU3KblNym5TcpuU3KbAAAAQMK + U3KblNym5TcpuU3KbAAAAQABH//7uAAAAbWBERIQAAAAAQEKU3KblNym5TcpuU3KbAAAAQIKU3KblNym5TcpuU3KbAAAAQMKU3Kb + lNym5TcpuU3KbEdAABwAALANAAHBAAAAAfAAKrEEsv////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////////////R1AAHAACsBIAAcEAAOEA8AAC4QDwAJ6LI9H/ + //////////////////////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////////////////////// + //////////////9HQQA0KRAAAUJ3fgD/////////////////////////////////////////////AAAB4AAAgMAKMQAPPG8RAA32 + DQAAAQACF//7gAAAAbWCL/EQAAAAAQEKVDZXK5XK5XK5WAAAAQIKVD5XK5XK5XK5WAAAAQMKVD5XK5XK5XK5WAAAAQACF//7gAAA + AbWCL/IQAAAAAQEKVyuVyuVyuVysAAABAgpXK5XK5XK5XKwAAAEDClcrlcrlcrlcrEdBADUfAP////////////////////////// + /////////////wAAAeAAAICABSEADw2DAAABAAGf//u4AAABtYERERAAAAABAQqm6m6m6m6m6m6m6mwAAAECCqbqbqbqbqbqbqbq + bAAAAQMKpupupupupupupupsAAABAAGf//u4AAABtYEREhAAAAABAQqm6m6m6m6m6m6m6mwAAAECCqbqbqbqbqbqbqbqbAAAAQMK + pupupupupupupupsR0EANhkQAAFOMn4A////////////////////////AAAB4AAAgIAFIQAPJPkAAAEAAd//+7gAAAG1gREREAAA + AAEBClNym5TcpuU3KblNymwAAAECClNym5TcpuU3KblNymwAAAEDClNym5TcpuU3KblNymwAAAEAAd//+7gAAAG1gRESEAAAAAEB + ClNym5TcpuU3KblNymwAAAECClNym5TcpuU3KblNymwAAAEDClNym5TcpuU3KblNymxHQAAdAACwDQABwQAAAAHwACqxBLL///// + //////////////////////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////////////////////// + /////////////////0dQAB0AArASAAHBAADhAPAAAuEA8ACeiyPR//////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////////////////R0EANykA//////////////////////// + /////////////////////////////wAAAeAAAIDACjEAD4LREQAPPG8AAAEAAtf/+4AAAAG1gi/xEAAAAAEBClQ2VyuVyuVyuVgA + AAECClQ+VyuVyuVyuVgAAAEDClQ+VyuVyuVyuVgAAAEAAtf/+4AAAAG1gi/yEAAAAAEBClcrlcrlcrlcrAAAAQIKVyuVyuVyuVys + AAABAwpXK5XK5XK5XKxHQQA4HwD///////////////////////////////////////8AAAHgAACAgAUhAA9T5QAAAQACX//7uAAA + AbWBEREQAAAAAQEKpupupupupupupupsAAABAgqm6m6m6m6m6m6m6mwAAAEDCqbqbqbqbqbqbqbqbAAAAQACX//7uAAAAbWBERIQ + AAAAAQEKpupupupupupupupsAAABAgqm6m6m6m6m6m6m6mwAAAEDCqbqbqbqbqbqbqbqbEdBADkZEAABX8r+AP////////////// + /////////wAAAeAAAICABSEAD2tbAAABAAKf//u4AAABtYERERAAAAABAQpTcpuU3KblNym5TcpsAAABAgpTcpuU3KblNym5Tcps + AAABAwpTcpuU3KblNym5TcpsAAABAAKf//u4AAABtYEREhAAAAABAQpTcpuU3KblNym5TcpsAAABAgpTcpuU3KblNym5TcpsAAAB + AwpTcpuU3KblNym5TcpsR0AAHgAAsA0AAcEAAAAB8AAqsQSy//////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////9HUAAeAAKwEgABwQAA4QDwAALhAPAA + nosj0f////////////////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////////////////////// + /////////////////////0dBADopAP////////////////////////////////////////////////////8AAAHgAACAwAoxAA/J + MxEAD4LRAAABAAOX//uAAAABtYIv8RAAAAABAQpUNlcrlcrlcrlYAAABAgpUPlcrlcrlcrlYAAABAwpUPlcrlcrlcrlYAAABAAOX + //uAAAABtYIv8hAAAAABAQpXK5XK5XK5XKwAAAECClcrlcrlcrlcrAAAAQMKVyuVyuVyuVysR0EAOx8QAAFrhf4A//////////// + ////////////////////AAAB4AAAgIAFIQAPmkcAAAEAAx//+7gAAAG1gREREAAAAAEBCqbqbqbqbqbqbqbqbAAAAQIKpupupupu + pupupupsAAABAwqm6m6m6m6m6m6m6mwAAAEAAx//+7gAAAG1gRESEAAAAAEBCqbqbqbqbqbqbqbqbAAAAQIKpupupupupupupups + AAABAwqm6m6m6m6m6m6m6mxHQQA8GQD///////////////////////////////8AAAHgAACAgAUhAA+xvQAAAQADX//7uAAAAbWB + EREQAAAAAQEKU3KblNym5TcpuU3KbAAAAQIKU3KblNym5TcpuU3KbAAAAQMKU3KblNym5TcpuU3KbAAAAQADX//7uAAAAbWBERIQ + AAAAAQEKU3KblNym5TcpuU3KbAAAAQIKU3KblNym5TcpuU3KbAAAAQMKU3KblNym5TcpuU3KbEdAAB8AALANAAHBAAAAAfAAKrEE + sv////////////////////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////////////////////// + ////////////////////////R1AAHwACsBIAAcEAAOEA8AAC4QDwAJ6LI9H///////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////9HQQA9B1AAAXdA/gAAAAHgAACA + wAoxABEPlREAD8kzAAABuAAIJoAAAAEAAI//+AAAAbWP//EYAAAAAQELxAgkQAje6glAngnfgNAQd4ARgiwSvsQTgQGgIJEAI3uo + JQJ4J34DQEHeAEYIsEr7EE4EBhhuAgkQAje6glAngnfgNAQd4ARgiwSvsQTgQGgIJEAI3uoJQJ4J34DQEHeAEYIsEr7EE4EBhhuA + gkQAje6glAngnfgNAQd4ARgiwUcBAB4r7EE4EBoCCRACN7qCUCeCd+A0BB3gBGCLBK+xBOBAYYbgIJEAI3uoJQJ4J34DQEHeAEYI + sEr7EE4EBoCCRACN7qCUCeCd+A0BB3gBGCLBK+xBOBAYYbgIJEAI3uoJQJ4J34DQEHeAEYIsEr7EE4EBoCCRACN7qCUCeCd+A0BB + 3gBGCLBK+xBOBAYYbgIJEAI3uoJQJ4J34DQEHeAEYIsEr7EE4EBoCCRACN7qCUCeCd+A0BB3gBGCRwEAHywSvsQTgQGGG4CCRACN + 7qCUCeCd+A0BB3gBGCLBK+xBOBAaAgkQAje6glAngnfgNAQd4ARgiwSvsQTgQGGG4CCRACN7qCUCeCd+A0BB3gBGCLBK+xBOBAaA + gkQAje6glAngnfgNAQd4ARgiwSvsQTgQGGGAAAABAgvECCRACN7qCUCeCd+A0BB3gBGCLBK+xBOBAaAgkQAje6glAngnfgNAQd4A + RgiwSvsQTgQGGG4CCRACN7qCUCdHAQAQgnfgNAQd4ARgiwSvsQTgQGgIJEAI3uoJQJ4J34DQEHeAEYIsEr7EE4EBhhuAgkQAje6g + lAngnfgNAQd4ARgiwSvsQTgQGgIJEAI3uoJQJ4J34DQEHeAEYIsEr7EE4EBhhuAgkQAje6glAngnfgNAQd4ARgiwSvsQTgQGgIJE + AI3uoJQJ4J34DQEHeAEYIsEr7EE4EBhhuAgkQAje6glAngnfgNAQd4ARgiwSvsQTgQGgIJEAI3uoJUcBABECeCd+A0BB3gBGCLBK + +xBOBAYYbgIJEAI3uoJQJ4J34DQEHeAEYIsEr7EE4EBoCCRACN7qCUCeCd+A0BB3gBGCLBK+xBOBAYYbgIJEAI3uoJQJ4J34DQEH + eAEYIsEr7EE4EBoCCRACN7qCUCeCd+A0BB3gBGCLBK+xBOBAYYbgIJEAI3uoJQJ4J34DQEHeAEYIsEr7EE4EBoCCRACN7qCUCeCd + +A0BB3gBGCLBK+xBOBAYYYAAAAEDRwEAEgvECCRACN7qCUCeCd+A0BB3gBGCLBK+xBOBAaAgkQAje6glAngnfgNAQd4ARgiwSvsQ + TgQGGG4CCRACN7qCUCeCd+A0BB3gBGCLBK+xBOBAaAgkQAje6glAngnfgNAQd4ARgiwSvsQTgQGGG4CCRACN7qCUCeCd+A0BB3gB + GCLBK+xBOBAaAgkQAje6glAngnfgNAQd4ARgiwSvsQTgQGGG4CCRACN7qCUCeCd+A0BB3gBGCLBK+xBHAQATTgQGgIJEAI3uoJQJ + 4J34DQEHeAEYIsEr7EE4EBhhuAgkQAje6glAngnfgNAQd4ARgiwSvsQTgQGgIJEAI3uoJQJ4J34DQEHeAEYIsEr7EE4EBhhuAgkQ + Aje6glAngnfgNAQd4ARgiwSvsQTgQGgIJEAI3uoJQJ4J34DQEHeAEYIsEr7EE4EBhhuAgkQAje6glAngnfgNAQd4ARgiwSvsQTgQ + GgIJEAI3uoJQJ4J34DQEHeAEYIsEr0cBADQ/AP////////////////////////////////////////////////////////////// + ////////////////////sQTgQGGG4CCRACN7qCUCeCd+A0BB3gBGCLBK+xBOBAaAgkQAje6glAngnfgNAQd4ARgiwSvsQTgQGGGA + AAABAACX//uAAAABtYIv8hgAAAABAQpXK5XK5XK5XKwAAAECClcrlcrlcrlcrAAAAQMKVyuVyuVyuVysR0EANR8QAAF9Hn4A//// + ////////////////////////////AAAB4AAAgIAFIQAP4KkAAAEAAB//+7gAAAG1gREREAAAAAEBCqbqbqbqbqbqbqbqbAAAAQIK + pupupupupupupupsAAABAwqm6m6m6m6m6m6m6mwAAAEAAB//+7gAAAG1gRESEAAAAAEBCqbqbqbqbqbqbqbqbAAAAQIKpupupupu + pupupupsAAABAwqm6m6m6m6m6m6m6mxHQBETAELwJQABwQAA/wH/AAH8gBRIEgEGRkZtcGVnCVNlcnZpY2UwMXd8Q8r///////// + //////////////////////////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////////////////////////////////////////0dBADYZAP////////// + /////////////////////wAAAeAAAICABSEAD/gfAAABAABf//u4AAABtYERERAAAAABAQpTcpuU3KblNym5TcpsAAABAgpTcpuU + 3KblNym5TcpsAAABAwpTcpuU3KblNym5TcpsAAABAABf//u4AAABtYEREhAAAAABAQpTcpuU3KblNym5TcpsAAABAgpTcpuU3Kbl + Nym5TcpsAAABAwpTcpuU3KblNym5TcpsR0AAEAAAsA0AAcEAAAAB8AAqsQSy//////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////9HUAAQAAKwEgABwQAA + 4QDwAALhAPAAnosj0f////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////0dBADcpEAABiNl+AP////////////////////////////////////////////8AAAHg + AACAwAoxABFV9xEAEQ+VAAABAAFX//uAAAABtYIv8RAAAAABAQpUNlcrlcrlcrlYAAABAgpUPlcrlcrlcrlYAAABAwpUPlcrlcrl + crlYAAABAAFX//uAAAABtYIv8hAAAAABAQpXK5XK5XK5XKwAAAECClcrlcrlcrlcrAAAAQMKVyuVyuVyuVysR0EAOB8A//////// + ////////////////////////////////AAAB4AAAgIAFIQARJwsAAAEAAN//+7gAAAG1gREREAAAAAEBCqbqbqbqbqbqbqbqbAAA + AQIKpupupupupupupupsAAABAwqm6m6m6m6m6m6m6mwAAAEAAN//+7gAAAG1gRESEAAAAAEBCqbqbqbqbqbqbqbqbAAAAQIKpupu + pupupupupupsAAABAwqm6m6m6m6m6m6m6mxHQQA5GRAAAZSUfgD///////////////////////8AAAHgAACAgAUhABE+gQAAAQAB + H//7uAAAAbWBEREQAAAAAQEKU3KblNym5TcpuU3KbAAAAQIKU3KblNym5TcpuU3KbAAAAQMKU3KblNym5TcpuU3KbAAAAQABH//7 + uAAAAbWBERIQAAAAAQEKU3KblNym5TcpuU3KbAAAAQIKU3KblNym5TcpuU3KbAAAAQMKU3KblNym5TcpuU3KbEdAABEAALANAAHB + AAAAAfAAKrEEsv////////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////R1AAEQACsBIAAcEAAOEA8AAC4QDwAJ6LI9H///////////////////////////// + //////////////////////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////////9HQQA6KQD///// + ////////////////////////////////////////////////AAAB4AAAgMAKMQARnFkRABFV9wAAAQACF//7gAAAAbWCL/EQAAAA + AQEKVDZXK5XK5XK5WAAAAQIKVD5XK5XK5XK5WAAAAQMKVD5XK5XK5XK5WAAAAQACF//7gAAAAbWCL/IQAAAAAQEKVyuVyuVyuVys + AAABAgpXK5XK5XK5XKwAAAEDClcrlcrlcrlcrEdBADsfAP///////////////////////////////////////wAAAeAAAICABSEA + EW1tAAABAAGf//u4AAABtYERERAAAAABAQqm6m6m6m6m6m6m6mwAAAECCqbqbqbqbqbqbqbqbAAAAQMKpupupupupupupupsAAAB + AAGf//u4AAABtYEREhAAAAABAQqm6m6m6m6m6m6m6mwAAAECCqbqbqbqbqbqbqbqbAAAAQMKpupupupupupupupsR0EAPBkQAAGm + LP4A////////////////////////AAAB4AAAgIAFIQARhOMAAAEAAd//+7gAAAG1gREREAAAAAEBClNym5TcpuU3KblNymwAAAEC + ClNym5TcpuU3KblNymwAAAEDClNym5TcpuU3KblNymwAAAEAAd//+7gAAAG1gRESEAAAAAEBClNym5TcpuU3KblNymwAAAECClNy + m5TcpuU3KblNymwAAAEDClNym5TcpuU3KblNymxHQAASAACwDQABwQAAAAHwACqxBLL///////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////////////////////////////////////////////////0dQABIAArAS + AAHBAADhAPAAAuEA8ACeiyPR//////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////R0EAPSkA//////////////////////////////////////////////////// + /wAAAeAAAIDACjEAEeK7EQARnFkAAAEAAtf/+4AAAAG1gi/xEAAAAAEBClQ2VyuVyuVyuVgAAAECClQ+VyuVyuVyuVgAAAEDClQ+ + VyuVyuVyuVgAAAEAAtf/+4AAAAG1gi/yEAAAAAEBClcrlcrlcrlcrAAAAQIKVyuVyuVyuVysAAABAwpXK5XK5XK5XKxHQQA+HxAA + AbHn/gD///////////////////////////////8AAAHgAACAgAUhABGzzwAAAQACX//7uAAAAbWBEREQAAAAAQEKpupupupupupu + pupsAAABAgqm6m6m6m6m6m6m6mwAAAEDCqbqbqbqbqbqbqbqbAAAAQACX//7uAAAAbWBERIQAAAAAQEKpupupupupupupupsAAAB + Agqm6m6m6m6m6m6m6mwAAAEDCqbqbqbqbqbqbqbqbEdBAD8ZAP///////////////////////////////wAAAeAAAICABSEAEctF + AAABAAKf//u4AAABtYERERAAAAABAQpTcpuU3KblNym5TcpsAAABAgpTcpuU3KblNym5TcpsAAABAwpTcpuU3KblNym5TcpsAAAB + AAKf//u4AAABtYEREhAAAAABAQpTcpuU3KblNym5TcpsAAABAgpTcpuU3KblNym5TcpsAAABAwpTcpuU3KblNym5TcpsR0AAEwAA + sA0AAcEAAAAB8AAqsQSy//////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////9HUAATAAKwEgABwQAA4QDwAALhAPAAnosj0f////////////////////// + //////////////////////////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////////////////////////////////////////////////////0dBADAp + AP////////////////////////////////////////////////////8AAAHgAACAwAoxABMpHREAEeK7AAABAAOX//uAAAABtYIv + 8RAAAAABAQpUNlcrlcrlcrlYAAABAgpUPlcrlcrlcrlYAAABAwpUPlcrlcrlcrlYAAABAAOX//uAAAABtYIv8hAAAAABAQpXK5XK + 5XK5XKwAAAECClcrlcrlcrlcrAAAAQMKVyuVyuVyuVysR0EAMR8QAAHDgH4A////////////////////////////////AAAB4AAA + gIAFIQAR+jEAAAEAAx//+7gAAAG1gREREAAAAAEBCqbqbqbqbqbqbqbqbAAAAQIKpupupupupupupupsAAABAwqm6m6m6m6m6m6m + 6mwAAAEAAx//+7gAAAG1gRESEAAAAAEBCqbqbqbqbqbqbqbqbAAAAQIKpupupupupupupupsAAABAwqm6m6m6m6m6m6m6mxHQQAy + GQD///////////////////////////////8AAAHgAACAgAUhABMRpwAAAQADX//7uAAAAbWBEREQAAAAAQEKU3KblNym5TcpuU3K + bAAAAQIKU3KblNym5TcpuU3KbAAAAQMKU3KblNym5TcpuU3KbAAAAQADX//7uAAAAbWBERIQAAAAAQEKU3KblNym5TcpuU3KbAAA + AQIKU3KblNym5TcpuU3KbAAAAQMKU3KblNym5TcpuU3KbEdAABQAALANAAHBAAAAAfAAKrEEsv////////////////////////// + //////////////////////////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////////////////////////////////////////////R1AA + FAACsBIAAcEAAOEA8AAC4QDwAJ6LI9H///////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////9HQQAzB1AAAc87fgAAAAHgAACAwAoxABNYCREAEykdAAABuAAILgAA + AAEAAE//+AAAAbWP//EYAAAAAQELxAgkQAje6glAngnfgNAQd4ARgiwSvsQTgQGgIJEAI3uoJQJ4J34DQEHeAEYIsEr7EE4EBhhu + AgkQAje6glAngnfgNAQd4ARgiwSvsQTgQGgIJEAI3uoJQJ4J34DQEHeAEYIsEr7EE4EBhhuAgkQAje6glAngnfgNAQd4ARgiwUcB + ABQr7EE4EBoCCRACN7qCUCeCd+A0BB3gBGCLBK+xBOBAYYbgIJEAI3uoJQJ4J34DQEHeAEYIsEr7EE4EBoCCRACN7qCUCeCd+A0B + B3gBGCLBK+xBOBAYYbgIJEAI3uoJQJ4J34DQEHeAEYIsEr7EE4EBoCCRACN7qCUCeCd+A0BB3gBGCLBK+xBOBAYYbgIJEAI3uoJQ + J4J34DQEHeAEYIsEr7EE4EBoCCRACN7qCUCeCd+A0BB3gBGCRwEAFSwSvsQTgQGGG4CCRACN7qCUCeCd+A0BB3gBGCLBK+xBOBAa + AgkQAje6glAngnfgNAQd4ARgiwSvsQTgQGGG4CCRACN7qCUCeCd+A0BB3gBGCLBK+xBOBAaAgkQAje6glAngnfgNAQd4ARgiwSvs + QTgQGGGAAAABAgvECCRACN7qCUCeCd+A0BB3gBGCLBK+xBOBAaAgkQAje6glAngnfgNAQd4ARgiwSvsQTgQGGG4CCRACN7qCUCdH + AQAWgnfgNAQd4ARgiwSvsQTgQGgIJEAI3uoJQJ4J34DQEHeAEYIsEr7EE4EBhhuAgkQAje6glAngnfgNAQd4ARgiwSvsQTgQGgIJ + EAI3uoJQJ4J34DQEHeAEYIsEr7EE4EBhhuAgkQAje6glAngnfgNAQd4ARgiwSvsQTgQGgIJEAI3uoJQJ4J34DQEHeAEYIsEr7EE4 + EBhhuAgkQAje6glAngnfgNAQd4ARgiwSvsQTgQGgIJEAI3uoJUcBABcCeCd+A0BB3gBGCLBK+xBOBAYYbgIJEAI3uoJQJ4J34DQE + HeAEYIsEr7EE4EBoCCRACN7qCUCeCd+A0BB3gBGCLBK+xBOBAYYbgIJEAI3uoJQJ4J34DQEHeAEYIsEr7EE4EBoCCRACN7qCUCeC + d+A0BB3gBGCLBK+xBOBAYYbgIJEAI3uoJQJ4J34DQEHeAEYIsEr7EE4EBoCCRACN7qCUCeCd+A0BB3gBGCLBK+xBOBAYYYAAAAED + RwEAGAvECCRACN7qCUCeCd+A0BB3gBGCLBK+xBOBAaAgkQAje6glAngnfgNAQd4ARgiwSvsQTgQGGG4CCRACN7qCUCeCd+A0BB3g + BGCLBK+xBOBAaAgkQAje6glAngnfgNAQd4ARgiwSvsQTgQGGG4CCRACN7qCUCeCd+A0BB3gBGCLBK+xBOBAaAgkQAje6glAngnfg + NAQd4ARgiwSvsQTgQGGG4CCRACN7qCUCeCd+A0BB3gBGCLBK+xBHAQAZTgQGgIJEAI3uoJQJ4J34DQEHeAEYIsEr7EE4EBhhuAgk + QAje6glAngnfgNAQd4ARgiwSvsQTgQGgIJEAI3uoJQJ4J34DQEHeAEYIsEr7EE4EBhhuAgkQAje6glAngnfgNAQd4ARgiwSvsQTg + QGgIJEAI3uoJQJ4J34DQEHeAEYIsEr7EE4EBhhuAgkQAje6glAngnfgNAQd4ARgiwSvsQTgQGgIJEAI3uoJQJ4J34DQEHeAEYIsE + r0cBADo/AP//////////////////////////////////////////////////////////////////////////////////sQTgQGGG + 4CCRACN7qCUCeCd+A0BB3gBGCLBK+xBOBAaAgkQAje6glAngnfgNAQd4ARgiwSvsQTgQGGGAAAABAABX//uAAAABtYIv8hgAAAAB + AQpXK5XK5XK5XKwAAAECClcrlcrlcrlcrAAAAQMKVyuVyuVyuVysR0EAGwAAAeAAAICABSEAE0CTAAABAAAf//u4AAABtYERERAA + AAABAQrgGoDXghfeAg/RAhfTgggMAggQgg/YAhfeAggPgAlBB/qBBAcBB/LBC/bBBAYBB/rADIAcAg/2gggJgg/2gBoACUAEAA+A + DUAqAD0AMgEAGQCoMgQgRAQQXgQgWQQf6AQf3wQQUAQgRAQf4QASAggLAg/yAggaghASgg/0AggKgBmAOQQQEwQf7QQQEwA1ABIA + CEBHAQAcH4AaAFYAeABmAhAwAVhsCF94CD9ECF9OCCAwCCBCCD9gCF94CCA+ACUEH+oEEBwEH8sEL9sEEBgEH+sAMgBwCD/aCCAm + CD/aAGgAJQAQAD4ANQCoAPQAyAQAZAKgyBCBEBBBeBCBZBB/oBB/fBBBQBCBEBB/hABICCAsCD/ICCBqCEBKCD/QCCAqAGYA5BBA + TBB/tBBATADUAEgAIQB+AGgBWAHgAZgIQMAFYbXN8EL7wEH6IEL6cEcBAB1BAYBBAhBB+wBC+8BBAfABKCD/UCCA4CD+WCF+2CCA + wCD/WAGQA4BB/tBBATBB/tADQAEoAIAB8AGoBUAHoAZAIAMgFQZAhAiAggvAhAsgg/0Ag/vgggoAhAiAg/wgAkBBAWBB/kBBA1BC + AlBB/oBBAVADMAcgggJgg/2gggJgBqACQAEIA/ADQArADwAMwEIGACsNgQvvAQfogQvpwQQGAQQIQQfsAQvvAQQHwASgg/1AggOA + g/lgRwEAHoX7YIIDAIP9YAZADgEH+0EEBMEH+0ANAASgAgAHwAagFQAegBkAgAyAVBkCECICCC8CECyCD/QCD++CCCgCECICD/CA + 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 + AIX3gEcBABuCA+ACUEH+oEEBwEH8sEL9sEEBgEH+sAMgBwCD/aCCAmCD/aAGgAJQAQAD4ANQCoAPQAyAQAZAKgyBCBEBBBeBCBZB + B/oBB/fBBBQBCBEBB/hABICCAsCD/ICCBqCEBKCD/QCCAqAGYA5BBATBB/tBBATADUAEgAIQB+AGgBWAHgAZgIQMAFYbAhfeAg/R + AhfTgggMAggQgg/YAhfeAggPgAlBB/qBBAcBB/LBC/bBBAYBB/rADIAcRwEAHAIP9oIICYIP9oAaAAlABAAPgA1AKgA9ADIBABkA + qDIEIEQEEF4EIFkEH+gEH98EEFAEIEQEH+EAEgIICwIP8gIIGoIQEoIP9AIICoAZgDkEEBMEH+0EEBMANQASAAhAH4AaAFYAeABm + AhAwAVhtcKLwQvvAQQXgQvpwQQGAQf3wQQUAQvvAQQHwASgggLAg/yAggaghftgggMAg/1gBkAOQQQEwQf7QQQEwA0ABKACAAfgB + oAVgB6BHAQAdBkAhAwAVBsCECICD9ECECyCD/QCCBCCD9gCECICD/CACQEH+oEEBwEH8sEICUEH+gEEBUAMwBwCD/aCCAmCD/aAG + oAJAAQgD4ANQCoAPAAzAQAZAKwyBC+8BBBeBC+nBBAYBB/fBBBQBC+8BBAfABKCCAsCD/ICCBqCF+2CCAwCD/WAGQA5BBATBB/tB + BATADQAEoAIAB+AGgBWAHoAZAIQMAFQbAhAiAg/RAhAsgg/0AggQgg/YAkcBAD53AP////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////////////////////// + //////////////////////8QIgIP8IAJAQf6gQQHAQfywQgJQQf6AQQFQAzAHAIP9oIICYIP9oAagAkABCAPgA1AKgA8ADMBABkA + rDIAAAG3 + """ +} diff --git a/Tests/AetherEngineTests/WMVPacketCoverageTests.swift b/Tests/AetherEngineTests/WMVPacketCoverageTests.swift index df68ea538..17660fa8a 100644 --- a/Tests/AetherEngineTests/WMVPacketCoverageTests.swift +++ b/Tests/AetherEngineTests/WMVPacketCoverageTests.swift @@ -187,6 +187,5 @@ struct WMVPacketCoverageTests { #expect(SoftwarePlaybackHost.presentationReorderDepth(codecID: codec.id) == 1) } #expect(SoftwarePlaybackHost.presentationReorderDepth(codecID: AV_CODEC_ID_WMV3.rawValue) == nil) - #expect(SoftwarePlaybackHost.presentationReorderDepth(codecID: AV_CODEC_ID_MPEG2VIDEO.rawValue) == nil) } } diff --git a/docs/api.md b/docs/api.md index 507d4904b..3ebf1a444 100644 --- a/docs/api.md +++ b/docs/api.md @@ -764,6 +764,9 @@ end. Ranges are clipped against retained keyframes and discarded packet timestam invalid coverage stays empty. Metadata limits can conservatively omit old spans rather than claim packets that no longer exist. +The MPEG1/2 candidate reuses the same model; its [qualification evidence and open +field-picture gate](mpeg-cache-qualification.md) must be resolved before merge. + AVI MPEG-4 sessions that suppress generated packet PTS can qualify a separate cache presentation axis from the existing MPEG-4 parser and the same decoder's repaired frame timestamps. The packet delivered to the decoder is unchanged. Unqualified diff --git a/docs/mpeg-cache-qualification.md b/docs/mpeg-cache-qualification.md new file mode 100644 index 000000000..54d902ce8 --- /dev/null +++ b/docs/mpeg-cache-qualification.md @@ -0,0 +1,131 @@ +# MPEG1/2 cache qualification candidate + +**Draft: not ready to merge.** The candidate adds MPEG1/2 to the existing depth-32 +successor-PTS model. It does not modify timestamps, decoder, stores, audio eligibility, +storage defaults or downstream pins. Separately coded field pictures now have +reproducible fixtures and focused checks; complete CI and review of the container +limits below remain required before marking the candidate ready. + +## Evidence and remaining gate + +Millisecond Matroska packets declare 33 ms duration although adjacent presentation +PTS can differ by 34 ms. Duration-only ranges fragment; successor coverage can +represent retained presentation intervals without inventing the last picture's end. +B-picture decode order is different from presentation order. + +The tests use the real Demuxer and the repository's fixed libavcodec, including a +true EOF drain, to compare every decoded picture PTS with the sorted packet PTS. +They do not use the CLI probe's flush/discard operation as drain evidence. This +boundary test is not SoftwareVideoDecoder deinterlacer, renderer or device acceptance. + +Four generated fixtures cover MPEG1 progressive, MPEG2 progressive, interlaced +frame-coded MPEG2 and MPEG2 repeat-first-field pulldown. The interlaced fixture has +picture_structure=3: it is **not** separately coded top/bottom field pairs. Pulldown +has 30 repeat_first_field pictures out of 60, not 60 independently coded fields. + +An additional original moving-luma fixture contains 60 top fields and 60 bottom +fields (`picture_structure` 1 and 2). The fixed demuxer yields 60 packets, each +containing exactly `[1, 2]`, in both Matroska and MPEG-TS. True decoder EOF drain yields +60 interlaced frames with PTS equal to every sorted packet PTS, including B-picture +reordering. Matroska also runs the complete disk/memory matrix below. The TS test +checks packet pairing and decoding, not a second store matrix or physical playback. + +The fixed FFmpeg +[mpegvideo parser](https://github.com/FFmpeg/FFmpeg/blob/1041abdc962f4cc4f394aa8de9dc5236c0c3b9e7/libavcodec/mpegvideo_parser.c) +combines field boundaries but PARSER_FLAG_COMPLETE_FRAMES can bypass that parsing. +A codec name, video_delay value or one frame-coded Matroska result cannot prove all +containers satisfy the complete-picture contract. The generated Matroska packets +already contain both fields, so the complete-frame parser path does not split them; +the TS path preserves the same pairing. These samples do not prove arbitrary broken +field packetization, every muxer, or every timestamp convention. Missing or late +timestamps still invalidate coverage, but that alone cannot prove field-pair eligibility. + +Attempts with mjpegtools 2.2.1_1 `mpeg2enc -I 2` at valid field geometries crashed; +a successful low-height attempt silently fell back to frame pictures. Neither is +accepted as field evidence. Its manual labels that encoder mode unsupported. No +external encoder, FFmpeg or coverage algorithm is changed to bypass this gate. +WMV3 is outside this PR. + +## Reproduce generated fixtures + +Only generated color or procedural luma pixels are included, contributed under the repository license; +no third-party movie, audio, credentials or tool binaries are included. Base64 data +in `Tests/AetherEngineTests/Support/MPEGCacheFixtures.swift` is hash checked at load. +Generation tools are FFmpeg 8.1.2 and mjpegtools mpeg2enc 2.2.1_1 (GPL tool only, not +an engine dependency). No generator runs at test time. + +For `mpeg1` / `mpeg2` (replace CODEC with mpeg1video / mpeg2video): + +```sh +ffmpeg -fflags +bitexact -f lavfi -i color=c=blue:size=64x64:rate=30000/1001 \ + -frames:v 120 -an -c:v CODEC -flags:v +bitexact -g 15 -bf 2 \ + -map_metadata -1 -fflags +bitexact output.mkv +``` + +For `interlaced`, use mpeg2video and replace the flags with +`-flags:v +bitexact+ildct+ilme -top 1`. These files contain 120 pictures each. + +For `pulldown` (60 source pictures): + +```sh +ffmpeg -f lavfi -i color=c=blue:size=64x64:rate=24000/1001 -frames:v 60 \ + -pix_fmt yuv420p -f yuv4mpegpipe pulldown.y4m +mpeg2enc -f 3 -n n -a 1 -b 1000 -q 8 -M 1 -I 0 -p -R 2 -g 15 -G 15 \ + -o pulldown.m2v < pulldown.y4m +ffmpeg -fflags +genpts+bitexact -i pulldown.m2v -c copy -map_metadata -1 \ + -fflags +bitexact pulldown.mkv +``` + +| Fixture | Bytes | SHA-256 | +| --- | ---: | --- | +| mpeg1 | 6614 | 540ba15e11ca2bd2bfdac34dcc02f07df0298227aa211135d38fdc9c5aac68f4 | +| mpeg2 | 7784 | 958078bfbf5deb00383cef33749d0edc9257f5ebac64421becc4f3e86a8ecc06 | +| interlaced | 7791 | 0067723902603b567c93581914d9a59a0b4d8e52c767c99855ae9e6de7e02616 | +| pulldown | 4640 | 7578b7521b8f95a91ad3afc04626c1c46b5336245e62ec94fde9adc04242dd76 | +| fields (Matroska) | 33210 | 38ade5f7ebe1e86e021bc38216f5060ab8fe05775de2cb9b46a587a0b58eb0e9 | +| fieldsTS | 44556 | a59e73c4735132c0010f74404508e0cfae23ff396ee79d8de8f2e5aea1a11e53 | + +### Separately coded fields + +The generator is the MPEG Software Simulation Group reference encoder v1.2, +preserved in [this source mirror at revision 959f6b46](https://github.com/roroark/mpeg2/tree/959f6b46f03b9faee8160782e96a9288067dc748). +The pinned source archive SHA-256 is +`a798ba5e812d8a731470208edcac29f913a50a0c6d3bdb8bfce9080e042ef28e`. +Its source headers retain the MSSG copyright and warranty notice; the encoder source, +binary and bundled example pictures are not included in this PR or used as engine dependencies. +Only the new procedurally generated output is included. No example image is used. + +Build the encoder from `src/mpeg2enc/*.c` with `clang -O2 -std=gnu89 -fcommon` +and `-lm` (the old C declarations may require the compiler's compatibility warning +options). On macOS disable implicit ad-hoc linker signing and sign the generated tool +with an available Apple Development identity before execution. The recorded generation +used Clang from Xcode 27.2 and FFmpeg 8.1.2. + +Run the checked-in [generator](../Scripts/generate-mpeg-field-fixture.py) with the +compiled encoder and the original pinned `par/NTSC.par`: + +```sh +python3 Scripts/generate-mpeg-field-fixture.py --encoder /path/to/mpeg2encode \ + --reference-parameters /path/to/pinned-source/par/NTSC.par \ + --output-directory /path/to/empty-output +``` + +It generates sixty 128×96 YUV420 frames, with alternating luma squares and neutral +chroma, selects field pictures at 30000/1001 fps, GOP 15 and two B pictures, then +remuxes to Matroska and TS. The raw elementary stream is 31619 bytes, SHA-256 +`8da015379aeb5723d626e64ea5be4a1683d5cdf412927732967606339f9cad0e`. +An independent rerun reproduced all three hashes. No encoder or generator executes +during tests: they consume the hash-checked embedded bytes. + +## Cache matrix and limits + +Real disk and memory FIFOs exercise rounded-duration holes, retained seeks, unknown +EOF tail, nonzero source clocks, reset/epoch, missing/late PTS, a two-second gap and +consumed-history eviction. Fault cases mutate packet metadata deliberately; eviction +repeats packet envelopes on separated time spans to force chunk retirement. They are +store tests, not newly encoded media or proof of decoding such mutated streams. +The memory store disables kernel purging for deterministic residency; physical +memory pressure and continuous remote playback remain separate acceptance work. + +Rollback is to remove the MPEG codec admission line and retain strict duration +coverage. No downstream dependency or device version is changed by this PR.