History

ink js rewrite

Francisco J Ballesteros committed 10 years ago

Commit bb830d21 parent fb007a018 files · +35675 −35309Browse files

Unified · Split

18 files
  1. LICENSE +2 −1
  2. net/ink/button.go +4 −4
  3. net/ink/js/README +15 −0
  4. net/ink/js/button.js +41 −89
  5. net/ink/js/clive.js +0 −4
  6. net/ink/js/ctlr.js +134 −0
  7. net/ink/js/js.go +32703 −32562
  8. net/ink/js/latin.js +1 −1
  9. net/ink/js/lines.js +1049 −0
  10. net/ink/js/pg.js +11 −8
  11. net/ink/js/radio.js +40 −86
  12. net/ink/js/text.js +1263 −0
  13. net/ink/js/txt.js +0 −2333
  14. net/ink/js/txt.jsold +391 −180
  15. net/ink/mkjs +3 −2
  16. net/ink/page.go +7 −6
  17. net/ink/radio.go +1 −1
  18. net/ink/text.go +10 −32
LICENSE+2−1
@@ -1,4 +1,5 @@
1−Copyight (c) 2013 Laboratorio de Sistemas
1+Copyight (c) 2013-2016 Laboratorio de Sistemas
2+http://lsub.org
23
34 Permission is hereby granted, free of charge, to any person obtaining a copy
45 of this software and associated documentation files (the "Software"), to deal
net/ink/button.go+4−4
@@ -59,7 +59,7 @@ func NewButtonSet(button ...*Button) *ButtonSet { · 58 unmodified lines
5959 func (bs *ButtonSet) WriteTo(w io.Writer) (tot int64, err error) {
6060 vid := bs.newViewId()
6161 n, err := io.WriteString(w,
62− `<div id="`+vid+`" class="`+bs.Id+` ui-widget-header ui-corner-all hasws">`)
62+ `<div id="`+vid+`" class="`+bs.Id+` ui-widget-header ui-corner-all clivectl">`)
6363 tot += int64(n)
6464 if err != nil {
6565 return tot, err
@@ -96,14 +96,14 @@ func (bs *ButtonSet) WriteTo(w io.Writer) (tot int64, err error) { · 30 unmodified lines
9696 n, err = io.WriteString(w, `$("#`+b+`").button().click(function(e) {
9797 var checked = $("#`+b+`").is(':checked');
9898 if(checked) {
99− d.post(["Set", "`+bs.els[i].Name+`", "`+fmt.Sprintf("%d", i)+`", "on"]);
99+ d.clivectlr.post(["Set", "`+bs.els[i].Name+`", "`+fmt.Sprintf("%d", i)+`", "on"]);
100100 } else {
101− d.post(["Set", "`+bs.els[i].Name+`", "`+fmt.Sprintf("%d", i)+`", "off"]);
101+ d.clivectlr.post(["Set", "`+bs.els[i].Name+`", "`+fmt.Sprintf("%d", i)+`", "off"]);
102102 }
103103 });`)
104104 } else {
105105 n, err = io.WriteString(w, `$("#`+b+`").button().click(function() {
106− d.post(["click", "`+bs.els[i].Name+`", "`+fmt.Sprintf("%d", i)+`"]);
106+ d.clivectlr.post(["click", "`+bs.els[i].Name+`", "`+fmt.Sprintf("%d", i)+`"]);
107107 });`)
108108 }
109109 tot += int64(n)
net/ink/js/README+15−0
@@ -0,0 +1,15 @@
1+This contains a few js files from clive (c) Laboratorio de Sistemas
2+under the LICENSE for Clive:
3+ - ctlr.js
4+ - button.js
5+ - radio.js
6+ - latin.js
7+ - lines.js
8+ - text.js
9+ - pg.js
10+ - zxlogo.gif
11+ - clive.gif
12+
13+All other files come from other authors and are under their
14+respective licenses; this includes jquery and jquery-ui plus
15+some other tools.
net/ink/js/button.js+41−89
@@ -1,100 +1,52 @@
11 "use strict";
22 /*
3− js code for the buttons control
3+ js code for the clive buttons control.
44 */
55
6+var bdebug = false;
67
7−function bapply(ev, fromserver) {
8− if(!ev || !ev.Args || !ev.Args[0]){
9− console.log("apply: nil ev");
10− return;
11− }
12− var arg = ev.Args
13− if(1)console.log(this.divid, "apply", ev.Id, ev.Args);
14− switch(arg[0]){
15− case "Set":
16− if(arg.length < 4){
17− console.log(this.divid, "apply: short set");
18− break;
19− }
20− var on = (arg[3] == "on");
21− var id = this.divid + "_b" + arg[2];
22− console.log("set ", id, on);
23− var b = $("#"+id);
24− if(b) {
25− b.prop('checked', on);
26− b.button("refresh");
27− }
28− break;
29− case "show":
30− if(document.showcontrol) {
31− document.showcontrol(this);
32− }
33− break;
34− default:
35− console.log("text: unhandled", arg[0]);
36− }
37−}
8+// A Clive control with buttons.
9+function CliveButtons(d, cid, id) {
10+ this.d = d;
11+ this.c = d;
12+ this.cid = cid;
13+ this.id = id;
14+ this.vers = 0;
3815
39−/*
40− d is is the (jquery) parent that will supply events.
41− cid is the class id d.
42− d has "hasws" in its class and thus we must set
43− d.get(0).ws to the ws to be closed if this element is removed.
44− */
45−function mkbuttons(d, cid, id) {
46− var wsurl = "wss://" + window.location.host + "/ws/" + cid;
47− if(d.wsaddr) {
48− wsurl = d.wsaddr + "/ws/" + cid;
49− }
50− d.post = function(args) {
51− if(!d.ws){
52− console.log("no ws");
53− return nil;
54− }
55− var ws = d.ws;
56− if(!args || !args[0]){
57− console.log("post: no args");
58− return nil;
59− }
60− var ev = {}
61− ev.Id = cid;
62− ev.Src = id;
63− ev.Vers = this.vers;
64− ev.Args = args;
65− var msg = JSON.stringify(ev);
66− try {
67− ws.send(msg);
68− // console.log("posting ", msg);
69− }catch(ex){
70− console.log("post: " + ex);
71− }
72− return ev;
73− };
74− d.apply = bapply;
75− d.divid = id;
76− d.divcid = cid;
77− d.ws = new WebSocket(wsurl);
78− d.get(0).ws = d.ws;
79− d.get(0).post = d.post;
80− d.ws.onopen = function() {
81− d.post(["id"]);
82− };
83− d.ws.onmessage = function(ev) {
84− // console.log("got msg", e.data);
85− var o = JSON.parse(ev.data);
86− if(!o || !o.Id) {
87− console.log("update: no object id");
16+ this.apply = function(ev, fromserver) {
17+ if(!ev || !ev.Args || !ev.Args[0]){
18+ console.log("button: apply: nil ev");
8819 return;
8920 }
90− console.log("update to", o.Id);
91− d.apply(o, true)
92− };
93− d.ws.onclose = function() {
94− console.log("text socket " + wsurl+ " closed\n");
95− d.replaceWith("<h3>disconnected</h3>")
21+ var arg = ev.Args
22+ if(bdebug)console.log(this.id, "apply", ev.Id, ev.Args);
23+ switch(arg[0]){
24+ case "Set":
25+ if(arg.length < 4){
26+ console.log(this.divid, "apply: short set");
27+ break;
28+ }
29+ var on = (arg[3] == "on");
30+ var id = this.id + "_b" + arg[2];
31+ console.log("set ", id, on);
32+ var b = $("#"+id);
33+ if(b) {
34+ b.prop('checked', on);
35+ b.button("refresh");
36+ }
37+ break;
38+ case "show":
39+ this.showcontrol();
40+ break;
41+ default:
42+ console.log("button: unhandled", arg[0]);
43+ }
9644 };
97−}
9845
99−document.mkbuttons = mkbuttons;
46+ CliveCtlr.call(this);
47+}
10048
49+document.mkbuttons = function(d, cid, id) {
50+ var c = new CliveButtons(d, cid, id);
51+ return c;
52+}
net/ink/js/clive.js+0−4
@@ -1,4 +0,0 @@
1−"use strict";
2−/*
3− * Placeholder for clive tools
4−*/
net/ink/js/ctlr.js+134−0
@@ -0,0 +1,134 @@
1+"use strict";
2+/*
3+ Clive js code for ink controls.
4+*/
5+
6+// A clive ctlr.
7+// Callers must have defined .d, .c, .cid, and .id before calling this.
8+// If this.d has wsaddr defined, that base address is used.
9+// This provides the post method and calls (if defined) to apply, autoresize, and mayresize methods.
10+function CliveCtlr() {
11+ this.d.clivectlr = this;
12+ this.c.clivectlr = this;
13+ this.userresized = false;
14+ this.wsurl = "wss://" + window.location.host + "/ws/" + this.cid;
15+ if(this.d.wsaddr) {
16+ this.wsurl = this.d.wsaddr + "/ws/" + this.cid;
17+ }
18+
19+ $(this.d).addClass("clivectl");
20+ var self = this;
21+ // use self here, because post will be bound also to this.d
22+ this.post = function(args) {
23+ var ws = self.ws;
24+ if(!ws){
25+ console.log("post: no ws");
26+ return nil;
27+ }
28+ if(!args || !args[0]){
29+ console.log("post: no args");
30+ return nil;
31+ }
32+ if(!self.vers) {
33+ self.vers = 0;
34+ }
35+ // cut advances the vers (might del nothing)
36+ // this is for text and shouldn't be here.
37+ if(args[0] == "eins" || args[0] == "edel") {
38+ self.vers++;
39+ }
40+ var ev = {Id: self.cid, Src: self.id, Vers: self.vers, Args: args};
41+ var msg = JSON.stringify(ev);
42+ try {
43+ self.ws.send(msg);
44+ // console.log("posting ", msg);
45+ }catch(ex){
46+ console.log("post: " + ex);
47+ }
48+ // if this is a cut, it implies a del and we
49+ // must advance our vers, the event didn't
50+ // advance the vers.
51+ // Same for paste.
52+ // this is for text and shouldn't be here.
53+ if(args[0] == "ecut" || args[0] == "epaste") {
54+ ev.Vers++;
55+ }
56+ return ev;
57+ };
58+
59+ this.settag = function(t) {
60+ if(document.settag) {
61+ document.settag(this, t);
62+ }
63+ };
64+
65+ this.setdirty = function() {
66+ if(document.setdirty) {
67+ document.setdirty(this);
68+ }
69+ };
70+
71+ this.setclean = function() {
72+ if(document.setclean) {
73+ document.setclean(this);
74+ }
75+ };
76+
77+ this.showcontrol = function() {
78+ if(document.showcontrol) {
79+ document.showcontrol(this);
80+ }
81+ };
82+
83+ this.ws = new WebSocket(this.wsurl);
84+ this.ws.onopen = function() {
85+ self.post(["id"]);
86+ };
87+ this.ws.onerror = function(ev) {
88+ console.log("ws err", ev);
89+ };
90+ this.ws.onmessage = function(ev) {
91+ var o = JSON.parse(ev.data);
92+ if(!o || !o.Id) {
93+ console.log("update: no objet id");
94+ return;
95+ }
96+ if(tdebug)console.log("update to", o.Id, o.Args);
97+ if(self.apply) {
98+ self.apply(o, true);
99+ }
100+ };
101+ this.ws.onclose = function() {
102+ console.log("text socket " + self.wsurl+ " closed\n");
103+ self.d.replaceWith("<h3>disconnected</h3>");
104+ };
105+
106+ // this is for pg.js, will go.
107+ var d0 = this.d.get(0);
108+ d0.ws = this.ws;
109+ d0.post = this.post;
110+ this.d.post = this.post;
111+
112+ d0.addsize = function(moreless) {
113+ if(self.autoresize) {
114+ self.autoresize(true, moreless);
115+ }
116+ };
117+ this.d.resizable({
118+ handles: 's'
119+ }).on('resize', function() {
120+ console.log("user resized");
121+ self.userresized = true;
122+ if(self.mayresize) {
123+ self.mayresize(true);
124+ }
125+ });
126+ $(window).resize(function() {
127+ console.log("window resized");
128+ if(self.mayresize) {
129+ self.mayresize(false);
130+ }
131+ });
132+
133+
134+}
net/ink/js/js.go+32703−32562
@@ -3,443 +3,450 @@ var Files = map[string][]byte{ · 2 unmodified lines
33 "js/pg.js": []byte{
44 34,117,115,101,32,115,116,114,105,99,116,34,59,10,47,42,10,
55 32,42,32,99,108,105,118,101,32,105,110,107,32,112,103,32,
6− 116,111,111,108,115,10,42,47,10,10,47,47,32,99,111,110,
7− 116,114,111,108,115,32,109,97,121,32,99,97,108,108,32,116,
8− 104,105,115,32,116,111,32,115,101,116,32,116,104,101,32,105,
9− 99,111,110,32,102,111,114,32,100,105,114,116,121,32,40,97,
10− 110,100,32,103,101,116,32,115,97,118,101,115,32,111,110,32,
11− 99,108,105,99,107,115,41,10,47,47,32,98,117,116,32,116,
12− 104,101,121,32,109,117,115,116,32,105,109,112,108,101,109,101,
13− 110,116,32,116,104,101,32,112,111,115,116,32,109,101,116,104,
14− 111,100,32,111,110,32,116,104,101,32,101,108,101,109,101,110,
15− 116,32,112,97,115,115,101,100,46,10,102,117,110,99,116,105,
16− 111,110,32,115,101,116,100,105,114,116,121,40,101,41,32,123,
17− 10,9,99,111,110,115,111,108,101,46,108,111,103,40,34,100,
18− 105,114,116,121,34,41,59,10,9,118,97,114,32,112,32,61,
19− 32,36,40,101,41,46,99,108,111,115,101,115,116,40,34,46,
20− 112,111,114,116,108,101,116,34,41,59,10,9,105,102,40,33,
21− 112,32,124,124,32,33,112,46,108,101,110,103,116,104,41,32,
22− 123,10,9,9,114,101,116,117,114,110,59,10,9,125,10,9,
23− 118,97,114,32,112,100,32,61,32,112,46,102,105,110,100,40,
24− 34,46,112,111,114,116,108,101,116,45,100,105,114,116,121,34,
25− 41,59,10,9,105,102,40,112,100,46,108,101,110,103,116,104,
26− 32,62,32,48,41,32,123,10,9,9,99,111,110,115,111,108,
27− 101,46,108,111,103,40,34,97,108,114,101,97,100,121,32,100,
28− 105,114,116,121,34,44,32,112,100,41,59,10,9,9,114,101,
29− 116,117,114,110,59,10,9,125,10,9,118,97,114,32,112,109,
30− 97,120,32,61,32,112,46,102,105,110,100,40,34,46,112,111,
31− 114,116,108,101,116,45,109,97,120,34,41,59,10,9,36,40,
32− 34,60,115,112,97,110,32,99,108,97,115,115,61,39,117,105,
33− 45,105,99,111,110,32,105,110,108,105,110,101,32,117,105,45,
34− 105,99,111,110,45,100,105,115,107,32,112,111,114,116,108,101,
35− 116,45,100,105,114,116,121,39,62,60,47,115,112,97,110,62,
36− 34,41,46,105,110,115,101,114,116,66,101,102,111,114,101,40,
37− 112,109,97,120,41,59,10,9,112,109,97,120,46,99,108,111,
38− 115,101,115,116,40,34,46,112,111,114,116,108,101,116,45,104,
39− 101,97,100,101,114,34,41,46,99,115,115,40,39,99,111,108,
40− 111,114,39,44,32,39,98,108,117,101,39,41,59,10,9,112,
41− 46,102,105,110,100,40,34,46,112,111,114,116,108,101,116,45,
42− 100,105,114,116,121,34,41,46,99,108,105,99,107,40,102,117,
43− 110,99,116,105,111,110,40,101,118,41,32,123,10,9,9,101,
44− 118,46,115,116,111,112,80,114,111,112,97,103,97,116,105,111,
45− 110,40,41,59,10,9,9,101,46,112,111,115,116,40,91,34,
46− 115,97,118,101,34,93,41,59,10,9,125,41,59,10,125,10,
47− 10,47,47,32,76,105,107,101,32,115,101,116,100,105,114,116,
48− 121,10,102,117,110,99,116,105,111,110,32,115,101,116,99,108,
49− 101,97,110,40,101,41,32,123,10,9,118,97,114,32,112,32,
50− 61,32,36,40,101,41,46,99,108,111,115,101,115,116,40,34,
51− 46,112,111,114,116,108,101,116,34,41,59,10,9,105,102,40,
52− 33,112,32,124,124,32,33,112,46,108,101,110,103,116,104,41,
53− 32,123,10,9,9,114,101,116,117,114,110,59,10,9,125,10,
54− 9,112,46,102,105,110,100,40,34,46,112,111,114,116,108,101,
55− 116,45,100,105,114,116,121,34,41,46,99,108,111,115,101,115,
56− 116,40,34,46,112,111,114,116,108,101,116,45,104,101,97,100,
57− 101,114,34,41,46,99,115,115,40,39,99,111,108,111,114,39,
58− 44,32,39,98,108,97,99,107,39,41,59,10,9,112,46,102,
59− 105,110,100,40,34,46,112,111,114,116,108,101,116,45,100,105,
60− 114,116,121,34,41,46,114,101,109,111,118,101,40,41,59,10,
61− 125,10,10,118,97,114,32,111,108,100,102,111,99,117,115,32,
62− 61,32,117,110,100,101,102,105,110,101,100,59,10,10,102,117,
63− 110,99,116,105,111,110,32,115,101,116,102,111,99,117,115,40,
6+ 116,111,111,108,115,10,32,42,10,32,42,32,110,101,101,100,
7+ 115,32,97,32,114,101,119,114,105,116,101,46,10,32,42,32,
8+ 115,104,111,117,108,100,32,100,101,102,105,110,101,32,97,32,
9+ 103,108,111,98,97,108,32,99,108,105,118,101,32,111,98,106,
10+ 101,99,116,32,116,111,32,99,111,110,116,97,105,110,32,97,
11+ 108,108,32,116,104,101,32,99,108,105,118,101,32,103,108,111,
12+ 98,97,108,115,44,32,97,110,100,32,103,111,32,102,114,111,
13+ 109,32,116,104,101,114,101,46,10,32,42,47,10,10,47,47,
14+ 32,99,111,110,116,114,111,108,115,32,109,97,121,32,99,97,
15+ 108,108,32,116,104,105,115,32,116,111,32,115,101,116,32,116,
16+ 104,101,32,105,99,111,110,32,102,111,114,32,100,105,114,116,
17+ 121,32,40,97,110,100,32,103,101,116,32,115,97,118,101,115,
18+ 32,111,110,32,99,108,105,99,107,115,41,10,47,47,32,98,
19+ 117,116,32,116,104,101,121,32,109,117,115,116,32,105,109,112,
20+ 108,101,109,101,110,116,32,116,104,101,32,112,111,115,116,32,
21+ 109,101,116,104,111,100,32,111,110,32,116,104,101,32,101,108,
22+ 101,109,101,110,116,32,112,97,115,115,101,100,46,10,102,117,
23+ 110,99,116,105,111,110,32,115,101,116,100,105,114,116,121,40,
6424 101,41,32,123,10,9,99,111,110,115,111,108,101,46,108,111,
65− 103,40,34,102,111,99,117,115,34,41,59,10,9,118,97,114,
25+ 103,40,34,100,105,114,116,121,34,41,59,10,9,118,97,114,
6626 32,112,32,61,32,36,40,101,41,46,99,108,111,115,101,115,
6727 116,40,34,46,112,111,114,116,108,101,116,34,41,59,10,9,
6828 105,102,40,33,112,32,124,124,32,33,112,46,108,101,110,103,
6929 116,104,41,32,123,10,9,9,114,101,116,117,114,110,59,10,
70− 9,125,10,9,118,97,114,32,112,109,97,120,32,61,32,112,
71− 46,102,105,110,100,40,34,46,112,111,114,116,108,101,116,45,
72− 109,97,120,34,41,59,10,9,105,102,40,111,108,100,102,111,
73− 99,117,115,41,32,123,10,9,9,116,114,121,32,123,10,9,
74− 9,9,111,108,100,102,111,99,117,115,46,99,108,111,115,101,
75− 115,116,40,34,46,112,111,114,116,108,101,116,45,104,101,97,
76− 100,101,114,34,41,46,99,115,115,40,39,98,97,99,107,103,
77− 114,111,117,110,100,45,99,111,108,111,114,39,44,32,39,35,
78− 67,67,54,54,48,48,39,41,59,10,9,9,125,99,97,116,
79− 99,104,40,101,120,41,32,123,10,9,9,9,99,111,110,115,
80− 111,108,101,46,108,111,103,40,101,120,41,59,10,9,9,125,
81− 10,9,125,10,9,112,109,97,120,46,99,108,111,115,101,115,
82− 116,40,34,46,112,111,114,116,108,101,116,45,104,101,97,100,
83− 101,114,34,41,46,99,115,115,40,39,98,97,99,107,103,114,
84− 111,117,110,100,45,99,111,108,111,114,39,44,32,39,35,69,
85− 69,56,56,48,48,39,41,59,10,9,111,108,100,102,111,99,
86− 117,115,32,61,32,112,109,97,120,59,10,125,10,10,102,117,
87− 110,99,116,105,111,110,32,115,99,114,111,108,108,99,111,108,
88− 40,41,32,123,10,9,118,97,114,32,99,104,105,108,100,32,
89− 61,32,36,40,116,104,105,115,41,46,102,105,110,100,40,34,
90− 46,112,111,114,116,108,101,116,34,41,46,102,105,114,115,116,
91− 40,41,59,10,9,99,111,110,115,111,108,101,46,108,111,103,
92− 40,34,115,99,114,111,108,108,32,34,44,32,99,104,105,108,
93− 100,41,59,10,9,36,40,116,104,105,115,41,46,97,112,112,
94− 101,110,100,40,99,104,105,108,100,41,59,10,125,10,10,47,
95− 47,32,76,105,107,101,32,115,101,116,99,108,101,97,110,47,
96− 100,105,114,116,121,44,32,98,117,116,32,117,112,100,97,116,
97− 101,115,32,116,104,101,32,116,97,103,10,102,117,110,99,116,
98− 105,111,110,32,115,101,116,116,97,103,40,101,44,32,116,97,
99− 103,41,32,123,10,9,118,97,114,32,112,32,61,32,36,40,
100− 101,41,46,99,108,111,115,101,115,116,40,34,46,112,111,114,
101− 116,108,101,116,34,41,59,10,9,105,102,40,33,112,32,124,
102− 124,32,33,112,46,108,101,110,103,116,104,41,32,123,10,9,
103− 9,114,101,116,117,114,110,59,10,9,125,10,9,118,97,114,
104− 32,116,116,32,61,32,112,46,102,105,110,100,40,39,46,112,
105− 111,114,116,108,101,116,45,104,101,97,100,101,114,39,41,46,
106− 102,105,110,100,40,34,116,116,34,41,59,10,9,116,116,46,
107− 104,116,109,108,40,116,97,103,41,59,10,9,114,101,116,117,
108− 114,110,59,10,9,116,116,46,103,101,116,87,111,114,100,66,
109− 121,69,118,101,110,116,40,39,99,108,105,99,107,39,44,32,
110− 102,117,110,99,116,105,111,110,32,116,97,103,99,108,105,99,
111− 107,40,101,118,44,32,119,111,114,100,41,32,123,10,9,9,
112− 9,101,118,46,115,116,111,112,80,114,111,112,97,103,97,116,
113− 105,111,110,40,41,59,10,9,9,9,99,111,110,115,111,108,
114− 101,46,108,111,103,40,34,116,97,103,32,99,108,105,99,107,
115− 32,111,110,32,34,44,32,101,118,44,32,119,111,114,100,41,
116− 59,10,9,9,9,101,46,112,111,115,116,40,91,34,116,97,
117− 103,34,44,32,119,111,114,100,93,41,59,10,9,9,125,41,
118− 59,10,9,10,125,10,10,47,47,32,109,111,118,101,32,116,
119− 104,101,32,99,111,110,116,114,111,108,32,116,111,32,116,104,
120− 101,32,115,116,97,114,116,32,111,102,32,116,104,101,32,99,
121− 111,108,117,109,110,10,102,117,110,99,116,105,111,110,32,115,
122− 104,111,119,99,111,110,116,114,111,108,40,101,44,32,116,97,
123− 103,41,32,123,10,9,118,97,114,32,112,32,61,32,36,40,
124− 101,41,46,99,108,111,115,101,115,116,40,34,46,112,111,114,
125− 116,108,101,116,34,41,59,10,9,105,102,40,33,112,32,124,
126− 124,32,33,112,46,108,101,110,103,116,104,41,32,123,10,9,
127− 9,114,101,116,117,114,110,59,10,9,125,10,9,118,97,114,
128− 32,99,32,61,32,112,46,99,108,111,115,101,115,116,40,34,
129− 46,99,111,108,117,109,110,34,41,59,10,9,105,102,40,33,
130− 99,41,32,123,10,9,9,114,101,116,117,114,110,59,10,9,
131− 125,10,9,36,40,99,41,46,102,105,110,100,40,34,46,112,
132− 111,114,116,108,101,116,34,41,46,102,105,114,115,116,40,41,
133− 46,98,101,102,111,114,101,40,112,41,59,10,125,10,10,10,
134− 36,40,102,117,110,99,116,105,111,110,40,41,123,10,9,100,
135− 111,99,117,109,101,110,116,46,115,101,116,100,105,114,116,121,
136− 32,61,32,115,101,116,100,105,114,116,121,59,10,9,100,111,
137− 99,117,109,101,110,116,46,115,101,116,102,111,99,117,115,32,
138− 61,32,115,101,116,102,111,99,117,115,59,10,9,100,111,99,
139− 117,109,101,110,116,46,115,101,116,99,108,101,97,110,32,61,
140− 32,115,101,116,99,108,101,97,110,59,10,9,100,111,99,117,
141− 109,101,110,116,46,115,101,116,116,97,103,32,61,32,115,101,
142− 116,116,97,103,59,10,9,100,111,99,117,109,101,110,116,46,
143− 115,104,111,119,99,111,110,116,114,111,108,32,61,32,115,104,
144− 111,119,99,111,110,116,114,111,108,59,10,125,41,59,10,10,
145− 47,47,32,101,108,32,105,115,32,97,32,112,111,114,116,108,
146− 101,116,10,47,47,32,114,101,109,111,118,101,40,41,32,105,
147− 115,32,110,111,116,32,101,110,111,117,103,104,44,32,119,101,
148− 32,109,117,115,116,32,99,108,111,115,101,32,116,104,101,32,
149− 119,115,40,115,41,10,102,117,110,99,116,105,111,110,32,114,
150− 101,109,111,118,101,99,111,110,116,114,111,108,40,101,108,44,
151− 32,110,101,101,100,112,111,115,116,41,32,123,10,9,99,111,
152− 110,115,111,108,101,46,108,111,103,40,34,99,108,111,115,105,
153− 110,103,34,44,32,101,108,41,59,10,9,105,102,40,33,101,
154− 108,41,32,123,10,9,9,114,101,116,117,114,110,59,10,9,
155− 125,10,9,36,40,101,108,41,46,102,105,110,100,40,34,46,
156− 104,97,115,119,115,34,41,46,101,97,99,104,40,102,117,110,
157− 99,116,105,111,110,40,41,32,123,10,9,9,105,102,40,33,
158− 116,104,105,115,46,119,115,41,32,123,10,9,9,9,99,111,
159− 110,115,111,108,101,46,108,111,103,40,34,66,85,71,58,32,
160− 104,97,115,119,115,32,119,47,111,32,119,115,34,41,59,10,
161− 9,9,9,99,111,110,115,111,108,101,46,108,111,103,40,34,
162− 100,105,100,110,39,116,32,115,101,116,32,100,46,103,101,116,
163− 40,48,41,46,119,115,63,34,41,59,10,9,9,125,32,101,
164− 108,115,101,32,123,10,9,9,9,105,102,40,110,101,101,100,
165− 112,111,115,116,32,38,38,32,116,104,105,115,46,112,111,115,
166− 116,41,32,123,10,9,9,9,9,116,104,105,115,46,112,111,
167− 115,116,40,91,34,113,117,105,116,34,93,41,59,10,9,9,
168− 9,125,10,9,9,9,118,97,114,32,112,103,105,100,32,61,
169− 32,36,40,101,108,41,46,97,116,116,114,40,39,112,103,105,
170− 100,39,41,10,9,9,9,105,102,40,110,101,101,100,112,111,
171− 115,116,32,38,38,32,112,103,105,100,41,32,123,10,9,9,
172− 9,9,100,111,99,117,109,101,110,116,46,112,111,115,116,40,
173− 91,34,113,117,105,116,34,44,32,112,103,105,100,93,41,59,
174− 10,9,9,9,125,10,9,9,9,116,104,105,115,46,119,115,
175− 46,99,108,111,115,101,40,41,59,10,9,9,125,10,9,125,
176− 41,59,10,9,101,108,46,114,101,109,111,118,101,40,41,59,
177− 10,125,10,10,102,117,110,99,116,105,111,110,32,109,97,120,
178− 112,108,40,112,108,41,32,123,10,9,118,97,114,32,105,115,
179− 109,105,110,32,61,32,102,97,108,115,101,59,10,9,118,97,
180− 114,32,105,99,111,110,32,61,32,36,40,112,108,41,46,102,
181− 105,110,100,40,34,46,112,111,114,116,108,101,116,45,116,111,
182− 103,103,108,101,34,41,46,102,105,114,115,116,40,41,59,10,
183− 9,105,102,40,33,105,99,111,110,46,104,97,115,67,108,97,
184− 115,115,40,34,117,105,45,105,99,111,110,45,112,108,117,115,
185− 34,41,41,123,10,9,9,114,101,116,117,114,110,32,102,97,
186− 108,115,101,59,10,9,125,10,9,99,111,110,115,111,108,101,
187− 46,108,111,103,40,34,109,97,120,112,108,32,34,44,32,105,
188− 99,111,110,41,59,10,9,36,40,112,108,41,46,102,105,110,
189− 100,40,39,46,112,111,114,116,108,101,116,45,99,111,110,116,
190− 101,110,116,39,41,46,116,111,103,103,108,101,40,41,59,10,
191− 9,105,99,111,110,46,116,111,103,103,108,101,67,108,97,115,
192− 115,40,34,117,105,45,105,99,111,110,45,109,105,110,117,115,
193− 32,117,105,45,105,99,111,110,45,112,108,117,115,34,41,59,
194− 10,9,112,108,46,102,105,110,100,40,34,46,99,97,110,97,
195− 100,100,115,105,122,101,34,41,46,101,97,99,104,40,102,117,
196− 110,99,116,105,111,110,40,41,32,123,10,9,9,105,102,40,
197− 116,104,105,115,46,97,100,100,115,105,122,101,41,32,123,10,
198− 9,9,9,116,104,105,115,46,97,100,100,115,105,122,101,40,
199− 48,41,59,10,9,9,125,10,9,125,41,59,10,9,114,101,
200− 116,117,114,110,32,116,114,117,101,59,10,125,10,10,102,117,
201− 110,99,116,105,111,110,32,117,112,100,112,111,114,116,108,101,
202− 116,115,40,41,32,123,10,9,118,97,114,32,112,115,32,61,
203− 32,36,40,34,46,112,111,114,116,108,101,116,34,41,10,9,
204− 102,111,114,40,118,97,114,32,105,32,61,32,48,59,32,105,
205− 32,60,32,112,115,46,108,101,110,103,116,104,59,32,105,43,
206− 43,41,32,123,10,9,9,118,97,114,32,112,32,61,32,112,
207− 115,91,105,93,59,10,9,9,105,102,40,33,112,46,99,111,
208− 110,102,105,103,117,114,101,100,41,32,123,10,9,9,9,112,
209− 46,99,111,110,102,105,103,117,114,101,100,32,61,32,116,114,
210− 117,101,59,10,9,9,125,32,101,108,115,101,32,123,10,9,
211− 9,9,99,111,110,116,105,110,117,101,59,10,9,9,125,10,
212− 9,9,118,97,114,32,104,100,114,32,61,32,36,40,112,41,
213− 46,97,100,100,67,108,97,115,115,40,34,117,105,45,119,105,
214− 100,103,101,116,32,117,105,45,119,105,100,103,101,116,45,99,
215− 111,110,116,101,110,116,32,117,105,45,104,101,108,112,101,114,
216− 45,99,108,101,97,114,102,105,120,32,117,105,45,99,111,114,
217− 110,101,114,45,97,108,108,34,41,10,9,9,9,46,102,105,
218− 110,100,40,34,46,112,111,114,116,108,101,116,45,104,101,97,
219− 100,101,114,34,41,59,10,9,9,36,40,104,100,114,41,46,
220− 111,110,40,39,99,108,105,99,107,39,44,32,102,117,110,99,
221− 116,105,111,110,40,101,41,32,123,10,9,9,9,99,111,110,
222− 115,111,108,101,46,108,111,103,40,34,116,97,103,32,99,108,
223− 105,99,107,34,41,59,10,9,9,9,115,99,114,111,108,108,
224− 99,111,108,46,99,97,108,108,40,36,40,116,104,105,115,41,
225− 46,99,108,111,115,101,115,116,40,34,46,99,111,108,117,109,
226− 110,34,41,44,32,101,41,59,10,9,9,125,41,59,10,9,
227− 9,104,100,114,46,97,100,100,67,108,97,115,115,40,34,117,
228− 105,45,119,105,100,103,101,116,45,104,101,97,100,101,114,32,
229− 117,105,45,99,111,114,110,101,114,45,97,108,108,34,41,10,
230− 9,9,46,112,114,101,112,101,110,100,40,34,60,115,112,97,
231− 110,32,99,108,97,115,115,61,39,117,105,45,105,99,111,110,
232− 32,105,110,108,105,110,101,32,117,105,45,105,99,111,110,45,
233− 109,105,110,117,115,32,112,111,114,116,108,101,116,45,116,111,
234− 103,103,108,101,39,62,60,47,115,112,97,110,62,34,41,10,
235− 9,9,46,112,114,101,112,101,110,100,40,34,60,115,112,97,
236− 110,32,99,108,97,115,115,61,39,117,105,45,105,99,111,110,
237− 32,105,110,108,105,110,101,32,117,105,45,105,99,111,110,45,
238− 116,114,105,97,110,103,108,101,45,50,45,110,45,115,32,112,
239− 111,114,116,108,101,116,45,105,110,99,114,50,39,62,60,47,
30+ 9,125,10,9,118,97,114,32,112,100,32,61,32,112,46,102,
31+ 105,110,100,40,34,46,112,111,114,116,108,101,116,45,100,105,
32+ 114,116,121,34,41,59,10,9,105,102,40,112,100,46,108,101,
33+ 110,103,116,104,32,62,32,48,41,32,123,10,9,9,99,111,
34+ 110,115,111,108,101,46,108,111,103,40,34,97,108,114,101,97,
35+ 100,121,32,100,105,114,116,121,34,44,32,112,100,41,59,10,
36+ 9,9,114,101,116,117,114,110,59,10,9,125,10,9,118,97,
37+ 114,32,112,109,97,120,32,61,32,112,46,102,105,110,100,40,
38+ 34,46,112,111,114,116,108,101,116,45,109,97,120,34,41,59,
39+ 10,9,36,40,34,60,115,112,97,110,32,99,108,97,115,115,
40+ 61,39,117,105,45,105,99,111,110,32,105,110,108,105,110,101,
41+ 32,117,105,45,105,99,111,110,45,100,105,115,107,32,112,111,
42+ 114,116,108,101,116,45,100,105,114,116,121,39,62,60,47,115,
43+ 112,97,110,62,34,41,46,105,110,115,101,114,116,66,101,102,
44+ 111,114,101,40,112,109,97,120,41,59,10,9,112,109,97,120,
45+ 46,99,108,111,115,101,115,116,40,34,46,112,111,114,116,108,
46+ 101,116,45,104,101,97,100,101,114,34,41,46,99,115,115,40,
47+ 39,99,111,108,111,114,39,44,32,39,98,108,117,101,39,41,
48+ 59,10,9,112,46,102,105,110,100,40,34,46,112,111,114,116,
49+ 108,101,116,45,100,105,114,116,121,34,41,46,99,108,105,99,
50+ 107,40,102,117,110,99,116,105,111,110,40,101,118,41,32,123,
51+ 10,9,9,101,118,46,115,116,111,112,80,114,111,112,97,103,
52+ 97,116,105,111,110,40,41,59,10,9,9,101,46,112,111,115,
53+ 116,40,91,34,115,97,118,101,34,93,41,59,10,9,125,41,
54+ 59,10,125,10,10,47,47,32,76,105,107,101,32,115,101,116,
55+ 100,105,114,116,121,10,102,117,110,99,116,105,111,110,32,115,
56+ 101,116,99,108,101,97,110,40,101,41,32,123,10,9,118,97,
57+ 114,32,112,32,61,32,36,40,101,41,46,99,108,111,115,101,
58+ 115,116,40,34,46,112,111,114,116,108,101,116,34,41,59,10,
59+ 9,105,102,40,33,112,32,124,124,32,33,112,46,108,101,110,
60+ 103,116,104,41,32,123,10,9,9,114,101,116,117,114,110,59,
61+ 10,9,125,10,9,112,46,102,105,110,100,40,34,46,112,111,
62+ 114,116,108,101,116,45,100,105,114,116,121,34,41,46,99,108,
63+ 111,115,101,115,116,40,34,46,112,111,114,116,108,101,116,45,
64+ 104,101,97,100,101,114,34,41,46,99,115,115,40,39,99,111,
65+ 108,111,114,39,44,32,39,98,108,97,99,107,39,41,59,10,
66+ 9,112,46,102,105,110,100,40,34,46,112,111,114,116,108,101,
67+ 116,45,100,105,114,116,121,34,41,46,114,101,109,111,118,101,
68+ 40,41,59,10,125,10,10,118,97,114,32,111,108,100,102,111,
69+ 99,117,115,32,61,32,117,110,100,101,102,105,110,101,100,59,
70+ 10,10,102,117,110,99,116,105,111,110,32,115,101,116,102,111,
71+ 99,117,115,40,101,41,32,123,10,9,99,111,110,115,111,108,
72+ 101,46,108,111,103,40,34,102,111,99,117,115,34,41,59,10,
73+ 9,118,97,114,32,112,32,61,32,36,40,101,41,46,99,108,
74+ 111,115,101,115,116,40,34,46,112,111,114,116,108,101,116,34,
75+ 41,59,10,9,105,102,40,33,112,32,124,124,32,33,112,46,
76+ 108,101,110,103,116,104,41,32,123,10,9,9,114,101,116,117,
77+ 114,110,59,10,9,125,10,9,118,97,114,32,112,109,97,120,
78+ 32,61,32,112,46,102,105,110,100,40,34,46,112,111,114,116,
79+ 108,101,116,45,109,97,120,34,41,59,10,9,105,102,40,111,
80+ 108,100,102,111,99,117,115,41,32,123,10,9,9,116,114,121,
81+ 32,123,10,9,9,9,111,108,100,102,111,99,117,115,46,99,
82+ 108,111,115,101,115,116,40,34,46,112,111,114,116,108,101,116,
83+ 45,104,101,97,100,101,114,34,41,46,99,115,115,40,39,98,
84+ 97,99,107,103,114,111,117,110,100,45,99,111,108,111,114,39,
85+ 44,32,39,35,67,67,54,54,48,48,39,41,59,10,9,9,
86+ 125,99,97,116,99,104,40,101,120,41,32,123,10,9,9,9,
87+ 99,111,110,115,111,108,101,46,108,111,103,40,101,120,41,59,
88+ 10,9,9,125,10,9,125,10,9,112,109,97,120,46,99,108,
89+ 111,115,101,115,116,40,34,46,112,111,114,116,108,101,116,45,
90+ 104,101,97,100,101,114,34,41,46,99,115,115,40,39,98,97,
91+ 99,107,103,114,111,117,110,100,45,99,111,108,111,114,39,44,
92+ 32,39,35,69,69,56,56,48,48,39,41,59,10,9,111,108,
93+ 100,102,111,99,117,115,32,61,32,112,109,97,120,59,10,125,
94+ 10,10,102,117,110,99,116,105,111,110,32,115,99,114,111,108,
95+ 108,99,111,108,40,41,32,123,10,9,118,97,114,32,99,104,
96+ 105,108,100,32,61,32,36,40,116,104,105,115,41,46,102,105,
97+ 110,100,40,34,46,112,111,114,116,108,101,116,34,41,46,102,
98+ 105,114,115,116,40,41,59,10,9,99,111,110,115,111,108,101,
99+ 46,108,111,103,40,34,115,99,114,111,108,108,32,34,44,32,
100+ 99,104,105,108,100,41,59,10,9,36,40,116,104,105,115,41,
101+ 46,97,112,112,101,110,100,40,99,104,105,108,100,41,59,10,
102+ 125,10,10,47,47,32,76,105,107,101,32,115,101,116,99,108,
103+ 101,97,110,47,100,105,114,116,121,44,32,98,117,116,32,117,
104+ 112,100,97,116,101,115,32,116,104,101,32,116,97,103,10,102,
105+ 117,110,99,116,105,111,110,32,115,101,116,116,97,103,40,101,
106+ 44,32,116,97,103,41,32,123,10,9,118,97,114,32,112,32,
107+ 61,32,36,40,101,41,46,99,108,111,115,101,115,116,40,34,
108+ 46,112,111,114,116,108,101,116,34,41,59,10,9,105,102,40,
109+ 33,112,32,124,124,32,33,112,46,108,101,110,103,116,104,41,
110+ 32,123,10,9,9,114,101,116,117,114,110,59,10,9,125,10,
111+ 9,118,97,114,32,116,116,32,61,32,112,46,102,105,110,100,
112+ 40,39,46,112,111,114,116,108,101,116,45,104,101,97,100,101,
113+ 114,39,41,46,102,105,110,100,40,34,116,116,34,41,59,10,
114+ 9,116,116,46,104,116,109,108,40,116,97,103,41,59,10,9,
115+ 114,101,116,117,114,110,59,10,9,116,116,46,103,101,116,87,
116+ 111,114,100,66,121,69,118,101,110,116,40,39,99,108,105,99,
117+ 107,39,44,32,102,117,110,99,116,105,111,110,32,116,97,103,
118+ 99,108,105,99,107,40,101,118,44,32,119,111,114,100,41,32,
119+ 123,10,9,9,9,101,118,46,115,116,111,112,80,114,111,112,
120+ 97,103,97,116,105,111,110,40,41,59,10,9,9,9,99,111,
121+ 110,115,111,108,101,46,108,111,103,40,34,116,97,103,32,99,
122+ 108,105,99,107,32,111,110,32,34,44,32,101,118,44,32,119,
123+ 111,114,100,41,59,10,9,9,9,101,46,112,111,115,116,40,
124+ 91,34,116,97,103,34,44,32,119,111,114,100,93,41,59,10,
125+ 9,9,125,41,59,10,9,10,125,10,10,47,47,32,109,111,
126+ 118,101,32,116,104,101,32,99,111,110,116,114,111,108,32,116,
127+ 111,32,116,104,101,32,115,116,97,114,116,32,111,102,32,116,
128+ 104,101,32,99,111,108,117,109,110,10,102,117,110,99,116,105,
129+ 111,110,32,115,104,111,119,99,111,110,116,114,111,108,40,101,
130+ 44,32,116,97,103,41,32,123,10,9,118,97,114,32,112,32,
131+ 61,32,36,40,101,41,46,99,108,111,115,101,115,116,40,34,
132+ 46,112,111,114,116,108,101,116,34,41,59,10,9,105,102,40,
133+ 33,112,32,124,124,32,33,112,46,108,101,110,103,116,104,41,
134+ 32,123,10,9,9,114,101,116,117,114,110,59,10,9,125,10,
135+ 9,118,97,114,32,99,32,61,32,112,46,99,108,111,115,101,
136+ 115,116,40,34,46,99,111,108,117,109,110,34,41,59,10,9,
137+ 105,102,40,33,99,41,32,123,10,9,9,114,101,116,117,114,
138+ 110,59,10,9,125,10,9,36,40,99,41,46,102,105,110,100,
139+ 40,34,46,112,111,114,116,108,101,116,34,41,46,102,105,114,
140+ 115,116,40,41,46,98,101,102,111,114,101,40,112,41,59,10,
141+ 125,10,10,10,36,40,102,117,110,99,116,105,111,110,40,41,
142+ 123,10,9,100,111,99,117,109,101,110,116,46,115,101,116,100,
143+ 105,114,116,121,32,61,32,115,101,116,100,105,114,116,121,59,
144+ 10,9,100,111,99,117,109,101,110,116,46,115,101,116,102,111,
145+ 99,117,115,32,61,32,115,101,116,102,111,99,117,115,59,10,
146+ 9,100,111,99,117,109,101,110,116,46,115,101,116,99,108,101,
147+ 97,110,32,61,32,115,101,116,99,108,101,97,110,59,10,9,
148+ 100,111,99,117,109,101,110,116,46,115,101,116,116,97,103,32,
149+ 61,32,115,101,116,116,97,103,59,10,9,100,111,99,117,109,
150+ 101,110,116,46,115,104,111,119,99,111,110,116,114,111,108,32,
151+ 61,32,115,104,111,119,99,111,110,116,114,111,108,59,10,125,
152+ 41,59,10,10,47,47,32,101,108,32,105,115,32,97,32,112,
153+ 111,114,116,108,101,116,10,47,47,32,114,101,109,111,118,101,
154+ 40,41,32,105,115,32,110,111,116,32,101,110,111,117,103,104,
155+ 44,32,119,101,32,109,117,115,116,32,99,108,111,115,101,32,
156+ 116,104,101,32,119,115,40,115,41,10,102,117,110,99,116,105,
157+ 111,110,32,114,101,109,111,118,101,99,111,110,116,114,111,108,
158+ 40,101,108,44,32,110,101,101,100,112,111,115,116,41,32,123,
159+ 10,9,99,111,110,115,111,108,101,46,108,111,103,40,34,99,
160+ 108,111,115,105,110,103,34,44,32,101,108,41,59,10,9,105,
161+ 102,40,33,101,108,41,32,123,10,9,9,114,101,116,117,114,
162+ 110,59,10,9,125,10,9,36,40,101,108,41,46,102,105,110,
163+ 100,40,34,46,99,108,105,118,101,99,116,108,34,41,46,101,
164+ 97,99,104,40,102,117,110,99,116,105,111,110,40,41,32,123,
165+ 10,9,9,105,102,40,33,116,104,105,115,46,119,115,41,32,
166+ 123,10,9,9,9,99,111,110,115,111,108,101,46,108,111,103,
167+ 40,34,66,85,71,58,32,99,108,105,118,101,99,116,108,32,
168+ 119,47,111,32,119,115,34,41,59,10,9,9,9,99,111,110,
169+ 115,111,108,101,46,108,111,103,40,34,100,105,100,110,39,116,
170+ 32,115,101,116,32,100,46,103,101,116,40,48,41,46,119,115,
171+ 63,34,41,59,10,9,9,125,32,101,108,115,101,32,123,10,
172+ 9,9,9,105,102,40,110,101,101,100,112,111,115,116,32,38,
173+ 38,32,116,104,105,115,46,112,111,115,116,41,32,123,10,9,
174+ 9,9,9,116,104,105,115,46,112,111,115,116,40,91,34,113,
175+ 117,105,116,34,93,41,59,10,9,9,9,125,10,9,9,9,
176+ 118,97,114,32,112,103,105,100,32,61,32,36,40,101,108,41,
177+ 46,97,116,116,114,40,39,112,103,105,100,39,41,10,9,9,
178+ 9,105,102,40,110,101,101,100,112,111,115,116,32,38,38,32,
179+ 112,103,105,100,41,32,123,10,9,9,9,9,100,111,99,117,
180+ 109,101,110,116,46,112,111,115,116,40,91,34,113,117,105,116,
181+ 34,44,32,112,103,105,100,93,41,59,10,9,9,9,125,10,
182+ 9,9,9,116,104,105,115,46,119,115,46,99,108,111,115,101,
183+ 40,41,59,10,9,9,125,10,9,125,41,59,10,9,101,108,
184+ 46,114,101,109,111,118,101,40,41,59,10,125,10,10,102,117,
185+ 110,99,116,105,111,110,32,109,97,120,112,108,40,112,108,41,
186+ 32,123,10,9,118,97,114,32,105,115,109,105,110,32,61,32,
187+ 102,97,108,115,101,59,10,9,118,97,114,32,105,99,111,110,
188+ 32,61,32,36,40,112,108,41,46,102,105,110,100,40,34,46,
189+ 112,111,114,116,108,101,116,45,116,111,103,103,108,101,34,41,
190+ 46,102,105,114,115,116,40,41,59,10,9,105,102,40,33,105,
191+ 99,111,110,46,104,97,115,67,108,97,115,115,40,34,117,105,
192+ 45,105,99,111,110,45,112,108,117,115,34,41,41,123,10,9,
193+ 9,114,101,116,117,114,110,32,102,97,108,115,101,59,10,9,
194+ 125,10,9,99,111,110,115,111,108,101,46,108,111,103,40,34,
195+ 109,97,120,112,108,32,34,44,32,105,99,111,110,41,59,10,
196+ 9,36,40,112,108,41,46,102,105,110,100,40,39,46,112,111,
197+ 114,116,108,101,116,45,99,111,110,116,101,110,116,39,41,46,
198+ 116,111,103,103,108,101,40,41,59,10,9,105,99,111,110,46,
199+ 116,111,103,103,108,101,67,108,97,115,115,40,34,117,105,45,
200+ 105,99,111,110,45,109,105,110,117,115,32,117,105,45,105,99,
201+ 111,110,45,112,108,117,115,34,41,59,10,9,112,108,46,102,
202+ 105,110,100,40,34,46,99,108,105,118,101,99,116,108,34,41,
203+ 46,101,97,99,104,40,102,117,110,99,116,105,111,110,40,41,
204+ 32,123,10,9,9,105,102,40,116,104,105,115,46,97,100,100,
205+ 115,105,122,101,41,32,123,10,9,9,9,116,104,105,115,46,
206+ 97,100,100,115,105,122,101,40,48,41,59,10,9,9,125,10,
207+ 9,125,41,59,10,9,114,101,116,117,114,110,32,116,114,117,
208+ 101,59,10,125,10,10,102,117,110,99,116,105,111,110,32,117,
209+ 112,100,112,111,114,116,108,101,116,115,40,41,32,123,10,9,
210+ 118,97,114,32,112,115,32,61,32,36,40,34,46,112,111,114,
211+ 116,108,101,116,34,41,10,9,102,111,114,40,118,97,114,32,
212+ 105,32,61,32,48,59,32,105,32,60,32,112,115,46,108,101,
213+ 110,103,116,104,59,32,105,43,43,41,32,123,10,9,9,118,
214+ 97,114,32,112,32,61,32,112,115,91,105,93,59,10,9,9,
215+ 105,102,40,33,112,46,99,111,110,102,105,103,117,114,101,100,
216+ 41,32,123,10,9,9,9,112,46,99,111,110,102,105,103,117,
217+ 114,101,100,32,61,32,116,114,117,101,59,10,9,9,125,32,
218+ 101,108,115,101,32,123,10,9,9,9,99,111,110,116,105,110,
219+ 117,101,59,10,9,9,125,10,9,9,118,97,114,32,104,100,
220+ 114,32,61,32,36,40,112,41,46,97,100,100,67,108,97,115,
221+ 115,40,34,117,105,45,119,105,100,103,101,116,32,117,105,45,
222+ 119,105,100,103,101,116,45,99,111,110,116,101,110,116,32,117,
223+ 105,45,104,101,108,112,101,114,45,99,108,101,97,114,102,105,
224+ 120,32,117,105,45,99,111,114,110,101,114,45,97,108,108,34,
225+ 41,10,9,9,9,46,102,105,110,100,40,34,46,112,111,114,
226+ 116,108,101,116,45,104,101,97,100,101,114,34,41,59,10,9,
227+ 9,36,40,104,100,114,41,46,111,110,40,39,99,108,105,99,
228+ 107,39,44,32,102,117,110,99,116,105,111,110,40,101,41,32,
229+ 123,10,9,9,9,99,111,110,115,111,108,101,46,108,111,103,
230+ 40,34,116,97,103,32,99,108,105,99,107,34,41,59,10,9,
231+ 9,9,115,99,114,111,108,108,99,111,108,46,99,97,108,108,
232+ 40,36,40,116,104,105,115,41,46,99,108,111,115,101,115,116,
233+ 40,34,46,99,111,108,117,109,110,34,41,44,32,101,41,59,
234+ 10,9,9,125,41,59,10,9,9,104,100,114,46,97,100,100,
235+ 67,108,97,115,115,40,34,117,105,45,119,105,100,103,101,116,
236+ 45,104,101,97,100,101,114,32,117,105,45,99,111,114,110,101,
237+ 114,45,97,108,108,34,41,10,9,9,46,112,114,101,112,101,
238+ 110,100,40,34,60,115,112,97,110,32,99,108,97,115,115,61,
239+ 39,117,105,45,105,99,111,110,32,105,110,108,105,110,101,32,
240+ 117,105,45,105,99,111,110,45,109,105,110,117,115,32,112,111,
241+ 114,116,108,101,116,45,116,111,103,103,108,101,39,62,60,47,
240242 115,112,97,110,62,34,41,10,9,9,46,112,114,101,112,101,
241243 110,100,40,34,60,115,112,97,110,32,99,108,97,115,115,61,
242244 39,117,105,45,105,99,111,110,32,105,110,108,105,110,101,32,
243245 117,105,45,105,99,111,110,45,116,114,105,97,110,103,108,101,
244− 45,49,45,110,32,112,111,114,116,108,101,116,45,100,101,99,
245− 114,39,62,60,47,115,112,97,110,62,34,41,10,9,9,46,
246− 112,114,101,112,101,110,100,40,34,60,115,112,97,110,32,99,
247− 108,97,115,115,61,39,117,105,45,105,99,111,110,32,105,110,
248− 108,105,110,101,32,117,105,45,105,99,111,110,45,116,114,105,
249− 97,110,103,108,101,45,49,45,115,32,112,111,114,116,108,101,
250− 116,45,105,110,99,114,39,62,60,47,115,112,97,110,62,34,
251− 41,10,9,9,46,112,114,101,112,101,110,100,40,34,60,115,
252− 112,97,110,32,99,108,97,115,115,61,39,117,105,45,105,99,
253− 111,110,32,105,110,108,105,110,101,32,117,105,45,105,99,111,
254− 110,45,116,114,105,97,110,103,108,101,45,49,45,101,32,112,
255− 111,114,116,108,101,116,45,109,97,120,39,62,60,47,115,112,
256− 97,110,62,34,41,10,9,9,46,112,114,101,112,101,110,100,
257− 40,34,60,115,112,97,110,32,99,108,97,115,115,61,39,117,
258− 105,45,105,99,111,110,32,105,110,108,105,110,101,32,117,105,
259− 45,105,99,111,110,45,99,108,111,115,101,32,112,111,114,116,
260− 108,101,116,45,99,108,111,115,101,39,62,60,47,115,112,97,
261− 110,62,34,41,59,10,9,9,104,100,114,46,111,110,40,39,
262− 99,111,110,116,101,120,116,109,101,110,117,39,44,32,102,117,
263− 110,99,116,105,111,110,40,41,123,114,101,116,117,114,110,32,
264− 102,97,108,115,101,59,125,41,59,10,9,125,10,9,112,115,
265− 32,61,32,36,40,34,46,112,111,114,116,108,101,116,45,109,
266− 97,120,34,41,59,10,9,102,111,114,40,118,97,114,32,105,
267− 32,61,32,48,59,32,105,32,60,32,112,115,46,108,101,110,
268− 103,116,104,59,32,105,43,43,41,32,123,10,9,9,118,97,
269− 114,32,112,32,61,32,112,115,91,105,93,59,10,9,9,105,
270− 102,40,33,112,46,99,111,110,102,105,103,117,114,101,100,41,
271− 32,123,10,9,9,9,112,46,99,111,110,102,105,103,117,114,
272− 101,100,32,61,32,116,114,117,101,59,10,9,9,125,32,101,
273− 108,115,101,32,123,10,9,9,9,99,111,110,116,105,110,117,
274− 101,59,10,9,9,125,10,9,9,36,40,112,41,46,99,108,
275− 105,99,107,40,102,117,110,99,116,105,111,110,40,101,41,123,
276− 10,9,9,9,101,46,115,116,111,112,80,114,111,112,97,103,
277− 97,116,105,111,110,40,41,59,10,9,9,9,118,97,114,32,
278− 112,108,32,61,32,36,40,116,104,105,115,41,46,99,108,111,
279− 115,101,115,116,40,34,46,112,111,114,116,108,101,116,34,41,
280− 59,10,9,9,9,105,102,40,109,97,120,112,108,40,112,108,
281− 41,41,32,123,10,9,9,9,9,114,101,116,117,114,110,59,
282− 10,9,9,9,125,10,9,9,9,118,97,114,32,112,48,32,
283− 61,32,112,108,46,103,101,116,40,48,41,59,10,9,9,9,
284− 118,97,114,32,99,111,108,32,61,32,36,40,116,104,105,115,
285− 41,46,99,108,111,115,101,115,116,40,34,46,99,111,108,117,
286− 109,110,34,41,59,10,9,9,9,36,40,99,111,108,41,46,
287− 102,105,110,100,40,34,46,112,111,114,116,108,101,116,34,41,
246+ 45,50,45,110,45,115,32,112,111,114,116,108,101,116,45,105,
247+ 110,99,114,50,39,62,60,47,115,112,97,110,62,34,41,10,
248+ 9,9,46,112,114,101,112,101,110,100,40,34,60,115,112,97,
249+ 110,32,99,108,97,115,115,61,39,117,105,45,105,99,111,110,
250+ 32,105,110,108,105,110,101,32,117,105,45,105,99,111,110,45,
251+ 116,114,105,97,110,103,108,101,45,49,45,110,32,112,111,114,
252+ 116,108,101,116,45,100,101,99,114,39,62,60,47,115,112,97,
253+ 110,62,34,41,10,9,9,46,112,114,101,112,101,110,100,40,
254+ 34,60,115,112,97,110,32,99,108,97,115,115,61,39,117,105,
255+ 45,105,99,111,110,32,105,110,108,105,110,101,32,117,105,45,
256+ 105,99,111,110,45,116,114,105,97,110,103,108,101,45,49,45,
257+ 115,32,112,111,114,116,108,101,116,45,105,110,99,114,39,62,
258+ 60,47,115,112,97,110,62,34,41,10,9,9,46,112,114,101,
259+ 112,101,110,100,40,34,60,115,112,97,110,32,99,108,97,115,
260+ 115,61,39,117,105,45,105,99,111,110,32,105,110,108,105,110,
261+ 101,32,117,105,45,105,99,111,110,45,116,114,105,97,110,103,
262+ 108,101,45,49,45,101,32,112,111,114,116,108,101,116,45,109,
263+ 97,120,39,62,60,47,115,112,97,110,62,34,41,10,9,9,
264+ 46,112,114,101,112,101,110,100,40,34,60,115,112,97,110,32,
265+ 99,108,97,115,115,61,39,117,105,45,105,99,111,110,32,105,
266+ 110,108,105,110,101,32,117,105,45,105,99,111,110,45,99,108,
267+ 111,115,101,32,112,111,114,116,108,101,116,45,99,108,111,115,
268+ 101,39,62,60,47,115,112,97,110,62,34,41,59,10,9,9,
269+ 104,100,114,46,111,110,40,39,99,111,110,116,101,120,116,109,
270+ 101,110,117,39,44,32,102,117,110,99,116,105,111,110,40,41,
271+ 123,114,101,116,117,114,110,32,102,97,108,115,101,59,125,41,
272+ 59,10,9,125,10,9,112,115,32,61,32,36,40,34,46,112,
273+ 111,114,116,108,101,116,45,109,97,120,34,41,59,10,9,102,
274+ 111,114,40,118,97,114,32,105,32,61,32,48,59,32,105,32,
275+ 60,32,112,115,46,108,101,110,103,116,104,59,32,105,43,43,
276+ 41,32,123,10,9,9,118,97,114,32,112,32,61,32,112,115,
277+ 91,105,93,59,10,9,9,105,102,40,33,112,46,99,111,110,
278+ 102,105,103,117,114,101,100,41,32,123,10,9,9,9,112,46,
279+ 99,111,110,102,105,103,117,114,101,100,32,61,32,116,114,117,
280+ 101,59,10,9,9,125,32,101,108,115,101,32,123,10,9,9,
281+ 9,99,111,110,116,105,110,117,101,59,10,9,9,125,10,9,
282+ 9,36,40,112,41,46,99,108,105,99,107,40,102,117,110,99,
283+ 116,105,111,110,40,101,41,123,10,9,9,9,101,46,115,116,
284+ 111,112,80,114,111,112,97,103,97,116,105,111,110,40,41,59,
285+ 10,9,9,9,118,97,114,32,112,108,32,61,32,36,40,116,
286+ 104,105,115,41,46,99,108,111,115,101,115,116,40,34,46,112,
287+ 111,114,116,108,101,116,34,41,59,10,9,9,9,105,102,40,
288+ 109,97,120,112,108,40,112,108,41,41,32,123,10,9,9,9,
289+ 9,114,101,116,117,114,110,59,10,9,9,9,125,10,9,9,
290+ 9,118,97,114,32,112,48,32,61,32,112,108,46,103,101,116,
291+ 40,48,41,59,10,9,9,9,118,97,114,32,99,111,108,32,
292+ 61,32,36,40,116,104,105,115,41,46,99,108,111,115,101,115,
293+ 116,40,34,46,99,111,108,117,109,110,34,41,59,10,9,9,
294+ 9,36,40,99,111,108,41,46,102,105,110,100,40,34,46,112,
295+ 111,114,116,108,101,116,34,41,46,101,97,99,104,40,102,117,
296+ 110,99,116,105,111,110,40,41,123,10,9,9,9,9,118,97,
297+ 114,32,112,105,32,61,32,36,40,116,104,105,115,41,46,103,
298+ 101,116,40,48,41,59,10,9,9,9,9,118,97,114,32,115,
299+ 101,108,102,32,61,32,36,40,116,104,105,115,41,59,10,9,
300+ 9,9,9,47,47,32,108,101,116,39,115,32,109,105,110,105,
301+ 109,105,122,101,32,101,118,101,114,121,116,104,105,110,103,46,
302+ 10,9,9,9,9,105,102,40,102,97,108,115,101,32,38,38,
303+ 32,112,48,32,61,61,32,112,105,41,32,123,10,9,9,9,
304+ 9,9,36,40,116,104,105,115,41,46,102,105,110,100,40,34,
305+ 46,112,111,114,116,108,101,116,45,116,111,103,103,108,101,34,
306+ 41,46,101,97,99,104,40,102,117,110,99,116,105,111,110,40,
307+ 41,123,10,9,9,9,9,9,9,105,102,40,36,40,116,104,
308+ 105,115,41,46,104,97,115,67,108,97,115,115,40,34,117,105,
309+ 45,105,99,111,110,45,112,108,117,115,34,41,41,32,123,10,
310+ 9,9,9,9,9,9,9,36,40,116,104,105,115,41,46,116,
311+ 111,103,103,108,101,67,108,97,115,115,40,34,117,105,45,105,
312+ 99,111,110,45,109,105,110,117,115,32,117,105,45,105,99,111,
313+ 110,45,112,108,117,115,34,41,59,10,9,9,9,9,9,9,
314+ 9,115,101,108,102,46,102,105,110,100,40,34,46,112,111,114,
315+ 116,108,101,116,45,99,111,110,116,101,110,116,34,41,46,116,
316+ 111,103,103,108,101,40,41,59,10,9,9,9,9,9,9,125,
317+ 10,9,9,9,9,9,125,41,59,10,9,9,9,9,9,114,
318+ 101,116,117,114,110,59,10,9,9,9,9,125,10,9,9,9,
319+ 9,36,40,116,104,105,115,41,46,102,105,110,100,40,34,46,
320+ 112,111,114,116,108,101,116,45,116,111,103,103,108,101,34,41,
288321 46,101,97,99,104,40,102,117,110,99,116,105,111,110,40,41,
289− 123,10,9,9,9,9,118,97,114,32,112,105,32,61,32,36,
290− 40,116,104,105,115,41,46,103,101,116,40,48,41,59,10,9,
291− 9,9,9,118,97,114,32,115,101,108,102,32,61,32,36,40,
292− 116,104,105,115,41,59,10,9,9,9,9,47,47,32,108,101,
293− 116,39,115,32,109,105,110,105,109,105,122,101,32,101,118,101,
294− 114,121,116,104,105,110,103,46,10,9,9,9,9,105,102,40,
295− 102,97,108,115,101,32,38,38,32,112,48,32,61,61,32,112,
296− 105,41,32,123,10,9,9,9,9,9,36,40,116,104,105,115,
297− 41,46,102,105,110,100,40,34,46,112,111,114,116,108,101,116,
298− 45,116,111,103,103,108,101,34,41,46,101,97,99,104,40,102,
299− 117,110,99,116,105,111,110,40,41,123,10,9,9,9,9,9,
300− 9,105,102,40,36,40,116,104,105,115,41,46,104,97,115,67,
301− 108,97,115,115,40,34,117,105,45,105,99,111,110,45,112,108,
302− 117,115,34,41,41,32,123,10,9,9,9,9,9,9,9,36,
303− 40,116,104,105,115,41,46,116,111,103,103,108,101,67,108,97,
304− 115,115,40,34,117,105,45,105,99,111,110,45,109,105,110,117,
305− 115,32,117,105,45,105,99,111,110,45,112,108,117,115,34,41,
306− 59,10,9,9,9,9,9,9,9,115,101,108,102,46,102,105,
307− 110,100,40,34,46,112,111,114,116,108,101,116,45,99,111,110,
308− 116,101,110,116,34,41,46,116,111,103,103,108,101,40,41,59,
309− 10,9,9,9,9,9,9,125,10,9,9,9,9,9,125,41,
310− 59,10,9,9,9,9,9,114,101,116,117,114,110,59,10,9,
311− 9,9,9,125,10,9,9,9,9,36,40,116,104,105,115,41,
312− 46,102,105,110,100,40,34,46,112,111,114,116,108,101,116,45,
313− 116,111,103,103,108,101,34,41,46,101,97,99,104,40,102,117,
314− 110,99,116,105,111,110,40,41,123,10,9,9,9,9,9,105,
315− 102,40,36,40,116,104,105,115,41,46,104,97,115,67,108,97,
316− 115,115,40,34,117,105,45,105,99,111,110,45,109,105,110,117,
317− 115,34,41,41,32,123,10,9,9,9,9,9,9,36,40,116,
318− 104,105,115,41,46,116,111,103,103,108,101,67,108,97,115,115,
319− 40,34,117,105,45,105,99,111,110,45,109,105,110,117,115,32,
320− 117,105,45,105,99,111,110,45,112,108,117,115,34,41,59,10,
321− 9,9,9,9,9,9,115,101,108,102,46,102,105,110,100,40,
322− 34,46,112,111,114,116,108,101,116,45,99,111,110,116,101,110,
323− 116,34,41,46,116,111,103,103,108,101,40,41,59,10,9,9,
324− 9,9,9,125,10,9,9,9,9,125,41,59,10,9,9,9,
325− 125,41,59,10,9,9,125,41,59,10,9,125,10,9,112,115,
326− 32,61,32,36,40,34,46,112,111,114,116,108,101,116,45,116,
327− 111,103,103,108,101,34,41,59,10,9,102,111,114,40,118,97,
328− 114,32,105,32,61,32,48,59,32,105,32,60,32,112,115,46,
329− 108,101,110,103,116,104,59,32,105,43,43,41,32,123,10,9,
330− 9,118,97,114,32,112,32,61,32,112,115,91,105,93,59,10,
331− 9,9,105,102,40,33,112,46,99,111,110,102,105,103,117,114,
332− 101,100,41,32,123,10,9,9,9,112,46,99,111,110,102,105,
333− 103,117,114,101,100,32,61,32,116,114,117,101,59,10,9,9,
334− 125,32,101,108,115,101,32,123,10,9,9,9,99,111,110,116,
335− 105,110,117,101,59,10,9,9,125,10,9,9,36,40,112,41,
336− 46,99,108,105,99,107,40,102,117,110,99,116,105,111,110,40,
337− 101,41,123,10,9,9,9,101,46,115,116,111,112,80,114,111,
338− 112,97,103,97,116,105,111,110,40,41,59,10,9,9,9,118,
339− 97,114,32,105,99,111,110,32,61,32,36,40,116,104,105,115,
340− 41,59,10,9,9,9,105,99,111,110,46,116,111,103,103,108,
341− 101,67,108,97,115,115,40,34,117,105,45,105,99,111,110,45,
342− 109,105,110,117,115,32,117,105,45,105,99,111,110,45,112,108,
343− 117,115,34,41,59,10,9,9,9,118,97,114,32,112,108,32,
322+ 123,10,9,9,9,9,9,105,102,40,36,40,116,104,105,115,
323+ 41,46,104,97,115,67,108,97,115,115,40,34,117,105,45,105,
324+ 99,111,110,45,109,105,110,117,115,34,41,41,32,123,10,9,
325+ 9,9,9,9,9,36,40,116,104,105,115,41,46,116,111,103,
326+ 103,108,101,67,108,97,115,115,40,34,117,105,45,105,99,111,
327+ 110,45,109,105,110,117,115,32,117,105,45,105,99,111,110,45,
328+ 112,108,117,115,34,41,59,10,9,9,9,9,9,9,115,101,
329+ 108,102,46,102,105,110,100,40,34,46,112,111,114,116,108,101,
330+ 116,45,99,111,110,116,101,110,116,34,41,46,116,111,103,103,
331+ 108,101,40,41,59,10,9,9,9,9,9,125,10,9,9,9,
332+ 9,125,41,59,10,9,9,9,125,41,59,10,9,9,125,41,
333+ 59,10,9,125,10,9,112,115,32,61,32,36,40,34,46,112,
334+ 111,114,116,108,101,116,45,116,111,103,103,108,101,34,41,59,
335+ 10,9,102,111,114,40,118,97,114,32,105,32,61,32,48,59,
336+ 32,105,32,60,32,112,115,46,108,101,110,103,116,104,59,32,
337+ 105,43,43,41,32,123,10,9,9,118,97,114,32,112,32,61,
338+ 32,112,115,91,105,93,59,10,9,9,105,102,40,33,112,46,
339+ 99,111,110,102,105,103,117,114,101,100,41,32,123,10,9,9,
340+ 9,112,46,99,111,110,102,105,103,117,114,101,100,32,61,32,
341+ 116,114,117,101,59,10,9,9,125,32,101,108,115,101,32,123,
342+ 10,9,9,9,99,111,110,116,105,110,117,101,59,10,9,9,
343+ 125,10,9,9,36,40,112,41,46,99,108,105,99,107,40,102,
344+ 117,110,99,116,105,111,110,40,101,41,123,10,9,9,9,101,
345+ 46,115,116,111,112,80,114,111,112,97,103,97,116,105,111,110,
346+ 40,41,59,10,9,9,9,118,97,114,32,105,99,111,110,32,
347+ 61,32,36,40,116,104,105,115,41,59,10,9,9,9,105,99,
348+ 111,110,46,116,111,103,103,108,101,67,108,97,115,115,40,34,
349+ 117,105,45,105,99,111,110,45,109,105,110,117,115,32,117,105,
350+ 45,105,99,111,110,45,112,108,117,115,34,41,59,10,9,9,
351+ 9,118,97,114,32,112,108,32,61,32,105,99,111,110,46,99,
352+ 108,111,115,101,115,116,40,34,46,112,111,114,116,108,101,116,
353+ 34,41,59,10,9,9,9,112,108,46,102,105,110,100,40,34,
354+ 46,112,111,114,116,108,101,116,45,99,111,110,116,101,110,116,
355+ 34,41,46,116,111,103,103,108,101,40,41,59,10,9,9,9,
356+ 112,108,46,102,105,110,100,40,34,46,99,108,105,118,101,99,
357+ 116,108,34,41,46,101,97,99,104,40,102,117,110,99,116,105,
358+ 111,110,40,41,32,123,10,9,9,9,9,105,102,40,116,104,
359+ 105,115,46,97,100,100,115,105,122,101,41,32,123,10,9,9,
360+ 9,9,9,116,104,105,115,46,97,100,100,115,105,122,101,40,
361+ 48,41,59,10,9,9,9,9,125,10,9,9,9,125,41,59,
362+ 10,9,9,125,41,59,10,9,125,10,9,112,115,32,61,32,
363+ 36,40,34,46,112,111,114,116,108,101,116,45,99,108,111,115,
364+ 101,34,41,59,10,9,102,111,114,40,118,97,114,32,105,32,
365+ 61,32,48,59,32,105,32,60,32,112,115,46,108,101,110,103,
366+ 116,104,59,32,105,43,43,41,32,123,10,9,9,118,97,114,
367+ 32,112,32,61,32,112,115,91,105,93,59,10,9,9,105,102,
368+ 40,33,112,46,99,111,110,102,105,103,117,114,101,100,41,32,
369+ 123,10,9,9,9,112,46,99,111,110,102,105,103,117,114,101,
370+ 100,32,61,32,116,114,117,101,59,10,9,9,125,32,101,108,
371+ 115,101,32,123,10,9,9,9,99,111,110,116,105,110,117,101,
372+ 59,10,9,9,125,10,9,9,36,40,112,41,46,99,108,105,
373+ 99,107,40,102,117,110,99,116,105,111,110,40,101,41,123,10,
374+ 9,9,9,101,46,115,116,111,112,80,114,111,112,97,103,97,
375+ 116,105,111,110,40,41,59,10,9,9,9,118,97,114,32,105,
376+ 99,111,110,32,61,32,36,40,116,104,105,115,41,59,10,9,
377+ 9,9,118,97,114,32,101,108,32,61,32,105,99,111,110,46,
378+ 99,108,111,115,101,115,116,40,34,46,112,111,114,116,108,101,
379+ 116,34,41,59,10,9,9,9,114,101,109,111,118,101,99,111,
380+ 110,116,114,111,108,40,101,108,44,32,116,114,117,101,41,10,
381+ 9,9,125,41,59,10,9,125,10,9,112,115,32,61,32,36,
382+ 40,34,46,112,111,114,116,108,101,116,45,105,110,99,114,34,
383+ 41,59,10,9,102,111,114,40,118,97,114,32,105,32,61,32,
384+ 48,59,32,105,32,60,32,112,115,46,108,101,110,103,116,104,
385+ 59,32,105,43,43,41,32,123,10,9,9,118,97,114,32,112,
386+ 32,61,32,112,115,91,105,93,59,10,9,9,105,102,40,33,
387+ 112,46,99,111,110,102,105,103,117,114,101,100,41,32,123,10,
388+ 9,9,9,112,46,99,111,110,102,105,103,117,114,101,100,32,
389+ 61,32,116,114,117,101,59,10,9,9,125,32,101,108,115,101,
390+ 32,123,10,9,9,9,99,111,110,116,105,110,117,101,59,10,
391+ 9,9,125,10,9,9,36,40,112,41,46,99,108,105,99,107,
392+ 40,102,117,110,99,116,105,111,110,40,101,41,123,10,9,9,
393+ 9,101,46,115,116,111,112,80,114,111,112,97,103,97,116,105,
394+ 111,110,40,41,59,10,9,9,9,118,97,114,32,105,99,111,
395+ 110,32,61,32,36,40,116,104,105,115,41,59,10,9,9,9,
396+ 118,97,114,32,101,108,32,61,32,105,99,111,110,46,99,108,
397+ 111,115,101,115,116,40,34,46,112,111,114,116,108,101,116,34,
398+ 41,59,10,9,9,9,109,97,120,112,108,40,101,108,41,59,
399+ 10,9,9,9,36,40,101,108,41,46,102,105,110,100,40,34,
400+ 46,99,108,105,118,101,99,116,108,34,41,46,101,97,99,104,
401+ 40,102,117,110,99,116,105,111,110,40,41,32,123,10,9,9,
402+ 9,9,105,102,40,116,104,105,115,46,97,100,100,115,105,122,
403+ 101,41,32,123,10,9,9,9,9,9,116,104,105,115,46,97,
404+ 100,100,115,105,122,101,40,49,41,59,10,9,9,9,9,125,
405+ 10,9,9,9,125,41,59,10,9,9,125,41,59,10,9,125,
406+ 10,9,112,115,32,61,32,36,40,34,46,112,111,114,116,108,
407+ 101,116,45,105,110,99,114,50,34,41,59,10,9,102,111,114,
408+ 40,118,97,114,32,105,32,61,32,48,59,32,105,32,60,32,
409+ 112,115,46,108,101,110,103,116,104,59,32,105,43,43,41,32,
410+ 123,10,9,9,118,97,114,32,112,32,61,32,112,115,91,105,
411+ 93,59,10,9,9,105,102,40,33,112,46,99,111,110,102,105,
412+ 103,117,114,101,100,41,32,123,10,9,9,9,112,46,99,111,
413+ 110,102,105,103,117,114,101,100,32,61,32,116,114,117,101,59,
414+ 10,9,9,125,32,101,108,115,101,32,123,10,9,9,9,99,
415+ 111,110,116,105,110,117,101,59,10,9,9,125,10,9,9,36,
416+ 40,112,41,46,99,108,105,99,107,40,102,117,110,99,116,105,
417+ 111,110,40,101,41,123,10,9,9,9,101,46,115,116,111,112,
418+ 80,114,111,112,97,103,97,116,105,111,110,40,41,59,10,9,
419+ 9,9,118,97,114,32,105,99,111,110,32,61,32,36,40,116,
420+ 104,105,115,41,59,10,9,9,9,118,97,114,32,101,108,32,
344421 61,32,105,99,111,110,46,99,108,111,115,101,115,116,40,34,
345− 46,112,111,114,116,108,101,116,34,41,59,10,9,9,9,112,
346− 108,46,102,105,110,100,40,34,46,112,111,114,116,108,101,116,
347− 45,99,111,110,116,101,110,116,34,41,46,116,111,103,103,108,
348− 101,40,41,59,10,9,9,9,112,108,46,102,105,110,100,40,
349− 34,46,99,97,110,97,100,100,115,105,122,101,34,41,46,101,
350− 97,99,104,40,102,117,110,99,116,105,111,110,40,41,32,123,
351− 10,9,9,9,9,105,102,40,116,104,105,115,46,97,100,100,
352− 115,105,122,101,41,32,123,10,9,9,9,9,9,116,104,105,
353− 115,46,97,100,100,115,105,122,101,40,48,41,59,10,9,9,
354− 9,9,125,10,9,9,9,125,41,59,10,9,9,125,41,59,
355− 10,9,125,10,9,112,115,32,61,32,36,40,34,46,112,111,
356− 114,116,108,101,116,45,99,108,111,115,101,34,41,59,10,9,
357− 102,111,114,40,118,97,114,32,105,32,61,32,48,59,32,105,
358− 32,60,32,112,115,46,108,101,110,103,116,104,59,32,105,43,
359− 43,41,32,123,10,9,9,118,97,114,32,112,32,61,32,112,
360− 115,91,105,93,59,10,9,9,105,102,40,33,112,46,99,111,
361− 110,102,105,103,117,114,101,100,41,32,123,10,9,9,9,112,
362− 46,99,111,110,102,105,103,117,114,101,100,32,61,32,116,114,
363− 117,101,59,10,9,9,125,32,101,108,115,101,32,123,10,9,
364− 9,9,99,111,110,116,105,110,117,101,59,10,9,9,125,10,
365− 9,9,36,40,112,41,46,99,108,105,99,107,40,102,117,110,
366− 99,116,105,111,110,40,101,41,123,10,9,9,9,101,46,115,
367− 116,111,112,80,114,111,112,97,103,97,116,105,111,110,40,41,
368− 59,10,9,9,9,118,97,114,32,105,99,111,110,32,61,32,
369− 36,40,116,104,105,115,41,59,10,9,9,9,118,97,114,32,
370− 101,108,32,61,32,105,99,111,110,46,99,108,111,115,101,115,
371− 116,40,34,46,112,111,114,116,108,101,116,34,41,59,10,9,
372− 9,9,114,101,109,111,118,101,99,111,110,116,114,111,108,40,
373− 101,108,44,32,116,114,117,101,41,10,9,9,125,41,59,10,
374− 9,125,10,9,112,115,32,61,32,36,40,34,46,112,111,114,
375− 116,108,101,116,45,105,110,99,114,34,41,59,10,9,102,111,
376− 114,40,118,97,114,32,105,32,61,32,48,59,32,105,32,60,
377− 32,112,115,46,108,101,110,103,116,104,59,32,105,43,43,41,
378− 32,123,10,9,9,118,97,114,32,112,32,61,32,112,115,91,
379− 105,93,59,10,9,9,105,102,40,33,112,46,99,111,110,102,
380− 105,103,117,114,101,100,41,32,123,10,9,9,9,112,46,99,
381− 111,110,102,105,103,117,114,101,100,32,61,32,116,114,117,101,
382− 59,10,9,9,125,32,101,108,115,101,32,123,10,9,9,9,
383− 99,111,110,116,105,110,117,101,59,10,9,9,125,10,9,9,
384− 36,40,112,41,46,99,108,105,99,107,40,102,117,110,99,116,
385− 105,111,110,40,101,41,123,10,9,9,9,101,46,115,116,111,
386− 112,80,114,111,112,97,103,97,116,105,111,110,40,41,59,10,
387− 9,9,9,118,97,114,32,105,99,111,110,32,61,32,36,40,
388− 116,104,105,115,41,59,10,9,9,9,118,97,114,32,101,108,
389− 32,61,32,105,99,111,110,46,99,108,111,115,101,115,116,40,
390− 34,46,112,111,114,116,108,101,116,34,41,59,10,9,9,9,
391− 109,97,120,112,108,40,101,108,41,59,10,9,9,9,36,40,
392− 101,108,41,46,102,105,110,100,40,34,46,99,97,110,97,100,
393− 100,115,105,122,101,34,41,46,101,97,99,104,40,102,117,110,
394− 99,116,105,111,110,40,41,32,123,10,9,9,9,9,105,102,
395− 40,116,104,105,115,46,97,100,100,115,105,122,101,41,32,123,
396− 10,9,9,9,9,9,116,104,105,115,46,97,100,100,115,105,
397− 122,101,40,49,41,59,10,9,9,9,9,125,10,9,9,9,
398− 125,41,59,10,9,9,125,41,59,10,9,125,10,9,112,115,
399− 32,61,32,36,40,34,46,112,111,114,116,108,101,116,45,105,
400− 110,99,114,50,34,41,59,10,9,102,111,114,40,118,97,114,
401− 32,105,32,61,32,48,59,32,105,32,60,32,112,115,46,108,
402− 101,110,103,116,104,59,32,105,43,43,41,32,123,10,9,9,
403− 118,97,114,32,112,32,61,32,112,115,91,105,93,59,10,9,
404− 9,105,102,40,33,112,46,99,111,110,102,105,103,117,114,101,
405− 100,41,32,123,10,9,9,9,112,46,99,111,110,102,105,103,
406− 117,114,101,100,32,61,32,116,114,117,101,59,10,9,9,125,
407− 32,101,108,115,101,32,123,10,9,9,9,99,111,110,116,105,
408− 110,117,101,59,10,9,9,125,10,9,9,36,40,112,41,46,
409− 99,108,105,99,107,40,102,117,110,99,116,105,111,110,40,101,
410− 41,123,10,9,9,9,101,46,115,116,111,112,80,114,111,112,
411− 97,103,97,116,105,111,110,40,41,59,10,9,9,9,118,97,
412− 114,32,105,99,111,110,32,61,32,36,40,116,104,105,115,41,
413− 59,10,9,9,9,118,97,114,32,101,108,32,61,32,105,99,
414− 111,110,46,99,108,111,115,101,115,116,40,34,46,112,111,114,
415− 116,108,101,116,34,41,59,10,9,9,9,109,97,120,112,108,
416− 40,101,108,41,59,10,9,9,9,36,40,101,108,41,46,102,
417− 105,110,100,40,34,46,99,97,110,97,100,100,115,105,122,101,
418− 34,41,46,101,97,99,104,40,102,117,110,99,116,105,111,110,
419− 40,41,32,123,10,9,9,9,9,105,102,40,116,104,105,115,
420− 46,97,100,100,115,105,122,101,41,32,123,10,9,9,9,9,
421− 9,116,104,105,115,46,97,100,100,115,105,122,101,40,50,41,
422− 59,10,9,9,9,9,125,10,9,9,9,125,41,59,10,9,
423− 9,125,41,59,10,9,125,10,9,112,115,32,61,32,36,40,
424− 34,46,112,111,114,116,108,101,116,45,100,101,99,114,34,41,
425− 59,10,9,102,111,114,40,118,97,114,32,105,32,61,32,48,
426− 59,32,105,32,60,32,112,115,46,108,101,110,103,116,104,59,
427− 32,105,43,43,41,32,123,10,9,9,118,97,114,32,112,32,
428− 61,32,112,115,91,105,93,59,10,9,9,105,102,40,33,112,
429− 46,99,111,110,102,105,103,117,114,101,100,41,32,123,10,9,
430− 9,9,112,46,99,111,110,102,105,103,117,114,101,100,32,61,
431− 32,116,114,117,101,59,10,9,9,125,32,101,108,115,101,32,
432− 123,10,9,9,9,99,111,110,116,105,110,117,101,59,10,9,
433− 9,125,10,9,9,36,40,112,41,46,99,108,105,99,107,40,
434− 102,117,110,99,116,105,111,110,40,101,41,123,10,9,9,9,
435− 101,46,115,116,111,112,80,114,111,112,97,103,97,116,105,111,
436− 110,40,41,59,10,9,9,9,118,97,114,32,105,99,111,110,
437− 32,61,32,36,40,116,104,105,115,41,59,10,9,9,9,118,
438− 97,114,32,101,108,32,61,32,105,99,111,110,46,99,108,111,
439− 115,101,115,116,40,34,46,112,111,114,116,108,101,116,34,41,
440− 59,10,9,9,9,109,97,120,112,108,40,101,108,41,59,10,
441− 9,9,9,36,40,101,108,41,46,102,105,110,100,40,34,46,
442− 99,97,110,97,100,100,115,105,122,101,34,41,46,101,97,99,
422+ 46,112,111,114,116,108,101,116,34,41,59,10,9,9,9,109,
423+ 97,120,112,108,40,101,108,41,59,10,9,9,9,36,40,101,
424+ 108,41,46,102,105,110,100,40,34,46,99,108,105,118,101,99,
425+ 116,108,34,41,46,101,97,99,104,40,102,117,110,99,116,105,
426+ 111,110,40,41,32,123,10,9,9,9,9,105,102,40,116,104,
427+ 105,115,46,97,100,100,115,105,122,101,41,32,123,10,9,9,
428+ 9,9,9,116,104,105,115,46,97,100,100,115,105,122,101,40,
429+ 50,41,59,10,9,9,9,9,125,10,9,9,9,125,41,59,
430+ 10,9,9,125,41,59,10,9,125,10,9,112,115,32,61,32,
431+ 36,40,34,46,112,111,114,116,108,101,116,45,100,101,99,114,
432+ 34,41,59,10,9,102,111,114,40,118,97,114,32,105,32,61,
433+ 32,48,59,32,105,32,60,32,112,115,46,108,101,110,103,116,
434+ 104,59,32,105,43,43,41,32,123,10,9,9,118,97,114,32,
435+ 112,32,61,32,112,115,91,105,93,59,10,9,9,105,102,40,
436+ 33,112,46,99,111,110,102,105,103,117,114,101,100,41,32,123,
437+ 10,9,9,9,112,46,99,111,110,102,105,103,117,114,101,100,
438+ 32,61,32,116,114,117,101,59,10,9,9,125,32,101,108,115,
439+ 101,32,123,10,9,9,9,99,111,110,116,105,110,117,101,59,
440+ 10,9,9,125,10,9,9,36,40,112,41,46,99,108,105,99,
441+ 107,40,102,117,110,99,116,105,111,110,40,101,41,123,10,9,
442+ 9,9,101,46,115,116,111,112,80,114,111,112,97,103,97,116,
443+ 105,111,110,40,41,59,10,9,9,9,118,97,114,32,105,99,
444+ 111,110,32,61,32,36,40,116,104,105,115,41,59,10,9,9,
445+ 9,118,97,114,32,101,108,32,61,32,105,99,111,110,46,99,
446+ 108,111,115,101,115,116,40,34,46,112,111,114,116,108,101,116,
447+ 34,41,59,10,9,9,9,109,97,120,112,108,40,101,108,41,
448+ 59,10,9,9,9,36,40,101,108,41,46,102,105,110,100,40,
449+ 34,46,99,108,105,118,101,99,116,108,34,41,46,101,97,99,
443450 104,40,102,117,110,99,116,105,111,110,40,41,32,123,10,9,
444451 9,9,9,105,102,40,116,104,105,115,46,97,100,100,115,105,
445452 122,101,41,32,123,10,9,9,9,9,9,116,104,105,115,46,
@@ -704,1720 +711,936 @@ var Files = map[string][]byte{ · 258 unmodified lines
704711 101,114,102,108,111,119,34,44,32,34,104,105,100,100,101,110,
705712 34,41,59,10,9,10,125,41,59,10,
706713 },
707− "js/clive.js": []byte{
714+ "js/ctlr.js": []byte{
708715 34,117,115,101,32,115,116,114,105,99,116,34,59,10,47,42,10,
709− 32,42,32,80,108,97,99,101,104,111,108,100,101,114,32,102,
710− 111,114,32,99,108,105,118,101,32,116,111,111,108,115,10,42,
711− 47,10,
716+ 9,67,108,105,118,101,32,106,115,32,99,111,100,101,32,102,
717+ 111,114,32,105,110,107,32,99,111,110,116,114,111,108,115,46,
718+ 10,42,47,10,10,47,47,32,65,32,99,108,105,118,101,32,
719+ 99,116,108,114,46,10,47,47,32,67,97,108,108,101,114,115,
720+ 32,109,117,115,116,32,104,97,118,101,32,100,101,102,105,110,
721+ 101,100,32,46,100,44,32,46,99,44,32,46,99,105,100,44,
722+ 32,97,110,100,32,46,105,100,32,98,101,102,111,114,101,32,
723+ 99,97,108,108,105,110,103,32,116,104,105,115,46,10,47,47,
724+ 32,73,102,32,116,104,105,115,46,100,32,104,97,115,32,119,
725+ 115,97,100,100,114,32,100,101,102,105,110,101,100,44,32,116,
726+ 104,97,116,32,98,97,115,101,32,97,100,100,114,101,115,115,
727+ 32,105,115,32,117,115,101,100,46,10,47,47,32,84,104,105,
728+ 115,32,112,114,111,118,105,100,101,115,32,116,104,101,32,112,
729+ 111,115,116,32,109,101,116,104,111,100,32,97,110,100,32,99,
730+ 97,108,108,115,32,40,105,102,32,100,101,102,105,110,101,100,
731+ 41,32,116,111,32,97,112,112,108,121,44,32,97,117,116,111,
732+ 114,101,115,105,122,101,44,32,97,110,100,32,109,97,121,114,
733+ 101,115,105,122,101,32,109,101,116,104,111,100,115,46,10,102,
734+ 117,110,99,116,105,111,110,32,67,108,105,118,101,67,116,108,
735+ 114,40,41,32,123,10,9,116,104,105,115,46,100,46,99,108,
736+ 105,118,101,99,116,108,114,32,61,32,116,104,105,115,59,10,
737+ 9,116,104,105,115,46,99,46,99,108,105,118,101,99,116,108,
738+ 114,32,61,32,116,104,105,115,59,10,9,116,104,105,115,46,
739+ 117,115,101,114,114,101,115,105,122,101,100,32,61,32,102,97,
740+ 108,115,101,59,10,9,116,104,105,115,46,119,115,117,114,108,
741+ 32,61,32,34,119,115,115,58,47,47,34,32,43,32,119,105,
742+ 110,100,111,119,46,108,111,99,97,116,105,111,110,46,104,111,
743+ 115,116,32,43,32,34,47,119,115,47,34,32,43,32,116,104,
744+ 105,115,46,99,105,100,59,10,9,105,102,40,116,104,105,115,
745+ 46,100,46,119,115,97,100,100,114,41,32,123,10,9,9,116,
746+ 104,105,115,46,119,115,117,114,108,32,61,32,116,104,105,115,
747+ 46,100,46,119,115,97,100,100,114,32,43,32,34,47,119,115,
748+ 47,34,32,43,32,116,104,105,115,46,99,105,100,59,10,9,
749+ 125,10,10,9,36,40,116,104,105,115,46,100,41,46,97,100,
750+ 100,67,108,97,115,115,40,34,99,108,105,118,101,99,116,108,
751+ 34,41,59,10,9,118,97,114,32,115,101,108,102,32,61,32,
752+ 116,104,105,115,59,10,9,47,47,32,117,115,101,32,115,101,
753+ 108,102,32,104,101,114,101,44,32,98,101,99,97,117,115,101,
754+ 32,112,111,115,116,32,119,105,108,108,32,98,101,32,98,111,
755+ 117,110,100,32,97,108,115,111,32,116,111,32,116,104,105,115,
756+ 46,100,10,9,116,104,105,115,46,112,111,115,116,32,61,32,
757+ 102,117,110,99,116,105,111,110,40,97,114,103,115,41,32,123,
758+ 10,9,9,118,97,114,32,119,115,32,61,32,115,101,108,102,
759+ 46,119,115,59,10,9,9,105,102,40,33,119,115,41,123,10,
760+ 9,9,9,99,111,110,115,111,108,101,46,108,111,103,40,34,
761+ 112,111,115,116,58,32,110,111,32,119,115,34,41,59,10,9,
762+ 9,9,114,101,116,117,114,110,32,110,105,108,59,10,9,9,
763+ 125,10,9,9,105,102,40,33,97,114,103,115,32,124,124,32,
764+ 33,97,114,103,115,91,48,93,41,123,10,9,9,9,99,111,
765+ 110,115,111,108,101,46,108,111,103,40,34,112,111,115,116,58,
766+ 32,110,111,32,97,114,103,115,34,41,59,10,9,9,9,114,
767+ 101,116,117,114,110,32,110,105,108,59,10,9,9,125,10,9,
768+ 9,105,102,40,33,115,101,108,102,46,118,101,114,115,41,32,
769+ 123,10,9,9,9,115,101,108,102,46,118,101,114,115,32,61,
770+ 32,48,59,10,9,9,125,10,9,9,47,47,32,99,117,116,
771+ 32,97,100,118,97,110,99,101,115,32,116,104,101,32,118,101,
772+ 114,115,32,40,109,105,103,104,116,32,100,101,108,32,110,111,
773+ 116,104,105,110,103,41,10,9,9,47,47,32,116,104,105,115,
774+ 32,105,115,32,102,111,114,32,116,101,120,116,32,97,110,100,
775+ 32,115,104,111,117,108,100,110,39,116,32,98,101,32,104,101,
776+ 114,101,46,10,9,9,105,102,40,97,114,103,115,91,48,93,
777+ 32,61,61,32,34,101,105,110,115,34,32,124,124,32,97,114,
778+ 103,115,91,48,93,32,61,61,32,34,101,100,101,108,34,41,
779+ 32,123,10,9,9,9,115,101,108,102,46,118,101,114,115,43,
780+ 43,59,10,9,9,125,10,9,9,118,97,114,32,101,118,32,
781+ 61,32,123,73,100,58,32,115,101,108,102,46,99,105,100,44,
782+ 32,83,114,99,58,32,115,101,108,102,46,105,100,44,32,86,
783+ 101,114,115,58,32,115,101,108,102,46,118,101,114,115,44,32,
784+ 65,114,103,115,58,32,97,114,103,115,125,59,10,9,9,118,
785+ 97,114,32,109,115,103,32,61,32,74,83,79,78,46,115,116,
786+ 114,105,110,103,105,102,121,40,101,118,41,59,10,9,9,116,
787+ 114,121,32,123,10,9,9,9,115,101,108,102,46,119,115,46,
788+ 115,101,110,100,40,109,115,103,41,59,10,9,9,9,47,47,
789+ 32,99,111,110,115,111,108,101,46,108,111,103,40,34,112,111,
790+ 115,116,105,110,103,32,34,44,32,109,115,103,41,59,10,9,
791+ 9,125,99,97,116,99,104,40,101,120,41,123,10,9,9,9,
792+ 99,111,110,115,111,108,101,46,108,111,103,40,34,112,111,115,
793+ 116,58,32,34,32,43,32,101,120,41,59,10,9,9,125,10,
794+ 9,9,47,47,32,105,102,32,116,104,105,115,32,105,115,32,
795+ 97,32,99,117,116,44,32,105,116,32,105,109,112,108,105,101,
796+ 115,32,97,32,100,101,108,32,97,110,100,32,119,101,10,9,
797+ 9,47,47,32,109,117,115,116,32,97,100,118,97,110,99,101,
798+ 32,111,117,114,32,118,101,114,115,44,32,116,104,101,32,101,
799+ 118,101,110,116,32,100,105,100,110,39,116,10,9,9,47,47,
800+ 32,97,100,118,97,110,99,101,32,116,104,101,32,118,101,114,
801+ 115,46,10,9,9,47,47,32,83,97,109,101,32,102,111,114,
802+ 32,112,97,115,116,101,46,10,9,9,47,47,32,116,104,105,
803+ 115,32,105,115,32,102,111,114,32,116,101,120,116,32,97,110,
804+ 100,32,115,104,111,117,108,100,110,39,116,32,98,101,32,104,
805+ 101,114,101,46,10,9,9,105,102,40,97,114,103,115,91,48,
806+ 93,32,61,61,32,34,101,99,117,116,34,32,124,124,32,97,
807+ 114,103,115,91,48,93,32,61,61,32,34,101,112,97,115,116,
808+ 101,34,41,32,123,10,9,9,9,101,118,46,86,101,114,115,
809+ 43,43,59,10,9,9,125,10,9,9,114,101,116,117,114,110,
810+ 32,101,118,59,10,9,125,59,10,10,9,116,104,105,115,46,
811+ 115,101,116,116,97,103,32,61,32,102,117,110,99,116,105,111,
812+ 110,40,116,41,32,123,10,9,9,105,102,40,100,111,99,117,
813+ 109,101,110,116,46,115,101,116,116,97,103,41,32,123,10,9,
814+ 9,9,100,111,99,117,109,101,110,116,46,115,101,116,116,97,
815+ 103,40,116,104,105,115,44,32,116,41,59,10,9,9,125,10,
816+ 9,125,59,10,10,9,116,104,105,115,46,115,101,116,100,105,
817+ 114,116,121,32,61,32,102,117,110,99,116,105,111,110,40,41,
818+ 32,123,10,9,9,105,102,40,100,111,99,117,109,101,110,116,
819+ 46,115,101,116,100,105,114,116,121,41,32,123,10,9,9,9,
820+ 100,111,99,117,109,101,110,116,46,115,101,116,100,105,114,116,
821+ 121,40,116,104,105,115,41,59,10,9,9,125,10,9,125,59,
822+ 10,10,9,116,104,105,115,46,115,101,116,99,108,101,97,110,
823+ 32,61,32,102,117,110,99,116,105,111,110,40,41,32,123,10,
824+ 9,9,105,102,40,100,111,99,117,109,101,110,116,46,115,101,
825+ 116,99,108,101,97,110,41,32,123,10,9,9,9,100,111,99,
826+ 117,109,101,110,116,46,115,101,116,99,108,101,97,110,40,116,
827+ 104,105,115,41,59,10,9,9,125,10,9,125,59,10,10,9,
828+ 116,104,105,115,46,115,104,111,119,99,111,110,116,114,111,108,
829+ 32,61,32,102,117,110,99,116,105,111,110,40,41,32,123,10,
830+ 9,9,105,102,40,100,111,99,117,109,101,110,116,46,115,104,
831+ 111,119,99,111,110,116,114,111,108,41,32,123,10,9,9,9,
832+ 100,111,99,117,109,101,110,116,46,115,104,111,119,99,111,110,
833+ 116,114,111,108,40,116,104,105,115,41,59,10,9,9,125,10,
834+ 9,125,59,10,10,9,116,104,105,115,46,119,115,32,61,32,
835+ 110,101,119,32,87,101,98,83,111,99,107,101,116,40,116,104,
836+ 105,115,46,119,115,117,114,108,41,59,10,9,116,104,105,115,
837+ 46,119,115,46,111,110,111,112,101,110,32,61,32,102,117,110,
838+ 99,116,105,111,110,40,41,32,123,10,9,9,115,101,108,102,
839+ 46,112,111,115,116,40,91,34,105,100,34,93,41,59,10,9,
840+ 125,59,10,9,116,104,105,115,46,119,115,46,111,110,101,114,
841+ 114,111,114,32,61,32,102,117,110,99,116,105,111,110,40,101,
842+ 118,41,32,123,10,9,9,99,111,110,115,111,108,101,46,108,
843+ 111,103,40,34,119,115,32,101,114,114,34,44,32,101,118,41,
844+ 59,10,9,125,59,10,9,116,104,105,115,46,119,115,46,111,
845+ 110,109,101,115,115,97,103,101,32,61,32,102,117,110,99,116,
846+ 105,111,110,40,101,118,41,32,123,10,9,9,118,97,114,32,
847+ 111,32,61,32,74,83,79,78,46,112,97,114,115,101,40,101,
848+ 118,46,100,97,116,97,41,59,10,9,9,105,102,40,33,111,
849+ 32,124,124,32,33,111,46,73,100,41,32,123,10,9,9,9,
850+ 99,111,110,115,111,108,101,46,108,111,103,40,34,117,112,100,
851+ 97,116,101,58,32,110,111,32,111,98,106,101,116,32,105,100,
852+ 34,41,59,10,9,9,9,114,101,116,117,114,110,59,10,9,
853+ 9,125,10,9,9,105,102,40,116,100,101,98,117,103,41,99,
854+ 111,110,115,111,108,101,46,108,111,103,40,34,117,112,100,97,
855+ 116,101,32,116,111,34,44,32,111,46,73,100,44,32,111,46,
856+ 65,114,103,115,41,59,10,9,9,105,102,40,115,101,108,102,
857+ 46,97,112,112,108,121,41,32,123,10,9,9,9,115,101,108,
858+ 102,46,97,112,112,108,121,40,111,44,32,116,114,117,101,41,
859+ 59,10,9,9,125,10,9,125,59,10,9,116,104,105,115,46,
860+ 119,115,46,111,110,99,108,111,115,101,32,61,32,102,117,110,
861+ 99,116,105,111,110,40,41,32,123,10,9,9,99,111,110,115,
862+ 111,108,101,46,108,111,103,40,34,116,101,120,116,32,115,111,
863+ 99,107,101,116,32,34,32,43,32,115,101,108,102,46,119,115,
864+ 117,114,108,43,32,34,32,99,108,111,115,101,100,92,110,34,
865+ 41,59,10,9,9,115,101,108,102,46,100,46,114,101,112,108,
866+ 97,99,101,87,105,116,104,40,34,60,104,51,62,100,105,115,
867+ 99,111,110,110,101,99,116,101,100,60,47,104,51,62,34,41,
868+ 59,10,9,125,59,10,10,9,47,47,32,116,104,105,115,32,
869+ 105,115,32,102,111,114,32,112,103,46,106,115,44,32,119,105,
870+ 108,108,32,103,111,46,10,9,118,97,114,32,100,48,32,61,
871+ 32,116,104,105,115,46,100,46,103,101,116,40,48,41,59,10,
872+ 9,100,48,46,119,115,32,61,32,116,104,105,115,46,119,115,
873+ 59,10,9,100,48,46,112,111,115,116,32,61,32,116,104,105,
874+ 115,46,112,111,115,116,59,10,9,116,104,105,115,46,100,46,
875+ 112,111,115,116,32,61,32,116,104,105,115,46,112,111,115,116,
876+ 59,10,10,9,100,48,46,97,100,100,115,105,122,101,32,61,
877+ 32,102,117,110,99,116,105,111,110,40,109,111,114,101,108,101,
878+ 115,115,41,32,123,10,9,9,105,102,40,115,101,108,102,46,
879+ 97,117,116,111,114,101,115,105,122,101,41,32,123,10,9,9,
880+ 9,115,101,108,102,46,97,117,116,111,114,101,115,105,122,101,
881+ 40,116,114,117,101,44,32,109,111,114,101,108,101,115,115,41,
882+ 59,10,9,9,125,10,9,125,59,10,9,116,104,105,115,46,
883+ 100,46,114,101,115,105,122,97,98,108,101,40,123,10,9,9,
884+ 104,97,110,100,108,101,115,58,32,39,115,39,10,9,125,41,
885+ 46,111,110,40,39,114,101,115,105,122,101,39,44,32,102,117,
886+ 110,99,116,105,111,110,40,41,32,123,10,9,9,99,111,110,
887+ 115,111,108,101,46,108,111,103,40,34,117,115,101,114,32,114,
888+ 101,115,105,122,101,100,34,41,59,10,9,9,115,101,108,102,
889+ 46,117,115,101,114,114,101,115,105,122,101,100,32,61,32,116,
890+ 114,117,101,59,10,9,9,105,102,40,115,101,108,102,46,109,
891+ 97,121,114,101,115,105,122,101,41,32,123,10,9,9,9,115,
892+ 101,108,102,46,109,97,121,114,101,115,105,122,101,40,116,114,
893+ 117,101,41,59,10,9,9,125,10,9,125,41,59,10,9,36,
894+ 40,119,105,110,100,111,119,41,46,114,101,115,105,122,101,40,
895+ 102,117,110,99,116,105,111,110,40,41,32,123,10,9,9,99,
896+ 111,110,115,111,108,101,46,108,111,103,40,34,119,105,110,100,
897+ 111,119,32,114,101,115,105,122,101,100,34,41,59,10,9,9,
898+ 105,102,40,115,101,108,102,46,109,97,121,114,101,115,105,122,
899+ 101,41,32,123,10,9,9,9,115,101,108,102,46,109,97,121,
900+ 114,101,115,105,122,101,40,102,97,108,115,101,41,59,10,9,
901+ 9,125,10,9,125,41,59,10,10,10,125,10,
712902 },
713− "js/txt.js": []byte{
903+ "js/text.js": []byte{
714904 34,117,115,101,32,115,116,114,105,99,116,34,59,10,47,42,10,
715− 9,106,115,32,99,111,100,101,32,102,111,114,32,116,104,101,
716− 32,99,108,105,118,101,32,116,101,120,116,32,102,114,97,109,
717− 101,10,9,119,104,105,99,104,32,105,115,32,115,105,109,105,
718− 108,97,114,32,116,111,32,97,32,80,108,97,110,32,57,32,
719− 116,101,120,116,32,102,114,97,109,101,10,9,98,117,116,32,
720− 105,109,112,108,101,109,101,110,116,101,100,32,119,105,116,104,
721− 32,116,104,101,32,72,84,77,76,53,32,99,97,110,118,97,
722− 115,46,10,10,9,72,84,77,76,53,32,100,101,115,105,103,
723− 110,101,114,115,32,115,117,103,103,101,115,116,32,116,104,97,
724− 116,32,121,111,117,32,100,111,110,39,116,32,100,111,32,116,
725− 104,105,115,44,32,98,117,116,32,111,110,32,116,104,101,32,
726− 111,116,104,101,114,10,9,104,97,110,100,44,32,116,104,101,
727− 121,32,100,111,32,78,79,84,32,104,97,110,100,108,101,32,
728− 116,101,120,116,32,99,111,114,114,101,99,116,108,121,32,105,
729− 110,32,100,111,109,32,97,110,100,32,116,104,101,121,32,100,
730− 111,32,78,79,84,10,9,112,114,111,118,105,100,101,32,116,
731− 104,101,32,105,110,116,101,114,102,97,99,101,115,32,114,101,
732− 113,117,105,114,101,100,32,116,111,32,104,97,110,100,108,101,
733− 32,116,104,105,110,103,115,32,108,105,107,101,32,117,110,100,
734− 111,32,97,110,100,10,9,114,101,100,111,32,99,111,114,114,
735− 101,99,116,108,121,46,32,10,10,32,42,47,10,10,47,42,
736− 10,32,42,32,72,97,99,107,32,116,111,32,109,97,107,101,
737− 32,115,117,114,101,32,116,104,101,32,102,105,120,101,100,32,
738− 97,110,100,32,118,97,114,32,119,105,100,116,104,32,102,111,
739− 110,116,115,32,101,120,105,115,116,44,32,97,110,100,10,32,
740− 42,32,103,108,111,98,97,108,32,102,111,110,116,32,110,97,
741− 109,101,115,32,102,111,114,32,116,104,111,115,101,32,118,97,
742− 114,105,97,110,116,115,46,10,32,42,47,10,118,97,114,32,
743− 116,102,102,105,120,101,100,32,61,32,34,109,111,110,111,115,
744− 112,97,99,101,34,59,10,118,97,114,32,116,102,118,97,114,
745− 32,61,32,34,76,117,99,105,100,97,32,71,114,97,110,100,
746− 101,34,59,9,47,47,32,111,114,32,86,101,114,100,97,110,
747− 97,10,118,97,114,32,102,111,110,116,115,99,104,101,99,107,
748− 101,100,111,117,116,32,61,32,102,97,108,115,101,59,10,118,
749− 97,114,32,116,100,101,98,117,103,32,61,32,102,97,108,115,
750− 101,59,10,10,102,117,110,99,116,105,111,110,32,99,104,101,
751− 99,107,111,117,116,102,111,110,116,115,40,99,116,120,41,32,
752− 123,10,9,105,102,40,102,111,110,116,115,99,104,101,99,107,
753− 101,100,111,117,116,41,10,9,9,114,101,116,117,114,110,59,
754− 10,9,102,111,110,116,115,99,104,101,99,107,101,100,111,117,
755− 116,32,61,32,116,114,117,101,59,10,9,118,97,114,32,111,
756− 108,100,32,61,32,99,116,120,46,102,111,110,116,59,10,9,
757− 99,116,120,46,102,111,110,116,32,61,32,34,53,48,112,120,
758− 32,65,114,105,97,108,34,59,10,9,118,97,114,32,115,122,
759− 32,61,32,99,116,120,46,109,101,97,115,117,114,101,84,101,
760− 120,116,40,34,65,66,67,34,41,46,119,105,100,116,104,59,
761− 10,9,99,116,120,46,102,111,110,116,32,61,32,34,53,48,
762− 112,120,32,34,32,43,32,116,102,102,105,120,101,100,59,10,
763− 9,105,102,40,99,116,120,46,109,101,97,115,117,114,101,84,
764− 101,120,116,40,34,65,66,67,34,41,46,119,105,100,116,104,
765− 32,61,61,32,115,122,41,10,9,9,116,102,102,105,120,101,
766− 100,32,61,32,34,67,111,117,114,105,101,114,34,59,10,9,
767− 99,116,120,46,102,111,110,116,32,61,32,34,53,48,112,120,
768− 32,34,32,43,32,116,102,118,97,114,59,10,9,105,102,40,
769− 99,116,120,46,109,101,97,115,117,114,101,84,101,120,116,40,
770− 34,65,66,67,34,41,46,119,105,100,116,104,32,61,61,32,
771− 115,122,41,10,9,9,116,102,102,105,120,101,100,32,61,32,
772− 34,65,114,105,97,108,34,59,10,9,99,116,120,46,102,111,
773− 110,116,32,61,32,111,108,100,59,10,125,10,10,102,117,110,
774− 99,116,105,111,110,32,116,102,105,120,102,111,110,116,40,41,
775− 32,123,10,9,118,97,114,32,99,32,61,32,116,104,105,115,
776− 59,10,9,118,97,114,32,99,116,120,32,61,32,99,46,103,
777− 101,116,67,111,110,116,101,120,116,40,34,50,100,34,44,32,
778− 123,97,108,112,104,97,58,32,102,97,108,115,101,125,41,59,
779− 10,9,118,97,114,32,109,111,100,32,61,32,34,34,59,10,
780− 9,118,97,114,32,115,116,121,108,101,32,61,32,34,34,59,
781− 10,9,115,116,121,108,101,32,61,32,116,102,118,97,114,59,
782− 10,9,105,102,40,116,104,105,115,46,102,111,110,116,115,116,
783− 121,108,101,46,105,110,100,101,120,79,102,40,39,114,39,41,
784− 32,61,61,61,32,45,49,41,32,123,10,9,9,115,116,121,
785− 108,101,32,61,32,116,102,102,105,120,101,100,59,10,9,125,
786− 10,9,105,102,40,116,104,105,115,46,102,111,110,116,115,116,
787− 121,108,101,46,105,110,100,101,120,79,102,40,39,98,39,41,
788− 32,62,32,45,49,41,32,123,10,9,9,109,111,100,32,61,
789− 32,34,98,111,108,100,32,34,32,43,32,109,111,100,59,10,
790− 9,125,10,9,105,102,40,116,104,105,115,46,102,111,110,116,
791− 115,116,121,108,101,46,105,110,100,101,120,79,102,40,39,105,
792− 39,41,32,62,32,45,49,41,32,123,10,9,9,109,111,100,
793− 32,61,32,34,105,116,97,108,105,99,32,34,32,43,32,109,
794− 111,100,59,10,9,125,10,9,118,97,114,32,104,116,32,61,
795− 32,116,104,105,115,46,102,111,110,116,104,116,32,45,32,50,
796− 42,116,104,105,115,46,116,115,99,97,108,101,59,10,9,99,
797− 116,120,46,102,111,110,116,32,61,32,109,111,100,32,43,32,
798− 34,32,34,32,32,43,32,104,116,43,34,112,120,32,34,43,
799− 32,115,116,121,108,101,59,10,9,99,116,120,46,116,101,120,
800− 116,66,97,115,101,108,105,110,101,61,34,116,111,112,34,59,
801− 10,125,10,10,102,117,110,99,116,105,111,110,32,97,100,106,
802− 100,101,108,40,112,111,115,44,32,100,101,108,112,48,44,32,
803− 100,101,108,112,49,41,32,123,10,9,105,102,40,112,111,115,
804− 32,60,61,32,100,101,108,112,48,41,10,9,9,114,101,116,
805− 117,114,110,32,112,111,115,59,10,9,105,102,40,112,111,115,
806− 32,60,61,32,100,101,108,112,49,41,10,9,9,114,101,116,
807− 117,114,110,32,100,101,108,112,48,59,10,9,114,101,116,117,
808− 114,110,32,112,111,115,32,45,32,40,100,101,108,112,49,32,
809− 45,32,100,101,108,112,48,41,59,10,125,10,10,102,117,110,
810− 99,116,105,111,110,32,108,110,108,101,110,40,108,110,41,123,
811− 10,9,105,102,40,33,108,110,41,10,9,9,114,101,116,117,
812− 114,110,32,48,59,10,9,105,102,40,108,110,46,101,111,108,
813− 41,10,9,9,114,101,116,117,114,110,32,108,110,46,116,120,
814− 116,46,108,101,110,103,116,104,32,43,32,49,59,10,9,114,
815− 101,116,117,114,110,32,108,110,46,116,120,116,46,108,101,110,
816− 103,116,104,59,10,125,10,10,102,117,110,99,116,105,111,110,
817− 32,116,100,117,109,112,40,41,32,123,10,9,118,97,114,32,
818− 111,102,102,32,61,32,48,59,10,9,102,111,114,40,118,97,
819− 114,32,105,32,61,32,48,59,32,105,32,60,32,116,104,105,
820− 115,46,108,105,110,101,115,46,108,101,110,103,116,104,59,32,
821− 105,43,43,41,123,10,9,9,118,97,114,32,110,32,61,32,
822− 108,110,108,101,110,40,116,104,105,115,46,108,105,110,101,115,
823− 91,105,93,41,59,10,9,9,118,97,114,32,111,32,61,32,
824− 116,104,105,115,46,108,105,110,101,115,91,105,93,46,111,102,
825− 102,10,9,9,105,102,40,33,111,32,38,38,32,33,40,111,
826− 32,61,61,61,32,48,41,41,123,10,9,9,9,99,111,110,
827− 115,111,108,101,46,108,111,103,40,34,66,65,68,32,111,102,
828− 102,32,34,32,43,32,111,32,43,32,34,32,105,110,58,34,
829− 41,59,10,9,9,9,111,32,61,32,111,102,102,59,10,9,
830− 9,125,10,9,9,105,102,40,111,32,33,61,32,111,102,102,
831− 41,123,10,9,9,9,99,111,110,115,111,108,101,46,108,111,
832− 103,40,34,66,65,68,32,111,102,102,32,34,32,43,32,111,
833− 32,43,32,34,32,40,33,61,34,32,43,32,111,102,102,32,
834− 43,32,34,41,32,105,110,58,34,41,59,10,9,9,9,111,
835− 102,102,32,61,32,111,59,10,9,9,125,10,9,9,111,102,
836− 102,32,43,61,32,110,59,10,9,9,105,102,40,116,104,105,
837− 115,46,108,105,110,101,115,91,105,93,46,101,111,108,41,10,
905+ 9,67,108,105,118,101,32,106,115,32,99,111,100,101,32,102,
906+ 111,114,32,116,101,120,116,32,102,114,97,109,101,115,46,10,
907+ 9,115,105,109,105,108,97,114,32,116,111,32,80,108,97,110,
908+ 32,57,32,116,101,120,116,32,102,114,97,109,101,115,32,117,
909+ 115,105,110,103,32,116,104,101,32,72,84,77,76,53,32,99,
910+ 97,110,118,97,115,46,10,10,9,72,84,77,76,53,32,100,
911+ 101,115,105,103,110,101,114,115,32,115,117,103,103,101,115,116,
912+ 32,116,104,97,116,32,121,111,117,32,100,111,110,39,116,32,
913+ 100,111,32,116,104,105,115,44,32,98,117,116,32,111,110,32,
914+ 116,104,101,32,111,116,104,101,114,10,9,104,97,110,100,44,
915+ 32,116,104,101,121,32,100,111,32,78,79,84,32,104,97,110,
916+ 100,108,101,32,116,101,120,116,32,99,111,114,114,101,99,116,
917+ 108,121,32,105,110,32,100,111,109,32,97,110,100,32,116,104,
918+ 101,121,32,100,111,32,78,79,84,10,9,112,114,111,118,105,
919+ 100,101,32,116,104,101,32,105,110,116,101,114,102,97,99,101,
920+ 115,32,114,101,113,117,105,114,101,100,32,116,111,32,104,97,
921+ 110,100,108,101,32,116,104,105,110,103,115,32,108,105,107,101,
922+ 32,117,110,100,111,32,97,110,100,10,9,114,101,100,111,32,
923+ 99,111,114,114,101,99,116,108,121,46,32,10,10,9,84,104,
924+ 105,115,32,114,101,113,117,105,114,101,115,32,97,108,115,111,
925+ 32,108,105,110,101,115,46,106,115,46,10,9,84,104,101,32,
926+ 99,111,100,101,32,105,110,116,101,114,102,97,99,105,110,103,
927+ 32,119,105,116,104,32,112,103,46,106,115,32,110,101,101,100,
928+ 115,32,97,32,114,101,119,114,105,116,101,44,32,97,115,32,
929+ 100,111,101,115,32,112,103,46,106,115,32,105,116,115,101,108,
930+ 102,46,10,42,47,10,10,118,97,114,32,115,101,108,101,99,
931+ 116,105,110,103,32,61,32,102,97,108,115,101,59,10,118,97,
932+ 114,32,116,100,101,98,117,103,32,61,32,102,97,108,115,101,
933+ 59,9,47,47,32,97,108,115,111,32,100,101,102,105,110,101,
934+ 100,32,98,121,32,108,105,110,101,115,46,106,115,10,10,47,
935+ 47,32,84,104,105,115,32,105,115,32,116,111,32,112,114,101,
936+ 118,101,110,116,32,116,104,101,32,101,118,101,110,116,32,102,
937+ 114,111,109,32,98,101,105,110,103,32,112,114,111,112,97,103,
938+ 97,116,101,100,32,116,111,32,116,104,101,32,112,97,114,101,
939+ 110,116,10,47,47,32,99,111,110,116,97,105,110,101,114,46,
940+ 10,47,47,32,68,101,115,112,105,116,101,32,116,104,105,115,
941+ 44,32,105,116,32,115,101,101,109,115,32,116,104,97,116,32,
942+ 105,102,32,119,101,32,114,101,116,117,114,110,32,116,114,117,
943+ 101,32,105,110,32,115,97,102,97,114,105,32,102,111,114,32,
944+ 97,32,107,101,121,100,111,119,110,10,47,47,32,116,104,101,
945+ 110,32,105,116,39,115,32,116,111,111,32,108,97,116,101,32,
946+ 97,110,100,32,116,104,101,32,115,112,97,99,101,32,98,117,
947+ 98,98,108,101,115,32,97,110,100,32,119,101,32,115,99,114,
948+ 111,108,108,32,119,104,101,110,32,119,101,32,115,104,111,117,
949+ 108,100,110,116,46,10,47,47,32,83,111,44,32,108,111,99,
950+ 107,110,107,101,121,100,111,119,110,32,114,101,116,117,114,110,
951+ 115,32,102,97,108,115,101,32,97,110,100,32,99,97,108,108,
952+ 115,44,32,98,121,32,104,97,110,100,44,32,116,104,101,32,
953+ 100,111,119,110,47,107,101,121,47,117,112,32,104,97,110,100,
954+ 108,101,114,115,46,10,102,117,110,99,116,105,111,110,32,100,
955+ 111,110,116,98,117,98,98,108,101,40,101,41,32,123,10,9,
956+ 105,102,32,40,101,41,32,123,10,9,9,101,46,98,117,98,
957+ 98,108,101,115,32,61,32,102,97,108,115,101,59,10,9,9,
958+ 105,102,40,101,46,115,116,111,112,80,114,111,112,97,103,97,
959+ 116,105,111,110,41,32,123,10,9,9,9,101,46,115,116,111,
960+ 112,80,114,111,112,97,103,97,116,105,111,110,40,41,59,10,
961+ 9,9,125,10,9,9,101,46,99,97,110,99,101,108,66,117,
962+ 98,98,108,101,32,61,32,116,114,117,101,59,10,9,125,10,
963+ 125,10,10,47,47,32,65,32,102,114,97,109,101,32,111,102,
964+ 32,108,105,110,101,115,32,117,115,105,110,103,32,116,104,101,
965+ 32,67,108,105,118,101,32,105,110,107,32,102,114,97,109,101,
966+ 119,111,114,107,46,10,47,47,32,100,32,105,115,32,116,104,
967+ 101,32,100,105,118,44,32,99,32,105,115,32,116,104,101,32,
968+ 99,97,110,118,97,115,44,32,99,105,100,32,97,110,100,32,
969+ 105,100,32,97,114,101,32,116,104,101,32,105,110,107,32,105,
970+ 100,115,46,10,47,47,32,84,104,105,115,32,119,105,108,108,
971+ 32,104,97,118,101,32,116,111,32,98,101,32,114,101,119,114,
972+ 105,116,116,101,110,32,119,104,101,110,32,119,101,32,114,101,
973+ 119,114,105,116,101,32,105,110,107,32,106,115,32,99,111,100,
974+ 101,46,10,102,117,110,99,116,105,111,110,32,67,108,105,118,
975+ 101,84,101,120,116,40,100,44,32,99,44,32,99,105,100,44,
976+ 32,105,100,41,32,123,10,9,68,114,97,119,76,105,110,101,
977+ 115,46,99,97,108,108,40,116,104,105,115,44,32,99,41,59,
978+ 10,9,116,104,105,115,46,100,32,61,32,100,59,10,9,116,
979+ 104,105,115,46,99,32,61,32,99,59,10,9,116,104,105,115,
980+ 46,99,105,100,32,61,32,99,105,100,59,10,9,116,104,105,
981+ 115,46,105,100,32,61,32,105,100,59,10,10,9,116,104,105,
982+ 115,46,118,101,114,115,32,61,32,48,59,10,9,116,104,105,
983+ 115,46,110,111,101,100,105,116,115,32,61,32,102,97,108,115,
984+ 101,59,10,10,9,116,104,105,115,46,105,115,108,111,99,107,
985+ 101,100,32,61,32,102,97,108,115,101,59,10,9,116,104,105,
986+ 115,46,108,111,99,107,105,110,103,32,61,32,102,97,108,115,
987+ 101,59,10,9,116,104,105,115,46,109,117,115,116,117,110,108,
988+ 111,99,107,32,61,32,102,97,108,115,101,59,10,9,116,104,
989+ 105,115,46,119,104,101,110,108,111,99,107,101,100,32,61,32,
990+ 91,93,59,10,10,9,116,104,105,115,46,98,117,116,116,111,
991+ 110,115,32,61,32,48,59,10,9,116,104,105,115,46,110,99,
992+ 108,105,99,107,115,32,61,32,123,49,58,32,48,44,32,50,
993+ 58,32,48,44,32,52,58,32,48,125,59,10,9,116,104,105,
994+ 115,46,108,97,115,116,120,32,61,32,48,59,10,9,116,104,
995+ 105,115,46,108,97,115,116,121,32,61,32,48,59,10,9,116,
996+ 104,105,115,46,100,98,108,99,108,105,99,107,32,61,32,48,
997+ 59,32,47,47,32,49,32,102,111,114,32,100,111,117,98,108,
998+ 101,44,32,50,32,102,111,114,32,116,114,105,112,108,101,44,
999+ 32,46,46,46,10,9,116,104,105,115,46,115,101,99,111,110,
1000+ 100,97,114,121,32,61,32,48,59,9,47,47,32,98,117,116,
1001+ 116,111,110,32,102,111,114,32,115,101,108,101,99,116,105,111,
1002+ 110,32,40,97,108,115,111,32,100,101,102,105,110,101,100,32,
1003+ 98,121,32,68,114,97,119,76,105,110,101,115,41,10,9,116,
1004+ 104,105,115,46,115,101,99,111,110,100,97,114,121,97,98,111,
1005+ 114,116,32,61,32,102,97,108,115,101,59,10,9,116,104,105,
1006+ 115,46,109,97,108,116,32,61,32,102,97,108,115,101,59,10,
1007+ 9,116,104,105,115,46,117,115,101,114,114,101,115,105,122,101,
1008+ 100,32,61,32,102,97,108,115,101,59,10,9,116,104,105,115,
1009+ 46,115,101,108,101,99,116,105,110,103,32,61,32,102,97,108,
1010+ 115,101,59,10,9,116,104,105,115,46,111,108,100,112,48,32,
1011+ 61,32,45,49,59,10,9,116,104,105,115,46,111,108,100,112,
1012+ 49,32,61,32,45,49,59,10,9,116,104,105,115,46,99,108,
1013+ 105,99,107,116,105,109,101,32,61,32,110,101,119,32,68,97,
1014+ 116,101,40,41,46,103,101,116,84,105,109,101,40,41,59,10,
1015+ 10,9,116,104,105,115,46,109,97,114,107,105,110,115,100,97,
1016+ 116,97,32,61,32,117,110,100,101,102,105,110,101,100,59,9,
1017+ 47,47,32,119,105,108,108,32,98,101,32,100,101,102,105,110,
1018+ 101,100,32,100,117,114,105,110,103,32,109,97,114,107,105,110,
1019+ 115,10,9,116,104,105,115,46,101,105,110,115,100,97,116,97,
1020+ 32,61,32,117,110,100,101,102,105,110,101,100,59,9,47,47,
1021+ 32,119,105,108,108,32,98,101,32,100,101,102,105,110,101,100,
1022+ 32,100,117,114,105,110,103,32,101,105,110,115,10,9,116,104,
1023+ 105,115,46,114,101,108,111,97,100,108,110,48,32,61,32,48,
1024+ 59,10,10,9,116,104,105,115,46,99,111,109,112,111,115,105,
1025+ 110,103,32,61,32,102,97,108,115,101,59,10,9,116,104,105,
1026+ 115,46,108,97,116,105,110,32,61,32,34,34,59,10,10,9,
1027+ 118,97,114,32,115,101,108,102,32,61,32,116,104,105,115,59,
1028+ 9,47,47,32,119,101,32,114,101,119,114,105,116,101,32,104,
1029+ 97,110,100,108,101,114,115,32,108,97,116,101,114,44,32,97,
1030+ 110,100,32,117,115,101,32,115,101,108,102,46,10,10,9,116,
1031+ 104,105,115,46,109,114,108,115,101,32,61,32,102,117,110,99,
1032+ 116,105,111,110,40,101,41,32,123,10,9,9,118,97,114,32,
1033+ 98,32,61,32,49,60,60,40,101,46,119,104,105,99,104,45,
1034+ 49,41,59,10,9,9,105,102,40,98,32,61,61,32,49,32,
1035+ 38,38,32,116,104,105,115,46,109,97,108,116,41,123,10,9,
1036+ 9,9,98,32,61,32,50,59,10,9,9,9,116,104,105,115,
1037+ 46,98,117,116,116,111,110,115,32,38,61,32,126,49,59,10,
1038+ 9,9,9,116,104,105,115,46,109,97,108,116,32,61,32,102,
1039+ 97,108,115,101,59,10,9,9,125,10,9,9,116,104,105,115,
1040+ 46,98,117,116,116,111,110,115,32,38,61,32,126,98,59,10,
1041+ 9,9,114,101,116,117,114,110,32,98,59,10,9,125,59,10,
1042+ 10,9,116,104,105,115,46,109,112,114,101,115,115,32,61,32,
1043+ 102,117,110,99,116,105,111,110,40,101,41,32,123,10,9,9,
1044+ 118,97,114,32,98,32,61,32,49,60,60,40,101,46,119,104,
1045+ 105,99,104,45,49,41,59,10,9,9,105,102,40,98,32,61,
1046+ 61,32,49,32,38,38,32,101,46,97,108,116,75,101,121,41,
1047+ 123,10,9,9,9,98,32,61,32,50,59,10,9,9,9,116,
1048+ 104,105,115,46,109,97,108,116,32,61,32,116,114,117,101,59,
1049+ 10,9,9,125,10,9,9,116,104,105,115,46,98,117,116,116,
1050+ 111,110,115,32,124,61,32,98,59,10,9,9,114,101,116,117,
1051+ 114,110,32,98,59,10,9,125,59,10,10,9,47,47,32,115,
1052+ 101,116,32,108,97,115,116,120,44,32,108,97,115,116,121,32,
1053+ 116,111,32,101,118,32,99,111,111,114,100,115,32,114,101,108,
1054+ 97,116,105,118,101,32,116,111,32,99,97,110,118,97,115,10,
1055+ 9,116,104,105,115,46,101,118,120,121,32,61,32,102,117,110,
1056+ 99,116,105,111,110,40,101,41,32,123,10,9,9,118,97,114,
1057+ 32,120,32,61,32,48,59,10,9,9,118,97,114,32,121,32,
1058+ 61,32,48,59,10,9,9,105,102,40,101,46,102,97,107,101,
1059+ 120,32,33,61,32,117,110,100,101,102,105,110,101,100,41,32,
1060+ 123,10,9,9,9,120,32,61,32,101,46,102,97,107,101,120,
1061+ 59,10,9,9,9,121,32,61,32,101,46,102,97,107,101,121,
1062+ 59,10,9,9,125,32,101,108,115,101,32,123,10,9,9,9,
1063+ 118,97,114,32,112,111,102,102,32,61,32,36,40,116,104,105,
1064+ 115,46,99,41,46,111,102,102,115,101,116,40,41,59,10,9,
1065+ 9,9,120,32,61,32,101,46,112,97,103,101,88,32,45,32,
1066+ 112,111,102,102,46,108,101,102,116,59,10,9,9,9,121,32,
1067+ 61,32,101,46,112,97,103,101,89,32,45,32,112,111,102,102,
1068+ 46,116,111,112,59,10,9,9,125,10,9,9,116,104,105,115,
1069+ 46,108,97,115,116,120,32,61,32,120,59,10,9,9,116,104,
1070+ 105,115,46,108,97,115,116,121,32,61,32,121,59,10,9,125,
1071+ 59,10,10,9,116,104,105,115,46,109,97,121,114,101,115,105,
1072+ 122,101,32,61,32,102,117,110,99,116,105,111,110,40,117,115,
1073+ 101,114,41,32,123,10,9,9,118,97,114,32,99,32,61,32,
1074+ 36,40,116,104,105,115,46,99,41,59,10,9,9,118,97,114,
1075+ 32,112,32,61,32,99,46,112,97,114,101,110,116,40,41,59,
1076+ 10,9,9,118,97,114,32,100,120,32,61,32,112,46,119,105,
1077+ 100,116,104,40,41,59,10,9,9,118,97,114,32,100,121,32,
1078+ 61,32,112,46,104,101,105,103,104,116,40,41,32,45,32,53,
1079+ 59,9,47,47,32,45,53,58,32,108,101,97,118,101,32,97,
1080+ 32,98,105,116,32,111,102,32,114,111,111,109,10,9,9,99,
1081+ 111,110,115,111,108,101,46,108,111,103,40,39,116,101,120,116,
1082+ 32,114,101,115,105,122,101,100,39,44,32,100,120,44,32,100,
1083+ 121,44,32,117,115,101,114,63,34,117,115,101,114,34,58,34,
1084+ 119,105,110,34,41,59,10,9,9,118,97,114,32,99,116,120,
1085+ 32,61,32,116,104,105,115,46,99,46,103,101,116,67,111,110,
1086+ 116,101,120,116,40,34,50,100,34,44,32,123,97,108,112,104,
1087+ 97,58,32,102,97,108,115,101,125,41,59,10,9,9,47,47,
1088+ 32,84,79,68,79,58,32,117,115,101,32,104,101,108,112,101,
1089+ 114,32,119,104,101,110,32,119,101,32,114,101,119,114,105,116,
1090+ 101,32,105,110,107,32,106,115,46,10,9,9,118,97,114,32,
1091+ 116,97,103,32,61,32,36,40,34,35,34,43,116,104,105,115,
1092+ 46,105,100,43,34,116,34,41,10,9,9,105,102,40,116,97,
1093+ 103,41,32,123,10,9,9,9,100,121,32,45,61,32,116,97,
1094+ 103,46,104,101,105,103,104,116,40,41,59,10,9,9,125,10,
1095+ 9,9,47,47,32,85,115,105,110,103,32,97,32,119,105,100,
1096+ 116,104,32,115,99,97,108,101,100,32,97,110,100,32,109,97,
1097+ 107,105,110,103,32,116,104,101,32,115,116,121,108,101,32,117,
1098+ 115,101,32,116,104,101,32,119,105,100,116,104,10,9,9,47,
1099+ 47,32,109,97,107,101,115,32,116,104,101,32,116,101,120,116,
1100+ 32,98,101,116,116,101,114,46,10,9,9,99,46,119,105,100,
1101+ 116,104,40,100,120,41,59,10,9,9,99,46,104,101,105,103,
1102+ 104,116,40,100,121,41,59,10,9,9,116,104,105,115,46,99,
1103+ 46,119,105,100,116,104,32,61,32,116,104,105,115,46,116,115,
1104+ 99,97,108,101,42,100,120,59,10,9,9,116,104,105,115,46,
1105+ 99,46,104,101,105,103,104,116,32,61,32,116,104,105,115,46,
1106+ 116,115,99,97,108,101,42,100,121,59,10,9,9,116,104,105,
1107+ 115,46,110,108,105,110,101,115,32,61,32,77,97,116,104,46,
1108+ 102,108,111,111,114,40,116,104,105,115,46,99,46,104,101,105,
1109+ 103,104,116,47,116,104,105,115,46,102,111,110,116,104,116,41,
1110+ 59,10,9,9,116,104,105,115,46,115,97,118,101,100,32,61,
1111+ 32,110,117,108,108,59,10,9,9,116,104,105,115,46,114,101,
1112+ 102,111,114,109,97,116,40,116,104,105,115,46,108,110,115,41,
1113+ 59,10,9,9,116,104,105,115,46,114,101,100,114,97,119,116,
1114+ 101,120,116,40,41,59,10,9,9,10,9,125,59,10,10,9,
1115+ 47,47,32,116,104,105,115,32,105,115,32,106,117,115,116,32,
1116+ 97,32,98,117,110,99,104,32,111,102,32,104,101,117,114,105,
1117+ 115,116,105,99,115,32,116,111,32,109,97,107,101,32,105,116,
1118+ 32,102,101,101,108,32,111,107,46,10,9,116,104,105,115,46,
1119+ 97,117,116,111,114,101,115,105,122,101,32,61,32,102,117,110,
1120+ 99,116,105,111,110,40,97,100,100,115,105,122,101,44,32,109,
1121+ 111,114,101,108,101,115,115,41,32,123,10,9,9,118,97,114,
1122+ 32,112,32,61,32,36,40,116,104,105,115,46,99,41,59,10,
1123+ 9,9,118,97,114,32,111,108,100,104,116,32,61,32,112,46,
1124+ 104,101,105,103,104,116,40,41,59,10,9,9,118,97,114,32,
1125+ 104,116,32,61,32,111,108,100,104,116,59,10,9,9,118,97,
1126+ 114,32,102,111,110,116,104,116,32,61,32,116,104,105,115,46,
1127+ 102,111,110,116,104,116,47,116,104,105,115,46,116,115,99,97,
1128+ 108,101,59,10,9,9,105,102,40,97,100,100,115,105,122,101,
1129+ 41,32,123,10,9,9,9,116,104,105,115,46,117,115,101,114,
1130+ 114,101,115,105,122,101,100,32,61,32,116,114,117,101,59,10,
1131+ 9,9,9,105,102,40,109,111,114,101,108,101,115,115,32,62,
1132+ 32,49,41,123,10,9,9,9,9,118,97,114,32,119,116,111,
1133+ 112,32,61,32,36,40,119,105,110,100,111,119,41,46,115,99,
1134+ 114,111,108,108,84,111,112,40,41,59,10,9,9,9,9,118,
1135+ 97,114,32,101,116,111,112,32,61,32,112,46,111,102,102,115,
1136+ 101,116,40,41,46,116,111,112,59,10,9,9,9,9,118,97,
1137+ 114,32,101,111,102,102,32,61,32,101,116,111,112,45,119,116,
1138+ 111,112,59,10,9,9,9,9,99,111,110,115,111,108,101,46,
1139+ 108,111,103,40,34,114,101,115,105,122,101,32,34,44,32,119,
1140+ 116,111,112,44,32,101,116,111,112,44,32,101,111,102,102,41,
1141+ 59,10,9,9,9,9,104,116,32,61,32,119,105,110,100,111,
1142+ 119,46,105,110,110,101,114,72,101,105,103,104,116,32,45,32,
1143+ 49,48,32,45,32,101,111,102,102,59,32,47,47,32,45,49,
1144+ 48,58,32,108,101,97,118,101,32,115,111,109,101,32,114,111,
1145+ 111,109,10,9,9,9,125,32,101,108,115,101,32,105,102,40,
1146+ 109,111,114,101,108,101,115,115,32,62,61,32,48,41,32,123,
1147+ 10,9,9,9,9,104,116,32,43,61,32,102,111,110,116,104,
1148+ 116,42,54,59,10,9,9,9,125,32,101,108,115,101,32,123,
1149+ 10,9,9,9,9,104,116,32,45,61,32,102,111,110,116,104,
1150+ 116,42,54,59,10,9,9,9,9,105,102,40,104,116,32,60,
1151+ 32,53,42,102,111,110,116,104,116,41,32,123,10,9,9,9,
1152+ 9,9,104,116,32,61,32,53,42,102,111,110,116,104,116,59,
1153+ 10,9,9,9,9,125,10,9,9,9,125,10,9,9,125,101,
1154+ 108,115,101,123,10,9,9,9,118,97,114,32,110,108,110,32,
1155+ 61,32,116,104,105,115,46,102,114,108,105,110,101,115,59,10,
1156+ 9,9,9,105,102,40,110,108,110,32,60,32,51,41,32,123,
1157+ 10,9,9,9,9,110,108,110,32,61,32,51,59,10,9,9,
1158+ 9,125,10,9,9,9,104,116,32,61,32,40,110,108,110,43,
1159+ 50,41,32,42,32,102,111,110,116,104,116,59,10,9,9,9,
1160+ 105,102,32,40,104,116,32,62,61,32,52,48,48,41,32,123,
1161+ 9,47,47,32,115,111,109,101,32,105,110,105,116,105,97,108,
1162+ 32,97,114,98,105,116,114,97,114,121,32,115,112,97,99,101,
1163+ 46,10,9,9,9,9,104,116,32,61,32,52,48,48,59,10,
1164+ 9,9,9,125,10,9,9,125,10,9,9,99,111,110,115,111,
1165+ 108,101,46,108,111,103,40,34,97,117,116,111,32,114,115,122,
1166+ 34,44,32,110,108,110,44,32,104,116,44,32,111,108,100,104,
1167+ 116,41,59,10,9,9,105,102,32,40,111,108,100,104,116,32,
1168+ 60,32,104,116,32,45,32,102,111,110,116,104,116,32,124,124,
1169+ 32,111,108,100,104,116,32,62,32,104,116,32,43,32,102,111,
1170+ 110,116,104,116,41,32,123,10,9,9,9,99,111,110,115,111,
1171+ 108,101,46,108,111,103,40,34,97,117,116,111,32,114,101,115,
1172+ 105,122,105,110,103,34,41,59,10,9,9,9,118,97,114,32,
1173+ 100,101,108,116,97,32,61,32,104,116,32,45,32,111,108,100,
1174+ 104,116,59,10,9,9,9,112,32,61,32,112,46,112,97,114,
1175+ 101,110,116,40,41,59,10,9,9,9,118,97,114,32,110,104,
1176+ 116,32,61,32,112,46,104,101,105,103,104,116,40,41,32,43,
1177+ 32,100,101,108,116,97,59,10,9,9,9,112,46,104,101,105,
1178+ 103,104,116,40,110,104,116,41,59,10,9,9,9,116,104,105,
1179+ 115,46,109,97,121,114,101,115,105,122,101,40,41,59,10,9,
1180+ 9,125,10,9,125,59,10,10,9,116,104,105,115,46,115,101,
1181+ 108,101,99,116,115,116,97,114,116,32,61,32,102,117,110,99,
1182+ 116,105,111,110,40,41,32,123,10,9,9,105,102,40,33,116,
1183+ 104,105,115,46,115,101,108,101,99,116,105,110,103,41,32,123,
1184+ 10,9,9,9,99,111,110,115,111,108,101,46,108,111,103,40,
1185+ 34,115,101,108,101,99,116,105,110,103,46,46,46,34,41,59,
1186+ 10,9,9,125,10,9,9,116,104,105,115,46,115,101,108,101,
1187+ 99,116,105,110,103,32,61,32,116,114,117,101,59,10,9,9,
1188+ 115,101,108,101,99,116,105,110,103,32,61,32,116,114,117,101,
1189+ 59,10,9,9,116,104,105,115,46,111,108,100,112,48,32,61,
1190+ 32,116,104,105,115,46,112,48,59,10,9,9,116,104,105,115,
1191+ 46,111,108,100,112,49,32,61,32,116,104,105,115,46,112,49,
1192+ 59,10,9,125,59,10,10,9,116,104,105,115,46,115,101,108,
1193+ 101,99,116,101,110,100,32,61,32,102,117,110,99,116,105,111,
1194+ 110,40,41,32,123,10,9,9,105,102,40,116,104,105,115,46,
1195+ 109,117,115,116,117,110,108,111,99,107,41,32,123,10,9,9,
1196+ 9,116,104,105,115,46,117,110,108,111,99,107,101,100,40,41,
1197+ 59,10,9,9,125,10,9,9,105,102,40,33,116,104,105,115,
1198+ 46,115,101,108,101,99,116,105,110,103,41,32,123,10,9,9,
1199+ 9,114,101,116,117,114,110,59,10,9,9,125,10,9,9,99,
1200+ 111,110,115,111,108,101,46,108,111,103,40,34,115,101,108,101,
1201+ 99,116,32,101,110,100,34,41,59,10,9,9,105,102,40,116,
1202+ 104,105,115,46,111,108,100,112,48,32,33,61,32,116,104,105,
1203+ 115,46,112,48,32,124,124,32,116,104,105,115,46,111,108,100,
1204+ 112,49,32,33,61,32,116,104,105,115,46,112,49,41,32,123,
1205+ 10,9,9,9,116,104,105,115,46,112,111,115,116,40,91,34,
1206+ 116,105,99,107,34,44,32,34,34,43,116,104,105,115,46,112,
1207+ 48,44,32,34,34,43,116,104,105,115,46,112,49,93,41,59,
1208+ 10,9,9,9,116,104,105,115,46,111,108,100,112,48,32,61,
1209+ 32,116,104,105,115,46,112,48,59,10,9,9,9,116,104,105,
1210+ 115,46,111,108,100,112,49,32,61,32,116,104,105,115,46,112,
1211+ 49,59,10,9,9,125,10,9,9,116,104,105,115,46,115,101,
1212+ 108,101,99,116,105,110,103,32,61,32,102,97,108,115,101,59,
1213+ 10,9,9,115,101,108,101,99,116,105,110,103,32,61,32,102,
1214+ 97,108,115,101,59,10,9,125,59,10,10,9,116,104,105,115,
1215+ 46,97,112,112,108,121,32,61,32,102,117,110,99,116,105,111,
1216+ 110,40,101,118,44,32,102,114,111,109,115,101,114,118,101,114,
1217+ 41,32,123,10,9,9,105,102,40,33,101,118,32,124,124,32,
1218+ 33,101,118,46,65,114,103,115,32,124,124,32,33,101,118,46,
1219+ 65,114,103,115,91,48,93,41,123,10,9,9,9,99,111,110,
1220+ 115,111,108,101,46,108,111,103,40,34,97,112,112,108,121,58,
1221+ 32,110,105,108,32,101,118,34,41,59,10,9,9,9,114,101,
1222+ 116,117,114,110,59,10,9,9,125,10,9,9,118,97,114,32,
1223+ 97,114,103,32,61,32,101,118,46,65,114,103,115,10,9,9,
1224+ 105,102,40,116,100,101,98,117,103,41,32,123,10,9,9,9,
1225+ 99,111,110,115,111,108,101,46,108,111,103,40,116,104,105,115,
1226+ 46,100,105,118,105,100,44,32,34,97,112,112,108,121,34,44,
1227+ 32,101,118,46,65,114,103,115,44,32,34,118,34,44,32,101,
1228+ 118,46,86,101,114,115,44,32,116,104,105,115,46,118,101,114,
1229+ 115,41,59,10,9,9,125,10,9,9,115,119,105,116,99,104,
1230+ 40,97,114,103,91,48,93,41,123,10,9,9,99,97,115,101,
1231+ 32,34,104,101,108,100,34,58,10,9,9,9,116,104,105,115,
1232+ 46,108,111,99,107,101,100,40,41,59,10,9,9,9,98,114,
1233+ 101,97,107,59,10,9,9,99,97,115,101,32,34,114,108,115,
1234+ 101,34,58,10,9,9,9,105,102,40,116,104,105,115,46,115,
1235+ 101,108,101,99,116,105,110,103,41,32,123,10,9,9,9,9,
1236+ 116,104,105,115,46,109,117,115,116,117,110,108,111,99,107,32,
1237+ 61,32,116,114,117,101,59,10,9,9,9,9,98,114,101,97,
1238+ 107,59,10,9,9,9,125,10,9,9,9,116,104,105,115,46,
1239+ 117,110,108,111,99,107,101,100,40,41,59,10,9,9,9,98,
1240+ 114,101,97,107,59,10,9,9,99,97,115,101,32,34,110,111,
1241+ 101,100,105,116,115,34,58,10,9,9,9,116,104,105,115,46,
1242+ 110,111,101,100,105,116,115,32,61,32,116,114,117,101,59,10,
1243+ 9,9,9,98,114,101,97,107,59,10,9,9,99,97,115,101,
1244+ 32,34,101,100,105,116,115,34,58,10,9,9,9,116,104,105,
1245+ 115,46,110,111,101,100,105,116,115,32,61,32,102,97,108,115,
1246+ 101,59,10,9,9,9,98,114,101,97,107,59,10,9,9,99,
1247+ 97,115,101,32,34,99,108,101,97,110,34,58,10,9,9,9,
1248+ 105,102,40,100,111,99,117,109,101,110,116,46,115,101,116,99,
1249+ 108,101,97,110,41,32,123,10,9,9,9,9,100,111,99,117,
1250+ 109,101,110,116,46,115,101,116,99,108,101,97,110,40,116,104,
1251+ 105,115,41,59,10,9,9,9,125,10,9,9,9,98,114,101,
1252+ 97,107,59,10,9,9,99,97,115,101,32,34,100,105,114,116,
1253+ 121,34,58,10,9,9,9,105,102,40,100,111,99,117,109,101,
1254+ 110,116,46,115,101,116,100,105,114,116,121,41,32,123,10,9,
1255+ 9,9,9,100,111,99,117,109,101,110,116,46,115,101,116,100,
1256+ 105,114,116,121,40,116,104,105,115,41,59,10,9,9,9,125,
1257+ 10,9,9,9,98,114,101,97,107,59,10,9,9,99,97,115,
1258+ 101,32,34,115,104,111,119,34,58,10,9,9,9,105,102,40,
1259+ 100,111,99,117,109,101,110,116,46,115,104,111,119,99,111,110,
1260+ 116,114,111,108,41,32,123,10,9,9,9,9,100,111,99,117,
1261+ 109,101,110,116,46,115,104,111,119,99,111,110,116,114,111,108,
1262+ 40,116,104,105,115,41,59,10,9,9,9,125,10,9,9,9,
1263+ 98,114,101,97,107,59,10,9,9,99,97,115,101,32,34,116,
1264+ 97,103,34,58,10,9,9,9,105,102,40,97,114,103,46,108,
1265+ 101,110,103,116,104,32,60,32,50,41,123,10,9,9,9,9,
1266+ 99,111,110,115,111,108,101,46,108,111,103,40,116,104,105,115,
1267+ 46,105,100,44,32,34,97,112,112,108,121,58,32,115,104,111,
1268+ 114,116,32,116,97,103,34,41,59,10,9,9,9,9,98,114,
1269+ 101,97,107,59,10,9,9,9,125,10,9,9,9,105,102,40,
1270+ 100,111,99,117,109,101,110,116,46,115,101,116,116,97,103,41,
1271+ 32,123,10,9,9,9,9,100,111,99,117,109,101,110,116,46,
1272+ 115,101,116,116,97,103,40,116,104,105,115,44,32,97,114,103,
1273+ 91,49,93,41,59,10,9,9,9,125,10,9,9,9,98,114,
1274+ 101,97,107,59,10,9,9,99,97,115,101,32,34,102,111,110,
1275+ 116,34,58,10,9,9,9,105,102,40,97,114,103,46,108,101,
1276+ 110,103,116,104,32,60,32,50,41,123,10,9,9,9,9,99,
1277+ 111,110,115,111,108,101,46,108,111,103,40,116,104,105,115,46,
1278+ 105,100,44,32,34,97,112,112,108,121,58,32,115,104,111,114,
1279+ 116,32,102,111,110,116,34,41,59,10,9,9,9,9,98,114,
1280+ 101,97,107,59,10,9,9,9,125,10,9,9,9,99,111,110,
1281+ 115,111,108,101,46,108,111,103,40,116,104,105,115,46,105,100,
1282+ 44,32,34,102,111,110,116,34,44,32,97,114,103,91,49,93,
1283+ 41,59,10,9,9,9,116,104,105,115,46,102,111,110,116,115,
1284+ 116,121,108,101,32,61,32,97,114,103,91,49,93,59,10,9,
1285+ 9,9,116,104,105,115,46,102,105,120,102,111,110,116,40,41,
1286+ 59,10,9,9,9,116,104,105,115,46,114,101,100,114,97,119,
1287+ 116,101,120,116,40,41,59,10,9,9,9,98,114,101,97,107,
1288+ 59,10,9,9,99,97,115,101,32,34,109,97,114,107,105,110,
1289+ 115,105,110,103,34,58,10,9,9,9,105,102,40,97,114,103,
1290+ 46,108,101,110,103,116,104,32,60,32,51,41,123,10,9,9,
1291+ 9,9,99,111,110,115,111,108,101,46,108,111,103,40,116,104,
1292+ 105,115,46,105,100,44,32,34,97,112,112,108,121,58,32,115,
1293+ 104,111,114,116,32,109,97,114,107,105,110,115,105,110,103,34,
1294+ 41,59,10,9,9,9,9,98,114,101,97,107,59,10,9,9,
1295+ 9,125,10,9,9,9,105,102,32,40,33,116,104,105,115,46,
1296+ 109,97,114,107,105,110,115,100,97,116,97,41,32,123,10,9,
8381297 9,9,9,99,111,110,115,111,108,101,46,108,111,103,40,34,
839− 34,43,105,43,34,58,32,34,43,111,43,34,91,34,43,110,
840− 43,34,93,61,92,116,34,32,43,32,116,104,105,115,46,108,
841− 105,110,101,115,91,105,93,46,116,120,116,32,43,32,34,92,
842− 92,110,34,41,59,10,9,9,101,108,115,101,10,9,9,9,
843− 99,111,110,115,111,108,101,46,108,111,103,40,34,34,43,105,
844− 43,34,58,32,34,43,111,43,34,91,34,43,110,43,34,93,
845− 61,92,116,34,32,43,32,116,104,105,115,46,108,105,110,101,
846− 115,91,105,93,46,116,120,116,41,59,10,9,125,10,9,102,
847− 111,114,40,118,97,114,32,105,32,61,32,48,59,32,105,32,
848− 60,32,116,104,105,115,46,109,97,114,107,115,46,108,101,110,
849− 103,116,104,59,32,105,43,43,41,123,10,9,9,99,111,110,
850− 115,111,108,101,46,108,111,103,40,34,109,97,114,107,58,32,
851− 34,44,32,116,104,105,115,46,109,97,114,107,115,91,105,93,
852− 46,110,97,109,101,44,32,116,104,105,115,46,109,97,114,107,
853− 115,91,105,93,46,112,111,115,41,59,10,9,125,10,9,99,
854− 111,110,115,111,108,101,46,108,111,103,40,34,115,101,108,58,
855− 32,34,32,43,32,116,104,105,115,46,112,48,32,43,32,34,
856− 32,34,32,43,32,116,104,105,115,46,112,49,41,59,10,9,
857− 99,111,110,115,111,108,101,46,108,111,103,40,34,118,101,114,
858− 115,58,32,34,44,32,116,104,105,115,46,118,101,114,115,41,
859− 59,10,125,10,10,102,117,110,99,116,105,111,110,32,110,111,
860− 116,97,98,115,40,116,44,32,112,111,115,48,41,32,123,10,
861− 9,105,102,40,116,46,105,110,100,101,120,79,102,40,39,92,
862− 116,39,41,32,60,32,48,41,10,9,9,114,101,116,117,114,
863− 110,32,116,59,10,9,118,97,114,32,115,32,61,32,34,34,
864− 59,10,9,118,97,114,32,112,111,115,32,61,32,48,59,10,
865− 9,105,102,40,112,111,115,48,41,10,9,9,112,111,115,32,
866− 61,32,112,111,115,48,59,10,9,102,111,114,40,118,97,114,
867− 32,105,32,61,32,48,59,32,105,32,60,32,116,46,108,101,
868− 110,103,116,104,59,32,105,43,43,41,123,10,9,9,118,97,
869− 114,32,114,32,61,32,116,46,99,104,97,114,65,116,40,105,
870− 41,59,10,9,9,105,102,40,114,32,61,61,32,39,92,116,
871− 39,41,32,123,10,9,9,9,100,111,32,123,10,9,9,9,
872− 9,115,32,43,61,32,34,32,34,59,10,9,9,9,9,112,
873− 111,115,43,43,59,10,9,9,9,125,119,104,105,108,101,40,
874− 112,111,115,37,116,104,105,115,46,116,97,98,115,116,111,112,
875− 41,59,10,9,9,125,101,108,115,101,123,10,9,9,9,112,
876− 111,115,43,43,59,10,9,9,9,115,32,43,61,32,114,59,
877− 10,9,9,125,10,9,125,10,9,114,101,116,117,114,110,32,
878− 115,59,9,10,125,10,10,102,117,110,99,116,105,111,110,32,
879− 116,108,105,110,101,119,114,97,112,40,116,41,32,123,10,9,
880− 118,97,114,32,99,32,61,32,116,104,105,115,59,10,9,118,
881− 97,114,32,99,116,120,32,61,32,99,46,103,101,116,67,111,
882− 110,116,101,120,116,40,34,50,100,34,44,32,123,97,108,112,
883− 104,97,58,32,102,97,108,115,101,125,41,59,10,9,118,97,
884− 114,32,109,97,114,103,105,110,115,122,32,61,32,51,59,10,
885− 9,118,97,114,32,97,118,97,105,108,32,61,32,99,46,119,
886− 105,100,116,104,32,45,32,50,42,109,97,114,103,105,110,115,
887− 122,59,10,9,118,97,114,32,112,111,115,32,61,32,48,59,
888− 10,9,118,97,114,32,115,32,61,32,34,34,59,10,9,102,
889− 111,114,40,118,97,114,32,105,32,61,32,48,59,32,105,32,
890− 60,32,116,46,108,101,110,103,116,104,59,32,105,43,43,41,
891− 123,10,9,9,118,97,114,32,114,32,61,32,116,46,99,104,
892− 97,114,65,116,40,105,41,59,10,9,9,105,102,40,114,32,
893− 61,61,32,39,92,116,39,41,32,123,10,9,9,9,100,111,
894− 32,123,10,9,9,9,9,115,32,43,61,32,34,32,34,59,
895− 10,9,9,9,9,112,111,115,43,43,59,10,9,9,9,125,
896− 119,104,105,108,101,40,112,111,115,37,116,104,105,115,46,116,
897− 97,98,115,116,111,112,41,59,10,9,9,125,101,108,115,101,
898− 123,10,9,9,9,112,111,115,43,43,59,10,9,9,9,115,
899− 32,43,61,32,114,59,10,9,9,125,10,9,9,105,102,40,
900− 99,116,120,46,109,101,97,115,117,114,101,84,101,120,116,40,
901− 115,41,46,119,105,100,116,104,32,62,32,97,118,97,105,108,
902− 41,123,10,9,9,9,114,101,116,117,114,110,32,105,59,10,
903− 9,9,125,10,9,125,10,9,114,101,116,117,114,110,32,116,
904− 46,108,101,110,103,116,104,59,10,125,10,10,102,117,110,99,
905− 116,105,111,110,32,116,112,111,115,100,120,40,108,110,44,32,
906− 110,41,32,123,10,9,118,97,114,32,116,32,61,32,108,110,
907− 46,116,120,116,59,10,9,118,97,114,32,99,32,61,32,116,
908− 104,105,115,59,10,9,118,97,114,32,99,116,120,32,61,32,
909− 99,46,103,101,116,67,111,110,116,101,120,116,40,34,50,100,
910− 34,44,32,123,97,108,112,104,97,58,32,102,97,108,115,101,
911− 125,41,59,10,9,118,97,114,32,112,111,115,32,61,32,48,
912− 59,10,9,118,97,114,32,100,120,32,61,32,48,59,10,9,
913− 102,111,114,40,118,97,114,32,105,32,61,32,48,59,32,105,
914− 32,60,32,116,46,108,101,110,103,116,104,32,38,38,32,105,
915− 32,60,32,110,59,32,105,43,43,41,123,10,9,9,118,97,
916− 114,32,114,32,61,32,116,46,99,104,97,114,65,116,40,105,
917− 41,59,10,9,9,105,102,40,114,32,61,61,32,39,92,116,
918− 39,41,32,123,10,9,9,9,100,111,32,123,10,9,9,9,
919− 9,100,120,32,43,61,32,99,116,120,46,109,101,97,115,117,
920− 114,101,84,101,120,116,40,34,32,34,41,46,119,105,100,116,
921− 104,59,10,9,9,9,9,112,111,115,43,43,59,10,9,9,
922− 9,125,119,104,105,108,101,40,112,111,115,37,116,104,105,115,
923− 46,116,97,98,115,116,111,112,41,59,10,9,9,125,101,108,
924− 115,101,123,10,9,9,9,112,111,115,43,43,59,10,9,9,
925− 9,100,120,32,43,61,32,99,116,120,46,109,101,97,115,117,
926− 114,101,84,101,120,116,40,114,41,46,119,105,100,116,104,59,
927− 10,9,9,125,10,9,125,10,9,114,101,116,117,114,110,32,
928− 100,120,59,10,125,10,10,102,117,110,99,116,105,111,110,32,
929− 116,112,116,114,50,116,112,111,115,40,99,120,44,32,99,121,
930− 41,32,123,10,9,118,97,114,32,109,97,114,103,105,110,115,
931− 122,32,61,32,51,59,10,9,118,97,114,32,120,32,61,32,
932− 99,120,59,10,9,118,97,114,32,121,32,61,32,99,121,59,
933− 10,9,118,97,114,32,111,118,102,32,61,32,48,59,10,9,
934− 120,32,42,61,32,116,104,105,115,46,116,115,99,97,108,101,
935− 59,10,9,121,32,42,61,32,116,104,105,115,46,116,115,99,
936− 97,108,101,59,10,9,118,97,114,32,110,108,110,32,61,32,
937− 77,97,116,104,46,102,108,111,111,114,40,121,47,116,104,105,
938− 115,46,102,111,110,116,104,116,41,59,10,9,105,102,40,110,
939− 108,110,32,60,32,48,32,124,124,32,116,104,105,115,46,108,
940− 105,110,101,115,46,108,101,110,103,116,104,32,61,61,32,48,
941− 41,10,9,9,114,101,116,117,114,110,32,91,48,44,32,48,
942− 44,32,111,118,102,93,59,10,9,105,102,40,110,108,110,43,
943− 116,104,105,115,46,108,110,48,32,62,61,32,116,104,105,115,
944− 46,108,105,110,101,115,46,108,101,110,103,116,104,41,123,10,
945− 9,9,118,97,114,32,108,108,32,61,32,116,104,105,115,46,
946− 108,105,110,101,115,91,116,104,105,115,46,108,105,110,101,115,
947− 46,108,101,110,103,116,104,45,49,93,59,10,9,9,114,101,
948− 116,117,114,110,32,91,108,108,46,116,120,116,46,108,101,110,
949− 103,116,104,44,32,116,104,105,115,46,102,114,108,105,110,101,
950− 115,45,49,44,32,49,93,59,10,9,125,10,9,105,102,40,
951− 110,108,110,32,62,32,116,104,105,115,46,102,114,108,105,110,
952− 101,115,41,123,9,9,47,47,32,111,118,101,114,102,108,111,
953− 119,10,9,9,114,101,116,117,114,110,32,91,108,108,46,116,
954− 120,116,46,108,101,110,103,116,104,44,32,116,104,105,115,46,
955− 102,114,108,105,110,101,115,45,49,44,32,49,93,59,10,9,
956− 125,10,9,118,97,114,32,112,111,115,32,61,32,48,59,10,
957− 9,118,97,114,32,108,108,32,61,32,116,104,105,115,46,108,
958− 105,110,101,115,91,110,108,110,43,116,104,105,115,46,108,110,
959− 48,93,59,10,9,102,111,114,40,59,32,112,111,115,32,60,
960− 61,32,108,108,46,116,120,116,46,108,101,110,103,116,104,59,
961− 32,112,111,115,43,43,41,123,10,9,9,118,97,114,32,99,
962− 111,102,102,32,61,32,116,104,105,115,46,112,111,115,100,120,
963− 40,108,108,44,32,112,111,115,41,59,10,9,9,105,102,40,
964− 99,111,102,102,43,109,97,114,103,105,110,115,122,32,62,32,
965− 120,41,123,10,9,9,9,105,102,40,112,111,115,32,62,32,
966− 48,41,10,9,9,9,9,112,111,115,45,45,59,10,9,9,
967− 9,98,114,101,97,107,59,10,9,9,125,10,9,125,10,9,
968− 105,102,40,112,111,115,32,62,32,108,108,46,116,120,116,46,
969− 108,101,110,103,116,104,41,123,10,9,9,112,111,115,32,61,
970− 32,108,108,46,116,120,116,46,108,101,110,103,116,104,59,10,
971− 9,9,114,101,116,117,114,110,32,91,112,111,115,44,32,110,
972− 108,110,44,32,49,93,59,10,9,125,10,9,114,101,116,117,
973− 114,110,32,91,112,111,115,44,32,110,108,110,44,32,48,93,
974− 59,10,125,10,10,102,117,110,99,116,105,111,110,32,116,116,
975− 112,111,115,50,112,111,115,40,120,44,32,110,108,110,41,32,
976− 123,10,9,105,102,40,110,108,110,32,60,32,48,41,10,9,
977− 9,114,101,116,117,114,110,32,48,59,10,9,105,102,40,110,
978− 108,110,43,116,104,105,115,46,108,110,48,32,62,61,32,116,
979− 104,105,115,46,108,105,110,101,115,46,108,101,110,103,116,104,
980− 41,10,9,9,114,101,116,117,114,110,32,116,104,105,115,46,
981− 110,114,117,110,101,115,59,10,9,118,97,114,32,112,111,115,
982− 32,61,32,116,104,105,115,46,108,105,110,101,115,91,116,104,
983− 105,115,46,108,110,48,93,46,111,102,102,59,10,9,102,111,
1298+ 109,97,114,107,105,110,115,32,101,118,115,46,46,46,34,41,
1299+ 59,10,9,9,9,9,116,104,105,115,46,109,97,114,107,105,
1300+ 110,115,100,97,116,97,32,61,32,91,93,59,10,9,9,9,
1301+ 125,10,9,9,9,116,104,105,115,46,109,97,114,107,105,110,
1302+ 115,100,97,116,97,46,112,117,115,104,40,97,114,103,91,50,
1303+ 93,41,59,10,9,9,9,98,114,101,97,107,59,10,9,9,
1304+ 99,97,115,101,32,34,109,97,114,107,105,110,115,100,111,110,
1305+ 101,34,58,10,9,9,9,99,111,110,115,111,108,101,46,108,
1306+ 111,103,40,34,109,97,114,107,105,110,115,32,114,117,110,46,
1307+ 46,46,34,41,59,10,9,9,9,105,102,40,97,114,103,46,
1308+ 108,101,110,103,116,104,32,60,32,50,41,123,10,9,9,9,
1309+ 9,99,111,110,115,111,108,101,46,108,111,103,40,116,104,105,
1310+ 115,46,105,100,44,32,34,97,112,112,108,121,58,32,115,104,
1311+ 111,114,116,32,109,97,114,107,105,110,115,100,111,110,101,34,
1312+ 41,59,10,9,9,9,9,98,114,101,97,107,59,10,9,9,
1313+ 9,125,10,9,9,9,118,97,114,32,109,32,61,32,116,104,
1314+ 105,115,46,103,101,116,109,97,114,107,40,97,114,103,91,49,
1315+ 93,41,59,10,9,9,9,105,102,40,33,109,41,32,123,10,
1316+ 9,9,9,9,99,111,110,115,111,108,101,46,108,111,103,40,
1317+ 116,104,105,115,46,105,100,44,32,34,97,112,112,108,121,58,
1318+ 32,110,111,32,109,97,114,107,34,44,32,97,114,103,91,49,
1319+ 93,41,59,10,9,9,9,9,98,114,101,97,107,59,10,9,
1320+ 9,9,125,10,9,9,9,118,97,114,32,111,112,48,32,61,
1321+ 32,116,104,105,115,46,112,48,59,10,9,9,9,118,97,114,
1322+ 32,111,112,49,32,61,32,116,104,105,115,46,112,49,59,10,
1323+ 9,9,9,105,102,40,111,112,48,32,33,61,32,111,112,49,
1324+ 41,32,123,10,9,9,9,9,116,104,105,115,46,115,101,116,
1325+ 115,101,108,40,111,112,48,44,32,111,112,48,44,32,102,97,
1326+ 108,115,101,41,59,10,9,9,9,125,10,9,9,9,102,111,
9841327 114,40,118,97,114,32,105,32,61,32,48,59,32,105,32,60,
985− 32,110,108,110,32,38,38,32,105,43,116,104,105,115,46,108,
986− 110,48,32,60,32,116,104,105,115,46,108,105,110,101,115,46,
987− 108,101,110,103,116,104,59,32,105,43,43,41,10,9,9,112,
988− 111,115,32,43,61,32,108,110,108,101,110,40,116,104,105,115,
989− 46,108,105,110,101,115,91,116,104,105,115,46,108,110,48,43,
990− 105,93,41,59,10,9,105,102,40,110,108,110,32,43,32,116,
991− 104,105,115,46,108,110,48,32,60,32,116,104,105,115,46,108,
992− 105,110,101,115,46,108,101,110,103,116,104,41,10,9,9,112,
993− 111,115,32,43,61,32,120,59,10,9,114,101,116,117,114,110,
994− 32,112,111,115,59,10,125,10,10,102,117,110,99,116,105,111,
995− 110,32,116,117,110,116,105,99,107,40,41,32,123,10,9,118,
996− 97,114,32,99,32,61,32,116,104,105,115,59,10,9,118,97,
997− 114,32,99,116,120,32,61,32,99,46,103,101,116,67,111,110,
998− 116,101,120,116,40,34,50,100,34,44,32,123,97,108,112,104,
999− 97,58,32,102,97,108,115,101,125,41,59,10,9,105,102,40,
1000− 33,116,104,105,115,46,115,97,118,101,100,41,10,9,9,114,
1001− 101,116,117,114,110,59,10,9,99,116,120,46,112,117,116,73,
1002− 109,97,103,101,68,97,116,97,40,116,104,105,115,46,115,97,
1003− 118,101,100,44,32,116,104,105,115,46,116,105,99,107,120,44,
1004− 32,116,104,105,115,46,116,105,99,107,121,41,59,10,9,116,
1005− 104,105,115,46,115,97,118,101,100,32,61,32,110,117,108,108,
1006− 59,10,125,10,10,102,117,110,99,116,105,111,110,32,116,118,
1007− 105,101,119,115,101,108,40,41,32,123,10,9,105,102,40,116,
1008− 104,105,115,46,108,105,110,101,115,91,116,104,105,115,46,108,
1009− 110,48,93,41,32,123,10,9,9,118,97,114,32,111,102,102,
1010− 32,61,32,116,104,105,115,46,108,105,110,101,115,91,116,104,
1011− 105,115,46,108,110,48,93,46,111,102,102,59,10,9,9,118,
1012− 97,114,32,101,111,102,102,32,61,32,111,102,102,43,116,104,
1013− 105,115,46,102,114,115,105,122,101,59,10,9,9,105,102,40,
1014− 116,104,105,115,46,112,48,32,62,61,32,111,102,102,32,38,
1015− 38,32,116,104,105,115,46,112,48,32,60,61,32,101,111,102,
1016− 102,41,32,123,10,9,9,9,114,101,116,117,114,110,59,10,
1017− 9,9,125,10,9,125,10,9,102,111,114,40,118,97,114,32,
1018− 105,32,61,32,48,59,32,105,32,60,32,116,104,105,115,46,
1019− 108,105,110,101,115,46,108,101,110,103,116,104,59,32,105,43,
1020− 43,41,123,10,9,9,118,97,114,32,120,108,110,32,61,32,
1021− 116,104,105,115,46,108,105,110,101,115,91,105,93,59,10,9,
1022− 9,118,97,114,32,120,108,110,108,101,110,32,61,32,120,108,
1023− 110,46,116,120,116,46,108,101,110,103,116,104,59,10,9,9,
1024− 105,102,40,116,104,105,115,46,112,48,32,62,61,32,120,108,
1025− 110,46,111,102,102,32,38,38,32,116,104,105,115,46,112,48,
1026− 32,60,61,32,120,108,110,46,111,102,102,43,120,108,110,108,
1027− 101,110,41,123,10,9,9,9,118,97,114,32,110,32,61,32,
1028− 105,32,45,32,77,97,116,104,46,102,108,111,111,114,40,116,
1029− 104,105,115,46,102,114,108,105,110,101,115,47,51,41,59,10,
1030− 9,9,9,105,102,40,110,32,60,32,48,41,32,123,10,9,
1031− 9,9,9,110,32,61,32,48,59,10,9,9,9,125,10,9,
1032− 9,9,105,102,40,110,32,62,61,32,116,104,105,115,46,108,
1033− 105,110,101,115,46,108,101,110,103,116,104,41,32,123,10,9,
1034− 9,9,9,110,32,61,32,116,104,105,115,46,108,105,110,101,
1035− 115,46,108,101,110,103,116,104,45,49,59,10,9,9,9,125,
1036− 10,9,9,9,120,108,110,32,61,32,116,104,105,115,46,108,
1037− 105,110,101,115,91,110,93,59,10,9,9,9,105,102,40,120,
1038− 108,110,41,32,123,10,9,9,9,9,116,104,105,115,46,108,
1039− 110,48,32,61,32,110,59,10,9,9,9,9,116,104,105,115,
1040− 46,102,114,111,102,102,32,61,32,120,108,110,46,111,102,102,
1041− 59,10,9,9,9,9,116,104,105,115,46,114,101,100,114,97,
1042− 119,116,101,120,116,40,41,59,10,9,9,9,125,32,101,108,
1043− 115,101,32,123,10,9,9,9,9,99,111,110,115,111,108,101,
1044− 46,108,111,103,40,34,116,118,105,101,119,115,101,108,58,32,
1045− 110,111,32,108,110,32,102,111,114,34,44,32,110,44,32,105,
1046− 41,59,10,9,9,9,125,10,9,9,9,114,101,116,117,114,
1047− 110,59,10,9,9,125,10,9,125,10,125,10,10,102,117,110,
1048− 99,116,105,111,110,32,116,116,115,101,116,115,101,108,40,112,
1049− 48,44,32,112,49,44,32,114,101,102,114,101,115,104,97,108,
1050− 108,41,32,123,10,9,118,97,114,32,99,32,61,32,116,104,
1051− 105,115,59,10,9,118,97,114,32,99,116,120,32,61,32,99,
1052− 46,103,101,116,67,111,110,116,101,120,116,40,34,50,100,34,
1053− 44,32,123,97,108,112,104,97,58,32,102,97,108,115,101,125,
1054− 41,59,10,9,105,102,40,112,48,32,62,32,116,104,105,115,
1055− 46,110,114,117,110,101,115,41,10,9,9,112,48,32,61,32,
1056− 116,104,105,115,46,110,114,117,110,101,115,59,10,9,105,102,
1057− 40,112,49,32,60,32,112,48,41,10,9,9,112,49,32,61,
1058− 32,112,48,59,10,9,105,102,40,112,49,32,62,32,116,104,
1059− 105,115,46,110,114,117,110,101,115,41,10,9,9,112,49,32,
1060− 61,32,116,104,105,115,46,110,114,117,110,101,115,59,10,9,
1061− 105,102,40,116,104,105,115,46,112,48,32,33,61,32,116,104,
1062− 105,115,46,112,49,41,10,9,9,114,101,102,114,101,115,104,
1063− 97,108,108,32,61,32,116,114,117,101,59,10,9,105,102,40,
1064− 33,116,104,105,115,46,108,105,110,101,115,91,116,104,105,115,
1065− 46,108,110,48,93,41,32,123,10,9,9,114,101,116,117,114,
1066− 110,59,10,9,125,10,9,118,97,114,32,102,114,111,102,102,
1067− 32,61,32,116,104,105,115,46,108,105,110,101,115,91,116,104,
1068− 105,115,46,108,110,48,93,46,111,102,102,59,10,9,105,102,
1069− 40,114,101,102,114,101,115,104,97,108,108,32,38,38,32,40,
1070− 116,104,105,115,46,112,49,32,60,102,114,111,102,102,32,124,
1071− 124,32,116,104,105,115,46,112,48,32,62,102,114,111,102,102,
1072− 43,116,104,105,115,46,102,114,115,105,122,101,41,41,10,9,
1073− 9,114,101,102,114,101,115,104,97,108,108,32,61,32,102,97,
1074− 108,115,101,59,10,9,118,97,114,32,109,112,48,32,61,32,
1075− 112,48,59,10,9,118,97,114,32,109,112,49,32,61,32,112,
1076− 49,59,10,9,105,102,40,114,101,102,114,101,115,104,97,108,
1077− 108,41,123,10,9,9,105,102,40,116,104,105,115,46,112,48,
1078− 32,60,32,109,112,48,41,10,9,9,9,109,112,48,32,61,
1079− 32,116,104,105,115,46,112,48,59,10,9,9,105,102,40,116,
1080− 104,105,115,46,112,49,32,62,32,109,112,49,41,10,9,9,
1081− 9,109,112,49,32,61,32,116,104,105,115,46,112,49,59,10,
1082− 9,125,10,9,116,104,105,115,46,112,48,32,61,32,112,48,
1083− 59,10,9,116,104,105,115,46,112,49,32,61,32,112,49,59,
1084− 10,9,116,104,105,115,46,117,110,116,105,99,107,40,41,59,
1085− 10,9,105,102,40,109,112,49,32,60,102,114,111,102,102,32,
1086− 124,124,32,109,112,48,32,62,102,114,111,102,102,43,116,104,
1087− 105,115,46,102,114,115,105,122,101,41,10,9,9,114,101,116,
1088− 117,114,110,59,10,9,118,97,114,32,105,110,115,101,108,32,
1089− 61,32,102,97,108,115,101,59,10,9,102,111,114,40,118,97,
1090− 114,32,105,32,61,32,48,59,32,105,32,60,32,116,104,105,
1091− 115,46,102,114,108,105,110,101,115,59,32,105,43,43,41,123,
1092− 10,9,9,105,102,40,116,104,105,115,46,108,110,48,43,105,
1093− 32,62,61,32,116,104,105,115,46,108,105,110,101,115,46,108,
1094− 101,110,103,116,104,41,10,9,9,9,98,114,101,97,107,59,
1095− 10,9,9,118,97,114,32,120,108,110,32,61,32,116,104,105,
1096− 115,46,108,105,110,101,115,91,116,104,105,115,46,108,110,48,
1097− 43,105,93,59,10,9,9,105,102,40,109,112,49,32,62,61,
1098− 32,120,108,110,46,111,102,102,32,38,38,32,109,112,48,32,
1099− 60,61,32,120,108,110,46,111,102,102,43,120,108,110,46,116,
1100− 120,116,46,108,101,110,103,116,104,41,10,9,9,9,105,110,
1101− 115,101,108,61,116,114,117,101,59,10,9,9,105,102,40,105,
1102− 110,115,101,108,41,10,9,9,9,116,104,105,115,46,100,114,
1103− 97,119,108,105,110,101,40,120,108,110,44,32,105,41,59,10,
1104− 9,9,105,102,40,109,112,49,32,60,32,120,108,110,46,111,
1105− 102,102,41,10,9,9,9,98,114,101,97,107,59,10,9,125,
1106− 10,125,10,10,102,117,110,99,116,105,111,110,32,116,117,112,
1107− 100,97,116,101,115,99,114,108,40,41,32,123,10,9,118,97,
1108− 114,32,99,32,61,32,116,104,105,115,59,10,9,118,97,114,
1109− 32,99,116,120,32,61,32,99,46,103,101,116,67,111,110,116,
1110− 101,120,116,40,34,50,100,34,44,32,123,97,108,112,104,97,
1111− 58,32,102,97,108,115,101,125,41,59,10,9,118,97,114,32,
1112− 121,48,32,61,32,116,104,105,115,46,108,110,48,32,47,32,
1113− 116,104,105,115,46,108,105,110,101,115,46,108,101,110,103,116,
1114− 104,32,42,32,99,46,104,101,105,103,104,116,59,10,9,118,
1115− 97,114,32,100,121,32,61,32,116,104,105,115,46,102,114,108,
1116− 105,110,101,115,32,47,32,116,104,105,115,46,108,105,110,101,
1117− 115,46,108,101,110,103,116,104,32,42,32,99,46,104,101,105,
1118− 103,104,116,59,10,10,9,47,47,32,114,105,103,104,116,10,
1119− 9,99,116,120,46,99,108,101,97,114,82,101,99,116,40,99,
1120− 46,119,105,100,116,104,45,54,44,32,48,44,32,54,44,32,
1121− 121,48,41,59,10,9,118,97,114,32,111,108,100,32,61,32,
1122− 99,116,120,46,102,105,108,108,83,116,121,108,101,59,10,9,
1123− 99,116,120,46,102,105,108,108,83,116,121,108,101,32,61,32,
1124− 34,35,55,51,55,51,70,70,34,59,10,9,99,116,120,46,
1125− 102,105,108,108,82,101,99,116,40,99,46,119,105,100,116,104,
1126− 45,54,44,32,121,48,44,32,54,44,32,100,121,41,59,10,
1127− 9,99,116,120,46,102,105,108,108,83,116,121,108,101,32,61,
1128− 32,111,108,100,59,10,9,99,116,120,46,99,108,101,97,114,
1129− 82,101,99,116,40,99,46,119,105,100,116,104,45,54,44,32,
1130− 121,48,43,100,121,44,32,54,44,32,99,46,104,101,105,103,
1131− 104,116,45,40,121,48,43,100,121,41,41,59,10,10,9,47,
1132− 47,32,108,101,102,116,10,9,105,102,40,48,41,32,123,9,
1133− 10,9,9,99,116,120,46,99,108,101,97,114,82,101,99,116,
1134− 40,48,44,32,48,44,32,49,44,32,121,48,41,59,10,9,
1135− 9,99,116,120,46,102,105,108,108,82,101,99,116,40,48,44,
1136− 32,121,48,44,32,49,44,32,100,121,41,59,10,9,9,99,
1137− 116,120,46,99,108,101,97,114,82,101,99,116,40,48,44,32,
1138− 121,48,43,100,121,44,32,49,44,32,99,46,104,101,105,103,
1139− 104,116,45,40,121,48,43,100,121,41,41,59,10,9,125,10,
1140− 125,10,10,102,117,110,99,116,105,111,110,32,116,100,114,97,
1141− 119,108,105,110,101,40,120,108,110,44,32,105,41,32,123,10,
1142− 9,118,97,114,32,99,32,61,32,116,104,105,115,59,10,9,
1143− 118,97,114,32,99,116,120,32,61,32,99,46,103,101,116,67,
1144− 111,110,116,101,120,116,40,34,50,100,34,44,32,123,97,108,
1145− 112,104,97,58,32,102,97,108,115,101,125,41,59,10,9,118,
1146− 97,114,32,108,110,104,116,32,61,32,116,104,105,115,46,102,
1147− 111,110,116,104,116,59,10,9,118,97,114,32,109,97,114,103,
1148− 105,110,115,122,32,61,32,54,59,10,9,118,97,114,32,97,
1149− 118,97,105,108,32,61,32,99,46,119,105,100,116,104,32,45,
1150− 32,50,42,109,97,114,103,105,110,115,122,32,45,49,59,10,
1151− 9,118,97,114,32,112,111,115,32,61,32,105,42,108,110,104,
1152− 116,59,10,9,105,102,40,112,111,115,32,62,61,32,99,46,
1153− 104,101,105,103,104,116,41,10,9,9,114,101,116,117,114,110,
1154− 32,102,97,108,115,101,59,10,9,105,102,40,33,120,108,110,
1155− 41,123,10,9,9,99,116,120,46,99,108,101,97,114,82,101,
1156− 99,116,40,49,44,32,112,111,115,44,32,99,46,119,105,100,
1157− 116,104,45,49,44,32,108,110,104,116,41,59,10,9,9,114,
1158− 101,116,117,114,110,32,116,114,117,101,59,10,9,125,10,9,
1159− 118,97,114,32,108,110,32,61,32,116,104,105,115,46,110,111,
1160− 116,97,98,115,40,120,108,110,46,116,120,116,41,59,10,9,
1161− 47,42,32,100,114,97,119,32,115,101,108,101,99,116,101,100,
1162− 32,108,105,110,101,32,42,47,10,9,105,102,40,116,104,105,
1163− 115,46,112,48,32,33,61,32,116,104,105,115,46,112,49,41,
1164− 123,10,9,9,105,102,40,116,104,105,115,46,112,48,32,62,
1165− 32,120,108,110,46,111,102,102,43,120,108,110,46,116,120,116,
1166− 46,108,101,110,103,116,104,32,124,124,32,116,104,105,115,46,
1167− 112,49,32,60,32,120,108,110,46,111,102,102,41,123,10,9,
1168− 9,9,47,42,32,100,114,97,119,32,110,111,114,109,97,108,
1169− 32,108,105,110,101,32,42,47,10,9,9,9,99,116,120,46,
1170− 99,108,101,97,114,82,101,99,116,40,49,44,32,112,111,115,
1171− 44,32,99,46,119,105,100,116,104,45,55,44,32,108,110,104,
1172− 116,41,59,10,9,9,9,99,116,120,46,102,105,108,108,84,
1173− 101,120,116,40,108,110,44,32,109,97,114,103,105,110,115,122,
1174− 44,32,112,111,115,41,59,10,9,9,9,114,101,116,117,114,
1175− 110,32,116,114,117,101,59,10,9,9,125,10,9,9,47,42,
1176− 32,117,112,32,116,111,32,112,48,32,117,110,115,101,108,101,
1177− 99,116,101,100,32,42,47,10,9,9,118,97,114,32,100,120,
1178− 32,61,32,109,97,114,103,105,110,115,122,59,10,9,9,118,
1179− 97,114,32,115,48,32,61,32,48,59,10,9,9,118,97,114,
1180− 32,115,48,112,111,115,32,61,32,48,59,10,9,9,105,102,
1181− 40,116,104,105,115,46,112,48,32,62,32,120,108,110,46,111,
1182− 102,102,41,123,10,9,9,9,115,48,32,61,32,116,104,105,
1183− 115,46,112,48,32,45,32,120,108,110,46,111,102,102,59,10,
1184− 9,9,9,118,97,114,32,115,48,108,110,32,61,32,116,104,
1185− 105,115,46,110,111,116,97,98,115,40,120,108,110,46,116,120,
1186− 116,46,115,108,105,99,101,40,48,44,32,115,48,41,41,59,
1187− 10,9,9,9,115,48,112,111,115,32,61,32,115,48,108,110,
1188− 46,108,101,110,103,116,104,59,10,9,9,9,100,120,32,61,
1189− 32,109,97,114,103,105,110,115,122,32,43,32,99,116,120,46,
1190− 109,101,97,115,117,114,101,84,101,120,116,40,115,48,108,110,
1191− 41,46,119,105,100,116,104,59,10,9,9,9,99,116,120,46,
1192− 99,108,101,97,114,82,101,99,116,40,49,44,32,112,111,115,
1193− 44,32,100,120,44,32,108,110,104,116,41,59,10,9,9,9,
1194− 99,116,120,46,102,105,108,108,84,101,120,116,40,115,48,108,
1195− 110,44,32,109,97,114,103,105,110,115,122,44,32,112,111,115,
1196− 41,59,10,9,9,125,10,9,9,47,42,32,102,114,111,109,
1197− 32,112,48,32,116,111,32,112,49,32,115,101,108,101,99,116,
1198− 101,100,32,42,47,10,9,9,118,97,114,32,115,49,32,61,
1199− 32,120,108,110,46,116,120,116,46,108,101,110,103,116,104,32,
1200− 45,32,115,48,59,10,9,9,105,102,40,116,104,105,115,46,
1201− 112,49,32,60,32,120,108,110,46,111,102,102,43,120,108,110,
1202− 46,116,120,116,46,108,101,110,103,116,104,41,10,9,9,9,
1203− 115,49,32,61,32,116,104,105,115,46,112,49,32,45,32,115,
1204− 48,32,45,32,120,108,110,46,111,102,102,59,10,9,9,118,
1205− 97,114,32,115,49,108,110,32,61,32,116,104,105,115,46,110,
1206− 111,116,97,98,115,40,120,108,110,46,116,120,116,46,115,108,
1207− 105,99,101,40,115,48,44,32,115,48,43,115,49,41,44,32,
1208− 115,48,112,111,115,41,59,10,9,9,118,97,114,32,115,49,
1209− 112,111,115,32,61,32,115,48,112,111,115,32,43,32,115,49,
1210− 108,110,46,108,101,110,103,116,104,59,10,9,9,118,97,114,
1211− 32,115,120,32,61,32,99,116,120,46,109,101,97,115,117,114,
1212− 101,84,101,120,116,40,115,49,108,110,41,46,119,105,100,116,
1213− 104,59,10,9,9,118,97,114,32,111,108,100,32,61,32,99,
1214− 116,120,46,102,105,108,108,83,116,121,108,101,59,10,9,9,
1215− 105,102,40,116,104,105,115,46,115,101,99,111,110,100,97,114,
1216− 121,32,61,61,32,50,41,10,9,9,9,99,116,120,46,102,
1217− 105,108,108,83,116,121,108,101,32,61,32,34,35,70,70,55,
1218− 53,55,53,34,59,10,9,9,101,108,115,101,32,105,102,40,
1219− 116,104,105,115,46,115,101,99,111,110,100,97,114,121,41,10,
1220− 9,9,9,99,116,120,46,102,105,108,108,83,116,121,108,101,
1221− 32,61,32,34,35,55,51,55,51,70,70,34,59,10,9,9,
1222− 101,108,115,101,10,9,9,9,99,116,120,46,102,105,108,108,
1223− 83,116,121,108,101,32,61,32,34,35,68,49,65,48,65,48,
1224− 34,59,10,9,9,105,102,40,116,104,105,115,46,112,49,32,
1225− 62,32,120,108,110,46,111,102,102,43,120,108,110,46,116,120,
1226− 116,46,108,101,110,103,116,104,41,10,9,9,9,99,116,120,
1227− 46,102,105,108,108,82,101,99,116,40,100,120,44,32,112,111,
1228− 115,44,32,99,46,119,105,100,116,104,45,100,120,45,55,44,
1229− 32,108,110,104,116,41,59,10,9,9,101,108,115,101,10,9,
1230− 9,9,99,116,120,46,102,105,108,108,82,101,99,116,40,100,
1231− 120,44,32,112,111,115,44,32,115,120,44,32,108,110,104,116,
1232− 41,59,10,9,9,99,116,120,46,102,105,108,108,83,116,121,
1233− 108,101,32,61,32,111,108,100,59,10,9,9,99,116,120,46,
1234− 102,105,108,108,84,101,120,116,40,115,49,108,110,44,32,100,
1235− 120,44,32,112,111,115,41,59,10,9,9,105,102,40,116,104,
1236− 105,115,46,112,49,32,62,32,120,108,110,46,111,102,102,43,
1237− 120,108,110,46,116,120,116,46,108,101,110,103,116,104,41,10,
1238− 9,9,9,114,101,116,117,114,110,32,116,114,117,101,59,10,
1239− 9,9,47,42,32,102,114,111,109,32,112,49,32,117,110,115,
1240− 101,108,101,99,116,101,100,32,42,47,10,9,9,99,116,120,
1241− 46,99,108,101,97,114,82,101,99,116,40,100,120,43,115,120,
1242− 44,32,112,111,115,44,32,99,46,119,105,100,116,104,45,40,
1243− 100,120,43,115,120,41,45,55,44,32,108,110,104,116,41,59,
1244− 10,9,9,105,102,40,115,49,32,62,61,32,120,108,110,46,
1245− 116,120,116,46,108,101,110,103,116,104,41,10,9,9,9,114,
1246− 101,116,117,114,110,32,116,114,117,101,59,10,9,9,118,97,
1247− 114,32,115,50,108,110,32,61,32,116,104,105,115,46,110,111,
1248− 116,97,98,115,40,120,108,110,46,116,120,116,46,115,108,105,
1249− 99,101,40,115,48,43,115,49,44,32,120,108,110,46,116,120,
1250− 116,46,108,101,110,103,116,104,41,44,32,115,49,112,111,115,
1251− 41,59,10,9,9,99,116,120,46,102,105,108,108,84,101,120,
1252− 116,40,115,50,108,110,44,32,100,120,43,115,120,44,32,112,
1253− 111,115,41,59,10,9,9,114,101,116,117,114,110,32,116,114,
1254− 117,101,59,10,9,125,10,10,9,47,42,32,100,114,97,119,
1255− 32,117,110,115,101,108,101,99,116,101,100,32,108,105,110,101,
1256− 32,42,47,10,9,99,116,120,46,99,108,101,97,114,82,101,
1257− 99,116,40,49,44,32,112,111,115,44,32,99,46,119,105,100,
1258− 116,104,45,55,44,32,108,110,104,116,41,59,10,9,99,116,
1259− 120,46,102,105,108,108,84,101,120,116,40,108,110,44,32,109,
1260− 97,114,103,105,110,115,122,44,32,112,111,115,41,59,10,10,
1261− 9,47,42,32,100,114,97,119,32,116,105,99,107,32,105,102,
1262− 32,110,101,101,100,101,100,32,42,47,10,9,105,102,40,116,
1263− 104,105,115,46,112,48,32,60,32,120,108,110,46,111,102,102,
1264− 32,124,124,32,116,104,105,115,46,112,48,32,62,32,120,108,
1265− 110,46,111,102,102,32,43,32,120,108,110,46,116,120,116,46,
1266− 108,101,110,103,116,104,41,10,9,9,114,101,116,117,114,110,
1267− 32,116,114,117,101,59,10,9,47,42,10,9,32,42,32,105,
1268− 102,32,112,48,32,105,115,32,97,116,32,116,104,101,32,101,
1269− 110,100,32,111,102,32,97,32,119,114,97,112,112,101,100,32,
1270− 108,105,110,101,32,100,111,110,39,116,32,100,114,97,119,32,
1271− 105,116,32,104,101,114,101,44,10,9,32,42,32,98,101,99,
1272− 97,117,115,101,32,116,104,101,32,110,101,120,116,32,108,105,
1273− 110,101,32,119,105,108,108,32,100,114,97,119,32,105,116,32,
1274− 97,116,32,116,104,101,32,115,116,97,114,116,32,111,102,32,
1275− 108,105,110,101,46,10,9,32,42,47,10,9,105,102,40,116,
1276− 104,105,115,46,112,48,32,61,61,32,120,108,110,46,111,102,
1277− 102,32,43,32,120,108,110,46,116,120,116,46,108,101,110,103,
1278− 116,104,32,38,38,32,33,120,108,110,46,101,111,108,32,38,
1279− 38,10,9,32,32,32,120,108,110,32,33,61,32,116,104,105,
1280− 115,46,108,105,110,101,115,91,116,104,105,115,46,108,105,110,
1281− 101,115,46,108,101,110,103,116,104,45,49,93,41,10,9,9,
1282− 114,101,116,117,114,110,32,116,114,117,101,59,10,9,118,97,
1283− 114,32,100,120,32,61,32,116,104,105,115,46,112,111,115,100,
1284− 120,40,120,108,110,44,32,116,104,105,115,46,112,48,32,45,
1285− 32,120,108,110,46,111,102,102,41,59,10,9,100,120,32,43,
1286− 61,32,109,97,114,103,105,110,115,122,32,45,32,51,42,116,
1287− 104,105,115,46,116,115,99,97,108,101,47,50,59,10,9,116,
1288− 104,105,115,46,115,97,118,101,100,32,61,32,99,116,120,46,
1289− 103,101,116,73,109,97,103,101,68,97,116,97,40,100,120,44,
1290− 32,112,111,115,44,32,51,42,116,104,105,115,46,116,115,99,
1291− 97,108,101,44,32,116,104,105,115,46,102,111,110,116,104,116,
1292− 41,59,10,9,116,104,105,115,46,116,105,99,107,120,32,61,
1293− 32,100,120,59,10,9,116,104,105,115,46,116,105,99,107,121,
1294− 32,61,32,112,111,115,59,10,9,99,116,120,46,112,117,116,
1295− 73,109,97,103,101,68,97,116,97,40,116,104,105,115,46,116,
1296− 105,99,107,44,32,100,120,44,32,112,111,115,41,59,10,9,
1297− 114,101,116,117,114,110,32,116,114,117,101,59,10,125,10,10,
1298− 102,117,110,99,116,105,111,110,32,116,114,101,102,111,114,109,
1299− 97,116,40,108,48,41,32,123,10,9,116,104,105,115,46,102,
1300− 105,120,102,111,110,116,40,41,59,10,10,9,118,97,114,32,
1301− 108,110,115,32,61,32,116,104,105,115,46,108,105,110,101,115,
1302− 59,10,9,102,111,114,40,118,97,114,32,105,32,61,32,108,
1303− 48,59,32,105,32,60,32,108,110,115,46,108,101,110,103,116,
1304− 104,59,41,123,10,9,9,119,104,105,108,101,40,33,108,110,
1305− 115,91,105,93,46,101,111,108,32,38,38,32,105,32,60,32,
1306− 108,110,115,46,108,101,110,103,116,104,45,49,41,123,10,9,
1307− 9,9,108,110,115,91,105,93,46,116,120,116,32,43,61,32,
1308− 108,110,115,91,105,43,49,93,46,116,120,116,59,10,9,9,
1309− 9,108,110,115,91,105,93,46,101,111,108,32,61,32,108,110,
1310− 115,91,105,43,49,93,46,101,111,108,59,10,9,9,9,108,
1311− 110,115,46,115,112,108,105,99,101,40,105,43,49,44,32,49,
1312− 41,59,10,9,9,125,10,9,9,47,42,32,114,101,109,111,
1313− 118,101,32,101,109,112,116,121,32,108,105,110,101,115,32,40,
1314− 110,111,32,92,110,41,32,117,110,108,101,115,115,32,116,104,
1315− 101,121,32,97,114,101,32,97,116,32,116,104,101,32,101,110,
1316− 100,10,9,9,32,42,32,98,101,99,97,117,115,101,32,116,
1317− 104,101,32,108,97,115,116,32,101,109,112,116,121,32,108,105,
1318− 110,101,32,105,115,32,117,115,101,100,32,116,111,32,100,114,
1319− 97,119,32,116,104,101,32,116,105,99,107,10,9,9,32,42,
1320− 32,112,97,115,116,32,116,104,101,32,108,97,115,116,32,92,
1321− 110,10,9,9,32,42,47,10,9,9,105,102,40,108,110,115,
1322− 91,105,93,46,116,120,116,46,108,101,110,103,116,104,32,61,
1323− 61,32,48,32,38,38,32,33,108,110,115,91,105,93,46,101,
1324− 111,108,32,38,38,10,9,9,32,32,32,108,110,115,46,108,
1325− 101,110,103,116,104,62,49,32,38,38,32,105,32,33,61,32,
1326− 108,110,115,46,108,101,110,103,116,104,45,49,41,10,9,9,
1327− 9,108,110,115,46,115,112,108,105,99,101,40,105,44,32,49,
1328− 41,59,10,9,9,101,108,115,101,10,9,9,9,105,43,43,
1329− 59,10,9,125,10,9,118,97,114,32,111,102,102,32,61,32,
1330− 48,59,10,9,105,102,40,108,48,32,62,32,48,32,38,38,
1331− 32,108,48,32,60,32,108,110,115,46,108,101,110,103,116,104,
1332− 41,10,9,9,111,102,102,32,61,32,108,110,115,91,108,48,
1333− 45,49,93,46,111,102,102,32,43,32,108,110,108,101,110,40,
1334− 108,110,115,91,108,48,45,49,93,41,59,10,9,102,111,114,
1335− 40,118,97,114,32,105,32,61,32,108,48,59,32,105,32,60,
1336− 32,108,110,115,46,108,101,110,103,116,104,59,32,105,43,43,
1337− 41,123,10,9,9,108,110,115,91,105,93,46,111,102,102,32,
1338− 61,32,111,102,102,59,10,9,9,118,97,114,32,110,119,32,
1339− 61,32,116,104,105,115,46,108,105,110,101,119,114,97,112,40,
1340− 108,110,115,91,105,93,46,116,120,116,41,59,10,9,9,105,
1341− 102,40,110,119,32,60,32,108,110,115,91,105,93,46,116,120,
1342− 116,46,108,101,110,103,116,104,41,123,10,9,9,9,118,97,
1343− 114,32,111,108,100,32,61,32,108,110,115,91,105,93,46,116,
1344− 120,116,59,10,9,9,9,118,97,114,32,110,108,32,61,32,
1345− 123,116,120,116,58,32,111,108,100,46,115,108,105,99,101,40,
1346− 48,44,32,110,119,41,44,32,111,102,102,58,32,108,110,115,
1347− 91,105,93,46,111,102,102,125,59,10,9,9,9,110,108,46,
1348− 101,111,108,32,61,32,102,97,108,115,101,59,10,9,9,9,
1349− 108,110,115,46,115,112,108,105,99,101,40,105,44,32,48,44,
1350− 32,110,108,41,59,10,9,9,9,108,110,115,91,105,43,49,
1351− 93,46,116,120,116,32,61,32,111,108,100,46,115,108,105,99,
1352− 101,40,110,119,44,32,111,108,100,46,108,101,110,103,116,104,
1353− 41,59,10,9,9,9,108,110,115,91,105,43,49,93,46,111,
1354− 102,102,32,43,61,32,110,119,59,10,9,9,125,10,9,9,
1355− 111,102,102,32,43,61,32,108,110,108,101,110,40,108,110,115,
1356− 91,105,93,41,59,10,9,125,10,9,105,102,40,108,48,32,
1357− 60,32,116,104,105,115,46,108,110,48,41,123,10,9,9,105,
1358− 102,40,116,104,105,115,46,108,110,48,32,62,61,32,108,110,
1359− 115,46,108,101,110,103,116,104,41,10,9,9,9,116,104,105,
1360− 115,46,108,110,48,32,61,32,108,110,115,46,108,101,110,103,
1361− 116,104,45,49,59,10,9,125,10,9,105,102,40,108,110,115,
1362− 46,108,101,110,103,116,104,32,61,61,32,48,41,32,123,10,
1363− 9,9,108,110,115,91,48,93,32,61,32,123,116,120,116,58,
1364− 34,34,44,32,111,102,102,58,32,108,110,108,101,110,40,108,
1365− 97,115,116,41,125,59,10,9,125,10,9,118,97,114,32,108,
1366− 97,115,116,32,61,32,108,110,115,91,108,110,115,46,108,101,
1367− 110,103,116,104,45,49,93,59,10,9,105,102,40,108,97,115,
1368− 116,46,101,111,108,41,123,10,9,9,108,110,115,91,108,110,
1369− 115,46,108,101,110,103,116,104,93,32,61,32,123,116,120,116,
1370− 58,34,34,44,32,111,102,102,58,32,108,97,115,116,46,111,
1371− 102,102,32,43,32,108,110,108,101,110,40,108,97,115,116,41,
1372− 125,59,10,9,125,10,125,10,10,102,117,110,99,116,105,111,
1373− 110,32,116,115,101,116,108,105,110,101,115,111,102,102,40,108,
1374− 48,41,32,123,10,9,118,97,114,32,108,110,115,32,61,32,
1375− 116,104,105,115,46,108,105,110,101,115,59,10,9,102,111,114,
1376− 40,118,97,114,32,108,110,115,32,61,32,116,104,105,115,46,
1377− 108,105,110,101,115,59,32,108,48,32,60,32,108,110,115,46,
1378− 108,101,110,103,116,104,59,32,108,48,43,43,41,123,10,9,
1379− 9,105,102,40,108,48,32,61,61,32,48,41,10,9,9,9,
1380− 108,110,115,91,108,48,93,46,111,102,102,32,61,32,48,59,
1381− 10,9,9,101,108,115,101,10,9,9,9,108,110,115,91,108,
1382− 48,93,46,111,102,102,32,61,32,108,110,115,91,108,48,45,
1383− 49,93,46,111,102,102,32,43,32,108,110,108,101,110,40,108,
1384− 110,115,91,108,48,45,49,93,41,59,10,9,125,10,125,10,
1385− 10,102,117,110,99,116,105,111,110,32,116,114,101,100,114,97,
1386− 119,116,101,120,116,40,41,32,123,10,9,118,97,114,32,99,
1387− 32,61,32,116,104,105,115,59,10,9,118,97,114,32,99,116,
1388− 120,32,61,32,99,46,103,101,116,67,111,110,116,101,120,116,
1389− 40,34,50,100,34,44,32,123,97,108,112,104,97,58,32,102,
1390− 97,108,115,101,125,41,59,10,9,99,46,102,105,120,102,111,
1391− 110,116,40,41,59,10,9,118,97,114,32,110,108,105,110,101,
1392− 115,32,61,32,99,46,104,101,105,103,104,116,32,47,32,40,
1393− 116,104,105,115,46,102,111,110,116,104,116,41,59,10,10,9,
1394− 105,102,40,33,116,104,105,115,46,116,105,99,107,41,123,10,
1395− 9,9,118,97,114,32,120,32,61,32,99,116,120,46,108,105,
1396− 110,101,87,105,100,116,104,59,10,9,9,99,116,120,46,108,
1397− 105,110,101,87,105,100,116,104,32,61,32,49,59,10,9,9,
1398− 118,97,114,32,100,32,61,32,51,42,116,104,105,115,46,116,
1399− 115,99,97,108,101,59,10,9,9,99,116,120,46,102,105,108,
1400− 108,82,101,99,116,40,48,44,32,48,44,32,100,44,32,100,
1401− 41,59,10,9,9,99,116,120,46,102,105,108,108,82,101,99,
1402− 116,40,48,44,32,116,104,105,115,46,102,111,110,116,104,116,
1403− 45,100,44,32,100,44,32,100,41,59,10,9,9,99,116,120,
1404− 46,109,111,118,101,84,111,40,100,47,50,44,32,48,41,59,
1405− 10,9,9,99,116,120,46,108,105,110,101,84,111,40,100,47,
1406− 50,44,32,116,104,105,115,46,102,111,110,116,104,116,41,59,
1407− 10,9,9,99,116,120,46,115,116,114,111,107,101,40,41,59,
1408− 10,9,9,99,116,120,46,108,105,110,101,87,105,100,116,104,
1409− 32,61,32,120,59,10,9,9,116,104,105,115,46,116,105,99,
1410− 107,32,61,32,99,116,120,46,103,101,116,73,109,97,103,101,
1411− 68,97,116,97,40,48,44,32,48,44,32,100,44,32,116,104,
1412− 105,115,46,102,111,110,116,104,116,41,59,10,9,125,10,9,
1413− 105,102,40,33,116,104,105,115,46,108,105,110,101,115,91,116,
1414− 104,105,115,46,108,110,48,93,41,32,123,10,9,9,99,111,
1415− 110,115,111,108,101,46,108,111,103,40,34,116,114,101,100,114,
1416− 97,119,116,101,120,116,58,32,110,111,32,108,110,48,34,41,
1417− 59,10,9,9,114,101,116,117,114,110,59,10,9,125,10,9,
1418− 118,97,114,32,111,102,102,32,61,32,116,104,105,115,46,108,
1419− 105,110,101,115,91,116,104,105,115,46,108,110,48,93,46,111,
1420− 102,102,59,10,9,118,97,114,32,102,114,111,102,102,32,61,
1421− 32,111,102,102,59,10,9,116,104,105,115,46,102,114,115,105,
1422− 122,101,32,61,32,48,59,10,9,116,104,105,115,46,102,114,
1423− 108,105,110,101,115,32,61,32,48,59,10,9,102,111,114,40,
1424− 118,97,114,32,105,32,61,32,48,59,32,105,32,60,61,32,
1425− 110,108,105,110,101,115,59,32,105,43,43,41,123,10,9,9,
1426− 105,102,40,116,104,105,115,46,108,110,48,43,105,32,60,32,
1427− 116,104,105,115,46,108,105,110,101,115,46,108,101,110,103,116,
1428− 104,41,123,10,9,9,9,118,97,114,32,120,108,110,32,61,
1429− 32,116,104,105,115,46,108,105,110,101,115,91,116,104,105,115,
1430− 46,108,110,48,43,105,93,59,10,9,9,9,105,102,40,33,
1431− 116,104,105,115,46,100,114,97,119,108,105,110,101,40,120,108,
1432− 110,44,32,105,41,41,10,9,9,9,9,98,114,101,97,107,
1433− 59,10,9,9,9,116,104,105,115,46,102,114,108,105,110,101,
1434− 115,43,43,59,10,9,9,9,111,102,102,32,43,61,32,108,
1435− 110,108,101,110,40,120,108,110,41,59,10,9,9,125,101,108,
1436− 115,101,10,9,9,9,105,102,40,33,116,104,105,115,46,100,
1437− 114,97,119,108,105,110,101,40,110,117,108,108,44,32,105,41,
1438− 41,10,9,9,9,9,98,114,101,97,107,59,10,9,125,10,
1439− 9,116,104,105,115,46,102,114,115,105,122,101,32,61,32,111,
1440− 102,102,32,45,32,102,114,111,102,102,59,10,9,116,104,105,
1441− 115,46,117,112,100,97,116,101,115,99,114,108,40,41,59,10,
1442− 125,10,10,102,117,110,99,116,105,111,110,32,116,115,99,114,
1443− 111,108,108,100,111,119,110,49,40,41,32,123,10,9,105,102,
1444− 40,116,104,105,115,46,108,110,48,32,62,61,32,116,104,105,
1445− 115,46,108,105,110,101,115,46,108,101,110,103,116,104,45,49,
1446− 41,10,9,9,114,101,116,117,114,110,32,102,97,108,115,101,
1447− 59,10,9,116,104,105,115,46,102,114,111,102,102,32,43,61,
1448− 32,108,110,108,101,110,40,116,104,105,115,46,108,105,110,101,
1449− 115,91,116,104,105,115,46,108,110,48,93,41,59,10,9,116,
1450− 104,105,115,46,108,110,48,43,43,59,10,9,114,101,116,117,
1451− 114,110,32,116,114,117,101,59,10,125,10,10,102,117,110,99,
1452− 116,105,111,110,32,116,115,99,114,111,108,108,117,112,49,40,
1453− 41,32,123,10,9,105,102,40,116,104,105,115,46,108,110,48,
1454− 32,61,61,32,48,41,10,9,9,114,101,116,117,114,110,32,
1455− 102,97,108,115,101,59,10,9,116,104,105,115,46,108,110,48,
1456− 45,45,59,10,9,114,101,116,117,114,110,32,116,114,117,101,
1457− 59,10,125,10,10,102,117,110,99,116,105,111,110,32,116,115,
1458− 99,114,111,108,108,100,111,119,110,40,110,41,32,123,10,9,
1459− 118,97,114,32,115,111,109,101,32,61,32,102,97,108,115,101,
1460− 59,10,9,102,111,114,40,59,32,110,32,62,32,48,59,32,
1461− 110,45,45,41,123,10,9,9,105,102,40,116,104,105,115,46,
1462− 115,99,114,111,108,108,100,111,119,110,49,40,41,41,10,9,
1463− 9,9,115,111,109,101,61,116,114,117,101,59,10,9,9,101,
1464− 108,115,101,10,9,9,9,98,114,101,97,107,59,10,9,125,
1465− 10,9,114,101,116,117,114,110,32,115,111,109,101,59,10,125,
1466− 10,10,102,117,110,99,116,105,111,110,32,116,115,99,114,111,
1467− 108,108,117,112,40,110,41,32,123,10,9,118,97,114,32,115,
1468− 111,109,101,32,61,32,102,97,108,115,101,59,10,9,102,111,
1469− 114,40,59,32,110,32,62,32,48,59,32,110,45,45,41,123,
1470− 10,9,9,105,102,40,116,104,105,115,46,115,99,114,111,108,
1471− 108,117,112,49,40,41,41,10,9,9,9,115,111,109,101,61,
1472− 116,114,117,101,59,10,9,9,101,108,115,101,10,9,9,9,
1473− 98,114,101,97,107,59,10,9,125,10,9,114,101,116,117,114,
1474− 110,32,115,111,109,101,59,10,125,10,10,47,42,10,32,42,
1475− 32,116,32,109,97,121,32,98,101,32,97,114,98,105,116,114,
1476− 97,114,121,32,116,101,120,116,32,40,115,105,110,103,108,101,
1477− 32,108,105,110,101,41,32,111,114,32,92,110,44,32,98,117,
1478− 116,32,110,111,116,32,98,111,116,104,32,97,116,32,111,110,
1479− 99,101,46,10,32,42,32,84,104,101,32,116,101,120,116,32,
1480− 105,115,32,97,108,119,97,121,115,32,105,110,115,101,114,116,
1481− 101,100,32,97,116,32,116,104,105,115,46,112,48,32,97,110,
1482− 100,32,112,48,44,32,112,49,32,97,114,101,32,117,112,100,
1483− 97,116,101,100,46,10,32,42,10,32,42,47,10,102,117,110,
1484− 99,116,105,111,110,32,116,116,105,110,115,40,116,44,32,100,
1485− 111,110,116,115,99,114,111,108,108,41,32,123,10,9,116,104,
1486− 105,115,46,117,110,116,105,99,107,40,41,59,10,9,118,97,
1487− 114,32,110,115,99,114,108,32,61,32,77,97,116,104,46,102,
1488− 108,111,111,114,40,116,104,105,115,46,110,108,105,110,101,115,
1489− 47,52,41,59,10,9,105,102,40,110,115,99,114,108,32,61,
1490− 61,32,48,41,10,9,9,110,115,99,114,108,32,61,32,49,
1491− 59,10,9,116,104,105,115,46,109,97,114,107,105,110,115,40,
1492− 116,46,108,101,110,103,116,104,41,59,10,9,102,111,114,40,
1493− 118,97,114,32,105,32,61,32,48,59,32,105,32,60,32,116,
1494− 104,105,115,46,108,105,110,101,115,46,108,101,110,103,116,104,
1495− 59,32,105,43,43,41,123,10,9,9,118,97,114,32,120,108,
1496− 110,32,61,32,116,104,105,115,46,108,105,110,101,115,91,105,
1497− 93,59,10,9,9,118,97,114,32,120,108,110,108,101,110,32,
1498− 61,32,120,108,110,46,116,120,116,46,108,101,110,103,116,104,
1499− 59,10,9,9,105,102,40,116,104,105,115,46,112,48,32,62,
1500− 61,32,120,108,110,46,111,102,102,32,38,38,32,116,104,105,
1501− 115,46,112,48,32,60,61,32,120,108,110,46,111,102,102,43,
1502− 120,108,110,108,101,110,41,123,10,9,9,9,118,97,114,32,
1503− 112,111,115,32,61,32,116,104,105,115,46,112,48,32,45,32,
1504− 120,108,110,46,111,102,102,59,10,9,9,9,105,102,40,116,
1505− 32,61,61,32,39,92,110,39,41,123,10,9,9,9,9,118,
1506− 97,114,32,110,108,110,32,61,32,123,10,9,9,9,9,9,
1507− 116,120,116,58,32,34,34,44,10,9,9,9,9,9,111,102,
1508− 102,58,32,120,108,110,46,111,102,102,43,112,111,115,43,49,
1509− 44,10,9,9,9,9,9,101,111,108,58,32,120,108,110,46,
1510− 101,111,108,10,9,9,9,9,125,59,10,9,9,9,9,105,
1511− 102,40,112,111,115,32,60,32,120,108,110,108,101,110,41,123,
1512− 10,9,9,9,9,9,110,108,110,46,116,120,116,32,61,32,
1513− 120,108,110,46,116,120,116,46,115,108,105,99,101,40,112,111,
1514− 115,44,32,120,108,110,108,101,110,41,59,10,9,9,9,9,
1515− 9,120,108,110,46,116,120,116,32,61,32,120,108,110,46,116,
1516− 120,116,46,115,108,105,99,101,40,48,44,32,112,111,115,41,
1517− 59,10,9,9,9,9,125,10,9,9,9,9,116,104,105,115,
1518− 46,108,105,110,101,115,46,115,112,108,105,99,101,40,105,43,
1519− 49,44,32,48,44,32,110,108,110,41,59,10,9,9,9,9,
1520− 120,108,110,46,101,111,108,32,61,32,116,114,117,101,59,10,
1521− 9,9,9,9,116,104,105,115,46,112,48,43,43,59,10,9,
1522− 9,9,9,116,104,105,115,46,112,49,32,61,32,116,104,105,
1523− 115,46,112,48,59,10,9,9,9,9,116,104,105,115,46,110,
1524− 114,117,110,101,115,43,43,59,10,9,9,9,9,116,104,105,
1525− 115,46,114,101,102,111,114,109,97,116,40,105,41,59,10,9,
1526− 9,9,9,105,102,40,33,100,111,110,116,115,99,114,111,108,
1527− 108,41,10,9,9,9,9,105,102,40,105,32,62,61,32,116,
1528− 104,105,115,46,108,110,48,43,116,104,105,115,46,110,108,105,
1529− 110,101,115,45,49,32,38,38,10,9,9,9,9,32,32,32,
1530− 105,32,60,61,32,116,104,105,115,46,108,110,48,43,116,104,
1531− 105,115,46,110,108,105,110,101,115,43,49,32,38,38,32,116,
1532− 104,105,115,46,110,108,105,110,101,115,32,62,32,49,41,10,
1533− 9,9,9,9,9,116,104,105,115,46,115,99,114,111,108,108,
1534− 100,111,119,110,40,110,115,99,114,108,41,59,10,9,9,9,
1535− 9,116,104,105,115,46,114,101,100,114,97,119,116,101,120,116,
1536− 40,41,59,10,9,9,9,9,114,101,116,117,114,110,59,10,
1537− 9,9,9,125,10,9,9,9,105,102,40,112,111,115,32,61,
1538− 61,32,120,108,110,46,116,120,116,46,108,101,110,103,116,104,
1539− 41,10,9,9,9,9,120,108,110,46,116,120,116,32,43,61,
1540− 32,116,59,10,9,9,9,101,108,115,101,10,9,9,9,9,
1541− 120,108,110,46,116,120,116,32,61,32,120,108,110,46,116,120,
1542− 116,46,115,108,105,99,101,40,48,44,32,112,111,115,41,32,
1543− 43,10,9,9,9,9,9,116,32,43,32,120,108,110,46,116,
1544− 120,116,46,115,108,105,99,101,40,112,111,115,44,32,120,108,
1545− 110,108,101,110,41,59,10,9,9,9,116,104,105,115,46,112,
1546− 48,32,43,61,32,116,46,108,101,110,103,116,104,59,10,9,
1547− 9,9,116,104,105,115,46,112,49,32,61,32,116,104,105,115,
1548− 46,112,48,59,10,9,9,9,116,104,105,115,46,110,114,117,
1549− 110,101,115,32,43,61,32,116,46,108,101,110,103,116,104,59,
1550− 10,9,9,9,118,97,114,32,119,114,32,61,32,116,104,105,
1551− 115,46,108,105,110,101,119,114,97,112,40,120,108,110,46,116,
1552− 120,116,41,59,10,9,9,9,105,102,40,119,114,32,61,61,
1553− 32,120,108,110,46,116,120,116,46,108,101,110,103,116,104,41,
1554− 123,10,9,9,9,9,116,104,105,115,46,115,101,116,108,105,
1555− 110,101,115,111,102,102,40,105,43,49,41,59,10,9,9,9,
1556− 9,116,104,105,115,46,102,114,115,105,122,101,32,43,61,32,
1557− 116,46,108,101,110,103,116,104,59,10,9,9,9,9,105,102,
1558− 40,105,32,62,61,32,116,104,105,115,46,108,110,48,32,38,
1559− 38,32,105,32,60,61,32,116,104,105,115,46,108,110,48,43,
1560− 116,104,105,115,46,102,114,108,105,110,101,115,41,10,9,9,
1561− 9,9,9,116,104,105,115,46,100,114,97,119,108,105,110,101,
1562− 40,120,108,110,44,32,105,45,116,104,105,115,46,108,110,48,
1563− 41,59,10,9,9,9,125,32,101,108,115,101,32,123,10,9,
1564− 9,9,9,116,104,105,115,46,114,101,102,111,114,109,97,116,
1565− 40,105,41,59,10,9,9,9,9,105,102,40,33,100,111,110,
1566− 116,115,99,114,111,108,108,41,10,9,9,9,9,105,102,40,
1567− 105,32,62,61,32,116,104,105,115,46,108,110,48,43,116,104,
1568− 105,115,46,110,108,105,110,101,115,45,49,32,38,38,10,9,
1569− 9,9,9,32,32,32,105,32,60,61,32,116,104,105,115,46,
1570− 108,110,48,43,116,104,105,115,46,110,108,105,110,101,115,43,
1571− 49,41,10,9,9,9,9,9,116,104,105,115,46,115,99,114,
1572− 111,108,108,100,111,119,110,40,110,115,99,114,108,41,59,10,
1573− 9,9,9,9,116,104,105,115,46,114,101,100,114,97,119,116,
1574− 101,120,116,40,41,59,10,9,9,9,125,10,9,9,9,114,
1575− 101,116,117,114,110,59,10,9,9,125,10,9,125,10,125,10,
1576− 10,47,42,10,32,42,32,105,102,32,116,104,101,32,115,101,
1577− 108,101,99,116,105,111,110,32,105,115,32,101,109,112,116,121,
1578− 44,32,116,104,101,32,112,114,101,118,105,111,117,115,32,114,
1579− 117,110,101,32,105,115,32,100,101,108,101,116,101,100,44,32,
1580− 111,116,104,101,114,119,105,115,101,10,32,42,32,116,104,101,
1581− 32,101,110,116,105,114,101,32,115,101,108,101,99,116,105,111,
1582− 110,32,105,115,32,114,101,109,111,118,101,100,46,32,112,48,
1583− 32,97,110,100,32,112,49,32,97,114,101,32,117,112,100,97,
1584− 116,101,100,46,10,32,42,47,10,102,117,110,99,116,105,111,
1585− 110,32,116,116,100,101,108,40,100,111,110,116,115,99,114,111,
1586− 108,108,41,32,123,10,9,116,104,105,115,46,117,110,116,105,
1587− 99,107,40,41,59,10,9,105,102,40,116,104,105,115,46,112,
1588− 48,32,62,61,32,116,104,105,115,46,110,114,117,110,101,115,
1589− 32,124,124,32,116,104,105,115,46,112,49,32,60,32,116,104,
1590− 105,115,46,112,48,41,10,9,9,114,101,116,117,114,110,59,
1591− 10,9,118,97,114,32,110,115,99,114,108,32,61,32,77,97,
1592− 116,104,46,102,108,111,111,114,40,116,104,105,115,46,110,108,
1593− 105,110,101,115,47,52,41,59,10,9,105,102,40,110,115,99,
1594− 114,108,32,61,61,32,48,41,10,9,9,110,115,99,114,108,
1595− 32,61,32,49,59,10,9,118,97,114,32,109,105,103,104,116,
1596− 115,99,114,111,108,108,32,61,32,40,116,104,105,115,46,112,
1597− 49,32,62,61,32,116,104,105,115,46,108,105,110,101,115,91,
1598− 116,104,105,115,46,108,110,48,93,46,111,102,102,41,59,10,
1599− 9,99,111,110,115,111,108,101,46,108,111,103,40,34,100,101,
1600− 108,32,34,44,32,116,104,105,115,46,112,48,44,32,116,104,
1601− 105,115,46,112,49,41,59,10,9,105,102,40,116,104,105,115,
1602− 46,112,48,32,62,32,48,32,38,38,32,116,104,105,115,46,
1603− 112,48,32,61,61,32,116,104,105,115,46,112,49,41,10,9,
1604− 9,116,104,105,115,46,112,48,45,45,59,10,9,116,104,105,
1605− 115,46,109,97,114,107,100,101,108,40,41,59,10,9,118,97,
1606− 114,32,105,59,10,9,118,97,114,32,120,108,110,59,10,9,
1607− 102,111,114,40,105,32,61,32,48,59,32,105,32,60,32,116,
1608− 104,105,115,46,108,105,110,101,115,46,108,101,110,103,116,104,
1609− 59,32,105,43,43,41,123,10,9,9,120,108,110,32,61,32,
1610− 116,104,105,115,46,108,105,110,101,115,91,105,93,59,10,9,
1611− 9,118,97,114,32,120,108,110,108,101,110,32,61,32,120,108,
1612− 110,46,116,120,116,46,108,101,110,103,116,104,59,10,9,9,
1613− 105,102,40,116,104,105,115,46,112,48,32,62,61,32,120,108,
1614− 110,46,111,102,102,32,38,38,32,116,104,105,115,46,112,48,
1615− 32,60,61,32,120,108,110,46,111,102,102,43,120,108,110,108,
1616− 101,110,41,10,9,9,9,98,114,101,97,107,59,10,9,125,
1617− 10,9,105,102,40,105,32,61,61,32,116,104,105,115,46,108,
1618− 105,110,101,115,46,108,101,110,103,116,104,41,123,10,9,9,
1619− 99,111,110,115,111,108,101,46,108,111,103,40,34,116,100,101,
1620− 108,58,32,111,117,116,32,111,102,32,116,101,120,116,34,41,
1621− 59,10,9,9,114,101,116,117,114,110,59,10,9,125,10,9,
1622− 118,97,114,32,108,110,48,32,61,32,105,59,10,9,118,97,
1623− 114,32,110,100,101,108,32,61,32,116,104,105,115,46,112,49,
1624− 32,45,32,116,104,105,115,46,112,48,59,10,9,118,97,114,
1625− 32,111,102,102,32,61,32,116,104,105,115,46,112,48,32,45,
1626− 32,120,108,110,46,111,102,102,59,10,9,118,97,114,32,116,
1627− 111,116,32,61,32,48,59,10,9,119,104,105,108,101,40,116,
1628− 111,116,32,60,32,110,100,101,108,32,38,38,32,105,32,60,
1629− 32,116,104,105,115,46,108,105,110,101,115,46,108,101,110,103,
1630− 116,104,41,32,123,10,9,9,118,97,114,32,120,108,110,32,
1631− 61,32,116,104,105,115,46,108,105,110,101,115,91,105,93,59,
1632− 10,9,9,118,97,114,32,120,108,110,108,101,110,32,61,32,
1633− 120,108,110,46,116,120,116,46,108,101,110,103,116,104,59,10,
1634− 9,9,118,97,114,32,110,100,32,61,32,110,100,101,108,45,
1635− 116,111,116,59,10,9,9,105,102,40,111,102,102,43,110,100,
1636− 32,62,32,120,108,110,108,101,110,41,10,9,9,9,110,100,
1637− 32,61,32,120,108,110,108,101,110,32,45,32,111,102,102,59,
1638− 10,9,9,120,108,110,46,116,120,116,32,61,32,120,108,110,
1639− 46,116,120,116,46,115,108,105,99,101,40,48,44,32,111,102,
1640− 102,41,32,43,32,120,108,110,46,116,120,116,46,115,108,105,
1641− 99,101,40,111,102,102,43,110,100,44,32,120,108,110,108,101,
1642− 110,41,59,10,9,9,116,111,116,32,43,61,32,110,100,59,
1643− 10,9,9,105,102,40,105,32,61,61,32,108,110,48,32,38,
1644− 38,32,116,111,116,32,61,61,32,110,100,101,108,32,38,38,
1645− 32,120,108,110,46,101,111,108,41,123,10,9,9,9,47,42,
1646− 32,100,101,108,32,119,105,116,104,105,110,32,97,32,108,105,
1647− 110,101,59,32,100,111,110,39,116,32,114,101,102,111,114,109,
1648− 97,116,59,32,106,117,115,116,32,97,100,106,117,115,116,32,
1649− 42,47,10,9,9,9,116,104,105,115,46,110,114,117,110,101,
1650− 115,32,45,61,32,116,111,116,59,10,9,9,9,116,104,105,
1651− 115,46,112,49,32,45,61,32,116,111,116,59,10,9,9,9,
1652− 116,104,105,115,46,115,101,116,108,105,110,101,115,111,102,102,
1653− 40,105,43,49,41,59,10,9,9,9,105,102,40,108,110,48,
1654− 32,62,61,32,116,104,105,115,46,108,110,48,32,38,38,32,
1655− 108,110,48,32,60,32,116,104,105,115,46,108,110,48,43,116,
1656− 104,105,115,46,102,114,108,105,110,101,115,41,123,10,9,9,
1657− 9,9,116,104,105,115,46,102,114,115,105,122,101,32,45,61,
1658− 32,116,111,116,59,10,9,9,9,9,116,104,105,115,46,100,
1659− 114,97,119,108,105,110,101,40,120,108,110,44,32,105,45,116,
1660− 104,105,115,46,108,110,48,41,59,10,9,9,9,125,10,9,
1661− 9,9,114,101,116,117,114,110,59,10,9,9,125,10,9,9,
1662− 105,102,40,116,111,116,32,60,32,110,100,101,108,32,38,38,
1663− 32,120,108,110,46,101,111,108,41,123,10,9,9,9,120,108,
1664− 110,46,101,111,108,32,61,32,102,97,108,115,101,59,10,9,
1665− 9,9,116,111,116,43,43,59,10,9,9,125,10,9,9,105,
1666− 43,43,59,10,9,9,111,102,102,32,61,32,48,59,10,9,
1667− 125,10,9,116,104,105,115,46,115,101,116,108,105,110,101,115,
1668− 111,102,102,40,108,110,48,43,49,41,59,10,9,116,104,105,
1669− 115,46,110,114,117,110,101,115,32,45,61,32,116,111,116,59,
1670− 10,9,116,104,105,115,46,112,49,32,45,61,32,116,111,116,
1671− 59,10,9,116,104,105,115,46,114,101,102,111,114,109,97,116,
1672− 40,108,110,48,41,59,10,9,116,104,105,115,46,114,101,100,
1673− 114,97,119,116,101,120,116,40,41,59,10,9,105,102,40,33,
1674− 100,111,110,116,115,99,114,111,108,108,32,38,38,32,109,105,
1675− 103,104,116,115,99,114,111,108,108,32,38,38,32,116,104,105,
1676− 115,46,112,48,32,60,32,116,104,105,115,46,108,105,110,101,
1677− 115,91,116,104,105,115,46,108,110,48,93,46,111,102,102,41,
1678− 123,10,9,9,116,104,105,115,46,115,99,114,111,108,108,117,
1679− 112,40,110,115,99,114,108,41,59,10,9,9,116,104,105,115,
1680− 46,114,101,100,114,97,119,116,101,120,116,40,41,59,10,9,
1681− 125,10,125,10,10,118,97,114,32,119,111,114,100,114,101,32,
1682− 61,32,110,117,108,108,59,10,102,117,110,99,116,105,111,110,
1683− 32,105,115,119,111,114,100,99,104,97,114,40,99,41,32,123,
1684− 10,9,105,102,40,33,119,111,114,100,114,101,41,10,9,9,
1685− 119,111,114,100,114,101,32,61,32,47,92,119,47,59,10,9,
1686− 114,101,116,117,114,110,32,119,111,114,100,114,101,46,116,101,
1687− 115,116,40,99,41,59,10,125,10,10,102,117,110,99,116,105,
1688− 111,110,32,105,115,108,111,110,103,119,111,114,100,99,104,97,
1689− 114,40,99,41,32,123,10,9,105,102,40,33,119,111,114,100,
1690− 114,101,41,10,9,9,119,111,114,100,114,101,32,61,32,47,
1691− 92,119,47,59,10,9,114,101,116,117,114,110,32,99,32,61,
1692− 61,32,39,40,39,32,124,124,32,99,32,61,61,32,39,41,
1693− 39,32,124,124,32,99,32,61,61,32,39,47,39,32,124,124,
1694− 32,99,32,61,61,32,39,46,39,32,124,124,32,99,32,61,
1695− 61,32,39,58,39,32,124,124,32,99,32,61,61,32,39,35,
1696− 39,32,124,124,32,99,32,61,61,32,39,44,39,32,124,124,
1697− 32,119,111,114,100,114,101,46,116,101,115,116,40,99,41,59,
1698− 10,125,10,10,102,117,110,99,116,105,111,110,32,105,115,108,
1699− 112,97,114,101,110,40,99,41,32,123,10,9,114,101,116,117,
1700− 114,110,32,34,40,91,123,60,39,96,92,34,34,46,105,110,
1701− 100,101,120,79,102,40,99,41,32,62,61,32,48,59,10,125,
1702− 10,10,102,117,110,99,116,105,111,110,32,105,115,114,112,97,
1703− 114,101,110,40,99,41,32,123,10,9,114,101,116,117,114,110,
1704− 32,34,41,93,125,62,39,96,92,34,34,46,105,110,100,101,
1705− 120,79,102,40,99,41,32,62,61,32,48,59,10,125,10,10,
1706− 102,117,110,99,116,105,111,110,32,114,112,97,114,101,110,40,
1707− 99,41,32,123,10,9,118,97,114,32,105,32,61,32,34,40,
1708− 91,123,60,34,46,105,110,100,101,120,79,102,40,99,41,59,
1709− 10,9,105,102,40,105,32,60,32,48,41,10,9,9,114,101,
1710− 116,117,114,110,32,99,59,10,9,114,101,116,117,114,110,32,
1711− 34,41,93,125,62,34,46,99,104,97,114,65,116,40,105,41,
1712− 59,10,125,10,10,102,117,110,99,116,105,111,110,32,108,112,
1713− 97,114,101,110,40,99,41,32,123,10,9,118,97,114,32,105,
1714− 32,61,32,34,41,93,125,62,34,46,105,110,100,101,120,79,
1715− 102,40,99,41,59,10,9,105,102,40,105,32,60,32,48,41,
1716− 10,9,9,114,101,116,117,114,110,32,99,59,10,9,114,101,
1717− 116,117,114,110,32,34,40,91,123,60,34,46,99,104,97,114,
1718− 65,116,40,105,41,59,10,125,10,10,102,117,110,99,116,105,
1719− 111,110,32,116,116,103,101,116,119,111,114,100,40,112,111,115,
1720− 44,32,108,111,110,103,41,32,123,10,9,105,102,40,112,111,
1721− 115,32,62,61,32,116,104,105,115,46,110,114,117,110,101,115,
1722− 41,10,9,9,114,101,116,117,114,110,32,91,34,34,44,32,
1723− 116,104,105,115,46,110,114,117,110,101,115,44,32,116,104,105,
1724− 115,46,110,114,117,110,101,115,93,59,10,9,105,102,40,33,
1725− 108,111,110,103,41,32,123,10,9,9,108,111,110,103,32,61,
1726− 32,40,116,104,105,115,46,100,98,108,99,108,105,99,107,32,
1727− 62,32,49,41,59,10,9,125,10,9,118,97,114,32,105,115,
1728− 99,104,97,114,32,61,32,105,115,119,111,114,100,99,104,97,
1729− 114,59,10,9,105,102,40,108,111,110,103,41,32,123,10,9,
1730− 9,105,115,99,104,97,114,32,61,32,105,115,108,111,110,103,
1731− 119,111,114,100,99,104,97,114,59,10,9,125,10,9,118,97,
1732− 114,32,105,59,10,9,118,97,114,32,120,108,110,59,10,9,
1733− 102,111,114,40,105,32,61,32,48,59,32,105,32,60,32,116,
1734− 104,105,115,46,108,105,110,101,115,46,108,101,110,103,116,104,
1735− 59,32,105,43,43,41,123,10,9,9,120,108,110,32,61,32,
1736− 116,104,105,115,46,108,105,110,101,115,91,105,93,59,10,9,
1737− 9,118,97,114,32,120,108,110,108,101,110,32,61,32,120,108,
1738− 110,46,116,120,116,46,108,101,110,103,116,104,59,10,9,9,
1739− 105,102,40,112,111,115,32,60,32,120,108,110,46,111,102,102,
1740− 32,124,124,32,112,111,115,32,62,32,120,108,110,46,111,102,
1741− 102,43,120,108,110,108,101,110,41,10,9,9,9,99,111,110,
1742− 116,105,110,117,101,59,10,9,9,47,42,32,110,111,119,32,
1743− 115,101,108,101,99,116,32,116,104,101,32,119,111,114,100,32,
1744− 40,119,111,110,39,116,32,108,111,111,112,32,97,103,97,105,
1745− 110,41,32,42,47,10,9,9,118,97,114,32,101,112,111,115,
1746− 32,61,32,112,111,115,59,10,9,9,118,97,114,32,112,48,
1747− 32,61,32,112,111,115,32,45,32,120,108,110,46,111,102,102,
1748− 59,10,9,9,105,102,40,112,48,32,61,61,32,120,108,110,
1749− 108,101,110,41,123,10,9,9,9,105,102,40,33,120,108,110,
1750− 46,101,111,108,41,10,9,9,9,9,114,101,116,117,114,110,
1751− 32,91,120,108,110,46,116,120,116,44,32,120,108,110,46,111,
1752− 102,102,44,32,120,108,110,46,111,102,102,43,108,110,108,101,
1753− 110,40,120,108,110,41,93,59,10,9,9,9,114,101,116,117,
1754− 114,110,32,91,120,108,110,46,116,120,116,43,34,92,110,34,
1755− 44,32,120,108,110,46,111,102,102,44,32,120,108,110,46,111,
1756− 102,102,43,108,110,108,101,110,40,120,108,110,41,93,59,10,
1757− 9,9,125,10,9,9,47,42,10,9,9,32,42,32,104,101,
1758− 117,114,105,115,116,105,99,58,32,105,102,32,99,108,105,99,
1759− 107,32,97,116,32,116,104,101,32,114,105,103,104,116,32,111,
1760− 102,32,108,112,97,114,101,110,32,97,110,100,32,110,111,116,
1761− 10,9,9,32,42,32,97,116,32,114,112,97,114,101,110,44,
1762− 32,117,115,101,32,116,104,101,32,108,112,97,114,101,110,46,
1763− 10,9,9,32,42,47,10,9,9,105,102,40,112,48,32,62,
1764− 32,48,32,38,38,32,33,105,115,114,112,97,114,101,110,40,
1765− 120,108,110,46,116,120,116,46,99,104,97,114,65,116,40,112,
1766− 48,41,41,32,38,38,10,9,9,32,32,32,105,115,108,112,
1767− 97,114,101,110,40,120,108,110,46,116,120,116,46,99,104,97,
1768− 114,65,116,40,112,48,45,49,41,41,41,123,10,9,9,9,
1769− 112,111,115,45,45,59,10,9,9,9,112,48,45,45,59,10,
1770− 9,9,125,10,9,9,118,97,114,32,112,49,32,61,32,112,
1771− 48,59,10,9,9,118,97,114,32,99,32,61,32,120,108,110,
1772− 46,116,120,116,46,99,104,97,114,65,116,40,112,48,41,59,
1773− 10,9,9,105,102,40,105,115,108,112,97,114,101,110,40,99,
1774− 41,41,123,10,9,9,9,112,111,115,43,43,59,10,9,9,
1775− 9,118,97,114,32,110,32,61,32,49,59,10,9,9,9,118,
1776− 97,114,32,114,99,32,61,32,114,112,97,114,101,110,40,99,
1777− 41,59,10,9,9,9,118,97,114,32,116,120,116,32,61,32,
1778− 34,34,59,10,9,9,9,112,49,43,43,59,10,9,9,9,
1779− 101,112,111,115,43,43,59,10,9,9,9,100,111,123,10,9,
1780− 9,9,9,102,111,114,40,59,32,112,49,32,60,32,120,108,
1781− 110,108,101,110,59,32,112,49,43,43,44,32,101,112,111,115,
1782− 43,43,41,123,10,9,9,9,9,9,118,97,114,32,120,32,
1783− 61,32,120,108,110,46,116,120,116,46,99,104,97,114,65,116,
1784− 40,112,49,41,59,10,9,9,9,9,9,105,102,40,120,32,
1785− 61,61,32,114,99,41,10,9,9,9,9,9,9,110,45,45,
1786− 59,10,9,9,9,9,9,101,108,115,101,32,105,102,40,120,
1787− 32,61,61,32,99,41,10,9,9,9,9,9,9,110,43,43,
1788− 59,10,9,9,9,9,9,105,102,40,110,32,33,61,32,48,
1789− 41,10,9,9,9,9,9,9,116,120,116,32,43,61,32,120,
1790− 59,10,9,9,9,9,9,105,102,40,110,32,61,61,32,48,
1791− 41,10,9,9,9,9,9,9,114,101,116,117,114,110,32,91,
1792− 116,120,116,44,32,112,111,115,44,32,101,112,111,115,45,49,
1793− 93,59,10,9,9,9,9,125,10,9,9,9,9,105,102,40,
1794− 120,108,110,46,101,111,108,41,123,10,9,9,9,9,9,101,
1795− 112,111,115,43,43,59,10,9,9,9,9,9,116,120,116,32,
1796− 43,61,32,34,92,110,34,59,10,9,9,9,9,125,10,9,
1797− 9,9,9,105,43,43,59,10,9,9,9,9,105,102,40,105,
1798− 32,60,32,116,104,105,115,46,108,105,110,101,115,46,108,101,
1799− 110,103,116,104,41,123,10,9,9,9,9,9,120,108,110,32,
1800− 61,32,116,104,105,115,46,108,105,110,101,115,91,105,93,59,
1801− 10,9,9,9,9,9,120,108,110,108,101,110,32,61,32,120,
1802− 108,110,46,116,120,116,46,108,101,110,103,116,104,59,10,9,
1803− 9,9,9,9,112,49,32,61,32,48,59,10,9,9,9,9,
1804− 125,10,9,9,9,125,119,104,105,108,101,40,110,32,62,32,
1805− 48,32,38,38,32,105,32,60,32,116,104,105,115,46,108,105,
1806− 110,101,115,46,108,101,110,103,116,104,41,59,10,9,9,9,
1807− 114,101,116,117,114,110,32,91,116,120,116,44,32,112,111,115,
1808− 44,32,101,112,111,115,93,59,10,9,9,125,10,9,9,105,
1809− 102,40,105,115,114,112,97,114,101,110,40,99,41,41,123,10,
1810− 9,9,9,118,97,114,32,110,32,61,32,49,59,10,9,9,
1811− 9,118,97,114,32,108,99,32,61,32,108,112,97,114,101,110,
1812− 40,99,41,59,10,9,9,9,118,97,114,32,116,120,116,32,
1813− 61,32,34,34,59,10,9,9,9,100,111,123,10,9,9,9,
1814− 9,102,111,114,40,112,48,45,45,59,32,112,48,32,62,61,
1815− 32,48,59,32,112,48,45,45,41,123,10,9,9,9,9,9,
1816− 120,32,61,32,120,108,110,46,116,120,116,46,99,104,97,114,
1817− 65,116,40,112,48,41,59,10,9,9,9,9,9,105,102,40,
1818− 120,32,61,61,32,108,99,41,10,9,9,9,9,9,9,110,
1819− 45,45,59,10,9,9,9,9,9,101,108,115,101,32,105,102,
1820− 40,120,32,61,61,32,99,41,10,9,9,9,9,9,9,110,
1821− 43,43,59,10,9,9,9,9,9,105,102,40,110,32,33,61,
1822− 32,48,41,123,10,9,9,9,9,9,9,112,111,115,45,45,
1823− 59,10,9,9,9,9,9,9,116,120,116,32,61,32,120,32,
1824− 43,32,116,120,116,59,10,9,9,9,9,9,125,10,9,9,
1825− 9,9,9,105,102,40,110,32,61,61,32,48,41,10,9,9,
1826− 9,9,9,9,114,101,116,117,114,110,32,91,116,120,116,44,
1827− 32,112,111,115,44,32,101,112,111,115,93,59,10,9,9,9,
1828− 9,125,10,9,9,9,9,105,102,40,105,32,62,32,48,41,
1829− 123,10,9,9,9,9,9,105,45,45,59,10,9,9,9,9,
1830− 9,120,108,110,32,61,32,116,104,105,115,46,108,105,110,101,
1831− 115,91,105,93,59,10,9,9,9,9,9,120,108,110,108,101,
1832− 110,32,61,32,120,108,110,46,116,120,116,46,108,101,110,103,
1833− 116,104,59,10,9,9,9,9,9,112,48,32,61,32,120,108,
1834− 110,108,101,110,59,10,9,9,9,9,9,105,102,40,120,108,
1835− 110,46,101,111,108,41,123,10,9,9,9,9,9,9,112,111,
1836− 115,45,45,59,10,9,9,9,9,9,9,116,120,116,32,61,
1837− 32,34,92,110,34,32,43,32,116,120,116,59,10,9,9,9,
1838− 9,9,125,10,9,9,9,9,125,10,9,9,9,125,119,104,
1839− 105,108,101,40,105,32,62,61,32,48,32,38,38,32,110,32,
1840− 62,32,48,41,59,10,9,9,9,114,101,116,117,114,110,32,
1841− 91,116,120,116,44,32,112,111,115,44,32,101,112,111,115,93,
1842− 59,10,9,9,125,10,9,9,105,102,40,33,105,115,108,111,
1843− 110,103,119,111,114,100,99,104,97,114,40,99,41,41,10,9,
1844− 9,9,114,101,116,117,114,110,32,91,120,108,110,46,116,120,
1845− 116,46,115,108,105,99,101,40,112,48,44,32,112,49,41,44,
1846− 32,112,111,115,44,32,101,112,111,115,93,59,10,9,9,119,
1847− 104,105,108,101,40,112,48,32,62,32,48,32,38,38,32,105,
1848− 115,99,104,97,114,40,120,108,110,46,116,120,116,46,99,104,
1849− 97,114,65,116,40,112,48,45,49,41,41,41,123,10,9,9,
1850− 9,112,111,115,45,45,59,10,9,9,9,112,48,45,45,59,
1851− 10,9,9,125,10,9,9,119,104,105,108,101,40,112,49,32,
1852− 60,32,120,108,110,108,101,110,32,38,38,32,105,115,99,104,
1853− 97,114,40,120,108,110,46,116,120,116,46,99,104,97,114,65,
1854− 116,40,112,49,41,41,41,123,10,9,9,9,101,112,111,115,
1855− 43,43,59,10,9,9,9,112,49,43,43,59,10,9,9,125,
1856− 10,9,9,114,101,116,117,114,110,32,91,120,108,110,46,116,
1857− 120,116,46,115,108,105,99,101,40,112,48,44,32,112,49,41,
1858− 44,32,112,111,115,44,32,101,112,111,115,93,59,10,9,125,
1859− 10,9,114,101,116,117,114,110,32,91,34,34,44,32,112,111,
1860− 115,44,32,112,111,115,93,59,10,125,10,10,102,117,110,99,
1861− 116,105,111,110,32,116,116,103,101,116,40,112,48,44,32,112,
1862− 49,41,32,123,10,9,105,102,40,112,48,32,61,61,32,112,
1863− 49,32,124,124,32,112,48,32,62,61,32,116,104,105,115,46,
1864− 110,114,117,110,101,115,32,124,124,32,112,49,32,60,32,112,
1865− 48,41,10,9,9,114,101,116,117,114,110,32,34,34,59,10,
1866− 9,118,97,114,32,105,59,10,9,118,97,114,32,120,108,110,
1867− 59,10,9,102,111,114,40,105,32,61,32,48,59,32,105,32,
1868− 60,32,116,104,105,115,46,108,105,110,101,115,46,108,101,110,
1869− 103,116,104,59,32,105,43,43,41,123,10,9,9,120,108,110,
1870− 32,61,32,116,104,105,115,46,108,105,110,101,115,91,105,93,
1871− 59,10,9,9,118,97,114,32,120,108,110,108,101,110,32,61,
1872− 32,120,108,110,46,116,120,116,46,108,101,110,103,116,104,59,
1873− 10,9,9,105,102,40,112,48,32,62,61,32,120,108,110,46,
1874− 111,102,102,32,38,38,32,112,48,32,60,61,32,120,108,110,
1875− 46,111,102,102,43,120,108,110,108,101,110,41,10,9,9,9,
1876− 98,114,101,97,107,59,10,9,125,10,9,105,102,40,105,32,
1877− 61,61,32,116,104,105,115,46,108,105,110,101,115,46,108,101,
1878− 110,103,116,104,41,123,10,9,9,99,111,110,115,111,108,101,
1879− 46,108,111,103,40,34,116,103,101,116,58,32,111,117,116,32,
1880− 111,102,32,116,101,120,116,34,41,59,10,9,9,114,101,116,
1881− 117,114,110,32,34,34,59,10,9,125,10,9,118,97,114,32,
1882− 108,110,48,32,61,32,105,59,10,9,118,97,114,32,110,103,
1883− 101,116,32,61,32,112,49,32,45,32,112,48,59,10,9,118,
1884− 97,114,32,111,102,102,32,61,32,112,48,32,45,32,120,108,
1885− 110,46,111,102,102,59,10,9,118,97,114,32,116,111,116,32,
1886− 61,32,48,59,10,9,118,97,114,32,116,120,116,32,61,32,
1887− 34,34,59,10,9,100,111,123,10,9,9,118,97,114,32,120,
1888− 108,110,32,61,32,116,104,105,115,46,108,105,110,101,115,91,
1889− 105,93,59,10,9,9,118,97,114,32,120,108,110,108,101,110,
1890− 32,61,32,120,108,110,46,116,120,116,46,108,101,110,103,116,
1891− 104,59,10,9,9,118,97,114,32,110,103,32,61,32,110,103,
1892− 101,116,45,116,111,116,59,10,9,9,105,102,40,111,102,102,
1893− 43,110,103,32,62,32,120,108,110,108,101,110,41,10,9,9,
1894− 9,110,103,32,61,32,120,108,110,108,101,110,32,45,32,111,
1895− 102,102,59,10,9,9,116,120,116,32,43,61,32,120,108,110,
1896− 46,116,120,116,46,115,108,105,99,101,40,111,102,102,44,32,
1897− 111,102,102,43,110,103,41,59,10,9,9,116,111,116,32,43,
1898− 61,32,110,103,59,10,9,9,105,102,40,116,111,116,32,60,
1899− 32,110,103,101,116,32,38,38,32,120,108,110,46,101,111,108,
1900− 41,123,10,9,9,9,116,120,116,32,43,61,32,34,92,110,
1901− 34,59,10,9,9,9,116,111,116,43,43,59,10,9,9,125,
1902− 10,9,9,105,43,43,59,10,9,9,111,102,102,32,61,32,
1903− 48,59,10,9,125,119,104,105,108,101,40,116,111,116,32,60,
1904− 32,110,103,101,116,41,59,10,9,114,101,116,117,114,110,32,
1905− 116,120,116,59,10,125,10,10,47,42,10,32,42,32,99,97,
1906− 108,108,32,116,105,110,115,32,102,111,114,32,97,114,98,105,
1907− 116,114,97,114,121,32,116,101,120,116,46,10,32,42,47,10,
1908− 102,117,110,99,116,105,111,110,32,116,116,105,110,115,108,105,
1909− 110,101,115,40,120,44,32,100,111,110,116,115,99,114,111,108,
1910− 108,41,32,123,10,9,116,114,121,123,10,9,9,118,97,114,
1911− 32,108,110,32,61,32,120,46,115,112,108,105,116,40,39,92,
1912− 110,39,41,59,10,9,9,102,111,114,40,118,97,114,32,105,
1913− 32,61,32,48,59,32,105,32,60,32,108,110,46,108,101,110,
1914− 103,116,104,59,32,105,43,43,41,32,123,10,9,9,9,105,
1915− 102,40,108,110,91,105,93,46,108,101,110,103,116,104,32,62,
1916− 32,48,41,10,9,9,9,9,116,104,105,115,46,116,105,110,
1917− 115,40,108,110,91,105,93,44,32,100,111,110,116,115,99,114,
1918− 111,108,108,41,59,10,9,9,9,105,102,40,105,32,60,32,
1919− 108,110,46,108,101,110,103,116,104,45,49,41,10,9,9,9,
1920− 9,116,104,105,115,46,116,105,110,115,40,39,92,110,39,44,
1921− 32,100,111,110,116,115,99,114,111,108,108,41,59,10,9,9,
1922− 125,10,9,125,99,97,116,99,104,40,101,120,41,123,10,9,
1923− 9,99,111,110,115,111,108,101,46,108,111,103,40,34,116,105,
1924− 110,115,108,105,110,101,115,58,32,34,32,43,32,101,120,41,
1925− 59,10,9,125,10,125,10,10,102,117,110,99,116,105,111,110,
1926− 32,116,109,97,121,114,101,115,105,122,101,40,117,115,101,114,
1927− 41,32,123,10,9,105,102,40,117,115,101,114,41,32,123,10,
1928− 9,9,116,104,105,115,46,117,115,101,114,114,101,115,105,122,
1929− 101,100,32,61,32,116,114,117,101,59,10,9,125,10,9,118,
1930− 97,114,32,112,32,61,32,36,40,116,104,105,115,41,46,112,
1931− 97,114,101,110,116,40,41,59,10,9,118,97,114,32,100,120,
1932− 32,61,32,112,46,119,105,100,116,104,40,41,59,10,9,118,
1933− 97,114,32,100,121,32,61,32,112,46,104,101,105,103,104,116,
1934− 40,41,32,45,32,53,59,10,9,99,111,110,115,111,108,101,
1935− 46,108,111,103,40,39,116,101,120,116,32,114,101,115,105,122,
1936− 101,100,39,44,32,100,120,44,32,100,121,44,32,117,115,101,
1937− 114,63,34,117,115,101,114,34,58,34,119,105,110,34,41,59,
1938− 10,9,118,97,114,32,99,32,61,32,116,104,105,115,59,10,
1939− 9,118,97,114,32,99,116,120,32,61,32,116,104,105,115,46,
1940− 103,101,116,67,111,110,116,101,120,116,40,34,50,100,34,44,
1941− 32,123,97,108,112,104,97,58,32,102,97,108,115,101,125,41,
1942− 59,10,9,118,97,114,32,116,97,103,32,61,32,36,40,34,
1943− 35,34,43,116,104,105,115,46,100,105,118,105,100,43,34,116,
1944− 34,41,10,9,105,102,40,116,97,103,41,32,123,10,9,9,
1945− 118,97,114,32,116,121,32,61,32,116,97,103,46,104,101,105,
1946− 103,104,116,40,41,59,10,9,9,100,121,32,45,61,32,116,
1947− 121,59,10,9,125,10,9,36,40,116,104,105,115,41,46,119,
1948− 105,100,116,104,40,100,120,41,59,10,9,36,40,116,104,105,
1949− 115,41,46,104,101,105,103,104,116,40,100,121,41,59,10,9,
1950− 99,46,119,105,100,116,104,32,61,32,99,46,116,115,99,97,
1951− 108,101,42,100,120,59,10,9,99,46,104,101,105,103,104,116,
1952− 32,61,32,99,46,116,115,99,97,108,101,42,100,121,59,10,
1953− 9,116,104,105,115,46,110,108,105,110,101,115,32,61,32,77,
1954− 97,116,104,46,102,108,111,111,114,40,99,46,104,101,105,103,
1955− 104,116,47,116,104,105,115,46,102,111,110,116,104,116,41,59,
1956− 10,9,116,104,105,115,46,115,97,118,101,100,32,61,32,110,
1957− 117,108,108,59,10,9,116,104,105,115,46,114,101,102,111,114,
1958− 109,97,116,40,48,41,59,10,9,116,104,105,115,46,114,101,
1959− 100,114,97,119,116,101,120,116,40,41,59,10,125,10,10,102,
1960− 117,110,99,116,105,111,110,32,116,97,117,116,111,114,101,115,
1961− 105,122,101,40,97,100,100,115,105,122,101,44,32,109,111,114,
1962− 101,108,101,115,115,41,32,123,10,9,118,97,114,32,112,32,
1963− 61,32,36,40,116,104,105,115,41,59,10,9,118,97,114,32,
1964− 111,108,100,104,116,32,61,32,112,46,104,101,105,103,104,116,
1965− 40,41,59,10,9,118,97,114,32,104,116,32,61,32,111,108,
1966− 100,104,116,59,10,9,118,97,114,32,102,111,110,116,104,116,
1967− 32,61,32,116,104,105,115,46,102,111,110,116,104,116,47,116,
1968− 104,105,115,46,116,115,99,97,108,101,59,10,9,105,102,40,
1969− 97,100,100,115,105,122,101,41,32,123,10,9,9,116,104,105,
1970− 115,46,117,115,101,114,114,101,115,105,122,101,100,32,61,32,
1971− 116,114,117,101,59,10,9,9,105,102,40,109,111,114,101,108,
1972− 101,115,115,32,62,32,49,41,123,10,9,9,9,118,97,114,
1973− 32,119,116,111,112,32,61,32,36,40,119,105,110,100,111,119,
1974− 41,46,115,99,114,111,108,108,84,111,112,40,41,59,10,9,
1975− 9,9,118,97,114,32,101,116,111,112,32,61,32,36,40,116,
1976− 104,105,115,41,46,111,102,102,115,101,116,40,41,46,116,111,
1977− 112,59,10,9,9,9,118,97,114,32,101,111,102,102,32,61,
1978− 32,101,116,111,112,45,119,116,111,112,59,10,9,9,9,99,
1979− 111,110,115,111,108,101,46,108,111,103,40,34,114,101,115,105,
1980− 122,101,32,34,44,32,119,116,111,112,44,32,101,116,111,112,
1981− 44,32,101,111,102,102,41,59,10,9,9,9,104,116,32,61,
1982− 32,119,105,110,100,111,119,46,105,110,110,101,114,72,101,105,
1983− 103,104,116,32,45,32,49,48,32,45,32,101,111,102,102,59,
1984− 10,9,9,125,32,101,108,115,101,32,105,102,40,109,111,114,
1985− 101,108,101,115,115,32,62,61,32,48,41,32,123,10,9,9,
1986− 9,104,116,32,43,61,32,102,111,110,116,104,116,42,54,59,
1987− 10,9,9,125,32,101,108,115,101,32,123,10,9,9,9,104,
1988− 116,32,45,61,32,102,111,110,116,104,116,42,54,59,10,9,
1989− 9,9,105,102,40,104,116,32,60,32,53,42,102,111,110,116,
1990− 104,116,41,32,123,10,9,9,9,9,104,116,32,61,32,53,
1991− 42,102,111,110,116,104,116,59,10,9,9,9,125,10,9,9,
1992− 125,10,9,125,101,108,115,101,123,10,9,9,118,97,114,32,
1993− 110,108,110,32,61,32,116,104,105,115,46,102,114,108,105,110,
1994− 101,115,59,10,9,9,105,102,40,110,108,110,32,60,32,51,
1995− 41,32,123,10,9,9,9,110,108,110,32,61,32,51,59,10,
1996− 9,9,125,10,9,9,104,116,32,61,32,40,110,108,110,43,
1997− 50,41,32,42,32,102,111,110,116,104,116,59,10,9,9,105,
1998− 102,32,40,104,116,32,62,61,32,52,48,48,41,32,123,10,
1999− 9,9,9,104,116,32,61,32,52,48,48,59,10,9,9,125,
2000− 10,9,125,10,9,99,111,110,115,111,108,101,46,108,111,103,
2001− 40,34,97,117,116,111,32,114,115,122,34,44,32,110,108,110,
2002− 44,32,104,116,44,32,111,108,100,104,116,41,59,10,9,105,
2003− 102,32,40,111,108,100,104,116,32,60,32,104,116,32,45,32,
2004− 102,111,110,116,104,116,32,124,124,32,111,108,100,104,116,32,
2005− 62,32,104,116,32,43,32,102,111,110,116,104,116,41,32,123,
2006− 10,9,9,99,111,110,115,111,108,101,46,108,111,103,40,34,
2007− 97,117,116,111,32,114,101,115,105,122,105,110,103,34,41,59,
2008− 10,9,9,118,97,114,32,100,101,108,116,97,32,61,32,104,
2009− 116,32,45,32,111,108,100,104,116,59,10,9,9,112,32,61,
2010− 32,36,40,116,104,105,115,41,46,112,97,114,101,110,116,40,
2011− 41,59,10,9,9,118,97,114,32,110,104,116,32,61,32,112,
2012− 46,104,101,105,103,104,116,40,41,32,43,32,100,101,108,116,
2013− 97,59,10,9,9,112,46,104,101,105,103,104,116,40,110,104,
2014− 116,41,59,10,9,9,116,104,105,115,46,109,97,121,114,101,
2015− 115,105,122,101,40,41,59,10,9,125,10,125,10,10,102,117,
2016− 110,99,116,105,111,110,32,116,109,114,108,115,101,40,101,41,
2017− 32,123,10,9,118,97,114,32,98,32,61,32,49,60,60,40,
2018− 101,46,119,104,105,99,104,45,49,41,59,10,9,105,102,40,
2019− 98,32,61,61,32,49,32,38,38,32,116,104,105,115,46,109,
2020− 97,108,116,41,123,10,9,9,98,32,61,32,50,59,10,9,
2021− 9,116,104,105,115,46,98,117,116,116,111,110,115,32,38,61,
2022− 32,126,49,59,10,9,9,116,104,105,115,46,109,97,108,116,
2023− 32,61,32,102,97,108,115,101,59,10,9,125,10,9,116,104,
2024− 105,115,46,98,117,116,116,111,110,115,32,38,61,32,126,98,
2025− 59,10,9,114,101,116,117,114,110,32,98,59,10,125,10,10,
2026− 102,117,110,99,116,105,111,110,32,116,109,112,114,101,115,115,
2027− 40,101,41,32,123,10,9,118,97,114,32,98,32,61,32,49,
2028− 60,60,40,101,46,119,104,105,99,104,45,49,41,59,10,9,
2029− 105,102,40,98,32,61,61,32,49,32,38,38,32,101,46,97,
2030− 108,116,75,101,121,41,123,10,9,9,98,32,61,32,50,59,
2031− 10,9,9,116,104,105,115,46,109,97,108,116,32,61,32,116,
2032− 114,117,101,59,10,9,125,10,9,116,104,105,115,46,98,117,
2033− 116,116,111,110,115,32,124,61,32,98,59,10,9,114,101,116,
2034− 117,114,110,32,98,59,10,125,10,10,47,47,32,115,101,116,
2035− 32,108,97,115,116,120,44,32,108,97,115,116,121,32,116,111,
2036− 32,101,118,32,99,111,111,114,100,115,32,114,101,108,97,116,
2037− 105,118,101,32,116,111,32,99,97,110,118,97,115,10,102,117,
2038− 110,99,116,105,111,110,32,116,101,118,120,121,40,101,41,32,
2039− 123,10,9,118,97,114,32,120,32,61,32,48,59,10,9,118,
2040− 97,114,32,121,32,61,32,48,59,10,9,105,102,40,101,46,
2041− 102,97,107,101,120,32,33,61,32,117,110,100,101,102,105,110,
2042− 101,100,41,32,123,10,9,9,120,32,61,32,101,46,102,97,
2043− 107,101,120,59,10,9,9,121,32,61,32,101,46,102,97,107,
2044− 101,121,59,10,9,125,32,101,108,115,101,32,123,10,9,9,
2045− 118,97,114,32,112,111,102,102,32,61,32,36,40,116,104,105,
2046− 115,41,46,111,102,102,115,101,116,40,41,59,10,9,9,120,
2047− 32,61,32,101,46,112,97,103,101,88,32,45,32,112,111,102,
2048− 102,46,108,101,102,116,59,10,9,9,121,32,61,32,101,46,
2049− 112,97,103,101,89,32,45,32,112,111,102,102,46,116,111,112,
2050− 59,10,9,125,10,9,116,104,105,115,46,108,97,115,116,120,
2051− 32,61,32,120,59,10,9,116,104,105,115,46,108,97,115,116,
2052− 121,32,61,32,121,59,10,125,10,10,102,117,110,99,116,105,
2053− 111,110,32,116,109,119,97,105,116,40,41,32,123,10,9,116,
2054− 104,105,115,46,111,110,109,111,117,115,101,109,111,118,101,32,
2055− 61,32,101,118,120,121,59,10,9,116,104,105,115,46,111,110,
2056− 109,111,117,115,101,100,111,119,110,32,61,32,102,117,110,99,
2057− 116,105,111,110,40,101,41,123,10,9,9,116,114,121,123,10,
2058− 9,9,9,116,104,105,115,46,101,118,120,121,40,101,41,59,
2059− 10,9,9,9,116,104,105,115,46,116,109,112,114,101,115,115,
2060− 40,101,41,59,10,9,9,125,99,97,116,99,104,40,101,120,
2061− 41,123,10,9,9,9,99,111,110,115,111,108,101,46,108,111,
2062− 103,40,34,116,109,119,97,105,116,58,32,100,111,119,110,58,
2063− 32,34,32,43,32,101,120,41,59,10,9,9,125,10,9,125,
2064− 59,10,9,116,104,105,115,46,111,110,109,111,117,115,101,117,
2065− 112,32,61,32,102,117,110,99,116,105,111,110,40,101,41,123,
2066− 10,9,9,116,114,121,123,10,9,9,9,116,104,105,115,46,
2067− 101,118,120,121,40,101,41,59,10,9,9,9,116,104,105,115,
2068− 46,116,109,114,108,115,101,40,101,41,59,10,9,9,9,105,
2069− 102,40,116,104,105,115,46,98,117,116,116,111,110,115,32,61,
2070− 61,32,48,41,123,10,9,9,9,9,116,104,105,115,46,111,
2071− 110,109,111,117,115,101,100,111,119,110,32,61,32,116,104,105,
2072− 115,46,116,109,100,111,119,110,59,10,9,9,9,9,116,104,
2073− 105,115,46,111,110,109,111,117,115,101,117,112,32,61,32,116,
2074− 104,105,115,46,116,109,117,112,59,10,9,9,9,9,116,104,
2075− 105,115,46,111,110,109,111,117,115,101,109,111,118,101,32,61,
2076− 32,116,104,105,115,46,101,118,120,121,59,10,9,9,9,125,
2077− 10,9,9,125,99,97,116,99,104,40,101,120,41,123,10,9,
2078− 9,9,99,111,110,115,111,108,101,46,108,111,103,40,34,116,
2079− 109,119,97,105,116,58,32,117,112,58,32,34,32,43,32,101,
2080− 120,41,59,10,9,9,125,10,9,125,59,10,125,10,10,102,
2081− 117,110,99,116,105,111,110,32,116,109,49,40,112,111,115,41,
2082− 32,123,10,9,118,97,114,32,110,111,119,32,61,32,110,101,
2083− 119,32,68,97,116,101,40,41,46,103,101,116,84,105,109,101,
2084− 40,41,59,10,9,105,102,40,33,116,104,105,115,46,99,108,
2085− 105,99,107,116,105,109,101,32,124,124,32,110,111,119,45,116,
2086− 104,105,115,46,99,108,105,99,107,116,105,109,101,62,53,48,
2087− 48,41,123,10,9,9,116,104,105,115,46,100,98,108,99,108,
2088− 105,99,107,32,61,32,48,59,10,9,9,116,104,105,115,46,
2089− 99,108,105,99,107,116,105,109,101,32,61,32,110,111,119,59,
2090− 10,9,125,101,108,115,101,123,10,9,9,116,104,105,115,46,
2091− 100,98,108,99,108,105,99,107,43,43,59,10,9,9,116,104,
2092− 105,115,46,99,108,105,99,107,116,105,109,101,32,61,32,110,
2093− 111,119,59,10,9,125,10,10,9,105,102,40,116,104,105,115,
2094− 46,100,98,108,99,108,105,99,107,41,123,10,9,9,118,97,
2095− 114,32,120,32,61,32,116,104,105,115,46,116,103,101,116,119,
2096− 111,114,100,40,112,111,115,41,59,10,9,9,116,104,105,115,
2097− 46,112,111,115,116,40,91,34,99,108,105,99,107,49,34,44,
2098− 32,120,91,48,93,44,32,34,34,43,120,91,49,93,44,32,
2099− 34,34,43,120,91,50,93,93,41,59,10,9,9,116,104,105,
2100− 115,46,116,115,101,116,115,101,108,40,120,91,49,93,44,32,
2101− 120,91,50,93,41,59,10,9,125,10,9,116,104,105,115,46,
2102− 111,110,109,111,117,115,101,109,111,118,101,32,61,32,102,117,
2103− 110,99,116,105,111,110,40,101,41,123,10,9,9,116,114,121,
2104− 123,10,9,9,9,116,104,105,115,46,101,118,120,121,40,101,
2105− 41,59,10,9,9,9,105,102,40,33,116,104,105,115,46,98,
2106− 117,116,116,111,110,115,41,10,9,9,9,9,114,101,116,117,
2107− 114,110,59,10,9,9,9,118,97,114,32,116,112,111,115,32,
2108− 61,32,116,104,105,115,46,112,116,114,50,116,112,111,115,40,
2109− 116,104,105,115,46,108,97,115,116,120,44,32,116,104,105,115,
2110− 46,108,97,115,116,121,41,59,10,9,9,9,118,97,114,32,
2111− 110,112,111,115,32,61,32,116,104,105,115,46,116,112,111,115,
2112− 50,112,111,115,40,116,112,111,115,91,48,93,44,32,116,112,
2113− 111,115,91,49,93,41,59,10,9,9,9,105,102,40,110,112,
2114− 111,115,32,62,32,112,111,115,41,123,10,9,9,9,9,105,
2115− 102,40,116,104,105,115,46,112,48,32,33,61,32,112,111,115,
2116− 32,124,124,32,116,104,105,115,46,112,49,32,33,61,32,110,
2117− 112,111,115,41,10,9,9,9,9,9,116,104,105,115,46,116,
2118− 115,101,116,115,101,108,40,112,111,115,44,32,110,112,111,115,
2119− 44,32,116,114,117,101,41,59,10,9,9,9,125,101,108,115,
2120− 101,123,10,9,9,9,9,105,102,40,116,104,105,115,46,112,
2121− 48,32,33,61,32,110,112,111,115,32,124,124,32,116,104,105,
2122− 115,46,112,49,32,33,61,32,112,111,115,41,10,9,9,9,
2123− 9,9,116,104,105,115,46,116,115,101,116,115,101,108,40,110,
2124− 112,111,115,44,32,112,111,115,44,32,116,114,117,101,41,59,
2125− 10,9,9,9,125,10,9,9,9,105,102,40,116,112,111,115,
2126− 91,50,93,32,60,32,48,32,38,38,32,116,104,105,115,46,
2127− 115,99,114,111,108,108,117,112,49,40,41,41,10,9,9,9,
2128− 9,116,104,105,115,46,114,101,100,114,97,119,116,101,120,116,
2129− 40,41,59,10,9,9,9,105,102,40,116,112,111,115,91,49,
2130− 93,32,62,61,32,116,104,105,115,46,102,114,108,105,110,101,
2131− 115,32,38,38,32,116,104,105,115,46,115,99,114,111,108,108,
2132− 100,111,119,110,49,40,41,41,10,9,9,9,9,116,104,105,
2133− 115,46,114,101,100,114,97,119,116,101,120,116,40,41,59,10,
2134− 9,9,9,114,101,116,117,114,110,32,102,97,108,115,101,59,
2135− 10,9,9,125,99,97,116,99,104,40,101,120,41,123,10,9,
2136− 9,9,99,111,110,115,111,108,101,46,108,111,103,40,34,116,
2137− 109,49,58,32,109,111,118,101,58,32,34,32,43,32,101,120,
2138− 41,59,10,9,9,125,10,9,125,59,10,9,116,104,105,115,
2139− 46,111,110,109,111,117,115,101,100,111,119,110,32,61,32,102,
2140− 117,110,99,116,105,111,110,40,101,41,123,10,9,9,116,114,
2141− 121,123,10,9,9,9,116,104,105,115,46,101,118,120,121,40,
2142− 101,41,59,10,9,9,9,116,104,105,115,46,116,109,112,114,
2143− 101,115,115,40,101,41,59,10,9,9,9,105,102,40,116,104,
2144− 105,115,46,110,111,101,100,105,116,115,41,32,123,10,9,9,
2145− 9,9,114,101,116,117,114,110,59,10,9,9,9,125,10,9,
2146− 9,9,105,102,40,116,104,105,115,46,98,117,116,116,111,110,
2147− 115,32,61,61,32,49,43,50,41,123,10,9,9,9,9,116,
2148− 104,105,115,46,80,111,115,116,40,91,34,101,99,117,116,34,
2149− 44,32,34,34,43,116,104,105,115,46,112,48,44,32,34,34,
2150− 43,116,104,105,115,46,112,49,93,41,59,10,9,9,9,125,
2151− 10,9,9,9,105,102,40,116,104,105,115,46,98,117,116,116,
2152− 111,110,115,32,61,61,32,49,43,52,41,123,10,9,9,9,
2153− 9,105,102,40,116,104,105,115,46,112,48,32,33,61,32,116,
2154− 104,105,115,46,112,49,41,123,10,9,9,9,9,9,116,104,
2155− 105,115,46,80,111,115,116,40,91,34,101,100,101,108,34,44,
2156− 32,34,34,43,116,104,105,115,46,112,48,44,32,34,34,43,
2157− 116,104,105,115,46,112,49,93,41,59,10,9,9,9,9,125,
2158− 10,9,9,9,9,116,104,105,115,46,112,111,115,116,40,91,
2159− 34,101,112,97,115,116,101,34,44,32,34,34,43,116,104,105,
2160− 115,46,112,48,44,32,34,34,43,116,104,105,115,46,112,49,
2161− 93,41,59,10,9,9,9,125,10,9,9,9,105,102,40,116,
2162− 104,105,115,46,98,117,116,116,111,110,115,32,61,61,32,49,
2163− 43,56,41,123,10,9,9,9,9,116,104,105,115,46,112,111,
2164− 115,116,40,91,34,101,99,111,112,121,34,44,32,34,34,43,
2165− 116,104,105,115,46,112,48,44,32,34,34,43,116,104,105,115,
2166− 46,112,49,93,41,59,10,9,9,9,125,10,9,9,125,99,
2167− 97,116,99,104,40,101,120,41,123,10,9,9,9,99,111,110,
2168− 115,111,108,101,46,108,111,103,40,34,116,109,49,58,32,100,
2169− 111,119,110,58,32,34,32,43,32,101,120,41,59,10,9,9,
2170− 125,10,9,125,59,10,10,9,116,104,105,115,46,111,110,109,
2171− 111,117,115,101,117,112,32,61,32,102,117,110,99,116,105,111,
2172− 110,40,101,41,123,10,9,9,116,114,121,123,10,9,9,9,
2173− 116,104,105,115,46,101,118,120,121,40,101,41,59,10,9,9,
2174− 9,116,104,105,115,46,116,109,114,108,115,101,40,101,41,59,
2175− 10,9,9,9,105,102,40,116,104,105,115,46,98,117,116,116,
2176− 111,110,115,32,61,61,32,48,41,123,10,9,9,9,9,116,
2177− 104,105,115,46,111,110,109,111,117,115,101,100,111,119,110,32,
2178− 61,32,116,104,105,115,46,116,109,100,111,119,110,59,10,9,
2179− 9,9,9,116,104,105,115,46,111,110,109,111,117,115,101,117,
2180− 112,32,61,32,116,104,105,115,46,116,109,117,112,59,10,9,
2181− 9,9,9,116,104,105,115,46,111,110,109,111,117,115,101,109,
2182− 111,118,101,32,61,32,116,104,105,115,46,101,118,120,121,59,
2183− 10,9,9,9,9,116,104,105,115,46,112,111,115,116,40,91,
2184− 34,102,111,99,117,115,34,93,41,59,10,9,9,9,9,116,
2185− 104,105,115,46,115,101,108,101,99,116,101,110,100,40,41,59,
2186− 10,9,9,9,9,105,102,40,100,111,99,117,109,101,110,116,
2187− 46,115,101,116,102,111,99,117,115,41,32,123,10,9,9,9,
2188− 9,9,100,111,99,117,109,101,110,116,46,115,101,116,102,111,
2189− 99,117,115,40,116,104,105,115,41,59,10,9,9,9,9,125,
2190− 10,9,9,9,125,10,9,9,125,99,97,116,99,104,40,101,
2191− 120,41,123,10,9,9,9,99,111,110,115,111,108,101,46,108,
2192− 111,103,40,34,116,109,49,58,32,117,112,58,32,34,32,43,
2193− 32,101,120,41,59,10,9,9,125,10,9,125,10,125,10,10,
2194− 102,117,110,99,116,105,111,110,32,116,109,50,51,52,40,112,
2195− 111,115,44,32,98,41,32,123,10,9,116,104,105,115,46,115,
2196− 101,99,111,110,100,97,114,121,32,61,32,98,59,10,9,116,
2197− 104,105,115,46,111,110,109,111,117,115,101,109,111,118,101,32,
2198− 61,32,102,117,110,99,116,105,111,110,40,101,41,123,10,9,
2199− 9,116,114,121,123,10,9,9,9,116,104,105,115,46,101,118,
2200− 120,121,40,101,41,59,10,9,9,9,105,102,40,33,116,104,
2201− 105,115,46,98,117,116,116,111,110,115,41,10,9,9,9,9,
2202− 114,101,116,117,114,110,59,10,9,9,9,118,97,114,32,116,
2203− 112,111,115,32,61,32,116,104,105,115,46,112,116,114,50,116,
2204− 112,111,115,40,116,104,105,115,46,108,97,115,116,120,44,32,
2205− 116,104,105,115,46,108,97,115,116,121,41,59,10,9,9,9,
2206− 118,97,114,32,110,112,111,115,32,61,32,116,104,105,115,46,
2207− 116,112,111,115,50,112,111,115,40,116,112,111,115,91,48,93,
2208− 44,32,116,112,111,115,91,49,93,41,59,10,9,9,9,105,
2209− 102,40,110,112,111,115,32,62,32,112,111,115,41,123,10,9,
2210− 9,9,9,105,102,40,116,104,105,115,46,112,48,32,33,61,
2211− 32,112,111,115,32,124,124,32,116,104,105,115,46,112,49,32,
2212− 33,61,32,110,112,111,115,41,10,9,9,9,9,9,116,104,
2213− 105,115,46,116,115,101,116,115,101,108,40,112,111,115,44,32,
2214− 110,112,111,115,44,32,116,114,117,101,41,59,10,9,9,9,
2215− 125,101,108,115,101,10,9,9,9,9,105,102,40,116,104,105,
2216− 115,46,112,48,32,33,61,32,110,112,111,115,32,124,124,32,
2217− 116,104,105,115,46,112,49,32,33,61,32,112,111,115,41,10,
2218− 9,9,9,9,9,116,104,105,115,46,116,115,101,116,115,101,
2219− 108,40,110,112,111,115,44,32,112,111,115,44,32,116,114,117,
2220− 101,41,59,10,9,9,9,105,102,40,116,112,111,115,91,50,
2221− 93,32,60,32,48,32,38,38,32,116,104,105,115,46,115,99,
2222− 114,111,108,108,117,112,49,40,41,41,10,9,9,9,9,116,
2223− 104,105,115,46,114,101,100,114,97,119,116,101,120,116,40,41,
2224− 59,10,9,9,9,105,102,40,116,112,111,115,91,49,93,32,
2225− 62,61,32,116,104,105,115,46,102,114,108,105,110,101,115,32,
2226− 38,38,32,116,104,105,115,46,115,99,114,111,108,108,100,111,
2227− 119,110,49,40,41,41,10,9,9,9,9,116,104,105,115,46,
2228− 114,101,100,114,97,119,116,101,120,116,40,41,59,10,9,9,
2229− 9,114,101,116,117,114,110,32,102,97,108,115,101,59,10,9,
1328+ 32,116,104,105,115,46,109,97,114,107,105,110,115,100,97,116,
1329+ 97,46,108,101,110,103,116,104,59,32,105,43,43,41,32,123,
1330+ 10,9,9,9,9,118,97,114,32,100,97,116,97,32,61,32,
1331+ 116,104,105,115,46,109,97,114,107,105,110,115,100,97,116,97,
1332+ 91,105,93,59,10,9,9,9,9,118,97,114,32,110,108,101,
1333+ 110,32,61,32,100,97,116,97,46,108,101,110,103,116,104,59,
1334+ 10,9,9,9,9,118,97,114,32,110,112,111,115,32,61,32,
1335+ 109,46,112,111,115,32,43,32,110,108,101,110,59,10,9,9,
1336+ 9,9,118,97,114,32,111,112,111,115,32,61,32,109,46,112,
1337+ 111,115,59,10,9,9,9,9,111,112,48,32,61,32,116,104,
1338+ 105,115,46,112,48,59,10,9,9,9,9,111,112,49,32,61,
1339+ 32,116,104,105,115,46,112,49,59,10,9,9,9,9,116,104,
1340+ 105,115,46,112,48,32,61,32,109,46,112,111,115,59,10,9,
1341+ 9,9,9,116,104,105,115,46,112,49,32,61,32,109,46,112,
1342+ 111,115,59,10,9,9,9,9,116,104,105,115,46,105,110,115,
1343+ 40,100,97,116,97,44,32,116,114,117,101,41,59,10,9,9,
1344+ 9,9,109,46,112,111,115,32,61,32,110,112,111,115,59,10,
1345+ 9,9,9,9,105,102,40,111,112,48,32,62,32,111,112,111,
1346+ 115,41,10,9,9,9,9,9,111,112,48,32,43,61,32,110,
1347+ 108,101,110,59,10,9,9,9,9,105,102,40,111,112,49,32,
1348+ 62,32,111,112,111,115,41,10,9,9,9,9,9,111,112,49,
1349+ 32,43,61,32,110,108,101,110,59,10,9,9,9,9,116,104,
1350+ 105,115,46,112,48,32,61,32,111,112,48,59,10,9,9,9,
1351+ 9,116,104,105,115,46,112,49,32,61,32,111,112,49,59,10,
1352+ 9,9,9,9,105,102,40,101,118,46,86,101,114,115,41,32,
1353+ 123,10,9,9,9,9,9,116,104,105,115,46,118,101,114,115,
1354+ 32,61,32,101,118,46,86,101,114,115,59,10,9,9,9,9,
1355+ 125,10,9,9,9,125,10,9,9,9,116,104,105,115,46,115,
1356+ 101,116,115,101,108,40,111,112,48,44,32,111,112,49,44,32,
1357+ 102,97,108,115,101,41,59,10,9,9,9,100,101,108,101,116,
1358+ 101,32,116,104,105,115,46,109,97,114,107,105,110,115,100,97,
1359+ 116,97,59,10,9,9,9,105,102,40,33,116,104,105,115,46,
1360+ 117,115,101,114,114,101,115,105,122,101,100,41,32,123,10,9,
1361+ 9,9,9,116,104,105,115,46,97,117,116,111,114,101,115,105,
1362+ 122,101,40,41,59,10,9,9,9,125,32,10,9,9,9,99,
1363+ 111,110,115,111,108,101,46,108,111,103,40,116,104,105,115,46,
1364+ 105,100,44,32,34,109,97,114,107,105,110,115,32,100,111,110,
1365+ 101,34,41,59,10,9,9,9,98,114,101,97,107,59,10,9,
1366+ 9,99,97,115,101,32,34,101,105,110,115,105,110,103,34,58,
1367+ 10,9,9,9,105,102,40,97,114,103,46,108,101,110,103,116,
1368+ 104,32,60,32,50,41,123,10,9,9,9,9,99,111,110,115,
1369+ 111,108,101,46,108,111,103,40,116,104,105,115,46,100,105,118,
1370+ 105,100,44,32,34,97,112,112,108,121,58,32,115,104,111,114,
1371+ 116,32,101,105,110,115,105,110,103,34,41,59,10,9,9,9,
1372+ 9,98,114,101,97,107,59,10,9,9,9,125,10,9,9,9,
1373+ 105,102,32,40,33,116,104,105,115,46,101,105,110,115,100,97,
1374+ 116,97,41,32,123,10,9,9,9,9,99,111,110,115,111,108,
1375+ 101,46,108,111,103,40,34,101,105,110,115,32,101,118,115,46,
1376+ 46,46,34,41,59,10,9,9,9,9,116,104,105,115,46,101,
1377+ 105,110,115,100,97,116,97,32,61,32,91,93,59,10,9,9,
1378+ 9,125,10,9,9,9,116,104,105,115,46,101,105,110,115,100,
1379+ 97,116,97,46,112,117,115,104,40,97,114,103,91,49,93,41,
1380+ 59,10,9,9,9,98,114,101,97,107,59,10,9,9,99,97,
1381+ 115,101,32,34,101,105,110,115,100,111,110,101,34,58,10,9,
1382+ 9,9,99,111,110,115,111,108,101,46,108,111,103,40,116,104,
1383+ 105,115,46,105,100,44,32,34,101,105,110,115,32,114,117,110,
1384+ 46,46,46,34,41,59,10,9,9,9,105,102,40,97,114,103,
1385+ 46,108,101,110,103,116,104,32,60,32,50,41,123,10,9,9,
1386+ 9,9,99,111,110,115,111,108,101,46,108,111,103,40,116,104,
1387+ 105,115,46,105,100,44,32,34,97,112,112,108,121,58,32,115,
1388+ 104,111,114,116,32,105,110,115,34,41,59,10,9,9,9,9,
1389+ 98,114,101,97,107,59,10,9,9,9,125,10,9,9,9,105,
1390+ 102,40,101,118,46,86,101,114,115,32,38,38,32,102,114,111,
1391+ 109,115,101,114,118,101,114,32,38,38,32,101,118,46,86,101,
1392+ 114,115,32,33,61,32,116,104,105,115,46,118,101,114,115,43,
1393+ 49,41,123,10,9,9,9,9,99,111,110,115,111,108,101,46,
1394+ 108,111,103,40,34,79,85,84,32,79,70,32,83,89,78,67,
1395+ 34,44,32,101,118,46,65,114,103,115,44,32,34,118,34,44,
1396+ 32,101,118,46,86,101,114,115,44,32,116,104,105,115,46,118,
1397+ 101,114,115,41,59,10,9,9,9,9,116,104,105,115,46,112,
1398+ 111,115,116,40,91,34,110,101,101,100,114,101,108,111,97,100,
1399+ 34,93,41,59,10,9,9,9,9,100,101,108,101,116,101,32,
1400+ 116,104,105,115,46,101,105,110,115,100,97,116,97,59,10,9,
1401+ 9,9,9,98,114,101,97,107,59,10,9,9,9,125,10,9,
1402+ 9,9,118,97,114,32,112,48,32,61,32,112,97,114,115,101,
1403+ 73,110,116,40,97,114,103,91,49,93,41,59,10,9,9,9,
1404+ 118,97,114,32,111,112,48,32,61,32,116,104,105,115,46,112,
1405+ 48,59,10,9,9,9,118,97,114,32,111,112,49,32,61,32,
1406+ 116,104,105,115,46,112,49,59,10,9,9,9,105,102,40,111,
1407+ 112,48,32,33,61,32,111,112,49,41,32,123,10,9,9,9,
1408+ 9,116,104,105,115,46,115,101,116,115,101,108,40,111,112,48,
1409+ 44,32,111,112,48,44,32,102,97,108,115,101,41,59,10,9,
1410+ 9,9,125,10,9,9,9,116,104,105,115,46,112,48,32,61,
1411+ 32,112,48,59,10,9,9,9,116,104,105,115,46,112,49,32,
1412+ 61,32,112,48,59,10,9,9,9,102,111,114,40,118,97,114,
1413+ 32,105,32,61,32,48,59,32,105,32,60,32,116,104,105,115,
1414+ 46,101,105,110,115,100,97,116,97,46,108,101,110,103,116,104,
1415+ 59,32,105,43,43,41,32,123,10,9,9,9,9,118,97,114,
1416+ 32,100,97,116,97,32,61,32,116,104,105,115,46,101,105,110,
1417+ 115,100,97,116,97,91,105,93,59,10,9,9,9,9,116,104,
1418+ 105,115,46,105,110,115,40,100,97,116,97,44,32,102,97,108,
1419+ 115,101,41,59,10,9,9,9,9,105,102,40,111,112,48,32,
1420+ 62,32,112,48,41,10,9,9,9,9,9,111,112,48,32,43,
1421+ 61,32,100,97,116,97,46,108,101,110,103,116,104,59,10,9,
1422+ 9,9,9,105,102,40,111,112,49,32,62,32,112,48,41,10,
1423+ 9,9,9,9,9,111,112,49,32,43,61,32,100,97,116,97,
1424+ 46,108,101,110,103,116,104,59,10,9,9,9,125,10,9,9,
1425+ 9,100,101,108,101,116,101,32,116,104,105,115,46,101,105,110,
1426+ 115,100,97,116,97,59,10,9,9,9,116,104,105,115,46,115,
1427+ 101,116,115,101,108,40,111,112,48,44,32,111,112,49,44,32,
1428+ 102,97,108,115,101,41,59,10,9,9,9,105,102,40,101,118,
1429+ 46,86,101,114,115,41,32,123,10,9,9,9,9,116,104,105,
1430+ 115,46,118,101,114,115,32,61,32,101,118,46,86,101,114,115,
1431+ 59,10,9,9,9,125,10,9,9,9,105,102,40,33,116,104,
1432+ 105,115,46,117,115,101,114,114,101,115,105,122,101,100,41,32,
1433+ 123,10,9,9,9,9,116,104,105,115,46,97,117,116,111,114,
1434+ 101,115,105,122,101,40,41,59,10,9,9,9,125,32,10,9,
1435+ 9,9,99,111,110,115,111,108,101,46,108,111,103,40,116,104,
1436+ 105,115,46,105,100,44,32,34,101,105,110,115,32,100,111,110,
1437+ 101,34,41,59,10,9,9,9,98,114,101,97,107,59,10,9,
1438+ 9,99,97,115,101,32,34,101,105,110,115,34,58,10,9,9,
1439+ 9,105,102,40,97,114,103,46,108,101,110,103,116,104,32,60,
1440+ 32,51,41,123,10,9,9,9,9,99,111,110,115,111,108,101,
1441+ 46,108,111,103,40,116,104,105,115,46,105,100,44,32,34,97,
1442+ 112,112,108,121,58,32,115,104,111,114,116,32,105,110,115,34,
1443+ 41,59,10,9,9,9,9,98,114,101,97,107,59,10,9,9,
1444+ 9,125,10,9,9,9,105,102,40,101,118,46,86,101,114,115,
1445+ 32,38,38,32,102,114,111,109,115,101,114,118,101,114,32,38,
1446+ 38,32,101,118,46,86,101,114,115,32,33,61,32,116,104,105,
1447+ 115,46,118,101,114,115,43,49,41,123,10,9,9,9,9,99,
1448+ 111,110,115,111,108,101,46,108,111,103,40,34,79,85,84,32,
1449+ 79,70,32,83,89,78,67,34,44,32,101,118,46,65,114,103,
1450+ 115,44,32,34,118,34,44,32,101,118,46,86,101,114,115,44,
1451+ 32,116,104,105,115,46,118,101,114,115,41,59,10,9,9,9,
1452+ 9,116,104,105,115,46,112,111,115,116,40,91,34,110,101,101,
1453+ 100,114,101,108,111,97,100,34,93,41,59,10,9,9,9,9,
1454+ 98,114,101,97,107,59,10,9,9,9,125,10,9,9,9,118,
1455+ 97,114,32,112,48,32,61,32,112,97,114,115,101,73,110,116,
1456+ 40,97,114,103,91,50,93,41,59,10,9,9,9,118,97,114,
1457+ 32,111,112,48,32,61,32,116,104,105,115,46,112,48,59,10,
1458+ 9,9,9,118,97,114,32,111,112,49,32,61,32,116,104,105,
1459+ 115,46,112,49,59,10,9,9,9,105,102,40,111,112,48,32,
1460+ 33,61,32,111,112,49,41,32,123,10,9,9,9,9,116,104,
1461+ 105,115,46,115,101,116,115,101,108,40,111,112,48,44,32,111,
1462+ 112,48,41,59,10,9,9,9,125,10,9,9,9,116,104,105,
1463+ 115,46,112,48,32,61,32,112,48,59,10,9,9,9,116,104,
1464+ 105,115,46,112,49,32,61,32,112,48,59,10,9,9,9,116,
1465+ 104,105,115,46,105,110,115,40,97,114,103,91,49,93,44,32,
1466+ 102,97,108,115,101,41,59,10,9,9,9,105,102,40,111,112,
1467+ 48,32,62,32,112,48,41,10,9,9,9,9,111,112,48,32,
1468+ 43,61,32,97,114,103,91,49,93,46,108,101,110,103,116,104,
1469+ 59,10,9,9,9,105,102,40,111,112,49,32,62,32,112,48,
1470+ 41,10,9,9,9,9,111,112,49,32,43,61,32,97,114,103,
1471+ 91,49,93,46,108,101,110,103,116,104,59,10,9,9,9,105,
1472+ 102,40,102,114,111,109,115,101,114,118,101,114,41,32,123,10,
1473+ 9,9,9,9,116,104,105,115,46,115,101,116,115,101,108,40,
1474+ 111,112,48,44,32,111,112,49,44,32,102,97,108,115,101,41,
1475+ 59,10,9,9,9,125,10,9,9,9,105,102,40,101,118,46,
1476+ 86,101,114,115,41,32,123,10,9,9,9,9,116,104,105,115,
1477+ 46,118,101,114,115,32,61,32,101,118,46,86,101,114,115,59,
1478+ 10,9,9,9,125,10,9,9,9,105,102,40,33,116,104,105,
1479+ 115,46,117,115,101,114,114,101,115,105,122,101,100,32,38,38,
1480+ 32,97,114,103,91,49,93,46,105,110,100,101,120,79,102,40,
1481+ 39,92,110,39,41,32,62,61,32,48,41,32,123,10,9,9,
1482+ 9,9,116,104,105,115,46,97,117,116,111,114,101,115,105,122,
1483+ 101,40,41,59,10,9,9,9,125,32,10,9,9,9,98,114,
1484+ 101,97,107,59,10,9,9,99,97,115,101,32,34,101,100,101,
1485+ 108,34,58,10,9,9,9,105,102,40,97,114,103,46,108,101,
1486+ 110,103,116,104,32,60,32,51,41,123,10,9,9,9,9,99,
1487+ 111,110,115,111,108,101,46,108,111,103,40,116,104,105,115,46,
1488+ 105,100,44,32,34,97,112,112,108,121,58,32,115,104,111,114,
1489+ 116,32,100,101,108,34,41,59,10,9,9,9,9,98,114,101,
1490+ 97,107,59,10,9,9,9,125,10,9,9,9,105,102,40,101,
1491+ 118,46,86,101,114,115,32,38,38,32,102,114,111,109,115,101,
1492+ 114,118,101,114,32,38,38,32,101,118,46,86,101,114,115,32,
1493+ 33,61,32,116,104,105,115,46,118,101,114,115,43,49,41,123,
1494+ 10,9,9,9,9,99,111,110,115,111,108,101,46,108,111,103,
1495+ 40,34,79,85,84,32,79,70,32,83,89,78,67,34,44,32,
1496+ 101,118,46,65,114,103,115,44,32,34,118,34,44,32,101,118,
1497+ 46,86,101,114,115,44,32,116,104,105,115,46,118,101,114,115,
1498+ 41,59,10,9,9,9,9,116,104,105,115,46,112,111,115,116,
1499+ 40,91,34,110,101,101,100,114,101,108,111,97,100,34,93,41,
1500+ 59,10,9,9,9,125,10,9,9,9,118,97,114,32,112,48,
1501+ 32,61,32,112,97,114,115,101,73,110,116,40,97,114,103,91,
1502+ 49,93,41,59,10,9,9,9,118,97,114,32,112,49,32,61,
1503+ 32,112,97,114,115,101,73,110,116,40,97,114,103,91,50,93,
1504+ 41,59,10,9,9,9,118,97,114,32,111,112,48,32,61,32,
1505+ 116,104,105,115,46,112,48,59,10,9,9,9,118,97,114,32,
1506+ 111,112,49,32,61,32,116,104,105,115,46,112,49,59,10,9,
1507+ 9,9,116,104,105,115,46,112,48,32,61,32,112,48,59,10,
1508+ 9,9,9,116,104,105,115,46,112,49,32,61,32,112,49,59,
1509+ 10,9,9,9,116,114,121,123,10,9,9,9,9,116,104,105,
1510+ 115,46,100,101,108,40,102,97,108,115,101,41,59,10,9,9,
22301511 9,125,99,97,116,99,104,40,101,120,41,123,10,9,9,9,
2231− 99,111,110,115,111,108,101,46,108,111,103,40,34,116,109,49,
2232− 58,32,109,111,118,101,58,32,34,32,43,32,101,120,41,59,
2233− 10,9,9,125,10,9,125,59,10,9,116,104,105,115,46,111,
2234− 110,109,111,117,115,101,100,111,119,110,32,61,32,102,117,110,
2235− 99,116,105,111,110,40,101,41,123,10,9,9,116,114,121,123,
2236− 10,9,9,9,116,104,105,115,46,101,118,120,121,40,101,41,
2237− 59,10,9,9,9,116,104,105,115,46,116,109,112,114,101,115,
2238− 115,40,101,41,59,10,9,9,9,116,104,105,115,46,115,101,
2239− 99,111,110,100,97,114,121,97,98,111,114,116,32,61,32,116,
2240− 114,117,101,59,10,9,9,125,99,97,116,99,104,40,101,120,
2241− 41,123,10,9,9,9,99,111,110,115,111,108,101,46,108,111,
2242− 103,40,34,116,109,50,58,32,100,111,119,110,58,32,34,32,
2243− 43,32,101,120,41,59,10,9,9,125,10,9,125,59,10,9,
2244− 116,104,105,115,46,111,110,109,111,117,115,101,117,112,32,61,
2245− 32,102,117,110,99,116,105,111,110,40,101,41,123,10,9,9,
2246− 116,114,121,123,10,9,9,9,116,104,105,115,46,101,118,120,
2247− 121,40,101,41,59,10,9,9,9,116,104,105,115,46,116,109,
2248− 114,108,115,101,40,101,41,59,10,9,9,9,105,102,40,116,
2249− 104,105,115,46,98,117,116,116,111,110,115,32,61,61,32,48,
2250− 41,123,10,9,9,9,9,118,97,114,32,115,112,48,32,61,
2251− 32,116,104,105,115,46,112,48,59,10,9,9,9,9,118,97,
2252− 114,32,115,112,49,32,61,32,116,104,105,115,46,112,49,59,
2253− 10,9,9,9,9,118,97,114,32,120,108,110,32,61,32,116,
2254− 104,105,115,46,108,105,110,101,115,91,116,104,105,115,46,108,
2255− 105,110,101,115,46,108,101,110,103,116,104,45,49,93,59,10,
2256− 9,9,9,9,118,97,114,32,116,115,105,122,101,32,61,32,
2257− 48,59,10,9,9,9,9,105,102,40,120,108,110,32,38,38,
2258− 32,120,108,110,46,116,120,116,46,108,101,110,103,116,104,32,
2259− 61,61,32,48,41,123,10,9,9,9,9,9,116,115,105,122,
2260− 101,32,61,32,120,108,110,46,111,102,102,59,10,9,9,9,
2261− 9,125,10,9,9,9,9,116,104,105,115,46,115,101,99,111,
2262− 110,100,97,114,121,32,61,32,48,59,10,9,9,9,9,116,
2263− 104,105,115,46,116,115,101,116,115,101,108,40,116,104,105,115,
2264− 46,111,108,100,112,48,44,32,116,104,105,115,46,111,108,100,
2265− 112,49,41,59,10,9,9,9,9,99,111,110,115,111,108,101,
2266− 46,108,111,103,40,34,115,112,48,32,34,32,43,32,115,112,
2267− 48,32,43,32,34,32,34,32,43,32,115,112,49,32,43,32,
2268− 34,32,34,32,43,32,116,115,105,122,101,41,59,10,9,9,
2269− 9,9,105,102,40,33,116,104,105,115,46,115,101,99,111,110,
2270− 100,97,114,121,97,98,111,114,116,41,10,9,9,9,9,105,
2271− 102,40,115,112,48,32,33,61,32,115,112,49,41,123,10,9,
2272− 9,9,9,9,118,97,114,32,116,120,116,32,61,32,116,104,
2273− 105,115,46,116,103,101,116,40,115,112,48,44,32,115,112,49,
2274− 41,59,10,9,9,9,9,9,116,104,105,115,46,112,111,115,
2275− 116,40,91,34,99,108,105,99,107,34,43,98,44,32,34,34,
2276− 44,32,34,34,43,115,112,48,44,32,34,34,43,115,112,49,
2277− 44,32,116,120,116,93,41,59,10,9,9,9,9,125,101,108,
2278− 115,101,32,105,102,40,116,104,105,115,46,112,48,32,33,61,
2279− 32,116,104,105,115,46,112,49,32,38,38,10,9,9,9,9,
2280− 9,32,115,112,48,32,62,61,32,116,104,105,115,46,112,48,
2281− 32,38,38,32,115,112,48,32,60,61,32,116,104,105,115,46,
2282− 112,49,41,123,10,9,9,9,9,9,118,97,114,32,116,120,
2283− 116,32,61,32,116,104,105,115,46,116,103,101,116,40,116,104,
2284− 105,115,46,112,48,44,32,116,104,105,115,46,112,49,41,59,
2285− 10,9,9,9,9,9,116,104,105,115,46,112,111,115,116,40,
2286− 91,34,99,108,105,99,107,34,43,98,44,32,116,120,116,44,
2287− 10,9,9,9,9,9,9,32,32,34,34,43,116,104,105,115,
2288− 46,112,48,44,32,34,34,43,116,104,105,115,46,112,49,93,
2289− 41,59,10,9,9,9,9,125,101,108,115,101,32,105,102,40,
2290− 98,32,33,61,32,49,32,38,38,32,115,112,48,32,61,61,
2291− 32,115,112,49,32,38,38,32,116,115,105,122,101,32,38,38,
2292− 10,9,9,9,9,9,115,112,48,32,61,61,32,116,115,105,
2293− 122,101,32,38,38,32,115,112,48,62,48,41,32,123,10,9,
2294− 9,9,9,9,47,47,32,97,32,99,108,105,99,107,32,97,
2295− 116,32,97,32,102,105,110,97,108,32,101,109,112,116,121,32,
2296− 108,105,110,101,32,115,101,108,101,99,116,115,32,116,104,101,
2297− 32,112,114,101,118,105,111,117,115,10,9,9,9,9,9,47,
2298− 47,32,108,105,110,101,32,40,119,104,105,99,104,32,105,115,
2299− 32,116,104,101,32,108,97,115,116,32,111,110,101,32,115,104,
2300− 111,119,110,41,46,10,9,9,9,9,9,118,97,114,32,120,
2301− 32,61,32,116,104,105,115,46,116,103,101,116,119,111,114,100,
2302− 40,115,112,48,45,49,44,32,98,32,33,61,32,56,41,59,
2303− 10,9,9,9,9,9,116,104,105,115,46,112,111,115,116,40,
2304− 91,34,99,108,105,99,107,34,43,98,44,32,120,91,48,93,
2305− 44,10,9,9,9,9,9,9,32,32,34,34,43,120,91,49,
2306− 93,44,32,34,34,43,120,91,50,93,93,41,59,10,9,9,
2307− 9,9,125,101,108,115,101,32,123,10,9,9,9,9,9,118,
2308− 97,114,32,120,32,61,32,116,104,105,115,46,116,103,101,116,
2309− 119,111,114,100,40,115,112,48,44,32,98,32,33,61,32,56,
2310− 41,59,10,9,9,9,9,9,116,104,105,115,46,112,111,115,
2311− 116,40,91,34,99,108,105,99,107,34,43,98,44,32,120,91,
2312− 48,93,44,10,9,9,9,9,9,9,32,32,34,34,43,120,
2313− 91,49,93,44,32,34,34,43,120,91,50,93,93,41,59,10,
2314− 9,9,9,9,125,10,9,9,9,9,116,104,105,115,46,111,
2315− 110,109,111,117,115,101,100,111,119,110,32,61,32,116,104,105,
2316− 115,46,116,109,100,111,119,110,59,10,9,9,9,9,116,104,
2317− 105,115,46,111,110,109,111,117,115,101,117,112,32,61,32,116,
2318− 104,105,115,46,116,109,117,112,59,10,9,9,9,9,116,104,
2319− 105,115,46,111,110,109,111,117,115,101,109,111,118,101,32,61,
2320− 32,116,104,105,115,46,101,118,120,121,59,10,9,9,9,125,
2321− 10,9,9,125,99,97,116,99,104,40,101,120,41,123,10,9,
2322− 9,9,99,111,110,115,111,108,101,46,108,111,103,40,34,116,
2323− 109,50,58,32,117,112,58,32,34,32,43,32,101,120,41,59,
2324− 10,9,9,125,10,9,9,105,102,40,116,104,105,115,46,98,
2325− 117,116,116,111,110,115,32,61,61,32,48,41,123,10,9,9,
2326− 9,116,104,105,115,46,112,48,32,61,32,116,104,105,115,46,
2327− 111,108,100,112,48,59,10,9,9,9,116,104,105,115,46,112,
2328− 49,32,61,32,116,104,105,115,46,111,108,100,112,49,59,10,
2329− 9,9,9,116,104,105,115,46,115,101,99,111,110,100,97,114,
2330− 121,32,61,32,48,59,10,9,9,9,116,104,105,115,46,115,
2331− 101,99,111,110,100,97,114,121,97,98,111,114,116,32,61,32,
2332− 102,97,108,115,101,59,10,9,9,9,116,104,105,115,46,115,
2333− 101,108,101,99,116,101,110,100,40,41,59,10,9,9,125,10,
2334− 9,125,10,125,10,10,102,117,110,99,116,105,111,110,32,116,
2335− 109,117,112,40,101,41,32,123,10,9,101,46,112,114,101,118,
2336− 101,110,116,68,101,102,97,117,108,116,40,41,59,10,9,116,
2337− 114,121,32,123,10,9,9,116,104,105,115,46,116,109,114,108,
2338− 115,101,40,101,41,59,10,9,9,116,104,105,115,46,101,118,
2339− 120,121,40,101,41,59,10,9,9,105,102,40,116,104,105,115,
2340− 46,98,117,116,116,111,110,115,32,61,61,32,48,41,123,10,
2341− 9,9,9,116,104,105,115,46,115,101,108,101,99,116,101,110,
2342− 100,40,41,59,10,9,9,125,10,9,125,99,97,116,99,104,
2343− 40,101,120,41,123,10,9,9,99,111,110,115,111,108,101,46,
2344− 108,111,103,40,34,116,101,118,109,117,112,58,32,34,32,43,
2345− 32,101,120,41,59,10,9,125,10,125,10,10,102,117,110,99,
2346− 116,105,111,110,32,116,109,119,104,101,101,108,40,101,41,32,
2347− 123,10,9,116,114,121,32,123,10,9,9,101,46,112,114,101,
2348− 118,101,110,116,68,101,102,97,117,108,116,40,41,59,10,9,
2349− 9,118,97,114,32,100,32,61,32,101,46,119,104,101,101,108,
2350− 68,101,108,116,97,59,10,9,9,118,97,114,32,115,32,61,
2351− 32,49,59,10,9,9,105,102,40,100,32,60,32,48,41,123,
2352− 10,9,9,9,100,32,61,32,45,100,59,10,9,9,9,100,
2353− 32,61,32,49,32,43,32,77,97,116,104,46,102,108,111,111,
2354− 114,40,100,47,49,48,41,59,10,9,9,9,105,102,40,116,
2355− 104,105,115,46,115,99,114,111,108,108,100,111,119,110,40,100,
2356− 41,41,123,10,9,9,9,9,116,104,105,115,46,117,110,116,
2357− 105,99,107,40,41,59,10,9,9,9,9,116,104,105,115,46,
2358− 114,101,100,114,97,119,116,101,120,116,40,41,59,10,9,9,
2359− 9,125,10,9,9,125,101,108,115,101,123,10,9,9,9,100,
2360− 32,61,32,49,32,43,32,77,97,116,104,46,102,108,111,111,
2361− 114,40,100,47,49,48,41,59,10,9,9,9,105,102,40,116,
2362− 104,105,115,46,115,99,114,111,108,108,117,112,40,100,41,41,
2363− 123,10,9,9,9,9,116,104,105,115,46,117,110,116,105,99,
2364− 107,40,41,59,10,9,9,9,9,116,104,105,115,46,114,101,
2365− 100,114,97,119,116,101,120,116,40,41,59,10,9,9,9,125,
2366− 10,9,9,125,10,9,125,99,97,116,99,104,40,101,120,41,
2367− 123,10,9,9,99,111,110,115,111,108,101,46,108,111,103,40,
2368− 34,116,109,119,104,101,101,108,58,32,34,32,43,32,101,120,
2369− 41,59,10,9,125,10,125,10,10,102,117,110,99,116,105,111,
2370− 110,32,116,109,100,111,119,110,40,101,41,32,123,10,9,105,
2371− 102,40,48,41,99,111,110,115,111,108,101,46,108,111,103,40,
2372− 34,116,109,100,111,119,110,32,34,44,32,116,104,105,115,46,
2373− 100,105,118,105,100,44,32,101,41,59,10,9,116,104,105,115,
2374− 46,115,101,108,101,99,116,115,116,97,114,116,40,41,59,10,
2375− 9,101,46,112,114,101,118,101,110,116,68,101,102,97,117,108,
2376− 116,40,41,59,10,9,116,104,105,115,46,115,101,99,111,110,
2377− 100,97,114,121,32,61,32,48,59,9,9,47,42,32,112,97,
2378− 114,97,110,111,105,97,58,32,115,101,101,32,116,109,50,51,
2379− 52,32,42,47,10,9,116,104,105,115,46,115,101,99,111,110,
2380− 100,97,114,121,97,98,111,114,116,32,61,32,102,97,108,115,
2381− 101,59,10,9,116,114,121,32,123,10,9,9,116,104,105,115,
2382− 46,116,109,112,114,101,115,115,40,101,41,59,10,9,9,116,
2383− 104,105,115,46,101,118,120,121,40,101,41,59,10,9,9,118,
2384− 97,114,32,98,32,61,32,116,104,105,115,46,98,117,116,116,
2385− 111,110,115,59,10,9,9,115,119,105,116,99,104,40,98,41,
2386− 123,10,9,9,99,97,115,101,32,49,58,10,9,9,9,118,
2387− 97,114,32,116,112,111,115,32,61,32,116,104,105,115,46,112,
2388− 116,114,50,116,112,111,115,40,116,104,105,115,46,108,97,115,
2389− 116,120,44,32,116,104,105,115,46,108,97,115,116,121,41,59,
2390− 10,9,9,9,118,97,114,32,112,111,115,32,61,32,116,104,
2391− 105,115,46,116,112,111,115,50,112,111,115,40,116,112,111,115,
2392− 91,48,93,44,32,116,112,111,115,91,49,93,41,59,10,9,
2393− 9,9,116,104,105,115,46,116,115,101,116,115,101,108,40,112,
2394− 111,115,44,32,112,111,115,41,59,10,9,9,9,116,104,105,
2395− 115,46,116,109,49,40,112,111,115,41,59,10,9,9,9,98,
2396− 114,101,97,107,59,10,9,9,99,97,115,101,32,50,58,10,
2397− 9,9,99,97,115,101,32,52,58,10,9,9,99,97,115,101,
2398− 32,56,58,10,9,9,9,118,97,114,32,116,112,111,115,32,
2399− 61,32,116,104,105,115,46,112,116,114,50,116,112,111,115,40,
2400− 116,104,105,115,46,108,97,115,116,120,44,32,116,104,105,115,
2401− 46,108,97,115,116,121,41,59,10,9,9,9,118,97,114,32,
2402− 112,111,115,32,61,32,116,104,105,115,46,116,112,111,115,50,
2403− 112,111,115,40,116,112,111,115,91,48,93,44,32,116,112,111,
2404− 115,91,49,93,41,59,10,9,9,9,116,104,105,115,46,111,
2405− 108,100,112,48,32,61,32,116,104,105,115,46,112,48,59,10,
2406− 9,9,9,116,104,105,115,46,111,108,100,112,49,32,61,32,
2407− 116,104,105,115,46,112,49,59,10,9,9,9,116,104,105,115,
2408− 46,116,115,101,116,115,101,108,40,112,111,115,44,32,112,111,
2409− 115,41,59,10,9,9,9,116,104,105,115,46,116,109,50,51,
2410− 52,40,112,111,115,44,32,98,41,59,10,9,9,9,98,114,
2411− 101,97,107,59,10,9,9,100,101,102,97,117,108,116,58,10,
2412− 9,9,9,116,104,105,115,46,116,109,119,97,105,116,40,41,
2413− 59,10,9,9,125,10,9,125,99,97,116,99,104,40,101,120,
2414− 41,123,10,9,9,99,111,110,115,111,108,101,46,108,111,103,
2415− 40,34,101,118,109,100,111,119,110,58,32,34,32,43,32,101,
2416− 120,41,59,10,9,125,10,9,101,46,114,101,116,117,114,110,
2417− 86,97,108,117,101,32,61,32,102,97,108,115,101,59,10,125,
2418− 10,10,102,117,110,99,116,105,111,110,32,116,107,101,121,100,
2419− 111,119,110,40,101,44,32,100,101,102,101,114,114,101,100,41,
2420− 32,123,10,9,116,114,121,123,10,9,9,118,97,114,32,107,
1512+ 9,99,111,110,115,111,108,101,46,108,111,103,40,116,104,105,
1513+ 115,46,100,105,118,105,100,44,32,34,97,112,112,108,121,58,
1514+ 32,100,101,108,58,32,34,32,43,32,101,120,41,59,10,9,
1515+ 9,9,125,10,9,9,9,111,112,48,32,61,32,97,100,106,
1516+ 100,101,108,40,111,112,48,44,32,112,48,44,32,112,49,41,
1517+ 59,10,9,9,9,111,112,49,32,61,32,97,100,106,100,101,
1518+ 108,40,111,112,49,44,32,112,48,44,32,112,49,41,59,10,
1519+ 9,9,9,105,102,40,102,114,111,109,115,101,114,118,101,114,
1520+ 41,32,123,10,9,9,9,9,116,104,105,115,46,115,101,116,
1521+ 115,101,108,40,111,112,48,44,32,111,112,49,44,32,102,97,
1522+ 108,115,101,41,59,10,9,9,9,125,10,9,9,9,105,102,
1523+ 40,101,118,46,86,101,114,115,41,32,123,10,9,9,9,9,
1524+ 116,104,105,115,46,118,101,114,115,32,61,32,101,118,46,86,
1525+ 101,114,115,59,10,9,9,9,125,10,9,9,9,98,114,101,
1526+ 97,107,59,10,9,9,99,97,115,101,32,34,101,99,117,116,
1527+ 34,58,10,9,9,9,116,114,121,123,10,9,9,9,9,116,
1528+ 104,105,115,46,100,101,108,40,102,97,108,115,101,41,59,10,
1529+ 9,9,9,125,99,97,116,99,104,40,101,120,41,123,10,9,
1530+ 9,9,9,99,111,110,115,111,108,101,46,108,111,103,40,116,
1531+ 104,105,115,46,105,100,44,32,34,97,112,112,108,121,58,32,
1532+ 99,117,116,58,32,34,32,43,32,101,120,41,59,10,9,9,
1533+ 9,125,10,9,9,9,105,102,40,101,118,46,86,101,114,115,
1534+ 41,10,9,9,9,9,116,104,105,115,46,118,101,114,115,32,
1535+ 61,32,101,118,46,86,101,114,115,59,10,9,9,9,98,114,
1536+ 101,97,107,59,10,9,9,99,97,115,101,32,34,114,101,108,
1537+ 111,97,100,34,58,10,9,9,9,116,104,105,115,46,114,101,
1538+ 108,111,97,100,108,110,48,32,61,32,116,104,105,115,46,108,
1539+ 110,48,46,108,110,105,59,10,9,9,9,116,104,105,115,46,
1540+ 99,108,101,97,114,40,41,59,10,9,9,9,98,114,101,97,
1541+ 107,59,10,9,9,99,97,115,101,32,34,114,101,108,111,97,
1542+ 100,105,110,103,34,58,10,9,9,9,105,102,40,97,114,103,
1543+ 46,108,101,110,103,116,104,32,60,32,50,41,123,10,9,9,
1544+ 9,9,99,111,110,115,111,108,101,46,108,111,103,40,116,104,
1545+ 105,115,46,105,100,44,32,34,97,112,112,108,121,58,32,115,
1546+ 104,111,114,116,32,114,101,108,111,97,100,105,110,103,34,41,
1547+ 59,10,9,9,9,9,98,114,101,97,107,59,10,9,9,9,
1548+ 125,10,9,9,9,118,97,114,32,110,108,110,32,61,32,110,
1549+ 101,119,32,76,105,110,101,40,48,44,32,48,44,32,97,114,
1550+ 103,91,49,93,44,32,116,114,117,101,41,59,10,9,9,9,
1551+ 116,104,105,115,46,97,100,100,108,110,40,110,108,110,41,59,
1552+ 10,9,9,9,98,114,101,97,107,10,9,9,99,97,115,101,
1553+ 32,34,114,101,108,111,97,100,101,100,34,58,10,9,9,9,
1554+ 105,102,40,97,114,103,46,108,101,110,103,116,104,32,60,32,
1555+ 50,41,123,10,9,9,9,9,99,111,110,115,111,108,101,46,
1556+ 108,111,103,40,116,104,105,115,46,105,100,44,32,34,97,112,
1557+ 112,108,121,58,32,115,104,111,114,116,32,114,101,108,111,97,
1558+ 100,101,100,34,41,59,10,9,9,9,9,98,114,101,97,107,
1559+ 59,10,9,9,9,125,10,9,9,9,116,104,105,115,46,118,
1560+ 101,114,115,32,61,32,112,97,114,115,101,73,110,116,40,97,
1561+ 114,103,91,49,93,41,59,10,9,9,9,105,102,40,116,104,
1562+ 105,115,46,114,101,108,111,97,100,108,110,48,41,32,123,10,
1563+ 9,9,9,9,116,104,105,115,46,108,110,48,32,61,32,116,
1564+ 104,105,115,46,115,101,101,107,108,110,40,116,104,105,115,46,
1565+ 114,101,108,111,97,100,108,110,48,41,59,10,9,9,9,9,
1566+ 116,104,105,115,46,114,101,108,111,97,100,108,110,48,32,61,
1567+ 32,48,59,10,9,9,9,125,10,9,9,9,116,104,105,115,
1568+ 46,114,101,100,114,97,119,116,101,120,116,40,41,59,10,9,
1569+ 9,9,105,102,40,33,116,104,105,115,46,117,115,101,114,114,
1570+ 101,115,105,122,101,100,41,32,123,10,9,9,9,9,116,104,
1571+ 105,115,46,97,117,116,111,114,101,115,105,122,101,40,41,59,
1572+ 10,9,9,9,125,10,9,9,9,47,47,32,116,104,105,115,
1573+ 46,100,117,109,112,40,41,59,10,9,9,9,98,114,101,97,
1574+ 107,59,10,9,9,99,97,115,101,32,34,109,97,114,107,34,
1575+ 58,10,9,9,9,105,102,40,97,114,103,46,108,101,110,103,
1576+ 116,104,32,60,32,51,41,123,10,9,9,9,9,99,111,110,
1577+ 115,111,108,101,46,108,111,103,40,116,104,105,115,46,105,100,
1578+ 44,32,34,97,112,112,108,121,58,32,115,104,111,114,116,32,
1579+ 109,97,114,107,34,41,59,10,9,9,9,9,98,114,101,97,
1580+ 107,59,10,9,9,9,125,10,9,9,9,118,97,114,32,112,
1581+ 111,115,32,61,32,112,97,114,115,101,73,110,116,40,97,114,
1582+ 103,91,50,93,41,59,10,9,9,9,116,104,105,115,46,115,
1583+ 101,116,109,97,114,107,40,97,114,103,91,49,93,44,32,112,
1584+ 111,115,41,59,10,9,9,9,98,114,101,97,107,59,10,9,
1585+ 9,99,97,115,101,32,34,115,101,108,34,58,10,9,9,9,
1586+ 105,102,40,97,114,103,46,108,101,110,103,116,104,32,60,32,
1587+ 51,41,123,10,9,9,9,9,99,111,110,115,111,108,101,46,
1588+ 108,111,103,40,116,104,105,115,46,105,100,44,32,34,97,112,
1589+ 112,108,121,58,32,115,104,111,114,116,32,115,101,108,34,41,
1590+ 59,10,9,9,9,9,98,114,101,97,107,59,10,9,9,9,
1591+ 125,10,9,9,9,118,97,114,32,112,111,115,48,32,61,32,
1592+ 112,97,114,115,101,73,110,116,40,97,114,103,91,49,93,41,
1593+ 59,10,9,9,9,118,97,114,32,112,111,115,49,32,61,32,
1594+ 112,97,114,115,101,73,110,116,40,97,114,103,91,50,93,41,
1595+ 59,10,9,9,9,116,104,105,115,46,115,101,116,109,97,114,
1596+ 107,40,34,112,48,34,44,32,112,111,115,48,41,59,10,9,
1597+ 9,9,116,104,105,115,46,115,101,116,109,97,114,107,40,34,
1598+ 112,49,34,44,32,112,111,115,49,41,59,10,9,9,9,116,
1599+ 104,105,115,46,115,101,116,115,101,108,40,112,111,115,48,44,
1600+ 32,112,111,115,49,44,32,116,114,117,101,41,59,10,9,9,
1601+ 9,116,104,105,115,46,118,105,101,119,115,101,108,40,41,59,
1602+ 10,9,9,9,99,111,110,115,111,108,101,46,108,111,103,40,
1603+ 34,115,101,116,115,101,108,34,44,32,112,111,115,48,44,32,
1604+ 112,111,115,49,41,59,10,9,9,9,98,114,101,97,107,59,
1605+ 10,9,9,99,97,115,101,32,34,100,101,108,109,97,114,107,
1606+ 34,58,10,9,9,9,105,102,40,97,114,103,46,108,101,110,
1607+ 103,116,104,32,60,32,50,41,123,10,9,9,9,9,99,111,
1608+ 110,115,111,108,101,46,108,111,103,40,116,104,105,115,46,100,
1609+ 105,118,105,100,44,32,34,97,112,112,108,121,58,32,115,104,
1610+ 111,114,116,32,100,101,108,109,97,114,107,34,41,59,10,9,
1611+ 9,9,9,98,114,101,97,107,59,10,9,9,9,125,10,9,
1612+ 9,9,116,104,105,115,46,100,101,108,109,97,114,107,40,97,
1613+ 114,103,91,49,93,41,59,10,9,9,9,98,114,101,97,107,
1614+ 59,10,9,9,99,97,115,101,32,34,99,108,111,115,101,34,
1615+ 58,10,9,9,9,116,104,105,115,46,119,115,46,99,108,111,
1616+ 115,101,40,41,59,10,9,9,9,36,40,34,35,34,43,116,
1617+ 104,105,115,46,105,100,41,46,114,101,109,111,118,101,40,41,
1618+ 59,10,9,9,9,98,114,101,97,107,59,10,9,9,100,101,
1619+ 102,97,117,108,116,58,10,9,9,9,99,111,110,115,111,108,
1620+ 101,46,108,111,103,40,34,116,101,120,116,58,32,117,110,104,
1621+ 97,110,100,108,101,100,34,44,32,97,114,103,91,48,93,41,
1622+ 59,10,9,9,125,10,9,125,59,10,10,9,116,104,105,115,
1623+ 46,80,111,115,116,32,61,32,102,117,110,99,116,105,111,110,
1624+ 40,101,41,32,123,10,9,9,118,97,114,32,101,118,32,61,
1625+ 32,116,104,105,115,46,112,111,115,116,40,101,41,59,10,9,
1626+ 9,105,102,40,101,118,41,123,10,9,9,9,116,114,121,32,
1627+ 123,10,9,9,9,9,116,104,105,115,46,97,112,112,108,121,
1628+ 40,101,118,41,59,10,9,9,9,125,99,97,116,99,104,40,
1629+ 101,120,41,123,10,9,9,9,9,99,111,110,115,111,108,101,
1630+ 46,108,111,103,40,34,116,120,116,32,97,112,112,108,121,58,
1631+ 32,34,32,43,32,101,120,41,59,10,9,9,9,125,10,9,
1632+ 9,125,10,9,125,59,10,10,9,47,47,32,79,110,108,121,
1633+ 32,116,104,101,32,102,114,97,109,101,32,119,105,116,104,32,
1634+ 116,104,101,32,108,111,99,107,32,109,97,121,32,99,104,97,
1635+ 110,103,101,32,116,104,101,32,116,101,120,116,44,10,9,47,
1636+ 47,32,119,101,32,114,101,112,108,97,99,101,32,116,104,101,
1637+ 32,104,97,110,100,108,101,114,115,32,116,111,32,103,97,105,
1638+ 110,32,116,104,101,32,108,111,99,107,32,98,101,102,111,114,
1639+ 101,32,97,99,116,117,97,108,108,121,10,9,47,47,32,100,
1640+ 111,105,110,103,32,97,110,121,116,104,105,110,103,46,10,10,
1641+ 9,116,104,105,115,46,116,107,101,121,100,111,119,110,32,61,
1642+ 32,102,117,110,99,116,105,111,110,40,101,44,32,100,101,102,
1643+ 101,114,114,101,100,41,32,123,10,9,9,118,97,114,32,107,
24211644 101,121,32,61,32,101,46,107,101,121,67,111,100,101,59,10,
24221645 9,9,105,102,40,33,101,46,107,101,121,67,111,100,101,41,
24231646 10,9,9,9,107,101,121,32,61,32,101,46,119,104,105,99,
@@ -2426,172 +1649,125 @@ var Files = map[string][]byte{ · 2 unmodified lines
24261649 111,100,101,40,101,46,107,101,121,67,111,100,101,41,59,10,
24271650 9,9,101,46,115,116,111,112,80,114,111,112,97,103,97,116,
24281651 105,111,110,40,41,59,10,9,9,105,102,40,116,100,101,98,
2429− 117,103,41,99,111,110,115,111,108,101,46,108,111,103,40,34,
2430− 107,101,121,100,111,119,110,32,119,104,105,99,104,32,34,32,
2431− 43,32,101,46,119,104,105,99,104,32,43,32,34,32,107,101,
2432− 121,32,34,32,43,32,101,46,107,101,121,67,111,100,101,32,
2433− 43,10,9,9,9,34,32,39,34,32,43,32,114,117,110,101,
2434− 32,43,32,34,39,34,32,43,10,9,9,9,34,32,34,32,
2435− 43,32,101,46,99,116,114,108,75,101,121,32,43,32,34,32,
2436− 34,32,43,32,101,46,109,101,116,97,75,101,121,41,59,10,
2437− 9,10,9,9,115,119,105,116,99,104,40,107,101,121,41,123,
2438− 10,9,9,99,97,115,101,32,50,55,58,9,47,42,32,101,
2439− 115,99,97,112,101,32,42,47,10,9,9,9,105,102,40,100,
2440− 101,102,101,114,114,101,100,41,10,9,9,9,9,98,114,101,
2441− 97,107,59,10,9,9,9,116,104,105,115,46,112,111,115,116,
2442− 40,91,34,105,110,116,114,34,44,32,34,101,115,99,34,93,
2443− 41,59,10,9,9,9,116,104,105,115,46,100,117,109,112,40,
2444− 41,59,10,9,9,9,99,111,110,115,111,108,101,46,108,111,
2445− 103,40,34,91,34,43,116,104,105,115,46,112,48,43,34,44,
2446− 34,43,116,104,105,115,46,112,49,43,34,93,61,39,34,32,
2447− 43,10,9,9,9,9,116,104,105,115,46,116,103,101,116,40,
2448− 116,104,105,115,46,112,48,44,32,116,104,105,115,46,112,49,
2449− 41,32,43,32,34,39,34,41,59,10,9,9,9,98,114,101,
2450− 97,107,59,10,9,9,99,97,115,101,32,56,58,9,9,47,
2451− 42,32,98,97,99,107,115,112,97,99,101,32,42,47,10,9,
2452− 9,9,105,102,40,116,104,105,115,46,110,111,101,100,105,116,
2453− 115,41,32,123,10,9,9,9,9,114,101,116,117,114,110,59,
2454− 10,9,9,9,125,10,9,9,9,105,102,40,100,101,102,101,
2455− 114,114,101,100,41,10,9,9,9,9,98,114,101,97,107,59,
2456− 10,9,9,9,105,102,40,116,104,105,115,46,112,48,32,33,
2457− 61,32,116,104,105,115,46,112,49,41,123,10,9,9,9,9,
2458− 116,104,105,115,46,80,111,115,116,40,91,34,101,100,101,108,
2459− 34,44,32,34,34,43,116,104,105,115,46,112,48,44,32,34,
2460− 34,43,116,104,105,115,46,112,49,93,41,59,10,9,9,9,
2461− 125,101,108,115,101,32,105,102,40,116,104,105,115,46,112,48,
2462− 32,62,32,48,41,123,10,9,9,9,9,118,97,114,32,112,
2463− 48,32,61,32,116,104,105,115,46,112,48,45,49,59,10,9,
2464− 9,9,9,116,104,105,115,46,80,111,115,116,40,91,34,101,
2465− 100,101,108,34,44,32,34,34,43,112,48,44,32,34,34,43,
2466− 116,104,105,115,46,112,49,93,41,59,10,9,9,9,125,10,
1652+ 117,103,41,32,123,10,9,9,9,99,111,110,115,111,108,101,
1653+ 46,108,111,103,40,34,107,101,121,100,111,119,110,32,119,104,
1654+ 105,99,104,32,34,32,43,32,101,46,119,104,105,99,104,32,
1655+ 43,32,34,32,107,101,121,32,34,32,43,32,101,46,107,101,
1656+ 121,67,111,100,101,32,43,10,9,9,9,9,34,32,39,34,
1657+ 32,43,32,114,117,110,101,32,43,32,34,39,34,32,43,10,
1658+ 9,9,9,9,34,32,34,32,43,32,101,46,99,116,114,108,
1659+ 75,101,121,32,43,32,34,32,34,32,43,32,101,46,109,101,
1660+ 116,97,75,101,121,41,59,10,9,9,125,10,9,9,115,119,
1661+ 105,116,99,104,40,107,101,121,41,123,10,9,9,99,97,115,
1662+ 101,32,50,55,58,9,47,42,32,101,115,99,97,112,101,32,
1663+ 42,47,10,9,9,9,105,102,40,100,101,102,101,114,114,101,
1664+ 100,41,32,123,10,9,9,9,9,98,114,101,97,107,59,10,
1665+ 9,9,9,125,10,9,9,9,116,104,105,115,46,112,111,115,
1666+ 116,40,91,34,105,110,116,114,34,44,32,34,101,115,99,34,
1667+ 93,41,59,10,9,9,9,116,104,105,115,46,100,117,109,112,
1668+ 40,41,59,10,9,9,9,99,111,110,115,111,108,101,46,108,
1669+ 111,103,40,34,115,101,108,32,61,32,91,34,43,116,104,105,
1670+ 115,46,112,48,43,34,44,34,43,116,104,105,115,46,112,49,
1671+ 43,34,93,32,61,32,39,34,32,43,10,9,9,9,9,116,
1672+ 104,105,115,46,103,101,116,40,116,104,105,115,46,112,48,44,
1673+ 32,116,104,105,115,46,112,49,41,32,43,32,34,39,34,41,
1674+ 59,10,9,9,9,98,114,101,97,107,59,10,9,9,99,97,
1675+ 115,101,32,56,58,9,9,47,42,32,98,97,99,107,115,112,
1676+ 97,99,101,32,42,47,10,9,9,9,105,102,40,116,104,105,
1677+ 115,46,110,111,101,100,105,116,115,41,32,123,10,9,9,9,
1678+ 9,114,101,116,117,114,110,59,10,9,9,9,125,10,9,9,
1679+ 9,105,102,40,100,101,102,101,114,114,101,100,41,32,123,10,
1680+ 9,9,9,9,98,114,101,97,107,59,10,9,9,9,125,10,
1681+ 9,9,9,105,102,40,116,104,105,115,46,112,48,32,33,61,
1682+ 32,116,104,105,115,46,112,49,41,123,10,9,9,9,9,116,
1683+ 104,105,115,46,80,111,115,116,40,91,34,101,100,101,108,34,
1684+ 44,32,34,34,43,116,104,105,115,46,112,48,44,32,34,34,
1685+ 43,116,104,105,115,46,112,49,93,41,59,10,9,9,9,125,
1686+ 101,108,115,101,32,105,102,40,116,104,105,115,46,112,48,32,
1687+ 62,32,48,41,123,10,9,9,9,9,118,97,114,32,112,48,
1688+ 32,61,32,116,104,105,115,46,112,48,45,49,59,10,9,9,
1689+ 9,9,116,104,105,115,46,80,111,115,116,40,91,34,101,100,
1690+ 101,108,34,44,32,34,34,43,112,48,44,32,34,34,43,116,
1691+ 104,105,115,46,112,49,93,41,59,10,9,9,9,125,10,9,
1692+ 9,9,98,114,101,97,107,59,10,9,9,99,97,115,101,32,
1693+ 57,58,9,9,47,42,32,116,97,98,32,42,47,10,9,9,
1694+ 9,105,102,40,116,104,105,115,46,110,111,101,100,105,116,115,
1695+ 41,32,123,10,9,9,9,9,114,101,116,117,114,110,59,10,
1696+ 9,9,9,125,10,9,9,9,105,102,40,100,101,102,101,114,
1697+ 114,101,100,41,32,123,10,9,9,9,9,98,114,101,97,107,
1698+ 59,10,9,9,9,125,10,9,9,9,105,102,40,116,104,105,
1699+ 115,46,112,48,32,33,61,32,116,104,105,115,46,112,49,41,
1700+ 123,10,9,9,9,9,116,104,105,115,46,80,111,115,116,40,
1701+ 91,34,101,100,101,108,34,44,32,34,34,43,116,104,105,115,
1702+ 46,112,48,44,32,34,34,43,116,104,105,115,46,112,49,93,
1703+ 41,59,10,9,9,9,125,10,9,9,9,116,104,105,115,46,
1704+ 80,111,115,116,40,91,34,101,105,110,115,34,44,32,34,92,
1705+ 116,34,44,32,34,34,43,116,104,105,115,46,112,48,93,41,
1706+ 59,10,9,9,9,98,114,101,97,107,59,10,9,9,99,97,
1707+ 115,101,32,51,50,58,9,47,42,32,115,112,97,99,101,32,
1708+ 42,47,10,9,9,9,105,102,40,100,101,102,101,114,114,101,
1709+ 100,41,32,123,10,9,9,9,9,98,114,101,97,107,59,10,
1710+ 9,9,9,125,10,9,9,9,116,104,105,115,46,80,111,115,
1711+ 116,40,91,34,101,105,110,115,34,44,32,34,32,34,44,32,
1712+ 34,34,43,116,104,105,115,46,112,48,93,41,59,10,9,9,
1713+ 9,98,114,101,97,107,59,10,9,9,99,97,115,101,32,51,
1714+ 55,58,9,47,42,32,108,101,102,116,32,42,47,10,9,9,
1715+ 9,105,102,40,116,104,105,115,46,110,111,101,100,105,116,115,
1716+ 41,32,123,10,9,9,9,9,114,101,116,117,114,110,59,10,
1717+ 9,9,9,125,10,9,9,9,105,102,40,100,101,102,101,114,
1718+ 114,101,100,41,32,123,10,9,9,9,9,98,114,101,97,107,
1719+ 59,10,9,9,9,125,10,9,9,9,116,104,105,115,46,112,
1720+ 111,115,116,40,91,34,101,117,110,100,111,34,93,41,59,10,
24671721 9,9,9,98,114,101,97,107,59,10,9,9,99,97,115,101,
2468− 32,57,58,9,9,47,42,32,116,97,98,32,42,47,10,9,
1722+ 32,51,56,58,9,47,42,32,117,112,32,42,47,10,9,9,
1723+ 9,105,102,40,100,101,102,101,114,114,101,100,41,32,123,10,
1724+ 9,9,9,9,98,114,101,97,107,59,10,9,9,9,125,10,
1725+ 9,9,9,118,97,114,32,110,32,61,32,77,97,116,104,46,
1726+ 102,108,111,111,114,40,116,104,105,115,46,102,114,108,105,110,
1727+ 101,115,47,52,41,59,10,9,9,9,105,102,40,110,32,60,
1728+ 32,49,41,32,123,10,9,9,9,9,110,32,61,32,49,59,
1729+ 10,9,9,9,125,10,9,9,9,105,102,40,116,104,105,115,
1730+ 46,115,99,114,111,108,108,117,112,40,110,41,41,123,10,9,
1731+ 9,9,9,116,104,105,115,46,117,110,116,105,99,107,40,41,
1732+ 59,10,9,9,9,9,116,104,105,115,46,114,101,100,114,97,
1733+ 119,116,101,120,116,40,41,59,10,9,9,9,125,10,9,9,
1734+ 9,98,114,101,97,107,59,10,9,9,99,97,115,101,32,51,
1735+ 57,58,9,47,42,32,114,105,103,104,116,32,42,47,10,9,
24691736 9,9,105,102,40,116,104,105,115,46,110,111,101,100,105,116,
24701737 115,41,32,123,10,9,9,9,9,114,101,116,117,114,110,59,
24711738 10,9,9,9,125,10,9,9,9,105,102,40,100,101,102,101,
2472− 114,114,101,100,41,10,9,9,9,9,98,114,101,97,107,59,
2473− 10,9,9,9,105,102,40,116,104,105,115,46,112,48,32,33,
2474− 61,32,116,104,105,115,46,112,49,41,123,10,9,9,9,9,
2475− 116,104,105,115,46,80,111,115,116,40,91,34,101,100,101,108,
2476− 34,44,32,34,34,43,116,104,105,115,46,112,48,44,32,34,
2477− 34,43,116,104,105,115,46,112,49,93,41,59,10,9,9,9,
2478− 125,10,9,9,9,116,104,105,115,46,80,111,115,116,40,91,
2479− 34,101,105,110,115,34,44,32,34,92,116,34,44,32,34,34,
2480− 43,116,104,105,115,46,112,48,93,41,59,10,9,9,9,98,
2481− 114,101,97,107,59,10,9,9,99,97,115,101,32,51,50,58,
2482− 9,47,42,32,115,112,97,99,101,32,42,47,10,9,9,9,
2483− 105,102,40,100,101,102,101,114,114,101,100,41,10,9,9,9,
2484− 9,98,114,101,97,107,59,10,9,9,9,116,104,105,115,46,
2485− 80,111,115,116,40,91,34,101,105,110,115,34,44,32,34,32,
2486− 34,44,32,34,34,43,116,104,105,115,46,112,48,93,41,59,
2487− 10,9,9,9,98,114,101,97,107,59,10,9,9,99,97,115,
2488− 101,32,51,55,58,9,47,42,32,108,101,102,116,32,42,47,
2489− 10,9,9,9,105,102,40,116,104,105,115,46,110,111,101,100,
2490− 105,116,115,41,32,123,10,9,9,9,9,114,101,116,117,114,
2491− 110,59,10,9,9,9,125,10,9,9,9,116,104,105,115,46,
2492− 112,111,115,116,40,91,34,101,117,110,100,111,34,93,41,59,
2493− 10,9,9,9,98,114,101,97,107,59,10,9,9,99,97,115,
2494− 101,32,51,56,58,9,47,42,32,117,112,32,42,47,10,9,
2495− 9,9,105,102,40,100,101,102,101,114,114,101,100,41,10,9,
2496− 9,9,9,98,114,101,97,107,59,10,9,9,9,118,97,114,
2497− 32,110,32,61,32,77,97,116,104,46,102,108,111,111,114,40,
2498− 116,104,105,115,46,102,114,108,105,110,101,115,47,52,41,59,
2499− 10,9,9,9,105,102,40,110,32,60,32,49,41,32,123,10,
2500− 9,9,9,9,110,32,61,32,49,59,10,9,9,9,125,10,
2501− 9,9,9,105,102,40,116,104,105,115,46,115,99,114,111,108,
2502− 108,117,112,40,110,41,41,123,10,9,9,9,9,116,104,105,
2503− 115,46,117,110,116,105,99,107,40,41,59,10,9,9,9,9,
2504− 116,104,105,115,46,114,101,100,114,97,119,116,101,120,116,40,
2505− 41,59,10,9,9,9,125,10,9,9,9,98,114,101,97,107,
2506− 59,10,9,9,99,97,115,101,32,51,57,58,9,47,42,32,
2507− 114,105,103,104,116,32,42,47,10,9,9,9,105,102,40,116,
2508− 104,105,115,46,110,111,101,100,105,116,115,41,32,123,10,9,
2509− 9,9,9,114,101,116,117,114,110,59,10,9,9,9,125,10,
2510− 9,9,9,105,102,40,100,101,102,101,114,114,101,100,41,10,
2511− 9,9,9,9,98,114,101,97,107,59,10,9,9,9,116,104,
2512− 105,115,46,112,111,115,116,40,91,34,101,114,101,100,111,34,
2513− 93,41,59,10,9,9,9,98,114,101,97,107,59,10,9,9,
2514− 99,97,115,101,32,52,48,58,9,47,42,32,100,111,119,110,
2515− 32,42,47,10,9,9,9,105,102,40,100,101,102,101,114,114,
2516− 101,100,41,10,9,9,9,9,98,114,101,97,107,59,10,9,
2517− 9,9,116,104,105,115,46,117,110,116,105,99,107,40,41,59,
2518− 10,9,9,9,118,97,114,32,110,32,61,32,77,97,116,104,
2519− 46,102,108,111,111,114,40,116,104,105,115,46,102,114,108,105,
2520− 110,101,115,47,52,41,59,10,9,9,9,105,102,40,110,32,
2521− 60,32,49,41,32,123,10,9,9,9,9,110,32,61,32,49,
2522− 59,10,9,9,9,125,10,9,9,9,105,102,40,116,104,105,
2523− 115,46,115,99,114,111,108,108,100,111,119,110,40,110,41,41,
2524− 123,10,9,9,9,9,116,104,105,115,46,117,110,116,105,99,
2525− 107,40,41,59,10,9,9,9,9,116,104,105,115,46,114,101,
2526− 100,114,97,119,116,101,120,116,40,41,59,10,9,9,9,125,
1739+ 114,114,101,100,41,32,123,10,9,9,9,9,98,114,101,97,
1740+ 107,59,10,9,9,9,125,10,9,9,9,116,104,105,115,46,
1741+ 112,111,115,116,40,91,34,101,114,101,100,111,34,93,41,59,
25271742 10,9,9,9,98,114,101,97,107,59,10,9,9,99,97,115,
2528− 101,32,52,54,58,9,47,42,32,100,101,108,101,116,101,32,
2529− 42,47,10,9,9,9,105,102,40,100,101,102,101,114,114,101,
2530− 100,41,10,9,9,9,9,98,114,101,97,107,59,10,9,9,
2531− 9,116,104,105,115,46,112,111,115,116,40,91,34,105,110,116,
2532− 114,34,44,32,34,100,101,108,34,93,41,59,10,9,9,9,
2533− 98,114,101,97,107,59,10,9,9,99,97,115,101,32,49,49,
2534− 50,58,9,47,42,32,70,49,32,42,47,10,9,9,99,97,
2535− 115,101,32,49,49,51,58,9,47,42,32,70,50,32,42,47,
2536− 10,9,9,99,97,115,101,32,49,49,52,58,9,47,42,32,
2537− 70,51,32,42,47,10,9,9,99,97,115,101,32,49,49,53,
2538− 58,9,47,42,32,70,52,32,42,47,10,9,9,9,105,102,
2539− 40,100,101,102,101,114,114,101,100,41,10,9,9,9,9,98,
2540− 114,101,97,107,59,10,9,9,9,118,97,114,32,109,101,118,
2541− 32,61,32,123,10,9,9,9,9,102,97,107,101,120,58,32,
2542− 116,104,105,115,46,108,97,115,116,120,44,10,9,9,9,9,
2543− 102,97,107,101,121,58,32,116,104,105,115,46,108,97,115,116,
2544− 121,44,10,9,9,9,9,119,104,105,99,104,58,32,107,101,
2545− 121,45,49,49,50,43,49,44,10,9,9,9,125,59,10,9,
2546− 9,9,109,101,118,46,112,114,101,118,101,110,116,68,101,102,
2547− 97,117,108,116,32,61,32,102,117,110,99,116,105,111,110,40,
2548− 41,123,125,10,9,9,9,116,104,105,115,46,111,110,109,111,
2549− 117,115,101,100,111,119,110,40,109,101,118,41,59,10,9,9,
2550− 9,98,114,101,97,107,59,10,9,9,99,97,115,101,32,49,
2551− 50,51,58,9,47,42,32,70,49,50,32,42,47,10,9,9,
2552− 9,116,100,101,98,117,103,32,61,32,33,116,100,101,98,117,
2553− 103,59,10,9,9,9,98,114,101,97,107,59,10,9,9,100,
2554− 101,102,97,117,108,116,58,10,9,9,9,114,101,116,117,114,
2555− 110,32,116,114,117,101,59,10,9,9,125,10,9,9,114,101,
2556− 116,117,114,110,32,102,97,108,115,101,59,10,9,125,99,97,
2557− 116,99,104,40,101,120,41,123,10,9,9,99,111,110,115,111,
2558− 108,101,46,108,111,103,40,34,107,101,121,100,111,119,110,58,
2559− 32,34,32,43,32,101,120,41,59,10,9,125,10,125,10,10,
2560− 102,117,110,99,116,105,111,110,32,116,107,101,121,117,112,40,
2561− 101,44,32,100,101,102,101,114,114,101,100,41,32,123,10,9,
2562− 116,114,121,123,10,9,9,118,97,114,32,107,101,121,32,61,
2563− 32,101,46,107,101,121,67,111,100,101,59,10,9,9,105,102,
2564− 40,33,101,46,107,101,121,67,111,100,101,41,10,9,9,9,
2565− 107,101,121,32,61,32,101,46,119,104,105,99,104,59,10,9,
2566− 9,118,97,114,32,114,117,110,101,32,61,32,83,116,114,105,
2567− 110,103,46,102,114,111,109,67,104,97,114,67,111,100,101,40,
2568− 101,46,107,101,121,67,111,100,101,41,59,10,9,9,118,97,
2569− 114,32,105,115,100,101,97,100,107,101,121,32,61,32,101,32,
2570− 38,38,32,101,46,111,114,105,103,105,110,97,108,69,118,101,
2571− 110,116,32,38,38,32,101,46,111,114,105,103,105,110,97,108,
2572− 69,118,101,110,116,46,107,101,121,73,100,101,110,116,105,102,
2573− 105,101,114,32,61,61,32,34,85,110,105,100,101,110,116,105,
2574− 102,105,101,100,34,59,10,9,9,105,102,40,116,100,101,98,
2575− 117,103,41,32,123,10,9,9,9,118,97,114,32,100,115,32,
2576− 61,32,40,105,115,100,101,97,100,107,101,121,32,63,32,34,
2577− 32,100,101,97,100,34,32,58,32,34,34,41,59,10,9,9,
2578− 9,99,111,110,115,111,108,101,46,108,111,103,40,34,107,101,
2579− 121,117,112,32,119,104,105,99,104,32,34,32,43,32,101,46,
2580− 119,104,105,99,104,32,43,32,34,32,107,101,121,32,34,32,
2581− 43,32,101,46,107,101,121,67,111,100,101,32,43,10,9,9,
2582− 9,9,34,32,39,34,32,43,32,114,117,110,101,32,43,32,
2583− 34,39,34,32,43,32,100,115,32,43,10,9,9,9,9,34,
2584− 32,34,32,43,32,101,46,99,116,114,108,75,101,121,32,43,
2585− 32,34,32,34,32,43,32,101,46,109,101,116,97,75,101,121,
2586− 44,32,101,41,59,10,9,9,125,10,9,9,115,119,105,116,
2587− 99,104,40,107,101,121,41,123,10,9,9,99,97,115,101,32,
2588− 49,49,50,58,9,47,42,32,70,49,32,42,47,10,9,9,
2589− 99,97,115,101,32,49,49,51,58,9,47,42,32,70,50,32,
2590− 42,47,10,9,9,99,97,115,101,32,49,49,52,58,9,47,
2591− 42,32,70,51,32,42,47,10,9,9,99,97,115,101,32,49,
2592− 49,53,58,9,47,42,32,70,52,32,42,47,10,9,9,9,
2593− 105,102,40,100,101,102,101,114,114,101,100,41,10,9,9,9,
2594− 9,98,114,101,97,107,59,10,9,9,9,118,97,114,32,109,
1743+ 101,32,52,48,58,9,47,42,32,100,111,119,110,32,42,47,
1744+ 10,9,9,9,105,102,40,100,101,102,101,114,114,101,100,41,
1745+ 32,123,10,9,9,9,9,98,114,101,97,107,59,10,9,9,
1746+ 9,125,10,9,9,9,116,104,105,115,46,117,110,116,105,99,
1747+ 107,40,41,59,10,9,9,9,118,97,114,32,110,32,61,32,
1748+ 77,97,116,104,46,102,108,111,111,114,40,116,104,105,115,46,
1749+ 102,114,108,105,110,101,115,47,52,41,59,10,9,9,9,105,
1750+ 102,40,110,32,60,32,49,41,32,123,10,9,9,9,9,110,
1751+ 32,61,32,49,59,10,9,9,9,125,10,9,9,9,105,102,
1752+ 40,116,104,105,115,46,115,99,114,111,108,108,100,111,119,110,
1753+ 40,110,41,41,123,10,9,9,9,9,116,104,105,115,46,117,
1754+ 110,116,105,99,107,40,41,59,10,9,9,9,9,116,104,105,
1755+ 115,46,114,101,100,114,97,119,116,101,120,116,40,41,59,10,
1756+ 9,9,9,125,10,9,9,9,98,114,101,97,107,59,10,9,
1757+ 9,99,97,115,101,32,52,54,58,9,47,42,32,100,101,108,
1758+ 101,116,101,32,42,47,10,9,9,9,105,102,40,100,101,102,
1759+ 101,114,114,101,100,41,32,123,10,9,9,9,9,98,114,101,
1760+ 97,107,59,10,9,9,9,125,10,9,9,9,116,104,105,115,
1761+ 46,112,111,115,116,40,91,34,105,110,116,114,34,44,32,34,
1762+ 100,101,108,34,93,41,59,10,9,9,9,98,114,101,97,107,
1763+ 59,10,9,9,99,97,115,101,32,49,49,50,58,9,47,42,
1764+ 32,70,49,32,42,47,10,9,9,99,97,115,101,32,49,49,
1765+ 51,58,9,47,42,32,70,50,32,42,47,10,9,9,99,97,
1766+ 115,101,32,49,49,52,58,9,47,42,32,70,51,32,42,47,
1767+ 10,9,9,99,97,115,101,32,49,49,53,58,9,47,42,32,
1768+ 70,52,32,42,47,10,9,9,9,105,102,40,100,101,102,101,
1769+ 114,114,101,100,41,32,123,10,9,9,9,9,98,114,101,97,
1770+ 107,59,10,9,9,9,125,10,9,9,9,118,97,114,32,109,
25951771 101,118,32,61,32,123,10,9,9,9,9,102,97,107,101,120,
25961772 58,32,116,104,105,115,46,108,97,115,116,120,44,10,9,9,
25971773 9,9,102,97,107,101,121,58,32,116,104,105,115,46,108,97,
@@ -2599,30311 +1775,3608 @@ var Files = map[string][]byte{ · 1 unmodified line
25991775 107,101,121,45,49,49,50,43,49,44,10,9,9,9,125,59,
26001776 10,9,9,9,109,101,118,46,112,114,101,118,101,110,116,68,
26011777 101,102,97,117,108,116,32,61,32,102,117,110,99,116,105,111,
2602− 110,40,41,123,125,10,9,9,9,116,104,105,115,46,111,110,
2603− 109,111,117,115,101,117,112,40,109,101,118,41,59,10,9,9,
2604− 9,98,114,101,97,107,59,10,9,9,99,97,115,101,32,49,
2605− 56,58,32,47,42,32,65,108,116,32,42,47,10,9,9,9,
2606− 116,104,105,115,46,99,111,109,112,111,115,105,110,103,32,61,
2607− 32,116,114,117,101,59,10,9,9,9,114,101,116,117,114,110,
2608− 32,116,114,117,101,59,10,9,9,100,101,102,97,117,108,116,
2609− 58,10,9,9,9,114,101,116,117,114,110,32,116,114,117,101,
2610− 59,10,9,9,125,10,9,9,114,101,116,117,114,110,32,102,
2611− 97,108,115,101,59,10,9,125,99,97,116,99,104,40,101,120,
2612− 41,123,10,9,9,99,111,110,115,111,108,101,46,108,111,103,
2613− 40,34,107,101,121,100,111,119,110,58,32,34,32,43,32,101,
2614− 120,41,59,10,9,125,10,125,10,10,102,117,110,99,116,105,
2615− 111,110,32,116,101,118,107,101,121,40,101,44,32,100,101,102,
2616− 101,114,114,101,100,41,32,123,10,9,116,114,121,32,123,10,
2617− 9,9,47,47,32,99,111,110,115,111,108,101,46,108,111,103,
2618− 40,34,107,101,121,34,41,59,10,9,9,118,97,114,32,107,
2619− 101,121,32,61,32,101,46,107,101,121,67,111,100,101,59,10,
2620− 9,9,105,102,40,33,101,46,107,101,121,67,111,100,101,41,
2621− 10,9,9,9,107,101,121,32,61,32,101,46,119,104,105,99,
2622− 104,59,10,9,9,118,97,114,32,114,117,110,101,32,61,32,
2623− 83,116,114,105,110,103,46,102,114,111,109,67,104,97,114,67,
2624− 111,100,101,40,101,46,107,101,121,67,111,100,101,41,59,10,
2625− 9,9,105,102,40,116,100,101,98,117,103,41,99,111,110,115,
2626− 111,108,101,46,108,111,103,40,34,107,101,121,58,32,119,104,
2627− 105,99,104,32,34,32,43,32,101,46,119,104,105,99,104,32,
2628− 43,32,34,32,107,101,121,32,34,32,43,32,101,46,107,101,
2629− 121,67,111,100,101,32,43,10,9,9,9,34,32,39,34,32,
2630− 43,32,114,117,110,101,32,43,32,34,39,34,41,59,10,9,
2631− 9,115,119,105,116,99,104,40,107,101,121,41,123,10,9,9,
2632− 99,97,115,101,32,57,58,10,9,9,9,114,117,110,101,32,
2633− 61,32,34,92,116,34,59,10,9,9,9,98,114,101,97,107,
2634− 59,10,9,9,99,97,115,101,32,49,51,58,10,9,9,9,
2635− 114,117,110,101,32,61,32,34,92,110,34,59,10,9,9,9,
2636− 98,114,101,97,107,59,10,9,9,125,10,9,9,115,119,105,
2637− 116,99,104,40,114,117,110,101,41,123,10,9,9,99,97,115,
1778+ 110,40,41,123,125,10,9,9,9,116,104,105,115,46,99,46,
1779+ 111,110,109,111,117,115,101,100,111,119,110,40,109,101,118,41,
1780+ 59,10,9,9,9,98,114,101,97,107,59,10,9,9,99,97,
1781+ 115,101,32,49,50,51,58,9,47,42,32,70,49,50,32,42,
1782+ 47,10,9,9,9,116,100,101,98,117,103,32,61,32,33,116,
1783+ 100,101,98,117,103,59,10,9,9,9,98,114,101,97,107,59,
1784+ 10,9,9,100,101,102,97,117,108,116,58,10,9,9,9,114,
1785+ 101,116,117,114,110,32,116,114,117,101,59,10,9,9,125,10,
1786+ 9,9,114,101,116,117,114,110,32,102,97,108,115,101,59,10,
1787+ 9,125,59,10,10,9,116,104,105,115,46,116,108,111,99,107,
1788+ 110,107,101,121,100,111,119,110,32,61,32,102,117,110,99,116,
1789+ 105,111,110,40,101,41,32,123,10,9,9,100,111,110,116,98,
1790+ 117,98,98,108,101,40,101,41,59,10,9,9,105,102,40,116,
1791+ 104,105,115,46,105,115,108,111,99,107,101,100,41,32,123,10,
1792+ 9,9,9,114,101,116,117,114,110,32,116,104,105,115,46,116,
1793+ 107,101,121,100,111,119,110,40,101,41,59,10,9,9,125,10,
1794+ 9,9,105,102,40,33,116,104,105,115,46,108,111,99,107,105,
1795+ 110,103,41,32,123,10,9,9,9,116,104,105,115,46,108,111,
1796+ 99,107,105,110,103,32,61,32,116,114,117,101,59,10,9,9,
1797+ 9,116,104,105,115,46,112,111,115,116,40,91,34,104,111,108,
1798+ 100,34,93,41,59,10,9,9,9,99,111,110,115,111,108,101,
1799+ 46,108,111,103,40,34,104,111,108,100,105,110,103,46,46,46,
1800+ 34,41,59,10,9,9,125,10,9,9,118,97,114,32,115,101,
1801+ 108,102,32,61,32,116,104,105,115,59,10,9,9,118,97,114,
1802+ 32,120,101,32,61,32,106,81,117,101,114,121,46,69,118,101,
1803+ 110,116,40,34,107,101,121,100,111,119,110,34,41,59,10,9,
1804+ 9,120,101,46,119,104,105,99,104,32,61,32,101,46,119,104,
1805+ 105,99,104,59,10,9,9,120,101,46,107,101,121,67,111,100,
1806+ 101,32,61,32,101,46,107,101,121,67,111,100,101,59,10,9,
1807+ 9,120,101,46,99,116,114,108,75,101,121,32,61,32,101,46,
1808+ 99,116,114,108,75,101,121,59,10,9,9,120,101,46,109,101,
1809+ 116,97,75,101,121,32,61,32,101,46,109,101,116,97,75,101,
1810+ 121,59,10,9,9,120,101,46,112,114,101,118,101,110,116,68,
1811+ 101,102,97,117,108,116,32,61,32,102,117,110,99,116,105,111,
1812+ 110,40,41,123,125,59,10,9,9,116,104,105,115,46,119,104,
1813+ 101,110,108,111,99,107,101,100,46,112,117,115,104,40,102,117,
1814+ 110,99,116,105,111,110,40,41,32,123,10,9,9,9,99,111,
1815+ 110,115,111,108,101,46,108,111,103,40,34,104,101,108,100,32,
1816+ 107,101,121,100,111,119,110,34,41,59,10,9,9,9,36,40,
1817+ 115,101,108,102,46,99,41,46,116,114,105,103,103,101,114,40,
1818+ 120,101,41,59,10,9,9,9,114,101,116,117,114,110,32,102,
1819+ 97,108,115,101,59,10,9,9,125,41,59,10,9,9,114,101,
1820+ 116,117,114,110,32,116,104,105,115,46,116,107,101,121,100,111,
1821+ 119,110,40,101,44,32,116,114,117,101,41,59,10,9,125,59,
1822+ 10,10,9,116,104,105,115,46,116,107,101,121,112,114,101,115,
1823+ 115,32,61,32,102,117,110,99,116,105,111,110,40,101,44,32,
1824+ 100,101,102,101,114,114,101,100,41,32,123,10,9,9,118,97,
1825+ 114,32,107,101,121,32,61,32,101,46,107,101,121,67,111,100,
1826+ 101,59,10,9,9,105,102,40,33,101,46,107,101,121,67,111,
1827+ 100,101,41,10,9,9,9,107,101,121,32,61,32,101,46,119,
1828+ 104,105,99,104,59,10,9,9,118,97,114,32,114,117,110,101,
1829+ 32,61,32,83,116,114,105,110,103,46,102,114,111,109,67,104,
1830+ 97,114,67,111,100,101,40,101,46,107,101,121,67,111,100,101,
1831+ 41,59,10,9,9,105,102,40,116,100,101,98,117,103,41,32,
1832+ 123,10,9,9,9,99,111,110,115,111,108,101,46,108,111,103,
1833+ 40,34,107,101,121,58,32,119,104,105,99,104,32,34,32,43,
1834+ 32,101,46,119,104,105,99,104,32,43,32,34,32,107,101,121,
1835+ 32,34,32,43,32,101,46,107,101,121,67,111,100,101,32,43,
1836+ 10,9,9,9,9,34,32,39,34,32,43,32,114,117,110,101,
1837+ 32,43,32,34,39,34,41,59,10,9,9,125,10,9,9,115,
1838+ 119,105,116,99,104,40,107,101,121,41,32,123,10,9,9,99,
1839+ 97,115,101,32,57,58,10,9,9,9,114,117,110,101,32,61,
1840+ 32,34,92,116,34,59,10,9,9,9,98,114,101,97,107,59,
1841+ 10,9,9,99,97,115,101,32,49,51,58,10,9,9,9,114,
1842+ 117,110,101,32,61,32,34,92,110,34,59,10,9,9,9,98,
1843+ 114,101,97,107,59,10,9,9,125,10,9,9,115,119,105,116,
1844+ 99,104,40,114,117,110,101,41,32,123,10,9,9,99,97,115,
26381845 101,32,39,99,39,58,10,9,9,99,97,115,101,32,39,67,
26391846 39,58,10,9,9,9,105,102,40,100,101,102,101,114,114,101,
26401847 100,41,10,9,9,9,9,98,114,101,97,107,59,10,9,9,
26411848 9,105,102,40,101,46,99,116,114,108,75,101,121,32,124,124,
2642− 32,101,46,109,101,116,97,75,101,121,41,123,10,9,9,9,
1849+ 32,101,46,109,101,116,97,75,101,121,41,32,123,10,9,9,
1850+ 9,9,101,46,112,114,101,118,101,110,116,68,101,102,97,117,
1851+ 108,116,40,41,59,10,9,9,9,9,116,104,105,115,46,112,
1852+ 111,115,116,40,91,34,101,99,111,112,121,34,44,32,34,34,
1853+ 43,116,104,105,115,46,112,48,44,32,34,34,43,116,104,105,
1854+ 115,46,112,49,93,41,59,10,9,9,9,9,114,101,116,117,
1855+ 114,110,32,102,97,108,115,101,59,10,9,9,9,125,10,9,
1856+ 9,9,98,114,101,97,107,59,10,9,9,99,97,115,101,32,
1857+ 39,118,39,58,10,9,9,99,97,115,101,32,39,86,39,58,
1858+ 10,9,9,9,105,102,40,100,101,102,101,114,114,101,100,32,
1859+ 124,124,32,116,104,105,115,46,110,111,101,100,105,116,115,41,
1860+ 32,123,10,9,9,9,9,98,114,101,97,107,59,10,9,9,
1861+ 9,125,10,9,9,9,105,102,40,101,46,99,116,114,108,75,
1862+ 101,121,32,124,124,32,101,46,109,101,116,97,75,101,121,41,
1863+ 32,123,10,9,9,9,9,101,46,112,114,101,118,101,110,116,
1864+ 68,101,102,97,117,108,116,40,41,59,10,9,9,9,9,105,
1865+ 102,40,116,104,105,115,46,112,48,32,33,61,32,116,104,105,
1866+ 115,46,112,49,41,123,10,9,9,9,9,9,116,104,105,115,
1867+ 46,80,111,115,116,40,91,34,101,100,101,108,34,44,32,34,
1868+ 34,43,116,104,105,115,46,112,48,44,32,34,34,43,116,104,
1869+ 105,115,46,112,49,93,41,59,10,9,9,9,9,125,10,9,
1870+ 9,9,9,116,104,105,115,46,112,111,115,116,40,91,34,101,
1871+ 112,97,115,116,101,34,44,32,34,34,43,116,104,105,115,46,
1872+ 112,48,44,32,34,34,43,116,104,105,115,46,112,49,93,41,
1873+ 59,10,9,9,9,9,114,101,116,117,114,110,32,102,97,108,
1874+ 115,101,59,10,9,9,9,125,10,9,9,9,98,114,101,97,
1875+ 107,59,10,9,9,99,97,115,101,32,39,120,39,58,10,9,
1876+ 9,99,97,115,101,32,39,88,39,58,10,9,9,9,105,102,
1877+ 40,100,101,102,101,114,114,101,100,32,124,124,32,116,104,105,
1878+ 115,46,110,111,101,100,105,116,115,41,32,123,10,9,9,9,
1879+ 9,98,114,101,97,107,59,10,9,9,9,125,10,9,9,9,
1880+ 105,102,40,101,46,99,116,114,108,75,101,121,32,124,124,32,
1881+ 101,46,109,101,116,97,75,101,121,41,32,123,10,9,9,9,
26431882 9,101,46,112,114,101,118,101,110,116,68,101,102,97,117,108,
2644− 116,40,41,59,10,9,9,9,9,116,104,105,115,46,112,111,
2645− 115,116,40,91,34,101,99,111,112,121,34,44,32,34,34,43,
2646− 116,104,105,115,46,112,48,44,32,34,34,43,116,104,105,115,
2647− 46,112,49,93,41,59,10,9,9,9,9,114,101,116,117,114,
2648− 110,32,102,97,108,115,101,59,10,9,9,9,125,10,9,9,
2649− 9,98,114,101,97,107,59,10,9,9,99,97,115,101,32,39,
2650− 118,39,58,10,9,9,99,97,115,101,32,39,86,39,58,10,
2651− 9,9,9,105,102,40,100,101,102,101,114,114,101,100,41,10,
2652− 9,9,9,9,98,114,101,97,107,59,10,9,9,9,105,102,
2653− 40,116,104,105,115,46,110,111,101,100,105,116,115,41,32,123,
2654− 10,9,9,9,9,98,114,101,97,107,59,10,9,9,9,125,
2655− 10,9,9,9,105,102,40,101,46,99,116,114,108,75,101,121,
2656− 32,124,124,32,101,46,109,101,116,97,75,101,121,41,123,10,
2657− 9,9,9,9,101,46,112,114,101,118,101,110,116,68,101,102,
2658− 97,117,108,116,40,41,59,10,9,9,9,9,105,102,40,116,
2659− 104,105,115,46,112,48,32,33,61,32,116,104,105,115,46,112,
2660− 49,41,123,10,9,9,9,9,9,116,104,105,115,46,80,111,
2661− 115,116,40,91,34,101,100,101,108,34,44,32,34,34,43,116,
1883+ 116,40,41,59,10,9,9,9,9,116,104,105,115,46,80,111,
1884+ 115,116,40,91,34,101,99,117,116,34,44,32,34,34,43,116,
26621885 104,105,115,46,112,48,44,32,34,34,43,116,104,105,115,46,
2663− 112,49,93,41,59,10,9,9,9,9,125,10,9,9,9,9,
2664− 116,104,105,115,46,112,111,115,116,40,91,34,101,112,97,115,
2665− 116,101,34,44,32,34,34,43,116,104,105,115,46,112,48,44,
1886+ 112,49,93,41,59,10,9,9,9,9,114,101,116,117,114,110,
1887+ 32,102,97,108,115,101,59,10,9,9,9,125,10,9,9,9,
1888+ 98,114,101,97,107,59,10,9,9,125,10,9,9,105,102,40,
1889+ 100,101,102,101,114,114,101,100,32,124,124,32,101,46,109,101,
1890+ 116,97,75,101,121,32,124,124,32,101,46,99,116,114,108,75,
1891+ 101,121,32,124,124,32,116,104,105,115,46,110,111,101,100,105,
1892+ 116,115,41,32,123,10,9,9,9,114,101,116,117,114,110,59,
1893+ 10,9,9,125,10,9,9,105,102,40,116,104,105,115,46,112,
1894+ 48,32,33,61,32,116,104,105,115,46,112,49,41,123,10,9,
1895+ 9,9,116,104,105,115,46,80,111,115,116,40,91,34,101,100,
1896+ 101,108,34,44,32,34,34,43,116,104,105,115,46,112,48,44,
26661897 32,34,34,43,116,104,105,115,46,112,49,93,41,59,10,9,
2667− 9,9,9,114,101,116,117,114,110,32,102,97,108,115,101,59,
2668− 10,9,9,9,125,10,9,9,9,98,114,101,97,107,59,10,
2669− 9,9,99,97,115,101,32,39,120,39,58,10,9,9,99,97,
2670− 115,101,32,39,88,39,58,10,9,9,9,105,102,40,100,101,
2671− 102,101,114,114,101,100,41,10,9,9,9,9,98,114,101,97,
2672− 107,59,10,9,9,9,105,102,40,116,104,105,115,46,110,111,
2673− 101,100,105,116,115,41,32,123,10,9,9,9,9,98,114,101,
2674− 97,107,59,10,9,9,9,125,10,9,9,9,105,102,40,101,
2675− 46,99,116,114,108,75,101,121,32,124,124,32,101,46,109,101,
2676− 116,97,75,101,121,41,123,10,9,9,9,9,101,46,112,114,
2677− 101,118,101,110,116,68,101,102,97,117,108,116,40,41,59,10,
2678− 9,9,9,9,116,104,105,115,46,80,111,115,116,40,91,34,
2679− 101,99,117,116,34,44,32,34,34,43,116,104,105,115,46,112,
2680− 48,44,32,34,34,43,116,104,105,115,46,112,49,93,41,59,
2681− 10,9,9,9,9,114,101,116,117,114,110,32,102,97,108,115,
2682− 101,59,10,9,9,9,125,10,9,9,9,98,114,101,97,107,
2683− 59,10,9,9,125,10,9,9,105,102,40,101,46,109,101,116,
2684− 97,75,101,121,32,124,124,32,101,46,99,116,114,108,75,101,
2685− 121,32,124,124,32,116,104,105,115,46,110,111,101,100,105,116,
2686− 115,41,10,9,9,9,114,101,116,117,114,110,59,10,9,9,
2687− 105,102,40,100,101,102,101,114,114,101,100,41,10,9,9,9,
2688− 114,101,116,117,114,110,59,10,9,9,105,102,40,116,104,105,
2689− 115,46,112,48,32,33,61,32,116,104,105,115,46,112,49,41,
2690− 123,10,9,9,9,116,104,105,115,46,80,111,115,116,40,91,
2691− 34,101,100,101,108,34,44,32,34,34,43,116,104,105,115,46,
2692− 112,48,44,32,34,34,43,116,104,105,115,46,112,49,93,41,
2693− 59,10,9,9,125,10,9,9,105,102,40,116,104,105,115,46,
2694− 99,111,109,112,111,115,105,110,103,41,32,123,10,9,9,9,
2695− 105,102,40,33,116,104,105,115,46,108,97,116,105,110,41,32,
2696− 123,10,9,9,9,9,116,104,105,115,46,108,97,116,105,110,
2697− 32,61,32,34,34,32,43,32,114,117,110,101,59,10,9,9,
2698− 9,125,32,101,108,115,101,32,123,10,9,9,9,9,116,104,
2699− 105,115,46,108,97,116,105,110,32,43,61,32,114,117,110,101,
2700− 59,10,9,9,9,125,10,9,9,9,105,102,40,33,107,109,
2701− 97,112,46,105,115,108,97,116,105,110,40,116,104,105,115,46,
2702− 108,97,116,105,110,41,41,32,123,10,9,9,9,9,116,104,
2703− 105,115,46,99,111,109,112,111,115,105,110,103,32,61,32,102,
2704− 97,108,115,101,59,10,9,9,9,9,114,117,110,101,32,61,
2705− 32,116,104,105,115,46,108,97,116,105,110,59,10,9,9,9,
2706− 9,116,104,105,115,46,108,97,116,105,110,32,61,32,34,34,
2707− 59,10,9,9,9,125,32,101,108,115,101,32,123,10,9,9,
2708− 9,9,118,97,114,32,114,32,61,32,107,109,97,112,46,108,
2709− 97,116,105,110,40,116,104,105,115,46,108,97,116,105,110,41,
2710− 59,10,9,9,9,9,105,102,32,40,114,41,32,123,10,9,
1898+ 9,125,10,9,9,105,102,40,116,104,105,115,46,99,111,109,
1899+ 112,111,115,105,110,103,41,32,123,10,9,9,9,105,102,40,
1900+ 33,116,104,105,115,46,108,97,116,105,110,41,32,123,10,9,
1901+ 9,9,9,116,104,105,115,46,108,97,116,105,110,32,61,32,
1902+ 34,34,32,43,32,114,117,110,101,59,10,9,9,9,125,32,
1903+ 101,108,115,101,32,123,10,9,9,9,9,116,104,105,115,46,
1904+ 108,97,116,105,110,32,43,61,32,114,117,110,101,59,10,9,
1905+ 9,9,125,10,9,9,9,105,102,40,33,107,109,97,112,46,
1906+ 105,115,108,97,116,105,110,40,116,104,105,115,46,108,97,116,
1907+ 105,110,41,41,32,123,10,9,9,9,9,116,104,105,115,46,
1908+ 99,111,109,112,111,115,105,110,103,32,61,32,102,97,108,115,
1909+ 101,59,10,9,9,9,9,114,117,110,101,32,61,32,116,104,
1910+ 105,115,46,108,97,116,105,110,59,10,9,9,9,9,116,104,
1911+ 105,115,46,108,97,116,105,110,32,61,32,34,34,59,10,9,
1912+ 9,9,125,32,101,108,115,101,32,123,10,9,9,9,9,118,
1913+ 97,114,32,114,32,61,32,107,109,97,112,46,108,97,116,105,
1914+ 110,40,116,104,105,115,46,108,97,116,105,110,41,59,10,9,
1915+ 9,9,9,105,102,32,40,33,114,41,32,123,10,9,9,9,
1916+ 9,9,114,101,116,117,114,110,59,10,9,9,9,9,125,10,
27111917 9,9,9,9,116,104,105,115,46,99,111,109,112,111,115,105,
27121918 110,103,32,61,32,102,97,108,115,101,59,10,9,9,9,9,
2713− 9,114,117,110,101,32,61,32,114,59,10,9,9,9,9,9,
2714− 116,104,105,115,46,108,97,116,105,110,32,61,32,34,34,59,
2715− 10,9,9,9,9,125,32,101,108,115,101,32,123,10,9,9,
2716− 9,9,9,114,101,116,117,114,110,59,10,9,9,9,9,125,
2717− 10,9,9,9,125,10,9,9,125,10,9,9,116,104,105,115,
2718− 46,80,111,115,116,40,91,34,101,105,110,115,34,44,32,114,
2719− 117,110,101,44,32,34,34,43,116,104,105,115,46,112,48,93,
2720− 41,59,10,9,125,99,97,116,99,104,40,101,120,41,123,10,
2721− 9,9,99,111,110,115,111,108,101,46,108,111,103,40,34,116,
2722− 101,120,116,58,32,102,105,120,116,97,98,58,32,34,32,43,
2723− 32,101,120,41,59,10,9,125,10,125,10,10,102,117,110,99,
2724− 116,105,111,110,32,116,97,112,112,108,121,40,101,118,44,32,
2725− 102,114,111,109,115,101,114,118,101,114,41,32,123,10,9,105,
2726− 102,40,33,101,118,32,124,124,32,33,101,118,46,65,114,103,
2727− 115,32,124,124,32,33,101,118,46,65,114,103,115,91,48,93,
2728− 41,123,10,9,9,99,111,110,115,111,108,101,46,108,111,103,
2729− 40,34,97,112,112,108,121,58,32,110,105,108,32,101,118,34,
2730− 41,59,10,9,9,114,101,116,117,114,110,59,10,9,125,10,
2731− 9,118,97,114,32,97,114,103,32,61,32,101,118,46,65,114,
2732− 103,115,10,9,105,102,40,116,100,101,98,117,103,41,99,111,
2733− 110,115,111,108,101,46,108,111,103,40,116,104,105,115,46,100,
2734− 105,118,105,100,44,32,34,97,112,112,108,121,34,44,32,101,
2735− 118,46,65,114,103,115,44,32,34,118,34,44,32,101,118,46,
2736− 86,101,114,115,44,32,116,104,105,115,46,118,101,114,115,41,
2737− 59,10,9,115,119,105,116,99,104,40,97,114,103,91,48,93,
2738− 41,123,10,9,99,97,115,101,32,34,104,101,108,100,34,58,
2739− 10,9,9,116,104,105,115,46,108,111,99,107,101,100,40,41,
2740− 59,10,9,9,98,114,101,97,107,59,10,9,99,97,115,101,
2741− 32,34,114,108,115,101,34,58,10,9,9,105,102,40,116,104,
2742− 105,115,46,115,101,108,101,99,116,105,110,103,41,32,123,10,
2743− 9,9,9,116,104,105,115,46,109,117,115,116,117,110,108,111,
2744− 99,107,32,61,32,116,114,117,101,59,10,9,9,9,98,114,
2745− 101,97,107,59,10,9,9,125,10,9,9,116,104,105,115,46,
2746− 117,110,108,111,99,107,101,100,40,41,59,10,9,9,98,114,
2747− 101,97,107,59,10,9,99,97,115,101,32,34,110,111,101,100,
2748− 105,116,115,34,58,10,9,9,116,104,105,115,46,110,111,101,
2749− 100,105,116,115,32,61,32,116,114,117,101,59,10,9,9,98,
2750− 114,101,97,107,59,10,9,99,97,115,101,32,34,101,100,105,
2751− 116,115,34,58,10,9,9,116,104,105,115,46,110,111,101,100,
2752− 105,116,115,32,61,32,102,97,108,115,101,59,10,9,9,98,
2753− 114,101,97,107,59,10,9,99,97,115,101,32,34,99,108,101,
2754− 97,110,34,58,10,9,9,105,102,40,100,111,99,117,109,101,
2755− 110,116,46,115,101,116,99,108,101,97,110,41,32,123,10,9,
2756− 9,9,100,111,99,117,109,101,110,116,46,115,101,116,99,108,
2757− 101,97,110,40,116,104,105,115,41,59,10,9,9,125,10,9,
2758− 9,98,114,101,97,107,59,10,9,99,97,115,101,32,34,100,
2759− 105,114,116,121,34,58,10,9,9,105,102,40,100,111,99,117,
2760− 109,101,110,116,46,115,101,116,100,105,114,116,121,41,32,123,
2761− 10,9,9,9,100,111,99,117,109,101,110,116,46,115,101,116,
2762− 100,105,114,116,121,40,116,104,105,115,41,59,10,9,9,125,
2763− 10,9,9,98,114,101,97,107,59,10,9,99,97,115,101,32,
2764− 34,115,104,111,119,34,58,10,9,9,105,102,40,100,111,99,
2765− 117,109,101,110,116,46,115,104,111,119,99,111,110,116,114,111,
2766− 108,41,32,123,10,9,9,9,100,111,99,117,109,101,110,116,
2767− 46,115,104,111,119,99,111,110,116,114,111,108,40,116,104,105,
2768− 115,41,59,10,9,9,125,10,9,9,98,114,101,97,107,59,
2769− 10,9,99,97,115,101,32,34,116,97,103,34,58,10,9,9,
2770− 105,102,40,97,114,103,46,108,101,110,103,116,104,32,60,32,
2771− 50,41,123,10,9,9,9,99,111,110,115,111,108,101,46,108,
2772− 111,103,40,116,104,105,115,46,100,105,118,105,100,44,32,34,
2773− 97,112,112,108,121,58,32,115,104,111,114,116,32,116,97,103,
2774− 34,41,59,10,9,9,9,98,114,101,97,107,59,10,9,9,
2775− 125,10,9,9,105,102,40,100,111,99,117,109,101,110,116,46,
2776− 115,101,116,116,97,103,41,32,123,10,9,9,9,100,111,99,
2777− 117,109,101,110,116,46,115,101,116,116,97,103,40,116,104,105,
2778− 115,44,32,97,114,103,91,49,93,41,59,10,9,9,125,10,
2779− 9,9,98,114,101,97,107,59,10,9,99,97,115,101,32,34,
2780− 102,111,110,116,34,58,10,9,9,105,102,40,97,114,103,46,
2781− 108,101,110,103,116,104,32,60,32,50,41,123,10,9,9,9,
2782− 99,111,110,115,111,108,101,46,108,111,103,40,116,104,105,115,
2783− 46,100,105,118,105,100,44,32,34,97,112,112,108,121,58,32,
2784− 115,104,111,114,116,32,102,111,110,116,34,41,59,10,9,9,
2785− 9,98,114,101,97,107,59,10,9,9,125,10,9,9,99,111,
2786− 110,115,111,108,101,46,108,111,103,40,116,104,105,115,46,100,
2787− 105,118,105,100,44,32,34,102,111,110,116,34,44,32,97,114,
2788− 103,91,49,93,41,59,10,9,9,116,104,105,115,46,102,111,
2789− 110,116,115,116,121,108,101,32,61,32,97,114,103,91,49,93,
2790− 59,10,9,9,116,104,105,115,46,102,105,120,102,111,110,116,
2791− 40,41,59,10,9,9,116,104,105,115,46,114,101,100,114,97,
2792− 119,116,101,120,116,40,41,59,10,9,9,98,114,101,97,107,
2793− 59,10,9,99,97,115,101,32,34,109,97,114,107,105,110,115,
2794− 105,110,103,34,58,10,9,9,105,102,40,97,114,103,46,108,
2795− 101,110,103,116,104,32,60,32,51,41,123,10,9,9,9,99,
2796− 111,110,115,111,108,101,46,108,111,103,40,116,104,105,115,46,
2797− 100,105,118,105,100,44,32,34,97,112,112,108,121,58,32,115,
2798− 104,111,114,116,32,109,97,114,107,105,110,115,105,110,103,34,
2799− 41,59,10,9,9,9,98,114,101,97,107,59,10,9,9,125,
2800− 10,9,9,105,102,32,40,33,116,104,105,115,46,109,97,114,
2801− 107,105,110,115,100,97,116,97,41,32,123,10,9,9,9,99,
2802− 111,110,115,111,108,101,46,108,111,103,40,34,109,97,114,107,
2803− 105,110,115,32,101,118,115,46,46,46,34,41,59,10,9,9,
2804− 9,116,104,105,115,46,109,97,114,107,105,110,115,100,97,116,
2805− 97,32,61,32,91,93,59,10,9,9,125,10,9,9,116,104,
2806− 105,115,46,109,97,114,107,105,110,115,100,97,116,97,46,112,
2807− 117,115,104,40,97,114,103,91,50,93,41,59,10,9,9,98,
2808− 114,101,97,107,59,10,9,99,97,115,101,32,34,109,97,114,
2809− 107,105,110,115,100,111,110,101,34,58,10,9,9,99,111,110,
2810− 115,111,108,101,46,108,111,103,40,34,109,97,114,107,105,110,
2811− 115,32,114,117,110,46,46,46,34,41,59,10,9,9,105,102,
2812− 40,97,114,103,46,108,101,110,103,116,104,32,60,32,50,41,
2813− 123,10,9,9,9,99,111,110,115,111,108,101,46,108,111,103,
2814− 40,116,104,105,115,46,100,105,118,105,100,44,32,34,97,112,
2815− 112,108,121,58,32,115,104,111,114,116,32,109,97,114,107,105,
2816− 110,115,100,111,110,101,34,41,59,10,9,9,9,98,114,101,
2817− 97,107,59,10,9,9,125,10,9,9,118,97,114,32,109,32,
2818− 61,32,116,104,105,115,46,103,101,116,109,97,114,107,40,97,
2819− 114,103,91,49,93,41,59,10,9,9,105,102,40,33,109,41,
2820− 32,123,10,9,9,9,99,111,110,115,111,108,101,46,108,111,
2821− 103,40,116,104,105,115,46,100,105,118,105,100,44,32,34,97,
2822− 112,112,108,121,58,32,110,111,32,109,97,114,107,34,44,32,
2823− 97,114,103,91,49,93,41,59,10,9,9,9,98,114,101,97,
2824− 107,59,10,9,9,125,10,9,9,118,97,114,32,111,112,48,
2825− 32,61,32,116,104,105,115,46,112,48,59,10,9,9,118,97,
2826− 114,32,111,112,49,32,61,32,116,104,105,115,46,112,49,59,
2827− 10,9,9,105,102,40,111,112,48,32,33,61,32,111,112,49,
2828− 41,32,123,10,9,9,9,116,104,105,115,46,116,115,101,116,
2829− 115,101,108,40,111,112,48,44,32,111,112,48,41,59,10,9,
2830− 9,125,10,9,9,102,111,114,40,118,97,114,32,105,32,61,
2831− 32,48,59,32,105,32,60,32,116,104,105,115,46,109,97,114,
2832− 107,105,110,115,100,97,116,97,46,108,101,110,103,116,104,59,
2833− 32,105,43,43,41,32,123,10,9,9,9,118,97,114,32,100,
2834− 97,116,97,32,61,32,116,104,105,115,46,109,97,114,107,105,
2835− 110,115,100,97,116,97,91,105,93,59,10,9,9,9,118,97,
2836− 114,32,110,108,101,110,32,61,32,100,97,116,97,46,108,101,
2837− 110,103,116,104,59,10,9,9,9,118,97,114,32,110,112,111,
2838− 115,32,61,32,109,46,112,111,115,32,43,32,110,108,101,110,
2839− 59,10,9,9,9,118,97,114,32,111,112,111,115,32,61,32,
2840− 109,46,112,111,115,59,10,9,9,9,111,112,48,32,61,32,
2841− 116,104,105,115,46,112,48,59,10,9,9,9,111,112,49,32,
2842− 61,32,116,104,105,115,46,112,49,59,10,9,9,9,116,104,
2843− 105,115,46,112,48,32,61,32,109,46,112,111,115,59,10,9,
2844− 9,9,116,104,105,115,46,112,49,32,61,32,109,46,112,111,
2845− 115,59,10,9,9,9,116,104,105,115,46,116,105,110,115,108,
2846− 105,110,101,115,40,100,97,116,97,44,32,116,114,117,101,41,
2847− 59,10,9,9,9,109,46,112,111,115,32,61,32,110,112,111,
2848− 115,59,10,9,9,9,105,102,40,111,112,48,32,62,32,111,
2849− 112,111,115,41,10,9,9,9,9,111,112,48,32,43,61,32,
2850− 110,108,101,110,59,10,9,9,9,105,102,40,111,112,49,32,
2851− 62,32,111,112,111,115,41,10,9,9,9,9,111,112,49,32,
2852− 43,61,32,110,108,101,110,59,10,9,9,9,116,104,105,115,
2853− 46,112,48,32,61,32,111,112,48,59,10,9,9,9,116,104,
2854− 105,115,46,112,49,32,61,32,111,112,49,59,10,9,9,9,
2855− 105,102,40,101,118,46,86,101,114,115,41,32,123,10,9,9,
2856− 9,9,116,104,105,115,46,118,101,114,115,32,61,32,101,118,
2857− 46,86,101,114,115,59,10,9,9,9,125,10,9,9,125,10,
2858− 9,9,116,104,105,115,46,116,115,101,116,115,101,108,40,111,
2859− 112,48,44,32,111,112,49,41,59,10,9,9,100,101,108,101,
2860− 116,101,32,116,104,105,115,46,109,97,114,107,105,110,115,100,
2861− 97,116,97,59,10,9,9,105,102,40,33,116,104,105,115,46,
2862− 117,115,101,114,114,101,115,105,122,101,100,41,32,123,10,9,
2863− 9,9,116,104,105,115,46,97,117,116,111,114,101,115,105,122,
2864− 101,40,41,59,10,9,9,125,32,10,9,9,99,111,110,115,
2865− 111,108,101,46,108,111,103,40,34,109,97,114,107,105,110,115,
2866− 32,100,111,110,101,34,41,59,10,9,9,98,114,101,97,107,
2867− 59,10,9,99,97,115,101,32,34,101,105,110,115,105,110,103,
2868− 34,58,10,9,9,105,102,40,97,114,103,46,108,101,110,103,
2869− 116,104,32,60,32,50,41,123,10,9,9,9,99,111,110,115,
2870− 111,108,101,46,108,111,103,40,116,104,105,115,46,100,105,118,
2871− 105,100,44,32,34,97,112,112,108,121,58,32,115,104,111,114,
2872− 116,32,101,105,110,115,105,110,103,34,41,59,10,9,9,9,
2873− 98,114,101,97,107,59,10,9,9,125,10,9,9,105,102,32,
2874− 40,33,116,104,105,115,46,101,105,110,115,100,97,116,97,41,
2875− 32,123,10,9,9,9,99,111,110,115,111,108,101,46,108,111,
2876− 103,40,34,101,105,110,115,32,101,118,115,46,46,46,34,41,
2877− 59,10,9,9,9,116,104,105,115,46,101,105,110,115,100,97,
2878− 116,97,32,61,32,91,93,59,10,9,9,125,10,9,9,116,
2879− 104,105,115,46,101,105,110,115,100,97,116,97,46,112,117,115,
2880− 104,40,97,114,103,91,49,93,41,59,10,9,9,98,114,101,
2881− 97,107,59,10,9,99,97,115,101,32,34,101,105,110,115,100,
2882− 111,110,101,34,58,10,9,9,99,111,110,115,111,108,101,46,
2883− 108,111,103,40,34,101,105,110,115,32,114,117,110,46,46,46,
2884− 34,41,59,10,9,9,105,102,40,97,114,103,46,108,101,110,
2885− 103,116,104,32,60,32,50,41,123,10,9,9,9,99,111,110,
2886− 115,111,108,101,46,108,111,103,40,116,104,105,115,46,100,105,
2887− 118,105,100,44,32,34,97,112,112,108,121,58,32,115,104,111,
2888− 114,116,32,105,110,115,34,41,59,10,9,9,9,98,114,101,
2889− 97,107,59,10,9,9,125,10,9,9,105,102,40,101,118,46,
2890− 86,101,114,115,32,38,38,32,102,114,111,109,115,101,114,118,
2891− 101,114,32,38,38,32,101,118,46,86,101,114,115,32,33,61,
2892− 32,116,104,105,115,46,118,101,114,115,43,49,41,123,10,9,
2893− 9,9,99,111,110,115,111,108,101,46,108,111,103,40,34,79,
2894− 85,84,32,79,70,32,83,89,78,67,34,44,32,101,118,46,
2895− 65,114,103,115,44,32,34,118,34,44,32,101,118,46,86,101,
2896− 114,115,44,32,116,104,105,115,46,118,101,114,115,41,59,10,
2897− 9,9,9,116,104,105,115,46,112,111,115,116,40,91,34,110,
2898− 101,101,100,114,101,108,111,97,100,34,93,41,59,10,9,9,
2899− 9,100,101,108,101,116,101,32,116,104,105,115,46,101,105,110,
2900− 115,100,97,116,97,59,10,9,9,9,98,114,101,97,107,59,
2901− 10,9,9,125,10,9,9,118,97,114,32,112,48,32,61,32,
2902− 112,97,114,115,101,73,110,116,40,97,114,103,91,49,93,41,
2903− 59,10,9,9,118,97,114,32,111,112,48,32,61,32,116,104,
2904− 105,115,46,112,48,59,10,9,9,118,97,114,32,111,112,49,
2905− 32,61,32,116,104,105,115,46,112,49,59,10,9,9,105,102,
2906− 40,111,112,48,32,33,61,32,111,112,49,41,32,123,10,9,
2907− 9,9,116,104,105,115,46,116,115,101,116,115,101,108,40,111,
2908− 112,48,44,32,111,112,48,41,59,10,9,9,125,10,9,9,
2909− 116,104,105,115,46,112,48,32,61,32,112,48,59,10,9,9,
2910− 116,104,105,115,46,112,49,32,61,32,112,48,59,10,9,9,
2911− 102,111,114,40,118,97,114,32,105,32,61,32,48,59,32,105,
2912− 32,60,32,116,104,105,115,46,101,105,110,115,100,97,116,97,
2913− 46,108,101,110,103,116,104,59,32,105,43,43,41,32,123,10,
2914− 9,9,9,118,97,114,32,100,97,116,97,32,61,32,116,104,
2915− 105,115,46,101,105,110,115,100,97,116,97,91,105,93,59,10,
2916− 9,9,9,116,104,105,115,46,116,105,110,115,108,105,110,101,
2917− 115,40,100,97,116,97,41,59,10,9,9,9,105,102,40,111,
2918− 112,48,32,62,32,112,48,41,10,9,9,9,9,111,112,48,
2919− 32,43,61,32,100,97,116,97,46,108,101,110,103,116,104,59,
2920− 10,9,9,9,105,102,40,111,112,49,32,62,32,112,48,41,
2921− 10,9,9,9,9,111,112,49,32,43,61,32,100,97,116,97,
2922− 46,108,101,110,103,116,104,59,10,9,9,125,10,9,9,100,
2923− 101,108,101,116,101,32,116,104,105,115,46,101,105,110,115,100,
2924− 97,116,97,59,10,9,9,116,104,105,115,46,116,115,101,116,
2925− 115,101,108,40,111,112,48,44,32,111,112,49,41,59,10,9,
2926− 9,105,102,40,101,118,46,86,101,114,115,41,32,123,10,9,
2927− 9,9,116,104,105,115,46,118,101,114,115,32,61,32,101,118,
2928− 46,86,101,114,115,59,10,9,9,125,10,9,9,105,102,40,
2929− 33,116,104,105,115,46,117,115,101,114,114,101,115,105,122,101,
2930− 100,41,32,123,10,9,9,9,116,104,105,115,46,97,117,116,
2931− 111,114,101,115,105,122,101,40,41,59,10,9,9,125,32,10,
2932− 9,9,99,111,110,115,111,108,101,46,108,111,103,40,34,101,
2933− 105,110,115,32,100,111,110,101,34,41,59,10,9,9,98,114,
2934− 101,97,107,59,10,9,99,97,115,101,32,34,101,105,110,115,
2935− 34,58,10,9,9,105,102,40,97,114,103,46,108,101,110,103,
2936− 116,104,32,60,32,51,41,123,10,9,9,9,99,111,110,115,
2937− 111,108,101,46,108,111,103,40,116,104,105,115,46,100,105,118,
2938− 105,100,44,32,34,97,112,112,108,121,58,32,115,104,111,114,
2939− 116,32,105,110,115,34,41,59,10,9,9,9,98,114,101,97,
2940− 107,59,10,9,9,125,10,9,9,105,102,40,101,118,46,86,
2941− 101,114,115,32,38,38,32,102,114,111,109,115,101,114,118,101,
2942− 114,32,38,38,32,101,118,46,86,101,114,115,32,33,61,32,
2943− 116,104,105,115,46,118,101,114,115,43,49,41,123,10,9,9,
2944− 9,99,111,110,115,111,108,101,46,108,111,103,40,34,79,85,
2945− 84,32,79,70,32,83,89,78,67,34,44,32,101,118,46,65,
2946− 114,103,115,44,32,34,118,34,44,32,101,118,46,86,101,114,
2947− 115,44,32,116,104,105,115,46,118,101,114,115,41,59,10,9,
2948− 9,9,116,104,105,115,46,112,111,115,116,40,91,34,110,101,
2949− 101,100,114,101,108,111,97,100,34,93,41,59,10,9,9,9,
2950− 98,114,101,97,107,59,10,9,9,125,10,9,9,118,97,114,
2951− 32,112,48,32,61,32,112,97,114,115,101,73,110,116,40,97,
2952− 114,103,91,50,93,41,59,10,9,9,118,97,114,32,111,112,
2953− 48,32,61,32,116,104,105,115,46,112,48,59,10,9,9,118,
2954− 97,114,32,111,112,49,32,61,32,116,104,105,115,46,112,49,
2955− 59,10,9,9,105,102,40,111,112,48,32,33,61,32,111,112,
2956− 49,41,32,123,10,9,9,9,116,104,105,115,46,116,115,101,
2957− 116,115,101,108,40,111,112,48,44,32,111,112,48,41,59,10,
2958− 9,9,125,10,9,9,116,104,105,115,46,112,48,32,61,32,
2959− 112,48,59,10,9,9,116,104,105,115,46,112,49,32,61,32,
2960− 112,48,59,10,9,9,116,104,105,115,46,116,105,110,115,108,
2961− 105,110,101,115,40,97,114,103,91,49,93,41,59,10,9,9,
2962− 105,102,40,111,112,48,32,62,32,112,48,41,10,9,9,9,
2963− 111,112,48,32,43,61,32,97,114,103,91,49,93,46,108,101,
2964− 110,103,116,104,59,10,9,9,105,102,40,111,112,49,32,62,
2965− 32,112,48,41,10,9,9,9,111,112,49,32,43,61,32,97,
2966− 114,103,91,49,93,46,108,101,110,103,116,104,59,10,9,9,
2967− 105,102,40,102,114,111,109,115,101,114,118,101,114,41,32,123,
2968− 10,9,9,9,116,104,105,115,46,116,115,101,116,115,101,108,
2969− 40,111,112,48,44,32,111,112,49,41,59,10,9,9,125,10,
2970− 9,9,105,102,40,101,118,46,86,101,114,115,41,32,123,10,
2971− 9,9,9,116,104,105,115,46,118,101,114,115,32,61,32,101,
2972− 118,46,86,101,114,115,59,10,9,9,125,10,9,9,105,102,
2973− 40,33,116,104,105,115,46,117,115,101,114,114,101,115,105,122,
2974− 101,100,32,38,38,32,97,114,103,91,49,93,46,105,110,100,
2975− 101,120,79,102,40,39,92,110,39,41,32,62,61,32,48,41,
2976− 32,123,10,9,9,9,116,104,105,115,46,97,117,116,111,114,
2977− 101,115,105,122,101,40,41,59,10,9,9,125,32,10,9,9,
2978− 98,114,101,97,107,59,10,9,99,97,115,101,32,34,101,100,
2979− 101,108,34,58,10,9,9,105,102,40,97,114,103,46,108,101,
2980− 110,103,116,104,32,60,32,51,41,123,10,9,9,9,99,111,
2981− 110,115,111,108,101,46,108,111,103,40,116,104,105,115,46,100,
2982− 105,118,105,100,44,32,34,97,112,112,108,121,58,32,115,104,
2983− 111,114,116,32,100,101,108,34,41,59,10,9,9,9,98,114,
2984− 101,97,107,59,10,9,9,125,10,9,9,105,102,40,101,118,
2985− 46,86,101,114,115,32,38,38,32,102,114,111,109,115,101,114,
2986− 118,101,114,32,38,38,32,101,118,46,86,101,114,115,32,33,
2987− 61,32,116,104,105,115,46,118,101,114,115,43,49,41,123,10,
2988− 9,9,9,99,111,110,115,111,108,101,46,108,111,103,40,34,
2989− 79,85,84,32,79,70,32,83,89,78,67,34,44,32,101,118,
2990− 46,65,114,103,115,44,32,34,118,34,44,32,101,118,46,86,
2991− 101,114,115,44,32,116,104,105,115,46,118,101,114,115,41,59,
2992− 10,9,9,9,116,104,105,115,46,112,111,115,116,40,91,34,
2993− 110,101,101,100,114,101,108,111,97,100,34,93,41,59,10,9,
2994− 9,125,10,9,9,118,97,114,32,112,48,32,61,32,112,97,
2995− 114,115,101,73,110,116,40,97,114,103,91,49,93,41,59,10,
2996− 9,9,118,97,114,32,112,49,32,61,32,112,97,114,115,101,
2997− 73,110,116,40,97,114,103,91,50,93,41,59,10,9,9,118,
2998− 97,114,32,111,112,48,32,61,32,116,104,105,115,46,112,48,
2999− 59,10,9,9,118,97,114,32,111,112,49,32,61,32,116,104,
3000− 105,115,46,112,49,59,10,9,9,116,104,105,115,46,112,48,
3001− 32,61,32,112,48,59,10,9,9,116,104,105,115,46,112,49,
3002− 32,61,32,112,49,59,10,9,9,116,114,121,123,10,9,9,
3003− 9,116,104,105,115,46,116,100,101,108,40,41,59,10,9,9,
3004− 125,99,97,116,99,104,40,101,120,41,123,10,9,9,9,99,
3005− 111,110,115,111,108,101,46,108,111,103,40,116,104,105,115,46,
3006− 100,105,118,105,100,44,32,34,97,112,112,108,121,58,32,100,
3007− 101,108,58,32,34,32,43,32,101,120,41,59,10,9,9,125,
3008− 10,9,9,111,112,48,32,61,32,97,100,106,100,101,108,40,
3009− 111,112,48,44,32,112,48,44,32,112,49,41,59,10,9,9,
3010− 111,112,49,32,61,32,97,100,106,100,101,108,40,111,112,49,
3011− 44,32,112,48,44,32,112,49,41,59,10,9,9,105,102,40,
3012− 102,114,111,109,115,101,114,118,101,114,41,32,123,10,9,9,
3013− 9,116,104,105,115,46,116,115,101,116,115,101,108,40,111,112,
3014− 48,44,32,111,112,49,41,59,10,9,9,125,10,9,9,105,
3015− 102,40,101,118,46,86,101,114,115,41,32,123,10,9,9,9,
3016− 116,104,105,115,46,118,101,114,115,32,61,32,101,118,46,86,
3017− 101,114,115,59,10,9,9,125,10,9,9,98,114,101,97,107,
3018− 59,10,9,99,97,115,101,32,34,101,99,117,116,34,58,10,
3019− 9,9,116,114,121,123,10,9,9,9,116,104,105,115,46,116,
3020− 100,101,108,40,41,59,10,9,9,125,99,97,116,99,104,40,
3021− 101,120,41,123,10,9,9,9,99,111,110,115,111,108,101,46,
3022− 108,111,103,40,116,104,105,115,46,100,105,118,105,100,44,32,
3023− 34,97,112,112,108,121,58,32,99,117,116,58,32,34,32,43,
3024− 32,101,120,41,59,10,9,9,125,10,9,9,105,102,40,101,
3025− 118,46,86,101,114,115,41,10,9,9,9,116,104,105,115,46,
3026− 118,101,114,115,32,61,32,101,118,46,86,101,114,115,59,10,
3027− 9,9,98,114,101,97,107,59,10,9,99,97,115,101,32,34,
3028− 114,101,108,111,97,100,34,58,10,9,9,116,104,105,115,46,
3029− 114,101,108,111,97,100,108,110,48,32,61,32,116,104,105,115,
3030− 46,108,110,48,59,10,9,9,116,104,105,115,46,116,99,108,
3031− 101,97,114,40,41,59,10,9,9,98,114,101,97,107,59,10,
3032− 9,99,97,115,101,32,34,114,101,108,111,97,100,105,110,103,
3033− 34,58,10,9,9,105,102,40,97,114,103,46,108,101,110,103,
3034− 116,104,32,60,32,50,41,123,10,9,9,9,99,111,110,115,
3035− 111,108,101,46,108,111,103,40,116,104,105,115,46,100,105,118,
3036− 105,100,44,32,34,97,112,112,108,121,58,32,115,104,111,114,
3037− 116,32,114,101,108,111,97,100,105,110,103,34,41,59,10,9,
3038− 9,9,98,114,101,97,107,59,10,9,9,125,10,9,9,116,
3039− 104,105,115,46,108,105,110,101,115,46,112,117,115,104,40,123,
3040− 116,120,116,58,32,97,114,103,91,49,93,44,32,111,102,102,
3041− 58,32,116,104,105,115,46,114,101,108,111,97,100,111,102,102,
3042− 44,32,101,111,108,58,32,116,114,117,101,125,41,59,10,9,
3043− 9,116,104,105,115,46,114,101,108,111,97,100,111,102,102,32,
3044− 43,61,32,97,114,103,91,49,93,46,108,101,110,103,116,104,
3045− 32,43,32,49,59,10,9,9,98,114,101,97,107,10,9,99,
3046− 97,115,101,32,34,114,101,108,111,97,100,101,100,34,58,10,
3047− 9,9,105,102,40,97,114,103,46,108,101,110,103,116,104,32,
3048− 60,32,50,41,123,10,9,9,9,99,111,110,115,111,108,101,
3049− 46,108,111,103,40,116,104,105,115,46,100,105,118,105,100,44,
3050− 32,34,97,112,112,108,121,58,32,115,104,111,114,116,32,114,
3051− 101,108,111,97,100,101,100,34,41,59,10,9,9,9,98,114,
3052− 101,97,107,59,10,9,9,125,10,9,9,116,104,105,115,46,
3053− 118,101,114,115,32,61,32,112,97,114,115,101,73,110,116,40,
3054− 97,114,103,91,49,93,41,59,10,9,9,105,102,40,116,104,
3055− 105,115,46,114,101,108,111,97,100,108,110,48,32,60,32,116,
3056− 104,105,115,46,108,105,110,101,115,46,108,101,110,103,116,104,
3057− 41,32,123,10,9,9,9,118,97,114,32,108,110,48,32,61,
3058− 32,116,104,105,115,46,114,101,108,111,97,100,108,110,48,59,
3059− 10,9,9,9,100,101,108,101,116,101,32,116,104,105,115,46,
3060− 114,101,108,111,97,100,108,110,48,59,10,9,9,9,118,97,
3061− 114,32,120,108,110,32,61,32,116,104,105,115,46,108,105,110,
3062− 101,115,91,116,104,105,115,46,108,110,48,93,59,10,9,9,
3063− 9,105,102,40,120,108,110,41,32,123,10,9,9,9,9,116,
3064− 104,105,115,46,108,110,48,32,61,32,108,110,48,59,10,9,
3065− 9,9,9,116,104,105,115,46,102,114,111,102,102,32,61,32,
3066− 120,108,110,46,111,102,102,10,9,9,9,125,10,9,9,125,
3067− 10,9,9,116,104,105,115,46,114,101,100,114,97,119,116,101,
3068− 120,116,40,41,59,10,9,9,105,102,40,33,116,104,105,115,
3069− 46,117,115,101,114,114,101,115,105,122,101,100,41,32,123,10,
3070− 9,9,9,116,104,105,115,46,97,117,116,111,114,101,115,105,
3071− 122,101,40,41,59,10,9,9,125,10,9,9,47,47,32,116,
3072− 104,105,115,46,100,117,109,112,40,41,59,10,9,9,98,114,
3073− 101,97,107,59,10,9,99,97,115,101,32,34,109,97,114,107,
3074− 34,58,10,9,9,105,102,40,97,114,103,46,108,101,110,103,
3075− 116,104,32,60,32,51,41,123,10,9,9,9,99,111,110,115,
3076− 111,108,101,46,108,111,103,40,116,104,105,115,46,100,105,118,
3077− 105,100,44,32,34,97,112,112,108,121,58,32,115,104,111,114,
3078− 116,32,109,97,114,107,34,41,59,10,9,9,9,98,114,101,
3079− 97,107,59,10,9,9,125,10,9,9,118,97,114,32,112,111,
3080− 115,32,61,32,112,97,114,115,101,73,110,116,40,97,114,103,
3081− 91,50,93,41,59,10,9,9,116,104,105,115,46,115,101,116,
3082− 109,97,114,107,40,97,114,103,91,49,93,44,32,112,111,115,
3083− 41,59,10,9,9,98,114,101,97,107,59,10,9,99,97,115,
3084− 101,32,34,115,101,108,34,58,10,9,9,105,102,40,97,114,
3085− 103,46,108,101,110,103,116,104,32,60,32,51,41,123,10,9,
3086− 9,9,99,111,110,115,111,108,101,46,108,111,103,40,116,104,
3087− 105,115,46,100,105,118,105,100,44,32,34,97,112,112,108,121,
3088− 58,32,115,104,111,114,116,32,115,101,108,34,41,59,10,9,
3089− 9,9,98,114,101,97,107,59,10,9,9,125,10,9,9,118,
3090− 97,114,32,112,111,115,48,32,61,32,112,97,114,115,101,73,
3091− 110,116,40,97,114,103,91,49,93,41,59,10,9,9,118,97,
3092− 114,32,112,111,115,49,32,61,32,112,97,114,115,101,73,110,
3093− 116,40,97,114,103,91,50,93,41,59,10,9,9,116,104,105,
3094− 115,46,115,101,116,109,97,114,107,40,34,112,48,34,44,32,
3095− 112,111,115,48,41,59,10,9,9,116,104,105,115,46,115,101,
3096− 116,109,97,114,107,40,34,112,49,34,44,32,112,111,115,49,
3097− 41,59,10,9,9,116,104,105,115,46,116,115,101,116,115,101,
3098− 108,40,112,111,115,48,44,32,112,111,115,49,44,32,116,114,
3099− 117,101,41,59,10,9,9,116,104,105,115,46,118,105,101,119,
3100− 115,101,108,40,41,59,10,9,9,99,111,110,115,111,108,101,
3101− 46,108,111,103,40,34,115,101,116,115,101,108,34,44,32,112,
3102− 111,115,48,44,32,112,111,115,49,41,59,10,9,9,98,114,
3103− 101,97,107,59,10,9,99,97,115,101,32,34,100,101,108,109,
3104− 97,114,107,34,58,10,9,9,105,102,40,97,114,103,46,108,
3105− 101,110,103,116,104,32,60,32,50,41,123,10,9,9,9,99,
3106− 111,110,115,111,108,101,46,108,111,103,40,116,104,105,115,46,
3107− 100,105,118,105,100,44,32,34,97,112,112,108,121,58,32,115,
3108− 104,111,114,116,32,100,101,108,109,97,114,107,34,41,59,10,
3109− 9,9,9,98,114,101,97,107,59,10,9,9,125,10,9,9,
3110− 116,104,105,115,46,100,101,108,109,97,114,107,40,97,114,103,
3111− 91,49,93,41,59,10,9,9,98,114,101,97,107,59,10,9,
3112− 99,97,115,101,32,34,99,108,111,115,101,34,58,10,9,9,
3113− 116,104,105,115,46,119,115,46,99,108,111,115,101,40,41,59,
3114− 10,9,9,36,40,34,35,34,43,116,104,105,115,46,100,105,
3115− 118,105,100,41,46,114,101,109,111,118,101,40,41,59,10,9,
3116− 9,98,114,101,97,107,59,10,9,100,101,102,97,117,108,116,
3117− 58,10,9,9,99,111,110,115,111,108,101,46,108,111,103,40,
3118− 34,116,101,120,116,58,32,117,110,104,97,110,100,108,101,100,
3119− 34,44,32,97,114,103,91,48,93,41,59,10,9,125,10,125,
3120− 10,10,47,47,32,84,104,105,115,32,105,115,32,116,111,32,
3121− 112,114,101,118,101,110,116,32,116,104,101,32,101,118,101,110,
3122− 116,32,102,114,111,109,32,98,101,105,110,103,32,112,114,111,
3123− 112,97,103,97,116,101,100,32,116,111,32,116,104,101,32,112,
3124− 97,114,101,110,116,10,47,47,32,99,111,110,116,97,105,110,
3125− 101,114,46,10,47,47,32,68,101,115,112,105,116,101,32,116,
3126− 104,105,115,44,32,105,116,32,115,101,101,109,115,32,116,104,
3127− 97,116,32,105,102,32,119,101,32,114,101,116,117,114,110,32,
3128− 116,114,117,101,32,105,110,32,115,97,102,97,114,105,32,102,
3129− 111,114,32,97,32,107,101,121,100,111,119,110,10,47,47,32,
3130− 116,104,101,110,32,105,116,39,115,32,116,111,111,32,108,97,
3131− 116,101,32,97,110,100,32,116,104,101,32,115,112,97,99,101,
3132− 32,98,117,98,98,108,101,115,32,97,110,100,32,119,101,32,
3133− 115,99,114,111,108,108,32,119,104,101,110,32,119,101,32,115,
3134− 104,111,117,108,100,110,116,46,10,47,47,32,83,111,44,32,
3135− 108,111,99,107,110,107,101,121,100,111,119,110,32,114,101,116,
3136− 117,114,110,115,32,102,97,108,115,101,32,97,110,100,32,99,
3137− 97,108,108,115,44,32,98,121,32,104,97,110,100,44,32,116,
3138− 104,101,32,100,111,119,110,47,107,101,121,47,117,112,32,104,
3139− 97,110,100,108,101,114,115,46,10,102,117,110,99,116,105,111,
3140− 110,32,100,111,110,116,98,117,98,98,108,101,40,101,41,32,
3141− 123,10,9,105,102,32,40,101,41,32,123,10,9,9,101,46,
3142− 98,117,98,98,108,101,115,32,61,32,102,97,108,115,101,59,
3143− 10,9,9,105,102,40,101,46,115,116,111,112,80,114,111,112,
3144− 97,103,97,116,105,111,110,41,32,123,10,9,9,9,101,46,
3145− 115,116,111,112,80,114,111,112,97,103,97,116,105,111,110,40,
3146− 41,59,10,9,9,125,10,9,9,101,46,99,97,110,99,101,
3147− 108,66,117,98,98,108,101,32,61,32,116,114,117,101,59,10,
3148− 9,125,10,125,10,10,102,117,110,99,116,105,111,110,32,116,
3149− 108,111,99,107,110,107,101,121,100,111,119,110,40,101,41,32,
3150− 123,10,9,100,111,110,116,98,117,98,98,108,101,40,101,41,
3151− 59,10,9,105,102,40,116,104,105,115,46,105,115,108,111,99,
3152− 107,101,100,41,32,123,10,9,9,114,101,116,117,114,110,32,
3153− 116,107,101,121,100,111,119,110,46,99,97,108,108,40,116,104,
3154− 105,115,44,32,101,41,59,10,9,125,10,9,105,102,40,33,
3155− 116,104,105,115,46,108,111,99,107,105,110,103,41,32,123,10,
3156− 9,9,116,104,105,115,46,108,111,99,107,105,110,103,32,61,
3157− 32,116,114,117,101,59,10,9,9,116,104,105,115,46,112,111,
3158− 115,116,40,91,34,104,111,108,100,34,93,41,59,10,9,9,
1919+ 114,117,110,101,32,61,32,114,59,10,9,9,9,9,116,104,
1920+ 105,115,46,108,97,116,105,110,32,61,32,34,34,59,10,9,
1921+ 9,9,125,10,9,9,125,10,9,9,116,104,105,115,46,80,
1922+ 111,115,116,40,91,34,101,105,110,115,34,44,32,114,117,110,
1923+ 101,44,32,34,34,43,116,104,105,115,46,112,48,93,41,59,
1924+ 10,9,125,59,10,10,9,116,104,105,115,46,116,108,111,99,
1925+ 107,110,107,101,121,112,114,101,115,115,32,61,32,102,117,110,
1926+ 99,116,105,111,110,40,41,32,123,10,9,9,100,111,110,116,
1927+ 98,117,98,98,108,101,40,101,41,59,10,9,9,105,102,40,
1928+ 116,104,105,115,46,105,115,108,111,99,107,101,100,41,32,123,
1929+ 10,9,9,9,114,101,116,117,114,110,32,116,104,105,115,46,
1930+ 116,107,101,121,112,114,101,115,115,40,101,41,59,10,9,9,
1931+ 125,10,9,9,105,102,40,33,116,104,105,115,46,108,111,99,
1932+ 107,105,110,103,41,32,123,10,9,9,9,116,104,105,115,46,
1933+ 108,111,99,107,105,110,103,32,61,32,116,114,117,101,59,10,
1934+ 9,9,9,116,104,105,115,46,112,111,115,116,40,91,34,104,
1935+ 111,108,100,34,93,41,59,10,9,9,9,99,111,110,115,111,
1936+ 108,101,46,108,111,103,40,34,104,111,108,100,105,110,103,46,
1937+ 46,46,34,41,59,10,9,9,125,10,9,9,118,97,114,32,
1938+ 115,101,108,102,32,61,32,116,104,105,115,59,10,9,9,118,
1939+ 97,114,32,120,101,32,61,32,106,81,117,101,114,121,46,69,
1940+ 118,101,110,116,40,34,107,101,121,112,114,101,115,115,34,41,
1941+ 59,10,9,9,120,101,46,119,104,105,99,104,32,61,32,101,
1942+ 46,119,104,105,99,104,59,10,9,9,120,101,46,107,101,121,
1943+ 67,111,100,101,32,61,32,101,46,107,101,121,67,111,100,101,
1944+ 59,10,9,9,120,101,46,99,116,114,108,75,101,121,32,61,
1945+ 32,101,46,99,116,114,108,75,101,121,59,10,9,9,120,101,
1946+ 46,109,101,116,97,75,101,121,32,61,32,101,46,109,101,116,
1947+ 97,75,101,121,59,10,9,9,120,101,46,112,114,101,118,101,
1948+ 110,116,68,101,102,97,117,108,116,32,61,32,102,117,110,99,
1949+ 116,105,111,110,40,41,123,125,59,10,9,9,116,104,105,115,
1950+ 46,119,104,101,110,108,111,99,107,101,100,46,112,117,115,104,
1951+ 40,102,117,110,99,116,105,111,110,40,41,32,123,10,9,9,
1952+ 9,99,111,110,115,111,108,101,46,108,111,103,40,34,104,101,
1953+ 108,100,32,107,101,121,112,114,101,115,115,34,41,59,10,9,
1954+ 9,9,36,40,115,101,108,102,46,99,41,46,116,114,105,103,
1955+ 103,101,114,40,120,101,41,59,10,9,9,9,114,101,116,117,
1956+ 114,110,32,102,97,108,115,101,59,10,9,9,125,41,59,10,
1957+ 9,9,114,101,116,117,114,110,32,116,104,105,115,46,116,107,
1958+ 101,121,112,114,101,115,115,40,101,44,32,116,114,117,101,41,
1959+ 59,10,9,125,59,10,10,9,116,104,105,115,46,116,107,101,
1960+ 121,117,112,32,61,32,102,117,110,99,116,105,111,110,40,101,
1961+ 44,32,100,101,102,101,114,114,101,100,41,32,123,10,9,9,
1962+ 118,97,114,32,107,101,121,32,61,32,101,46,107,101,121,67,
1963+ 111,100,101,59,10,9,9,105,102,40,33,101,46,107,101,121,
1964+ 67,111,100,101,41,10,9,9,9,107,101,121,32,61,32,101,
1965+ 46,119,104,105,99,104,59,10,9,9,118,97,114,32,114,117,
1966+ 110,101,32,61,32,83,116,114,105,110,103,46,102,114,111,109,
1967+ 67,104,97,114,67,111,100,101,40,101,46,107,101,121,67,111,
1968+ 100,101,41,59,10,9,9,118,97,114,32,105,115,100,101,97,
1969+ 100,107,101,121,32,61,32,101,32,38,38,32,101,46,111,114,
1970+ 105,103,105,110,97,108,69,118,101,110,116,32,38,38,10,9,
1971+ 9,9,9,101,46,111,114,105,103,105,110,97,108,69,118,101,
1972+ 110,116,46,107,101,121,73,100,101,110,116,105,102,105,101,114,
1973+ 32,61,61,32,34,85,110,105,100,101,110,116,105,102,105,101,
1974+ 100,34,59,10,9,9,105,102,40,116,100,101,98,117,103,41,
1975+ 32,123,10,9,9,9,118,97,114,32,100,115,32,61,32,40,
1976+ 105,115,100,101,97,100,107,101,121,32,63,32,34,32,100,101,
1977+ 97,100,34,32,58,32,34,34,41,59,10,9,9,9,99,111,
1978+ 110,115,111,108,101,46,108,111,103,40,34,107,101,121,117,112,
1979+ 32,119,104,105,99,104,32,34,32,43,32,101,46,119,104,105,
1980+ 99,104,32,43,32,34,32,107,101,121,32,34,32,43,32,101,
1981+ 46,107,101,121,67,111,100,101,32,43,10,9,9,9,9,34,
1982+ 32,39,34,32,43,32,114,117,110,101,32,43,32,34,39,34,
1983+ 32,43,32,100,115,32,43,10,9,9,9,9,34,32,34,32,
1984+ 43,32,101,46,99,116,114,108,75,101,121,32,43,32,34,32,
1985+ 34,32,43,32,101,46,109,101,116,97,75,101,121,44,32,101,
1986+ 41,59,10,9,9,125,10,9,9,115,119,105,116,99,104,40,
1987+ 107,101,121,41,123,10,9,9,99,97,115,101,32,49,49,50,
1988+ 58,9,47,42,32,70,49,32,42,47,10,9,9,99,97,115,
1989+ 101,32,49,49,51,58,9,47,42,32,70,50,32,42,47,10,
1990+ 9,9,99,97,115,101,32,49,49,52,58,9,47,42,32,70,
1991+ 51,32,42,47,10,9,9,99,97,115,101,32,49,49,53,58,
1992+ 9,47,42,32,70,52,32,42,47,10,9,9,9,105,102,40,
1993+ 100,101,102,101,114,114,101,100,41,32,123,10,9,9,9,9,
1994+ 98,114,101,97,107,59,10,9,9,9,125,10,9,9,9,118,
1995+ 97,114,32,109,101,118,32,61,32,123,10,9,9,9,9,102,
1996+ 97,107,101,120,58,32,116,104,105,115,46,108,97,115,116,120,
1997+ 44,10,9,9,9,9,102,97,107,101,121,58,32,116,104,105,
1998+ 115,46,108,97,115,116,121,44,10,9,9,9,9,119,104,105,
1999+ 99,104,58,32,107,101,121,45,49,49,50,43,49,44,10,9,
2000+ 9,9,125,59,10,9,9,9,109,101,118,46,112,114,101,118,
2001+ 101,110,116,68,101,102,97,117,108,116,32,61,32,102,117,110,
2002+ 99,116,105,111,110,40,41,123,125,10,9,9,9,116,104,105,
2003+ 115,46,99,46,111,110,109,111,117,115,101,117,112,40,109,101,
2004+ 118,41,59,10,9,9,9,98,114,101,97,107,59,10,9,9,
2005+ 99,97,115,101,32,49,56,58,32,47,42,32,65,108,116,32,
2006+ 42,47,10,9,9,9,116,104,105,115,46,99,111,109,112,111,
2007+ 115,105,110,103,32,61,32,116,114,117,101,59,10,9,9,9,
2008+ 114,101,116,117,114,110,32,116,114,117,101,59,10,9,9,100,
2009+ 101,102,97,117,108,116,58,10,9,9,9,114,101,116,117,114,
2010+ 110,32,116,114,117,101,59,10,9,9,125,10,9,9,114,101,
2011+ 116,117,114,110,32,102,97,108,115,101,59,10,9,125,59,10,
2012+ 10,9,116,104,105,115,46,116,108,111,99,107,110,107,101,121,
2013+ 117,112,32,61,32,102,117,110,99,116,105,111,110,40,41,32,
2014+ 123,10,9,9,100,111,110,116,98,117,98,98,108,101,40,101,
2015+ 41,59,10,9,9,105,102,40,116,104,105,115,46,105,115,108,
2016+ 111,99,107,101,100,41,32,123,10,9,9,9,114,101,116,117,
2017+ 114,110,32,116,104,105,115,46,116,107,101,121,117,112,40,101,
2018+ 41,59,10,9,9,125,10,9,9,105,102,40,33,116,104,105,
2019+ 115,46,108,111,99,107,105,110,103,41,32,123,10,9,9,9,
2020+ 116,104,105,115,46,108,111,99,107,105,110,103,32,61,32,116,
2021+ 114,117,101,59,10,9,9,9,116,104,105,115,46,112,111,115,
2022+ 116,40,91,34,104,111,108,100,34,93,41,59,10,9,9,9,
31592023 99,111,110,115,111,108,101,46,108,111,103,40,34,104,111,108,
3160− 100,105,110,103,46,46,46,34,41,59,10,9,125,10,9,118,
3161− 97,114,32,115,101,108,102,32,61,32,116,104,105,115,59,10,
3162− 9,118,97,114,32,120,101,32,61,32,106,81,117,101,114,121,
3163− 46,69,118,101,110,116,40,34,107,101,121,100,111,119,110,34,
3164− 41,59,10,9,120,101,46,119,104,105,99,104,32,61,32,101,
3165− 46,119,104,105,99,104,59,10,9,120,101,46,107,101,121,67,
3166− 111,100,101,32,61,32,101,46,107,101,121,67,111,100,101,59,
3167− 10,9,120,101,46,99,116,114,108,75,101,121,32,61,32,101,
3168− 46,99,116,114,108,75,101,121,59,10,9,120,101,46,109,101,
3169− 116,97,75,101,121,32,61,32,101,46,109,101,116,97,75,101,
3170− 121,59,10,9,120,101,46,112,114,101,118,101,110,116,68,101,
3171− 102,97,117,108,116,32,61,32,102,117,110,99,116,105,111,110,
3172− 40,41,123,125,59,10,9,116,104,105,115,46,119,104,101,110,
2024+ 100,105,110,103,46,46,46,34,41,59,10,9,9,125,10,9,
2025+ 9,118,97,114,32,115,101,108,102,32,61,32,116,104,105,115,
2026+ 59,10,9,9,118,97,114,32,120,101,32,61,32,106,81,117,
2027+ 101,114,121,46,69,118,101,110,116,40,34,107,101,121,117,112,
2028+ 34,41,59,10,9,9,120,101,46,119,104,105,99,104,32,61,
2029+ 32,101,46,119,104,105,99,104,59,10,9,9,120,101,46,107,
2030+ 101,121,67,111,100,101,32,61,32,101,46,107,101,121,67,111,
2031+ 100,101,59,10,9,9,120,101,46,99,116,114,108,75,101,121,
2032+ 32,61,32,101,46,99,116,114,108,75,101,121,59,10,9,9,
2033+ 120,101,46,109,101,116,97,75,101,121,32,61,32,101,46,109,
2034+ 101,116,97,75,101,121,59,10,9,9,120,101,46,112,114,101,
2035+ 118,101,110,116,68,101,102,97,117,108,116,32,61,32,102,117,
2036+ 110,99,116,105,111,110,40,41,123,125,59,10,9,9,116,104,
2037+ 105,115,46,119,104,101,110,108,111,99,107,101,100,46,112,117,
2038+ 115,104,40,102,117,110,99,116,105,111,110,40,41,32,123,10,
2039+ 9,9,9,99,111,110,115,111,108,101,46,108,111,103,40,34,
2040+ 104,101,108,100,32,107,101,121,117,112,34,41,59,10,9,9,
2041+ 9,36,40,115,101,108,102,46,99,41,46,116,114,105,103,103,
2042+ 101,114,40,120,101,41,59,10,9,9,9,114,101,116,117,114,
2043+ 110,32,102,97,108,115,101,59,10,9,9,125,41,59,10,9,
2044+ 9,114,101,116,117,114,110,32,116,104,105,115,46,116,107,101,
2045+ 121,117,112,40,101,44,32,116,114,117,101,41,59,10,9,125,
2046+ 59,10,10,9,116,104,105,115,46,116,109,100,111,119,110,32,
2047+ 61,32,102,117,110,99,116,105,111,110,40,101,41,32,123,10,
2048+ 9,9,105,102,40,48,41,99,111,110,115,111,108,101,46,108,
2049+ 111,103,40,34,116,109,100,111,119,110,32,34,44,32,116,104,
2050+ 105,115,46,105,100,44,32,101,41,59,10,9,9,116,104,105,
2051+ 115,46,115,101,108,101,99,116,115,116,97,114,116,40,41,59,
2052+ 10,9,9,101,46,112,114,101,118,101,110,116,68,101,102,97,
2053+ 117,108,116,40,41,59,10,9,9,116,104,105,115,46,115,101,
2054+ 99,111,110,100,97,114,121,32,61,32,48,59,9,9,47,42,
2055+ 32,112,97,114,97,110,111,105,97,58,32,115,101,101,32,116,
2056+ 109,50,51,52,32,42,47,10,9,9,116,104,105,115,46,115,
2057+ 101,99,111,110,100,97,114,121,97,98,111,114,116,32,61,32,
2058+ 102,97,108,115,101,59,10,9,9,116,104,105,115,46,109,112,
2059+ 114,101,115,115,40,101,41,59,10,9,9,116,104,105,115,46,
2060+ 101,118,120,121,40,101,41,59,10,9,9,118,97,114,32,98,
2061+ 32,61,32,116,104,105,115,46,98,117,116,116,111,110,115,59,
2062+ 10,9,9,115,119,105,116,99,104,40,98,41,123,10,9,9,
2063+ 99,97,115,101,32,49,58,10,9,9,9,118,97,114,32,108,
2064+ 110,44,32,108,110,111,102,102,44,32,112,97,115,116,59,10,
2065+ 9,9,9,91,108,110,44,32,108,110,111,102,102,44,32,112,
2066+ 97,115,116,93,32,61,32,116,104,105,115,46,112,116,114,50,
2067+ 115,101,101,107,40,116,104,105,115,46,108,97,115,116,120,44,
2068+ 32,116,104,105,115,46,108,97,115,116,121,41,59,10,9,9,
2069+ 9,118,97,114,32,112,111,115,32,61,32,116,104,105,115,46,
2070+ 115,101,101,107,112,111,115,40,108,110,44,32,108,110,111,102,
2071+ 102,41,59,10,9,9,9,116,104,105,115,46,115,101,116,115,
2072+ 101,108,40,112,111,115,44,32,112,111,115,41,59,10,9,9,
2073+ 9,116,104,105,115,46,109,49,40,112,111,115,41,59,10,9,
2074+ 9,9,98,114,101,97,107,59,10,9,9,99,97,115,101,32,
2075+ 50,58,10,9,9,99,97,115,101,32,52,58,10,9,9,99,
2076+ 97,115,101,32,56,58,10,9,9,9,118,97,114,32,108,110,
2077+ 44,32,108,110,111,102,102,44,32,112,97,115,116,59,10,9,
2078+ 9,9,91,108,110,44,32,108,110,111,102,102,44,32,112,97,
2079+ 115,116,93,32,61,32,116,104,105,115,46,112,116,114,50,115,
2080+ 101,101,107,40,116,104,105,115,46,108,97,115,116,120,44,32,
2081+ 116,104,105,115,46,108,97,115,116,121,41,59,10,9,9,9,
2082+ 118,97,114,32,112,111,115,32,61,32,116,104,105,115,46,115,
2083+ 101,101,107,112,111,115,40,108,110,44,32,108,110,111,102,102,
2084+ 41,59,10,9,9,9,116,104,105,115,46,111,108,100,112,48,
2085+ 32,61,32,116,104,105,115,46,112,48,59,10,9,9,9,116,
2086+ 104,105,115,46,111,108,100,112,49,32,61,32,116,104,105,115,
2087+ 46,112,49,59,10,9,9,9,116,104,105,115,46,115,101,116,
2088+ 115,101,108,40,112,111,115,44,32,112,111,115,41,59,10,9,
2089+ 9,9,116,104,105,115,46,109,50,51,52,40,112,111,115,44,
2090+ 32,98,41,59,10,9,9,9,98,114,101,97,107,59,10,9,
2091+ 9,100,101,102,97,117,108,116,58,10,9,9,9,116,104,105,
2092+ 115,46,109,119,97,105,116,40,41,59,10,9,9,125,10,9,
2093+ 9,101,46,114,101,116,117,114,110,86,97,108,117,101,32,61,
2094+ 32,102,97,108,115,101,59,10,9,125,59,10,10,9,116,104,
2095+ 105,115,46,116,108,111,99,107,110,109,100,111,119,110,32,61,
2096+ 32,102,117,110,99,116,105,111,110,40,41,32,123,10,9,9,
2097+ 105,102,40,116,104,105,115,46,105,115,108,111,99,107,101,100,
2098+ 41,32,123,10,9,9,9,114,101,116,117,114,110,32,116,104,
2099+ 105,115,46,116,109,100,111,119,110,40,101,41,59,10,9,9,
2100+ 125,10,9,9,105,102,40,33,116,104,105,115,46,108,111,99,
2101+ 107,105,110,103,41,32,123,10,9,9,9,116,104,105,115,46,
2102+ 108,111,99,107,105,110,103,32,61,32,116,114,117,101,59,10,
2103+ 9,9,9,116,104,105,115,46,112,111,115,116,40,91,34,104,
2104+ 111,108,100,34,93,41,59,10,9,9,9,99,111,110,115,111,
2105+ 108,101,46,108,111,103,40,34,104,111,108,100,105,110,103,46,
2106+ 46,46,34,41,59,10,9,9,125,10,9,9,118,97,114,32,
2107+ 115,101,108,102,32,61,32,116,104,105,115,59,10,9,9,118,
2108+ 97,114,32,120,101,32,61,32,106,81,117,101,114,121,46,69,
2109+ 118,101,110,116,40,34,109,111,117,115,101,100,111,119,110,34,
2110+ 41,59,10,9,9,120,101,46,119,104,105,99,104,32,61,32,
2111+ 101,46,119,104,105,99,104,59,10,9,9,120,101,46,112,97,
2112+ 103,101,88,32,61,32,101,46,112,97,103,101,88,59,10,9,
2113+ 9,120,101,46,112,97,103,101,89,32,61,32,101,46,112,97,
2114+ 103,101,89,59,10,9,9,120,101,46,112,114,101,118,101,110,
2115+ 116,68,101,102,97,117,108,116,32,61,32,102,117,110,99,116,
2116+ 105,111,110,40,41,123,125,59,10,9,9,116,104,105,115,46,
2117+ 119,104,101,110,108,111,99,107,101,100,46,112,117,115,104,40,
2118+ 102,117,110,99,116,105,111,110,40,41,32,123,10,9,9,9,
2119+ 99,111,110,115,111,108,101,46,108,111,103,40,34,104,101,108,
2120+ 100,32,109,111,117,115,101,100,111,119,110,34,41,59,10,9,
2121+ 9,9,36,40,115,101,108,102,46,99,41,46,116,114,105,103,
2122+ 103,101,114,40,120,101,41,59,10,9,9,9,114,101,116,117,
2123+ 114,110,32,102,97,108,115,101,59,10,9,9,125,41,59,10,
2124+ 9,9,114,101,116,117,114,110,32,102,97,108,115,101,59,10,
2125+ 9,125,59,10,10,9,116,104,105,115,46,116,109,117,112,32,
2126+ 61,32,102,117,110,99,116,105,111,110,40,101,41,32,123,10,
2127+ 9,9,101,46,112,114,101,118,101,110,116,68,101,102,97,117,
2128+ 108,116,40,41,59,10,9,9,116,104,105,115,46,109,114,108,
2129+ 115,101,40,101,41,59,10,9,9,116,104,105,115,46,101,118,
2130+ 120,121,40,101,41,59,10,9,9,105,102,40,116,104,105,115,
2131+ 46,98,117,116,116,111,110,115,32,61,61,32,48,41,32,123,
2132+ 10,9,9,9,116,104,105,115,46,115,101,108,101,99,116,101,
2133+ 110,100,40,41,59,10,9,9,125,10,9,125,59,10,10,9,
2134+ 116,104,105,115,46,116,108,111,99,107,110,109,117,112,32,61,
2135+ 32,102,117,110,99,116,105,111,110,40,41,32,123,10,9,9,
2136+ 105,102,40,116,104,105,115,46,105,115,108,111,99,107,101,100,
2137+ 41,32,123,10,9,9,9,114,101,116,117,114,110,32,116,104,
2138+ 105,115,46,116,109,117,112,40,101,41,59,10,9,9,125,10,
2139+ 9,9,105,102,40,33,116,104,105,115,46,108,111,99,107,105,
2140+ 110,103,41,32,123,10,9,9,9,116,104,105,115,46,108,111,
2141+ 99,107,105,110,103,32,61,32,116,114,117,101,59,10,9,9,
2142+ 9,116,104,105,115,46,112,111,115,116,40,91,34,104,111,108,
2143+ 100,34,93,41,59,10,9,9,9,99,111,110,115,111,108,101,
2144+ 46,108,111,103,40,34,104,111,108,100,105,110,103,46,46,46,
2145+ 34,41,59,10,9,9,125,10,9,9,118,97,114,32,115,101,
2146+ 108,102,32,61,32,116,104,105,115,59,10,9,9,118,97,114,
2147+ 32,120,101,32,61,32,106,81,117,101,114,121,46,69,118,101,
2148+ 110,116,40,34,109,111,117,115,101,117,112,34,41,59,10,9,
2149+ 9,120,101,46,119,104,105,99,104,32,61,32,101,46,119,104,
2150+ 105,99,104,59,10,9,9,120,101,46,112,97,103,101,88,32,
2151+ 61,32,101,46,112,97,103,101,88,59,10,9,9,120,101,46,
2152+ 112,97,103,101,89,32,61,32,101,46,112,97,103,101,89,59,
2153+ 10,9,9,120,101,46,112,114,101,118,101,110,116,68,101,102,
2154+ 97,117,108,116,32,61,32,102,117,110,99,116,105,111,110,40,
2155+ 41,123,125,59,10,9,9,116,104,105,115,46,119,104,101,110,
31732156 108,111,99,107,101,100,46,112,117,115,104,40,102,117,110,99,
3174− 116,105,111,110,40,41,32,123,10,9,9,99,111,110,115,111,
3175− 108,101,46,108,111,103,40,34,104,101,108,100,32,107,101,121,
3176− 100,111,119,110,34,41,59,10,9,9,36,40,115,101,108,102,
3177− 41,46,116,114,105,103,103,101,114,40,120,101,41,59,10,9,
3178− 9,114,101,116,117,114,110,32,102,97,108,115,101,59,10,9,
3179− 125,41,59,10,9,114,101,116,117,114,110,32,116,107,101,121,
3180− 100,111,119,110,46,99,97,108,108,40,116,104,105,115,44,32,
3181− 101,44,32,116,114,117,101,41,59,10,125,10,10,102,117,110,
3182− 99,116,105,111,110,32,116,108,111,99,107,110,101,118,107,101,
3183− 121,40,101,41,32,123,10,9,100,111,110,116,98,117,98,98,
3184− 108,101,40,101,41,59,10,9,105,102,40,116,104,105,115,46,
3185− 105,115,108,111,99,107,101,100,41,32,123,10,9,9,114,101,
3186− 116,117,114,110,32,116,101,118,107,101,121,46,99,97,108,108,
3187− 40,116,104,105,115,44,32,101,41,59,10,9,125,10,9,105,
3188− 102,40,33,116,104,105,115,46,108,111,99,107,105,110,103,41,
3189− 32,123,10,9,9,116,104,105,115,46,108,111,99,107,105,110,
2157+ 116,105,111,110,40,41,32,123,10,9,9,9,99,111,110,115,
2158+ 111,108,101,46,108,111,103,40,34,104,101,108,100,32,109,111,
2159+ 117,115,101,117,112,34,41,59,10,9,9,9,36,40,115,101,
2160+ 108,102,46,99,41,46,116,114,105,103,103,101,114,40,120,101,
2161+ 41,59,10,9,9,9,114,101,116,117,114,110,32,102,97,108,
2162+ 115,101,59,10,9,9,125,41,59,10,9,9,114,101,116,117,
2163+ 114,110,32,102,97,108,115,101,59,10,9,125,59,10,10,9,
2164+ 116,104,105,115,46,108,111,99,107,101,100,32,61,32,102,117,
2165+ 110,99,116,105,111,110,40,41,32,123,10,9,9,105,102,40,
2166+ 116,104,105,115,46,105,115,108,111,99,107,101,100,41,10,9,
2167+ 9,9,114,101,116,117,114,110,59,10,9,9,105,102,40,116,
2168+ 104,105,115,46,108,111,99,107,105,110,103,41,32,123,10,9,
2169+ 9,9,116,104,105,115,46,108,111,99,107,105,110,103,32,61,
2170+ 32,102,97,108,115,101,59,10,9,9,9,116,104,105,115,46,
2171+ 105,115,108,111,99,107,101,100,32,61,32,116,114,117,101,59,
2172+ 10,9,9,9,116,104,105,115,46,107,101,121,100,111,119,110,
2173+ 32,61,32,116,104,105,115,46,116,107,101,121,100,111,119,110,
2174+ 59,10,9,9,9,116,104,105,115,46,107,101,121,112,114,101,
2175+ 115,115,32,61,32,116,104,105,115,46,116,107,101,121,112,114,
2176+ 101,115,115,59,10,9,9,9,116,104,105,115,46,107,101,121,
2177+ 117,112,32,61,32,116,104,105,115,46,116,107,101,121,117,112,
2178+ 59,10,9,9,9,116,104,105,115,46,109,100,111,119,110,32,
2179+ 61,32,116,104,105,115,46,116,109,100,111,119,110,59,10,9,
2180+ 9,9,116,104,105,115,46,109,117,112,32,61,32,116,104,105,
2181+ 115,46,116,109,117,112,59,10,9,9,9,102,111,114,40,118,
2182+ 97,114,32,105,32,61,32,48,59,32,105,32,60,32,116,104,
2183+ 105,115,46,119,104,101,110,108,111,99,107,101,100,46,108,101,
2184+ 110,103,116,104,59,32,105,43,43,41,32,123,10,9,9,9,
2185+ 9,116,104,105,115,46,119,104,101,110,108,111,99,107,101,100,
2186+ 91,105,93,40,41,59,10,9,9,9,125,10,9,9,9,116,
2187+ 104,105,115,46,119,104,101,110,108,111,99,107,101,100,32,61,
2188+ 32,91,93,59,10,9,9,125,10,9,125,59,10,10,9,116,
2189+ 104,105,115,46,117,110,108,111,99,107,101,100,32,61,32,102,
2190+ 117,110,99,116,105,111,110,40,41,32,123,10,9,9,116,104,
2191+ 105,115,46,105,115,108,111,99,107,101,100,32,61,32,102,97,
2192+ 108,115,101,59,10,9,9,116,104,105,115,46,108,111,99,107,
2193+ 105,110,103,32,61,32,102,97,108,115,101,59,10,9,9,116,
2194+ 104,105,115,46,109,117,115,116,117,110,108,111,99,107,32,61,
2195+ 32,102,97,108,115,101,59,10,9,9,116,104,105,115,46,119,
2196+ 104,101,110,108,111,99,107,101,100,32,61,32,91,93,59,10,
2197+ 9,9,116,104,105,115,46,107,101,121,100,111,119,110,32,61,
2198+ 32,116,104,105,115,46,116,108,111,99,107,110,107,101,121,100,
2199+ 111,119,110,59,10,9,9,116,104,105,115,46,107,101,121,112,
2200+ 114,101,115,115,32,61,32,116,104,105,115,46,116,108,111,99,
2201+ 107,110,107,101,121,112,114,101,115,115,59,10,9,9,116,104,
2202+ 105,115,46,107,101,121,117,112,32,61,32,116,104,105,115,46,
2203+ 116,108,111,99,107,110,107,101,121,117,112,59,10,9,9,116,
2204+ 104,105,115,46,109,100,111,119,110,32,61,32,116,104,105,115,
2205+ 46,108,111,99,107,110,109,100,111,119,110,59,10,9,9,116,
2206+ 104,105,115,46,109,117,112,32,61,32,116,104,105,115,46,116,
2207+ 108,111,99,107,110,109,117,112,59,10,9,9,116,104,105,115,
2208+ 46,112,111,115,116,40,91,34,116,105,99,107,34,44,32,34,
2209+ 34,43,116,104,105,115,46,112,48,44,32,34,34,43,116,104,
2210+ 105,115,46,112,49,93,41,59,10,9,9,116,104,105,115,46,
2211+ 112,111,115,116,40,91,34,114,108,115,101,100,34,93,41,59,
2212+ 10,9,9,47,47,32,99,111,108,108,97,112,115,101,32,116,
2213+ 104,101,32,115,101,108,101,99,116,105,111,110,32,111,114,32,
2214+ 111,116,104,101,114,39,115,32,109,105,103,104,116,32,105,110,
2215+ 115,101,114,116,32,105,110,32,116,104,101,32,109,105,100,100,
2216+ 108,101,46,10,9,9,105,102,40,116,104,105,115,46,112,48,
2217+ 32,33,61,32,116,104,105,115,46,112,49,41,32,123,10,9,
2218+ 9,9,116,104,105,115,46,115,101,116,115,101,108,40,116,104,
2219+ 105,115,46,112,48,44,32,116,104,105,115,46,112,49,44,32,
2220+ 116,114,117,101,41,59,10,9,9,125,10,9,125,59,10,10,
2221+ 9,116,104,105,115,46,107,101,121,100,111,119,110,32,61,32,
2222+ 116,104,105,115,46,116,108,111,99,107,110,107,101,121,100,111,
2223+ 119,110,59,10,9,116,104,105,115,46,107,101,121,112,114,101,
2224+ 115,115,32,61,32,116,104,105,115,46,116,108,111,99,107,110,
2225+ 107,101,121,112,114,101,115,115,59,10,9,116,104,105,115,46,
2226+ 107,101,121,117,112,32,61,32,116,104,105,115,46,116,108,111,
2227+ 99,107,110,107,101,121,117,112,59,10,9,116,104,105,115,46,
2228+ 109,100,111,119,110,32,61,32,116,104,105,115,46,108,111,99,
2229+ 107,110,109,100,111,119,110,59,10,9,116,104,105,115,46,109,
2230+ 117,112,32,61,32,116,104,105,115,46,116,108,111,99,107,110,
2231+ 109,117,112,59,10,10,9,116,104,105,115,46,109,101,110,116,
2232+ 101,114,32,61,32,102,117,110,99,116,105,111,110,40,101,41,
2233+ 32,123,10,9,9,105,102,40,115,101,108,101,99,116,105,110,
2234+ 103,41,32,123,10,9,9,9,114,101,116,117,114,110,59,10,
2235+ 9,9,125,10,9,9,118,97,114,32,120,32,61,32,119,105,
2236+ 110,100,111,119,46,115,99,114,111,108,108,88,59,10,9,9,
2237+ 118,97,114,32,121,32,61,32,119,105,110,100,111,119,46,115,
2238+ 99,114,111,108,108,89,59,10,9,9,36,40,34,35,34,32,
2239+ 43,32,116,104,105,115,46,105,100,32,41,46,102,111,99,117,
2240+ 115,40,41,59,10,9,9,119,105,110,100,111,119,46,115,99,
2241+ 114,111,108,108,84,111,40,120,44,32,121,41,59,10,9,9,
2242+ 105,102,40,116,104,105,115,46,105,115,108,111,99,107,101,100,
2243+ 32,124,124,32,116,104,105,115,46,108,111,99,107,105,110,103,
2244+ 41,32,123,10,9,9,9,114,101,116,117,114,110,59,10,9,
2245+ 9,125,10,9,9,116,104,105,115,46,108,111,99,107,105,110,
31902246 103,32,61,32,116,114,117,101,59,10,9,9,116,104,105,115,
31912247 46,112,111,115,116,40,91,34,104,111,108,100,34,93,41,59,
31922248 10,9,9,99,111,110,115,111,108,101,46,108,111,103,40,34,
31932249 104,111,108,100,105,110,103,46,46,46,34,41,59,10,9,125,
3194− 10,9,118,97,114,32,115,101,108,102,32,61,32,116,104,105,
3195− 115,59,10,9,118,97,114,32,120,101,32,61,32,106,81,117,
3196− 101,114,121,46,69,118,101,110,116,40,34,107,101,121,112,114,
3197− 101,115,115,34,41,59,10,9,120,101,46,119,104,105,99,104,
3198− 32,61,32,101,46,119,104,105,99,104,59,10,9,120,101,46,
3199− 107,101,121,67,111,100,101,32,61,32,101,46,107,101,121,67,
3200− 111,100,101,59,10,9,120,101,46,99,116,114,108,75,101,121,
3201− 32,61,32,101,46,99,116,114,108,75,101,121,59,10,9,120,
3202− 101,46,109,101,116,97,75,101,121,32,61,32,101,46,109,101,
3203− 116,97,75,101,121,59,10,9,120,101,46,112,114,101,118,101,
3204− 110,116,68,101,102,97,117,108,116,32,61,32,102,117,110,99,
3205− 116,105,111,110,40,41,123,125,59,10,9,116,104,105,115,46,
3206− 119,104,101,110,108,111,99,107,101,100,46,112,117,115,104,40,
3207− 102,117,110,99,116,105,111,110,40,41,32,123,10,9,9,99,
3208− 111,110,115,111,108,101,46,108,111,103,40,34,104,101,108,100,
3209− 32,107,101,121,112,114,101,115,115,34,41,59,10,9,9,36,
3210− 40,115,101,108,102,41,46,116,114,105,103,103,101,114,40,120,
3211− 101,41,59,10,9,9,114,101,116,117,114,110,32,102,97,108,
3212− 115,101,59,10,9,125,41,59,10,9,114,101,116,117,114,110,
3213− 32,116,101,118,107,101,121,46,99,97,108,108,40,116,104,105,
3214− 115,44,32,101,44,32,116,114,117,101,41,59,10,125,10,10,
3215− 102,117,110,99,116,105,111,110,32,116,108,111,99,107,110,107,
3216− 101,121,117,112,40,101,41,32,123,10,9,100,111,110,116,98,
3217− 117,98,98,108,101,40,101,41,59,10,9,105,102,40,116,104,
3218− 105,115,46,105,115,108,111,99,107,101,100,41,32,123,10,9,
3219− 9,114,101,116,117,114,110,32,116,107,101,121,117,112,46,99,
3220− 97,108,108,40,116,104,105,115,44,32,101,41,59,10,9,125,
3221− 10,9,105,102,40,33,116,104,105,115,46,108,111,99,107,105,
3222− 110,103,41,32,123,10,9,9,116,104,105,115,46,108,111,99,
3223− 107,105,110,103,32,61,32,116,114,117,101,59,10,9,9,116,
3224− 104,105,115,46,112,111,115,116,40,91,34,104,111,108,100,34,
3225− 93,41,59,10,9,9,99,111,110,115,111,108,101,46,108,111,
3226− 103,40,34,104,111,108,100,105,110,103,46,46,46,34,41,59,
3227− 10,9,125,10,9,118,97,114,32,115,101,108,102,32,61,32,
3228− 116,104,105,115,59,10,9,118,97,114,32,120,101,32,61,32,
3229− 106,81,117,101,114,121,46,69,118,101,110,116,40,34,107,101,
3230− 121,117,112,34,41,59,10,9,120,101,46,119,104,105,99,104,
3231− 32,61,32,101,46,119,104,105,99,104,59,10,9,120,101,46,
3232− 107,101,121,67,111,100,101,32,61,32,101,46,107,101,121,67,
3233− 111,100,101,59,10,9,120,101,46,99,116,114,108,75,101,121,
3234− 32,61,32,101,46,99,116,114,108,75,101,121,59,10,9,120,
3235− 101,46,109,101,116,97,75,101,121,32,61,32,101,46,109,101,
3236− 116,97,75,101,121,59,10,9,120,101,46,112,114,101,118,101,
3237− 110,116,68,101,102,97,117,108,116,32,61,32,102,117,110,99,
3238− 116,105,111,110,40,41,123,125,59,10,9,116,104,105,115,46,
3239− 119,104,101,110,108,111,99,107,101,100,46,112,117,115,104,40,
3240− 102,117,110,99,116,105,111,110,40,41,32,123,10,9,9,99,
3241− 111,110,115,111,108,101,46,108,111,103,40,34,104,101,108,100,
3242− 32,107,101,121,117,112,34,41,59,10,9,9,36,40,115,101,
3243− 108,102,41,46,116,114,105,103,103,101,114,40,120,101,41,59,
3244− 10,9,9,114,101,116,117,114,110,32,102,97,108,115,101,59,
3245− 10,9,125,41,59,10,9,114,101,116,117,114,110,32,116,107,
3246− 101,121,117,112,46,99,97,108,108,40,116,104,105,115,44,32,
3247− 101,44,32,116,114,117,101,41,59,10,125,10,10,102,117,110,
3248− 99,116,105,111,110,32,116,108,111,99,107,110,109,100,111,119,
3249− 110,40,101,41,32,123,10,9,105,102,40,116,104,105,115,46,
3250− 105,115,108,111,99,107,101,100,41,32,123,10,9,9,114,101,
3251− 116,117,114,110,32,116,109,100,111,119,110,46,99,97,108,108,
3252− 40,116,104,105,115,44,32,101,41,59,10,9,125,10,9,105,
3253− 102,40,33,116,104,105,115,46,108,111,99,107,105,110,103,41,
3254− 32,123,10,9,9,116,104,105,115,46,108,111,99,107,105,110,
2250+ 59,10,10,9,116,104,105,115,46,109,119,104,101,101,108,32,
2251+ 61,32,102,117,110,99,116,105,111,110,40,101,41,32,123,10,
2252+ 9,9,101,46,115,116,111,112,80,114,111,112,97,103,97,116,
2253+ 105,111,110,40,41,59,10,9,9,105,102,40,33,116,104,105,
2254+ 115,46,105,115,108,111,99,107,101,100,32,38,38,32,33,116,
2255+ 104,105,115,46,108,111,99,107,105,110,103,41,32,123,10,9,
2256+ 9,9,116,104,105,115,46,108,111,99,107,105,110,103,32,61,
2257+ 32,116,114,117,101,59,10,9,9,9,116,104,105,115,46,112,
2258+ 111,115,116,40,91,34,104,111,108,100,34,93,41,59,10,9,
2259+ 9,9,99,111,110,115,111,108,101,46,108,111,103,40,34,104,
2260+ 111,108,100,105,110,103,46,46,46,34,41,59,10,9,9,9,
2261+ 114,101,116,117,114,110,32,102,97,108,115,101,59,10,9,9,
2262+ 125,10,9,9,116,114,121,32,123,10,9,9,9,101,46,112,
2263+ 114,101,118,101,110,116,68,101,102,97,117,108,116,40,41,59,
2264+ 10,9,9,9,118,97,114,32,100,32,61,32,101,46,119,104,
2265+ 101,101,108,68,101,108,116,97,32,42,32,45,49,59,10,9,
2266+ 9,9,118,97,114,32,115,32,61,32,49,59,10,9,9,9,
2267+ 105,102,40,100,32,60,32,48,41,123,10,9,9,9,9,100,
2268+ 32,61,32,45,100,59,10,9,9,9,9,100,32,61,32,49,
2269+ 32,43,32,77,97,116,104,46,102,108,111,111,114,40,100,47,
2270+ 49,48,41,59,10,9,9,9,9,105,102,40,116,104,105,115,
2271+ 46,115,99,114,111,108,108,100,111,119,110,40,100,41,41,123,
2272+ 10,9,9,9,9,9,116,104,105,115,46,117,110,116,105,99,
2273+ 107,40,41,59,10,9,9,9,9,9,116,104,105,115,46,114,
2274+ 101,100,114,97,119,116,101,120,116,40,41,59,10,9,9,9,
2275+ 9,125,10,9,9,9,125,101,108,115,101,123,10,9,9,9,
2276+ 9,100,32,61,32,49,32,43,32,77,97,116,104,46,102,108,
2277+ 111,111,114,40,100,47,49,48,41,59,10,9,9,9,9,105,
2278+ 102,40,116,104,105,115,46,115,99,114,111,108,108,117,112,40,
2279+ 100,41,41,123,10,9,9,9,9,9,116,104,105,115,46,117,
2280+ 110,116,105,99,107,40,41,59,10,9,9,9,9,9,116,104,
2281+ 105,115,46,114,101,100,114,97,119,116,101,120,116,40,41,59,
2282+ 10,9,9,9,9,125,10,9,9,9,125,10,9,9,125,99,
2283+ 97,116,99,104,40,101,120,41,123,10,9,9,9,99,111,110,
2284+ 115,111,108,101,46,108,111,103,40,34,116,109,119,104,101,101,
2285+ 108,58,32,34,32,43,32,101,120,41,59,10,9,9,125,10,
2286+ 9,125,59,10,10,9,116,104,105,115,46,109,109,111,118,101,
2287+ 32,61,32,102,117,110,99,116,105,111,110,40,101,41,32,123,
2288+ 10,9,9,105,102,40,116,104,105,115,46,105,115,108,111,99,
2289+ 107,101,100,32,124,124,32,116,104,105,115,46,108,111,99,107,
2290+ 105,110,103,41,32,123,10,9,9,9,114,101,116,117,114,110,
2291+ 32,116,104,105,115,46,101,118,120,121,40,101,41,59,10,9,
2292+ 9,125,10,9,9,116,104,105,115,46,108,111,99,107,105,110,
32552293 103,32,61,32,116,114,117,101,59,10,9,9,116,104,105,115,
32562294 46,112,111,115,116,40,91,34,104,111,108,100,34,93,41,59,
32572295 10,9,9,99,111,110,115,111,108,101,46,108,111,103,40,34,
3258− 104,111,108,100,105,110,103,46,46,46,34,41,59,10,9,125,
3259− 10,9,118,97,114,32,115,101,108,102,32,61,32,116,104,105,
3260− 115,59,10,9,118,97,114,32,120,101,32,61,32,106,81,117,
3261− 101,114,121,46,69,118,101,110,116,40,34,109,111,117,115,101,
3262− 100,111,119,110,34,41,59,10,9,120,101,46,119,104,105,99,
3263− 104,32,61,32,101,46,119,104,105,99,104,59,10,9,120,101,
3264− 46,112,97,103,101,88,32,61,32,101,46,112,97,103,101,88,
3265− 59,10,9,120,101,46,112,97,103,101,89,32,61,32,101,46,
3266− 112,97,103,101,89,59,10,9,120,101,46,112,114,101,118,101,
3267− 110,116,68,101,102,97,117,108,116,32,61,32,102,117,110,99,
3268− 116,105,111,110,40,41,123,125,59,10,9,116,104,105,115,46,
3269− 119,104,101,110,108,111,99,107,101,100,46,112,117,115,104,40,
3270− 102,117,110,99,116,105,111,110,40,41,32,123,10,9,9,99,
3271− 111,110,115,111,108,101,46,108,111,103,40,34,104,101,108,100,
3272− 32,109,111,117,115,101,100,111,119,110,34,41,59,10,9,9,
3273− 36,40,115,101,108,102,41,46,116,114,105,103,103,101,114,40,
3274− 120,101,41,59,10,9,9,114,101,116,117,114,110,32,102,97,
3275− 108,115,101,59,10,9,125,41,59,10,9,114,101,116,117,114,
3276− 110,32,102,97,108,115,101,59,10,125,10,10,102,117,110,99,
3277− 116,105,111,110,32,116,108,111,99,107,110,109,117,112,40,101,
3278− 41,32,123,10,9,105,102,40,116,104,105,115,46,105,115,108,
3279− 111,99,107,101,100,41,32,123,10,9,9,114,101,116,117,114,
3280− 110,32,116,109,117,112,46,99,97,108,108,40,116,104,105,115,
3281− 44,32,101,41,59,10,9,125,10,9,105,102,40,33,116,104,
3282− 105,115,46,108,111,99,107,105,110,103,41,32,123,10,9,9,
3283− 116,104,105,115,46,108,111,99,107,105,110,103,32,61,32,116,
3284− 114,117,101,59,10,9,9,116,104,105,115,46,112,111,115,116,
3285− 40,91,34,104,111,108,100,34,93,41,59,10,9,9,99,111,
3286− 110,115,111,108,101,46,108,111,103,40,34,104,111,108,100,105,
3287− 110,103,46,46,46,34,41,59,10,9,125,10,9,118,97,114,
3288− 32,115,101,108,102,32,61,32,116,104,105,115,59,10,9,118,

60358 more lines aren’t shown here.

net/ink/js/latin.js+1−1
@@ -1,6 +1,6 @@
11 "use strict";
22 /*
3− Plan 9 like latin composition.
3+ Clive's Plan 9 like latin composition.
44 kmap.islatin(str): prefix or full latin sequence
55 kmap.latin(str): str for a full latin sequence.
66 */
net/ink/js/lines.js+1049−0
@@ -0,0 +1,1049 @@
1+"use strict";
2+/*
3+ text frame support
4+*/
5+
6+/*
7+ * Hack to make sure the fixed and var width fonts exist, and
8+ * global font names for those variants.
9+ */
10+var tffixed = "monospace";
11+var tfvar = "Lucida Grande"; // or Verdana
12+var fontscheckedout = false;
13+var tdebug = false;
14+
15+function checkoutfonts(ctx) {
16+ if(fontscheckedout)
17+ return;
18+ fontscheckedout = true;
19+ var old = ctx.font;
20+ ctx.font = "50px Arial";
21+ var sz = ctx.measureText("ABC").width;
22+ ctx.font = "50px " + tffixed;
23+ if(ctx.measureText("ABC").width == sz)
24+ tffixed = "Courier";
25+ ctx.font = "50px " + tfvar;
26+ if(ctx.measureText("ABC").width == sz)
27+ tffixed = "Arial";
28+ ctx.font = old;
29+}
30+
31+var wordre = null;
32+function iswordchar(c) {
33+ if(!wordre)
34+ wordre = /\w/;
35+ return wordre.test(c);
36+}
37+
38+function islongwordchar(c) {
39+ if(!wordre)
40+ wordre = /\w/;
41+ return c == '-' || c == '(' || c == ')' || c == '/' || c == '.' || c == ':' || c == '#' || c == ',' || wordre.test(c);
42+}
43+
44+function islparen(c) {
45+ return "([{<'`\"".indexOf(c) >= 0;
46+}
47+
48+function isrparen(c) {
49+ return ")]}>'`\"".indexOf(c) >= 0;
50+}
51+
52+function rparen(c) {
53+ var i = "([{<".indexOf(c);
54+ if(i < 0)
55+ return c;
56+ return ")]}>".charAt(i);
57+}
58+
59+function lparen(c) {
60+ var i = ")]}>".indexOf(c);
61+ if(i < 0)
62+ return c;
63+ return "([{<".charAt(i);
64+}
65+
66+
67+function Line(lni, off, txt, eol) {
68+ this.lni = lni;
69+ this.off = off;
70+ this.txt = txt;
71+ this.eol = eol;
72+ this.next = null;
73+ this.prev = null;
74+
75+ // not toString(), by intention.
76+ this.str = function() {
77+ if(this.eol) {
78+ return ""+this.off+"["+lni+"]"+" =\t[" + this.txt + "\\n]";
79+ } else {
80+ return ""+this.off+"["+lni+"]"+" =\t[" + this.txt + "]";
81+ }
82+ };
83+
84+ // len counts the \n, this.txt.length does not.
85+ this.len = function() {
86+ if(this.eol) {
87+ return this.txt.length+1;
88+ }
89+ return this.txt.length;
90+ };
91+
92+ this.split = function(lnoff, addnl) {
93+ var nln = new Line(this.lni+1, this.off+lnoff+1, "", this.eol);
94+ var lnlen = this.txt.length;
95+ if(lnoff < lnlen) {
96+ nln.txt = this.txt.slice(lnoff, lnlen);
97+ this.txt = this.txt.slice(0, lnoff);
98+ }
99+ this.eol = addnl;
100+ nln.next = this.next;
101+ if(nln.next) {
102+ nln.next.prev = nln;
103+ }
104+ nln.prev = this;
105+ this.next = nln;
106+ };
107+
108+ this.join = function() {
109+ if(!this.next) {
110+ return;
111+ }
112+ this.txt += this.next.txt;
113+ this.eol = this.next.eol;
114+ this.next = this.next.next;
115+ if(this.next) {
116+ this.next.prev = this;
117+ }
118+ };
119+
120+ this.ins = function(t, lnoff) {
121+ if(lnoff == this.txt.length) {
122+ this.txt += t;
123+ } else {
124+ this.txt = this.txt.slice(0, lnoff) +
125+ t + this.txt.slice(lnoff, this.txt.length);
126+ }
127+ };
128+
129+ // does not del eol
130+ this.del = function(lnoff, n) {
131+ var lnlen = this.txt.lenth;
132+ if(lnoff+n > lnlen) {
133+ n = lnlen - lnoff;
134+ }
135+ this.txt = this.txt.slice(0,lnoff) + this.txt.slice(lnoff+n, lnlen);
136+ return n;
137+ };
138+
139+ this.delline = function() {
140+ if(this.prev) {
141+ this.prev.next = this.next;
142+ }
143+ if(this.next) {
144+ this.next.prev = this.prev;
145+ }
146+ };
147+
148+ this.renumber = function() {
149+ for(var ln = this; ln != null; ln = ln.next) {
150+ if(ln.prev == null) {
151+ ln.off = 0;
152+ ln.lni = 0;
153+ } else {
154+ ln.off = ln.prev.off + ln.prev.len();
155+ ln.lni = ln.prev.lni+1;
156+ }
157+ }
158+ };
159+}
160+
161+function Lines(els) {
162+ this.clear = function() {
163+ this.lns = new Line(0, 0, "", false);
164+ this.ln0 = this.lns; // first line shown
165+ this.lne = this.lns; // last line
166+ this.nrunes = 0;
167+ this.p0 = 0;
168+ this.p1 = 0;
169+ this.marks = []; // of {name: mark, pos: p}
170+ };
171+ this.clear();
172+ this.tabstop = 4;
173+
174+ // these must be redefined to draw the lines.
175+ this.untick = function(){};
176+ this.mayscrollins = function(ln){};
177+ this.mayscrolldel = function(ln){};
178+ this.scrolldown = function(n){ return 0;};
179+ this.scrollup = function(n){ return 0;};
180+ this.redrawtext = function(){};
181+ this.wrapoff = function(t){ return t.length; };
182+ this.frlninsdel = function(ln, ninsdel){};
183+
184+ // pos0 is optional (0 by default).
185+ this.tabtxt = function(t, pos0) {
186+ if(t.indexOf('\t') < 0)
187+ return t;
188+ var s = "";
189+ var pos = 0;
190+ if(pos0) {
191+ pos = pos0;
192+ }
193+ for(var i = 0; i < t.length; i++){
194+ var r = t.charAt(i);
195+ if(r == '\t') {
196+ do {
197+ s += " ";
198+ pos++;
199+ }while(pos%this.tabstop);
200+ }else{
201+ pos++;
202+ s += r;
203+ }
204+ }
205+ return s;
206+ };
207+
208+ this.markins = function(p0, n) {
209+ for(var i = 0; i < this.marks.length; i++){
210+ var m = this.marks[i];
211+ if(m.pos > p0) {
212+ m.pos += n;
213+ }
214+ }
215+ };
216+
217+ this.markdel = function(p0, p1) {
218+ for(var i = 0; i < this.marks.length; i++){
219+ var m = this.marks[i];
220+ if(m.pos <= p0) {
221+ continue;
222+ }
223+ var mp1 = p1;
224+ if(mp1 > m.pos) {
225+ mp1 = m.pos;
226+ }
227+ m.pos -= (mp1-p0);
228+ }
229+ };
230+
231+ this.setmark = function(mark, p) {
232+ for(var i = 0; i < this.marks.length; i++){
233+ var m = this.marks[i];
234+ if(m.name == mark) {
235+ m.pos = p;
236+ return;
237+ }
238+ }
239+ this.marks.push({name: mark, pos: p});
240+ };
241+
242+ this.getmark = function(mark) {
243+ for(var i = 0; i < this.marks.length; i++){
244+ var m = this.marks[i];
245+ if(m.name == mark) {
246+ return m;
247+ }
248+ }
249+ return null;
250+ };
251+
252+ this.delmark = function(mark) {
253+ for(var i = 0; i < this.marks.length; i++){
254+ var m = this.marks[i];
255+ if(m.name == mark) {
256+ this.marks.splice(i, 1);
257+ break;
258+ }
259+ }
260+ }
261+
262+ this.addln = function(ln) {
263+ ln.prev = this.lne;
264+ this.lne = ln;
265+ if(ln.prev) {
266+ ln.lni = ln.prev.lni+1;
267+ ln.off = ln.prev.off + ln.prev.len();
268+ ln.prev.next = ln;
269+ } else {
270+ ln.lni = 0;
271+ ln.off = 0;
272+ this.lns = ln;
273+ this.ln0 = ln;
274+ }
275+ this.nrunes += ln.len();
276+ };
277+
278+ // seek a line (first is 0).
279+ this.seekln = function(pos) {
280+ var ln = this.lns;
281+ for(var ln = this.lns; ln; ln = ln.next) {
282+ if(pos-- <= 0) {
283+ return ln;
284+ }
285+ }
286+ return this.lns;
287+ };
288+
289+ // return [line, off at line] or [null, 0]
290+ // if pos is at the end of a line, that line is returned,
291+ // and not the next line at 0.
292+ this.seek = function(pos) {
293+ for(var ln = this.lns; ln; ln = ln.next) {
294+ if(pos >= ln.off && pos <= ln.off + ln.txt.length) {
295+ return [ln, pos-ln.off];
296+ }
297+ }
298+ return [null, 0];
299+ };
300+
301+ // return the pos for a seek
302+ this.seekpos = function(ln, lnoff) {
303+ if(ln == null) {
304+ return 0;
305+ }
306+ if(lnoff > ln.txt.length) {
307+ return ln.off + ln.len();
308+ }
309+ return ln.off + lnoff;
310+ };
311+
312+ this.reformat = function(ln0) {
313+ // TODO: should get an indication regarding at which
314+ // point it's safe to assume that no further reformat
315+ // work is needed and stop there.
316+ for(var ln = ln0; ln != null; ) {
317+ // merge text on the same line
318+ while(!ln.eol && ln.next != null) {
319+ if(ln.next == this.lne) {
320+ this.lne = ln;
321+ }
322+ if(ln.next == this.ln0) {
323+ this.ln0 = ln;
324+ }
325+ ln.join();
326+ }
327+ // remove empty lines but keep an empty line at the end.
328+ var next = ln.next;
329+ if(ln.len() == 0 && ln.next) {
330+ if(this.lne == ln) {
331+ this.lne = ln.prev;
332+ }
333+ if(ln0 == ln) {
334+ ln0 = ln.next ? ln.next : ln.prev;
335+ }
336+ if(this.ln0 == ln) {
337+ this.ln0 = ln.next ? ln.next : ln.prev;
338+ }
339+ if(this.lns == ln) {
340+ this.lns = ln.next;
341+ }
342+ ln.delline();
343+ }
344+ ln = next;
345+ }
346+ // recompute wraps, offsets, and numbers.
347+ for(var ln = ln0; ln != null; ln = ln.next) {
348+ if(!ln.prev) {
349+ ln.off = 0;
350+ ln.lni = 0;
351+ } else {
352+ ln.off = ln.prev.off + ln.prev.len();
353+ ln.lni = ln.prev.lni + 1;
354+ }
355+ var woff = this.wrapoff(ln.txt);
356+ if(woff < ln.txt.length) {
357+ ln.split(woff, false);
358+ if(this.lne == ln) {
359+ this.lne = ln.next;
360+ }
361+ }
362+ }
363+ // keep the empty line at the end
364+ if(this.lne.eol) {
365+ this.addln(new Line(0, 0, "", false));
366+ }
367+ // if ln0 moved to the end marker, backup if we can.
368+ if(!ln0.next && ln0.prev) {
369+ ln0 = ln0.prev;
370+ }
371+ if(0)this.dump();
372+ return ln0;
373+ };
374+
375+ // add a single line or a \n.
376+ this.ins1 = function(t, dontscroll) {
377+ this.untick();
378+ this.markins(this.p0, t.length);
379+ var xln, lnoff;
380+ [xln, lnoff] = this.seek(this.p0);
381+ if(!xln) {
382+ console.log("Lines.ins: no line for p0");
383+ return;
384+ }
385+ if(t == '\n') {
386+ xln.split(lnoff, true);
387+ if(this.lne === xln) {
388+ this.lne = xln.next;
389+ }
390+ } else {
391+ xln.ins(t, lnoff);
392+ }
393+ this.p0 += t.length;
394+ this.p1 = this.p0;
395+ this.nrunes += t.length;
396+ if(t != '\n') {
397+ var woff = this.wrapoff(xln.txt);
398+ if(woff == xln.txt.length) {
399+ // ins within a line, don't reformat; just redraw it.
400+ xln.renumber();
401+ this.frlninsdel(xln, +t.length);
402+ return;
403+ }
404+ }
405+ xln = this.reformat(xln);
406+ if(!dontscroll) {
407+ this.mayscrollins(xln);
408+ }
409+ this.redrawtext();
410+ };
411+
412+ // add arbitrary text at p0
413+ this.ins = function(s, dontscroll) {
414+ var lns = s.split('\n');
415+ for(var i = 0; i < lns.length; i++) {
416+ if(lns[i].length > 0) {
417+ this.ins1(lns[i], dontscroll);
418+ }
419+ if(i < lns.length-1) {
420+ this.ins1('\n', dontscroll);
421+ }
422+ }
423+ };
424+
425+ // del p0:p1 or last char if p0 == p1
426+ this.del = function(dontscroll) {
427+ if(this.p0 >= this.nrunes || this.p1 <= this.p0) {
428+ return;
429+ }
430+ this.untick();
431+ if(this.p0 > 0 && this.p0 == this.p1) {
432+ this.p0--;
433+ }
434+ this.markdel(this.p0, this.p1);
435+ var xln, lnoff;
436+ [xln, lnoff] = this.seek(this.p0);
437+ if(!xln) {
438+ return;
439+ }
440+ var ndel = this.p1 - this.p0;
441+ var tot = 0;
442+ var xln0 = xln;
443+ for(; tot < ndel && xln != null; xln = xln.next) {
444+ var nd = xln.del(lnoff, ndel-tot);
445+ tot += nd;
446+ if(xln == xln0 && tot == ndel && xln.eol) {
447+ // del within a line; don't reformat; redraw it.
448+ this.nrunes -= tot;
449+ this.p1 -= tot;
450+ xln.renumber();
451+ this.frlninsdel(xln, -tot);
452+ return;
453+ }
454+ if(tot < ndel && xln.eol) {
455+ xln.eol = false;
456+ tot++;
457+ }
458+ lnoff = 0;
459+ }
460+ var mightscroll = (this.p1 >= xln0.off);
461+ this.nrunes -= tot;
462+ this.p1 -= tot;
463+ xln0 = this.reformat(xln0);
464+ this.redrawtext();
465+ if(!dontscroll && mightscroll) {
466+ this.mayscrolldel(xln0);
467+ }
468+ };
469+
470+ this.get = function(p0, p1) {
471+ if(p0 == p1 || p0 >= this.nrunes || p1 < p0 || p1 <= 0) {
472+ return "";
473+ }
474+ var ln0, lnoff;
475+ [ln0, lnoff] = this.seek(p0);
476+ if(ln0 == null) {
477+ return "";
478+ }
479+ var ln = ln0;
480+ var nget = p1 - p0;
481+ var off = p0 - ln.off;
482+ var tot = 0;
483+ var txt = "";
484+ do{
485+ var ng = nget-tot;
486+ if(off+ng > ln.txt.length) {
487+ ng = ln.txt.length - off;
488+ }
489+ txt += ln.txt.slice(off, off+ng);
490+ tot += ng;
491+ if(tot < nget && ln.eol){
492+ txt += "\n";
493+ tot++;
494+ }
495+ ln = ln.next;
496+ off = 0;
497+ }while(tot < nget && ln != null);
498+ return txt;
499+ };
500+
501+ // returns [word, wp0, wp1]
502+ this.getword = function(pos, long) {
503+ if(pos < 0) {
504+ return ["", 0, 0];
505+ }
506+ if(pos >= this.nrunes) {
507+ return ["", this.nrunes, this.nrunes];
508+ }
509+ var ischar = iswordchar;
510+ if(long) {
511+ ischar = islongwordchar;
512+ }
513+ var ln, lnoff;
514+ [ln, lnoff] = this.seek(pos);
515+ if(ln == null) {
516+ ln = this.lne;
517+ }
518+ var epos = pos;
519+ var p0 = pos - ln.off;
520+ if(p0 == ln.txt.length){
521+ if(!ln.eol) {
522+ return [ln.txt, ln.off, ln.off+ln.txt.length];
523+ }
524+ return [ln.txt+"\n", ln.off, ln.off+ln.txt.length+1];
525+ }
526+ // heuristic: if click at the right of lparen and not
527+ // at rparen, use the lparen.
528+ if(p0 > 0 && !isrparen(ln.txt.charAt(p0)) &&
529+ islparen(ln.txt.charAt(p0-1))){
530+ pos--;
531+ p0--;
532+ }
533+ var p1 = p0;
534+ var c = ln.txt.charAt(p0);
535+ if(islparen(c)){
536+ pos++;
537+ var n = 1;
538+ var rc = rparen(c);
539+ var txt = "";
540+ p1++;
541+ epos++;
542+ do {
543+ for(; p1 < ln.txt.length; p1++, epos++) {
544+ var x = ln.txt.charAt(p1);
545+ if(x == rc)
546+ n--;
547+ else if(x == c)
548+ n++;
549+ if(n != 0)
550+ txt += x;
551+ if(n == 0)
552+ return [txt, pos, epos-1];
553+ }
554+ if(ln.eol){
555+ epos++;
556+ txt += "\n";
557+ }
558+ ln = ln.next;
559+ p1 = 0;
560+ } while(n > 0 && ln != null);
561+ return [txt, pos, epos];
562+ }
563+ if(isrparen(c)){
564+ var n = 1;
565+ var lc = lparen(c);
566+ var txt = "";
567+ do{
568+ for(p0--; p0 >= 0; p0--){
569+ x = ln.txt.charAt(p0);
570+ if(x == lc)
571+ n--;
572+ else if(x == c)
573+ n++;
574+ if(n != 0){
575+ pos--;
576+ txt = x + txt;
577+ }
578+ if(n == 0)
579+ return [txt, pos, epos];
580+ }
581+ ln = ln.prev;
582+ if(ln != null){
583+ p0 = ln.txt.length;
584+ if(ln.eol){
585+ pos--;
586+ txt = "\n" + txt;
587+ }
588+ }
589+ }while(n > 0 && ln != null);
590+ return [txt, pos, epos];
591+ }
592+ if(!islongwordchar(c))
593+ return [ln.txt.slice(p0, p1), pos, epos];
594+ while(p0 > 0 && ischar(ln.txt.charAt(p0-1))){
595+ pos--;
596+ p0--;
597+ }
598+ while(p1 < ln.txt.length && ischar(ln.txt.charAt(p1))){
599+ epos++;
600+ p1++;
601+ }
602+ return [ln.txt.slice(p0, p1), pos, epos];
603+ };
604+
605+ this.dump = function() {
606+ var off = 0;
607+ var i = 0;
608+ for(var ln = this.lns; ln; ln = ln.next){
609+ var n = ln.len();
610+ var o = ln.off;
611+ if(!o && !(o === 0)){
612+ console.log("BAD off " + o + " in:");
613+ o = off;
614+ }
615+ if(o != off){
616+ console.log("BAD off " + o + " (!=" + off + ") in:");
617+ off = o;
618+ }
619+ off += n;
620+ console.log(""+ ln.str());
621+ i++;
622+ }
623+ };
624+}
625+
626+// Lines that know how to draw using a canvas
627+function DrawLines(c) {
628+ Lines.apply(this, arguments);
629+ this.nlines = 0; // lines in window
630+ this.frlines = 0; // lines with text
631+ this.frsize = 0; // nb. of runes in frame
632+ this.c = c; // canvas, perhaps it's this.
633+ this.fontstyle = 'r';
634+ this.tabstop = 4;
635+ this.marginsz = 6;
636+ this.tscale = 4; // scale must be even; we /2 without Math.floor
637+
638+ this.secondary = 0; // button for selection
639+
640+
641+ this.tickimg = undefined; // tick image
642+ this.tickx = 0;
643+ this.ticky = 0;
644+ this.saved = undefined; // saved image under tick
645+
646+ var ctx = c.getContext("2d", {alpha: false});
647+ checkoutfonts(ctx);
648+ ctx.fillStyle = "#FFFFEA";
649+ var tabtext = Array(this.tabstop+1).join("X");
650+
651+ this.tabwid = ctx.measureText(tabtext).width;
652+ // 14 pixels = 12pt font + 2pts of separation at the bottom,
653+ // but we scale the canvas *tscale.
654+ this.fontht = 14*this.tscale;
655+
656+ this.fixfont = function() {
657+ var ctx = this.c.getContext("2d", {alpha: false});
658+ var mod = "";
659+ var style = "";
660+ style = tfvar;
661+ if(this.fontstyle.indexOf('r') === -1) {
662+ style = tffixed;
663+ }
664+ if(this.fontstyle.indexOf('b') > -1) {
665+ mod = "bold " + mod;
666+ }
667+ if(this.fontstyle.indexOf('i') > -1) {
668+ mod = "italic " + mod;
669+ }
670+ // at scale 1, we keep two empty pts at the bottom.
671+ var ht = this.fontht - 2*this.tscale;
672+ ctx.font = mod + " " + ht+"px "+ style;
673+ ctx.textBaseline="top";
674+ };
675+
676+ var oldclear = this.clear;
677+ this.clear = function() {
678+ oldclear.call(this);
679+ this.nlines = 0;
680+ this.frlines = 0;
681+ this.frsize = 0;
682+ this.saved = undefined;
683+ this.tickx = this.ticky = 0;
684+ };
685+
686+ this.clearline = function(lni) {
687+ var ctx = this.c.getContext("2d", {alpha: false});
688+ var pos = (lni-this.ln0.lni)*this.fontht;
689+ if(pos >= this.c.height) {
690+ return false;
691+ }
692+ ctx.clearRect(1, pos, this.c.width-1, this.fontht);
693+ return true;
694+ };
695+
696+ this.mktick = function() {
697+ var ctx = this.c.getContext("2d", {alpha: false});
698+ var x = ctx.lineWidth;
699+ ctx.lineWidth = 1;
700+ var d = 3*this.tscale;
701+ ctx.fillRect(0, 0, d, d);
702+ ctx.fillRect(0, this.fontht-d, d, d);
703+ ctx.moveTo(d/2, 0);
704+ ctx.lineTo(d/2, this.fontht);
705+ ctx.stroke();
706+ ctx.lineWidth = x;
707+ this.tickimg = ctx.getImageData(0, 0, d, this.fontht);
708+ };
709+
710+ this.untick = function() {
711+ if(!this.saved) {
712+ return;
713+ }
714+ var ctx = this.c.getContext("2d", {alpha: false});
715+ ctx.putImageData(this.saved, this.tickx, this.ticky);
716+ this.saved = undefined;
717+ };
718+
719+ this.tick = function(ctx, x, y) {
720+ if(0)console.log("tick", x, y);
721+ this.saved = ctx.getImageData(x, y, 3*this.tscale, this.fontht);
722+ this.tickx = x;
723+ this.ticky = y;
724+ ctx.putImageData(this.tickimg, x, y);
725+ };
726+
727+ // draw a line and return false if it's out of the draw space.
728+ this.drawline = function(ln) {
729+ var ctx = this.c.getContext("2d", {alpha: false});
730+ var lnht = this.fontht;
731+ var avail = this.c.width - 2*this.marginsz - 1;
732+ var y = (ln.lni-this.ln0.lni)*lnht;
733+ if(y >= this.c.height) {
734+ return false;
735+ }
736+
737+ // non-empty selection.
738+ if(this.p0 != this.p1) {
739+ if(this.p0 > ln.off+ln.txt.length || this.p1 < ln.off){
740+ // unselected line
741+ ctx.clearRect(1, y, this.c.width-this.marginsz-1, lnht);
742+ var t = this.tabtxt(ln.txt);
743+ ctx.fillText(t, this.marginsz, y);
744+ return true;
745+ }
746+ // up to p0 unselected
747+ var dx = this.marginsz;
748+ var s0 = 0;
749+ var s0pos = 0;
750+ if(this.p0 > ln.off){
751+ s0 = this.p0 - ln.off;
752+ var s0t = this.tabtxt(ln.txt.slice(0, s0));
753+ s0pos = s0t.length;
754+ dx += ctx.measureText(s0t).width;
755+ ctx.clearRect(1, y, dx, lnht);
756+ ctx.fillText(s0t, this.marginsz, y);
757+ }
758+ // from p0 to p1 selected
759+ var s1 = ln.txt.length - s0;
760+ if(this.p1 < ln.off+ln.txt.length)
761+ s1 = this.p1 - s0 - ln.off;
762+ var s1t = this.tabtxt(ln.txt.slice(s0, s0+s1), s0pos);
763+ var s1pos = s0pos + s1t.length;
764+ var sx = ctx.measureText(s1t).width;
765+ var old = ctx.fillStyle;
766+ if(this.secondary >= 2) {
767+ ctx.fillStyle = "#FF7575";
768+ } else if(this.secondary) {
769+ ctx.fillStyle = "#7373FF";
770+ } else {
771+ ctx.fillStyle = "#D1A0A0";
772+ }
773+ if(this.p1 > ln.off+ln.txt.length) {
774+ ctx.fillRect(dx, y, this.c.width-dx-this.marginsz-1, lnht);
775+ } else {
776+ ctx.fillRect(dx, y, sx, lnht);
777+ }
778+ ctx.fillStyle = old;
779+ ctx.fillText(s1t, dx, y);
780+ if(this.p1 > ln.off+ln.txt.length) {
781+ return true;
782+ }
783+ // from p1 unselected
784+ ctx.clearRect(dx+sx, y, this.c.width-(dx+sx)-this.marginsz-1, lnht);
785+ if(s1 >= ln.txt.length) {
786+ return true;
787+ }
788+ var s2t = this.tabtxt(ln.txt.slice(s0+s1, ln.txt.length), s1pos);
789+ ctx.fillText(s2t, dx+sx, y);
790+ return true;
791+ }
792+
793+ // unselected line
794+ ctx.clearRect(1, y, this.c.width-this.marginsz-1, lnht);
795+ var t = this.tabtxt(ln.txt);
796+ ctx.fillText(t, this.marginsz, y);
797+
798+ if(this.p0 < ln.off || this.p0 > ln.off + ln.txt.length) {
799+ return true;
800+ }
801+
802+ // line with tick
803+ var x = this.posdx(ln.txt, this.p0 - ln.off);
804+ x += this.marginsz - 3*this.tscale/2; // a bit to the left
805+ this.tick(ctx, x, y);
806+ return true;
807+ };
808+
809+ this.updatescrl = function() {
810+ var ctx = this.c.getContext("2d", {alpha: false});
811+ var y0 = this.ln0.lni / this.lne.lni * this.c.height;
812+ var dy = this.frlines / this.lne.lni * this.c.height;
813+
814+ ctx.clearRect(this.c.width-this.marginsz, 0, this.marginsz, y0);
815+ var old = ctx.fillStyle;
816+ ctx.fillStyle = "#7373FF";
817+ ctx.fillRect(this.c.width-this.marginsz, y0, this.marginsz, dy);
818+ ctx.fillStyle = old;
819+ ctx.clearRect(this.c.width-this.marginsz, y0+dy,
820+ this.marginsz, this.c.height-(y0+dy));
821+ };
822+
823+ this.redrawtext = function() {
824+ this.fixfont();
825+ this.nlines = Math.floor(this.c.height/this.fontht);
826+ if(!this.tickimg) {
827+ this.mktick();
828+ }
829+ if(!this.ln0) {
830+ console.log("redrawtext: no ln0");
831+ return;
832+ }
833+ var froff = this.ln0.off;
834+ this.frsize = 0;
835+ this.frlines = 0;
836+ var ln = this.ln0;
837+ for(var i = 0; i <= this.nlines; i++){
838+ if(ln != null){
839+ if(!this.drawline(ln))
840+ break;
841+ this.frlines++;
842+ this.frsize += ln.len();
843+ ln = ln.next;
844+ }else if(!this.clearline(i)) {
845+ break;
846+ }
847+ }
848+ this.updatescrl();
849+ };
850+
851+ // requires a redraw if returns true.
852+ this.scrolldown = function(n) {
853+ var old = this.ln0;
854+ for(; n > 0; n--) {
855+ if(!this.ln0.prev) {
856+ break;
857+ }
858+ this.ln0 = this.ln0.prev;
859+ }
860+ return this.ln0 != old;
861+ };
862+
863+ // requires a redraw if returns true.
864+ this.scrollup = function(n) {
865+ var old = this.ln0;
866+ for(; n > 0; n--) {
867+ if(!this.ln0.next || !this.ln0.next.next) {
868+ break;
869+ }
870+ this.ln0 = this.ln0.next;
871+ }
872+ return old != this.ln0;
873+ };
874+
875+ this.nscrl = function() {
876+ var nscrl = Math.floor(this.nlines/4);
877+ if(nscrl > 0) {
878+ return nscrl;
879+ }
880+ return 1;
881+ };
882+
883+ this.mayscrollins = function(ln) {
884+ if(ln.lni >= this.ln0.lni+this.nlines-1 &&
885+ ln.lni <= this.ln0.lni+this.nlines+1 && this.nlines > 1) {
886+ this.scrolldown(this.nscrl());
887+ }
888+ };
889+
890+ this.mayscrolldel = function(ln) {
891+ if(this.p0 < this.ln0.off) {
892+ this.scrollup(this.nscrl());
893+ this.redrawtext();
894+ }
895+ };
896+
897+ this.wrapoff = function(t) {
898+ var ctx = this.c.getContext("2d", {alpha: false});
899+ var avail = this.c.width - this.marginsz;
900+ var pos = 0;
901+ var s = "";
902+ for(var i = 0; i < t.length; i++){
903+ var r = t.charAt(i);
904+ if(r == '\t') {
905+ do {
906+ s += " ";
907+ pos++;
908+ }while(pos%this.tabstop);
909+ }else{
910+ pos++;
911+ s += r;
912+ }
913+ if(ctx.measureText(s).width > avail){
914+ return i;
915+ }
916+ }
917+ return t.length;
918+ };
919+
920+ this.posdx = function(t, n) {
921+ var ctx = this.c.getContext("2d", {alpha: false});
922+ var pos = 0;
923+ var dx = 0;
924+ var spcwid = ctx.measureText(" ").width;
925+ for(var i = 0; i < t.length && i < n; i++){
926+ var r = t.charAt(i);
927+ if(r == '\t') {
928+ do {
929+ dx += spcwid;
930+ pos++;
931+ }while(pos%this.tabstop);
932+ }else{
933+ pos++;
934+ dx += ctx.measureText(r).width;
935+ }
936+ }
937+ return dx;
938+ };
939+
940+ // returns [line, off at line, click past text?]
941+ // later you can use seekpos(line, lnoff) to get a valid pos.
942+ this.ptr2seek = function(cx, cy) {
943+ var marginsz = Math.floor(this.marginsz/2);
944+ var x = cx;
945+ var y = cy;
946+ var ovf = 0;
947+ x *= this.tscale;
948+ y *= this.tscale;
949+ var nln = Math.floor(y/this.fontht);
950+ if(nln < 0) {
951+ return [this.ln0, 0, false];
952+ }
953+ if(nln >= this.frlines) { // overflow
954+ return [this.lne, this.lne.txt.length, true];
955+ }
956+ var ln = this.ln0;
957+ while(nln-- > 0 && ln.next) {
958+ ln = ln.next;
959+ }
960+ var pos = 0;
961+ for(; pos <= ln.txt.length; pos++){
962+ var coff = this.posdx(ln.txt, pos);
963+ if(coff+marginsz > x){
964+ if(pos > 0)
965+ pos--;
966+ break;
967+ }
968+ }
969+ if(pos > ln.txt.length){
970+ pos = ln.txt.length;
971+ return [ln, pos, true];
972+ }
973+ return [ln, pos, false];
974+ };
975+
976+ this.viewsel = function() {
977+ if(this.p0 >= this.ln0.off && this.p0 <= this.ln0.off+this.frsize) {
978+ return;
979+ }
980+ for(var ln = this.lns; ln != null; ln = ln.next) {
981+ if(this.p0 >= ln.off && this.p0 <= ln.off+ln.txt.length) {
982+ for(var n = Math.floor(this.frlines/3); n > 0 && ln.prev; n--) {
983+ ln = ln.prev;
984+ }
985+ this.ln0 = ln;
986+ this.redrawtext();
987+ break;
988+ }
989+ }
990+ };
991+
992+ this.setsel = function(p0, p1, refreshall) {
993+ var ctx = this.c.getContext("2d", {alpha: false});
994+ if(p0 > this.nrunes) {
995+ p0 = this.nrunes;
996+ }
997+ if(p1 < p0) {
998+ p1 = p0;
999+ }
1000+ if(p1 > this.nrunes) {
1001+ p1 = this.nrunes;
1002+ }
1003+ if(this.p0 != this.p1) {
1004+ refreshall = true;
1005+ }
1006+ var froff = this.ln0.off;
1007+ if(refreshall && (this.p1 <froff || this.p0 >froff+this.frsize))
1008+ refreshall = false;
1009+ var mp0 = p0;
1010+ var mp1 = p1;
1011+ if(refreshall){
1012+ if(this.p0 < mp0) {
1013+ mp0 = this.p0;
1014+ }
1015+ if(this.p1 > mp1) {
1016+ mp1 = this.p1;
1017+ }
1018+ }
1019+ this.p0 = p0;
1020+ this.p1 = p1;
1021+ this.untick();
1022+ if(mp1 <froff || mp0 >froff+this.frsize) {
1023+ return;
1024+ }
1025+ var insel = false;
1026+ var ln = this.ln0;
1027+ for(var i = 0; i < this.frlines && ln != null; i++){
1028+ if(mp1 >= ln.off && mp0 <= ln.off+ln.txt.length) {
1029+ insel=true;
1030+ }
1031+ if(insel) {
1032+ this.drawline(ln);
1033+ }
1034+ if(mp1 < ln.off) {
1035+ break;
1036+ }
1037+ ln = ln.next;
1038+ }
1039+ };
1040+
1041+ this.frlninsdel = function(ln, ninsdel){
1042+ if(ln.lni >= this.ln0.lni && ln.lni < this.ln0.lni+this.frlines) {
1043+ this.frsize += ninsdel;
1044+ this.drawline(ln);
1045+ }
1046+ };
1047+
1048+ this.fixfont();
1049+}
net/ink/js/pg.js+11−8
@@ -1,7 +1,10 @@
11 "use strict";
22 /*
33 * clive ink pg tools
4−*/
4+ *
5+ * needs a rewrite.
6+ * should define a global clive object to contain all the clive globals, and go from there.
7+ */
58
69 // controls may call this to set the icon for dirty (and get saves on clicks)
710 // but they must implement the post method on the element passed.
@@ -107,9 +110,9 @@ function removecontrol(el, needpost) { · 99 unmodified lines
107110 if(!el) {
108111 return;
109112 }
110− $(el).find(".hasws").each(function() {
113+ $(el).find(".clivectl").each(function() {
111114 if(!this.ws) {
112− console.log("BUG: hasws w/o ws");
115+ console.log("BUG: clivectl w/o ws");
113116 console.log("didn't set d.get(0).ws?");
114117 } else {
115118 if(needpost && this.post) {
@@ -134,7 +137,7 @@ function maxpl(pl) { · 18 unmodified lines
134137 console.log("maxpl ", icon);
135138 $(pl).find('.portlet-content').toggle();
136139 icon.toggleClass("ui-icon-minus ui-icon-plus");
137− pl.find(".canaddsize").each(function() {
140+ pl.find(".clivectl").each(function() {
138141 if(this.addsize) {
139142 this.addsize(0);
140143 }
@@ -218,7 +221,7 @@ function updportlets() { · 77 unmodified lines
218221 icon.toggleClass("ui-icon-minus ui-icon-plus");
219222 var pl = icon.closest(".portlet");
220223 pl.find(".portlet-content").toggle();
221− pl.find(".canaddsize").each(function() {
224+ pl.find(".clivectl").each(function() {
222225 if(this.addsize) {
223226 this.addsize(0);
224227 }
@@ -253,7 +256,7 @@ function updportlets() { · 28 unmodified lines
253256 var icon = $(this);
254257 var el = icon.closest(".portlet");
255258 maxpl(el);
256− $(el).find(".canaddsize").each(function() {
259+ $(el).find(".clivectl").each(function() {
257260 if(this.addsize) {
258261 this.addsize(1);
259262 }
@@ -273,7 +276,7 @@ function updportlets() { · 13 unmodified lines
273276 var icon = $(this);
274277 var el = icon.closest(".portlet");
275278 maxpl(el);
276− $(el).find(".canaddsize").each(function() {
279+ $(el).find(".clivectl").each(function() {
277280 if(this.addsize) {
278281 this.addsize(2);
279282 }
@@ -293,7 +296,7 @@ function updportlets() { · 13 unmodified lines
293296 var icon = $(this);
294297 var el = icon.closest(".portlet");
295298 maxpl(el);
296− $(el).find(".canaddsize").each(function() {
299+ $(el).find(".clivectl").each(function() {
297300 if(this.addsize) {
298301 this.addsize(-1);
299302 }
net/ink/js/radio.js+40−86
@@ -1,98 +1,52 @@
11 "use strict";
22 /*
3− js code for the radio buttons control
3+ js code for the clive radio buttons control
44 */
55
6+var rdebug = false;
67
7−function rapply(ev, fromserver) {
8− if(!ev || !ev.Args || !ev.Args[0]){
9− console.log("apply: nil ev");
10− return;
11− }
12− var arg = ev.Args
13− if(1)console.log(this.divid, "apply", ev.Id, ev.Args);
14− switch(arg[0]){
15− case "Set":
16− if(arg.length < 4){
17− console.log(this.divid, "apply: short set");
18− break;
19− }
20− var on = (arg[3] == "on");
21− var id = this.divid + "_b" + arg[2];
22− console.log("set ", id, on);
23− var b = $("#"+id);
24− if(b) {
25− b.prop('checked', on);
26− b.button("refresh");
27− }
28− break;
29− case "show":
30− if(document.showcontrol) {
31− document.showcontrol(this);
32− }
33− break;
34− default:
35− console.log("text: unhandled", arg[0]);
36− }
37−}
8+function CliveRadio(d, cid, id) {
9+ this.d = d;
10+ this.c = d;
11+ this.cid = cid;
12+ this.id = id;
13+ this.vers = 0;
3814
39−/*
40− d is is the (jquery) parent that will supply events.
41− cid is the class id d.
42− */
43−function mkradio(d, cid, id) {
44− var wsurl = "wss://" + window.location.host + "/ws/" + cid;
45− if(d.wsaddr) {
46− wsurl = d.wsaddr + "/ws/" + cid;
47− }
48− d.post = function(args) {
49− if(!d.ws){
50− console.log("no ws");
51− return nil;
52− }
53− var ws = d.ws;
54− if(!args || !args[0]){
55− console.log("post: no args");
56− return nil;
57− }
58− var ev = {}
59− ev.Id = cid;
60− ev.Src = id;
61− ev.Vers = this.vers;
62− ev.Args = args;
63− var msg = JSON.stringify(ev);
64− try {
65− ws.send(msg);
66− // console.log("posting ", msg);
67− }catch(ex){
68− console.log("post: " + ex);
69− }
70− return ev;
71− };
72− d.apply = rapply;
73− d.divid = id;
74− d.divcid = cid;
75− d.ws = new WebSocket(wsurl);
76− d.get(0).ws = d.ws;
77− d.get(0).post = d.post;
78− d.ws.onopen = function() {
79− d.post(["id"]);
80− };
81− d.ws.onmessage = function(ev) {
82− // console.log("got msg", e.data);
83− var o = JSON.parse(ev.data);
84− if(!o || !o.Id) {
85− console.log("update: no object id");
15+ this.apply = function(ev, fromserver) {
16+ if(!ev || !ev.Args || !ev.Args[0]){
17+ console.log("apply: nil ev");
8618 return;
8719 }
88− console.log("update to", o.Id);
89− d.apply(o, true)
90− };
91− d.ws.onclose = function() {
92− console.log("text socket " + wsurl+ " closed\n");
93− d.replaceWith("<h3>disconnected</h3>")
20+ var arg = ev.Args
21+ if(rdebug)console.log(this.id, "apply", ev.Id, ev.Args);
22+ switch(arg[0]){
23+ case "Set":
24+ if(arg.length < 4){
25+ console.log(this.divid, "apply: short set");
26+ break;
27+ }
28+ var on = (arg[3] == "on");
29+ var id = this.id + "_b" + arg[2];
30+ console.log("set ", id, on);
31+ var b = $("#"+id);
32+ if(b) {
33+ b.prop('checked', on);
34+ b.button("refresh");
35+ }
36+ break;
37+ case "show":
38+ this.showcontrol(this);
39+ break;
40+ default:
41+ console.log("radio: unhandled", arg[0]);
42+ }
9443 };
44+
45+ CliveCtlr.call(this);
9546 }
9647
97−document.mkradio = mkradio;
9848
49+document.mkradio = function(d, cid, id) {
50+ var c = new CliveRadio(d, cid, id);
51+ return c;
52+}
net/ink/js/text.js+1263−0
@@ -0,0 +1,1263 @@
1+"use strict";
2+/*
3+ Clive js code for text frames.
4+ similar to Plan 9 text frames using the HTML5 canvas.
5+
6+ HTML5 designers suggest that you don't do this, but on the other
7+ hand, they do NOT handle text correctly in dom and they do NOT
8+ provide the interfaces required to handle things like undo and
9+ redo correctly.
10+
11+ This requires also lines.js.
12+ The code interfacing with pg.js needs a rewrite, as does pg.js itself.
13+*/
14+
15+var selecting = false;
16+var tdebug = false; // also defined by lines.js
17+
18+// This is to prevent the event from being propagated to the parent
19+// container.
20+// Despite this, it seems that if we return true in safari for a keydown
21+// then it's too late and the space bubbles and we scroll when we shouldnt.
22+// So, locknkeydown returns false and calls, by hand, the down/key/up handlers.
23+function dontbubble(e) {
24+ if (e) {
25+ e.bubbles = false;
26+ if(e.stopPropagation) {
27+ e.stopPropagation();
28+ }
29+ e.cancelBubble = true;
30+ }
31+}
32+
33+// A frame of lines using the Clive ink framework.
34+// d is the div, c is the canvas, cid and id are the ink ids.
35+// This will have to be rewritten when we rewrite ink js code.
36+function CliveText(d, c, cid, id) {
37+ DrawLines.call(this, c);
38+ this.d = d;
39+ this.c = c;
40+ this.cid = cid;
41+ this.id = id;
42+
43+ this.vers = 0;
44+ this.noedits = false;
45+
46+ this.islocked = false;
47+ this.locking = false;
48+ this.mustunlock = false;
49+ this.whenlocked = [];
50+
51+ this.buttons = 0;
52+ this.nclicks = {1: 0, 2: 0, 4: 0};
53+ this.lastx = 0;
54+ this.lasty = 0;
55+ this.dblclick = 0; // 1 for double, 2 for triple, ...
56+ this.secondary = 0; // button for selection (also defined by DrawLines)
57+ this.secondaryabort = false;
58+ this.malt = false;
59+ this.userresized = false;
60+ this.selecting = false;
61+ this.oldp0 = -1;
62+ this.oldp1 = -1;
63+ this.clicktime = new Date().getTime();
64+
65+ this.markinsdata = undefined; // will be defined during markins
66+ this.einsdata = undefined; // will be defined during eins
67+ this.reloadln0 = 0;
68+
69+ this.composing = false;
70+ this.latin = "";
71+
72+ var self = this; // we rewrite handlers later, and use self.
73+
74+ this.mrlse = function(e) {
75+ var b = 1<<(e.which-1);
76+ if(b == 1 && this.malt){
77+ b = 2;
78+ this.buttons &= ~1;
79+ this.malt = false;
80+ }
81+ this.buttons &= ~b;
82+ return b;
83+ };
84+
85+ this.mpress = function(e) {
86+ var b = 1<<(e.which-1);
87+ if(b == 1 && e.altKey){
88+ b = 2;
89+ this.malt = true;
90+ }
91+ this.buttons |= b;
92+ return b;
93+ };
94+
95+ // set lastx, lasty to ev coords relative to canvas
96+ this.evxy = function(e) {
97+ var x = 0;
98+ var y = 0;
99+ if(e.fakex != undefined) {
100+ x = e.fakex;
101+ y = e.fakey;
102+ } else {
103+ var poff = $(this.c).offset();
104+ x = e.pageX - poff.left;
105+ y = e.pageY - poff.top;
106+ }
107+ this.lastx = x;
108+ this.lasty = y;
109+ };
110+
111+ this.mayresize = function(user) {
112+ var c = $(this.c);
113+ var p = c.parent();
114+ var dx = p.width();
115+ var dy = p.height() - 5; // -5: leave a bit of room
116+ console.log('text resized', dx, dy, user?"user":"win");
117+ var ctx = this.c.getContext("2d", {alpha: false});
118+ // TODO: use helper when we rewrite ink js.
119+ var tag = $("#"+this.id+"t")
120+ if(tag) {
121+ dy -= tag.height();
122+ }
123+ // Using a width scaled and making the style use the width
124+ // makes the text better.
125+ c.width(dx);
126+ c.height(dy);
127+ this.c.width = this.tscale*dx;
128+ this.c.height = this.tscale*dy;
129+ this.nlines = Math.floor(this.c.height/this.fontht);
130+ this.saved = null;
131+ this.reformat(this.lns);
132+ this.redrawtext();
133+
134+ };
135+
136+ // this is just a bunch of heuristics to make it feel ok.
137+ this.autoresize = function(addsize, moreless) {
138+ var p = $(this.c);
139+ var oldht = p.height();
140+ var ht = oldht;
141+ var fontht = this.fontht/this.tscale;
142+ if(addsize) {
143+ this.userresized = true;
144+ if(moreless > 1){
145+ var wtop = $(window).scrollTop();
146+ var etop = p.offset().top;
147+ var eoff = etop-wtop;
148+ console.log("resize ", wtop, etop, eoff);
149+ ht = window.innerHeight - 10 - eoff; // -10: leave some room
150+ } else if(moreless >= 0) {
151+ ht += fontht*6;
152+ } else {
153+ ht -= fontht*6;
154+ if(ht < 5*fontht) {
155+ ht = 5*fontht;
156+ }
157+ }
158+ }else{
159+ var nln = this.frlines;
160+ if(nln < 3) {
161+ nln = 3;
162+ }
163+ ht = (nln+2) * fontht;
164+ if (ht >= 400) { // some initial arbitrary space.
165+ ht = 400;
166+ }
167+ }
168+ console.log("auto rsz", nln, ht, oldht);
169+ if (oldht < ht - fontht || oldht > ht + fontht) {
170+ console.log("auto resizing");
171+ var delta = ht - oldht;
172+ p = p.parent();
173+ var nht = p.height() + delta;
174+ p.height(nht);
175+ this.mayresize();
176+ }
177+ };
178+
179+ this.selectstart = function() {
180+ if(!this.selecting) {
181+ console.log("selecting...");
182+ }
183+ this.selecting = true;
184+ selecting = true;
185+ this.oldp0 = this.p0;
186+ this.oldp1 = this.p1;
187+ };
188+
189+ this.selectend = function() {
190+ if(this.mustunlock) {
191+ this.unlocked();
192+ }
193+ if(!this.selecting) {
194+ return;
195+ }
196+ console.log("select end");
197+ if(this.oldp0 != this.p0 || this.oldp1 != this.p1) {
198+ this.post(["tick", ""+this.p0, ""+this.p1]);
199+ this.oldp0 = this.p0;
200+ this.oldp1 = this.p1;
201+ }
202+ this.selecting = false;
203+ selecting = false;
204+ };
205+
206+ this.apply = function(ev, fromserver) {
207+ if(!ev || !ev.Args || !ev.Args[0]){
208+ console.log("apply: nil ev");
209+ return;
210+ }
211+ var arg = ev.Args
212+ if(tdebug) {
213+ console.log(this.divid, "apply", ev.Args, "v", ev.Vers, this.vers);
214+ }
215+ switch(arg[0]){
216+ case "held":
217+ this.locked();
218+ break;
219+ case "rlse":
220+ if(this.selecting) {
221+ this.mustunlock = true;
222+ break;
223+ }
224+ this.unlocked();
225+ break;
226+ case "noedits":
227+ this.noedits = true;
228+ break;
229+ case "edits":
230+ this.noedits = false;
231+ break;
232+ case "clean":
233+ if(document.setclean) {
234+ document.setclean(this);
235+ }
236+ break;
237+ case "dirty":
238+ if(document.setdirty) {
239+ document.setdirty(this);
240+ }
241+ break;
242+ case "show":
243+ if(document.showcontrol) {
244+ document.showcontrol(this);
245+ }
246+ break;
247+ case "tag":
248+ if(arg.length < 2){
249+ console.log(this.id, "apply: short tag");
250+ break;
251+ }
252+ if(document.settag) {
253+ document.settag(this, arg[1]);
254+ }
255+ break;
256+ case "font":
257+ if(arg.length < 2){
258+ console.log(this.id, "apply: short font");
259+ break;
260+ }
261+ console.log(this.id, "font", arg[1]);
262+ this.fontstyle = arg[1];
263+ this.fixfont();
264+ this.redrawtext();
265+ break;
266+ case "markinsing":
267+ if(arg.length < 3){
268+ console.log(this.id, "apply: short markinsing");
269+ break;
270+ }
271+ if (!this.markinsdata) {
272+ console.log("markins evs...");
273+ this.markinsdata = [];
274+ }
275+ this.markinsdata.push(arg[2]);
276+ break;
277+ case "markinsdone":
278+ console.log("markins run...");
279+ if(arg.length < 2){
280+ console.log(this.id, "apply: short markinsdone");
281+ break;
282+ }
283+ var m = this.getmark(arg[1]);
284+ if(!m) {
285+ console.log(this.id, "apply: no mark", arg[1]);
286+ break;
287+ }
288+ var op0 = this.p0;
289+ var op1 = this.p1;
290+ if(op0 != op1) {
291+ this.setsel(op0, op0, false);
292+ }
293+ for(var i = 0; i < this.markinsdata.length; i++) {
294+ var data = this.markinsdata[i];
295+ var nlen = data.length;
296+ var npos = m.pos + nlen;
297+ var opos = m.pos;
298+ op0 = this.p0;
299+ op1 = this.p1;
300+ this.p0 = m.pos;
301+ this.p1 = m.pos;
302+ this.ins(data, true);
303+ m.pos = npos;
304+ if(op0 > opos)
305+ op0 += nlen;
306+ if(op1 > opos)
307+ op1 += nlen;
308+ this.p0 = op0;
309+ this.p1 = op1;
310+ if(ev.Vers) {
311+ this.vers = ev.Vers;
312+ }
313+ }
314+ this.setsel(op0, op1, false);
315+ delete this.markinsdata;
316+ if(!this.userresized) {
317+ this.autoresize();
318+ }
319+ console.log(this.id, "markins done");
320+ break;
321+ case "einsing":
322+ if(arg.length < 2){
323+ console.log(this.divid, "apply: short einsing");
324+ break;
325+ }
326+ if (!this.einsdata) {
327+ console.log("eins evs...");
328+ this.einsdata = [];
329+ }
330+ this.einsdata.push(arg[1]);
331+ break;
332+ case "einsdone":
333+ console.log(this.id, "eins run...");
334+ if(arg.length < 2){
335+ console.log(this.id, "apply: short ins");
336+ break;
337+ }
338+ if(ev.Vers && fromserver && ev.Vers != this.vers+1){
339+ console.log("OUT OF SYNC", ev.Args, "v", ev.Vers, this.vers);
340+ this.post(["needreload"]);
341+ delete this.einsdata;
342+ break;
343+ }
344+ var p0 = parseInt(arg[1]);
345+ var op0 = this.p0;
346+ var op1 = this.p1;
347+ if(op0 != op1) {
348+ this.setsel(op0, op0, false);
349+ }
350+ this.p0 = p0;
351+ this.p1 = p0;
352+ for(var i = 0; i < this.einsdata.length; i++) {
353+ var data = this.einsdata[i];
354+ this.ins(data, false);
355+ if(op0 > p0)
356+ op0 += data.length;
357+ if(op1 > p0)
358+ op1 += data.length;
359+ }
360+ delete this.einsdata;
361+ this.setsel(op0, op1, false);
362+ if(ev.Vers) {
363+ this.vers = ev.Vers;
364+ }
365+ if(!this.userresized) {
366+ this.autoresize();
367+ }
368+ console.log(this.id, "eins done");
369+ break;
370+ case "eins":
371+ if(arg.length < 3){
372+ console.log(this.id, "apply: short ins");
373+ break;
374+ }
375+ if(ev.Vers && fromserver && ev.Vers != this.vers+1){
376+ console.log("OUT OF SYNC", ev.Args, "v", ev.Vers, this.vers);
377+ this.post(["needreload"]);
378+ break;
379+ }
380+ var p0 = parseInt(arg[2]);
381+ var op0 = this.p0;
382+ var op1 = this.p1;
383+ if(op0 != op1) {
384+ this.setsel(op0, op0);
385+ }
386+ this.p0 = p0;
387+ this.p1 = p0;
388+ this.ins(arg[1], false);
389+ if(op0 > p0)
390+ op0 += arg[1].length;
391+ if(op1 > p0)
392+ op1 += arg[1].length;
393+ if(fromserver) {
394+ this.setsel(op0, op1, false);
395+ }
396+ if(ev.Vers) {
397+ this.vers = ev.Vers;
398+ }
399+ if(!this.userresized && arg[1].indexOf('\n') >= 0) {
400+ this.autoresize();
401+ }
402+ break;
403+ case "edel":
404+ if(arg.length < 3){
405+ console.log(this.id, "apply: short del");
406+ break;
407+ }
408+ if(ev.Vers && fromserver && ev.Vers != this.vers+1){
409+ console.log("OUT OF SYNC", ev.Args, "v", ev.Vers, this.vers);
410+ this.post(["needreload"]);
411+ }
412+ var p0 = parseInt(arg[1]);
413+ var p1 = parseInt(arg[2]);
414+ var op0 = this.p0;
415+ var op1 = this.p1;
416+ this.p0 = p0;
417+ this.p1 = p1;
418+ try{
419+ this.del(false);
420+ }catch(ex){
421+ console.log(this.divid, "apply: del: " + ex);
422+ }
423+ op0 = adjdel(op0, p0, p1);
424+ op1 = adjdel(op1, p0, p1);
425+ if(fromserver) {
426+ this.setsel(op0, op1, false);
427+ }
428+ if(ev.Vers) {
429+ this.vers = ev.Vers;
430+ }
431+ break;
432+ case "ecut":
433+ try{
434+ this.del(false);
435+ }catch(ex){
436+ console.log(this.id, "apply: cut: " + ex);
437+ }
438+ if(ev.Vers)
439+ this.vers = ev.Vers;
440+ break;
441+ case "reload":
442+ this.reloadln0 = this.ln0.lni;
443+ this.clear();
444+ break;
445+ case "reloading":
446+ if(arg.length < 2){
447+ console.log(this.id, "apply: short reloading");
448+ break;
449+ }
450+ var nln = new Line(0, 0, arg[1], true);
451+ this.addln(nln);
452+ break
453+ case "reloaded":
454+ if(arg.length < 2){
455+ console.log(this.id, "apply: short reloaded");
456+ break;
457+ }
458+ this.vers = parseInt(arg[1]);
459+ if(this.reloadln0) {
460+ this.ln0 = this.seekln(this.reloadln0);
461+ this.reloadln0 = 0;
462+ }
463+ this.redrawtext();
464+ if(!this.userresized) {
465+ this.autoresize();
466+ }
467+ // this.dump();
468+ break;
469+ case "mark":
470+ if(arg.length < 3){
471+ console.log(this.id, "apply: short mark");
472+ break;
473+ }
474+ var pos = parseInt(arg[2]);
475+ this.setmark(arg[1], pos);
476+ break;
477+ case "sel":
478+ if(arg.length < 3){
479+ console.log(this.id, "apply: short sel");
480+ break;
481+ }
482+ var pos0 = parseInt(arg[1]);
483+ var pos1 = parseInt(arg[2]);
484+ this.setmark("p0", pos0);
485+ this.setmark("p1", pos1);
486+ this.setsel(pos0, pos1, true);
487+ this.viewsel();
488+ console.log("setsel", pos0, pos1);
489+ break;
490+ case "delmark":
491+ if(arg.length < 2){
492+ console.log(this.divid, "apply: short delmark");
493+ break;
494+ }
495+ this.delmark(arg[1]);
496+ break;
497+ case "close":
498+ this.ws.close();
499+ $("#"+this.id).remove();
500+ break;
501+ default:
502+ console.log("text: unhandled", arg[0]);
503+ }
504+ };
505+
506+ this.Post = function(e) {
507+ var ev = this.post(e);
508+ if(ev){
509+ try {
510+ this.apply(ev);
511+ }catch(ex){
512+ console.log("txt apply: " + ex);
513+ }
514+ }
515+ };
516+
517+ // Only the frame with the lock may change the text,
518+ // we replace the handlers to gain the lock before actually
519+ // doing anything.
520+
521+ this.tkeydown = function(e, deferred) {
522+ var key = e.keyCode;
523+ if(!e.keyCode)
524+ key = e.which;
525+ var rune = String.fromCharCode(e.keyCode);
526+ e.stopPropagation();
527+ if(tdebug) {
528+ console.log("keydown which " + e.which + " key " + e.keyCode +
529+ " '" + rune + "'" +
530+ " " + e.ctrlKey + " " + e.metaKey);
531+ }
532+ switch(key){
533+ case 27: /* escape */
534+ if(deferred) {
535+ break;
536+ }
537+ this.post(["intr", "esc"]);
538+ this.dump();
539+ console.log("sel = ["+this.p0+","+this.p1+"] = '" +
540+ this.get(this.p0, this.p1) + "'");
541+ break;
542+ case 8: /* backspace */
543+ if(this.noedits) {
544+ return;
545+ }
546+ if(deferred) {
547+ break;
548+ }
549+ if(this.p0 != this.p1){
550+ this.Post(["edel", ""+this.p0, ""+this.p1]);
551+ }else if(this.p0 > 0){
552+ var p0 = this.p0-1;
553+ this.Post(["edel", ""+p0, ""+this.p1]);
554+ }
555+ break;
556+ case 9: /* tab */
557+ if(this.noedits) {
558+ return;
559+ }
560+ if(deferred) {
561+ break;
562+ }
563+ if(this.p0 != this.p1){
564+ this.Post(["edel", ""+this.p0, ""+this.p1]);
565+ }
566+ this.Post(["eins", "\t", ""+this.p0]);
567+ break;
568+ case 32: /* space */
569+ if(deferred) {
570+ break;
571+ }
572+ this.Post(["eins", " ", ""+this.p0]);
573+ break;
574+ case 37: /* left */
575+ if(this.noedits) {
576+ return;
577+ }
578+ if(deferred) {
579+ break;
580+ }
581+ this.post(["eundo"]);
582+ break;
583+ case 38: /* up */
584+ if(deferred) {
585+ break;
586+ }
587+ var n = Math.floor(this.frlines/4);
588+ if(n < 1) {
589+ n = 1;
590+ }
591+ if(this.scrollup(n)){
592+ this.untick();
593+ this.redrawtext();
594+ }
595+ break;
596+ case 39: /* right */
597+ if(this.noedits) {
598+ return;
599+ }
600+ if(deferred) {
601+ break;
602+ }
603+ this.post(["eredo"]);
604+ break;
605+ case 40: /* down */
606+ if(deferred) {
607+ break;
608+ }
609+ this.untick();
610+ var n = Math.floor(this.frlines/4);
611+ if(n < 1) {
612+ n = 1;
613+ }
614+ if(this.scrolldown(n)){
615+ this.untick();
616+ this.redrawtext();
617+ }
618+ break;
619+ case 46: /* delete */
620+ if(deferred) {
621+ break;
622+ }
623+ this.post(["intr", "del"]);
624+ break;
625+ case 112: /* F1 */
626+ case 113: /* F2 */
627+ case 114: /* F3 */
628+ case 115: /* F4 */
629+ if(deferred) {
630+ break;
631+ }
632+ var mev = {
633+ fakex: this.lastx,
634+ fakey: this.lasty,
635+ which: key-112+1,
636+ };
637+ mev.preventDefault = function(){}
638+ this.c.onmousedown(mev);
639+ break;
640+ case 123: /* F12 */
641+ tdebug = !tdebug;
642+ break;
643+ default:
644+ return true;
645+ }
646+ return false;
647+ };
648+
649+ this.tlocknkeydown = function(e) {
650+ dontbubble(e);
651+ if(this.islocked) {
652+ return this.tkeydown(e);
653+ }
654+ if(!this.locking) {
655+ this.locking = true;
656+ this.post(["hold"]);
657+ console.log("holding...");
658+ }
659+ var self = this;
660+ var xe = jQuery.Event("keydown");
661+ xe.which = e.which;
662+ xe.keyCode = e.keyCode;
663+ xe.ctrlKey = e.ctrlKey;
664+ xe.metaKey = e.metaKey;
665+ xe.preventDefault = function(){};
666+ this.whenlocked.push(function() {
667+ console.log("held keydown");
668+ $(self.c).trigger(xe);
669+ return false;
670+ });
671+ return this.tkeydown(e, true);
672+ };
673+
674+ this.tkeypress = function(e, deferred) {
675+ var key = e.keyCode;
676+ if(!e.keyCode)
677+ key = e.which;
678+ var rune = String.fromCharCode(e.keyCode);
679+ if(tdebug) {
680+ console.log("key: which " + e.which + " key " + e.keyCode +
681+ " '" + rune + "'");
682+ }
683+ switch(key) {
684+ case 9:
685+ rune = "\t";
686+ break;
687+ case 13:
688+ rune = "\n";
689+ break;
690+ }
691+ switch(rune) {
692+ case 'c':
693+ case 'C':
694+ if(deferred)
695+ break;
696+ if(e.ctrlKey || e.metaKey) {
697+ e.preventDefault();
698+ this.post(["ecopy", ""+this.p0, ""+this.p1]);
699+ return false;
700+ }
701+ break;
702+ case 'v':
703+ case 'V':
704+ if(deferred || this.noedits) {
705+ break;
706+ }
707+ if(e.ctrlKey || e.metaKey) {
708+ e.preventDefault();
709+ if(this.p0 != this.p1){
710+ this.Post(["edel", ""+this.p0, ""+this.p1]);
711+ }
712+ this.post(["epaste", ""+this.p0, ""+this.p1]);
713+ return false;
714+ }
715+ break;
716+ case 'x':
717+ case 'X':
718+ if(deferred || this.noedits) {
719+ break;
720+ }
721+ if(e.ctrlKey || e.metaKey) {
722+ e.preventDefault();
723+ this.Post(["ecut", ""+this.p0, ""+this.p1]);
724+ return false;
725+ }
726+ break;
727+ }
728+ if(deferred || e.metaKey || e.ctrlKey || this.noedits) {
729+ return;
730+ }
731+ if(this.p0 != this.p1){
732+ this.Post(["edel", ""+this.p0, ""+this.p1]);
733+ }
734+ if(this.composing) {
735+ if(!this.latin) {
736+ this.latin = "" + rune;
737+ } else {
738+ this.latin += rune;
739+ }
740+ if(!kmap.islatin(this.latin)) {
741+ this.composing = false;
742+ rune = this.latin;
743+ this.latin = "";
744+ } else {
745+ var r = kmap.latin(this.latin);
746+ if (!r) {
747+ return;
748+ }
749+ this.composing = false;
750+ rune = r;
751+ this.latin = "";
752+ }
753+ }
754+ this.Post(["eins", rune, ""+this.p0]);
755+ };
756+
757+ this.tlocknkeypress = function() {
758+ dontbubble(e);
759+ if(this.islocked) {
760+ return this.tkeypress(e);
761+ }
762+ if(!this.locking) {
763+ this.locking = true;
764+ this.post(["hold"]);
765+ console.log("holding...");
766+ }
767+ var self = this;
768+ var xe = jQuery.Event("keypress");
769+ xe.which = e.which;
770+ xe.keyCode = e.keyCode;
771+ xe.ctrlKey = e.ctrlKey;
772+ xe.metaKey = e.metaKey;
773+ xe.preventDefault = function(){};
774+ this.whenlocked.push(function() {
775+ console.log("held keypress");
776+ $(self.c).trigger(xe);
777+ return false;
778+ });
779+ return this.tkeypress(e, true);
780+ };
781+
782+ this.tkeyup = function(e, deferred) {
783+ var key = e.keyCode;
784+ if(!e.keyCode)
785+ key = e.which;
786+ var rune = String.fromCharCode(e.keyCode);
787+ var isdeadkey = e && e.originalEvent &&
788+ e.originalEvent.keyIdentifier == "Unidentified";
789+ if(tdebug) {
790+ var ds = (isdeadkey ? " dead" : "");
791+ console.log("keyup which " + e.which + " key " + e.keyCode +
792+ " '" + rune + "'" + ds +
793+ " " + e.ctrlKey + " " + e.metaKey, e);
794+ }
795+ switch(key){
796+ case 112: /* F1 */
797+ case 113: /* F2 */
798+ case 114: /* F3 */
799+ case 115: /* F4 */
800+ if(deferred) {
801+ break;
802+ }
803+ var mev = {
804+ fakex: this.lastx,
805+ fakey: this.lasty,
806+ which: key-112+1,
807+ };
808+ mev.preventDefault = function(){}
809+ this.c.onmouseup(mev);
810+ break;
811+ case 18: /* Alt */
812+ this.composing = true;
813+ return true;
814+ default:
815+ return true;
816+ }
817+ return false;
818+ };
819+
820+ this.tlocknkeyup = function() {
821+ dontbubble(e);
822+ if(this.islocked) {
823+ return this.tkeyup(e);
824+ }
825+ if(!this.locking) {
826+ this.locking = true;
827+ this.post(["hold"]);
828+ console.log("holding...");
829+ }
830+ var self = this;
831+ var xe = jQuery.Event("keyup");
832+ xe.which = e.which;
833+ xe.keyCode = e.keyCode;
834+ xe.ctrlKey = e.ctrlKey;
835+ xe.metaKey = e.metaKey;
836+ xe.preventDefault = function(){};
837+ this.whenlocked.push(function() {
838+ console.log("held keyup");
839+ $(self.c).trigger(xe);
840+ return false;
841+ });
842+ return this.tkeyup(e, true);
843+ };
844+
845+ this.tmdown = function(e) {
846+ if(0)console.log("tmdown ", this.id, e);
847+ this.selectstart();
848+ e.preventDefault();
849+ this.secondary = 0; /* paranoia: see tm234 */
850+ this.secondaryabort = false;
851+ this.mpress(e);
852+ this.evxy(e);
853+ var b = this.buttons;
854+ switch(b){
855+ case 1:
856+ var ln, lnoff, past;
857+ [ln, lnoff, past] = this.ptr2seek(this.lastx, this.lasty);
858+ var pos = this.seekpos(ln, lnoff);
859+ this.setsel(pos, pos);
860+ this.m1(pos);
861+ break;
862+ case 2:
863+ case 4:
864+ case 8:
865+ var ln, lnoff, past;
866+ [ln, lnoff, past] = this.ptr2seek(this.lastx, this.lasty);
867+ var pos = this.seekpos(ln, lnoff);
868+ this.oldp0 = this.p0;
869+ this.oldp1 = this.p1;
870+ this.setsel(pos, pos);
871+ this.m234(pos, b);
872+ break;
873+ default:
874+ this.mwait();
875+ }
876+ e.returnValue = false;
877+ };
878+
879+ this.tlocknmdown = function() {
880+ if(this.islocked) {
881+ return this.tmdown(e);
882+ }
883+ if(!this.locking) {
884+ this.locking = true;
885+ this.post(["hold"]);
886+ console.log("holding...");
887+ }
888+ var self = this;
889+ var xe = jQuery.Event("mousedown");
890+ xe.which = e.which;
891+ xe.pageX = e.pageX;
892+ xe.pageY = e.pageY;
893+ xe.preventDefault = function(){};
894+ this.whenlocked.push(function() {
895+ console.log("held mousedown");
896+ $(self.c).trigger(xe);
897+ return false;
898+ });
899+ return false;
900+ };
901+
902+ this.tmup = function(e) {
903+ e.preventDefault();
904+ this.mrlse(e);
905+ this.evxy(e);
906+ if(this.buttons == 0) {
907+ this.selectend();
908+ }
909+ };
910+
911+ this.tlocknmup = function() {
912+ if(this.islocked) {
913+ return this.tmup(e);
914+ }
915+ if(!this.locking) {
916+ this.locking = true;
917+ this.post(["hold"]);
918+ console.log("holding...");
919+ }
920+ var self = this;
921+ var xe = jQuery.Event("mouseup");
922+ xe.which = e.which;
923+ xe.pageX = e.pageX;
924+ xe.pageY = e.pageY;
925+ xe.preventDefault = function(){};
926+ this.whenlocked.push(function() {
927+ console.log("held mouseup");
928+ $(self.c).trigger(xe);
929+ return false;
930+ });
931+ return false;
932+ };
933+
934+ this.locked = function() {
935+ if(this.islocked)
936+ return;
937+ if(this.locking) {
938+ this.locking = false;
939+ this.islocked = true;
940+ this.keydown = this.tkeydown;
941+ this.keypress = this.tkeypress;
942+ this.keyup = this.tkeyup;
943+ this.mdown = this.tmdown;
944+ this.mup = this.tmup;
945+ for(var i = 0; i < this.whenlocked.length; i++) {
946+ this.whenlocked[i]();
947+ }
948+ this.whenlocked = [];
949+ }
950+ };
951+
952+ this.unlocked = function() {
953+ this.islocked = false;
954+ this.locking = false;
955+ this.mustunlock = false;
956+ this.whenlocked = [];
957+ this.keydown = this.tlocknkeydown;
958+ this.keypress = this.tlocknkeypress;
959+ this.keyup = this.tlocknkeyup;
960+ this.mdown = this.locknmdown;
961+ this.mup = this.tlocknmup;
962+ this.post(["tick", ""+this.p0, ""+this.p1]);
963+ this.post(["rlsed"]);
964+ // collapse the selection or other's might insert in the middle.
965+ if(this.p0 != this.p1) {
966+ this.setsel(this.p0, this.p1, true);
967+ }
968+ };
969+
970+ this.keydown = this.tlocknkeydown;
971+ this.keypress = this.tlocknkeypress;
972+ this.keyup = this.tlocknkeyup;
973+ this.mdown = this.locknmdown;
974+ this.mup = this.tlocknmup;
975+
976+ this.menter = function(e) {
977+ if(selecting) {
978+ return;
979+ }
980+ var x = window.scrollX;
981+ var y = window.scrollY;
982+ $("#" + this.id ).focus();
983+ window.scrollTo(x, y);
984+ if(this.islocked || this.locking) {
985+ return;
986+ }
987+ this.locking = true;
988+ this.post(["hold"]);
989+ console.log("holding...");
990+ };
991+
992+ this.mwheel = function(e) {
993+ e.stopPropagation();
994+ if(!this.islocked && !this.locking) {
995+ this.locking = true;
996+ this.post(["hold"]);
997+ console.log("holding...");
998+ return false;
999+ }
1000+ try {
1001+ e.preventDefault();
1002+ var d = e.wheelDelta * -1;
1003+ var s = 1;
1004+ if(d < 0){
1005+ d = -d;
1006+ d = 1 + Math.floor(d/10);
1007+ if(this.scrolldown(d)){
1008+ this.untick();
1009+ this.redrawtext();
1010+ }
1011+ }else{
1012+ d = 1 + Math.floor(d/10);
1013+ if(this.scrollup(d)){
1014+ this.untick();
1015+ this.redrawtext();
1016+ }
1017+ }
1018+ }catch(ex){
1019+ console.log("tmwheel: " + ex);
1020+ }
1021+ };
1022+
1023+ this.mmove = function(e) {
1024+ if(this.islocked || this.locking) {
1025+ return this.evxy(e);
1026+ }
1027+ this.locking = true;
1028+ this.post(["hold"]);
1029+ console.log("holding...");
1030+ return false;
1031+ };
1032+
1033+ // holding down button-1, change handlers to speak
1034+ // a different mouse language.
1035+ this.m1 = function(pos) {
1036+ var now = new Date().getTime();
1037+ if(!this.clicktime || now-this.clicktime>500) {
1038+ this.dblclick = 0;
1039+ this.clicktime = now;
1040+ }else{
1041+ this.dblclick++;
1042+ this.clicktime = now;
1043+ }
1044+ var wassel = true;
1045+ if(this.dblclick) {
1046+ var x = this.getword(pos, this.dblclick>1);
1047+ this.post(["click1", x[0], ""+x[1], ""+x[2]]);
1048+ this.setsel(x[1], x[2]);
1049+ wassel = false;
1050+ }
1051+
1052+ this.c.onmousemove = function(e) {
1053+ self.evxy(e);
1054+ if(!self.buttons)
1055+ return;
1056+ var ln, lnoff, past;
1057+ [ln, lnoff, past] = self.ptr2seek(self.lastx, self.lasty);
1058+ var npos = self.seekpos(ln, lnoff);
1059+ if(npos > pos) {
1060+ if(self.p0 != pos || self.p1 != npos)
1061+ self.setsel(pos, npos, true);
1062+ }else {
1063+ if(self.p0 != npos || self.p1 != pos)
1064+ self.setsel(npos, pos, true);
1065+ }
1066+ return false;
1067+ };
1068+
1069+ this.c.onmousedown = function(e){
1070+ self.evxy(e);
1071+ self.mpress(e);
1072+ if(self.noedits) {
1073+ return;
1074+ }
1075+ if(self.buttons == 1+2){
1076+ wassel = false;
1077+ self.Post(["ecut", ""+self.p0, ""+self.p1]);
1078+ }
1079+ if(self.buttons == 1+4){
1080+ wassel = false;
1081+ if(self.p0 != self.p1){
1082+ self.Post(["edel", ""+self.p0, ""+self.p1]);
1083+ }
1084+ self.post(["epaste", ""+self.p0, ""+self.p1]);
1085+ }
1086+ if(self.buttons == 1+8){
1087+ wassel = false;
1088+ self.post(["ecopy", ""+self.p0, ""+self.p1]);
1089+ }
1090+ };
1091+
1092+ this.c.onmouseup = function(e){
1093+ self.evxy(e);
1094+ self.mrlse(e);
1095+ if(self.buttons == 0){
1096+ self.c.onmousemove = self.c.mmove;
1097+ self.c.onmousedown = self.c.mdown;
1098+ self.c.onmouseup = self.c.mup;
1099+ self.post(["focus"]);
1100+ self.selectend();
1101+ if(wassel && self.p0 != self.p1) {
1102+ var x = self.get(self.p0, self.p1);
1103+ self.post(["click1", x, ""+self.p0, ""+self.p1]);
1104+ }
1105+ if(document.setfocus) {
1106+ document.setfocus(self);
1107+ }
1108+ }
1109+ };
1110+ };
1111+
1112+ // holding down button-[234], change handlers to speak
1113+ // a different mouse language.
1114+ this.m234 = function(pos, b) {
1115+ this.secondary = b;
1116+ this.c.onmousemove = function(e){
1117+ self.evxy(e);
1118+ if(!self.buttons)
1119+ return;
1120+ var ln, lnoff, past;
1121+ [ln, lnoff, past] = self.ptr2seek(self.lastx, self.lasty);
1122+ var npos = self.seekpos(ln, lnoff);
1123+ if(npos > pos){
1124+ if(self.p0 != pos || self.p1 != npos) {
1125+ self.setsel(pos, npos, true);
1126+ }
1127+ }else {
1128+ if(self.p0 != npos || self.p1 != pos) {
1129+ self.setsel(npos, pos, true);
1130+ }
1131+ }
1132+ return false;
1133+ };
1134+
1135+ this.c.onmousedown = function(e) {
1136+ self.evxy(e);
1137+ self.mpress(e);
1138+ self.secondaryabort = true;
1139+ };
1140+
1141+ this.c.onmouseup = function(e) {
1142+ self.evxy(e);
1143+ self.mrlse(e);
1144+ console.log("m234 up");
1145+ if(self.buttons == 0){
1146+ var sp0 = self.p0;
1147+ var sp1 = self.p1;
1148+ var ln = self.lne;
1149+ var tsize = 0;
1150+ if(ln && ln.txt.length == 0) {
1151+ tsize = ln.off;
1152+ }
1153+ self.secondary = 0;
1154+ self.setsel(self.oldp0, self.oldp1);
1155+ console.log("sp0 " + sp0 + " " + sp1 + " " + tsize);
1156+ if(!self.secondaryabort)
1157+ if(sp0 != sp1) {
1158+ var txt = self.get(sp0, sp1);
1159+ self.post(["click"+b, "", ""+sp0, ""+sp1, txt]);
1160+ } else if(self.p0 != self.p1 &&
1161+ sp0 >= self.p0 && sp0 <= self.p1) {
1162+ var txt = self.get(self.p0, self.p1);
1163+ self.post(["click"+b, txt, ""+self.p0, ""+self.p1]);
1164+ } else if(b != 1 && sp0 == sp1 && tsize &&
1165+ sp0 == tsize && sp0>0) {
1166+ // a click at a final empty line selects the previous
1167+ // line (which is the last one shown).
1168+ var x = self.getword(sp0-1, b != 8 || self.dblclick>1);
1169+ self.post(["click"+b, x[0], ""+x[1], ""+x[2]]);
1170+ } else {
1171+ var x = self.getword(sp0, b != 8 || self.dblclick>1);
1172+ self.post(["click"+b, x[0], ""+x[1], ""+x[2]]);
1173+ }
1174+ self.c.onmousemove = self.c.mmove;
1175+ self.c.onmousedown = self.c.mdown;
1176+ self.c.onmouseup = self.c.mup;
1177+ }
1178+ if(self.buttons == 0){
1179+ self.p0 = self.oldp0;
1180+ self.p1 = self.oldp1;
1181+ self.secondary = 0;
1182+ self.secondaryabort = false;
1183+ self.selectend();
1184+ }
1185+ }
1186+ };
1187+
1188+ this.mwait = function() {
1189+ this.c.onmousemove = function(e) {
1190+ return self.evxy(e);
1191+ };
1192+ this.c.onmousedown = function(e) {
1193+ self.evxy(e);
1194+ self.mpress(e);
1195+ };
1196+ this.c.onmouseup = function(e) {
1197+ self.evxy(e);
1198+ self.mrlse(e);
1199+ if(self.buttons == 0) {
1200+ self.c.onmousemove = self.c.mmove;
1201+ self.c.onmousedown = self.c.mdown;
1202+ self.c.onmouseup = self.c.mup;
1203+ }
1204+ };
1205+ };
1206+
1207+ this.c.onmousedown = function(e) {
1208+ return self.mdown(e);
1209+ };
1210+ this.c.onmouseup = function(e) {
1211+ return self.mup(e);
1212+ };
1213+ this.c.onmousemove = function(e) {
1214+ return self.mmove(e);
1215+ };
1216+ this.c.mdown = this.c.onmousedown;
1217+ this.c.mup = this.c.onmouseup;
1218+ this.c.mmove = this.c.onmousemove;
1219+
1220+ this.c.onmousewheel = function(e) {
1221+ return self.mwheel(e);
1222+ };
1223+ this.c.onmouseenter = function(e) {
1224+ return self.menter(e);
1225+ };
1226+
1227+ this.c.onpaste = function(){return false;};
1228+ this.c.oncontextmenu = function(){return false;};
1229+ this.c.onclick = null;
1230+ this.c.ondblclick = null;
1231+
1232+ this.d.keypress(function(e){
1233+ dontbubble(e);
1234+ return self.tkeypress(e);
1235+ })
1236+ .keyup(function(e){
1237+ dontbubble(e);
1238+ return self.tkeyup(e);
1239+ })
1240+ .keydown(function(e){
1241+ dontbubble(e);
1242+ return self.tkeydown(e);
1243+ });
1244+
1245+ this.mayresize(false);
1246+ this.redrawtext();
1247+
1248+ // Now that we have everything defined, make it a clive ctlr
1249+ // with post and everything.
1250+ CliveCtlr.call(this);
1251+
1252+}
1253+
1254+document.mktxt = function(d, e, cid, id, font) {
1255+ var c = new CliveText(d, e, cid, id);
1256+ if(!font) {
1257+ font = "r";
1258+ }
1259+ c.fontstyle = font;
1260+ c.fixfont();
1261+ return c;
1262+};
1263+
net/ink/js/txt.js+0−2333
@@ -1,2333 +0,0 @@
1−"use strict";
2−/*
3− js code for the clive text frame
4− which is similar to a Plan 9 text frame
5− but implemented with the HTML5 canvas.
6−
7− HTML5 designers suggest that you don't do this, but on the other
8− hand, they do NOT handle text correctly in dom and they do NOT
9− provide the interfaces required to handle things like undo and
10− redo correctly.
11−
12− */
13−
14−/*
15− * Hack to make sure the fixed and var width fonts exist, and
16− * global font names for those variants.
17− */
18−var tffixed = "monospace";
19−var tfvar = "Lucida Grande"; // or Verdana
20−var fontscheckedout = false;
21−var tdebug = false;
22−
23−function checkoutfonts(ctx) {
24− if(fontscheckedout)
25− return;
26− fontscheckedout = true;
27− var old = ctx.font;
28− ctx.font = "50px Arial";
29− var sz = ctx.measureText("ABC").width;
30− ctx.font = "50px " + tffixed;
31− if(ctx.measureText("ABC").width == sz)
32− tffixed = "Courier";
33− ctx.font = "50px " + tfvar;
34− if(ctx.measureText("ABC").width == sz)
35− tffixed = "Arial";
36− ctx.font = old;
37−}
38−
39−function tfixfont() {
40− var c = this;
41− var ctx = c.getContext("2d", {alpha: false});
42− var mod = "";
43− var style = "";
44− style = tfvar;
45− if(this.fontstyle.indexOf('r') === -1) {
46− style = tffixed;
47− }
48− if(this.fontstyle.indexOf('b') > -1) {
49− mod = "bold " + mod;
50− }
51− if(this.fontstyle.indexOf('i') > -1) {
52− mod = "italic " + mod;
53− }
54− var ht = this.fontht - 2*this.tscale;
55− ctx.font = mod + " " + ht+"px "+ style;
56− ctx.textBaseline="top";
57−}
58−
59−function adjdel(pos, delp0, delp1) {
60− if(pos <= delp0)
61− return pos;
62− if(pos <= delp1)
63− return delp0;
64− return pos - (delp1 - delp0);
65−}
66−
67−function lnlen(ln){
68− if(!ln)
69− return 0;
70− if(ln.eol)
71− return ln.txt.length + 1;
72− return ln.txt.length;
73−}
74−
75−function tdump() {
76− var off = 0;
77− for(var i = 0; i < this.lines.length; i++){
78− var n = lnlen(this.lines[i]);
79− var o = this.lines[i].off
80− if(!o && !(o === 0)){
81− console.log("BAD off " + o + " in:");
82− o = off;
83− }
84− if(o != off){
85− console.log("BAD off " + o + " (!=" + off + ") in:");
86− off = o;
87− }
88− off += n;
89− if(this.lines[i].eol)
90− console.log(""+i+": "+o+"["+n+"]=\t" + this.lines[i].txt + "\\n");
91− else
92− console.log(""+i+": "+o+"["+n+"]=\t" + this.lines[i].txt);
93− }
94− for(var i = 0; i < this.marks.length; i++){
95− console.log("mark: ", this.marks[i].name, this.marks[i].pos);
96− }
97− console.log("sel: " + this.p0 + " " + this.p1);
98− console.log("vers: ", this.vers);
99−}
100−
101−function notabs(t, pos0) {
102− if(t.indexOf('\t') < 0)
103− return t;
104− var s = "";
105− var pos = 0;
106− if(pos0)
107− pos = pos0;
108− for(var i = 0; i < t.length; i++){
109− var r = t.charAt(i);
110− if(r == '\t') {
111− do {
112− s += " ";
113− pos++;
114− }while(pos%this.tabstop);
115− }else{
116− pos++;
117− s += r;
118− }
119− }
120− return s;
121−}
122−
123−function tlinewrap(t) {
124− var c = this;
125− var ctx = c.getContext("2d", {alpha: false});
126− var marginsz = 3;
127− var avail = c.width - 2*marginsz;
128− var pos = 0;
129− var s = "";
130− for(var i = 0; i < t.length; i++){
131− var r = t.charAt(i);
132− if(r == '\t') {
133− do {
134− s += " ";
135− pos++;
136− }while(pos%this.tabstop);
137− }else{
138− pos++;
139− s += r;
140− }
141− if(ctx.measureText(s).width > avail){
142− return i;
143− }
144− }
145− return t.length;
146−}
147−
148−function tposdx(ln, n) {
149− var t = ln.txt;
150− var c = this;
151− var ctx = c.getContext("2d", {alpha: false});
152− var pos = 0;
153− var dx = 0;
154− for(var i = 0; i < t.length && i < n; i++){
155− var r = t.charAt(i);
156− if(r == '\t') {
157− do {
158− dx += ctx.measureText(" ").width;
159− pos++;
160− }while(pos%this.tabstop);
161− }else{
162− pos++;
163− dx += ctx.measureText(r).width;
164− }
165− }
166− return dx;
167−}
168−
169−function tptr2tpos(cx, cy) {
170− var marginsz = 3;
171− var x = cx;
172− var y = cy;
173− var ovf = 0;
174− x *= this.tscale;
175− y *= this.tscale;
176− var nln = Math.floor(y/this.fontht);
177− if(nln < 0 || this.lines.length == 0)
178− return [0, 0, ovf];
179− if(nln+this.ln0 >= this.lines.length){
180− var ll = this.lines[this.lines.length-1];
181− return [ll.txt.length, this.frlines-1, 1];
182− }
183− if(nln > this.frlines){ // overflow
184− return [ll.txt.length, this.frlines-1, 1];
185− }
186− var pos = 0;
187− var ll = this.lines[nln+this.ln0];
188− for(; pos <= ll.txt.length; pos++){
189− var coff = this.posdx(ll, pos);
190− if(coff+marginsz > x){
191− if(pos > 0)
192− pos--;
193− break;
194− }
195− }
196− if(pos > ll.txt.length){
197− pos = ll.txt.length;
198− return [pos, nln, 1];
199− }
200− return [pos, nln, 0];
201−}
202−
203−function ttpos2pos(x, nln) {
204− if(nln < 0)
205− return 0;
206− if(nln+this.ln0 >= this.lines.length)
207− return this.nrunes;
208− var pos = this.lines[this.ln0].off;
209− for(var i = 0; i < nln && i+this.ln0 < this.lines.length; i++)
210− pos += lnlen(this.lines[this.ln0+i]);
211− if(nln + this.ln0 < this.lines.length)
212− pos += x;
213− return pos;
214−}
215−
216−function tuntick() {
217− var c = this;
218− var ctx = c.getContext("2d", {alpha: false});
219− if(!this.saved)
220− return;
221− ctx.putImageData(this.saved, this.tickx, this.ticky);
222− this.saved = null;
223−}
224−
225−function tviewsel() {
226− if(this.lines[this.ln0]) {
227− var off = this.lines[this.ln0].off;
228− var eoff = off+this.frsize;
229− if(this.p0 >= off && this.p0 <= eoff) {
230− return;
231− }
232− }
233− for(var i = 0; i < this.lines.length; i++){
234− var xln = this.lines[i];
235− var xlnlen = xln.txt.length;
236− if(this.p0 >= xln.off && this.p0 <= xln.off+xlnlen){
237− var n = i - Math.floor(this.frlines/3);
238− if(n < 0) {
239− n = 0;
240− }
241− if(n >= this.lines.length) {
242− n = this.lines.length-1;
243− }
244− xln = this.lines[n];
245− if(xln) {
246− this.ln0 = n;
247− this.froff = xln.off;
248− this.redrawtext();
249− } else {
250− console.log("tviewsel: no ln for", n, i);
251− }
252− return;
253− }
254− }
255−}
256−
257−function ttsetsel(p0, p1, refreshall) {
258− var c = this;
259− var ctx = c.getContext("2d", {alpha: false});
260− if(p0 > this.nrunes)
261− p0 = this.nrunes;
262− if(p1 < p0)
263− p1 = p0;
264− if(p1 > this.nrunes)
265− p1 = this.nrunes;
266− if(this.p0 != this.p1)
267− refreshall = true;
268− if(!this.lines[this.ln0]) {
269− return;
270− }
271− var froff = this.lines[this.ln0].off;
272− if(refreshall && (this.p1 <froff || this.p0 >froff+this.frsize))
273− refreshall = false;
274− var mp0 = p0;
275− var mp1 = p1;
276− if(refreshall){
277− if(this.p0 < mp0)
278− mp0 = this.p0;
279− if(this.p1 > mp1)
280− mp1 = this.p1;
281− }
282− this.p0 = p0;
283− this.p1 = p1;
284− this.untick();
285− if(mp1 <froff || mp0 >froff+this.frsize)
286− return;
287− var insel = false;
288− for(var i = 0; i < this.frlines; i++){
289− if(this.ln0+i >= this.lines.length)
290− break;
291− var xln = this.lines[this.ln0+i];
292− if(mp1 >= xln.off && mp0 <= xln.off+xln.txt.length)
293− insel=true;
294− if(insel)
295− this.drawline(xln, i);
296− if(mp1 < xln.off)
297− break;
298− }
299−}
300−
301−function tupdatescrl() {
302− var c = this;
303− var ctx = c.getContext("2d", {alpha: false});
304− var y0 = this.ln0 / this.lines.length * c.height;
305− var dy = this.frlines / this.lines.length * c.height;
306−
307− // right
308− ctx.clearRect(c.width-6, 0, 6, y0);
309− var old = ctx.fillStyle;
310− ctx.fillStyle = "#7373FF";
311− ctx.fillRect(c.width-6, y0, 6, dy);
312− ctx.fillStyle = old;
313− ctx.clearRect(c.width-6, y0+dy, 6, c.height-(y0+dy));
314−
315− // left
316− if(0) {
317− ctx.clearRect(0, 0, 1, y0);
318− ctx.fillRect(0, y0, 1, dy);
319− ctx.clearRect(0, y0+dy, 1, c.height-(y0+dy));
320− }
321−}
322−
323−function tdrawline(xln, i) {
324− var c = this;
325− var ctx = c.getContext("2d", {alpha: false});
326− var lnht = this.fontht;
327− var marginsz = 6;
328− var avail = c.width - 2*marginsz -1;
329− var pos = i*lnht;
330− if(pos >= c.height)
331− return false;
332− if(!xln){
333− ctx.clearRect(1, pos, c.width-1, lnht);
334− return true;
335− }
336− var ln = this.notabs(xln.txt);
337− /* draw selected line */
338− if(this.p0 != this.p1){
339− if(this.p0 > xln.off+xln.txt.length || this.p1 < xln.off){
340− /* draw normal line */
341− ctx.clearRect(1, pos, c.width-7, lnht);
342− ctx.fillText(ln, marginsz, pos);
343− return true;
344− }
345− /* up to p0 unselected */
346− var dx = marginsz;
347− var s0 = 0;
348− var s0pos = 0;
349− if(this.p0 > xln.off){
350− s0 = this.p0 - xln.off;
351− var s0ln = this.notabs(xln.txt.slice(0, s0));
352− s0pos = s0ln.length;
353− dx = marginsz + ctx.measureText(s0ln).width;
354− ctx.clearRect(1, pos, dx, lnht);
355− ctx.fillText(s0ln, marginsz, pos);
356− }
357− /* from p0 to p1 selected */
358− var s1 = xln.txt.length - s0;
359− if(this.p1 < xln.off+xln.txt.length)
360− s1 = this.p1 - s0 - xln.off;
361− var s1ln = this.notabs(xln.txt.slice(s0, s0+s1), s0pos);
362− var s1pos = s0pos + s1ln.length;
363− var sx = ctx.measureText(s1ln).width;
364− var old = ctx.fillStyle;
365− if(this.secondary == 2)
366− ctx.fillStyle = "#FF7575";
367− else if(this.secondary)
368− ctx.fillStyle = "#7373FF";
369− else
370− ctx.fillStyle = "#D1A0A0";
371− if(this.p1 > xln.off+xln.txt.length)
372− ctx.fillRect(dx, pos, c.width-dx-7, lnht);
373− else
374− ctx.fillRect(dx, pos, sx, lnht);
375− ctx.fillStyle = old;
376− ctx.fillText(s1ln, dx, pos);
377− if(this.p1 > xln.off+xln.txt.length)
378− return true;
379− /* from p1 unselected */
380− ctx.clearRect(dx+sx, pos, c.width-(dx+sx)-7, lnht);
381− if(s1 >= xln.txt.length)
382− return true;
383− var s2ln = this.notabs(xln.txt.slice(s0+s1, xln.txt.length), s1pos);
384− ctx.fillText(s2ln, dx+sx, pos);
385− return true;
386− }
387−
388− /* draw unselected line */
389− ctx.clearRect(1, pos, c.width-7, lnht);
390− ctx.fillText(ln, marginsz, pos);
391−
392− /* draw tick if needed */
393− if(this.p0 < xln.off || this.p0 > xln.off + xln.txt.length)
394− return true;
395− /*
396− * if p0 is at the end of a wrapped line don't draw it here,
397− * because the next line will draw it at the start of line.
398− */
399− if(this.p0 == xln.off + xln.txt.length && !xln.eol &&
400− xln != this.lines[this.lines.length-1])
401− return true;
402− var dx = this.posdx(xln, this.p0 - xln.off);
403− dx += marginsz - 3*this.tscale/2;
404− this.saved = ctx.getImageData(dx, pos, 3*this.tscale, this.fontht);
405− this.tickx = dx;
406− this.ticky = pos;
407− ctx.putImageData(this.tick, dx, pos);
408− return true;
409−}
410−
411−function treformat(l0) {
412− this.fixfont();
413−
414− var lns = this.lines;
415− for(var i = l0; i < lns.length;){
416− while(!lns[i].eol && i < lns.length-1){
417− lns[i].txt += lns[i+1].txt;
418− lns[i].eol = lns[i+1].eol;
419− lns.splice(i+1, 1);
420− }
421− /* remove empty lines (no \n) unless they are at the end
422− * because the last empty line is used to draw the tick
423− * past the last \n
424− */
425− if(lns[i].txt.length == 0 && !lns[i].eol &&
426− lns.length>1 && i != lns.length-1)
427− lns.splice(i, 1);
428− else
429− i++;
430− }
431− var off = 0;
432− if(l0 > 0 && l0 < lns.length)
433− off = lns[l0-1].off + lnlen(lns[l0-1]);
434− for(var i = l0; i < lns.length; i++){
435− lns[i].off = off;
436− var nw = this.linewrap(lns[i].txt);
437− if(nw < lns[i].txt.length){
438− var old = lns[i].txt;
439− var nl = {txt: old.slice(0, nw), off: lns[i].off};
440− nl.eol = false;
441− lns.splice(i, 0, nl);
442− lns[i+1].txt = old.slice(nw, old.length);
443− lns[i+1].off += nw;
444− }
445− off += lnlen(lns[i]);
446− }
447− if(l0 < this.ln0){
448− if(this.ln0 >= lns.length)
449− this.ln0 = lns.length-1;
450− }
451− if(lns.length == 0) {
452− lns[0] = {txt:"", off: lnlen(last)};
453− }
454− var last = lns[lns.length-1];
455− if(last.eol){
456− lns[lns.length] = {txt:"", off: last.off + lnlen(last)};
457− }
458−}
459−
460−function tsetlinesoff(l0) {
461− var lns = this.lines;
462− for(var lns = this.lines; l0 < lns.length; l0++){
463− if(l0 == 0)
464− lns[l0].off = 0;
465− else
466− lns[l0].off = lns[l0-1].off + lnlen(lns[l0-1]);
467− }
468−}
469−
470−function tredrawtext() {
471− var c = this;
472− var ctx = c.getContext("2d", {alpha: false});
473− c.fixfont();
474− var nlines = c.height / (this.fontht);
475−
476− if(!this.tick){
477− var x = ctx.lineWidth;
478− ctx.lineWidth = 1;
479− var d = 3*this.tscale;
480− ctx.fillRect(0, 0, d, d);
481− ctx.fillRect(0, this.fontht-d, d, d);
482− ctx.moveTo(d/2, 0);
483− ctx.lineTo(d/2, this.fontht);
484− ctx.stroke();
485− ctx.lineWidth = x;
486− this.tick = ctx.getImageData(0, 0, d, this.fontht);
487− }
488− if(!this.lines[this.ln0]) {
489− console.log("tredrawtext: no ln0");
490− return;
491− }
492− var off = this.lines[this.ln0].off;
493− var froff = off;
494− this.frsize = 0;
495− this.frlines = 0;
496− for(var i = 0; i <= nlines; i++){
497− if(this.ln0+i < this.lines.length){
498− var xln = this.lines[this.ln0+i];
499− if(!this.drawline(xln, i))
500− break;
501− this.frlines++;
502− off += lnlen(xln);
503− }else
504− if(!this.drawline(null, i))
505− break;
506− }
507− this.frsize = off - froff;
508− this.updatescrl();
509−}
510−
511−function tscrolldown1() {
512− if(this.ln0 >= this.lines.length-1)
513− return false;
514− this.froff += lnlen(this.lines[this.ln0]);
515− this.ln0++;
516− return true;
517−}
518−
519−function tscrollup1() {
520− if(this.ln0 == 0)
521− return false;
522− this.ln0--;
523− return true;
524−}
525−
526−function tscrolldown(n) {
527− var some = false;
528− for(; n > 0; n--){
529− if(this.scrolldown1())
530− some=true;
531− else
532− break;
533− }
534− return some;
535−}
536−
537−function tscrollup(n) {
538− var some = false;
539− for(; n > 0; n--){
540− if(this.scrollup1())
541− some=true;
542− else
543− break;
544− }
545− return some;
546−}
547−
548−/*
549− * t may be arbitrary text (single line) or \n, but not both at once.
550− * The text is always inserted at this.p0 and p0, p1 are updated.
551− *
552− */
553−function ttins(t, dontscroll) {
554− this.untick();
555− var nscrl = Math.floor(this.nlines/4);
556− if(nscrl == 0)
557− nscrl = 1;
558− this.markins(t.length);
559− for(var i = 0; i < this.lines.length; i++){
560− var xln = this.lines[i];
561− var xlnlen = xln.txt.length;
562− if(this.p0 >= xln.off && this.p0 <= xln.off+xlnlen){
563− var pos = this.p0 - xln.off;
564− if(t == '\n'){
565− var nln = {
566− txt: "",
567− off: xln.off+pos+1,
568− eol: xln.eol
569− };
570− if(pos < xlnlen){
571− nln.txt = xln.txt.slice(pos, xlnlen);
572− xln.txt = xln.txt.slice(0, pos);
573− }
574− this.lines.splice(i+1, 0, nln);
575− xln.eol = true;
576− this.p0++;
577− this.p1 = this.p0;
578− this.nrunes++;
579− this.reformat(i);
580− if(!dontscroll)
581− if(i >= this.ln0+this.nlines-1 &&
582− i <= this.ln0+this.nlines+1 && this.nlines > 1)
583− this.scrolldown(nscrl);
584− this.redrawtext();
585− return;
586− }
587− if(pos == xln.txt.length)
588− xln.txt += t;
589− else
590− xln.txt = xln.txt.slice(0, pos) +
591− t + xln.txt.slice(pos, xlnlen);
592− this.p0 += t.length;
593− this.p1 = this.p0;
594− this.nrunes += t.length;
595− var wr = this.linewrap(xln.txt);
596− if(wr == xln.txt.length){
597− this.setlinesoff(i+1);
598− this.frsize += t.length;
599− if(i >= this.ln0 && i <= this.ln0+this.frlines)
600− this.drawline(xln, i-this.ln0);
601− } else {
602− this.reformat(i);
603− if(!dontscroll)
604− if(i >= this.ln0+this.nlines-1 &&
605− i <= this.ln0+this.nlines+1)
606− this.scrolldown(nscrl);
607− this.redrawtext();
608− }
609− return;
610− }
611− }
612−}
613−
614−/*
615− * if the selection is empty, the previous rune is deleted, otherwise
616− * the entire selection is removed. p0 and p1 are updated.
617− */
618−function ttdel(dontscroll) {
619− this.untick();
620− if(this.p0 >= this.nrunes || this.p1 < this.p0)
621− return;
622− var nscrl = Math.floor(this.nlines/4);
623− if(nscrl == 0)
624− nscrl = 1;
625− var mightscroll = (this.p1 >= this.lines[this.ln0].off);
626− console.log("del ", this.p0, this.p1);
627− if(this.p0 > 0 && this.p0 == this.p1)
628− this.p0--;
629− this.markdel();
630− var i;
631− var xln;
632− for(i = 0; i < this.lines.length; i++){
633− xln = this.lines[i];
634− var xlnlen = xln.txt.length;
635− if(this.p0 >= xln.off && this.p0 <= xln.off+xlnlen)
636− break;
637− }
638− if(i == this.lines.length){
639− console.log("tdel: out of text");
640− return;
641− }
642− var ln0 = i;
643− var ndel = this.p1 - this.p0;
644− var off = this.p0 - xln.off;
645− var tot = 0;
646− while(tot < ndel && i < this.lines.length) {
647− var xln = this.lines[i];
648− var xlnlen = xln.txt.length;
649− var nd = ndel-tot;
650− if(off+nd > xlnlen)
651− nd = xlnlen - off;
652− xln.txt = xln.txt.slice(0, off) + xln.txt.slice(off+nd, xlnlen);
653− tot += nd;
654− if(i == ln0 && tot == ndel && xln.eol){
655− /* del within a line; don't reformat; just adjust */
656− this.nrunes -= tot;
657− this.p1 -= tot;
658− this.setlinesoff(i+1);
659− if(ln0 >= this.ln0 && ln0 < this.ln0+this.frlines){
660− this.frsize -= tot;
661− this.drawline(xln, i-this.ln0);
662− }
663− return;
664− }
665− if(tot < ndel && xln.eol){
666− xln.eol = false;
667− tot++;
668− }
669− i++;
670− off = 0;
671− }
672− this.setlinesoff(ln0+1);
673− this.nrunes -= tot;
674− this.p1 -= tot;
675− this.reformat(ln0);
676− this.redrawtext();
677− if(!dontscroll && mightscroll && this.p0 < this.lines[this.ln0].off){
678− this.scrollup(nscrl);
679− this.redrawtext();
680− }
681−}
682−
683−var wordre = null;
684−function iswordchar(c) {
685− if(!wordre)
686− wordre = /\w/;
687− return wordre.test(c);
688−}
689−
690−function islongwordchar(c) {
691− if(!wordre)
692− wordre = /\w/;
693− return c == '(' || c == ')' || c == '/' || c == '.' || c == ':' || c == '#' || c == ',' || wordre.test(c);
694−}
695−
696−function islparen(c) {
697− return "([{<'`\"".indexOf(c) >= 0;
698−}
699−
700−function isrparen(c) {
701− return ")]}>'`\"".indexOf(c) >= 0;
702−}
703−
704−function rparen(c) {
705− var i = "([{<".indexOf(c);
706− if(i < 0)
707− return c;
708− return ")]}>".charAt(i);
709−}
710−
711−function lparen(c) {
712− var i = ")]}>".indexOf(c);
713− if(i < 0)
714− return c;
715− return "([{<".charAt(i);
716−}
717−
718−function ttgetword(pos, long) {
719− if(pos >= this.nrunes)
720− return ["", this.nrunes, this.nrunes];
721− if(!long) {
722− long = (this.dblclick > 1);
723− }
724− var ischar = iswordchar;
725− if(long) {
726− ischar = islongwordchar;
727− }
728− var i;
729− var xln;
730− for(i = 0; i < this.lines.length; i++){
731− xln = this.lines[i];
732− var xlnlen = xln.txt.length;
733− if(pos < xln.off || pos > xln.off+xlnlen)
734− continue;
735− /* now select the word (won't loop again) */
736− var epos = pos;
737− var p0 = pos - xln.off;
738− if(p0 == xlnlen){
739− if(!xln.eol)
740− return [xln.txt, xln.off, xln.off+lnlen(xln)];
741− return [xln.txt+"\n", xln.off, xln.off+lnlen(xln)];
742− }
743− /*
744− * heuristic: if click at the right of lparen and not
745− * at rparen, use the lparen.
746− */
747− if(p0 > 0 && !isrparen(xln.txt.charAt(p0)) &&
748− islparen(xln.txt.charAt(p0-1))){
749− pos--;
750− p0--;
751− }
752− var p1 = p0;
753− var c = xln.txt.charAt(p0);
754− if(islparen(c)){
755− pos++;
756− var n = 1;
757− var rc = rparen(c);
758− var txt = "";
759− p1++;
760− epos++;
761− do{
762− for(; p1 < xlnlen; p1++, epos++){
763− var x = xln.txt.charAt(p1);
764− if(x == rc)
765− n--;
766− else if(x == c)
767− n++;
768− if(n != 0)
769− txt += x;
770− if(n == 0)
771− return [txt, pos, epos-1];
772− }
773− if(xln.eol){
774− epos++;
775− txt += "\n";
776− }
777− i++;
778− if(i < this.lines.length){
779− xln = this.lines[i];
780− xlnlen = xln.txt.length;
781− p1 = 0;
782− }
783− }while(n > 0 && i < this.lines.length);
784− return [txt, pos, epos];
785− }
786− if(isrparen(c)){
787− var n = 1;
788− var lc = lparen(c);
789− var txt = "";
790− do{
791− for(p0--; p0 >= 0; p0--){
792− x = xln.txt.charAt(p0);
793− if(x == lc)
794− n--;
795− else if(x == c)
796− n++;
797− if(n != 0){
798− pos--;
799− txt = x + txt;
800− }
801− if(n == 0)
802− return [txt, pos, epos];
803− }
804− if(i > 0){
805− i--;
806− xln = this.lines[i];
807− xlnlen = xln.txt.length;
808− p0 = xlnlen;
809− if(xln.eol){
810− pos--;
811− txt = "\n" + txt;
812− }
813− }
814− }while(i >= 0 && n > 0);
815− return [txt, pos, epos];
816− }
817− if(!islongwordchar(c))
818− return [xln.txt.slice(p0, p1), pos, epos];
819− while(p0 > 0 && ischar(xln.txt.charAt(p0-1))){
820− pos--;
821− p0--;
822− }
823− while(p1 < xlnlen && ischar(xln.txt.charAt(p1))){
824− epos++;
825− p1++;
826− }
827− return [xln.txt.slice(p0, p1), pos, epos];
828− }
829− return ["", pos, pos];
830−}
831−
832−function ttget(p0, p1) {
833− if(p0 == p1 || p0 >= this.nrunes || p1 < p0)
834− return "";
835− var i;
836− var xln;
837− for(i = 0; i < this.lines.length; i++){
838− xln = this.lines[i];
839− var xlnlen = xln.txt.length;
840− if(p0 >= xln.off && p0 <= xln.off+xlnlen)
841− break;
842− }
843− if(i == this.lines.length){
844− console.log("tget: out of text");
845− return "";
846− }
847− var ln0 = i;
848− var nget = p1 - p0;
849− var off = p0 - xln.off;
850− var tot = 0;
851− var txt = "";
852− do{
853− var xln = this.lines[i];
854− var xlnlen = xln.txt.length;
855− var ng = nget-tot;
856− if(off+ng > xlnlen)
857− ng = xlnlen - off;
858− txt += xln.txt.slice(off, off+ng);
859− tot += ng;
860− if(tot < nget && xln.eol){
861− txt += "\n";
862− tot++;
863− }
864− i++;
865− off = 0;
866− }while(tot < nget);
867− return txt;
868−}
869−
870−/*
871− * call tins for arbitrary text.
872− */
873−function ttinslines(x, dontscroll) {
874− try{
875− var ln = x.split('\n');
876− for(var i = 0; i < ln.length; i++) {
877− if(ln[i].length > 0)
878− this.tins(ln[i], dontscroll);
879− if(i < ln.length-1)
880− this.tins('\n', dontscroll);
881− }
882− }catch(ex){
883− console.log("tinslines: " + ex);
884− }
885−}
886−
887−function tmayresize(user) {
888− if(user) {
889− this.userresized = true;
890− }
891− var p = $(this).parent();
892− var dx = p.width();
893− var dy = p.height() - 5;
894− console.log('text resized', dx, dy, user?"user":"win");
895− var c = this;
896− var ctx = this.getContext("2d", {alpha: false});
897− var tag = $("#"+this.divid+"t")
898− if(tag) {
899− var ty = tag.height();
900− dy -= ty;
901− }
902− $(this).width(dx);
903− $(this).height(dy);
904− c.width = c.tscale*dx;
905− c.height = c.tscale*dy;
906− this.nlines = Math.floor(c.height/this.fontht);
907− this.saved = null;
908− this.reformat(0);
909− this.redrawtext();
910−}
911−
912−function tautoresize(addsize, moreless) {
913− var p = $(this);
914− var oldht = p.height();
915− var ht = oldht;
916− var fontht = this.fontht/this.tscale;
917− if(addsize) {
918− this.userresized = true;
919− if(moreless > 1){
920− var wtop = $(window).scrollTop();
921− var etop = $(this).offset().top;
922− var eoff = etop-wtop;
923− console.log("resize ", wtop, etop, eoff);
924− ht = window.innerHeight - 10 - eoff;
925− } else if(moreless >= 0) {
926− ht += fontht*6;
927− } else {
928− ht -= fontht*6;
929− if(ht < 5*fontht) {
930− ht = 5*fontht;
931− }
932− }
933− }else{
934− var nln = this.frlines;
935− if(nln < 3) {
936− nln = 3;
937− }
938− ht = (nln+2) * fontht;
939− if (ht >= 400) {
940− ht = 400;
941− }
942− }
943− console.log("auto rsz", nln, ht, oldht);
944− if (oldht < ht - fontht || oldht > ht + fontht) {
945− console.log("auto resizing");
946− var delta = ht - oldht;
947− p = $(this).parent();
948− var nht = p.height() + delta;
949− p.height(nht);
950− this.mayresize();
951− }
952−}
953−
954−function tmrlse(e) {
955− var b = 1<<(e.which-1);
956− if(b == 1 && this.malt){
957− b = 2;
958− this.buttons &= ~1;
959− this.malt = false;
960− }
961− this.buttons &= ~b;
962− return b;
963−}
964−
965−function tmpress(e) {
966− var b = 1<<(e.which-1);
967− if(b == 1 && e.altKey){
968− b = 2;
969− this.malt = true;
970− }
971− this.buttons |= b;
972− return b;
973−}
974−
975−// set lastx, lasty to ev coords relative to canvas
976−function tevxy(e) {
977− var x = 0;
978− var y = 0;
979− if(e.fakex != undefined) {
980− x = e.fakex;
981− y = e.fakey;
982− } else {
983− var poff = $(this).offset();
984− x = e.pageX - poff.left;
985− y = e.pageY - poff.top;
986− }
987− this.lastx = x;
988− this.lasty = y;
989−}
990−
991−function tmwait() {
992− this.onmousemove = evxy;
993− this.onmousedown = function(e){
994− try{
995− this.evxy(e);
996− this.tmpress(e);
997− }catch(ex){
998− console.log("tmwait: down: " + ex);
999− }
1000− };
1001− this.onmouseup = function(e){
1002− try{
1003− this.evxy(e);
1004− this.tmrlse(e);
1005− if(this.buttons == 0){
1006− this.onmousedown = this.tmdown;
1007− this.onmouseup = this.tmup;
1008− this.onmousemove = this.evxy;
1009− }
1010− }catch(ex){
1011− console.log("tmwait: up: " + ex);
1012− }
1013− };
1014−}
1015−
1016−function tm1(pos) {
1017− var now = new Date().getTime();
1018− if(!this.clicktime || now-this.clicktime>500){
1019− this.dblclick = 0;
1020− this.clicktime = now;
1021− }else{
1022− this.dblclick++;
1023− this.clicktime = now;
1024− }
1025−
1026− if(this.dblclick){
1027− var x = this.tgetword(pos);
1028− this.post(["click1", x[0], ""+x[1], ""+x[2]]);
1029− this.tsetsel(x[1], x[2]);
1030− }
1031− this.onmousemove = function(e){
1032− try{
1033− this.evxy(e);
1034− if(!this.buttons)
1035− return;
1036− var tpos = this.ptr2tpos(this.lastx, this.lasty);
1037− var npos = this.tpos2pos(tpos[0], tpos[1]);
1038− if(npos > pos){
1039− if(this.p0 != pos || this.p1 != npos)
1040− this.tsetsel(pos, npos, true);
1041− }else{
1042− if(this.p0 != npos || this.p1 != pos)
1043− this.tsetsel(npos, pos, true);
1044− }
1045− if(tpos[2] < 0 && this.scrollup1())
1046− this.redrawtext();
1047− if(tpos[1] >= this.frlines && this.scrolldown1())
1048− this.redrawtext();
1049− return false;
1050− }catch(ex){
1051− console.log("tm1: move: " + ex);
1052− }
1053− };
1054− this.onmousedown = function(e){
1055− try{
1056− this.evxy(e);
1057− this.tmpress(e);
1058− if(this.noedits) {
1059− return;
1060− }
1061− if(this.buttons == 1+2){
1062− this.Post(["ecut", ""+this.p0, ""+this.p1]);
1063− }
1064− if(this.buttons == 1+4){
1065− if(this.p0 != this.p1){
1066− this.Post(["edel", ""+this.p0, ""+this.p1]);
1067− }
1068− this.post(["epaste", ""+this.p0, ""+this.p1]);
1069− }
1070− if(this.buttons == 1+8){
1071− this.post(["ecopy", ""+this.p0, ""+this.p1]);
1072− }
1073− }catch(ex){
1074− console.log("tm1: down: " + ex);
1075− }
1076− };
1077−
1078− this.onmouseup = function(e){
1079− try{
1080− this.evxy(e);
1081− this.tmrlse(e);
1082− if(this.buttons == 0){
1083− this.onmousedown = this.tmdown;
1084− this.onmouseup = this.tmup;
1085− this.onmousemove = this.evxy;
1086− this.post(["focus"]);
1087− this.selectend();
1088− if(document.setfocus) {
1089− document.setfocus(this);
1090− }
1091− }
1092− }catch(ex){
1093− console.log("tm1: up: " + ex);
1094− }
1095− }
1096−}
1097−
1098−function tm234(pos, b) {
1099− this.secondary = b;
1100− this.onmousemove = function(e){
1101− try{
1102− this.evxy(e);
1103− if(!this.buttons)
1104− return;
1105− var tpos = this.ptr2tpos(this.lastx, this.lasty);
1106− var npos = this.tpos2pos(tpos[0], tpos[1]);
1107− if(npos > pos){
1108− if(this.p0 != pos || this.p1 != npos)
1109− this.tsetsel(pos, npos, true);
1110− }else
1111− if(this.p0 != npos || this.p1 != pos)
1112− this.tsetsel(npos, pos, true);
1113− if(tpos[2] < 0 && this.scrollup1())
1114− this.redrawtext();
1115− if(tpos[1] >= this.frlines && this.scrolldown1())
1116− this.redrawtext();
1117− return false;
1118− }catch(ex){
1119− console.log("tm1: move: " + ex);
1120− }
1121− };
1122− this.onmousedown = function(e){
1123− try{
1124− this.evxy(e);
1125− this.tmpress(e);
1126− this.secondaryabort = true;
1127− }catch(ex){
1128− console.log("tm2: down: " + ex);
1129− }
1130− };
1131− this.onmouseup = function(e){
1132− try{
1133− this.evxy(e);
1134− this.tmrlse(e);
1135− if(this.buttons == 0){
1136− var sp0 = this.p0;
1137− var sp1 = this.p1;
1138− var xln = this.lines[this.lines.length-1];
1139− var tsize = 0;
1140− if(xln && xln.txt.length == 0){
1141− tsize = xln.off;
1142− }
1143− this.secondary = 0;
1144− this.tsetsel(this.oldp0, this.oldp1);
1145− console.log("sp0 " + sp0 + " " + sp1 + " " + tsize);
1146− if(!this.secondaryabort)
1147− if(sp0 != sp1){
1148− var txt = this.tget(sp0, sp1);
1149− this.post(["click"+b, "", ""+sp0, ""+sp1, txt]);
1150− }else if(this.p0 != this.p1 &&
1151− sp0 >= this.p0 && sp0 <= this.p1){
1152− var txt = this.tget(this.p0, this.p1);
1153− this.post(["click"+b, txt,
1154− ""+this.p0, ""+this.p1]);
1155− }else if(b != 1 && sp0 == sp1 && tsize &&
1156− sp0 == tsize && sp0>0) {
1157− // a click at a final empty line selects the previous
1158− // line (which is the last one shown).
1159− var x = this.tgetword(sp0-1, b != 8);
1160− this.post(["click"+b, x[0],
1161− ""+x[1], ""+x[2]]);
1162− }else {
1163− var x = this.tgetword(sp0, b != 8);
1164− this.post(["click"+b, x[0],
1165− ""+x[1], ""+x[2]]);
1166− }
1167− this.onmousedown = this.tmdown;
1168− this.onmouseup = this.tmup;
1169− this.onmousemove = this.evxy;
1170− }
1171− }catch(ex){
1172− console.log("tm2: up: " + ex);
1173− }
1174− if(this.buttons == 0){
1175− this.p0 = this.oldp0;
1176− this.p1 = this.oldp1;
1177− this.secondary = 0;
1178− this.secondaryabort = false;
1179− this.selectend();
1180− }
1181− }
1182−}
1183−
1184−function tmup(e) {
1185− e.preventDefault();
1186− try {
1187− this.tmrlse(e);
1188− this.evxy(e);
1189− if(this.buttons == 0){
1190− this.selectend();
1191− }
1192− }catch(ex){
1193− console.log("tevmup: " + ex);
1194− }
1195−}
1196−
1197−function tmwheel(e) {
1198− try {
1199− e.preventDefault();
1200− var d = e.wheelDelta;
1201− var s = 1;
1202− if(d < 0){
1203− d = -d;
1204− d = 1 + Math.floor(d/10);
1205− if(this.scrolldown(d)){
1206− this.untick();
1207− this.redrawtext();
1208− }
1209− }else{
1210− d = 1 + Math.floor(d/10);
1211− if(this.scrollup(d)){
1212− this.untick();
1213− this.redrawtext();
1214− }
1215− }
1216− }catch(ex){
1217− console.log("tmwheel: " + ex);
1218− }
1219−}
1220−
1221−function tmdown(e) {
1222− if(0)console.log("tmdown ", this.divid, e);
1223− this.selectstart();
1224− e.preventDefault();
1225− this.secondary = 0; /* paranoia: see tm234 */
1226− this.secondaryabort = false;
1227− try {
1228− this.tmpress(e);
1229− this.evxy(e);
1230− var b = this.buttons;
1231− switch(b){
1232− case 1:
1233− var tpos = this.ptr2tpos(this.lastx, this.lasty);
1234− var pos = this.tpos2pos(tpos[0], tpos[1]);
1235− this.tsetsel(pos, pos);
1236− this.tm1(pos);
1237− break;
1238− case 2:
1239− case 4:
1240− case 8:
1241− var tpos = this.ptr2tpos(this.lastx, this.lasty);
1242− var pos = this.tpos2pos(tpos[0], tpos[1]);
1243− this.oldp0 = this.p0;
1244− this.oldp1 = this.p1;
1245− this.tsetsel(pos, pos);
1246− this.tm234(pos, b);
1247− break;
1248− default:
1249− this.tmwait();
1250− }
1251− }catch(ex){
1252− console.log("evmdown: " + ex);
1253− }
1254− e.returnValue = false;
1255−}
1256−
1257−function tkeydown(e, deferred) {
1258− try{
1259− var key = e.keyCode;
1260− if(!e.keyCode)
1261− key = e.which;
1262− var rune = String.fromCharCode(e.keyCode);
1263− e.stopPropagation();
1264− if(tdebug)console.log("keydown which " + e.which + " key " + e.keyCode +
1265− " '" + rune + "'" +
1266− " " + e.ctrlKey + " " + e.metaKey);
1267−
1268− switch(key){
1269− case 27: /* escape */
1270− if(deferred)
1271− break;
1272− this.post(["intr", "esc"]);
1273− this.dump();
1274− console.log("["+this.p0+","+this.p1+"]='" +
1275− this.tget(this.p0, this.p1) + "'");
1276− break;
1277− case 8: /* backspace */
1278− if(this.noedits) {
1279− return;
1280− }
1281− if(deferred)
1282− break;
1283− if(this.p0 != this.p1){
1284− this.Post(["edel", ""+this.p0, ""+this.p1]);
1285− }else if(this.p0 > 0){
1286− var p0 = this.p0-1;
1287− this.Post(["edel", ""+p0, ""+this.p1]);
1288− }
1289− break;
1290− case 9: /* tab */
1291− if(this.noedits) {
1292− return;
1293− }
1294− if(deferred)
1295− break;
1296− if(this.p0 != this.p1){
1297− this.Post(["edel", ""+this.p0, ""+this.p1]);
1298− }
1299− this.Post(["eins", "\t", ""+this.p0]);
1300− break;
1301− case 32: /* space */
1302− if(deferred)
1303− break;
1304− this.Post(["eins", " ", ""+this.p0]);
1305− break;
1306− case 37: /* left */
1307− if(this.noedits) {
1308− return;
1309− }
1310− this.post(["eundo"]);
1311− break;
1312− case 38: /* up */
1313− if(deferred)
1314− break;
1315− var n = Math.floor(this.frlines/4);
1316− if(n < 1) {
1317− n = 1;
1318− }
1319− if(this.scrollup(n)){
1320− this.untick();
1321− this.redrawtext();
1322− }
1323− break;
1324− case 39: /* right */
1325− if(this.noedits) {
1326− return;
1327− }
1328− if(deferred)
1329− break;
1330− this.post(["eredo"]);
1331− break;
1332− case 40: /* down */
1333− if(deferred)
1334− break;
1335− this.untick();
1336− var n = Math.floor(this.frlines/4);
1337− if(n < 1) {
1338− n = 1;
1339− }
1340− if(this.scrolldown(n)){
1341− this.untick();
1342− this.redrawtext();
1343− }
1344− break;
1345− case 46: /* delete */
1346− if(deferred)
1347− break;
1348− this.post(["intr", "del"]);
1349− break;
1350− case 112: /* F1 */
1351− case 113: /* F2 */
1352− case 114: /* F3 */
1353− case 115: /* F4 */
1354− if(deferred)
1355− break;
1356− var mev = {
1357− fakex: this.lastx,
1358− fakey: this.lasty,
1359− which: key-112+1,
1360− };
1361− mev.preventDefault = function(){}
1362− this.onmousedown(mev);
1363− break;
1364− case 123: /* F12 */
1365− tdebug = !tdebug;
1366− break;
1367− default:
1368− return true;
1369− }
1370− return false;
1371− }catch(ex){
1372− console.log("keydown: " + ex);
1373− }
1374−}
1375−
1376−function tkeyup(e, deferred) {
1377− try{
1378− var key = e.keyCode;
1379− if(!e.keyCode)
1380− key = e.which;
1381− var rune = String.fromCharCode(e.keyCode);
1382− var isdeadkey = e && e.originalEvent && e.originalEvent.keyIdentifier == "Unidentified";
1383− if(tdebug) {
1384− var ds = (isdeadkey ? " dead" : "");
1385− console.log("keyup which " + e.which + " key " + e.keyCode +
1386− " '" + rune + "'" + ds +
1387− " " + e.ctrlKey + " " + e.metaKey, e);
1388− }
1389− switch(key){
1390− case 112: /* F1 */
1391− case 113: /* F2 */
1392− case 114: /* F3 */
1393− case 115: /* F4 */
1394− if(deferred)
1395− break;
1396− var mev = {
1397− fakex: this.lastx,
1398− fakey: this.lasty,
1399− which: key-112+1,
1400− };
1401− mev.preventDefault = function(){}
1402− this.onmouseup(mev);
1403− break;
1404− case 18: /* Alt */
1405− this.composing = true;
1406− return true;
1407− default:
1408− return true;
1409− }
1410− return false;
1411− }catch(ex){
1412− console.log("keydown: " + ex);
1413− }
1414−}
1415−
1416−function tevkey(e, deferred) {
1417− try {
1418− // console.log("key");
1419− var key = e.keyCode;
1420− if(!e.keyCode)
1421− key = e.which;
1422− var rune = String.fromCharCode(e.keyCode);
1423− if(tdebug)console.log("key: which " + e.which + " key " + e.keyCode +
1424− " '" + rune + "'");
1425− switch(key){
1426− case 9:
1427− rune = "\t";
1428− break;
1429− case 13:
1430− rune = "\n";
1431− break;
1432− }
1433− switch(rune){
1434− case 'c':
1435− case 'C':
1436− if(deferred)
1437− break;
1438− if(e.ctrlKey || e.metaKey){
1439− e.preventDefault();
1440− this.post(["ecopy", ""+this.p0, ""+this.p1]);
1441− return false;
1442− }
1443− break;
1444− case 'v':
1445− case 'V':
1446− if(deferred)
1447− break;
1448− if(this.noedits) {
1449− break;
1450− }
1451− if(e.ctrlKey || e.metaKey){
1452− e.preventDefault();
1453− if(this.p0 != this.p1){
1454− this.Post(["edel", ""+this.p0, ""+this.p1]);
1455− }
1456− this.post(["epaste", ""+this.p0, ""+this.p1]);
1457− return false;
1458− }
1459− break;
1460− case 'x':
1461− case 'X':
1462− if(deferred)
1463− break;
1464− if(this.noedits) {
1465− break;
1466− }
1467− if(e.ctrlKey || e.metaKey){
1468− e.preventDefault();
1469− this.Post(["ecut", ""+this.p0, ""+this.p1]);
1470− return false;
1471− }
1472− break;
1473− }
1474− if(e.metaKey || e.ctrlKey || this.noedits)
1475− return;
1476− if(deferred)
1477− return;
1478− if(this.p0 != this.p1){
1479− this.Post(["edel", ""+this.p0, ""+this.p1]);
1480− }
1481− if(this.composing) {
1482− if(!this.latin) {
1483− this.latin = "" + rune;
1484− } else {
1485− this.latin += rune;
1486− }
1487− if(!kmap.islatin(this.latin)) {
1488− this.composing = false;
1489− rune = this.latin;
1490− this.latin = "";
1491− } else {
1492− var r = kmap.latin(this.latin);
1493− if (r) {
1494− this.composing = false;
1495− rune = r;
1496− this.latin = "";
1497− } else {
1498− return;
1499− }
1500− }
1501− }
1502− this.Post(["eins", rune, ""+this.p0]);
1503− }catch(ex){
1504− console.log("text: fixtab: " + ex);
1505− }
1506−}
1507−
1508−function tapply(ev, fromserver) {
1509− if(!ev || !ev.Args || !ev.Args[0]){
1510− console.log("apply: nil ev");
1511− return;
1512− }
1513− var arg = ev.Args
1514− if(tdebug)console.log(this.divid, "apply", ev.Args, "v", ev.Vers, this.vers);
1515− switch(arg[0]){
1516− case "held":
1517− this.locked();
1518− break;
1519− case "rlse":
1520− if(this.selecting) {
1521− this.mustunlock = true;
1522− break;
1523− }
1524− this.unlocked();
1525− break;
1526− case "noedits":
1527− this.noedits = true;
1528− break;
1529− case "edits":
1530− this.noedits = false;
1531− break;
1532− case "clean":
1533− if(document.setclean) {
1534− document.setclean(this);
1535− }
1536− break;
1537− case "dirty":
1538− if(document.setdirty) {
1539− document.setdirty(this);
1540− }
1541− break;
1542− case "show":
1543− if(document.showcontrol) {
1544− document.showcontrol(this);
1545− }
1546− break;
1547− case "tag":
1548− if(arg.length < 2){
1549− console.log(this.divid, "apply: short tag");
1550− break;
1551− }
1552− if(document.settag) {
1553− document.settag(this, arg[1]);
1554− }
1555− break;
1556− case "font":
1557− if(arg.length < 2){
1558− console.log(this.divid, "apply: short font");
1559− break;
1560− }
1561− console.log(this.divid, "font", arg[1]);
1562− this.fontstyle = arg[1];
1563− this.fixfont();
1564− this.redrawtext();
1565− break;
1566− case "markinsing":
1567− if(arg.length < 3){
1568− console.log(this.divid, "apply: short markinsing");
1569− break;
1570− }
1571− if (!this.markinsdata) {
1572− console.log("markins evs...");
1573− this.markinsdata = [];
1574− }
1575− this.markinsdata.push(arg[2]);
1576− break;
1577− case "markinsdone":
1578− console.log("markins run...");
1579− if(arg.length < 2){
1580− console.log(this.divid, "apply: short markinsdone");
1581− break;
1582− }
1583− var m = this.getmark(arg[1]);
1584− if(!m) {
1585− console.log(this.divid, "apply: no mark", arg[1]);
1586− break;
1587− }
1588− var op0 = this.p0;
1589− var op1 = this.p1;
1590− if(op0 != op1) {
1591− this.tsetsel(op0, op0);
1592− }
1593− for(var i = 0; i < this.markinsdata.length; i++) {
1594− var data = this.markinsdata[i];
1595− var nlen = data.length;
1596− var npos = m.pos + nlen;
1597− var opos = m.pos;
1598− op0 = this.p0;
1599− op1 = this.p1;
1600− this.p0 = m.pos;
1601− this.p1 = m.pos;
1602− this.tinslines(data, true);
1603− m.pos = npos;
1604− if(op0 > opos)
1605− op0 += nlen;
1606− if(op1 > opos)
1607− op1 += nlen;
1608− this.p0 = op0;
1609− this.p1 = op1;
1610− if(ev.Vers) {
1611− this.vers = ev.Vers;
1612− }
1613− }
1614− this.tsetsel(op0, op1);
1615− delete this.markinsdata;
1616− if(!this.userresized) {
1617− this.autoresize();
1618− }
1619− console.log("markins done");
1620− break;
1621− case "einsing":
1622− if(arg.length < 2){
1623− console.log(this.divid, "apply: short einsing");
1624− break;
1625− }
1626− if (!this.einsdata) {
1627− console.log("eins evs...");
1628− this.einsdata = [];
1629− }
1630− this.einsdata.push(arg[1]);
1631− break;
1632− case "einsdone":
1633− console.log("eins run...");
1634− if(arg.length < 2){
1635− console.log(this.divid, "apply: short ins");
1636− break;
1637− }
1638− if(ev.Vers && fromserver && ev.Vers != this.vers+1){
1639− console.log("OUT OF SYNC", ev.Args, "v", ev.Vers, this.vers);
1640− this.post(["needreload"]);
1641− delete this.einsdata;
1642− break;
1643− }
1644− var p0 = parseInt(arg[1]);
1645− var op0 = this.p0;
1646− var op1 = this.p1;
1647− if(op0 != op1) {
1648− this.tsetsel(op0, op0);
1649− }
1650− this.p0 = p0;
1651− this.p1 = p0;
1652− for(var i = 0; i < this.einsdata.length; i++) {
1653− var data = this.einsdata[i];
1654− this.tinslines(data);
1655− if(op0 > p0)
1656− op0 += data.length;
1657− if(op1 > p0)
1658− op1 += data.length;
1659− }
1660− delete this.einsdata;
1661− this.tsetsel(op0, op1);
1662− if(ev.Vers) {
1663− this.vers = ev.Vers;
1664− }
1665− if(!this.userresized) {
1666− this.autoresize();
1667− }
1668− console.log("eins done");
1669− break;
1670− case "eins":
1671− if(arg.length < 3){
1672− console.log(this.divid, "apply: short ins");
1673− break;
1674− }
1675− if(ev.Vers && fromserver && ev.Vers != this.vers+1){
1676− console.log("OUT OF SYNC", ev.Args, "v", ev.Vers, this.vers);
1677− this.post(["needreload"]);
1678− break;
1679− }
1680− var p0 = parseInt(arg[2]);
1681− var op0 = this.p0;
1682− var op1 = this.p1;
1683− if(op0 != op1) {
1684− this.tsetsel(op0, op0);
1685− }
1686− this.p0 = p0;
1687− this.p1 = p0;
1688− this.tinslines(arg[1]);
1689− if(op0 > p0)
1690− op0 += arg[1].length;
1691− if(op1 > p0)
1692− op1 += arg[1].length;
1693− if(fromserver) {
1694− this.tsetsel(op0, op1);
1695− }
1696− if(ev.Vers) {
1697− this.vers = ev.Vers;
1698− }
1699− if(!this.userresized && arg[1].indexOf('\n') >= 0) {
1700− this.autoresize();
1701− }
1702− break;
1703− case "edel":
1704− if(arg.length < 3){
1705− console.log(this.divid, "apply: short del");
1706− break;
1707− }
1708− if(ev.Vers && fromserver && ev.Vers != this.vers+1){
1709− console.log("OUT OF SYNC", ev.Args, "v", ev.Vers, this.vers);
1710− this.post(["needreload"]);
1711− }
1712− var p0 = parseInt(arg[1]);
1713− var p1 = parseInt(arg[2]);
1714− var op0 = this.p0;
1715− var op1 = this.p1;
1716− this.p0 = p0;
1717− this.p1 = p1;
1718− try{
1719− this.tdel();
1720− }catch(ex){
1721− console.log(this.divid, "apply: del: " + ex);
1722− }
1723− op0 = adjdel(op0, p0, p1);
1724− op1 = adjdel(op1, p0, p1);
1725− if(fromserver) {
1726− this.tsetsel(op0, op1);
1727− }
1728− if(ev.Vers) {
1729− this.vers = ev.Vers;
1730− }
1731− break;
1732− case "ecut":
1733− try{
1734− this.tdel();
1735− }catch(ex){
1736− console.log(this.divid, "apply: cut: " + ex);
1737− }
1738− if(ev.Vers)
1739− this.vers = ev.Vers;
1740− break;
1741− case "reload":
1742− this.reloadln0 = this.ln0;
1743− this.tclear();
1744− break;
1745− case "reloading":
1746− if(arg.length < 2){
1747− console.log(this.divid, "apply: short reloading");
1748− break;
1749− }
1750− this.lines.push({txt: arg[1], off: this.reloadoff, eol: true});
1751− this.reloadoff += arg[1].length + 1;
1752− break
1753− case "reloaded":
1754− if(arg.length < 2){
1755− console.log(this.divid, "apply: short reloaded");
1756− break;
1757− }
1758− this.vers = parseInt(arg[1]);
1759− if(this.reloadln0 < this.lines.length) {
1760− var ln0 = this.reloadln0;
1761− delete this.reloadln0;
1762− var xln = this.lines[this.ln0];
1763− if(xln) {
1764− this.ln0 = ln0;
1765− this.froff = xln.off
1766− }
1767− }
1768− this.redrawtext();
1769− if(!this.userresized) {
1770− this.autoresize();
1771− }
1772− // this.dump();
1773− break;
1774− case "mark":
1775− if(arg.length < 3){
1776− console.log(this.divid, "apply: short mark");
1777− break;
1778− }
1779− var pos = parseInt(arg[2]);
1780− this.setmark(arg[1], pos);
1781− break;
1782− case "sel":
1783− if(arg.length < 3){
1784− console.log(this.divid, "apply: short sel");
1785− break;
1786− }
1787− var pos0 = parseInt(arg[1]);
1788− var pos1 = parseInt(arg[2]);
1789− this.setmark("p0", pos0);
1790− this.setmark("p1", pos1);
1791− this.tsetsel(pos0, pos1, true);
1792− this.viewsel();
1793− console.log("setsel", pos0, pos1);
1794− break;
1795− case "delmark":
1796− if(arg.length < 2){
1797− console.log(this.divid, "apply: short delmark");
1798− break;
1799− }
1800− this.delmark(arg[1]);
1801− break;
1802− case "close":
1803− this.ws.close();
1804− $("#"+this.divid).remove();
1805− break;
1806− default:
1807− console.log("text: unhandled", arg[0]);
1808− }
1809−}
1810−
1811−// This is to prevent the event from being propagated to the parent
1812−// container.
1813−// Despite this, it seems that if we return true in safari for a keydown
1814−// then it's too late and the space bubbles and we scroll when we shouldnt.
1815−// So, locknkeydown returns false and calls, by hand, the down/key/up handlers.
1816−function dontbubble(e) {
1817− if (e) {
1818− e.bubbles = false;
1819− if(e.stopPropagation) {
1820− e.stopPropagation();
1821− }
1822− e.cancelBubble = true;
1823− }
1824−}
1825−
1826−function tlocknkeydown(e) {
1827− dontbubble(e);
1828− if(this.islocked) {
1829− return tkeydown.call(this, e);
1830− }
1831− if(!this.locking) {
1832− this.locking = true;
1833− this.post(["hold"]);
1834− console.log("holding...");
1835− }
1836− var self = this;
1837− var xe = jQuery.Event("keydown");
1838− xe.which = e.which;
1839− xe.keyCode = e.keyCode;
1840− xe.ctrlKey = e.ctrlKey;
1841− xe.metaKey = e.metaKey;
1842− xe.preventDefault = function(){};
1843− this.whenlocked.push(function() {
1844− console.log("held keydown");
1845− $(self).trigger(xe);
1846− return false;
1847− });
1848− return tkeydown.call(this, e, true);
1849−}
1850−
1851−function tlocknevkey(e) {
1852− dontbubble(e);
1853− if(this.islocked) {
1854− return tevkey.call(this, e);
1855− }
1856− if(!this.locking) {
1857− this.locking = true;
1858− this.post(["hold"]);
1859− console.log("holding...");
1860− }
1861− var self = this;
1862− var xe = jQuery.Event("keypress");
1863− xe.which = e.which;
1864− xe.keyCode = e.keyCode;
1865− xe.ctrlKey = e.ctrlKey;
1866− xe.metaKey = e.metaKey;
1867− xe.preventDefault = function(){};
1868− this.whenlocked.push(function() {
1869− console.log("held keypress");
1870− $(self).trigger(xe);
1871− return false;
1872− });
1873− return tevkey.call(this, e, true);
1874−}
1875−
1876−function tlocknkeyup(e) {
1877− dontbubble(e);
1878− if(this.islocked) {
1879− return tkeyup.call(this, e);
1880− }
1881− if(!this.locking) {
1882− this.locking = true;
1883− this.post(["hold"]);
1884− console.log("holding...");
1885− }
1886− var self = this;
1887− var xe = jQuery.Event("keyup");
1888− xe.which = e.which;
1889− xe.keyCode = e.keyCode;
1890− xe.ctrlKey = e.ctrlKey;
1891− xe.metaKey = e.metaKey;
1892− xe.preventDefault = function(){};
1893− this.whenlocked.push(function() {
1894− console.log("held keyup");
1895− $(self).trigger(xe);
1896− return false;
1897− });
1898− return tkeyup.call(this, e, true);
1899−}
1900−
1901−function tlocknmdown(e) {
1902− if(this.islocked) {
1903− return tmdown.call(this, e);
1904− }
1905− if(!this.locking) {
1906− this.locking = true;
1907− this.post(["hold"]);
1908− console.log("holding...");
1909− }
1910− var self = this;
1911− var xe = jQuery.Event("mousedown");
1912− xe.which = e.which;
1913− xe.pageX = e.pageX;
1914− xe.pageY = e.pageY;
1915− xe.preventDefault = function(){};
1916− this.whenlocked.push(function() {
1917− console.log("held mousedown");
1918− $(self).trigger(xe);
1919− return false;
1920− });
1921− return false;
1922−}
1923−
1924−function tlocknmup(e) {
1925− if(this.islocked) {
1926− return tmup.call(this, e);
1927− }
1928− if(!this.locking) {
1929− this.locking = true;
1930− this.post(["hold"]);
1931− console.log("holding...");
1932− }
1933− var self = this;
1934− var xe = jQuery.Event("mouseup");
1935− xe.which = e.which;
1936− xe.pageX = e.pageX;
1937− xe.pageY = e.pageY;
1938− xe.preventDefault = function(){};
1939− this.whenlocked.push(function() {
1940− console.log("held mouseup");
1941− $(self).trigger(xe);
1942− return false;
1943− });
1944− return false;
1945−}
1946−
1947−function tlocked() {
1948− if(this.islocked)
1949− return;
1950− if(this.locking) {
1951− this.locking = false;
1952− this.islocked = true;
1953− this.tkeydown = tkeydown;
1954− this.tkeypress = tevkey;
1955− this.tkeyup = tkeyup;
1956− this.tmdown = tmdown;
1957− this.tmup = tmup;
1958− for(var i = 0; i < this.whenlocked.length; i++) {
1959− this.whenlocked[i]();
1960− }
1961− this.whenlocked = [];
1962− }
1963−}
1964−
1965−function tunlocked() {
1966− this.islocked = false;
1967− this.locking = false;
1968− this.mustunlock = false;
1969− this.whenlocked = [];
1970− this.tkeydown = tlocknkeydown;
1971− this.tkeypress = tlocknevkey;
1972− this.tkeyup = tlocknkeyup;
1973− this.tmdown = tlocknmdown;
1974− this.tmup = tlocknmup;
1975− this.mustunlock = false;
1976− this.post(["tick", ""+this.p0, ""+this.p1]);
1977− this.post(["rlsed"]);
1978− // collapse the selection or other's might insert in the middle.
1979− if(this.p0 != this.p1)
1980− this.tsetsel(this.p0, this.p1, true);
1981−}
1982−
1983−var selecting = false;
1984−
1985−function tselectstart() {
1986− if(!this.selecting) {
1987− console.log("selecting...");
1988− }
1989− this.selecting = true;
1990− selecting = true;
1991− this.oldp0 = this.p0;
1992− this.oldp1 = this.p1;
1993−}
1994−
1995−function tselectend() {
1996− if(this.mustunlock) {
1997− this.unlocked();
1998− }
1999− if(!this.selecting) {
2000− return;
2001− }
2002− console.log("select end");
2003− if(this.oldp0 != this.p0 || this.oldp1 != this.p1) {
2004− this.post(["tick", ""+this.p0, ""+this.p1]);
2005− this.oldp0 = this.p0;
2006− this.oldp1 = this.p1;
2007− }
2008− this.selecting = false;
2009− selecting = false;
2010−}
2011−
2012−function tclear() {
2013− this.reloadoff = 0;
2014− this.vers = 0;
2015− this.nlines = 0;
2016− this.ln0 = 0;
2017− this.p0 = 0;
2018− this.p1 = 0;
2019− this.frsize = 0;
2020− this.frlines = 0;
2021− this.lines = [];
2022− // NB: we are not clearing marks
2023− // we might leak old mark names not deleted
2024− // but at least we preserve marks upon reloads
2025−}
2026−
2027−function tsetmark(mark, p) {
2028− for(var i = 0; i < this.marks.length; i++){
2029− var m = this.marks[i];
2030− if(m.name == mark) {
2031− m.pos = p;
2032− return;
2033− }
2034− }
2035− this.marks.push({name: mark, pos: p});
2036−}
2037−
2038−function tgetmark(mark) {
2039− for(var i = 0; i < this.marks.length; i++){
2040− var m = this.marks[i];
2041− if(m.name == mark) {
2042− return m;
2043− }
2044− }
2045− return null;
2046−}
2047−
2048−function tdelmark(mark) {
2049− for(var i = 0; i < this.marks.length; i++){
2050− var m = this.marks[i];
2051− if(m.name == mark) {
2052− this.marks.splice(i, 1);
2053− return;
2054− }
2055− }
2056−}
2057−
2058−function tmarkins(n) {
2059− for(var i = 0; i < this.marks.length; i++){
2060− var m = this.marks[i];
2061− if(m.pos > this.p0) {
2062− m.pos += n;
2063− }
2064− }
2065−}
2066−
2067−function tmarkdel() {
2068− for(var i = 0; i < this.marks.length; i++){
2069− var m = this.marks[i];
2070− if(m.pos <= this.p0) {
2071− continue;
2072− }
2073− var p1 = this.p1;
2074− if(p1 > m.pos) {
2075− p1 = m.pos;
2076− }
2077− m.pos -= (p1-this.p0);
2078− }
2079−}
2080−
2081−/*
2082− e is a canvas element with id and class already set,
2083− and .lines[] with initial text.
2084− d is is the (jquery) parent that will supply kbd events.
2085− cid is the class id for e.
2086− t is the tag
2087− */
2088−function mktxt(d, t, e, cid, id) {
2089− var ctx=e.getContext("2d", {alpha: false});
2090− e.divcid = cid;
2091− e.divid = id;
2092− e.vers = 0;
2093− e.tscale = 4; // tscale must be even; we /2
2094− e.nlines = 0;
2095− e.ln0 = 0;
2096− e.frsize = 0;
2097− e.frlines = 0;
2098− e.p0 = e.p1 = 0;
2099− e.fontstyle = 'r';
2100− checkoutfonts(ctx);
2101− e.notabs = notabs;
2102− e.tabstop = 4;
2103− var tabtext = Array(e.tabstop+1).join("X")
2104− e.tabwid = ctx.measureText(tabtext).width;
2105− e.fontht = 14*e.tscale; // TODO: use font height from fixfont
2106− e.buttons = 0;
2107− e.nclicks = {1: 0, 2: 0, 4: 0};
2108− e.userresized = false;
2109− ctx.fillStyle = "#FFFFEA";
2110− e.drawline = tdrawline;
2111− e.dump = tdump;
2112− e.evxy = tevxy;
2113− e.fixfont = tfixfont;
2114− e.linewrap = tlinewrap;
2115− e.mayresize = tmayresize;
2116− e.autoresize = tautoresize;
2117− e.posdx = tposdx;
2118− e.ptr2tpos = tptr2tpos;
2119− e.redrawtext = tredrawtext;
2120− e.reformat = treformat;
2121− e.scrolldown = tscrolldown;
2122− e.scrolldown1 = tscrolldown1;
2123− e.scrollup = tscrollup;
2124− e.scrollup1 = tscrollup1;
2125− e.setlinesoff = tsetlinesoff;
2126− e.tdel = ttdel;
2127− e.tget = ttget;
2128− e.tgetword = ttgetword;
2129− e.tins = ttins;
2130− e.tinslines = ttinslines;
2131− e.tpos2pos = ttpos2pos;
2132− e.tsetsel = ttsetsel;
2133− e.viewsel = tviewsel;
2134− e.untick = tuntick;
2135− e.updatescrl = tupdatescrl;
2136−
2137− e.selectstart = tselectstart;
2138− e.selectend = tselectend;
2139−
2140− e.marks = [];
2141− e.setmark = tsetmark;
2142− e.getmark = tgetmark;
2143− e.delmark = tdelmark;
2144− e.markins = tmarkins;
2145− e.markdel = tmarkdel;
2146−
2147− e.noedits = false;
2148−
2149− e.locked = tlocked;
2150− e.unlocked = tunlocked;
2151− e.whenlocked = [];
2152−
2153− e.tkeydown = tlocknkeydown;
2154− e.tkeypress = tlocknevkey;
2155− e.tkeyup = tlocknkeyup;
2156− e.onmousedown = tlocknmdown;
2157− e.onmouseup = tlocknmup;
2158− e.onmouseenter = function(e) {
2159− if(!selecting) {
2160− var x = window.scrollX;
2161− var y = window.scrollY;
2162− $("#" + this.divid ).focus();
2163− window.scrollTo(x, y);
2164− }
2165− if(this.islocked || this.locking) {
2166− return;
2167− }
2168− this.locking = true;
2169− this.post(["hold"]);
2170− console.log("holding...");
2171− };
2172− e.onmousemove = function(e) {
2173− if(this.islocked || this.locking) {
2174− return tevxy.call(this, e);
2175− }
2176− this.locking = true;
2177− this.post(["hold"]);
2178− console.log("holding...");
2179− return false;
2180− };
2181− e.onmousewheel = function(ev) {
2182− ev.stopPropagation();
2183− if(e.islocked || e.locking) {
2184− return tmwheel.call(e, ev);
2185− }
2186− e.locking = true;
2187− e.post(["hold"]);
2188− console.log("holding...");
2189− return false;
2190− };
2191−
2192− e.onpaste = function(){return false;}
2193− e.oncontextmenu = function(){return false;}
2194− e.onclick = null;
2195− e.onddblclick = null;
2196− e.tm1 = tm1;
2197− e.tm234 = tm234;
2198− e.tmdown = tmdown;
2199− e.tmpress = tmpress;
2200− e.tmrlse = tmrlse;
2201− e.tmup = tmup;
2202− e.tmwait = tmwait;
2203−
2204− e.fixfont();
2205− e.mayresize();
2206− e.redrawtext();
2207−
2208− e.tclear = tclear;
2209−
2210− d.keypress(function(ev){
2211− dontbubble(ev);
2212− return e.tkeypress(ev);
2213− })
2214− .keyup(function(ev){
2215− dontbubble(ev);
2216− return e.tkeyup(ev);
2217− })
2218− .keydown(function(ev){
2219− dontbubble(ev);
2220− return e.tkeydown(ev);
2221− }).get(0).update = function(ev) {
2222− if(ev.Src == id){
2223− console.log("txt ignd update", ev.Args);
2224− return;
2225− }
2226− console.log("txt update", ev.Args);
2227− e.apply(ev);
2228− };
2229− var preht = d.height();
2230− e.apply = tapply;
2231− e.Post = function(args) {
2232− var ev = this.post(args);
2233− if(ev){
2234− try {
2235− this.apply(ev);
2236− }catch(ex){
2237− console.log("txt apply: " + ex);
2238− }
2239− }
2240− };
2241− e.post = function(args) {
2242− if(!e.ws){
2243− console.log("no ws");
2244− return nil;
2245− }
2246− var ws = e.ws;
2247− if(!args || !args[0]){
2248− console.log("post: no args");
2249− return nil;
2250− }
2251− var ev = {}
2252− ev.Id = cid;
2253− ev.Src = id;
2254− if(!this.vers)
2255− this.vers = 0;
2256− // cut advances the vers (might del nothing)
2257− if(args[0] == "eins" || args[0] == "edel"){
2258− this.vers++;
2259− }
2260− ev.Vers = this.vers;
2261− ev.Args = args;
2262− var msg = JSON.stringify(ev);
2263− try {
2264− ws.send(msg);
2265− // console.log("posting ", msg);
2266− }catch(ex){
2267− console.log("post: " + ex);
2268− }
2269− // if this is a cut, it implies a del and we
2270− // must advance our vers, the event didn't
2271− // advance the vers.
2272− // Same for paste.
2273− if(args[0] == "ecut" || args[0] == "epaste") {
2274− ev.Vers++;
2275− }
2276− return ev;
2277− };
2278−
2279− var wsurl = "wss://" + window.location.host + "/ws/" + cid;
2280− if(d.wsaddr) {
2281− wsurl = d.wsaddr + "/ws/" + cid;
2282− }
2283− e.ws = new WebSocket(wsurl);
2284− d.get(0).ws = e.ws;
2285− d.get(0).post = e.post;
2286− d.get(0).addsize = function(moreless) {
2287− e.autoresize(true, moreless);
2288− };
2289− e.ws.onopen = function() {
2290− e.post(["id"]);
2291− };
2292− e.ws.onerror = function(ev) {
2293− console.log("ws err", ev);
2294− };
2295− e.ws.onmessage = function(ev) {
2296− //console.log("got msg", ev.data);
2297− var o = JSON.parse(ev.data);
2298− if(!o || !o.Id) {
2299− console.log("update: no objet id");
2300− return;
2301− }
2302− if(tdebug)console.log("update to", o.Id, o.Args);
2303− e.apply(o, true);
2304− };
2305− e.ws.onclose = function() {
2306− console.log("text socket " + wsurl+ " closed\n");
2307− d.replaceWith("<h3>disconnected</h3>");
2308− };
2309− d.resizable({
2310− handles: 's'
2311− }).on('resize', function() {
2312− console.log("user resized");
2313− e.mayresize(true);
2314− });
2315− $(window).resize(function() {
2316− console.log("window resized");
2317− e.mayresize(false);
2318− });
2319− if(t) {
2320− $("#"+id+"t").getWordByEvent('click', function tagclick(ev, word) {
2321− console.log("tag click on ", ev, word);
2322− if(false && word == "Del") {
2323− e.ws.close();
2324− d.remove();
2325− return;
2326− }
2327− e.post(["tag", word]);
2328− });
2329− }
2330−}
2331−
2332−document.mktxt = mktxt
2333−
net/ink/js/txt.jsold+391−180
@@ -1,5 +1,8 @@
11 "use strict";
22 /*
3+
4+ DEPRECATED. lines.js and ntxt.js are the implementation now.
5+
36 js code for the clive text frame
47 which is similar to a Plan 9 text frame
58 but implemented with the HTML5 canvas.
@@ -18,6 +21,7 @@ · 12 unmodified lines
1821 var tffixed = "monospace";
1922 var tfvar = "Lucida Grande"; // or Verdana
2023 var fontscheckedout = false;
24+var tdebug = false;
2125
2226 function checkoutfonts(ctx) {
2327 if(fontscheckedout)
@@ -50,7 +54,7 @@ function tfixfont() { · 26 unmodified lines
5054 if(this.fontstyle.indexOf('i') > -1) {
5155 mod = "italic " + mod;
5256 }
53− var ht = this.fontht - 4;
57+ var ht = this.fontht - 2*this.tscale;
5458 ctx.font = mod + " " + ht+"px "+ style;
5559 ctx.textBaseline="top";
5660 }
@@ -222,26 +226,32 @@ function tuntick() { · 165 unmodified lines
222226 }
223227
224228 function tviewsel() {
225− if(!this.lines[this.ln0]) {
226− return;
227− }
228− var off = this.lines[this.ln0].off;
229− var eoff = off+this.frsize;
230− if(this.p0 >= off && this.p0 <= eoff) {
231− return;
229+ if(this.lines[this.ln0]) {
230+ var off = this.lines[this.ln0].off;
231+ var eoff = off+this.frsize;
232+ if(this.p0 >= off && this.p0 <= eoff) {
233+ return;
234+ }
232235 }
233236 for(var i = 0; i < this.lines.length; i++){
234237 var xln = this.lines[i];
235238 var xlnlen = xln.txt.length;
236239 if(this.p0 >= xln.off && this.p0 <= xln.off+xlnlen){
237− var n = i - this.frlines/3;
240+ var n = i - Math.floor(this.frlines/3);
238241 if(n < 0) {
239242 n = 0;
240243 }
244+ if(n >= this.lines.length) {
245+ n = this.lines.length-1;
246+ }
241247 xln = this.lines[n];
242− this.ln0 = n;
243− this.froff = xln.off;
244− this.redrawtext();
248+ if(xln) {
249+ this.ln0 = n;
250+ this.froff = xln.off;
251+ this.redrawtext();
252+ } else {
253+ console.log("tviewsel: no ln for", n, i);
254+ }
245255 return;
246256 }
247257 }
@@ -258,6 +268,10 @@ function ttsetsel(p0, p1, refreshall) { · 10 unmodified lines
258268 p1 = this.nrunes;
259269 if(this.p0 != this.p1)
260270 refreshall = true;
271+ if(!this.lines[this.ln0]) {
272+ return;
273+ }
274+ var froff = this.lines[this.ln0].off;
261275 if(refreshall && (this.p1 <froff || this.p0 >froff+this.frsize))
262276 refreshall = false;
263277 var mp0 = p0;
@@ -271,10 +285,6 @@ function ttsetsel(p0, p1, refreshall) { · 7 unmodified lines
271285 this.p0 = p0;
272286 this.p1 = p1;
273287 this.untick();
274− if(!this.lines[this.ln0]) {
275− return;
276− }
277− var froff = this.lines[this.ln0].off;
278288 if(mp1 <froff || mp0 >froff+this.frsize)
279289 return;
280290 var insel = false;
@@ -393,8 +403,8 @@ function tdrawline(xln, i) { · 112 unmodified lines
393403 xln != this.lines[this.lines.length-1])
394404 return true;
395405 var dx = this.posdx(xln, this.p0 - xln.off);
396− dx += marginsz - 2;
397− this.saved = ctx.getImageData(dx, pos, 4, this.fontht);
406+ dx += marginsz - 3*this.tscale/2;
407+ this.saved = ctx.getImageData(dx, pos, 3*this.tscale, this.fontht);
398408 this.tickx = dx;
399409 this.ticky = pos;
400410 ctx.putImageData(this.tick, dx, pos);
@@ -469,15 +479,17 @@ function tredrawtext() { · 68 unmodified lines
469479 if(!this.tick){
470480 var x = ctx.lineWidth;
471481 ctx.lineWidth = 1;
472− ctx.fillRect(0, 0, 6, 6);
473− ctx.fillRect(0, this.fontht-6, 6, 6);
474− ctx.moveTo(3, 0);
475− ctx.lineTo(3, this.fontht);
482+ var d = 3*this.tscale;
483+ ctx.fillRect(0, 0, d, d);
484+ ctx.fillRect(0, this.fontht-d, d, d);
485+ ctx.moveTo(d/2, 0);
486+ ctx.lineTo(d/2, this.fontht);
476487 ctx.stroke();
477488 ctx.lineWidth = x;
478− this.tick = ctx.getImageData(0, 0, 6, this.fontht);
489+ this.tick = ctx.getImageData(0, 0, d, this.fontht);
479490 }
480491 if(!this.lines[this.ln0]) {
492+ console.log("tredrawtext: no ln0");
481493 return;
482494 }
483495 var off = this.lines[this.ln0].off;
@@ -486,11 +498,11 @@ function tredrawtext() { · 2 unmodified lines
486498 this.frlines = 0;
487499 for(var i = 0; i <= nlines; i++){
488500 if(this.ln0+i < this.lines.length){
489− this.frlines++;
490501 var xln = this.lines[this.ln0+i];
491− off += lnlen(xln);
492502 if(!this.drawline(xln, i))
493503 break;
504+ this.frlines++;
505+ off += lnlen(xln);
494506 }else
495507 if(!this.drawline(null, i))
496508 break;
@@ -570,7 +582,7 @@ function ttins(t, dontscroll) { · 73 unmodified lines
570582 this.reformat(i);
571583 if(!dontscroll)
572584 if(i >= this.ln0+this.nlines-1 &&
573− i <= this.ln0+this.nlines+1)
585+ i <= this.ln0+this.nlines+1 && this.nlines > 1)
574586 this.scrolldown(nscrl);
575587 this.redrawtext();
576588 return;
@@ -675,7 +687,13 @@ var wordre = null; · 98 unmodified lines
675687 function iswordchar(c) {
676688 if(!wordre)
677689 wordre = /\w/;
678− return c == '/' || c == '.' || c == ':' || c == '#' || c == ',' || wordre.test(c);
690+ return wordre.test(c);
691+}
692+
693+function islongwordchar(c) {
694+ if(!wordre)
695+ wordre = /\w/;
696+ return c == '-' || c == '(' || c == ')' || c == '/' || c == '.' || c == ':' || c == '#' || c == ',' || wordre.test(c);
679697 }
680698
681699 function islparen(c) {
@@ -700,9 +718,13 @@ function lparen(c) { · 18 unmodified lines
700718 return "([{<".charAt(i);
701719 }
702720
703−function ttgetword(pos) {
721+function ttgetword(pos, long) {
704722 if(pos >= this.nrunes)
705723 return ["", this.nrunes, this.nrunes];
724+ var ischar = iswordchar;
725+ if(long) {
726+ ischar = islongwordchar;
727+ }
706728 var i;
707729 var xln;
708730 for(i = 0; i < this.lines.length; i++){
@@ -792,13 +814,13 @@ function ttgetword(pos) { · 83 unmodified lines
792814 }while(i >= 0 && n > 0);
793815 return [txt, pos, epos];
794816 }
795− if(!iswordchar(c))
796− return "";
797− while(p0 > 0 && iswordchar(xln.txt.charAt(p0-1))){
817+ if(!islongwordchar(c))
818+ return [xln.txt.slice(p0, p1), pos, epos];
819+ while(p0 > 0 && ischar(xln.txt.charAt(p0-1))){
798820 pos--;
799821 p0--;
800822 }
801− while(p1 < xlnlen && iswordchar(xln.txt.charAt(p1))){
823+ while(p1 < xlnlen && ischar(xln.txt.charAt(p1))){
802824 epos++;
803825 p1++;
804826 }
@@ -869,7 +891,7 @@ function tmayresize(user) { · 64 unmodified lines
869891 var p = $(this).parent();
870892 var dx = p.width();
871893 var dy = p.height() - 5;
872− console.log('text resized', dx, dy);
894+ console.log('text resized', dx, dy, user?"user":"win");
873895 var c = this;
874896 var ctx = this.getContext("2d", {alpha: false});
875897 var tag = $("#"+this.divid+"t")
@@ -887,23 +909,44 @@ function tmayresize(user) { · 11 unmodified lines
887909 this.redrawtext();
888910 }
889911
890−function tautoresize() {
891− var nln = this.frlines;
892− if(nln < 3) {
893− nln = 3;
894− }
895− var ht = (nln+2) * this.fontht;
912+function tautoresize(addsize, moreless) {
896913 var p = $(this);
897914 var oldht = p.height();
898− if (oldht >= 400) {
899− return;
915+ var ht = oldht;
916+ var fontht = this.fontht/this.tscale;
917+ if(addsize) {
918+ this.userresized = true;
919+ if(moreless > 1){
920+ var wtop = $(window).scrollTop();
921+ var etop = $(this).offset().top;
922+ var eoff = etop-wtop;
923+ console.log("resize ", wtop, etop, eoff);
924+ ht = window.innerHeight - 10 - eoff;
925+ } else if(moreless >= 0) {
926+ ht += fontht*6;
927+ } else {
928+ ht -= fontht*6;
929+ if(ht < 5*fontht) {
930+ ht = 5*fontht;
931+ }
932+ }
933+ }else{
934+ var nln = this.frlines;
935+ if(nln < 3) {
936+ nln = 3;
937+ }
938+ ht = (nln+2) * fontht;
939+ if (ht >= 400) {
940+ ht = 400;
941+ }
900942 }
901− console.log("auto rsz", nln, ht, p.height());
902− if (oldht < ht - this.fontht || oldht > ht + this.fontht) {
943+ console.log("auto rsz", nln, ht, oldht);
944+ if (oldht < ht - fontht || oldht > ht + fontht) {
945+ console.log("auto resizing");
903946 var delta = ht - oldht;
904947 p = $(this).parent();
905948 var nht = p.height() + delta;
906− p.css('height', nht);
949+ p.height(nht);
907950 this.mayresize();
908951 }
909952 }
@@ -973,18 +1016,18 @@ function tmwait() { · 63 unmodified lines
9731016 function tm1(pos) {
9741017 var now = new Date().getTime();
9751018 if(!this.clicktime || now-this.clicktime>500){
976− this.dblclick = false;
1019+ this.dblclick = 0;
9771020 this.clicktime = now;
9781021 }else{
979− this.dblclick = true;
1022+ this.dblclick++;
9801023 this.clicktime = now;
9811024 }
982−
1025+ var wassel = true;
9831026 if(this.dblclick){
984− var x = this.tgetword(pos);
1027+ var x = this.tgetword(pos, this.dblclick>1);
9851028 this.post(["click1", x[0], ""+x[1], ""+x[2]]);
9861029 this.tsetsel(x[1], x[2]);
987− this.clicktime = null;
1030+ wassel = false;
9881031 }
9891032 this.onmousemove = function(e){
9901033 try{
@@ -1016,15 +1059,21 @@ function tm1(pos) { · 25 unmodified lines
10161059 if(this.noedits) {
10171060 return;
10181061 }
1019− if(this.buttons == 3){
1062+ if(this.buttons == 1+2){
1063+ wassel = false;
10201064 this.Post(["ecut", ""+this.p0, ""+this.p1]);
10211065 }
1022− if(this.buttons == 5){
1066+ if(this.buttons == 1+4){
1067+ wassel = false;
10231068 if(this.p0 != this.p1){
10241069 this.Post(["edel", ""+this.p0, ""+this.p1]);
10251070 }
10261071 this.post(["epaste", ""+this.p0, ""+this.p1]);
10271072 }
1073+ if(this.buttons == 1+8){
1074+ wassel = false;
1075+ this.post(["ecopy", ""+this.p0, ""+this.p1]);
1076+ }
10281077 }catch(ex){
10291078 console.log("tm1: down: " + ex);
10301079 }
@@ -1040,6 +1089,13 @@ function tm1(pos) { · 9 unmodified lines
10401089 this.onmousemove = this.evxy;
10411090 this.post(["focus"]);
10421091 this.selectend();
1092+ if(wassel && this.p0 != this.p1) {
1093+ var x = this.tget(this.p0, this.p1);
1094+ this.post(["click1", x, ""+this.p0, ""+this.p1]);
1095+ }
1096+ if(document.setfocus) {
1097+ document.setfocus(this);
1098+ }
10431099 }
10441100 }catch(ex){
10451101 console.log("tm1: up: " + ex);
@@ -1047,7 +1103,7 @@ function tm1(pos) { · 1 unmodified line
10471103 }
10481104 }
10491105
1050−function tm23(pos, b) {
1106+function tm234(pos, b) {
10511107 this.secondary = b;
10521108 this.onmousemove = function(e){
10531109 try{
@@ -1087,8 +1143,14 @@ function tm23(pos, b) { · 33 unmodified lines
10871143 if(this.buttons == 0){
10881144 var sp0 = this.p0;
10891145 var sp1 = this.p1;
1146+ var xln = this.lines[this.lines.length-1];
1147+ var tsize = 0;
1148+ if(xln && xln.txt.length == 0){
1149+ tsize = xln.off;
1150+ }
10901151 this.secondary = 0;
10911152 this.tsetsel(this.oldp0, this.oldp1);
1153+ console.log("sp0 " + sp0 + " " + sp1 + " " + tsize);
10921154 if(!this.secondaryabort)
10931155 if(sp0 != sp1){
10941156 var txt = this.tget(sp0, sp1);
@@ -1098,8 +1160,15 @@ function tm23(pos, b) { · 3 unmodified lines
10981160 var txt = this.tget(this.p0, this.p1);
10991161 this.post(["click"+b, txt,
11001162 ""+this.p0, ""+this.p1]);
1101− }else{
1102− var x = this.tgetword(sp0);
1163+ }else if(b != 1 && sp0 == sp1 && tsize &&
1164+ sp0 == tsize && sp0>0) {
1165+ // a click at a final empty line selects the previous
1166+ // line (which is the last one shown).
1167+ var x = this.tgetword(sp0-1, b != 8 || this.dblclick>1);
1168+ this.post(["click"+b, x[0],
1169+ ""+x[1], ""+x[2]]);
1170+ }else {
1171+ var x = this.tgetword(sp0, b != 8 || this.dblclick>1);
11031172 this.post(["click"+b, x[0],
11041173 ""+x[1], ""+x[2]]);
11051174 }
@@ -1161,7 +1230,7 @@ function tmdown(e) { · 55 unmodified lines
11611230 if(0)console.log("tmdown ", this.divid, e);
11621231 this.selectstart();
11631232 e.preventDefault();
1164− this.secondary = 0; /* paranoia: see tm23 */
1233+ this.secondary = 0; /* paranoia: see tm234 */
11651234 this.secondaryabort = false;
11661235 try {
11671236 this.tmpress(e);
@@ -1176,12 +1245,13 @@ function tmdown(e) { · 8 unmodified lines
11761245 break;
11771246 case 2:
11781247 case 4:
1248+ case 8:
11791249 var tpos = this.ptr2tpos(this.lastx, this.lasty);
11801250 var pos = this.tpos2pos(tpos[0], tpos[1]);
11811251 this.oldp0 = this.p0;
11821252 this.oldp1 = this.p1;
11831253 this.tsetsel(pos, pos);
1184− this.tm23(pos, b);
1254+ this.tm234(pos, b);
11851255 break;
11861256 default:
11871257 this.tmwait();
@@ -1192,114 +1262,21 @@ function tmdown(e) { · 4 unmodified lines
11921262 e.returnValue = false;
11931263 }
11941264
1195−function tevkey(e) {
1196− try {
1197− // console.log("key");
1198− var key = e.keyCode;
1199− if(!e.keyCode)
1200− key = e.which;
1201− var rune = String.fromCharCode(e.keyCode);
1202− if(0)console.log("key: which " + e.which + " key " + e.keyCode +
1203− " '" + rune + "'");
1204− switch(key){
1205− case 9:
1206− rune = "\t";
1207− break;
1208− case 13:
1209− rune = "\n";
1210− break;
1211− }
1212− switch(rune){
1213− case 'c':
1214− case 'C':
1215− if(e.ctrlKey || e.metaKey){
1216− e.preventDefault();
1217− this.post(["ecopy", ""+this.p0, ""+this.p1]);
1218− return false;
1219− }
1220− break;
1221− case 'v':
1222− case 'V':
1223− if(this.noedits) {
1224− break;
1225− }
1226− if(e.ctrlKey || e.metaKey){
1227− e.preventDefault();
1228− if(this.p0 != this.p1){
1229− this.Post(["edel", ""+this.p0, ""+this.p1]);
1230− }
1231− this.post(["epaste", ""+this.p0, ""+this.p1]);
1232− return false;
1233− }
1234− break;
1235− case 'x':
1236− case 'X':
1237− if(this.noedits) {
1238− break;
1239− }
1240− if(e.ctrlKey || e.metaKey){
1241− e.preventDefault();
1242− this.Post(["ecut", ""+this.p0, ""+this.p1]);
1243− return false;
1244− }
1245− break;
1246− }
1247− if(e.metaKey || e.ctrlKey || this.noedits)
1248− return;
1249− if(this.p0 != this.p1){
1250− this.Post(["edel", ""+this.p0, ""+this.p1]);
1251− }
1252− this.Post(["eins", rune, ""+this.p0]);
1253− }catch(ex){
1254− console.log("text: fixtab: " + ex);
1255− }
1256−}
1257−
1258−
1259−function tkeyup(e) {
1260− try{
1261− var key = e.keyCode;
1262− if(!e.keyCode)
1263− key = e.which;
1264− var rune = String.fromCharCode(e.keyCode);
1265− if(0)
1266− console.log("keyup which " + e.which + " key " + e.keyCode +
1267− " '" + rune + "'" +
1268− " " + e.ctrlKey + " " + e.metaKey);
1269− switch(key){
1270− case 112: /* F1 */
1271− case 113: /* F2 */
1272− case 114: /* F3 */
1273− var mev = {
1274− fakex: this.lastx,
1275− fakey: this.lasty,
1276− which: key-112+1,
1277− };
1278− mev.preventDefault = function(){}
1279− this.onmouseup(mev);
1280− break;
1281− default:
1282− return true;
1283− }
1284− return false;
1285− }catch(ex){
1286− console.log("keydown: " + ex);
1287− }
1288−}
1289−
1290−function tkeydown(e) {
1265+function tkeydown(e, deferred) {
12911266 try{
12921267 var key = e.keyCode;
12931268 if(!e.keyCode)
12941269 key = e.which;
12951270 var rune = String.fromCharCode(e.keyCode);
12961271 e.stopPropagation();
1297− if(0)console.log("keydown which " + e.which + " key " + e.keyCode +
1272+ if(tdebug)console.log("keydown which " + e.which + " key " + e.keyCode +
12981273 " '" + rune + "'" +
12991274 " " + e.ctrlKey + " " + e.metaKey);
13001275
13011276 switch(key){
13021277 case 27: /* escape */
1278+ if(deferred)
1279+ break;
13031280 this.post(["intr", "esc"]);
13041281 this.dump();
13051282 console.log("["+this.p0+","+this.p1+"]='" +
@@ -1309,6 +1286,8 @@ function tkeydown(e) { · 3 unmodified lines
13091286 if(this.noedits) {
13101287 return;
13111288 }
1289+ if(deferred)
1290+ break;
13121291 if(this.p0 != this.p1){
13131292 this.Post(["edel", ""+this.p0, ""+this.p1]);
13141293 }else if(this.p0 > 0){
@@ -1320,12 +1299,16 @@ function tkeydown(e) { · 5 unmodified lines
13201299 if(this.noedits) {
13211300 return;
13221301 }
1302+ if(deferred)
1303+ break;
13231304 if(this.p0 != this.p1){
13241305 this.Post(["edel", ""+this.p0, ""+this.p1]);
13251306 }
13261307 this.Post(["eins", "\t", ""+this.p0]);
13271308 break;
13281309 case 32: /* space */
1310+ if(deferred)
1311+ break;
13291312 this.Post(["eins", " ", ""+this.p0]);
13301313 break;
13311314 case 37: /* left */
@@ -1335,7 +1318,13 @@ function tkeydown(e) { · 3 unmodified lines
13351318 this.post(["eundo"]);
13361319 break;
13371320 case 38: /* up */
1338− if(this.scrollup(3)){
1321+ if(deferred)
1322+ break;
1323+ var n = Math.floor(this.frlines/4);
1324+ if(n < 1) {
1325+ n = 1;
1326+ }
1327+ if(this.scrollup(n)){
13391328 this.untick();
13401329 this.redrawtext();
13411330 }
@@ -1344,21 +1333,34 @@ function tkeydown(e) { · 2 unmodified lines
13441333 if(this.noedits) {
13451334 return;
13461335 }
1336+ if(deferred)
1337+ break;
13471338 this.post(["eredo"]);
13481339 break;
13491340 case 40: /* down */
1341+ if(deferred)
1342+ break;
13501343 this.untick();
1351− if(this.scrolldown(3)){
1344+ var n = Math.floor(this.frlines/4);
1345+ if(n < 1) {
1346+ n = 1;
1347+ }
1348+ if(this.scrolldown(n)){
13521349 this.untick();
13531350 this.redrawtext();
13541351 }
13551352 break;
13561353 case 46: /* delete */
1354+ if(deferred)
1355+ break;
13571356 this.post(["intr", "del"]);
13581357 break;
13591358 case 112: /* F1 */
13601359 case 113: /* F2 */
13611360 case 114: /* F3 */
1361+ case 115: /* F4 */
1362+ if(deferred)
1363+ break;
13621364 var mev = {
13631365 fakex: this.lastx,
13641366 fakey: this.lasty,
@@ -1367,6 +1369,9 @@ function tkeydown(e) { · 2 unmodified lines
13671369 mev.preventDefault = function(){}
13681370 this.onmousedown(mev);
13691371 break;
1372+ case 123: /* F12 */
1373+ tdebug = !tdebug;
1374+ break;
13701375 default:
13711376 return true;
13721377 }
@@ -1376,13 +1381,145 @@ function tkeydown(e) { · 3 unmodified lines
13761381 }
13771382 }
13781383
1384+function tkeyup(e, deferred) {
1385+ try{
1386+ var key = e.keyCode;
1387+ if(!e.keyCode)
1388+ key = e.which;
1389+ var rune = String.fromCharCode(e.keyCode);
1390+ var isdeadkey = e && e.originalEvent && e.originalEvent.keyIdentifier == "Unidentified";
1391+ if(tdebug) {
1392+ var ds = (isdeadkey ? " dead" : "");
1393+ console.log("keyup which " + e.which + " key " + e.keyCode +
1394+ " '" + rune + "'" + ds +
1395+ " " + e.ctrlKey + " " + e.metaKey, e);
1396+ }
1397+ switch(key){
1398+ case 112: /* F1 */
1399+ case 113: /* F2 */
1400+ case 114: /* F3 */
1401+ case 115: /* F4 */
1402+ if(deferred)
1403+ break;
1404+ var mev = {
1405+ fakex: this.lastx,
1406+ fakey: this.lasty,
1407+ which: key-112+1,
1408+ };
1409+ mev.preventDefault = function(){}
1410+ this.onmouseup(mev);
1411+ break;
1412+ case 18: /* Alt */
1413+ this.composing = true;
1414+ return true;
1415+ default:
1416+ return true;
1417+ }
1418+ return false;
1419+ }catch(ex){
1420+ console.log("keydown: " + ex);
1421+ }
1422+}
1423+
1424+function tevkey(e, deferred) {
1425+ try {
1426+ // console.log("key");
1427+ var key = e.keyCode;
1428+ if(!e.keyCode)
1429+ key = e.which;
1430+ var rune = String.fromCharCode(e.keyCode);
1431+ if(tdebug)console.log("key: which " + e.which + " key " + e.keyCode +
1432+ " '" + rune + "'");
1433+ switch(key){
1434+ case 9:
1435+ rune = "\t";
1436+ break;
1437+ case 13:
1438+ rune = "\n";
1439+ break;
1440+ }
1441+ switch(rune){
1442+ case 'c':
1443+ case 'C':
1444+ if(deferred)
1445+ break;
1446+ if(e.ctrlKey || e.metaKey){
1447+ e.preventDefault();
1448+ this.post(["ecopy", ""+this.p0, ""+this.p1]);
1449+ return false;
1450+ }
1451+ break;
1452+ case 'v':
1453+ case 'V':
1454+ if(deferred)
1455+ break;
1456+ if(this.noedits) {
1457+ break;
1458+ }
1459+ if(e.ctrlKey || e.metaKey){
1460+ e.preventDefault();
1461+ if(this.p0 != this.p1){
1462+ this.Post(["edel", ""+this.p0, ""+this.p1]);
1463+ }
1464+ this.post(["epaste", ""+this.p0, ""+this.p1]);
1465+ return false;
1466+ }
1467+ break;
1468+ case 'x':
1469+ case 'X':
1470+ if(deferred)
1471+ break;
1472+ if(this.noedits) {
1473+ break;
1474+ }
1475+ if(e.ctrlKey || e.metaKey){
1476+ e.preventDefault();
1477+ this.Post(["ecut", ""+this.p0, ""+this.p1]);
1478+ return false;
1479+ }
1480+ break;
1481+ }
1482+ if(e.metaKey || e.ctrlKey || this.noedits)
1483+ return;
1484+ if(deferred)
1485+ return;
1486+ if(this.p0 != this.p1){
1487+ this.Post(["edel", ""+this.p0, ""+this.p1]);
1488+ }
1489+ if(this.composing) {
1490+ if(!this.latin) {
1491+ this.latin = "" + rune;
1492+ } else {
1493+ this.latin += rune;
1494+ }
1495+ if(!kmap.islatin(this.latin)) {
1496+ this.composing = false;
1497+ rune = this.latin;
1498+ this.latin = "";
1499+ } else {
1500+ var r = kmap.latin(this.latin);
1501+ if (r) {
1502+ this.composing = false;
1503+ rune = r;
1504+ this.latin = "";
1505+ } else {
1506+ return;
1507+ }
1508+ }
1509+ }
1510+ this.Post(["eins", rune, ""+this.p0]);
1511+ }catch(ex){
1512+ console.log("text: fixtab: " + ex);
1513+ }
1514+}
1515+
13791516 function tapply(ev, fromserver) {
13801517 if(!ev || !ev.Args || !ev.Args[0]){
13811518 console.log("apply: nil ev");
13821519 return;
13831520 }
13841521 var arg = ev.Args
1385− if(0)console.log(this.divid, "apply", ev.Args, "v", ev.Vers, this.vers);
1522+ if(tdebug)console.log(this.divid, "apply", ev.Args, "v", ev.Vers, this.vers);
13861523 switch(arg[0]){
13871524 case "held":
13881525 this.locked();
@@ -1567,7 +1704,7 @@ function tapply(ev, fromserver) { · 178 unmodified lines
15671704 if(ev.Vers) {
15681705 this.vers = ev.Vers;
15691706 }
1570− if(!this.userresized) {
1707+ if(!this.userresized && arg[1].indexOf('\n') >= 0) {
15711708 this.autoresize();
15721709 }
15731710 break;
@@ -1610,6 +1747,7 @@ function tapply(ev, fromserver) { · 36 unmodified lines
16101747 this.vers = ev.Vers;
16111748 break;
16121749 case "reload":
1750+ this.reloadln0 = this.ln0;
16131751 this.tclear();
16141752 break;
16151753 case "reloading":
@@ -1626,6 +1764,15 @@ function tapply(ev, fromserver) { · 10 unmodified lines
16261764 break;
16271765 }
16281766 this.vers = parseInt(arg[1]);
1767+ if(this.reloadln0 < this.lines.length) {
1768+ var ln0 = this.reloadln0;
1769+ delete this.reloadln0;
1770+ var xln = this.lines[this.ln0];
1771+ if(xln) {
1772+ this.ln0 = ln0;
1773+ this.froff = xln.off
1774+ }
1775+ }
16291776 this.redrawtext();
16301777 if(!this.userresized) {
16311778 this.autoresize();
@@ -1702,11 +1849,11 @@ function tlocknkeydown(e) { · 70 unmodified lines
17021849 xe.metaKey = e.metaKey;
17031850 xe.preventDefault = function(){};
17041851 this.whenlocked.push(function() {
1705− console.log("holded keydown");
1852+ console.log("held keydown");
17061853 $(self).trigger(xe);
17071854 return false;
17081855 });
1709− return false;
1856+ return tkeydown.call(this, e, true);
17101857 }
17111858
17121859 function tlocknevkey(e) {
@@ -1720,9 +1867,18 @@ function tlocknevkey(e) { · 7 unmodified lines
17201867 console.log("holding...");
17211868 }
17221869 var self = this;
1870+ var xe = jQuery.Event("keypress");
1871+ xe.which = e.which;
1872+ xe.keyCode = e.keyCode;
1873+ xe.ctrlKey = e.ctrlKey;
1874+ xe.metaKey = e.metaKey;
1875+ xe.preventDefault = function(){};
17231876 this.whenlocked.push(function() {
1724− tevkey.call(self, e);
1877+ console.log("held keypress");
1878+ $(self).trigger(xe);
1879+ return false;
17251880 });
1881+ return tevkey.call(this, e, true);
17261882 }
17271883
17281884 function tlocknkeyup(e) {
@@ -1736,9 +1892,18 @@ function tlocknkeyup(e) { · 7 unmodified lines
17361892 console.log("holding...");
17371893 }
17381894 var self = this;
1895+ var xe = jQuery.Event("keyup");
1896+ xe.which = e.which;
1897+ xe.keyCode = e.keyCode;
1898+ xe.ctrlKey = e.ctrlKey;
1899+ xe.metaKey = e.metaKey;
1900+ xe.preventDefault = function(){};
17391901 this.whenlocked.push(function() {
1740− tkeyup.call(self, e);
1902+ console.log("held keyup");
1903+ $(self).trigger(xe);
1904+ return false;
17411905 });
1906+ return tkeyup.call(this, e, true);
17421907 }
17431908
17441909 function tlocknmdown(e) {
@@ -1751,11 +1916,17 @@ function tlocknmdown(e) { · 6 unmodified lines
17511916 console.log("holding...");
17521917 }
17531918 var self = this;
1919+ var xe = jQuery.Event("mousedown");
1920+ xe.which = e.which;
1921+ xe.pageX = e.pageX;
1922+ xe.pageY = e.pageY;
1923+ xe.preventDefault = function(){};
17541924 this.whenlocked.push(function() {
1755− console.log("deferred push");
1756− self.onmousedown(e)
1757− self.onmouseup(e);
1925+ console.log("held mousedown");
1926+ $(self).trigger(xe);
1927+ return false;
17581928 });
1929+ return false;
17591930 }
17601931
17611932 function tlocknmup(e) {
@@ -1768,9 +1939,17 @@ function tlocknmup(e) { · 6 unmodified lines
17681939 console.log("holding...");
17691940 }
17701941 var self = this;
1942+ var xe = jQuery.Event("mouseup");
1943+ xe.which = e.which;
1944+ xe.pageX = e.pageX;
1945+ xe.pageY = e.pageY;
1946+ xe.preventDefault = function(){};
17711947 this.whenlocked.push(function() {
1772− tmup.call(self, e);
1948+ console.log("held mouseup");
1949+ $(self).trigger(xe);
1950+ return false;
17731951 });
1952+ return false;
17741953 }
17751954
17761955 function tlocked() {
@@ -1817,6 +1996,8 @@ function tselectstart() { · 40 unmodified lines
18171996 }
18181997 this.selecting = true;
18191998 selecting = true;
1999+ this.oldp0 = this.p0;
2000+ this.oldp1 = this.p1;
18202001 }
18212002
18222003 function tselectend() {
@@ -1827,7 +2008,11 @@ function tselectend() { · 4 unmodified lines
18272008 return;
18282009 }
18292010 console.log("select end");
1830− this.post(["tick", ""+this.p0, ""+this.p1]);
2011+ if(this.oldp0 != this.p0 || this.oldp1 != this.p1) {
2012+ this.post(["tick", ""+this.p0, ""+this.p1]);
2013+ this.oldp0 = this.p0;
2014+ this.oldp1 = this.p1;
2015+ }
18312016 this.selecting = false;
18322017 selecting = false;
18332018 }
@@ -1913,7 +2098,7 @@ function mktxt(d, t, e, cid, id) { · 79 unmodified lines
19132098 e.divcid = cid;
19142099 e.divid = id;
19152100 e.vers = 0;
1916− e.tscale = 2;
2101+ e.tscale = 4; // tscale must be even; we /2
19172102 e.nlines = 0;
19182103 e.ln0 = 0;
19192104 e.frsize = 0;
@@ -1925,7 +2110,7 @@ function mktxt(d, t, e, cid, id) { · 5 unmodified lines
19252110 e.tabstop = 4;
19262111 var tabtext = Array(e.tabstop+1).join("X")
19272112 e.tabwid = ctx.measureText(tabtext).width;
1928− e.fontht = 28; // TODO: use font height from fixfont
2113+ e.fontht = 14*e.tscale; // TODO: use font height from fixfont
19292114 e.buttons = 0;
19302115 e.nclicks = {1: 0, 2: 0, 4: 0};
19312116 e.userresized = false;
@@ -1974,19 +2159,16 @@ function mktxt(d, t, e, cid, id) { · 42 unmodified lines
19742159 e.whenlocked = [];
19752160
19762161 e.tkeydown = tlocknkeydown;
1977−// e.tkeydown = tkeydown;
19782162 e.tkeypress = tlocknevkey;
1979−// e.tkeypress = tevkey;
19802163 e.tkeyup = tlocknkeyup;
1981−// e.tkeyup = tkeyup;
1982−
19832164 e.onmousedown = tlocknmdown;
1984−// e.onmousedown = tmdown;
19852165 e.onmouseup = tlocknmup;
1986−// e.onmouseup = tmup;
19872166 e.onmouseenter = function(e) {
19882167 if(!selecting) {
2168+ var x = window.scrollX;
2169+ var y = window.scrollY;
19892170 $("#" + this.divid ).focus();
2171+ window.scrollTo(x, y);
19902172 }
19912173 if(this.islocked || this.locking) {
19922174 return;
@@ -1995,15 +2177,32 @@ function mktxt(d, t, e, cid, id) { · 2 unmodified lines
19952177 this.post(["hold"]);
19962178 console.log("holding...");
19972179 };
2180+ e.onmousemove = function(e) {
2181+ if(this.islocked || this.locking) {
2182+ return tevxy.call(this, e);
2183+ }
2184+ this.locking = true;
2185+ this.post(["hold"]);
2186+ console.log("holding...");
2187+ return false;
2188+ };
2189+ e.onmousewheel = function(ev) {
2190+ ev.stopPropagation();
2191+ if(e.islocked || e.locking) {
2192+ return tmwheel.call(e, ev);
2193+ }
2194+ e.locking = true;
2195+ e.post(["hold"]);
2196+ console.log("holding...");
2197+ return false;
2198+ };
19982199
1999− e.onmousemove = tevxy;
2000− e.onmousewheel = tmwheel;
20012200 e.onpaste = function(){return false;}
20022201 e.oncontextmenu = function(){return false;}
20032202 e.onclick = null;
20042203 e.onddblclick = null;
20052204 e.tm1 = tm1;
2006− e.tm23 = tm23;
2205+ e.tm234 = tm234;
20072206 e.tmdown = tmdown;
20082207 e.tmpress = tmpress;
20092208 e.tmrlse = tmrlse;
@@ -2062,7 +2261,8 @@ function mktxt(d, t, e, cid, id) { · 52 unmodified lines
20622261 ev.Src = id;
20632262 if(!this.vers)
20642263 this.vers = 0;
2065− if(args[0] == "eins" || args[0] == "edel" || args[0] == "ecut" || args[0] == "epaste"){
2264+ // cut advances the vers (might del nothing)
2265+ if(args[0] == "eins" || args[0] == "edel"){
20662266 this.vers++;
20672267 }
20682268 ev.Vers = this.vers;
@@ -2074,6 +2274,13 @@ function mktxt(d, t, e, cid, id) { · 5 unmodified lines
20742274 }catch(ex){
20752275 console.log("post: " + ex);
20762276 }
2277+ // if this is a cut, it implies a del and we
2278+ // must advance our vers, the event didn't
2279+ // advance the vers.
2280+ // Same for paste.
2281+ if(args[0] == "ecut" || args[0] == "epaste") {
2282+ ev.Vers++;
2283+ }
20772284 return ev;
20782285 };
20792286
@@ -2084,6 +2291,9 @@ function mktxt(d, t, e, cid, id) { · 4 unmodified lines
20842291 e.ws = new WebSocket(wsurl);
20852292 d.get(0).ws = e.ws;
20862293 d.get(0).post = e.post;
2294+ d.get(0).addsize = function(moreless) {
2295+ e.autoresize(true, moreless);
2296+ };
20872297 e.ws.onopen = function() {
20882298 e.post(["id"]);
20892299 };
@@ -2097,7 +2307,7 @@ function mktxt(d, t, e, cid, id) { · 7 unmodified lines
20972307 console.log("update: no objet id");
20982308 return;
20992309 }
2100− if(0)console.log("update to", o.Id, o.Args);
2310+ if(tdebug)console.log("update to", o.Id, o.Args);
21012311 e.apply(o, true);
21022312 };
21032313 e.ws.onclose = function() {
@@ -2108,6 +2318,7 @@ function mktxt(d, t, e, cid, id) { · 4 unmodified lines
21082318 handles: 's'
21092319 }).on('resize', function() {
21102320 console.log("user resized");
2321+ e.userresized = true;
21112322 e.mayresize(true);
21122323 });
21132324 $(window).resize(function() {
@@ -2127,5 +2338,5 @@ function mktxt(d, t, e, cid, id) { · 13 unmodified lines
21272338 }
21282339 }
21292340
2130−document.mktxt = mktxt
2341+//document.mktxt = mktxt
21312342
net/ink/mkjs+3−2
@@ -1,7 +1,8 @@
11 #!/bin/sh
22 rom -u -n js\
3− js/pg.js js/clive.js js/txt.js js/button.js js/radio.js js/latin.js\
3+ js/pg.js js/ctlr.js js/text.js js/button.js js/radio.js \
4+ js/lines.js js/latin.js js/clive.gif js/zxlogo.gif \
45 js/aes.js js/ansix923.js js/pbkdf2.js js/jquery-ui/jquery-ui.min.css js/jquery-2.2.0.min.js \
56 js/jquery.get-word-by-event.js js/jquery-ui/images/* js/jquery-ui/jquery-ui.min.js\
6− js/jquery-ui/jquery-ui.theme.min.css js/jquery-ui/jquery-ui.structure.min.css js/clive.gif js/zxlogo.gif >/tmp/js.go
7+ js/jquery-ui/jquery-ui.theme.min.css js/jquery-ui/jquery-ui.structure.min.css>/tmp/js.go
78 mv /tmp/js.go js/js.go
net/ink/page.go+7−6
@@ -73,14 +73,15 @@ struct urlEl { · 72 unmodified lines
7373 // HTML headers to be included in pages using this interface.
7474 var headers = `
7575 <link rel="stylesheet" href="/js/jquery-ui/jquery-ui.min.css">
76−<script src="/js/jquery-2.2.0.min.js"></script>
77−<script type="text/javascript" src="/js/clive.js"></script>
78−<script src="/js/latin.js"></script>
79−<script type="text/javascript" src="/js/txt.js"></script>
76+<script type="text/javascript" src="/js/jquery-2.2.0.min.js"></script>
77+<script type="text/javascript" src="/js/ctlr.js"></script>
78+<script type="text/javascript" src="/js/latin.js"></script>
79+<script type="text/javascript" src="/js/lines.js"></script>
80+<script type="text/javascript" src="/js/text.js"></script>
8081 <script type="text/javascript" src="/js/button.js"></script>
8182 <script type="text/javascript" src="/js/radio.js"></script>
82−<script src="/js/jquery-ui/jquery-ui.min.js"></script>
83−<script src="/js/jquery.get-word-by-event.js"></script>
83+<script type="text/javascript" src="/js/jquery-ui/jquery-ui.min.js"></script>
84+<script type="text/javascript" src="/js/jquery.get-word-by-event.js"></script>
8485 `
8586
8687 // Write headers to a page so it can support controls.
net/ink/radio.go+1−1
@@ -58,7 +58,7 @@ func NewRadioSet(value *string, button ...*Button) *RadioSet { · 57 unmodified lines
5858 func (bs *RadioSet) WriteTo(w io.Writer) (tot int64, err error) {
5959 vid := bs.newViewId()
6060 n, err := io.WriteString(w,
61− `<form><div id="`+vid+`" class="`+bs.Id+` hasws">`)
61+ `<form><div id="`+vid+`" class="`+bs.Id+` clivectl">`)
6262 tot += int64(n)
6363 if err != nil {
6464 return tot, err
net/ink/text.go+10−32
@@ -75,7 +75,7 @@ struct Txt { · 74 unmodified lines
7575 *Ctlr
7676 t *txt.Text
7777 tag string // NB: this is not the page element tag.
78− tagged, noedits bool // It was a tag line but we no longer use it.
78+ noedits bool // It was a tag line but we no longer use it.
7979 cundo bool
8080 owner string
8181 held []*Ev
@@ -102,34 +102,22 @@ func (t *Txt) WriteTo(w io.Writer) (tot int64, err error) { · 20 unmodified lines
102102 vid := t.newViewId()
103103
104104 n, err := io.WriteString(w, `
105− <div id="`+vid+`" class="`+t.Id+` ui-widget-content hasws canaddsize", tabindex="1" style="border:2px solid black; margin:0; width:100%;height:300; background-color:#dfdfca">`)
105+ <div id="`+vid+`" class="`+t.Id+` ui-widget-content", `+
106+ `tabindex="1" style="border:2px solid black; `+
107+ `margin:0; width:100%;height:300; background-color:#dfdfca">`)
106108 tot += int64(n)
107109 if err != nil {
108110 return tot, err
109111 }
110− if t.tagged {
111− n, err := io.WriteString(w, `<div id="`+vid+`t" class="ui-widget-header">`+
112− html.EscapeString(t.tag)+`</div>`)
113− tot += int64(n)
114− if err != nil {
115− return tot, err
116− }
117− }
118112 ctag := t.Tag()
119113 ts := ``
120114 if ctag != "" {
121115 ctag = html.EscapeString(ctag)
122− ts = `
123− if(document.settag) {
124− document.settag(x, "` + ctag + `");
125− }
116+ ts = `c.settag("` + ctag + `");
126117 `
127118 }
128119 if t.dirty {
129− ts += `
130− if(document.setdirty) {
131− document.setdirty(x);
132− }
120+ ts += `c.setdirty();
133121 `
134122 }
135123 wsaddr := `wss://localhost:` + servePort
@@ -139,14 +127,10 @@ func (t *Txt) WriteTo(w io.Writer) (tot int64, err error) { · 3 unmodified lines
139127 <script>
140128 $(function(){
141129 var d = $("#`+vid+`");
142− var t = $("#`+vid+`t");
143130 var x = $("#`+vid+`c").get(0);
144131 d.wsaddr = "`+wsaddr+`";
145132 x.tag = "`+t.tag+`";
146− x.lines = [];
147− x.lines.push({txt: "", off: 0});
148− document.mktxt(d, t, x, "`+t.Id+`", "`+vid+`");
149− x.fontstyle="`+t.font+`";
133+ var c = document.mktxt(d, x, "`+t.Id+`", "`+vid+`", "`+t.font+`");
150134 `+ts+`
151135 });
152136 </script>`)
@@ -154,8 +138,8 @@ func (t *Txt) WriteTo(w io.Writer) (tot int64, err error) { · 1 unmodified line
154138 return tot, err
155139 }
156140
157−// Create a new text control with the given tag line and body lines.
158−func newTxt(tagged bool, tag string, lines ...string) *Txt {
141+// Create a new text control with the given body lines.
142+func NewTxt(lines ...string) *Txt {
159143 lns := strings.Join(lines, "\n")
160144 if len(lns) == 0 || lns[len(lns)-1] != '\n' {
161145 lns += "\n"
@@ -163,8 +147,7 @@ func newTxt(tagged bool, tag string, lines ...string) *Txt { · 1 unmodified line
163147 t := &Txt{
164148 Ctlr: newCtlr("text"),
165149 t: txt.NewEditing([]rune(lns)),
166− tag: tag,
167− tagged: tagged,
150+ tag: "",
168151 font: "r",
169152 }
170153 t.t.SetMark("p0", 0)
@@ -173,11 +156,6 @@ func newTxt(tagged bool, tag string, lines ...string) *Txt { · 2 unmodified lines
173156 return t
174157 }
175158
176−// Create a new text control with no tag line and the given body lines.
177−func NewTxt(lines ...string) *Txt {
178− return newTxt(false, "", lines...)
179−}
180−
181159 // Change the font used.
182160 // Known fonts are "r", "b", "i", "t".
183161 // Known combinations are "rb", "tb", and "ri".