From mboxrd@z Thu Jan 1 00:00:00 1970 X-Msuck: nntp://news.gmane.io/gmane.comp.tex.context/112441 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: =?utf-8?q?Michal_Vlas=C3=A1k_via_ntg-context?= Newsgroups: gmane.comp.tex.context Subject: Re: JavaScript in multimedia PDF Date: Tue, 10 Aug 2021 23:52:10 +0200 Message-ID: References: Reply-To: mailing list for ConTeXt users Mime-Version: 1.0 Content-Type: multipart/mixed; boundary=4c9b14c0e4ab3bcb2296dd74f6fecaddce806d71e0d09126f32d1c78d422 Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="31658"; mail-complaints-to="usenet@ciao.gmane.io" Cc: =?utf-8?q?Michal_Vlas=C3=A1k?= , Pablo Rodriguez To: "mailing list for ConTeXt users" Original-X-From: ntg-context-bounces@ntg.nl Wed Aug 11 00:02:05 2021 Return-path: Envelope-to: gctc-ntg-context-518@m.gmane-mx.org Original-Received: from zapf.boekplan.nl ([5.39.185.232] helo=zapf.ntg.nl) by ciao.gmane.io with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1mDZoz-000805-HW for gctc-ntg-context-518@m.gmane-mx.org; Wed, 11 Aug 2021 00:02:05 +0200 Original-Received: from localhost (localhost [127.0.0.1]) by zapf.ntg.nl (Postfix) with ESMTP id 6828328660A; Wed, 11 Aug 2021 00:01:22 +0200 (CEST) X-Virus-Scanned: Debian amavisd-new at zapf.boekplan.nl Original-Received: from zapf.ntg.nl ([127.0.0.1]) by localhost (zapf.ntg.nl [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 4k-xnSwBs7c5; Wed, 11 Aug 2021 00:01:20 +0200 (CEST) Original-Received: from zapf.ntg.nl (localhost [127.0.0.1]) by zapf.ntg.nl (Postfix) with ESMTP id 62A0C28660E; Wed, 11 Aug 2021 00:01:20 +0200 (CEST) Original-Received: from localhost (localhost [127.0.0.1]) by zapf.ntg.nl (Postfix) with ESMTP id A335C28660A for ; Wed, 11 Aug 2021 00:01:18 +0200 (CEST) X-Virus-Scanned: Debian amavisd-new at zapf.boekplan.nl Original-Received: from zapf.ntg.nl ([127.0.0.1]) by localhost (zapf.ntg.nl [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id PTOTtr06etNz for ; Wed, 11 Aug 2021 00:01:15 +0200 (CEST) Received-SPF: Pass (mailfrom) identity=mailfrom; client-ip=209.85.221.54; helo=mail-wr1-f54.google.com; envelope-from=lahcim8@gmail.com; receiver= Original-Received: from mail-wr1-f54.google.com (mail-wr1-f54.google.com [209.85.221.54]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits)) (No client certificate requested) by zapf.ntg.nl (Postfix) with ESMTPS id 3C202286607 for ; Wed, 11 Aug 2021 00:01:15 +0200 (CEST) Original-Received: by mail-wr1-f54.google.com with SMTP id l18so34459wrv.5 for ; Tue, 10 Aug 2021 15:01:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:from:cc:subject:to:date:message-id:in-reply-to; bh=+Yl7l4gLsGJCrmMQpKUzXHYF7tTd4TEPl+WMgfcbQ7s=; b=Qyug2WdNmzik54OhHUPSOfujgAQmjAKd7Bz2/1MsnEDmtxbgOlMIIMDR0OAuCphx9h nVfceyJzviUvtprfUFpMFvELHT5kWg4toI+Zdxj/i2mL1MmJcGX7MklF9C6YjB3UmQUU XDB7F5cEfNE9GvfMwBb+3ZniGyKekccPi9V23iPi64i7bRdsM1J/zRQ1lzh2ONvyNgKN XQ0kblaBT0DRKgvpJOVnVY8gq0RUEl8Ad6/mYj8PlFPT8Dnc76gvmmbpMY8b5QxUwZ9F 2LKotqBOJoMwjkpX5D2np06PZTk7Eyl+wGIpbApXsKKH4wLoKNsKKGDsLBDuoMOxTlOH q81Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:cc:subject:to:date:message-id :in-reply-to; bh=+Yl7l4gLsGJCrmMQpKUzXHYF7tTd4TEPl+WMgfcbQ7s=; b=QK9+x/8cgfGQhZd4Ln+BZE1V3jAKc1onFZdIJngFZjwBvav+O4C9OdUvn5lTCAal3T DwNCgEYt3JEsupJycgOnfOG1jd7ouXjwoGRNidvdzBhuVLDDtndsvQ00w4RqHJBnrvL1 hWWbzVA297pddC79Cl2lGwsCHmIoKGnMsd/w+oXrmsGRFC8EHDp2RM3q4BOduRTJ3jNQ JyZ4ua4eUd7QVOusk2q5JnTMmY5JsFBTUeWbhfQRH7AB0DvNKIPIMnNBcg6J8iEPv2Mp gMrXXeQY7kOSIDLI391EI3K5sXb9C+0wrUX3wmMyUfNYe+Ea1Wpf7T5ABgXCKcPJywZW gtkA== X-Gm-Message-State: AOAM531sIkPZU5nlAFNVl0U/ylnR46JgLTUg2c/bL7ri3LWeojbfmrmx Jqj0coE8pq61xBE5vuTP/zLnyDBIgOE= X-Google-Smtp-Source: ABdhPJx0ShMxyr2HbWyqi7DwrJAZ4kA+9DfI1g5Z/a55TV5LAVSYK5kZWaPS6quGqRx1WHNXLXNp9A== X-Received: by 2002:a5d:6d03:: with SMTP id e3mr33221838wrq.153.1628632874230; Tue, 10 Aug 2021 15:01:14 -0700 (PDT) Original-Received: from localhost (18.52.broadband7.iol.cz. [88.102.52.18]) by smtp.gmail.com with ESMTPSA id r129sm21914392wmr.7.2021.08.10.15.01.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 10 Aug 2021 15:01:13 -0700 (PDT) In-Reply-To: X-BeenThere: ntg-context@ntg.nl X-Mailman-Version: 2.1.26 Precedence: list List-Id: mailing list for ConTeXt users List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: ntg-context-bounces@ntg.nl Original-Sender: "ntg-context" Xref: news.gmane.io gmane.comp.tex.context:112441 Archived-At: --4c9b14c0e4ab3bcb2296dd74f6fecaddce806d71e0d09126f32d1c78d422 Content-Type: multipart/alternative; boundary=e105a59d30e4082f8dae0a1e86220d57ac702b6caee29ab9ce5047f882b9 --e105a59d30e4082f8dae0a1e86220d57ac702b6caee29ab9ce5047f882b9 Content-Transfer-Encoding: quoted-printable Content-Disposition: inline Content-Type: text/plain; charset=UTF-8 On Mon Aug 9, 2021 at 8:32 AM CEST, Pablo Rodriguez via ntg-context wrote: > On 8/8/21 11:00 PM, Michal Vlas=C3=A1k via ntg-context wrote: > > Is there a newer document than "JavaScript for Acrobat API Reference" > > (May 2015)? > > Well, the link you provided > (https://mailman.ntg.nl/pipermail/ntg-context/2021/103023.html) is from > February 2021: > > https://opensource.adobe.com/dc-acrobat-sdk-docs/acrobatsdk/pdfs/acrobats= dk_jsapiref.pdf > > Here is the guide to developers (from the same date): > > https://opensource.adobe.com/dc-acrobat-sdk-docs/acrobatsdk/pdfs/acrobats= dk_jsdevguide.pdf Thank you, I didn't realize that they updated the document after I saved it. The (public) update also must have been more recently than in February (I think the 2015 one was still up in May). I wasn't every of the guide. It seems nice. > I get exactly the same results: screen object, but null rendition. > > I have no idea what it is needed here. Sorry, in the last mail I forgot to mention one idea I had. But now I had time to try it, and in the end came up with three different ways to get it working (at least the multimedia part, didn't test the rest). It turns out, that Acrobat Reader ignores the names assigned to the Renditions -- that's why it can't be found by name (this is not complaint with the spec). But there is another mapping of Rendition names and objects -- the "Renditions" name tree, that maps Unicode encoded names of renditions to the respective objects. After generating the name tree, the method "getRendition" works correctly. This is the possibility number one -- generate the name tree. Another possibility uses the fact, that the "openPlayer" method needs to know which Rendition (what to play) and Screen annotation (where to play) to target. While in ordinary JavaScript actions one needs to specify them manually (because there is no context), in _Rendition_ PDF actions (that can also execute JavaScript) there is a context -- the action specifies the annotation and rendition at the PDF dictionary level. So possibility number two is to use JavaScript Rendition actions. Lastly, possibility number three. If one can't play the multimedia with JavaScript, there still is a plain (no JavaScript) Rendition action, that can do this -- "/OP 0" (StartRendering in ConTeXt). Also one can chain several PDF actions one after the other. So if we first play the Rendition through this ordinary Rendition action, then we can chain arbitrary JavaScript after it. The order is important here, because the second action doesn't start until first one is finished (which you may or not desire, so feel free to swap the order). All three possibilities work in Acrobat Reader 2021.005.20060. Depending on the length of your audio, you may be interested in the fact, that Acrobat Reader starts playing the audio from the start, if it didn't finish it before. And also supports only embedded files. Foxit Reader 11.0.1.49938 supports only the second and third way. It also starts playing the same audio multiple times if started multiple times (the same track plays multiple times over itself). All three file types are supported, though I only check embedded and external files (not URL files). There are probably functions in the JS API to achieve better control and consequently the same behaviour in both viewers, but I didn't look. The first two ways are not currently possible in ConTeXt. The last one should work, because ConTeXt should support chaining actions with /Next, although I would have to check what is the user interface (implementation is in lpdf.action). I however, have a proof of concept in OpTeX, that uses the package from my thesis (but I had to extend it for the Unicode encoded Rendition name tree). To compile, you would need OpTeX and the updated "pdfextra.opm" from https://raw.githubusercontent.com/vlasakm/pdfextra/master/pdfextra.opm. But the compiled PDF from the below example is attached. With the proof of concept, and real world PDF document available, we should probably get the functionality into ConTeXt. First way should work if the name tree is added (I will look into that), but also needs a better way to refer to the screen annotations, than what I am using below (which maybe means more book keeping, have to check). The second way would need a new executer and its shortcut, maybe something used like this: \goto{...}[JSRendition{, }] But I presume that more book keeping will be necessary. The third way should hopefully already work. Also, beware that both in my example, and in ConTeXt, multimedia insertion produces whatsits, which especially when inserted with zero dimensions like here for audio, may cause surprising interactions when around normal typsetting content. Putting the whatsit insertion in a page background is a way to keep it away. "back-swf.mkiv" suggests: \setupbackgrounds[page][background=3Dresources] \setlayer[resources]{\placerenderingwindow[foo][foo]} Michal Vlas=C3=A1k % compile twice with "optex" and use pdfextra.opm from github \fontfam[lm] \load[pdfextra] \hyperlinks\Blue\Blue % The demo sound is randomly found, from Marianne Gagnon % https://soundbible.com/1682-Robot-Blip.html % initialization javascript (runs on document open) \dljavascript[whatever]{% function play_rendition(label) { this.pageNum =3D 0; var rendition =3D this.media.getRendition(label); var screen =3D this.media.getAnnots({ nPage: 0 })[0]; console.println(label); console.println(rendition); console.println(screen); console.show(); var player =3D app.media.openPlayer({ rendition: rendition, annot: screen, }); } } % Rendition + Screen annotation (beware of the whatsit node!) \newbox \backgroundbox \setbox\backgroundbox=3D\hbox{\render[sound.mp3]{}} \pgbackground=3D{\box\backgroundbox} % First possibility \hlink[js:play_rendition("sound.mp3");] {Play sound with ordinary JavaScript action (function \code{GoToFirstSlide})} % Second possibility \sdef{_pdfextra_renditionaction:jsplay}{/JS ( % argsDWIM ("Do what I mean") is what openPlayer % calls internally on its argument console.println(app.media.argsDWIM({})); console.show(); var player =3D app.media.openPlayer({}); )} \hlink[rendition::jsplay] {Play sound with (JavaScript) Rendition action (\code{rendition} and \code{annot} inherited from the action)} % Third possibility \hlink [rendition::play, js:app.alert("javascript code");] {Play sound with (Play) Rendition action chained before JavaScript action} \bye --e105a59d30e4082f8dae0a1e86220d57ac702b6caee29ab9ce5047f882b9-- --4c9b14c0e4ab3bcb2296dd74f6fecaddce806d71e0d09126f32d1c78d422 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=audio_renderings.pdf Content-Type: application/pdf; name=audio_renderings.pdf JVBERi0xLjUKJczVwdTF2NDExgo3IDAgb2JqCjw8IC9UeXBlIC9YT2JqZWN0IC9TdWJ0eXBlIC9G b3JtIC9Gb3JtVHlwZSAxIC9CQm94IFsgMCAwIDAgMCBdIC9NYXRyaXggWyAxIDAgMCAxIDAgMCBd IC9SZXNvdXJjZXMgOCAwIFIgL0ZpbHRlciAvRmxhdGVEZWNvZGUgL0xlbmd0aCA4ID4+ICAgICAg ICAgIApzdHJlYW0KeNoDAAAAAAEKZW5kc3RyZWFtCmVuZG9iagoxNCAwIG9iago8PCAvRmlsdGVy IC9GbGF0ZURlY29kZSAvTGVuZ3RoIDM3OCA+PiAgICAgICAgCnN0cmVhbQp42rVUyU7DMBC95yv8 A5hZvNRSFYkUigTX3BBXOCD+/8qMlyZt2lQgerCceObN8t7YYD4NmOcOLuxoUHYwX6Z9vXbD2N3v ySSbAgVnxo+uWNAksDGhiQEtBDTjt3nbAngGcBsA3PW0kf8Y+jtmlq9AYkXZH8VDFu2bJYrFyQoJ gA+n2RfUr1gVg7tyNkV1PMsFvQ/b6iVoGoq3or3T+A2lHtmaqhU1/iGzlzrirNKl5/v4IrwgnCOG KVpgf8oMP9SeNmXnULuGwo1m0KqVPT3XvplqprMKSEuWwlKCkEFrqp5q6JJFCDfQ0P9WoVx+Q2cG WqYp/lKxa3qu6wVog1uwoHVdyb6iDXuSIaDToFpoJW61pIjWQbqE1pVlSNfGYxMXQdpd4spu4z8r R3NN8x2A2u1wmIHUsOvs/2kQOVr0eJtBXEa7xbDRUKIrRVmvRvcRtcT9XXGjwnN77SZW//Vlm+sw 6VG4p+Qtumi8t256A+gI8zR2P2wCQtcKZW5kc3RyZWFtCmVuZG9iagozIDAgb2JqCjw8IC9UeXBl IC9FbWJlZGRlZEZpbGUgL1N1YnR5cGUgL2F1ZGlvIzJGbXBlZyAvRmlsdGVyIC9GbGF0ZURlY29k ZSAvTGVuZ3RoIDcyMzAgPj4gICAgICAgCnN0cmVhbQp42t15aTiUb/j2MzOGMQZj/Y2lDKExtrEv RWMrxpJ9p7FmVyKVNGPNvpQ9ZReiSKQkSwtZagiFQtlJKMsvg+cd/f7/z++X99N7HvMcz5f7Oea6 zvM67+O67hukZ3gC/xfY+wadZ7w4GY8wABwVBZiZmTEMHDt2jMCAlpYWiQFbW1sPBoIYuHr1aiwD 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 m0XT7ov0b0hjTLqlrzPUp8VGWLeF5UoqfDW0f0uNMcdUoInvVb17ruf06UaAFvMLpOf8x5w1TPDQ BfQJngl6TrhGEi8OXSkPhgjjz6JapPWU+WRgeYw6LGgEDBrFjTw/yud0OV0uZ7nL5T4bFNTU4y5z lbnd7tKykqDR/wFvcMOkCmVuZHN0cmVhbQplbmRvYmoKMzIgMCBvYmoKPDwgL0ZpbHRlciAvRmxh dGVEZWNvZGUgL0xlbmd0aCA0ODggPj4gICAgICAgIApzdHJlYW0KeNqFk0Fv4jAQhe/5Fd4DEj2k cQJJSoUitVC0SNvSAlq1xxAPNBJxIic58O/X9nNaabVokUD5mDczz+PJ6Mfrzn8Q9YH8yS1nW2rr XhXkL57zxhuNlnXRVyS7FyJBYoi29+xV1cWOOjZerJdrWXY3WryWxbkXNKj+LXqkUym/JaYPG+/p 3d+8vf38ePd/PW/rKpch97d06s+58rlJ25fdWcv/o2Q6zK6FmS30m1Rb1vKehbecc/3HkxSLujKH bL3AGWXBYP1YSqGcW3Yw3r0wYqIsOkf2t6j0tEzy7tJ2VK3lsfbmcxbozmXbqYv1feMFGyVIlfLE xtdMatGub5ozGUOMe1nGBB11bT2nl7wiFpgJrIWOlt3l6ii+k/aXhlhkOYTlohbUNnlBKpcn8uZ6 DDxj85X+ZB5J8VecI+twBGrB8BilQ6j4zJUpFC50Ic6TMDMUTUAR6BE0Aa1AU0uTCBSDUlACcso7 S1OnnIHQYfoAukNsAXL9lqAl6MlSHIJWINScwHWMmjEHTS2ljmJLEbzECQheYviMcdqEI88R+sU4 e4J+qaMZCJNI4DPFJFJXBZNIXV4KQvd0luFO7B2Y6zO7+LUuRa+U3hW7sHYfzCaUkr52uqkbk2W/ 9mUY3k1Dm5X3Bys/J2cKZW5kc3RyZWFtCmVuZG9iagozNyAwIG9iago8PCAvUHJvZHVjZXIgKEx1 YVRlWC0xLjEzLjIpIC9DcmVhdG9yIChUZVgpIC9DcmVhdGlvbkRhdGUgKEQ6MjAyMTA4MTAyMzEy MzQrMDInMDAnKSAvTW9kRGF0ZSAoRDoyMDIxMDgxMDIzMTIzNCswMicwMCcpIC9UcmFwcGVkIC9G YWxzZSAvUFRFWC5GdWxsQmFubmVyIChUaGlzIGlzIEx1YVRlWCwgVmVyc2lvbiAxLjEzLjIgKG1t dGV4IDIwMjEwNTE1KSkgPj4KZW5kb2JqCjIgMCBvYmoKPDwgL1R5cGUgL09ialN0bSAvTiAyNiAv Rmlyc3QgMTkzIC9GaWx0ZXIgL0ZsYXRlRGVjb2RlIC9MZW5ndGggMTQzMSA+PiAgICAgICAKc3Ry ZWFtCnjarVfrb9s2EP+ev+LQL7WxxiZFPZOuQGLHa7a8GqfrOsMYVJt1tMmSYMltg6L/+35HPfxK 2iAoKofH4/H4O96LlSTIJ+VYFJDyXJIB2YFFNjmWIoecwCGXfGmTFPiUT1LiCzCxSNqWvycdkq4C U2H0bLKw5KmALLA8nkPOtwVBnQw87PewFOAPPqWw7pPlMBNbPFfsSRekL0gpUlJCHuiUsAiiEPcA FaTAxMXoqr2XL6k7pO7v4adwOFlEWQF6SK2Py2RSRGlCWRze/bPQyTTiaSsOP+i4TV+puI3yThbO 9MVyTr+SOKRP4YIaQbCMxFxPo7Az08X1lopSPp8stN4VPkqStMhbXym5wgkHuONv7ZEYH9IkTfI0 1p1sESVFvNK1zW9w3LNWnrm2kN+mn1sVIDZXLwAozLIKT5rp5MqwAahRfLAiX1DIeA8qa14A7CF9 ozbRq1fmfq8W6WSoCxqB7A9oXPNv7jINFkykbi9NCp0UOaIC5l5T91rn6XIx0TmHhuGcM5zj9Av0 CPxDbHXgcvJt2fEDaIUmYCrY5Ua+vEUOSZ7izBFikUkpykGWg2WGMSBViAZRrPNMT0BRCyiSaWee qTZ1+zqfbHJOBsSWDEhVhxjTKj2Nz02InQPSBb0cnAwGQnhKCJdHB+MJfrYQFo998IQQSr3q9qDa bOz1cTRV99K7oVa4nEZpd57pGSBcGQQ3gHpzcn51dPbu6P2wDST8mcXu8YkR6dHHMM6B60/cgAC8 HslabrgueEmyg/VjGiEJSY4roQ2vmcvFvuWHwsyHZSTjwKC6/Qr92iVcXhEfi7pQSlyU/oBqTFi+ pAyUC/Kqte5xupgiJkfsNQE3X5xv+qAJnVXY0/NG4DniECAmHH7K7diBqiNmcza+177tsytFgeh4 gSTP8TvCQ7kTdkeionie6AhUpvHe2s2cRcl/q+vYLjRb9eVZg/tZ+9B4ce8puGy3I1EUHcm47Abn d3CtuYlh7VSNVT0IF7O8/+70vPX1W/tpVYTrQ/v+QHiStQpWuvCCVB1lW431j7P2gaBEmOkvxQNO Y7PCWC+K1rN/sZSXS5N0qmuvrZvSZ6ilzr/e/02IEd9FrKB8IfqSZRyvYm+AUC4LCtpehWPArdOr ystOMe3eMMxGwUU4R8UcUevzbVjoT3rRprLK7Yo8vhI5axpG3HFHaO8O5uinNemIFWmvyJUsTK5J RGJDrjT4siGDWrb+jVGx7DXe2JTrOkr41rg0sxfSRTlnK+HWs7cXv53+cnZ+niapFPvXeraMQxaJ w1mOkmpkj8umsm87kvYV7t3jB4kAgVg7yiemqfC02wuz1zqa3RbkonuYfsCLZlP3tAjjaHKUzGLN ITUs9ByV1nPg9mqTDb3mRO4wCg+XqqSf9tmjll03qk3T1qKYmVB9kiDWomSGM6c4Pyru9l8jS8Jc l/IPml0CnoZAkHLFHPE7ynQ/6E7fJhHHMFnuD4EAMnMqPI84ectHVtXT3/EDr7mEuxx3dpp8TE0O YG+UF4s7ah1N0w8aFeOSywDb3artbjOmLIv1nP0gqjZVBym63JhffCAddqatQNq23YSu4ZrQLbkO yyrBXFc1AiZ0LTw+UU/r8OUpSJb38dasI9nIl5GMw/nnYsZsxR3H9JmAN3n8AMVL2SwFtolwc7gR kSJotElZpotvaM4CD3fGtN/wH5cNl2/evH7/F5xznc7D5MfpoATtW/xWt1F/AMNbzweerueDr9by gXfdnw8oeQ+lg5Ib6aDEz0qHh+3ezQeldvNBWU/Oh+9c+VZCBE1C+D8/ITZf2znxo2nJXqTuH9E0 bxrUbh/JZgcSPcSpb+UsmkfF2ko1NBthEpZV9Vhda5yWqN/1VevN+f94prFsAOyFCJt0ViOtH/Ml IOXUnvgfOmbtqQplbmRzdHJlYW0KZW5kb2JqCjM4IDAgb2JqCjw8IC9UeXBlIC9YUmVmIC9JbmRl eCBbIDAgMzkgXSAvU2l6ZSAzOSAvVyBbIDEgMiAxIF0gL1Jvb3QgMzYgMCBSIC9JbmZvIDM3IDAg UiAvSUQgWyA8OTUxRTlCNkM0MzUwNTdENDYyOEVBM0FDNDZGOTkzOUQ+IDw5NTFFOUI2QzQzNTA1 N0Q0NjI4RUEzQUM0NkY5OTM5RD4gXSAvRmlsdGVyIC9GbGF0ZURlY29kZSAvTGVuZ3RoIDExMSA+ PiAgICAgICAgCnN0cmVhbQp42hXN2w2CUBCE4ZkFRfEK4oWn82howGhiYhU0YU2WYhNUpP95+JLZ 3UlW0i8U8qOX40OKEjPMrS7PRqDCAkusrCnfanTY44QCa2ywxc5plNNXvpa536DFwQM/h7d8K/L+ iDMu6H1/yq+kP1wZB9EKZW5kc3RyZWFtCmVuZG9iagpzdGFydHhyZWYKMTYxNTkKJSVFT0YK --4c9b14c0e4ab3bcb2296dd74f6fecaddce806d71e0d09126f32d1c78d422 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: inline X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18KSWYgeW91ciBxdWVzdGlvbiBpcyBvZiBpbnRlcmVz dCB0byBvdGhlcnMgYXMgd2VsbCwgcGxlYXNlIGFkZCBhbiBlbnRyeSB0byB0aGUgV2lraSEKCm1h aWxsaXN0IDogbnRnLWNvbnRleHRAbnRnLm5sIC8gaHR0cDovL3d3dy5udGcubmwvbWFpbG1hbi9s aXN0aW5mby9udGctY29udGV4dAp3ZWJwYWdlICA6IGh0dHA6Ly93d3cucHJhZ21hLWFkZS5ubCAv IGh0dHA6Ly9jb250ZXh0LmFhbmhldC5uZXQKYXJjaGl2ZSAgOiBodHRwczovL2JpdGJ1Y2tldC5v cmcvcGhnL2NvbnRleHQtbWlycm9yL2NvbW1pdHMvCndpa2kgICAgIDogaHR0cDovL2NvbnRleHRn YXJkZW4ubmV0Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCg== --4c9b14c0e4ab3bcb2296dd74f6fecaddce806d71e0d09126f32d1c78d422--