From b0e48175f0419aa9b9988179fceb33eef35ba396 Mon Sep 17 00:00:00 2001 From: ibaker Date: Mon, 29 Apr 2024 06:01:04 -0700 Subject: [PATCH] Add ID3 `TCON` genre to MP3 test samples This change adds a 'free-form' text genre to the existing `bear-id3.mp3` sample, and adds a new sample with a 'numeric' genre ([9 is Metal](https://mutagen-specs.readthedocs.io/en/latest/id3/id3v2.4.0-frames.html#appendix-a-genre-list-from-id3v1)). The samples were modified with: ```shell $ id3edit --set-genre "Gorpcore" bear-id3.mp3 $ id3edit --set-genre "9" bear-id3-numeric-genre.mp3 ``` Reading the numeric genre with `exiftool` shows the mapping back to 'Metal': ``` $ exiftool bear-id3-numeric-genre.mp3 | grep Genre Genre : Metal ``` The playback dumps don't contain the genre because it's not yet propagated to `MediaMetadata.genre`. That is done in a follow-up change. Issue: androidx/media#1305 PiperOrigin-RevId: 629043506 --- .../exoplayer/e2etest/Mp3PlaybackTest.java | 1 + .../extractor/mp3/Mp3ExtractorTest.java | 6 + .../mp3/bear-id3-disabled.0.dump | 8 +- .../mp3/bear-id3-disabled.1.dump | 8 +- .../mp3/bear-id3-disabled.2.dump | 8 +- .../mp3/bear-id3-disabled.3.dump | 8 +- .../mp3/bear-id3-disabled.unknown_length.dump | 8 +- .../mp3/bear-id3-enabled.0.dump | 10 +- .../mp3/bear-id3-enabled.1.dump | 10 +- .../mp3/bear-id3-enabled.2.dump | 10 +- .../mp3/bear-id3-enabled.3.dump | 10 +- .../mp3/bear-id3-enabled.unknown_length.dump | 10 +- .../mp3/bear-id3-numeric-genre.mp3.0.dump | 488 +++++++ .../mp3/bear-id3-numeric-genre.mp3.1.dump | 340 +++++ .../mp3/bear-id3-numeric-genre.mp3.2.dump | 188 +++ .../mp3/bear-id3-numeric-genre.mp3.3.dump | 20 + ...-id3-numeric-genre.mp3.unknown_length.dump | 488 +++++++ .../media/mp3/bear-id3-numeric-genre.mp3 | Bin 0 -> 77890 bytes .../src/test/assets/media/mp3/bear-id3.mp3 | Bin 77901 -> 77904 bytes .../mp3/bear-id3-numeric-genre.mp3.dump | 1192 +++++++++++++++++ 20 files changed, 2768 insertions(+), 45 deletions(-) create mode 100644 libraries/test_data/src/test/assets/extractordumps/mp3/bear-id3-numeric-genre.mp3.0.dump create mode 100644 libraries/test_data/src/test/assets/extractordumps/mp3/bear-id3-numeric-genre.mp3.1.dump create mode 100644 libraries/test_data/src/test/assets/extractordumps/mp3/bear-id3-numeric-genre.mp3.2.dump create mode 100644 libraries/test_data/src/test/assets/extractordumps/mp3/bear-id3-numeric-genre.mp3.3.dump create mode 100644 libraries/test_data/src/test/assets/extractordumps/mp3/bear-id3-numeric-genre.mp3.unknown_length.dump create mode 100644 libraries/test_data/src/test/assets/media/mp3/bear-id3-numeric-genre.mp3 create mode 100644 libraries/test_data/src/test/assets/playbackdumps/mp3/bear-id3-numeric-genre.mp3.dump diff --git a/libraries/exoplayer/src/test/java/androidx/media3/exoplayer/e2etest/Mp3PlaybackTest.java b/libraries/exoplayer/src/test/java/androidx/media3/exoplayer/e2etest/Mp3PlaybackTest.java index 14e9348683..d725e7e4f7 100644 --- a/libraries/exoplayer/src/test/java/androidx/media3/exoplayer/e2etest/Mp3PlaybackTest.java +++ b/libraries/exoplayer/src/test/java/androidx/media3/exoplayer/e2etest/Mp3PlaybackTest.java @@ -42,6 +42,7 @@ public final class Mp3PlaybackTest { "bear-cbr-constant-frame-size-no-seek-table.mp3", "bear-cbr-variable-frame-size-no-seek-table.mp3", "bear-id3.mp3", + "bear-id3-numeric-genre.mp3", "bear-vbr-no-seek-table.mp3", "bear-vbr-xing-header.mp3", "play-trimmed.mp3", diff --git a/libraries/extractor/src/test/java/androidx/media3/extractor/mp3/Mp3ExtractorTest.java b/libraries/extractor/src/test/java/androidx/media3/extractor/mp3/Mp3ExtractorTest.java index d3257ebd95..cacb094742 100644 --- a/libraries/extractor/src/test/java/androidx/media3/extractor/mp3/Mp3ExtractorTest.java +++ b/libraries/extractor/src/test/java/androidx/media3/extractor/mp3/Mp3ExtractorTest.java @@ -101,4 +101,10 @@ public final class Mp3ExtractorTest { .build(), simulationConfig); } + + @Test + public void mp3SampleWithId3NumericGenre() throws Exception { + ExtractorAsserts.assertBehavior( + Mp3Extractor::new, "media/mp3/bear-id3-numeric-genre.mp3", simulationConfig); + } } diff --git a/libraries/test_data/src/test/assets/extractordumps/mp3/bear-id3-disabled.0.dump b/libraries/test_data/src/test/assets/extractordumps/mp3/bear-id3-disabled.0.dump index a80bf5e315..985efca1fd 100644 --- a/libraries/test_data/src/test/assets/extractordumps/mp3/bear-id3-disabled.0.dump +++ b/libraries/test_data/src/test/assets/extractordumps/mp3/bear-id3-disabled.0.dump @@ -1,10 +1,10 @@ seekMap: isSeekable = true duration = 2808000 - getPosition(0) = [[timeUs=0, position=39740]] - getPosition(1) = [[timeUs=0, position=39740]] - getPosition(1404000) = [[timeUs=1404000, position=58820]] - getPosition(2808000) = [[timeUs=2808000, position=77900]] + getPosition(0) = [[timeUs=0, position=39743]] + getPosition(1) = [[timeUs=0, position=39743]] + getPosition(1404000) = [[timeUs=1404000, position=58823]] + getPosition(2808000) = [[timeUs=2808000, position=77903]] numberOfTracks = 1 track 0: total output bytes = 38160 diff --git a/libraries/test_data/src/test/assets/extractordumps/mp3/bear-id3-disabled.1.dump b/libraries/test_data/src/test/assets/extractordumps/mp3/bear-id3-disabled.1.dump index 27e36ebd7a..bcddef2022 100644 --- a/libraries/test_data/src/test/assets/extractordumps/mp3/bear-id3-disabled.1.dump +++ b/libraries/test_data/src/test/assets/extractordumps/mp3/bear-id3-disabled.1.dump @@ -1,10 +1,10 @@ seekMap: isSeekable = true duration = 2808000 - getPosition(0) = [[timeUs=0, position=39740]] - getPosition(1) = [[timeUs=0, position=39740]] - getPosition(1404000) = [[timeUs=1404000, position=58820]] - getPosition(2808000) = [[timeUs=2808000, position=77900]] + getPosition(0) = [[timeUs=0, position=39743]] + getPosition(1) = [[timeUs=0, position=39743]] + getPosition(1404000) = [[timeUs=1404000, position=58823]] + getPosition(2808000) = [[timeUs=2808000, position=77903]] numberOfTracks = 1 track 0: total output bytes = 25344 diff --git a/libraries/test_data/src/test/assets/extractordumps/mp3/bear-id3-disabled.2.dump b/libraries/test_data/src/test/assets/extractordumps/mp3/bear-id3-disabled.2.dump index 356e7d9872..6d544246f8 100644 --- a/libraries/test_data/src/test/assets/extractordumps/mp3/bear-id3-disabled.2.dump +++ b/libraries/test_data/src/test/assets/extractordumps/mp3/bear-id3-disabled.2.dump @@ -1,10 +1,10 @@ seekMap: isSeekable = true duration = 2808000 - getPosition(0) = [[timeUs=0, position=39740]] - getPosition(1) = [[timeUs=0, position=39740]] - getPosition(1404000) = [[timeUs=1404000, position=58820]] - getPosition(2808000) = [[timeUs=2808000, position=77900]] + getPosition(0) = [[timeUs=0, position=39743]] + getPosition(1) = [[timeUs=0, position=39743]] + getPosition(1404000) = [[timeUs=1404000, position=58823]] + getPosition(2808000) = [[timeUs=2808000, position=77903]] numberOfTracks = 1 track 0: total output bytes = 12624 diff --git a/libraries/test_data/src/test/assets/extractordumps/mp3/bear-id3-disabled.3.dump b/libraries/test_data/src/test/assets/extractordumps/mp3/bear-id3-disabled.3.dump index 44c93750bc..cfe9c502c2 100644 --- a/libraries/test_data/src/test/assets/extractordumps/mp3/bear-id3-disabled.3.dump +++ b/libraries/test_data/src/test/assets/extractordumps/mp3/bear-id3-disabled.3.dump @@ -1,10 +1,10 @@ seekMap: isSeekable = true duration = 2808000 - getPosition(0) = [[timeUs=0, position=39740]] - getPosition(1) = [[timeUs=0, position=39740]] - getPosition(1404000) = [[timeUs=1404000, position=58820]] - getPosition(2808000) = [[timeUs=2808000, position=77900]] + getPosition(0) = [[timeUs=0, position=39743]] + getPosition(1) = [[timeUs=0, position=39743]] + getPosition(1404000) = [[timeUs=1404000, position=58823]] + getPosition(2808000) = [[timeUs=2808000, position=77903]] numberOfTracks = 1 track 0: total output bytes = 0 diff --git a/libraries/test_data/src/test/assets/extractordumps/mp3/bear-id3-disabled.unknown_length.dump b/libraries/test_data/src/test/assets/extractordumps/mp3/bear-id3-disabled.unknown_length.dump index a80bf5e315..985efca1fd 100644 --- a/libraries/test_data/src/test/assets/extractordumps/mp3/bear-id3-disabled.unknown_length.dump +++ b/libraries/test_data/src/test/assets/extractordumps/mp3/bear-id3-disabled.unknown_length.dump @@ -1,10 +1,10 @@ seekMap: isSeekable = true duration = 2808000 - getPosition(0) = [[timeUs=0, position=39740]] - getPosition(1) = [[timeUs=0, position=39740]] - getPosition(1404000) = [[timeUs=1404000, position=58820]] - getPosition(2808000) = [[timeUs=2808000, position=77900]] + getPosition(0) = [[timeUs=0, position=39743]] + getPosition(1) = [[timeUs=0, position=39743]] + getPosition(1404000) = [[timeUs=1404000, position=58823]] + getPosition(2808000) = [[timeUs=2808000, position=77903]] numberOfTracks = 1 track 0: total output bytes = 38160 diff --git a/libraries/test_data/src/test/assets/extractordumps/mp3/bear-id3-enabled.0.dump b/libraries/test_data/src/test/assets/extractordumps/mp3/bear-id3-enabled.0.dump index 395f7b0422..49fd53f7ba 100644 --- a/libraries/test_data/src/test/assets/extractordumps/mp3/bear-id3-enabled.0.dump +++ b/libraries/test_data/src/test/assets/extractordumps/mp3/bear-id3-enabled.0.dump @@ -1,10 +1,10 @@ seekMap: isSeekable = true duration = 2808000 - getPosition(0) = [[timeUs=0, position=39740]] - getPosition(1) = [[timeUs=0, position=39740]] - getPosition(1404000) = [[timeUs=1404000, position=58820]] - getPosition(2808000) = [[timeUs=2808000, position=77900]] + getPosition(0) = [[timeUs=0, position=39743]] + getPosition(1) = [[timeUs=0, position=39743]] + getPosition(1404000) = [[timeUs=1404000, position=58823]] + getPosition(2808000) = [[timeUs=2808000, position=77903]] numberOfTracks = 1 track 0: total output bytes = 38160 @@ -16,7 +16,7 @@ track 0: sampleRate = 48000 encoderDelay = 576 encoderPadding = 576 - metadata = entries=[TIT2: description=null: values=[Test title], TPE1: description=null: values=[Test Artist], TALB: description=null: values=[Test Album], TXXX: description=Test description: values=[Test user info], COMM: language=eng, description=Test description, text=Test comment, WXXX: url=Test URL, TSSE: description=null: values=[Lavf58.29.100], MLLT, PRIV: owner=test@gmail.com, UNKN, GEOB: mimeType=test/mime, filename=Testfilename.txt, description=Test description, CHAP, CHAP, CTOC, APIC: mimeType=image/jpeg, description=Test description] + metadata = entries=[TIT2: description=null: values=[Test title], TPE1: description=null: values=[Test Artist], TALB: description=null: values=[Test Album], TXXX: description=Test description: values=[Test user info], COMM: language=eng, description=Test description, text=Test comment, WXXX: url=Test URL, TSSE: description=null: values=[Lavf58.29.100], MLLT, PRIV: owner=test@gmail.com, UNKN, GEOB: mimeType=test/mime, filename=Testfilename.txt, description=Test description, CHAP, CHAP, CTOC, APIC: mimeType=image/jpeg, description=Test description, TCON: description=null: values=[Gorpcore]] sample 0: time = 0 flags = 1 diff --git a/libraries/test_data/src/test/assets/extractordumps/mp3/bear-id3-enabled.1.dump b/libraries/test_data/src/test/assets/extractordumps/mp3/bear-id3-enabled.1.dump index 959b9f06a0..d95554971c 100644 --- a/libraries/test_data/src/test/assets/extractordumps/mp3/bear-id3-enabled.1.dump +++ b/libraries/test_data/src/test/assets/extractordumps/mp3/bear-id3-enabled.1.dump @@ -1,10 +1,10 @@ seekMap: isSeekable = true duration = 2808000 - getPosition(0) = [[timeUs=0, position=39740]] - getPosition(1) = [[timeUs=0, position=39740]] - getPosition(1404000) = [[timeUs=1404000, position=58820]] - getPosition(2808000) = [[timeUs=2808000, position=77900]] + getPosition(0) = [[timeUs=0, position=39743]] + getPosition(1) = [[timeUs=0, position=39743]] + getPosition(1404000) = [[timeUs=1404000, position=58823]] + getPosition(2808000) = [[timeUs=2808000, position=77903]] numberOfTracks = 1 track 0: total output bytes = 25344 @@ -16,7 +16,7 @@ track 0: sampleRate = 48000 encoderDelay = 576 encoderPadding = 576 - metadata = entries=[TIT2: description=null: values=[Test title], TPE1: description=null: values=[Test Artist], TALB: description=null: values=[Test Album], TXXX: description=Test description: values=[Test user info], COMM: language=eng, description=Test description, text=Test comment, WXXX: url=Test URL, TSSE: description=null: values=[Lavf58.29.100], MLLT, PRIV: owner=test@gmail.com, UNKN, GEOB: mimeType=test/mime, filename=Testfilename.txt, description=Test description, CHAP, CHAP, CTOC, APIC: mimeType=image/jpeg, description=Test description] + metadata = entries=[TIT2: description=null: values=[Test title], TPE1: description=null: values=[Test Artist], TALB: description=null: values=[Test Album], TXXX: description=Test description: values=[Test user info], COMM: language=eng, description=Test description, text=Test comment, WXXX: url=Test URL, TSSE: description=null: values=[Lavf58.29.100], MLLT, PRIV: owner=test@gmail.com, UNKN, GEOB: mimeType=test/mime, filename=Testfilename.txt, description=Test description, CHAP, CHAP, CTOC, APIC: mimeType=image/jpeg, description=Test description, TCON: description=null: values=[Gorpcore]] sample 0: time = 943000 flags = 1 diff --git a/libraries/test_data/src/test/assets/extractordumps/mp3/bear-id3-enabled.2.dump b/libraries/test_data/src/test/assets/extractordumps/mp3/bear-id3-enabled.2.dump index c2d23fb356..114c947758 100644 --- a/libraries/test_data/src/test/assets/extractordumps/mp3/bear-id3-enabled.2.dump +++ b/libraries/test_data/src/test/assets/extractordumps/mp3/bear-id3-enabled.2.dump @@ -1,10 +1,10 @@ seekMap: isSeekable = true duration = 2808000 - getPosition(0) = [[timeUs=0, position=39740]] - getPosition(1) = [[timeUs=0, position=39740]] - getPosition(1404000) = [[timeUs=1404000, position=58820]] - getPosition(2808000) = [[timeUs=2808000, position=77900]] + getPosition(0) = [[timeUs=0, position=39743]] + getPosition(1) = [[timeUs=0, position=39743]] + getPosition(1404000) = [[timeUs=1404000, position=58823]] + getPosition(2808000) = [[timeUs=2808000, position=77903]] numberOfTracks = 1 track 0: total output bytes = 12624 @@ -16,7 +16,7 @@ track 0: sampleRate = 48000 encoderDelay = 576 encoderPadding = 576 - metadata = entries=[TIT2: description=null: values=[Test title], TPE1: description=null: values=[Test Artist], TALB: description=null: values=[Test Album], TXXX: description=Test description: values=[Test user info], COMM: language=eng, description=Test description, text=Test comment, WXXX: url=Test URL, TSSE: description=null: values=[Lavf58.29.100], MLLT, PRIV: owner=test@gmail.com, UNKN, GEOB: mimeType=test/mime, filename=Testfilename.txt, description=Test description, CHAP, CHAP, CTOC, APIC: mimeType=image/jpeg, description=Test description] + metadata = entries=[TIT2: description=null: values=[Test title], TPE1: description=null: values=[Test Artist], TALB: description=null: values=[Test Album], TXXX: description=Test description: values=[Test user info], COMM: language=eng, description=Test description, text=Test comment, WXXX: url=Test URL, TSSE: description=null: values=[Lavf58.29.100], MLLT, PRIV: owner=test@gmail.com, UNKN, GEOB: mimeType=test/mime, filename=Testfilename.txt, description=Test description, CHAP, CHAP, CTOC, APIC: mimeType=image/jpeg, description=Test description, TCON: description=null: values=[Gorpcore]] sample 0: time = 1879000 flags = 1 diff --git a/libraries/test_data/src/test/assets/extractordumps/mp3/bear-id3-enabled.3.dump b/libraries/test_data/src/test/assets/extractordumps/mp3/bear-id3-enabled.3.dump index 4fed1945a0..e00b9cb0e2 100644 --- a/libraries/test_data/src/test/assets/extractordumps/mp3/bear-id3-enabled.3.dump +++ b/libraries/test_data/src/test/assets/extractordumps/mp3/bear-id3-enabled.3.dump @@ -1,10 +1,10 @@ seekMap: isSeekable = true duration = 2808000 - getPosition(0) = [[timeUs=0, position=39740]] - getPosition(1) = [[timeUs=0, position=39740]] - getPosition(1404000) = [[timeUs=1404000, position=58820]] - getPosition(2808000) = [[timeUs=2808000, position=77900]] + getPosition(0) = [[timeUs=0, position=39743]] + getPosition(1) = [[timeUs=0, position=39743]] + getPosition(1404000) = [[timeUs=1404000, position=58823]] + getPosition(2808000) = [[timeUs=2808000, position=77903]] numberOfTracks = 1 track 0: total output bytes = 0 @@ -16,5 +16,5 @@ track 0: sampleRate = 48000 encoderDelay = 576 encoderPadding = 576 - metadata = entries=[TIT2: description=null: values=[Test title], TPE1: description=null: values=[Test Artist], TALB: description=null: values=[Test Album], TXXX: description=Test description: values=[Test user info], COMM: language=eng, description=Test description, text=Test comment, WXXX: url=Test URL, TSSE: description=null: values=[Lavf58.29.100], MLLT, PRIV: owner=test@gmail.com, UNKN, GEOB: mimeType=test/mime, filename=Testfilename.txt, description=Test description, CHAP, CHAP, CTOC, APIC: mimeType=image/jpeg, description=Test description] + metadata = entries=[TIT2: description=null: values=[Test title], TPE1: description=null: values=[Test Artist], TALB: description=null: values=[Test Album], TXXX: description=Test description: values=[Test user info], COMM: language=eng, description=Test description, text=Test comment, WXXX: url=Test URL, TSSE: description=null: values=[Lavf58.29.100], MLLT, PRIV: owner=test@gmail.com, UNKN, GEOB: mimeType=test/mime, filename=Testfilename.txt, description=Test description, CHAP, CHAP, CTOC, APIC: mimeType=image/jpeg, description=Test description, TCON: description=null: values=[Gorpcore]] tracksEnded = true diff --git a/libraries/test_data/src/test/assets/extractordumps/mp3/bear-id3-enabled.unknown_length.dump b/libraries/test_data/src/test/assets/extractordumps/mp3/bear-id3-enabled.unknown_length.dump index 395f7b0422..49fd53f7ba 100644 --- a/libraries/test_data/src/test/assets/extractordumps/mp3/bear-id3-enabled.unknown_length.dump +++ b/libraries/test_data/src/test/assets/extractordumps/mp3/bear-id3-enabled.unknown_length.dump @@ -1,10 +1,10 @@ seekMap: isSeekable = true duration = 2808000 - getPosition(0) = [[timeUs=0, position=39740]] - getPosition(1) = [[timeUs=0, position=39740]] - getPosition(1404000) = [[timeUs=1404000, position=58820]] - getPosition(2808000) = [[timeUs=2808000, position=77900]] + getPosition(0) = [[timeUs=0, position=39743]] + getPosition(1) = [[timeUs=0, position=39743]] + getPosition(1404000) = [[timeUs=1404000, position=58823]] + getPosition(2808000) = [[timeUs=2808000, position=77903]] numberOfTracks = 1 track 0: total output bytes = 38160 @@ -16,7 +16,7 @@ track 0: sampleRate = 48000 encoderDelay = 576 encoderPadding = 576 - metadata = entries=[TIT2: description=null: values=[Test title], TPE1: description=null: values=[Test Artist], TALB: description=null: values=[Test Album], TXXX: description=Test description: values=[Test user info], COMM: language=eng, description=Test description, text=Test comment, WXXX: url=Test URL, TSSE: description=null: values=[Lavf58.29.100], MLLT, PRIV: owner=test@gmail.com, UNKN, GEOB: mimeType=test/mime, filename=Testfilename.txt, description=Test description, CHAP, CHAP, CTOC, APIC: mimeType=image/jpeg, description=Test description] + metadata = entries=[TIT2: description=null: values=[Test title], TPE1: description=null: values=[Test Artist], TALB: description=null: values=[Test Album], TXXX: description=Test description: values=[Test user info], COMM: language=eng, description=Test description, text=Test comment, WXXX: url=Test URL, TSSE: description=null: values=[Lavf58.29.100], MLLT, PRIV: owner=test@gmail.com, UNKN, GEOB: mimeType=test/mime, filename=Testfilename.txt, description=Test description, CHAP, CHAP, CTOC, APIC: mimeType=image/jpeg, description=Test description, TCON: description=null: values=[Gorpcore]] sample 0: time = 0 flags = 1 diff --git a/libraries/test_data/src/test/assets/extractordumps/mp3/bear-id3-numeric-genre.mp3.0.dump b/libraries/test_data/src/test/assets/extractordumps/mp3/bear-id3-numeric-genre.mp3.0.dump new file mode 100644 index 0000000000..42691428c3 --- /dev/null +++ b/libraries/test_data/src/test/assets/extractordumps/mp3/bear-id3-numeric-genre.mp3.0.dump @@ -0,0 +1,488 @@ +seekMap: + isSeekable = true + duration = 2808000 + getPosition(0) = [[timeUs=0, position=39729]] + getPosition(1) = [[timeUs=0, position=39729]] + getPosition(1404000) = [[timeUs=1404000, position=58809]] + getPosition(2808000) = [[timeUs=2808000, position=77889]] +numberOfTracks = 1 +track 0: + total output bytes = 38160 + sample count = 117 + format 0: + sampleMimeType = audio/mpeg + maxInputSize = 4096 + channelCount = 2 + sampleRate = 48000 + encoderDelay = 576 + encoderPadding = 576 + metadata = entries=[TIT2: description=null: values=[Test title], TPE1: description=null: values=[Test Artist], TALB: description=null: values=[Test Album], TXXX: description=Test description: values=[Test user info], COMM: language=eng, description=Test description, text=Test comment, WXXX: url=Test URL, TSSE: description=null: values=[Lavf58.29.100], MLLT, PRIV: owner=test@gmail.com, UNKN, GEOB: mimeType=test/mime, filename=Testfilename.txt, description=Test description, CHAP, CHAP, CTOC, APIC: mimeType=image/jpeg, description=Test description, TCON: description=null: values=[9]] + sample 0: + time = 0 + flags = 1 + data = length 96, hash 1F161542 + sample 1: + time = 24000 + flags = 1 + data = length 768, hash CD1DC50F + sample 2: + time = 48000 + flags = 1 + data = length 336, hash 3F64124B + sample 3: + time = 72000 + flags = 1 + data = length 336, hash 8FFED94E + sample 4: + time = 96000 + flags = 1 + data = length 288, hash 9CD77D47 + sample 5: + time = 120000 + flags = 1 + data = length 384, hash 24607BB5 + sample 6: + time = 144000 + flags = 1 + data = length 480, hash 4937EBAB + sample 7: + time = 168000 + flags = 1 + data = length 336, hash 546342B1 + sample 8: + time = 192000 + flags = 1 + data = length 336, hash 79E0923F + sample 9: + time = 216000 + flags = 1 + data = length 336, hash AB1F3948 + sample 10: + time = 240000 + flags = 1 + data = length 336, hash C3A4D888 + sample 11: + time = 264000 + flags = 1 + data = length 288, hash 7867DA45 + sample 12: + time = 288000 + flags = 1 + data = length 336, hash B1240B73 + sample 13: + time = 312000 + flags = 1 + data = length 336, hash 94CFCD35 + sample 14: + time = 336000 + flags = 1 + data = length 288, hash 94F412C + sample 15: + time = 360000 + flags = 1 + data = length 336, hash A1D9FF41 + sample 16: + time = 384000 + flags = 1 + data = length 288, hash 2A8DA21B + sample 17: + time = 408000 + flags = 1 + data = length 336, hash 6A429CE + sample 18: + time = 432000 + flags = 1 + data = length 336, hash 68853982 + sample 19: + time = 456000 + flags = 1 + data = length 384, hash 1D6F779C + sample 20: + time = 480000 + flags = 1 + data = length 480, hash 6B31EBEE + sample 21: + time = 504000 + flags = 1 + data = length 336, hash 888335BE + sample 22: + time = 528000 + flags = 1 + data = length 336, hash 6072AC8B + sample 23: + time = 552000 + flags = 1 + data = length 336, hash C9D24234 + sample 24: + time = 576000 + flags = 1 + data = length 288, hash 52BF4D1E + sample 25: + time = 600000 + flags = 1 + data = length 336, hash F93F4F0 + sample 26: + time = 624000 + flags = 1 + data = length 336, hash 8617688A + sample 27: + time = 648000 + flags = 1 + data = length 480, hash FAB0D31B + sample 28: + time = 672000 + flags = 1 + data = length 384, hash FA4B53E2 + sample 29: + time = 696000 + flags = 1 + data = length 336, hash 8C435F6A + sample 30: + time = 720000 + flags = 1 + data = length 336, hash 60D3F80C + sample 31: + time = 744000 + flags = 1 + data = length 336, hash DC15B68B + sample 32: + time = 768000 + flags = 1 + data = length 288, hash FF3DF141 + sample 33: + time = 792000 + flags = 1 + data = length 336, hash A64B3042 + sample 34: + time = 816000 + flags = 1 + data = length 336, hash ACA622A1 + sample 35: + time = 840000 + flags = 1 + data = length 288, hash 3E34B8D4 + sample 36: + time = 864000 + flags = 1 + data = length 288, hash 9B96F72A + sample 37: + time = 888000 + flags = 1 + data = length 336, hash E917C122 + sample 38: + time = 912000 + flags = 1 + data = length 336, hash 10ED1470 + sample 39: + time = 936000 + flags = 1 + data = length 288, hash 706B8A7C + sample 40: + time = 960000 + flags = 1 + data = length 336, hash 71FFE4A0 + sample 41: + time = 984000 + flags = 1 + data = length 336, hash D4160463 + sample 42: + time = 1008000 + flags = 1 + data = length 336, hash EC557B14 + sample 43: + time = 1032000 + flags = 1 + data = length 288, hash 5598CF8B + sample 44: + time = 1056000 + flags = 1 + data = length 336, hash 7E0AB41 + sample 45: + time = 1080000 + flags = 1 + data = length 336, hash 1C585FEF + sample 46: + time = 1104000 + flags = 1 + data = length 336, hash A4A4855E + sample 47: + time = 1128000 + flags = 1 + data = length 336, hash CECA51D3 + sample 48: + time = 1152000 + flags = 1 + data = length 288, hash 2D362DC5 + sample 49: + time = 1176000 + flags = 1 + data = length 336, hash 9EB2609D + sample 50: + time = 1200000 + flags = 1 + data = length 336, hash 28FFB3FE + sample 51: + time = 1224000 + flags = 1 + data = length 288, hash 2AA2D216 + sample 52: + time = 1248000 + flags = 1 + data = length 336, hash CDBC7032 + sample 53: + time = 1272000 + flags = 1 + data = length 336, hash 25B13FE7 + sample 54: + time = 1296000 + flags = 1 + data = length 336, hash DB6BB1E + sample 55: + time = 1320000 + flags = 1 + data = length 336, hash EBE951F4 + sample 56: + time = 1344000 + flags = 1 + data = length 288, hash 9E2EBFF7 + sample 57: + time = 1368000 + flags = 1 + data = length 336, hash 36A7D455 + sample 58: + time = 1392000 + flags = 1 + data = length 336, hash 84545F8C + sample 59: + time = 1416000 + flags = 1 + data = length 336, hash F66F3045 + sample 60: + time = 1440000 + flags = 1 + data = length 576, hash 5AB089EA + sample 61: + time = 1464000 + flags = 1 + data = length 336, hash 8868086 + sample 62: + time = 1488000 + flags = 1 + data = length 336, hash D5EB6D63 + sample 63: + time = 1512000 + flags = 1 + data = length 288, hash 7A5374B7 + sample 64: + time = 1536000 + flags = 1 + data = length 336, hash BEB27A75 + sample 65: + time = 1560000 + flags = 1 + data = length 336, hash E251E0FD + sample 66: + time = 1584000 + flags = 1 + data = length 288, hash D54C970 + sample 67: + time = 1608000 + flags = 1 + data = length 336, hash 52C473B9 + sample 68: + time = 1632000 + flags = 1 + data = length 336, hash F5F13334 + sample 69: + time = 1656000 + flags = 1 + data = length 480, hash A5F1E987 + sample 70: + time = 1680000 + flags = 1 + data = length 288, hash 453A1267 + sample 71: + time = 1704000 + flags = 1 + data = length 288, hash 7C6C2EA9 + sample 72: + time = 1728000 + flags = 1 + data = length 336, hash F4BFECA4 + sample 73: + time = 1752000 + flags = 1 + data = length 336, hash 751A395A + sample 74: + time = 1776000 + flags = 1 + data = length 336, hash EE38DB02 + sample 75: + time = 1800000 + flags = 1 + data = length 336, hash F18837E2 + sample 76: + time = 1824000 + flags = 1 + data = length 336, hash ED36B78E + sample 77: + time = 1848000 + flags = 1 + data = length 336, hash B3D28289 + sample 78: + time = 1872000 + flags = 1 + data = length 288, hash 8BDE28E1 + sample 79: + time = 1896000 + flags = 1 + data = length 336, hash CFD5E966 + sample 80: + time = 1920000 + flags = 1 + data = length 288, hash DC08E267 + sample 81: + time = 1944000 + flags = 1 + data = length 336, hash 6530CB78 + sample 82: + time = 1968000 + flags = 1 + data = length 336, hash 6CC6636E + sample 83: + time = 1992000 + flags = 1 + data = length 336, hash 613047C1 + sample 84: + time = 2016000 + flags = 1 + data = length 288, hash CDC747BF + sample 85: + time = 2040000 + flags = 1 + data = length 336, hash AF22AA74 + sample 86: + time = 2064000 + flags = 1 + data = length 384, hash 82F326AA + sample 87: + time = 2088000 + flags = 1 + data = length 384, hash EDA26C4D + sample 88: + time = 2112000 + flags = 1 + data = length 336, hash 94C643DC + sample 89: + time = 2136000 + flags = 1 + data = length 288, hash CB5D9C40 + sample 90: + time = 2160000 + flags = 1 + data = length 336, hash 1E69DE3F + sample 91: + time = 2184000 + flags = 1 + data = length 336, hash 7E472219 + sample 92: + time = 2208000 + flags = 1 + data = length 336, hash DA47B9FA + sample 93: + time = 2232000 + flags = 1 + data = length 336, hash DD0ABB7C + sample 94: + time = 2256000 + flags = 1 + data = length 288, hash DBF93FAC + sample 95: + time = 2280000 + flags = 1 + data = length 336, hash 243F4B2 + sample 96: + time = 2304000 + flags = 1 + data = length 336, hash 2E881490 + sample 97: + time = 2328000 + flags = 1 + data = length 288, hash 1C28C8BE + sample 98: + time = 2352000 + flags = 1 + data = length 336, hash C73E5D30 + sample 99: + time = 2376000 + flags = 1 + data = length 288, hash 98B5BFF6 + sample 100: + time = 2400000 + flags = 1 + data = length 336, hash E0135533 + sample 101: + time = 2424000 + flags = 1 + data = length 336, hash D13C9DBC + sample 102: + time = 2448000 + flags = 1 + data = length 336, hash 63D524CA + sample 103: + time = 2472000 + flags = 1 + data = length 288, hash A28514C3 + sample 104: + time = 2496000 + flags = 1 + data = length 336, hash 72B647FF + sample 105: + time = 2520000 + flags = 1 + data = length 336, hash 8F740AB1 + sample 106: + time = 2544000 + flags = 1 + data = length 336, hash 5E3C7E93 + sample 107: + time = 2568000 + flags = 1 + data = length 336, hash 121B913B + sample 108: + time = 2592000 + flags = 1 + data = length 336, hash 578FCCF2 + sample 109: + time = 2616000 + flags = 1 + data = length 336, hash 5B5823DE + sample 110: + time = 2640000 + flags = 1 + data = length 384, hash D8B83F78 + sample 111: + time = 2664000 + flags = 1 + data = length 240, hash E649682F + sample 112: + time = 2688000 + flags = 1 + data = length 96, hash C559A6F4 + sample 113: + time = 2712000 + flags = 1 + data = length 96, hash 792796BC + sample 114: + time = 2736000 + flags = 1 + data = length 120, hash 8172CD0E + sample 115: + time = 2760000 + flags = 1 + data = length 120, hash F562B52F + sample 116: + time = 2784000 + flags = 1 + data = length 96, hash FF8D5B98 +tracksEnded = true diff --git a/libraries/test_data/src/test/assets/extractordumps/mp3/bear-id3-numeric-genre.mp3.1.dump b/libraries/test_data/src/test/assets/extractordumps/mp3/bear-id3-numeric-genre.mp3.1.dump new file mode 100644 index 0000000000..034f281ac2 --- /dev/null +++ b/libraries/test_data/src/test/assets/extractordumps/mp3/bear-id3-numeric-genre.mp3.1.dump @@ -0,0 +1,340 @@ +seekMap: + isSeekable = true + duration = 2808000 + getPosition(0) = [[timeUs=0, position=39729]] + getPosition(1) = [[timeUs=0, position=39729]] + getPosition(1404000) = [[timeUs=1404000, position=58809]] + getPosition(2808000) = [[timeUs=2808000, position=77889]] +numberOfTracks = 1 +track 0: + total output bytes = 25344 + sample count = 80 + format 0: + sampleMimeType = audio/mpeg + maxInputSize = 4096 + channelCount = 2 + sampleRate = 48000 + encoderDelay = 576 + encoderPadding = 576 + metadata = entries=[TIT2: description=null: values=[Test title], TPE1: description=null: values=[Test Artist], TALB: description=null: values=[Test Album], TXXX: description=Test description: values=[Test user info], COMM: language=eng, description=Test description, text=Test comment, WXXX: url=Test URL, TSSE: description=null: values=[Lavf58.29.100], MLLT, PRIV: owner=test@gmail.com, UNKN, GEOB: mimeType=test/mime, filename=Testfilename.txt, description=Test description, CHAP, CHAP, CTOC, APIC: mimeType=image/jpeg, description=Test description, TCON: description=null: values=[9]] + sample 0: + time = 943000 + flags = 1 + data = length 336, hash E917C122 + sample 1: + time = 967000 + flags = 1 + data = length 336, hash 10ED1470 + sample 2: + time = 991000 + flags = 1 + data = length 288, hash 706B8A7C + sample 3: + time = 1015000 + flags = 1 + data = length 336, hash 71FFE4A0 + sample 4: + time = 1039000 + flags = 1 + data = length 336, hash D4160463 + sample 5: + time = 1063000 + flags = 1 + data = length 336, hash EC557B14 + sample 6: + time = 1087000 + flags = 1 + data = length 288, hash 5598CF8B + sample 7: + time = 1111000 + flags = 1 + data = length 336, hash 7E0AB41 + sample 8: + time = 1135000 + flags = 1 + data = length 336, hash 1C585FEF + sample 9: + time = 1159000 + flags = 1 + data = length 336, hash A4A4855E + sample 10: + time = 1183000 + flags = 1 + data = length 336, hash CECA51D3 + sample 11: + time = 1207000 + flags = 1 + data = length 288, hash 2D362DC5 + sample 12: + time = 1231000 + flags = 1 + data = length 336, hash 9EB2609D + sample 13: + time = 1255000 + flags = 1 + data = length 336, hash 28FFB3FE + sample 14: + time = 1279000 + flags = 1 + data = length 288, hash 2AA2D216 + sample 15: + time = 1303000 + flags = 1 + data = length 336, hash CDBC7032 + sample 16: + time = 1327000 + flags = 1 + data = length 336, hash 25B13FE7 + sample 17: + time = 1351000 + flags = 1 + data = length 336, hash DB6BB1E + sample 18: + time = 1375000 + flags = 1 + data = length 336, hash EBE951F4 + sample 19: + time = 1399000 + flags = 1 + data = length 288, hash 9E2EBFF7 + sample 20: + time = 1423000 + flags = 1 + data = length 336, hash 36A7D455 + sample 21: + time = 1447000 + flags = 1 + data = length 336, hash 84545F8C + sample 22: + time = 1471000 + flags = 1 + data = length 336, hash F66F3045 + sample 23: + time = 1495000 + flags = 1 + data = length 576, hash 5AB089EA + sample 24: + time = 1519000 + flags = 1 + data = length 336, hash 8868086 + sample 25: + time = 1543000 + flags = 1 + data = length 336, hash D5EB6D63 + sample 26: + time = 1567000 + flags = 1 + data = length 288, hash 7A5374B7 + sample 27: + time = 1591000 + flags = 1 + data = length 336, hash BEB27A75 + sample 28: + time = 1615000 + flags = 1 + data = length 336, hash E251E0FD + sample 29: + time = 1639000 + flags = 1 + data = length 288, hash D54C970 + sample 30: + time = 1663000 + flags = 1 + data = length 336, hash 52C473B9 + sample 31: + time = 1687000 + flags = 1 + data = length 336, hash F5F13334 + sample 32: + time = 1711000 + flags = 1 + data = length 480, hash A5F1E987 + sample 33: + time = 1735000 + flags = 1 + data = length 288, hash 453A1267 + sample 34: + time = 1759000 + flags = 1 + data = length 288, hash 7C6C2EA9 + sample 35: + time = 1783000 + flags = 1 + data = length 336, hash F4BFECA4 + sample 36: + time = 1807000 + flags = 1 + data = length 336, hash 751A395A + sample 37: + time = 1831000 + flags = 1 + data = length 336, hash EE38DB02 + sample 38: + time = 1855000 + flags = 1 + data = length 336, hash F18837E2 + sample 39: + time = 1879000 + flags = 1 + data = length 336, hash ED36B78E + sample 40: + time = 1903000 + flags = 1 + data = length 336, hash B3D28289 + sample 41: + time = 1927000 + flags = 1 + data = length 288, hash 8BDE28E1 + sample 42: + time = 1951000 + flags = 1 + data = length 336, hash CFD5E966 + sample 43: + time = 1975000 + flags = 1 + data = length 288, hash DC08E267 + sample 44: + time = 1999000 + flags = 1 + data = length 336, hash 6530CB78 + sample 45: + time = 2023000 + flags = 1 + data = length 336, hash 6CC6636E + sample 46: + time = 2047000 + flags = 1 + data = length 336, hash 613047C1 + sample 47: + time = 2071000 + flags = 1 + data = length 288, hash CDC747BF + sample 48: + time = 2095000 + flags = 1 + data = length 336, hash AF22AA74 + sample 49: + time = 2119000 + flags = 1 + data = length 384, hash 82F326AA + sample 50: + time = 2143000 + flags = 1 + data = length 384, hash EDA26C4D + sample 51: + time = 2167000 + flags = 1 + data = length 336, hash 94C643DC + sample 52: + time = 2191000 + flags = 1 + data = length 288, hash CB5D9C40 + sample 53: + time = 2215000 + flags = 1 + data = length 336, hash 1E69DE3F + sample 54: + time = 2239000 + flags = 1 + data = length 336, hash 7E472219 + sample 55: + time = 2263000 + flags = 1 + data = length 336, hash DA47B9FA + sample 56: + time = 2287000 + flags = 1 + data = length 336, hash DD0ABB7C + sample 57: + time = 2311000 + flags = 1 + data = length 288, hash DBF93FAC + sample 58: + time = 2335000 + flags = 1 + data = length 336, hash 243F4B2 + sample 59: + time = 2359000 + flags = 1 + data = length 336, hash 2E881490 + sample 60: + time = 2383000 + flags = 1 + data = length 288, hash 1C28C8BE + sample 61: + time = 2407000 + flags = 1 + data = length 336, hash C73E5D30 + sample 62: + time = 2431000 + flags = 1 + data = length 288, hash 98B5BFF6 + sample 63: + time = 2455000 + flags = 1 + data = length 336, hash E0135533 + sample 64: + time = 2479000 + flags = 1 + data = length 336, hash D13C9DBC + sample 65: + time = 2503000 + flags = 1 + data = length 336, hash 63D524CA + sample 66: + time = 2527000 + flags = 1 + data = length 288, hash A28514C3 + sample 67: + time = 2551000 + flags = 1 + data = length 336, hash 72B647FF + sample 68: + time = 2575000 + flags = 1 + data = length 336, hash 8F740AB1 + sample 69: + time = 2599000 + flags = 1 + data = length 336, hash 5E3C7E93 + sample 70: + time = 2623000 + flags = 1 + data = length 336, hash 121B913B + sample 71: + time = 2647000 + flags = 1 + data = length 336, hash 578FCCF2 + sample 72: + time = 2671000 + flags = 1 + data = length 336, hash 5B5823DE + sample 73: + time = 2695000 + flags = 1 + data = length 384, hash D8B83F78 + sample 74: + time = 2719000 + flags = 1 + data = length 240, hash E649682F + sample 75: + time = 2743000 + flags = 1 + data = length 96, hash C559A6F4 + sample 76: + time = 2767000 + flags = 1 + data = length 96, hash 792796BC + sample 77: + time = 2791000 + flags = 1 + data = length 120, hash 8172CD0E + sample 78: + time = 2815000 + flags = 1 + data = length 120, hash F562B52F + sample 79: + time = 2839000 + flags = 1 + data = length 96, hash FF8D5B98 +tracksEnded = true diff --git a/libraries/test_data/src/test/assets/extractordumps/mp3/bear-id3-numeric-genre.mp3.2.dump b/libraries/test_data/src/test/assets/extractordumps/mp3/bear-id3-numeric-genre.mp3.2.dump new file mode 100644 index 0000000000..d925b68495 --- /dev/null +++ b/libraries/test_data/src/test/assets/extractordumps/mp3/bear-id3-numeric-genre.mp3.2.dump @@ -0,0 +1,188 @@ +seekMap: + isSeekable = true + duration = 2808000 + getPosition(0) = [[timeUs=0, position=39729]] + getPosition(1) = [[timeUs=0, position=39729]] + getPosition(1404000) = [[timeUs=1404000, position=58809]] + getPosition(2808000) = [[timeUs=2808000, position=77889]] +numberOfTracks = 1 +track 0: + total output bytes = 12624 + sample count = 42 + format 0: + sampleMimeType = audio/mpeg + maxInputSize = 4096 + channelCount = 2 + sampleRate = 48000 + encoderDelay = 576 + encoderPadding = 576 + metadata = entries=[TIT2: description=null: values=[Test title], TPE1: description=null: values=[Test Artist], TALB: description=null: values=[Test Album], TXXX: description=Test description: values=[Test user info], COMM: language=eng, description=Test description, text=Test comment, WXXX: url=Test URL, TSSE: description=null: values=[Lavf58.29.100], MLLT, PRIV: owner=test@gmail.com, UNKN, GEOB: mimeType=test/mime, filename=Testfilename.txt, description=Test description, CHAP, CHAP, CTOC, APIC: mimeType=image/jpeg, description=Test description, TCON: description=null: values=[9]] + sample 0: + time = 1879000 + flags = 1 + data = length 336, hash F18837E2 + sample 1: + time = 1903000 + flags = 1 + data = length 336, hash ED36B78E + sample 2: + time = 1927000 + flags = 1 + data = length 336, hash B3D28289 + sample 3: + time = 1951000 + flags = 1 + data = length 288, hash 8BDE28E1 + sample 4: + time = 1975000 + flags = 1 + data = length 336, hash CFD5E966 + sample 5: + time = 1999000 + flags = 1 + data = length 288, hash DC08E267 + sample 6: + time = 2023000 + flags = 1 + data = length 336, hash 6530CB78 + sample 7: + time = 2047000 + flags = 1 + data = length 336, hash 6CC6636E + sample 8: + time = 2071000 + flags = 1 + data = length 336, hash 613047C1 + sample 9: + time = 2095000 + flags = 1 + data = length 288, hash CDC747BF + sample 10: + time = 2119000 + flags = 1 + data = length 336, hash AF22AA74 + sample 11: + time = 2143000 + flags = 1 + data = length 384, hash 82F326AA + sample 12: + time = 2167000 + flags = 1 + data = length 384, hash EDA26C4D + sample 13: + time = 2191000 + flags = 1 + data = length 336, hash 94C643DC + sample 14: + time = 2215000 + flags = 1 + data = length 288, hash CB5D9C40 + sample 15: + time = 2239000 + flags = 1 + data = length 336, hash 1E69DE3F + sample 16: + time = 2263000 + flags = 1 + data = length 336, hash 7E472219 + sample 17: + time = 2287000 + flags = 1 + data = length 336, hash DA47B9FA + sample 18: + time = 2311000 + flags = 1 + data = length 336, hash DD0ABB7C + sample 19: + time = 2335000 + flags = 1 + data = length 288, hash DBF93FAC + sample 20: + time = 2359000 + flags = 1 + data = length 336, hash 243F4B2 + sample 21: + time = 2383000 + flags = 1 + data = length 336, hash 2E881490 + sample 22: + time = 2407000 + flags = 1 + data = length 288, hash 1C28C8BE + sample 23: + time = 2431000 + flags = 1 + data = length 336, hash C73E5D30 + sample 24: + time = 2455000 + flags = 1 + data = length 288, hash 98B5BFF6 + sample 25: + time = 2479000 + flags = 1 + data = length 336, hash E0135533 + sample 26: + time = 2503000 + flags = 1 + data = length 336, hash D13C9DBC + sample 27: + time = 2527000 + flags = 1 + data = length 336, hash 63D524CA + sample 28: + time = 2551000 + flags = 1 + data = length 288, hash A28514C3 + sample 29: + time = 2575000 + flags = 1 + data = length 336, hash 72B647FF + sample 30: + time = 2599000 + flags = 1 + data = length 336, hash 8F740AB1 + sample 31: + time = 2623000 + flags = 1 + data = length 336, hash 5E3C7E93 + sample 32: + time = 2647000 + flags = 1 + data = length 336, hash 121B913B + sample 33: + time = 2671000 + flags = 1 + data = length 336, hash 578FCCF2 + sample 34: + time = 2695000 + flags = 1 + data = length 336, hash 5B5823DE + sample 35: + time = 2719000 + flags = 1 + data = length 384, hash D8B83F78 + sample 36: + time = 2743000 + flags = 1 + data = length 240, hash E649682F + sample 37: + time = 2767000 + flags = 1 + data = length 96, hash C559A6F4 + sample 38: + time = 2791000 + flags = 1 + data = length 96, hash 792796BC + sample 39: + time = 2815000 + flags = 1 + data = length 120, hash 8172CD0E + sample 40: + time = 2839000 + flags = 1 + data = length 120, hash F562B52F + sample 41: + time = 2863000 + flags = 1 + data = length 96, hash FF8D5B98 +tracksEnded = true diff --git a/libraries/test_data/src/test/assets/extractordumps/mp3/bear-id3-numeric-genre.mp3.3.dump b/libraries/test_data/src/test/assets/extractordumps/mp3/bear-id3-numeric-genre.mp3.3.dump new file mode 100644 index 0000000000..89386c95fa --- /dev/null +++ b/libraries/test_data/src/test/assets/extractordumps/mp3/bear-id3-numeric-genre.mp3.3.dump @@ -0,0 +1,20 @@ +seekMap: + isSeekable = true + duration = 2808000 + getPosition(0) = [[timeUs=0, position=39729]] + getPosition(1) = [[timeUs=0, position=39729]] + getPosition(1404000) = [[timeUs=1404000, position=58809]] + getPosition(2808000) = [[timeUs=2808000, position=77889]] +numberOfTracks = 1 +track 0: + total output bytes = 0 + sample count = 0 + format 0: + sampleMimeType = audio/mpeg + maxInputSize = 4096 + channelCount = 2 + sampleRate = 48000 + encoderDelay = 576 + encoderPadding = 576 + metadata = entries=[TIT2: description=null: values=[Test title], TPE1: description=null: values=[Test Artist], TALB: description=null: values=[Test Album], TXXX: description=Test description: values=[Test user info], COMM: language=eng, description=Test description, text=Test comment, WXXX: url=Test URL, TSSE: description=null: values=[Lavf58.29.100], MLLT, PRIV: owner=test@gmail.com, UNKN, GEOB: mimeType=test/mime, filename=Testfilename.txt, description=Test description, CHAP, CHAP, CTOC, APIC: mimeType=image/jpeg, description=Test description, TCON: description=null: values=[9]] +tracksEnded = true diff --git a/libraries/test_data/src/test/assets/extractordumps/mp3/bear-id3-numeric-genre.mp3.unknown_length.dump b/libraries/test_data/src/test/assets/extractordumps/mp3/bear-id3-numeric-genre.mp3.unknown_length.dump new file mode 100644 index 0000000000..42691428c3 --- /dev/null +++ b/libraries/test_data/src/test/assets/extractordumps/mp3/bear-id3-numeric-genre.mp3.unknown_length.dump @@ -0,0 +1,488 @@ +seekMap: + isSeekable = true + duration = 2808000 + getPosition(0) = [[timeUs=0, position=39729]] + getPosition(1) = [[timeUs=0, position=39729]] + getPosition(1404000) = [[timeUs=1404000, position=58809]] + getPosition(2808000) = [[timeUs=2808000, position=77889]] +numberOfTracks = 1 +track 0: + total output bytes = 38160 + sample count = 117 + format 0: + sampleMimeType = audio/mpeg + maxInputSize = 4096 + channelCount = 2 + sampleRate = 48000 + encoderDelay = 576 + encoderPadding = 576 + metadata = entries=[TIT2: description=null: values=[Test title], TPE1: description=null: values=[Test Artist], TALB: description=null: values=[Test Album], TXXX: description=Test description: values=[Test user info], COMM: language=eng, description=Test description, text=Test comment, WXXX: url=Test URL, TSSE: description=null: values=[Lavf58.29.100], MLLT, PRIV: owner=test@gmail.com, UNKN, GEOB: mimeType=test/mime, filename=Testfilename.txt, description=Test description, CHAP, CHAP, CTOC, APIC: mimeType=image/jpeg, description=Test description, TCON: description=null: values=[9]] + sample 0: + time = 0 + flags = 1 + data = length 96, hash 1F161542 + sample 1: + time = 24000 + flags = 1 + data = length 768, hash CD1DC50F + sample 2: + time = 48000 + flags = 1 + data = length 336, hash 3F64124B + sample 3: + time = 72000 + flags = 1 + data = length 336, hash 8FFED94E + sample 4: + time = 96000 + flags = 1 + data = length 288, hash 9CD77D47 + sample 5: + time = 120000 + flags = 1 + data = length 384, hash 24607BB5 + sample 6: + time = 144000 + flags = 1 + data = length 480, hash 4937EBAB + sample 7: + time = 168000 + flags = 1 + data = length 336, hash 546342B1 + sample 8: + time = 192000 + flags = 1 + data = length 336, hash 79E0923F + sample 9: + time = 216000 + flags = 1 + data = length 336, hash AB1F3948 + sample 10: + time = 240000 + flags = 1 + data = length 336, hash C3A4D888 + sample 11: + time = 264000 + flags = 1 + data = length 288, hash 7867DA45 + sample 12: + time = 288000 + flags = 1 + data = length 336, hash B1240B73 + sample 13: + time = 312000 + flags = 1 + data = length 336, hash 94CFCD35 + sample 14: + time = 336000 + flags = 1 + data = length 288, hash 94F412C + sample 15: + time = 360000 + flags = 1 + data = length 336, hash A1D9FF41 + sample 16: + time = 384000 + flags = 1 + data = length 288, hash 2A8DA21B + sample 17: + time = 408000 + flags = 1 + data = length 336, hash 6A429CE + sample 18: + time = 432000 + flags = 1 + data = length 336, hash 68853982 + sample 19: + time = 456000 + flags = 1 + data = length 384, hash 1D6F779C + sample 20: + time = 480000 + flags = 1 + data = length 480, hash 6B31EBEE + sample 21: + time = 504000 + flags = 1 + data = length 336, hash 888335BE + sample 22: + time = 528000 + flags = 1 + data = length 336, hash 6072AC8B + sample 23: + time = 552000 + flags = 1 + data = length 336, hash C9D24234 + sample 24: + time = 576000 + flags = 1 + data = length 288, hash 52BF4D1E + sample 25: + time = 600000 + flags = 1 + data = length 336, hash F93F4F0 + sample 26: + time = 624000 + flags = 1 + data = length 336, hash 8617688A + sample 27: + time = 648000 + flags = 1 + data = length 480, hash FAB0D31B + sample 28: + time = 672000 + flags = 1 + data = length 384, hash FA4B53E2 + sample 29: + time = 696000 + flags = 1 + data = length 336, hash 8C435F6A + sample 30: + time = 720000 + flags = 1 + data = length 336, hash 60D3F80C + sample 31: + time = 744000 + flags = 1 + data = length 336, hash DC15B68B + sample 32: + time = 768000 + flags = 1 + data = length 288, hash FF3DF141 + sample 33: + time = 792000 + flags = 1 + data = length 336, hash A64B3042 + sample 34: + time = 816000 + flags = 1 + data = length 336, hash ACA622A1 + sample 35: + time = 840000 + flags = 1 + data = length 288, hash 3E34B8D4 + sample 36: + time = 864000 + flags = 1 + data = length 288, hash 9B96F72A + sample 37: + time = 888000 + flags = 1 + data = length 336, hash E917C122 + sample 38: + time = 912000 + flags = 1 + data = length 336, hash 10ED1470 + sample 39: + time = 936000 + flags = 1 + data = length 288, hash 706B8A7C + sample 40: + time = 960000 + flags = 1 + data = length 336, hash 71FFE4A0 + sample 41: + time = 984000 + flags = 1 + data = length 336, hash D4160463 + sample 42: + time = 1008000 + flags = 1 + data = length 336, hash EC557B14 + sample 43: + time = 1032000 + flags = 1 + data = length 288, hash 5598CF8B + sample 44: + time = 1056000 + flags = 1 + data = length 336, hash 7E0AB41 + sample 45: + time = 1080000 + flags = 1 + data = length 336, hash 1C585FEF + sample 46: + time = 1104000 + flags = 1 + data = length 336, hash A4A4855E + sample 47: + time = 1128000 + flags = 1 + data = length 336, hash CECA51D3 + sample 48: + time = 1152000 + flags = 1 + data = length 288, hash 2D362DC5 + sample 49: + time = 1176000 + flags = 1 + data = length 336, hash 9EB2609D + sample 50: + time = 1200000 + flags = 1 + data = length 336, hash 28FFB3FE + sample 51: + time = 1224000 + flags = 1 + data = length 288, hash 2AA2D216 + sample 52: + time = 1248000 + flags = 1 + data = length 336, hash CDBC7032 + sample 53: + time = 1272000 + flags = 1 + data = length 336, hash 25B13FE7 + sample 54: + time = 1296000 + flags = 1 + data = length 336, hash DB6BB1E + sample 55: + time = 1320000 + flags = 1 + data = length 336, hash EBE951F4 + sample 56: + time = 1344000 + flags = 1 + data = length 288, hash 9E2EBFF7 + sample 57: + time = 1368000 + flags = 1 + data = length 336, hash 36A7D455 + sample 58: + time = 1392000 + flags = 1 + data = length 336, hash 84545F8C + sample 59: + time = 1416000 + flags = 1 + data = length 336, hash F66F3045 + sample 60: + time = 1440000 + flags = 1 + data = length 576, hash 5AB089EA + sample 61: + time = 1464000 + flags = 1 + data = length 336, hash 8868086 + sample 62: + time = 1488000 + flags = 1 + data = length 336, hash D5EB6D63 + sample 63: + time = 1512000 + flags = 1 + data = length 288, hash 7A5374B7 + sample 64: + time = 1536000 + flags = 1 + data = length 336, hash BEB27A75 + sample 65: + time = 1560000 + flags = 1 + data = length 336, hash E251E0FD + sample 66: + time = 1584000 + flags = 1 + data = length 288, hash D54C970 + sample 67: + time = 1608000 + flags = 1 + data = length 336, hash 52C473B9 + sample 68: + time = 1632000 + flags = 1 + data = length 336, hash F5F13334 + sample 69: + time = 1656000 + flags = 1 + data = length 480, hash A5F1E987 + sample 70: + time = 1680000 + flags = 1 + data = length 288, hash 453A1267 + sample 71: + time = 1704000 + flags = 1 + data = length 288, hash 7C6C2EA9 + sample 72: + time = 1728000 + flags = 1 + data = length 336, hash F4BFECA4 + sample 73: + time = 1752000 + flags = 1 + data = length 336, hash 751A395A + sample 74: + time = 1776000 + flags = 1 + data = length 336, hash EE38DB02 + sample 75: + time = 1800000 + flags = 1 + data = length 336, hash F18837E2 + sample 76: + time = 1824000 + flags = 1 + data = length 336, hash ED36B78E + sample 77: + time = 1848000 + flags = 1 + data = length 336, hash B3D28289 + sample 78: + time = 1872000 + flags = 1 + data = length 288, hash 8BDE28E1 + sample 79: + time = 1896000 + flags = 1 + data = length 336, hash CFD5E966 + sample 80: + time = 1920000 + flags = 1 + data = length 288, hash DC08E267 + sample 81: + time = 1944000 + flags = 1 + data = length 336, hash 6530CB78 + sample 82: + time = 1968000 + flags = 1 + data = length 336, hash 6CC6636E + sample 83: + time = 1992000 + flags = 1 + data = length 336, hash 613047C1 + sample 84: + time = 2016000 + flags = 1 + data = length 288, hash CDC747BF + sample 85: + time = 2040000 + flags = 1 + data = length 336, hash AF22AA74 + sample 86: + time = 2064000 + flags = 1 + data = length 384, hash 82F326AA + sample 87: + time = 2088000 + flags = 1 + data = length 384, hash EDA26C4D + sample 88: + time = 2112000 + flags = 1 + data = length 336, hash 94C643DC + sample 89: + time = 2136000 + flags = 1 + data = length 288, hash CB5D9C40 + sample 90: + time = 2160000 + flags = 1 + data = length 336, hash 1E69DE3F + sample 91: + time = 2184000 + flags = 1 + data = length 336, hash 7E472219 + sample 92: + time = 2208000 + flags = 1 + data = length 336, hash DA47B9FA + sample 93: + time = 2232000 + flags = 1 + data = length 336, hash DD0ABB7C + sample 94: + time = 2256000 + flags = 1 + data = length 288, hash DBF93FAC + sample 95: + time = 2280000 + flags = 1 + data = length 336, hash 243F4B2 + sample 96: + time = 2304000 + flags = 1 + data = length 336, hash 2E881490 + sample 97: + time = 2328000 + flags = 1 + data = length 288, hash 1C28C8BE + sample 98: + time = 2352000 + flags = 1 + data = length 336, hash C73E5D30 + sample 99: + time = 2376000 + flags = 1 + data = length 288, hash 98B5BFF6 + sample 100: + time = 2400000 + flags = 1 + data = length 336, hash E0135533 + sample 101: + time = 2424000 + flags = 1 + data = length 336, hash D13C9DBC + sample 102: + time = 2448000 + flags = 1 + data = length 336, hash 63D524CA + sample 103: + time = 2472000 + flags = 1 + data = length 288, hash A28514C3 + sample 104: + time = 2496000 + flags = 1 + data = length 336, hash 72B647FF + sample 105: + time = 2520000 + flags = 1 + data = length 336, hash 8F740AB1 + sample 106: + time = 2544000 + flags = 1 + data = length 336, hash 5E3C7E93 + sample 107: + time = 2568000 + flags = 1 + data = length 336, hash 121B913B + sample 108: + time = 2592000 + flags = 1 + data = length 336, hash 578FCCF2 + sample 109: + time = 2616000 + flags = 1 + data = length 336, hash 5B5823DE + sample 110: + time = 2640000 + flags = 1 + data = length 384, hash D8B83F78 + sample 111: + time = 2664000 + flags = 1 + data = length 240, hash E649682F + sample 112: + time = 2688000 + flags = 1 + data = length 96, hash C559A6F4 + sample 113: + time = 2712000 + flags = 1 + data = length 96, hash 792796BC + sample 114: + time = 2736000 + flags = 1 + data = length 120, hash 8172CD0E + sample 115: + time = 2760000 + flags = 1 + data = length 120, hash F562B52F + sample 116: + time = 2784000 + flags = 1 + data = length 96, hash FF8D5B98 +tracksEnded = true diff --git a/libraries/test_data/src/test/assets/media/mp3/bear-id3-numeric-genre.mp3 b/libraries/test_data/src/test/assets/media/mp3/bear-id3-numeric-genre.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..316fa0767e52e1193c53622194aa6e10bf0221ee GIT binary patch literal 77890 zcmeFZby!@>(l@#oWN?Sz?iM7tySozz4#C|a5Zp;{_n-lSyCq0)*8~X!g1ZJnz9Gpz zXYYOX-rswl`^UY{^PaV4W_4Hps#bM%Rdr9Z23ZLXXaE2}j|?uYJ6DxaTXD_n*7HLW4dqW69-uKK8?X2v~ zfACpY*_zuM+nKYtdb<7+^k;MYPK>yWs0u^`3jmltHFmr=`27Kbm@`8F0NV9`4Gk)U zC=LO*LhSfsbbj&S{^YwKy?Y**H}^aMurw^Lp)3v|(n7RzFl7UvK|jUcf3gF=gd#!! z5ZF(FqAIcwhEx#<&C1T$()^*dqq*g;ZvTFWzR!PO1<>WBWTgNoD2Ux5C-D6PAP&I6 zz{0`8z`?=7fx&R_i0Fuj2ndMSsA$OO53up@9$@3*5)f095)e`n;o_1pkx|mn(lgNG zlQOe1)3H+1(bL@vfdYfUi13J5h=^Ep1h@or|BsLFZvhN=SWj3_XebH*gaHMO0rkBH zAc80f0zpGG{nr5t2L*V+S z)9^J!K&49T$(UH-T5tV)iNHKP+th*S#wWi>Rj=DXSmKZ*Usia z+O~Tn9N*T3YSz;!o{FQjaxDfT&&sWW+coZ2SjdLh3bo#<*Blx7Im20{`g;}wb(YrJ z?mDA(_k2)2Jq9)zVTNNcPj8yv&9m&mW`P9&WAV+5*3G;`B22mq=cIKR8SNtoWL>W2<2MSacHvtnHm59jgNg7^EOW!8bnZ|HHcEVT$nC|>EkYwe#iLb z;%o4uAdKHjf^KAfB6rg%h$uH2Qibsy;P@CC!+Co(O1{*1cGF6Hlsx`>^govodvgN$ z&cfzKJG1?K1OAMKIzIvAdkrjGM;{*ix$Ph7PICnky)LgJn?9ka`~}RTg=uhoDNjLn zx~8ewZu@_1CbUqYbxPy1O_w7a=k9>N5DWmkdr1-v4+m!=59a2RR{s+6AH?V$ew=5h ze4fuyME;}gCjsnGGF+Ke#+-f7lbU_?H=sX|;TWrnv)e<6(0fJxK>vMZ6gJX1h}%J} zug`Ahe`15T)dU>qs@=%<-&X$afN4(;VYZYT@3Y_izl#L5M|$RsJOfPL{GGUaI>=;1 zG`q3b2=_eTpJ0$SDAI7ZaqpCP9|#%D?!Er5v`ql~0!t`E$vV&MsnL%{ zQf&tPx=UuzKTWYfBTgA z@Kl@7yS>{%1wc=DG;if5NyPf24bG9JJ$>nZ(rx$+`yW@R-XVlYo9_TzW9F|m1RrL! zMoY2H(ESfnhkO|G(IfIf0mc_FXEpH zPzFJJ=k>R%Qh$Hj-*bT6-^sNYF24WUR0m!9At(lCqUwvt@7eyo{D99qa%8*P!}f0= zQ0ny)HeY-ZJy-t*@Fy|?-Lk^yS)aQf9s8eJeyh4}H&~Adh*bTIi{Ge!e?>}hCNZ^~ z2(|wk2%}>S#@9PnN|C>5|1%j&OD?A6ZeICkjQqJ30KdcTKwj4#zTbNL9~~}BTiUJO zonp(me+}nb$}S>TkSRHx7{Fp1z#w{w@&EA$scXf2ar+0{bCJJR_`lS@wE$X9P*M-C z&img3C?YhN27X5GwNR#bQtx}S-#7nrnczDhe-OjqC*sifcut0gKfB2-?)nFT#xM^3+&&)|Dg!iIoVn+7rjoKU%X1&^=}}QYNKPee$Pkx zP@leqc>~lRt0zRsN^!N3un9hno5^LsR(_oXF@u7BbW z8tA1*AptAOO>W~q=noydsqHP%9S^p`UFre|;=+FYK?5 zh$<_!eVN_pHyrc3C^7ZE161~kly#iE^KK{Jh-2Dyz*Fyvf&rvAFakECn^MYC+& z{}%8+hD2HzHu#K`6@Vp_-fx#N8fZOKnIZ##*$kFSuQU7=y$8-2=mZ2=PQ?f%x&@O! z%&Byqz=aVZn#-;qB()({l$Uq~{A1iQBsT?(G>yV-Og-lL5C8x?xAj{&{CIzGF4|m6 zWvKvwK-^;+6po-Q?^QhcHpR6f+Y8PkHg<7y5~4c(X4bb{1xtKE9APLSs4w38ku6L! z8Eji309@7dhhq7Afm&)=P5=OFKTtKofP5gx+m2N7h?8$!2}`9`x)4hD^h=@dMaL_D64R5~{8n3P}aVr*~s`6vakJUVsS9ylkTEcGU5^7Fy+p z1^P>ty*IhfX_fl34uWWaf9xG#&1|`oE?R)ax{2RqW*YC{lztG@>53m6mTQOOBLWv# zYEUXgYxG4~3Sw1=a|JzNr~1acnIjJfJqt~lTQ1E_SI4ZjxaUpxaVD4yYpb)04*M}1 zLV}|~6Ir)h%XHib0N6^nfs+RA*1@5zcK-Ass|bwSOB zy@@=0vJmv6}7c`K#0szt3 z2KX8L#kbEb?!QzJKea)xJQ)oDpia*iaYhn3x&6%%XA;QZSs2kPhc86#IsSY6*8=~w zz<(|9zrq4w$P)vs=#cdRG&Bt8{`m1&0Tc)t1{Q!r$0p;%z{E0QRUsF_!KI+2V&iz! zl?!=}03Py;0Te9gJFvrYf;G_=eBpxjl*idz>ZSfRqBJbR7DFZ$#ZZ=N(Wt_UM4zAq zD#Z!p{)%~j(HD=~uH(41?%tneOK?5X9!yzj)$U2|Gds@Pt9p4{o*a3VbaQEatvQ74 z8+pSK+*S(jO4MJmoU{C%d0rvF4R_l!;lc~sn~<)Ao=zMp>e7-GyPS@pH1)H0TpgVX zFE&|`Z$I;8Jfp2lVBUKba=#);k~On@YIa0W>9@fhkSw0WyVNru*?n=P_+!RoBzOAD zhchSi$)#SJXtthlNzBo+C$BCJagV91(}k$o>%R&{nwND@i|>csWtMMfGhrO6e@Icl zQRt$EX!TLK{>9_EG&+P3m~N_X9g@TmMC!cAVA^5fNcMr`=yUYE7tBbfs@Y|nWqKiQ zQf*-b2b>-#ZUhIAs~0LZQW;K}UgWt-?lWry(8QDcN16$o;L*H*5RJ9GQ=+)0%v_V# zsYOMm$y>r0v1${`g?jwQ1^hbGv}~O^$R-m8uk{#@^95z5)e~2UBA2A;iWo}7p35Jw z!(SG^APHPDWO$rtz^=M7vBcm_I(7(N3*S~#b9kFzz;WnU6+uo?0I>tsCAXDl(hyFY z^@gNO7TqnqG$Q@kK$9w;;+2~9OU1b46UO8SFU?D7D=)SA0S5|senmdbwXnR~Zz|8| zX(KUTx~C_eI}ki3pk9+-GQ-$Y7xeZEh%gbvj13$El@RGnXU95s+ub8TUq)&d!Qrzur(b`YoqU ztT?=hTg&D<@pj>U!iP3ig(BecnN->0OCR}emHy?|1X{uDrt7gXHkV!HOm}cuwbL?5 z<-R`xjCWjFz!`4Tb;M3N9Rh}WWZ1cDEPWOZl$v*HoSb`S>Rru*KVp`jlBmCaoZ)m9 z<0l#ElCSeD@ZI3K^w zedZ@5Y5)AIOrg0#kO_7D5GyCVD``2f!<_cqy>dQsasZ$5S)%ij{B~I;mck}h#+i&N z+Y1>?WtTJlsB>HNeU^<$SQ(QD#jjMXFSd!Wm8YmQ4}`a+ilw*JRp#rz6>%eE%ZSNc-ZXhcfZ% zrQZS7nht6a@6ay{SMgsP2CvmVQjQZrBITS?W6NJ!Wht2TlJH!&`FI>nWxni{O!;d@ z(w%V)RX({SwLOe&Wuj|g9Y}Oq9MTrZ(vNpmMt+e?@D;64d&Dw7Nd!}+t1!D zjxX(h11T(FUd&IqNsm*F+>O~qbKeL;9i6-Ezm_h@5z+BUx|o)(H|%6Rd)VkdgY6x* z!gEW$zyBSe`*xb2y7hFnf?%dVug*p*#(JVckF#8={(mE>v{XSt_?rTJfcA@|&(vNB zB7)CidZMH@rBvhlzCocQo?x~GSCP|!OMGI!^t)Bo&*t*@=QYvBmZb(~XvPP#5_NK} z^xV@co}hhnP~vAL;vUy$fvr;-lI*H@aQcKu%I@C{1`=4}wl!01I=*vZ7#Z3@mxNQX z!(fy%BpOY%U|gC;WO(VW)PUy)MTUvF#d`Nf&E$g_zszQUX6lfh1cCS@vUlXQ&t1s0`3XI zEhf8N!4SDKzrKdb4j~h!oe%FYqSY12EEG4wfqb~ilRoQJiZ-`@4t8H+auMD|z8v$+)f!u{x zFG*K2CQ(}xT3UaXR$(dsnDJfMNO|{H{Uw@CYmkER$XP z#6Q)~@zF-)(!*4US8P-sgO<}2FY`Mdn=@+fx~7L$=yF_W;>~>QJ2SybXIInoaa8GL z5|4p4!!3&b>j@p%y3f#d3nOa}l0OLYXgz8fWU0J(h-=o?6Y0!#0r8u07J7&Eakk*T zd9~DOvqU<}k^qbO)l=6~Px|1Z0U1-(a1*;IZ+A2dm9kegn<*1T!db7#W29s@7Cs6# z2Yjk^bm56|Mj>TzVJI46jOiU>DULJTHq>kRL-~Qn-?VP)!z^5#)`wp9jeCGsmKFD|6Q{ z(0k$Fb=6qIkjsD-B4LtR76u^SyYsJWv#xb5Bo}l!9IHP*ObzG8#2!V6GNLe}#>+Kw z!yb4q_gF4h_15l(mi!p9l8Kf!EV=#~Hu8E_XN~LAF*fRGLnH&5$Yp7fjUNTz-Y^jc zaEj3BHFEMdrdDFUvDdM+ul`VhcNCYlxwmcg$Su#K86w zw=+YCC>MGUeIL5GyLg6d)OxkuZhj1(gDiBA8rDL=5pnD0<=x+IYhyHG3CJv2^vI+t zE|*@5whn(FBC*eQ;7SmNao;w3G|3an8m|q9PXDBm#bAxMG+RKDJwN#-FEr-Ph{yIL z(Wo6RS(IW8(sml2L|<>qI|K5z4d`U^+v1ajOvw|S%*WkW8T6gbE3k_z zLpZ6Zgxp|`U>Sz8cyn3i#>n=Uymf?E1wu$Ooi4VEt)zagO88pew`eWE|SGZfQz61TKwNM4mkfN8~G~a87 z^uUrk{K?}74-qoxzM0;E;r7J2s=$|%pHCz=2MqI9V7_(*OWFPK^>7wbzx5##j`-f5 z)N+&zYNP!t7PmIm>z}$eT({5V8%#9UA&odvx!Yj}zr<_hZ4*10PgNdy0AYZ= zL)bVw=7soS2l@`0D(=BC_MyaWD0GV7=4I1wS*1DVGLAWXR2~T(M^+6{ZVhEKQbL%# zl)B=1G9Uf9*1hgX)?zjpR(*+= zMrO00H&N)P$1!&}_}&N-B?I0l?M&KR_RSVhWx5UcJB6n|J>9eJxNW4AiMX|hN?kY+=GDu!(!0A z``8(btLSXh2MVs}3vzCDEO^x*@+*ff-=y>F57E=PCPp@g8%dhYu@Lb{Hk()4zk+1Q zF0g9j`Wf=C;A44DTCEbQa2?hR%iidi5NIR;P_y8Uh_1iNepoZJ`VF)jfwiwFUTF4( zO1(fIQwofx-@NiO4T!oB9+Eu9$V?upq^0kZ+fa7~ZiOF{ znphLFA$S1=@|~P`n>>5<`NI6al4>Pwr?oXPB`q&S7Qt#fE06ca=#6&J8DSudI%z-% z+wcjcDD0o?-vAGUbb~D39Z{vts43A==0Rp*i`7jhyHkH4OeMQ<_{A+5u{GQZ265vL zkG1Ot(Z_X(rEYp*r0 zaVqhNJiJ5RwY?=F-Mf2;az8fI{mR5dC6@YQ#7xw^cco#ydKl%9e)Y=eaYymdAwKHX zm2?~&14b>%WgwWUh}_F=^5QER{h3XX)CW?`{i7ana-s)f;3t%jpxH73jNIV5dl{`M z$iK-<$CQLa%SbVoKo@C580CEjLSm~vnU=QDH_Ef1%f9u0+pm38J)J0zt+8A~Uzu}M zJ#)+ChDjc1xoqxE0kh(i$k&jvEkc(byqC=l<$Db7-YYJ9Rq-Zh600NAzKbVpBsP% zpg=H?od#?+6*X9LbP84xQ8IQ_91byYN+;voH$Qe9prN3Ip}qt42s;#T2L;o5D;zXF zdb9J^4EdxNVbi)R!yk%OEPEQ?23#}{?qMZ}R`Jmj#d`?{;Lkf*e%uL)LK5;N=MJu7 z$H04O#of6B*LZ99Ns35z@hjJ^K4E;vqHqY*!QlGs&3aM@(!kQ^ix!LeJu@g{v4b7e zYKmhwx;B#CD|JEw+}oSQsWqkDr_0z-^~aRm>GKFp^+eBF)(RrlO32(yJ2-)>Oj9hjM)?V@^0e`lVX1WFH`%7D>5Ry4a>Bt& zBC_RT-vI{d;5vWN<q1N9e|`>t^~S)!r8{?!igEBCe^8y z9MyzxuV1O@+E5)j6k{q0+my`V@?EOzFyAhS<(f_0MV=bia$O%4p)&31IcOTc&9NhW zSDf>83HP<>wM12B$MT?hV(Y-S)EyZ?Vx*GZy9*^x{f@B(OnccU{)i%<#5-D-WSsIm zmQ}(qJ#yB4I3+;KX4cIq4Kau0yrTP&us*^jjCRWmjC&_B{H^U(hu!L|+xZBq77hHb z2Qccl86ukrYptrKl)()Q>D3V%$*pNI=zR;61X4ccHIuX70gyedfH*wrcQwi0!tyeG2y&o$QYoCwVWiFz4%WS&H%`I+~Ib2g$F6gR8F;*1KkM3R66bU`D zyIw3WV`(6A`w*aweaIf2uISYegcAZzC>_|m%$a~?idp$26`)w zH??dquwW*BCAqyq>AH99LpqTw7#DgY=~Oie8QXAh6jx-l9IkuEsoeg_&K%7xFnRG;~! zH#H7;9B-?oz(*gR$tmL2PtZP7erPilwa|a2jk|hq=f`KV7L#Mf#=3fYv7VgikNpeMvDeZ8vuL0X-}APJaUurYmE~YFAlzO-pDq9{3>fU*8czhDgpB-9&+EM2}5!U4J4<)K!Lze zz;90?L4N6kfvEy5ijGA_&dMgDYV<3QfbR3i-873Uiv_}HFeiI@_7&^?a~e-HU2X&- zuo?2VuVMDcSV^8ML8vQEY(4P!YP3-barK*?Rxu}sghy6E7d&07Fq<+#-J!l*h@V_Q zn=B^xFIdMyPkpl^quA?|h*f0QlwdcUxOmOMO|n&Q68F^!TCQVoXxhR9AZjotnkSf3 zSmPif8wH)i9#g0fVI%>*EvLp9e7C9p9T)~&$t)QZX!#uNd_NBaD}2)X7Auh|F-lxD zzYeLc>Fmey_Bq+QUi1l0#aLykFE#Ms^(4Sw9@W=08#}*cj?1*VD}!|ph3=c8gjYbL zG$ff0)(5#1Z=MBx2Q>1JFgVty_>DPH7es@d5|WJf13iqBrv#7mvTNQgBdIUzdv~=i z8)SDzTdg9NYBIdiC`(c+)0F#vTU3W4-A;fEt~5I2$9d4Oh{&+eAh=%})BrRF3>i5a zJ31x>tEj4xQ(iR|C5MWdv9rtbz?U_TM8r(GvDM?LKEawM z8a(yh;>_DE{G1+SA!U;ZLY?b%lk~I)$Ipx^qx{SNo&8UM2-fipw>L>Qow0yy+Itj!aF^ zO?yi)qm_)2Ks7XFu7B>$RAhwDzHNsaqHa~k_$88=plIspq-)ESu11%$`IkUvvov4Z zV);RNbQ>%l4xRF>CN|wlBT!8@r2>!YIxC%-QJ(5GqE_@tn z=Qfh%%(~V?ddzlDDh3&6DjLLBr*k>!m~}}|#HLPQrE+_vnMTpCtRmp@duc4;tT|1N z5}{S(>bXFIdefYo473|1swmccA5chQWa($;sfY~W*tJ=ySV4J3+G~>*5?bB5&SP(N z?3slstO?R{vhymW9~&1>ywRdfGJik8@o?moRq>*A8nn4O>ol~J)iHB$m6Ao?lZrkX zV&ga1$nTNp(-dDmNq>2cSk$#BukGud0fuqo6qpe=HioM_JFkO%r3g)5rC8M~_a*97 z&GlnpHPIe4Obl01l7;QSFz-5_3vO=L<`hp!*CXO_j?>R1lN@zwCXe1iBPilzKZ`^X zSuK}0DFEgwOO*UT?LIQ26SCoxCFK)u%0_ZiIW3+RPsx#`YfY#|j6W^xs>2aGOFy3R zI%7EA_d<<-!dFf|KGa`t#wY0=#ec?k?CxO&yTjx#fiyF}R4^A_+bL1?z>-!g*74~v zA02U3*VY_dl&*K3-m!a)+g2}bj3U;PC<(3UMVzf_wbW8QR_tU%rN{|0%>s=D&aGmY z9Acu?q)+*(Lof4fCf-Lb@;YxtJDXk0vl83M#ZO}=zfl|;L!dW31IxRdp^YIVeDpjAS+onx4vaRKu=%08CL0AduSj$)A zmr9poR#qj18&w$~wd2rkU_^-QY`%(?yHh)wu0UkC)}-a4I#(SLuZ)&c&)HC`K!C>= z(qN>~3eQ&3&zwiquU*qAr%_I#<8>v2D5Pk)0kM>eDi;GY)+%oeWzQoui=O&5CWmVy zN#np!12Fv9DIQJqNGPJ-yv?(i-r}A*EfcR6I#%XB+8)kMtp-8>2NJa0!`K$%Zba!S z3Go$hszX{yR2$`@YH`F2Y67k}a=Vj-<)YZG)nJjyIASIU3He<0RZwLNG_6oFbcRT> zcU?2MTtsBlwJEw^M2!Q5MP+9k$4&Lsz;1zvmiJjRxJm?J3To_-(<+eDhHkx2n~vrP{q%eG~04VBEMX%WT3&IK@!o+YXSv=Nk6@xuNZcZ zWrcWm-Uw$ef+_<<#9r%`6o&}?)X&07MToMIie&3!whB(0m&CttAzxoUUHv-JrfHw# z^C?cSZus|Yd+g}$Bi=Q1YFqu;ixxbmKCx;1hcvSML~k2yFyw-f9@yZKinWOC=r=29 zxN|hZmr~A=_*kW`j~wus9k!)W?YUrh(23~rEwX!w$_!WIuD@baUQBLF$j2X5KLIzS z#R@F17b)Eg#4Gjl{qY7nzr-LtD3=3&G@2e%aZ~$P*7@9;nht!Bm%neNGnzp9G9s6Y z=+(;eDChnw+^Yb7k^FT8=ALBMuVy(EdHB*(zkXgzZtxVJ=5RQ{fq1;1R)~OZMOE1mK z@i0?R4{cG0LOC$G&ulFM3LG{k1LqcCwnusEBlIi0EKH=}G8w%`3_1m)dIS0KC*c!FEJh2#W>x(JUhUN^L zVQJZd2WU;q${XF~Umq}km1W31`k*o}!+8nmCQ_Qf1G=F!R<<> z1Jw+QdL^Gye#lLyM_J5{^b1Vz+I(y3(+7IMHEtps_(+ENAt6QI@QdyvBH+lrgWS!p zfFFmhC$q>No>pB_M&&3~;wcB!vV&9VcVMVxPtC}}s4z?PO}tb!C)!JuI*w5J9=um# z6b{>;zkCgeRF>f6a8y$&dMg%M%^E&#AR(HRmjXm^qyR_><~8$R%w1Aou>lD zBmDa~%S9s05%wlLIu!2~c8+=R4JZ^(4oUX-+v zHk8eWz+-UzvVT$cGE%jbMee((PfuKv$Hl~?Rh|mSY4G*vlqvCm+ck03i?`c#Qk(f= zu?nOL*w)X#Q9RGAS#D?38&>G5?d93dY)N&}r}!%W>J4V%4hk%MY{NR$R;=r|PTR|p zc4>*lr}#BWJplGG3_^)i4^#F^fz3SP&{>u$D(+J*t5}`gD`4Z(hu92dwURuWxyFy0cAcSf!?S zU25R_XVLZ1eWpvYOYXAEMW+2@Ou3TT!ai2gljcWjAJ1m4j34+id{ril5>qdEghHNs zp%h~zQtd^q>M3kH+e0T3ouKd4-Y-Hdi}~#Qj>d7U|7`0!;AE5-fXM)I@~1^lEdI8y zFuZ!!#JWhmHYtlqp5^m8`Aa(&+(zNjS!qoxPZX)VIg`)SKg5~=CEeS1q3GE8~&JsE8{t=lR$KUwSPM9!XfFwnf)GtApiE&>z z`!hbeLfw4aDbSp=H(1mS;&g-7oJZ{eYp?<*vDwfC8R2UxZ<>G2#&j|PNPwltDd z-DRW?kP6d-1bwS2R9m*+J}anxu|FS(Nd`ypZ9b^DNxWnOlIsw6+psqHF<91MZ&`Ncv&UQ23gQHru z+elYe3+KKu9*9mJjmdH8t*Y#dTz7!9gn3XCRg%ZiT;zIv#9O}#!##RKX%#qG=}{p@w(Z3%=hlk zVG2c*+P?KZzfODmO<9u^Sw2mqf}vfAgE;O3^@ArnO1m{m=iKIKd@KX0$H(7+zN})* zuOJ4GP#Q?U#|aM_Cqvuz?~Hc#QSa8OO{)JpNnzbtd#r)oSq6Nj4_i(vL=@Colu>Ck z(Dut+e`O&#G$oGDK?fQG4AT2S5s7Xh`>EHw+0R&hMX>!~J<6KtWft|jsqer?`OjZO z34h&FpyLzU5#$HE#}R5VB2s1QImF|?cfQ4+^@;V#jZ~blyw4Q9xtq*?KI5Bt@_Oft5KF}&$2QOt| z?)fhh$M5n-Upj!tPfY7J+~t(0Q9FvG=4n9B>XVSF+-M;pyfbPF%~yv9#1qbeyiXB{ z<@AbM$N8pl+)byqNP?~s4{?wxb3TKS)M2T5Xv_{D~(>t;VdPz_XkVOu97an?No${!#lEPmNE5xc)vI(RKtBeRm8kW8F zXVR*L%n@n-R?Z0xorw{FuQHI1iMX9iPE}{yZH(QDud_tc%n$l*lU%}x@11Z&+)uNm zMI;stO+dd^z@!&zt?^K1)O?5%Y{}GErJz-Sc|UTo0Rql;S_!E&FRCG5+iAdRSEalp zh_`yz?|LePty;0vv75+mmdnDT9#qZv7S!1OrwjS^<_Y9GzN`p;gyBxs^~UXveD&;^ z-nYTYx-YV=IOuTBy_h;eJ~`XS#Z}W9_2wBrV*X&jEvp~Hch70GRM}9YtI?WXrz8}0 zW9{6qiGkU7!%EMkaH-?jF&(Ls$>FVl|GxI8$V3xGv!#HF0G;)e;Lfk9mumNZT$*}3 zHlwFxGAPyqncV(T{h-SwO}K~VNFAyRKk^vNklA*jbAUsJ@4mHMZQ!(=hK~qt*p473 zVcfH0@8RoTi5QY%;K)2o_EOrFu8SViDj{qD19M#0lhYxVvewj87Xi#@)8c9(_JSvK zugCr!I1%j4?4GrDl-s)*53JRcRUM*ycBTiHzt(BwE9*}WnbRLkdW`&9CXBEz@L3V% z-i~y**Hi0uTT?R#<|6q@=R-RkEH!zoD+Z9hVexUkf^1WqhlWDvL7Z)WD-p%zO6SEPQ8=#VvQ z5II$jBTl3GP?1!=;5ze{O*2a+LfAa?vZB+g$?0H9rlB8H^`9fD`TmHvEqu@Q2){RV z)TrUak{DFMdxty1D-+>~3Vg z2xp~t#?DJ}t$!ewLhY{c_>;;CVyJvEJ-j;u$b9{b+G_amCxgbfdGW^|(-8Em!00OH z2zsbuD~S6YILJx)3IT7sr?=DY9|9iQK)W)~14k6;y_MhJ)$%gZUW1#n>a7Xg0 ziaV)=MF=}a`Re(HUD|W0982$`8>xM!7iZYEW=Ud^JGg@M1)@1|vy2$5i2on~WFL1kKU-v$Kq^H<((JAZX@O= ze|9lm6~-#-LKh8Z#Bv%ip}7Um=2!Gt^dYamga%;3v;;I39;tk5H~uu|Z^JC8FGF}l zh}Rk_Arc@VU5*Z;07$nuBI-O}A>X+ayEf9$$_)p^=S8e&A>2E+;iucau9S6+)`JdbShzLgBCUAEll za{(2JiZz1@v#C{vJPU3=m}5^cglQX1Ct!sjS&0vs3Q&xh9BpTUK(=ti=D;&iqqme$ zjw&^|T1yA47<3**WoP@wAPOakOyx@qS_)KhP7WQZDxI?Bb!cc?sS;#4w(!p>G(AvP zVBHtnw@_Zjm@FtL0jL2oc==`x=x9=DcEO_f&_2OXdoVIhI6U(XP@Vy-yHYL~$V^fh zK^K{!l4L!c>G@QjWw~?YAh#hB3&M4sLVsUq)r5^VpP5h{Gy5JoM%)N1^~Djhe+fpc z>{CRY;44i*2Ws^iAN=m8-nDq6@{+Rp2G+n!QoVem4@8)vfyVJKaH+>G%!VgCpbac`2MtC*iC}M&s;imp3 zrkg#xa867-kEHN&P?8^hS)Et~xjw{k1eZuD6q)Bit|>#)#`M?#!@GE@_)R}_1lS(L zFj|)!)%YpZ;CE3IFM|D8o<7(C0kQ$`!Af&u((ocxu6cl?K1ntibbL2@|q;p?UtAL;|z=exZymx#~t9ugP z0b(jl!!Cw!6JCkzOxEyjbd`4=K$Q$SNCA+b9)`ZAc$*L7+Mp^j@JRgyvW1|Sb0|B~ z9tH|;COR!AhCey92web(0!_L)`;_+h&Fx4xf+GVHI=l&4AiC`!IUtG!o`MH>+2P56 z2^at>z}N`srC6%H)cUQxbldwdsUZW}c;REH6iOIot_zy^_av*{MqMObkA>5my7Jh2 zOmC%eDN9YyjEcl>tJXcAIwOnItcf%YO}<%8;UzOhGJjMr95de7+``Js$`Jk{RzdcT zdqz5blyS0hbz#8I1bp=##D)QjdXj7(6>aEoLO71nNt5q%R+jesbAkp+=ZRnfl29bd z-uMV4uhICw|HMK2xn823!5ZJ$0?zEqHT(;*Y7EhKnOHw8my%Kcp*>Ry0DiTH(6qx5 z5#m5;XSp&gH0V78Kt(lP02HQnb#%_)K_1>%K9~i%U{pM3^FvJl6fN8hYi!pOjq(^Y zg&e1n0-}cxq9{NjKwHJ4@No9{CpZc4mV34nQD^S$uoc-ciWs8@8B*4{3I z<0^okP?%e! z_UY#yHHyNQQ190XTeI|yU0AkAEn1onPf!Eg9tu_3v0w{6djTV#(qI1EB`QB#C(e)? zk5q@S#m|>afLbz7^{Iv)4sOW*vce)d%u~Z}3NcQwa<>%sC%_A$-||TO(x0CoMTS)d z`!2#Cm_yfmhH-x)tihP@4cYIhSJTfY?#V3(!sKfUUNG<3!^g`~_408OnMiZ`p*tYH zJst}iN_VH`$IOaQwK#vV&`L-M&V5?~D52W0NyuR;8L#B5m7Ds{id*d2+L8p$Egh1Z zbyv9?EnVL+G;n`2)v9aa8k*CM)l;&-kPcO4IEA6rv6oxz;^)WG2vYeA-Aci z(HUh@ihfBqmRY?|FxgjAiJf%2Q`2<+pkA%M@4)NOk@@*~LGAyn}2|ckWD>P%yav0*I zE9ZKxI~NzKE*+l{s4(QD7b*3#Y;Vm=C`?%+>;_V74EKvjuH^~(@4(n+5hxQi<0;2UFlHafJA(lpU4p8|AYkNj*}bd zyLqu`vJdn6Wyx}fj*$wa4E2yaTvT{kql zoHP16DWt)u3pC_;tk!gPOW2lvCE|J;%>vI$kgoBt-RJ8f+CpN2BH~X^8TvWXQROGAzd$xNhotEL%?_T0^e+LlvXLZRp z`exo5s}Y0_u)gQ4rHjB+QrsM!vlRJ=N`(uElJn@>+7cy)4rZn>n;ibg1%`&ayGa|$^ z=@LUvWvlMo0<En$Wx`Zx1qH-*#I#NeZOo2WcASW53-dAD3wA<&+mLgGY^4HgS-o zQ%4uau(UL?yWvs{MBE!pG-E0z6(uYAM4-_vCi=elFl>^{r-Ku_8Vme{=}C{Gv=Jzd z3khHsCxT4!@NHr;HppF~Y;XYIg)3nW6-OQSWjwlXAkZIO?Od5JIWSzlewHMx--^FU#I) z+^>5v{;p}hrTdBoUDL+qZGUKYf1gQk(@Wl&r*ZNvHi4_`Z-&LIu}_{v#%OZIFUG=e zk)_}jm*&jCkV?_ka_5`TN5D~xeg|@)%xr=RHs7TwbI2v@gpL1{=c}*=WFo z!%^%K@m*z>ot#0BBcqnvkmL zDkkfvC-Hvd1bQYA1E`#?BJ~)D=vcXPNM;dyb9uPHHX=YE5#fuzIg$Bd8}RGJPst4e zT&O}E*wlUdll=VizGRQ=URR3-M?(Y5(1bxqfqO?HGJ)_E>!$v@s{=%t;S|kKAHv&UjU|Jxmn(F0876PZ# zVbhTHd{R{%5ng~v6i9maWx21rXTVDX7uAL|_*n(a2T_t!#~C7S%7iBr7*3X}f`d>2 zAke%6;+g~{OnJ{nZ=sSed}M-#ItwTgl8;R-i<-lqg)FioZlM-&2V?82^Mj{Cce)~xd0eR>RPN<=pC zaTq{v1c3pgU;f{xn>n1U$nInW*eH0kX9{=e;KNJug`;K5=q&GGp!8jk7!$pHc-sFn z0QA`uaP5$g)llM)NfX>L_LVKGJI{~Qicp+z@!nA?$(fp6qWsiB%!r2t(V4^ntN*>x z+R(SEldd!h_W)FxpiIGn*S|s!vPJ~iRY%agJLsu7m*71dAbBLdhsyy>^IX{y`C8D) z2L&cY2Jz{q?AB><-*v$EebIq)5RVset(hRa(H)kMiRL`N;0wBvAMW-1+HsH^E_9>Dk*>u2Kbv1TBUppb3SA)n(HBS zevI=}$0^(>G9TPYRm7y61s;jXdfvEqGO&3p;2Vlcf!{q1vv#f31Gw z#QsDR%%F}Qo#jqU0Oj)R8z<%rb9^4u zerS4^4CxJw7Yv)UzJ%4={ibw5WV}Q~*j$kZu_9ztMcn+mKW$j!)u#M^*n8`+xR$Mb zu<^zlXxzPV_r~2lIKed#AXq{O?(P-{ZowsJ2<{HSli*H*CP)I)k#oLt&$+q3Z|0e2 z{+Zj^>8EVHwd$=^Ygcb-S5Z<2Mb8LXNi!X{uNp;tpf&K`^#`(JQ<(#EE!!5n{#3)8 zY*1|VFb*{Az5&3UGmfuk&Jf7<4xj^&r9_HOzPtRzs6V~GMdW5qRwpM^rYRKe@fiGM z1)V$GVZ)x48z z3deb{8;=;5ArVcthDW!sAeh0y9Fzjd#{xa{y?uj66ip-#yctwq~DzBE<~ z`T@PqwYfQgnM3t$&m>7+%CuSkbd^}f`LYvQrokY~-j^367HBOVO{MJ8#fMVv`!7X< z*E-Wd%8WyDy^rEIa~J@q5CDhDB4_8j!`ihP*OT--cE$tbj+V6fR%)JL6`WoIc809` zQV{O@nH2pyg0Q{VGaxTl;QGt1p9E(>PMTa9E)7ue zWtX%*camEAV{eHw{dtKb0WkN^IMQI_9UjDfQ{Y7C2+jWC;_)T+2yeE+ zdVhq->L+A=iCJ5$y_ROh@@Ls-K|#1Wmq3MROAu_49-X}vf?0lgl>j!~MKglEJf4x4e4_#YIu)=O6~h%Ut~pr0RkMC8d6PXT z#9B8Tc;)|G#43gy#Hr?ZwZ2`n#;Zrk_ld%=~-j z$zjy>zd|@ueSPq65yt7x82?vp`FIR^qyFzoj+G>Pf$EJ?gKS3gA{z>1TDdP-3tKRowZTd%h z$j(N^eq_J-_g?HL%Gl2`?M)NVJikBm{;AE;*RyegpB4E1S>-LBMQr#}IIe)IfEZg2bV z`eW^Hn*S;Cx4_!d-yu~0t>o{bAAj2lyx)oZE&ZeJ?{v_c_=AVPiTpjv^&131?Z21& z9boNm5ZLbjZxNz?gCO?hpEmaIQz(Cf@LPueTmEkh^!y@L@Nen=A$ltJVvXf4jf_6#?q<@6F>cu;ZL(V}jqW@gIrNg5MF;pflLeGgVHQ zdf#~%ziO*nqVH#sdtY6S^@0rH%T|!{qN3fYrjI21-)>6M=OmlywHi0}NrD^HfUk zR33)FDm@C7j{6tQVS;~NHKV-UD0JHWu&#%!O+XVcIaedVc`C317&EcF`RY(bmV*adRXWFr7l>?f3N>C@LvZ0%fSCn7=SG~ zWr6Jr0Edi-0)TBF0$Xni`}|mPDrugeq3JpW;*$t$3*J>mepwBh z!@|go(h9jqFkq+KAJ+#=hOtPDsN&u4KxwcYYOsr*r z?7tAZlj5yWLH2l&J%f7jRN!=uXmnOeK%v!(^5f&j;U`;tk}IXh4y0TJ+rr`&dGF)T zF2(iwN*ZW&!_-NGC2w5O!doT8(;UARlV z-@!|PhQRVrqC@Ce(}M>{nY22RNFnet!l5JnRuozvNbOLsR0aGeDJJyasxU}$@3(GBN zF~@b0Q(m7REn|?-0;Qb;MZR>uu$;=h*}y{ks6$=XKt>~Rzb;DYY{)A+%Zi)*C|)nZ zn8DpWI!*5JOqvERf{hWq!3OBVr%Y@Xf% z&>zIbYHugJH!>UVCHo}WA`zJD4k0+<;R&Q(Og+!F3-|tVi5NgAqMnRSk%?jEK|~ch zOfrN+qjF^hxRvH=mRdru9|lhDQm!dfv>Y_4AbWyBycEgfsqBy)Kut@9?6JUGBZ<6C zF|+t@>eb$P10YeL3(y%Qam;MeqB>dmg2Nk+B8t4slT8-oQ2Z&XzsluJlqL9N_NO_7iX8H&Jq!7EKq_)^gvtxS*NHC3*~qDsNIC}pU;g9OfoH7##_b0iv1WHVfboD8G=xi7o2WcZ45-6v+jy1GU``t z$a}aNHr=He!%>A2tUpXbmM5fD4 z&%b8co;OpKAxW|D|4Be$Z5Z}Wi29Eg3Sj$C!`>)B{@(XL{5u>DfSOBE6GUb18j!$g zmRH+#tT83AcH;6s`&Ns?Oknzkk55b{J4t){!5*9@wOXAk`M7zd^L9VmRje`dQB$@)`T%x;YRAHP14=ndY zB9Lgf8FU;N1_n&qu*Vx7>wNXti=hXX54U_o5}+>TaDWcWM~}+ZilzC(_$_iY)Jx_mJY5)h^)`}N=QD01&ZXBHQN_ifQ z^J|ZO#l2A;({yLrpqLxsH7P52z~GtDy*k?s2M;j;bZ&!ExAewr;c`E=6mtg?OVh|P zlvF{aGvILkb=uq9lDZdnow8DWbE^@DK4(nnVn_E$8>P;WGF6C?V%(uy%ab$ry^zCkNztu81Phu@zJA*zfdklgYuP1PByew!Od zBi}HG`St#ESZt9`rA5GC2b1Dvur~Rc*5wzz+p4Ouk5BFZdXlT;?mKom!54}zsh%&d zhlNeQPE7q&eWVEFK>ZSlnC<51QDBAj;t4q4#`t8eIlgFzn1q;IfT43*y}IW$kzq7+ zW%8+nplxR69Gy2rGDFHc}c{e2@bwwHnM`p|&^7J7$;!R;^L#$`3ll%a| z$6eitc}4Jfu@4{kd}Lb@(ukhwoIycsJWDjmtG#MhDE5 zwH}pR#Plr-UnR_ckpM^-&ORQ>qs=&(sYIfoF(7N=nw4tF@U@o?LbvSc>nsLy)9e#$ z5Ys=oh1gS|qRyqm1rfwHG7P;UYbPV&4dc#M?S#Nr`j1EVd-aVJ$x^u4SJ3by9EgPA zVW3eLRByr~0}0IYT4-U*MQSDegn4ybdu;EiiWC->5zU+q?*f_Ojh7-*cWuV=G9Fcv}RAaj(SVEDGzT`1PUm*Dm0K7`W^*E#Zbwrln-|(AeM47&`OMuCk`No z#bC@{1qbHB>y|jDBSRUngs!+|ULg*I1;y$B{uuZAsv)}fihgOT(_V+1ZE3C|?!E#1^eZ)cR5<1uBwDaA zxp&KzoqtiMFK6)s#E1;(E#%DL6*xwYmsf7Mo%cp3&I^Vy4U$}KuZd<1m7;Y|*9{dg z5@RRb2zNKMrNz|TI+SLbPq(gb!NT!^v&@|74=d$JjrsY^SGcp80v{$=YcH%fm-lS$}73Jwm9l=f-n?ErF=<6D2g0rA+ zDI#NR2oanEUT?o@LJ^GjS1ur4D-ca=MwBmKWm$6>6th7zox5CRry?OVFP~mqi{1eu z$CQpTDts(u{LMI(IN#al#=9!7_9x(K>gf)g$fSbgWeNv{ly59+dfX3rqv10*N!6qe z?*IftVSdzckCsXXXOsmQ4llJnFz;}jqyQ`D{VGYM6^L<*i&KkV0Ie+Sz?sWt5B#3` z5j{DxGNWvTu=Wtj8FgtUz?1lz2PY^jt-S19XoIlB0G(85g7P%hWk z`{Yj>6K)Q^M#wYG`#qC;Jd3;-mBn`R#PW8@W9ldY zw(BQz&tz(LIYeu>D@w_pj)+NTYT$S0JXsBmqL|q(NdzP|&iVN=sfbC(HS=VLy~(1_ zNZBrW@sN6Oq}GM?$wU^M?5H5WuhI*uO1h)?)%BaJ+9Gr1SldPlN!|xYhWF;2+YQbv zQwx~wxF-dZfyV`dKsi?E;nkUY1h=yA;)#4b5u@lj%IC)|Nwz5dNyk&0sFXewEZ5ML zIH$E68 z$n^+&SKD>>?icJ}iM%P<$z%ioYUz^p#9Zn|SpQ$XdN2TBj3xc^xCwe$`Keo-_-*?!dWA-WBqCQlNR)k~3VY=6JkZK2djYIV^;>9sLv4sZt(#`ys z@4@zqMxV)nc94A84qXCMk>1UiU+EOnN4`gbUnf>|Ow0;%A!e+6#B5%~ky>ch_YSn? zVtgntU7trEGk~Ue(735-gc)N~(1dtl$1zl2z|NL5D6G^yt77J2Ic)TUpQ28Joxoy0 z;O49#kxX7jF1`jN)3MN7bht&rS=^vfK2Xi>H}`8%Wptgn1qJlU(fg)WuX=w2bW`Zh zI43_)O_-v}fZ|x>S9Rc#8Ex|IMd_K7Mhm{|)4c-(Q@LtJ+_!#t$pBxEKbPmxTLf>6 zqKLGwArtcco|0uFbIqeI;+@mlo?F~sz+YPsBBPaV*zSu{xm-&lNRNS+%W*zy>Z>)z zIXt!paO5-Z&aulSGRgIo?JSkNaLDm3wRL;^`DY}X@l}7!URftm`9h&&qVu!sM;2o! zjZlPl2(21gIdF2N+&Y(z_)H4$MAI_UcFU;y=3qmQH~BRWUzX&uU_R$L#d!FG6EDW^ zz~wO54&PUm%yIz;y%|M$vEYD(!H6NY4t_QaOx;?w{$RpSh5W25J{oPsWg8c zaxR?^8Y9$9!1jqD9~09=_bAvulgX0-1uo^`!Km%?%4CP!uo^8H~NRV!*b zO8Ef@0et6vnb+cDq9Iga{*C-)ZA8!GYyB)Vh6+ys7IGEs_PAxn_e#Wl)9R2Xz^pwvKm&0iB>i%3$h}6N!EfH1xPmhcB(Nv5j{pMaw?_oTnfVl9|d3t z5)r?jjg#48clb2MU0b*~O)*XnQ4Gpjb1dC<`abkL*WIeMR=}3VCY}b|(#*z!4Jo>5 zzLs)EWu#U2rzd0qPlut={*z6C$M*>aWNKF5o*J_SfgioSuXt?j%b(e~)%>=k^tl{X z#g1ppRVeQ9stc<(Y7rbq`UFL>#;gHT^iAT>6*SV#TO4^Ccg)@KDNu9lIkkr#p&Lu6 zite70{|U}JX7bvJ@JY!;m9-_yRZUxN{WMfMg9Ej}G9L( zyCCV@dK)R#1tNNg9_%g`a$W){)6#vr5~+*BMY(LuQYKO)T~n+K@6>}NsQf-V6y_;l z=AgT8q);4N7k;d%geRRcU9IP9sbq?*Q&xhGiM|0|AePc~)pKJO@+#eWU*OWaM1>Ka z&Ks&U$I8uXbujWwZ^jkh?dk+}X}3 zbr3L|U`v@oY%(I&N~l@XPqbuzi1|20aE%;|iZ8x{X(RyWS|=j_6lPpC%bTXOIU$gq z6st?P#D&PFlEl?TN~=lrkx8B~>5(S+)qU0C8X>2^v+zDE!EzLW!u%-?P#uWuRS2SB zP(o?1Z!BK~Ba;u$1NL`z=QzEer)wqryLPATw18m{!{@>@hOg|sVU{>$v$=W_ z5H(gq(u(PGvV*qW{L$tyb*@sfqa^DG6pa-}B)Bp938Dg~qBVh@%STI)B14Qnx_}7vJh1`RZ9kV+6g9*05 zx!?HHQ$8EExeDo(IpZ|NTdXb#MQlFAi%-%(T`}`0dAd=rQtex-8RSBHqlO?S0}r4Q zSd5lT0flejL(pvR<1lJ%j5w9X)I+e{vf#qq;9`?Vr#rG#&D<6OSl~R0cr#Q}>tQVk zlu2A;IOwF`(_F_Jd+Si~viwsCiAVw>oOvv8`vvuLzs+X>*oLl4IjbaHwCy78M1c5v zafe6gmtccclpH%T`v{#hu%yq!^ug@)tc6-h!4agyJwMeVdFB{v&)h8l#G4SyM5fwF zM7!qCF=4-ZK1>1ICh7yH|KUSaEO55ur}rffWZDqlO(2?~7&T{QqBdxWVW!D&Sh&AW zIbU)_NF9ucZ9V=3J`&2Y2|~qNTn*5G2qwLG(==#HY1f;)2B6G|ATV z{P4TG-%d4yzs98CAQ?r&d-giNRxXJc(Tn01*j-Dm@g({1Pn%jo?gR=4>}$545(I4W zdgA-%C0!^T%V-&#-@8_vw~rBCkh|vnrANPr*s7TQ5}uy_WLlSsRd&PED~wGxT`4<7 zH4(*2`h9UzG;}6+#5OsY5%@_~!YUt>Xnv+gDWWuPE6mscB}1h8c%Sz#b(_#j2DDen zV8NbvW{0SRcjSo`tiIgD9{uE7L`xqGjeCDyT|A>t_KFL`_HgzHvoP5P$M+UU6FeUO zA&&a_8~!5La48|L(UY^Nj1B5)sMbb*NIoHN9~U6|V$yNLwW2{43$2YmGF!i^BLCTK zD-<3r+6S}joOj~^KhdA|1&@Kbl}SeeJ$H&>=;h*0BWx<^g0BN~QM$g;v?3X5xc;Q| z({v8HJYA~Rv#VA!v&vbzF1KSj-0HjQ@I3z=|vr&d|f*0deuNf|zfFiI@NBmi(LiNXx2 zIockx>^01xum#T6G~$w^Ism%^W~mPv;bWu~yqCUq2Uln&3_kIEy8K6c0Sei|~XL zy1EVZ9bDPXTi2A%Bz<=M3Y=9Ou~Ujnng8Om5Q#{;75WRc*xJhn6oj29ij}~|@(k4g zNH`n8Q(}Rx4|7l(u9iSfZjQo=HZ*LR0DDmdXv!bMb(%Q55Fq=W^GIz9YtSQM{NNk! z2U3FZZE`G@8E~=1w#j{BWQoV1tsBJ)<;{04I=+PqlEF`oEMzdk*JOz~CmTM$+!vhs z!dmz^J=;Om!7ie(9I!rlX+_vLqTg%o#p=-C#64^knicx9U*h^3!gD;sY8iP;9N_Y# zff-J4_e?-tc*r3oh)XK@6G3H}g8LFr^mSq}73J-%0Io*hi15(Yl5cW!@D`~CtHHUlaQ6zQEu>bH0*Idxp_PU21&U_v;afVzxwERY?P(#d9(1liz*I-eAB!_)JROSOj<;c4tn zmLONGcr+kBXP?pR$`_h#a3CkaLb=v_LtGQY4K){>Ku#&p*qt_O8-*i{;jlMxZ=?2X zNnO*D1u-g_#MW2RIm_}gBqq369HpTuC9+Dam|e?W81@l%Ja`N*yQVdrHNe^$-ov)^p&g~XT_Ujk~7NJKsFYfc9K-o z&3r=Vkc`oTi@tsZo%f!UJ6qhq8LcYBrq_9@pgk^&*Es|5LI3qB{@7vsGMAQnAxSmKsW#~DNXiy&m%`5%QxXSGcWPN z8+-FTbPr%F@|CnBW~bKmu66xNH1%JP>eF=qC=@W+h=fiC%bsqWCu&I?)EA>V|f4@E>Dsi{t}*j!W>$3VN&0%VD4|Tij_272UknLoYfz zUCHckwL(~)Q=$!Q-T}Oy%ml7;Xy|U;PF@sC;R+H(gpSXWBLVz*F(Y_O2(QYHZ?sOXp=d_rO}3Mx7V2s0Z8pMa2vsD!M7l8Ty!&OHMollzv|b`B4m zA9;8^_VEo24h@e^NJ>e|$jU1yDk*zeQ`hjSx%Ev~PygWX_|(kX`Nj9E>zmuVN1sm4 zK3{(Q_U-oWyCy2;o|b%q?0m43>;LCN2QTq6k}~~E-Ww_pH(3IGuA_6Hy$!1?EDLI7wms$d0({6B=dJ*1*LL-O-(#?H9ATS!nGy88-2 z&IPfFf1|vOezojak!rG?M;8Tr#ea7*YefNobEj8yW|9DW$M1vzr}&DtwCBR2;yti0 zcE#wjV7vqX8K*%kDnfP-Qgj7$pmS7%4Y5npA2%-um9BL1fRR>b2E&XmnGp3eKQe3H z<5AFJbZ(>LvO{|pD+wJ%K=?M(`!DNK)Rlt`(oXebrTc zcmayND}BeOeqwsh+-q8`_UNH4F2njG#pb%p&DQh0`NV}x=VL^V&lYy~a!Tb|!A_`0 zm_5TN&%M^&zMdGLS_j#Hz_F<)O>P`;Z(KWiTs)w$g^4&zbDY)ogND_3EG4OO^sZ3uUqAAzhx_NtMlH`R!a)G0xp_=smw(F0j>nhfvjb*RP(rTpFf^dT z0nJ*BBJx>NgKn&k+v}?YLBHxMoR2n5?KE{_RrH7V${`CoWI-He+m;bC%3@PEauX&x7hyC}4zkeEBUBAZ^w*1e zv?hHZ^{38dxAo#DA099=pG=@^sb3G;zO?bQOSRDvo<Dz#4o;4(F6W zmMW8Ey=JyX*ZxtcUwB%K*c-AJU+3={T^zF7Wa_wj1L&79YEVP9c&MEM@4-{;$;ojtc^f-c2-YIK zKdL$DhO4=|3AQ=~oTnOS+?o5sY#sY}6#$3Z?im*;ZMDUO=srbeQlixG*00(-XKa7&B39Y zPNND~9BM6}5V%t_+j;;Jzq7O2d3xAv!Fi+~krE~&6HZsQ3@R8A6rJt|48ik`#&;Gg zQFbpWi6BWmAFk@LDZ-=))g+Fjrjn(XQ>oZ_-rNT-6ie!?pf{M~S?}ssw4SBLuvt&9 z%JSg+NRQ>^3L*5hZ1|_+MAafnVN-<<8d1;KntI`}IGYHVqH*3=={_6l4I=+4DZba0 zAh?cn?9>B~tmx^bD{W7Q_Iw$4F1G)h#S2Ws_XOe1{f^UVJ|#YFRlNqY5{zXC~$%O28A z{K4l$e0;pdP&|zpwUPKY{zq@Z879Z33ACI#X5^m@8%cz=Z10F`F*# z80eU|ySup?Oc?oatr=Y}a5uQgm+EAx(O`t6V!h`Xvk5;$sJ9E;cFm)LxC^Dl7-o*j zwhnx7;R%?gF*AEaD2ZDXREaD3ihWKM&2sPag|3b{&ER}&E>fR{alK7!6DfhdB)-0I z$H$!@pR)e4T|PxgT-+1o6s2X$R%T;E+ky`)(QCDDo(ViNCC6%&&8{{4;?>q8{)OXO z{OpOR>U)(1lF04`T&}u^vI>403{u8*U&NO&0Emh+7Ce5c-3k(d1PUP_gL47^9|xGk zp_bmJ2D-wI#9`)?z_v39q$=m-G6@)gXvMPy#H;L`Q_*&I<#uX;pmr*{cQ@`({6e2TGU?HU@dM_ z#LWt`zF-7ZdMvws_;R#T{%L$9FN$NCB~2lnm+2}^>Ak(~r{xTcmJG#QL1zxueqdrl zX^QPW_2tgP>ka69UW=?~gzvKZG{*y6+i$bJd;2S8T3P65G7vfWdU+Ww9yVluS$U4j zJ{mqHEHt+-nQmt5$Ww65AQ~cGs_rUYD3UhmZMJ^7zt60DfH*+Ck8pGg%%q|_jss3;=vtF6<=fgajcCPpc2)xcVV&E)DmJH0row3KMY-oI31_Cb_JaHHm zivs6Mlj=G}A6KfrDnEi-9(3~-=vZ1wd*L(`NykJ=C3$Qq;h6KH$8i>N5s>qaBB8p~ z{}$OL<0WLLcy8HLbeQ{A4hU83{Bg&}P>}Cmpq;mMhXwVR;YW*io zD*Qf<)04P3o%8AxOIEUR47Jbc8kIUL)dvmshoL^#xb^UUwNX>RBI$K zKC<+9#JQ;NfPu?*Vp9oj=NY4WEE36=xD?1Y)RoMma>G(!fPK5!jkaC4{7eYK-y!GM zcJpQp^R-)IaQ$@J-L=fk#}fw$!*DrWyJ?x05e*{l(qb~WLc-l)TIwjPBa~auHY#gws2Kw_LQ7meU4Q7wbW=>V;XR(Z(uT7R>^el&yygc@RimGM zqsucP<4ZbOaqM;q?!hN!T0U z`a7S8{^x2&(>JL2-hcS>cV6;`^w_z-_yj=q^r4Lbz@T!1kFzB-#0?fYnT_KegJ^Vl zd|F6T`7%8q$pJnuU{)fDi0326>~n|gi z;ThqQZ~S!>`lwIpTL$L>5n)xLG20wJWHjtbQ<>t(=L54S?;sKsk&$(HG(l#Y5L%4c zSf#TZSA9MHb|b0bfU(Pouz`Nj57v*|UrSs&EYr+zH&gd7$&Lf5rd0yGaH^5&QG_wt z!H*L6FwtG%UxX9I+q!Lh=kqh*{K7=jkyW+)5Bq%kSoVl+=DYvtgw5YXx?1`9r|FrR zI8v=#!Wwq+9IRUW_o?5PRmz!I=x-qBBECc-8d=#RiWDjiDKe(e?Fg}&q>0YYI4^OO zl#vOWqA&|y3<2xzjYVE}WCfy9Ti|E8mW|*#54u)L+1{V-VG<#F^?VB-OZ2u}Up3SN z!NAz=b-zs=+@%sDl|O(YZPhS}_$eOJg{HN6N=@q*ywn)Ub4+=6bxi_@!MvfGj+QF? z03K-;{T2dYM5-oTK)4qd?K3?#+<1jv-Ov{Bvxf3BAMyx27S(&2`t4im_$r^+x$tys zOj9WDK6mhY%3#iZ%3NuxPu^!OySp17KmYnxqo+jycCbP80-6>m(*Akcq^9*{Y>Asn z`6bevEm~)bm8w-Jiae->IpC4oFni1(h76d9Lhj-u{5zi~fOB8XX-8I>?mzgHG*>+= z)ZP8XXH>EiWA#TvY`f-y1g1zn-`i|;Z7n&h_fyL^9uE)q_EXM__bfynDD&IqmjgLI z*Egi4hdvzjWbwiOa4(5VUykqev0F{8_XD(*drVu@aCB4jqsR^_@ZiQ z0%$KHdgmy?Bff~6Uae?E-g0goAemD_h(h{2uO`1)@I%(@gN{{|7~V2bGvB1gLZ58w z0%T_kaRu)b_lJzW7Dg3r6})eO%BEQ(2%f`!+^}{ls5m;fGi+gh)GWx*bh`QqC2;ZQ zV~SzDRVR41d;j1r+-bjYY zC#;~VISPrE1v|^c%C0m3$8&gyn_nt8cMZ}tIB>BM!=6Mr0dmizd*8lNK2raE{syy8 zaRVJ63?A5o?Z^BLWFjkD!8sxEi%++2t}GfI{`%Lp1*7lgSe#fA^x7(H?1-hubXfBT zAUHlRzg1KmI^&2a^=-VoDJQ#v2w_Zt$h(YLy=bmrgHm9)}lBt%m?b14Nr#Eni2x<=+fCV!*K4&J%l`t54(MTuX^e3?pCXc z`_3Wm_SM~qtv}x~sb7IcB7RCZ5={d8$z@Qns<4zsDNb;H0oy(WvM$H6oI~{rfz`gY zM$@a+CtoBZ=*;sFSR<$DzT4YJ|8sps4M%LH{6Fjswji{EZpQx?KM82lRIA*az5eC0 zjfr20ENobP6wL>f>vyDqyZSbCXRjw4yi!6f*%GG5c|&C)m}ktwr@~^5Tff@1zD>9< zJgn#0bcf7;n+kJWSB6*`VgF05<_rAKTjbOlc*2x0S+MeyN&}E^FKZ+Y8THnelvl z(IT8zkuP3KIW%w8RV1D!PWScWzv!S8XzzLDHPDNYpAm*bbwxP*WIA!8vAi$4@WOAP zs^qz^-s`mOd*fa~ux;qy394|1zeKaKVFCwe6DJb|g*m`WAR2MdVK5Ve;5>AC+b7UY z8*MgT0E*!W;b_gKis7#GgmfMw;!E%=srfT*9+;+l=ko$^u4FQKfXZw3i%*;`SJ^{i zyg%;OQHY0wlC|cAt`-J@uKin%{K*OAoTKIF#VU1V7^EN!7is`)$lJ2IXgZd5U23_J zBvtdnDUn$$)bRDzZ|4)YAp|du4M7Z;m0j`vo=mSqZ}{BXA;CxYKUs>dyQkDe4lZ^s`&-neqF__82FRfis>?N9sBE@Af~5 z&(CFjyP>3p(+Rbb#g$2v_U_j4N2im+DX5!)U+|{O&0}eF$*7D8#SSP<)21pD(sc;9 z$QvS^yC|-pyH&ZyMco=V97sSmupOSXK+2FW@GvZ!dBwca{PYcO1wXKBa7kDBo9ty=qOx2#Xs?i6Ja?C94sN5Vl#TL9ecO=d4q@&Ez1ui zbLpmR)`zh#BPR9M@yi8&8CKfP+Z`4@Z8JT%W<5L-IwPQx zU#E0rB$Of)?V&7G?ubU^x`*{nR*2R}zzmx|{IaN`M}Rr$L#4)9=G&!g=;Hyp`Lnw_ zcg$BuTT9nwpK@yX*d5*3XcXa8c;Fb2!mBzZ-L#1?bK#JhQL>2rO`-D~A#84u2J|EJ zbao~I#pt+|_cO))KR;YBFdr%iSVN6tlB+E>x1kWjHb3BU5PoN@CA_zYcwvmI93!Yc zHaRjhpe$f4X1-5F=KFa@z{?TOXqb2a(@5>jaQat2{PAY!0`^@iN^E1cIwk z1yIvjU*Q~@iH)P8DtK5Z>958JCNKxQ8q8Fph}9S=u0szAD56Z~tlJP1{kR4;P$Xdv z33N(e>xlS<~;Lj@8Ehon$=Kf3!_>FeyY|XZ?HI-+!6kkp-q&O zOrD_Pv|2k&0}1FGHc&0V>07&BOY`#*F6CNVQs?xb zT=4^pKpHAUdMQqCb1R>4>fDNmio@qbWRi9uko~q{`A}iwOACe&q}c`!hTYbe-;xOV zz6@`%2F9foCyywlkG`KMdtBb5-Ro+8o|T@hccqt-RJI{N`H3%X?a`v`#cj8Co8R5} zY^?5iqaKfKdh<@Yb(&wp+k3l9j?w#oF&T`n&ianU;mr4g@WE=9KmoqqhBhE28h!!` z>32R)V1KyNS9e5}{$u>&mN`jQ)WD8#_-Su|%hFDXh)Xwz54nc8=pD>V94bU0YMoWH zUI|ltE)^Lk&d$+r{b5Ft!Y=gmISbao`o1o0*eMWZwU z4QrhN`zES1%ebC;mW9X4jgn)e;)POA2HfQ!^xTo{=0p`o<~u_xk_HW2EaZ)o<~u5{$Esm zbyyR8)b{Ack&-&bXrw!&25dB=JETh*L6Pq6*3sRegd!;^4T7|EsR#-Z`^NJ=KJWYS z?=G&veVw?^Irlj~7VHYlC_a3Z%8JH-DUZ))JYQr>zFr(~^HQ~za;90^Br@bNeC3-V z%a7IZ`RutCeV<)TJ~X95s!C+W!oH0$_%-`+&aD#Cz88#AtT3x_Sg%qNLyoK0LRp^P znjP}%8+pIl`6}Y0O64-muxpdz_S8?NAcU{_HAmBR#fGkk%fx7B_^QkW?9m9<^?(2p z!;=)9%bv>v`AZ!#BO`Rsf9SK0;8w0Cwy4td!juukOH*4MO9xdryEU<+de1=*`AC#l zpS4R-LFTidsUxvR+HPO5+!}sZPT69~F8%I}4LYt0Q1w#y*88nWin9`%1!OV(ywD|U}AGH>Y zmuIT=@+k_fvv@`Bh2 z8yx+r9UB}aRg4OWy3^oE%U&2zwWPEjSpO=`L@$v~27S_bhEOOb7@7T~}F-6md&< zc$27!vBoe*m&9APQ1B$fhpsio6Th%<2Ya;W_A%RarQ6HB8yq$*;0PdGMV(%M{*CfS zIj+%rybrpXx&Fo|{xF7)fo*WM1N<89;_E}%=#RHK-0hsB?&9E#e4L$wy z{DsoqQa>!PiV^YVCbml!kd6X4ZBu0WYnU<{`kPE>Rx6%W<~JVh#1Rc#7lNTBf2 zDu?v^6J)hdxrS^W(ek4%`Pg)TJ>(+rX$cXTA)mrS8e6X~z!{h4UdZ%u7bdLoOl}D?) zpBvWR#j9_CvkqfzX9A%=|HgmdJ9TtFeBy7s%C2L`T-tdVAIC`j3PB;nB*|!JI{)nV z`@()L8~;-?WcZnvVy5IN)|#&g^KBgZu9kRSoP`(Z_{G@jicG@Z z%|P)4rs^%DmIP6^?Xp&!77 zB~^F9n$=ZkH9cazl4K}sQM1NzM{8yWvK0|_?+Z1L5jTx_>t*6RTN>HcLvz$hYn-iH zdCbNx0+gK#uFphKs1tbSul(Aa^sXx6Sy(mcAQT!5Pz6W?hy{e(16yB(JFpAJk_QtC zy)~rid+b*LGZQjeE{TLN_HI9$^By7A1|4H$3*6!PC-|Jnbn1#2dhsuwWQ|PlBWZ5g zfAI`ase_l16Pp3NI;cgubbQh->*VOG&q89Rg&g#%59tKMRjABO9h zZ%Fl0SF2{W$++~rWw^eUX|7qkX(3ote3ZxMY%J9Iq*N0RQo$}y?IrsB@zdFR>^s{h{?{<9>8F20I&Jzpn6&vjxV8PsoxYv)N@|1=YM9i}`kG4|)+ z4_5F~6Qsv_$eq0%0nU8U{>wr2mk(2rJyAGnq*(vg-l9`&`k)d{H+fwy5gBl*h;I;C zEA>WlA%zM92bElFtZXc!ezn8mnb|V-9Qnx9vb1UIX`%Mq5mrX8Dcm*h1WeEA zD`oTN*rtxke;nA~AR!$rtq-q{WNzZwLvS4?7V*vNrq09r$!>dJ65Q+F$1!I0x7873 z27>N~14t$Ag}n&3OwI45k?qAOd0k&sPVOA>7Uvp+dE;`NSW&B)U|M-Lr^Zp%^3tUQ z8-B7<+?O%%GvsD?n8yl}W<%$Q$&1TyNy6(qZt-LUY~>{KtwH3|0HF|jqKd|XwG8QM zll`tytzlxC&!N6yJ&`jqq}(JYXJGWbkZyB<%mZV~?ln7;lIyN#ayvX3POR$z0^*3 zJ(#``MobMMVK+xG7cDulc&@dBPsw~p+NW`5^uv9JDeh_U z_l2b!N5)~*VxH*thh@#CMa?Aoo-1QKGAV@c7fO(u$Md|pm74f5A7&^gr2H-p`@To* zHhuZsp4KTa^4bAwy&aF!yd+)ax16*I@v*_6Fve-U&Ds6U)V)=+;488}o%8i-_RsF_ zImnPb{fi;$8*3zsr#wU!fECH04(vtulS}UAv$sZCH&(%f9ETSX$Y{VCi@)4u4FI4B zfEb{E-v#JSI*Dsjft-5cS1y&F5`AN3D^?P}KWSDII1{z4nbu1#~ZXbhd@MDVmXV$OwVniZM z6t015?5;5Qxb;0(+%Mh4CJp{}Lh+)|l*ntxRF z+7A6ceV;2mpw;>$fRC}2#^gN=B(4mh4GrGFqLWRw{)h-xTrP$)Y`5&VD2g*g4^J9# zSLou55BHLZ)!l=DDGSK^F}}&CN<7PgL<)X9{j>slCBiRYtd?qdp9LQ@=FOHdhHtwG zQXan-s!T<+$5z5LdBRS{=JIaa>`z`QJ=si_tmU3`;#S|Ta`8OLxGY0Wdd*`vzmMfS zZ+cGY7*->Vwch7d16j~YD=E&=fG>H#~sghRJMT? zWxo1K*6dqaFY$@eYRcOl5_XHS=&C_e8{3*)_vpgvc%5qQ>YeT2bA+WmQVqpIQZVo_s0j&zhtcxRFr$ zrcIhSlqv)>$Y00wgkqdHgi>JPb7#~El*}?p_$qx#&tJpFR>(h>p|lHdDsRo^jVhu`df@$bg|xjePN=oEMX_QqOc@y< z0i3RHD$0~Sdzi}jZ*i8{%b&)$!S}JiZ z+&;q8l1x^$2Yt__$ zrK)q(g+R~eAI#jZOa}EO+8e7KW@5>TfB+EdNDrWpT5@Daj4?*zcgBjPpivXnT{r3P z3O_3-v6ID$cm(uNH_C%dgN%E;az@K96z7hFO_pOM=88kFAI=a8N z;3K|$sw42smtgC*8GnJ@@_Ll#jOdZjBoY!91EX^Uk5|%Jy_xB6My}Q888dqz z9gQDZu{}tdCs>HC{3H9iFJaD`%BD$Zm)TiVngZh6nwQeVKz#(kBT%+MI319R=Atad zArmvcSDuE7U`<}0RN$P{F4lrOMuMN?dE13GD*zj3YPgsX0cdzpFjggmR$RWxVVfmP zi_y%~tD8+G`H{!)c|o7Zlqwp`L7+@pnKtz>p~4Kg=bvU1&40w-k#=fWNi$U;w%>h= zJL7z4Ac}hQ@S=U2Bm1|43CbhXgLEhwDhmJzVZ(q(`EfyIQbH|Rewyzg7}}N~mx4DA zRfxHQ<(-Fjcpe9zjhmtMHje`S#(y(2MKqql|KfQ-AU(9g5~DLpogof3V&@50`naE{ zjwQkI-1?ENw>jVAiHjxnl;kWpR#1h0o)5V|4LtB6lWdifmE((9EI#vt5=M;|@l*o3 z2_8Vj@uvuKFtjS+(DmD&Rz|Q`&>ZSkz2|ew{6|Cm6~jtv6^%7d8*(^?sWrZ@T6L(p zEj^zxe&!5GBCyuEcA%M4U&^fKGtO&MebFi(4xR&nEfP+n@(Pc-$E|fssNO)@A+X`V zlz@u6w~AV|Qfpy+sBfu7$nPchqh#uThuA!!idxGs7s7{ZMV-AX_;yZN z)XC=f;6`;ZjJ+0Y9l`XvL^nZzd88(H)=x<(8djOB{XVSHXLcmsSEXa8gn#MNL|`jT z(5ctWp|R=JW3Rlf5%wxYIv^1{Qm2eGy9T6U)U@85k`3v_mkWzD^gYC=E@#y0JQ9pn=z?Z#W!cqAgLtOvu0hQw>iLsVB3+_w5V0U%3V{ z@z*|8MA_R)(&)7_QzE9}gLBsAaPOb@M_+i7$d&2F5Qzu09kD3oH2Glt>8)*t%)&)? z&8KXGZsgBPf0h^%KmAGa#588AY1byrxyBKqjiG^qFe4i#@R+8>Xq$jzS}<+O!t*#j z6&(4{w-^`CQD84i>9Z5p-5+cdGKkT-D0DtQZuRjSamCknLs;f!SQL7`EG3v;V6fG3 zFSJZlinR1*DT#>0#={}$PcgPg29~S~Qf{ZXu}oZ))?HE$Yc=_lhdBl= z4u!&sbbE&|DrWoFS)8ixOSJ`u@#IXtrNmLS7#P~^ZpuWiQK@R&tLtp@cFD=Sv$sRQ zS&q@PGlA-V{@X5&)*t%(trs$TjkAe$2gIrNZE%u3u2^I0=Gc(yG517mz6ub$M}8U~ zQTayk=ICQ&3Ex(=%eeLw?VJ)Ns8>kx-t4t4!#Gw>GkNF;L7REXs|Zj2*XTaW@lTmQ zE7U=nb>E&A%ovzdJCvm|NlAVvRC^Hv#`hrF!_Y$N60|{xX3vorJ$ql0#TIf0V~jXc~mMr-zNS z`4B>t!AcD9i<{@9?6j?BDv%B)6x8owASacGW}Aa2iik&pz8^Ul*?o*N@17qk_Q)6o z=DQs>o!#Ey`91iI!A$#*fWh)_Jp2)&P{TI`_}71ZEQjoHe_(Yqq!E{d^U7wIOHPst z$_Dg6sUiwwMD4~1;=?DSl27itbe%pF!V47@p%j_rL|I^ZE^C62no~B0`hsAQ6ztAK z%lO`KyhyMXW_~26Nr?y(4mKfrbIE{us<3~aoiO!2=D_0-c3L7pb#KK zE^-d6abJAZz^%Xevh#Vti?%;}t!cR8#7=umcnXgl$)_U|ewtStM1C=`Mg|}=Ke1hJ z3^jl|A9%m#@v}9|iZZ9e?G=0Wg)V6SBz4Kj7935`$D$$rL>nL;hs80>hqwg*czcqe zQapKX%XNIay5LeAO6LYE}nd2Ka3Rk zD=-qQPa0*5r6x%EIUfq1_xOP5(Rbr9+{2I&|)fHyYztngv{D@>kl! z7GsXpoNB`-PDV!AUC`pt1e$BE`WG<6yyI8 z6@>bEPS$Mq;&9$`-N~NLcC};s%^^Y^9O4(pQJmu5TB(I$48{+40zz2!-R~0>ki0)` zu8HhZnx%pk^K4=u4r?9N%kU9KSc9<-%!NIvE8g1CXn5wM_Yu5p&VtX>wbA)Pu<0*8 zwFYvv|2uDu7~m=cIW&wzE?}ddJDK8js5K z02DSgcbS0l$<#Fy+njwi@hb0;g|y(J06W--Ny;#GjDO1*qky|&aB`0y0}8i`vBrm5(z4NUTJ0Bb#1`mKP)+F4_YsyoJ`dwj8hnH(6SADMYUN-R zJEW=h(<;a7&;PAf_BN_K^%rlG5hSb!-lW`c#dKiwZKi5V4>_7srCJ?>I%t0=igj|j zxdR%xdcp>Ea9~k@7(+S6ECFtDx}g9ew~%02`Cipe!i^=Y#c`GA9cyw4EoK9bzzUCl z<6Du1))lwl-+46fhrePC%e}w;NDi{qCfuh6kqBH?CMw#nyH{DJJ~iXKjZT=Yayc1c zH$iN^Lk|?3eyQ~Mk$}@aEq$E=xLg##`m#@ zGiw~5oG~srYbj3lWVwDxY9GeKfxVex!iCy+?DFJiinzFmL)b4Lw)MzxW7^@7U|F)4_7;Y4W;U%t zaVu%h(`7R*|IwfP1e`gTq372MoB!GyImuInqf!dkzy2sU*=8jkV_hY}s4j%hC}ypj zQZvD9Pu6lgtS&6MU*Z;Y#BdLeL^o+9m)UEY&V~lF*RJ2Wz3fjRP+_HS)IYr0)%XDY;ll?d9-MnKMgAYQ)E-7rdya69 z=Hq@_G>cW;w@`bo9_UDu;0`uUVUDXC)OitfE&BcT$qkC>%M0b}Mm$!z$0Du30;z}t zMtU>cntl98NDMT5BbAyJ8@9wjVs0c$c1UcY^&y4 zM*;s@}HiHC~FYgcZ!#maHx6ureSPt@U1;;g-t{VA#a6L^_B$GWArEJjw>j~}uL zo9>;Op-=_jvzDYuu@yASGHd zoB4t8?8EBq;b+d_vn)@Q+%_SzXTNO3%aR{d(lO$B`xM{A+xz6MNoBN|O1lNUk(oH2 zA3clOe!K|R*xerKK1eeu^Jr0#8>4>PjNu-kgaxz}fC0s{CxZ*|BM$Vr&bL16sAd&{}h$!%Yr zew@}GopX9x*|-&k7`uHq_$qB7bJw9dCW?}bDMRR`BuCM!-gEQB)?@OVt*8qQd{ob* zb;AHZIN2{Y%t|44&^OA~mtO!5z)G;iW*`K_h0(-@D&YI);Pk+Kbs3a&FcCbNZa-Jw z*y%r$+KTxh53h%)utghF8je>U@9428RZ>akLsFtaG5~MW>`bA?%Q=Ca2v4#n+W~vY zZxn3Uka3pxKWW?VDM)Bgl3pM0`7>QaQ0OD7Oa&6^QzZp_yK^@<4N!v_?5;a`I5N^l zVx#ZzU}NJX_!a5`gkBlRvVTA zR>S0H_B%Y$`PWSo?Z4>H|E<^L{1j{cmp@A<)I@Ly{Kg-Xb@jEr{N$(@`G&|u{Fi&u z>-L4P)7j+!2G^Lutz?G*{`Iq2wGeud$ zlg~^D8)x5*jT}fp6{2jtBPr0G(S1Ha9249+(v8J(%rZPo{9@mng_E~Qa zI3=D~9@7Ix)_}B;8*<=s=VPbIVx`(0@volDq5SsxMtt2TX;oGPJIJH}ECc1>1; zRPHYdr1I$Zbi+UKI<_fIok6fm;=n0K?djT{kVWOpSGHNGOP$WprI);iL8#v{iF{i^ z^hV^kyY$|qQDkM?bFTZ~_;fgvT7r@yRvBi_bJIQd2KTM<^~rfM>yOl!ic;gU4Gm*r z5;oIo${9|yql{kOqTGiG;u!w-xGTe$(`&}}n5o05)hV59XL<@!NepLZz+*j| z{M{Uc#^z6)-^>%R8fHbHJhI-oI|rfsGHXq5Q6fpG>uyvg?ANxgd3XJrku=Zv72b@p zSWtVoy<~j46SXXo5^AN;38gc7W?4e3&nm%#ac6IPXg-Xd?{NHAUr>0U_nROy>;L8p z0KQ}!Q$bWD*S%yHUF9gYYIg1IdQtLOZ5;vjStiXgU|$FmcMyAM+^{?ueR44_bJs|7 zm$cu6DOAf>k|{D@cIE-Qp&Sums>v3qa=Fe}ofVO-^Vefd&`8B#_nL+IW#Wx7FV8mY zLc4A}-&Gea%QH%g=GLk@G-d^eHNBkz7L#LOVv91>5Xu@8d8FzV>5P|$@(^KRD^7Qn zFrAMz@x*IlVTN-AeuNd!MlxwKGpFJR%$bLKHuKn=VqkwZQ={azDm6Yht_FvtR%zoM z))c2b9cCXXY$FJ1uH~E5Ca?41r^_#bb?Up=1c)C;SH&X7P*LeNC2kMP=D6R6b)D@r zd#3B@)bW#1Spi_h4#{OS_=!CQr2hC3NbRDV?7@U#V7PN*gDl-Y@eth~FhkET{_78r zxq2zq@RR)IGd{~Ai|4;G6c>?Jp-1F=ArZ*VlpK=imA3TM>=)T8!I`je8bWfX1JI%qJY&3vD90T}M*ffv6SNmrrHh%Kq~|05Oe-sr zxnZ_g2o{J?0!>K~3`*W(P-tlI{sof;tB1R(0kOW$yzW?j0xKq2p7jt2P3GDR5jBKpc%bN2j$Y$4?+1 zQF2aprGQIzQR8UqtNtLeY}&4pHN#aI68|IH5t!wr=&A7-sT~3TY}u(*6DudgXb{+} z-+NGHJ~bFLrf%@(1u)YX<8@W)x7*Ve7|SOTkwjN`xTr`l!!MVQlK^>^H4;&w7hk2K z*f)MVwNxz&inH45Gz}Zs6ANhK%0sqRk_J*)U#SwN!%KC0EVdZZa=&|8jPbv!V>1_K z*4irUw68H$N5EFviu8;aqIU|T4}VJuyZOcTNPCND916V!74G)ri_Olc8p8nc`E~@q zEX6XTpwjZR0`?FF%%f;Pd~HH;^X~_aK2jv6*@E0$`c0e<8+ui#GLfCMJ*fGQ$rFZ# zG)`$nRihHk;&*tW_iY1p5r+f{f9qeeciO5)rDT8k&*X5sVBNwi6>C+koeY%}W1;f= zs+%=b^TAJsQ_U5jdd8Xg_&xsTt5?T-e^6iPWl(y}BtFMeNwc4!jSt z)|@A8@(IxXp%u*Dwcyqt>7Bv4{tUs%l0L~C;Y0zg=8x^tDBxq)?0G*qTK$E=*eESY zGh-V(@`ai9v`Rgx7ez=?H%v;w?YP}9UU~I98H_RsI)DAM9);SxK;0{Bg8q)$>{$zo zb38h&)>vL{qIXCp{Kf|?jDVyP0Vl}CiitNT$%;Pc3h3xnH0lLxzu3I5#3CE)8vpf2 zK9r)K3w=v6i7@K09|tmI7ek%Qc9&l+0YAU#%sAsx{jCSda2(P51^?+qUuDmh3hmi| zrDo1zB>T>4Q;$nZ1eYK9H%D7~Fb{{bW{+QZrBJICB@tn3%K@%Loh5-+S4X-s5(KNa zpYnWLgHShlr%JVi+f=*fk6N%f^^KlI*n(3)97`9uvb@||*&}_Ra26dV3|u7w$*tBo z7*+_&6AF2W8U1&B$&pkR*DilMA4~y|wF-{?~)s*8oN$hro zU00X9&ZsCpM?6`$Jp$;&5W@w~x4}0E)-5B`;hwj%YR>g?=Eqv$r$Axwt8MKJwyk{w0sF z)jsB%0R5X^NZBF8^7-;0Cy;`URjCoQVfvYbnp_GIM70f5PC$oOd1|ZVYQi{*d9l%V zVDNgSmtV(!^5gJeq+7eUT6FF`+b$?_4gEansPbbx7C10A=W-Wyv-Ry(OY~Qc57cK) z0hVE_1I7p7#HIQInXr}f1TJnHgTt~lI55eL1NeJ*nU{ym-Z&1vwE9hs32KS_gs<$% zI+&be4YYk{py}*1Ji;Al^BJ3l+&&&`EC1}NKCycGn?hv<-7)(zDtp-G=LqWL9Nma~ zPFuS^_F?+sA`Jr0>>Q-LL(9f|{?nYX?prFw0Vmb9{qB>A?v}HA%=51!e1M$(wn8t< zw%0x~yCj=^cvRsr5v|oQxRsecr1ch-PfcTp)MER2YDi3E%u@R>vywcgV~Fr$DbqjmCNj|)IfIKN8UN^Kcl zz*-i56wRT^5EG``tGs$p0iQInbGj#Mq^7zuBdzkvXSIvm)3H?sZ;F+(l$3o6Q;=+I zGy6dr&5ob55tmE3Fu@HfyK4d^zxD(b*Y#8EX3nB9>NDBmM8Bf^3?2(HPGzB_;|;TV z5kBEY6QJL2#HzC=ULevzLe}=ttdpPJtj~zgtUL5Ecf~_3JDg~0={Juxa9P?W`ZLPy z-v$T$#Or_DetPG>*MPHSiz&4J>OZ{@m9%mV-}v8r9b2KjY9M1eH@_M|+CknV`K7E> zP~KdaYSViz_r<%??25-LnTb<)Ja*1hw0T|@FTGOvOJc8ll$moPzukUooFB4}SNu{b z`m*&lan9=4%?C20xT+^h*~=_5S)>>pZby+zTIjYabSlfGFkR}>*>Q@KNeCb=+cC_p z?C16t^I^5gjRBLvo4gL$(|zSOOiG;um(}E3eW9*ZO}`~{b+?9SS3H4^P520-leuYGXX+O&se&G zS1HN^hf}a34JV^o;gfwcCt=s)+m#UgmX<%qsDT!{7ZWST)iSq!%hTlJn7>{5N^!K5z_bqiv0*sG#DW;3vmsO?P%@wiRHNmD)0WTq4o|ec#oY{DFAG`zt?&5# z6l(r=KS+ya+%Xw!ETd*j7FF7mM#pV-_N+B`oZfCvv(UmV;DxG6+xSP{?1K5s0>@=8 zuYqOPU2kWH84q0M1XA_xPe<8C!efEP!(|q*W9rKd+17uAFxwxm?_P2sC)LuwghA z29&>sXGx7bsrVu@zouLEv6G0Cx=&CyCMVwJ(J+rdYSot8_os`bCz|~WSos}ZoUCrK z@>(0%43#wgy|o$3#XP2IKB8P^q_>E{cR{x&C7>XQs)fdRYBNu`HC#a9tpQFC*0^Hw zgJ7^Ve=z$)8y6zRtUibNZ|@UzDkk;~xv3tNw{m78G>E8iVH+46^C3mH`V7qflV8q~ zOz!M+`Y)cge#*yuQ?mcYLxt$**SMcD$n$8R_u6q}0%7daQl~A^13vAsQdekpa zt@gRu<>zkdr7&a)%Q7I_P*JzEDlwawCLN#1s*Q)Upw@T2wVs=pX){B~z&*_)(uYpY zHk`+&Z9XGnqguAszs#1nR^8Gj{8uTm$v?Kg94Sz=q+Nx{;k(vv)JT)c!}7p`c7fwZ znXO=0iY7*s;Mqy}x8p<^3AjdX0J1_RfL!mR*XwV#t5<*gJ|~J&-`{K}OiYY+1OeEH z#4<~jD_7Nz|T+#c0bAS1vq9ISIVx(}(RV#PC6^wB`F9k*`QA#;CQ4sH>&l`uVon?75wQD1UbGlN z&cZ%3k7|C~q0^vF;*l>?Jw}3@5DSI2HfVV`FhKHT_sQJO3YWyAr`yw9I@9GlS%d)XN|KdD##Vi6H z0=hzys|AbXQ|&~t1a(G)(R>>{ZwfxMFuc=CBmUZFfgb$-)Yrx|7Ase8)ZMm~NB21e ztbG&sBJn-F0%G0L;~=Vp!AT^JHd^8@CB9vey&zv>7!lw45Us|b6`k0X;xm+QJS}#L zYp^|_6Bz-u7W)F~oM-57aQr9>ZQP1;RgESLSNtBeaHZ;cFZlZbSq4V2COxmX%eD>M zNzp1^(yRoOXRxS@w2%7>VRAs{i1pV-Zl_Q0$3NP$K6-fS`GTM4ypwyIhKV_^THm(A zC-;f~_k*QCCT@s8&YL=B`{J`?x%%#>7dIVZSKV#PzKbYSckyr-X}?;)Xce4NmSd6= zOfwuuC#A$643eO_PEoSNz!UIeJXN6XT`8t~Y8n}NXK(0vu@M4+<}dMFG?j0rf(|4N zCK*nqQPh}SqJA36zEOqbrGW@+N9siCU~AX?_BG#-d8*gQ#Lbs6$wBqGn0gI1cI>;J zm}v|LYX$0&8(O7089`PPlydv{E5BWexf#3~?-j{iz;#cMUQMQYJac|z@Vx z_7BPA>=kNCbpHBp?ANz#evaRJaIS_rqAHR7K9WSvfxK*GGN?Z$KIMZ3`Ku;mHg#Lg zMB8rLA)BsQzOB}3bL1in4>sH8e_orRmzf^4e0nEyjtY8cfqI(o^u|r(cl0@Kb5ko0 zW;iQUjvaw?$Hl^kfPU|t#KhJBF879vL%N0r#hc=cJwQ2LQFv3eNc*bQ+ z(9LFX=a*y`XMF3=Jt8zac_pvs*L-mEdB8%7sYWA70)Ldn>$`cce>Pmdy%6>}-Txx% z^`Uwdy5R|V6llTad7Oxtaa?f{vGOdlG*Lb;S5Ud9@@_r@%QMr|n_B`XY_Q$G!d*o5 zPrZBGePrY;6PJ19AnDvgU|0CKwKb84?D;B{K5v`)*ORddkh#xLr zbeX{LqnwdRJ072&NIV!TJB70$r-wE;3{#0%$o)e@Z=D90T0<2dy*Lwufw*2eGEKRy5jg!E&lDVkQ zg6Utgx@tk+Q^Kb-pSpdD4Wz&s!TNv?0Kxs#FS{@Sf&hmkG%z~P{z0a_ zH9u|{U2>vUgO_}doCcp+y}&@HbaaeBe>`_-Ym^mPt}B363Z`1tRhfHAIuNUfCI&O; zWfwcM@J{W#8&VJ;HDVL%THf!DXcj6p{)uh7{Hzz2oXRzK{6PI))&53c8yKD-)v-@m zRM`_a7wMc?aW+O}QWV?Awsh5c6jk-}N2N=4`=__32#9~`8D^6XbrjnJ#CS$`f}Dfx z^Y4mc@9B77y1KRe{9<%GmXoVCMm5M>)A+0Lw`N^yQt1h6=}HP8rl3bQwL6`!jj2^L zISZb42{T}$n%uaj(v@#$L+Qzeej%5G>7TGLx|bchrT#SWX52j0r(+FLb9Ax|#dAc4 zt*K&F6OGoNjN}znlst;@z6+QeujUvk#qiF5eCwk>+e@Ru5U1+Msya)|xSCPPTrxy1 zb0i+o$$^bpx#)3KJQj8E^Ys;y#m33udrA^PYDAV@0opUp+g5YTU__|?AKG_{J0`I!uFZY^u5nWgp6`pI;gVEaWx^)kzNaL zlINm6TeDc_X>)rpb6G{Q2@Nx1e{PEuEy{Nol{S68%lamsO$@Xq;IBF-g|8jfAfPjZ z``yQrDc4Lb1p;_rI>-?^cAp&}ryF6I!o?7St%7vT;51ia^wr~OTL0WBGbHyed+$e< z^qw9>R^HukM|b4SU3^3D=l(I(4YCTxzsnbBy({pCfzA>CfAe>7F?qU7W~;WzXnnpJ zoY1x5BZ7HLLUxDQF(kj|lQK>vwVqkRW(mfoi$^Yu)nct^a>@7&zVI9QbY;A2U8NKg7wN4(1?v2O{XiCff<}5QyE&KxX9xsh zKlx)&rL5nviw^~gRw6m57h;4s$ z+0_s7q1xS+&hkESb=1kA1y)6@z}Nj`3wLGCcRAGm5m?4`y%vqii|{dw z!EYaX5~Sv?e>MbM=U0REvush*RLCi-pn`2*mX=Hbo@dy%IT>>EHEp`@x^o@x2joozr5{-`KkAcX*=pFp(xR|K}bK`HF`+nxE|b%b%g9 zC7^ch1n}F%p=X}VhF(RE4#F^bFD*BSSFubwoOiVxx#?EB+m>*!O0#V}TUrla5}Z?x zj`7n&Kb?4g)Uzlu7y_>uc9+$`?@?%qwViD!S^gf5`@vWcXwJ(;iGytuwznSA=sgn0 z-pjO5utuaudztawmc0J{ps}MIE!Vsn%&R%JBn6X({{Ug64MUalB^$Arv9(39j_O9g zBJGbCdR&wI>WJ1DaVvQ8VtMb{9#Prx<2T|tyOTlC8md_FI16>t5V_OyZZNWVwhv58 z150JxuOsbe>QpD_U&?v9uu=#Ky-7MR4OhLdksjN8^!Q~;TX_?QVAaW#X3 zIef=3o=O;5ztx(GP?4=D=0Akza738MhF7a#)z^}xHJ#c}34a#y$8ysDC9F(QCCf2L zIYcX|EQ&s+v!{q(zAgo=709(K7YmX|(3>rtzHX|jJ5NDs?;)(Z=1n3et`h54_e7!| zq+1qqwUUH0gy%lakFBP9o+ep7I~sOX zj#!qsv$xCOvmVo#D`Hj7fB7DnhX?$q;ZyLx_;lW%4Mn~ow0~_EP<=c!DXIBw-qYAD z<%z=-rZy9wjSJAYEWUQy!GG0;VickUXT50ZF@CG+XtvY*g~U2wd({5jX&?%<_8{Zx zO}(da&X0?Q#VM?WPTfDK1j=Y%Apx)~M7rOPyi=MET$Kyr1G-?vTa>#%WzVaTNQ!-PRtLPMAc7sg%|Z9QABsZPYxI3ylyTz9qdZnpaGCD9R3N4A{CR z5vud48g4231{@g+2Y@gnwdrYJvsxlQBjlh(i0TN^XeZ9u&sCfLrP0sk_%p(MsRR4l zu`)S2DLGw?tBnzQt#uBIbN~2n@Hw^x;z|tm`7fR<((34aOoxB*EOeKbBRCUQMT$W~ z=;8LiInz=jXEQaN8pTWa!!fl;!-yC^HJ@YlA|okS(Jgry*EQ7h)(jcbk~iisVDqVD zy|*&wK$))}b0}XL$ozKSSF@{7b6hObR$m^H3{hX}y2KJJ(WdtIJhJkKkSbRpNQchl+hEQ|yks+36r zkHvGP>$WUwAIZJ@Z8VdVWr5Kr@1f0Ln5tAObNj$>&&8FJ#}+yAF~RsF(}5eOl-tF= z#K*^$Z-38)u;kb=G3pVQ#N6|G0Blks=BpGG0}`1staFPcb5>LpeYI0`BisBI7ys--(mlCnSgK1L$toj+vYa-EbUHz{-1t^Ji#AbuTA}p zheahEj7N>hKlaQNMa%u^_FLb)++$|f-`p8Xmrp1*? z@AomyoABfb;c>CBXMvm_%K5hV7-;nEYy{DWz8+}nxh^frz<5z!C=_d+bMjsb#pq+F(w2pPBk-G+smrk?LGfEHLD==KV^wk<($D+2v+{ zIZ;id1d7%t{G;zp|NrgH$V;&`{EpuIb6@(^G5p$%`#p)rE84d$H!O*^KJQ~ytChYt zX84y8zoWCEcPwwG=6LiudKBE!HTdean5VYJJX4J6+_jzU%(M$jYMtCK4rcNy|35$I z=2%*$$f!sNb3mAvX+w^%^6!%$_@PW>3G(aiZ7)A5MwCnFy%CAy4T&i&EK$Y_C${xC zARpqc*?PZu#S3{QL+J`W>P!%sbNQJWihr-Bpj&2p%(vZGxYa4a{M+2urUP1^ilTmP zjt4ap{5ar_d5e$-JdS%$qzu0{dQ!_xtxg1TEY2ApZLic#7)#zR{5H+G&YhSpm|C^- zd=r*j-RGnT^NqHJX=7JbjHMIP2M^E`>+(<8TH4Mp`cBmfr5HhsRa58#O?C@V^=cPL zpFz^xA!L(YBT+~VbCdYG@ zxE&v|LAS)AmGPDkVMjDpd5YLCR6#iRSCXjb|Mwy$KqB=STzq;!DD8kRqOZ!wed z{j`wB$M@g*mdi@5y}Yw{#B?{Am2mT`_@5a0PbggiOI>QeoN^4PG=C1Fm=lhUQi94S zgV;hS^yMltzQ;io1sXukgp8D>xFJ?4(w(D=5L|brj07ZhlA-0^TLnL42RS)T7F*zB zK_>#W4}!_o=Wa2(X_QMtt&DrEzbf9f`sUnhoc3jg)5Mz7=~Vr(+hIQPW34Fp@r%So z@`2ZHyUgyNJTITFiC@`!%k0j4<;q@(dG*R^(-8#s!h9ets1^5&TnwL7adS=w^lUHu z9dg^_@t?=C>(tR_(DDH$4B$pzI8F?XH<|99EheTfx0YE#YT12#KX~d92zsWj{#;=f z<8!+W{2pJN)b>c>K@%WlpY08FFIc?oRuj!1{^_UD>ghb^`0pMsaKiw-f6@Fm{)883 ztTP^as#CQrUM|p^Y?Z<MOS_wLa>6p{IVy?u31TwC{L<8F;x z0!`x*XxxG|(pYeJ_uvwOy9OF}Cpf_$lHde)2pSS3K|}Bm0!;J1lOcS^4X1J5N`GOZ4(hina@frig-zg5KW zFj%Mg2!FhLoIIjKtByOKu7G!fG-1o%GeSRIeMXrU{b;6&eoMq@?48m0r`-Zd;=hy` z2(hA8aKkW5cjaW&1+JrsNFMM(=m|h{9^yX;K>o8n?|3}arwspIpDQDJ!K(!2k(>=^ z=qGd`JXpeCqmbtL`Gg_Y{5p*{fSI$h$Y6*mjsfz#OKz=nJ$E06<;#uQ`KM!QLzKa-hhHC8-U93orDOa zN0I@qa~}znYH-~hijx!*z{SsH&|vY^B5mNi?R(@lg%jg1Ffdo=zfv7FtfrM z6$u`#4a#rLP0ihDlVhe)KhI(HMn8q6kFj2h+pX7eGWa-}E%C!gyUR4)<1K+)O^vHT z^8Nb?Hy?Eb`(o@D;GH9`)_#u- z=&9wzEh$|6kqG;2I#h{ITa>k+AqjXS)T38M^Wnb(&Ql)v+yC&BiSiKn!GHBsBYHVUW5(F07V2e0Uoc~9O!NwBk%;jBS7z(q@U9_d_Tu#XgD_>fD_7+~;5Wf_1 zUQ!`FUOTY=Sn#3kp zV;vxWIDxlhe-;eEckCueTp)T;|MRAoVfYhAx&(2lRBsoRv@y zz)e^fc{sl;V^0%ATxE>{No%p;@Nv$5c|~PayCEpsHKE?3dpJIdK71W!_x@+DYzD4^ zd!sObFPeQ6u%|z3M+o-io^bq?hDMATIc~o;z|L%4cfis3v9P|P_$#4u+tec4335yV zv~`aazw4^8`~JQ%VdC~`HsH%@kl&Z>3}+`sCM>jR-g0{Shzt+}$4+4yMd>?@#Z6^xW$rXNR%Hg(4I zeecs;dJ%2ytaN`1Z6sga^MCqO?w0-6{oQ->y(GtM90f0H9SsEyI@aJej*(1-a&8pd zxdA||l3jDG%S}~ZlF5}G=dDbqnr!F&NZ|PZ5-^nL1b?Yc+dc1dRaRE0-WhdMHk){Nc=d&b37Mxk-zTv z`H93qBuRzWg(v&l%aUJ7pBU&cxm7M=gTHBW-IRF!g-{A5shYMyb3{(Si*J)FE~GLj z(LNu9t2(7+FG66 z?WwK39(g?O$Tg^5q`ypRAPFFoZ5(a@*oPp86!PpOMi9XBNV4X1rDX3uPf8b5Sl9HA z5v?T%B@L7VQ0((K(o#~UD?QxwsTep0`dn4ArO-e%?YS}u;RvcjZq>2PCzC{t>p_rGNEV^nknQ_VxiJts@+PBc#}AculsEO zn~U-YGv(W%4m)~W2IF5U_GVu)M+`1b=4yNmSjjl(vdkk`Ya$6_$f9^K(h+oU!Msn~ zMJ8OIK_;H2`qkkg!wX8Whpxks=yP-0@w}R^XXENG1h)M}x6WXc7i6|qcbgga+Ja~3 zZYbG~hO$5f?5*Sl7hFt|Mw#FWFxH4N;hQaJA*HZ(IgZ(rd8nge+BT2at-sgPBGz1^ z)>pW2PmPgy6HfNf2YW;02X(X%`n0^KzwrTz+sh;H`LiC@M#EzC9z9PUE?enfsb%N7 zZBgOzsk@z%ow*>3c%tfHEv8721KMrQqX_+I<9MHy@8$-Loj$Vn9Fht(a7=nO%YZLCX}T<~iv z{EV~@R9Iw}xSg(X+#L)S7(6@N%Gd=U_cGZbHqwGNh*AQPu-=?^lr|Yk1}vr0f1v#&rU=5?NSMsbkCTa&3D!lc!Cu|ZEf>PVj-UMP?l6_G@l5n zcGf*U9k&H3xr5FOJ;eo9p0JL1se0@Od%FgliyKZK;6k~7<4Jh&458mR+4FlnoYI5a zB>#GwRsH>oz%AV}kH4PgwL)v22=kAsU+}SeM4JF6Q)ZFe+@`OdJI~@-otB^6sM_iZ zC_`$5#fCRU+lP|0 zW7o`LdizHyldXTziIRNmaNRwp;!`IL5UP+JZNFzAD8V%NzT-dieC0rdw+gnF)*OS{ zrUZ_ULM{&GW}o*Y_#_td?IS~&h&d#RampZ5g6FG9NeXVWBjMH_*!scV5PET@`f85< z>SGYKJnUy?qkrRL$A*KAWe89#@3b&0GJE-G)77fbZ%bn!T}1(uokUi^ELZHlw8O{Z zud?ox6^nMnRFu>HQ^Ou-o@JDAGXgk_VWA9?Y`4~{v|SeXBA~m@Y#=l-^O;=Y)cA8d z72rN}&mrgj%AU@E)yX^CG7I2_6%QV#&>Mx-;rk*q?x2I#X64dml9J585CKf%B%vP_ zbYd^aKS)n-R>9`kE>%B+he9%cL-^~>YjDP*|H~2mT``)?-@k5UEqvB{c#4s zo$y2}ZBH(CP{sDXPs?Y+`{;w2s?_6;3qWx}Z~eK%*tr|0Q#SP3P*uUoXWNOTeOQcc zHB#g9bi(nYxGZv#mQqBS7QH}h3&_Q>*Fo^(T^D}F7#UGgd|oS*P^8Z$@-A?ejx72I zJQ4mk2cb8`@sGa%iVGv~{AYbDHm6Jhxity4CEJ2JN9jXOw1~r}%l%CSax2RBRW!(3 zMmC+OQtpcFwli3HXqLvsn|{Rby;}AFH>)Qke!#s^DbIUSXqDo0axs z7y2BmKmoL|9IBl~cCBv`HD|*Q*zuOtVYDKI}(|UR8 zDUsfq+6-VO>`Wpu9WH=!bj_r#LX+H z%K{ACB}sqluihZ^yR>EwaFqyu&tGC9kB9yCpZPmldMQxC04Hc4Q$gcbAX5%#C^u{(d%I5wlAxe&{K_>#p>%6LY|9*qX$=|0)o+r!=@wPrzZ5{BF{ zBT)h86Y&V5bV3J#9YegzX?Ke3A`+u$AWOQ=rh5pne4-*F7M=MUBt`;Xd(1HpWq%SC zf-TS2&6atue}V0IoNO_*g4%pZMOAZoU%>eEb2|zO9BC`-Iaj|N7}qWieH0{pEZmX9 z$5UJ!$~bP)6ca`Xbi|RCb{}HG<+6|{)7#~EJ1UilZeAg`rB>+_Fj8y7imw74B;;ez zZ~!?M07WUFZ)0Jkhm#&vxu@fQ$7cZNxdv(oKHeX`1kt)C!vD_vneQ&8@wusuGi9yt zfhD$B73kH75V1A_p7D*_@t?;l21SkCnsJ-8WR-)P4%S`=>kn zZ0O@gT!P_ld*zr?Xn_+)Zq2bslQw(EQc;j_4(O@_U?JRSo^Ifck2Cwq*1)KN8m$By zd2CeNnz?Xrfm|v}fZq!)M$sdK4+9LgWE^hFH5t|N?%x|wnrpb<*65xbXmaM&ZyXWh zd9N6+8rod${Yp68uq==f6$@?ta`^Rw_w&oQfzKDS3d&lOd`xP$FZ_2uj=l2gu-(bn z^X62o-+IX_=@Q1)2xF?TD(s^`MGl3-k=RhVFL7hS*f<6r=I>tcxwSUJU+@*&R4$MFX6U-1M_I~G&=;b~ z60&3k{5D_|^PmuLcf{W+zj-M^h8(umT7tK}36%1e~0@6WnJ z=HIz|?4P<6O3f>33)$8Fc6H)uwEIF>-l8_2(JC&(R$FIOQnV+A7$1ptfX|u;m8Q=i zTmX&Jwp8-OMKkrPfn03Yfjqh-gr~* zz@Ytrv(+FaFnfPY-u=u))w-dLVR(Is-}%_2rc*ffz|=Yu!Rcncbe@w~wM*RTjj7vM z2Z7-vpMB?{l#-|x%}E2eOefxl;*t-t>Xke(T@$n%W z#i!KZAAN;alAB$V`|n^oKyd0Kk(r*qI41%}C`u|WoJ4{_$CAlPm3VRH6+(-NF9ArS)e^8Gv8N7KZ#`6;6{-tQBKKg@1D*c# ziV;(KVvPz%;+zp@wF$rY$u7s1;8x1DFDmDdNr5*bH6kW6LQjHfFp?>w*tI4oCffGP zHGQ4SRFEO4ZPeTM0smRRdAyEhkaaKu>%aLJL=lL1>|RE z%q?^v#b~OsNRr86K@xuI;AZ4!TUXk+`WkLoIvr};=Pf-p^E+L zp-lV{u{8kVQm2rHfxL@l*40;-nf2mi&kr>v8hoR@S+l;5VHu_b1lSXf;T1BuD@pUF zffq~)W$ZV(c>8vkqOWor zOrOcB919=Gj$@Hf0uvH^I>PFd0VS8((`ogS*jUNSg1$!783E{CfhFm&sZ$gqQ(c9z zU4qPazyEsoBd`!=;vxzM=JwQ9{Joz?;Qw&m;cNW8o)D$UBKUs)thc0MrY5zCBS`>a zNy45(KQHJ^s#i!1FzRy}Pkpo1LB6eYt0>ioJRI8s)rWs$N1Q3-+cq)LBt`x{OA*Ja z={HW@gamcGx@Fh({7#8)XSV@932f{J6oVe?{FPuh+N78ovZgpVpIcp_NE#NVZHcSP zL!HK6m|kDgUVk;+7NY8rB%_YW=_td3TWp_? z4@Z}3A*juJC)&dQ$YeAwZ%!%wr>!`PWf|x&kXB@Cr?hX}_WnuB_QL09S3jI>Cx2|5 zaczmty+3sInPshi*DA0A#qh92?~s#p@5SH2=7Y&7KEm=-+kA7R|Fg`Q-0;_)+!rfK zF3qGOFe9Icy{B7|ReTB&@x0Xt&b+EBGXaS^P=tc3#4v3W3_hAs;%B8-*+3{osZf?Y};}2tETMyWZqQ5 zv+?FDzkX_BTC(9(SC|7moJ1=e%1x4tS}89;+Z03C1vAHDV9TXe)W(sKZ>?AitCJ2qb#D+{)>EXGEEjqhC!*Bx;@Kg+%(aAkE3OXSBW*NsRn~Lem!y;w2AckksoDFHVzntfurq1^X_cI2fPn=-p zicvcFS&zNqStyAPX}Q%PVROVu9GdID_qo51F6-oO{|dtPd?S9-a|JnVMTjt=^s`dw z@kG*-$8W`w!hqr`c zr7?3mb=}NFQuS4b+LzzXT22~!D^HvXX|V4nx19@yzNKPzA5?jAl$xxex-U~+a90?f z3$JEcaRiYKuwZj5RlH`irSZv*l(QBXrX!DBrzR>b8?fk=#*F3LLZ_`rUsC|?Ky^xx zB%IB2MN{@KvZaeJ;oM`kuluuRW=8ZK2b*kk1@xQwZq7-A-qI}s4m&!pLr8EPtO;Q; z8nOihjH0q)IvW-C#Urt<;#i(4?~h0NV5Eg%F&xbaa$CvcAJs`%?Wm@Q>f6t(QkX}* zcb*@%)N6RO_4RJ#FV4!hPiS(8c2cu7BLT#`&~hMQNHkX{U>xAt9-yW$ zZMS(e#Br`*c?DAb4rYJA6T#nb`djZ#<2RlpoIx@*;%tS#=Pv;^67p+Z$xAiPWfp;e z)7+xXoF{Rd0zDL-rs(P`3m(F*x!UFMIF+?4n;iC=+!XB-PB3=iDYs*jBC&RzL9DAs zZ4J@csRAbE37;%C+x&AD8xEqo9&`CZCPY`vPiV&4a(BKE-6N_5a4(V~HU%QF-HI<9 zh!V|R?)}L1Yne!!xZ3G*En43qpI4F@Exi-56nQ}u5D#5xg2;O@ghPqc9MS!v`78++ zNML_a{KNPCTt38ied*RE(`d#`X-DlUc7wayS$o5%VuCAGe~))7R>Sm89-_#7S~+KW zdL_$#pp2*)J-A<53$KuCyRouQ#b&Zt&%q@TMa2;pdGCT}9>Ew|?G{uhhdj1Lutga7 z)igR>=a<4YR@oMq{Z&C-&85PG3Qi?bDEb4Q2!7xWqW(*n53xc0kAC1$2&#>k@vX69>OPIg^L>-YIM&3jnDU_2w2k0xY40q^Uk}47MQl-P*Vnv`! zsW1?We%|rm4MssBf7c&SFz*+3KYV{zEQ+Si`bqwYtWA`c7C443XCj)jq*V?*5VOM( zhdXjiMz(_B4y0BzZo>3?gm^@c%v}cZJ7^;8W2^W4iQLmx zF0x5L77S$dY$K>j4D41-ZoBDnt4R!WkL|tO!jR2Ez$EsRi{JP>{=|!PANoW6u}>hY zJt9Br(euYXxBF-hKY9m>+c;?niHQ?DBh-7dt=5+t@_5PUAlkDTbR~b;5@_*>%}+K; zdNBB%Q~bMuOaFT0GVyzc4Z?;odaeksG;J_nuU&g0p@$fBEKJaH)3jug+`7eSj`oK3VF^Qq|-Qp35?wxAxsV@_x!q5H8`(NY-b1}>QtU&$&yK{ z^=BlI7=H@ONywXOyr#UfQ%Nyl$V*%B__d~d4I`1{Z+t+jpL?anrKyMdfiKoykpZ_<-M3lQ8(Rj_ z)B=d-AUD1#?iC%Sqc27$5;<-q3P-0=KZypN%ArLB9k<2k=(-%&zqNSp%oV$#qd~1N z(Nur8aQ5?jU3q-;*UzA(1pT6T{A@LW6a-ID30j+xHQ!6;xQoyN#a5XQ*`urOOXuDM zl;IYzuF>{kM5UxV^*a}ExBn2jjRtmXt!GXcj7hhYxk$V&YBYDgAjcA1>P)B@-##s36ADM7En;_ghWty$=y%w{QL~{igc4I`f?WU5D|Ur4;fP1{zm9KT1~e> z(OT^Ced(ehblSaSW39HIlkAI^rqTt`?HXgx$>T2TdL6Zmo%iI@Nt|p|;hEqvZX(Gf zYJf=+M*p}nKP4oW7L*PaQSNx=tA}>|+^`zQyYeHsgQS+?vd#NeIZZ1%W;%7Il~nP1 zpUZN^me+@i!u*XNY>(i9hG}G8ReI zIHpms^N80xjZ=}QO?p}1VIPSO`b69bw4lj$v57Qcv0laC-Q4}%Sr8Y)Y@+=KUEdBt ziDE4Vivnu zoh9(YD|vWE?dFOuS_3Nt#tDui5x$(W952%$SJ_5@Zb#FkfM z_Jy&)~vVg_P}(?lm~o)67pW@Aq7+uC-%MK6swh&2EEIkUpC2YW;0uayvb9k?=P zfBXfb?Sr1oAAHy}cA}=}nHZJ8?|pJ%7~@pZ?n-OgYB?GqSB#{N-$qIOeAkv2+;Hz; z+C><1n4@EFavzs&Th%^;+EK-4D3`il{n`eKg`qK$`TUfyc&kbYagc95o&+fR|5eJ; z8Y3k(9()Gbwa0A5x6>;!4-M5HMaOWLOyoY@_SrA`qNa|u9sWsRzN(hHVMM4%GGqnL$G$K~5>J0`W&+4sv48k?xB= z*xQfbb1VG^J(+*}1-<`6J`1rt{-@r5qCG=Sb-*x8L2l&zFnP9`%6wlj6qiR9pFtlL zA9F7L=K$eQoCP|mhBpp4TG7ZJh)!E%cgK?jStc#k8$;9vvi9E;`wIC z(I}X*7E*S!^({loN;9Y+Y|K!-Om$TE(BW*3fjY97(&zS8id(pY;L;DG{266LMC8QH zq*k-U!*h-o=fmMd*g$$Rx%Y~1PlvW^8tkqX*nAgr0uS!?4|w4)7Bz{tQZbw@^Es%g z#uaEhg~R{Y(E!ay15%!aV*BH{Hp&=$R!PKckb>37wR8iQiA14zi+(+A>jlZF%39 ziLUQ(f~4ptK>&FCImf3fg``SJY$dak%wS3DNb4sHZQ9ud=mY|CbokiOqeLlWWK23p zW@@zWeetuAO5DbKryNgCO zorccA6GcLgZi2eX-A7raD}^_c!Y3%T^nfQq&#g;)&Y$(){wYOD@->v?f6gPJ`4#3@ zsHn)9p)8!3Jx%O79Q0~g{0sDh>zjwpn%2>MM`qW2*3O>a%;VX4yePKc`IaVEJA}&% zFtOJ07T9IRj5kwuR6aRgY1{DNDHgixR;thIzMs$!sve;baGxAO$aNq(6TqRBQx|9i z0CY&UV^l5+fDpKpp@pkd)n}NZDfO-MFI7fdSc0`cawKX^4!dA%CX>0w36mnK2c21( zP;=3&_XtLs#uH0(1?kG9-N$~t`ulYXoclJRyd>s_uVXR$P92l_iYcoV8nJJ+!BNz_ zx*k14ZW^`ittO7QB6*JvZm8HenC}ign1Y@ZCtm5q074~IgNZl+*dDO{^g_=ufMv0X zxn;OzX?E~L*C-x>06GhxLtWR4{!~l->It&_AV6VhssC^NBE)*=iRh1v^$#D95YgY~ zh>-~M_x#OfR+}-G8euMr_!OYdpA6NjgA9}3ZH_|JKYl5CeyN!9DbK;qrPS%Mvzfbw z=(2pi&>0LqF55f<>IpBdnU@Q&N8P+siQ`b0GrO`quP)PmNV@`I^lRk1#`MunqfVK! zRh$*>WbRIMoGI+3?{rptG-5WQdap^SD3S27CV|wlPa_N&1*GYT3g9tS@f-=>+*%MH z8?i23Q}X!yj>mgwR7=$A+O-iW@s@A-RYgs>yX}U?za0)p&M5b2fnx0B$ci2<#}w1+ zic*NMTqLhme>ATD)$%Jp=476N_oAUoZl`T2nGsbclcoj7u_#jh94(BhA&HN>m@rIk z9$5C(@tFPB?Z8?leWN${MTY$xUmDQ_B?>Cg4{+_RlRS?_YfjTPv_-ZF2A!FJjMcSMTD*;q;MI8+Yr*2`)9HaQ`kCB#F_)J?6YR zv-a@2+7~IxbnGh43`&Bz25&I869zN{q*yPlOqbOomQzC@&(O=_?%qHH*@7{*x4NSU zI(nyXdcC1f&&W-n)%)yG;27wVNI!VA9ZfaQK@zeH_9B>6-vttbS^6zT2MpN=bnk)JvE|#r4d5k80!AV|EdH$Kw`h5EwKgB2eWpF zY-OX@OvGC7vuOb&(nSN36guurMkMbzx??t30Gy@aH5-|RT|573#jsg89mN0;M!X05 zL9m%9)CI>)y#8=3iYT+GTfI-b{$&_+FclORUkd3yepS%5H*Rpy z0WL)d<4LMbf0Y3g56H$*d`y!8*?D@ks)dG1;?x-|tS`SDke!NGQ^it^Pkls-L*Eaw z@Bq2?95}#GQ{#uXoNCnPoc9=rdr`;HCMirDklt!7ubVj)8u>AfP%7)n!gfe5cJRc9 zQ6JNS0F`rF!Bwfq@*RlVVn zsD0BffNUl{z`36l3btd38M#dp?SqaYuT`|4$ew5uUt>87?xf1%!p20nXx!psr^jKc z8rJy`TH?t47O0B6->v-zGU<-QTB_Tlv}Lzu%`6rOKku{$!RRO52wUPTXaLFD0~vN^YMY^jMVLZh!7y6gMNPcs53sw}ZVbMo4hC-` zirt?;;f%JAXPKXBmr>H`Y$^!}H>6<>DmbSS-^IslmMCBluGMqe60;_xz=~urXV}l4New+>xr}2xmUC}aBuuKp26p>Ix~)}e1GOI5YJH^QLj|^ zdp&Gn$%>CnVS}iX!IQ@QTBZj9&gCiQ3C#_x70JBFjD+PO0qY+!bsP(1oG6U$UyQ*y zSco7sIHH)a93G1y{m{5*ZH^U=%voeH5*(oc1_u1)KD$R70YlG^)@D!IgiXJOw%uRL zM47YTa>QEOy34F#l*ao=-5lK{f)Kq8>1wPrAX{XF;dI>e!2lsvV3Z^ih?7~9!KH2$ z7Sb5VobPzv_(PNCuT)cHP}Rw?ZgHs`+S~2P6368ha{lAGr`C|+@yS;tw3c6!v)^C% znB1IP@TVAs=Ac(^>MfKjaT%N%W6*E4-K#8JDAz`=uEgKF zxA{m!9N(@*&yU9RR~p+V%Guj`@VBYMCX_gT%>mv!Q}l`-xWHquBLfB|csh|DhK7EwBaW!9aabqE4 zx$Nw6qCfsL$g}K;^Tl}iv}9!zRE+p2SQ7uQ;m{#MDJqoE65JgT*7cUys`1*T)DF$R z@dTWILg@1-|I^=)$k^+FFB<&YJ~Ka!Fw|m$Q;e*7(}q8d$(*0FD5_SaL|*g){TRhy zgbrME4hAt{c9gmAtov#7Wz)P~c;I{=0VONcQN?((>N~jgt{T`qo~N`*l?-gqw4$`UA1hqsr?OEPV?gD9~ji;#i{bwxtP`I z2r*f9Eek|eAp=@fI(B)1 z&x+rdbsq-Z(jfX}AmR_fs5yv!e60V*A1HYd@vfQZ7XYv)006jmzH(?)M*|quI22-* z*5y@wYHc9@l6H|Kn-ja2ij*X~7!i@Jt39BJ4c~DZVT6)Ujc6MvP24oPeUXxnUIpW&i9jrXVqX?O2u;Q3RVmfc^5B89#={z=n)^lcH` zYxdHV%z|`_2ByC21U;qsmD?6)rz(ORS)bLEndQKeOY1DZcG+>RBV1l49aIJnc1 zu%5KGRL%Qq;Dou7S#S(vGl=IPoata}5uycPJNdHp%+G4Zx`ZnX2 zH1X~H4gZ<=t0yCM&-Wx;RZ?6mV`3;(Wg)T;`PM@KsCJz(S&fE5+*LWQBG z)TP%m8_aixy(A?01#40h6_u3fvm_9JA&I?D*^41p`W!L7zh8G9qF&%-H^NPia<*_} zOaRIO34zU{HvK>Ezb5w*_efB7AE1{!`d0K|r7 zTn9y&svYi4?-#mtf4a2JykPv9M@mchTB#5qz|;fK89dkSezc;_tbQOcYZ~e1VJg8o$C4?TJfEwUYg|T~fad%gL*WGk++kGG4yk9eZw7@B^ zb^9|-p;f-)27JW!Zaj^lNM=BcML{KLh@42BUppAl4h`9Z<^_(5a=ivQ;@?3la&!Cq zE!nLx#}RszwKY1Ty$u+i5sX7mMK=Gb3`C3s#14i7kxT6`leAEwU^LR-gSkKb$mS)r zpe&^#%ge>X&8_|Cb$?@JwH|ijgDR`UN(c~f@|8qod521eLy~|giFl&F&*OhS`@j7C z-{1a!dCC9p58U67SlwZq;37dw5RdnJ|AT^yMvM^*Kp4RP+4KGn2LEvXdyEqnM6l6} z^v`}3MJk2}EBGHi+yCIQ|Ls5B-+--dqfP)w12Xjgj2}HF4jn7F;m>~ffBR@JmRP>GsHOluW|dI4dnsP&#%4%071b30OEl8cl;axKtgm;0nq(F I_+IS)2Hp{F%K!iX literal 0 HcmV?d00001 diff --git a/libraries/test_data/src/test/assets/media/mp3/bear-id3.mp3 b/libraries/test_data/src/test/assets/media/mp3/bear-id3.mp3 index 9bd4f72be8470fccdaffcd1e381247e688198176..7622645d404482fbf85e5523f5f22b17ed9b42dc 100644 GIT binary patch delta 55 zcmX^6faSsi7A{X0V`c^h1}2m2ja+`SWI~+%{eWCy1_s9e|J)h!8HyMR7?Qzs>gK{( HccuaWx0et| delta 30 mcmcccfaUB17A{X0V`c^h1}2k?ja+`SCL1!VY_6YmaVh|vq6(1! diff --git a/libraries/test_data/src/test/assets/playbackdumps/mp3/bear-id3-numeric-genre.mp3.dump b/libraries/test_data/src/test/assets/playbackdumps/mp3/bear-id3-numeric-genre.mp3.dump new file mode 100644 index 0000000000..06ac116f16 --- /dev/null +++ b/libraries/test_data/src/test/assets/playbackdumps/mp3/bear-id3-numeric-genre.mp3.dump @@ -0,0 +1,1192 @@ +MediaCodecAdapter (exotest.audio.mpeg): + inputBuffers: + count = 118 + input buffer #0: + timeUs = 1000000000000 + contents = length 96, hash 1F161542 + input buffer #1: + timeUs = 1000000024000 + contents = length 768, hash CD1DC50F + input buffer #2: + timeUs = 1000000048000 + contents = length 336, hash 3F64124B + input buffer #3: + timeUs = 1000000072000 + contents = length 336, hash 8FFED94E + input buffer #4: + timeUs = 1000000096000 + contents = length 288, hash 9CD77D47 + input buffer #5: + timeUs = 1000000120000 + contents = length 384, hash 24607BB5 + input buffer #6: + timeUs = 1000000144000 + contents = length 480, hash 4937EBAB + input buffer #7: + timeUs = 1000000168000 + contents = length 336, hash 546342B1 + input buffer #8: + timeUs = 1000000192000 + contents = length 336, hash 79E0923F + input buffer #9: + timeUs = 1000000216000 + contents = length 336, hash AB1F3948 + input buffer #10: + timeUs = 1000000240000 + contents = length 336, hash C3A4D888 + input buffer #11: + timeUs = 1000000264000 + contents = length 288, hash 7867DA45 + input buffer #12: + timeUs = 1000000288000 + contents = length 336, hash B1240B73 + input buffer #13: + timeUs = 1000000312000 + contents = length 336, hash 94CFCD35 + input buffer #14: + timeUs = 1000000336000 + contents = length 288, hash 94F412C + input buffer #15: + timeUs = 1000000360000 + contents = length 336, hash A1D9FF41 + input buffer #16: + timeUs = 1000000384000 + contents = length 288, hash 2A8DA21B + input buffer #17: + timeUs = 1000000408000 + contents = length 336, hash 6A429CE + input buffer #18: + timeUs = 1000000432000 + contents = length 336, hash 68853982 + input buffer #19: + timeUs = 1000000456000 + contents = length 384, hash 1D6F779C + input buffer #20: + timeUs = 1000000480000 + contents = length 480, hash 6B31EBEE + input buffer #21: + timeUs = 1000000504000 + contents = length 336, hash 888335BE + input buffer #22: + timeUs = 1000000528000 + contents = length 336, hash 6072AC8B + input buffer #23: + timeUs = 1000000552000 + contents = length 336, hash C9D24234 + input buffer #24: + timeUs = 1000000576000 + contents = length 288, hash 52BF4D1E + input buffer #25: + timeUs = 1000000600000 + contents = length 336, hash F93F4F0 + input buffer #26: + timeUs = 1000000624000 + contents = length 336, hash 8617688A + input buffer #27: + timeUs = 1000000648000 + contents = length 480, hash FAB0D31B + input buffer #28: + timeUs = 1000000672000 + contents = length 384, hash FA4B53E2 + input buffer #29: + timeUs = 1000000696000 + contents = length 336, hash 8C435F6A + input buffer #30: + timeUs = 1000000720000 + contents = length 336, hash 60D3F80C + input buffer #31: + timeUs = 1000000744000 + contents = length 336, hash DC15B68B + input buffer #32: + timeUs = 1000000768000 + contents = length 288, hash FF3DF141 + input buffer #33: + timeUs = 1000000792000 + contents = length 336, hash A64B3042 + input buffer #34: + timeUs = 1000000816000 + contents = length 336, hash ACA622A1 + input buffer #35: + timeUs = 1000000840000 + contents = length 288, hash 3E34B8D4 + input buffer #36: + timeUs = 1000000864000 + contents = length 288, hash 9B96F72A + input buffer #37: + timeUs = 1000000888000 + contents = length 336, hash E917C122 + input buffer #38: + timeUs = 1000000912000 + contents = length 336, hash 10ED1470 + input buffer #39: + timeUs = 1000000936000 + contents = length 288, hash 706B8A7C + input buffer #40: + timeUs = 1000000960000 + contents = length 336, hash 71FFE4A0 + input buffer #41: + timeUs = 1000000984000 + contents = length 336, hash D4160463 + input buffer #42: + timeUs = 1000001008000 + contents = length 336, hash EC557B14 + input buffer #43: + timeUs = 1000001032000 + contents = length 288, hash 5598CF8B + input buffer #44: + timeUs = 1000001056000 + contents = length 336, hash 7E0AB41 + input buffer #45: + timeUs = 1000001080000 + contents = length 336, hash 1C585FEF + input buffer #46: + timeUs = 1000001104000 + contents = length 336, hash A4A4855E + input buffer #47: + timeUs = 1000001128000 + contents = length 336, hash CECA51D3 + input buffer #48: + timeUs = 1000001152000 + contents = length 288, hash 2D362DC5 + input buffer #49: + timeUs = 1000001176000 + contents = length 336, hash 9EB2609D + input buffer #50: + timeUs = 1000001200000 + contents = length 336, hash 28FFB3FE + input buffer #51: + timeUs = 1000001224000 + contents = length 288, hash 2AA2D216 + input buffer #52: + timeUs = 1000001248000 + contents = length 336, hash CDBC7032 + input buffer #53: + timeUs = 1000001272000 + contents = length 336, hash 25B13FE7 + input buffer #54: + timeUs = 1000001296000 + contents = length 336, hash DB6BB1E + input buffer #55: + timeUs = 1000001320000 + contents = length 336, hash EBE951F4 + input buffer #56: + timeUs = 1000001344000 + contents = length 288, hash 9E2EBFF7 + input buffer #57: + timeUs = 1000001368000 + contents = length 336, hash 36A7D455 + input buffer #58: + timeUs = 1000001392000 + contents = length 336, hash 84545F8C + input buffer #59: + timeUs = 1000001416000 + contents = length 336, hash F66F3045 + input buffer #60: + timeUs = 1000001440000 + contents = length 576, hash 5AB089EA + input buffer #61: + timeUs = 1000001464000 + contents = length 336, hash 8868086 + input buffer #62: + timeUs = 1000001488000 + contents = length 336, hash D5EB6D63 + input buffer #63: + timeUs = 1000001512000 + contents = length 288, hash 7A5374B7 + input buffer #64: + timeUs = 1000001536000 + contents = length 336, hash BEB27A75 + input buffer #65: + timeUs = 1000001560000 + contents = length 336, hash E251E0FD + input buffer #66: + timeUs = 1000001584000 + contents = length 288, hash D54C970 + input buffer #67: + timeUs = 1000001608000 + contents = length 336, hash 52C473B9 + input buffer #68: + timeUs = 1000001632000 + contents = length 336, hash F5F13334 + input buffer #69: + timeUs = 1000001656000 + contents = length 480, hash A5F1E987 + input buffer #70: + timeUs = 1000001680000 + contents = length 288, hash 453A1267 + input buffer #71: + timeUs = 1000001704000 + contents = length 288, hash 7C6C2EA9 + input buffer #72: + timeUs = 1000001728000 + contents = length 336, hash F4BFECA4 + input buffer #73: + timeUs = 1000001752000 + contents = length 336, hash 751A395A + input buffer #74: + timeUs = 1000001776000 + contents = length 336, hash EE38DB02 + input buffer #75: + timeUs = 1000001800000 + contents = length 336, hash F18837E2 + input buffer #76: + timeUs = 1000001824000 + contents = length 336, hash ED36B78E + input buffer #77: + timeUs = 1000001848000 + contents = length 336, hash B3D28289 + input buffer #78: + timeUs = 1000001872000 + contents = length 288, hash 8BDE28E1 + input buffer #79: + timeUs = 1000001896000 + contents = length 336, hash CFD5E966 + input buffer #80: + timeUs = 1000001920000 + contents = length 288, hash DC08E267 + input buffer #81: + timeUs = 1000001944000 + contents = length 336, hash 6530CB78 + input buffer #82: + timeUs = 1000001968000 + contents = length 336, hash 6CC6636E + input buffer #83: + timeUs = 1000001992000 + contents = length 336, hash 613047C1 + input buffer #84: + timeUs = 1000002016000 + contents = length 288, hash CDC747BF + input buffer #85: + timeUs = 1000002040000 + contents = length 336, hash AF22AA74 + input buffer #86: + timeUs = 1000002064000 + contents = length 384, hash 82F326AA + input buffer #87: + timeUs = 1000002088000 + contents = length 384, hash EDA26C4D + input buffer #88: + timeUs = 1000002112000 + contents = length 336, hash 94C643DC + input buffer #89: + timeUs = 1000002136000 + contents = length 288, hash CB5D9C40 + input buffer #90: + timeUs = 1000002160000 + contents = length 336, hash 1E69DE3F + input buffer #91: + timeUs = 1000002184000 + contents = length 336, hash 7E472219 + input buffer #92: + timeUs = 1000002208000 + contents = length 336, hash DA47B9FA + input buffer #93: + timeUs = 1000002232000 + contents = length 336, hash DD0ABB7C + input buffer #94: + timeUs = 1000002256000 + contents = length 288, hash DBF93FAC + input buffer #95: + timeUs = 1000002280000 + contents = length 336, hash 243F4B2 + input buffer #96: + timeUs = 1000002304000 + contents = length 336, hash 2E881490 + input buffer #97: + timeUs = 1000002328000 + contents = length 288, hash 1C28C8BE + input buffer #98: + timeUs = 1000002352000 + contents = length 336, hash C73E5D30 + input buffer #99: + timeUs = 1000002376000 + contents = length 288, hash 98B5BFF6 + input buffer #100: + timeUs = 1000002400000 + contents = length 336, hash E0135533 + input buffer #101: + timeUs = 1000002424000 + contents = length 336, hash D13C9DBC + input buffer #102: + timeUs = 1000002448000 + contents = length 336, hash 63D524CA + input buffer #103: + timeUs = 1000002472000 + contents = length 288, hash A28514C3 + input buffer #104: + timeUs = 1000002496000 + contents = length 336, hash 72B647FF + input buffer #105: + timeUs = 1000002520000 + contents = length 336, hash 8F740AB1 + input buffer #106: + timeUs = 1000002544000 + contents = length 336, hash 5E3C7E93 + input buffer #107: + timeUs = 1000002568000 + contents = length 336, hash 121B913B + input buffer #108: + timeUs = 1000002592000 + contents = length 336, hash 578FCCF2 + input buffer #109: + timeUs = 1000002616000 + contents = length 336, hash 5B5823DE + input buffer #110: + timeUs = 1000002640000 + contents = length 384, hash D8B83F78 + input buffer #111: + timeUs = 1000002664000 + contents = length 240, hash E649682F + input buffer #112: + timeUs = 1000002688000 + contents = length 96, hash C559A6F4 + input buffer #113: + timeUs = 1000002712000 + contents = length 96, hash 792796BC + input buffer #114: + timeUs = 1000002736000 + contents = length 120, hash 8172CD0E + input buffer #115: + timeUs = 1000002760000 + contents = length 120, hash F562B52F + input buffer #116: + timeUs = 1000002784000 + contents = length 96, hash FF8D5B98 + input buffer #117: + timeUs = 0 + flags = 4 + contents = length 0, hash 1 + outputBuffers: + count = 117 + output buffer #0: + timeUs = 1000000000000 + size = 0 + rendered = false + output buffer #1: + timeUs = 1000000024000 + size = 0 + rendered = false + output buffer #2: + timeUs = 1000000048000 + size = 0 + rendered = false + output buffer #3: + timeUs = 1000000072000 + size = 0 + rendered = false + output buffer #4: + timeUs = 1000000096000 + size = 0 + rendered = false + output buffer #5: + timeUs = 1000000120000 + size = 0 + rendered = false + output buffer #6: + timeUs = 1000000144000 + size = 0 + rendered = false + output buffer #7: + timeUs = 1000000168000 + size = 0 + rendered = false + output buffer #8: + timeUs = 1000000192000 + size = 0 + rendered = false + output buffer #9: + timeUs = 1000000216000 + size = 0 + rendered = false + output buffer #10: + timeUs = 1000000240000 + size = 0 + rendered = false + output buffer #11: + timeUs = 1000000264000 + size = 0 + rendered = false + output buffer #12: + timeUs = 1000000288000 + size = 0 + rendered = false + output buffer #13: + timeUs = 1000000312000 + size = 0 + rendered = false + output buffer #14: + timeUs = 1000000336000 + size = 0 + rendered = false + output buffer #15: + timeUs = 1000000360000 + size = 0 + rendered = false + output buffer #16: + timeUs = 1000000384000 + size = 0 + rendered = false + output buffer #17: + timeUs = 1000000408000 + size = 0 + rendered = false + output buffer #18: + timeUs = 1000000432000 + size = 0 + rendered = false + output buffer #19: + timeUs = 1000000456000 + size = 0 + rendered = false + output buffer #20: + timeUs = 1000000480000 + size = 0 + rendered = false + output buffer #21: + timeUs = 1000000504000 + size = 0 + rendered = false + output buffer #22: + timeUs = 1000000528000 + size = 0 + rendered = false + output buffer #23: + timeUs = 1000000552000 + size = 0 + rendered = false + output buffer #24: + timeUs = 1000000576000 + size = 0 + rendered = false + output buffer #25: + timeUs = 1000000600000 + size = 0 + rendered = false + output buffer #26: + timeUs = 1000000624000 + size = 0 + rendered = false + output buffer #27: + timeUs = 1000000648000 + size = 0 + rendered = false + output buffer #28: + timeUs = 1000000672000 + size = 0 + rendered = false + output buffer #29: + timeUs = 1000000696000 + size = 0 + rendered = false + output buffer #30: + timeUs = 1000000720000 + size = 0 + rendered = false + output buffer #31: + timeUs = 1000000744000 + size = 0 + rendered = false + output buffer #32: + timeUs = 1000000768000 + size = 0 + rendered = false + output buffer #33: + timeUs = 1000000792000 + size = 0 + rendered = false + output buffer #34: + timeUs = 1000000816000 + size = 0 + rendered = false + output buffer #35: + timeUs = 1000000840000 + size = 0 + rendered = false + output buffer #36: + timeUs = 1000000864000 + size = 0 + rendered = false + output buffer #37: + timeUs = 1000000888000 + size = 0 + rendered = false + output buffer #38: + timeUs = 1000000912000 + size = 0 + rendered = false + output buffer #39: + timeUs = 1000000936000 + size = 0 + rendered = false + output buffer #40: + timeUs = 1000000960000 + size = 0 + rendered = false + output buffer #41: + timeUs = 1000000984000 + size = 0 + rendered = false + output buffer #42: + timeUs = 1000001008000 + size = 0 + rendered = false + output buffer #43: + timeUs = 1000001032000 + size = 0 + rendered = false + output buffer #44: + timeUs = 1000001056000 + size = 0 + rendered = false + output buffer #45: + timeUs = 1000001080000 + size = 0 + rendered = false + output buffer #46: + timeUs = 1000001104000 + size = 0 + rendered = false + output buffer #47: + timeUs = 1000001128000 + size = 0 + rendered = false + output buffer #48: + timeUs = 1000001152000 + size = 0 + rendered = false + output buffer #49: + timeUs = 1000001176000 + size = 0 + rendered = false + output buffer #50: + timeUs = 1000001200000 + size = 0 + rendered = false + output buffer #51: + timeUs = 1000001224000 + size = 0 + rendered = false + output buffer #52: + timeUs = 1000001248000 + size = 0 + rendered = false + output buffer #53: + timeUs = 1000001272000 + size = 0 + rendered = false + output buffer #54: + timeUs = 1000001296000 + size = 0 + rendered = false + output buffer #55: + timeUs = 1000001320000 + size = 0 + rendered = false + output buffer #56: + timeUs = 1000001344000 + size = 0 + rendered = false + output buffer #57: + timeUs = 1000001368000 + size = 0 + rendered = false + output buffer #58: + timeUs = 1000001392000 + size = 0 + rendered = false + output buffer #59: + timeUs = 1000001416000 + size = 0 + rendered = false + output buffer #60: + timeUs = 1000001440000 + size = 0 + rendered = false + output buffer #61: + timeUs = 1000001464000 + size = 0 + rendered = false + output buffer #62: + timeUs = 1000001488000 + size = 0 + rendered = false + output buffer #63: + timeUs = 1000001512000 + size = 0 + rendered = false + output buffer #64: + timeUs = 1000001536000 + size = 0 + rendered = false + output buffer #65: + timeUs = 1000001560000 + size = 0 + rendered = false + output buffer #66: + timeUs = 1000001584000 + size = 0 + rendered = false + output buffer #67: + timeUs = 1000001608000 + size = 0 + rendered = false + output buffer #68: + timeUs = 1000001632000 + size = 0 + rendered = false + output buffer #69: + timeUs = 1000001656000 + size = 0 + rendered = false + output buffer #70: + timeUs = 1000001680000 + size = 0 + rendered = false + output buffer #71: + timeUs = 1000001704000 + size = 0 + rendered = false + output buffer #72: + timeUs = 1000001728000 + size = 0 + rendered = false + output buffer #73: + timeUs = 1000001752000 + size = 0 + rendered = false + output buffer #74: + timeUs = 1000001776000 + size = 0 + rendered = false + output buffer #75: + timeUs = 1000001800000 + size = 0 + rendered = false + output buffer #76: + timeUs = 1000001824000 + size = 0 + rendered = false + output buffer #77: + timeUs = 1000001848000 + size = 0 + rendered = false + output buffer #78: + timeUs = 1000001872000 + size = 0 + rendered = false + output buffer #79: + timeUs = 1000001896000 + size = 0 + rendered = false + output buffer #80: + timeUs = 1000001920000 + size = 0 + rendered = false + output buffer #81: + timeUs = 1000001944000 + size = 0 + rendered = false + output buffer #82: + timeUs = 1000001968000 + size = 0 + rendered = false + output buffer #83: + timeUs = 1000001992000 + size = 0 + rendered = false + output buffer #84: + timeUs = 1000002016000 + size = 0 + rendered = false + output buffer #85: + timeUs = 1000002040000 + size = 0 + rendered = false + output buffer #86: + timeUs = 1000002064000 + size = 0 + rendered = false + output buffer #87: + timeUs = 1000002088000 + size = 0 + rendered = false + output buffer #88: + timeUs = 1000002112000 + size = 0 + rendered = false + output buffer #89: + timeUs = 1000002136000 + size = 0 + rendered = false + output buffer #90: + timeUs = 1000002160000 + size = 0 + rendered = false + output buffer #91: + timeUs = 1000002184000 + size = 0 + rendered = false + output buffer #92: + timeUs = 1000002208000 + size = 0 + rendered = false + output buffer #93: + timeUs = 1000002232000 + size = 0 + rendered = false + output buffer #94: + timeUs = 1000002256000 + size = 0 + rendered = false + output buffer #95: + timeUs = 1000002280000 + size = 0 + rendered = false + output buffer #96: + timeUs = 1000002304000 + size = 0 + rendered = false + output buffer #97: + timeUs = 1000002328000 + size = 0 + rendered = false + output buffer #98: + timeUs = 1000002352000 + size = 0 + rendered = false + output buffer #99: + timeUs = 1000002376000 + size = 0 + rendered = false + output buffer #100: + timeUs = 1000002400000 + size = 0 + rendered = false + output buffer #101: + timeUs = 1000002424000 + size = 0 + rendered = false + output buffer #102: + timeUs = 1000002448000 + size = 0 + rendered = false + output buffer #103: + timeUs = 1000002472000 + size = 0 + rendered = false + output buffer #104: + timeUs = 1000002496000 + size = 0 + rendered = false + output buffer #105: + timeUs = 1000002520000 + size = 0 + rendered = false + output buffer #106: + timeUs = 1000002544000 + size = 0 + rendered = false + output buffer #107: + timeUs = 1000002568000 + size = 0 + rendered = false + output buffer #108: + timeUs = 1000002592000 + size = 0 + rendered = false + output buffer #109: + timeUs = 1000002616000 + size = 0 + rendered = false + output buffer #110: + timeUs = 1000002640000 + size = 0 + rendered = false + output buffer #111: + timeUs = 1000002664000 + size = 0 + rendered = false + output buffer #112: + timeUs = 1000002688000 + size = 0 + rendered = false + output buffer #113: + timeUs = 1000002712000 + size = 0 + rendered = false + output buffer #114: + timeUs = 1000002736000 + size = 0 + rendered = false + output buffer #115: + timeUs = 1000002760000 + size = 0 + rendered = false + output buffer #116: + timeUs = 1000002784000 + size = 0 + rendered = false +AudioSink: + buffer count = 117 + config: + pcmEncoding = 2 + channelCount = 2 + sampleRate = 48000 + buffer #0: + time = 1000000000000 + data = 1 + buffer #1: + time = 1000000024000 + data = 1 + buffer #2: + time = 1000000048000 + data = 1 + buffer #3: + time = 1000000072000 + data = 1 + buffer #4: + time = 1000000096000 + data = 1 + buffer #5: + time = 1000000120000 + data = 1 + buffer #6: + time = 1000000144000 + data = 1 + buffer #7: + time = 1000000168000 + data = 1 + buffer #8: + time = 1000000192000 + data = 1 + buffer #9: + time = 1000000216000 + data = 1 + buffer #10: + time = 1000000240000 + data = 1 + buffer #11: + time = 1000000264000 + data = 1 + buffer #12: + time = 1000000288000 + data = 1 + buffer #13: + time = 1000000312000 + data = 1 + buffer #14: + time = 1000000336000 + data = 1 + buffer #15: + time = 1000000360000 + data = 1 + buffer #16: + time = 1000000384000 + data = 1 + buffer #17: + time = 1000000408000 + data = 1 + buffer #18: + time = 1000000432000 + data = 1 + buffer #19: + time = 1000000456000 + data = 1 + buffer #20: + time = 1000000480000 + data = 1 + buffer #21: + time = 1000000504000 + data = 1 + buffer #22: + time = 1000000528000 + data = 1 + buffer #23: + time = 1000000552000 + data = 1 + buffer #24: + time = 1000000576000 + data = 1 + buffer #25: + time = 1000000600000 + data = 1 + buffer #26: + time = 1000000624000 + data = 1 + buffer #27: + time = 1000000648000 + data = 1 + buffer #28: + time = 1000000672000 + data = 1 + buffer #29: + time = 1000000696000 + data = 1 + buffer #30: + time = 1000000720000 + data = 1 + buffer #31: + time = 1000000744000 + data = 1 + buffer #32: + time = 1000000768000 + data = 1 + buffer #33: + time = 1000000792000 + data = 1 + buffer #34: + time = 1000000816000 + data = 1 + buffer #35: + time = 1000000840000 + data = 1 + buffer #36: + time = 1000000864000 + data = 1 + buffer #37: + time = 1000000888000 + data = 1 + buffer #38: + time = 1000000912000 + data = 1 + buffer #39: + time = 1000000936000 + data = 1 + buffer #40: + time = 1000000960000 + data = 1 + buffer #41: + time = 1000000984000 + data = 1 + buffer #42: + time = 1000001008000 + data = 1 + buffer #43: + time = 1000001032000 + data = 1 + buffer #44: + time = 1000001056000 + data = 1 + buffer #45: + time = 1000001080000 + data = 1 + buffer #46: + time = 1000001104000 + data = 1 + buffer #47: + time = 1000001128000 + data = 1 + buffer #48: + time = 1000001152000 + data = 1 + buffer #49: + time = 1000001176000 + data = 1 + buffer #50: + time = 1000001200000 + data = 1 + buffer #51: + time = 1000001224000 + data = 1 + buffer #52: + time = 1000001248000 + data = 1 + buffer #53: + time = 1000001272000 + data = 1 + buffer #54: + time = 1000001296000 + data = 1 + buffer #55: + time = 1000001320000 + data = 1 + buffer #56: + time = 1000001344000 + data = 1 + buffer #57: + time = 1000001368000 + data = 1 + buffer #58: + time = 1000001392000 + data = 1 + buffer #59: + time = 1000001416000 + data = 1 + buffer #60: + time = 1000001440000 + data = 1 + buffer #61: + time = 1000001464000 + data = 1 + buffer #62: + time = 1000001488000 + data = 1 + buffer #63: + time = 1000001512000 + data = 1 + buffer #64: + time = 1000001536000 + data = 1 + buffer #65: + time = 1000001560000 + data = 1 + buffer #66: + time = 1000001584000 + data = 1 + buffer #67: + time = 1000001608000 + data = 1 + buffer #68: + time = 1000001632000 + data = 1 + buffer #69: + time = 1000001656000 + data = 1 + buffer #70: + time = 1000001680000 + data = 1 + buffer #71: + time = 1000001704000 + data = 1 + buffer #72: + time = 1000001728000 + data = 1 + buffer #73: + time = 1000001752000 + data = 1 + buffer #74: + time = 1000001776000 + data = 1 + buffer #75: + time = 1000001800000 + data = 1 + buffer #76: + time = 1000001824000 + data = 1 + buffer #77: + time = 1000001848000 + data = 1 + buffer #78: + time = 1000001872000 + data = 1 + buffer #79: + time = 1000001896000 + data = 1 + buffer #80: + time = 1000001920000 + data = 1 + buffer #81: + time = 1000001944000 + data = 1 + buffer #82: + time = 1000001968000 + data = 1 + buffer #83: + time = 1000001992000 + data = 1 + buffer #84: + time = 1000002016000 + data = 1 + buffer #85: + time = 1000002040000 + data = 1 + buffer #86: + time = 1000002064000 + data = 1 + buffer #87: + time = 1000002088000 + data = 1 + buffer #88: + time = 1000002112000 + data = 1 + buffer #89: + time = 1000002136000 + data = 1 + buffer #90: + time = 1000002160000 + data = 1 + buffer #91: + time = 1000002184000 + data = 1 + buffer #92: + time = 1000002208000 + data = 1 + buffer #93: + time = 1000002232000 + data = 1 + buffer #94: + time = 1000002256000 + data = 1 + buffer #95: + time = 1000002280000 + data = 1 + buffer #96: + time = 1000002304000 + data = 1 + buffer #97: + time = 1000002328000 + data = 1 + buffer #98: + time = 1000002352000 + data = 1 + buffer #99: + time = 1000002376000 + data = 1 + buffer #100: + time = 1000002400000 + data = 1 + buffer #101: + time = 1000002424000 + data = 1 + buffer #102: + time = 1000002448000 + data = 1 + buffer #103: + time = 1000002472000 + data = 1 + buffer #104: + time = 1000002496000 + data = 1 + buffer #105: + time = 1000002520000 + data = 1 + buffer #106: + time = 1000002544000 + data = 1 + buffer #107: + time = 1000002568000 + data = 1 + buffer #108: + time = 1000002592000 + data = 1 + buffer #109: + time = 1000002616000 + data = 1 + buffer #110: + time = 1000002640000 + data = 1 + buffer #111: + time = 1000002664000 + data = 1 + buffer #112: + time = 1000002688000 + data = 1 + buffer #113: + time = 1000002712000 + data = 1 + buffer #114: + time = 1000002736000 + data = 1 + buffer #115: + time = 1000002760000 + data = 1 + buffer #116: + time = 1000002784000 + data = 1 +Listener.onMediaMetadata: + MediaMetadata[0]: + title = Test title + artist = Test Artist + albumTitle = Test Album + artworkData = length 38946, hash 87684827 + artworkDataType = other