From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 4116 invoked by alias); 4 Mar 2017 13:49:58 -0000 Mailing-List: contact zsh-workers-help@zsh.org; run by ezmlm Precedence: bulk X-No-Archive: yes List-Id: Zsh Workers List List-Post: List-Help: X-Seq: 40719 Received: (qmail 11398 invoked from network); 4 Mar 2017 13:49:58 -0000 X-Qmail-Scanner-Diagnostics: from new1-smtp.messagingengine.com by f.primenet.com.au (envelope-from , uid 7791) with qmail-scanner-2.11 (clamdscan: 0.99.2/21882. spamassassin: 3.4.1. Clear:RC:0(66.111.4.221):SA:0(-0.4/5.0):. Processed in 1.078245 secs); 04 Mar 2017 13:49:58 -0000 X-Spam-Checker-Version: SpamAssassin 3.4.1 (2015-04-28) on f.primenet.com.au X-Spam-Level: X-Spam-Status: No, score=-0.4 required=5.0 tests=FREEMAIL_ENVFROM_END_DIGIT, FREEMAIL_FROM,RCVD_IN_DNSWL_LOW,SPF_PASS,T_DKIM_INVALID autolearn=unavailable autolearn_force=no version=3.4.1 X-Envelope-From: psprint3@fastmail.com X-Qmail-Scanner-Mime-Attachments: | X-Qmail-Scanner-Zip-Files: | Received-SPF: pass (ns1.primenet.com.au: SPF record at spf.messagingengine.com designates 66.111.4.221 as permitted sender) DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; d=fastmail.com; h= content-transfer-encoding:content-type:date:from:message-id :mime-version:subject:to:x-me-sender:x-me-sender:x-sasl-enc; s= mesmtp; bh=3b0pjEVwzLiGXSBjVqx1r57nwT4=; b=uR4zdD04EpXEA5oYqMB06 mDsn48lv2YL3VPl4DdykIiKMYsDRbCKqpkpcHQsDLZIqZr142lTWHBsXdEp1wc/j 8qpmrZR992S8lSvZelTPzCqpst+e6PwwDbJ2OiM1d2MqLBm/eYXPbwv4qhVVECuj vnWJd7qxo5rVzLE3V8uGNo= DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; d= messagingengine.com; h=content-transfer-encoding:content-type :date:from:message-id:mime-version:subject:to:x-me-sender :x-me-sender:x-sasl-enc; s=smtpout; bh=3b0pjEVwzLiGXSBjVqx1r57nw T4=; b=VGiOyRPXCr6xw1pHyqHPL9M+VoTbxW4DVqgX8aLLrHjKAzUS4ZnRFZ+fX Th8VqErctL9GKXL7b6j29ZMJmVtXY0iQGAgbjFyeRaKylWdXlWnRGI/LtvpZTn6K W7sTXUwFVBA2iO/2qGaL86Gh5DMXuzEPtY9B3fmiO/iWT/IcZA= X-ME-Sender: Message-Id: <1488635394.1730469.900258024.2D9CA43E@webmail.messagingengine.com> From: Sebastian Gniazdowski To: zsh-workers@zsh.org MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Type: multipart/mixed; boundary="_----------=_148863539417304691" X-Mailer: MessagingEngine.com Webmail Interface - ajax-1f3b8e78 Subject: =?utf-8?Q?Status=20of=20optimiza?= =?utf-8?Q?tions=20=E2=80=93=20can=20have=20n?= =?utf-8?Q?ative=20buffers?= Date: Sat, 04 Mar 2017 05:49:54 -0800 --_----------=_148863539417304691 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset="utf-8" Hello, with the optimizations for array (Zsh 5.3.1-dev-0): typeset -a array array[100]="" array[20,29]=( 1 2 3 4 5 6 7 8 9 10 ) we can now have somewhat "native" buffers in zsh. Above will not do anything with elements outside <20,30> range. One use case are 2-dimensional arrays, with e.g. the library I sent to zsh-users (ID: 21926). Created are e.g. 10 fixed rows of 100 elements. Then it's possible to fill rows by storing to computed indexes. Or to fill entire row by storing to . The same has been done with strings (Zsh 5.3), and string can be a native buffer too. That said, when I test with my screen-saver zsh-morpho (https://github.com/psprint/zsh-morpho), which uses hash tables for its pixel native buffer, arrays are still slower. It is 55.9 s vs. 27.3 s. Callgrind reveals the cause: 59,930,247,427 arrlen_le [/usr/local/bin/zsh-5.3.1-dev-0_O2] 15,675,075,695 szone_free_definite_size [/usr/lib/system/libsystem_malloc.dylib] 11,983,363,082 tiny_malloc_from_free_list [/usr/lib/system/libsystem_malloc.dylib] 8,037,180,402 tiny_free_list_add_ptr [/usr/lib/system/libsystem_malloc.dylib] 7,181,545,835 _platform_memmove$VARIANT$Nehalem [/usr/lib/system/libsystem_platform.dylib] (full data in attachement) The buffer has size 34x158=5372 elements. Without the optimizations that are the topic, time is 367 s. -- Sebastian Gniazdowski psprint3@fastmail.com --_----------=_148863539417304691 Content-Disposition: attachment; filename="callgrind_annotate.txt" Content-Id: <1488635348.1730442.d2f90f09d48ac4967cb4f14b234af137f9c539d8.4BC9BE05@content.messagingengine.com> Content-Transfer-Encoding: base64 Content-Type: text/plain; name="callgrind_annotate.txt" LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KUHJvZmlsZSBk YXRhIGZpbGUgJ2NhbGxncmluZC5vdXQuOTg5NicgKGNyZWF0b3I6IGNhbGxn cmluZC0zLjEyLjApCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCkkxIGNhY2hlOiAKRDEgY2FjaGU6IApMTCBjYWNoZTogClRpbWVyYW5n ZTogQmFzaWMgYmxvY2sgMCAtIDQ0MjEzNzc3ODE4ClRyaWdnZXI6IFByb2dy YW0gdGVybWluYXRpb24KUHJvZmlsZWQgdGFyZ2V0OiAgenNoLTUuMy4xLWRl di0wX08yIC4vem1vcnBobyAoUElEIDk4OTYsIHBhcnQgMSkKRXZlbnRzIHJl Y29yZGVkOiAgSXIKRXZlbnRzIHNob3duOiAgICAgSXIKRXZlbnQgc29ydCBv cmRlcjogSXIKVGhyZXNob2xkczogICAgICAgOTkKSW5jbHVkZSBkaXJzOiAg ICAgClVzZXIgYW5ub3RhdGVkOiAgIApBdXRvLWFubm90YXRpb246ICBvZmYK Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgICAg ICAgICBJciAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K MjEwLDQ2NCw0NzIsNjQ0ICBQUk9HUkFNIFRPVEFMUwoKLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAgICAgICAgSXIgIGZpbGU6 ZnVuY3Rpb24KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K NTksOTMwLDI0Nyw0MjcgID8/PzphcnJsZW5fbGUgWy91c3IvbG9jYWwvYmlu L3pzaC01LjMuMS1kZXYtMF9PMl0KMTUsNjc1LDA3NSw2OTUgID8/Pzpzem9u ZV9mcmVlX2RlZmluaXRlX3NpemUgWy91c3IvbGliL3N5c3RlbS9saWJzeXN0 ZW1fbWFsbG9jLmR5bGliXQoxMSw5ODMsMzYzLDA4MiAgPz8/OnRpbnlfbWFs bG9jX2Zyb21fZnJlZV9saXN0IFsvdXNyL2xpYi9zeXN0ZW0vbGlic3lzdGVt X21hbGxvYy5keWxpYl0KIDgsMDM3LDE4MCw0MDIgID8/Pzp0aW55X2ZyZWVf bGlzdF9hZGRfcHRyIFsvdXNyL2xpYi9zeXN0ZW0vbGlic3lzdGVtX21hbGxv Yy5keWxpYl0KIDcsMTgxLDU0NSw4MzUgID8/PzpfcGxhdGZvcm1fbWVtbW92 ZSRWQVJJQU5UJE5laGFsZW0gWy91c3IvbGliL3N5c3RlbS9saWJzeXN0ZW1f cGxhdGZvcm0uZHlsaWJdCiA2LDg4Nyw0MjMsMDEzICA/Pz86c3pvbmVfc2l6 ZSBbL3Vzci9saWIvc3lzdGVtL2xpYnN5c3RlbV9tYWxsb2MuZHlsaWJdCiA2 LDcwMSw2NDEsMzg5ICA/Pz86aXR5cGVfZW5kIFsvdXNyL2xvY2FsL2Jpbi96 c2gtNS4zLjEtZGV2LTBfTzJdCiA2LDY2OCwwMDQsNDM0ICA/Pz86YXJybGVu IFsvdXNyL2xvY2FsL2Jpbi96c2gtNS4zLjEtZGV2LTBfTzJdCiA1LDk3OSw1 NzUsNjMxICA/Pz86dGlueV9mcmVlX2xpc3RfcmVtb3ZlX3B0ciBbL3Vzci9s aWIvc3lzdGVtL2xpYnN5c3RlbV9tYWxsb2MuZHlsaWJdCiA1LDU4Myw3NDEs MTMyICA/Pz86c3pvbmVfbWFsbG9jX3Nob3VsZF9jbGVhciBbL3Vzci9saWIv c3lzdGVtL2xpYnN5c3RlbV9tYWxsb2MuZHlsaWJdCiAzLDY3Niw5MDgsNzM0 ICA/Pz86c3RyY3B5IFsvdXNyL2xpYi9keWxkXQogMywyMjksNTI2LDIzOCAg Pz8/OmZyZWUgWy91c3IvbGliL2R5bGRdCiAzLDAwNiwzNTMsNzA4ICA/Pz86 Z2V0X3RpbnlfZnJlZV9zaXplIFsvdXNyL2xpYi9zeXN0ZW0vbGlic3lzdGVt X21hbGxvYy5keWxpYl0KIDIsNjkwLDg0OSw1NjEgID8/PzpzdHJsZW4gWy91 c3IvbGliL2R5bGRdCiAyLDY3Nyw1MTAsODAxICA/Pz86c3RyaW5nc3Vic3Qg Wy91c3IvbG9jYWwvYmluL3pzaC01LjMuMS1kZXYtMF9PMl0KIDIsNTU4LDYw Niw1MjQgID8/PzpzdHJpbmdzdWJzdCcyIFsvdXNyL2xvY2FsL2Jpbi96c2gt NS4zLjEtZGV2LTBfTzJdCiAyLDM3MCwwMDksNDQ5ICA/Pz86aW5nZXRjIFsv dXNyL2xvY2FsL2Jpbi96c2gtNS4zLjEtZGV2LTBfTzJdCiAyLDEwMywyNTMs MjE5ICA/Pz86emFsbG9jIFsvdXNyL2xvY2FsL2Jpbi96c2gtNS4zLjEtZGV2 LTBfTzJdCiAyLDAxMCwxMzAsMTkyICA/Pz86bWFsbG9jX3pvbmVfbWFsbG9j IFsvdXNyL2xpYi9zeXN0ZW0vbGlic3lzdGVtX21hbGxvYy5keWxpYl0KIDEs OTgwLDgzNSwyMDcgID8/PzpzdHJ0b2RfbCBbL3Vzci9saWIvc3lzdGVtL2xp YnN5c3RlbV9jLmR5bGliXQogMSw4NzEsNDEzLDcyNSAgPz8/OmRxdW90ZV9w YXJzZSBbL3Vzci9sb2NhbC9iaW4venNoLTUuMy4xLWRldi0wX08yXQogMSw2 NTEsNTEzLDcxOSAgPz8/OnpoYWxsb2MgWy91c3IvbG9jYWwvYmluL3pzaC01 LjMuMS1kZXYtMF9PMl0KIDEsNjQxLDg3NSw3MzIgID8/PzpfcGxhdGZvcm1f c3RyY21wIFsvdXNyL2xpYi9zeXN0ZW0vbGlic3lzdGVtX3BsYXRmb3JtLmR5 bGliXQogMSw2MDQsMDgyLDc0MSAgPz8/OmdldF90aW55X3ByZXZpb3VzX2Zy ZWVfbXNpemUgWy91c3IvbGliL3N5c3RlbS9saWJzeXN0ZW1fbWFsbG9jLmR5 bGliXQogMSw1NzQsMTQ0LDQ3MyAgPz8/Onp6bGV4IFsvdXNyL2xvY2FsL2Jp bi96c2gtNS4zLjEtZGV2LTBfTzJdCiAxLDQzNSw4MDgsNzIwICA/Pz86bWFs bG9jIFsvdXNyL2xpYi9keWxkXQogMSwzMzQsOTQ2LDI5MSAgPz8/Onp0cmR1 cCBbL3Vzci9sb2NhbC9iaW4venNoLTUuMy4xLWRldi0wX08yXQogMSwyNTUs MDYzLDUzNCAgPz8/Ol9fcXVvcmVtX0QyQSBbL3Vzci9saWIvc3lzdGVtL2xp YnN5c3RlbV9jLmR5bGliXQogMSwyMjEsMTQ2LDEwMiAgPz8/Ol9fbXVsdGFk ZF9EMkEgWy91c3IvbGliL3N5c3RlbS9saWJzeXN0ZW1fYy5keWxpYl0KIDEs MTY1LDM4Myw4NjIgID8/Pzp1bnRva2VuaXplIFsvdXNyL2xvY2FsL2Jpbi96 c2gtNS4zLjEtZGV2LTBfTzJdCiAxLDA5OCwzNzEsODQ5ICA/Pz86bGV4Y29u c3RhbnQgWy91c3IvbG9jYWwvYmluL3pzaC01LjMuMS1kZXYtMF9PMl0KIDEs MDY5LDk1MiwwMTUgID8/PzpmZXRjaHZhbHVlIFsvdXNyL2xvY2FsL2Jpbi96 c2gtNS4zLjEtZGV2LTBfTzJdCiAgIDk4Miw0NTEsMDY0ICA/Pz86cmVtbnVs YXJncyBbL3Vzci9sb2NhbC9iaW4venNoLTUuMy4xLWRldi0wX08yXQogICA5 NjUsNDgzLDI5NSAgPz8/OnBhcmFtc3Vic3QgWy91c3IvbG9jYWwvYmluL3pz aC01LjMuMS1kZXYtMF9PMl0KICAgODUzLDI2OSwyODAgID8/PzpnZXRhcmcg Wy91c3IvbG9jYWwvYmluL3pzaC01LjMuMS1kZXYtMF9PMl0KICAgNzkyLDc3 OSwwMDAgID8/PzpvcCBbL3Vzci9sb2NhbC9iaW4venNoLTUuMy4xLWRldi0w X08yXQogICA3OTAsNjg4LDkwNyAgPz8/Omhhc2hlciBbL3Vzci9sb2NhbC9i aW4venNoLTUuMy4xLWRldi0wX08yXQogICA3NzEsMTEwLDMwNiAgPz8/OmNo ZWNrdW5hcnkgWy91c3IvbG9jYWwvYmluL3pzaC01LjMuMS1kZXYtMF9PMl0K ICAgNzYzLDA4NCwwNjIgID8/PzpzZXRsb2NhbGUgWy91c3IvbGliL3N5c3Rl bS9saWJzeXN0ZW1fYy5keWxpYl0KICAgNzYyLDk4NCwxMTMgID8/PzpzZXRh cnJ2YWx1ZSBbL3Vzci9sb2NhbC9iaW4venNoLTUuMy4xLWRldi0wX08yXQog ICA3NDAsMzAxLDM3NCAgPz8/Om1hdGhwYXJzZScyIFsvdXNyL2xvY2FsL2Jp bi96c2gtNS4zLjEtZGV2LTBfTzJdCiAgIDcxNyw3ODksOTMwICA/Pz86X29z X2xvY2tfc3Bpbl9sb2NrIFsvdXNyL2xpYi9zeXN0ZW0vbGlic3lzdGVtX3Bs YXRmb3JtLmR5bGliXQogICA2ODcsODg5LDk4MCAgPz8/Ol9fQmFsbG9jX0Qy QSBbL3Vzci9saWIvc3lzdGVtL2xpYnN5c3RlbV9jLmR5bGliXQogICA2NjEs MDk5LDY0MiAgPz8/Ol9fbXVsdF9EMkEgWy91c3IvbGliL3N5c3RlbS9saWJz eXN0ZW1fYy5keWxpYl0KICAgNjQ1LDI4NCw2NDAgID8/PzpwYXJhbXN1YnN0 JzIgWy91c3IvbG9jYWwvYmluL3pzaC01LjMuMS1kZXYtMF9PMl0KICAgNjQ0 LDIwOCw0NjUgID8/PzpfX2xzaGlmdF9EMkEgWy91c3IvbGliL3N5c3RlbS9s aWJzeXN0ZW1fYy5keWxpYl0KICAgNjI4LDU4Nyw1MzcgID8/PzpnZXRoYXNo bm9kZTIgWy91c3IvbG9jYWwvYmluL3pzaC01LjMuMS1kZXYtMF9PMl0KICAg NjIzLDI0MSw1MzEgID8/PzphZGR2YXJzIFsvdXNyL2xvY2FsL2Jpbi96c2gt NS4zLjEtZGV2LTBfTzJdCiAgIDU5NSw4MTEsODQ4ICA/Pz86X19kdG9hIFsv dXNyL2xpYi9zeXN0ZW0vbGlic3lzdGVtX2MuZHlsaWJdCiAgIDU4NSw5ODAs MTc3ICA/Pz86X19CZnJlZV9EMkEgWy91c3IvbGliL3N5c3RlbS9saWJzeXN0 ZW1fYy5keWxpYl0KICAgNTg1LDE2MywyOTkgID8/Pzpsb2FkbG9jYWxlIFsv dXNyL2xpYi9zeXN0ZW0vbGlic3lzdGVtX2MuZHlsaWJdCiAgIDU4MiwxNjYs Nzg1ICA/Pz86bWF0aHBhcnNlIFsvdXNyL2xvY2FsL2Jpbi96c2gtNS4zLjEt ZGV2LTBfTzJdCiAgIDQ3OCw3MTksNzQ0ICA/Pz86Z2V0cGFyYW1ub2RlIFsv dXNyL2xvY2FsL2Jpbi96c2gtNS4zLjEtZGV2LTBfTzJdCiAgIDQ2NCwyNDMs MzEzICA/Pz86bWF0aGV2YWxsIFsvdXNyL2xvY2FsL2Jpbi96c2gtNS4zLjEt ZGV2LTBfTzJdCiAgIDQ1NywyNDIsNjQ4ICA/Pz86YWRkIFsvdXNyL2xvY2Fs L2Jpbi96c2gtNS4zLjEtZGV2LTBfTzJdCiAgIDQ0NCw4MjQsNjM2ICA/Pz86 enNmcmVlIFsvdXNyL2xvY2FsL2Jpbi96c2gtNS4zLjEtZGV2LTBfTzJdCiAg IDQzOCw4MDcsNjk0ICA/Pz86Z2V0aW5kZXggWy91c3IvbG9jYWwvYmluL3pz aC01LjMuMS1kZXYtMF9PMl0KICAgNDI3LDA3Nyw5MzQgID8/PzpfX3ZmcHJp bnRmIFsvdXNyL2xpYi9zeXN0ZW0vbGlic3lzdGVtX2MuZHlsaWJdCiAgIDQx OCwyMTYsODI3ICA/Pz86ZHVwc3RyaW5nIFsvdXNyL2xvY2FsL2Jpbi96c2gt NS4zLjEtZGV2LTBfTzJdCiAgIDQwNiw3MjUsOTk4ICA/Pz86ZmV0Y2h2YWx1 ZScyIFsvdXNyL2xvY2FsL2Jpbi96c2gtNS4zLjEtZGV2LTBfTzJdCiAgIDM4 MywwMDUsMTk1ICA/Pz86enN0cnRvbF91bmRlcnNjb3JlIFsvdXNyL2xvY2Fs L2Jpbi96c2gtNS4zLjEtZGV2LTBfTzJdCiAgIDM4MCw1ODAsNjUzICA/Pz86 X3BsYXRmb3JtX3N0cmNociRWQVJJQU5UJEdlbmVyaWMgWy91c3IvbGliL3N5 c3RlbS9saWJzeXN0ZW1fcGxhdGZvcm0uZHlsaWJdCiAgIDM3OSw1NjQsOTc1 ICA/Pz86X19udW1lcmljX2xvYWRfbG9jYWxlIFsvdXNyL2xpYi9zeXN0ZW0v bGlic3lzdGVtX2MuZHlsaWJdCiAgIDM3Nyw5NTMsMzQ3ICA/Pz86aW5wb3B0 b3AgWy91c3IvbG9jYWwvYmluL3pzaC01LjMuMS1kZXYtMF9PMl0KICAgMzU4 LDk1MSw4NjAgID8/Pzpzem9uZV9tYWxsb2MgWy91c3IvbGliL3N5c3RlbS9s aWJzeXN0ZW1fbWFsbG9jLmR5bGliXQogICAzMTYsODIzLDIxNSAgPz8/Ol9f Y21wX0QyQSBbL3Vzci9saWIvc3lzdGVtL2xpYnN5c3RlbV9jLmR5bGliXQog ICAzMDUsODQ2LDcyMCAgPz8/OmZyZWVhcnJheSBbL3Vzci9sb2NhbC9iaW4v enNoLTUuMy4xLWRldi0wX08yXQogICAzMDMsNjE1LDY4MSAgPz8/Omhpc3Rf Y29udGV4dF9zYXZlIFsvdXNyL2xvY2FsL2Jpbi96c2gtNS4zLjEtZGV2LTBf TzJdCiAgIDI5Nyw1MDgsNTM4ICA/Pz86d2F0Y2hsb2dfbWF0Y2ggWy91c3Iv bG9jYWwvYmluL3pzaC01LjMuMS1kZXYtMF9PMl0KICAgMjk1LDc2OSwxOTgg ID8/PzpfX3ZzbnByaW50Zl9jaGsgWy91c3IvbGliL3N5c3RlbS9saWJzeXN0 ZW1fYy5keWxpYl0KICAgMjg3LDExNiwxNzIgID8/Pzpvc19sb2NrX3VubG9j ayBbL3Vzci9saWIvc3lzdGVtL2xpYnN5c3RlbV9wbGF0Zm9ybS5keWxpYl0K ICAgMjg3LDExNiwxNzIgID8/Pzpvc19sb2NrX2xvY2sgWy91c3IvbGliL3N5 c3RlbS9saWJzeXN0ZW1fcGxhdGZvcm0uZHlsaWJdCiAgIDI4NywxMTUsOTcy ICA/Pz86X29zX2xvY2tfc3Bpbl91bmxvY2sgWy91c3IvbGliL3N5c3RlbS9s aWJzeXN0ZW1fcGxhdGZvcm0uZHlsaWJdCiAgIDI3MiwwNzEsMjA1ICA/Pz86 aGlzdF9jb250ZXh0X3Jlc3RvcmUgWy91c3IvbG9jYWwvYmluL3pzaC01LjMu MS1kZXYtMF9PMl0KICAgMjY4LDEyOCwxNTEgID8/PzpwYXJzZV9jb250ZXh0 X3Jlc3RvcmUgWy91c3IvbG9jYWwvYmluL3pzaC01LjMuMS1kZXYtMF9PMl0K ICAgMjYzLDU0NCw1NzkgID8/PzpleGVjbGlzdCcyIFsvdXNyL2xvY2FsL2Jp bi96c2gtNS4zLjEtZGV2LTBfTzJdCiAgIDI2MCwyNDksNDkxICA/Pz86aGJl Z2luIFsvdXNyL2xvY2FsL2Jpbi96c2gtNS4zLjEtZGV2LTBfTzJdCiAgIDI1 OCw3MDMsODE2ICA/Pz86X192c25wcmludGZfY2hrJzIgWy91c3IvbGliL3N5 c3RlbS9saWJzeXN0ZW1fYy5keWxpYl0KICAgMjU3LDIzNCwxODMgID8/Pzpf cGxhdGZvcm1fYnplcm8kVkFSSUFOVCRNZXJvbSBbL3Vzci9saWIvc3lzdGVt L2xpYnN5c3RlbV9wbGF0Zm9ybS5keWxpYl0KICAgMjQ1LDQ0MSw4NTkgID8/ PzpnZXRtYXRocGFyYW0gWy91c3IvbG9jYWwvYmluL3pzaC01LjMuMS1kZXYt MF9PMl0KICAgMjQyLDkyMSw0MDggID8/PzpwcmVmb3JrIFsvdXNyL2xvY2Fs L2Jpbi96c2gtNS4zLjEtZGV2LTBfTzJdCiAgIDI0MCwzODYsODUwICA/Pz86 cHJlZm9yaycyIFsvdXNyL2xvY2FsL2Jpbi96c2gtNS4zLjEtZGV2LTBfTzJd CiAgIDIzNywyNDYsMDYwICA/Pz86X19zMmJfRDJBIFsvdXNyL2xpYi9zeXN0 ZW0vbGlic3lzdGVtX2MuZHlsaWJdCiAgIDIzNiw1ODMsNjYwICA/Pz86cGFy c2VfY29udGV4dF9zYXZlIFsvdXNyL2xvY2FsL2Jpbi96c2gtNS4zLjEtZGV2 LTBfTzJdCiAgIDIyOCw5NDIsNzMwICA/Pz86X19kaWZmX0QyQSBbL3Vzci9s aWIvc3lzdGVtL2xpYnN5c3RlbV9jLmR5bGliXQogICAyMjQsNzU0LDM2NyAg Pz8/OmlucHVzaCBbL3Vzci9sb2NhbC9iaW4venNoLTUuMy4xLWRldi0wX08y XQogICAyMjEsNTUyLDc4MSAgPz8/OmdldHN0cnZhbHVlIFsvdXNyL2xvY2Fs L2Jpbi96c2gtNS4zLjEtZGV2LTBfTzJdCiAgIDIxNSwzNDksMTkwICA/Pz86 Z2V0X25vZGVfZnJvbV91bmlxdWluZ190YWJsZSBbL3Vzci9saWIvc3lzdGVt L2xpYnN5c3RlbV9tYWxsb2MuZHlsaWJdCiAgIDIwOSw0MjQsOTM1ICA/Pz86 Y29udmJhc2VfcHRyIFsvdXNyL2xvY2FsL2Jpbi96c2gtNS4zLjEtZGV2LTBf TzJdCiAgIDIwMywwMjIsMTAwICA/Pz86ZHVwc3RycGZ4IFsvdXNyL2xvY2Fs L2Jpbi96c2gtNS4zLjEtZGV2LTBfTzJdCiAgIDE5NywxNTMsMDUwICA/Pz86 bGV4X2NvbnRleHRfc2F2ZSBbL3Vzci9sb2NhbC9iaW4venNoLTUuMy4xLWRl di0wX08yXQogICAxOTUsMzc0LDU1OSAgPz8/OnN0cm5jcHkgWy91c3IvbGli L2R5bGRdCiAgIDE5MywyMDksOTk0ICA/Pz86emNvbnRleHRfc2F2ZV9wYXJ0 aWFsIFsvdXNyL2xvY2FsL2Jpbi96c2gtNS4zLjEtZGV2LTBfTzJdCiAgIDE5 MCw0NjksOTU0ICA/Pz86X19kMmJfRDJBIFsvdXNyL2xpYi9zeXN0ZW0vbGli c3lzdGVtX2MuZHlsaWJdCiAgIDE4Nyw5ODMsMzIwICA/Pz86Z2V0bnVtdmFs dWUgWy91c3IvbG9jYWwvYmluL3pzaC01LjMuMS1kZXYtMF9PMl0KICAgMTg3 LDM5OCw4OTQgID8/Pzphcml0aHN1YnN0IFsvdXNyL2xvY2FsL2Jpbi96c2gt NS4zLjEtZGV2LTBfTzJdCiAgIDE4NSwzMjMsODcyICA/Pz86emNvbnRleHRf cmVzdG9yZV9wYXJ0aWFsIFsvdXNyL2xvY2FsL2Jpbi96c2gtNS4zLjEtZGV2 LTBfTzJdCiAgIDE4MSwzODUsNjM2ICA/Pz86aGVuZCBbL3Vzci9sb2NhbC9i aW4venNoLTUuMy4xLWRldi0wX08yXQogICAxODEsMTcwLDU1NCAgPz8/OmFz c2lnbnN0cnZhbHVlIFsvdXNyL2xvY2FsL2Jpbi96c2gtNS4zLjEtZGV2LTBf TzJdCiAgIDE3Nyw0NTMsNDQyICA/Pz86aW5wdXRzZXRsaW5lIFsvdXNyL2xv Y2FsL2Jpbi96c2gtNS4zLjEtZGV2LTBfTzJdCiAgIDE3Niw3MTAsOTIwICA/ Pz86YXNzaWduc3BhcmFtIFsvdXNyL2xvY2FsL2Jpbi96c2gtNS4zLjEtZGV2 LTBfTzJdCiAgIDE2OCw4MjIsMzEzICA/Pz86ZWNnZXRzdHIgWy91c3IvbG9j YWwvYmluL3pzaC01LjMuMS1kZXYtMF9PMl0KICAgMTY1LDYwOCw1NjIgID8/ PzpsZXhfY29udGV4dF9yZXN0b3JlIFsvdXNyL2xvY2FsL2Jpbi96c2gtNS4z LjEtZGV2LTBfTzJdCiAgIDE2NSwxNjQsOTkyICA/Pz86ZXhlY3NpbXBsZScy IFsvdXNyL2xvY2FsL2Jpbi96c2gtNS4zLjEtZGV2LTBfTzJdCiAgIDE1OCwx OTcsMjk1ICA/Pz86X19lcnJvciBbL3Vzci9saWIvc3lzdGVtL2xpYnN5c3Rl bV9rZXJuZWwuZHlsaWJdCiAgIDE1NSw2OTIsNDM2ICA/Pz86X19zZnZ3cml0 ZSBbL3Vzci9saWIvc3lzdGVtL2xpYnN5c3RlbV9jLmR5bGliXQogICAxNTQs MTI0LDg5MiAgPz8/OnN0cmNhdHN1YiBbL3Vzci9sb2NhbC9iaW4venNoLTUu My4xLWRldi0wX08yXQogICAxNTMsNTczLDczMiAgPz8/Ol9fYjJkX0QyQSBb L3Vzci9saWIvc3lzdGVtL2xpYnN5c3RlbV9jLmR5bGliXQogICAxNDEsNTc0 LDM3MCAgPz8/Ol9fcG93NW11bHRfRDJBIFsvdXNyL2xpYi9zeXN0ZW0vbGli c3lzdGVtX2MuZHlsaWJdCiAgIDE0MCw0MDMsMDU0ICA/Pz86cGFyc2Vfc3Vi c2NyaXB0IFsvdXNyL2xvY2FsL2Jpbi96c2gtNS4zLjEtZGV2LTBfTzJdCiAg IDEzMiw1MzksNzk2ICA/Pz86enNobGV4X3Jhd19hZGQgWy91c3IvbG9jYWwv YmluL3pzaC01LjMuMS1kZXYtMF9PMl0KICAgMTMxLDgwOSw5NTYgID8/Pzpm aWxlc3Vic3RyIFsvdXNyL2xvY2FsL2Jpbi96c2gtNS4zLjEtZGV2LTBfTzJd CiAgIDEzMCw5NTIsMTUxICA/Pz86ZmlsZXN1YiBbL3Vzci9sb2NhbC9iaW4v enNoLTUuMy4xLWRldi0wX08yXQogICAxMzAsNDc1LDg5OSAgPz8/OmxvY2Fs ZWNvbnZfbCBbL3Vzci9saWIvc3lzdGVtL2xpYnN5c3RlbV9jLmR5bGliXQog ICAxMTAsMDM1LDM1NiAgPz8/OnB0aHJlYWRfZ2V0c3BlY2lmaWMgWy91c3Iv bGliL3N5c3RlbS9saWJzeXN0ZW1fcHRocmVhZC5keWxpYl0KICAgMTA2LDQ4 Nyw5NTUgID8/PzppbnVuZ2V0YyBbL3Vzci9sb2NhbC9iaW4venNoLTUuMy4x LWRldi0wX08yXQogICAgOTQsODkxLDM3NSAgPz8/Ol9fZGV0ZWN0X3BhdGhf bG9jYWxlIFsvdXNyL2xpYi9zeXN0ZW0vbGlic3lzdGVtX2MuZHlsaWJdCgo= --_----------=_148863539417304691--