Diff
Modified: branches/safari-612.1.5-branch/LayoutTests/ChangeLog (273798 => 273799)
--- branches/safari-612.1.5-branch/LayoutTests/ChangeLog 2021-03-03 03:09:02 UTC (rev 273798)
+++ branches/safari-612.1.5-branch/LayoutTests/ChangeLog 2021-03-03 03:09:07 UTC (rev 273799)
@@ -1,5 +1,56 @@
2021-03-02 Alan Coon <[email protected]>
+ Cherry-pick r273513. rdar://problem/74953307
+
+ [Cocoa] Appending a partial segment of a WebM audio file results in no additional samples
+ https://bugs.webkit.org/show_bug.cgi?id=222407
+ <rdar://74610383>
+
+ Reviewed by Eric Carlson.
+
+ Source/WebCore:
+
+ Test: media/media-source/media-source-webm-vorbis-partial.html
+
+ When appending a partial WebM segment, it can occur that the parser is mid-way through
+ parsing a Block or SimpleBlock, and is waiting for enough data to be appended to construct a
+ full sample. However, previous appends are not accounted for when calculated the amount of
+ data to be requested from the reader, which both results in too much data read and a
+ miscalculation of the `bytesRemaining` out-param. This causes all subsequent appends to
+ generate no samples, leading to an apparent stall in playback.
+
+ Add a new ivar to track the number of partial bytes read, and use that value to calculate
+ the number of bytes yet to be parsed.
+
+ * platform/graphics/cocoa/SourceBufferParserWebM.cpp:
+ (WebCore::SourceBufferParserWebM::VideoTrackData::createSampleBuffer):
+ * platform/graphics/cocoa/SourceBufferParserWebM.h:
+
+ LayoutTests:
+
+ * platform/mac-bigsur/media/media-source/content/test-48kHz-vorbis-manifest.json: Added.
+ * platform/mac-bigsur/media/media-source/content/test-48kHz-vorbis.webm: Added.
+ * platform/mac-bigsur/media/media-source/media-source-webm-vorbis-partial-expected.txt: Added.
+ * platform/mac-bigsur/media/media-source/media-source-webm-vorbis-partial.html: Added.
+
+
+ git-svn-id: https://svn.webkit.org/repository/webkit/trunk@273513 268f45cc-cd09-0410-ab3c-d52691b4dbfc
+
+ 2021-02-25 Jer Noble <[email protected]>
+
+ [Cocoa] Appending a partial segment of a WebM audio file results in no additional samples
+ https://bugs.webkit.org/show_bug.cgi?id=222407
+ <rdar://74610383>
+
+ Reviewed by Eric Carlson.
+
+ * platform/mac-bigsur/media/media-source/content/test-48kHz-vorbis-manifest.json: Added.
+ * platform/mac-bigsur/media/media-source/content/test-48kHz-vorbis.webm: Added.
+ * platform/mac-bigsur/media/media-source/media-source-webm-vorbis-partial-expected.txt: Added.
+ * platform/mac-bigsur/media/media-source/media-source-webm-vorbis-partial.html: Added.
+
+2021-03-02 Alan Coon <[email protected]>
+
Cherry-pick r273512. rdar://problem/74953022
REGRESSION(r269957): Empty font names passed to canvas2d cause all text routines to crash
Added: branches/safari-612.1.5-branch/LayoutTests/platform/mac-bigsur/media/media-source/content/test-48kHz-vorbis-manifest.json (0 => 273799)
--- branches/safari-612.1.5-branch/LayoutTests/platform/mac-bigsur/media/media-source/content/test-48kHz-vorbis-manifest.json (rev 0)
+++ branches/safari-612.1.5-branch/LayoutTests/platform/mac-bigsur/media/media-source/content/test-48kHz-vorbis-manifest.json 2021-03-03 03:09:07 UTC (rev 273799)
@@ -0,0 +1,11 @@
+{
+ "url": "content/test-48kHz-vorbis.webm",
+ "type": "audio/webm; codecs=\"vorbis\"",
+ "init": { "offset": 0, "size": 4377 },
+ "duration": 10.094,
+ "media": [
+ { "offset": 4377, "size": 5376, "timestamp": 0, "duration": 4.999},
+ { "offset": 9753, "size": 5074, "timestamp": 0, "duration": 4.997},
+ { "offset": 14827, "size": 763, "timestamp": 0, "duration": 0.098}
+ ]
+}
\ No newline at end of file
Added: branches/safari-612.1.5-branch/LayoutTests/platform/mac-bigsur/media/media-source/content/test-48kHz-vorbis.webm (0 => 273799)
--- branches/safari-612.1.5-branch/LayoutTests/platform/mac-bigsur/media/media-source/content/test-48kHz-vorbis.webm (rev 0)
+++ branches/safari-612.1.5-branch/LayoutTests/platform/mac-bigsur/media/media-source/content/test-48kHz-vorbis.webm 2021-03-03 03:09:07 UTC (rev 273799)
@@ -0,0 +1,125 @@
+Eߣ������������B\x86\x81B\xF7\x81B\xF2\x81B\xF3\x81B\x82\x84webmB\x87\x81B\x85\x81S\x80g����������<\xAFM\x9Bt@M\xBB\x8BS\xAB\x84I\xA9fS\xAC\x81\xE5M\xBB\x8CS\xAB\x84T\xAEkS\xAC\x82#\xEC������������\xB9����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������I\xA9f������������2*ױ\x83B@M\x80\x8DLavf57.56.100WA\x8DLavf57.56.100D\x89\x88@÷����������T\xAEk����������\xB3\xAE����������\xAAׁsŁ\x9C\x81��"\xB5\x9C\x83eng\x86\x88A_VORBIS\x83\x81\xE1������������\x9F\x81\xB5\x88@\xE7p����������bd\x81 c\xA2OnUvorbis��������\x80\xBB������������\x80\xB5����������\xB8vorbis,������Xiph.Org libVorbis I 20150105 (⛄⛄⛄⛄)������
������encoder=Lavc57.64.101vorbis%BCV��@����$s*F\xA5s\x84BP\xE3B\xCEk\xECBL\x822L[\xCB%s\x90!\xA4\xA0B\x88[(\x81АU����@����\x87Ax\x84\x8AA!\x84%=X\x92\x83'=!\x84\x889x\x84iA!\x84B!\x84B!\x84E9h\x92\x83'A\x84\xE308\x83\xE58\xF8\x84E9X\x83'A
\xE8 \x84B\xB8\x9A\x83\xAC9!\x84$5HP\x839\xE8\x84\xC2,(\x8A\x82\xC40\xB8\x845(\x8C\x82\xE40\xC8ԃB\x88\x9A\x83I5\xF8\x84gAx\x84iA!\x84$AH\x90\x83A\xC8\x84FAX\x92\x839\xB8\x84\xCBA\xA8\x84*9\x84 4d��\x90����\xA0\xA2(\x8A\xA2(
+\xB2
+��\xC8����@Q\xC7qɑɱ+Y����������\xA0H\x8A\xA4H\x8E\xE4H\x92$Y\x92%Y\x92%Y\x92扪,˲,˲,\xCB2\xB2
+��H����PQEq+Y��d����\xA08\x8A\xA5X\x8A\xA5h\x8A爎\x84\x86\xAC��\x80��������4CS<G\x94D\xCFTUm۶m۶m۶m۶m[\x96e+Y��@����\xD2if\xA9\x880BCV������\x80\x8A0ĀАU����@����\x80J\xA2 \xAD9ߜ\xE3\xA0Y\x9AJ\xB19\x9CH\xB5y\x92\x9B\x8A\xB99\xE7\x9Cs\xCE\xC9\xE6\x9C1\xCE9眢\x9CY\x9A \xAD9\xE7\x9CĠY
+\x9A \xAD9\xE7\x9C'\xB1yК*\xAD9\xE7\x9Cq\xCE\xE9`\x9C\xC69\xE7\x9C&\xADy\x90\x9A\x8D\xB59\xE7\x9C\xADi\x8E\x9AK\xB19\xE7\x9CH\xB9yR\x9BK\xB59\xE7\x9Cs\xCE9\xE7\x9Cs\xCE9\xE7\x9C\xEA\xC5\xE9\x9C\xCE9眨\xBD\xB9\x96\x9B\xD0\xC59\xE7\x9CO\xC6\xE9ޜ\xCE9\xE7\x9Cs\xCE9\xE7\x9Cs\xCE9\xE7\x9C 4d������@\x86\x8Da\xDC)\xD2\xE7h Fb2\xE9A\xF7\xE80 \x83\x9CB\xEA\xD1\xE8h\xA4\x94:%\x95qRJ'+Y������@!\x85RH!\x85RH!\x85b\x88!\x86r\xCA)\xA7\xA0\x82J*\xA9\xA8\xA2\x8C2\xCB,\xB3\xCC2\xCB,\xB3\xCC:쬳;1\xC4C+\xAD\xC4RSm5\xD6Xk\xEE9皃\xB4VZk\xAD\xB5RJ)\xA5\x94R
+BCV�� ����Bd\x90QH!\x85b\x88)\xA7\x9Cr
+*\xA8\x80АU���� ��\x80��������O\xF2\xD1\xD1\xD1\xD1\xD1\xF1\xCF%Q%Q-\xD325\xD3SEUueזuY\xB7}[]\xF7}\xDD\xF7}\xDD\xF8uaX\x96eY\x96eY\x96eY\x96eY\x96eY\x96 4d�������� \x84BH!\x85RH)\xC6s\xCC9\xE8$\x94+Y������������pGqɑI\xB2$K\xD2$\xCD\xD2,O\xF34O=QE\xD34U\xD1]Q7mQ6e\xD35]S6]UVmW\x96m[\xB6uۗe\xDB\xF7}\xDF\xF7}\xDF\xF7}\xDF\xF7}\xDF\xF7}]BCV������:\x92#)\x92")\x92\xE38\x8E$I@h\xC8*��@��@����\x8A\xE2(\x8E\xE38\x92$I\x92%i\x92gy\x96\xA8\x99\x9A陞*\xAA@h\xC8*������@������������\x8A\xA6x\x8A\xA9x\x8A\xA8x\x8E舒h\x99\x96\xA8\xA9\x9A+ʦ캮뺮뺮뺮뺮뺮뺮뺮뺮뺮뺮뺮\x84\x86\xAC��$����t$Gr$GR$ER$Gr\x80АU��\x80��\x80����\xC31$Er,\xCB\xD24O\xF34O=\xD1=\xD3SEWt\x81АU���� ��\x80������������ɰ\xCB\xD1M%\xD5R-US-\xD5RE\xD5SUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUM\xD34M+Y ��\x90��\x90S--ƚ \x8B$b\xD2j\xAB\xA0cR쥱H*g\xB5\xB7\xCA1\x85\xB5^\x87\x94Q{\xA9$c\x8AA\xCC-\xA4\xD0)&\xAD\xD6TB\x85\xA4\x98c*RR 4d\x85��\x9A\xE0p@\xB2,@\x
B2,��������������\x904+\xD0<\xB04��������������$M,O4\xCF
��������������������������������������������������������������������������������������������������������������������������������������@\xD24@\xF3<@\xF3<��������������\xD0<\xF0<\xF0D��������������,\xCF4\xD1<Q��������������������������������������������������������������������������������������������������������������������������������������@\xD24@\xF3<@\xF3<��������������\xB0<\xF0D\xD0<��������������,\xCF<Q<\xD1���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������
�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\xE0����`!\xB2"��\x88��pH$ \x92\xCDH\x96M\x83\xA6\xC14\x92eAӠi0M������������
��������$M\x83\xA6A\xD3 \x8A��IӠi\xD04\x88"��������������������\x92\xA6AӠiE\x80\xA4i\xD04hD��������������������\xCF4!\x8AE\x98&\xC03M\x88"D\xA6 ������������������������������������������������p����0\xA1\xB2"��\x88��p8\x8Ae��\x80\xE38\x96����\x8E\xE3X����X\x96%\x8A����`Y\x9A(������������������������������������������������������������������������������������������������������������������������������������p����0\xA1\xB2��\x88��p(\x8AeDZ,\xE08\x96$ɲ��\x96\xD0<\x80\xA6D������(p����\xB0ASbq\x80BCV��Q����ű,ME\x92\xA4i\x9A'\x8A$I\xD3<Oi\x9A\xE7y\x9Ei\xC2\xF3<\xCF4!\x8A\xA2h\x9AEQ4M\x98\xA6i\xAA*0MU����P\xE0����`\x83\xA6\xC4\xE2��\x85\x86\xAC��B��\x8AbY\x9A\xE6y\x9E'\x8A\xA6\xA9\x9A$I\xD3<OE\xD14MSUI\x92\xA6y\x9E(\x8A\xA2i\x9A\xA6\xAA\xB2,M\xF3<QE\xD3TUU\x85\xA6y\x9E(\x8A\xA2i\xAA\xAA\xEA\xC2\xF3<OE\xD14U\xD5u\xE1y\x9E'\x8A\xA2h\x9A\xAA\xEA\xBAEQ4M\xD3TMUu] \x8A\xA6i\x9A\xAA\xAA\xAA\xAEDOMSU]\xD7u\x81牢
i\xAA\xAA\xAB\xBA.M\xD3TUUu]Y\x98\xA6i\xAA\xAA\xEB\xCA2@UU\xD5u]W\x96\xAA\xAA\xAA\xAE뺲PU\xD7u]Y\x96e��\xAE뺲,\xCB��������\x8C\xA0\x93\x8C*\x
8B\xB0ф@\xA1!+\x80(����\xC0\xA6S\xCA0&!\xA4\xC6$\x84B&%\xA5\xD2R\xAA \xA4RR)\x84TJ*%\xA3\x94Rj)UR)\xA9\x94
+B*%\x95R������\x85Ph\xC8J�� ��\x800F)\xC6sN"\xA4c\xCE9'R\x8A1眓J1\xE6\x9Cs\xCEI)s\xCC9礔\xCE9\xE7\x9CsRJ\xE6\x9Cs\xCE9)\xA5s\xCE9眔RJ\xE7\x9CsNJ)%\x84\xCEA'\xA5\x94\xD29\xE7\x9C����T\xE0����`\xA3\xC8\xE6#A\x85\x86\xAC��R��\x8EcY\x9A\xE6y\xA2h\x9A\x96$i\x9A\xE7y\x9E(\x9A\xA6&I\x9A\xE6y\x9E'\x8A\xAA\xC9\xF3<OE\xD14U\x95\xE7y\x9E(\x8A\xA2i\xAA*\xD7E\xD34MUU]\xB2,\x8A\xA6i\x9A\xAA\xEA\xBA0M\xD3TU\xD7u]\x98\xA6i\xAA\xAA\xEB\xBA.l[UU\xD5ue\xB6\xAD\xAA\xAA꺲\\xD7ueٖ\x81,\xBB\xAE\xECڲ����\xF0��\xA0VG8),4d%��\x90��@\x83\x90B!eB
+!\x84\x94R ����p����0\xA1\xB2��H����\x8C\xB1\xD6Zk\xAD\xB5\xD6@g\xAD\xB5\xD6Zk\xAD\x80\xCCZk\xAD\xB5\xD6Zk\xAD\xB5\xD6Zk\xAD\xB5\xD6Rk\xAD\xB5\xD6Zk\xAD\xB5\xD6Zk\xAD\xB5\xD6Zk\xAD\xB5\xD6Zk\xAD\xB5\xD6Zk\xAD\xB5\xD6Zk\xAD\xB5\xD6Zk\xAD\xB5\xD6Zk\xAD\xB5\xD6Zk\xAD\xB5\xD6Zk-\xA5\x94RJ)\xA5\x94RJ)\xA5\x94RJ)\xA5\x94RJ��\xFAU8��\xF8?ذ:\xC2I\xD1X`\xA1!+\x80p����\xC0\xA5sB)\xA5T1\xE6\x9CtTZ\x8B\xB1B\x881\xE7$\xA4\xD4Zl\xC5s\xCEA(!\x95\xD6b,\x9EsB))\xC5VcQ)\x84RRJ-\xB6X\x8BJ\xA1\xA3\x92RJ\xAD\xD5X\x8C1\xA9\xA4\xD6Z\x8B\xAD\xC6b\x8CI)\xB4\xD4Z\x8B1#lM\xA9\xB5\xD8j\xAB\xB1ck*-\xB4c\x8C\xC5_dl-\xA6\xDAj+\xC6#[,-\xD5Zk0\xC6\xDD[\x8B\xA5\xB6\x9A\x8B1>\xF8\xDAR,1\xD6\����w\x83��D\x82\x8D3\xAC$\x9D\x8E\xB2�� �� R\x8A1\xC6s\xCE9\xE7\xA4R\x8C9\xE6\x9CsB\xA1T\x8A1ƜsB!\x94\x8C1\xE6\x9CsB!\x84RJƜsB!\x84\x90R\xEA\x9CsB!\x84J)\x9DsB!\x84B)\xA5\x83B!\x84J(\xA5\xA4B!\x84B\xA9\xA4\x94B!\x84RB(!\x95\x94R!\x84B)%\xA4\x94R
+!\x84RB\xA1\x84\x94RJ)\x85B\xA5\x94\x92RJ)\xA5J %\x84R))\xA5J!\x94RJJ)\xA5TJ \xA1\x84J)%\xA5\x94RJ!\x84J)����8����A'Ua\xA3 \x80BCV��d����\x90\xA2\x94R)-E\x82"\xA5\xA4KFsPZ\x8A\xA8rRͩR\xCE \xE6$\x96\x881\x84\x94\x93T2\xE6BB\xEAuL)-\x95B\xC6\xA4\xD8rK\xA1s������A��\x80\x80\x90����3��\xC0\xE0��\xE1stG��\x80 Df\x88D\xC3BpxP S@b\x82B.��TX\\xA4]\@\x97.\xE8\xE2\xAE!!A,\xA0\x80\x9Cp\xC3ox\xC2+N\xD0)*u ������������\xF0����\x90\��\xD1\xCCadhlptx|\x80\x84\x88\x8C\x90������������|����$%@DD4s !"#$��\x80���������� \x80������������������C\xB6u����������\xF4\xE7\x81��\xA3\x85\x81����\x80��\xA3\x85\x81��\x80\xA3\x85\x81��\x80��\xA3\x85\x81��\x80��\xA3\x85\x81��\x80��\xA3\x85\x81�� \x80��\xA3\x85\x81��#\x80��\xA3\x85\x81��&\x80��\xA3\xB3\x81��(\x80\x8C\xCE\\xCByt\xBE\xE0ZΫb\xA1,\xDA\xAC\x8E&\xF2Vo-3_\xBCx\xA1e歍\x8F\x8F\x8F\x8F\x8Fg\xE6\x8BZ\xA6��\xA3\xB3\x81��+\x80<\xE5g\x81\xC7\xF7)?<\xBE\xB
7\xA6\x88\x88��\xAAb\xD6\xA9\xB6۶m\xD5\xFF\xFF\xBE\xCF\xFD\xFF\xFF\xFF\
xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA3\xB3\x81��.\x80\xF5g&y
+\xF4\x87\xFA3\x93\x82<\xFA;m\xAB
+p4q\x94\xB8\xB2B-...............��\xA3\xE4\x81��0\x80\xF2\xC9\xCF߂;\xC8v*n\x9C\xFC\x86\x9A\xF1\x93-\x9E\xBFw\x90\xEDT\xDC8\xF9+5#ӽ\xD2j����"����������������������TA��FI\xA1\xA3DI\\x89 \x830\x89\x8F\x84"D\x88\xD0\xD1\xD1hD$iEF,\x90\xB2@\xA3\xA9\x81��<\x80\xF3Ue\x833\x94P~\x98\xAF*\x9C\xA1\x84\xF2P����\xC0b\xB5*\x9D\xB6\xA1+\xCE9\xA3\xA9\x81��H\x80\xF3Ue\x833\xD4|\x98\xAF*\x9C\xA1\x86����\xD4\xC1j;\xAF\xE4\xCE9\xA3\xA6\x81��K\x80\xF3\xB1\xE4-D\xF3\xB1\xE4-D\xACR\xA8������\xC0`\xFE\xFCās��\xA3\xA8\x81��N\x80\xF3[1\xE45(\xE6\xB7b*\xC8k\xB0NH\xA1��@����P5\xA8\xC1~\xF1\x85s\xCE\xA3\xA8\x81��P\x80\xF3Uu)\xC8KP\xF3Uu)\xC8KP\xAC\x80����`:\xD8\xED\xEA \xAF\xAB\xA3\xBEs\xA3\xA9\x81��S\x80\xF3;e\xC2Xnȋ\xF9\x9D2a,7\xE4\x9B0@����������ӦV\xC4ֳ\xAD&\xADf\xC0\xA3\xB5\x81��V\x80D\xF1\xC7"5\xA8\xC5\x8BԠ\xFEYE\xA0\xA0T+\xD6Z\xAB %9\xB4\x94\xBDGͯ\x94\x8DQ\xB3\xFD:6\xA5\xFA:6Xs\xA3\xB6\x81��X\x80\xE4
ΡM\x81\xED\xE5ΡM\x81\x{DB6B}T\x81R)\
x8BZ\xB5\xAA\xC7+U\xDB\xE3\xF9R\x9FT\xA5Z\xA9)\xEBi\x8F\xC3s\xAD\xBCl\xD1\xFFK\xA3@\xAB\x81��[\x80ڵ\x8C\xF7o\xE1\xBE\xE5\x9D\xCD\xEAi\x95\x9Ab\xD72\x85\xFB\x96w6\xAB\xA7Uj\x8Ac\x8C9\xAB��������������\x95\xB6i\x9Bn\xA7\xDB\xE9٣g\xA7\xDBi\x9B\x92\xB6\xD3\xEDѳG\xCFN\xB7)\xA9\xA6mڦmڦ\xDB\xE9v\xBA\x9Dn\xA7۴M\xDBT
+\xA9T\xD36m\xD3v\xDAN\xB7\xD36m\xD36m*,f\xE68^^^\x84\xAAz\xF9\xF2\xE5K\xBD
+\x98yyy\x81\x9E\x99\x99\xFFիW\xC7\xCC\xCC\xCB\xCB\xCB\xCBˋ\xD0mxyyyy\x81\xE5\xE2\xE2\xE2\xE2\xE2"��\xA3\x85\x81��g\x80\xA3\x85\x81��|\x80\xA3\x85\x81��\x92\x80\xA3\x85\x81��\xA7\x80\xA3\x85\x81��\xBC\x80\xA3\x85\x81��Ҁ\xA3\x85\x81��\xE7\x80\xA3\x85\x81��\xFC\x80\xA3\x85\x81\x80\xA3\x85\x81'\x80\xA3\x85\x81<\x80\xA3\x85\x81R\x80\xA3\x85\x81g\x80\xA3\x85\x81|\x80\xA3\x85\x81\x92\x80\xA3\x85\x81\xA7\x80\xA3\x85\x81\xBC\x80\xA3\x85\x81Ҁ\xA3\x85\x81\xE7\x80\xA3\x85\x81\xFC\x80\xA3\x85\x81\x80\xA3\x85\x81'\x80\xA3\x85\x81<\x80\xA3\x85\x81R\x80\xA3\x85\x81g\x80\xA3\x85\x81|\x80\xA3\x85\x81\x92\x80\xA3\x85\x81\xA7\x80\xA3\x85\x81\xBC\x80\xA3\x85\x81Ҁ\xA3\x85\x81\xE7\x80\xA3\x85\x81\xFC\x80\xA3\x85\x81\x80\xA3\x85\x81'\x80\xA3\x85\x81<\x80\xA3\x85\x81R\x80\xA3\x85\x81g\x80\xA3\x85\x81|\x80\xA3\x85\x81\x92\x80\xA3\x85\x81\xA7\x80\xA3\x85\x81\xBC\x80\xA3\x85\x81Ҁ\xA3\x85\x81\xE7\x80\xA3\x85\
x81\xFC\
x80��\xA3\x85\x81\x80��\xA3\x85\x81\x80��\xA3\x85\x81\x80��\xA3\xAC\x81\x80\x84нg\x89B!t\xEFY\xA2ЪX\xC0P\x8Bi\xB5\x9A\xBC\x90\xDE\xF7\xB9\xFB\xFF\xFF\xFF_\xCB\xFF\xF7_\xCB\xD8x\xA3\xAF\x81\x80T\xE5\xAD\xE3\xAA*oW\xEB\xEATBfRU@\x8D\xFB\xFA\xF5y\xFE\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA3\xB1\x81\x80\x84\xF5˖]X\xBFl\xD9}��\xAA\xA9��\xC5B\xD5J\x8D\x95J5ݼ|\xA9뺮\xD7\xE2\xE2\xE2\xE2\xE2\xE2\xE2\xE2\xE2\xE2bQ\xA3@\x8B\x81\x80\x92ʾ+]\xF8\xF7~\x88\xDFP9\xD4Sٷ\xA1\xFF\xDE\xE3*\x87\x9A\xE2\xB2(\x8BjQ\x8D2\xAAQ+��\x80\x819\xB3\����������������QU\x8B\xAA\xB5ƊM\xA9,\x80\xA2 \xA4\xDEL\x98 \x83\xD0 \x8D褓M\xD34M\xA7i\x92\x86R\x8D\xD2vQm\xC0��\xA3\x94\x80\xA1\xE44\x80��9\xBA\xA5U!\xD4J@B+�� 5h\x90\xD0 ېc\x90\xA3\xA4\x81$\x80\x94\xF3\x9F\xACUG9\xFF\xC9Zu\xAC\x95����\x82\xB1b-\xA7\xDF\xF7kk}\xCE\xA3\xA4\x810\x80\x84\xF3\x8B\xB7w\xE1\xFC\xE2\xED����������\xA8\xBDP\xF4Z) \x91\xCBH\x88\xA3\xA2\x813\x80\
x94\xF3\x9F\xAC=@9\xFF
\xC9\xDA\xAC\xD8
+������\x88M,b1%M\xE9\x8E\x8A
+\xA3\xA4\x816\x80\x94\xF3+\x9F]@9\xBF\xF2\xD9\xAC\x95*B ��@��Ĩ\x8B\xB5\xA0\xF2\xEFw\xA3\xA7\x818\x80|\xF3\xAB\xBC\xC2\xEB\xDF\xFC*\xAF\xF0\xFA\x9E��*����PF\xA9\xD3\xE8Q\xD1,\xB0^KD"\x89D"\xA3\xA4\x81;\x80\x94\xF3+_{\x80r~\xE5k\xB0N\xD6T@ ����\x8C*bDՁX\x88\]��\xA3\xB3\x81>\x80\x8C\xF1ӏԍ\xF1ӏԭ\xCA\x94R\x816\x9B\x8B\xA0\xAA\xF6.\xE5\xF5=\xEA\x8Bwi\xEFk\xD4\xFB+\xEDr\xDE\xEDױ)U\xA3\xB8\x81@\x80\xD4P;\xB5\x84\xAB\xA1vj \xB7\xAET\x93Rdf\xD9`U\x8Cڗ\xC2\xEB\xF4\xE8V\xA7\xDA\xE6K\xFD\xCFU\x9E\xC9\xC7\xE1#\x92ǯ\x92\xD3\xD0\xE1Z��\xA3\xAB\x81C\x80\x84ЛvK\xCB!\xF4\xA6\xDD\xD22\xC5
+m,\x81��\x88vS+3u\xEA\xF1\V\xD3mJ\xDC\xDE"\xCF\xD9\xA3\x85\x81F\x80��\xA3\x85\x81H\x80��\xA3\x85\x81K\x80��\xA3\x85\x81N\x80��\xA3\x85\x81P\x80��\xA3\x85\x81S\x80��\xA3\x85\x81V\x80
+\xA3\x85\x81b\x80\xA3\x85\x81w\x80\xA3\x85\x81\x8C\x80\xA3\x85\x81\xA2\x80\xA3\x85\x81\xB7\x80\xA3\x85\x81̀\xA3\x85\x81\xE2\x80\xA3\x85\x81\xF7\x80\xA3\x85\x81\x80\xA3\x85\x81"\x80\xA3\x85\x817\x80\xA3\x85\x81L\x80\xA3\x85\x81b\x80\xA3\x85\x81w\x80\xA3\x85\x81\x8C\x80\xA3\x85\x81\xA2\x80\xA3\x85\x81\xB7\x80\xA3\x85\x81̀\xA3\x85\x81\xE2\x80\xA3\x85\x81\xF7\x80\xA3\x85\x81\x80\xA3\x85\x81"\x80\xA3\x85\x817\x80\xA3\x85\x81L\x80\xA3\x85\x81b\x80\xA3\x85\x81w\x80\xA3\x85\x81\x8C\x80\xA3\x85\x81\xA2\x80\xA3\x85\x81\xB7\x80\xA3\x85\x81̀\xA3\x85\x81\xE2\x80\xA3\x85\x81\xF7\x80\xA3\x85\x81\x80\xA3\x85\x81"\x80\xA3\x85\x817\x80\xA3\x85\x81L\x80\xA3\x85\x81b\x80\xA3\x85\x81w\x80\xA3\x85\x81\x8C\x80\xA3\x85\x81\xA2\x80\xA3\x85\x81\xB7\x80\xA3\x85\x81̀\xA3\x85\x81\xE2\x80��\xA3\x85\x81\xEE\x80��\xA3\x85\x81\xF0\x80��\xA3\x85\x81\xF3\x80��\xA3\x85\x81\xF6\x80��\xA3\xAE\x81\xF8\x80\x84\x
D0Wm\
x95LB_\xB5U2IT`|\x90 A\x840<\xC9\xF1B\xCB\xE1\xF8\xF8\xF8\xF8\xD8\xF8\xF8\xF88+\xA3\xB1\x81\xFB\x80<\xE3a\xFC\xD1x\xC6\xC3\x{8F1BA6}(""\xA8\x8A\xB1\xA8\xB5\xF2\xBD~\xFD\xFA\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA3\xB4\x81\xFE\x80\xF5G\x83\x82<\xFC\xA1\xFEhP\x90瀿\x93\x96U\xA0v\xEA(q+^V\xD5\xE2\xE2\xE2\xE2\xE2\xE2\xE2\xE2\xE2\xE2\xE2\xE2\xE2\xE2"\xA3ށ��\x80\xCA֏_\x827\xA8v\xAAn\xCC\xFAVDM1\x94\xAD\xBFoP\xEDTݘ\x{16D21A}"|r\xA5\xD5����������������������������@A\x81\xE0\xC5 \xABx%\xAE\x84\x841\xD1h\Bq\x84"D\xA0h\x8A"\x92)"ʈ��\xA3\xA7\x81\x80\xF3e\xC1XN\xA8\xF3e\xC1XN\xA8o ������G\xBB8\xA8ѩD%>8\xA3\xA8\x81\x80\xF3[\xB1`,'\xE4\xC5\xFCV,\xCB \xF9\xC6\xA0����\xA0\xBB]q贡\xC4\xE7\x9C\xA3\xA7\x81\x80\xF3[6$.\x8A\xF9-\x9B
+
+\xEB\x84T\xA8 ����(\xC6b\xB1\xBFt8\x9Cs��\xA3\xA7\x81\x80\xF3[1$6\xC5\xFCVL\x89+\xC1:)\xD4��
+����*\x80\xC1\xBE\xE9p\xE0\x9Cs\xA3\xA7\x81 \x80\xF3[1\xE45(\xE6\xB7b*\xC8k\xB0ND
+ ������\xC0b\xC0`^W\x87\xC39\xA3\xA9\x81#\x80\xF3[u*HT\x86\xF9\xAD:$*ۄ��������V\xAB\xA9b\xEBٶIuI\xA3\xB3\x81&\x80L\xF1\xBB!E\xD2O\xF1\xBB!E\xD2\xEF2\xAB\xDA-XL\xD34J\x81C\xCAF\x8F\xAE\xBC=\x8CV\xDFbS\xAA\xAFcS\xAA'\xF1\x83��\xA3\xB4\x81(\x80\xE4N\x9E\\xEE\xF4\xE7\xC9\xEDz`\x86\x94mv\xD3\xC1jF/{\xAB\xC73\xF98|T\xF2\xB8\բO\xAA\xF3\xECQ\x9D\xFA\x9F\xD7��\xA3@\x91\x81+\x80\xFA\xB5\xDC^\xAE\xC2\xFB:\xDC\xD1{շ\x9D\xC1\x9A\xE2\xD7r{\xB9
+\xEF\xEBpG\xEFU\xDFvk\x8A\xF0IcY����������������\xC0\xBC\xB88\x88\xC6$L\x90h"\x89'&\xF1\xC4$\x9E\x98\xC4I4A¸\xF8\xB8ؘh$\x84\xAF\x8E\xA8\xAA\xE7\xE5˗/_\xBE\xD4\xCB\xF4\xCC\xF1¼X\xCF˗/_\xBE\xACE\x9B\x97\xF9_3\xEC\x97��\x98\x99W\xAF^\xBDz\xF5\xEAիW\xAF^^^^^R��\xA3\x85\x817\x80\xA3\x85\x81L\x80\xA3\x85\x81b\x80\xA3\x85\x81w\x80\xA3\x85\x81\x8C\x80\xA3\x85\x81\xA2\x80\xA3\x85\x81\xB7\x80\xA3\x85\x81̀\xA3\x85\x81\xE2\x80\xA3\x85\x81\xF7\x80\xA3\x85\x81 \x80\xA3\x85\x81 "\x80\xA3\x85\x81 7\x80\xA3\x85\x81 L\x80\xA3\x85\x81 b\x80\xA3\x85\x81 w\x80\xA3\x85\x81 \x8C\x80\xA3\x85\x81 \xA2\x80\xA3\x85\x81 \xB7\x80\xA3\x85\x81 ̀\xA3\x85\x81 \xE2\x80\xA3\x85\x81 \xF7\x80\xA3\x85\x81
+\x80\xA3\x85\x81
+"\x80\xA3\x85\x81
+7\x80\xA3\x85\x81
+L\x80\xA3\x85\x81
+b\x80\xA3\x85\x81
+w\x80\xA3\x85\x81
+\x8C\x80\xA3\x85\x81
+\xA2\x80\xA3\x85\x81
+\xB7\x80\xA3\x85\x81
+̀\xA3\x85\x81
+\xE2\x80\xA3\x85\x81
+\xF7\x80\xA3\x85\x81\x80\xA3\x85\x81"\x80\xA3\x85\x817\x80\xA3\x85\x81L\x80\xA3\x85\x81b\x80\xA3\x85\x81w\x80\xA3\x85\x81\x8C\x80\xA3\x85\x81\xA2\x80\xA3\x85\x81\xB7\x80\xA3\x85\x81̀��\xA3\x85\x81��\xA3\x85\x81ۀ��\xA3\x85\x81ހ��\xA3\xAA\x81\xE0\x80\x84нT8\x8B\xD9C\xE8^*\x9C\xC5\xECq\xA0
+@$MK\xF4\xF2W\xBB/\xFF\xFF\xFF!3>\xA3\xAF\x81\xE3\x80T\xE5\xAD\xE3\xAA*oW\xEB\xEATBfRՀ1\xF6\xF5\xEB\xF3\xFC\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA3\xB0\x81怄\xF5˖]X\xBFl\xD9\xED @U \xA0X\xA8Z\xA9HQ\xF5\xF2\xE5˗/\xEB)\xBD\x8B
+\xA3\xF7\x81\xE8\x80\xCAއ\xEE\xFCO?.\xA4\xF1\xC6W3\x86\xB2\xF7\xA1;\xFFӏi\xBC\xF1Ռ?u\x8BڨF)��L
+U����������������\xB1Vň\xC1(\xC6JJeQ\x80\x99\xD0\x89Q\x983a\xA78\xC5\x91 E\xA4g\xC0R\xFFQZ\xA7\x92\xF769@\xBAa\xAF\xBA7\xBA7\xBAA\xA3\xA4\x81\xF4\x80\x94\xF3+_k\x8Er~\xE5kͱN\xD4TA������E\xACp\xE6VW[\xEB\xAB\xA3\xA4\x81��\x80\x84\xF3+[\xBB\x80p~ek\xB0'\x80������T\x81^\xF5z$\x8A\xA5E^^��\xA3\xA1\x81\x80\x94\xF3+_{\x80r~\xE5k\xB0Y\xA9���� ����\x88U#k+\xA3\xA3\x81\x80\x94\xF3+_\xAB\x8Fr~\xE5k\xF5\xB1NT\xAA ������\x83+\xB27\xE2\xFB\xBEs��\xA3\xA4\x81\x80|\xF3+[;\x80o~ek\xB0\xD2����\xEA\xC0(u=*钑-��\xA3\xA0\x81\x80\x94\xF3+_{\x84r~\xE5k\x8F\xB0YS������������\x8C*bDm��\xA3\xB0\x81\x80\x8C\xF1\xD3w\xDA\xE3\xA7﴿*{PV\xA0\x83\xCD\xC4"\x98\xEA\x8Bw)\xE7=\xEA\x8Bw){\xCD\xE8\xCA[lJ\xF5ulJ\xB6\xA3\xB2\x81\x80\xBC\xD0g\xF7_賀\xFB\xEBj\xAAB\xCA,[\xB1\x82\xB1\xA8\xCA\xF3_\xA7R\x9D\xFA{\xD4\xE4\xE3أ\x92\xD3\xF4\x81\xB4\xD3\xD0\xE1Z��\xA3\xA8\x81\x80\x84\xCE5\x9C\xCD\xE6\xA1s\x8Dg\xB3y
+����\x94h\x82ؘP}\x84\xFEy\xA9/>o\xAF\xA3\x85\x81\x80��\xA3\x85\x81\x80��\xA3\x85\x81\x80��\xA3\x85\x81\x80��\xA3\x85\x81 \x80��\xA3\x85\x81#\x80��\xA3\x85\x81&\x80
+\xA3\x85\x812\x80\xA3\x85\x81G\x80\xA3\x85\x81\\x80\xA3\x85\x81r\x80\xA3\x85\x81\x87\x80\xA3\x85\x81\x9C\x80\xA3\x85\x81\xB2\x80\xA3\x85\x81ǀ\xA3\x85\x81܀\xA3\x85\x81\xF2\x80\xA3\x85\x81+\x80\xA3\x85\x81+\x80\xA3\x85\x81+2\x80\xA3\x85\x81+G\x80\xA3\x85\x81+\\x80\xA3\x85\x81+r\x80\xA3\x85\x81+\x87\x80\xA3\x85\x81+\x9C\x80\xA3\x85\x81+\xB2\x80\xA3\x85\x81+ǀ\xA3\x85\x81+܀\xA3\x85\x81+\xF2\x80\xA3\x85\x81\x80\xA3\x85\x81\x80\xA3\x85\x812\x80\xA3\x85\x81G\x80\xA3\x85\x81\\x80\xA3\x85\x81r\x80\xA3\x85\x81\x87\x80\xA3\x85\x81\x9C\x80\xA3\x85\x81\xB2\x80\xA3\x85\x81ǀ\xA3\x85\x81܀\xA3\x85\x81\xF2\x80\xA3\x85\x81\x80\xA3\x85\x81\x80\xA3\x85\x812\x80\xA3\x85\x81G\x80\xA3\x85\x81\\x80\xA3\x85\x81r\x80\xA3\x85\x81\x87\x80\xA3\x85\x81\x9C\x80\xA3\x85\x81\xB2\x80��\xA3\x85\x81\xBE\x80��\xA3\x85\x81\xC0\x80��\xA3\x85\x81À��\xA3\x85\x81ƀ��\xA3\xAF\x81Ȁ\x8C\xD0G\xF6ΜG\xE8#{gΫ\xFA*\xD0\xD1\xC1\xE2h\
xC34녬\xFF\xB7\xE7\xEB\xD7\xFF\xB4\xF1\xF1\xF1\xF1q\xEB\xEF_\xA3\xB2\x81ˀ<\xE3a\xFC\x9B\xE63ƿiޚ\xA2\x88\x88@U��0\xB5V\xAAm\xBBm۶\xE7\xEE\xEE\xFB\xDC\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF��\xA3\xB2\x81\xF3G\x93\x82<\xFCa\xFEhR\x90瀿\x93\x96U��\xC4U\xBB\xC4E\x90\x830xYU\x8B\x8B\x8B\x8B\x8B\x8B\x8B\x8B\x8B\x8B\x8B\x8B6\xA3Ѐ2\xCAv\xAF_\x827h?\x95F\xC7j\xC6Q\xB6{\xFD\xBCA\xFB\xA94:\xDEP3\xC2'WV����������������������������\xA3\xA8 \x82 @dD2\xF1JH\xE2N\xE8("^EQ\x84EQ$\xF3\x8ED"\xA3\xA7\x81܀\xF3Uu\x833\xD4|\x98\xAF\xAA\x9C\xA1\x86\xE0\x80����\x80\xCD\xD1.6\x95N%*q\xE0\xA3\xA8\x81\xE8\x80\xF3\xB1\xE45(\xE67b)\xC8kpE\xA6P������ԈL\xA7MT\xE2p��\xA3\xA7\x81\xEB\x80\xF3\xB1\xE4-(\xE67b)\xC8[\xB0NH\xA1(����(\xAA̟\x9Cs\xA3\xA9\x81\xEE\x80\xF3\xB6\xE4-P\xCCo\xD8R\x90\xB7P\xC0:\xA9P(����(\xD6b\xD1/:\xB8\xB3s\xA3\xA9\x81\xF0\x80\xF3\xB1\xE4%D\xF3\xB1\xE4%D\xAC\x91BP����PE0\x98\xD7\xD5\xE1p\xEE|v\xA
3\xA9\x81\xF3\x80\xF3[u\xC1
XNH\x87\xF9\xAD\xBA`,'\xA4\x9B0@����������\xD3\xC1jW\xB1\xF5lۤm\x9B>\xA3\xB4\x81\xF6\x80L\xF1\xFB!\xB5ԟ\xE2\xF7Cj\xA9\xBF\xCB0\x94U\xAB\x8Bi\x9AfBI-e\xAFQ\xF3+ecFW^ǦT_\xC7kN\xA2}��\xA3\xB3\x81\xF8\x80\xE4N;\xB9\xDC\xE9o'\xB7\xF5\x96R6\xD4\xEAh\xAAa\xA4gh\xD23\xD5\xE3\x99|\\xAEJ\x87\x8Fj\xD1'\xD5\xE3Z\xE5i\xD1\xFF\xB8\xA3@\x8A\x81\xFB\x80\xFA\xB5\xDC^\xAE\xC2{w\xBC<\xF2\xD7\xCE`M\xF1k\xB9\xBD\\x85\xF7\xEExy䯝\xC1\x9A"|\x92Ū������������������\x80\xFB%#ј\xF8\x89&\x92h"\x89&\x92h"\x89&\x92h"\x89&H\x98 >.>&6+\xC2c\xA0\xAA\xAA\xEA\xE5˗/_\xBEԫ`f^\x98\xEBy\xF9\xF2\xE5˗/\xB9_^\xBCyqQ\xD9\xB0_^^^^^^^^^^^<\xA3\x85\x81\x80\xA3\x85\x81\x80\xA3\x85\x812\x80\xA3\x85\x81G\x80\xA3\x85\x81\\x80\xA3\x85\x81r\x80\xA3\x85\x81\x87\x80\xA3\x85\x81\x9C\x80\xA3\x85\x81\xB2\x80\xA3\x85\x81ǀ\xA3\x85\x81܀\xA3\x85\x81\xF2\x80\xA3\x85\x81\x80\xA3\x85\x81\x80\xA3\x85\x812\x80\xA3\x85\x81G\x80\
xA3\x85\x81\\
x80\xA3\x85\x81r\x80\xA3\x85\x81\x87\x80\xA3\x85\x81\x9C\x80\xA3\x85\x81\xB2\x80\xA3\x85\x81ǀ\xA3\x85\x81܀\xA3\x85\x81\xF2\x80\xA3\x85\x81\x80\xA3\x85\x81\x80\xA3\x85\x812\x80\xA3\x85\x81G\x80\xA3\x85\x81\\x80\xA3\x85\x81r\x80\xA3\x85\x81\x87\x80\xA3\x85\x81\x9C\x80\xA3\x85\x81\xB2\x80\xA3\x85\x81ǀ\xA3\x85\x81܀\xA3\x85\x81\xF2\x80\xA3\x85\x81\x80\xA3\x85\x81\x80\xA3\x85\x812\x80\xA3\x85\x81G\x80\xA3\x85\x81\\x80\xA3\x85\x81r\x80C\xB6u����������\xC6\xE7\x82\x87\xA3\x85\x81����\x80\xA3\x85\x81��\x80��\xA3\x85\x81��!\x80��\xA3\x85\x81��$\x80��\xA3\x85\x81��'\x80��\xA3\x98\x81��)\x80tЅ\xF5ta\xBD\x98����������\x9A\xD0\xA3\xB1\x81��,\x80T\xE5\x9D\xE3\xAA*\xEFW\xEB\xEATBf&\xABP#Ƽ~\xFD\xFA\xF5\xEBs\xF7\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA3\xB1\x81��/\x80\x84\xF5˖]X\xBFl\xD9\xED @U \xA0Xh\xB5R#E\xD5˗/_\xBE\xAC*\xBD\x8BE\xA3\xEB\x81��1\x80\xD2\xC9^6\xBC\xF3|\xF3 \xE3M\x
E0\x9D\xECe\xC3;\xCF7
\x910\xDEn\xCD\xF8\x91Q\x8DjT\xA3U������������������P����\xB1V\xC5k,&\xA5\xB2(��E
+\xBDj\x89\x990\x9DЉ\xE9\xA4\xD3t\x9AN\x9A\xA6iҘv\x80��&\x80 `\x80��\xA3\xA4\x81��=\x80\x94\xF3+\x9F\xDD@9\xBF\xF2\xD9+\xACF\xD4T(@ ��"*b\x85)i\xCA\xD9\xF9\x909\xA3\xA3\x81��I\x80\x84\xF3+[\xBB\x80p~ek\xB0'\x80��������\xAA@/\x8Cz=\xC5\xE2\x9CK6\xA3\xA2\x81��L\x80\x94\xF3+[\xBB\x81r~ek7\xB0Y\xA9��������bE\xC4b\xCD\xD1��\xA3\xA3\x81��O\x80\x94\xF3+_\xBB\x81r~\xE5k7\xB0Q\xA9\x82������1X\xB1"\x83AՇ3E\xA3\xA3\x81��Q\x80|\xF3+[\xBB\x80o~ek\xB0'\x80������ԁQ\xEA4zT\x8B\xC9\xA3\xA0\x81��T\x80\x94\xF3+_{\x80r~\xE5k\xB0YS ��������\x80QE\x8C\xD8x\xA3\xAF\x81��W\x80\x8C\xF1\xD3w\xDA\xE3\xA7ﴷ*{PV\xA0\x83\xCD\xC4"\x98\xEA\x8Bw)\xE7=\xAA\xF6.ecFW\xDEbS\xAA\xAFc\xA3Y\x86\xA3\xB5\x81��Y\x80\xAC\xD0\xFE\xAD\xD0\xFE-$U\x8E\xC6&\xA2\x84A\xA0\xB6m\x93\xEEu*\x8F6i\xD3t\xAF=\x9E\xFD/W%\x8F\xD3\x92\xD3\xD0\xE1Z��\xA3\xA8\x81��\\x80|\xD0\xB6\xF4\x86-ŁF������IFb#>\x9D\xFA\xE4џ\x97\xA3\x85\x81��_\x80��\xA3\x85\x81��a\x80��\xA3\x
85\x81��d\x80��\xA3\x85\x81��g\x80��\xA3\x
85\x81��i\x80��\xA3\x85\x81��l\x80��\xA3\x85\x81��o\x80
+\xA3\x85\x81��{\x80\xA3\x85\x81��\x90\x80\xA3\x85\x81��\xA5\x80\xA3\x85\x81��\xBB\x80\xA3\x85\x81��Ѐ\xA3\x85\x81��\xE5\x80\xA3\x85\x81��\xFB\x80\xA3\x85\x81\x80\xA3\x85\x81%\x80\xA3\x85\x81;\x80\xA3\x85\x81P\x80\xA3\x85\x81e\x80\xA3\x85\x81{\x80\xA3\x85\x81\x90\x80\xA3\x85\x81\xA5\x80\xA3\x85\x81\xBB\x80\xA3\x85\x81Ѐ\xA3\x85\x81\xE5\x80\xA3\x85\x81\xFB\x80\xA3\x85\x81\x80\xA3\x85\x81%\x80\xA3\x85\x81;\x80\xA3\x85\x81P\x80\xA3\x85\x81e\x80\xA3\x85\x81{\x80\xA3\x85\x81\x90\x80\xA3\x85\x81\xA5\x80\xA3\x85\x81\xBB\x80\xA3\x85\x81Ѐ\xA3\x85\x81\xE5\x80\xA3\x85\x81\xFB\x80\xA3\x85\x81\x80\xA3\x85\x81%\x80\xA3\x85\x81;\x80\xA3\x85\x81P\x80\xA3\x85\x81e\x80\xA3\x85\x81{\x80\xA3\x85\x81\x90\x80\xA3\x85\x81\xA5\x80\xA3\x85\x81\xBB\x80\xA3\x85\x81Ѐ\xA3\x85\x81\xE5\x80\xA3\x85\x81\xFB\x80��\xA3\x85\x81\x80��\xA3\x85\x81 \x80��\xA3\x85\x81\x80��\xA3\x85\x81\x80��\xA3\xAD\x81\x80\x84\xD0I\xFF\xD23q\x9D\x
F4/=\xC7U\x
81\xC6\xC6[\x81\xBC\x9D\xF5\x91\xF1\xF1\xF1\xF1\xF1\xF1\xF1\xF1\xF1\xF1\xF1\xF1\xF1\xF1q\xA3\xB3\x81\x80<\xE3a\xFC\xD1x\xC6\xC3\xF8\xA3qk\x8A""`U\x8CU#ڶ۶m{\xEE\xEE\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xBF\xA3\xB5\x81\x80\xF5G\x83\x82<\xFC\xA1\xFEhP\x90\xA7\x80\xBF\x93\x96UE\xC4A\xD5Q\xE2"\xC8A\xBC\xAC\xAA\xC5\xC5\xC5\xC5\xC5\xC5\xC5\xC5\xC5\xC5\xC5\xC5\xC5\xC5\xC5E\xA3\x802\xCA6\xAF߂\xE8:U6N\xF7\x86\x9A\xE2(ۼ~>\xA0\xEBT\xD98\xDDj\x8A\xF0\xE6\xCAj����������������������������\xA0
+ \x82 "dE\x95P\x89\x93(\xB1\x84\xA4:z衇:\x8A\xA2\x88Hf$\xA3\xA7\x81%\x80\xF3\xB1\xE05^\xCCoĂ3\xD4P\xF8&+����������\x8B\xCD.*\x9DJT\xE2��\xA3\xA7\x811\x80\xF3\xB1\xE45(\xE67b)\xC8kp\x85*@��������j\xC1t\xDAD%\xA3\xA6\x814\x80\xF3[1\xE4-(\xE6\xB7b*\xC8[\xB0NH\xA1�� ����((\xF3gG\xA3\xA7\x817\x80\xF3[6$.\xC5\xFC\x96M\x89\xC1\x91
+u\x80��������\xB5(\xB6\xBA\xA2\xA4\x8Fs\xA3\xA8\x819\x80\xF3u*\xC8K0\xCCoԩ /!\xC0*f\x80��������\xD3\xC1\xC1\x8E#\xAF\xAB\xCB\xE1\xA3\xA9\x81<\x80\xF3[u\xC1XvH\x87\xF9\xAD\xBA`,;\xA4\x9B0@����������\xD3\xC1nU\xB1\xF5lۤ\xADf��\xA3\xB3\x81?\x80L\xF1\xFB\x813RM\xF1\xFB\x813R\xED2e\xD5j\xC1b\x9A\xA6\x99P\x92CK\xD9k\xD4\xFCJ٘\xD1\xEA[lJ\xF5ul\xB0z\xA3\xB5\x81A\x80\xE4\xCE!Oag\xB9s\xC8S\xD8\xD9\xD6XJ\xA9iw\xB4a5h\x9B\xA6$\xDDT\x8FJN\xCB\xE9\xE4qx\x9E\xFDKu\xAE=\xAAS\xFFS��\xA3@\x91\x81D\x80\xFA\xB5\\xB7\xE1#\xE1\x8E\xD9\xD75ů\xE5\xBA} w|Ⱦ\xF6\xA8)\xB6Sc������������������@\xA5RM۴\x9DhLlL|\x82\x84\x89$\x9A\x98DI<\x91DI4\x91D$L\x89\xA1\xF4\xF9\xF22\xF3\xBFz\xF5\xEAիcf jqqq\xB1\xAA\xAA\xBD+<g\xE6իW\xAF\x8E\x97\x97\x97\x97\x97\x97\x97\x97\x97\x97\x97\x97\x97\x97\x97\x97\x97\x97\x97\x97\x97\x97\x97\xA3\x85\x81P\x80\xA3\x85\x81e\x80\xA3\x85\x81{\x80\xA3\x85\x81\x90\x80\xA3\x85\x81\xA5\x80\xA3\x85\x81\xBB\x80\xA3\x85\x81Ѐ\xA
3\x85\x81\xE5\x80\xA3\
x85\x81\xFB\x80\xA3\x85\x81\x80\xA3\x85\x81%\x80\xA3\x85\x81;\x80\xA3\x85\x81P\x80\xA3\x85\x81e\x80\xA3\x85\x81{\x80\xA3\x85\x81\x90\x80\xA3\x85\x81\xA5\x80\xA3\x85\x81\xBB\x80\xA3\x85\x81Ѐ\xA3\x85\x81\xE5\x80\xA3\x85\x81\xFB\x80\xA3\x85\x81\x80\xA3\x85\x81%\x80\xA3\x85\x81;\x80\xA3\x85\x81P\x80\xA3\x85\x81e\x80\xA3\x85\x81{\x80\xA3\x85\x81\x90\x80\xA3\x85\x81\xA5\x80\xA3\x85\x81\xBB\x80\xA3\x85\x81Ѐ\xA3\x85\x81\xE5\x80\xA3\x85\x81\xFB\x80\xA3\x85\x81\x80\xA3\x85\x81%\x80\xA3\x85\x81;\x80\xA3\x85\x81P\x80\xA3\x85\x81e\x80\xA3\x85\x81{\x80\xA3\x85\x81\x90\x80\xA3\x85\x81\xA5\x80\xA3\x85\x81\xBB\x80\xA3\x85\x81Ѐ\xA3\x85\x81\xE5\x80��\xA3\x85\x81\xF1\x80��\xA3\x85\x81\xF4\x80��\xA3\x85\x81\xF7\x80��\xA3\xA4\x81\xF9\x80\x84P됂B\xADC
+vĪ \x80@����\xD0p\xC4P\xAB\xD5z\xC2\xEA?J��\xA3\xB1\x81\xFC\x80T\xE5\x9D\xE3\xAA*\xEFW\xEB\xEATBf&\xABP#Ƽ~\xFD\xFA\xF5\xEBs\xF7\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA3\xB1\x81\xFF\x80\x84\xF5˖]X\xBFl\xD9\xED @U \xA0Xh\xB5R#E\xD5˗/_\xBE\xAC*\xBD+��\xA3\xEB\x81\x80\xD2\xC9^6\xBC\xF1|\xEB \xE3K\xE0\x9D\xECe\xC3Ϸ\x910\xBEn\xCD\xF8\x83\x8C\x8Cڨ\x8DjT\xA3
+��\xA0
+��������������������b\xACc\x8C\xB1`1)\x95E@(R\xE8UK̄A\xE8\x84N\xF4H'\x9D\xA6\xD3t\x9A\xA6i\x9A4\xE6\xF4\x9F@@@����\xA3\xA3\x81+\x80\x94\xF3+_{\x80r~\xE5k\xB0QS\x81������\x80\x88\x99\x92\xA6\xCE9\xE7��\xA3\xA3\x81\x80\x84\xF3+[\xBB\x85p~ek\xB7\xB0'\x80@������\x80*\xD0+F\xBD^\xAAh\x88��\xA3\xA0\x81\x80\x94\xF3+_{\x84r~\xE5k\x8F\xB0Y\xA9��������������bՈAm��\xA3\xA0\x81\x80\x94\xF3+_{\x80r~\xE5k\xB0Q\xA9������������b\xB0bE}\xA3\xA1\x81!\x80\x84\xF3+\x9D@8\xBF\xD2\xD9\xEC ��������������u\xA0\x97:\x9D\xC5\xA3\xA0\x81$\x80\x94\xF3+_{\x84r~\xE5k\x8F\xB0YS������������\x8C*bD\xE3\xA3\xAF\x81'\x80\x8C\xF1\xD3w\xDA\xE3\xA7ﴷ*{PV\xA0\x83\xCD\xC4"\x98\xEA\x8Bw)\xE7=ꋯ\x94\x8D]y\x8BM\xA9\xBE\x8E+\xE65\xA3\xB0\x81)\x80\xAC\xD0\xF7W苀\xFBe\xE5\xD8D#\xC7FԭFۤ\xBDWyZ\xF4\xFF\xB2R\xC9\xE3rU\xF2\xB8HNS\xA3\xA7\x81,\x80\x84\xCE-u8\x8B\xEC\xA1sK\xCE"\xFB"������P4\x9A\x98xɪ\xD3mT\x9E//\xE5\xD3\xA3\x85\x81/\x80��\xA3\x85\x811\x80��\
xA3\x85\x814\x80��\xA3\x85\x817\x80��\xA3\x85\x81
9\x80��\xA3\x85\x81<\x80��\xA3\x85\x81?\x80
+\xA3\x85\x81K\x80\xA3\x85\x81`\x80\xA3\x85\x81u\x80\xA3\x85\x81\x8B\x80\xA3\x85\x81\xA0\x80\xA3\x85\x81\xB5\x80\xA3\x85\x81ˀ\xA3\x85\x81\xE0\x80\xA3\x85\x81\xF5\x80\xA3\x85\x81 \x80\xA3\x85\x81 \x80\xA3\x85\x81 5\x80\xA3\x85\x81 K\x80\xA3\x85\x81 `\x80\xA3\x85\x81 u\x80\xA3\x85\x81 \x8B\x80\xA3\x85\x81 \xA0\x80\xA3\x85\x81 \xB5\x80\xA3\x85\x81 ˀ\xA3\x85\x81 \xE0\x80\xA3\x85\x81 \xF5\x80\xA3\x85\x81
+\x80\xA3\x85\x81
+ \x80\xA3\x85\x81
+5\x80\xA3\x85\x81
+K\x80\xA3\x85\x81
+`\x80\xA3\x85\x81
+u\x80\xA3\x85\x81
+\x8B\x80\xA3\x85\x81
+\xA0\x80\xA3\x85\x81
+\xB5\x80\xA3\x85\x81
+ˀ\xA3\x85\x81
+\xE0\x80\xA3\x85\x81
+\xF5\x80\xA3\x85\x81\x80\xA3\x85\x81 \x80\xA3\x85\x815\x80\xA3\x85\x81K\x80\xA3\x85\x81`\x80\xA3\x85\x81u\x80\xA3\x85\x81\x8B\x80\xA3\x85\x81\xA0\x80\xA3\x85\x81\xB5\x80\xA3\x85\x81ˀ��\xA3\x85\x81׀��\xA3\x85\x81ـ��\xA3\x85\x81܀��\xA3\x85\x81߀��\xA3\xAE\x81င\xD0ͤ\xE2\xBCs\xDDL*\xCE;\xAF\xD2G\x88\x89\x83\x8A!\xFD:R\x86\xE3\xE3\xE3\xE3\xE3\xE3\xE3\xE3\xE3\xE3\xE3\xE3\xE3\xE3\xE3\xA3\xB3\x81\xE4\x80<\xE3a\xFCQ<\xE3a\xFCQܚ\xA2\x88\x88\xC0\xAA+\xAAV\xAA\xEDv۶m\xCF\xDD\xFD\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA3\xB4\x81\xE7\x80\xF5G\x83\x82<\xFC\xA1\xFEhP\x90\xA7\x80\xBF\x93\x96U\xA0\x888(\x8EA\xC2\xE0eU-..............ڣف\xE9\x802\xCAv\xAF߂\xE88U6v\xF7\x86\x9A\xE2(۽~>\xA0\xE3T\xD9\xD8\xDDj\x8A\xF0\xE6\xCAj��������������������������\xA0
+ \x82 "dE\x95P\x89\x93\x90XB\xA2\xA3\x87z衣\xA1(\x8A\x88dF"\xA3\xA7\x81\xF5\x80\xF3Ue\x833\xD4P\xE80_U68C+\x85n\xD2����������\xB09\xD8\xC5A\xA5S\x89J\xA3\xA6\x81\x80\xF3[\xB1`,7\xA4\xC5\xFCV,\xCB+\xE9\x99B��������\x80D\xD4t\xDAD%\xA3\xA6\x81\x80\xF3\xB6\xC1Z(\xB4\x98߰+\xCE\xD0B\xA1\xEB\x84T\xA8��������((\xFD\xA3\xC3\xA3\xA6\x81\x80\xF3[\xB6`,7\xE4\xC5\xFC\x96-\xCB+\xF9\x91
+u\x80����������\x8AU[]ъ\xA3\xA8\x81 \x80\xF3Uu\x833\x94 >\xCCW\xD5+\xCEP\x82\xF8*��\x80����`:8\xD8\xD5\x87\xD7\xD5\xE1p��\xA3\xA9\x81\x80\xF3[u\xC1XNH\x87\xF9\xAD\xBA`,'\xA4\x9B0@����������\xD3\xC1nW\xB1\xF5lۤ\xADf��\xA3\xB3\x81\x80L\xF1\xBB!E\xD2O\xF1\xBB!E\xD2\xEF2\xD5j\xC1b\x9A\xA6\x99P
+:PΘѕ\xB7\xD8h\xF5-vf\xFBul\xB0\xE6$:\xA3\xB3\x81\x80\xDC\xCE1\x9E\xDC\xED\xE3\xC9m\xBD\x81\xA5\x94\xEC\xEA\xA8V=\x9B\xA6\xAAѦzTr]\xAEJ\x87\xE7i\xD1\xFFT\xE7Z\xA5>\xD1\xFF\xB8\xA3\xFA\x81\x80\xFA\xB5\xBC]\xB7\xDCٿ\xA3s\xD7/\xD4\xBF\x96\xB7\xEB\x96;\xFBwt\xEE\xFA\x85\x9A"9XV��������������������`q\xB1mڦ\xDB\xE9\xF6\xE8٣g\xA7ۣۣg\xA7g\x8F\x9E=z\xF6\xE8\xF6\xE8v\xBA\x9Dn\xA7۴M\xDBT*\x90\x9A\xF9_\xBDz\xF5\xEAիW\xAF\x8E\x81\xA8z^\xBE|\xF9\xF2\xA5^Up\xBF\xBC\xBC\xBC\xBC\xBC\x8B\x8B��\xA3\x85\x81 \x80\xA3\x85\x815\x80\xA3\x85\x81K\x80\xA3\x85\x81`\x80\xA3\x85\x81u\x80\xA3\x85\x81\x8B\x80\xA3\x85\x81\xA0\x80\xA3\x85\x81\xB5\x80\xA3\x85\x81ˀ\xA3\x85\x81\xE0\x80\xA3\x85\x81\xF5\x80\xA3\x85\x81+\x80\xA3\x85\x81+ \x80\xA3\x85\x81+5\x80\xA3\x85\x81+K\x80\xA3\x85\x81+`\x80\xA3\x85\x81+u\x80\xA3\x85\x81+\x8B\x80\xA3\x85\x81+\xA0\x80\xA3\x85\x81+\xB5\x80\xA3\x85\x81+ˀ\xA3\x85\x81+\xE0\x80\xA3\x85\x81+\xF5\x80\xA3\x85\x81\x80\xA3
\x85\x81 \x80\xA3\x85\x815\x80\xA3\x85\x81K\x80\xA3\x85\x81`\x80\xA3\x85\x81u\x80\xA3\x85\x81\x8B\x80\xA3\x85\x81\xA0\x80\xA3\x85\x81\xB5\x80\xA3\x85\x81ˀ\xA3\x85\x81\xE0\x80\xA3\x85\x81\xF5\x80\xA3\x85\x81\x80\xA3\x85\x81 \x80\xA3\x85\x815\x80\xA3\x85\x81K\x80\xA3\x85\x81`\x80\xA3\x85\x81u\x80\xA3\x85\x81\x8B\x80\xA3\x85\x81\xA0\x80\xA3\x85\x81\xB5\x80��\xA3\x85\x81\xC1\x80��\xA3\x85\x81Ā��\xA3\x85\x81ǀ��\xA3\xA0\x81ɀ\x84\xD0\xA0xD\xFD��\x8AGā��\x81@��:\xC1\xA5\xB5c`"\xA3\xAF\x81̀T\xE5\xAD\xE3\xAA*oW\xEB\xEATBfRՀ1\xF6\xF5\xEB\xF3\xFC\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xF7\xA3\xB1\x81π\x84\xF5˖]X\xBFl\xD9\xED @U \xA0Xh\xB5R#E\xD5˗/_\xBE\xAC*\xBD+E\xA3\xEC\x81рR\xCA>\x87n|\xEF:D\xC2\xF8\x86\xB85\xC5R\xF69t\xE3{\xD7!\xC67\xB4\xC0\xAD)\xBE\xA0\xDDng&��@�� ������������������\xC4\xEA`\xB1[\xEDvGGG\x8B\xDDH\xA9,
+��BQ\x85)\xA6\xC2B\x98\x83Љ\xE9\xA4\xD3t\x9AN\xD34M#kx\xBF\x87����\xA3\xA2\x81݀\x94\xF3_\x98UG9\xFF\x85Yu\xACF\xD4TA������# \xF5]\xE2;_Q��\xA3\xA4\x81逄\xF3+];\x84p~\xA5k\x87\xB0'\x80@������\x80:\xD0+:\xA3Uj\x9D\x9DAD��\xA3\xA2\x81쀔\xF3+_{\x80r~\xE5k\xB0Y\xA9\x80����������bՈ*ǘ1\xA3\xA1\x81\xF3+_\xBB\x81r~\xE5k7\xB0Q\xA9\x82����������b\xB0b1i}\xE7\xA3\xA1\x81\xF1\x80|\xF3+[\xBB\x80o~ek\xB0'��������������ԁQ\xEA4zT\xA3\xA0\x81\xF4\x80\x94\xF3+_{\x81r~\xE5k/\xB0YS������������D1\xA2\xF1��\xA3\xB0\x81\xF7\x80\x8C\xF1\xD3w\xDA\xE3\xA7ﴷ*{PV\xA0\x83\x83\x89E0U\xED]\xCAy\x8F\xFA\xE2+ecFW^ǦT_\xC7\xF3:��\xA3\xB2\x81\xF9\x80\xBC\xD0g\x84\xFB/\xF4\xE1\xFE\xAD\xA9
+(U\xADE\xACQ\xE9\xEAT\xDBh\xEF=\xAAE\xFF\xAF=\xAA\xA5\xFErU\xF2\xB8\\x95v\x9A>p+\xA3\xA6\x81\xFC\x80\x84Γ
+8\xEB\xCDC\xE7I\x9C\xF5櫴a����������\xB5Y\xAD\x86բ\xB7\xF4\xAB\xA3\x85\x81\xFF\x80��\xA3\x85\x81\x80��\xA3\x85\x81\x80��\xA3\x85\x81\x80��\xA3\x85\x81 \x80��\xA3\x85\x81\x80��\xA3\x85\x81\x80
+\xA3\x85\x81\x80\xA3\x85\x810\x80\xA3\x85\x81E\x80\xA3\x85\x81[\x80\xA3\x85\x81p\x80\xA3\x85\x81\x85\x80\xA3\x85\x81\x9B\x80\xA3\x85\x81\xB0\x80\xA3\x85\x81ŀ\xA3\x85\x81ۀ\xA3\x85\x81\xF0\x80\xA3\x85\x81\x80\xA3\x85\x81\x80\xA3\x85\x810\x80\xA3\x85\x81E\x80\xA3\x85\x81[\x80\xA3\x85\x81p\x80\xA3\x85\x81\x85\x80\xA3\x85\x81\x9B\x80\xA3\x85\x81\xB0\x80\xA3\x85\x81ŀ\xA3\x85\x81ۀ\xA3\x85\x81\xF0\x80\xA3\x85\x81\x80\xA3\x85\x81\x80\xA3\x85\x810\x80\xA3\x85\x81E\x80\xA3\x85\x81[\x80\xA3\x85\x81p\x80\xA3\x85\x81\x85\x80\xA3\x85\x81\x9B\x80\xA3\x85\x81\xB0\x80\xA3\x85\x81ŀ\xA3\x85\x81ۀ\xA3\x85\x81\xF0\x80\xA3\x85\x81\x80\xA3\x85\x81\x80\xA3\x85\x810\x80\xA3\x85\x81E\x80\xA3\x85\x81[\x80\xA3\x85\x81p\x80C\xB6u����������\xEF\xE7\x82'\xA3\x85\x81����\x80\xA3\x85\x81��\x80��\xA3\x85\x81��"\x80��\xA3\x85\x81��$\x80��\xA3\x85\x81��'\x80��\xA3\x85\x81��*\x80��\xA3\xB2\x81��,\x80|Л\x8A+\xCC\xFC
AoZ(60s\xB2 \xA
2 ccCn\x8D,@\xBEx\xF1\xE2E\xE6\x{E0C34F}\x8F\x8F\x8F\x8F\x8F\x8F\xA3\xB2\x81��/\x80<\xE3a\xFC\xD1x\xC6\xC3\xF8\xA3qk\x8A""PcEՈ\xB6\xED\xB6m\xDB\xFE\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF+\xA3\xB5\x81��2\x80\xF5G\x83\x82<\xFC\xA1\xFEhP\x90\xA7\x80\xBF\x93\x96U\xA0\x888\x988J\9\x83\x97U\xB5\xB8\xB8\xB8\xB8\xB8\xB8\xB8\xB8\xB8\xB8\xB8\xB8\xB8\xB8h\xA3ہ��4\x802\xCAv\xAF߂\xA88\xB7v\xF7\x86\x9A\xE2(۽~>\xA0\xE2T\xDC\xDA\xDDj\x8A\xF0\xB1\xB2����������������������������\xA8\x82 \x84HYQ%T\xE2JHTѰG\xDB\xE8衇\x8E\x8E\x8E\x8EF\xA3\x91$\x91HD��\xA3\xA7\x81��@\x80\xF3Uu\x833\xD4|\x98\xAF\xAA\x9C\xA1\x86\xE0\x9B4@����������lv\xB1\xA9t*Q\x89\xA3\xA7\x81��L\x80\xF3\xB1\xC1jZ\xCCo\xC4g\xA8!\xE8\x99B��������\x80D0\x9D6Q\x89\xA3\xA5\x81��O\x80\xF3\xB1\xC1Z\x88-\xE67b\x833\xB4\xBBNH\xA1��������PP\xE6\x8F\xA3\xA6\x81��R\x80\xF3[\xB6`,7\xE4\xC5\xFC\x96-\xCB+\xF9\x91
+u\x80����������\x8AU[]ъ\xA3\xA7\x81��T\x80\xF3Uu\x833\x94 :\xCCW\xD5+\xCEP\x82\xE8*��������\xC0tp\xB0\xE3\x80\xC3\xEB\xEAp��\xA3\xA9\x81��W\x80\xF3[u\xC1XNH\x87\xF9\xAD\xBA`,'\xA4\x9B0@����������\xD3\xC1nW\xB1\xF5lۤ\xADf��\xA3\xB4\x81��Z\x80L\xF1\xBB!E\xD2O\xF1\xBB!E\xD2\xEF2Y\xBB\x81\xC54M3\xA18t\xA0\x9C1\xA3+o\xB1\xD1\xEA[\xEC\xBC\xDBچ֜\xC4\xA3\xB3\x81��\\x80\xDC\xCE1\x9E\xDC\xED\xE3\xC9m\xBD\x81\xA5\x94-VuT\xABE\xBA:m5\xDAT\x8FJ\xAE\xCBU\xC9\xE3\xF0<-\xFA\x9F\xEAq\xADR_\xEA\\xA3\xE3\x81��_\x80\xB6|]\x9Ezv4__\xA8)\x86-_\x97\x83\xA7\x9E\xCD\xD7j\x8A\xB2\xAC\x98��������������������\xD8///2\xD7˗/_\xBE|\xF9\xB2
+f\xFEcF\xA8z^\xBE|\xF9\xF2\xE5˗U\x8B\xF6\xCBˋ\xBC̼z\xF5\xEAիW\xAFfff\xE6\xE5\xE5\xC5
\ No newline at end of file
Added: branches/safari-612.1.5-branch/LayoutTests/platform/mac-bigsur/media/media-source/media-source-webm-vorbis-partial-expected.txt (0 => 273799)
--- branches/safari-612.1.5-branch/LayoutTests/platform/mac-bigsur/media/media-source/media-source-webm-vorbis-partial-expected.txt (rev 0)
+++ branches/safari-612.1.5-branch/LayoutTests/platform/mac-bigsur/media/media-source/media-source-webm-vorbis-partial-expected.txt 2021-03-03 03:09:07 UTC (rev 273799)
@@ -0,0 +1,20 @@
+
+RUN(audio.src = ""
+EVENT(sourceopen)
+RUN(source.duration = loader.duration())
+RUN(sourceBuffer = source.addSourceBuffer(loader.type()))
+RUN(sourceBuffer.appendBuffer(loader.initSegment()))
+EVENT(update)
+Divide the first media segment in two.
+RUN(partial1 = loader.mediaSegment(0).slice(0, 280))
+RUN(partial2 = loader.mediaSegment(0).slice(280))
+Append a partial media segment.
+RUN(sourceBuffer.appendBuffer(partial1))
+EVENT(update)
+Complete the partial media segment.
+RUN(sourceBuffer.appendBuffer(partial2))
+EVENT(update)
+EXPECTED (sourceBuffer.buffered.length == '1') OK
+EXPECTED (sourceBuffer.buffered.end(0) > '1') OK
+END OF TEST
+
Added: branches/safari-612.1.5-branch/LayoutTests/platform/mac-bigsur/media/media-source/media-source-webm-vorbis-partial.html (0 => 273799)
--- branches/safari-612.1.5-branch/LayoutTests/platform/mac-bigsur/media/media-source/media-source-webm-vorbis-partial.html (rev 0)
+++ branches/safari-612.1.5-branch/LayoutTests/platform/mac-bigsur/media/media-source/media-source-webm-vorbis-partial.html 2021-03-03 03:09:07 UTC (rev 273799)
@@ -0,0 +1,60 @@
+<!DOCTYPE html> <!-- webkit-test-runner [ UseGPUProcessForMediaEnabled=false ] -->
+<html>
+<head>
+ <title>media-source-webm</title>
+ <script src=""
+ <script src=""
+ <script>
+ var loader;
+ var source;
+ var sourceBuffer;
+
+ function loaderPromise(loader) {
+ return new Promise((resolve, reject) => {
+ loader._onload_ = resolve;
+ loader._onerror_ = reject;
+ });
+ }
+
+ window.addEventListener('load', async event => {
+ try {
+ window.audio = document.querySelector('audio');
+ loader = new MediaSourceLoader('content/test-48kHz-vorbis-manifest.json');
+ await loaderPromise(loader);
+
+ source = new MediaSource();
+ run('audio.src = ""
+ await waitFor(source, 'sourceopen');
+ waitFor(audio, 'error').then(failTest);
+
+ run('source.duration = loader.duration()');
+ run('sourceBuffer = source.addSourceBuffer(loader.type())');
+ run('sourceBuffer.appendBuffer(loader.initSegment())');
+ await waitFor(sourceBuffer, 'update');
+
+ consoleWrite('Divide the first media segment in two.');
+ run('partial1 = loader.mediaSegment(0).slice(0, 280)');
+ run('partial2 = loader.mediaSegment(0).slice(280)');
+
+ consoleWrite('Append a partial media segment.')
+ run('sourceBuffer.appendBuffer(partial1)');
+ await waitFor(sourceBuffer, 'update');
+
+ consoleWrite('Complete the partial media segment.')
+ run('sourceBuffer.appendBuffer(partial2)');
+ await waitFor(sourceBuffer, 'update');
+
+ testExpected('sourceBuffer.buffered.length', '1');
+ testExpected('sourceBuffer.buffered.end(0)', '1', '>');
+
+ endTest();
+ } catch (e) {
+ failTest(`Caught exception: "${e}"`);
+ }
+ });
+ </script>
+</head>
+<body>
+ <audio controls></video>
+</body>
+</html>
Modified: branches/safari-612.1.5-branch/Source/WebCore/ChangeLog (273798 => 273799)
--- branches/safari-612.1.5-branch/Source/WebCore/ChangeLog 2021-03-03 03:09:02 UTC (rev 273798)
+++ branches/safari-612.1.5-branch/Source/WebCore/ChangeLog 2021-03-03 03:09:07 UTC (rev 273799)
@@ -1,5 +1,67 @@
2021-03-02 Alan Coon <[email protected]>
+ Cherry-pick r273513. rdar://problem/74953307
+
+ [Cocoa] Appending a partial segment of a WebM audio file results in no additional samples
+ https://bugs.webkit.org/show_bug.cgi?id=222407
+ <rdar://74610383>
+
+ Reviewed by Eric Carlson.
+
+ Source/WebCore:
+
+ Test: media/media-source/media-source-webm-vorbis-partial.html
+
+ When appending a partial WebM segment, it can occur that the parser is mid-way through
+ parsing a Block or SimpleBlock, and is waiting for enough data to be appended to construct a
+ full sample. However, previous appends are not accounted for when calculated the amount of
+ data to be requested from the reader, which both results in too much data read and a
+ miscalculation of the `bytesRemaining` out-param. This causes all subsequent appends to
+ generate no samples, leading to an apparent stall in playback.
+
+ Add a new ivar to track the number of partial bytes read, and use that value to calculate
+ the number of bytes yet to be parsed.
+
+ * platform/graphics/cocoa/SourceBufferParserWebM.cpp:
+ (WebCore::SourceBufferParserWebM::VideoTrackData::createSampleBuffer):
+ * platform/graphics/cocoa/SourceBufferParserWebM.h:
+
+ LayoutTests:
+
+ * platform/mac-bigsur/media/media-source/content/test-48kHz-vorbis-manifest.json: Added.
+ * platform/mac-bigsur/media/media-source/content/test-48kHz-vorbis.webm: Added.
+ * platform/mac-bigsur/media/media-source/media-source-webm-vorbis-partial-expected.txt: Added.
+ * platform/mac-bigsur/media/media-source/media-source-webm-vorbis-partial.html: Added.
+
+
+ git-svn-id: https://svn.webkit.org/repository/webkit/trunk@273513 268f45cc-cd09-0410-ab3c-d52691b4dbfc
+
+ 2021-02-25 Jer Noble <[email protected]>
+
+ [Cocoa] Appending a partial segment of a WebM audio file results in no additional samples
+ https://bugs.webkit.org/show_bug.cgi?id=222407
+ <rdar://74610383>
+
+ Reviewed by Eric Carlson.
+
+ Test: media/media-source/media-source-webm-vorbis-partial.html
+
+ When appending a partial WebM segment, it can occur that the parser is mid-way through
+ parsing a Block or SimpleBlock, and is waiting for enough data to be appended to construct a
+ full sample. However, previous appends are not accounted for when calculated the amount of
+ data to be requested from the reader, which both results in too much data read and a
+ miscalculation of the `bytesRemaining` out-param. This causes all subsequent appends to
+ generate no samples, leading to an apparent stall in playback.
+
+ Add a new ivar to track the number of partial bytes read, and use that value to calculate
+ the number of bytes yet to be parsed.
+
+ * platform/graphics/cocoa/SourceBufferParserWebM.cpp:
+ (WebCore::SourceBufferParserWebM::VideoTrackData::createSampleBuffer):
+ * platform/graphics/cocoa/SourceBufferParserWebM.h:
+
+2021-03-02 Alan Coon <[email protected]>
+
Cherry-pick r273512. rdar://problem/74953022
REGRESSION(r269957): Empty font names passed to canvas2d cause all text routines to crash
Modified: branches/safari-612.1.5-branch/Source/WebCore/platform/graphics/cocoa/SourceBufferParserWebM.cpp (273798 => 273799)
--- branches/safari-612.1.5-branch/Source/WebCore/platform/graphics/cocoa/SourceBufferParserWebM.cpp 2021-03-03 03:09:02 UTC (rev 273798)
+++ branches/safari-612.1.5-branch/Source/WebCore/platform/graphics/cocoa/SourceBufferParserWebM.cpp 2021-03-03 03:09:07 UTC (rev 273799)
@@ -1229,7 +1229,11 @@
m_packetData.resize(m_packetBytesRead + metadata.size);
size_t packetDataOffset = m_packetBytesRead;
+
+ ASSERT(m_partialBytesRead < metadata.size);
size_t bytesToRead = metadata.size;
+ if (m_partialBytesRead && m_partialBytesRead < bytesToRead)
+ bytesToRead -= m_partialBytesRead;
while (bytesToRead) {
uint64_t bytesRead;
auto status = reader.Read(bytesToRead, m_packetData.data() + m_packetBytesRead, &bytesRead);
@@ -1238,8 +1242,12 @@
m_packetBytesRead += bytesRead;
// FIXME: We can't yet handle parsing a Frame that doesn't have all its memory available.
- if (status.code == webm::Status::kOkPartial || status.code == webm::Status::kWouldBlock)
+ if (status.code == webm::Status::kOkPartial || status.code == webm::Status::kWouldBlock) {
+ m_partialBytesRead += bytesRead;
return status;
+ }
+
+ m_partialBytesRead = 0;
}
if (!formatDescription()) {
Modified: branches/safari-612.1.5-branch/Source/WebCore/platform/graphics/cocoa/SourceBufferParserWebM.h (273798 => 273799)
--- branches/safari-612.1.5-branch/Source/WebCore/platform/graphics/cocoa/SourceBufferParserWebM.h 2021-03-03 03:09:02 UTC (rev 273798)
+++ branches/safari-612.1.5-branch/Source/WebCore/platform/graphics/cocoa/SourceBufferParserWebM.h 2021-03-03 03:09:07 UTC (rev 273799)
@@ -215,6 +215,7 @@
Vector<uint8_t> m_packetData;
size_t m_packetBytesRead { 0 };
size_t m_byteOffset { 0 };
+ size_t m_partialBytesRead { 0 };
Vector<AudioStreamPacketDescription> m_packetDescriptions;
// FIXME: 0.5 - 1.0 seconds is a better duration per sample buffer, but use 2 seconds so at least the first