From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Lennart Borgman Newsgroups: gmane.emacs.devel Subject: Re: moving window handling into lisp Date: Thu, 13 Aug 2009 12:25:10 +0200 Message-ID: References: <4A8283EF.5080007@gmx.at> <4A82C49A.4000209@gmx.at> <4A82F64B.2030606@gmx.at> <4A83E300.5000104@gmx.at> NNTP-Posting-Host: lo.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary=001485f91ed0ae011d04710359ad X-Trace: ger.gmane.org 1250159144 28875 80.91.229.12 (13 Aug 2009 10:25:44 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Thu, 13 Aug 2009 10:25:44 +0000 (UTC) Cc: Stefan Monnier , emacs-devel@gnu.org To: martin rudalics Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Thu Aug 13 12:25:39 2009 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([199.232.76.165]) by lo.gmane.org with esmtp (Exim 4.50) id 1MbXV3-0001mq-Ma for ged-emacs-devel@m.gmane.org; Thu, 13 Aug 2009 12:25:38 +0200 Original-Received: from localhost ([127.0.0.1]:56803 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1MbXV0-0002GN-7q for ged-emacs-devel@m.gmane.org; Thu, 13 Aug 2009 06:25:34 -0400 Original-Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1MbXUl-0002Fj-Hh for emacs-devel@gnu.org; Thu, 13 Aug 2009 06:25:19 -0400 Original-Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1MbXUg-0002CP-1e for emacs-devel@gnu.org; Thu, 13 Aug 2009 06:25:18 -0400 Original-Received: from [199.232.76.173] (port=46399 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1MbXUf-0002CG-OS for emacs-devel@gnu.org; Thu, 13 Aug 2009 06:25:13 -0400 Original-Received: from mail-yw0-f186.google.com ([209.85.211.186]:53650) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1MbXUe-0007ig-1Q for emacs-devel@gnu.org; Thu, 13 Aug 2009 06:25:13 -0400 Original-Received: by ywh16 with SMTP id 16so1045876ywh.24 for ; Thu, 13 Aug 2009 03:25:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:in-reply-to:references :date:message-id:subject:from:to:cc:content-type; bh=OJzkzROWjwRNBo4ZhDWlHT/CSMtUfGuGswnBIdeoqUI=; b=Tk4lZ8s90HiuvarEqx6KqvaT4fIlGFyhup1KrDIkQgK653DpCemk1uiGP9BZgw4FF4 KkyvIzpnDNsdVd3GpN0BAppPFAWwQpb7b/ZdijjPl1yswvsVKLrkbJ25qhX9d5zvjXvr J2MnCWyjiFHpQJDX6cBIQkxW2qaCEW/xNHMuc= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; b=riHvd8Dt9H2XkrIecMfnVBaJIN/mZZXj0p3gLAyv/dXr4ejCTeoDiKTlh8C/eZyED+ +dEykfsGGKTN2kFkII7G+yqAhBVwEnUN8HMqvZbsegccq3dNpb6QSf3udK21jdFk+gQJ DJSV4WSDvho6Om2pWCGO4iZQXXwbVHATbiahY= Original-Received: by 10.100.174.17 with SMTP id w17mr25503ane.19.1250159110258; Thu, 13 Aug 2009 03:25:10 -0700 (PDT) In-Reply-To: X-detected-operating-system: by monty-python.gnu.org: GNU/Linux 2.6 (newer, 2) X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.devel:114172 Archived-At: --001485f91ed0ae011d04710359ad Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable On Thu, Aug 13, 2009 at 11:57 AM, Lennart Borgman wrote: > On Thu, Aug 13, 2009 at 11:55 AM, martin rudalics wrote: >>> Ehum, as always..., here is a better, somewhat more working version... = ;-) >> >> IIUC you're going down in some window tree and try to distribute the >> available space among the children of each internal window. =C2=A0But th= e >> interesting part is when you have to backtrack because some window >> didn't fit into its parent and you have to shrink (or enlarge) some >> (grand-)parent's sibling. =C2=A0I couldn't find that part :-( > > > And that is the whole point of going up the tree and collecting sizes fir= st... Here is the walking down part too. You have to tell me what you are missing= . --001485f91ed0ae011d04710359ad Content-Type: text/plain; charset=US-ASCII; name="win-alg.el" Content-Disposition: attachment; filename="win-alg.el" Content-Transfer-Encoding: base64 X-Attachment-Id: f_fybcfreq0 Ozs7IHdpbi1hbGcuZWwgLS0tIFdpbmRvdyBzaXplIGNvbXB1dGF0aW9uDQo7Ow0KOzsgQXV0aG9y OiBMZW5uYXJ0IEJvcmdtYW4gKGxlbm5hcnQgTyBib3JnbWFuIEEgZ21haWwgTyBjb20pDQo7OyBD cmVhdGVkOiAyMDA5LTA4LTEyIFdlZA0KOzsgVmVyc2lvbjogMC4xDQo7OyBMYXN0LVVwZGF0ZWQ6 IDIwMDktMDgtMTIgV2VkDQo7Ow0KOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ow0KOzsNCjs7OyBDb2RlOg0KDQoNCjs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ow0KOzs7IFdp bmRvdyBjcmVhdGlvbiBldGMNCg0KOzsoZGVmdW4gd2EtbWFrZS13aW5kb3cgKHdpZHRoIHdtaW4g d21heCBoZWlnaHQgaG1pbiBobWF4KQ0KKGRlZnVuIHdhLW1ha2Utd2luZG93IChuYW1lIHdpZHRo IHdtaW4gd21heCkNCiAgKGxpc3QgKGxpc3QgJ25hbWUgbmFtZSkgICAgICAgICAgICA7OyBFYXNp ZXIgY29tbXVuaWNhdGlvbiAuLi4NCiAgICAgICAgKGxpc3QgJ2NoaWxkIG5pbCkgICAgICAgICAg ICA7OyBDaGlsZCB3aW5kb3dzDQogICAgICAgIChsaXN0ICdzaXplIHdpZHRoIHdtaW4gd21heCkg OzsgT2xkIHNpemUgYW5kIHJlc3RyaWN0aW9ucw0KICAgICAgICAobGlzdCAnY29tcHNpemUgbmls IG5pbCkgICAgIDs7IFNsb3QgZm9yIGNvbXB1dGF0aW9uLCB3bWluIHdtYXgNCiAgICAgICAgKGxp c3QgJ3NldC1zaXplIG5pbCkgICAgICAgICA7OyBTbG90IGZvciBzZXR0aW5nLCB3bWluIHdtYXgN CiAgICAgICAgKSkNCg0KOzsgRml4LW1lOiBNYWtlIGRlZm1hY3JvIHRvIG1ha2UgdGhvc2UgZ2V0 dGVycyBzZXR0ZXJzLi4uIC0gaW5jbHVkaW5nDQo7OyBjaGVja3MuLi4NCihkZWZ1biB3YS1uYW1l ICAod2luZG93KSAobnRoIDEgKG50aCAwIHdpbmRvdykpKQ0KKGRlZnVuIHdhLWNoaWxkICh3aW5k b3cpIChudGggMSAobnRoIDEgd2luZG93KSkpDQooZGVmdW4gd2Etd2lkdGggKHdpbmRvdykgKG50 aCAxIChudGggMiB3aW5kb3cpKSkNCihkZWZ1biB3YS13bWluICAod2luZG93KSAobnRoIDIgKG50 aCAyIHdpbmRvdykpKQ0KKGRlZnVuIHdhLXdtYXggICh3aW5kb3cpIChudGggMyAobnRoIDIgd2lu ZG93KSkpDQooZGVmdW4gd2Etd2NtaW4gKHdpbmRvdykgKG50aCAxIChudGggMyB3aW5kb3cpKSkN CihkZWZ1biB3YS13Y21heCAod2luZG93KSAobnRoIDIgKG50aCAzIHdpbmRvdykpKQ0KKGRlZnVu IHdhLXdzZXQgICh3aW5kb3cpIChudGggMSAobnRoIDQgd2luZG93KSkpDQoNCihkZWZ1biB3YS1z ZXQtbmFtZSAgICh3aW5kb3cgbmFtZSkgIChzZXRjYXIgKG50aGNkciAxIChudGggMCB3aW5kb3cp KSBuYW1lKSkNCihkZWZ1biB3YS1zZXQtY2hpbGQgICh3aW5kb3cgY2hpbGQpIChzZXRjYXIgKG50 aGNkciAxIChudGggMSB3aW5kb3cpKSBjaGlsZCkpDQooZGVmdW4gd2Etc2V0LXdpZHRoICAod2lu ZG93IHdpZHRoKSAoc2V0Y2FyIChudGhjZHIgMSAobnRoIDIgd2luZG93KSkgd2lkdGgpKQ0KKGRl ZnVuIHdhLXNldC13bWluICAgKHdpbmRvdyB3bWluKSAgKHNldGNhciAobnRoY2RyIDIgKG50aCAy IHdpbmRvdykpIHdtaW4pKQ0KKGRlZnVuIHdhLXNldC13bWF4ICAgKHdpbmRvdyB3bWF4KSAgKHNl dGNhciAobnRoY2RyIDMgKG50aCAyIHdpbmRvdykpIHdtYXgpKQ0KKGRlZnVuIHdhLXNldC13Y21p biAgKHdpbmRvdyB3bWluKSAgKHNldGNhciAobnRoY2RyIDEgKG50aCAzIHdpbmRvdykpIHdtaW4p KQ0KKGRlZnVuIHdhLXNldC13Y21heCAgKHdpbmRvdyB3bWF4KSAgKHNldGNhciAobnRoY2RyIDIg KG50aCAzIHdpbmRvdykpIHdtYXgpKQ0KKGRlZnVuIHdhLXNldC13c2V0ICAgKHdpbmRvdyBzaXpl KSAgKHNldGNhciAobnRoY2RyIDEgKG50aCA0IHdpbmRvdykpIHNpemUpKQ0KDQooZGVmdW4gd2Et c2V0LWNoaWxkLXdpbmRvd3MgKHBhcmVudCB2ZXJ0aWNhbCAmcmVzdCBzaXplcykNCiAgKGRvbGlz dCAocyBzaXplcykgKGFzc2VydCAoPSAzIChsZW5ndGggcykpIHQpKQ0KICAobGV0KiAoKHRvdC1n aXZlbiAoYXBwbHkgJysgKG1hcGNhciAobGFtYmRhIChzKSAoY2FyIHMpKSAoY2RyIHNpemVzKSkp KQ0KICAgICAgICAgKHBhci1zaXplICAgICAgIChpZiB2ZXJ0aWNhbCAod2Etd2lkdGggcGFyZW50 KSAod2EtaGVpZ2h0IHBhcmVudCkpKQ0KICAgICAgICAgOzsocGFyLW90aGVyLXNpemUgKGlmIHZl cnRpY2FsICh3YS1oZWlnaHQgcGFyZW50KSAod2Etd2lkdGggcGFyZW50KSkpDQogICAgICAgICAo cmVhbC1zaXplcyAoY29weS1zZXF1ZW5jZSBzaXplcykpDQogICAgICAgICBjaGlsZHJlbg0KICAg ICAgICAgKG51bSAwKSkNCiAgICAoc2V0Y2FyIChudGggMSByZWFsLXNpemVzKSAoLSBwYXItc2l6 ZSB0b3QtZ2l2ZW4pKQ0KICAgIChzZXRxIGNoaWxkcmVuIChtYXBjYXIgKGxhbWJkYSAoc2l6ZSkN CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNldHEgbnVtICgxKyBudW0pKQ0KICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAoaWYgdmVydGljYWwNCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICh3YS1tYWtlLXdpbmRvdyAoZm9ybWF0ICIlcy0lZCIgKHdhLW5hbWUgcGFy ZW50KSBudW0pDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKG50aCAwIHNpemUpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKG50aCAxIHNpemUpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKG50aCAyIHNpemUpKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIDs7KHdhLW1ha2Utd2luZG93IHNpemUgcGFyLW90aGVyLXNpemUpDQogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKSkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWwtc2l6 ZXMpKQ0KICAgICh3YS1zZXQtY2hpbGQgcGFyZW50IGNoaWxkcmVuKSkpDQoNCihkZWZ1biB3YS1j aGVjay1maXQgKHdpbikNCiAgKGxldCAoKHdtaW4gKHdhLXdtaW4gd2luKSkNCiAgICAgICAgKHdt YXggKHdhLXdtYXggd2luKSkNCiAgICAgICAgKHdjbWluICh3YS13Y21pbiB3aW4pKQ0KICAgICAg ICAod2NtYXggKHdhLXdjbWF4IHdpbikpKQ0KICAgICh3aGVuIChhbmQgd21heCB3Y21pbikNCiAg ICAgICh1bmxlc3MgKDw9IHdjbWluIHdtYXgpDQogICAgICAgIChlcnJvciAiV2luZG93ICVzIGlz IHRvbyBzbWFsbCwgbWluPSVkLCBidXQgY2FuIGJlIG1heD0lZCIgKHdhLW5hbWUgd2luKSB3Y21p biB3bWF4KSkpDQogICAgKHdoZW4gKGFuZCB3Y21heCB3bWluKQ0KICAgICAgKHVubGVzcyAoPD0g d2NtYXggd21pbikNCiAgICAgICAgKGVycm9yICJXaW5kb3cgJXMncyBjaGlsZHMgYXJlIHRvbyBz bWFsbCwgbWF4PSVkLCBidXQgY2FuIGJlIG1pbj0lZCIgKHdhLW5hbWUgd2luKSB3Y21heCB3bWlu KSkpKSkNCg0KDQo7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7OzsNCjs7OyBDb21wdXRhdGlvbiBvZiBzaXplcw0KDQooZGVmdW4gd2EtY2xlYXItY29tcHV0 ZWQgKHdpbikNCiAgKHdhLXNldC13Y21pbiB3aW4gbmlsKQ0KICAod2Etc2V0LXdjbWF4IHdpbiBu aWwpDQogIChkb2xpc3QgKGMgKHdhLWNoaWxkIHdpbikpDQogICAgKHdhLWNsZWFyLWNvbXB1dGVk IGMpKSkNCg0KKGRlZnVuIHdhLWNvbXB1dGUtcmVxdWlyZWQgKHdpbikNCiAgIldhbGsgdXAgY29s bGVjdGluZyBuZWVkZWQgc2l6ZXMuIg0KICAobGV0ICgoY2hpbGRzICh3YS1jaGlsZCB3aW4pKQ0K ICAgICAgICAod21pbiAod2Etd21pbiB3aW4pKQ0KICAgICAgICAod21heCAod2Etd21heCB3aW4p KQ0KICAgICAgICAoY21pbiAwKQ0KICAgICAgICAoY21heCBuaWwpKQ0KICAgICh3aGVuIGNoaWxk cw0KICAgICAgKGRvbGlzdCAoYyBjaGlsZHMpDQogICAgICAgIChsZXQqICgocmVzICh3YS1jb21w dXRlLXJlcXVpcmVkIGMpKQ0KICAgICAgICAgICAgICAgKHJlcy1taW4gKG50aCAwIHJlcykpDQog ICAgICAgICAgICAgICAocmVzLW1heCAobnRoIDEgcmVzKSkpDQogICAgICAgICAgOzsgSnVzdCBz dW0gdGhlIE1JTg0KICAgICAgICAgIChzZXRxIGNtaW4gKCsgY21pbiByZXMtbWluKSkNCiAgICAg ICAgICAoaWYgcmVzLW1heA0KICAgICAgICAgICAgICA7OyAuLi4gb2ssIGxldCB1cyBzdW0gTUFY IHRvIHNlZSBob3cgYmlnIHdlIGNhbiBiZSAuLi4NCiAgICAgICAgICAgICAgKGlmIChudW1iZXJw IGNtYXgpDQogICAgICAgICAgICAgICAgICAoc2V0cSBjbWF4ICgrIGNtYXggcmVzLW1heCkpDQog ICAgICAgICAgICAgICAgKHNldHEgY21heCByZXMtbWF4KSkNCiAgICAgICAgICAgIDs7IEh1cnJh eSwgYXQgbGVhc3Qgb25lIGNoaWxkIGNhbiBncm93IQ0KICAgICAgICAgICAgKHNldHEgY21heCBu aWwpKSkpKQ0KICAgICh3aGVuIHdtaW4gKHNldHEgY21pbiAobWF4IHdtaW4gKG9yIGNtaW4gd21p bikpKSkNCiAgICAod2hlbiB3bWF4IChzZXRxIGNtYXggKG1pbiB3bWF4IChvciBjbWF4IHdtYXgp KSkpDQogICAgKHdhLXNldC13Y21pbiB3aW4gY21pbikNCiAgICAod2Etc2V0LXdjbWF4IHdpbiBj bWF4KQ0KICAgICh3YS1jaGVjay1maXQgd2luKQ0KICAgIChsaXN0ICh3YS13Y21pbiB3aW4pDQog ICAgICAgICAgKHdhLXdjbWF4IHdpbikpKSkNCg0KKGRlZnVuIHdhLWNvbXB1dGUtd2FudGVkICh3 aW4gc3RyYXRlZ3kpDQogICJXYWxrIGRvd24gY29tcHV0ZSBzaXplcy4iDQogIDs7IFNldCByb290 IHdpbmRvdyBzaXplDQogICh1bmxlc3MgKHdhLXdzZXQgd2luKSAod2Etc2V0LXdzZXQgd2luICh3 YS13aWR0aCB3aW4pKSkNCiAgKGxldCAoKGNtaW4gICAod2Etd2NtaW4gIHdpbikpDQogICAgICAg IChjbWF4ICAgKHdhLXdjbWF4ICB3aW4pKQ0KICAgICAgICAod2lkdGggICh3YS13aWR0aCB3aW4p KQ0KICAgICAgICAoY2hpbGRzICh3YS1jaGlsZCB3aW4pKQ0KICAgICAgICApDQogIChjYXNlIHN0 cmF0ZWd5DQogICAgKCdlcS1zaXplcw0KICAgICAobGV0ICgNCiAgICAgICAgICAgKHJlc3Qtd2lk dGggd2lkdGgpDQogICAgICAgICAgIChnb2FsICgvIHdpZHRoIChsZW5ndGggY2hpbGRzKSkpDQog ICAgICAgICAgIChyZXN0LWNoaWxkcyAoY29weS1zZXF1ZW5jZSBjaGlsZHMpKSkNCiAgICAgICA7 OyBDbGVhciBjaGlsZHMNCiAgICAgICAoZG9saXN0IChjIGNoaWxkcykgKHdhLXNldC13c2V0IGMg bmlsKSkNCiAgICAgICA7OyBDaGVjayBjaGlsZCBtaW4gcmVxdWlyZW1lbnRzDQogICAgICAgKGRv bGlzdCAoYyAoY29weS1zZXF1ZW5jZSByZXN0LWNoaWxkcykpDQogICAgICAgICAobGV0ICgod2Nt aW4gKHdhLXdjbWluIGMpKSkNCiAgICAgICAgICAgKHdoZW4gKGFuZCB3Y21pbiAoPD0gZ29hbCB3 Y21pbikpDQogICAgICAgICAgICAgKHdhLXNldC13c2V0IGMgKHdhLXdjbWluIGMpKQ0KICAgICAg ICAgICAgIChzZXRxIHJlc3QtY2hpbGRzIChkZWxldGUgYyByZXN0LWNoaWxkcykpDQogICAgICAg ICAgICAgKHNldHEgcmVzdC13aWR0aCAoLSByZXN0LXdpZHRoICh3YS13Y21pbiBjKSkpKSkpDQog ICAgICAgKHNldHEgZ29hbCAoLyByZXN0LXdpZHRoIChsZW5ndGggY2hpbGRzKSkpDQogICAgICAg OzsgQ2hlY2sgY2hpbGQgbWF4IHJlcXVpcmVtZW50cw0KICAgICAgIChkb2xpc3QgKGMgKGNvcHkt c2VxdWVuY2UgcmVzdC1jaGlsZHMpKQ0KICAgICAgICAgKGxldCAoKHdjbWF4ICh3YS13Y21heCBj KSkpDQogICAgICAgICAgICh3aGVuIChhbmQgd2NtYXggKD49IGdvYWwgd2NtYXgpKQ0KICAgICAg ICAgICAgICh3YS1zZXQtd3NldCBjICh3YS13Y21heCBjKSkNCiAgICAgICAgICAgICAoc2V0cSBy ZXN0LWNoaWxkcyAoZGVsZXRlIGMgcmVzdC1jaGlsZHMpKQ0KICAgICAgICAgICAgIChzZXRxIHJl c3Qtd2lkdGggKC0gcmVzdC13aWR0aCAod2Etd2NtYXggYykpKSkpKQ0KICAgICAgIChzZXRxIGdv YWwgKC8gcmVzdC13aWR0aCAobGVuZ3RoIGNoaWxkcykpKQ0KICAgICAgIDs7IERpc3RyaWJ1dGUg dGhlIHJlc3QsIHRha2luZyBjYXJlIG9mIHJvdW5kaW5ncw0KICAgICAgICh3YS1zZXQtd3NldCAo Y2FyIHJlc3QtY2hpbGRzKQ0KICAgICAgICAgICAgICAgICAgICgtIHJlc3Qtd2lkdGggKCogZ29h bCAoMS0gKGxlbmd0aCByZXN0LWNoaWxkcykpKSkpDQogICAgICAgKGRvbGlzdCAoYyAoY2RyIHJl c3QtY2hpbGRzKSkNCiAgICAgICAgICh3YS1zZXQtd3NldCBjIGdvYWwpKSkpDQogICAgKHQgKGVy cm9yICJVbmtub3duIHJ1bGU6ICVzIiBydWxlKSkpDQogIDs7IENoZWNrDQogIChsZXQgKCh3IDAp KQ0KICAgIChkb2xpc3QgKGMgY2hpbGRzKQ0KICAgICAgKHNldHEgdyAoKyB3ICh3YS13c2V0IGMp KSkpDQogICAgKHVubGVzcyAoPSB3ICh3YS13c2V0IHdpbikpDQogICAgICAoZXJyb3IgIkJhZCBz ZXQgc2l6ZXMgY2hpbGQgc3VtIHc9JWQsIHdpbiB3aWR0aD0lZCIgdyAod2Etd3NldCB3aW4pKSkp DQogICkpDQoNCjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ow0KOzs7IFRlc3RpbmcgcGFydA0KDQooZGVmdmFyIHdhLXJvb3Qtd2luZG93IG5pbCkNCg0KKGRl ZnVuIHdhLWFkZC10ZXN0LWNoaWxkcyAoKQ0KICAod2Etc2V0LWNoaWxkLXdpbmRvd3Mgd2Etcm9v dC13aW5kb3cgdA0KICAgICAgICAgICAgICAgICAgICAgICAgICcobmlsIG5pbCBuaWwpDQogICAg ICAgICAgICAgICAgICAgICAgICAgJyg1IDQgbmlsKQ0KICAgICAgICAgICAgICAgICAgICAgICAg ICcoOCBuaWwgbmlsKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICcoNCAzIG5pbCkNCiAgICAg ICAgICAgICAgICAgICAgICAgICApKQ0KDQooc2V0cSB3YS1yb290LXdpbmRvdyAod2EtbWFrZS13 aW5kb3cgIlJvb3QiIDgwIG5pbCBuaWwpKQ0KKHNldHEgd2Etcm9vdC13aW5kb3cgKHdhLW1ha2Ut d2luZG93ICJSb290IiA4MCBuaWwgOCkpDQooc2V0cSB3YS1yb290LXdpbmRvdyAod2EtbWFrZS13 aW5kb3cgIlJvb3QiIDgwIG5pbCA2KSkNCihzZXRxIHdhLXJvb3Qtd2luZG93ICh3YS1tYWtlLXdp bmRvdyAiUm9vdCIgODAgNSBuaWwpKQ0KKHNldHEgd2Etcm9vdC13aW5kb3cgKHdhLW1ha2Utd2lu ZG93ICJSb290IiA4MCAxNSBuaWwpKQ0KDQo7OyAod2EtY2hpbGQgd2Etcm9vdC13aW5kb3cpDQo7 OyAod2Etd2lkdGggd2Etcm9vdC13aW5kb3cpDQo7OyAod2Etd21pbiB3YS1yb290LXdpbmRvdykN Cjs7ICh3YS13bWF4IHdhLXJvb3Qtd2luZG93KQ0KOzsgKHdhLWNsZWFyLWNvbXB1dGVkIHdhLXJv b3Qtd2luZG93KQ0KDQood2EtYWRkLXRlc3QtY2hpbGRzKQ0KKHdhLWNvbXB1dGUtcmVxdWlyZWQg d2Etcm9vdC13aW5kb3cpDQood2EtY29tcHV0ZS13YW50ZWQgICB3YS1yb290LXdpbmRvdyAnZXEt c2l6ZXMpDQooZGVzY3JpYmUtdmFyaWFibGUgJ3dhLXJvb3Qtd2luZG93KQ0KDQoNCg0KOzs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ow0KOzs7IHdpbi1hbGcuZWwgZW5kcyBoZXJlDQo= --001485f91ed0ae011d04710359ad--