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 14:49:19 +0200 Message-ID: References: <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=001636ed66373b6a8e0471055d4f X-Trace: ger.gmane.org 1250168314 23113 80.91.229.12 (13 Aug 2009 12:58:34 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Thu, 13 Aug 2009 12:58:34 +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 14:58:30 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 1MbZsz-0006IY-OG for ged-emacs-devel@m.gmane.org; Thu, 13 Aug 2009 14:58:30 +0200 Original-Received: from localhost ([127.0.0.1]:39206 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1MbZst-0006h8-Tr for ged-emacs-devel@m.gmane.org; Thu, 13 Aug 2009 08:58:24 -0400 Original-Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1MbZkF-0005GX-Gt for emacs-devel@gnu.org; Thu, 13 Aug 2009 08:49:27 -0400 Original-Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1MbZkA-0005ER-3u for emacs-devel@gnu.org; Thu, 13 Aug 2009 08:49:26 -0400 Original-Received: from [199.232.76.173] (port=34843 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1MbZk9-0005EK-VB for emacs-devel@gnu.org; Thu, 13 Aug 2009 08:49:22 -0400 Original-Received: from mail-yx0-f172.google.com ([209.85.210.172]:43261) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1MbZk9-0005Zd-Ds for emacs-devel@gnu.org; Thu, 13 Aug 2009 08:49:21 -0400 Original-Received: by yxe2 with SMTP id 2so971638yxe.14 for ; Thu, 13 Aug 2009 05:49:20 -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=btu/0eUb99xRaioKbYA73YncFmUvR8cB0YeKY2ntHC0=; b=GhJTXrTIEi/nKT2+tRTHPYxOwNRrHfqKLoET5Z84YYCV2EZCDjmTgeyh9Yak0ZzcdK E7V2AbZ7lhuGVOPVSmpML54ofV9Fn9PzFO2Zx2a8Vygx1jRivkHKDPMJp3zk+5vNIiNg qNVc736NlmwIhHGaygauAkrjHGl4k+x2JY/RY= 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=TcGpUzzDvFSnJmsj/FoXSjyJbWayCZbVYWV21BtH725ZHnScsBXWOvckqexLQvPrtV rM1s60yWdgAuiqRXiZh1BFc11x5fMS2dcUjaM3SAw2SXOzY7AiZ2Ks3rYOj814knAWLU vs+p66roGkRV55V/wdt+GwxHHYzPxEkRWVIiE= Original-Received: by 10.101.88.12 with SMTP id q12mr915354anl.117.1250167759792; Thu, 13 Aug 2009 05:49:19 -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:114175 Archived-At: --001636ed66373b6a8e0471055d4f Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable This one is easier to play with. On Thu, Aug 13, 2009 at 1:32 PM, Lennart Borgman wrote: > New, version. This one does walk down too... ;-) > > > On Thu, Aug 13, 2009 at 12:25 PM, Lennart > Borgman wrote: >> On Thu, Aug 13, 2009 at 11:57 AM, Lennart >> Borgman wrote: >>> On Thu, Aug 13, 2009 at 11:55 AM, martin rudalics wrot= e: >>>>> 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 = the >>>> 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 f= irst... >> >> >> Here is the walking down part too. You have to tell me what you are miss= ing. >> > --001636ed66373b6a8e0471055d4f 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_fybhl3fo1 Ozs7IHdpbi1hbGcuZWwgLS0tIFdpbmRvdyBzaXplIGNvbXB1dGF0aW9uDQo7Ow0KOzsgQXV0aG9y OiBMZW5uYXJ0IEJvcmdtYW4gKGxlbm5hcnQgTyBib3JnbWFuIEEgZ21haWwgTyBjb20pDQo7OyBD cmVhdGVkOiAyMDA5LTA4LTEyIFdlZA0KOzsgVmVyc2lvbjogMC4yDQo7OyBMYXN0LVVwZGF0ZWQ6 IDIwMDktMDgtMTMgVGh1DQo7Ow0KOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ow0KOzsNCjs7OyBDb2RlOg0KDQoNCjs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ow0KOzs7IFdp bmRvdyBjcmVhdGlvbiBldGMNCg0KOzsoZGVmdW4gd2EtbWFrZS13aW5kb3cgKHdpZHRoIHd1bWlu IHd1bWF4IGhlaWdodCBobWluIGhtYXgpDQooZGVmdW4gd2EtbWFrZS13aW5kb3cgKG5hbWUgd2lk dGggd3VtaW4gd3VtYXgpDQogIChsaXN0IChsaXN0ICduYW1lIG5hbWUpICAgICAgICAgICAgOzsg RWFzaWVyIGNvbW11bmljYXRpb24gLi4uDQogICAgICAgIChsaXN0ICdjaGlsZCBuaWwpICAgICAg ICAgICAgOzsgQ2hpbGQgd2luZG93cw0KICAgICAgICAobGlzdCAndXNyLXNpemUgd3VtaW4gd3Vt YXgpIDs7IFJlc3RyaWN0aW9ucw0KICAgICAgICAobGlzdCAncmVxLXNpemUgbmlsIG5pbCkgICAg IDs7IFNsb3QgZm9yIGNvbXB1dGF0ZWQgcmVxdWlyZW1lbnRzLCB3dW1pbiB3dW1heA0KICAgICAg ICAobGlzdCAnc2V0LXNpemUgbmlsIHdpZHRoKSAgICAgICA7OyBTbG90IGZvciBzZXR0aW5nIG5l dyBzaXplDQogICAgICAgICkpDQoNCjs7IEZpeC1tZTogTWFrZSBkZWZtYWNybyB0byBtYWtlIHRo b3NlIGdldHRlcnMgc2V0dGVycy4uLiAtIGluY2x1ZGluZw0KOzsgY2hlY2tzLi4uDQoNCihkZWZ1 biB3YS1uYW1lICAod2luZG93KSAobnRoIDEgKG50aCAwIHdpbmRvdykpKSA7OyAnbmFtZQ0KKGRl ZnVuIHdhLWNoaWxkICh3aW5kb3cpIChudGggMSAobnRoIDEgd2luZG93KSkpIDs7ICdjaGlsZA0K KGRlZnVuIHdhLXd1bWluICh3aW5kb3cpIChudGggMSAobnRoIDIgd2luZG93KSkpIDs7ICd1c3It c2l6ZQ0KKGRlZnVuIHdhLXd1bWF4ICh3aW5kb3cpIChudGggMiAobnRoIDIgd2luZG93KSkpIDs7 ICd1c3Itc2l6ZQ0KKGRlZnVuIHdhLXdybWluICh3aW5kb3cpIChudGggMSAobnRoIDMgd2luZG93 KSkpIDs7ICdyZXEtc2l6ZQ0KKGRlZnVuIHdhLXdybWF4ICh3aW5kb3cpIChudGggMiAobnRoIDMg d2luZG93KSkpIDs7ICdyZXEtc2l6ZQ0KKGRlZnVuIHdhLXdzZXQgICh3aW5kb3cpIChudGggMiAo bnRoIDQgd2luZG93KSkpIDs7ICdzZXQtc2l6ZQ0KDQooZGVmdW4gd2Etc2V0LW5hbWUgICAod2lu ZG93IG5hbWUpICAoc2V0Y2FyIChudGhjZHIgMSAobnRoIDAgd2luZG93KSkgbmFtZSkpICA7OyAn bmFtZQ0KKGRlZnVuIHdhLXNldC1jaGlsZCAgKHdpbmRvdyBjaGlsZCkgKHNldGNhciAobnRoY2Ry IDEgKG50aCAxIHdpbmRvdykpIGNoaWxkKSkgOzsgJ2NoaWxkDQooZGVmdW4gd2Etc2V0LXd1bWlu ICAod2luZG93IHd1bWluKSAoc2V0Y2FyIChudGhjZHIgMSAobnRoIDIgd2luZG93KSkgd3VtaW4p KSA7OyAndXNyLXNpemUNCihkZWZ1biB3YS1zZXQtd3VtYXggICh3aW5kb3cgd3VtYXgpIChzZXRj YXIgKG50aGNkciAyIChudGggMiB3aW5kb3cpKSB3dW1heCkpIDs7ICd1c3Itc2l6ZQ0KKGRlZnVu IHdhLXNldC13cm1pbiAgKHdpbmRvdyB3dW1pbikgKHNldGNhciAobnRoY2RyIDEgKG50aCAzIHdp bmRvdykpIHd1bWluKSkgOzsgJ3JlcS1zaXplDQooZGVmdW4gd2Etc2V0LXdybWF4ICAod2luZG93 IHd1bWF4KSAoc2V0Y2FyIChudGhjZHIgMiAobnRoIDMgd2luZG93KSkgd3VtYXgpKSA7OyAncmVx LXNpemUNCihkZWZ1biB3YS1zZXQtd3NldCAgICh3aW5kb3cgc2l6ZSkgIChzZXRjYXIgKG50aGNk ciAyIChudGggNCB3aW5kb3cpKSBzaXplKSkgIDs7ICdzZXQtc2l6ZQ0KDQooZGVmdW4gd2Etc2V0 LWZsYWcgICAod2luZG93IGZsYWcpICAoc2V0Y2FyIChudGhjZHIgMSAobnRoIDQgd2luZG93KSkg ZmxhZykpICA7OyAnc2V0LXNpemUNCg0KKGRlZnZhciB3YS1mYWlsZWQgbmlsKQ0KDQooZGVmdW4g d2EtZXJyb3IgKGZvcm1hdC1zdHJpbmcgJnJlc3QgYXJncykNCiAgKHNldHEgd2EtZmFpbGVkIHQp DQogIChhcHBseSAnbWVzc2FnZSAocHJvcGVydGl6ZSBmb3JtYXQtc3RyaW5nICdmYWNlICdzZWNv bmRhcnktc2VsZWN0aW9uKQ0KICAgICAgICAgYXJncykNCiAgKHRocm93ICd3YS1lcnJvciBuaWwp KQ0KDQooZGVmdW4gd2Etc2V0LWNoaWxkLXdpbmRvd3MgKHBhcmVudCB2ZXJ0aWNhbCAmcmVzdCBz aXplcykNCiAgKHVubGVzcyB3YS1mYWlsZWQgKGFzc2VydCAoPCAxIChsZW5ndGggc2l6ZXMpKSB0 KSkNCiAgKGxldCAoY2hpbGRyZW4NCiAgICAgICAgKG51bSAwKSkNCiAgICAoc2V0cSBjaGlsZHJl biAobWFwY2FyIChsYW1iZGEgKHNpemUpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIChz ZXRxIG51bSAoMSsgbnVtKSkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGlmIHZlcnRp Y2FsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAod2EtbWFrZS13aW5kb3cgKGZv cm1hdCAiJXMtJWQiICh3YS1uYW1lIHBhcmVudCkgbnVtKQ0KICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pbA0KICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIChudGggMCBzaXplKQ0KICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChudGggMSBzaXplKSkpKQ0KICAgICAgICAg ICAgICAgICAgICAgICAgICAgc2l6ZXMpKQ0KICAgICh3YS1zZXQtY2hpbGQgcGFyZW50IGNoaWxk cmVuKQ0KICAgIHBhcmVudCkpDQoNCihkZWZ1biB3YS1jaGVjay1maXQgKHdpbikNCiAgKGxldCAo KHd1bWluICh3YS13dW1pbiB3aW4pKQ0KICAgICAgICAod3VtYXggKHdhLXd1bWF4IHdpbikpDQog ICAgICAgICh3cm1pbiAod2Etd3JtaW4gd2luKSkNCiAgICAgICAgKHdybWF4ICh3YS13cm1heCB3 aW4pKQ0KICAgICAgICAod3NldCAgKHdhLXdzZXQgd2luKSkpDQogICAgKHdhLXNldC1mbGFnIHdp biAnRkFJTEVEKQ0KICAgIDs7IFRvcCB3aW5kb3cNCiAgICAod2hlbiAoYW5kIHdzZXQgd3JtaW4p DQogICAgICAodW5sZXNzICg8PSB3cm1pbiB3c2V0KQ0KICAgICAgICAod2EtZXJyb3IgIldpbmRv dyAlcyBzZXQgc2l6ZSB0b28gc21hbGw9JWQsIG1pbj0lZCIgKHdhLW5hbWUgd2luKSB3c2V0IHdy bWluKSkpDQogICAgKHdoZW4gKGFuZCB3c2V0IHdybWF4KQ0KICAgICAgKHVubGVzcyAoPj0gd3Jt YXggd3NldCkNCiAgICAgICAgKHdhLWVycm9yICJXaW5kb3cgJXMgc2V0IHNpemUgdG9vIGxhcmdl PSVkLCBtYXg9JXMiICh3YS1uYW1lIHdpbikgd3NldCB3cm1heCkpKQ0KICAgIDs7IEFsbA0KICAg ICh3aGVuIChhbmQgd3VtYXggd3JtaW4pDQogICAgICAodW5sZXNzICg8PSB3cm1pbiB3dW1heCkN CiAgICAgICAgKHdhLWVycm9yICJXaW5kb3cgJXMgaXMgdG9vIHNtYWxsLCBtaW49JWQsIGJ1dCBj YW4gYmUgbWF4PSVkIiAod2EtbmFtZSB3aW4pIHdybWluIHd1bWF4KSkpDQogICAgKHdoZW4gKGFu ZCB3cm1heCB3dW1pbikNCiAgICAgICh1bmxlc3MgKD49IHdybWF4IHd1bWluKQ0KICAgICAgICAo d2EtZXJyb3IgIldpbmRvdyAlcydzIGNoaWxkcyBhcmUgdG9vIHNtYWxsLCBtYXg9JWQsIGJ1dCBj YW4gYmUgbWluPSVkIiAod2EtbmFtZSB3aW4pIHdybWF4IHd1bWluKSkpDQogICAgKHdhLXNldC1m bGFnIHdpbiAnT0spKSkNCg0KDQo7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7OzsNCjs7OyBDb21wdXRhdGlvbiBvZiBzaXplcw0KDQooZGVmdW4gd2EtY2xl YXItY29tcHV0ZWQgKHdpbikNCiAgKHdhLXNldC13cm1pbiB3aW4gbmlsKQ0KICAod2Etc2V0LXdy bWF4IHdpbiBuaWwpDQogICh3YS1zZXQtd3NldCAgd2luIG5pbCkNCiAgKGRvbGlzdCAoYyAod2Et Y2hpbGQgd2luKSkNCiAgICAod2EtY2xlYXItY29tcHV0ZWQgYykpKQ0KDQooZGVmdW4gd2EtaW5p dC1mYWlsLWZsYWcgKHdpbikNCiAgKHdhLXNldC1mbGFnIHdpbiAnSU5JVCkNCiAgKGRvbGlzdCAo YyAod2EtY2hpbGQgd2luKSkNCiAgICAod2EtaW5pdC1mYWlsLWZsYWcgYykpKQ0KDQooZGVmdW4g d2EtY29tcHV0ZS1yZXF1aXJlZCAod2luKQ0KICAiV2FsayB1cCBjb2xsZWN0aW5nIG5lZWRlZCBz aXplcy4iDQogIChsZXQgKChjaGlsZHMgKHdhLWNoaWxkIHdpbikpDQogICAgICAgICh3dW1pbiAo d2Etd3VtaW4gd2luKSkNCiAgICAgICAgKHd1bWF4ICh3YS13dW1heCB3aW4pKQ0KICAgICAgICAo Y21pbiAwKQ0KICAgICAgICAoY21heCBuaWwpKQ0KICAgICh3aGVuIGNoaWxkcw0KICAgICAgOzsg Q2xlYXIgY2hpbGRzIHNldCBzaXplcywgd2UgZG8gbm90IGtub3cgdGhlbSBoZXJlDQogICAgICAo ZG9saXN0IChjIGNoaWxkcykgKHdhLXNldC13c2V0IGMgbmlsKSkNCiAgICAgIChkb2xpc3QgKGMg Y2hpbGRzKQ0KICAgICAgICAobGV0KiAoKHJlcyAod2EtY29tcHV0ZS1yZXF1aXJlZCBjKSkNCiAg ICAgICAgICAgICAgIChyZXMtbWluIChudGggMCByZXMpKQ0KICAgICAgICAgICAgICAgKHJlcy1t YXggKG50aCAxIHJlcykpKQ0KICAgICAgICAgIDs7IEp1c3Qgc3VtIHRoZSBNSU4NCiAgICAgICAg ICAoc2V0cSBjbWluICgrIGNtaW4gcmVzLW1pbikpDQogICAgICAgICAgKGlmIHJlcy1tYXgNCiAg ICAgICAgICAgICAgOzsgLi4uIG9rLCBsZXQgdXMgc3VtIE1BWCB0byBzZWUgaG93IGJpZyB3ZSBj YW4gYmUgLi4uDQogICAgICAgICAgICAgIChpZiAobnVtYmVycCBjbWF4KQ0KICAgICAgICAgICAg ICAgICAgKHNldHEgY21heCAoKyBjbWF4IHJlcy1tYXgpKQ0KICAgICAgICAgICAgICAgIChzZXRx IGNtYXggcmVzLW1heCkpDQogICAgICAgICAgICA7OyBIdXJyYXksIGF0IGxlYXN0IG9uZSBjaGls ZCBjYW4gZ3JvdyENCiAgICAgICAgICAgIChzZXRxIGNtYXggbmlsKSkpKSkNCiAgICAod2hlbiB3 dW1pbiAoc2V0cSBjbWluIChtYXggd3VtaW4gKG9yIGNtaW4gd3VtaW4pKSkpDQogICAgKHdoZW4g d3VtYXggKHNldHEgY21heCAobWluIHd1bWF4IChvciBjbWF4IHd1bWF4KSkpKQ0KICAgIDs7IFNh bml0eQ0KICAgICh3aGVuICg9IGNtaW4gMCkgKHNldHEgY21pbiAxKSkNCiAgICAodW5sZXNzIHdh LWZhaWxlZCAoYXNzZXJ0IChvciAobm90IGNtaW4pICg8PSAxIGNtaW4pKSB0KSkNCiAgICAodW5s ZXNzIHdhLWZhaWxlZCAoYXNzZXJ0IChvciAobm90IGNtYXgpICg8PSAxIGNtYXgpKSB0KSkNCiAg ICAod2Etc2V0LXdybWluIHdpbiBjbWluKQ0KICAgICh3YS1zZXQtd3JtYXggd2luIGNtYXgpDQog ICAgKHdhLWNoZWNrLWZpdCB3aW4pDQogICAgKGxpc3QgKHdhLXdybWluIHdpbikNCiAgICAgICAg ICAod2Etd3JtYXggd2luKSkpKQ0KDQooZGVmdW4gd2EtY29tcHV0ZS13YW50ZWQgKHdpbiBzdHJh dGVneSkNCiAgIldhbGsgZG93biBjb21wdXRlIHNpemVzLiINCiAgKHdoZW4gKHdhLWNoaWxkIHdp bikNCiAgICAobGV0ICgoY21pbiAgICh3YS13cm1pbiAgd2luKSkNCiAgICAgICAgICAoY21heCAg ICh3YS13cm1heCAgd2luKSkNCiAgICAgICAgICAod2lkdGggICh3YS13c2V0IHdpbikpDQogICAg ICAgICAgKGNoaWxkcyAod2EtY2hpbGQgd2luKSkpDQogICAgICAoY2FzZSBzdHJhdGVneQ0KICAg ICAgICAoJ2VxLXNpemVzDQogICAgICAgICAobGV0ICgocmVzdC13aWR0aCB3aWR0aCkNCiAgICAg ICAgICAgICAgIChnb2FsICgvIHdpZHRoIChsZW5ndGggY2hpbGRzKSkpDQogICAgICAgICAgICAg ICAocmVzdC1jaGlsZHMgKGNvcHktc2VxdWVuY2UgY2hpbGRzKSkpDQogICAgICAgICAgIDs7IENs ZWFyIGNoaWxkcw0KICAgICAgICAgICAoZG9saXN0IChjIGNoaWxkcykgKHdhLXNldC13c2V0IGMg bmlsKSkNCiAgICAgICAgICAgOzsgQ2hlY2sgY2hpbGQgbWluIHJlcXVpcmVtZW50cw0KICAgICAg ICAgICAoZG9saXN0IChjIChjb3B5LXNlcXVlbmNlIHJlc3QtY2hpbGRzKSkNCiAgICAgICAgICAg ICAobGV0ICgod3JtaW4gKHdhLXdybWluIGMpKSkNCiAgICAgICAgICAgICAgICh3aGVuIChhbmQg d3JtaW4gKDw9IGdvYWwgd3JtaW4pKQ0KICAgICAgICAgICAgICAgICAod2Etc2V0LXdzZXQgYyAo d2Etd3JtaW4gYykpDQogICAgICAgICAgICAgICAgIChzZXRxIHJlc3QtY2hpbGRzIChkZWxldGUg YyByZXN0LWNoaWxkcykpDQogICAgICAgICAgICAgICAgIChzZXRxIHJlc3Qtd2lkdGggKC0gcmVz dC13aWR0aCAod2Etd3JtaW4gYykpKSkpKQ0KICAgICAgICAgICAoc2V0cSBnb2FsICgvIHJlc3Qt d2lkdGggKGxlbmd0aCBjaGlsZHMpKSkNCiAgICAgICAgICAgOzsgQ2hlY2sgY2hpbGQgbWF4IHJl cXVpcmVtZW50cw0KICAgICAgICAgICAoZG9saXN0IChjIChjb3B5LXNlcXVlbmNlIHJlc3QtY2hp bGRzKSkNCiAgICAgICAgICAgICAobGV0ICgod3JtYXggKHdhLXdybWF4IGMpKSkNCiAgICAgICAg ICAgICAgICh3aGVuIChhbmQgd3JtYXggKD49IGdvYWwgd3JtYXgpKQ0KICAgICAgICAgICAgICAg ICAod2Etc2V0LXdzZXQgYyAod2Etd3JtYXggYykpDQogICAgICAgICAgICAgICAgIChzZXRxIHJl c3QtY2hpbGRzIChkZWxldGUgYyByZXN0LWNoaWxkcykpDQogICAgICAgICAgICAgICAgIChzZXRx IHJlc3Qtd2lkdGggKC0gcmVzdC13aWR0aCAod2Etd3JtYXggYykpKSkpKQ0KICAgICAgICAgICAo c2V0cSBnb2FsICgvIHJlc3Qtd2lkdGggKGxlbmd0aCBjaGlsZHMpKSkNCiAgICAgICAgICAgOzsg RGlzdHJpYnV0ZSB0aGUgcmVzdCwgdGFraW5nIGNhcmUgb2Ygcm91bmRpbmdzDQogICAgICAgICAg ICh3YS1zZXQtd3NldCAoY2FyIHJlc3QtY2hpbGRzKQ0KICAgICAgICAgICAgICAgICAgICAgICAg KC0gcmVzdC13aWR0aCAoKiBnb2FsICgxLSAobGVuZ3RoIHJlc3QtY2hpbGRzKSkpKSkNCiAgICAg ICAgICAgKGRvbGlzdCAoYyAoY2RyIHJlc3QtY2hpbGRzKSkNCiAgICAgICAgICAgICAod2Etc2V0 LXdzZXQgYyBnb2FsKSkpKQ0KICAgICAgICAodCAod2EtZXJyb3IgIlVua25vd24gc3RyYXRlZ3k6 ICVzIiBzdHJhdGVneSkpKQ0KICAgICAgOzsgQ2hlY2sNCiAgICAgIChsZXQgKCh3IDApKQ0KICAg ICAgICAoZG9saXN0IChjIGNoaWxkcykNCiAgICAgICAgICAobGV0ICgod3NldCAod2Etd3NldCBj KSkpDQogICAgICAgICAgICAodW5sZXNzIHdhLWZhaWxlZCAoYXNzZXJ0ICg8PSAwIHdzZXQpIHQp KQ0KICAgICAgICAgICAgKHNldHEgdyAoKyB3IHdzZXQpKSkpDQogICAgICAgICh1bmxlc3MgKD0g dyAod2Etd3NldCB3aW4pKQ0KICAgICAgICAgICh3YS1lcnJvciAiQmFkIHNldCBzaXplcyBjaGls ZCBzdW0gdz0lZCwgd2luIHdpZHRoPSVkIiB3ICh3YS13c2V0IHdpbikpKSkNCiAgICAgIDs7IFdh bGsgZG93bg0KICAgICAgKGRvbGlzdCAoYyBjaGlsZHMpDQogICAgICAgICh3YS1jb21wdXRlLXdh bnRlZCBjIHN0cmF0ZWd5KSkpKSkNCg0KDQo7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7OzsNCjs7OyBUZXN0aW5nIHBhcnQNCg0KKGRlZnZhciB3YS1yb290LXdp bmRvdyBuaWwpDQoNCihkZWZ1biB3YS1hZGQtdGVzdC1jaGlsZHMgKCkNCiAgKHdhLXNldC1jaGls ZC13aW5kb3dzIHdhLXJvb3Qtd2luZG93IHQNCiAgICAgICAgICAgICAgICAgICAgICAgICAnKG5p bCA3KQ0KICAgICAgICAgICAgICAgICAgICAgICAgICcoMTQgbmlsKQ0KICAgICAgICAgICAgICAg ICAgICAgICAgICcobmlsIG5pbCkNCiAgICAgICAgICAgICAgICAgICAgICAgICAnKDMgbmlsKQ0K ICAgICAgICAgICAgICAgICAgICAgICAgICkNCiAgKHdhLXNldC1jaGlsZC13aW5kb3dzIChjYXIg KHdhLWNoaWxkIHdhLXJvb3Qtd2luZG93KSkgdA0KICAgICAgICAgICAgICAgICAgICAgICAgJyhu aWwgbmlsKQ0KICAgICAgICAgICAgICAgICAgICAgICAgJyg4IDE1KSkNCiAgKQ0KDQooc2V0cSB3 YS1yb290LXdpbmRvdyAod2EtbWFrZS13aW5kb3cgIlJvb3QiIDgwIG5pbCBuaWwpKQ0KKHNldHEg d2Etcm9vdC13aW5kb3cgKHdhLW1ha2Utd2luZG93ICJSb290IiA4MCBuaWwgOCkpDQooc2V0cSB3 YS1yb290LXdpbmRvdyAod2EtbWFrZS13aW5kb3cgIlJvb3QiIDgwIG5pbCA2KSkNCihzZXRxIHdh LXJvb3Qtd2luZG93ICh3YS1tYWtlLXdpbmRvdyAiUm9vdCIgODAgNSBuaWwpKQ0KKHNldHEgd2Et cm9vdC13aW5kb3cgKHdhLW1ha2Utd2luZG93ICJSb290IiAxNSAxNSBuaWwpKQ0KKHNldHEgd2Et cm9vdC13aW5kb3cgKHdhLW1ha2Utd2luZG93ICJSb290IiA0MyAxNSBuaWwpKQ0KKHNldHEgd2Et cm9vdC13aW5kb3cgKHdhLW1ha2Utd2luZG93ICJSb290IiAxOCAxNSBuaWwpKQ0KDQo7OyAod2Et Y2hpbGQgd2Etcm9vdC13aW5kb3cpDQo7OyAod2Etd3NldCB3YS1yb290LXdpbmRvdykNCjs7ICh3 YS13dW1pbiB3YS1yb290LXdpbmRvdykNCjs7ICh3YS13dW1heCB3YS1yb290LXdpbmRvdykNCjs7 ICh3YS1jbGVhci1jb21wdXRlZCB3YS1yb290LXdpbmRvdykNCg0KOzsgU2V0dXANCih3YS1hZGQt dGVzdC1jaGlsZHMpDQood2EtaW5pdC1mYWlsLWZsYWcgICB3YS1yb290LXdpbmRvdykNCihzZXRx IHdhLWZhaWxlZCBuaWwpDQoNCjs7IFNob3cgc3RhdGUgbm93IGluIGNhc2Ugd2Ugd2FudCB0byBz dG9wIG9uIGVycm9ycw0KKGRlc2NyaWJlLXZhcmlhYmxlICAnd2Etcm9vdC13aW5kb3cpDQoNCjs7 IENvbXB1dGUgcmVxdWlyZWQsIG1heSBmYWlsLiBJbiB0aGlzIGNhc2UgdGhlIGluaXRpYWwgc3Rh dGUgd2lsbA0KOzsgcmVtYWluIGluIHRoZSBoZWxwIGJ1ZmZlci4NCihjYXRjaCAnd2EtZXJyb3IN CiAgKHdhLWNvbXB1dGUtcmVxdWlyZWQgd2Etcm9vdC13aW5kb3cpKQ0KDQo7OyBOb3cgaXQgc2hv dWxkIG5vdCBmYWlsDQood2EtY29tcHV0ZS13YW50ZWQgICB3YS1yb290LXdpbmRvdyAnZXEtc2l6 ZXMpDQooZGVzY3JpYmUtdmFyaWFibGUgICd3YS1yb290LXdpbmRvdykNCg0KDQoNCjs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7OzsNCjs7OyB3aW4tYWxnLmVsIGVuZHMgaGVyZQ0K --001636ed66373b6a8e0471055d4f--